JP2000512409A - 可変長圧縮命令セットから命令を検出し及び伸張する装置ならびに方法 - Google Patents

可変長圧縮命令セットから命令を検出し及び伸張する装置ならびに方法

Info

Publication number
JP2000512409A
JP2000512409A JP10501756A JP50175698A JP2000512409A JP 2000512409 A JP2000512409 A JP 2000512409A JP 10501756 A JP10501756 A JP 10501756A JP 50175698 A JP50175698 A JP 50175698A JP 2000512409 A JP2000512409 A JP 2000512409A
Authority
JP
Japan
Prior art keywords
instruction
compression
register
field
decompression
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
Application number
JP10501756A
Other languages
English (en)
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
Priority claimed from US08/659,708 external-priority patent/US5905893A/en
Priority claimed from US08/659,709 external-priority patent/US5794010A/en
Priority claimed from US08/661,003 external-priority patent/US5896519A/en
Application filed by エル エス アイ ロジック コーポレーション filed Critical エル エス アイ ロジック コーポレーション
Publication of JP2000512409A publication Critical patent/JP2000512409A/ja
Pending legal-status Critical Current

Links

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/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • 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
    • G06F9/30167Decoding the operand specifier, e.g. specifier format of immediate specifier, e.g. constants
    • 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

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)

Abstract

(57)【要約】 対応する非圧縮命令のサブセットを含む圧縮命令のセットをフェッチするようにマイクロプロセッサーが構成される。圧縮命令のセットは、可変長命令のセットであり、16ビット及び32ビットの命令を含む。32ビット命令は拡張オペコードを用いて符号化され、それは、フェッチされている命令が拡張された(例えば32ビット)命令であることを表す。圧縮命令のセットは、圧縮レジスタフィールドから非圧縮レジスタフィールドへの複数のレジスタ写像のセットをさらに含む。或る選択命令には、2つのオペコード符号、2つの対応するレジスタフィールドの写像のそれぞれについて1つずつ、が割り当てられる。圧縮レジスタフィールドは、非圧縮レジスタフィールドへと直接複写され、一方、非圧縮レジスタフィールドの残りの部分は、少数の論理ゲートを用いて作られる。圧縮命令セット内のサブルーチンコール命令は圧縮モードを含み、該モードは目的ルーチンが圧縮命令で符号化されているか否かを示す。圧縮モードは、プログラムカウンターレジスタに格納される。大域ポインタレジスタをベースレジスタとして有するロード/ストア命令に使用される即値フィールドの伸張は、混合された圧縮/非圧縮命令の実行のために最適化される。即値フィールドは非圧縮即値フィールドへと伸張され、そのために最上位ビットがセットされる。

Description

