JPH07210381A - プロセッサ及びコンピュータ・システム - Google Patents

プロセッサ及びコンピュータ・システム

Info

Publication number
JPH07210381A
JPH07210381A JP6337563A JP33756394A JPH07210381A JP H07210381 A JPH07210381 A JP H07210381A JP 6337563 A JP6337563 A JP 6337563A JP 33756394 A JP33756394 A JP 33756394A JP H07210381 A JPH07210381 A JP H07210381A
Authority
JP
Japan
Prior art keywords
bus
segment
address
memory
instruction
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
JP6337563A
Other languages
English (en)
Inventor
Kamla P Huck
カムラ・ピイ・ハック
Scott D Rodgers
スコット・ディ・ロジャース
Andrew F Glew
アンドリュー・エフ・グルー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
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
Application filed by Intel Corp filed Critical Intel Corp
Publication of JPH07210381A publication Critical patent/JPH07210381A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/0292User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Storage Device Security (AREA)
  • Memory System (AREA)

Abstract

(57)【要約】 【目的】 AGU設計に、プログラム順序に拘束されな
い処理と先行予測処理を組み込むこと。 【構成】 演算機能を実行するために前記バスに接続し
た実行ユニットと、アクセス対象のエントリを特定する
ためのフェッチ・ユニット、メモリー内の記憶場所から
エントリにアクセスするための発行ユニットと、前記エ
ントリに対応したアドレスを生成するためのアドレス生
成ユニットと、を有することを特徴とするプロセッサ。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明はマイクロプロセッサの分
野に関係するものである。より具体的に言えば、本発明
はマイクロプロセッサ内のアドレス生成ユニットに関係
するものである。
【0002】
【従来の技術】コンピュータ・システムは、一般に、中
央処理装置(CPU)、メモリー、入出力インタフェー
ス(I/O)という3つの基本的なブロックに分類する
ことができる。これらのブロックは1つ又は複数のバス
で相互に接続される。通常は、キーボード、マウス、デ
ィスク・ドライブなどの入力装置を使用して、データと
コンピュータ・プログラムの両方もしくはそのどちらか
一方をコンピュータのI/O装置を経由してコンピュー
タ・システムに入力する。コンピュータ・プログラム
は、データの処理方法をコンピュータ・システムに指示
するものである。このような命令とデータは、通常、メ
モリーに格納されている。CPUは、メモリーに格納さ
れているデータを取り出して、命令に従ってデータを処
理する装置である。処理結果は、メモリーに戻すことも
できるし、I/Oインタフェースを経由して、プリン
タ、ビデオ・モニター、スピーカなどに出力することも
できる。たとえば、ユーザーは、キーボードから文字を
タイプすることによって、文字を入力することができ
る。文書処理用のソフトウェア・プログラムを使用すれ
ば、ドキュメントの書式を整えたり、スペルをチェック
したり、切り貼りをしたりすることができる。ドキュメ
ントは、通常、原稿の作成中、コンピュータ画面に表示
されている。完成した原稿は、プリントアウトすること
もできるし、後で検索するために電子的な形でディスク
・ドライブに保存しておくこともできる。
【0003】コンピュータ・プログラムがメモリーに格
納されている値を変更している時には、そのプログラム
が「ストア」動作を実行している。コンピュータがメモ
リーから命令やデータを取出している時には、コンピュ
ータが「ロード」動作を実行している。このようなロー
ドやストアという動作を実行するためには、メモリー内
の格納場所を示すアドレスが必要になる。ストア動作で
は、アドレスは、データを格納するのに利用できるメモ
リー内の場所を示す。ロード動作では、アドレスは、必
要な命令やデータが格納されているメモリー内の場所を
示す。
【0004】通常、現代のコンピュータ・システムで
は、さまざまな抽象度に応じて、アドレス指定方式にも
さまざまな方式がある。たとえば、インテル x86ア
ーキテクチャには、論理アドレス、リニアアドレス、及
び物理アドレスがある。論理アドレスは、アセンブリ言
語又は機械コード・プログラムで指定されるものであ
り、セレクタとオフセットで構成されている。オフセッ
トは、ベース、スケール付きインデックス、及び変位の
3つの要素を加算することによって、形成する。したが
って、論理アドレス空間はセグメントに分割されてい
る。
【0005】論理アドレス(セグメントとオフセットで
構成されている)は、セグメントセレクタに対応したセ
グメント・ベースを加算してリニアアドレスを得ること
によって、フラットなリニアアドレスに変形される。
【0006】論理アドレス空間とリニアアドレス空間
は、両方ともシステム内の物理メモリーの量を超えて拡
大することができる。仮想メモリーと呼ばれる技法を使
用すれば、リニアアドレスを物理アドレスへ変換するこ
とができる。物理アドレスは量的に限定されている物理
メモリーをアドレスするのに使用される。物理メモリー
は量に制限があるが、ハード・ディスク・ドライブのよ
うな補助記憶装置を使えば拡張することができる。
【0007】前述したように、論理アドレスはセグメン
トとオフセットの組で構成されており、通常、オフセッ
トは、以下に示す公式で自分自身を計算して求められ
る。 ベース・レジスタ +インデックス・レジスタ * スケール +直値(immediate) 上記の式からリニアアドレスは次のように計算される。 セグメント・ベース+ベース・レジスタ +インデックス・レジスタ * スケール +直値 このような式と符号化方法は、命令ストリーム内でアド
レスを示すのに使用されており、「アドレス指定モー
ド」と呼ばれている。
【0008】アドレス指定モードが考案されたのにはい
くつかの理由がある。最初の理由は、アドレス指定モー
ドを使用すれば、プログラムの規模を小さくする(アド
レス・サイズを小さくする)ことができるということで
ある。たとえば、32ビットの複数ビット論理オフセッ
ト定数を命令に書き込まなくても、より小さな1バイト
でレジスタの指定が可能になる(ただし、これは必ずし
もそうなるとは限らないことに注意)。2番目の理由
は、アドレス指定モードを使用すれば、データを格納し
ているアドレスが事前に分からなくてもプログラムやサ
ブルーチンを作成することができるということである。
入力からアドレスを計算してレジスタに格納することが
できる。3番目の理由は、アドレス指定モードを使用す
れば、繰り返し出てくる計算がある場合に、それぞれ別
々の命令を作成しなくても、メモリー参照命令として記
述することができるということである。
【0009】ベース・レジスタは、通常、コンパイラが
局所変数又は配列の先頭を指示するのに使用される。さ
らに、インデックス・レジスタは、配列の要素又は文字
列にアクセスするのに使用される。さらに、インデック
ス・レジスタの値にスケール係数(1、2、4、8な
ど)を乗算することができる。これは、配列や類似の構
造体にアクセスするのに役立つ。このようにして、最後
に、変位を加算すると、最終的な有効アドレスが計算さ
れる。
【0010】メモリーは、1つ又は複数の可変長セグメ
ントに分割することができる。セグメントは、ディスク
にスワップしたり、プログラム間で共用したりすること
ができる。メモリーも1つ又は複数の「ページ」に編成
することができる。セグメンテーションとページングは
お互いに相補的な関係にある。セグメンテーションは、
アプリケーション・プログラマがメモリーを論理モジュ
ールに編成するのに役立つ。一方、ページングは、シス
テム・プログラマがシステムの物理メモリーを管理する
のに役立つ。通常は、セグメンテーション・ユニットを
使って、論理アドレス空間を32ビットのリニアアドレ
ス空間に変換する。次に、ページング・ユニットを使っ
て、このリニアアドレス空間を物理アドレス空間に変換
する。マイクロプロセッサ・チップのアドレス・ピンに
現れるのがこの物理アドレスである。
【0011】
【本発明が解決しようとする課題】アドレス計算を実行
するためにアドレス生成ユニット(AGU)を使用して
いるCPUが多い。AGUは、すべてのセグメント動作
の処理、及びすべての制御レジスタ/テストレジスタに
対するアクセスの制御を担当している。従来は、比較的
小さな幅(たとえば、16ビット)のセグメントを処理
するのに採用されていた。しかし、マイクロプロセッサ
技術の進歩によりセグメントの幅は拡大の一途を辿って
いる。最初は、インテル(商標)8086アーキテクチ
ャで、記述子を構築するのにセグメントセレクタが使用
されていた。次に、インテル(商標)286アーキテク
チャで16ビットのプロテクト・モードが登場し、セレ
クタを使って48ビットの記述子としてメモリーにアク
セスした。最後に、インテル(商標)386アーキテク
チャで32ビットのプロテクト・モードが登場し、セレ
クタを使って64ビットの記述子としてメモリーにアク
セスした。旧ソフトウェアとの下位互換を維持するため
に、このような追加のビットはオペレーティング・シス
テムが別の場所に書き込んでいた。しかし、このように
連続していないセグメントをハードウェアで処理するこ
とは困難であるという問題があった。
【0012】もう一つの問題としては、従来技術である
AGU設計には、セグメント幅が増えるに伴い対応した
バスの幅も広くしなければならないという問題がある。
しかし、バス幅を増やせば、高価であるし、シリコン領
域(ダイのサイズ)を大量に消費することになる。ダイ
のサイズを大きくするということは、一定のウェハから
作成するダイの数が少なくなることを意味する。その結
果、生産コストが高くなる。
【0013】さらに、従来の技術であるAGU設計には
スピードが遅いという問題もある。アドレスを生成する
処理が遅くなる要因の一つには2つの異なる記述子テー
ブルを使用していることが挙げられる。一つのセレクタ
で2つの記述子テーブルの1つに対するオフセットを与
えているのである。したがって、従来のAGUでは、最
初にセレクタを読み込んで、どちらのテーブルにアクセ
スするのかを決定してから、テーブルから記述子値を実
際に読み出すのである。このような方法ではスピードも
遅いし、手続きも複雑になる。
【0014】さらに、次世代のマイクロプロセッサに
は、「プログラム順序に拘束されない」処理が組み込ま
れようとしている。言い換えると、命令は、必ずしもソ
ース・プログラムに記述された順序で実行する必要がな
いのである。ソース・コードも先行して処理されてい
る。このような先行予測処理は、プログラムの進行経路
を推測し、その経路に沿って実行するための技術であ
る。これは、予測に誤りがあれば訂正する方法があるこ
とを暗示している。
【0015】したがって、従来のAGU設計に、プログ
ラム順序に拘束されない処理と先行予測処理を組み込む
必要がある。このようなAGUに下位互換があれば、な
お一層望ましい。このようなAGUが効率を犠牲にしな
いで、幅が限定されているバスを活用し、しかも高速で
柔軟であれば、なお望ましいのである。
【0016】
【課題を解決するための手段】本発明は、コンピュータ
・システム内のマイクロプロセッサを構成するアドレス
生成ユニット(AGU)に関するものである。AGUの
機能の1つは、メモリーに格納されている1つのエント
リに対応するアドレスを生成することである。従来のマ
イクロプロセッサ・アーキテクチャ用に作成されたコン
ピュータ・プログラムとの下位互換性を維持するため
に、アドレスの計算とチェックに使用するベース、リミ
ット、及びセグメント権限値を格納しているセグメント
記述子の一部を別のセクションに格納していた。この方
式は、処理が複雑になるので、ベースとリミットを構成
する部分を再配置して、ベース、リミット、権限値が連
続するようにセグメントを形成する。このようにして、
連続したベース、リミット、権限、及びセレクタビット
をレジスタ・ファイルに格納する。ベースとリミットの
コピーは、制御レジスタに格納し、他のユニットに同時
に配布する。さらに、リセット可能なヌル・ビットを別
のレジスタに格納して、セグメントセレクタがヌルであ
るかどうかを示すようにする。さらに、AGUに機能を
追加して、レジスタ・ファイルの特定のフィールドを選
択し、そのフィールドに対して読み/書き動作を実行で
きるようにする。
【0017】AGUは、2つの異なる記述子テーブル
(ローカル記述子テーブルとグローバル記述子テーブ
ル)からセグメント・ロードをディスパッチすることが
できる。次に、AGUは、この2つのセグメント・ロー
ドの内でディスパッチされなかったものを判定し、その
ロードを取り消す。さらに、AGUは、一時レジスタに
記述子データをロードすることができる。AGUは、こ
の記述子データをチェックしてから、アーキテクチャで
定義されたレジスタにそのデータをロードする。
【0018】
【実施例】本発明の代表的な実施例を示す。図中の同一
要素は同じ参照番号で示す。
【0019】アドレス生成ユニットについて詳しく説明
する。以下の説明では、正確を期するために、レジス
タ、モード、違反、障害などの用語について詳細に規定
することによって、本発明について完全に理解できるよ
うにする。しかし、当業者にとっては、このような詳細
な定義がなくても本発明を実現することができることは
明白である。さらに、公知の構造や装置については、本
発明の曖昧性を避けるためにブロック図で示することに
する。
【0020】図1では、本発明の推奨実施例を実現する
コンピュータ・システムを番号100で示している。コ
ンピュータ・システム100には、情報をやり取りする
ためのバスなどの通信手段101、及び、このバス10
1に接続されている、情報を処理するための処理手段1
02が含まれる。プロセッサ102は、マイクロプロセ
ッサ(これだけに限定されない)などが含まれる。シス
テム100には、ランダム・アクセス・メモリー(RA
M)などの動的記憶装置104(メインメモリーと呼
ぶ)が含まれており、これはバス101に接続されてお
り、プロセッサ102で実行される命令と情報がここに
格納される。メインメモリー104には、プロセッサ1
02が命令を実行しているときに一時変数やその他の中
間情報を格納するのにも使用される。コンピュータ・シ
ステム100には、さらに、読み出し専用メモリー(R
OM)などの静的記憶装置106が含まれており、これ
もバス101と接続されており、プロセッサ102で使
用する静的な情報や命令が格納される。さらに、システ
ム100には、磁気ディスクや光学ディスク及びそれに
対応しているディスク・ドライブのようなデータ記憶装
置107が含まれる。データ記憶装置107は、バス1
01に接続されており、情報や命令を格納している。
【0021】コンピュータ・システム100は、バス1
01を経由して、陰極線管(CRT)や液晶ディスプレ
イ(LCD)のような表示装置121に接続して、情報
をコンピュータ・ユーザに表示することができる。英数
字などのキーをはじめとする英数字入力装置122をバ
ス101に接続すれば、プロセッサ102との間で情報
のやり取りやコマンドの選択をすることができる。さら
に、ユーザー入力装置として、マウス、トラックボー
ル、カーソル方向キーなどのカーソル制御装置123を
バス101に接続すれば、プロセッサ102との間でカ
ーソルの方向やコマンド選択に関する情報をやり取りし
たり、表示装置121上のカーソル動作を制御すること
ができる。さらに、ハードコピー装置124をバス10
1に接続すれば、紙やフィルムなどの媒体に命令やデー
タなどの情報をプリントすることができる。さらに、ス
ピーカやマイクロフォンのような音声記録再生装置12
5をバス101に接続すれば、コンピュータ・システム
100とのインタフェースをとることができる。なお、
システム100及び関連したハードウェアの構成要素は
一部でも全部でも推奨実施例で使用することができる
が、ユーザーの要求に合わせてシステムを任意に構成す
ることが望ましい。
【0022】次に、ブロック図、図2を参照しながら、
本発明の機能を組み込んでいる代表的なプロセッサ10
2について説明する。この代表的なプロセッサ102
は、実行ユニット201、バス・コントローラ202、
データ・キャッシュ・コントローラ203、データ・キ
ャッシュ204、リタイア・ロジック207、命令フェ
ッチ発行ユニット205、及びユニット205に内蔵さ
れている命令キャッシュ206で構成されている。図に
示したように、要素201−206は相互に接続されて
いる。これらの要素は、お互いに協力しながら、パイプ
ライン方式で命令のフェッチ、発行、実行、及び実行結
果の保存を実行する。
【0023】命令のフェッチ発行ユニット205は、外
部のシステム・バスとバス・コントローラ202を経由
して外部メモリーから命令をフェッチする。バス・コン
トローラ202は、プロセッサ102と外部の構成要素
間でデータの転送を管理する。さらに、コントローラ2
02は、キャッシュとの一貫したデータ転送も管理す
る。命令フェッチ発行ユニット205は、実行ユニット
201へ一定の順序に従って命令を発行する。実行ユニ
ット201の基本的な仕事は、加算、減算、論理AND
演算、及び整数の乗算である。これらの命令の中には、
先行してフェッチされて発行されるものもある。実行ユ
ニット201は、整数命令や浮動小数点命令を保持し、
直前の命令の実行結果の依存するオペランドが解決する
と、その命令を実行する。この種の命令には、先行して
フェッチされ発行されている整数命令や浮動小数点命令
が含まれる。同様なやり方で、実行ユニット201は、
命令の実行結果を保持しておいて、リタイア・ロジック
へ転送する。リタイア・ロジック207は、元のソース
・コードで指定されていた永続的なアーキテクチャの状
態にかかわらず、命令の状態を確定する。データ・キャ
ッシュ・コントローラ203は、データ・キャッシュ2
04との間のデータのアクセスを制御する。データ・キ
ャッシュ204は、高速、小型の、ハードウェアが管理
するスクラッチパド・メモリーであり、ロードやストア
では、メインメモリーにアクセスするより短いクロック
・サイクルでアクセスできる。データ・キャッシュ・コ
ントローラ203及びデータ・キャッシュ204は、ロ
ード命令には即座に応答し、必要に応じてデータを転送
する。一方、ストア命令の場合は、リタイア・ロジック
が命令の状態が確定したことを示すまでそのままの状態
になっている。言い換えると、命令は、必ずしも発行さ
れた順序で実行/転送されるわけではない。さらに、先
行して実行/転送される命令もある。いずれにしても、
整数命令、浮動小数点命令、及びロード命令の実行結果
は、バッファに一時格納されてから、順番にリタイア又
はコミットされる。一方、バッファに入れられたストア
命令の場合は、順番にリタイア又はコミットされてか
ら、「バックグラウンド」で実行されるので、メモリー
・システムには都合がよい。先行して、整数命令、浮動
小数点命令、及びロード命令を実行した場合、予測した
分岐が発生しなかったときには、実行結果及びバッファ
ーに入れられたストア命令は破棄される。
【0024】命令フェッチ発行ユニット205は、多く
のコンピュータ・システムに見られるさまざまな命令フ
ェッチ発行要素を代表している。この構成要素と機能に
ついては公知に属することなので、ここでは説明を省略
する。本発明の実施例では、命令フェッチ発行ユニット
205には、命令キャッシュ206を内蔵することが望
ましい。命令キャッシュ206は、実行する命令を保持
しておく高速のローカル・メモリーである。プログラム
がアクセスしようとした命令がキャッシュにないかある
いは削除されていた場合は、ハードウェアが別のキャッ
シュ又はメモリー・ダウンストリームから必要な命令を
フェッチするまで、プロセッサは待たなければならな
い。プログラムの性能を最大化するために次にアクセス
すべき命令キャッシュのエントリを判定することが命令
フェッチ発行ユニット205の仕事になる。本発明の実
施例では、命令キャッシュ206とデータ・キャッシュ
204がメモリー階層の中に存在していることが望まし
い。この階層構造は、小型であるが極めて高速のL1キ
ャッシュで構成する。L1キャッシュに対するアクセス
に失敗した場合は、それより大きいが速度の遅いL2キ
ャッシュにアクセスすることになる。そこでも必要なデ
ータがなかった場合は、L3キャッシュにアクセスする
か、あるいはL3キャッシュがなかった場合はメインメ
モリーへアクセスすることになる。データ・キャッシュ
・コントローラ203はページ障害の処理に使用され
る。さらに、連続したメモリー位置から命令をフェッチ
しなければならないという条件はない。言い換えると、
フェッチする命令が2つのキャッシュにまたがって格納
されていても構わない。しかし、本発明は、命令キャッ
シュの有無にかかわらず実施することができるし、命令
キャッシュとデータ・キャッシュを組み合わせて実施す
ることもできる。命令キャッシュを実装する場合は、ペ
ージ障害を専用のページ障害ハンドラで処理し、命令を
連続したメモリー位置からフェッチするようにすること
ができる。
【0025】本発明の実施例では、アドレス計算の実
行、すべてのセグメント動作の処理、及びすべての制御
/テスト・レジスタへのアクセスをAGUの仕事にする
ことが望ましい。AGUには1つ又は複数のアドレス計
算ブロックがあり、リニアアドレスと実効アドレスの計
算、さらに、セグメント・リミット違反、整列障害、及
びアクセス時間保護のチェックを実行する。AGUに
は、セグメント・ブロックがあり、セグメント・レジス
タ・ファイルの保持及びすべてのセグメント・レジスタ
・ロードの処理を実行し、さらに、セグメント・レジス
タ・ロードに対する保護の有無をチェックする。
【0026】メモリー動作に対してリミット違反やアク
セス時間保護のチェックで問題が発生しなかった場合
は、アドレスがAGUからメモリー・サブシステムへ送
られ、アクセスが実行され、その機能が完了する。その
動作でAGUが障害を検出した場合は、AGUは障害ス
テータスをリタイア・ロジック207に返送し、メモリ
ー・サブシステムの動作を取り消す。セグメント・ロー
ド動作(セグメント・レジスタ・データをロードする処
理)でAGUが障害を検出した場合は、AGUは障害ス
テータスをリタイア・ロジック207に返送する。その
動作でさらにマイクロコードの助けが必要になる場合
は、AGUがベクタを起動して動作の助けを求める。そ
れ以外の場合、動作は成功裏に完了する。詳細は、U.S
Patent No. ________ 米国特許_____号、発明の名
称"Method and Apparatus for loading a Segment Regi
ster in a Microprocessor Capable of Operating In M
ultiple Modes"「多重モードで動作が可能なマイクロプ
ロセッサにセグメント・レジスタをロードする方法と装
置」に記載されており、本発明の継承人に与えられる。
【0027】アドレスを生成するために、AGUは、ベ
ース・アドレス、インデックス(スケールされてから加
算される)、及び変位(セグメント・ベースと加算され
てリニアアドレスが生成される)の形でデータを受け取
る。まだ実行されていないマイクロ命令は、予約ステー
ションという名前の小さなバッファーに保持しておき、
データ依存関係と資源の可用性に従ってディスパッチす
る。制御情報と命令コード(opcode)情報をAG
Uに送るのが予約ステーションの仕事である。一定の実
行モードで、一連のセグメント・レジスタを使用してメ
モリーのアドレス指定を制御する。これらのセグメント
・レジスタには、マイクロコード・シーケンスを経由し
てメモリーからセグメント記述子が明示的にロードされ
る。特定のセグメント・レジスタを使用しているすべて
のメモリー・アクセスは、関連しているセグメント・ベ
ース・アドレスに暗黙に関連付けられる。メモリーの各
セグメントごとにリミットがある。メモリー参照がある
たびにセグメント・レジスタにある権限に基づいて読み
出し/書き込み権があるかどうかがチェックされる。
【0028】本発明の実施例では、セグメント記述子
は、マイクロプロセッサのアーキテクチャが幾世代にも
わたって維持できる形式で格納することが望ましい。こ
の形式を使って、旧アーキテクチャで作成されたソフト
ウェアと下位互換性を維持する。その結果、メモリーに
格納されるこの形式は、AGUのセグメント・レジスタ
・ファイルに記述子を格納するには複雑になりすぎる。
【0029】図3に、下位32ビットの値302及び上
位32ビットの値301で構成される記述子示す。この
記述子にはフィールドが混在している。たとえば、値3
01のビット0−7には、ベースのビット16から23
[23:16]が格納されている。ビット8−15には
アクセス権(AR)が格納されている。値301のビッ
ト16−19にはリミットのビット[19−16]が格
納されている。ビット20−23には、細分度(G)と
データ・サイズ(D)が格納されている。値301のビ
ット24−31には、ベースのビット[31:24]が
格納されている。値302には、リミットのビット[1
5:0]及びベースのビット[15:0]が格納されて
いる。
【0030】本発明では、セグメント記述子をロードし
たときに、フィールドが連続するように工夫している。
特に、値302のビット0−15及び値301のビット
16−19は、スクランブルしないで、非スクランブル
化のコード/データ・セグメント記述子303のビット
0−19になる。同様に、値301のビット0−7及び
ビット24−31は、値302のビット16−31とス
クランブルしないで合成して、セグメント303のビッ
ト24−55を形成する。GビットとDビットは、セグ
メント303のビット20−23に格納する。ARバイ
トは、セグメント303のビット56−63に格納す
る。なお、リミットとベースは、すでに統合されている
ことに注意されたい。
【0031】これで、レジスタ・ファイル303の1つ
のレジスタに、セグメント記述子が連続して格納された
ことになる。このレジスタの個々のフィールドは、マイ
クロコードで読んだり書いたりすることができる。その
ためには、セクションに読み書きするためのuposが
必要になる。これらのコード/データ・セグメント記述
子レジスタには、メモリー・セグメントに対する情報が
格納される。セグメントにアクセスするときに、加算器
がセグメント・ベースを使用してリニアアドレスを計算
する。リミットは、実効アドレスにリミット違反がない
かどうかをチェックするのに使用される。Gビットは、
リミットを必要な細分度に拡張するのに使用される。ア
クセス権(AR)は、セグメントが持っているアクセス
権のタイプを示しており、スタック・セグメントの場合
は、セグメント・リミットの拡張方向を示す。
【0032】本発明の実施例では、インデックス値30
4を使用して、TIビット305で指定されたセグメン
ト記述子テーブルにインデックスを付けることが望まし
い。TIビット305は、ローカル記述子テーブルとグ
ローバル記述子テーブルのどちらを使用するのかを示
す。さらに、要求元特権レベル(RPL)値306は、
ARバイトにある記述子特権レベル(DPL)及び本発
明の特権レベルといっしょに使用されて、ロード時にセ
グメントで特権違反がないかどうかをチェックする。イ
ンデックス304、TIビット305、及びRPL30
6は、組み合わされてセレクタ値307が形成される。
セレクタ307は、関連したセグメント記述子テーブル
に格納され、オフセットとして使用される。さらに、ゼ
ロ検出308は、インデックス304とTIビット30
5が両方ともゼロで、かつプロセッサが保護モードにな
っている場合に、ヌル・ビット309をセットする。そ
れ以外の場合は、ヌル・ビット309はクリアされる。
ヌル・ビット309がセットされた場合は、そのセグメ
ント・レジスタを使用するアクセスはすべてエラーにな
る。なお、セレクタ307とヌル・ビット309は、記
述子303といっしょに格納される(同じレジスタの一
部を共用する)ことに注意されたい。
【0033】記述の各フィールドに読み書きする目的で
定義されているマイクロ命令がある。これには、セレク
タ、アクセス権、記述子特権レベル(DPL)、Gビッ
トとDビット、リミット、及びベースの読み書きする命
令が含まれる。レジスタ・ファイルのエントリ間でセグ
メント全体を転送する目的で定義されているマイクロ命
令もある。このような読み書き命令で入力する直値(im
mediate )データは、セグメント・レジスタ・ファイル
内のどのフィールドに読み書きするのかを示している。
【0034】メモリー・アクセスでは、セグメント・ベ
ースがレジスタ・ファイルから読み出され、セグメント
・ベースにADD関数が実行されてリニアアドレスが得
られる。この読み出しには1クロック・サイクルが必要
になる。無効な命令が検出された場合は、その無効な命
令に対してはレジスタ・ファイルの読み出しは実行され
ない。この機能は、デフォルト・レジスタ・アドレスを
使って実現している。(それに関連したセグメント・レ
ジスタ・エントリはない。)予約ステーションが実アド
レスを送出していない間は、各クロック・サイクルで、
セグメント・レジスタ・ファイル(SRF)エントリに
対応していないアドレス線にすべて「ゼロ」が送出され
る。
【0035】本発明の実施例では、セグメントとセレク
タを含んでいるレジスタ・ファイルは96ビット幅であ
ることが望ましい。しかし、AGUのデータ・パスは3
2ビット幅しかない。これは、レジスタ・ファイルに対
して32ビットの読み書きしか実行できないということ
を意味している。したがって、フィールドに対する読み
書き動作は、レジスタ・ファイルの一定のビットを選択
して読み書きできるように定義してある。この動作でA
GUが受け取る入力の一つに、読み書きの対象となるフ
ィールドを特定する指示子がある。このようなセグメン
ト・レジスタ・ファイル・フィールドには、読み出しセ
レクタフィールド、書き込みセレクタフィールド、読み
出し権フィールド、書き込み権フィールド、読み出しセ
グメント・リミット・フィールド、書き込みセグメント
・リミット・フィールド、読み出しセグメント・ベース
・フィールド、及び書き込みセグメント・ベース・フィ
ールドが含まれる。
【0036】読み出しセレクタフィールド動作は、レジ
スタ・ファイル内にあるセグメント・レジスタのセレク
タフィールド・ビットのデータを読み出すことである。
このビットは、AGUから書き戻しバスへ送出され、書
き戻しデータ有効ビットが設定される。書き戻しバスの
ビット[15:0]の16ビットは右詰めされ、上位1
6ビットは強制的にゼロになる。書き込みセレクタフィ
ールド動作は、レジスタ・ファイルのセレクタフィール
ド・セグメント・レジスタにデータを書き込む動作のこ
とである。ソース2入力の下位16ビットのデータがA
GUに入力される。
【0037】書き込み対象になるセグメント・レジスタ
は、SRFアドレス入力で指示される。ソース2は、予
約ステーションからAGUへ入力されるデータである。
SRFアドレス入力は、4ビットのフィールドであり、
通常は、メモリー・アクセスで使用されるセグメント・
レジスタを示している。
【0038】読み出し権フィールド動作は、記述子のア
クセス権フィールドのデータをG/Dビットフィールド
のデータといっしょに読み出すことである。アーキテク
チャで規定された正しい順序にビットが並ぶように、デ
ータを読み出す順序が変更される。書き込み権フィール
ド動作は、SRFアドレス入力で宛先のセグメント・レ
ジスタ・アドレスで指定されたセグメント記述子のAR
バイト及びG−Dビットのフィールドに書き込むことで
ある。ARバイトはソース2のビット[15:8]、G
-Dビット・フィールドはビット[23:20]に入力
される。記述子の残りのビットはそのままである。
【0039】図4に、セグメント・リミット読み出し動
作を示す。セグメント・リミット・フィールドの読み出
し動作は、セグメント・レジスタ402から20ビット
のリミット値401読み出して、細分度ビット403に
基づいて32ビット値に変換することである。細分度は
1バイトの場合は、20ビットのリミットがゼロに変換
され、上位12ビットに拡張される。細分度が4キロバ
イトであった場合は、シフタ404が20ビットのリミ
ットを左方向へ12ビットだけずらし、上位20ビット
を書き戻しに送出し、下位12ビットにはすべて1を詰
め込む。このように1を詰め込むことは、セグメントの
最終有効ページの各バイトが有効であることを保証する
のに必要になる。リミットがゼロになっている場合は、
セグメントの最終ページにあるバイトにアクセスしよう
とした時にリミット違反が発生することになる。変換さ
れたリミットは、32ビットの書き戻しバス405へ送
出される。リミット・フィールドの書き込み動作は、ソ
ース2から入力を取り出して、そのデータをセグメント
・レジスタ・ファイルの下位20ビットに書き込むこと
である。レジスタの残りの部分はそのままである。
【0040】マイクロコードは、リミットの細分度を変
更するためにARバイト・フィールドの書き込み動作を
使用してGビットを変更する。
【0041】セグメント・ベース・フィールドの読み出
しマイクロ動作は、セグメント・レジスタから32ビッ
トのセグメント・ベースを読み出して、そのデータを書
き戻しバスに送出することである。セグメント・ベース
・フィールドの書き込みマイクロ動作は、セグメント・
レジスタ・ファイルのセグメント・ベース・フィールド
に32ビットのソース2の値を書き込むことである。
【0042】本発明の実施例では、次のマイクロコード
を使用して、図5に記述したプロセスを実現することが
望ましい。 上記で、write_selector(selector_temp) は、一時セレ
クタレジスタの変更を指示するマイクロ命令の修飾子で
ある。ld_descriptor_cond()は、メモリーから64ビッ
トの記述子をロードするマイクロ命令である。しかし、
ロードが実際に実行されるのは、アドレスの下位ビット
がマイクロ命令に関連したセグメントセレクタGDTR
又はLDTRと一致した時だけに限定される。それ以外
の場合は。ロードは取り消され、特別なフラグが出力t
1又はt2に書き込まれる。select.GLOBAL()は、入力t
1とt2について、それぞれに対応しているld_descriptor
_cond マイクロ命令が成功裏に完了したことを示したも
のだけを選択するという条件付きの選択動作である。
【0043】以上の説明で明らかにしたセグメント化ア
ドレスを備えたアドレス生成ユニットについて開示する
ものである。
【図面の簡単な説明】
【図1】本発明の推奨実施例を実現するコンピュータ・
システムを示している。
【図2】本発明の機能を組み込んでいる代表的なプロセ
ッサを示すブロック図である。
【図3】32ビットのコード/データ・セグメントの2
つの記述子を示している。
【図4】セグメント・リミットの読み込み動作を示して
いる。
【符号の説明】
100 コンピュータ・システム 101 バス 201 実行ユニット 202 プロセッサ 205 命令フェッチ発行ユニット
───────────────────────────────────────────────────── フロントページの続き (72)発明者 スコット・ディ・ロジャース アメリカ合衆国 97124 オレゴン州・ヒ ルズボロ・ノースイースト メリンダ コ ート・848 (72)発明者 アンドリュー・エフ・グルー アメリカ合衆国 97124 オレゴン州・ヒ ルズボロ・ノースイースト 21エスティ アヴェニュ・アパートメント24・1038

