Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP7601434B2 - Integrated circuit, computer system and data processing method - Google Patents
[go: Go Back, main page]

JP7601434B2 - Integrated circuit, computer system and data processing method - Google Patents

Integrated circuit, computer system and data processing method Download PDF

Info

Publication number
JP7601434B2
JP7601434B2 JP2023034908A JP2023034908A JP7601434B2 JP 7601434 B2 JP7601434 B2 JP 7601434B2 JP 2023034908 A JP2023034908 A JP 2023034908A JP 2023034908 A JP2023034908 A JP 2023034908A JP 7601434 B2 JP7601434 B2 JP 7601434B2
Authority
JP
Japan
Prior art keywords
address
memory
register
load packet
address register
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
JP2023034908A
Other languages
Japanese (ja)
Other versions
JP2024126505A (en
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 Platforms Ltd
Original Assignee
NEC Platforms Ltd
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 Platforms Ltd filed Critical NEC Platforms Ltd
Priority to JP2023034908A priority Critical patent/JP7601434B2/en
Publication of JP2024126505A publication Critical patent/JP2024126505A/en
Application granted granted Critical
Publication of JP7601434B2 publication Critical patent/JP7601434B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)
  • Memory System (AREA)

Description

本願は、集積回路、コンピュータシステムおよびデータ処理方法、例えば、ベクトルギャザー命令に係るロードパケットのメモリシステムへの発行に関する。 This application relates to integrated circuits, computer systems and data processing methods, such as issuing load packets related to vector gather instructions to a memory system.

ベクトルギャザー命令とは、特許文献1に例示されているように、メモリシステム上のアドレスを含むアドレスポインタをベクトルレジスタ上にセットしておき、このアドレスの指すデータをベクトルレジスタに読み込むことを指示する命令である。ベクトルギャザー命令は、ベクトルロード命令または単にギャザー命令と呼ばれることがある。通例、ベクトルギャザー命令は、メモリアドレスから各1ワードのデータの読み出しを示すロードパケットに分解され、分解されたロードパケットはメモリシステムに対して発行される。この段階では、複数のメモリアドレス間の関連性は考慮されない。メモリシステムからは、ロードパケットに対するリプライパケットが1ワードのデータごとに返却される。 As exemplified in Patent Document 1, a vector gather instruction is an instruction that sets an address pointer containing an address in a memory system in a vector register, and instructs reading the data pointed to by this address into the vector register. A vector gather instruction is sometimes called a vector load instruction or simply a gather instruction. Typically, a vector gather instruction is broken down into load packets that indicate the reading of one word of data from a memory address, and the broken down load packets are issued to the memory system. At this stage, the relationship between multiple memory addresses is not taken into consideration. A reply packet to the load packet is returned from the memory system for each word of data.

近年では、メモリシステムにおいて、1ワードに限らず、一度に複数ワードのデータの読み書きを実行できるようにして高集積化ならびに高速化が図られている。メモリシステムの処理単位内に読み込み対象とする複数ワード分のデータを含めることで、1回の処理で複数ワードのデータを読み出すことができる。 In recent years, efforts have been made to increase the integration and speed of memory systems by making it possible to read and write multiple words of data at a time, rather than just one word. By including multiple words of data to be read within the processing unit of the memory system, it is possible to read multiple words of data in a single process.

特許第2716254号公報Patent No. 2716254 特許第5926754号公報Patent No. 5926754

高集積化に関し、複数のコアとメモリシステムをチップ内ネットワークで接続してなるマルチコアシステムが普及している。マルチコアシステムでは、チップ内ネットワークにおけるデータ伝送の頻出が性能低下を招く要因となりうる。そのため、ロードパケット数およびリプライパケット数を減少させてネットワークの混雑を回避または緩和することが望ましい。その場合、一度に複数ワードのデータをロードできるロードパケットを生成し、複数ワードのデータに対するリプライパケットを返却して、ロードパケット数とリプライパケット数を減少させることが考えられる。 To increase integration, multi-core systems in which multiple cores and memory systems are connected via an in-chip network are becoming more common. In multi-core systems, frequent data transmissions in the in-chip network can lead to performance degradation. For this reason, it is desirable to reduce the number of load packets and reply packets to avoid or alleviate network congestion. In this case, it is possible to generate load packets that can load multiple words of data at once, and return reply packets for the multiple words of data, thereby reducing the number of load packets and reply packets.

例えば、特許文献2には、限定範囲ベクトルメモリアクセス命令を用いて、複数ワードのデータをロードする手法について記載されている。限定範囲ベクトルメモリアクセス命令は、メモリシステムの限定範囲を指定する命令と、限定範囲における複数のインデックスを示すベクトルギャザー命令が指示される。しかしながら、ベクトルレジスタにおけるメモリシステム上のメモリアドレスは、命令の実行時に計算させる。そのため、命令の実行前にメモリアドレスがメモリシステムの限定範囲に含まれているか否かを判定し、限定範囲を指定する命令と、限定範囲内の複数のインデックスを示すベクトルギャザー命令を生成することができない。 For example, Patent Document 2 describes a method for loading multiple words of data using a limited-range vector memory access instruction. The limited-range vector memory access instruction specifies an instruction that specifies a limited range of the memory system and a vector gather instruction that indicates multiple indexes in the limited range. However, the memory address on the memory system in the vector register is calculated when the instruction is executed. Therefore, it is not possible to determine whether the memory address is included in the limited range of the memory system before the instruction is executed, and to generate an instruction that specifies the limited range and a vector gather instruction that indicates multiple indexes within the limited range.

本願は、上述の課題を解決すべくなされたものであり、メモリシステムを備えるコンピュータシステムの性能向上を実現することを主目的としている。 This application has been made to solve the above-mentioned problems, and its main objective is to improve the performance of a computer system equipped with a memory system.

上記目的を達成するために、本願の第1態様に係る演算回路は、取得されるベクトルギャザー命令で指示される複数のメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位がメモリシステムに存在するか否かを判定し、前記処理単位が存在する場合、当該処理単位における前記要素領域ごとの要素番号とオフセットを示すロードパケットを前記メモリシステムに出力し、前記メモリシステムから入力されるリプライパケットの前記要素番号に対応して含まれるデータ要素をベクトルレジスタに書き込み、前記メモリアドレスを格納するアドレスレジスタを備え、使用状態を未使用とするアドレスレジスタに格納されるメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定し、前記ロードパケットを出力するとき、前記複数の要素領域に対応するメモリアドレスが記憶されているアドレスレジスタの使用状態を使用済に変更する In order to achieve the above object, an arithmetic circuit according to a first aspect of the present application determines whether a processing unit including a plurality of element areas corresponding to a plurality of memory addresses indicated by an acquired vector gather instruction exists in a memory system, and if the processing unit exists, outputs a load packet to the memory system indicating an element number and offset for each of the element areas in the processing unit, writes a data element included corresponding to the element number of a reply packet input from the memory system to a vector register, and is provided with an address register for storing the memory address, determines whether a processing unit including a plurality of element areas corresponding to a memory address stored in an address register whose usage state is unused exists, and when outputting the load packet, changes the usage state of the address register in which the memory addresses corresponding to the plurality of element areas are stored to used .

本願の第2態様に係る演算回路におけるデータ処理方法は、前記演算回路は、メモリアドレスを格納するアドレスレジスタを備え、前記演算回路が、取得されるベクトルギャザー命令で指示される複数の取得されるメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位がメモリシステムに存在するか否かを判定し、前記処理単位が存在する場合、当該処理単位における前記要素領域ごとの要素番号とオフセットを示すロードパケットを前記メモリシステムに出力し、前記メモリシステムから入力されるリプライパケットの前記要素番号に対応して含まれるデータ要素をベクトルレジスタに書き込み、使用状態を未使用とするアドレスレジスタに格納されるメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定し、前記ロードパケットを出力するとき、前記複数の要素領域に対応するメモリアドレスが記憶されているアドレスレジスタの使用状態を使用済に変更する A data processing method in an arithmetic circuit according to a second aspect of the present application comprises the arithmetic circuit comprising an address register for storing a memory address, the arithmetic circuit determining whether or not a processing unit including a plurality of element areas each corresponding to a plurality of acquired memory addresses indicated by an acquired vector gather instruction exists in a memory system, and if the processing unit exists, the arithmetic circuit outputs a load packet to the memory system indicating an element number and an offset for each of the element areas in the processing unit, writes a data element included corresponding to the element number of a reply packet input from the memory system to a vector register, determines whether or not a processing unit including a plurality of element areas corresponding to a memory address stored in an address register whose usage state is unused exists, and when outputting the load packet, changes the usage state of the address register in which the memory addresses corresponding to the plurality of element areas are stored to used .

本願の一態様によれば、コンピュータシステムの性能向上を実現することができる。 According to one aspect of the present application, it is possible to improve the performance of a computer system.

