JP5206385B2 - Boundary execution control system, boundary execution control method, and boundary execution control program - Google Patents

Boundary execution control system, boundary execution control method, and boundary execution control program Download PDF

Info

Publication number
JP5206385B2
JP5206385B2 JP2008316696A JP2008316696A JP5206385B2 JP 5206385 B2 JP5206385 B2 JP 5206385B2 JP 2008316696 A JP2008316696 A JP 2008316696A JP 2008316696 A JP2008316696 A JP 2008316696A JP 5206385 B2 JP5206385 B2 JP 5206385B2
Authority
JP
Japan
Prior art keywords
boundary
mask
execution control
bit
address
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.)
Expired - Fee Related
Application number
JP2008316696A
Other languages
Japanese (ja)
Other versions
JP2010140306A (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 Corp
Original Assignee
NEC Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008316696A priority Critical patent/JP5206385B2/en
Publication of JP2010140306A publication Critical patent/JP2010140306A/en
Application granted granted Critical
Publication of JP5206385B2 publication Critical patent/JP5206385B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、バウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラムにおいて、ベクトルストア命令実行時におけるバウンダリ生成と後続のスカラロード命令の発行制御を高速化し、かつハードウェア量を削減するバウンダリ実行制御システム、バウンダリ実行制御方法、およびバウンダリ実行制御プログラムに関する。   The present invention relates to a boundary execution control system, a boundary execution control method, and a boundary execution control program. The boundary execution speedup of boundary generation and execution of subsequent scalar load instructions during execution of a vector store instruction and a reduction in the amount of hardware. The present invention relates to an execution control system, a boundary execution control method, and a boundary execution control program.

ベクトル処理に関連する技術として、スカラプロセッサとベクトルプロセッサとL2キャッシュとメモリとから構成されるバウンダリ実行制御システムが知られている。   As a technique related to vector processing, a boundary execution control system including a scalar processor, a vector processor, an L2 cache, and a memory is known.

このシステムにおいて、スカラプロセッサは、スヌープ処理回路とL1キャッシュとを備えており、スカラプロセッサが、ベクトルストア命令(以下、VSTと呼ぶ)の実行後、L1キャッシュに対する後続のスカラロード命令(以下、LDSと呼ぶ)を実行する場合には、ロードするデータが最新のものであることを保証してから発行する必要がある。   In this system, the scalar processor includes a snoop processing circuit and an L1 cache, and after the scalar processor executes a vector store instruction (hereinafter referred to as VST), a subsequent scalar load instruction (hereinafter referred to as LDS) for the L1 cache. Must be issued after guaranteeing that the data to be loaded is the latest.

そのために、スカラプロセッサは、スヌープ処理回路によるキャッシュのスヌープ完了を待ち、ロードするデータがVSTによって更新されていないことを確認している。 その結果、ベクトル計算機を含めSIMD計算機(Single Instruction/Multiple Data計算機)では、1度に多くのデータをストアするため、スヌープの完了には時間がかかり、後続のLDSの発行は遅れてしまう。   Therefore, the scalar processor waits for the completion of the snoop of the cache by the snoop processing circuit, and confirms that the data to be loaded is not updated by the VST. As a result, a SIMD computer (Single Instruction / Multiple Data computer) including a vector computer stores a large amount of data at one time, so that it takes time to complete the snoop and the subsequent LDS issuance is delayed.

図11に、スヌープ処理回路の例を示す。スヌープ処理回路は、アドレス演算器81、スヌープアドレスレジスタ82、L1キャッシュのタグのコピーを格納するタグコピー格納器83および比較器84を備える。アドレス演算器81によって生成されたスヌープアドレスはレジスタ82に格納され、その下位ビットにより指定される格納器83内のタグのコピーが読み出され、読み出されたタグとスヌープアドレスの上位ビットとが比較器84で比較される。比較の結果、両者が一致する場合には、L1キャッシュの当該エントリはVSTによって更新されるものとして、そのエントリが無効化(フラッシュ)される。図11に示した例では、それぞれ独立して同時に動作可能なコピー格納器83が複数個設けられているので、このスヌープ処理を同時に複数のアドレスについて行うことができる。   FIG. 11 shows an example of a snoop processing circuit. The snoop processing circuit includes an address calculator 81, a snoop address register 82, a tag copy storage 83 that stores a copy of the tag of the L1 cache, and a comparator 84. The snoop address generated by the address calculator 81 is stored in the register 82, a copy of the tag in the storage 83 designated by the lower bit is read, and the read tag and the upper bit of the snoop address are Comparison is performed by the comparator 84. If they match as a result of the comparison, the entry in the L1 cache is assumed to be updated by the VST, and the entry is invalidated (flushed). In the example shown in FIG. 11, since a plurality of copy storage units 83 that can operate independently and simultaneously are provided, this snoop process can be performed on a plurality of addresses simultaneously.

しかし、これでも、前述したように、VSTは1度に多くのデータをストアするため、スヌープの完了には時間がかかり、後続のLDSの発行は遅れてしまう。   However, as described above, the VST stores a large amount of data at one time, so that it takes time to complete the snoop, and the subsequent LDS issuance is delayed.

そこで、ロードするデータがVSTによって更新されていないことをハードウェアが保証し、スヌープの完了を待たずに後続のLDSを発行する方法としてバウンダリチェック方式が知られている。   Therefore, a boundary check method is known as a method in which hardware guarantees that data to be loaded has not been updated by VST and a subsequent LDS is issued without waiting for completion of snoop.

図12に、バウンダリ方式のバウンダリ実行制御システム120の一例を示す。バウンダリチェック方式では、スカラプロセッサ121が、スヌープ処理回路1211およびL1キャッシュ1213に加え、バウンダリチェック回路1212を備える。バウンダリチェック回路1212は、バウンダリ生成部1216とLDS発行制御部1214とアドレス記憶部1215とを備える。VSTの実行時に、バウンダリ生成部1216は更新するアドレスの最小と最大をバウンダリとしてアドレス記憶部1215に記憶する。そして、LDS発行制御部1214はこの記憶されたバウンダリの範囲外に対してアクセスするLDSについてスヌープの完了を待たずに実行可能と判定することができる。   FIG. 12 shows an example of a boundary-type boundary execution control system 120. In the boundary check method, the scalar processor 121 includes a boundary check circuit 1212 in addition to the snoop processing circuit 1211 and the L1 cache 1213. The boundary check circuit 1212 includes a boundary generation unit 1216, an LDS issue control unit 1214, and an address storage unit 1215. When the VST is executed, the boundary generation unit 1216 stores the minimum and maximum addresses to be updated in the address storage unit 1215 as the boundary. Then, the LDS issue control unit 1214 can determine that the LDS that accesses the outside of the stored boundary range can be executed without waiting for the completion of the snoop.

関連技術として、特許文献1には、最小のハードウェア量で複数のベクトルストア命令に対してバウンダリ制御を行う技術が開示されている。   As a related technique, Patent Document 1 discloses a technique for performing boundary control on a plurality of vector store instructions with a minimum amount of hardware.

図15に、特許文献1のバウンダリ実行制御装置15を示す。   FIG. 15 shows a boundary execution control device 15 of Patent Document 1.

まず、バウンダリ制御部156が、実行中のベクトルストアリクエストの終了アドレスを算出する。次に、バウンダリ制御部156が、ベクトルストアリクエストのバウンダリ区間の始点及び終点のアドレスを登録するとともに、後続のベクトルストアリクエストの開始アドレスと登録した始点のアドレスとの比較を行う。そして、登録したアドレスの変更を行ったり、後続のスカラーロードリクエストのアドレスと登録したバウンダリ区間の始点及び終点のアドレスとを比較し、メモリリクエスト制御部に対し後続のスカラロードリクエストの出力先を指示することで、スカラロードリクエストをキャッシュメモリ又は主記憶部154のいずれかに出力制御し、複数のベクトルストア命令実行中にスカラロード命令を実行可能とするようにする。   First, the boundary control unit 156 calculates the end address of the currently executing vector store request. Next, the boundary control unit 156 registers the start point and end point addresses of the boundary section of the vector store request, and compares the start address of the subsequent vector store request with the registered start point address. Then, the registered address is changed, the address of the subsequent scalar load request is compared with the address of the start and end points of the registered boundary section, and the output destination of the subsequent scalar load request is instructed to the memory request control unit As a result, the scalar load request is output to either the cache memory or the main storage unit 154 so that the scalar load instruction can be executed during execution of a plurality of vector store instructions.

さらに、関連技術として、特許文献2には、回路規模が小さくアドレス領域の拡張性があるアドレスデコーダが開示されている。   Furthermore, as a related technique, Patent Document 2 discloses an address decoder having a small circuit scale and an expandable address area.

特開2001−195389JP2001-195389 特開平7−44455JP 7-44455 A

しかしながら、上述したようなバウンダリチェックでは、バウンダリとLDSのアドレスとの比較を最低2回行う必要があり、遅延時間および回路規模の両面で不利となり、小規模で高速なプロセッサを設計する上で妨げとなる。以下でさらに詳細に説明する。   However, in the boundary check as described above, it is necessary to compare the boundary and the LDS address at least twice, which is disadvantageous in terms of both delay time and circuit scale, and hinders the design of a small and fast processor. It becomes. Further details will be described below.

図13に、バウンダリチェック回路1212の一例を示す。   FIG. 13 shows an example of the boundary check circuit 1212.

バウンダリ生成部1216は、B+((VL−1)×D)を計算するアドレス演算器131を備える。バウンダリ生成部1216は、アドレスを示すテーブル132をアドレス記憶部1215に登録する。LDS発行制御部1214は比較器133を備える。この比較結果に基づいてLDSの発行を許可するか否かが判定される。   The boundary generation unit 1216 includes an address calculator 131 that calculates B + ((VL−1) × D). The boundary generation unit 1216 registers a table 132 indicating addresses in the address storage unit 1215. The LDS issue control unit 1214 includes a comparator 133. Based on the comparison result, it is determined whether or not to permit the issuance of LDS.

Bはベースアドレスを、Dは距離を、VLはベクトル長をそれぞれ表し、、VSTによって、アドレスB、B+D、B+2D、・・・、B+((VL−1)×D)のデータが更新されるとする。この場合、更新するアドレスの最小値はB(Dが負のときはB+((VL−1)×D))、最大値はB+((VL−1)×D)(Dが負の時はB)となる。バウンダリ生成部1216はB+((VL−1)×D)を計算し、その計算結果をBと共にバウンダリとしてアドレス記憶部1215に登録する。このアドレス記憶部1215には、スヌーピング途中のVSTが複数ある場合に備えて、複数のバウンダリを記憶するだけのエントリが設けられている。そして、後続のLDSが発行されるときには、LDS発行制御部1214でLDSの指定するアドレス(以下、Addr_ldsとする)がバウンダリの範囲内にあるかどうかが判定される。LDSが
B≦Addr_lds≦B+((VL−1)×D) ・・・ (式1)
を満たせば、アドレスAddr_ldsのデータは先行のVSTによって更新される可能性があるため、スヌープの完了を待つ。逆に、(式1)を満たさなければVSTによってデータが更新されることがなく、スヌープの完了を待たずに、LDSが発行可能になる。
B represents a base address, D represents a distance, and VL represents a vector length, and data of addresses B, B + D, B + 2D,..., B + ((VL−1) × D) is updated by VST. And In this case, the minimum value of the address to be updated is B (B + ((VL−1) × D) when D is negative), and the maximum value is B + ((VL−1) × D) (when D is negative). B). The boundary generation unit 1216 calculates B + ((VL−1) × D), and registers the calculation result as a boundary with B in the address storage unit 1215. The address storage unit 1215 is provided with entries for storing a plurality of boundaries in preparation for a case where there are a plurality of VSTs in the middle of snooping. When a subsequent LDS is issued, the LDS issue control unit 1214 determines whether an address designated by the LDS (hereinafter referred to as Addr_lds) is within the boundary range. LDS is B ≦ Addr_lds ≦ B + ((VL−1) × D) (Formula 1)
If the above condition is satisfied, the data at the address Addr_lds may be updated by the preceding VST, so that the completion of the snoop is awaited. Conversely, if (Equation 1) is not satisfied, data is not updated by VST, and LDS can be issued without waiting for completion of snoop.

