JP7225904B2 - ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム - Google Patents

ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム Download PDF

Info

Publication number
JP7225904B2
JP7225904B2 JP2019033557A JP2019033557A JP7225904B2 JP 7225904 B2 JP7225904 B2 JP 7225904B2 JP 2019033557 A JP2019033557 A JP 2019033557A JP 2019033557 A JP2019033557 A JP 2019033557A JP 7225904 B2 JP7225904 B2 JP 7225904B2
Authority
JP
Japan
Prior art keywords
instruction
vector
memory
processing device
initialization
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.)
Active
Application number
JP2019033557A
Other languages
English (en)
Other versions
JP2020140284A (ja
Inventor
壮也 藤本
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 JP2019033557A priority Critical patent/JP7225904B2/ja
Publication of JP2020140284A publication Critical patent/JP2020140284A/ja
Application granted granted Critical
Publication of JP7225904B2 publication Critical patent/JP7225904B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Complex Calculations (AREA)

Description

本願発明は、ベクトル演算を実行可能な情報処理装置による、配列変数を初期化する技術に関する。
近年、様々な技術領域においてソフトウェアの高機能化が進むのに伴い、ソフトウェアの規模も急速に増大している。このようなソフトウェアでは、使用する配列変数(配列データ)も大規模化していることから、大規模な配列変数に対する初期化やデータの設定を効率的かつ高速に行う技術が期待されている。
このような技術に関連する技術として、特許文献1には、複数のプロセッサがそれぞれ自装置に割り付けられたデータを処理するに際して、入力装置から入力したデータまたは記憶装置に格納されている配列データの全部または一部を分割して各記憶空間または各プロセッサに割り付ける配列データの分配/収集処理装置が開示されている。この装置は、各記憶空間または各プロセッサへの割り付け対象となる1以上の任意の次元方向で分割した分割ブロックに対応して、各次元の範囲に関する情報を持つ転送テーブルを作成する。この装置は、作成した転送テーブルに基づいて、分割ブロックごとにデータを各記憶空間または各プロセッサに転送する。そしてこの装置は、任意の転送パターンによりデータを自動分配する。
また、特許文献2には、メモリ資源を多く費やすことなく、かつ、高速に配列の初期化処理を行うことができる定数代入方法が開示されている。この方法では、配列の配列空間を擬似的に0クリアするための「0」値が格納された物理メモリブロックが物理メモリに予め用意されている。この方法では、物理メモリブロックを示す物理メモリページのテーブルが予め用意されている。この方法では、ユーザプログラムが起動され、配列が現れても、その配列空間のために特に物理メモリブロック(物理メモリページ)を確保しない。そしてこの方法では、初期化状態において、各配列空間をいずれも物理メモリブロック(物理メモリページ)とリンクするように設定する。
特開平04-321158号公報 特開2004-030353号公報
スーパーコンピュータ等のベクトル演算を実行可能なベクトル演算処理装置は、一般的に、配列変数に対する初期化処理を、メモリへの書き込みを行うベクトル演算命令であるベクトルストア命令を発行することによって行っている。即ち、ベクトル演算処理装置では、メモリに記憶されている配列変数は、ベクトルストア命令によって、所定の初期値が書き込まれる。配列変数の初期化は、通常、ソフトウェアの実行が開始されたときなどに集中して行なわれることが多い。そしてベクトル演算命令を実行する場合、通常、所定のオーバーヘッド(処理を実行することに伴うコスト)が発生することなどから、多数の大規模な配列変数を使用するソフトウェアを実行する場合では、配列変数を初期化するベクトルストア命令が演算コア内に滞留する場合がある。
このような場合、後続するベクトル演算命令も実行されずに演算コア内に滞留することになるので、性能が低下する問題が発生する。即ち、ベクトル演算処理装置において、配列変数を初期化する処理を高速に行うことが課題である。上述した特許文献1及び2は、この課題について言及していない。本願発明の主たる目的は、この課題を解決するベクトル演算処理装置等を提供することである。
本願発明の一態様に係るベクトル演算処理装置は、メモリに記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御するベクトル制御手段と、実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定する判定手段と、前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する実行手段と、を備える。
上記目的を達成する他の見地において、本願発明の一態様に係るベクトル演算処理装置による配列変数初期化方法は、ベクトル演算処理装置によって、メモリに記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御し、実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定し、前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する。
また、上記目的を達成する更なる見地において、本願発明の一態様に係るベクトル演算処理装置による配列変数初期化プログラムは、メモリに記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御するベクトル制御処理と、実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定する判定処理と、前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する実行処理と、をベクトル演算処理装置に実行させる。
更に、本願発明は、係るベクトル演算処理装置による配列変数初期化プログラム(コンピュータプログラム)が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。
本願発明は、ベクトル演算処理装置において、配列変数を初期化する処理を高速に実行することを可能とする。
本願発明の第1の実施形態に係るベクトル演算処理装置10の構成を示すブロック図である。 本願発明の第1の実施形態に係るベクトル演算処理装置10が、メモリ16に格納されている配列変数に対する初期化を行う際に、メモリモジュール161にアクセスするアドレスの範囲を例示する図である。 本願発明の第1の実施形態に係るベクトル演算処理装置10が配列変数を初期化する動作を示すフローチャートである。 本願発明の第1の実施形態に係るベクトル演算処理装置10による配列変数の初期化処理のタイムチャート(1/2)である。 本願発明の第1の実施形態に係るベクトル演算処理装置10による配列変数の初期化処理のタイムチャート(2/2)である。 本願発明の第2の実施形態に係るベクトル演算処理装置20の構成を示すブロック図である。 本願発明の各実施形態に係るベクトル演算処理装置を実行可能な情報処理装置900の構成を示すブロック図である。
以下、本願発明の実施の形態について図面を参照して詳細に説明する。
<第1の実施形態>
図1は、本願発明の第1の実施の形態に係るベクトル演算処理装置10の構成を示すブロック図である。ベクトル演算処理装置10は、例えばスーパーコンピュータ等の、ベクトル演算を実行可能な情報処理装置である。ベクトル演算処理装置10は、大別して、1以上の演算コア11、メモリアクセス制御部15、及び、メモリ16を備えている。
演算コアは例えばCPU(Central Processing Unit)であり、例えば主記憶であるメモリ16に記憶されているプログラム(ソフトウェア)を読み出して実行し、その実行結果をメモリ16に格納する。メモリアクセス制御部15は、演算コア11からメモリ16に対するアクセス(データの読み出しあるいは書き込み)を制御する。
演算コア11は、ベクトル制御部12、命令処理部13、及び、アドレス制御部14を備えている。尚、本実施形態では、命令処理部13とアドレス制御部14とをまとめて、実行部と称する場合がある。
命令処理部13は、判定部131、及び、スカラレジスタ132を備える。命令処理部13は、実行するプログラムに含まれる命令をフェッチし、フェッチした命令をデコードし、デコードした命令を実行する。
本実施形態に係る命令処理部13によって実行される命令には、大別して、ベクトル演算命令とスカラ演算命令とがある。但し、ベクトル演算命令とは、例えば配列変数に含まれる複数の要素に対して、同様の演算をパイプライン処理により行う演算命令のことである。一方、スカラ演算命令は、上述したベクトル演算命令以外の演算命令であり、例えば配列変数でない(複数の要素を含まない)変数に対して個別の演算を行う演算命令のことである。命令処理部13は、実行する命令に含まれる命令種別を表す情報(命令コード)によって、当該命令がベクトル演算命令であるのかスカラ演算命令であるのかを判別可能である。
本実施形態では以降、スカラ演算命令あるいはベクトル演算命令による、メモリ16に対するデータの書き込み動作(ストア動作)について説明することとする。
命令処理部13は、実行する命令がスカラ演算命令(ストア命令)である場合、当該命令によってメモリ16に書き込むデータ、及び、書き込み先のアドレスを含む、当該命令に関する情報をスカラレジスタ132に格納する。命令処理部13は、スカラレジスタ132に格納した当該命令に関する情報に基づいてメモリ16に格納するメモリアクセスリクエストを生成することを指示する情報を、アドレス制御部14へ送信する。
命令処理部13は、実行する命令がベクトル演算命令(ベクトルストア命令)である場合、当該ベクトルストア命令をベクトル制御部12へ転送することによって、当該ベクトルストア命令によってメモリ16に書き込むベクトルデータの取得あるいは生成を、ベクトル制御部12に指示する。命令処理部13は、当該ベクトルデータをメモリ16に格納するメモリアクセスリクエストを生成することを指示する情報を、アドレス制御部14へ送信する。尚、ベクトル制御部12は、後述する処理によって、当該ベクトルデータをアドレス制御部14に送信する。
ベクトル制御部12は、ベクトル演算器121、及び、ベクトルレジスタ122を備える。ベクトル制御部12は、命令処理部13から転送されたベクトルストア命令に基づき、当該ベクトルストア命令によってメモリ16に書き込むベクトルデータを取得あるいは生成し、当該ベクトルデータをベクトルレジスタ122に格納する。ベクトル演算器121は、ベクトルレジスタ122に格納されたベクトルデータを用いてベクトル演算を実行する機能を備える。ベクトル制御部12は、ベクトルレジスタ122に格納したベクトルデータを、アドレス制御部14へ送信する。
アドレス制御部14は、命令処理部13から上述の通りに受信した情報に基づいて、メモリ16に対するデータの書き込みを実行するメモリアクセスリクエストを生成する。アドレス制御部14は、実行する命令がストア命令である場合は、メモリ16に対する書き込みデータを命令処理部13から受信し、実行する命令がベクトルストア命令である場合は、メモリ16に対する書き込みデータをベクトル制御部12から受信する。アドレス制御部14は、生成したメモリアクセスリクエストをメモリアクセス制御部15へ送信する。
メモリアクセス制御部15は、アドレス制御部14から受信したメモリアクセスリクエストを、4つのメモリモジュール161乃至164を備えるメモリ16における4つのアクセスポートに送信する。尚、メモリ16が備えるメモリモジュール及びアクセスポートの数は4つに限定されない。メモリ16は、4つ以外のメモリモジュール及びアクセスポートを備えてもよい。
メモリアクセス制御部15は、ルーティング制御部150、及び、メモリコントローラ151乃至154を備えている。メモリコントローラ151乃至154は、メモリ16が備える4つのアクセスポートを介して、メモリモジュール161乃至164と通信可能に接続されている。ルーティング制御部150、及び、メモリコントローラ151乃至154の詳細については後述する。
次に、本実施形態に係るベクトル演算処理装置10が、メモリ16に記憶されている配列変数を初期化する動作について説明する。
命令処理部13における判定部131は、命令処理部13によりフェッチされた命令が、メモリ16に記憶されている配列変数に対する初期化命令であるか否かを判定する。但し、本実施形態に係るベクトル演算処理装置10が実行するプログラムでは、配列変数に対する初期化命令は、当該配列変数に含まれる全ての要素に対して所定の初期値(例えば「0」)を設定するベクトルストア命令により表されることとする。
判定部131は、例えば、フェッチされた命令が、配列変数に含まれる全ての要素に対して書き込む値が「0」であることを示す場合、当該命令が配列変数に対する初期化命令であると判定する。判定部131は、あるいは例えば、フェッチされた命令が示す命令種別が配列変数に対する初期化命令を示す場合に、当該命令が配列変数に対する初期化命令であると判定してもよい。ただしこの場合、配列変数に対する初期化命令を識別可能な命令種別を表す情報(命令コード)が、命令体系において定義されていることとする。
命令処理部13は、フェッチした命令が、判定部131によって、配列変数に対する初期化命令であると判定された場合、当該命令をベクトル演算命令ではなくスカラ演算命令として処理することを決定する。即ち、命令処理部13は、当該初期化命令を、ベクトル演算命令からスカラ演算命令に変換する。
命令処理部13は、使用する初期値「0」を含む当該初期化命令に関する情報を、スカラレジスタ132へ格納する。但し、当該初期化命令に関する情報は、例えば、メモリ16における初期化を行うベースアドレス(先頭アドレス)、及び、初期化する配列変数の要素数を含むこととする。命令処理部13は、スカラレジスタ132へ格納した初期値「0」を含む当該初期化命令に関する情報を、アドレス制御部14へ送信する。
アドレス制御部14は、命令処理部13から受信した初期化命令に関する情報に基づいて、メモリ16における上述した4つのアクセスポートにアクセスするためのメモリアクセスリクエストを生成する。この際、アドレス制御部14は、例えば、ベクトル演算処理装置10の動作サイクルごとにアクセス先のアドレスを変更しながら、メモリ16に対してアクセスするためのメモリアクセスリクエストを、アクセス先のアドレス分、連続的に生成する。即ち、スカラ演算命令に変換された初期化命令によるメモリ16に対するアクセスは、ベクトル演算命令として実行される初期化命令によるメモリ16に対するアクセスと同様である。
アドレス制御部14は、生成した各アクセスポートに対するメモリアクセスリクエストを、メモリアクセス制御部15へ送信する。
図2は、本実施形態に係るベクトル演算処理装置10が、メモリ16に格納されている配列変数に対する初期化を行なう際に、メモリモジュール161にアクセスするアドレスの範囲を例示する図である。図2において、1つの矩形は、配列変数の1要素を表す8バイトのメモリ領域を表す。各矩形における上段の値は、メモリ16全体におけるアドレスを表し、各矩形における下段の値は、メモリモジュール161におけるローカルアドレスを表す。
図2に示す例では、例えば、メモリ16におけるアドレス「0」~「127」がメモリモジュール161に割り当てられ、メモリ16におけるアドレス「128」~「255」がメモリモジュール162に割り当てられ、メモリ16におけるアドレス「256」~「383」がメモリモジュール163に割り当てられ、メモリ16におけるアドレス「384」~「511」がメモリモジュール164に割り当てられている。そして、メモリ16におけるアドレス「512」以降のアドレスも、同様の規則により、メモリモジュール161乃至164に割り当てられていることとする。
図2において、網掛けされた矩形は、初期化が行われるメモリ領域を表す。即ち、図2に示す例では、ベクトル演算処理装置10は、メモリモジュール161における、アドレスが「64」である先頭の要素から128個の要素に対する初期化を行う。ベクトル演算処理装置10は、メモリモジュール162乃至164に格納されている配列変数の要素に対しても同様に初期化するので、この場合に初期化する配列変数の要素数は、合計512個である。
アドレス制御部14は、図2に示す例の場合、メモリモジュール161へのアクセスポートに対する、メモリ16におけるアドレス「64」~「4159」(即ち、メモリモジュール161におけるローカルアドレス「64」~「1087」)に「0」を書き込むメモリアクセスリクエストを生成する。尚、本実施形態に係るメモリモジュール161へのアクセス単位が例えば128バイト(即ち、図2における1行分の矩形が示すメモリ領域)である場合、アドレス制御部14は、網掛けされた矩形を含む9行分のメモリ領域に対する、1個のメモリアクセスリクエストを生成する。アドレス制御部14は、メモリモジュール162乃至164へのアクセスポートに対しても同様に、メモリアクセスリクエストを生成する。
メモリアクセス制御部15は、アドレス制御部14によって生成された、メモリモジュール161乃至164へのアクセスポートに対するメモリアクセスリクエストを、アドレス制御部14から受信する。メモリアクセス制御部15におけるルーティング制御部150は、メモリモジュール161へのアクセスポートに対するメモリアクセスリクエストを、メモリコントローラ151に入力する。ルーティング制御部150は、メモリモジュール162乃至164へのアクセスポートに対するメモリアクセスリクエストを、順に、メモリコントローラ152乃至154に入力する。
メモリコントローラ151は、ルーティング制御部150から入力されたメモリモジュール161へのアクセスポートに対するメモリアクセスリクエストを、メモリコントローラ151が備えるバッファ(不図示)に格納する。こののち、メモリコントローラ151は、当該メモリアクセスリクエストをメモリモジュール161に送信する。尚、本実施形態に係るメモリモジュール161へのアクセス単位が例えば上述した128バイトである場合、メモリコントローラ151は、1つのメモリアクセスリクエストにて、図2における網掛けされた矩形を含む9行分のメモリ領域に対するメモリアクセスを行う。これにより、メモリコントローラ151は、メモリモジュール161に記憶されている配列変数の要素を初期化する。
メモリコントローラ152乃至154も同様に、ルーティング制御部150から入力されたメモリモジュール162乃至164へのアクセスポートに対するメモリアクセスリクエストを、メモリコントローラ152乃至154が備えるバッファ(不図示)に格納する。こののち、メモリコントローラ152乃至154は、当該メモリアクセスリクエストを、順に、メモリモジュール162乃至164に送信する。これにより、メモリコントローラ152乃至154は、メモリモジュール162乃至164に記憶されている配列変数の要素を初期化する。
次に図3のフローチャートを参照して、本実施形態に係るベクトル演算処理装置10が配列変数を初期化する動作(処理)について詳細に説明する。
命令処理部13における判定部131は、フェッチした命令が、メモリ16に記憶されている配列変数に対する初期化命令であるか否かを判定する(ステップS101)。フェッチした命令が配列変数に対する初期化命令でない場合(ステップS102でNo)、全体の処理は終了する。
フェッチした命令が配列変数に対する初期化命令である場合(ステップS102でYes)、命令処理部13は、当該初期化命令をベクトル演算命令からスカラ演算命令に変換し、初期値「0」を含む当該初期化命令に関する情報を、スカラレジスタ132へ格納する(ステップS103)。命令処理部13は、初期値「0」を含む当該初期化命令に関する情報を、アドレス制御部14へ送信する(ステップS104)。
アドレス制御部14は、命令処理部13から受信した初期化命令に関する情報に基づいて、メモリ16における4つのアクセスポートにアクセスするためのメモリアクセスリクエストを生成し、生成した各アクセスポートに対するメモリアクセスリクエストを、メモリアクセス制御部15へ送信する(ステップS105)。
メモリアクセス制御部15は、アドレス制御部14から受信した各アクセスポートに対するメモリアクセスリクエストを、メモリ16におけるメモリモジュール161乃至164に送信することによって、メモリ16に記憶されている配列変数を初期化し(ステップS106)、全体の処理は終了する。
本実施形態に係るベクトル演算処理装置10は、配列変数を初期化する処理を高速に実行することができる。その理由は、ベクトル演算処理装置10は、配列変数に対する初期化を行う初期化命令を、ベクトル演算命令を用いずに、ベクトル演算命令と同様にメモリに対してアクセスするスカラ演算命令に変換することによって実行するからである。
以下に、本実施形態に係るベクトル演算処理装置10によって実現される効果について、詳細に説明する。
ベクトル演算を実行可能なベクトル演算処理装置は、一般的に、配列変数に対する初期化処理を、ベクトルストア命令を発行し、配列変数に所定の初期値を書き込むことによって行っている。配列変数の初期化は、通常、ソフトウェアの実行が開始されたときなどに集中して行なわれることが多い。そしてベクトル演算命令を実行する場合、通常、所定のオーバーヘッドが発生することなどから、多数の大規模な配列変数を使用するソフトウェアを実行する場合では、配列変数を初期化するベクトルストア命令が演算コア内に滞留する場合がある。この場合、後続するベクトル演算命令も実行されずに演算コア内に滞留することになるので、性能が低下する問題が発生する。
このような課題に対して、本実施形態に係るベクトル演算処理装置10は、ベクトル制御部12と、判定部131と、実行部(命令処理部13及びアドレス制御部14)とを備え、例えば、図1乃至図3を参照して上述した通り動作する。即ち、ベクトル制御部12は、メモリ16に記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御する。判定部131は、実行する命令が、当該配列変数に対する初期化を行う初期化命令であるか否かを判定する。そして、実行部は、当該初期化命令を、当該ベクトル演算命令を用いずに、ベクトル演算命令と同様にメモリ16に対してアクセスするスカラ演算命令に変換することによって実行する。
図4A及び4Bは、本実施形態に係るベクトル演算処理装置10による配列変数の初期化処理のタイムチャートを例示する図である。また、図4A及び4Bは、本実施形態に係るベクトル演算処理装置10によって実現される効果を明確にするために、当該タイムチャートと、ベクトル演算処理装置10が一般的なベクトル演算処理装置と同様にベクトル演算命令を用いて配列変数を初期化する場合における初期化処理のタイムチャートとを比較した結果を示している。尚、図4A及び4Bが示すタイムチャートにおける横軸は、初期化命令の実行が開始されてからの経過時間を、ベクトル演算処理装置10の動作サイクルTにより表している。但し動作サイクルTは、例えば、ベクトル演算処理装置10が動作するクロック周期等である。
ベクトル演算処理装置10が一般的なベクトル演算処理装置と同様に、ベクトル演算命令(ベクトルストア命令)を用いて配列変数を初期化する場合、図4A及び4Bに示す通り、命令処理部13による、ベクトル制御部12に対して初期化命令を転送する処理が発生する。この場合、さらに加えて、ベクトル処理部12による、初期値「0」をベクトルレジスタ122へ展開する処理、及び、ベクトルレジスタ122へ展開したベクトルストアデータをアドレス制御部14へ送信する処理も発生する。
ベクトル演算処理装置10は、ベクトル演算命令を用いてメモリ16に記憶された配列変数を初期化する場合、図4A及び4Bに示す通り、初期化命令の実行を開示してから28T後に配列変数の初期化を完了する。
これに対して、ベクトル演算処理装置10は、スカラ演算命令を用いてメモリ16に記憶された配列変数を初期化する場合、図4A及び4Bに示す通り、初期化命令の実行を開示してから18T後に配列変数の初期化を完了する。即ち、本実施形態に係るベクトル演算処理装置10は、一般的なベクトル演算処理装置と同様にベクトル演算命令を用いて配列変数を初期化する場合と比較して、10T早く配列変数の初期化を完了することができる。
本実施形態に係るベクトル演算処理装置10が、ベクトル演算命令を用いて配列変数を初期化する場合よりも早く配列変数の初期化を完了することができる理由は、以下の通りである。即ち、あるプログラムの実行において、配列変数に対する演算結果は、一般的に要素ごとに異なる値であるので、その演算結果をメモリに高速に格納する場合、要素ごとに異なる値を格納したベクトルレジスタを備えるベクトル制御部を用いたベクトル演算処理(ベクトルストア)を行う必要がある。しかしながら、その場合、上述した通り、ベクトル制御部を用いてベクトル演算処理を行うことに伴うオーバーヘッド(データを転送する処理やベクトルレジスタへデータを展開する処理など)が発生する。
本実施形態に係るベクトル演算処理装置10は、配列変数を初期化する場合、その配列変数に書き込む値(初期値)が全て同一の値(例えば「0」)であるという特性に着目した構成を備え、ベクトル制御部12を使用せずに、スカラ演算命令によって、その同一の値を配列変数の要素に一斉に書き込むメモリアクセスリクエストを連続的に発行する。即ち、ベクトル演算処理装置10は、上述したオーバーヘッドを発生させることなく、ベクトルストア命令によるメモリ16に対するアクセスと同様な連続的なアクセスを行うことによって、配列変数に対する初期化を行う。これにより、本実施形態に係るベクトル演算処理装置10は、配列変数を初期化する処理を高速に実行することができる。
また、配列変数が記憶されたメモリ領域に対して初期値「0」を一斉に書き込むストア命令による本実施形態に係るメモリアクセスは、配列変数の要素ごとに初期値「0」を書き込むベクトルストア命令によるメモリアクセスと比較して、演算コア11からメモリアクセス制御部15に送信されるメモリアクセスリクエストの数を少なくすることができる。これにより、本実施形態に係るベクトル演算処理装置10は、メモリアクセス制御部15において、メモリアクセスリクエストに関する輻輳が発生することを抑制できるので、配列変数を初期化する処理を高速に実行することができる。また、メモリアクセス制御部15において、メモリアクセスリクエストに関する輻輳が発生することを抑制する効果は、ベクトル演算処理装置10が備える演算コア11の数が多いほど大きくなることが期待できる。
また、本実施形態に係るベクトル演算処理装置10は、メモリ16に関して、本実施形態に特有の機能を追加していないので、汎用品などの既存の製品を使用可能である。即ち、本実施形態に係るベクトル演算処理装置10は、上述した配列変数を初期化する処理を高速に実行する構成を、低コストで実現することができる
<第2の実施形態>
図5は、本願発明の第2の実施形態に係るベクトル演算処理装置20の構成を示すブロック図である。
本実施形態に係るベクトル演算処理装置20は、ベクトル制御部21、判定部22、及び、実行部23を備える。
ベクトル制御部21は、メモリ24に記憶されている配列変数240に対する演算を、ベクトル演算命令210により実行することを制御する。
判定部22は、実行する命令200が、配列変数240に対する初期化を行う初期化命令220であるか否かを判定する。
実行部23は、初期化命令220を、ベクトル演算命令210を用いずに、ベクトル演算命令210と同様にメモリ24に対してアクセスするスカラ演算命令230に変換することによって実行する。
本実施形態に係るベクトル演算処理装置20は、配列変数を初期化する処理を高速に実行することができる。その理由は、ベクトル演算処理装置20は、配列変数240に対する初期化を行う初期化命令220を、ベクトル演算命令210を用いずに、ベクトル演算命令210と同様にメモリ24に対してアクセスするスカラ演算命令230に変換することによって実行するからである。
<ハードウェア構成例>
上述した各実施形態において図1、及び、図5に示したベクトル演算処理装置における各部は、専用のHW(HardWare)(電子回路)によって実現することができる。また、図1、及び、図5において、少なくとも、下記構成は、ソフトウェアプログラムの機能(処理)単位(ソフトウェアモジュール)と捉えることができる。
・ベクトル制御部12及び21、
・命令処理部13、
・判定部131及び22、
・アドレス制御部14、
・実行部23、
・メモリアクセス制御部15。
但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図6を参照して説明する。
図6は、本願発明の各実施形態に係るベクトル演算処理装置を実行可能な情報処理装置900(コンピュータ)の構成を例示的に説明する図である。即ち、図6は、図1、及び、図5に示したベクトル演算処理装置を実現可能なコンピュータ(情報処理装置)の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。
図6に示した情報処理装置900は、構成要素として下記を備えている。
・CPU(Central_Processing_Unit)901、
・ROM(Read_Only_Memory)902、
・RAM(Random_Access_Memory)903、
・ハードディスク(記憶装置)904、
・通信インタフェース905、
・バス906(通信線)、
・CD-ROM(Compact_Disc_Read_Only_Memory)等の記録媒体907に格納されたデータを読み書き可能なリーダライタ908、
・モニターやスピーカ、キーボード等の入出力インタフェース909。
即ち、上記構成要素を備える情報処理装置900は、これらの構成がバス906を介して接続された一般的なコンピュータである。情報処理装置900は、CPU901を複数備える場合もあれば、マルチコアにより構成されたCPU901を備える場合もある。
そして、上述した実施形態を例に説明した本願発明は、図6に示した情報処理装置900に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図(図1、及び、図5)における上述した構成、或いはフローチャート(図3)の機能である。本願発明は、その後、そのコンピュータプログラムを、当該ハードウェアのCPU901に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ(RAM903)、または、ROM902やハードディスク904等の不揮発性の記憶デバイスに格納すれば良い。
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、CD-ROM等の各種記録媒体907を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本願発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体907によって構成されると捉えることができる。
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
10 ベクトル演算処理装置
11 演算コア
12 ベクトル制御部
121 ベクトル演算器
122 ベクトルレジスタ
13 命令処理部
131 判定部
132 スカラレジスタ
14 アドレス制御部
15 メモリアクセス制御部
150 ルーティング制御部
151乃至154 メモリコントローラ
16 メモリ
161乃至164 メモリモジュール
20 ベクトル演算処理装置
200 実行する命令
21 ベクトル制御部
210 ベクトル演算命令
22 判定部
220 初期化命令
23 実行部
230 スカラ演算命令
24 メモリ
240 配列変数
900 情報処理装置
901 CPU
902 ROM
903 RAM
904 ハードディスク(記憶装置)
905 通信インタフェース
906 バス
907 記録媒体
908 リーダライタ
909 入出力インタフェース

Claims (10)

  1. メモリに記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御するベクトル制御手段と、
    実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定する判定手段と、
    前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する実行手段と、
    を備えるベクトル演算処理装置。
  2. 前記実行手段は、前記初期化命令を、自装置の動作サイクルごとにアクセス先のアドレスを変更しながら、前記メモリに対してアクセスするスカラ演算命令に変換する、
    請求項1に記載のベクトル演算処理装置。
  3. 前記実行手段は、前記スカラ演算命令による前記メモリに対する書き込みデータを格納するスカラレジスタを備え、前記初期化命令が示す前記書き込みデータを、前記スカラレジスタに格納する。
    請求項1または請求項2に記載のベクトル演算処理装置。
  4. 前記実行手段は、前記初期化命令を、前記メモリが備える複数のアクセスポートに対するアクセス命令を含む前記スカラ演算命令に変換する、
    請求項1乃至請求項3のいずれか一項に記載のベクトル演算処理装置。
  5. 前記スカラ演算命令に変換された前記初期化命令を、前記メモリが備える複数のアクセスポートに対するアクセスを行うことによって実行するメモリアクセス制御手段をさらに備える、
    請求項4に記載のベクトル演算処理装置。
  6. 前記判定手段は、前記実行する命令において、前記配列変数に含まれる要素に対して書き込む値が所定の値である場合に、前記実行する命令が前記初期化命令であると判定する、
    請求項1乃至請求項5のいずれか一項に記載のベクトル演算処理装置。
  7. 前記判定手段は、前記実行する命令が示す命令種別が、前記初期化命令を示すか否かを判定する、
    請求項1乃至請求項5のいずれか一項に記載のベクトル演算処理装置。
  8. 前記メモリをさらに備える、
    請求項1乃至6のいずれか一項に記載のベクトル演算処理装置。
  9. ベクトル演算処理装置によって、
    メモリに記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御し、
    実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定し、
    前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する、
    ベクトル演算処理装置による配列変数初期化方法。
  10. メモリに記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御するベクトル制御処理と、
    実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定する判定処理と、
    前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する実行処理と、
    をベクトル演算処理装置に実行させるためのベクトル演算処理装置による配列変数初期化プログラム。
JP2019033557A 2019-02-27 2019-02-27 ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム Active JP7225904B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2019033557A JP7225904B2 (ja) 2019-02-27 2019-02-27 ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2019033557A JP7225904B2 (ja) 2019-02-27 2019-02-27 ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム

Publications (2)

Publication Number Publication Date
JP2020140284A JP2020140284A (ja) 2020-09-03
JP7225904B2 true JP7225904B2 (ja) 2023-02-21

Family

ID=72265181

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019033557A Active JP7225904B2 (ja) 2019-02-27 2019-02-27 ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム

Country Status (1)

Country Link
JP (1) JP7225904B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114489506B (zh) * 2022-01-21 2024-02-27 杭州海康存储科技有限公司 存储访问控制装置、方法及存储设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259610A (ja) 1999-03-04 2000-09-22 Nec Kofu Ltd ベクトルデータ処理装置およびマルチプロセッサ構成におけるベクトルデータ処理装置のメモリクリア方式
US20170083323A1 (en) 2015-09-23 2017-03-23 Qualcomm Incorporated Speculative scalarization in vector processing
JP2017117064A (ja) 2015-12-22 2017-06-29 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラム

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01295366A (ja) * 1988-05-24 1989-11-29 Hitachi Ltd ベクトル処理装置
JPH02253473A (ja) * 1989-03-28 1990-10-12 Hitachi Ltd ベクトル処理システム
JP3706397B2 (ja) * 1994-06-06 2005-10-12 シャープ株式会社 データ駆動型情報処理装置
JPH10105412A (ja) * 1996-09-30 1998-04-24 Hitachi Ltd 主記憶の効率的アクセスを実現するオブジェクト生成方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000259610A (ja) 1999-03-04 2000-09-22 Nec Kofu Ltd ベクトルデータ処理装置およびマルチプロセッサ構成におけるベクトルデータ処理装置のメモリクリア方式
US20170083323A1 (en) 2015-09-23 2017-03-23 Qualcomm Incorporated Speculative scalarization in vector processing
JP2017117064A (ja) 2015-12-22 2017-06-29 日本電気株式会社 情報処理装置、情報処理方法、及び、プログラム

Also Published As

Publication number Publication date
JP2020140284A (ja) 2020-09-03

Similar Documents

Publication Publication Date Title
JPH04246745A (ja) 情報処理装置及びその方法
JP7088897B2 (ja) データアクセス方法、データアクセス装置、機器及び記憶媒体
JP2826028B2 (ja) 分散メモリ型プロセッサシステム
US20220237041A1 (en) Parallel processing system performing in-memory processing
JP2010500682A (ja) フラッシュメモリアクセス回路
JP5119902B2 (ja) 動的再構成支援プログラム、動的再構成支援方法、動的再構成回路、動的再構成支援装置および動的再構成システム
JP2007034392A (ja) 情報処理装置及びデータ処理方法
JP4895262B2 (ja) 情報処理装置、コントローラおよびファイル読み出し方法
JP7225904B2 (ja) ベクトル演算処理装置、ベクトル演算処理装置による配列変数初期化方法、及び、ベクトル演算処理装置による配列変数初期化プログラム
JP6668993B2 (ja) 並列処理装置及びノード間通信方法
US9697123B2 (en) Information processing device, control method of information processing device and control program of information processing device
JP2006268168A (ja) ベクトル命令管理回路、ベクトル処理装置、ベクトル命令管理方法、ベクトル処理方法、ベクトル命令管理プログラム、および、ベクトル処理プログラム
JP6294732B2 (ja) データ転送制御装置及びメモリ内蔵装置
JP2005258509A (ja) ストレージ装置
CN116048770A (zh) 用于进程调度的方法和设备
US20220318015A1 (en) Enforcing data placement requirements via address bit swapping
JP2002007213A (ja) キャッシュメモリ制御方法及びプログラム処理方法
JP2008210280A (ja) 半導体装置及びdmaコントローラ
JP4548505B2 (ja) 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
JP6481549B2 (ja) 情報処理装置および情報処理装置の制御方法
JPH0192851A (ja) アドレス空間切替装置
JP5540799B2 (ja) データ入出力制御方法,データ入出力制御プログラムおよびデータ入出力制御装置
JP2006506727A (ja) コピーレジスタファイルを有するvliw
JP7168731B1 (ja) メモリアクセス制御装置、メモリアクセス制御方法、及び、メモリアクセス制御プログラム
JP7003752B2 (ja) データ転送装置、データ転送方法、プログラム

Legal Events

Date Code Title Description
RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20211015

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20221124

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: 20230110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230123

R151 Written notification of patent or utility model registration

Ref document number: 7225904

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151