WO2015040750A1 - データ転送装置、情報処理装置及びio制御方法 - Google Patents

データ転送装置、情報処理装置及びio制御方法 Download PDF

Info

Publication number
WO2015040750A1
WO2015040750A1 PCT/JP2013/075575 JP2013075575W WO2015040750A1 WO 2015040750 A1 WO2015040750 A1 WO 2015040750A1 JP 2013075575 W JP2013075575 W JP 2013075575W WO 2015040750 A1 WO2015040750 A1 WO 2015040750A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
request
read
unit
buffer
Prior art date
Application number
PCT/JP2013/075575
Other languages
English (en)
French (fr)
Inventor
達彦 根岸
Original Assignee
富士通株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 富士通株式会社 filed Critical 富士通株式会社
Priority to JP2015537533A priority Critical patent/JP6037029B2/ja
Priority to PCT/JP2013/075575 priority patent/WO2015040750A1/ja
Publication of WO2015040750A1 publication Critical patent/WO2015040750A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • G06F13/1673Details of memory controller using buffers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus

Definitions

  • the present invention relates to a data transfer device, an information processing device, and an IO (Input Output) control method.
  • a CPU Central Processing Unit
  • the IO device controller is a device that controls the IO device.
  • the IO controller is a host bus bridge that connects the IO device controller, the CPU, and the memory, and is a data transfer device that transfers data between the IO device controller, the CPU, and the memory.
  • the CPU issues a PIO request (PIO request) to control the IO controller and the IO device controller, and receives a PIO completion (PIO completion) from the IO controller and IO device controller that processed the PIO request.
  • PIO request a PIO request
  • PIO completion a PIO completion
  • FIG. 9 is a diagram illustrating an example of a conventional IO controller. As shown in FIG. 9, the IO controller 9 receives a PIO request from the CPU 2 via the interconnect 7, processes the PIO request by the own device or the IO device controller 6, and sends the PIO completion to the CPU 2 via the interconnect 7. Send.
  • the IO controller 9 includes an input buffer unit 91, a command processing unit 92, and an output buffer unit 93.
  • the input buffer unit 91 receives the PIO request and stores the command, address, and data included in the PIO request in the input buffer 91a.
  • the command indicates the type of the PIO request, for example, indicates whether the PIO request is a read request or a write request.
  • the address indicates the address of a register that stores data to be read or a storage destination register of data to be written.
  • the data is write data when the PIO request is a write request, and is not present when the PIO request is a read request.
  • the command processing unit 92 processes the command stored in the input buffer unit 91 by the own device or the IO device controller 6, and passes the PIO completion issued by the own device or the IO device controller 6 to the output buffer unit 93.
  • the output buffer unit 93 stores the command and data included in the PIO completion in the output buffer 93a. Then, the output buffer unit 93 transmits the command and data stored in the output buffer 93a to the host as PIO completion.
  • the data is read data when the PIO request is a read request, and is not when the PIO request is a write request.
  • four commands 0 to 3 are stored in the output buffer 93a.
  • the corresponding PIO request is a read request
  • the data 1 and the data 3 are stored in the output buffer 93a in association with the command 1 and the command 3 , respectively.
  • a data transfer apparatus that transfers data between a host and a device includes a sequence controller that controls the transfer and a data buffer that stores data transferred between the host and the device (for example, see Patent Document 1.)
  • the input buffer 91a and the output buffer 93a have a predetermined number of PIO requests issued by the CPU 2. With entries. Therefore, the IO controller 9 has a problem that there is a useless data area because the data area for a predetermined number of PIO requests issued by the CPU 2 is not used.
  • An object of one aspect of the present invention is to provide an IO controller that eliminates a useless data area, that is, a data transfer device.
  • the data transfer device disclosed in this application is, in one aspect, a data transfer device that transfers data between an IO device controller that controls the IO device and an arithmetic processing unit.
  • the data transfer device includes a data buffer that stores write data to be written to the IO device controller or the device itself and read data read from the IO device controller or the device.
  • the data transfer device further includes an input buffer unit that stores a command indicating a write request in the input buffer when the write request is received from the arithmetic processing unit, and stores write data in the data buffer.
  • the data transfer device stores read data read from the IO device controller or its own device in the data buffer based on a read request from the arithmetic processing unit, and a command indicating the read request to the output buffer. It has an output buffer unit for storing.
  • useless data areas can be eliminated from the data transfer apparatus.
  • FIG. 1 is a diagram illustrating the configuration of the information processing apparatus according to the embodiment.
  • FIG. 2 is a diagram illustrating the configuration of the IO controller.
  • FIG. 3 is a diagram illustrating an example of a packet format of the read request.
  • FIG. 4 is a diagram illustrating an example of the packet format of the write request.
  • FIG. 5 is a diagram illustrating an example of command assignment.
  • FIG. 6 is a diagram illustrating an example of a read-complete packet format.
  • FIG. 7 is a diagram illustrating an example of a packet format of write completion.
  • FIG. 8 is a flowchart illustrating a process flow of the IO controller according to the embodiment.
  • FIG. 9 is a diagram illustrating an example of a conventional IO controller.
  • FIG. 1 is a diagram illustrating the configuration of the information processing apparatus according to the embodiment.
  • the information processing apparatus 1 includes a CPU 2, a memory controller 3, a memory 4, an IO controller 5, an IO device controller 6, and an interconnect 7.
  • the CPU 2 is a central processing unit that reads and executes a program stored in the memory 4.
  • the memory controller 3 is a control device that controls writing of data into the memory 4, reading of programs and data from the memory 4.
  • the memory 4 is a RAM (Random Access Memory) that stores programs and data.
  • the IO controller 5 is a host bus bridge that connects the CPU 2 and memory 4 and the IO device controller 6, and is a data transfer device that transfers data between the CPU 2 and memory 4 and the IO device controller 6.
  • the IO controller 5 controls reading of data from the IO device controller 6 or the own device and writing of data to the IO device controller 6 or the own device.
  • the IO controller 5 receives a PIO request from the CPU 2 via the interconnect 7, and upon completion of the processing requested by the PIO request, returns a PIO completion to the CPU 2.
  • the IO device controller 6 is a control device that controls the IO device, and is, for example, a hard disk controller or a LAN (Local Area Network) controller.
  • the interconnect 7 is a device that connects the CPU 2, the memory controller 3, and the IO controller 5 to each other.
  • the CPU 2, the memory controller 3, the IO controller 5, the IO device controller 6 and the interconnect 7 are included in a SoC (System on Chip) and are connected by an internal bus of the chip.
  • SoC System on Chip
  • FIG. 2 is a diagram showing the configuration of the IO controller 5.
  • the IO controller 5 includes an input buffer unit 51, a distribution unit 52, a register unit 53, an arbitration unit 54, an output buffer unit 55, and a data buffer unit 56.
  • the input buffer unit 51 receives the PIO request issued by the CPU 2 via the interconnect 7, and stores the command and address included in the PIO request in the input buffer 51a.
  • FIG. 3 and 4 are diagrams illustrating an example of the packet format of the PIO request.
  • FIG. 3 shows a read request that is a data read request from the IO controller 5 or the IO device controller 6, and
  • FIG. 4 shows a write request that is a data write request to the IO controller 5 or the IO device controller 6.
  • [n: 0] indicates n + 1 bits from bit 0 to bit n.
  • the read request is 64-bit data including a 4-bit command, a 16-bit tag, a 4-bit rsv, and a 40-bit address, and is sent in one cycle.
  • the command indicates whether the packet is a PIO request or PIO completion, and whether the packet is related to reading or writing.
  • FIG. 5 is a diagram illustrating an example of command assignment. As shown in FIG. 5, “0000” indicates that the packet is a read request, “0011” indicates that the packet is a write request, “1001” indicates that the packet is read complete, “1010” indicates that the packet has been written.
  • Bit 0 of command [3: 0] indicates the presence / absence of data
  • bit 1 indicates whether it is a read or write
  • bit 3 indicates whether it is a request or completion.
  • the IO controller 5 determines the presence / absence of data using this bit assignment.
  • the tag is a unique identifier assigned for each PIO request.
  • the tag has a bit width of 16 bits to align the DMA (Direct Memory Access) request and the packet format.
  • the tag does not have a separate allocation space for each read request and write request, but shares the same allocation space for the read request and the write request. That is, there are no different PIO requests with the same tag, including both read requests and write requests.
  • the IO controller 5 uses the tag as the entry number when storing the PIO request received from the interconnect 7 in the input buffer 51a and the entry number when storing it in the output buffer when returning PIO completion.
  • the output buffer will be described later.
  • CPU 2 issues PIO requests until the number of PIO requests that have not received PIO completion reaches a certain number.
  • this fixed number is called the maximum outstanding number of PIOs.
  • the input buffer unit 51 has a maximum outstanding number of entries because a deadlock may be eliminated and a delay may occur due to processing congestion in the interconnect 7, the IO device controller 6, and the internal register unit 53. .
  • the address indicates the location of the register to be read or written in the IO controller or the IO device controller. Whether the register is in the IO controller or the IO device controller is determined by the address. rsv is a bit that is kept for future expansion.
  • the write request is 128-bit data including a 4-bit command, a 16-bit tag, a 4-bit rsv, a 40-bit address, and 64-bit data. Sent in cycles.
  • the 64-bit data is data written to a register specified by an address.
  • the input buffer unit 51 passes the data sent in the second cycle to the data buffer unit 56 together with the tag.
  • the input buffer unit 51 takes out the commands and addresses stored in the input buffer 51a in the order in which they are stored, and passes them to the distribution unit 52 together with the tags.
  • the input buffer unit 51 receives the corresponding data from the data buffer unit 56 and passes it to the distribution unit 52.
  • the distribution unit 52 performs a process of distributing the PIO request to the register unit 53 and the IO device controller 6. That is, the distribution unit 52 determines whether the register targeted for the PIO request is internal or in the IO device controller 6 based on the address received from the input buffer unit 51. The address and tag are passed to the register unit 53. On the other hand, when the register that is the target of the PIO request is in the IO device controller 6, the distribution unit 52 passes the command, address, and tag to the IO device controller 6.
  • the distribution unit 52 passes the data received from the input buffer unit 51 to the register unit 53 or the IO device controller 6 based on the address.
  • the register unit 53 includes a register 53a to be read from and written to by the CPU 2. Based on the command and address received from the input buffer unit 51, the register unit 53 reads data from the register 53a or stores data to the register 53a. Write.
  • the register unit 53 reads data from the register 53a, it passes the read data together with the command and tag to the arbitration unit 54 as PIO completion, and when the data is written to the register 53a, the register unit 53 receives the command and tag. Passed to the arbitration unit 54 as PIO completion.
  • FIG. 6 and FIG. 7 are diagrams showing an example of the packet format of PIO completion.
  • FIG. 6 shows read completion, which is data read completion from the IO controller 5 or IO device controller 6
  • FIG. 7 shows write completion, which is data write completion to the IO controller 5 or IO device controller 6.
  • the read completion is 128-bit data including a 4-bit command, a 16-bit tag, a 44-bit rsv, and 64-bit data, and is sent in two cycles.
  • the 64-bit data is data read from the register designated by the read request address.
  • the write completion is 64-bit data including a 4-bit command, a 16-bit tag, and a 44-bit rsv, and is sent in one cycle.
  • the register unit 53 After the PIO request is processed by the register unit 53 or the IO device controller 6, it is called PIO completion. 2 shows eight registers 53a, the register unit 53 can have any number of registers 53a.
  • the arbitrating unit 54 arbitrates the PIO completion transmitted from the register unit 53 or the IO device controller 6 and passes it to the output buffer unit 55.
  • the output buffer unit 55 stores the command included in the PIO completion received from the arbitration unit 54 in the output buffer 55a, and when the data is included in the PIO completion, passes the data to the data buffer unit 56 together with the tag.
  • the output buffer 55a has a maximum outstanding number of entries, and stores the command in the entry specified by the tag.
  • the output buffer unit 55 when the output buffer unit 55 becomes ready for transmission to the interconnect 7, it takes out the command from the output buffer 55a and returns it to the interconnect 7 together with the tag as PIO completion.
  • the output buffer unit 55 reads the data from the data buffer unit 56 and returns the data to the interconnect 7 together with the command and the tag.
  • the output buffer unit 55 retrieves commands from the output buffer 55a in the order of storage and sends them back to the interconnect 7.
  • the data buffer unit 56 receives data and a tag from the input buffer unit 51 or the output buffer unit 55, and stores the data in the entry specified by the tag in the data buffer 56a.
  • the data buffer unit 56 receives a tag from the input buffer unit 51 or the output buffer unit 55, reads data from an entry specified by the tag in the data buffer 56a, and passes the data to the input buffer unit 51 or the output buffer unit 55.
  • the IO controller 5 stores the write data and the read data in the data buffer 56a. Therefore, the IO controller 5 can halve the area required for storing data as compared with the case where write data is stored in the input buffer 51a and read data is stored in the output buffer 55a.
  • the data buffer 56a can be composed of an arbitrary storage element such as a flip-flop (FF), SRAM (Static RAM), register file or the like.
  • the data buffer 56a has a maximum outstanding number of entries. Although FIG. 2 shows the case where the maximum outstanding number is 4, the maximum outstanding number can be an arbitrary integer.
  • FIG. 8 is a flowchart illustrating the flow of processing by the IO controller 5 according to the embodiment. As shown in FIG. 8, the IO controller 5 receives a PIO request from the interconnect 7 (step S1).
  • the input buffer unit 51 of the IO controller 5 analyzes the command of the PIO request and stores the command and address in the input buffer 51a. In the case of a write request, the data is stored in the data buffer 56a (step S2). .
  • the distribution unit 52 determines whether or not the register indicated by the address is in the IO controller (step S3). As a result, if the register is not in the IO controller, the distribution unit 52 instructs the IO device controller 6 to perform processing, and the arbitrating unit 54 receives the PIO completion from the IO device controller 6 that has completed the processing (step S7). Then, the arbitrating unit 54 proceeds to step S8.
  • the register unit 53 determines whether the command of the PIO request is read or write (step S4). If it is a read, the register unit 53 reads from the register 53a and transmits a PIO completion with data to the arbitrating unit 54 (step S5). On the other hand, when the command of the PIO request is a write, the register unit 53 writes to the register 53a and transmits the no-data PIO completion to the arbitrating unit 54 (step S6).
  • the arbitration unit 54 arbitrates PIO completion (step S8), and the output buffer unit 55 analyzes the PIO completion command and stores the command in the output buffer 55a. The data is stored in 56a (step S9). Then, the output buffer unit 55 returns PIO completion to the interconnect 7 (step S10).
  • the input buffer unit 51 stores commands and addresses in the input buffer 51a, and stores write data in the data buffer 56a.
  • the output buffer unit 55 stores commands in the output buffer 55a, and stores read data in the data buffer 56a. That is, the input buffer unit 51 and the output buffer unit 55 share the data buffer 56a. Therefore, the IO controller 5 can halve the data storage area compared to the conventional case, and can reduce power consumption.
  • the input buffer unit 51, the output buffer unit 55, and the data buffer unit 56 enter the tag included in the PIO request when storing data in the input buffer 51a, the output buffer 55a, and the data buffer 56a, respectively.
  • the IO controller 5 can prevent the buffer from running out by providing the maximum outstanding number of entries in each buffer.
  • the distribution unit 52 distributes the PIO request to the IO device controller 6 and the own device based on the address included in the PIO request. Therefore, the CPU 2 can control the IO controller 5 and the IO device controller 6 in the same manner.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

 入力バッファ部(51)は、コマンド及びアドレスを入力バッファ(51a)に格納し、ライトデータをデータバッファ(56a)に格納する。また、出力バッファ部(55)は、コマンドを出力バッファ(55a)に格納し、リードデータをデータバッファ(56a)に格納する。すなわち、入力バッファ部(51)と出力バッファ部(55)がデータバッファ(56a)を共用する。また、入力バッファ部(51)、出力バッファ部(55)及びデータバッファ部(56)は、それぞれ入力バッファ(51a)、出力バッファ(55a)及びデータバッファ(56a)にデータを格納する場合に、PIOリクエストに含まれるタグをエントリ番号として使用する。

