JP2006244516A - 微細粒度変換判別方法及び装置 - Google Patents

微細粒度変換判別方法及び装置 Download PDF

Info

Publication number
JP2006244516A
JP2006244516A JP2006112312A JP2006112312A JP2006244516A JP 2006244516 A JP2006244516 A JP 2006244516A JP 2006112312 A JP2006112312 A JP 2006112312A JP 2006112312 A JP2006112312 A JP 2006112312A JP 2006244516 A JP2006244516 A JP 2006244516A
Authority
JP
Japan
Prior art keywords
instruction
memory
host
target instruction
bit
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.)
Granted
Application number
JP2006112312A
Other languages
English (en)
Other versions
JP4417346B2 (ja
Inventor
John Banning
バニング,ジョン
H Peter Anvin
アンヴィン,エイチ・ピーター
Benjamin Gribstad
グリブスタッド,ベンジャミン
David Keppel
ケッペル,デイヴィッド
Alex Klaiber
クライバー,アレックス
Paul Serris
サーリス,ポール
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.)
Transmeta Inc
Original Assignee
Transmeta Inc
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 Transmeta Inc filed Critical Transmeta Inc
Publication of JP2006244516A publication Critical patent/JP2006244516A/ja
Application granted granted Critical
Publication of JP4417346B2 publication Critical patent/JP4417346B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3812Instruction prefetching with instruction modification, e.g. store into instruction stream
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3808Instruction prefetching for instruction reuse, e.g. trace cache, branch target cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)
  • Medicines Containing Plant Substances (AREA)
  • Liquid Crystal Substances (AREA)
  • Pharmaceuticals Containing Other Organic And Inorganic Compounds (AREA)

Abstract

【課題】ターゲット命令セットからホスト命令セットに命令を変換するコンピュータにおいて、メモリ・サブページに対する書き込みが、ホスト命令に変換されたターゲット命令に対して指令されたか否かについて判定を行う方法。
【解決手段】ホスト命令に変換されたターゲット命令を格納するメモリ・サブページに対する書き込みを検出するステップと、書き込みがアドレスされたメモリ・ページのサブエリアが、変換されたターゲット命令を格納しているか否かについて検出を行うステップと、アドレスされたターゲット命令から変換されたホスト命令を無効にするステップとを含む。
【選択図】図3

Description

