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

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

▶ アーム・リミテッドの特許一覧

特表2025-504087メモリアクセス動作を実行するための技法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2025-02-06
(54)【発明の名称】メモリアクセス動作を実行するための技法
(51)【国際特許分類】
   G06F 17/16 20060101AFI20250130BHJP
   G06F 9/32 20180101ALI20250130BHJP
【FI】
G06F17/16 F
G06F9/32 310J
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024545864
(86)(22)【出願日】2022-12-20
(85)【翻訳文提出日】2024-07-31
(86)【国際出願番号】 GB2022053313
(87)【国際公開番号】W WO2023148467
(87)【国際公開日】2023-08-10
(31)【優先権主張番号】2201544.0
(32)【優先日】2022-02-07
(33)【優先権主張国・地域又は機関】GB
(81)【指定国・地域】
(71)【出願人】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】ボットマン、フランソワ クリストファー ジャック
(72)【発明者】
【氏名】グロカット、トーマス クリストファー
【テーマコード(参考)】
5B033
5B056
【Fターム(参考)】
5B033DB01
5B056AA05
(57)【要約】
ベクトル処理動作を実行する処理回路と、ベクトルレジスタのセットと、必要な動作を実行するように処理回路を制御するためにベクトル命令をデコードする命令デコーダと、を有する装置が説明される。命令デコーダは、複数のメモリアクセス動作を指定する所与のベクトルメモリアクセス命令に応答し、各メモリアクセス動作は、関連付けられたデータ要素にアクセスするように実行されて、所与のベクトルメモリアクセス命令のデータベクトル指示フィールドから、複数のデータ要素に関連付けられたベクトルレジスタのセット内の少なくとも1つのベクトルレジスタを決定し、所与のベクトルメモリアクセス命令の少なくとも1つのケイパビリティベクトル指示フィールドから、複数のケイパビリティを含むベクトルレジスタのセット内の複数のベクトルレジスタを決定することができる。各ケイパビリティは、複数のデータ要素内のデータ要素のうちの1つに関連付けられ、アドレス指示と、メモリにアクセスするときにそのアドレス指示の使用を制約する制約情報とを提供する。少なくとも1つのケイパビリティベクトル指示フィールドから決定されるベクトルレジスタの数は、データベクトル指示フィールドから決定されるベクトルレジスタの数よりも多い。命令デコーダは、処理回路を、複数のデータ要素内の各所与のデータ要素について、関連付けられたケイパビリティによって提供されるアドレス指示に基づいてメモリアドレスを決定し、所与のデータ要素にアクセスするために使用されるメモリアクセス動作が、関連付けられたケイパビリティの制約情報を考慮して、その決定されたメモリアドレスに関して許可されるかどうかを決定し、メモリアクセス動作が許可される各データ要素についてメモリアクセス動作の実行を可能にする、ように制御する。
【特許請求の範囲】
【請求項1】
装置であって、
ベクトル処理動作を実行する処理回路と、
ベクトルレジスタのセットと、
ベクトル命令をデコードして、前記ベクトル命令によって指定された前記ベクトル処理動作を実行するように前記処理回路を制御する命令デコーダと、を備え、
前記命令デコーダは、関連付けられたデータ要素にアクセスするために各メモリアクセス動作が実行される複数のメモリアクセス動作を指定する所与のベクトルメモリアクセス命令に応答して、前記所与のベクトルメモリアクセス命令のデータベクトル指示フィールドから、複数のデータ要素に関連付けられた前記ベクトルレジスタのセット内の少なくとも1つのベクトルレジスタを決定し、複数のケイパビリティを含む前記ベクトルレジスタのセット内の複数のベクトルレジスタを決定し、各ケイパビリティは、前記複数のデータ要素内の前記データ要素のうちの1つに関連付けられ、アドレス指示と、メモリにアクセスするときに前記アドレス指示の使用を制約する制約情報とを提供し、前記少なくとも1つのケイパビリティベクトル指示フィールドから決定されるベクトルレジスタの数は、前記データベクトル指示フィールドから決定されるベクトルレジスタの数よりも多く、
前記命令デコーダは、前記処理回路を、
前記複数のデータ要素内の各所与のデータ要素について、前記関連付けられたケイパビリティによって提供される前記アドレス指示に基づいてメモリアドレスを決定し、前記所与のデータ要素にアクセスするために使用される前記メモリアクセス動作が、前記関連付けられたケイパビリティの前記制約情報を考慮して、前記決定されたメモリアドレスに関して許可されるかどうかを決定し、
前記メモリアクセス動作が許可される各データ要素に対して前記メモリアクセス動作の実行を可能にし、任意の所与のデータ要素に対する前記メモリアクセス動作の実行は、前記所与のデータ要素を、前記メモリ内の前記決定されたメモリアドレスと前記少なくとも1つのベクトルレジスタとの間で移動させる、ように制御するように更に構成されている、装置。
【請求項2】
前記ベクトルレジスタのセットのうちの所与のベクトルレジスタ内の各ケイパビリティサイズブロックに関連して有効ケイパビリティ指示フィールドを提供するケイパビリティ指示ストレージを更に備え、各有効ケイパビリティ指示フィールドは、前記関連付けられたケイパビリティサイズブロックが有効ケイパビリティを記憶し、そうでなければクリアされるときを示すように設定されるように構成されている、請求項1に記載の装置。
【請求項3】
前記ケイパビリティ指示ストレージは、前記ベクトルレジスタのセット内に組み込まれている、請求項2に記載の装置。
【請求項4】
前記処理回路は、前記装置によって実行可能な命令のセットの中の1つ以上の特定の命令の実行に応答して、有効ケイパビリティが前記関連付けられたケイパビリティサイズブロックに記憶されていることを示すために、任意の有効ケイパビリティ指示フィールドのみが設定されることを可能にするように構成されている、請求項2又は3に記載の装置。
【請求項5】
前記少なくとも1つのケイパビリティベクトル指示フィールドから決定される前記複数のベクトルレジスタを形成するベクトルレジスタの数は、2の累乗である、請求項1から4のいずれか一項に記載の装置。
【請求項6】
前記少なくとも1つのケイパビリティベクトル指示フィールドは、1つのベクトルレジスタを識別するように構成された単一ケイパビリティ指示フィールドであり、前記命令デコーダは、決定された関係に基づいて前記複数のベクトルレジスタのうちの残りのベクトルレジスタを決定するように構成されている、請求項1から5のいずれか一項に記載の装置。
【請求項7】
前記複数のベクトルレジスタ内のベクトルレジスタの数は2であり、前記単一ケイパビリティベクトル指示フィールドは、前記1つのベクトルレジスタを識別する第1のベクトルレジスタ番号を示し、前記第1のベクトルレジスタ番号は、そのN個の最下位ビットが論理0値になるように制約され、前記命令デコーダは、前記第1のベクトルレジスタ番号を再使用し、前記N個の最下位ビットのうちの少なくとも1つを論理1値に選択的に設定することによって、前記残りのベクトルレジスタの各々についてベクトルレジスタ番号を生成するように構成されている、請求項6に記載の装置。
【請求項8】
前記少なくとも1つのベクトルレジスタ内の隣接する位置に関連付けられた任意の所与の対のデータ要素について、前記関連付けられたケイパビリティは、前記複数のベクトルレジスタのうちの異なるベクトルレジスタに記憶される、請求項1から7のいずれか一項に記載の装置。
【請求項9】
前記データベクトル指示フィールドから決定される前記少なくとも1つのベクトルレジスタは、単一ベクトルレジスタを備え、各データ要素は、前記単一ベクトルレジスタの対応するデータレーンに関連付けられ、
各ケイパビリティは、前記複数のベクトルレジスタ内の前記ベクトルレジスタのうちの1つの中のケイパビリティレーン内に位置し、
所与のデータ要素について、前記関連付けられたケイパビリティを含む前記ベクトルレジスタは、前記対応するデータレーンのレーン番号の所与の数の最下位ビットに応じて決定され、前記関連付けられたケイパビリティを含む前記ケイパビリティレーンは、前記対応するデータレーンのレーン番号の残りのビットに応じて決定される、請求項1から8のいずれか一項に記載の装置。
【請求項10】
前記複数のケイパビリティを含む前記複数のベクトルレジスタ内のベクトルレジスタの数は、論理的に値0~P-1を有するシーケンスとみなされるPであり、任意の所与のベクトルレジスタ内のケイパビリティレーンの数は、値0~M-1を有するMであり、
前記所与のデータ要素に関連付けられた前記データレーンは、値0~X-1を有するデータレーンXであり、前記複数のベクトルレジスタ内の前記関連付けられたケイパビリティの位置は、商及び余りを生成するためにXをPで除算することによって決定され、前記商は、前記関連付けられたケイパビリティを含む前記ケイパビリティレーンを識別し、前記余りは、前記関連付けられたケイパビリティを含む前記ベクトルレジスタを識別する、請求項9に記載の装置。
【請求項11】
前記ベクトルレジスタのセットは、複数のセクションに論理的に分割され、各セクションは、前記ベクトルレジスタのセット内の前記ベクトルレジスタの各々からの対応する部分を含み、
前記複数のケイパビリティは、各データ要素について、前記関連付けられたケイパビリティが前記データ要素と同じセクション内に記憶されるように、前記複数のベクトルレジスタ内に位置し、
前記所与のベクトルメモリアクセス命令の実行が複数のビートに分割され、各ビート中に、前記所与のベクトルメモリアクセス命令を実行するために、前記ベクトルレジスタのセットのうちの1つのセクションのみがアクセスされる、請求項1から10のいずれか一項に記載の装置。
【請求項12】
前記処理回路は、1つ以上のビートにわたって、次のセクション内の前記データ要素に対する前記メモリアクセス動作を実行する前に、1つ以上のビートにわたって、所与のセクション内の前記データ要素に対する前記メモリアクセス動作を実行するように構成されている、請求項11に記載の装置。
【請求項13】
前記命令デコーダは、前記メモリと前記複数のベクトルレジスタとの間で複数のケイパビリティを転送するように前記命令デコーダに前記処理回路を制御させる複数のベクトルケイパビリティメモリ転送命令をデコードし、前記メモリに順次記憶される前記複数のケイパビリティ内の任意の所与の対のケイパビリティが前記複数のベクトルレジスタの異なるベクトルレジスタに記憶されるように、前記複数のケイパビリティが前記複数のベクトルレジスタに順次記憶され、前記複数のケイパビリティが前記複数のベクトルレジスタにデインターリーブされるように、前記転送中に前記複数のケイパビリティを再構成するように構成されている、請求項1から12のいずれか一項に記載の装置。
【請求項14】
各ベクトルケイパビリティメモリ転送命令は、各他のベクトルケイパビリティメモリ転送命令に対して異なるケイパビリティを識別するように構成され、各ベクトルケイパビリティメモリ転送命令は、アクセスパターンを識別するように構成され、前記アクセスパターンは、前記処理回路に、前記アクセスパターンによって指定された前記再構成を実行しながら、前記識別されたケイパビリティを転送させる、請求項13に記載の装置。
【請求項15】
前記メモリは、複数のメモリバンクから構成され、
各ベクトルケイパビリティメモリ転送命令について、前記アクセスパターンは、前記ベクトルケイパビリティメモリ転送命令が前記処理回路によって実行されるときに、前記メモリバンクのうちの2つ以上がアクセスされるように定義される、請求項14に記載の装置。
【請求項16】
前記所与のベクトルメモリアクセス命令の前記データベクトル指示フィールドから決定される前記少なくとも1つのベクトルレジスタは、単一ベクトルレジスタを備え、前記ケイパビリティは、前記データ要素のサイズの2倍であり、前記少なくとも1つのケイパビリティベクトル指示フィールドから決定される前記複数のベクトルレジスタは、2つのベクトルレジスタを備える、請求項1から15のいずれか一項に記載の装置。
【請求項17】
前記所与のベクトルメモリアクセス命令は、アドレスオフセットを示す即値を更に含み、前記処理回路は、前記複数のデータ要素内の各所与のデータ要素について、前記アドレスオフセットを前記関連付けられたケイパビリティによって提供される前記アドレス指示と組み合わせることによって、前記所与のデータ要素の前記メモリアドレスを決定するように構成されている、請求項1から16のいずれか一項に記載の装置。
【請求項18】
前記所与のベクトルメモリアクセス命令は、アドレスオフセットを示す即値を更に含み、各所与のデータ要素について、前記処理回路が、前記アドレスオフセットに応じて前記アドレス指示を調整することによって、前記複数のベクトルレジスタ内の前記関連付けられたケイパビリティの前記アドレス指示を更新するように構成されている、請求項1から17のいずれか一項に記載の装置。
【請求項19】
ベクトル処理動作を実行する処理回路とベクトルレジスタのセットとを提供する装置内でメモリアクセス動作を実行する方法であって、
関連付けられたデータ要素にアクセスするために各メモリアクセス動作が実行される複数のメモリアクセス動作を指定する所与のベクトルメモリアクセス命令に応答して、前記所与のベクトルメモリアクセス命令のデータベクトル指示フィールドから、複数のデータ要素に関連付けられた前記ベクトルレジスタのセット内の少なくとも1つのベクトルレジスタを決定し、複数のケイパビリティを含む前記ベクトルレジスタのセット内の複数のベクトルレジスタを決定し、各ケイパビリティは、前記複数のデータ要素内の前記データ要素のうちの1つに関連付けられ、アドレス指示と、メモリにアクセスするときに前記アドレス指示の使用を制約する制約情報とを提供し、前記少なくとも1つのケイパビリティベクトル指示フィールドから決定されるベクトルレジスタの数は、前記データベクトル指示フィールドから決定されるベクトルレジスタの数よりも多い、命令デコーダを採用することと、
前記処理回路を、
前記複数のデータ要素内の各所与のデータ要素について、前記関連付けられたケイパビリティによって提供される前記アドレス指示に基づいてメモリアドレスを決定し、前記所与のデータ要素にアクセスするために使用される前記メモリアクセス動作が、前記関連付けられたケイパビリティの前記制約情報を考慮して、前記決定されたメモリアドレスに関して許可されるかどうかを決定し、
前記メモリアクセス動作が許可される各データ要素に対して前記メモリアクセス動作の実行を可能にし、任意の所与のデータ要素に対する前記メモリアクセス動作の実行は、前記所与のデータ要素を前記メモリ内の前記決定されたメモリアドレスと前記少なくとも1つのベクトルレジスタとの間で移動させる、ように制御することと、を含む、方法。
【請求項20】
命令実行環境を提供するようにホストデータ処理装置を制御するコンピュータプログラムであって、
ベクトル処理動作を実行する処理プログラムロジックと、
ベクトルレジスタのセットをエミュレートするベクトルレジスタエミュレートプログラムロジックと、
ベクトル命令をデコードして、前記ベクトル命令によって指定された前記ベクトル処理動作を実行するように前記処理プログラム論理を制御する命令デコードプログラムロジックと、を含み、
前記命令デコードプログラムロジックは、関連付けられたデータ要素にアクセスするために各メモリアクセス動作が実行される複数のメモリアクセス動作を指定する所与のベクトルメモリアクセス命令に応答して、前記所与のベクトルメモリアクセス命令のデータベクトル指示フィールドから、複数のデータ要素に関連付けられた前記ベクトルレジスタのセット内の少なくとも1つのベクトルレジスタを決定し、複数のケイパビリティを含む前記ベクトルレジスタのセット内の複数のベクトルレジスタを決定し、各ケイパビリティは、前記複数のデータ要素内のデータ要素のうちの1つに関連付けられ、アドレス指示と、メモリにアクセスするときに前記アドレス指示の使用を制約する制約情報とを提供し、前記少なくとも1つのケイパビリティベクトル指示フィールドから決定されるベクトルレジスタの数は、前記データベクトル指示フィールドから決定されるベクトルレジスタの数よりも多く、
前記命令デコードプログラムロジックは、前記処理プログラムロジックを、
前記複数のデータ要素内の各所与のデータ要素について、前記関連付けられたケイパビリティによって提供される前記アドレス指示に基づいてメモリアドレスを決定し、前記所与のデータ要素にアクセスするために使用される前記メモリアクセス動作が、前記関連付けられたケイパビリティの前記制約情報を考慮して、前記決定されたメモリアドレスに関して許可されるかどうかを決定し、
前記メモリアクセス動作が許可される各データ要素に対して前記メモリアクセス動作の実行を可能にし、任意の所与のデータ要素に対する前記メモリアクセス動作の実行は、前記所与のデータ要素を前記メモリ内の前記決定されたメモリアドレスと前記少なくとも1つのベクトルレジスタとの間で移動させる、ように制御するように更に構成されている、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関し、より具体的には、メモリアクセス動作の操作に関する。
【0002】
所与のベクトル命令によって定義される動作を、データ要素のベクトル内の複数のデータ要素に関して独立して実行させるために、所与のベクトル命令を実行可能にすることによって、コード密度及びしばしば性能を改善しようとするベクトル処理システムが開発されている。したがって、メモリアクセス動作のコンテキストでは、ベクトルロード命令に応答して複数の連続するデータ要素をメモリから指定されたベクトルレジスタにロードすること、又はベクトル記憶命令に応答して複数の連続するデータ要素を指定されたベクトルレジスタからメモリに記憶することが可能である。処理されるデータ要素がメモリ内の任意の位置に存在することを可能にするように、それらのベクトルロード命令又はベクトル記憶命令のベクトル集約変形又はベクトル分散変形を提供することも可能である。そのようなベクトル集約命令又はベクトル分散命令を使用するとき、処理されるべき複数のデータ要素に対してベクトルが識別されることに加えて、ベクトルはまた、各データ要素のメモリアドレスを決定するために使用される複数のアドレス指示を提供するように識別することができる。
【0003】
所与のプロセスに対して特定のケイパビリティが定義され、定義されたケイパビリティ外の動作を実行しようとする試みがある場合に、エラーがトリガされ得る、ケイパビリティベースのアーキテクチャへの関心が高まっている。ケイパビリティは、様々な形態をとることができるが、ケイパビリティの1つのタイプは、有界ポインタ(「ファットポインタ」とも称され得る)である。
【0004】
各ケイパビリティは、そのケイパビリティを使用するときに実施することができる動作を制限するために使用される制約情報を含むことができる。例えば、有界ポインタを考慮すると、これは、関連付けられた許可を識別する1つ以上の許可フラグと共に、そのケイパビリティを使用するときに処理回路によってアクセス可能なメモリアドレスの拡張不可能な範囲を識別するために使用される情報を提供し得る。
【0005】
ケイパビリティの使用を通じて提供されるセキュリティ利益から利益を得るために、ベクトル集約命令又はベクトル分散命令の実行をサポートするが、様々なアドレス指示がケイパビリティによって指定されることを可能にすることが望ましい。しかしながら、アドレス指示を提供するケイパビリティは、ケイパビリティを形成するためにアドレス指示に関連して提供される制約情報のために、同等の標準アドレス指示よりも本質的に大きい。
【発明の概要】
【0006】
第1の例示的な構成では装置が提供され、この装置は、ベクトル処理動作を実行する処理回路と、ベクトルレジスタのセットと、ベクトル命令を復号して、ベクトル命令によって指定されたベクトル処理動作を実行するように処理回路を制御する命令デコーダと、を備え、命令デコーダは、関連付けられたデータ要素にアクセスするために各メモリアクセス動作が実行される複数のメモリアクセス動作を指定する所与のベクトルメモリアクセス命令に応答して、所与のベクトルメモリアクセス命令のデータベクトル指示フィールドから、複数のデータ要素に関連付けられたベクトルレジスタのセット内の少なくとも1つのベクトルレジスタを決定し、複数のケイパビリティを含むベクトルレジスタのセット内の複数のベクトルレジスタを決定し、各ケイパビリティは、複数のデータ要素内のデータ要素のうちの1つに関連付けられ、アドレス指示と、メモリにアクセスするときにアドレス指示の使用を制約する制約情報とを提供し、少なくとも1つのケイパビリティベクトル指示フィールドから決定されるベクトルレジスタの数は、データベクトル指示フィールドから決定されるベクトルレジスタの数よりも多く、命令デコーダは、処理回路を、複数のデータ要素内の各所与のデータ要素について、関連付けられたケイパビリティによって提供されるアドレス指示に基づいてメモリアドレスを決定し、所与のデータ要素にアクセスするために使用されるメモリアクセス動作が、関連付けられたケイパビリティの制約情報を考慮して、決定されたメモリアドレスに関して許可されるかどうかを決定し、メモリアクセス動作が許可される各データ要素についてメモリアクセス動作の実行を可能にし、任意の所与のデータ要素についてメモリアクセス動作の実行は、所与のデータ要素を、メモリ内の決定されたメモリアドレスと少なくとも1つのベクトルレジスタとの間で移動させる、ように制御するように更に構成される。
【0007】
更なる例示的な構成では、ベクトル処理動作及びベクトルレジスタのセットを実行するための処理回路を提供する装置内でメモリアクセス動作を実行する方法が提供され、本方法は、関連付けられたデータ要素にアクセスするために各メモリアクセス動作が実行される複数のメモリアクセス動作を指定する所与のベクトルメモリアクセス命令に応答して、所与のベクトルメモリアクセス命令のデータベクトル指示フィールドから、複数のデータ要素に関連付けられたベクトルレジスタのセット内の少なくとも1つのベクトルレジスタを決定し、複数のケイパビリティを含むベクトルレジスタのセット内の複数のベクトルレジスタを決定し、各ケイパビリティは、複数のデータ要素内のデータ要素のうちの1つに関連付けられ、アドレス指示と、メモリにアクセスするときにアドレス指示の使用を制約する制約情報とを提供し、少なくとも1つのケイパビリティベクトル指示フィールドから決定されるベクトルレジスタの数は、データベクトル指示フィールドから決定されるベクトルレジスタの数よりも多い、命令デコーダを採用することと、処理回路を、複数のデータ要素内の各所与のデータ要素について、関連付けられたケイパビリティによって提供されるアドレス指示に基づいてメモリアドレスを決定し、所与のデータ要素にアクセスするために使用されるメモリアクセス動作が、関連付けられたケイパビリティの制約情報を考慮して、決定されたメモリアドレスに関して許可されるかどうかを決定し、メモリアクセス動作が許可される各データ要素についてメモリアクセス動作の実行を可能にし、任意の所与のデータ要素についてメモリアクセス動作の実行は、所与のデータ要素を、メモリ内の決定されたメモリアドレスと少なくとも1つのベクトルレジスタとの間で移動させる、ことと、を含む。
【0008】
別の例示的な構成では、命令実行環境を提供するようにホストデータ処理装置を制御するためのコンピュータプログラムであって、コンピュータプログラムは、ベクトル処理動作を実行する処理プログラムロジックと、ベクトルレジスタのセットをエミュレートするベクトルレジスタエミュレートプログラムロジックと、ベクトル命令をデコードして、ベクトル命令によって指定されたベクトル処理動作を実行するように処理プログラム論理を制御する命令デコードプログラムロジックと、を含み、命令デコードプログラムロジックは、関連付けられたデータ要素にアクセスするために各メモリアクセス動作が実行される複数のメモリアクセス動作を指定する所与のベクトルメモリアクセス命令に応答して、所与のベクトルメモリアクセス命令のデータベクトル指示フィールドから、複数のデータ要素に関連付けられたベクトルレジスタのセット内の少なくとも1つのベクトルレジスタを決定し、複数のケイパビリティを含むベクトルレジスタのセット内の複数のベクトルレジスタを決定し、各ケイパビリティは、複数のデータ要素内のデータ要素のうちの1つに関連付けられ、アドレス指示と、メモリにアクセスするときにアドレス指示の使用を制約する制約情報とを提供し、少なくとも1つのケイパビリティベクトル指示フィールドから決定されるベクトルレジスタの数は、データベクトル指示フィールドから決定されるベクトルレジスタの数よりも多く、命令デコードプログラムロジックは、処理プログラムロジックを、複数のデータ要素内の各所与のデータ要素について、関連付けられたケイパビリティによって提供されるアドレス指示に基づいてメモリアドレスを決定し、所与のデータ要素にアクセスするために使用されるメモリアクセス動作が、関連付けられたケイパビリティの制約情報を考慮して、決定されたメモリアドレスに関して許可されるかどうかを決定し、メモリアクセス動作が許可される各データ要素についてメモリアクセス動作の実行を可能にし、任意の所与のデータ要素についてメモリアクセス動作の実行は、所与のデータ要素を、メモリ内の決定されたメモリアドレスと少なくとも1つのベクトルレジスタとの間で移動させる、ように制御するように更に構成される。
【0009】
更に別の例示的な構成では、装置が提供され、この装置は、ベクトル処理動作を実行するための処理手段と、ベクトルレジスタ手段のセットと、ベクトル命令をデコードして、ベクトル命令によって指定されたベクトル処理動作を実行するように処理手段を制御するための命令デコード手段と、を備え、命令デコーダ手段は、関連付けられたデータ要素にアクセスするために各メモリアクセス動作が実行される複数のメモリアクセス動作を指定する所与のベクトルメモリアクセス命令に応答して、所与のベクトルメモリアクセス命令のデータベクトル指示フィールドから、複数のデータ要素に関連付けられたベクトルレジスタ手段のセット内の少なくとも1つのベクトルレジスタ手段を決定し、複数のケイパビリティを含むベクトルレジスタ手段のセット内の複数のベクトルレジスタ手段を決定し、各ケイパビリティは、複数のデータ要素内のデータ要素のうちの1つに関連付けられ、アドレス指示と、メモリにアクセスするときにアドレス指示の使用を制約する制約情報とを提供し、少なくとも1つのケイパビリティベクトル指示フィールドから決定されるベクトルレジスタ手段の数は、データベクトル指示フィールドから決定されるベクトルレジスタ手段の数よりも多く、命令デコード手段は、処理手段を、複数のデータ要素内の各所与のデータ要素について、関連付けられたケイパビリティによって提供されるアドレス指示に基づいてメモリアドレスを決定し、所与のデータ要素にアクセスするために使用されるメモリアクセス動作が、関連付けられたケイパビリティの制約情報を考慮して、決定されたメモリアドレスに関して許可されるかどうかを決定し、メモリアクセス動作が許可される各データ要素についてメモリアクセス動作の実行を可能にし、任意の所与のデータ要素についてメモリアクセス動作の実行は、所与のデータ要素を、メモリ内の決定されたメモリアドレスと少なくとも1つのベクトルレジスタ手段との間で移動させる、ように制御するように更に構成される。
【図面の簡単な説明】
【0010】
本技法について、添付の図面に示す本技法の例を参照して、例示としてのみ更に説明する。
図1】例示的な一実装形態による装置のブロック図である。
図2】例示的な一実装形態による、ケイパビリティに関連付けられたタグビットの使用を例示する。
図3A】例示的な一実装形態による、ベクトルレジスタの各ケイパビリティサイズブロックに関連付けて有効ケイパビリティ指示(一例ではタグビットの形態をとる)を記憶して、そのケイパビリティサイズブロックが有効ケイパビリティを記憶するかどうかを示すことができる異なる方法を示す図である。
図3B】例示的な一実装形態による、ベクトルレジスタの各ケイパビリティサイズブロックに関連付けて有効ケイパビリティ指示(一例ではタグビットの形態をとる)を記憶して、そのケイパビリティサイズブロックが有効ケイパビリティを記憶するかどうかを示すことができる異なる方法を示す図である。
図4A】例示的な一実装形態による、ベクトルレジスタの各ケイパビリティサイズブロックに関連して維持されるタグビットがどのように管理され得るかを示す流れ図である。
図4B】例示的な一実装形態による、ベクトルレジスタの各ケイパビリティサイズブロックに関連して維持されるタグビットがどのように管理され得るかを示す流れ図である。
図5A】例示的な一実装形態による、ベクトルメモリアクセス命令内に提供され得るフィールドを示す図である。
図5B】例示的な一実装形態による、そのようなベクトルメモリアクセス命令を実行するときに実行されるステップを示す流れ図である。
図6A】例示的な一実装形態による、集約及び分散演算を実行するときに使用される必要なケイパビリティを保持する複数のベクトルレジスタを決定するために使用することができる技法を示す流れ図である。
図6B】例示的な一実装形態による、集約及び分散演算を実行するときに使用される必要なケイパビリティを保持する複数のベクトルレジスタを決定するために使用することができる技法を示す流れ図である。
図7】例示的な一実装形態による、ベクトルレジスタのセットがどのように複数のセクションに論理的に区分され得るかを概略的に示す。
図8A】本明細書で説明するタイプの集約又は分散演算を実行するときに使用され得るデータ要素及び関連付けられたケイパビリティの特定の例示的な構成を示す図である。
図8B】本明細書で説明するタイプの集約又は分散演算を実行するときに使用され得るデータ要素及び関連付けられたケイパビリティの特定の例示的な構成を示す図である。
図8C】本明細書で説明するタイプの集約又は分散演算を実行するときに使用され得るデータ要素及び関連付けられたケイパビリティの特定の例示的な構成を示す図である。
図9】例示的な一実装形態による、各データ要素について、関連付けられたケイパビリティがどのように決定され得るかを示す流れ図である。
図10】ベクトル命令の重複実行の一例を示す図である。
図11】異なるプロセッサ実装間、又は実行時に命令の実行の異なるインスタンス間の、連続するベクトル命令間の重複の量をスケーリングする3つの例を示す。
図12】本明細書に説明される様式で集約及び分散演算を行うときにそれらの使用を可能にする複数のベクトルレジスタ内の構成にケイパビリティが記憶されることを確実にするように、メモリとベクトルレジスタとの間でケイパビリティを移動させるために、ベクトルケイパビリティメモリ転送命令のシーケンスが例示的な一実装形態においてどのように使用され得るかを示す流れ図である。
図13】本明細書で説明される技法による、メモリとベクトルレジスタとの間でケイパビリティを転送するためにベクトルケイパビリティメモリ転送命令のシーケンスを採用するときに、異なるメモリバンクがどのようにアクセスされ得るかを概略的に示す。
図14】使用され得るシミュレータ例を示す。
【発明を実施するための形態】
【0011】
本明細書で説明する技法によれば、ベクトル処理動作を実行するための処理回路と、ベクトルレジスタのセットと、ベクトル命令によって指定されたベクトル処理動作を実行するように処理回路を制御するためにベクトル命令をデコードする命令デコーダと、を有する装置が提供される。ベクトル命令によって指定されるベクトル処理動作は、ベクトル内の複数のデータ要素の各々に対して必要な動作を独立して実行することによって実施され得、それらの必要な動作は、並列に、次々に順次に、又はグループで実行され得る(例えば、グループ内の動作が並列に実行されてもよく、各グループが順次に実行されてもよい)。
【0012】
命令デコーダは、複数のメモリアクセス動作を指定する所与のベクトルメモリアクセス命令を処理するように構成され得、各メモリアクセス動作は、関連付けられたデータ要素にアクセスするために実行されるものであり、したがって、複数のメモリアクセス動作は、ベクトルメモリアクセス命令によって指定されるベクトルメモリアクセス動作を実施するものとして集合的にみなすことができる。特に、そのような所与のベクトルメモリアクセス命令に応答して、命令デコーダは、所与のベクトルメモリアクセス命令のデータベクトル指示フィールドから、複数のデータ要素に関連付けられたベクトルレジスタのセット内の少なくとも1つのベクトルレジスタを決定するように構成され得る。したがって、データベクトル指示フィールドから決定される各ベクトルレジスタは、例えば、そのソースレジスタからメモリ内の様々な位置にデータ要素を記憶しようとするベクトル分散演算用の送信元レジスタを形成し得るか、又はそのベクトルレジスタ内に記憶するためにメモリ内の様々な位置からデータ要素をロードしようとするベクトル集約演算用の宛先レジスタとして機能し得る。
【0013】
命令デコーダはまた、所与のベクトルメモリアクセス命令の少なくとも1つのケイパビリティベクトル指示フィールドから、複数のケイパビリティを含むベクトルレジスタのセット内の複数のベクトルレジスタを決定するように構成される。例示的な一実装形態では、単一ケイパビリティベクトル指示フィールドが使用され、複数のベクトルレジスタは、その単一ケイパビリティベクトル指示フィールド内の情報から決定される。しかしながら、代替の実装形態では、例えば、各ケイパビリティベクトル指示フィールドが対応するベクトルレジスタを識別することを可能にするために、複数のケイパビリティベクトル指示フィールドが設けられ得る。1つの例示的な実装形態では、複数のベクトルレジスタの各ベクトルレジスタは複数のケイパビリティを含み、別の例では、複数のベクトルレジスタの各ベクトルレジスタは単一ケイパビリティを含む。
【0014】
決定された複数のベクトルレジスタ内の各ケイパビリティは、複数のデータ要素内のデータ要素のうちの1つに関連付けられ、アドレス指示と、メモリにアクセスするときにそのアドレス指示の使用を制約する制約情報とを提供する。制約情報は、様々な形態をとることができるが、例えば、ケイパビリティによって提供されるアドレス指示を使用するときにアクセスされ得るメモリアドレスの許容範囲を決定するために使用される範囲情報、及び/又はアドレス指示を使用して実行され得るアクセスのタイプを指定する1つ以上の許可属性(例えば、読み取りアクセスが許可されるかどうか、書き込みアクセスが許可されるかどうか、フェッチされ実行される命令のメモリアドレスを生成するためにケイパビリティを使用することができるかどうか、アクセスが特定のレベルのセキュリティ又は特権から許可されるかどうかなど)を識別し得る。更なる例では、制約情報は、制約情報のセット内のエントリを示す制約識別値であり得る。制約情報のセット内の各エントリは、様々な形態をとることができるが、例えば、ケイパビリティによって提供されるアドレス指示を使用するときにアクセスされ得るメモリアドレスの許容範囲を決定するために使用される範囲情報、及び/又はアドレス指示を使用して実行され得るアクセスのタイプを指定する1つ以上の許可属性(例えば、読み取りアクセスが許可されるかどうか、書き込みアクセスが許可されるかどうか、フェッチされ実行される命令のメモリアドレスを生成するためにケイパビリティを使用することができるかどうか、アクセスが特定のレベルのセキュリティ又は特権から許可されるかどうかなど)を識別し得る。いくつかの実装形態では、生成されたメモリアドレスは、メモリシステム内の位置に直接対応する物理メモリアドレスであり得るが、他の実装形態では、生成されたメモリアドレスは、アクセスすべき物理メモリアドレスを決定するためにアドレス変換が実行される必要があり得る仮想アドレスであり得る。
【0015】
本明細書で説明する技法によれば、少なくとも1つのケイパビリティベクトル指示フィールドから決定されるベクトルレジスタの数は、データベクトル指示フィールドから決定されるベクトルレジスタの数よりも多い。
【0016】
命令デコーダは、処理回路を、複数のデータ要素内の各所与のデータ要素について、関連付けられたケイパビリティによって提供されるアドレス指示に基づいてメモリアドレス(仮想アドレス又は物理アドレスのいずれかであり得る)を決定し、所与のデータ要素にアクセスするために使用されるメモリアクセス動作が、関連付けられたケイパビリティの制約情報を考慮して、その決定されたメモリアドレスに関して許可されるかどうかを決定するように制御するように更に構成される。先に述べたように、制約情報は様々な形態をとることができ、したがって、所与のデータ要素にアクセスするために使用されるメモリアクセス動作が許可されるかどうかを判定するためにここで実行されるチェックは、様々な形態をとることができる。したがって、これらのチェックは、例えば、ケイパビリティ内の任意の範囲制約情報を前提として、決定されたメモリアドレスにアクセスすることができるかどうかを識別し得るが、アクセスのタイプが許可されるかどうかも決定し得る(例えば、アクセス動作がメモリへの書き込みを実行することである場合、ケイパビリティ内の制約情報は、そのような書き込みが実行されることを許可する)。
【0017】
次いで、処理回路は、メモリアクセス動作が許可される各データ要素について、メモリアクセス動作の実行を可能にするように構成することができ、任意の所与のデータ要素についてのメモリアクセス動作の実行は、その所与のデータ要素を、メモリ内の決定されたメモリアドレスと少なくとも1つのベクトルレジスタとの間で移動させる(移動の方向は、データがメモリからレジスタにロードされているか、又はレジスタからメモリに記憶されているかに依存すると理解される)。例示的な一実装形態では、元の位置にある所与のデータ要素は、このプロセス中に手付かずに残されてもよく、したがって、その場合、移動動作は、所与のデータ要素をコピーすることによって実行され得る。これは、例えば、典型的には、少なくとも、ベクトルレジスタ内に記憶するためにメモリからデータ要素をロードするときに当てはまり得、その場合、ベクトルレジスタ内に記憶されたデータ要素は、メモリに記憶されたデータ要素のコピーである。
【0018】
例示的な一実装形態では、メモリアクセス動作は、それらのメモリアクセス動作が許可される各データ要素について実行され得るが、他の実装形態では、メモリアクセス動作のうちの別のものが許可されない場合に、1つ以上の許可されたメモリアクセス動作の実行を抑制することが決定され得る。そのような状況においてどの許容可能なアクセスが抑制されるかは、実装に依存してもよく、データ要素のベクトル内のどこに、関連付けられたアクセスが許容されないデータ要素があるかに依存してもよい。純粋に例示的な例として、様々なアクセスが順次実行され、したがって、許可されていない1つのアクセスが検出された場合、許可されているか否かにかかわらず、以前のアクセスが既に実行されている状態で、後続のアクセスを抑制することが決定され得る。
【0019】
例示的な一実装形態では、ベクトルレジスタ内に記憶された有効ケイパビリティを追跡する機構が提供される。特に、例示的な一実装形態では、本装置は、ベクトルレジスタのセットのうちの所与のベクトルレジスタ内の各ケイパビリティサイズブロックに関連して有効ケイパビリティ指示フィールドを提供するケイパビリティ指示ストレージを更に備え、各有効ケイパビリティ指示フィールドは、関連付けられたケイパビリティサイズブロックが有効ケイパビリティを記憶し、そうでなければクリアされるときを示すように設定されるように構成される。例示的な一実装形態では、ベクトルレジスタのセット内のベクトルレジスタのうちのいずれかがケイパビリティを記憶することが可能であり得るが、別の例示的な実装形態では、ケイパビリティを記憶する能力は、セット内のベクトルレジスタのサブセットに限定され得、後者の場合、ケイパビリティ指示ストレージは、ベクトルレジスタのそのサブセット内のケイパビリティサイズブロック毎に有効ケイパビリティ指示フィールドを提供するだけでよい。
【0020】
例示的な一実装形態では、ケイパビリティ指示ストレージは、ベクトルレジスタのセットとは別個に設けられ得るが、代替的な例示的な実装形態では、ケイパビリティ指示ストレージは、ベクトルレジスタのセット内に組み込まれ得る。
【0021】
有効ケイパビリティ指示フィールドがどのように設定されるかを制約するために、処理回路は、装置によって実行可能な命令のセットの中の1つ以上の特定の命令の実行に応答して、関連付けられたケイパビリティサイズブロックに有効ケイパビリティが記憶されることを示すように、任意の有効ケイパビリティ指示フィールドが設定されることのみを可能にするように構成され得る。このように有効ケイパビリティ指示フィールドの設定を制限することによって、例えば、ベクトルレジスタ内の汎用データのケイパビリティサイズブロックがケイパビリティとして扱われるべきであることを示す試みを禁止することによって、セキュリティを改善することができる。したがって、非ケイパビリティ動作を通じて、又は有効でなくなるようにケイパビリティを変化させることを通じて、有効ケイパビリティを作成しないベクトルに対して実行される動作は、関連付けられた有効ケイパビリティ指示フィールドをクリアさせ、したがって有効ケイパビリティがそこに記憶されていないことを示すように構成することができる。したがって、例として、ケイパビリティサイズのデータブロックへの部分書き込み、又は非ケイパビリティの書き込みは、関連付けられた有効ケイパビリティ指示フィールドをクリアする。ケイパビリティ指示フィールドはまた、様々な非命令動作、例えば、例外処理に関連付けられたベクトルレジスタ状態のスタッキング及びクリア、又はいくつかの実装形態ではリセット動作によってクリアされ得る。
【0022】
先に述べたように、上述の所与のベクトルメモリアクセス命令を実行するときに必要なケイパビリティを提供するために使用されるベクトルレジスタの数は、メモリアクセス動作を受けるデータ要素を含むベクトルレジスタの数よりも多い。例示的な一実装形態では、少なくとも1つのケイパビリティベクトル指示フィールドから決定される、複数のベクトルレジスタを形成するベクトルレジスタの数は、2の累乗である。特に、ケイパビリティを記憶するために必要なベクトルレジスタの数は、データ要素とケイパビリティとの間のサイズの差に依存し、例示的な一実装形態では、その差は2の累乗だけ変化することができる。本明細書では、ケイパビリティのサイズを考慮するとき、ケイパビリティが有効ケイパビリティであることを示すために使用される任意の関連付けられたフラグ(前述の有効ケイパビリティ指示フィールドなど)は、ケイパビリティ自体の一部とはみなされないことに留意されたい。
【0023】
先に述べたように、所望であれば、複数のケイパビリティベクトル指示フィールドを使用して、所与のベクトルメモリアクセス命令を実行するときに必要とされるケイパビリティを記憶する様々なベクトルレジスタを指定することができる。そのような手法は、様々なベクトルレジスタが互いに対して任意に配置され、命令符号化において指定されることを可能にする。しかしながら、例示的な一実装形態では、少なくとも1つのケイパビリティベクトル指示フィールドは、1つのベクトルレジスタを識別するように構成された単一ケイパビリティベクトル指示フィールドであり、命令デコーダは、決定された関係に基づいて複数のベクトルレジスタのうちの残りのベクトルレジスタを決定するように構成される。そのような手法は、典型的には命令符号化空間が非常に限られており、必要なケイパビリティを記憶することになるベクトルレジスタの各々を識別するために複数のケイパビリティベクトル指示フィールドを提供することが実際的でない場合があるので、命令符号化の観点から有利であり得る。
【0024】
残りのベクトルレジスタが、識別された1つのベクトルレジスタ及び決定された関係に基づいて決定される方法は、実装に応じて様々な形態をとることができる。例えば、決定された関係は、ベクトルレジスタが互いに連続していること、ベクトルレジスタが偶数/奇数対であること、又は様々なベクトルレジスタ間に既知のオフセットが存在することを指定し得る。あるいは、任意の他の適切な示された関係が使用され得る。
【0025】
1つの特定の例示的な実装形態では、必要とされるケイパビリティを記憶する複数のベクトルレジスタ中のベクトルレジスタの数は2であり、単一ケイパビリティベクトル指示フィールドは、1つのベクトルレジスタを識別する第1のベクトルレジスタ番号を示し、第1のベクトルレジスタ番号は、論理0値におけるそのN個の最下位ビットを有するように制約される。次いで、命令デコーダは、第1のベクトルレジスタ番号を再使用し、N個の最下位ビットのうちの少なくとも1つを論理1値に選択的に設定することによって、残りのベクトルレジスタの各々についてベクトルレジスタ番号を生成するように構成される。これにより、所与のベクトルメモリアクセス命令を実行するときに必要なケイパビリティを提供する様々なベクトルレジスタを計算するための特に単純かつ効率的な機構を提供することができる。
【0026】
いくつかの実装形態では、ケイパビリティを保持するために必要とされるベクトルレジスタの数は、例えば、所与のベクトルメモリアクセス命令が特定の固定サイズのデータ要素と共に使用するためにのみサポートされ、ケイパビリティも固定サイズであることに起因して、固定される。しかしながら、より一般的な場合には、ベクトルレジスタの数は、所与のベクトルメモリアクセス命令が実行されるデータ要素のサイズ及びケイパビリティのサイズの知識に基づいて、命令デコーダによって実行時に推測することができる。
【0027】
単一ケイパビリティベクトル指示フィールドが、第1のベクトルレジスタ番号を示すように構成され得るいくつかの方法がある。単一ケイパビリティベクトル指示フィールドは、例示的な一実装形態では第1のベクトルレジスタ番号を直接識別し得るが、他の実装形態では、その第1のベクトルレジスタ番号が決定されることを可能にするのに十分な情報を指定し得る。例えば、第1のベクトルレジスタ番号が、そのN個の最下位ビットを論理0値に有するように制約される上記の場合、それらの最下位Nビットは、単一ケイパビリティベクトル指示フィールド内で識別される必要はなく、代わりに、論理0値にハードワイヤードされ得る。
【0028】
様々なデータ要素に関連付けられたケイパビリティが、ケイパビリティを提供するために使用されるベクトルレジスタ内に配置される方法は、実装に応じて変化し得る。しかしながら、例示的な一実装形態では、少なくとも1つのベクトルレジスタ内の隣接する位置に関連付けられた任意の所与の対のデータ要素について、関連付けられたケイパビリティは、当該複数のベクトルレジスタのうちの異なるベクトルレジスタに記憶される。そのような構成は、所与のベクトルメモリアクセス命令を実行するときに効率的な実装を可能にすることができることが分かっている。
【0029】
任意の特定のデータ要素について、関連付けられたケイパビリティの複数のベクトルレジスタ内の位置が決定される方法は、実装に応じて変化し得る。しかしながら、例示的な一実装形態では、データベクトル指示フィールドから決定された少なくとも1つのベクトルレジスタは単一ベクトルレジスタを備え、各データ要素は、単一ベクトルレジスタの対応するデータレーンに関連付けられる。更に、各ケイパビリティは、複数のベクトルレジスタのうちの1つのベクトルレジスタ内のケイパビリティレーン内に位置する。ここで、データレーンの幅は、典型的には、データ要素及びケイパビリティが異なるサイズであるという事実により、ケイパビリティレーンの幅とは異なることに留意されたい。そのような構成では、所与のデータ要素について、関連付けられたケイパビリティを含む複数のベクトルレジスタ内のベクトルレジスタは、対応するデータレーンのレーン番号の所与の数の最下位ビットに応じて決定され得、関連付けられたケイパビリティを含むケイパビリティレーンは、対応するデータレーンのレーン番号の残りのビットに応じて決定され得る。したがって、これは、各データ要素について、関連付けられたケイパビリティの位置を決定するための特に効率的な機構を提供する。
【0030】
1つの特定の例示的な構成では、複数のケイパビリティを含むベクトルレジスタの数は、論理的に値0~P-1を有するシーケンスとみなされるPであり、任意の所与のベクトルレジスタ内のケイパビリティレーンの数は、値0~M-1を有するMである。更に、所与のデータ要素に関連付けられたデータレーンは、0からX-1までの値を有するデータレーンXである。そのような用語を使用して、例示的な一実装形態では、複数のベクトルレジスタ内の関連付けられたケイパビリティの位置は、商及び余りを生成するためにXをPで除算することによって決定され得、商は、関連付けられたケイパビリティを含むケイパビリティレーンを識別し、余りは、関連付けられたケイパビリティを含む複数のベクトルレジスタ内のベクトルレジスタを識別する。したがって、そのような実装形態では、所与のデータ要素について、関連付けられたケイパビリティの位置を特定するために必要とされるベクトルレジスタとケイパビリティレーンの両方を、容易にかつ効率的に決定することができる。
【0031】
上記の例では、複数のケイパビリティを含む複数のベクトルレジスタは、値0~P-1を有するシーケンスとして論理的に考慮されるが、これらのベクトルレジスタに関連付けられた論理ベクトル番号が連続した論理ベクトル番号である必要があることを意味するものではなく、実際には、ベクトルレジスタがベクトルレジスタのセット内で互いに対して物理的に連続して配置されなければならないことを意味するものでもないことに留意されたい。
【0032】
例示的な一実装形態では、ベクトルレジスタのセットは、複数のセクションに論理的に区分され得、各セクションは、ベクトルレジスタのセット中のベクトルレジスタの各々からの対応する部分を含み、複数のケイパビリティは、各データ要素について、関連付けられたケイパビリティがそのデータ要素と同じセクション内に記憶されるように、複数のベクトルレジスタ内に配置され得る。そのような手法によって、所与のベクトルメモリアクセス命令の実行が複数の「ビート」に分割されることを可能にすることができ、各ビート中に、ベクトルレジスタのセットの1つのセクションのみが、所与のベクトルメモリアクセス命令を実行するためにアクセスされる。ベクトルメモリアクセス命令が複数のビートに分割されることを可能にすることによって、ベクトルメモリアクセス命令の実行が1つ以上の他の命令の実行と重複されることを可能にすることができ、非常に効率的な実装をもたらし得る。特に、任意の特定のビート中に、そのビート中にメモリアクセス動作を実行するために必要とされるデータ要素及びケイパビリティは全て、ベクトルレジスタのセットの単一セクションから取得され得るので、重複命令の実行中にアクセスのために利用可能な任意の他のセクションが残される。
【0033】
例示的な一実装形態では、処理回路は、次のセクション内のデータ要素に対するメモリアクセス動作を1つ以上のビートにわたって実行する前に、所与のセクション内のデータ要素について、メモリアクセス動作を1つ以上のビートにわたって実行するように構成され得る。例示的な一実装形態では、所与のベクトルメモリアクセス命令を実行するために使用される複数のビートの中の各ビートは、異なるセクションにアクセスし得るが、これは要件ではなく、いくつかの実装形態では、それらのビートのうちの2つ以上が同じセクションにアクセスする場合があり得る。
【0034】
上述の所与のベクトルメモリアクセス命令を実行するときに必要とされるケイパビリティがメモリからロードされ、次いで、先に説明した構成における複数のベクトルレジスタ内で構成され得るいくつかの方法があり、実際に、ベクトルレジスタ内のそれらのケイパビリティが所定時期にメモリに記憶し戻され得るいくつかの方法がある。しかしながら、例示的な一実装形態では、命令デコーダは、メモリと複数のベクトルレジスタとの間で複数のケイパビリティを転送するように命令デコーダに処理回路を制御させる複数のベクトルケイパビリティメモリ転送命令をデコードし、メモリに順次記憶される複数のケイパビリティ内の任意の所与の対のケイパビリティが複数のベクトルレジスタの異なるベクトルレジスタに記憶されるように、複数のケイパビリティが複数のベクトルレジスタに順次記憶され、複数のケイパビリティが複数のベクトルレジスタにデインターリーブされるように、転送中に複数のケイパビリティを再構成するように構成される。
【0035】
上記のステップを実行するために使用される複数のベクトルケイパビリティメモリ転送命令は、互いに直接続く必要はなく、したがって、次々に順次実行される必要はないことに留意されたい。代わりに、各々が必要な作業の一部を実行する複数の別個の命令が存在する可能性があり、命令の全てが実行されると、メモリとベクトルレジスタとの間で移動させられる(一例ではコピーされる)際に必要なケイパビリティの再配置が実行される。複数のベクトルケイパビリティメモリ転送命令は、ケイパビリティをメモリから複数のベクトルレジスタにロードするために使用されるロード命令、又はケイパビリティを複数のベクトルレジスタからメモリに戻して記憶するために使用される記憶命令のいずれかであり得る。
【0036】
例示的な一実装形態では、各ベクトルケイパビリティメモリ転送命令は、各他のベクトルケイパビリティメモリ転送命令に対して異なるケイパビリティを識別するように構成され、各ベクトルケイパビリティメモリ転送命令は、アクセスパターンを識別するように構成され、アクセスパターンは、処理回路に、アクセスパターンによって指定された再構成を実行しながら、識別されたケイパビリティを転送させる。したがって、そのような構成では、各個々のベクトルケイパビリティメモリ転送命令の実行により、その命令によって転送されるケイパビリティに関して必要な再構成が実行され、次いで、他のベクトルケイパビリティメモリ転送命令が使用されて他のケイパビリティを転送し、それらのケイパビリティに対して必要な再構成を実行する。
【0037】
そのような実装形態では、様々な異なる命令が全て同じ最大量のデータを転送するように構成することが可能であり、その最大量のデータは、任意の特定のシステムで利用可能な有限メモリ帯域幅を考慮して選択される。そのような手法は、任意の個々の命令がストールすることを回避することができ、したがって、そのような手法を実装するために順序付け状態機械は必要とされない。そのような手法はまた、このケイパビリティ転送プロセスが進行中である間に他の命令がスケジュールされることを可能にする。更に、上述した方法で異なるケイパビリティで動作するように命令の各々を構成することによって、任意の個々の命令を、ベクトルレジスタの同じセクション内でのみ動作するように各ビートについて構成することができる。前述したように、所与のセクション内でのみ動作することは、異なるセクション上で動作する命令の重複を可能にする。
【0038】
例示的な一実装形態では、メモリは複数のメモリバンクから形成され、各ベクトルケイパビリティメモリ転送命令について、そのベクトルケイパビリティメモリ転送命令が処理回路によって実行されるときにメモリバンクのうちの2つ以上がアクセスされるように、アクセスパターンが定義される。バンクメモリは、ハードウェアがメモリへの/からの並列転送を実装することをより容易にし、したがって、これを可能にするアクセスパターンを指定することは有益である。
【0039】
上述のベクトルケイパビリティメモリ転送命令に加えて、ベクトルロード命令及びベクトル記憶命令を使用して、必要に応じて及び必要なときに、データ要素をメモリからベクトルレジスタにロードすることができるか、又はそれらのデータ要素をベクトルレジスタからメモリに戻して記憶することができる。
【0040】
データ要素を保持するために使用されるベクトルレジスタの数及び関連付けられたケイパビリティを保持するために使用されるベクトルレジスタの数は、実装に応じて変化し得るが、特定の例示的な一実装形態では、所与のベクトルメモリアクセス命令のデータベクトル指示フィールドから決定される少なくとも1つのベクトルレジスタは、単一ベクトルレジスタを備え、ケイパビリティは、データ要素のサイズの2倍であり(前述のように、ケイパビリティが有効ケイパビリティであることを示すために使用される任意のフラグは、ケイパビリティのサイズを考慮するとき、ケイパビリティの一部であるとみなされない)、少なくとも1つのケイパビリティベクトル指示フィールドから決定される複数のベクトルレジスタは、2つのベクトルレジスタを備える。そのような構成は、ケイパビリティから導出されたメモリアドレスを使用してベクトル集約及び分散演算を実行するための特に有用な実装形態を提供することが分かっている。
【0041】
例示的な一実装形態では、所与のベクトルメモリアクセス命令は、アドレスオフセットを示す即値を更に含み得、処理回路は、複数のデータ要素内の各所与のデータ要素について、アドレスオフセットを、関連付けられたケイパビリティによって提供されるアドレス指示と組み合わせることによって、所与のデータ要素のメモリアドレスを決定するように構成され得る。これにより、様々なケイパビリティにおいて提供されるアドレス指示からメモリアドレスを計算するための効率的な実装を提供することができる。
【0042】
例示的な一実装形態では、所与のベクトルメモリアクセス命令は、アドレスオフセットを示す即値を更に含み得、各所与のデータ要素について、処理回路は、アドレスオフセットに応じてアドレス指示を調整することによって、複数のベクトルレジスタ内の関連付けられたケイパビリティのアドレス指示を更新するように構成され得る。したがって、例として、特定のケイパビリティ内のアドレス指示が第1のベクトルメモリアクセス命令の実行中に使用されると、ベクトルレジスタ内に記憶されたケイパビリティ内で示されるそのアドレス指示は、後続のベクトルメモリアクセス命令に関連して使用する準備ができるように、上記の方法で更新することができる。
【0043】
場合によっては、アクセスすべきメモリアドレスを識別するために、ケイパビリティによって提供されるアドレス指示にアドレスオフセットが組み合わされ(例えば、加えられ)、その同じ更新されたアドレスが更新されたアドレス指示としてケイパビリティレジスタに書き戻されるように、上記の調整プロセスの両方を実行することができる。典型的には、両方の調整プロセスに対して同じ即値が使用されるが、所望であれば、調整プロセス毎に異なる即値を使用することができる。
【0044】
次に、添付の図面を参照して、特定の例示的な実装形態を説明する。
【0045】
図1は、ベクトル命令の処理をサポートするデータ処理装置2の一例を概略的に示す。これは、説明を容易にするための簡略図であり、実際には、装置は、簡潔にするために図1に示されていない多くの要素を有し得ることが理解されよう。装置2は、命令デコーダ6によってデコードされた命令に応答して、データ処理を実行するための処理回路4を備える。プログラム命令は、メモリシステム8からフェッチされ、命令デコーダによってデコードされて、アーキテクチャによって定義された方法で命令を処理するように処理回路4を制御する制御信号を生成する。例えば、デコーダ6は、デコードされた命令のオペコード及び命令の任意の追加の制御フィールドを解釈して、処理回路4に適切なハードウェアユニットを起動させて算術動作、ロード/記憶動作、又は論理動作などの動作を実行させる制御信号を生成し得る。本装置は、スカラレジスタ10のセットとベクトルレジスタ12のセットとを有する。本装置はまた、例えば、処理回路の動作を構成するために使用される制御情報を記憶するための他のレジスタ(図示せず)を有し得る。算術命令又は論理命令に応答して、処理回路は、通常、レジスタ10、12から送信元オペランドを読み取り、命令の結果をレジスタ10、12に書き戻す。ロード/記憶命令に応答して、データ値は、処理回路4内のロード/記憶ユニット18を介してレジスタ10、12とメモリシステム8との間で転送される。メモリシステム8は、1つ以上のレベルのデータキャッシュとメインメモリとを含み得る。
【0046】
スカラレジスタ10のセットは、単一のデータ要素を含むスカラ値を記憶するための複数のスカラレジスタを含む。命令デコーダ6及び処理回路4によってサポートされるいくつかの命令は、スカラレジスタ10から読み取られたスカラオペランドを処理して、スカラレジスタに書き戻されるスカラ結果を生成するスカラ命令であり得る。
【0047】
ベクトルレジスタ12のセットは、いくつかのベクトルレジスタを含み、各ベクトルレジスタは、複数の要素を含むベクトル値を記憶するように構成される。ベクトル命令に応答して、命令デコーダ6は、スカラレジスタ10に書き込まれるべきスカラ結果又はベクトルレジスタ12に書き込まれるべき更なるベクトル結果のいずれかを生成するために、ベクトルレジスタ12のうちの1つから読み取られたベクトルオペランドのそれぞれの要素に対してベクトル処理のいくつかのレーンを実行するように処理回路4を制御し得る。いくつかのベクトル命令は、1つ以上のスカラオペランドからベクトル結果を生成し得るか、又は、スカラレジスタファイル内のスカラオペランドに対して追加のスカラ演算を実行し得ると共に、ベクトルレジスタファイル12から読み取られたベクトルオペランドに対してベクトル処理のレーンを実行し得る。したがって、いくつかの命令は、命令の1つ以上の送信元レジスタ及び宛先レジスタのうちの少なくとも1つがベクトルレジスタ12であり、1つ以上の送信元レジスタ及び宛先レジスタのうちの別のものがスカラレジスタ10である、混合スカラベクトル命令であり得る。
【0048】
ベクトル命令は、ベクトルレジスタ12とメモリシステム8内の位置との間でデータ値を転送させるベクトルロード/記憶命令も含み得る。ロード/記憶命令は、メモリ内の位置がアドレスの連続範囲に対応する連続ロード/記憶命令、又はいくつかの離散アドレスを指定し、それらのアドレスの各々からベクトルレジスタのそれぞれの要素にデータをロードするように、又はベクトルレジスタのそれぞれの要素から離散アドレスにデータを記憶するように処理回路4を制御する集約/分散タイプのベクトルロード/記憶命令を含み得る。
【0049】
処理回路4は、様々な異なるデータ要素サイズの範囲を有するベクトルの処理をサポートし得る。例えば、128ビットベクトルレジスタ12は、16個の8ビットデータ要素、8個の16ビットデータ要素、4個の32ビットデータ要素、又は2個の64ビットデータ要素に分割することができる。制御レジスタは、使用されている現在のデータ要素サイズを指定するために使用されてもよく、又は代替的に、実行される所与のベクトル命令のパラメータであってもよい。
【0050】
処理回路4は、異なるクラスの命令を処理するためのいくつかの別個のハードウェアブロックを含み得る。例えば、メモリシステム8と相互作用するロード/記憶命令は、専用のロード/記憶ユニット18によって処理され得る一方、算術又は論理命令は、算術ロジックユニット(ALU)によって処理することができる。ALU自体は、乗算を含む演算を実行するための積和演算ユニット(MAC)と、他の種類のALU演算を処理するための更なるユニットとに更に分割され得る。浮動小数点命令を処理するために、浮動小数点ユニットを設けることもできる。ベクトル処理を含まない純粋なスカラ命令は、ベクトル命令と比較して別個のハードウェアブロックによって処理することもでき、又は同じハードウェアブロックを再使用することもできる。
【0051】
前述したように、サポートされ得るベクトルロード/記憶命令の1つのタイプは、ベクトル集約/分散命令である。そのようなベクトル命令は、メモリ内の離散アドレスの数を示し、処理回路4を制御して、それらの離散アドレスからベクトルレジスタのそれぞれの要素にデータをロードし得る(ベクトル集約命令の場合)か、又はベクトルレジスタのそれぞれの要素から離散アドレスにデータを記憶し得る(ベクトル分散命令の場合)。本明細書で説明する技法によれば、様々なメモリアドレスを識別するために標準アドレス指示のベクトルを使用するのではなく、様々なメモリアドレスを決定するために使用されるケイパビリティのベクトルを指定することができる新しい形態のベクトル集約/分散命令が提供される。これにより、ベクトル集約/分散演算を実施するために使用される個々のメモリアクセス動作の性能に対するより微細な制御を提供することができる。というのは、それらの個々のメモリアクセス動作の各々に関連して使用するために別個のケイパビリティを定義することができるからである。各ケイパビリティは、典型的には、アドレス指示を提供することに加えて、そのケイパビリティを使用するときに実行することができる動作を制限するために使用される制約情報を含む。例えば、制約情報は、ケイパビリティによって提供されるアドレス指示を使用するときに処理回路によってアクセス可能なメモリアドレスの拡張不可能な範囲を識別し得、関連付けられた許可を識別する1つ以上の許可フラグ(例えば、読み取りアクセスが許可されるかどうか、書き込みアクセスが許可されるかどうか、指定された特権又はセキュリティレベルからのアクセスが許可されるかどうか、ケイパビリティを使用して、フェッチ及び実行される命令のメモリアドレスを生成することができるかどうか)も提供し得る。
【0052】
この新しい形態のベクトル集約/分散命令を実行するとき、メモリとベクトルレジスタとの間で移動させられる各データ要素(移動の方向は、ベクトル集約演算又はベクトル分散演算が実行されているかどうかに依存する)は、関連付けられたケイパビリティを有し、処理回路4内のケイパビリティアクセスチェック回路16は、各データ要素についてケイパビリティチェックを実行して、その所与のデータ要素にアクセスするために使用されるメモリアクセス動作が、関連付けられたケイパビリティによって指定される制約情報を考慮して許可されるかどうかを判定するために使用され得る。したがって、これは、ケイパビリティ内の任意の範囲制約情報が与えられた場合にメモリアドレスがアクセス可能であるかどうか、及びケイパビリティ内の制約情報が与えられた場合にアクセスのタイプが許可されるかどうかの両方をチェックすることを伴い得る。そのようなベクトル集約/分散命令を実行するときに必要とされる複数のケイパビリティが一連のベクトルレジスタ内にどのように配置されるかについての更なる詳細は、いくつかの残りの図を参照してより詳細に説明する。
【0053】
図1に示すように、必要に応じて、命令デコーダ6及び処理回路4の動作を制御するために、ビート制御回路20を設けることができる。特に、いくつかの例示的な実装形態では、ベクトル命令の実行は、「ビート」と呼ばれる部分に分割され得、各ビートは、所定のサイズのベクトルの一部分の処理に対応する。図10及び図11を参照して後でより詳細に説明するように、これは、ベクトル命令の重複実行を可能にし、それによって性能を改善することができる。
【0054】
図2は、個々のデータブロックがケイパビリティを表すか、又は通常データを表すかを識別するために、それらのデータブロックに関連してタグビットがどのように使用されるかを概略的に示す。具体的には、メモリアドレス空間110は、指定されたサイズを典型的に有する一連のデータブロック115を記憶する。純粋に例示のために、この例では、各データブロックが64ビットを含むと仮定されるが、他の例示的な実装形態では、異なるサイズのデータブロック、例えば、ケイパビリティが128ビットの情報によって定義されるときの128ビットデータブロックが使用され得る。各データブロック115に関連して、一例では、タグビットと称される単一ビットフィールドであるタグフィールド120が提供され、これは、関連付けられたデータブロックがケイパビリティを表すことを識別するために設定され、関連付けられたデータブロックが通常データを表し、それゆえにケイパビリティとして取り扱えないことを示すためにクリアされる。設定又はクリア状態に関連付けられた実際の値は、例示的な実装形態に依存して変化する可能性があるが、純粋に例示のために、例示的な一実装形態では、タグビットが1の値を有する場合に、関連付けられたデータブロックがケイパビリティであることを示し、それが0の値を有する場合に、関連付けられたデータブロックが通常データを含むことを示すことが理解されるであろう。例示的な一実装形態では、タグビットは、通常のメモリアドレス空間の一部を形成しなくてもよく、代わりに、例えば別個のタグメモリに「帯域外」で記憶されてもよい。
【0055】
ケイパビリティが処理回路にアクセス可能なレジスタ100にロードされると、タグビットはケイパビリティ情報と共に移動する。したがって、ケイパビリティがレジスタ100にロードされると、アドレス指示102(本明細書ではポインタとも呼ばれることがある)と制約情報(前述の範囲情報及び許可情報など)を提供するメタデータ104とがレジスタにロードされる。加えて、そのレジスタに関連して、又はそのうちの特定のビットフィールドとして、タグビット106は、コンテンツが有効ケイパビリティを表すことを識別するために設定されることになる。同様に、有効ケイパビリティがメモリからストアバックされた場合、関連するタグビット120は、ケイパビリティが記憶されているデータブロックに関連して設定される。そのようなアプローチにより、ケイパビリティと通常データを区別し、それゆえに、通常データがケイパビリティとして使用できないことを確実にする。
【0056】
装置には、ケイパビリティを記憶するための専用ケイパビリティレジスタ(図1には図示せず)が設けられてもよく、したがって、図2のレジスタ100は、専用ケイパビリティレジスタであり得る。しかしながら、上述の新しい形式のベクトル収集/分散命令を実行するためには、ベクトルレジスタ12のセット内のいくつかのベクトルレジスタ内に必要なケイパビリティを配置することが望ましい。ベクトルレジスタ内に記憶された有効ケイパビリティと汎用データとの間の区別を可能にするために、ベクトルレジスタのセットは、関連付けられた有効ケイパビリティ指示ストレージを設けることによって補完され、これを実施し得る2つの異なる方法を、図3A及び図3Bに概略的に示す。図3Aに示される例では、ベクトルレジスタ130のセットは、複数のベクトルレジスタ135を備え、各ベクトルレジスタは、いくつかのケイパビリティサイズブロック137を提供するのに十分なサイズである。純粋に例として、ケイパビリティが64ビット長であるとき、各ケイパビリティサイズブロック137は64ビットであり得、各ベクトルレジスタの長さは2×64ビットであり得、ここで、Nは0以上の整数である。
【0057】
図3Aの特定の例では、各ベクトルレジスタは長さが128ビットであり、したがって各ベクトルレジスタは、2つのケイパビリティサイズブロック137を有すると仮定される。有効ケイパビリティ指示ストレージ140は、ベクトルレジスタのセットに関連して設けられ、有効ケイパビリティ指示ストレージ140は、ベクトルレジスタ135毎にエントリ145を有する。各エントリ145は、関連付けられたベクトルレジスタ135内の各ケイパビリティサイズブロック137のための有効ケイパビリティ指示フィールドを提供する。有効ケイパビリティ指示フィールドは、様々な形態をとることができるが、例示的な一実装形態では、単一ビットフィールドとすることができ、したがって、1つの例では、前述のタグビットの形態をとることができる。そのような場合、各エントリ145は、関連付けられたベクトルレジスタ135内の各ケイパビリティサイズブロック137にタグビットを提供し、そのケイパビリティサイズブロックが有効ケイパビリティを記憶しているか否かを識別することが理解されるであろう。
【0058】
図3Aの例では、有効ケイパビリティ指示ストレージ140は、ベクトルレジスタ130のセットとは別個の構造であると考えられるが、代替の実装形態では、有効ケイパビリティ指示ストレージは、必要なタグビットを収容するためにベクトルレジスタのサイズを増加させることによって、ベクトルレジスタのセット内に効果的に組み込むことができる。図3Bに示されるような構成では、ベクトルレジスタ150のセットは、いくつかのケイパビリティサイズブロック160、164を含み、その各々は、関連付けられたタグビットを記憶するための関連付けられた有効ケイパビリティ指示フィールド162、166を有する。この構成では、ケイパビリティのサイズは変化するとは考えられず、したがって、前述の例では、各ケイパビリティは依然として64ビット長であることに留意されたい。しかしながら、ベクトルレジスタは、関連付けられたタグビットのための空間を提供するために拡張される。したがって、2つのケイパビリティが各ベクトルレジスタ内に記憶され得ることが再び考慮される図3Bの例を考慮し、各ケイパビリティが64ビット長であると仮定すると、ケイパビリティを記憶することができる任意のベクトルレジスタは、2つのケイパビリティ及びそれらの関連付けられたタグビットの両方が記憶されることを可能にするように、130ビット長であるように構成され得る。この例では、タグビットはベクトルレジスタ155の一部であるが、タグビットへのアクセスは、前述のように、依然として厳密に制御されてもよく、したがって、タグビットは、汎用処理命令に直接アクセス可能ではなく、非ケイパビリティ命令を使用してベクトルレジスタ内の値を変化させると、タグがクリアされる。
【0059】
図3A及び図3Bの例では、ベクトルレジスタの全てがケイパビリティを記憶することができると仮定されているが、代替の実装形態では、セット内のベクトルレジスタのサブセットがケイパビリティを記憶するために予約され得、そのような場合、(図3Aの例のように)別個のストレージとして、又は(図3Bの例のように)ベクトルレジスタ構造自体の中に組み込まれているかにかかわらず、関連付けられた有効ケイパビリティ指示ストレージが提供される必要があるのはベクトルレジスタのサブセットだけであることに留意されたい。
【0060】
図4A及び図4Bは、例示的な一実装形態による、ベクトルレジスタの各ケイパビリティサイズブロックに関連して維持されるタグビットが、どのように管理され得るかを示す流れ図である。図4Aは、書き込まれているベクトルレジスタ内のケイパビリティサイズブロックのために維持される関連付けられたタグビットに関連して、どのアクションをとるべきかを決定するために実行されるいくつかのステップを示す。具体的には、ステップ170において、書き込み動作がベクトルレジスタに対して実行されていると判定された場合、図4Aのプロセスの残りは、書き込まれているそのベクトルレジスタ内の各ケイパビリティサイズブロックに関して実行される。
【0061】
ステップ172において、ベクトルレジスタの所与のケイパビリティサイズ部分に関して書き込まれているデータがフルケイパビリティブロックサイズであるかどうかが判定される。もしそうでなければ、タグビットは以前にセットされていればクリアされ、従ってプロセスはステップ174に進み、そこでタグビットがクリアされる。このような手法は、ケイパビリティの不法な変更を防止する。例えば、ベクトルレジスタ内に記憶された有効ケイパビリティの特定数のビットを修正しようとする試みがなされた場合、上記のプロセスは、タグビットをクリアさせ、ベクトルレジスタに現在記憶されている修正バージョンがケイパビリティとして使用されることを防止する。
【0062】
しかし、完全なケイパビリティサイズの情報ブロックがベクトルレジスタの所与のケイパビリティサイズ部分に書き込まれていると仮定すると、ステップ176で、有効ケイパビリティが書き込まれているかどうかが判定される。そうでない場合、プロセスはステップ174に進み、タグビットがクリアされる。しかしながら、有効ケイパビリティが書き込まれている場合、プロセスはステップ178に進み、タグビットがセットされる。
【0063】
ベクトルレジスタ内のケイパビリティサイズブロックに関連付けられたタグビットがクリアされ得るのは、ベクトルレジスタに書き込む命令の実行中だけではないことに留意されたい。特に、図4Bによって示されるように、ステップ180において、ベクトルレジスタのケイパビリティサイズブロックに記憶されたケイパビリティをもはや有効でなくするために何らかのステップがとられたかどうかが判定され得る。そのような状態が検出されない場合、ステップ185によって示されるように、関連付けられたタグビットへの更新は行われないが、その状態が検出されるときはいつでも、関連付けられたタグビットはステップ190でクリアされる。
【0064】
図5Aは、例示的な一実装形態による、ベクトルメモリアクセス命令200(本明細書ではベクトル集約命令又はベクトル分散命令とも呼ばれる)内に提供され得るフィールドを概略的に示す。オペコードフィールド205は、ベクトルメモリアクセス命令の形式を識別するために使用され、したがって、この例では、収集変形又は分散変形が指定されているかどうかを識別し、命令が、アクセスされるべきメモリアドレスを決定するケイパビリティを使用する前述のタイプのものであることを識別するために使用され得る。
【0065】
データベクトル指示フィールド210は、命令の実行を通じてベクトルレジスタセットとメモリとの間で移動させられるデータ要素に関連付けられる少なくとも1つのベクトルレジスタを識別するために使用される。例示的な一実装形態では、単一ベクトルレジスタが、データベクトル指示フィールド210によって識別される。そのような識別されたベクトルレジスタは、ベクトル分散演算を実行するときに送信元ベクトルレジスタとして働き、又はベクトル集約演算を実行するときに宛先ベクトルレジスタとして働くことが理解されよう。
【0066】
また、少なくとも1つのケイパビリティベクトル指示フィールド215が提供されてもよく、その内容を使用して、ベクトル分散又はベクトル集約演算を受けるデータ要素の各々のメモリアドレスを決定するために必要とされるケイパビリティを記憶する複数のベクトルレジスタを識別する。一実装形態では、複数のケイパビリティベクトル指示フィールドが提供され得、例えば、必要とされるケイパビリティを含むベクトルレジスタの各々について1つのフィールドが提供され得るが、別の例示的な実装形態では、単一ケイパビリティベクトル指示フィールドが、ケイパビリティを記憶するベクトルレジスタのうちの1つを決定するのに十分な情報を提供するために使用され、他のベクトルレジスタは、次いで、何らかの所定の関係に基づいて決定される。この後者の手法は、命令符号化の観点から有利であり得る。所定の関係は様々な形態をとることができる。例えば、ベクトルレジスタは、互いに連続していてもよく、偶数/奇数対を形成してもよく、又は既知のオフセットが様々なベクトルレジスタ間に存在してもよい。
【0067】
図5Aに示されるように、命令200はまた、追加情報を捕捉する1つ以上の任意選択のフィールド220を含み得る。例えば、様々な方法で使用することができるアドレスオフセットを示す即値が指定され得る。例えば、そのアドレスオフセットは、アクセスされるべきメモリアドレスを識別するために、各ケイパビリティ内のアドレス指示と組み合わせられ得る(例えば、それに追加され得る)。別の例として、アドレスオフセットは、ベクトルレジスタ内の更新されたケイパビリティが、後続のベクトルメモリアクセス命令に関連して使用される準備ができるように、(再び、例えば、アドレスオフセットを既存のアドレス指示と組み合わせることによって)各ケイパビリティ内のアドレス指示を更新するために使用され得る。実際、例示的な一実装形態では、上記のアドレス指示調整プロセスの両方を実行することができ、通常、両方の調整プロセスに同じ即値が使用される。
【0068】
1つ以上のフィールド220内に提供され得る任意選択の情報の別の例として、命令の実行中にアクセスされるデータ要素のデータ要素サイズ、及び/又はケイパビリティサイズを指定する情報が提供され得る。いくつかの実装形態では、ケイパビリティサイズが固定され得るので、この情報は不要であり得、また、本明細書で説明するタイプのベクトルメモリアクセス命令が特定のサイズのデータ要素に対して実行されることのみが許可される場合もあり得、したがって、その例示的な事例では、データ要素サイズとケイパビリティサイズの両方が、命令によって別々に指定される必要なく知られている。
【0069】
図5Aでは、各フィールドを形成する様々なビットが連続して示されているが、これは純粋に例示のためであり、命令内のどのビットがどのフィールドに関連付けられるかは実装に応じて変化することに留意されたい。純粋に例として、ベクトルレジスタ識別子フィールドが4ビット幅である場合、3ビットが一緒にグループ化されるが、第4のビットが命令符号化内のどこか他の場所に提供されることがあり得る。
【0070】
図5Bは、図5Aに示されるようなベクトルメモリアクセス命令を実行するときに実行されるステップを示す流れ図である。ステップ230において、ベクトルメモリアクセス命令が実行されるべきかどうかが決定され、実行されるべきである場合、プロセスはステップ235に進み、データ要素に関連付けられたベクトルレジスタがデータベクトル指示フィールド内の情報から決定される。
【0071】
ステップ240において、少なくとも1つのケイパビリティベクトル指示フィールド内の情報を使用して、必要なケイパビリティを含む複数のベクトルレジスタも決定される。先に説明したように、複数のケイパビリティベクトル指示フィールドを設けることができ、それぞれが例えばベクトルレジスタのうちの1つを識別するか、又は代替的に、単一ケイパビリティベクトル指示フィールドを設けてベクトルレジスタのうちの1つの決定を可能にし、次いで他のベクトルレジスタが既知の関係を考慮して決定されるようにしてもよい。
【0072】
ステップ245において、ベクトルメモリアクセス命令が関係する各所与のデータ要素について、関連付けられたケイパビリティによって提供されるアドレス指示に基づいて、その所与のデータ要素のメモリアドレスが決定される。更に、関連付けられたケイパビリティの制約情報に基づいて、その所与のデータ要素にアクセスするために使用されるメモリアクセス動作が許可されるかどうかが判定される。これは、メモリアドレスが、関連付けられたケイパビリティ内の範囲制約情報によって指定された許容範囲内にあるかどうかを判定することだけでなく、関連付けられたケイパビリティのメタデータによって指定された任意の他の制約が満たされているかどうか(例えば、ベクトル分散演算が実行されており、したがって、所与のデータ要素に対して実行されている個々のメモリアクセス動作が書き込み動作である場合に、関連付けられたケイパビリティを使用して書き込みアクセスが許可されるかどうか)も判定することを含み得る。
【0073】
ステップ250において、メモリアクセス動作が許可されると判定された各データ要素についてメモリアクセス動作の実行を可能にすることができる。例示的な一実装形態では、メモリアクセス動作は、それらのメモリアクセス動作が許可される各データ要素について実行され得るが、他の実装形態では、メモリアクセス動作のうちの別のものが許可されない場合に、1つ以上の許可されたメモリアクセス動作の実行を抑制することが決定され得る。先に述べたように、そのような状況においてどの許容可能なアクセスが抑制されるかは、実装に依存してもよく、データ要素のベクトル内のどこに、関連付けられたアクセスが許容されないデータ要素があるかに依存してもよい。
【0074】
図6Aは、単一ケイパビリティベクトル指示フィールドが提供される実装形態において、必要なケイパビリティを保持する複数のベクトルレジスタを決定するために使用され得る技法を示す流れ図である。ステップ300において、要求されるケイパビリティを保持する1つのベクトルレジスタが、その単一ケイパビリティベクトル指示フィールド内の情報から決定される。次に、ステップ310において、必要なケイパビリティを保持する他の各ベクトルレジスタが、ステップ300において識別されたベクトルレジスタ及び既知の決定された関係から決定される。その決定された関係は、暗黙的であってもよく、あるいはケイパビリティベクトル指示フィールド内で、又は実際に命令の別のフィールド内で指定されてもよい。
【0075】
図6Bは、必要なケイパビリティを保持する様々なベクトルレジスタを計算するために使用され得る特定の例示的な実装形態を示す。ステップ320において、必要とされるケイパビリティを含むベクトルレジスタの数が決定され、この例示的な実装形態では、そのようなベクトルレジスタは2個存在する。いくつかの実装形態では、ケイパビリティを保持するために必要とされるベクトルレジスタの数は、例えば、所与のベクトルメモリアクセス命令が特定の固定サイズのデータ要素と共に使用するためにのみサポートされ、ケイパビリティも固定サイズであることに起因して、固定される。しかしながら、代替的に、ベクトルレジスタの数は、例えば、命令によって指定されたデータ要素サイズ及びケイパビリティサイズ情報に基づいて、命令デコーダによって実行時に決定することができる。
【0076】
ステップ330において、第1のベクトルレジスタ番号が、ケイパビリティベクトル指示フィールド内に提供された情報から決定されるが、この実装形態では、そのベクトルレジスタ番号の最下位Nビットは、論理0値になるように制約される。そのような実装形態では、それらのビットは0にハードワイヤードされ得るので、ケイパビリティベクトル指示フィールドはそれらのビットを指定する必要がないことが理解されよう。
【0077】
ステップ340において、第1の決定されたベクトルレジスタ番号のN個の最下位ビットを操作することによって、必要なケイパビリティを含む複数のベクトルレジスタに対する他の各ベクトルレジスタ番号が決定される。これにより、必要なケイパビリティを含む複数のベクトルレジスタを指定する特に単純で効率的な機構が提供される。
【0078】
図7は、ベクトルレジスタ350のセットがどのように複数の論理セクション360、365から形成されると考えられ得るかを示す。各ベクトルレジスタ355は、各セクション内に部分357、359を有する。図7では2つのセクションが示されているが、他の実装形態では、3つ以上のセクションが設けられ得る。いくつかの実装形態では、ベクトルレジスタの部分357、359毎に単一ケイパビリティのみが提供されるが、他の実装形態では、レジスタの各部分は、複数のケイパビリティを保持するのに十分な大きさであり得る。そのような手法によって、これにより、所与のベクトルメモリアクセス命令を含むベクトル命令の実行が複数の「ビート」に分割されることを可能にすることができ、各ビート中に、ベクトル命令を実行するためにベクトルレジスタのセットの1つのセクションのみがアクセスされる。ベクトル命令が複数のビートに分割されることを可能にすることによって、ベクトル命令の実行が1つ以上の他のベクトル命令の実行と重複することを可能にすることができ、非常に効率的な実装をもたらすことができる。例えば、所与のベクトルメモリアクセス命令は、ベクトル演算命令と重複し得る。特に、1つの例示的な実装形態では、任意の特定のビート中にメモリアクセス動作を実行するために必要とされるデータ要素及びケイパビリティは全て、ベクトルレジスタのセットの単一のセクションから取得され得、次いで、重複した命令の実行中にアクセスのために利用可能な任意の他のセクションが残される。ビートベースの実装形態の更なる詳細については、図10及び図11を参照して後でより詳細に説明する。
【0079】
図8A図8Cは、本明細書で説明される収集又は分散演算を実行するときに使用され得るデータ要素及び関連付けられたケイパビリティの異なる特定の例示的な構成を示す。図8Aに示されるように、用語「CX」は、対応するデータ値「DX」に対するメモリアドレスを決定するために使用されるケイパビリティを識別する。図8Aに示すベクトルレジスタ400は、ベクトルメモリアクセス命令の実行中にアクセスされるデータ要素に関連付けられたベクトルレジスタである。この例示的な実装形態では、ベクトルレジスタ400は128ビット幅であり、各データ要素は32ビット幅であり、その結果、4つのデータ要素がベクトルレジスタ400に関連付けられると仮定する。各データ要素は、ベクトルレジスタ400の対応するデータレーンに関連付けられているとみなすことができ、したがって、図8Aに示すように、データレーンは、値0~3をとることができる。
【0080】
図8A図8Cに示される例では、ケイパビリティは64ビット幅であり、したがって、図8Aの例における各ベクトルレジスタ405、410は、2つのケイパビリティを記憶することができる(図8A図8Cにおける説明のために、前述のタグ値を保持するために提供される任意の追加ビットは省略される)。特定のベクトルレジスタ内の各ケイパビリティは、関連付けられたケイパビリティレーンを占有するものとみなすことができ、したがって、図8Aの例では、レーン0及び1と呼ばれる2つのケイパビリティレーンが存在する。図8Aに示されるように、ケイパビリティC0は第1のケイパビリティレジスタQ405内のケイパビリティレーン0を占有し、ケイパビリティC1は第2のケイパビリティレジスタQN+1410内のケイパビリティレーン0を占有し、ケイパビリティC2は第1のケイパビリティレジスタQ405内のケイパビリティレーン1を占有し、ケイパビリティC3は第2のケイパビリティレジスタQN+1410内のケイパビリティレーン1を占有する。したがって、そのような構成によって、ベクトルレジスタ400内の隣接する位置に関連付けられた任意の所与の対のデータ要素について、関連付けられたケイパビリティが、複数のベクトルレジスタ405、410のうちの異なるベクトルレジスタに記憶されることが認識され得る。
【0081】
そのような構成は、データ要素の特定のシーケンスに関連して必要とされるケイパビリティが全てベクトルレジスタの同じ部分357、359内に見出され得ることを意味するので、非常に有利であることが分かっている。特に、図8Aに示される例では、データ要素D0及びD1、並びにそれらのデータ要素のメモリアドレスを識別するために必要なケイパビリティC0及びC1は全て、関連するベクトルレジスタの下半分に見出すことができ、同様に、データ要素D2及びD3、並びにそれらのデータ要素のメモリアドレスを識別するために必要なケイパビリティC2及びC3は全て、関連するベクトルレジスタの上半分に見出すことができる。これにより、例えば、先に言及したベクトルメモリアクセス命令のビート毎の実行をサポートすることができる。
【0082】
図8Aでは、データ値は32ビットであるが、これは必要条件ではなく、図8Bは、データ要素が16ビット幅である代替例を示す。したがって、128ビット幅のベクトルレジスタ415は、8つのデータ要素に関連付けることができ、4つのベクトルレジスタQ~QN+3420、425、430、435が、関連付けられたケイパビリティを保持するために必要とされる。ここでも、ケイパビリティは図8Aと同様にレイアウトされ、最初の4つのケイパビリティはベクトルレジスタ420、425、430、435の下半分内に記憶され、最後の4つのケイパビリティはそれらのベクトルレジスタの上半分内に記憶される。
【0083】
ベクトルレジスタが128ビットレジスタであると考えられることも必要条件ではなく、図8Cの例では、レジスタの各々は256ビット幅である。この特定の例では、データ要素は32ビット幅であり、ケイパビリティは他の例と同じままであり、すなわち64ビット幅である。この例では、したがって、ベクトルレジスタ440に関連付けられた8つのデータ要素があり、2つのベクトルレジスタ445、450が8つのケイパビリティを記憶するために使用され、4つのケイパビリティが各レジスタ内に配置されることが分かる。ケイパビリティは、それらがケイパビリティレーン0、ケイパビリティレーン1、ケイパビリティレーン2、及びケイパビリティレーン3の昇順で記憶されるように構成され、したがって、図8A及び図8Bの他の2つの例を参照して前述した一般的なパターンに従う。
【0084】
先に説明したベクトルメモリアクセス命令のビート毎の実行を実行するとき、例示的な一実装形態では、ベクトルレジスタの各セクションは、1つ以上のケイパビリティを記憶するように構成され得る。したがって、図8A又は図8Bの例を考慮すると、ベクトルレジスタは、2つのセクションから形成されると考えられ得、必要とされるアクセス動作の半分が第1のビートにおいて処理され、残りの半分が第2のビートにおいて処理されることを可能にする。同様に、図8Cを考慮すると、ベクトルレジスタセットは、2つ又は4つのセクションから形成されると考えられてもよく、必要とされるアクセス動作がそれぞれ2つ又は4つのビートにわたって実行されることを可能にする。しかしながら、ベクトルレジスタの各論理セクションが少なくとも1つのケイパビリティを収容するのに十分な幅であることは必ずしも必要条件ではないことに留意されたい。例えば、いくつかの実装形態では、ケイパビリティサイズよりも小さいセクションサイズ、例えば、64ビットケイパビリティを有する32ビットセクションサイズを有することが可能であり得る。
【0085】
図9は、図8A図8Cに概略的に示されるようなケイパビリティのレイアウトを使用するときに、各データ要素について、関連付けられたケイパビリティがどのように決定され得るかを示すフロー図である。ステップ450において、パラメータMはケイパビリティレーンの数に等しく設定され、パラメータPはケイパビリティを保持するベクトルレジスタの数に等しく設定される。ステップ455において、ベクトルレジスタは、値0~P-1のシーケンスによって識別されると考えられ、ケイパビリティレーンは、値0~M-1のシーケンスによって識別されると考えられる。ステップ460において、パラメータXが0に設定され、次いでステップ465において、レーンX内のデータ要素に対して、計算X/Pが実行される。
【0086】
ステップ470において、上記の計算から得られた商及び余りを使用して、関連付けられたケイパビリティを含むケイパビリティレーン及びベクトルレジスタをそれぞれ識別する。ステップ475において、データレーンXが最後のデータレーンであるかどうかが判定され、最後のデータレーンでない場合、ステップ465に戻る前にステップ480においてXの値がインクリメントされる。ステップ475において、データレーンXが最後のデータレーンであると判定されると、プロセスはステップ485で終了する。
【0087】
デジタル信号処理(DSP)などのいくつかのアプリケーションでは、ほぼ等しい数のALU及びロード/記憶命令が存在する場合があり、したがって、MACなどのいくつかの大きなブロックは、かなりの時間量にわたってアイドルのままにされ得る。この非効率性は、実行リソースがより高い性能を得るためにベクトルレーンの数でスケーリングされるので、ベクトルアーキテクチャ上で悪化する可能性がある。より小さいプロセッサ(例えば、単一発行、インオーダコア)上では、完全にスケールアウトされたベクトルパイプラインの面積オーバーヘッドが非常に大きくなる可能性がある。利用可能な実行リソースのより良好に使用しながら面積の影響を最小化する1つの手法は、図10に示されるように、命令の実行を重複させることである。この例では、3つのベクトル命令が、ロード命令VLDR、乗算命令VMUL、及びシフト命令VSHRを含み、これらの命令は全て、それらの間にデータ依存関係がある場合であっても、同時に実行することができる。これは、VMULの要素1がQ1の要素1のみに依存し、Q1レジスタ全体に依存しないためであり、したがって、VMULの実行は、VLDRの実行が終了する前に開始することができる。命令を重複させることによって、乗算器のような高額なブロックをより多くの時間アクティブに保つことができる。
【0088】
したがって、マイクロアーキテクチャ実装がベクトル命令の実行を重複させることを可能にすることが望ましい場合がある。しかしながら、アーキテクチャが、固定量の命令重複があると仮定する場合、マイクロアーキテクチャ実装がアーキテクチャによって仮定される命令重複の量に実際に一致するならば、高い効率を提供し得るが、異なる重複を使用するか、又は全く重複しない異なるマイクロアーキテクチャにスケーリングされる場合、問題を引き起こし得る。
【0089】
代わりに、アーキテクチャは、図11の例に示されるように、ある範囲の異なる重複をサポートし得る。ベクトル命令の実行は、「ビート」と呼ばれる部分に分割され、各ビートは、所定のサイズのベクトルの一部分の処理に対応する。ビートは、完全に実行されるか又は全く実行されないベクトル命令の微小部分であり、部分的に実行することはできない。1つのビートにおいて処理されるベクトルの部分のサイズは、アーキテクチャによって定義され、ベクトルの任意の分数とすることができる。図11の例では、ビートは、ベクトル幅の4分の1に対応する処理として定義され、したがって、ベクトル命令毎に4つのビートがある。明らかに、これは一例に過ぎず、他のアーキテクチャは、異なる数のビート、例えば2又は8を使用し得る。1つのビートに対応するベクトルの部分は、処理されているベクトルのデータ要素サイズと同じサイズであってもよく、それより大きくても小さくてもよい。したがって、要素サイズが実装毎に、又は異なる命令間の実行時に変動する場合であっても、ビートはベクトル処理の特定の固定幅である。1つのビートにおいて処理されているベクトルの部分が複数のデータ要素を含む場合、各要素が独立して処理されることを保証するために、それぞれの要素間の境界においてキャリー信号を無効にすることができる。1つのビートで処理されたベクトルの部分が要素の一部のみに対応し、ハードウェアがいくつかのビートを並列に計算するのに不十分である場合、処理の1つのビート中に生成されたキャリー出力は、2つのビートの結果が一緒にデータ要素を形成するように、処理の次のビートへのキャリー入力として入力され得る。
【0090】
図11に示されるように、処理回路4の異なるマイクロアーキテクチャ実装形態は、抽象アーキテクチャクロックの1つの「チック」において異なる数のビートを実行し得る。ここで、「チック」は、アーキテクチャ状態の進行の単位に対応する(例えば、単純なアーキテクチャでは、各チックは、次の命令を指すようにプログラムカウンタを更新することを含む、命令の実行に関連付けられた全てのアーキテクチャ状態を更新するインスタンスに対応し得る)。パイプライン化などの既知のマイクロアーキテクチャ技法は、単一チックがハードウェアレベルで実行するために複数のクロックサイクルを必要とし得ること、及び実際に、ハードウェアレベルでの単一のクロックサイクルが複数の命令の複数の部分を処理し得ることを意味し得ることが、当業者によって理解されるであろう。しかしながら、そのようなマイクロアーキテクチャ技術は、チックがアーキテクチャレベルで微小であるので、ソフトウェアには見えない。簡潔にするために、そのようなマイクロアーキテクチャは、本開示の更なる説明の間、無視される。
【0091】
図11の下側の例に示すように、いくつかの実装形態は、1つのチック内で全てのビートを並列に処理するための十分なハードウェアリソースを提供することによって、同じチック内のベクトル命令の4つ全てのビートをスケジュールし得る。これは、より高性能の実装形態に適し得る。この場合、命令全体を1チックで完了することができるので、アーキテクチャレベルでの命令間の重複は必要ない。
【0092】
一方、より面積効率の高い実装形態は、チック毎に2つのビートしか処理できないより狭い処理ユニットを提供することができ、図11の中央の例に示すように、命令実行は、第1の命令の第3又は第4のビートと並列に実行される第2のベクトル命令の第1及び第2のビートと重複することができ、これらの命令は、処理回路内の異なる実行ユニット上で実行される(例えば、図11では、第1の命令は、ロード/記憶ユニット18を使用して実行されるロード命令であり(例えば、本明細書で説明するタイプのベクトル集約命令であってもよい)、第2の命令は、処理回路4内に設けられたMACユニットを使用して実行される乗算累算命令である。
【0093】
更にエネルギー/面積効率の高い実装形態は、より狭く、一度に単一ビートのみを処理することができるハードウェアユニットを提供することができ、この場合、1つのビートがチック毎に処理され得、命令実行は、図11の上の例に示されるように、2つのビートだけ重複し、ずらされる。例示的な一実装形態では、セクションサイズは、命令間のずらしの量に影響を及ぼすために使用され得る(特定のビートを実行するとき、同じセクションからデータの全てを取得することが望ましいため)。図11に示される一番上の例では、例えば、ビートサイズが32ビットであるが、セクションサイズが64ビットである場合があり、したがって、これが、命令が2ビートだけずらされる理由である。
【0094】
図11に示される重複はいくつかの例に過ぎず、他の実装形態も可能であることが理解されよう。例えば、処理回路4のいくつかの実装形態は、同じチックにおいて並列に複数の命令の二重発行をサポートすることができ、それにより、命令のスループットが向上する。この場合、1つのサイクルにおいて一緒に開始する2つ以上のベクトル命令は、次のサイクルにおいて開始する2つ以上のベクトル命令と重複するいくつかのビートを有し得る。
【0095】
異なる性能ポイントにスケーリングするために実装毎に重複の量を変化させるだけでなく、ベクトル命令間の重複の量も、プログラム内のベクトル命令の実行の異なるインスタンス間で実行時に変化し得る。したがって、処理回路4は、所与の命令が前の命令に対して実行されるタイミングを制御するために、図1に示されるようなビート制御回路20を備え得る。これにより、マイクロアーキテクチャに、実装がより困難な特定の厄介なケースにおいて、又は命令に利用可能なリソースに依存して、命令を重複させないように選択する自由度が与えられる。例えば、同じリソースを必要とする所与のタイプ(例えば、乗算累算)の連続命令があり、全ての利用可能なMAC又はALUリソースが既に別の命令によって使用されている場合、次の命令の実行を開始するのに十分な空きリソースがない可能性があり、したがって重複するのではなく、第2の命令の発行は、第1の命令が完了するまで待つことができる。
【0096】
図12は、メモリと複数のベクトルレジスタとの間で一連のケイパビリティを移動させるために、図8A図8Cの先の例を参照して例として示された形態の構成で、それらのケイパビリティがベクトルレジスタ内に記憶されることを確実にするために必要な再構成を実行しながら、ベクトルケイパビリティメモリ転送命令のシーケンスがどのように使用され得るかを示す流れ図である。
【0097】
ステップ490において、ベクトルケイパビリティメモリ転送命令のシーケンスがデコードされ、そのような命令の各々は、関連付けられたアクセスパターンを定義し、前述のベクトル集約/分散命令の任意の特定のインスタンスによって要求されるケイパビリティのサブセットを識別する。例示的な一実装形態では、各個々のベクトルケイパビリティメモリ転送命令は、シーケンス中の他の各ベクトルケイパビリティメモリ転送命令に対するケイパビリティの異なるサブセットを識別する。
【0098】
次いで、ステップ492において、各ベクトルケイパビリティメモリ転送命令のアクセスパターンによって定義されるように、デインターリーブ(ロード動作が実行されている場合)又はインターリーブ(記憶動作が実行されている場合)を実行しながら、メモリと識別されたベクトルレジスタとの間でケイパビリティが移動させられる。結果として、複数のケイパビリティは、メモリに順次記憶されるように構成することができ、一方、複数のベクトルレジスタにおいて、複数のケイパビリティは、メモリに順次記憶される任意の所与の対のケイパビリティが異なるベクトルレジスタに記憶されるようにデインターリーブされる。
【0099】
図12に示されるステップを実行するために使用される複数のベクトルケイパビリティメモリ転送命令は、プログラム順序で互いに直接続く必要はなく、したがって、次々に順次実行される必要はない。シーケンス内の全てのベクトルケイパビリティメモリ転送命令が実行されると、メモリとベクトルレジスタとの間で移動される際に必要とされるケイパビリティの再構成が実行される。
【0100】
例示的な一実装形態では、メモリは複数のメモリバンクから形成され、各ベクトルケイパビリティメモリ転送命令について、そのベクトルケイパビリティメモリ転送命令が実行されるときにメモリバンクのうちの2つ以上がアクセスされるように、アクセスパターンが定義される。バンクメモリは、ハードウェアがメモリへの/からの並列転送を実装することをより容易にし、したがって、これを可能にするアクセスパターンを指定することは有益である。これは、各メモリバンクが64ビット幅である2つのメモリバンク496、498から形成されるメモリの例として、図13に概略的に示されている。メモリバンクのそのような構成では、メモリアクセスロジック494がメモリアドレスを処理しているとき、どのバンクにアクセスするかを決定するために、アドレスのビット3を考慮することができる。特に、アドレスのビット3(すなわち、第1のアドレスビットがビット0であると仮定すると、第4のアドレスビット)が論理0値である場合、メモリバンク496がアクセスされ、アドレスのビット3が論理1値である場合、他のメモリバンク498がアクセスされる。ケイパビリティは64ビットケイパビリティであるので、奇数ケイパビリティは一方のバンクに記憶され、偶数ケイパビリティは他方のバンクに記憶されることが理解されよう。
【0101】
純粋に例として、図8Aに示されるケイパビリティの構成を考慮すると、メモリ内の順次配置されたケイパビリティC0~C3は、以下のような2つのベクトルケイパビリティメモリ転送命令を使用してケイパビリティレジスタ405及び410にロードされ得る。
VLDRC2_1:C0→Qn[63:0]、C3→Q(n+1)[127:64]
VLDRC2_2:C1→Q(n+1)[63:0]、C2→Qn[127:64]
【0102】
図12を参照すると、ケイパビリティC0はケイパビリティC3とは異なるバンク内にあり、ケイパビリティC1はケイパビリティC2とは異なるバンク内にあるので、これらの命令の各々を実行するとき、バンク496、498の両方がアクセスされることが理解されよう。また、各命令によって転送される2つのケイパビリティは、ベクトルレジスタの異なるケイパビリティレーン内に存在し、したがって、一実施例では、同時にベクトルレジスタに書き込むことができる。
【0103】
図14は、使用され得るシミュレータ実装形態を例示する。前述の例は、当該技法をサポートする特定の処理ハードウェアを動作させるための装置及び方法の観点で本発明を実施するが、本明細書に記載の例による命令実行環境を提供することも可能であり、命令実行環境は、コンピュータプログラムの使用により実施される。このようなコンピュータプログラムは、コンピュータプログラムがハードウェアアーキテクチャのソフトウェアベースの実装形態を提供する限り、シミュレータと称されることがよくある。様々なシミュレータコンピュータプログラムは、エミュレータ、仮想マシン、モデル、及び動的バイナリトランスレータを含むバイナリトランスレータを含む。典型的に、シミュレータの実装形態は、ホストプロセッサ515で実行してもよく、任意選択でホストオペレーティングシステム510を実行し、シミュレータプログラム505をサポートする。いくつかの配設では、ハードウェアと提供された命令実行環境との間に複数層のシミュレーションがあり得、かつ/又は、複数の異なる命令実行環境が同じホストプロセッサ上に提供され得る。歴史的に、強力なプロセッサが、合理的な速度で実行されるシミュレータ実装形態を提供するのに必要とされてきたが、このようなアプローチは、互換性又は再使用の理由から別のプロセッサにネイティブなコードを実行することが望まれるようなときなど一定の状況では、正当化され得る。例えば、シミュレータ実装形態は、ホストプロセッサハードウェアによってサポートされていない追加の機能性を有する命令実行環境を提供し得るか、又は典型的には異なるハードウェアアーキテクチャに関連付けられた命令実行環境を提供し得る。シミュレーションの概要は、「Some Efficient Architecture Simulation Techniques」、Robert Bedichek、1990年冬、USENIX Conference、第53~63頁に記載されている。
【0104】
例が、特定のハードウェア構築又は特徴を参照して前述されている程度に、シミュレーションされた実装では、同等の機能が、好適なソフトウェア構築又は特徴によって提供され得る。例えば、特定の回路は、シミュレーションされた実装では、コンピュータプログラムロジックとして提供され得る。同様に、レジスタ又はキャッシュなどのメモリハードウェアは、シミュレーションされた実装では、ソフトウェアデータ構造として提供され得る。また、ハードウェア装置2内のメモリ8にアクセスするために使用される物理アドレス空間は、シミュレートされたアドレス空間としてエミュレートされ得、シミュレートされたアドレス空間は、ホストオペレーティングシステム510によって使用される仮想アドレス空間に、シミュレータ505によってマッピングされている。前述の例で言及されているハードウェア要素のうち1つ以上がホストハードウェア(例えば、ホストプロセッサ515)に存在する配設では、いくつかのシミュレートされた実装形態は、好適である場合、ホストハードウェアを使用し得る。
【0105】
シミュレータプログラム505は、(非一時的媒体であり得る)コンピュータ読み取り可能な記憶媒体に記憶され得、(アプリケーション、オペレーティングシステム、及びハイパーバイザを含み得る)ターゲットコード500への仮想ハードウェアインタフェース(命令実行環境)を提供し、仮想ハードウェアインタフェースは、シミュレータプログラム505によってモデル化されたハードウェアアーキテクチャのハードウェアインタフェースと同じである。したがって、ターゲットコード500のプログラム命令は、シミュレータプログラム505を使用して命令実行環境内から実行され得、このため、上で考察される装置2のハードウェア特徴を実際には有しないホストコンピュータ515は、これらの特徴をエミュレートすることができる。シミュレータプログラムは、処理回路4の動作をエミュレートする処理プログラムロジック520と、命令デコーダ6の動作をエミュレートする命令デコードプログラムロジック525と、ベクトルレジスタ12をエミュレートするためにデータ構造を維持するベクトルレジスタエミュレートプログラムロジック522とを含み得る。それゆえに、ケイパビリティを使用してベクトル集約又は散乱演算を実行するための本明細書で説明される技法は、図14の例では、シミュレータプログラム505によってソフトウェアで実施することができる。
【0106】
本出願において、「~ように構成された(configured to...)」という用語は、装置の要素が、定義された動作を行うことが可能である構成を有することを意味するために使用される。この文脈において、「構成」とは、ハードウェア又はソフトウェアの配置又は相互接続の方法を意味する。例えば、装置は、定義された動作を提供する専用ハードウェアを有し得るか、又はプロセッサ若しくは他の処理デバイスが、機能を実施するようにプログラムされ得る。「ように構成された」は、装置要素が、定義された動作を提供するために何らかの変更がなされる必要があることを意味しない。
【0107】
本発明の例示的な例が、添付の図面を参照して本明細書で詳細に説明されているが、本発明は、これらの精密な例に限定されないこと、並びに添付の特許請求の範囲によって定義されている本発明の範囲から逸脱することなく、当業者によって様々な変更、追加、及び修正が、当業者によってこれらの例に実施され得ることが理解されよう。例えば、従属請求項の特徴の様々な組み合わせは、本発明の範囲から逸脱することなく、独立請求項の特徴でなされ得る。
図1
図2
図3A
図3B
図4A
図4B
図5A
図5B
図6A
図6B
図7
図8A
図8B
図8C
図9
図10
図11
図12
図13
図14
【国際調査報告】