Description

データ転送装置、情報処理装置及びIO制御方法
 本発明は、データ転送装置、情報処理装置及びIO(Input Output)制御方法に関する。
 情報処理装置では、CPU(Central Processing Unit)は、PIO(Programmable Input Output)を用いてIOコントローラ及びIOデバイスコントローラを制御する。ここで、IOデバイスコントローラは、IO装置を制御する装置である。また、IOコントローラは、IOデバイスコントローラとCPU及びメモリーとを接続するホストバスブリッジであり、IOデバイスコントローラとCPU及びメモリーとの間でデータを転送するデータ転送装置である。
 CPUは、IOコントローラ及びIOデバイスコントローラを制御するためにPIOリクエスト(PIO request)を発行し、PIOリクエストを処理したIOコントローラ及びIOデバイスコントローラからPIO完了(PIO completion)を受け取る。
 図9は、従来のIOコントローラの一例を示す図である。図9に示すように、IOコントローラ9は、インターコネクト7を介してCPU2からPIOリクエストを受信し、自装置又はIOデバイスコントローラ6によりPIOリクエストを処理して、PIO完了をインターコネクト7を介してCPU2に送信する。
 IOコントローラ9は、入力バッファ部91と、コマンド処理部92と、出力バッファ部93とを有する。入力バッファ部91は、PIOリクエストを受信し、PIOリクエストに含まれるコマンド、アドレス及びデータを入力バッファ91aに格納する。
 ここで、コマンドは、PIOリクエストの種類を示し、例えば、PIOリクエストがリードリクエストであるかライトリクエストであるかを示す。アドレスは、リードするデータを記憶するレジスタ又はライトするデータの格納先のレジスタのアドレスを示す。データは、PIOリクエストがライトリクエストである場合のライトデータであり、PIOリクエストがリードリクエストである場合にはない。
 図9では、入力バッファ91aに、4つのコマンド0~コマンド3と、4つのアドレス0~アドレス3とが、それぞれ対応付けられて格納されている。また、コマンド0及びコマンド2は、対応するPIOリクエストがライトリクエストであり、データ0及びデータ2が、それぞれコマンド0及びコマンド2に対応付けられて入力バッファ91aに格納されている。
 コマンド処理部92は、入力バッファ部91に格納されたコマンドを自装置又はIOデバイスコントローラ6により処理し、自装置又はIOデバイスコントローラ6が発行したPIO完了を出力バッファ部93に渡す。
 出力バッファ部93は、PIO完了に含まれるコマンド及びデータを出力バッファ93aに格納する。そして、出力バッファ部93は、出力バッファ93aに格納したコマンド及びデータをPIO完了としてホストに送信する。ここで、データは、PIOリクエストがリードリクエストである場合のリードデータであり、PIOリクエストがライトリクエストである場合にはない。
 図9では、出力バッファ93aに、4つのコマンド0~コマンド3が格納されている。また、コマンド1及びコマンド3は、対応するPIOリクエストがリードリクエストであり、データ1及びデータ3が、それぞれコマンド1及びコマンド3に対応付けられて出力バッファ93aに格納されている。
 また、ホストとデバイスとの間でデータの転送を行うデータ転送装置が、転送を制御するシーケンスコントローラと、ホストとデバイスの間で転送されるデータを記憶するデータバッファとを備える従来技術がある(例えば、特許文献1参照。)。
