図面 (/)

技術 計算機および計算方法

出願人 日本電気株式会社
発明者 川口英一郎
出願日 2018年9月28日 (2年3ヶ月経過) 出願番号 2018-183265
公開日 2020年4月2日 (9ヶ月経過) 公開番号 2020-052862
状態 未査定
技術分野 先行制御 複合演算
主要キーワード ライン内圧 先行要素 カウント命令 シーケンシャルナンバー アクセス要素 後続要素 プログラム命令列 マスク命令
関連する未来課題
重要な関連分野

この項目の情報は公開日時点(2020年4月2日)のものです。
また、この項目は機械的に抽出しているため、正しく解析できていない場合があります

図面 (16)

課題

リスト総和演算高速化を可能とする。

解決手段

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

概要

背景

ハイパフォーマンスコンピューティングプログラムにおいて、高速化が求められる演算の一つに、たとえば、以下のようなリスト総和演算がある。

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アドレス一致検出部が、後続メモリアクセス命令アクセスするアドレス領域が重なっているか判定する技術が記載されている。

概要

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

目的

本発明は、上記課題を解決するためになされたものであり、リスト総和演算の高速化を可能とする技術を提供する

効果

実績

技術文献被引用数
0件
牽制数
0件

この技術が所属する分野

ライセンス契約や譲渡などの可能性がある特許掲載中! 開放特許随時追加・更新中 詳しくはこちら

請求項1

1つのラインが複数の要素を含み、前記ラインを複数に亘って処理するベクトルギャザー命令を実行するにあたり、1つの前記ライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエスト統合する第1重複処理手段と、複数の前記ライン間におけるアドレス重複があるか否かを判定し、当該判定結果と前記第1アドレス重複数とに基づいて、前記ライン間のアドレス重複数である第2アドレス重複数を求める第2重複処理手段と、前記ベクトルギャザー命令ごとに前記第2アドレス重複数を積算し、積算された重複数をスカラ演算部に通知する重複アドレス数計算手段とを備えることを特徴とする計算機

請求項2

請求項1記載の前記計算機において前記ベクトルギャザー命令を実行する際のニーモニックは、前記ベクトルギャザー命令をVGTとし、ソースベクトルレジスタVR0とし、デスティネーションベクトルレジスタをVR1とし、スカラレジスタをSR0とする場合、VGTVR0、VR1、SR0であることを特徴とする計算機。

請求項3

前記第2重複処理手段は、前記要素ごとに設けられる1ビットビットマップレジスタの集合である重複ビットマップレジスタを備えることを特徴とする請求項1または2記載の計算機。

請求項4

前記第2重複処理手段は、所定の前記要素が重複していることを検出すると、前記重複ビットマップレジスタにおける、当該要素に対応する前記ビットマップレジスタをアサートし、前記ベクトルギャザー命令の処理終了を示す終了要素受理した場合、前記重複ビットマップレジスタを、前記重複アドレス数計算手段へ通知することを特徴とする請求項3記載の計算機。

請求項5

請求項3または4に記載の前記計算機において前記ベクトルギャザー命令を実行する際のニーモニックは、ベクトルマスクレジスタをVM0とした場合、VGTVR0、VR1、SR0、VM0であることを特徴とする計算機。

請求項6

1つのラインが複数の要素を含み、前記ラインを複数に亘って処理するベクトルギャザー命令を実行するにあたり、1つの前記ライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合し、複数の前記ライン間におけるアドレス重複があるか否かを判定し、当該判定結果と前記第1アドレス重複数とに基づいて、前記ライン間のアドレス重複数である第2アドレス重複数を求め、前記ベクトルギャザー命令ごとに前記第2アドレス重複数を積算し、積算された重複数をスカラ演算部に通知することを特徴とする計算方法

技術分野

0001

本発明は、計算機および計算方法に関する。

背景技術

0002

ハイパフォーマンスコンピューティングプログラムにおいて、高速化が求められる演算の一つに、たとえば、以下のようなリスト総和演算がある。

0003

x(l(i))=x(l(i))+y(i)
しかしながら、上記のリスト総和演算の計算時にループを回る中で、l(i)に同一要素入り、x(l(i))のアドレス重複することがある。

0004

