JP6874262B2 - ベクトル被演算子ビットサイズの制御 - Google Patents

ベクトル被演算子ビットサイズの制御 Download PDF

Info

Publication number
JP6874262B2
JP6874262B2 JP2018503484A JP2018503484A JP6874262B2 JP 6874262 B2 JP6874262 B2 JP 6874262B2 JP 2018503484 A JP2018503484 A JP 2018503484A JP 2018503484 A JP2018503484 A JP 2018503484A JP 6874262 B2 JP6874262 B2 JP 6874262B2
Authority
JP
Japan
Prior art keywords
level state
exception level
vector
bit size
vector operand
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2018503484A
Other languages
English (en)
Other versions
JP2018521421A (ja
Inventor
ジョン スティーブンス、ナイジェル
ジョン スティーブンス、ナイジェル
Original Assignee
アーム・リミテッド
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 アーム・リミテッド filed Critical アーム・リミテッド
Publication of JP2018521421A publication Critical patent/JP2018521421A/ja
Application granted granted Critical
Publication of JP6874262B2 publication Critical patent/JP6874262B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30192Instruction operation extension or modification according to data descriptor, e.g. dynamic data typing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

本開示は、データ処理システムの分野に関する。より具体的には、本開示は、ベクトル処理動作をサポートするデータ処理システムに関する。
あるベクトル被演算子ビットサイズを有し、複数のベクトル要素を含む少なくとも1つのベクトル被演算子を使用するベクトル処理動作をサポートするデータ処理システムを提供することが知られている。典型的に、ベクトル被演算子ビットサイズは、データ処理システムのアーキテクチャの一部として定義される。例えば、アーキテクチャは、ベクトル被演算子ビットサイズが256ビット、512ビット、1024ビットなどの何らかの特定の固定値になることを定義する。
本開示の少なくとも一部の実施形態は、データを処理するための装置であって、
最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理動作を遂行するための処理回路と、
プログラム命令をデコードして、該処理動作を遂行するように該処理回路を制御するための制御信号を生成するためのデコーダ回路であって、該処理動作が、少なくとも1つのベクトル被演算子を使用するベクトル処理動作を含む、デコーダ回路と、を備え、
該デコーダ回路が、該選択された例外レベル状態で実行されるベクトル被演算子ビットサイズ依存プログラム命令に応答して、該選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、該選択された例外レベル状態よりも該階層内で該最上層の例外レベル状態により近い例外レベル状態の少なくとも1つのプログラマブルなベクトル被演算子ビットサイズ限界値とに依拠してベクトル処理動作を遂行するように該処理回路を制御する、装置、を提供する。
本開示の少なくとも一部の実施形態は、データを処理するための装置であって、
最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理動作を遂行するための処理手段と、
プログラム命令をデコードして、処理動作を遂行するように該処理手段を制御するための制御信号を生成するためのデコーダ手段であって、該処理動作が、少なくとも1つのベクトル被演算子を使用する1つ以上のベクトル処理動作を含む、デコーダ手段と、を備え、
該デコーダ手段が、該選択された例外レベル状態で実行されるベクトル被演算子ビットサイズ依存プログラム命令に応答して、該選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、該選択された例外レベル状態よりも該階層内で該最上層の例外レベル状態により近い例外レベル状態の少なくとも1つのプログラマブルなベクトル被演算子ビットサイズ限界値とに依拠してベクトル処理動作を遂行するように該処理手段を制御する、装置、を提供する。
本開示の少なくとも一部の実施形態は、データを処理する方法であって、
最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理回路により処理動作を遂行することと、
プログラム命令をデコードして、該処理動作を遂行するように該処理回路を制御するための制御信号を生成することであって、該処理動作が、少なくとも1つのベクトル被演算子を使用するベクトル処理動作を含む、生成することと、を含み、
該選択された例外レベル状態で実行されるベクトル被演算子ビットサイズ依存プログラム命令に応答して、該選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、該選択された例外レベル状態よりも該階層内で該最上層の例外レベル状態により近い例外レベル状態の少なくとも1つのプログラマブルなベクトル被演算子サイズ限界値とに依拠してベクトル処理動作を遂行するように該処理回路を制御する、方法、を提供する。
これより、添付図面を参照しながら、例示的な実施形態を単に例として説明する。
ベクトル被演算子を使用したベクトル処理をサポートするデータ処理システムを概略的に例示する。 汎用ベクトル被演算子の形の例示的なベクトル被演算子およびベクトル述語被演算子を概略的に例示する。 複数の例外レベル状態とそれぞれの例外レベル状態に関連付けられたベクトル被演算子ビットサイズを制御するためのプログラマブルな限界値とを有するシステム内のベクトル被演算子ビットサイズ依存命令と許容ベクトル被演算子ビットサイズクエリ命令の挙動の具体的な例を概略的に例示する。 N個の例外レベル状態を有するシステムの挙動を例示する、図3の一般化されたバージョンである。 プログラマブルな限界値を記憶するために使用され、許容ベクトル被演算子ビットサイズクエリ命令による文脈依存型読み出しがそこから行われ得る、システム構成レジスタを概略的に例示する。 文脈依存型ベクトル被演算子ビットサイズ依存命令および文脈依存型許容ベクトル被演算子サイズクエリ命令の挙動をそれぞれ概略的に例示する流れ図である。 文脈依存型ベクトル被演算子ビットサイズ依存命令および文脈依存型許容ベクトル被演算子サイズクエリ命令の挙動をそれぞれ概略的に例示する流れ図である。 プログラマブルな限界値を書き込むときの挙動を概略的に例示する流れ図である。 ベクトル被演算子サイズが増大されるときの挙動を概略的に例示する。 仮想マシン実装を概略的に例示する。
図1は、プロセッサ4およびメモリ6を含むデータ処理システム2を概略的に例示し、メモリ6は、データ8およびプログラム命令10を記憶する。プロセッサ4は、プログラム命令10をメモリ6からフェッチし、これらをデコーダ回路14に渡す命令フェッチ回路12を含み、プログラム命令10は、デコーダ回路14においてデコードされて、プロセッサ4の動作を制御する制御信号16を生成する。より具体的には、制御信号16は、デコードされたプログラム命令により指定される処理動作を遂行するように処理回路18を制御する。処理回路18は、あるベクトル被演算子ビットサイズを有し、複数のベクトル要素を含むベクトル被演算子を記憶するためのベクトルレジスタ回路20に連結されている。システム構成レジスタ22もまた、処理回路18に連結されている。システム構成レジスタ22は、ベクトル処理命令のために使用されるベクトル被演算子ビットサイズおよびプログラマブルな限界値(PLV)によるベクトル被演算子ビットサイズの制約などの、ソフトウェア制御下で処理回路18によりプログラムされ得、処理回路18の挙動を構成する働きをする構成値を記憶する働きをする。
図2は、ベクトル被演算子の2つの例示的な形態を概略的に例示する。第1の例示的なベクトル被演算子24は、ベクトルプログラム命令(例えば、ベクトル算術命令、ベクトル論理命令など)を実行するときにソース被演算子または宛先被演算子として使用され得るものなどの、汎用ベクトル被演算子である。この例では、汎用ベクトル被演算子24は、512ビットのベクトル被演算子ビットサイズを有するとして、かつそれぞれ64ビットのベクトル要素ビットサイズを有する8個のベクトル要素を含むとして例示されている。ベクトル要素は、a〜aとして表示されている。
図2はまた、ベクトル被演算子の別の例示的な形態、すなわちベクトル述語被演算子26を例示する。これは、汎用ベクトル被演算子24に対して遂行されているベクトル処理動作に関連付けられたベクトル述語被演算子であってもよい。ベクトル述語被演算子26は、複数の述語値p〜pを含み、複数の述語値p〜pは、関連付けられたベクトルプログラム命令の実行を、そのベクトルプログラム命令により操作されるベクトル被演算子内の対応するベクトル要素に関して制御する。一例として、述語値は、汎用ベクトル被演算子内のそれぞれのベクトル要素に関連付けられたベクトル処理をスイッチオンまたはスイッチオフし得る。例示した例では、ベクトル述語被演算子は、64ビットを有し、各述語値は、長さ8ビットである。
図1のデータ処理システム2は、ベクトル被演算子24、26を記憶するために使用されるベクトルレジスタ回路22の特定の実装により実装される。実務上、本開示のプロセッサアーキテクチャを使用する異なる物理実装は、異なる実装限界の最大ビットサイズを有するベクトル被演算子を提供し得る。高速処理スピードを目指した複雑な実装は、1024ビットなどの大きいビットサイズを有するベクトル被演算子を提供してもよい。逆に、動作中の低い方のエネルギー消費を提供することを目指したプロセッサの実装は、128ビットなどのより小さい最大ベクトル被演算子ビットサイズをサポートしてもよい。データ処理システム2のプロセッサアーキテクチャ上で実行されるように書かれたソフトウェアは、いかなる修正も必要とすることなしに(または著しい修正を必要とすることなしに)、そのソフトウェアを実行するために使用されている特定のプロセッサ4の実装限界のベクトル被演算子ビットサイズに依拠して使用することができることが望ましい。さらに、特定のソフトウェアは、特定のベクトル被演算子ビットサイズで動くことが試験/検証されている場合があり、ソフトウェア自体が、そのソフトウェアの実行において使用されるベクトル被演算子ビットサイズを実装の最大ベクトル被演算子ビットサイズとは異なるように(それ未満になるように)制約することを希望する場合がある。複数の例外レベル状態(例えば、特権レベル)を利用するシステム内では、高い方の特権レベルにあるソフトウェアが低い方の例外レベル状態で実行されているソフトウェアにより使用されるベクトル被演算子ビットサイズを制約することができることが望ましい場合がある。例えば、最大で所与の最大ベクトル被演算子ビットサイズまで正確に動作すると検証されているオペレーティングシステムは、そのオペレーティングシステムの下で実行されているアプリケーションプログラムが、オペレーティングシステムが検証されている最大ベクトル被演算子ビットサイズを超えないように制約することを希望する場合がある。
図3は、プロセッサ4の特定の実装に関して、異なる例外レベル状態に関連付けられたプログラマブルな限界値を概略的に例示する。この実装では、実装限界の最大被演算子ビットサイズは、512である。プロセッサ4は、4つの異なる例外レベル状態、すなわちEL0、EL1、EL2、およびEL3における実行をサポートする。これらの例外レベル状態は、最下層の例外レベル状態EL0〜最上層の例外レベル状態EL3にわたる例外レベル状態の階層内に配置されている。最下層の例外レベル状態以外の例外レベル状態のそれぞれは、それに関連付けられたプログラマブルな限界値(PLV)を有する。他の例示的な実施形態(図示せず)では、最下層の例外レベル状態EL0もまた、それに関連付けられたプログラマブルな限界値(PLV)を有し得る。これらのプログラマブルな限界値は、例外レベル状態のそれぞれと関連付けられたベクトル被演算子ビットサイズを示す。図3の例では、例外レベル状態EL1は、384ビットのプログラマブルな限界値を有し、例外レベル状態EL2は、256ビットのプログラマブルな限界値を有し、例外レベルEL3は、512ビットのプログラマブルな限界レベルを有する。これらのプログラマブルな限界値は、当該の例外レベル状態および当該の例外レベル状態より下の全ての例外レベル状態で実行されているベクトルプログラム命令を実行するために使用されるべき最大ベクトル被演算子ビットサイズを示す。したがって、ある例外レベル状態に関連付けられたプログラマブルな限界値は、それ自身の例外レベルで実行されているプログラム命令のベクトル被演算子サイズに対して限界を課し、さらに例外レベル状態の階層内の低い方の例外レベルで実行されているプログラム命令に対してこの限界を課す。一例として、例外レベル状態EL2で実行されているハイパーバイザーは、256の最大ベクトル被演算子ビットサイズをサポートし得、この限界は、例外レベルEL1で実行されているオペレーティングシステムソフトウェアおよび例外レベルEL0で実行されているアプリケーションソフトウェアに対して課されることになる。たとえソフトウェアのこれらの他のインスタンス自体、例えば例外レベル状態EL1にあるオペレーティングシステムは、それら自身のプログラマブルな限界値により指定されるより大きいベクトル被演算子ビットサイズを使用することができるとしてでもある。
ベクトル被演算子ビットサイズ依存命令が実行されるとき、用いられるベクトル被演算子ビットサイズは、現在選択されている例外レベル状態の限界値と、現在選択されている選択レベル状態(これ自体は、プログラマブルであってもよく、プログラマブルでなくてもよい)よりも階層内で最上層の例外レベル状態により近い例外レベル状態に関して設定されている任意の(全ての)プログラマブルな限界値とにより支配されるベクトル被演算子ビットサイズで処理を遂行するように制御され(かつ処理回路18により使用され)る。(この例示的な実施形態における)最下層の例外レベル状態は、関連付けられたプログラマブルな限界値を有さないが、最下層の例外レベル状態よりも階層の最上層により近い他の例外レベル状態のうちの全てのプログラマブルな限界値に服する。ベクトルプログラム命令は、通常、実行されているベクトル被演算子ビットサイズ依存命令に関して許容されている最大値を有するベクトル被演算子ビットサイズを使用することになる。これは、増大したレベルの並列動作を提供する。
特定の例外レベル状態で実行されているソフトウェアは、最上層の例外レベル状態により近い例外レベル状態の制約のゆえに、そのソフトウェアが潜在的に使用できる最大ベクトル被演算子ビットサイズを決定する必要がある場合がある。これを達成するために、デコーダ回路14および処理回路18は、許容被演算子ビットサイズクエリ命令をサポートしている。この許容ベクトル被演算子ビットサイズクエリ命令は、処理回路18が許容ベクトル被演算子ビットサイズクエリ命令を実行する選択された例外レベル状態よりも階層内で最上層の例外レベル状態により近い例外レベル状態により制約されるベクトル被演算子ビットサイズ指示値を返す働きをする。したがって、図3の例では、アプリケーションプログラムにより使用される最下層の例外レベル状態に対応する例外レベル状態EL0で実行される許容ベクトル被演算子ビットサイズクエリ命令は、たとえ(この例示的な実施形態における)例外レベル状態EL0が関連付けられた限界値を有さず、例外レベルEL1で実行されているオペレーティングシステムに関連付けられた限界値が384という高い方の値であるとしても、例外レベル状態EL2の256のプログラマブルな限界値により制約される256の許容ベクトル被演算子ビットサイズ指示値を返すことになる。返される許容ベクトル被演算子ビットサイズ指示値は、高い方の例外レベル状態に関連付けられたプログラマブルな限界値に依拠するが、許容ベクトル被演算子ビットサイズクエリ命令自体が実行される選択された例外状態に関連付けられたいずれのプログラマブルな限界値にも依拠しない。図3の例では、例外レベル状態EL2自体に関連付けられたプログラマブルな限界値は256であるが、例外レベル状態EL2における許容ベクトル被演算子ビットサイズクエリ命令の実行は、512の許容ベクトル被演算子ビットサイズ指示値を返す。これが、例外レベル状態EL3に関連付けられたプログラマブルな限界値であるからである。許容ベクトル被演算子ビットサイズクエリ命令は、特定の例外レベル状態で実行されているソフトウェアが、そのソフトウェア自身のプログラマブルな限界値を設定するため、またはそのソフトウェアの挙動の何らかの他の側面を修正するためなどに、そのソフトウェアが使用し得る最大ベクトル被演算子ビットサイズを決定することを可能にする。
図4は、図3で与えた具体的な例の一般化されたバージョンである。この一般化されたバージョンでは、N個の例外レベルが存在する。所与の例外レベルでベクトル被演算子ビットサイズ依存命令のために使用されるベクトル被演算子ビットサイズは、さらにその例外レベル状態自体のプログラマブルな限界値ならびに階層内で最上層の例外レベル状態により近い他のプログラマブルな限界値により示される最小数として決定される。(この例示的な実施形態における)例外レベルEL0の場合、これ自体は、プログラマブルな限界値を有さず、それゆえに、そのベクトル被演算子ビットサイズは、階層内の高い方の例外レベル状態の全てのプログラマブルな限界値により示される最小数として決定される。最上層の例外レベル状態EL(N−1)は、それ自身のプログラマブルな限界値PLV(n−1)により指定される、そのベクトル被演算子ビットサイズ依存命令のために使用されるベクトル被演算子ビットサイズを有する。
図4の一般化された例の場合に返されるベクトル被演算子ビットサイズ指示値の場合、これは、許容ベクトル被演算子ビットサイズクエリ命令自体が実行される例外レベル状態と比較して、階層内の高い方の例外レベル状態に関連付けられた全てのプログラマブルな限界値により示される最小数により与えられる。最上層の例外レベル状態の場合、返される許容ベクトル被演算子ビットサイズ指示値は、プロセッサ4(およびベクトルレジスタ回路20)の特定の実装の実装限界のベクトル被演算子ビットサイズである。
図5は、上述の挙動を制御するために使用され得るシステムレジスタ22の形態の例を概略的に例示する。これらのシステムレジスタ22は、複数の例外レベル構成レジスタZCR_ELと共に識別レジスタZIDR_EL1を含む。デコーダ回路14は、許容ベクトル被演算子ビットサイズクエリ命令および現在の例外レベル状態に応答して(それにより、命令を文脈依存型にして)、識別レジスタZIDR_EL1を読み出す。このようなレジスタ読み出しから返される値は、上述したように図3および4に関して決定される許容ベクトル被演算子ビットサイズ指示値である。特に、許容ベクトル被演算子ビットサイズクエリ命令の実行は、プログラマーには識別システムレジスタを読み出すことのように見え得るものの、実務上、結果は、複数の例外レベル構成レジスタZCR_ELおよび実装限界の最大被演算子ビットサイズを含む他のソースから引き出され得る。プログラムモデルでは、ベクトル被演算子ビットサイズクエリ命令の実行の効果は、識別レジスタZIDR_EL1の最下位ビットを返すことである。これは、上述の最大許容ベクトル被演算子ビットサイズ指示値に対応する値を有する。例外レベル構成レジスタZCR_ELのうちのいずれにこの戻り値が依存するかは、許容ベクトル被演算子ビットサイズクエリ命令が実行される例外レベル状態により制御される。最下層の例外レベル状態で実行されるとき、読み出し識別レジスタZIDR_EL1に対する試みは、値を返さない場合があり、命令は、次いで、その代わりとして未定義の命令として扱われて、未定義命令例外をトリガする場合がある。最下層レベルの例外レベル状態以外のそれぞれの例外レベル状態に関連付けられた例外レベル構成レジスタZCR_ELは、これらの例外レベル構成レジスタに対する書き込みにより設定されるプログラマブルな限界値PLVを記憶するために使用される。所与の例外レベル状態で実行される例外レベル構成レジスタZCR_ELに対するシステムレジスタ読み出しまたは書き込み命令は、それ自身の例外レベル状態と、例外レベル状態の階層内の任意の低い方の(最下層の例外レベル状態により近い)例外レベル状態との例外レベル構成レジスタを読み出しまたは書き込むことを許容されている。高い方の例外レベル状態の例外レベル構成レジスタZCR_ELを読み出しまたは書き込む試みは、未定義命令挙動という結果をもたらす。
この例示的な実施形態では、プログラマブルな限界値は、4ビット値であってもよく、1だけインクリメントし、128で乗算することによりベクトル被演算子ビットサイズを表示するために使用される。プログラマブルな限界値とプログラマブルな限界値が指定するベクトル被演算子ビットサイズとの間の他のマッピング、例えばベクトル被演算子サイズを2の累乗として指定することも用いられ得ることは、明らかであろう。
図6Aは、文脈依存型ベクトル被演算子ビットサイズ依存命令の実行を概略的に例示する流れ図であるである。ステップ28では、処理は、ベクトル被演算子ビットサイズ依存命令がデコーダ14により受信されるまで待機する。次いで、ステップ30では、デコーダ14は、現在選択されている例外レベル状態のプログラマブルな限界値および全ての高い方の例外レベル状態のプログラマブルな限界値を読み出すように処理回路18およびプロセッサ内の他の要素を制御するための制御信号16を生成する。ステップ32は、これらの読み出し値のうちの最小数を決定する。ステップ34は、ステップ32で決定された最小値をベクトル被演算子ビットサイズとして使用するベクトル被演算子ビットサイズ依存命令により指定される処理(算術演算、論理演算、または何らかの他の演算など)を遂行する。
図6Bは、文脈依存型許容ベクトル被演算子ビットサイズクエリ命令の動作を概略的に例示する流れ図である。ステップ36では、処理は、許容ベクトル被演算子ビットサイズクエリ命令がデコーダ回路14により受信されるまで待機する。この許容ベクトル被演算子ビットサイズクエリ命令は、例えば、識別レジスタZIDR_EL1の読み出しであってもよい。このような命令が受信されると、処理は、ステップ38に進み、全ての高い方の例外レベル状態に関して設定されたプログラマブルな限界値(および適切な場合には、実装限界の最大ベクトル被演算子ビットサイズ)の読み出しが行われる。ステップ40は、ステップ38からの読み出し値のうちの最小数を決定する。ステップ42は、読み出し値のうちの最小数を最大許容ベクトル被演算子ビットサイズ(許容ベクトル被演算子ビットサイズ指示値)として返す。次いで、処理は、終了する。
図7は、プログラマブルな限界値PLVをシステム構成レジスタ22のうちの1つに書き込むときのプロセッサ4の挙動を概略的に例示する流れ図である。所与の例外レベル状態に関して設定され得るプログラマブルな限界値は、高い方の例外レベル状態に関して設定されたプログラマブルな限界値により制限され、プロセッサ4の特定の実装の制約によっても制限される。例えば、プロセッサ4の特定の実装は、512、256、および128のベクトル被演算子ビットサイズをサポートすることができるが、384のベクトル被演算子ビットサイズをサポートすることはできない。それゆえに、例外レベル構成レジスタZCR_ELのうちの1つに対するシステムレジスタ書き込み命令が384のベクトル被演算子ビットサイズに対応するプログラマブルな限界値を定義しようとしている場合、これは、例外レベル状態の階層内の高い方のプログラマブルな限界値により許容され得るが、プロセッサ4のハードウェア実装により許容されない。この場合、例外レベル構成レジスタZCR_EL内に記憶されたプログラマブルな限界値は、システムレジスタ書き込み命令に応答して、ハードウェアによりサポートされているz低いベクトル被演算子ビットサイズに丸められる。したがって、上述の例において、384に対応するプログラマブルな限界値の書き込みの試みは、高い方の例外レベル状態のプログラマブルな限界値により許容され得るが、ハードウェア実装により許容されず、それゆえに、記憶されている値は、サポートされている次に低いベクトル被演算子サイズ、すなわち256に丸められる。異なるプログラマブルな限界値を例外レベル構成レジスタに書き込むことを試み、次いで記憶された値を読み出すことにより、特定の例外レベル状態で実行されているソフトウェアは、高い方の例外レベル状態にあるソフトウェアにより設定されたプログラマブルな限界とハードウェア実装により設定された限界との両方の結果として、どのベクトル被演算子ビットサイズがサポートされており、どのベクトル被演算子ビットサイズがサポートされていないのかを決定し得る。
図7のステップ44では、処理は、例外レベル構成レジスタZCR_ELへの命令書き込みがデコーダ14により受信されるまで待機する。ステップ46は、書き込まれている指定されたプログラマブルな限界値がハードウェアによりサポートされているものかどうかを決定する。書き込まれた値が高い方の例外レベル状態のプログラマブルな限界値と決して相反しないように、追加のチェック(図示せず)が遂行される。
ステップ44でデコードされた命令により書き込まれているプログラマブルな限界値がハードウェア(およびソフトウェアにより制御される構成)によりサポートされている場合、ステップ48は、指定されたプログラマブルな限界値を当該の状態構成レジスタに書き込む働きをする。書き込まれるプログラマブルな限界値が、ステップ46により、ハードウェアによりサポートされていないと決定される場合、処理は、ステップ50を経て進み、丸められたプログラマブルな限界値が、その代わりとして、当該のハードウェア実装によりサポートされている次に低い値に丸められて、状態構成値に書き込まれる。
図8は、ベクトル被演算子ビットサイズが増大されるときの処理システムの挙動を概略的に例示する。プログラマブルな限界値の使用により、ソフトウェアは、使用中にベクトル被演算子ビットサイズを動的に変更し得ることが理解されるであろう。このような変更は、システムに対して著しい動作上の影響を有する場合があり、このことは、最下層の例外レベル状態がそれ自身のベクトル被演算子ビットサイズを制御することが許容されない1つの理由であり、これにより、典型的にこの最下層の例外レベル状態で実行されるアプリケーションプログラムが望ましくない挙動を引き起こすのを回避する。
(プログラマブルな限界値の変更、またはより大きいベクトル被演算子ビットサイズの使用を許容する例外レベル状態における動作への例外レベル状態の変更に対する応答などに対して、)ベクトル被演算子ビットサイズが増大されるとき、ベクトル被演算子の新たにアクセス可能になった部分52が、ベクトル処理命令により使用可能になる。処理システム2の確定的挙動を提供するのを助けるために、処理システム2は、このようなベクトル被演算子ビットサイズの増大に対して、ベクトル被演算子の新たにアクセス可能になった部分内の値をゼロにすることにより、あるいは新たにアクセス可能になった部分内の値が、新たにアクセス可能になった部分が最後に使用可能であったときに有していた状態で必ず保持されているようにすることにより、応答する。
図9は、使用され得る仮想マシン実装を例示する。上述の実施形態は、本発明を、当該技法をサポートする特定の処理ハードウェアを動作させるための装置および方法に関して実装しているものの、ハードウェアデバイスのいわゆる仮想マシン実装を提供することも可能である。これらの仮想マシン実装は、仮想マシンプログラム510をサポートするホストオペレーティングシステム520を動かすホストプロセッサ530上で動く。典型的に、妥当な速度で実行される仮想マシン実装を提供するには大型の強力なプロセッサが必要とされるが、このようなアプローチは、別のプロセッサのネイティブコードを互換性または再利用のために動かしたいというニーズが存在するときなど、特定の状況下において正当化され得る。仮想マシンプログラム510は、仮想マシンプログラム510により具現化されているデバイスである現実のハードウェアにより提供されるであろうアプリケーションプログラミングインターフェースと同じアプリケーションプログラミングインターフェースを、アプリケーションプログラム500に提供する。したがって、上述のメモリアクセスの制御を含むプログラム命令は、仮想マシンプログラム510を使用してプログラム命令と仮想マシンハードウェアとの相互作用を具現化するアプリケーションプログラム500内から実行することができる。
本明細書では添付図面を参照しながら本発明の例示的な実施形態を詳細に説明してきたものの、本発明は厳密なそれらの実施形態には限定されないこと、ならびにそれらの実施形態に対する様々な変更、追加、および修正が、添付請求項により定義される本発明の範囲および趣旨から逸脱することなしに、当業者により行われ得ることが理解されるべきである。例えば、従属請求項の特徴は、本発明の範囲から逸脱することなしに、独立請求項の特徴と様々に組み合わせることができる。

Claims (15)

  1. データを処理するための装置であって、
    最上層の例外レベル状態最下層の例外レベル状態との間にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理動作を遂行するための処理回路と、
    プログラム命令をデコードして、前記処理動作を遂行するように前記処理回路を制御するための制御信号を生成するためのデコーダ回路であって、前記処理動作が、少なくとも1つのベクトル被演算子を使用するベクトル処理動作を含む、デコーダ回路と、を備え、
    前記デコーダ回路が、ベクトル被演算子ビットサイズに依存すると共に前記選択された例外レベル状態で実行されるプログラム命令に応答して、前記選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、前記選択された例外レベル状態よりも前記階層内で前記最上層の例外レベル状態により近い例外レベル状態の少なくとも1つのプログラマブルなベクトル被演算子ビットサイズ限界値とに依拠してベクトル処理動作を遂行するように前記処理回路を制御する、装置。
  2. 前記ベクトル被演算子ビットサイズが、前記選択された例外レベル状態の前記限界値により許容される最大値であって、前記選択された例外レベル状態よりも前記階層内で前記最上層の例外レベル状態により近い例外レベル状態に関して設定された任意のプログラマブルな限界値によっても許容される、最大値、を有する、請求項1に記載の装置。
  3. 前記デコーダ回路が、許容ベクトル被演算子ビットサイズクエリ命令に応答して、前記選択された例外レベル状態よりも前記階層内で前記最上層の例外レベル状態により近い例外レベル状態に関して設定された任意のプログラマブルな限界値により支配される指示値を返し、前記指示値は、許容ベクトル被演算子ビットサイズを示す、請求項1および2のいずれか一項に記載の装置。
  4. 前記階層内の対応する例外レベル状態に関連付けられた前記ベクトル被演算子ビットサイズのそれぞれのプログラマブルな限界値を記憶する複数の例外レベル構成レジスタを備えた、請求項1、2、および3のいずれか一項に記載の装置。
  5. 前記最下層の例外レベル状態を除く前記階層内の各例外レベル状態のためのそれぞれの例外レベル構成レジスタを備えた、請求項4に記載の装置。
  6. 前記処理回路が、前記選択された例外状態の例外レベル構成レジスタと、前記選択された例外レベル状態よりも前記階層内で前記最下層の例外レベル状態により近い例外レベル状態の任意の例外レベル構成レジスタとにアクセスすることが許容されている、請求項4および5のいずれか一項に記載の装置。
  7. 前記処理回路が、前記処理回路が前記最下層の例外レベル状態にあるとき、前記許容ベクトル被演算子ビットサイズクエリ命令をサポートしないように構成される、請求項3に記載の装置。
  8. 前記処理回路が、最大で実装限界のベクトル被演算子ビットサイズを有するベクトル被演算子を記憶するためのベクトル被演算子レジスタ回路を含み、前記プログラマブルな限界値が、前記実装限界のベクトル被演算子ビットサイズ以下のベクトル被演算子ビットサイズを使用して前記プログラム命令を遂行するように前記処理回路を制御する、請求項1〜7のいずれか一項に記載の装置。
  9. 前記ベクトル被演算子が、汎用ベクトル被演算子と、ベクトルプログラム命令の実行を制御するための述語値を指定するベクトル述語被演算子とのうちの1つである、請求項1〜8のいずれか一項に記載の装置。
  10. 前記処理回路が、前記装置によりサポートされていないベクトル被演算子ビットサイズに対応するようにプログラマブルな限界値を設定しようとする試みに応答して、前記プログラマブルな限界値を前記装置によりサポートされている次に低いベクトル被演算子ビットサイズに設定する、請求項1〜9のいずれか一項に記載の装置。
  11. 前記処理回路が、ベクトル被演算子ビットサイズの増大に応答して、前記選択された例外レベル状態の変更と少なくとも1つの前記プログラマブルな限界値の変更とのうちの少なくとも1つの際に、前記ベクトル被演算子の新たにアクセス可能になった部分内に、ゼロの値または前記新たにアクセス可能になった部分が最後にアクセス可能であったときに前記新たにアクセス可能になった部分内に保持されていた値に等しい値のうちの1つを提供する、請求項1〜10のいずれか一項に記載の装置。
  12. 前記許容ベクトル被演算子ビットサイズクエリ命令が、システムレジスタ読み出し命令である、請求項3に記載の装置。
  13. データを処理するための装置であって、
    最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理動作を遂行するための処理手段と、
    プログラム命令をデコードして、前記処理動作を遂行するように前記処理手段を制御するための制御信号を生成するためのデコーダ手段であって、前記処理動作が、少なくとも1つのベクトル被演算子を使用する1つ以上のベクトル処理動作を含む、デコーダ手段と、を備え、
    前記デコーダ手段が、ベクトル被演算子ビットサイズに依存すると共に前記選択された例外レベル状態で実行されるプログラム命令に応答して、前記選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、前記選択された例外レベル状態よりも前記階層内で前記最上層の例外レベル状態により近い例外レベル状態の少なくとも1つのプログラマブルなベクトル被演算子ビットサイズ限界値とに依拠してベクトル処理動作を遂行するように前記処理手段を制御する、装置。
  14. データを処理する方法であって、
    最上層の例外レベル状態〜最下層の例外レベル状態にわたる例外レベル状態の階層のうちの選択された例外レベル状態で処理回路により処理動作を遂行することと、
    プログラム命令をデコードして、前記処理動作を遂行するように前記処理回路を制御するための制御信号を生成することであって、前記処理動作が、少なくとも1つのベクトル被演算子を使用するベクトル処理動作を含む、生成することと、を含み、
    ベクトル被演算子ビットサイズに依存すると共に前記選択された例外レベル状態で実行されるプログラム命令に応答して、前記選択された例外レベル状態のベクトル被演算子ビットサイズ限界値と、前記選択された例外レベル状態よりも前記階層内で前記最上層の例外レベル状態により近い例外レベル状態の少なくとも1つのプログラマブルなベクトル被演算子サイズ限界値とに依拠してベクトル処理動作を遂行するように前記処理回路を制御する、方法。
  15. 請求項1〜12のいずれか一項に記載の装置に対応する仮想マシン実行環境を提供するようにコンピュータを制御するための、非一時的な記憶媒体上に記憶されたコンピュータプログラム。
JP2018503484A 2015-07-31 2016-06-21 ベクトル被演算子ビットサイズの制御 Active JP6874262B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1513512.2 2015-07-31
GB1513512.2A GB2540944B (en) 2015-07-31 2015-07-31 Vector operand bitsize control
PCT/GB2016/051857 WO2017021680A1 (en) 2015-07-31 2016-06-21 Vector operand bitsize control

Publications (2)

Publication Number Publication Date
JP2018521421A JP2018521421A (ja) 2018-08-02
JP6874262B2 true JP6874262B2 (ja) 2021-05-19

Family

ID=54062957

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018503484A Active JP6874262B2 (ja) 2015-07-31 2016-06-21 ベクトル被演算子ビットサイズの制御

Country Status (9)

Country Link
US (1) US10409602B2 (ja)
EP (1) EP3329361B1 (ja)
JP (1) JP6874262B2 (ja)
KR (1) KR102581576B1 (ja)
CN (1) CN107851015B (ja)
GB (1) GB2540944B (ja)
IL (1) IL256440B (ja)
TW (1) TWI710956B (ja)
WO (1) WO2017021680A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2540944B (en) * 2015-07-31 2018-02-21 Advanced Risc Mach Ltd Vector operand bitsize control
GB2562102B (en) * 2017-05-05 2019-09-04 Advanced Risc Mach Ltd An apparatus and method for managing use of capabilities

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5513366A (en) * 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
DE19826826A1 (de) * 1998-06-16 1999-07-15 Siemens Ag Verfahren zum Decodieren und Ausführen von Befehlen in einem RISC-Prozessor
US20030221086A1 (en) * 2002-02-13 2003-11-27 Simovich Slobodan A. Configurable stream processor apparatus and methods
GB2474901B (en) 2009-10-30 2015-01-07 Advanced Risc Mach Ltd Apparatus and method for performing multiply-accumulate operations
US8555034B2 (en) * 2009-12-15 2013-10-08 Oracle America, Inc. Execution of variable width vector processing instructions
GB2478731B (en) * 2010-03-15 2013-08-21 Advanced Risc Mach Ltd Operand size control
JP5720111B2 (ja) * 2010-04-16 2015-05-20 富士通株式会社 情報処理装置
US20110320765A1 (en) * 2010-06-28 2011-12-29 International Business Machines Corporation Variable width vector instruction processor
KR101595637B1 (ko) * 2011-04-01 2016-02-18 인텔 코포레이션 벡터 친숙형 명령어 형식 및 그의 실행
GB2489914B (en) * 2011-04-04 2019-12-18 Advanced Risc Mach Ltd A data processing apparatus and method for performing vector operations
EP2695078B1 (en) * 2011-04-07 2016-10-19 VIA Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
CN104025038A (zh) * 2011-12-23 2014-09-03 英特尔公司 用于执行置换操作的装置和方法
WO2013101132A1 (en) * 2011-12-29 2013-07-04 Intel Corporation Processors having fully-connected interconnects shared by vector conflict instructions and permute instructions
US9594724B2 (en) 2012-08-09 2017-03-14 International Business Machines Corporation Vector register file
US20140281418A1 (en) * 2013-03-14 2014-09-18 Shihjong J. Kuo Multiple Data Element-To-Multiple Data Element Comparison Processors, Methods, Systems, and Instructions
US9348589B2 (en) * 2013-03-19 2016-05-24 Apple Inc. Enhanced predicate registers having predicates corresponding to element widths
US9552209B2 (en) 2013-12-27 2017-01-24 Intel Corporation Functional unit for instruction execution pipeline capable of shifting different chunks of a packed data operand by different amounts
US11544214B2 (en) * 2015-02-02 2023-01-03 Optimum Semiconductor Technologies, Inc. Monolithic vector processor configured to operate on variable length vectors using a vector length register
GB2540944B (en) * 2015-07-31 2018-02-21 Advanced Risc Mach Ltd Vector operand bitsize control

Also Published As

Publication number Publication date
IL256440A (en) 2018-02-28
TW201712535A (zh) 2017-04-01
GB2540944A (en) 2017-02-08
WO2017021680A1 (en) 2017-02-09
EP3329361A1 (en) 2018-06-06
EP3329361B1 (en) 2020-08-05
GB2540944B (en) 2018-02-21
US20180203699A1 (en) 2018-07-19
CN107851015B (zh) 2022-04-26
KR20180034471A (ko) 2018-04-04
IL256440B (en) 2020-03-31
GB201513512D0 (en) 2015-09-16
TWI710956B (zh) 2020-11-21
JP2018521421A (ja) 2018-08-02
CN107851015A (zh) 2018-03-27
KR102581576B1 (ko) 2023-09-22
US10409602B2 (en) 2019-09-10

Similar Documents

Publication Publication Date Title
JP6807383B2 (ja) 転送プレフィックス命令
KR101770665B1 (ko) 데이터 처리장치의 디버깅
US9804851B2 (en) Operand size control
JP2019504403A5 (ja)
KR102590679B1 (ko) 벡터 요소들 내부의 비트 값들의 시험
TW201737067A (zh) 向量預測指令
KR20130098303A (ko) 정렬 제어
JP7071913B2 (ja) ベクトル算術命令
US12008371B2 (en) Method and apparatus for efficient programmable instructions in computer systems
JP6874262B2 (ja) ベクトル被演算子ビットサイズの制御
JP6818010B2 (ja) ベクトル長クエリ命令
JP7377208B2 (ja) データ処理
JP2013161484A (ja) 再構成可能コンピューティング装置、その第1メモリ制御器及び第2メモリ制御器、並びにそのデバッギング用のトレースデータを処理する方法
KR102379886B1 (ko) 벡터 명령 처리
JP2008107902A (ja) マイクロプロセッサ

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190614

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200811

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200901

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210330

R150 Certificate of patent or registration of utility model

Ref document number: 6874262

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250