発明の詳細な説明
本発明は、コンピュータ・システムに関し、更に特定すれば、ターゲット命令セットからホスト命令セットに命令を動的に変換するマイクロプロセッサによる既に変換されたターゲット命令を格納したメモリへの書き込み試行を検出する方法および装置に関する。
最近、単純であるが非常に高速のホスト・プロセッサ(「モーフ・ホスト」と呼ぶ)とソフトウエア(「コード・モーフィング・ソフトウエア」と呼ぶ)とを組み合わせ、モーフ・ホスト・プロセッサの命令セットとは異なる命令セットを有するプロセッサ用に設計したアプリケーション・プログラムを実行する新たなマイクロプロセッサが開発された。モーフ・ホスト・プロセッサは、アプリケーション・プログラムを、元のソフトウエアの目的を達成することができるホスト・プロセッサ命令に動的に変換するコード・モーフィング・ソフトウエアを実行する。命令を変換する際、これらを変換バッファに格納する。変換バッファ内では、更に変換せずにこれらを実行することができる。プログラムの初期変換は低速であるが、一旦変換されれば、プログラムを実行するためにハードウエアに通常必要となるステップの多くは不要となる。新たなマイクロプロセッサは、変換した「ターゲット」プログラムを、そのプログラムを設計した対象である「ターゲット」プロセッサと同程度の速度で実行可能であることを証明した。
モーフ・ホスト・プロセッサは、多数のハードウエア強化策を盛り込んでおり、ターゲット・プロセッサの既知の状態間におよぶターゲット命令シーケンスをホスト命令に変換し、更なる使用のために変換バッファに格納し、変換した命令が正しく実行するか否か判定するために検査することができる。これらのハードウエア強化策によって、実行が成功している限り、変換実行の効果をバッファすることが可能となる。「コミット」と呼ばれるプロセスにおいて実行が成功すると、メモリ・ストアおよびターゲット・プロセッサ状態を更新する。これらのハードウエア強化策によって、ターゲット・プロセッサの既知の状態が存在する命令シーケンスの先頭に実行を戻すことによって、ホスト命令シーケンスの実行中に発生する例外の迅速かつ高精度の処理が可能となる。ターゲット状態がわかっている実行点に動作を戻すことを「ロールバック」と呼ぶ。新たなプロセッサは、本発明の譲受人に譲渡された、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 (アドレスされているコンポーネントの物理的性質に対する推定の失敗を検出するマイクロプロセッサのメモリ・コントローラ)に詳しく記載されている。
新たなプロセッサに伴って発生する可能性がある問題の1つに、ターゲット・プロセッサのオペレーティング・システムおよびアプリケーションによっては、メモリに格納されているターゲット命令に書き込みを行う可能性があることがあげられる。これが発生すると、上書きされたターゲット命令の変換であるホスト命令は、もはや有効でなくなる。無効なホスト変換を用いないことを保証するために、新たなプロセッサは、「Tビット」と名付けられたインディケータを利用する。Tビットには、変換ルックアサイド・バッファ(TLB:translation lookaside buffer)における物理ページ・アドレスと共に格納される。ルックアサイド・バッファは、最新のメモリ・アクセスの仮想メモリ・アドレスおよび物理メモリ・アドレス双方を含むエントリを格納し、ページ・テーブルによるよりも一層メモリ・アクセスの高速化を可能にする。新たなプロセッサのTLBにおいて、各エントリはTビットを含む。アドレス・メモリ・ページ上の命令がホスト命令に変換されたときにはいつでも、Tビットはセットされる。Tビットによって保護されているメモリ・ページに書き込みが行われようとすると、Tビット例外が発生する。Tビット例外によって、例外ハンドラは、Tビットによって保護されているページ上のターゲット命令から変換されたホスト命令のアドレスへの参照を保持するデータ構造を調べる。例外ハンドラは、これらの変換を、TLBエントリのTビット保護をオフにすることによって、無効にする。
Tビットを利用するための構成は、1996年8月22日に出願され、本発明と同じ譲受人に譲渡された、Kelly等のTranslated Memory Protection Apparatus For An Advanced Microprocessor(高度マイクロプロセッサのための変換メモリ保護装置)と題する米国特許第08/702,771号に詳しく記載されている。
TLBエントリにおいてTビットを利用する構成は、ほとんどの状況において効率的に機能するが、動作においていくつかの問題が残っている。これらの問題の1つは、あるターゲット・プロセッサが、命令とデータが格納されているエリア間で区別を行わないオペレーティング・システムを採用していることである。例えば、マイクロソフト社の「ウインドウズ」は、命令のために指定されたセグメント、およびデータのために指定された別のセグメントを、同じメモリ・ページ上に格納することを許す。
これが生じると、かかるメモリ・ページ上のデータに書き込みを行おうとした場合、Tビット障害が発生する。その結果生ずる例外によって、当該データへの書き込みが、ターゲット命令を全く変化させなかったことを示しても、特定のTビットによって保護されているメモリ・ページ上のターゲット命令の変換全てが無効となる。メモリ・ページ上において正しい変換が無効にされると、新たなプロセッサの動作が著しく遅くなる。
Tビットによって保護されているメモリ・ページへの書き込みによる影響を受けない変換の無効化を排除し、発生しても変換の無効化を生じないTビット・トラップの数を低減することによって、新たなプロセッサの動作速度を向上させることが望ましい。
したがって、本発明の目的は、他のマイクロプロセッサのために設計されたアプリケーション・プログラムおよびオペレーティング・システムと互換性があり、これらを走らせることができ、しかもこれら他のマイクロプロセッサよりも一層高速なマイクロプロセッサを提供することである。
本発明のこの目的およびその他の目的は、ターゲット命令セットからホスト命令セットに命令を変換するコンピュータにおいて、メモリ・ページに対する書き込みが、ホスト命令に変換されたターゲット命令に対するものか否かについて判定を行う方法によって実現される。この方法は、ホスト命令に変換されたターゲット命令を格納するメモリ・ページに対する書き込みを検出するステップと、書き込みがアドレスされたメモリ・ページのサブエリアが、変換されたターゲット命令を格納しているか否かについて検出を行うステップと、アドレスされたターゲット命令から変換されたホスト命令を無効にするステップとを含む。
本発明のこれらおよびその他の目的ならびに特徴は、図面と共に以下に続く詳細な説明を参照することによって、一層良く理解されよう。図面においては、いくつかの図を通じて同様のエレメントを同様の符号で示すこととする。
図1は、本発明を利用可能なマイクロプロセッサ11を示す。図示したマイクロプロセッサは、米国特許第5,832,205号に詳細に記載されている。このマイクロプロセッサは、浮動小数点ユニット12、整数ユニット13、システム・メモリの一部である変換バッファ14、システム・メモリの別の一部であるターゲット・メモリ15、およびメモリ管理ユニットの一部である変換ルックアサイド・バッファ16を含む。
前述のように、新たなマイクロプロセッサは、独特な方法を利用して、変換した命令が、これらを変換した元のターゲット命令との一貫性を保持していることを保証する。この方法を「Tビット例外」と呼ぶ。Tビットは、変換ルックアサイド・バッファ16内のエントリに置かれ、書き込みを行おうとしているターゲット・メモリ15内のメモリ・ページが、変換バッファ14内に格納されているホスト命令に変換されているターゲット命令を格納していることを表示する。Tビット例外が発生するのは、変換されたターゲット命令を格納しているメモリ・ページに書き込みを行おうとしたときである。
Tビットの目的は、変換したホスト命令を無効にし、変換を発生した元のターゲット命令が変化したときに、変換を用いない(または少なくとも、使用前にこれらが未だ有効であることを判定するためにチェックを行う)ようにすることである。「無効化」とは、この明細書では両方の意味を含むように用いることとする。しかしながら、ある種のターゲット・プロセッサでは(特に、X86ファミリ)、変換された命令およびデータ双方を含むメモリ・ページが存在することが許されている。メモリ・ページへのデータの書き込みは、そのページ上の命令を変化させないので、当該メモリ・ページ上の命令から変換されたホスト命令を無効にする理由がない。その結果、新たなプロセスが考案され、これによってコード・モーフィング・ソフトウエアは、あるメモリ・ページに対して行われようとした書き込みが、変換された命令に対するものか、またはデータに対するものかについて判定を行い、ページ上の命令の変換を無効にすることなくデータへの書き込みを許可することができるようにした。また、新たなプロセスは、実際に書き込まれているメモリ・ページのエリアに対する、ページ上の命令への書き込みの効果も制限する。
これを行うための本発明のプロセスは、Tビットによって保護されているメモリ・ページを一層微細な粒度で分割する。本プロセスは、被保護ページをサイズが等しい複数のサブエリアに分割し、かかるメモリ・ページのサブエリア毎にインディケータを格納する。一実施形態では、インディケータは、複数のサブエリアの各々に1ビットから成るマスクを形成する。マスクは、Tビットで保護されているメモリ・ページの一部として格納することも可能である。保護されているサブエリア毎のインディケータを、「微粒子Tビット」と呼ぶ。一実施形態では、マスクは32ビット・ワードであるので、各微粒子Tビットは、4096バイトのメモリ・ページの内128バイトのサブエリアを保護する。ターゲット命令を含むサブエリア毎に、微粒子Tビットがセットされる。Tビット例外が発生すると、例外ハンドラがインディケータを検査し、書き込みが行われようとしたメモリ・ページに、微粒子Tビット保護が設けられているか否か判定を行う。
検査を加速するために、アクセスするアドレスの下位12ビットを用いてマスクを発生する。このマスクは、アドレスされるバイトの位置に1を有する(そして、格納されているデータが長く次のサブエリア内に達する場合、次に続くビット位置に1を有する)。下位アドレス・ビットのマスクおよび微粒子Tビット・マスクのANDを取る。いずれの位置においても0が得られた場合、サブエリアに微粒子Tビットがセットされ、Tビット例外が発生するべきであることを示す。
メモリ・ページがサブエリアに分割されていない場合(即ち、ターゲット命令のみがページに書き込まれている場合)、Tビット例外が肯定され、このページに関連する変換バッファ内の変換を無効にする。メモリ・ページがサブエリアに分割されており、微粒子Tビット・インディケータが存在し、検査が、微粒子Tビットによって指定されていない1つ以上のサブエリアに対して書き込みが行われることを示す場合、元のTビット例外はソフトウエアによって無視される。メモリ・ページがサブエリアに分割されており、検査が、微粒子Tビットによって指定された1つ以上のサブエリア(命令を格納しているエリア)に対して書き込みが行われることを示す場合、元のTビット例外を肯定し、例外ハンドラは、保護されているメモリ・ページ上の特定のサブエリア内に格納されているターゲット命令から変換され、変換バッファに格納されているホスト命令を無効にする。
以上からわかるように、微粒子Tビットによる保護は、新たなプロセッサが発生するTビット例外の大部分を不要とする。また、微粒子Tビットの保護は、破棄される変換を、書き込まれたサブエリアにある命令を変換するもののみに制限する。したがって、本発明のプロセスは、常時メモリ・ページ全体を破棄する場合よりも、かなり速くなる。
コード・モーフィング・ソフトウエアおよびソフトウエア例外ハンドラを用いるプロセスは、基本的なTビット保護よりも速いが、更に加速することも可能である。本発明のプロセスを高速化するために、図2に示すハードウエアの実施形態を構築した。この実施形態は、先に論じたTLBのように構成した第1TLB21を有する回路20を含む。このTLBは、各々メモリ・ページの仮想アドレス、仮想メモリ・アドレスによってアドレスされた情報が実際に格納されている物理ページ・アドレス、およびTビットを含むエントリを格納する位置を与える。有効なメモリ・ページが、変換されているターゲット命令を格納している場合、TLB21内のエントリに対してTビットをセットする。
また、回路20は、第2のTLB状構造23も含む。これを「微粒子Tビット・ルックアップ・テーブル」と呼ぶ。微粒子Tビット・ルックアップ・テーブル23は、TLB21よりも少ない数のエントリを有するのが通例である。何故なら、変換されたターゲット命令を格納するメモリ・ページが、データも格納することは少ないと予想されるからである。テーブル23は、各々、データおよび変換されたターゲット命令双方を格納するメモリ・ページの物理ページ・アドレスを含むエントリを格納する位置を与える。また、テーブル23の各エントリは、ソフトウエアの実施形態において利用したのと同じ1組のインディケータ(例えば、32ビット・ワード・マスク)も格納し、微粒子Tビットによって実際に保護されているサブエリアを示す。
回路20の動作を図3のフロー・チャートで示す。書き込みがメモリ・ページに行われようとすると、TLB21を検索し、アドレスされたメモリ・ページのエントリがテーブルに存在するか否か判定を行う。これを行うために、仮想メモリ・アドレスを含むエントリについて検索を実施する。このようなエントリが存在する場合、このページの物理アドレスを求め、このページに対するTビットの状態を判定する。Tビットがセットされていない場合、このメモリ・ページは、変換されたターゲット命令を格納するページではないので、実際にTビット保護を有するページではない。メモリ・ページが、変換されたターゲット命令を格納しており、したがってセットされているTビットによって保護されている場合、このページに対してTビット・トラップを発生し、エントリの物理アドレスを、微粒子Tビット・ルックアップ・テーブル23に送る。
テーブル23において検索を行い、物理アドレスを含むエントリを求める。物理アドレスを含むエントリがテーブル23内に存在しない場合、(1)メモリ・ページはデータおよび変換されたターゲット命令の双方は格納していないか、あるいは(2)メモリ・ページはデータおよび変換されたターゲット命令の双方は格納しているが、メモリ・ページのエントリはテーブル23に入力されていない。第1の状況では、TLB21内のエントリにおいてセットされているTビットが、ページが変換されたターゲット命令を含むことを示すので、Tビット・トラップ例外を発生し、このページに関連する変換バッファに格納されている変換を無効にする。第2の状況では、物理アドレスのエントリをテーブル23にロードし、書き込みを再度試す。
微粒子Tビット・ルックアップ・テーブル23内でヒットした場合、このページの特定のサブエリアに対する検査を実施し、アドレスされたサブエリアが微粒子Tビットによって保護されているか否か判定を行う。このサブエリアに対して微粒子Tビットがセットされていない場合、Tビット・トラップ例外を発生せず、データをメモリ・ページに格納する。このサブエリアに対して微粒子Tビットがセットされている場合、Tビット・トラップ例外を発生し、メモリ・ページの特定のサブエリア、TLB21内のエントリ、およびこのメモリ・ページの特定のサブエリアに関連する変換バッファ内に格納されている変換を無効にする。
アドレスされた領域に対して微粒子Tビットがセットされているか否か判定するために、回路20のテーブル23内で一致する物理アドレスがあった場合、本発明の一実施形態では、微粒子Tビットによって保護されているサブエリアを示すマスクを、レジスタ25内に置く。次に、仮想アドレスの下位ビットを用いて、アドレスされたサブエリアが微粒子Tビットによって保護されているか否か判定を行う。これらの下位ビットは、アドレスされたメモリ・ページ内において、書き込みアクセスによってアクセスされたアドレスを規定する。書き込みアクセスがアドレスされたページの特定のサブエリアを、レジスタ25におけるマスクの32ビットTビット・インディケータと照合し、そのアドレスが、微粒子Tビットによって保護された1つ以上のサブエリア内にあるか否か判定を行う。微粒子Tビットによって保護されているサブエリアへの書き込みである場合、トラップによってTビット例外を発生し、特定のサブエリア、これらのサブエリアに格納されている命令の変換、およびTLB21内でアドレスされたエントリを無効にする。
メモリ・ページのアドレスされたサブエリアが微粒子Tビットの保護を有するか否か判定を行うために、本発明の一実施形態は、下位12アドレス・ビットの内上位5ビットを利用して、32のサブエリアのどれが関与しているか判定を行う。このようなサブエリアは、各々、4096バイトのページに対して128バイトを含む。アドレスされた特定のサブエリアが判定されると、アドレスの下位7ビットを用いて、サブエリア内でアドレスされた具体的なバイトを判定する。アドレスされたバイトが判定されると、微粒子Tビットによって保護されているサブエリアを示すマスク(レジスタ25内のマスク)内においてアドレスされたサブエリアに対するインディケータを保持するビット位置を検査し、微粒子Tビットがセットされているか否か判定を行う。一実施形態では、書き込みは、8バイトに及ぶ場合もあるので、格納されているデータの長さ(引く1)を、サブエリア内の開始バイト・アドレスに加え、書き込みが次のサブエリア内に達するか否か判定を行う。書き込みが次のサブエリアに達する場合、マスクも検査し、次のサブエリアに対して微粒子Tビットがセットされているか否か判定を行う。
ハードウエアは、Tビット・マスク・レジスタ内に置かれているビット・ベクトルを取り出し、12ビット・ページ・オフセットの上位5ビットだけ、これをシフト・ダウンする(shift down)。これによって、書き込まれた特定のサブエリアに対するビットを下位ビット位置に移動し、次のサブエリアに対するビットを次の下位ビット位置に移動する。1つ(または次のサブエリアに書き込まれている場合は、2つ)の下位ビットを次に検査する。いずれかがセットされている場合、Tビット例外を発生する。
米国特許出願第08/702,771に記載されている基本的なTビット保護は、Tビットによって保護されているエリアに格納されているターゲット命令から変換されたホスト命令のアドレスを含むデータ構造を利用する。本発明が提供するTビット保護の微粒子の態様を最適に利用するために、このデータ構造を、図4に示すように変更する。コード・モーフィング・ソフトウエアは、物理ページ・マップと呼ばれるエントリのアレイを利用する。物理ページ・マップにおけるエントリは、物理アドレスの上位ビットによってインデックス付けされている。各エントリは、対応する物理ページからターゲット命令を変換する変換を識別するデータ構造に対するポインタである。物理ページ上のターゲット命令の各変換は、微粒子Tビット・インディケータ(例えば、32ビット・ワード・マスク)を有する。これは、微粒子Tビットによって保護されている、変換されたターゲット命令を含むメモリ・ページのサブエリアを識別する。Tビット例外がある場合、ストア・アドレスの下位ビットおよびストアのサイズから生成したマスクを、前述のように用いて、変換毎に、物理ページのアクセスされたサブエリアからの命令を変換するか否か判定を行う。
物理ページ・マップ内の各エントリは、変換に対するポインタのリストを示す。変換毎に、Tビット・マスクを関連付ける。あるページに対するかかるリスト上の変換に対するTビット・マスク同士のORを取ると、このページに対するTビット・マスクが形成される。これらを格納し、テーブル23を素早く埋め、更にテーブル23に新たなページをロードするために用いることができる。マスクは、新たな変換がリストに追加されたときにはいつでも、またはリスト上の変換が無効にされたときにはいつでも再計算される。
尚、ターゲット命令またはターゲット命令のシーケンスを変換する場合、ホスト命令のシーケンスが生成されることを注記しておく。多くの場合、これらのホスト命令は、コンピュータの動作速度を高めるために、並び替えられ更にスケジュールされる。その結果、本発明の一実施形態では、ストアのために変換が無効にされた場合、これらがストアによってアクセスされたのではないエリアからのターゲット命令を変換したのであっても、この変換に伴うホスト命令シーケンスの全てが無効とされる。
例示した好適な実施形態以外でも、種々の代替実施形態が利用可能である。例えば、Tビット・バッファ23は、物理アドレスではなく、仮想アドレスを利用してアクセスされてもよい。このような変更によって、バッファ21及び23を同じクロックでアクセスすることが可能となる。バッファ23を不要とし、TLB21内に単一のビットではなくTビット・マスク全体を格納するような、別の実施形態も可能である。他にも具体的な実施形態が当業者には想起されよう。
更に、本発明は、微粒子Tビット保護が与えられる、異なるサイズのサブエリアを作成することによって強化することも可能である。この結果を達成する一実施形態では、サブエリアを更に小さいサブエリアに分割し、これらにも、前述のより大きなサブエリアと同様に、微粒子Tビットの保護を与える、テーブル23と同様の追加のテーブルを作成する回路、およびストアの試行がより小さなサブエリアの保護されたサブエリアに対して行われたか否か判定を行う、関連する回路を備える。
以上、好適な実施形態に関して本発明を説明したが、本発明の精神および範囲から逸脱することなく、種々の変更や変形も当業者によって可能であることが認められよう。したがって、本発明は、特許請求の範囲に関して判断するべきである。
図1は、本発明を利用したマイクロプロセッサを示すブロック図である。 図2は、本発明の一部のハードウエア実施態様を示すブロック図である。 図3は、本発明の動作を示すフロー・チャートである。 図4は、本発明の一実施態様についての、ホスト・メモリにおけるデータ構造を示すブロック図である。

