JP7225904B2 - Vector operation processing device, array variable initialization method by vector operation processing device, and array variable initialization program by vector operation processing device - Google Patents
Vector operation processing device, array variable initialization method by vector operation processing device, and array variable initialization program by vector operation processing device Download PDFInfo
- 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
Links
Images
Landscapes
- Complex Calculations (AREA)
- Executing Machine-Instructions (AREA)
Description
本願発明は、ベクトル演算を実行可能な情報処理装置による、配列変数を初期化する技術に関する。 The present invention relates to a technique for initializing array variables by an information processing device capable of executing vector operations.
近年、様々な技術領域においてソフトウェアの高機能化が進むのに伴い、ソフトウェアの規模も急速に増大している。このようなソフトウェアでは、使用する配列変数(配列データ)も大規模化していることから、大規模な配列変数に対する初期化やデータの設定を効率的かつ高速に行う技術が期待されている。 2. Description of the Related Art In recent years, as software becomes more sophisticated in various technical fields, the scale of software is rapidly increasing. Since the array variables (array data) used in such software are also becoming large-scale, there is a need for a technique for efficiently and quickly initializing and setting data for large-scale array variables.
このような技術に関連する技術として、特許文献1には、複数のプロセッサがそれぞれ自装置に割り付けられたデータを処理するに際して、入力装置から入力したデータまたは記憶装置に格納されている配列データの全部または一部を分割して各記憶空間または各プロセッサに割り付ける配列データの分配/収集処理装置が開示されている。この装置は、各記憶空間または各プロセッサへの割り付け対象となる1以上の任意の次元方向で分割した分割ブロックに対応して、各次元の範囲に関する情報を持つ転送テーブルを作成する。この装置は、作成した転送テーブルに基づいて、分割ブロックごとにデータを各記憶空間または各プロセッサに転送する。そしてこの装置は、任意の転送パターンによりデータを自動分配する。
As a technology related to such a technology,
また、特許文献2には、メモリ資源を多く費やすことなく、かつ、高速に配列の初期化処理を行うことができる定数代入方法が開示されている。この方法では、配列の配列空間を擬似的に0クリアするための「0」値が格納された物理メモリブロックが物理メモリに予め用意されている。この方法では、物理メモリブロックを示す物理メモリページのテーブルが予め用意されている。この方法では、ユーザプログラムが起動され、配列が現れても、その配列空間のために特に物理メモリブロック(物理メモリページ)を確保しない。そしてこの方法では、初期化状態において、各配列空間をいずれも物理メモリブロック(物理メモリページ)とリンクするように設定する。 Further, Patent Document 2 discloses a constant assignment method that can perform array initialization processing at high speed without consuming a large amount of memory resources. In this method, a physical memory block storing "0" values for pseudo-clearing the array space to 0 is prepared in advance in the physical memory. In this method, a table of physical memory pages indicating physical memory blocks is prepared in advance. In this method, even if a user program is started and an array appears, no physical memory block (physical memory page) is specifically reserved for the array space. In this method, each array space is set to be linked with a physical memory block (physical memory page) in the initialization state.
スーパーコンピュータ等のベクトル演算を実行可能なベクトル演算処理装置は、一般的に、配列変数に対する初期化処理を、メモリへの書き込みを行うベクトル演算命令であるベクトルストア命令を発行することによって行っている。即ち、ベクトル演算処理装置では、メモリに記憶されている配列変数は、ベクトルストア命令によって、所定の初期値が書き込まれる。配列変数の初期化は、通常、ソフトウェアの実行が開始されたときなどに集中して行なわれることが多い。そしてベクトル演算命令を実行する場合、通常、所定のオーバーヘッド(処理を実行することに伴うコスト)が発生することなどから、多数の大規模な配列変数を使用するソフトウェアを実行する場合では、配列変数を初期化するベクトルストア命令が演算コア内に滞留する場合がある。 A vector arithmetic processing unit capable of executing vector arithmetic, such as a supercomputer, generally initializes array variables by issuing a vector store instruction, which is a vector arithmetic instruction for writing to memory. . That is, in the vector processor, predetermined initial values are written to the array variables stored in the memory by vector store instructions. Initialization of array variables is usually performed intensively when software execution is started. When executing vector operation instructions, a certain amount of overhead (the cost associated with executing processing) is usually incurred. Therefore, when executing software that uses many large array variables, array variables A vector store instruction that initializes may stay in the arithmetic core.
このような場合、後続するベクトル演算命令も実行されずに演算コア内に滞留することになるので、性能が低下する問題が発生する。即ち、ベクトル演算処理装置において、配列変数を初期化する処理を高速に行うことが課題である。上述した特許文献1及び2は、この課題について言及していない。本願発明の主たる目的は、この課題を解決するベクトル演算処理装置等を提供することである。
In such a case, the subsequent vector operation instruction is not executed and stays in the operation core, resulting in a problem of performance degradation. That is, the problem is how to perform processing for initializing array variables at high speed in a vector arithmetic processing device.
本願発明の一態様に係るベクトル演算処理装置は、メモリに記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御するベクトル制御手段と、実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定する判定手段と、前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する実行手段と、を備える。 A vector operation processing apparatus according to one aspect of the present invention includes vector control means for controlling execution of operations on array variables stored in a memory by vector operation instructions; and a scalar operation instruction for accessing the memory in the same manner as the vector operation instruction without using the vector operation instruction. and an execution means for executing by converting the
上記目的を達成する他の見地において、本願発明の一態様に係るベクトル演算処理装置による配列変数初期化方法は、ベクトル演算処理装置によって、メモリに記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御し、実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定し、前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する。 In another aspect of achieving the above object, according to an aspect of the present invention, there is provided an array variable initialization method by a vector operation processing device, in which the vector operation processing device performs operations on array variables stored in a memory using vector operation instructions. to control the execution of the vector It is executed by converting it into a scalar operation instruction that accesses the memory in the same manner as an operation instruction.
また、上記目的を達成する更なる見地において、本願発明の一態様に係るベクトル演算処理装置による配列変数初期化プログラムは、メモリに記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御するベクトル制御処理と、実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定する判定処理と、前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する実行処理と、をベクトル演算処理装置に実行させる。 In a further aspect of achieving the above object, an array variable initialization program by a vector operation processing device according to one aspect of the present invention performs operations on array variables stored in a memory using vector operation instructions. a determination process for determining whether or not an instruction to be executed is an initialization instruction for initializing the array variable; and a process for executing the initialization instruction without using the vector operation instruction. , and an execution process executed by converting the vector operation instruction into a scalar operation instruction for accessing the memory in the same manner as the vector operation instruction.
更に、本願発明は、係るベクトル演算処理装置による配列変数初期化プログラム(コンピュータプログラム)が格納された、コンピュータ読み取り可能な、不揮発性の記録媒体によっても実現可能である。 Furthermore, the present invention can also be realized by a computer-readable, non-volatile recording medium storing an array variable initialization program (computer program) by the vector processing device.
本願発明は、ベクトル演算処理装置において、配列変数を初期化する処理を高速に実行することを可能とする。 INDUSTRIAL APPLICABILITY The present invention makes it possible to execute processing for initializing array variables at high speed in a vector processing device.
以下、本願発明の実施の形態について図面を参照して詳細に説明する。 BEST MODE FOR CARRYING OUT THE INVENTION Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
<第1の実施形態>
図1は、本願発明の第1の実施の形態に係るベクトル演算処理装置10の構成を示すブロック図である。ベクトル演算処理装置10は、例えばスーパーコンピュータ等の、ベクトル演算を実行可能な情報処理装置である。ベクトル演算処理装置10は、大別して、1以上の演算コア11、メモリアクセス制御部15、及び、メモリ16を備えている。
<First Embodiment>
FIG. 1 is a block diagram showing the configuration of a vector
演算コアは例えばCPU(Central Processing Unit)であり、例えば主記憶であるメモリ16に記憶されているプログラム(ソフトウェア)を読み出して実行し、その実行結果をメモリ16に格納する。メモリアクセス制御部15は、演算コア11からメモリ16に対するアクセス(データの読み出しあるいは書き込み)を制御する。
The arithmetic core is, for example, a CPU (Central Processing Unit), reads and executes a program (software) stored in the
演算コア11は、ベクトル制御部12、命令処理部13、及び、アドレス制御部14を備えている。尚、本実施形態では、命令処理部13とアドレス制御部14とをまとめて、実行部と称する場合がある。
The arithmetic core 11 includes a
命令処理部13は、判定部131、及び、スカラレジスタ132を備える。命令処理部13は、実行するプログラムに含まれる命令をフェッチし、フェッチした命令をデコードし、デコードした命令を実行する。
The
本実施形態に係る命令処理部13によって実行される命令には、大別して、ベクトル演算命令とスカラ演算命令とがある。但し、ベクトル演算命令とは、例えば配列変数に含まれる複数の要素に対して、同様の演算をパイプライン処理により行う演算命令のことである。一方、スカラ演算命令は、上述したベクトル演算命令以外の演算命令であり、例えば配列変数でない(複数の要素を含まない)変数に対して個別の演算を行う演算命令のことである。命令処理部13は、実行する命令に含まれる命令種別を表す情報(命令コード)によって、当該命令がベクトル演算命令であるのかスカラ演算命令であるのかを判別可能である。
The instructions executed by the
本実施形態では以降、スカラ演算命令あるいはベクトル演算命令による、メモリ16に対するデータの書き込み動作(ストア動作)について説明することとする。
In this embodiment, the write operation (store operation) of data to the
命令処理部13は、実行する命令がスカラ演算命令(ストア命令)である場合、当該命令によってメモリ16に書き込むデータ、及び、書き込み先のアドレスを含む、当該命令に関する情報をスカラレジスタ132に格納する。命令処理部13は、スカラレジスタ132に格納した当該命令に関する情報に基づいてメモリ16に格納するメモリアクセスリクエストを生成することを指示する情報を、アドレス制御部14へ送信する。
When the instruction to be executed is a scalar operation instruction (store instruction), the
命令処理部13は、実行する命令がベクトル演算命令(ベクトルストア命令)である場合、当該ベクトルストア命令をベクトル制御部12へ転送することによって、当該ベクトルストア命令によってメモリ16に書き込むベクトルデータの取得あるいは生成を、ベクトル制御部12に指示する。命令処理部13は、当該ベクトルデータをメモリ16に格納するメモリアクセスリクエストを生成することを指示する情報を、アドレス制御部14へ送信する。尚、ベクトル制御部12は、後述する処理によって、当該ベクトルデータをアドレス制御部14に送信する。
When the instruction to be executed is a vector operation instruction (vector store instruction), the
ベクトル制御部12は、ベクトル演算器121、及び、ベクトルレジスタ122を備える。ベクトル制御部12は、命令処理部13から転送されたベクトルストア命令に基づき、当該ベクトルストア命令によってメモリ16に書き込むベクトルデータを取得あるいは生成し、当該ベクトルデータをベクトルレジスタ122に格納する。ベクトル演算器121は、ベクトルレジスタ122に格納されたベクトルデータを用いてベクトル演算を実行する機能を備える。ベクトル制御部12は、ベクトルレジスタ122に格納したベクトルデータを、アドレス制御部14へ送信する。
The
アドレス制御部14は、命令処理部13から上述の通りに受信した情報に基づいて、メモリ16に対するデータの書き込みを実行するメモリアクセスリクエストを生成する。アドレス制御部14は、実行する命令がストア命令である場合は、メモリ16に対する書き込みデータを命令処理部13から受信し、実行する命令がベクトルストア命令である場合は、メモリ16に対する書き込みデータをベクトル制御部12から受信する。アドレス制御部14は、生成したメモリアクセスリクエストをメモリアクセス制御部15へ送信する。
The
メモリアクセス制御部15は、アドレス制御部14から受信したメモリアクセスリクエストを、4つのメモリモジュール161乃至164を備えるメモリ16における4つのアクセスポートに送信する。尚、メモリ16が備えるメモリモジュール及びアクセスポートの数は4つに限定されない。メモリ16は、4つ以外のメモリモジュール及びアクセスポートを備えてもよい。
The memory
メモリアクセス制御部15は、ルーティング制御部150、及び、メモリコントローラ151乃至154を備えている。メモリコントローラ151乃至154は、メモリ16が備える4つのアクセスポートを介して、メモリモジュール161乃至164と通信可能に接続されている。ルーティング制御部150、及び、メモリコントローラ151乃至154の詳細については後述する。
The memory
次に、本実施形態に係るベクトル演算処理装置10が、メモリ16に記憶されている配列変数を初期化する動作について説明する。
Next, the operation of the
命令処理部13における判定部131は、命令処理部13によりフェッチされた命令が、メモリ16に記憶されている配列変数に対する初期化命令であるか否かを判定する。但し、本実施形態に係るベクトル演算処理装置10が実行するプログラムでは、配列変数に対する初期化命令は、当該配列変数に含まれる全ての要素に対して所定の初期値(例えば「0」)を設定するベクトルストア命令により表されることとする。
The
判定部131は、例えば、フェッチされた命令が、配列変数に含まれる全ての要素に対して書き込む値が「0」であることを示す場合、当該命令が配列変数に対する初期化命令であると判定する。判定部131は、あるいは例えば、フェッチされた命令が示す命令種別が配列変数に対する初期化命令を示す場合に、当該命令が配列変数に対する初期化命令であると判定してもよい。ただしこの場合、配列変数に対する初期化命令を識別可能な命令種別を表す情報(命令コード)が、命令体系において定義されていることとする。
For example, when the fetched instruction indicates that the values to be written to all the elements included in the array variable are "0", the
命令処理部13は、フェッチした命令が、判定部131によって、配列変数に対する初期化命令であると判定された場合、当該命令をベクトル演算命令ではなくスカラ演算命令として処理することを決定する。即ち、命令処理部13は、当該初期化命令を、ベクトル演算命令からスカラ演算命令に変換する。
When the
命令処理部13は、使用する初期値「0」を含む当該初期化命令に関する情報を、スカラレジスタ132へ格納する。但し、当該初期化命令に関する情報は、例えば、メモリ16における初期化を行うベースアドレス(先頭アドレス)、及び、初期化する配列変数の要素数を含むこととする。命令処理部13は、スカラレジスタ132へ格納した初期値「0」を含む当該初期化命令に関する情報を、アドレス制御部14へ送信する。
The
アドレス制御部14は、命令処理部13から受信した初期化命令に関する情報に基づいて、メモリ16における上述した4つのアクセスポートにアクセスするためのメモリアクセスリクエストを生成する。この際、アドレス制御部14は、例えば、ベクトル演算処理装置10の動作サイクルごとにアクセス先のアドレスを変更しながら、メモリ16に対してアクセスするためのメモリアクセスリクエストを、アクセス先のアドレス分、連続的に生成する。即ち、スカラ演算命令に変換された初期化命令によるメモリ16に対するアクセスは、ベクトル演算命令として実行される初期化命令によるメモリ16に対するアクセスと同様である。
The
アドレス制御部14は、生成した各アクセスポートに対するメモリアクセスリクエストを、メモリアクセス制御部15へ送信する。
The
図2は、本実施形態に係るベクトル演算処理装置10が、メモリ16に格納されている配列変数に対する初期化を行なう際に、メモリモジュール161にアクセスするアドレスの範囲を例示する図である。図2において、1つの矩形は、配列変数の1要素を表す8バイトのメモリ領域を表す。各矩形における上段の値は、メモリ16全体におけるアドレスを表し、各矩形における下段の値は、メモリモジュール161におけるローカルアドレスを表す。
FIG. 2 is a diagram exemplifying the range of addresses accessed by the
図2に示す例では、例えば、メモリ16におけるアドレス「0」~「127」がメモリモジュール161に割り当てられ、メモリ16におけるアドレス「128」~「255」がメモリモジュール162に割り当てられ、メモリ16におけるアドレス「256」~「383」がメモリモジュール163に割り当てられ、メモリ16におけるアドレス「384」~「511」がメモリモジュール164に割り当てられている。そして、メモリ16におけるアドレス「512」以降のアドレスも、同様の規則により、メモリモジュール161乃至164に割り当てられていることとする。
In the example shown in FIG. 2, for example, addresses "0" to "127" in the
図2において、網掛けされた矩形は、初期化が行われるメモリ領域を表す。即ち、図2に示す例では、ベクトル演算処理装置10は、メモリモジュール161における、アドレスが「64」である先頭の要素から128個の要素に対する初期化を行う。ベクトル演算処理装置10は、メモリモジュール162乃至164に格納されている配列変数の要素に対しても同様に初期化するので、この場合に初期化する配列変数の要素数は、合計512個である。
In FIG. 2, shaded rectangles represent memory areas where initialization takes place. That is, in the example shown in FIG. 2, the
アドレス制御部14は、図2に示す例の場合、メモリモジュール161へのアクセスポートに対する、メモリ16におけるアドレス「64」~「4159」(即ち、メモリモジュール161におけるローカルアドレス「64」~「1087」)に「0」を書き込むメモリアクセスリクエストを生成する。尚、本実施形態に係るメモリモジュール161へのアクセス単位が例えば128バイト(即ち、図2における1行分の矩形が示すメモリ領域)である場合、アドレス制御部14は、網掛けされた矩形を含む9行分のメモリ領域に対する、1個のメモリアクセスリクエストを生成する。アドレス制御部14は、メモリモジュール162乃至164へのアクセスポートに対しても同様に、メモリアクセスリクエストを生成する。
In the case of the example shown in FIG. 2, the
メモリアクセス制御部15は、アドレス制御部14によって生成された、メモリモジュール161乃至164へのアクセスポートに対するメモリアクセスリクエストを、アドレス制御部14から受信する。メモリアクセス制御部15におけるルーティング制御部150は、メモリモジュール161へのアクセスポートに対するメモリアクセスリクエストを、メモリコントローラ151に入力する。ルーティング制御部150は、メモリモジュール162乃至164へのアクセスポートに対するメモリアクセスリクエストを、順に、メモリコントローラ152乃至154に入力する。
The memory
メモリコントローラ151は、ルーティング制御部150から入力されたメモリモジュール161へのアクセスポートに対するメモリアクセスリクエストを、メモリコントローラ151が備えるバッファ(不図示)に格納する。こののち、メモリコントローラ151は、当該メモリアクセスリクエストをメモリモジュール161に送信する。尚、本実施形態に係るメモリモジュール161へのアクセス単位が例えば上述した128バイトである場合、メモリコントローラ151は、1つのメモリアクセスリクエストにて、図2における網掛けされた矩形を含む9行分のメモリ領域に対するメモリアクセスを行う。これにより、メモリコントローラ151は、メモリモジュール161に記憶されている配列変数の要素を初期化する。
The
メモリコントローラ152乃至154も同様に、ルーティング制御部150から入力されたメモリモジュール162乃至164へのアクセスポートに対するメモリアクセスリクエストを、メモリコントローラ152乃至154が備えるバッファ(不図示)に格納する。こののち、メモリコントローラ152乃至154は、当該メモリアクセスリクエストを、順に、メモリモジュール162乃至164に送信する。これにより、メモリコントローラ152乃至154は、メモリモジュール162乃至164に記憶されている配列変数の要素を初期化する。
Similarly, the
次に図3のフローチャートを参照して、本実施形態に係るベクトル演算処理装置10が配列変数を初期化する動作(処理)について詳細に説明する。
Next, with reference to the flowchart of FIG. 3, the operation (processing) of initializing the array variables by the
命令処理部13における判定部131は、フェッチした命令が、メモリ16に記憶されている配列変数に対する初期化命令であるか否かを判定する(ステップS101)。フェッチした命令が配列変数に対する初期化命令でない場合(ステップS102でNo)、全体の処理は終了する。
The
フェッチした命令が配列変数に対する初期化命令である場合(ステップS102でYes)、命令処理部13は、当該初期化命令をベクトル演算命令からスカラ演算命令に変換し、初期値「0」を含む当該初期化命令に関する情報を、スカラレジスタ132へ格納する(ステップS103)。命令処理部13は、初期値「0」を含む当該初期化命令に関する情報を、アドレス制御部14へ送信する(ステップS104)。
If the fetched instruction is an initialization instruction for an array variable (Yes in step S102), the
アドレス制御部14は、命令処理部13から受信した初期化命令に関する情報に基づいて、メモリ16における4つのアクセスポートにアクセスするためのメモリアクセスリクエストを生成し、生成した各アクセスポートに対するメモリアクセスリクエストを、メモリアクセス制御部15へ送信する(ステップS105)。
The
メモリアクセス制御部15は、アドレス制御部14から受信した各アクセスポートに対するメモリアクセスリクエストを、メモリ16におけるメモリモジュール161乃至164に送信することによって、メモリ16に記憶されている配列変数を初期化し(ステップS106)、全体の処理は終了する。
The memory
本実施形態に係るベクトル演算処理装置10は、配列変数を初期化する処理を高速に実行することができる。その理由は、ベクトル演算処理装置10は、配列変数に対する初期化を行う初期化命令を、ベクトル演算命令を用いずに、ベクトル演算命令と同様にメモリに対してアクセスするスカラ演算命令に変換することによって実行するからである。
The vector
以下に、本実施形態に係るベクトル演算処理装置10によって実現される効果について、詳細に説明する。
The effects realized by the vector
ベクトル演算を実行可能なベクトル演算処理装置は、一般的に、配列変数に対する初期化処理を、ベクトルストア命令を発行し、配列変数に所定の初期値を書き込むことによって行っている。配列変数の初期化は、通常、ソフトウェアの実行が開始されたときなどに集中して行なわれることが多い。そしてベクトル演算命令を実行する場合、通常、所定のオーバーヘッドが発生することなどから、多数の大規模な配列変数を使用するソフトウェアを実行する場合では、配列変数を初期化するベクトルストア命令が演算コア内に滞留する場合がある。この場合、後続するベクトル演算命令も実行されずに演算コア内に滞留することになるので、性能が低下する問題が発生する。 2. Description of the Related Art A vector operation processor capable of executing vector operations generally initializes array variables by issuing a vector store instruction and writing predetermined initial values to the array variables. Initialization of array variables is usually performed intensively when software execution is started. When executing vector arithmetic instructions, a certain amount of overhead is usually generated. Therefore, when executing software that uses a large number of large-scale array variables, the vector store instruction that initializes the array variables must be executed by the arithmetic core. may stay inside. In this case, the subsequent vector operation instruction is not executed and stays in the operation core, resulting in a problem of performance degradation.
このような課題に対して、本実施形態に係るベクトル演算処理装置10は、ベクトル制御部12と、判定部131と、実行部(命令処理部13及びアドレス制御部14)とを備え、例えば、図1乃至図3を参照して上述した通り動作する。即ち、ベクトル制御部12は、メモリ16に記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御する。判定部131は、実行する命令が、当該配列変数に対する初期化を行う初期化命令であるか否かを判定する。そして、実行部は、当該初期化命令を、当該ベクトル演算命令を用いずに、ベクトル演算命令と同様にメモリ16に対してアクセスするスカラ演算命令に変換することによって実行する。
In order to solve such problems, the vector
図4A及び4Bは、本実施形態に係るベクトル演算処理装置10による配列変数の初期化処理のタイムチャートを例示する図である。また、図4A及び4Bは、本実施形態に係るベクトル演算処理装置10によって実現される効果を明確にするために、当該タイムチャートと、ベクトル演算処理装置10が一般的なベクトル演算処理装置と同様にベクトル演算命令を用いて配列変数を初期化する場合における初期化処理のタイムチャートとを比較した結果を示している。尚、図4A及び4Bが示すタイムチャートにおける横軸は、初期化命令の実行が開始されてからの経過時間を、ベクトル演算処理装置10の動作サイクルTにより表している。但し動作サイクルTは、例えば、ベクトル演算処理装置10が動作するクロック周期等である。
4A and 4B are diagrams illustrating time charts of initialization processing of array variables by the
ベクトル演算処理装置10が一般的なベクトル演算処理装置と同様に、ベクトル演算命令(ベクトルストア命令)を用いて配列変数を初期化する場合、図4A及び4Bに示す通り、命令処理部13による、ベクトル制御部12に対して初期化命令を転送する処理が発生する。この場合、さらに加えて、ベクトル処理部12による、初期値「0」をベクトルレジスタ122へ展開する処理、及び、ベクトルレジスタ122へ展開したベクトルストアデータをアドレス制御部14へ送信する処理も発生する。
When the vector
ベクトル演算処理装置10は、ベクトル演算命令を用いてメモリ16に記憶された配列変数を初期化する場合、図4A及び4Bに示す通り、初期化命令の実行を開示してから28T後に配列変数の初期化を完了する。
When the vector
これに対して、ベクトル演算処理装置10は、スカラ演算命令を用いてメモリ16に記憶された配列変数を初期化する場合、図4A及び4Bに示す通り、初期化命令の実行を開示してから18T後に配列変数の初期化を完了する。即ち、本実施形態に係るベクトル演算処理装置10は、一般的なベクトル演算処理装置と同様にベクトル演算命令を用いて配列変数を初期化する場合と比較して、10T早く配列変数の初期化を完了することができる。
On the other hand, when the vector
本実施形態に係るベクトル演算処理装置10が、ベクトル演算命令を用いて配列変数を初期化する場合よりも早く配列変数の初期化を完了することができる理由は、以下の通りである。即ち、あるプログラムの実行において、配列変数に対する演算結果は、一般的に要素ごとに異なる値であるので、その演算結果をメモリに高速に格納する場合、要素ごとに異なる値を格納したベクトルレジスタを備えるベクトル制御部を用いたベクトル演算処理(ベクトルストア)を行う必要がある。しかしながら、その場合、上述した通り、ベクトル制御部を用いてベクトル演算処理を行うことに伴うオーバーヘッド(データを転送する処理やベクトルレジスタへデータを展開する処理など)が発生する。
The reason why the vector
本実施形態に係るベクトル演算処理装置10は、配列変数を初期化する場合、その配列変数に書き込む値(初期値)が全て同一の値(例えば「0」)であるという特性に着目した構成を備え、ベクトル制御部12を使用せずに、スカラ演算命令によって、その同一の値を配列変数の要素に一斉に書き込むメモリアクセスリクエストを連続的に発行する。即ち、ベクトル演算処理装置10は、上述したオーバーヘッドを発生させることなく、ベクトルストア命令によるメモリ16に対するアクセスと同様な連続的なアクセスを行うことによって、配列変数に対する初期化を行う。これにより、本実施形態に係るベクトル演算処理装置10は、配列変数を初期化する処理を高速に実行することができる。
The vector
また、配列変数が記憶されたメモリ領域に対して初期値「0」を一斉に書き込むストア命令による本実施形態に係るメモリアクセスは、配列変数の要素ごとに初期値「0」を書き込むベクトルストア命令によるメモリアクセスと比較して、演算コア11からメモリアクセス制御部15に送信されるメモリアクセスリクエストの数を少なくすることができる。これにより、本実施形態に係るベクトル演算処理装置10は、メモリアクセス制御部15において、メモリアクセスリクエストに関する輻輳が発生することを抑制できるので、配列変数を初期化する処理を高速に実行することができる。また、メモリアクセス制御部15において、メモリアクセスリクエストに関する輻輳が発生することを抑制する効果は、ベクトル演算処理装置10が備える演算コア11の数が多いほど大きくなることが期待できる。
In addition, the memory access according to the present embodiment by a store instruction that writes the initial value "0" to the memory area in which the array variables are stored all at once is a vector store instruction that writes the initial value "0" for each element of the array variables. It is possible to reduce the number of memory access requests sent from the arithmetic core 11 to the memory
また、本実施形態に係るベクトル演算処理装置10は、メモリ16に関して、本実施形態に特有の機能を追加していないので、汎用品などの既存の製品を使用可能である。即ち、本実施形態に係るベクトル演算処理装置10は、上述した配列変数を初期化する処理を高速に実行する構成を、低コストで実現することができる
<第2の実施形態>
図5は、本願発明の第2の実施形態に係るベクトル演算処理装置20の構成を示すブロック図である。
Further, since the vector
FIG. 5 is a block diagram showing the configuration of the vector
本実施形態に係るベクトル演算処理装置20は、ベクトル制御部21、判定部22、及び、実行部23を備える。
A vector
ベクトル制御部21は、メモリ24に記憶されている配列変数240に対する演算を、ベクトル演算命令210により実行することを制御する。
The
判定部22は、実行する命令200が、配列変数240に対する初期化を行う初期化命令220であるか否かを判定する。
The
実行部23は、初期化命令220を、ベクトル演算命令210を用いずに、ベクトル演算命令210と同様にメモリ24に対してアクセスするスカラ演算命令230に変換することによって実行する。
The
本実施形態に係るベクトル演算処理装置20は、配列変数を初期化する処理を高速に実行することができる。その理由は、ベクトル演算処理装置20は、配列変数240に対する初期化を行う初期化命令220を、ベクトル演算命令210を用いずに、ベクトル演算命令210と同様にメモリ24に対してアクセスするスカラ演算命令230に変換することによって実行するからである。
The vector
<ハードウェア構成例>
上述した各実施形態において図1、及び、図5に示したベクトル演算処理装置における各部は、専用のHW(HardWare)(電子回路)によって実現することができる。また、図1、及び、図5において、少なくとも、下記構成は、ソフトウェアプログラムの機能(処理)単位(ソフトウェアモジュール)と捉えることができる。
・ベクトル制御部12及び21、
・命令処理部13、
・判定部131及び22、
・アドレス制御部14、
・実行部23、
・メモリアクセス制御部15。
<Hardware configuration example>
Each unit in the vector arithmetic processing device shown in FIGS. 1 and 5 in each of the above-described embodiments can be realized by a dedicated HW (Hardware) (electronic circuit). In addition, in FIGS. 1 and 5, at least the following configuration can be regarded as a functional (processing) unit (software module) of the software program.
-
- Determining
-
・
• Memory
但し、これらの図面に示した各部の区分けは、説明の便宜上の構成であり、実装に際しては、様々な構成が想定され得る。この場合のハードウェア環境の一例を、図6を参照して説明する。 However, the division of each part shown in these drawings is a configuration for convenience of explanation, and various configurations can be assumed upon implementation. An example of the hardware environment in this case will be described with reference to FIG.
図6は、本願発明の各実施形態に係るベクトル演算処理装置を実行可能な情報処理装置900(コンピュータ)の構成を例示的に説明する図である。即ち、図6は、図1、及び、図5に示したベクトル演算処理装置を実現可能なコンピュータ(情報処理装置)の構成であって、上述した実施形態における各機能を実現可能なハードウェア環境を表す。 FIG. 6 is a diagram illustrating the configuration of an information processing device 900 (computer) capable of executing the vector arithmetic processing device according to each embodiment of the present invention. That is, FIG. 6 shows the configuration of a computer (information processing device) capable of realizing the vector arithmetic processing device shown in FIGS. represents
図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。
The
CPU (Central_Processing_Unit) 901,
ROM (Read_Only_Memory) 902,
RAM (Random_Access_Memory) 903,
- Hard disk (storage device) 904,
a
- Bus 906 (communication line),
A reader/
- An input/
即ち、上記構成要素を備える情報処理装置900は、これらの構成がバス906を介して接続された一般的なコンピュータである。情報処理装置900は、CPU901を複数備える場合もあれば、マルチコアにより構成されたCPU901を備える場合もある。
That is, the
そして、上述した実施形態を例に説明した本願発明は、図6に示した情報処理装置900に対して、次の機能を実現可能なコンピュータプログラムを供給する。その機能とは、その実施形態の説明において参照したブロック構成図(図1、及び、図5)における上述した構成、或いはフローチャート(図3)の機能である。本願発明は、その後、そのコンピュータプログラムを、当該ハードウェアのCPU901に読み出して解釈し実行することによって達成される。また、当該装置内に供給されたコンピュータプログラムは、読み書き可能な揮発性のメモリ(RAM903)、または、ROM902やハードディスク904等の不揮発性の記憶デバイスに格納すれば良い。
The present invention, which has been described with the above-described embodiment as an example, supplies a computer program capable of realizing the following functions to the
また、前記の場合において、当該ハードウェア内へのコンピュータプログラムの供給方法は、現在では一般的な手順を採用することができる。その手順としては、例えば、CD-ROM等の各種記録媒体907を介して当該装置内にインストールする方法や、インターネット等の通信回線を介して外部よりダウンロードする方法等がある。そして、このような場合において、本願発明は、係るコンピュータプログラムを構成するコード或いは、そのコードが格納された記録媒体907によって構成されると捉えることができる。
Also, in the above case, a general procedure can be employed at present as a method of supplying the computer program into the hardware. The procedure includes, for example, a method of installing in the device via
以上、上述した実施形態を模範的な例として本願発明を説明した。しかしながら、本願発明は、上述した実施形態には限定されない。即ち、本願発明は、本願発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。 The present invention has been described above using the above-described embodiments as exemplary examples. However, the present invention is not limited to the embodiments described above. That is, within the scope of the present invention, various aspects that can be understood by those skilled in the art can be applied to the present invention.
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 入出力インタフェース
REFERENCE SIGNS
902 ROMs
903 RAM
904 hard disk (storage device)
905
Claims (10)
実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定する判定手段と、
前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する実行手段と、
を備えるベクトル演算処理装置。 vector control means for controlling execution of operations on array variables stored in memory by vector operation instructions;
determining means for determining whether an instruction to be executed is an initialization instruction for initializing the array variable;
execution means for executing the initialization instruction by converting it into a scalar operation instruction that accesses the memory in the same manner as the vector operation instruction without using the vector operation instruction;
A vector processing unit comprising
請求項1に記載のベクトル演算処理装置。 The execution means converts the initialization instruction into a scalar operation instruction that accesses the memory while changing an access destination address for each operation cycle of the device itself.
2. The vector arithmetic processing device according to claim 1.
請求項1または請求項2に記載のベクトル演算処理装置。 The execution means includes a scalar register for storing write data to the memory by the scalar operation instruction, and stores the write data indicated by the initialization instruction in the scalar register.
3. The vector arithmetic processing device according to claim 1 or 2.
請求項1乃至請求項3のいずれか一項に記載のベクトル演算処理装置。 the execution means converts the initialization instruction into the scalar operation instruction including an access instruction for a plurality of access ports provided in the memory;
4. The vector arithmetic processing device according to any one of claims 1 to 3.
請求項4に記載のベクトル演算処理装置。 further comprising memory access control means for executing the initialization instruction converted into the scalar operation instruction by accessing a plurality of access ports provided in the memory;
5. The vector arithmetic processing device according to claim 4.
請求項1乃至請求項5のいずれか一項に記載のベクトル演算処理装置。 The determination means determines that the instruction to be executed is the initialization instruction when a value written to an element included in the array variable is a predetermined value in the instruction to be executed.
The vector arithmetic processing device according to any one of claims 1 to 5.
請求項1乃至請求項5のいずれか一項に記載のベクトル演算処理装置。 The determining means determines whether or not the instruction type indicated by the instruction to be executed indicates the initialization instruction.
The vector arithmetic processing device according to any one of claims 1 to 5.
請求項1乃至6のいずれか一項に記載のベクトル演算処理装置。 further comprising the memory;
The vector arithmetic processing device according to any one of claims 1 to 6.
メモリに記憶されている配列変数に対する演算を、ベクトル演算命令により実行することを制御し、
実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定し、
前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する、
ベクトル演算処理装置による配列変数初期化方法。 With the vector arithmetic processing unit,
controlling execution of operations on array variables stored in memory by vector operation instructions;
determining whether the instruction to be executed is an initialization instruction for initializing the array variable;
executing the initialization instruction by converting it into a scalar operation instruction that accesses the memory in the same manner as the vector operation instruction without using the vector operation instruction;
Array variable initialization method by vector arithmetic processing unit.
実行する命令が、前記配列変数に対する初期化を行う初期化命令であるか否かを判定する判定処理と、
前記初期化命令を、前記ベクトル演算命令を用いずに、前記ベクトル演算命令と同様に前記メモリに対してアクセスするスカラ演算命令に変換することによって実行する実行処理と、
をベクトル演算処理装置に実行させるためのベクトル演算処理装置による配列変数初期化プログラム。 Vector control processing for controlling execution of operations on array variables stored in memory by vector operation instructions;
Determination processing for determining whether an instruction to be executed is an initialization instruction for initializing the array variable;
execution processing executed by converting the initialization instruction into a scalar operation instruction that accesses the memory in the same manner as the vector operation instruction without using the vector operation instruction;
Array variable initialization program by the vector processing unit for causing the vector processing unit to execute
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019033557A JP7225904B2 (en) | 2019-02-27 | 2019-02-27 | Vector operation processing device, array variable initialization method by vector operation processing device, and array variable initialization program by vector operation processing device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019033557A JP7225904B2 (en) | 2019-02-27 | 2019-02-27 | Vector operation processing device, array variable initialization method by vector operation processing device, and array variable initialization program by vector operation processing device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2020140284A JP2020140284A (en) | 2020-09-03 |
JP7225904B2 true JP7225904B2 (en) | 2023-02-21 |
Family
ID=72265181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019033557A Active JP7225904B2 (en) | 2019-02-27 | 2019-02-27 | Vector operation processing device, array variable initialization method by vector operation processing device, and array variable initialization program by vector operation processing device |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7225904B2 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114489506B (en) * | 2022-01-21 | 2024-02-27 | 杭州海康存储科技有限公司 | Storage access control device, method and storage device |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000259610A (en) | 1999-03-04 | 2000-09-22 | Nec Kofu Ltd | Vector data processor and memory clear system for vector data processor in multiprocessor structure |
US20170083323A1 (en) | 2015-09-23 | 2017-03-23 | Qualcomm Incorporated | Speculative scalarization in vector processing |
JP2017117064A (en) | 2015-12-22 | 2017-06-29 | 日本電気株式会社 | Image processing unit, image processing method, and program |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01295366A (en) * | 1988-05-24 | 1989-11-29 | Hitachi Ltd | Vector processing device |
JPH02253473A (en) * | 1989-03-28 | 1990-10-12 | Hitachi Ltd | Vector processing system |
JP3706397B2 (en) * | 1994-06-06 | 2005-10-12 | シャープ株式会社 | Data-driven information processing device |
JPH10105412A (en) * | 1996-09-30 | 1998-04-24 | Hitachi Ltd | Object generation method for realizing efficient access to main storage |
-
2019
- 2019-02-27 JP JP2019033557A patent/JP7225904B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000259610A (en) | 1999-03-04 | 2000-09-22 | Nec Kofu Ltd | Vector data processor and memory clear system for vector data processor in multiprocessor structure |
US20170083323A1 (en) | 2015-09-23 | 2017-03-23 | Qualcomm Incorporated | Speculative scalarization in vector processing |
JP2017117064A (en) | 2015-12-22 | 2017-06-29 | 日本電気株式会社 | Image processing unit, image processing method, and program |
Also Published As
Publication number | Publication date |
---|---|
JP2020140284A (en) | 2020-09-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020527778A (en) | Register-based matrix multiplication | |
US5729714A (en) | Shared memory access method and apparatus with address translation | |
US20220237041A1 (en) | Parallel processing system performing in-memory processing | |
JP7088897B2 (en) | Data access methods, data access devices, equipment and storage media | |
JP2826028B2 (en) | Distributed memory processor system | |
JP2010500682A (en) | Flash memory access circuit | |
JP5119902B2 (en) | Dynamic reconfiguration support program, dynamic reconfiguration support method, dynamic reconfiguration circuit, dynamic reconfiguration support device, and dynamic reconfiguration system | |
JP7225904B2 (en) | Vector operation processing device, array variable initialization method by vector operation processing device, and array variable initialization program by vector operation processing device | |
JP6668993B2 (en) | Parallel processing device and communication method between nodes | |
US9697123B2 (en) | Information processing device, control method of information processing device and control program of information processing device | |
JP2007034392A (en) | Information processor and data processing method | |
JP4895262B2 (en) | Information processing apparatus, controller, and file reading method | |
JP6294732B2 (en) | Data transfer control device and memory built-in device | |
JP6481549B2 (en) | Information processing apparatus and information processing apparatus control method | |
US11625269B1 (en) | Scheduling for locality of reference to memory | |
JP2002007213A (en) | Cache memory control method and program processing method | |
CN116048770A (en) | Method and apparatus for process scheduling | |
JP2008210280A (en) | Semiconductor device and DMA controller | |
JPH0192851A (en) | Address space switching device | |
JP2006506727A (en) | VLIW with copy register file | |
JP7168731B1 (en) | MEMORY ACCESS CONTROL DEVICE, MEMORY ACCESS CONTROL METHOD, AND MEMORY ACCESS CONTROL PROGRAM | |
JP2006268168A (en) | Vector instruction management circuit, vector processor, vector instruction management method, vector processing method, vector instruction management program, and vector processing program | |
US20090265515A1 (en) | Information Processing Apparatus, Information Processing Method, and Computer Program | |
JP4440181B2 (en) | DMAC issue mechanism by streaming ID method | |
JP7003752B2 (en) | Data transfer device, data transfer method, program |
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 |