特開2008-204048号公報
 図9に示したように、PIOリクエストがリードリクエストである場合には、入力バッファ91aにはデータが格納されず、PIOリクエストがライトリクエストである場合には、出力バッファ93aにはデータが格納されない。したがって、入力バッファ91aと出力バッファ93aを合わせるとデータを格納するデータ領域は半分の領域が使用されない。
 また、CPU2は、PIO完了を受信していないPIOリクエストの数が所定の数になるまでPIOリクエストを発行するため、入力バッファ91a及び出力バッファ93aは、CPU2が発行するPIOリクエストの所定の数分のエントリを備える。したがって、IOコントローラ9には、CPU2が発行するPIOリクエストの所定の数分のデータ領域が使用されないため、無駄なデータ領域があるという問題がある。
 本発明は、1つの側面では、無駄なデータ領域をなくしたIOコントローラすなわちデータ転送装置を提供することを目的とする。
 本願の開示するデータ転送装置は、1つの態様において、IO装置を制御するIOデバイスコントローラと演算処理装置との間でデータを転送するデータ転送装置である。前記データ転送装置は、前記IOデバイスコントローラ又は自装置へ書き込むライトデータ及び前記IOデバイスコントローラ又は自装置から読み出したリードデータを記憶するデータバッファを有する。また、前記データ転送装置は、前記演算処理装置からライト要求を受信した際にライト要求を示すコマンドを入力バッファに格納すると共にライトデータを前記データバッファに格納する入力バッファ部を有する。また、前記データ転送装置は、前記演算処理装置からのリード要求に基づいて前記IOデバイスコントローラ又は自装置から読み出されたリードデータを前記データバッファに格納すると共にリード要求を示すコマンドを出力バッファに格納する出力バッファ部を有する。
 1実施態様によれば、データ転送装置から無駄なデータ領域をなくすことができる。