本実施形態に係るコンピュータシステムの構成例を示す概略ブロック図である。FIG. 1 is a schematic block diagram showing an example of the configuration of a computer system according to an embodiment of the present invention. 本実施形態に係るベクトルギャザー命令の動作例を示す説明図である。11 is an explanatory diagram showing an example of the operation of a vector gather instruction according to the embodiment; FIG. 本実施形態に係る処理単位の構成例を示す構成図である。FIG. 2 is a configuration diagram showing an example of the configuration of a processing unit according to the embodiment; 本実施形態に係るメモリアドレスの構成例を示す構成図である。FIG. 2 is a diagram showing an example of a memory address configuration according to the embodiment; 本実施形態に係るコアの構成例を示す概略ブロック図である。FIG. 2 is a schematic block diagram showing an example of the configuration of a core according to the embodiment. 本実施形態に係るベクトルユニットの構成例を示す概略ブロック図である。4 is a schematic block diagram showing an example of the configuration of a vector unit according to the present embodiment. FIG. 本実施形態に係るロードパケット生成回路の構成例を示す概略ブロック図である。2 is a schematic block diagram showing a configuration example of a load packet generating circuit according to the present embodiment; FIG. 本実施形態に係る複数要素検出回路の構成例を示す構成図である。FIG. 2 is a diagram showing a configuration example of a multiple element detection circuit according to the present embodiment. 本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第一例を示す図である。13 is a diagram showing a first example of a rule for determining a data element to be read by a load packet according to the embodiment; FIG. 本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第二例を示す図である。FIG. 13 is a diagram showing a second example of a rule for determining a data element to be read by a load packet according to the embodiment; 本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第三例を示す図である。FIG. 13 is a diagram showing a third example of a rule for determining a data element to be read by a load packet according to the embodiment; 本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第四例を示す図である。FIG. 13 is a diagram showing a fourth example of a rule for determining a data element to be read by a load packet according to the embodiment; 本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第五例を示す図である。FIG. 13 is a diagram showing a fifth example of a rule for determining a data element to be read by a load packet according to the embodiment; 本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第六例を示す図である。FIG. 13 is a diagram showing a sixth example of a rule for determining a data element to be read by a load packet according to the embodiment; 本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第七例を示す図である。FIG. 13 is a diagram showing a seventh example of a rule for determining a data element to be read by a load packet according to the embodiment; 本実施形態に係るロードパケットによる読み出し対象とするデータ要素の判定ルールの第八例を示す図である。FIG. 13 is a diagram showing an eighth example of a rule for determining a data element to be read by a load packet according to the embodiment; 本実施形態に係るロードパケットの一例を示す構成図である。11 is a diagram illustrating an example of a configuration of a load packet according to the embodiment. FIG. 本実施形態に係るリプライパケットの一例を示す構成図である。11 is a diagram illustrating an example of a reply packet according to the embodiment of the present invention. FIG. 本実施形態に係るベクトルギャザー動作の動作例を示す説明図である。11 is an explanatory diagram showing an example of a vector gather operation according to the embodiment; FIG. 本実施形態に係るベクトルユニットからロードパケット生成回路へのメモリアドレスの送信例を示す説明図である。11 is an explanatory diagram showing an example of transmission of a memory address from a vector unit to a load packet generation circuit according to the embodiment; FIG. 本実施形態の最小構成例に係る演算回路を例示する概略ブロック図である。1 is a schematic block diagram illustrating an arithmetic circuit according to a minimum configuration example of the present embodiment.

以下、本願の実施形態について、図面を参照して説明する。図1は、本実施形態に係るコンピュータシステムの構成例を示す概略ブロック図である。本実施形態に係るコンピュータシステムは、複数のコア101とメモリシステム103とを備える。個々のコア101は、それぞれチップ内ネットワーク102を経由して各種のデータを伝送可能にメモリシステム103と有線で接続される。本実施形態では、コア101の数は1個でもよいし、2個以上のいずれの個数であってもよい。個々のコア101は、プロセッサコアに相当する。コア101ごとに独立な演算処理がなされうる。個々のコア101は、命令列の解釈、実行などを実行するための論理回路を備える。 Hereinafter, an embodiment of the present application will be described with reference to the drawings. FIG. 1 is a schematic block diagram showing an example of the configuration of a computer system according to this embodiment. The computer system according to this embodiment includes a plurality of cores 101 and a memory system 103. Each of the cores 101 is connected to the memory system 103 by wire so that various data can be transmitted via an in-chip network 102. In this embodiment, the number of cores 101 may be one, or may be two or more. Each of the cores 101 corresponds to a processor core. Each of the cores 101 can perform independent arithmetic processing. Each of the cores 101 includes a logic circuit for interpreting and executing an instruction sequence.

次に、本実施形態に係るコア501の構成例について説明する。図5は、本実施形態に係るコア501の構成例を示す概略ブロック図である。コア501の構成は、図1に例示される個々のコア101の構成と同様である。コア501は、スカラーユニット502、ベクトルユニット503およびロードパケット生成回路505を含んで構成される。
スカラーユニット502は、自部に提供される各種の命令をデコードし、各種のスカラ演算を実行する演算回路である。
ベクトルユニット503は、各種のベクトル演算を行う演算回路である。
ロードパケット生成回路505は、データの読み出しの指示を通知するためのロードパケットを生成する。ロードパケット生成回路505は、生成したロードパケットをメモリシステム504に出力する。
Next, an example of the configuration of the core 501 according to this embodiment will be described. Fig. 5 is a schematic block diagram showing an example of the configuration of the core 501 according to this embodiment. The configuration of the core 501 is similar to the configuration of each core 101 illustrated in Fig. 1. The core 501 includes a scalar unit 502, a vector unit 503, and a load packet generation circuit 505.
The scalar unit 502 is an arithmetic circuit that decodes various instructions provided to it and executes various scalar operations.
The vector unit 503 is an arithmetic circuit that performs various vector operations.
The load packet generating circuit 505 generates a load packet for notifying an instruction to read data, and outputs the generated load packet to the memory system 504.

次に、本実施形態に係るベクトルユニット601について説明する。図6は、本実施形態に係るベクトルユニット601の構成例を示す概略ブロック図である。ベクトルユニット601の構成は、図5に例示されるベクトルユニット503の構成と同様である。
ベクトルユニット601は、ベクトルレジスタファイル602と演算器603を含んで構成される。ベクトルレジスタファイル602は、1個または複数個のベクトルレジスタを備える。個々のベクトルレジスタは、複数の要素レジスタを備える。ベクトルレジスタファイル602におけるベクトルレジスタの個数は1個または2個以上であれば、何個であってもよい。個々のベクトルレジスタにおける要素レジスタの個数は、2個以上であれば何個であってもよい。以下の説明では、ベクトルレジスタファイル602におけるベクトルレジスタの個数を64個とし、個々のベクトルレジスタにおける要素レジスタの個数を64個とする場合を例示する。ロードパケット生成回路701は、個々のベクトルレジスタから8個の要素レジスタにそれぞれ格納されたメモリアドレスを同時に読み出し可能と仮定する。
Next, the vector unit 601 according to this embodiment will be described. Fig. 6 is a schematic block diagram showing an example of the configuration of the vector unit 601 according to this embodiment. The configuration of the vector unit 601 is similar to the configuration of the vector unit 503 exemplified in Fig. 5.
The vector unit 601 includes a vector register file 602 and an arithmetic unit 603. The vector register file 602 includes one or more vector registers. Each vector register includes multiple element registers. The number of vector registers in the vector register file 602 may be any number as long as it is one or more than one. The number of element registers in each vector register may be any number as long as it is more than one. In the following description, a case is exemplified in which the number of vector registers in the vector register file 602 is 64, and the number of element registers in each vector register is 64. It is assumed that the load packet generation circuit 701 can simultaneously read out memory addresses stored in each of the eight element registers from each vector register.

次に、本実施形態に係るロードパケット生成回路701について説明する。図7は、本実施形態に係るロードパケット生成回路701の構成例を示す概略ブロック図である。ロードパケット生成回路701の構成は、図5に例示されるロードパケット生成回路505の構成と同様である。
ロードパケット生成回路701は、複数要素検出回路702とロードパケット発行回路703を含んで構成される。複数要素検出回路702は、ベクトルレジスタから読み出される8個のメモリアドレスを特定し、メモリシステムにおいて特定したメモリアドレスで指示される要素領域を複数個含む処理単位の有無を検出する。
Next, the load packet generating circuit 701 according to this embodiment will be described. Fig. 7 is a schematic block diagram showing an example of the configuration of the load packet generating circuit 701 according to this embodiment. The configuration of the load packet generating circuit 701 is similar to the configuration of the load packet generating circuit 505 exemplified in Fig. 5.
The load packet generation circuit 701 includes a multiple element detection circuit 702 and a load packet issuance circuit 703. The multiple element detection circuit 702 identifies eight memory addresses read from the vector register, and detects the presence or absence of a processing unit including multiple element areas indicated by the identified memory addresses in the memory system.

ロードパケット発行回路703は、複数要素検出回路702による検出結果として、複数個のデータ要素の読み出し、または、1個のデータ要素の読み出しを指示するためのロードパケットを生成する。ロードパケット生成回路701は、生成したロードパケットをメモリシステム504に発行する。なお、以下の説明では、ロードパケット生成回路701は、同時に2個または1個のデータ要素の読み出しを指示する場合を主に例示するが、これには限られない。ロードパケット生成回路701は、同一の処理単位内における3個以上N個(後述)以下のデータ要素の存在を判定したことに応じて、3個以上N個以下のデータ要素の読み出しを指示可能としてもよい。 The load packet issuing circuit 703 generates a load packet to instruct the reading of multiple data elements or the reading of one data element as a result of detection by the multiple element detection circuit 702. The load packet generating circuit 701 issues the generated load packet to the memory system 504. Note that in the following description, the load packet generating circuit 701 mainly exemplifies a case in which it instructs the reading of two or one data element at the same time, but is not limited to this. The load packet generating circuit 701 may also be able to instruct the reading of 3 to N data elements in response to determining the presence of 3 to N data elements (described below) in the same processing unit.

