JP2007207249A - ミス衝突処理状態でのキャッシュ・ヒットのための方法、システムおよびマイクロプロセッサ - Google Patents

ミス衝突処理状態でのキャッシュ・ヒットのための方法、システムおよびマイクロプロセッサ Download PDF

Info

Publication number
JP2007207249A
JP2007207249A JP2007020817A JP2007020817A JP2007207249A JP 2007207249 A JP2007207249 A JP 2007207249A JP 2007020817 A JP2007020817 A JP 2007020817A JP 2007020817 A JP2007020817 A JP 2007020817A JP 2007207249 A JP2007207249 A JP 2007207249A
Authority
JP
Japan
Prior art keywords
command
address translation
address
commands
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
Application number
JP2007020817A
Other languages
English (en)
Inventor
Ibrahim Abdel-Rahman Ouda
イブラヒム・アブデル・ラフマン・オーダ
B Mcbride Chad
チャド・ビー・マクブライド
John David Irish
ジョン・デーヴィッド・イリッシュ
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2007207249A publication Critical patent/JP2007207249A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • G06F12/0855Overlapped cache accessing, e.g. pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/68Details of translation look-aside buffer [TLB]
    • G06F2212/684TLB 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)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】コマンド・キュー内のコマンドを処理しながら、コマンドの順序を維持するための方法およびシステムを提供する。
【解決手段】コマンドは、CPUの入力コマンドキュー内にキューイングされる。コマンドについてのアドレス変換中に、効率性を高めるために後続のコマンドが処理される。処理されたコマンドは、出力キュー内に配置されて、順番にCPUへ送られる。コマンドについてのアドレス変換エントリが見つからない場合には、当該変換エントリは、メモリから取り出される。ミスとなったコマンドに従属する後続のコマンドについてのアドレス変換は、アドレス変換エントリがメモリから取り出されるまで保存される。したがって、後続コマンドについてのアドレス再変換が回避される。
【選択図】図1

Description