図1は、実施例に係る情報処理装置の構成を示す図である。 図2は、IOコントローラの構成を示す図である。 図3は、リードリクエストのパケットフォーマットの一例を示す図である。 図4は、ライトリクエストのパケットフォーマットの一例を示す図である。 図5は、コマンドの割り当て例を示す図である。 図6は、リード完了のパケットフォーマットの一例を示す図である。 図7は、ライト完了のパケットフォーマットの一例を示す図である。 図8は、実施例に係るIOコントローラによる処理のフローを示すフローチャートである。 図9は、従来のIOコントローラの一例を示す図である。
 以下に、本願の開示するデータ転送装置、情報処理装置及びIO制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
 まず、実施例に係る情報処理装置の構成について説明する。図1は、実施例に係る情報処理装置の構成を示す図である。図1に示すように、情報処理装置1は、CPU2と、メモリーコントローラ3と、メモリー4と、IOコントローラ5と、IOデバイスコントローラ6と、インターコネクト7とを有する。
 CPU2は、メモリー4に記憶されたプログラムを読み出して実行する中央処理装置である。メモリーコントローラ3は、メモリー4へのデータの書き込み、メモリー4からのプログラム及びデータの読み出しを制御する制御装置である。メモリー4は、プログラムやデータを記憶するRAM(Random Access Memory)である。
 IOコントローラ5は、CPU2及びメモリー4とIOデバイスコントローラ6とを接続するホストバスブリッジであり、CPU2及びメモリー4とIOデバイスコントローラ6との間でデータを転送するデータ転送装置である。
 IOコントローラ5は、IOデバイスコントローラ6又は自装置からのデータの読み出し、及び、IOデバイスコントローラ6又は自装置へのデータの書き込みを制御する。IOコントローラ5は、インターコネクト7経由でCPU2からPIOリクエストを受信し、PIOリクエストで要求された処理を完了すると、CPU2にPIO完了を返信する。
 IOデバイスコントローラ6は、IOデバイスを制御する制御装置であり、例えば、ハードディスクコントローラ、LAN(Local Area Network)コントローラである。インターコネクト7は、CPU2とメモリーコントローラ3とIOコントローラ5とを相互に接続する装置である。
 CPU2、メモリーコントローラ3、IOコントローラ5、IOデバイスコントローラ6及びインターコネクト7は、SoC(System on Chip)に含まれ、チップの内部バスによって接続される。
 次に、IOコントローラ5の構成について説明する。図2は、IOコントローラ5の構成を示す図である。図2に示すように、IOコントローラ5は、入力バッファ部51と、振り分け部52と、レジスタ部53と、調停部54と、出力バッファ部55と、データバッファ部56とを有する。
 入力バッファ部51は、CPU2が発行したPIOリクエストをインターコネクト7経由で受け取り、PIOリクエストに含まれるコマンド及びアドレスを入力バッファ51aに格納する。
 図3及び図4は、PIOリクエストのパケットフォーマットの一例を示す図である。図3は、IOコントローラ5又はIOデバイスコントローラ6からのデータ読み出し要求であるリードリクエストを示し、図4は、IOコントローラ5又はIOデバイスコントローラ6へのデータ書き込み要求であるライトリクエストを示す。また、図3及び図4において、[n:0]は、ビット0からビットnまでのn+1ビットであることを示す。
 図3に示すように、リードリクエストは、4ビットのコマンドと、16ビットのタグと、4ビットのrsvと、40ビットのアドレスを含む64ビットデータであり、1サイクルで送られる。
 コマンドは、パケットがPIOリクエストであるかPIO完了であるか、及び、パケットがリードに関するものであるかライトに関するものであるかを示す。図5は、コマンドの割り当て例を示す図である。図5に示すように、「0000」はパケットがリードリクエストであることを示し、「0011」はパケットがライトリクエストであることを示し、「1001」はパケットがリード完了であることを示し、「1010」はパケットがライト完了であることを示す。
 他の値は、reserved、すなわち将来の拡張用にキープされている。また、リードリクエスト及びライト完了には付属するデータはなく、ライトリクエスト及びリード完了には付属するデータがある。
 コマンド[3:0]のビット0はデータの有無を示し、ビット1はリードであるかライトであるかを示し、ビット3はリクエストであるか完了であるかを示す。IOコントローラ5は、このビットの割り当てを用いてデータの有無などを判断する。
 タグは、PIOリクエストごとに割り当てられるユニークな識別子である。タグはDMA(Direct Memory Access)リクエストとパケットフォーマットを揃えるために16ビットのビット幅を有する。
 タグは、リードリクエストとライトリクエストごとに別個の割当空間を有するものではなく、リードリクエストとライトリクエストで同じ割当空間を共有している。すなわち、同じタグを有する異なるPIOリクエストは、リードリクエストとライトリクエストの両方を含めて、存在しない。
 そこで、IOコントローラ5は、インターコネクト7から受信したPIOリクエストを入力バッファ51aに格納するときのエントリ番号及びPIO完了を返信するときの出力バッファに格納するときのエントリ番号としてタグを使用する。なお、出力バッファについては後述する。
 CPU2は、PIO完了を受信していないPIOリクエストの数が一定数になるまでPIOリクエストを発行する。この一定数を、ここでは、PIOの最大outstanding数と呼ぶこととする。
 入力バッファ部51は、デッドロックを排除するためと、インターコネクト7、IOデバイスコントローラ6、内部のレジスタ部53での処理の混雑により遅延が発生する可能性があるため、最大outstanding数のエントリを有する。
 アドレスは、IOコントローラ内又はIOデバイスコントローラ内でリード又はライトの対象となるレジスタの場所を示す。アドレスによりレジスタがIOコントローラ内にあるのかIOデバイスコントローラ内にあるのかが判定される。rsvは、将来の拡張用にキープされているビットである。
 また、図4に示すように、ライトリクエストは、4ビットのコマンドと、16ビットのタグと、4ビットのrsvと、40ビットのアドレスと、64ビットのデータを含む128ビットデータであり、2サイクルで送られる。64ビットのデータは、アドレスで指定されるレジスタに書き込まれるデータである。
 図2に戻って、入力バッファ部51は、PIOリクエストがライトリクエストである場合には、2サイクル目で送られてくるデータをタグと共にデータバッファ部56に渡す。また、入力バッファ部51は、入力バッファ51aに格納したコマンド及びアドレスを格納した順番で取り出し、振り分け部52にタグと共に渡す。このとき、PIOリクエストがライトリクエストである場合には、入力バッファ部51は、データバッファ部56から対応するデータを受け取り、振り分け部52に渡す。
 振り分け部52は、PIOリクエストをレジスタ部53とIOデバイスコントローラ6に振り分ける処理を行う。すなわち、振り分け部52は、入力バッファ部51から受け取ったアドレスに基づいてPIOリクエストの対象となるレジスタが内部にあるかIOデバイスコントローラ6にあるかを判定し、内部にある場合には、コマンドとアドレスとタグをレジスタ部53に渡す。一方、PIOリクエストの対象となるレジスタがIOデバイスコントローラ6にある場合には、振り分け部52は、コマンドとアドレスとタグをIOデバイスコントローラ6に渡す。
 また、PIOリクエストがライトリクエストである場合には、振り分け部52は、入力バッファ部51から受け取ったデータをアドレスに基づいてレジスタ部53又はIOデバイスコントローラ6に渡す。
 レジスタ部53は、CPU2から読み出しの対象及び書き込みの対象となるレジスタ53aを有し、入力バッファ部51から受け取ったコマンド及びアドレスに基づいて、レジスタ53aからのデータの読み出し又はレジスタ53aへのデータの書き込みを行う。
 また、レジスタ部53は、レジスタ53aからデータを読み出した場合には、読み出したデータをコマンド及びタグと共にPIO完了として調停部54に渡し、レジスタ53aへデータを書き込んだ場合には、コマンド及びタグをPIO完了として調停部54に渡す。
 図6及び図7は、PIO完了のパケットフォーマットの一例を示す図である。図6は、IOコントローラ5又はIOデバイスコントローラ6からのデータ読み出し完了であるリード完了を示し、図7は、IOコントローラ5又はIOデバイスコントローラ6へのデータ書き込み完了であるライト完了を示す。
 図6に示すように、リード完了は、4ビットのコマンドと、16ビットのタグと、44ビットのrsvと、64ビットのデータを含む128ビットデータであり、2サイクルで送られる。64ビットのデータは、リードリクエストのアドレスで指定されたレジスタから読み出されたデータである。また、図7に示すように、ライト完了は、4ビットのコマンドと、16ビットのタグと、44ビットのrsvを含む64ビットデータであり、1サイクルで送られる。
 PIOリクエストは、レジスタ部53又はIOデバイスコントローラ6で処理された後はPIO完了と呼ばれる。なお、図2では、8個のレジスタ53aを示すが、レジスタ部53は任意の数のレジスタ53aを有することができる。
 調停部54は、レジスタ部53又はIOデバイスコントローラ6から送信されたPIO完了を調停して、出力バッファ部55に渡す。
 出力バッファ部55は、調停部54から受け取ったPIO完了に含まれるコマンドを出力バッファ55aに格納し、PIO完了にデータが含まれる場合には、データをデータバッファ部56にタグと共に渡す。出力バッファ55aは、最大outstanding数のエントリを有し、タグで指定されるエントリにコマンドを格納する。
 また、出力バッファ部55は、インターコネクト7に送信可能になったときに、出力バッファ55aからコマンドを取り出し、タグと共にPIO完了としてインターコネクト7に返信する。出力バッファ部55は、コマンドがリードである場合には、データバッファ部56からデータを読み出して、コマンド及びタグと共にデータをインターコネクト7に返信する。出力バッファ部55は、格納した順番に出力バッファ55aからコマンドを取り出してインターコネクト7に返信する。
 データバッファ部56は、入力バッファ部51又は出力バッファ部55からデータ及びタグを受け取り、データバッファ56aの中でタグで指定されるエントリにデータを格納する。
 また、データバッファ部56は、入力バッファ部51又は出力バッファ部55からタグを受け取り、データバッファ56aの中のタグで指定されるエントリからデータを読み出して入力バッファ部51又は出力バッファ部55に渡す。
 このように、IOコントローラ5は、ライトデータとリードデータをデータバッファ56aに格納する。したがって、ライトデータを入力バッファ51aに格納してリードデータを出力バッファ55aに格納する場合と比較して、IOコントローラ5は、データの格納に必要な領域を半減することができる。
 なお、データバッファ56aは、フリップフロップ(FF)、SRAM(Static RAM)、レジスタファイル等の任意の記憶素子で構成することができる。また、データバッファ56aは最大outstanding数のエントリを有する。図2では、最大outstanding数が4である場合を示したが、最大outstanding数は任意の整数とすることができる。
 次に、実施例に係るIOコントローラ5による処理のフローについて説明する。図8は、実施例に係るIOコントローラ5による処理のフローを示すフローチャートである。図8に示すように、IOコントローラ5は、PIOリクエストをインターコネクト7から受信する(ステップS1)。
 そして、IOコントローラ5の入力バッファ部51が、PIOリクエストのコマンドを解析して、コマンド、アドレスを入力バッファ51aに格納し、ライトリクエストの場合は、データをデータバッファ56aに格納する(ステップS2)。
 そして、振り分け部52が、アドレスの示すレジスタがIOコントローラ内か否かを判定する(ステップS3)。その結果、レジスタがIOコントローラ内でない場合には、振り分け部52はIOデバイスコントローラ6に処理を指示し、処理を完了したIOデバイスコントローラ6から調停部54がPIO完了を受信する(ステップS7)。そして、調停部54は、ステップS8に進む。
 一方、アドレスの示すレジスタがIOコントローラ内である場合には、レジスタ部53がPIOリクエストのコマンドがリード又はライトかを判定する(ステップS4)。そして、リードである場合には、レジスタ部53は、レジスタ53aからリードし、データ付きPIO完了を調停部54に送信する(ステップS5)。一方、PIOリクエストのコマンドがライトである場合には、レジスタ部53は、レジスタ53aへライトし、データ無しPIO完了を調停部54に送信する(ステップS6)。
 そして、調停部54は、PIO完了を調停し(ステップS8)、出力バッファ部55が、PIO完了のコマンドを解析して、コマンドを出力バッファ55aに格納し、リードリクエストの場合はデータをデータバッファ56aに格納する(ステップS9)。そして、出力バッファ部55は、PIO完了をインターコネクト7に返信する(ステップS10)。
 上述してきたように、実施例では、入力バッファ部51は、コマンド及びアドレスを入力バッファ51aに格納し、ライトデータをデータバッファ56aに格納する。また、出力バッファ部55は、コマンドを出力バッファ55aに格納し、リードデータをデータバッファ56aに格納する。すなわち、入力バッファ部51と出力バッファ部55がデータバッファ56aを共用する。したがって、IOコントローラ5は、従来と比較してデータ格納領域を半減することができ、消費電力を低減することができる。
 また、実施例では、入力バッファ部51、出力バッファ部55及びデータバッファ部56は、それぞれ入力バッファ51a、出力バッファ55a及びデータバッファ56aにデータを格納する場合に、PIOリクエストに含まれるタグをエントリ番号として使用する。したがって、IOコントローラ5は、最大outstanding数のエントリを各バッファに設けることにより、バッファに空きがなくなることを防ぐことができる。
 また、実施例では、振り分け部52がPIOリクエストに含まれるアドレスに基づいてPIOリクエストをIOデバイスコントローラ6と自装置に振り分ける。したがって、CPU2は、IOコントローラ5とIOデバイスコントローラ6を同じように制御することができる。
  1  情報処理装置
  2  CPU
  3  メモリーコントローラ
  4  メモリー
  5,9  IOコントローラ
  6  IOデバイスコントローラ
  7  インターコネクト
 51,91  入力バッファ部
 51a  入力バッファ
 52  振り分け部
 53  レジスタ部
 53a  レジスタ
 54  調停部
 55,93  出力バッファ部
 55a  出力バッファ
 56  データバッファ部
 56a  データバッファ
 92  コマンド処理部