次に、本実施形態に係る複数要素検出回路702について説明する。図8は、本実施形態に係る複数要素検出回路702の構成例を示す構成図である。複数要素検出回路702は、N個のアドレスレジスタA801~H808と、N(N-1)/2個の比較器809~816を備える。Nは、読出アドレス数に相当する自然数である。読出アドレス数は、複数要素検出回路702がベクトルレジスタから同時に読出が指示されるアドレスの数である。図8の例では、読出アドレス数Nは8個である。読出アドレス数は、8個に限られず、2個以上7個以下でもよいし、9個以上であってもよい。 Next, the multiple element detection circuit 702 according to this embodiment will be described. FIG. 8 is a configuration diagram showing an example of the configuration of the multiple element detection circuit 702 according to this embodiment. The multiple element detection circuit 702 includes N address registers A801 to H808 and N(N-1)/2 comparators 809 to 816. N is a natural number corresponding to the number of read addresses. The number of read addresses is the number of addresses that the multiple element detection circuit 702 is instructed to simultaneously read from the vector register. In the example of FIG. 8, the number of read addresses N is 8. The number of read addresses is not limited to 8, and may be 2 to 7 or less, or 9 or more.

複数要素検出回路702は、ベクトルレジスタから読み出した8個のメモリアドレスを、それぞれアドレスレジスタA801~H808に書き込む。複数要素検出回路702は、8個のアドレスレジスタA801~H808のそれぞれに格納されたメモリアドレスに基づいて、それぞれのメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定する。図8の例では、アドレスレジスタA801~H808のうち、いずれか2個のそれぞれに格納されたメモリアドレスに対応する要素領域を含む処理単位の存否が判定される。ここで、21個((8-1)×(8-2)/2)の比較器は、それぞれ2個のメモリアドレスからなるメモリアドレスの組ごとに、それぞれの上位アドレスを比較する。複数要素検出回路702は、それぞれの上位アドレスが同一か否かにより、2個のメモリアドレスのそれぞれに対応する要素領域が同一の処理単位に属するか否かを判定することができる。同一と判定された上位アドレスにより、その処理単位が指示される。 The multiple element detection circuit 702 writes the eight memory addresses read from the vector register to the address registers A801 to H808. The multiple element detection circuit 702 determines whether or not a processing unit containing multiple element areas corresponding to each memory address exists based on the memory addresses stored in each of the eight address registers A801 to H808. In the example of FIG. 8, the presence or absence of a processing unit containing element areas corresponding to memory addresses stored in any two of the address registers A801 to H808 is determined. Here, 21 ((8-1) x (8-2)/2) comparators compare the upper addresses of each pair of memory addresses, each consisting of two memory addresses. The multiple element detection circuit 702 can determine whether or not the element areas corresponding to each of the two memory addresses belong to the same processing unit depending on whether or not the upper addresses are the same. The processing unit is specified by the upper addresses determined to be the same.

なお、処理単位とは、メモリシステム504において一度にデータを読み書き可能とする単位を指す。本実施形態では、1個の処理単位において複数のデータ要素のアクセスを可能とする。図3の例では、メモリシステム504の処理単位301は、64バイトの記憶領域を占める。処理単位301は、8ワードに区分され、各ワードは8バイトの記憶領域を占める。各ワードの領域は、それぞれオフセットで指示される。データ要素A 302は、オフセット0x8で指示される。データ要素B 303は、オフセット0x20で指示される。 Note that a processing unit refers to a unit in which data can be read and written at one time in memory system 504. In this embodiment, one processing unit allows access to multiple data elements. In the example of FIG. 3, processing unit 301 in memory system 504 occupies a 64-byte memory area. Processing unit 301 is divided into 8 words, and each word occupies an 8-byte memory area. The area of each word is indicated by an offset. Data element A 302 is indicated by offset 0x8. Data element B 303 is indicated by offset 0x20.

上位アドレスとは、メモリアドレスを構成する複数ビットの一部をなす上位ビットで表される部分を指す。メモリアドレスの他の一部をなす下位ビットで表される部分がオフセットに相当する。図4の例では、メモリアドレス401は、64ビットで表される。上位アドレス403は、58ビットで表され、メモリシステムの処理単位を示す。オフセット402は、6ビットで表され、1個の処理単位内の個々の要素領域を指す。従って、複数のメモリアドレス間で上位アドレス403が一致することは、それぞれのメモリアドレスに係る要素領域が、同一の処理単位に存在することを意味する。 The upper address refers to a portion of the multiple bits that make up a memory address, represented by the upper bits. The other portion of the memory address, represented by the lower bits, corresponds to the offset. In the example of FIG. 4, memory address 401 is represented by 64 bits. Upper address 403 is represented by 58 bits, and indicates the processing unit of the memory system. Offset 402 is represented by 6 bits, and indicates an individual element area within one processing unit. Therefore, the fact that upper addresses 403 match between multiple memory addresses means that the element areas associated with each memory address exist in the same processing unit.

次に、本実施形態に係るロードパケットの一例について説明する。ロードパケットは、ロードパケット発行回路703によりメモリシステム504に対して発行される。図17は、本実施形態に係るロードパケットの一例を示す構成図である。オフセットもしくは要素番号の数(以下、「要素数」と呼ぶことがある)は、それぞれメモリアドレスの数に相当する。図17の例では、いずれも2個である。 Next, an example of a load packet according to this embodiment will be described. The load packet is issued to the memory system 504 by the load packet issuing circuit 703. FIG. 17 is a configuration diagram showing an example of a load packet according to this embodiment. The offset or the number of element numbers (hereinafter sometimes referred to as the "number of elements") each corresponds to the number of memory addresses. In the example of FIG. 17, both are two.

ロードパケット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に対する応答とするリプライパケットに含まれる。 Load packet 1701 includes upper address 1702, offset 0 1703, offset 1 1704, element number 0 1705, element number 1 1705, type 1707, and vector register number 1708. Type 1707 indicates the number of valid elements. In this example, the number of elements is specified as two or one. Vector register number 1708 indicates the vector register from which the memory address is obtained. In other words, load packet 1701 includes a command to instruct memory system 504 to read data elements from element areas specified by two offsets 0 and 1, respectively, of the processing unit specified by upper address 1702. Element numbers 0 and 1 correspond to two data elements or element areas, respectively, and are included in a reply packet that is a response to load packet 1701.

次に、本実施形態に係るリプライパケットの一例について説明する。リプライパケットは、メモリシステム504によりベクトルユニット503に返送される。図18は、本実施形態に係るリプライパケットの一例を示す構成図である。図18の例では、要素数は2個である。 Next, an example of a reply packet according to this embodiment will be described. The reply packet is returned to the vector unit 503 by the memory system 504. FIG. 18 is a configuration diagram showing an example of a reply packet according to this embodiment. In the example of FIG. 18, the number of elements is two.

リプライパケット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が無効であることが示される。 Reply packet 1801 is configured by storing element number 0 1802, element number 1 1803, data 0 1804, data 1 1805, and vector register number 1806. Data 0 1804 and data 1 1805 correspond to element number 0 1802 and element number 1 1803, respectively, and are element data stored in the element area indicated by offset 0 1703 and offset 1 1704 of the processing unit indicated by upper address 1702. Type 1807 indicates the number of valid elements. For example, when type 1807 is set to 2, it is indicated that element number 0 1802, element number 1 1803, data 0 1804, and data 1 1805 are all valid. For example, if type 1807 is set to 1, it indicates that the first pair of element number 0 1802 and data 0 1804 is valid, and the subsequent pair of element number 1 1803 and data 1 1805 is invalid.

次に本実施形態に係るベクトルギャザー命令に対する動作例について説明する。図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への書き込みが指示される。 Next, an example of the operation of the vector gather instruction according to this embodiment will be described. FIG. 2 is an explanatory diagram showing an example of the operation of the vector gather instruction according to this embodiment. The vector gather instruction is an instruction to read multiple data elements from data stored in a memory system and write the read data elements to a vector register. In the example of FIG. 2, n memory addresses A0 202, A1 203, A2 204, ..., An-1 206 are stored in vector register V0 201. The vector gather instruction instructs reading element data D0 208, D1 209, D2 210, ..., Dn-1 212 stored in each of the element areas specified by the n memory addresses of memory system 207, and writing the read element data to vector register V1 213.

図19は、本実施形態に係るベクトルギャザー動作の動作例を示す説明図である。次の説明では、ベクトルギャザー動作は、図5に例示されるコア501により実行される場合を例とする。スカラーユニット1901は、自部に提供される命令をデコードする。デコードした命令がベクトルギャザー命令であるとき、スカラーユニット1901は、当該ベクトルギャザー命令に基づいてベクトルギャザー指示1904、1905を生成する。スカラーユニット1901は、生成したベクトルギャザー指示1904、1905を、それぞれベクトルユニット1902とロードパケット生成回路1903に対して発行する。ベクトルギャザー指示1904は、データの読み取り先を示すメモリアドレスが格納されているベクトルレジスタのベクトルレジスタ番号と、ギャザー結果を格納するベクトルレジスタ、即ち、データの書き込み先とするベクトルレジスタのベクトルレジスタ番号を示す。 Figure 19 is an explanatory diagram showing an example of the vector gather operation according to this embodiment. In the following explanation, the vector gather operation will be performed by the core 501 illustrated in Figure 5 as an example. The scalar unit 1901 decodes an instruction provided to itself. When the decoded instruction is a vector gather instruction, the scalar unit 1901 generates vector gather instructions 1904 and 1905 based on the vector gather instruction. The scalar unit 1901 issues the generated vector gather instructions 1904 and 1905 to the vector unit 1902 and the load packet generation circuit 1903, respectively. The vector gather instruction 1904 indicates the vector register number of the vector register in which the memory address indicating the data read destination is stored, and the vector register in which the gather result is stored, i.e., the vector register number of the vector register to which the data is written.