スカラプロセッサ121にバウンダリチェック回路1212を設けるために新たに必要となるハードウェアは、主に、バウンダリ生成部1216にB+((VL−1)×D)を計算するアドレス演算器131、アドレス記憶部1215にバウンダリとなるアドレス2個×(アドレス記憶部のエントリ数)の記憶容量、LDS発行制御部1214にバウンダリとAddr_ldsとを比較する比較器133が2×(アドレス記憶部のエントリ数)個である。   The hardware newly required for providing the boundary check circuit 1212 in the scalar processor 121 mainly includes an address calculator 131 for calculating B + ((VL−1) × D) in the boundary generation unit 1216, and an address storage unit. 1215 is the storage capacity of 2 boundary addresses × (number of entries in the address storage unit), and the LDS issue control unit 1214 is 2 × (number of entries in the address storage unit) for comparing 133 with the boundary and Addr_lds. is there.

図14に、比較器の構成を示す。Nビット比較器の場合、2logN+2段程度の論理演算が必要となる。32ビットの場合について考えると、比較器では、12段程度の論理演算が必要になり、さらに、LDS発行制御部1214では、2つの比較器の結果を入力とする論理積回路とアドレス記憶部1215のエントリ数分を入力とする論理和回路とが必要となるため、これらを合わせてLDS発行制御部1214は15段程度の論理演算が必要になる。   FIG. 14 shows the configuration of the comparator. In the case of an N-bit comparator, a logical operation of about 2 logN + 2 stages is required. Considering the case of 32 bits, the comparator requires about 12 stages of logical operations. Further, the LDS issue control unit 1214 has an AND circuit that receives the results of the two comparators and an address storage unit 1215. Therefore, the LDS issue control unit 1214 requires about 15 stages of logical operations.

このように、高性能で小規模なプロセッサを実現する上で、上述したバウンダリチェック方式では、遅延時間およびハードウェア量の両面で問題がある。   Thus, in realizing the high-performance and small-scale processor, the above-described boundary check method has problems in both delay time and hardware amount.

また、特許文献1記載の技術でも、バウンダリとLDSのアドレスとの比較を最低2回行う必要があり、遅延時間および回路規模の両面で問題がある。   In the technique described in Patent Document 1, it is necessary to compare the boundary and the LDS address at least twice, which causes problems in both delay time and circuit scale.

本発明の目的は、上述した問題点を解決し、ベクトルストア命令実行時におけるバウンダリ生成と後続のスカラロード命令の発行制御とを高速化し、かつ、ハードウェア量を削減できるバウンダリ実行制御システム、バウンダリ実行制御方法、及びバウンダリ実行制御プログラムを提供することにある。   SUMMARY OF THE INVENTION An object of the present invention is to solve the above-described problems, speed up boundary generation during execution of a vector store instruction and issue control of a subsequent scalar load instruction, and reduce the amount of hardware. An object of the present invention is to provide an execution control method and a boundary execution control program.

本発明の第1のバウンダリ実行制御システムは、キャッシュと、キャッシュに対してスヌープ処理を行うスヌープ処理回路と、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとして記憶するとともに、最小値と最大値との排他的論理和演算の結果からマスクを生成し、キャッシュに対するスカラロード命令の発行要求時に、バウンダリとマスクとに基づいて、スヌープ処理の完了を待たずにスカラロード命令の発行を許可するか否かを判定するバウンダリチェック回路とを備えることを特徴とする。   A first boundary execution control system according to the present invention includes a cache, a snoop processing circuit that performs a snoop process on the cache, and an address to be updated when a vector store instruction that is an instruction for storing a plurality of data in parallel is executed. At least one of the minimum and maximum values is stored as a boundary, a mask is generated from the result of the exclusive OR operation between the minimum and maximum values, and when a scalar load instruction is issued to the cache, the boundary is And a boundary check circuit that determines whether or not to issue a scalar load instruction without waiting for the completion of the snoop process based on the mask.

本発明の第2のバウンダリ実行制御システムは、キャッシュと、キャッシュに対してスヌープ処理を行うスヌープ処理回路と、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとして記憶するとともに、最小値および最大値がこれらの値の最上位ビットから何ビット目まで一致するかの検出を行い、該検出の結果とバウンダリとに基づいて、スヌープ処理の完了を待たずにスカラロード命令の発行を許可するか否かを判定するバウンダリチェック回路とを備えることを特徴とする。   The second boundary execution control system according to the present invention includes an address to be updated when a cache, a snoop processing circuit that performs a snoop process on the cache, and a vector store instruction that is an instruction for storing a plurality of data in parallel are executed. At least one of the minimum value and the maximum value is stored as a boundary, and the number of bits from which the minimum value and the maximum value coincide with the most significant bit is detected, and the detection result and the boundary are detected. And a boundary check circuit that determines whether or not to issue a scalar load instruction without waiting for the completion of the snoop process.

本発明のバウンダリ制御方法は、キャッシュとバウンダリチェック回路とスヌープ処理回路とを備えたバウンダリ実行制御システムにおけるバウンダリ実行制御方法において、バウンダリチェック回路が、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとしてアドレス記憶部に記憶するとともに、最小値と最大値との排他的論理和演算の結果からマスクを生成するバウンダリ生成ステップと、スヌープ処理回路が、キャッシュに対してスヌープ処理を行うスヌープ処理ステップと、バウンダリチェック回路が、キャッシュに対するスカラロード命令の発行要求時に、アドレス記憶部のバウンダリおよびマスクに基づいて、スヌープ処理の完了を待たずにスカラロード命令の発行を許可するか否かを判定するバウンダリチェックステップと、を備えることを特徴とする。   A boundary control method according to the present invention is a boundary execution control method in a boundary execution control system including a cache, a boundary check circuit, and a snoop processing circuit, wherein the boundary check circuit is a command for storing a plurality of data in parallel. At the time of execution of the store instruction, at least one of the minimum value and the maximum value of the address to be updated is stored as a boundary in the address storage unit, and a mask is generated from the result of the exclusive OR operation between the minimum value and the maximum value. A boundary generation step, a snoop processing step in which a snoop processing circuit performs a snoop process on the cache, and a boundary check circuit that snoops based on the boundary and mask of the address storage unit when issuing a scalar load instruction to the cache. And boundary checking step determines whether or not to permit the issuance of scalar load instruction without waiting for the physical completion, characterized in that it comprises a.

本発明のバウンダリ制御プログラムは、コンピュータに、バウンダリチェック回路が、複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとしてアドレス記憶部に記憶するとともに、最小値と最大値との排他的論理和演算の結果からマスクを生成するバウンダリ生成ステップと、スヌープ処理回路が、キャッシュに対してスヌープ処理を行うスヌープ処理ステップと、バウンダリチェック回路が、キャッシュに対するスカラロード命令の発行要求時に、アドレス記憶部のバウンダリおよびマスクに基づいて、スヌープ処理の完了を待たずにスカラロード命令の発行を許可するか否かを判定するバウンダリチェックステップと、を実行させることを特徴とする。   A boundary control program according to the present invention stores at least one of a minimum value and a maximum value of an address to be updated when a boundary check circuit executes a vector store instruction that is an instruction for storing a plurality of data in parallel. A boundary generation step for storing a mask in the address storage unit and generating a mask from the result of an exclusive OR operation between the minimum value and the maximum value, and a snoop processing step in which the snoop processing circuit performs a snoop process on the cache. The boundary check circuit determines whether or not to allow the issuance of the scalar load instruction without waiting for the completion of the snoop process, based on the boundary and mask of the address storage unit when the issuance of the scalar load instruction to the cache is requested. Boundary check step and And wherein the Rukoto.

本発明には、ベクトルストア命令実行時におけるバウンダリ生成と後続のスカラロード命令の発行制御とを高速化し、かつ、ハードウェア量を削減することができるという効果がある。   The present invention has an effect that the boundary generation and the issue control of the subsequent scalar load instruction at the time of executing the vector store instruction can be accelerated and the amount of hardware can be reduced.

