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

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

▶ NECプラットフォームズ株式会社の特許一覧

特許7601434集積回路、コンピュータシステムおよびデータ処理方法
<>
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図1
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図2
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図3
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図4
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図5
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図6
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図7
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図8
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図9
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図10
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図11
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図12
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図13
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図14
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図15
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図16
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図17
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図18
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図19
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図20
  • 特許-集積回路、コンピュータシステムおよびデータ処理方法 図21
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-09
(45)【発行日】2024-12-17
(54)【発明の名称】集積回路、コンピュータシステムおよびデータ処理方法
(51)【国際特許分類】
   G06F 9/312 20180101AFI20241210BHJP
   G06F 9/345 20180101ALI20241210BHJP
   G06F 9/355 20180101ALI20241210BHJP
【FI】
G06F9/312 L
G06F9/345 A
G06F9/355 320
【請求項の数】 8
(21)【出願番号】P 2023034908
(22)【出願日】2023-03-07
(65)【公開番号】P2024126505
(43)【公開日】2024-09-20
【審査請求日】2023-03-07
(73)【特許権者】
【識別番号】000227205
【氏名又は名称】NECプラットフォームズ株式会社
(74)【代理人】
【識別番号】100149548
【弁理士】
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【弁理士】
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】加納 健
【審査官】三坂 敏夫
(56)【参考文献】
【文献】特開2020-052862(JP,A)
【文献】特開2013-182420(JP,A)
【文献】特開2010-218350(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/30-9/355
(57)【特許請求の範囲】
【請求項1】
取得されるベクトルギャザー命令で指示される複数のメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位がメモリシステムに存在するか否かを判定し、
前記処理単位が存在する場合、当該処理単位における前記要素領域ごとの要素番号とオフセットを示すロードパケットを前記メモリシステムに出力し、
前記メモリシステムから入力されるリプライパケットの前記要素番号に対応して含まれるデータ要素をベクトルレジスタに書き込み、
前記メモリアドレスを格納するアドレスレジスタを備え、
使用状態を未使用とするアドレスレジスタに格納されるメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定し、
前記ロードパケットを出力するとき、前記複数の要素領域に対応するメモリアドレスが記憶されているアドレスレジスタの使用状態を使用済に変更する
演算回路。
【請求項2】
前記メモリアドレスは、それぞれ上位アドレスとオフセットを有し、
複数のメモリアドレス間で上位アドレスが同一であるとき、
前記複数のメモリアドレスのそれぞれに対応する要素領域を複数個含む処理単位が存在すると判定し、
前記ロードパケットに前記同一の上位アドレスを含める
請求項1に記載の演算回路。
【請求項3】
前記ロードパケットに上位アドレスが同一な前記メモリアドレスの要素数を含める
請求項1に記載の演算回路。
【請求項4】
前記ロードパケットに前記要素番号の有効性を示す有効性フラグを含める
請求項1に記載の演算回路。
【請求項5】
前記ロードパケットに前記ベクトルレジスタのベクトルレジスタ番号を含める
請求項1に記載の演算回路。
【請求項6】
算回路とメモリシステムを備えるコンピュータシステムであって、
前記演算回路は、
取得されるベクトルギャザー命令で指示される複数のメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位が前記メモリシステムに存在するか否かを判定し、
前記処理単位が存在する場合、当該処理単位における前記要素領域ごとの要素番号とオフセットを示すロードパケットを前記メモリシステムに出力し、
前記メモリシステムから入力されるリプライパケットの前記要素番号に対応して含まれるデータ要素をベクトルレジスタに書き込み、
前記メモリシステムは、
前記処理単位から前記ロードパケットで指示されるオフセットごとにデータ要素を読み出し、
当該データ要素と前記オフセットに対応する要素番号を含む前記リプライパケットを生成する
コンピュータシステム。
【請求項7】
前記ロードパケットに前記ベクトルレジスタのベクトルレジスタ番号を含める前記演算回路を複数個備える請求項6に記載のコンピュータシステム。
【請求項8】
演算回路におけるデータ処理方法であって、
前記演算回路は、メモリアドレスを格納するアドレスレジスタを備え、
前記演算回路が、
取得されるベクトルギャザー命令で指示される複数のメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位がメモリシステムに存在するか否かを判定し、
前記処理単位が存在する場合、当該処理単位における前記要素領域ごとの要素番号とオフセットを示すロードパケットを前記メモリシステムに出力し、
前記メモリシステムから入力されるリプライパケットの前記要素番号に対応して含まれるデータ要素をベクトルレジスタに書き込み、
使用状態を未使用とするアドレスレジスタに格納されるメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定し、
前記ロードパケットを出力するとき、前記複数の要素領域に対応するメモリアドレスが記憶されているアドレスレジスタの使用状態を使用済に変更する
データ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本願は、集積回路、コンピュータシステムおよびデータ処理方法、例えば、ベクトルギャザー命令に係るロードパケットのメモリシステムへの発行に関する。
【背景技術】
【0002】
ベクトルギャザー命令とは、特許文献1に例示されているように、メモリシステム上のアドレスを含むアドレスポインタをベクトルレジスタ上にセットしておき、このアドレスの指すデータをベクトルレジスタに読み込むことを指示する命令である。ベクトルギャザー命令は、ベクトルロード命令または単にギャザー命令と呼ばれることがある。通例、ベクトルギャザー命令は、メモリアドレスから各1ワードのデータの読み出しを示すロードパケットに分解され、分解されたロードパケットはメモリシステムに対して発行される。この段階では、複数のメモリアドレス間の関連性は考慮されない。メモリシステムからは、ロードパケットに対するリプライパケットが1ワードのデータごとに返却される。
【0003】
近年では、メモリシステムにおいて、1ワードに限らず、一度に複数ワードのデータの読み書きを実行できるようにして高集積化ならびに高速化が図られている。メモリシステムの処理単位内に読み込み対象とする複数ワード分のデータを含めることで、1回の処理で複数ワードのデータを読み出すことができる。
【先行技術文献】
【特許文献】
【0004】
【文献】特許第2716254号公報
【文献】特許第5926754号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
高集積化に関し、複数のコアとメモリシステムをチップ内ネットワークで接続してなるマルチコアシステムが普及している。マルチコアシステムでは、チップ内ネットワークにおけるデータ伝送の頻出が性能低下を招く要因となりうる。そのため、ロードパケット数およびリプライパケット数を減少させてネットワークの混雑を回避または緩和することが望ましい。その場合、一度に複数ワードのデータをロードできるロードパケットを生成し、複数ワードのデータに対するリプライパケットを返却して、ロードパケット数とリプライパケット数を減少させることが考えられる。
【0006】
例えば、特許文献2には、限定範囲ベクトルメモリアクセス命令を用いて、複数ワードのデータをロードする手法について記載されている。限定範囲ベクトルメモリアクセス命令は、メモリシステムの限定範囲を指定する命令と、限定範囲における複数のインデックスを示すベクトルギャザー命令が指示される。しかしながら、ベクトルレジスタにおけるメモリシステム上のメモリアドレスは、命令の実行時に計算させる。そのため、命令の実行前にメモリアドレスがメモリシステムの限定範囲に含まれているか否かを判定し、限定範囲を指定する命令と、限定範囲内の複数のインデックスを示すベクトルギャザー命令を生成することができない。
【課題を解決するための手段】
【0007】
本願は、上述の課題を解決すべくなされたものであり、メモリシステムを備えるコンピュータシステムの性能向上を実現することを主目的としている。
【0008】
上記目的を達成するために、本願の第1態様に係る演算回路は、取得されるベクトルギャザー命令で指示される複数のメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位がメモリシステムに存在するか否かを判定し、前記処理単位が存在する場合、当該処理単位における前記要素領域ごとの要素番号とオフセットを示すロードパケットを前記メモリシステムに出力し、前記メモリシステムから入力されるリプライパケットの前記要素番号に対応して含まれるデータ要素をベクトルレジスタに書き込み、前記メモリアドレスを格納するアドレスレジスタを備え、使用状態を未使用とするアドレスレジスタに格納されるメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定し、前記ロードパケットを出力するとき、前記複数の要素領域に対応するメモリアドレスが記憶されているアドレスレジスタの使用状態を使用済に変更する
【0009】
本願の第2態様に係る演算回路におけるデータ処理方法は、前記演算回路は、メモリアドレスを格納するアドレスレジスタを備え、前記演算回路が、取得されるベクトルギャザー命令で指示される複数の取得されるメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位がメモリシステムに存在するか否かを判定し、前記処理単位が存在する場合、当該処理単位における前記要素領域ごとの要素番号とオフセットを示すロードパケットを前記メモリシステムに出力し、前記メモリシステムから入力されるリプライパケットの前記要素番号に対応して含まれるデータ要素をベクトルレジスタに書き込み、使用状態を未使用とするアドレスレジスタに格納されるメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定し、前記ロードパケットを出力するとき、前記複数の要素領域に対応するメモリアドレスが記憶されているアドレスレジスタの使用状態を使用済に変更する
【発明の効果】
【0010】
本願の一態様によれば、コンピュータシステムの性能向上を実現することができる。
【図面の簡単な説明】
【0011】
図1】本実施形態に係るコンピュータシステムの構成例を示す概略ブロック図である。
図2】本実施形態に係るベクトルギャザー命令の動作例を示す説明図である。
図3】本実施形態に係る処理単位の構成例を示す構成図である。
図4】本実施形態に係るメモリアドレスの構成例を示す構成図である。
図5】本実施形態に係るコアの構成例を示す概略ブロック図である。
図6】本実施形態に係るベクトルユニットの構成例を示す概略ブロック図である。
図7】本実施形態に係るロードパケット生成回路の構成例を示す概略ブロック図である。
図8】本実施形態に係る複数要素検出回路の構成例を示す構成図である。
図9】本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第一例を示す図である。
図10】本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第二例を示す図である。
図11】本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第三例を示す図である。
図12】本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第四例を示す図である。
図13】本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第五例を示す図である。
図14】本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第六例を示す図である。
図15】本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第七例を示す図である。
図16】本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第八例を示す図である。
図17】本実施形態に係るロードパケットの一例を示す構成図である。
図18】本実施形態に係るリプライパケットの一例を示す構成図である。
図19】本実施形態に係るベクトルギャザー動作の動作例を示す説明図である。
図20】本実施形態に係るベクトルユニットからロードパケット生成回路へのメモリアドレスの送信例を示す説明図である。
図21】本実施形態の最小構成例に係る演算回路を例示する概略ブロック図である。
【発明を実施するための形態】
【0012】
以下、本願の実施形態について、図面を参照して説明する。図1は、本実施形態に係るコンピュータシステムの構成例を示す概略ブロック図である。本実施形態に係るコンピュータシステムは、複数のコア101とメモリシステム103とを備える。個々のコア101は、それぞれチップ内ネットワーク102を経由して各種のデータを伝送可能にメモリシステム103と有線で接続される。本実施形態では、コア101の数は1個でもよいし、2個以上のいずれの個数であってもよい。個々のコア101は、プロセッサコアに相当する。コア101ごとに独立な演算処理がなされうる。個々のコア101は、命令列の解釈、実行などを実行するための論理回路を備える。
【0013】
次に、本実施形態に係るコア501の構成例について説明する。図5は、本実施形態に係るコア501の構成例を示す概略ブロック図である。コア501の構成は、図1に例示される個々のコア101の構成と同様である。コア501は、スカラーユニット502、ベクトルユニット503およびロードパケット生成回路505を含んで構成される。
スカラーユニット502は、自部に提供される各種の命令をデコードし、各種のスカラ演算を実行する演算回路である。
ベクトルユニット503は、各種のベクトル演算を行う演算回路である。
ロードパケット生成回路505は、データの読み出しの指示を通知するためのロードパケットを生成する。ロードパケット生成回路505は、生成したロードパケットをメモリシステム504に出力する。
【0014】
次に、本実施形態に係るベクトルユニット601について説明する。図6は、本実施形態に係るベクトルユニット601の構成例を示す概略ブロック図である。ベクトルユニット601の構成は、図5に例示されるベクトルユニット503の構成と同様である。
ベクトルユニット601は、ベクトルレジスタファイル602と演算器603を含んで構成される。ベクトルレジスタファイル602は、1個または複数個のベクトルレジスタを備える。個々のベクトルレジスタは、複数の要素レジスタを備える。ベクトルレジスタファイル602におけるベクトルレジスタの個数は1個または2個以上であれば、何個であってもよい。個々のベクトルレジスタにおける要素レジスタの個数は、2個以上であれば何個であってもよい。以下の説明では、ベクトルレジスタファイル602におけるベクトルレジスタの個数を64個とし、個々のベクトルレジスタにおける要素レジスタの個数を64個とする場合を例示する。ロードパケット生成回路701は、個々のベクトルレジスタから8個の要素レジスタにそれぞれ格納されたメモリアドレスを同時に読み出し可能と仮定する。
【0015】
次に、本実施形態に係るロードパケット生成回路701について説明する。図7は、本実施形態に係るロードパケット生成回路701の構成例を示す概略ブロック図である。ロードパケット生成回路701の構成は、図5に例示されるロードパケット生成回路505の構成と同様である。
ロードパケット生成回路701は、複数要素検出回路702とロードパケット発行回路703を含んで構成される。複数要素検出回路702は、ベクトルレジスタから読み出される8個のメモリアドレスを特定し、メモリシステムにおいて特定したメモリアドレスで指示される要素領域を複数個含む処理単位の有無を検出する。
【0016】
ロードパケット発行回路703は、複数要素検出回路702による検出結果として、複数個のデータ要素の読み出し、または、1個のデータ要素の読み出しを指示するためのロードパケットを生成する。ロードパケット生成回路701は、生成したロードパケットをメモリシステム504に発行する。なお、以下の説明では、ロードパケット生成回路701は、同時に2個または1個のデータ要素の読み出しを指示する場合を主に例示するが、これには限られない。ロードパケット生成回路701は、同一の処理単位内における3個以上N個(後述)以下のデータ要素の存在を判定したことに応じて、3個以上N個以下のデータ要素の読み出しを指示可能としてもよい。
【0017】
次に、本実施形態に係る複数要素検出回路702について説明する。図8は、本実施形態に係る複数要素検出回路702の構成例を示す構成図である。複数要素検出回路702は、N個のアドレスレジスタA801~H808と、N(N-1)/2個の比較器809~816を備える。Nは、読出アドレス数に相当する自然数である。読出アドレス数は、複数要素検出回路702がベクトルレジスタから同時に読出が指示されるアドレスの数である。図8の例では、読出アドレス数Nは8個である。読出アドレス数は、8個に限られず、2個以上7個以下でもよいし、9個以上であってもよい。
【0018】
複数要素検出回路702は、ベクトルレジスタから読み出した8個のメモリアドレスを、それぞれアドレスレジスタA801~H808に書き込む。複数要素検出回路702は、8個のアドレスレジスタA801~H808のそれぞれに格納されたメモリアドレスに基づいて、それぞれのメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定する。図8の例では、アドレスレジスタA801~H808のうち、いずれか2個のそれぞれに格納されたメモリアドレスに対応する要素領域を含む処理単位の存否が判定される。ここで、21個((8-1)×(8-2)/2)の比較器は、それぞれ2個のメモリアドレスからなるメモリアドレスの組ごとに、それぞれの上位アドレスを比較する。複数要素検出回路702は、それぞれの上位アドレスが同一か否かにより、2個のメモリアドレスのそれぞれに対応する要素領域が同一の処理単位に属するか否かを判定することができる。同一と判定された上位アドレスにより、その処理単位が指示される。
【0019】
なお、処理単位とは、メモリシステム504において一度にデータを読み書き可能とする単位を指す。本実施形態では、1個の処理単位において複数のデータ要素のアクセスを可能とする。図3の例では、メモリシステム504の処理単位301は、64バイトの記憶領域を占める。処理単位301は、8ワードに区分され、各ワードは8バイトの記憶領域を占める。各ワードの領域は、それぞれオフセットで指示される。データ要素A 302は、オフセット0x8で指示される。データ要素B 303は、オフセット0x20で指示される。
【0020】
上位アドレスとは、メモリアドレスを構成する複数ビットの一部をなす上位ビットで表される部分を指す。メモリアドレスの他の一部をなす下位ビットで表される部分がオフセットに相当する。図4の例では、メモリアドレス401は、64ビットで表される。上位アドレス403は、58ビットで表され、メモリシステムの処理単位を示す。オフセット402は、6ビットで表され、1個の処理単位内の個々の要素領域を指す。従って、複数のメモリアドレス間で上位アドレス403が一致することは、それぞれのメモリアドレスに係る要素領域が、同一の処理単位に存在することを意味する。
【0021】
次に、本実施形態に係るロードパケットの一例について説明する。ロードパケットは、ロードパケット発行回路703によりメモリシステム504に対して発行される。図17は、本実施形態に係るロードパケットの一例を示す構成図である。オフセットもしくは要素番号の数(以下、「要素数」と呼ぶことがある)は、それぞれメモリアドレスの数に相当する。図17の例では、いずれも2個である。
【0022】
ロードパケット1701は、上位アドレス1702、オフセット0 1703、オフセット1 1704、要素番号0 1705、 要素番号1 1705、種別1707およびベクトルレジスタ番号1708を含んで構成される。種別1707は、有効な要素数を示す。この例では、要素数として、2要素または1要素が指示される。ベクトルレジスタ番号1708は、メモリアドレスの取得元であるベクトルレジスタを示す。即ち、ロードパケット1701は、上位アドレス1702で指示される処理単位のうち、2個のオフセット0、1でそれぞれ指示される要素領域からのデータ要素の読み取りをメモリシステム504に対して指示する指令を含む。要素番号0、1は、それぞれ2個のデータ要素もしくは要素領域に対応付けられ、ロードパケット1701に対する応答とするリプライパケットに含まれる。
【0023】
次に、本実施形態に係るリプライパケットの一例について説明する。リプライパケットは、メモリシステム504によりベクトルユニット503に返送される。図18は、本実施形態に係るリプライパケットの一例を示す構成図である。図18の例では、要素数は2個である。
【0024】
リプライパケット1801は、要素番号0 1802、要素番号1 1803、データ0 1804、データ1 1805およびベクトルレジスタ番号1806を格納して構成される。データ0 1804、データ1 1805は、それぞれ要素番号0 1802、要素番号1 1803に対応付けられ、上位アドレス1702で指示される処理単位のうち、オフセット0 1703、オフセット1 1704で指示される要素領域に格納された要素データである。種別1807は、有効な要素数を示す。例えば、種別1807として2と設定される場合、要素番号0 1802、要素番号1 1803、データ0 1804、データ1 1805がいずれも有効であることが示される。例えば、種別1807として1と設定される場合、先頭の1組の要素番号0 1802、データ0 1804が有効であり、後続の要素番号1 1803、データ1 1805が無効であることが示される。
【0025】
次に本実施形態に係るベクトルギャザー命令に対する動作例について説明する。図2は、本実施形態に係るベクトルギャザー命令の動作例を示す説明図である。ベクトルギャザー命令は、メモリシステムに記憶されているデータから複数のデータ要素を読み出し、読み出したデータ要素をベクトルレジスタに書き込むことを指示する命令である。図2の例では、ベクトルレジスタV0 201において、n個のメモリアドレスA0 202、A1 203、A2 204、…、An-1 206が格納されている。ベクトルギャザー命令により、メモリシステム207のn個のメモリアドレスで指示される要素領域のそれぞれに格納される要素データD0 208、D1 209、D2 210、…、Dn-1 212の読み出しと、読み出した要素データのベクトルレジスタV1 213への書き込みが指示される。
【0026】
図19は、本実施形態に係るベクトルギャザー動作の動作例を示す説明図である。次の説明では、ベクトルギャザー動作は、図5に例示されるコア501により実行される場合を例とする。スカラーユニット1901は、自部に提供される命令をデコードする。デコードした命令がベクトルギャザー命令であるとき、スカラーユニット1901は、当該ベクトルギャザー命令に基づいてベクトルギャザー指示1904、1905を生成する。スカラーユニット1901は、生成したベクトルギャザー指示1904、1905を、それぞれベクトルユニット1902とロードパケット生成回路1903に対して発行する。ベクトルギャザー指示1904は、データの読み取り先を示すメモリアドレスが格納されているベクトルレジスタのベクトルレジスタ番号と、ギャザー結果を格納するベクトルレジスタ、即ち、データの書き込み先とするベクトルレジスタのベクトルレジスタ番号を示す。
【0027】
ベクトルユニット1902には、スカラーユニット1901からベクトルギャザー指示1904が入力される。ベクトルユニット1902は、ベクトルギャザー指示1904のベクトルレジスタ番号で指示されるベクトルレジスタに格納されているメモリアドレス1906を読み出す。ベクトルユニット1902は、読み出したメモリアドレス1906をロードパケット生成回路1903に送付する。図19の例では、一度に8個のメモリアドレス1906が読み出され、読み出されたメモリアドレス1906がロードパケット生成回路1903に送付される。
【0028】
ロードパケット生成回路1903には、ベクトルユニット1902からメモリアドレス1906が送付される。ロードパケット生成回路1903は、メモリアドレス1906に基づいてロードパケット1908を生成する。ロードパケット生成回路1903は、ベクトルレジスタから読み出される8個のメモリアドレス1906を特定し、メモリシステム1907において特定したメモリアドレス1906により指示される要素領域を複数個含む処理単位の有無を検出する。ロードパケット発行回路703は、検出結果として、一度に複数個のデータ要素の読み出し、または、1個のデータ要素の読み出しを指示するためのロードパケット1908を生成する。ロードパケット1908のデータ構成は、図17に例示されるロードパケット1701のデータ構成と同様となりうる。ロードパケット生成回路1903は、生成したロードパケット1908をメモリシステム1907に送付する。
【0029】
メモリシステム1907には、ロードパケット生成回路1903からロードパケット1908が入力される。メモリシステム1907は、ロードパケット1908で通知されるオフセットで指示される要素領域からデータ要素を読み出す。メモリシステム1907は、読み出したデータ要素と、オフセットに対応付けられた要素番号とを含むリプライパケット1909を生成する。リプライパケット1909のデータ構成は、図18に例示されるリプライパケット1801のデータ構成と同様となりうる。メモリシステム1907は、生成したリプライパケット1909をロードパケット1908に対する応答としてベクトルユニット1902に返信する。
ベクトルユニット1902は、メモリシステム1907から受信したリプライパケット1909に格納されるデータ要素をベクトルレジスタに書き込む。
【0030】
次に、ベクトルレジスタへの書き込み処理の例に関して、より詳細に説明する。
図20は、本実施形態に係るベクトルユニット1902からロードパケット生成回路1903へのメモリアドレスの送信例を示す説明図である。ベクトルユニット1902は、ベクトルレジスタファイル2001のベクトルレジスタから、ベクトルギャザー指示で指示されるメモリアドレスが格納されている要素領域からアドレス要素を読み出す。アドレス要素は、メモリアドレスの要素をなすデータ素片である。ベクトルユニット1902は、読み出したアドレス要素をロードパケット生成回路1903に送信する。図20の例では、64個のアドレス要素0 2002~63 2003が、ベクトルレジスタから8要素ずつ順次読み出されロードパケット生成回路1903に送信される。
【0031】
ロードパケット生成回路1903は、8要素ごとにベクトルユニット1902から入力されるアドレス要素をメモリアドレスとしてアドレスレジスタA 2004~H 2005にそれぞれ書き込む。なお、ロードパケット生成回路1903は、アドレスレジスタの使用状態を示す使用状態情報を保持してもよい。ロードパケット生成回路1903は、例えば、メモリアドレスを書き込むごとに、書き込み先のアドレスレジスタに係る使用状態情報に示される使用状態を未使用にリセットする。ロードパケット生成回路1903は、メモリアドレスを格納しているアドレスレジスタのうち、ロードパケットの生成に用いられるメモリアドレスを格納しているアドレスレジスタの使用状態情報に示される使用状態を使用済に設定してもよい。
【0032】
ロードパケット生成回路1903の複数要素検出回路(図7)は、アドレスレジスタA 2004~H 2005に格納された8個のメモリアドレスのうち、2個のメモリアドレスの組ごとに、それぞれのメモリアドレスにより指示される要素領域が同一処理単位に属すか否かを検出する。図9~16は、ロードパケット生成回路1903により、個々の比較器による比較結果に基づき、1個のロードパケットによる読み出し対象とするデータ要素の判定に用いる判定ルールを例示する。この判定において、2個のデータ要素を読み出すか、1個のデータ要素を読み出すかが判定される。ロードパケット生成回路1903は、図9~16のそれぞれに例示される判定ルールに基づく判定を実行し、それぞれの判定結果に基づいてロードパケットを生成し、生成したロードパケットをメモリシステム1907に送信する。
【0033】
図9に例示される判定ルールは、アドレスレジスタAに格納されたメモリアドレスとアドレスレジスタB~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、比較結果に応じて次の処理(A1)~(A8)を指示する。
【0034】
(A1)アドレスレジスタAの上位アドレスとアドレスレジスタBの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタBのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタBの使用状態情報に示される使用状態を使用済みに変更する。
(A2)アドレスレジスタAの上位アドレスとアドレスレジスタCの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタCのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタCの使用状態情報に示される使用状態を使用済に変更する。
【0035】
(A3)アドレスレジスタAの上位アドレスとアドレスレジスタDの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタDのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタDの使用状態情報に示される使用状態を使用済みに変更する。
(A4)アドレスレジスタAの上位アドレスとアドレスレジスタEの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタEのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタEの使用状態情報に示される使用状態を使用済に変更する。
【0036】
(A5)アドレスレジスタAの上位アドレスとアドレスレジスタFの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタFのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタFの使用状態情報に示される使用状態を使用済に変更する。
(A6)アドレスレジスタAの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
【0037】
(A7)アドレスレジスタAの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(A8)アドレスレジスタAの上位アドレスとアドレスレジスタB~Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタAに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
【0038】
図10に例示される判定ルールは、アドレスレジスタBに格納されたメモリアドレスとアドレスレジスタC~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタBの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(B1)~(B7)を指示する。
【0039】
(B1)アドレスレジスタBの上位アドレスとアドレスレジスタCの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタCのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタCの使用状態情報に示される使用状態を使用済に変更する。
(B2)アドレスレジスタBの上位アドレスとアドレスレジスタDの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタDのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタDの使用状態情報に示される使用状態を使用済みに変更する。
【0040】
(B3)アドレスレジスタBの上位アドレスとアドレスレジスタEの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタEのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタEの使用状態情報に示される使用状態を使用済に変更する。
(B4)アドレスレジスタBの上位アドレスとアドレスレジスタFの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタFのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタFの使用状態情報に示される使用状態を使用済に変更する。
【0041】
(B5)アドレスレジスタBの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
(B6)アドレスレジスタBの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(B7)アドレスレジスタBの上位アドレスとアドレスレジスタC~Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタBに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
【0042】
図11に例示される判定ルールは、アドレスレジスタCに格納されたメモリアドレスとアドレスレジスタD~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタCの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(C1)~(C6)を指示する。
【0043】
(C1)アドレスレジスタCの上位アドレスとアドレスレジスタDの上位アドレスが一致するとき、アドレスレジスタCとアドレスレジスタDのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタDの使用状態情報に示される使用状態を使用済みに変更する。
(C2)アドレスレジスタCの上位アドレスとアドレスレジスタEの上位アドレスが一致するとき、アドレスレジスタCとアドレスレジスタEのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタEの使用状態情報に示される使用状態を使用済に変更する。
【0044】
(C3)アドレスレジスタCの上位アドレスとアドレスレジスタFの上位アドレスが一致するとき、アドレスレジスタCとアドレスレジスタFのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタFの使用状態情報に示される使用状態を使用済に変更する。
(C4)アドレスレジスタCの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタCとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
【0045】
(C5)アドレスレジスタCの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタCとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(C6)アドレスレジスタCの上位アドレスとアドレスレジスタD~Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタCに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
【0046】
図12に例示される判定ルールは、アドレスレジスタDに格納されたメモリアドレスとアドレスレジスタE~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタDの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(D1)~(D5)を指示する。
【0047】
(D1)アドレスレジスタDの上位アドレスとアドレスレジスタEの上位アドレスが一致するとき、アドレスレジスタDとアドレスレジスタEのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタEの使用状態情報に示される使用状態を使用済に変更する。
(D2)アドレスレジスタDの上位アドレスとアドレスレジスタFの上位アドレスが一致するとき、アドレスレジスタDとアドレスレジスタFのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタFの使用状態情報に示される使用状態を使用済に変更する。
【0048】
(D3)アドレスレジスタDの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタDとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
(D4)アドレスレジスタDの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタDとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(D5)アドレスレジスタDの上位アドレスとアドレスレジスタE~Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタDに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
【0049】
図13に例示される判定ルールは、アドレスレジスタEに格納されたメモリアドレスとアドレスレジスタF~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタEの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(E1)~(E4)を指示する。
【0050】
(E1)アドレスレジスタEの上位アドレスとアドレスレジスタFの上位アドレスが一致するとき、アドレスレジスタEとアドレスレジスタFのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタFの使用状態情報に示される使用状態を使用済に変更する。
(E2)アドレスレジスタEの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタEとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
【0051】
(E3)アドレスレジスタEの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタEとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(E4)アドレスレジスタEの上位アドレスとアドレスレジスタF~Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタEに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
【0052】
図14に例示される判定ルールは、アドレスレジスタFに格納されたメモリアドレスとアドレスレジスタG~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタFの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(F1)~(F3)を指示する。
【0053】
(F1)アドレスレジスタFの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタFとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
(F2)アドレスレジスタFの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタFとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(F3)アドレスレジスタFの上位アドレスとアドレスレジスタG、Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタFに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
【0054】
図15に例示される判定ルールは、アドレスレジスタGに格納されたメモリアドレスとアドレスレジスタHに格納されたメモリアドレスとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタGの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(G1)、(G2)を指示する。
【0055】
(G1)アドレスレジスタGの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタFとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(G2)アドレスレジスタGの上位アドレスとアドレスレジスタHの上位アドレスと一致しないとき、アドレスレジスタGに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
【0056】
図16に例示される判定ルールは、アドレスレジスタGの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、アドレスレジスタGに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
【0057】
ロードパケット生成回路1903のロードパケット発行回路(図7)は、上記の判定ルールによる判定結果に従って、ロードパケットを生成し、生成したロードパケットをメモリシステム1907に送付する。
2個のデータ要素の読み出しに係るロードパケットを生成する際、ロードパケット発行回路は、特定された2個のメモリアドレスのそれぞれのオフセットと要素番号としてオフセット0、1と要素番号0、1をそれぞれ対応付けて含める。また、ロードパケット発行回路は、それらのメモリアドレスの上位アドレスと、種別として読み出しに係る要素数2をロードパケットに含める。
【0058】
1個のデータ要素の読み出しに係るロードパケットを生成する際、ロードパケット発行回路は、特定された1個のメモリアドレスのオフセット0、要素番号0を対応付けて含め、さらにメモリアドレスの上位アドレスと種別として読み出しに係る要素数1をロードパケットに含める。なお、ロードパケット発行回路は、ベクトルギャザー指示から書き込み先となるベクトルレジスタ番号を抽出し、抽出したベクトルレジスタ番号をロードパケットに含める。
【0059】
メモリシステム1907は、ロードパケット生成回路1903から入力されるロードパケットに格納された上位アドレスで指示される処理単位を特定する。メモリシステム1907は、ロードパケットに格納された種別に基づいて特定した処理単位から2個のデータ要素を読み出すか、1個のデータ要素を読み出すかを判定する。メモリシステム1907は、ロードパケットに格納されたオフセットを用いて、処理単位のうちデータ要素を読み出す要素領域を特定する。メモリシステム1907は、ロードパケットにおいてオフセットに対応付けられた要素番号と、そのオフセットに基づいて特定された要素領域から読み出されたデータ要素を対応付けて含めリプライパケットを生成する。ここで、メモリシステム1907は、ロードパケットに格納された種別とベクトルレジスタ番号をリプライパケットに含める。メモリシステム1907は、生成したリプライパケットをロードパケットの入力元となるコア(図5)に送付する。
【0060】
コアのベクトルユニット(図5)は、メモリシステム1907から受信したリプライパケットに記述された種別に基づいて、2個のデータ要素を書き込むか、1個のデータ要素を書き込むかを判定する。ベクトルユニットは、受信したリプライパケットからベクトルレジスタ番号と要素番号ごとに対応するデータ要素を読み出す。ベクトルユニットは、ベクトルレジスタ番号で指示されるベクトルレジスタの要素番号ごとに指示される要素領域に対応するデータ要素を書き込む。
【0061】
上記の説明では、図17に示されるように、データ要素の要素数を示す種別をロードパケットに含める場合を例にしたが、これには限られない。ロードパケット生成回路1903は、種別に代え、要素番号0以外の各要素番号(例えば、要素番号1)に対応付けて、有効か否かを示す有効性ビットを含めてロードパケットを生成してもよい。ロードパケットの送信先となるメモリシステム1907は、ロードパケットに記述された有効性ビットに基づいて要素番号ごとの有効性を判定し、対応するオフセットで指示される要素領域から要素データの読み出しの要否を判定することができる。種別により有効な要素数を指示し、ロードパケットにおいて格納順に指示された要素数の要素番号を特定する場合よりも、複数の要素番号を用いて多様な有効性のパターンを指示することができる。
【0062】
また、図18に示されるように、リプライパケットに種別を含める場合を例にしたが、これには限られない。メモリシステムは、種別に代え、要素番号0以外の各要素番号に対応付けて、有効性ビットを含めてリプライパケットを生成してもよい。リプライパケットの送信先となるコアのベクトルユニットは、受信したリプライパケットに記述された有効性ビットに基づいて要素番号ごとの有効性を判定し、対応する要素データの書き込みの要否を判定することができる。
【0063】
次に、本実施形態に係る最小構成例について説明する。図21は、本実施形態の最小構成例に係る演算回路2102を示す概略ブロック図である。演算回路2102は、取得されるメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位がメモリシステム2104に存在するか否かを判定する。演算回路2102は、かかる処理単位が存在する場合、当該処理単位における要素領域ごとの要素番号とオフセットを示すロードパケットをメモリシステム2104に出力する。演算回路2102は、メモリシステム2104から入力されるリプライパケットの要素番号に対応して含まれるデータ要素をベクトルレジスタ2106に書き込む。
【0064】
この構成によれば、演算回路2102は、命令により指示されるメモリアドレスに対応する要素領域を複数個含む処理単位がメモリシステム2104に存在する場合、その処理単位における要素領域のオフセットを示すロードパケットをメモリシステム2104に発行する。また、演算回路2102は、ロードパケットに対する応答として取得されるリプライパケットにより個々の要素領域から読み出されるデータ要素を取得し、ベクトルレジスタ2106に書き込むことができる。1個のロードパケットの発行により要素領域内に格納される複数のデータ要素を読み出すことができる。そのため、各1個のデータ要素を読み出す場合よりもロードパケットの個数ならびにリプライパケットの個数を減らすことができる。そのため、演算回路2102とメモリシステム2104とを接続するチップ内ネットワークの負荷が軽減され、演算回路2102とメモリシステム2104を含むコンピュータシステムの性能を向上することができる。
【0065】
なお、本実施形態は、演算回路2102とメモリシステム2104を備えるコンピュータシステムとして実現されてもよい。メモリシステム2104は、指示されるメモリアドレスに対応する要素領域を複数個含む処理単位からロードパケットで指示されるオフセットごとにデータ要素を読み出し、当該データ要素と当該オフセットに対応する要素番号を含むリプライパケットを生成する。
【0066】
メモリアドレスは、それぞれ上位アドレスとオフセットを有し、演算回路2102は、複数のメモリアドレス間で上位アドレスが同一であるとき、複数のメモリアドレスのそれぞれに対応する要素領域を複数個含む処理単位が存在すると判定し、ロードパケットに同一と判定した上位アドレスを含めてもよい。
この構成によれば、上位アドレスを用いて、指示されるメモリアドレスに対応する複数の要素領域を有する処理単位の存在の有無が判定され、その処理単位を示す上位アドレスがメモリシステム2104に通知される。そのため、メモリシステム2104は、データ要素の読み出しに係る処理単位を容易に特定することができる。
【0067】
演算回路2102は、ロードパケットに上位アドレスが同一なメモリアドレスの要素数を含めてもよい。
この構成によれば、読み出し対象となる有効なデータ要素の個数がメモリシステム2104に通知される。
【0068】
演算回路2102は、ロードパケットに要素番号の有効性を示す有効性フラグを含めてもよい。
この構成によれば、読み出し対象となる有効なデータ要素がメモリシステム2104に通知される。
【0069】
演算回路2102は、メモリアドレスを格納するアドレスレジスタを備え、使用状態を未使用とするアドレスレジスタに格納されるメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定し、ロードパケットを出力するとき、前記複数の要素領域に対応するメモリアドレスが記憶されているアドレスレジスタの使用状態を使用済に変更してもよい。
この構成によれば、ロードパケットの出力によりデータ要素の読み出し対象として指示したメモリアドレスに対して、再度のデータ要素を読み出すことが回避される。
【0070】
演算回路2102は、ロードパケットにベクトルレジスタのベクトルレジスタ番号を含めてもよい。また、本実施形態は、かかる演算回路とメモリシステム2104を備えるコンピュータシステムとして実現されてもよい。
この構成により、メモリシステム2104にデータ要素の書き込み先とするベクトルレジスタ番号を通知し、読み出し対象とするデータ要素とともに当該ベクトルレジスタ番号を含むリプライパケットを生成させることができる。データ要素の書き込みにおいて、ロードパケットの送信に対するリプライパケットの受信状態を管理せずに、リプライパケットを参照してデータ要素の書き込み先とするベクトルレジスタを特定することができる。
【0071】
上記のようなベクトルギャザー命令は、行列演算に係るアプリケーションプログラム(以下、「アプリケーション」と呼ぶ)の実行に際し、しばしば実行されることがある。演算対象となる行列は、密行列よりも疎行列の方が一般的である。疎行列とは、非ゼロ要素が少ない行列である。そのため、疎行列ベクトル積の演算性能がアプリケーション全体の演算性能に対して支配的となりがちである。コンピュータシステムは、疎行列ベクトル積の演算の際、疎行列の非ゼロ要素だけをメモリシステムの連続領域に格納することがある。その場合、メモリシステムに格納される非ゼロ要素へのアクセスは連続アクセスとなる。他方、メモリシステムに格納されるベクトルへのアクセスは非連続アクセスとなる。疎行列の非ゼロ要素に対応するベクトルの要素がアクセスされるためである。その場合には、ベクトルへのアクセスではベクトルギャザー命令が使用されうる。本実施形態によりベクトルギャザー命令に対する性能を向上することで疎行列ベクトル性能が高いコンピュータシステムを実現することができる。
【0072】
以上、本願のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【0073】
101…コア、102…チップ内ネットワーク、103…メモリシステム、201、213…ベクトルレジスタ、207…メモリシステム、301…処理単位、401…メモリアドレス、402…オフセット、403…上位アドレス、501…コア、502…スカラーユニット、503…ベクトルユニット、504…メモリシステム、505…ロードパケット生成回路、601…ベクトルユニット、602…ベクトルレジスタファイル、603…演算器、701…ロードパケット生成回路、702…複数要素検出回路、703…ロードパケット発行回路、801~808…アドレスレジスタ、810~816…比較器、1901…スカラーユニット、1902…ベクトルユニット、1903…ロードパケット生成回路、1907…メモリシステム、2001…ベクトルレジスタファイル、2004、2005…アドレスレジスタ、2102…演算回路、2104…メモリシステム、2106…ベクトルレジスタ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21