ベクトルユニット1902には、スカラーユニット1901からベクトルギャザー指示1904が入力される。ベクトルユニット1902は、ベクトルギャザー指示1904のベクトルレジスタ番号で指示されるベクトルレジスタに格納されているメモリアドレス1906を読み出す。ベクトルユニット1902は、読み出したメモリアドレス1906をロードパケット生成回路1903に送付する。図19の例では、一度に8個のメモリアドレス1906が読み出され、読み出されたメモリアドレス1906がロードパケット生成回路1903に送付される。 A vector gather instruction 1904 is input to the vector unit 1902 from the scalar unit 1901. The vector unit 1902 reads a memory address 1906 stored in a vector register specified by the vector register number of the vector gather instruction 1904. The vector unit 1902 sends the read memory address 1906 to the load packet generation circuit 1903. In the example of FIG. 19, eight memory addresses 1906 are read at a time, and the read memory addresses 1906 are sent to the load packet generation circuit 1903.

ロードパケット生成回路1903には、ベクトルユニット1902からメモリアドレス1906が送付される。ロードパケット生成回路1903は、メモリアドレス1906に基づいてロードパケット1908を生成する。ロードパケット生成回路1903は、ベクトルレジスタから読み出される8個のメモリアドレス1906を特定し、メモリシステム1907において特定したメモリアドレス1906により指示される要素領域を複数個含む処理単位の有無を検出する。ロードパケット発行回路703は、検出結果として、一度に複数個のデータ要素の読み出し、または、1個のデータ要素の読み出しを指示するためのロードパケット1908を生成する。ロードパケット1908のデータ構成は、図17に例示されるロードパケット1701のデータ構成と同様となりうる。ロードパケット生成回路1903は、生成したロードパケット1908をメモリシステム1907に送付する。 The load packet generation circuit 1903 receives a memory address 1906 from the vector unit 1902. The load packet generation circuit 1903 generates a load packet 1908 based on the memory address 1906. The load packet generation circuit 1903 identifies the eight memory addresses 1906 read from the vector register, and detects the presence or absence of a processing unit including multiple element areas indicated by the identified memory addresses 1906 in the memory system 1907. As a result of the detection, the load packet issue circuit 703 generates a load packet 1908 for instructing the reading of multiple data elements at once or the reading of one data element. The data structure of the load packet 1908 can be the same as the data structure of the load packet 1701 illustrated in FIG. 17. The load packet generation circuit 1903 sends the generated load packet 1908 to the memory system 1907.

メモリシステム1907には、ロードパケット生成回路1903からロードパケット1908が入力される。メモリシステム1907は、ロードパケット1908で通知されるオフセットで指示される要素領域からデータ要素を読み出す。メモリシステム1907は、読み出したデータ要素と、オフセットに対応付けられた要素番号とを含むリプライパケット1909を生成する。リプライパケット1909のデータ構成は、図18に例示されるリプライパケット1801のデータ構成と同様となりうる。メモリシステム1907は、生成したリプライパケット1909をロードパケット1908に対する応答としてベクトルユニット1902に返信する。
ベクトルユニット1902は、メモリシステム1907から受信したリプライパケット1909に格納されるデータ要素をベクトルレジスタに書き込む。
A load packet 1908 is input to the memory system 1907 from the load packet generation circuit 1903. The memory system 1907 reads a data element from an element area specified by the offset notified in the load packet 1908. The memory system 1907 generates a reply packet 1909 including the read data element and an element number associated with the offset. The data structure of the reply packet 1909 can be similar to the data structure of the reply packet 1801 illustrated in FIG. 18. The memory system 1907 returns the generated reply packet 1909 to the vector unit 1902 as a response to the load packet 1908.
The vector unit 1902 writes the data elements stored in the reply packet 1909 received from the memory system 1907 into the vector register.

次に、ベクトルレジスタへの書き込み処理の例に関して、より詳細に説明する。
図20は、本実施形態に係るベクトルユニット1902からロードパケット生成回路1903へのメモリアドレスの送信例を示す説明図である。ベクトルユニット1902は、ベクトルレジスタファイル2001のベクトルレジスタから、ベクトルギャザー指示で指示されるメモリアドレスが格納されている要素領域からアドレス要素を読み出す。アドレス要素は、メモリアドレスの要素をなすデータ素片である。ベクトルユニット1902は、読み出したアドレス要素をロードパケット生成回路1903に送信する。図20の例では、64個のアドレス要素0 2002~63 2003が、ベクトルレジスタから8要素ずつ順次読み出されロードパケット生成回路1903に送信される。
An example of a write operation to a vector register will now be described in more detail.
20 is an explanatory diagram showing an example of transmission of a memory address from the vector unit 1902 to the load packet generation circuit 1903 according to this embodiment. The vector unit 1902 reads an address element from an element area in which a memory address specified by a vector gather instruction is stored, from a vector register in the vector register file 2001. An address element is a data fragment that constitutes an element of a memory address. The vector unit 1902 transmits the read address element to the load packet generation circuit 1903. In the example of FIG. 20, 64 address elements 0 2002 to 63 2003 are sequentially read from the vector register in groups of eight elements and transmitted to the load packet generation circuit 1903.

ロードパケット生成回路1903は、8要素ごとにベクトルユニット1902から入力されるアドレス要素をメモリアドレスとしてアドレスレジスタA 2004~H 2005にそれぞれ書き込む。なお、ロードパケット生成回路1903は、アドレスレジスタの使用状態を示す使用状態情報を保持してもよい。ロードパケット生成回路1903は、例えば、メモリアドレスを書き込むごとに、書き込み先のアドレスレジスタに係る使用状態情報に示される使用状態を未使用にリセットする。ロードパケット生成回路1903は、メモリアドレスを格納しているアドレスレジスタのうち、ロードパケットの生成に用いられるメモリアドレスを格納しているアドレスレジスタの使用状態情報に示される使用状態を使用済に設定してもよい。 The load packet generation circuit 1903 writes the address elements input from the vector unit 1902 in groups of eight elements as memory addresses to address registers A 2004 to H 2005. The load packet generation circuit 1903 may hold usage status information indicating the usage status of the address registers. For example, the load packet generation circuit 1903 resets the usage status indicated in the usage status information related to the write destination address register to unused each time it writes a memory address. The load packet generation circuit 1903 may set the usage status indicated in the usage status information of the address register that stores the memory address used to generate the load packet to used, among the address registers that store memory addresses.

ロードパケット生成回路1903の複数要素検出回路(図7)は、アドレスレジスタA 2004~H 2005に格納された8個のメモリアドレスのうち、2個のメモリアドレスの組ごとに、それぞれのメモリアドレスにより指示される要素領域が同一処理単位に属すか否かを検出する。図9~16は、ロードパケット生成回路1903により、個々の比較器による比較結果に基づき、1個のロードパケットによる読み出し対象とするデータ要素の判定に用いる判定ルールを例示する。この判定において、2個のデータ要素を読み出すか、1個のデータ要素を読み出すかが判定される。ロードパケット生成回路1903は、図9~16のそれぞれに例示される判定ルールに基づく判定を実行し、それぞれの判定結果に基づいてロードパケットを生成し、生成したロードパケットをメモリシステム1907に送信する。 The multiple element detection circuit (FIG. 7) of the load packet generation circuit 1903 detects whether the element areas indicated by each pair of two memory addresses out of the eight memory addresses stored in the address registers A 2004-H 2005 belong to the same processing unit. FIGS. 9-16 illustrate examples of the determination rules used by the load packet generation circuit 1903 to determine the data elements to be read by one load packet based on the comparison results of each comparator. In this determination, it is determined whether two data elements or one data element is to be read. The load packet generation circuit 1903 executes a determination based on the determination rules illustrated in each of FIGS. 9-16, generates a load packet based on each determination result, and transmits the generated load packet to the memory system 1907.

図9に例示される判定ルールは、アドレスレジスタAに格納されたメモリアドレスとアドレスレジスタB~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、比較結果に応じて次の処理(A1)~(A8)を指示する。 The judgment rule illustrated in FIG. 9 is used to generate a load packet based on the result of a comparison between the memory address stored in address register A and one of the memory addresses stored in address registers B to H. The judgment rule instructs the next process (A1) to (A8) depending on the comparison result.

(A1)アドレスレジスタAの上位アドレスとアドレスレジスタBの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタBのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタBの使用状態情報に示される使用状態を使用済みに変更する。
(A2)アドレスレジスタAの上位アドレスとアドレスレジスタCの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタCのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタCの使用状態情報に示される使用状態を使用済に変更する。
(A1) When the upper address of address register A and the upper address of address register B match, a load packet is generated to obtain a data element stored in the memory address stored in each of address register A and address register B, and the usage status indicated in the usage status information of address register B is changed to used.
(A2) When the upper address of address register A and the upper address of address register C match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register A and address register C, respectively, and the usage status indicated in the usage status information of address register C is changed to used.

(A3)アドレスレジスタAの上位アドレスとアドレスレジスタDの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタDのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタDの使用状態情報に示される使用状態を使用済みに変更する。
(A4)アドレスレジスタAの上位アドレスとアドレスレジスタEの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタEのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタEの使用状態情報に示される使用状態を使用済に変更する。
(A3) When the upper address of address register A and the upper address of address register D match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register A and address register D, respectively, and the usage status indicated in the usage status information of address register D is changed to used.
(A4) When the upper address of address register A and the upper address of address register E match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register A and address register E, respectively, and the usage status indicated in the usage status information of address register E is changed to used.

