JPH1097421A - 圧縮命令を実行するように構成されたマイクロプロセッサにおけるメモリをアドレスする方法および装置 - Google Patents
圧縮命令を実行するように構成されたマイクロプロセッサにおけるメモリをアドレスする方法および装置Info
- Publication number
- JPH1097421A JPH1097421A JP9134170A JP13417097A JPH1097421A JP H1097421 A JPH1097421 A JP H1097421A JP 9134170 A JP9134170 A JP 9134170A JP 13417097 A JP13417097 A JP 13417097A JP H1097421 A JPH1097421 A JP H1097421A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- register
- immediate field
- compressed
- field
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/22—Microcontrol or microprogram arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
- G06F9/30178—Runtime instruction translation, e.g. macros of compressed or encrypted instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30156—Special purpose encoding of instructions, e.g. Gray coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/3016—Decoding the operand specifier, e.g. specifier format
- G06F9/30167—Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
- G06F9/30185—Instruction operation extension or modification according to one or more bits in the instruction, e.g. prefix, sub-opcode
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
(57)【要約】
【課題】 マイクロプロセッサのデザインにおいて、命
令セットが必要とするメモリ帯域幅を低減し、命令が占
有するメモリ量を減少させる。 【解決手段】 対応する非圧縮命令セット(圧縮されて
いない命令セット)のサブセットからなる圧縮命令セッ
ト(圧縮された命令セット)をフェッチするように構成
されている。非圧縮命令セットはRISC命令セットであ
り、マイクロプロセッサはRISCアーキテクチャに典型的
に関連する高速動作およびより簡単な実行リソースを享
受することができる。メモリから圧縮命令をフェッチ
し、マイクロプロセッサ内で該命令の圧縮を戻す(デコ
ンプレスする)。
令セットが必要とするメモリ帯域幅を低減し、命令が占
有するメモリ量を減少させる。 【解決手段】 対応する非圧縮命令セット(圧縮されて
いない命令セット)のサブセットからなる圧縮命令セッ
ト(圧縮された命令セット)をフェッチするように構成
されている。非圧縮命令セットはRISC命令セットであ
り、マイクロプロセッサはRISCアーキテクチャに典型的
に関連する高速動作およびより簡単な実行リソースを享
受することができる。メモリから圧縮命令をフェッチ
し、マイクロプロセッサ内で該命令の圧縮を戻す(デコ
ンプレスする)。
Description
【0001】
【発明の属する技術分野】本発明は、マイクロプロセッ
サの分野に関し、更に詳しくは、マイクロプロセッサの
命令セットの最適化に関する。
サの分野に関し、更に詳しくは、マイクロプロセッサの
命令セットの最適化に関する。
【0002】
【従来の技術】マイクロプロセッサのアーキテクチャ
は、一般に複雑/複合命令セット計算(CISC)アーキテ
クチャまたは縮小命令セット計算(RISC)アーキテクチ
ャとして分類される。CISCアーキテクチャは高レベルの
比較的複雑な命令を有する命令セットを特定している。
しばしば、CISCアーキテクチャを実施するマイクロプロ
セッサは、複雑な命令をハードウェアでより容易に実施
しうる多数のより簡易なオペレーションに分解する。オ
ンチップリードオンリーメモリ(ROM)に記憶された
マイクロコード化されたルーチンをうまく使用して、あ
る命令に対応する分解されたオペレーションを生成して
いる。最近、複雑な命令をより簡単なオペレーションに
分離するハードウェアデコーダがあるCISCマイクロプロ
セッサ設計者によって採用されている。x86マイクロ
プロセッサアーキテクチャはCISCアーキテクチャの一例
である。
は、一般に複雑/複合命令セット計算(CISC)アーキテ
クチャまたは縮小命令セット計算(RISC)アーキテクチ
ャとして分類される。CISCアーキテクチャは高レベルの
比較的複雑な命令を有する命令セットを特定している。
しばしば、CISCアーキテクチャを実施するマイクロプロ
セッサは、複雑な命令をハードウェアでより容易に実施
しうる多数のより簡易なオペレーションに分解する。オ
ンチップリードオンリーメモリ(ROM)に記憶された
マイクロコード化されたルーチンをうまく使用して、あ
る命令に対応する分解されたオペレーションを生成して
いる。最近、複雑な命令をより簡単なオペレーションに
分離するハードウェアデコーダがあるCISCマイクロプロ
セッサ設計者によって採用されている。x86マイクロ
プロセッサアーキテクチャはCISCアーキテクチャの一例
である。
【0003】逆に、RISCアーキテクチャは、低レベルの
比較的簡単な命令を有する命令セットを特定している。
典型的には、命令セット内の各命令はハードウェアで直
接実施される。CISC法に関連する複雑さを除去して、更
に進んだ実施方法を設計することが可能である。更に、
命令を実行するのに使用されるハードウェアがより簡単
になるので、高い頻度で設計をより容易に達成すること
ができる。典型的なRISCアーキテクチャはMIPS RISCア
ーキテクチャである。
比較的簡単な命令を有する命令セットを特定している。
典型的には、命令セット内の各命令はハードウェアで直
接実施される。CISC法に関連する複雑さを除去して、更
に進んだ実施方法を設計することが可能である。更に、
命令を実行するのに使用されるハードウェアがより簡単
になるので、高い頻度で設計をより容易に達成すること
ができる。典型的なRISCアーキテクチャはMIPS RISCア
ーキテクチャである。
【0004】必ずしも確固とした特徴ではないが、可変
長命令セットは多くの場合CISCアーキテクチャに関連し
ていると考えられており、固定長命令セットはRISCアー
キテクチャに関連している。可変長命令セットは、命令
のアドレシングモードを特定するためのみならず、命令
セット内の種々の命令を符号化するのに異なるビット数
を使用している。一般的に言えば、可変長命令セットは
可能な限り効率的に命令情報を各命令を表すバイトにパ
ックするようになっている。逆に、固定長命令セットは
各命令に対して同じビット数を使用している(ビット数
は典型的には各命令が完全に固定数のバイトを占有する
ように8の倍数である)。典型的には、固定フィールド
の情報を有する小数の命令フォーマットが定義されてい
る。これにより、各命令の解読は、各固定フィールドに
対応するビットをそのフィールドを解読するように設計
されたロジックにルーティングすることへと簡略化され
る。
長命令セットは多くの場合CISCアーキテクチャに関連し
ていると考えられており、固定長命令セットはRISCアー
キテクチャに関連している。可変長命令セットは、命令
のアドレシングモードを特定するためのみならず、命令
セット内の種々の命令を符号化するのに異なるビット数
を使用している。一般的に言えば、可変長命令セットは
可能な限り効率的に命令情報を各命令を表すバイトにパ
ックするようになっている。逆に、固定長命令セットは
各命令に対して同じビット数を使用している(ビット数
は典型的には各命令が完全に固定数のバイトを占有する
ように8の倍数である)。典型的には、固定フィールド
の情報を有する小数の命令フォーマットが定義されてい
る。これにより、各命令の解読は、各固定フィールドに
対応するビットをそのフィールドを解読するように設計
されたロジックにルーティングすることへと簡略化され
る。
【0005】固定長命令セットの各命令は固定数のバイ
トから構成されているので、命令を見つけることも簡単
である。ある特定の命令に続く多くの命令のロケーショ
ンはその特定の命令のロケーションによって示すことが
できる(すなわち、その特定の命令のロケーションから
の一定のオフセットとして)。逆に、第2の可変長命令
を見つけるには第1の可変長命令の終りを見つけること
が必要であり、第3の可変長命令を見つけるには第2の
可変長命令の終りを見つけることが必要であるなどとい
うことになる。更に、可変長命令には固定長命令がもつ
固定フィールド構造がない。固定フィールドがないこと
により解読は更に複雑になる。
トから構成されているので、命令を見つけることも簡単
である。ある特定の命令に続く多くの命令のロケーショ
ンはその特定の命令のロケーションによって示すことが
できる(すなわち、その特定の命令のロケーションから
の一定のオフセットとして)。逆に、第2の可変長命令
を見つけるには第1の可変長命令の終りを見つけること
が必要であり、第3の可変長命令を見つけるには第2の
可変長命令の終りを見つけることが必要であるなどとい
うことになる。更に、可変長命令には固定長命令がもつ
固定フィールド構造がない。固定フィールドがないこと
により解読は更に複雑になる。
【0006】不幸なことに、固定長命令セットを使用し
ているRISCアーキテクチャは、可変長命令セットを使用
しているCISCアーキテクチャには一般に見られない問題
をかかえている。各命令は固定の長さであるので、最も
簡単な命令のいくつかは該命令に関する情報を伝えない
バイトを占有することによりメモリを実際に浪費してい
る。例えば、多くの固定長命令セットの特定の命令の
「ドントケア(don't care)」フィールドとして特定さ
れるフィールドはメモリを浪費している。対照的に、可
変長命令セットは命令情報を最小数のバイトにパックす
ることができる。
ているRISCアーキテクチャは、可変長命令セットを使用
しているCISCアーキテクチャには一般に見られない問題
をかかえている。各命令は固定の長さであるので、最も
簡単な命令のいくつかは該命令に関する情報を伝えない
バイトを占有することによりメモリを実際に浪費してい
る。例えば、多くの固定長命令セットの特定の命令の
「ドントケア(don't care)」フィールドとして特定さ
れるフィールドはメモリを浪費している。対照的に、可
変長命令セットは命令情報を最小数のバイトにパックす
ることができる。
【0007】更に、RISCアーキテクチャはCISCアーキテ
クチャによって使用されるより複雑な命令を持っていな
いので、RISC命令でコード化されるプログラムに使用さ
れる命令の数はCISC命令でコード化される同じプログラ
ムに使用される命令の数よりも多い。CISCバージョンの
プログラムでコード化されたより複雑な命令の各々はRI
SCバージョンのプログラムにおいては多数の命令に置き
換えられる。従って、CISCバージョンのプログラムはRI
SCバージョンのプログラムよりもメモリがかなり少ない
ことが多い。従って、CISCバージョンのプログラムに比
べてRISCバージョンのプログラムの方が、プログラムを
記憶する装置、メモリおよびマイクロプロセッサ間によ
り多くの帯域幅を必要とする。
クチャによって使用されるより複雑な命令を持っていな
いので、RISC命令でコード化されるプログラムに使用さ
れる命令の数はCISC命令でコード化される同じプログラ
ムに使用される命令の数よりも多い。CISCバージョンの
プログラムでコード化されたより複雑な命令の各々はRI
SCバージョンのプログラムにおいては多数の命令に置き
換えられる。従って、CISCバージョンのプログラムはRI
SCバージョンのプログラムよりもメモリがかなり少ない
ことが多い。従って、CISCバージョンのプログラムに比
べてRISCバージョンのプログラムの方が、プログラムを
記憶する装置、メモリおよびマイクロプロセッサ間によ
り多くの帯域幅を必要とする。
【0008】
【発明の概要】上述した問題は、本発明に係わるマイク
ロプロセッサによって大部分解消される。本マイクロプ
ロセッサは、対応する非圧縮命令セット(圧縮されてい
ない命令セット)のサブセットからなる圧縮命令セット
(圧縮された命令セット)をフェッチするように構成さ
れている。非圧縮命令セットはRISC命令セットであり、
マイクロプロセッサはRISCアーキテクチャに典型的に関
連する高速動作およびより簡単な実行リソースを享受す
ることができる。メモリから圧縮命令をフェッチし、マ
イクロプロセッサ内で該命令の圧縮を戻す(デコンプレ
ス)ことにより、所与の性能(例えば、1秒間に実行さ
れる命令)を達成するのに必要なメモリ帯域幅を有利に
低減する。更に、圧縮命令によって占有されるメモリ量
は対応する非圧縮命令が占有するものよりも比較的少な
い。
ロプロセッサによって大部分解消される。本マイクロプ
ロセッサは、対応する非圧縮命令セット(圧縮されてい
ない命令セット)のサブセットからなる圧縮命令セット
(圧縮された命令セット)をフェッチするように構成さ
れている。非圧縮命令セットはRISC命令セットであり、
マイクロプロセッサはRISCアーキテクチャに典型的に関
連する高速動作およびより簡単な実行リソースを享受す
ることができる。メモリから圧縮命令をフェッチし、マ
イクロプロセッサ内で該命令の圧縮を戻す(デコンプレ
ス)ことにより、所与の性能(例えば、1秒間に実行さ
れる命令)を達成するのに必要なメモリ帯域幅を有利に
低減する。更に、圧縮命令によって占有されるメモリ量
は対応する非圧縮命令が占有するものよりも比較的少な
い。
【0009】ここに説明する典型的な圧縮命令セット
は、可変長命令セットである。一実施例では、2つの異
なる命令長、すなわち16ビットと32ビットの命令が
ある。32ビットの命令は拡張オペコード(演算符号)
を使用してコード化される。この拡張オペコードの使用
はフェッチされつつある命令が拡張(例えば、32ビッ
ト)命令であることを示している。命令は16ビット量
としてフェッチすることができる。拡張オペコードを有
するある16ビット命令がフェッチされると、続く16
ビット命令は拡張オペコードを有する命令と連結され、
32ビットの拡張命令を形成する。拡張命令は非拡張命
令に対して機能が増大し、更に圧縮命令セットの柔軟性
およびパワーを増強する。これにより、拡張命令に設け
られている機能を使用するルーチンを、圧縮命令を使用
してコード化することができる。
は、可変長命令セットである。一実施例では、2つの異
なる命令長、すなわち16ビットと32ビットの命令が
ある。32ビットの命令は拡張オペコード(演算符号)
を使用してコード化される。この拡張オペコードの使用
はフェッチされつつある命令が拡張(例えば、32ビッ
ト)命令であることを示している。命令は16ビット量
としてフェッチすることができる。拡張オペコードを有
するある16ビット命令がフェッチされると、続く16
ビット命令は拡張オペコードを有する命令と連結され、
32ビットの拡張命令を形成する。拡張命令は非拡張命
令に対して機能が増大し、更に圧縮命令セットの柔軟性
およびパワーを増強する。これにより、拡張命令に設け
られている機能を使用するルーチンを、圧縮命令を使用
してコード化することができる。
【0010】更に、圧縮命令セットは、圧縮レジスタフ
ィールド(compressed register field) から圧縮解除レ
ジスタフィールドへの多重セットのレジスタマッピング
を有する。圧縮レジスタフィールドに符号化された各値
はマイクロプロセッサ内の異なるレジスタにデコンプレ
スされる。一実施例では、圧縮レジスタフィールドはそ
れぞれ3ビットを有する。従って、8個のレジスタがあ
る特定の命令にアクセスすることができる。特定の選ば
れた命令用の付加レジスタにアクセスするために、その
選ばれた命令は2つのオペコード符号(opcode encodin
g) を割り当てられる。オペコード符号の一方はレジス
タフィールドの第1のマッピングを示し、第2のオペコ
ード符号はレジスタフィールドの第2のマッピングを示
している。圧縮レジスタフィールドは比較的少ないビッ
トをもたせることができ、付加レジスタへのアクセスが
望まれている選択命令にはそのようなアクセスを許容す
ることが有益である。更に、レジスタマッピングはレジ
スタフィールドをデコンプレスするために使用されるロ
ジックを最小にするように選択される。一実施例では、
圧縮レジスタフィールドは圧縮解除レジスタフィールド
の一部に直接にコピーされるが、圧縮解除レジスタフィ
ールドの残りの部分は小数のロジックゲートを使用して
形成される。
ィールド(compressed register field) から圧縮解除レ
ジスタフィールドへの多重セットのレジスタマッピング
を有する。圧縮レジスタフィールドに符号化された各値
はマイクロプロセッサ内の異なるレジスタにデコンプレ
スされる。一実施例では、圧縮レジスタフィールドはそ
れぞれ3ビットを有する。従って、8個のレジスタがあ
る特定の命令にアクセスすることができる。特定の選ば
れた命令用の付加レジスタにアクセスするために、その
選ばれた命令は2つのオペコード符号(opcode encodin
g) を割り当てられる。オペコード符号の一方はレジス
タフィールドの第1のマッピングを示し、第2のオペコ
ード符号はレジスタフィールドの第2のマッピングを示
している。圧縮レジスタフィールドは比較的少ないビッ
トをもたせることができ、付加レジスタへのアクセスが
望まれている選択命令にはそのようなアクセスを許容す
ることが有益である。更に、レジスタマッピングはレジ
スタフィールドをデコンプレスするために使用されるロ
ジックを最小にするように選択される。一実施例では、
圧縮レジスタフィールドは圧縮解除レジスタフィールド
の一部に直接にコピーされるが、圧縮解除レジスタフィ
ールドの残りの部分は小数のロジックゲートを使用して
形成される。
【0011】マイクロプロセッサは、圧縮命令で符号化
されたルーチンと圧縮されていない命令で符号化された
他のルーチンを有するプログラムをサポートする。圧縮
命令セット内のサブルーチンコール命令は、目標ルーチ
ンが圧縮命令で符号化されているか否かを示す圧縮モー
ドを有している。サブルーチンコール命令によって特定
される圧縮モードはルーチン用に圧縮モードとしてマイ
クロプロセッサによって捕捉される。一実施例では、圧
縮モードは、(マイクロプロセッサ内のプログラムカウ
ンタレジスタに記憶される)フェッチアドレスビットの
1つとして記憶される。圧縮モードはフェッチアドレス
の一部であり、そのサブルーチンコール命令はサブルー
チン用の復帰アドレスを記憶しているので、コーリング
ルーチンの圧縮モードはサブルーチンコール命令の実行
時に自動的に記憶される。サブルーチン復帰命令が実行
されると、コーリングルーチンの圧縮モードは自動的に
復元される。
されたルーチンと圧縮されていない命令で符号化された
他のルーチンを有するプログラムをサポートする。圧縮
命令セット内のサブルーチンコール命令は、目標ルーチ
ンが圧縮命令で符号化されているか否かを示す圧縮モー
ドを有している。サブルーチンコール命令によって特定
される圧縮モードはルーチン用に圧縮モードとしてマイ
クロプロセッサによって捕捉される。一実施例では、圧
縮モードは、(マイクロプロセッサ内のプログラムカウ
ンタレジスタに記憶される)フェッチアドレスビットの
1つとして記憶される。圧縮モードはフェッチアドレス
の一部であり、そのサブルーチンコール命令はサブルー
チン用の復帰アドレスを記憶しているので、コーリング
ルーチンの圧縮モードはサブルーチンコール命令の実行
時に自動的に記憶される。サブルーチン復帰命令が実行
されると、コーリングルーチンの圧縮モードは自動的に
復元される。
【0012】マイクロプロセッサの一実施例の別の特徴
は、ベースレジスタとしてグローバルポインタレジスタ
を有するロード/ストア命令用に使用される即値フィー
ルド(immediate field) の非圧縮である。即値フィール
ドは最上位ビットがセットされる圧縮解除即値フィール
ドにデコンプレスされる。グローバル変数アドレススペ
ースの下限における下位範囲のアドレスは圧縮命令のグ
ローバル変数用に割り当てられる。圧縮されていない命
令はグローバル変数アドレススペースの残りにグローバ
ル変数を記憶する。特定のプログラムの圧縮ルーチンと
圧縮されていないルーチン間のグローバル変数の割り当
ては、下位範囲が別々であるので比較的簡単である。
は、ベースレジスタとしてグローバルポインタレジスタ
を有するロード/ストア命令用に使用される即値フィー
ルド(immediate field) の非圧縮である。即値フィール
ドは最上位ビットがセットされる圧縮解除即値フィール
ドにデコンプレスされる。グローバル変数アドレススペ
ースの下限における下位範囲のアドレスは圧縮命令のグ
ローバル変数用に割り当てられる。圧縮されていない命
令はグローバル変数アドレススペースの残りにグローバ
ル変数を記憶する。特定のプログラムの圧縮ルーチンと
圧縮されていないルーチン間のグローバル変数の割り当
ては、下位範囲が別々であるので比較的簡単である。
【0013】概して、本発明は、圧縮ロード/ストア命
令の圧縮即値フィールドをデコンプレスする方法を意図
している。圧縮ロード/ストア命令によって特定される
ベースレジスタが検出される。圧縮即値フィールドは圧
縮解除即値フィールド(decompressed immediate field)
にデコンプレスされる。ベースレジスタが第1のレジス
タである場合、圧縮即値フィールドの最上位ビットがセ
ットされる。また、ベースレジスタが第1のレジスタと
異なる第2のレジスタである場合、最上位ビットはクリ
アされる。
令の圧縮即値フィールドをデコンプレスする方法を意図
している。圧縮ロード/ストア命令によって特定される
ベースレジスタが検出される。圧縮即値フィールドは圧
縮解除即値フィールド(decompressed immediate field)
にデコンプレスされる。ベースレジスタが第1のレジス
タである場合、圧縮即値フィールドの最上位ビットがセ
ットされる。また、ベースレジスタが第1のレジスタと
異なる第2のレジスタである場合、最上位ビットはクリ
アされる。
【0014】更に、本発明は、検出手段およびデコンプ
レス手段を有し、圧縮されたロード/ストア命令の圧縮
即値フィールドをデコンプレスする装置を意図してい
る。この検出手段は、圧縮ロード/ストア命令によって
特定されるベースレジスタを検出する。そして、デコン
プレス手段は圧縮即値フィールドを圧縮解除即値フィー
ルドにデコンプレスする。ベースレジスタが第1のレジ
スタである場合、デコンプレス手段は圧縮即値フィール
ドの最上位ビットをセットする。更に、ベースレジスタ
が第1のレジスタと異なる第2のレジスタである場合、
デコンプレス手段は最上位ビットをクリアする。
レス手段を有し、圧縮されたロード/ストア命令の圧縮
即値フィールドをデコンプレスする装置を意図してい
る。この検出手段は、圧縮ロード/ストア命令によって
特定されるベースレジスタを検出する。そして、デコン
プレス手段は圧縮即値フィールドを圧縮解除即値フィー
ルドにデコンプレスする。ベースレジスタが第1のレジ
スタである場合、デコンプレス手段は圧縮即値フィール
ドの最上位ビットをセットする。更に、ベースレジスタ
が第1のレジスタと異なる第2のレジスタである場合、
デコンプレス手段は最上位ビットをクリアする。
【0015】本発明は、更に即値フィールドデコンプレ
ッサおよびレジスタデコーダを有する命令デコンプレッ
サを考えている。即値フィールドデコンプレッサは、圧
縮命令の圧縮即値フィールドを受信し、圧縮解除された
命令(decompressed instruction)に含まれる圧縮解除即
値フィールドを生成するように接続されている。圧縮命
令で特定されるベースレジスタが第1のレジスタである
場合、圧縮解除即値フィールドの値は圧縮解除即値フィ
ールドによって表現しうる範囲の値の境界を形成してい
る第1の数値サブレンジ(下位数値範囲内)に存在して
いる。または、ベースレジスタが第1のレジスタと異な
る第2のレジスタである場合、圧縮解除即値フィールド
の値は前記境界を除いた値の範囲の一部を形成している
第2の下位数値範囲内に存在している。ベースレジスタ
を識別するベースレジスタ識別子を受信するように接続
されており、ベースレジスタが第1のレジスタである場
合、レジスタデコーダは即値フィールドデコンプレッサ
に信号を出力(assert)するように構成されている。も
し、ベースレジスタが第2レジスタであるならば、その
信号を引っ込める(deassert)ようにレジスタデコーダを
構成する。これにより、即値フィールドデコンプレッサ
は第1のレジスタと第2のレジスタのどちらが圧縮命令
のベースレジスタであるかを決定する。
ッサおよびレジスタデコーダを有する命令デコンプレッ
サを考えている。即値フィールドデコンプレッサは、圧
縮命令の圧縮即値フィールドを受信し、圧縮解除された
命令(decompressed instruction)に含まれる圧縮解除即
値フィールドを生成するように接続されている。圧縮命
令で特定されるベースレジスタが第1のレジスタである
場合、圧縮解除即値フィールドの値は圧縮解除即値フィ
ールドによって表現しうる範囲の値の境界を形成してい
る第1の数値サブレンジ(下位数値範囲内)に存在して
いる。または、ベースレジスタが第1のレジスタと異な
る第2のレジスタである場合、圧縮解除即値フィールド
の値は前記境界を除いた値の範囲の一部を形成している
第2の下位数値範囲内に存在している。ベースレジスタ
を識別するベースレジスタ識別子を受信するように接続
されており、ベースレジスタが第1のレジスタである場
合、レジスタデコーダは即値フィールドデコンプレッサ
に信号を出力(assert)するように構成されている。も
し、ベースレジスタが第2レジスタであるならば、その
信号を引っ込める(deassert)ようにレジスタデコーダを
構成する。これにより、即値フィールドデコンプレッサ
は第1のレジスタと第2のレジスタのどちらが圧縮命令
のベースレジスタであるかを決定する。
【0016】更に、本発明は、マイクロプロセッサ内の
第1のルーチンおよび第2のルーチンを有するプログラ
ムを実行する方法を意図している。サブルーチンコール
命令が第1のルーチン内で実行され、このサブルーチン
コール命令は第2のルーチンがサブルーチンコール命令
の目標アドレスを介して実行さべきれることを示してい
る。サブルーチンコール命令内の表示が調べられる。該
表示が第1の状態にある場合、第2のルーチンは圧縮命
令を使用して符号化されるべく決定される。表示が第1
の状態と異なる第2の状態にある場合には、第2のルー
チンは圧縮されていない命令を使用して符号化されるべ
く決定される。
第1のルーチンおよび第2のルーチンを有するプログラ
ムを実行する方法を意図している。サブルーチンコール
命令が第1のルーチン内で実行され、このサブルーチン
コール命令は第2のルーチンがサブルーチンコール命令
の目標アドレスを介して実行さべきれることを示してい
る。サブルーチンコール命令内の表示が調べられる。該
表示が第1の状態にある場合、第2のルーチンは圧縮命
令を使用して符号化されるべく決定される。表示が第1
の状態と異なる第2の状態にある場合には、第2のルー
チンは圧縮されていない命令を使用して符号化されるべ
く決定される。
【0017】更に、本発明は、実行手段および検査手段
を有し、マイクロプロセッサ内の第1のルーチンおよび
第2のルーチンを有するプログラムを実行する装置を意
図している。実行装置は、第1のルーチン内のサブルー
チンコール命令を実行する。サブルーチンコール命令
は、第2のルーチンがサブルーチンコール命令の目標ア
ドレスを介して実行されることを示す。検査手段はサブ
ルーチンコール命令内の表示を調べる。検査手段は、表
示が第1の状態にある場合、圧縮命令を使用して第2の
ルーチンが符号化されることを決定する。表示が第2の
状態にある場合、検査手段は第2のルーチンが圧縮され
ていない命令を使用して符号化されることを決定する。
を有し、マイクロプロセッサ内の第1のルーチンおよび
第2のルーチンを有するプログラムを実行する装置を意
図している。実行装置は、第1のルーチン内のサブルー
チンコール命令を実行する。サブルーチンコール命令
は、第2のルーチンがサブルーチンコール命令の目標ア
ドレスを介して実行されることを示す。検査手段はサブ
ルーチンコール命令内の表示を調べる。検査手段は、表
示が第1の状態にある場合、圧縮命令を使用して第2の
ルーチンが符号化されることを決定する。表示が第2の
状態にある場合、検査手段は第2のルーチンが圧縮され
ていない命令を使用して符号化されることを決定する。
【0018】更に、本発明は、記憶装置およびモード検
出器を有し、マイクロプロセッサに圧縮命令および非圧
縮命令をフェッチする装置を意図している。この記憶装
置は圧縮イネーブルインジケータを記憶する。記憶装置
に接続されて、モード検出器は、目標ルーチンを特定す
るサブルーチンコール命令のフェッチ時に目標ルーチン
の圧縮モードを検出するように構成されている。モード
検出器は圧縮モードをプロセッサコアに伝達するように
構成されている。プロセッサコアは、圧縮モードが圧縮
されていることを表示している場合、圧縮命令をフェッ
チするように構成されている。更に、プロセッサコア
は、圧縮モードが圧縮されていないことを表示している
場合、圧縮されていない命令をフェッチするように構成
される。
出器を有し、マイクロプロセッサに圧縮命令および非圧
縮命令をフェッチする装置を意図している。この記憶装
置は圧縮イネーブルインジケータを記憶する。記憶装置
に接続されて、モード検出器は、目標ルーチンを特定す
るサブルーチンコール命令のフェッチ時に目標ルーチン
の圧縮モードを検出するように構成されている。モード
検出器は圧縮モードをプロセッサコアに伝達するように
構成されている。プロセッサコアは、圧縮モードが圧縮
されていることを表示している場合、圧縮命令をフェッ
チするように構成されている。更に、プロセッサコア
は、圧縮モードが圧縮されていないことを表示している
場合、圧縮されていない命令をフェッチするように構成
される。
【0019】本発明の他の目的および利点は添付図面を
参照して次の詳細な説明を閲読することにより明らかに
なるであろう。
参照して次の詳細な説明を閲読することにより明らかに
なるであろう。
【0020】本発明は、種々の変更および代わりの形態
が可能であるが、一例として特定の実施例について図示
し詳細に説明する。しかしながら、図面および詳細な説
明は本発明を開示した特定の形態に限定するものでな
く、むしろ本発明は特許請求の範囲で定められる本発明
の精神および範囲内に入るすべての変更、等価および代
替を含むものである。
が可能であるが、一例として特定の実施例について図示
し詳細に説明する。しかしながら、図面および詳細な説
明は本発明を開示した特定の形態に限定するものでな
く、むしろ本発明は特許請求の範囲で定められる本発明
の精神および範囲内に入るすべての変更、等価および代
替を含むものである。
【0021】
【発明の実施の形態】まず、図1を参照すると、マイク
ロプロセッサ10Aの第1の実施例のブロック図が示さ
れている。マイクロプロセッサ10Aは命令デコンプレ
ッサ12A、命令キャシュ14A、およびプロセッサコ
ア16を有する。命令デコンプレッサ12Aは主メモリ
サブシステム(図示せず)から命令バイトを受信するよ
うに接続されている。更に、命令デコンプレッサ12A
は命令キャシュ14Aに接続されている。命令キャシュ
14Aはプロセッサコア16に接続されている。
ロプロセッサ10Aの第1の実施例のブロック図が示さ
れている。マイクロプロセッサ10Aは命令デコンプレ
ッサ12A、命令キャシュ14A、およびプロセッサコ
ア16を有する。命令デコンプレッサ12Aは主メモリ
サブシステム(図示せず)から命令バイトを受信するよ
うに接続されている。更に、命令デコンプレッサ12A
は命令キャシュ14Aに接続されている。命令キャシュ
14Aはプロセッサコア16に接続されている。
【0022】一般的に言えば、マイクロプロセッサ10
Aは主メモリサブシステムから圧縮命令をフェッチする
ように構成されている。圧縮命令は命令デコンプレッサ
12Aを通過し、該命令デコンプレッサは圧縮命令を命
令キャシュ14Aに記憶するために非圧縮命令に展開す
る。多くの圧縮命令は対応する非圧縮命令よりも占有す
るメモリ記憶ロケーションが少なく、特定のプログラム
を記憶するのに必要なメモリ量を有利に低減する。更
に、命令はマイクロプロセッサ10A内でデコンプレス
(圧縮を戻)されるので、圧縮命令を主メモリサブシス
テムからマイクロプロセッサ10Aに転送するのに必要
な帯域幅は低減される。マイクロプロセッサ10Aは比
較的小さな主メモリを有するコンピュータシステム内で
使用される。比較的大きなプログラムは命令を圧縮して
主メモリに記憶される。
Aは主メモリサブシステムから圧縮命令をフェッチする
ように構成されている。圧縮命令は命令デコンプレッサ
12Aを通過し、該命令デコンプレッサは圧縮命令を命
令キャシュ14Aに記憶するために非圧縮命令に展開す
る。多くの圧縮命令は対応する非圧縮命令よりも占有す
るメモリ記憶ロケーションが少なく、特定のプログラム
を記憶するのに必要なメモリ量を有利に低減する。更
に、命令はマイクロプロセッサ10A内でデコンプレス
(圧縮を戻)されるので、圧縮命令を主メモリサブシス
テムからマイクロプロセッサ10Aに転送するのに必要
な帯域幅は低減される。マイクロプロセッサ10Aは比
較的小さな主メモリを有するコンピュータシステム内で
使用される。比較的大きなプログラムは命令を圧縮して
主メモリに記憶される。
【0023】一実施例では、マイクロプロセッサ10A
は、ルーチン毎のベースで圧縮および非圧縮命令の両方
を実行するように構成されている。すなわち、ルーチン
は圧縮命令または非圧縮命令を使用してコード化され
る。圧縮命令セットで効率的にコード化されないルーチ
ンは非圧縮命令を使用してコード化されるが、圧縮命令
セットで効率的にコード化されるルーチンはそのように
コード化されることが有利である。マイクロプロセッサ
10Aは、圧縮および非圧縮命令の混合をサポートする
ために、ベースレジスタとしてグローバルポインタレジ
スタを使用するロード/ストア命令用の特定の非圧縮の
即値フィールドをサポートする。特定の非圧縮について
は以下に詳細に説明する。更に、圧縮モードは命令デコ
ンプレッサ12Aによって検出される。圧縮モードはル
ーチンがコード化されている命令セット、すなわち圧縮
または非圧縮を識別する。
は、ルーチン毎のベースで圧縮および非圧縮命令の両方
を実行するように構成されている。すなわち、ルーチン
は圧縮命令または非圧縮命令を使用してコード化され
る。圧縮命令セットで効率的にコード化されないルーチ
ンは非圧縮命令を使用してコード化されるが、圧縮命令
セットで効率的にコード化されるルーチンはそのように
コード化されることが有利である。マイクロプロセッサ
10Aは、圧縮および非圧縮命令の混合をサポートする
ために、ベースレジスタとしてグローバルポインタレジ
スタを使用するロード/ストア命令用の特定の非圧縮の
即値フィールドをサポートする。特定の非圧縮について
は以下に詳細に説明する。更に、圧縮モードは命令デコ
ンプレッサ12Aによって検出される。圧縮モードはル
ーチンがコード化されている命令セット、すなわち圧縮
または非圧縮を識別する。
【0024】命令圧縮は、命令の有効な符号化にある制
限を課することによりマイクロプロセッサ10Aで達成
される。命令の符号化を制限することにより、命令フィ
ールドの大きさを低減することができる(すなわち、命
令フィールド内のビット数を低減できる)。例えば、有
効なレジスタの数を減らして、圧縮命令セットを形成す
ることができる。少ないレジスタが有効であるので、小
さいフィールドを使用して、命令のソースおよびデステ
ィネーションオペランドとして使用されるレジスタを符
号化することができる。命令デコンプレッサ12Aは符
号化レジスタフィールドを圧縮解除レジスタフィールド
に展開される。圧縮解除レジスタフィールドが非圧縮命
令に設けられている。圧縮命令は縮小された命令フィー
ルドを使用することにより、プロセッサコア16によっ
て使用されるマイクロプロセッサアーキテクチャによっ
て定められる本来の命令符号化よりも少ないメモリ(す
なわち、少ないビット)を占有する。
限を課することによりマイクロプロセッサ10Aで達成
される。命令の符号化を制限することにより、命令フィ
ールドの大きさを低減することができる(すなわち、命
令フィールド内のビット数を低減できる)。例えば、有
効なレジスタの数を減らして、圧縮命令セットを形成す
ることができる。少ないレジスタが有効であるので、小
さいフィールドを使用して、命令のソースおよびデステ
ィネーションオペランドとして使用されるレジスタを符
号化することができる。命令デコンプレッサ12Aは符
号化レジスタフィールドを圧縮解除レジスタフィールド
に展開される。圧縮解除レジスタフィールドが非圧縮命
令に設けられている。圧縮命令は縮小された命令フィー
ルドを使用することにより、プロセッサコア16によっ
て使用されるマイクロプロセッサアーキテクチャによっ
て定められる本来の命令符号化よりも少ないメモリ(す
なわち、少ないビット)を占有する。
【0025】命令デコンプレッサ12Aは、圧縮命令を
受け入れ、該命令を元の命令の符号にデコンプレスする
ように構成されている。特定の圧縮命令内の各命令フィ
ールドは圧縮フィールドから対応する非圧縮命令内の対
応する非圧縮フィールドに展開される。非圧縮命令はプ
ロセッサコア16によってサポートされる元の命令フォ
ーマットに符号化される。
受け入れ、該命令を元の命令の符号にデコンプレスする
ように構成されている。特定の圧縮命令内の各命令フィ
ールドは圧縮フィールドから対応する非圧縮命令内の対
応する非圧縮フィールドに展開される。非圧縮命令はプ
ロセッサコア16によってサポートされる元の命令フォ
ーマットに符号化される。
【0026】プロセッサコア16は命令キャシュ14A
から命令をフェッチし、該命令を解読して実行する回路
を有する。プロセッサコア16によってサポートされる
命令はそこに使用されているマイクロプロセッサアーキ
テクチャによって特定される。特定の一実施例では、プ
ロセッサコア16はMIPS RISC アーキテクチャを使用し
ている。しかしながら、プロセッサコア16はマイクロ
プロセッサアーキテクチャを使用してもよいことを理解
されたい。命令デコンプレッサ12Aは命令を元の命令
フォーマットにデコンプレスするので、プロセッサコア
16は前に設計したプロセッサコアでもよい。すなわ
ち、プロセッサコアは実質的な変更を必要とせず、マイ
クロプロセッサ10A内に設けられているものでよい。
から命令をフェッチし、該命令を解読して実行する回路
を有する。プロセッサコア16によってサポートされる
命令はそこに使用されているマイクロプロセッサアーキ
テクチャによって特定される。特定の一実施例では、プ
ロセッサコア16はMIPS RISC アーキテクチャを使用し
ている。しかしながら、プロセッサコア16はマイクロ
プロセッサアーキテクチャを使用してもよいことを理解
されたい。命令デコンプレッサ12Aは命令を元の命令
フォーマットにデコンプレスするので、プロセッサコア
16は前に設計したプロセッサコアでもよい。すなわ
ち、プロセッサコアは実質的な変更を必要とせず、マイ
クロプロセッサ10A内に設けられているものでよい。
【0027】MIPS RISC アーキテクチャは32ビットの
固定長の命令からなる命令セットを特定する。圧縮命令
セットは可変長命令を有するマイクロプロセッサ10A
用に定義される。多くの圧縮命令は16ビット命令であ
る。他の圧縮命令は以下に説明する拡張命令と協力する
32ビット命令である。いくつかの16ビットおよび3
2ビット命令フォーマットが定義されている。16ビッ
トおよび32ビット圧縮命令が本実施例で使用される
が、他の実施例は異なる命令長を使用することができる
ことを理解されたい。圧縮命令は非圧縮命令のサブセッ
トを符号化する。圧縮命令セット内でサポートされる命
令符号化は非常にしばしば使用されるレジスタのみなら
ず、非常に普通に符号化される命令の多くを有し、多く
のプログラム、またはプログラム内のルーチンは圧縮命
令を使用して符号化される。
固定長の命令からなる命令セットを特定する。圧縮命令
セットは可変長命令を有するマイクロプロセッサ10A
用に定義される。多くの圧縮命令は16ビット命令であ
る。他の圧縮命令は以下に説明する拡張命令と協力する
32ビット命令である。いくつかの16ビットおよび3
2ビット命令フォーマットが定義されている。16ビッ
トおよび32ビット圧縮命令が本実施例で使用される
が、他の実施例は異なる命令長を使用することができる
ことを理解されたい。圧縮命令は非圧縮命令のサブセッ
トを符号化する。圧縮命令セット内でサポートされる命
令符号化は非常にしばしば使用されるレジスタのみなら
ず、非常に普通に符号化される命令の多くを有し、多く
のプログラム、またはプログラム内のルーチンは圧縮命
令を使用して符号化される。
【0028】一実施例では、マイクロプロセッサ10A
は圧縮モードを使用する。圧縮モードがアクティブであ
る場合には、圧縮命令はフェッチされ実行されつつあ
る。命令デコンプレッサ12Aは、命令が主メモリから
命令キャシュ14に転送される場合に該命令をデコンプ
レスする。または、圧縮モードがインアクティブにな
る。圧縮モードがインアクティブになると、非圧縮命令
はフェッチされ実行されつつある。圧縮モードがインア
クティブになると、命令デコンプレッサ12Aはバイパ
スされる。特定の一実施例では、圧縮モードはフェッチ
アドレス(例えば、ビット0)内のビットによって示さ
れる。現在のフェッチアドレスはプロセッサコア16内
のPCレジスタ18に記憶される。PCレジスタ18の
ビット0はマイクロプロセッサ10Aの圧縮モードを示
している。
は圧縮モードを使用する。圧縮モードがアクティブであ
る場合には、圧縮命令はフェッチされ実行されつつあ
る。命令デコンプレッサ12Aは、命令が主メモリから
命令キャシュ14に転送される場合に該命令をデコンプ
レスする。または、圧縮モードがインアクティブにな
る。圧縮モードがインアクティブになると、非圧縮命令
はフェッチされ実行されつつある。圧縮モードがインア
クティブになると、命令デコンプレッサ12Aはバイパ
スされる。特定の一実施例では、圧縮モードはフェッチ
アドレス(例えば、ビット0)内のビットによって示さ
れる。現在のフェッチアドレスはプロセッサコア16内
のPCレジスタ18に記憶される。PCレジスタ18の
ビット0はマイクロプロセッサ10Aの圧縮モードを示
している。
【0029】命令キャシュ14Aはデコンプレスされた
命令および圧縮されていない命令を記憶するように構成
されている高速キャシュメモリである。どのようなキャ
シュ構成を命令キャシュ14Aで使用することができる
が、セット関連または直接マップ式構造が図1に示す実
施例に適している。
命令および圧縮されていない命令を記憶するように構成
されている高速キャシュメモリである。どのようなキャ
シュ構成を命令キャシュ14Aで使用することができる
が、セット関連または直接マップ式構造が図1に示す実
施例に適している。
【0030】次に、図2を参照すると、マイクロプロセ
ッサ10Bの第2の実施例が示されている。マイクロプ
ロセッサ10Bは、主メモリサブシステムからの命令バ
イトを受信するように構成された命令キャシュ14B、
命令デコンプレッサ12B、およびプロセッサコア16
を有する。命令キャシュ14Bは命令デコンプレッサ1
2Bに接続され、該命令デコンプレッサは更にプロセッ
サコア16に接続されている。
ッサ10Bの第2の実施例が示されている。マイクロプ
ロセッサ10Bは、主メモリサブシステムからの命令バ
イトを受信するように構成された命令キャシュ14B、
命令デコンプレッサ12B、およびプロセッサコア16
を有する。命令キャシュ14Bは命令デコンプレッサ1
2Bに接続され、該命令デコンプレッサは更にプロセッ
サコア16に接続されている。
【0031】マイクロプロセッサ10Bは、命令キャシ
ュ14Bとプロセッサコア16との間に命令デコンプレ
ッサ12Bを有して構成される。命令キャシュ14Bは
主メモリサブシステムから転送された圧縮命令を記憶す
る。このように、命令キャシュ14Bは、マイクロプロ
セッサ10Aに命令キャシュ14Aとして使用されてい
る同じ大きさの命令キャシュよりも比較的多数の命令を
記憶することができる。命令デコンプレッサ12Bは、
プロセッサコア16からの命令フェッチ要求に対応する
フェッチアドレスを受け取り、該フェッチ要求に応答し
て命令キャシュ14Bにアクセスする。対応する圧縮命
令は命令デコンプレッサ12Bによって非圧縮命令にデ
コンプレスされる。非圧縮命令はプロセッサコア16に
送られる。
ュ14Bとプロセッサコア16との間に命令デコンプレ
ッサ12Bを有して構成される。命令キャシュ14Bは
主メモリサブシステムから転送された圧縮命令を記憶す
る。このように、命令キャシュ14Bは、マイクロプロ
セッサ10Aに命令キャシュ14Aとして使用されてい
る同じ大きさの命令キャシュよりも比較的多数の命令を
記憶することができる。命令デコンプレッサ12Bは、
プロセッサコア16からの命令フェッチ要求に対応する
フェッチアドレスを受け取り、該フェッチ要求に応答し
て命令キャシュ14Bにアクセスする。対応する圧縮命
令は命令デコンプレッサ12Bによって非圧縮命令にデ
コンプレスされる。非圧縮命令はプロセッサコア16に
送られる。
【0032】マイクロプロセッサ10Aと同様に、マイ
クロプロセッサ10Bは一実施例では圧縮モードを有し
ている。非圧縮命令がフェッチされ実行されつつある場
合には、命令デコンプレッサ12Bはバイパスされる。
この実施例では、命令キャシュ14Bは圧縮命令および
圧縮されていない命令の両方を記憶する。命令キャシュ
14Bは典型的にはキャシュラインと称する固定サイズ
の記憶ロケーションに命令バイトを記憶する。従って、
特定のキャシュラインは圧縮命令または圧縮されていな
い命令を記憶している。いずれの場合も、複数の命令バ
イトが記憶される。従って、命令キャシュ14Aおよび
14Bは同様な構成である。キャシュラインがアクセス
された時点の圧縮モードは、命令バイトが圧縮命令また
は圧縮されていない命令として解釈されるかどうかを決
定する。
クロプロセッサ10Bは一実施例では圧縮モードを有し
ている。非圧縮命令がフェッチされ実行されつつある場
合には、命令デコンプレッサ12Bはバイパスされる。
この実施例では、命令キャシュ14Bは圧縮命令および
圧縮されていない命令の両方を記憶する。命令キャシュ
14Bは典型的にはキャシュラインと称する固定サイズ
の記憶ロケーションに命令バイトを記憶する。従って、
特定のキャシュラインは圧縮命令または圧縮されていな
い命令を記憶している。いずれの場合も、複数の命令バ
イトが記憶される。従って、命令キャシュ14Aおよび
14Bは同様な構成である。キャシュラインがアクセス
された時点の圧縮モードは、命令バイトが圧縮命令また
は圧縮されていない命令として解釈されるかどうかを決
定する。
【0033】マイクロプロセッサ10Bの別の構成は、
プロセッサコア16の命令解読ロジック内に命令デコン
プレッサ12Bを有することである。圧縮命令はこの実
施例では実際にデコンプレスされない。代わりに、圧縮
命令は解読ロジックによって直接解読される。解読され
た命令は圧縮命令に対応する圧縮されていない命令に対
して生成される解読された命令に類似している。
プロセッサコア16の命令解読ロジック内に命令デコン
プレッサ12Bを有することである。圧縮命令はこの実
施例では実際にデコンプレスされない。代わりに、圧縮
命令は解読ロジックによって直接解読される。解読され
た命令は圧縮命令に対応する圧縮されていない命令に対
して生成される解読された命令に類似している。
【0034】マイクロプロセッサ10Aおよび10Bは
圧縮命令で動作するマイクロプロセッサ10の典型的な
実施例にすぎない。この説明の残りの部分では、マイク
ロプロセッサ10、命令キャシュ14および命令デコン
プレッサ12を使用して、図1および図2の両方の対応
するエレメントおよびマイクロプロセッサ10の他の実
施において有するエレメントの他の実施例について言及
する。
圧縮命令で動作するマイクロプロセッサ10の典型的な
実施例にすぎない。この説明の残りの部分では、マイク
ロプロセッサ10、命令キャシュ14および命令デコン
プレッサ12を使用して、図1および図2の両方の対応
するエレメントおよびマイクロプロセッサ10の他の実
施において有するエレメントの他の実施例について言及
する。
【0035】圧縮、圧縮命令、非圧縮命令、および圧縮
されていない命令(非圧縮命令)なる用語は上記説明で
使用され、更に下記で使用される。ここで使用されるよ
うに、「圧縮命令(compressed instruction)」なる用語
はメモリに圧縮された形態で記憶される命令を称する。
圧縮命令は、一般にプロセッサコア16によって使用さ
れるマイクロプロセッサアーキテクチャで定義されるも
のとして表される場合に命令を記憶するために使用され
るビット数よりも少ないビットを使用して記憶される。
「圧縮解除命令(decompressed instruction)」なる用語
は、圧縮命令をプロセッサコア16によって使用される
マイクロプロセッサアーキテクチャにおいて定義される
元の符号に展開した結果を称する。「圧縮されていない
(非圧縮)命令 (noncompressed instruction)」なる用
語は、プロセッサコア16で使用されるマイクロプロセ
ッサアーキテクチャによって定義される符号で表される
命令を称する。また、圧縮されていない命令は同じフォ
ーマットでメモリに記憶される(すなわち、圧縮されて
いない命令は決して圧縮されない)。最後に、「圧縮解
除(デコンプレション; decompression)」なる用語は、
圧縮命令を対応する圧縮解除命令に展開する処理を称す
る。
されていない命令(非圧縮命令)なる用語は上記説明で
使用され、更に下記で使用される。ここで使用されるよ
うに、「圧縮命令(compressed instruction)」なる用語
はメモリに圧縮された形態で記憶される命令を称する。
圧縮命令は、一般にプロセッサコア16によって使用さ
れるマイクロプロセッサアーキテクチャで定義されるも
のとして表される場合に命令を記憶するために使用され
るビット数よりも少ないビットを使用して記憶される。
「圧縮解除命令(decompressed instruction)」なる用語
は、圧縮命令をプロセッサコア16によって使用される
マイクロプロセッサアーキテクチャにおいて定義される
元の符号に展開した結果を称する。「圧縮されていない
(非圧縮)命令 (noncompressed instruction)」なる用
語は、プロセッサコア16で使用されるマイクロプロセ
ッサアーキテクチャによって定義される符号で表される
命令を称する。また、圧縮されていない命令は同じフォ
ーマットでメモリに記憶される(すなわち、圧縮されて
いない命令は決して圧縮されない)。最後に、「圧縮解
除(デコンプレション; decompression)」なる用語は、
圧縮命令を対応する圧縮解除命令に展開する処理を称す
る。
【0036】命令デコンプレッサ12Aおよび12B
は、多数の圧縮命令を同時にデコンプレスするように構
成されることに注意されたい。このように実施例の命令
デコンプレッサ12は、クロックサイクル当り多数の命
令を実行するプロセッサコア16の実施例とともに使用
される。
は、多数の圧縮命令を同時にデコンプレスするように構
成されることに注意されたい。このように実施例の命令
デコンプレッサ12は、クロックサイクル当り多数の命
令を実行するプロセッサコア16の実施例とともに使用
される。
【0037】図3(A〜D)および図4(A〜D)は、
MIPS RISC アーキテクチャを使用するマイクロプロセッ
サ10の特定の一実施例による16ビットおよび32ビ
ットの圧縮命令の典型的な命令フォーマットをそれぞれ
示している。他の命令フォーマットが他の実施例で使用
されてもよい。図3の(A)〜(D)に示す命令フォー
マットは各々この特定の実施における16ビットを有す
る。逆に、図4の(A)〜(D)に示す命令フォーマッ
トは各々この特定の実施における32ビットを有する。
命令フォーマットを使用して符号化される圧縮命令は、
各命令用のMIPSRISC アーキテクチャで定義される命令
フォーマットにデコンプレスされる。
MIPS RISC アーキテクチャを使用するマイクロプロセッ
サ10の特定の一実施例による16ビットおよび32ビ
ットの圧縮命令の典型的な命令フォーマットをそれぞれ
示している。他の命令フォーマットが他の実施例で使用
されてもよい。図3の(A)〜(D)に示す命令フォー
マットは各々この特定の実施における16ビットを有す
る。逆に、図4の(A)〜(D)に示す命令フォーマッ
トは各々この特定の実施における32ビットを有する。
命令フォーマットを使用して符号化される圧縮命令は、
各命令用のMIPSRISC アーキテクチャで定義される命令
フォーマットにデコンプレスされる。
【0038】図3(A)は、第1の命令フォーマット2
0を示している。命令フォーマット20はオペコードフ
ィールド22、第1のレジスタフィールド24、第2の
レジスタフィールド26、および機能フィールド28を
有する。オペコードフィールド22は命令を識別するた
めに使用される。更に、機能フィールド28は命令を識
別するためにオペコードフィールド22のある特定の符
号とともに使用される。機能フィールド28およびオペ
コードフィールド22は共にこれらの命令のオペコード
フィールドを形成することが有効である。オペコードフ
ィールド22が特定の符号以外のある他の符号を使用す
る場合には、機能フィールド28は即値フィールドとし
て使用される。
0を示している。命令フォーマット20はオペコードフ
ィールド22、第1のレジスタフィールド24、第2の
レジスタフィールド26、および機能フィールド28を
有する。オペコードフィールド22は命令を識別するた
めに使用される。更に、機能フィールド28は命令を識
別するためにオペコードフィールド22のある特定の符
号とともに使用される。機能フィールド28およびオペ
コードフィールド22は共にこれらの命令のオペコード
フィールドを形成することが有効である。オペコードフ
ィールド22が特定の符号以外のある他の符号を使用す
る場合には、機能フィールド28は即値フィールドとし
て使用される。
【0039】第1のレジスタフィールド24および第2
のレジスタフィールド26は命令のデスティネーション
レジスタおよびソースレジスタを識別する。また、デス
ティネーションレジスタは典型的には命令のソースレジ
スタとしても使用される。このように、2つのソースオ
ペランドおよび1つのデスティネーションオペランドは
第1のレジスタフィールド24および第2のレジスタフ
ィールド26を介して特定される。第1のレジスタフィ
ールド24および第2のレジスタフィールド26の表示
「RT」および「RS」は、以下の命令表のフィールド
の使用を示している。RTまたはRSは命令の符号化に
よってデスティネーションレジスタである。
のレジスタフィールド26は命令のデスティネーション
レジスタおよびソースレジスタを識別する。また、デス
ティネーションレジスタは典型的には命令のソースレジ
スタとしても使用される。このように、2つのソースオ
ペランドおよび1つのデスティネーションオペランドは
第1のレジスタフィールド24および第2のレジスタフ
ィールド26を介して特定される。第1のレジスタフィ
ールド24および第2のレジスタフィールド26の表示
「RT」および「RS」は、以下の命令表のフィールド
の使用を示している。RTまたはRSは命令の符号化に
よってデスティネーションレジスタである。
【0040】一実施例では、オペコードフィールド22
は5ビットであり、第1のレジスタフィールド24およ
び第2のレジスタフィールド26は各々3ビットであ
り、機能フィールド28は5ビットである。第1のレジ
スタフィールド24は2つのサブフィールド(RT1お
よびRT0のラベルが付いている)に分割されている。
RT1は本実施例では2ビットであり、RT0は1ビッ
トである。RT1はRT0と連結され、第1のレジスタ
フィールド24を形成している。サブフィールドRT1
と第2のレジスタフィールド26は命令フォーマット2
0を経て符号化されるある命令で使用されて、MIPS RIS
C アーキテクチャで定義される32個のレジスタの1つ
を示す。
は5ビットであり、第1のレジスタフィールド24およ
び第2のレジスタフィールド26は各々3ビットであ
り、機能フィールド28は5ビットである。第1のレジ
スタフィールド24は2つのサブフィールド(RT1お
よびRT0のラベルが付いている)に分割されている。
RT1は本実施例では2ビットであり、RT0は1ビッ
トである。RT1はRT0と連結され、第1のレジスタ
フィールド24を形成している。サブフィールドRT1
と第2のレジスタフィールド26は命令フォーマット2
0を経て符号化されるある命令で使用されて、MIPS RIS
C アーキテクチャで定義される32個のレジスタの1つ
を示す。
【0041】図3(B)は、第2の命令フォーマット3
0を示している。命令フォーマット30はオペコードフ
ィールド22、第1のレジスタフィールド24および第
2のレジスタフィールド26を有する。更に、第3のレ
ジスタフィールド32および機能フィールド34が示さ
れている。第3のレジスタフィールド32を一般に使用
して、命令フォーマット30を使用する命令のデスティ
ネーションレジスタを識別する。従って、第1のレジス
タフィールド24および第2のレジスタフィールド26
は命令フォーマット30のソースレジスタを構成する。
機能フィールド34は機能フィールド28と同様に使用
される。図示の実施例では、第3のレジスタフィールド
32は3ビットであり、機能フィールド34は2ビット
である。
0を示している。命令フォーマット30はオペコードフ
ィールド22、第1のレジスタフィールド24および第
2のレジスタフィールド26を有する。更に、第3のレ
ジスタフィールド32および機能フィールド34が示さ
れている。第3のレジスタフィールド32を一般に使用
して、命令フォーマット30を使用する命令のデスティ
ネーションレジスタを識別する。従って、第1のレジス
タフィールド24および第2のレジスタフィールド26
は命令フォーマット30のソースレジスタを構成する。
機能フィールド34は機能フィールド28と同様に使用
される。図示の実施例では、第3のレジスタフィールド
32は3ビットであり、機能フィールド34は2ビット
である。
【0042】第3の命令フォーマット40が図3(C)
に示されている。命令フォーマット40はオペコードフ
ィールド22、第2のレジスタフィールド26、および
即値フィールド42を有する。即値フィールド42は、
命令フォーマット40によって特定される命令の即値デ
ータを提供するために使用される。即値データは第1の
レジスタフィールド24および第2のレジスタフィール
ド26によって特定されるレジスタに記憶される値に類
似した命令のオペランドである。例えば、即値データを
使用する加算命令は即値データをデスティネーションレ
ジスタに記憶された値に加算し、その結果の和をそのデ
スティネーションレジスタにストアする。一実施例で
は、即値フィールド42は8ビットである。即値フィー
ルド42は図3(C)に示した命令フォーマットの2つ
のサブフィールド(IMM1およびIMM2)に分割されてい
る。サブフィールドは、第2のレジスタフィールド26
を命令フォーマット20および30に設けられるように
命令フォーマット40内の同じビット位置に設けること
ができる。第2のレジスタフィールド26は、該フィー
ルドが使用される16ビット命令の同じ位置に常に見つ
けられることが有利である。従って、サブフィールドIM
M1は2ビットであり、サブフィールドIMM0は6ビットで
ある。IMM1は、IMM0と連結されて、即時値を形成する。
に示されている。命令フォーマット40はオペコードフ
ィールド22、第2のレジスタフィールド26、および
即値フィールド42を有する。即値フィールド42は、
命令フォーマット40によって特定される命令の即値デ
ータを提供するために使用される。即値データは第1の
レジスタフィールド24および第2のレジスタフィール
ド26によって特定されるレジスタに記憶される値に類
似した命令のオペランドである。例えば、即値データを
使用する加算命令は即値データをデスティネーションレ
ジスタに記憶された値に加算し、その結果の和をそのデ
スティネーションレジスタにストアする。一実施例で
は、即値フィールド42は8ビットである。即値フィー
ルド42は図3(C)に示した命令フォーマットの2つ
のサブフィールド(IMM1およびIMM2)に分割されてい
る。サブフィールドは、第2のレジスタフィールド26
を命令フォーマット20および30に設けられるように
命令フォーマット40内の同じビット位置に設けること
ができる。第2のレジスタフィールド26は、該フィー
ルドが使用される16ビット命令の同じ位置に常に見つ
けられることが有利である。従って、サブフィールドIM
M1は2ビットであり、サブフィールドIMM0は6ビットで
ある。IMM1は、IMM0と連結されて、即時値を形成する。
【0043】図3(D)は、第4の命令フォーマット5
0を示している。命令フォーマット50はオペコードフ
ィールド22および即値フィールド52を有する。即値
フィールド42と同様な即値フィールド52は命令オペ
ランドとして使用される。しかしながら、即値フィール
ド52は11ビットを有する。
0を示している。命令フォーマット50はオペコードフ
ィールド22および即値フィールド52を有する。即値
フィールド42と同様な即値フィールド52は命令オペ
ランドとして使用される。しかしながら、即値フィール
ド52は11ビットを有する。
【0044】図4(A)は、第5の命令フォーマット6
0を示している。命令フォーマット60はオペコードフ
ィールド22を有し、このフィールドは拡張命令として
コード化される。命令デコンプレッサ12はオペコード
フィールド22内の拡張命令オペコードを認識し、現在
の命令を32ビット命令として扱う(すなわち、拡張オ
ペコードを有する命令内に含まれる16ビットと別の場
合にはプログラム順に次の命令を構成する16ビットが
連結されて、32ビットの命令を形成する)。従って、
圧縮命令は16ビット命令と32ビット命令を有する可
変長命令セットであることが分かる。更に、命令フォー
マット60は6ビット(すべて2進数の0にコード化さ
れる)からなるゼロフィールド62、即値フィールド6
4およびBRフィールド66を有する。命令フォーマッ
ト60はBR命令(無条件分岐命令)の拡張形をコード
化するために使用され、従ってBRフィールド66はB
R命令を示すオペコードフィールドである。一実施例で
は、BRオペコードは16進数02である。
0を示している。命令フォーマット60はオペコードフ
ィールド22を有し、このフィールドは拡張命令として
コード化される。命令デコンプレッサ12はオペコード
フィールド22内の拡張命令オペコードを認識し、現在
の命令を32ビット命令として扱う(すなわち、拡張オ
ペコードを有する命令内に含まれる16ビットと別の場
合にはプログラム順に次の命令を構成する16ビットが
連結されて、32ビットの命令を形成する)。従って、
圧縮命令は16ビット命令と32ビット命令を有する可
変長命令セットであることが分かる。更に、命令フォー
マット60は6ビット(すべて2進数の0にコード化さ
れる)からなるゼロフィールド62、即値フィールド6
4およびBRフィールド66を有する。命令フォーマッ
ト60はBR命令(無条件分岐命令)の拡張形をコード
化するために使用され、従ってBRフィールド66はB
R命令を示すオペコードフィールドである。一実施例で
は、BRオペコードは16進数02である。
【0045】拡張BR命令は非拡張BR命令よりも大き
な即値フィールドを有し、従って非拡張BR命令よりも
大きなオフセットでコード化される。分岐命令から離れ
た命令への分岐を希望する場合には、拡張BR命令を使
用する。代わりに、近い命令への分岐は非拡張BR命令
を使用する。即値フィールド64は分岐命令の目標アド
レスを生成するためにBR命令に続く命令のアドレスに
加えられるオフセットとして使用される16ビットを有
する。非拡張BR命令は対照的に11ビットのオフセッ
トを有する(すなわち、これは命令フォーマット50を
使用してコード化される)。
な即値フィールドを有し、従って非拡張BR命令よりも
大きなオフセットでコード化される。分岐命令から離れ
た命令への分岐を希望する場合には、拡張BR命令を使
用する。代わりに、近い命令への分岐は非拡張BR命令
を使用する。即値フィールド64は分岐命令の目標アド
レスを生成するためにBR命令に続く命令のアドレスに
加えられるオフセットとして使用される16ビットを有
する。非拡張BR命令は対照的に11ビットのオフセッ
トを有する(すなわち、これは命令フォーマット50を
使用してコード化される)。
【0046】図4(B)は、命令フォーマット40の拡
張バージョンである命令フォーマット70を示してい
る。命令フォーマット70は拡張オペコードとしてコー
ド化されるオペコードフィールド22、即値フィールド
72、第1のレジスタフィールド74、第2のレジスタ
フィールド76および第2のオペコードフィールド78
を有する。第1のレジスタフィールド74および第2の
レジスタフィールド76は図示の実施例ではそれぞれ5
ビットである。従って、MIPS RISC アーキテクチャで定
義されるいずれのレジスタも命令フォーマット70を使
用してアクセスすることができる。第2のオペコードフ
ィールド78は実行中の命令を定義し、(オペコードフ
ィールド22と同じ)5ビットである。最後に、即値フ
ィールド72は1ビットIMM2サブフィールド、5ビット
IMM1サブフィールド、および6ビットIMM0サブフィール
ドに分割された12ビットを有する。即値フィールド7
2は図示の実施例ではIMM2をIMM1に連結し、更にIMM0に
連結することによって形成される。
張バージョンである命令フォーマット70を示してい
る。命令フォーマット70は拡張オペコードとしてコー
ド化されるオペコードフィールド22、即値フィールド
72、第1のレジスタフィールド74、第2のレジスタ
フィールド76および第2のオペコードフィールド78
を有する。第1のレジスタフィールド74および第2の
レジスタフィールド76は図示の実施例ではそれぞれ5
ビットである。従って、MIPS RISC アーキテクチャで定
義されるいずれのレジスタも命令フォーマット70を使
用してアクセスすることができる。第2のオペコードフ
ィールド78は実行中の命令を定義し、(オペコードフ
ィールド22と同じ)5ビットである。最後に、即値フ
ィールド72は1ビットIMM2サブフィールド、5ビット
IMM1サブフィールド、および6ビットIMM0サブフィール
ドに分割された12ビットを有する。即値フィールド7
2は図示の実施例ではIMM2をIMM1に連結し、更にIMM0に
連結することによって形成される。
【0047】命令フォーマット30に対応する拡張命令
フォーマットが命令フォーマット80として図4(C)
に示されている。命令フォーマット80は、命令フォー
マット70と同様に、オペコードフィールド22、第1
のレジスタフィールド74、第2のレジスタフィールド
76、および第2のオペコードフィールド78を有す
る。更に、命令フォーマット80は第3のレジスタフィ
ールド82および機能フィールド84を有する。第3の
レジスタフィールド82は、5ビットであることを除い
て、第3のレジスタフィールド32に類似している。従
って、どのMIPS RISC アーキテクチャレジスタも第3の
レジスタフィールド82で特定することができる。機能
フィールド84は、6ビットであることを除いて機能フ
ィールド28および34に類似している。
フォーマットが命令フォーマット80として図4(C)
に示されている。命令フォーマット80は、命令フォー
マット70と同様に、オペコードフィールド22、第1
のレジスタフィールド74、第2のレジスタフィールド
76、および第2のオペコードフィールド78を有す
る。更に、命令フォーマット80は第3のレジスタフィ
ールド82および機能フィールド84を有する。第3の
レジスタフィールド82は、5ビットであることを除い
て、第3のレジスタフィールド32に類似している。従
って、どのMIPS RISC アーキテクチャレジスタも第3の
レジスタフィールド82で特定することができる。機能
フィールド84は、6ビットであることを除いて機能フ
ィールド28および34に類似している。
【0048】第2のオペコードフィールド78は命令フ
ォーマット80を命令フォーマット70から見分けるた
めに特定の値にコード化される。第2のオペコードフィ
ールド78が特定の値にコード化されると、命令フォー
マット80が命令デコンプレッサ12によって受け入れ
られる。逆に、第2のオペコードフィールド78が特定
の値以外の値にコード化されると、命令フォーマット7
0が命令デコンプレッサ12によって受け入れられる。
一実施例では、特定の値は16進数の00である。
ォーマット80を命令フォーマット70から見分けるた
めに特定の値にコード化される。第2のオペコードフィ
ールド78が特定の値にコード化されると、命令フォー
マット80が命令デコンプレッサ12によって受け入れ
られる。逆に、第2のオペコードフィールド78が特定
の値以外の値にコード化されると、命令フォーマット7
0が命令デコンプレッサ12によって受け入れられる。
一実施例では、特定の値は16進数の00である。
【0049】更に、命令フォーマット80はCOP0ビット
86を有する。COP0ビット86は、セットされると、あ
るコプロセッサゼロ命令(MIPS RISC アーキテクチャで
定義される)が実行中であることを示す。以下の命令表
はCOP0ビット86をセットすることによってコード化さ
れる命令を定義している。
86を有する。COP0ビット86は、セットされると、あ
るコプロセッサゼロ命令(MIPS RISC アーキテクチャで
定義される)が実行中であることを示す。以下の命令表
はCOP0ビット86をセットすることによってコード化さ
れる命令を定義している。
【0050】命令フォーマット20,30,40および
50用に定義された命令は、典型的なプログラムで通常
実行される多くのオペレーションを実施することができ
る。しかしながら、これらの命令が実行できないオペレ
ーションを行うルーチンが必要である。ルーチンにおけ
る命令の多くは命令フォーマット20−50を使用して
コード化されるが、いくつかの命令は別の符号化が必要
である。例えば、フォーマット20−50内の有効なレ
ジスタのサブセット内に設けられていないレジスタへの
アクセスが必要である。フォーマット20−50を使用
して符号化される命令に含まれていない別の命令が必要
である。これらおよび他の理由のために、拡張オペコー
ドおよび拡張された命令フォーマット60−80が定義
されている。
50用に定義された命令は、典型的なプログラムで通常
実行される多くのオペレーションを実施することができ
る。しかしながら、これらの命令が実行できないオペレ
ーションを行うルーチンが必要である。ルーチンにおけ
る命令の多くは命令フォーマット20−50を使用して
コード化されるが、いくつかの命令は別の符号化が必要
である。例えば、フォーマット20−50内の有効なレ
ジスタのサブセット内に設けられていないレジスタへの
アクセスが必要である。フォーマット20−50を使用
して符号化される命令に含まれていない別の命令が必要
である。これらおよび他の理由のために、拡張オペコー
ドおよび拡張された命令フォーマット60−80が定義
されている。
【0051】命令デコンプレッサ12は、拡張オペコー
ドを検出するためにオペコードフィールド22を調べ
る。拡張オペコードは本実施例では命令フォーマット5
0を使用するように定義されるオペコードの1つである
が、即値フィールド52に含まれるビットは特定の拡張
命令用にコード化された拡張命令フォーマットによって
解釈を異にして割り当てられる。拡張命令フォーマット
は特定の拡張命令を識別する第2のオペコードフィール
ド(例えば、フィールド66および78)を有する。
ドを検出するためにオペコードフィールド22を調べ
る。拡張オペコードは本実施例では命令フォーマット5
0を使用するように定義されるオペコードの1つである
が、即値フィールド52に含まれるビットは特定の拡張
命令用にコード化された拡張命令フォーマットによって
解釈を異にして割り当てられる。拡張命令フォーマット
は特定の拡張命令を識別する第2のオペコードフィール
ド(例えば、フィールド66および78)を有する。
【0052】拡張オペコードおよび拡張命令フォーマッ
トを追加することにより、狭い命令フォーマット20−
50を使用して多くの命令をコード化することができる
が、要望時には広い拡張命令フォーマットの柔軟性を更
に有する。拡張命令フォーマットに含まれる機能性を時
々利用するプログラムは縮小したメモリフートプリント
を達成することができるが、これはこれらのプログラム
が圧縮命令を使用して符号化され、圧縮命令の多くが1
6ビット圧縮命令であるからである。
トを追加することにより、狭い命令フォーマット20−
50を使用して多くの命令をコード化することができる
が、要望時には広い拡張命令フォーマットの柔軟性を更
に有する。拡張命令フォーマットに含まれる機能性を時
々利用するプログラムは縮小したメモリフートプリント
を達成することができるが、これはこれらのプログラム
が圧縮命令を使用して符号化され、圧縮命令の多くが1
6ビット圧縮命令であるからである。
【0053】拡張命令が例外にあった場合には、特別な
注意が必要である。例えば、マイクロプロセッサ10の
実施例は16ビット命令部分をフェッチし、拡張オペコ
ードを検出することにより拡張命令を処理することがで
きる。拡張オペコードが検出された場合には、NOPが
プロセッサコア16に送られ、拡張命令の残りの16ビ
ット部分がフェッチされる。拡張命令はデコンプレスさ
れ、NOPの後に次の命令として供給される。このよう
な実施例では、例外の検出後に、拡張命名全体が再フェ
ッチされ、再実行されることが重要である。しかしなが
ら、プロセッサコア16内の例外機能は例外に合った拡
張命名の第2の部分を示すことができる。
注意が必要である。例えば、マイクロプロセッサ10の
実施例は16ビット命令部分をフェッチし、拡張オペコ
ードを検出することにより拡張命令を処理することがで
きる。拡張オペコードが検出された場合には、NOPが
プロセッサコア16に送られ、拡張命令の残りの16ビ
ット部分がフェッチされる。拡張命令はデコンプレスさ
れ、NOPの後に次の命令として供給される。このよう
な実施例では、例外の検出後に、拡張命名全体が再フェ
ッチされ、再実行されることが重要である。しかしなが
ら、プロセッサコア16内の例外機能は例外に合った拡
張命名の第2の部分を示すことができる。
【0054】このような実施例では、例外を有して示さ
れている16ビット命令の直前の16ビット命令部分の
検査はハードウェアまたはソフトウェアで行われる。こ
のように、拡張命令による例外を検出することができ
る。ハードウェア内で使用される場合には、拡張命令の
例外は、ソフトウェアでアクセスすることができる命令
デコンプレッサ12内の特定の状態値によって示され
る。特定の状態値をアクセスすることにより、拡張命令
と非拡張命令間の例外の差を検出することができる。ま
た、ソフトウェアを使用して、命令を直接調べて、拡張
命令を検出することができる。
れている16ビット命令の直前の16ビット命令部分の
検査はハードウェアまたはソフトウェアで行われる。こ
のように、拡張命令による例外を検出することができ
る。ハードウェア内で使用される場合には、拡張命令の
例外は、ソフトウェアでアクセスすることができる命令
デコンプレッサ12内の特定の状態値によって示され
る。特定の状態値をアクセスすることにより、拡張命令
と非拡張命令間の例外の差を検出することができる。ま
た、ソフトウェアを使用して、命令を直接調べて、拡張
命令を検出することができる。
【0055】更に、命令デコンプレッサ12は、拡張命
令の一部が有効であるが、他の部分が有効でない場合を
処理する。例えば、拡張命令の2つの部分は命令キャシ
ュ14内の2つの異なるキャシュライン内に存在するこ
とができる。従って、命令の一部は命令キャシュ14か
らフェッチされるが、他の部分は命令キャシュ14内に
存在しない。この部分は残りの部分が有効になるまで命
令デコンプレッサ12内に記憶されることが必要であ
る。
令の一部が有効であるが、他の部分が有効でない場合を
処理する。例えば、拡張命令の2つの部分は命令キャシ
ュ14内の2つの異なるキャシュライン内に存在するこ
とができる。従って、命令の一部は命令キャシュ14か
らフェッチされるが、他の部分は命令キャシュ14内に
存在しない。この部分は残りの部分が有効になるまで命
令デコンプレッサ12内に記憶されることが必要であ
る。
【0056】最後に、図4(D)は、MIPS RISC 命令セ
ットのJAL 命令を明確に拡張するために使用される命令
フォーマット90である。JAL 命令はしばしばサブルー
チンコール命令として使用される。サブルーチンはコー
リングルーチンからかなり離れて(アドレス方向に)メ
モリ内に記憶される。従って、(26ビットからなる即
値フィールド92を介して)最も大きな範囲の相対オフ
セットを有することがJAL命令には重要である。更に、
交換ビット94が命令符号に含まれている。交換ビット
は目標アドレスにおける命令の圧縮/非圧縮特性を示す
ために使用される。該ビットがセットされると、目標命
令は圧縮命令になる。ビットがクリアされると、目標命
令は非圧縮命令になる。交換ビット94の値はプロセッ
サコア16内のプログラムカウンタのビット0にコピー
される。プログラムカウンタのビット0は常にゼロにな
るが、これは16ビット命令と32ビット命令がそれぞ
れ少なくとも2バイトを占有し、命令が並んだアドレス
に記憶されるからである。従って、ビットゼロは現ルー
チンの圧縮モードを記憶する有用なロケーションであ
る。ビット0がセットされると、プロセッサコア16は
フェッチアドレスを(4の代わりに)2ずつインクリメ
ントし、これにより命令デコンプレッサ12を介して1
6ビット圧縮命令をフェッチする。
ットのJAL 命令を明確に拡張するために使用される命令
フォーマット90である。JAL 命令はしばしばサブルー
チンコール命令として使用される。サブルーチンはコー
リングルーチンからかなり離れて(アドレス方向に)メ
モリ内に記憶される。従って、(26ビットからなる即
値フィールド92を介して)最も大きな範囲の相対オフ
セットを有することがJAL命令には重要である。更に、
交換ビット94が命令符号に含まれている。交換ビット
は目標アドレスにおける命令の圧縮/非圧縮特性を示す
ために使用される。該ビットがセットされると、目標命
令は圧縮命令になる。ビットがクリアされると、目標命
令は非圧縮命令になる。交換ビット94の値はプロセッ
サコア16内のプログラムカウンタのビット0にコピー
される。プログラムカウンタのビット0は常にゼロにな
るが、これは16ビット命令と32ビット命令がそれぞ
れ少なくとも2バイトを占有し、命令が並んだアドレス
に記憶されるからである。従って、ビットゼロは現ルー
チンの圧縮モードを記憶する有用なロケーションであ
る。ビット0がセットされると、プロセッサコア16は
フェッチアドレスを(4の代わりに)2ずつインクリメ
ントし、これにより命令デコンプレッサ12を介して1
6ビット圧縮命令をフェッチする。
【0057】マイクロプロセッサ10によって使用され
る圧縮命令セット内の各命令は図3の(A)〜(D)お
よび図4の(A)〜(D)に示す命令フォーマットの少
なくとも1つを使用する。オペコードフィールド22は
各命令フォーマット内に設けられ、各命令フォーマット
内の同じ場所に設けられることに注意されたい。オペコ
ードフォーマット22の符号化は、命令の残りを解釈す
るのにどの命令フォーマットが使用されるのかを決定す
る。オペコードフィールド符号の第1の部分は命令フォ
ーマット20に割り当てられ、オペコードフィールド符
号の第2の部分は命令フォーマット30に割り当てられ
る。
る圧縮命令セット内の各命令は図3の(A)〜(D)お
よび図4の(A)〜(D)に示す命令フォーマットの少
なくとも1つを使用する。オペコードフィールド22は
各命令フォーマット内に設けられ、各命令フォーマット
内の同じ場所に設けられることに注意されたい。オペコ
ードフォーマット22の符号化は、命令の残りを解釈す
るのにどの命令フォーマットが使用されるのかを決定す
る。オペコードフィールド符号の第1の部分は命令フォ
ーマット20に割り当てられ、オペコードフィールド符
号の第2の部分は命令フォーマット30に割り当てられ
る。
【0058】ここで使用されている用語「命令フィール
ド」はグループ化され、グループとして解釈される命令
内の1ビット以上を称する。例えば、オペコードフィー
ルド22は命令のオペコードとして解釈されるビットグ
ループを有する。更に、第1および第2のレジスタフィ
ールド24および26は命令のオペランドを記憶するプ
ロセッサコア16内の記憶ロケーションを識別するレジ
スタ識別子を有する。更に、即値フィールドの用語は即
値データが符号化される命令フィールドを意味する。即
値データは命令用のオペランドを形成している。また
は、即値データはオフセットとして使用されて、レジス
タ値に加えられ、これによりアドレスを生成する。更
に、即値データは分岐命令用のオフセットとして使用さ
れる。
ド」はグループ化され、グループとして解釈される命令
内の1ビット以上を称する。例えば、オペコードフィー
ルド22は命令のオペコードとして解釈されるビットグ
ループを有する。更に、第1および第2のレジスタフィ
ールド24および26は命令のオペランドを記憶するプ
ロセッサコア16内の記憶ロケーションを識別するレジ
スタ識別子を有する。更に、即値フィールドの用語は即
値データが符号化される命令フィールドを意味する。即
値データは命令用のオペランドを形成している。また
は、即値データはオフセットとして使用されて、レジス
タ値に加えられ、これによりアドレスを生成する。更
に、即値データは分岐命令用のオフセットとして使用さ
れる。
【0059】図5〜図15は、マイクロプロセッサ10
の1つの特定の実施に使用される典型的な圧縮命令セッ
トの一覧を示す表である。この特定の実施ではプロセッ
サコア16内にMIPS RISC アーキテクチャを使用してい
る。従って、表の命令欄100に示されている命令記憶
符号は、次の例外:CMPI, MOVEI, MOVE, NEG, NOT およ
び拡張を除いて、MIPS RISC アーキテクチャに定義され
ている(またはここに引用により取り入れているKane a
nd Heinrich, Appendix D, Prentic Hall PTR,Upper Sa
ddle River, New Jersey, 1992 による「MIPS RISC ア
ーキテクチャ」に記載されているように命令アセンブラ
用に定義されている)命令記憶符号に対応する。これら
の命令は次のMIPS命令に変換される(RSおよびRTは16
ビットRSおよびRTと称する)。 CMPI XORI $24, RS, imm8 MOVI ADDIV RS, $0, simm8 MOV ADD RS, $0, RT NEG SUB RS, $0, RT NOT NOR RS, $0, RT 拡張 (上記)
の1つの特定の実施に使用される典型的な圧縮命令セッ
トの一覧を示す表である。この特定の実施ではプロセッ
サコア16内にMIPS RISC アーキテクチャを使用してい
る。従って、表の命令欄100に示されている命令記憶
符号は、次の例外:CMPI, MOVEI, MOVE, NEG, NOT およ
び拡張を除いて、MIPS RISC アーキテクチャに定義され
ている(またはここに引用により取り入れているKane a
nd Heinrich, Appendix D, Prentic Hall PTR,Upper Sa
ddle River, New Jersey, 1992 による「MIPS RISC ア
ーキテクチャ」に記載されているように命令アセンブラ
用に定義されている)命令記憶符号に対応する。これら
の命令は次のMIPS命令に変換される(RSおよびRTは16
ビットRSおよびRTと称する)。 CMPI XORI $24, RS, imm8 MOVI ADDIV RS, $0, simm8 MOV ADD RS, $0, RT NEG SUB RS, $0, RT NOT NOR RS, $0, RT 拡張 (上記)
【0060】更に、命令表はいくつかの符号を使用して
いる。オペランド欄102では、符号rs, rt, xs, xt,
およびrdが使用されている。Rsおよびxsは第2のレジス
タフィールド26(または第2のレジスタフィールド7
6)を示し、rtおよびxtは第1のレジスタフィールド2
4(または第1のレジスタフィールド74)を示してい
る。同様に、rdは第3の命令フィールド32(または第
3の命令フィールド82)を示している。一実施例とし
て上述したように、第1のレジスタフィールド24、第
2のレジスタフィールド26および第3のレジスタフィ
ールド32はそれぞれ3ビットである。下記の表1はこ
れらの符号のMIPS RISC アーキテクチャにおけるレジス
タに対する(2進数で示される)フィールド符号のマッ
ピングを示している。他のマッピングも更に下記に示す
ように考えられる。また、MIPSアセンブラ約定によって
割り当てられる名称が表1に示されている。
いる。オペランド欄102では、符号rs, rt, xs, xt,
およびrdが使用されている。Rsおよびxsは第2のレジス
タフィールド26(または第2のレジスタフィールド7
6)を示し、rtおよびxtは第1のレジスタフィールド2
4(または第1のレジスタフィールド74)を示してい
る。同様に、rdは第3の命令フィールド32(または第
3の命令フィールド82)を示している。一実施例とし
て上述したように、第1のレジスタフィールド24、第
2のレジスタフィールド26および第3のレジスタフィ
ールド32はそれぞれ3ビットである。下記の表1はこ
れらの符号のMIPS RISC アーキテクチャにおけるレジス
タに対する(2進数で示される)フィールド符号のマッ
ピングを示している。他のマッピングも更に下記に示す
ように考えられる。また、MIPSアセンブラ約定によって
割り当てられる名称が表1に示されている。
【0061】
【表1】
【0062】表1に示すように、最大16のレジスタが
レジスタフィールド24,26または32を有する圧縮
命令での使用に有効である。各レジスタフィールドは3
ビットであるので、8つのレジスタのみが所与のオペコ
ード用に有効である。16のすべてのレジスタにアクセ
スできる命令は下記の命令表で2つのオペコードを割り
当てられる。これによりレジスタの選択はレジスタフィ
ールドとオペコードフィールド22の両者の関数であ
る。大きなグループのレジスタにアクセスできる選択命
令を更に設けながら、より少ないビットを使用してレジ
スタフィールドを符号化できることは有益なことであ
る。
レジスタフィールド24,26または32を有する圧縮
命令での使用に有効である。各レジスタフィールドは3
ビットであるので、8つのレジスタのみが所与のオペコ
ード用に有効である。16のすべてのレジスタにアクセ
スできる命令は下記の命令表で2つのオペコードを割り
当てられる。これによりレジスタの選択はレジスタフィ
ールドとオペコードフィールド22の両者の関数であ
る。大きなグループのレジスタにアクセスできる選択命
令を更に設けながら、より少ないビットを使用してレジ
スタフィールドを符号化できることは有益なことであ
る。
【0063】また、オペランド欄102には即値フィー
ルド32,42,64および72用の符号が示されてい
る。符号「imm 」は即値フィールドがあることを示して
いる。「imm 」の前に「s 」がある場合には、即値フィ
ールドに符号が付けられており、即値フィールドの非圧
縮命令へのデコンプレスは即値フィールドを符号拡張す
ることにより行われる。「imm 」の前に「s 」がない場
合には、即値フィールドに符号はなく、即値フィールド
の非圧縮は即値フィールドをゼロ拡張する。一実施例で
は、ロード/ストア命令の即値フィールドの非圧縮はハ
ーフワードに対しては1ビット、ワードに対して2ビッ
ト即値ビットを右回転し、それからハーフワードに対し
ては1ビット、ワードに対しては2ビット左に即値ビッ
トをシフトする。実際は、(16ビット命令フォーマッ
トにおいて)ワードに対しては7ビットの即値フィール
ドが設けられ、ハーフワードに対して6ビットの速度フ
ィールドが設けられる。MIPS RISC アーキテクチャは、
ロード/ストア命令に対応するデータアドレスが典型的
な圧縮命令セットに含まれる各命令用に整列されること
を定めている。従って、最下位ビット(ハーフワード用
の)および次の最下位ビット(ワード用の)はゼロに設
定される。圧縮された即値フィールドのビットはこれら
のビットを特定するために使用されないことが必要であ
る。最後に、「imm 」は即値フィールドに含まれるビッ
ト数を示す数字を後に付けられる。
ルド32,42,64および72用の符号が示されてい
る。符号「imm 」は即値フィールドがあることを示して
いる。「imm 」の前に「s 」がある場合には、即値フィ
ールドに符号が付けられており、即値フィールドの非圧
縮命令へのデコンプレスは即値フィールドを符号拡張す
ることにより行われる。「imm 」の前に「s 」がない場
合には、即値フィールドに符号はなく、即値フィールド
の非圧縮は即値フィールドをゼロ拡張する。一実施例で
は、ロード/ストア命令の即値フィールドの非圧縮はハ
ーフワードに対しては1ビット、ワードに対して2ビッ
ト即値ビットを右回転し、それからハーフワードに対し
ては1ビット、ワードに対しては2ビット左に即値ビッ
トをシフトする。実際は、(16ビット命令フォーマッ
トにおいて)ワードに対しては7ビットの即値フィール
ドが設けられ、ハーフワードに対して6ビットの速度フ
ィールドが設けられる。MIPS RISC アーキテクチャは、
ロード/ストア命令に対応するデータアドレスが典型的
な圧縮命令セットに含まれる各命令用に整列されること
を定めている。従って、最下位ビット(ハーフワード用
の)および次の最下位ビット(ワード用の)はゼロに設
定される。圧縮された即値フィールドのビットはこれら
のビットを特定するために使用されないことが必要であ
る。最後に、「imm 」は即値フィールドに含まれるビッ
ト数を示す数字を後に付けられる。
【0064】オペコードフィールド22および機能フィ
ールド28もまたデコンプレスされる。更に詳しくは、
オペコードフィールド22および機能フィールド28は
図5〜図15に示す表に従ってMIPS RISC アーキテクチ
ャ内の命令を識別する。非圧縮命令のオペコードフィー
ルドおよび機能フィールドはMIPS RISC アーキテクチャ
の定義に従って符号化される。
ールド28もまたデコンプレスされる。更に詳しくは、
オペコードフィールド22および機能フィールド28は
図5〜図15に示す表に従ってMIPS RISC アーキテクチ
ャ内の命令を識別する。非圧縮命令のオペコードフィー
ルドおよび機能フィールドはMIPS RISC アーキテクチャ
の定義に従って符号化される。
【0065】図5および図6は、それぞれ表110およ
び112を示している。表110および112は図3の
(A)に示す命令フォーマット20を使用する典型的な
圧縮命令セットからの命令を示している。命令欄10
0、オペランド欄102、オペコード欄106および機
能欄104が設けられている。オペコード欄104およ
び機能欄106は16進数であり、それぞれオペコード
フィールド22および機能フィールド28に対応してい
る。
び112を示している。表110および112は図3の
(A)に示す命令フォーマット20を使用する典型的な
圧縮命令セットからの命令を示している。命令欄10
0、オペランド欄102、オペコード欄106および機
能欄104が設けられている。オペコード欄104およ
び機能欄106は16進数であり、それぞれオペコード
フィールド22および機能フィールド28に対応してい
る。
【0066】表110には、機能欄104に「imm5」符
号を持ついくつかの命令がある。「imm5」符号は表11
0内のロード/ストア命令用にあり、機能フィールド2
8がこれらの命令の即値フィールドとして使用されるこ
とを示している。他の命令では、機能フィールド28は
オペコードフィールド22と協力して使用されて、圧縮
命令セット内の特定の命令を識別する。
号を持ついくつかの命令がある。「imm5」符号は表11
0内のロード/ストア命令用にあり、機能フィールド2
8がこれらの命令の即値フィールドとして使用されるこ
とを示している。他の命令では、機能フィールド28は
オペコードフィールド22と協力して使用されて、圧縮
命令セット内の特定の命令を識別する。
【0067】更に、オペコード1dは表110に特別(spe
cial)として示されている。この特別な命令は機能フィ
ールド28に対して特別な解釈を有する。特に、機能フ
ィールドの最下位ビットがクリアされている場合には、
該命令は次のように定義される: ADDIU rt, rs, simm4 ここにおいて、「simm4 」オペランドは機能フィールド
28の残りのビットから形成される。機能フィールド2
8の最上位ビットがセットされている場合には、該命令
は2つの特別な場合を除いて次のように定義される: ADDIU xt, xs, simm4 第2のレジスタフィールド26がゼロに符号化される
と、該命令は次のようになる: MOVEI xt, imm4 ここにおいて、imm4オペランドは再度機能フィールド2
8の残りから形成される。最後に、第2のレジスタフィ
ールド26が5(16進数)に符号化されると、該命令
は次のように定義される: ADDIU sp, simm9 ここにおいて、simm9 オペランドは機能フィールド28
および第1のレジスタフィールド24の残りのビットか
ら形成される。simm9 オペランドの下位2ビットはゼロ
にセットされる。
cial)として示されている。この特別な命令は機能フィ
ールド28に対して特別な解釈を有する。特に、機能フ
ィールドの最下位ビットがクリアされている場合には、
該命令は次のように定義される: ADDIU rt, rs, simm4 ここにおいて、「simm4 」オペランドは機能フィールド
28の残りのビットから形成される。機能フィールド2
8の最上位ビットがセットされている場合には、該命令
は2つの特別な場合を除いて次のように定義される: ADDIU xt, xs, simm4 第2のレジスタフィールド26がゼロに符号化される
と、該命令は次のようになる: MOVEI xt, imm4 ここにおいて、imm4オペランドは再度機能フィールド2
8の残りから形成される。最後に、第2のレジスタフィ
ールド26が5(16進数)に符号化されると、該命令
は次のように定義される: ADDIU sp, simm9 ここにおいて、simm9 オペランドは機能フィールド28
および第1のレジスタフィールド24の残りのビットか
ら形成される。simm9 オペランドの下位2ビットはゼロ
にセットされる。
【0068】表110に示されるSLT およびSLTU命令の
デスティネーションは一実施例によればt8レジスタ(レ
ジスタ$24)である。
デスティネーションは一実施例によればt8レジスタ(レ
ジスタ$24)である。
【0069】表112は、いくつかの命令の「imm3」お
よび「imm6」オペランドを示している。imm3命令は第2
のレジスタフィールド26に符号化され、「imm6」オペ
ランドは第2のレジスタフィールド26および第1のレ
ジスタフィールド24の両方に符号化される。
よび「imm6」オペランドを示している。imm3命令は第2
のレジスタフィールド26に符号化され、「imm6」オペ
ランドは第2のレジスタフィールド26および第1のレ
ジスタフィールド24の両方に符号化される。
【0070】更に、表112は、第2のレジスタフィー
ルド26をオペランドとして有するジャンプレジスタ命
令(JR)を有する。しかしながら、一実施例では第1の
レジスタフィールド24のサブフィールドRT1を第2
のレジスタフィールド26と協力して使用され、JR命令
のMIPS RISC アーキテクチャレジスタのいずれかを特定
する。
ルド26をオペランドとして有するジャンプレジスタ命
令(JR)を有する。しかしながら、一実施例では第1の
レジスタフィールド24のサブフィールドRT1を第2
のレジスタフィールド26と協力して使用され、JR命令
のMIPS RISC アーキテクチャレジスタのいずれかを特定
する。
【0071】次に、図7を参照すると、表114は命令
欄100、オペランド欄102、オペコード欄106お
よび機能欄104を有する。表114は図3の(B)に
示す命令フォーマット30を使用する典型的な命令セッ
トからの命令を示している。表114内のある命令はハ
ードコード化(hardcoded) されたデスティネーションレ
ジスタを有する(すなわち、デスティネーションレジス
タは異なるオペコードを使用することによる以外、プロ
グラマによって選択することはできない)。これらの命
令では、第3のレジスタフィールド32は機能フィール
ド34と組み合わせられて、機能欄104に示す機能フ
ィールド符号を記憶する。更に、機能欄104およびオ
ペランドフィールド102の即値オペランドを有する命
令が示されている。この命令は機能フィールド34と協
力して第2のレジスタフィールド26を使用し、命令に
よって使用される対応する即値フィールドを符号化す
る。
欄100、オペランド欄102、オペコード欄106お
よび機能欄104を有する。表114は図3の(B)に
示す命令フォーマット30を使用する典型的な命令セッ
トからの命令を示している。表114内のある命令はハ
ードコード化(hardcoded) されたデスティネーションレ
ジスタを有する(すなわち、デスティネーションレジス
タは異なるオペコードを使用することによる以外、プロ
グラマによって選択することはできない)。これらの命
令では、第3のレジスタフィールド32は機能フィール
ド34と組み合わせられて、機能欄104に示す機能フ
ィールド符号を記憶する。更に、機能欄104およびオ
ペランドフィールド102の即値オペランドを有する命
令が示されている。この命令は機能フィールド34と協
力して第2のレジスタフィールド26を使用し、命令に
よって使用される対応する即値フィールドを符号化す
る。
【0072】図8と図9は、それぞれ命令フォーマット
40および50を使用する典型的な圧縮命令セットから
の命令を示す表116および118である。拡張命令が
表118に示されていることに注意されたい。しかしな
がら、拡張命令は、命令が命令フォーマット60、70
または80の1つを使用する32ビット圧縮命令である
ことを実際には示している。
40および50を使用する典型的な圧縮命令セットから
の命令を示す表116および118である。拡張命令が
表118に示されていることに注意されたい。しかしな
がら、拡張命令は、命令が命令フォーマット60、70
または80の1つを使用する32ビット圧縮命令である
ことを実際には示している。
【0073】次に、図10と図11を参照すると、表1
20および122が示されている。表120および12
2は図4の(B)に示した命令フォーマット70を使用
して符号化された典型的な圧縮命令セットからの命令を
示している。
20および122が示されている。表120および12
2は図4の(B)に示した命令フォーマット70を使用
して符号化された典型的な圧縮命令セットからの命令を
示している。
【0074】表120は命令欄100およびオペランド
欄102を有し、更にオペコード欄108を有してい
る。オペコード欄108は、オペコード欄108に示さ
れているオペコード符号がオペコードフィールド78に
対応していることを除いて、オペコード欄106に類似
している。
欄102を有し、更にオペコード欄108を有してい
る。オペコード欄108は、オペコード欄108に示さ
れているオペコード符号がオペコードフィールド78に
対応していることを除いて、オペコード欄106に類似
している。
【0075】表122は第1のレジスタフィールド74
に対応するRT欄109を有する。表122に示す命令の
RTフィールドの符号はどの命令が選択されたかを示して
いる。表122に示す命令はオペコードフィールド78
の特別な符号化を共有している。一実施例では、特別な
符号は0(16進数)である。
に対応するRT欄109を有する。表122に示す命令の
RTフィールドの符号はどの命令が選択されたかを示して
いる。表122に示す命令はオペコードフィールド78
の特別な符号化を共有している。一実施例では、特別な
符号は0(16進数)である。
【0076】図12〜15は、命令フォーマット80に
従って符号化される典型的な圧縮命令セットからの命令
を示している表124,126,128および130で
ある。表124,126および130は、機能フィール
ド84の符号に対応する機能欄107を有する。表12
8は下記に更に詳細に説明するRS, RT欄105を有す
る。
従って符号化される典型的な圧縮命令セットからの命令
を示している表124,126,128および130で
ある。表124,126および130は、機能フィール
ド84の符号に対応する機能欄107を有する。表12
8は下記に更に詳細に説明するRS, RT欄105を有す
る。
【0077】表124のオペランド欄102はある命令
の即値オペランドを有する。「imm5」オペランドは第2
のレジスタフィールド76に符号化される。「imm15 」
オペランドは組み合わせられた第1のレジスタフィール
ド74、第2のレジスタフィールド76および第3のレ
ジスタフィールド82に符号化される。
の即値オペランドを有する。「imm5」オペランドは第2
のレジスタフィールド76に符号化される。「imm15 」
オペランドは組み合わせられた第1のレジスタフィール
ド74、第2のレジスタフィールド76および第3のレ
ジスタフィールド82に符号化される。
【0078】表128に示す命令は、RS, RT欄105に
示すように、第2のレジスタフィールド76の符号によ
って識別される。ある命令は第1のレジスタフィールド
74と協力して第2のレジスタフィールド76によって
識別される。RS, RT欄105のRT部分にアステリスクの
ある命令は第2のレジスタフィールド76によって識別
され、RS, RT欄105にアステリスクのない命令は第1
のレジスタフィールド74と協力して第2のレジスタフ
ィールド76によって識別される。第1のレジスタフィ
ールド74によって識別されない命令は第1のレジスタ
フィールド74を使用して、オペランドを符号化する。
表128および130に示す命令はCOP0ビット86がセ
ットされる命令であり、表124および126に示す命
令はCOP086がクリアされて符号化される。
示すように、第2のレジスタフィールド76の符号によ
って識別される。ある命令は第1のレジスタフィールド
74と協力して第2のレジスタフィールド76によって
識別される。RS, RT欄105のRT部分にアステリスクの
ある命令は第2のレジスタフィールド76によって識別
され、RS, RT欄105にアステリスクのない命令は第1
のレジスタフィールド74と協力して第2のレジスタフ
ィールド76によって識別される。第1のレジスタフィ
ールド74によって識別されない命令は第1のレジスタ
フィールド74を使用して、オペランドを符号化する。
表128および130に示す命令はCOP0ビット86がセ
ットされる命令であり、表124および126に示す命
令はCOP086がクリアされて符号化される。
【0079】表128のある命令は「imm6」オペランド
を有する。「imm6」オペランドは機能フィールド84に
符号化される。更に、機能フィールド84は、下位ビッ
トがドントケアであることを「x」が示しているとし
て、第2のレジスタフィールド76が1x(16進数)
に符号化される場合に表130に示す命令を表示するた
めに使用される。
を有する。「imm6」オペランドは機能フィールド84に
符号化される。更に、機能フィールド84は、下位ビッ
トがドントケアであることを「x」が示しているとし
て、第2のレジスタフィールド76が1x(16進数)
に符号化される場合に表130に示す命令を表示するた
めに使用される。
【0080】次に、図16を参照すると、第1のアドレ
シングウィンドウ150および第2のアドレシングウィ
ンドウ152がマイクロプロセッサ10の一実施例によ
り示されている。アドレシングウィンドウ150の中央
にベースレジスタの値がある(アドレシングウィンドウ
150の左側にReg.として示されている)。ベースレジ
スタの値は主メモリサブシステム内のアドレスを識別す
る。アドレシングウィンドウ150は、圧縮されていな
い命令セットの一実施例による圧縮されていない命令セ
ットのロード/ストア命令にアクセスしうるベースレジ
スタの値の周囲のアドレス範囲を示している。圧縮され
ていない命令セットは、ロード/ストア命令がベースレ
ジスタに記憶されている値と16ビットの符号付き即値
フィールドの和によりメモリオペランドのアドレスを形
成することを明記している。このような実施例では、ベ
ースレジスタよりも大きな32767の上限を有し、ベ
ースレジスタよりも小さな32768の下限を有する。
他の実施例はより大きなまたはより小さな範囲を有す
る。ここに使用されている用語「ベースレジスタ」は、
命令によって作動するメモリオペランドのアドレスを形
成するために符号付き即値フィールドが加算されるベー
スアドレスを記憶し、ロード/ストア命令によって特定
されるレジスタを意味する。
シングウィンドウ150および第2のアドレシングウィ
ンドウ152がマイクロプロセッサ10の一実施例によ
り示されている。アドレシングウィンドウ150の中央
にベースレジスタの値がある(アドレシングウィンドウ
150の左側にReg.として示されている)。ベースレジ
スタの値は主メモリサブシステム内のアドレスを識別す
る。アドレシングウィンドウ150は、圧縮されていな
い命令セットの一実施例による圧縮されていない命令セ
ットのロード/ストア命令にアクセスしうるベースレジ
スタの値の周囲のアドレス範囲を示している。圧縮され
ていない命令セットは、ロード/ストア命令がベースレ
ジスタに記憶されている値と16ビットの符号付き即値
フィールドの和によりメモリオペランドのアドレスを形
成することを明記している。このような実施例では、ベ
ースレジスタよりも大きな32767の上限を有し、ベ
ースレジスタよりも小さな32768の下限を有する。
他の実施例はより大きなまたはより小さな範囲を有す
る。ここに使用されている用語「ベースレジスタ」は、
命令によって作動するメモリオペランドのアドレスを形
成するために符号付き即値フィールドが加算されるベー
スアドレスを記憶し、ロード/ストア命令によって特定
されるレジスタを意味する。
【0081】表110に示すように、例えば典型的な圧
縮命令セットの16ビット部分内のロード/ストア命令
は5ビット即値フィールドを有する。このフィールドは
ワードサイズのメモリオペランド用に2ビットを右に回
転し、それから2ビットを左にシフトし、7ビットの即
値フィールドを形成する(一実施例では5ビットを使用
して形成される即値フィールドの最も大きなもの)。そ
れから、7ビット即値フィールドはゼロ拡張され、対応
する非圧縮命令のベースレジスタからの正のオフセット
を形成する。従って、アドレスの下位範囲154は圧縮
命令によるアクセス用に有効である。アドレシングウィ
ンドウ150内において、下位範囲154はベースレジ
スタよりも127大きい上限とベースレジスタの下限を
有する。しかしながら、下位範囲154は実施例毎に大
きさが変化しうる。
縮命令セットの16ビット部分内のロード/ストア命令
は5ビット即値フィールドを有する。このフィールドは
ワードサイズのメモリオペランド用に2ビットを右に回
転し、それから2ビットを左にシフトし、7ビットの即
値フィールドを形成する(一実施例では5ビットを使用
して形成される即値フィールドの最も大きなもの)。そ
れから、7ビット即値フィールドはゼロ拡張され、対応
する非圧縮命令のベースレジスタからの正のオフセット
を形成する。従って、アドレスの下位範囲154は圧縮
命令によるアクセス用に有効である。アドレシングウィ
ンドウ150内において、下位範囲154はベースレジ
スタよりも127大きい上限とベースレジスタの下限を
有する。しかしながら、下位範囲154は実施例毎に大
きさが変化しうる。
【0082】下位範囲154は多くのロード/ストア命
令に対して適切に動作するが、グローバルポインタレジ
スタと使用するために別の下位範囲を使用してもよい。
グローバルポインタレジスタはグローバル変数を記憶す
るために使用されるメモリの領域を見つけるためにソフ
トウェア約定で指定されるレジスタである。グローバル
変数はプログラム内のいずれかのルーチンからのアクセ
ス用に有効な変数である。対照的に、ローカル変数は典
型的には特定のルーチンまたは特定のルーチングループ
にのみアクセスすることができる。MIPS命令セットで
は、例えレジスタ$28 はしばしばグローバルポインタレ
ジスタとして使用される。
令に対して適切に動作するが、グローバルポインタレジ
スタと使用するために別の下位範囲を使用してもよい。
グローバルポインタレジスタはグローバル変数を記憶す
るために使用されるメモリの領域を見つけるためにソフ
トウェア約定で指定されるレジスタである。グローバル
変数はプログラム内のいずれかのルーチンからのアクセ
ス用に有効な変数である。対照的に、ローカル変数は典
型的には特定のルーチンまたは特定のルーチングループ
にのみアクセスすることができる。MIPS命令セットで
は、例えレジスタ$28 はしばしばグローバルポインタレ
ジスタとして使用される。
【0083】従って、グローバルポインタレジスタの周
りのメモリ領域はグローバル変数の表として見ることが
できる。各グローバル変数は表内でオフセットを割り当
てられる。オフセットは、グローバル変数を見つけるた
めにグローバルポインタレジスタに加えられる特定の即
値フィールド値に対応する。図16に示す実施例では、
例えばアドレシングウィンドウ150および152の左
側に沿って示すように64キロバイトの表がグローバル
変数用に割り当てられる。
りのメモリ領域はグローバル変数の表として見ることが
できる。各グローバル変数は表内でオフセットを割り当
てられる。オフセットは、グローバル変数を見つけるた
めにグローバルポインタレジスタに加えられる特定の即
値フィールド値に対応する。図16に示す実施例では、
例えばアドレシングウィンドウ150および152の左
側に沿って示すように64キロバイトの表がグローバル
変数用に割り当てられる。
【0084】圧縮即値フィールドがアドレシングウィン
ドウ150用に記載されているようにデコンプレスされ
る場合には、グローバル変数表は圧縮されていない命令
にアクセスしうる2つの下位範囲156および158の
間にある(下位範囲154に対応する)圧縮命令にアク
セスしうる部分を有する。上述したように、マイクロプ
ロセッサ10はいくつかのルーチンが圧縮されていない
命令で符号化されているが他のルーチンが圧縮命令で符
号化されているプログラムをサポートする。特定のプロ
グラムにおけるグローバル変数の割り当ては、アドレシ
ングウィンドウ150の圧縮されていないグローバル変
数の下位範囲156および158の分割によって複雑化
される。グローバル変数は例えば下位範囲158に割り
当てることができ、それからグローバル変数の割り当て
は(圧縮されていない命令用の)下位範囲156に続い
ていなければならない。すなわち、下位範囲154は圧
縮されていない命令にアクセスしうるグローバル変数用
にバイパスされなければならない。
ドウ150用に記載されているようにデコンプレスされ
る場合には、グローバル変数表は圧縮されていない命令
にアクセスしうる2つの下位範囲156および158の
間にある(下位範囲154に対応する)圧縮命令にアク
セスしうる部分を有する。上述したように、マイクロプ
ロセッサ10はいくつかのルーチンが圧縮されていない
命令で符号化されているが他のルーチンが圧縮命令で符
号化されているプログラムをサポートする。特定のプロ
グラムにおけるグローバル変数の割り当ては、アドレシ
ングウィンドウ150の圧縮されていないグローバル変
数の下位範囲156および158の分割によって複雑化
される。グローバル変数は例えば下位範囲158に割り
当てることができ、それからグローバル変数の割り当て
は(圧縮されていない命令用の)下位範囲156に続い
ていなければならない。すなわち、下位範囲154は圧
縮されていない命令にアクセスしうるグローバル変数用
にバイパスされなければならない。
【0085】マイクロプロセッサ10はアドレシングウ
ィンドウ152に至るグローバルポインタ(GP)レジス
タを使用するロード/ストア命令用の圧縮された即値フ
ィールドの非圧縮を使用することができる。アドレシン
グウィンドウ152は圧縮命令にアクセスしうる下位範
囲160および圧縮されていない命令にアクセスしうる
下位範囲162を有する。下位範囲162は連続したメ
モリブロックであることが有利である。圧縮されていな
い命令によるアクセス用のグローバル変数は下位範囲1
62に割り付けられるが、圧縮命令によるアクセス用の
グローバル変数は下位範囲160に割り付けられる。本
質的に、下位範囲160および162は、それぞれ圧縮
命令および圧縮されていない命令によるアクセス用のグ
ローバル変数の異なる表を構成する。
ィンドウ152に至るグローバルポインタ(GP)レジス
タを使用するロード/ストア命令用の圧縮された即値フ
ィールドの非圧縮を使用することができる。アドレシン
グウィンドウ152は圧縮命令にアクセスしうる下位範
囲160および圧縮されていない命令にアクセスしうる
下位範囲162を有する。下位範囲162は連続したメ
モリブロックであることが有利である。圧縮されていな
い命令によるアクセス用のグローバル変数は下位範囲1
62に割り付けられるが、圧縮命令によるアクセス用の
グローバル変数は下位範囲160に割り付けられる。本
質的に、下位範囲160および162は、それぞれ圧縮
命令および圧縮されていない命令によるアクセス用のグ
ローバル変数の異なる表を構成する。
【0086】アドレシングウィンドウ152は、圧縮解
除即値フィールドの最上位ビットがセットされるという
ことを除いて、上述した圧縮即値フィールドをデコンプ
レスすることにより達成される。圧縮即値フィールドが
2進数ゼロで符号化されると、圧縮解除即値フィールド
は8000(16進数)である。圧縮解除即値フィール
ドがロード/ストア命令用の符号付きフィールドとして
解釈されると、8000の値は圧縮解除即値フィールド
で有効な最も負の数である。圧縮即値フィールドの他の
符号は下位範囲160を構成する負の数にデコンプレス
される。下位範囲160は図16の実施例に示すように
アドレシングウィンドウ152によって表されるアドレ
ス範囲の下限を形成している。
除即値フィールドの最上位ビットがセットされるという
ことを除いて、上述した圧縮即値フィールドをデコンプ
レスすることにより達成される。圧縮即値フィールドが
2進数ゼロで符号化されると、圧縮解除即値フィールド
は8000(16進数)である。圧縮解除即値フィール
ドがロード/ストア命令用の符号付きフィールドとして
解釈されると、8000の値は圧縮解除即値フィールド
で有効な最も負の数である。圧縮即値フィールドの他の
符号は下位範囲160を構成する負の数にデコンプレス
される。下位範囲160は図16の実施例に示すように
アドレシングウィンドウ152によって表されるアドレ
ス範囲の下限を形成している。
【0087】ここに使用されている用語のメモリオペラ
ンドは主メモリサブシステム内のメモリロケーションに
記憶された値を意味する。ロード命令はメモリオペラン
ドをマイクロプロセッサ10内のレジスタに転送するた
めに使用される。逆に、ストア命令はレジスタに記憶さ
れている値をメモリオペランドの記憶ロケーションに転
送するために使用される。メモリオペランドは種々のサ
イズのものである(すなわち、バイト数)。一実施例で
は、バイト、ハーフワード、およびワードの3つのサイ
ズが有効である。ハーフワードは2バイトから構成さ
れ、ワードは4バイトから構成される。他のメモリオペ
ランドのサイズは他の実施例用に考えられる。
ンドは主メモリサブシステム内のメモリロケーションに
記憶された値を意味する。ロード命令はメモリオペラン
ドをマイクロプロセッサ10内のレジスタに転送するた
めに使用される。逆に、ストア命令はレジスタに記憶さ
れている値をメモリオペランドの記憶ロケーションに転
送するために使用される。メモリオペランドは種々のサ
イズのものである(すなわち、バイト数)。一実施例で
は、バイト、ハーフワード、およびワードの3つのサイ
ズが有効である。ハーフワードは2バイトから構成さ
れ、ワードは4バイトから構成される。他のメモリオペ
ランドのサイズは他の実施例用に考えられる。
【0088】図17を参照すると、ロード/ストア命令
の即値フィールドをデコンプレスするための命令デコン
プレッサ12内の典型的なハードウェアのブロック図が
示されている。図17に示す典型的なハードウェアの多
重コピーを使用して、多重ロード/ストア命令を同時に
デコンプレスすることができることに注意されたい。し
かしながら、同様なハードウェアをマイクロプロセッサ
10A内に使用することができる。典型的なハードウェ
アは即値フィールドデコンプレッサ170とレジスタデ
コーダ172を有する。
の即値フィールドをデコンプレスするための命令デコン
プレッサ12内の典型的なハードウェアのブロック図が
示されている。図17に示す典型的なハードウェアの多
重コピーを使用して、多重ロード/ストア命令を同時に
デコンプレスすることができることに注意されたい。し
かしながら、同様なハードウェアをマイクロプロセッサ
10A内に使用することができる。典型的なハードウェ
アは即値フィールドデコンプレッサ170とレジスタデ
コーダ172を有する。
【0089】命令が命令キャシュ14Bから命令デコン
プレッサ12Bに入力されると、ロード/ストア命令用
の圧縮即値フィールドを有する命令の一部が圧縮即値バ
ス174を介して即値アドレスデコンプレッサ170に
入力される。図3〜図15に記載されている典型的な命
令セットの場合、圧縮即値フィールドは機能フィールド
28(図3の(A)に示す)を有する。更に、圧縮ロー
ド/ストア命令用のベースレジスタフィールドはベース
レジスタバス176を介して入力される。図3〜図15
に示す典型的な命令セットでは、ベースレジスタフィー
ルドは第2のレジスタフィールドを有する。
プレッサ12Bに入力されると、ロード/ストア命令用
の圧縮即値フィールドを有する命令の一部が圧縮即値バ
ス174を介して即値アドレスデコンプレッサ170に
入力される。図3〜図15に記載されている典型的な命
令セットの場合、圧縮即値フィールドは機能フィールド
28(図3の(A)に示す)を有する。更に、圧縮ロー
ド/ストア命令用のベースレジスタフィールドはベース
レジスタバス176を介して入力される。図3〜図15
に示す典型的な命令セットでは、ベースレジスタフィー
ルドは第2のレジスタフィールドを有する。
【0090】レジスタデコーダ172はベースレジスタ
バス176上で識別されるレジスタを解読する。ベース
レジスタがグローバルポインタレジスタである場合、レ
ジスタデコーダ172はGP信号をGPライン178を
介して即値フィールドデコンプレッサ170に供給す
る。そうでない場合には、レジスタデコーダ172はG
P信号を出力しない。
バス176上で識別されるレジスタを解読する。ベース
レジスタがグローバルポインタレジスタである場合、レ
ジスタデコーダ172はGP信号をGPライン178を
介して即値フィールドデコンプレッサ170に供給す
る。そうでない場合には、レジスタデコーダ172はG
P信号を出力しない。
【0091】即値フィールドデコンプレッサ170はG
P信号によって2つの方法の1つで圧縮即値フィールド
をデコンプレスする。GP信号が出力されない場合に
は、即値フィールドデコンプレッサ170は圧縮解除即
値フィールドの最上位ビットをクリアする。逆に、GP
信号が出力される場合には、即値フィールドデコンプレ
ッサ170は即値フィールドの最上位ビットをセットす
る。従って、グローバルポインタレジスタ以外のレジス
タがベースレジスタとして使用される場合には、正のオ
フセットが形成される。グローバルポインタレジスタが
ベースレジスタとして使用される場合には、負のオフセ
ットが形成される。即値フィールドデコンプレッサ17
0は圧縮解除即値バス180上に圧縮解除即値フィール
ドを伝達する。
P信号によって2つの方法の1つで圧縮即値フィールド
をデコンプレスする。GP信号が出力されない場合に
は、即値フィールドデコンプレッサ170は圧縮解除即
値フィールドの最上位ビットをクリアする。逆に、GP
信号が出力される場合には、即値フィールドデコンプレ
ッサ170は即値フィールドの最上位ビットをセットす
る。従って、グローバルポインタレジスタ以外のレジス
タがベースレジスタとして使用される場合には、正のオ
フセットが形成される。グローバルポインタレジスタが
ベースレジスタとして使用される場合には、負のオフセ
ットが形成される。即値フィールドデコンプレッサ17
0は圧縮解除即値バス180上に圧縮解除即値フィール
ドを伝達する。
【0092】図18は、典型的な圧縮命令セットの一実
施例に係わるロード/ストア命令用に生成される圧縮解
除即値フィールドを示している。ベースレジスタとして
グローバルポインタレジスタを使用しないロード/スト
ア命令の圧縮即値フィールドは符号182で示すように
デコンプレスされる。バイト、ハーフワードおよびワー
ド用の非圧縮が別々に示され、圧縮解除即値フィールド
(またはオフセット)の各ビット位置は数字または
「L」で表されている。圧縮即値フィールドからのビッ
トが数字により非圧縮フィールドのそれぞれのビットロ
ケーションに示されている。圧縮即値フィールドの最下
位ビットは数字0で表され、圧縮即値フィールドの最上
位ビットは4で表されている。文字「L」は2進数0に
セットされているビット位置を示すために使用されてい
る。
施例に係わるロード/ストア命令用に生成される圧縮解
除即値フィールドを示している。ベースレジスタとして
グローバルポインタレジスタを使用しないロード/スト
ア命令の圧縮即値フィールドは符号182で示すように
デコンプレスされる。バイト、ハーフワードおよびワー
ド用の非圧縮が別々に示され、圧縮解除即値フィールド
(またはオフセット)の各ビット位置は数字または
「L」で表されている。圧縮即値フィールドからのビッ
トが数字により非圧縮フィールドのそれぞれのビットロ
ケーションに示されている。圧縮即値フィールドの最下
位ビットは数字0で表され、圧縮即値フィールドの最上
位ビットは4で表されている。文字「L」は2進数0に
セットされているビット位置を示すために使用されてい
る。
【0093】ベースレジスタとしてグローバルポインタ
レジスタを使用するロード/ストア命令のバイト、ハー
フワードおよびワードに対応する圧縮解除即値フィール
ドが符号184で示されている。符号182で示される
非圧縮フィールドと同様に、符号184で示される非圧
縮フィールドは圧縮即値フィールドからのビットを充填
されるビット位置の数字を示し、文字「L」は2進数0
にセットされるビット位置を示すために使用されてい
る。更に、各非圧縮オフセットの最上位ビットは2進数
1(文字「H」で示す)にセットされる。
レジスタを使用するロード/ストア命令のバイト、ハー
フワードおよびワードに対応する圧縮解除即値フィール
ドが符号184で示されている。符号182で示される
非圧縮フィールドと同様に、符号184で示される非圧
縮フィールドは圧縮即値フィールドからのビットを充填
されるビット位置の数字を示し、文字「L」は2進数0
にセットされるビット位置を示すために使用されてい
る。更に、各非圧縮オフセットの最上位ビットは2進数
1(文字「H」で示す)にセットされる。
【0094】次に、図19を参照すると、図17に示す
実施例によって命令をデコンプレスするために命令デコ
ンプレッサ12で実施される作用を示すフローチャート
が図示されている。図10に示すステップは事実直列に
図示されているが、種々のステップを並列に実施するこ
とができることを理解されたい。
実施例によって命令をデコンプレスするために命令デコ
ンプレッサ12で実施される作用を示すフローチャート
が図示されている。図10に示すステップは事実直列に
図示されているが、種々のステップを並列に実施するこ
とができることを理解されたい。
【0095】命令デコンプレッサ12は、命令がロード
/ストア命令であるかどうか決定する(判定ブロック1
90)。命令がロード/ストア命令でない場合には、命
令は圧縮命令(図3〜図15に示すような)と対応する
非圧縮命令との間のマッピングに従って拡張される(ス
テップ192)。命令がロード/ストア命令である場合
には、該命令で特定されるベースレジスタはチェックさ
れる(判定ブロック196)。ベースレジスタがグロー
バルポインタレジスタである場合、即値フィールドは図
18の符号184で示すようにデコンプレスされる(ス
テップ194)。または、ベースレジスタがグローバル
ポインタレジスタでない場合には、即値フィールドは図
18の符号182で示すようにデコンプレスされる(ス
テップ192)。
/ストア命令であるかどうか決定する(判定ブロック1
90)。命令がロード/ストア命令でない場合には、命
令は圧縮命令(図3〜図15に示すような)と対応する
非圧縮命令との間のマッピングに従って拡張される(ス
テップ192)。命令がロード/ストア命令である場合
には、該命令で特定されるベースレジスタはチェックさ
れる(判定ブロック196)。ベースレジスタがグロー
バルポインタレジスタである場合、即値フィールドは図
18の符号184で示すようにデコンプレスされる(ス
テップ194)。または、ベースレジスタがグローバル
ポインタレジスタでない場合には、即値フィールドは図
18の符号182で示すようにデコンプレスされる(ス
テップ192)。
【0096】グローバルポインタレジスタ用の異なる方
法でロード/ストアオフセットをデコンプレスすること
に加えて、マイクロプロセッサ10はどのタイプの命令
がマイクロプロセッサ10によって実行中であるかを表
示するための圧縮モードをサポートする(すなわち、圧
縮または圧縮されていない)。図20は命令デコンプレ
ッサ12の一実施例を示すブロック図である。図示の部
分はマイクロプロセッサ10によって実行される各ルー
チンの圧縮モードを決定する。図示の部分はマイクロプ
ロセッサ10Bに適しているものであり、同様な部分は
マイクロプロセッサ10Aによって使用することができ
る。図20はモード検出器200を示している。
法でロード/ストアオフセットをデコンプレスすること
に加えて、マイクロプロセッサ10はどのタイプの命令
がマイクロプロセッサ10によって実行中であるかを表
示するための圧縮モードをサポートする(すなわち、圧
縮または圧縮されていない)。図20は命令デコンプレ
ッサ12の一実施例を示すブロック図である。図示の部
分はマイクロプロセッサ10によって実行される各ルー
チンの圧縮モードを決定する。図示の部分はマイクロプ
ロセッサ10Bに適しているものであり、同様な部分は
マイクロプロセッサ10Aによって使用することができ
る。図20はモード検出器200を示している。
【0097】命令がプロセッサコア16によってフェッ
チされると、命令はモード検出器200によって命令バ
ス202上で受信される。モード検出器200はジャン
プおよびリンク(JAL) 命令がフェッチされた時を検出
し、更に交換ビット94をチェックする。交換ビット9
4がセットされると、JAL 命令の目標アドレスにおける
ルーチンは圧縮命令を有する。従って、目標ルーチンの
圧縮モードは圧縮される。または、交換ビット94はク
リアされる。この場合、目標ルーチンの圧縮モードは圧
縮されない。
チされると、命令はモード検出器200によって命令バ
ス202上で受信される。モード検出器200はジャン
プおよびリンク(JAL) 命令がフェッチされた時を検出
し、更に交換ビット94をチェックする。交換ビット9
4がセットされると、JAL 命令の目標アドレスにおける
ルーチンは圧縮命令を有する。従って、目標ルーチンの
圧縮モードは圧縮される。または、交換ビット94はク
リアされる。この場合、目標ルーチンの圧縮モードは圧
縮されない。
【0098】目標ルーチンの圧縮モードを特定すること
に加えて、JAL 命令はJAL 命令に続く命令のアドレスを
MIPS RISC アーキテクチャのレジスタ$31 に記憶させ
る。このレジスタは続いてJR命令とともに使用して、目
標ルーチンから戻る。圧縮モードは本実施例のアドレス
の一部として記憶されるので、ソースルーチンの圧縮モ
ードはJR命令の実行時に復帰させられる。圧縮命令に符
号化されるルーチンは圧縮されない命令に符号化される
ルーチンを混合される。新しい圧縮モードは圧縮モード
ライン206を介してプロセッサコア16に伝達され
る。モード検出器200は別の実施例では命令デコンプ
レッサ12の代わりにプロセッサコア16の一部として
設けられることに注意されたい。
に加えて、JAL 命令はJAL 命令に続く命令のアドレスを
MIPS RISC アーキテクチャのレジスタ$31 に記憶させ
る。このレジスタは続いてJR命令とともに使用して、目
標ルーチンから戻る。圧縮モードは本実施例のアドレス
の一部として記憶されるので、ソースルーチンの圧縮モ
ードはJR命令の実行時に復帰させられる。圧縮命令に符
号化されるルーチンは圧縮されない命令に符号化される
ルーチンを混合される。新しい圧縮モードは圧縮モード
ライン206を介してプロセッサコア16に伝達され
る。モード検出器200は別の実施例では命令デコンプ
レッサ12の代わりにプロセッサコア16の一部として
設けられることに注意されたい。
【0099】図20に示すモード検出器200の実施例
は圧縮イネーブルビット用の記憶部204を有する。圧
縮が付勢されると、圧縮イネーブルビットがセットされ
る。命令が圧縮モードでフェッチされ、圧縮が付勢され
ると、命令デコンプレッサ12は命令をデコンプレスす
る。イネーブルビットがクリアされると、命令圧縮はマ
イクロプロセッサ10用に無効にされる。命令非圧縮が
無効にされると、命令デコンプレッサ12はバイパスさ
れる。更に、モード検出器200は、命令圧縮が無効さ
れると、圧縮モードが圧縮されないことを示す。
は圧縮イネーブルビット用の記憶部204を有する。圧
縮が付勢されると、圧縮イネーブルビットがセットされ
る。命令が圧縮モードでフェッチされ、圧縮が付勢され
ると、命令デコンプレッサ12は命令をデコンプレスす
る。イネーブルビットがクリアされると、命令圧縮はマ
イクロプロセッサ10用に無効にされる。命令非圧縮が
無効にされると、命令デコンプレッサ12はバイパスさ
れる。更に、モード検出器200は、命令圧縮が無効さ
れると、圧縮モードが圧縮されないことを示す。
【0100】ここで使用されているように、ルーチンは
マイクロプロセッサ10による実行用に符号化された整
列命令セットである。ルーチンは圧縮命令または圧縮さ
れていない命令で符号され、サブルーチンコール命令お
よび復帰命令によって範囲を定められている。範囲を定
められるサブルーチンコール命令はルーチン内に設けら
れない。代わりに、サブルーチンコール命令は、サブル
ーチンコール命令とともに設けられている目標アドレス
を介してルーチンの最初を示す。ルーチンの最初の命令
は目標アドレスに記憶される。サブルーチンコール命令
を有するルーチン内の命令のアドレスはセーブされ、復
帰命令が実行され、コーリングルーチンに戻る。図3〜
図15に示す典型的な圧縮命令セットでは、jal 命令が
サブルーチンコール命令として作用する。または、jalr
命令はサブルーチンコール命令として作用する。
マイクロプロセッサ10による実行用に符号化された整
列命令セットである。ルーチンは圧縮命令または圧縮さ
れていない命令で符号され、サブルーチンコール命令お
よび復帰命令によって範囲を定められている。範囲を定
められるサブルーチンコール命令はルーチン内に設けら
れない。代わりに、サブルーチンコール命令は、サブル
ーチンコール命令とともに設けられている目標アドレス
を介してルーチンの最初を示す。ルーチンの最初の命令
は目標アドレスに記憶される。サブルーチンコール命令
を有するルーチン内の命令のアドレスはセーブされ、復
帰命令が実行され、コーリングルーチンに戻る。図3〜
図15に示す典型的な圧縮命令セットでは、jal 命令が
サブルーチンコール命令として作用する。または、jalr
命令はサブルーチンコール命令として作用する。
【0101】ルーチンは復帰命令で終了し、この命令は
次の命令の実行により、対応するサブルーチンコール命
令が実行されるとセーブされるアドレスに復帰する。す
なわち、復帰命令の目標アドレスはセーブされたアドレ
スである。典型的な圧縮命令セットの場合には、jr命令
が復帰命令として作用する。一般的に言えば、目標アド
レスは、命令フェッチが目標アドレスに対応する命令の
実行時に始まるアドレスである。
次の命令の実行により、対応するサブルーチンコール命
令が実行されるとセーブされるアドレスに復帰する。す
なわち、復帰命令の目標アドレスはセーブされたアドレ
スである。典型的な圧縮命令セットの場合には、jr命令
が復帰命令として作用する。一般的に言えば、目標アド
レスは、命令フェッチが目標アドレスに対応する命令の
実行時に始まるアドレスである。
【0102】次に、図21を参照すると、レジスタフィ
ールド非圧縮の一実施例のブロック図が示されている。
レジスタフィールド非圧縮の他の実施例も考えられる。
命令に対応する圧縮レジスタフィールドは圧縮レジスタ
フィールドバス210を介して伝達される。レジスタデ
コンプレッサブロック212は圧縮レジスタフィールド
を受け取る。更に、圧縮レジスタフィールドの少なくと
も一部が圧縮解除レジスタフィールドに取り入れられ、
これは圧縮解除レジスタフィールドバス214上に伝達
される。これにより圧縮解除レジスタフィールドは圧縮
レジスタフィールドの少なくとも一部をレジスタデコン
プレッサブロック212によって生成された値に連結す
ることにより形成される。
ールド非圧縮の一実施例のブロック図が示されている。
レジスタフィールド非圧縮の他の実施例も考えられる。
命令に対応する圧縮レジスタフィールドは圧縮レジスタ
フィールドバス210を介して伝達される。レジスタデ
コンプレッサブロック212は圧縮レジスタフィールド
を受け取る。更に、圧縮レジスタフィールドの少なくと
も一部が圧縮解除レジスタフィールドに取り入れられ、
これは圧縮解除レジスタフィールドバス214上に伝達
される。これにより圧縮解除レジスタフィールドは圧縮
レジスタフィールドの少なくとも一部をレジスタデコン
プレッサブロック212によって生成された値に連結す
ることにより形成される。
【0103】一実施例では、全圧縮レジスタフィールド
は圧縮解除レジスタフィールドに連結される。更に、圧
縮解除レジスタフィールドの残りの部分はどのレジスタ
が命令アクセスをセットしたかどうかに依存している
(例えば、xs vs. rs および xt vs. rt)。セットセレ
クタ信号がセットセレクタバス216上で受信され、xs
(xt)またはrs(rt)レジスタセットが使用されるべき
であるかどうかを示す。セットセレクタ信号が出力され
ると、xs(xt)が選択される。そうでない場合には、rs
(rt)が選択される。セットセレクタ信号は、図5〜図
15に示す典型的な圧縮命令セットに従って圧縮されつ
つある命令のオペコードに基づいて出力されたりまたは
出力されない。例えば、表1に示す圧縮レジスタと圧縮
解除レジスタ間のレジスタマッピングが使用される。こ
のような例では、レジスタデコンプレッサ212は次の
ロジックを使用する。ここで、DRは圧縮解除レジスタフ
ィールドを表し、CRは圧縮レジスタフィールドを表し、
RHは対応するセットセレクタ信号値を表す。 DR 4:3 = RH, (RH & CR 2 |!CR 2:0 )
は圧縮解除レジスタフィールドに連結される。更に、圧
縮解除レジスタフィールドの残りの部分はどのレジスタ
が命令アクセスをセットしたかどうかに依存している
(例えば、xs vs. rs および xt vs. rt)。セットセレ
クタ信号がセットセレクタバス216上で受信され、xs
(xt)またはrs(rt)レジスタセットが使用されるべき
であるかどうかを示す。セットセレクタ信号が出力され
ると、xs(xt)が選択される。そうでない場合には、rs
(rt)が選択される。セットセレクタ信号は、図5〜図
15に示す典型的な圧縮命令セットに従って圧縮されつ
つある命令のオペコードに基づいて出力されたりまたは
出力されない。例えば、表1に示す圧縮レジスタと圧縮
解除レジスタ間のレジスタマッピングが使用される。こ
のような例では、レジスタデコンプレッサ212は次の
ロジックを使用する。ここで、DRは圧縮解除レジスタフ
ィールドを表し、CRは圧縮レジスタフィールドを表し、
RHは対応するセットセレクタ信号値を表す。 DR 4:3 = RH, (RH & CR 2 |!CR 2:0 )
【0104】いくつかの他のレジスタマッピングが考え
られる。その例が対応するベリログ(Verilog) ロジック
式とともに下記の表2−4に示されている。どのような
レジスタマッピングでもマイクロプロセッサ10の種々
の実施例で使用することができることに注意されたい。
られる。その例が対応するベリログ(Verilog) ロジック
式とともに下記の表2−4に示されている。どのような
レジスタマッピングでもマイクロプロセッサ10の種々
の実施例で使用することができることに注意されたい。
【0105】
【表2】
【0106】
【表3】
【0107】
【表4】
【0108】表1−4に示すアセンブラ割当名称によっ
て示すように、種々のレジスタがソフトウェア約定によ
つて種々の機能に割り当てられる。例えば、MIPSアセン
ブラはレジスタに次の意味を割り当てる:
て示すように、種々のレジスタがソフトウェア約定によ
つて種々の機能に割り当てられる。例えば、MIPSアセン
ブラはレジスタに次の意味を割り当てる:
【0109】
【表5】
【0110】圧縮命令で符号化されたルーチンに対する
一時レジスタおよびセーブレジスタの両方にアクセスし
うることが好ましい。更に、v0-v1, a0-a3, gp, spおよ
びraへのアクセスは既存のソフトウェアと動作するため
に必要である。図示のレジスタマッピングはこれらの特
性をレジスタデコンプレッサ212の要求と平衡させ、
かなり小さい数のゲートを占有する。レジスタデコンプ
レッサ212内の小さいゲートカウント値を維持しなが
ら有用なレジスタセットはMIPSレジスタセットから選択
されることが有益である。
一時レジスタおよびセーブレジスタの両方にアクセスし
うることが好ましい。更に、v0-v1, a0-a3, gp, spおよ
びraへのアクセスは既存のソフトウェアと動作するため
に必要である。図示のレジスタマッピングはこれらの特
性をレジスタデコンプレッサ212の要求と平衡させ、
かなり小さい数のゲートを占有する。レジスタデコンプ
レッサ212内の小さいゲートカウント値を維持しなが
ら有用なレジスタセットはMIPSレジスタセットから選択
されることが有益である。
【0111】次に、図22を参照すると、マイクロプロ
セッサ10を有する典型的なコンピュータシステム22
0が示されている。マイクロプロセッサ10を使用する
多くの他のコンピュータシステムが考えられる。コンピ
ュータシステム220内では、マイクロプロセッサ10
は多重I/Oインタフェース222A−222Nととも
に半導体基板224に設けられる。I/Oインタフェー
スは基板224の外部のI/O装置とインタフェースす
る。典型的なI/Oインタフェース222Aはユニバー
サル非同期送受信器(UART)である。
セッサ10を有する典型的なコンピュータシステム22
0が示されている。マイクロプロセッサ10を使用する
多くの他のコンピュータシステムが考えられる。コンピ
ュータシステム220内では、マイクロプロセッサ10
は多重I/Oインタフェース222A−222Nととも
に半導体基板224に設けられる。I/Oインタフェー
スは基板224の外部のI/O装置とインタフェースす
る。典型的なI/Oインタフェース222Aはユニバー
サル非同期送受信器(UART)である。
【0112】マイクロプロセッサ10はI/Oインタフ
ェース222に接続され、通信を行う。更に、マイクロ
プロセッサ10は外部インタフェースロジック226に
接続され、該ロジックは更に1つ以上のダイナミックラ
ンダムアクセスメモリ(DRAM)モジュール228にイン
タフェースしている。DRAMモジュール228は、圧縮お
よび/または圧縮されていない命令コードによって表さ
れるプログラムによって使用されるデータのみならず、
圧縮および/または圧縮されていない命令コードを記憶
する。
ェース222に接続され、通信を行う。更に、マイクロ
プロセッサ10は外部インタフェースロジック226に
接続され、該ロジックは更に1つ以上のダイナミックラ
ンダムアクセスメモリ(DRAM)モジュール228にイン
タフェースしている。DRAMモジュール228は、圧縮お
よび/または圧縮されていない命令コードによって表さ
れるプログラムによって使用されるデータのみならず、
圧縮および/または圧縮されていない命令コードを記憶
する。
【0113】本説明は種々の信号の生成を意味している
ことに注意されたい。ここで使用されているように、信
号が「生成されている」のは該信号が特定の状態を表す
値を伝達している場合である。逆に、信号が「生成され
ていない」のは該信号が特定の状態にない値を生成して
いる場合である。信号が論理0の値を有している場合、
または逆に信号が論理1の値を有している場合、信号は
生成されていると定義される。
ことに注意されたい。ここで使用されているように、信
号が「生成されている」のは該信号が特定の状態を表す
値を伝達している場合である。逆に、信号が「生成され
ていない」のは該信号が特定の状態にない値を生成して
いる場合である。信号が論理0の値を有している場合、
または逆に信号が論理1の値を有している場合、信号は
生成されていると定義される。
【0114】圧縮命令セットの特定の例について図示し
説明したが、多くの変更、拡大および改変を典型的な圧
縮命令セットに行うことができる。これらの変更、拡大
および改変は考えられている。
説明したが、多くの変更、拡大および改変を典型的な圧
縮命令セットに行うことができる。これらの変更、拡大
および改変は考えられている。
【0115】次に示すベリログ(Verilog) プログラムリ
スティングは命令デコンプレッサ12の典型的なロジッ
クについて記載している。ロジックの多くの異なる実施
例が考えられるが、示されているベリログプログラムは
1つの適当な例である:
スティングは命令デコンプレッサ12の典型的なロジッ
クについて記載している。ロジックの多くの異なる実施
例が考えられるが、示されているベリログプログラムは
1つの適当な例である:
【0116】
【表6】
【0117】
【表7】
【0118】上記開示によれば、圧縮された命令セット
(圧縮命令セット)および圧縮されていない(非圧縮)
命令セットの両方からの命令を実行するマイクロプロセ
ッサについて説明した。マイクロプロセッサは圧縮命令
を非圧縮命令に展開するかまたは圧縮命令を直接に解読
する。圧縮命令セットを使用して符号化されるルーチン
は圧縮されていない命令に符号化された対応するルーチ
ンよりもメモリ量が少ない。このようなルーチンによっ
て以前に占有されていたメモリは他のルーチンまたはこ
のようなルーチンによって操作されるデータによって使
用されうる。
(圧縮命令セット)および圧縮されていない(非圧縮)
命令セットの両方からの命令を実行するマイクロプロセ
ッサについて説明した。マイクロプロセッサは圧縮命令
を非圧縮命令に展開するかまたは圧縮命令を直接に解読
する。圧縮命令セットを使用して符号化されるルーチン
は圧縮されていない命令に符号化された対応するルーチ
ンよりもメモリ量が少ない。このようなルーチンによっ
て以前に占有されていたメモリは他のルーチンまたはこ
のようなルーチンによって操作されるデータによって使
用されうる。
【0119】上記開示を完全に理解すれば、当業者には
多くの変更および改変が明らかであろう。特許請求の範
囲はこのようなすべての変更および改変を含むものであ
ることを理解されたい。
多くの変更および改変が明らかであろう。特許請求の範
囲はこのようなすべての変更および改変を含むものであ
ることを理解されたい。
【図1】マイクロプロセッサの一実施例のブロック図で
ある。
ある。
【図2】マイクロプロセッサの第2の実施例のブロック
図である。
図である。
【図3】(A)は、図1および図2に示したマイクロプ
ロセッサの一実施例によってサポートされる第1の命令
フォーマットである。(B)は、図1および図2に示し
たマイクロプロセッサの一実施例によってサポートされ
る第2の命令フォーマットである。(C)は、図1およ
び図2に示したマイクロプロセッサの一実施例によって
サポートされる第3の命令フォーマットである。(D)
は、図1および図2に示したマイクロプロセッサの一実
施例によってサポートされる第4の命令フォーマットで
ある。
ロセッサの一実施例によってサポートされる第1の命令
フォーマットである。(B)は、図1および図2に示し
たマイクロプロセッサの一実施例によってサポートされ
る第2の命令フォーマットである。(C)は、図1およ
び図2に示したマイクロプロセッサの一実施例によって
サポートされる第3の命令フォーマットである。(D)
は、図1および図2に示したマイクロプロセッサの一実
施例によってサポートされる第4の命令フォーマットで
ある。
【図4】(A)は、図1および図2に示したマイクロプ
ロセッサの一実施例によってサポートされる第5の命令
フォーマットである。(B)は、図1および図2に示し
たマイクロプロセッサの一実施例によってサポートされ
る第6の命令フォーマットである。(C)は、図1およ
び図2に示したマイクロプロセッサの一実施例によって
サポートされる第7の命令フォーマットである。(D)
は、図1および図2に示したマイクロプロセッサの一実
施例によってサポートされる第8の命令フォーマットで
ある。
ロセッサの一実施例によってサポートされる第5の命令
フォーマットである。(B)は、図1および図2に示し
たマイクロプロセッサの一実施例によってサポートされ
る第6の命令フォーマットである。(C)は、図1およ
び図2に示したマイクロプロセッサの一実施例によって
サポートされる第7の命令フォーマットである。(D)
は、図1および図2に示したマイクロプロセッサの一実
施例によってサポートされる第8の命令フォーマットで
ある。
【図5】図4に示したフォーマットを使用する典型的な
命令表の1例である。
命令表の1例である。
【図6】図4に示したフォーマットを使用する典型的な
命令表の1例である。
命令表の1例である。
【図7】図4に示したフォーマットを使用する典型的な
命令表の1例である。
命令表の1例である。
【図8】図4に示したフォーマットを使用する典型的な
命令表の1例である。
命令表の1例である。
【図9】図4に示したフォーマットを使用する典型的な
命令表の1例である。
命令表の1例である。
【図10】図4に示したフォーマットを使用する典型的
な命令表である。
な命令表である。
【図11】図4に示したフォーマットを使用する典型的
な命令表である。
な命令表である。
【図12】図4に示したフォーマットを使用する典型的
な命令表である。
な命令表である。
【図13】図4に示したフォーマットを使用する典型的
な命令表である。
な命令表である。
【図14】図4に示したフォーマットを使用する典型的
な命令表である。
な命令表である。
【図15】図4に示したフォーマットを使用する典型的
な命令表である。
な命令表である。
【図16】図1および図2に示したマイクロプロセッサ
の一実施形態に係わる任意のレジスタおよびグローバル
ポインタレジスタからのオフセットを示す図である。
の一実施形態に係わる任意のレジスタおよびグローバル
ポインタレジスタからのオフセットを示す図である。
【図17】圧縮命令から非圧縮命令に即値フィールドを
拡張する典型的なハードウェアのブロック図である。
拡張する典型的なハードウェアのブロック図である。
【図18】図1および図2に示したマイクロプロセッサ
の一実施例に係わる非圧縮オフセットを示す図である。
の一実施例に係わる非圧縮オフセットを示す図である。
【図19】図1および図2に示したマイクロプロセッサ
の一実施例に係わる即値フィールドのデコンプレッサ装
置の動作を示すフローチャートである。
の一実施例に係わる即値フィールドのデコンプレッサ装
置の動作を示すフローチャートである。
【図20】図1および図2に示したマイクロプロセッサ
の一実施例に係わるフェッチアドレスを発生する典型的
なハードウェアのブロック図である。
の一実施例に係わるフェッチアドレスを発生する典型的
なハードウェアのブロック図である。
【図21】図1および図2に示したマイクロプロセッサ
の一実施例に使用されるレジスタデコンプレッサロジッ
クを示すブロック図である。
の一実施例に使用されるレジスタデコンプレッサロジッ
クを示すブロック図である。
【図22】図1および図2に示した実施形態のマイクロ
プロセッサを有する典型的なコンピュータシステムのブ
ロック図である。
プロセッサを有する典型的なコンピュータシステムのブ
ロック図である。
10A,10B マイクロプロセッサ 12A,12B 命令デコンプレッサ 14A,14B 命令キャシュ 16 プロセッサコア 18 PCレジスタ 170 即値フィールドデコンプレッサ 172 レジスタデコーダ 200 モード検出器 212 レジスタデコンプレッサ 222A−N I/Oインタフェース 226 インタフェースロジック 228 DRAM
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ハルトヴィク・エンケル デンマーク国、2840 ホルテ、ルーデケレ ット 11
Claims (20)
- 【請求項1】 圧縮ロード/ストア命令の圧縮即値フィ
ールドをデコンプレスする方法であって、 前記圧縮ロード/ストア命令によって特定されるベース
レジスタを検出し、 前記圧縮即値フィールドを圧縮解除即値フィールドにデ
コンプレスし、前記ベースレジスタが第1のレジスタで
ある場合、前記圧縮即値フィールドの最上位ビットをセ
ットし、前記ベースレジスタが前記第1のレジスタと異
なる第2のレジスタである場合、前記最上位ビットをク
リアする前記方法。 - 【請求項2】 前記第1のレジスタは、あるアドレスを
記憶するグローバルポインタレジスタを有し、前記アド
レスはグローバル変数が記憶されるメモリ領域を識別す
る請求項1記載の方法。 - 【請求項3】 前記メモリ領域は、第1のアドレスと第
2のアドレスの間のアドレスを有する複数のメモリロケ
ーションを含み、前記第1のアドレスは前記アドレスと
前記圧縮解除即値フィールド内で表現しうる最小値の和
であり、前記第2のアドレスは前記アドレスと前記圧縮
解除即値フィールド内で表現しうる最大値の和である請
求項2記載の方法。 - 【請求項4】 前記領域のサブ領域は圧縮命令にとって
アクセス可能であり、前記サブ領域は前記複数のメモリ
ロケーション内の第2の複数のメモリロケーションとし
て定義され、前記第2の複数のメモリロケーションは第
3のアドレスと第4のアドレスの間のアドレスを有し、
前記第3のアドレスは前記アドレスと前記圧縮即値フィ
ールド内で表現しうる第2の最小値の和であり、前記第
4のアドレスは前記アドレスと前記圧縮即値フィールド
内で表現しうる第2の最大値の和である請求項3記載の
方法。 - 【請求項5】 前記デコンプレス処理は、前記圧縮即値
フィールド内の各ビットを前記圧縮解除即値フィールド
内の特定のビットロケーションに割り当てる請求項1記
載の方法。 - 【請求項6】 前記圧縮ロード/ストア命令の実行時に
アクセスされたメモリオペランドのサイズが1バイトで
ある場合、前記圧縮即値フィールドの特定のビットは前
記圧縮解除即値フィールドの第1のビットロケーション
に割り当てられ、前記メモリオペレーションの前記サイ
ズがハーフワードである場合、前記特定のビットは前記
圧縮解除即値フィールドの第2のビットロケーションに
割り当てられる請求項5記載の方法。 - 【請求項7】 前記圧縮ロード/ストア命令の実行時に
アクセスされるメモリオペランドのサイズが1バイトで
ある場合、前記圧縮即値フィールドの特定のビットは前
記圧縮解除即値フィールドの第1のビットロケーション
に割り当てられ、前記メモリオペレーションの前記サイ
ズが1ワードである場合、前記特定のビットは前記圧縮
解除即値フィールドの第2のビットロケーションに割り
当てられる請求項5記載の方法。 - 【請求項8】 前記圧縮ロード/ストア命令の実行時に
アクセスされるメモリオペランドのサイズがハーフワー
ドである場合、前記圧縮即値フィールドの特定のビット
は前記圧縮解除即値フィールドの第1のビットロケーシ
ョンに割り当てられ、前記メモリオペレーションの前記
サイズが1ワードである場合、前記特定のビットは前記
圧縮解除即値フィールドの第2のビットロケーションに
割り当てられる請求項5記載の方法。 - 【請求項9】 前記デコンプレス処理は更に前記各ビッ
トを割り当てる前記処理に続いて割り当てられないまま
にある前記圧縮解除即値フィールド内の各ビットロケー
ションに2進数の0を割り当て、ここで前記各ビットロ
ケーションに2進数の0を割り当てる前記処理は前記圧
縮解除即値フィールドの前記最上位ビットを除外してい
る請求項5記載の方法。 - 【請求項10】 圧縮ロード/ストア命令の圧縮即値フ
ィールドをデコンプレスする装置であって、 前記圧縮ロード/ストア命令によって特定されるベース
レジスタを検出する検出手段と、 前記圧縮即値フィールドを圧縮解除即値フィールドにデ
コンプレスするデコンプレス手段であって、前記ベース
レジスタが第1のレジスタである場合、前記圧縮即値フ
ィールドの最上位ビットはセットされ、前記ベースレジ
スタが前記第1のレジスタと異なる第2のレジスタであ
る場合、前記最上位ビットはクリアされる前記デコンプ
レス手段とを有する前記装置。 - 【請求項11】 前記デコンプレス手段は、前記圧縮即
値フィールド内の各ビットを前記圧縮解除即値フィール
ド内の特定のビットロケーションに割り当てるように構
成されている請求項10記載の装置。 - 【請求項12】 前記デコンプレス手段は、前記圧縮解
除即値フィールドの前記最上位ビットを除外して、前記
圧縮即値フィールドの各ビットを割り当てることに続い
て割り当てられないままにある前記圧縮解除即値フィー
ルド内の各ビットロケーションに2進数の0を割り当て
る請求項11記載の装置。 - 【請求項13】 圧縮命令の圧縮即値フィールドを受信
するように接続された即値フィールドデコンプレッサで
あって、該即値フィールドデコンプレッサは非圧縮命令
に含まれる圧縮解除即値フィールドを発生するように構
成され、前記圧縮命令によって特定されるベースレジス
タが第1のレジスタである場合、前記圧縮解除即値フィ
ールドの値が前記圧縮解除即値フィールドによって表現
しうる値範囲の境界を形成する第1の下位の値範囲内に
存在し、前記ベースレジスタが前記第1のレジスタと異
なる第2のレジスタである場合、前記圧縮解除即値フィ
ールドの前記値が前記境界を除外して前記値範囲の一部
を形成する第2の下位の値範囲内に存在する前記即値フ
ィールドデコンプレッサと、 前記ベースレジスタを識別するベースレジスタ識別子を
受信するように接続されたレジスタデコーダであって、
該レジスタデコーダは前記ベースレジスタが前記第1の
レジスタである場合前記即値フィールドデコンプレッサ
に信号を出力するように構成され、前記レジスタデコー
ダは前記ベースレジスタが前記第2のレジスタである場
合前記信号を出力しないように構成され、前記即値フィ
ールドデコンプレッサは前記第1のレジスタと前記第2
のレジスタのどちらが前記圧縮命令のベースレジスタで
あるかを決定する前記レジスタデコーダとを有する命令
デコンプレッサ。 - 【請求項14】 前記第1の下位の値範囲は前記圧縮解
除即値フィールド内で表現しうる最小値を含む請求項1
3記載の命令デコンプレッサ。 - 【請求項15】 前記第1のレジスタはアドレスを記憶
するグローバルポインタレジスタを有し、前記アドレス
はグローバル変数が記憶されるメモリ領域を識別する請
求項13記載の命令デコンプレッサ。 - 【請求項16】 前記ベースレジスタが前記第1のレジ
スタである場合、前記即値フィールドデコンプレッサは
前記圧縮解除即値フィールドの最上位ビットをセットす
るように構成され、前記ベースレジスタが前記第2のレ
ジスタである場合、前記即値フィールドデコンプレッサ
は前記圧縮解除即値フィールドの前記最上位ビットをク
リアするように構成される請求項13記載の命令デコン
プレッサ。 - 【請求項17】 前記即値フィールドデコンプレッサ
は、前記圧縮即値フィールドの各ビットを前記圧縮解除
即値フィールド内の対応するビットロケーションに割り
当てる請求項16記載の命令デコンプレッサ。 - 【請求項18】 前記非圧縮命令の実行時に実施される
メモリアクセスのサイズが第1のバイト数である場合、
前記即値フィールドデコンプレッサは前記圧縮即値フィ
ールドの特定のビットを前記圧縮解除即値フィールドの
第1のビットロケーションに割り当て、前記メモリアク
セスの前記サイズが第2のバイト数である場合、前記即
値フィールドデコンプレッサは前記圧縮即値フィールド
の前記特定のビットを前記圧縮解除即値フィールドの第
2のビットロケーションに割り当てる請求項17記載の
命令デコンプレッサ。 - 【請求項19】 前記圧縮即値フィールドの前記ビット
の割り当てに続いて割り当てられないままになってい
る、前記最上位ビットを除く、前記圧縮解除即値フィー
ルドの各ビットロケーションはクリアされる請求項18
記載の命令デコンプレッサ。 - 【請求項20】 前記圧縮命令はロード/ストア命令で
ある請求項13記載の命令デコンプレッサ。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/652233 | 1996-05-23 | ||
US08/652,233 US5867681A (en) | 1996-05-23 | 1996-05-23 | Microprocessor having register dependent immediate decompression |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH1097421A true JPH1097421A (ja) | 1998-04-14 |
Family
ID=24616055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP9134170A Pending JPH1097421A (ja) | 1996-05-23 | 1997-05-23 | 圧縮命令を実行するように構成されたマイクロプロセッサにおけるメモリをアドレスする方法および装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5867681A (ja) |
JP (1) | JPH1097421A (ja) |
KR (1) | KR970076250A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013546036A (ja) * | 2010-09-24 | 2013-12-26 | インテル コーポレイション | 命令のクラス及び内容に基づくプロセッサの電力管理 |
JP2015511358A (ja) * | 2012-02-07 | 2015-04-16 | クアルコム,インコーポレイテッド | プロセッサモードを切り替えるための、呼び出される関数のアドレスの最下位ビットの使用 |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE19629130A1 (de) * | 1996-07-19 | 1998-05-14 | Philips Patentverwaltung | Signalprozessor |
JP3781519B2 (ja) * | 1997-08-20 | 2006-05-31 | 富士通株式会社 | プロセッサの命令制御機構 |
US6212632B1 (en) | 1998-07-31 | 2001-04-03 | Flashpoint Technology, Inc. | Method and system for efficiently reducing the RAM footprint of software executing on an embedded computer system |
US7376814B1 (en) * | 1999-09-07 | 2008-05-20 | Nxp B.V. | Method for forming variable length instructions in a processing system |
US7761857B1 (en) | 1999-10-13 | 2010-07-20 | Robert Bedichek | Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts |
AU2001245720A1 (en) * | 2000-03-15 | 2001-09-24 | Arc International Plc | Method and apparatus for processor code optimization using code compression |
US6594821B1 (en) | 2000-03-30 | 2003-07-15 | Transmeta Corporation | Translation consistency checking for modified target instructions by comparing to original copy |
US7149878B1 (en) | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
US7107439B2 (en) | 2001-08-10 | 2006-09-12 | Mips Technologies, Inc. | System and method of controlling software decompression through exceptions |
US7493470B1 (en) | 2001-12-07 | 2009-02-17 | Arc International, Plc | Processor apparatus and methods optimized for control applications |
US7278137B1 (en) | 2001-12-26 | 2007-10-02 | Arc International | Methods and apparatus for compiling instructions for a data processor |
US20030188135A1 (en) * | 2002-03-28 | 2003-10-02 | Intel Corporation | Addressing modes and/or instructions and/or operating modes for on-the-fly, precision adjustment of packed data |
US7941651B1 (en) * | 2002-06-27 | 2011-05-10 | Intel Corporation | Method and apparatus for combining micro-operations to process immediate data |
ITMI20022003A1 (it) * | 2002-09-20 | 2004-03-21 | Atmel Corp | Apparecchio e metodo per la decompressione dinamica di programmi. |
GB2399901B (en) * | 2003-03-27 | 2005-12-28 | Micron Technology Inc | System and method for encoding processing element commands in an active memory device |
US7310723B1 (en) | 2003-04-02 | 2007-12-18 | Transmeta Corporation | Methods and systems employing a flag for deferring exception handling to a commit or rollback point |
US7698539B1 (en) * | 2003-07-16 | 2010-04-13 | Banning John P | System and method of instruction modification |
US7707389B2 (en) * | 2003-10-31 | 2010-04-27 | Mips Technologies, Inc. | Multi-ISA instruction fetch unit for a processor, and applications thereof |
US7734898B2 (en) * | 2004-09-17 | 2010-06-08 | Freescale Semiconductor, Inc. | System and method for specifying an immediate value in an instruction |
US7457940B2 (en) | 2004-11-16 | 2008-11-25 | International Business Machines Corporation | System and method for managing data |
US8413162B1 (en) | 2005-06-28 | 2013-04-02 | Guillermo J. Rozas | Multi-threading based on rollback |
US8335810B2 (en) * | 2006-01-31 | 2012-12-18 | Qualcomm Incorporated | Register-based shifts for a unidirectional rotator |
US7861073B2 (en) * | 2007-01-03 | 2010-12-28 | Apple Inc. | On-chip decompression engine |
CN102077195A (zh) * | 2008-05-08 | 2011-05-25 | Mips技术公司 | 具有紧凑指令集架构的微处理器 |
US20100312991A1 (en) * | 2008-05-08 | 2010-12-09 | Mips Technologies, Inc. | Microprocessor with Compact Instruction Set Architecture |
WO2010096119A1 (en) * | 2008-10-29 | 2010-08-26 | Adapteva Incorporated | Variable instruction width digital signal processor |
Family Cites Families (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5317240A (en) * | 1976-07-31 | 1978-02-17 | Toshiba Corp | Controller |
US4236204A (en) * | 1978-03-13 | 1980-11-25 | Motorola, Inc. | Instruction set modifier register |
JPS583040A (ja) * | 1981-06-30 | 1983-01-08 | Nec Corp | 情報処理装置 |
US4587612A (en) * | 1982-10-22 | 1986-05-06 | International Business Machines Corporation | Accelerated instruction mapping external to source and target instruction streams for near realtime injection into the latter |
JPS6133546A (ja) * | 1984-07-25 | 1986-02-17 | Nec Corp | 情報処理装置 |
GB8507610D0 (en) * | 1985-03-23 | 1985-05-01 | Int Computers Ltd | Data processing apparatus |
EP0476722B1 (en) * | 1985-04-08 | 1997-02-26 | Hitachi, Ltd. | Data processing system |
US4829424A (en) * | 1985-06-28 | 1989-05-09 | Hewlett-Packard Company | Maximal length immediates with fixed sign position |
JP2554050B2 (ja) * | 1986-02-26 | 1996-11-13 | 株式会社日立製作所 | デ−タ処理方法 |
JP2845433B2 (ja) * | 1987-09-07 | 1999-01-13 | 日本電気株式会社 | 集積回路装置 |
US5115500A (en) * | 1988-01-11 | 1992-05-19 | International Business Machines Corporation | Plural incompatible instruction format decode method and apparatus |
DE68929258T2 (de) * | 1988-01-27 | 2001-06-07 | Oki Electric Industry Co., Ltd. | Mikrorechner und Prüfverfahren |
US5050068A (en) * | 1988-10-03 | 1991-09-17 | Duke University | Method and apparatus for using extracted program flow information to prepare for execution multiple instruction streams |
US5109495A (en) * | 1989-02-03 | 1992-04-28 | Digital Equipment Corp. | Method and apparatus using a source operand list and a source operand pointer queue between the execution unit and the instruction decoding and operand processing units of a pipelined data processor |
JPH0640316B2 (ja) * | 1989-04-20 | 1994-05-25 | 工業技術院長 | 演算レジスタ上でのデータ待ち合せ実現方法 |
CA2016068C (en) * | 1989-05-24 | 2000-04-04 | Robert W. Horst | Multiple instruction issue computer architecture |
JP2550213B2 (ja) * | 1989-07-07 | 1996-11-06 | 株式会社日立製作所 | 並列処理装置および並列処理方法 |
US4991808A (en) * | 1989-09-12 | 1991-02-12 | Paul Lachance | Movable utility bracket for ladders |
WO1991004536A1 (en) * | 1989-09-20 | 1991-04-04 | Dolphin Server Technology A/S | Instruction cache architecture for parallel issuing of multiple instructions |
JP2835103B2 (ja) * | 1989-11-01 | 1998-12-14 | 富士通株式会社 | 命令指定方法及び命令実行方式 |
US5238874A (en) * | 1989-11-09 | 1993-08-24 | Nec Corporation | Fabrication method for laminated films comprising Al-Si-Co alloy film and refractory metal silioide copper film |
US5214763A (en) * | 1990-05-10 | 1993-05-25 | International Business Machines Corporation | Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism |
US5295249A (en) * | 1990-05-04 | 1994-03-15 | International Business Machines Corporation | Compounding preprocessor for cache for identifying multiple instructions which may be executed in parallel |
JP2847974B2 (ja) * | 1991-01-21 | 1999-01-20 | 三菱電機株式会社 | データ処理装置 |
JPH0689269A (ja) * | 1991-02-13 | 1994-03-29 | Hewlett Packard Co <Hp> | プロセッサの制御装置、プロセッサの休止装置およびそれらの方法 |
JPH04284551A (ja) * | 1991-03-14 | 1992-10-09 | Fujitsu Ltd | 圧縮データを格納した読み出し専用メモリを備えた装置 |
US5287467A (en) * | 1991-04-18 | 1994-02-15 | International Business Machines Corporation | Pipeline for removing and concurrently executing two or more branch instructions in synchronization with other instructions executing in the execution unit |
JP2682264B2 (ja) * | 1991-05-21 | 1997-11-26 | 日本電気株式会社 | プログラムカウンタ装置 |
JPH04362759A (ja) * | 1991-06-10 | 1992-12-15 | Sharp Corp | 中央処理装置 |
FR2678401A1 (fr) * | 1991-06-28 | 1992-12-31 | Philips Electronique Lab | Dispositif de traitement de l'information plus particulierement adapte a un langage chaine, du type forth notamment. |
US5493687A (en) * | 1991-07-08 | 1996-02-20 | Seiko Epson Corporation | RISC microprocessor architecture implementing multiple typed register sets |
JP2970821B2 (ja) * | 1991-08-21 | 1999-11-02 | 松下電器産業株式会社 | データ処理装置 |
US5577259A (en) * | 1991-09-19 | 1996-11-19 | Unisys Corporation | Instruction processor control system using separate hardware and microcode control signals to control the pipelined execution of multiple classes of machine instructions |
GB2263985B (en) * | 1992-02-06 | 1995-06-14 | Intel Corp | Two stage window multiplexors for deriving variable length instructions from a stream of instructions |
US5438668A (en) * | 1992-03-31 | 1995-08-01 | Seiko Epson Corporation | System and method for extraction, alignment and decoding of CISC instructions into a nano-instruction bucket for execution by a RISC computer |
US5371864A (en) * | 1992-04-09 | 1994-12-06 | International Business Machines Corporation | Apparatus for concurrent multiple instruction decode in variable length instruction set computer |
US5396634A (en) * | 1992-09-30 | 1995-03-07 | Intel Corporation | Method and apparatus for increasing the decoding speed of a microprocessor |
WO1994027216A1 (en) * | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
JPH06348490A (ja) * | 1993-06-08 | 1994-12-22 | Hitachi Ltd | 演算処理方法、及びマイクロコンピュータ |
US5574887A (en) * | 1993-09-20 | 1996-11-12 | Apple Computer, Inc. | Apparatus and method for emulation routine pointer prefetch |
US5574928A (en) * | 1993-10-29 | 1996-11-12 | Advanced Micro Devices, Inc. | Mixed integer/floating point processor core for a superscalar microprocessor with a plurality of operand buses for transferring operand segments |
US5542059A (en) * | 1994-01-11 | 1996-07-30 | Exponential Technology, Inc. | Dual instruction set processor having a pipeline with a pipestage functional unit that is relocatable in time and sequence order |
US5481684A (en) * | 1994-01-11 | 1996-01-02 | Exponential Technology, Inc. | Emulating operating system calls in an alternate instruction set using a modified code segment descriptor |
US5577200A (en) * | 1994-02-28 | 1996-11-19 | Intel Corporation | Method and apparatus for loading and storing misaligned data on an out-of-order execution computer system |
US5574927A (en) * | 1994-03-25 | 1996-11-12 | International Meta Systems, Inc. | RISC architecture computer configured for emulation of the instruction set of a target computer |
GB2289354B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Multiple instruction set mapping |
GB2289353B (en) * | 1994-05-03 | 1997-08-27 | Advanced Risc Mach Ltd | Data processing with multiple instruction sets |
GB2307072B (en) * | 1994-06-10 | 1998-05-13 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
US5481693A (en) * | 1994-07-20 | 1996-01-02 | Exponential Technology, Inc. | Shared register architecture for a dual-instruction-set CPU |
-
1996
- 1996-05-23 US US08/652,233 patent/US5867681A/en not_active Expired - Lifetime
-
1997
- 1997-05-21 KR KR1019970019738A patent/KR970076250A/ko not_active Application Discontinuation
- 1997-05-23 JP JP9134170A patent/JPH1097421A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013546036A (ja) * | 2010-09-24 | 2013-12-26 | インテル コーポレイション | 命令のクラス及び内容に基づくプロセッサの電力管理 |
JP2015511358A (ja) * | 2012-02-07 | 2015-04-16 | クアルコム,インコーポレイテッド | プロセッサモードを切り替えるための、呼び出される関数のアドレスの最下位ビットの使用 |
US10055227B2 (en) | 2012-02-07 | 2018-08-21 | Qualcomm Incorporated | Using the least significant bits of a called function's address to switch processor modes |
Also Published As
Publication number | Publication date |
---|---|
KR970076250A (ko) | 1997-12-12 |
US5867681A (en) | 1999-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH1097421A (ja) | 圧縮命令を実行するように構成されたマイクロプロセッサにおけるメモリをアドレスする方法および装置 | |
US5905893A (en) | Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set | |
US5896519A (en) | Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions | |
US6412066B2 (en) | Microprocessor employing branch instruction to set compression mode | |
US5794010A (en) | Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor | |
US10776114B2 (en) | Variable register and immediate field encoding in an instruction set architecture | |
US7703088B2 (en) | Compressing “warm” code in a dynamic binary translation environment | |
RU2565496C2 (ru) | Команда для загрузки данных до заданной границы памяти, указанной командой | |
CN102207849B (zh) | 用于执行逻辑比较操作的方法和装置 | |
JP3898712B2 (ja) | 3バイトのエスケープ・オペコードを使用した命令セットの拡張 | |
EP0627681B1 (en) | Apparatus and method for processing data with a plurality of flag groups | |
WO2001025900A1 (en) | Risc processor using register codes for expanded instruction set | |
US5884071A (en) | Method and apparatus for decoding enhancement instructions using alias encodings | |
US7861071B2 (en) | Conditional branch instruction capable of testing a plurality of indicators in a predicate register | |
US5966514A (en) | Microprocessor for supporting reduction of program codes in size | |
JP2001005675A (ja) | プログラム変換装置及びプロセッサ | |
JP2682469B2 (ja) | 命令コード符号化方式 | |
WO1997048041A9 (en) | An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set | |
WO1997048041A1 (en) | An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set | |
JPH11212787A (ja) | 使用可能な操作符号を最大にし、様々なアドレシングモードを実現するプロセッサアーキテクチャ方式および命令セット | |
US20040024992A1 (en) | Decoding method for a multi-length-mode instruction set | |
US20070022271A1 (en) | Processor with changeable correspondences between opcodes and instructions | |
GB2349252A (en) | An apparatus and method for detecting and decompressing instructions from a variable length compressed instruction set | |
US20040098568A1 (en) | Processor having a unified register file with multipurpose registers for storing address and data register values, and associated register mapping method | |
US7103751B1 (en) | Method and apparatus for representation of an address in canonical form |