JP4275884B2 - 微細粒度変換判別 - Google Patents
微細粒度変換判別 Download PDFInfo
- Publication number
- JP4275884B2 JP4275884B2 JP2001530689A JP2001530689A JP4275884B2 JP 4275884 B2 JP4275884 B2 JP 4275884B2 JP 2001530689 A JP2001530689 A JP 2001530689A JP 2001530689 A JP2001530689 A JP 2001530689A JP 4275884 B2 JP4275884 B2 JP 4275884B2
- Authority
- JP
- Japan
- Prior art keywords
- storage device
- instruction
- host
- memory page
- memory
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3812—Instruction prefetching with instruction modification, e.g. store into instruction stream
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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, look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3808—Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
Description
(発明の背景)
発明の分野
本発明は、コンピュータ・システムに関し、更に特定すれば、ターゲット命令セットからホスト命令セットに命令を動的に変換するマイクロプロセッサによる既に変換されたターゲット命令を格納したメモリへの書き込み試行を検出する方法および装置に関する。
従来技術の説明
最近、単純であるが非常に高速のホスト・プロセッサ(「モーフ・ホスト」と呼ぶ)とソフトウエア(「コード・モーフィング・ソフトウエア」と呼ぶ)とを組み合わせ、モーフ・ホスト・プロセッサの命令セットとは異なる命令セットを有するプロセッサ用に設計したアプリケーション・プログラムを実行する新たなマイクロプロセッサが開発された。モーフ・ホスト・プロセッサは、アプリケーション・プログラムを、元のソフトウエアの目的を達成することができるホスト・プロセッサ命令に動的に変換するコード・モーフィング・ソフトウエアを実行する。命令を変換する際、これらを変換バッファに格納する。変換バッファ内では、更に変換せずにこれらを実行することができる。プログラムの初期変換は低速であるが、一旦変換されれば、プログラムを実行するためにハードウエアに通常必要となるステップの多くは不要となる。新たなマイクロプロセッサは、変換した「ターゲット」プログラムを、そのプログラムを設計した対象である「ターゲット」プロセッサと同程度の速度で実行可能であることを証明した。
【0002】
モーフ・ホスト・プロセッサは、多数のハードウエア強化策を盛り込んでおり、ターゲット・プロセッサの既知の状態間におよぶターゲット命令シーケンスをホスト命令に変換し、更なる使用のために変換バッファに格納し、変換した命令が正しく実行するか否か判定するために検査することができる。これらのハードウエア強化策によって、実行が成功している限り、変換実行の効果をバッファすることが可能となる。「コミット」と呼ばれるプロセスにおいて実行が成功すると、メモリ・ストアおよびターゲット・プロセッサ状態を更新する。これらのハードウエア強化策によって、ターゲット・プロセッサの既知の状態が存在する命令シーケンスの先頭に実行を戻すことによって、ホスト命令シーケンスの実行中に発生する例外の迅速かつ高精度の処理が可能となる。ターゲット状態がわかっている実行点に動作を戻すことを「ロールバック」と呼ぶ。新たなプロセッサは、本発明の譲受人に譲渡された、1998年11月3日付けのKelly等の米国特許第5,832,205号、Memory Controller For A Microprocessor For Detecting A Failure Of Speculation On The Physical Nature Of A Component Being Addressed (アドレスされているコンポーネントの物理的性質に対する推定の失敗を検出するマイクロプロセッサのメモリ・コントローラ)に詳しく記載されている。
【0003】
新たなプロセッサに伴って発生する可能性がある問題の1つに、ターゲット・プロセッサのオペレーティング・システムおよびアプリケーションによっては、メモリに格納されているターゲット命令に書き込みを行う可能性があることがあげられる。これが発生すると、上書きされたターゲット命令の変換であるホスト命令は、もはや有効でなくなる。無効なホスト変換を用いないことを保証するために、新たなプロセッサは、「Tビット」と名付けられたインディケータを利用する。Tビットには、変換ルックアサイド・バッファ(TLB:translation lookaside buffer)における物理ページ・アドレスと共に格納される。ルックアサイド・バッファは、最新のメモリ・アクセスの仮想メモリ・アドレスおよび物理メモリ・アドレス双方を含むエントリを格納し、ページ・テーブルによるよりも一層メモリ・アクセスの高速化を可能にする。新たなプロセッサのTLBにおいて、各エントリはTビットを含む。アドレス・メモリ・ページ上の命令がホスト命令に変換されたときにはいつでも、Tビットはセットされる。Tビットによって保護されているメモリ・ページに書き込みが行われようとすると、Tビット例外が発生する。Tビット例外によって、例外ハンドラは、Tビットによって保護されているページ上のターゲット命令から変換されたホスト命令のアドレスへの参照を保持するデータ構造を調べる。例外ハンドラは、これらの変換を、TLBエントリのTビット保護をオフにすることによって、無効にする。
【0004】
Tビットを利用するための構成は、1996年8月22日に出願され、本発明と同じ譲受人に譲渡された、Kelly等のTranslated Memory Protection Apparatus For An Advanced Microprocessor(高度マイクロプロセッサのための変換メモリ保護装置)と題する米国特許第08/702,771号に詳しく記載されている。
【0005】
TLBエントリにおいてTビットを利用する構成は、ほとんどの状況において効率的に機能するが、動作においていくつかの問題が残っている。これらの問題の1つは、あるターゲット・プロセッサが、命令とデータが格納されているエリア間で区別を行わないオペレーティング・システムを採用していることである。例えば、マイクロソフト社の「ウインドウズ」は、命令のために指定されたセグメント、およびデータのために指定された別のセグメントを、同じメモリ・ページ上に格納することを許す。
【0006】
これが生じると、かかるメモリ・ページ上のデータに書き込みを行おうとした場合、Tビット障害が発生する。その結果生ずる例外によって、当該データへの書き込みが、ターゲット命令を全く変化させなかったことを示しても、特定のTビットによって保護されているメモリ・ページ上のターゲット命令の変換全てが無効となる。メモリ・ページ上において正しい変換が無効にされると、新たなプロセッサの動作が著しく遅くなる。
【0007】
Tビットによって保護されているメモリ・ページへの書き込みによる影響を受けない変換の無効化を排除し、発生しても変換の無効化を生じないTビット・トラップの数を低減することによって、新たなプロセッサの動作速度を向上させることが望ましい。
(発明の概要)
したがって、本発明の目的は、他のマイクロプロセッサのために設計されたアプリケーション・プログラムおよびオペレーティング・システムと互換性があり、これらを走らせることができ、しかもこれら他のマイクロプロセッサよりも一層高速なマイクロプロセッサを提供することである。
【0008】
本発明のこの目的およびその他の目的は、ターゲット命令セットからホスト命令セットに命令を変換するコンピュータにおいて、メモリ・ページに対する書き込みが、ホスト命令に変換されたターゲット命令に対するものか否かについて判定を行う方法によって実現される。この方法は、ホスト命令に変換されたターゲット命令を格納するメモリ・ページに対する書き込みを検出するステップと、書き込みがアドレスされたメモリ・ページのサブエリアが、変換されたターゲット命令を格納しているか否かについて検出を行うステップと、アドレスされたターゲット命令から変換されたホスト命令を無効にするステップとを含む。
【0009】
本発明のこれらおよびその他の目的ならびに特徴は、図面と共に以下に続く詳細な説明を参照することによって、一層良く理解されよう。図面においては、いくつかの図を通じて同様のエレメントを同様の符号で示すこととする。
(詳細な説明)
図1は、本発明を利用可能なマイクロプロセッサ11を示す。図示したマイクロプロセッサは、米国特許第5,832,205号に詳細に記載されている。このマイクロプロセッサは、浮動小数点ユニット12、整数ユニット13、システム・メモリの一部である変換バッファ14、システム・メモリの別の一部であるターゲット・メモリ15、およびメモリ管理ユニットの一部である変換ルックアサイド・バッファ16を含む。
【0010】
前述のように、新たなマイクロプロセッサは、独特な方法を利用して、変換した命令が、これらを変換した元のターゲット命令との一貫性を保持していることを保証する。この方法を「Tビット例外」と呼ぶ。Tビットは、変換ルックアサイド・バッファ16内のエントリに置かれ、書き込みを行おうとしているターゲット・メモリ15内のメモリ・ページが、変換バッファ14内に格納されているホスト命令に変換されているターゲット命令を格納していることを表示する。Tビット例外が発生するのは、変換されたターゲット命令を格納しているメモリ・ページに書き込みを行おうとしたときである。
【0011】
Tビットの目的は、変換したホスト命令を無効にし、変換を発生した元のターゲット命令が変化したときに、変換を用いない(または少なくとも、使用前にこれらが未だ有効であることを判定するためにチェックを行う)ようにすることである。「無効化」とは、この明細書では両方の意味を含むように用いることとする。しかしながら、ある種のターゲット・プロセッサでは(特に、X86ファミリ)、変換された命令およびデータ双方を含むメモリ・ページが存在することが許されている。メモリ・ページへのデータの書き込みは、そのページ上の命令を変化させないので、当該メモリ・ページ上の命令から変換されたホスト命令を無効にする理由がない。その結果、新たなプロセスが考案され、これによってコード・モーフィング・ソフトウエアは、あるメモリ・ページに対して行われようとした書き込みが、変換された命令に対するものか、またはデータに対するものかについて判定を行い、ページ上の命令の変換を無効にすることなくデータへの書き込みを許可することができるようにした。また、新たなプロセスは、実際に書き込まれているメモリ・ページのエリアに対する、ページ上の命令への書き込みの効果も制限する。
【0012】
これを行うための本発明のプロセスは、Tビットによって保護されているメモリ・ページを一層微細な粒度で分割する。本プロセスは、被保護ページをサイズが等しい複数のサブエリアに分割し、かかるメモリ・ページのサブエリア毎にインディケータを格納する。一実施形態では、インディケータは、複数のサブエリアの各々に1ビットから成るマスクを形成する。マスクは、Tビットで保護されているメモリ・ページの一部として格納することも可能である。保護されているサブエリア毎のインディケータを、「微粒子Tビット」と呼ぶ。一実施形態では、マスクは32ビット・ワードであるので、各微粒子Tビットは、4096バイトのメモリ・ページの内128バイトのサブエリアを保護する。ターゲット命令を含むサブエリア毎に、微粒子Tビットがセットされる。Tビット例外が発生すると、例外ハンドラがインディケータを検査し、書き込みが行われようとしたメモリ・ページに、微粒子Tビット保護が設けられているか否か判定を行う。
【0013】
検査を加速するために、アクセスするアドレスの下位12ビットを用いてマスクを発生する。このマスクは、アドレスされるバイトの位置に1を有する(そして、格納されているデータが長く次のサブエリア内に達する場合、次に続くビット位置に1を有する)。下位アドレス・ビットのマスクおよび微粒子Tビット・マスクのANDを取る。いずれの位置においても0が得られた場合、サブエリアに微粒子Tビットがセットされ、Tビット例外が発生するべきであることを示す。
【0014】
メモリ・ページがサブエリアに分割されていない場合(即ち、ターゲット命令のみがページに書き込まれている場合)、Tビット例外が肯定され、このページに関連する変換バッファ内の変換を無効にする。メモリ・ページがサブエリアに分割されており、微粒子Tビット・インディケータが存在し、検査が、微粒子Tビットによって指定されていない1つ以上のサブエリアに対して書き込みが行われることを示す場合、元のTビット例外はソフトウエアによって無視される。メモリ・ページがサブエリアに分割されており、検査が、微粒子Tビットによって指定された1つ以上のサブエリア(命令を格納しているエリア)に対して書き込みが行われることを示す場合、元のTビット例外を肯定し、例外ハンドラは、保護されているメモリ・ページ上の特定のサブエリア内に格納されているターゲット命令から変換され、変換バッファに格納されているホスト命令を無効にする。
【0015】
以上からわかるように、微粒子Tビットによる保護は、新たなプロセッサが発生するTビット例外の大部分を不要とする。また、微粒子Tビットの保護は、破棄される変換を、書き込まれたサブエリアにある命令を変換するもののみに制限する。したがって、本発明のプロセスは、常時メモリ・ページ全体を破棄する場合よりも、かなり速くなる。
【0016】
コード・モーフィング・ソフトウエアおよびソフトウエア例外ハンドラを用いるプロセスは、基本的なTビット保護よりも速いが、更に加速することも可能である。本発明のプロセスを高速化するために、図2に示すハードウエアの実施形態を構築した。この実施形態は、先に論じたTLBのように構成した第1TLB21を有する回路20を含む。このTLBは、各々メモリ・ページの仮想アドレス、仮想メモリ・アドレスによってアドレスされた情報が実際に格納されている物理ページ・アドレス、およびTビットを含むエントリを格納する位置を与える。有効なメモリ・ページが、変換されているターゲット命令を格納している場合、TLB21内のエントリに対してTビットをセットする。
【0017】
また、回路20は、第2のTLB状構造23も含む。これを「微粒子Tビット・ルックアップ・テーブル」と呼ぶ。微粒子Tビット・ルックアップ・テーブル23は、TLB21よりも少ない数のエントリを有するのが通例である。何故なら、変換されたターゲット命令を格納するメモリ・ページが、データも格納することは少ないと予想されるからである。テーブル23は、各々、データおよび変換されたターゲット命令双方を格納するメモリ・ページの物理ページ・アドレスを含むエントリを格納する位置を与える。また、テーブル23の各エントリは、ソフトウエアの実施形態において利用したのと同じ1組のインディケータ(例えば、32ビット・ワード・マスク)も格納し、微粒子Tビットによって実際に保護されているサブエリアを示す。
【0018】
回路20の動作を図3のフロー・チャートで示す。書き込みがメモリ・ページに行われようとすると、テーブル23を検索し、アドレスされたメモリ・ページのエントリがテーブルに存在するか否か判定を行う。これを行うために、仮想メモリ・アドレスを含むエントリについて検索を実施する。このようなエントリが存在する場合、このページの物理アドレスを求め、このページに対するTビットの状態を判定する。Tビットがセットされていない場合、このメモリ・ページは、変換されたターゲット命令を格納するページではないので、実際にTビット保護を有するページではない。メモリ・ページが、変換されたターゲット命令を格納しており、したがってセットされているTビットによって保護されている場合、このページに対してTビット・トラップを発生し、エントリの物理アドレスを、微粒子Tビット・ルックアップ・テーブル23に送る。
【0019】
テーブル23において検索を行い、物理アドレスを含むエントリを求める。物理アドレスを含むエントリがテーブル23内に存在しない場合、(1)メモリ・ページはデータおよび変換されたターゲット命令の双方は格納していないか、あるいは(2)メモリ・ページはデータおよび変換されたターゲット命令の双方は格納しているが、メモリ・ページのエントリはテーブル23に入力されていない。第1の状況では、TLB21内のエントリにおいてセットされているTビットが、ページが変換されたターゲット命令を含むことを示すので、Tビット・トラップ例外を発生し、このページに関連する変換バッファに格納されている変換を無効にする。第2の状況では、物理アドレスのエントリをテーブル23にロードし、書き込みを再度試す。
【0020】
微粒子Tビット・ルックアップ・テーブル23内でヒットした場合、このページの特定のサブエリアに対する検査を実施し、アドレスされたサブエリアが微粒子Tビットによって保護されているか否か判定を行う。このサブエリアに対して微粒子Tビットがセットされていない場合、Tビット・トラップ例外を発生せず、データをメモリ・ページに格納する。このサブエリアに対して微粒子Tビットがセットされている場合、Tビット・トラップ例外を発生し、メモリ・ページの特定のサブエリア、TLB21内のエントリ、およびこのメモリ・ページの特定のサブエリアに関連する変換バッファ内に格納されている変換を無効にする。
【0021】
アドレスされた領域に対して微粒子Tビットがセットされているか否か判定するために、回路20のテーブル23内で一致する物理アドレスがあった場合、本発明の一実施形態では、微粒子Tビットによって保護されているサブエリアを示すマスクを、レジスタ25内に置く。次に、仮想アドレスの下位ビットを用いて、アドレスされたサブエリアが微粒子Tビットによって保護されているか否か判定を行う。これらの下位ビットは、アドレスされたメモリ・ページ内において、書き込みアクセスによってアクセスされたアドレスを規定する。書き込みアクセスがアドレスされたページの特定のサブエリアを、レジスタ25におけるマスクの32ビットTビット・インディケータと照合し、そのアドレスが、微粒子Tビットによって保護された1つ以上のサブエリア内にあるか否か判定を行う。微粒子Tビットによって保護されているサブエリアへの書き込みである場合、トラップによってTビット例外を発生し、特定のサブエリア、これらのサブエリアに格納されている命令の変換、およびTLB21内でアドレスされたエントリを無効にする。
【0022】
メモリ・ページのアドレスされたサブエリアが微粒子Tビットの保護を有するか否か判定を行うために、本発明の一実施形態は、下位12アドレス・ビットの内上位5ビットを利用して、32のサブエリアのどれが関与しているか判定を行う。このようなサブエリアは、各々、4096バイトのページに対して128バイトを含む。アドレスされた特定のサブエリアが判定されると、アドレスの下位7ビットを用いて、サブエリア内でアドレスされた具体的なバイトを判定する。アドレスされたバイトが判定されると、微粒子Tビットによって保護されているサブエリアを示すマスク(レジスタ25内のマスク)内においてアドレスされたサブエリアに対するインディケータを保持するビット位置を検査し、微粒子Tビットがセットされているか否か判定を行う。一実施形態では、書き込みは、8バイトに及ぶ場合もあるので、格納されているデータの長さ(引く1)を、サブエリア内の開始バイト・アドレスに加え、書き込みが次のサブエリア内に達するか否か判定を行う。書き込みが次のサブエリアに達する場合、マスクも検査し、次のサブエリアに対して微粒子Tビットがセットされているか否か判定を行う。
【0023】
ハードウエアは、Tビット・マスク・レジスタ内に置かれているビット・ベクトルを取り出し、12ビット・ページ・オフセットの上位5ビットだけ、これをシフト・ダウンする(shift down)。これによって、書き込まれた特定のサブエリアに対するビットを下位ビット位置に移動し、次のサブエリアに対するビットを次の下位ビット位置に移動する。1つ(または次のサブエリアに書き込まれている場合は、2つ)の下位ビットを次に検査する。いずれかがセットされている場合、Tビット例外を発生する。
【0024】
米国特許出願第08/702,771に記載されている基本的なTビット保護は、Tビットによって保護されているエリアに格納されているターゲット命令から変換されたホスト命令のアドレスを含むデータ構造を利用する。本発明が提供するTビット保護の微粒子の態様を最適に利用するために、このデータ構造を、図4に示すように変更する。コード・モーフィング・ソフトウエアは、物理ページ・マップと呼ばれるエントリのアレイを利用する。物理ページ・マップにおけるエントリは、物理アドレスの上位ビットによってインデックス付けされている。各エントリは、対応する物理ページからターゲット命令を変換する変換を識別するデータ構造に対するポインタである。物理ページ上のターゲット命令の各変換は、微粒子Tビット・インディケータ(例えば、32ビット・ワード・マスク)を有する。これは、微粒子Tビットによって保護されている、変換されたターゲット命令を含むメモリ・ページのサブエリアを識別する。Tビット例外がある場合、ストア・アドレスの下位ビットおよびストアのサイズから生成したマスクを、前述のように用いて、変換毎に、物理ページのアクセスされたサブエリアからの命令を変換するか否か判定を行う。
【0025】
物理ページ・マップ内の各エントリは、変換に対するポインタのリストを示す。変換毎に、Tビット・マスクを関連付ける。あるページに対するかかるリスト上の変換に対するTビット・マスク同士のORを取ると、このページに対するTビット・マスクが形成される。これらを格納し、テーブル23を素早く埋め、更にテーブル23に新たなページをロードするために用いることができる。マスクは、新たな変換がリストに追加されたときにはいつでも、またはリスト上の変換が無効にされたときにはいつでも再計算される。
【0026】
尚、ターゲット命令またはターゲット命令のシーケンスを変換する場合、ホスト命令のシーケンスが生成されることを注記しておく。多くの場合、これらのホスト命令は、コンピュータの動作速度を高めるために、並び替えられ更にスケジュールされる。その結果、本発明の一実施形態では、ストアのために変換が無効にされた場合、これらがストアによってアクセスされたのではないエリアからのターゲット命令を変換したのであっても、この変換に伴うホスト命令シーケンスの全てが無効とされる。
【0027】
例示した好適な実施形態以外でも、種々の代替実施形態が利用可能である。例えば、Tビット・バッファ23は、物理アドレスではなく、仮想アドレスを利用してアクセスされてもよい。このような変更によって、バッファ21及び23を同じクロックでアクセスすることが可能となる。バッファ23を不要とし、TLB21内に単一のビットではなくTビット・マスク全体を格納するような、別の実施形態も可能である。他にも具体的な実施形態が当業者には想起されよう。
【0028】
更に、本発明は、微粒子Tビット保護が与えられる、異なるサイズのサブエリアを作成することによって強化することも可能である。この結果を達成する一実施形態では、サブエリアを更に小さいサブエリアに分割し、これらにも、前述のより大きなサブエリアと同様に、微粒子Tビットの保護を与える、テーブル23と同様の追加のテーブルを作成する回路、およびストアの試行がより小さなサブエリアの保護されたサブエリアに対して行われたか否か判定を行う、関連する回路を備える。
【0029】
以上、好適な実施形態に関して本発明を説明したが、本発明の精神および範囲から逸脱することなく、種々の変更や変形も当業者によって可能であることが認められよう。したがって、本発明は、特許請求の範囲に関して判断するべきである。
【図面の簡単な説明】
【図1】 図1は、本発明を利用したマイクロプロセッサを示すブロック図である。
【図2】 図2は、本発明の一部のハードウエア実施態様を示すブロック図である。
【図3】 図3は、本発明の動作を示すフロー・チャートである。
【図4】 図4は、本発明の一実施態様についての、ホスト・メモリにおけるデータ構造を示すブロック図である。
Claims (3)
- 第1の記憶装置が有するメモリ・ページであって、2以上のサブエリアに分割されているメモリ・ページに格納されている1又は複数個のターゲット命令を変換して得られる1又は複数個のホスト命令を、前記第1の記憶装置と同一又は異なる記憶装置である第2の記憶装置に格納するコンピュータであって、前記メモリ・ページと前記サブエリアの各々はアドレスによって特定可能であるコンピュータにおいて、
前記メモリ・ページに対する書き込みが、当該メモリ・ページに格納されているターゲット命令であって、既にホスト命令へと変換が行われて対応するホスト命令が前記第2の記憶装置に格納されているターゲット命令に対する書き込みであるか否かの判定を前記コンピュータが行う方法であって、
前記メモリ・ページに格納されている少なくとも1個の第1のターゲット命令を前記コンピュータが変換して得られる1又は複数個の第1のホスト命令を前記第2の記憶装置に前記コンピュータが格納するステップと、
前記第1の記憶装置又は第2の記憶装置のいずれか一方と同一又は異なる第3の記憶装置内に、前記メモリ・ページの各々に対応するインディケータを前記コンピュータが格納するステップであって、前記インディケータは対応する前記第1のホスト命令を有する前記第1のターゲット命令が前記対応するメモリ・ページの中に存在する場合には第1の値を保持するステップと、
書き込みアドレスを指定してメモリ・ページに書き込みが行われようとしたときに、前記書き込みアドレスによって特定されたメモリ・ページに対応する前記インディケータを前記コンピュータが読み出すステップと、
当該読み出されたインディケータが前記第1の値を保持していることを前記コンピュータが識別した場合には、更に当該メモリ・ページ内の前記サブエリアであって、前記書き込みアドレスによって特定されるサブエリアの中に前記第1のターゲット命令が存在しているか否かを前記コンピュータが判断する判断ステップと、当該判断ステップにおいて存在していると判断された場合には、当該第1のターゲット命令に対応する前記第1のホスト命令であって、前記第2の記憶装置に格納されている前記第1のホスト命令を前記コンピュータが無効にするステップとを含む方法。 - 1または複数個のターゲット命令を1または複数個のホスト命令に変換するコンピュータであって、
前記コンピュータは、
前記ホスト命令を実行する処理ユニットと、
前記ターゲット命令を格納する第1の記憶装置と、
前記第1の記憶装置と同一又は異なる第2の記憶装置であって、前記ホスト命令を格納する第2の記憶装置と、
前記第1の記憶装置へのアクセスを制御するメモリ管理ユニットとを有し、
前記第1の記憶装置は複数のメモリ・ページを有しており、該複数のメモリ・ページの少なくともに1つには前記ターゲット命令が格納されており、
前記メモリ・ページの各々は複数のサブエリアに区分されており、
前記メモリ管理ユニットは、
前記第1の記憶装置に対して書き込みアドレスを指定した書き込みが行われる際に、前記書き込みアドレスによって特定される前記メモリ・ページが前記ターゲット命令のみを格納するメモリ・ページであることを検出すると、当該特定されたメモリ・ページに格納されている前記ターゲット命令が変換されて得られた前記ホスト命令であって、前記第2の記憶装置に格納されているホスト命令を無効化する第1の処理手段と、
前記特定された前記メモリ・ページが前記ターゲット命令以外のデータも含んでいることを検出すると、当該書き込みアドレスによって特定される前記サブエリアに格納されている前記ターゲット命令が変換されて得られた前記ホスト命令であって、前記第2の記憶装置に格納されいるホスト命令を無効化する第2の処理手段とを有することを特徴とするコンピュータ。 - 1または複数個のターゲット命令を1または複数個のホスト命令に変換するコンピュータであって、
前記ターゲット命令を格納する第1の記憶装置と、
前記第1の記憶装置と同一又は異なる第2の記憶装置であって、前記ホスト命令を格納する第2の記憶装置とを有するコンピュータにおいて前記第1の記憶装置に対するアクセスを制御するメモリ管理ユニットであって、
前記第1の記憶装置は複数のメモリ・ページを有しており、該複数のメモリ・ページの少なくとも1つには前記ターゲット命令が格納されており、
前記メモリ・ページの各々は複数のサブエリアに区分されており、
前記メモリ管理ユニットは、
前記第1の記憶装置に対して書き込みアドレスを指定した書き込みが行われる際に、前記書き込みアドレスによって特定される前記メモリ・ページが前記ターゲット命令のみを格納するメモリ・ページであることを検出すると、当該特定されたメモリ・ページに格納されている前記ターゲット命令が変換されて得られた前記ホスト命令であって、前記第2の記憶装置に格納されているホスト命令を無効化する第1の処理手段と、
前記特定された前記メモリ・ページが前記ターゲット命令以外のデータも含んでいることを検出すると、当該書き込みアドレスによって特定される前記サブエリアに格納されている前記ターゲット命令が変換されて得られた前記ホスト命令であって、前記第2の記憶装置に格納されいるホスト命令を無効化する第2の処理手段とを有することを特徴とするメモリ管理ユニット。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/417,356 | 1999-10-13 | ||
US09/417,356 US6363336B1 (en) | 1999-10-13 | 1999-10-13 | Fine grain translation discrimination |
PCT/US2000/024651 WO2001027743A1 (en) | 1999-10-13 | 2000-09-06 | Fine grain translation discrimination |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006112312A Division JP4417346B2 (ja) | 1999-10-13 | 2006-04-14 | 微細粒度変換判別方法及び装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003511788A JP2003511788A (ja) | 2003-03-25 |
JP4275884B2 true JP4275884B2 (ja) | 2009-06-10 |
Family
ID=23653666
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001530689A Expired - Lifetime JP4275884B2 (ja) | 1999-10-13 | 2000-09-06 | 微細粒度変換判別 |
JP2006112312A Expired - Lifetime JP4417346B2 (ja) | 1999-10-13 | 2006-04-14 | 微細粒度変換判別方法及び装置 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006112312A Expired - Lifetime JP4417346B2 (ja) | 1999-10-13 | 2006-04-14 | 微細粒度変換判別方法及び装置 |
Country Status (9)
Country | Link |
---|---|
US (1) | US6363336B1 (ja) |
EP (1) | EP1240582B1 (ja) |
JP (2) | JP4275884B2 (ja) |
KR (1) | KR100573446B1 (ja) |
CN (1) | CN1196994C (ja) |
AT (1) | ATE377212T1 (ja) |
CA (1) | CA2384254C (ja) |
DE (1) | DE60036960T2 (ja) |
WO (1) | WO2001027743A1 (ja) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8065504B2 (en) | 1999-01-28 | 2011-11-22 | Ati International Srl | Using on-chip and off-chip look-up tables indexed by instruction address to control instruction execution in a processor |
US7941647B2 (en) | 1999-01-28 | 2011-05-10 | Ati Technologies Ulc | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination |
US8127121B2 (en) | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
US8074055B1 (en) | 1999-01-28 | 2011-12-06 | Ati Technologies Ulc | Altering data storage conventions of a processor when execution flows from first architecture code to second architecture code |
US6763452B1 (en) | 1999-01-28 | 2004-07-13 | Ati International Srl | Modifying program execution based on profiling |
US7111290B1 (en) * | 1999-01-28 | 2006-09-19 | Ati International Srl | Profiling program execution to identify frequently-executed portions and to assist binary translation |
US6954923B1 (en) | 1999-01-28 | 2005-10-11 | Ati International Srl | Recording classification of instructions executed by a computer |
US6779107B1 (en) | 1999-05-28 | 2004-08-17 | Ati International Srl | Computer execution by opportunistic adaptation |
US7761857B1 (en) | 1999-10-13 | 2010-07-20 | Robert Bedichek | Method for switching between interpretation and dynamic translation in a processor system based upon code sequence execution counts |
US6845353B1 (en) * | 1999-12-23 | 2005-01-18 | Transmeta Corporation | Interpage prologue to protect virtual address mappings |
US7680999B1 (en) * | 2000-02-08 | 2010-03-16 | Hewlett-Packard Development Company, L.P. | Privilege promotion based on check of previous privilege level |
US6594821B1 (en) * | 2000-03-30 | 2003-07-15 | Transmeta Corporation | Translation consistency checking for modified target instructions by comparing to original copy |
US6615300B1 (en) | 2000-06-19 | 2003-09-02 | Transmeta Corporation | Fast look-up of indirect branch destination in a dynamic translation system |
US6826682B1 (en) | 2000-06-26 | 2004-11-30 | Transmeta Corporation | Floating point exception handling in pipelined processor using special instruction to detect generated exception and execute instructions singly from known correct state |
GB2393274B (en) * | 2002-09-20 | 2006-03-15 | Advanced Risc Mach Ltd | Data processing system having an external instruction set and an internal instruction set |
US7310723B1 (en) | 2003-04-02 | 2007-12-18 | Transmeta Corporation | Methods and systems employing a flag for deferring exception handling to a commit or rollback point |
US6925928B2 (en) * | 2003-09-18 | 2005-08-09 | Anthony Fox | Trash compactor for fast food restaurant waste |
JP4520790B2 (ja) * | 2004-07-30 | 2010-08-11 | 富士通株式会社 | 情報処理装置およびソフトウェアプリフェッチ制御方法 |
US8413162B1 (en) | 2005-06-28 | 2013-04-02 | Guillermo J. Rozas | Multi-threading based on rollback |
US7478226B1 (en) | 2006-09-29 | 2009-01-13 | Transmeta Corporation | Processing bypass directory tracking system and method |
US7774583B1 (en) | 2006-09-29 | 2010-08-10 | Parag Gupta | Processing bypass register file system and method |
US8006055B2 (en) | 2008-03-04 | 2011-08-23 | Microsoft Corporation | Fine granularity hierarchiacal memory protection |
JP5246014B2 (ja) * | 2009-04-22 | 2013-07-24 | 富士通株式会社 | 仮想化プログラム、仮想化処理方法及び装置 |
KR20170066681A (ko) | 2012-12-27 | 2017-06-14 | 인텔 코포레이션 | 이진 변환된 자가 수정 코드 및 교차 수정 코드의 처리 |
US9081707B2 (en) | 2012-12-29 | 2015-07-14 | Intel Corporation | Apparatus and method for tracking TLB flushes on a per thread basis |
US9411600B2 (en) * | 2013-12-08 | 2016-08-09 | Intel Corporation | Instructions and logic to provide memory access key protection functionality |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4589092A (en) * | 1983-12-12 | 1986-05-13 | International Business Machines Corporation | Data buffer having separate lock bit storage array |
US4638462A (en) * | 1985-01-31 | 1987-01-20 | International Business Machines Corporation | Self-timed precharge circuit |
US4794522A (en) * | 1985-09-30 | 1988-12-27 | International Business Machines Corporation | Method for detecting modified object code in an emulator |
EP0425771A3 (en) * | 1989-11-03 | 1992-09-02 | International Business Machines Corporation | An efficient mechanism for providing fine grain storage protection intervals |
CA2078310A1 (en) * | 1991-09-20 | 1993-03-21 | Mark A. Kaufman | Digital processor with distributed memory system |
US5437017A (en) * | 1992-10-09 | 1995-07-25 | International Business Machines Corporation | Method and system for maintaining translation lookaside buffer coherency in a multiprocessor data processing system |
US5548746A (en) * | 1993-11-12 | 1996-08-20 | International Business Machines Corporation | Non-contiguous mapping of I/O addresses to use page protection of a process |
US5781750A (en) * | 1994-01-11 | 1998-07-14 | Exponential Technology, Inc. | Dual-instruction-set architecture CPU with hidden software emulation mode |
US5577231A (en) * | 1994-12-06 | 1996-11-19 | International Business Machines Corporation | Storage access authorization controls in a computer system using dynamic translation of large addresses |
US5560013A (en) * | 1994-12-06 | 1996-09-24 | International Business Machines Corporation | Method of using a target processor to execute programs of a source architecture that uses multiple address spaces |
US5832205A (en) * | 1996-08-20 | 1998-11-03 | Transmeta Corporation | Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed |
US6199152B1 (en) * | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
US6009516A (en) * | 1996-10-21 | 1999-12-28 | Texas Instruments Incorporated | Pipelined microprocessor with efficient self-modifying code detection and handling |
US6243668B1 (en) * | 1998-08-07 | 2001-06-05 | Hewlett-Packard Company | Instruction set interpreter which uses a register stack to efficiently map an application register state |
-
1999
- 1999-10-13 US US09/417,356 patent/US6363336B1/en not_active Expired - Lifetime
-
2000
- 2000-09-06 WO PCT/US2000/024651 patent/WO2001027743A1/en active IP Right Grant
- 2000-09-06 DE DE60036960T patent/DE60036960T2/de not_active Expired - Lifetime
- 2000-09-06 KR KR1020027004731A patent/KR100573446B1/ko not_active IP Right Cessation
- 2000-09-06 JP JP2001530689A patent/JP4275884B2/ja not_active Expired - Lifetime
- 2000-09-06 CN CNB00814186XA patent/CN1196994C/zh not_active Expired - Lifetime
- 2000-09-06 EP EP00960034A patent/EP1240582B1/en not_active Expired - Lifetime
- 2000-09-06 AT AT00960034T patent/ATE377212T1/de not_active IP Right Cessation
- 2000-09-06 CA CA002384254A patent/CA2384254C/en not_active Expired - Fee Related
-
2006
- 2006-04-14 JP JP2006112312A patent/JP4417346B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2003511788A (ja) | 2003-03-25 |
US6363336B1 (en) | 2002-03-26 |
CA2384254A1 (en) | 2001-04-19 |
ATE377212T1 (de) | 2007-11-15 |
CN1196994C (zh) | 2005-04-13 |
KR100573446B1 (ko) | 2006-04-26 |
DE60036960T2 (de) | 2008-08-14 |
CN1399735A (zh) | 2003-02-26 |
JP4417346B2 (ja) | 2010-02-17 |
KR20020039685A (ko) | 2002-05-27 |
DE60036960D1 (de) | 2007-12-13 |
WO2001027743A1 (en) | 2001-04-19 |
EP1240582B1 (en) | 2007-10-31 |
CA2384254C (en) | 2004-11-02 |
EP1240582A1 (en) | 2002-09-18 |
EP1240582A4 (en) | 2005-08-31 |
JP2006244516A (ja) | 2006-09-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4417346B2 (ja) | 微細粒度変換判別方法及び装置 | |
US20220050791A1 (en) | Linear to physical address translation with support for page attributes | |
US6604187B1 (en) | Providing global translations with address space numbers | |
US6594821B1 (en) | Translation consistency checking for modified target instructions by comparing to original copy | |
US5835962A (en) | Parallel access micro-TLB to speed up address translation | |
JP3016575B2 (ja) | 複数キャッシュ・メモリ・アクセス方法 | |
EP1653343A2 (en) | Invalidating storage, clearing buffer entries | |
JPH10133950A (ja) | ページテーブル更新方法および装置 | |
EP2416251B1 (en) | A method of managing computer memory, corresponding computer program product, and data storage device therefor | |
US5764944A (en) | Method and apparatus for TLB invalidation mechanism for protective page fault | |
US5226132A (en) | Multiple virtual addressing using/comparing translation pairs of addresses comprising a space address and an origin address (sto) while using space registers as storage devices for a data processing system | |
CN112639750A (zh) | 用于控制存储器存取的装置及方法 | |
US8336039B2 (en) | Program, apparatus, and method of optimizing a Java object | |
KR100218617B1 (ko) | 변환우선참조 버퍼를 이용하여 메모리를 관리하는 데이터 처리 시스템의 효율적인 메모리 관리 방법 및 시스템과 그를 이용한 데이터 처리 시스템 | |
EP0173909A2 (en) | Look-aside buffer least recently used marker controller | |
US7971002B1 (en) | Maintaining instruction coherency in a translation-based computer system architecture | |
JPH02239330A (ja) | 情報処理装置 | |
JP2000122928A (ja) | ペ―ジ・テ―ブルのアクセス方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050517 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050816 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050823 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20051215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081205 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090305 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4275884 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120313 Year of fee payment: 3 |
|
S111 | Request for change of ownership or part of ownership |
Free format text: JAPANESE INTERMEDIATE CODE: R313111 Free format text: JAPANESE INTERMEDIATE CODE: R313113 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120313 Year of fee payment: 3 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120313 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130313 Year of fee payment: 4 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130313 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140313 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |