IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧 ▶ 大学共同利用機関法人情報・システム研究機構の特許一覧

<>
  • 特開-演算処理装置および演算処理方法 図1
  • 特開-演算処理装置および演算処理方法 図2
  • 特開-演算処理装置および演算処理方法 図3
  • 特開-演算処理装置および演算処理方法 図4
  • 特開-演算処理装置および演算処理方法 図5
  • 特開-演算処理装置および演算処理方法 図6
  • 特開-演算処理装置および演算処理方法 図7
  • 特開-演算処理装置および演算処理方法 図8
  • 特開-演算処理装置および演算処理方法 図9
  • 特開-演算処理装置および演算処理方法 図10
  • 特開-演算処理装置および演算処理方法 図11
  • 特開-演算処理装置および演算処理方法 図12
  • 特開-演算処理装置および演算処理方法 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023133850
(43)【公開日】2023-09-27
(54)【発明の名称】演算処理装置および演算処理方法
(51)【国際特許分類】
   G06F 9/38 20180101AFI20230920BHJP
   G06F 9/34 20180101ALI20230920BHJP
【FI】
G06F9/38 350A
G06F9/34 350A
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2022039071
(22)【出願日】2022-03-14
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(71)【出願人】
【識別番号】504202472
【氏名又は名称】大学共同利用機関法人情報・システム研究機構
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】五島 正裕
(72)【発明者】
【氏名】葛 毅
【テーマコード(参考)】
5B013
5B033
【Fターム(参考)】
5B013AA12
5B013CC03
5B013DD01
5B033AA09
5B033AA14
5B033DB03
(57)【要約】
【課題】メモリアクセス命令に含まれるアドレスとメモリアクセス命令を保持するキューに保持されたアドレスとの衝突を判定する衝突判定部の回路規模を低減する。
【解決手段】演算処理装置は、少なくとも1つのアドレスを含むメモリアクセス命令を保持するキューと、メモリアクセス命令に複数のアドレスが含まれる場合、前記複数のアドレスのビットを縮約して縮約アドレスを生成する縮約アドレス生成部と、前記縮約アドレスと前記キューに保持されたアドレスとの衝突を判定する衝突判定部と、前記衝突判定部による判定結果に基づいて、前記キューに保持されたメモリアクセス命令の処理を制御するアクセス制御部と、を有する。
【選択図】図1
【特許請求の範囲】
【請求項1】
少なくとも1つのアドレスを含むメモリアクセス命令を保持するキューと、
メモリアクセス命令に複数のアドレスが含まれる場合、前記複数のアドレスのビットを縮約して縮約アドレスを生成する縮約アドレス生成部と、
前記縮約アドレスと前記キューに保持されたアドレスとの衝突を判定する衝突判定部と、
前記衝突判定部による判定結果に基づいて、前記キューに保持されたメモリアクセス命令の処理を制御するアクセス制御部と、
を有する演算処理装置。
【請求項2】
前記縮約アドレス生成部は、生成した縮約アドレスを前記キューに格納する
請求項1に記載の演算処理装置。
【請求項3】
前記縮約アドレス生成部は、メモリアクセス命令に含まれる複数のアドレスおよびメモリアクセス命令に含まれる単一のアドレスを縮約規則にしたがって縮約して前記縮約アドレスを生成する
請求項1または請求項2に記載の演算処理装置。
【請求項4】
前記縮約アドレス生成部は、前記メモリアクセス命令に含まれる複数のアドレスをグループ分けした複数のアドレスグループ毎に前記縮約アドレスを生成し、
前記衝突判定部は、前記複数のアドレスグループの縮約アドレスと前記キューに保持されたアドレスとの衝突をそれぞれ判定する
請求項1ないし請求項3のいずれか1項に記載の演算処理装置。
【請求項5】
前記縮約アドレス生成部は、
前記複数のアドレスグループとは異なる数、または、異なるグループの分け方で分けられた複数グループ毎に前記複数のアドレスのビットを縮約する第1縮約アドレス生成部と、
前記複数のアドレスグループ毎に複数のアドレスのビットを縮約する第2縮約アドレス生成部と、を有し、
前記第1縮約アドレス生成部が生成した第1縮約アドレスを前記キューに格納し、
前記第2縮約アドレス生成部が生成した第2縮約アドレスを前記衝突判定部に出力する
請求項4に記載の演算処理装置。
【請求項6】
前記縮約アドレス生成部は、メモリアクセス命令に含まれる複数のアドレスの範囲を示す縮約アドレスを生成し、
前記衝突判定部は、前記縮約アドレスで示される範囲に含まれるアドレスと前記キューに保持されたアドレスとの衝突を判定する
請求項1ないし請求項3のいずれか1項に記載の演算処理装置。
【請求項7】
前記縮約アドレス生成部は、
前記複数のアドレスのビットを縮約した第3縮約アドレスと、複数のアドレスの範囲を示す第4縮約アドレスとを生成し、
生成した第3縮約アドレスおよび第4縮約アドレスの一方、もしくは、両方を前記キューに保持し、
前記衝突判定部は、
前記キューに第3縮約アドレスが保持されている場合、前記キューに保持された第3縮約アドレスと、前記縮約アドレス生成部が生成した第3縮約アドレスとの衝突を判定し、
前記キューに第4縮約アドレスが保持されている場合、前記キューに保持された第4縮約アドレスと、前記縮約アドレス生成部が生成した第4縮約アドレスとの衝突を判定する
請求項6に記載の演算処理装置。
【請求項8】
前記縮約アドレス生成部は、前記複数のアドレスの各ビット位置において、ビット値が全て"0"、全て"1"または不定を示す3値論理で表現される縮約アドレスを生成する
請求項2ないし請求項7のいずれか1項に記載の演算処理装置。
【請求項9】
前記縮約アドレス生成部は、不定を示すビット位置より下位のビットを不定として縮約アドレスを生成する
請求項8に記載の演算処理装置。
【請求項10】
前記縮約アドレス生成部は、前記複数のアドレスのいずれかを示すキーアドレスと、前記複数のアドレスの各ビット位置のビット値の排他的論理和で表現されたマスクベクトルとを縮約アドレスとして生成する
請求項8または請求項9に記載の演算処理装置。
【請求項11】
前記衝突判定部は、縮約アドレスと前記キューに保持された複数のアドレスとの衝突をそれぞれ判定する複数の衝突判定回路を有し、
前記複数の衝突判定回路の各々は、
前記縮約アドレスと前記キューに保持された縮約アドレスとに含まれるキーアドレスのビット同士の否定排他的論理和を算出する否定排他的論理和回路と、
前記縮約アドレスと前記キューに保持された縮約アドレスとに含まれるマスクベクトルのビット同士の論理和を算出する第1論理和回路と、
前記否定排他的論理和回路の出力と前記第1論理和回路の出力とのビット同士の論理和を算出する第2論理和回路と、
前記第2論理和回路の出力の全ビットの論理積を算出する論理積回路と、を有し、
前記論理積回路の出力が"1"の場合、アドレスの衝突を検出する
請求項10に記載の演算処理装置。
【請求項12】
少なくとも1つのアドレスを含むメモリアクセス命令を保持するキューを有する演算処理装置の演算処理方法であって、
前記演算処理装置が有する縮約アドレス生成部が、メモリアクセス命令に複数のアドレスが含まれる場合、前記複数のアドレスのビットを縮約して縮約アドレスを生成し、
前記演算処理装置が有する衝突判定部が、前記縮約アドレスと前記キューに保持されたアドレスとの衝突を判定し、
前記演算処理装置が有するアクセス制御部が、前記衝突判定部による判定結果に基づいて、前記キューに保持されたメモリアクセス命令の処理を制御する
演算処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算処理装置および演算処理方法に関する。
【背景技術】
【0002】
SIMD(Single Instruction Multiple Data)演算機能を有する演算処理装置では、複数のデータの演算を並列に実行することで処理性能が向上する。例えば、複数のデータの演算に使用する複数のデータはベクトルロード命令を使用してメモリから並列に読み出される。すなわち、SIMD演算機能を有する演算処理装置は、データ転送を効率化するアーキテクチャを有する。
【0003】
例えば、この種の演算処理装置において、ベクトル演算の実行時にアドレスハザード状態のメモリアドレスが存在するかを決定するチェック命令を実行することで、アドレスの衝突を管理する手法が知られている(例えば、特許文献1参照)。また、ベクトルギャザー命令の実行において、1つのライン内のアドレスの重複数を求めてリクエストを統合し、複数のライン間のアドレスの重複数の積算値をスカラ演算部に通知する手法が知られている(例えば、特許文献2参照)。さらに、領域指定付きのベクトルスキャッター命令のアドレス範囲と後続のメモリアクセス命令のアドレスとの重複を検出した場合、後続のメモリアクセス命令をホールドする手法が知られている(例えば、特許文献3参照)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特表2019-517060号公報
【特許文献2】特開2020-52862号公報
【特許文献3】特開2002-24205号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、命令をアウトオブオーダで実行する演算処理装置は、命令をインオーダでコミットさせる機構を有する。メモリアクセス命令をインオーダでコミットさせる場合、メモリアクセス命令に含まれるアドレスを保持するロードストアキューが設けられる場合がある。そして、ロードストアキューに保持されたアドレスと、後続または先行のメモリアクセス命令に含まれるアドレスとの衝突が判定され、判定結果に基づいてロードストアキューに保持されたメモリアクセス命令をコミットするか否かが決定される。
【0006】
例えば、メモリアクセス命令が実行されると、そのアドレスがロードストアキューに格納され、また既に格納されている別のメモリアクセス命令のアドレスと比較される。ギャザー命令やスキャッター命令等の複数のアドレスを含むベクトルメモリアクセス命令の場合には、それぞれ複数のアドレスが、ロードストアキューに格納され、また比較される。
【0007】
このため、ベクトルメモリアクセス命令を実行可能な演算処理装置では、複数のアドレスを並列に比較する複数の比較器が設けられることがある。複数の比較器を設けた場合、演算処理装置の回路規模が増大する。
【0008】
1つの側面では、本発明は、メモリアクセス命令に含まれるアドレスとメモリアクセス命令を保持するキューに保持されたアドレスとの衝突を判定する衝突判定部の回路規模を低減することを目的とする。
【課題を解決するための手段】
【0009】
一つの観点によれば、演算処理装置は、少なくとも1つのアドレスを含むメモリアクセス命令を保持するキューと、メモリアクセス命令に複数のアドレスが含まれる場合、前記複数のアドレスのビットを縮約して縮約アドレスを生成する縮約アドレス生成部と、前記縮約アドレスと前記キューに保持されたアドレスとの衝突を判定する衝突判定部と、前記衝突判定部による判定結果に基づいて、前記キューに保持されたメモリアクセス命令の処理を制御するアクセス制御部と、を有する。
【発明の効果】
【0010】
メモリアクセス命令に含まれるアドレスとメモリアクセス命令を保持するキューに保持されたアドレスとの衝突を判定する衝突判定部の回路規模を低減することができる。
【図面の簡単な説明】
【0011】
図1】一実施形態における演算処理装置の要部の一例を示すブロック図である。
図2図1のペイロードの状態の変化の一例を示す説明図である。
図3図1の縮約アドレス生成部による縮約アドレスの生成方法の例を示す説明図である。
図4図3の縮約アドレスで示されるアドレス範囲の一例を示す説明図である。
図5図1の一致判定部の各一致判定回路によるアドレスの判定動作の一例を示す説明図である。
図6】他の演算処理装置の一例を示すブロック図である。
図7】別の実施形態における演算処理装置の一例を示すブロック図である。
図8図7のペイロードの一例と縮約アドレス生成部による縮約アドレスの生成方法の一例とを示す説明図である。
図9図7の一致判定回路の一例を示す回路図である。
図10】別の実施形態における演算処理装置の要部の一例を示すブロック図である。
図11】別の実施形態における演算処理装置の要部の一例を示すブロック図である。
図12】別の実施形態における演算処理装置の要部の一例を示すブロック図である。
図13図12の一致判定回路の動作の一例を示す説明図である。
【発明を実施するための形態】
【0012】
以下、図面を参照して、実施形態が説明される。
【0013】
図1は、一実施形態における演算処理装置の一例を示す。図1に示す演算処理装置1は、例えば、SIMD演算命令を実行可能なCPU(Central Processing Unit)等のプロセッサである。
【0014】
演算処理装置1は、ロードストアキュー2、アクセス制御部8およびデータキャッシュ9を有する。ロードストアキュー2は、縮約アドレス生成部3、ペイロード4および一致判定部5を有する。なお、図1は、メモリアクセスに使用する要素の一部を示している。実際には、演算処理装置1は、図示しない命令キャッシュ、命令デコーダ、リザベーションステーション等のスケジューラ、レジスタファイル、SIMD演算命令を実行可能な演算器を含む演算ユニット等を有してもよい。
【0015】
リザベーションステーション等のスケジューラを有する演算処理装置1は、命令デコーダがデコードした命令順(すなわち、プログラムに記述された命令順)と異なる順で命令を実行する場合がある。このため、ロード命令およびストア命令のインオーダ順でのコミットを保証するために、アドレスの衝突を検出するロードストアキュー2が設けられる。アドレスの衝突については、図2で説明される。ロード命令およびストア命令は、単一のアドレスまたは複数のアドレスを含む。
【0016】
縮約アドレス生成部3は、ロード命令またはストア命令等のメモリアクセス命令MAに複数のアドレスAD(AD0-AD7)が含まれる場合、複数のアドレスADを縮約して縮約アドレスCADを生成する。例えば、縮約アドレス生成部3は、スケジューラから発行されるベクトルロード命令またはベクトルストア命令に基づいて、ベクトルロード命令またはベクトルストア命令に含まれる複数のアドレスを縮約する。
【0017】
例えば、ベクトルロード命令およびベクトルストア命令として、アドレスが昇順または降順で連続する連続アドレスベクトルロード命令および連続アドレスベクトルストア命令や、アドレスが等間隔であるストライドベクトルロード命令およびストライドベクトルストア命令がある。また、ベクトルロード命令として、任意の複数のアドレスが指定されるギャザー命令がある。ベクトルストア命令として、任意の複数のアドレスが指定されるスキャッター命令がある。
【0018】
図1では、8個のアドレスAD0-AD7が縮約される例が示されるが、縮約アドレス生成部3は、2個以上のアドレスADを縮約可能であり、単一のアドレスADを縮約アドレスCADとして出力することも可能である。例えば、縮約アドレス生成部3は、メモリアクセス命令MAに対応して単一のアドレスADを受信した場合、単一のアドレスADを縮約アドレスCADとして出力してもよい。この場合、アドレスADをペイロード4に転送する経路は省略されてもよい。
【0019】
ペイロード4は、メモリアクセス命令MAを保持する複数のエントリENTを含む。ペイロード4は、キューの一例である。例えば、エントリENTには、実行フラグ、ロード命令またはストア命令を示す命令コード、アドレスおよびデータがメモリアクセス命令MAとして保持される。エントリENTに保持されるデータは、メモリアクセス命令MAに含まれるストアデータまたはデータキャッシュ9から読み出されたロードデータである。図1では、簡単化のため、各エントリENTのアドレス領域のみが示される。ペイロード4の例は、図2に示される。
【0020】
ペイロード4は、各エントリENTに保持しているアドレス(ADまたはCAD)を一致判定部5に出力する。また、ペイロード4は、アクセス制御部8から指示されるエントリENTに保持しているメモリアクセス命令MAをデータキャッシュ9に出力する。ペイロード4は、図示しないスケジューラおよびレジスタファイルから転送されるメモリアクセス命令MAおよび縮約アドレス生成部3から出力される縮約アドレスCADを保持する。
【0021】
縮約アドレス生成部3が生成した縮約アドレスCADをペイロード4に格納することで、縮約前の複数のアドレスADをペイロード4に格納する場合に比べて、ペイロード4に格納可能なメモリアクセス命令MAの数を増やすことができる。これにより、アクセス制御部8により処理を制御可能なメモリアクセス命令MAの数を増やすことができ、演算処理装置1の処理性能を向上することができる。また、演算処理装置1の処理性能を変えない場合、ペイロード4のエントリENTの数を削減することが可能になり、演算処理装置1の回路規模を削減することができる。
【0022】
一致判定部5は、ペイロード4のエントリENTにそれぞれ対応する複数の一致判定回路6を有する。各一致判定回路6は、ペイロード4からのアドレス(ADまたはCAD)を縮約アドレス生成部3が生成した縮約アドレスCADと比較し、アドレスの衝突を検出した場合、衝突信号COLを出力する。一致判定部5は、縮約アドレスCADとペイロード4に保持されたアドレスとの衝突を判定する衝突判定部の一例である。
【0023】
アクセス制御部8は、ペイロード4に保持されたメモリアクセス命令MAの処理を制御する。例えば、アクセス制御部8は、ペイロード4に保持されたメモリアクセス命令MAに基づいてデータキャッシュ9のアクセスを制御する。また、アクセス制御部8は、一致判定部5から出力される衝突信号COLに基づいて、ペイロード4に保持されたメモリアクセス命令MAのコミット処理を制御する。
【0024】
データキャッシュ9は、ロード命令に対応する読み出し要求の受信に基づいて、読み出し対象のデータDTをデータキャッシュ9内のデータアレイから読み出してレジスタファイルに出力する。データキャッシュ9は、ストア命令に対応する書き込み要求の受信に基づいて、データアレイに保持されたデータを書き込み対象のデータで更新する。データキャッシュ9は、アクセス対象のデータをデータアレイに保持していない場合(キャッシュミス)、下位のキャッシュまたはメインメモリ等のメモリからデータを読み出す。
【0025】
なお、図1では、ロードストアキュー2は、ロード命令とストア命令とに共通に動作する例が示される。しかしながら、例えば、ロードストアキュー2は、ロード命令とストア命令とのそれぞれに対応して動作してもよい。この場合、ペイロード4は、ロード命令が格納される複数のエントリENTと、ストア命令が格納される複数のエントリENTとを有する。
【0026】
そして、縮約アドレス生成部3は、ロード命令に含まれる複数のアドレスADを受信した場合、生成した縮約アドレスCADをストア命令用のエントリENTにそれぞれ保持された複数のアドレスと比較して衝突を判定する。縮約アドレス生成部3は、ストア命令に含まれる複数のアドレスADを受信した場合、生成した縮約アドレスCADをロード命令用のエントリENTにそれぞれ保持された複数のアドレスと比較して衝突を判定する。
【0027】
図2は、図1のペイロード4の状態の変化の一例を示す。図2では、ペイロード4のエントリENT1、ENT2、ENT3、ENT4に2個のストア命令ST(ST1、ST2)と2個のロード命令LD(LD3、LD4)とがそれぞれ格納されている例が示される。例えば、ペイロード4は、リングバッファとして機能し、エントリENTの番号は、プログラムでの命令の記述順を示す。
【0028】
実行フラグの"0"は、命令が実行されていないことを示す。実行フラグの"1"は、命令が実行されたことを示す。アドレスおよびデータの欄に示す数値の前に付した"0x"は、数値が16進数であることを示す。アドレスおよびデータの欄に示す符号n/aは、アドレスまたはデータが確定していないことを示す。網掛けのエントリENTは、状態が変化したことを示す。例えば、ペイロード4の制御は、図1のアクセス制御部8により実行される。
【0029】
なお、図2では、簡単化のため、単一のアドレスを含むスカラストア命令STおよびスカラロード命令LDがペイロード4に格納される例が示される。しかしながら、複数のアドレスを含むベクトルストア命令STおよびベクトルロード命令LDがペイロード4に格納されてもよい。ベクトルストア命令STおよびベクトルロード命令LDがペイロード4に格納される場合、エントリENTには、縮約アドレスCADが格納される。また、ベクトルストア命令STがペイロード4に格納される場合、複数のアドレスにそれぞれ対応する複数のデータが格納される。
【0030】
状態1では、ストア命令ST1およびロード命令LD4が実行され、ストア命令ST2およびロード命令LD3は実行されていない。ストア命令ST2のアドレスが確定していないため、ストア命令ST2の後続のロード命令LD4により取得したデータ"0x456"は、正しくない可能性がある。
【0031】
次に、状態2において、ロード命令LD3が実行される。ロード命令LD3に含まれるアドレスは、縮約アドレスCADとして縮約アドレス生成部62から出力される。一致判定部5は、命令の種別にかかわりなく、ロード命令LD3のアドレスとペイロード4に格納された全ての命令のアドレスとを比較する。
【0032】
アクセス制御部8は、一致判定部5による比較結果のうち、ロード命令LD3のアドレスと、ペイロード4に格納された、ロード命令LD3に先行するストア命令ST1、ST2のアドレスの比較結果を参照する。そして、アクセス制御部8は、ロード命令LD3のアドレスとストア命令ST1のアドレスとの衝突を検出する。このため、アクセス制御部8は、ロード命令LD3の読み出し対象のデータを、データキャッシュ9から読み出すのではなく、エントリENT1からフォワーディングすることを決定し、エントリENT1に保持されたデータ"0x123"をエントリENT3に格納する。
【0033】
次に、状態3において、縮約アドレス生成部3によりストア命令ST2のアドレスがエントリENT2に格納された後、ストア命令ST2が実行される。そして、ストア命令ST2のアドレス"0x100"とデータ"0x789"とがエントリENT2に格納される。ストア命令ST2に含まれるアドレスは、縮約アドレスCADとして縮約アドレス生成部62から出力される。
【0034】
一致判定部5は、命令の種別にかかわりなく、ストア命令ST2のアドレスとペイロード4に格納された全ての命令のアドレスとを比較する。アクセス制御部8は、一致判定部5による比較結果のうち、ストア命令ST2のアドレスと、ペイロード4に格納された、ストア命令ST2より後続のロード命令LD3、LD4のアドレスの比較結果を参照する。そして、アクセス制御部8は、ストア命令ST2のアドレスとロード命令LD3のアドレスとの衝突を検出する。
【0035】
状態4において、アクセス制御部8は、ストア命令ST2の後続のロード命令LD3、LD4の実行をキャンセルし、エントリENT3、ENT4から追い出す。これにより、状態2でエントリENT1から誤ってフォワーディングされたロード命令LD3のデータ"0x123"をキャンセルすることができる。キャンセルされたロード命令LD3、LD4は、その後、再発行される。
【0036】
この実施形態では、一致判定部5は、縮約アドレス生成部3が生成した縮約アドレスCADをペイロード4に保持されたアドレスと比較するため、縮約前の複数のアドレスを比較に使用する場合に比べて、一致判定回路6の数を削減することができる。これにより、縮約前の複数のアドレスを比較に使用する場合に比べて、一致判定部5の回路規模を低減することができる。
【0037】
また、縮約アドレスCADがペイロード4に格納されるため、縮約前の複数のアドレスをペイロード4に格納する場合に比べて、エントリENTの使用効率を向上することができ、ペイロード4に格納可能なメモリアクセス命令MAの数を増やすことができる。これにより、アクセス制御部8により処理を制御可能なメモリアクセス命令MAの数を増やすことができ、演算処理装置1の処理性能を向上することができる。
【0038】
また、エントリENTの使用効率を向上しなくてよい場合、エントリENTの数を削減することができる。これにより、一致判定回路6の数をさらに削減することができ、一致判定部5の回路規模をさらに低減することができる。
【0039】
図3は、図1の縮約アドレス生成部3による縮約アドレスの生成方法の例を示す。図3では、メモリアクセス命令MA1が、8個のアドレスAD0-AD7を含むギャザー命令またはスキャッター命令である場合の例が示される。なお、簡単化のため、図3では、各アドレスAD0-AD7が8ビットである例が示されるが、各アドレスAD0-AD7のビット数は、8ビットに限定されない。図3以降で説明されるアドレスAD0-AD7も8ビットに限定されない。
【0040】
生成方法1では、縮約アドレス生成部3は、アドレスAD0-AD7の各ビット位置において、ビット値が全て"0"の場合、縮約アドレスCADのビット値を"0"に設定し、ビット値が全て"1"の場合、縮約アドレスCADのビット値を"1"に設定する。また、縮約アドレス生成部3は、アドレスAD0-AD7の各ビット位置において、"0"または"1"のビット値が混在する場合、縮約アドレスCADのビット値を不定値"X"に設定する。生成方法2では、縮約アドレス生成部3は、生成方法1の規則に加えて、縮約アドレスCADで不定値"X"を示すビット位置より下位のビットを不定値"X"に設定する。
【0041】
このように、縮約アドレス生成部3は、生成方法1または生成方法2を使用して、"0"、"1"、"X"の3値論理で表現される縮約アドレスCADを生成することができる。なお、メモリアクセス命令MA1が、単一のアドレスADを含む場合、縮約アドレス生成部3は、単一のアドレスADを縮約アドレスCADとする。
【0042】
これにより、メモリアクセス命令MAが単一のアドレスADを含むか複数のアドレスADを含むかによらず、縮約アドレス生成部3が生成した縮約アドレスCADをペイロード4に格納することができる。したがって、単一のアドレスADであるか縮約アドレスCADであるかに応じてペイロード4の格納方法を相違させる場合に比べて、ペイロード4にアドレスAD、CADを格納する制御を容易にすることができる。
【0043】
但し、演算処理装置1は、2進数を扱うため、不定値"X"を使用することができない。このため、実際には、図8で説明されるように、縮約アドレス生成部3は、3値論理で表現される縮約アドレスCADを2進数で表現可能な形式に変換する。なお、縮約アドレス生成部3は、例えば、縮約アドレスCADにおいて、不定値"X"を値"00"に設定し、値"0"を値"01"に設定し、値"1"を値"10"に設定してもよい。
【0044】
図4は、図3の縮約アドレスCADで示されるアドレス範囲の一例を示す。図4に例示するメモリアクセス命令MA1に含まれる8個のアドレスAD0-AD7は、図3に示したアドレスAD0-AD7と同じである。また、図4に例示する縮約アドレスMA1.CADは、図3の生成方法2に示した縮約アドレスMA1.CADと同じである。縮約アドレスCADが図3の生成方法2により生成される場合、一致判定部5は、図4に示す"10100000"から"10111111"の範囲のアドレスADを縮約アドレスMA1.CADと衝突すると判定する。
【0045】
縮約アドレスCADが図3の生成方法1により生成される場合、例えば、アドレスMA1.AD0の最下位から2ビット目が"0"である"10110001"のアドレスADは、縮約アドレスMA1.CADと衝突していないと判定される。このため、生成方法1では、生成方法2に比べて、縮約アドレスCADに含まれるアドレスADの数を減らすことができ、衝突の判定精度を向上することができる。
【0046】
図5は、図1の一致判定部5の各一致判定回路6によるアドレスの判定動作の一例を示す。一致判定回路6は、図1に示したように、縮約アドレス生成部3が生成した縮約アドレスCADの各ビットと、ペイロード4のエントリENTのいずれかに保持されたアドレスの各ビットとを比較する。ここで、ペイロード4のエントリENTのいずれかに保持されたアドレスは、単一のアドレスADまたは縮約アドレスCADである。
【0047】
例えば、一致判定回路6は、比較するビット値が"0"と"1"または"1"と"0"の場合、不一致を示す"0"をアンド回路ANDに出力する。一致判定回路6は、比較するビット値が"0"同士、"1"同士の場合、または、比較するビット値の少なくとも一方が不定値"X"の場合、一致を示す"1"をアンド回路ANDに出力する。
【0048】
アンド回路ANDは、比較結果のビット値が全て"1"(全て一致)の場合、衝突信号COLをアドレスの衝突を示す"1"に設定する。アンド回路ANDは、比較結果のビット値のいずれかが"0"(不一致)の場合、衝突信号COLをアドレスが衝突していないことを示す"0"に設定する。図1のアクセス制御部8は、各一致判定回路6から出力される衝突信号COLの論理値に基づいて、縮約アドレス生成部3が生成した縮約アドレスCADとペイロード4に保持されたアドレスとの衝突を判定する。そして、アクセス制御部8は、判定結果に基づいて、メモリアクセス命令MAをコミットするか否かを決定し、キューに保持されたメモリアクセス命令MAの処理を制御する。
【0049】
図6は、他の演算処理装置の一例を示す。図6に示す演算処理装置1Aは、図1の縮約アドレス生成部3を持たず、図1の一致判定部5およびアクセス制御部8の代わりに一致判定部5Aおよびアクセス制御部8Aを有する。
【0050】
演算処理装置1Aが縮約アドレス生成部3を持たない場合、一致判定部5Aは、ベクトルロード命令LDまたはベクトルストア命令STに含まれる複数のアドレスAD0-AD7を直接受信する。そして、一致判定部5Aは、受信したアドレスAD0-AD7をペイロード4の各エントリENTに保持されたアドレスADと比較する。このため、一致判定部5Aは、アドレスAD0-AD7の数とエントリENTの数との積に対応する数の一致判定回路6を有する。
【0051】
アクセス制御部8Aは、全ての一致判定回路6から出力される衝突信号COLを受信し、受信した衝突信号COLに基づいて、ペイロード4に保持されたメモリアクセス命令MAのコミット処理を制御する。図6に示すように、縮約アドレス生成部3を持たない演算処理装置1Aの一致判定部5Aおよびアクセス制御部8Aの回路規模は、図1の一致判定部5およびアクセス制御部8の回路規模より大きい。
【0052】
なお、例えば、図1の縮約アドレス生成部3の回路規模は、アドレスAD毎に一致判定回路6の2個分程度である。このため、図1の一致判定部5およびアクセス制御部8の回路規模の減少分は、縮約アドレス生成部3の回路規模の増加分に比べて十分に大きい。
【0053】
以上、この実施形態では、一致判定部5は、縮約アドレス生成部3が生成した縮約アドレスCADをペイロード4に保持されたアドレスと比較する。このため、縮約前の複数のアドレスAD0-AD7を比較に使用する場合に比べて、一致判定回路6の数を削減することができ、一致判定部5の回路規模を低減することができる。
【0054】
縮約アドレスCADがペイロード4に格納されるため、縮約前の複数のアドレスをペイロード4に格納する場合に比べて、エントリENTの使用効率を向上することができ、ペイロード4に格納可能なメモリアクセス命令MAの数を増やすことができる。これによりアクセス制御部8により処理を制御可能なメモリアクセス命令MAの数を増やすことができ、演算処理装置1の処理性能を向上することができる。
【0055】
縮約アドレス生成部3により単一のアドレスADも縮約アドレスCADとすることで、メモリアクセス命令MAに含まれるアドレスADが単一か複数かによらず、縮約アドレス生成部3が生成した縮約アドレスCADをペイロード4に格納することができる。したがって、ペイロード4にアドレスAD、CADを格納する制御を容易にすることができる。
【0056】
図7は、別の実施形態における演算処理装置の一例を示す。図1から図6と同様の要素については、詳細な説明は省略する。図7に示す演算処理装置100は、図1の演算処理装置1と同様に、例えば、SIMD演算命令を実行可能なCPU等のプロセッサである。
【0057】
演算処理装置100は、命令キャッシュ10、デコーダ20、リザベーションステーション等のスケジューラ30、レジスタファイル40、複数のロードストア(LDST)ユニット50および複数の演算ユニット90を有する。
【0058】
命令キャッシュ10は、メインメモリ等のメモリから転送される命令を保持し、保持している命令をデコーダ20に出力する。例えば、命令キャッシュ10は、1次命令キャッシュでもよい。命令キャッシュ10に保持される命令は、演算命令およびメモリアクセス命令である。
【0059】
例えば、演算命令は、整数演算命令、固定小数点演算命令および浮動小数点演算命令等を含む。例えば、メモリアクセス命令は、ロード命令およびストア命令等を含む。また、整数演算命令、固定小数点演算命令および浮動小数点演算命令の少なくともいずれかは、SIMD演算命令を含んでもよい。さらに、図1の演算処理装置1と同様に、ロード命令は、単一のアドレスを含むスカラロード命令に加えて、ベクトルロード命令LDとして連続アドレスロード命令LDおよびギャザー命令を含む。ストア命令は、単一のアドレスを含むスカラストア命令に加えて、ベクトルストア命令STとして連続アドレスストア命令STおよびスキャッター命令を含む。
【0060】
デコーダ20は、命令キャッシュ10からインオーダで受信する命令をデコードし、デコードした命令をスケジューラ30に出力する。なお、演算処理装置100は、命令キャッシュ10とデコーダ20との間に命令キャッシュ10から転送される複数の命令を蓄積する命令バッファを有してもよい。
【0061】
デコーダ20によりデコードされた命令に含まれる論理レジスタ番号は、例えば、リネームユニットによりレジスタファイル40内の物理レジスタを識別する物理レジスタ番号に変換されてもよい。論理レジスタ番号は、プログラムに記述されるレジスタ番号である。リネームユニットの搭載により、演算処理装置100は、プログラムで記述可能なレジスタの数より多い物理レジスタをレジスタファイル40に搭載することができる。この結果、リネームユニットを設けない場合に比べて、レジスタが競合する頻度を低減することができ、命令の実行効率を向上することができる。
【0062】
スケジューラ30は、デコーダ20から出力される演算命令を保持する複数のエントリを含む演算キューと、デコーダ20から出力されるメモリアクセス命令を保持する複数のエントリを含むメモリアクセスキューとを有する。スケジューラ30は、演算キューに保持した演算命令を実行可能な順にアウトオブオーダで演算ユニット90のいずれかに発行する。また、スケジューラ30は、メモリアクセスキューに保持した命令を実行可能な順にアウトオブオーダでロードストアユニット50のいずれかに出力する。
【0063】
複数のロードストアユニット50の各々は、ロード命令およびストア命令を実行する。複数のロードストアユニット50の各々は、複数のアドレス計算器52を有する。また、複数のロードストアユニット50は、複数のロードストアユニット50に共通のロードストアキュー60、アクセス制御部70およびL1(Level 1)データキャッシュ80を有する。ロードストアキュー60は、複数のロードストアユニット50の各々に対応する縮約アドレス生成部62と、複数のロードストアユニット50に共通のペイロード64および一致判定部66を有する。一致判定部66は、複数の一致判定回路67を有する。
【0064】
複数のアドレス計算器52の各々は、レジスタファイル40から転送されるデータの加算処理等を実行することにより、メモリアクセス命令によるアクセス対象のアドレスを計算する。複数のアドレス計算器52の各々は、計算により得たアドレスを、対応する縮約アドレス生成部62およびペイロード64に出力する。また、ロード命令であればL1データキャッシュ80にアドレスADを出力する。各ロードストアユニット50に複数のアドレス計算器52を設けることで、ベクトルロード命令またはベクトルストア命令に含まれる複数のアドレスを並列に計算することができる。
【0065】
縮約アドレス生成部62は、図1の縮約アドレス生成部3と同様に、ロード命令またはストア命令に含まれる複数のアドレスADを縮約して縮約アドレスCADを生成する。縮約アドレスCADの生成方法の例は、図8に示される。ペイロード64は、図1のペイロード4と同様に、メモリアクセス命令を保持する図示しない複数のエントリENTを含む。ペイロード64は、キューの一例である。ペイロード64の例は、図8に示される。
【0066】
一致判定部66は、図1の一致判定部5と同様に、ペイロード64のエントリに複数の一致判定回路67を有する。各一致判定回路67は、ペイロード64からのアドレスを縮約アドレス生成部62が生成した縮約アドレスCADと比較し、比較結果に応じた衝突信号COLを出力する。一致判定部66は、縮約アドレスCADとペイロード4に保持されたアドレスとの衝突を判定する衝突判定部の一例である。一致判定回路67は、衝突判定回路の一例である。
【0067】
アクセス制御部70は、図1のアクセス制御部8と同様に、衝突信号COLに基づいてペイロード64に保持されたメモリアクセス命令の処理を制御し、L1データキャッシュ80のアクセスを制御する。L1データキャッシュ80は、図1のデータキャッシュ9と同様の構成および機能を有する。
【0068】
各演算ユニット90は、演算命令を実行する。例えば、各演算ユニット90は、固定小数点演算器、浮動小数点演算器および論理演算器を有する。
【0069】
図8は、図7のペイロード64の一例と縮約アドレス生成部62による縮約アドレスの生成方法の一例とを示す。ペイロード64は、メモリアクセス命令MAを保持する複数のエントリENT(ENT1-ENT6等)を含む。例えば、各エントリENTには、実行フラグ、命令種別(ロード命令LDまたはストア命令ST)、キーアドレスKEY、データ、マスクベクトルMSKおよび元のアドレスが保持される。元のアドレスは、各アドレス計算器52が計算した、縮約前のアドレスである。この実施形態では、縮約アドレスCADは、キーアドレスKEYおよびマスクベクトルMSKとして表現される。
【0070】
縮約アドレス生成部62は、図1の縮約アドレス生成部3と同様に、"0"、"1"、不定値"X"で表現される3値論理を使用して縮約アドレスCADを生成する。但し、縮約アドレス生成部62は、演算処理装置100で扱う2進数によりアドレスの衝突を判定するために、縮約アドレスCADをキーアドレスKEYおよびマスクベクトルMSKとして表現する。
【0071】
3値論理で表される縮約アドレスCADを2進数で表現可能な形式に変換することで、2進数を扱う演算処理装置100において、一致判定部66は、不定値"X"を含む縮約アドレスCADの衝突を判定することができる。換言すれば、演算処理装置100のアーキテクチャを変更することなく、不定値"X"を含む縮約アドレスCADの衝突を判定することができる。
【0072】
縮約アドレス生成部62は、メモリアクセス命令MAに含まれる複数のアドレスADのいずれか1つをキーアドレスKEYとして選択する。また、縮約アドレス生成部62は、メモリアクセス命令MAに含まれる複数のアドレスADの各ビット位置でのビット値の排他的論理和XORを算出し、マスクベクトルMSKとする。図8では、メモリアクセス命令MA1に含まれる8個のアドレスAD0-AD7からマスクベクトルMSKを算出する例が示される。縮約アドレス生成部62が生成した縮約アドレスCAD(KEY、MSK)は、一致判定部66による判定に使用され、メモリアクセス命令MAの情報とともにペイロード64に格納される。
【0073】
図9は、図7の一致判定回路67の一例を示す。一致判定回路67は、否定排他的論理和回路XNOR、オア回路OR1、OR2およびアンド回路ANDを有する。オア回路OR1は、第1論理和回路の一例であり、オア回路OR2は、第2論理和回路の一例である。アンド回路ANDは、論理積回路の一例である。
【0074】
否定排他的論理和回路XNORは、ペイロード64のエントリENTのいずれかに保持されたキーアドレスKEYと、縮約アドレス生成部62が生成するキーアドレスKEYとのビット同士の否定排他的論理和を算出する。オア回路OR1は、ペイロード64のエントリENTのいずれかに保持されたマスクベクトルMSKと、縮約アドレス生成部62が生成するマスクベクトルMSKとのビット同士の論理和を算出する。
【0075】
オア回路OR2は、否定排他的論理和回路ENORの出力とオア回路OR1の出力とのビット同士の論理和を算出する。アンド回路ANDは、オア回路OR2の出力の全ビットの論理積を算出し、算出結果を衝突信号COLとして出力する。
【0076】
一致判定回路67は、図9の括弧内に例示するキーアドレスKEYおよびマスクベクトルMSKをペイロード64および縮約アドレス生成部62からそれぞれ受信した場合、アドレスの衝突を示す衝突信号COL(="1")を出力する。このように、一致判定回路67は、縮約アドレスCADがキーアドレスKEYおよびマスクベクトルMSKで表現される場合にも、アドレスの衝突を判定することができる。すなわち、一致判定回路67は、3値論理で表現される縮約アドレスの衝突を判定することができる。
【0077】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、一致判定部66が縮約アドレスCADをペイロード64に保持されたアドレスと比較するため、縮約前の複数のアドレスADを比較に使用する場合に比べて、一致判定回路67の数を削減することができ、一致判定部66の回路規模を低減することができる。また、縮約アドレスCADをペイロード64に格納することで、縮約前の複数のアドレスADをペイロード64に格納する場合に比べて多くのメモリアクセス命令MAをペイロード64に格納することができ、演算処理装置100の処理性能を向上することができる。
【0078】
さらに、この実施形態では、3値論理で表現される縮約アドレスCADを2進数で表現可能な形式に変換することで、2進数を扱う演算処理装置100において、一致判定部66は、不定値"X"を含む縮約アドレスCADの衝突を判定することができる。換言すれば、演算処理装置100のアーキテクチャを変更することなく、不定値"X"を含む縮約アドレスCADの衝突を判定することができる。一致判定回路67は、縮約アドレスCADがキーアドレスKEYおよびマスクベクトルMSKで表現される場合にも、アドレスの衝突を判定することができる。
【0079】
図10は、別の実施形態における演算処理装置の要部の一例を示す。上述した実施形態と同様の要素については、詳細な説明は省略する。図10に示す演算処理装置100Aは、ロードストアキュー60A、アクセス制御部70AおよびL1データキャッシュ80を有する。ロードストアキュー60Aは、縮約アドレス生成部62A、ペイロード64および一致判定部66Aを有する。一致判定部66Aは、衝突判定部の一例である。
【0080】
縮約アドレス生成部62Aは、メモリアクセス命令MA(ロード命令またはストア命令)に含まれる複数のアドレスAD(AD0-AD7)をグループ分けし、グループ分けした複数のアドレスグループ毎に縮約アドレスCAD0、CAD1を生成する。縮約アドレスCAD0、CAD1は、一致判定部66Aに出力され、ペイロード64に格納される。
【0081】
アドレスグループ毎に縮約アドレスCAD0、CAD1を生成することで、アドレスADをグループ分けせずに1つの縮約アドレスCADを生成する場合に比べて、縮約アドレスCAD0、CAD1のそれぞれで示されるアドレスADの範囲を狭くすることができる。これにより、各縮約アドレスCAD0、CAD1に含まれるアドレスADの数を減らすことができ、衝突の判定精度を向上することができる。
【0082】
一致判定部66Aは、ペイロード64のエントリENTにそれぞれ対応する数の複数の一致判定回路67を、縮約アドレスCAD0、CAD1毎に有する。各一致判定回路67は、図9の一致判定回路67と同じ構成および機能を有する。図10の一致判定回路67は、図1の一致判定回路6と同様に、ペイロード64の対応するエントリENTが保持するアドレスを、対応する縮約アドレスCAD0またはAD1と比較する。そして、一致判定回路67は、比較結果に応じた衝突信号COLをアクセス制御部70Aに出力する。
【0083】
アクセス制御部70Aは、縮約アドレスCAD0、CAD1毎の複数の衝突信号COLに基づいてペイロード64に保持されたメモリアクセス命令の処理を制御し、L1データキャッシュ80のアクセスを制御する。
【0084】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。例えば、一致判定部66Aは、縮約アドレスCADをペイロード64に保持されたアドレスと比較する。このため、縮約前の複数のアドレスADを比較に使用する場合に比べて、一致判定回路67の数を削減することができ、一致判定部66Aの回路規模を低減することができる。また、縮約アドレス生成部62Aは、生成した複数の縮約アドレスCAD0、CAD1をペイロード64に格納する。このため、縮約前の複数のアドレスADをペイロード64に格納する場合に比べて、ペイロード64に格納可能なメモリアクセス命令の数を増やすことができる。これにより、演算処理装置100Aの処理性能を向上することができる。
【0085】
さらに、この実施形態では、縮約アドレス生成部62Aは、複数の縮約アドレスCAD0、CAD1を生成する。これにより、1つの縮約アドレスCADを生成する場合に比べて、縮約アドレスCAD0、CAD1のそれぞれで示されるアドレスADの範囲を狭くすることができる。したがって、各縮約アドレスCAD0、CAD1に含まれるアドレスADの数を減らすことができ、衝突の判定精度を向上することができる。この結果、例えば、実際にはアドレスADが衝突していないロード命令LDが、先行するストア命令STと衝突すると判定されてキャンセルされる頻度を低減することができ、演算処理装置100Aの処理性能の低下を抑制することができる。
【0086】
図11は、別の実施形態における演算処理装置の要部の一例を示す。上述した実施形態と同様の要素については、詳細な説明は省略する。図11に示す演算処理装置100Bは、図10のロードストアキュー60Aの代わりにロードストアキュー60Bを有することを除き、図10の演算処理装置100Aの構成と同様である。
【0087】
ロードストアキュー60Bは、図10のロードストアキュー60Aに縮約アドレス生成部62を追加している。縮約アドレス生成部62は、図8の縮約アドレス生成部62と同じ構成および機能を有している。すなわち、縮約アドレス生成部62は、メモリアクセス命令MA(ロード命令またはストア命令)に含まれる複数のアドレスAD(AD0-AD7)を縮約して縮約アドレスCADを生成する。図11の縮約アドレス生成部62は、第1縮約アドレス生成部の一例であり、縮約アドレス生成部62が生成する縮約アドレスCADは、第1縮約アドレスの一例である。縮約アドレス生成部62Aは、第2縮約アドレス生成部の一例であり、縮約アドレス生成部62Aが生成する縮約アドレスCAD0、CAD1は、第2縮約アドレスの一例である。
【0088】
縮約アドレス生成部62が生成した縮約アドレスCADは、ペイロード64に格納される。したがって、この実施形態では、ペイロード64に格納される縮約アドレスCADの数を、図10のペイロード64に格納される縮約アドレスCAD0、CAD1の数より減らすことができる。この結果、ペイロード64に格納されるアドレスADの数が相対的に増えるため、ペイロード64に格納されるメモリアクセス命令の数を増やすことができ、演算処理装置100Bの処理性能を向上することができる。
【0089】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、この実施形態では、ペイロード64に縮約アドレスCADが格納され、一致判定部66Aに縮約アドレスCAD0、CAD1が出力される。これにより、一致判定部66Aによる衝突の判定精度を向上しつつ、縮約アドレスCAD0、CAD1がペイロード64に格納される場合に比べて、ペイロード64に格納されるアドレスADの数を増やすことができる。この結果、演算処理装置100Bの処理性能を向上することができる。
【0090】
なお、上記の例では、縮約アドレス生成部62が生成した縮約アドレスCADは、1つの縮約アドレスになる場合で説明した。しかしながら、縮約アドレス生成部62Aが生成した縮約アドレスとは異なる数、または、異なるグループの分け方で分けられた複数グループ毎に複数の縮約アドレスを生成してもよい。また、縮約アドレス生成部62Aが生成した縮約アドレスも2つの例で説明しているが3つ以上あってもよい。
【0091】
図12は、別の実施形態における演算処理装置の要部の一例を示す。上述した実施形態と同様の要素については、詳細な説明は省略する。図12に示す演算処理装置100Cは、図7の演算処理装置100、図10の演算処理装置100Aまたは図11の演算処理装置100Bに、縮約アドレス生成部62Cと一致判定回路67Cとを追加している。図12では、1つの一致判定回路67Cが示されるが、実際には、一致判定回路67Cは、ペイロード64に含まれる図示しないエントリENT毎に設けられる。そして、複数の一致判定回路67と複数の一致判定回路67Cとを含む一致判定部が設けられる。一致判定回路67Cは、衝突判定回路の一例である。
【0092】
縮約アドレス生成部62Cは、メモリアクセス命令に含まれる複数のアドレスADの範囲を示す縮約アドレスCAD2を生成する。縮約アドレス生成部62Cが生成する縮約アドレスCAD2は、第4縮約アドレスの一例である。例えば、縮約アドレス生成部62Cは、先頭アドレスAH(=A0)と、先頭アドレスAHから最終アドレスAEまでの距離であるオフセットOFSAとを縮約アドレスCAD2として生成する。縮約アドレス生成部62Cは、生成した縮約アドレスCAD2をペイロード64に格納する。
【0093】
例えば、ペイロード64の図示しないエントリENTには、メモリアクセス命令MAを示す情報と、過去の縮約アドレス生成部62Cが生成した先頭アドレスBHおよびオフセットOFSBを含む縮約アドレスCAD2が格納される。すなわち、ペイロード64の各エントリENTには、縮約アドレスCAD2または図7の縮約アドレス生成部62により生成される縮約アドレスCADが格納される。なお、メモリアクセス命令MAが単一のアドレスADを含む場合、縮約規則にしたがって、単一のアドレスADが先頭アドレスAH(またはBH)として設定され、オフセットOFSA(またはOFSB)は"0"に設定される。
【0094】
一致判定回路67Cは、加算器ADDa、ADDb、比較器CMPa、CMPb、オア回路ORおよび反転回路NOTを有する。加算器ADDaは、縮約アドレス生成部62Cから出力される先頭アドレスAHとオフセットOFSAと加算することで、最終アドレスAEを算出する。加算器ADDbは、ペイロード64Cの対応するエントリENTから出力される先頭アドレスBHとオフセットOFSAと加算することで、最終アドレスBEを算出する。
【0095】
比較器CMPaは、最終アドレスBEと先頭アドレスAHとを比較して大小関係を判定する。例えば、比較器CMPaは、最終アドレスBEが先頭アドレスAHより小さい場合、"1"を出力し、最終アドレスBEが先頭アドレスAH以上の場合、"0"を出力する。比較器CMPbは、先頭アドレスBHと最終アドレスAEとを比較して大小関係を判定する。例えば、比較器CMPbは、最終アドレスAEが先頭アドレスBHより小さい場合、"1"を出力し、最終アドレスAEが先頭アドレスBH以上の場合、"0"を出力する。
【0096】
オア回路ORは、比較器CMPa、CMPbの出力の論理和を反転回路NOTに出力する。反転回路NOTは、オア回路ORから出力される論理値を反転し、衝突信号COLとして出力する。したがって、衝突信号COLの論理は、式(1)で示される。
COL="not((AE<BH)or(BE<AH))‥ (1)
【0097】
なお、縮約アドレス生成部62Cは、先頭アドレスAHと最終アドレスAEを縮約アドレスCAD2として生成してもよい。この場合、縮約アドレスCAD2のビット数が増えるが、一致判定回路67Cは、加算器ADDa、ADDbを持たなくてもよい。メモリアクセス命令に含まれる複数のアドレスADの範囲を示す縮約アドレスCAD2を生成することで、3値論理を使用して生成される縮約アドレスCADに比べて、衝突の判定精度を向上することができる。
【0098】
図13は、図12の一致判定回路67Cの動作の一例を示す。なお、この実施形態の一致判定部は、図9の一致判定回路67と図12の一致判定回路67Cとを含む。図13に示すように、衝突信号COLは、先頭アドレスAHとオフセットOFSAとで示される縮約アドレスCAD2の範囲が、先頭アドレスBHとオフセットOFSBとで示される縮約アドレスCAD2の範囲と重ならない場合、"0"に設定される。衝突信号COLは、先頭アドレスAHとオフセットOFSAとで示される縮約アドレスCAD2の範囲が、先頭アドレスBHとオフセットOFSBとで示される縮約アドレスCAD2の範囲と重なる場合、"1"に設定される。
【0099】
図12に示す演算処理装置100Cでは、メモリアクセス命令MAに含まれる複数のアドレスADから3値論理で表現される縮約アドレスCADと、アドレスADの範囲を示す縮約アドレスCAD2とが生成される。例えば、図7の縮約アドレス生成部62は、複数のアドレスADのビットを縮約して縮約アドレスCADを生成する。なお、図10または図11の縮約アドレス生成部62Aにより縮約アドレスCADが生成されてもよい。縮約アドレス生成部62、62Aが生成する縮約アドレスCADは、第3縮約アドレスの一例である。また、図12の縮約アドレス生成部62Cは、複数のアドレスADの範囲を示す縮約アドレスCAD2を生成する。
【0100】
ここで、昇順または降順に変化しない複数のアドレスADは、このままでは縮約アドレスCAD2への変換が困難である。このため、縮約アドレス生成部62Cは、縮約アドレス生成部62と同様に、まず、"0"、"1"、"X"の3値論理で表現される縮約アドレスCADを生成する。次に、縮約アドレス生成部62Cは、生成した縮約アドレスCADの不定値"X"が"0"であるとしてアドレスADの最小値を生成し、生成した縮約アドレスCADの不定値"X"が"1"であるとしてアドレスADの最大値を生成する。そして、縮約アドレス生成部62Cは、先頭アドレスAHおよびオフセットOFSBを含む縮約アドレスCAD2を生成する。なお、縮約アドレス生成部62Cは、縮約アドレス生成部62が生成する縮約アドレスCADの不定値"X"を"0"と"1"とに置き換えて、アドレスADの最小値と最大値とを生成してもよい。
【0101】
縮約アドレス生成部62および縮約アドレス生成部62Cを含むロードストアキューは、複数のアドレスADが昇順または降順に変化しない場合、縮約アドレス生成部62が生成した縮約アドレスCADをペイロード64に格納する。ロードストアキューは、複数のアドレスADが昇順または降順に変化する場合、縮約アドレス生成部62Cが生成した縮約アドレスCAD2をペイロード64に格納する。
【0102】
一致判定回路67、67Cを含む一致判定部は、ペイロード64のエントリに縮約アドレスCADが保持されている場合、保持されている縮約アドレスCADと縮約アドレス生成部62が生成する縮約アドレスCADとの衝突を判定する。一致判定回路67、67Cを含む一致判定部は、ペイロード64のエントリに縮約アドレスCAD2が保持されている場合、保持されている縮約アドレスCAD2と縮約アドレス生成部62Cが生成する縮約アドレスCAD2との衝突を判定する。
【0103】
このように、メモリアクセス命令MAに含まれるアドレスADが昇順または降順でない場合、縮約アドレス生成部62により生成された縮約アドレスCADを使用してアドレスADの衝突が判定される。メモリアクセス命令MAに含まれるアドレスADが昇順または降順の場合、縮約アドレス生成部62Cにより生成された縮約アドレスCAD2を使用してアドレスADの衝突が判定される。
【0104】
例えば、アドレスADが昇順または降順でないメモリアクセス命令MAとして、ギャザー命令またはスキャッター命令がある。例えば、アドレスADが昇順または降順のメモリアクセス命令MAとして、ストライドアクセス命令等の連続アドレスロード命令LDまたは連続アドレスベクトルストア命令STがある。
【0105】
以上、この実施形態においても、上述した実施形態と同様の効果を得ることができる。さらに、この実施形態では、メモリアクセス命令MAに含まれるアドレスADが昇順または降順である場合に、縮約アドレスCAD2を使用してアドレスADの衝突を判定することで、衝突の判定精度を向上することができる。
【0106】
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲がその精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずである。したがって、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物に拠ることも可能である。
【符号の説明】
【0107】
1、1A 演算処理装置
2、2A ロードストアキュー
3 縮約アドレス生成部
4 ペイロード
5、5A 一致判定部
8、8A アクセス制御部
9 データキャッシュ
10 命令キャッシュ
20 デコーダ
30 スケジューラ
40 レジスタファイル
50 ロードストアユニット
52 アドレス計算器
60、60A、60B ロードストアキュー
62、62A、62C 縮約アドレス生成部
64 ペイロード
66、66A 一致判定部
67、67C 一致判定回路
70、70A アクセス制御部
80 L1データキャッシュ
90 演算ユニット
100、100A、100B、100C 演算処理装置
AD(AD0-AD7) アドレス
AE 最終アドレス
AH 先頭アドレス
BE 最終アドレス
BH 先頭アドレス
CAD、CAD0、CAD1、CAD2 縮約アドレス
COL 衝突信号
DT データ
ENT エントリ
ICD 命令コード
KEY キーアドレス
LD ロード命令
MA メモリアクセス命令
MSK マスクベクトル
OFSA、OFSB オフセット
ST ストア命令
STD ストアデータ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13