(57)【特許請求の範囲】
【請求項１】
メモリ読取り中のコンピュータ・システム・パフォーマンスを向上させる方法であって、
（Ａ）  第１のメモリ・ソースと、該第１のメモリ・ソース内の、要求されたデータが読み取られる第１のアドレスとを指定する読取り要求を受け取るステップと、
（Ｂ）  前記読取り要求をデコードして前記第１のメモリ・ソースに対応するデバイスを識別するステップと、
（Ｃ）  ステップ（Ｂ）が完了する前に前記第１のアドレスを使用してシステム・メモリからデータの取出しをスペキュラティブに開始するステップと、
（Ｄ）  ステップ（Ｂ）における前記読取り要求の前記デコードが完了するステップと、
（Ｅ）  ステップ（Ｄ）で前記第１のメモリ・ソースに対応する前記デバイスが前記システム・メモリではないと判断された場合に、ステップ（Ｃ）をアボートするステップとを含む方法。
【請求項２】
請求項１記載の方法であって、前記読取り要求がホストによってアサートされ、ステップ（Ｅ）には、
ステップ（Ｄ）で前記第１のメモリ・ソースに対応する前記デバイスが前記システムメモリであると識別された場合に、前記データを前記ホストに返すことが含まれる
ことを特徴とする方法。
【請求項３】
読取り操作を自動的に行う方法であって、
（Ａ）  第１のアドレス信号と第１のデバイス信号を含むことによって第１のデータの場所を指定する読取りコマンドをホストから受け取るステップと、
（Ｂ）  前記第１のデバイス信号をデコードして前記第１のデータが入っている第１のデバイスを識別するステップと、
（Ｃ）  ステップ（Ｂ）が完了する前に、システム・メモリから前記第１のアドレス信号に対応するデータの取出しをスペキュラティブに開始するステップと、
（Ｄ）  ステップ（Ｂ）における前記第１のデバイス信号の前記デコードを完了するステップと、
（Ｅ）  ステップ（Ｄ）で、前記第１のデバイスを前記システム・メモリとして識別した場合に前記読取りコマンドに応じて前記データを前記ホストへ返し、前記第１のデバイスが前記システム・メモリではないと識別された場合に、ステップ（Ｃ）をアボートするステップと
を含む方法。
【請求項４】
（Ａ）  アドレスとデバイス・コードとを含んでいる読取りコマンドをホストから受け取るスペキュラティブ読取り制御回路であって、前記読取りコマンドを受け取るとただちに、前記デバイス・コードがデコードされる前に前記読取りコマンドの前記アドレスを利用してシステム・メモリ・デバイスからデータの取出しをスペキュラティブに開始するスペキュラティブ読取り制御回路と、
（Ｂ）前記読取りコマンドをデコードして前記デバイスコードに関連づけられたメモリ・デバイスを識別し、識別されたメモリ・デバイスが前記システム・メモリ・デバイスではないと判断された場合に、アボート信号を前記スペキュラティブ読取り制御回路に対してアサートするデコード回路と
を備えるメモリ・コントローラ。
【請求項５】
ホストと、
システム・メモリ・デバイスと、
前記ホストおよび前記システム・メモリ・デバイスに結合されたメモリ・コントローラとを備え、前記メモリ・コントローラは、
（Ａ）アドレスとデバイス・コードとを含んでいる読取りコマンドを前記ホストから受け取るスペキュラティブ読取り制御回路であって、前記読取りコマンドを受け取るとただちに、前記デバイス・コードがデコードされる前に、前記読取りコマンドの前記アドレスを使用して前記システム・メモリ・デバイスからデータの取出しをスペキュラティブに開始するスペキュラティブ読取り制御回路と、
（Ｂ）  前記読取りコマンドのデコードをして前記デバイス・コードに関連づけられたメモリ・デバイスを識別し、識別されたメモリ・デバイスが前記システム・メモリ・デバイスではないと判断された場合に、アボート信号を前記スペキュラティブ読取り制御回路に対してアサートするデコード回路と
を備えている
コンピュータ・システム。
【発明の詳細な説明】
発明の分野
本発明は、コンピュータ・システムメモリ・コントローラに関する。具体的には、本発明はスペキュラティブ（speculative）なシステムメモリ読取りを行う方法および装置に係わる。
発明の背景
従来のコンピュータ・システムの１タイプは、外部キャッシュと、システムメモリと、システム・バス上にある様々な周辺装置とに接続されたマイクロプロセッサを含む。マイクロプロセッサは、キャッシュ・メモリ、システムメモリと、またメモリ・コントローラ・チップを介して周辺装置と通信する。メモリ・コントローラ・チップは、マイクロプロセッサの要求時にこれらのメモリ構成要素との間のデータ転送を調整する。従来技術のメモリ・コントローラ・チップの一例は、本発明の共同譲受人である米国カリフォルニア州サンタクララのインテル・コーポレイション製の８２４３４ＬＸ／ＮＸ  ＰＣＩキャッシュおよびメモリ・コントローラ（ＰＣＭＣ）である。
第１図に、メモリ・コントローラ・チップを使用した従来技術のコンピュータ・システムを示す。マイクロプロセッサ１１０は、ホスト・バス１６０上の外部キャッシュ１２０とシステムメモリ１３０とに結合されている。ホスト・バス１６０はメモリ・コントローラ１４０に接続されている。メモリ・コントローラ１４０には第２のバスであるシステム・バス１５０が接続されている。メモリ・コントローラ１４０は、マイクロプロセッサ１１０と、システム・バス１５０に結合されているデバイスとの間のブリッジとして機能する。たとえば、システム・バスは、グラフィックス・アクセラレータ、ハード・ドライブ・コントローラ、およびアドイン・ボードなどのデバイスを組み込むことができる。
メモリ・コントローラ１４０は、マイクロプロセッサ１１０からのデータ転送要求を処理する。メモリ・コントローラ１４０は、マイクロプロセッサ１１０から読取り要求または書込み要求を受け取り、どのデバイスがそのデータの発信源または送り先であるかを判断する。マイクロプロセッサは標準マイクロプロセッサ・タイミングを使用して読取り要求または書込み要求を出す。
従来のメモリ・コントローラ１４０の１タイプは、（マイクロプロセッサと通信するための）マイクロプロセッサ・インタフェースと、（外部キャッシュと通信するための）キャッシュ・コントローラと、（システムメモリと通信するための）システムメモリ・コントローラと、（システム・バスと通信するための）バス・コントローラとを含む。メモリ・コントローラのこれらの機能構成要素は、１つの集積回路チップ内に組み込まれる。あるいは、メーカによってはこれらの機能を複数のチップに分割しているものもある。
メモリ・コントローラのマイクロプロセッサ・インタフェース・ユニットは、たとえばマイクロプロセッサから読取りコマンドを受け取り、（１）「ソース」すなわち要求データが入っているデバイスと、（２）そのデバイス内のどのアドレスでそのデータを見つけるかを判断する。ソースがシステム・バス上のデバイスであると判断された場合、バス・コントローラが引き継ぐ。ソースがシステムメモリであると判断された場合は、システムメモリ・コントローラが引き継ぐ。システムメモリ読取りが要求されると、キャッシュ・コントローラは要求されたデータをキャッシュ内で探索する。キャッシュ内に所望の読取りデータがある場合、キャッシュ・ヒットがあり、そのデータがマイクロプロセッサに送られる。システムメモリ・コントローラは、キャッシュ・ヒットをセンスするとシステムメモリ読取りには移らない。キャッシュからデータを取り出すこの方法によって、マイクロプロセッサがシステムメモリ・データを取り出すのに要する時間が短縮されてコンピュータ・システムのパフォーマンスが向上する。
外部キャッシュの使用によってシステム・パフォーマンスが向上するが、キャッシュにヒットされなかった場合のシステムメモリ読取りに伴うかなりの時間の不利益がある。ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）を含むシステムメモリの一例では、システムメモリから最初のデータ・ワードを取り出すのに７クロックを要する。しかし、マイクロプロセッサがシステムメモリからデータ・ワードを２つ要求するとすれば、２番目のデータ・ワードを返す時間が大幅に短縮されることになる（すなわち２クロックになる）。
ある種の従来技術のコンピュータ・システムは、マイクロプロセッサが１ライン全体を要求したかどうかにかかわらず、読取り操作中にシステムメモリから１ライン全体（４データ・ワード）を取り出すことによって、この時間の節約を利用する。米国カリフォルニア州サンタクララのインテル・コーポレイション製のペンティアム／Ｅプロセッサに基づくコンピュータ・システムの場合、各データ・ワードは６４ビットを含む。
したがって、システムメモリ読取り中のシステム・パフォーマンスを向上させるために、システムメモリから第１のデータ・ワードを返すのに要するクロック・サイクル数を減らす必要があることがわかるであろう。したがって、システムメモリからデータ・ワードを取り出すのに要する時間を少なくすることによってシステム・パフォーマンス向上を可能にする方法を提供することが望ましい。
発明の概要
メモリ読取り中のコンピュータ・システム・パフォーマンスを向上させる方法が望ましい。マイクロプロセッサは、アドレスとメモリ・ソースを指定し、所望のデータの記憶場所を示すことによってメモリ読取りを要求する。デコード回路がメモリ読取り要求をデコードして、メモリ・ソースに対応するメモリ・デバイスを識別する。メモリ読取り要求のデコードと並列して、送られてきたアドレスに基づいてシステムメモリからスペキュラティブにデータが取り出される。デコード回路が、システムメモリが要求されたメモリ・ソースではなかったと判断した場合、スペキュラティブな読み取りは打ち切られる。したがってそのスペキュラティブに読み出されたデータはマイクロプロセッサによって使用されない。デコード回路がシステムメモリが要求されたメモリ・ソースであったと判断した場合、スペキュラティブに読み出されたデータはマイクロプロセッサに供給される。
本発明のその他の特徴および利点は、添付図面および以下の詳細な説明を読めば明らかになろう。
【図面の簡単な説明】
本発明を以下の図面で示すが、これらは例示的なものであって限定的なものではない。
第１図は、従来技術のコンピュータ・システムを示す図である。
第２図は、従来技術のメモリ・コントローラを示す図である。
第３図は、従来技術のメモリ読取り要求中にアサートされる信号のタイミング図である。
第４図は、本発明の一実施形態による、アサートされる信号のタイミング図である。
第５図は、本発明の一実施形態による状態図である。
詳細な説明
スペキュラティブなシステムメモリ読取りを行う方法および装置について説明する。以下の説明では、本発明を十分に理解することができるように特定のシステム構成要素、バス・サイクル、およびタイミング波形など多くの特定の詳細を記載する。しかし、当業者なら、本発明を実施するためにこれらの特定の詳細を使用する必要はないことがわかるであろう。他の場合には、本発明が不明瞭にならないように、周知の構成要素または方法については詳述していない。
第２図を参照すると、従来技術のメモリ・コントローラ１４０が図示されている。メモリ・コントローラ１４０は、デコード回路２４０と読取り制御回路２６０を含むマイクロプロセッサ・インタフェース２１０を備える。メモリ・コントローラ１４０はさらにキャッシュ・コントローラ２２０と、バス・コントローラ２５０と、システムメモリ・コントローラ２３０とを備える。
マイクロプロセッサ・インタフェース２１０は、ホスト・バス１６０を介してマイクロプロセッサ１１０に結合されている。本発明の他の実施形態では、１つまたは複数のマイクロプロセッサがホスト・バス１６０を介してメモリ・コントローラ１４０に結合されている。マイクロプロセッサ１１０は、ホスト・バス１６０で信号をアサートすることによってメモリ・コントローラ１４０に読取り操作と書込み操作を要求する。この信号をデコード回路がホスト・バス１６０を介して受け取り、（１）読取り操作と書取り操作のどちらが要求されたか、（２）読取り元デバイスと書込み先デバイスは何か、（３）読取り元デバイスまたは書込み先デバイス内の所望のアドレスは何かを判断する。
読取り操作が要求されたと判断されると、読取り制御回路２６０に制御が移される。読取り制御回路２６０は、システム・バス１５０、システムメモリ１３０、キャッシュ１２０のいずれかからの読取り操作の制御をつかさどる。本発明の一実施形態では、読取り制御回路２６０は状態機械を備える。読取り制御状態機構の動作の詳細については後述する。
キャッシュ・コントローラ２２０はキャッシュ１２０との間のアクセスを制御する。キャッシュ・コントローラ２２０の１つの機能は、キャッシュ・コヒーレンスを維持することである。マイクロプロセッサ１１０がシステムメモリ１３０にデータを要求するたびに、要求データが入っていないかどうかキャッシュ１２０が調べられる。入っている場合はキャッシュ・ヒットになり、システムメモリ１３０からではなくキャッシュ１２０からデータが読み取られる。あるいは、そのデータがキャッシュ１２０内に見つからない場合、キャッシュ・ミスになり、データはシステムメモリ１３０からマイクロプロセッサ１１０とキャッシュ１２０の両方に転送される。一実施形態では、キャッシュ・コントローラは状態機械を備える。
一実施形態では、キャッシュ１２０は「ライトスルー」キャッシュ・コヒーレンス・プロトコルを使用する。マイクロプロセッサがシステムメモリ１３０に書込み中、キャッシュ・ヒットが検出されると、キャッシュ１２０内とシステムメモリ１３０内の両方データが更新される。キャッシュ・ミスが検出されると、システムメモリのみが更新される。
あるいは、キャッシュ１２０は「ライトバック」キャッシュ・コヒーレンス・プロトコルを使用する。マイクロプロセッサのシステムメモリ１３０への書込み中にキャッシュ１２０にヒットがあると、キャッシュ１２０のみが新しいデータで更新される。新しいデータは後でシステムメモリ１３０に書き戻される。マイクロプロセッサの書込みがキャッシュ１２０のミスの場合、システムメモリ１３０のみが更新される。
一実施形態では、キャッシュ１２０はバースト・スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）を含む。他の実施形態では、キャッシュ１２０は非同期ＳＲＡＭを含む。ＳＲＡＭのサイズは、２５６キロバイトから５１２キロバイト、またはコンピュータ・システムの構成によって決まるその他の適切なサイズとすることができる。
メモリ・コントローラ１４０はさらにシステムメモリ・コントローラ２３０を含む。システムメモリ・コントローラ２３０は、マイクロプロセッサ１１０からの読取り要求および書込み要求に応答して、システムメモリ１３０に適切な制御信号を供給する役割を負う。一実施形態では、システムメモリ・コントローラ２３０は状態機械を備える。
一実施形態では、システムメモリ１３０はＤＲＡＭアレイを含む。したがって、システムメモリ・コントローラ２３０の一実施形態は、ＤＲＡＭにリフレッシュ信号を供給するためのリフレッシュ・タイマ回路を備える。
バス・コントローラ２５０を使用して、システム・バス１５０の要求を制御する。たとえば、マイクロプロセッサ１１０はシステム・バス１５０に結合された周辺装置にデータを要求する。するとバス・コントローラ２５０はシステム・バス・プロトコルに従ってシステム・バス１３０上で適切なアドレスと制御信号をアサートする。一実施形態では、システム・バス・プロトコルは周辺構成要素相互接続（ＰＣＩ）プロトコルであり、したがってバス・コントローラ２５０はＰＣＩブリッジとして機能する。
バス・コントローラ２５０はシステムメモリ１３０とシステム・バス１５０との間のインタフェースもとる。たとえば、システム・バス１３０上にあるデバイスがシステムメモリ１３０のデータ読取りまたはデータ書込みを要求する。バス・コントローラ２５０は、その操作を完了するために適切な制御信号を駆動してシステムメモリ１３０に送る。
第３図に、マイクロプロセッサ１１０からの従来技術の読取り要求のタイミング図を示す。以下の説明では、信号名を「アサートされた」および「アサート解除された」と言う。「＃」記号で示す信号は、アクティブ・ローであり、したがって、論理０状態でアサートされる。その他の信号はアクティブ・ハイであり、したがって論理１状態のときにアサートされる。当業者なら、信号をアクティブ・ローまたはアクティブ・ハイと言うことが本発明の範囲を限定しないことがわかるであろう。
従来技術のメモリ・コントローラが直面する１つの問題は、メモリからデータ・ワードを取り出すのに特定の最小クロック数を要することである。この最小クロック数を減らすのは２つの理由から難しい。第１に、待ち時間はシステムメモリ・デバイス１３０の指定アクセス時間に依存する。第２に、読取り要求のデコードと、対応する信号のセットアップとに使われる時間が必要であり、したがって短縮するのは難しい。たとえば、従来技術のメモリ・コントローラを使用する第３図に示すタイミング図では、読取り要求に応答してマイクロプロセッサ１１０にデータを返すのに７クロックを要する。
クロック３００中に、マイクロプロセッサ１１０によって読取り要求がアサートされる。マイクロプロセッサ１１０は、ホスト・バス１６０上でアドレス・ストローブ「ＡＤＳ＃」をアサートし、バス・サイクルの開始を示す。同じクロック中に、マイクロプロセッサ１１０はＡＤＤＲＥＳＳ信号バス上でアドレスをアサートする。一実施形態では、ＡＤＤＲＥＳＳ信号バスは３２ビット・バスから成る。あるいは、ＡＤＤＲＥＳＳ信号バスは特定のマイクロプロセッサおよびコンピュータ・システム構成に応じて、その他の様々な幅のうちの１つから成る。
デコード・クロック３１０でこのアドレスをデコード回路２４０が受け取る。その後、デコード回路はそのアドレスを処理する。アドレスは、システムメモリ１３０またはシステム・バス１５０に結合されたデバイスからのデータ要求を示す。デコード回路２４０は、読取り要求操作のために読取り制御回路２６０に制御を移す。
読取り制御回路２６０は、マイクロプロセッサ１１０がその読取り要求でどのデバイスを指定したかに応じて適切な制御ブロックをイネーブルする。クロック３２０中に、読取り制御回路２６０によって読取り要求信号Ｒ＿ＲＥＱがアサートされる。さらに、読取り制御回路２６０によってメモリ・イネーブル信号ＭＥＭ＿ＥＮがアサートされ、システムメモリが読取りの対象となる要求ソースであることを示す。システムメモリ・コントローラ２３０はＭＥＭ＿ＥＮ信号をセンスし、読取り操作を完了するためにシステムメモリ１３０への必要な信号をアサートする。
システムメモリ読取りまたは書込みを行うときは常にキャッシュ１２０が探索されることを想起されたい。キャッシュ１２０が要求データを持っていると判断された場合、クロック３２０でキャッシュ・コントローラ２２０によってＨＩＴ信号がアサートされる。ＨＩＴ信号が読取り制御回路２６０によって検出されると、読取り制御回路２６０はシステムメモリ・コントローラ２３０にシステムメモリ読取り操作を打ち切らせる。同じクロック３２０中に、キャッシュ・コントローラ２２０によってホスト・バス１６０上でバースト・レディすなわちＢＲＤＹ＃信号がアサートされ、読取り要求に応答してマイクロプロセッサ１１０のデータ・ピンにデータが置かれたことを示す。
読取り操作がキャッシュでヒットしないと仮定した場合、システムメモリコントローラ２３０はクロック３３０〜３７０の間、システムメモリ読取りを継続する。次に、クロック３７０中に、要求データがマイクロプロセッサ１１０に返され、キャッシュ２２０に書き込むことができる。同時にＢＲＤＹ＃信号がアサートされる。第３図に示す実施形態の場合、システムメモリ１３０からデータを返すのに７クロックを要することに留意されたい。また、このクロックの大部分はシステムメモリ・コントローラ２２０が要求データを取り出すのに使用されていたことに留意されたい。
システムメモリ・コントローラ２３０の従来の一実施形態は、システムメモリ・コントローラが１ワードしか要求しない場合でも４個の連続するデータ・ワードを取り出す。次にこの４ワードは、マイクロプロセッサ・プログラム内の後のシーケンスで必要になる場合に備えてキャッシュに格納される。４ワードが取り出されるのは、いったん最初のワードを読み取ると隣接データ・ワードを取り出すのに要するクロック数がかなり少なくなるためである。たとえば、キャッシュ・コントローラの一実施形態は、４回の連続読取りの読取りを行い、最初の読取りでは７クロックを使用し、２回目から４回目までは２クロックを使用する。したがって、メモリ・コントローラは７−２−２−２のメモリ読取りサイクルを行うことができる。
前述のように、システムメモリ１５０から最初のデータ・ワードを取り出すのに要するクロック・サイクル数を減らすのは難しい場合が多い。後述するように、本発明の方法はすべてのマイクロプロセッサ読取り操作中にスペキュラティブなシステムメモリ読取りを行うことによってこの問題を軽減する。
したがって、スペキュラティブなシステムメモリ読取りを行う方法および装置について説明する。説明する方法は、デコード回路と読取り制御回路とバス・コントローラとを含むメモリ・コントローラによって行われる。
従来技術の方法では、クロック３１０でマイクロプロセッサの読取り要求がデコードされ、クロック３２０でデータが取り出されたことを想起されたい。それに対して、本発明の方法は、デコード・ステップと並列してシステムメモリ１３０からデータを読み取る。デコード・ステップでシステムメモリが要求されたソースであったと判断された場合、データは１クロック早くマイクロプロセッサ１１０に返される。それに対して、デコード・ステップでシステムメモリが要求されたソースではなかったと判断された場合は、システムメモリから取り出されたデータは単に使用されないだけである。
第４図に本発明の一実施形態によるタイミング図を示す。図３に示す方法と同様に、クロック４００でマイクロプロセッサ１１０が読取り要求を開始し、したがってＡＤＳ＃信号がアサートされる。同じクロック中に、ＡＤＤＲＥＳＳ信号バスでアドレス信号がアサートされる。前述のように、ＡＤＤＲＥＳＳ信号バスは複数のビットを含む。本発明の一実施形態では、ＡＤＤＲＥＳＳビットの第１のグループは、マイクロプロセッサがどのデバイスからデータを読み取りたいかを示す。ＡＤＤＲＥＳＳビットの第２のグループは、所望のデバイス内でデータが入っているアドレスを示す。ＡＤＤＲＥＳＳビットの特定の割当ては、使用するマイクロプロセッサ、メモリ・デバイス、およびバス・プロトコルのタイプによって異なり、したがって本発明の範囲を限定することを意味しない。
クロック４１０中にデコード回路２４０はマイクロプロセッサ１１０からの読取り要求をデコードする。同じクロック中に、Ｒ＿ＲＥＱ信号がアサートされて読取り操作を示し、ＭＥＭ＿ＥＮ信号がアサートされてシステムメモリ１３０からの読取りを示す。読取り制御回路２６０はこれらの信号を第３図のタイミング図より１クロック早くアサートすることに留意されたい。これは、読取り制御回路２６０が、デコード回路２４０に関係なく、システムメモリ・コントローラ２３０に対してシステムメモリ１３０からの読取りを行うように指示するためである。システムメモリ・コントローラ２３０は、第２のグループのＡＤＤＲＥＳＳビットを使用してメモリ・デバイス内の要求データがある部分を示すことによって、システムメモリ１３０からの読取りを行う。
デコーダ回路２４０はマイクロプロセッサ１１０からの読取り要求のデコードを終了し、クロック４２０で適切な処置をとる。要求されたデバイス（すなわち第１のグループのＡＤＤＲＥＳＳビット）がシステムメモリ１３０が正しいソースであったことを示していたことをデコード回路２４０が示した場合、処置は行われない。したがって、クロック４３０〜４６０の間、システムメモリからデータが取り出される。次にクロック４６０でＢＲＤＹ＃信号がアサートされ、マイクロプロセッサ１１０のデータ・ピンでデータがレディになっていることを示す。
それに対して、デコード回路２４０が、システムメモリ１３０がデータの正しいソースではなかったことを検出した場合は、クロック４２０中にＡＢＯＲＴ信号をアサートする。この状況が発生するのは、マイクロプロセッサ１１０がたとえばシステム・バス１５０上のデバイスからの読取りを要求した場合である。ＡＢＯＲＴ信号は読取り制御回路２６０とシステムメモリ・コントローラ２３０によって検出される。ＡＢＯＲＴ信号を検出すると、システムメモリ・コントローラ２３０は現行読取り操作を停止する。一実施形態では、システムメモリ・コントローラ２３０は状態機械を含み、ＡＢＯＲＴ信号を受け取ると読取り操作が正常に終了した状態が示される。
本明細書に記載の実施形態では、キャッシュ制御論理回路２２０はシステムメモリ１３０のスペキュラティブな読み取りによって影響を受けない。キャッシュ制御論理回路２２０は、読取り制御回路２６０の指示に従って、要求されたデータがないかキャッシュ１２０を探索する。
第５図に読取り制御回路２６０の一実施形態の状態機械を示す。ＩＤＬＥ状態は、現在読取り操作が行われていないことを示す。ＳＰＥＣ  ＲＥＡＤ状態は、システムメモリ・コントローラ２３０によってスペキュラティブな読み取りが行われていることを示す。ＭＥＭＯＲＹ  ＲＥＡＤ状態は、システムメモリ・コントローラ２３０によって非スペキュラティブなシステムメモリ読取りが行われていることを示す。
状態機械はＩＤＬＥ状態で始まる。マイクロプロセッサ１１０から読取り要求（すなわちＡＤＳ＃信号）を受け取ると、経路５１０で示すようにＳＰＥＣ  ＲＥＡＤ状態になる。システムメモリ読取りを受け取っていない場合は、読取り制御回路は経路５６０を通ってＩＤＬＥ状態のままである。
読取り制御回路２６０は２つの条件のうちの１つが発生するまでＳＰＥＣ  ＲＥＡＤ状態のままである。デコード回路２４０が、システムメモリ１３０が正しいデバイスであると判断した場合は、経路５２０を通ってＭＥＭＯＲＹ  ＲＥＡＤ状態になる。デコード回路が、システムメモリ１３０が正しいデバイスではないと判断した場合は、経路５３０を通ってＩＤＬＥ状態になる。システムメモリ・コントローラ２３０がスペキュラティブな読み取り操作を正常に停止するのはこの状態の間である
システムメモリ１３０がアクセスされている間、読取り制御回路２６０は（経路５４０に示すように）ＭＥＭＯＲＹ  ＲＥＡＤ状態のままである。ＢＲＤＹ＃のアサートによって示される通りデータが取り出されて使用可能になると、読取り制御回路２６０は経路５５０を通ってＩＤＬＥ状態になる。
一実施形態では、第５図の状態機械はプログラマブル論理アレイ（ＰＬＡ）から成る。あるいは、第５図の状態機械はマイクロコードなどの記憶命令を使用して実施される。他の実施形態では、第５図の状態機械は組合せ論理ゲートとフリップフロップから成る。
したがって、スペキュラティブなシステムメモリ読取りを行う方法および装置について説明した。この方法は、マイクロプロセッサと（１）外部キャッシュ、（２）システムメモリ、および（３）システム・バスとの間のインターフェースをとるためにメモリ・コントローラによって行われる。あるいは、本発明の方法は、上記のデバイスのうちの１つまたは複数の装置のないマイクロプロセッサ・コンピュータ・システムでも行うことができる。さらに、本発明は複数のマイクロプロセッサ、複数のシステムメモリ・デバイス、システム・バス上の複数のデバイス、または複数の外部キャッシュを使用するコンピュータ・システムでも採用することができる。
以上の詳細な説明では、スペキュラティブなシステムメモリ読取りを行う方法および装置について説明した。本発明の方法および装置について、その特定の実施形態を参照しながら説明した。しかし、本発明のより広い精神および範囲から逸脱することなく、本発明に様々な修正および変更を加えることができることは明らかであろう。したがって、本明細書および図面は限定的な意味ではなく例示的な意味で捉えるべきである。
【図１】
0003732518.tif 000002
【図２】
0003732518.tif 000003
【図３】
0003732518.tif 000004
【図４】
0003732518.tif 000005
【図５】
0003732518.tif 000006