Claims (5)

  1.  IO装置を制御するIOデバイスコントローラと演算処理装置との間でデータを転送するデータ転送装置において、
     前記IOデバイスコントローラ又は自装置へ書き込むライトデータ及び前記IOデバイスコントローラ又は自装置から読み出したリードデータを記憶するデータバッファと、
     前記演算処理装置からライト要求を受信した際にライト要求を示すコマンドを入力バッファに格納すると共にライトデータを前記データバッファに格納する入力バッファ部と、
     前記演算処理装置からのリード要求に基づいて前記IOデバイスコントローラ又は自装置から読み出されたリードデータを前記データバッファに格納すると共にリード要求を示すコマンドを出力バッファに格納する出力バッファ部と
     を有することを特徴とするデータ転送装置。
  2.  前記ライト要求及び前記リード要求は、各要求を一意に識別するタグを含み、
     前記入力バッファ部は、前記入力バッファにコマンドを格納する場合及び前記データバッファにライトデータを格納する場合に前記タグに基づく位置に格納し、
     前記出力バッファ部は、前記出力バッファにコマンドを格納する場合及び前記データバッファにリードデータを格納する場合に前記タグに基づく位置に格納することを特徴とする請求項1に記載のデータ転送装置。
  3.  前記ライト要求及び前記リード要求を当該データ転送装置内の記憶部に対する要求と当該データ転送装置外の装置に対する要求とに振り分ける振分部と、
     当該データ転送装置内の記憶部に対する要求についての処理の完了と当該データ転送装置外の装置に対する要求についての処理の完了とを調停する調停部とをさらに備え、
     前記入力バッファ部は、前記ライト要求が処理される際に前記データバッファからライトデータを取り出して前記振分部に渡し、
     前記出力バッファ部は、前記リード要求が処理された後に前記調停部からリードデータを受け取って前記データバッファに格納することを特徴とする請求項1または2に記載のデータ転送装置。
  4.  プログラムを記憶する記憶装置と、前記記憶装置からプログラムを読み出して実行する演算処理装置と、IO装置を制御するIOデバイスコントローラと、前記演算処理装置と前記IOデバイスコントローラとの間でデータを転送するデータ転送装置とを有する情報処理装置において、
     前記データ転送装置は、
     前記IOデバイスコントローラ又は自装置へ書き込むライトデータ及び前記IOデバイスコントローラ又は自装置から読み出したリードデータを記憶するデータバッファと、
     前記演算処理装置からライト要求を受信した際にライト要求を示すコマンドを入力バッファに格納すると共にライトデータを前記データバッファに格納する入力バッファ部と、
     前記演算処理装置からのリード要求に基づいて前記IOデバイスコントローラ又は自装置から読み出されたリードデータを前記データバッファに格納すると共にリード要求を示すコマンドを出力バッファに格納する出力バッファ部と
     を有することを特徴とする情報処理装置。
  5.  IO装置を制御するIOデバイスコントローラと演算処理装置との間でデータを転送するデータ転送装置によるIO制御方法において、
     前記演算処理装置からライト要求を受信した際にライト要求を示すコマンドを入力バッファに格納すると共にライトデータをデータバッファに格納し、
     前記演算処理装置からのリード要求に基づいて前記IOデバイスコントローラ又は自装置から読み出されたリードデータを前記データバッファに格納すると共にリード要求を示すコマンドを出力バッファに格納する
     処理を前記データ転送装置が実行することを特徴とするIO制御方法。