(A5)アドレスレジスタAの上位アドレスとアドレスレジスタFの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタFのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタFの使用状態情報に示される使用状態を使用済に変更する。
(A6)アドレスレジスタAの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
(A5) When the upper address of address register A and the upper address of address register F match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register A and address register F, respectively, and the usage status indicated in the usage status information of address register F is changed to used.
(A6) When the upper address of address register A and the upper address of address register G match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register A and address register G, respectively, and the usage status indicated in the usage status information of address register G is changed to used.

(A7)アドレスレジスタAの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタAとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(A8)アドレスレジスタAの上位アドレスとアドレスレジスタB~Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタAに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
(A7) When the upper address of address register A and the upper address of address register H match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register A and address register H, respectively, and the usage status indicated in the usage status information of address register H is changed to used.
(A8) When the upper address of address register A does not match any of the upper addresses of address registers B to H, a single load packet is generated to obtain only the data element stored at the memory address stored in address register A.

図10に例示される判定ルールは、アドレスレジスタBに格納されたメモリアドレスとアドレスレジスタC~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタBの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(B1)~(B7)を指示する。 The judgment rule illustrated in FIG. 10 is used to generate a load packet based on the result of comparing the memory address stored in address register B with one of the memory addresses stored in address registers C to H. This judgment rule is executed when the usage status indicated in the usage status information of address register B indicates unused, and is not executed when the usage status indicates used. This judgment rule instructs the following processes (B1) to (B7).

(B1)アドレスレジスタBの上位アドレスとアドレスレジスタCの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタCのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタCの使用状態情報に示される使用状態を使用済に変更する。
(B2)アドレスレジスタBの上位アドレスとアドレスレジスタDの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタDのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタDの使用状態情報に示される使用状態を使用済みに変更する。
(B1) When the upper address of address register B and the upper address of address register C match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register B and address register C, and the usage status indicated in the usage status information of address register C is changed to used.
(B2) When the upper address of address register B and the upper address of address register D match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register B and address register D, respectively, and the usage status indicated in the usage status information of address register D is changed to used.

(B3)アドレスレジスタBの上位アドレスとアドレスレジスタEの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタEのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタEの使用状態情報に示される使用状態を使用済に変更する。
(B4)アドレスレジスタBの上位アドレスとアドレスレジスタFの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタFのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタFの使用状態情報に示される使用状態を使用済に変更する。
(B3) When the upper address of address register B and the upper address of address register E match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register B and address register E, respectively, and the usage status indicated in the usage status information of address register E is changed to used.
(B4) When the upper address of address register B and the upper address of address register F match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register B and address register F, respectively, and the usage status indicated in the usage status information of address register F is changed to used.

(B5)アドレスレジスタBの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
(B6)アドレスレジスタBの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタBとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(B7)アドレスレジスタBの上位アドレスとアドレスレジスタC~Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタBに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
(B5) When the upper address of address register B and the upper address of address register G match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register B and address register G, and the usage status indicated in the usage status information of address register G is changed to used.
(B6) When the upper address of address register B and the upper address of address register H match, a load packet is generated to obtain the data elements stored at the memory addresses stored in address register B and address register H, respectively, and the usage status indicated in the usage status information of address register H is changed to used.
(B7) When the upper address of address register B does not match any of the upper addresses of address registers C to H, a single load packet is generated to obtain only the data element stored at the memory address stored in address register B.

図11に例示される判定ルールは、アドレスレジスタCに格納されたメモリアドレスとアドレスレジスタD~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタCの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(C1)~(C6)を指示する。 The judgment rule illustrated in FIG. 11 is used to generate a load packet based on the result of comparing the memory address stored in address register C with one of the memory addresses stored in address registers D to H. This judgment rule is executed when the usage status indicated in the usage status information of address register C indicates unused, and is not executed when the usage status indicates used. This judgment rule instructs the following processes (C1) to (C6).

(C1)アドレスレジスタCの上位アドレスとアドレスレジスタDの上位アドレスが一致するとき、アドレスレジスタCとアドレスレジスタDのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタDの使用状態情報に示される使用状態を使用済みに変更する。
(C2)アドレスレジスタCの上位アドレスとアドレスレジスタEの上位アドレスが一致するとき、アドレスレジスタCとアドレスレジスタEのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタEの使用状態情報に示される使用状態を使用済に変更する。
(C1) When the upper address of address register C and the upper address of address register D match, a load packet is generated to obtain a data element stored in the memory address stored in each of address register C and address register D, and the usage status indicated in the usage status information of address register D is changed to used.
(C2) When the upper address of address register C and the upper address of address register E match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register C and address register E, respectively, and the usage status indicated in the usage status information of address register E is changed to used.

(C3)アドレスレジスタCの上位アドレスとアドレスレジスタFの上位アドレスが一致するとき、アドレスレジスタCとアドレスレジスタFのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタFの使用状態情報に示される使用状態を使用済に変更する。
(C4)アドレスレジスタCの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタCとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
(C3) When the upper address of address register C and the upper address of address register F match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register C and address register F, respectively, and the usage status indicated in the usage status information of address register F is changed to used.
(C4) When the upper address of address register C and the upper address of address register G match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register C and address register G, respectively, and the usage status indicated in the usage status information of address register G is changed to used.

(C5)アドレスレジスタCの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタCとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(C6)アドレスレジスタCの上位アドレスとアドレスレジスタD~Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタCに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
(C5) When the upper address of address register C and the upper address of address register H match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register C and address register H, respectively, and the usage status indicated in the usage status information of address register H is changed to used.
(C6) When the upper address of address register C does not match any of the upper addresses of address registers D to H, a single load packet is generated to obtain only the data element stored at the memory address stored in address register C.

図12に例示される判定ルールは、アドレスレジスタDに格納されたメモリアドレスとアドレスレジスタE~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタDの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(D1)~(D5)を指示する。 The judgment rule illustrated in FIG. 12 is used to generate a load packet based on the result of comparing the memory address stored in address register D with one of the memory addresses stored in address registers E to H. This judgment rule is executed when the usage status indicated in the usage status information of address register D indicates unused, and is not executed when the usage status indicates used. This judgment rule instructs the following processes (D1) to (D5).

(D1)アドレスレジスタDの上位アドレスとアドレスレジスタEの上位アドレスが一致するとき、アドレスレジスタDとアドレスレジスタEのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタEの使用状態情報に示される使用状態を使用済に変更する。
(D2)アドレスレジスタDの上位アドレスとアドレスレジスタFの上位アドレスが一致するとき、アドレスレジスタDとアドレスレジスタFのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタFの使用状態情報に示される使用状態を使用済に変更する。
(D1) When the upper address of address register D and the upper address of address register E match, a load packet is generated to obtain a data element stored in the memory address stored in each of address register D and address register E, and the usage status indicated in the usage status information of address register E is changed to used.
(D2) When the upper address of address register D and the upper address of address register F match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register D and address register F, respectively, and the usage status indicated in the usage status information of address register F is changed to used.

(D3)アドレスレジスタDの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタDとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
(D4)アドレスレジスタDの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタDとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(D5)アドレスレジスタDの上位アドレスとアドレスレジスタE~Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタDに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
(D3) When the upper address of address register D and the upper address of address register G match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register D and address register G, respectively, and the usage status indicated in the usage status information of address register G is changed to used.
(D4) When the upper address of address register D and the upper address of address register H match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register D and address register H, respectively, and the usage status indicated in the usage status information of address register H is changed to used.
(D5) When the upper address of address register D does not match any of the upper addresses of address registers E to H, a single load packet is generated to obtain only the data element stored at the memory address stored in address register D.

図13に例示される判定ルールは、アドレスレジスタEに格納されたメモリアドレスとアドレスレジスタF~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタEの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(E1)~(E4)を指示する。 The judgment rule illustrated in FIG. 13 is used to generate a load packet based on the result of comparing the memory address stored in address register E with one of the memory addresses stored in address registers F to H. This judgment rule is executed when the usage status indicated in the usage status information of address register E indicates unused, and is not executed when the usage status indicates used. This judgment rule instructs the following processes (E1) to (E4).

(E1)アドレスレジスタEの上位アドレスとアドレスレジスタFの上位アドレスが一致するとき、アドレスレジスタEとアドレスレジスタFのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタFの使用状態情報に示される使用状態を使用済に変更する。
(E2)アドレスレジスタEの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタEとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
(E1) When the upper address of address register E and the upper address of address register F match, one load packet is generated to obtain the data elements stored in the memory addresses stored in address register E and address register F, respectively, and the usage status indicated in the usage status information of address register F is changed to used.
(E2) When the upper address of address register E and the upper address of address register G match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register E and address register G, respectively, and the usage status indicated in the usage status information of address register G is changed to used.

(E3)アドレスレジスタEの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタEとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(E4)アドレスレジスタEの上位アドレスとアドレスレジスタF~Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタEに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
(E3) When the upper address of address register E and the upper address of address register H match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register E and address register H, respectively, and the usage status indicated in the usage status information of address register H is changed to used.
(E4) When the upper address of address register E does not match any of the upper addresses of address registers F to H, a single load packet is generated to obtain only the data element stored at the memory address stored in address register E.

図14に例示される判定ルールは、アドレスレジスタFに格納されたメモリアドレスとアドレスレジスタG~Hに格納されたメモリアドレスのいずれかとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタFの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(F1)~(F3)を指示する。 The judgment rule illustrated in FIG. 14 is used to generate a load packet based on the result of comparing the memory address stored in address register F with one of the memory addresses stored in address registers G to H. This judgment rule is executed when the usage status indicated in the usage status information of address register F indicates unused, and is not executed when the usage status indicates used. This judgment rule instructs the following processes (F1) to (F3).

