(57)【特許請求の範囲】
【請求項１】
ひとつの入力ポートから複数の出力ポートの何れかへ複数のデータ転送するバッファ制御装置であって、前記データには転送順序を保証する必要の有無を示す転送保証情報と出力先ポートを指定するポート情報が格納され、複数のバッファを有する待ち行列バッファと、前記データを前記バッファのうちのひとつへ保持する手段と、前記転送保証情報により前記転送順序を保証するか判断する順序保証判断手段と、前記ポート情報により前記データの出力先の前記出力ポートのビジー状態を判断するビジー検出手段と、前記待ち行列バッファ内の先頭に格納されている前記データを前記待ち行列バッファの前記データが格納済の最後尾へローテートする手段と前記待ち行列バッファ内のすべての前記データを一段先頭の前記バッファに向けてシフトする手段を有し、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートがビジー状態で転送不可能な場合で、かつ前記転送保証情報を参照し前記データの転送順序を保証する必要がない場合は、前記待ち行列バッファ内の先頭に格納されている前記データを前記待ち行列バッファ内の前記データが格納済の最後尾にローテートし、前記待ち行列バッファに格納されているすべてのデータを前記待ち行列バッファの先頭にむけて一段移す制御を行い、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートがビジー状態で転送不可能な場合で、かつ前記転送保証情報を参照し前記データの転送順序を保証する必要がある場合は、前記ビジー状態の解除を待ち、前記ビジー状態が解除されると前記データを前記出力ポートへ転送する制御を行い、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートが転送可能な場合に、前記データを前記出力ポートへ転送し、前記待ち行列バッファに格納されているすべてのデータを前記待ち行列バッファの先頭にむけて一段移す制御を行う手段を有することを特徴とするバッファ制御装置。
【請求項２】
ひとつの入力ポートから複数の出力ポートの何れかへ複数のデータ転送するバッファ制御方法であって、前記データには転送順序を保証する必要の有無を示す転送保証情報と出力先ポートを指定するポート情報が格納され、前記データを待ち行列バッファを構成するバッファのうちのひとつへ保持する第一の手順と、前記転送保証情報により前記転送順序を保証するか判断する第二の手順と、前記ポート情報により前記データの出力先の前記出力ポートのビジー状態を判断する第三の手順と、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートがビジー状態で転送不可能な場合で、かつ前記転送保証情報を参照し前記データの転送順序を保証する必要がない場合は、前記待ち行列バッファ内の先頭に格納されている前記データを前記待ち行列バッファの前記データが格納済の最後尾にローテートし、前記待ち行列バッファに格納されているすべてのデータを前記待ち行列バッファの先頭にむけて一段移す制御を行い、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートがビジー状態で転送不可能な場合で、かつ前記転送保証情報を参照し前記データの転送順序を保証する必要がある場合は、前記ビジー状態の解除を待ち、前記ビジー状態が解除されると前記データを前記出力ポートへ転送する制御を行い、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートが転送可能な場合に、前記データを前記出力ポートへ転送し、前記待ち行列バッファに格納されているすべてのデータを前記待ち行列バッファの先頭にむけて一段移す制御を行う第四の手順と、前記第二から第四の手順を前記待ち行列バッファ内の前記データに対し繰り返し行う第五の手順を有することを特徴とするバッファ制御方法。
【請求項３】
第一のポートから複数の第二のポートへデータを転送する汎用ポート制御装置であって、前期第二のポートから前記第一のポートへ前記データを転送する際に、前記第二のポートへ接続する入力バッファから入力選択部を経て緩衝バッファを経て前記第一のポートヘ転送する第一の転送手段と、前記第一のポートから前記第二のポートへ前記データを転送するときに請求項２記載のバッファ制御装置が動作することを特徴とする汎用ポート制御装置。
【請求項４】
複数の入出力装置と主記憶装置を請求項３記載の汎用ポート制御装置により接続したことを特徴とする入出力システム。
【請求項５】
複数の演算処理装置と複数の入出力装置と主記憶装置と主記憶装置を制御する主記憶制御装置と複数のキャッシュと前記キャッシュを制御するキャッシュ制御装置と請求項３記載の汎用ポート制御装置を有し、前記演算処理装置と前記主記憶制御装置は前記キャッシュ制御装置へ接続され、前記キャッシュ制御装置と前記入出力装置は前記汎用ポート制御装置へ接続されることを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は情報処理装置におけるデータ転送に関し、特に転送データの順序保証が必要がないときの転送方式に関する。
【０００２】
【従来の技術】
従来の技術では、ある一つの系から複数個実装される出力ポートの何れかへのデータ転送において、受け付けたデータを一旦待ち行列バッファに保持し、そのデータの示す出力先指定と出力先ポートからのビジー条件を判定して転送を行う時、大規模なデータ転送のような順序保証の必要ないデータを転送する場合においても、待ち行列バッファの先頭が転送される出力先ポートがビジーの場合にはビジーが解除されるまで転送を待たせていた。
【０００３】
また、別の従来の技術では、本発明に類似してある一つの系に実装される待ち行列バッファをシフト方式で行っているが、出力先のビジーを監視してデータをローテートする機能はなく、シフトとデータ出力の制御は任意の待ち行列バッファから抽出して出力し、歯抜けたエントリをシフト動作で埋めるといった方式であった。
【０００４】
特許２５８１１３１号「送信待ちキュー管理方式」では、複数ビットのレジスタを多段接続して成るシフトレジスタによる送信待ちキュー管理方式において、送信要求があった場合に、送信要求位置に送達確認数とシフト数とを加減算して補正した送信位置を割り出す構成とし、シフト完了を待つこと無しに送信動作に入れるキュー管理方式が開示されている。
【０００５】
【発明が解決しようとする課題】
従来の技術では、ある一つの系から複数個実装される出力ポートの何れかへのデータ転送において、受け付けたデータを一旦待ち行列バッファに保持し、そのデータの示す出力先指定と出力先ポートからのビジー条件を判定して転送を行う時、大規模なデータ転送のような順序保証の必要ないデータを転送する場合においても、待ち行列バッファの先頭が転送される出力先ポートがビジーの場合にはビジーが解除されるまで転送を待たせてしまうため、特定ポートのビジーが全てのポートの転送性能に大きな影響を与えるという欠点がある。
【０００６】
また、別の従来の技術では、本発明に類似してある一つの系に実装される待ち行列バッファをシフト方式で行っているが、出力先のビジーを監視してデータをローテートする機能はなく、シフトとデータ出力の制御は任意の待ち行列バッファから抽出して出力し、歯抜けたエントリをシフト動作で埋めるといった方式であるため、抽出エントリの判定、歯抜けを埋めるシフト範囲の判定、抽出データの任意選択制御と選択回路と大規模なＨＷ資源を投資する必要があった。
【０００７】
特許２５８１１３１号「送信待ちキュー管理方式」は、出力先指定と出力先ポートからのビジー条件を判定して転送を行うことはできない。
【０００８】
本発明の目的は、ある一つの系から複数個実装される出力ポートの何れかへのデータ転送において、受け付けたデータを一旦待ち行列バッファに保持し、そのデータの示す出力先指定と出力先ポートからのビジー条件を判定して転送を行う時、待ち行列バッファを先頭から登録済み最後尾へローテートする機能を持つシフトレジスタで制御することによって、大規模なデータ転送のような順序保証の必要ないデータが出力先ポートのビジーで転送不可能な場合にこれを待ち行列バッファの登録済み最後尾にローテートすることを可能にし、同時に既に待ち行列バッファに登録済みの後続データをシフト動作させて次のデータを待ち行列バッファの先頭に移す、という制御を行うことで、出力先ポートがビジーでないデータを可能な限り優先して転送可能にし、少ないＨＷ資源かつ待ち行列バッファそれぞれのエントリの作りが１種N個という実現容易な構成で転送性能を向上させることである。
【０００９】
【課題を解決するための手段】
本発明第一のバッファ制御装置は、ひとつの入力ポートから複数の出力ポートの何れかへ複数のデータ転送するバッファ制御装置であって、前記データには転送順序を保証する必要の有無を示す転送保証情報と出力先ポートを指定するポート情報が格納され、複数のバッファを有する待ち行列バッファと、前記データを前記バッファのうちのひとつへ保持する手段と、前記転送保証情報により前記転送順序を保証するか判断する順序保証判断手段と、前記ポート情報により前記データの出力先の前記出力ポートのビジー状態を判断するビジー検出手段と、前記待ち行列バッファ内の先頭に格納されている前記データを前記待ち行列バッファの前記データが格納済の最後尾へローテートする手段と前記待ち行列バッファ内のすべての前記データを一段先頭の前記バッファに向けてシフトする手段を有し、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートがビジー状態で転送不可能な場合で、かつ前記転送保証情報を参照し前記データの転送順序を保証する必要がない場合は、前記待ち行列バッファ内の先頭に格納されている前記データを前記待ち行列バッファ内の前記データが格納済の最後尾にローテートし、前記待ち行列バッファに格納されているすべてのデータを前記待ち行列バッファの先頭にむけて一段移す制御を行い、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートがビジー状態で転送不可能な場合で、かつ前記転送保証情報を参照し前記データの転送順序を保証する必要がある場合は、前記ビジー状態の解除を待ち、前記ビジー状態が解除されると前記データを前記出力ポートへ転送する制御を行い、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートが転送可能な場合に、前記データを前記出力ポートへ転送し、前記待ち行列バッファに格納されているすべてのデータを前記待ち行列バッファの先頭にむけて一段移す制御を行う手段を有する。
【００１１】
本発明第一のバッファ制御方法は、ひとつの入力ポートから複数の出力ポートの何れかへ複数のデータ転送するバッファ制御方法であって、前記データには転送順序を保証する必要の有無を示す転送保証情報と出力先ポートを指定するポート情報が格納され、前記データを待ち行列バッファを構成するバッファのうちのひとつへ保持する第一の手順と、前記転送保証情報により前記転送順序を保証するか判断する第二の手順と、前記ポート情報により前記データの出力先の前記出力ポートのビジー状態を判断する第三の手順と、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートがビジー状態で転送不可能な場合で、かつ前記転送保証情報を参照し前記データの転送順序を保証する必要がない場合は、前記待ち行列バッファ内の先頭に格納されている前記データを前記待ち行列バッファの前記データが格納済の最後尾にローテートし、前記待ち行列バッファに格納されているすべてのデータを前記待ち行列バッファの先頭にむけて一段移す制御を行い、前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートがビジー状態で転送不可能な場合で、かつ前記転送保証情報を参照し前記データの転送順序を保証する必要がある場合は、前記ビジー状態の解除を待ち、前記ビジー状態が解除されると前記データを前記出力ポートへ転送する制御を行い、前記前記待ち行列バッファ内の先頭に格納されている前記データの出力先の前記出力ポートが転送可能な場合に、前記データを前記出力ポートへ転送し、前記待ち行列バッファに格納されているすべてのデータを前記待ち行列バッファの先頭にむけて一段移す制御を行う第四の手順と、前記第二から第四の手順を前記待ち行列バッファ内の前記データに対し繰り返し行う第五の手順を有することを特徴とするバッファ制御方法。
【００１２】
本発明の汎用ポート制御装置は、第一のポートから複数の第二のポートへデータを転送する汎用ポート制御装置であって、前期第二のポートから前記第一のポートへ前記データを転送する際に、前記第二のポートへ接続する入力バッファから入力選択部を経て緩衝バッファを経て前記第一のポートヘ転送する第一の転送手段と、前記第一のポートから前記第二のポートへ前記データを転送するときに本発明第一のバッファ制御装置が動作する。
【００１３】
本発明の入出力システムは複数の入出力装置と主記憶装置を本発明の汎用ポート制御装置により接続した。
【００１４】
本発明の情報処理装置は、複数の演算処理装置と複数の入出力装置と主記憶装置と主記憶装置を制御する主記憶制御装置と複数のキャッシュと前記キャッシュを制御するキャッシュ制御装置と本発明の汎用ポート制御装置を有し、前記演算処理装置と前記主記憶制御装置は前記キャッシュ制御装置へ接続され、前記キャッシュ制御装置と前記入出力装置は前記汎用ポート制御装置へ接続される。
【００１５】
【発明の実施の形態】
次に、本発明の実施の形態について図面を参照して詳細に説明する。図１は、本発明実施の形態のバッファ制御装置の構成を示すブロック図である。図１で、波線はセレクタ、シフトバッファ、出力先指定と順序補償情報が複数あるが省略して記述してある。
【００１６】
以下の本文において、nとNは整数であり、1<n<Nの関係を持つ。また、iとIは整数であり、1<i<Iの関係を持つ。
【００１７】
図１において、データ受付レジスタ000と、出力先指定と順序保証情報受付レジスタ010と、N個のシフトバッファ0(030)、シフトバッファ1(031)からシフトバッファn-1(032)、シフトバッファn(033)、シフトバッファn+1(034)からシフトバッファN(035)と、そのそれぞれが具備するN個の出力先指定と順序保証情報0(040)、出力先指定と順序保証情報1(041)から出力先指定と順序保証情報n-1(042)、出力先指定と順序保証情報n(043)、出力先指定と順序保証情報n+1(044)から出力先指定と順序保証情報N(045)と、そのそれぞれの入力データを選択するN個のセレクタ0(020)、セレクタ1(021)からセレクタn-1(022)、セレクタn(023)、セレクタn+1(024)からセレクタN(025)と、その選択を制御するセレクタ制御部050と、相互間で動作が独立なI個の出力バッファ0(080)、出力バッファ１(081)から出力バッファi(082)から出力バッファI(083)と、そのそれぞれから発行されるビジー信号090と、前記シフトレジスタ0(030)の示す出力先指定と順序保証情報0(040)及び前記ビジー信号090とから、前記シフトバッファ0(030)の前記出力バッファ0(080)、出力バッファ１(081)から出力バッファi(082)から出力バッファI(083)の何れかへの出力の可否を判断する出力制御部060と、前記出力制御部060の判断結果により前記セレクタ制御部050を指示する出力制御情報070とで構成される。
【００１８】
以降の説明において、次のような略した表記を用いる。たとえば、N個のシフトバッファ0(030)、シフトバッファ1(031)からシフトバッファn-1(032)、シフトバッファn(033)、シフトバッファn+1(034)からシフトバッファN(035)を、N個のシフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)のように、インデックスの数字のみとして表記する。それぞれをシフトバッファ1(031)とかシフトバッファ(033)nのようには表記しない。その他の小文字のインデックス、0,1,n,N,i,Iがつくものにつても同様の表記とする。
【００１９】
次に、本発明の実施の形態の動作について図面を参照して説明する。データ転送には、大規模なデータ転送をあらかじめ決められた転送単位に分けて複数回行うといった、最終的に全てのデータが転送完了すればよいという転送過程の転送順序を保証しないものと、制御データの転送や排他制御データのように順序保証が必要なものとに分けられる。本発明は、このようなデータ転送のうち順序保証の必要ない大規模なデータ転送について大きな効果があり、ある一つの系から複数個実装される出力ポートの何れかへデータ転送する際の機能として適用される。
【００２０】
図１において、N個のシフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)は、そのそれぞれのエントリに対応するセレクタ0(020)、1(021)…n-1(022)、n(023)、n+1(024)…N(025)によって選択されたデータを保持する。シフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)に登録されるデータには、それぞれのエントリに対応するN個の出力先指定と順序保証情報0(040)、1(041)…n-1(042)、n(043)、n+1(044)…N(045)が含まれている。
【００２１】
セレクタ0(020)、1(021)…n-1(022)、n(023)、n+1(024)…N(025)の選択動作は、登録選択(新規データの登録)、シフト選択(自エントリより一つ老番のエントリのデータの登録)、ローテート選択(シフトバッファ0(030)のデータの登録)、クリア選択(エントリの無効化)、ホールド選択(自エントリのデータを保持)の５種類に分類される。
【００２２】
ただし、シフトバッファ0(030)においてはローテート選択とホールド選択は共にシフトバッファ0(030)自身の登録なので同一動作となり、シフトバッファN(035)においては以降に老番エントリが存在しないのでシフト選択は存在しない。セレクタ0(020)、1(021)…n-1(022)、n(023)、n+1(024)…N(025)の選択制御の指示はセレクタ制御部050で行われるが、何も登録されていないエントリに対する選択制御の指示は常にホールド選択(動作せず)となるように制御される。
【００２３】
まず、データ受付レジスタ000及び出力先指定と順序保証情報受付レジスタ010は、ある一つの系からの転送データを受け付ける。データ受付レジスタ000で受け付けたデータは、シフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)の何れかのエントリに常に若番優先で登録される。
【００２４】
同様に、出力先指定と順序保証情報受付レジスタ010で受け付けたデータは、出力先指定と順序保証情報0(040)、1(041)…n-1(042)、n(043)、n+1(044)…N(045)の何れかのエントリに常に若番優先かつシフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)に対応して登録される。例えば、シフトバッファ0(030)が空きエントリの場合はシフトバッファ0(030)と出力先指定と順序保証情報0(040)に対応するセレクタ0(020)が登録選択を行い、シフトバッファ0(030)が登録済みでシフトバッファ1(031)が空きエントリの場合はそれぞれに対応してセレクタ0(020)がホールド選択で登録済みデータの保持を選択し、セレクタ1(021)が登録選択でデータ受付レジスタ000及び出力先指定と順序保証情報受付レジスタ010の登録選択を行う。すなわち、シフトバッファ0(030)、1(031)…n-1(032)までが登録済みでシフトバッファn(033)へ登録する場合はそれぞれに対応するセレクタ0(020)、1(021)…n-1(022)までがホールド選択を行い、セレクタn(023)が登録選択を行うことになる。セレクタ0(020)、1(021)…n-1(022)、n(023)、n+1(024)…N(025)の選択制御の指示はセレクタ制御部050で行い、シフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)の登録状況と出力制御部060からの出力制御情報070をもとにデータ受付レジスタ000及び出力先指定と順序保証情報受付レジスタ010のデータを登録すべきエントリを判定して登録選択を指示し、そのエントリよりも若番のエントリには既に登録済みのデータがあるので全てホールド選択を指示する。
【００２５】
このような登録方式を採ることによりシフトバッファ0(030)を先頭に隙間のないデータ登録が実現される。また、シフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)が全て登録済みになった場合は、データの消滅を抑止するためにデータ受付レジスタ000及び出力先指定と順序保証情報受付レジスタ010の登録を待ち合わせる。
【００２６】
実際の動作について、シフトバッファ0(030)、1(031)…n-1(032)、n(033)までが登録済みでシフトバッファn+1(034)…N(035)までが未登録の場合を具体例に説明する。シフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)に登録データが一つ以上あれば、シフトバッファ0(030)を先頭に隙間のないデータ登録が実現されているためシフトバッファ0(030)には必ず登録データが存在し、出力制御部060に対して出力要求を行う。出力要求を受けた出力制御部060は、シフトバッファ0(030)が持つ出力先指定と順序保証情報0(040)を解読する。第一には、出力先ポートが出力バッファ0(080)、1(081)…i(082)…I(083)のうちどのポートであるかを判定する。出力バッファ0(080)、1(081)…i(082)…I(083)からはそのポートそれぞれに対応したビジー信号090が出力制御部060で監視されている。
【００２７】
第二に、ビジー信号090で、判定した出力バッファ(仮に出力バッファi(082)とする)がビジーか否かを判定し、出力バッファi(082)がビジーでない場合は出力制御部060はデータ出力可能と判断してシフトバッファ0(030)のデータを出力バッファi(082)へ転送する。この時、同時に出力制御部060は、転送完了したことを出力制御情報070でセレクタ制御部050へ通知する。セレクタ制御部050は出力制御情報070によって、既に登録済みのシフトセレクタ0(020)、1(021)…n-1(022)へはシフト選択を指示し、セレクタn(023)へはクリア選択を指示する。これにより、シフトバッファ0(030)にこれまで存在したデータは出力バッファi(082)に出力されると共に消滅してシフトバッファ0(030)…n-1(032)へはそれぞれ１エントリずつ老番のシフトバッファ1(031)…n(033)に存在したデータがシフト登録され、シフトバッファn(033)はクリア登録で無効化される。その後、新たなシフトバッファ0(030)のデータによる出力要求が起こり動作は継続される。
【００２８】
一方、ビジー信号090で判定した出力バッファi(082)がビジーの場合は、第三として、出力制御部060はシフトバッファ0(030)が持つ出力先指定と順序保証情報0(040)で順序保証の有無を判定して動作を切り替える。順序保証が必要な場合は、シフトバッファ0(030)のデータは出力バッファi(082)のビジー解除を待ち合わせる。つまりシフトバッファ0(030)、1(032)…n-1(032)、n(033)はホールド選択で自エントリのデータを保持する。順序保証が不要な場合は、シフトバッファ0(030)のデータはローテートが可能であることを出力制御情報070でセレクタ制御部050へ通知する。セレクタ制御部050は、既に登録済みのシフトバッファ0(030)、1(031)…n-1(032)、n(033)のそれぞれのエントリに対応してセレクタ0(020)、1(021)…n-1(022)へはシフト選択を指示し、セレクタn(023)へはローテート選択を指示する。これにより、シフトバッファ0(030)にこれまで存在したデータは登録済み最後尾のシフトバッファn(033)にローテートされ、シフトバッファ0(030)…n-1(032)へはそれぞれ１エントリずつ老番のシフトバッファ1(031)…n(033)に存在したデータがシフト登録される。その後、新たな前記シフトバッファ0(030)のデータによる出力要求により動作は継続され、ローテートされたシフトバッファn(033)のデータはn回のシフト処理のち再びシフトバッファ0(030)へシフトされてきて出力要求を行うことになる。
【００２９】
更に、セレクタ制御部050の選択動作の指示の競合について説明する。競合とは、出力要求に対するシフト選択やローテート選択の動作中、同時に登録選択動作が行われる場合があり得ることを意味する。シフトバッファ0(030)、1(031)…n(033)までが登録済みの場合を具体例に説明する。シフトバッファ0(030)からの出力要求が出力制御部060で受け付けられ、出力制御部060で出力先指定と順序保証情報0(040)から判定した出力先の出力バッファi(082)に対するビジー信号090がビジーでない場合、出力制御部060はシフトバッファ0(030)のデータを出力バッファi(082)へ転送し、転送完了したことを出力制御情報070でセレクタ制御部050へ通知する。この通知と同時にデータ受付レジスタ000及びからの登録が競合した場合、セレクタ制御部050は、既に登録済みのシフトセレクタ0(020)、1(021)…n-1(022)へはシフト選択を指示するが、セレクタn(023)へは登録選択を指示する。これにより、シフトバッファ0(030)にこれまで存在したデータは出力バッファi(082)に出力されると共に消滅し、シフトバッファ0(030)…n-1(032)へはそれぞれ１エントリずつ老番のシフトバッファ1(031)…n(033)に存在したデータがシフト登録される。シフトバッファn(033)へはデータ受付レジスタ000からのデータが新規に登録される。
【００３０】
一方、出力制御部060で判定した出力先の出力バッファi(082)に対するビジー信号090がビジーであった場合、出力先指定と順序保証情報0(040)による順序保証の判定が必要ならばシフトバッファ0(030)、1(031)…n-1(032)、n(033)は何れもホールド選択、不要ならばシフトバッファ0(030)、1(031)…n-1(032)がシフト選択でシフトバッファn(033)がローテート選択と、どちらの判定であってもシフトバッファn(033)は登録済みの状態が維持されるので、シフトバッファn+1(034)にデータ受付レジスタ000のデータが新規に登録される。
【００３１】
このような選択動作の指示を行うセレクタ制御部050について、その選択動作を説明する。今、セレクタn(023)とシフトバッファn(033)の動作に注目すると、シフトバッファn(033)に何らかのデータが登録されるとき、登録済みデータは必ずシフトバッファ0(030)から隙間なく登録されているので、一つ若番のシフトバッファn-1(032)には必ずデータが登録されていることになる。この規則性に従い、シフトバッファn(033)の振る舞いは次のように場合分けされる。
【００３２】
図２のタイミングチャートにおいて、シフトバッファn(033)が未登録で次にデータ受付レジスタ000のデータを登録する時、同時にシフトバッファ0(030)のデータが出力先の出力バッファ(仮に出力バッファi(082)とする)に出力されなければ、データ受付レジスタ000からの新規登録要求は必ずシフトバッファn(033)に登録される。
【００３３】
図３のタイミングチャートにおいて、シフトバッファn(033)が登録済みかつシフトバッファn+1(034)が未登録で、データ受付レジスタ000からデータの新規登録要求があった時、同時にシフトバッファ0(030)のデータが出力先の出力バッファi(082)に出力されたならばシフトバッファn(033)はシフト選択により登録済みのデータがシフトバッファn-1(032)へシフトするので、シフトバッファn+1(034)でなくシフトバッファn(033)へ登録が可能になる。
【００３４】
図４のタイミングチャートにおいて、シフトバッファn(033)が登録済みかつシフトバッファn+1(034)が未登録でデータ受付レジスタ000からの新規登録がない時、同時にシフトバッファ0(030)のデータが出力先の出力バッファi(082)に出力されていれば、シフトバッファn(033)はシフト選択により登録済みのデータがシフトバッファn-1(032)へシフトしてシフトバッファn(033)へはシフトバッファn+1(034)が未登録なためクリア選択により無効化される。
【００３５】
図５のタイミングチャートにおいて、シフトバッファn(033)が登録済みかつシフトバッファn+1(034)が未登録でデータ受付レジスタ000からの新規登録がない時、同時にシフトバッファ0(030)のデータが出力先の出力バッファi(082)がビジーでシフトバッファ0(030)のデータが登録済み最後尾にローテートされるならば、シフトバッファn(033)のデータはシフトバッファn-1(032)にシフトし、シフトバッファn(033)はローテート選択によりシフトバッファ0(030)のデータがローテートして登録される。
【００３６】
図６及び図７のタイミングチャートにおいて、シフトバッファn(033)が登録済みかつシフトバッファn+1(034)も登録済みの時、シフトバッファ0(030)のデータが出力先の出力バッファi(082)に出力されるか、ビジーのため登録済み最後尾にローテートされるならば、シフトバッファn(033)はシフト選択によりシフトバッファn+1(034)のデータがシフトして登録される。
【００３７】
図２から図７の場合分けでは、シフトバッファn(033)へ登録するデータの選択動作は、データ受付レジスタ000からの新規登録要求の有無、シフトバッファ0(030)の出力バッファi(082)への出力または出力バッファi(082)のビジーによるローテートの判定、シフトバッファn-1(032)、n(033)、n+1(034)の登録状態、つまり自エントリとその老若１エントリの計３エントリの登録状態、だけで行われている。
【００３８】
すなわち、セレクタ制御部050は選択動作の指示において、シフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)の全てのエントリの登録状態の認識は必要でなく、指示すべきシフトバッファn(033)を含む唯３個のエントリの登録状態を認識するだけでよい。これはN個がいくつであっても適用されるので、N個が多くなるほどＨＷ資源が増大するというようなことはない。
【００３９】
また、本発明の実現において、セレクタ0(020)、1(021)…n-1(022)、n(023)、n+1(024)…N(025)とシフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)で構成される待ち行列バッファは、セレクタ0(020)のホールド選択とローテート選択でシフトバッファ0(030)のデータを再度シフトバッファ0(030)に登録する同一動作として扱い、セレクタN(025)のシフト選択を無効化すれば、セレクタ0(020)、1(021)…n-1(022)、n(023)、n+1(024)…N(025)、シフトバッファ0(030)、1(031)…n-1(032)、n(033)、n+1(034)…N(035)で構成されるN個の全エントリが同様の作りになるため、エントリ単位で１種N個の構成を容易に組むことが出来る。
【００４０】
以上説明したように、本発明では、ある一つの系から複数個実装される出力ポートの何れかへのデータ転送において、受け付けたデータを一旦待ち行列バッファに保持し、そのデータの示す出力先指定と出力先ポートからのビジー条件を判定して転送を行う時、待ち行列バッファを先頭から登録済み最後尾へローテートする機能を持つシフトレジスタで制御することによって、大規模なデータ転送のような順序保証の必要ないデータが出力先ポートのビジーで転送不可能な場合にこれを待ち行列バッファの登録済み最後尾にローテートすることを可能にし、同時に既に待ち行列バッファに登録済みの後続データをシフト動作させて次のデータを待ち行列バッファの先頭に移す、という制御を行うことで、出力先ポートがビジーでないデータを可能な限り優先して転送可能にし、少ないＨＷ資源かつ待ち行列バッファそれぞれのエントリの作りが1種N個という実現容易な構成で転送性能を向上させることが出来る。
【００４１】
次に本発明の他の実施例について説明する。図１において、シフトバッファ0(030)に加えてシフトバッファ1(031)からも出力制御部060へ出力要求し、出力先指定と順序保証情報1(041)によって出力バッファ0(080)、1(081)…i(082)…I(083)の何れかの出力先を判定して出力、またはビジーにより登録済み最後尾へローテートを可能にした方式がある。同様に上記シフトバッファ0(030)、1(031)の出力動作を任意のシフトバッファn(033)まで拡張した方式がある。
【００４２】
次に本発明のバッファについて情報処理装置内での位置について説明する。図８は、本発明実施の形態のバッファ制御装置を複数の入出力装置と主記憶の間のデータ転送制御に適用した汎用ポート制御装置を示す図である。
【００４３】
本発明は大規模なData転送のような順序保証の必要ないデータ転送において効果があり、図8では複数の入出力装置と主記憶の間のデータ転送制御に本発明を適用して示している。図8において、シフトバッファ150、セレクタ制御部160、出力制御部170、出力バッファ0(180)、出力バッファ1(181)から出力バッファx(182)で構成される部分が本発明にあたり、各入出力装置0(100)、入出力装置1(101)から入出力装置x(102)から、入力バッファ0(110)、入力バッファ1(111)から入力バッファx(112)、入力選択部120、緩衝バッファ130を経て連続的にデータ読み出し要求がなされ、主記憶制御部140から、シフトバッファ150、セレクタ制御部160、出力制御部170、出力バッファ0(180)、1(181)…x(182)を経て各入出力装置0(100)、入力バッファ1(111)から入力バッファx(112)へ読み出しデータが転送される時に本発明の汎用ポート制御装置240が作用する。本発明は、このように主記憶から入出力装置へデータ転送を行う時などに有効であり、ある特定の入出力装置がビジーとなって転送が待ち状態になったとしても、他の入出力装置に対しては、ビジーの影響を出来るだけ少なくして転送を継続することが出来る。
【００４４】
次に、本バッファ制御装置を採用した情報処理装置について説明する。図９は、本発明実施の形態のバッファ制御装置を複数の入出力装置と主記憶の間のデータ転送制御に適用した汎用ポート制御制御装置を有する情報処理装置を示す図である。図9において、入出力装置0(250)、入出力装置1(251)から入出力装置x(252)は、汎用ポート制御装置240に接続され、汎用ポート制御装置240は、Cache制御装置210、主記憶制御装置220を介して主記憶230とのデータ転送を行う。EPU0(200)、EPU1(201)からEPUy(202)も同様にCache制御装置210、主記憶制御装置220を介して主記憶230とのデータ転送を行う。EPUは演算処理装置の略称である。（EPU  Execution Processing Unit)。本発明は、汎用ポート制御装置240において、Cache制御装置210から入出力装置0(250)、入出力装置1(251)から入出力装置x(252)へのデータ転送機構として実現される。
【００４５】
【発明の効果】
本発明では、ある一つの系から複数個実装される出力ポートの何れかへのデータ転送において、受け付けたデータを一旦待ち行列バッファに保持し、そのデータの示す出力先指定と出力先ポートからのビジー条件を判定して転送を行う時、待ち行列バッファを先頭から登録済み最後尾へローテートする機能を持つシフトレジスタで制御することによって、大規模なデータ転送のような順序保証の必要ないデータが出力先ポートのビジーで転送不可能な場合にこれを待ち行列バッファの登録済み最後尾にローテートすることを可能にし、同時に既に待ち行列バッファに登録済みの後続データをシフト動作させて次のデータを待ち行列バッファの先頭に移す、という制御を行うことで、出力先ポートがビジーでないデータを可能な限り優先して転送可能にし、少ないＨＷ資源かつ待ち行列バッファそれぞれのエントリの作りが１種N個という実現容易な構成で転送性能を向上させることが出来る、という効果がある。
【図面の簡単な説明】
【図１】本発明実施の形態のバッファ制御装置の構成を示すブロック図である。
【図２】本発明実施の形態のバッファ制御装置において、シフトバッファn(033)が未登録で新規データの登録の動作を示すフローチャートである。
【図３】本発明実施の形態のバッファ制御装置において、シフトバッファn(033)が登録済みかつシフトバッファn+1(034)が未登録で、新規データの登録の動作を示すフローチャートである。
【図４】本発明実施の形態のバッファ制御装置において、シフトバッファn(033)が登録済みかつシフトバッファn+1(034)が未登録でデータ受付レジスタ000からの新規登録がない時、同時にシフトバッファ0(030)のデータが出力先の出力バッファi(082)に出力されていれば、シフトバッファn(033)はシフト選択により登録済みのデータがシフトバッファn-1(032)へシフトしてシフトバッファn(033)へはシフトバッファn+1(034)が未登録なためクリア選択により無効化される動作を示すフローチャートである。
【図５】本発明実施の形態のバッファ制御装置において、シフトバッファn(033)が登録済みかつシフトバッファn+1(034)が未登録でデータ受付レジスタ000からの新規登録がない時のローテート選択によるシフトバッファ0(030)のデータの登録の動作を示すフローチャートである。
【図６】本発明実施の形態のバッファ制御装置において、シフトバッファn(033)が登録済みかつシフトバッファn+1(034)も登録済みの時、シフトバッファ0(030)のデータが出力先の出力バッファi(082)に出力される動作を示すフローチャートである。
【図７】本発明実施の形態のバッファ制御装置において、シフトバッファn(033)が登録済みかつシフトバッファn+1(034)も登録済みの時、ビジーのため登録済み最後尾にローテートされるならば、シフトバッファn(033)はシフト選択によりシフトバッファn+1(034)のデータがシフトして登録される動作を示すフローチャートである。
【図８】本発明実施の形態のバッファ制御装置を複数の入出力装置と主記憶の間のデータ転送制御に適用した汎用ポート制御装置を示す図である。
【図９】本発明実施の形態のバッファ制御装置を複数の入出力装置と主記憶の間のデータ転送制御に適用した汎用ポート制御装置を有する情報処理装置を示す図である。
【符号の説明】
000    データ受付レジスタ
010    出力先指定と順序保証情報受付レジスタ
(020)    セレクタ0
(021)    セレクタ1
(022)    セレクタn-1
(023)    セレクタn
(024)    セレクタn+1
(025)    セレクタN
(030)    シフトバッファ0
(031)    シフトバッファ1
(032)    シフトバッファn-1
(033)    シフトバッファn
(034)    シフトバッファn+1
(035)    シフトバッファN
(040)    出力先指定と順序保証情報0
(041)    出力先指定と順序保証情報1
(042)    出力先指定と順序保証情報n-1
(043)    出力先指定と順序保証情報n
(044)    出力先指定と順序保証情報n+1
(045)    出力先指定と順序保証情報N
050    セレクタ制御部
060    出力制御部
070    出力制御情報
(080)    出力バッファ0
(081)    出力バッファ1
(082)    出力バッファi
(083)    出力バッファI
090    ビジー信号
(100)    入出力装置0
(101)    入出力装置1
(102)    入出力装置x
(110)    入力バッファ0
(111)    入力バッファ1
(112)    入力バッファx
120    入力選択部
130    緩衝バッファ
140    主記憶制御部
150    シフトバッファ
160    セレクタ制御部
170    出力制御部
(180)    出力バッファ0
(181)    出力バッファ1
(182)    出力バッファx
(200)    EPU0
(201)    EPU1
(202)    EPUy
210    Cache制御装置
220    主記憶制御装置
230    主記憶
240    汎用ポート制御装置
(250)    入出力装置0
(251)    入出力装置1
(252)    入出力装置x
【図１】
0003698987.tif 000002
【図２】
0003698987.tif 000003
【図３】
0003698987.tif 000004
【図４】
0003698987.tif 000005
【図５】
0003698987.tif 000006
【図６】
0003698987.tif 000007
【図７】
0003698987.tif 000008
【図８】
0003698987.tif 000009
【図９】
0003698987.tif 000010