Claims (6)

    【特許請求の範囲】
  1. 【請求項1】 バスと、 演算機能を実行するために前記バスに接続した実行ユニ
    ットと、 前記バスに接続され、アクセス対象のエントリを特定す
    るフェッチ・ユニットと、 前記バスに接続され、メモリー内の記憶場所から前記エ
    ントリにアクセスする発行ユニットと、 前記バスに接続され、前記エントリに対応したアドレス
    を生成し、かつ、アドレス・セグメントを格納するセグ
    メント・レジスタ・ファイルで構成されたアドレス生成
    ユニットと、を有することを特徴とするプロセッサ。
  2. 【請求項2】 ヌル・セグメントが使用障害を発生する
    命令セットを有する特徴とする請求項1のプロセッサ。
  3. 【請求項3】 デジタル信号を送信するためのバスと、 前記バスに接続され、演算機能を実行する実行手段と、 前記バスに接続され、アクセス対象のエントリを特定す
    るフェッチ手段と、 前記バスに接続され、メモリー手段内の記憶場所から前
    記エントリにアクセスする発行手段と、 前記バスに接続され、前記エントリに対応したアドレス
    を生成し、かつ、アドレス・セグメントを格納するため
    のセグメント・レジスタ手段で構成されたアドレス生成
    手段と、を有することを特徴とする装置。
  4. 【請求項4】 ヌル・セグメントが使用障害を発生する
    命令セットを有する特徴とする請求項3のプロセッサ。
  5. 【請求項5】 バスと、 前記バスに接続され、デジタル・データを格納するメイ
    ンメモリーと、 前記バスに接続され、前記デジタル・データを処理する
    マイクロプロセッサとを有し、前記マイクロプロセッサ
    は、 前記バスに接続され、演算機能を実行する実行ユニット
    と、 前記バスに接続され、アクセス対象のエントリを特定す
    るフェッチ・ユニットと、 前記バスに接続され、メモリー内の記憶場所から前記エ
    ントリにアクセスする発行ユニットと、 前記バスに接続され、前記エントリに対応したアドレス
    を生成し、アドレス・セグメントを格納するためのセグ
    メント・レジスタ・ファイルで構成されたアドレス生成
    ユニットと、を有することを特徴とするコンピュータ・
    システム。
  6. 【請求項6】 ヌル・セグメントが使用障害を発生する
    命令セットを有する特徴とする請求項5のコンピュータ
    ・システム。
