説明

情報処理装置及び情報処理方法

【課題】データの信頼性を確保したまま演算レジスタへの高速読み出しを実現する。
【解決手段】この情報処理装置は、ロードリクエスト生成部と、個々のロードリクエストに対するロードデータを格納し、演算レジスタに転送するロードバッファと、ロードリクエスト生成部によって生成されたロードリクエストを入力し、ロードリクエストに対するロードデータをメインメモリから読み出すと共に、メインメモリによって生成された、ロードデータをロードバッファから読み出す順番を示す付随情報を、ロードデータに先立って送出するようメインメモリを制御するメモリネットワークと、付随情報に基づいて、付随情報に対応するロードデータの到着の遅れを検出し、ロードデータの到着の遅れに基づいて、ロードバッファから演算レジスタへの読み出しの開始時間を調整する整列判定部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置に関する。
【背景技術】
【0002】
従来より、(1)1つのロード命令から、命令で指定された複数のロードリクエストを生成し、(2)個々のロードリクエストに対するロードデータを一旦ロードバッファに格納し、(3)全てのロードデータがロードバッファに格納されることを識別し、(4)ロードバッファから演算レジスタにロードデータを転送する情報処理装置が知られている。このような情報処理装置は、例えば、特許文献1に開示されている。
【0003】
図10は、従来の情報処理装置のうち、ロードデータがロードバッファに格納されたことを判定する整数判定部の構成を示す図である。図10において、701はTAG認識タイミング調整回路で、4つのポートで受けたTAGを8サイクル分持ち回り、ロードバッファからの読み出し順番に対応したタイミングでTAGを識別してカウントする機能を持つ。この整列判定部の動作を図11A及び11Bに示す。
【0004】
図11Aは、整列判定部の動作を示すタイムチャートであり、図11Bは、図11Aに続くタイムチャートである。図11A及び11Bにおいて、縦軸はシーケンスの識別番号(以下No.と示す)であり、横軸はクロック数である。図11A及び11Bは、従来の整列判定部において、理想的にTAGが到着する場合のロードデータをロードバッファ#0に格納する場合の動作を示している。なお、理想的にTAGが到着する様子は、図11AのNo.4〜7に示されている。従来の整数判定部では、図11BのNo.24に示すように、ロードバッファ#0整列判定カウンタが、32要素分のTAG数をカウントする。図11Bでは、No.24のクロック25で、32要素分のTAG数のカウントが完了することにより、ロードデータがロードバッファに格納されたことを判定している。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−252133号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、従来の整数判定部を含む情報処理装置では、ロードデータをロードバッファに一旦格納した後で、レジスタで持ちまわった各々のタイミングで、付随情報(TAG)を識別することにより、全てのリプライ(ロードデータ)が揃っているか否か判定(整列判定)を行なっている。そのため、従来の情報処理装置では、整列判定を行なってから、ロードバッファから演算レジスタにロードデータの転送を開始するまでに時間がかかるという問題を有する。
【0007】
本発明は、このような問題点に対してなされたものであり、ロードデータを演算レジスタに呼び出すまでに要する時間を短縮することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明の係る情報処理装置の一態様は、1つのロード命令から複数のロードリクエストを生成するロードリクエスト分解部と、個々の前記ロードリクエストに対するロードデータを格納し、演算レジスタに転送するロードバッファと、前記ロードリクエスト分解部によって生成された前記ロードリクエストを入力し、前記ロードリクエストに対する前記ロードデータをメインメモリから読み出すと共に、前記メインメモリによって生成された、前記ロードデータを前記ロードバッファから読み出す順番を示す付随情報を、前記ロードデータに先立って送出するよう制御するメモリネットワークと、前記メモリネットワークから受け付けられた当該付随情報に基づいて、前記付随情報に対応する前記ロードデータの到着の遅れを検出し、前記ロードデータの到着の遅れに基づいて、前記ロードバッファから前記演算レジスタへの前記ロードデータの読み出し開始時間を調整する整列判定部と、を備えたことを特徴とする。
【発明の効果】
【0009】
本発明に係る情報処理装置は、ロードデータを演算レジスタに呼び出すまでに要する時間を短縮することができる情報処理装置を提供することができる。
【図面の簡単な説明】
【0010】
【図1】本発明の実施の形態に係る情報処理装置の構成を示す図である。
【図2】本発明の実施の形態に係る情報処理装置における、整列判定部の構成を示す図である。
【図3】本発明の実施の形態に係る情報処理装置において、32個に分解されたロードリクエストに対するメモリからのロードデータが、ロードバッファでどのように格納されるかを示す図である。
【図4】本実施の形態に係る情報処理装置における、ロードバッファと演算レジスタの接続関係を示す図である。
【図5】本発明の実施の形態に係る情報処理装置の動作を示すフローチャートである。
【図6】本発明の実施の形態に係る情報処理装置において、要素番号毎に設定されるカウンタセット値を示す表である。
【図7A】本発明の実施の形態に係る情報処理装置の動作を示すタイムチャートである。
【図7B】本発明の実施の形態に係る情報処理装置の動作を示すタイムチャートであり、図7Aに続くタイムチャートである。
【図8A】本発明の実施の形態に係る情報処理装置において、TAG(及びロードデータ)の到着順序が乱れた場合の動作を示すタイムチャートである。
【図8B】本発明の実施の形態に係る情報処理装置において、TAG(及びロードデータ)の到着順序が乱れた場合の動作を示すタイムチャートであり、図8Aに続くタイムチャートである。
【図9A】比較例における、TAG(及びロードデータ)の到着順序が乱れた場合の動作を示すタイムチャートである。
【図9B】比較例における、TAG(及びロードデータ)の到着順序が乱れた場合の動作を示すタイムチャートであり、図9Aに続くタイムチャートである。
【図10】従来の整列判定部の構成を示す図である。
【図11A】従来の情報処理装置の動作を示すタイムチャートである。
【図11B】従来の情報処理装置の動作を示すタイムチャートであり、図11Aに続くタイムチャートである。
【発明を実施するための形態】
【0011】
以下、添付した図面を参照して本発明に係る情報処理装置について説明する。まず、発明の詳細な説明をする前に、後述の実施の形態に係る情報処理装置が示された図1を援用し、本発明に係る情報処理装置の概要について説明する。この情報処理装置は、ロードリクエスト分解部103、メモリネットワーク(行き)104、メモリネットワーク(帰り)106、整列判定部107、及びロードバッファ109を有している。
【0012】
ロードリクエスト分解部103は、1つのロード命令から複数のロードリクエストを生成する。メモリネットワーク(行き)104は、ロードリクエスト分解部103によって生成されたロードリクエストを入力し、ロードリクエストに対するロードデータをメインメモリ105から読み出す。メモリネットワーク(帰り)106は、メインメモリ105によって生成された付随情報を、ロードデータに先立って整列判定部107に送出する。付随情報には、ロードデータをロードバッファ109から読み出す順番を示す情報が含まれている。
【0013】
整列判定部107は、メモリネットワーク(帰り)106から受け付けられた付随情報に基づいて、付随情報に対応するロードデータの到着の遅れを検出する。そして、整列判定部107は、検出されたロードデータの到着の遅れに基づいて、ロードバッファ109から演算レジスタ110へのロードデータの読み出し開始時間を調整する。ロードバッファ109は、個々のロードリクエストに対するロードデータを格納し、演算レジスタ110に転送する。
【0014】
また、ロードリクエスト分解部103は、ロードリクエストの数を整列判定部107に送出する。整列判定部107は、ロードリクエストの数と、受け付けられた付随情報の数を比較することにより、ロードバッファ109から演算レジスタ110への読み出しの開始時間を調整する。
【0015】
このように、本発明に係る情報処理装置は、ロードデータに先立って付随情報を整列判定部107に送出し、整列判定部107において付随情報に基づいてロードデータの到着の遅れを検出する。これによって、従来のようにロードデータの到着を待って、すべてのロードデータが揃ったか否かを判定する処理よりも、先行して送られた付随情報に基づいて短時間内ですべてのロードデータがロードバッファに到着したのか否か判定することができる。この結果、ロードバッファ109から演算レジスタ110へのロードデータの転送開始までに要する時間を短縮することができる。
【0016】
実施の形態.
次に、本発明の詳細な構成について説明を行う。図1は、本発明の実施の形態に係る情報処理装置の構成を示す図である。図1において、101は命令発行部で、ロード命令を発行する。102は、使用ロードバッファ決定部で、101で発行されたロード命令が使用するロードバッファ番号を決定し、ロード命令とともに103に送出する。103は、ロードリクエスト分解部で、ロード命令を指定された要素数分のロードリクエストに分解して104に送出するとともに、102において決定されたロードバッファ番号と、ロード命令情報を、ロードバッファ使用通知として整列判定部107に送出する。ロードリクエスト分解部103は、要素数分のロードリクエストに分解する際に、ロードバッファの格納位置情報を付随情報としてロードリクエストに付与して送出する。
【0017】
104は、メモリネットワーク(行き)で、ロードリクエスト分解部103から送られたロードリクエストと付随情報をメモリアドレスに応じたバンク宛に振り分け、必要に応じてロードリクエスト間の調停を行いメインメモリ105に送出する。105は、メインメモリで、ロードリクエストで指定されたアドレスのデータを、RAM(Random Access Memory)から読み出してメモリネットワーク(帰り)106に送出する。その際、メインメモリ105は、読み出しシーケンスに入ってからデータが読み出されるまでの時間差を利用し、ロードリクエスト付随情報を、データ送出の10サイクル前にメモリネットワーク(帰り)106に送出する。図1中の点線矢印が、帰り側ロードリクエストの付随情報(以下、TAGと呼ぶ)の経路を示している。
【0018】
106は、メモリネットワーク(帰り)で、メインメモリ105から受けたTAGの情報から、送出先ポートを識別し、TAGとロードデータを調停し、TAGは整列判定部107に、データはロードバッファ109に送出する。その際、メモリネットワーク(帰り)106は、データに対して10サイクル先行して送られてくるTAGとロードデータのタイミングを保ったまま、整列判定部107及びロードバッファ109に、TAGとロードデータを送出する。
【0019】
107は、整列判定部で、メモリネットワーク(帰り)106より受け取ったTAGからロードバッファ番号を識別して、ロード命令で指定された要素数分のTAGが帰ってきたことを判別し、ロードバッファ109及び演算レジスタ110に、演算レジスタへのロードデータの転送開始指示を送出する。また、整列判定部107は、受け取ったTAGをリプライTAGタイミング調整部108に送出する。
【0020】
108は、リプライTAGタイミング調整部で、4ポート分のリプライTAGを整列判定部107より受け取って、9サイクル分タイミング調整し、メモリネットワーク(帰り)106よりデータがロードバッファ109に送られるタイミングに合わせて、TAGをロードバッファ109に送出する。109は、ロードバッファで、4ポート分のロードデータとTAGを受け取り、TAGからロードバッファ格納位置を識別してロードデータを格納する。また、ロードバッファ109は、整列判定部107からの演算レジスタ転送開始指示を受け取って、指定されたロードバッファ番号のロードデータを順番に読み出して演算レジスタ110に送出する。
【0021】
110は、演算レジスタで、整列判定部107からの演算レジスタ転送指示を受け取って、ロードバッファ109から送られてきたロードデータを、指定されたレジスタに格納する。また、演算レジスタ110は、整列判定部107から演算開始指示を受けると、格納されているデータを順番に読み出して演算器111に送出する。111は、演算器で、整列判定部107からの指示を受け、演算レジスタ110より送られてきたロードデータに対し、指定された演算を行った後、演算レジスタ110に格納する。なお、演算器111の出力を演算レジスタ110に格納する動作は、一般的な動作であるので図では省略している。
【0022】
図2は、本発明の実施の形態に係る情報処理装置における、整列判定部の構成を示す図である。ここで、ロードデータが保持されるロードバッファ109は、ロードバッファ#0とロードバッファ#1によって構成されている。整列判定部107は、ロードバッファ#0の演算レジスタ110への転送タイミングを管理する部分と、ロードバッファ#1の演算レジスタ110への転送タイミングを管理する部分により構成されている。
【0023】
ロードバッファ#0側の管理部分は、TAG数カウンタ201、カウンタセット値最大値検出回路202、整列判定カウンタ制御回路210、整列判定カウンタ271、ロード命令情報格納レジスタ270、整列タイミング調整カウンタ制御回路211、整列タイミング調整カウンタ272、演算レジスタ転送開始条件確認回路220を備えている。
【0024】
一方、ロードバッファ#1側の管理部分は、TAG数カウンタ203、カウンタセット値最大値検出回路204、整列判定カウンタ制御回路212、整列判定カウンタ275、ロード命令情報格納レジスタ274、整列タイミング調整カウンタ制御回路213、整列タイミング調整カウンタ276、演算レジスタ転送開始条件確認回路221を備えている。
【0025】
図2において、250は、TAG受付レジスタで、メモリネットワーク(帰り)106より送出された4ポート分のTAGを受け取り、1サイクル保持する。TAG受付レジスタ250は、ロードバッファ#0と#1で共有されている。
【0026】
ロードバッファ#0側の管理部分とロードバッファ#1側の管理部分は、略同一構成を備えている。以下では、ロードバッファ#0側を例にして各要素の説明を行う。201は、ロードバッファ#0用のTAG数カウンタで、ロードバッファ#0宛ての1クロック中のTAG数をカウントする。本実施の形態では、カウント結果の最大値は、ポート数と同じ「4」である。
【0027】
202は、ロードバッファ#0用のカウンタセット値最大値検出回路で、ロードバッファ#0宛てのTAGから要素番号を識別し、要素番号に対応したカウンタセット値の最大値を検出する。具体的には、カウンタセット値最大値検出回路202は、予め定められた図6の表に従って、複数のTAGに含まれる要素番号に対応するカウンタセット値をそれぞれ参照し、参照したカウンタセット値のうち、最大のカウンタセット値を保持する。換言すれば、カウンタセット値最大値検出回路202は、TAGに含まれる要素番号に基づいて、TAGに対応するロードデータの遅延を検出する。また、カウンタセット値最大値検出回路202は、要素番号に対応するカウンタセット値の最大値を保持することで、複数のロードデータの有する遅延時間のうち、最大の遅延時間に基づいて転送開始時間を調整する機能を果たしている。
【0028】
210は、ロードバッファ#0用の整列判定カウンタ制御回路である。整列判定カウンタ制御回路210は、整列判定カウンタ271の値からTAG数カウンタ201の出力値を引いて、整列判定カウンタ271に戻す。また、ロードバッファ#0用の整列判定カウンタ制御回路210は、ロードリクエスト分解部103よりロードバッファ使用通知を受けると、要素数情報を識別して、要素数を整列判定カウンタ271にセットする機能を持つ。
【0029】
211は、ロードバッファ#0用の整列タイミング調整カウンタ制御回路で、カウンタセット値最大値検出回路202の出力であるカウンタセット値の最大値と、整列タイミング調整カウンタ272の値を比較し、カウンタセット値最大値検出回路202の出力値が、整列タイミング調整カウンタ272の値以上であった場合には、カウンタセット値最大値検出回路202の出力値を、整列タイミング調整カウンタ272にセットする。整列タイミング調整カウンタ制御回路211は、それ以外の場合は、整列タイミング調整カウンタ272に保持されている値を−1とした後、その値を整列タイミング調整カウンタ272に保持する。すなわち、整列タイミング調整カウンタ制御回路211は、付随情報に基づいて、ロードデータの到着の遅れを検出し、到着の遅れを考慮して転送開始時間を調整する機能を果たしている。
【0030】
なお、整列タイミング調整カウンタ制御回路211は、ロードリクエスト分解部103よりロードバッファ使用通知を受け取ったタイミングでは、特別な制御は行わず、TAGがメモリネットワーク(帰り)106より戻ったタイミングで上記の動作を行う。
【0031】
270は、ロードバッファ#0用のロード命令情報格納レジスタで、ロードリクエスト分解部103よりロードバッファ使用通知を受けると、演算レジスタ番号等のロード命令情報を保持する機能をもつ。ロード命令情報格納レジスタ270は、演算レジスタ転送開始指示を送出するタイミングでリセットされる。271は、ロードバッファ#0用の整列判定カウンタで、メインメモリ105からの残りロードデータ要素数値が格納される。272は、ロードバッファ#0用の整列タイミング調整カウンタで、整列判定カウンタ271の値が"0"となった場合に、演算レジスタ転送開始指示を送出するまでのサイクル数(待ちサイクル数)が格納される。
【0032】
220は、ロードバッファ#0用の演算レジスタ転送開始条件確認回路であり、以下の(1)乃至(5)用件をすべて満足した場合に、演算レジスタ転送開始信号を調停回路230に出力する。
(1)有効なロード命令がロード命令情報格納レジスタ270に格納されていること
(2)整列判定カウンタ271の出力が"0"であること
(3)整列タイミング調整カウンタ272の出力が"0"であること
(4)ロードデータ転送パスがビジーで無いこと
(5)転送先の演算レジスタがビジーで無いこと
【0033】
また、ロードバッファ#0とロードバッファ#1で共有される273は、ビジーフラグ群である。ビジーフラグ群は、ロードバッファ109から演算レジスタ110へのロードデータ転送パスのビジーフラグやデータコヒーレンシを考慮した演算レジスタへの書き込みタイミング制御フラグなどから構成されている。データパス制御やコヒーレンシ制御は一般的な動作であるため、ここでは詳しい機能・動作については省略する。230は、調停回路で、演算レジスタ転送開始条件確認回路220と221の両方から演算レジスタ転送開始信号が送出された場合に、先行のロード命令を有効にするなどの調停を行って演算レジスタ転送開始信号保持レジスタ280に出力する。280は、演算レジスタ転送開始信号保持レジスタで、1サイクルの間、演算レジスタ転送開始信号を保持する。
【0034】
以下、ロードバッファ#1側についても、ロードバッファ#0用の各要素と同じ機能を有する要素を有する。すなわち、203は、TAG数カウンタ(ロードバッファ#1用)で、TAG数カウンタ(ロードバッファ#0用)201と同等の機能を持つ。204は、カウンタセット値最大値検出回路(ロードバッファ#1用)で、カウンタセット値最大値検出回路(ロードバッファ#0用)202と同等の機能を持つ。274は、ロード命令情報格納レジスタ(ロードバッファ#1用)で、ロード命令情報格納レジスタ(ロードバッファ#0用)270と同等の機能を持つ。275は、整列判定カウンタ(ロードバッファ#1用)で、整列判定カウンタ(ロードバッファ#0用)271と同等の機能を持つ。
【0035】
276は、整列タイミング調整カウンタ(ロードバッファ#1用)で、整列タイミング調整カウンタ(ロードバッファ#0用)272と同等の機能を持つ。212は、整列判定カウンタ制御回路(ロードバッファ#1用)で、整列判定カウンタ制御回路(ロードバッファ#0用)210と同等の機能を持つ。213は、整列タイミング調整カウンタ制御回路(ロードバッファ#1用)で、整列タイミング調整カウンタ制御回路(ロードバッファ#0用)211と同等の機能を持つ。221は、演算レジスタ転送開始条件確認回路(ロードバッファ#1用)で、演算レジスタ転送開始条件確認回路(ロードバッファ#0用)220と同等の機能を持つ。
【0036】
次に、ロードバッファ109の詳細な構成について説明する。図3には、32個に分解されたロードリクエストに対する、メモリからの32個のロードデータe00〜e31が、ロードバッファ109において格納される様子が示されている。ロードバッファ109は、ロードバッファ要素300乃至303を有している。また、ロードバッファ要素300乃至303は、それぞれロードバッファ#0とロードバッファ#1に割り当てられている。図3では、ロードバッファ要素300乃至303は、同時に2つのロード命令分のロードデータを格納する容量があることを示している。
【0037】
具体的には、ロードバッファ要素300は、ポート#0に入力されたロードデータを格納するロードバッファの一部であり、ロードデータe00、e04、e08、e12、e16、e20、e24、e28が格納される。ロードバッファ要素300は、整列判定部107から演算レジスタ転送開始信号が入力されると、e00、e04、e08、e12、e16、e20、e24、e28の順番でロードデータを読み出して演算レジスタ110に送出する。
【0038】
ロードバッファ要素301は、ポート#1に入力されたロードデータを格納するロードバッファの一部で、ロードバッファ要素300と同等の機能を持つ。格納されるロードデータは、ロードバッファ要素300と異なり、ロードデータe01、e05、e09、e13、e17、e21、e25、e29が格納される。読み出される順番は、e01から順に演算レジスタ110に読み出される。
【0039】
ロードバッファ要素302は、ポート#2に入力されたロードデータを格納するロードバッファの一部で、ロードバッファ要素300と同等の機能を持つ。格納されるロードデータは、ロードデータe02、e06、e10、e14、e18、e22、e26、e30が格納される。読み出される順番は、ロードデータe02から順番に読み出される。ロードバッファ要素303は、ポート#3に入力されたロードデータを格納するロードバッファの一部で、ロードバッファ要素300と同等の機能を持つ。格納されるロードデータは、ロードデータe03、e07、e11、e15、e19、e23、e27、e31であり、e03から順に読み出される。
【0040】
図4は、本実施の形態に係る情報処理装置における、ロードバッファと演算レジスタの接続関係を示す図である。ロードバッファ109は、4つのSRAM(Static Random Access Memory)からなるロードバッファ要素300〜303により構成されている。ロードバッファ要素300には、TAGとロードデータが同じタイミングで届くが、ロードバッファ要素300において、TAGからSRAMのライトアドレスを生成し、ロードデータが到着した2サイクル後のタイミングでロードデータをSRAMに書き込む。
【0041】
ロードバッファ要素300は、整列判定部107から演算レジスタ転送開始信号が届くと、演算レジスタ転送開始信号からリードアドレスを生成し、演算レジスタ転送開始信号が届いた3サイクル後に読み出されたロードデータを演算レジスタ110に送出する。ロードバッファ109は、演算レジスタ転送開始信号が届いた後、指定された要素数の読み出しが完了するまでリードアドレスをインクリメントして連続してロードデータを演算レジスタ110に送出する。
【0042】
次に、このように構成された情報処理装置の動作について説明する。図5は、本発明の実施の形態に係る情報処理装置の動作を示すフローチャートであり、図7A及び7Bは、本発明の実施の形態に係る情報処理装置の動作を示すタイムチャートである。図7A及び7Bにおいて、縦軸はシーケンスの識別番号を示し、横軸はクロック数を示している。本説明では、シーケンスの識別番号を「No.」と示し、クロック数を、「クロック」と示す。はじめに、命令発行部101から、要素数32のロード命令が発行されると、使用ロードバッファ決定部102は、使用するロードバッファ番号(例えば、#0)を決定する。また、使用ロードバッファ決定部102は、要素数と同じ32個分に相当するロードリエストを生成する(S400)。
【0043】
ロードリクエスト分解部103は、使用ロードバッファ決定部102によって生成されたロードリクエストを、要素数32個のロードリクエストに分解すると共に、ロードバッファ番号#0とロード命令情報から成るロードバッファ使用通知を整列判定部107に送出する(S401)。なお、ロードリクエスト分解部103から送出されるロードバッファ使用通知は、図7BのタイムチャートのNo.22のクロック2に示されている。
【0044】
また、整列判定部107は、ロードリクエスト分解部103からロードバッファ使用通知を受けると、ロード命令情報格納レジスタ270に、ロード命令情報をセットする(S401)。そして、整列判定部107は、整列判定カウンタ271に、要素数"32"をセットする(S402)。なお、ロードバッファ#0用の整列判定カウンタ271に要素数"32"がセットされる動作は、図7BのタイムチャートのNo.24のクロック3に示されている。
【0045】
ここで、ロードリクエスト分解部103で生成された要素数32個分のロードリクエストは、メモリネットワーク(行き)104でアドレスが指定するメモリバンクにルーティングされてメインメモリ105の1つのメモリバンクに送られる。メインメモリ105は、ロードリクエストを受けつけると、RAMの読み出しシーケンスを開始する。メインメモリ105は、読み出したロードデータ出力の10サイクル前に、TAGをメモリネットワーク(帰り)106に送出する。その後、メインメモリ105は、TAGの10サイクル後に、ロードデータをメモリネットワーク(帰り)106に送出する。
【0046】
メモリネットワーク(帰り)106は、受け取ったTAGから、ポート情報を識別してルーティングを行い整列判定部107に送出する。整列判定部107は、到着したTAGを識別し、ロードバッファ#0の到着TAG数と、ロードバッファ#1の到着TAG数を201及び203でカウントする(S403)。整列判定部107によりカウントされる到着TAG数については、図7AのNo.20に示されている。具体的には、No.20において、クロック7で識別された到着TAG数は"4"である。
【0047】
整列判定カウンタ制御回路210は、整列判定カウンタ271に格納されているNo.24のクロック7の値"32"から、クロック7で到着した到着TAG数201の出力値"4"を引いた値である"28"を整列判定カウンタ271にセットする(S404)。この動作を、図7BのタイムチャートのNo24のクロック8に示す。
【0048】
ロードバッファ#0用のカウンタセット値最大値検出回路202は、ロードバッファ#0の到着TAGから、要素番号を識別し、図6の表に従って要素番号に対応するカウンタセット値を得る。具体的には、クロック7では、No.4のポート#0には要素00が、No.5のポート#1には要素01が、No.6のポート#2には要素02が、No.7のポート#3には要素03が到着している。図6を参照すれば、要素00、01、02、03に対応するカウンタセット値は、順に"7"、"7"、"7"、"7"と全て"7"である。よって、カウンタセット値最大値検出回路202の出力値は、最大値である"7"に設定される。この最大値は、整列タイミング調整カウンタ制御回路211に出力される(S405)。この動作は、図7BのタイムチャートのNo.27のクロック7に示されている。
【0049】
次に、整列タイミング調整カウンタ制御回路211は、カウンタセット値最大値検出回路202の出力値"7"と、ロードバッファ#0用の整列タイミング調整カウンタ272の格納値"0"を比較する(S406)。ここで、カウンタセット値最大値検出回路202の出力値"7"は、整列タイミング調整カウンタ272の格納値"0"以上であるため(S406においてNO)、整列タイミング調整カウンタ制御回路211は、カウンタセット値最大値検出回路202の出力値"7"を整列タイミング調整カウンタ272にセットする(S408)。この動作は、図7BのタイムチャートのNo.30のクロック8に示されている。
【0050】
次に、演算レジスタ転送開始条件確認回路220は、整列タイミング調整カウンタ値と整列判定カウンタ値が、いずれもが"0"であるか否か判定する(S409)。ここで、図7Bのクロック8において、整列判定カウンタの値は"28"であり、整列タイミング調整カウンタの値は"7"であるため(S409においてNO)、ステップS403に戻る。図7BのタイムチャートのNo.32のクロック8において、演算レジスタ転送開始条件確認回路220は、演算レジスタ転送開始信号を有効としない。
【0051】
ステップS403に戻り、整列判定部107は、到着したTAGを識別し、ロードバッファ#0の到着TAG数と、ロードバッファ#1の到着TAG数を201及び202でカウントする。ここで、図7AのNo.4〜7のクロック8では、ポート#0には要素04が、ポート#1には要素05が、ポート#2には要素06が、ポート#3には要素07が到着している。そのため、到着TAG数であるTAG数カウンタ201の出力値は、"4"となる。この動作は、図7AのタイムチャートのNo.20のクロック8に示されている。
【0052】
ステップS404に進み、整列判定カウンタ制御回路210は、整列判定カウンタ271に格納されている値"28"からTAG数カウンタ201の出力値"4"を引いて、"24"を整列判定カウンタ271にセットする。この動作は、図7BのNo.24のクロック9に示されている。
【0053】
続いて、ステップS405に進み、カウンタセット値最大値検出回路202は、ロードバッファ#0の到着TAGから、要素番号を識別し、図6の表に従って要素番号に対応するカウンタセット値を得る。ここで、クロック8では、各ポートの要素番号に相当するカウンタセット値は、順に"6"、"6"、"6"、"6"と全て"6"である。よって、カウンタセット値最大値検出回路202は、最大値である"6"を整列タイミング調整カウンタ制御回路211に出力する。この動作は、図7BのNo.27のクロック8に示されている。
【0054】
ステップS406において、カウンタセット値最大値検出回路202の出力値"6"が整列タイミング調整カウンタ272の格納値"7"より小さいため(ステップS406においてYES)、整列タイミング調整カウンタ制御回路211は、"7"を−1し、算出した値"6"を、整列タイミング調整カウンタ272にセットする。この動作は、図7BのNo.30のクロック9に示されている。
【0055】
ステップS409において、演算レジスタ転送開始条件確認回路220は、整列判定カウンタ271および整列タイミング調整カウンタ272の出力が"0"であるか否か判定する。いずれも"0"でないため(ステップS409においてNO)、ステップS403に戻る。すなわち、図7BのNo.32のクロック9に示すように、演算レジスタ転送開始条件確認回路220は、演算レジスタ転送開始信号は有効としない。
【0056】
以降、32個の要素中28個の要素のTAGが、整列判定部107に到着するまで、ステップ403〜S409の処理が繰り返される。この間、整列判定カウンタ271の値は"28"、"24"、"20"、"16"、"12"、"8"、"4"と順に変化する。一方、整列タイミング調整カウンタ272の値は、"7"、"6"、"5"、"4"、"3"、"2"、"1"と変化する。
【0057】
次に、図7AのタイムチャートのNo.4〜7のクロック14においては、32要素中、最後の4要素が到着している。具体的には、ポート#0には要素28が、ポート#1には要素29が、ポート#2には要素30が、ポート#3には要素31がそれぞれ到着している。よって、ステップS403において、TAG数カウンタ201の出力値は"4"となる。この動作は、図7AのNo.20のクロック14に示されている。
【0058】
ステップS404では、整列判定カウンタ271に保持されている値"4"から、TAG数カウンタ201の出力値"4"を減ずることで、整列判定カウンタ271には"0"が格納される。この動作は、図7BのNo.24のクロック15に示されている。
【0059】
続いて、ステップS405に移り、図6の表を参照し、各要素番号に対応するカウンタセット値を算出する。ここで、図6では、各用度番号に対応するカウンタセット値は、順に"0"、"0"、"0"、"0"と全て"0"である。よって、カウンタセット値最大値検出回路202の出力値は最大値である"0"を、整列タイミング調整カウンタ制御回路211に出力する。この動作は、図7BのNo.27のクロック14に示されている。
【0060】
ステップS406において、整列タイミング調整カウンタ制御回路211は、カウンタセット値最大値検出回路202の出力値"0"が整列タイミング調整カウンタ272の格納値"1"より小さいため(ステップS406においてYES)、整列タイミング調整カウンタ272の格納値"1"を−1して"0"を整列タイミング調整カウンタ272にセットする(ステップS407)。この動作は、図7BのタイムチャートのNo.30のクロック15に示されている。
【0061】
ステップS409において、演算レジスタ転送開始条件確認回路220は、整列判定カウンタ271及び整列タイミング調整カウンタ272の出力がどちらも"0"であることを確認する。また、演算レジスタ転送開始条件確認回路220は、ロード命令情報格納レジスタ270に、有効なロード命令情報が格納されており、かつ、ビジーフラグが立っていないことを確認し、演算レジスタ転送開始信号を有効とする。
【0062】
ここで、ロードバッファ#1側には有効なロード命令情報が存在しないため、ロードバッファ#1用の演算レジスタ転送開始条件確認回路221の出力は有効とされない。調停回路230は、ロードバッファ#0用の演算レジスタ転送開始条件確認回路220が出力する演算レジスタ転送開始信号を選択し、演算レジスタ転送開始信号保持レジスタ280に出力する。この動作は、図7BのタイムチャートのNo.32のクロック16に示されている。
【0063】
その後、演算レジスタ転送開始信号保持レジスタ280から、ロードバッファ109及び演算レジスタ110に対して演算レジスタ転送開始信号を送出する(ステップS410)。ロードバッファ109では、演算レジスタ転送開始指示をレジスタで受けてリードアドレスを生成する。この動作は、図7BのタイムチャートのNo.34のクロック17に示されている。
【0064】
そして、整列判定部107は、ロードバッファ109及び110に対して演算レジスタ転送開始指示を送出すると同時に、ステップS411において、ロードバッファ#0の開放通知をロードリクエスト分解部103に送出し、ロード命令情報格納レジスタ270をクリアする。この動作を、図7BのタイムチャートのNo.49のクロック17に示す。
【0065】
ロードバッファ109は、リードアドレスをインクリメントして順次ロードデータを読み出して、演算レジスタ110に送出する。演算レジスタ110は、整列判定部107より演算レジスタ転送開始指示を受けた後、ロードバッファ109より送られてくるロードデータを、指示された演算レジスタに格納していく。
【0066】
以降、ロードバッファ109は、32要素全部を読み出し、演算レジスタ110は、受け取ったロードデータを32要素分格納する。これにより、1つのロード命令に対する一連の動作が完了する。
【0067】
次に、図8A及び8Bを用いて、本実施の形態に係る情報処理装置の動作を説明する。図8A及び8Bは、TAG(及びロードデータ)の到着順序が乱れた場合のタイムチャートである。なお、基本的な動作については、変更が無いため、特徴のある箇所に着目して説明する。また、図8A及び8Bのシーケンスの識別番号(No.)は、図7A及び7Bのシーケンスの識別番号(No.)に対応しているため、各シーケンス名は図8A及び8Bでは省略している。
【0068】
図7A及び7Bでは、TAGが順番通り理想的に到着する場合を示しており、例えば、図7A及び7Bにおいて、要素00のTAGはNo.4のクロック7で整列判定部107に到着している。しかしながら、図8AではNo.4のクロック15で要素00が到着している。また、図8Aでは、さらにその1サイクル後(クロック16)に、要素28が到着している。また、図8Aでは、No.4のクロック14で示すように、TAGが到着しないタイミングも存在する。なお、実際の情報処理装置では、メモリバンクビジーやネットワーク競合などの影響により、図8A及び8Bに示すように、到着する要素の順番が入れ替わったり、間隙が空くことは頻繁に発生する現象である。
【0069】
次に、図5のフローチャートに従って、図8A及び8Bの場合の情報処理装置の動作を説明する。なお、ステップS400〜402については、前述の通りであるので省略する。ステップS403において、1クロック内で到着したTAG数がカウントされる。例えば、図8Aのクロック7では、ロードバッファ#0宛てのTAGの到着数は"3"なのでNo.20のクロック7におけるTAG数カウンタ201の出力値も"3"となる。
【0070】
ステップS404では、クロック7において保持される整列判定カウンタ271の値"32"から、到着TAG数"3"を減じた値である"29"が、整列判定カウンタ271に格納される。この動作が、No.24のクロック8に示されている。
【0071】
ステップS405では、最大カウントセット値が算出される。具体的には、図8AのNo.4〜7には、クロック14において要素26と要素31が到着している。図6を参照すれば、各要素26、31に対応するカウンタセット値は"1"と"0"である。よって、最大値である"1"が、カウンタセット値最大値検出回路202から出力される。
【0072】
ステップS406では、整列タイミング調整カウンタ272の値がカウンタセット値最大値検出回路202の出力値よりも大きいか否か判定される。クロック14において、整列タイミング調整カウンタ272の値"1"は、カウンタセット値最大値検出回路202の出力値"1"と同じなので(ステップS406においてNO)、カウンタセット値最大値検出回路202の出力値"1"が、整列タイミング調整カウンタ272にセットされる(ステップS408)。
【0073】
一方、特徴的なクロックについて着目すると、No.4〜7のクロック15では、遅れて到着した要素00と要素30が到着しており、各要素00、30に対応するカウンタセット値は"7"と"0"である。よって、ステップS405では、最大値である"7"がカウンタセット値最大値検出回路202より出力される。ステップS406では、整列タイミング調整カウンタ272の値"1"は、カウンタセット値最大値検出回路202の出力値"7"より小さいので(ステップS406においてNO)、カウンタセット値最大値検出回路202の出力値"7"を、整列タイミング調整カウンタ272にセットする。
【0074】
次に、図8AのNo.4〜7のクロック16では、要素28と要素29と要素23が到着している。ステップS405において、要素に対応するカウンタセット値はそれぞれ"0"と"0"と"2"なので、最大値"2"がカウンタセット値最大値検出回路202より出力される。ステップS406では、整列タイミング調整カウンタ272の値"7"はカウンタセット値最大値検出回路202の出力値である"2"より大きいので(S406においてYES)、"7"を−1した"6"を整列タイミング調整カウンタ272にセットする。
【0075】
また、クロック16では、最後の3つのTAGが到着したため、ステップS404において、整列判定カウンタ271の値に"0"がセットされる。
【0076】
その後、TAGの到着は無いため、No.30に示される整列タイミング調整カウンタ272の値は、1ずつ減算され、クロック23で"0"となる。そして、クロック23において、整列判定カウンタ271(No.24)と整列タイミング調整カウンタ272(No.30)の値が共に"0"となるため、演算レジスタ転送開始条件確認回路220は、このタイミングで、有効な演算レジスタ転送開始信号を出力する。この動作が図8BのNo.32のクロック24に示されている。
【0077】
そして図7A及びBと同様に、調停回路230と演算レジスタ転送開始信号保持レジスタ280を経て、演算レジスタ転送開始信号がロードバッファ109及び演算レジスタ110に送出される。これにより、ロードデータの転送が開始される。
【0078】
このように、本実施の形態に係る情報処理装置では、整列判定カウンタ271と整列タイミング調整カウンタ272の2つのカウンタ制御を連携させることで、ロードバッファにてデータ一貫性を損なうことなく、最速のタイミングで演算レジスタ110にロードデータを格納可能となる。
【0079】
また、本実施の形態に係る情報処理装置では、TAGをロードデータに先行して送出する構成を有することで、カウンタを利用して最適なタイミングでロードバッファから演算レジスタへのデータ転送を開始できる。そのため、少ない面積の投資でロードTATを短縮し装置の処理能力を向上させることが可能となる。
【0080】
次に、図9A及び9Bの比較例を用いて、さらに本実施の形態の効果について説明する。本実施の形態では、カウンタセット値最大値検出回路202の最大値と整列タイミング調整カウンタ272の値と比較して、転送開始時間を調整していた。これに対し、図9A及び9Bの比較例では、カウンタセット値最大値検出回路202の出力値が"1"以上であった場合は、カウンタセット値最大値検出回路202の最大値と整列タイミング調整カウンタ272の値と比較することなく、整列タイミング調整カウンタ272に、カウンタセット値最大値検出回路202の出力値をセットする論理を有しているものとする。なお、図9A及び9BのTAG到着タイミングは、図8A及び9Bと同じであるとする。また、各シーケンス番号(No.)は、図7A及び7Bの(No.)にそれぞれ対応しているため、図示については省略する。
【0081】
この比較例では、クロック17で、No.30に示される整列タイミング調整カウンタ272の値に"2"がセットされている。そのため、カウンタ値がディクリメントされ、2サイクル後のNo.30のクロック19で、整列タイミング調整カウンタ272の値が"0"となる。これをトリガとして、演算レジスタ転送開始指示がロードバッファ109及び演算レジスタ110に送出され、ロードデータの転送が開始される。この図9A及び9Bの比較例では、カウンタセット値最大値検出回路202の最大値と整列タイミング調整カウンタ272の値と比較していないため、要素00のロードデータがロードバッファに格納される前に、読み出しが開始されてしまうことがわかる。そのため、比較例では、データの一貫性が損なわれることが分かる。
【0082】
これに対し、本実施の形態に係る情報処理装置では、カウンタセット値最大値検出回路202の最大値と整列タイミング調整カウンタ272の値と比較し、TAG到着の最大遅延時間を考慮して読み出しを開始することができる。そのため、図8A及びBに示すように、データの一貫性が損なわれることなく、ロードデータを読み出すことができる。
【0083】
また、背景技術に記載した従来の情報処理装置では、図11Aに示すように、レジスタ701にてリプライTAGのタイミング調整を行っていた。すなわち、読み出し順番に対応するタイミングで、有効なリプライTAGであることを識別していた。そのため、必要論理を構成する場合は、同時読み出し数が8以上の特殊なRAMを使用するか、レジスタを用いる必要が有り、必要面積が増大してしまうという問題点があった。
【0084】
これに対し、本実施の形態に係る情報処理装置のリプライTAGタイミング調整機能は、108の機能を説明しているとおり、9サイクル分ロードデータを転送するタイミングを調整する機能のみを追加すればよいので、Write Port1個、Read Port1個(1R1W)の汎用的なRAMで構成することが可能であり、必要面積が少なく済むという利点がある。
【0085】
なお、本発明は、上記の説明に限られるものではなく、当業者によって種々の設計変更を実施することが可能である。例えば、メインメモリ105のメモリバンク数とロードバッファ109のポート数は一致している必要は無く、さまざまなバリエーションを取ることが可能である。また、ロードバッファ109のSRAM構成やロードバッファ数および演算レジスタ110への出力線数もさまざまなバリエーションを取ることが可能である。また、1つのロード命令で32個以下または32個以上のロードリクエストに分解するような命令セットの構成とすることも可能である。
【0086】
また、レジスタ挿入によるクロック高速化についても対応可能である。また、1つのロード命令から生成されるロードリクエスト数が増える場合には、ロードバッファから演算レジスタへのデータ転送サイクルが増加する分、TAGをロードデータに先行して送出するとTAT短縮効果が大きくなる。
【0087】
具体的には、1つのロード命令から64個のロードリクエストが生成される命令セットでは、実施例の延長で実装するとロードバッファから演算レジスタへの転送サイクルが16サイクルとなり、実施例より8サイクル増加する。この場合、実施の形態ではロードデータに対して10サイクル早くTAGを送出していたところを、18サイクル早くTAGを送出する構成とすると、最大のロードTAT短縮効果が得られる。
【0088】
なお、この場合、図6のカウンタセット値の対応表は次のような手順により作成することができる。すなわち、最大のTAT短縮効果を得るために、TAGを18サイクル早く送出する構成では、ロードバッファ読み出し順で一番最後となるサイクルの要素番号"60"、"61"、"62"、"63"のカウンタセット値を0として、その1つ前に読み出される要素番号"56"、"57"、"58"、"59"のカウンタセット値を1とする。このように読み出し順番が早くなる毎にカウンタセット値を増やしていくようにして対応表を作成することができる。この場合、要素番号0、1、2、3のカウントセット値は15となる。
【0089】
また、図5のフローチャートに示される情報処理方法は、プログラムとして実施することもでき、このプログラムは、様々な記録媒体に格納することもできる。
【符号の説明】
【0090】
101 命令発行部
102 使用ロードバッファ決定部
103 ロードリクエスト分解部
105 メインメモリ
104、106 メモリネットワーク
107 整列判定部
109 ロードバッファ
110 演算レジスタ
111 演算器
201、203 TAG数カウンタ
202、204 カウンタセット値最大値検出回路
210、212 整列判定カウンタ制御回路
211、213 整列タイミング調整カウンタ制御回路
220、221 演算レジスタ転送開始条件確認回路
230 調停回路
270、274 ロード命令情報格納レジスタ
271、275 整列判定カウンタ
272、276 整列タイミング調整カウンタ
273 ビジーフラグ群
280 演算レジスタ転送開始信号保持レジスタ
300〜303 ロードバッファ要素

【特許請求の範囲】
【請求項1】
1つのロード命令から複数のロードリクエストを生成するロードリクエスト分解部と、
個々の前記ロードリクエストに対するロードデータを格納し、演算レジスタに転送するロードバッファと、
前記ロードリクエスト分解部によって生成された前記ロードリクエストを入力し、前記ロードリクエストに対する前記ロードデータをメインメモリから読み出すと共に、前記メインメモリによって生成された、前記ロードデータを前記ロードバッファから読み出す順番を示す付随情報を、前記ロードデータに先立って送出するよう制御するメモリネットワークと、
先立って送出された前記付随情報に基づいて、前記付随情報に対応する前記ロードデータの到着の遅れを検出し、前記ロードデータの到着の遅れに基づいて、前記ロードバッファから前記演算レジスタへの前記ロードデータの読み出し開始時間を調整する整列判定部と、を備えた情報処理装置。
【請求項2】
前記ロードリクエスト分解部は、前記ロードリクエストの数を前記整列判定部に送出し、
前記整列判定部は、前記ロードリクエストの数と、受け付けられた前記付随情報の数を比較することにより、前記読み出しの開始時間を調整する、請求項1に記載の情報処理装置。
【請求項3】
前記付随情報を、当該付随情報に対応する前記ロードバッファのタイミングに調整して前記ロードバッファに送出する付随情報タイミング調整部を更に備えた請求項1又は2に記載の情報処理装置。
【請求項4】
前記整列判定部は、複数の前記付随情報のうち、到着が最も遅れた前記付随情報に対応する前記ロードデータの到着の遅れに基づいて、前記ロードバッファから前記演算レジスタへの前記ロードデータの前記読み出し開始時間を調整する、請求項1乃至3のうちいずれか1項に記載の情報処理装置。
【請求項5】
前記整列判定部は、前記ロードデータを前記ロードバッファから読み出す順番と、前記読み出し開始時間を遅延させる遅延時間とが対応付けられた表を参照することで、前記付随情報に基づき前記読み出し開始時間を設定する、請求項1乃至4のうちいずれか1項に記載の情報処理装置。
【請求項6】
前記整列判定部は、到着する前記付随情報毎に前記表を参照することで前記読み出し開始時間の前記遅延時間を設定し、最も大きい前記遅延時間に応じて前記読み出し開始時間を更新する、請求項5に記載の情報処理装置。
【請求項7】
1つのロード命令から複数のロードリクエストを生成し、
生成された前記ロードリクエストを入力し、前記ロードリクエストに対する前記ロードデータをメインメモリから読み出し、
前記メインメモリによって生成された、前記ロードデータをロードバッファから演算レジスタへ読み出す順番を示す付随情報を、前記ロードデータに先立って送出し、
先立って送出された前記付随情報に基づいて、前記付随情報に対応する前記ロードデータの到着の遅れを検出し、
前記ロードデータの到着の遅れに基づいて、前記ロードバッファから前記演算レジスタへの前記ロードデータの読み出し開始時間を調整する、情報処理方法。
【請求項8】
前記ロードリクエストの数と、受け付けられた前記付随情報の数を比較することにより、前記読み出しの開始時間を調整する、請求項7に記載の情報処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図8A】
image rotate

【図8B】
image rotate

【図9A】
image rotate

【図9B】
image rotate

【図10】
image rotate

【図11A】
image rotate

【図11B】
image rotate