そのため、リスト総和演算の計算時には、実際の総和演算以外に重複を検出するための命令別途必要となる。具体的には、1つの計算ループ(コアループとも呼ぶ)中に、ベクトルギャザー命令およびベクトルスキャッター命令のそれぞれが別途必要となる。

0005

具体的な例を図1に示す命令列で説明する。図1は、以下のプログラム
do i =1、ny
x(l(i))=x(l(i))+y(i)
end do
アセンブラ記述した命令列の1例である。

0006

本命令列におけるリスト総和演算の本質的な部分は、10行目のvld(ベクトルロード命令)、13行目のvgt(ベクトルギャザー命令)、16行目のvfadd(ベクトル加算命令)、および17行目のvsc(ベクトルスキャッター命令)である。

0007

vgtは、ソースであるx(l(i))を読み込む命令である。vldは、y(i)を読み込む命令である。vfaddは、足し算を行う命令である。vscは、結果を書き戻す命令である。

0008

しかしながら、この命令列では、上記本質的部分の他に、アドレス重複を検出する以下の命令が存在する。

0009

1行目:256要素ベクトルレジスタにそれぞれ、0、1、2、3、・・・、255を格納するvseq(ベクトルシーケンシャルナンバー命令)
14行目:vseqで付与したベクトルレジスタをx(l(i))に書き込むvsc(ベクトルスキャッター命令)
15行目:14行目で書きだしたアドレスx(l(i))から読み戻すvgt(ベクトルギャザー命令)
18行目:15行目で読み戻した値と、元のシーケンシャル番号を比較するvcmps(ベクトルコンペア命令)。

0010

