(57)【特許請求の範囲】
【請求項１】
レジスタをオペランドとして指定可能な命令セットを実行するマイクロプロセッサにおいて、
前記レジスタオペランド内の上位ｎビットからなる上位フィールドの値が予め定められた値であったときに、前記上位フィールドを除く下位フィールドの値で指し示されるレジスタにアクセスするレジスタアクセス手段と、
前記上位フィールドの値が予め定められた値でなかったときに、その上位フィールドの値で指し示されるレジスタの格納値をベースアドレス、前記下位フィールドの値をオフセットとしてメモリにアクセスするメモリアクセス手段と
を具備することを特徴とするマイクロプロセッサ。
【請求項２】
前記レジスタオペランド内のすべてをレジスタ番号の格納フィールドとする通常のレジスタアクセスとして命令セットを解釈する第１の実行モードと、前記レジスタオペランド内を前記上位フィールドおよび前記下位フィールドの２つのフィールドに分割し、前記レジスタアクセス手段または前記メモリアクセス手段によるレジスタアクセスまたはメモリアクセスとして命令セットを解釈する第２の実行モードとを切り換えるモード切換手段をさらに具備することを特徴とする請求項１記載のマイクロプロセッサ。
【請求項３】
前記第２の実行モード時に必要となる最小限数のレジスタのみを備えた請求項２記載のマイクロプロセッサ。
【請求項４】
前記モード切換手段により前記第１の実行モードに切り換えるときに、不足分のレジスタをメモリ上にマップするマッピング手段をさらに具備することを特徴とする請求項３記載のマイクロプロセッサ。
【請求項５】
前記第１の実行モード時に必要となる数のレジスタを備えたプロセッサであって、
前記モード切換手段により前記第２の実行モードに切り換えられるときに、前記レジスタアクセス手段が用いる以外のレジスタに、当該レジスタと前記メモリとの対応関係の一貫性を保持しつつ前記メモリの値をキャッシュするキャッシュ手段をさらに具備し、
前記メモリアクセス手段は、前記レジスタにキャッシュされた値にアクセスすることによってメモリアクセスを代替的に処理することを特徴とする請求項２記載のマイクロプロセッサ。
【請求項６】
命令セットに含まれるレジスタオペランド内のすべてをレジスタ番号の格納フィールドとしてレジスタアクセスを実行する第１の実行モードのみをサポートするマイクロプロセッサ上で、前記レジスタオペランド内の上位ｎビットからなる上位フィールドの値で指し示されるレジスタの格納値をベースアドレス、前記上位フィールドを除く下位フィールドの値をオフセットとしてメモリアクセスを実行する第２の実行モード用に記述されたプログラムを動作させるためのエミュレータであって、
前記メモリアクセスに相当するロード／ストア命令を前記プログラムに挿入する手段を具備することを特徴とするエミュレータ。
【請求項７】
レジスタをオペランドとして指定可能な命令セットを実行するマイクロプロセッサのオペランド解釈方法であって、
前記レジスタオペランド内の上位ｎビットからなる上位フィールドの値が予め定められた値であったときに、前記上位フィールドを除く下位フィールドの値で指し示されるレジスタにアクセスし、前記上位フィールドの値が予め定められた値でなかったときに、その上位フィールドの値で指し示されるレジスタの格納値をベースアドレス、前記下位フィールドの値をオフセットとしてメモリにアクセスするように命令セットを解釈することを特徴とするマイクロプロセッサの命令セット解釈方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、レジスタをオペランドとして指定可能な命令セットを実行するマイクロプロセッサ、第１の実行モードをサポートするマイクロプロセッサで第２の実行モード用に記述されたプログラムを動作させるためのエミュレータおよび同マイクロプロセッサのオペランド解釈方法に係り、特に、ＲＩＳＣ（Ｒｅｄｕｃｅｄ  Ｉｎｓｔｒｕｃｔｉｏｎ  Ｓｅｔ  ＣｏｍＰｕｔｅｒ）アーキテクチャのもつ高速な処理という利点を維持しつつ、コンテキストスイッチの高速化とコードサイズのコンパクト化とを実現したマイクロプロセッサ、エミュレータおよび同マイクロプロセッサのオペランド解釈方法に関する。
【０００２】
【従来の技術】
マイクロプロセッサの命令セットアーキテクチャは、命令長（ビット幅）、オペランドとして指定可能なレジスタの個数、アドレッシングモードなどによって特徴づけられる。ＲＩＳＣアーキテクチャは、多数のレジスタ、ロード／ストア命令によるメモリアクセス、固定長命令、シンプルな命令フォーマットを特徴とするアーキテクチャであり、比較的命令デコードが容易であり、回路規模を小さく押えることができるため、少ない消費電力で高い動作周波数のマイクロプロセッサを実現することが可能である。一方で、多数のレジスタを使用するために、コンテキストスイッチに時間が掛かることや、ロード／ストア命令の頻度が高いために、多数のレジスタを必要としないプログラムであってもコードサイズが大きくなってしまうという欠点がある。
【０００３】
【発明が解決しようとする課題】
前述したように、ＲＩＳＣアーキテクチャでは、高速な処理という利点をもつ反面、コンテキストスイッチに時間が掛かり、また、プログラムのコードサイズが大きくなるという欠点をもっていた。
【０００４】
この発明は、このような事情を考慮してなされたものであり、ＲＩＳＣアーキテクチャのもつ高速な処理という利点を維持しつつ、コンテキストスイッチの高速化とコードサイズのコンパクト化とを実現したマイクロプロセッサ、エミュレータおよび同マイクロプロセッサのオペランド解釈方法を提供することを目的とする。
【０００５】
【課題を解決するための手段】
前述した目的を達成するために、この発明は、レジスタをオペランドとして指定可能な命令セットを実行するマイクロプロセッサにおいて、前記レジスタオペランド内の上位ｎビットからなる上位フィールドの値が予め定められた値であったときに、前記上位フィールドを除く下位フィールドの値で指し示されるレジスタにアクセスするレジスタアクセス手段と、前記上位フィールドの値が予め定められた値でなかったときに、その上位フィールドの値で指し示されるレジスタの格納値をベースアドレス、前記下位フィールドの値をオフセットとしてメモリにアクセスするメモリアクセス手段とを具備することを特徴とする。
【０００６】
また、このマイクロプロセッサは、前記レジスタオペランド内のすべてをレジスタ番号の格納フィールドとする通常のレジスタアクセスとして命令セットを解釈する第１の実行モードと、前記レジスタオペランド内を前記上位フィールドおよび前記下位フィールドの２つのフィールドに分割し、前記レジスタアクセス手段または前記メモリアクセス手段によるレジスタアクセスまたはメモリアクセスとして命令セットを解釈する第２の実行モードとを切り換えるモード切換手段をさらに具備することを特徴とする。
【０００７】
この発明のマイクロプロセッサにおいては、たとえば多数のレジスタを使うメディア処理では第１の実行モード、コンパクトなリアルタイム処理では第２の実行モードで動作する等、性格の異なるプログラムそれぞれを１つの命令セットアーキテクチャで効率的に処理することを実現する。
【０００８】
また、この発明は、命令セットに含まれるレジスタオペランド内のすべてをレジスタ番号の格納フィールドとしてレジスタアクセスを実行する第１の実行モードのみをサポートするマイクロプロセッサ上で、前記レジスタオペランド内の上位ｎビットからなる上位フィールドの値で指し示されるレジスタの格納値をベースアドレス、前記上位フィールドを除く下位フィールドの値をオフセットとしてメモリアクセスを実行する第２の実行モード用に記述されたプログラムを動作させるためのエミュレータであって、前記メモリアクセスに相当するロード／ストア命令を前記プログラムに挿入する手段を具備することを特徴とする。
【０００９】
この発明のエミュレータにおいては、レジスタオペランド内のすべてをレジスタ番号の格納フィールドとする通常のレジスタアクセスとして命令セットを解釈する第１の実行モードしかサポートしないマイクロプロセッサであっても、その実行前に、メモリアクセスに相当するロード／ストア命令をプログラムに挿入することによって、レジスタオペランド内を上位フィールドおよび下位フィールドの２つのフィールドに分割し、レジスタアクセスまたはメモリアクセスとして命令セットを解釈する第２の実行モード用に記述されたプログラムを動作させることを可能とする。
【００１０】
【発明の実施の形態】
以下、図面を参照してこの発明の実施形態を説明する。
（第１実施形態）
まず、この発明の第１実施形態について説明する。
図１は、この第１実施形態に係るマイクロプロセッサにおける命令セット解釈の基本原理を説明するための概念図である。
【００１１】
この実施形態のマイクロプロセッサは、レジスタをオペランドとして指定可能なＲＩＳＣ命令セットを実行するマイクロプロセッサであり、実行モードによってレジスタオペランドの解釈を変える仕組みを備えている。ここでは、このマイクロプロセッサが次の２つの実行モードをサポートするものと想定する。
【００１２】
（１）ベースモード
レジスタオペランドを通常のレジスタアクセスとして解釈するモード。
【００１３】
（２）拡張モード
レジスタオペランドを２つのフィールドに分割し、上位フィールドの値が所定の値（たとえば０）である場合には、通常のレジスタアクセスとして解釈し、それ以外の値の場合には、上位フィールドの値が指し示すレジスタの内容をベースアドレス、下位フィールドの値をオフセットとするメモリアクセスとして解釈するモード。
【００１４】
そして、このマイクロプロセッサは、（２）の拡張モードを備えた点をその特徴としており、以下では、この拡張モードでの動作原理を詳述する。なお、このマイクロプロセッサは、複数のプログラムを時分割で並列に実行するが、あるプログラムから別のプログラムに切り換える、いわゆるコンテキストスイッチを行った際に、所定のレジスタを参照することにより、新たにディスパッチされたプログラムがベースモードおよび拡張モードのいずれの実行モードで動作するものであるのかを知得し、前述した２つの実行モード間の切り換えを実行する。
【００１５】
拡張モード時、マイクロプロセッサは、命令セット１０の各レジスタオペランド１２について、まず、上位フィールド１２１の値を参照する。ここでは、上位フィールト１２１を先頭から２ビットとし、３ビット目以降を下位フィールド１２２とする例を示す。
【００１６】
この上位フィールド１２１の値が０、つまり“００”であったとき、マイクロプロセッサは、通常のレジスタアクセスと同じ様に、下位フィールド１２２の値で指し示されるレジスタ１にアクセスする。一方、この上位フィールド１２１の値が０以外、つまり“０１”、“１０”、“１１”のいずれかであったとき、マイクロプロセッサは、この３つの値にそれぞれ割り当てられた所定のレジスタ１を参照し、そのレジスタ１の値をベースアドレス、レジスタオペランド１２の下位フィールド１２２の値をオフセットとしてメモリ２にアクセスする。
【００１７】
つまり、この拡張モードでは、たとえばメディア処理などのためにベースモードをサポートすべく多数（ｎ個）のレジスタが搭載された場合であっても、利用するレジスタ数は１／４ｎ個で済むため、コンテキストスイッチ時のレジスタの入れ替え量を大幅に削減し、その高速化を実現する。なお、図１ではやや分かりづらいが、上位フィールド１２１の値が所定の値以外であった場合に参照するレジスタの数は、１／４ｎ個のレジスタの中の僅かに過ぎないものである。
【００１８】
また、たとえば図２に示すようなコードを処理する場合を考えると、通常のＲＩＳＣでは、このようなコードは図３に示すようなマシン語になるのに対し、この拡張モードを利用すれば、図４に示すようなマシン語で良い。つまり、この拡張モードは、コードサイズの２〜３割を占めるといわれるロード／ストアを大幅に削減することにより、コードサイズのコンパクト化も実現する。
【００１９】
さらに、この拡張モードでは、レジスタアクセスに加えて、最大３箇所までのメモリアクセスを１つの命令で扱えるため、レジスタ−メモリ間、メモリ−レジスタ間、メモリ−メモリ間の演算を効率良く行うことが可能となる。
【００２０】
なお、ここでは、上位フィールドを先頭から２ビットとし、３ビット目以降を下位フィールドとする例を示したが、このマイクロプロセッサにおける命令セット解釈の手法は、これに限られるものではない。たとえば、上位フィールドを先頭から１ビットとし、２ビット目以降を下位フィールドとすれば、レジスタオペランドの解釈を１／２ｎ個のレジスタを対象としたレジスタアクセスと、１箇所のメモリアクセスとの２種類を考慮しながら行えることになる。また、この上位フィールドのビット幅を可変とすることによって、拡張モードにバリエーションを持たせることも可能である。さらに、たとえばレジスタオペランドを３つに分割して、レジスタ＋レジスタ＋オフセットというアドレッシングをサポートすることも可能である。
【００２１】
（第２実施形態）
次に、この発明の第２実施形態について説明する。
図５は、この発明の第２実施形態に係るマイクロプロセッサにおける命令セット解釈の基本原理を説明するための概念図である。
【００２２】
この実施形態のマイクロプロセッサと前述した第１実施形態のマイクロプロセッサとの違いは、前述した第１実施形態のマイクロプロセッサが、ベースモード時に必要となる多数（ｎ個）のレジスタを実装するのに対し、この実施形態のマイクロプロセッサでは、拡張モードで必要となる数（たとえば１／４ｎ個）のみを実装する点にある。そして、この実施形態のマイクロプロセッサは、この拡張モードで必要となる数のレジスタのみで、ベースモード用に記述されたプログラムを動作させることを可能とした点をその特徴とする。以下、この点について詳述する。
【００２３】
前述したレジスタ数でベースモード用に記述されたプログラムを動作させるためには、不足分のレジスタを何らかの形で補わなければならない。そこで、このマイクロプロセッサは、図５に示すように、この不足分のレジスタをメモリ上にマップし、そのマップ先のメモリ上のアドレスを所定のレジスタに格納する。
【００２４】
いま、このマイクロプロセッサが、第１実施形態で説明した拡張モードをサポートしているものと想定する。この場合、このマイクロプロセッサは、ベースモード時に、３／４ｎ個のレジスタをメモリ上にマップする。その後、マイクロプロセッサは、拡張モードと同じように動作する。
【００２５】
具体的には、マイクロプロセッサは、ベースモードの命令セット１０の各レジスタオペランド１２について、まず、先頭から２ビットの上位フィールド１２１の値を参照し、この上位フィールド１２１の値が０、つまり“００”であったとき、通常のレジスタアクセスと同じ様に、上位フィールド１２１以外の下位フィールド１２２の値で指し示されるレジスタ１にアクセスする。一方、この上位フィールド１２１の値が０以外、つまり“０１”、“１０”、“１１”のいずれかであったとき、マイクロプロセッサは、たとえばこの３つの値にそれぞれ割り当てるべく別途設けられたレジスタ１ｂを参照し、そのレジスタ１ｂの値をベースアドレス、レジスタオペランド１２の下位フィールド１２２の値をオフセットとしてメモリ２にアクセスする。
【００２６】
このように、このマイクロプロセッサは、少数のレジスタ構成であるにも関わらず、多数のレジスタを使うメディア処理用などのプログラムを動作させることを可能とする。
【００２７】
（第３実施形態）
次に、この発明の第３実施形態について説明する。
図６は、この発明の第３実施形態に係るマイクロプロセッサにおける命令セット解釈の基本原理を説明するための概念図である。
【００２８】
この実施形態のマイクロプロセッサと前述した第１実施形態のマイクロプロセッサとの違いは、この実施形態のマイクロプロセッサでは、拡張モード時に、レジスタアクセスで利用する１／４ｎ個以外のレジスタをメモリアクセス用のキャッシュエリアとして活用する点にある。
【００２９】
いま、上位フィールドの値をａ、下位フィールドの値をｂ、この２つのフィールドを含むレジスタオペランドの値を（ａ，ｂ）と表すものとする。そして、この（ａ，ｂ）によってアクセスするメモリをワードサイズに限定すると、上位フィールド１２１の各値ごとに確保されたキャッシュエリアたるレジスタ群内でのレジスタ番号とメモリアドレスとの間に対応関係ができるので、このマイクロプロセッサは、そのコンシステンシを保つことによって、高速なメモリアクセスを実現する。
【００３０】
より具体的には、レジスタａの内容を（ａ）、ワードサイズをｗ、下位フィールドのビット幅をｎとすると、
・メモリアドレス：  （ａ）＋（ｂ×ｗ）
・レジスタ番号  ：  （（ａ）／ｗ＋ｂ）ｍｏｄ２ｎ
を上位フィールド１２１の各値ごとに確保されたキャッシュエリアたるレジスタ群内でのレジスタ番号とメモリアドレスとの間の対応関係として定義する。そして、マイクロプロセッサは、この対応関係を保ちながら、メモリ２の値をレジスタ１にキャッシングする（図６参照）。
【００３１】
こうすると、たとえばレジスタａの値がワードサイズだけインクリメントまたはデクリメントされた場合、このレジスタａをベースとする２ｎ個のレジスタのうち、値がダーティとなるレジスタを１つのみとすることができる。
【００３２】
このように、このマイクロプロセッサは、拡張モード時、レジスタアクセスで用いられるレジスタ以外のレジスタ群をメモリのキャッシュエリアとして活用することにより、メモリアクセスを高速に処理することを可能とする。
【００３３】
ところで、前述の第１乃至第３実施形態では、レジスタオペランドを２つのフィールドに分割し、上位フィールドの値が所定の値である場合には、通常のレジスタアクセスとして解釈し、それ以外の値の場合には、上位フィールドの値が指し示すレジスタの内容をベースアドレス、下位フィールドの値をオフセットとするメモリアクセスとして解釈する拡張モードをサポートするマイクロプロセッサについて説明してきた。そこで、次に、この拡張モード用に記述されたプログラムを通常のベースモードのみをサポートするマイクロプロセッサで動作させることについて触れておく。
【００３４】
そのために、ここでは、プログラムの実行前に、メモリアクセスに相当するロード／ストア命令をプログラムに埋め込むためのエミュレータを用意することを考える。この場合、ロード／ストアを行う時に一時的に使用するレジスタが必要になるが、これには、たとえばレジスタ番号が（ａ，ｂ）、つまり（ａ＜＜ｎ）＋ｂのレジスタを使用すれば良い。
【００３５】
なお、本願発明は、前記実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。更に、前記実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜な組み合わせにより種々の発明が抽出され得る。たとえば、実施形態に示される全構成要件から幾つかの構成要件が削除されても、発明が解決しようとする課題の欄で述べた課題が解決でき、発明の効果の欄で述べられている効果が得られる場合には、この構成要件が削除された構成が発明として抽出され得る。
【００３６】
【発明の効果】
以上のように、この発明によれば、レジスタオペランドを通常のレジスタアクセスとして解釈する第１の実行モードと、レジスタオペランドを２つのフィールドに分割し、上位フィールドの値が所定の値である場合には、通常のレジスタアクセスとして解釈し、それ以外の値の場合には、上位フィールドの値が指し示すレジスタの内容をベースアドレス、下位フィールドの値をオフセットとするメモリアクセスとして解釈する第２の実行モードとをもつことにより、ＲＩＳＣアーキテクチャのもつ高速な処理という利点を維持しつつ、コンテキストスイッチの高速化とコードサイズのコンパクト化とを実現する。
【図面の簡単な説明】
【図１】この発明の第１実施形態に係るマイクロプロセッサにおける命令セット解釈の基本原理を説明するための概念図。
【図２】同第１実施形態のマイクロプロセッサで処理されるコードを例示する図。
【図３】図２に示したコードを通常のベースモード用としてマシン語にした場合の例を示す図。
【図４】図２に示したコードを同第１実施形態のマイクロプロセッサがサポートする拡張モード用としてマシン語にした場合の例を示す図。
【図５】同第２実施形態に係るマイクロプロセッサにおける命令セット解釈の基本原理を説明するための概念図。
【図６】同第３実施形態に係るマイクロプロセッサにおける命令セット解釈の基本原理を説明するための概念図。
【符号の説明】
１…レジスタ
２…メモリ
１０…命令セット
１１…オペレーションコード部
１２…オペランド部
１２１…上位フィールド
１２２…下位フィールド
【図１】
0003563724.tif 000002
【図２】
0003563724.tif 000003
【図３】
0003563724.tif 000004
【図４】
0003563724.tif 000005
【図５】
0003563724.tif 000006
【図６】
0003563724.tif 000007