本発明は、一般的には、コマンド・キュー内のコマンドの処理に関する。より特定的には、本発明は、未解決のアドレス変換キャッシュ・ミス状態でアドレス変換キャッシュ・ヒットしたコマンド処理に関する。
コンピューティング・システムは、一般的には、メモリおよび入出力(I/O)装置に通信可能に結合された1つ以上の中央処理装置(CPU)を含む。メモリは、コンピュータによって行われる計算に必要な1つ以上のプログラムおよびデータを含むランダム・アクセス・メモリ(RAM)であってもよい。例えば、メモリは、データを暗号化するためのプログラムを暗号化されるデータと共に含んでもよい。I/O装置は、コマンドを発行してCPUから応答を受信するように構成されたビデオ・カード、サウンド・カード、グラフィックス処理装置などを含んでもよい。
CPUは、メモリまたはI/O装置から受信された1つ以上のコマンドを解釈し、実行することができる。例えば、システムは、2つの数を加算するための要求を受信してもよい。CPUは、2つの数を加算するための論理を含む(メモリ内の)プログラムのコマンドのシーケンスを実行してもよい。また、CPUは、加算すべき2つの数を入力する入力装置からユーザ入力を受信してもよい。計算終了時に、CPUは、その結果を表示画面などの出力装置に表示してもよい。
前のコマンドを処理した後に装置から次のコマンドを送信するのは時間がかかる場合があるが、CPUはその間アイドル状態のままでいなければならないので、装置からの複数のコマンドをCPUのコマンド・キュー内にキューイングしてもよい。したがって、CPUは、前のコマンドの処理後に次のコマンドに高速でアクセスすることになる。CPUは、コマンド間の従属性のため、コマンドを所定の順番で実行する必要がある場合がある。したがって、従属コマンドが適切な順序で実行されることを確実にするために、コマンドは、キューに配置されて、先入れ先出し(FIFO)順序で処理される場合がある。例えば、あるメモリ位置における読み出し動作が当該メモリ位置への書き込み動作に続く場合には、正しいデータが読み出し動作中に読み出されることを確実にするために、書き込み動作がまず行われなければならない。したがって、同一の入出力装置から生じたコマンドは受信された順序でCPUによって処理されるが、互いに異なる装置からのコマンドは順序が狂って処理されることがある。
CPUによって受信されたコマンドは、(a)アドレス変換を必要とするコマンドと、(b)アドレスのないコマンドとに大別することができる。アドレスのないコマンドには、割り込みおよびPowerPC(登録商標)eieio(入出力インオーダー実行強制(Enforce In−order Execution of Input/Output))命令などの同期命令が含まれる。割り込みコマンドは、現在行っていることを後回しにして別のことをするようにCPUに要求する、装置からCPUに対するコマンドであってもよい。eieio動作は、eieioコマンドに先行するすべてのコマンドが処理されるまで後続のコマンドが処理されないようにするために発行されてもよい。これらのコマンドに関連するアドレスはないので、アドレス変換は不要である。
アドレス変換を必要とするコマンドには、読み出しコマンドおよび書き込みコマンドが含まれる。読み出しコマンドには、読み出すべきデータの位置のアドレスが含まれてもよい。同様に、書き込みコマンドには、データが書き込まれるべき位置のアドレスが含まれてもよい。コマンドに与えられたアドレスは仮想アドレスであってもよいので、読み出しまたは書き込みを行う前に、アドレスは、実際の物理位置に変換される必要がある場合がある。
アドレス変換は、仮想アドレスを物理アドレスと照合するために、セグメント・テーブルおよびページ・テーブルを検索する必要がある場合がある。最後に対象となったアドレスについては、ページ・テーブル・エントリおよびセグメント・テーブル・エントリは、高速かつ効率的なアクセスのためにキャシュ内に保持されていることがある。しかしながら、キャッシュを通じた高速かつ効率的なアクセスであっても、アドレス変換中に後続のコマンドがパイプライン内で停止することがある。この問題に対する解決策の1つは、アドレス変換中にコマンド・キュー内の後続コマンドを処理することである。しかしながら、同一のI/O装置からのコマンドについては、コマンドの順番がやはり保持されていなければならない。
変換中に、仮想アドレスから物理アドレスへ変換するテーブル・エントリがキャッシュ内に見つからない場合には、エントリをメモリから取り出さなくてはならないことがある。変換キャッシュ・ミスがある場合にエントリを取り出すと、大きな待ち時間が生じることになる場合がある。あるコマンドについて変換キャッシュ・ミスが生じたとき、後続のコマンドについてのアドレス変換が継続している場合がある。しかしながら、システムによって許容されているのは1つの変換キャッシュ・ミスだけという場合がある。そのような場合は、変換キャッシュ・ヒット(ミス状態でのヒット)を有する後続のコマンド、またはアドレス変換を必要としないコマンドだけが、変換キャッシュ・ミスの処理中に処理可能である。
この解決策の問題の1つは、未解決のアドレス変換キャッシュ・ミス状態でキャッシュ・ヒットとなったコマンドは、未解決のアドレス変換キャッシュ・ミスとなるコマンドに従属していることがあるということである。例えば、従属コマンドは同一の装置から同一の仮想チャンネルで発行され、それによって、コマンドは順番通り実行される必要があることがある。そのような従属性の結果、後続の従属コマンドは、当該ミスとなったコマンドに対する変換結果が取り出されてから再び処理されることになることがある。したがって、後続の従属コマンドのアドレスは、未解決のミスが処理された後に再変換される必要がある場合がある。
この問題に対する解決策の1つは、一度に1つのコマンドのみを処理することである。しかしながら、上述のように、このようにすると、深刻な性能の劣化を引き起こすことがある。なぜならば、アドレス変換中にコマンドがパイプライン内で停止することがあるからである。他の解決策としては、ミスとなったコマンドについての変換エントリをメモリから取り出した後に、後続の従属コマンドを変換用に再発行することが挙げられよう。しかしながら、この解決策は、アドレス変換が重複するので効率的ではない。さらに他の解決策としては、変換キャッシュをロードする前に、ミスのないことを保証するソフトウェアを含めることが挙げられる。しかしながら、この解決策は、望ましくないソフトウェアのオーバヘッドを生じさせる。
したがって、ミス状態でヒットとなったコマンドを効率的に処理するためのシステムおよび方法が必要である。
本発明は、一般的には、コマンド・キュー内のコマンドを処理するための方法およびシステムを提供する。
本発明の一実施形態は、1つ以上の入出力装置から受信されたコマンドのシーケンスを記憶するコマンド・キュー内のコマンドを処理するための方法を提供する。本方法は、一般的には、コマンド・キュー内の第1のコマンドが対象とするアドレスを変換されるべきアドレス変換論理へ送信するステップと、コマンド・キュー内の第1のコマンドが対象とするアドレスの仮想アドレスから実アドレスへの変換を含む変換論理のアドレス変換テーブル内にアドレス変換エントリがないと判断することに応じて、アドレス変換エントリをメモリから取り出すことを開始するステップとを含む。本方法は、第1のコマンドについてのエントリを取り出す間に、第1のコマンドに続いて受信された1つ以上のコマンドを処理するステップをさらに含み、本処理は、コマンド・キュー内の第2のコマンドが対象とするアドレスを変換されるべきアドレス変換論理へ送信するステップを含む。本方法は、第1のコマンドに続いて受信された1つ以上のコマンドが第1のコマンドを送信したのと同一の装置によって送信されたと判断することに応じて、1つ以上のコマンドと、第2のコマンドのアドレス変換とを、第1のコマンドについてのアドレス変換が完了するまで保存するステップをさらに含む。
本発明の他の実施形態は、コマンド・キュー内のコマンドを処理するためのシステムを提供する。本システムは、一般的に、1つ以上の入出力装置と、プロセッサとを備える。プロセッサは、一般的に、(i)1つ以上の入出力装置から受信されたコマンドのシーケンスを記憶するように構成されたコマンド・キューと、(ii)コマンド・キューからのコマンドをパイプライン式に処理するように構成された入力コントローラと、(iii)仮想アドレスから実アドレスへの変換を含むエントリを有するアドレス変換テーブルを使用して、入力コントローラによって処理されるコマンドが対象とするアドレスを変換するように構成されたアドレス変換論理と、(iv)アドレス変換エントリがキャッシュ内にない第1のコマンドを送信したのと同一の装置によって第2のコマンドが送信されたと判断することに応じて、第2のコマンドについてのアドレス変換を、第1のコマンドについてのアドレス変換が完了するまで保存するように構成された制御論理とを備える。
本発明のさらに他の実施形態は、コマンド・キュー内のコマンドを処理するためのマイクロプロセッサを提供する。本マイクロプロセッサは、一般的には、(i)入出力装置からのコマンドのシーケンスを記憶するように構成されたコマンド・キューと、(ii)コマンド・キュー内のコマンドをパイプライン式に処理するように構成された入力コントローラと、(iii)アドレス変換テーブル内のキャッシュされたアドレス変換エントリを使用して、仮想アドレスを物理アドレスへ変換し、コマンドに関してアドレス変換エントリがキャッシュ内に見つからない場合には、対応するアドレス変換エントリをメモリから取り出すように構成されたアドレス変換論理と、(iv)アドレス変換エントリがキャッシュ内にない第1のコマンドを送信したのと同一の装置によって第2のコマンドが送信されたと判断することに応じて、第2のコマンドについてのアドレス変換を、第1のコマンドについてのアドレス変換が完了するまで保存するように構成された出力コントローラとを備える。
本発明の上記の特徴、利点および目的が達成され、かつ詳細に理解することができるようにするには、以上簡単に概要を示した本発明を、添付の図面に図示される本発明の実施形態を参照してより詳細に説明すればよいであろう。
しかしながら、添付の図面は、本発明の典型的な実施形態を示すのみであり、したがって、本発明の範囲を制限するものとみなされるべきではないことに注意すべきである。なぜならば、本発明は、他の同様に効果的な実施形態を許容してもよいからである。
本発明の実施形態は、コマンド・キュー内のコマンドを処理しながら、コマンドの順序を維持するための方法およびシステムを提供する。コマンドは、CPUの入力コマンドキュー内にキューイングすることができる。コマンドについてのアドレス変換中に、効率性を高めるために後続のコマンドを処理することができる。処理されたコマンドは、出力キュー内に置かれて、順番にCPUへ送信することができる。コマンドについてのアドレス変換エントリが見つからない場合には、当該変換エントリは、メモリから取り出すことができる。ミスとなったコマンドに従属する後続のコマンドについてのアドレス変換は、アドレス変換エントリがメモリから取り出されるまで保存することができる。したがって、後続コマンドについてのアドレス再変換が回避される。
以下では、本発明の実施形態を参照する。しかしながら、本発明は説明された特定の実施形態に限定されるものではないことが理解されるべきである。代わりに、以下の特徴および要素の任意の組み合わせが、互いに異なる実施形態に関連するか否かに関わらず、本発明を実施するために意図されている。さらに、様々な実施形態において、本発明は、従来技術に対する数々の利点を提供する。しかしながら、本発明の実施形態は、他の解決策と思われるものまたは従来技術あるいはその両方に対する利点を達成することができるものの、特定の利点が所定の実施形態によって達成されるか否かによって本発明が制限されるわけではない。よって、以下の局面、特徴、実施形態、および利点は例示に過ぎず、特許請求の範囲で明示的に述べられていない限り、特許請求の範囲の要素または制限とはみなされない。同様に、「本発明」という言及は、本明細書において開示されたいかなる発明の主題を一般化したものと解釈されてはならず、特許請求の範囲で明示的に述べられていない限り、特許請求の範囲の要素または制限とはみなされない。
システム例
図1は、本発明の実施形態を実装可能なシステム例100を示す。システム100は、入出力(I/O)装置130およびメモリ140に通信可能に結合された中央処理装置(CPU)110を含むことができる。例えば、CPU110は、I/Oブリッジ120を通じてI/O装置130に、バスによってメモリ140に結合できる。I/O装置130は、図示のように、たとえばコマンド131を通じて入力をCPU110へ与えるように構成されている。I/O装置の例としては、グラフィックス処理装置、ビデオ・カード、サウンド・カード、ダイナミック・ランダム・アクセス・メモリ(DRAM)などが含まれる。
I/O装置130は、CPU110からの応答132を受信するように構成することもできる。例えば、応答132には、ユーザに対して表示されるような、CPU110による計算結果が含まれてもよい。2つのI/O装置130のみが図1には示されているが、同一または複数のバス上でCPUに結合されるI/O装置130の数がいくつであってもよいことを当業者は理解するだろう。
メモリ140は、好ましくは、ダイナミック・ランダム・アクセス・メモリ(DRAM)のようなランダム・アクセス・メモリである。メモリ140は、CPUによって処理されている1つ以上のプログラムまたはデータ構造あるいはその両方を保持するのに十分なほど大きいものでありうる。メモリ140は単一の実体として示されているが、メモリ140は、実際には複数のモジュールを備えてもよく、メモリ140は、高速キャッシュから容量の大きい低速のDRAMチップまで複数のレベルで存在しうる。
CPU110は、コマンド・プロセッサ111と、変換論理112と、埋め込みプロセッサ113と、キャッシュ114とを含むことができる。コマンド・プロセッサ111は、1つ以上のコマンド131をI/O装置130から受信して、処理することができる。各コマンド131は、アドレス変換を必要とするコマンドと、アドレスのないコマンドとに大別することができる。したがって、コマンドを処理することには、コマンドがアドレス変換を必要とするかどうかを判断することが含まれることになろう。コマンドがアドレス変換を必要とする場合には、コマンド・プロセッサは、アドレス変換のためにコマンドを変換論理112へディスパッチすることができる。変換を必要とするコマンド131が変換された後に、コマンド・プロセッサは、順序付けられたコマンド133をオンチップ・バス117上に配置して、メモリ・コントローラ118上で埋め込みプロセッサ113によって処理されるようにすることができる。
変換論理112は、アドレス変換を必要とする1つ以上のコマンドをコマンド・プロセッサ111から受信してもよい。アドレス変換を必要とするコマンドには、例えば、読み出しおよび書き込みコマンドが含まれてもよい。読み出しコマンドには、読み出すべきデータの位置のアドレスが含まれてもよい。同様に、書き込み動作には、データが書き込まれるべき位置のアドレスが含まれてもよい。
変換を必要とするコマンドに含まれるアドレスは、仮想アドレスであってもよい。仮想アドレスは、特定のプログラムに割り当てられる仮想メモリのことを指していることがある。仮想メモリは、プログラムに割り当てられた連続するメモリ空間であってもよく、メモリ140内の互いに異なる非連続の物理メモリ位置にマッピングする。例えば、仮想メモリ・アドレスは、物理メモリまたは2次ストレージあるいはその両方内の互いに異なる非連続のメモリ位置にマッピングしてもよい。したがって、仮想メモリアドレスが使用される場合には、当該仮想アドレスは、当該位置において動作を行うために、実際の物理アドレスに変換されなければならない。
アドレス変換は、セグメント・テーブルと、ページ・テーブルとを検索することを伴ってもよい。セグメント・テーブルまたはページ・テーブルあるいはその両方は、仮想アドレスを物理アドレスに対応させることができる。これらの変換前のテーブル・エントリは、メイン・メモリ内に存在することができる。最後にアクセスされたデータについてのアドレス変換は、キャッシュ114内のセグメント・テーブル116およびページ・テーブル115に存在して、最後にアクセスされたアドレスに対する後続のアドレスについての変換時間を短縮することができる。アドレス変換がキャッシュ114内で見つかった場合には、変換キャッシュ・ヒットが生じて、キャッシュ内のページ・テーブル・エントリおよびセグメント・テーブル・エントリから変換を取り出すことができる。アドレス変換がキャッシュ114内で見つからない場合には、変換キャッシュ・ミスが生じて、必要に応じて、メモリまたは他のストレージから変換をキャッシュに持ってくることになろう。
セグメント・テーブル116は、仮想アドレスが特定のプログラムに割り当てられたメモリのセグメント内にあるかどうかを示すことができる。セグメントは、仮想メモリ内にある大きさが可変のブロックであってもよく、各ブロックは、特定のプログラムまたは処理に割り当てられている。したがって、セグメント・テーブルが最初にアクセスされてもよい。仮想アドレスがプログラムのセグメントの範囲外の領域をアドレス指定する場合には、セグメンテーション・フォールトが生じる。
各セグメントは、ページと称される大きさが固定のブロックに分割されてもよい。仮想アドレスは、セグメント内に含まれる1つ以上のページをアドレス指定してもよい。ページ・テーブル115は、仮想アドレスをメモリ内のページにマッピングしてもよい。メモリ内にページが見つからない場合には、当該ページは、所望のページが存在するであろう2次ストレージから取り出すことができる。
コマンド処理
図2は、本発明の一実施形態に係る、I/O装置130からのコマンド処理するように構成されるようなコマンド・プロセッサ111の詳細図である。コマンド・プロセッサ111は、入力コマンドFIFO201と、変換インターフェース入力制御202と、変換インターフェース出力制御203と、コマンド・キュー204とを含むことができる。入力コマンドFIFO201は、I/O装置130によってCPUに対して発行されるであろう所定数のコマンド131を少なくとも保持するのに十分大きなバッファであってもよい。コマンド131は、受信された順番で順次入力コマンドFIFO201に格納されてもよい。
変換インターフェース入力制御(TIIC)202は、入力コマンドFIFO201を監視および管理することができる。TIICは、読み出しポインタ210と、書き込みポインタ211とを保持することができる。読み出しポインタ210は、入力コマンドFIFO内の処理用に次に使用可能なコマンドをポイントすることができる。書き込みポインタ211は、入力コマンドFIFO内に新規に受信したコマンドを書き込むための、次に使用可能な位置を示すことができる。各コマンドが入力コマンドFIFOから取り出されて処理に供せられるにつれて、読み出しポインタは増分される。同様に、各コマンドがI/O装置から受信されるにつれて、書き込みポインタも増分される。読み出しポインタまたは書き込みポインタが入力コマンド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においてコマンドがアドレス変換を必要としないと判断された場合には、当該コマンドおよび当該コマンドの入力コマンドFIFOアドレスは、ステップ305において、パイプラインへ送信されることになろう。
図2を再び参照すると、変換論理112は、TIICからのアドレス変換要求を処理することができる。アドレス変換には、セグメント・テーブルおよびページ・テーブルを検索して、仮想アドレスからメモリ140の実際の物理アドレスへ変換することを伴ってもよい。実施形態によっては、変換論理は、ページ・テーブル・キャッシュおよびセグメント・テーブル・キャッシュに対するパイプラインによるアクセスを許可してもよい。アドレス変換中にページ・キャッシュ・ミスおよびセグメント・キャッシュ・ミスが生じた場合には、キャッシュ・ミスが処理されている間に、キャッシュは、既存のエントリがあるコマンドのアドレスを供給し続けてもよい。アドレス変換中にミスが生じない場合には、変換論理は、図2に示すように、変換結果を変換インターフェース出力制御(TIOC)203へ提供することができる。しかしながら、ミスが生じた場合には、変換論理は、ミスを生じさせたコマンドについてTIOCに通知してもよい。
図4は、アドレス変換のために変換論理によって行われる動作例のフローである。TIICと同様に、変換論理によって行われる動作は、パイプラインによるものであってもよい。したがって、いつでも複数のコマンドが処理状態にあり得る。動作は、ステップ401において、コマンドに対するアドレス変換の要求をTIICから受信することによって開始することができる。ステップ402において、変換論理は、対応するエントリを取り出すためにセグメント・テーブル・キャッシュおよびページ・テーブル・キャッシュにアクセスして、仮想アドレスを物理アドレスに変換することができる。ステップ403において、対応するページ・テーブル・エントリおよびセグメント・テーブル・エントリがキャッシュ内に見つかった場合には、ステップ404において、アドレス変換結果をTIOCへ送信することができる。
しかしながら、ページ・テーブル・エントリおよびセグメント・テーブル・エントリがページ・テーブル・キャッシュおよびセグメント・テーブル・キャッシュ内に見つからなかった場合には、ステップ405において、コマンド・アドレスについての変換ミスの通知が送信されることになろう。ステップ406において、変換論理は、ミス処理手続を開始することになろう。例えば、ミス処理は、対応するページ・テーブル・エントリまたはセグメント・テーブル・エントリに対する要求をメモリまたは2次ストレージ装置へ送信することを含んでもよい。
重要なのは、実施形態によっては、処理中の未解決のミスがある場合に、変換論理は、1つの変換キャッシュ・ミスしか扱えないことがあるということである。第2のミスが生じた場合には、ミスの通知がTIOCへ送信されてもよい。未解決のミスが処理されている間の第2のミスの処理は、以下により詳細に説明する。さらに、未解決のミスが処理されている間に、アドレス変換を必要とする後続のコマンドを処理し続けることができる。ページ・テーブル・エントリおよびセグメント・テーブル・エントリをメモリまたは2次ストレージから取り出すことは、比較的長い時間がかかる場合があるので、後続のコマンドを停止すると、性能が著しく低下することがある。したがって、変換キャッシュ・ヒットのある後続のコマンドを、ミスを処理している間に処理してもよい。
ミス状態でのコマンド処理
図2を再び参照して、実施形態によっては、TIOCは、変換論理によって処理されている未解決のミスの数を突き止めて、コマンド間の従属性に基づいてコマンドの順序付けを保持してもよい。例えば、TIOCは、アドレス変換のために変換論理へ送信されたコマンドの入力コマンドFIFOアドレス(ポインタ)を受信すると共に、アドレス変換を必要としないコマンドを受信してもよい。受信されたコマンドが、まだ処理されていないかまたは現在処理状態にあるコマンドに従属していない場合には、コマンド完了信号133が、当該コマンドについてアサートされてもよい。例えば、コマンド完了信号は、当該コマンドが処理されてプロセッサへ送信できる準備が整った旨を示してもよい。
一方、TIOCによって受信されたコマンドが、まだ処理されていない可能性のあるコマンドに従属している場合には、当該コマンドについてコマンド完了信号をアサートすることはできない。例えば、入力コマンドFIFO内の第1のコマンドがアドレス変換を必要として、アドレス変換のために変換論理へ転送されることがある。第1のコマンドが変換されている間に、第1のコマンドに従属する、アドレス変換を必要としない後続の第2のコマンドが、第1のコマンドより早くTIOCへ渡される場合がある。同様に、第1のコマンドが変換されている間に、第1のコマンドに従属する第3のコマンドが、変換キャッシュ・ヒットとなってTIOCへ渡される場合がある。
各コマンドは、当該コマンドに関連したI/O識別子(IOID)と、仮想チャンネル番号とを含んでもよい。IOIDは、例えば、受信されたコマンドを送信したI/O装置を識別することができる。TIOCは、アドレス変換ヒットとなったコマンドのIOIDおよび仮想チャンネルを、変換エントリをメモリから取り出している対象となるアドレスを有するコマンドのIOIDおよび仮想チャンネルと比較することによって、コマンド間の従属性を識別することができる。
本明細書で使用されているように、仮想チャンネルという用語は、一般的に、例えばI/O装置およびプロセッサなどの構成要素間で要求または応答あるいはその両方を搬送するデータ・パスのことを指す。各仮想チャンネルは、典型的には、装置内の異なるバッファを使用し、仮想チャンネル番号は、当該仮想チャンネル上を伝送されたパケットがどのバッファを使用することになるかを示す。仮想チャンネルが仮想と称されるのは、複数の仮想チャンネルは、単一の共通の物理インターフェース(例えば、バス)を使用することができると同時に、別個のチャンネルとして見えかつそのように機能するからである。
アドレス変換キャッシュ内にミス状態でヒットなった従属コマンドが生じた場合には、当該コマンドは変換されたアドレスと共に、TIOCによってヒット衝突FIFO205に記憶されてもよい。ヒット衝突FIFO205は、所定の数のコマンドを保持するのに十分に大きいバッファであってもよい。TIOCは、未解決のアドレス変換ミスが処理されるまで、ヒット衝突FIFO205に記憶されたコマンドについてのコマンド完了信号をアサートしなくてもよい。
ミスとなったコマンドについての変換結果を取り出した後に、TIOCは、ミスとなったコマンドについてのコマンド完了信号をアサートしてもよい。また、コマンド完了信号は、ヒット衝突FIFO内のコマンドについてアサートされてもよい。ヒット衝突FIFO内のコマンドの発行と同時に、コマンド・キューに記憶された以前の変換結果を使用してもよい。したがって、ヒット衝突FIFO内のコマンドについてのアドレスの再変換が回避される。
ミスとなったコマンドについてのアドレス変換エントリを取り出すための待ち時間は大きいことがあるので、ヒット衝突FIFO205を満杯にして、アドレス変換キャッシュでヒットになった従属コマンドに対するスペースを取っておかないようにしてもよい。ヒット衝突FIFOがフルになると、図2に示すように、ヒット衝突FIFOフル信号212をTIICへ送信してもよい。ヒット衝突FIFOフル信号を受信することに応答して、TIICはコマンド処理を停止することになろう。さらに、TIICは、読み出しポインタ210をリセットして、ヒット衝突FIFOに記憶された最終コマンドに続くコマンドをポイントするようにしてもよい。したがって、ヒット衝突FIFOがフルになる前にTIICによって処理されたパイプライン内の任意のコマンドが再び発行されることになろう。
図5は、ミス状態でヒットとなったコマンドを処理するためにTIOCによって行われる動作例のフローである。動作は、ステップ501において、TIICからコマンドを受信することによって開始する。ステップ502において、TIOCは、コマンドが、アドレス変換キャッシュ内のミスとなったコマンドと同一のIOIDおよび仮想チャンネル番号を有するかどうかを判断する。当該コマンドのIOIDおよび仮想チャンネル番号がミスとなったコマンドのIOIDおよび仮想チャンネル番号と一致しない場合には、TIOCは、ステップ503において、コマンド・キュー内にコマンド記憶して、当該コマンドについてコマンド完了信号を発行する。
一方、当該コマンドのIOIDおよび仮想チャンネル番号がミスとなったコマンドのIOIDおよび仮想チャンネル番号と一致する場合には、TIOCは、ステップ505において、コマンドと、当該コマンドの変換結果とをヒット衝突FIFOに記憶する。ステップ504において、ヒット衝突FIFOが現在フルかどうかを判断する。ヒット衝突FIFOが現在フルである場合には、ステップ506において、ヒット衝突FIFOフル信号がTIICへ送信される。
また、TIOCは、ミス状態でのミスを識別するために、変換論理において生じたミスの数を監視してもよい。上述のように、変換論理でミスが生じる度に、ミスとなったコマンドを識別する通知をTIOCへ送信することができる。第1のミスを処理している間に第2のミスが生じた場合には、TIOCは、第1のミスが処理し終わるまでパイプラインを停止することができる。TIOCは、コマンドについての以前のミスが完了し、第2のミスを生じさせたコマンドの処理が再開できる前まで、パイプラインを停止することができる。図2は、TIOCからTIICへ送信される、第2のミスを生じさせたコマンドを識別するパイプライン停止信号214を示す。
図6は、アドレス変換ミスを処理するためにTIOCによって行われる動作例のフローである。動作は、ステップ601において、変換論理からミス通知を受信することによって開始する。ステップ602において、TIOCは、変換論理によって処理されている未解決のミスがあるかどうかを判断する。変換論理によって処理されている未解決のミスがない場合には、ステップ611において、TIOCは、当該コマンドの入力コマンドFIFOアドレスを記録する。ステップ612において、TIOCは、ミスを生じさせたコマンドに続くコマンドの処理を許可してもよく、これによって性能が向上する。一方、ステップ602において未解決のミスが処理されていると判断された場合には、パイプラインを停止することができる。これは、ステップ603において、第2のミスを生じさせたコマンドの入力コマンドFIFOアドレスと共に、TIICを停止する旨を送信することによって行うことができる。ステップ604において、TIOCは、第2のミスを生じさせたコマンドに続くすべてのコマンドを無視することができる。TIOCは、入力コマンドFIFOアドレスによってこれらのコマンドを判断してもよい。
TIOCからの停止通知を受信することに応じて、TIICは、TIOCからさらなる通知が来るまで、コマンド発行しないことによってパイプラインを停止することができる。パイプラインは、第1のミスが処理されて変換結果がTIOCによって受信されるまで停止されてもよい。また、TIICは、入力コマンドFIFO内の第2のミスを生じさせたコマンドをポイントするように、読み出しポインタをリセットしてもよい。したがって、第2のミスを生じさせたコマンドおよび後続のコマンドは、第1のミスが処理された後に再発行されてもよい。
第2のミスを生じさせたコマンドおよび後続のコマンドを再発行する前に、パイプラインを空にしてもよい。図7は、未解決の変換キャッシュ・ミスを処理した後に第2のミスを生じさせたコマンドを再発行するために行われる動作例のフローである。動作は、ステップ701において、第1のミスの処理を完了することによって開始する。ステップ702において、第1のミスが処理された旨を示す通知が、変換論理によってTIOCへ送信される。ステップ703において、パイプラインを空にできるように、予め規定された期間、パイプラインを停止することができる。
その後、ステップ704において、第2のミスを生じさせたコマンドおよび後続のコマンドの処理が再開されることになろう。第2のミスを生じさせたコマンドおよび後続のコマンドの処理を再開するための簡易なやり方の1つは、コマンドを再発行することであろう。例えば、TIICは、第2のミスを生じさせたコマンドおよび後続のコマンドを入力コマンドFIFOから受信して、これらのコマンドを上述のように処理することができる。したがって、コマンドの順序付けは維持される。
結論
所与のコマンドについてのアドレス変換中に後続のコマンドの処理を許可することによって、パフォーマンス全体を大きく向上することができる。さらに、所与のコマンドおよびそのアドレス変換に従属する後続コマンドを、所与のコマンドが取り出されるまで保存することによって、従属コマンドについてのアドレスを再変換する必要を回避することができる。
以上は、本発明の実施形態に向けられているが、本発明の他の実施形態およびさらなる実施形態が本発明の基本的な範囲から逸脱することなく行われてもよく、その範囲は、添付の請求項によって決定される。
本発明の一実施形態に係るシステム例の図である。 本発明の一実施形態に係るコマンド・プロセッサの図である。 入力コマンドFIFO内のコマンドを処理するために変換インターフェース入力制御をによって行われる動作例のフローである。 仮想アドレスを物理アドレスに変換するために変換論理によって行われる動作例のフローである。 ミス状態でのヒットを処理するために変換インターフェース出力制御によって行われる動作例のフローである。 複数の変換キャッシュ・ミスを処理するために変換インターフェース出力制御によって行われる動作例のフローである。 ミス状態でのミスを生じさせたコマンドを再処理する前にパイプラインをフラッシュするために行われる動作例のフローである。

