JPH07120280B2 - アドレス生成モードの切替方法 - Google Patents
アドレス生成モードの切替方法Info
- Publication number
- JPH07120280B2 JPH07120280B2 JP4034842A JP3484292A JPH07120280B2 JP H07120280 B2 JPH07120280 B2 JP H07120280B2 JP 4034842 A JP4034842 A JP 4034842A JP 3484292 A JP3484292 A JP 3484292A JP H07120280 B2 JPH07120280 B2 JP H07120280B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address generation
- address
- switching
- mode
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Advance Control (AREA)
Description
【0001】
【産業上の利用分野】本発明は、データ処理システムに
係り、更に詳しくは、複数のアドレス生成モードを有す
るCPUを備えたデータ処理システムにおける前記アド
レス生成モードの切替方法に関する。
係り、更に詳しくは、複数のアドレス生成モードを有す
るCPUを備えたデータ処理システムにおける前記アド
レス生成モードの切替方法に関する。
【0002】
【従来の技術】パーソナル・コンピュータ等のデータ処
理システムのCPUには、複数のアドレス生成モード
(アドレス指定モード)を備えたものがある。例えば、
インテル社の386(インテル社の商標)と称されるC
PUはリアル・モードと呼ばれるアドレス生成モードと
プロテクト・モードと呼ばれるアドレス生成モードとを
有し、更に、プロテクト・モードにはページング機能を
利用するモード(ページング・プロテクト・モード)と
利用しないモードとがある。リアル・モードでは、CS
(コード・セレクタ)レジスタの値が左に4ビットだけ
シフトされた値がIP(インストラクション・ポイン
タ)レジスタの値に加算されて物理アドレスが生成され
る。プロテクト・モードでは、CSの値はセグメント記
述子テーブル中のセグメント記述子を指定するポインタ
として使用される。セグメント記述子テーブルはシステ
ム・メモリ内に形成される。CSにより指定されたセグ
メント記述子中に含まれるベース・アドレスがIPの値
に加算されて物理アドレスが生成される。ページング機
能はプロテクト・モードでのみ動作する。ページ変換で
は、ページ変換する前のアドレス(リニア・アドレス)
を、ページテーブル、及びそのページテーブル中のオフ
セットを指定して物理アドレスに変換する。
理システムのCPUには、複数のアドレス生成モード
(アドレス指定モード)を備えたものがある。例えば、
インテル社の386(インテル社の商標)と称されるC
PUはリアル・モードと呼ばれるアドレス生成モードと
プロテクト・モードと呼ばれるアドレス生成モードとを
有し、更に、プロテクト・モードにはページング機能を
利用するモード(ページング・プロテクト・モード)と
利用しないモードとがある。リアル・モードでは、CS
(コード・セレクタ)レジスタの値が左に4ビットだけ
シフトされた値がIP(インストラクション・ポイン
タ)レジスタの値に加算されて物理アドレスが生成され
る。プロテクト・モードでは、CSの値はセグメント記
述子テーブル中のセグメント記述子を指定するポインタ
として使用される。セグメント記述子テーブルはシステ
ム・メモリ内に形成される。CSにより指定されたセグ
メント記述子中に含まれるベース・アドレスがIPの値
に加算されて物理アドレスが生成される。ページング機
能はプロテクト・モードでのみ動作する。ページ変換で
は、ページ変換する前のアドレス(リニア・アドレス)
を、ページテーブル、及びそのページテーブル中のオフ
セットを指定して物理アドレスに変換する。
【0003】図3には386CPUの概略構成が示され
ている。図中、386CPU10は6つの機能ユニット
から構成されている。バス・インターフェース・ユニッ
ト1はCPU内部と外部とのインターフェースを担当
し、命令プリフェッチ・ユニット2及び実行ユニット3
からのフェッチ要求を受付ける。命令プリフェッチ・ユ
ニット2は命令の先読みを実行する。命令プリフェッチ
・ユニット2は、バス・インターフェース・ユニット1
がバス・サイクルに入っていないときに、バス・インタ
ーフェース・ユニット1を使って命令をフェッチする。
先読みされた命令は16バイト長のプリフェッチ・キュ
ー2Aに蓄えられ、実行ユニット3による処理を待つ。
実行ユニット3による命令実行に伴うデータ転送に比べ
て、プリフェッチのバス・アクセスの優先度は低いの
で、プリフェッチ機能を有していても命令の実行が遅れ
ることはない。データ転送がない場合は、プリフェッチ
・キュー2Aが先読みした命令で満たされていなけれ
ば、命令プリフェッチ・ユニット2はバスサイクルを利
用してプリフェッチを行うが、プリフェッチ・キュー2
Aが先読みした命令で満たされていればCPU10はア
イドル状態になる。
ている。図中、386CPU10は6つの機能ユニット
から構成されている。バス・インターフェース・ユニッ
ト1はCPU内部と外部とのインターフェースを担当
し、命令プリフェッチ・ユニット2及び実行ユニット3
からのフェッチ要求を受付ける。命令プリフェッチ・ユ
ニット2は命令の先読みを実行する。命令プリフェッチ
・ユニット2は、バス・インターフェース・ユニット1
がバス・サイクルに入っていないときに、バス・インタ
ーフェース・ユニット1を使って命令をフェッチする。
先読みされた命令は16バイト長のプリフェッチ・キュ
ー2Aに蓄えられ、実行ユニット3による処理を待つ。
実行ユニット3による命令実行に伴うデータ転送に比べ
て、プリフェッチのバス・アクセスの優先度は低いの
で、プリフェッチ機能を有していても命令の実行が遅れ
ることはない。データ転送がない場合は、プリフェッチ
・キュー2Aが先読みした命令で満たされていなけれ
ば、命令プリフェッチ・ユニット2はバスサイクルを利
用してプリフェッチを行うが、プリフェッチ・キュー2
Aが先読みした命令で満たされていればCPU10はア
イドル状態になる。
【0004】命令デコード・ユニット4はプリフェッチ
・キュー2Aから命令を取り出してマイクロコードに変
換即ちデコードする。デコードした命令は命令キュー4
Aに蓄えられ、実行ユニット3による処理を待つ。命令
キュー4Aには3つまでの命令が蓄えられる。実行ユニ
ット3は命令キュー4Aの中の命令を実行する。セグメ
ンテーション・ユニット5は実行ユニット3の指示に従
って、CS(コード・セレクタ)とIP(インストラク
ション・ポインタ)の内容から成る論理アドレスを32
ビットのリニア・アドレスに変換する。CSとIPは、
実行ユニット3内のレジスタ群3Aの一部である。ペー
ジング・ユニット6は、ページング機能が有効なとき
は、リニア・アドレスを物理アドレスに変換するが、ペ
ージング機能が無効なときは、リニア・アドレスと物理
アドレスとは同じなので変換の必要がない。ページング
・ユニット6は物理アドレスをバス・インターフェース
・ユニット1に引き渡す。
・キュー2Aから命令を取り出してマイクロコードに変
換即ちデコードする。デコードした命令は命令キュー4
Aに蓄えられ、実行ユニット3による処理を待つ。命令
キュー4Aには3つまでの命令が蓄えられる。実行ユニ
ット3は命令キュー4Aの中の命令を実行する。セグメ
ンテーション・ユニット5は実行ユニット3の指示に従
って、CS(コード・セレクタ)とIP(インストラク
ション・ポインタ)の内容から成る論理アドレスを32
ビットのリニア・アドレスに変換する。CSとIPは、
実行ユニット3内のレジスタ群3Aの一部である。ペー
ジング・ユニット6は、ページング機能が有効なとき
は、リニア・アドレスを物理アドレスに変換するが、ペ
ージング機能が無効なときは、リニア・アドレスと物理
アドレスとは同じなので変換の必要がない。ページング
・ユニット6は物理アドレスをバス・インターフェース
・ユニット1に引き渡す。
【0005】このようなCPU10において、リアル・
モードからページング・プロテクト・モードに移行する
ためには次のような手続きを要する。即ち、図4に示さ
れるように、第1の手続きとしてGDTR(グローバル
・ディスクリプション・テーブル・レジスタ)を設定す
る。これはGDT(グローバル・ディスクリプション・
テーブル)へのポインタをGDTRにセットすることで
ある。第2の手続きとしてCR3(制御レジスタの1
つ)を設定する。これはページ変換テーブルへのポイン
タをCR3に設定することである。第3の手続きとして
CR0(制御レジスタの1つ)を設定する。これは、図
5に示されるように、CR0レジスタのPEビットとP
Gビットの両方をイネーブルすることである。第4の手
続きとしてCSとIPを有効な値に設定する。これはJ
MP(無条件ジャンプ)命令によりプリフェッチ・キュ
ー2Aをフラッシュし、CSとIPを有効な値に設定す
ることである。このような手続きを実行する一連の命令
は図6のようである。
モードからページング・プロテクト・モードに移行する
ためには次のような手続きを要する。即ち、図4に示さ
れるように、第1の手続きとしてGDTR(グローバル
・ディスクリプション・テーブル・レジスタ)を設定す
る。これはGDT(グローバル・ディスクリプション・
テーブル)へのポインタをGDTRにセットすることで
ある。第2の手続きとしてCR3(制御レジスタの1
つ)を設定する。これはページ変換テーブルへのポイン
タをCR3に設定することである。第3の手続きとして
CR0(制御レジスタの1つ)を設定する。これは、図
5に示されるように、CR0レジスタのPEビットとP
Gビットの両方をイネーブルすることである。第4の手
続きとしてCSとIPを有効な値に設定する。これはJ
MP(無条件ジャンプ)命令によりプリフェッチ・キュ
ー2Aをフラッシュし、CSとIPを有効な値に設定す
ることである。このような手続きを実行する一連の命令
は図6のようである。
【0006】図6において、「LGDT メモリ・アド
レス」は、GDTへのポインタをGDTRに書き込むた
めの命令である。「MOV EAX,メモリ・アドレ
ス」及び、これに続く「MOV CR3,EAX」は、
CR3レジスタに設定すべき値をメモリからEAXレジ
スタに一旦移した後にCR3レジスタに転送してCR3
レジスタを設定するための命令である。「MOV EA
X,メモリ・アドレス」及び、これに続く「MOV C
R0,EAX」は、CR3レジスタに設定すべき値をメ
モリからEAXレジスタに一旦移した後にCR0レジス
タに転送してCR0レジスタを設定するための命令であ
る。この命令により、CR0レジスタのPEビットとP
Gビットの両方をイネーブルすると、アドレス生成モー
ドがページング・プロテクト・モード以外のモードから
ページング・プロテクト・モードに移行する。尚、CR
0レジスタやCR3レジスタ等はレジスタ群3Aの一部
である。
レス」は、GDTへのポインタをGDTRに書き込むた
めの命令である。「MOV EAX,メモリ・アドレ
ス」及び、これに続く「MOV CR3,EAX」は、
CR3レジスタに設定すべき値をメモリからEAXレジ
スタに一旦移した後にCR3レジスタに転送してCR3
レジスタを設定するための命令である。「MOV EA
X,メモリ・アドレス」及び、これに続く「MOV C
R0,EAX」は、CR3レジスタに設定すべき値をメ
モリからEAXレジスタに一旦移した後にCR0レジス
タに転送してCR0レジスタを設定するための命令であ
る。この命令により、CR0レジスタのPEビットとP
Gビットの両方をイネーブルすると、アドレス生成モー
ドがページング・プロテクト・モード以外のモードから
ページング・プロテクト・モードに移行する。尚、CR
0レジスタやCR3レジスタ等はレジスタ群3Aの一部
である。
【0007】第4の手続きとしてCSとIPを有効な値
に設定する。「JMP オフセット値,セレクタ値」
は、プリフェッチ・キュー2Aをフラッシュし、CSと
IPを有効な値に設定する。このようなアドレス生成モ
ードの切替え手続きでは、CR0レジスタのPEビット
とPGビットの両方をイネーブルしただけではアドレス
生成モードの切替え手続きが完了したことにはならず、
その次の「JMP オフセット値,セレクタ値」を正し
く実行してアドレス生成モードの切替え手続きが完了す
ることになる。
に設定する。「JMP オフセット値,セレクタ値」
は、プリフェッチ・キュー2Aをフラッシュし、CSと
IPを有効な値に設定する。このようなアドレス生成モ
ードの切替え手続きでは、CR0レジスタのPEビット
とPGビットの両方をイネーブルしただけではアドレス
生成モードの切替え手続きが完了したことにはならず、
その次の「JMP オフセット値,セレクタ値」を正し
く実行してアドレス生成モードの切替え手続きが完了す
ることになる。
【0008】ところで、このようなアドレス生成モード
の切替えを正常に行うには、次のような2つの条件の何
れもが満たされていることが必要であった。即ち、
(a)リニア・アドレスと物理アドレスとが一致してい
る。(b)リニア・アドレスのページが存在している
(実メモリ上にフェッチしようとするアドレスが存在し
ている。)。OS(オペレーティング・システム)のよ
うにメモリ管理を行うプログラムにとっては、これらの
条件を満足させることが可能であっても、サスペンド/
レジューム機構を司どるデバイス・ドライバ・プログラ
ムのようにメモリ管理を行わないプログラムにとって
は、これらの条件を満足させることは出来ない。
の切替えを正常に行うには、次のような2つの条件の何
れもが満たされていることが必要であった。即ち、
(a)リニア・アドレスと物理アドレスとが一致してい
る。(b)リニア・アドレスのページが存在している
(実メモリ上にフェッチしようとするアドレスが存在し
ている。)。OS(オペレーティング・システム)のよ
うにメモリ管理を行うプログラムにとっては、これらの
条件を満足させることが可能であっても、サスペンド/
レジューム機構を司どるデバイス・ドライバ・プログラ
ムのようにメモリ管理を行わないプログラムにとって
は、これらの条件を満足させることは出来ない。
【0009】これら(a)、(b)の条件が満足されて
いないと、アドレス生成モードの切替えに際してシステ
ムが正常に動作しなくなるという問題を生じさせる場合
があった。このような問題は、アドレス生成モードの切
替えを実行する命令、上の例では、「MOV CR0,
EAX」をCPUが実行した後に、次の命令、上の例で
は、「JMP オフセット値,セレクタ値」をCPUが
プリフェッチしようとする場合に生じ得ることが分かっ
た。別言すれば、アドレス生成モードの切替えを実行す
る命令(「MOV CR0,EAX」)をCPUが実行
する際に、次の命令(「JMP オフセット値,セレク
タ値」)が既にCPUにプリフェッチ済みの場合は、こ
のような問題は生じないことが分かった。
いないと、アドレス生成モードの切替えに際してシステ
ムが正常に動作しなくなるという問題を生じさせる場合
があった。このような問題は、アドレス生成モードの切
替えを実行する命令、上の例では、「MOV CR0,
EAX」をCPUが実行した後に、次の命令、上の例で
は、「JMP オフセット値,セレクタ値」をCPUが
プリフェッチしようとする場合に生じ得ることが分かっ
た。別言すれば、アドレス生成モードの切替えを実行す
る命令(「MOV CR0,EAX」)をCPUが実行
する際に、次の命令(「JMP オフセット値,セレク
タ値」)が既にCPUにプリフェッチ済みの場合は、こ
のような問題は生じないことが分かった。
【0010】プリフェッチ・アドレスは基本的にはCS
とIPの現在値に基づいて算出されると考えられるが、
CSとIPの現在値が同じであっても、アドレス生成モ
ードが異なれば、論理アドレスから物理アドレスの生成
機構が異なるので、プリフェッチ・アドレス(プリフェ
ッチするアドレス即ち先読みする命令が格納されている
メモリ・アドレス)は異なることになる。そのため、
「MOV CR0,EAX」の実行によりモードが切替
わった後は、CSとIPから算出されるプリフェッチ・
アドレスが、モードの切替え前の場合の同じCSとIP
から算出されるプリフェッチ・アドレスとは異なった値
になってしまう。その結果、例えば、誤ったアドレスに
制御が移ってシステムがハングしたり、或は算出したア
ドレスに対応するページが存在しない場合は、システム
が誤動作したり停止したりすることになる。
とIPの現在値に基づいて算出されると考えられるが、
CSとIPの現在値が同じであっても、アドレス生成モ
ードが異なれば、論理アドレスから物理アドレスの生成
機構が異なるので、プリフェッチ・アドレス(プリフェ
ッチするアドレス即ち先読みする命令が格納されている
メモリ・アドレス)は異なることになる。そのため、
「MOV CR0,EAX」の実行によりモードが切替
わった後は、CSとIPから算出されるプリフェッチ・
アドレスが、モードの切替え前の場合の同じCSとIP
から算出されるプリフェッチ・アドレスとは異なった値
になってしまう。その結果、例えば、誤ったアドレスに
制御が移ってシステムがハングしたり、或は算出したア
ドレスに対応するページが存在しない場合は、システム
が誤動作したり停止したりすることになる。
【0011】また、バッテリー駆動のノートブック型の
パーソナル・コンピュータ等のデータ処理システムで
は、サスペンド/レジューム機構が備えられていること
が通常であるが、前出の386CPU等では、プロテク
ト・モードでシステムを稼働中にサスペンド状態になっ
ても、386CPU等への電源供給が一旦オフした後の
レジューム時にはリアル・モードになっている。そこ
で、サスペンド/レジューム機構を司どるデバイス・ド
ライバ・プログラムによって、レジュームの度にリアル
・モードからプロテクト・モードに切替えなければなら
ないので、前述のような問題の解決が特に望まれること
になる。
パーソナル・コンピュータ等のデータ処理システムで
は、サスペンド/レジューム機構が備えられていること
が通常であるが、前出の386CPU等では、プロテク
ト・モードでシステムを稼働中にサスペンド状態になっ
ても、386CPU等への電源供給が一旦オフした後の
レジューム時にはリアル・モードになっている。そこ
で、サスペンド/レジューム機構を司どるデバイス・ド
ライバ・プログラムによって、レジュームの度にリアル
・モードからプロテクト・モードに切替えなければなら
ないので、前述のような問題の解決が特に望まれること
になる。
【0012】
【解決しようとする問題点】本発明の目的は、複数のア
ドレス生成モードを有するCPUを備えたデータ処理シ
ステムにおいて、前記アドレス生成モードの切替えを正
常に行えるようにすることである。
ドレス生成モードを有するCPUを備えたデータ処理シ
ステムにおいて、前記アドレス生成モードの切替えを正
常に行えるようにすることである。
【0013】
【課題を解決するための手段】前記目的を達成するた
め、本発明に係るアドレス生成モードの切替方法は、ア
ドレス生成モードの切替えのための命令の実行の次に実
行する命令が、アドレス生成モードの切替えのための命
令を実行する際に、先読みされて前記プリフェッチ・キ
ューに保持されているようにした。こうして、モードが
切替わった直後に実行すべき命令の代わりに誤った命令
をプリフェッチして実行してしまったり、誤ったアドレ
スに制御を移してしまうことのないようにした。
め、本発明に係るアドレス生成モードの切替方法は、ア
ドレス生成モードの切替えのための命令の実行の次に実
行する命令が、アドレス生成モードの切替えのための命
令を実行する際に、先読みされて前記プリフェッチ・キ
ューに保持されているようにした。こうして、モードが
切替わった直後に実行すべき命令の代わりに誤った命令
をプリフェッチして実行してしまったり、誤ったアドレ
スに制御を移してしまうことのないようにした。
【0014】また、本発明に係るデータ処理システム
は、複数のアドレス生成モードを有するアドレス生成機
構及び先読みした命令を蓄えるプリフェッチ・キューを
備えたCPUと、前記CPUにより実行される命令を保
持するメモリと、有しており、アドレス生成モードの切
替えのための命令よりも先にプリフェッチされる前記メ
モリ内の記憶場所に、アドレス生成モードの切替えのた
めの命令の次に実行する命令が先読みされて前記プリフ
ェッチ・キュー内に保持されることを許容するような一
連の命令を格納するようにした。
は、複数のアドレス生成モードを有するアドレス生成機
構及び先読みした命令を蓄えるプリフェッチ・キューを
備えたCPUと、前記CPUにより実行される命令を保
持するメモリと、有しており、アドレス生成モードの切
替えのための命令よりも先にプリフェッチされる前記メ
モリ内の記憶場所に、アドレス生成モードの切替えのた
めの命令の次に実行する命令が先読みされて前記プリフ
ェッチ・キュー内に保持されることを許容するような一
連の命令を格納するようにした。
【0015】
【実施例】以下、本発明の実施例を図面に基づいて説明
する。図1には本発明に係るアドレス生成モードの切替
方法の一実施例が示されている。図1の手続きと図4の
手続きとを比較すると、図1中の手続き11、12、1
5、及び16は図4中の手続き1、2、3、及び4の夫
々と同じである。即ち、本実施例は、図4中の手続き4
の直前に手続き13と手続き14とが新たに加わったも
のである。手続き13はプリフェッチ・キュー2Aをフ
ラッシュさせるための手続きである。プリフェッチ・キ
ュー2Aをフラッシュさせるためには、ジャンプ命令や
コール命令のように、それまではメモリ20の連続する
データ格納場所を順次アクセスしていたのを、それまで
とは不連続のデータ格納場所にアクセスするようにする
命令である。手続き14はプリフェッチの進行を確保す
るための手続きである。プリフェッチ即ち命令の先読
は、命令プリフェッチ・ユニット2により、バス・イン
タフェース・ユニット1がバス・サイクルに入っていな
いときに行われる。そこで、手続き14では、バス・ア
クセスを伴わない命令を実行し、その間にプリフェッチ
・キュー2Aが命令で満たされるような時間的余裕を命
令プリフェッチ・ユニット2に与えるのである。
する。図1には本発明に係るアドレス生成モードの切替
方法の一実施例が示されている。図1の手続きと図4の
手続きとを比較すると、図1中の手続き11、12、1
5、及び16は図4中の手続き1、2、3、及び4の夫
々と同じである。即ち、本実施例は、図4中の手続き4
の直前に手続き13と手続き14とが新たに加わったも
のである。手続き13はプリフェッチ・キュー2Aをフ
ラッシュさせるための手続きである。プリフェッチ・キ
ュー2Aをフラッシュさせるためには、ジャンプ命令や
コール命令のように、それまではメモリ20の連続する
データ格納場所を順次アクセスしていたのを、それまで
とは不連続のデータ格納場所にアクセスするようにする
命令である。手続き14はプリフェッチの進行を確保す
るための手続きである。プリフェッチ即ち命令の先読
は、命令プリフェッチ・ユニット2により、バス・イン
タフェース・ユニット1がバス・サイクルに入っていな
いときに行われる。そこで、手続き14では、バス・ア
クセスを伴わない命令を実行し、その間にプリフェッチ
・キュー2Aが命令で満たされるような時間的余裕を命
令プリフェッチ・ユニット2に与えるのである。
【0016】図2には本発明に係るデータ処理システム
の一実施例の概略構成が示されているが、前述の従来例
と同様の部分は同一の符号を用いて説明を省略または簡
略にする。図2において、データ処理システムはマイク
ロプロセッサ(CPU)10とメモリ20はバス30を
介して接続されている。CPU10のアドレス生成機構
12はセグメンテーション・ユニット5とページング・
ユニット6とから構成されている。
の一実施例の概略構成が示されているが、前述の従来例
と同様の部分は同一の符号を用いて説明を省略または簡
略にする。図2において、データ処理システムはマイク
ロプロセッサ(CPU)10とメモリ20はバス30を
介して接続されている。CPU10のアドレス生成機構
12はセグメンテーション・ユニット5とページング・
ユニット6とから構成されている。
【0017】メモリ20内の一連の命令と図6の一連の
命令とを比較すると、メモリ20内の一連の命令は、図
6の一連の命令中の「MOV CR0,EAX」の直前
に、以下のような命令を加えたものである。 JMP $+2 MOV EDX,DR0 MOV DR0,EDX
命令とを比較すると、メモリ20内の一連の命令は、図
6の一連の命令中の「MOV CR0,EAX」の直前
に、以下のような命令を加えたものである。 JMP $+2 MOV EDX,DR0 MOV DR0,EDX
【0018】「JMP $+2」は、図1の手続き13
を実行するための命令の一例である。この命令はIPレ
ジスタの値を2バイト増加させる命令である。「JMP
$+2」自体が2バイトの大きさなので、「JMP
$+2」を実行してもCPU10のメモリ・アクセスが
次の命令の「MOV EDX,DR0」の格納場所に移
るだけである。「JMP $+2」を実行することによ
り、プリフェッチ・キュー2Aがフラッシュされること
がここでの目的である。
を実行するための命令の一例である。この命令はIPレ
ジスタの値を2バイト増加させる命令である。「JMP
$+2」自体が2バイトの大きさなので、「JMP
$+2」を実行してもCPU10のメモリ・アクセスが
次の命令の「MOV EDX,DR0」の格納場所に移
るだけである。「JMP $+2」を実行することによ
り、プリフェッチ・キュー2Aがフラッシュされること
がここでの目的である。
【0019】次の「MOV EDX,DR0」とその次
の「MOV DR0,EDX」は、図1の手続き14を
実行するための命令の一例である。「MOV EDX,
DR0」はEDXレジスタにDR0レジスタの内容を転
送させるレジスタ間転送命令であり、その次の「MOV
DR0,EDX」はDR0レジスタにEDXレジスタ
の内容を転送させるレジスタ間転送命令である。従っ
て、「MOV EDX,DR0」とその次の「MOV
DR0,EDX」の実行により、DR0レジスタの内容
がEDXレジスタに一旦転送された後にDR0レジスタ
に戻されることになる。このような命令の実行はバス3
0へのアクセスを伴わない。しかも、このような命令は
実行に比較的時間を要する。そのため、このような命令
を実行している最中に命令プリフェッチ・ユニット2は
命令の先読みを行ってプリフェッチ・キュー2Aに命令
を蓄えることができる。
の「MOV DR0,EDX」は、図1の手続き14を
実行するための命令の一例である。「MOV EDX,
DR0」はEDXレジスタにDR0レジスタの内容を転
送させるレジスタ間転送命令であり、その次の「MOV
DR0,EDX」はDR0レジスタにEDXレジスタ
の内容を転送させるレジスタ間転送命令である。従っ
て、「MOV EDX,DR0」とその次の「MOV
DR0,EDX」の実行により、DR0レジスタの内容
がEDXレジスタに一旦転送された後にDR0レジスタ
に戻されることになる。このような命令の実行はバス3
0へのアクセスを伴わない。しかも、このような命令は
実行に比較的時間を要する。そのため、このような命令
を実行している最中に命令プリフェッチ・ユニット2は
命令の先読みを行ってプリフェッチ・キュー2Aに命令
を蓄えることができる。
【0020】「MOV EDX,DR0」と「MOV
DR0,EDX」の命令の実行の直前には「JMP $
+2」を実行してプリフェッチ・キュー2Aをフラッシ
ュさせている。従って、プリフェッチ・キュー2Aのサ
イズ(深さ)を考慮すると、「MOV DR0,ED
X」の次の格納場所に記憶されている「JMP オフセ
ット値,セレクタ値」は、「MOV EDX,DR0」
と「MOV DR0,EDX」の命令の実行の最中に、
確実に先読みされてプリフェッチ・キュー2A内に蓄積
されることになる。
DR0,EDX」の命令の実行の直前には「JMP $
+2」を実行してプリフェッチ・キュー2Aをフラッシ
ュさせている。従って、プリフェッチ・キュー2Aのサ
イズ(深さ)を考慮すると、「MOV DR0,ED
X」の次の格納場所に記憶されている「JMP オフセ
ット値,セレクタ値」は、「MOV EDX,DR0」
と「MOV DR0,EDX」の命令の実行の最中に、
確実に先読みされてプリフェッチ・キュー2A内に蓄積
されることになる。
【0021】このような本実施例によれば、モード切替
のための命令(「MOV CR0,EAX」)の実行時
には、その次に実行すべき命令(「JMP オフセット
値,セレクタ値」)がプリフェッチ・キュー2A内に既
に取り込まれているので、モードの直後に誤ったアドレ
スに制御が移ってシステムがハングしたり、或は算出し
たアドレスに対応するページが存在しない場合にシステ
ムが誤動作したり停止したりすることがない。
のための命令(「MOV CR0,EAX」)の実行時
には、その次に実行すべき命令(「JMP オフセット
値,セレクタ値」)がプリフェッチ・キュー2A内に既
に取り込まれているので、モードの直後に誤ったアドレ
スに制御が移ってシステムがハングしたり、或は算出し
たアドレスに対応するページが存在しない場合にシステ
ムが誤動作したり停止したりすることがない。
【0022】また、前述の(a)及び(b)の条件が満
足されなくともモード切替を正常に行わせることができ
る。従って、OSの働きに依存することなく、モード切
替を正常に行わせることができる。更に、サスペンド/
レジューム機構が備えられ且つレジュームの度にリアル
・モードからプロテクト・モードへの切替えが必要なデ
ータ処理システムでは、レジューム機能を誤りなく実行
できるという効果がある。
足されなくともモード切替を正常に行わせることができ
る。従って、OSの働きに依存することなく、モード切
替を正常に行わせることができる。更に、サスペンド/
レジューム機構が備えられ且つレジュームの度にリアル
・モードからプロテクト・モードへの切替えが必要なデ
ータ処理システムでは、レジューム機能を誤りなく実行
できるという効果がある。
【0023】尚、前記実施例では、プリフェッチ・キュ
ーをフラッシュさせる命令としてJMP(無条件ジャン
プ命令)を利用したが、無条件ジャンプ命令以外のジャ
ンプ命令や、ジャンプ命令以外の例えばCALL(コー
ル命令)を利用してもよく、要するに、プリフェッチ・
キューをフラッシュさせる種々の命令から選択できる。
尚、プリフェッチ・キューをフラッシュさせる命令は一
般に、非連続的なメモリ・アドレスに制御を移すような
命令である。
ーをフラッシュさせる命令としてJMP(無条件ジャン
プ命令)を利用したが、無条件ジャンプ命令以外のジャ
ンプ命令や、ジャンプ命令以外の例えばCALL(コー
ル命令)を利用してもよく、要するに、プリフェッチ・
キューをフラッシュさせる種々の命令から選択できる。
尚、プリフェッチ・キューをフラッシュさせる命令は一
般に、非連続的なメモリ・アドレスに制御を移すような
命令である。
【0024】また、前記実施例ではDR0レジスタとE
DXレジスタとの間のレジスタ間転送を実行している最
中に、プリフェッチ・キュー内に先読みされた命令が保
持されるようになっていたが、前記以外のレジスタ間転
送、或はレジスタ間以外の命令であってプリフェッチの
妨げとならないような命令を実行することにより、プリ
フェッチ・キュー内への先読みされた命令の保持が確実
に行われるものであってもよい。
DXレジスタとの間のレジスタ間転送を実行している最
中に、プリフェッチ・キュー内に先読みされた命令が保
持されるようになっていたが、前記以外のレジスタ間転
送、或はレジスタ間以外の命令であってプリフェッチの
妨げとならないような命令を実行することにより、プリ
フェッチ・キュー内への先読みされた命令の保持が確実
に行われるものであってもよい。
【0025】
【発明の効果】上述のように本発明によれば、複数のア
ドレス生成モードを有するCPUを備えたデータ処理シ
ステムにおいて、前記アドレス生成モードの切替えを正
常に行うことができる。
ドレス生成モードを有するCPUを備えたデータ処理シ
ステムにおいて、前記アドレス生成モードの切替えを正
常に行うことができる。
【図1】本発明に係るデータ処理システムのアドレス生
成モードの切替え方法の一実施例の手続きを示す流れ図
である。
成モードの切替え方法の一実施例の手続きを示す流れ図
である。
【図2】前記実施例の手続きを実行する一連の命令の一
例を示す図である。
例を示す図である。
【図3】複数のアドレス生成機構を有するCPUの一例
の構造を示すブロック図である。
の構造を示すブロック図である。
【図4】従来のアドレス生成モードの切替え方法の一例
の手続きを示す流れ図である。
の手続きを示す流れ図である。
【図5】CPUのCR0レジスタの構成を示すブロック
図である。
図である。
【図6】前記従来例の手続きを実行する一連の命令の一
例を示す図である。
例を示す図である。
2 命令プリフェッチ・ユニット 2A プリフェッチ・キュー 10 マイロクプロセッサ(CPU) 12 アドレス生成機構 20 メモリ 30 バス
フロントページの続き (72)発明者 向山 秀一 神奈川県大和市下鶴間1623番地14 日本ア イ・ビー・エム株式会社 大和事業所内 (56)参考文献 特開 平1−291327(JP,A)
Claims (2)
- 【請求項1】複数のアドレス生成モードを有するアドレ
ス生成機構及び先読みした命令を蓄えるプリフェッチ・
キューを備えたCPUと、前記CPUにより実行される
命令を保持するメモリとを有するデータ処理システムに
おいて、前記アドレス生成モードを切替える方法であっ
て、アドレス生成モードの切替えのための命令よりも先にプ
リフェッチされる前記メモリ内の記憶場所に、当該アド
レス生成モードの切替えのための命令の次に実行される
命令を先読みするための一連の命令が格納されており、 前記一連の命令を、当該 アドレス生成モードの切替えの
ための命令の実行前に実行するステップと、 アドレス生成モードの切替えのための命令の実行の次に
実行する命令を先読みして前記プリフェッチ・キューに
保持するステップとを含む、 アドレス生成モードの切替方法。 - 【請求項2】前記一連の命令が、前記プリフェッチ・キ
ューをフラッシュさせる命令と、実行してもバス・アク
セスを要求しない命令とを含む、請求項1のアドレス生
成モードの切替方法。
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4034842A JPH07120280B2 (ja) | 1992-02-21 | 1992-02-21 | アドレス生成モードの切替方法 |
| EP93301159A EP0557077A1 (en) | 1992-02-21 | 1993-02-17 | Method for switching between memory management modes |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP4034842A JPH07120280B2 (ja) | 1992-02-21 | 1992-02-21 | アドレス生成モードの切替方法 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JPH05289868A JPH05289868A (ja) | 1993-11-05 |
| JPH07120280B2 true JPH07120280B2 (ja) | 1995-12-20 |
Family
ID=12425450
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP4034842A Expired - Lifetime JPH07120280B2 (ja) | 1992-02-21 | 1992-02-21 | アドレス生成モードの切替方法 |
Country Status (2)
| Country | Link |
|---|---|
| EP (1) | EP0557077A1 (ja) |
| JP (1) | JPH07120280B2 (ja) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3973597B2 (ja) * | 2003-05-14 | 2007-09-12 | 株式会社ソニー・コンピュータエンタテインメント | プリフェッチ命令制御方法、プリフェッチ命令制御装置、キャッシュメモリ制御装置、オブジェクトコードの生成方法および装置 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH01291327A (ja) * | 1988-05-18 | 1989-11-22 | Hitachi Ltd | 処理モード先取り制御方式 |
-
1992
- 1992-02-21 JP JP4034842A patent/JPH07120280B2/ja not_active Expired - Lifetime
-
1993
- 1993-02-17 EP EP93301159A patent/EP0557077A1/en not_active Withdrawn
Also Published As
| Publication number | Publication date |
|---|---|
| JPH05289868A (ja) | 1993-11-05 |
| EP0557077A1 (en) | 1993-08-25 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6898697B1 (en) | Efficient method for mode change detection and synchronization | |
| US10282300B2 (en) | Accessing physical memory from a CPU or processing element in a high performance manner | |
| US6151662A (en) | Data transaction typing for improved caching and prefetching characteristics | |
| US6216206B1 (en) | Trace victim cache | |
| US6456891B1 (en) | System and method for transparent handling of extended register states | |
| JP3072705B2 (ja) | スーパースカラ・プロセッサの電力消費を減少させる回路及び方法 | |
| US5835951A (en) | Branch processing unit with target cache read prioritization protocol for handling multiple hits | |
| US5835967A (en) | Adjusting prefetch size based on source of prefetch address | |
| US5692168A (en) | Prefetch buffer using flow control bit to identify changes of flow within the code stream | |
| US6757771B2 (en) | Stack switching mechanism in a computer system | |
| US6665749B1 (en) | Bus protocol for efficiently transferring vector data | |
| US5732243A (en) | Branch processing unit with target cache using low/high banking to support split prefetching | |
| US20050055536A1 (en) | Compiler instructions for vector transfer unit | |
| KR20030010727A (ko) | 변환 색인 버퍼 플러시 필터 | |
| WO1996012231A1 (en) | A translation buffer for detecting and preventing conflicting virtual addresses from being stored therein | |
| JP2010521748A (ja) | 現在実行している命令セット以外の命令セットから命令をプリロードするシステム、方法およびソフトウェア | |
| US5596735A (en) | Circuit and method for addressing segment descriptor tables | |
| US5732253A (en) | Branch processing unit with target cache storing history for predicted taken branches and history cache storing history for predicted not-taken branches | |
| US11354128B2 (en) | Optimized mode transitions through predicting target state | |
| US5958045A (en) | Start of access instruction configured to indicate an access mode for fetching memory operands in a microprocessor | |
| US10067875B2 (en) | Processor with instruction cache that performs zero clock retires | |
| US5802359A (en) | Mapping processor state into a millicode addressable processor state register array | |
| JP2737820B2 (ja) | メモリアクセス方法およびシステム | |
| JP3837289B2 (ja) | 同じ論理的空間を占有する複数のレジスタファイルを含むマイクロプロセッサ | |
| US5819080A (en) | Microprocessor using an instruction field to specify condition flags for use with branch instructions and a computer system employing the microprocessor |