(57)【要約】      （修正有）【課題】リプライデータ読み込み時のレイテンシを短縮するＳＩＭＤ型コンピュータを提供する。【解決手段】プロセッサ３は、通過してきた命令を実行する手段であって、命令を順次受信して命令転送手段１に送信し、命令がリード命令である場合は、記憶手段１３，１４に複数のデータリード要求を発行し、返信されるリプライデータを受信してバッファ１６に蓄積し、リード命令の全リプライデータの受信が完了すると外部に出力するエンジン１０と、エンジンから定期的に命令を受信して通過させるが、リード命令の通過後、通過させたリード命令の転送データ長に応じて与えられる発行間隔制御値が示す期間は、通過させたリード命令を送信したエンジンから送信される後続のリード命令を通過させない命令転送手段と、複数の記憶手段１３，１４を備える。【選択図】図１
2017126237.tif 000002
【特許請求の範囲】
【請求項１】
命令を順次受信して命令転送手段に送信し、通過してきた前記命令を実行する手段であって、前記命令がリード命令である場合は、記憶手段に複数のデータリード要求を発行し、返信されるリプライデータを受信してバッファに蓄積し、前記リード命令の全リプライデータの受信が完了すると外部に出力するエンジンと、
前記エンジンから定期的に前記命令を受信して通過させるが、前記リード命令の通過後、通過させた前記リード命令の転送データ長に応じて与えられる発行間隔制御値が示す期間は、通過させた前記リード命令を送信した前記エンジンから送信される後続の前記リード命令を通過させない前記命令転送手段と、
複数の前記記憶手段と、を備えるプロセッサ。
【請求項２】
前記発行間隔制御値は、前記リード命令が読み出す前記全リプライデータの転送に要するクロック数、または、前記リード命令が読み出す、前記全リプライデータ、および、ヘッダ情報の転送に要するクロック数である、請求項１のプロセッサ。
【請求項３】
前記エンジンは、前記全リプライデータを出力してバッファを解放し、また、前記バッファの空き容量が所定基準以下の間、新たな前記命令の実行を停止する、請求項１乃至請求項２の何れか１項のプロセッサ。
【請求項４】
複数の前記エンジンを備え、
前記命令転送手段は、
各々の前記エンジンから送信されてきた前記命令を、前記リード命令とその他命令に分類して、前記リード命令であれば、前記発行間隔制御値を付加して、クロスバスイッチに各々の前記エンジン対応に設けられたリード命令入力ポートに送信し、前記その他命令であれば、前記クロスバスイッチに各々の前記エンジン対応に設けられたその他入力ポートに送信する、命令転送制御手段と、
前記リード命令入力ポート、および、複数の前記その他入力ポートに送信された命令から定期的に一つを選択して通過させるが、前記リード命令通過後は、通過させた前記リード命令に付加されていた前記発行間隔制御値が示す期間、前記通過させたリード命令入力ポートに送信される後続の前記リード命令を選択対象としない前記クロスバスイッチと、を備える、請求項１乃至請求項３の何れか１項のプロセッサ。
【請求項５】
前記記憶手段は、複数のコアの各々に接続されたキャッシュメモリと、メインメモリを包含する、請求項１乃至請求項４の何れか１項のプロセッサ。
【請求項６】
命令を順次受信して命令転送手段に送信し、通過してきた前記命令を実行するエンジンは、前記命令がリード命令である場合は、記憶手段に複数のデータリード要求を発行し、返信されるリプライデータを受信してバッファに蓄積し、前記リード命令の全リプライデータの受信が完了すると外部に出力し、
前記命令転送手段は、前記エンジンから定期的に前記命令を受信して通過させるが、前記リード命令の通過後、通過させた前記リード命令の転送データ長に応じて与えられる発行間隔制御値が示す期間は、通過させた前記リード命令を送信した前記エンジンから送信される後続の前記リード命令を通過させない、データ転送方法。
【請求項７】
前記発行間隔制御値は、前記リード命令が読み出す前記全リプライデータの転送に要するクロック数、または、前記リード命令が読み出す、前記全リプライデータ、および、ヘッダ情報の転送に要するクロック数である、請求項６のデータ転送方法。
【請求項８】
前記エンジンは、前記全リプライデータを出力してバッファを解放し、また、前記バッファの空き容量が所定基準以下の間、新たな前記命令の実行を停止する、請求項６乃至請求項７の何れか１項のデータ転送方法。
【請求項９】
前記命令転送手段が、
複数の前記エンジンの各々から送信されてきた前記命令を、前記リード命令とその他命令に分類して、前記リード命令であれば、前記発行間隔制御値を付加して、クロスバスイッチに各々の前記エンジン対応に設けられたリード命令入力ポートに送信し、前記その他命令であれば、前記クロスバスイッチに各々の前記エンジン対応に設けられたその他入力ポートに送信し、
前記クロスバスイッチが、前記リード命令入力ポート、および、複数の前記その他入力ポートに送信された命令から定期的に一つを選択して通過させるが、前記リード命令通過後は、通過させた前記リード命令に付加されていた前記発行間隔制御値が示す期間、前記通過させたリード命令入力ポートに送信される後続の前記リード命令を選択対象としない、請求項６乃至請求項８の何れか１項のデータ転送方法。
【請求項１０】
前記記憶手段は、複数のコアの各々に接続されたキャッシュメモリと、メインメモリを包含する、請求項６乃至請求項９の何れか１項のデータ転送方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プロセッサ、および、データ転送方法、特に、ＳＩＭＤ（Single Instruction Multiple Data）型のコンピュータのプロセッサ、および、データ転送方法に関する。
【背景技術】
【０００２】
特許文献１は、共有メモリを有する複数のノードからなるシステムであって、共有メモリのレイテンシを短縮するシステムを開示する。このシステムは、複数のノードからリクエストが発行された場合に、その発行元を特定する制御情報を記憶し、発行されたリクエストのうち最初に返却すべきリクエストを決定することによってレイテンシを短縮する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５５７１３２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ベクトル型スーパーコンピュータやＧＰＧＰＵ（General-Purpose Graphics Processing Unit）に代表されるＳＩＭＤ型のコンピュータは、１つの命令で多数個のデータがリプライされる。したがって、ＳＩＭＤ型のコンピュータでは、リプライパスが性能のボトルネックとなり易い。また近年のマルチコア化の流れによって、より多数個のコアから各種命令が多並列で実行され、リプライパスに対する競合がさらに増す傾向にある。多数個のリプライデータが混ざり合うと、各命令に対応するリプライデータが揃うまでの時間が増加し、各命令のレイテンシが大きくなる。このレイテンシを最小限に抑えて、装置の全体性能を低下させないことが大きな課題である。さらには構成要素であるハードウェアリソースを無駄なく最大限に稼働させることも、全体性能を最大化する上で重要なポイントである。
【０００５】
特許文献１が開示するシステムは、リプライパスに対する競合を低下させることはできない。
【０００６】
本発明は、上記課題を解決するプロセッサ、および、データ転送方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の１実施の形態のプロセッサは、命令を順次受信して命令転送手段に送信し、通過してきた前記命令を実行する手段であって、前記命令がリード命令である場合は、記憶手段に複数のデータリード要求を発行し、返信されるリプライデータを受信してバッファに蓄積し、前記リード命令の全リプライデータの受信が完了すると外部に出力するエンジンと、前記エンジンから定期的に前記命令を受信して通過させるが、前記リード命令の通過後、通過させた前記リード命令の転送データ長に応じて与えられる発行間隔制御値が示す期間は、通過させた前記リード命令を送信した前記エンジンから送信される後続の前記リード命令を通過させない前記命令転送手段と、複数の前記記憶手段と、を備える。
【０００８】
本発明の１実施の形態のデータ転送方法は、命令を順次受信して命令転送手段に送信し、通過してきた前記命令を実行するエンジンは、前記命令がリード命令である場合は、記憶手段に複数のデータリード要求を発行し、返信されるリプライデータを受信してバッファに蓄積し、前記リード命令の全リプライデータの受信が完了すると外部に出力し、前記命令転送手段は、前記エンジンから定期的に前記命令を受信して通過させるが、前記リード命令の通過後、通過させた前記リード命令の転送データ長に応じて与えられる発行間隔制御値が示す期間は、通過させた前記リード命令を送信した前記エンジンから送信される後続の前記リード命令を通過させない。
【発明の効果】
【０００９】
本発明にかかるプロセッサは、ＳＩＭＤ型コンピュータのリプライデータ読み込み時のレイテンシを短縮する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の第１の実施の形態にかかるプロセッサ３の構成を示す図である。
【図２】図２は、発行間隔制御値を示すテーブルを示す。
【図３】図３は、プロセッサ３の動作フローチャート（その２）である。
【図４】図４は、プロセッサ３の動作フローチャート（その１）である。
【図５】図５は、エンジン１０が備えるバッファ１６を示す図である。
【図６】図６は、エンジン１０がリードリクエストを発行するタイミングと、読み出されたリプライデータが当該エンジン１０のバッファ１６に蓄積されるタイミングを、本発明適用前後を対比して示すタイムチャートである。
【図７】図７は、リプライデータにヘッダ情報がある場合のタイムチャートである。
【図８】図８は、本発明の第２の実施の形態にかかるプロセッサ３の構成を示す図である。
【発明を実施するための形態】
【００１１】
＜第１の実施の形態＞
＜概要＞
本実施の形態のプロセッサ３は、例えば、命令の種別とデータ転送長を識別する命令転送制御部１を備える。命令は、命令転送制御部１により、リード命令とリード命令以外の命令（以降、その他命令と略記）に分類され、それぞれがクロスバスイッチ２の対応ポートに入力される。クロスバスイッチ２は、リード命令のデータ転送長に応じて命令の調停参加タイミングを調整する機能を備える。調停参加タイミングは、リード命令のデータ転送長ごとに予め与えられた値に基づいて決定される。
【００１２】
クロスバスイッチ２は、その他の命令は、通常通り、クロックごとに調停に参加させて、リード命令の上述した調停間隔の隙間を埋める。クロスバスイッチ２は、リード命令入力ポート４と、その他入力ポート５を有する。クロスバスイッチ２の入力ポートが、リード命令用とその他用に分かれていることから、リード命令の発行間隔が空いた状態においても、その他の命令の実行は続けられる。
【００１３】
従って、本実施の形態のプロセッサ３は、ハードウェアリソースを無駄なく稼働させることが出来、全体性能を向上させることが可能となる。
【００１４】
＜構成＞
図１は、本実施の形態にかかるプロセッサ３の構成を示す図である。プロセッサ３は、入出力制御部１１、ダイレクトメモリアクセス部９、命令転送部６、コア１２、キャッシュメモリ１３、および、メインメモリ１４を備える。ダイレクトメモリアクセス部９、命令転送部６、キャッシュメモリ１３、および、メインメモリ１４は、リングバス１５により接続されている。入出力制御部１１は、ダイレクトメモリアクセス部９、命令転送部６、および、コア１２と接続されている。
【００１５】
ダイレクトメモリアクセス部９は１以上のエンジン１０を包含し、各エンジン１０はバッファ１６を備えている。
【００１６】
命令転送部６は、命令転送制御部１とクロスバスイッチ２を包含する。クロスバスイッチ２は、各エンジン１０に対応して、リード命令入力ポート４とその他入力ポート５を備えている。
【００１７】
各エンジン１０は、命令転送制御部１を介して、クロスバスイッチ２が備える、自装置に対応するリード命令入力ポート４とその他入力ポート５に接続されている。
【００１８】
エンジン１０は、ＤＭＡ（Direct Memory Access）機能の制御部であり、いわゆる、ＤＭＡエンジンである。エンジン１０は、例えば、入出力制御部１１を介して外部装置から命令を順次受信し、受信した命令を実行する。エンジン１０は、命令をコア１２から受信しても良い。
【００１９】
命令は、リード命令とその他の命令に分類される。リード命令は、複数個のリプライデータを、キャッシュメモリ１３、メインメモリ１４、または、コア１２のレジスタから読み出す命令である。
【００２０】
エンジン１０は、リード命令を受信すると、例えば、複数のキャッシュメモリ１３、メインメモリ１４、または、コア１２にリプライデータリード要求を発行して、返信されるリプライデータをリングバス１５経由で受信する。エンジン１０は、受信したリプライデータを、一つのリード命令が読み出したリプライデータが全て揃うまで、内部にあるバッファ１６に蓄積する。一つのリード命令が読み出したリプライデータが全て揃うと、エンジン１０は、揃った全リプライ以データを外部、例えば、リード命令で指定されたメインメモリ１４に出力して、当該リプライデータを蓄積していたバッファ１６の領域を解放する。
【００２１】
エンジン１０は、複数のリード命令を並行して実行することが出来るが、このバッファ１６が満杯、あるいは、満杯近く、すなわち、空き容量があらかじめ定められた基準以下になると、新たなリード命令の実行が出来なくなる。
【００２２】
なお、エンジン１０は、命令を受信すると、命令の実行に先立ち、当該命令の実行可能タイミングを計るために、命令転送制御部１に送信する。
【００２３】
ダイレクトメモリアクセス部９は、入出力制御部１１から入力された命令や、リングバス１５から入力されたリプライデータを、各エンジン１０に振り分ける機能を包含する。
【００２４】
命令転送制御部１は、各々のエンジン１０が送信した命令をデコードして、リード命令とその他命令に分類し、リード命令であれば、当該リード命令を、後述する発行間隔制御値と共に、当該エンジン１０に対応するリード命令入力ポート４に送信する。エンジン１０から受信した命令がその他命令であれば、命令転送制御部１は、当該その他命令を、当該エンジン１０に対応するその他入力ポート５に送信する。
【００２５】
クロスバスイッチ２は、各エンジン１０から、リード命令入力ポート４、または、その他入力ポート５に送信された命令を候補とし、クロスバスイッチ２を通過させて実行に移す命令の選択、すなわち、調停を行う。調停はクロックごとに行われ、例えば、固定優先方式やラウンドロビン方式で行われる。クロスバスイッチ２を通過した命令を送信したエンジン１０が、通過した命令を実行する。なお、以降、命令が、クロスバスイッチ２を通過して実行に移されることを、『調停に勝利する』という場合が有る。
【００２６】
なお、クロスバスイッチ２は、あるエンジン１０に対応するリード命令入力ポート４からリード命令を通過させた場合、当該ポートからは、通過させたリード命令に付加された発行間隔制御値が示す期間、次のリード命令を通過させない。
【００２７】
プロセッサ３は、複数のコア１２を備えており、それぞれのコア１２には、キャッシュメモリ１３とメインメモリ１４が接続されている。エンジン１０は、受信したリード命令がクロスバスイッチ２を通過すると、リード命令の対象となる各データを格納しているコア１２、キャッシュメモリ１３、および、メインメモリ１４にリプライデータリードリクエストを発行する。リプライデータリードリクエストを受けた、コア１２、キャッシュメモリ１３とメインメモリ１４はリクエストされたリプライデータをリングバス１５経由で、リクエストを発行したエンジン１０に送信する。この間コア１２は、通常の処理、例えば、アプリケーションプログラムの実行を行っている。
【００２８】
なお、リングバス１５の各部には、以下のリプライデータが流される。命令転送部６と最初のコア１２／キャッシュメモリ１３／メインメモリ１４（以降、メモリ等と略記）との間（図中の二重線部）は、リクエストが流される。最初のメモリ等と最後のメモリ等と間（破線部）は、リクエストと読み出されたリプライデータが流される。最後のメモリ等とダイレクトメモリアクセス部９との間（実線部）は、リプライデータが流される。
【００２９】
図２は、発行間隔制御値を示すテーブルを示す。図２が示すように、発行間隔制御値は、リード命令のリプライデータ転送長に依存して与えられている。ここで、転送長はバイト数、発行間隔制御値はクロック数で与えられている。この値は、例えば、リプライヘッダ情報なしの転送長３２バイトのリード命令が調停に勝利した後、クロスバスイッチ２は、当該命令を送信してきたリード命令入力ポート４は、４クロックの間隔を空けてから次の調停に参加させることを意味している。同様に、リプライデータ転送長６４バイトのリード命令後は８クロック、転送長１２８バイトのリード命令後は１６クロックの間、クロスバスイッチ２は、当該リード命令入力ポート４を調停に参加させない。
【００３０】
これは、一つのリプライデータが１クロックに８バイト転送される構成を例として取り上げて、データを示しているためで、リプライデータ転送に要する時間が、例えば、６４バイト＝８バイトｘ８クロックとなるからである。
【００３１】
またリプライデータ転送時にリプライヘッダ情報が有る場合、無い場合に比べて、発行間隔制御値は１クロック大きな値となる。これは、リプライヘッダ情報を転送するのに、１クロックを要するからである。
【００３２】
入出力制御部１１、ダイレクトメモリアクセス部９、および、命令転送部６は、論理回路、および、半導体記憶素子、例えば、フリップフロップ回路やＳＲＡＭ（Static Random Access Memory）で構成される。
【００３３】
本実施の形態のプロセッサ３が行う制御は、輻輳やフロー制御のような負荷を下げる制御とは異なる。プロセッサ３において、性能・負荷のボトルネックとなるバッファ１６を含むリプライパスは、フルスループットを発揮できる。一方、リクエストパスのリソースは、リード以外の命令を発行し続けることによって、帯域をフル稼働させることが出来る。それをソフトウェアの介在なく、ハードウェア自身が制御するところに本実施形態のプロセッサ３の特徴がある。
【００３４】
＜動作＞
図３及び図４は、プロセッサ３の動作フローチャートである。
【００３５】
エンジン１０から命令を受信した命令転送制御部１は、命令をデコードし（S1）、リード命令とその他命令とに分類する（S2）。リード命令の場合は（S2でリード命令）、命令転送制御部１は、図２のテーブルに示される発行間隔制御の値を付与して（S11）、クロスバスイッチ２のリード命令入力ポート４へ送信する（S12）。命令転送制御部１は、その他命令の場合は（S2でその他命令）、クロスバスイッチ２のその他入力ポート５へ送信する（S3）。
【００３６】
送信された命令は、クロスバスイッチ２において調停に参加する（S３とS１２）。調停においてリード命令が勝利した場合は（S13で勝利）、クロスバスイッチ２は、勝利したリード命令入力ポート４の調停参加までに間隔を設ける。その間隔は、図２のテーブルに従って付与された値が示す期間である。
【００３７】
調停に敗北した場合（S13で敗北）は、当該リード命令は、次のクロックも調停に参加する。調停においてその他命令は勝利または敗北によらず、毎クロック調停に参加する。
【００３８】
リード命令が調停に勝利して（S13で勝利）クロスバスイッチ２を通過したとき（S14）、エンジン１０は、リード命令に従って、プロセッサ３内のキャッシュメモリ１３、メインメモリ１４、または、コア１２内のレジスタからリード対象のデータを読み出す（S15）。読み出されたリプライデータは、ダイレクトメモリアクセス部９内のエンジン１０に返却され（S16）、バッファ１６に格納される（S17）。
【００３９】
リード命令で指示された転送長のリプライデータが全て揃うと、エンジン１０は、それらのリプライデータをリード命令で指定されたメインメモリ１４に出力し、バッファ１６を解放して、後続の命令を実行できるようになる（S18）。
【００４０】
その他命令が調停に勝利して（S4で勝利）クロスバスイッチ２を通過したとき（S5）、エンジン１０は、その他命令に従って処理を実行する（S6）。
【００４１】
図５は、エンジン１０が備えるバッファ１６を示す図である。例えば、１つのエンジン１０のバッファ１６は、３２キロバイトの容量があり、転送長１キロバイトのリード命令で得られるリプライデータを３２命令分格納することが出来る。エンジン１０が、１キロバイトのリプライデータについて、リードリクエストを８個に分けて発行するとき、１キロバイト＝１２８バイトｘ８であるため、転送長１２８バイトのリードリクエストを８個発行することになる。
【００４２】
転送長１２８バイトのリード命令は、８バイトのリプライデータを１６個受信することにより完結し、エンジン１０は、そのリプライデータを出力することで、そのバッファ１６を解放する。したがって、この８個のリプライデータを連続したクロックで受信すれば、リード命令のレイテンシは最短となる。
【００４３】
図６は、エンジン１０がリードリクエストを発行するタイミングと、読み出されたリプライデータが当該エンジン１０のバッファ１６に蓄積されるタイミングを、本発明適用前後を対比して示すタイムチャートである。
【００４４】
本図のタイムチャートは、リード命令のリプライデータ転送長が６４バイト、リード単位が８バイトのケースを例として取り上げて示している。ここで、リードリクエストＲｎ（ｎ＝１〜４）に対するリプライデータは、ｒｎで表されている。また、他の命令に関するリクエストは、『他』で表されている。次図（図７）のタイムチャートも、同様である。
【００４５】
リード命令の発行間隔に特別な制御を行わない場合（図中（ａ））、リプライデータがバッファ１６内で混じり合うため、１つのリード命令に対する全てのリプライデータが揃うまでのレイテンシにバラつきがある。発行される命令が多くなれば多くなるほど、レイテンシは悪化することになる。
【００４６】
すなわち、この場合、複数のリード命令に対するリプライデータが、バッファ１６内で競合し、混在し合ってレイテンシが大きくなり、リクエストの発行レートが低下する。そして、定常状態ではリクエストに隙間が空き、次第に全体性能が低下する。
【００４７】
一方、本実施の形態のプロセッサ３の場合（図中（ｂ））、リード命令のリプライデータ転送長に応じた適切な間隔を空けて、後続のリード命令を発行しているため、互いのリード命令のリプライデータが混ざり合うことがなく、レイテンシが遅延しない。このためバッファ１６の解放が早くなり、後続命令の実行が早くなる。リード命令と後続のリード命令との間には、リード命令以外の命令であるライトなどの一般的な命令が実行されるため、リクエストが発行される隙間がなく、プロセッサ３全体のリソースを無駄なく稼働させている。当然リプライデータがバッファ１６に到着するタイミングにも隙間は無い。
【００４８】
すなわち、この場合、レイテンシが短く、かつ、後続リクエストは隙間なく発行され得る。
【００４９】
図７は、リプライデータにヘッダ情報がある場合のタイムチャートである。他の条件は、図６と同様である。
【００５０】
リプライヘッダ情報は、１つのリード命令に対応するリプライデータを隙間なく連続して返却するための情報である。この情報による制御は公知である。図中（ａ）は、ある１つのエンジン１０から４つのリード命令が、間隔を空けずに発行された場合を示している。この場合、それぞれのリプライヘッダ情報によって、４つのリード命令に対して連続してリプライデータが返却される。但し、互いの返却順序は入れ替わることがある。その順序は、各リード命令がどこのメモリのリプライデータを読み出すかによって様々である。順序が入れ替わることにより、レイテンシが遅延する。
【００５１】
すなわち、この場合、リード命令単位で連続してリプライデータが受信されても、リード命令単位では順不同となりレイテンシが増大し、発行レートが低下する。そして、定常状態ではリクエストに隙間が空き、次第に全体性能が低下する。
【００５２】
一方、本実施の形態のプロセッサ３の場合（図中（ｂ））、同一のエンジン１０から発行されるリード命令にリプライデータ転送長に応じた適切な間隔を空けているため、リプライデータの順序が入れ替わることがない。このためバッファ１６の解放が早くなり、後続命令の発行が早くなる。
【００５３】
すなわち、この場合も、レイテンシが短く、かつ、後続リクエストは隙間なく発行され得る。
＜変形例＞
図１は、プロセッサ３の内部で命令転送部６と、コア１２とキャッシュメモリ１３とメインメモリ１４をリングバス１５で接続した構成を示しているが、一般的なクロスバで接続しても良い。
【００５４】
プロセッサ３が備えるエンジン１０は、１個だけであっても良い。この場合、調停は、当該エンジン１０のリード命令とその他命令の間でだけ行えば良いため、当該調停機能を命令転送制御部１に取り込んで、クロスバスイッチ２を備えない構成としても良い。すなわち、命令転送部６と命令転送制御部１が同一であっても良い。
【００５５】
構成要素の数、容量、リプライデータ転送サイズは、上記で例示した値に限られない。例えば、クロスバスイッチ２が備えるリード命令入力ポート４の数、エンジン１０の数、そのバッファ１６の容量、発行間隔制御値の値、１クロックあたりの転送の単位は、適宜変更しても良い。
【００５６】
＜効果＞
第１の効果として、本実施の形態のプロセッサ３は、リプライデータ読み込み時のレイテンシを短縮し、後続命令を遅延無く実行する。そのため、プロセッサ３は、データ転送が大量に競合する状況においても、全体性能の低下を抑止できる。その理由は、命令転送部６が、リプライデータのスループットに合せてリード命令の発行タイミングを調整するからである。
【００５７】
第２の効果として、本実施の形態のプロセッサ３は、ハードウェアリソースを無駄なく稼働できる。その理由は、命令転送部６が、リード命令の発行タイミングを調整している間は、リード以外の命令を隙間なく発行しているためである。つまり全体性能が、向上する。これは、輻輳やフロー制御のような負荷を下げる制御とは異なる。プロセッサ３は、リクエストパスとリプライパス双方の帯域をフル活用できており、最大スループットを維持できている。
【００５８】
第３の効果として、本実施の形態のプロセッサ３は、本データ転送の制御にソフトウェアの介在が必要無い事である。その理由は、ハードウェアがデータ転送のタイミングを調整するからである。
【００５９】
＜第２の実施形態＞
図８は、本実施の形態にかかるプロセッサ３の構成を示す図である。プロセッサ３は、エンジン１０と、命令転送部６と、記憶部１７と、を備える。
【００６０】
エンジン１０は、命令を順次受信して命令転送部６に送信し、通過してきた命令を実行する装置である。エンジン１０は、命令がリード命令である場合は、記憶部１７に複数のデータリード要求を発行し、返信されるリプライデータを受信してバッファ１６に蓄積し、リード命令の全リプライデータの受信が完了すると外部に出力する。
【００６１】
命令転部６は、エンジン１０から定期的に命令を受信して通過させる。しかし、命令転部６は、リード命令の通過後、通過させたリード命令の転送データ長に応じて与えられる発行間隔制御値が示す期間は、通過させたリード命令を送信したエンジン１０から送信される後続のリード命令を通過させない。
【００６２】
記憶部１７は、リプライデータを記憶する装置であり、例えば、コア１２のレジスタ、キャッシュメモリ１３、または、メインメモリ１４を包含する。
【００６３】
第１の効果として、本実施の形態のプロセッサ３は、リプライデータ読み込み時のレイテンシを短縮し、後続命令を遅延無く実行する。そのため、プロセッサ３は、データ転送が大量に競合する状況においても、全体性能の低下を抑止できる。その理由は、命令転送部６が、リプライデータのスループットに合せてリード命令の発行タイミングを調整するからである。
【００６４】
第２の効果として、本実施の形態のプロセッサ３は、ハードウェアリソースを無駄なく稼働できる。その理由は、命令転送部６が、リード命令の発行タイミングを調整している間は、リード以外の命令を隙間なく発行しているためである。つまり全体性能が、向上する。これは、輻輳やフロー制御のような負荷を下げる制御とは異なる。プロセッサ３は、リクエストパスとリプライパス双方の帯域をフル活用できており、最大スループットを維持できている。
【００６５】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【００６６】
１    命令転送制御部
２    クロスバスイッチ
３    プロセッサ
４    リード命令入力ポート
５    その他入力ポート
６    命令転送部
９    ダイレクトメモリアクセス部
１０    エンジン
１１    入出力制御部
１２    コア
１３    キャッシュメモリ
１４    メインメモリ
１５    リングバス
１６    バッファ
１７    記憶部
【図１】
2017126237.tif 000003
【図２】
2017126237.tif 000004
【図３】
2017126237.tif 000005
【図４】
2017126237.tif 000006
【図５】
2017126237.tif 000007
【図６】
2017126237.tif 000008
【図７】
2017126237.tif 000009
【図８】
2017126237.tif 000010
【手続補正書】
【提出日】平成29年4月17日(2017.4.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項２
【補正方法】変更
【補正の内容】
【請求項２】
前記発行間隔制御値は、前記リード命令に基づいて読み出す対象である前記全リプライデータの転送に要するクロック数、または、前記リード命令に基づいて読み出す対象である前記全リプライデータ、および、ヘッダ情報の転送に要するクロック数である、請求項１のプロセッサ。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項７
【補正方法】変更
【補正の内容】
【請求項７】
前記発行間隔制御値は、前記リード命令に基づいて読み出す対象である前記全リプライデータの転送に要するクロック数、または、前記リード命令に基づいて読み出す対象である前記全リプライデータ、および、ヘッダ情報の転送に要するクロック数である、請求項６のデータ転送方法。