(F1)アドレスレジスタFの上位アドレスとアドレスレジスタGの上位アドレスが一致するとき、アドレスレジスタFとアドレスレジスタGのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタGの使用状態情報に示される使用状態を使用済みに変更する。
(F2)アドレスレジスタFの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタFとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(F3)アドレスレジスタFの上位アドレスとアドレスレジスタG、Hの上位アドレスのいずれもが一致しないとき、アドレスレジスタFに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
(F1) When the upper address of address register F and the upper address of address register G match, one load packet is generated to obtain the data elements stored in the memory addresses stored in address register F and address register G, and the usage status indicated in the usage status information of address register G is changed to used.
(F2) When the upper address of address register F and the upper address of address register H match, a load packet is generated to obtain the data elements stored at the memory addresses stored in address register F and address register H, respectively, and the usage status indicated in the usage status information of address register H is changed to used.
(F3) When the upper address of address register F does not match any of the upper addresses of address registers G and H, a single load packet is generated to obtain only the data element stored at the memory address stored in address register F.

図15に例示される判定ルールは、アドレスレジスタGに格納されたメモリアドレスとアドレスレジスタHに格納されたメモリアドレスとの比較結果に基づいてロードパケットの生成に用いられる。当該判定ルールは、アドレスレジスタGの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、次の処理(G1)、(G2)を指示する。 The judgment rule illustrated in FIG. 15 is used to generate a load packet based on the result of comparing the memory address stored in address register G with the memory address stored in address register H. This judgment rule is executed when the usage status indicated in the usage status information of address register G indicates unused, and is not executed when the usage status indicates used. This judgment rule instructs the following processes (G1) and (G2).

(G1)アドレスレジスタGの上位アドレスとアドレスレジスタHの上位アドレスが一致するとき、アドレスレジスタFとアドレスレジスタHのそれぞれに格納されたメモリアドレスに格納されるデータ要素を取得するための1つのロードパケットを生成し、アドレスレジスタHの使用状態情報に示される使用状態を使用済に変更する。
(G2)アドレスレジスタGの上位アドレスとアドレスレジスタHの上位アドレスと一致しないとき、アドレスレジスタGに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。
(G1) When the upper address of address register G and the upper address of address register H match, a load packet is generated to obtain the data elements stored in the memory addresses stored in address register F and address register H, and the usage status indicated in the usage status information of address register H is changed to used.
(G2) When the upper address of address register G does not match the upper address of address register H, one load packet is generated to obtain only the data element stored at the memory address stored in address register G.

図16に例示される判定ルールは、アドレスレジスタGの使用状態情報に示される使用状態が未使用を示す場合に実行され、当該使用状態が使用済を示す場合には実行されない。当該判定ルールは、アドレスレジスタGに格納されたメモリアドレスに格納されるデータ要素だけを取得するための1つのロードパケットを生成する。 The judgment rule illustrated in FIG. 16 is executed when the usage status indicated in the usage status information of address register G indicates unused, and is not executed when the usage status indicates used. This judgment rule generates one load packet for obtaining only the data element stored in the memory address stored in address register G.

ロードパケット生成回路1903のロードパケット発行回路(図7)は、上記の判定ルールによる判定結果に従って、ロードパケットを生成し、生成したロードパケットをメモリシステム1907に送付する。
2個のデータ要素の読み出しに係るロードパケットを生成する際、ロードパケット発行回路は、特定された2個のメモリアドレスのそれぞれのオフセットと要素番号としてオフセット0、1と要素番号0、1をそれぞれ対応付けて含める。また、ロードパケット発行回路は、それらのメモリアドレスの上位アドレスと、種別として読み出しに係る要素数2をロードパケットに含める。
The load packet issuing circuit (FIG. 7) of the load packet generating circuit 1903 generates a load packet in accordance with the result of the determination made by the above-mentioned determination rule, and sends the generated load packet to the memory system 1907 .
When generating a load packet for reading two data elements, the load packet issuing circuit includes offsets 0 and 1 and element numbers 0 and 1 as the offsets and element numbers of the two specified memory addresses, respectively, in association with each other. The load packet issuing circuit also includes the upper addresses of those memory addresses and the number of elements related to reading, 2, as the type in the load packet.

1個のデータ要素の読み出しに係るロードパケットを生成する際、ロードパケット発行回路は、特定された1個のメモリアドレスのオフセット0、要素番号0を対応付けて含め、さらにメモリアドレスの上位アドレスと種別として読み出しに係る要素数1をロードパケットに含める。なお、ロードパケット発行回路は、ベクトルギャザー指示から書き込み先となるベクトルレジスタ番号を抽出し、抽出したベクトルレジスタ番号をロードパケットに含める。 When generating a load packet for reading one data element, the load packet issuing circuit includes offset 0 and element number 0 of the identified memory address in the load packet, and also includes the upper address of the memory address and the number of elements to be read, 1, as the type. In addition, the load packet issuing circuit extracts the vector register number to be written to from the vector gather instruction, and includes the extracted vector register number in the load packet.

メモリシステム1907は、ロードパケット生成回路1903から入力されるロードパケットに格納された上位アドレスで指示される処理単位を特定する。メモリシステム1907は、ロードパケットに格納された種別に基づいて特定した処理単位から2個のデータ要素を読み出すか、1個のデータ要素を読み出すかを判定する。メモリシステム1907は、ロードパケットに格納されたオフセットを用いて、処理単位のうちデータ要素を読み出す要素領域を特定する。メモリシステム1907は、ロードパケットにおいてオフセットに対応付けられた要素番号と、そのオフセットに基づいて特定された要素領域から読み出されたデータ要素を対応付けて含めリプライパケットを生成する。ここで、メモリシステム1907は、ロードパケットに格納された種別とベクトルレジスタ番号をリプライパケットに含める。メモリシステム1907は、生成したリプライパケットをロードパケットの入力元となるコア(図5)に送付する。 The memory system 1907 identifies the processing unit indicated by the upper address stored in the load packet input from the load packet generation circuit 1903. The memory system 1907 determines whether to read two data elements or one data element from the identified processing unit based on the type stored in the load packet. The memory system 1907 identifies the element area from which to read the data element in the processing unit using the offset stored in the load packet. The memory system 1907 generates a reply packet including the element number associated with the offset in the load packet and the data element read from the element area identified based on the offset. Here, the memory system 1907 includes the type and vector register number stored in the load packet in the reply packet. The memory system 1907 sends the generated reply packet to the core (FIG. 5) that is the input source of the load packet.

コアのベクトルユニット(図5)は、メモリシステム1907から受信したリプライパケットに記述された種別に基づいて、2個のデータ要素を書き込むか、1個のデータ要素を書き込むかを判定する。ベクトルユニットは、受信したリプライパケットからベクトルレジスタ番号と要素番号ごとに対応するデータ要素を読み出す。ベクトルユニットは、ベクトルレジスタ番号で指示されるベクトルレジスタの要素番号ごとに指示される要素領域に対応するデータ要素を書き込む。 The vector unit of the core (Figure 5) determines whether to write two data elements or one data element based on the type described in the reply packet received from the memory system 1907. The vector unit reads the data element corresponding to each vector register number and element number from the received reply packet. The vector unit writes the data element corresponding to the element area specified by the element number of the vector register specified by the vector register number.

上記の説明では、図17に示されるように、データ要素の要素数を示す種別をロードパケットに含める場合を例にしたが、これには限られない。ロードパケット生成回路1903は、種別に代え、要素番号0以外の各要素番号(例えば、要素番号1)に対応付けて、有効か否かを示す有効性ビットを含めてロードパケットを生成してもよい。ロードパケットの送信先となるメモリシステム1907は、ロードパケットに記述された有効性ビットに基づいて要素番号ごとの有効性を判定し、対応するオフセットで指示される要素領域から要素データの読み出しの要否を判定することができる。種別により有効な要素数を指示し、ロードパケットにおいて格納順に指示された要素数の要素番号を特定する場合よりも、複数の要素番号を用いて多様な有効性のパターンを指示することができる。 In the above explanation, as shown in FIG. 17, a type indicating the number of elements of a data element is included in the load packet as an example, but this is not limited to this. The load packet generation circuit 1903 may generate a load packet including a validity bit indicating whether or not the element number is valid, in association with each element number other than element number 0 (for example, element number 1), instead of the type. The memory system 1907 to which the load packet is sent can determine the validity of each element number based on the validity bit described in the load packet, and determine whether or not element data needs to be read from the element area indicated by the corresponding offset. A variety of validity patterns can be indicated using multiple element numbers, rather than specifying the number of valid elements by type and specifying the element numbers of the number of elements indicated in the storage order in the load packet.

また、図18に示されるように、リプライパケットに種別を含める場合を例にしたが、これには限られない。メモリシステムは、種別に代え、要素番号0以外の各要素番号に対応付けて、有効性ビットを含めてリプライパケットを生成してもよい。リプライパケットの送信先となるコアのベクトルユニットは、受信したリプライパケットに記述された有効性ビットに基づいて要素番号ごとの有効性を判定し、対応する要素データの書き込みの要否を判定することができる。 As shown in FIG. 18, the reply packet includes the type, but this is not limiting. Instead of the type, the memory system may generate a reply packet including a validity bit associated with each element number other than element number 0. The vector unit of the core to which the reply packet is sent can determine the validity of each element number based on the validity bit written in the received reply packet, and determine whether or not it is necessary to write the corresponding element data.