PCT/JP2013/075575 2013-09-20 2013-09-20 データ転送装置、情報処理装置及びio制御方法 WO2015040750A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015537533A JP6037029B2 (ja) 2013-09-20 2013-09-20 データ転送装置、情報処理装置及びio制御方法
PCT/JP2013/075575 WO2015040750A1 (ja) 2013-09-20 2013-09-20 データ転送装置、情報処理装置及びio制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/075575 WO2015040750A1 (ja) 2013-09-20 2013-09-20 データ転送装置、情報処理装置及びio制御方法

Publications (1)

Publication Number Publication Date
WO2015040750A1 true WO2015040750A1 (ja) 2015-03-26

Family

ID=52688431

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/075575 WO2015040750A1 (ja) 2013-09-20 2013-09-20 データ転送装置、情報処理装置及びio制御方法

Country Status (2)

Country Link
JP (1) JP6037029B2 (ja)
WO (1) WO2015040750A1 (ja)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04370859A (ja) * 1991-06-20 1992-12-24 Fujitsu Ltd 上位装置と下位装置とにおけるデータの送受信方式
JP2012089948A (ja) * 2010-10-15 2012-05-10 Fujitsu Ltd データ転送装置及びデータ転送方法
WO2013014841A1 (ja) * 2011-07-22 2013-01-31 パナソニック株式会社 データ処理装置およびデータ処理方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2004199402A (ja) * 2002-12-18 2004-07-15 Ricoh Co Ltd Usbデバイスコントローラ
JP2008065377A (ja) * 2006-09-04 2008-03-21 Toshiba Corp 情報処理装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04370859A (ja) * 1991-06-20 1992-12-24 Fujitsu Ltd 上位装置と下位装置とにおけるデータの送受信方式
JP2012089948A (ja) * 2010-10-15 2012-05-10 Fujitsu Ltd データ転送装置及びデータ転送方法
WO2013014841A1 (ja) * 2011-07-22 2013-01-31 パナソニック株式会社 データ処理装置およびデータ処理方法

