(57)【要約】【課題】  データ転送システムにおいて、同一スレーブに対して複数マスタのリクエストが競合する場合にスレーブ側におけるデータ転送スループットが減少し、同一マスタが頻繁にデータ転送リクエストの対象スレーブを切り替える場合にマスタ側におけるデータ転送スループットが減少してしまう。【解決手段】マスタからのリクエストがない状態においても、全てのマスタに対してアックを返しておき、マスタのリクエストと同一サイクルで競合と許可を行う。更に、対象スレーブへ出力不可能なリクエストを格納する為のバッファを設け、許可したにも関わらず出力不可なリクエストの対象スレーブへの出力をデータ転送システムが行う。【選択図】  図１
2005107771.tif 000002
【特許請求の範囲】
【請求項１】
リクエストを調停するデータ転送システムであって、
該データ転送システムに接続されるマスタに予めアクノリッジを送信し、
前記マスタから送信されたリクエストを該データ転送システムに接続されたスレーブへ転送することを特徴とするデータ転送システム。
【請求項２】
リクエストを調停するデータ転送システムであって、
該データ転送システムに接続される複数のマスタ其々に予めアクノリッジを送信し、
前記複数のマスタから送信されたスレーブへのリクエストの双方を受け付け、そのうちの一方を前記スレーブへ転送し、他方のリクエストを該データ転送システムが有するバッファに格納することを特徴とするデータ転送システム。
【請求項３】
請求項２記載のデータ転送システムであって、
前記バッファに格納されたリクエストを送信した前記マスタへの前記アクノリッジの送信を停止することを特徴とするデータ転送システム。
【請求項４】
請求項３記載のデータ転送システムであって、
前記バッファに格納されたリクエストを前記スレーブへ転送されたリクエストの処理の終了後に前記スレーブへ転送し、
前記停止された前記アクノリッジの送信を再開することを特徴とするデータ転送システム。
【請求項５】
請求項４記載のデータ転送システムであって、
前記複数のマスタのうち一つはＣＰＵ、前記スレーブはメモリであることを特徴とするデータ転送システム。
【請求項６】
請求項４記載のデータ転送システムであって、
前記複数のマスタのうち一つはＣＰＵ、前記スレーブは暗号演算装置であることを特徴とするデータ転送システム。
【請求項７】
情報処理システムにおけるデータ転送方法であって、
情報処理システムが有する調停装置は、
各マスタへ予めアクノリッジを送信し、
各マスタから受取った一つのスレーブに対する複数のリクエストの競合を判定し、
判定で選択されたリクエストをスレーブへ送信し、
判定で選択されなかったリクエストを一時的に保存し、
前記選択されたリクエストの処理が終了した後に前記一時的に保存したリクエストを前記スレーブに転送することを特徴とするデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マスタとなる装置からのデータ転送リクエストをスレーブとなる装置（以下「スレーブモジュール」）へ出力する装置に関し、特に演算器等のバッファサイズが小さいスレーブモジュールに対して直接メモリ間転送（以下「ＤＭＡ」）等により頻繁にデータ転送を行うデータ転送装置に関する。
【背景技術】
【０００２】
計算機や携帯電話といった電子機器内部におけるデータ転送では、データ転送の競合を調整するための装置が用いられることがある。この装置は一般的にはアービタ（特にバスに接続された各装置間でのデータ転送の競合を調整する装置はバスアービタ）と呼ばれる。
ここで、アービタに対しデータ転送の要求を送信する装置、例えば演算装置をマスタと呼び、マスタのデータ転送の対象となる装置をスレーブと呼ぶ。
【０００３】
一般的に、マスタとアービタ間、アービタとスレーブ間でのコマンドやデータの遣り取りは、これらの装置間で使用されるタイマ（一般的に「クロック」）に同期して行われる。例えば、マスタがアービタに対してスレーブの使用を要求するリクエストを出力するのにクロックの１周期（以下「１サイクル」）要する。一方、アービタにおける競合判定、すなわちマスタがスレーブを使用可能かどうかの判定は、マスタからのリクエストの受信と同じサイクル内で行われる。そして、その競合判定の次のサイクルでアービタはマスタに対し判定の結果（具体的にはアクセスの許可あるいは不許可を示す信号。以下許可を示す信号を「アクノリッジ」又は「アック」と称する）を送信する。即ち、マスタがスレーブを使用するために、最低限２サイクルの時間が必要となる。
【０００４】
アービタに関する従来技術が特許文献１に開示されている。特許文献１では、アービタにバッファメモリを設ける事で、複数マスタから同一スレーブへのリクエストが競合した時のマスタからスレーブへのデータ転送のスループット減少を抑えている。具体的には、特許文献１に開示されたアービタは、複数マスタからのデータ転送リクエストに対し、データ転送の可不可とは関係なく複数のマスタのうち一つのマスタに対してアックを返す。その一方、アービタは、アックを返していないマスタからのデータ転送リクエストをバッファに格納する。そして、一つのマスタのデータ転送リクエストに基づくデータ転送の間に、アービタがバッファに格納されているリクエスト同士の競合判定を行っておく事で、データ転送を行っているマスタのデータ転送が終了した後に直ちにバッファに格納されたデータ転送リクエストをスレーブへ出力することが可能となる。
【０００５】
【特許文献１】特開平６-９６０１２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
上述した特許文献１に限らず、従来のアービタでは、アービタを介してマスタが実際にスレーブを使用できるまでに２サイクルかかる。したがって、同一スレーブに対して複数のマスタのデータ転送リクエストが競合する場合、データ転送の許可を得るマスタが切り替わる度に２サイクルの時間を要し、スレーブへのデータ転送スループットが減少してしまう。
【０００７】
また、同一マスタが頻繁にデータ転送リクエストの対象となるスレーブを切り替える場合も、対象となるスレーブが切り替わる度に２サイクルの時間を要する為、上述と同様の問題が発生する。特に、双方において、マスタからの一回のリクエストでのデータ転送量が少ない時やデータ転送量が制限されている（例えばマスタやスレーブが有する演算器が有するデータ蓄積用のバッファの記憶容量が小さい等）にマスタのデータ転送スループットが減少するという問題点がある。
【課題を解決するための手段】
【０００８】
本発明は、アービトレーションを実行するデータ転送システム（アービタ）において、システムに接続されるマスタに対して予めアクノリッジを送信する構成とする。具体的には、データ転送システムは、マスタからのリクエストがない状態においても、全てのマスタに対してアックを返しておく。そして、マスタからデータ転送等のスレーブの使用を要求するリクエストが出力されると、データ転送システムは予め定められた優先順位又は所定の優先アルゴリズムに従って競合判定を行い、次のサイクルでデータ転送が可能なマスタのリクエストをスレーブに対して出力する。
【０００９】
一方、マスタのリクエストと関係なくアックを返している事から、同一スレーブへのリクエストが競合した場合においてもマスタはリクエストを許可されたと判断してそのリクエストを終了してしまう為、このリクエストを格納する為のバッファをデータ転送システムに設け、スレーブへ出力不可能なリクエストをバッファに格納する。バッファに格納されたリクエストは、他のマスタから出力されるリクエストと同様の判定対象とし、出力可能と判定した場合に対象スレーブに対して直ちに出力する。
【発明の効果】
【００１０】
本発明によれば、アービタにおいて、データ転送スループットが低下しない。特に、バッファ容量の小さいスレーブに対するデータ転送でも高いデータ転送スループットを確保できる。
【００１１】
また、本発明によれば、複数のマスタのリクエストが競合しても対象スレーブにおけるデータ転送スループットが低下しない。
【発明を実施するための最良の形態】
【００１２】
以下、本発明の実施形態について説明するが、本発明が本明細書の実施形態に限定されないことは言うまでもない。まず、本実施形態の詳細について説明する前に、本実施形態における装置の概要について簡単に説明する。
【００１３】
図１は、本発明を適用した演算処理システムの１実施態様の構成例を示す図である。演算処理システムは、ＣＰＵ１、ＳＤＲＡＭ２、アクセラレータ８及びこれらを接続するバス３を有する。本演算処理システムは、パーソナルコンピュータ、携帯電話、サーバ、携帯端末等においてデータの処理を行う装置として採用される。
【００１４】
アクセラレータ８は、ＣＰＵ１で行われる演算処理のうち、暗号に関する演算処理をＣＰＵ１に代わって専門的に処理する回路である。このようにＣＰＵ１とアクセラレータ８とで処理を分散することによって、演算処理システムの処理性能が向上する。
【００１５】
アクセラレータ８は、アービタの役割を果たすデータ転送システム１００、データ転送システム１００とバス３とを接続し、かつバス３とデータ転送システム１００間との間でデータ転送プロトコルを変換するバスインタフェイス４、データ格納バッファであるＳＲＡＭ６、暗号演算器７、並びにＳＲＡＭ６及び暗号演算器７間のデータ転送を制御するＤＭＡＣ５を有する。
【００１６】
バスインタフェイス４、ＳＲＡＭ６、暗号演算器７及びＤＭＡＣ５は、データ転送システム１００を介して相互に接続されている。
図１の構成において、演算処理システムは、ＳＤＲＡＭ２に格納されているデータの暗号演算を以下のように行う。演算処理システムは、ＳＤＲＡＭ２からバス３、バスインタフェイス４、データ転送システム１００を介してＳＲＡＭ６へデータを転送すると共に、ＤＭＡＣ５の制御に基づいて、ＳＲＡＭ６と暗号演算器７との間のデータ転送を行う。
【００１７】
ここで、ＳＲＡＭ６を省略して暗号演算器７にバッファとして記憶領域を確保する構成も考えられる。しかし、暗号演算器７にバッファを確保しようとすると回路規模が大きくなってしまう。一方、ＳＲＡＭ６は回路レイアウト構成が単純であり、暗号演算器７に同一容量のバッファを構成するよりもＳＲＡＭ６を使用するほうが装置全体の回路規模が小さくなる。したがって、本実施形態では、暗号演算器７のバッファ容量は暗号演算器７が常に暗号演算を実行可能な程度の容量に抑え、ＳＲＡＭ６のバッファ容量を大きく取っている。
【００１８】
この為、ＤＭＡＣ５はＳＲＡＭ６と暗号演算器７との間のデータ転送先の切換えを頻繁に行う必要がある。一方、ＳＤＲＡＭ２からＳＲＡＭ６へのデータ転送も行われる為、ＳＲＡＭ６についてデータ転送の競合が発生する。一般的にデータ転送先の切換えとデータ転送の競合が発生する場合、データ転送スループットが低下する事が知られており、本発明ではこの低下を抑える事が可能なデータ転送システム１００を用いる。
【００１９】
データ転送システム１００におけるデータ転送の方法について説明する為、データ転送要求を行う側と行われる側をそれぞれマスタとスレーブに分けてシステムを単純化して説明する。
図２は、２つのマスタ及び２つのスレーブがデータ転送システム１００と接続される構成を示す図である。ここで、データ転送システム１００は、マスタからのデータ転送リクエストがない状態であっても、接続される全てのマスタに対してアックを返しておく。そして、マスタからデータ転送システム１００へスレーブに対するデータ転送リクエストが出力されると、データ転送システム１００は、予め定められた優先順位又は所定の優先アルゴリズムに従って競合判定を行い、データ転送リクエストが送信されたサイクルの次のサイクルで、データ転送が可能なマスタのデータ転送リクエストを対象となるスレーブに対して出力する。
【００２０】
これにより、結果的にデータ転送システムがマスタのデータ転送リクエストと同一サイクルでマスタにアックを送信できることになる為、マスタがスレーブを使用するために必要となるサイクル数が１となる。したがって、マスタが異なるスレーブに対してデータ転送リクエストを切り替えて発行してもデータ転送スループットが低下しない。
【００２１】
しかし、データ転送システムがマスタのデータ転送リクエストと関係なくアックを返しているため、同一スレーブへのリクエストが競合した場合においてもマスタはデータ転送リクエストを許可されたと判断してそのデータ転送リクエストを終了してしまうが、データ転送システム１００はこのリクエストを対象スレーブに対して出力できない。これを解決するため、本実施形態のデータ転送システムは、各々のマスタからのデータ転送リクエストを格納する為のバッファを有する。
【００２２】
データ転送システムは、同一スレーブへのデータ転送リクエストが競合した場合、対象となるスレーブ（以下「対象スレーブ」とも言う）へ出力不可能なリクエスト、言い換えると優先順位の低いマスタのデータ転送リクエストをそのマスタに対応するバッファに格納する。バッファに格納されたデータ転送リクエストは、対象スレーブがデータ転送可能になった時点で他のマスタから出力されるリクエストと同様に競合判定の対象とされ、出力可能と判定された場合に対象スレーブに対して直ちに出力される。これにより、複数のマスタのデータ転送リクエストが競合しても対象スレーブにおけるデータ転送スループットが低下しない。
【００２３】
又、マスタのデータ転送リクエストをバッファに格納した時点でデータ転送システムがそのデータ転送リクエストを出力したマスタへのアックの転送を中断し（具体的にはアックの信号レベルを下げ）、バッファに格納されたデータ転送リクエストを対象スレーブに対して出力した時に再びアックを送信する（アックの信号レベルを上げる）事で１つのマスタから複数のデータ転送リクエストがデータ転送システムに送信されるのを防止することが出来る為、バッファはそれぞれのマスタに対して１リクエスト分のサイズのものを設ければ良い。
【００２４】
以下、本実施形態の詳細について説明する。
図２は、本実施形態の装置構成例を示す図であり、２つのマスタ１０１ａ及び１０１ｂと２つのスレーブ１２１ａがデータ転送システム１００と接続される構成を示している。ただし、マスタ１０１とスレーブ１２１の数に制限はない。マスタ１０１は、スレーブ１２１に対してライト又はリードのデータ転送リクエストを送信する。
【００２５】
以下の説明において、マスタ１０１ａをＭ１、マスタ１０１ｂをＭ２、スレーブ１２１ａをＳ１、スレーブ１２１ｂをＳ２と称する。マスタにはバスインタフェイス４やＤＭＡＣ５などが挙げられ、スレーブにはメモリ（ＳＤＲＡＭ２やＳＲＡＭ６）や暗号演算器７などが挙げられる。
【００２６】
マスタ１０１からスレーブ１２１に対してライト及びリードのリクエストを行う様な状況において、スレーブ１２１が有する記憶領域には、それぞれ或るアドレス領域が割り当てられており、マスタ１０１がスレーブ１２１に対してデータ転送を行う場合、マスタ１０１は、スレーブ１２１の記憶領域を示すアドレスを示すアドレス情報を含むデータ転送リクエストをデータ転送システム１００に対して出力する。
【００２７】
図３は、データ転送システム１００の内部構成例を示す図である。
データ転送システム１００は、Ｍ１と接続されるＭ１バッファ１０５、Ｍ２と接続されるＭ２バッファ１１５、Ｍ１バッファ１０５及びＭ１と接続されるＭ１リクエストセレクタ２０１、Ｍ２バッファ１１５及びＭ２と接続されるＭ２リクエストセレクタ２１１、Ｍ１リクエストセレクタ２０１、Ｍ２リクエストセレクタ２１１及びＳ１と接続されるＳ１アービタ２０５並びに、Ｍ１リクエストセレクタ２０１、Ｍ２リクエストセレクタ２１１及びＳ２と接続されるＳ２アービタ２１５を有する。
【００２８】
Ｍ１バッファ１０５（Ｍ２バッファ１１５）は、Ｍ１（Ｍ２）から送信されたリクエスト及びデータの情報を格納する。Ｍ１リクエストセレクタ２０１（Ｍ２リクエストセレクタ２１１）は、Ｍ１（Ｍ２）とＭ１バッファ１０５（Ｍ２バッファ１１５）から送信されるデータ転送リクエストのスレーブへの転送の制御を行う。Ｓ１アービタ２０５（Ｓ２アービタ２１５）は、Ｓ１（Ｓ２）とＭ１リクエストセレクタ２０１及びＭ２リクエストセレクタ２１１との間のリクエスト及びデータの転送を制御する。
【００２９】
各装置間は一本又は複数本の信号線にて相互に接続されている。尚、以下信号の種類毎に異なる信号線で各装置が相互に接続されているとして説明するが、これら複数の信号線が一纏まりとなった構成も考えられる。
【００３０】
１０２は、Ｍ１リクエストセレクタ２０１からＭ１へ出力されるアックを送信する信号線である。１０３は、Ｍ１からＭ１リクエストセレクタ２０１及びＭ１バッファ１０５へ出力されるデータ転送リクエストが流れる信号線である。信号線１０３で送信されるデータ転送リクエストにはライト及びリードのコマンドとスレーブの所定の記憶領域を指定するアドレス情報が含まれる。１０４は、Ｍ１、Ｍ１リクエストセレクタ及びＭ１バッファ１０５との間で入出力されるデータを転送する信号線である。
【００３１】
１０６は、Ｍ１バッファ１０５の書換えを行う為の制御信号をＭ１リクエストセレクタ２０１から送信する際に使用される信号線である。１０７は、Ｍ１バッファ１０５に格納されたＭ１のデータ転送リクエストをＭ１リクエストセレクタ２０１へ出力する際に使用される信号線である。１０８は、Ｍ１バッファ１０５からＭ１リクエストセレクタ２０１へのデータの転送の際に使用される信号線である。
【００３２】
Ｍ１リクエストセレクタ２０１は、信号線１０３を介して受信したＭ１のデータ転送リクエスト及びＭ１バッファ１０５から信号線１０７を介して受信したＭ１のデータ転送リクエストの中から有効であるデータ転送リクエストを選択し、選択したデータ転送リクエストを信号線２０３を介してＳ１アービタ２０５又はＳ２アービタ２１５へデータ転送リクエストとして出力する。
【００３３】
また、Ｍ１からのデータ転送リクエストをＳ１アービタ２０５又はＳ２アービタ２１５に出力している状態において、データ転送リクエストの対象となるスレーブと接続されたアービタ（Ｓ１アービタ２０５又はＳ２アービタ２１５）から返されるアックにより、Ｍ１リクエストセレクタ２０１は、対象スレーブへ次のデータ転送リクエストが送信可能かどうかを判断し、Ｍ１へのアックの送信及びＭ１バッファ１０５への制御信号の送信を行う。具体的には、次のデータ転送リクエストが送信可能、即ちＳ１又はＳ２アービタに対してデータ転送リクエストを出力している間にアックがＳ１又はＳ２アービタから返ってきていれば、Ｍ１リクエストセレクタ２０１は、Ｍ１に対するアックの有効を維持する。一方、送信不可であればＭ１へのアックを無効にし、送信不可なデータ転送リクエストをＭ１バッファ１０５に格納する為にＭ１バッファ１０５へ制御信号を送信する。更にＭ１リクエストセレクタ２０１は、データ転送時に信号線１０４を介してＭ１とデータを送受信し、信号線２０４を介してスレーブ１２１とデータの送受信を行う。
【００３４】
２０３は、Ｍ１リクエストセレクタ２０１からＳ１アービタ２０５又はＳ２アービタ２１５に出力されるデータ転送リクエストの転送に使用される信号線である。２０４は、Ｍ１リクエストセレクタ２０１、Ｓ１アービタ２０５及びＳ２アービタ２１５間でのデータの送受信に使用される信号線である。
【００３５】
Ｓ１は、信号線１２２を介してＳ１アービタ２０５から入力されるデータ転送リクエストの情報に従って、対応するデータを、信号線１２３を介してＳ１アービタ２０５へ転送する。信号線２０２は、Ｓ１アービタ２０５からＭ１リクエストセレクタ２０１及びＭ２リクエストセレクタ２１１へ出力されるアックを転送する信号線である。Ｓ１アービタ２０５は、Ｍ１リクエストセレクタ２０１及びＭ２リクエストセレクタ２１１からのデータ転送リクエストに対して競合判定を行い、Ｍ１リクエストセレクタ２０１又はＭ２リクエストセレクタ２１１にアックを出力する。また、Ｓ１アービタ２０５は、データ転送時には信号線２０４、２１４を介してＳ１、Ｍ１リクエストセレクタ２０１及びＭ２リクエストセレクタ２１５との間のデータ転送を制御する。
【００３６】
Ｍ２、Ｍ２リクエストセレクタ２１１、Ｍ２バッファ２１５、Ｓ１アービタ２０５、Ｓ２アービタ２１５、Ｓ１及びＳ２との間のリクエスト、アック及びデータの送受信は、上述したＭ１とＭ１リクエストセレクタ等でのデータ等の転送と同じようにして行われる。ただし、Ｍ２とＭ２リクエストセレクタ間でのアック、リクエスト及びデータの送受信には、信号線１１２、１１３、１１４が使用される。又、Ｍ２リクエストセレクタ２１１とＭ２バッファとの間でのデータ等の遣り取りには、信号線１１６、１１７、１１８が使用される。更に、Ｍ２リクエストセレクタ２１１とＳ１アービタ２０５並びにＳ２アービタ２１５との間でのデータ等の遣り取りには、信号線２１２、２１３、２１４が使用される。又、Ｓ２とＳ２アービタ２１５との間のデータ等の遣り取りには、信号線１３２、１３３が使用される。
【００３７】
以下、Ｍ１がＳ１、Ｓ２へ交互にリクエストを発行する場合と、Ｍ１とＭ２がＳ１へ並行してリクエストを発行する場合について説明する。最初に前者の場合について説明する。
まず、Ｍ１リクエストセレクタ２０１は信号線１０２を介してアックをＭ１に対して出力しておき、Ｍ２リクエストセレクタ２１１は信号線１１２を介してアックをＭ２に対して出力しておく。この状態でＭ１がＳ１へデータ転送等を要求する場合、Ｓ１が有する記憶領域に割り振られたアドレスを指定するアドレス情報及びライト又はリードコマンドを含むデータ転送リクエストを、Ｍ１はＭ１リクエストセレクタ２０１に出力する。
【００３８】
Ｍ１リクエストセレクタ２０１は、受信したデータ転送リクエストがＭ１から出力されたサイクルと同一のサイクルにおいて、データ転送リクエストに含まれるアドレス情報に従って、Ｓ１に対するデータ転送リクエストをＳ１アービタ２０５に対して出力する。Ｍ１リクエストセレクタからデータ転送リクエストを受信したＳ１アービタ２０５は、競合判定を行う。
【００３９】
この時点では他のマスタ１０１からのデータ転送リクエストがない為、Ｓ１アービタ２０５はリクエストに対するアックを信号線２０２を介してＭ１リクエストセレクタ２０１に出力する。以上説明したように、データ転送リクエストがＭ１からＭ１リクエストセレクタ２０１に出力されてＳ１アービタ２０５が競合判定を終了し、Ｓ１アービタ２０５がＭ１リクエストセレクタ２０１にアックを返すまでが１サイクルで完了する。
【００４０】
そして次のサイクルで、Ｓ１アービタ２０５はＳ１へＭ１リクエストセレクタ２０１から受信したデータ転送リクエストを信号線１２２を介して送信する。一方、Ｍ１においては既にＳ１へ転送したデータ転送リクエストがデータ転送システム１００に許可され、かつＭ１リクエストセレクタ２０１からＭ１へ信号線１０２を介してアックが送信されている為、Ｍ１はＳ２に対するデータ転送リクエストを出力することができる。この場合、Ｓ２に対するデータ転送リクエストを受信したデータ転送システム１００は、Ｓ１へのデータ転送リクエストを受信した場合と同様な手続きを行う。
【００４１】
以上の処理によって、Ｍ１はＳ１とＳ２とに交互にデータ転送を要求する場合でも、連続したサイクルでデータ転送リクエストを出力する事が可能となる。即ち、頻繁にデータ転送リクエストを行う対象スレーブを変更してもマスタにおけるデータ転送スループットは低下しない。データ転送リクエストがライトの場合、データ転送リクエストに付随するデータは、データ転送リクエストと同一サイクルで信号線１０４等を介してマスタ１０１からスレーブ１２１へ送信される。一方、データ転送リクエストがリードの場合、データ転送リクエストを受信したスレーブ１２１から、データ転送リクエストに応じたデータが信号線１２３等を介してマスタ１０１へ出力される。
尚、これらのデータの入出力はスレーブのデータ入出力の特徴に合わせたものであれば良く、独自のプロトコルを使用して構わない。
【００４２】
図４は、Ｍ１からＳ１とＳ２へ交互にデータ転送リクエストが発行される場合の、信号入出力のタイミングチャートを示す図である。１サイクル目（あるいはそれ以前）から、Ｍ１には信号線１０２を介してアックが入力されている。そして２サイクル目においてＭ１がＳ１に対するデータ転送リクエストをデータ転送システム１００へ出力する。ここでは簡単の為、データ転送リクエストの内容をライトとし、データがデータ転送リクエストと同時に信号線１０４に出力されるとする。
【００４３】
このデータ転送リクエストとデータは３サイクル目においてＳ１に出力され、２サイクル目におけるＭ１からＳ１へのデータ転送リクエストの送信が完了する。一方、Ｍ１は２サイクル目のデータ転送リクエストが許可されたので、３サイクル目でＳ２に対するデータ転送リクエストを出力する。このリクエストは４サイクル目でＳ２へ出力される。以上の動作で、Ｍ１はＳ１及びＳ２へのリクエストを連続したサイクルで交互に実行することができる。
【００４４】
次に、Ｍ１とＭ２からのＳ１へのデータ転送リクエストが競合する場合について説明する。
まず、Ｍ１リクエストセレクタ２０１は、信号線１０２を介してアックをＭ１に対して出力し、Ｍ２リクエストセレクタ２１１は信号線１１２を介してアックをＭ２に対して出力しておく。この状態でＭ１とＭ２は、Ｓ１の記憶領域を示すアドレス情報及びライト又はリードコマンドを含むデータ転送リクエストを、それぞれＭ１リクエストセレクタ２０１、Ｍ２リクエストセレクタ２１１に出力する。
【００４５】
Ｍ１からデータ転送リクエストが出力されたサイクルと同じサイクルにおいて、Ｍ１リクエストセレクタ２０１はＭ１から受信したデータ転送リクエストに含まれるアドレス情報に従って、Ｓ１に対するデータ転送リクエストをＳ１アービタ２０５に対して信号線２０３を介して出力する。一方、Ｍ２リクエストセレクタ２１１は、Ｍ２から受信したデータ転送リクエストに含まれるアドレス情報に従って、Ｓ１に対するデータ転送リクエストをＳ１アービタ２０５に対して信号線２１３を介して出力する。
【００４６】
信号線２０３及び信号線２１３を介してＭ１からのデータ転送リクエスト及びＭ２からのデータ転送リクエストを受信したＳ１アービタ２０５は、受信したデータ転送リクエストの間で競合判定を行う。ここではＭ１の優先順位が高いと仮定して説明する。Ｍ１の優先順位が高い為、Ｓ１アービタ２０５はＭ１から受信したデータ転送リクエストを選択し、信号線２０２を介してアックをＭ１リクエストセレクタ２０１に出力する。
【００４７】
尚、データ転送システムは、この優先順位に関する情報をバッファ等に保持している。また、この優先順位は他の装置からの情報に基づいて設定や変更を可能としても良いし、予め固定値が設定されていても良い。更に、優先順位が固定されておらず、公知の方法、例えばサイクリックに優先順位を与える、あるいはランダムで処理順を設定する構成も考えられる。
【００４８】
一方、Ｍ２リクエストセレクタ２１１はデータ転送リクエストをＳ１に出力しているにも関わらずアックが返って来ない為、データ転送リクエストが許可されていないと判断して、Ｍ２バッファを制御する信号を信号線１１６を介してＭ２バッファ１１５に出力する。この制御信号は、Ｍ２リクエストセレクタ２１１が、Ｍ２から受信したデータ転送リクエストを一時Ｍ２バッファ１１５に格納する処理を制御、具体的にはＭ２バッファ１１５へのデータの格納を許可するための信号である。この際、Ｍ２リクエストセレクタ２１１は、次サイクルからはＭ２バッファ１１５に格納されたデータ転送リクエストをデータ転送リクエストの競合判定に使用するために、Ｍ２バッファ１１５へ制御信号を出力した事実、即ちＭ２バッファ１１５にデータ転送リクエストが格納されていることを示す情報を保持しておく。
【００４９】
そして次のサイクルにおいて、Ｓ１アービタ２０５はＭ１から受信したデータ転送リクエストをＳ１に出力する。これにより、Ｍ１からＳ１へのデータ転送リクエストの送信が完了する。一方、Ｍ２のＳ１に対するデータ転送リクエストはＳ１に送信されなかった為、Ｍ２リクエストセレクタ２１１はＭ２に対するアックを下げる。ここで、送信されなかったＭ２のデータ転送リクエストは、Ｍ２リクエストセレクタ２１１から制御信号を受けたＭ２バッファ１１５で、データ転送リクエスト及びそのデータ転送リクエストに付随するデータのペアとして保持される。
【００５０】
その後Ｍ２バッファ１１５は、自身に格納されたデータ転送リクエストと付随するデータを、信号線１１７、１１８を介してＭ２リクエストセレクタ２１１へ出力し続ける。
【００５１】
Ｍ１からのデータ転送リクエストの処理が実行された後、Ｓ１アービタ２０５は、Ｍ２リクエストセレクタ２１１から送信されつづけているデータ転送リクエストについて競合判定を行う。この場合、Ｍ２リクエストセレクタ２１１は、先の処理においてＭ２バッファへ制御信号を出力している情報を保持している為、Ｍ２バッファ１１５から受信したデータ転送リクエストをＭ２のデータ転送リクエストと判断し、受信したデータ転送リクエストを信号線２１３を介してＳ１アービタ２０５へ出力している。この場合、Ｍ１からのデータ転送リクエストがないと仮定しているので、Ｓ１アービタ２０５は、受信したデータ転送リクエストの処理を許可し、Ｍ２リクエストセレクタ２１１に対してアックを返す。
【００５２】
Ｓ１アービタ２０５からアックを受信したＭ２リクエストセレクタ２１１は、信号線１１２を介してアックを再びＭ２に返す。又、Ｍ２リクエストセレクタ２１１は、Ｍ２バッファ１１５に格納されたデータ転送リクエストの使用を停止（無効化）するために、自身が保持していたＭ２バッファ１１５に制御信号を出力していたことを示す情報、すなわちＭ２バッファ１１５にデータ転送リクエストが格納されていることを示す情報を削除する。
【００５３】
尚、Ｍ１からのデータ転送リクエストがあった場合には、上述したようにＳ１アービタ２０５で再度Ｍ１とＭ２から送信されたデータ転送リクエストの競合判定がされる。ここではＭ１の優先順位が高いので、Ｍ２バッファ１１５に格納されているデータ転送リクエストの処理は見送られ、Ｍ２バッファ１１５に格納されたデータ転送リクエストはそのまま保持される。
【００５４】
次のサイクルにおいて、Ｓ１アービタ２０５はＭ２リクエストセレクタ２１１から受信したデータ転送リクエストをＳ１に出力する。これにより、Ｍ２からＳ１へのデータ転送リクエストの送信が完了する。一方、先サイクルにおいてＭ２バッファ１１５のデータは無効化されているので、Ｍ２リクエストセレクタ２１１は、信号線１１７から受信するデータ転送リクエストではなく、信号線１１３から受信するＭ２からのデータ転送リクエストを再びＳ１アービタ２０５又はＳ２アービタ２１５へ転送するようになる。
【００５５】
以上により、複数のマスタ１０１からＳ１へリクエストが競合した場合でも、Ｓ１へのデータ転送リクエストを連続サイクルで処理する事が可能となる。データの入出力に関しては、Ｍ１からＳ１、Ｓ２へ交互にデータ転送リクエストが送信される場合と同様である。
【００５６】
図５は、Ｓ１においてＭ１とＭ２のデータ転送リクエストが競合する場合における信号入出力のタイミングチャート例を示す図である。１サイクル目においてＭ１にはＭ１リクエストセレクタ２０１からアックが入力されており、Ｍ２にはＭ２リクエストセレクタ２１１からアックが入力されている。そして２サイクル目において、Ｍ１がＳ１に対するデータ転送リクエストを出力し、Ｍ２がＳ１に対するデータ転送リクエストを出力する。先述同様、ここではデータ転送リクエストの内容をライトとし、Ｍ１からはデータ転送リクエストとともにそれに付随するデータが、Ｍ２からはデータ転送リクエストとともにそれに付随するデータが信号線１０４及び１１４を介して各々Ｍ１リクエストセレクタ２０１及びＭ２リクエストセレクタ２１１へ送信される。
【００５７】
２サイクル目においてＳ１に対するデータ転送リクエストの競合が発生している為、データ転送システム１００内部、具体的にはＳ１アービタ２０５で競合判定が行われる。その結果、本例では３サイクル目においてＳ１に対してＭ１のデータ転送リクエストが出力される。一方、Ｍ２ではデータ転送リクエストの送信が許可されなかった為、Ｍ２へのアックが下がり、２サイクル目にＭ２から出力されたデータ転送リクエストはＭ２バッファ１１５に格納される。
【００５８】
その後のサイクルにおいて、Ｍ１から次のデータ転送リクエストが入力され、Ｍ２からも次のデータ転送リクエストが入力される。しかしデータ転送システム１００はＭ２のデータ転送リクエストを受け付けず、それ以前に転送されＭ２バッファ１１５に格納されているデータ転送リクエストと新たに受取ったＭ１のデータ転送リクエストとで競合判定を行う。
【００５９】
競合判定を行った結果、４サイクル目においてＳ１に対してＭ１のデータ転送リクエストが出力される。３サイクル目におけるＭ２のデータ転送リクエストはまだＳ１に対して出力できていない為、Ｍ２に対するデータ転送システム１００からのアックはまだ下がったままである。したがって、Ｍ２はデータ転送リクエストをデータ転送システム１００に出力し続ける。本図の例では、Ｍ２は、Ｍ１のデータ転送リクエストの処理が終了した後の７サイクル目までデータ転送リクエストの転送を続ける。
【００６０】
そして、６サイクル目においてＭ１からのデータ転送リクエストの処理が終了すると、データ転送システム１００は、Ｍ２バッファ１１５に格納されているデータ転送リクエストがＳ１へ送信可能と判断し、７サイクル目においてそのデータ転送リクエストをＳ１に対して出力する。これにより、データ転送システム１００はアックをＭ２に再び返す。アックを受信したＭ２は３サイクル目からデータ転送システム１００に送信していたデータ転送リクエストが許可されたと判断し、８サイクル目に更に次のデータ転送リクエストを出力する。７サイクル目で許可されたデータ転送リクエストに基づいて、８サイクル目でそのデータ転送リクエストがＳ１に送信される。８サイクル目で送信されたデータ転送リクエストは、９サイクル目にＳ１へ出力される。９サイクル目のＭ２からのリクエスト、１０サイクル目のＳ１への出力も同様である。以上の動作から、Ｍ１とＭ２のリクエストが競合した場合においても、Ｓ１へのリクエストを連続サイクルで行う事が可能となる。
【００６１】
本実施形態によれば、マスタのリクエストと同一サイクルでデータ転送システム１００がアックを返せる為、マスタが異なるスレーブに対してリクエストを切り替えてもデータ転送スループットが低下しない。
【００６２】
又、本実施形態によれば、複数のマスタのリクエストが競合してもスレーブにおけるデータ転送スループットが低下しない。一方、マスタのリクエストをバッファに格納した時にデータ転送システム１００がそのリクエストを出力したマスタのアックを下げ、バッファに格納したリクエストを対象スレーブに対して出力した時に再びアックを返す事で正常なデータ転送システムとして動作する為、バッファはそれぞれのマスタに対して１リクエスト分のサイズのものを設ければ良い。
【００６３】
尚、マスタやスレーブの数は幾つでもよく、この場合、データ転送システム１００は、スレーブの数に対応するアービタを有し、そのアービタ毎にデータ転送リクエストの競合判定が行われる。
【図面の簡単な説明】
【００６４】
【図１】本実施形態のシステム構成例を示す図である。
【図２】マスタ及びスレーブとデータ転送システムの構成例を示す図である。
【図３】データ転送システムの内部構成例を示す図である。
【図４】実施形態における単一マスタから複数スレーブへの交互リクエスト時におけるタイミングチャートの例を示す図である。
【図５】実施形態における複数マスタから単一スレーブへのリクエスト競合時におけるタイミングチャートの例を示す図である。
【符号の説明】
【００６５】
１００…データ転送システム、１０１…Ｍ１、１０５…Ｍ１バッファ、１１１…Ｍ２、１１５…Ｍ２バッファ、１２１…Ｓ１、１３１…Ｓ２、２０１…Ｍ１リクエストセレクタ、２１１…Ｍ２リクエストセレクタ。
【図１】
2005107771.tif 000003
【図２】
2005107771.tif 000004
【図３】
2005107771.tif 000005
【図４】
2005107771.tif 000006
【図５】
2005107771.tif 000007