次に、本発明について図面を参照して詳細に説明する。   Next, the present invention will be described in detail with reference to the drawings.

図1は、本発明のバウンダリ実行制御システムの第1の実施形態を示すブロック図である。   FIG. 1 is a block diagram showing a first embodiment of the boundary execution control system of the present invention.

図1を参照すると、本実施形態に係るバウンダリ実行制御システム1は、スカラプロセッサ11とベクトル(SIDM)プロセッサ12とL2キャッシュ13とメモリ14とから構成される。L1キャッシュ113はスカラプロセッサ11によって使用され、L2キャッシュ13はスカラプロセッサ11およびベクトルプロセッサ12により使用される。   Referring to FIG. 1, the boundary execution control system 1 according to the present embodiment includes a scalar processor 11, a vector (SIDM) processor 12, an L2 cache 13, and a memory 14. The L1 cache 113 is used by the scalar processor 11, and the L2 cache 13 is used by the scalar processor 11 and the vector processor 12.

また、スカラプロセッサ11はスヌープ処理を行うスヌープ処理回路111およびバウンダリチェック回路112を備える。バウンダリチェック回路112は、バウンダリ生成部1121、アドレス記憶部1122およびLDS発行制御部1123を備える。バウンダリ生成部1121はマスク生成回路1124を備える。本実施形態に係るバウンダリ実行制御システム1は、バウンダリ生成部1121がマスク生成回路1124を備える点が図12のシステムと異なる。   The scalar processor 11 also includes a snoop processing circuit 111 and a boundary check circuit 112 that perform a snoop process. The boundary check circuit 112 includes a boundary generation unit 1121, an address storage unit 1122, and an LDS issue control unit 1123. The boundary generation unit 1121 includes a mask generation circuit 1124. The boundary execution control system 1 according to the present embodiment is different from the system of FIG. 12 in that the boundary generation unit 1121 includes a mask generation circuit 1124.

図2に、本実施形態におけるバウンダリチェック回路112の詳細な回路図を示す。   FIG. 2 shows a detailed circuit diagram of the boundary check circuit 112 in the present embodiment.

図2において、バウンダリ生成部1121は、B+((VL−1)×D)を計算するアドレス演算器21およびマスク生成回路22を備える。バウンダリ生成部1121は、ベースアドレスBおよびマスク値を含むテーブル23をアドレス記憶部1122に登録する。LDS発行制御部1123は比較器24を備える。この比較器24での比較結果に基づいてLDSの発行を許可するか否かが判定される。   In FIG. 2, the boundary generation unit 1121 includes an address calculator 21 and a mask generation circuit 22 that calculate B + ((VL−1) × D). The boundary generation unit 1121 registers the table 23 including the base address B and the mask value in the address storage unit 1122. The LDS issue control unit 1123 includes a comparator 24. Based on the comparison result in the comparator 24, it is determined whether or not to permit the issuance of LDS.

本実施形態では、スカラプロセッサ11がVSTを発行すると、ベクトルプロセッサ12がVSTを実行するとともに、スカラプロセッサ11がバウンダリ生成を行い、LDS発行制御を行う。   In the present embodiment, when the scalar processor 11 issues a VST, the vector processor 12 executes the VST, and the scalar processor 11 performs boundary generation and performs LDS issue control.

本実施形態では、スカラプロセッサ11のLDS発行制御時にマスクを利用することにより、以下に説明するように、遅延時間とハードウェア量との削減を図ることができる。   In the present embodiment, by using a mask during the LDS issue control of the scalar processor 11, it is possible to reduce the delay time and the amount of hardware as described below.

まず、マスクの生成方法について説明する。なお、以下の説明でB、DおよびVLはそれぞれベースアドレス、距離およびベクトル長を表す。   First, a mask generation method will be described. In the following description, B, D, and VL represent a base address, a distance, and a vector length, respectively.

バウンダリ生成部1121では、演算器21によりB+((VL−1)×D)の値が計算された後、その計算結果とBとの排他的論理和がとられ、その結果の値のうち、最上位ビットから連続で0となっている部分を1、それ以外の部分を0としたマスク値が生成される。バウンダリ生成部1121は、Bおよび生成されたマスク値とを対応付けてをアドレス記憶部1122に登録する。   In the boundary generation unit 1121, the value of B + ((VL−1) × D) is calculated by the computing unit 21, and then the exclusive OR of the calculation result and B is taken. A mask value is generated in which the portion that is continuously 0 from the most significant bit is 1 and the other portions are 0. The boundary generation unit 1121 registers B and the generated mask value in association with each other in the address storage unit 1122.

LDS発行制御部1123は、生成されたマスク値の1となっているビット部分に対応するBのビット部分とAddr_lds(LDSの指定するアドレス)のビット部分との比較を行う。一致している場合には、LDSがロードするアドレスのデータがVSTにより更新されている可能性があるので、スヌープが完了するまでLDSを発行しない。不一致の場合には、LDSがロードするアドレスのデータがVSTによって更新されている可能性はないためLDSを発行可能とする。   The LDS issuance control unit 1123 compares the B bit portion corresponding to the bit portion having a generated mask value of 1 and the bit portion of Addr_lds (address designated by LDS). If they match, the address data loaded by the LDS may be updated by the VST, so the LDS is not issued until the snoop is completed. In the case of a mismatch, there is no possibility that the address data loaded by the LDS has been updated by the VST, so that the LDS can be issued.

図3(a)に、マスク生成の一例を示す。ここでは、Bを「110010010010」とし、B+((VL−1)×D)を「110011000100」としている。   FIG. 3A shows an example of mask generation. Here, B is “110010010010”, and B + ((VL−1) × D) is “110011000100”.

まず、これら2つのアドレスの排他的論理和がとられ、その結果の値は「000001010110」となり、その最上位から5ビットの部分の値が連続で0であるので、マスク値は「111110000000」となる。この場合、LDS発行制御部1123は、Bの上位5ビット部分とAddr_ldsの上位5ビット部分との比較を行う。LDS発行制御部1123は、比較の結果、一致の場合には、スヌープの結果を待ってからLDSを発行し、不一致の場合には、スヌープの結果を待たずにLDSを発行可能と判定する。   First, the exclusive OR of these two addresses is taken, the result value is “000001010110”, and the value of the 5-bit part from the most significant is 0 continuously, so the mask value is “111110000000” Become. In this case, the LDS issue control unit 1123 compares the upper 5 bits of B with the upper 5 bits of Addr_lds. If the comparison results in a match, the LDS issue control unit 1123 issues an LDS after waiting for the snoop result, and if not, the LDS issue control unit 1123 determines that the LDS can be issued without waiting for the snoop result.

以下に、このようなマスク値を用いたBとAddr_ldsとの一致比較により発行制御することの正当性について述べる。   In the following, the validity of issue control by means of coincidence comparison between B and Addr_lds using such a mask value will be described.

マスク値を用いて切り捨てられたビット部分を全て「0」とした値をBLとし、マスク値を用いて切り捨てられたビット部分を全て「1」とした値をBHとする。図3(a)の例では、BLは「110010000000」となり、BHは「110011111111」となる(図3(b)参照)。マスク値の「1」であるビット部分はBとB+((VL−1)×Dとの対応するビット部分が一致していることを示しているので、
BL ≦ B、B+((VL−1)×D) ≦ BH ・・・ (式2)
が成立し、これはDが負の場合も変わらない。
A value in which all the bit portions truncated using the mask value are “0” is set as BL, and a value in which all the bit portions truncated using the mask value are “1” is set as BH. In the example of FIG. 3A, BL is “110010000000” and BH is “110011111111” (see FIG. 3B). Since the bit portion of the mask value “1” indicates that the corresponding bit portion of B and B + ((VL−1) × D matches,
BL ≦ B, B + ((VL−1) × D) ≦ BH (Formula 2)
This holds true even when D is negative.

また、マスク値で「1」としたビット部分について、BとAddr_ldsとが一致する場合には、
BL ≦ Addr_lds ≦ BH ・・・ (式3)
が成立する。(式3)を満たさない場合、つまり、マスク値で「1」としたビット部分についてBとAddr_ldsとが一致しない場合、(式1)を満たすことはないと言える。
In addition, when B and Addr_lds match for the bit part set to “1” in the mask value,
BL ≦ Addr_lds ≦ BH (Formula 3)
Is established. If (Equation 3) is not satisfied, that is, if B and Addr_lds do not match for the bit portion with the mask value “1”, it can be said that (Equation 1) is not satisfied.

図3(a)および(b)の例では、BLは「110010000000」、BHは「110011111111」であり、例えば、、Addr_ldが「11001xxxxxxx」(Addr_lds0)および「11011xxxxxxx」(Addr_lds1)である場合について考える。今、マスク値の上位5ビットが「1」であるため、LDS発行制御部1123は、Addr_lds0およびAddr_lds1のそれぞれの上位5ビット部分がB「110010010010」の上位5ビット部分と一致するか否かを判定する。Addr_lds0は一致するので、スヌープの完了待ちが必要と判定され、Addr_lds1は一致しないので、LDSの発行が可能と判定される。   In the example of FIGS. 3A and 3B, BL is “110010000000” and BH is “110011111111”. For example, consider a case where Addr_ld is “11001xxxxxxx” (Addr_lds0) and “11011xxxxxxx” (Addr_lds1). . Since the upper 5 bits of the mask value are “1”, the LDS issue control unit 1123 determines whether the upper 5 bits of Addr_lds0 and Addr_lds1 match the upper 5 bits of B “110010010010”. judge. Since Addr_lds0 matches, it is determined that it is necessary to wait for snoop completion, and Addr_lds1 does not match, so it is determined that LDS can be issued.

図4に、バウンダリ生成およびLDS発行制御についてのフローチャートを示す。   FIG. 4 shows a flowchart for boundary generation and LDS issue control.

スカラプロセッサ11によりVSTが発行されると(S400)、ベクトルプロセッサ12がVSTを実行することにより、ベクトルレジスタ(図示せず)のデータがL2キャッシュ12へストアされる(S401)。S401と同時に、スカラプロセッサ11はスヌープ処理を開始し(S402)、バウンダリおよびマスクの生成が行なわれる(S403)。S402のスヌープ処理では、アドレス(B、B+D、B+2D、・・・、B+(VL-1)*D))の計算が行われ、計算されたアドレスと同じアドレスがL1キャッシュ113にあれば、そのエントリが無効化される。   When the VST is issued by the scalar processor 11 (S400), the vector processor 12 executes the VST, whereby data in a vector register (not shown) is stored in the L2 cache 12 (S401). Simultaneously with S401, the scalar processor 11 starts a snoop process (S402), and a boundary and a mask are generated (S403). In the snoop process of S402, the addresses (B, B + D, B + 2D,..., B + (VL-1) * D)) are calculated, and the same address as the calculated address is stored in the L1 cache 113. If so, the entry is invalidated.