Claims (10)

  1. 1つ以上の入出力装置から受信されたコマンドのシーケンスを記憶するコマンド・キュー内のコマンドを処理するための方法であって、
    前記コマンド・キュー内の第1のコマンドが対象とするアドレスを変換されるべきアドレス変換論理へ送信するステップと、
    前記コマンド・キュー内の前記第1のコマンドが対象とする前記アドレスの仮想アドレスから実アドレスへの変換を含む前記変換論理のアドレス変換テーブル内にアドレス変換エントリがないと判断することに応じて、前記アドレス変換エントリをメモリから取り出すことを開始するステップと、
    前記第1のコマンドについての前記エントリを取り出している間に、前記第1のコマンドに続いて受信された1つ以上のコマンドを処理するステップであって、前記コマンド・キュー内の第2のコマンドが対象とするアドレスを変換されるべき前記アドレス変換論理へ送信するステップと、
    前記第1のコマンドに続いて受信された前記1つ以上のコマンドが前記第1のコマンドを送信したのと同一の装置によって送信されたと判断することに応じて、前記1つ以上のコマンドと、前記第2のコマンドのアドレス変換とを、前記第1のコマンドについての前記アドレス変換が完了するまで保存するステップと
    を含む、方法。
  2. 前記第2のコマンドについての前記アドレス変換を保持するステップは、前記第2のコマンドと、前記第2のコマンドについての前記アドレス変換とを第2のコマンドキューに記憶し、前記コマンドをバッファに記憶するステップを含む、請求項1に記載の方法。
  3. 前記バッファがこれ以上コマンドを保持できないことを示すバッファ・フル信号を受信することに応じて、前記コマンドの処理を停止するステップをさらに含む、請求項2に記載の方法。
  4. 前記第2のコマンドが前記第1のコマンドのソースからのものかどうかを判断するステップは、前記第1のコマンドおよび前記第2のコマンドの装置識別子および仮想チャンネル番号のうちの少なくとも1つを比較するステップを含む、請求項1に記載の方法。
  5. 前記コマンドの処理を停止するステップは、前記第2のコマンド後に受信されたコマンドをポイントするポインタを前記コマンド・キューに設定するステップを含む、請求項3に記載の方法。
  6. 前記コマンドは、
    アドレス変換を必要とするコマンドと、
    アドレスのないコマンドと
    のうちの1つを含む、請求項1に記載の方法。
  7. 前記コマンド・キューは、先入れ先出しキューである、請求項1に記載の方法。
  8. 前記アドレス変換テーブルは、セグメント・テーブルと、ページ・テーブルとを含む、請求項1に記載の方法。
  9. 1つ以上の入出力装置と、
    (i)前記1つ以上の入出力装置から受信されたコマンドのシーケンスを記憶するように構成されたコマンド・キュー、(ii)前記コマンド・キューからのコマンドをパイプライン式に処理するように構成された入力コントローラ、(iii)仮想アドレスから実アドレスへの変換を含むエントリを有するアドレス変換テーブルを使用して、前記入力コントローラによって処理されるコマンドが対象とするアドレスを変換するように構成されたアドレス変換論理、および(iv)アドレス変換エントリがキャッシュ内にない第1のコマンドを送信したのと同一の装置によって第2のコマンドが送信されたと判断することに応じて、前記第2のコマンドについての前記アドレス変換を、前記第1のコマンドについての前記アドレス変換が完了するまで保存するように構成された制御論理を含むプロセッサと
    を含む、システム。
  10. 入出力装置からのコマンドのシーケンスを記憶するように構成されたコマンド・キューと、
    前記コマンド・キュー内の前記コマンドをパイプライン式に処理するように構成された入力コントローラと、
    アドレス変換テーブル内のキャッシュされたアドレス変換エントリを使用して、仮想アドレスを物理アドレスへ変換し、コマンドに関して前記アドレス変換エントリが前記キャッシュ内に見つからない場合には、対応するアドレス変換エントリをメモリから取り出すように構成されたアドレス変換論理と、
    アドレス変換エントリがキャッシュ内にない第1のコマンドを送信したのと同一の装置によって第2のコマンドが送信されたと判断することに応じて、前記第2のコマンドについての前記アドレス変換を、前記第1のコマンドについての前記アドレス変換が完了するまで保存するように構成された出力コントローラと
    を備える、マイクロプロセッサ。