JP6337563A 1994-01-04 1994-12-28 プロセッサ及びコンピュータ・システム Pending JPH07210381A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/176,066 US5590297A (en) 1994-01-04 1994-01-04 Address generation unit with segmented addresses in a mircroprocessor
US176066 1994-01-04

Publications (1)

Publication Number Publication Date
JPH07210381A true JPH07210381A (ja) 1995-08-11

Family

ID=22642842

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6337563A Pending JPH07210381A (ja) 1994-01-04 1994-12-28 プロセッサ及びコンピュータ・システム

Country Status (7)

Country Link
US (2) US5590297A (ja)
JP (1) JPH07210381A (ja)
CZ (1) CZ1695A3 (ja)
GB (1) GB2285323B (ja)
HU (1) HUH3807A (ja)
SG (1) SG52278A1 (ja)
SK (1) SK284085B6 (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721857A (en) * 1993-12-30 1998-02-24 Intel Corporation Method and apparatus for saving the effective address of floating point memory operations in an out-of-order microprocessor
US5590297A (en) * 1994-01-04 1996-12-31 Intel Corporation Address generation unit with segmented addresses in a mircroprocessor
US6012135A (en) * 1994-12-01 2000-01-04 Cray Research, Inc. Computer having multiple address ports, each having logical address translation with base and limit memory management
US5655139A (en) * 1995-05-26 1997-08-05 National Semiconductor Corporation Execution unit architecture to support X86 instruction set and X86 segmented addressing
US5961580A (en) * 1996-02-20 1999-10-05 Advanced Micro Devices, Inc. Apparatus and method for efficiently calculating a linear address in a microprocessor
US5835968A (en) * 1996-04-17 1998-11-10 Advanced Micro Devices, Inc. Apparatus for providing memory and register operands concurrently to functional units
US6085302A (en) * 1996-04-17 2000-07-04 Advanced Micro Devices, Inc. Microprocessor having address generation units for efficient generation of memory operation addresses
US5860141A (en) * 1996-12-11 1999-01-12 Ncr Corporation Method and apparatus for enabling physical memory larger than corresponding virtual memory
US6260101B1 (en) * 1997-03-07 2001-07-10 Advanced Micro Devices, Inc. Microcontroller having dedicated hardware for memory address space expansion supporting both static and dynamic memory devices
US6643736B1 (en) * 2000-08-29 2003-11-04 Arm Limited Scratch pad memories
JP4534336B2 (ja) * 2000-10-13 2010-09-01 ソニー株式会社 メモリ装置におけるデータ管理方法
JP4786805B2 (ja) * 2001-02-16 2011-10-05 シャープ株式会社 半導体装置
US7937525B2 (en) * 2004-06-25 2011-05-03 Intel Corporation Method and apparatus for decoding a virtual machine control structure identification
US20070011432A1 (en) * 2005-07-06 2007-01-11 Advanced Micro Devices, Inc. Address generation unit with operand recycling
US8296550B2 (en) * 2005-08-29 2012-10-23 The Invention Science Fund I, Llc Hierarchical register file with operand capture ports
US9176741B2 (en) * 2005-08-29 2015-11-03 Invention Science Fund I, Llc Method and apparatus for segmented sequential storage
US7644258B2 (en) 2005-08-29 2010-01-05 Searete, Llc Hybrid branch predictor using component predictors each having confidence and override signals
US20070083735A1 (en) * 2005-08-29 2007-04-12 Glew Andrew F Hierarchical processor
US8275976B2 (en) * 2005-08-29 2012-09-25 The Invention Science Fund I, Llc Hierarchical instruction scheduler facilitating instruction replay
US9001898B2 (en) 2011-06-10 2015-04-07 Thinklogical, Llc Method and system for serial digital interface (SDI) video data extension
US9489196B2 (en) 2011-12-23 2016-11-08 Intel Corporation Multi-element instruction with different read and write masks
CN104081341B (zh) 2011-12-23 2017-10-27 英特尔公司 用于多维数组中的元素偏移量计算的指令
US9996350B2 (en) 2014-12-27 2018-06-12 Intel Corporation Hardware apparatuses and methods to prefetch a multidimensional block of elements from a multidimensional array

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4050094A (en) * 1976-04-30 1977-09-20 International Business Machines Corporation Translator lookahead controls
JPS6013501B2 (ja) * 1978-09-18 1985-04-08 富士通株式会社 仮想計算機システムにおけるチヤネルアドレス制御方式
US4597044A (en) * 1982-10-14 1986-06-24 Honeywell Information Systems, Inc. Apparatus and method for providing a composite descriptor in a data processing system
US4779187A (en) * 1985-04-10 1988-10-18 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4825358A (en) * 1985-04-10 1989-04-25 Microsoft Corporation Method and operating system for executing programs in a multi-mode microprocessor
US4972338A (en) * 1985-06-13 1990-11-20 Intel Corporation Memory management for microprocessor system
GB2176918B (en) * 1985-06-13 1989-11-01 Intel Corp Memory management for microprocessor system
US5173872A (en) * 1985-06-13 1992-12-22 Intel Corporation Content addressable memory for microprocessor system
US5144551A (en) * 1989-05-19 1992-09-01 Compaq Computer Corporation Computer memory management method utilizing segmentation and protection techniques
US5255379A (en) * 1990-12-28 1993-10-19 Sun Microsystems, Inc. Method for automatically transitioning from V86 mode to protected mode in a computer system using an Intel 80386 or 80486 processor
US5303378A (en) * 1991-05-21 1994-04-12 Compaq Computer Corporation Reentrant protected mode kernel using virtual 8086 mode interrupt service routines
US5274834A (en) * 1991-08-30 1993-12-28 Intel Corporation Transparent system interrupts with integrated extended memory addressing
GB2260629B (en) * 1991-10-16 1995-07-26 Intel Corp A segment descriptor cache for a microprocessor
US5418956A (en) * 1992-02-26 1995-05-23 Microsoft Corporation Method and system for avoiding selector loads
US5590297A (en) * 1994-01-04 1996-12-31 Intel Corporation Address generation unit with segmented addresses in a mircroprocessor

Also Published As

Publication number Publication date
CZ1695A3 (en) 1996-02-14
SK995A3 (en) 1995-08-09
US5590297A (en) 1996-12-31
SG52278A1 (en) 1998-09-28
GB2285323B (en) 1998-06-24
GB9425324D0 (en) 1995-02-15
SK284085B6 (sk) 2004-09-08
US5749084A (en) 1998-05-05
HU9403847D0 (en) 1995-02-28
GB2285323A (en) 1995-07-05
HUH3807A (en) 1997-05-28

Similar Documents

Publication Publication Date Title
JPH07210381A (ja) プロセッサ及びコンピュータ・システム
US6052769A (en) Method and apparatus for moving select non-contiguous bytes of packed data in a single instruction
EP0465321B1 (en) Ensuring data integrity in multiprocessor or pipelined processor system
US5805879A (en) In a pipelined processor, setting a segment access indicator during execution stage using exception handling
US5367705A (en) In-register data manipulation using data shift in reduced instruction set processor
US5454091A (en) Virtual to physical address translation scheme with granularity hint for identifying subsequent pages to be accessed
US6401192B1 (en) Apparatus for software initiated prefetch and method therefor
US4679140A (en) Data processor with control of the significant bit lengths of general purpose registers
US8386750B2 (en) Multiprocessor system having processors with different address widths and method for operating the same
EP0463976A2 (en) Data prefetch instruction in a reduced instruction set processor
EP0463973A2 (en) Branch prediction in high performance processor
US5596735A (en) Circuit and method for addressing segment descriptor tables
US5469551A (en) Method and apparatus for eliminating branches using conditional move instructions
CN108205447B (zh) 使用早期和后期地址以及循环计数寄存器来跟踪架构状态的流引擎
US20070271432A1 (en) Facilitating use of storage access keys to access storage
EP0772819B1 (en) Apparatus and method for efficiently determining addresses for misaligned data stored in memory
US6363474B1 (en) Process switching register replication in a data processing system
US6199156B1 (en) System for explicitly referencing a register for its current content when performing processor context switch
EP1220100B1 (en) Circuit and method for hardware-assisted software flushing of data and instruction caches
EP1220089B1 (en) Method for executing conditional branch instructions in a data processor and corresponding data processor
EP1220092B1 (en) System and method for executing variable latency load operations in a data processor
EP1220088B1 (en) Circuit and method for supporting misaligned accesses in the presence of speculative load instructions
US6922773B2 (en) System and method for encoding constant operands in a wide issue processor
EP1235139B1 (en) System and method for supporting precise exceptions in a data processor having a clustered architecture
JP2535086B2 (ja) リング削減ロジック装置