次に、S403においてバウンダリおよびマスクが生成されると、バウンダリ生成部1121は、ベースアドレスBおよびマスク値をアドレス記憶部1122に登録する(S404)。   Next, when the boundary and the mask are generated in S403, the boundary generation unit 1121 registers the base address B and the mask value in the address storage unit 1122 (S404).

次に、スカラプロセッサ11がLDS発行要求を行うと(S405)、スカラプロセッサ11のLDS発行制御部1123は、LDSの指定するアドレスとアドレス記憶部1122から読み出したベースアドレスBとマスク値とを用いて、LDS発行の可否を判定する(S406、S407)。   Next, when the scalar processor 11 makes an LDS issue request (S405), the LDS issue control unit 1123 of the scalar processor 11 uses the address designated by the LDS, the base address B read from the address storage unit 1122, and the mask value. Whether or not LDS issuance is determined (S406, S407).

判定結果が「発行許可」であれば、LDSの発行要求に基づいてそのままLDSを発行し(S407、S408)、L1キャッシュ113からロードが開始される(S409)。一方、判定結果が「発行不許可」であれば、先行のVSTによりL1キャッシュが無効化されている可能性があるので、スヌープの完了を待ってからLDSを発行する(S407、S410、S411)。その後、L1キャッシュ113からロードが開始される(S412)。   If the determination result is “issue permission”, the LDS is issued as it is based on the LDS issue request (S407, S408), and loading from the L1 cache 113 is started (S409). On the other hand, if the determination result is “issue not permitted”, the L1 cache may be invalidated by the preceding VST, so the LDS is issued after waiting for the completion of the snoop (S407, S410, S411). . Thereafter, loading is started from the L1 cache 113 (S412).

図12のバウンダリチェック方式では、LDS発行制御部に2×(アドレス記憶部のエントリ数)個の比較器を必要とするが、本実施形態に係るバウンダリチェック方式では、LDS発行制御部には(アドレス記憶部のエントリ数)個の比較器を必要とするだけであり、その結果、LDS発行制御部の構成に必要なハードウェア量を削減することができる。   In the boundary check method of FIG. 12, the LDS issue control unit requires 2 × (number of entries in the address storage unit) comparators. However, in the boundary check method according to the present embodiment, the LDS issue control unit includes ( The number of entries in the address storage unit) is only required, and as a result, the amount of hardware required for the configuration of the LDS issue control unit can be reduced.

また、本実施形態におけるLDS発行制御部1123は、約10段程度の論理演算で構成可能である。   Further, the LDS issue control unit 1123 in the present embodiment can be configured with about 10 stages of logical operations.

このように、本実施形態では、図12のバウンダリチェック方式と比べ、遅延時間およびハードウェア量の両方の削減が行える。   Thus, in this embodiment, both the delay time and the hardware amount can be reduced as compared with the boundary check method of FIG.

なお、アドレス記憶部1122は、例えば、Ternary CAM(TCAM)を用いて実現される。TCAMは、キーで検索しデータにアクセスする通常のCAM(連想メモリ)に、マスク値を記憶する領域を付加したものである。TCAMを読み出す時には、キーにマスク値によるマスクをかけてアクセスする。ただし、本実施形態では、データを記憶する領域はなく、ヒットかミスヒットかのみを出力する。なお、アドレス記憶部1122の実現方法はこれに限定されるものではない。   Note that the address storage unit 1122 is realized using, for example, Ternary CAM (TCAM). The TCAM is obtained by adding an area for storing a mask value to a normal CAM (associative memory) that searches data with a key and accesses data. When reading the TCAM, the key is masked with a mask value for access. However, in this embodiment, there is no area for storing data, and only a hit or a miss hit is output. Note that the method of realizing the address storage unit 1122 is not limited to this.

また、本実施形態では、スカラプロセッサ11からVSTおよびLDSが発行され、ベクトルプロセッサ12がVSTを実行し、スカラプロセッサ11がLDS発行制御を行う構成であるが、これに限定されるものではない。   In this embodiment, VST and LDS are issued from the scalar processor 11, the vector processor 12 executes VST, and the scalar processor 11 performs LDS issue control. However, the present invention is not limited to this.

次に、本発明の第2の実施形態について説明する。   Next, a second embodiment of the present invention will be described.

第1の実施形態では、ベクトル長VLが判明するタイミングがベースアドレスBおよび距離Dが判明するタイミングよりも遅い場合、ベクトル長VLが判明するまでバウンダリ生成およびマスク生成を行うことができず、処理の遅延が生じる。そこで、第2の実施形態では、ベクトル長VLが判明するタイミングがベースアドレスBおよび距離Dのそれよりも遅い場合にも、遅延時間をより減少させること目的とする。   In the first embodiment, when the timing at which the vector length VL is determined is later than the timing at which the base address B and the distance D are determined, boundary generation and mask generation cannot be performed until the vector length VL is determined. Delay occurs. Therefore, the second embodiment aims to further reduce the delay time even when the timing at which the vector length VL is determined is later than that of the base address B and the distance D.

図5に、第2の実施形態におけるバウンダリチェック回路の構成を示す。   FIG. 5 shows a configuration of a boundary check circuit according to the second embodiment.

第2の実施形態では、第1の実施形態のバウンダリチェック回路の構成に加え、エンコーダ51およびセレクタ52が設けられている。これにより、ベクトル長VLが判明する前に、ベースアドレスBおよび距離Dのみを用いてマスクの候補を複数作成しておき、ベクトル長VLが判明した時に、ベクトル長VLの値によって、作成した複数のマスクのうち1つを選択するようにするものである。その結果、第2の実施形態では、第1の実施形態における回路図(図2)と比較すると、複数の演算器を用意する分のハードウェアの追加が必要となるが、ベクトル長VLが判明してからマスクを生成するまでの処理を高速化することができる。   In the second embodiment, in addition to the configuration of the boundary check circuit of the first embodiment, an encoder 51 and a selector 52 are provided. Thereby, before the vector length VL is determined, a plurality of mask candidates are created using only the base address B and the distance D, and when the vector length VL is determined, the plurality of created candidates are determined based on the value of the vector length VL. One of the masks is selected. As a result, in the second embodiment, compared to the circuit diagram (FIG. 2) in the first embodiment, it is necessary to add hardware for preparing a plurality of arithmetic units, but the vector length VL is found. Then, the process from the generation of the mask to the generation of the mask can be accelerated.

具体的に、第2の実施形態では、アドレス演算器21aはベクトル長VLが4Dとしてアドレス演算を行う。アドレス演算器21bはベクトル長VLが16Dとしてアドレス演算を行う。アドレス演算器21cはベクトル長VLが64Dとしてアドレス演算を行う。アドレス演算器21dはベクトル長が256Dとしてアドレス演算を行う。   Specifically, in the second embodiment, the address calculator 21a performs an address calculation with a vector length VL of 4D. The address calculator 21b performs an address calculation with a vector length VL of 16D. The address calculator 21c performs an address calculation with a vector length VL of 64D. The address calculator 21d performs an address calculation with a vector length of 256D.

エンコーダ51は、ベクトル長VLとアドレス演算器との対応関係を示すテーブル(図示しない)を持っている。ベクトル長VLが1〜3Dの場合のバウンダリはベクトル長VLが4Dの場合のバウンダリに含まれるため、上記テーブルでは、ベクトル長VLが1〜4Dとアドレス演算器21aとが対応付けられる。また、ベクトル長VLが5〜15Dの場合のバウンダリはベクトル長VLが16Dの場合のバウンダリに含まれるため、上記テーブルでは、ベクトル長VLが5〜16Dとアドレス演算器21bとが対応付けられる。また、ベクトル長VLが17〜63Dの場合のバウンダリはベクトル長VLが64Dの場合のバウンダリに含まれるため、上記テーブルでは、ベクトル長VLが17〜64Dとアドレス演算器21cとが対応付けられる。また、ベクトル長VLが65〜255Dの場合のバウンダリはベクトル長VLが256Dの場合のバウンダリに含まれるため、上記テーブルでは、ベクトル長VLが65〜256Dとアドレス演算器21dとが対応付けられる。   The encoder 51 has a table (not shown) indicating the correspondence between the vector length VL and the address calculator. Since the boundary when the vector length VL is 1 to 3D is included in the boundary when the vector length VL is 4D, in the above table, the vector length VL is 1 to 4D and the address calculator 21a is associated. Further, since the boundary when the vector length VL is 5 to 15D is included in the boundary when the vector length VL is 16D, in the above table, the vector length VL is 5 to 16D and the address calculator 21b is associated. Further, since the boundary when the vector length VL is 17 to 63D is included in the boundary when the vector length VL is 64D, in the above table, the vector length VL is 17 to 64D and the address calculator 21c is associated. Further, since the boundary when the vector length VL is 65 to 255D is included in the boundary when the vector length VL is 256D, in the above table, the vector length VL is 65 to 256D and the address calculator 21d is associated.

エンコーダ51は、ベクトル長VLを読み出すと、テーブルに基づいて、どのマスクを選択すべきかを示すセレクト信号を生成する。次に、セレクタ52は、そのセレクト信号を用いてあらかじめ生成しておいた複数のマスクのうち1つを選択する。例えば、エンコーダで読みだされたベクトル長VLが2Dの場合、エンコーダ51は、テーブルに基づいて、アドレス演算器21aから生成されたマスクを選択する旨を示すセレクト信号を生成する。   When reading the vector length VL, the encoder 51 generates a select signal indicating which mask is to be selected based on the table. Next, the selector 52 selects one of a plurality of masks generated in advance using the select signal. For example, when the vector length VL read by the encoder is 2D, the encoder 51 generates a select signal indicating that the mask generated from the address calculator 21a is selected based on the table.