Also Published As

Publication number Publication date
JP6037029B2 (ja) 2016-11-30
JPWO2015040750A1 (ja) 2017-03-02

Similar Documents

Publication Publication Date Title
TW201905714A (zh) 以輔助處理器記憶體進行儲存裝置的直接輸入輸出操作的計算系統操作方法、計算系統、車輛及電腦可讀媒體
JP5666722B2 (ja) メモリ・インターフェース
JP5137171B2 (ja) データ処理装置
US10079916B2 (en) Register files for I/O packet compression
JP4587756B2 (ja) 半導体集積回路装置
JP2021515318A (ja) NVMeベースのデータ読み取り方法、装置及びシステム
JP2013512519A (ja) いくつかの周辺装置のメモリ間のデータの直接転送のためにメモリに直接アクセスするコントローラ、そのようなコントローラを実現可能にする方法およびコンピュータプログラム
US8458411B2 (en) Distributed shared memory multiprocessor and data processing method
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
US10599347B2 (en) Information processing system, information processing apparatus, and method for controlling information processing system
JP2005209206A (ja) マルチプロセッサシステムにおけるデータ転送方法、マルチプロセッサシステム、及び、この方法を実施するプロセッサ
JP2591502B2 (ja) 情報処理システムおよびそのバス調停方式
JP4748641B2 (ja) 情報処理システム
US9244824B2 (en) Memory sub-system and computing system including the same
JP6294732B2 (ja) データ転送制御装置及びメモリ内蔵装置
JP6037029B2 (ja) データ転送装置、情報処理装置及びio制御方法
US20080209085A1 (en) Semiconductor device and dma transfer method
KR20090059602A (ko) 세션 메모리 버스를 구비한 암호화 장치
US20100153610A1 (en) Bus arbiter and bus system
US8296481B2 (en) Device and method for improving transfer efficiency of odd number of data blocks
JP5229922B2 (ja) 情報処理システム
EP1990725B1 (en) Central processing unit, central processing unit control method, and information processing system
JP4249741B2 (ja) バスシステム及びバスシステムを含む情報処理システム
JP7003752B2 (ja) データ転送装置、データ転送方法、プログラム
JP6384359B2 (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: 13893938

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2015537533

Country of ref document: JP

Kind code of ref document: A

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13893938

Country of ref document: EP

Kind code of ref document: A1