JP5646656B2 - 複数の命令セットにより使用されるレジスタ間のマッピング - Google Patents

複数の命令セットにより使用されるレジスタ間のマッピング Download PDF

Info

Publication number
JP5646656B2
JP5646656B2 JP2012557603A JP2012557603A JP5646656B2 JP 5646656 B2 JP5646656 B2 JP 5646656B2 JP 2012557603 A JP2012557603 A JP 2012557603A JP 2012557603 A JP2012557603 A JP 2012557603A JP 5646656 B2 JP5646656 B2 JP 5646656B2
Authority
JP
Japan
Prior art keywords
register
instruction
registers
program
value
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
JP2012557603A
Other languages
English (en)
Other versions
JP2013522749A (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 JP2013522749A publication Critical patent/JP2013522749A/ja
Application granted granted Critical
Publication of JP5646656B2 publication Critical patent/JP5646656B2/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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • 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/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30123Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
    • 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/30098Register arrangements
    • G06F9/3012Organisation of register space, e.g. banked or distributed register file
    • G06F9/30138Extension of register space, e.g. register cache
    • 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/3016Decoding the operand specifier, e.g. specifier format
    • 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/3017Runtime instruction translation, e.g. macros
    • G06F9/30174Runtime instruction translation, e.g. macros for non-native instruction set, e.g. Javabyte, legacy code
    • 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
    • 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/30196Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
    • 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • G06F9/384Register renaming
    • 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, look ahead
    • G06F9/3861Recovery, e.g. branch miss-prediction, exception handling
    • G06F9/3863Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers

Description

本発明は、データ処理システムの分野に関する。より具体的には、本発明は、複数の命令セットをサポートするデータ処理システム、およびそれらの複数の命令セットが提供され得る手法に関する。
複数の命令セットをサポートするデータ処理システムを提供することが知られている。そのようなデータ処理システムのいくつかの例は、ARM Limited(Cambridge、England)により製造されているプロセッサ設計であり、これはARM命令セットおよびThumb命令セットの両方をサポートしている。ARM命令は、32ビットでエンコードされ、32ビットレジスタ内に保持されるデータ値に対して実行される32ビットデータ処理操作(例えば、ADD、SUB、LDR、STR等)を指定する。Thumb命令は、16ビットでエンコードされ、32ビットレジスタ内に格納される32ビットデータ値に対して実行される32ビットデータ処理操作を指定する。
ARM Limitedにより設計されたNeonおよびVFPアーキテクチャ拡張は、それぞれ、プログラム制御下で指定されたサイズを有するレジスタ内に格納されるデータ値に対して動作するSIMDおよび浮動小数点命令を提供する。
プロセッサを提供する際、必要とされる回路リソースの量を低減することが望ましい。レジスタを形成するための回路要素の提供は、1つのそのような回路リソースを表している。
一態様から見れば、本発明は、データ処理装置であって、
処理対象のデータ値を格納するように構成される複数のレジスタと、前記複数のレジスタに結合され、前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するように構成される処理回路と、
前記処理回路に結合され、前記データ処理操作を実行するように前記処理回路を制御するためのプログラム命令のストリームに応答する、命令デコーダと、を備え、
前記命令デコーダは、前記複数のレジスタにより提供されるNビットアーキテクチャレジスタを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第1の命令セットのプログラム命令に応答し、Nは、正の整数値であり、
前記命令デコーダは、前記複数のレジスタにより提供されるMビットアーキテクチャレジスタを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第2の命令セットのプログラム命令に応答し、Mは、正の整数値であり、前記複数のレジスタの少なくともいくつかは、前記第1の命令セットのプログラム命令および前記第2の命令セットのプログラム命令により共有され、
前記命令デコーダは、前記第1の命令セットのプログラム命令による使用に提示されるNビットアーキテクチャレジスタの第1のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第1の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーダは、前記第2の命令セットのプログラム命令による使用に提示されるMビットアーキテクチャレジスタの第2のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーダは、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第1のマッピングと、前記第2の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第2のマッピングとを提供し、前記第1のマッピングは、前記第2のマッピングとは異なり、前記第1のマッピングおよび前記第2のマッピングは、前記第1のセットの各レジスタが、前記第2のセットのレジスタに対し所定の1対1のマッピングを有し、前記第2のセットの前記レジスタと、前記複数のレジスタ内の共通レジスタの共有部分を共有し(前記共通レジスタの非共有部分は前記第1の命令セットを使用してアクセス不可である)、前記第2のセットのレジスタを使用してアクセス可能である値を格納するようなマッピングである、データ処理装置を提供する。
本発明の技術は、異なる幅のアーキテクチャレジスタに対して異なる命令セットが動作する場合であっても、命令セットは、複数のレジスタのリソースを共有することができることを認識する。さらに、2つの命令セットにより使用されるレジスタ識別子間の所定の1対1のマッピングに対応することにより、命令セットの少なくとも1つは、他の命令セットによりレジスタ内に格納される値の全てにアクセスすることが可能である。これは、2つの命令セットに書き込まれるプログラムの相互操作、例えば2つの命令セットの異なる一方を使用して書き込まれるプログラム間のデータ値の共有に有益である。命令は、典型的には、2つ以上のレジスタ指定フィールドを含み得ることが理解される。いくつかの命令はまた、特定のレジスタの使用を暗に指定してもよく、例えばPUSHおよびPOP命令は、スタックポインタレジスタの使用を暗に指定する。
第1の命令セットに提示されるようなレジスタの第1のセットは、第2の命令セットに提示されるようなレジスタの第2のセットとは数が異なっていてもよいことが可能であるが、少なくとも好ましい実施形態において、第1のセットおよび第2のセットは、同数のレジスタを含む。これは、提供されるレジスタリソースの高レベルの再使用に役立つだけでなく、2つの命令セット間の効率的な相互運用性を促進する。
Mビットアーキテクチャレジスタは、2Nビットアーキテクチャレジスタであってもよい。
複数のレジスタは、第2の命令セットによる2Nビットデータ値の操作を容易化するために、2Nビットレジスタであってもよい。この場合、第1の命令セットは、2Nビットレジスタの最下位Nビットにアクセスするように構成されてもよい。
レジスタサイズおよびデータ幅は変動し得るが、少なくともいくつかの好ましい実施形態において、N=32である。
アクセスされるレジスタは、プログラム命令内のレジスタ指定フィールドにより完全に指定されてもよい。代替として、どのアーキテクチャレジスタが処理されるべきかを決定するために、現在の例外状態等の追加的状態が、レジスタ指定フィールドの値と組み合わされてもよい。本発明の少なくともいくつかの好ましい実施形態において、第1の命令セットがこのように動作する。
例外状態が、所与の値のレジスタ指定フィールドに対してどのアーキテクチャレジスタが使用されるべきかを指定する上での追加的な自由度を提供する場合、レジスタ指定フィールドの共通の値および異なる例外状態でアクセスされるアーキテクチャレジスタのグループは、レジスタのバンクグループと呼ばれる。そのような構成は、迅速な実行処理の補助に有用となり得る。
例えばアウトオブオーダー処理を容易化するためにレジスタリネーミングを使用する実施形態において、アーキテクチャレジスタにマッピングされる物理レジスタは変化すること、および、処理の所与の時点において、同じアーキテクチャレジスタに対応する複数の物理レジスタが存在し得るが、プログラム順序においては別の点であることが理解される。
命令デコーディングおよび使用される正しいアーキテクチャレジスタの識別を単純化するために、命令デコーダにより使用されるマッピングは、レジスタのバンクグループ内において、そのようなバンクレジスタの1つを指定する第1の命令セットのプログラム命令内のレジスタ指定フィールドの最下位ビットの値は、同じアーキテクチャレジスタにマッピングする第2の命令セットのプログラム命令のレジスタ指定フィールドの最下位ビットと共通の値であるように構成されるようなマッピングであってもよい。これは、デコーディングを単純化する。
バンクレジスタに関連した上述の構成を利用するいくつかの実施形態の特徴は、命令デコーダが、第2のセットのプログラムインストラクション内のレジスタ指定フィールドの増分値のシーケンスに対応する前記第2のセットのレジスタの部分に対して、第1の命令セットのプログラム命令内のレジスタ指定フィールドの対応する値が2つの値で交互するように、マッピングを提供するように構成されることである。
提供される複数のレジスタは、第2の命令セットのプログラム命令にアクセスした時に所定のヌル値を格納するヌル値レジスタを含んでもよく、第1の命令セットは、ヌル値レジスタにマッピングされるレジスタを有さない。そのようなヌル値レジスタは、読み出された時にヌル値を返すことができ、書き込むレジスタとしてヌル値レジスタを指定する命令は、結果が廃棄されたものとして解釈される。
いくつかの実施形態において、ヌル値はゼロである。
いくつかの実施形態において、第1の命令セットのプログラム命令を実行する時に、プログラムカウンタレジスタは、実行されているプログラム命令のメモリアドレスを示す値を格納し、プログラムカウンタレジスタは、第2のセットのレジスタにマッピングされる第1のセットの外にある。したがって、上述のように命令デコーダにより提供される1対1のマッピングは、プログラムカウンタレジスタを含まない。
さらなる態様から見れば、本発明は、データ処理装置であって、
処理対象のデータ値を格納するための複数のレジスタ手段と、
前記複数のレジスタ手段に格納されたデータ値に対してデータ処理操作を実行するための処理手段と、
プログラム命令のストリームに応答して前記データ処理操作を実行するように前記処理回路を制御するための命令デコーディング手段と、を備え、
前記命令デコーディング手段は、前記複数のレジスタ手段により提供されるNビットアーキテクチャレジスタ手段を使用して前記データ処理操作を実行するように前記処理手段を制御するための、第1の命令セットのプログラム命令に応答し、Nは、正の整数値であり、
前記命令デコーディング手段は、前記複数のレジスタ手段により提供されるMビットアーキテクチャレジスタ手段を使用して前記データ処理操作を実行するように前記処理手段を制御するための、第2の命令セットのプログラム命令に応答し、Mは、正の整数値であり、前記複数のレジスタ手段の少なくともいくつかは、前記第1の命令セットのプログラム命令および前記第2の命令セットのプログラム命令により共有され、
前記命令デコーディング手段は、前記第1の命令セットのプログラム命令による使用に提示されるNビットアーキテクチャレジスタ手段の第1のセットの一部として前記複数のレジスタ手段のどれにアクセスするかを決定する時に、前記第1の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーディング手段は、前記第2の命令セットのプログラム命令による使用に提示されるMビットアーキテクチャレジスタ手段の第2のセットの一部として前記複数のレジスタ手段のどれにアクセスするかを決定する時に、前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
前記命令デコーディング手段は、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタ手段との間の第1のマッピングと、前記第2の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタ手段との間の第2のマッピングとを提供するように構成され、前記第1のマッピングは、前記第2のマッピングとは異なり、前記第1のマッピングおよび前記第2のマッピングは、前記第1のセットの各レジスタ手段が、前記第2のセットのレジスタ手段に対し所定の1対1のマッピングを有し、前記第2のセットの前記レジスタ手段と、前記複数のレジスタ手段内の共通レジスタ手段の共有部分を共有し(前記共通レジスタ手段の非共有部分は前記第1の命令セットを使用してアクセス不可である)、前記第2のセットのレジスタ手段を使用してアクセス可能である値を格納するようなマッピングである、データ処理装置を提供する。
別の態様から見れば、本発明は、データ処理方法であって、
複数のレジスタ内で処理対象のデータ値を格納するステップと、
前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するステップと、前記データ処理操作を実行する前記ステップを制御するためのプログラム命令のストリームをデコードするステップと、を含み、
前記デコードするステップは、前記複数のレジスタにより提供されるNビットアーキテクチャレジスタを使用して前記データ処理操作を実行する前記ステップを制御するための、第1の命令セットのプログラム命令に応答し、Nは、正の整数値であり、
前記デコードするステップは、前記複数のレジスタにより提供されるMビットアーキテクチャレジスタを使用して前記データ処理操作を実行する前記ステップを制御するための、第2の命令セットのプログラム命令に応答し、Mは、正の整数値であり、前記複数のレジスタの少なくともいくつかは、前記第1の命令セットのプログラム命令および前記第2の命令セットのプログラム命令により共有され、
前記デコードするステップは、前記第1の命令セットのプログラム命令による使用に提示されるNビットアーキテクチャレジスタの第1のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第1の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、
前記デコードするステップは、前記第2の命令セットのプログラム命令による使用に提示されるMビットアーキテクチャレジスタの第2のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、
前記デコードするステップは、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第1のマッピングと、前記第2の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第2のマッピングとを提供し、前記第1のマッピングは、前記第2のマッピングとは異なり、前記第1のマッピングおよび前記第2のマッピングは、前記第1のセットの各レジスタが、前記第2のセットのレジスタに対し所定の1対1のマッピングを有し、前記第2のセットの前記レジスタと、前記複数のレジスタ内の共通レジスタの共有部分を共有し(前記共通レジスタの非共有部分は前記第1の命令セットを使用してアクセス不可である)、前記第2のセットのレジスタを使用してアクセス可能である値を格納するようなマッピングである、データ処理方法を提供する。
さらなる態様から見れば、本発明は、データ処理装置であって、
処理対象のデータ値を格納するように構成される複数のレジスタと、
前記複数のレジスタに結合され、前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するように構成される処理回路と、
前記処理回路に結合され、前記データ処理操作を実行するように前記処理回路を制御するためのプログラム命令のストリームに応答する、命令デコーダと、を備え、
前記命令デコーダは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第1のセットを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第1の命令セットのプログラム命令に応答し、
前記装置は、前記第1の命令セットのプログラム命令を実行する時に、複数の例外状態において動作するように構成され、前記命令デコーダは、どのアーキテクチャレジスタを使用するかを決定する時に、前記複数の例外状態の現在の例外状態とともに、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードするように構成され、
前記命令デコーダは、前記複数のレジスタにより提供され、前記第1の命令セットのプログラム命令と共有される、アーキテクチャレジスタの第2のセットを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第2の命令セットのプログラム命令に応答し、
前記命令デコーダは、例外状態に依存せずに前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、どのアーキテクチャレジスタを使用するかを決定するように構成される、データ処理装置を提供する。
さらなる態様から見れば、本発明は、データ処理装置であって、
処理対象のデータ値を格納するための複数のレジスタ手段と、
前記複数のレジスタ手段に格納されたデータ値に対してデータ処理操作を実行するための処理手段と、
プログラム命令のストリームに応答して前記データ処理操作を実行するように前記処理回路を制御するための命令デコーディング手段と、を備え、
前記命令デコーダ手段は、前記複数のレジスタ手段により提供されるアーキテクチャレジスタの第1のセットを使用して前記データ処理操作を実行するように前記処理手段を制御するための、第1の命令セットのプログラム命令に応答し、
前記装置は、前記第1の命令セットのプログラム命令を実行する時に、複数の例外状態において動作するように構成され、前記命令デコーダ手段は、どのアーキテクチャレジスタを使用するかを決定する時に、前記複数の例外状態の現在の例外状態とともに、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードするように構成され、
前記命令デコーダ手段は、前記複数のレジスタ手段により提供され、前記第1の命令セットのプログラム命令と共有される、アーキテクチャレジスタの第2のセットを使用して前記データ処理操作を実行するように前記処理手段を制御するための、第2の命令セットのプログラム命令に応答し、
前記命令デコーダ手段は、どのアーキテクチャレジスタを使用するかを決定する時に、例外状態に依存せずに前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成される、データ処理装置を提供する。
さらなる態様から見れば、本発明は、データ処理方法であって、
複数のレジスタ内で処理対象のデータ値を格納するステップと、
前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するステップと、前記データ処理操作を実行する前記ステップを制御するためのプログラム命令のストリームをデコードするステップと、を含み、
前記デコードするステップは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第1のセットを使用して前記データ処理操作を実行する前記ステップを制御するための、第1の命令セットのプログラム命令に応答し、
前記第1の命令セットのプログラム命令を実行する時に、複数の例外状態において動作し、どのアーキテクチャレジスタを使用するかを決定するために、前記複数の例外状態の現在の例外状態とともに、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードするステップと、を含み、
前記デコードするステップは、前記複数のレジスタにより提供され、前記第1の命令セットのプログラム命令と共有される、アーキテクチャレジスタの第2のセットを使用して前記データ処理操作を実行する前記ステップを制御するための、第2の命令セットのプログラム命令に応答し、
前記デコードするステップは、どのアーキテクチャレジスタを使用するかを決定する時に、例外状態に依存せずに前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードする、データ処理方法を提供する。
ここで、例示のみを目的として、添付の図面を参照しながら本発明の実施形態を説明する。
32ビットデータ値に対し動作する第1の命令セットおよび64ビットデータ値に対し動作する第2の命令セットをサポートするデータ処理システムを概略的に示す図である。 図2のデータ処理システムの64ビット汎用レジスタを概略的に示す図である。 図2の汎用レジスタを使用して32ビットデータ処理値に対し動作するデータ処理命令のアクションを概略的に示す図である。 図2の汎用レジスタを使用して64ビットデータ処理値に対し動作するデータ処理命令のアクションを概略的に示す図である。 32ビットデータ処理値に対し動作し、レジスタ指定フィールドを含む命令の例を概略的に示す図である。 64ビットデータ処理値に対し動作し、レジスタ指定フィールドを含む命令の例を概略的に示す図である。 32ビットデータ処理値に対し動作するプログラム命令の第1の命令セットに提示されるレジスタを概略的に示す図である。 64ビットデータ処理値に対し動作する第2の命令セットに提示されるレジスタを概略的に示す図である。 図7および8のレジスタ間のマッピングを概略的に示す図である。 命令のデコーディングを概略的に示すフロー図である。 異なる命令セットからのプログラム命令のレジスタ指定フィールドのデコーディングを概略的に示す図である。 仮想機械実装を概略的に示す図である。
図1は、メモリ6に結合されたプロセッサ4を含むデータ処理システムを概略的に示している。プロセッサ4は、31 64ビット汎用レジスタとして形成された複数のレジスタ8、および常にゼロ値を返すヌルレジスタを含む。これらは、一実施形態においてレジスタリネーミングを使用しないプロセッサ4のハードウェアにより提供されるレジスタである。レジスタリネーミングを使用する一実施形態において、アーキテクチャレジスタ(例えば命令により指定され、プログラマーのモデルにおいて考慮されるようなレジスタ)は、異なる物理レジスタにマッピングされてもよく、複数の物理レジスタは、プログラム順序において異なる時間に同じアーキテクチャレジスタに対応する値を同時に保有してもよい。
レジスタ8の使用は、32ビットでエンコードされ32ビットデータ値(32ビット命令)に対し動作する命令を含む第1の命令セットに提示されるレジスタの第1のセット(32ビットアーキテクチャレジスタのセット)を介するもの、および32ビットでエンコードされ64ビットデータ値(64ビット命令)に対し動作する命令を含む第2の命令セットに提示されるレジスタの第2のセット(64ビットアーキテクチャレジスタ)を介するものである。これらの両方の命令セット内の命令は、32ビットを有するものとしてエンコードされるが、これらの命令セットに影響されるデータ値の幅は異なる。
処理回路10は、複数のレジスタ8に結合され、乗算器12、シフター14および加算器16を含むデータパスの形態をとる。命令デコーダ18(レジスタマッピング回路を含む)は、命令デコーダ18によりデコードされたプログラム命令に応答して制御信号20を生成する。これらの制御信号20は、処理回路10を制御および構成するとともに、複数の汎用レジスタ8内のレジスタへのアクセスを制御する。処理回路10は明確性を改善するために単純化された形態で示されていること、また実際にはより多くの回路要素が存在し得ることが理解される。
データ処理システム2は、状態データ(ユーザ可読であってもよく、またはユーザ可読でなくてもよい)を使用して、プログラム命令が第1の命令セットのプログラム命令としてデコードされるか、または第2の命令セットのプログラム命令としてデコードされるかを制御し、例えば、モードビットまたはモード状態は、どの命令セットが使用されているかを示すように設定されてもよい。異なる命令セット内の命令のエンコーディングは、同じ命令ビットパターンが両方の命令セットにおいて生じてもよく、それらの命令セット内の異なる命令に対応してもよいという点で非直交であってもよい。
デコードされるプログラム命令は、第1の命令セットのプログラム24および第2の命令セットのプログラム26の両方を格納するメモリ6から、命令パイプライン22にフェッチされる。プログラム命令が命令パイプライン22内のデコード段階に達すると、次いでそれらは、命令デコーダ18に受け渡され、デコードされて制御信号20が生成される。命令デコーダ18はまた、どの命令セットが現在使用されているか、およびそれに伴い命令パイプライン22によるデコーディングに提示されるプログラム命令が、第1の命令セットの32ビット命令として、または第2の命令セットの64ビット命令としてデコードされるべきか否かを示す、命令セット選択回路28からの信号に応答する。命令デコーダ18が第1の命令セットからの命令(32ビット命令)をデコードしている場合、命令デコーダはまた、プロセッサ4が現在どのモードで動作しているかを示す32ビット例外モード回路30からの信号に応答する。第1の命令セットのプログラム命令を実行する時の現在の例外モードは、以下で説明されるように、第1の命令セットに提示されるレジスタの第1のセットのレジスタのどれが使用されるべきかを指定するために必要である。
図2は、図1からの複数の汎用レジスタ8の1つを示す。この汎用レジスタは、64ビットレジスタである。第1の命令セット(32ビット命令)のプログラム命令を実行する場合、図2のレジスタの最下位ビット部がアクセスされ、操作される。好ましい実施形態において、最上位ビット部は、そのような操作中不変のまま維持されるが、ゼロ化されるか、またはある未定義値に設定されてもよい。図2のレジスタが第2の命令セットのプログラム命令によりアクセスされる場合、レジスタの64ビット全てが利用される。したがって、2つの命令セットが異なるデータ幅に対して動作するとしても、図1の複数のレジスタ8に提供される物理レジスタの使用を共有することができる。レジスタの最上位32ビットは、2つの命令セット間で共有されないレジスタの部分である。
図3は、第1の命令セットからの加算操作の実行におけるレジスタの使用を概略的に示す。図から分かるように、各レジスタの下位部分が、入力オペランドまたは実行される処理操作の宛先を提供するために利用される。レジスタの上位部分は無視され、好ましい実施形態においては不変のままである。
図4において、第2の命令セット(64ビット命令)の加算操作が同様の様式で示されている。図4から、この場合の入力オペランドおよび宛先は、全て図2のレジスタの全幅を利用することが分かる。
図5は、3つのレジスタ指定フィールドを含む第1の命令セットの命令(32ビット命令)を概略的に示す。これらのレジスタ指定フィールドは、各レジスタ指定フィールドにより16個の異なる値を指定することができる4ビットフィールドである。2つのソースレジスタ指定フィールド、すなわちRおよびRが示されている。1つの宛先レジスタ指定フィールド、すなわちRが示されている。図5に概略的に示されている命令の残りは、どのデータ処理操作が実行されるべきかを示すために使用されるオペコードである。レジスタ指定フィールドはまた、不連続であってもよく、レジスタ指定子のいくつかのビットは、レジスタ指定子の他のビットから分離されてもよい。
図6は図5に類似しているが、ただしこの場合第2の命令セットからの命令(64ビット命令)が示されている。この場合、レジスタ指定フィールドは、各レジスタ指定フィールドに対し最大32個の異なる値を示すことができる5ビットフィールドである。ソースレジスタ指定フィールドは、XおよびXであり、宛先レジスタ指定フィールドは、Xである。
図7は、第1の命令セットに提示されるようなアーキテクチャレジスタの第1のセットを示す。これは、ARM Limited(Cambridge、England)により設計されたプロセッサにおけるARM命令セットに提示されるアーキテクチャレジスタのセットである。レジスタ指定フィールドは、0から15の値を指定することができる4ビットフィールドである。レジスタR15は、プログラムカウンタとしての使用に確保される。プログラムカウンタとしてのR15の使用は、特殊目的の使用であり、プログラムカウンタは、後述のように、64ビット命令に提示されるアーキテクチャレジスタの第2のセットにマッピングされるARM命令セット(第1の命令セット)に提示されるアーキテクチャレジスタの第1のセットの1つを形成しない。
図7に示されるように、ユーザおよびシステムモードは、15の汎用レジスタR0からR14を有する。実行されているデータ処理操作の一部としてこれらのレジスタのうちどれがアクセスされるべきかを指定するために、図5に示されるような命令内のレジスタ指定フィールドが使用される。多くのデータ処理操作が、アクセスされる複数のレジスタを指定することが理解される。
実際には、レジスタR13がスタックポインタとしての使用に確保され、レジスタR14が、例えば機能呼び出しに関するリターンアドレスの格納のために、リターンアドレスレジスタとして使用される。
図7は、プロセッサ4が例外モードの1つで動作している場合(32ビット例外モード回路30により命令デコーダ18に示されるように)、特定のレジスタ指定値を使用する際に異なるアーキテクチャレジスタが第1の命令セットに提供されることを示している。したがって、一例として、レジスタ指定値が「13」である場合、使用することができる7個の異なるアーキテクチャレジスタがある(任意のレジスタリネーミングの前に)。これらのアーキテクチャレジスタの1番目は、ユーザまたはシステムモードで使用される。ユーザまたはシステムモードで使用されるアーキテクチャレジスタの代わりに有効に置換される、これらのアーキテクチャレジスタの残りの6個は、現在の例外モードまたはプロセッサがハイパーバイザモードで実行されているか否かに基づいて選択される。プロセッサ4がハイパーバイザモードで実行されている場合、これは、図1に示されるように、命令デコーダ18への信号入力により示される。
ユーザまたはシステムモードのR13の代替となることができる6個のアーキテクチャレジスタは、バンク例外レジスタと呼ばれるグループとしてのレジスタである。異なるアーキテクチャレジスタは、異なる数のバンク化相当物を有し、全てのアーキテクチャレジスタがバンク化相当物を有するわけではないことが分かる。これらのバンクレジスタの提供は、いくつかの状況において、より迅速な例外処理を促進することができる。
図8は、第2の命令セットに提示されるようなアーキテクチャレジスタの第2のセットを概略的に示す。このアーキテクチャレジスタの第2のセットは、図7に示されるアーキテクチャレジスタの第1のセットと比較して、単純化された構造を有する。アーキテクチャレジスタの第2のセットは、それぞれ64ビットレジスタである31個の汎用レジスタを備える。これらは、X0からX30と指定される。図6に示される5ビットレジスタ指定フィールドは、これらのアーキテクチャレジスタのどれがアクセスされるべきかを指定するために使用される。図8に示されるアーキテクチャレジスタは、64ビットレジスタとしてアクセスされ、64ビット全てが、指定されるデータ処理操作により操作される。対照的に、図7のアーキテクチャレジスタは、基底物理レジスタが図2に示されるような64ビットレジスタであるとしても、32ビットレジスタとしてアクセスされる。
また、図8には、ヌル値(例えば0)を格納するヌルレジスタX31が示されている。このヌルレジスタが読み出される時は必ず、ヌル値が返される。このレジスタが書き込まれる時は必ず、書き込みの試行に関わらずヌル値がヌルレジスタに格納されたままとなる。図7に示されるような第1の命令セットに提示されるアーキテクチャレジスタにおいては、図8のヌルレジスタの相当物は存在しない。したがって、ヌルレジスタは、第1のセットおよび第2のセットのレジスタ間の1対1マッピングに供されるアーキテクチャレジスタの第2のセット内には含まれない。
図9は、第1のセットのレジスタと第2のセットのレジスタとの間のマッピングを示す。図示されるように、レジスタX0からX7は、レジスタR0からR7と同様に、それぞれ同じ64ビットレジスタにアクセスする。これは、図示されるようなマッピングについてさらなるレジスタに対して継続される。留意すべき特徴は、レジスタR13およびR14の場合、第1の命令セットにおいて使用されるレジスタ指定子の最下位ビットが、第2の命令セットの対応するレジスタに対して使用されるレジスタ指定子の最下位ビットに対応する点である。これは、物理レジスタを選択するためのレジスタ指定子および例外モードのデコーディングを単純化する。このマッピングのさらなる特徴は、レジスタX16からX23に対するレジスタ指定子の増分順序が、値が交互するR14およびR13の第1の命令セットにおけるレジスタ値に対応する点である。
図9から、第1の命令セットに提示されるレジスタの第1のセットと、第2の命令セットに提示されるレジスタの第2のセットとの間の1対1マッピングが存在することが分かる。第1のセットのレジスタは全て、第2の命令セットのプログラム命令にアクセス可能である。これは、命令セット間の相互運用性を促進する。したがって、第1の命令セットの命令を実行している間、バンクレジスタ内に保持されるある特定の値は、現在の例外モードがそれらのバンクレジスタを使用にマッピングしないため、プログラム命令に利用可能ではない可能性がある。しかしながら、第2の命令セットの命令の実行へのスイッチは、第1のセットのレジスタの全てを、それらが現在のモードとは独立して全てアクセス可能となるように、第2のセットのレジスタにマッピングする。
図10は、命令デコーダ18の動作を概略的に示すフロー図である。ステップ32において、処理は、命令が受信されるまで待機する。ステップ34において、命令が第2の命令セットからのものか否か、すなわち命令が64ビット命令か否かに関して決定がなされる。命令が64ビット命令である場合、ステップ36は、64ビット命令をデコードする。ステップ38は、使用されるレジスタを、5ビットフィールドであるレジスタ指定フィールドにマッピングする。次いで、ステップ40は、5ビットレジスタ指定フィールドにより指定されたレジスタにアクセスする。ステップ42は、命令を実行する。
ステップ34における決定が、命令が64ビット命令ではないという決定である場合、ステップ44は、命令を32ビット命令としてデコードする。ステップ46は、4ビットレジスタ指定フィールド、ならびに上述のような現在の例外モード(およびハイパーバイザ状態)を使用して、使用されるレジスタをマッピングする。次いで、ステップ40および42は、識別されたレジスタにアクセスし、命令を実行する。
図11は、命令デコーダ18の一部により実行されるような、異なる命令セットからのプログラム命令のデコーディングを概略的に示す。これらの命令セットは、32ビットデータ値を操作する32ビット命令としてエンコードされるARM命令セット、32ビットデータ値を操作する16ビット命令としてエンコードされるThumb命令セット、および64ビットデータ値を操作する32ビット命令としてエンコードされる64ビット命令セットである。ARM命令は、yビット、例えば16個の異なるアーキテクチャレジスタを指定することができる4ビットの長さのレジスタフィールドを含む。Thumb命令は、いくつかの命令に使用されるHビットで拡張されたxビット、例えば、8個のアーキテクチャレジスタが通常アドレスされ、いくつかの命令において16個のアーキテクチャレジスタのアドレスを可能とするHビットにより拡張され得る3ビットのレジスタ指定フィールドを使用する。64ビット命令は、zビットレジスタ指定フィールド、例えば、32個のアーキテクチャレジスタがアドレスされ得る5ビットレジスタ指定フィールドを使用する。
プロセッサ4内の状態は、どの命令セットが現在使用されているかを制御する。この状態は、いくつかの実施形態において、プログラマーに可視であってもよい。現在使用中の命令セットは、命令セット選択命令を使用して選択することができ、これは、分岐動作、例えば、命令セットのスイッチを有するブランチ等に関連付けられる場合がある。異なる命令セットの命令エンコーディングは非直交であり、その結果、ARM命令を指定する同じ32ビットパターンが、64ビット命令セット内の異なる命令に対応し得る。この32ビットパターンの正しいデコーディングは、どの命令セットが現在使用中かを識別する状態と組み合わせて実行することができる。
Thumb命令のレジスタ指定フィールドのデコーディングは、まず変換回路50を使用してxビットおよびHビットをyビットフィールドに変換することにより行われる。このyビットフィールドは、ARM命令におけるyビットフィールドに対応する。次いで、マルチプレクサ52が、ARMまたはThumb命令セットのどれが現在使用中かに基づいて、変換回路50からのyビットレジスタ指定フィールド、またはARM命令から読み出されたyビット指定フィールドを、バンクレジスタマッピング回路54に受け渡すことを選択する。
図7に関連して上述したように、ARM命令セット(およびThumb命令セットも)は、バンクレジスタを提供する。特定のアーキテクチャレジスタにアクセスするために、yビットレジスタ指定フィールドおよび現在の例外モードの両方がバンクレジスタマッピング回路54によりデコードされ、zビットのアーキテクチャフラットレジスタ数(AFRN)を生成する必要がある。ARM命令またはThumb命令から生成された所与のyビットレジスタ指定フィールドは、例えば、レジスタR13を指定することができる。しかしながら、図7に示されるように、それぞれこのyビットフィールドに対応する7個のアーキテクチャレジスタが存在し、対応するアーキテクチャフラットレジスタ数を生成するために、現在の例外モードを使用して、これらの7個の異なるアーキテクチャレジスタのうちから選択する。
64ビット命令セットは、バンクレジスタを使用しない。したがって、アクセスされるアーキテクチャレジスタを指定するためにzビットレジスタ指定フィールドをアーキテクチャフラットレジスタ数として直接使用することができる。マルチプレクサ56は、レジスタリネーミング回路58に受け渡されるアーキテクチャフラットレジスタ数を提供するために、64ビット命令から読み出されたアーキテクチャフラットレジスタ数、またはバンクレジスタマッピング回路54により生成されたアーキテクチャフラットレジスタ数のいずれかを選択する。レジスタリネーミング回路は、複数のレジスタ60内の物理レジスタをアドレスするために使用されるレジスタ指定子z’を生成するために、既知のアウトオブオーダー処理技術に従い、レジスタリネーミング操作を実行することができる。
図11の構成は、レジスタリネーミング回路58が異なる命令セット間で共有されることを可能とするだけでなく、複数のレジスタ60の共有を可能とする。アーキテクチャフラットレジスタ数の共通の生成は、複数のレジスタ60のデコーディングおよび共有を単純化する。レジスタリネーミング回路58は、全ての実施形態に提供される必要はない。
図12は、使用可能な仮想機械実装を示す。前述の実施形態は、関連する技術をサポートする特定の処理ハードウェアを操作するための装置および方法に関して、本発明を実施するものであるが、ハードウェアデバイスのいわゆる仮想機械実装を提供することも可能である。これらの仮想機械実装は、仮想機械プログラム510をサポートするホストオペレーティングシステム520を実行しているホストプロセッサ530上で行われる。典型的には、妥当な速度で実行する仮想機械実装を提供するためには、大型の強力なプロセッサが必要であるが、そのような手法は、例えば、適合性または再使用の理由から、別のプロセッサにネイティブなコードを実行することが求められる場合等、ある特定の状況においては正当化され得る。仮想機械プログラム510は、アプリケーションプログラム500に対して、仮想機械プログラム510によりモデル化されているデバイスである実際のハードウェアにより提供されるようなアプリケーションプログラムインターフェースと同じアプリケーションプログラムインターフェースを提供する。したがって、上述のメモリアクセスの制御を含むプログラム命令は、仮想機械ハードウェアとのインタラクションをモデル化するための仮想機械プログラム500を使用して、アプリケーションプログラム500内から実行することができる。
2 データ処理システム
4 プロセッサ
6 メモリ
8 汎用レジスタ
10 処理回路
12 乗算器
14 シフター
16 加算器
18 命令デコーダ
20 制御信号
22 命令パイプライン
24 プログラム
26 プログラム
28 命令セット選択回路
30 ビット例外モード回路
50 変換回路
52 マルチプレクサ
54 バンクレジスタマッピング回路
56 マルチプレクサ
58 レジスタリネーミング回路
60 複数のレジスタ
500 アプリケーションプログラム
510 仮想機械プログラム
520 ホストオペレーティングシステム
530 ホストプロセッサ

Claims (36)

  1. データ処理装置であって、
    処理対象のデータ値を格納するように構成される複数のレジスタと、
    前記複数のレジスタに結合され、前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するように構成される処理回路と、
    前記処理回路に結合され、前記データ処理操作を実行するように前記処理回路を制御するためのプログラム命令のストリームに応答する、命令デコーダと、を備え、
    前記命令デコーダは、前記複数のレジスタにより提供されるNビットアーキテクチャレジスタを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第1の命令セットのプログラム命令に応答し、Nは、正の整数値であり、
    前記命令デコーダは、前記複数のレジスタにより提供されるMビットアーキテクチャレジスタを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第2の命令セットのプログラム命令に応答し、Mは、正の整数値であり、前記複数のレジスタの少なくともいくつかは、前記第1の命令セットのプログラム命令および前記第2の命令セットのプログラム命令により共有され、
    前記命令デコーダは、前記第1の命令セットのプログラム命令による使用に提示されるNビットアーキテクチャレジスタの第1のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第1の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
    前記命令デコーダは、前記第2の命令セットのプログラム命令による使用に提示されるMビットアーキテクチャレジスタの第2のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
    前記命令デコーダは、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第1のマッピングと、前記第2の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第2のマッピングとを提供するように構成され、前記第1のマッピングは、前記第2のマッピングとは異なり、前記第1のマッピングおよび前記第2のマッピングは、前記第1のセットの各レジスタが、前記第2のセットのレジスタに対し所定の1対1のマッピングを有し、前記第2のセットの前記レジスタと、前記複数のレジスタ内の共通レジスタの共有部分を共有し(前記共通レジスタの非共有部分は前記第1の命令セットのプログラム命令を使用することによってはアクセス不可である)、前記第2のセットのレジスタを使用してアクセス可能である値を格納するようなマッピングであ
    前記装置は、前記第1の命令セットのプログラム命令を実行する時に、複数の例外状態のうちの1つにおいて動作するように構成され、前記命令デコーダは、前記複数のレジスタのどれにアクセスするかを決定する時に、前記複数の例外状態のうちの現在の例外状態とともに、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードするように構成され、前記第1のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第1のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
    前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
    前記所定の1対1のマッピングが為されている前記第1のセットのレジスタと前記第2のセットのレジスタのある範囲について、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が1ずつ増える昇順であるのに対し、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている、前記第1のセットのレジスタの一群の各レジスタにマッピングされている前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、2つの値が交互に現れるものであるように、前記命令デコーダは前記マッピングを提供する、データ処理装置。
  2. M=2Nである、請求項1に記載の装置。
  3. 前記第1のセットおよび前記第2のセットは、同数のレジスタを含む、請求項1または2に記載の装置。
  4. 前記複数のレジスタは、複数のMビットレジスタを備え、前記第1の命令セットのプログラム命令は、前記Mビットレジスタの最下位Nビットにアクセスするためのものである、請求項1、2および3のいずれか一項に記載の装置。
  5. N=32である、請求項1から4のいずれか一項に記載の装置。
  6. 前記複数のレジスタは、ヌル値レジスタを含み、
    前記第2の命令セットのプログラム命令に基づいて前記ヌル値レジスタを読み出すときには、前記ヌル値レジスタは常にヌル値を返すものである、請求項1からのいずれか一項に記載の装置。
  7. 前記レジスタの第1のセットは、前記ヌル値レジスタにマッピングされたアーキテクチャレジスタを有さない、請求項に記載の装置。
  8. 前記第1の命令セットのプログラム命令を実行する時に、プログラムカウンタレジスタは、実行されているプログラム命令のメモリアドレスを示す値を格納し、前記プログラムカウンタレジスタは、前記第2のセットのレジスタにマッピングされる前記第1のセットの外にある、請求項1からのいずれか一項に記載の装置。
  9. 前記共通レジスタが前記第1の命令セットのプログラム命令によりアクセスされる時に、前記非共有部分をゼロ化するか、前記非共有部分の値を不変のままとするか、または、前記非共有部分の値を未定義値に設定するかのうちのいずれか1つを行う、請求項1からのいずれか一項に記載の装置。
  10. データ処理装置であって、
    処理対象のデータ値を格納するための複数のレジスタ手段と、
    前記複数のレジスタ手段に格納されたデータ値に対してデータ処理操作を実行するための処理手段と、
    プログラム命令のストリームに応答して前記データ処理操作を実行するように前記処理手段を制御するための命令デコーディング手段と、を備え、
    前記命令デコーディング手段は、前記複数のレジスタ手段により提供されるNビットアーキテクチャレジスタ手段を使用して前記データ処理操作を実行するように前記処理手段を制御するための、第1の命令セットのプログラム命令に応答し、Nは、正の整数値であり、
    前記命令デコーディング手段は、前記複数のレジスタ手段により提供されるMビットアーキテクチャレジスタ手段を使用して前記データ処理操作を実行するように前記処理手段を制御するための、第2の命令セットのプログラム命令に応答し、Mは、正の整数値であり、前記複数のレジスタ手段の少なくともいくつかは、前記第1の命令セットのプログラム命令および前記第2の命令セットのプログラム命令により共有され、
    前記命令デコーディング手段は、前記第1の命令セットのプログラム命令による使用に提示されるNビットアーキテクチャレジスタ手段の第1のセットの一部として前記複数のレジスタ手段のどれにアクセスするかを決定する時に、前記第1の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
    前記命令デコーディング手段は、前記第2の命令セットのプログラム命令による使用に提示されるMビットアーキテクチャレジスタ手段の第2のセットの一部として前記複数のレジスタ手段のどれにアクセスするかを決定する時に、前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
    前記命令デコーディング手段は、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタ手段との間の第1のマッピングと、前記第2の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタ手段との間の第2のマッピングとを提供するように構成され、前記第1のマッピングは、前記第2のマッピングとは異なり、前記第1のマッピングおよび前記第2のマッピングは、前記第1のセットの各レジスタ手段が、前記第2のセットのレジスタ手段に対し所定の1対1のマッピングを有し、前記第2のセットの前記レジスタ手段と、前記複数のレジスタ手段内の共通レジスタ手段の共有部分を共有し(前記共通レジスタ手段の非共有部分は前記第1の命令セットを使用することによってはアクセス不可である)、前記第2のセットのレジスタ手段を使用してアクセス可能である値を格納するようなマッピングであ
    前記装置は、前記第1の命令セットのプログラム命令を実行する時に、複数の例外状態のうちの1つにおいて動作するように構成され、前記命令デコーディング手段は、前記複数のレジスタのどれにアクセスするかを決定する時に、前記複数の例外状態のうちの現在の例外状態とともに、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードするように構成され、前記第1のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第1のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
    前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
    前記所定の1対1のマッピングが為されている前記第1のセットのレジスタと前記第2のセットのレジスタのある範囲について、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が1ずつ増える昇順であるのに対し、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている、前記第1のセットのレジスタの一群の各レジスタにマッピングされている前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、2つの値が交互に現れるものであるように、前記命令デコーディング手段は前記マッピングを提供する、データ処理装置。
  11. データ処理方法であって、
    複数のレジスタ内で処理対象のデータ値を格納するステップと、
    プログラム命令のストリームをデコードするステップと、
    前記デコードするステップによりデコードされる前記プログラム命令に基づいて制御されるデータ処理操作であって、前記複数のレジスタに格納されたデータ値に対するデータ処理操作を実行するステップとを含み、
    前記デコードするステップは、前記複数のレジスタにより提供されるNビットアーキテクチャレジスタを使用して前記データ処理操作を実行する前記ステップを制御するための、第1の命令セットのプログラム命令に応答し、Nは、正の整数値であり、
    前記デコードするステップは、前記複数のレジスタにより提供されるMビットアーキテクチャレジスタを使用して前記データ処理操作を実行する前記ステップを制御するための、第2の命令セットのプログラム命令に応答し、Mは、正の整数値であり、前記複数のレジスタの少なくともいくつかは、前記第1の命令セットのプログラム命令および前記第2の命令セットのプログラム命令により共有され、
    前記デコードするステップは、前記第1の命令セットのプログラム命令による使用に提示されるNビットアーキテクチャレジスタの第1のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第1の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、
    前記デコードするステップは、前記第2の命令セットのプログラム命令による使用に提示されるMビットアーキテクチャレジスタの第2のセットの一部として前記複数のレジスタのどれにアクセスするかを決定する時に、前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードし、
    前記デコードするステップは、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第1のマッピングと、前記第2の命令セットのプログラム命令内の前記レジスタ指定フィールドの値と、前記複数のレジスタとの間の第2のマッピングとを提供し、前記第1のマッピングは、前記第2のマッピングとは異なり、前記第1のマッピングおよび前記第2のマッピングは、前記第1のセットの各レジスタが、前記第2のセットのレジスタに対し所定の1対1のマッピングを有し、前記第2のセットの前記レジスタと、前記複数のレジスタ内の共通レジスタの共有部分を共有し(前記共通レジスタの非共有部分は前記第1の命令セットを使用することによってはアクセス不可である)、前記第2のセットのレジスタを使用してアクセス可能である値を格納するようなマッピングであ
    前記第1の命令セットのプログラム命令を実行する時に、複数の例外状態のうちの1つにおいて動作し、前記デコードするステップは、前記複数のレジスタのどれにアクセスするかを決定する時に、前記複数の例外状態のうちの現在の例外状態とともに、前記第1の命令セットのプログラム命令内の前記レジスタ指定フィールドをデコードし、前記第1のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第1のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
    前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
    前記所定の1対1のマッピングが為されている前記第1のセットのレジスタと前記第2のセットのレジスタのある範囲について、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が1ずつ増える昇順であるのに対し、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている、前記第1のセットのレジスタの一群の各レジスタにマッピングされている前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、2つの値が交互に現れるものであるように、前記デコードするステップは前記マッピングを提供する、データ処理方法。
  12. M=2Nである、請求項11に記載の方法。
  13. 前記第1のセットおよび前記第2のセットは、同数のレジスタを含む、請求項11または12に記載の方法。
  14. 前記複数のレジスタは、複数のMビットレジスタを備え、前記第1の命令セットのプログラム命令は、前記Mビットレジスタの最下位Nビットにアクセスするためのものである、請求項1112および13のいずれか一項に記載の方法
  15. N=32である、請求項11から14のいずれか一項に記載の方法。
  16. 前記複数のレジスタは、ヌル値レジスタを含み、
    前記第2の命令セットのプログラム命令に基づいて前記ヌル値レジスタを読み
    出すときには、前記ヌル値レジスタは常にヌル値を返すものである、請求項11から15のいずれか一項に記載の方法。
  17. 前記レジスタの第1のセットは、前記ヌル値レジスタにマッピングされたアーキテクチャレジスタを有さない、請求項16に記載の方法。
  18. 前記第1の命令セットのプログラム命令を実行する時に、プログラムカウンタレジスタは、実行されているプログラム命令のメモリアドレスを示す値を格納し、前記プログラムカウンタレジスタは、前記第2のセットのレジスタにマッピングされるレジスタの前記第1のセットの外にある、請求項11から17のいずれか一項に記載の方法。
  19. 前記共通レジスタが前記第1の命令セットのプログラム命令によりアクセスされる時に、前記非共有部分をゼロ化するか、前記非共有部分の値を不変のままとするか、または、前記非共有部分の値を未定義値に設定するかのうちのいずれか1つを行う、請求項11から18のいずれか一項に記載の方法
  20. データ処理装置上で実行されるコンピュータプログラムにより提供される仮想機械であって、請求項1からのいずれか一項に記載の装置に対応する命令実行環境を提供する仮想機械。
  21. データ処理装置であって、
    処理対象のデータ値を格納するように構成される複数のレジスタと、
    前記複数のレジスタに結合され、前記複数のレジスタに格納されたデータ値に対してデータ処理操作を実行するように構成される処理回路と、
    前記処理回路に結合され、前記データ処理操作を実行するように前記処理回路を制御するためのプログラム命令のストリームに応答する、命令デコーダと、を備え、
    前記命令デコーダは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第1のセットを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第1の命令セットのプログラム命令に応答し、
    前記装置は、前記第1の命令セットのプログラム命令を実行する時に、複数の例外状態のうちの1つにおいて動作するように構成され、前記命令デコーダは、どのアーキテクチャレジスタを使用するかを決定する時に、前記複数の例外状態のうちの現在の例外状態とともに、前記第1の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
    前記命令デコーダは、前記複数のレジスタにより提供されアーキテクチャレジスタの第2のセットを使用して前記データ処理操作を実行するように前記処理回路を制御するための、第2の命令セットのプログラム命令に応答し、
    前記第1のセットのアーキテクチャレジスタの各レジスタと、前記第2のセットのアーキテクチャレジスタの各レジスタが、所定の1対1のマッピングを有することにより、前記第1の命令セットのプログラム命令と前記第2の命令セットのプログラム命令が前記複数のレジスタの少なくともいくつかを共有するものであり、
    前記命令デコーダは、どのアーキテクチャレジスタを使用するかを決定する時に、例外状態に依存せずに前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
    前記第1のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第1のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
    前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
    前記所定の1対1のマッピングが為されている前記第1のセットのレジスタと前記第2のセットのレジスタのある範囲について、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が1ずつ増える昇順であるのに対し、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている、前記第1のセットのレジスタの一群の各レジスタにマッピングされている前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、2つの値が交互に現れるものであるように、前記命令デコーダはマッピングを提供する、データ処理装置。
  22. 前記第1のセットおよび前記第2のセットは、同数のレジスタを含む、請求項21に記載の装置。
  23. 前記複数のレジスタは、複数の2Nビットレジスタを備え、前記第1の命令セットのプログラム命令は、前記2Nビットレジスタの最下位Nビットにアクセスするためのものである、請求項21または22に記載の装置。
  24. N=32である、請求項23に記載の装置。
  25. 前記複数のレジスタは、ヌル値レジスタを含み、
    前記第2の命令セットのプログラム命令に基づいて前記ヌル値レジスタを読み出すときには、前記ヌル値レジスタは常にヌル値を返すものである、請求項21から24のいずれか一項に記載の装置。
  26. 前記第1のセットは、前記ヌル値レジスタに対応するアーキテクチャレジスタを有さない、請求項25に記載の装置。
  27. 前記第1の命令セットのプログラム命令を実行する時に、プログラムカウンタレジスタは、実行されているプログラム命令のメモリアドレスを示す値を格納し、前記プログラムカウンタレジスタは、前記第2のセットのレジスタに対応する前記第1のセットの外にある、請求項21から26のいずれか一項に記載の装置。
  28. データ処理装置であって、
    処理対象のデータ値を格納するための複数のレジスタ手段と、
    前記複数のレジスタ手段に格納されたデータ値に対してデータ処理操作を実行するための処理手段と、
    プログラム命令のストリームに応答して前記データ処理操作を実行するように前記処理手段を制御するための命令デコーダ手段と、を備え、
    前記命令デコーダ手段は、前記複数のレジスタ手段により提供されるアーキテクチャレジスタの第1のセットを使用して前記データ処理操作を実行するように前記処理手段を制御するための、第1の命令セットのプログラム命令に応答し、
    前記装置は、前記第1の命令セットのプログラム命令を実行する時に、複数の例外状態の1つにおいて動作するように構成され、前記命令デコーダ手段は、どのアーキテクチャレジスタを使用するかを決定する時に、前記複数の例外状態のうちの現在の例外状態とともに、前記第1の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
    前記命令デコーダ手段は、前記複数のレジスタ手段により提供されるアーキテクチャレジスタの第2のセットを使用して前記データ処理操作を実行するように前記処理手段を制御するための、第2の命令セットのプログラム命令に応答し、
    前記第1のセットのアーキテクチャレジスタの各レジスタと、前記第2のセットのアーキテクチャレジスタの各レジスタが、所定の1対1のマッピングを有することにより、前記第1の命令セットのプログラム命令と前記第2の命令セットのプログラム命令が前記複数のレジスタ手段の少なくともいくつかを共有するものであり、
    前記命令デコーダ手段は、アーキテクチャレジスタのどれを使用するかを決定する時に、例外状態に依存せずに前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするように構成され、
    前記第1のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第1のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
    前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
    前記所定の1対1のマッピングが為されている前記第1のセットのレジスタと前記第2のセットのレジスタのある範囲について、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が1ずつ増える昇順であるのに対し、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている、前記第1のセットのレジスタの一群の各レジスタにマッピングされている前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、2つの値が交互に現れるものであるように、前記命令デコーダ手段はマッピングを提供する、データ処理装置。
  29. データ処理方法であって、
    複数のレジスタ内で処理対象のデータ値を格納するステップと、
    プログラム命令のストリームをデコードするステップと、
    前記デコードするステップによりデコードされる前記プログラム命令に基づいて制御されるデータ処理操作であって、前記複数のレジスタに格納されたデータ値に対するデータ処理操作を実行するステップと、を含み、
    前記デコードするステップは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第1のセットを使用して前記データ処理操作を実行する前記ステップを制御するための、第1の命令セットのプログラム命令に応答し、
    前記第1の命令セットのプログラム命令を実行する時に、複数の例外状態のうちの1つにおいて動作し、
    前記デコードするステップは、どのアーキテクチャレジスタを使用するかを決定するために、前記複数の例外状態のうちの現在の例外状態とともに、前記第1の命令セットのプログラム命令内のレジスタ指定フィールドをデコードするステップを含み、
    前記デコードするステップは、前記複数のレジスタにより提供されるアーキテクチャレジスタの第2のセットを使用して前記データ処理操作を実行する前記ステップを制御するための、第2の命令セットのプログラム命令に応答し、
    前記第1のセットのアーキテクチャレジスタの各レジスタと、前記第2のセットのアーキテクチャレジスタの各レジスタが、所定の1対1のマッピングを有することにより、前記第1の命令セットのプログラム命令と前記第2の命令セットのプログラム命令が前記複数のレジスタの少なくともいくつかを共有するものであり、
    前記デコードするステップは、どのアーキテクチャレジスタを使用するかを決定する時に、例外状態に依存せずに前記第2の命令セットのプログラム命令内のレジスタ指定フィールドをデコード
    前記第1のセット内のレジスタのグループであって、当該グループに含まれる各レジスタは、互いに、当該レジスタにマッピングされる、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は同じであるが、当該レジスタにマッピングされる、例外状態は異なるものである、前記第1のセット内のレジスタのグループにより、レジスタのバンクグループが形成され、
    前記レジスタのバンクグループ内の各レジスタにマッピングされている、前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値と、前記レジスタの同じバンクグループ内の各レジスタにマッピングされている、前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値について、最下位ビットの値は同じであり、
    前記所定の1対1のマッピングが為されている前記第1のセットのレジスタと前記第2のセットのレジスタのある範囲について、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている前記第2の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値が1ずつ増える昇順であるのに対し、その範囲内の第2のセットのレジスタの一群の各レジスタにマッピングされている、前記第1のセットのレジスタの一群の各レジスタにマッピングされている前記第1の命令セットの前記プログラム命令内の前記レジスタ指定フィールドの値は、2つの値が交互に現れるものであるように、前記デコードするステップはマッピングを提供する、データ処理方法。
  30. 前記第1のセットおよび前記第2のセットは、同数のレジスタを含む、請求項29に記載の方法。
  31. 前記複数のレジスタは、複数の2Nビットレジスタを備え、前記第1の命令セットのプログラム命令は、前記2Nビットレジスタの最下位Nビットにアクセスするためのものである、請求項29または30に記載の方法。
  32. N=32である、請求項31に記載の方法。
  33. 前記複数のレジスタは、ヌル値レジスタを含み、
    前記第2の命令セットのプログラム命令に基づいて前記ヌル値レジスタを読み出すときには、前記ヌル値レジスタは常にヌル値を返すものである、請求項29から32のいずれか一項に記載の方法。
  34. 前記第1のセットは、前記ヌル値レジスタに対応するアーキテクチャレジスタを有さない、請求項33に記載の方法。
  35. 前記第1の命令セットのプログラム命令を実行する時に、プログラムカウンタレジスタは、実行されているプログラム命令のメモリアドレスを示す値を格納し、前記プログラムカウンタレジスタは、前記第2のセットのレジスタに対応する前記第1のセットの外にある、請求項29から34のいずれか一項に記載の方法。
  36. データ処理装置上で実行されるコンピュータプログラムにより提供される仮想機械であって、請求項21から27のいずれか一項に記載の装置に対応する命令実行環境を提供する仮想機械。
JP2012557603A 2010-03-15 2011-02-16 複数の命令セットにより使用されるレジスタ間のマッピング Active JP5646656B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1004293.5 2010-03-15
GB1004293.5A GB2478726B (en) 2010-03-15 2010-03-15 Mapping between registers used by multiple instruction sets
PCT/GB2011/050306 WO2011114121A1 (en) 2010-03-15 2011-02-16 Mapping between registers used by multiple instruction sets

Publications (2)

Publication Number Publication Date
JP2013522749A JP2013522749A (ja) 2013-06-13
JP5646656B2 true JP5646656B2 (ja) 2014-12-24

Family

ID=42261608

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012557603A Active JP5646656B2 (ja) 2010-03-15 2011-02-16 複数の命令セットにより使用されるレジスタ間のマッピング

Country Status (10)

Country Link
US (1) US9092215B2 (ja)
EP (1) EP2524303B1 (ja)
JP (1) JP5646656B2 (ja)
KR (1) KR101812569B1 (ja)
CN (1) CN103098020B (ja)
GB (1) GB2478726B (ja)
IL (1) IL220987A (ja)
MY (1) MY156118A (ja)
TW (1) TWI489386B (ja)
WO (1) WO2011114121A1 (ja)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9631528B2 (en) * 2009-09-03 2017-04-25 Clean Emissions Technologies, Inc. Vehicle reduced emission deployment
US9158541B2 (en) * 2010-11-03 2015-10-13 Apple Inc. Register renamer that handles multiple register sizes aliased to the same storage locations
US9032189B2 (en) 2011-04-07 2015-05-12 Via Technologies, Inc. Efficient conditional ALU instruction in read-port limited register file microprocessor
US8880857B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Conditional ALU instruction pre-shift-generated carry flag propagation between microinstructions in read-port limited register file microprocessor
US9274795B2 (en) 2011-04-07 2016-03-01 Via Technologies, Inc. Conditional non-branch instruction prediction
US9645822B2 (en) 2011-04-07 2017-05-09 Via Technologies, Inc Conditional store instructions in an out-of-order execution microprocessor
US9292470B2 (en) 2011-04-07 2016-03-22 Via Technologies, Inc. Microprocessor that enables ARM ISA program to access 64-bit general purpose registers written by x86 ISA program
US9141389B2 (en) 2011-04-07 2015-09-22 Via Technologies, Inc. Heterogeneous ISA microprocessor with shared hardware ISA registers
US9336180B2 (en) 2011-04-07 2016-05-10 Via Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
US8924695B2 (en) 2011-04-07 2014-12-30 Via Technologies, Inc. Conditional ALU instruction condition satisfaction propagation between microinstructions in read-port limited register file microprocessor
US8880851B2 (en) 2011-04-07 2014-11-04 Via Technologies, Inc. Microprocessor that performs X86 ISA and arm ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US9043580B2 (en) 2011-04-07 2015-05-26 Via Technologies, Inc. Accessing model specific registers (MSR) with different sets of distinct microinstructions for instructions of different instruction set architecture (ISA)
US9146742B2 (en) 2011-04-07 2015-09-29 Via Technologies, Inc. Heterogeneous ISA microprocessor that preserves non-ISA-specific configuration state when reset to different ISA
US9898291B2 (en) 2011-04-07 2018-02-20 Via Technologies, Inc. Microprocessor with arm and X86 instruction length decoders
US9128701B2 (en) 2011-04-07 2015-09-08 Via Technologies, Inc. Generating constant for microinstructions from modified immediate field during instruction translation
US9244686B2 (en) 2011-04-07 2016-01-26 Via Technologies, Inc. Microprocessor that translates conditional load/store instructions into variable number of microinstructions
US9378019B2 (en) 2011-04-07 2016-06-28 Via Technologies, Inc. Conditional load instructions in an out-of-order execution microprocessor
US9176733B2 (en) 2011-04-07 2015-11-03 Via Technologies, Inc. Load multiple and store multiple instructions in a microprocessor that emulates banked registers
US9317288B2 (en) 2011-04-07 2016-04-19 Via Technologies, Inc. Multi-core microprocessor that performs x86 ISA and ARM ISA machine language program instructions by hardware translation into microinstructions executed by common execution pipeline
US8914615B2 (en) * 2011-12-02 2014-12-16 Arm Limited Mapping same logical register specifier for different instruction sets with divergent association to architectural register file using common address format
US9430243B2 (en) * 2012-04-30 2016-08-30 Apple Inc. Optimizing register initialization operations
EP2704001B1 (en) * 2012-08-31 2016-10-19 VIA Technologies, Inc. Microprocessor that makes 64-bit general purpose registers available in MSR address space while operating in non-64-bit mode
EP3179363B1 (en) * 2012-08-31 2019-04-24 VIA Technologies, Inc. Microprocessor that enables arm isa program to access general purpose registers written by x86 isa program
US10228941B2 (en) * 2013-06-28 2019-03-12 Intel Corporation Processors, methods, and systems to access a set of registers as either a plurality of smaller registers or a combined larger register
US9588774B2 (en) 2014-03-18 2017-03-07 International Business Machines Corporation Common boot sequence for control utility able to be initialized in multiple architectures
US9582295B2 (en) 2014-03-18 2017-02-28 International Business Machines Corporation Architectural mode configuration
US9916185B2 (en) 2014-03-18 2018-03-13 International Business Machines Corporation Managing processing associated with selected architectural facilities
KR102180972B1 (ko) * 2014-04-23 2020-11-20 에스케이하이닉스 주식회사 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
GB2538237B (en) * 2015-05-11 2018-01-10 Advanced Risc Mach Ltd Available register control for register renaming
GB2546465B (en) * 2015-06-05 2018-02-28 Advanced Risc Mach Ltd Modal processing of program instructions
GB2540971B (en) * 2015-07-31 2018-03-14 Advanced Risc Mach Ltd Graphics processing systems
US20170046160A1 (en) * 2015-08-14 2017-02-16 Qualcomm Incorporated Efficient handling of register files
GB2547912B (en) * 2016-03-02 2019-01-30 Advanced Risc Mach Ltd Register access control

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0827716B2 (ja) 1985-10-25 1996-03-21 株式会社日立製作所 データ処理装置及びデータ処理方法
GB2289354B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
GB2349252B (en) * 1996-06-10 2001-02-14 Lsi Logic Corp An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
US6499046B1 (en) 1999-05-20 2002-12-24 International Business Machines Corporation Saturation detection apparatus and method therefor
US6981132B2 (en) * 2000-08-09 2005-12-27 Advanced Micro Devices, Inc. Uniform register addressing using prefix byte
US20030126520A1 (en) * 2001-12-31 2003-07-03 Globespanvirata System and method for separating exception vectors in a multiprocessor data processing system
JP2004157636A (ja) * 2002-11-05 2004-06-03 Renesas Technology Corp データ処理装置
EP1447742A1 (en) * 2003-02-11 2004-08-18 STMicroelectronics S.r.l. Method and apparatus for translating instructions of an ARM-type processor into instructions for a LX-type processor
TWI224281B (en) * 2003-07-16 2004-11-21 Sunplus Technology Co Ltd A processor executing script with different length and method thereof
TW200511111A (en) * 2003-07-30 2005-03-16 Koninkl Philips Electronics Nv Microcontroller with an interrupt structure having programmable priority levels with each priority level associated with a different register set
US7263621B2 (en) * 2004-11-15 2007-08-28 Via Technologies, Inc. System for reducing power consumption in a microprocessor having multiple instruction decoders that are coupled to selectors receiving their own output as feedback
CN101882456B (zh) 2005-08-09 2012-11-28 松下电器产业株式会社 记录介质,重放设备、方法及程序
US8245016B2 (en) * 2007-09-28 2012-08-14 International Business Machines Corporation Multi-threaded processing
GB2478731B (en) * 2010-03-15 2013-08-21 Advanced Risc Mach Ltd Operand size control

Also Published As

Publication number Publication date
TW201203110A (en) 2012-01-16
EP2524303A1 (en) 2012-11-21
TWI489386B (zh) 2015-06-21
MY156118A (en) 2016-01-15
US20110225397A1 (en) 2011-09-15
CN103098020A (zh) 2013-05-08
CN103098020B (zh) 2016-04-27
GB2478726B (en) 2013-12-25
WO2011114121A1 (en) 2011-09-22
KR101812569B1 (ko) 2017-12-27
IL220987A0 (en) 2012-09-24
EP2524303B1 (en) 2019-08-07
US9092215B2 (en) 2015-07-28
GB201004293D0 (en) 2010-04-28
JP2013522749A (ja) 2013-06-13
KR20130016246A (ko) 2013-02-14
IL220987A (en) 2016-05-31
GB2478726A (en) 2011-09-21

Similar Documents

Publication Publication Date Title
JP5646656B2 (ja) 複数の命令セットにより使用されるレジスタ間のマッピング
US9804851B2 (en) Operand size control
US8078828B1 (en) Memory mapped register file
JP5808348B2 (ja) マシン状態に基づいた命令の分割
KR101597774B1 (ko) 마스킹된 전체 레지스터 액세스들을 이용한 부분적 레지스터 액세스들을 구현하기 위한 프로세서들, 방법들 및 시스템들
IL256163A (en) A device and method for transferring multiple data structures between memory and multiple vector registers
JP6849275B2 (ja) インデックスおよび即値を用いてベクトル置換を実行するための方法および装置
GB2529777A (en) Processor with granular add immediates capability and methods
KR20110055629A (ko) 단일 명령 다중 데이터(simd)데이터 처리기에서 확장된 어드레싱 모드들의 제공
CN107851013B (zh) 数据处理装置和方法
KR20180066146A (ko) 벡터 데이터 전송 명령어
WO2012136975A1 (en) A data processing apparatus and method for performing vector operations
JP2018506096A (ja) ベクトルビットシャッフルを実行するための方法および装置
KR20180067582A (ko) 벡터 로드 명령어
KR101528130B1 (ko) 권한 레벨에 관계없는 세그먼트 레지스터 판독 및 기입용 시스템, 장치, 및 방법
CN112148369A (zh) 用于远程处理器的异构cpuid伪装
US11451241B2 (en) Setting values of portions of registers based on bit values
JP2017538215A (ja) 逆分離演算を実行するための命令及びロジック
EP3329361B1 (en) Vector operand bitsize control
JP2018500666A (ja) ベクトルビットギャザーを実行するための方法および装置
US20210132985A1 (en) Shadow latches in a shadow-latch configured register file for thread storage
TW202307653A (zh) 陳述技術
KR20070092093A (ko) 다중 마이크로컨트롤러 시스템, 명령어, 및 그의 명령어실행 방법

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140609

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140909

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141105

R150 Certificate of patent or registration of utility model

Ref document number: 5646656

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250