なお、エンコーダ51はゲート8段程度の論理演算回路で構成でき、また、セレクタ52は、4つのマスクから1つを選択する場合、ゲート4段程度の論理演算回路で構成できる。   The encoder 51 can be composed of a logic operation circuit having about 8 stages of gates, and the selector 52 can be composed of a logic operation circuit having about 4 stages of gates when one is selected from four masks.

第2の実施形態では、ベクトル長VLが判明する前にマスク値の候補を作成することにより、バウンダリの生成を高速化することができる。   In the second embodiment, by generating mask value candidates before the vector length VL is determined, the boundary generation can be accelerated.

次に、本発明の第3の実施形態について説明する。   Next, a third embodiment of the present invention will be described.

第3の実施形態では、アドレス記憶部1122の容量を削減するために、マスク値の圧縮を行う。   In the third embodiment, the mask value is compressed in order to reduce the capacity of the address storage unit 1122.

図6に、12ビットのマスク値を4ビット単位に分け、その各4ビットを1ビットに圧縮する例を示す。この例では、圧縮する各4ビットのうち最下位ビットをまとめて3ビットのマスク値としてアドレス記憶部1122に登録する。なお、実装時には、マスク値の生成時に登録するビットのみを生成するようにしても良い。その結果、第3の実施形態では、アドレス記憶部のうちマスク値のための記憶容量を4分の1程度に削減することができる。   FIG. 6 shows an example in which a 12-bit mask value is divided into 4-bit units and each 4 bits are compressed into 1 bit. In this example, the least significant bits of the 4 bits to be compressed are collectively registered in the address storage unit 1122 as a 3-bit mask value. At the time of mounting, only the bits that are registered when the mask value is generated may be generated. As a result, in the third embodiment, the storage capacity for the mask value in the address storage unit can be reduced to about a quarter.

LDS発行制御部1123では、アドレス記憶部1122から圧縮されたマスク値を読み出し、マスク値の各ビットを同じ値の4ビットにそれぞれ拡張し、解凍後のマスクとして使用する。図6の例の場合、解凍後のマスクは「111100000000」となる。圧縮前のマスク値「111110000000」と解凍後のマスク値「111100000000」とを比べると、解凍後のマスクは上位から5ビット目が「1」から「0」となっている。その結果、発行できるLDSを選択する精度は下がることになるが、アドレス記憶部の容量を削減することができる。第3の実施形態では、4ビットを1ビットに圧縮する場合について説明したが、より高い精度を求められる場合には、全体の圧縮率を下げたり(2ビットから1ビットに圧縮するようにしたり)、上位のみ圧縮率を下げる等しても良い。   The LDS issue control unit 1123 reads out the compressed mask value from the address storage unit 1122, expands each bit of the mask value to 4 bits of the same value, and uses it as a mask after decompression. In the example of FIG. 6, the mask after decompression is “111100000000”. Comparing the uncompressed mask value “111110000000” with the decompressed mask value “111100000000”, the decompressed mask has the fifth bit from “1” to “0” from the top. As a result, the accuracy of selecting an LDS that can be issued is lowered, but the capacity of the address storage unit can be reduced. In the third embodiment, the case of compressing 4 bits to 1 bit has been described. However, when higher accuracy is required, the overall compression rate can be reduced (from 2 bits to 1 bit) ), The compression rate may be lowered only at the upper level.

なお、この圧縮率は、求められている精度や回路規模によって、設計者が任意に選択することができる。   The compression rate can be arbitrarily selected by the designer depending on the required accuracy and circuit scale.

次に、本発明の第4の実施形態について説明する。   Next, a fourth embodiment of the present invention will be described.

図7に、第1および第2の実施形態における「VSTで更新されるアドレス」、「LDS追い越し不可と判定される範囲」を示す。第1および第2の実施の形態では、「VSTで更新されるアドレス」でないにも関わらず「LDS追い越し不可」と判定される領域が多いという問題がある。第4の実施形態では、2種類のマスクを利用することにより、「VSTで更新されるアドレス」でないにも関わらず「LDS追い越し不可」と判定される領域を少なくし、判定精度を向上させることを目的とする。   FIG. 7 shows “addresses updated by VST” and “range in which it is determined that LDS overtaking is impossible” in the first and second embodiments. In the first and second embodiments, there is a problem that there are many areas that are determined as “impossible to overtake LDS” even though they are not “addresses updated by VST”. In the fourth embodiment, by using two types of masks, it is possible to reduce an area that is determined as “impossible to overtake LDS” even though it is not an “address updated by VST”, and to improve determination accuracy. With the goal.

距離Dが2のべき乗の場合には、アドレスの上位ビットとの比較だけでなく、アドレスの下位ビットとの比較も合わせてバウンダリチェックを行うことができる。VSTによって実際に更新されるアドレスは、距離Dの等間隔で更新される。特に、Dの値が2のべき乗(2,4,8,16、・・・2のn乗)の倍数の場合、更新されるアドレスの下位ビットは常に一定となる。   When the distance D is a power of 2, the boundary check can be performed not only with comparison with the upper bits of the address but also with comparison with the lower bits of the address. The addresses that are actually updated by the VST are updated at equal intervals of the distance D. In particular, when the value of D is a power of 2 (a power of 2, 4, 8, 16,... 2 to the nth power), the lower bits of the address to be updated are always constant.

例えば、VSTの距離Dが「10」(2進、10進では2)で、ベースアドレスBが偶数の場合(2進で最下位ビットが「0」)は、更新される可能性のあるアドレスは偶数のアドレスのみである。よって、後続のLDSのアドレスが奇数(最下位ビットが「1」)であれば、LDSを追い越し実行できる。逆に、ベースアドレスBが奇数の場合(最下位ビットが「1」)は、LDSのアドレスが偶数(最下位ビットが「0」)であれば、実行できる。つまり、ベースアドレスBの最下位ビットとLDSのアドレスが一致しなければ、LDSは実行可能である。同様に、Dが「100」(10進で4)の場合には、最下位2ビットついて比較し、一致しなければLDSは実行可能となる。   For example, when the distance D of the VST is “10” (binary and decimal 2) and the base address B is an even number (binary and the least significant bit is “0”), the address that may be updated Are only even addresses. Therefore, if the address of the subsequent LDS is an odd number (the least significant bit is “1”), the LDS can be overtaken and executed. Conversely, if the base address B is an odd number (the least significant bit is “1”), it can be executed if the LDS address is an even number (the least significant bit is “0”). That is, if the least significant bit of the base address B does not match the LDS address, LDS can be executed. Similarly, when D is “100” (4 in decimal), the least significant 2 bits are compared, and if they do not match, LDS can be executed.

更新されるアドレスの下位何ビットが一定となるかはDによって決まる。Dの下位ビットが「10」であれば1ビット、「100」であれば2ビット、「1000」であれば3ビットとなる。   The lower number of bits of the address to be updated is determined by D. If the lower bit of D is “10”, it is 1 bit, “100” is 2 bits, and “1000” is 3 bits.

図8に、Bが「110010010010」、Dが「000000010000」の場合の例を示す。Dの下位ビットが「10000」なので、B、B+D、B+2D、B+3Dは下位4ビットが一致するはずである。実際に計算すると、Bが「110010010010」、B+Dが「110010100010」、B+2Dが「110010110010」、B+3Dが「110011000010」となり、下位4ビットが一致している。   FIG. 8 shows an example in which B is “110010010010” and D is “000000010000”. Since the lower bits of D are “10000”, the lower 4 bits of B, B + D, B + 2D, and B + 3D should match. When actually calculated, B is “110010010010”, B + D is “110010100010”, B + 2D is “110010110010”, B + 3D is “110011000010”, and the lower 4 bits match.

第4の実施形態におけるバウンダリ実行制御システムは、第1ないし第3の実施形態と比較すると、バウンダリ生成部の構成のみが異なる。   The boundary execution control system according to the fourth embodiment is different from the first to third embodiments only in the configuration of the boundary generation unit.

図9に、第4の実施形態におけるバウンダリ生成部91およびアドレス記憶部92を示す。   FIG. 9 shows a boundary generation unit 91 and an address storage unit 92 in the fourth embodiment.

バウンダリ生成部91はアドレス演算器911およびマスク生成回路912を備える。マスク生成回路912は、第1の実施形態と同様にBおよびB+((VL−1)×D)から第1のマスクを生成するとともに、距離Dから第2のマスクを生成する。第2のマスクは、距離Dにおいて最下位ビットから連続してゼロとなっているビット部分に対応するビット部分が全て「1」、それ以外の対応するビット部分が全て「0」となるように生成される。次に、マスク生成回路912は、第1のマスクおよび第2のマスクの排他的論理和を生成し、アドレス記憶部92に登録する。LDS発行制御部1123は、第1のマスクおよび第2のマスクの排他的論理和で「1」となっているビットのみを比較する。その他の処理は、第1の実施形態と同様であるため、詳細な説明を省略する。   The boundary generation unit 91 includes an address calculator 911 and a mask generation circuit 912. The mask generation circuit 912 generates a first mask from B and B + ((VL−1) × D) and generates a second mask from the distance D as in the first embodiment. The second mask is such that all bit portions corresponding to bit portions that are continuously zero from the least significant bit at distance D are all “1”, and all other corresponding bit portions are “0”. Generated. Next, the mask generation circuit 912 generates an exclusive OR of the first mask and the second mask and registers it in the address storage unit 92. The LDS issue control unit 1123 compares only the bits that are “1” in the exclusive OR of the first mask and the second mask. Since other processes are the same as those in the first embodiment, detailed description thereof is omitted.