19行目:18行目で検出した重複箇所ベクトルマスクレジスタビットマップで示すvfmk(ベクトルフォームマスク命令
20行目:19行目で示したビットマップの数を数えるpcvm(ベクトルマスクポピュレーションカウント命令
上記に関連して、特許文献1には、格納先アドレスが一致している場合に、要素番号が若い要素リクエストで生成されるライト信号の、リクエスト分配回路への出力を抑止する技術が記載されている。特許文献2には、vscが発行された場合、vscの開始アドレスと、終了アドレスが、vscアドレス一致検出部に送られ、vscアドレス一致検出部が、後続メモリアクセス命令アクセスするアドレス領域が重なっているか判定する技術が記載されている。

先行技術

0011

特開2004−062311号公報
特開2002−024205号公報

発明が解決しようとする課題

0012

アドレス重複を検出するために必要な上記命令群の中でも、特に、ベクトルギャザー命令、ベクトルスキャッター命令、ポピュレーションカウント命令は、実行コストが高い(実行時間が長い)。すなわち、これらの命令がコアループに入っているため、リスト総和演算自体の実行時間が長くなってしまう課題がある。

0013

特許文献1、2の技術は、いずれも、リスト総和演算を高速化させるための技術ではない。

0014

本発明は、上記課題を解決するためになされたものであり、リスト総和演算の高速化を可能とする技術を提供することを目的とする。

課題を解決するための手段

0015

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

0016

本発明の計算方法は、1つのラインが複数の要素を含み、前記ラインを複数に亘って処理するベクトルギャザー命令を実行するにあたり、1つの前記ライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合し、複数の前記ライン間におけるアドレス重複があるか否かを判定し、当該判定結果と前記第1アドレス重複数とに基づいて、前記ライン間のアドレス重複数である第2アドレス重複数を求め、前記ベクトルギャザー命令ごとに前記第2アドレス重複数を積算し、積算された重複数をスカラ演算部に通知することを特徴とする。

発明の効果

0017

本発明によれば、リスト総和演算の高速化が可能となる。

図面の簡単な説明

0018

本発明を適用する前の、リスト総和演算の命令列の一例である。
ベクトルギャザー命令を拡張する前のニーモニックの例を示している。
本発明の第1の実施形態によって、ベクトルギャザー命令を拡張した後のニーモニックの例を示している。
第1の実施形態を適用した後の、リスト総和演算の命令列の一例である。
図5は、第1の実施形態に係る計算機の構成例を示すブロック図である。
ベクトルギャザー命令のイメージを説明する図である。
ベクトルギャザー命令の実際の発行のイメージを説明する図である。
リクエストクロスバにおける調停方法を説明する図である。
ベクトルギャザースキャッター圧縮部における、同一ライン内の重複を検出する方法を説明する図である。
ライン間圧縮検出部における、ライン間のアドレス重複検出を説明する図である。
図5に示す計算機の動作例(計算方法)を説明するためのフローチャートである。
本発明の第2の実施形態に関する説明であって、詳細には、ベクトルギャザー命令を更に拡張した後のニーモニックの例を示している。
第2の実施形態のライン間圧縮検出部が新たに備える重複ビットマップレジスタの図である。
図14は、本発明の第3の実施形態に係る計算機の構成例を示すブロック図である。
図15は、図14に示す計算機の動作例(計算方法)を説明するためのフローチャートである。

実施例

0019

[第1の実施形態]
(1)ベクトルギャザー命令の一般的な動作についての説明
本実施形態を説明する前に、ベクトルギャザー命令の一般的な動作について説明する。ベクトルギャザー命令のニーモニックは、以下のようになる。

0020

GTVR0、VR1
上記において、VR0およびVR1は、ベクトルレジスタである。ベクトルレジスタは複数の要素を保持しており、本実施形態では、256個の要素が保持されるものと仮定する。すなわち、1つのベクトルレジスタは、8B(8×8=64ビット)のデータ幅のレジスタを256個分持っている。

0021

図6は、ベクトルギャザー命令のイメージを説明するための図である。ソースベクトルレジスタであるVR0の各要素(VR0(0)乃至VR0(n)のそれぞれ:nは整数)には、アクセス先アドレスが入っている。図6において、メモリ空間から当該アドレスが指し示すデータが読み出される。読み出したデータは、デスティネーションベクトルレジスタであるVR1のそれぞれの要素に格納される。

0022

図7は、ベクトルギャザー命令の実際の発行のイメージを説明するための図である。ハードウェア量の観点から、一般的には、256要素は、1サイクルですべて処理されるのではなく、複数サイクルに分けて処理される。図7の例では、1サイクルで16要素を処理し、全256要素を16サイクルで処理する方式が示される。以下、1サイクルで処理される要素の列は、「ライン」とする。

0023

図8は、リクエストクロスバにおける調停方法を説明するための図である。図8において、上段のP00〜P15は入力ポートであり、下段のP00〜P15は出力ポートである。

0024

まず、図8では、入力ポートP00〜P15にリクエストが来ている状態が示されている。1ライン目には、要素e000〜e015が来ており、2ライン目には、要素e016〜e031が続いている。それぞれの要素には行先アドレスが入っており、そのアドレスに応じて、インタリーブされた出力ポートに向けてクロスバにて調停される。

0025

また、図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命令のアドレス重複数である。

0026

図4は、本実施形態を適用した後の、リスト総和演算の命令列の一例である。図4に示されるように、アドレス重複を検出するための命令が、命令列(特に、コアループ)から削除されている。削除されている命令は、1行目のvseq、14行目のvsc、15行目のvgt、18行目のvcmps、19行目のvfmk、および20行目のpcvmである。

0027

すなわち、以上のようにしてvgtを拡張することにより、vgt単体にてアドレス重複を検出することができるため、アドレス重複を検出するための命令を別途実行する必要が無くなる。
(3)本実施形態に係る計算機についての説明
(構成の説明)
図5は、本発明の第1の実施形態に係る計算機100の構成例を示すブロック図である。

0028

計算機100は、スカラ制御部1と、ベクトル制御部2と、アドレス計算部3と、リクエストクロスバ制御部4と、リプライクロスバ制御部5と、キャッシュメインメモリ6と、を備える。

0029

スカラ制御部1は、プログラム命令列を最初に処理するユニットである。具体的には、スカラ制御部1は、図1図4に示すような命令列について、フェッチ解読命令発行を行う。

0030

ベクトル制御部2は、ベクトル演算を実施するユニットである。ベクトル制御部2は、演算オペランドを格納するベクトルレジスタ21と、ベクトルマスクレジスタ22と、これらのレジスタを使った演算を行うベクトル演算器23とを、有する。ベクトル制御部2で実行する命令は、スカラ制御部1から発行され、アドレス計算部3を経由してベクトル制御部2へと至る。上記において、演算オペランドとは、ベクトル演算の対象となる値や変数のことである。

0031

アドレス計算部3は、論理アドレスから物理アドレスへの変換を実施する。アドレス計算部3は、重複アドレス数計算部31と、ベクトルギャザー・スキャッター圧縮部32と、を有する。重複アドレス数計算部31は、16個のライン間圧縮検出部4101〜4116(後述)から通知される重複数をベクトルギャザー命令ごとに積算する。積算終了後、重複アドレス数計算部31は、スカラ制御部1に対して、その積算した値を通知する。さらに、重複アドレス数計算部31は、リプライクロスバ制御部5から返信されるベクトルギャザー命令を、ベクトルレジスタ21に中継する。

0032

ベクトルギャザー・スキャッター圧縮部32は、「同一ライン内のアドレス重複数」を検出するとともに、リクエスト数を減らす機能を有する。具体的には、同一ライン内16要素のうちで同じアドレスと認められた場合、ベクトルギャザー・スキャッター圧縮部32は、リクエストを統合(圧縮とも呼ぶ)する。これにより、リクエスト数が減らされる。統合されたリクエストは、どの要素番号を何要素分統合したかの情報、すなわち、「同一ライン内のアドレス重複数」を保持する。

0033

図9は、ベクトルギャザー・スキャッター圧縮部32における、「同一ライン内のアドレス重複数」を検出する方法を説明する図である。この場合、ベクトルギャザー・スキャッター圧縮部32は、図9に示すように(図9では、説明をより明瞭なものとするために、16要素ではなく4要素が図示されている)、後方の要素から順に前方の要素と比較(図9の(a)→(b)→(c)の順に比較)し、一致していた場合に統合を行うとともに、「同一ライン内の重複数」を求める。

0034

リクエストクロスバ制御部4は、図8で説明したように、アドレス計算部3から渡されたベクトルギャザー命令の各要素を行先ごとに調停、発行するクロスバ機能を有する。リクエストクロスバ制御部4は、それぞれの出力ポートごとにライン間圧縮検出部4101〜4116を持つ。図5では、出力ポートが16個の場合が例示される。従って、ライン間圧縮検出部4101〜4116は、出力ポートの数に合わせて16個存在する。

0035

ライン間圧縮検出部4101〜4116は、ベクトルギャザー・スキャッター圧縮部32で検出できなかった「ライン間のアドレス重複数」を検出する。通常、本検出は、同一命令内の全256要素分について実施される。

0036

図10は、ライン間圧縮検出部4101〜4116における、「ライン間のアドレス重複数」の検出方法を説明する図である。ライン間圧縮検出部4101〜4116は、256要素分のアドレスを保持するレジスタを有する。なお、図10では、説明を明瞭なものとするために、各ラインが4要素である場合が例示される。

0037

ライン間圧縮検出部4101〜4116は、2ライン目に相当するe016〜e019と前方のラインe000〜e003とそれぞれ比較し、重複するか否かをチェックする。また、ライン間圧縮検出部4101〜4116は、3ライン目のe032〜e035と前方のラインe016〜e019とをそれぞれ比較し一致を検出する。なお、図10では示されていないが、3ライン目の要素は、1ライン目の要素とも比較される。なぜならば、ライン間のアドレス重複検出は、前方の全要素と比較する必要があるためである。

0038

ライン間圧縮検出部4101〜4116は、「ライン間のアドレス重複数」を、以下のようにして求める。前方の要素との一致がなかった場合、ライン間圧縮検出部4101〜4116は、当該要素の数(図10中の各要素において括弧内の番号、すなわち、「同一ライン内のアドレス重複数」)から−1した値を「ライン間のアドレス重複数」として求め、重複アドレス数計算部31に通知する。一方、前方の要素との一致があった場合、ライン間圧縮検出部4101〜4116は、当該要素の「同一ライン内のアドレス重複数」を「ライン間のアドレス重複数」として重複アドレス数計算部31に通知する。

0039

具体的には、たとえば、1ライン目に関して、図10のe000については、「同一ライン内のアドレス重複数」が1(非統合)のため、0(=1−1)が「ライン間のアドレス重複数」として通知される。また、図10のe002については、「同一ライン内のアドレス重複数」が3であり、且つ、e002自体が1ライン目でありアドレス重複はないため、2(=3−1)が「ライン間のアドレス重複数」として通知される。

0040

2ライン目については、e016が前方のラインとの一致が無い場合、1(=2−1)が「ライン間のアドレス重複数」として通知される。

0041

一方、e016が前方のe002と重複していた場合、「ライン間のアドレス重複数」として2が通知される。すなわち、e002とe016が同じアドレスであった場合、e002自体で2つの重複、さらに、e015で2つの重複になるため合計4つの重複が存在することになる。以下、同様の処理が、当該ベクトルギャザー命令の要素分だけ繰り返される。

0042

全要素の調停が終了すると、リクエストクロスバ制御部4は、全てのライン間圧縮検出部4101〜4116に対して、ベクトルギャザー命令の処理終了を示す疑似要素(終了要素)を通知する。終了要素を受理すると、ライン間圧縮検出部4101〜4116は、重複アドレス数計算部31に対して、それぞれのライン間圧縮検出部4101〜4116での重複検出が終了したことを示す終了通知を発行する。また、ライン間圧縮検出部4101〜4116は、アドレスを保持している要素をクリアし、次の命令に備える。なお、ライン間圧縮検出部4101〜4116は、それぞれの要素のアドレスを保持している最中に、ギャザー命令の各要素のリクエストは後続要素を待つことなくキャッシュ・メインメモリ6に発行することができる。

0043

キャッシュ・メインメモリ6は、各要素のアドレスに基づき、キャッシュもしくはメインメモリから当該アドレスのデータを読み出し、リプライクロスバ制御部5に返信する。

0044

リプライクロスバ制御部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において取り消し線が引かれた命令)を不要とすることができ、結果として、リスト総和演算の高速化が可能なる。

0045

なお、以上説明した第1の実施形態は、ベクトルギャザー命令をもつベクトル型の計算機だけでなく、ベクトルギャザー命令と同等の機能をもつSIMD(Single Instruction Multiple Data)命令を実装しているスカラ型の計算機にも適用可能である。
[第2の実施形態]
図12は、本発明の第2の実施形態に関する説明であって、詳細には、ベクトルギャザー命令を更に拡張した後のニーモニックの例を示している。

0046

第1の実施形態は、ベクトルギャザー命令の重複数をカウントしている。しかしながら、後のスカラ命令による補正処理において、全256要素中の重複箇所を必要とする場合がある。その時のために、ベクトルギャザー命令は、図12のように拡張される。そして、アドレスの重複数だけでなく、重複箇所がベクトルマスクレジスタ(図12で示されるVM0)へ格納される。具体的には、重複アドレス数計算部31およびライン間圧縮検出部4101〜4116の機能が一部変更される。

0047

図13は、本変形例に係るライン間圧縮検出部4101〜4116が新たに備える重複ビットマップレジスタ42の図である。

0048

重複ビットマップレジスタ42は、要素ごとに設けられる1ビットのビットマップレジスタの集合である。所定の要素が重複していることを検出すると、ライン間圧縮検出部4101〜4116は、重複ビットマップレジスタにおいて当該要素に対応するビットをアサートする。リクエストクロスバ制御部4から終了要素を受け取ると、ライン間圧縮検出部4101〜4116は、重複ビットマップレジスタを、重複アドレス数計算部31に通知する。重複アドレス数計算部31は、全16ポートからの重複ビットマップレジスタをORしたのち、ベクトル制御部2が持つ指定されたベクトルマスクレジスタ22に重複箇所を示す値を格納する。

0049

以上説明した第2の実施形態によれば、第1の実施形態と同等の効果を得ることができる。さらに、第2の実施形態によれば、スカラ命令による補正処理において全要素(たとえば、256要素)中の重複箇所の情報が必要となる状況になったとしてもその状況に対応することができる。
[第3の実施形態]
図14は、本発明の第3の実施形態に係る計算機200の構成例を示すブロック図である。

0050

計算機200は、第1重複処理部202(第1重複処理手段の一例)と、第2重複処理部204(第2重複処理手段の一例)と、重複アドレス数計算部206(重複アドレス数計算手段の一例)と、を備える。

0051

第1重複処理部202は、1つのラインが複数の要素を含み、ラインを複数に亘って処理するベクトルギャザー命令を実行するにあたり、1つのライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合する。第1重複処理部202は、たとえば、第1の実施形態のベクトルギャザー・スキャッター圧縮部32(図5参照)に相当する。また、第1アドレス重複数は、たとえば、第1の実施形態の「同一ライン内のアドレス重複数」に相当する。

0052

第2重複処理部204は、複数のライン間におけるアドレス重複があるか否かを判定し、当該判定結果と第1アドレス重複数とに基づいて、ライン間のアドレス重複数である第2アドレス重複数を求める。第2重複処理部204は、たとえば、第1の実施形態のライン間圧縮検出部4101〜4116(図5参照)に相当する。また、第2アドレス重複数は、たとえば、第1の実施形態の「ライン間のアドレス重複数」に相当する。

0053

重複アドレス数計算部206は、ベクトルギャザー命令ごとに第2アドレス重複数を積算し、積算された重複数をスカラ演算部(図14において不図示)に通知する。重複アドレス数計算部206は、たとえば、第1の実施形態の重複アドレス数計算部31(図5参照)に相当する。また、積算された重複数は、たとえば、第1の実施形態の「ベクトルギャザー命令に対する重複数」に相当する。

0054

図15は、図14に示す計算機200の動作例(計算方法)を説明するためのフローチャートである。

0055

第1重複処理部202は、上記ベクトルギャザー命令を実行するにあたり、1つのライン内におけるアドレス重複数である第1アドレス重複数を求めるとともに、該当するリクエストを統合する(ステップS30)。第2重複処理部204は、複数のライン間におけるアドレス重複があるか否かを判定し、当該判定結果と第1アドレス重複数とに基づいて、ライン間のアドレス重複数である第2アドレス重複数を求める(ステップS31)。

0056

重複アドレス数計算部206は、ベクトルギャザー命令ごとに第2アドレス重複数を積算し、積算された重複数をスカラ演算部に通知する(ステップS32)。

0057

以上説明した第3の実施形態によれば、ベクトルギャザー命令単体にてアドレス重複を検出することができる。従って、コアループ内における、アドレス重複を検出するための命令(たとえば、図4において取り消し線が引かれた命令)を不要とすることができ、結果として、リスト総和演算の高速化が可能なる。

0058

以上、各実施形態を用いて本発明を説明したが、本発明の技術的範囲は、上記各実施形態の記載に限定されない。上記各実施形態に多様な変更又は改良を加えることが可能であることは当業者にとって自明である。従って、そのような変更又は改良を加えた形態もまた本発明の技術的範囲に含まれることは説明するまでもない。また、以上説明した各実施形態において使用される、数値や各構成の名称等は例示的なものであり適宜変更可能である。

0059

1スカラ制御部
2ベクトル制御部
21ベクトルレジスタ
22ベクトルマスクレジスタ
23ベクトル演算器
3アドレス計算部
31重複アドレス数計算部
32ベクトルギャザー・スキャッター圧縮部
4リクエストクロスバ制御部
4101〜4116ライン間圧縮検出部
42重複ビットマップレジスタ
5リプライクロスバ制御部
6キャッシュ・メインメモリ
100計算機
200 計算機
202 第1重複処理部
204 第2重複処理部
206 重複アドレス数計算部

ページトップへ

この技術を出願した法人

この技術を発明した人物

ページトップへ

関連する挑戦したい社会課題

該当するデータがありません

関連する公募課題

該当するデータがありません

ページトップへ

技術視点だけで見ていませんか?

この技術の活用可能性がある分野

分野別動向を把握したい方- 事業化視点で見る -

ページトップへ

おススメ サービス

おススメ astavisionコンテンツ

新着 最近 公開された関連が強い技術

この 技術と関連性が強い技術

関連性が強い 技術一覧

この 技術と関連性が強い人物

関連性が強い人物一覧

この 技術と関連する社会課題

該当するデータがありません

この 技術と関連する公募課題

該当するデータがありません

astavision 新着記事

サイト情報について

本サービスは、国が公開している情報(公開特許公報、特許整理標準化データ等)を元に構成されています。出典元のデータには一部間違いやノイズがあり、情報の正確さについては保証致しかねます。また一時的に、各データの収録範囲や更新周期によって、一部の情報が正しく表示されないことがございます。当サイトの情報を元にした諸問題、不利益等について当方は何ら責任を負いかねることを予めご承知おきのほど宜しくお願い申し上げます。

主たる情報の出典

特許情報…特許整理標準化データ(XML編)、公開特許公報、特許公報、審決公報、Patent Map Guidance System データ