【発明の詳細な説明】 可変長圧縮命令セットから命令を検出し及び伸張する装置ならびに方法 発明の分野 本発明は、マイクロプロセッサの分野に関し、さらに詳細には、マイクロプロ セッサの命令セットの最適化に関する。 背景技術 マイクロプロセッサの構造(アーキテクチャ)は、一般に複雑命令セット電算 処理(CISC:complex instruction set computing)構造または縮小命令セ ット電算処理(RISC:reduced instruction set computing)構造の何れかに 分類されよう。CISC構造は、高水準の比較的複雑な命令からなる命令セット を含む。CISC構造を実施するマイクロプロセッサは、多くの場合、複雑な命 令をハードウェアで比較的容易に実行できる多数の比較的単純な動作へと分解す る。1つの命令に対応する分解された幾つかの動作を与えるのに、これまでチッ プ内蔵の読出し専用記憶装置(ROM)に格納されたマイクロコード化されたル ーチンが巧く利用されてきた。さらに最近は、複雑な命令を比較的単純な動作へ と分離するハードウェアデコーダが、一部のCISCマイクロプロセッサ設計者 によって採用された。x86マイクロプロセッサのアーキテクチャは、CISC 構造の一例である。 逆に、RISC構造は、低水準の比較的単純な命令からな る命令セットを含む。一般に、命令セットに含まれる各命令は、ハードウェアで 直接実行される。CISC方式に伴う複雑さは無く、より先進的なインプリメン テーションの設計が可能となる。さらに、命令の実行に用いられるハードウェア が単純なので、高い周波数での設計が比較的容易に可能となる。RISC構造の 例としては、MIPS RISCアーキテクチャがある。 必ずしも決定的な特徴ではないが、CISC構造と言えば可変長命令セットで あり、RISC構造と言えば固定長命令セットであると多くの場合思われてきた 。可変長命令セットでは、異なるビット数を用いて、命令セット中の種々の命令 だけでなく、命令に対するアドレス指定モードも符号化する。可変長命令セット においては、一般に、各命令の情報をその命令を表す1乃至複数のバイトに可能 な限り効率的に詰め込もうとする。これに対して、固定長命令セットでは、各命 令に同数のビットを用いる(このビット数は、一般に8の倍数であり、各命令が 固定数のバイトに完全に収まるようになっている)。幾つかの固定的な情報フィ ールド(固定フィールド)からなる少数の命令形式が、定義されるのが一般的で ある。これにより、各命令の復号処理は、各固定フィールドに対応するビットを そのフィールドを復号するために設計された論理回路に送ることへと簡単化され る。 固定長命令セットの各命令は、固定数のバイトからなるので、命令の位置の特 定も同様に簡単化される。特定の命 令に続く多数の命令の位置が、その特定の命令の位置によって暗に(即ち、その 特定の命令の位置からの一定のオフセットとして)示される。これに対して、2 番目の可変長命令の位置を特定するには、最初の可変長命令の終わりの位置を特 定する必要があり、3番目の可変長命令の位置を特定するには、2番目の可変長 命令の終わりの位置を特定する必要があると言う具合である。さらに、可変長命 令には、固定長命令の固定フィールド構造が無い。この固定フィールドの欠如に より、復号処理が一層複雑となる。 不幸なことに、固定長命令セットを用いるRISC構造は、可変長命令セット を用いるCISC構造には一般に当てはまらない問題点がある。各命令が固定長 であるため、極めて単純な命令の中には、その命令に関する情報を持たないバイ トを幾つも占有することによりメモリを事実上浪費するものも幾つかある。例え ば、多くの固定長命令セットにおけるある種の命令に対して「任意(don't care )」フィールドと指定されたフィールドは、メモリを浪費する。対照的に、可変 長命令セットでは、命令の情報が最小数のバイトに詰め込まれる。 さらに、RISC構造は、CISC構造で用いられる複雑な命令を含まないの で、RISC命令で符号化されたプログラムで使用される命令の数は、CISC 命令で符号化された同じプログラムで使用される命令の数より大きくなる。その プログラムのCISC版において符号化された比較的複雑な命令の各々は、その プログラムのRISC版の複数の命令によ って置き換えられる。したがって、プログラムのCISC版の方が、プログラム のRISC版よりかなり少ないメモリを占有することが多い。これに対応して、 プログラムを蓄積する装置、メモリおよびマイクロプロセッサの間の帯域幅は、 プログラムのCISC版よりプログラムのRISC版の方が、多く必要とする。 発明の概要 以上概観した問題点は、本発明によるマイクロプロセッサによって大部分が解 決される。本発明のマイクロプロセッサは、対応する非圧縮命令(non-compresse d instruction)セットの部分集合(サブセット)からなる圧縮された命令セット (以下「圧縮命令セット」とする)をフェッチするように構成される。その非圧 縮命令セットは、RISC構造に対して一般に付随する高周波動作や比較的単純 な実行資源をマイクロプロセッサが享受できるようなRISC命令セットでよい 。メモリから圧縮命令(compressed instruction)を読み込んで、マイクロプロセ ッサ内部で伸張することにより、与えられた性能水準(例えば、1秒当たり実行 される命令数)を達成するために必要なメモリ帯域幅が減少するので好都合であ る。さらに、圧縮命令が占めるメモリ量は、対応する非圧縮命令が占めるより比 較的少ない。 ここで述べる説明のための圧縮命令セットは、可変長命令セットである。一実 施例によれば、16ビット命令と32ビット命令の2つの異なる命令長を含む。 32ビット命 令は、拡張オペコードを用いて符号化され、ここで拡張オペコードとは、フェッ チ中の命令が拡張命令(32ビット命令)であることを示すものである。命令は 、16ビットの量としてフェッチしてもよい。前述の拡張オペコードを有する1 6ビット命令が読み込まれると、それに続く16ビットの命令がその拡張オペコ ードを有する命令に連結されて、32ビットの拡張命令を形成する。拡張命令は 、拡張されていない命令に関して強化した能力を有し、圧縮命令セットの柔軟性 および性能をさらに高める。これにより、拡張命令に含まれる能力を用いるルー チンを圧縮命令を用いて符号化することができる。 さらに圧縮命令セットには、圧縮されたレジスタフィールドから伸張されたレ ジスタフィールドへのレジスタ射像(割り当て)の多数の集合も含まれる。圧縮 レジスタフィールドで符号化された各値は、マイクロプロセッサ内部の異なるレ ジスタへと伸張される。一の実施例では、圧縮レジスタフィールドは、それぞれ 3ビットからなる。したがって、1つの命令に対し8個のレジスタがアクセス可 能である。ある種の選択命令に対して更なるレジスタへのアクセスを提供するに は、それらの選択命令に2つのオペコード符号化を割り当てる。それらのオペコ ード符号化の1つが、レジスタフィールドの第1の射像(割り当て)を示す一方 で、第2のオペコード符号化が、レジスタフィールドの第2の射像を示す。圧縮 レジスタフィールドには、比較的少数のビットを含めても良いし、8個以上の付 加的なレ ジスタへのアクセスが望まれる選択命令には、そのようなアクセスを与えること もできるので都合がよい。さらに、レジスタの射像は、レジスタフィールドの伸 張に用いられる論理回路を最小化するように、選択される。一実施例では、圧縮 レジスタフィールドは、伸張レジスタフィールドの一部に直接コピーされ、伸張 レジスタフィールドの残りの部分は、少数の論理ゲートを用いて生成する。 本発明のマイクロプロセッサは、圧縮命令で符号化されたルーチンと非圧縮命 令で符号化されたその他のルーチンとを有するプログラムを実行できるようにな っている。圧縮命令セットに含まれるサブルーチンのコール命令は、目的のルー チンが圧縮命令で符号化されているかどうかを示す圧縮モードを含む。サブルー チンコールによって指定される圧縮モードは、マイクロプロセッサにより、その ルーチンについての圧縮モードとして捕捉される。一の実施例においては、圧縮 モードは、フェッチアドレスビットの1つとして格納される(マイクロプロセッ サ内部のプログラムカウンタレジスタに格納される)。この場合の圧縮モードは 、フェッチアドレスの一部であり、且つサブルーチンコール命令が、そのサブル ーチンに対する戻りアドレスを格納することを含むので、呼び出し中のルーチン の圧縮モードは、サブルーチンコール命令の実行時に自動的に記憶される。これ により、サブルーチンのリターン命令が実行されると、呼び出し中のルーチンの 圧縮モードが自動的に復元される。 本マイクロプロセッサの実施例のもう1つの特徴は、広域(大域)ポインタレ ジスタをベースレジスタとして有するロード/ストア命令に用いられる即値フィ ールドの伸張である。即値フィールドは、伸張即値フィールドへと伸張され、そ の最上位ビットがセットされる。これにより、広域変数のアドレス空間の低い方 の境界にある部分範囲(サブレンジ)が、圧縮命令の広域変数に対して割り当て られる。圧縮されていない命令は、広域変数のアドレス空間の残りの部分に広域 変数を格納する。前述の部分範囲どうしは離れているので、特定のプログラムの 圧縮ルーチンと非圧縮ルーチンとの間の広域変数の割り当ては、比較的簡単にな り都合がよい。 本発明は、広く、命令伸張器を備えて、可変長圧縮命令セットからの命令を実 行する装置を企図する。命令伸張器は、可変長圧縮命令セットの要素である命令 を受信するように結合され、命令のオペコードフィールドを調べるように構成さ れる。命令伸張器は、その命令のオペコードフィールドが拡張オペコードとして 符号化されている場合には、その命令を第1の固定長を有する拡張命令であると 判断するように構成される。さらに、命令伸張器は、その命令のオペコードフィ ールドが拡張オペコードとは異なる第2のオペコードとして符号化されている場 合には、その命令を非拡張命令であると判断するように構成される。 本発明は、さらに圧縮命令を伸張された命令(以下「伸張命令」とする)に拡 張する方法を考察する。圧縮命令の オペコードフィールドが拡張オペコードならば、その圧縮命令は、第1の固定長 を有する拡張命令であると判断される。その圧縮命令のオペコードフィールドが 拡張オペコードとは異なる第2のオペコードである場合、その圧縮命令は、第2 の固定長を有する非拡張命令である。圧縮命令は、伸張命令へと伸張される。圧 縮命令が拡張命令である場合、その圧縮命令に含まれるバイト数は、第1の固定 長によって決定される。また、圧縮命令が非拡張命令ならば、そのバイト数は、 第2の固定長によって決まる。 さらに、本発明は、第1の判断手段、第2の判断手段および伸張手段を備えて 圧縮命令を伸張命令へと拡張する装置を企図する。第1の判断手段は、圧縮命令 のオペコードフィールドが拡張オペコードならば、その圧縮命令は、第1の固定 長を有する拡張命令であると判断する。第2の判断手段は、圧縮命令のオペコー ドフィールドが拡張オペコードとは異なる第2のオペコードである場合、その圧 縮命令は、第2の固定長を有する非拡張命令であると判断する。伸張手段は、圧 縮命令を伸張命令へと伸張する。圧縮命令が拡張命令である場合、その圧縮命令 に含まれるバイト数は、第1の固定長によって決定される。また、圧縮命令が非 拡張命令ならば、そのバイト数は、第2の固定長によって決まる。 さらに、本発明は、第1のルーチンおよび第2のルーチンを含むプログラムを マイクロプロセッサにおいて実行する方法を企図する。前記の第1のルーチンの 内部でサブル ーチンコール命令が実行される場合、このサブルーチンコール命令は、前記の第 2のルーチンがサブルーチンコール命令の目的アドレスを介して実行されるべき であることを示す。サブルーチンコール命令におけるある表示を検査する。その 表示が第1の状態であれば、第2のルーチンは、圧縮命令を用いて符号化されて いると判断する。そして、その表示が第1の状態とは異なる第2の状態であれば 、第2のルーチンは、非圧縮命令を用いて符号化されていると判断する。 さらに、本発明は、マイクロプロセッサにおいて実行手段および検査手段を備 え、且つ第1のルーチンおよび第2のルーチンを含むプログラムを実行する装置 を企図する。実行手段は、第1のルーチンの内部でサブルーチンコール命令を実 行する。このサブルーチンコール命令は、前記の第2のルーチンがサブルーチン コール命令の目的アドレスを介して実行されるべきであることを示す。検査手段 は、サブルーチンコール命令におけるある表示を検査する。検査手段は、その表 示が第1の状態にあれば、第2のルーチンが、圧縮命令を用いて符号化されてい ると判断する。そして、その表示が第2の状態にあれば、検査手段は、第2のル ーチンが、非圧縮命令を用いて符号化されていると判断する。 本発明は、さらに、マイクロプロセッサにおいて記憶装置およびモード検出器 を備えて圧縮命令および非圧縮命令をフェッチする装置を企図する。記憶装置は 、圧縮可能指 示子(compression enable indicator)を記憶する。モード検出器は、記憶装置に 結合されて、目的のルーチンを指定するサブルーチンコール命令のフェッチ時に 、目的ルーチンの圧縮モードを検出するように構成される。モード検出器は、検 出した圧縮モードをプロセッサのコアに知らせるように構成される。プロセッサ コアは、圧縮モードが圧縮を示す場合、圧縮命令をフェッチするように構成され る。さらに、プロセッサコアは、圧縮モードが非圧縮を示す場合、非圧縮命令を フェッチするように構成される。 本発明は、さらに、命令伸張器およびプロセッサコアを備えたマイクロプロセ ッサを企図する。命令伸張器は、可変長圧縮命令セットの要素である圧縮命令を フェッチするように結合される。命令伸張器は、受け取った各圧縮命令を対応す る伸張命令へと伸張するように構成される。プロセッサコアは、伸張命令を受信 するように結合され、その伸張命令を実行するように構成される。 さらに、本発明は、命令コードを実行する方法を企図する。圧縮命令がフェッ チされる。この圧縮命令は、可変長圧縮命令セットの要素である。圧縮命令は、 命令伸張器において伸張されることにより、対応する伸張命令を形成する。この 伸張命令が、プロセッサコアで実行される。 本発明は、さらに、フェッチ手段、伸張手段および実行手段を備えて命令コー ドを実行する装置を企図する。フェッチ手段は、可変長圧縮命令セットの要素で ある圧縮命令をフェッチする。伸張手段は、圧縮命令を伸張することに より、対応する伸張命令を形成する。実行手段は、その伸張命令を実行する。 さらに、本発明は、圧縮命令を伸張するように構成された命令伸張器を企図す る。圧縮命令のうちの第1の命令は、対応する非圧縮命令セットに対して定義さ れた第1のレジスタ部分集合にアクセスするように、符号化することができる。 さらに、圧縮命令のうちの第2の命令は、前記の第1のレジスタ部分集合にアク セスするように符号化できるうえ、第2のレジスタ部分集合にアクセスするよう に符号化することもできる。 本発明は、さらに、圧縮命令を伸張する方法を企図する。第1のレジスタフィ ールドを有する圧縮命令が第1のオペコードを用いて符号化されている場合には 、その圧縮命令は、圧縮されたレジスタ指示子から伸張されたレジスタ指示子へ の第1のレジスタ射像を用いて伸張される。第1のレジスタフィールドを有する 圧縮命令が第2のオペコードを用いて符号化されている場合には、その圧縮命令 は、圧縮されたレジスタ指示子から伸張されたレジスタ指示子への第2のレジス タ射像を用いて伸張される。 本発明は、さらに、伸張手段を備えて圧縮命令を伸張する装置を企図する。伸 張手段は、次のように構成される。即ち、第1のレジスタフィールドを有する圧 縮命令が第1のオペコードを用いて符号化されている場合には、圧縮レジスタ指 示子から伸張レジスタ指示子への第1のレジスタ射像を用いて、その圧縮命令を 伸張する。また、伸張手段 は、第1のレジスタフィールドを有する圧縮命令が第2のオペコードを用いて符 号化されている場合には、圧縮レジスタ指示子から伸張レジスタ指示子への第2 のレジスタ射像を用いて、その圧縮命令を伸張する。 本発明は、さらに、圧縮命令の圧縮レジスタフィールドを伸張命令の伸張レジ スタフィールドへと伸張するように構成された命令伸張器を企図する。圧縮レジ スタフィールドの伸張は、圧縮レジスタフィールドへと符号化された第1の値と 圧縮命令のオペコードフィールドへと符号化された第2の値とに依存する。 本発明は、さらに、圧縮命令の圧縮レジスタフィールドを伸張命令の伸張レジ スタフィールドへと伸張する方法を企図する。圧縮レジスタフィールドの少なく とも一部は、伸張レジスタフィールドの一部に直接コピーされる。伸張レジスタ フィールドの残りの部分は、圧縮レジスタフィールドに論理的に作用することに より生成される。 さらに、本発明は、第1の手段および第2の手段を備えて、圧縮命令の圧縮レ ジスタフィールドを伸張命令の伸張レジスタフィールドへと伸張する装置を企図 する。第1の手段は、圧縮レジスタフィールドの少なくとも一部を伸張レジスタ フィールドの一部に直接コピーする。第1の手段は、圧縮レジスタフィールドを 受信するように結合される。同様に、第2の手段も、圧縮レジスタフィールドを 受信するように結合されて、圧縮レジスタフィールドに作用して伸張レジスタフ ィールドの残りの部分を生成する。 さらに、本発明は、圧縮命令の圧縮レジスタフィールドを伸張命令の伸張レジ スタフィールドへと伸張するように構成された命令伸張器を企図する。この命令 伸張器は、圧縮レジスタフィールドの少なくとも一部を伸張レジスタフィールド の第1の部分にコピーすることにより、伸張レジスタフィールドの第1の部分を 形成する。さらに、命令伸張器は、圧縮レジスタフィールドに作用して伸張レジ スタフィールドの残りの部分を生成するように構成された論理ブロックを含む。 図面の簡単な説明 本発明のその他の目的および利点は、以下の詳細な説明を読み、且つ添付の図 面を参照することにより明らかとなるであろう。 図1は、マイクロプロセッサの一実施例のブロック図である。 図2は、マイクロプロセッサの第2の実施例のブロック図である。 図3Aは、図1および2に示したマイクロプロセッサの一実施例において許容 される第1の命令形式である。 図3Bは、図1および2に示したマイクロプロセッサの一実施例において許さ れる第2の命令形式である。 図3Cは、図1および2に示したマイクロプロセッサの一実施例において許さ れる第3の命令形式である。 図3Dは、図1および2に示したマイクロプロセッサの一実施例において許容 される第4の命令形式である。 図4Aは、図1および2に示したマイクロプロセッサの一実施例において許容 される第5の命令形式である。 図4Bは、図1および2に示したマイクロプロセッサの一実施例において許容 される第6の命令形式である。 図4Cは、図1および2に示したマイクロプロセッサの一実施例において許容 される第7の命令形式である。 図4Dは、図1および2に示したマイクロプロセッサの一実施例において許容 される第8の命令形式である。 図5A、5B、5C、5Dおよび5Eは、図3A、3B、3Cおよび3Dに示 した命令形式を用いる命令例の表である。 図6A、6B、6C、6D、6Eおよび6Fは、図4A、4B、4Cおよび4 Dに示した命令形式を用いる命令例の表である。 図7は、図1および2に示したマイクロプロセッサの一実施例による任意のレ ジスタおよび広域ポインタレジスタからのオフセットを示す図である。 図8は、即値フィールドを圧縮命令から伸張命令へと展開するハードウェア例 のブロック図である。 図9は、図1および2に示したマイクロプロセッサの一実施例により伸張した オフセットを示す図である。 図10は、図1および2に示したマイクロプロセッサの一実施例による即値フ ィールド用の伸張器の動作を示すフローチャートである。 図11は、図1および2に示したマイクロプロセッサの 一実施例に従いフェッチアドレスを生成するハードウェア例のブロック図である 。 図12は、図1および2に示したマイクロプロセッサの一実施例において用い られるレジスタ伸張論理回路を示すブロック図である。 図13は、その実施例を図1および2に示したマイクロプロセッサを含むコン ピュータシステムの例のブロック図である。 発明の詳細な説明 図1に、マイクロプロセッサ10Aの第1の実施例のブロック図を示す。マイ クロプロセッサ10Aは、命令伸張器12A、命令キャッシュ14Aおよびプロ セッサコア16を含む。命令伸張器12Aは、さらに命令キャッシュ14Aに結 合される。命令キャッシュ14Aは、プロセッサコア16に接合される。 一般に、マイクロプロセッサ10Aは、主メモリサブシステム(以下「主メモ リ」とする)から圧縮命令(圧縮された命令)を読み込むように構成される。読 み込まれた圧縮命令は、命令伸張器12Aを通されるが、この時、圧縮命令は、 伸張命令(decompressed instruction)へと伸張されて命令キャッシュ14Aに格 納される。圧縮命令の多くは、対応する伸張命令ほどはメモリ格納場所を占有し ないので、プログラムを格納するのに必要なメモリ量が少なくて済み好都合であ る。さらに、命令がマイクロプロセッサ10A内部で伸張されるので、圧縮命令 を主メモリから マイクロプロセッサ10Aへと転送するのに必要な帯域幅が減少する。マイクロ プロセッサ10Aは、比較的小さい主メモリを有するコンピュータシステムで用 いることができる。格納される命令が圧縮されるので、主メモリに比較的大きな プログラムを格納することができる。 一の実施例においては、マイクロプロセッサ10Aは、圧縮命令および非圧縮 命令の両方をルーチン毎に実行できるように構成される。換言すれば、ルーチン は、圧縮命令または非圧縮命令の何れを用いて符号化しても良い。圧縮命令セッ トで効率的に符号化できないルーチンは、非圧縮命令を用いて符号化し、圧縮命 令セットで効率的に符号化できるルーチンは、そのようにすればよいので、都合 がよい。マイクロプロセッサ10Aは、圧縮命令と非圧縮命令との混合を許すよ うにするために、広域ポインタレジスタをベースレジスタとして用いるロード/ ストア命令のための即値フィールドの伸張も許すようにしても良い。この伸張に ついては、詳細に後述する。さらに、命令伸張器12Aは、圧縮モードを検出す る。圧縮モードは、そのルーチンの符号化に用いられた命令セットが圧縮されて いるか、または圧縮されていないかを識別するものである。 命令の圧縮は、マイクロプロセッサ10Aにおいて利用可能な命令の符号化に 対してある制限を加えることによって行われる。命令の符号化を制限することに より、命令フィールドの大きさを縮小する(即ち、命令フィールド内のビット数 を削減する)ことができる。例えば、利用できる レジスタの数を減らして、圧縮命令セットを形成することができる。利用できる レジスタが少ないので、命令の出所オペランドおよび宛先オペランドとして用い るレジスタを符号化するのに比較的小さいフィールドを用いることができる。命 令伸張器12Aは、符号化されたレジスタフィールドを伸張レジスタフィールド へと伸張する。伸張レジスタフィールドは、伸張命令に含まれる。圧縮命令は、 縮小命令フィールドを用いることにより、プロセッサコア16で用いられるマイ クロプロセッサ構造により定義される本来の命令符号方式より少ないメモリ(即 ち、比較的少ないビット)しか占有しない。 命令伸張器12Aは、圧縮命令を受信し、その命令を本来の命令符号方式へと 伸張するように構成される。ある圧縮命令における各命令フィールドは、圧縮フ ィールドから対応する伸張命令内部の対応する伸張フィールドへと伸張される。 伸張された命令は、プロセッサコア16において許容される本来の命令形式で符 号化されている。 プロセッサコア16は、命令キャッシュ14Aから命令を読み込み、復号し、 そして実行するための回路を含む。プロセッサコア16で利用できる命令は、こ こで用いるマイクロプロセッサのアーキテクチャによって決定される。一の実施 例では、プロセッサコア16は、MIPS RISCアーキテクチャを採用する 。しかしながら、プロセッサコア16は、いかなるマイクロプロセッサ構造を用 いても良い。命令伸張器12Aは、命令を本来の命令形式に伸張するの で、プロセッサコア16は、以前に設計された処理コアから構成しても良い。換 言すれば、処理コアは、マイクロプロセッサ10Aに含めるために、実質的な変 更を必要とするわけではない。 MIPS RISCアーキテクチャは、32ビットの固定長命令からなる命令 セットを規定する。マイクロプロセッサ10Aに対して、可変長命令からなる圧 縮命令セットを定義する。それらの圧縮命令の多くは、16ビット命令である。 その他の圧縮命令は、後述する拡張命令に関連する32ビット命令である。16 ビットおよび32ビットの命令形式を幾つか定義する。なお、この実施例では1 6ビットおよび32ビットの圧縮命令を用いるが、別の実施例では異なる命令長 を用いても良い。圧縮命令により符号化されるのは、非圧縮命令の一部である。 圧縮命令セットにおいて許容される命令符号化は、極普通に符号化される命令の みならず、極普通に用いられるレジスタの多くを含み、プログラム中の多くのプ ログラムやルーチンが圧縮命令を用いて符号化できるようになっている。 一の実施例においては、マイクロプロセッサ10Aは、圧縮モードを用いる。 圧縮モードが活性ならば、圧縮命令が読み込まれて実行中である。命令伸張器1 2Aは、命令が主メモリから命令キャッシュ14Aに転送されるときに、それら の命令を伸張する。一方、圧縮モードが不活性の場合もある。この場合は、非圧 縮命令が読み込まれて実行されている。圧縮モードが不活性のときは、命令伸張 器12 Aは、迂回される。実施例によっては、圧縮モードをフェッチアドレスの1ビッ ト(例えば、ビット0)によって示す。現在のフェッチアドレスは、例えば、プ ロセッサコア16内部のPCレジスタ18に格納する。PCレジスタ18のビッ ト0により、マイクロプロセッサ10Aの圧縮モード(CM)を示す。 命令キャッシュ14Aは、伸張命令および非圧縮命令を格納するように構成さ れた高速キャッシュメモリである。命令キャッシュ14Aは如何なるキャッシュ 構造を用いても良いが、図1に示した実施例に対しては、セットアソシアティブ (set associative)構成か、またはダイレクトマッピング(direct mapping) 構成が適当であろう。 次に、図2は、マイクロプロセッサ10Bの第2の実施例を示す。マイクロプ ロセッサ10Bは、主メモリから命令バイトを受け取るように結合された命令キ ャッシュ14B、命令伸張器12Bおよびプロセッサコア16を含む。命令キャ ッシュ14Bは、命令伸張器12Bに結合され、これが、さらにプロセッサコア 16に接合されている。 マイクロプロセッサ10Bは、命令キャッシュ14Bとプロセッサコア16と の間に命令伸張器12Bを有する構成となっている。命令キャッシュ14Bは、 主メモリから転送される圧縮命令を格納する。このように、命令キャッシュ14 Bは、マイクロプロセッサ10Aにおいて命令キャッシュ14Aとして用いられ ている類似容量の命令キャッシュより大きい数の命令を格納することができる。 命令 伸張器12Bは、プロセッサコア16からの命令フェッチ要求に対応するフェッ チアドレスを受信して、そのフェッチ要求に応じて命令キャッシュ14Bにアク セスする。対応する圧縮命令は、命令伸張器12Bにより、伸張命令へと伸張さ れる。伸張命令は、プロセッサコア16に転送される。 マイクロプロセッサ10Aと同様に、マイクロプロセッサ10Bが圧縮モード を含む実施例もある。非圧縮命令が読み込まれて実行されているときは、命令伸 張器12Bは、迂回される。この実施例の場合、命令キャッシュ14Bは、圧縮 命令および非圧縮命令の両方を格納する。なお、命令キャッシュ14Bは、一般 に、キャッシュラインと称する一定の大きさの複数の記憶場所に命令のバイトを 格納する。したがって、ある特定のキャッシュラインは、幾つかの圧縮命令また は非圧縮命令を格納する。何れの場合も、複数の命令バイトが格納される。この ように、命令キャッシュ14Aおよび14Bは、類似の構造をしている。1つの キャッシュラインがアドレス指定されたときの圧縮モードは、その命令バイトが 圧縮命令と非圧縮命令の何れに解釈されるかを決定する。 マイクロプロセッサ10Bに代わる構成としては、プロセッサコア16の命令 復号論理部の中に命令伸張器12Bを含めることである。このような実施例にお いては、圧縮命令は、実際には伸張しなくでも良い。その代わり、圧縮命令は、 復号論理部により直接復号(デコード)すればよ い。復号された命令(以降「復号命令」と称する)は、圧縮命令に対応する非圧 縮命令に対して生成される復号命令と同様であろう。 なお、マイクロプロセッサ10Aおよび10Bは、圧縮命令で動作するマイク ロプロセッサ10の一実施例に過ぎない。この説明の以降の部分においては、マ イクロプロセッサ10、命令キャッシュ14および命令伸張器12を用いて、図 1および2の対応する要素を指すほか、マイクロプロセッサ10の他の実施例に 含まれる要素の、別の実施例も指す。 以上の説明において、伸張、圧縮命令、伸張命令および非圧縮命令なる用語を 用いたが、以降においても使用する。これまで用いたように、「圧縮命令」なる 用語は、メモリに圧縮された形式で記憶される命令を指す。圧縮命令は、一般に 、プロセッサコア16によって採用されたマイクロプロセッサ構造で定義された とおりに表現した命令を記憶するのに用いられるビット数より少ない数のビット を用いて記憶される。「伸張命令」なる用語は、圧縮命令をプロセッサコア16 によって採用されたマイクロプロセッサ構造で定義されるとおりの本来の符号へ と伸張した結果を指す。「非圧縮命令」なる用語は、圧縮命令をプロセッサコア 16によって採用されたマイクロプロセッサ構造で定義される符号で表された命 令を指す。非圧縮命令は、メモリにも同じ形式で記憶される(即ち、非圧縮命令 は決して圧縮されない)。最後に、「伸張」なる用語は、圧縮命令を 対応する伸張命令へと展開する過程を指す。 なお、命令伸張器12Aおよび12Bは、複数の圧縮命令を同時に伸張するよ うに構成しても良い。命令伸張器12のこのような実施例は、クロック周期毎に 複数の命令を実行するプロセッサコア16の実施例と共に用いても良い。 図3A〜3Dおよび4A〜4Dは、MIPS RISCアーキテクチャを用い たマイクロプロセッサ10の実施例による、それぞれ16ビットおよび32ビッ トの圧縮命令に対する命令形式の例を示す。実施例によっては、異なる命令形式 を用いても良い。図3A〜3Dに示した各命令形式は、この特定の実施例では、 16ビットからなる。一方、図4A〜4Dに示した各命令形式は、この特定の実 施例では、32ビットからなる。これらの命令形式を用いて符号化された圧縮命 令は、各命令に対してMIPS RISCアーキテクチャにより定義された命令 形式へと伸張される。 図3Aは、第1の命令形式20を示す。命令形式20は、オペコードフィール ド22、第1のレジスタフィールド24、第2のレジスタフィールド26および 機能フィールド28を含む。オペコードフィールド22は、その命令を識別する のに使用される。さらに、機能フィールド28はオペコードフィールド22があ る特定の符号であるときに、この符号に関連づけられて、その命令を識別するた めに用いられる。機能フィールド28およびオペコードフィールド22が、一体 となって命令に対するオペコードフィールドを形成すれば、効率的である。オペ コードフィールド2 2に、その特定の符号以外の符号が用いられると、機能フィールド28は、即値 フィールドとして使用される。 第1のレジスタフィールド24および第2のレジスタフィールド26により、 その命令に対するデスティネーションレジスタおよびソースレジスタを特定する 。また、デスティネーションレジスタは、一般にその命令に対するソースレジス タとしても用いられる。このように、2つのソースオペランドと1つのデスティ ネーションオペランドが、第1のレジスタフィールド24および第2のレジスタ フィールド26によって指定される。第1のレジスタフィールド24および第2 のレジスタフィールド26における「RT」および「RS」なる表記は、後述の 命令表におけるフィールドの用途を示す。その命令の符号によって、RTまたは RSの何れかがデスティネーションレジスタとなる。 一の実施例においては、オペコードフィールド22は5ビット、第1のレジス タフィールド24および第2のレジスタフィールド26はそれぞれ3ビット、そ して機能フィールド28は5ビットからなる。第1のレジスタフィールド24は 、2つの下位フィールド(RT0およびRT1と表記)に分割される。この実施 例では、RT1は2ビットからなり、RT0は1ビットからなる。RT1は、R T0に連結されて第1のレジスタフィールド24を形成する。下位フィールドR T1および第2のレジスタフィールド26は、命令形式20により符号化された 命令で使用されると、MIPS RISCアーキテクチャにおいて定義される3 2 個のレジスタの1つを示す。 図3Bは、第2の命令形式30を示す。命令形式30は、オペコードフィール ド22、第1のレジスタフィールド24および第2のレジスタフィールド26を 含む。さらに、第3のレジスタフィールド32および機能フィールド34を示し てある。第3のレジスタフィールド32は、一般に、命令形式30を用いる命令 に対するデスティネーションレジスタを識別するのに用いられる。したがって、 第1のレジスタフィールド24および第2のレジスタフィールド26は、命令形 式30に対するソースレジスタからなる。機能フィールド34は、機能フィール ド28と同様に用いられる。図示した実施例では、第3のレジスタフィールド3 2は3ビット、機能フィールド34は2ビットからなる。 第3の命令形式40を図3Cに示す。命令形式40は、オペコードフィールド 22および第2のレジスタフィールド26の他、即値フィールド42も含む。即 値フィールド42は、命令形式40によって指定される命令に対する即値データ (イミーディエイトデータ)を与えるのに使用される。即値データは、命令のオ ペランドであり、第1のレジスタフィールド24または第2のレジスタフィール ド26で指定されるレジスタに格納されている値と同様である。例えば、即値デ ータを用いる加算命令は、その即値データをデスティネーションレジスタに格納 されている値に加算し、結果として得た和をそのデスティネーションレジスタに 格納する。一の実施例では、即値フィールド42は、8 ビットからなる。即値フィールド42は、図3Cに示した命令形式では、2つの 下位フィールドIMM0およびIMM1に分割される。この下位フィールドによ り、第2のレジスタフィールド26を、命令形式40内部において、命令形式2 0および30において配置される場合と同じビット位置に配置することが可能と なる。第2のレジスタフィールド26は、それが用いられる16ビット命令の同 じ位置に常に見いだすことができるので、好都合である。したがって、下位フィ ールドIMM1は、2ビットからなり、下位フィールドIMM0は、6ビットか らなる。IMM1は、IMM0と連結されて即値を形成する。 図3Dは、第4の命令形式50を示す。命令形式50は、オペコードフィール ド22および即値フィールド52を含む。即値フィールド52は、即値フィール ド42と同様に、命令のオペランドとして用いられる。ただし、即値フィールド 52は、11ビットからなる。 図4Aは、第5の命令形式60を示す。命令形式60は、オペコードフィール ド22を含むが、このオペコードフィールド22は、拡張命令として符号化され る。命令伸張器12は、オペコードフィールド22内部に拡張命令オペコードを 認識すると、その命令を32ビット命令として取り扱う(即ち、拡張オペコード を含む命令中に含まれる16ビットと、拡張命令が含まれていなければプログラ ム順で次の命令を構成することになる16ビットとが、連結されて32ビット命 令が形成される)。したがって、圧縮命令 は、16ビット命令および32ビット命令からなる可変長命令セットであると見 ることができる。さらに、命令形式60は、6ビットからなるゼロフィールド6 2(すべて2進数の0に符号化される)、即値フィールド64およびBRフィー ルド66を含む。命令形式60は、BR命令(無条件分岐命令)の拡張形式を符 号化するのに用いられるので、BRフィールド66は、BR命令を示すオペコー ドフィールドである。一の実施例においては、BRオペコードは、16進数の0 2である。 拡張BR命令は、非拡張BR命令より大きい即値フィールドを持つので、非拡 張BR命令より大きいオフセットで符号化できる。分岐命令から遠い命令への分 岐が望まれる場合、この拡張BR命令が用いられる。また、近くの命令への分岐 には、非拡張BR命令を用いる。即値フィールド64は、その分岐命令の目的ア ドレスを生成するためにそのBR命令に続く命令のアドレスに加算される16ビ ットのオフセットとして用いられる。これに対して、非拡張BR命令は、11ビ ットのオフセットを含む(即ち、命令形式50を用いて符号化される)。 図4Bは、命令形式70を示し、これは、命令形式40の拡張版である。命令 形式70は、拡張オペコードとして符号化されるオペコードフィールド22のほ か、即値フィールド72、第1のレジスタフィールド74、第2のレジスタフィ ールド76および第2のオペコードフィールド78を含む。第1のレジスタフィ ールド74および第2のレ ジスタフィールド76は、図示した実施例では、それぞれ5ビットからなる。し たがって、MIPS RISCアーキテクチャで定義されるレジスタは、何れも 命令形式70を用いてアクセスできる。第2のオペコードフィールド78は、実 行中の命令を定義するもので、(オペコードフィールド22と同様に)5ビット からなる。最後に、即値フィールド72は、12ビットからなり、1ビットのI MM2下位フィールド、5ビットのIMM1下位フィールドおよび6ビットのI MM0下位フィールドに分割される。即値フィールド72は、図示した実施例に おいては、IMM2にIMM1を連結し、さらにIMM0を連結することによっ て形成される。 命令形式30に対応する拡張命令形式を図4Cに命令形式80として示す。命 令形式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と同じである。 第2のオペコードフィールド78は、命令形式70から 命令形式80を区別するために特定の値に符号化される。第2のオペコードフィ ールド78が、その特定の値に符号化された場合、命令伸張器12は、その命令 は命令形式80であると解釈する。逆に、第2のオペコードフィールド78が、 その特定の値とは別の値に符号化されている場合、命令伸張器12は、命令形式 70であると解釈する。一実施例では、その特定の値は、16進数の00である 。 命令形式80は、さらにCOP0ビット86を含む。COP0ビット86は、 これがセットされると、(MIPS RISCアーキテクチャで定義されている ような)ある種のコプロセッサゼロ命令が実行されていることを示す。後述の命 令表には、COP0ビット8をセットすることにより符号化される命令が定義さ れている。 命令形式20、30、40および50に対して定義されている命令により、一 般的なプログラムにおいて普通に行われる動作の多くを実行することができる。 しかし、ルーチンによっては、これらの命令では不可能な動作を行う必要がある こともある。ルーチン中の命令の大半は、命令形式20〜50を用いて符号化で きるが、幾つかの命令では、さらなる符号形態が必要となる。例えば、形式20 〜50において利用可能なレジスタの部分集合には含まれないレジスタへのアク セスが、必要な場合もある。形式20〜50を用いて符号化される命令に含まれ ない付加的な命令が、必要な場合もある。これらおよびその他の理由から、拡張 オペコードおよび拡張命令形式60〜80が定義されてい る。 命令伸張器12は、拡張オペコードを検出するために、オペコードフィールド 22を調べる。拡張オペコードは、本実施例における命令形式50を用いるため に定義されたオペコードの1つである。しかしながら、即値フィールド52に含 まれるビットは、特定の拡張命令に対して符号化される拡張命令形式によって異 なる解釈に割り当てられる。拡張命令形式には、特定の拡張命令を特定する第2 のオペコードフィールド(例えば、フィールド66および78)が含まれる。 拡張オペコードおよび拡張命令形式を加えることにより、多くの命令が、比較 的狭い命令形式20〜50を用いて符号化されるが、必要に応じて比較的広い拡 張命令形式の柔軟性を持つこともできるようになる。拡張命令形式に含まれる機 能を時折利用するプログラムでも、メモリ占有量を減らすことは可能である。そ れは、これらのプログラムも、圧縮命令を用いて符号化することができ、圧縮命 令の多くが16ビット圧縮命令からなるからである。 マイクロプロセッサ10の一実施例においては、16ビットの命令部分をフェ ッチして拡張オペコードを検出することにより、拡張命令を扱っても良い。拡張 オペコードを検出したときに、NOPをプロセッサコア16に転送して、拡張命 令の残りの16ビット部分をフェッチしても良い。その拡張命令は、伸張され、 前記のNOPの後に次の命令として与えられる。 さらに、命令伸張器12は、拡張命令の一部は利用できるが、第2の部分は利 用できないような場合を処理する。例えば、拡張命令の2つの部分が、命令キャ ッシュ14内部の2つの異なるキャッシュラインに存在することがある。したが って、その命令の一方の部分は、命令キャッシュ14から読み込まれるが、他方 の部分は、命令キャッシュ14の内部にない場合がある。最初の部分は、残りの 部分が利用できるようになるまで、命令伸張器12に格納する必要があるかも知 れない。 最後に、図4Dは、MIPS RISC命令セットのJAL命令を明示的に拡 張するために用いられる命令形式90である。JAL命令は、サブルーチンコー ル命令として用いられることが多い。サブルーチンは、呼び出し中のルーチンか ら(アドレス的に)大きな距離にあるメモリに格納される場合がある。したがっ て、(26ビットからなる即値フィールド92を介して)可能な限り大きな範囲 の相対オフセットを持つことは、JAL命令にとって重要である。さらに、命令 の符号には1つの交換ビット94が含まれる。交換ビットは、目的アドレスにあ る命令の圧縮/非圧縮性を示すのに用いられる。交換ビットがセットされている 場合、目標の命令は圧縮命令である。交換ビットがクリアされていれば、目標の 命令は非圧縮命令である。交換ビット94の値は、プロセッサコア16の内部で プログラムカウンタのビット0にコピーされる。プログラムカウンタのビット0 は、常にゼロであると仮定できる。なぜなら、16 ビットおよび32ビットの命令は、それぞれ少なくとも2バイトを占有し、且つ 命令は、連続したアドレスに格納されるからである。したがって、ビット0は、 現在のルーチンの圧縮モードを格納するには便利な場所である。プロセッサコア 16は、ビット0がセットされていれば、フェッチアドレスを(4に代えて)2 ずつ増やしていくことにより、16ビットの圧縮命令を命令伸張器12を介して フェッチする。 マイクロプロセッサ10によって用いられる圧縮命令セットの各命令は、図3 A〜3Dおよび図4A〜4Dに示した命令形式の少なくとも1つを使用する。な お、オペコードフィールド22は、各命令形式に含まれ、且つ各命令形式におい て同じ場所に位置する。オペコードフィールド22の符号化により、命令の残り の部分の解釈に何れの命令形式を用いるかが決定される。オペコードフィールド の符号形態の第1の様態が命令形式20に割り当てられる、オペコードフィール ド符号形態の第2の様態が命令形式30に割り当てられる、..と言う具合であ る。 ここで用いるように、「命令フィールド」なる用語は、グループ化され且つ1 グループとしてある解釈が割り当てられる命令内の1つ以上のビットを指す。例 えば、オペコードフィールド22は、命令のオペコードとして解釈されるビット 群である。さらに、第1および第2のレジスタフィールド24および26は、命 令のオペランドを格納するプロセッサコア16内の記憶場所を識別するレジスタ 識別 子からなる。さらに、「即値フィールド」なる用語は、その中に即値データが符 号化される命令フィールドを指す。即値データは、命令にオペランドを与えると 考えられる。また、即値データは、レジスタ値に加算されるべきオフセットとし て用いても良い。この加算により、アドレスが生成される。さらに、即値データ は、分岐命令に対するオフセットとして用いても良い。 図5A〜6Fは、マイクロプロセッサ10の特定の実施例で用いられる圧縮命 令セットの例を掲げた表である。特定の実施例では、プロセッサコア16内部に MIPS RISCアーキテクチャを採用する。したがって、これらの表の命令 欄100に掲載された命令ニューモニックは、MIPS RISCアーキテクチ ャで定義された[または、ケイン(Kane)およびハインリック(Heinrich)著、「M IPS RISCアーキテクチャ」、付録D、ニュージャージー州アッパーサド ルリバー、プレンティスホールPTR(Professional Technical Reference)出 版社、1992年(引用により本明細書に含まれる)に記述されたような命令ア センブラのために定義された]命令ニューモニックに対応する。但し、次の例外 がある。即ち、CMPI、MOVEI、MOVE、NEG、N0T.および拡張 である。これらの命令は、次のMIPS命令(RSおよびRTは、16ビットの RSおよびRTを指す)に翻訳できる。 さらに、添付の命令表には、幾つかの記号を用いてある。オペランド欄102 においては、記号rs、rt、xsおよびrdを用いた。rsおよびxsは、第 2のレジスタフィールド26(または第2のレジスタフィールド76)を指し、 rtおよびxtは、第1のレジスタフィールド24(または第1のレジスタフィ ールド74)を指す。同様に、rdは、第3のレジスタフィールド32(または 第3のレジスタフィールド82)を指す。前記の一実施例で述べたように、第1 のレジスタフィールド24、第2のレジスタフィールド26および第3のレジス タフィールド32は、それぞれ3ビットからなる。次の表1に、それぞれの記号 に対するMIPS RISCアーキテクチャにおけるフィールド符号(2進数で 掲載)のレジスタへの射像(割り当て)を掲げる。その他の射像も後に示すよう に企図する。MIPSアセンブラの慣例に従って割り当てた名称も表1に掲載す る。 表1:レジスタの割り当て 表1に示すとおり、レジスタフィールド24、26および32を有する圧縮命令 に対して、レジスタを16個まで使用することができる。各レジスタフィールド は3ビットであるから、所与のオペコードに対して、レジスタは8個だけ使用で きる。16個のレジスタ総てにアクセスし得る命令には、後述の命令表において 2つのオペコードが割り当てられる。これに関して言えば、レジスタの選択は、 レジスタフィールドおよびオペコードフィールド22の両方の関数である。レジ スタフィールドは、比較的少ないビットを用いて符号化できるが、大きいレジス タ群にアクセスできる選択命令を提供するので、好都合である。 オペランド欄102には、即値フィールド32、42、64および72に対す る記号も掲げてある。記号「imm」は、即値フィールドが含まれていることを 示す。「imm」の前に「s」が在る場合、その即値フィールドは、符号付きで あり、その即値フィールドの伸張命令への伸張は、そ の即値フィールドを符号拡張することによって行われる。「imm」の前に「s 」が無い場合、その即値フィールドは、符号無しであり、その即値フィールドの 伸張には、その即値フィールドのゼロ拡張を伴う。一の実施例においては、ロー ド/ストア命令に対する即値フィールドの伸張は、半ワードに付き1ビット、ワ ードに付き2ビットの右ローテーション、およびこれに続く、半ワードに付き1 ビット、ワードに付き2ビットの左シフトを即値ビットに行うことからなる。効 率的には、ワードに対して7ビットの即値フィールドを与え、半ワードに対して (16ビット命令形式の場合)6ビットの即値フィールドを与える。MIPS RISCアーキテクチャでは、ロード/ストア命令に対応するデータのアドレス は、圧縮命令セット例に含まれる各命令に対して一列に並べることを定めている 。したがって、(半ワードの)最下位ビットおよび(ワードの)最下位から2番 目のビットは、ゼロに設定されるので、これらのビットを指定するために、圧縮 された即値フィールドのビットを用いる必要はない。最後に、「imm」には、 その即値フィールドに含まれるビット数を示す数が後に付けられる。 オペコードフィールド22および機能フィールド28も伸張される。具体的に は、オペコードフィールド22および機能フィールド28により、図5A〜6F に示した表に従ってMIPS RISCアーキテクチャにおける命令が識別され る。伸張命令のオペコードフィールドおよび機能フィールドは、MIPS RI SCアーキテクチャの定義に従って符号 化される。 図5Aおよび5Bは、表110および112をそれぞれ示す。表110および 112は、図3Aに示した命令セット20を用いる、圧縮命令セット例からの命 令を掲載する。命令欄100およびオペランド欄102の他、オペコード欄10 6および機能欄104も含まれる。オペコード欄106および機能欄104は、 16進数を含み、オペコードフィールド22および機能フィールド28にそれぞ れ対応する。 表110には、機能欄104に「imm5」なる符号形態を有する命令が幾つ か含まれる。符号形態「imm5」は、表110のロード/ストア命令に対して 出現し、これらの命令に対しては、機能フィールド28が即値フィールドとして 用いられることを示す。その他の命令については、機能フィールド28は、圧縮 命令セット内の命令を識別するためにオペコードフィールド22と関連付けて使 用される。 さらに、表110において、オペコード「1d」は、「特別」とラベルが付け られている。特別な命令は、機能フィールド28に特定の解釈がある。特に、機 能フィールドの最上位ビットが0の場合、その命令は次のように定義される: ADDIU rt,rs,simm4 ただし、オペランド「simm4」は、機能フィールド28の残りのビットから 形成される。機能フィールド28の 最上位ビットが1の場合、2つの特殊な場合を除いて、その命令は次のように定 義される: ADDIU xt,xs,simm4 第2のレジスタフィールド26が0に符号化されている場合、その命令は次のよ うになる: MOVEI xt,imm4 この場合も、オペランドimm4は、機能フィールド28の残りのビットから形 成される。最後に、第2のレジスタフィールド26が、5(16進数)と符号化 されている場合、その命令は次のように定義される: ADDIU sp,simm9 ただし、オペランドsimm9は、機能フィールド28の残りのビットおよび第 1のレジスタフィールド24から形成される。オペランドsimm9の下位の2 ビットは、0に設定される。 なお、表110に示した命令SLTおよびSLTUのデスティネーションは、 一実施例によれば、t8レジスタ(レジスタ$24)である。 表112においては、幾つかの命令に対して、オペランド「imm3」および 「imm6」が示されている。オペランドimm3は、第2のレジスタフィール ド26に符号化され、imm6は、第2のレジスタフィールド26と第1のレジ スタフィールド24との両方に符号化される。 さらに、表112は、ジャンプレジスタ(JR)命令を含む。この命令は、オ ペランドとして第2のレジスタフィ ールド26を有する。しかし、実施例においては、MIPS RISCアーキテ クチャのレジスタの何れかをJR命令用に指定するために、第1のレジスタフィ ールド24の下位フィールドRT1を第2のレジスタフィールド26と関連付け て用いるので、注意を要する。 図5Cにおいて、表114は、命令欄100、オペランド欄102、オペコー ド欄106および機能欄104を含む。表114には、図3Bに示す命令形式3 0を用いる、命令セット例からの命令を掲載する。表114の一部の命令は、ハ ード的に符号化されたデスティネーションレジスタを有する(即ち、プログラマ は、別のオペコードを用いる以外に、デスティネーションレジスタを選択できな い)。これらの命令に対しては、第3のレジスタフィールド32を機能フィール ド34に結合して、機能欄104に示した機能フィールド符号を格納する。さら に、機能欄104およびオペランド欄102に即値オペランドを有する命令が1 つある。この命令は、機能フィールド34との関連で第2のレジスタフィールド 26を用いて、この命令で用いられる対応する即値フィールドを符号化する。 図5Dおよび5Eは、命令形式40および50をそれぞれ用いる、圧縮命令セ ットからの命令を示す表116および118である。表118には、拡張命令が 示されている。しかしながら、この拡張命令は、その命令が命令形式60、70 および80のうちの1つを用いる32ビット圧縮命令であることを実際に示して いる。 図6Aおよび6Bには、表120および122を示す。表120および122 は、図4Bに示した命令形式70を用いて符号化される、圧縮命令セットからの 命令を示す。 表120は、命令欄100およびオペランド欄102を含み、さらにオペコー ド欄108を含む。オペコード欄108は、この欄に示されたオペコード符号が オペコードフィールド78に対応することを除けば、オペコード欄106と同様 である。 表122は、第1のレジスタフィールド74に対応するRT欄109を含む。 表122に示された命令のRTフィールドの符号は、何れの命令が選択されるか を示す。表122に示された命令は、オペコードフィールド78にある符号を共 有する。一の実施例では、この符号は、00(16進数)である。 図6C、6D、6Eおよび6Fは、命令形式80によって符号化される、圧縮 命令セット例からの命令を示す表124、126、128および130である。 表124、126および130は、機能フィールド84の符号に対応する機能欄 107を含む。表128は、さらに詳細に後述するRSおよびRT欄105を含 む。 表124のオペランド欄102は、一部の命令について即値オペランドを含む 。オペランド「imm5」は、第2のレジスタフィールド76へと符号化される 。オペランドimm15は、第1のレジスタフィールド74、第2のレジスタフ ィールド76および第3のレジスタフィールド8 2の組み合わせに符号化される。 表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に掲げた命令は、COP0ビット 86がクリアされる。 表128の命令の一部は、オペランドimm6を含む。オペランド「imm6 」は、機能フィールド84へと符号化される。さらに、第2のレジスタフィール ド76が1x(16進数、xはこのビットが任意の値であることを示す)に符号 化された場合、機能フィールド84を用いて、表130に示した命令を示す。 図7は、マイクロプロセッサ10の一実施例に従う第1のアドレシングウィン ドウ150および第2のアドレシングウィンドウ152を示す。アドレシングウ ィンドウ15 0の中心は、ベースレジスタ(アドレシングウィンドウ150の左側にRegと 表す)の値である。ベースレジスタの値により、主メモリ内のアドレスを特定す る。アドレシングウィンドウ150は、非圧縮命令セットの一実施例に従う非圧 縮命令セットにおけるロード/ストア命令がアクセスできるベースレジスタの値 を中心とするアドレス範囲を表す。非圧縮命令セットは、ロード/ストア命令が 、ベースレジスタに格納されている値と16ビットの符号付き即値フィールドの 和によりメモリオペランドのアドレスを形成することを規定する。このような実 施例においては、そのアドレス範囲は、ベースレジスタより32767大きい上 限およびベースレジスタより32768小さい下限を有する。実施例によっては 、これより大きい範囲や小さい範囲を含んでも良い。ここで用いたように、「ベ ースレジスタ」なる用語は、ベースアドレスを格納するときにロード/ストア命 令により指定されるレジスタを指すが、このベースアドレスに符号付きの即値フ ィールドを加算して、その命令によって操作されるメモリオペランドのアドレス を形成する。 例えば表110に示すように、圧縮命令セット例の16ビットの部分に含まれ るロード/ストア命令は、5ビットの即値フィールドを含む。このフィールドは 、ワード長のメモリオペランドに対して、2ビット右に回転された後、左に2ビ ットシフトされて、7ビット(一実施例に従い5ビットを用いて形成される即値 フィールドの最大)の即値 フィールドを形成する。次に、7ビットの即値フィールドは、ゼロ拡張されて、 対応する伸張命令におけるベースレジスタから正のオフセットを形成する。した がって、サブレンジ154が、圧縮命令によるアクセスに利用できる。アドレシ ングウインドウ150において、サブレンジ154は、ベースレジスタより12 7大きい上限およびベースレジスタの下限を有する。しかしながら、サブレンジ 154の大きさは、実施例毎に変わり得る。 サブレンジ154は、多くのロード/ストア命令に対して良好に作用するが、 異なるアドレス範囲を広域ポインタレジスタと共に用いても良い。広域ポインタ レジスタは、広域変数の格納に用いるメモリ領域を指定するためにソフトウェア の慣例で割り当てられるレジスタである。広域変数は、プログラム内の何れのル ーチンからもアクセスに利用できる変数である。これに対して、局所変数は、一 般に、特定のルーチンまたはルーチン群にしかアクセスできない。MIPS命令 セットにおいては、例えばレジスタ$28が、広域ポインタレジスタとしてしば しば使用される。 したがって、広域ポインタレジスタを中心としたメモリ領域は、広域変数の表 として見ることができる。各広域変数は、表の内部でオフセットが割り当てられ る。このオフセットは、広域変数を特定するために広域ポインタレジスタに加算 される即値フィールド値に対応する。例えば図7に示した実施例に対しては、ア ドレシングウィンドウ150および152の左側に示したように、広域変数のた めに 64Kバイトの表を割り当てても良い。 圧縮された即値フィールドが、アドレシングウィンドウ150について説明し たように伸張された場合、その広域変数表は、非圧縮命令にアクセス可能な2つ のサブレンジ156および158に挟まれた、圧縮命令にアクセス可能な区画( サブレンジ154に対応する)を含む。前述のように、マイクロプロセッサ10 は、一部のルーチンが非圧縮命令で符号化され、他のルーチンが圧縮命令で符号 化されたプログラムを利用できるようにしても良い。あるプログラムにおいて広 域変数を割り当てることは、アドレシングウィンドウ150の非圧縮広域変数の サブレンジ156および158の分割により複雑になる。広域変数は、例えばサ ブレンジ158に割り当てた後、(非圧縮命令に対する)サブレンジ156にお いて広域変数の割り当てが継続しなければならない。換言すれば、非圧縮命令に アクセスできる広域変数のために、サブレンジ154を迂回する必要がある。 マイクロプロセッサ10は、広域ポインタ(GP)レジスタを用いるロード/ ストア命令に対する圧縮された即値フィールドの伸張を用いることができ、この 伸張により、アドレシングウィンドウ152がもたらされる。アドレシングウィ ンドウ152は、圧縮命令にアクセス可能なサブレンジ160および非圧縮命令 にアクセス可能なサブレンジ162を含む。サブレンジ162は、隣接するメモ リブロックなので、好都合である。非圧縮命令によるアクセス のための広域変数をサブレンジ162に割り当てる一方で、圧縮命令によるアク セスのための広域変数をサブレンジ160に割り当てることができる。本質的に 、サブレンジ160およびサブレンジ162は、圧縮命令および非圧縮命令によ るアクセスのための広域変数の異なる表をそれぞれ形成する。 前述のように、アドレシングウィンドウ152は、圧縮即値フィールドを伸張 することによりもたらされる。ただし、伸張された即値フィールドの最上位ビッ トがセットされる。もし、圧縮即値フィールドが2進数のゼロで符号化されてい れば、伸張された即値フィールドは、8000(16進数)となる。伸張即値フ ィールドは、ロード/ストア命令に対する符号付きフィールドとして解釈される ので、8000という値は、伸張即値フィールドにおいて利用可能な最も負の数 である。圧縮即値フィールドがゼロ以外に符号化されている場合は、その圧縮即 値フィールドは、サブレンジ160を形成する負の数へと伸張される。図7の実 施例に示したように、サブレンジ160は、アドレシングウィンドウ152によ って表されるアドレス範囲の下限を形成する。 これまで用いたように、メモリオペランドなる用語は、主メモリ内部のあるメ モリ位置に記憶された値を指す。メモリオペランドをマイクロプロセッサ10内 部のレジスタに転送するためには、ロード命令が用いられることになる。逆に、 レジスタに格納されている値をメモリオペランドの 記憶場所に転送するには、ストア命令が用いられる。メモリオペランドは、種々 の大きさ(即ち、バイト数)を取り得る。一実施例では、3種類の大きさが利用 できる。即ち、バイト、半ワードおよびワードである。半ワードは2バイトから なり、ワードは4バイトからなる。実施例によっては、他の大きさのメモリオペ ランドも考えられる。 図8には、ロード/ストア命令の即値フィールドを伸張する命令伸張器12内 部のハードウェア例のブロック図を示す。なお、複数のロード/ストア命令を同 時に伸張するために、図8に示したハードウェア例を複数用いても良い。図8に 示したハードウェア例は、マイクロプロセッサ10Bに関して記載されている。 しかし、同様のハードウェアをマイクロプロセッサ10Aの内部に採用しても良 い。このハードウェア例は、即値フィールド伸張器170およびレジスタ復号器 172を含む。 命令が命令キャッシュ14Bから命令伸張器12Bに転送されると、ロード/ ストア命令に対する圧縮即値フィールドからなる命令の一部が、圧縮即値バス1 74により即値フィールド伸張器170に運ばれる。図3A〜6Fにおいて説明 した命令セット例に対して、圧縮即値フィールドは、機能フィールド28(図3 Aに示す)からなる。さらに、圧縮されたロード/ストア命令のベースレジスタ フィールドは、ベースレジスタバス176で送られる。図3A〜6Fに示した命 令セット例に対して、ベースレジスタフィールドは、第2のレジスタフィールド 26からなる。 レジスタ復号器172は、ベースレジスタバス176上で特定されるレジスタ を復号する。ベースレジスタが、広域ポインタレジスタならば、レジスタ復号器 172は、即値フィールド伸張器170へのGP線178上のGP信号を活性に する。それ以外の場合、レジスタ復号器172は、GP信号を不活性にする。 即値フィールド伸張器170は、圧縮即値フィールドをGP信号に応じて2通 りの内の1つの方法で伸張する。GP信号が不活性の場合、即値フィールド伸張 器170は、伸張即値フィールドの最上位ビットをクリアする。逆に、GP信号 が活性の場合、即値フィールド伸張器170は、即値フィールドの最上位ビット をセットする。したがって、ベースレジスタとして広域ポインタレジスタ以外の レジスタが使用されている場合、正のオフセットが生成される。また、ベースレ ジスタとして広域ポインタレジスタが使用されている場合、負のオフセットが生 成される。即値フィールド伸張器170は、伸張した即値フィールドを伸張即値 バス180に送出する。 図9に、圧縮命令セット例の一実施例に従うロード/ストア命令に対して生成 された伸張即値フィールドを例示する。ベースレジスタとして広域ポインタレジ スタを使用しないロード/ストア命令の圧縮即値フィールドは、参照番号182 によって示されるように伸張される。バイト、半ワードおよびワードに対する伸 張を、伸張即値フィールド(またはオフセット)の各ビット位置を数字またはL で表 して、個別に示した。圧縮即値フィールドからのビットは、伸張されたフィール ドのそれぞれのビット位置に数字によって示した。圧縮即値フィールドの最下位 ビツトは、数0によって表し、圧縮即値フィールドの最上位ビットは、4によっ て表す。文字Lは、2進数のゼロに設定されたビット位置を示すのに用いる。 ベースレジスタとして広域ポインタレジスタを用いるロード/ストア命令に対 するバイト、半ワードおよびワードに対応する伸張即値フィールドを参照番号1 84によって示した。参照番号182で示した伸張フィールドと同様に、参照番 号184によって示した伸張フィールドは、圧縮即値フィールドからの1つのビ ットで満たされたビット位置に数を示し、文字Lを用いて、2進数0に設定され たビット位置を示す。さらに、伸張された各オフセットの最上位ビットは、2進 数の1(文字Hで示す)に設定される。 次に、図8に示した実施例に従い命令の伸張を行うために命令伸張器12によ り行われる動作を示すフローチャートを図10示す。図10に示すステップは性 質上順番に示したが、各種ステップは並列に行っても良い。 命令伸張器12は、受信した命令がロード/ストア命令かどうかを判断する( 判断ブロック190)。その命令がロード/ストア命令でない場合、(図3A〜 6Fに示したような)圧縮命令と対応する伸張命令との間の射像に従って、その 命令を拡張する(ステップ192)。その命令がロード/ストア命令である場合 、その命令によって指定さ れるベースレジスタを調べる(判断ブロック196)。ベースレジスタが広域ポ インタレジスタならば、即値フィールドを図9の参照番号184で示したように 伸張する(ステップ194)。また、ベースレジスタが広域ポインタレジスタで ない場合、即値フィールドを図9の参照番号182で示したように伸張する(ス テップ192)。 広域ポインタレジスタに対して異なる方法でロード/ストア用オフセットを伸 張することに加えて、マイクロプロセッサ10は、何れの(即ち、圧縮または非 圧縮)タイプの命令を実行しているかを示す圧縮モードも使用可能とする。図1 1は、命令伸張器12の一実施例の一部を示すブロック図である。図示した部分 は、マイクロプロセッサ10によって実行されている各ルーチンに対する圧縮モ ードを判断する。図示した部分は、マイクロプロセッサ10Bに適しており、同 様の部分をマイクロプロセッサ10Aで用いることも可能である。図11はモー ド検出器200を示す。 プロセッサコア16により命令がフェッチされると、その命令は、命令バス2 02上でモード検出器200により受信される。モード検出器200は、ジャン プアンドリンク(JAL)命令のフェッチ時を検出し、さらに交換ビット94を 検査する。交換ビット94がセットされている場合には、JAL命令の目的アド レスにあるルーチンは、圧縮命令からなる。したがって、その目的ルーチンの圧 縮モードは「圧縮」である。また、交換ビット94がクリアさ れていることもある。この場合は、その目的ルーチンの圧縮モードは「非圧縮」 である。 JAL命令は、目的ルーチンに対する圧縮モードを指定する他、JAL命令に より、JAL命令に続く命令のアドレスがMIPS RISCアーキテクチャの レジスタ$31に格納されるようになる。後に、このレジスタは、目的ルーチン から戻るJR命令と共に用いられる。この実施例では、圧縮モードは、アドレス の一部として格納されるので、コール元のルーチンの圧縮モードは、JR命令の 実行時に復元される。圧縮命令で符号化されたルーチンは、非圧縮命令で符号化 されたルーチンと混合できるので、好都合である。新たな圧縮モードは、圧縮モ ード線206でプロセッサコア16に送られる。なお、代わりの実施例として、 モード検出器200は、命令伸張器12の代わりにプロセッサコア16の一部と して含めても良い。 図11に示したモード検出器200の実施例には、圧縮許可(イネーブル)ビ ットのための記憶場所204が含まれる。圧縮がイネーブルである場合、圧縮許 可ビットはセットされる。命令が圧縮モードでフェッチされ、且つ圧縮がイネー ブルである場合、命令伸張器12は、その命令を伸張する。許可ビットがクリア されている場合、マイクロプロセッサ10は、命令の圧縮が禁止される。命令の 伸張が禁止されている場合、命令伸張器12は迂回される。さらに、モード検出 器200は、命令の圧縮が禁止されている場合、圧縮モードが非圧縮であること を示す。 これまで用いたように、ルーチンは、マイクロプロセッサ10による実行のた めに順序付けられた符号化された命令の集合である。このルーチンは、圧縮命令 または非圧縮命令の何れかで符号化することが許され、且つサブルーチンコール 命令およびリターン命令によって区切られる。区切りとなるサブルーチンコール 命令は、そのルーチンに含まれない。その代わり、サブルーチンコール命令は、 そのサブルーチンコール命令に含まれる目的アドレスによって、そのルーチンの 始まりを示す。そのルーチンの最初の命令が、目的アドレスに格納される。さら に、サブルーチンコール命令を含むルーチンの内部の命令のアドレスを退避させ て、呼び出し中のルーチンに戻るためにリターン命令を実行できるようにする。 図3A〜6Fに示した圧縮命令セット例において、JAL命令は、サブルーチン コール命令の役目を果たすことができる。あるいは、jalr命令が、サブルーチン コール命令の役を果たすことができる。 ルーチンはリターン命令で終了する。このリターン命令により、続く命令の実 行は、対応するサブルーチンコール命令の実行時に退避されたアドレスへと戻る 。換言すれば、リターン命令の目的アドレスは、退避されたアドレスである。圧 縮命令セット例に付いて言えば、jr命令は、リターン命令としての役を果たす ことができる。一般に、目的アドレスは、その目的アドレスに対応する命令の実 行時に命令のフェッチが始まるアドレスである。 次に、図12に、レジスタフィールド伸張の一実施例の ブロック図を示す。レジスタフィールド伸張の別の実施例を考察する。ある命令 に対応する圧縮レジスタフィールドは、圧縮レジスタフィールドバス210で転 送される。レジスタ伸張ブロック212が、圧縮レジスタフィールドを受信する 。さらに、圧縮レジスタフィールドの少なくとも一部が、伸張レジスタフィール ドに包含され、この伸張レジスタフィールドが、伸張レジスタフィールドバス2 14上に転送される。これにより、伸張レジスタフィールドが、圧縮レジスタフ ィールドの少なくとも一部をレジスタ伸張ブロック212によって生成される値 に連結することにより、形成される。 一実施例においては、圧縮レジスタフィールド全体が伸張レジスタフィールド に連結される。さらに、伸張レジスタフィールドの残りの部分は、その命例が何 れのレジスタセット(例えば、xs vs.rsおよびxt vs.rt)にア クセスするかに依存する。セット選択信号は、xs(xt)レジスタ集合または rs(rt)レジスタ集合の何れを用いるべきかを示し、セット選択バス216 上で各レジスタについて受信される。このセット選択信号が活性である場合、x s(xt)が選択される。その他の場合は、rs(rt)が選択される。セット 選択信号は、図5A〜6Fに示した圧縮命令セット例に従って伸張されている命 令のオペコードに基づいて、活性であったり不活性であったりする。例えば、表 1に示した圧縮命令と非圧縮命令との間のレジスタ射像を用いても良い。そのよ うな例の 場合、レジスタ伸張器212は、次の論理を用いることができる。 DR[4:3]={RH,(RH&CR[2]|!CR[2:0])} ここで、DRは伸張レジスタフィールドを表し、CRは圧縮レジスタフィールド を表し、及びRHは対応するセット選択信号値を表す。 その他のレジスタ射像も幾つか考察し、レジスタ射像(レジスタの割り当て) の例を、対応するヴェラログ(Verilog)論理式と共に、以下の表2〜4に示す。 なお、マイクロプロセッサ10の種々の実施例において、何れのレジスタ射像を 用いても良い。 表2:第2のレジスタ割り当て例 表3:第3のレジスタ割り当て例表4:第4のレジスタ割り当て例 表1〜4においてアセンブラ指定の名称で示したように、ソフトウェアの慣例 によって、様々なレジスタが種々の機能に割り当てられる。例えば、MIPSア センブラでは、レ ジスタに次の意味が割り当てられている。 表5:レジスタ名に対するソフトウェア上の慣例 レジスタ ソフトウェア名 用途 $0 なし ハード的にゼロに固定 $1 $at アセンブラで使用 $2...$3 v0-v1 関数の結果またはスタテ ィックリンク $4...$7 a0-a3 サブルーチンへの引数 $8...$15 t0-t9 一時的レジスタ、サブ ルーチン間で退避されず $24...$25 $16...$23,$30 s0-s8 サブルーチン間で退避 される $26...$27 k0-k1 オペレーティングシス テムで予約済み $28 gp 広域ポインタ $29 sp スタックポインタ $31 ra リターンアドレス 圧縮命令で符号化されたルーチンに対し、一時的レジスタおよび退避されるレ ジスタの両方へのアクセスを与えることが望ましい。さらに、既存のソフトウェ アと共に動作するためには、v0-v1、a0-a3、gp、spおよびraへのアクセスが必要 である。先に示したレジスタ射像により、これ らの質とレジスタ伸張器212が相当少数のゲートを占有するようにしたいとい う要望との間の均衡がとられる。MIPSレジスタセットから有用なレジスタの 集合を選択する一方で、レジスタ伸張器212内部のゲート数をなおも少なく維 持しているので、好都合である。 次に、図13に、マイクロプロセッサ10を含むコンピュータシステムの実施 例220を示す。マイクロプロセッサ10を用いた他の多くのコンピュータシス テムを考えることができる。コンピュータシステム220において、マイクロプ ロセッサ10は、多数のI/Oインタフェース222A〜222Nと共に半導体 基板224上に組み込まれている。I/Oインタフェースは、基板224の外部 のI/O装置へのインタフェースを与える。I/Oインタフェース222Aの例 としては、汎用非同期送受信装置(UART:universal asynchronous receiver /transmitter)がある。 マイクロプロセッサ10は、I/Oインタフェース222Aに結合されて、こ れらと通信を行う。さらに、マイクロプロセッサ10は、外部のインタフェース 論理部226に接続しても良く、該インタフェース論理部226は、さらに1乃 至それ以上のダイナミックランダムアクセスメモリ(DRAM)モジュール22 8へとインタフェースを取っている。DRAMモジュール228は、圧縮命令お よび/または非圧縮命令を格納するだけでなく、圧縮命令、非圧縮命令またはこ れらの両方の符号で表されたプログラム で使用するためのデータも格納する。 なお、この説明において、種々の信号の活性に言及する場合がある。信号が、 特定の状態を示す値を持っている場合、その信号は、「活性」である。逆に、信 号が、特定の状態の欠如を示す値を持っている場合、その信号は、「不活性」で ある。信号は、論理0の値を持っている場合を活性と定義し、論理1の値を持っ ている場合を逆に定義してもよい。 圧縮命令セットの特定の例を示して説明したが、説明のための圧縮命令セット は、多くの変形、拡張および修正を行っても良い。これらの変形、拡張および修 正が考えられる。 次のヴェラログのリストは、命令伸張器12の論理例の説明である。この論理 の多くの異なる実施例が考えられるが、ここに示したヴェラログのリストが、好 適な一例である。 以上の開示により、圧縮命令セットおよび非圧縮命令セットの両方からの命令 を実行するマイクロプロセッサを説明した。このマイクロプロセッサは、圧縮命 令を伸張命令へと展開し、また圧縮命令を直接復号することもできる。圧縮命令 セットを用いて符号化されたルーチンは、非圧縮命令で符号化された対応するル ーチンより少ないメモリ量しか占有しないので、都合がよい。そのようなルーチ ンによって以前に占有されていたメモリが解放されるので、他のルーチンやそれ らのルーチンによって操作されるデータが使用できるようになる。以上の開示内 容を一旦完全に理解すれば、多くの変形および修正が、当業者にとって明らかと なるであろう。請求の範囲は、そのような変更および修正を総て包含するように 解釈するべきである。
───────────────────────────────────────────────────── フロントページの続き (31)優先権主張番号 08/661,003 (32)優先日 平成8年6月10日(1996.6.10) (33)優先権主張国 米国(US) (31)優先権主張番号 08/661,027 (32)優先日 平成8年6月10日(1996.6.10) (33)優先権主張国 米国(US) (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),AL,AM,AT,A U,BA,BB,BG,CA,CH,CN,CU,CZ ,DE,DK,EE,ES,FI,GB,GE,HU, IL,IS,JP,KE,KG,KP,KR,KZ,L C,LK,LR,LS,LT,LU,LV,MD,MG ,MK,MN,MW,MX,NO,NZ,PL,PT, RO,RU,SD,SE,SG,SI,SK,TJ,T M,TR,TT,UA,UG,UZ,VN 【要約の続き】 に使用される即値フィールドの伸張は、混合された圧縮 /非圧縮命令の実行のために最適化される。即値フィー ルドは非圧縮即値フィールドへと伸張され、そのために 最上位ビットがセットされる。

Claims (1)

  1. 【特許請求の範囲】 (1)可変長圧縮命令セットからの命令を実行する装置であって、 可変長圧縮命令セットの要素である命令を受信するように結合された命令伸張 器を備え、 ここで前記命令伸張器は、特定の命令のオペコードフィールドを調べるよう に構成され、且つ前記命令伸張器は、前記オペコードフィールドが拡張オペコー ドとして符号化されている場合には、前記特定の命令が第1の固定長を有する拡 張命令であると判断するように構成され、及び、前記命令伸張器は、前記オペコ ードフィールドが前記拡張オペコードとは異なる第2のオペコードとして符号化 されている場合には、前記特定の命令が非拡張命令であると判断するように構成 されされている、 可変長圧縮命令セットからの命令を実行する装置。 (2)前記第1の固定長が、第1のバイト数であり、該第1のバイト数は前記 第2の固定長に相当する第2のバイト数よりも大きい、請求項1記載の装置。 (3)前記第1のバイト数が、第2のバイト数より整数因子だけ大きい請求項 2記載の装置。 (4)前記整数因子が2である請求項3記載の装置。 (5)前記拡張命令が、拡張命令セット内の特定の拡張命令を定義する第2の オペコードフィールドを含む請求項1記載の装置。 (6)前記命令伸張器が、前記特定の拡張命令の伸張方法を決定するために前 記第2のオペコードフィールドを調べるように構成された請求項5記載の装置。 (7)伸張命令を実行するように構成されたプロセッサコアをさらに備えた請 求項1記載の装置。 (8)各圧縮命令が、1つの伸張命令に対応する請求項7記載の装置。 (9)圧縮命令を伸張命令へと伸張する方法であって、 圧縮命令のオペコードフィールドが拡張オペコードである場合には、前記圧縮 命令が第1の固定長を有する拡張命令であると判断するステップ; 前記圧縮命令の前記オペコードフィールドが前記拡張オペコードとは異なる第 2のオペコードである場合には、前記圧縮命令が第2の固定長を有する非拡張命 令であると判断するステップ;および 前記圧縮命令を伸張命令へと伸張する伸張ステップであて、ここで前記圧縮命 令が前記拡張命令である場合には、前記圧縮命令に含まれるバイトの数が前記第 1の固定長によって決定され、且つ前記圧縮命令が前記非拡張命令である場合に は、前記のバイトの数が前記第2の固定長によって決定される、伸張ステップ; を含む、圧縮命令を伸張命令へと伸張する方法。 (10)前記第1の固定長が、前記第2の固定長より大きい請求項9記載の方 法。 (11)前記第1の固定長が、第2の固定長より整数の バイト数だけ大きい請求項10記載の方法。 (12)前記整数が2である請求項11記載の方法。 (13)前記第2の固定長により決定される量で圧縮命令をフェッチするステ ップをさらに含む請求項11記載の方法。 (14)前記非拡張命令が検出された場合には、前記拡張オペコードが検出さ れた第1の前記量および前記第1の前記量に直ちに続く第2の前記量から前記非 拡張命令を形成する請求項13記載の方法。 (15)前記拡張命令が、前記拡張命令を特定の拡張命令として識別する第2 のオペコードフィールドを含む請求項9記載の方法。 (16)前記伸張ステップが、前記の特定の拡張命令に対応する拡張命令形式 を識別するステップを含む請求項15記載の方法。 (17)前記伸張ステップが、前記拡張命令形式における複数の命令フィール ドに従って前記の特定の拡張命令内部のビットを解釈するステップをさらに含む 請求項16記載の方法。 (18)前記伸張ステップが、前記オペコードフィールドの符号形態から前記 非拡張命令に対応する非拡張命令形式を特定するステップを含む請求項9記載の 方法。 (19)前記伸張ステップが、前記非拡張命令形式における第2の複数の命令 フィールドに従って前記非拡張命令からのビットを解釈するステップをさらに含 む請求項18 記載の方法。 (20)圧縮命令のオペコードフィールドが拡張オペコードである場合には、 前記圧縮命令が第1の固定長を有する拡張命令であると判断する第1の判断手段 ; 前記圧縮命令の前記オペコードフィールドが前記拡張オペコードとは異なる第 2のオペコードである場合には、前記圧縮命令が第2の固定長を有する非拡張命 令であると判断する第2の判断手段;および 前記圧縮命令を伸張命令へと伸張する伸張手段であって、ここで、前記圧縮命 令が前記拡張命令である場合には、前記圧縮命令に含まれるバイトの数が前記第 1の固定長によって決定され、且つ前記圧縮命令が前記非拡張命令である場合に は、前記のバイトの数が前記第2の固定長によって決定される、伸張手段; を備えた圧縮命令を伸張命令へと伸張する装置。 (21)マイクロプロセッサにおいて第1のルーチンおよび第2のルーチンを 含むプログラムを実行する方法であって、 前記第1のルーチン内のサブルーチンコール命令を実行するステップであって 、ここで前記第2のルーチンが前記第1のルーチンに含まれる前記サブルーチン コール命令の目的アドレスを介して実行されるべきことを前記サブルーチンコー ル命令が示す、ステップ;および 前記サブルーチンコール命令における表示を調べるステップであって、ここで 前記表示が第1の状態にある場合に は、前記第2のルーチンが圧縮命令を用いて符号化されていると判断し、および 前記表示が前記第1の状態とは異なる第2の状態にある場合には、前記第2のル ーチンが非圧縮命令を用いて符号化されていると判断する、ステップ; を含む、マイクロプロセッサにおいて第1のルーチンおよび第2のルーチンを 含むプログラムを実行する方法。 (22)前記表示が1ビットを含み、且つ前記第1の状態が、前記1ビットが セットされていることからなる請求項21記載の方法。 (23)前記第2の状態が、前記1ビットがクリアされていることからなる請 求項22記載の方法。 (24)前記表示を前記マイクロプロセッサ内部のプログラムカウンタに格納 するステップをさらに含む請求項21記載の方法。 (25)前記表示が、前記第2のルーチンに対する圧縮モードとして機能する 請求項21記載の方法。 (26)前記圧縮モードが圧縮を示す場合には、前記第2のルーチンからの命 令を伸張するステップをさらに含む請求項25記載の方法。 (27)前記第2のルーチンの完了時に第2の目的アドレスを含むリターン命 令を実行するステップをさらに含む請求項21記載の方法。 (28)前記第2の目的アドレスにおける第2のビットを調べるステップであ って、ここで前記第2のビットが第1の状態にある場合には、前記第1のルーチ ンが圧縮命令 を用いて符号化されていると判断し、および前記第2のビットが前記第1の状態 とは異なる第2の状態にある場合には、前記第1のルーチンが非圧縮命令を用い て符号化されていると判断するステップをさらに含む請求項27記載の方法。 (29)マイクロプロセッサにおいて第1のルーチンおよび第2のルーチンを 含むプログラムを実行する装置であって、 前記第1のルーチン内のサブルーチンコール命令を実行する手段であって、こ こで前記第2のルーチンが前記第1のルーチンに含まれる前記サブルーチンコー ル命令の目的アドレスを介して実行されるべきことを前記サブルーチンコール命 令が示す、手段;および 前記サブルーチンコール命令における表示を調べる手段であって、前記表示が 第1の状態にある場合には、前記第2のルーチンが圧縮命令を用いて符号化され ていると判断し、および前記表示が前記第1の状態とは異なる第2の状態にある 場合には、前記第2のルーチンが非圧縮命令を用いて符号化されていると判断す る手段; を含む、マイクロプロセッサにおいて第1のルーチンおよび第2のルーチンを 含むプログラムを実行する装置。 (30)マイクロプロセッサにおいて圧縮命令および非圧縮命令をフェッチす る装置であって、 圧縮イネーブル指示子を記憶するように構成された記憶装置; 前記記憶装置に結合され、目的ルーチンを指定するサブルーチンコール命令の フェッチ時に前記目的ルーチンの圧縮モードを検出するように構成され、さらに 前記圧縮モードをプロセッサコアに伝えるように構成されたモード検出器;およ び 前記モード検出器に結合され、前記圧縮モードが圧縮を示す場合は圧縮命令を フェッチするように構成され、さらに前記圧縮モードが非圧縮を示す場合は非圧 縮命令をフェッチするように構成されたプロセッサコア; を備えた、圧縮命令および非圧縮命令をフェッチする装置。 (31)前記サブルーチンコール命令の特定のビットにより、前記圧縮モード を識別する請求項30記載の装置。 (32)前記プロセッサコアがPCレジスタを含み、且つ前記プロセッサコア が前記圧縮モードを前記PCレジスタ内部に格納するように構成された請求項3 1記載の装置。 (33)前記圧縮モードが、前記PCレジスタ内部に格納されたフェッチアド レスの最下位ビットとして記憶される請求項32記載の装置。 (34)前記圧縮モードが圧縮を示す場合には、前記プロセッサコアは、前記 フェッチアドレスを第1の固定量だけ増加させ、前記圧縮モードが非圧縮を示す 場合には、前記プロセッサコアは、前記フェッチアドレスを第2の固定量だけ増 加させる請求項33記載の装置。 (35)可変長圧縮命令セットの要素である圧縮命令を 受信するように結合され、且つ受信した各圧縮命令を対応する伸張命令へと伸張 するように構成された命令伸張器;および 伸張命令を受信するように結合され、且つ前記伸張命令を実行するように構成 されたプロセッサコア; を備えたマイクロプロセッサ。 (36)前記命令伸張器と前記プロセッサコアとの間に結合され、且つ前記の 対応する伸張命令を記憶するように構成された命令キャッシュをさらに備えた請 求項35記載の装置。 (37)前記命令伸張器に結合され、且つ前記圧縮命令を記憶するように構成 された命令キャッシュをさらに備えた請求項35記載の装置。 (38)前記可変長圧縮命令セットが、第1の固定長を有する第1の複数の命 令および第2の固定長を有する第2の複数の命令を含む請求項35記載の装置。 (39)前記第1の固定長が、前記第2の固定長より長い請求項38記載の装 置。 (40)前記第1の固定長が、前記第2の固定長より整数因子だけ長い請求項 39記載の装置。 (41)前記整数因子が2である請求項40記載の装置。 (42)前記プロセッサコアが、前記第2の固定長に従って命令をフェッチす る請求項40記載の装置。 (43)前記命令伸張器が、前記第1の複数の命令の1つのフェッチを検出す るように構成された請求項42記載 の装置。 (44)前記命令伸張器が、前記第1の複数の命令の前記1つの検出に応じて NOPを伝え、且つ前記第1の複数の命令の前記1つの第2の部分を前記プロセ ッサコアのフェッチ動作を介して待つように構成され、これにより前記複数の命 令の前記1つを分割して受信する請求項43記載の装置。 (45)前記プロセッサコアが、非圧縮命令を実行するようにさらに構成され た請求項35記載の装置。 (46)前記非圧縮命令が、前記命令伸張器を迂回する請求項45記載の装置 。 (47)可変長圧縮命令セットの要素である圧縮命令をフェッチするステップ ; 命令伸張器において前記圧縮命令を伸張し、もって対応する伸張命令を形成す るステップ;および プロセッサコアにおいて前記伸張命令を実行するステップ; を含む、命令符号を実行する方法。 (48)各圧縮命令が、1つの伸張命令に対応する請求項47記載の方法。 (49)前記可変長圧縮命令セットが、第1の固定長を有する命令および第2 の固定長を有する別の命令を含む請求項48記載の方法。 (50)前記第1の固定長が、前記第2の固定長より長い請求項49記載の方 法。 (51)非圧縮命令をフェッチするステップをさらに含む請求項47記載の方 法。 (52)前記非圧縮命令を実行するステップをさらに含む請求項51記載の方 法。 (53)前記非圧縮命令がフェッチされたときには、前記命令伸張器を迂回す るステップをさらに含む請求項52記載の方法。 (54)可変長圧縮命令セットの要素である圧縮命令をフェッチするフェッチ 手段; 前記圧縮命令を伸張し、もって対応する伸張命令を形成する伸張手段;および 前記伸張命令を実行する実行手段; を備えた、命令符号を実行する装置。 (55)圧縮命令を伸張するように構成された命令伸張器であって、ここで圧 縮命令のうち第1の命令は、対応する非圧縮命令セットに対して定義された第1 のレジスタ部分集合にアクセスするように符号化することが可能であり、前記圧 縮命令のうち第2の命令は、前記第1のレジスタ部分集合にアクセスするように 符号化することが可能であるとともに、第2のレジスタ部分集合にアクセスする ように符号化することも可能である、圧縮命令を伸張するように構成された命令 伸張器。 (56)前記圧縮命令の前記第2の命令に、第1のオペコード符号および第2 のオペコード符号が割り当てられる請求項55記載の命令伸張器。 (57)前記第1のオペコード符号が、前記圧縮命令の前記第2の命令が前記 第1のレジスタ部分集合の1つにアクセスするように符号化されることを示す請 求項56記載の命令伸張器。 (58)前記命令伸張器が、圧縮レジスタ符号の伸張レジスタ符号への第1の 射像を用いて前記圧縮命令の前記第2の命令を伸張し、ここで前記第1の射像は 各圧縮レジスタ符号を前記第1の部分集合内の1つの伸張レジスタ符号へと割り 当てる、請求項57記載の命令伸張器。 (59)前記第2のオペコード符号が、前記圧縮命令の前記第2の命令は前記 第2のレジスタ部分集合の1つにアクセスするように符号化されることを示す請 求項58記載の命令伸張器。 (60)前記命令伸張器が、圧縮レジスタ符号の伸張レジスタ符号への第2の 射像を用いて前記圧縮命令の前記第2の命令を伸張し、ここで前記第2の射像は 、前記圧縮レジスタ符号の各々を前記第2のレジスタ部分集合の1つの伸張レジ スタ符号へと割り当てる請求項59記載の命令伸張器。 (61)前記圧縮命令の前記第2の命令が、第1のレジスタフィールドおよび 第2のレジスタフィールドを含む請求項56記載の命令伸張器。 (62)前記第1のオペコード符号が用いられている場合には、前記命令伸張 器が、前記第1のレジスタ部分集合に従って前記第1のレジスタフィールドを伸 張する請求項 61記載の命令伸張器。 (63)前記第2のオペコード符号が用いられている場合には、前記命令伸張 器が、前記第2のレジスタ部分集合に従って前記第1のレジスタフィールドを伸 張する請求項62記載の命令伸張器。 (64)前記圧縮命令の前記第2の命令が第3のオペコード符号を割り当てら れ、前記第3のオペコード符号が用いられている場合には、前記命令伸張器が、 前記第2のレジスタ部分集合を用いて前記第2のレジスタフィールドを伸張する 請求項63記載の命令伸張器。 (65)前記圧縮命令の前記第2の命令が、第4のオペコード符号を割り当て られ、前記第4のオペコード符号が用いられている場合、前記命令伸張器が、前 記第2のレジスタ部分集合を用いて前記第1のレジスタフィールドおよび前記第 2のレジスタフィールドを伸張する請求項64記載の命令伸張器。 (66)前記第1のオペコード符号および前記第2のオペコード符号が、前記 圧縮命令の前記第2の命令の機能フィールドに含まれるビットにおいて相違する 請求項56記載の命令伸張器。 (67)圧縮命令を伸張する方法であって、 第1のレジスタフィールドを有する特定の圧縮命令が第1のオペコードを用い て符号化されている場合には、前記第1のレジスタフィールドを伸張するために 、圧縮レジスタ指示子から伸張レジスタ指示子への第1のレジスタ射像 を用いて、前記第1のレジスタフィールドを有する特定の圧縮命令を伸張するス テップ;および 前記第1のレジスタフィールドを有する特定の圧縮命令が第2のオペコードを 用いて符号化されている場合には、前記第1のレジスタフィールドを伸張するた めに、圧縮レジスタ指示子から伸張レジスタ指示子への第2のレジスタ射像を用 いて前記第1のレジスタフィールドを有する特定の圧縮命令を伸張するステップ ; を含む、圧縮命令を伸張する方法。 (68)前記の特定の圧縮命令が、第2のレジスタフィールドをさらに含む請 求項67記載の方法。 (69)前記の特定の圧縮命令が第3のオペコードを用いて符号化されている 場合には、前記第2のレジスタ射像を用いて前記第2のレジスタフィールドを伸 張するステップをさらに含む請求項68記載の方法。 (70)前記の特定の圧縮命令が第4のオペコードを用いて符号化されている 場合には、前記第2のレジスタ射像を用いて前記第2のレジスタフィールドおよ び前記第1のレジスタフィールドを伸張するステップをさらに含む請求項69記 載の方法。 (71)第2の特定の圧縮命令を前記第1のレジスタ射像を用いて伸張するス テップをさらに含む請求項67記載の方法。 (72)前記第2の特定の圧縮命令が、1つのオペコード符号を含む請求項7 1記載の方法。 (73)伸張手段を備えた圧縮命令を伸張する装置であって、ここで前記伸張 手段は、第1のレジスタフィールドを有する特定の圧縮命令が第1のオペコード を用いて符号化されている場合には、前記第1のレジスタフィールドを伸張する ために、圧縮レジスタ指示子から伸張レジスタ指示子への第1のレジスタ射像を 用いて前記第1のレジスタフィールドを有する特定の圧縮命令を伸張するように 構成され、且つ前記伸張手段は、前記第1のレジスタフィールドを有する特定の 圧縮命令が第2のオペコードを用いて符号化されている場合には、前記第1のレ ジスタフィールドを伸張するために、圧縮レジスタ指示子から伸張レジスタ指示 子への第2のレジスタ射像を用いて前記の特定の圧縮命令を伸張するように構成 されている、圧縮命令を伸張する装置。 (74)圧縮命令の圧縮レジスタフィールドを伸張命令の伸張レジスタフィー ルドへと伸張するように構成された命令伸張器であって、ここで前記圧縮レジス タフィールドの伸張が、前記圧縮レジスタフィールドへと符号化される第1の値 と前記圧縮命令のオペコードフィールドへと符号化される第2の値とに依存する 、命令伸張器。 (75)前記命令伸張器が、前記第2の値に応じて、圧縮レジスタフィールド の符号から伸張レジスタフィールドの符号への多数の射像のうちの1つを選択す るように構成された請求項74記載の命令伸張器。 (76)前記命令伸張器が、前記第1の値に応じて前記 多数の射像の前記1つから前記伸張レジスタフィールド符号の1つを選択する、 請求項75記載の命令伸張器。 (77)特定の命令が第1のオペコード符号および第2のオペコード符号を割 り当てられ、且つ、ここで前記命令伸張器が、前記第1のオペコード符号を有す る前記特定の命令を受信したときに、前記圧縮レジスタフィールドの伸張のため に前記多数の射像の前記1つを選択する、請求項76記載の命令伸張器。 (78)前記命令伸張器が、前記第2のオペコード符号を有する前記特定の命 令を受信したときに、前記圧縮レジスタフィールドの伸張のために前記多数の射 像のうちの他の一つの射像を選択する、請求項77記載の命令伸張器。 (79)圧縮命令の圧縮レジスタフィールドを伸張命令の伸張レジスタフィー ルドへと伸張する方法であって、 前記圧縮レジスタフィールドの少なくとも一部を前記伸張レジスタフィールド の一部へ直接コピーするステップ;および 前記伸張レジスタフィールドの残りの部分を生成するために前記圧縮レジスタ フィールドに論理的操作を施すステップ; を含む、圧縮命令の圧縮レジスタフィールドを伸張命令の伸張レジスタフィー ルドへと伸張する方法。 (80)前記圧縮レジスタフィールドの前記一部が、前記圧縮レジスタフィー ルドの仝体からなる、請求項79記載の方法。 (81)前記圧縮レジスタフィールドの前記全体を受け取る前記伸張レジスタ フィールドの前記一部は、前記伸張レジスタフィールドの複数の下位ビットから なる、請求項80記載の方法。 (82)前記複数の下位ビットの数が、前記圧縮命令フィールドを構成するビ ットの数に等しい、請求項81記載の方法。 (83)前記伸張レジスタフィールドの前記の残りの部分を生成するために前 記圧縮命令のオペコードフィールドに論理操作を施すステップをさらに含む請求 項79記載の方法。 (84)前記のオペコードフィールドに論理操作を施すステップが、前記オペ コードフィールドにおける第1のオペコード符号に応じて第1のレジスタ射像を 選択するステップからなる請求項83記載の方法。 (85)前記のオペコードフィールドに論理操作を施すステップが、前記オペ コードフィールドにおける第2のオペコード符号に応じて第2のレジスタ射像を 選択するステップをさらに含む請求項84記載の方法。 (86)前記第1のオペコード符号および前記第2のオペコード符号を特定の 命令に割り当てる請求項85記載の方法。 (87)圧縮命令の圧縮レジスタフィールドを伸張命令の伸張レジスタフィー ルドへと伸張する装置であって、 前記圧縮レジスタフィールドを受信するように結合され ており、前記圧縮レジスタフィールドの少なくとも一部を前記伸張レジスタフィ ールドの一部へ直接コピーする第1の手段;および 前記圧縮レジスタフィールドを受信するように結合されており、前記伸張レジ スタフィールドの残りの部分を生成するために前記圧縮レジスタフィールドに論 理操作を施す第2の手段; を含む、圧縮命令の圧縮レジスタフィールドを伸張命令の伸張レジスタフィー ルドへと伸張する装置。 (88)前記圧縮レジスタフィールドの前記一部が、前記圧縮レジスタフィー ルドの全体からなる、請求項87記載の装置。 (89)前記圧縮レジスタフィールドの前記全体を受け取る前記伸張レジスタ フィールドの前記一部は、前記伸張レジスタフィールドの複数の下位ビットから なる、請求項88記載の装置。 (90)圧縮命令の圧縮レジスタフィールドを伸張命令の伸張レジスタフィー ルドへと伸張するように構成された命令伸張装置であって、ここで前記命令伸張 装置は、前記圧縮レジスタフィールドの少なくとも一部を前記伸張レジスタフィ ールドの第1の部分にコピーすることにより、前記伸張レジスタフィールドの前 記第1の部分を形成し、且つ前記命令伸張装置は、前記圧縮レジスタフィールド に作用して前記伸張レジスタフィールドの残りの部分を生成するように構成され た論理ブロックを含む、圧縮命令の圧縮 レジスタフィールドを伸張命令の伸張レジスタフィールドへと伸張するように構 成された命令伸張装置。 (91)前記圧縮レジスタフィールドの前記一部が、前記圧縮レジスタフィー ルドの全体からなる、請求項90記載の命令伸張装置。 (92)前記論理ブロックが、前記命令伸張装置から受信した信号に応じて、 圧縮レジスタフィールド符号から伸張レジスタフィールド符号へのレジスタ射像 を選択する請求項90記載の命令伸張装置。 (93)特定の命令に割り当てられた第1のオペコードを検出すると、これに 応じて前記信号を活性にし、且つ前記特定の命令に割り当てられた第2のオペコ ードを検出すると、これに応じて前記信号を不活性にするように構成された、請 求項92記載の命令伸張装置。 (94)前記圧縮レジスタフィールドの前記一部を受け取る前記伸張レジスタ フィールドの前記部分が、前記伸張レジスタフィールドの複数の下位ビットから なる請求項90記載の命令伸張装置。 (95)前記複数の下位ビットの数が、前記圧縮レジスタフィールドを構成す るビット数に等しい請求項94記載の命令伸張装置。
JP10501756A 1996-06-10 1997-06-10 可変長圧縮命令セットから命令を検出し及び伸張する装置ならびに方法 Pending JP2000512409A (ja)

Applications Claiming Priority (9)

Application Number Priority Date Filing Date Title
US66102796A 1996-06-10 1996-06-10
US08/659,708 1996-06-10
US08/659,709 1996-06-10
US08/659,708 US5905893A (en) 1996-06-10 1996-06-10 Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set
US08/661,027 1996-06-10
US08/659,709 US5794010A (en) 1996-06-10 1996-06-10 Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US08/661,003 US5896519A (en) 1996-06-10 1996-06-10 Apparatus for detecting instructions from a variable-length compressed instruction set having extended and non-extended instructions
US08/661,003 1996-06-10
PCT/US1997/009984 WO1997048041A1 (en) 1996-06-10 1997-06-10 An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set

Publications (1)

Publication Number Publication Date
JP2000512409A true JP2000512409A (ja) 2000-09-19

Family

ID=27505302

Family Applications (1)

Application Number Title Priority Date Filing Date
JP10501756A Pending JP2000512409A (ja) 1996-06-10 1997-06-10 可変長圧縮命令セットから命令を検出し及び伸張する装置ならびに方法

Country Status (4)

Country Link
JP (1) JP2000512409A (ja)
AU (1) AU3480897A (ja)
GB (1) GB2329495B (ja)
WO (1) WO1997048041A1 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010526383A (ja) * 2007-05-09 2010-07-29 エックスモス リミテッド コンパクト命令セットの符号化
JP2013546036A (ja) * 2010-09-24 2013-12-26 インテル コーポレイション 命令のクラス及び内容に基づくプロセッサの電力管理

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6189090B1 (en) * 1997-09-17 2001-02-13 Sony Corporation Digital signal processor with variable width instructions
SE9704476L (sv) * 1997-12-02 1999-06-23 Ericsson Telefon Ab L M Utökad instruktionsavkodning
EP0942357A3 (en) * 1998-03-11 2000-03-22 Matsushita Electric Industrial Co., Ltd. Data processor compatible with a plurality of instruction formats
WO2000008554A1 (en) * 1998-08-07 2000-02-17 Koninklijke Philips Electronics N.V. Apparatus with program memory and processor
US9361097B2 (en) * 2013-10-18 2016-06-07 Via Technologies, Inc. Selectively compressed microcode
US9372696B2 (en) 2013-10-18 2016-06-21 Via Technologies, Inc. Microprocessor with compressed and uncompressed microcode memories
GB2586258A (en) 2019-08-15 2021-02-17 1Inspiries Tech Ltd Efficient processor machine instruction handling
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4437149A (en) * 1980-11-17 1984-03-13 International Business Machines Corporation Cache memory architecture with decoding
JPH07121352A (ja) * 1993-10-21 1995-05-12 Canon Inc 演算処理装置
GB2284492B (en) * 1993-12-06 1998-05-13 Graeme Roy Smith Improvements to computer control units
GB2289353B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010526383A (ja) * 2007-05-09 2010-07-29 エックスモス リミテッド コンパクト命令セットの符号化
JP2013546036A (ja) * 2010-09-24 2013-12-26 インテル コーポレイション 命令のクラス及び内容に基づくプロセッサの電力管理

Also Published As

Publication number Publication date
GB2329495A (en) 1999-03-24
AU3480897A (en) 1998-01-07
WO1997048041A1 (en) 1997-12-18
GB2329495B (en) 2000-09-20
GB9825726D0 (en) 1999-01-20

Similar Documents

Publication Publication Date Title
US5905893A (en) Microprocessor adapted for executing both a non-compressed fixed length instruction set and a compressed variable length instruction set
US5867681A (en) Microprocessor having register dependent immediate decompression
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
US9003422B2 (en) Microprocessor architecture having extendible logic
US7664934B2 (en) Data processor decoding instruction formats using operand data
US6351806B1 (en) Risc processor using register codes for expanded instruction set
US5794010A (en) Method and apparatus for allowing execution of both compressed instructions and decompressed instructions in a microprocessor
US6408382B1 (en) Methods and apparatus for abbreviated instruction sets adaptable to configurable processor architecture
JP3556556B2 (ja) 命令コード変換装置及び情報処理システム
US6076156A (en) Instruction redefinition using model specific registers
JPH11503846A (ja) プロセッサにおいて命令セット間の移行を行う方法および装置
US20120204017A1 (en) Microprocessor for Executing Byte Compiled Java Code
JP2004506263A (ja) 拡張レジスタモードで拡張レジスタセットにアクセスするcpu
JP2004054585A (ja) データ処理装置
JP2000512409A (ja) 可変長圧縮命令セットから命令を検出し及び伸張する装置ならびに方法
JPH11194950A (ja) オブジェクト変換装置及びオブジェクト変換方法及びプログラム記録媒体
JP3773470B2 (ja) データ処理装置内でのコプロセッサ命令の取り扱い
JP2669158B2 (ja) データ処理装置
JP2682469B2 (ja) 命令コード符号化方式
JPH11212787A (ja) 使用可能な操作符号を最大にし、様々なアドレシングモードを実現するプロセッサアーキテクチャ方式および命令セット
WO1997048041A9 (en) An apparatus and method for detecting and decompressing instructions from a variable-length compressed instruction set
CN115859315A (zh) 用于对安全存储装置的直接***访问的***、装置和方法
GB2349252A (en) An apparatus and method for detecting and decompressing instructions from a variable length compressed instruction set
TWI245221B (en) Apparatus and method for selective memory attribute control