図10に、第4の実施形態における「VSTで更新されるアドレス」、「LDS追い越し不可と判定される範囲」を示す。第4の実施形態では、図10に示すように、2種類のマスクを利用することにより、「VSTで更新されるアドレス」でないにも関わらず「LDS追い越し不可」と判定される領域を少なくし、判定精度を向上させることができる。   FIG. 10 shows “address updated by VST” and “range determined to be overtaken by LDS” in the fourth embodiment. In the fourth embodiment, as shown in FIG. 10, by using two types of masks, an area that is determined as “LDS overtaking impossible” despite being not “address updated by VST” is reduced. The determination accuracy can be improved.

なお、第4の実施形態と第2の実施形態との組み合わせ、第4の実施形態と第3の実施形態との組み合わせ等も可能である。   A combination of the fourth embodiment and the second embodiment, a combination of the fourth embodiment and the third embodiment, and the like are also possible.

なお、第4の実施形態と第3の実施形態との組み合わせ(12ビットのマスク値を4ビット単位に分けその各4ビットを1ビットに圧縮する上記例)では、第2のマスクについては、圧縮する各4ビットのうち、最下位ビットではなく最上位ビットをまとめて3ビットのマスク値としてアドレス記憶部1122に登録するようにすると良い。その他については、第4の実施形態および第3の実施形態と同様である。   In the combination of the fourth embodiment and the third embodiment (the above example in which a 12-bit mask value is divided into 4-bit units and each 4 bits is compressed to 1 bit), the second mask is Of the 4 bits to be compressed, the most significant bit, not the least significant bit, may be registered in the address storage unit 1122 as a 3-bit mask value. About others, it is the same as that of 4th Embodiment and 3rd Embodiment.

本発明の第1の実施形態におけるバウンダリ実行制御システムを示すブロック図である。It is a block diagram which shows the boundary execution control system in the 1st Embodiment of this invention. バウンダリチェック回路112の詳細な回路図である。2 is a detailed circuit diagram of a boundary check circuit 112. FIG. マスク生成の一例を示す図である。It is a figure which shows an example of mask generation. バウンダリ生成およびLDS発行制御についてのフローチャートを示す図である。It is a figure which shows the flowchart about boundary generation and LDS issue control. 本発明の第2の実施形態におけるバウンダリチェック回路の構成を示す図である。It is a figure which shows the structure of the boundary check circuit in the 2nd Embodiment of this invention. マスク値を圧縮する例を示す図である。It is a figure which shows the example which compresses a mask value. 本発明の第1および第2の実施形態における「VSTで更新されるアドレス」、「LDS追い越し不可と判定される範囲」を示す図である。It is a figure which shows the "address updated by VST" in the 1st and 2nd embodiment of this invention, and the "range determined as LDS overtaking impossible." Bが「110010010010」、Dが「000000010000」の場合の更新されるアドレスを示す図である。It is a figure which shows the address updated when B is "110010010010" and D is "000000010000". 本発明の第4の実施形態におけるバウンダリ生成部91およびアドレス記憶部92を示す図である。It is a figure which shows the boundary production | generation part 91 and the address memory | storage part 92 in the 4th Embodiment of this invention. 本発明の第4の実施形態における「VSTで更新されるアドレス」、「LDS追い越し不可と判定される範囲」を示す図である。It is a figure which shows "the address updated by VST" in the 4th Embodiment of this invention, and the "range judged as LDS overtaking impossible." 関連技術におけるスヌープ処理回路の例を示す図である。It is a figure which shows the example of the snoop processing circuit in related technology. 関連技術におけるバウンダリ方式のバウンダリ実行制御システム120の一例を示す図である。It is a figure which shows an example of the boundary type | mold boundary execution control system 120 in related technology. 関連技術におけるバウンダリチェック回路1212の一例を示す図である。It is a figure which shows an example of the boundary check circuit 1212 in related technology. 比較器の構成を示す図である。It is a figure which shows the structure of a comparator. 特許文献1のバウンダリ実行制御装置15を示す図である。It is a figure which shows the boundary execution control apparatus 15 of patent document 1. FIG.

符号の説明Explanation of symbols

1 バウンダリ実行制御システム
11 スカラプロセッサ
111 スヌープ処理回路
112 バウンダリチェック回路
1121 バウンダリ生成部
1122 アドレス記憶部
1123 スカラロード命令発行制御部(LDS発行制御部)
1124 マスク生成回路
113 L1キャッシュ
12 ベクトルプロセッサ
13 L2キャッシュ
14 メモリ
21 アドレス演算器
22 マスク生成回路
23 テーブル
24 比較器
51 エンコーダ
52 セレクタ
91 バウンダリ生成部
911 アドレス演算器
912 マスク生成回路
92 アドレス記憶部
120 バウンダリ実行制御システム121 スカラプロセッサ
1211 スヌープ処理回路
1212 バウンダリチェック回路
1213 バウンダリ生成部
1214 LDS発行制御部
1215 アドレス記憶部
1216 バウンダリ生成部
122 ベクトルプロセッサ
123 L2キャッシュ
124 メモリ
13 バウンダリチェック回路
131 バウンダリ生成部
132 テーブル
133 比較器
1 Boundary execution control system 11 Scalar processor 111 Snoop processing circuit 112 Boundary check circuit 1121 Boundary generation unit 1122 Address storage unit 1123 Scalar load instruction issue control unit (LDS issue control unit)
1124 Mask generation circuit 113 L1 cache 12 Vector processor 13 L2 cache 14 Memory 21 Address calculator 22 Mask generation circuit 23 Table 24 Comparator 51 Encoder 52 Selector 91 Boundary generation unit 911 Address calculation unit 912 Mask generation circuit 92 Address storage unit 120 Boundary Execution control system 121 Scalar processor 1211 Snoop processing circuit 1212 Boundary check circuit 1213 Boundary generation unit 1214 LDS issue control unit 1215 Address storage unit 1216 Boundary generation unit 122 Vector processor 123 L2 cache 124 Memory 13 Boundary check circuit 131 Boundary generation unit 132 Table 133 Comparator

Claims (28)