Claims (6)

  1. ターゲット命令セットからホスト命令セットに命令を変換するコンピュータにおいて、メモリ・ページに対する書き込みが、ホスト命令に変換されたターゲット命令に対するものか否かについて判定を行う方法であって、
    ホスト命令に変換されたターゲット命令を格納する物理的メモリ・ページに対して物理的にアドレスされた書き込みを検出するステップであって、
    物理的にアドレス可能なメモリ内に、ホスト命令に変換されたターゲット命令を格納している物理的メモリ・ページ毎にインディケータを格納するステップと、
    かかる物理的メモリ・ページの各々に書き込みが行われようとしたときに、前記インディケータを検出するステップと、
    から成るステップと、
    前記書き込みがアドレスされた前記物理的メモリ・ページのサブエリアが、変換されたターゲット命令を格納しているか否かについて、前記インディケータを記憶していないルックアップ・テーブル内に記憶されたサブエリア・インディケータを用いて検出を行うステップと、
    物理的にアドレスされたターゲット命令から変換されたホスト命令を無効にするステップと、
    を含む方法。
  2. ターゲット命令セットからホスト命令セットに命令を変換するコンピュータであって、
    ホスト命令を実行する処理ユニットと、
    システム・メモリと、
    システム・メモリへのアクセスを制御するメモリ管理ユニットであって、
    ホスト命令に変換されたターゲット命令を格納し、第1の数のエントリーを有するシステム・メモリの物理的部分を示す手段と、
    物理的にアドレスされた命令に応答して、ホスト命令に変換されたターゲット命令を格納し、前記第1の数のエントリーより少数の第2の数のエントリーを有するシステム・メモリの前記物理的部分のサブエリアを示す手段と、
    ターゲット命令のみを格納している物理的システム・メモリの部分に対して書き込みが行われようとしたときに、物理的システム・メモリのかかる部分に格納されているターゲット命令から変換されたホスト命令を無効にする手段と、
    ターゲット命令を格納している物理的システム・メモリの部分のサブエリアに対して書き込みが行われようとしたときに、物理的システム・メモリのかかるサブエリアに格納されているターゲット命令から変換されたホスト命令を無効にする手段と、
    を含むメモリ管理ユニットと、
    を備えているコンピュータ。
  3. ターゲット命令セットからホスト命令セットに命令を変換するコンピュータにおいてシステム・メモリに対するアクセスを制御するメモリ管理ユニットであって、
    物理的にアドレスされた命令に応答して、ホスト命令に変換されたターゲット命令を格納し、第1の数のエントリーを有するシステム・メモリの部分を示す手段と、
    物理的にアドレスされた命令に応答して、ホスト命令に変換されたターゲット命令を格納し、前記第1の数のエントリーより少数の第2の数のエントリーを有するシステム・メモリの前記部分のサブエリアを示す手段と、
    ターゲット命令のみを格納しているシステム・メモリの部分に対して書き込みが行われようとしたときに、システム・メモリのかかる部分に格納されているターゲット命令から変換されたホスト命令を無効にする手段と、
    ターゲット命令を格納しているシステム・メモリの部分のサブエリアに対して書き込みが行われようとしたときに、システム・メモリのかかるサブエリアに格納されているターゲット命令から変換されたホスト命令を無効にする手段と、
    を含むメモリ管理ユニット。
  4. コンピュータ・システムのメモリを保護するための方法であって、
    あるページ・テーブル・サイズを有しかつページ・テーブル・エントリーを含むページ・テーブルを維持するステップと、
    前記ページ・テーブル・サイズより小さな微粒子テーブル・サイズを有しかつ微粒子テーブル・エントリーを含む微粒子テーブルを維持するステップと、
    ターゲット命令をメモリ・ページの第1のサブエリアに記憶するステップと、
    前記ターゲット命令をホスト命令の変換されたグループに変換するステップと、
    前記メモリ・ページに対応するページ・テーブル・エントリ内にTビットをセットするステップと、
    前記第1のサブエリアに対応する微粒子テーブル・エントリ内に微粒子Tビットをセットするステップと、
    から成る方法。
  5. 請求項4記載のコンピュータ・システムのメモリを保護するための方法であって、更に、
    前記ホスト命令の変換されたグループを無効化すること無しに、前記メモリ・ページの第2のサブエリアにデータを書き込むステップを含む、
    ことを特徴とする方法。
  6. 請求項4記載のコンピュータ・システムのメモリを保護するための方法であって、更に、
    前記第1のサブエリアに対する書き込み処理を始めるステップと、
    前記Tビットを検査するステップと、
    前記微粒子Tビットを検査するステップと、
    前記ホスト命令の変換されたグループを無効化するステップと、
    を含むことを特徴とする方法。