次に、本実施形態に係る最小構成例について説明する。図21は、本実施形態の最小構成例に係る演算回路2102を示す概略ブロック図である。演算回路2102は、取得されるメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位がメモリシステム2104に存在するか否かを判定する。演算回路2102は、かかる処理単位が存在する場合、当該処理単位における要素領域ごとの要素番号とオフセットを示すロードパケットをメモリシステム2104に出力する。演算回路2102は、メモリシステム2104から入力されるリプライパケットの要素番号に対応して含まれるデータ要素をベクトルレジスタ2106に書き込む。 Next, an example of a minimum configuration according to this embodiment will be described. FIG. 21 is a schematic block diagram showing an arithmetic circuit 2102 according to an example of a minimum configuration according to this embodiment. The arithmetic circuit 2102 determines whether or not a processing unit including multiple element areas each corresponding to an acquired memory address exists in the memory system 2104. If such a processing unit exists, the arithmetic circuit 2102 outputs a load packet indicating the element number and offset for each element area in the processing unit to the memory system 2104. The arithmetic circuit 2102 writes the data elements included corresponding to the element numbers of the reply packet input from the memory system 2104 to the vector register 2106.

この構成によれば、演算回路2102は、命令により指示されるメモリアドレスに対応する要素領域を複数個含む処理単位がメモリシステム2104に存在する場合、その処理単位における要素領域のオフセットを示すロードパケットをメモリシステム2104に発行する。また、演算回路2102は、ロードパケットに対する応答として取得されるリプライパケットにより個々の要素領域から読み出されるデータ要素を取得し、ベクトルレジスタ2106に書き込むことができる。1個のロードパケットの発行により要素領域内に格納される複数のデータ要素を読み出すことができる。そのため、各1個のデータ要素を読み出す場合よりもロードパケットの個数ならびにリプライパケットの個数を減らすことができる。そのため、演算回路2102とメモリシステム2104とを接続するチップ内ネットワークの負荷が軽減され、演算回路2102とメモリシステム2104を含むコンピュータシステムの性能を向上することができる。 According to this configuration, when a processing unit including multiple element areas corresponding to a memory address specified by an instruction exists in the memory system 2104, the arithmetic circuit 2102 issues a load packet indicating the offset of the element area in the processing unit to the memory system 2104. The arithmetic circuit 2102 can also obtain data elements read from each element area by a reply packet obtained in response to the load packet, and write the data elements to the vector register 2106. Multiple data elements stored in an element area can be read by issuing one load packet. Therefore, the number of load packets and the number of reply packets can be reduced compared to the case of reading one data element each. Therefore, the load on the in-chip network connecting the arithmetic circuit 2102 and the memory system 2104 is reduced, and the performance of a computer system including the arithmetic circuit 2102 and the memory system 2104 can be improved.

なお、本実施形態は、演算回路2102とメモリシステム2104を備えるコンピュータシステムとして実現されてもよい。メモリシステム2104は、指示されるメモリアドレスに対応する要素領域を複数個含む処理単位からロードパケットで指示されるオフセットごとにデータ要素を読み出し、当該データ要素と当該オフセットに対応する要素番号を含むリプライパケットを生成する。 This embodiment may be realized as a computer system including an arithmetic circuit 2102 and a memory system 2104. The memory system 2104 reads data elements for each offset specified by the load packet from a processing unit that includes multiple element areas corresponding to a specified memory address, and generates a reply packet that includes the data elements and element numbers corresponding to the offsets.

メモリアドレスは、それぞれ上位アドレスとオフセットを有し、演算回路2102は、複数のメモリアドレス間で上位アドレスが同一であるとき、複数のメモリアドレスのそれぞれに対応する要素領域を複数個含む処理単位が存在すると判定し、ロードパケットに同一と判定した上位アドレスを含めてもよい。
この構成によれば、上位アドレスを用いて、指示されるメモリアドレスに対応する複数の要素領域を有する処理単位の存在の有無が判定され、その処理単位を示す上位アドレスがメモリシステム2104に通知される。そのため、メモリシステム2104は、データ要素の読み出しに係る処理単位を容易に特定することができる。
Each memory address has an upper address and an offset, and when the upper addresses are identical between multiple memory addresses, the arithmetic circuit 2102 may determine that there is a processing unit that includes multiple element areas corresponding to each of the multiple memory addresses, and may include the upper addresses that are determined to be identical in the load packet.
According to this configuration, the upper address is used to determine whether or not there is a processing unit having multiple element areas corresponding to the specified memory address, and the upper address indicating the processing unit is notified to the memory system 2104. Therefore, the memory system 2104 can easily identify the processing unit related to reading of the data elements.

演算回路2102は、ロードパケットに上位アドレスが同一なメモリアドレスの要素数を含めてもよい。
この構成によれば、読み出し対象となる有効なデータ要素の個数がメモリシステム2104に通知される。
The arithmetic circuit 2102 may include in the load packet the number of elements of memory addresses having the same upper address.
With this arrangement, memory system 2104 is informed of the number of valid data elements to be read.

演算回路2102は、ロードパケットに要素番号の有効性を示す有効性フラグを含めてもよい。
この構成によれば、読み出し対象となる有効なデータ要素がメモリシステム2104に通知される。
The arithmetic circuit 2102 may include a validity flag in the load packet that indicates the validity of the element number.
With this arrangement, memory system 2104 is informed of valid data elements to be read.

演算回路2102は、メモリアドレスを格納するアドレスレジスタを備え、使用状態を未使用とするアドレスレジスタに格納されるメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定し、ロードパケットを出力するとき、前記複数の要素領域に対応するメモリアドレスが記憶されているアドレスレジスタの使用状態を使用済に変更してもよい。
この構成によれば、ロードパケットの出力によりデータ要素の読み出し対象として指示したメモリアドレスに対して、再度のデータ要素を読み出すことが回避される。
The arithmetic circuit 2102 may include an address register for storing a memory address, and may determine whether or not there is a processing unit that includes multiple element areas corresponding to a memory address stored in the address register whose usage state is unused. When outputting a load packet, the usage state of the address register in which the memory addresses corresponding to the multiple element areas are stored may be changed to used.
According to this configuration, it is possible to avoid reading a data element again from a memory address designated as a target for reading a data element by outputting a load packet.

演算回路2102は、ロードパケットにベクトルレジスタのベクトルレジスタ番号を含めてもよい。また、本実施形態は、かかる演算回路とメモリシステム2104を備えるコンピュータシステムとして実現されてもよい。
この構成により、メモリシステム2104にデータ要素の書き込み先とするベクトルレジスタ番号を通知し、読み出し対象とするデータ要素とともに当該ベクトルレジスタ番号を含むリプライパケットを生成させることができる。データ要素の書き込みにおいて、ロードパケットの送信に対するリプライパケットの受信状態を管理せずに、リプライパケットを参照してデータ要素の書き込み先とするベクトルレジスタを特定することができる。
The arithmetic circuit 2102 may include the vector register number of the vector register in the load packet. Also, the present embodiment may be realized as a computer system including such an arithmetic circuit and a memory system 2104.
With this configuration, the memory system 2104 can be notified of the vector register number to which the data element is to be written, and a reply packet can be generated that includes the vector register number along with the data element to be read. When writing a data element, the vector register to which the data element is to be written can be specified by referring to the reply packet, without managing the reception status of the reply packet in response to the transmission of the load packet.

上記のようなベクトルギャザー命令は、行列演算に係るアプリケーションプログラム(以下、「アプリケーション」と呼ぶ)の実行に際し、しばしば実行されることがある。演算対象となる行列は、密行列よりも疎行列の方が一般的である。疎行列とは、非ゼロ要素が少ない行列である。そのため、疎行列ベクトル積の演算性能がアプリケーション全体の演算性能に対して支配的となりがちである。コンピュータシステムは、疎行列ベクトル積の演算の際、疎行列の非ゼロ要素だけをメモリシステムの連続領域に格納することがある。その場合、メモリシステムに格納される非ゼロ要素へのアクセスは連続アクセスとなる。他方、メモリシステムに格納されるベクトルへのアクセスは非連続アクセスとなる。疎行列の非ゼロ要素に対応するベクトルの要素がアクセスされるためである。その場合には、ベクトルへのアクセスではベクトルギャザー命令が使用されうる。本実施形態によりベクトルギャザー命令に対する性能を向上することで疎行列ベクトル性能が高いコンピュータシステムを実現することができる。 The above-mentioned vector gather instruction is often executed when executing an application program (hereinafter referred to as "application") related to matrix operations. The matrix to be operated on is generally a sparse matrix rather than a dense matrix. A sparse matrix is a matrix with few non-zero elements. Therefore, the operation performance of the sparse matrix vector product tends to dominate the operation performance of the entire application. When performing a sparse matrix vector product, a computer system may store only the non-zero elements of the sparse matrix in a contiguous area of the memory system. In this case, access to the non-zero elements stored in the memory system is contiguous access. On the other hand, access to the vector stored in the memory system is non-contiguous access. This is because the elements of the vector corresponding to the non-zero elements of the sparse matrix are accessed. In this case, the vector gather instruction may be used to access the vector. This embodiment improves the performance of the vector gather instruction, thereby realizing a computer system with high sparse matrix vector performance.

以上、本願のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。 Although several embodiments of the present application have been described above, these embodiments are presented as examples and are not intended to limit the scope of the invention. These embodiments can be implemented in various other forms, and various omissions, substitutions, and modifications can be made without departing from the gist of the invention. These embodiments and their modifications are included in the scope of the invention and its equivalents as set forth in the claims, as well as in the scope and gist of the invention.

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…ベクトルレジスタ 101...core, 102...intra-chip network, 103...memory system, 201, 213...vector register, 207...memory system, 301...processing unit, 401...memory address, 402...offset, 403...upper address, 501...core, 502...scalar unit, 503...vector unit, 504...memory system, 505...load packet generation circuit, 601...vector unit, 602...vector register file, 603...arithmetic unit, 701...load packet generation circuit, 702...multiple element detection circuit, 703...load packet issuance circuit, 801-808...address register, 810-816...comparator, 1901...scalar unit, 1902...vector unit, 1903...load packet generation circuit, 1907...memory system, 2001...vector register file, 2004, 2005...address register, 2102...arithmetic circuit, 2104...memory system, 2106...vector register

