JP2007207248A - 複数のキャッシュ・ミス後の命令リスト順序付けのための方法 - Google Patents
複数のキャッシュ・ミス後の命令リスト順序付けのための方法 Download PDFInfo
- Publication number
- JP2007207248A JP2007207248A JP2007020663A JP2007020663A JP2007207248A JP 2007207248 A JP2007207248 A JP 2007207248A JP 2007020663 A JP2007020663 A JP 2007020663A JP 2007020663 A JP2007020663 A JP 2007020663A JP 2007207248 A JP2007207248 A JP 2007207248A
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- address
- address translation
- instructions
- translation
- 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
Links
Images
Classifications
-
- 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
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/68—Details of translation look-aside buffer [TLB]
- G06F2212/684—TLB miss handling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
Abstract
【課題】 命令キューにおける複数のキャッシュ・ミスを効率的に処理するためのシステム及び方法を提供する。
【解決手段】 本発明の実施形態は、複数の変換キャッシュ・ミスを処理しながら命令キューにおける命令を処理する際に、命令順を保つための方法及びシステムを提供する。命令は、CPUの入力命令キューに入れることができる。命令についてのアドレス変換の間に、後続の命令を処理して効率を高めることができる。処理される命令は、出力キューに置いて、順番にCPUに送信することができる。アドレス変換の際に、未解決のミスが処理されている間に変換キャッシュ・ミスが発生した場合には、パイプラインをストールさせて、第1のミスが処理された後に、第2のミスを引き起こしている命令と後続のすべての命令とを再び処理することができる。
【選択図】 図2
【解決手段】 本発明の実施形態は、複数の変換キャッシュ・ミスを処理しながら命令キューにおける命令を処理する際に、命令順を保つための方法及びシステムを提供する。命令は、CPUの入力命令キューに入れることができる。命令についてのアドレス変換の間に、後続の命令を処理して効率を高めることができる。処理される命令は、出力キューに置いて、順番にCPUに送信することができる。アドレス変換の際に、未解決のミスが処理されている間に変換キャッシュ・ミスが発生した場合には、パイプラインをストールさせて、第1のミスが処理された後に、第2のミスを引き起こしている命令と後続のすべての命令とを再び処理することができる。
【選択図】 図2
Description
本発明は、一般に、命令キューにおける命令を処理することに関する。より具体的には、本発明は、アドレス変換についての複数のキャッシュ・ミス後に、命令キューにおける命令順を維持することに関する。
コンピュータ・システムは、通常は、メモリ及び入力/出力(IO)装置に通信可能に結合された1つ又は複数の中央処理ユニット(CPU)を含む。メモリは、コンピュータによって行われる計算に必要な1つ又は複数のプログラムとデータとを含むランダム・アクセス・メモリ(RAM)とすることができる。例えば、メモリは、暗号化されるデータと共に、データを暗号化するためのプログラムを含むことができる。IO装置は、命令を発行し、CPUから応答を受信するように構成された、ビデオ・カード、音源カード、グラフィックス・プロセッシング・ユニットなどを含むことができる。
CPUは、メモリ又はIO装置から受信した1つ又は複数の命令を解釈して実行することができる。例えば、システムは、2つの数を加算する要求を受信することができる。CPUは、2つの数を加算するためのロジックを含む、(メモリ内の)プログラムの一連の命令を実行することができる。CPUはまた、加算される2つの数を入力する入力装置からユーザ入力を受信することができる。計算の終了時に、CPUは、表示スクリーン等の出力装置上に結果を表示することができる。
以前の命令を処理した後で次の命令を装置から送信することは長い時間がかかり、その間CPUが非稼働状態にならざるを得ないため、装置からの複数の命令を、CPUの命令キューに入れることができる。したがって、CPUは、以前の命令の処理後に、次の命令に高速アクセスできることになる。命令間の従属関係のために、所与の順序で命令を実行するようにCPUに要求することができる。したがって、命令をキューに置き、先入れ先出し(FIFO)順に処理して、従属命令が適切な順序で実行されることを確実にすることができる。例えば、ある記憶場所における読取り動作が、その記憶場所への書込み動作の後に行われる場合には、書込み動作は、最初に、読取り動作の際に正しいデータが読み取られることを確実にするように実行されなければならない。したがって、同じI/O装置から発信される命令は、受信された順序でCPUによって処理することができ、一方、異なる装置からの命令は、順序に関係なく処理することができる。
CPUによって受信される命令は、(a)アドレス変換を必要とする命令と、(b)アドレスのない命令とに大きく分類することができる。アドレスのない命令は、PowerPC eieio(Enforce In-order Execution of Input/Output;入出力の強制インオーダー実行)命令等の割り込み命令及び同期命令を含むことができる。割り込み命令は、何か他のことを行うために実行していることを保留するようにCPUに要求する、装置からCPUへの命令とすることができる。同期命令は、同期命令より前のすべての命令が処理されるまで後続の命令が処理されないようにするために発行することができる。これらの命令と関連付けられたアドレスは存在しないので、これらの命令は、アドレス変換を必要としない。
アドレス変換を必要とする命令は、読取り命令及び書込み命令を含む。読取り命令は、読み取られるデータの場所のアドレスを含むことができる。同様に、書込み命令は、データが書き込まれる場所についてのアドレスを含むことができる。命令に格納されるアドレスは仮想アドレスとすることができるため、該アドレスは、読取り又は書込みを行う前にメモリ内の実際の物理的位置への変換が必要な場合がある。
アドレス変換は、仮想アドレスを物理アドレスと対応させるために、セグメント・テーブル及び/又はページ・テーブルを調べることを必要とする。高速かつ効率的なアクセスのために、最近対象とされたアドレスについて、ページ・テーブル及びセグメント・テーブルのエントリをキャッシュに維持することができる。しかしながら、キャッシュを介して高速かつ効率的にアクセスしたとしても、アドレス変換の際に後続の命令がパイプラインにストールすることがある。この問題に対する1つの解決策は、アドレス変換の間に、命令キューおける後続の命令を処理することである。しかしながら、同じI/O装置からの命令については、依然として命令順を維持しなければならない。
変換の際に、仮想アドレスを物理アドレスに変換するテーブル・エントリがキャッシュ内に見つからない場合は、そのエントリは、メモリからフェッチされなければならない。変換キャッシュ・ミスがあるときにエントリをフェッチすることは、実質的な待ち時間をもたらすことになる。命令について変換キャッシュ・ミスが発生したときは、後続の命令についてのアドレス変換は、依然として続行することができる。しかしながら、システムによって1つの変換キャッシュ・ミスのみしか許容されない場合がある。したがって、変換キャッシュ・ミスが処理されている間は、変換キャッシュ・ヒット(ヒット・アンダー・ミス)となる後続の命令のみか、又はアドレス変換を必要としない命令のみを、処理することができる。変換キャッシュ・ミスを処理するのに長い時間がかかることがあるため、第1の変換キャッシュ・ミスが処理される間に第2の変換キャッシュ・ミスが発生する確率は、比較的高い。
この問題に対する1つの解決策は、一度に1つの命令のみを処理することである。しかしながら、上述のように、これは、アドレス変換の際に命令がパイプラインにストールする場合があるため、性能の深刻な低下を引き起こす可能性がある。別の解決策は、複数のミスを処理するためのハードウェアを設けることである。しかしながら、この解決策は、処理しなければならない複数のミスを増加させるのにつれて、システムがより複雑なものになる可能性がある。さらに別の解決策は、ソフトウェアがミスのないことを確実にする、変換キャッシュのプリロードを含むようにすることができる。しかしながら、この解決策は、好ましくないソフトウェアのオーバーヘッドを生じさせる。
したがって、必要とされているのは、命令キューにおける複数のキャッシュ・ミスを効率的に処理するためのシステム及び方法である。
本発明は、一般に、命令キューにおける命令を処理するための方法及びシステムを提供する。より具体的には、本発明は、アドレス変換についての複数のキャッシュ・ミス後に、命令キューにおける命令順を維持することに関する。
本発明の1つの実施形態は、1つ又は複数の入力/出力装置から受信される一連の命令群を格納している命令キューにおける複数の変換キャッシュ・ミスを処理するための方法を提供する。本方法は、一般に、命令キューにおける第1の命令が対象とするアドレスを、変換されるアドレス変換ロジックに送信するステップと、命令キューにおける第1の命令が対象とするアドレスの仮想−実変換を含む変換ロジックのアドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、メモリからアドレス変換エントリの取り出しを開始するステップとを含む。本方法は、第1の命令についてのアドレス変換エントリを取り出している間に、第1の命令の後に受信された1つ又は複数の命令を処理するステップであって、命令キューにおける第2の命令が対象とするアドレスを、変換されるアドレス変換ロジックに送信することを含む、ステップと、第2の命令が対象とするアドレスの仮想−実変換を含むアドレス変換ロジックのアドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、第1の命令が対象とするアドレスについてのアドレス変換エントリが取り出されるまで後続の命令群の処理をストールさせるステップであって、命令群の処理を停止すること、及び、命令キューにおける第2の命令をポイントするようにポインタを設定することを含む、ステップとをさらに含む。
本発明の別の実施形態は、一般に、1つ又は複数の入力/出力装置と、プロセッサとを含むシステムを提供する。プロセッサは、一般に、(i)1つ又は複数の入力/出力装置から受信される一連の命令群を格納するように構成された命令キューと、(ii)命令キューからの命令群をパイプライン方式で処理するように構成された入力コントローラと、(iii)入力コントローラによって処理される命令群が対象とするアドレス群を、仮想−実アドレス変換を含むエントリを有するアドレス変換テーブルを用いて変換するように構成されたアドレス変換ロジックと、(iv)第1の命令の後に受信される第2の命令が対象とするアドレスの仮想−実変換を含むアドレス変換ロジックのアドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、第1の命令が対象とするアドレスについてのアドレス変換エントリが取り出されるまで、アドレス変換エントリが取り出されている第1の命令の後に受信される命令群の入力コントローラによる処理をストールさせ、命令キューにおける第2の命令のアドレスにポインタを設定するように構成された制御ロジックと、を含む。
本発明のさらに別の実施形態は、一般に、(i)入力/出力装置からの一連の命令群を格納するように構成された命令キューと、(ii)命令キューにおける命令群をパイプライン方式で処理するように構成された入力コントローラと、(iii)キャッシュされたアドレス変換エントリを利用して仮想アドレスを物理アドレスに変換し、命令についてのアドレス変換エントリがキャッシュ内で見つからなかった場合には、対応するアドレス変換エントリをメモリから取り出すように構成されたアドレス変換ロジックと、(iv)第1の命令の後に受信される第2の命令が対象とするアドレスについてのアドレス変換エントリがアドレス変換テーブルに存在しないことを検出したことに応答して、第1の命令が対象とするアドレスについてのアドレス変換エントリが取り出されるまで、第1の命令の後に受信される命令群の処理をストールさせ、命令キューにおける第2の命令のアドレスにポインタを設定するように構成された出力コントローラと、を含むマイクロプロセッサを含む。
以下、図面を参照して、本発明を説明するが、添付図面は、本発明の典型的な実施形態のみを示すものであり、したがって発明の範囲を限定するものと考えられるべきではなく、本発明に関して同等に効果的な他の実施形態を認めることができることに留意されたい。
本発明の実施形態は、複数の変換キャッシュ・ミスを処理しながら命令キューにおける命令を処理する際に、命令順を保つための方法及びシステムを提供する。命令は、CPUの入力命令キューに入れることができる。命令についてのアドレス変換の間に、後続の命令を処理して効率を高めることができる。処理される命令は、出力キューに置いて、I/O装置によって順番にCPUに送信することができる。アドレス変換の際に、未解決のミスが処理されている間に変換キャッシュ・ミスが発生した場合には、パイプラインをストールさせて、第1のミスが処理された後に、第2のミスを引き起こしている命令と後続のすべての命令とを再び処理することができる。
以下においては、本発明の実施形態を参照する。しかしながら、本発明は、説明される特定の実施形態に限定されるものではないことを理解すべきである。
例示的なシステム
図1は、本発明の実施形態を実装することができる例示的なシステム100を示す。システム100は、入力/出力(IO)装置120及びメモリ140に通信可能に結合された中央処理ユニット(CPU)110を含むことができる。例えば、CPU110は、IOブリッジ120を介して、バスによってIO装置130及びメモリ140に結合することができる。IO装置130は、示されるように、例えば命令131によってCPU110に入力を与えるように構成することができる。例示的なIO装置は、グラフィックス・プロセッシング・ユニット、ビデオ・カード、音源カード、ダイナミック・ランダム・アクセス・メモリ(DRAM)等を含む。
図1は、本発明の実施形態を実装することができる例示的なシステム100を示す。システム100は、入力/出力(IO)装置120及びメモリ140に通信可能に結合された中央処理ユニット(CPU)110を含むことができる。例えば、CPU110は、IOブリッジ120を介して、バスによってIO装置130及びメモリ140に結合することができる。IO装置130は、示されるように、例えば命令131によってCPU110に入力を与えるように構成することができる。例示的なIO装置は、グラフィックス・プロセッシング・ユニット、ビデオ・カード、音源カード、ダイナミック・ランダム・アクセス・メモリ(DRAM)等を含む。
IO装置130は、CPU110から応答132を受信するように構成することもできる。例えば、応答132は、ユーザに表示することができる、CPU110による計算の結果を含むことができる。応答132は、上述のDRAM装置などのメモリ装置上で行われる書込み動作を含むこともできる。図1においては1つのIO装置130が示されているが、当業者であれば、多くのIO装置130を同一の又は複数のバスでCPUに結合できることが分かるであろう。
メモリ140は、ダイナミック・ランダム・アクセス・メモリ(DRAM)などのランダム・アクセス・メモリであることが好ましい。メモリ140は、CPUによって処理されている1つ又は複数のプログラム及び/又はデータ構造を保持するように、十分に大きなものとすることができる。メモリ140は単一の存在として示されているが、メモリ140は、実際には複数のモジュールを含むことができ、高速キャッシュから、低速であるがより大きいDRAMチップに至るまで、複数のレベルで存在できることを理解すべきである。
CPU110は、命令プロセッサ111、変換ロジック112、組み込みプロセッサ113及びキャッシュ114を含むことができる。命令プロセッサ111は、IO装置130から1つ又は複数の命令131を受信し、命令を処理することができる。命令131の各々は、アドレス変換を必要とする命令と、アドレスのない命令とに大きく分類することができる。したがって、命令を処理することは、命令がアドレス変換を必要とするどうかを判定することを含むものとすることができる。命令がアドレス変換を必要とする場合には、命令プロセッサは、アドレス変換のために命令を変換ロジック112にディスパッチすることができる。変換を必要とするこれらの命令131が変換された後に、命令プロセッサは、メモリ・コントローラ118上で組み込みプロセッサ113によって処理されるように、順序付け命令133をオンチップ・バス117上に置くことができる。
変換ロジック112は、命令プロセッサ111から、アドレス変換を必要とする1つ又は複数の命令を受信することができる。例えば、アドレス変換を必要とする命令は、読取り命令及び書込み命令を含むことができる。読取り命令は、読み取られるデータの場所についてのアドレスを含むことができる。同様に、書込み命令は、データが書き込まれる場所についてのアドレスを含むことができる。
変換を必要とする命令に含まれるアドレスは、仮想アドレスとすることができる。仮想アドレスは、特定のプログラムに割り当てられる仮想メモリを参照することができる。仮想メモリは、プログラムに割り当てられる連続的なメモリ空間とすることができ、メモリ140における異なる非連続の物理メモリ位置にマッピングされる。例えば、仮想メモリ・アドレスは、物理メモリ及び/又は二次ストレージにおける異なる非連続のメモリ位置にマッピングすることができる。したがって、仮想メモリ・アドレスが用いられるときは、仮想アドレスを実際の物理アドレスに変換して、その場所で動作を行わなければならない。
アドレス変換は、セグメント・テーブル及び/又はページ・テーブルを調べることを伴うものとすることができる。セグメント・テーブル及びページ・テーブルは、仮想アドレスを物理アドレスと対応させることができる。これらの変換テーブルのエントリは、メモリ140に常駐させることができる。以前にアクセスされたアドレスに次にアクセスする場合の変換時間を短くするように、最近アクセスされたデータについてのアドレス変換を、キャッシュ114におけるセグメント・テーブル・エントリ116及びページ・テーブル・エントリ115に維持することができる。アドレス変換がキャッシュ114に見つからない場合には、必要なときにメモリ又は他のストレージからキャッシュに変換を入れることができる。
セグメント・テーブル・エントリ116は、仮想アドレスが特定のプログラムに割り当てられたメモリのセグメント内にあるかどうかを示すことができる。セグメントは、仮想メモリにおける可変サイズのブロックとすることができ、各々のブロックは、特定のプログラム又は処理に割り当てられる。したがって、セグメント・テーブルは、最初にアクセスされることになる。仮想アドレスがプログラムのためのセグメントの境界外の領域を参照した場合には、セグメンテーション違反が発生することがある。
各々のセグメントは、ページと呼ばれる固定サイズのブロックにさらに分割することができる。仮想アドレスは、セグメントに含まれるページの1つ又は複数をアドレス指定することができる。ページ・テーブル115は、仮想アドレスをメモリ140のページにマッピングすることができる。メモリにおいてページが見つからない場合には、所望のページが存在する可能性がある二次ストレージからそのページを取り出すことができる。
命令処理
図2は、本発明の実施形態に係る、IO装置130からの命令を処理するように構成することができる命令プロセッサ111の詳細図である。命令プロセッサ111は、入力命令FIFO201、変換インタフェース入力制御部202、変換インタフェース出力制御部203、及び命令FIFO204を含むものとすることができる。入力命令FIFO201は、IO装置120によってCPUに発行される少なくとも所定の数の命令131を保持するのに十分な大きさのバッファとすることができる。命令131は、受信された順に連続して、入力命令FIFO201に入れることができる。
図2は、本発明の実施形態に係る、IO装置130からの命令を処理するように構成することができる命令プロセッサ111の詳細図である。命令プロセッサ111は、入力命令FIFO201、変換インタフェース入力制御部202、変換インタフェース出力制御部203、及び命令FIFO204を含むものとすることができる。入力命令FIFO201は、IO装置120によってCPUに発行される少なくとも所定の数の命令131を保持するのに十分な大きさのバッファとすることができる。命令131は、受信された順に連続して、入力命令FIFO201に入れることができる。
変換インタフェース入力制御部(TIIC)202は、入力命令FIFO201を監視し、管理することができる。TIICは、読取りポインタ210及び書込みポインタ211を保持することができる。読取りポインタ210は、入力命令FIFOにおいて、処理するのに使用可能な次の命令をポイントすることができる。書込みポインタ211は、入力命令FIFOにおいて、新たに受信された命令を書き込むのに使用可能な次の場所をポイントすることができる。各々の命令が、処理のために入力命令FIFOから取り出される度に、読取りポインタを増加させることができる。同様に、IO装置から各々の命令を受信する度に、書込みポインタも増加させることができる。読取りポインタ又は書込みポインタが、入力命令FIFOの最後に達すると、ポインタは、次の増加の時に入力命令FIFOの先頭をポイントするようにリセットすることができる。
TIIC202は、書込みポインタが読取りポインタを超えて増加することを防ぐことによって、入力命令FIFOがオーバーフローしないことを確実にするように構成することができる。例えば、書込みポインタが増加し、読取りポインタと同じ場所をポイントする場合には、バッファは、未解決命令で一杯となっている可能性がある。これ以上命令を受信しない場合は、TIICは、命令をCPU内にラッチできないことを示すエラー・メッセージを送信することができる。
TIIC202は、入力命令FIFO201において受信された命令がアドレス変換を必要とする命令であるかどうかを判定することもできる。変換を必要とする命令が受信された場合には、処理するために命令を変換ロジック112に送ることができる。しかしながら、命令がアドレス変換を必要としない場合には、命令をパイプラインに渡すことができる。
図3は、入力命令FIFOにおける命令を処理するためにTIICによって行われる例示的な動作のフローチャートである。TIICによって行われる動作は、パイプライン動作とすることができる。したがって、常に複数の命令を処理している状態とすることができる。例えば、第1の命令は、処理するために、入力命令FIFOからTIICによって受信することができる。第1の命令が受信されている間に、以前に受信された第2の命令は、TIICによってアドレス変換のために変換ロジックに送信することができる。
TIICにおける動作は、ステップ301において、入力命令FIFOから命令を受信することによって開始する。例えば、TIICは、読取りポインタによってポイントされた命令を読み取ることができる。命令が読み取られた後に、読取りポインタは、次の命令をポイントするように増加させることができる。ステップ302において、TIICは、取り出された命令がアドレス変換を必要とするかどうかを判定することができる。命令がアドレス変換を必要とすると判定された場合には、ステップ303において、アドレス変換のために命令を変換ロジック112に送信することができる。ステップ304において、変換ロジックに送信された命令の入力命令FIFOアドレスをパイプラインに送信することができる。ステップ302において命令がアドレス変換を必要としないと判定された場合には、ステップ305において、命令と、命令の入力命令FIFOアドレスとをパイプラインに送信することができる。
図2に戻ると、変換ロジック112は、TIICからのアドレス変換要求を処理することができる。アドレス変換は、セグメント・テーブル及びページ・テーブルを調べて、仮想アドレスをメモリ140の実際の物理アドレスに転換することを伴うものとすることができる。幾つかの実施形態においては、変換ロジックは、ページ・テーブル・キャッシュ及びセグメント・テーブル・キャッシュへのパイプライン・アクセスが可能なものとすることができる。アドレス変換の際にページ・キャッシュ・ミス又はセグメント・キャッシュ・ミスが生じた場合には、キャッシュは、キャッシュ・ミスを処理しながら、後続の命令のためにキャッシュ・ヒットを供給し続けることができる。
アドレス変換の際にミスが発生しなかった場合は、変換ロジックは、図2に示されるように、変換インタフェース出力制御部(TIOC)203に変換結果を与える。しかしながら、ミスが発生した場合には、変換ロジックは、ミスを引き起こしている命令に関してTIOCに通知することができる。
図4は、アドレス変換のために変換ロジックによって行われる例示的な動作のフローチャートである。TIICと同様に、変換ロジックによって行われる動作もパイプライン処理することができる。したがって、常に複数の命令を処理している状態とすることができる。動作は、ステップ401において、TIICからアドレス変換の要求を受信することによって開始する。ステップ402において、変換ロジックは、セグメント・テーブル・キャッシュ及びページ・テーブル・キャッシュにアクセスして、仮想アドレスを物理アドレスに変換するための対応するエントリを取り出すことができる。ステップ403において、対応するページ・テーブル・エントリ及びセグメント・テーブル・エントリがキャッシュにおいて発見された場合には、ステップ404において、アドレス変換結果をTIOCに送信することができる。
しかしながら、セグメント・テーブル・キャッシュ及びページ・テーブル・キャッシュにおいてページ・テーブル・エントリ及びセグメント・テーブル・エントリが発見されなかった場合には、ステップ405において、命令アドレスについての変換ミスの通知をTIOCに送信することができる。変換ロジックは、ステップ406において、ミスを処理する手順を開始することができる。例えば、ミスを処理することは、対応するページ・テーブル・エントリ及びセグメント・テーブル・エントリについての要求をメモリに送信することを含むことができる。
幾つかの実施形態の場合には、変換ロジックは、処理中の未解決のミスが存在しているときには1つの変換キャッシュ・ミスしか処理できないことに留意することが重要である。第2のミスが発生した場合には、ミスの通知をTIOCに送信することができる。未解決のミスを処理しながら第2のミスを処理することは、以下により詳細に説明される。さらに、未解決のミスを処理しているときに、アドレス変換を必要とする後続の命令を処理し続けることができる。メモリ又は二次ストレージからページ・テーブル・エントリ及びセグメント・テーブル・エントリを取り出すのに比較的長い時間がかかる場合があるため、後続の命令をストールさせることによって、実質的に性能を低下させる可能性がある。したがって、変換キャッシュ・ヒットを伴う後続の命令は、ミスを処理しながら処理することができる。
ヒット・アンダー・ミスの処理
図2に戻ると、TIOCは、変換ロジックによって処理されている未解決のミスの数を追跡し、命令間の従属関係に基づいて命令順を保つことができる。例えば、TIOCは、アドレス変換のために変換ロジックに送信された命令とアドレス変換を必要としない命令の両方について、入力命令FIFOアドレスを受信することができる。命令を同じIO装置から順不同で受信した場合には、TIOCは、命令を命令キュー204に維持し、これらの命令をその入力命令FIFOアドレスに基づいて必要な順序でCPUにディスパッチすることができる。図2は、TIOCによって命令キュー204に格納されている命令を示す。命令が、1つのIO装置に関して順不同(out of order)ではない場合には、TIOCは、示されるように、命令133をCPUにディスパッチすることができる。
図2に戻ると、TIOCは、変換ロジックによって処理されている未解決のミスの数を追跡し、命令間の従属関係に基づいて命令順を保つことができる。例えば、TIOCは、アドレス変換のために変換ロジックに送信された命令とアドレス変換を必要としない命令の両方について、入力命令FIFOアドレスを受信することができる。命令を同じIO装置から順不同で受信した場合には、TIOCは、命令を命令キュー204に維持し、これらの命令をその入力命令FIFOアドレスに基づいて必要な順序でCPUにディスパッチすることができる。図2は、TIOCによって命令キュー204に格納されている命令を示す。命令が、1つのIO装置に関して順不同(out of order)ではない場合には、TIOCは、示されるように、命令133をCPUにディスパッチすることができる。
例えば、入力命令FIFOにおける第1の命令が、アドレス変換を必要とし、アドレス変換のために変換ロジックに転送される場合がある。第1の命令が変換されている間に、アドレス変換を必要としない、第1の命令に従属する後続の第2の命令を、第1の命令についての変換が完了する前にTIOCに渡すことができる。従属関係があるため、TIOCは、第1の命令が処理されるまで、第2の命令を命令キューに維持することができる。その後、第2の命令の前に第1の命令をCPUにディスパッチすることができる。同様に、第1の命令が変換されている間に、第1の命令に従属する後続の第3の命令が変換キャッシュ・ヒットとなり、TIOCに渡される場合がある。第2の命令の場合と同様に、第3の命令もまた、第1の命令が処理されてディスパッチされるまで、命令キューに維持することができる。
TIOCは、ミス・アンダー・ミスを特定するために、変換ロジックにおいて発生するミスの数を監視することもできる。上述のとおり、変換ロジックにおいてミスが発生する度に、ミスとなっている命令を特定する通知をTIOCに送信することができる。幾つかの実施形態においては、一度に1つの変換キャッシュ・ミスしか処理できないため、第1のミスが処理されている間に第2のミスが発生した場合には、TIOCは、第1のミスが処理されるまでパイプラインをストール(stall)させることができる。図2は、第2のミスを引き起こしている命令を特定する、TIOCからTIICに送信されるストール・パイプライン信号を示す。
図5は、アドレス変換ミスを処理するためにTIOCによって行われる例示的な動作のフローチャートである。動作は、ステップ501において、変換ロジックからミス通知を受信することによって開始する。ステップ502において、TIOCは、変換ロジックによって処理されている何らかの未解決のミスが存在するかどうかを判定する。未解決のミスが、現時点で変換ロジックによって処理されていない場合には、ステップ511において、TIOCは、命令の入力命令FIFOアドレスを記録する。ステップ512において、TIOCは、ミスを引き起こしている命令の後の命令の処理を可能にし、それによって性能を向上させることができる。他方で、ステップ502において、未解決のミスが処理されていると判定された場合には、パイプラインをストールさせることができる。これは、ステップ503において、第2のミスを引き起こしている命令の入力命令FIFOアドレスと共にストール指示をTIICに送信することによって、行うことができる。ステップ504において、TIOCは、第2のミスを引き起こしている命令の後のすべての命令を無視することができる。TIOCは、これらの命令を、その入力命令FIFOアドレスによって判定することができる。
TIOCからストール指示を受信したことに応答して、TIICは、TIOCからさらに通知されるまで命令を発行しないことによって、パイプラインをストールさせることができる。パイプラインは、第1のミスが処理され、変換結果がTIOCによって受信されるまで、ストールさせることができる。TIICはまた、入力命令FIFOにおいて、第2のミスを引き起こしている命令をポイントするように、読取りポインタをリセットすることができる。したがって、第1のミスが処理された後で、第2のミスを引き起こしている命令及び後続の命令を再発行することができる。
パイプラインは、第2のミスを引き起こしている命令及び後続の命令を再発行する前に、空にすることができる。図6は、未解決の変換キャッシュ・ミスが処理された後で、第2のミスを引き起こしている命令を再発行するために行われる例示的な動作のフローチャートである。動作は、ステップ601において、第1のミスの処理を完了することによって開始する。ステップ602において、第1のミスが処理されたことを示す通知を、変換ロジックによってTIOCに送信することができる。ステップ603において、パイプラインを空にすることができるように、所定の時間の間パイプラインをストールさせることができる。
その後、ステップ604において、第2のミスを引き起こしている命令及び後続の命令の処理を再開することができる。第2のミスを引き起こしている命令及び後続の命令の処理を再開するための1つの簡単な方法は、命令を再発行することである。例えば、TIICは、上述のように、ミスを引き起こしている第2の命令及び後続の命令を入力命令FIFOから受信して、命令を処理することができる。したがって、命令順は保たれる。
結論
所与の命令についてのアドレス変換の間に後続の命令の処理を可能にすることによって、全体的な性能を大幅に向上させることができる。さらに、本発明の実施形態は、アドレス変換キャッシュ・ミスを監視し、ミス・アンダー・ミスが発生した場合にはパイプラインをストールさせることによって、複数の変換キャッシュ・ミスを処理しながら命令順を維持することを容易なものとすることができる。
所与の命令についてのアドレス変換の間に後続の命令の処理を可能にすることによって、全体的な性能を大幅に向上させることができる。さらに、本発明の実施形態は、アドレス変換キャッシュ・ミスを監視し、ミス・アンダー・ミスが発生した場合にはパイプラインをストールさせることによって、複数の変換キャッシュ・ミスを処理しながら命令順を維持することを容易なものとすることができる。
上述の事項は本発明の実施形態に向けられるものであるが、本発明の技術的な範囲から逸脱することなく本発明の他の実施形態及び更なる実施形態を考えることが可能であることを、この分野の当業者なら理解することだろう。
Claims (20)
- 1つ又は複数の入力/出力装置から受信される一連の命令群を格納している命令キューにおける複数の変換キャッシュ・ミスを処理するための方法であって、
前記命令キューにおける第1の命令が対象とするアドレスを、変換されるアドレス変換ロジックに送信するステップと、
前記命令キューにおける前記第1の命令が対象とする前記アドレスの仮想−実変換を含む前記変換ロジックのアドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、メモリから前記アドレス変換エントリの取り出しを開始するステップと、
前記第1の命令についての前記アドレス変換エントリを取り出している間に、前記第1の命令の後に受信された1つ又は複数の命令を処理するステップであって、前記命令キューにおける第2の命令が対象とするアドレスを、変換される前記アドレス変換ロジックに送信することを含む、ステップと、
前記第2の命令が対象とする前記アドレスの仮想−実変換を含む前記アドレス変換ロジックの前記アドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、前記第1の命令が対象とする前記アドレスについての前記アドレス変換エントリが取り出されるまで後続の命令群の処理をストールさせるステップであって、命令群の処理を停止すること、及び、前記命令キューにおける前記第2の命令をポイントするようにポインタを設定することを含む、ステップと、
を含む方法。 - 前記命令群は、
アドレス変換を必要とする命令群と、
アドレスのない命令群と、
のうち1つを含む、請求項1に記載の方法。 - 前記アドレス変換テーブルは、セグメント・テーブル及びページ・テーブルを含む、請求項1に記載の方法。
- 前記命令キューは先入れ先出しキューである、請求項1に記載の方法。
- 前記第1の命令についてのアドレス変換が受信された後で、前記第2の命令と、前記第2の命令に続く命令群とを処理するステップをさらに含む、請求項1に記載の方法。
- 処理される命令群を第2の命令キューに格納するステップと、
各々のIO装置について、各々のIO装置から受信された前記処理される命令群を、前記命令群が前記IO装置から受信された順にCPUに発行するステップと、
をさらに含む、請求項1に記載の方法。 - 異なるIO装置から順不同で受信された処理される命令群を発行するステップをさらに含む、請求項6に記載の方法。
- 1つ又は複数の入力/出力装置と、
(i)前記1つ又は複数の入力/出力装置から受信される一連の命令群を格納するように構成された命令キューと、(ii)前記命令キューからの前記命令群をパイプライン方式で処理するように構成された入力コントローラと、(iii)前記入力コントローラによって処理される命令群が対象とするアドレス群を、仮想−実アドレス変換を含むエントリを有するアドレス変換テーブルを用いて変換するように構成されたアドレス変換ロジックと、(iv)第1の命令の後に受信された第2の命令が対象とするアドレスの仮想−実変換を含む前記アドレス変換ロジックの前記アドレス変換テーブルにアドレス変換エントリが存在しないとの判定に応答して、前記第1の命令が対象とするアドレスについてのアドレス変換エントリが取り出されるまで、前記アドレス変換エントリが取り出されている前記第1の命令の後に受信された命令群の前記入力コントローラによる処理をストールさせ、前記命令キューにおける前記第2の命令の前記アドレスにポインタを設定するように構成された制御ロジックと、を含むプロセッサと、
を含むシステム。 - 前記アドレス変換ロジックは、
前記変換されるアドレス群を前記制御ロジックに与え、
アドレスについての変換が前記アドレス変換テーブルにおいて見つからなかった場合には、前記制御ロジックに通知する、
ようにさらに構成された、請求項8に記載のシステム。 - 命令群の処理をストールさせるために、前記制御ロジックは、ストール信号と前記命令キューにおける前記第2の命令の前記アドレスとを前記入力コントローラに送信するように構成された、請求項8に記載のシステム。
- 前記入力コントローラは、前記第1の命令についてのアドレス変換が取り出された後で前記第2の命令と後続の命令群とを発行するように構成された、請求項8に記載のシステム。
- (i)入力/出力装置からの一連の命令群を格納するように構成された命令キューと、
(ii)前記命令キューにおける前記命令群をパイプライン方式で処理するように構成された入力コントローラと、
(iii)キャッシュされたアドレス変換エントリを利用して仮想アドレスを物理アドレスに変換し、命令についてのアドレス変換エントリがキャッシュにおいて見つからなかった場合には、対応するアドレス変換エントリをメモリから取り出すように構成されたアドレス変換ロジックと、
(iv)第1の命令の後に受信された第2の命令が対象とするアドレスについてのアドレス変換エントリがアドレス変換テーブルに存在しないことを検出したことに応答して、前記第1の命令が対象とするアドレスについてのアドレス変換エントリが取り出されるまで、前記第1の命令の後に受信された命令群の処理をストールさせ、前記命令キューにおける前記第2の命令の前記アドレスにポインタを設定するように構成された出力コントローラと、
を含むマイクロプロセッサ。 - 前記命令キューは先入れ先出しキューである、請求項12に記載のマイクロプロセッサ。
- 前記アドレス変換テーブルは、セグメント・テーブル及びページ・テーブルのうちの1つである、請求項12に記載のマイクロプロセッサ。
- 命令がアドレス変換を必要とするとの判定に応答して、前記入力コントローラは、
前記命令を前記アドレス変換ロジックに送信し、
前記命令キューにおける前記命令のアドレスを前記出力コントローラに送信する、
ように構成された、請求項12に記載のマイクロプロセッサ。 - 前記アドレス変換ロジックは、
変換されるアドレス群を前記出力コントローラに与え、
アドレスについての変換が前記アドレス変換テーブルにおいて見つからなかった場合には、前記出力コントローラに通知する、
ようにさらに構成された、請求項12に記載のマイクロプロセッサ。 - 命令群の処理をストールさせるために、前記出力コントローラは、ストール信号と前記命令キューにおける前記第2の命令の前記アドレスとを前記入力コントローラに送信するように構成された、請求項12に記載のマイクロプロセッサ。
- 前記入力コントローラは、前記第1の命令についてのアドレス変換が取り出された後で前記第2の命令と後続の命令群とを発行するように構成された、請求項12に記載のマイクロプロセッサ。
- 前記出力コントローラは、
処理される命令群を第2の命令キューに格納し、
各々のIO装置について、各々のIO装置から受信された前記処理される命令群を、前記命令群が前記IO装置から受信された順にCPUに発行する、
ようにさらに構成された、請求項12に記載のマイクロプロセッサ。 - 前記出力コントローラは、異なるIO装置から順不同で受信された処理される命令群を発行するようにさらに構成された、請求項19に記載のマイクロプロセッサ。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/344,910 US20070180158A1 (en) | 2006-02-01 | 2006-02-01 | Method for command list ordering after multiple cache misses |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2007207248A true JP2007207248A (ja) | 2007-08-16 |
Family
ID=38323468
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007020663A Pending JP2007207248A (ja) | 2006-02-01 | 2007-01-31 | 複数のキャッシュ・ミス後の命令リスト順序付けのための方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20070180158A1 (ja) |
JP (1) | JP2007207248A (ja) |
CN (1) | CN100489816C (ja) |
TW (1) | TW200809501A (ja) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101227390B (zh) * | 2008-01-22 | 2011-10-26 | 中兴通讯股份有限公司 | 对网络地址转换的映射条目生成顺序实现优先级的方法 |
US8401952B1 (en) | 2009-03-24 | 2013-03-19 | Trading Technologies International, Inc. | Trade order submission for electronic trading |
US8386748B2 (en) * | 2009-10-29 | 2013-02-26 | Apple Inc. | Address translation unit with multiple virtual queues |
CN104823154B (zh) * | 2012-06-15 | 2017-12-29 | 英特尔公司 | 包括虚拟加载存储队列的处理器和系统 |
CN104823168B (zh) | 2012-06-15 | 2018-11-09 | 英特尔公司 | 用于实现从由加载存储重新排序和优化导致的推测性转发遗漏预测/错误中恢复的方法和系统 |
TWI599879B (zh) | 2012-06-15 | 2017-09-21 | 英特爾股份有限公司 | 在處理器中之免消歧義失序載入儲存佇列方法和微處理器 |
KR101826399B1 (ko) | 2012-06-15 | 2018-02-06 | 인텔 코포레이션 | Load store 재정렬 및 최적화를 구현하는 명령어 정의 |
EP2862062B1 (en) | 2012-06-15 | 2024-03-06 | Intel Corporation | A virtual load store queue having a dynamic dispatch window with a distributed structure |
WO2013188306A1 (en) | 2012-06-15 | 2013-12-19 | Soft Machines, Inc. | Reordered speculative instruction sequences with a disambiguation-free out of order load store queue |
US10140210B2 (en) | 2013-09-24 | 2018-11-27 | Intel Corporation | Method and apparatus for cache occupancy determination and instruction scheduling |
CN108733585B (zh) * | 2017-04-17 | 2022-05-13 | 伊姆西Ip控股有限责任公司 | 缓存系统及相关方法 |
CN111858090B (zh) * | 2020-06-30 | 2024-02-09 | 广东浪潮大数据研究有限公司 | 一种数据处理方法、系统、电子设备及存储介质 |
US11545209B2 (en) * | 2021-05-28 | 2023-01-03 | Micron Technology, Inc. | Power savings mode toggling to prevent bias temperature instability |
US11581049B2 (en) * | 2021-06-01 | 2023-02-14 | Sandisk Technologies Llc | System and methods for programming nonvolatile memory having partial select gate drains |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5621896A (en) * | 1994-06-01 | 1997-04-15 | Motorola, Inc. | Data processor with unified store queue permitting hit under miss memory accesses |
CN1220143C (zh) * | 2001-01-12 | 2005-09-21 | 皇家菲利浦电子有限公司 | 存储器地址转换单元和方法以及包含这种单元的图像处理装置 |
US6963964B2 (en) * | 2002-03-14 | 2005-11-08 | International Business Machines Corporation | Method and apparatus for detecting pipeline address conflict using parallel compares of multiple real addresses |
US6981125B2 (en) * | 2003-04-22 | 2005-12-27 | International Business Machines Corporation | Method and apparatus for managing shared virtual storage in an information handling system |
US7721067B2 (en) * | 2006-01-20 | 2010-05-18 | Qualcomm Incorporated | Translation lookaside buffer manipulation |
-
2006
- 2006-02-01 US US11/344,910 patent/US20070180158A1/en not_active Abandoned
-
2007
- 2007-01-08 CN CN200710001449.XA patent/CN100489816C/zh not_active Expired - Fee Related
- 2007-01-31 JP JP2007020663A patent/JP2007207248A/ja active Pending
- 2007-01-31 TW TW096103588A patent/TW200809501A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
TW200809501A (en) | 2008-02-16 |
US20070180158A1 (en) | 2007-08-02 |
CN100489816C (zh) | 2009-05-20 |
CN101013402A (zh) | 2007-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2007207248A (ja) | 複数のキャッシュ・ミス後の命令リスト順序付けのための方法 | |
US7620749B2 (en) | Descriptor prefetch mechanism for high latency and out of order DMA device | |
EP2476060B1 (en) | Store aware prefetching for a datastream | |
US20070180156A1 (en) | Method for completing IO commands after an IO translation miss | |
US8024547B2 (en) | Virtual memory translation with pre-fetch prediction | |
JP3640355B2 (ja) | キャッシュ制御の命令プリフェッチ方法及びシステム | |
US20080294867A1 (en) | Arithmetic processor, information procesing apparatus and memory access method in arithmetic processor | |
US20150227312A1 (en) | Method for steering dma write requests to cache memory | |
KR20040045035A (ko) | 힌트 버퍼를 이용한 메모리 액세스 대기시간 숨김 | |
JP5444889B2 (ja) | 演算処理装置および演算処理装置の制御方法 | |
EP3072052A1 (en) | Memory unit and method | |
JP5089226B2 (ja) | I/oアドレス変換キャッシュ・ミスのソフトウェア・ミス処理用ハードウェア支援エクセプション | |
KR20200017364A (ko) | PCIe 메모리 요청들의 라우팅을 촉진하기 위해 NVMe 물리적 영역 페이지 목록 포인터들 및 데이터 포인터들을 수정 | |
US20090187695A1 (en) | Handling concurrent address translation cache misses and hits under those misses while maintaining command order | |
US10552334B2 (en) | Systems and methods for acquiring data for loads at different access times from hierarchical sources using a load queue as a temporary storage buffer and completing the load early | |
CN110291507B (zh) | 用于提供对存储器系统的加速访问的方法和装置 | |
US9152566B2 (en) | Prefetch address translation using prefetch buffer based on availability of address translation logic | |
JP2007207249A (ja) | ミス衝突処理状態でのキャッシュ・ヒットのための方法、システムおよびマイクロプロセッサ | |
US7451274B2 (en) | Memory control device, move-in buffer control method | |
TWI469044B (zh) | 於指令存取前藉由運行標籤查找之隱藏指令快取未命中潛時的技術 | |
US10754791B2 (en) | Software translation prefetch instructions | |
US8719542B2 (en) | Data transfer apparatus, data transfer method and processor | |
US20190018792A1 (en) | Cache return order optimization | |
JPWO2007099582A1 (ja) | プリフェッチ制御装置 | |
TWI402674B (zh) | 使用擷取叢發提供資訊至一快取模組之裝置及方法 |