JP2006112312A 1999-10-13 2006-04-14 微細粒度変換判別方法及び装置 Expired - Lifetime JP4417346B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/417,356 US6363336B1 (en) 1999-10-13 1999-10-13 Fine grain translation discrimination

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2001530689A Division JP4275884B2 (ja) 1999-10-13 2000-09-06 微細粒度変換判別

Publications (2)

Publication Number Publication Date
JP2006244516A true JP2006244516A (ja) 2006-09-14
JP4417346B2 JP4417346B2 (ja) 2010-02-17

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 Before (1)

Application Number Title Priority Date Filing Date
JP2001530689A Expired - Lifetime JP4275884B2 (ja) 1999-10-13 2000-09-06 微細粒度変換判別

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
US6826748B1 (en) 1999-01-28 2004-11-30 Ati International Srl Profiling program execution into registers of a computer
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
US8121828B2 (en) * 1999-01-28 2012-02-21 Ati Technologies Ulc Detecting conditions for transfer of execution from one computer instruction stream to another and executing transfer on satisfaction of the conditions
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
US7774583B1 (en) 2006-09-29 2010-08-10 Parag Gupta Processing bypass register file system and method
US7478226B1 (en) * 2006-09-29 2009-01-13 Transmeta Corporation Processing bypass directory tracking 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)

