JP2020052862A - 計算機および計算方法 - Google Patents

計算機および計算方法 Download PDF

Info

Publication number
JP2020052862A
JP2020052862A JP2018183265A JP2018183265A JP2020052862A JP 2020052862 A JP2020052862 A JP 2020052862A JP 2018183265 A JP2018183265 A JP 2018183265A JP 2018183265 A JP2018183265 A JP 2018183265A JP 2020052862 A JP2020052862 A JP 2020052862A
Authority
JP
Japan
Prior art keywords
address
duplication
vector
line
instruction
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2018183265A
Other languages
English (en)
Other versions
JP7124608B2 (ja
Inventor
川口 英一郎
Eiichiro Kawaguchi
英一郎 川口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2018183265A priority Critical patent/JP7124608B2/ja
Publication of JP2020052862A publication Critical patent/JP2020052862A/ja
Application granted granted Critical
Publication of JP7124608B2 publication Critical patent/JP7124608B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Complex Calculations (AREA)

Abstract

【課題】 リスト総和演算の高速化を可能とする。【解決手段】 計算機は、1つのラインが複数の要素を含み、ラインを複数に亘って処理するベクトルギャザー命令を実行するにあたり、1つのライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合する第1重複処理手段と、複数のライン間におけるアドレス重複があるか否かを判定し、当該判定結果と第1アドレス重複数とに基づいて、ライン間のアドレス重複数である第2アドレス重複数を求める第2重複処理手段と、ベクトルギャザー命令ごとに第2アドレス重複数を積算し、積算された重複数をスカラ演算部に通知する重複アドレス数計算手段と、を備える。【選択図】 図14

Description

本発明は、計算機および計算方法に関する。
ハイパフォーマンスコンピューティングのプログラムにおいて、高速化が求められる演算の一つに、たとえば、以下のようなリスト総和演算がある。
x(l(i))=x(l(i))+y(i)
しかしながら、上記のリスト総和演算の計算時にループを回る中で、l(i)に同一要素が入り、x(l(i))のアドレスが重複することがある。
そのため、リスト総和演算の計算時には、実際の総和演算以外に重複を検出するための命令が別途必要となる。具体的には、1つの計算ループ(コアループとも呼ぶ)中に、ベクトルギャザー命令およびベクトルスキャッター命令のそれぞれが別途必要となる。
具体的な例を図1に示す命令列で説明する。図1は、以下のプログラム
do i =1、ny
x(l(i))=x(l(i))+y(i)
end do
をアセンブラで記述した命令列の1例である。
本命令列におけるリスト総和演算の本質的な部分は、10行目のvld(ベクトルロード命令)、13行目のvgt(ベクトルギャザー命令)、16行目のvfadd(ベクトル加算命令)、および17行目のvsc(ベクトルスキャッター命令)である。
vgtは、ソースであるx(l(i))を読み込む命令である。vldは、y(i)を読み込む命令である。vfaddは、足し算を行う命令である。vscは、結果を書き戻す命令である。
しかしながら、この命令列では、上記本質的部分の他に、アドレス重複を検出する以下の命令が存在する。
1行目:256要素ベクトルレジスタにそれぞれ、0、1、2、3、・・・、255を格納するvseq(ベクトルシーケンシャルナンバー命令)
14行目:vseqで付与したベクトルレジスタをx(l(i))に書き込むvsc(ベクトルスキャッター命令)
15行目:14行目で書きだしたアドレスx(l(i))から読み戻すvgt(ベクトルギャザー命令)
18行目:15行目で読み戻した値と、元のシーケンシャル番号を比較するvcmps(ベクトルコンペア命令)。
19行目:18行目で検出した重複箇所をベクトルマスクレジスタにビットマップで示すvfmk(ベクトルフォームマスク命令)
20行目:19行目で示したビットマップの数を数えるpcvm(ベクトルマスクポピュレーションカウント命令)
上記に関連して、特許文献1には、格納先アドレスが一致している場合に、要素番号が若い要素リクエストで生成されるライト信号の、リクエスト分配回路への出力を抑止する技術が記載されている。特許文献2には、vscが発行された場合、vscの開始アドレスと、終了アドレスが、vscアドレス一致検出部に送られ、vscアドレス一致検出部が、後続のメモリアクセス命令とアクセスするアドレス領域が重なっているか判定する技術が記載されている。
特開2004−062311号公報 特開2002−024205号公報
アドレス重複を検出するために必要な上記命令群の中でも、特に、ベクトルギャザー命令、ベクトルスキャッター命令、ポピュレーションカウント命令は、実行コストが高い(実行時間が長い)。すなわち、これらの命令がコアループに入っているため、リスト総和演算自体の実行時間が長くなってしまう課題がある。
特許文献1、2の技術は、いずれも、リスト総和演算を高速化させるための技術ではない。
本発明は、上記課題を解決するためになされたものであり、リスト総和演算の高速化を可能とする技術を提供することを目的とする。
本発明の計算機は、1つのラインが複数の要素を含み、前記ラインを複数に亘って処理するベクトルギャザー命令を実行するにあたり、1つの前記ライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合する第1重複処理手段と、複数の前記ライン間におけるアドレス重複があるか否かを判定し、当該判定結果と前記第1アドレス重複数とに基づいて、前記ライン間のアドレス重複数である第2アドレス重複数を求める第2重複処理手段と、前記ベクトルギャザー命令ごとに前記第2アドレス重複数を積算し、積算された重複数をスカラ演算部に通知する重複アドレス数計算手段と
を備える。
本発明の計算方法は、1つのラインが複数の要素を含み、前記ラインを複数に亘って処理するベクトルギャザー命令を実行するにあたり、1つの前記ライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合し、複数の前記ライン間におけるアドレス重複があるか否かを判定し、当該判定結果と前記第1アドレス重複数とに基づいて、前記ライン間のアドレス重複数である第2アドレス重複数を求め、前記ベクトルギャザー命令ごとに前記第2アドレス重複数を積算し、積算された重複数をスカラ演算部に通知することを特徴とする。
本発明によれば、リスト総和演算の高速化が可能となる。
本発明を適用する前の、リスト総和演算の命令列の一例である。 ベクトルギャザー命令を拡張する前のニーモニックの例を示している。 本発明の第1の実施形態によって、ベクトルギャザー命令を拡張した後のニーモニックの例を示している。 第1の実施形態を適用した後の、リスト総和演算の命令列の一例である。 図5は、第1の実施形態に係る計算機の構成例を示すブロック図である。 ベクトルギャザー命令のイメージを説明する図である。 ベクトルギャザー命令の実際の発行のイメージを説明する図である。 リクエストクロスバにおける調停方法を説明する図である。 ベクトルギャザー・スキャッター圧縮部における、同一ライン内の重複を検出する方法を説明する図である。 ライン間圧縮検出部における、ライン間のアドレス重複検出を説明する図である。 図5に示す計算機の動作例(計算方法)を説明するためのフローチャートである。 本発明の第2の実施形態に関する説明であって、詳細には、ベクトルギャザー命令を更に拡張した後のニーモニックの例を示している。 第2の実施形態のライン間圧縮検出部が新たに備える重複ビットマップレジスタの図である。 図14は、本発明の第3の実施形態に係る計算機の構成例を示すブロック図である。 図15は、図14に示す計算機の動作例(計算方法)を説明するためのフローチャートである。
[第1の実施形態]
(1)ベクトルギャザー命令の一般的な動作についての説明
本実施形態を説明する前に、ベクトルギャザー命令の一般的な動作について説明する。ベクトルギャザー命令のニーモニックは、以下のようになる。
VGT VR0、VR1
上記において、VR0およびVR1は、ベクトルレジスタである。ベクトルレジスタは複数の要素を保持しており、本実施形態では、256個の要素が保持されるものと仮定する。すなわち、1つのベクトルレジスタは、8B(8×8=64ビット)のデータ幅のレジスタを256個分持っている。
図6は、ベクトルギャザー命令のイメージを説明するための図である。ソースベクトルレジスタであるVR0の各要素(VR0(0)乃至VR0(n)のそれぞれ:nは整数)には、アクセス先アドレスが入っている。図6において、メモリ空間から当該アドレスが指し示すデータが読み出される。読み出したデータは、デスティネーションベクトルレジスタであるVR1のそれぞれの要素に格納される。
図7は、ベクトルギャザー命令の実際の発行のイメージを説明するための図である。ハードウェア量の観点から、一般的には、256要素は、1サイクルですべて処理されるのではなく、複数サイクルに分けて処理される。図7の例では、1サイクルで16要素を処理し、全256要素を16サイクルで処理する方式が示される。以下、1サイクルで処理される要素の列は、「ライン」とする。
図8は、リクエストクロスバにおける調停方法を説明するための図である。図8において、上段のP00〜P15は入力ポートであり、下段のP00〜P15は出力ポートである。
まず、図8では、入力ポートP00〜P15にリクエストが来ている状態が示されている。1ライン目には、要素e000〜e015が来ており、2ライン目には、要素e016〜e031が続いている。それぞれの要素には行先アドレスが入っており、そのアドレスに応じて、インタリーブされた出力ポートに向けてクロスバにて調停される。
また、図8では、調停された要素e000〜e031が出力ポートP00〜P15に発行された状態が示されている。たとえば、1ライン目のe000、e002と、2ライン目のe017、e019、e031とは、出力ポートP00に調停されている。このようにベクトルレジスタの各要素に格納されたアドレスに応じて、ベクトルギャザー命令の各要素がアクセスする先が決定される。
(2)本実施形態を適用することにより拡張されるベクトルギャザー命令についての説明
次に、本発明の実施形態を適用することにより拡張されるベクトルギャザー命令について説明する。以下で説明する本実施形態は、ベクトルギャザー命令にアドレス重なり検出機能を追加することにより、前述の重なり検出の命令をなくし、リスト総和演算の高速化を図っている。重なり検出機能の実装ポイントは、以下の(2−1)(2−2)である。
(2−1)ベクトルギャザー命令(vgt)の拡張
図2は、ベクトルギャザー命令を拡張する前のニーモニックの例を示し、図3は、本実施形態によりベクトルギャザー命令を拡張した後のニーモニックの例を示している。図3に示されるように、本実施形態では、スカラレジスタ(SR0)が引数に追加される。命令完了時、SR0にはvgt(最大256要素)中で、何回のアドレスの重なりがあったかが格納される。
(2−2)2種類のアドレス重なり検出
(2−2−1)vgtの同一ライン内における同一アドレスの重なり検出
(2−2−2)vgtのクロスバ通過時における、同一ポート内の、前後のライン間での同一アドレスの重なり検出
(2−2−1)および(2−2−2)でのカウント数は積算される。この積算値は、当該vgt命令のアドレス重複数である。
図4は、本実施形態を適用した後の、リスト総和演算の命令列の一例である。図4に示されるように、アドレス重複を検出するための命令が、命令列(特に、コアループ)から削除されている。削除されている命令は、1行目のvseq、14行目のvsc、15行目のvgt、18行目のvcmps、19行目のvfmk、および20行目のpcvmである。
すなわち、以上のようにしてvgtを拡張することにより、vgt単体にてアドレス重複を検出することができるため、アドレス重複を検出するための命令を別途実行する必要が無くなる。
(3)本実施形態に係る計算機についての説明
(構成の説明)
図5は、本発明の第1の実施形態に係る計算機100の構成例を示すブロック図である。
計算機100は、スカラ制御部1と、ベクトル制御部2と、アドレス計算部3と、リクエストクロスバ制御部4と、リプライクロスバ制御部5と、キャッシュ・メインメモリ6と、を備える。
スカラ制御部1は、プログラム命令列を最初に処理するユニットである。具体的には、スカラ制御部1は、図1や図4に示すような命令列について、フェッチ、解読、命令発行を行う。
ベクトル制御部2は、ベクトル演算を実施するユニットである。ベクトル制御部2は、演算オペランドを格納するベクトルレジスタ21と、ベクトルマスクレジスタ22と、これらのレジスタを使った演算を行うベクトル演算器23とを、有する。ベクトル制御部2で実行する命令は、スカラ制御部1から発行され、アドレス計算部3を経由してベクトル制御部2へと至る。上記において、演算オペランドとは、ベクトル演算の対象となる値や変数のことである。
アドレス計算部3は、論理アドレスから物理アドレスへの変換を実施する。アドレス計算部3は、重複アドレス数計算部31と、ベクトルギャザー・スキャッター圧縮部32と、を有する。重複アドレス数計算部31は、16個のライン間圧縮検出部4101〜4116(後述)から通知される重複数をベクトルギャザー命令ごとに積算する。積算終了後、重複アドレス数計算部31は、スカラ制御部1に対して、その積算した値を通知する。さらに、重複アドレス数計算部31は、リプライクロスバ制御部5から返信されるベクトルギャザー命令を、ベクトルレジスタ21に中継する。
ベクトルギャザー・スキャッター圧縮部32は、「同一ライン内のアドレス重複数」を検出するとともに、リクエスト数を減らす機能を有する。具体的には、同一ライン内16要素のうちで同じアドレスと認められた場合、ベクトルギャザー・スキャッター圧縮部32は、リクエストを統合(圧縮とも呼ぶ)する。これにより、リクエスト数が減らされる。統合されたリクエストは、どの要素番号を何要素分統合したかの情報、すなわち、「同一ライン内のアドレス重複数」を保持する。
図9は、ベクトルギャザー・スキャッター圧縮部32における、「同一ライン内のアドレス重複数」を検出する方法を説明する図である。この場合、ベクトルギャザー・スキャッター圧縮部32は、図9に示すように(図9では、説明をより明瞭なものとするために、16要素ではなく4要素が図示されている)、後方の要素から順に前方の要素と比較(図9の(a)→(b)→(c)の順に比較)し、一致していた場合に統合を行うとともに、「同一ライン内の重複数」を求める。
リクエストクロスバ制御部4は、図8で説明したように、アドレス計算部3から渡されたベクトルギャザー命令の各要素を行先ごとに調停、発行するクロスバ機能を有する。リクエストクロスバ制御部4は、それぞれの出力ポートごとにライン間圧縮検出部4101〜4116を持つ。図5では、出力ポートが16個の場合が例示される。従って、ライン間圧縮検出部4101〜4116は、出力ポートの数に合わせて16個存在する。
ライン間圧縮検出部4101〜4116は、ベクトルギャザー・スキャッター圧縮部32で検出できなかった「ライン間のアドレス重複数」を検出する。通常、本検出は、同一命令内の全256要素分について実施される。
図10は、ライン間圧縮検出部4101〜4116における、「ライン間のアドレス重複数」の検出方法を説明する図である。ライン間圧縮検出部4101〜4116は、256要素分のアドレスを保持するレジスタを有する。なお、図10では、説明を明瞭なものとするために、各ラインが4要素である場合が例示される。
ライン間圧縮検出部4101〜4116は、2ライン目に相当するe016〜e019と前方のラインe000〜e003とそれぞれ比較し、重複するか否かをチェックする。また、ライン間圧縮検出部4101〜4116は、3ライン目のe032〜e035と前方のラインe016〜e019とをそれぞれ比較し一致を検出する。なお、図10では示されていないが、3ライン目の要素は、1ライン目の要素とも比較される。なぜならば、ライン間のアドレス重複検出は、前方の全要素と比較する必要があるためである。
ライン間圧縮検出部4101〜4116は、「ライン間のアドレス重複数」を、以下のようにして求める。前方の要素との一致がなかった場合、ライン間圧縮検出部4101〜4116は、当該要素の数(図10中の各要素において括弧内の番号、すなわち、「同一ライン内のアドレス重複数」)から−1した値を「ライン間のアドレス重複数」として求め、重複アドレス数計算部31に通知する。一方、前方の要素との一致があった場合、ライン間圧縮検出部4101〜4116は、当該要素の「同一ライン内のアドレス重複数」を「ライン間のアドレス重複数」として重複アドレス数計算部31に通知する。
具体的には、たとえば、1ライン目に関して、図10のe000については、「同一ライン内のアドレス重複数」が1(非統合)のため、0(=1−1)が「ライン間のアドレス重複数」として通知される。また、図10のe002については、「同一ライン内のアドレス重複数」が3であり、且つ、e002自体が1ライン目でありアドレス重複はないため、2(=3−1)が「ライン間のアドレス重複数」として通知される。
2ライン目については、e016が前方のラインとの一致が無い場合、1(=2−1)が「ライン間のアドレス重複数」として通知される。
一方、e016が前方のe002と重複していた場合、「ライン間のアドレス重複数」として2が通知される。すなわち、e002とe016が同じアドレスであった場合、e002自体で2つの重複、さらに、e015で2つの重複になるため合計4つの重複が存在することになる。以下、同様の処理が、当該ベクトルギャザー命令の要素分だけ繰り返される。
全要素の調停が終了すると、リクエストクロスバ制御部4は、全てのライン間圧縮検出部4101〜4116に対して、ベクトルギャザー命令の処理終了を示す疑似要素(終了要素)を通知する。終了要素を受理すると、ライン間圧縮検出部4101〜4116は、重複アドレス数計算部31に対して、それぞれのライン間圧縮検出部4101〜4116での重複検出が終了したことを示す終了通知を発行する。また、ライン間圧縮検出部4101〜4116は、アドレスを保持している要素をクリアし、次の命令に備える。なお、ライン間圧縮検出部4101〜4116は、それぞれの要素のアドレスを保持している最中に、ギャザー命令の各要素のリクエストは後続要素を待つことなくキャッシュ・メインメモリ6に発行することができる。
キャッシュ・メインメモリ6は、各要素のアドレスに基づき、キャッシュもしくはメインメモリから当該アドレスのデータを読み出し、リプライクロスバ制御部5に返信する。
リプライクロスバ制御部5は、クロスバを保持し戻り先に応じて調停し、リプライデータをアドレス計算部3に返信する。
(動作の説明)
図11は、図5に示す計算機100の動作例(計算方法)を説明するためのフローチャートである。
■ステップS1(命令発行)
スカラ制御部1によりフェッチ・デコードされたベクトルギャザー命令は、アドレス計算部3に発行される。
■ステップS2(ライン内圧縮)
アドレス計算部3は、ベクトルギャザー命令のアドレスを論理アドレスから物理アドレスへと変換し、ベクトル制御部2に対して、ベクトルギャザー命令が発行されたことを通知する。そして、ベクトルギャザー・スキャッター圧縮部32は、ライン内圧縮の検出を行う。ベクトルギャザー・スキャッター圧縮部32は、圧縮した要素に、どの要素を圧縮したかの情報(「同一ライン内のアドレス重複数」)を付与する。圧縮されたベクトルギャザー命令は、リクエストクロスバ制御部4に順次送られる。
■ステップS3(行先別の調停/終了要素の調停)
リクエストクロスバ制御部4は、行先別に調停を行い、行先に応じた出力ポートに当該要素を送信する。そして、当該ベクトルギャザー命令の全要素の調停発行後には、リクエストクロスバ制御部4は、当該命令の処理の終了を示す疑似要素(終了要素)を、ライン間圧縮検出部4101〜4116へ送信する。
■ステップS4(終了要素の判定)
ライン間圧縮検出部4101〜4116は、終了要素か否かの判定を行う。終了要素の場合は、ステップS9の処理が実行される。終了要素でなければ、ステップS5の処理が実行される。
■ステップS5(アドレスの保持)
ライン間圧縮検出部4101〜4116は、当該ポートにアクセスされた要素のアドレスを保持する。
■ステップS6(先行要素内に同一アドレスがあるか否かの判定)
ライン間圧縮検出部4101〜4116は、保持している先行要素と新規に調停されてきた要素とのライン間の比較を行い、同一アドレスがあるか否かを判定する。同一アドレスがない場合にはステップS7の処理が実行され、同一アドレスがある場合にはステップS8の処理が実行される。
■ステップS7(当該要素の「同一ライン内のアドレス重複数」から1を減じた値の通知)
同一アドレスがない場合、ライン間圧縮検出部4101〜4116は、当該要素の「同一ライン内のアドレス重複数」から1を減算した値を「ライン間のアドレス重複数」として求め、これを重複アドレス数計算部31に通知する。
■ステップS8(当該要素の「同一ライン内のアドレス重複数」の通知)
同一アドレスがある場合、ライン間圧縮検出部4101〜4116は、当該要素の「同一ライン内のアドレス重複数」の値を「ライン間のアドレス重複数」として求め、これを重複アドレス数計算部31に通知する。
■ステップS9(終了通知の発行)
全要素の調停が終了すると、リクエストクロスバ制御部4は、全てのライン間圧縮検出部4101〜4116に対して、終了要素を通知する。ライン間圧縮検出部4101〜4116は、終了要素を受理すると、重複アドレス数計算部31に対して、それぞれのライン間圧縮検出部4101〜4116での重複検出が終了したことを示す終了通知を発行する。
■ステップS10(保持アドレスのクリア)
その後、ライン間圧縮検出部4101〜4116は、アドレスを保持している要素をクリアし、次の命令に備える。
■ステップS11(メインメモリにメモリアクセスを発行)
各要素のアクセス先が決まったため、キャッシュ・メインメモリ6では実際のデータアクセスが行われる。
■ステップS12(リプライクロスバ制御部経由でリプライ)
キャッシュ・メインメモリ6にアクセスした各要素のリプライは、リプライクロスバ制御部5を経由して、アドレス計算部3に返信される。このとき、ライン内で圧縮しているアクセスが展開される(具体的には、圧縮前のアクセス要素数が復元される)。
■ステップS13(リプライデータをベクトルレジスタに返送)
アドレス計算部3は、リプライクロスバ制御部5から返信された要素に対するリプライをベクトルレジスタ21に返送する。アクセスのあった要素分が返送されると、ベクトル制御部2に対する処理は終了となる。
■ステップS14(重複数の返送)
重複アドレス数計算部31は、ライン間圧縮検出部4101〜4116から通知される値(「ライン間のアドレス重複数」)を16ポート分まとめて積算し続ける。この積算は、ライン間圧縮検出部4101〜4116からの終了通知が届くまで続けられる。終了通知の受理により、「ベクトルギャザー命令に対する重複数」の計算は完了する。重複アドレス数計算部31は、「ベクトルギャザー命令に対する重複数」をスカラ制御部1に返送する。スカラ制御部1は、受理した重複数をスカラレジスタに保持する。これにより、当該ベクトルギャザー命令は完了となる。
(効果の説明)
以上説明した第1の実施形態のようにベクトルギャザー命令(vgt)を拡張することにより、vgt単体にてアドレス重複を検出することができる。従って、コアループ内における、アドレス重複を検出するための命令(たとえば、図4において取り消し線が引かれた命令)を不要とすることができ、結果として、リスト総和演算の高速化が可能なる。
なお、以上説明した第1の実施形態は、ベクトルギャザー命令をもつベクトル型の計算機だけでなく、ベクトルギャザー命令と同等の機能をもつSIMD(Single Instruction Multiple Data)命令を実装しているスカラ型の計算機にも適用可能である。
[第2の実施形態]
図12は、本発明の第2の実施形態に関する説明であって、詳細には、ベクトルギャザー命令を更に拡張した後のニーモニックの例を示している。
第1の実施形態は、ベクトルギャザー命令の重複数をカウントしている。しかしながら、後のスカラ命令による補正処理において、全256要素中の重複箇所を必要とする場合がある。その時のために、ベクトルギャザー命令は、図12のように拡張される。そして、アドレスの重複数だけでなく、重複箇所がベクトルマスクレジスタ(図12で示されるVM0)へ格納される。具体的には、重複アドレス数計算部31およびライン間圧縮検出部4101〜4116の機能が一部変更される。
図13は、本変形例に係るライン間圧縮検出部4101〜4116が新たに備える重複ビットマップレジスタ42の図である。
重複ビットマップレジスタ42は、要素ごとに設けられる1ビットのビットマップレジスタの集合である。所定の要素が重複していることを検出すると、ライン間圧縮検出部4101〜4116は、重複ビットマップレジスタにおいて当該要素に対応するビットをアサートする。リクエストクロスバ制御部4から終了要素を受け取ると、ライン間圧縮検出部4101〜4116は、重複ビットマップレジスタを、重複アドレス数計算部31に通知する。重複アドレス数計算部31は、全16ポートからの重複ビットマップレジスタをORしたのち、ベクトル制御部2が持つ指定されたベクトルマスクレジスタ22に重複箇所を示す値を格納する。
以上説明した第2の実施形態によれば、第1の実施形態と同等の効果を得ることができる。さらに、第2の実施形態によれば、スカラ命令による補正処理において全要素(たとえば、256要素)中の重複箇所の情報が必要となる状況になったとしてもその状況に対応することができる。
[第3の実施形態]
図14は、本発明の第3の実施形態に係る計算機200の構成例を示すブロック図である。
計算機200は、第1重複処理部202(第1重複処理手段の一例)と、第2重複処理部204(第2重複処理手段の一例)と、重複アドレス数計算部206(重複アドレス数計算手段の一例)と、を備える。
第1重複処理部202は、1つのラインが複数の要素を含み、ラインを複数に亘って処理するベクトルギャザー命令を実行するにあたり、1つのライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合する。第1重複処理部202は、たとえば、第1の実施形態のベクトルギャザー・スキャッター圧縮部32(図5参照)に相当する。また、第1アドレス重複数は、たとえば、第1の実施形態の「同一ライン内のアドレス重複数」に相当する。
第2重複処理部204は、複数のライン間におけるアドレス重複があるか否かを判定し、当該判定結果と第1アドレス重複数とに基づいて、ライン間のアドレス重複数である第2アドレス重複数を求める。第2重複処理部204は、たとえば、第1の実施形態のライン間圧縮検出部4101〜4116(図5参照)に相当する。また、第2アドレス重複数は、たとえば、第1の実施形態の「ライン間のアドレス重複数」に相当する。
重複アドレス数計算部206は、ベクトルギャザー命令ごとに第2アドレス重複数を積算し、積算された重複数をスカラ演算部(図14において不図示)に通知する。重複アドレス数計算部206は、たとえば、第1の実施形態の重複アドレス数計算部31(図5参照)に相当する。また、積算された重複数は、たとえば、第1の実施形態の「ベクトルギャザー命令に対する重複数」に相当する。
図15は、図14に示す計算機200の動作例(計算方法)を説明するためのフローチャートである。
第1重複処理部202は、上記ベクトルギャザー命令を実行するにあたり、1つのライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合する(ステップS30)。第2重複処理部204は、複数のライン間におけるアドレス重複があるか否かを判定し、当該判定結果と第1アドレス重複数とに基づいて、ライン間のアドレス重複数である第2アドレス重複数を求める(ステップS31)。
重複アドレス数計算部206は、ベクトルギャザー命令ごとに第2アドレス重複数を積算し、積算された重複数をスカラ演算部に通知する(ステップS32)。
以上説明した第3の実施形態によれば、ベクトルギャザー命令単体にてアドレス重複を検出することができる。従って、コアループ内における、アドレス重複を検出するための命令(たとえば、図4において取り消し線が引かれた命令)を不要とすることができ、結果として、リスト総和演算の高速化が可能なる。
以上、各実施形態を用いて本発明を説明したが、本発明の技術的範囲は、上記各実施形態の記載に限定されない。上記各実施形態に多様な変更又は改良を加えることが可能であることは当業者にとって自明である。従って、そのような変更又は改良を加えた形態もまた本発明の技術的範囲に含まれることは説明するまでもない。また、以上説明した各実施形態において使用される、数値や各構成の名称等は例示的なものであり適宜変更可能である。
1 スカラ制御部
2 ベクトル制御部
21 ベクトルレジスタ
22 ベクトルマスクレジスタ
23 ベクトル演算器
3 アドレス計算部
31 重複アドレス数計算部
32 ベクトルギャザー・スキャッター圧縮部
4 リクエストクロスバ制御部
4101〜4116 ライン間圧縮検出部
42 重複ビットマップレジスタ
5 リプライクロスバ制御部
6 キャッシュ・メインメモリ
100 計算機
200 計算機
202 第1重複処理部
204 第2重複処理部
206 重複アドレス数計算部

Claims (6)

  1. 1つのラインが複数の要素を含み、前記ラインを複数に亘って処理するベクトルギャザー命令を実行するにあたり、1つの前記ライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合する第1重複処理手段と、
    複数の前記ライン間におけるアドレス重複があるか否かを判定し、当該判定結果と前記第1アドレス重複数とに基づいて、前記ライン間のアドレス重複数である第2アドレス重複数を求める第2重複処理手段と、
    前記ベクトルギャザー命令ごとに前記第2アドレス重複数を積算し、積算された重複数をスカラ演算部に通知する重複アドレス数計算手段と
    を備えることを特徴とする計算機。
  2. 請求項1記載の前記計算機において前記ベクトルギャザー命令を実行する際のニーモニックは、前記ベクトルギャザー命令をVGTとし、ソースベクトルレジスタをVR0とし、デスティネーションベクトルレジスタをVR1とし、スカラレジスタをSR0とする場合、
    VGT VR0、VR1、SR0
    であることを特徴とする計算機。
  3. 前記第2重複処理手段は、前記要素ごとに設けられる1ビットのビットマップレジスタの集合である重複ビットマップレジスタを備えることを特徴とする請求項1または2記載の計算機。
  4. 前記第2重複処理手段は、所定の前記要素が重複していることを検出すると、前記重複ビットマップレジスタにおける、当該要素に対応する前記ビットマップレジスタをアサートし、前記ベクトルギャザー命令の処理終了を示す終了要素を受理した場合、前記重複ビットマップレジスタを、前記重複アドレス数計算手段へ通知することを特徴とする請求項3記載の計算機。
  5. 請求項3または4に記載の前記計算機において前記ベクトルギャザー命令を実行する際のニーモニックは、ベクトルマスクレジスタをVM0とした場合、
    VGT VR0、VR1、SR0、VM0
    であることを特徴とする計算機。
  6. 1つのラインが複数の要素を含み、前記ラインを複数に亘って処理するベクトルギャザー命令を実行するにあたり、1つの前記ライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合し、
    複数の前記ライン間におけるアドレス重複があるか否かを判定し、当該判定結果と前記第1アドレス重複数とに基づいて、前記ライン間のアドレス重複数である第2アドレス重複数を求め、
    前記ベクトルギャザー命令ごとに前記第2アドレス重複数を積算し、積算された重複数をスカラ演算部に通知する
    ことを特徴とする計算方法。
JP2018183265A 2018-09-28 2018-09-28 計算機および計算方法 Active JP7124608B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018183265A JP7124608B2 (ja) 2018-09-28 2018-09-28 計算機および計算方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018183265A JP7124608B2 (ja) 2018-09-28 2018-09-28 計算機および計算方法

Publications (2)

Publication Number Publication Date
JP2020052862A true JP2020052862A (ja) 2020-04-02
JP7124608B2 JP7124608B2 (ja) 2022-08-24

Family

ID=69997317

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018183265A Active JP7124608B2 (ja) 2018-09-28 2018-09-28 計算機および計算方法

Country Status (1)

Country Link
JP (1) JP7124608B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114328592A (zh) * 2022-03-16 2022-04-12 北京奥星贝斯科技有限公司 聚合计算方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1049520A (ja) * 1996-07-29 1998-02-20 Kofu Nippon Denki Kk リストベクトル処理システム
JP2014099194A (ja) * 2008-03-28 2014-05-29 Intel Corp 効率的な同期および並列リダクション演算を可能にするベクトル命令
JP2017045151A (ja) * 2015-08-24 2017-03-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2019517060A (ja) * 2016-04-26 2019-06-20 エイアールエム リミテッド ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1049520A (ja) * 1996-07-29 1998-02-20 Kofu Nippon Denki Kk リストベクトル処理システム
JP2014099194A (ja) * 2008-03-28 2014-05-29 Intel Corp 効率的な同期および並列リダクション演算を可能にするベクトル命令
JP2017045151A (ja) * 2015-08-24 2017-03-02 富士通株式会社 演算処理装置及び演算処理装置の制御方法
JP2019517060A (ja) * 2016-04-26 2019-06-20 エイアールエム リミテッド ベクトル演算を実行する際にアドレス衝突を管理するための装置及び方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114328592A (zh) * 2022-03-16 2022-04-12 北京奥星贝斯科技有限公司 聚合计算方法和装置

Also Published As

Publication number Publication date
JP7124608B2 (ja) 2022-08-24

Similar Documents

Publication Publication Date Title
JP5573134B2 (ja) ベクトル型計算機及びベクトル型計算機の命令制御方法
US9678750B2 (en) Vector instructions to enable efficient synchronization and parallel reduction operations
JPH1027102A (ja) 演算処理装置
US7418575B2 (en) Long instruction word processing with instruction extensions
KR102524565B1 (ko) 로드 스토어 유닛들을 바이패싱하여 스토어 및 로드 추적
CN107315717B (zh) 一种用于执行向量四则运算的装置和方法
TW201719389A (zh) 處理用於向量算術指令的例外狀況
US8788766B2 (en) Software-accessible hardware support for determining set membership
KR101183270B1 (ko) 오퍼랜드 의존성으로 인한 기능 정지를 감소시키는 방법 및데이터 프로세서
JP2001209535A (ja) プロセッサの命令スケジューリング装置
EP3140730B1 (en) Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme
JPS63240664A (ja) 高速処理計算機
US5802340A (en) Method and system of executing speculative store instructions in a parallel processing computer system
CN110060195B (zh) 一种数据处理的方法及装置
JP7124608B2 (ja) 計算機および計算方法
JPH10143365A (ja) 並列処理装置及びその命令発行方式
EP3543846B1 (en) Computer system and memory access technology
JP5979966B2 (ja) 回路設計支援装置及び回路設計支援方法及びプログラム
Kiat et al. A comprehensive analysis on data hazard for RISC32 5-stage pipeline processor
JP3435278B2 (ja) データ処理装置
US20080215859A1 (en) Computer with high-speed context switching
US6795878B2 (en) Verifying cumulative ordering of memory instructions
JP7010129B2 (ja) プロセッサ及び情報処理装置
US8683181B2 (en) Processor and method for distributing load among plural pipeline units
JP5882800B2 (ja) リスト命令の検証機能を有する情報処理装置、リスト命令の検証方法、及びリスト命令の検証のためのプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210816

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211015

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220701

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220712

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220725

R151 Written notification of patent or utility model registration

Ref document number: 7124608

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151