JP2005107771A - High-throughput data transfer system - Google Patents
High-throughput data transfer system Download PDFInfo
- Publication number
- JP2005107771A JP2005107771A JP2003339152A JP2003339152A JP2005107771A JP 2005107771 A JP2005107771 A JP 2005107771A JP 2003339152 A JP2003339152 A JP 2003339152A JP 2003339152 A JP2003339152 A JP 2003339152A JP 2005107771 A JP2005107771 A JP 2005107771A
- Authority
- JP
- Japan
- Prior art keywords
- data transfer
- request
- slave
- master
- transfer system
- Prior art date
- Legal status (The legal status 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 status listed.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
- Information Transfer Systems (AREA)
Abstract
Description
本発明は、マスタとなる装置からのデータ転送リクエストをスレーブとなる装置(以下「スレーブモジュール」)へ出力する装置に関し、特に演算器等のバッファサイズが小さいスレーブモジュールに対して直接メモリ間転送(以下「DMA」)等により頻繁にデータ転送を行うデータ転送装置に関する。 The present invention relates to a device that outputs a data transfer request from a master device to a slave device (hereinafter referred to as a “slave module”), and in particular, transfers between memories directly to a slave module having a small buffer size such as an arithmetic unit ( The present invention relates to a data transfer apparatus that frequently performs data transfer by “DMA”).
計算機や携帯電話といった電子機器内部におけるデータ転送では、データ転送の競合を調整するための装置が用いられることがある。この装置は一般的にはアービタ(特にバスに接続された各装置間でのデータ転送の競合を調整する装置はバスアービタ)と呼ばれる。
ここで、アービタに対しデータ転送の要求を送信する装置、例えば演算装置をマスタと呼び、マスタのデータ転送の対象となる装置をスレーブと呼ぶ。
In data transfer inside an electronic device such as a computer or a mobile phone, a device for adjusting data transfer contention may be used. This device is generally called an arbiter (in particular, a device that adjusts data transfer contention between devices connected to the bus is a bus arbiter).
Here, a device that transmits a data transfer request to the arbiter, for example, an arithmetic device is called a master, and a device that is a target of data transfer by the master is called a slave.
一般的に、マスタとアービタ間、アービタとスレーブ間でのコマンドやデータの遣り取りは、これらの装置間で使用されるタイマ(一般的に「クロック」)に同期して行われる。例えば、マスタがアービタに対してスレーブの使用を要求するリクエストを出力するのにクロックの1周期(以下「1サイクル」)要する。一方、アービタにおける競合判定、すなわちマスタがスレーブを使用可能かどうかの判定は、マスタからのリクエストの受信と同じサイクル内で行われる。そして、その競合判定の次のサイクルでアービタはマスタに対し判定の結果(具体的にはアクセスの許可あるいは不許可を示す信号。以下許可を示す信号を「アクノリッジ」又は「アック」と称する)を送信する。即ち、マスタがスレーブを使用するために、最低限2サイクルの時間が必要となる。 In general, exchange of commands and data between a master and an arbiter and between an arbiter and a slave is performed in synchronization with a timer (generally “clock”) used between these devices. For example, one cycle of the clock (hereinafter referred to as “one cycle”) is required for the master to output a request for requesting the use of the slave to the arbiter. On the other hand, the contention determination in the arbiter, that is, whether or not the master can use the slave is performed within the same cycle as the reception of the request from the master. Then, in the next cycle of the contention determination, the arbiter gives a determination result to the master (specifically, a signal indicating permission or non-permission of access. Hereinafter, a signal indicating permission is referred to as “acknowledge” or “ac”). Send. That is, at least two cycles are required for the master to use the slave.
アービタに関する従来技術が特許文献1に開示されている。特許文献1では、アービタにバッファメモリを設ける事で、複数マスタから同一スレーブへのリクエストが競合した時のマスタからスレーブへのデータ転送のスループット減少を抑えている。具体的には、特許文献1に開示されたアービタは、複数マスタからのデータ転送リクエストに対し、データ転送の可不可とは関係なく複数のマスタのうち一つのマスタに対してアックを返す。その一方、アービタは、アックを返していないマスタからのデータ転送リクエストをバッファに格納する。そして、一つのマスタのデータ転送リクエストに基づくデータ転送の間に、アービタがバッファに格納されているリクエスト同士の競合判定を行っておく事で、データ転送を行っているマスタのデータ転送が終了した後に直ちにバッファに格納されたデータ転送リクエストをスレーブへ出力することが可能となる。
Prior art relating to an arbiter is disclosed in
上述した特許文献1に限らず、従来のアービタでは、アービタを介してマスタが実際にスレーブを使用できるまでに2サイクルかかる。したがって、同一スレーブに対して複数のマスタのデータ転送リクエストが競合する場合、データ転送の許可を得るマスタが切り替わる度に2サイクルの時間を要し、スレーブへのデータ転送スループットが減少してしまう。
The conventional arbiter is not limited to
また、同一マスタが頻繁にデータ転送リクエストの対象となるスレーブを切り替える場合も、対象となるスレーブが切り替わる度に2サイクルの時間を要する為、上述と同様の問題が発生する。特に、双方において、マスタからの一回のリクエストでのデータ転送量が少ない時やデータ転送量が制限されている(例えばマスタやスレーブが有する演算器が有するデータ蓄積用のバッファの記憶容量が小さい等)にマスタのデータ転送スループットが減少するという問題点がある。 In addition, when the same master frequently switches the slave that is the target of the data transfer request, it takes two cycles each time the target slave is switched, so the same problem as described above occurs. In particular, in both cases, when the data transfer amount in one request from the master is small or the data transfer amount is limited (for example, the storage capacity of the data storage buffer of the arithmetic unit included in the master or slave is small) Etc.) has a problem that the data transfer throughput of the master is reduced.
本発明は、アービトレーションを実行するデータ転送システム(アービタ)において、システムに接続されるマスタに対して予めアクノリッジを送信する構成とする。具体的には、データ転送システムは、マスタからのリクエストがない状態においても、全てのマスタに対してアックを返しておく。そして、マスタからデータ転送等のスレーブの使用を要求するリクエストが出力されると、データ転送システムは予め定められた優先順位又は所定の優先アルゴリズムに従って競合判定を行い、次のサイクルでデータ転送が可能なマスタのリクエストをスレーブに対して出力する。 According to the present invention, in a data transfer system (arbiter) for executing arbitration, an acknowledge is transmitted in advance to a master connected to the system. Specifically, the data transfer system returns an acknowledgment to all masters even when there is no request from the master. When a request requesting the use of a slave such as data transfer is output from the master, the data transfer system performs contention determination according to a predetermined priority order or a predetermined priority algorithm, and data transfer is possible in the next cycle. The master request to the slave.
一方、マスタのリクエストと関係なくアックを返している事から、同一スレーブへのリクエストが競合した場合においてもマスタはリクエストを許可されたと判断してそのリクエストを終了してしまう為、このリクエストを格納する為のバッファをデータ転送システムに設け、スレーブへ出力不可能なリクエストをバッファに格納する。バッファに格納されたリクエストは、他のマスタから出力されるリクエストと同様の判定対象とし、出力可能と判定した場合に対象スレーブに対して直ちに出力する。 On the other hand, since the ACK is returned regardless of the request from the master, even if the request to the same slave competes, the master determines that the request is permitted and terminates the request. A buffer is provided in the data transfer system, and requests that cannot be output to the slave are stored in the buffer. The request stored in the buffer is determined as a determination target similar to a request output from another master, and when it is determined that the request can be output, the request is immediately output to the target slave.
本発明によれば、アービタにおいて、データ転送スループットが低下しない。特に、バッファ容量の小さいスレーブに対するデータ転送でも高いデータ転送スループットを確保できる。 According to the present invention, the data transfer throughput does not decrease in the arbiter. In particular, high data transfer throughput can be ensured even in data transfer to a slave having a small buffer capacity.
また、本発明によれば、複数のマスタのリクエストが競合しても対象スレーブにおけるデータ転送スループットが低下しない。 Further, according to the present invention, even if requests from a plurality of masters compete, the data transfer throughput in the target slave does not decrease.
以下、本発明の実施形態について説明するが、本発明が本明細書の実施形態に限定されないことは言うまでもない。まず、本実施形態の詳細について説明する前に、本実施形態における装置の概要について簡単に説明する。 Hereinafter, although embodiment of this invention is described, it cannot be overemphasized that this invention is not limited to embodiment of this specification. First, before describing the details of the present embodiment, an outline of the apparatus according to the present embodiment will be briefly described.
図1は、本発明を適用した演算処理システムの1実施態様の構成例を示す図である。演算処理システムは、CPU1、SDRAM2、アクセラレータ8及びこれらを接続するバス3を有する。本演算処理システムは、パーソナルコンピュータ、携帯電話、サーバ、携帯端末等においてデータの処理を行う装置として採用される。
FIG. 1 is a diagram showing a configuration example of one embodiment of an arithmetic processing system to which the present invention is applied. The arithmetic processing system includes a
アクセラレータ8は、CPU1で行われる演算処理のうち、暗号に関する演算処理をCPU1に代わって専門的に処理する回路である。このようにCPU1とアクセラレータ8とで処理を分散することによって、演算処理システムの処理性能が向上する。
The
アクセラレータ8は、アービタの役割を果たすデータ転送システム100、データ転送システム100とバス3とを接続し、かつバス3とデータ転送システム100間との間でデータ転送プロトコルを変換するバスインタフェイス4、データ格納バッファであるSRAM6、暗号演算器7、並びにSRAM6及び暗号演算器7間のデータ転送を制御するDMAC5を有する。
The
バスインタフェイス4、SRAM6、暗号演算器7及びDMAC5は、データ転送システム100を介して相互に接続されている。
図1の構成において、演算処理システムは、SDRAM2に格納されているデータの暗号演算を以下のように行う。演算処理システムは、SDRAM2からバス3、バスインタフェイス4、データ転送システム100を介してSRAM6へデータを転送すると共に、DMAC5の制御に基づいて、SRAM6と暗号演算器7との間のデータ転送を行う。
The
In the configuration of FIG. 1, the arithmetic processing system performs cryptographic operations on data stored in the
ここで、SRAM6を省略して暗号演算器7にバッファとして記憶領域を確保する構成も考えられる。しかし、暗号演算器7にバッファを確保しようとすると回路規模が大きくなってしまう。一方、SRAM6は回路レイアウト構成が単純であり、暗号演算器7に同一容量のバッファを構成するよりもSRAM6を使用するほうが装置全体の回路規模が小さくなる。したがって、本実施形態では、暗号演算器7のバッファ容量は暗号演算器7が常に暗号演算を実行可能な程度の容量に抑え、SRAM6のバッファ容量を大きく取っている。
Here, a configuration in which the
この為、DMAC5はSRAM6と暗号演算器7との間のデータ転送先の切換えを頻繁に行う必要がある。一方、SDRAM2からSRAM6へのデータ転送も行われる為、SRAM6についてデータ転送の競合が発生する。一般的にデータ転送先の切換えとデータ転送の競合が発生する場合、データ転送スループットが低下する事が知られており、本発明ではこの低下を抑える事が可能なデータ転送システム100を用いる。
For this reason, the
データ転送システム100におけるデータ転送の方法について説明する為、データ転送要求を行う側と行われる側をそれぞれマスタとスレーブに分けてシステムを単純化して説明する。
図2は、2つのマスタ及び2つのスレーブがデータ転送システム100と接続される構成を示す図である。ここで、データ転送システム100は、マスタからのデータ転送リクエストがない状態であっても、接続される全てのマスタに対してアックを返しておく。そして、マスタからデータ転送システム100へスレーブに対するデータ転送リクエストが出力されると、データ転送システム100は、予め定められた優先順位又は所定の優先アルゴリズムに従って競合判定を行い、データ転送リクエストが送信されたサイクルの次のサイクルで、データ転送が可能なマスタのデータ転送リクエストを対象となるスレーブに対して出力する。
In order to explain a data transfer method in the
FIG. 2 is a diagram illustrating a configuration in which two masters and two slaves are connected to the
これにより、結果的にデータ転送システムがマスタのデータ転送リクエストと同一サイクルでマスタにアックを送信できることになる為、マスタがスレーブを使用するために必要となるサイクル数が1となる。したがって、マスタが異なるスレーブに対してデータ転送リクエストを切り替えて発行してもデータ転送スループットが低下しない。 As a result, since the data transfer system can transmit an ACK to the master in the same cycle as the master data transfer request, the number of cycles required for the master to use the slave is 1. Therefore, the data transfer throughput does not decrease even if the data transfer request is switched and issued to slaves with different masters.
しかし、データ転送システムがマスタのデータ転送リクエストと関係なくアックを返しているため、同一スレーブへのリクエストが競合した場合においてもマスタはデータ転送リクエストを許可されたと判断してそのデータ転送リクエストを終了してしまうが、データ転送システム100はこのリクエストを対象スレーブに対して出力できない。これを解決するため、本実施形態のデータ転送システムは、各々のマスタからのデータ転送リクエストを格納する為のバッファを有する。
However, since the data transfer system returns an ACK regardless of the master data transfer request, the master determines that the data transfer request is permitted and terminates the data transfer request even if requests to the same slave compete. However, the
データ転送システムは、同一スレーブへのデータ転送リクエストが競合した場合、対象となるスレーブ(以下「対象スレーブ」とも言う)へ出力不可能なリクエスト、言い換えると優先順位の低いマスタのデータ転送リクエストをそのマスタに対応するバッファに格納する。バッファに格納されたデータ転送リクエストは、対象スレーブがデータ転送可能になった時点で他のマスタから出力されるリクエストと同様に競合判定の対象とされ、出力可能と判定された場合に対象スレーブに対して直ちに出力される。これにより、複数のマスタのデータ転送リクエストが競合しても対象スレーブにおけるデータ転送スループットが低下しない。 When a data transfer request to the same slave competes, the data transfer system sends a request that cannot be output to the target slave (hereinafter also referred to as “target slave”), in other words, a master data transfer request with a low priority. Store in the buffer corresponding to the master. The data transfer request stored in the buffer is subject to contention determination in the same way as requests output from other masters when the target slave is ready for data transfer. On the other hand, it is output immediately. Thereby, even if data transfer requests of a plurality of masters compete, the data transfer throughput in the target slave does not decrease.
又、マスタのデータ転送リクエストをバッファに格納した時点でデータ転送システムがそのデータ転送リクエストを出力したマスタへのアックの転送を中断し(具体的にはアックの信号レベルを下げ)、バッファに格納されたデータ転送リクエストを対象スレーブに対して出力した時に再びアックを送信する(アックの信号レベルを上げる)事で1つのマスタから複数のデータ転送リクエストがデータ転送システムに送信されるのを防止することが出来る為、バッファはそれぞれのマスタに対して1リクエスト分のサイズのものを設ければ良い。 Also, when the master data transfer request is stored in the buffer, the data transfer system interrupts the transfer of the ACK to the master that output the data transfer request (specifically, the ACK signal level is lowered) and stores it in the buffer. ACK is transmitted again when the received data transfer request is output to the target slave (by raising the ACK signal level), it is possible to prevent a plurality of data transfer requests from being sent to the data transfer system from one master. Therefore, a buffer having a size for one request may be provided for each master.
以下、本実施形態の詳細について説明する。
図2は、本実施形態の装置構成例を示す図であり、2つのマスタ101a及び101bと2つのスレーブ121aがデータ転送システム100と接続される構成を示している。ただし、マスタ101とスレーブ121の数に制限はない。マスタ101は、スレーブ121に対してライト又はリードのデータ転送リクエストを送信する。
Details of this embodiment will be described below.
FIG. 2 is a diagram showing a device configuration example of the present embodiment, and shows a configuration in which two
以下の説明において、マスタ101aをM1、マスタ101bをM2、スレーブ121aをS1、スレーブ121bをS2と称する。マスタにはバスインタフェイス4やDMAC5などが挙げられ、スレーブにはメモリ(SDRAM2やSRAM6)や暗号演算器7などが挙げられる。
In the following description, the
マスタ101からスレーブ121に対してライト及びリードのリクエストを行う様な状況において、スレーブ121が有する記憶領域には、それぞれ或るアドレス領域が割り当てられており、マスタ101がスレーブ121に対してデータ転送を行う場合、マスタ101は、スレーブ121の記憶領域を示すアドレスを示すアドレス情報を含むデータ転送リクエストをデータ転送システム100に対して出力する。
In a situation where a write request and a read request are made from the master 101 to the slave 121, a certain address area is allocated to each storage area of the slave 121, and the master 101 transfers data to the slave 121. In this case, the master 101 outputs a data transfer request including address information indicating an address indicating the storage area of the slave 121 to the
図3は、データ転送システム100の内部構成例を示す図である。
データ転送システム100は、M1と接続されるM1バッファ105、M2と接続されるM2バッファ115、M1バッファ105及びM1と接続されるM1リクエストセレクタ201、M2バッファ115及びM2と接続されるM2リクエストセレクタ211、M1リクエストセレクタ201、M2リクエストセレクタ211及びS1と接続されるS1アービタ205並びに、M1リクエストセレクタ201、M2リクエストセレクタ211及びS2と接続されるS2アービタ215を有する。
FIG. 3 is a diagram illustrating an internal configuration example of the
The
M1バッファ105(M2バッファ115)は、M1(M2)から送信されたリクエスト及びデータの情報を格納する。M1リクエストセレクタ201(M2リクエストセレクタ211)は、M1(M2)とM1バッファ105(M2バッファ115)から送信されるデータ転送リクエストのスレーブへの転送の制御を行う。S1アービタ205(S2アービタ215)は、S1(S2)とM1リクエストセレクタ201及びM2リクエストセレクタ211との間のリクエスト及びデータの転送を制御する。
The M1 buffer 105 (M2 buffer 115) stores request and data information transmitted from the M1 (M2). The M1 request selector 201 (M2 request selector 211) controls transfer of data transfer requests transmitted from the M1 (M2) and the M1 buffer 105 (M2 buffer 115) to the slave. The S1 arbiter 205 (S2 arbiter 215) controls the transfer of requests and data between S1 (S2) and the
各装置間は一本又は複数本の信号線にて相互に接続されている。尚、以下信号の種類毎に異なる信号線で各装置が相互に接続されているとして説明するが、これら複数の信号線が一纏まりとなった構成も考えられる。 Each device is mutually connected by one or a plurality of signal lines. In the following description, it is assumed that the devices are connected to each other with different signal lines for each type of signal. However, a configuration in which the plurality of signal lines are grouped is also conceivable.
102は、M1リクエストセレクタ201からM1へ出力されるアックを送信する信号線である。103は、M1からM1リクエストセレクタ201及びM1バッファ105へ出力されるデータ転送リクエストが流れる信号線である。信号線103で送信されるデータ転送リクエストにはライト及びリードのコマンドとスレーブの所定の記憶領域を指定するアドレス情報が含まれる。104は、M1、M1リクエストセレクタ及びM1バッファ105との間で入出力されるデータを転送する信号線である。
106は、M1バッファ105の書換えを行う為の制御信号をM1リクエストセレクタ201から送信する際に使用される信号線である。107は、M1バッファ105に格納されたM1のデータ転送リクエストをM1リクエストセレクタ201へ出力する際に使用される信号線である。108は、M1バッファ105からM1リクエストセレクタ201へのデータの転送の際に使用される信号線である。
A
M1リクエストセレクタ201は、信号線103を介して受信したM1のデータ転送リクエスト及びM1バッファ105から信号線107を介して受信したM1のデータ転送リクエストの中から有効であるデータ転送リクエストを選択し、選択したデータ転送リクエストを信号線203を介してS1アービタ205又はS2アービタ215へデータ転送リクエストとして出力する。
The
また、M1からのデータ転送リクエストをS1アービタ205又はS2アービタ215に出力している状態において、データ転送リクエストの対象となるスレーブと接続されたアービタ(S1アービタ205又はS2アービタ215)から返されるアックにより、M1リクエストセレクタ201は、対象スレーブへ次のデータ転送リクエストが送信可能かどうかを判断し、M1へのアックの送信及びM1バッファ105への制御信号の送信を行う。具体的には、次のデータ転送リクエストが送信可能、即ちS1又はS2アービタに対してデータ転送リクエストを出力している間にアックがS1又はS2アービタから返ってきていれば、M1リクエストセレクタ201は、M1に対するアックの有効を維持する。一方、送信不可であればM1へのアックを無効にし、送信不可なデータ転送リクエストをM1バッファ105に格納する為にM1バッファ105へ制御信号を送信する。更にM1リクエストセレクタ201は、データ転送時に信号線104を介してM1とデータを送受信し、信号線204を介してスレーブ121とデータの送受信を行う。
In the state where the data transfer request from M1 is being output to the
203は、M1リクエストセレクタ201からS1アービタ205又はS2アービタ215に出力されるデータ転送リクエストの転送に使用される信号線である。204は、M1リクエストセレクタ201、S1アービタ205及びS2アービタ215間でのデータの送受信に使用される信号線である。
A
S1は、信号線122を介してS1アービタ205から入力されるデータ転送リクエストの情報に従って、対応するデータを、信号線123を介してS1アービタ205へ転送する。信号線202は、S1アービタ205からM1リクエストセレクタ201及びM2リクエストセレクタ211へ出力されるアックを転送する信号線である。S1アービタ205は、M1リクエストセレクタ201及びM2リクエストセレクタ211からのデータ転送リクエストに対して競合判定を行い、M1リクエストセレクタ201又はM2リクエストセレクタ211にアックを出力する。また、S1アービタ205は、データ転送時には信号線204、214を介してS1、M1リクエストセレクタ201及びM2リクエストセレクタ215との間のデータ転送を制御する。
S1 transfers the corresponding data to the
M2、M2リクエストセレクタ211、M2バッファ215、S1アービタ205、S2アービタ215、S1及びS2との間のリクエスト、アック及びデータの送受信は、上述したM1とM1リクエストセレクタ等でのデータ等の転送と同じようにして行われる。ただし、M2とM2リクエストセレクタ間でのアック、リクエスト及びデータの送受信には、信号線112、113、114が使用される。又、M2リクエストセレクタ211とM2バッファとの間でのデータ等の遣り取りには、信号線116、117、118が使用される。更に、M2リクエストセレクタ211とS1アービタ205並びにS2アービタ215との間でのデータ等の遣り取りには、信号線212、213、214が使用される。又、S2とS2アービタ215との間のデータ等の遣り取りには、信号線132、133が使用される。
M2,
以下、M1がS1、S2へ交互にリクエストを発行する場合と、M1とM2がS1へ並行してリクエストを発行する場合について説明する。最初に前者の場合について説明する。
まず、M1リクエストセレクタ201は信号線102を介してアックをM1に対して出力しておき、M2リクエストセレクタ211は信号線112を介してアックをM2に対して出力しておく。この状態でM1がS1へデータ転送等を要求する場合、S1が有する記憶領域に割り振られたアドレスを指定するアドレス情報及びライト又はリードコマンドを含むデータ転送リクエストを、M1はM1リクエストセレクタ201に出力する。
Hereinafter, a case where M1 issues requests to S1 and S2 alternately and a case where M1 and M2 issue requests to S1 in parallel will be described. First, the former case will be described.
First, the
M1リクエストセレクタ201は、受信したデータ転送リクエストがM1から出力されたサイクルと同一のサイクルにおいて、データ転送リクエストに含まれるアドレス情報に従って、S1に対するデータ転送リクエストをS1アービタ205に対して出力する。M1リクエストセレクタからデータ転送リクエストを受信したS1アービタ205は、競合判定を行う。
The
この時点では他のマスタ101からのデータ転送リクエストがない為、S1アービタ205はリクエストに対するアックを信号線202を介してM1リクエストセレクタ201に出力する。以上説明したように、データ転送リクエストがM1からM1リクエストセレクタ201に出力されてS1アービタ205が競合判定を終了し、S1アービタ205がM1リクエストセレクタ201にアックを返すまでが1サイクルで完了する。
At this time, since there is no data transfer request from another master 101, the
そして次のサイクルで、S1アービタ205はS1へM1リクエストセレクタ201から受信したデータ転送リクエストを信号線122を介して送信する。一方、M1においては既にS1へ転送したデータ転送リクエストがデータ転送システム100に許可され、かつM1リクエストセレクタ201からM1へ信号線102を介してアックが送信されている為、M1はS2に対するデータ転送リクエストを出力することができる。この場合、S2に対するデータ転送リクエストを受信したデータ転送システム100は、S1へのデータ転送リクエストを受信した場合と同様な手続きを行う。
In the next cycle, the
以上の処理によって、M1はS1とS2とに交互にデータ転送を要求する場合でも、連続したサイクルでデータ転送リクエストを出力する事が可能となる。即ち、頻繁にデータ転送リクエストを行う対象スレーブを変更してもマスタにおけるデータ転送スループットは低下しない。データ転送リクエストがライトの場合、データ転送リクエストに付随するデータは、データ転送リクエストと同一サイクルで信号線104等を介してマスタ101からスレーブ121へ送信される。一方、データ転送リクエストがリードの場合、データ転送リクエストを受信したスレーブ121から、データ転送リクエストに応じたデータが信号線123等を介してマスタ101へ出力される。
尚、これらのデータの入出力はスレーブのデータ入出力の特徴に合わせたものであれば良く、独自のプロトコルを使用して構わない。
Through the above processing, M1 can output a data transfer request in a continuous cycle even when it requests data transfer alternately to S1 and S2. In other words, even if the target slave that frequently makes data transfer requests is changed, the data transfer throughput in the master does not decrease. When the data transfer request is a write, the data accompanying the data transfer request is transmitted from the master 101 to the slave 121 via the
Note that these data inputs / outputs only need to match the characteristics of the slave data input / output, and an original protocol may be used.
図4は、M1からS1とS2へ交互にデータ転送リクエストが発行される場合の、信号入出力のタイミングチャートを示す図である。1サイクル目(あるいはそれ以前)から、M1には信号線102を介してアックが入力されている。そして2サイクル目においてM1がS1に対するデータ転送リクエストをデータ転送システム100へ出力する。ここでは簡単の為、データ転送リクエストの内容をライトとし、データがデータ転送リクエストと同時に信号線104に出力されるとする。
FIG. 4 is a timing chart of signal input / output when data transfer requests are issued alternately from M1 to S1 and S2. From the first cycle (or earlier), an ACK is input to M1 via the
このデータ転送リクエストとデータは3サイクル目においてS1に出力され、2サイクル目におけるM1からS1へのデータ転送リクエストの送信が完了する。一方、M1は2サイクル目のデータ転送リクエストが許可されたので、3サイクル目でS2に対するデータ転送リクエストを出力する。このリクエストは4サイクル目でS2へ出力される。以上の動作で、M1はS1及びS2へのリクエストを連続したサイクルで交互に実行することができる。 The data transfer request and data are output to S1 in the third cycle, and transmission of the data transfer request from M1 to S1 in the second cycle is completed. On the other hand, since the data transfer request in the second cycle is permitted, M1 outputs a data transfer request for S2 in the third cycle. This request is output to S2 in the fourth cycle. With the above operation, M1 can alternately execute requests to S1 and S2 in successive cycles.
次に、M1とM2からのS1へのデータ転送リクエストが競合する場合について説明する。
まず、M1リクエストセレクタ201は、信号線102を介してアックをM1に対して出力し、M2リクエストセレクタ211は信号線112を介してアックをM2に対して出力しておく。この状態でM1とM2は、S1の記憶領域を示すアドレス情報及びライト又はリードコマンドを含むデータ転送リクエストを、それぞれM1リクエストセレクタ201、M2リクエストセレクタ211に出力する。
Next, a case where data transfer requests from M1 and M2 to S1 conflict will be described.
First, the
M1からデータ転送リクエストが出力されたサイクルと同じサイクルにおいて、M1リクエストセレクタ201はM1から受信したデータ転送リクエストに含まれるアドレス情報に従って、S1に対するデータ転送リクエストをS1アービタ205に対して信号線203を介して出力する。一方、M2リクエストセレクタ211は、M2から受信したデータ転送リクエストに含まれるアドレス情報に従って、S1に対するデータ転送リクエストをS1アービタ205に対して信号線213を介して出力する。
In the same cycle in which the data transfer request is output from M1, the
信号線203及び信号線213を介してM1からのデータ転送リクエスト及びM2からのデータ転送リクエストを受信したS1アービタ205は、受信したデータ転送リクエストの間で競合判定を行う。ここではM1の優先順位が高いと仮定して説明する。M1の優先順位が高い為、S1アービタ205はM1から受信したデータ転送リクエストを選択し、信号線202を介してアックをM1リクエストセレクタ201に出力する。
The
尚、データ転送システムは、この優先順位に関する情報をバッファ等に保持している。また、この優先順位は他の装置からの情報に基づいて設定や変更を可能としても良いし、予め固定値が設定されていても良い。更に、優先順位が固定されておらず、公知の方法、例えばサイクリックに優先順位を与える、あるいはランダムで処理順を設定する構成も考えられる。 Note that the data transfer system holds information on the priority order in a buffer or the like. The priority order may be set or changed based on information from another device, or a fixed value may be set in advance. Furthermore, the priority order is not fixed, and a known method, for example, a configuration in which priority order is given cyclically or a processing order is randomly set is also conceivable.
一方、M2リクエストセレクタ211はデータ転送リクエストをS1に出力しているにも関わらずアックが返って来ない為、データ転送リクエストが許可されていないと判断して、M2バッファを制御する信号を信号線116を介してM2バッファ115に出力する。この制御信号は、M2リクエストセレクタ211が、M2から受信したデータ転送リクエストを一時M2バッファ115に格納する処理を制御、具体的にはM2バッファ115へのデータの格納を許可するための信号である。この際、M2リクエストセレクタ211は、次サイクルからはM2バッファ115に格納されたデータ転送リクエストをデータ転送リクエストの競合判定に使用するために、M2バッファ115へ制御信号を出力した事実、即ちM2バッファ115にデータ転送リクエストが格納されていることを示す情報を保持しておく。
On the other hand, the
そして次のサイクルにおいて、S1アービタ205はM1から受信したデータ転送リクエストをS1に出力する。これにより、M1からS1へのデータ転送リクエストの送信が完了する。一方、M2のS1に対するデータ転送リクエストはS1に送信されなかった為、M2リクエストセレクタ211はM2に対するアックを下げる。ここで、送信されなかったM2のデータ転送リクエストは、M2リクエストセレクタ211から制御信号を受けたM2バッファ115で、データ転送リクエスト及びそのデータ転送リクエストに付随するデータのペアとして保持される。
In the next cycle, the
その後M2バッファ115は、自身に格納されたデータ転送リクエストと付随するデータを、信号線117、118を介してM2リクエストセレクタ211へ出力し続ける。
Thereafter, the
M1からのデータ転送リクエストの処理が実行された後、S1アービタ205は、M2リクエストセレクタ211から送信されつづけているデータ転送リクエストについて競合判定を行う。この場合、M2リクエストセレクタ211は、先の処理においてM2バッファへ制御信号を出力している情報を保持している為、M2バッファ115から受信したデータ転送リクエストをM2のデータ転送リクエストと判断し、受信したデータ転送リクエストを信号線213を介してS1アービタ205へ出力している。この場合、M1からのデータ転送リクエストがないと仮定しているので、S1アービタ205は、受信したデータ転送リクエストの処理を許可し、M2リクエストセレクタ211に対してアックを返す。
After the processing of the data transfer request from M1 is executed, the
S1アービタ205からアックを受信したM2リクエストセレクタ211は、信号線112を介してアックを再びM2に返す。又、M2リクエストセレクタ211は、M2バッファ115に格納されたデータ転送リクエストの使用を停止(無効化)するために、自身が保持していたM2バッファ115に制御信号を出力していたことを示す情報、すなわちM2バッファ115にデータ転送リクエストが格納されていることを示す情報を削除する。
The
尚、M1からのデータ転送リクエストがあった場合には、上述したようにS1アービタ205で再度M1とM2から送信されたデータ転送リクエストの競合判定がされる。ここではM1の優先順位が高いので、M2バッファ115に格納されているデータ転送リクエストの処理は見送られ、M2バッファ115に格納されたデータ転送リクエストはそのまま保持される。
When there is a data transfer request from M1, as described above, the
次のサイクルにおいて、S1アービタ205はM2リクエストセレクタ211から受信したデータ転送リクエストをS1に出力する。これにより、M2からS1へのデータ転送リクエストの送信が完了する。一方、先サイクルにおいてM2バッファ115のデータは無効化されているので、M2リクエストセレクタ211は、信号線117から受信するデータ転送リクエストではなく、信号線113から受信するM2からのデータ転送リクエストを再びS1アービタ205又はS2アービタ215へ転送するようになる。
In the next cycle, the
以上により、複数のマスタ101からS1へリクエストが競合した場合でも、S1へのデータ転送リクエストを連続サイクルで処理する事が可能となる。データの入出力に関しては、M1からS1、S2へ交互にデータ転送リクエストが送信される場合と同様である。 As described above, even when requests from a plurality of masters 101 conflict with S1, it is possible to process data transfer requests to S1 in a continuous cycle. Data input / output is the same as when data transfer requests are alternately transmitted from M1 to S1 and S2.
図5は、S1においてM1とM2のデータ転送リクエストが競合する場合における信号入出力のタイミングチャート例を示す図である。1サイクル目においてM1にはM1リクエストセレクタ201からアックが入力されており、M2にはM2リクエストセレクタ211からアックが入力されている。そして2サイクル目において、M1がS1に対するデータ転送リクエストを出力し、M2がS1に対するデータ転送リクエストを出力する。先述同様、ここではデータ転送リクエストの内容をライトとし、M1からはデータ転送リクエストとともにそれに付随するデータが、M2からはデータ転送リクエストとともにそれに付随するデータが信号線104及び114を介して各々M1リクエストセレクタ201及びM2リクエストセレクタ211へ送信される。
FIG. 5 is a diagram illustrating an example of a signal input / output timing chart when the data transfer requests of M1 and M2 compete in S1. In the first cycle, an ack is input from
2サイクル目においてS1に対するデータ転送リクエストの競合が発生している為、データ転送システム100内部、具体的にはS1アービタ205で競合判定が行われる。その結果、本例では3サイクル目においてS1に対してM1のデータ転送リクエストが出力される。一方、M2ではデータ転送リクエストの送信が許可されなかった為、M2へのアックが下がり、2サイクル目にM2から出力されたデータ転送リクエストはM2バッファ115に格納される。
Since a data transfer request contention for S1 occurs in the second cycle, the contention determination is performed in the
その後のサイクルにおいて、M1から次のデータ転送リクエストが入力され、M2からも次のデータ転送リクエストが入力される。しかしデータ転送システム100はM2のデータ転送リクエストを受け付けず、それ以前に転送されM2バッファ115に格納されているデータ転送リクエストと新たに受取ったM1のデータ転送リクエストとで競合判定を行う。
In the subsequent cycle, the next data transfer request is input from M1, and the next data transfer request is also input from M2. However, the
競合判定を行った結果、4サイクル目においてS1に対してM1のデータ転送リクエストが出力される。3サイクル目におけるM2のデータ転送リクエストはまだS1に対して出力できていない為、M2に対するデータ転送システム100からのアックはまだ下がったままである。したがって、M2はデータ転送リクエストをデータ転送システム100に出力し続ける。本図の例では、M2は、M1のデータ転送リクエストの処理が終了した後の7サイクル目までデータ転送リクエストの転送を続ける。
As a result of the contention determination, the M1 data transfer request is output to S1 in the fourth cycle. Since the data transfer request of M2 in the third cycle has not yet been output to S1, the acknowledgment from the
そして、6サイクル目においてM1からのデータ転送リクエストの処理が終了すると、データ転送システム100は、M2バッファ115に格納されているデータ転送リクエストがS1へ送信可能と判断し、7サイクル目においてそのデータ転送リクエストをS1に対して出力する。これにより、データ転送システム100はアックをM2に再び返す。アックを受信したM2は3サイクル目からデータ転送システム100に送信していたデータ転送リクエストが許可されたと判断し、8サイクル目に更に次のデータ転送リクエストを出力する。7サイクル目で許可されたデータ転送リクエストに基づいて、8サイクル目でそのデータ転送リクエストがS1に送信される。8サイクル目で送信されたデータ転送リクエストは、9サイクル目にS1へ出力される。9サイクル目のM2からのリクエスト、10サイクル目のS1への出力も同様である。以上の動作から、M1とM2のリクエストが競合した場合においても、S1へのリクエストを連続サイクルで行う事が可能となる。
When processing of the data transfer request from M1 ends in the sixth cycle, the
本実施形態によれば、マスタのリクエストと同一サイクルでデータ転送システム100がアックを返せる為、マスタが異なるスレーブに対してリクエストを切り替えてもデータ転送スループットが低下しない。
According to this embodiment, since the
又、本実施形態によれば、複数のマスタのリクエストが競合してもスレーブにおけるデータ転送スループットが低下しない。一方、マスタのリクエストをバッファに格納した時にデータ転送システム100がそのリクエストを出力したマスタのアックを下げ、バッファに格納したリクエストを対象スレーブに対して出力した時に再びアックを返す事で正常なデータ転送システムとして動作する為、バッファはそれぞれのマスタに対して1リクエスト分のサイズのものを設ければ良い。
Further, according to the present embodiment, the data transfer throughput in the slave does not decrease even if requests from a plurality of masters compete. On the other hand, when the master request is stored in the buffer, the
尚、マスタやスレーブの数は幾つでもよく、この場合、データ転送システム100は、スレーブの数に対応するアービタを有し、そのアービタ毎にデータ転送リクエストの競合判定が行われる。
The number of masters and slaves may be any number. In this case, the
100…データ転送システム、101…M1、105…M1バッファ、111…M2、115…M2バッファ、121…S1、131…S2、201…M1リクエストセレクタ、211…M2リクエストセレクタ。
DESCRIPTION OF
Claims (7)
該データ転送システムに接続されるマスタに予めアクノリッジを送信し、
前記マスタから送信されたリクエストを該データ転送システムに接続されたスレーブへ転送することを特徴とするデータ転送システム。 A data transfer system that arbitrates requests,
Send an acknowledge in advance to the master connected to the data transfer system,
A data transfer system for transferring a request transmitted from the master to a slave connected to the data transfer system.
該データ転送システムに接続される複数のマスタ其々に予めアクノリッジを送信し、
前記複数のマスタから送信されたスレーブへのリクエストの双方を受け付け、そのうちの一方を前記スレーブへ転送し、他方のリクエストを該データ転送システムが有するバッファに格納することを特徴とするデータ転送システム。 A data transfer system that arbitrates requests,
An acknowledgment is transmitted in advance to each of a plurality of masters connected to the data transfer system,
A data transfer system that receives both requests sent from the plurality of masters to a slave, transfers one of the requests to the slave, and stores the other request in a buffer of the data transfer system.
前記バッファに格納されたリクエストを送信した前記マスタへの前記アクノリッジの送信を停止することを特徴とするデータ転送システム。 The data transfer system according to claim 2, wherein
A data transfer system, wherein transmission of the acknowledge to the master that has transmitted the request stored in the buffer is stopped.
前記バッファに格納されたリクエストを前記スレーブへ転送されたリクエストの処理の終了後に前記スレーブへ転送し、
前記停止された前記アクノリッジの送信を再開することを特徴とするデータ転送システム。 The data transfer system according to claim 3, wherein
Transfer the request stored in the buffer to the slave after completion of processing the request transferred to the slave,
A data transfer system which resumes transmission of the stopped acknowledge.
前記複数のマスタのうち一つはCPU、前記スレーブはメモリであることを特徴とするデータ転送システム。 The data transfer system according to claim 4, wherein
One of the plurality of masters is a CPU, and the slave is a memory.
前記複数のマスタのうち一つはCPU、前記スレーブは暗号演算装置であることを特徴とするデータ転送システム。 The data transfer system according to claim 4, wherein
One of the plurality of masters is a CPU, and the slave is a cryptographic operation device.
情報処理システムが有する調停装置は、
各マスタへ予めアクノリッジを送信し、
各マスタから受取った一つのスレーブに対する複数のリクエストの競合を判定し、
判定で選択されたリクエストをスレーブへ送信し、
判定で選択されなかったリクエストを一時的に保存し、
前記選択されたリクエストの処理が終了した後に前記一時的に保存したリクエストを前記スレーブに転送することを特徴とするデータ転送方法。
A data transfer method in an information processing system,
The mediation device that the information processing system has is
Send an acknowledge to each master beforehand,
Determine the conflict of multiple requests for one slave received from each master,
Send the request selected in the judgment to the slave,
Temporarily save requests that were not selected in the decision,
A data transfer method comprising: transferring the temporarily stored request to the slave after the processing of the selected request is completed.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003339152A JP2005107771A (en) | 2003-09-30 | 2003-09-30 | High-throughput data transfer system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003339152A JP2005107771A (en) | 2003-09-30 | 2003-09-30 | High-throughput data transfer system |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005107771A true JP2005107771A (en) | 2005-04-21 |
Family
ID=34534410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003339152A Pending JP2005107771A (en) | 2003-09-30 | 2003-09-30 | High-throughput data transfer system |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2005107771A (en) |
-
2003
- 2003-09-30 JP JP2003339152A patent/JP2005107771A/en active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4322451B2 (en) | Data transfer method between DSP memories or between DSP memory and CPU memory (DPRAM) | |
US7689732B2 (en) | Method for improving flexibility of arbitration of direct memory access (DMA) engines requesting access to shared DMA channels | |
KR20070104929A (en) | Flow control method to improve data transfer via a switch matrix | |
JP2012064021A (en) | Communication system, master device and slave device, and communication method | |
KR100644596B1 (en) | Bus system and bus arbitration method thereof | |
US20050177674A1 (en) | Configurable embedded processor | |
JP4902640B2 (en) | Integrated circuit and integrated circuit system | |
JP2007172112A (en) | Memory controller | |
US20230269205A1 (en) | Switch for transmitting packet, network on chip having the same, and operating method thereof | |
CN114780460B (en) | DMA controller and method | |
JP4104939B2 (en) | Multiprocessor system | |
US20040230717A1 (en) | Processing device | |
JP2005085079A (en) | Data transfer controller | |
US20050135402A1 (en) | Data transfer apparatus | |
JP2005107771A (en) | High-throughput data transfer system | |
JP2008165463A (en) | Bus controller | |
US8239652B2 (en) | Data processing system | |
KR100475438B1 (en) | Data bus system and method for performing cross-access between buses | |
US20100153610A1 (en) | Bus arbiter and bus system | |
JP2007506174A (en) | Integrated circuit having a plurality of communication digital signal processors | |
JP4190969B2 (en) | Bus arbitration system in bus system and AMBA | |
JP3959407B2 (en) | Image processing apparatus and image processing system | |
KR20010050234A (en) | Addressing of a memory | |
JP2000250850A (en) | Bus control device, master device, slave device and bus control method | |
CN115964982A (en) | Topological structure of accelerator |