(57)【特許請求の範囲】
【請求項１】
論理アドレス及びセグメント値から物理アドレスを生成するように構成されているアドレス変換ユニット、
前記アドレス変換ユニットと結合されている複数のセグメントレジスターであって、その少なくとも１つが、前記セグメント値を記憶するところの複数のセグメントレジスター、
前記アドレス変換ユニットと結合されている第１の制御ユニットであって、前記複数のセグメントレジスターの１つを示す命令フィールドを検出し、前記複数のセグメントレジスターの前記１つを示す信号を前記アドレス変換ユニットに運ぶように構成されている第１の制御ユニット、
マイクロプロセッサーのアドレス変換モードを示す値を記憶するための構成レジスター、及び
前記構成レジスター及び前記第１の制御ユニットに結合されている第２の制御ユニットであって、前記構成レジスターに記憶されている前記値に依存し、且つ前記第１の制御ユニットからの前記信号にさらに依存する機能を行うように構成されている第２の制御ユニット、
を含むマイクロプロセッサー。
【請求項２】
前記第２の制御ユニットが、前記セグメント値に依存する機能を行うように構成されている請求項１記載のマイクロプロセッサー。
【請求項３】
前記第２の制御ユニットがキャッシュ制御ユニットである請求項２記載のマイクロプロセッサー。
【請求項４】
前記キャッシュ制御ユニットが、前記命令フィールドを含む命令に関連付けられたデータバイトを無視するように構成されている請求項３記載のマイクロプロセッサー。
【請求項５】
前記キャッシュ制御ユニットが、前記セグメント値に従い、前記命令フィールドを含む命令に関連付けられたデータバイトを無視するように構成されている請求項３記載のマイクロプロセッサー。
【請求項６】
前記キャッシュ制御ユニットに結合されたバスインターフェイスユニットをさらに含む請求項４又は５記載のマイクロプロセッサー。
【請求項７】
前記バスインターフェイスユニットが前記無視する機能を示す信号を外部キャッシュユニットに運ぶように構成されている請求項６記載のマイクロプロセッサー。
【請求項８】
前記キャッシュ制御ユニットが、前記命令フィールドを含む命令に関連付けられたアドレスを含むところのキャッシュラインに関して、キャッシュフラッシュ操作を実行するように構成されている請求項３記載のマイクロプロセッサー。
【請求項９】
前記キャッシュ制御ユニットが、前記命令フィールドを含む命令に関連付けられたアドレスを含むところのキャッシュラインに関して、キャッシュクリーン操作を実行するように構成されている請求項３記載のマイクロプロセッサー。
【請求項１０】
前記キャッシュ制御ユニットが、前記セグメント値に従い、前記命令フィールドを含む命令に関連付けられたアドレスを含むところのキャッシュラインに関して、キャッシュフラッシュ操作を実行するように構成されている請求項３記載のマイクロプロセッサー。
【請求項１１】
前記キャッシュ制御ユニットが、前記セグメント値に従い、前記命令フィールドを含む命令に関連付けられたアドレスを含むところのキャッシュラインに関して、キャッシュクリーン操作を実行するように構成されている請求項３記載のマイクロプロセッサー。
【請求項１２】
前記キャッシュ制御ユニットは、命令が推論的であっても、前記命令フィールドを含む命令に関連付けられたアドレスに関連付けられたデータバイトを要求するようにさらに構成されている請求項３記載のマイクロプロセッサー。
【請求項１３】
前記キャッシュ制御ユニットが、ライトスルーモードにおいて、前記命令フィールドを含む命令に関連付けられたデータバイトを記憶するように構成されている請求項３記載のマイクロプロセッサー。
【請求項１４】
前記キャッシュ制御ユニットが、ライトバックモードにおいて、前記命令フィールドを含む命令に関連付けられたデータバイトを記憶するように構成されている請求項３記載のマイクロプロセッサー。
【請求項１５】
前記キャッシュ制御ユニットは、記憶命令が前記関連付けられたデータキャッシュにおいてミスした場合には、前記記憶命令に関連付けられたデータバイトを、主メモリーから、関連付けられたデータキャッシュ内に転送するように構成されている請求項３記載のマイクロプロセッサー。
【請求項１６】
前記キャッシュ制御ユニットが、前記記憶命令に関連付けられたデータバイトに対して、関連付けられたデータキャッシュ内で、キャッシュラインを割り当てるように構成されている請求項３記載のマイクロプロセッサー。
【請求項１７】
前記第２の制御ユニットがデータ先取りユニットである請求項３記載のマイクロプロセッサー。
【請求項１８】
前記データ先取りユニットが、前記命令フィールドを含む命令に関連付けられたアドレスから開始する連続するキャッシュラインを先取りするように構成されている請求項１７記載のマイクロプロセッサー。
【請求項１９】
前記データ先取りユニットが、前記セグメント値に従い、前記命令フィールドを含む命令に関連付けられたアドレスから開始する連続するキャッシュラインを先取りするように構成されている請求項１７記載のマイクロプロセッサー。
【請求項２０】
主メモリーと請求項１〜１９のいずれか一項に記載のマイクロプロセッサーを含むコンピューターシステムにおいて、前記マイクロプロセッサーが前記主メモリーに結合されているところのコンピューターシステム。
【請求項２１】
前記主メモリーと前記マイクロプロセッサーの間に結合されている外部キャッシュメモリーユニットをさらに含む請求項２０記載のコンピューターシステム。
【請求項２２】
命令を実行するための実行ユニットをさらに含み、前記実行ユニットは、信号を受け取り、且つ前記信号に従い、前記命令の実行を修飾するように構成されているところの請求項１記載のマイクロプロセッサー。
【請求項２３】
前記実行ユニットが受け取るように構成されているところの前記信号が、前記複数のセグメントレジスターの前記１つを示す前記信号である請求項２２記載のマイクロプロセッサー。
【請求項２４】
前記実行ユニットが前記セグメント値を受け取り、且つ前記セグメント値に従い、前記命令の前記実行を修飾するように構成されている請求項２２記載のマイクロプロセッサー。
【請求項２５】
前記実行ユニットが、命令実行の結果に従い、一組の条件フラグを修飾するように構成されている請求項２３又は２４記載のマイクロプロセッサー。
【請求項２６】
前記実行ユニットが、前記命令フィールドを含む命令の実行時に、前記一組の条件フラグを変えないように構成されている請求項２３又は２４記載のマイクロプロセッサー。
【請求項２７】
前記実行ユニットが、前記セグメント値に従い、前記命令フィールドを含む命令の実行時に、前記一組の条件フラグを変えないように構成されている請求項２４又は２５記載のマイクロプロセッサー。
【請求項２８】
前記実行ユニットが、命令実行の結果を示す複数の組の条件フラグを含む請求項２５記載のマイクロプロセッサー。
【請求項２９】
前記実行ユニットが、前記命令フィールドを含む命令実行の結果に従い、修飾すべき前記複数の組の条件フラグの１つを選択するように構成されており、及び前記実行ユニットが、前記命令フィールドに従い、前記複数の組の条件フラグの前記１つを選択するように構成されている請求項２３、２５又は２８のいずれか一項記載のマイクロプロセッサー。
【請求項３０】
前記実行ユニットが、前記命令フィールドを含む命令実行の結果に従い、修飾すべき前記複数の組の条件フラグの１つを選択するように構成されており、及び前記実行ユニットが、前記セグメント値に従い、前記複数の組の条件フラグの前記１つを選択するように構成されている請求項２４、２５又は２８のいずれか一項記載のマイクロプロセッサー。
【請求項３１】
主メモリーと請求項２２〜３０のいずれか一項に記載のマイクロプロセッサーを含むコンピューターシステムにおいて、前記マイクロプロセッサーが前記主メモリーに結合されているところのコンピューターシステム。
【請求項３２】
前記主メモリーと前記マイクロプロセッサーの間に結合されている外部キャッシュメモリーユニットをさらに含む請求項３１記載のコンピューターシステム。
【請求項３３】
前記第２の制御ユニットが、レジスターの複数のバンクの１つからの命令に関連付けられたレジスター値を選択するように構成され、及び前記第２の制御ユニットが、前記命令フィールドに従い、レジスターの前記複数のバンクの前記１つを選択する請求項１記載のマイクロプロセッサー。
【請求項３４】
前記第２の制御ユニットが、前記セグメント値を受けとるように、且つ前記セグメント値に従い、命令の復号化を修飾するように構成されている請求項１記載のマイクロプロセッサー。
【請求項３５】
前記第２の制御ユニットが、レジスターの複数のバンクの１つからの命令に関連付けられたレジスター値を選択するように構成され、及び前記第２の制御ユニットが、前記セグメント値に従い、レジスターの前記複数のバンクの前記１つを選択する請求項３４記載のマイクロプロセッサー。
【請求項３６】
主メモリーと請求項３３〜３４のいずれか一項に記載のマイクロプロセッサーを含むコンピューターシステムにおいて、前記マイクロプロセッサーが前記主メモリーに結合されているところのコンピューターシステム。
【請求項３７】
前記主メモリーと前記マイクロプロセッサーの間に結合されている外部キャッシュメモリーユニットをさらに含む請求項３６記載のコンピューターシステム。
【発明の詳細な説明】
発明の背景
１．発明の技術分野
本発明は、マイクロプロセッサー技術分野に関し、より特には、マイクロプロセッサー機能を既存のマイクロプロセッサーアーキテクチャー内で拡張する機構に関する。
２．従来技術
マイクロプロセッサー製造業者は、従前の８０×８６世代、すなわち８０８６／８、８０２８６、８０３８６、及び８０４８６、用の多量のソフトウエアーとの互換性を維持するために、×８６命令を実行する新製品を継続して開発する。ソフトウエアー互換性の維持は、新製品における、多くのアーキテクチャー上の譲歩を強いてきた。従前の製品の機能を保持するために、ハードウエアーは、しばしば単に修飾され、あるいは拡張されて能力及び機能が増大した。能力及び機能を増大させるために頻繁に拡張される１つの分野は、メモリーアドレス指定モデルである。
初期の×８６マイクロプロセッサーは、セグメント化を用いるメモリーアドレス指定モデルを実現した(inmplemented)。セグメント化においては、メモリーアドレスは、２つの部分を用いる命令、すなわち１のセグメント及びセグメント内のオフセット、によって特定される。セグメントセレクターはセグメントレジスターに記憶され、そして（プロセッサーが非プロテクトモードで実行されている場合）主メモリー内で該セグメントがどに位置されるかを示し、あるいは主メモリー内のセグメントディスクリプターテーブル内に記憶されているセグメントディスクリプターを指す。セグメントディスクリプターは、セグメントに関する情報、そのベースアドレスを含む、を有する。ベースアドレスはオフセットに加えられ、物理アドレスを形成する。メモリーにアクセスする能力を有する各々の×８６命令は、デフォールトセグメントレジスターを有し、そこからそのセグメントデータを引き出す。×８６アーキテクチャは、６つのセグメントレジスター、ＣＳ、ＤＳ、ＳＳ、ＥＳ、ＦＳ、及びＧＳを規定する。ＣＳは、コード（命令）記憶に使用されるデフォールトセグメントレジスターである。ＤＳはスタック値を操作しない命令用に用いられるデフォールトセグメントレジスターである。スタックアクセスのためには、ＳＳがデフォールトセグメントレジスターである。ＥＳは、ストリング操作命令用に用いられるデフォールトセグメントレジスターである。デフォールトセグメントは、ある特別の命令のためには、セグメントオーバーライドプレフィックスバイトを該命令に付加するこによって、他のセグメントレジスターが優先されるように無効とされ(be overridden)得る。セグメントオーバーライドプレフィックスバイトは命令の１フィールドである。本明細書では、命令フィールドは、命令を形成するバイト中の１以上のバイトを言う。
８０３８６から始まって、ページ化メモリーシステムが実現できるように、セグメント化されたアドレス世代のハードウエアに、特別なページング回路が加えられた。プログラマーは、ページ化メモリーシステムを用いるオペレションシステムを開発している。ページ化メモリーシステムは、与えられたある時間において、プログラムのより小さい１部分を主メモリーにロードする能力を提供し、及び同時に遂行されているプログラムのための、追加の組み込みの保護検査機能を与える。×８６アーキテクチャーにおけるページング構造及びセグメントに関する追加の情報は、「プログラミング８０３８６」、クロフォードら著、ＳＹＢＥＸ  Ｉｎｃ．、サンフランシスコ、1987年、に見出だされ得る。同刊行物は、その総てにおいて、引用されることによって本明細書に含まれる。
メモリーセグメント化は、ページ化メモリーシステムを用いる場合には、典型的には使用されない。メモリーセグメント化は、「切る（turn off）」ことができないが、「フラット」メモリーモデルの使用によって、効果的に使用禁止とされ得る（be disabled)。フラットメモリーモデルは、総てのセグメントレジスターが同一のメモリーセグメントを指すようにすること（すなわち、総てのメモリーセグメントがオーバーラップするようにする）によって作られる。このオーバーラップすることは総てのセグメントレジスター内に同一のセグメント情報を記憶することによって達成される。ページング機構を用いるプログラマーは、典型的にはこのフラットメモリーモデルを採用する。
フラットメモリーモデルは、セグメントレジスターのユーティリティに大きな影響を与える。冗長したセグメントアドレス情報を持つことは、８０２８６マイクロプロセッサーに付加された２つの一般目的セグメントレジスター、ＦＳとＧＳ、を実質上無用なものにする。（他のセグメントレジスターは暗示的に８０×８６命令に参照されるが、しかしかろうじて有用であるに過ぎない。なぜなら、それらは冗長した情報を含むからである。）さらに、オペレーティングシステムは、他の有用な目的のためにこれらのレジスターを用いる試みを検知し得、そして例外を作るかもしれない。これらのレジスターは、アドレス生成のために用いられるので、不適切な値を持つセグメントレジスターをロードすることは、プログラムが、他のプログラムにより使われているメモリー空間、また、オペレーティングシステム自身を破壊することを可能にし得える。フラットメモリーモデル下でのセグメントレジスターへの明白な言及の建設的な使用が望まれる。
発明の要約
上記で概説した問題は、本発明に従うマイクロプロセッサーにより大部分解決される。
マイクロプロセッサーは、フラットメモリーモードで実行されている命令コードシーケンス中のセグメントオーバーライドプレフィックスを検出するように構成され、プレフィックス値又は付随するセグメントレジスターに記憶されている値を、内部及び／又は外部機能を制御するために用いる。さらに、該マイクロプロセッサーは、後続の命令の通常の実行の変化又は修飾をシグナルするように構成され得る。マイクロプロセッサーの性能及び能力を拡張するためにセグメントオーバーライドプレフィックスを有利に使用する多くの実施態様が示される。透明及び不透明な実施態様の双方が企図される。マイクロプロセッサーは、×８６のアーキテクチャーを変えずに数多くの有用な機能を与えるように構成され得る。従って、透明な実施態様が採用される場合には、古い×８６アーキテクチャーの実現との、遡る互換性が有利に維持され得る。不透明な実施態様が採用される場合には、遡る互換性が、維持されない場合もあるが、それでもなお×８６アーキテクチャーは修飾されない。よって、コードは新たな機能を実現するプロセッサーに容易に運ばれる。なぜなら、２、３の符号化は注意深く処理されるが、命令の組の全体的性格は変えられないからである。本発明は、概して、アドレス変換ユニット、複数のセグメントレジスター、第１の制御ユニット、構成レジスター、及び第２の制御ユニットを含むマイクロプロセッサーを企図する。アドレス変換ユニットは、論理アドレスとセグメント値とから、物理アドレスを生成するように構成される。該アドレス変換ユニットと緊密に結合されて、複数のセグメントレジスターの少なくとも１つは、前述のセグメント値を記憶する。第１の制御ユニットは、複数のセグメントレジスターの１つを表示する命令フィールドを検出し、且つ、複数のセグメントレジスターの１つを表示する信号をアドレス変換ユニットへと運ぶように構成される。
構成レジスターは、システムのアドレス変換モードを表示する値を記憶する。最後に、第２の制御ユニットは、構成レジスターに記憶された値及びさらに第１の制御ユニットからの信号に依存した機能を遂行するように構成される。本発明は、上記マイクロプロセッサー及び主メモリーを含むコンピューターシステムをさらに企図する。
本発明はさらに、アドレス変換ユニット、複数のセグメントレジスター、第１の制御ユニット、第２の制御ユニット、及び構成レジスターを含むマイクロプロセッサーを企図する。アドレス変換ユニットは、論理アドレスとセグメント値とから、物理アドレスを生成するように構成される。セグメントレジスターは、該アドレス変換ユニットと結合されており、その複数のセグメントレジスターうちの少なくとも１つは、セグメント値を記憶する。アドレス変換ユニットと、又、結合されている第１の制御ユニットは、複数のセグメントレジスターの１つを表示する命令フィールドを検出し、且つ、前記複数のセグメントレジスターの１つを表示する信号をアドレス変換ユニットへと運ぶように構成される。構成レジスターは、マイクロプロセッサーのアドレス変換モードを表示する値を記憶する。構成レジスター及びセグメントレジスターに結合されている第２の制御ユニットは、構成レジスターに記憶された値及びさらにセグメント値に依存した機能を遂行するように構成される。本発明は、上記マイクロプロセッサー及び主メモリーを含むコンピューターシステムをさらに企図する。
【図面の簡単な説明】
本発明の他の目的及び利点は、以下の詳細な説明を読み及び添付図面を参照すると明確となり、ここで図１は、８０×８６マイクロプロセッサーを含むコンピューターシステムのブロック図である。
図２は、リアルモードで動作する８０×８６マイクロプロセッサー中の物理メモリーアドレスを生成する構造を含む図１のアドレス変換ユニットを表すブロック図である。
図３は、保護モードで動作する８０×８６マイクロプロセッサー中の物理メモリーアドレスを生成する構造を含む図１のアドレス変換ユニットを表すブロック図である。
図４は、セグメントレジスター選択情報を通じて選択的に動作可能にされる(be enabled)ところのキャッシュコントローラーを含むマイクロプロセッサーの１部分のブロック図である。
図５は、セグメントレジスター選択情報を通じて選択的に動作可能にされる先回り制御ユニットを含むマイクロプロセッサーの１部分のブロック図である。
図６は、セグメントレジスター選択情報を通じて制御情報を受け取る分岐予測ユニットを含むマイクロプロセッサーの１部分のブロック図である。
本発明は、種々の修飾を受けおよび他の形態にされ得るが、そのうちの特定の実施形態が、図中の例を通じて示され、及び詳細に説明される。しかし、それらの図面及び詳細な説明は、本発明を特定の形態に限定することを意図されたのではなく、反対に、請求の範囲で規定される本発明の精神及び範囲に含まれるすべての修飾、均等及び代替を含むことが理解されなければならない。
発明の詳細な説明
図１には、マイクロプロセッサー101を含むコンピューターシステム100のブロック図が示される。１つの実施態様において、マイクロプロセッサー101は、８０×８６アーキテクチャーを実現する。マイクロプロセッサー101は外部キャッシュユニット102と主メモリー104と結合される。いくつかの実施態様においては、外部キャッシュユニット102は含まれない。外部キャッシュユニット102は、マイクロプロセッサーの内部キャッシュに記憶されない、最近にアクセスされたデータ及び命令の転送を速くするのに用いられる。マイクロプロセッサー101は、マイクロプロセッサーの内部ユニットから外部キャッシュユニット102及び／又は主メモリー１０４への情報の転送の調製するバスインターフェイスユニットを含む。内部キャッシュユニット１０８は、フェッチユニット１１０及び実行ユニット１１２で使用される命令及びデータ情報を記憶する。１の実施態様において、内部キャッシュユニット１０８は、統合された命令及びデータキャッシュを含む。別の実施態様においては、命令とデータの別個のキャッシュが内部キャッシュユニット１０８内で構成される。
本発明の独特の特徴を論じる前に、マイクロプロセッサー１０１のユニットについて記載される。フェッチユニット１１０は、内部キャッシュユニット１０８から命令をフェッチし、そして該命令を命令復号化ユニット１１４に渡す。命令復号化ユニット１１４は、受けとった命令を、実行ユニット１１２へのディスパッチのために復号化する。レジスター内に有るオペランドは、命令復号化ユニット１１４によりフェッチされ、該命令が実行ユニット１１２にディスパッチされるときに、命令と共に与えられる。実行ユニット１１２は、オペランドを入手すると命令を実行するように構成される。当業者にとって理解されるように、×８６命令は時に、メモリー内のレジスターにより特定される（オフセットにより、又はレジスターとオフセットとの何等かの組み合わせによって）アドレスに記憶されているオペランドを有する。メモリーに記憶されているオペランドを取り戻すために、実行ユニット１１２はセグメントレジスター特定情報及び計算されたオフセットをアドレス変換ユニット１１６に渡す。セグメントレジスター特定情報は、セグメントオーバーライドプレフィックスバイトあるいは、付随する命令のディフォールトセグメントレジスターにより生成される。マイクロプロセッサー１０１の変換モードに基づき、アドレス変換ユニット１１６は、セグメント化方法によって及び、随意に上記のページング方法によりアドレスを変換する。
１つの実施態様において、変換されたアドレスはアドレス変換ユニット116によって内部キャッシュユニットへと渡される。他の実施態様において、キャッシュアクセスが実行ユニット112によって開始され、アドレス変換ユニット116からの変換されたアドレスを用いて完結される。さらに他の実施態様において、内部キャッシュユニット108は変換されていないアドレスを用いてアドレス指定される。同実施態様において、アドレス変換ユニット116は、キャッシュミス(miss)が起きたときに、あるいはキャッシュラインが内部キャッシュユニット108から除去されて主メモリーに戻されたときに、アクセスされる。
一般的に、アドレス変換ユニット116は、セグメントレジスター特定情報及びオフセットを受け取り、そしてこの情報を物理アドレスに変換するように構成される。フラットアドレス指定モードが実施されている場合、セグメントレジスター特定情報は、重要でない。なぜなら、各セグメントレジスターは同一の情報を有しているからである。
従って、アドレス変換ユニット116に渡されたセグメントレジスター特定情報を翻訳することによって、マイクロプロセッサー101に機構が付加され得る。このようにして付加された機構は、透明であり得、該機構を利用するために書かれたコードは、X86アーキテクチャーを実現するが、付加機構は実現しないプロセッサー上で正しく実行され、及び該機構を知らずに書かれたコードは、付加機構を実現するプロセッサー上で正しく実行される。このようにして付加された機構は、不透明であり得、該機構を利用するために書かれたコードは、該機構を実現しないプロセッサー上では正しく実行されず、及び該機構を知らずに書かれたコードは、該機構を実現するプロセッサー上では正しく実行されない。さらに、機構は、該機構を制御するために選択されたセグメントレジスターに記憶された値（すなわちセグメントレジスターオーバーライドプレフィックスにより特定されるセグメントレジスター）を用いることによって、不透明な様式で付加され得る。記憶された値が用いられるときは、該機構は不透明である。なぜなら、アドレス変換ユニット114は、該機構を制御するためのセグメントレジスターのセグメント部分を無視するように構成されるからである。この機能は80X86アーキテクチャーの一部ではないので、セグメントレジスターに記憶されている値によって制御される機構を付加することは、不透明である。多くの異なる機構が考えられ、アドレス変換ユニット116をより詳細に議論した後で明らかにされる。
図２は、図１のアドレス変換ユニット116を、リアルモードでの物理アドレス生成の場合について、より詳細に表す。このモードでは、アドレス変換ユニット116は20ビットの物理アドレスを生成する。
アドレス変換ユニット116には、セグメントレジスター特定情報及び16−ビットオフセット値が与えられる。マルチプレクサー204は、セグメントレジスターのうちの１つの内容をシフトレジスター206に与えるために、セグメントレジスター選択情報を用いる。（8086／8マイクロプロセッサーは示した６つのセグメントレジスターの内の４つ、CS、DS、ES、及びSSしか有しない）。次いで、シフトレジスター206は、この値を４つの２進ビット位置だけ左にシフトし、メモリーセグメントの、20ビットのベースアドレスを形成する。加算器208が16ビットオフセットを20ビットのベースアドレスに加え、メモリー中の位置についての20ビットの物理アドレスがもたらされる。
図３は、保護モードで物理アドレスを生成する場合の、図１のアドレス変換ユニット１１６を、より詳細に表す。保護モードは、８０８６／８マイクロプロセッサーでは、行うことができない。リアルモードにおけるように、アドレス変換ユニット１１６には、セグメントレジスター特定情報及びオフセット値が与えられる。保護モードでは、しかしセグメントレジスターは、主メモリーに存在する２つのメモリーセグメント情報のテーブルのうちの１つへの指標(index)を含む。該テーブルは、セグメントのベースアドレスとセグメントのサイズを含む、アドレス変換情報を有する。
８０２８６マイクロプロセッサーを皮切りに、２つの汎用セグメントレジスター（ＦＳとＧＳ）が付加され、セグメントレジスターの総数が６つとなった。６つのメモリーセグメントに関する情報は、６つのセグメントレジスターにロードされ得る。典型的には、各セグメントレジスターに付随するシャドウレジスターは、付随するセグメントディスクリプターからのデータ（セグメントのベースアドレスを含む）を記憶する。８０２８６においては、セグメントベースアドレスは２４ビット長である。８０３８６及び８０４８６では、セグメントベースアドレスは３２ビット長である。マルチプレクサー３０４は、セグメントレジスター特定情報を、対応するメモリーセグメントのベースアドレスのうちの１つの内容を与えるために用いる。加算器３０６はオフセットをセグメントベースアドレスに加え、メモリー中の位置の物理アドレスをもたらす（ページング回路３０８が不能にされていると仮定する。８０２８６においては、オフセットは１６ビット長であり、物理アドレスは２４ビット長である。８０３８６及び８０４８６では、オフセットは１６ビットまたは３２ビット長であり、物理アドレスは３２ビット長である。ページング回路３０８が動作可能にされているとすると、加算器３０６で形成されたアドレスは、ページングアルゴリズムに従い、再び変換される。
ページングアルゴリズムは、ページテーブルのアドレスを含むページディレクトリーへの指標付をするために、加算器３０６で形成されたアドレスの高次のビットを用いる。ページテーブルのアドレスは、加算器３０６からの第２のレンジのビットに加算され、特定のページディレクトリーエントリーを見出だす。そこに記憶された情報は、加算器３０６で形成されたアドレスを、物理アドレスに変換するために用いられる。
フラットアドレス指定モードでは、上述したようにページングアルゴリズムが変換のために用いられ、及び加算器３０６で形成されたアドレスは、論理アドレスと同一である。従って、セグメントレジスターは、ほとんど利用されない。特に利用されないのは、セグメントレジスターＦＳとＧＳであり、それらは×８６命令ではディフォルトセグメントレジスターではない。従って、ＦＳとＧＳレジスターを参照するセグメントレジスターオーバーライドバイトは、マイクロプロセッサー１０１の拡張された機構を動作可能にするのに用いられ得る。さらに、命令についてのディフォルトセグメントレジスターを特定するセグメントレジスターオーバーライドバイトは、他の実施態様で使用され得る。該他の実施態様は、フラットメモリーアドレス指定が有効でない場合にも使用され得る。
図４は、キャッシュ制御ユニット４０４を含むマイクロプロセッサー１０１の１部分のブロック図である。キャッシュ制御ユニット４０４は、内部キャッシュユニット１０８内に構成され、及び実行ユニット１１２及び制御レジスター４０２と結合される。キャッシュ制御ユニット４０４は、セグメントレジスター特定情報（実行ユニット１１２から与えられる）を用いて、及び、制御レジスター４０２内の動作可(enabling)ビット４００を用いて選択的に動作可能にされる。動作可ビットがセットされるときは、キャッシュ制御ユニット４０４は、セグメントレジスター特定情報を生成したところの命令に付随するデータを、選択的に、内部キャッシュユニット１０８内に記憶する。このキャッシャビリティ選択は、ページテーブルエントリーのＰＣＤビットにおいて実施されるような×８６アーキテクチャーのアーキテクチャー上のキャッシャビリティ選択に付加されるものである。１つの実施態様において、データは、ＦＧセグメントレジスターが付随する命令についてのセグメントレジスターオーバーライドバイトによって特定されない限り記憶される。他の実施態様は、この機能のために他のセグメントレジスターオーバーライドを使用し得る。
他の実施態様では、選択されたセグメントレジスターに記憶された値は、キャッシュ制御ユニット４０４に運ばれる。これにより、特定のアドレスのキャッシャビリティが運ばれた値によって決定される。仮に動作可ビットがクリアーされると、セグメントレジスター特定情報は特定のアドレスのキャッシャビリティを決定するのに用いられない。別の実施態様において、アドレス用のキャッシャビリティ特性は、外部キャッシュ１０２（図１に示される）に運ばれる。
さらに他の実施態様において、キャッシュコントローラー４０４はライトスルー(write-through)またはライトバック(writeback)モードのラインを選択的に記憶するように構成される。ライトスルーまたはライトバックモードにおいて、動作可ビット４００がセットされると、キャッシュコントローラー４０４はセグメントレジスター特定情報を生成した命令に付随するデータを、内部キャッシュユニット１０８に選択的に記憶する。このモード選択は、ページテーブルエントリーのＰＷＴビットにおいて実施されるような×８６アーキテクチャーのアーキテクチャー上のライトスルー選択へ付加されるものである。１つの実施態様において、データは、ＦＳセグメントレジスタが、付随する命令についてのセグメントレジスターオーバーライドプレフィックスバイトにより特定されない限り、ライトバックモードで記憶される。他の実施態様は、この機能のために、他のセグメントレジスターオーバーライドプレフィックスバイトを使用し得る。さらに他の実施態様において、選択されたセグメントレジスターに記憶された値は、キャッシュ制御ユニット４０４に運ばれる。これにより、特定のアドレスのライトスルーまたはライトバックモードが運ばれる値によって決定される。仮に動作可ビット４００がクリアーされると、セグメントレジスター特定情報は特定のアドレスのライトスルーまたはライトバックモードを決定するのに用いられない。別の実施態様においては、アドレスについてのライトスルーまたはライトバック特性は、外部キャッシュ１０２（図１に示される）に運ばれる。
キャッシュ制御ユニット４０４は、命令に付随するセグメントレジスター特定情報の特定の値に依存して、キャッシュフラッシュ(cache flush)またはキャッシュクリーン(cache clean)操作を実現する他の実施態様を有する。キャッシュフラッシュ操作は、キャッシュフラッシュ操作のアドレスを含むキャッシュラインがキャッシュから除去されるようにする。該ラインが主メモリーに対して修飾された場合には、該修飾された値は、主メモリーにライトバックされる。キャッシュクリーン操作はフラッシュ操作に似ており、そこでは修飾されたキャッシュラインが主メモリーにライトバックされる。しかし、キャッシュクリーン操作は、キャッシュからラインを除去しない。これらの操作は、総てのキャッシュに一時に影響を及ぼすところの×８６アーキテクチャーのＩＮＶＤ及びＷＢＩＮＶＤ命令とは反対に、単一のキャッシュラインに影響をもたらす。ＧＳセグメントオーバーライドプレフィックスバイトは、本実施態様におけるフラッシュ操作を起こすために用いられ、及びＥＳセグメントオーバーライドプレフィックスバイトは、クリーン操作を起こすために用いられる。他の実施態様は、これらの操作用に他のセグメントレジスターオーバーライドプレフィックスバイトを用い得、あるいは、これらの操作を特定するために選択されたセグメントレジスターに記憶された値を用い得る。仮に選択されたセグメントレジスターに記憶された値が用いられるとすると、該値はキャッシュ制御ユニット４０４に、セグメント特定値と共に運ばれる。
さらに他の実施態様において、キャッシュ制御ユニット４０４は、ＦＳセグメントレジスターオーバーライドプレフィックスバイトの使用に基づく推論的ミスライン補充機能（speculative miss line fill function）を実現する。この実施態様において、ＦＳセグメントオーバーライドプレフィックスバイトが、ある特別の命令について特定され、且つその命令に付随するアドレスが内部キャッシュユニット１０８をミス(miss)するとすると、該命令が実行ユニット１１２により推論的に実行されたとしても、該アドレスを含むキャッシュラインが主メモリーからフェッチされる。時には、特別の命令は、アドレスが正しく、且つ近い将来、プログラムによって要求されるにも拘らず、マイクロプロセッサー１０１にとっては、推論的であるように見え得る。プログラマーまたはコンパイラーが、この状況を知れば、該命令についてのキャッシュミスが推論的に内部キャッシュに運ばれよう特定できたであろう。用語「推論的」は、命令実行に関して用いられる場合、プログラムにおける命令の順次実行によって、命令が要求されていると分かる前に、命令が実行されることを意味する。
キャッシュ制御ユニット４０４の他の実施態様は、ＥＳセグメントレジスターオーバーライドプレフィックスバイトが該記憶命令に含まれる場合には、内部キャッシュ１０８をミスするところの記憶命令用にキャッシュラインを割り当てるように構成される。動作可ビット４００がセットされなければ、付随するキャッシュラインを内部キャッシュ１０８にフェッチせずに、内部キャッシュ１０８をミスする記憶命令が主メモリーに書き込まれる。動作可ビット４００がセットされる場合には、該記憶命令がＥＳセグメントレジスターオーバーライドプレフィックスバイトを含めば、内部キャッシュ１０８をミスする記憶命令は、付随するデータバイトのキャッシュライン補充が起きるようにする。ＥＳセグメントレジスターオーバーライドプレフィックスバイトが含まれない場合には、キャッシュライン補充は起きず、該記憶データは主メモリーに書き込まれる。さらに他の実施態様においては、キャッシュをミスするところの記憶命令は、キャッシュラインが割り当てられるようにするが、付随するデータバイトは、メモリーからフェッチされない。記憶命令により与えられるデータバイトは、キャッシュラインに記憶される。しかし、キャッシュラインの他のデータバイトは、追加の記憶命令が該他のデータバイトを有効にするまで、内部キャッシュ１０８において無効であるとマークされる。それに代わる実施態様において、該他のデータバイトはゼロにセットされる。キャッシュ制御ユニット４０４のさらなる実施態様は、上記の推論的ミスライン補充機能を特定するために選択されたセグメントレジスターに記憶された値を用いるように構成される。
１つの実施態様において、制御レジスター４０２は、８０３８６及び後のマイクロプロセッサーに存在する制御レジスター０である。動作可ビット４００は、制御レジスター０のビット３１、ページングビット、である。ビット３１がセットされたときは、ページングが許可される(be enabled)。
図５は、データ先取り(prefetch)ユニット５００を含むマイクロプロセッサーの一部のブロック図である。データ先取りユニット５００は実行ユニット１１２と制御レジスター４０２に結合されている。データ先取りユニット５００は、セグメントレジスター特定情報（実行ユニット１１２により与えられる）及び制御レジスター４０２内の動作可ビット４００の内容を用いて、選択的に動作可にされる。動作可ビット４００がセットされるときには、データ先取りユニット５００は、主メモリー１０４（図１に示される）の、命令により示されるアドレスから開始する連続のバイト群に記憶されているキャッシュラインに付随するデータを先取りする。キャッシュラインは内部キャッシュユニット１０８により記憶される。動作可ビット４００がセットされない場合には、データ先取りユニットは使用されないでいる(remains idle)。１つの実施態様において、もしもＦＳセグメントレジスターオーバーライドが、命令のために用いられると、データ先取りユニット５００は先取りを開始する。データ先取りユニット５００によりフェッチされる連続するキャッシュラインの数は実施態様によって異なる。他の実施態様において、データの先取りは選択されたセグメントレジスターに記憶されている値の制御のもとで開始する。さらに、フェッチすべき連続するキャッシュラインの数は、選択されたセグメントレジスターに記憶されている値によって特定され得る。
さらに他の実施態様では、データ先取りユニット５００は他の先取りスキームを実現する。ストライドベース先取りスキーム及び他の「賢明な（smart）」先取りスキームを含む、多くの先取りスキームが、データ先取りユニット５００に適していることが注意される。種々の「賢明な」先取りスキームは周知である。
図６は、分岐予測(branch prediction)ユニット６００（フェッチユニット１１０に含まれる）を含むマイクロプロセッサーの一部のブロック図である。分岐予測ユニット６００は実行ユニット１１２と制御レジスター４０２に結合される。分岐予測ユニット６００は、フェッチユニット内で具体化される分岐予測スキームならびに他のスキームを実現する。他のスキームは、セグメントレジスター特定情報（実行ユニット１１２により与えられる）及び制御レジスター４０２内の動作可ビット４００の内容により、動作可とされる。動作可ビット４００がセットされない場合には、分岐予測ユニット６００の分岐予測スキームが用いられる。動作可ビット４００がセットされる場合には、分岐命令直前のヌープ（ｎｏｏｐ）命令がＦＳ又はＧＳセグメントレジスターオーバーライドプレフィックスバイトを含む場合を除き、分岐予測ユニット６００の分岐予測スキームが用いられる。この場合、代わりの分岐予測スキームが用いられる。
１つの実施態様において、代わりの分岐予測スキームは、直前のヌープがＦＳセグメントレジスターオーバーライドプレフィックスバイトを含む場合には、分岐が行われることを予測し、又は、ＧＳセグメントレジスターオーバーライドプレフィックスバイトを含む場合には、分岐が行われないことを予測する命令である。この適用に関して、術語「ヌープ」は、×８６アーキテクチャーのＮＯＰ（ノーオペレーション）命令を指すのではない。その代わりに、「ヌープ」はレジスター又はメモリーを変化させないが、メモリー位置を参照する命令であり、従って該命令にはセグメントレジスターオーバーライドプレフィックスバイトが含まれ得る。ヌープ命令の例としては、メモリー位置の内容にゼロを足す命令がある。さらに、選択されたセグメントレジスターに記憶された値が、該代わりの分岐予測スキームを動作可または動作不可にするために用いられ得る。
セグメントレジスター特定情報の上述の使用は、機構の制御のために選択されたセグメントレジスターに記憶された値を用いる（セグメントレジスターオーバーライドプレフィックスバイトを存在させることの代わりに）実施態様を除き透明な使用方法である。不透明な使用方法も企図され、それは以下に記載される。
２つの不透明な使用方法は、実行ユニット内で実現され得る。第１に、セグメントレジスターオーバーライドバイトが条件フラグを修飾しない命令を作るために使用され得る。例えば、ＡＤＤ命令は、条件フラグを修飾する。メモリーオペランドを用いるＡＤＤ命令は、セグメントレジスターオーバーライドバイトを用いることによって、条件フラグを修飾しないＡＤＤ命令に修飾され得る。
１つの実施態様において、ＦＳセグメントレジスターオーバーライドプレフィックスバイトは、ＡＤＤ命令が条件フラグを修飾しないことを示す。この機能は、特定の操作により生成される条件フラグに依存するところの分岐のスケジューリングを可能とする。場合には、分岐命令と、命令が条件フラグを修飾しないか否かに依存するところの命令との間で、数多くの命令が実行され得る。
分岐命令のスケジューリングを助ける他の実施態様は、複数の組の条件フラグを実現するものである。このようにして、複数の組の条件は、同時に維持される。セグメントレジスターオーバーライドプレフィックスバイトが、複数の組の条件フラグのどれを修飾するかを示すために、条件フラグを修飾する命令と共に使用され得る。次いで、分岐命令直前のヌープ命令は、セグメントレジスターオーバーライドプレフィックスバイトを用いて、分岐命令が、分岐方向を定めるために、複数の組の条件フラグのどれを用いるべきかを示す。命令について、セグメントレジスターオーバーライドプレフィックスバイトが含まれていない場合には、デフォールトの組の条件フラグが命令に付随させられる。他の実施態様は、特定の命令で用いられるべき条件フラグを選択するために、選択されたセグメントレジスターに記憶された値を用いる。
他の不透明なセグメントレジスターオーバーライドプレフィックスバイトの使用方法は、命令復号ユニット１１４内で具体化され得る。上述したように、復号ユニット１１４は、命令のオペランドとして特定されるレジスターを読み取り、該値を命令と共に実行ユニット１１２に渡す。この実施態様において、データを記憶する複数のレジスターバンクの１つを選択するためにセグメントレジスターオーバーライドプレフィックスバイトが用いられる。各レジスターバンクは、×８６レジスターの完全な補数を含む。このようにして、命令の符号化を変えずにアーキテクチャーのレジスターの組が拡張され得る。当業者に認められるように、より多くのレジスターの組は、レジスター（速くアクセスされ得る）に保持されるべきオペランド値のより多くを許容し、従ってメモリーへのアクセス（それは典型的）には、より長い時間を要する）が減じられる。
１つの実施態様において、どのセグメントレジスターオーバーライドプレフィックスバイトも、第１のレジスターのバンクは特定せず、ＦＳセグメントレジスターを表すセグメントレジスターオーバーライドプレフィックスバイトは、第２のレジスターのバンクを、ＧＳセグメントレジスターを表すセグメントレジスターオーバーライドプレフィックスバイトは第３のレジスターのバンクを、ＥＳセグメントレジスターを表すセグメントレジスターオーバーライドプレフィックスバイトは第４のレジスターのバンクを特定する。他の実施態様において、選択されたセグメントレジスターに記憶された値は、数多くのレジスターバンクから適切なレジスターバンクを選択するために用いられる。
他の多くの不透明な使用方法が、セグメントレジスターオーバーライドプレフィックスバイトに対して作られ得ることが注意される。本発明はセグメントレジスターオーバーライドプレフィックスバイトの使用を通じて実現される透明及び不透明な機能を企図する。さらに、上記の実施態様は８０×８６マイクロプロセッサーであるが、いかなるマイクロプロセッサーアーキテクチャーで実現されるところのいかなるマイクロプロセッサーも、類似のアーキテクチャーの拡張から利益を受け得ることが注意される。
マイクロプロセッサーの他の部分に関しては、「High Performance Superscalar Microprocessor」と題された、同時係属の、本願と共通に譲渡された特許、出願、シリアルナンバー第08/146,382号、１０月２９日、１９９３年出願、Wittら、に見出され得る。さらに、「High Performance Superscalar Instruction Alignment Unit」と題された、同時係属の、本願と共通に譲渡された特許出願、シリアルナンバー第08/377865号、１月２５日、１９９５年出願、Tranら、に見出され得る。上記出願の開示は、引用されることによってその総てにおいて本出願に含まれる。
上記の開示が完全に理解されたならば、当業者にとって、多くの変形及び修飾が明かとなる。しかし、以下の請求の範囲は、そのような変形及び修飾の総てを包含するものと解釈されることが意図される。
【図１】
0003698441.tif 000002
【図２】
0003698441.tif 000003
【図３】
0003698441.tif 000004
【図４】
0003698441.tif 000005
【図５】
0003698441.tif 000006
【図６】
0003698441.tif 000007