(57)【要約】デジタルプロセッサおよび動作の方法は、エイリアスアドレス空間を利用し、レガシープロセッサ上で可変長命令コード化を実装する。方法は、メモリにコードシーケンスの命令を格納することと、コードシーケンスの命令アドレスを生成することと、命令アドレスにおける、第１のアドレス空間と第２のアドレス空間との間の移行に応答して、第１の動作モードと第２の動作モードとを自動的に切り替えることであって、第１のアドレス空間および第２のアドレス空間におけるアドレスは、共通のメモリ空間にアクセスする、ことと、第１の動作モードにおいて、第１のアドレス空間において命令にアクセスすることと、第２の動作モードにおいて、第２のアドレス空間において命令にアクセスすることと、コードシーケンスのアクセスされた命令を実行する、こととを包含する。第１および第２の動作モードにおいて、異なる命令長の命令が利用され得る。
2010536089.tif 000002
【特許請求の範囲】
【請求項１】
メモリと、プログラムシーケンサと、実行ユニットとを含むデジタルプロセッサを動作させる方法であって、
該メモリにコードシーケンスの命令を格納することと、
該コードシーケンスの命令アドレスを生成することと、
命令アドレスにおける、第１のアドレス空間と第２のアドレス空間との間の移行に応答して、第１の動作モードと第２の動作モードとを自動的に切り替えることであって、該第１のアドレス空間および第２のアドレス空間におけるアドレスは共通のメモリ空間にアクセスする、ことと、
該第１の動作モードにおいて、該第１のアドレス空間において命令にアクセスすることと、
該第２の動作モードにおいて、該第２のアドレス空間において命令にアクセスすることと、
該コードシーケンスの該アクセスされた命令を実行することと
を包含する、方法。
【請求項２】
自動的に切り替えることは、命令アドレスにおける、前記第１のアドレス空間から前記第２のアドレス空間への移行に応答して、前記第１のモードから前記第２のモードに切り替えることと、命令アドレスにおける、該第２のアドレス空間から該第１のアドレス空間への移行に応答して、該第２のモードから該第１のモードに切り替えることとを包含する、請求項１に記載の方法。
【請求項３】
前記第１のアドレス空間において命令にアクセスすることは、第１の命令長の命令にアクセスすることを包含し、前記第２のアドレス空間において命令にアクセスすることは、第２の命令長の命令にアクセスすることを包含する、請求項１に記載の方法。
【請求項４】
前記第２のアドレス空間において命令にアクセスすることは、該第２のアドレス空間において前記第１の命令長の命令にアクセスすることをさらに包含する、請求項３に記載の方法。
【請求項５】
前記第２のモードにおいて現在の命令長を決定することと、現在の命令長に基づいて次の命令を整列させることとをさらに包含する、請求項４に記載の方法。
【請求項６】
命令を整列させることは、前記現在の命令長に応答して、命令整列バッファにおいて命令をシフトさせることを包含する、請求項５に記載の方法。
【請求項７】
命令にアクセスすることは、各クロック周期で最長命令長に対応する若干数のビットにアクセスすることを包含する、請求項３に記載の方法。
【請求項８】
前記第２のアドレス空間において命令にアクセスすることは、該第２のアドレス空間において前記第１の命令長の命令および第３の命令長の命令にアクセスすることをさらに包含する、請求項３に記載の方法。
【請求項９】
前記第１の命令長は、前記第２の命令長および第３の命令長より大きい、請求項８に記載の方法。
【請求項１０】
自動的に切り替えることは、分岐命令の目標アドレスを検出することと、該分岐命令の該目標アドレスが前記第１のアドレス空間と前記第２のアドレス空間との間の移行を表すとき、前記第１のモードと前記第２のモードとを切り替えることとを包含する、請求項１に記載の方法。
【請求項１１】
前記第２のアドレス空間において命令にアクセスすることは、前記メモリの連続位置において混合命令長の命令にアクセスすることを包含する、請求項８に記載の方法。
【請求項１２】
前記第２のアドレス空間において命令にアクセスすることは、該第２のアドレス空間において第３の命令長の命令にアクセスすることをさらに包含する、請求項３に記載の方法。
【請求項１３】
前記第１の命令長は４８ビットであり、前記第２の命令長は３２ビットであり、前記第３の命令長は１６ビットである、請求項８に記載の方法。
【請求項１４】
前記第１のアドレス空間はノーマルワードアドレス空間であり、前記第２のアドレス空間はショートワードアドレス空間である、請求項１に記載の方法。
【請求項１５】
前記第１のアドレス空間は仮想アドレス空間の第１の仮想ページであり、前記第２のアドレス空間は該仮想アドレス空間の第２の仮想ページである、請求項１に記載の方法。
【請求項１６】
コードシーケンスの命令を格納するように構成されたメモリと、
該コードシーケンスの命令アドレスを生成し、命令アドレスにおける、第１のアドレス空間と第２のアドレス空間との間の移行に応答して、第１の動作モードと第２の動作モードとを自動的に切り替えるように構成されたプログラムシーケンサであって、該第１のアドレス空間および該第２のアドレス空間におけるアドレスは共通のメモリ空間にアクセスし、該第１の動作モードにおいて、命令は該第１のアドレス空間においてアクセスされ、該第２の動作モードにおいて、命令は該第２のアドレス空間においてアクセスされる、プログラムシーケンサと、
該コードシーケンスの該アクセスされた命令を実行するように構成された実行ユニットと
を備えている、デジタルプロセッサ装置。
【請求項１７】
前記プログラムシーケンサは、命令アドレスにおける、前記第１のアドレス空間から前記第２のアドレス空間への移行に応答して、前記第１のモードから前記第２のモードに切り替えるように構成され、命令アドレスにおける、該第２のアドレス空間から該第１のアドレス空間への移行に応答して、該第２のモードから該第１のモードに切り替えるように構成される、請求項１６に記載のデジタルプロセッサ装置。
【請求項１８】
前記プログラムシーケンサは、前記第１のアドレス空間において第１の命令長の命令にアクセスし、前記第２のアドレス空間において第２の命令長の命令にアクセスするように構成される、請求項１６に記載のデジタルプロセッサ装置。
【請求項１９】
前記プログラムシーケンサは、前記第２のアドレス空間において前記第１の命令長の命令にアクセスするようにさらに構成される、請求項１８に記載のデジタルプロセッサ装置。
【請求項２０】
前記プログラムシーケンサは、前記第２のアドレス空間において前記第１の命令長の命令および第３の命令長の命令にアクセスするようにさらに構成される、請求項１８に記載のデジタルプロセッサ装置。
【請求項２１】
前記第１の命令長は、前記第２の命令長および前記第３の命令長より大きい、請求項２０に記載のデジタルプロセッサ装置。
【請求項２２】
前記第１の命令長は４８ビットであり、前記第２の命令長は３２ビットであり、前記第３の命令長は１６ビットである、請求項２０に記載のデジタルプロセッサ装置。
【請求項２３】
前記プログラムシーケンサは、各クロック周期で最長命令長に対応するビット数をフェッチするように構成される、請求項１８に記載のデジタルプロセッサ装置。
【請求項２４】
前記第２のモードにおいて現在の命令長を決定するデコーダと、該現在の命令長に応答して、次の命令を整列させる命令整列バッファとをさらに備えている、請求項１８に記載のデジタルプロセッサ装置。
【請求項２５】
前記命令整列バッファは、前記現在の命令長に応答して、命令をシフトさせるように構成される、請求項２４に記載のデジタルプロセッサ装置。
【請求項２６】
前記プログラムシーケンサは、分岐命令の目標アドレスを検出し、該分岐命令の該目標アドレスが前記第１のアドレス空間と前記第２のアドレス空間との間の移行を表すことを検出することに応答して、前記第１のモードと前記第２のモードとを切り替えるように構成される、請求項１６に記載のデジタルプロセッサ装置。
【請求項２７】
前記第１のアドレス空間はノーマルワードアドレス空間であり、前記第２のアドレス空間はショートワードアドレス空間である、請求項１６に記載のデジタルプロセッサ装置。
【請求項２８】
前記第１のアドレス空間は仮想アドレス空間の第１の仮想ページであり、前記第２のアドレス空間は該仮想アドレス空間の第２の仮想ページである、請求項１６に記載のデジタルプロセッサ装置。
【請求項２９】
メモリと、プログラムシーケンサと、実行ユニットとを含むデジタルプロセッサを動作させる方法であって、
該メモリにコードシーケンスの命令を格納することと、
該コードシーケンスの命令アドレスを生成することと、
第１のアドレス空間と第２のアドレス空間との間の分岐に応答して、第１の動作モードと第２の動作モードとを自動的に切り替えることであって、該第１のアドレス空間および第２のアドレス空間におけるアドレスは共通のメモリ空間にアクセスする、ことと、
該第１の動作モードにおいて、該第１のアドレス空間において第１の命令長の命令にアクセスすることと、
該第２の動作モードにおいて、該第２のアドレス空間において該第１の命令長、第２の命令長および第３の命令長の命令にアクセスすることと、
該コードシーケンスの該アクセスされた命令を実行することと
を包含する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は、レガシープロセッサ上の可変長命令コード化に関し、より詳細には、自動モード切替えを実装するためにエイリアスアドレス空間を利用する可変長命令コード化に関する。
【背景技術】
【０００２】
（発明の背景）
最新の埋込み型プロセッサは、圧縮したコードサイズを達成するために、プロセッサの命令セットの可変長命令コード化を使用する。レガシープロセッサの存在に従って、２つのアプローチが取られた。
【０００３】
コードサイズが重要な設計基準であると考えられる、新しく設計された命令セットに対して、混合サイズのコード化が利用され得る。この場合、短い命令および長い命令が同じコード化空間を共用する。その結果、異なるサイズの命令をデコードし実行するために、モードスイッチは必要ない。
【０００４】
コードサイズ減少が行われる前に利用される命令セットに関して、コード化空間は既にぎっしり詰まり過ぎていいて、新演算コードが可能ではない場合がある。最初から命令セットを再設計するよりはむしろ、通常、プロセッサが新しく導入された命令をデコードし実行するような新動作モードが作成される。
【０００５】
第２の場合に関して、プロセッサが新命令タイプをデコードし実行し得る前に、プロセッサは新モードに入ることが必要である。通常、レガシーモードから新モードへのこのモード変更は、指定された構成レジスタにおいてモードビットを設定または再設定することによって達成される。このアプローチは欠点を有する。モードビットは、プロセッサが新命令をデコードし実行することを開始する前に設定されなければならない。レガシーモードでの命令は、新モードに切り替えるためにビットを設定しなければならず、逆もまた同様である。このことは、任意のレガシーコードモジュールが再使用される場合、それらのモジュールはこのモード変更を達成するために修正されなければならないことを意味する。このことは、例えば事前コンパイルのライブラリモジュールを用いるとき、実際上の制限を有し得る。モードビットはまた、追加のモード変更命令を実行するのに必要である周期の外に、コードサイズの点から特定のオーバヘッドも伴う。さらに、モードが変更されるたびに、パイプラインプロセッサは、異なるモードから命令をデコードすることを開始する前に、パイプラインがドレーンすることを可能にしなければならない。このことは、モードが頻繁に切り替えられる場合、性能に影響を与え得る。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、レガシープロセッサにおける可変長命令コード化のための改善された方法および装置に対するニーズがある。
【課題を解決するための手段】
【０００７】
（発明の概要）
本発明の第１の局面従って、メモリと、プログラムシーケンサと、実行ユニットとを含むデジタルプロセッサを動作させる方法が提供される。方法は、メモリにコードシーケンスの命令を格納することと、コードシーケンスの命令アドレスを生成することと、命令アドレスにおける、第１のアドレス空間と第２のアドレス空間との間の移行に応答して、第１の動作モードと第２の動作モードとを自動的に切り替えることであって、第１のアドレス空間および第２のアドレス空間におけるアドレスは、共通のメモリ空間にアクセスする、ことと、第１の動作モードにおいて、第１のアドレス空間において命令にアクセスすることと、第２の動作モードにおいて、第２のアドレス空間において命令にアクセスすることと、コードシーケンスのアクセスされた命令を実行する、こととを包含する。
【０００８】
第１の動作モードおよび第２の動作モードは、同じかまたは異なる命令長の命令を利用し得る。特に、第１の動作モードは１つ以上の命令長を利用し得、第２の動作モードは１つ以上の命令長を利用し得る。第１のモードおよび第２のモードにおける命令長は、任意の組み合わせにおいて同じであり得るかまたは異なり得る。一部の実施形態において、第１のモードは第１の命令長の命令を実行するように構成され、第２のモードは、第１の命令長、第２の命令長および第３の命令長の命令を実行するように構成される。
【０００９】
本発明の第２の局面に従って、デジタルプロセッサ装置は、コードシーケンスの命令を格納するように構成されたメモリと、コードシーケンスの命令アドレスを生成し、命令アドレスにおける、第１のアドレス空間と第２のアドレス空間との間の移行に応答して、第１の動作モードと第２の動作モードとを自動的に切り替えるように構成されたプログラムシーケンサであって、第１のアドレス空間および第２のアドレス空間におけるアドレスは共通のメモリ空間にアクセスし、第１の動作モードにおいて、命令は第１のアドレス空間においてアクセスされ、第２の動作モードにおいて、命令は第２のアドレス空間においてアクセスされる、プログラムシーケンサと、コードシーケンスのアクセスされた命令を実行するように構成された実行ユニットとを備えている。
【００１０】
本発明のよりよい理解のために添付の図面に参照がなされ、該添付の図面は本明細書に参考として援用される。
【図面の簡単な説明】
【００１１】
【図１】図１は、本発明の実施形態に従うデジタルプロセッサ装置の概略ブロック図である。
【図２】図２は、共通の物理メモリ空間にアクセスする、第１のアドレス空間および第２のアドレス空間を例示する概略図である。
【図３】図３は、本発明の実施形態に従う命令アドレス指定を例示する概略図である。
【図４】図４は、仮想メモリを例示する概略図である。
【図５】図５は、本発明の実施形態に従うプロセッサ動作の方法を例示するフロー図である。
【図６】図６は、本発明の実施形態に従う命令整列バッファを例示する概略ブロック図である。
【図７】図７は、本発明の実施形態に従う、レガシーモードおよびビザモードにおけるメモリアクセスを例示する概略図である。
【図８】図８は、本発明の実施形態に従う命令整列を例示する概略図である。
【発明を実施するための形態】
【００１２】
（詳細な説明）
本発明は、その適用において、以下の説明に述べられるかまたは図面に例示される構造の詳細および構成要素の配置に限定されない。本発明は、他の実施形態が可能であり、様々な方法で実施されるかまたは実行されることが可能である。また、本明細書において用いられる語法および術語は、説明の目的のためであり、限定することとして考えられるべきではない。「含む（ｉｎｃｌｕｄｉｎｇ）」、「備えている、包含する（ｃｏｍｐｒｉｓｉｎｇ）」、または「有する（ｈａｖｉｎｇ）」、「含んでいる（ｃｏｎｔａｉｎｉｎｇ）」、「伴う（ｉｎｖｏｌｖｉｎｇ）」、および本明細書におけるこれらの変形を用いることは、以下に記載される項目および追加の項目の外にそれらの項目の均等物を包含する（ｅｎｃｏｍｐａｓｓ）ことが意図される。
【００１３】
本発明の実施形態に従うデジタルプロセッサ１０の概略ブロック図が、図１に示される。デジタルプロセッサ装置１０は、コアプロセッサ１１とメモリ１４とを含む。プログラムシーケンサ１２は、アプリケーションプログラムを実行するための一連の命令アドレスを生成する。プログラムフローは、順次アドレスにアクセスし得るが、典型的には、非順次プログラムフローを生成する、ループ、サブルーチン、ジャンプおよび／または割込みなどの１つ以上のプログラム構造を含む。命令アドレスはプログラムシーケンサ１２によってアドレス翻訳ユニット１６に供給され、アドレス翻訳ユニット１６は、論理命令アドレスを物理命令にアクセスするための物理アドレスに変換する。上記のように、エイリアスアドレス空間は自動モード切替えを実行するように用いられ得る。一部の実施形態において、ノーマルワードアドレス空間およびショートワードアドレス空間は、モードを区別するために用いられる。他の実施形態において、仮想アドレス空間の種々の仮想ページは、モードを区別するために用いられる。
【００１４】
物理アドレスはメモリ１４に提供され、メモリ１４は命令整列バッファ２０に命令を戻す。以下に論議されるように、メモリ１４は１クロック周期当り２つ以上の命令を戻し得、命令整列バッファ２０は実行のための正しい命令を選択する。ＩＡＢコントローラ２２は、以下に説明されるように、命令整列バッファ２０を制御する。デコーダ３０は、命令をデコードし、現在の命令を実行する実行ユニット３２に制御信号を提供する。図１の実施形態において、コアプロセッサ１１は、プログラムシーケンサ１２と、アドレス翻訳ユニット１６と、命令整列バッファ２０と、ＩＡＢコントローラ２２と、デコーダ３０と、実行ユニット３２とを含む。命令が必要とするオペランドは、別にアクセスされる。
【００１５】
図１に示されるように、プログラムシーケンサ１２は、ＩＡＢコントローラ２２およびデコード３０にＭｏｄｅ信号を供給する。第１の動作モードおよび第２の動作モードは、デジタルプロセッサ装置１０によって実行され得る異なる命令セットに対応する。第１の動作モードおよび第２の動作モードは、同じ命令長または異なる命令長の命令を利用し得る。特に、第１のオペレーティングモードは１つ以上の命令長を利用し得、第２のオペレーティングモードは１つ以上の命令長を利用し得る。第１のモードおよび第２のモードにおける命令長は、任意の組み合わせにおいて同じかまたは異なり得る。一部の実施形態において、第１のモードは、第１の命令長の命令を実行するように構成され、第２のモードは、第１の命令長、第２の命令長、および第３の命令長の命令を実行するように構成される。これらの実施形態において、第２の命令長および第３の命令長は第１の命令長より短い。
【００１６】
一部の実施形態において、「レガシー」モードとも呼ばれる第１のモードは既存の命令セットに対応し、「ビザ（ｖｉｓａ）」モードと呼ばれる第２のモードは新命令セットに対抗する。新命令セットは、新命令の外に既存の命令セットの命令を含み得る。例えば、少なくとも一部の新命令は、コードサイズを減少させるために既存の命令よりも短い命令を有し得る。
【００１７】
デコーダ３０は、各命令の長さを決定し、ＩＡＢコントローラ２２およびプログラムシーケンサ１２にＩｎｓｔｒｕｃｔｉｏｎ  Ｌｅｎｇｔｈ信号を提供するように構成される。実行ユニット３２は、プログラムシーケンサ１２に分岐アドレスを供給するように構成される。以下に論議されるように、成立した分岐（ｔａｋｅｎ  ｂｒａｎｃｈ）はモード切替えをトリガし得る。
【００１８】
図１の実施形態において、第１のモードは４８ビットの固定命令長を利用する。第２のモードは、４８ビット命令と、３２ビット命令と、１６ビット命令とを含む可変長命令を利用する。プログラムシーケンサ１２は、実行されている現在の命令のアドレスに基づいて、第１のモードおよび第２のモードに、そして第１のモードと第２のモードを自動的に切り替える。本発明の実施形態に従って、エイリアスアドレスは、第１のモードと第２のモードを区別するために用いられる。
【００１９】
メモリ１４のエイリアスアドレス指定を例示する概略図は、図２に示される。図２において、物理メモリ１４は、各２メガビットのブロック７０および７２に分割された４メガビットの容量を有する。メモリ１４は、第１のアドレス空間７４または第２のアドレス空間７６を介してアクセスされ得る。この実施形態において、第１のアドレス空間７４は「ノーマルワード」アドレス空間と呼ばれ、第２のアドレス空間７６は「ショートワード」アドレス空間と呼ばれる。ノーマルワードアドレス指定において、４８ビットワードは、０ｘ０００２  ００００から０ｘ０００２  ＡＡＡＡまでの範囲および０ｘ０００３  ００００から０ｘ０００３  ＡＡＡＡまでの範囲におけるアドレスおいてメモリ１４から読み取られる。ショートワードアドレス指定において、１６ビットワードは、０ｘ０００４  ００００から０ｘ０００７  ＦＦＦＦまでの範囲におけるアドレスおいてメモリ１４から読み取られる。ショートワードアドレス指定において、２つ以上、典型的には３つの１６ビットワードがメモリ１４から読みとられ得る。図２に示されるように、第１のアドレス空間７４および第２のアドレス空間７６は、異なるアドレス範囲を用いるが、共通の物理メモリ空間にアクセスする。
【００２０】
図２の実施形態において、第１のアドレス空間におけるアドレスおよび第２のアドレス空間におけるアドレスは、物理メモリアドレスの同じ範囲にアクセスする。他の実施形態において、第１のアドレス空間におけるアドレスおよび第２の空間におけるアドレスは、物理メモリアドレスの、異なるがオーバラップする範囲にアクセスする。従って、第１のアドレス空間は、第２のアドレス空間より大きいかまたは小さいかのいずれかであり得る。しかしながら、第１のアドレス空間および第２のアドレス空間の少なくとも一部分は、同じ物理メモリ空間に対応する。第２のアドレス空間は、第１のアドレス空間に対してエイリアスアドレス空間として、またはその逆として、時々既知である。
【００２１】
本発明の実施形態に従うエイリアスアドレス指定を用いる、レガシーコード化およびビザコード化を示す概略図が、図３に示される。図２のブロック７２は、図３に示される。アプリケーションプログラムのためのコード８０は、物理メモリ１４の指定されたアドレス空間に格納され得る。コード８０は、レガシーコードセグメント８２および８４の命令と、ビザコードセグメント８６および８８の命令とを含む。示されるようにコードセグメント８２、８４、８６および８８は、物理メモリ１４の、異なるが連続した領域を占有する。レガシーコードセグメント８２および８４はノーマルワードアドレス空間におけるアドレスを用いてアクセスされ、ビザコードセグメント８６および８８はショートワードアドレス空間におけるアドレスを用いてアクセスされる。その結果、プログラムシーケンサ１２は、現在の命令アドレスがノーマルワードアドレス空間にあるか、またはショートワードアドレス空間にあるかどうかに従って動作モードを決定し得る。
【００２２】
仮想アドレス指定を例示する概略図は、図４に示される。物理アドレス空間１００は、物理ページ１０２、１０４、１０６などを含む。コアプロセッサ１１０は、仮想アドレス空間１２０にアクセスすることによって動作し、仮想アドレス空間１２０は、典型的には物理アドレス空間１００より大きい。仮想アドレス空間１２０は、仮想ページ１３０、１３１、１３２、１３３、１３４、１３５、１３６などを含み得る。コアプロセッサ１１０が仮想アドレス空間１２０における位置にアクセスするとき、仮想アドレスはアドレス翻訳ユニット１６(図１）によって物理アドレスに変換され、対応する物理メモリ位置がアクセスされる。一部の場合において、必要とされるデータは、ディスク記憶装置などの低レベルメモリにおいてアクセスされ、物理メモリに転送される。仮想ページと物理ページとの間のマッピングは、ページテーブルにおいて維持される。ページテーブルがおおよそ構成された後に、図４の例において、仮想ページ１３１は物理ページ１０２を指し、仮想ページ１３３および１３６は物理ページ１０４を指し、仮想ページ１３５は物理ページ１０６を指す。示されるように、２つ以上の仮想ページが同じ物理ページを指し得る。
【００２３】
本発明の実施形態に従って、コードシーケンスの命令は、物理ページ１０４などの物理メモリの領域に格納され得る。コアプロセッサ１１０は、仮想アドレスとしてコードシーケンスの命令アドレスを生成する。第１の動作モードに対応するコードシーケンスの仮想アドレスは、仮想ページ１３３にあり得、第２の動作モードに対応するコードシーケンスの仮想アドレスは、仮想ページ１３６にあり得る。たとえば、仮想ページ１３３における命令は同じ命令長を有し得、仮想ページ１３６における命令は混合命令長を有し得る。コードシーケンスが仮想ページ１３３における命令アドレスから仮想ページ１３６における命令アドレスに分岐するとき、コアプロセッサ１１０は、分岐目標のアドレス空間における変化がもしあれば、その変化を検出し、第１の動作モードから第２の動作モードに自動的に切り替える。同様に、仮想ページ１３６におけるコードシーケンスが仮想ページ１３３における命令アドレスに分岐するとき、コアプロセッサ１１０は、分岐目標のアドレス空間における変化がもしあれば、その変化を検出し、第２の動作モードから第１の動作モードに自動的に切り替える。第１および第２の動作モードにおいて、命令は、異なる命令長のために、異なる仕方でアクセスされ得る。
【００２４】
本発明の実施形態に従うデジタルプロセッサ装置を動作する方法のフローチャートが、図５に示される。ステップ２００において、コードシーケンスの命令は、図１に示されるメモリ１４などのメモリに格納される。第１のオペレーティングモードの命令および第２のオペレーティングモードの命令は、物理メモリ１４の連続領域に格納され得る。コードシーケンスが実行のために呼ばれるとき、命令アドレスがステップ２０２において生成される。
【００２５】
シーケンサが、リセット時、所定のモードで動作するように初期設定されるべきであることは明らかである。プロセッサは通常、後方互換性があるように設計されるので、この実施形態において、シーケンサはリセット時、レガシー動作モードで初期設定される。
【００２６】
ステップ２０４において、次の命令アドレスが第１のアドレス空間から第２のアドレス空間への移行を表すかどうかについて決定がなされる。次の命令アドレスが第１のアドレス空間から第２のアドレス空間への移行を表す場合、プログラムシーケンサ１２（図１）は、ステップ２０６において第２の動作モードに自動的に切り替え、ステップ２２０に進む。次の命令アドレスが第１のアドレス空間から第２のアドレス空間への移行を表さない場合、次の命令アドレスが第２のアドレス空間から第１のアドレス空間への移行を表すかどうか、ステップ２０８において決定がなされる。次の命令アドレスが第２のアドレス空間から第１のアドレス空間への移行を表す場合、プログラムシーケンサ１２は、ステップ２１０において第１の動作モードに自動的に切り替え、ステップ２２０に進む。次の命令アドレスが第２のアドレス空間から第１のアドレス空間への移行を表さない場合、プロセスはモード切替えなしにステップ２２０に進む。アドレススペース間の移行は、アドレス空間の間に分岐する分岐命令によって表示され得る。
【００２７】
ステップ２２０において、プログラムシーケンサ１２は、適切な動作モードを用いて次の命令をフェッチし、実行のために実行ユニットに命令をディスパッチする。プロセスは次いでステップ２０２に戻り、次の命令アドレスを生成する。
【００２８】
上記の実施形態において、第１の動作モードすなわちレガシー動作モードは、４８ビットに固定された第１の命令長の命令を実行するように構成され、第２の動作モードすなわちビザ動作モードは、４８ビット命令、３２ビット命令、および１６ビット命令を含む可変の命令長を有する命令を実行するよう構成される。メモリ１４は１６ビットワードの４カラムとして編成され得る。レガシーモードにおいて、４８ビット命令は各クロック周期でフェッチされ、デコードおよび実行のためにコアプロセッサ１１に供給される。メモリ編成の理由で、メモリ１４の種々の行に格納される４８ビットの命令を整列するために命令整列バッファ２０が用いられる。すべての命令は４８ビットであるので、命令長情報は必要ではなく、プログラムカウンタは各クロック周期で４８ビットに対応する値だけ増加させられる。
【００２９】
ビザモードにおいて、４８ビット、３２ビットおよび１６ビットの命令は、メモリ１４において混合させられる。混合した命令は、高コード密度を達成するために、メモリ１４の連続位置に格納される。コードシーケンスを実行するとき、次の命令の命令長は既知ではない。従って図１を参照すると、命令がデコーダ３０によって部分的にデコードされるとき、命令長が決定され、命令長情報がＩＡＢコントローラ２２およびプログラムシーケンサ１２に提供される。命令長情報は、デコーダ３０に提供される次の命令の整列を制御するためにＩＡＢコントローラ２２によって用いられる。命令長情報は、現在の命令のデコード長に従って、１つ、２つまたは３つの１６ビットワードに対応する値によってプログラムカウンタを増加させるために、プログラムシーケンサ１２によって用いられる。
【００３０】
次の命令長が既知ではないので、最大長の命令に対応する若干数のワードが、各クロック周期でメモリ１４からフェッチされる。上記の例において、３つの１６ビットワードは、ビザモードにおいて各クロック周期でメモリ１４からフェッチされる。命令整列バッファ２０は、各クロック周期で命令を整列させるためにデコーダ３０からの命令長情報を用いる。次の命令長が既知ではないので、３つの１６ビットワードが、各クロック周期で命令整列バッファ２０によってデコーダ３０に提供される。
【００３１】
命令整列バッファ２０の実施形態のブロック図は、図６に示される。バッファ３００は、５つの１６ビットワードの容量を有し、１６ビット位置の３１０と、３１１と、３１２と、３１３と、３１４とを含む。ｍｕｘ（マルチプレクサ）３２０は、バッファ３００の各１６ビット位置にデータを供給する。バッファ３００への入力は、メモリから、バッファ３００の出力から、または他の入力源からであり得る。１つの１６ビット位置の出力は、異なる１６ビット位置に書き込まれ得、バッファ３００における命令を効果的にシフトさせ得る。
【００３２】
第１の動作モードすなわちレガシー動作モードにおいて、３つの１６ビットワードが、メモリから読み取られ、各クロック周期でデコーダ３０に供給される。各命令がレガシーモードにおいて４８ビットであるので、命令整列は必要ない。
【００３３】
第２の動作モードすなわちビザ動作モードにおいて、３つの１６ビットワードが、メモリから読み取られ、各クロック周期でバッファ３００に書き込まれる。メモリから読み取られた４８ビットは、任意のクロック周期において命令長の混合を含み得る。３つの１６ビットワードの内容は既知ではないので、４８ビットがデコーダ３０に供給される。部分的なデコードの後に、命令長は、指定の命令コード化に基づいて決定される。バッファ３００がメモリから読み取られた３つの新１６ビットワードを収容し得ない場合、フェッチ動作は遅らされる。
【００３４】
レガシーモードにおける４８ビット動作命令を含むメモリブロック４００は、図７に示される。この実施形態において、メモリブロック４００は、１６ビットワードの４つのカラムを含む。ビザモードにおける混合長動作命令を含むメモリブロック４１０もまた、図７に示される。この実施形態において、高、中および低のオーダー１６ビットワードが、レガシーモードおよびビザモードにおいてそれぞれに配置される（異なるローテーション）。命令は、命令長信号に応答して、図８に示されるように、バッファ３００に配置され、バッファ３００においてシフトされるメモリブロック４１０からフェッチされる。逐次的クロック周期上のバッファ３００の内容は、図８に示される。混合長命令は、逐次的クロック周期上で実行される。
【００３５】
命令が４８ビット命令としてデコードされる場合、命令の３つの１６ビットワードは、バッファ３００の位置３１２、３１３および３１４から削除される。次のクロック周期上のメモリから読み取られた３つの１６ビットワードは、バッファ３００の高オーダー位置３１２、３１３および３１４に書き込まれる（図８において周期ｎおよびｎ＋１を参照されたい）。
【００３６】
命令が３２ビット命令としてデコードされる場合、命令の２つの１６ビットワードは、バッファ３００の位置３１３および３１４から削除され、バッファ３００における残りの１６ビットワードは２位置だけ左にシフトされる（図８において周期ｎ＋１およびｎ＋２を参照されたい）。
【００３７】
命令が１６ビット命令としてデコードされる場合、バッファ３００の高オーダー位置３１４における１６ビットワードが削除され、バッファ３００における残りの１６ビットワードは１位置だけ左にシフトされる（図８の周期ｎ＋４およびｎ＋５を参照されたい）。従って、命令整列バッファ２０の動作は、現在の命令のデコードされた命令長に従う。
【００３８】
バッファ３００がメモリからフェッチされた３つの１６ビットワードを収容し得ないとき、命令のフェッチは、どの周期上においても減速されるかまたは停止される。例は、図８に示される。周期ｎ＋６において、バッファ３００は、１６ビットワード８Ｈ、８Ｍおよび８Ｌを収容することが出来なく（図７を参照されたい）、フェッチは減速される。
【００３９】
アセンブラは、レガシーモードまたはビザモードで動作するように構成され得る。ビザモードで動作するアセンブラを用いてアセンブルされたソースコードは、様々な長さの命令の混合を有し得る２進コードを生成する。すべての命令は、メモリ１４のショートワードアドレス空間に配置される。レガシーモードでアセンブルされた同じコードは、４８ビットの均一長の命令を有する２進コードを生成する。そのようにアセンブリされた全体のコードは、メモリ１４のノーマルワードアドレス空間に配置される。２つのタイプのコードが一緒にリンクされ得る。実行可能なファイルは、ビザモードでアセンブルされた命令の外にレガシーモードでアセンブリされた命令を含み、レガシーモードで作成されたコードセクションへの分岐目標はノーマルワードアドレスであり、ビザモードで作成されたコードセクションへの分岐目標はショートワードアドレスであるように、分岐目標基準が分解される。前に言及されたように、プロセッサは、リセット時、レガシーモードに初期設定される。従って、リセット事象の直後にプロセッサによって実行されるリセットＩＳＲ（割込みサブルーチン（Ｉｎｔｅｒｒｕｐｔ  ＳｕｂＲｏｕｔｉｎｅ））は、レガシーモードでアセンブリされる。２つのアドレス空間は、プログラムシーケンサがコードのタイプを検出し、動的に動作モードを切り替え、種々の動作モードにおいて命令を正しくデコードすることを可能にする。
【００４０】
このようにして本発明の少なくとも１つの実施形態のいくつかの局面を説明したが、様々な変更、修正および改良が当業者に容易に思いつくことは理解されるべきである。そのような変更、修正および改良は、本開示の一部であることが意図され、本発明の精神および範囲内であることが意図される。従って、上記の説明および図面は、単に例示である。
【図１】
2010536089.tif 000003
【図２】
2010536089.tif 000004
【図３】
2010536089.tif 000005
【図４】
2010536089.tif 000006
【図５】
2010536089.tif 000007
【図６】
2010536089.tif 000008
【図７】
2010536089.tif 000009
【図８】
2010536089.tif 000010
【国際調査報告】
2010536089.tif 000011
2010536089.tif 000012
2010536089.tif 000013