* Cited by examiner, † Cited by third party
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

Also Published As

Publication number Publication date
WO2001027743A1 (en) 2001-04-19
ATE377212T1 (de) 2007-11-15
US6363336B1 (en) 2002-03-26
EP1240582A4 (en) 2005-08-31
EP1240582A1 (en) 2002-09-18
CN1196994C (zh) 2005-04-13
DE60036960T2 (de) 2008-08-14
EP1240582B1 (en) 2007-10-31
CA2384254A1 (en) 2001-04-19
JP4417346B2 (ja) 2010-02-17
CA2384254C (en) 2004-11-02
JP4275884B2 (ja) 2009-06-10
CN1399735A (zh) 2003-02-26
KR100573446B1 (ko) 2006-04-26
JP2003511788A (ja) 2003-03-25
DE60036960D1 (de) 2007-12-13
KR20020039685A (ko) 2002-05-27

Similar Documents

Publication Publication Date Title
JP4417346B2 (ja) 微細粒度変換判別方法及び装置
US7404181B1 (en) Switching to original code comparison of modifiable code for translated code validity when frequency of detecting memory overwrites exceeds threshold
US6604187B1 (en) Providing global translations with address space numbers
US8028341B2 (en) Providing extended memory protection
EP0118828B1 (en) Instruction fetch apparatus and method of operating same
US5835962A (en) Parallel access micro-TLB to speed up address translation
JP3016575B2 (ja) 複数キャッシュ・メモリ・アクセス方法
JP5608594B2 (ja) プレロード命令制御
US20040199820A1 (en) Systems and methods for replicating virtual memory on a host computer and debugging using replicated memory
KR20060093140A (ko) 스토리지 무효화, 버퍼 엔트리 제거
JP2004503870A (ja) 変換索引バッファのフラッシュフィルタ
US5873123A (en) Processor and method for translating a nonphysical address into a physical address utilizing a selectively nonsequential search of page table entries
US11138128B2 (en) Controlling guard tag checking in memory accesses
US5764944A (en) Method and apparatus for TLB invalidation mechanism for protective page fault
CN112639750A (zh) 用于控制存储器存取的装置及方法
US8479182B2 (en) Program, apparatus, and method of optimizing a java object
KR100218617B1 (ko) 변환우선참조 버퍼를 이용하여 메모리를 관리하는 데이터 처리 시스템의 효율적인 메모리 관리 방법 및 시스템과 그를 이용한 데이터 처리 시스템
US10423537B2 (en) Address space resizing table for simulation of processing of target program code on a target data processing apparatus
US7971002B1 (en) Maintaining instruction coherency in a translation-based computer system architecture
JPH02239330A (ja) 情報処理装置
JPH02287850A (ja) 仮想メモリ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060627

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20080729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080908

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081205

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20081210

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090326

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090626

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090701

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090724

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090729

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20090814

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20090820

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090917

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090924

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091027

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: 20091125

R150 Certificate of patent or registration of utility model

Ref document number: 4417346

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: 20121204

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121204

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131204

Year of fee payment: 4

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