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

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

▶ 株式会社デンソーの特許一覧

<>
  • 特開-ベクトルプロセッサ 図1
  • 特開-ベクトルプロセッサ 図2
  • 特開-ベクトルプロセッサ 図3
  • 特開-ベクトルプロセッサ 図4
  • 特開-ベクトルプロセッサ 図5
  • 特開-ベクトルプロセッサ 図6
  • 特開-ベクトルプロセッサ 図7
  • 特開-ベクトルプロセッサ 図8
  • 特開-ベクトルプロセッサ 図9
  • 特開-ベクトルプロセッサ 図10
  • 特開-ベクトルプロセッサ 図11
  • 特開-ベクトルプロセッサ 図12
  • 特開-ベクトルプロセッサ 図13
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024131670
(43)【公開日】2024-09-30
(54)【発明の名称】ベクトルプロセッサ
(51)【国際特許分類】
   G06F 17/16 20060101AFI20240920BHJP
【FI】
G06F17/16 E
G06F17/16 D
【審査請求】未請求
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2023042084
(22)【出願日】2023-03-16
(71)【出願人】
【識別番号】000004260
【氏名又は名称】株式会社デンソー
(74)【代理人】
【識別番号】100113549
【弁理士】
【氏名又は名称】鈴木 守
(74)【代理人】
【識別番号】100115808
【弁理士】
【氏名又は名称】加藤 真司
(74)【代理人】
【識別番号】230121430
【弁護士】
【氏名又は名称】安井 友章
(72)【発明者】
【氏名】山田 洋平
【テーマコード(参考)】
5B056
【Fターム(参考)】
5B056FF10
5B056FF11
(57)【要約】
【課題】 ベクトルレジスタにマスクデータが格納され、ベクトルレジスタに格納されたマスクデータについて各マスク要素が一端に纏められて順次配置された配列をなす命令セットアーキテクチャに対して、好適なベクトルプロセッサを提供する。
【解決手段】 ベクトルレジスタ54は、ベクトルデータをベクトルデータのデータ型に応じて複数のベクトル要素が一端から他端まで順次配置されたベクトルデータ配列で格納し、マスクデータを複数のマスク要素が一端に纏めて順次配置された第1のマスクデータ配列で格納し、ベクトル実行制御部52は、ベクトルレジスタ54に格納されたマスクデータを第1のマスクデータ配列から第2のマスクデータ配列に並べ替えてマスクレジスタ56にコピーし、第2のマスクデータ配列において、ベクトルレジスタ54の所定の範囲内に配置されるベクトル要素に対応するマスク要素は、ベクトルレジスタ54の当該所定の範囲に対応するマスクレジスタ56の所定の範囲内に配置される。
【選択図】 図1
【特許請求の範囲】
【請求項1】
所定のデータ型を備え複数のベクトル要素からなるベクトルデータ及び所定のデータ型を備えるベクトルデータに対応し複数のベクトル要素に夫々対応する複数のマスク要素からなるマスクデータを格納するベクトルレジスタ(54)と、
マスクデータのコピーを格納するマスクレジスタ(56)と、
前記ベクトルレジスタに格納されているマスクデータを前記マスクレジスタにコピーすると共に、前記ベクトルレジスタに格納されたベクトルデータ及び前記マスクレジスタに格納されたマスクデータのコピーを読み出して、マスク付きベクトル命令を実行するベクトル実行制御部(52)と、
を具備し、
前記ベクトルレジスタは、ベクトルデータをベクトルデータのデータ型に応じて複数のベクトル要素が一端から他端まで順次配置されたベクトルデータ配列で格納し、マスクデータを複数のマスク要素が一端に纏めて順次配置された第1のマスクデータ配列で格納し、
前記ベクトル実行制御部は、前記ベクトルレジスタに格納されたマスクデータを第1のマスクデータ配列から第2のマスクデータ配列に並べ替えて前記マスクレジスタにコピーし、前記第2のマスクデータ配列において、前記ベクトルレジスタの所定の範囲内に配置されるベクトル要素に対応するマスク要素は、前記ベクトルレジスタの当該所定の範囲に対応する前記マスクレジスタの所定の範囲内に配置される、
ベクトルプロセッサ。
【請求項2】
前記ベクトルプロセッサは、複数種類のデータ型のマスク付きベクトル命令を実行し、
前記マスクレジスタは、マスクデータを夫々格納する複数のマスクレジスタ領域を有し、
前記ベクトルプロセッサは、マスクレジスタ制御部(40)と、ベクトル命令発行制御部(34)と、をさらに具備し、
前記マスクレジスタ制御部は、マスク付きベクトル命令のデータ型に対応するデータ型のマスクデータのコピーが前記マスクレジスタに格納済であるか否かを判断し、前記複数のマスクレジスタ領域のうち当該マスクデータのコピーが格納されている格納済マスクレジスタ領域を示す格納済領域識別情報を生成し、前記複数のマスクレジスタのうち未使用である未使用マスクレジスタ領域を示す未使用領域識別情報を生成し、
前記ベクトル命令発行制御部は、
前記マスクレジスタ制御部に、マスク付きベクトル命令のデータ型に対応するデータ型のマスクデータのコピーが前記マスクレジスタに格納済みであるか否か問い合わせ、
前記マスクレジスタ制御部から格納済みであると回答された場合には、前記マスクレジスタ制御部から前記格納済領域識別情報を取得して前記ベクトル実行制御部に通知し、前記ベクトル実行制御部に前記格納済マスクレジスタ領域から当該マスクデータのコピーを読み出させ、
前記マスクレジスタ制御部から格納済でないと回答された場合には、前記マスクレジスタ制御部から前記未使用領域識別情報を取得して前記ベクトル実行制御部に通知し、前記ベクトル実行制御部に前記未使用マスクレジスタ領域に当該マスクデータをコピーさせる、
請求項1に記載のベクトルプロセッサ。
【請求項3】
前記マスクレジスタ制御部は、マスク割当状態レジスタ(42)を有し、
前記マスク割当状態レジスタは、ベクトル命令の複数種類のデータ型に夫々対応する複数のマスク割当状態レジスタ領域を備え、各マスク割当状態レジスタ領域は、当該マスク割当状態レジスタ領域に対応するデータ型に対応するマスクデータのコピーが割当済みであるか否かを示す割当済識別情報と、当該マスクデータのコピーが割り当てられた前記マスクレジスタ領域への書込中であるか否かを示す書込中識別情報と、当該マスクデータのコピーが割り当てられた割当済マスクレジスタ領域を示す割当済領域識別情報と、を格納し、
前記マスクレジスタ制御部は、マスク付きベクトル命令のデータ型に対応する前記マスク割当状態レジスタ領域に格納されている前記割当済識別情報が割当済であることを示しかつ前記書込中識別情報が書込中でないことを示している場合には、マスク付きベクトル命令のデータ型に対応するデータ型のマスクデータのコピーが格納済であると判断して、前記割当済領域識別情報を前記格納済領域識別情報とし、前記割当済識別情報が割当済でないことを示している場合には、当該マスクデータのコピーが格納済でないと判断する、
請求項2に記載のベクトルプロセッサ。
【請求項4】
前記マスクレジスタ制御部は、マスク参照カウンタ(44)を有し、
前記マスク参照カウンタは、前記複数のマスクレジスタ領域に夫々対応する複数のマスク参照カウンタ領域を備え、各マスク参照カウンタ領域は、当該マスク参照カウンタ領域に対応する前記マスクレジスタ領域にアクセスする発行済かつ未完了のリクエストの個数を示す参照カウントを格納し、
前記マスクレジスタ制御部は、前記参照カウントが零である前記マスク参照カウンタ領域に対応する前記マスクレジスタ領域を前記未使用マスクレジスタ領域であるとし、当該マスクレジスタ領域を示す識別情報を前記未使用領域識別情報とする、
請求項2に記載のベクトルプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、マスク付きベクトル演算を実行可能なベクトルプロセッサに関する。
【背景技術】
【0002】
従来のベクトルプロセッサの命令セットアーキテクチャでは、ベクトルレジスタにベクトルデータが格納され、ベクトルレジスタに対してベクトル命令が定義され、1つのベクトル命令によって、ベクトルレジスタに格納されたベクトルデータの各ベクトル要素に対して夫々操作を行うことが可能である。さらに、マスクデータによって、ベクトルレジスタに格納されたベクトルデータの各ベクトル要素のうち、ベクトル命令による操作対象となるベクトル要素を指定することが可能である。マスクデータの各マスク要素については、ベクトルデータの対応する各ベクトル要素をベクトル命令の操作対象とするか否かを示すものとなっている。
【0003】
命令セットアーキテクチャには様々な仕様があるが、例えばRISC-V Vector Extensionでは、マスクデータのために専用のマスクレジスタは用いられず、ベクトルレジスタにマスクデータも格納されるようになっている。また、ベクトルレジスタに格納されたマスクデータについては、マスクデータの各マスク要素が一端に纏められて順次配置された配列をなすようになっている。
【先行技術文献】
【非特許文献】
【0004】
【非特許文献1】RISC-V Vector Extension (URL:https://github.com/riscv/riscv-v-spec/releases/tag/v1.0)
【発明の概要】
【発明が解決しようとする課題】
【0005】
本発明の目的は、ベクトルレジスタにマスクデータが格納され、ベクトルレジスタに格納されたマスクデータについて各マスク要素が一端に纏められて順次配置された配列をなす命令セットアーキテクチャに対して、好適なベクトルプロセッサを提供することにある。
【課題を解決するための手段】
【0006】
本発明の一実施態様は、所定のデータ型を備え複数のベクトル要素からなるベクトルデータ及び所定のデータ型を備えるベクトルデータに対応し複数のベクトル要素に夫々対応する複数のマスク要素からなるマスクデータを格納するベクトルレジスタと、マスクデータのコピーを格納するマスクレジスタと、前記ベクトルレジスタに格納されているマスクデータを前記マスクレジスタにコピーすると共に、前記ベクトルレジスタに格納されたベクトルデータ及び前記マスクレジスタに格納されたマスクデータのコピーを読み出して、マスク付きベクトル命令を実行するベクトル実行制御部と、を具備し、前記ベクトルレジスタは、ベクトルデータをベクトルデータのデータ型に応じて複数のベクトル要素が一端から他端まで順次配置されたベクトルデータ配列で格納し、マスクデータを複数のマスク要素が一端に纏めて順次配置された第1のマスクデータ配列で格納し、前記ベクトル実行制御部は、前記ベクトルレジスタに格納されたマスクデータを第1のマスクデータ配列から第2のマスクデータ配列に並べ替えて前記マスクレジスタにコピーし、第2のマスクデータ配列において、前記ベクトルレジスタの所定の範囲内に配置されるベクトル要素に対応するマスク要素は、前記ベクトルレジスタの当該所定の範囲に対応する前記マスクレジスタの所定の範囲内に配置される、ベクトルプロセッサである。
【0007】
本実施態様では、マスク付きベクトル命令を実行するのに、マスクレジスタに格納されたマスクデータのコピー並びにベクトルレジスタに格納されたベクトルデータを読み出しているため、ベクトルレジスタにマスクデータ読出用のリードポートを追加することなく、マスクデータとベクトルデータとを同時に読み出すことができる。このため、ベクトルレジスタにマスクデータ読出用のリードポートを追加することによるベクトルレジスタの実装面積及び消費電力の増加を招来することなく、特にベクトルレジスタからマスクデータとベクトルデータとを順次読み出す場合と比較して、高性能なマスク付きベクトル命令を実現することが可能となっている。さらに、マスクレジスタにおいて、ベクトルレジスタの所定の範囲内に配置されるベクトル要素に対応するマスク要素は、ベクトルレジスタの当該所定の範囲に対応するマスクレジスタの所定の範囲内に配置される。このため、ベクトルレジスタの当該所定の範囲に配置されるベクトル要素に対して操作を行う演算機の近傍に、マスクレジスタの当該所定の範囲を配置することで、マスク付きベクトル命令の実行において、当該マスク付きベクトル命令のデータ型にかかわらず、ベクトル要素に対して操作を行う演算機まで当該ベクトル要素に対応するマスク要素を移動するのに、長距離を移動する必要がなく、遅延及び消費電力の増大を低減することが可能となっている。
【発明の効果】
【0008】
本発明では、ベクトルレジスタにマスクデータが格納され、ベクトルレジスタに格納されたマスクデータについて各マスク要素が一端に纏められて順次配置された配列をなす命令セットアーキテクチャに対して、好適なベクトルプロセッサが提供されている。
【図面の簡単な説明】
【0009】
図1】本発明の一実施形態のベクトルプロセッサを示すブロック図。
図2】本発明の一実施形態のベクトルレジスタを示す模式図。
図3】本発明の一実施形態のベクトルレジスタのベクトルデータを示す模式図。
図4】本発明の一実施形態のベクトルレジスタのマスクデータを示す模式図。
図5】本発明の一実施形態のマスクレジスタを示す模式図。
図6】本発明の一実施形態のマスク割当状態レジスタを示す模式図。
図7】本発明の一実施形態のマスク参照カウンタを示す模式図。
図8】本発明の一実施形態のベクトルプロセッサの作動を示すフロー図。
図9】本発明の一実施形態の64ビット用マスクデータの並替を示す模式図。
図10】本発明の一実施形態の32ビット用マスクデータの並替を示す模式図。
図11】本発明の一実施形態の16ビット用マスクデータの並替を示す模式図。
図12】本発明の一実施形態の8ビット用マスクデータの並替を示す模式図。
図13】本発明の一実施形態のデータ要素の移動を示す模式図。
【発明を実施するための形態】
【0010】
図1乃至図13を参照して、本発明の一実施形態について説明する。
【0011】
図1を参照して、ベクトルプロセッサの概略構成について説明する。
ベクトルデータについては、複数のベクトル要素からなり、1つのベクトル命令によって、ベクトルデータの各ベクトル要素に対して夫々操作が行われる。そして、マスク付きベクトル命令では、マスクデータによって、ベクトルデータの複数のベクトル要素から、ベクトル命令による操作対象となるベクトル要素を指定したうえで、指定された各ベクトル要素のみに対して夫々操作が行われる。マスクデータについては、複数のマスク要素からなり、各マスク要素については、ベクトルデータの各マスク要素に対応する各ベクトル要素をベクトル命令の操作対象とするか否かを示すものとなっている。また、本実施形態では、ベクトル命令のデータ型として複数のデータ型が用いられ、これに対応して、ベクトルデータとして複数のデータ型のベクトルデータが用いられ、ベクトルデータの複数のデータ型に夫々対応して複数のマスクデータが用いられる。
【0012】
図1に示されるように、ベクトルプロセッサは、スカラ部10及びベクトル部20から形成されている。スカラ部10は、ベクトル部20にベクトル命令の実行を指示し、ベクトル部20は、スカラ部10から指示されたベクトル命令の実行を行う。
【0013】
ベクトル部20は、ベクトル制御部30及びベクトル実行部50から形成されている。ベクトル制御部30は、ベクトル命令デコード部32、ベクトル命令発行制御部34及びマスクレジスタ制御部40から形成されている。ベクトル実行部50は、ベクトル実行制御部52、ベクトルレジスタ54、マスクレジスタ56及びベクトル演算部58から形成されている。
【0014】
ベクトルレジスタ54には、ベクトルデータ及びマスクデータが格納される。ベクトルレジスタ54は、ベクトルデータ又はマスクデータが格納される複数のベクトルレジスタ領域を有する。ベクトルデータは、ベクトルデータのデータ型に応じて、ベクトル要素を一端から他端へと順次詰めて配置したベクトルデータ配列で、ベクトルレジスタ領域に格納される。ベクトル要素のデータ幅は、ベクトルデータのデータ型によって定められる。マスクデータは、複数のマスク要素を一端に纏めて順次詰めて配置した第1のマスクデータ配列で、所定のベクトルレジスタ領域に格納される。マスク要素は、当該マスク要素に対応するベクトル要素をベクトル命令の操作対象とするか否かのみを示すものであるので、マスク要素のデータ幅は、マスクデータに対応するベクトルデータのデータ型にかかわらず、1(bit)となる。
【0015】
マスクレジスタ56には、ベクトルレジスタ54に格納されているマスクデータのコピーが格納される。マスクレジスタ56は、マスクデータのコピーが格納される複数のマスクレジスタ領域を有する。マスクレジスタ56において、マスクデータのコピーは、第2のマスクデータ配列でマスクレジスタ領域に格納される。第2のマスクデータ配列では、ベクトルレジスタ領域の所定の範囲内に配置されるベクトル要素に対応するマスク要素は、ベクトルレジスタの当該所定の範囲に対応するマスクレジスタの所定の範囲内に配置される。
【0016】
マスクレジスタ制御部40は、マスク割当状態レジスタ42及びマスク参照カウンタ44を有する。マスクレジスタ制御部40は、マスク割当状態レジスタ42を参照して、ベクトル命令のデータ型に対応するデータ型のマスクデータのコピーがマスクレジスタ56に格納済であるか否かを判断し、複数のマスクレジスタ領域のうち当該マスクデータのコピーが格納されている格納済マスクレジスタ領域を示す格納済領域識別情報を生成する。また、マスクレジスタ制御部40は、マスク参照カウンタ44を参照して、複数のマスクレジスタ56のうち未使用である未使用マスクレジスタ領域を示す未使用領域識別情報を生成する。
【0017】
ベクトル命令デコード部32は、スカラ部10から実行を指示されたベクトル命令のデコードを行う。ベクトル命令発行制御部34は、ベクトル命令デコード部32によってデコードされたベクトル命令がマスク付きベクトル命令である場合には、マスクレジスタ制御部40に、ベクトル命令のデータ型に対応するデータ型のマスクデータのコピーがマスクレジスタ56に格納済であるか否かを問い合わせる。
【0018】
ベクトル命令発行制御部34は、マスクレジスタ制御部40から当該マスクデータのコピーが格納済であると回答された場合には、マスクレジスタ制御部40から格納済領域識別情報を取得し、格納済領域識別情報を含むマスク付きベクトル命令の実行リクエストをベクトル実行制御部52に発行する。ベクトル実行制御部52は、ベクトル命令発行制御部34から当該リクエストを発行された場合には、ベクトルレジスタ54におけるベクトルレジスタ領域からベクトルデータを読み出すと共に、マスクレジスタ56における格納済領域識別情報により示される格納済マスクレジスタ領域からマスクデータのコピーを読み出し、ベクトル演算部58を制御してマスク付きベクトル命令を実行する。
【0019】
他方、ベクトル命令発行制御部34は、マスクレジスタ制御部40から当該マスクデータのコピーが格納済でないと回答された場合には、マスクレジスタ制御部40から未使用領域識別情報を取得し、未使用領域識別情報を含むマスクデータのコピーリクエストをベクトル実行制御部52に発行する。ベクトル実行制御部52は、ベクトル命令発行制御部34から当該リクエストを発行された場合には、ベクトルレジスタ54における所定のベクトルレジスタ領域に格納されているマスクデータを、マスクレジスタ56における未使用領域識別情報により示される未使用マスクレジスタ領域にコピーする。ここで、ベクトル実行制御部52は、ベクトルレジスタ54に格納されているマスクデータを、第1のマスクデータ配列から第2のマスクデータ配列に並べ替えて、マスクレジスタ56にコピーする。
【0020】
図2を参照して、ベクトルレジスタ54について説明する。
図2に示されるように、ベクトルレジスタ54は、ベクトルデータ又はマスクデータが割り当てられる複数のベクトルレジスタ領域を有する。本実施形態では、0番から31番の32個のベクトルレジスタ領域が用いられ、0番以外のベクトルレジスタ領域にベクトルデータが割り当てられ、0番のベクトルレジスタ領域のみにマスクデータが割り当てられる。ベクトルレジスタ領域は、VLEN(bit)の長さを備え、0番からVLEN-1番のVLEN個のベクトルレジスタ要素によって形成される。VLEN(bit)として、2のべき乗の任意の値が用いられ、本実施形態では、512(bit)が用いられる。
【0021】
図3及び図4を参照して、ベクトルレジスタ54におけるベクトルデータ及びマスクデータの配列について説明する。
図3に示されるように、ベクトルレジスタ54では、ベクトルデータは、ベクトルデータのデータ型に応じて、ベクトル要素を一端から他端へと順次詰めて配置したベクトルデータ配列で、ベクトルレジスタ領域に格納される。ベクトル要素のデータ幅は、ベクトルデータのデータ型によって定められる。本実施形態では、ベクトル命令のデータ型に対応して、ベクトルデータのデータ型として、データ幅を示すbit数が用いられ、bit数としてl=4種類のビット数k=8,16,32,64(bit)が用いられる。以下では、最小ビット数をkmin(=8)(bit)、最大ビット数をkmax(=64)(bit)とする。k(bit)のベクトルデータについて、ベクトル要素のデータ幅はk(bit)であり、0番からVLEN-1番まで、VLEN/k個のベクトル要素が順次詰めて配置される。n番目のベクトル要素enは、kn番からk(n+1)-1番のベクトルレジスタ要素に格納される。ここで、nは以下の整数である。
【数1】
【0022】
図4に示されるように、ベクトルレジスタ54では、マスクデータは、複数のマスク要素を一端に纏めて順次詰めて配置した第1のマスクデータ配列で、ベクトルレジスタ領域に格納される。マスク要素のデータ幅は、1(bit)となる。本実施形態では、k(bit)のベクトルデータに対応するマスクデータついて、0番からVLEN/k-1番まで、0番に纏めて、ベクトル要素と同数のVLEN/k個のマスク要素が順次詰めて配置される。n番目のマスク要素mnは、n番のベクトルレジスタ要素に格納される。ここで、nは上述したとおりである。
【0023】
図5を参照して、マスクレジスタ56について説明する。
図5に示されるように、マスクレジスタ56は、マスクデータのコピーを夫々格納する複数のマスクレジスタ領域を有する。本実施形態では、NumVmr個のマスクレジスタ領域が用いられる。NumVmr個のマスクレジスタ領域には、夫々、0,…,NumVmr-1のアドレスADが割り当てられる。NumVmrについては、実装により、任意の値とすることが可能である。マスクレジスタ領域は、ベクトルレジスタ領域に格納されるベクトルデータのベクトル要素enの最大数、即ち、長さVLEN(bit)のベクトルレジスタ領域に格納される最小ビット数kminのベクトルデータのベクトル要素の数VLEN/kminに対応する個数のマスク要素を最大限で格納できるように、VLEN/kmin(bit)の長さを備え、0番からVLEN/kmin-1番のVLEN/kmin個のマスクレジスタ要素によって形成される。本実施形態では、VLEN(bit)として512(bit)、kmin(bit)として8(bit)が用いられるため、各マスクレジスタ領域は、64(bit)の長さを備え、0番から63番の64個のマスクレジスタ要素によって形成される。
【0024】
図6を参照して、マスク割当状態レジスタ42について説明する。
図6に示されるように、マスク割当状態レジスタ42は、ベクトル命令の複数種類のデータ型に夫々対応した複数のマスク割当状態レジスタ領域を有する。マスク割当状態レジスタ領域には、割当済識別情報、書込中識別情報及び割当済領域識別情報が格納されている。割当済識別情報は、当該マスク割当状態レジスタ領域に対応するデータ型に対応したマスクデータのコピーがマスクレジスタ領域に割当済であるか否かを示す。書込中識別情報は、当該マスクデータのコピーがマスクレジスタ領域に書込中であるか否かを示す。割当済領域識別情報は、当該マスクデータのコピーが割り当てられた割当済マスクレジスタ領域を示す。
【0025】
ベクトル命令のデータ型に対応するマスク割当状態レジスタ領域に格納されている割当済識別情報が「割当済である」、書込中識別情報が「書込中でない」である場合には、ベクトル命令のデータ型に対応するデータ型のマスクデータのコピーが格納済であると判断し、割当済領域識別情報を、当該マスクデータのコピーが格納済である格納済マスクレジスタ領域を示す格納済領域識別情報とする。他方、割当済識別情報が「割当済でない」である場合には、当該マスクデータのコピーが格納済でないと判断する。さらに、割当済識別情報が「割当済である」、書込中識別情報が「書込中である」である場合には、割当済領域識別情報の示す割当済マスクレジスタ領域に当該マスクデータをコピー中であると判断する。また、割当済識別情報が「割当済である」であり、書込中識別情報が「書込中である」から「書込中でない」に変化した場合には、割当済領域識別情報の示す割当済マスクレジスタ領域への当該マスクデータのコピーが完了したと判断する。
【0026】
本実施形態では、ベクトル命令の4種類のビット数8,16,32,64(bit)に夫々対応して、4個のビット数8,16,32,64(bit)用のマスク割当状態レジスタ領域が用いられる。割当済識別情報として、フラグvidkが用いられ、vidk=1であれば「割当済である」、vidk=0であれば「割当済でない」ことを示す。書込中識別情報として、フラグwrkが用いられ、wrk=1であれば「書込中である」、wrk=0であれば「書込中でない」ことを示す。割当済領域識別情報として、割当済マスクレジスタ領域のアドレスADk(=0,…,NumVmr-1)が用いられる。従って、割当済識別情報フラグvidk=1かつ書込中識別情報フラグwrk=0の場合には、マスクデータのコピーが格納済であると判断し、格納済領域識別情報は割当済マスクレジスタ領域のアドレスADkとなり、vidk=0の場合には格納済でないと判断し、vidk=1かつwrk=1の場合にはコピー中であると判断し、vidk=1かつwrk=1からwrk=0に変化した場合にはコピー完了と判断する。
【0027】
図7を参照して、マスク参照カウンタ44について説明する。
図7に示されるように、マスク参照カウンタ44は、マスクレジスタ56の複数のマスクレジスタ領域に夫々対応するマスク参照カウンタ領域を有する。マスク参照カウンタ領域には、参照カウントが格納されている。参照カウントは、当該参照カウントが格納されているマスク参照カウンタ領域に対応するマスクレジスタ領域にアクセスする発行済かつ未完了のリクエストの個数を示す。参照カウントが零であるマスク参照カウンタ領域に対応するマスクレジスタ領域を未使用である未使用マスクレジスタ領域であるとし、当該マスクレジスタ領域の識別情報を、未使用マスクレジスタ領域を示す未使用領域識別情報とする。
【0028】
本実施形態では、マスクレジスタ領域として、NumVmr個のマスクレジスタ領域が用いられ、0,…,NumVmr-1のアドレスADが割り当てられているため、マスク参照カウンタ領域についても、NumVmr個のマスク参照カウンタ領域が用いられ、0,…,NumVmr-1のアドレスADが割り当てられ、NumVmr個の参照カウントRCr(r=0,…,NumVmr-1)が用いられる。参照カウントRCrのデータ幅であるbit数については、実装によって決定されるベクトル命令の最大発行リクエスト数の上限以上を表現できるものとする。
【0029】
図8を参照して、ベクトルプロセッサの作動について説明する。
プログラムの所定の処理ルーチンにおいては、複数のマスク付きベクトル命令にわたり共通のマスクデータが使用されることが多いため、マスクデータが更新されて、当該マスクデータが一旦コピーされた後には、複数のマスク付きベクトル命令にわたり、当該マスクデータが更新されることなく、当該マスクデータのコピーが継続して使用されることとなる。
【0030】
図8に示されるように、ベクトル命令発行制御部34、マスクレジスタ制御部40、ベクトル実行制御部52については、以下の各ステップを行う。
【0031】
以下、ベクトル命令発行制御部34の各ステップについて説明する。
マスクデータ更新リクエスト発行ステップS10
ベクトル命令発行制御部34は、ベクトル命令デコード部32から入力されたデコード済みのベクトル命令がマスクデータの更新である場合には、マスクデータの更新リクエストをベクトル実行制御部52に発行すると共に、マスクデータのクリアリクエストをマスクレジスタ制御部40に発行する。本実施形態では、ベクトルレジスタ54において、0番のベクトルレジスタ領域のみにマスクデータが格納されるため、ベクトル命令が0番のベクトルレジスタ領域への書込である場合には、当該命令はマスクデータの更新である。
【0032】
マスクデータコピー格納済問合ステップS11
ベクトル命令発行制御部34は、ベクトル命令デコード部32から入力されたデコード済みのベクトル命令がマスク付きベクトル命令である場合には、マスクレジスタ制御部40に、ベクトル命令のデータ型に対応するデータ型のマスクデータのコピーがマスクレジスタ56に格納済であるか否かを問い合わせる。
【0033】
格納済領域識別情報取得ステップS12
ベクトル命令発行制御部34は、マスクレジスタ制御部40から、後述するマスクデータコピー格納済回答ステップS21により、格納済であると回答された場合には、マスクレジスタ制御部40から、当該マスクデータのコピーが格納済である格納済マスクレジスタ領域を示す格納済領域識別情報を取得する。
【0034】
ベクトル命令実行リクエスト発行ステップS13
ベクトル命令発行制御部34は、格納済領域識別情報取得ステップS12において取得した格納済領域識別情報を含むマスク付きベクトル命令の実行リクエストをベクトル実行制御部52に発行すると共に、マスク付きベクトル命令の実行リクエストの発行を格納済領域識別情報と共にマスクレジスタ制御部40に通知する。
【0035】
未使用領域識別情報取得ステップS14
ベクトル命令発行制御部34は、マスクレジスタ制御部40から、後述するマスクデータコピー格納済回答ステップS21により、格納済でないと回答された場合には、マスクレジスタ制御部40から、未使用である未使用マスクレジスタ領域を示す未使用領域識別情報を取得する。
【0036】
マスクデータコピーリクエスト発行ステップS15
ベクトル命令発行制御部34は、未使用領域識別情報取得ステップS14において取得した未使用領域識別情報を含むマスクデータのコピーリクエストをベクトル実行制御部52に発行すると共に、マスクデータのコピーリクエストの発行を未使用領域識別情報と共にマスクレジスタ制御部40に通知する。
【0037】
マスクデータコピー完了待機ステップS16
ベクトル命令発行制御部34は、マスクデータコピーリクエスト発行ステップS15におけるマスクレジスタ制御部40へのマスクデータのコピーリクエストの発行の通知後、マスクレジスタ制御部40から、マスクデータコピー完了更新通知ステップS28により、マスクデータのコピー完了の更新の通知がなされるまで待機し、続いて、マスクデータコピー格納済問合ステップS11に戻る。
【0038】
以下、マスクレジスタ制御部40の各ステップについて詳説する。
マスクデータクリアステップS20
マスクレジスタ制御部40は、ベクトル命令発行制御部34から、マスクデータ更新ステップS30により、マスクデータのクリアリクエストが発行された場合には、マスク割当状態レジスタ42における複数のデータ型に対応する全てのマスク割当状態レジスタ42に格納されている割当済識別情報を「割当済でない」に更新する。
【0039】
本実施形態では、l=4種類のビット数k=8,16,32,64(bit)に対応する全てのマスク割当状態レジスタ領域に格納されている割当済識別情報フラグvidkについて、vidk=0とする。
【0040】
マスクデータコピー格納済回答ステップS21
マスクレジスタ制御部40は、ベクトル命令発行制御部34から、マスクデータコピー格納済問合ステップS11により、ベクトル命令のデータ型に対応するデータ型のマスクデータのコピーがマスクレジスタ56に格納済であるか否か問い合わされた場合において、マスク割当状態レジスタ42において、ベクトル命令のデータ型に対応するマスク割当状態レジスタ領域に格納された割当済識別情報が「割当済である」、書込中識別情報が「書込中でない」である場合には、ベクトル命令発行制御部34に格納済であると回答し、割当済識別情報が「割当済でない」である場合には、ベクトル命令発行制御部34に格納済でないと回答する。
【0041】
本実施形態では、ベクトル命令のビット数k(bit)に対応するマスク割当状態レジスタ領域に格納されている割当済識別情報フラグvidkがvidk=1でありかつ書込中識別情報フラグwrkがwrk=0の場合には、格納済であると回答し、vidk=0の場合には、格納済でないと回答する。
【0042】
格納済領域識別情報通知ステップS22
マスクレジスタ制御部40は、マスクデータコピー格納済回答ステップS21において格納済であると回答した場合には、ベクトル命令のデータ型に対応するマスク割当状態レジスタ領域に格納されている割当済領域識別情報を、マスクデータのコピーが格納済である格納済マスクレジスタ領域を示す格納済領域識別情報として、ベクトル命令発行制御部34に通知する。
【0043】
本実施形態では、ベクトル命令のビット数k(bit)に対応するマスク割当状態レジスタ領域に格納されている割当済領域識別情報のアドレスADk(=0,…,NumVmr-1)を格納済領域識別情報とする。
【0044】
ベクトル命令実行開始による参照カウント更新ステップS23
マスクレジスタ制御部40は、ベクトル命令発行制御部34から、ベクトル命令実行リクエスト発行ステップS13により、マスク付きベクトル命令の実行リクエストの発行を格納済領域識別情報と共に通知された場合には、格納済領域識別情報が示す格納済マスクレジスタ領域に対応するマスク参照カウンタ領域の参照カウントを追加する。
【0045】
本実施形態では、格納済領域識別情報のアドレスADk(=0,…,NumVmr-1)が示す格納済マスクレジスタ領域に対応するアドレスのマスク参照カウンタ領域の参照カウントを1だけインクリメントする。
【0046】
ベクトル命令実行完了による参照カウント更新ステップS24
マスクレジスタ制御部40は、ベクトル実行制御部52から、後述するベクトル命令実行完了通知ステップS32により、格納済領域識別情報と共にベクトル命令の実行完了を通知された場合には、格納済領域識別情報が示す格納済マスクレジスタ領域に対応するマスク参照カウンタ領域の参照カウントを減少する。
【0047】
本実施形態では、格納済領域識別情報のアドレスADk(=0,…,NumVmr-1)が示す格納済マスクレジスタ領域に対応するアドレスのマスク参照カウンタ領域の参照カウントを1だけデクリメントする。
【0048】
未使用領域識別情報通知ステップS25
マスクレジスタ制御部40は、マスクデータコピー格納済回答ステップS21において格納済でないと回答した場合には、マスク参照カウンタ44において、参照カウントが零であるマスク参照カウンタ領域に対応するマスクレジスタ領域を未使用の未使用マスクレジスタ領域とし、当該マスクレジスタ領域を示す識別情報を未使用領域識別情報として、ベクトル命令発行制御部34に通知する。参照カウントが零であるマスク参照カウンタ領域がない場合には、先行する命令の実行が完了して、いずれかのマスク参照カウンタ領域の参照カウントが零になるまで待機する。
【0049】
本実施形態では、参照カウントRCrがRCr=0であるマスク参照カウンタ領域のアドレスAD(=0,…,NumVmr-1)が未使用領域識別情報となり、参照カウントRCrがRCr=0であるマスク参照カウンタ領域がない場合には、いずれかのマスク参照カウンタ領域の参照カウントRCrがRCr=0となるまで待機する。
【0050】
マスクデータコピー開始による書込中識別情報及び参照カウント更新ステップS26
マスクレジスタ制御部40は、ベクトル命令発行制御部34から、マスクデータコピーリクエスト発行ステップS15により、マスクデータのコピーリクエストの発行を未使用領域識別情報と共に通知された場合には、ベクトル命令のデータ型に対応するマスク割当状態レジスタ領域の書込中識別情報を「書込中である」に更新すると共に、未使用領域識別情報が示す未使用マスクレジスタ領域に対応するマスク参照カウンタ領域に格納されている参照カウントを追加する。
【0051】
本実施形態では、ベクトル命令のビット数k(bit)に対応するマスク割当状態レジスタ領域の書込中識別情報フラグwrkを0から1に更新し、未使用領域識別情報のアドレスAD(=0,…,NumVmr-1)に対応するアドレスのマスク参照カウンタ領域の参照カウントRCrを1だけインクリメントする。
【0052】
マスクデータコピー完了による書込中識別情報及び参照カウント更新ステップS27
マスクレジスタ制御部40は、ベクトル実行制御部52から、マスクデータコピー完了通知ステップS34により、マスクデータのコピー完了を未使用領域識別情報と共に通知された場合には、ベクトル命令のデータ型に対応するマスク割当状態レジスタ領域の書込中識別情報を「書込中である」から「書込中でない」に更新すると共に、未使用領域識別情報が示す未使用マスクレジスタ領域に対応するマスク参照カウンタ領域に格納されている参照カウントを減少する。
【0053】
本実施形態では、ベクトル命令のビット数k(bit)に対応するマスク割当状態レジスタ領域の書込中識別情報フラグwrkを1から0に更新し、未使用領域識別情報のアドレスAD(=0,…,NumVmr-1)に対応するアドレスのマスク参照カウンタ領域の参照カウントRCrを1だけデクリメントする。
【0054】
マスクデータコピー完了更新通知ステップS28
マスクレジスタ制御部40は、マスクデータコピー完了による書込中識別情報及び参照カウント更新ステップS27において、ベクトル命令のデータ型に対応するマスク割当状態レジスタ領域の書込中識別情報が「書込中である」から「書込中でない」に更新された場合には、マスクデータのコピー完了の更新をベクトル命令発行制御部34に通知する。
【0055】
本実施形態では、ベクトル命令のビット数k(bit)に対応するマスク割当状態レジスタ領域の書込中識別情報フラグwrkが1から0に更新された場合に、マスクデータのコピー完了の更新を通知する。
【0056】
以下、ベクトル実行制御部52の各ステップについて説明する。
マスクデータ更新ステップS30
ベクトル実行制御部52は、ベクトル命令発行制御部34から、マスクデータ更新リクエスト発行ステップS10により、マスクデータの更新リクエストを発行された場合には、マスクデータの更新を実行する。
【0057】
ベクトル命令実行ステップS31
ベクトル実行制御部52は、ベクトル命令発行制御部34から、ベクトル命令実行リクエスト発行ステップS13により、格納済領域識別情報を含むマスク付きベクトル命令の実行リクエストを発行された場合には、マスク付きベクトル命令に従って、ベクトルレジスタ54における所定のベクトルレジスタ領域からベクトル命令のデータ型に対応するベクトルデータを読み出し、マスクレジスタ56における格納済領域識別情報により示される格納済マスクレジスタ領域からベクトル命令のデータ型に対応するマスクデータのコピーを読み出し、読み出したデータに対して演算、移送等の処理を実行し、実行結果をベクトルレジスタ54における所定のベクトルレジスタ領域に書き込む。
【0058】
ベクトル命令実行完了通知ステップS32
ベクトル実行制御部52は、ベクトル命令実行ステップS31におけるベクトル命令の実行が完了した場合には、ベクトル命令の実行完了を格納済領域識別情報と共にマスクレジスタ制御部40に通知する。
【0059】
マスクデータコピーステップS33
ベクトル実行制御部52は、ベクトル命令発行制御部34から、マスクデータコピーリクエスト発行ステップS15により、未使用領域識別情報を含むマスクデータのコピーリクエストを発行された場合には、ベクトルレジスタ54における所定のベクトルレジスタ領域に格納されたマスクデータを、マスクレジスタ56における未使用領域識別情報の示す未使用マスクレジスタ領域にコピーする。ここで、ベクトルレジスタ54のベクトルレジスタ領域からマスクレジスタ56のマスクレジスタ領域へのマスクデータのコピーにおいて、マスクデータは、第1のマスクデータ配列から第2のマスクデータ配列に並べ替えられる。
【0060】
マスクデータコピー完了通知ステップS34
ベクトル実行制御部52は、マスクデータコピーステップS33におけるマスクデータのコピーが完了した場合には、マスクデータのコピー完了を未使用領域識別情報と共にマスクレジスタ制御部40に通知する。
【0061】
図9乃至図12を参照して、マスクデータのコピーにおけるマスクデータの並替について説明する。
図9乃至図12に示されるように、ベクトルレジスタ54のベクトルレジスタ領域からマスクレジスタ56のマスクレジスタ領域へのマスクデータのコピーにおいて、マスクデータは、第1のマスクデータ配列から第2のマスクデータ配列に並べ替えられる。第2のマスクデータ配列において、ベクトルレジスタ領域の所定の範囲内に配置されるベクトル要素に対応するマスク要素は、ベクトルレジスタの当該所定の範囲に対応するマスクレジスタの所定の範囲内に配置される。
【0062】
本実施形態では、上述したとおり、ベクトルレジスタ54において、ベクトルデータ配列では、k(bit)のベクトルデータのn番目のベクトル要素enは、kn番からk(n+1)-1番のベクトルレジスタ要素に配置され、第1のマスクデータ配列では、マスクデータのn番目のマスク要素mnは、n番のベクトルレジスタ要素に配置される。そして、マスクレジスタ56において、第2のマスクデータ配列では、ベクトルレジスタ領域のkmaxj番とkmax(j+1)-1番との間のベクトルレジスタ要素の範囲に配置されるj,…,j+kmax/k-1番目のベクトル要素について、当該ベクトル要素に対応するj,…,j+kmax/k-1番目のマスク要素については、ベクトルレジスタ領域のkmaxj番とkmax(j+1)-1番との間のベクトルレジスタ要素の範囲に対応するマスクレジスタ領域の(kmax/kmin)j番と(kmax/kmin)(j+1)-1番との間のマスクレジスタ要素の範囲に配置される。ここで、jは以下の整数である。
【数2】
具体的には、マスクレジスタ56において、第2のマスクデータ配列では、マスクデータのI,…,I+kmax/k-1番目のマスク要素は、(kmax/kmin)I番と(kmax/kmin)(I+1)-1番との間のマスクレジスタ要素に配置され、本実施形態では、(kmax/kmin)I,…,(kmax/kmin)I+kmax/k-1番のマスクレジスタ要素に夫々配置される。なお、マスクデータのI,…,I+kmax/k-1番目のマスク要素は、(kmax/kmin)I番と(kmax/kmin)(I+1)-1番との間のマスクレジスタ要素に配置されるのであれば、どのように配置されてもよい。ここで、Iは以下の整数である。
【数3】
【0063】
図13を参照して、マスク付きベクトル命令の実行におけるデータ要素の移動について説明する。なお、図13については、マスク付きベクトル命令のビット数が64(bit)の場合を例として図示している。
図13に示されるように、上述したように、マスクレジスタ56において、第2のマスクデータ配列では、ベクトルレジスタ領域の所定の範囲内に配置されるベクトル要素に対応するマスク要素は、ベクトルレジスタ領域の当該所定の範囲に対応するマスクレジスタ領域の所定の範囲内に配置される。そして、ベクトルレジスタ領域の当該所定の範囲に配置されるベクトル要素に対して操作を行う演算機の近傍に、マスクレジスタ領域の当該所定の範囲が配置される。このため、マスク付きベクトル命令の実行において、当該マスク付きベクトル命令のデータ型にかかわらず、ベクトル要素に対して操作を行う演算機まで当該ベクトル要素に対応するマスク要素を移動するのに、長距離を移動する必要がなくなっている。これに対して、マスクデータが第1のマスクデータ配列のままでマスクレジスタ領域にコピーされる場合には、マスク要素は、マスクレジスタ領域の一端に纏めて順次詰めて配置されることになるため、ベクトル要素に対して操作を行う演算機まで当該ベクトル要素に対応するマスク要素を移動するのに、長距離を移動しなければならなくなる。
【0064】
本実施形態では、上述したように、マスクレジスタ56において、第2のマスクデータ配列では、ベクトルレジスタ領域のkmaxj番とkmax(j+1)-1番との間のベクトルレジスタ要素の範囲に配置されるj,…,j+kmax/k-1番目のベクトル要素について、当該ベクトル要素に対応するj,…,j+kmax/k-1番目のマスク要素については、ベクトルレジスタ領域のkmaxj番とkmax(j+1)-1番との間のベクトルレジスタ要素の範囲に対応するマスクレジスタ領域の(kmax/kmin)j番と(kmax/kmin)(j+1)-1番との間のマスクレジスタ要素の範囲に配置される。そして、ベクトルレジスタ領域のkmaxj番とkmax(j+1)-1番との間のベクトルレジスタ要素の範囲に配置されるj,…,j+kmax/k-1番目のベクトル要素に対して操作を行うj番の演算機の近傍に、マスクレジスタ領域の(kmax/kmin)j番と(kmax/kmin)(j+1)-1番との間のマスクレジスタ要素の範囲が配置される。このため、図13(a)に示されるように、マスク付きベクトル命令の実行において、当該マスク付きベクトル命令のビット数kにかかわらず、j,…,j+kmax/k-1番目のベクトル要素に対して操作を行うj番目の演算機まで、j,…,j+kmax/k-1番目のベクトル要素に対応するj,…,j+kmax/k-1番目のマスク要素を移動するのに、長距離を移動する必要がなくなっている。これに対して、図13(b)に示されるように、マスクデータが第1のマスクデータ配列のままでマスクレジスタ領域にコピーされる場合には、j,…,j+kmax/k-1番のマスク要素は、0番のマスクレジスタ要素から順次詰めて配置されることになるため、マスク付きベクトル命令の実行において、j,…,j+kmax/k-1番目のベクトル要素に対して操作を行うj番目の演算機まで、j,…,j+kmax/k-1番目のベクトル要素に対応するj,…,j+kmax/k-1番目のマスク要素を移動するのに、長距離を移動しなければならなくなる。
【0065】
上述した実施形態については、スカラ部10から投機的なマスク付きベクトル命令の実行指示がある場合についても適用可能である。当該実施形態においては、投機的なマスク付きベクトル命令の実行をキャンセルする場合には、マスク割当状態レジスタ42における複数のデータ型に対応する全てのマスク割当状態レジスタ42の割当済識別情報を「割当済でない」に更新する。また、ベクトル命令発行制御部34が発行済のマスク付きベクトル命令をキャンセルする場合には、キャンセルされたマスク付きベクトル命令の数だけ、当該マスク付きベクトル命令のデータ型に対応するデータ型のマスクデータのコピーが格納された格納済マスクレジスタ領域に対応するマスク参照カウンタ領域の参照カウントを減少させる。
【0066】
以上述べたように、本実施態様では、マスク付きベクトル命令を実行するのに、マスクレジスタ56に格納されているマスクデータのコピー並びにベクトルレジスタ54に格納されているベクトルデータを読み出しているため、ベクトルレジスタ54にマスクデータ読出用のリードポートを追加することなく、マスクデータとベクトルデータとを同時に読み出すことができる。このため、ベクトルレジスタ54にマスクデータ読出用のリードポートを追加することによるベクトルレジスタ54の実装面積及び消費電力の増加を招来することなく、特にベクトルレジスタ54からマスクデータとベクトルデータとを順次読み出す場合と比較して、高性能なマスク付きベクトル命令を実現することが可能となっている。
【0067】
さらに、マスクレジスタ56において、ベクトルレジスタ54の所定の範囲内に配置されるベクトル要素に対応するマスク要素は、ベクトルレジスタ54の当該所定の範囲に対応するマスクレジスタ56の所定の範囲内に配置される。このため、ベクトルレジスタ54の当該所定の範囲に配置されるベクトル要素に対して操作を行う演算機の近傍にマスクレジスタ56の当該所定の範囲を配置することで、マスク付きベクトル命令の実行において、当該マスク付きベクトル命令のデータ型にかかわらず、ベクトル要素に対して操作を行う演算機まで当該ベクトル要素に対応するマスク要素を移動するのに、長距離を移動する必要がなく、遅延及び消費電力の増大を低減することが可能となっている。
【符号の説明】
【0068】
10…スカラ部 20…ベクトル部 30…ベクトル制御部
32…ベクトル命令デコード部 34…ベクトル命令発行制御部
40…マスクレジスタ制御部 42…マスク割当状態レジスタ
44…マスク参照カウンタ 50…ベクトル実行部 52…ベクトル実行制御部
54…ベクトルレジスタ 56…マスクレジスタ 58…ベクトル演算部
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13