WO2020235174A1 - 転送装置、情報処理装置、および、データ転送方法 - Google Patents
転送装置、情報処理装置、および、データ転送方法 Download PDFInfo
- Publication number
- WO2020235174A1 WO2020235174A1 PCT/JP2020/008813 JP2020008813W WO2020235174A1 WO 2020235174 A1 WO2020235174 A1 WO 2020235174A1 JP 2020008813 W JP2020008813 W JP 2020008813W WO 2020235174 A1 WO2020235174 A1 WO 2020235174A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- memory
- transfer
- data
- processing device
- controller
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/32—Handling requests for interconnection or transfer for access to input/output bus using combination of interrupt and burst mode transfer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4221—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being an input/output bus, e.g. ISA bus, EISA bus, PCI bus, SCSI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/28—DMA
Definitions
- the present invention relates to a transfer device, an information processing device, and a data transfer method.
- Patent Document 1 proposes to connect a controller module 20 including a processor 22 and a data transfer controller 30 so as to be communicable by PCIe (Peripheral Component Interconnect Express).
- PCIe Peripheral Component Interconnect Express
- PCIe communication since the transmission line is serialized, high-speed communication between devices can be realized. Therefore, for example, instead of mounting a new function on the main unit that controls an industrial machine, another unit (hereinafter referred to as an expansion unit) is provided with the new function to connect the main unit and the expansion unit. Is conceivable to be realized by PCIe. With this configuration, it is possible to avoid the risk that the control performance of the main unit will be adversely affected by the installation of new functions.
- One aspect of the present invention is to realize a transfer device that enables data transfer by socket communication in an upper layer such as an application while connecting units by PCIe.
- the present invention adopts the following configuration as an example of the present disclosure in order to solve the above-mentioned problems.
- the transfer device is a transfer device that communicates with the first device and the second device by PCIe, from the first memory of the first device to the second memory of the second device.
- a direct memory access controller that controls data transfer, a first transmission descriptor controller that acquires information about a first memory address in which transfer target data in the first memory is stored from the first device, and the first transmission descriptor controller. It includes a first receiving descriptor controller that acquires information about a second memory address for storing the transfer target data in the memory from the second device.
- the information processing device is an information processing device including any of the above-mentioned transfer devices, the second device, and the second memory, and the second device is the transfer target.
- An application execution unit that processes data and an instruction to transfer the transfer target data from the application execution unit via the socket API are received, and a transmission that specifies the memory address of the second memory in which the transfer target data is stored is specified. It has a device driver that generates a descriptor as the information.
- the data transfer method is a data transfer method executed by a transfer device that communicates with a first device that is a data transfer source and a second device that is a data transfer destination by PCIe.
- the receiving descriptor controller of the second device acquires the second information regarding the second memory address to store the transfer target data in the second memory of the second device from the second device, and the direct memory of the transfer device.
- the access controller includes a step of transferring data from the first memory to the second memory.
- the step of acquiring the second information may be executed prior to the step of acquiring the first information.
- FIG. 1 is a diagram schematically illustrating an example of an application scene of the transfer device 230 according to the present embodiment.
- the transfer device 230 includes a first processing device 110, which is a processor of the main unit 100, and a second processing device 210, which is a processor of an expansion unit 200 (information processing device) to which a new function of the main unit 100 is externally attached. It is provided in the expansion unit 200 to realize the data transfer between the two.
- the transfer device 230 complies with the PCIe standard for PCIe communication with each of the first processing device 110 (first device or second device) and the second processing device 210 (second device or first device). They are connected by bus.
- the transfer device 230 is typically composed of hardware such as an FPGA (Field-Programmable gate array).
- the main unit 100 controls industrial equipment as an example, and is typically a PLC (Programmable Logic Controller).
- the first processing device 110 which is the processor of the main unit 100, is, for example, a CPU (Central Processing Unit).
- the new functions carried out by the expansion unit 200 are not particularly limited, but for example, a data statistics function, a router function, a database function, etc. are assumed.
- the second processing device 210 which is the processor of the expansion unit 200, is typically composed of hardware such as an MPU (Micro Processing Unit).
- transferring data from the first processing device 110 of the main unit 100 to the second processing device 210 of the expansion unit 200 is referred to as downlink transfer, and data is transferred from the second processing device 210 to the first processing device 110. Is called upstream transfer.
- the transfer device 230 is configured to include at least a DMAC (Direct Memory Access Controller) 233, a downlink transmission descriptor controller 235, and a downlink reception descriptor controller 234 in order to realize downlink transfer.
- DMAC Direct Memory Access Controller
- the DMAC233 controls data transfer from the main unit memory 120 of the first processing device 110 (first device) to the expansion unit memory 220 of the second processing device 210 (second device).
- the downlink transmission descriptor controller 235 (transmission descriptor controller) is information about a first memory address (for example, downlink transmission data addresses DS1 to DSn) in which transmission data (transfer target data) in the main unit memory 120 is stored, as an example.
- the transmission descriptor is acquired from the first processing device 110.
- the downlink reception descriptor controller 234 receives information regarding a second memory address (for example, downlink reception data addresses DR1 to DRn) for storing received data (transfer target data) in the expansion unit memory 220, as an example.
- the descriptor is acquired from the second processing device 210.
- the transfer device 230 may further include an uplink transmission descriptor controller 237 and an uplink reception descriptor controller 236 in order to realize uplink transfer.
- the uplink transmission descriptor controller 237 (transmission descriptor controller) is information about a third memory address (for example, uplink transmission data addresses US1 to USm) in which transmission data (transfer target data) in the expansion unit memory 220 is stored, as an example.
- the transmission descriptor is acquired from the second processing device 210.
- the uplink reception descriptor controller 236 receives information regarding the fourth memory address (for example, uplink reception data addresses UR1 to URm) in which the received data (transfer target data) in the main unit memory 120 should be stored, as an example.
- the descriptor is acquired from the first processing device 110.
- FIG. 1 is a diagram schematically illustrating an example of the hardware configuration of the main unit 100 and the expansion unit 200 according to the present embodiment.
- the main unit 100 includes a first processing device 110 and a main unit memory 120 (first memory, second memory).
- the main unit 100 may also include an input device, an output device, and a non-volatile storage device such as a ROM (Read Only Memory).
- the first processing device 110 comprehensively controls the main unit 100.
- the first processing device 110 is, for example, a CPU, which controls machines to be controlled such as industrial machines and equipment, and controls the expansion unit 200 to manage processing related to new functions added as tasks. Or something.
- the main unit memory 120 is a volatile storage area (RAM; Random Access Memory).
- the main unit memory 120 is executed by the transmission data generated by the first processing device 110, the received data generated by the second processing device 210 to be processed by the first processing device 110, and the first processing device 110. Stores various programs to be used. Further, the main unit memory 120 may be used as a working memory when executing various programs by the first processing device 110.
- a DRAM Dynamic Random Access Memory
- the expansion unit 200 includes a second processing device 210, an expansion unit memory 220 (second memory, first memory), and a transfer device 230.
- the second processing device 210 comprehensively controls the expansion unit 200.
- the second processing device 210 is, for example, an MPU, and executes processing related to the added new function as a task based on the data generated by the first processing device 110.
- the expansion unit memory 220 is a volatile storage area (RAM).
- the expansion unit memory 220 is executed by the transmission data generated by the second processing device 210, the received data generated by the first processing device 110 to be processed by the second processing device 210, and the second processing device 210. Stores various programs to be used. Further, the expansion unit memory 220 may be used as a working memory when executing various programs by the second processing device 210. As the expansion unit memory 220, a DRAM or the like can be typically used.
- the transfer device 230 communicates with the first processing device 110 and the second processing device 210 by PCIe, and performs downlink transfer between the first processing device 110 and the second processing device 210, and if necessary, the transfer device 230. Controls uplink transfer.
- the transfer device 230 is typically an FPGA.
- FIG. 1 is a diagram schematically illustrating an example of the functional configuration of the first processing device 110, the second processing device 210, and the transfer device 230 according to the present embodiment.
- the first processing device 110 expands the control program of the main unit 100 stored in the non-volatile storage device (not shown) into the main unit memory 120. Then, the first processing device 110 interprets and executes the control program expanded in the main unit memory 120 to control each component. As a result, as shown in FIG. 1, the first processing device 110 according to the present embodiment includes a machine control unit 111, an interrupt control unit 112, a task control unit 113, a device driver 114, and a PCIe interface 115.
- the machine control unit 111 controls the industrial equipment connected to the main unit 100.
- the industrial equipment for example, a manufacturing apparatus arranged in a manufacturing process, a sensing device for sensing the state of the manufacturing apparatus or a work, and the like are assumed.
- FA Vectory Automation
- the machine control unit 111 communicates with each industrial device at a fixed cycle, and acquires data processed in a downstream process from each industrial device.
- the acquired data may be processed by the expansion unit 200.
- the interrupt control unit 112 generates an interrupt in the first processing device 110 by writing a value to a specific address via PCIe.
- the method of writing a value to a specific address to make an interrupt in this way is called MSI (Message Signal Interrupt), and writing a value to a specific address for an interrupt is called issuing MSI.
- the interrupt control unit 112 generates an interrupt in the first processing device 110 by issuing an MSI from the interrupt generation unit 238 via PCIe, and the first processing device indicates that the data transfer is completed. Make 110 recognize.
- the task control unit 113 manages the processing to be executed as a task for the data accumulated in the FA system under the jurisdiction of the main unit 100. Further, the task control unit 113 assigns the task to the peripheral expansion unit 200 which is the task executor. Specifically, the task control unit 113 controls which data is transferred to which expansion unit 200.
- a server-client system may be constructed via FTP (File Transfer Protocol) with the main unit 100 as an FTP server and the expansion unit 200 as an FTP client.
- FTP File Transfer Protocol
- the task control unit 113 establishes a connection with the task execution unit 213 in response to the connection request from the task execution unit 213 of the expansion unit 200, and transfers the data necessary for executing the task to the task execution unit 213.
- the data is transferred or the task execution unit 213 accepts the processed data.
- the device driver 114 By writing the descriptor to the main unit memory 120, the device driver 114 causes the first processing device 110 of the main unit 100 to transfer data to and from the second processing device 210 of the expansion unit 200 via the transfer device 230. Allows you to transfer. For example, the device driver 114 receives a data transfer instruction from the task control unit 113 via the socket API (Application Program Interface). The device driver 114 writes a descriptor required for data transfer to and from the expansion unit 200 to the main unit memory 120.
- the socket API Application Program Interface
- the transmission descriptor defines a part of the operation for the DMAC233 to realize the downlink transfer.
- the task control unit 113 of the first processing device 110 can transmit data to the task execution unit 213 of the second processing device 210.
- the receive descriptor defines a part of the operation for the DMAC233 to realize the uplink transfer.
- the task control unit 113 of the first processing device 110 can receive the data transmitted from the task execution unit 213 of the second processing device 210.
- the descriptor constitutes a list of DMA instructions for the DMAC233 to perform a DMA (direct memory access) operation.
- the list of DMA instructions consists of a chain of descriptors. Each descriptor has a pointer to the next descriptor to process, and the last descriptor has a pointer to the first descriptor in the chain.
- the DMAC233 can realize a series of data transfers by sequentially and therefore operating on each descriptor.
- the transmit descriptor includes, for example, the location (memory address) where the data to be transferred to another memory is stored, the data length, and the transfer completion flag to be set when the transfer is completed successfully. ..
- the receive descriptor includes, for example, a location (memory address) for storing transfer target data transferred from another memory, a transfer completion flag set when the transfer is successfully completed, and the like.
- the PCIe interface 115 is an interface for the first processing device 110 to connect to the transfer device 230 via PCIe via PCIe bus.
- the second processing device 210 expands the control program of the expansion unit 200 stored in the non-volatile storage device (not shown) into the expansion unit memory 220. Then, the second processing device 210 interprets and executes the control program expanded in the expansion unit memory 220 to control each component.
- the second processing device 210 includes an interrupt control unit 212, a task execution unit 213 (application execution unit), a device driver 214, and a PCIe interface 215.
- the interrupt control unit 212 generates an interrupt in the second processing device 210 by writing a value to a specific address via PCIe.
- the interrupt control unit 212 generates an interrupt in the second processing device 210 by issuing an MSI from the interrupt generation unit 238 via PCIe, and the second processing device indicates that the data transfer is completed. Make 210 recognize.
- the task execution unit 213 executes the added new function as a task managed by the task control unit 113.
- the task execution unit 213 is typically realized by an application.
- the task execution unit 213 is configured to perform socket communication with the task control unit 113, receives data generated by the task control unit 113 by socket communication, and processes the data according to a predetermined program. By executing the task. Further, the task execution unit 213 returns the data as the processing result to the task control unit 113 by socket communication.
- the task execution unit 213 when constructing a server-client system via FTP with the main unit 100 as an FTP server and the expansion unit 200 as an FTP client, the task execution unit 213 makes a connection request to the main unit 100 and makes a connection request to the task control unit 113. Establish a connection with and download or upload data via FTP.
- the device driver 214 By writing the descriptor to the expansion unit memory 220, the device driver 214 transfers data from the second processing device 210 of the expansion unit 200 to and from the first processing device 110 of the main unit 100 via the transfer device 230. Allows you to transfer. For example, the device driver 214 receives a data transfer instruction from the task execution unit 213 via the socket API. The device driver 214 writes the descriptor required for data transfer to and from the main unit 100 to the expansion unit memory 220.
- the transmission descriptor defines a part of the operation for the DMAC233 to realize the uplink transfer.
- the task execution unit 213 of the second processing device 210 can transmit data to the task control unit 113 of the first processing device 110.
- the receive descriptor defines a part of the operation for the DMAC233 to realize the downlink transfer.
- the task execution unit 213 of the second processing device 210 can receive the data transmitted from the task control unit 113 of the first processing device 110.
- the PCIe interface 215 is an interface for the second processing device 210 to connect to the transfer device 230 via PCIe via PCIe bus.
- the transfer device 230 transfers data between the main unit 100 and the expansion unit 200 according to the descriptors expanded in the main unit memory 120 or the expansion unit memory 220, with the first processing device 110 and the second processing device 210. Independent and direct control.
- the transfer device 230 includes a first PCIe interface 231 and a second PCIe interface 232, a DMAC233, a downlink receive descriptor controller 234, a downlink transmit descriptor controller 235, an uplink receive descriptor controller 236, an uplink transmit descriptor controller 237, and an interrupt.
- a crowd generation unit 238 is provided.
- the first PCIe interface 231 is an interface for the transfer device 230 to connect to the first processing device 110 via PCIe bus via PCIe.
- the second PCIe interface 232 is an interface for the transfer device 230 to connect to the second processing device 210 via PCIe bus via PCIe.
- the DMAC233 interprets the descriptor expanded in the main unit memory 120 or the expansion unit memory 220, and directly reads and writes data to the main unit memory 120 and the expansion unit memory 220 according to the contents thereof.
- the downlink reception descriptor controller 234 directly acquires the reception descriptor required for the second processing device 210 to receive the transfer target data transmitted from the first processing device 110 in the downlink transfer from the expansion unit memory 220. For example, the downlink receive descriptor controller 234 sequentially fetches the receive descriptor written in the expansion unit memory 220 according to the pointer set in the internal register (not shown), and passes it to the DMAC233.
- the downlink transmission descriptor controller 235 directly acquires the transmission descriptor necessary for the first processing device 110 to transmit the transfer target data to the second processing device 210 in the downlink transfer from the main unit memory 120. For example, the downlink transmission descriptor controller 235 sequentially fetches the transmission descriptor written in the main unit memory 120 according to a pointer set in an internal register (not shown) and passes it to the DMAC233.
- the uplink reception descriptor controller 236 directly acquires the receive descriptor required for the first processing device 110 to receive the transfer target data transmitted from the second processing device 210 in the uplink transfer from the main unit memory 120. For example, the uplink receive descriptor controller 236 sequentially fetches the receive descriptor written in the main unit memory 120 according to a pointer set in an internal register (not shown) and passes it to the DMAC233.
- the uplink transmission descriptor controller 237 directly acquires the transmission descriptor required for the second processing device 210 to transmit the transfer target data to the first processing device 110 in the uplink transfer from the expansion unit memory 220. For example, the uplink transmission descriptor controller 237 sequentially fetches the transmission descriptor written in the expansion unit memory 220 according to a pointer set in an internal register (not shown) and passes it to the DMAC233.
- the interrupt generation unit 238 generates an interrupt (for example, MSI) in the first processing device 110 or the second processing device 210 in the first processing device 110 or the second processing device 210 via PCIe.
- the interrupt generation unit 238 may be configured to include a first interrupt generation unit that generates an interrupt in the first processing device 110 and a second interruption generation unit that generates an interrupt in the second processing device 210.
- FIG. 2 is a flowchart illustrating an example of a downlink transfer processing procedure from the main unit 100 to the expansion unit 200.
- the processing procedure described below is only an example, and each processing may be changed as much as possible. Further, with respect to the processing procedure described below, steps can be omitted, replaced, and added as appropriate according to the embodiment.
- step S101 in the expansion unit 200, the task execution unit 213 of the second processing device 210 instructs the device driver 214 to prepare for receiving the transfer target data transmitted from the main unit 100 via the socket API. do.
- step S102 the device driver 214 expands the reception descriptor necessary for receiving the above-mentioned transfer target data in the expansion unit memory 220.
- step S103 the device driver 214 notifies the downlink reception descriptor controller 234 of information (for example, address information, pointer, etc.) indicating the effective range of the receive descriptor in the expansion unit memory 220.
- information for example, address information, pointer, etc.
- the method of notification is not particularly limited, and for example, notification may be made by writing a valid pointer to a Tail register (not shown) of the downlink receive descriptor controller 234.
- the receive descriptor itself may be supplied directly from the device driver 214 to the downlink receive descriptor controller 234.
- the downlink reception descriptor controller 234 acquires the reception descriptor.
- the DMAC 233 interprets the reception descriptor acquired by the downlink reception descriptor controller 234, and indicates the storage location of the transfer target data transmitted from the main unit 100 in the expansion unit memory 220, that is, the downlink reception data address (second memory address, first). 4 Memory address) is specified.
- the DMAC 233 is based on the downlink reception data address (for example, the reception descriptor (second information) indicating DR1 to DRn) acquired by the downlink reception descriptor controller 234 to store the transfer target data. Identify where to store.
- step S105 in the main unit 100, the task control unit 113 of the first processing device 110 generates transfer target data to be transmitted to the expansion unit 200 and stores it in the main unit memory 120.
- step S106 the task control unit 113 instructs the device driver 114 to transmit the stored transfer target data to the expansion unit 200 via the socket API.
- step S107 the device driver 114 expands the transmission descriptor required for transmitting the transfer target data to the expansion unit 200 to the main unit memory 120.
- step S108 the device driver 114 notifies the downlink transmission descriptor controller 235 of information (for example, address information, pointer, etc.) indicating the effective range of the transmission descriptor in the main unit memory 120.
- information for example, address information, pointer, etc.
- the method of notification is not particularly limited, and for example, notification may be made by writing a valid pointer to a tail register (not shown) of the downlink transmission descriptor controller 235.
- the transmit descriptor itself may be supplied directly from the device driver 114 to the downlink transmit descriptor controller 235.
- step S109 the downlink transmission descriptor controller 235 acquires the transmission descriptor.
- the DMAC 233 interprets the transmission descriptor acquired by the downlink transmission descriptor controller 235, and indicates the storage location of the transfer target data transmitted to the expansion unit 200 in the main unit memory 120, that is, the downlink transmission data address (first memory address, first memory address, first). 3 Memory address) is specified.
- the DMAC 233 is based on the downlink transmission data address (first information) that points to the downlink transmission data address, for example, DS1 to DSn, which is acquired by the downlink transmission descriptor controller 235 and stores the transfer target data to be transmitted. , Identify the location where the data to be transferred is stored.
- Step S109 may be executed before step S104.
- step S110 the DMAC233 writes the transfer target data read from the storage locations (DS1 to DSn) in the main unit memory 120 to the storage locations (DR1 to DRn) in the expansion unit memory 220, and performs data transfer.
- the transfer device 230 proceeds to step S112.
- step S112 the downlink transmission descriptor controller 235 sets a transfer completion flag, which means that the data transfer is completed, at a predetermined location in the effective range of the transmission descriptor on the main unit memory 120.
- step S113 the interrupt generation unit 238 notifies the first processing device 110 that the data transfer is completed. Specifically, the interrupt generation unit 238 issues MSI by writing predetermined data to a predetermined address via PCIe, and generates an interrupt in the first processing device 110.
- step S114 the interrupt control unit 112 of the first processing device 110 generates an interrupt based on the issuance of the MSI, and causes the first processing device 110 to recognize that the data transfer has been completed.
- the first processing device 110 may execute the processing to be performed after the transfer is completed, if necessary.
- step S115 the downlink reception descriptor controller 234 of the transfer device 230 sets the transfer completion flag at a predetermined location in the effective range of the receive descriptor on the expansion unit memory 220.
- step S116 the interrupt generation unit 238 notifies the second processing device 210 that the data transfer is completed. Specifically, the interrupt generation unit 238 issues MSI by writing predetermined data to a predetermined address via PCIe, and generates an interrupt in the second processing device 210.
- step S117 the interrupt control unit 212 of the expansion unit 200 generates an interrupt based on the issuance of the MSI, and causes the second processing device 210 to recognize that the data transfer has been completed.
- the device driver 214 sends the task execution unit 213 a storage location on the expansion unit memory 220 (for example, a storage location for the transfer target data) via the socket API.
- DR1 to DRn are notified.
- the task execution unit 213 reads the transfer target data from the storage locations (DR1 to DRn) of the expansion unit memory 220.
- step S118 the task execution unit 213 executes a process according to the transfer target data read from the expansion unit memory 220.
- FIG. 3 is a flowchart illustrating an example of an upstream transfer processing procedure from the expansion unit 200 to the main unit 100.
- the processing procedure described below is only an example, and each processing may be changed as much as possible. Further, with respect to the processing procedure described below, steps can be omitted, replaced, and added as appropriate according to the embodiment.
- step S201 in the main unit 100, the task control unit 113 of the first processing device 110 instructs the device driver 114 to prepare for receiving the transfer target data transmitted from the expansion unit 200 via the socket API. do.
- step S202 the device driver 114 expands the reception descriptor necessary for receiving the above-mentioned transfer target data in the main unit memory 120.
- step S203 the device driver 114 notifies the uplink reception descriptor controller 236 of information (for example, address information, pointer, etc.) indicating the effective range of the receive descriptor in the main unit memory 120.
- information for example, address information, pointer, etc.
- the method of notification is not particularly limited, and for example, notification may be made by writing a valid pointer to a Tail register (not shown) of the uplink receive descriptor controller 236.
- the receive descriptor itself may be supplied directly from the device driver 114 to the uplink receive descriptor controller 236.
- the uplink receive descriptor controller 236 acquires the receive descriptor.
- the DMAC 233 interprets the receive descriptor acquired by the uplink receive descriptor controller 236, and points to a storage location in the main unit memory 120 of the transfer target data transmitted from the expansion unit 200, which is an uplink receive data address (fourth memory address, first). 2 Memory address) is grasped.
- the DMAC 233 is the transfer target data based on the uplink reception data address (for example, the receive descriptor (second information) indicating UR1 to URm) for storing the transfer target data acquired by the uplink reception descriptor controller 236. Identify where to store.
- step S205 in the expansion unit 200, the task execution unit 213 of the second processing device 210 generates transfer target data to be transmitted to the main unit 100 and stores it in the expansion unit memory 220.
- step S206 the task execution unit 213 instructs the device driver 214 to transmit the stored transfer target data to the main unit 100 via the socket API.
- step S207 the device driver 214 expands the transmission descriptor required for transmitting the transfer target data to the main unit 100 in the expansion unit memory 220.
- step S208 the device driver 214 notifies the uplink transmission descriptor controller 237 of information (for example, address information, pointer, etc.) indicating the effective range of the transmission descriptor in the expansion unit memory 220.
- information for example, address information, pointer, etc.
- the method of notification is not particularly limited, and for example, notification may be made by writing a valid pointer to a Tail register (not shown) of the uplink transmission descriptor controller 237.
- the transmit descriptor itself may be supplied directly from the device driver 214 to the uplink transmit descriptor controller 237.
- step S209 the uplink transmission descriptor controller 237 acquires the transmission descriptor.
- the DMAC 233 interprets the transmission descriptor acquired by the uplink transmission descriptor controller 237, and indicates the storage location of the transfer target data to be transmitted to the main unit 100 in the expansion unit memory 220. 1 Memory address) is grasped. Specifically, the DMAC 233 is based on the uplink transmission data address (first information) that points to the uplink transmission data address, for example, US1 to USm, which is acquired by the uplink transmission descriptor controller 237 and stores the transfer target data to be transmitted. , Identify the location where the data to be transferred is stored. Step S209 may be executed before step S204.
- step S210 the DMAC233 writes the transfer target data read from the storage locations (US1 to USm) in the expansion unit memory 220 to the storage locations (UR1 to URm) in the main unit memory 120, and performs data transfer.
- the transfer device 230 proceeds to step S212.
- step S212 the uplink transmission descriptor controller 237 sets a transfer completion flag, which means that the data transfer is completed, at a predetermined location in the effective range of the transmission descriptor on the expansion unit memory 220.
- step S213 the interrupt generation unit 238 notifies the second processing device 210 that the data transfer has been completed. Specifically, the interrupt generation unit 238 issues MSI by writing predetermined data to a predetermined address via PCIe, and generates an interrupt in the second processing device 210.
- step S214 the interrupt control unit 212 of the second processing device 210 generates an interrupt based on the issuance of the MSI, and causes the second processing device 210 to recognize that the data transfer has been completed.
- the second processing device 210 may execute processing to be performed after the transfer is completed, if necessary.
- step S215 the uplink reception descriptor controller 236 of the transfer device 230 sets the transfer completion flag at a predetermined location in the effective range of the receive descriptor on the main unit memory 120.
- step S216 the interrupt generation unit 238 notifies the first processing device 110 that the data transfer has been completed. Specifically, the interrupt generation unit 238 issues MSI by writing predetermined data to a predetermined address via PCIe, and generates an interrupt in the first processing device 110.
- step S217 the interrupt control unit 112 of the main unit 100 generates an interrupt based on the issuance of the MSI, and causes the first processing device 110 to recognize that the data transfer has been completed.
- the device driver 114 sends the task control unit 113 via the socket API to the storage location of the main unit memory 120 (UR1 to URm) as the storage location of the data to be transferred. ) Is notified.
- the task control unit 113 reads the transfer target data from the storage locations (UR1 to URm) of the main unit memory 120.
- step S218 the task control unit 113 executes processing according to the transfer target data read from the main unit memory 120.
- additional applications use sockets to communicate and the sockets with device drivers (device driver 114 and device driver 214). Convert to descriptor. Then, the DMAC233 of the transfer device 230 transfers the packet corresponding to the descriptor to the transfer destination, and the device driver of the transfer destination expands the packet. More specifically, the transfer device 230 includes, in addition to the DMAC233, a receive descriptor controller that acquires the receive descriptor of the transfer destination and a transmission descriptor controller that acquires the transmit descriptor of the transfer source. As a result, while each unit is connected by PCIe, upper layer applications can perform socket communication with each other.
- the upper layer that is, the additional application (for example, the task control unit 113 and the task execution unit 213) should be developed in advance so that they can communicate with the socket used in Ethernet in view of versatility. Can be done.
- the additional application for example, the task control unit 113 and the task execution unit 213
- the user interface of the application will not be changed in the future.
- the developer of the application can execute the application being developed as an expansion unit 200 in a unit different from the main unit 100, or in an environment virtualized by a hypervisor or the like.
- Application development can proceed with the same coding without being aware of whether it is executed by the main unit 100.
- main unit 100 and the expansion unit 200 are currently connected by PCIe, it is possible to generate mutual interrupts in addition to socket communication. As described above, according to one aspect of the present disclosure, it is particularly preferably used in a product in which it is desired to connect units by PCIe.
- FIG. 4 is a diagram showing another connection example between the main unit 100 and the expansion unit 200. As shown in FIG. 4, a plurality of expansion units 200 for executing a plurality of other applications can be connected to one main unit 100.
- Each of the expansion unit 200, the expansion unit 200a, the expansion unit 200b, ... Has a transfer device 230 having the above-described configuration.
- Each expansion unit 200 can transfer data to and from the main unit 100 via its own transfer device 230.
- the present invention employs the following configuration in order to solve the above-mentioned problems.
- the transfer device is a transfer device that communicates with the first device and the second device by PCIe, from the first memory of the first device to the second memory of the second device.
- a direct memory access controller that controls data transfer, a first transmission descriptor controller that acquires information about a first memory address in which transfer target data in the first memory is stored from the first device, and the first transmission descriptor controller. It includes a first receiving descriptor controller that acquires information about a second memory address for storing the transfer target data in the memory from the second device.
- the transfer device may include an interrupt generation unit that generates an interrupt to the first device or the second device when the transfer of the transfer target data is completed and notifies the transfer completion. ..
- an interrupt generation unit that generates an interrupt to the first device or the second device when the transfer of the transfer target data is completed and notifies the transfer completion. ..
- the first device or the second device can be made to recognize the completion of the data transfer in a timely manner.
- the second transmission descriptor controller for acquiring the information regarding the third memory address in which the transfer target data in the second memory is stored from the second device, and the first memory.
- the direct memory access controller includes a second receiving descriptor controller that acquires information about a fourth memory address to store the transfer target data from the first device, and the direct memory access controller is from the second memory of the second device.
- the data transfer of the first device to the first memory may be controlled. As a result, in addition to the data transfer from the first memory to the second memory, the data transfer from the second memory to the first memory becomes possible by socket communication.
- the information processing device is an information processing device including any of the above-mentioned transfer devices, the second device, and the second memory, and the second device is the transfer target.
- An application execution unit that processes data and an instruction to transfer the transfer target data from the application execution unit via the socket API are received, and a transmission that specifies the memory address of the second memory in which the transfer target data is stored is specified. It has a device driver that generates a descriptor as the information.
- the device driver of the second device stores the transmission descriptor in the second memory
- the direct memory access controller of the transfer device has the transmission descriptor controller of the first. 2
- the location where the transfer target data in the second memory is stored may be specified based on the transmission descriptor acquired from the memory. As a result, the direct memory access controller can correctly read the transfer target data to be transferred from the second memory.
- the direct memory access controller of the transfer device stores the transfer target data in the second memory based on the transmission descriptor acquired by the transmission descriptor controller from the device driver. You may specify the location where it is. As a result, the direct memory access controller can correctly read the transfer target data to be transferred from the second memory.
- the data transfer method is a data transfer method executed by a transfer device that communicates with a first device that is a data transfer source and a second device that is a data transfer destination by PCIe.
- the receiving descriptor controller of the second device acquires the second information regarding the second memory address to store the transfer target data in the second memory of the second device from the second device, and the direct memory of the transfer device.
- the access controller includes a step of transferring data from the first memory to the second memory.
- the step of acquiring the second information may be executed prior to the step of acquiring the first information.
- the control block of the transfer device 230 (particularly, the first PCIe interface 231 and the second PCIe interface 232, the DMAC233, the downlink receive descriptor controller 234, the downlink transmit descriptor controller 235, the uplink receive descriptor controller 236, the uplink transmit descriptor controller 237, and the interruption generation occur.
- Part 238 may be realized by a logic circuit (hardware) formed in an integrated circuit (IC chip) or the like, or may be realized by software.
- the transfer device 230 includes a computer that executes a program instruction, which is software that realizes each function.
- the computer includes, for example, one or more processors and a computer-readable recording medium that stores the program. Then, in the computer, the processor reads the program from the recording medium and executes it, thereby achieving the object of the present invention.
- the processor for example, a CPU (Central Processing Unit) can be used.
- the recording medium in addition to a “non-temporary tangible medium” such as a ROM (Read Only Memory), a tape, a disk, a card, a semiconductor memory, a programmable logic circuit, or the like can be used.
- a RAM RandomAccessMemory
- the program may be supplied to the computer via an arbitrary transmission medium (communication network, broadcast wave, etc.) capable of transmitting the program.
- a transmission medium communication network, broadcast wave, etc.
- One aspect of the present invention can also be realized in the form of a data signal embedded in a carrier wave, in which the program is embodied by electronic transmission.
- DMAC Direct Memory Access Controller
- 234 Downstream Receive Disclipter Controller (Receive Disclipter Controller), 235 ... Downlink Transmit Disclipter Controller (Transmit Disclipter Controller), 236 . Uplink Receive Disclipter Controller (Receive Disclipter Controller), 237 ... Uplink Transmission descriptor controller (transmission descriptor controller), 238 ... Interruption generator, DS1 to DSn downlink transmission data address (first memory address, third memory address), DR1 to DRn downlink reception data address (second memory address, fourth memory address) Memory address), US1 to USm uplink transmission data address (third memory address, first memory address), UR1 to URm uplink reception data address (fourth memory address, second memory address)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Bus Control (AREA)
- Multi Processors (AREA)
Abstract
ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にする。転送装置(230)は、第1処理装置(110または210)および第2処理装置(210または110)とPCIeで通信を行う転送装置(230)であって、第1処理装置の第1メモリ(120または220)から第2処理装置の第2メモリ(220または120)へのデータ転送を制御するDMAC(233)と、第1メモリにおける転送対象データが格納されている第1メモリアドレスに関する情報を、第1処理装置から取得する第1の送信ディスクリプタコントローラ(235または237)と、第2メモリにおける転送対象データを格納すべき第2メモリアドレスに関する情報を、第2処理装置から取得する第1の受信ディスクリプタコントローラ(234または236)とを備える。
Description
本発明は、転送装置、情報処理装置、および、データ転送方法に関する。
特許文献1には、プロセッサ22とデータ転送コントローラ30とを備えるコントローラモジュール20間を、PCIe(Peripheral Component Interconnect Express)で通信可能に接続することが提案されている。
PCIeによる通信では、伝送路がシリアル化されているため、デバイス間の高速な通信を実現することができる。そのため、例えば、産業用機械の制御を行っているメインユニットに、新しい機能を搭載する代わりに、当該新しい機能を別ユニット(以下、拡張ユニット)に持たせて、メインユニットと拡張ユニットとの接続をPCIeで実現することが考えられる。このように構成することで、新しい機能の搭載によってメインユニットの制御性能に悪影響が出るリスクを回避できる。
一方で、上述の新しい機能を実現するアプリケーションが、ユニット間のPCIeによる接続を前提に開発されると、将来メインユニットの処理性能が向上して、メインユニットで従来の機能と新しい機能との両立が可能となった場合に、当該アプリケーションの再開発が必要になってしまうという問題がある。
このため、新しい機能を実現するアプリケーションは、アプリケーションの再開発が必要とならないように、汎用性に鑑みてEthernet(登録商標)で用いられているソケット通信でデータの転送を行うことを前提に開発したいという要求が生まれる。
本発明の一態様は、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にする転送装置を実現することを目的とする。
本発明は、本開示の一例として、上述した課題を解決するために、以下の構成を採用する。
すなわち、本発明の一側面に係る転送装置は、第1デバイスおよび第2デバイスとPCIeで通信を行う転送装置であって、前記第1デバイスの第1メモリから前記第2デバイスの第2メモリへのデータ転送を制御するダイレクトメモリアクセスコントローラと、前記第1メモリにおける転送対象データが格納されている第1メモリアドレスに関する情報を、前記第1デバイスから取得する第1の送信ディスクリプタコントローラと、前記第2メモリにおける前記転送対象データを格納すべき第2メモリアドレスに関する情報を、前記第2デバイスから取得する第1の受信ディスクリプタコントローラとを備える。
本発明の一側面に係る情報処理装置は、上述のいずれかの転送装置と、前記第2デバイスと、前記第2メモリとを備える情報処理装置であって、前記第2デバイスは、前記転送対象データを処理するアプリケーション実行部と、前記アプリケーション実行部からソケットAPIを介して前記転送対象データを転送する指示を受け付け、前記転送対象データが格納されている前記第2メモリのメモリアドレスを指定する送信ディスクリプタを、前記情報として生成するデバイスドライバとを有する。
本発明の一側面に係るデータ転送方法は、データの転送元である第1デバイスおよび当該データの転送先である第2デバイスとPCIeで通信を行う転送装置が実行するデータ転送方法であって、前記転送装置の送信ディスクリプタコントローラが、前記第1デバイスの第1メモリにおける、転送対象データが格納されている第1メモリアドレスに関する第1情報を、前記第1デバイスから取得するステップと、前記転送装置の受信ディスクリプタコントローラが、前記第2デバイスの第2メモリにおける、前記転送対象データを格納すべき第2メモリアドレスに関する第2情報を、前記第2デバイスから取得するステップと、前記転送装置のダイレクトメモリアクセスコントローラが、前記第1メモリから前記第2メモリへのデータを転送するステップとを含む。なお、第2情報を取得するステップは、第1情報を取得するステップに先行して実行されてもよい。
本発明の一態様によれば、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。
〔実施形態1〕
§1 適用例
図1は、本実施形態に係る転送装置230の適用場面の一例を模式的に例示する図である。転送装置230は、一例として、メインユニット100のプロセッサである第1処理装置110と、メインユニット100の新しい機能を外付けした拡張ユニット200(情報処理装置)のプロセッサである第2処理装置210との間のデータ転送を実現するものとして、拡張ユニット200に設けられる。
§1 適用例
図1は、本実施形態に係る転送装置230の適用場面の一例を模式的に例示する図である。転送装置230は、一例として、メインユニット100のプロセッサである第1処理装置110と、メインユニット100の新しい機能を外付けした拡張ユニット200(情報処理装置)のプロセッサである第2処理装置210との間のデータ転送を実現するものとして、拡張ユニット200に設けられる。
転送装置230は、第1処理装置110(第1デバイスまたは第2デバイス)および第2処理装置210(第2デバイスまたは第1デバイス)のそれぞれとPCIeで通信を行うべく、PCIeの規格に準拠したbusで、それぞれ接続されている。転送装置230は、典型的には、FPGA(Field-Programmable gate array)等のハードウェアで構成される。
メインユニット100は、一例として、産業用機器の制御を行うものであり、典型的には、PLC(Programmable Logic Controller)である。メインユニット100のプロセッサである第1処理装置110は、例えば、CPU(Central Processing Unit)である。
拡張ユニット200が担う新しい機能は、特に限定されないが、例えば、データの統計機能、ルータ機能またはデータベース機能などが想定されている。拡張ユニット200のプロセッサである第2処理装置210は、典型的には、MPU(Micro Processing Unit)等のハードウェアで構成される。
以下では、便宜上、メインユニット100の第1処理装置110から拡張ユニット200の第2処理装置210へデータを転送することを、下り転送と称し、第2処理装置210から第1処理装置110へデータを転送することを上り転送と称する。
転送装置230は、下り転送を実現するために、少なくとも、DMAC(Direct Memory Access Controller)233と、下り送信ディスクリプタコントローラ235と、下り受信ディスクリプタコントローラ234とを備える構成である。
DMAC233(ダイレクトメモリアクセスコントローラ)は、第1処理装置110(第1デバイス)のメインユニットメモリ120から第2処理装置210(第2デバイス)の拡張ユニットメモリ220へのデータ転送を制御する。
下り送信ディスクリプタコントローラ235(送信ディスクリプタコントローラ)は、メインユニットメモリ120における送信データ(転送対象データ)が格納されている第1メモリアドレス(例えば、下り送信データアドレスDS1~DSn)に関する情報、一例として、送信ディスクリプタを、第1処理装置110から取得する。
下り受信ディスクリプタコントローラ234(受信ディスクリプタコントローラ)は、拡張ユニットメモリ220における受信データ(転送対象データ)を格納すべき第2メモリアドレス(例えば、下り受信データアドレスDR1~DRn)に関する情報、一例として、受信ディスクリプタを、第2処理装置210から取得する。
転送装置230は、上り転送を実現するために、さらに、上り送信ディスクリプタコントローラ237と、上り受信ディスクリプタコントローラ236とを備えてもよい。
上り送信ディスクリプタコントローラ237(送信ディスクリプタコントローラ)は、拡張ユニットメモリ220における送信データ(転送対象データ)が格納されている第3メモリアドレス(例えば、上り送信データアドレスUS1~USm)に関する情報、一例として、送信ディスクリプタを、第2処理装置210から取得する。
上り受信ディスクリプタコントローラ236(受信ディスクリプタコントローラ)は、メインユニットメモリ120における受信データ(転送対象データ)を格納すべき第4メモリアドレス(例えば、上り受信データアドレスUR1~URm)に関する情報、一例として、受信ディスクリプタを、第1処理装置110から取得する。
これにより、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を実現することができる。具体的には、新しい機能に係るアプリケーションを、PCIeによる接続を前提に開発せずに、最初からソケット通信でのデータ転送を前提としてアプリケーションを開発しておくことができる。これにより、将来、メインユニット100において、従来の産業用機器の制御と新しい機能の実行との両立が可能となり、当該アプリケーションにおいてソケット通信を利用する必要が出てきた場合に、当該アプリケーションを再開発する必要がなくなるという顕著な効果を奏する。
§2 構成例
[ハードウェア構成]
図1は、本実施形態に係るメインユニット100および拡張ユニット200のハードウェア構成の一例を模式的に例示する図である。
[ハードウェア構成]
図1は、本実施形態に係るメインユニット100および拡張ユニット200のハードウェア構成の一例を模式的に例示する図である。
<メインユニット100>
図1の例では、メインユニット100は、第1処理装置110、および、メインユニットメモリ120(第1メモリ、第2メモリ)を備える。メインユニット100は、他にも、入力装置、出力装置、および、ROM(Read Only Memory)等の不揮発性の記憶装置などを備えていてもよい。
図1の例では、メインユニット100は、第1処理装置110、および、メインユニットメモリ120(第1メモリ、第2メモリ)を備える。メインユニット100は、他にも、入力装置、出力装置、および、ROM(Read Only Memory)等の不揮発性の記憶装置などを備えていてもよい。
第1処理装置110は、メインユニット100を統括的に制御するものである。第1処理装置110は、例えば、CPUであり、産業用の機械および設備などの制御対象のマシンを制御したり、拡張ユニット200を制御して追加された新しい機能に係る処理をタスクとして管理したりする。
メインユニットメモリ120は、揮発性の記憶領域(RAM;Random Access Memory)である。メインユニットメモリ120は、第1処理装置110によって生成された送信データ、第1処理装置110が処理すべき、第2処理装置210によって生成された受信データ、および、第1処理装置110で実行されるべき各種プログラムを格納する。また、メインユニットメモリ120は、第1処理装置110による各種プログラムの実行時の作業用メモリとして使用されてもよい。メインユニットメモリ120としては、典型的には、DRAM(Dynamic Random Access Memory)等を用いることができる。
<拡張ユニット200>
図1の例では、拡張ユニット200は、第2処理装置210、拡張ユニットメモリ220(第2メモリ、第1メモリ)、および、転送装置230を備える。
図1の例では、拡張ユニット200は、第2処理装置210、拡張ユニットメモリ220(第2メモリ、第1メモリ)、および、転送装置230を備える。
第2処理装置210は、拡張ユニット200を統括的に制御するものである。第2処理装置210は、例えば、MPUであり、第1処理装置110が生成したデータに基づいて、追加された新しい機能に係る処理をタスクとして実行する。
拡張ユニットメモリ220は、揮発性の記憶領域(RAM)である。拡張ユニットメモリ220は、第2処理装置210によって生成された送信データ、第2処理装置210が処理すべき、第1処理装置110によって生成された受信データ、および、第2処理装置210で実行されるべき各種プログラムを格納する。また、拡張ユニットメモリ220は、第2処理装置210による各種プログラムの実行時の作業用メモリとして使用されてもよい。拡張ユニットメモリ220としては、典型的には、DRAM等を用いることができる。
転送装置230は、第1処理装置110および第2処理装置210とPCIeで通信を行うものであり、第1処理装置110と第2処理装置210との間の下り転送、および、必要に応じて上り転送を制御する。上述のとおり、転送装置230は、典型的には、FPGAである。
[機能構成]
図1は、本実施形態に係る第1処理装置110、第2処理装置210および転送装置230の機能構成の一例を模式的に例示する図である。
図1は、本実施形態に係る第1処理装置110、第2処理装置210および転送装置230の機能構成の一例を模式的に例示する図である。
<第1処理装置110>
第1処理装置110は、不図示の不揮発性記憶装置に記憶されたメインユニット100の制御プログラムをメインユニットメモリ120に展開する。そして、第1処理装置110は、メインユニットメモリ120に展開された制御プログラムを解釈および実行して、各構成要素を制御する。これによって、図1に示される通り、本実施形態に係る第1処理装置110は、マシン制御部111、割込制御部112、タスク制御部113、デバイスドライバ114、および、PCIeインタフェース115を備える。
第1処理装置110は、不図示の不揮発性記憶装置に記憶されたメインユニット100の制御プログラムをメインユニットメモリ120に展開する。そして、第1処理装置110は、メインユニットメモリ120に展開された制御プログラムを解釈および実行して、各構成要素を制御する。これによって、図1に示される通り、本実施形態に係る第1処理装置110は、マシン制御部111、割込制御部112、タスク制御部113、デバイスドライバ114、および、PCIeインタフェース115を備える。
マシン制御部111は、メインユニット100に接続される産業用機器を制御するものである。産業用機器は、例えば、製造工程に配置されている製造装置、製造装置またはワークの状態をセンシングするセンシングデバイスなどが想定されている。これらの産業用機器をマシン制御部111が制御することにより、FA(Factory Automation)が実現される。
また、マシン制御部111は、各産業用機器と定周期で通信し、各産業用機器から、下流の工程で処理されるデータを取得する。例えば、取得されたデータは、拡張ユニット200によって処理されてもよい。
割込制御部112は、PCIe経由で、特定のアドレスに対して値が書き込まれることにより、第1処理装置110に割り込みを発生させる。このように特定のアドレスに対して値を書き込むことで割り込みとする手法をMSI(Message Signal Interrupt)と呼び、割り込みのために特定のアドレスに対して値を書き込むことを、MSIを発行すると呼ぶ。一例として、割込制御部112は、PCIe経由で割込発生部238よりMSIが発行されることにより、第1処理装置110に割り込みを発生させ、データの転送が完了したことを第1処理装置110に認識させる。
タスク制御部113は、メインユニット100が管轄するFAシステムにおいて蓄積されたデータに対し、実施すべき処理をタスクとして管理する。また、タスク制御部113は、当該タスクを、タスク実行者である周辺の拡張ユニット200に割り当てる。具体的には、タスク制御部113は、どのデータを、どの拡張ユニット200に転送するのかを制御する。
例えば、メインユニット100をFTPサーバ、拡張ユニット200をFTPクライアントとしてFTP(File Transfer Protocol)を介したサーバクライアントシステムを構築してもよい。この場合、タスク制御部113は、拡張ユニット200のタスク実行部213からの接続要求に応答して、タスク実行部213との接続を確立し、タスクの実行に必要なデータをタスク実行部213に転送したり、タスク実行部213が処理済みのデータを受け付けたりする。
デバイスドライバ114は、ディスクリプタをメインユニットメモリ120に書き込むことにより、メインユニット100の第1処理装置110が、転送装置230を介して、拡張ユニット200の第2処理装置210との間で、データを転送することを可能にする。例えば、デバイスドライバ114は、ソケットAPI(Application Program Interface)を介して、タスク制御部113からデータ転送の指示を受け付ける。デバイスドライバ114は、拡張ユニット200との間でデータ転送を行うために必要なディスクリプタをメインユニットメモリ120に書き込む。
メインユニットメモリ120に書き込まれるディスクリプタのうち、送信ディスクリプタは、DMAC233が下り転送を実現するための動作の一部を規定する。これにより、第1処理装置110のタスク制御部113が、第2処理装置210のタスク実行部213へデータを送信することが可能となる。受信ディスクリプタは、DMAC233が上り転送を実現するための動作の一部を規定する。これにより、第1処理装置110のタスク制御部113が、第2処理装置210のタスク実行部213から送信されたデータを受信することが可能となる。
より具体的には、ディスクリプタは、DMAC233がDMA(ダイレクトメモリアクセス)操作を行うためのDMA命令のリストを構成する。一例として、DMA命令のリストは、ディスクリプタのチェーンで構成されている。各ディスクリプタは、処理すべき次のディスクリプタへのポインタを持っていて、最後のディスクリプタはチェーンの最初のディスクリプタへのポインタを持っている。DMAC233は、各ディスクリプタに順次したがって動作することにより、一連のデータ転送を実現することができる。送信ディスクリプタには、例えば、他のメモリへ転送すべき転送対象データが格納されている場所(メモリのアドレス)、データ長、および、転送が無事に完了したときに立てる転送完了フラグなどが含まれる。受信ディスクリプタには、例えば、他のメモリから転送されてきた転送対象データを格納する場所(メモリのアドレス)、および、転送が無事に完了したときに立てる転送完了フラグなどが含まれる。
PCIeインタフェース115は、第1処理装置110が、PCIebusを介して、転送装置230とPCIeで接続するためのインタフェースである。
<第2処理装置210>
第2処理装置210は、不図示の不揮発性記憶装置に記憶された拡張ユニット200の制御プログラムを拡張ユニットメモリ220に展開する。そして、第2処理装置210は、拡張ユニットメモリ220に展開された制御プログラムを解釈および実行して、各構成要素を制御する。これによって、図1に示される通り、本実施形態に係る第2処理装置210は、割込制御部212、タスク実行部213(アプリケーション実行部)、デバイスドライバ214、および、PCIeインタフェース215を備える。
第2処理装置210は、不図示の不揮発性記憶装置に記憶された拡張ユニット200の制御プログラムを拡張ユニットメモリ220に展開する。そして、第2処理装置210は、拡張ユニットメモリ220に展開された制御プログラムを解釈および実行して、各構成要素を制御する。これによって、図1に示される通り、本実施形態に係る第2処理装置210は、割込制御部212、タスク実行部213(アプリケーション実行部)、デバイスドライバ214、および、PCIeインタフェース215を備える。
割込制御部212は、PCIe経由で、特定のアドレスに対して値が書き込まれることにより、第2処理装置210に割り込みを発生させる。一例として、割込制御部212は、PCIe経由で割込発生部238よりMSIが発行されることにより、第2処理装置210に割り込みを発生させ、データの転送が完了したことを第2処理装置210に認識させる。
タスク実行部213は、追加された新しい機能を、タスク制御部113が管理するタスクとして実行する。タスク実行部213は、典型的には、アプリケーションで実現される。タスク実行部213は、一例として、タスク制御部113とソケット通信するように構成されており、タスク制御部113が生成したデータをソケット通信にて受信し、当該データを所定のプログラムにしたがって処理することによりタスクを実行する。また、タスク実行部213は、処理結果としてのデータを、ソケット通信にて、タスク制御部113に返す。
例えば、メインユニット100をFTPサーバ、拡張ユニット200をFTPクライアントとしてFTPを介したサーバクライアントシステムを構築する場合、タスク実行部213は、メインユニット100に対して接続要求を行って、タスク制御部113との接続を確立し、FTPを介して、データのダウンロードまたはアップロードを行う。
デバイスドライバ214は、ディスクリプタを拡張ユニットメモリ220に書き込むことにより、拡張ユニット200の第2処理装置210が、転送装置230を介して、メインユニット100の第1処理装置110との間で、データを転送することを可能にする。例えば、デバイスドライバ214は、ソケットAPIを介して、タスク実行部213からデータ転送の指示を受け付ける。デバイスドライバ214は、メインユニット100との間でデータ転送を行うために必要なディスクリプタを拡張ユニットメモリ220に書き込む。
拡張ユニットメモリ220に書き込まれるディスクリプタのうち、送信ディスクリプタは、DMAC233が上り転送を実現するための動作の一部を規定する。これにより、第2処理装置210のタスク実行部213が、第1処理装置110のタスク制御部113へデータを送信することが可能となる。受信ディスクリプタは、DMAC233が下り転送を実現するための動作の一部を規定する。これにより、第2処理装置210のタスク実行部213が、第1処理装置110のタスク制御部113から送信されたデータを受信することが可能となる。
PCIeインタフェース215は、第2処理装置210が、PCIebusを介して、転送装置230とPCIeで接続するためのインタフェースである。
<転送装置230>
転送装置230は、メインユニットメモリ120または拡張ユニットメモリ220に展開されたディスクリプタにしたがって、メインユニット100と拡張ユニット200との間のデータ転送を、第1処理装置110および第2処理装置210とは独立して直接制御する。そのための構成要素として、転送装置230は、第1PCIeインタフェース231、第2PCIeインタフェース232、DMAC233、下り受信ディスクリプタコントローラ234、下り送信ディスクリプタコントローラ235、上り受信ディスクリプタコントローラ236、上り送信ディスクリプタコントローラ237、および、割込発生部238を備える。
転送装置230は、メインユニットメモリ120または拡張ユニットメモリ220に展開されたディスクリプタにしたがって、メインユニット100と拡張ユニット200との間のデータ転送を、第1処理装置110および第2処理装置210とは独立して直接制御する。そのための構成要素として、転送装置230は、第1PCIeインタフェース231、第2PCIeインタフェース232、DMAC233、下り受信ディスクリプタコントローラ234、下り送信ディスクリプタコントローラ235、上り受信ディスクリプタコントローラ236、上り送信ディスクリプタコントローラ237、および、割込発生部238を備える。
第1PCIeインタフェース231は、転送装置230が、PCIebusを介して、第1処理装置110とPCIeで接続するためのインタフェースである。
第2PCIeインタフェース232は、転送装置230が、PCIebusを介して、第2処理装置210とPCIeで接続するためのインタフェースである。
DMAC233は、メインユニットメモリ120または拡張ユニットメモリ220に展開されたディスクリプタを解釈し、その内容にしたがって、メインユニットメモリ120および拡張ユニットメモリ220について、データの読み出しおよび書き込みを直接行う。
下り受信ディスクリプタコントローラ234は、下り転送において、第1処理装置110から送信される転送対象データを、第2処理装置210に受信させるために必要な受信ディスクリプタを拡張ユニットメモリ220から直接取得する。例えば、下り受信ディスクリプタコントローラ234は、図示しない内部レジスタに設定されたポインタにしたがって、拡張ユニットメモリ220に書き込まれた受信ディスクリプタを順次フェッチし、DMAC233に渡す。
下り送信ディスクリプタコントローラ235は、下り転送において、第1処理装置110が、第2処理装置210宛てに転送対象データを送信するために必要な送信ディスクリプタをメインユニットメモリ120から直接取得する。例えば、下り送信ディスクリプタコントローラ235は、図示しない内部レジスタに設定されたポインタにしたがって、メインユニットメモリ120に書き込まれた送信ディスクリプタを順次フェッチし、DMAC233に渡す。
上り受信ディスクリプタコントローラ236は、上り転送において、第2処理装置210から送信される転送対象データを、第1処理装置110に受信させるために必要な受信ディスクリプタをメインユニットメモリ120から直接取得する。例えば、上り受信ディスクリプタコントローラ236は、図示しない内部レジスタに設定されたポインタにしたがって、メインユニットメモリ120に書き込まれた受信ディスクリプタを順次フェッチし、DMAC233に渡す。
上り送信ディスクリプタコントローラ237は、上り転送において、第2処理装置210が、第1処理装置110宛てに転送対象データを送信するために必要な送信ディスクリプタを拡張ユニットメモリ220から直接取得する。例えば、上り送信ディスクリプタコントローラ237は、図示しない内部レジスタに設定されたポインタにしたがって、拡張ユニットメモリ220に書き込まれた送信ディスクリプタを順次フェッチし、DMAC233に渡す。
割込発生部238は、第1処理装置110または第2処理装置210に割り込み(例えば、MSI)を、PCIe経由で、第1処理装置110または第2処理装置210に発生させる。割込発生部238は、第1処理装置110に割り込みを発生させる第1割込発生部と、第2処理装置210に割り込みを発生させる第2割込発生部と含んで構成されてもよい。
§3 動作例
次に、図2および図3を用いて、メインユニット100および拡張ユニット200の動作例を説明する。
次に、図2および図3を用いて、メインユニット100および拡張ユニット200の動作例を説明する。
[下り転送時]
図2は、メインユニット100から拡張ユニット200への下り転送の処理手順の一例を例示するフローチャートである。なお、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
図2は、メインユニット100から拡張ユニット200への下り転送の処理手順の一例を例示するフローチャートである。なお、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
ステップS101では、拡張ユニット200において、第2処理装置210のタスク実行部213は、ソケットAPIを介して、デバイスドライバ214に対し、メインユニット100から送信される転送対象データの受信に備えるように指示をする。
ステップS102では、デバイスドライバ214は、上述の転送対象データを受信するために必要な受信ディスクリプタを拡張ユニットメモリ220に展開する。
ステップS103では、デバイスドライバ214は、拡張ユニットメモリ220における受信ディスクリプタの有効範囲を示す情報(例えば、アドレス情報、ポインタなど)を下り受信ディスクリプタコントローラ234に通知する。通知の方法は、特に限定されず、例えば、下り受信ディスクリプタコントローラ234の図示しないTailレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、受信ディスクリプタ自体をデバイスドライバ214から下り受信ディスクリプタコントローラ234へ直接供給してもよい。
ステップS104では、下り受信ディスクリプタコントローラ234は、受信ディスクリプタを取得する。DMAC233は、下り受信ディスクリプタコントローラ234が取得した受信ディスクリプタを解釈し、メインユニット100から送信される転送対象データの、拡張ユニットメモリ220における格納場所を指す、下り受信データアドレス(第2メモリアドレス、第4メモリアドレス)を特定する。具体的には、DMAC233は、下り受信ディスクリプタコントローラ234が取得した、転送対象データを格納すべき下り受信データアドレス、例えば、DR1~DRnを指す受信ディスクリプタ(第2情報)に基づいて、転送対象データを格納するべき場所を特定する。
ステップS105では、メインユニット100において、第1処理装置110のタスク制御部113は、拡張ユニット200に送信する転送対象データを生成し、メインユニットメモリ120に格納する。
ステップS106では、タスク制御部113は、ソケットAPIを介して、デバイスドライバ114に対し、格納した転送対象データを拡張ユニット200に送信するように指示する。
ステップS107では、デバイスドライバ114は、転送対象データを拡張ユニット200に送信するために必要な送信ディスクリプタをメインユニットメモリ120に展開する。
ステップS108では、デバイスドライバ114は、メインユニットメモリ120における送信ディスクリプタの有効範囲を示す情報(例えば、アドレス情報、ポインタなど)を下り送信ディスクリプタコントローラ235に通知する。通知の方法は、特に限定されず、例えば、下り送信ディスクリプタコントローラ235の図示しないTailレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、送信ディスクリプタ自体をデバイスドライバ114から下り送信ディスクリプタコントローラ235へ直接供給してもよい。
ステップS109では、下り送信ディスクリプタコントローラ235は、送信ディスクリプタを取得する。DMAC233は、下り送信ディスクリプタコントローラ235が取得した送信ディスクリプタを解釈し、拡張ユニット200へ送信される転送対象データの、メインユニットメモリ120における格納場所を指す、下り送信データアドレス(第1メモリアドレス、第3メモリアドレス)を特定する。具体的には、DMAC233は、下り送信ディスクリプタコントローラ235が取得した、送信すべき転送対象データが格納されている下り送信データアドレス、例えば、DS1~DSnを指す送信ディスクリプタ(第1情報)に基づいて、送信すべき転送対象データが格納されている場所を特定する。ステップS109は、ステップS104よりも先に実行されてもよい。
ステップS110では、DMAC233は、メインユニットメモリ120における格納場所(DS1~DSn)から読み出した転送対象データを、拡張ユニットメモリ220における格納場所(DR1~DRn)に書き込んで、データ転送を行う。転送対象データのすべてについて読み出しおよび書き込みが完了すると(S111のYES)、転送装置230は、ステップS112に進む。
ステップS112では、下り送信ディスクリプタコントローラ235は、データ転送が完了したことを意味する転送完了フラグを、メインユニットメモリ120上の送信ディスクリプタの有効範囲における所定の場所に立てる。
ステップS113では、割込発生部238は、第1処理装置110に対してデータ転送が完了したことを通知する。具体的には、割込発生部238は、PCIe経由で、所定のアドレスに、所定のデータを書き込むことによって、MSIを発行し、第1処理装置110に割り込みを発生させる。
ステップS114では、第1処理装置110の割込制御部112は、MSIが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第1処理装置110に認識させる。第1処理装置110は、必要に応じて、転送完了後に行うべき処理を実行してもよい。
ステップS115では、転送装置230の下り受信ディスクリプタコントローラ234は、転送完了フラグを、拡張ユニットメモリ220上の受信ディスクリプタの有効範囲における所定の場所に立てる。
ステップS116では、割込発生部238は、第2処理装置210に対してデータ転送が完了したことを通知する。具体的には、割込発生部238は、PCIe経由で、所定のアドレスに、所定のデータを書き込むことによって、MSIを発行し、第2処理装置210に割り込みを発生させる。
ステップS117では、拡張ユニット200の割込制御部212は、MSIが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第2処理装置210に認識させる。第2処理装置210がデータの転送完了を認識すると、デバイスドライバ214は、ソケットAPIを介して、タスク実行部213に、転送対象データの格納場所として、拡張ユニットメモリ220上の格納場所(例えば、DR1~DRn)を通知する。タスク実行部213は、拡張ユニットメモリ220の格納場所(DR1~DRn)から、転送対象データを読み出す。
ステップS118では、タスク実行部213は、拡張ユニットメモリ220から読み出した転送対象データに応じた処理を実行する。
[上り転送時]
図3は、拡張ユニット200からメインユニット100への上り転送の処理手順の一例を例示するフローチャートである。なお、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
図3は、拡張ユニット200からメインユニット100への上り転送の処理手順の一例を例示するフローチャートである。なお、以下で説明する処理手順は一例に過ぎず、各処理は可能な限り変更されてよい。また、以下で説明する処理手順について、実施の形態に応じて、適宜、ステップの省略、置換、及び追加が可能である。
ステップS201では、メインユニット100において、第1処理装置110のタスク制御部113は、ソケットAPIを介して、デバイスドライバ114に対し、拡張ユニット200から送信される転送対象データの受信に備えるように指示をする。
ステップS202では、デバイスドライバ114は、上述の転送対象データを受信するために必要な受信ディスクリプタをメインユニットメモリ120に展開する。
ステップS203では、デバイスドライバ114は、メインユニットメモリ120における受信ディスクリプタの有効範囲を示す情報(例えば、アドレス情報、ポインタなど)を上り受信ディスクリプタコントローラ236に通知する。通知の方法は、特に限定されず、例えば、上り受信ディスクリプタコントローラ236の図示しないTailレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、受信ディスクリプタ自体をデバイスドライバ114から上り受信ディスクリプタコントローラ236へ直接供給してもよい。
ステップS204では、上り受信ディスクリプタコントローラ236は、受信ディスクリプタを取得する。DMAC233は、上り受信ディスクリプタコントローラ236が取得した受信ディスクリプタを解釈し、拡張ユニット200から送信される転送対象データの、メインユニットメモリ120における格納場所を指す、上り受信データアドレス(第4メモリアドレス、第2メモリアドレス)を把握する。具体的には、DMAC233は、上り受信ディスクリプタコントローラ236が取得した、転送対象データを格納すべき上り受信データアドレス、例えば、UR1~URmを指す受信ディスクリプタ(第2情報)に基づいて、転送対象データを格納するべき場所を特定する。
ステップS205では、拡張ユニット200において、第2処理装置210のタスク実行部213は、メインユニット100に送信する転送対象データを生成し、拡張ユニットメモリ220に格納する。
ステップS206では、タスク実行部213は、ソケットAPIを介して、デバイスドライバ214に対し、格納した転送対象データをメインユニット100に送信するように指示する。
ステップS207では、デバイスドライバ214は、転送対象データをメインユニット100に送信するために必要な送信ディスクリプタを拡張ユニットメモリ220に展開する。
ステップS208では、デバイスドライバ214は、拡張ユニットメモリ220における送信ディスクリプタの有効範囲を示す情報(例えば、アドレス情報、ポインタなど)を上り送信ディスクリプタコントローラ237に通知する。通知の方法は、特に限定されず、例えば、上り送信ディスクリプタコントローラ237の図示しないTailレジスタに有効なポインタを書き込むことで通知がなされてもよい。あるいは、送信ディスクリプタ自体をデバイスドライバ214から上り送信ディスクリプタコントローラ237へ直接供給してもよい。
ステップS209では、上り送信ディスクリプタコントローラ237は、送信ディスクリプタを取得する。DMAC233は、上り送信ディスクリプタコントローラ237が取得した送信ディスクリプタを解釈し、メインユニット100へ送信される転送対象データの、拡張ユニットメモリ220における格納場所を指す、上り送信データアドレス(第3メモリアドレス、第1メモリアドレス)を把握する。具体的には、DMAC233は、上り送信ディスクリプタコントローラ237が取得した、送信すべき転送対象データが格納されている上り送信データアドレス、例えば、US1~USmを指す送信ディスクリプタ(第1情報)に基づいて、送信すべき転送対象データが格納されている場所を特定する。ステップS209は、ステップS204よりも先に実行されてもよい。
ステップS210では、DMAC233は、拡張ユニットメモリ220における格納場所(US1~USm)から読み出した転送対象データを、メインユニットメモリ120における格納場所(UR1~URm)に書き込んで、データ転送を行う。転送対象データのすべてについて読み出しおよび書き込みが完了すると(S211のYES)、転送装置230は、ステップS212に進む。
ステップS212では、上り送信ディスクリプタコントローラ237は、データ転送が完了したことを意味する転送完了フラグを、拡張ユニットメモリ220上の送信ディスクリプタの有効範囲における所定の場所に立てる。
ステップS213では、割込発生部238は、第2処理装置210に対してデータ転送が完了したことを通知する。具体的には、割込発生部238は、PCIe経由で、所定のアドレスに、所定のデータを書き込むことによって、MSIを発行し、第2処理装置210に割り込みを発生させる。
ステップS214では、第2処理装置210の割込制御部212は、MSIが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第2処理装置210に認識させる。第2処理装置210は、必要に応じて、転送完了後に行うべき処理を実行してもよい。
ステップS215では、転送装置230の上り受信ディスクリプタコントローラ236は、転送完了フラグを、メインユニットメモリ120上の受信ディスクリプタの有効範囲における所定の場所に立てる。
ステップS216では、割込発生部238は、第1処理装置110に対してデータ転送が完了したことを通知する。具体的には、割込発生部238は、PCIe経由で、所定のアドレスに、所定のデータを書き込むことによって、MSIを発行し、第1処理装置110に割り込みを発生させる。
ステップS217では、メインユニット100の割込制御部112は、MSIが発行されたことに基づいて割り込みを発生させ、データの転送が完了したことを第1処理装置110に認識させる。第1処理装置110がデータの転送完了を認識すると、デバイスドライバ114は、ソケットAPIを介して、タスク制御部113に、転送対象データの格納場所として、メインユニットメモリ120の格納場所(UR1~URm)を通知する。タスク制御部113は、メインユニットメモリ120の格納場所(UR1~URm)から、転送対象データを読み出す。
ステップS218では、タスク制御部113は、メインユニットメモリ120から読み出した転送対象データに応じた処理を実行する。
[作用・効果]
以上のように、本実施形態では、第1処理装置110と第2処理装置210とがPCIeで接続されている場合であっても、アプリケーションなどの上位層において、第1処理装置110と第2処理装置210とがソケット通信にてデータの送受信を行うことができる。
以上のように、本実施形態では、第1処理装置110と第2処理装置210とがPCIeで接続されている場合であっても、アプリケーションなどの上位層において、第1処理装置110と第2処理装置210とがソケット通信にてデータの送受信を行うことができる。
現在、産業用機器の制御を行っているPLCなどのメインユニット100に、新しい機能(ルータ機能またはデータベース機能など)に係るアプリケーションを追加で搭載したいというニーズがある。アプリケーションの追加は、メインユニット100の制御性能に影響が出ることを考慮して、メインユニット100とは別ユニットの拡張ユニット200に搭載することが望ましい。この場合、メインユニット100と拡張ユニット200との高速通信を実現するために、両ユニットは、PCIeで接続されることが望ましい。
しかしながら、将来的に、メインユニット100のCPU性能が向上し、制御性能の影響を考慮する必要がなくなれば、ハイパーバイザーなどの仮想化技術を用いて、1台のメインユニット100上で、追加のアプリケーションを動作させたいというニーズが生まれることが予想される。もしこの時に、追加のアプリケーションがPCIeによる接続を前提に開発されていた場合、改めて1台のメインユニット100で実行されるように、アプリケーションを再開発しなければならないという問題が生じる。
本開示の一態様においては、追加のアプリケーション(例えば、タスク制御部113およびタスク実行部213)では、ソケットで通信を行うこととし、そのソケットを、デバイスドライバ(デバイスドライバ114およびデバイスドライバ214)でディスクリプタに変換する。そして、転送装置230のDMAC233により、ディスクリプタに応じたパケットを転送先に転送し、転送先のデバイスドライバでパケットを展開するようにした。より具体的には、転送装置230は、DMAC233に加えて、転送先の受信ディスクリプタを取得する受信ディスクリプタコントローラと、転送元の送信ディスクリプタを取得する送信ディスクリプタコントローラとを備える。これにより、各ユニットがPCIeで接続されていながら、上位層のアプリケーション同士は、ソケット通信することが可能となる。
これにより、上位層、すなわち、追加のアプリケーション(例えば、タスク制御部113およびタスク実行部213)は、汎用性に鑑みて、Ethernetで用いられているソケットで通信できるように予め開発しておくことができる。結果として、将来、追加の機能を1台のメインユニット100で実施する形態が実現可能に場合に、アプリケーションの再開発を行わずとも、当該形態へ移行することができる。
つまり、将来に亘って、アプリケーションのユーザーインタフェースが変更されない。これにより、例えば、アプリケーションの開発者は、開発しているアプリケーションが、拡張ユニット200としてメインユニット100とは別のユニットで実行されるか、ハイパーバイザーなどで仮想化された環境化で1台のメインユニット100で実行されるかを意識することなく、同じコーディングによってアプリケーションの開発を進めることができる。
また、現状、メインユニット100と拡張ユニット200とはPCIeで接続されているため、ソケット通信以外に、相互割り込みを発生させることが可能である。以上のように、本開示の一態様によれば、ユニット同士をPCIeで接続することが望まれるような製品において、特に、好適に用いられる。
§4 変形例
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
以上、本発明の実施の形態を詳細に説明してきたが、前述までの説明はあらゆる点において本発明の例示に過ぎない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。例えば、以下のような変更が可能である。なお、以下では、上記実施形態と同様の構成要素に関しては同様の符号を用い、上記実施形態と同様の点については、適宜説明を省略した。以下の変形例は適宜組み合わせ可能である。
<4.1>
図4は、メインユニット100と拡張ユニット200との他の接続例を示す図である。図4に示すとおり、1台のメインユニット100に対して、複数の他のアプリケーションをそれぞれ実行する複数の拡張ユニット200を接続することができる。
図4は、メインユニット100と拡張ユニット200との他の接続例を示す図である。図4に示すとおり、1台のメインユニット100に対して、複数の他のアプリケーションをそれぞれ実行する複数の拡張ユニット200を接続することができる。
拡張ユニット200、拡張ユニット200a、拡張ユニット200b・・・のそれぞれは、上述した構成の転送装置230をそれぞれ有する。各拡張ユニット200は、それぞれが備える転送装置230を介して、メインユニット100との間でデータ転送を行うことができる。メインユニット100の第1処理装置110の上位層では、Ethernetによる接続が複数なされているように見え、一対多のPCIeによる接続を意識する必要がない。
<まとめ>
本発明は、本開示の一例として、上述した課題を解決するために、以下の構成を採用する。
本発明は、本開示の一例として、上述した課題を解決するために、以下の構成を採用する。
すなわち、本発明の一側面に係る転送装置は、第1デバイスおよび第2デバイスとPCIeで通信を行う転送装置であって、前記第1デバイスの第1メモリから前記第2デバイスの第2メモリへのデータ転送を制御するダイレクトメモリアクセスコントローラと、前記第1メモリにおける転送対象データが格納されている第1メモリアドレスに関する情報を、前記第1デバイスから取得する第1の送信ディスクリプタコントローラと、前記第2メモリにおける前記転送対象データを格納すべき第2メモリアドレスに関する情報を、前記第2デバイスから取得する第1の受信ディスクリプタコントローラとを備える。
前記構成によれば、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
前記一側面に係る転送装置において、前記転送対象データの転送が完了すると、前記第1デバイスまたは前記第2デバイスに対して割り込みを発生させ、転送完了を通知する割込発生部を備えてもよい。これにより、第1デバイスまたは第2デバイスに対して、適時にデータ転送の完了を認識させることができる。
前記一側面に係る転送装置において、前記第2メモリにおける転送対象データが格納されている第3メモリアドレスに関する情報を、前記第2デバイスから取得する第2の送信ディスクリプタコントローラと、前記第1メモリにおける前記転送対象データを格納すべき第4メモリアドレスに関する情報を、前記第1デバイスから取得する第2の受信ディスクリプタコントローラとを備え、前記ダイレクトメモリアクセスコントローラは、前記第2デバイスの前記第2メモリから、前記第1デバイスの前記第1メモリへのデータ転送を制御してもよい。これにより、第1メモリから第2メモリへのデータ転送に加えて、第2メモリから第1メモリへのデータ転送が、ソケット通信にて可能となる。
本発明の一側面に係る情報処理装置は、上述のいずれかの転送装置と、前記第2デバイスと、前記第2メモリとを備える情報処理装置であって、前記第2デバイスは、前記転送対象データを処理するアプリケーション実行部と、前記アプリケーション実行部からソケットAPIを介して前記転送対象データを転送する指示を受け付け、前記転送対象データが格納されている前記第2メモリのメモリアドレスを指定する送信ディスクリプタを、前記情報として生成するデバイスドライバとを有する。
前記構成によれば、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
前記一側面に係る情報処理装置において、前記第2デバイスの前記デバイスドライバは、前記送信ディスクリプタを前記第2メモリに格納し、前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記第2メモリから取得した前記送信ディスクリプタに基づいて、前記第2メモリにおける前記転送対象データが格納されている場所を特定してもよい。これにより、ダイレクトメモリアクセスコントローラは、転送すべき転送対象データを第2メモリから正しく読み出すことができる。
前記一側面に係る情報処理装置において、前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記デバイスドライバから取得した前記送信ディスクリプタに基づいて、前記第2メモリにおける前記転送対象データが格納されている場所を特定してもよい。これにより、ダイレクトメモリアクセスコントローラは、転送すべき転送対象データを第2メモリから正しく読み出すことができる。
本発明の一側面に係るデータ転送方法は、データの転送元である第1デバイスおよび当該データの転送先である第2デバイスとPCIeで通信を行う転送装置が実行するデータ転送方法であって、前記転送装置の送信ディスクリプタコントローラが、前記第1デバイスの第1メモリにおける、転送対象データが格納されている第1メモリアドレスに関する第1情報を、前記第1デバイスから取得するステップと、前記転送装置の受信ディスクリプタコントローラが、前記第2デバイスの第2メモリにおける、前記転送対象データを格納すべき第2メモリアドレスに関する第2情報を、前記第2デバイスから取得するステップと、前記転送装置のダイレクトメモリアクセスコントローラが、前記第1メモリから前記第2メモリへのデータを転送するステップとを含む。なお、第2情報を取得するステップは、第1情報を取得するステップに先行して実行されてもよい。
前記方法によれば、ユニット間をPCIeで接続しつつ、アプリケーション等の上位層において、ソケット通信でのデータの転送を可能にするという効果を奏する。
〔ソフトウェアによる実現例〕
転送装置230の制御ブロック(特に、第1PCIeインタフェース231、第2PCIeインタフェース232、DMAC233、下り受信ディスクリプタコントローラ234、下り送信ディスクリプタコントローラ235、上り受信ディスクリプタコントローラ236、上り送信ディスクリプタコントローラ237、および、割込発生部238)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、ソフトウェアによって実現してもよい。
転送装置230の制御ブロック(特に、第1PCIeインタフェース231、第2PCIeインタフェース232、DMAC233、下り受信ディスクリプタコントローラ234、下り送信ディスクリプタコントローラ235、上り受信ディスクリプタコントローラ236、上り送信ディスクリプタコントローラ237、および、割込発生部238)は、集積回路(ICチップ)等に形成された論理回路(ハードウェア)によって実現してもよいし、ソフトウェアによって実現してもよい。
後者の場合、転送装置230は、各機能を実現するソフトウェアであるプログラムの命令を実行するコンピュータを備えている。このコンピュータは、例えば1つ以上のプロセッサを備えていると共に、上記プログラムを記憶したコンピュータ読み取り可能な記録媒体を備えている。そして、上記コンピュータにおいて、上記プロセッサが上記プログラムを上記記録媒体から読み取って実行することにより、本発明の目的が達成される。上記プロセッサとしては、例えばCPU(Central Processing Unit)を用いることができる。上記記録媒体としては、「一時的でない有形の媒体」、例えば、ROM(Read Only Memory)等の他、テープ、ディスク、カード、半導体メモリ、プログラマブルな論理回路などを用いることができる。また、上記プログラムを展開するRAM(Random Access Memory)などをさらに備えていてもよい。また、上記プログラムは、当該プログラムを伝送可能な任意の伝送媒体(通信ネットワークや放送波等)を介して上記コンピュータに供給されてもよい。なお、本発明の一態様は、上記プログラムが電子的な伝送によって具現化された、搬送波に埋め込まれたデータ信号の形態でも実現され得る。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
100…メインユニット、110…第1処理装置(第1デバイス、第2デバイス)、111…マシン制御部、112…割込制御部、113…タスク制御部、114…デバイスドライバ、115…PCIeインタフェース、120…メインユニットメモリ(第1メモリ、第2メモリ)、200…拡張ユニット(情報処理装置)、210…第2処理装置(第2デバイス、第1デバイス)、212…割込制御部、213…タスク実行部(アプリケーション実行部)、214…デバイスドライバ、215…PCIeインタフェース、220…拡張ユニットメモリ(第2メモリ、第1メモリ)、230…転送装置、231…第1PCIeインタフェース、232…第2PCIeインタフェース、233…DMAC(ダイレクトメモリアクセスコントローラ)、234…下り受信ディスクリプタコントローラ(受信ディスクリプタコントローラ)、235…下り送信ディスクリプタコントローラ(送信ディスクリプタコントローラ)、236…上り受信ディスクリプタコントローラ(受信ディスクリプタコントローラ)、237…上り送信ディスクリプタコントローラ(送信ディスクリプタコントローラ)、238…割込発生部、DS1~DSn 下り送信データアドレス(第1メモリアドレス、第3メモリアドレス)、DR1~DRn 下り受信データアドレス(第2メモリアドレス、第4メモリアドレス)、US1~USm 上り送信データアドレス(第3メモリアドレス、第1メモリアドレス)、UR1~URm 上り受信データアドレス(第4メモリアドレス、第2メモリアドレス)
Claims (7)
- 第1デバイスおよび第2デバイスとPCIeで通信を行う転送装置であって、
前記第1デバイスの第1メモリから前記第2デバイスの第2メモリへのデータ転送を制御するダイレクトメモリアクセスコントローラと、
前記第1メモリにおける転送対象データが格納されている第1メモリアドレスに関する情報を、前記第1デバイスから取得する第1の送信ディスクリプタコントローラと、
前記第2メモリにおける前記転送対象データを格納すべき第2メモリアドレスに関する情報を、前記第2デバイスから取得する第1の受信ディスクリプタコントローラとを備える、転送装置。 - 前記転送対象データの転送が完了すると、前記第1デバイスまたは前記第2デバイスに対して割り込みを発生させ、転送完了を通知する割込発生部を備える、請求項1に記載の転送装置。
- 前記第2メモリにおける転送対象データが格納されている第3メモリアドレスに関する情報を、前記第2デバイスから取得する第2の送信ディスクリプタコントローラと、
前記第1メモリにおける前記転送対象データを格納すべき第4メモリアドレスに関する情報を、前記第1デバイスから取得する第2の受信ディスクリプタコントローラとを備え、
前記ダイレクトメモリアクセスコントローラは、前記第2デバイスの前記第2メモリから、前記第1デバイスの前記第1メモリへのデータ転送を制御する、請求項1または2に記載の転送装置。 - 請求項1から3のいずれか1項に記載の転送装置と、前記第2デバイスと、前記第2メモリとを備える情報処理装置であって、
前記第2デバイスは、
前記転送対象データを処理するアプリケーション実行部と、
前記アプリケーション実行部からソケットAPIを介して前記転送対象データを転送する指示を受け付け、前記転送対象データが格納されている前記第2メモリのメモリアドレスを指定する送信ディスクリプタを、前記情報として生成するデバイスドライバとを有する、情報処理装置。 - 前記第2デバイスの前記デバイスドライバは、前記送信ディスクリプタを前記第2メモリに格納し、
前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記第2メモリから取得した前記送信ディスクリプタに基づいて、前記第2メモリにおける前記転送対象データが格納されている場所を特定する、請求項4に記載の情報処理装置。 - 前記転送装置の前記ダイレクトメモリアクセスコントローラは、前記送信ディスクリプタコントローラが前記デバイスドライバから取得した前記送信ディスクリプタに基づいて、前記第2メモリにおける前記転送対象データが格納されている場所を特定する、請求項4に記載の情報処理装置。
- データの転送元である第1デバイスおよび当該データの転送先である第2デバイスとPCIeで通信を行う転送装置が実行するデータ転送方法であって、
前記転送装置の送信ディスクリプタコントローラが、前記第1デバイスの第1メモリにおける、転送対象データが格納されている第1メモリアドレスに関する第1情報を、前記第1デバイスから取得するステップと、
前記転送装置の受信ディスクリプタコントローラが、前記第2デバイスの第2メモリにおける、前記転送対象データを格納すべき第2メモリアドレスに関する第2情報を、前記第2デバイスから取得するステップと、
前記転送装置のダイレクトメモリアクセスコントローラが、前記第1メモリから前記第2メモリへのデータを転送するステップとを含む、データ転送方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202080029540.6A CN113711195A (zh) | 2019-05-17 | 2020-03-03 | 传输装置、信息处理装置以及数据传输方法 |
EP20809808.7A EP3971724A4 (en) | 2019-05-17 | 2020-03-03 | Transfer device, information processing device, and data transfer method |
US17/605,227 US11625348B2 (en) | 2019-05-17 | 2020-03-03 | Transfer device, information processing device, and data transfer method |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019-094031 | 2019-05-17 | ||
JP2019094031A JP7326863B2 (ja) | 2019-05-17 | 2019-05-17 | 転送装置、情報処理装置、および、データ転送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2020235174A1 true WO2020235174A1 (ja) | 2020-11-26 |
Family
ID=73453925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2020/008813 WO2020235174A1 (ja) | 2019-05-17 | 2020-03-03 | 転送装置、情報処理装置、および、データ転送方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11625348B2 (ja) |
EP (1) | EP3971724A4 (ja) |
JP (2) | JP7326863B2 (ja) |
CN (1) | CN113711195A (ja) |
WO (1) | WO2020235174A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501670A (zh) * | 2022-01-18 | 2023-07-28 | 联发科技(新加坡)私人有限公司 | 传感装置的中断处理方法及其集成电路 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06274436A (ja) * | 1993-03-22 | 1994-09-30 | N T T Data Tsushin Kk | データ転送方式 |
US20120166699A1 (en) * | 2010-12-22 | 2012-06-28 | Panakaj Kumar | Method and apparatus to provide a high availability solid state drive |
JP2013065079A (ja) * | 2011-09-15 | 2013-04-11 | Ricoh Co Ltd | 中継装置および通信システム |
JP2014106940A (ja) | 2012-11-30 | 2014-06-09 | Fujitsu Ltd | ストレージ装置、およびモジュール間データ転送方法 |
JP2016224560A (ja) * | 2015-05-27 | 2016-12-28 | キヤノン株式会社 | マルチチップシステム、及びその制御方法 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH11513150A (ja) * | 1995-06-15 | 1999-11-09 | インテル・コーポレーション | Pci間ブリッジを統合する入出力プロセッサ用アーキテクチャ |
KR100606163B1 (ko) * | 2004-07-10 | 2006-08-01 | 삼성전자주식회사 | 디렉트 메모리 엑세스 장치, 디렉트 메모리 엑세스 장치를통한 데이터를 송수신하는 시스템 및 방법 |
WO2006114822A1 (ja) * | 2005-04-01 | 2006-11-02 | Fujitsu Limited | Dmaコントローラ、ノード、データ転送制御方法、及びプログラム |
JP4724494B2 (ja) * | 2005-08-26 | 2011-07-13 | キヤノン株式会社 | Pciブリッジ及pciブリッジを搭載するシステム |
US8413172B2 (en) | 2008-08-20 | 2013-04-02 | Sharp Laboratories Of America, Inc. | Method and system for socket API call emulation |
CN102681952B (zh) * | 2012-05-12 | 2015-02-18 | 北京忆恒创源科技有限公司 | 将数据写入存储设备的方法与存储设备 |
JP5953573B2 (ja) * | 2013-05-02 | 2016-07-20 | ▲ホア▼▲ウェイ▼技術有限公司Huawei Technologies Co.,Ltd. | ペリフェラル・コンポーネント・インターコネクト・エクスプレス・エンドポイントデバイスにアクセスするためのコンピュータシステム、方法、および装置 |
JP6176058B2 (ja) * | 2013-10-29 | 2017-08-09 | 株式会社ソシオネクスト | ダイレクトメモリアクセス制御装置、その制御方法、及び情報処理システム |
JPWO2015194534A1 (ja) | 2014-06-17 | 2017-04-20 | 日本電気株式会社 | スイッチ装置とコンピュータシステムと方法並びにプログラム |
CN105988953B (zh) * | 2015-02-12 | 2019-03-12 | 深圳市中兴微电子技术有限公司 | 一种直接内存存取dma控制器及数据传输的方法 |
KR102237991B1 (ko) | 2015-03-20 | 2021-04-08 | 한국전자통신연구원 | Pci 익스프레스 전용 통신 모듈을 이용한 통신 방법과 이를 포함하는 네트워크 장치 |
JP2018116574A (ja) | 2017-01-19 | 2018-07-26 | キヤノン株式会社 | データ転送装置および制御方法 |
-
2019
- 2019-05-17 JP JP2019094031A patent/JP7326863B2/ja active Active
-
2020
- 2020-03-03 US US17/605,227 patent/US11625348B2/en active Active
- 2020-03-03 WO PCT/JP2020/008813 patent/WO2020235174A1/ja active Application Filing
- 2020-03-03 EP EP20809808.7A patent/EP3971724A4/en active Pending
- 2020-03-03 CN CN202080029540.6A patent/CN113711195A/zh active Pending
-
2023
- 2023-07-24 JP JP2023120263A patent/JP7568003B2/ja active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06274436A (ja) * | 1993-03-22 | 1994-09-30 | N T T Data Tsushin Kk | データ転送方式 |
US20120166699A1 (en) * | 2010-12-22 | 2012-06-28 | Panakaj Kumar | Method and apparatus to provide a high availability solid state drive |
JP2013065079A (ja) * | 2011-09-15 | 2013-04-11 | Ricoh Co Ltd | 中継装置および通信システム |
JP2014106940A (ja) | 2012-11-30 | 2014-06-09 | Fujitsu Ltd | ストレージ装置、およびモジュール間データ転送方法 |
JP2016224560A (ja) * | 2015-05-27 | 2016-12-28 | キヤノン株式会社 | マルチチップシステム、及びその制御方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2023126702A (ja) | 2023-09-07 |
US11625348B2 (en) | 2023-04-11 |
JP7568003B2 (ja) | 2024-10-16 |
JP2020190765A (ja) | 2020-11-26 |
JP7326863B2 (ja) | 2023-08-16 |
US20220179813A1 (en) | 2022-06-09 |
CN113711195A (zh) | 2021-11-26 |
EP3971724A1 (en) | 2022-03-23 |
EP3971724A4 (en) | 2023-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7984218B2 (en) | Processor, electronic apparatus, interruption control method and interruption control program | |
KR102145795B1 (ko) | 복수의 워커 노드가 분산된 환경에서 데이터 스트림을 분석하고 처리하는 방법 및 장치, 그리고 태스크를 관리하는 방법 및 장치 | |
TW202042059A (zh) | 用於將應用函數卸載到裝置的系統和方法 | |
US11341087B2 (en) | Single-chip multi-processor communication | |
US7672828B2 (en) | Memory access to virtual target device | |
Deschambault et al. | Efficient implementation of the MQTT protocol for embedded systems | |
JP7568003B2 (ja) | 情報処理装置、および、データ転送方法 | |
WO2017032112A1 (zh) | 一种与无中央处理器单板通讯的方法及通讯设备 | |
CN109839890B (zh) | 控制装置、控制方法以及计算机可读存储介质 | |
JP2007221364A (ja) | コントローラ、制御システム及び制御装置の拡張方法 | |
US20140089533A1 (en) | Allocation of flow control credits for high performance devices | |
JP7547636B2 (ja) | パラメータ構成方法、装置、およびシステム | |
US11360926B2 (en) | Configuration management device, configuration management system, configuration management method, and non-transitory computer readable storage medium | |
US11528348B2 (en) | Communication system, communication device, communication method, and program for reliably receiving periodic data | |
JP2016197446A (ja) | デバイスプロキシ装置及びそれを含む計算機システム | |
JP6709510B2 (ja) | 電子機器 | |
WO2023248551A1 (ja) | 制御システム、中継装置および通信方法 | |
WO2024014047A1 (ja) | 制御システム、制御装置および通信方法 | |
WO2024014048A1 (ja) | 制御システム、制御装置および通信方法 | |
JP2015049600A (ja) | 周辺機器制御装置、周辺機器制御方法および周辺機器制御プログラム | |
US20230394132A1 (en) | Post-tapeout reconfigurable device for determining whether or not a job received by the device is permissible for execution | |
JP2021064166A (ja) | メモリ制御装置、および制御方法 | |
JP2008136075A (ja) | スケジューリング装置およびスケジューリング方法ならびにホスト装置 | |
JP2016151895A (ja) | 通信処理装置、データ転送方法およびそのためのプログラム | |
JPH01236349A (ja) | シリアルインタフェースの初期設定方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 20809808 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2020809808 Country of ref document: EP |