Claims (8)

取得されるベクトルギャザー命令で指示される複数のメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位がメモリシステムに存在するか否かを判定し、
前記処理単位が存在する場合、当該処理単位における前記要素領域ごとの要素番号とオフセットを示すロードパケットを前記メモリシステムに出力し、
前記メモリシステムから入力されるリプライパケットの前記要素番号に対応して含まれるデータ要素をベクトルレジスタに書き込み、
前記メモリアドレスを格納するアドレスレジスタを備え、
使用状態を未使用とするアドレスレジスタに格納されるメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定し、
前記ロードパケットを出力するとき、前記複数の要素領域に対応するメモリアドレスが記憶されているアドレスレジスタの使用状態を使用済に変更する
演算回路。
determining whether or not a processing unit including a plurality of element areas respectively corresponding to a plurality of memory addresses designated by the obtained vector gather instruction exists in the memory system;
If the processing unit exists, outputting a load packet to the memory system indicating an element number and an offset for each element area in the processing unit;
writing a data element included in a reply packet input from the memory system corresponding to the element number into a vector register;
an address register for storing the memory address;
determining whether or not there is a processing unit including a plurality of element areas corresponding to a memory address stored in an address register whose usage state is unused;
When the load packet is output, the usage state of the address register in which the memory addresses corresponding to the plurality of element areas are stored is changed to "used."
Arithmetic circuit.
前記メモリアドレスは、それぞれ上位アドレスとオフセットを有し、
複数のメモリアドレス間で上位アドレスが同一であるとき、
前記複数のメモリアドレスのそれぞれに対応する要素領域を複数個含む処理単位が存在すると判定し、
前記ロードパケットに前記同一の上位アドレスを含める
請求項1に記載の演算回路。
Each of the memory addresses has an upper address and an offset,
When multiple memory addresses have the same upper address,
determining that there is a processing unit including a plurality of element areas corresponding to each of the plurality of memory addresses;
The arithmetic circuit according to claim 1 , wherein the load packet includes the same upper address.
前記ロードパケットに上位アドレスが同一な前記メモリアドレスの要素数を含める
請求項1に記載の演算回路。
The arithmetic circuit according to claim 1 , wherein the load packet includes the number of elements of the memory addresses having the same upper address.
前記ロードパケットに前記要素番号の有効性を示す有効性フラグを含める
請求項1に記載の演算回路。
The arithmetic circuit according to claim 1 , wherein the load packet includes a validity flag indicating validity of the element number.
前記ロードパケットに前記ベクトルレジスタのベクトルレジスタ番号を含める
請求項1に記載の演算回路。
The arithmetic circuit according to claim 1 , wherein the load packet includes a vector register number of the vector register.
算回路とメモリシステムを備えるコンピュータシステムであって、
前記演算回路は、
取得されるベクトルギャザー命令で指示される複数のメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位が前記メモリシステムに存在するか否かを判定し、
前記処理単位が存在する場合、当該処理単位における前記要素領域ごとの要素番号とオフセットを示すロードパケットを前記メモリシステムに出力し、
前記メモリシステムから入力されるリプライパケットの前記要素番号に対応して含まれるデータ要素をベクトルレジスタに書き込み、
前記メモリシステムは、
前記処理単位から前記ロードパケットで指示されるオフセットごとにデータ要素を読み出し、
当該データ要素と前記オフセットに対応する要素番号を含む前記リプライパケットを生成する
コンピュータシステム。
A computer system comprising an arithmetic circuit and a memory system,
The arithmetic circuit includes:
determining whether or not a processing unit including a plurality of element regions respectively corresponding to a plurality of memory addresses designated by the obtained vector gather instruction exists in the memory system;
If the processing unit exists, outputting a load packet to the memory system indicating an element number and an offset for each element area in the processing unit;
writing a data element included in a reply packet input from the memory system corresponding to the element number into a vector register;
The memory system includes:
reading data elements from said processing unit at each offset indicated by said load packet;
generating said reply packet including said data element and an element number corresponding to said offset.
前記ロードパケットに前記ベクトルレジスタのベクトルレジスタ番号を含める前記演算回路を複数個備える請求項6に記載のコンピュータシステム。 7. The computer system of claim 6, further comprising a plurality of said arithmetic circuits for including in said load packet a vector register number of said vector register . 演算回路におけるデータ処理方法であって、
前記演算回路は、メモリアドレスを格納するアドレスレジスタを備え、
前記演算回路が、
取得されるベクトルギャザー命令で指示される複数のメモリアドレスにそれぞれ対応する要素領域を複数個含む処理単位がメモリシステムに存在するか否かを判定し、
前記処理単位が存在する場合、当該処理単位における前記要素領域ごとの要素番号とオフセットを示すロードパケットを前記メモリシステムに出力し、
前記メモリシステムから入力されるリプライパケットの前記要素番号に対応して含まれるデータ要素をベクトルレジスタに書き込み、
使用状態を未使用とするアドレスレジスタに格納されるメモリアドレスに対応する要素領域を複数個含む処理単位が存在するか否かを判定し、
前記ロードパケットを出力するとき、前記複数の要素領域に対応するメモリアドレスが記憶されているアドレスレジスタの使用状態を使用済に変更する
データ処理方法。
A data processing method in an arithmetic circuit, comprising the steps of:
the arithmetic circuit includes an address register for storing a memory address;
The arithmetic circuit comprises:
determining whether or not a processing unit including a plurality of element areas respectively corresponding to a plurality of memory addresses designated by the obtained vector gather instruction exists in the memory system;
If the processing unit exists, outputting a load packet to the memory system indicating an element number and an offset for each element area in the processing unit;
writing a data element included in a reply packet input from the memory system corresponding to the element number into a vector register;
determining whether or not there is a processing unit including a plurality of element areas corresponding to a memory address stored in an address register whose usage state is unused;
When the load packet is output, the usage state of the address register in which the memory addresses corresponding to the plurality of element areas are stored is changed to "used."
Data processing methods.
JP2023034908A 2023-03-07 2023-03-07 Integrated circuit, computer system and data processing method Active JP7601434B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023034908A JP7601434B2 (en) 2023-03-07 2023-03-07 Integrated circuit, computer system and data processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2023034908A JP7601434B2 (en) 2023-03-07 2023-03-07 Integrated circuit, computer system and data processing method

Publications (2)

Publication Number Publication Date
JP2024126505A JP2024126505A (en) 2024-09-20
JP7601434B2 true JP7601434B2 (en) 2024-12-17

Family

ID=92761817

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2023034908A Active JP7601434B2 (en) 2023-03-07 2023-03-07 Integrated circuit, computer system and data processing method

Country Status (1)

Country Link
JP (1) JP7601434B2 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010218350A (en) 2009-03-18 2010-09-30 Nec Corp Information processor
JP2013182420A (en) 2012-03-01 2013-09-12 Nec Corp Vector processor and vector processing method
JP2020052862A (en) 2018-09-28 2020-04-02 日本電気株式会社 Computer and calculation method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010218350A (en) 2009-03-18 2010-09-30 Nec Corp Information processor
JP2013182420A (en) 2012-03-01 2013-09-12 Nec Corp Vector processor and vector processing method
JP2020052862A (en) 2018-09-28 2020-04-02 日本電気株式会社 Computer and calculation method

Also Published As

Publication number Publication date
JP2024126505A (en) 2024-09-20

Similar Documents

Publication Publication Date Title
US20220237041A1 (en) Parallel processing system performing in-memory processing
US9164951B2 (en) Multiprocessor system, execution control method and execution control program
JP6961997B2 (en) Information processing device, memory control device, control method of information processing device
JPWO2008023576A1 (en) Mixed mode parallel processor system, mixed mode parallel processor method, and mixed mode parallel processor program
JP2002373115A (en) Replacement control method for shared cache memory and device therefor
US8145804B2 (en) Systems and methods for transferring data to maintain preferred slot positions in a bi-endian processor
US20150070957A1 (en) Semiconductor device and method of writing/reading entry address into/from semiconductor device
US6684267B2 (en) Direct memory access controller, and direct memory access control method
US20170060748A1 (en) Processor and control method of processor
JP5856434B2 (en) Bus connection circuit, semiconductor device, and operation method of bus connection circuit
WO2015033551A1 (en) Store merge processing device, store merge processing system, store merge processing method, and recording medium
JP7601434B2 (en) Integrated circuit, computer system and data processing method
CN102156676B (en) Cache system
JPWO2003010774A1 (en) Associative memory system and network device and network system
JP5630281B2 (en) Vector instruction control circuit and list vector overtaking control method
JP7408954B2 (en) Memory control method, memory control device, program
US9081673B2 (en) Microprocessor and memory access method
JP2022011449A (en) Arithmetic processing program, arithmetic processing method, and arithmetic processing device
JP5182284B2 (en) Vector processing equipment
JP2023082311A (en) Arithmetic unit
JP7078380B2 (en) Instruction control device, instruction control method and program
CN114072776B (en) small area cache memory
JP2020009146A (en) Shared FIFO device
JP2006251916A (en) DMA transfer system and DMA transfer method
WO2023047762A1 (en) Processor and endian conversion method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230307

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240604

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240710

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20241128

R150 Certificate of patent or registration of utility model

Ref document number: 7601434

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150