キャッシュと、
前記キャッシュに対してスヌープ処理を行うスヌープ処理回路と、
複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新する
アドレスの最小値および最大値の少なくともいずれか一方をバウンダリとして記憶すると
ともに、前記最小値と前記最大値との排他的論理和演算の結果で最上位ビットから連続で
0となっているビット部分を全て1とし、それ以外のビット部分を0としたマスクを生成
し、
前記キャッシュに対するスカラロード命令の発行要求時に、前記マスクで1となってい
るビット部分に対応する、前記バウンダリの最小値または最大値のビット部分と前記スカ
ラロード命令の指定するアドレスのビット部分とを比較し、比較結果に基づいて前記スヌ
ープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定するバウ
ンダリチェック回路と、
を備えたことを特徴とするバウンダリ実行制御システム。
Cache,
A snoop processing circuit for performing a snoop process on the cache;
When executing a vector store instruction that is an instruction for storing a plurality of data in parallel, at least one of the minimum and maximum addresses to be updated is stored as a boundary, and the minimum value and the maximum value are exclusive. A mask in which all the bit parts that are consecutively 0 from the most significant bit in the result of the logical OR operation are set to 1 and the other bit parts are set to 0,
When issuing a scalar load instruction to the cache, a bit part of the minimum value or maximum value of the boundary corresponding to a bit part which is 1 in the mask and a bit part of an address designated by the scalar load instruction A boundary check circuit that compares and determines whether or not to issue the scalar load instruction without waiting for the completion of the snoop process based on the comparison result;
A boundary execution control system comprising:
前記バウンダリ生成部は、ベクトルを構成するベースアドレスと距離とベクトル長とを
含む情報に基づいて、前記バウンダリおよび前記マスクを生成することを特徴とする請求
項1記載のバウンダリ実行制御システム。
The boundary execution control system according to claim 1, wherein the boundary generation unit generates the boundary and the mask based on information including a base address, a distance, and a vector length constituting a vector.
前記バウンダリ生成部は、前記ベースアドレスおよび前記距離を含む情報に基づいて前
記マスクの候補を複数生成し、前記ベクトル長を示す情報が判明すると、前記ベースアド
レスと前記距離と前記ベクトル長とを含む情報に基づいて前記候補の中からマスク選択を
行うことを特徴とする請求項2に記載のバウンダリ実行制御システム。
The boundary generation unit generates a plurality of mask candidates based on the information including the base address and the distance, and when the information indicating the vector length is found, includes the base address, the distance, and the vector length. 3. The boundary execution control system according to claim 2, wherein a mask is selected from the candidates based on information.
前記バウンダリ生成部は、前記生成されたマスクを圧縮して前記アドレス記憶部に格納
し、
前記スカラロード命令発行制御部は前記圧縮されたマスクを解凍して前記判定を行うこ
とを特徴とする請求項1ないし3のいずれかに記載のバウンダリ実行制御システム。
The boundary generation unit compresses the generated mask and stores it in the address storage unit,
4. The boundary execution control system according to claim 1, wherein the scalar load instruction issue control unit performs the determination by decompressing the compressed mask. 5.
前記バウンダリ生成部は、前記生成されたマスクのうち所定の上位ビットのみ圧縮率を
下げることを特徴とする請求項4記載のバウンダリ実行制御システム。
5. The boundary execution control system according to claim 4, wherein the boundary generation unit lowers the compression rate only for a predetermined high-order bit of the generated mask.
前記バウンダリ生成部は、ベクトルを構成するベースアドレスと距離とベクトル長との
うち前記距離を示す情報が2のべき乗であるときに、前記距離を示す情報に基づいて他の
マスクを生成し、
前記スカラーロード命令発行制御部は、前記バウンダリと前記マスクと前記他のマスク
とに基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可す
るか否かを判定することを特徴とする請求項2ないし5のいずれかに記載のバウンダリ実
行制御システム。
The boundary generation unit generates another mask based on the information indicating the distance when the information indicating the distance is a power of 2 among the base address, the distance, and the vector length constituting the vector,
The scalar load instruction issuance control unit determines whether to permit the issuance of the scalar load instruction without waiting for the completion of the snoop process, based on the boundary, the mask, and the other mask. 6. A boundary execution control system according to claim 2, wherein
前記バウンダリ生成部は、前記距離を示す情報において最下位から連続して0となって
いるビット部分を1とし、それ以外のビット部分を0とした前記他のマスクを生成し、前
記他のマスクと前記マスクとの排他的論理和をとり、
前記スカラーロード命令制御部は、前記排他的論理和演算結果において1となっている
ビット部分に対してのみ、前記バウンダリの最小値または最大値と前記スカラロード命令
のアドレスとを比較し、前記比較結果に基づいて前記スヌープ処理の完了を待たずに前記
スカラロード命令の発行を許可するか否かを判定することを特徴とする請求項6記載のバ
ウンダリ実行制御システム。
The boundary generation unit generates the other mask in which the bit portion that is continuously 0 from the least significant in the information indicating the distance is set to 1, and the other bit portions are set to 0, and the other mask is generated. And the mask and the exclusive OR
The scalar load instruction control unit compares the minimum or maximum value of the boundary with the address of the scalar load instruction only for the bit portion that is 1 in the exclusive OR operation result, and the comparison 7. The boundary execution control system according to claim 6, wherein whether to issue the scalar load instruction is permitted without waiting for completion of the snoop process based on a result.
前記バウンダリ生成部は、前記生成された他のマスクを圧縮して前記アドレス記憶部に
格納し、
前記スカラロード命令発行制御部は前記圧縮された他のマスクを解凍して前記判定を行
うことを特徴とする請求項6または7記載のバウンダリ実行制御システム。
The boundary generation unit compresses the generated other mask and stores it in the address storage unit,
8. The boundary execution control system according to claim 6, wherein the scalar load instruction issue control unit performs the determination by decompressing the compressed other mask.
前記バウンダリ生成部は、前記生成された他のマスクのうち所定の下位ビットのみ圧縮
率を下げることを特徴とする請求項8記載のバウンダリ実行制御システム。
9. The boundary execution control system according to claim 8, wherein the boundary generation unit lowers the compression rate only for a predetermined lower bit among the generated other masks.
キャッシュとバウンダリチェック回路とスヌープ処理回路とを備えたバウンダリ実行制
御システムにおけるバウンダリ実行制御方法において、
前記バウンダリチェック回路が、複数のデータを並行して格納する命令であるベクトル
ストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一
方をバウンダリとしてアドレス記憶部に記憶するとともに、前記最小値と前記最大値との
排他的論理和演算の結果で最上位ビットから連続で0となっているビット部分を1とし、
それ以外のビット部分を0としたマスクを生成するバウンダリ生成ステップと、
前記スヌープ処理回路が、前記キャッシュに対してスヌープ処理を行うスヌープ処理ス
テップと、
前記バウンダリチェック回路が、前記キャッシュに対するスカラロード命令の発行要求
時に、前記マスクで1となっているビット部分に対してのみ、前記バウンダリの最小値あ
るいは最大値と前記スカラロード命令の指定するアドレスのビット部分とを比較し、比較
結果に基づいて前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可す
るか否かを判定するバウンダリチェックステップと、
を備えることを特徴とするバウンダリ実行制御方法。
In a boundary execution control method in a boundary execution control system including a cache, a boundary check circuit, and a snoop processing circuit,
When the boundary check circuit executes a vector store instruction which is an instruction for storing a plurality of data in parallel, at least one of the minimum value and the maximum value of the address to be updated is stored as a boundary in the address storage unit, The bit portion that is continuously 0 from the most significant bit in the result of the exclusive OR operation of the minimum value and the maximum value is set to 1,
A boundary generation step for generating a mask in which the other bit portions are set to 0;
A snoop processing step in which the snoop processing circuit performs snoop processing on the cache; and
When the boundary check circuit issues a scalar load instruction issuance request to the cache, only the minimum or maximum value of the boundary and the address specified by the scalar load instruction of the bit part which is 1 in the mask. A boundary check step for comparing the bit part and determining whether to allow the issue of the scalar load instruction without waiting for the completion of the snoop process based on the comparison result;
A boundary execution control method comprising:
前記バウンダリ生成ステップにおいて、ベクトルを構成するベースアドレスと距離とベ
クトル長とを含む情報に基づいて、前記バウンダリおよび前記マスクを生成することを特
徴とする請求項10記載のバウンダリ実行制御方法。
The boundary execution control method according to claim 10, wherein, in the boundary generation step, the boundary and the mask are generated based on information including a base address, a distance, and a vector length constituting a vector.
前記バウンダリ生成ステップにおいて、前記ベースアドレスと前記距離とを含む情報に
基づいて前記マスクの候補を複数生成し、前記ベクトル長を含む情報が判明すると、前記
ベースアドレスと前記距離と前記ベクトル長とを含む情報に基づいて前記候補の中からマ
スク選択を行うことを特徴とする請求項11に記載のバウンダリ実行制御方法。
In the boundary generation step, a plurality of mask candidates are generated based on information including the base address and the distance, and when the information including the vector length is found, the base address, the distance, and the vector length are determined. 12. The boundary execution control method according to claim 11, wherein a mask is selected from the candidates based on information included.
前記バウンダリ生成ステップにおいて、
前記生成されたマスクを圧縮して記憶し、前記判定時には前記圧縮されたマスクを解凍す
ることを特徴とする請求項10ないし12のいずれかに記載のバウンダリ実行制御方法。
In the boundary generation step,
13. The boundary execution control method according to claim 10, wherein the generated mask is compressed and stored, and the compressed mask is decompressed at the time of the determination.
前記バウンダリ生成ステップにおいて、
前記生成されたマスクのうち所定の上位ビットのみ圧縮率を下げることを特徴とする請求
項13記載のバウンダリ実行制御方法。
In the boundary generation step,
14. The boundary execution control method according to claim 13, wherein the compression rate is lowered only for a predetermined upper bit of the generated mask.
前記バウンダリ生成ステップにおいて、
ベクトルを構成するベースアドレスと距離とベクトル長とのうち前記距離を示す情報が2
のべき乗であるときに、前記距離を示す情報に基づいて他のマスクを生成し、
前記バウンダリチェックステップは、前記バウンダリと前記マスクと前記他のマスクと
に基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可する
か否かを判定することを特徴とする請求項11ないし14のいずれかに記載のバウンダリ
実行制御方法。
In the boundary generation step,
Information indicating the distance among the base address, distance, and vector length constituting the vector is 2
Generating another mask based on the information indicating the distance when it is a power of
In the boundary check step, it is determined whether or not to issue the scalar load instruction without waiting for the completion of the snoop process based on the boundary, the mask, and the other mask. The boundary execution control method according to claim 11.
前記バウンダリ生成ステップにおいて、
前記距離を示す情報において最下位から連続して0となっているビット部分を1とし、
それ以外のビット部分を0として前記他のマスクを生成した後、前記他のマスクと前記マ
スクとの排他的論理和を生成し、
前記バウンダリチェックステップにおいて、
前記排他的論理和演算結果において1となっているビット部分に対してのみ、前記バウ
ンダリの最小値あるいは最大値と前記スカラロード命令の指定するアドレスのビット部分
とを比較し、前記比較結果に基づいて前記スヌープ処理の完了を待たずに前記スカラロー
ド命令の発行を許可するか否かを判定することを特徴とする請求項15記載のバウンダリ
実行制御方法。
In the boundary generation step,
In the information indicating the distance, the bit portion that is continuously 0 from the lowest is set to 1,
After generating the other mask with the other bit parts set to 0, an exclusive OR of the other mask and the mask is generated,
In the boundary check step,
Only for the bit portion that is 1 in the exclusive OR operation result, the minimum value or maximum value of the boundary is compared with the bit portion of the address specified by the scalar load instruction, and based on the comparison result 16. The boundary execution control method according to claim 15, wherein it is determined whether or not to issue the scalar load instruction without waiting for the completion of the snoop process.
前記バウンダリ生成ステップにおいて、
前記生成された他のマスクを圧縮して前記アドレス記憶部に格納し、前記判定時には前
記圧縮された他のマスクを解凍することを特徴とする請求項15または16記載のバウン
ダリ実行制御方法。
In the boundary generation step,
17. The boundary execution control method according to claim 15, wherein the generated other mask is compressed and stored in the address storage unit, and the compressed other mask is decompressed at the time of the determination.
前記バウンダリ生成ステップにおいて、前記生成された他のマスクのうち所定の下位ビ
ットのみ圧縮率を下げることを特徴とする請求項17記載のバウンダリ実行制御方法。
18. The boundary execution control method according to claim 17, wherein, in the boundary generation step, the compression rate is lowered only for a predetermined lower bit among the other generated masks.
コンピュータに、
バウンダリチェック回路が、複数のデータを並行して格納する命令であるベクトルスト
ア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方を
バウンダリとしてアドレス記憶部に記憶するとともに、前記最小値と前記最大値との排他
的論理和演算の結果で最上位ビットから連続で0となっているビット部分を全て1とし、
それ以外のビット部分を0としたマスクを生成するバウンダリ生成ステップと、
スヌープ処理回路が、キャッシュに対してスヌープ処理を行うスヌープ処理ステップと