JP2007020817A 2006-02-01 2007-01-31 ミス衝突処理状態でのキャッシュ・ヒットのための方法、システムおよびマイクロプロセッサ Pending JP2007207249A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/344,909 US20070180157A1 (en) 2006-02-01 2006-02-01 Method for cache hit under miss collision handling

Publications (1)

Publication Number Publication Date
JP2007207249A true JP2007207249A (ja) 2007-08-16

Family

ID=38323467

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007020817A Pending JP2007207249A (ja) 2006-02-01 2007-01-31 ミス衝突処理状態でのキャッシュ・ヒットのための方法、システムおよびマイクロプロセッサ

Country Status (4)

Country Link
US (1) US20070180157A1 (ja)
JP (1) JP2007207249A (ja)
CN (1) CN100495363C (ja)
TW (1) TW200818006A (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2496328B (en) * 2010-06-25 2015-07-08 Ibm Method for address translation, address translation unit, data processing program, and computer program product for address translation
WO2018103022A1 (zh) * 2016-12-07 2018-06-14 深圳前海达闼云端智能科技有限公司 帧缓存实现方法、装置、电子设备和计算机程序产品
CN110502458B (zh) * 2018-05-16 2021-10-15 珠海全志科技股份有限公司 一种命令队列控制方法、控制电路及地址映射设备
US11545209B2 (en) * 2021-05-28 2023-01-03 Micron Technology, Inc. Power savings mode toggling to prevent bias temperature instability
US20220414020A1 (en) * 2022-04-18 2022-12-29 Intel Corporation Software interface to xpu address translation cache

Family Cites Families (7)

* Cited by examiner, † Cited by third party
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
US6542987B1 (en) * 1999-02-01 2003-04-01 Hewlett-Packard Development Company L.P. Method and circuits for early detection of a full queue
US7152232B2 (en) * 2001-07-16 2006-12-19 Sun Microsystems, Inc. Hardware message buffer for supporting inter-processor communication
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
US7558939B2 (en) * 2005-03-08 2009-07-07 Mips Technologies, Inc. Three-tiered translation lookaside buffer hierarchy in a multithreading microprocessor
US7721067B2 (en) * 2006-01-20 2010-05-18 Qualcomm Incorporated Translation lookaside buffer manipulation

Also Published As

Publication number Publication date
TW200818006A (en) 2008-04-16
US20070180157A1 (en) 2007-08-02
CN101013403A (zh) 2007-08-08
CN100495363C (zh) 2009-06-03

Similar Documents

Publication Publication Date Title
US7620749B2 (en) Descriptor prefetch mechanism for high latency and out of order DMA device
US20070180158A1 (en) Method for command list ordering after multiple cache misses
US9280290B2 (en) Method for steering DMA write requests to cache memory
US20070180156A1 (en) Method for completing IO commands after an IO translation miss
JP5688823B2 (ja) ディスプレイパイプにおけるストリーミング式翻訳
US10019283B2 (en) Predicting a context portion to move between a context buffer and registers based on context portions previously used by at least one other thread
CN111684427A (zh) 高速缓存控制感知的存储器控制器
US10642740B2 (en) Methods for performing a memory resource retry
KR20200017364A (ko) PCIe 메모리 요청들의 라우팅을 촉진하기 위해 NVMe 물리적 영역 페이지 목록 포인터들 및 데이터 포인터들을 수정
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
US20070260754A1 (en) Hardware Assisted Exception for Software Miss Handling of an I/O Address Translation Cache Miss
CN110291507B (zh) 用于提供对存储器系统的加速访问的方法和装置
US20170199822A1 (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
US20230359392A1 (en) Non-volatile memory-based storage device, device controller and method thereof
US9152566B2 (en) Prefetch address translation using prefetch buffer based on availability of address translation logic
US9727521B2 (en) Efficient CPU mailbox read access to GPU memory
JP2007207249A (ja) ミス衝突処理状態でのキャッシュ・ヒットのための方法、システムおよびマイクロプロセッサ
US20080065855A1 (en) DMAC Address Translation Miss Handling Mechanism
US7451274B2 (en) Memory control device, move-in buffer control method
US9342472B2 (en) PRD (physical region descriptor) pre-fetch methods for DMA (direct memory access) units
US8719542B2 (en) Data transfer apparatus, data transfer method and processor
US10754791B2 (en) Software translation prefetch instructions
JP2022503558A (ja) 命令キャッシュにおけるプリフェッチの強制終了及び再開
GB2502858A (en) A method of copying data from a first memory location and storing it in a cache line associated with a different memory location
US20240241845A1 (en) Command processing circuitry maintaining a linked list defining entries for one or more command queues and executing synchronization commands at the queue head of the one or more command queues in list order based on completion criteria of the synchronization command at the head of a given command queue