前記バウンダリチェック回路が、前記キャッシュに対するスカラロード命令の発行要求
時に、前記マスクで1となっているビット部分に対応する、前記バウンダリの最小値また
は最大値のビット部分と前記スカラロード命令の指定するアドレスのビット部分とを比較
し、比較結果に基づいて、前記スヌープ処理の完了を待たずに前記スカラロード命令の発
行を許可するか否かを判定するバウンダリチェックステップと、
を実行させることを特徴とするバウンダリ実行制御プログラム。
On the computer,
The boundary check circuit stores at least one of a minimum value and a maximum value of an address to be updated as a boundary in an address storage unit when executing a vector store instruction that is an instruction for storing a plurality of data in parallel. All the bit parts that are continuously 0 from the most significant bit in the result of the exclusive OR operation of the minimum value and the maximum value are set to 1,
A boundary generation step for generating a mask in which the other bit portions are set to 0;
A snoop processing step in which the snoop processing circuit performs snoop processing on the cache; and
The boundary check circuit designates the minimum or maximum bit portion of the boundary corresponding to the bit portion that is 1 in the mask and the scalar load instruction when the scalar load instruction is issued to the cache. A boundary check step for comparing the bit part of the address and determining whether to allow the issue of the scalar load instruction without waiting for the completion of the snoop process based on the comparison result;
Boundary execution control program characterized in that
前記バウンダリ生成ステップにおいて、ベクトルを構成するベースアドレスと距離とベ
クトル長とを含む情報に基づいて、前記バウンダリおよび前記マスクを生成することを特
徴とする請求項19記載のバウンダリ実行制御プログラム。
20. The boundary execution control program according to claim 19, wherein, in the boundary generation step, the boundary and the mask are generated based on information including a base address, a distance, and a vector length constituting a vector.
前記バウンダリ生成ステップにおいて、前記ベースアドレスと前記距離とを含む情報に
基づいて前記マスクの候補を複数生成し、前記ベクトル長を含む情報が判明すると、前記
ベースアドレスと前記距離と前記ベクトル長とを含む情報に基づいて前記候補の中からマ
スク選択を行うことを特徴とする請求項20に記載のバウンダリ実行制御プログラム。
In the boundary generation step, a plurality of mask candidates are generated based on information including the base address and the distance, and when the information including the vector length is found, the base address, the distance, and the vector length are determined. 21. The boundary execution control program according to claim 20, wherein a mask is selected from the candidates based on information included therein.
前記バウンダリ生成ステップにおいて、
前記生成されたマスクを圧縮して記憶し、前記判定時には前記圧縮されたマスクを解凍
することを特徴とする請求項19ないし21のいずれかに記載のバウンダリ実行制御プロ
グラム。
In the boundary generation step,
The boundary execution control program according to any one of claims 19 to 21, wherein the generated mask is compressed and stored, and the compressed mask is decompressed at the time of the determination.
前記バウンダリ生成ステップにおいて、
前記生成されたマスクのうち所定の上位ビットのみ圧縮率を下げることを特徴とする請
求項22記載のバウンダリ実行制御プログラム。
In the boundary generation step,
23. The boundary execution control program according to claim 22, wherein the compression rate is reduced only for a predetermined higher-order bit in the generated mask.
前記バウンダリ生成ステップにおいて、
ベクトルを構成するベースアドレスと距離とベクトル長とのうち前記距離を示す情報が2
のべき乗であるときに、前記距離を示す情報に基づいて他のマスクを生成し、
前記バウンダリチェックステップにおいて、
前記バウンダリと前記マスクと前記他のマスクとに基づいて、前記スヌープ処理の完了
を待たずに前記スカラロード命令の発行を許可するか否かを判定することを特徴とする請
求項20ないし23のいずれかに記載のバウンダリ実行制御プログラム。
In the boundary generation step,
Information indicating the distance among the base address, distance, and vector length constituting the vector is 2
Generating another mask based on the information indicating the distance when it is a power of
In the boundary check step,
24. The method according to any one of claims 20 to 23, wherein whether or not to issue the scalar load instruction is permitted without waiting for completion of the snoop process based on the boundary, the mask, and the other mask. The boundary execution control program according to any one of the above.
前記バウンダリ生成ステップにおいて、
前記距離を示す情報において最下位から連続して0となっているビット部分を1とし、
それ以外のビット部分を0として前記他のマスクを生成した後、前記他のマスクおよび前
記マスクの排他的論理和を生成し、
前記バウンダリチェックステップにおいて、
前記排他的論理和演算結果において1となっているビット部分に対してのみ、前記バウ
ンダリの最小値あるいは最大値と前記スカラロード命令の指定するアドレスのビット部分
とを比較し、前記比較結果に基づいて前記スヌープ処理の完了を待たずに前記スカラロー
ド命令の発行を許可するか否かを判定することを特徴とする請求項24記載のバウンダリ
実行制御プログラム。
In the boundary generation step,
In the information indicating the distance, the bit portion that is continuously 0 from the lowest is set to 1,
After generating the other mask with the other bit parts set to 0, generate the exclusive OR of the other mask and the mask,
In the boundary check step,
Only for the bit portion that is 1 in the exclusive OR operation result, the minimum value or maximum value of the boundary is compared with the bit portion of the address specified by the scalar load instruction, and based on the comparison result 25. A boundary execution control program according to claim 24, wherein it is determined whether or not to issue the scalar load instruction without waiting for completion of the snoop process.
前記バウンダリ生成ステップにおいて、
前記生成された他のマスクを圧縮して前記アドレス記憶部に格納し、前記判定時には前
記圧縮された他のマスクを解凍することを特徴とする請求項24または25記載のバウン
ダリ実行制御プログラム。
In the boundary generation step,
26. The boundary execution control program according to claim 24, wherein the generated other mask is compressed and stored in the address storage unit, and the compressed other mask is decompressed at the time of the determination.
前記バウンダリ生成ステップにおいて、前記生成された他のマスクのうち所定の下位ビ
ットのみ圧縮率を下げることを特徴とする請求項26記載のバウンダリ実行制御プログラ
ム。
27. The boundary execution control program according to claim 26, wherein, in the boundary generation step, the compression rate is lowered only for a predetermined lower bit of the generated other masks.
キャッシュと、
前記キャッシュに対してスヌープ処理を行うスヌープ処理回路と、
複数のデータを並行して格納する命令であるベクトルストア命令の実行時に、更新するアドレスの最小値および最大値の少なくともいずれか一方をバウンダリとして記憶するとともに、
前記最小値と前記最大値との排他的論理和演算の結果で最上位ビットから連続で0となっているビット部分を全て1とし、それ以外のビット部分を0としたマスクを生成し、前記マスクで1となっているビット部分に対応する、前記バウンダリの最小値または最大値のビット部分とスカラロード命令の指定するアドレスのビット部分とを比較し、比較結果に基づいて、
前記スヌープ処理の完了を待たずに前記スカラロード命令の発行を許可するか否かを判定するバウンダリチェック回路と、
を備えたことを特徴とするバウンダリ実行制御システム。

Cache,
A snoop processing circuit for performing a snoop process on the cache;
When executing a vector store instruction that is an instruction for storing a plurality of data in parallel, at least one of the minimum value and the maximum value of the address to be updated is stored as a boundary,
Generating a mask in which all bit portions that are continuously 0 from the most significant bit as a result of an exclusive OR operation of the minimum value and the maximum value are set to 1 and the other bit portions are set to 0; The bit portion of the boundary corresponding to the bit portion that is 1 in the mask is compared with the bit portion of the address specified by the scalar load instruction, and based on the comparison result,
A boundary check circuit that determines whether or not to allow the scalar load instruction to be issued without waiting for the completion of the snoop process;
A boundary execution control system comprising:

JP2008316696A 2008-12-12 2008-12-12 Boundary execution control system, boundary execution control method, and boundary execution control program Expired - Fee Related JP5206385B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008316696A JP5206385B2 (en) 2008-12-12 2008-12-12 Boundary execution control system, boundary execution control method, and boundary execution control program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008316696A JP5206385B2 (en) 2008-12-12 2008-12-12 Boundary execution control system, boundary execution control method, and boundary execution control program

Publications (2)

Publication Number Publication Date
JP2010140306A JP2010140306A (en) 2010-06-24
JP5206385B2 true JP5206385B2 (en) 2013-06-12

Family

ID=42350392

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008316696A Expired - Fee Related JP5206385B2 (en) 2008-12-12 2008-12-12 Boundary execution control system, boundary execution control method, and boundary execution control program

Country Status (1)

Country Link
JP (1) JP5206385B2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5445701B1 (en) 2013-02-05 2014-03-19 日本電気株式会社 Flash control device, flash control method, and cache memory device
JP6256088B2 (en) * 2014-02-20 2018-01-10 日本電気株式会社 Vector processor, information processing apparatus, and overtaking control method

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0746350B2 (en) * 1988-02-15 1995-05-17 工業技術院長 Vector calculator
JPH0810451B2 (en) * 1989-03-28 1996-01-31 日本電気株式会社 Information processing device
JP3644959B2 (en) * 1992-09-29 2005-05-11 セイコーエプソン株式会社 Microprocessor system
JP3826648B2 (en) * 2000-01-13 2006-09-27 日本電気株式会社 Boundary execution control device and boundary control method
US7392351B2 (en) * 2005-03-29 2008-06-24 International Business Machines Corporation Method and apparatus for filtering snoop requests using stream registers

Also Published As

Publication number Publication date
JP2010140306A (en) 2010-06-24

Similar Documents

Publication Publication Date Title
JP4980751B2 (en) Data processing apparatus and memory read active control method.
JP5573134B2 (en) Vector computer and instruction control method for vector computer
KR20180039537A (en) Branch predictor that uses multiple byte offsets in hash of instruction block fetch address and branch pattern to generate conditional branch predictor indexes
KR102329308B1 (en) Cache replacement policy methods and systems
US20120260056A1 (en) Processor
US7266676B2 (en) Method and apparatus for branch prediction based on branch targets utilizing tag and data arrays
EP3324287A1 (en) Efficient random number generation for update events in multi-bank conditional branch predictor
JP4920378B2 (en) Information processing apparatus and data search method
CN104657285B (en) Data caching system and method
JP2008107983A (en) Cache memory
US8151096B2 (en) Method to improve branch prediction latency
JP5206385B2 (en) Boundary execution control system, boundary execution control method, and boundary execution control program
US6678638B2 (en) Processor having execution result prediction function for instruction
JP7070384B2 (en) Arithmetic processing device, memory device, and control method of arithmetic processing device
CN117130665A (en) Method and system for predicting execution result of processor branch instruction
JP2954178B1 (en) Variable cache method
KR101076815B1 (en) Cache system having branch target address cache
JP2018194946A (en) Arithmetic processing device and control method for arithmetic processing device
US7610449B2 (en) Apparatus and method for saving power in a trace cache
KR960015231A (en) Enhanced Addressing Method and System
JP5480793B2 (en) Programmable controller
US20240143503A1 (en) Varied validity bit placement in tag bits of a memory
CN111813722B (en) Data read-write method and system based on shared memory and readable storage medium
JP5266651B2 (en) Branch prediction apparatus and branch prediction method using local branch history
JP2004152292A (en) Computational circuit for generating predicted address value, and method for predicting next address by computational circuit

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100910

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20110705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120727

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120821

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121005

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121106

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121219

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130204

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160301

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5206385

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees