(57)【要約】      （修正有）【課題】異なるタイミング特性を有するメモリ・デバイスと共に使用する適合的なメモリ・コントローラを提供する。【解決手段】適合的なメモリ・コントローラは、１以上のメモリ・デバイス（ＳＩＭＭ）に対応する情報を表すプロフィール（１０６）を記憶するプロフィール記憶手段（１０４）と、１以上のメモリ・デバイス（ＳＩＭＭ）から特性の情報を読み出すため、および、情報を用いてプロフィール記憶手段（１０４）から１以上のメモリ・デバイスのタイミング特性を含むプロフィール（１０６）を選択するためのコントローラと、プロフィール記憶手段（１０４）に記憶された情報に基づいてタイミング値を計算するタイミング計算手段（１０８）とを備える。【選択図】図７
2006085728.tif 000002
【特許請求の範囲】
【請求項１】
異なるタイミング特性を有するメモリ・デバイスと共に使用する適合的メモリ・コントローラであって、
１以上のシングル・インライン・メモリ・モジュール（ＳＩＭＭ）のサイズおよび速度を表す情報を１以上のシングル・インライン・メモリ・モジュールから読み出すため、および、前記情報を用いて、プロフィール記憶手段（１０４）から前記１以上のシングル・インライン・メモリ・モジュールのタイミング特性を含むプロフィール（１０６）を選択するためのコントローラ（３８）であって、前記１以上のシングル・インライン・メモリ・モジュールが該コントローラに接続されるものであり、前記速度が、前記１以上のシングル・インライン・メモリ・モジュールの相対的なタイミング特性で表されるものである、コントローラ（３８）と、
前記１以上のシングル・インライン・メモリ・モジュールに対応する前記情報を表すプロフィール（１０６）を記憶する前記プロフィール記憶手段（１０４）と、
前記プロフィール記憶手段（１０４）に記憶された前記情報に含まれるクロックの速度の関数としてタイミング値を計算するタイミング計算手段（１０８）と
を備える適合的メモリ・コントローラ。
【請求項２】
請求項１に記載の適合的メモリ・コントローラであって、前記タイミング計算手段が、選択されたメモリ・アドレスの関数として前記シングル・インライン・メモリ・モジュールに対するタイミング値を提供する、適合的メモリ・コントローラ。
【請求項３】
請求項１に記載の適合的メモリ・コントローラであって、前記タイミング特性がシステム初期設定後に決定される、適合的メモリ・コントローラ。
【請求項４】
異なるタイミング特性を有するメモリ・デバイスと共に使用する適合的メモリ・コントローラであって、
２以上のシングル・インライン・メモリ・モジュールのサイズおよび速度を表す情報を読み出すため、および、前記情報を用いて、プロフィール記憶手段（１０４）に記憶されたプロフィール（１０６）を選択するめのコントローラ（３８）であって、前記２以上のシングル・インライン・メモリ・モジュールが該コントローラに接続されるものであり、前記速度がクロック速度によって表されるものである、コントローラ（３８）と、
前記シングル・インライン・メモリ・モジュールに対応する前記情報を記憶する前記プロフィール記憶手段（１０４）と、
前記プロフィール記憶手段（１０４）に記憶された前記情報に含まれる前記速度の関数としてタイミング値を計算するタイミング計算手段（１０８）であって、前記２以上のシングル・インライン・メモリ・モジュールのうちの最も遅い前記シングル・インライン・メモリ・モジュールに対するタイミング値を提供するタイミング計算手段（１０８）と
を備える適合的メモリ・コントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、改善されたデータ処理システムに関し、更に詳しくは、統一環境と分散システム機能とを有する対称型（対称的、ｓｙｍｍｅｔｒｉｃ）データ処理システムに関する。
【背景技術】
【０００２】
複数のマルチスレッド型（ｍｕｌｔｉ−ｔｈｒｅａｄ）プロセスの中の任意のものが同時に又は複数のプロセッサの中の任意のものの上の任意のシーケンスで実行され得る複数のプロセスを有するシステムがある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
従来技術の対称型マルチプロセシング・システム、すなわち、複数のマルチスレッド型（ｍｕｌｔｉ−ｔｈｒｅａｄ）プロセスの中の任意のものが同時に又は複数のプロセッサの中の任意のものの上の任意のシーケンスで実行され得る複数のプロセスを有するシステムにおいて繰り返し生じる問題の１つは、その中で実行されるプロセスの観点から統一されているが、メモリ空間管理やバット・アクセス（ｂｕｔ  ａｃｃｅｓｓ）やデータ管理などのシステムの機能が１つのプロセッサに集中しないような環境を提供することにある。通常は統一型の処理環境を与えようとする試みから生じるシステム機能のそのような集中によって、集中された設備の能力は基本的に制限される。これは、そのような機能の実行には上限が存するからである。集中されたシステム機能を使用することによって、結果的に、集中システムがシステム内の各機能ユニットの要求を扱えない又はそれに気が付かないことさえあるという点で統一されていない環境が生じることがしばしばある。
【課題を解決するための手段】
【０００４】
本発明のシステムは、システム内のすべての機能ユニットに対して統一されたアドレス空間を有するシステムを提供し、他方で、アドレス空間の管理やデータ及びキャッシュされた（ｅｎｃａｃｈｅｄ）データの管理やシステムの機能ユニットへのシステム・バス・アクセスの仲裁（ａｒｂｉｔｒａｔｉｏｎ）などのシステムの機能の実行を分散させて各機能ユニットがこれらの動作のそのユニット自体の側面に対する責任をとるようにすることによって、上記の及びそれ以外の問題を解決する。
【０００５】
本発明のシステムによれば、更に、メモリからのデータ転送のための改善されたシステム・バス動作と、特定のメモリ回路やバス転送速度などの要素に依存する適合的なタイミングを有するメモリと、入出力動作のキャッシュを伴う改善された入力／出力構造と、データ状態をトラッキングする改善された手段と、が提供される。
【０００６】
本発明によると、コンピュータ・システムにおける複数のパーティションにされたメモリを制御するメモリ・コントローラが提供される。
本発明のこれ以外の特徴、目的、及び効果は、本発明の以下の説明を読み、図面を検討することによって、当業者に理解されよう。
【発明を実施するための最良の形態】
【０００７】
Ａ．はじめに
以下では、本発明の好適な実施例を実現するシステムの詳細な説明を、システムの簡単な全体像から始め、システムの主な機能ユニットのそれぞれの詳細な説明に進みながら行う。システムの主な機能ユニットのそれぞれの説明は、システム内の他の機能ユニットに対する、その機能ユニットの相互の構造的及び動作的な関係の説明を含む、ブロック図レベルの説明から始める。１つの機能ユニットのブロック図レベルの説明に続いては、その機能ユニットの選択された機能及び動作の更なる説明を行う。
【０００８】
各説明には図面を付して説明の対応する部分を図解するが、各図面は対応する説明に特に焦点を合わせているのであり、その機能ユニットのすべての要素を示すのではない。ただし、各機能ユニットの主要な要素は、その機能ユニットの説明に関係する図面において図解されている。
【０００９】
１．システム１０の説明
図２及び図３を参照すると、本発明を組み入れて実現している対称型マルチプロセシング・システム１０の一般的なブロック図が示されている。図１は図２と図３との関係を示す図３である。示されているように、システム１０は、システムの複数の機能ユニットを相互接続する拡張型アーキテクチャの多重（ｍｕｌｔｉｐｌｅ）プロセッサ（ＸＡ−ＭＰ）バス１２を含む。システムの機能ユニットには、データとシステム動作及びデータ上の動作を制御するプログラムとを記憶する１つ又は複数のメモリ・モジュール（ＭＭｓ）１４と、プログラムの命令に応答してプログラムによって指示される動作を実行する１つ又は複数のプロセッサ・モジュール（ＰＭｓ）１６と、ＸＡ−ＭＰバス１２及びシステムの機能ユニットをシステムの他の要素に接続する他のオルタネート・システム（ＡＳ）バス２０に相互接続する１つ又は複数のブリッジ・モジュール（ＢＭｓ）１８と、が含まれる。ＡＳバス２０は、たとえば、インテルのｉ４８６バスや、ＥＩＳＡ及びＭＣＡバスを含み得る。ＡＳバス２０は、たとえばインテルのｉ４８６マイクロプロセッサなどのマイクロプロセッサ等の処理要素及びメモリや、ディスク・ドライブ、キーボード、通信コントローラ、及びグラフィック・アダブタなどの視覚的表示発生器を含み得る入出力装置２４などのシステムの他の要素２２に相互接続されている。
【００１０】
図２及び図３に示され以下で説明するように、ＸＡ−ＭＰバス１２は、データを移動（トランスポート）させる１つ又は２つのデータ・バス２６と、メモリ及び入出力空間アドレスとスライス情報とを移動させるアドレス（ＡＤＤＲ）バス２８と、バスに関連する動作をＸＡ−ＭＰバス１２から接続されたシステムのユニットによって実行させるように指示するコマンドを移動させるコマンド（ＣＭＤ）バス３０と、から成る。また、ＸＡ−ＭＰバス１２には、システムの機能ユニットがそれらの間での仲裁をしてＸＡ−ＭＰバス１２ヘアクセスしたり以下で説明するそれ以外の動作をするのに用いる複数の仲裁（ＡＲＢ）ライン３２と、割り込み動作において用いられる割り込み（ＩＮＴ）ライン３４と、以下で必要に応じて説明される多数の制御（ＣＮＴＬ）ライン３５とが関連している。ＸＡ−ＭＰバス１２のすべてのラインとＸＡ−ＭＰバス１２に関連するすべての制御ラインとは、両端においてレジスタ又はラッチされており、すべてのバス動作は、ラッチされたデータ及び信号との関係でのみ実行されることに注意されたい。
【００１１】
やはり以下で論じるが、ＸＡ−ＭＰバス１２のデータ・バス２６は、ＸＡ−ＭＰバス１２のＡＤＤＲバス２８及びＣＭＤバス３０とは動作的に分離されており独立であって、ＸＡ−ＭＰバス１２上の情報転送のプライマリ・モードは、すなわち、ＭＭｓ１４からの読み取りに対しては、順序付き（ｏｒｄｅｒｅｄ）転送の形態である。更に、２つのデータ・バス２６は、動作的には相互に独立であり、それぞれが他方とは独立に転送を実行する。
【００１２】
順序付き転送においては、各機能ユニットは、その機能ユニットにおける順序付き要求行列の動作を通じてそれ自体のメモリ要求をトラッキングし、情報要求側と提供された情報との間の通常の一連のハンドシェーキング動作は除去され、よって、メモリ読み取りの速度の強化が実行される。ＸＡ−ＭＰバス１２は、また、非順序（ｏｕｔ−ｏｆ−ｏｒｄｅｒ）モードでも動作することができ、その場合には、データ・バス２６の動作は、ＡＤＤＲバス２８及びＣＭＤバス３０の動作に結合されており、要求側と提供側との間のハンドシェーキングを要求する非順序転送を行う。
【００１３】
ＸＡ−ＭＰバス１２に結合したシステムの各機能ユニットは、対応するタイプの機能ユニットによって実行されるべき動作を実行する動作要素の組から成っている。これらの動作要素には、ＸＡ−ＭＰバス１２のＡＤＤＲバス２８とＣＭＤバス３０とに接続されＸＡ−ＭＰバス１２に関する機能ユニットの動作を制御するバス・インターフェース制御ユニットと、それぞれがデータ・バス２６の１つに接続されその機能ユニットの動作要素とＸＡ−ＭＰバス１２との間でデータを移動させる２つのバス・インターフェース・データ・パス・ユニットと、が含まれる。システム１０の別の構成では、ＸＡ−ＭＰバス１２は、ただ１つのデータ・バス２６を含む又は用い、その機能ユニットは、従って、その１つのデータ・バス２６に接続するただ１つのデータ・パスを含む又は用いる。
【００１４】
たとえばＭＭ１４の場合には、動作要素は、メモリ記憶素子（ＭＳＥ）３６から成り、これは、たとえば、そのようなメモリに通常用いられるシングル・インライン・メモリ・モジュール（ＳＩＭＭ）の集積回路として構成されるコラム及びローのアレーのダイナミック・ランダムアクセス・メモリ（ＤＲＡＭｓ）から成り得る。メモリ・バス・インターフェース制御ユニットは、メモリ・コントローラ（ＭＣ）３８から成り、他方、メモリ・データ・パス・ユニットは、一方が各データ・バス２６に接続された１対のメモリ・データ・パス（ＭＤＰｓ）４０から構成されている。ＸＡ−ＭＰバス１２が１つのデータ・バス２６を含む構成の場合には、ＭＭ１４は、対応して、１つのＭＤＰ４０を含む。
【００１５】
ＰＭ１６の場合には、動作要素は、それぞれが内部的なプライマリ・キャッシュとそれに伴うキャッシュ・メカニズム（ＣＭ）４４とを有し、それぞれがセカンダリ・キャッシュ（ＳＣ）４６とキャッシュ・ディレクトリ及びコントローラ（ＣＤ）４８とから構成され得る、１つ又は複数のプロセッサ・ユニット４２から成る。それぞれのプロセッサ・ユニット４２に対してはＰＭ１６バス・インターフェース制御ユニットが存在し、これは、メモリ・バス・コントローラ（ＭＢＣ）５０と各プロセッサ・ユニット４２に対する１つ又は複数のプロセッサ・データ・パス（ＰＤＰｓ）５２から成るデータ・パス・ユニットとによって表され、各プロセッサ・ユニット４２に伴うＰＤＰｓ５２の数はやはりデータ・バス２６のＸＡ−ＭＰバス１２の数に依存する。示されているように、各ＰＭ１６は、更に、ＩＮＴライン３４から接続された１つ又は複数のアドバンスト・プロセッサ割り込みコントローラ（ＡＰＩＣｓ）５４を含み、プロセッサ・ユニット４２に対する割り込み動作を扱う。
【００１６】
最後に、ＢＭ１８の場合には、動作要素（ＯＥｓ）５６はＢＭ１８が支持すべき動作のタイプに依存しており、たとえば、種々のタイプのＡＳバス２０又は特定の目的のための動作要素とインターフェースするバス・インターフェース論理の組から成る。ＢＭ１８においては、バス・インターフェース制御ユニットは、１つ又は複数のアドバンスト・バス・インターフェース・コントローラ（ＡＢＩＣｓ）５８から成り、これが、ＭＢＣｓ５０と本質的に同じタイプの機能を実行する。各バス・インターフェース制御ユニットに伴ってバス・インターフェース・データ・ユニットがあり、各バス・インターフェース・データ・ユニットは、やはりデータ・バス２６の数に依存する１つ又は複数のデータ・バス・インターフェース・コントローラ（ＤＢＩＣｓ）６０から構成され、これが、ＰＤＰｓ５２及びＭＤＰｓ４０と本質的に同じタイプの機能を形成する。各ＢＭ１８は、また、ＡＰＩＣ５４を含み、割り込み動作を扱う。
【００１７】
２．システム１０のアーキテクチャ上のいくつかの特徴の概要
上述のように、システム１０は、対称型マルチプロセシング・システムであり、そこでは処理は、メモリ・モジュール１４に記憶されているプログラムの制御の下に複数の処理ユニット４２の任意のものにおいて実行され得る。以下で概要を述べるように、そしてその後で詳細を説明するように、このシステムは、多重処理を同時に実行する統一された動作環境を与え、他方で、多くのシステム機能は、１つの機能ユニットに集中されるのではなくシステムの複数の機能ユニットに分散されている。
【００１８】
たとえば、システム１０は、１つのアドレス空間内ですべての動作を実行することによって統一された環境を提供し、そこでは、システムのすべてのデータ、プログラム及び情報の記憶機能はその１つのアドレス空間を占める。そのようなデータ、プログラム及び情報の記憶機能は、たとえば、ＭＭｓ１４のメモリ空間や、プロセッサ・ユニット４２のレジスタや、ビデオ・コントローラ及び入出力装置の表示メモリなどの情報記憶機能やオペレーティング・システム及びパーソナル・コンピュータで通常用いられているＲＯＭ  ＢＩＯＳｓなどＢＩＯＳｓを記憶するのに要求される空間などのそれ以外の情報記憶機能を含む。
【００１９】
しかし、情報記憶の管理は、一般的に、システムの複数の機能ユニットの間に分散されており、それによって、たとえば、ＭＭｓ１４は、ＭＳＥｓ３６がデータ及びプログラムを記憶するのに用いるアドレス空間内のアドレス位置を管理する責任を有する。同様にして、ＰＭｓ１６は、プロセッサ・ユニット４２のレジスタが占めるアドレス空間位置を管理する責任を機能的に有し、一方、ＢＭｓ１８は、ビデオ・ディスプレイ・コントローラが用いＲＯＭが占めるアドレス空間位置とＲＯＭ  ＢＩＯＳｓなどのプログラム及びデータを記憶するその他のメモリとを管理する責任を有する。
【００２０】
このシステムの１つのアドレス空間の管理は、プロセッサ・レジスタなどの種々の記憶手段と、ＭＭｓ１４における物理的メモリ位置と、ＲＯＭ  ＢＩＯＳｓのためにビデオ・ディスプレイ・コントローラのためのビデオ・メモリとしてＲＯＭにおいて提供される記憶装置とを、アドレス空間内にマッピングすることによって、本質的には実行される。システム１０では、各機能ユニットは、従って、それに伴う記憶空間をシステムの１つのアドレス空間内にマッピングする責任を有している。
【００２１】
システムのアドレス空間の分散された管理を図解するために、各プロセッサ・ユニット４２は、それに伴うレジスタのブロックを有しており、バス動作に関係する制御情報を記憶する。しかし、システム１０においては、これらのレジスタは、システム幅の１つのアドレス空間の一部としてアドレス指定される。
【００２２】
これを達成するために、各プロセッサは、それに伴うレジスタを有し、本質的に、システムのアドレス空間におけるレジスタのブロックの中の最初のレジスタの最初のアドレスを表すオフセット・アドレスであるポインタを記憶する。システムの初期化の際には、システム内の各処理ユニットないし各機能ユニットは、ＸＡ−ＭＰバス１２上の位置又は「スライス」番号を決定し、各機能ユニットは、ＸＡ−ＭＰバス１２上の位置との関係では、「スライス」と呼ばれる。以下でシステム１０の仲裁メカニズムに関して更に述べるように、機能ユニットのスライス番号は、ＸＡ−ＭＰバス１２のアクセスに対するその機能ユニットの相対的なプライオリティを決定するのに使用され、システム１０の仲裁メカニズムの動作を介してシステムの初期化の際に決定される。
【００２３】
スライス番号は、次に、レジスタの各ブロックに対するオフセット・ポインタ値を決定するのに用いられ、これらの値は関連するレジスタに記憶されてそのブロックのレジスタをアドレス指定する際に使用され、レジスタのブロックには、通常はシステムのアドレス空間内の高い位置にアドレス空間位置が指定され、ＭＭｓ１４内のシステム・メモリに指定されたアドレス空間とのコンフリクトを避ける。
【００２４】
以下で説明するように、このスライス番号情報のあるものは、システムの他の機能ユニットに提供され、そのアドレス指定可能なメモリ又は記憶領域をシステムのアドレス空間内にマッピングするのに用いられる。たとえば、このスライス番号は、処理ユニットの機能ユニットからＭＭｓ１４に提供され、以下のＭＭｓ１４の説明で述べる態様でＭＭｓ１４によって用いられ、システムのアドレス空間のアドレスをメモリ内のＳＩＭＭメモリ・チップの物理的アドレス位置に変換するアドレス翻訳テーブルとして構成する。
【００２５】
アドレス指定可能な記憶装置又はそれに伴いバス動作に関係するメモリ空間を有する各機能ユニットに対して同様な処理が続き、各機能ユニットは、それに伴う記憶装置又はメモリ空間をシステムのアドレス空間にマッピングする。各機能ユニットは、その後は、その機能ユニット内の又はそれに伴うメモリ又は記憶アドレス位置を参照するＸＡ−ＭＰバス１２上のアドレスを検出する責任を有し、適切に応答する。
【００２６】
同様にして、システムの各機能ユニットは、データやプログラム命令などのその記憶空間に存在するすべての情報の管理の責任を有する。システムの分散機能のこの側面は、キャッシュされた情報との関係で特に意義をもつが、これは、各機能ユニットはＭＭｓ１４を除いてその機能ユニットによって用いられる又は動作を与えられる情報を記憶するキャッシュ・メカニズムを与えられているからである。したがって、ＰＭ１６には、その中に存在する処理ユニット４２の数に依存して１つ又は複数のキャッシュが与えられ、処理ユニット４２の動作を制御するプログラム命令と処理ユニット４２によって動作を与えられるデータとを記憶する。同様にして、システム１０に対し主に入出力ユニットであるＢＭｓ１８には、ＸＡ−ＭＰバス１２から接続された機能ユニットとＢＭｓ１８から接続されたバス又は装置との間で転送される情報のためのキャッシュが提供される。
【００２７】
システム機能のシステムの複数の機能ユニットの間での分散を更に図解するために、対称型マルチプロセッサ・システムでは、１つの処理がシステム内の任意のプロセッサ上で実行されること、また、１つの処理が１つのプロセッサに指定され実行を開始し、たとえばその処理のプロセッサ時間スライスの終了までに実行を停止し、後に、システムの別のプロセッサ上で実行を再開することは、広く知られている。システム１０では、１つの処理がある処理ユニット４２に指定され、その処理に所属しＭＭｓ１４からその当初の処理ユニット４２に関連するキャッシュ・メカニズムに読み取られたデータ及び命令を用いて処理ユニット４２において実行が開始され、それによって、キャッシュ・メカニズムにキャッシュされたデータ及び命令は、その処理が実行されている機能ユニットに、すなわち、プロセッサ４２とそれに関連するキャッシュ・メカニズムとに「所属」する。この処理が後に上述のように当初の処理ユニット４２から「切り換え」られた場合には、当初の処理ユニット４２にキャッシュされていたデータ及び命令はその当初の処理ユニット４２のキャッシュ・メカニズムにあるままであって、その処理ユニット４２がデータ及び命令をメモリに転送して返すのにキャッシュ・メモリ空間が足りないなどの理由かない限りは、その当初の処理ユニット４２に所属し続ける。
【００２８】
その処理は、別の処理ユニット４２上で実行を再開する場合には、その処理に要求されるデータ及び命令が実行されることを要求し、以下で述べるように、ＸＡ−ＭＰバス１２上にデータ及び命令への要求を置く。次に実行されるイベントのシーケンスは、メモリから最初に読み取られたデータが修正（変更、ｍｏｄｉｆｙ）されていたかどうかに依存し、以下で更に詳細に説明されるように、システム１０では、いかなる時刻においても、データのただ１つのコピーだけが存在することが許される。
【００２９】
メモリから当初の処理ユニット４２のキャッシュ・メカニズムに読み取られたデータが修正されておらずキャッシュ・メカニズム内に修正されたとのマークがなされていない場合には、有効なコピーは、メモリの中に存在するコピーであると推測され、メモリからその処理がその上で現に実行されているプロセッサ・ユーット４２のキャッシュ・メカニズムに読み取られる。データが修正されていて最初の処理ユニット４２のキャッシュ・メカニズムの中に修正されたとのマークを付して存在する場合には、データのこの修正されたコピーが、データの唯一の有効なコピーであり最初の処理ユニット４２に「所属」する。後に更に説明するように、システム１０の各機能ユニットは、「スヌーピング」と呼ばれる処理においてＸＡ−ＭＰバス１２上に現れるすべての読み取り要求をモニタし、最初の処理ユニット４２は、よって、データの「シェアされた（ｓｈａｒｅｄ）」コピーを含む任意の他の機能ユニットのように、新たな処理ユニット４２によってＸＡ−ＭＰバス１２上に置かれたデータ読み取り要求を検出する。
【００３０】
後でＸＡ−ＭＰバス１２の詳細な説明やシステム１０に関する他の説明部分で述べるように、要求されたデータのコピーを有する任意の機能ユニットは、ＸＡ−ＭＰバス１２上のデータに対する要求を検出し、その要求に肯定応答するが、これは、従来技術におけるシステムでは、肯定応答するユニットが要求されたデータを提供することによって応答する肯定応答からなっていた。しかし、システム１０では、最初の処理ユニット４２のようにデータの修正されたコピーを有する機能ユニットは、メモリにおける読み取り動作をキャンセルし要求側の機能ユニットにデータはメモリ以外のソースから提供されることを告げるメモリ・サイクル禁止（ＭＣＩ）及びＣＤＭコマンドをアサートする。データの有効なコピーすなわちデータの修正されたコピーを有する機能ユニットは、次に、ＸＡ−ＭＰバス１２に対して仲裁を行い、データの修正されたコピーを非順序の転送を介して新たな処理ユニット４２に与える。最初の所有している処理ユニット４２からデータの修正されたコピーを受け取る処理ユニット４２は、データの「所有者」となり、応答の際にはそのデータを管理する責任を想定する。
【００３１】
以下で詳細に述べられるシステム１０の機能要素の間のシステム機能の分散の他の例には、機能ユニットの間のＸＡ−ＭＰバス１２アクセスの仲裁と、メモリ読み取りを要求している各機能ユニットがそれ自身の読み取り要求のトラッキングと対応するメモリ応答の検出及び応答の責任を有するメモリからの順序付き読み取りの実行と、ＳＩＭＭモジュールのタイプ、バス転送速度及びそれ以外のファクタに依存するメモリ動作の適合的タイミングと、が含まれる。
【００３２】
以上で、本発明を実現するシステム１０の一般的な構成と動作とを説明したので、以下では、システム１０の機能ユニットを更に詳細に説明する。
Ｂ．システム１０の詳細な説明
１．ＸＡ一ＭＰバス１２
再び図２及び図３を参照すると、ＸＡ−ＭＰバス１２は、データを移動させる１つ又は２つのデータ・バス２６と、メモリ空間アドレスを移動させるアドレス（ＡＤＤＲ）バス２８と、ＸＡ−ＭＰバス１２から接続されたシステム・ユニットによって実行されるべきバスに関係した動作を示すコマンドを移動させるコマンド（ＣＭＤ）バス３０と、から構成されている。やはり示されているように、複数の仲裁（ＡＲＢ）ライン３２がＸＡ−ＭＰバス１２に関連しており、システムの複数の機能ユニットがＸＡ−ＭＰバス１２へのアクセスに関してそれらの間で仲裁をするのに用いられる。また、以下で述べるそれ以外の動作も行う。ＸＡ−ＭＰバス１２には割り込み（ＩＮＴ）ライン３４も関連しており、これは、割り込み動作及び制御（ＣＮＴＬ）ライン３５において用いられる。
【００３３】
以下での説明のために、システムで用いられるプライマリ・データ要素は、情報すなわちデータ及び命令はシステム１０のキャッシュの中に各ラインがキャッシュ・メモリにおける１つのアドレス位置を占めるラインとして参照されるユニットでキャッシュされているから、キャッシュ・ラインとして参照されるデータ又は命令のブロックであることに注意すべきである。
【００３４】
各キャッシュ・ラインは、２５６ビットすなわち３２バイトの情報を含み、各データ・バス２６は、６４ビットすなわち８バイトの幅を有しており、それによって、データ・バス２６上の１つのキャッシュ・ラインの転送は、実際のデータ転送に４つのバス・クロック・サイクルを要する。更に、メモリからの標準的な読み取りは、１つのキャッシュ・ラインから成り、すなわち、メモリへの１つの読み取り要求の結果として、３２バイトのキャッシュ・ラインがＸＡ−ＭＰバス１２上を要求側に転送され、よって、バスの４つの転送が必要となる。
【００３５】
各ＸＡ−ＭＰバス１２の動作は、更に、「バス所有者」の間での切り換えのために１つのバス・クロック・サイクルを要求する。すなわち、１つのバス・クロック・サイクルが、ＸＡ−ＭＰバス１２が動作を実行するのにバスを現に使用している機能ユニットから次のバス動作のためのバスへのアクセスを取得した次の機能ユニットへ転送されるのを制御するのに必要となる。
【００３６】
後でＭＭｓ１４に関して述べるように、各ＭＭ１４のＭＳＥｓ３６は、アドレス位置のデュアル・コラムとして構成されており、そこでは、一方のコラムが偶数のアドレス位置を含み、他方のコラムは奇数のアドレス位置を含み、各コラムは、６４ビットの情報を記憶する。ＭＭｓ１４は、よって、当初はハーフ・キャッシュ・ラインとして構成され、２つのコラムを横断する各ローは、１２８ビットのハーフ・キャッシュ・ラインを有し、ＳＩＭＭ回路の２つのコラムを横断する１つのローからの１つの読み取り動作は、ハーフ・キャッシュ・ラインの情報を提供する。システム・アドレス空間マッピングへのＭＭ１４は、好ましくは、連続するハーフ・キャッシュ・ラインが別のグループのＳＩＭＭ回路に記憶されるように構成されており、それによって、２つの連続するハーフ・キャッシュ・フインは異なるメモリＲＡＳ（ロー・アドレス・ストローブ）信号すなわち異なるＲＡＳドライバ回路を用いてＭＭｓ１４から読み出され、よって、８０ｎｓのＳＩＭＭを用いる際の更なるアクセス遅延時間を除去する。
【００３７】
上述のように、システム１０のこの好適実施例においては、ＸＡ−ＭＰバス１２には、幅がそれぞれ６４ビットすなわちハーフ・キャッシュ・ラインである２つのデータ・バス２６が与えられ、バス上の情報転送速度を高めている。
【００３８】
以上で述べてきたように、２つのデータ・バス２６は、相互に独立に動作する。データ・バス２６のいずれもか、メモリからの読み取りなどのバス・データ転送を実行するために使用され、１つのバス・データ転送は一方又は他方のデータ・バス２６上で完全に実行され、２つのバス転送が、一方は一方のデータ・バス２６上で、他方は他方のデータ・バス２６上で、同時に実行される。
【００３９】
メモリからのキャッシュ・ライン読み取りのような１つの「標準的な」ＸＡ−ＭＰバス１２の動作は、よって、５つのバス・クロック・サイクルを必要とするが、その場合、１つは送信機能ユニットがバスの制御を行うためであり、４つは２つのデータ・バス２６の１つの上のデータ転送のためである。ＸＡ−ＭＰバス１２及びＭＭｓ１４の詳細な説明で述べられるように、システム１０は、単一バス・ワード転送を行い、転送は偶数又は奇数のキャッシュ・ライン・アドレスを用いて開始され、すなわち、偶奇偶奇・・・の順に制限されない。
【００４０】
上述のように、ＸＡ−ＭＰバス１２のデータ・バス２６は、ＸＡ−ＭＰバス１２のＡＤＤＲバス２８及びＣＭＤバス３０とは動作的に分離されており独立であって、ＭＭｓ１４からの読み取りのためのＸＡ−ＭＰバス１２上の情報転送は、順序付き転送の形式を有しており、読み取り要求への応答は、なされた順序で満たされる。順序付きの読み取り動作においては、応答は、要求が応答のための要求を受け取った機能ユニットによって受け取られてから数バス・サイクル後に生じ、これは、応答のために他の要求行列が存在したかどうかに依存する。このタイプの動作は、この応答が要求から時間内に（ｉｎ  ｔｉｍｅ）除去され得るので、「スプリット・サイクル」を称される。
【００４１】
システム１０における順序付きの転送では、各機能ユニットは、他の機能ユニットのメモリ要求とは独立に、各機能ユニットにおける順序付きの要求行列（ｏｒｄｅｒｅｄ  ｒｅｑｕｅｓｔ  ｑｕｅｕｅ）の動作を通じて、それ自身のメモリ要求をトラッキングする。順序付きの要求行列によって、機能ユニットが、メモリからそれ自身及び他の機能ユニットへのメモリ読み取りとすべての順序付きの転送との要求の両方をトラッキングすることと、いつメモリからの順序の付いた（ｉｎ  ｏｒｄｅｒ）転送がその要求の１つに応答して提供されるかを検出する。次に１つの機能ユニットが、ＸＡ−ＭＰバス１２からデータを受け取ることによって応答する。従来型のバスにおいて情報要求側と情報提供側との間で実行されるハンドシェーキング動作の通常のシーケンスは、順序付きの読み取りサイクルの応答部分の間、このように除去される。
【００４２】
非順序モードでは、データ・バス２６の動作は、ＡＤＤＲバス２８及びＣＭＤバス３０の動作に結合され、要求側と提供側との間のハンドシェーキングを要求する非順序転送を実行する。このような非順序転送では、要求に応答して情報を提供するユニットは、必ずしもその要求がＸＡ−ＭＰバス１２上に置かれたのと同じシーケンスでそうするのではなく、情報提供側は、したがって、アドレスすなわちその要求を行っているユニットのスライス番号を調べなければならない。要求された情報を提供するユニットは、要求側のユニットすなわち情報を受け取る側のユニットのスライス番号をＡＤＤＲバス２８上に置き適切なコマンドをＣＭＤバス３０上に置きデータをデータ・バス２６上に置くことによって、データ・バス２６の動作をＡＤＤＲバス２８及びＣＭＤバス３０に結合させる。そして、受け取る側のユニットは、そのスライス番号とコマンドとに応答してデータを受け取る。
【００４３】
後に述べるように、メモリからのデータ読み取りの要求は、順序付きの要求としてＸＡ−ＭＰバス１２上に置かれる。情報がメモリからではなくプロセッサ・ユニットのキャッシュ・メカニズムから戻された従前の例のようにデータがメモリ以外のユニットから提供される場合には、この情報を含むユニットは、上述したようにメモリ動作をキャンセルすることによって応答し、非順序応答を生じる。そうするために、応答側のユニットは、要求側のユニットのアドレスすなわちスライス番号を取得しなければならず、要求側のユニットからではなくバス仲裁メカニズムから要求側ユニットのスライス番号を取得し、よって、要求側のユニットは、各要求に対して自己識別アドレスを提供する必要がない。それぞれの情報読み取り要求は、順序付きの要求として要求側のユニットによって最初は発生され、その要求側のユニットは、その要求がどのように満たされるかを前もって知る必要はない。
【００４４】
上述したように、順序付きの動作は、キャッシュ・ラインとメモリからのバス・ワード読み取りのために用いられ、システム１０の中の読み取り動作の多数を有している。非順序動作は、キャッシュからキャッシュへの転送、ワード転送及びＢＭｓ１８を介しての入出力動作のために用いられ、よって、動作のそれぞれのタイプに対するＸＡ−ＭＰバス１２の動作を最適化する。
【００４５】
２．メモリ・モジュール１４
ａ．メモリ・コントローラ３８の説明
以上で述べてきたように、各ＭＭ１４は、ＳＩＭＭモジュールのようなメモリ回路のロー及びコラム・アレーであるＭＳＥ３６から構成され、当該技術分野で周知のように、アドレス指定可能にデータを記憶し提供する。各ＭＭ１４は、更に、そのＭＭ１４に対して制御機能を提供するＭＣ３８と、ＭＳＥ３６とＸＡ−ＭＰバス１２との間にデータ・パスを形成しそれぞれがデータ・バス２６の１つに接続されている１つ又は複数のＭＤＰｓ４０と、を含む。
【００４６】
図４及び図５を参照すると、ＭＣ３８とＭＤＰ４０とのブロック図が示されている。最初に図４を参照すると、ＭＣ３８及びＸＡ−ＭＰバス１２とバス動作に関連する制御ラインとの間の第１の（プライマリ）インターフェースは、ＸＡＭＰ制御インターフェース（ＸＡＭＰＣＩ）６２とコマンド・アドレス入力ブロック（ＣＭＤＡＩ）６４とによって提供される。
【００４７】
ＸＡＭＰＣＩ６２は、ＸＡ−ＭＰバス１２動作に関連する制御ラインのあるものとインターフェースし、これは、以下のＭＣ３８の詳細な説明において説明される。図４に示されるように、ＸＡ−ＭＰバス１２からＸＡＭＰインターフェース６２への入力信号は、システム仲裁メカニズム（ＡＲＢ）の９つのＡＲＢ信号ラインを含み、コマンド・ストローブ（ＣＳ＃）が、ＣＭＤバス３０上のコマンドの存在を示す。
【００４８】
ＸＡＭＰＣＩ６２からの出力信号はＡＣＫ及びＮＡＫ信号を含み、ＣＡＥ＃信号が、メモリが受け取ったコマンド及びアドレスが誤っていることを示す。ＤＳ０＃及びＤＳ１＃は、２つのデータ・バス２６に対する個別のデータ・ストローブ信号であり、ＯＲＤ０＃及びＯＲＤ１＃は、２つのデータ・バス２６に対する個別の信号でありＯＲＤ＃信号に対応してデータ・バス２６上に順序付きの応答が存在していることを示す。
【００４９】
示されているように、ＸＡＭＰＣＩ６２は、メモリ・コマンドＦＩＦＯ（先入れ先だしメモリ）への局所的応答出力を与え、以下述べるように、メモリによって応答される動作要求が受け取られたことを示す。ＸＡＭＰＣＩ６２は、また、それぞれがデータ・バス２６の１つに対応し対応するデータ・バス２６からＭＤＰ４０へのデータ転送をイネーブルするのに用いられるＢＩＮ０＃及びＢＩＮ１＃を含むＭＤＰ４０への複数の出力を与える。ＢＯＵＴ０＃及びＢＯＵＴ１＃は、それぞれが、データ・バス２６の１つに対応し、メモリから対応するデータ・バス２６へのデータ転送をイネーブルするのに用いられる信号である。ＢＡＣＫ０＃及びＢＡＣＫ１＃は、それぞれが、データ・バス２６の１つに対応し、対応するデータ・バス２６上の書き込みサイクルが有効に肯定応答されたとえばＭＣＩによって吸収されないことをＭＤＰ４０に表す信号である。
【００５０】
ＣＭＤＡＩ６４は、ＡＤＤＲバス２８及びＣＭＤバス３０とインターフェースし、以下のＭＣ３８の詳細な説明で述べる他のバス動作制御ラインに対して、アドレス及びコマンドを受け取り提供する。ＣＭＤＡＩ６４への入力には、ＡＤＤＲバス２８上に現れるアドレスと、ＣＭＤバス３０からのコマンド信号（ＣＭＤ）と、コマンドがＣＭＤバス３０上に存在することを示すコマンド・ストローブ信号ＣＳ＃と、が含まれる。ＡＰ及びＣＰ入力は、それぞれ、アドレス及びコマンド・パリティ・ビットである。信号ＢＵＳＬ＃は、要求側の機能ユニットがロックされている、すなわち、拡張された周期の間ＸＡ−ＭＰバス１２の制御を受けることを示すバス制御ライン入力である。
【００５１】
図４に示されているように、ＣＭＤＡＩ６４は、その中への記憶のために上述のメモリ・コマンドＦＩＦＯに出力を提供し、この出力は、メモリ要求のアドレス及びコマンドといくつかの制御ビットとを含む。ＣＭＤＡＩ６４は、また、ＸＡＭＰＣＩ６２にヒット及び誤り（エラー）出力を提供して、それぞれどの場合に受け取られたメモリ要求が何らかの理由で有効又は無効であるかを示す。
【００５２】
図４には、ＭＣ３８は、更に、例外及び誤り条件を扱うために提供される例外制御（ＥＸＣＥＰＴ）６６を介して、ＸＡ−ＭＰバス１２及び関連するバス動作制御ラインとのインターフェースを有することが示されている。ＥＸＣＥＰＴ６６についてはここではこれ以上説明しないが、ＭＣ３８の詳細な説明の部分で更に述べることにする。ＭＣ３８は、また、走査制御（ＳＣＡＮ）６５を含み、これについても、ＭＣ３８の詳細な説明の箇所で述べる。
【００５３】
メモリ動作要求は、上述のメモリ制御ＦＩＦＯ（ＭＣ  ＦＩＦＯ）６８の動作を介して、ＭＣ３８においてパイプラインされる。示されているように、ＭＣＦＩＦＯ６８は、ＣＭＤＡＩ６４とＸＡＭＰＣＩ６２とから実行されるべきメモリ動作を定義するアドレス、コマンド及び応答入力を受け取り、受け取られた順序で動作されるべき動作を記憶する。
【００５４】
これ以外の入力がＭＤＰ４０からＭＣ  ＦＩＦＯ６８に提供されるが、この入力には、ＭＤＰ４０によって対応するデータ・バス２６上で検出されたパリティ誤り（エラー）の存在を示すＭＤＰＥ０＃及びＭＤＰＥ１＃バス制御信号が含まれる。メモリ・サイクル禁止（ＭＣＩ＃）信号は、既に述べたように現在のメモリ動作がキャンセルされたことを示し、キャッシュ・データ修正（ＣＤＭ＃）及びキャッシュ・データ共有（ｓｈａｒｅｄ）（ＣＤＳ＃）信号は、要求されたデータの修正された又は共有されたコピーの存在が別の機能ユニットにおいて示されていることと現在のメモリ・サイクルがキャンセルされていることとを、示している。ＡＣＫ＃及びＮＡＫ＃信号は、それぞれが、ＭＣ３８は現在のメモリ動作を受け取った又は受け取っていないことを示し、一方、コマンド又はアドレス誤り（ＣＡＥ＃）は、ＭＣ３８がコマンド又はアドレス誤りを検出したことを示す。
【００５５】
ＭＣ  ＦＩＦＯ６８とＥＸＣＥＰＴ６６とは、それぞれが、ＭＣマネジャ７０との制御信号インターフェースを有し、ＭＣマネジャ７０は、メモリ動作に対して基本的な制御及び管理機能を提供する。示されているように、ＭＣマネジャ７０は、ペンディングな要求の存在を示す要求信号ＦＲＥＱＵＥＮＴをＭＣ  ＦＩＦＯ６８から受け取り、その代わりに、その要求は実行してよいことを示すＦＧＲＡＮＴ信号を提供する。ＭＣマネジャ７０は、同時に、要求を実行し得ることを示すＥＧＲＡＮＴ信号をＥＸＣＥＰＴ６６に提供し、ペンディングな要求の存在を示すＥＲＥＱＵＥＮＴを受け取る。
【００５６】
これらの信号の結果として、ＭＣマネジャ７０は、次に、アドレス（ＡＤＤＲ）の発生、ロー・アドレス・ストローブ（ＲＡＳｓ）、コラム・アドレス・ストローブ（ＣＡＳｓ）及びＭＭｓ１４のＭＳＥｓ３６への書き込みイネーブル（ＷＥ）信号を制御する際にＤＲＡＭコントローラ７２によって用いられる制御出力をＤＲＡＭコントローラ７２に提供する。通常のように、ＭＳＥｓ３６は、ＳＩＭＭモジュールとして物理的に構成されたＤＲＡＭｓから成る。
【００５７】
ＤＲＡＭコントローラ７２へのその他の入力には、ＭＣ  ＦＩＦＯ６８から又はＥＸＣＥＰＴＩＯＮ６６から提供されたアドレス、サイクル及びレーン制御信号が含まれ、これらは、ＭＭｓ１４の詳細な説明で述べられるように、本質的に、ＭＣ  ＦＩＦＯ６８に記憶された要求アドレス及びコマンド情報から導かれるアドレス指定情報である。
【００５８】
図４に示されるように、ＭＣ３８は、ＭＣ  ＦＩＦＯ６８からの入力を有する可視レジスタ・ブロック（ＶＲＢ）７４と、ＥＸＣＥＰＴＩＯＮ６６と、ＭＣマネジャ７０と、システムにアクセス可能であり誤り情報の基本的制御を記憶し提供するのに用いられるレジスタから成るＭＤＰインターフェース（ＭＤＰＩ）７６と、を含む。
【００５９】
ＭＤＰＩ７６は、ＭＣ３８とＭＤＰ４０との間の制御及び同期インターフェースを提供し、ＭＣ３８によるメモリ動作の制御によるＭＤＰ４０を介してのＭＭ１４への及びＭＭ１４からのデータ転送を制御し同期化する。
【００６０】
示されているように、ＭＣ３８とＭＤＰ４０との間で交換されるこれらの制御信号は、ＭＣ３８とＭＤＰ４０との間を通過するコマンドであるマルチビットのＭＣコマンド（ＭＣＭＤ０及びＭＣＭＤ１）を含み、よって、各ユニットは、他方の何らかの動作を要求する。ＭＣ３８及びＭＤＰ４０の詳細な説明に示されるように、これらのコマンドは、本質的に、ＭＳＥ３６がＳＩＭＭアレーのＤＲＡＭからのバス・ワード又はキャッシュ・ラインの読み取りを実行するかどうかなどの、実行されるべきメモリ読み取り又は書き込み動作の特定のタイプに関するものである。データ・ラインＭＤＡＴＡ０＃及びＭＤＡＴＡ１＃は、ＭＣ３８とＭＤＰ４０との詳細な説明で述べるように、ＭＣ３８とＭＤＰ４０との間のＭＣ３８／ＭＤＰ４０動作において用いられるデータを通過させるのに用いられ、信号ＭＧＯ０＃及びＭＧＯ１＃は、ＭＣ３８又はＭＤＰ４０によって動作を開始させるのに用いられる。
【００６１】
ｂ．メモリ・データ・パス４０の説明
次に図５を参照すると、ＭＤＰ４０のブロック図が示されている。上述のように、ＭＣ３８は、本質的に、ＭＭ１４に対してすべてのタイミング及び制御機能及び信号を与え、また、ＭＭ１４によって実行されるメモリ及びＸＡ−ＭＰバス１２動作を与える。他方で、ＭＤＰ４０は、本質的に、ＸＡ−ＭＰバス１２とＭＳＥ３６のメモリ要素との間のパイプラインされたデータ・パスである。既に述べたように、各ＭＭ１４は、２つのＭＤＰ４０を有しており、その一方はデータ・バス２６のそれぞれと接続され、データ・バス２６へのデータ接続を有する各機能ユニットは、それぞれが、同様に、この２つのデータ・バス２６に接続された２つの同様のデータ・パス要素を含む。ただ１つのデータ・バス２６を用いる又は有するシステム１０の構成においては、各ＭＭ１４はただ１つのＭＤＰ４０を有する又は用い、また、それぞれの機能ユニットは、同様に、１つのデータ・バス２６に接続するためのただ１つのデータ・パス要素を有する又は用いる。
【００６２】
ＭＤＰ４０は、ＸＡ−ＭＰバス１２へのＸＡ−ＭＰバス１２データ・インターフェース（ＸＡＭＰＤＩ）７８と、ＭＳＥｓ３６のＤＲＡＭへのＤＲＡＭインターフェース（ＤＲＭＩ）８０とを含む。示されているように、ＸＡＭＰＤＩ７８は、ＸＡ−ＭＰバス１２のデータ・バス２６に対して双方向のデータ・インターフェースを有し、ＸＡ−ＭＰバス１２を用いて、６４ビットのデータ（ＢＤ）と８ビットのデータ・パリティ（ＢＤＰ）とを転送する。ＸＡＭＰＤＩ７８は、更に、ＸＡ−ＭＰバス１２に関連する制御ラインに対して双方向のバス未訂正データ誤り（ＢＵＤＥ＃）信号ライン・インターフェースを有し、メモリに提供される又はメモリから読み取られるデータにおける未訂正の誤りを示す信号を受け取り提供する。
【００６３】
ＭＤＰ４０のＭＳＥｓ３６とのインターフェースは、ＤＲＭＩ８０を介して提供され、ＭＳＥ３６のＤＲＡＭとの間の２つの双方向の６４ビット幅のデータ・パスからなり、これは、図５では、ＤＤ０（６３：０）とＤＤ１（６３：０）と称されている。既に述べたように、ＭＳＥｓ３６のメモリ要素は、偶数アドレスのコラムと奇数アドレスのコラムとの２つのコラムとして構成されており、各コラムは、１バス・ワード又は４分の１キャッシュ・ライン幅を有している。ＭＳＥ３６のメモリ要素に接続された２つのデータ・バスは、したがって、１バス・ワードを１つのメモリ内部サイクルで、又は、１つのキャッシュ・ラインを２つのメモリ内部サイクルで転送する能力をもつ。ＭＳＥｓ３６への各データ・バスすなわちＤＤ０（６３：０）及びＤＤ１（６３：０）に関連し並列であるのは、ＤＣ０（７：０）及びＤＣ１（７：０）と識別されている２つの双方向の誤り検出及び訂正バスであり、ＭＳＥｓ３６とＭＤＰ４０のメモリ要素の間でデータ・チェック・ビットを搬送する。この点で、ＭＳＥｓは、情報だけを記憶するのではなく、ＭＳＥｓ３６の各バス・ワード幅のコラムのローはメモリ要素を含みその中に記憶される対応するバス・ワードに関連するデータ・チェック・ビットを記憶することに注意するべきである。
【００６４】
ＸＡ−ＭＰバス１２からの入力パスは、ＸＡＭＰＤＩ７８から書き込み・パス・メモリ（ＷＲＩＴＥ  ＰＡＴＨ）８２に延び、ＭＳＥ３６へのデータ書き込みをパイプラインするのに用いられる。以下で述べるように、ＷＲＩＴＥ  ＰＡＴＨ８２は、また、データとＤＲＭＩ８０からのチェック・ビット・パスとにおいて接続された出力ＥＤＡＣ発生器及び訂正器（ＥＤＡＣ）８４からのデータ・パス入力を有する。ＭＤＰ４０の詳細な説明において述べられるように、このパスは、データ書き込み及び訂正動作のために用いられる。
【００６５】
ＷＲＩＴＥ  ＰＡＴＨ８２からのデータ・パス出力はＤＲＭＩ８０へのデータ・パス入力に接続され、情報がそれを介してＭＳＥｓ３６に書き込まれるパスを提供する。ＷＲＩＴＥ  ＰＡＴＨ８２からのデータ・パス出力は、また、ＭＳＥｓ３６の中に書き込まれる各バス・ワードに対するチェック・ビットを発生する書き込みチェック・ビット発生器（ＷＣＢＧ）８６へのデータ・パス入力に接続されており、ＷＲＩＴＥ  ＰＡＴＨ８２からＭＳＥｓ３６の中に書き込まれるべきバス・ワードとして提供されたデータと並列に、ＤＲＭ１８０へのチェック・ビット書き込みパス入力を介してチェック・ビットを提供する。
【００６６】
ＷＲＩＴＥ  ＰＡＴＨ８２のデータ・ワード出力は、また、ＭＤＰレジスタ（ＭＤＰＲｓ）８８への入力として提供されて、何らかのＭＤＰ４０レジスタの書き込みを許容する。ＷＲＩＴＥ  ＰＡＴＨ８２及びＭＤＰＲ８８の出力は、上述のようにＭＤＰＩ７６とインターフェースするＭＣインターフェース（ＭＣＩ）９０への入力として提供され、ＭＤＰＩ７６と交換される制御及びデータ信号を発生させるのに用いられる。示されるように、ＭＤＰＩ７６と交換される制御及びデータ信号は、更に、空のＦＩＦＯ上の要求された読み取り動作又は一杯のＦＩＦＯ上の書き込み動作などのＷＲＩＴＥ  ＰＡＴＨ８２を有するＦＩＦＯ又はＲＥＡＤ  ＰＡＴＨ９２を有するＦＩＦＯにおける誤りが存在する場合を示すＦＩＦＯ誤り信号（ＦＩＦＯＥＲＯ＃）を含む。
【００６７】
次にＭＤＰ４０を通るデータ出力パスを考えると、ＤＲＭＩ８０を介してのＭＳＥｓ３６から読み取られたデータ及びチェック・ビットは、ＥＤＡＣ８４への入力として提供され、ＥＤＡＣ８４は、誤り検出及び訂正動作を実行し、ＭＳＥｓ３６から読み取られたバス・ワードに対して訂正されたデータ・ビットと、誤り信号ＳＢＥ＃及びＭＢＥ＃を発生する。これらはすべて、ＲＥＡＤ  ＰＡＴＨ９２への入力として提供される。
【００６８】
ＲＥＡＤ  ＰＡＴＨ９２は、本質的に、ＭＭ１４から読み取られたデータをパイプラインするＦＩＦＯであり、ＲＥＡＤ  ＰＡＴＨ９２のデータ・ビット出力はＸＡＭＰＤＩ７８に提供されて、要求されるようにＳＡ−ＭＰバス１２上に転送される。
【００６９】
最後に、ＭＤＰ４０は、ＭＤＰ４０のある動作を制御する状態機械（ＳＴＡＴＥ）９４を含む。示されるように、ＳＴＡＴＥ９４は、ＸＡ−ＭＰバス１２からＭＤＰ４０へのデータ転送をイネーブルするＭＣ３８からのバスイン（ＢＩＮ＃）信号と、ＭＤＰ４０からＸＡ−ＭＰバス１２へのデータ転送をイネーブルするＭＣ３８からのバスアウト（ＢＯＵＴ＃）信号とを受け取る。ＭＣ３８からのこの他の信号は、有効な肯定応答された書き込みサイクルを示すバス肯定応答信号（ＢＡＣＫ＃）と、ＭＤＰ４０を初期化する初期化（ＩＮＩＴ）信号とを含む。ＳＴＡＴＥ９４は、また、ＭＣ３８から、ＢＤＡＴＡ、ＭＧＯ及びＭＣＭＤを受け取るが、これに関する更なる説明は、ＭＣ３８及びＭＤＰ４０の詳細な説明においてなされる。
【００７０】
以上でＭＭ１４の全体的な構成及び動作を特にＭＣ３８とＭＤＰ４０とに焦点を合わせて説明したが、以下では、ＭＭ１４の特定の機能及び動作について説明する。
３．記憶されたデータに対する誤り訂正
ＭＭｓ１４は、読み取り・訂正・再書き込みの動作によってＭＳＥｓ３６に記憶されたデータの誤り訂正を行い、その場合に、読み取り・訂正・再書き込みの動作は、メモリ要素との間の情報の通常の読み取り及び書き込みを遅延させないような態様で実行される。この点で、既に、ＭＤＰ４０がメモリから読み取られた情報の誤り検出及び訂正をＥＤＡＣ８４の動作を通じて行い、ＷＣＢＧ８６の動作を通じてメモリに書き込まれる情報に対してチェック・ビットを発生し、このチェック・ビットはメモリの中に書き込まれ、情報と共に記憶されることは説明されている。
【００７１】
ＭＤＰ４０がメモリからバス・ワードを読み取りデータにおける誤りを検出する、すなわち、データがそのデータに関連するチェック・ビットに従う場合には、ＭＣ３８は、ＭＣＤＥを受け取り、ＥＤＡＣ８４を介してＸＡ−ＭＰバス１２へ転送される誤りが訂正されつつあるデータのアドレス位置を記して、この誤りアドレス情報（ＥＲＲＯＲ  ＡＤＤＲ）を訂正行列（ＣＯＲＲＱ）９６に記憶する。
【００７２】
図６に示されているように、また既に説明したように、メモリ要求、すなわち、実行されるべき動作を示すコマンドと、読み取られる又は書き込まれるべき情報のアドレスとは、ＸＡＭＰＣＩ６２によってＸＡ−ＭＰバス１２から受け取られ、メモリによって実行される場合にはＸＡＭＰＣＩ６２から成るパイプライン行列に記憶され、ＭＣ３８とＭＤＰ４０とによって実行される。既に述べたように、バス・ワード及びキャッシュ・ラインのメモリ読み取り動作は、順序付きの動作として実行され、各動作は受け取られた順に実行される。ＭＣ３８及びＭＤＰ４０の動作は、ＭＣ３８によって維持されるペンディング要求行列（ＰＲＥＱＱ）９８の動作を介して調整され、その場合に、ＭＣ３８はすべてのペンディングな要求の識別（ＩＤ）を記憶する。ＭＤＰ４０は、次に、実行されたものとして要求に関する情報を提供し、この情報をＭＣ３８のＰＲＥＱＱ９８に提供し、よって、ＭＣ３８とＭＤＰ４０との同期が維持されることを可能にする。
【００７３】
ＸＡＭＰＣＩ６２、ＣＯＲＲＱ９６及びＰＲＥＱＱ９８に関連しているのは、ＸＡＭＰＣＩ６２におけるペンディングな要求の状態をモニタしてペンディングな要求の待ち行列がいつ空になるかを検出する動作仲裁装置（ＯＰＡＲＥ）１００である。待ち行列が空である場合には、ＯＰＡＲＥ１００はＣＯＲＲＱ９６をチェックし、メモリが未訂正の誤りを含む何らかの記憶位置を検出したかどうかを判断し、任意のそのようなアドレスがＣＯＲＲＱ９６において待ち行列になっている場合には、読み取り・訂正・再書き込み動作を実行する。それぞれのそのような動作においては、ＭＤＰ４０は、ＭＣ３８の制御動作と協力して、ＤＲＭＩ８０を介してＭＳＥ３６からのそのアドレス位置からデータを読み取り、ＥＤＡＣ８４を介してデータを訂正し、ＷＲＩＴＥ  ＰＡＴＨ８２を介してデータを元に戻す。データは、ＷＲＩＴＥ  ＰＡＴＨ８２を通ってＷＣＢＧ８６まで通過し、そこで新しいチェック・ビットが発生され、訂正されたデータと新しいチェック・ビットとがＤＲＭＩ８０を介してＭＳＥ３６に再度書き込まれる。ＯＰＡＲＥ１００がＣＯＲＲＱ９６が一杯であることを検出した場合でも、データ訂正動作は、上述の場合と待った駆動用に行われるが、ペンディングな要求がある場合にも実行される。
【００７４】
ＭＭｓ１４は、よって、誤りを含む識別（ＩＤ）及び位置を記憶しペンディングな要求がない場合には読み取り・訂正・再書き込み動作を実行することによって、読み取り及び書き込み動作の実行に干渉せずにＭＳＥｓ３６に記憶されたデータに関して誤り検出及び訂正を実行する。
【００７５】
ＭＤＰ４０の別の特徴を図５を参照することによって説明するが、そこでは、ＲＥＡＤ  ＰＡＴＨ９２のＦＩＦＯ空き信号出力によって提供されるバイパス・パス・ゲート（ＢＰＧ）１０２の制御と共に、ＲＥＡＤ  ＰＡＴＨ９２の周囲のゲートされたバイパス・データ・パスが表されている。上述のように、ＲＥＡＤ  ＰＡＴＨ９２は、本質的にＦＩＦＯ行列であり、読み取り要求動作の結果生じる情報及びパリティ・ビットは、その待ち行列を介して実行された順にＸＡ−ＭＰバス１２まで通過する。すべての要求が実行された場合には、待ち行列は空になり、ＸＡ−ＭＰバス１２への転送が可能になる前に新たな要求がＲＥＡＤ  ＰＡＴＨ９２の待ち行列を通過しなければならないが、これは複数のクロック・サイクルを要求し、待ち行列の深さ（ｄｅｐｔｈ）に依存する。しかし、待ち行列が空である場合には、この条件はＦＩＦＯ空き信号をＢＰＧ１０２にアサートするＲＥＡＤ  ＰＡＴＨ９２によって検出され、ＢＰＧ１０２は、ＲＥＡＤ  ＰＡＴＨ９２の周囲に及び直接にＸＡＭＰＤＩ７８にゲートすることによって応答し、ＭＣ３８はＭＤＰ４０にＢＯＵＴ信号を送出して、データがＸＡ−ＭＰバス１２上に置かれることを要求し、よって、要求された情報をＲＥＡＤ  ＰＡＴＨ９２を介して入手可能になるよりも１クロック・サイクルだけ早くＸＡ−ＭＰバス１２に提供する。
【００７６】
４．適合的（ａｄａｐｔｉｖｅ）メモリ・タイミング
ＭＭ１４は、ＭＭ１４の動作を適合させてＭＭ１４で用いられる特定のＳＩＭＭ回路によって可能な限り最大の動作速度が得られるような態様でメモリ動作を制御する際に、ＭＣ３８によって発生されＭＣ３８及びＭＤＰ４０によって用いられるメモリ動作タイミング信号の絶対的及び相対的タイミングを適合的に変更する能力を更に有している。制御可能な信号は、ＳＩＭＭタイミング信号を含み、これには、ＭＣ３８のＤＲＡＭコントローラ７２によって発生されるＲＡＳ、ＣＡＳ及びＷＥが含まれ、更に、ＭＣ３８によって発生されＭＣ３８及びＭＤＰ４０によって用いられＭＭ１４の動作を制御するそれ以外のタイミング信号も含まれる。
【００７７】
図７を参照すると、ＳＩＭＭ回路が、特定のＳＩＭＭ回路の少なくともサイズと速度とを示す何らかのピン出力に符号化された値を提供することは周知である。現在のシステムにおいては、ＳＩＭＭ回路のピンを介して入手可能なこれらの符号化された値は、ＭＭ１４のＭＳＥｓ３６の外に運ばれて、ＭＣ３８に利用可能にされる。このシステムは、更に、ＭＭ１４の記憶位置に置かれたプロフィール記憶装置１０４を含み、そこでは、プロフィール記憶装置１０４は、ＭＳＥ３６に現れるＳＩＭＭグループの各タイプに対してプロフィール１０６を含み得る。
【００７８】
各プロフィール１０６は、ＳＩＭＭモジュールの対応するタイプのタイミング特性を表す値の組を含み、そこでは、このタイミング特性は種々の最大ゲート遅延、再充電時間、ＳＩＭＭモジュールの内部回路のタイミング・イベント間隔を表す。現在のシステムでは、タイミング特性の値は、ナノ秒などの時間の単位では表されず、ダブル速度クロックでのカウントのようなＳＩＭＭモジュールの比較タイミング特性を表す値である。しかし、このタイミング特性値は、ＳＩＭＭモジュールとＭＭ１４において用いられる基本クロックとの両方のタイミング特性を容易に表しタイミング信号を発生するように選択される。
【００７９】
システムの初期化においては、ＭＣ３８は、ＳＩＭＭモジュールのピン出力から提供されるＳＩＭＭモジュール符号化されたタイミング特性値を読み取り、その符号化された値を用いて対応する１つ又は複数のプロフィール１０６をプロフィール記憶装置１０４から選択し読み取る。タイミング特性値は、次に、ＭＭ１４のＭＣ３８におけるタイミング計算装置１０８に提供される。タイミング計算装置１０８には、各ＳＩＭＭ動作を実行するのに必要になる最大時間間隔を計算するのに必要な計算機能が備わっており、これはたとえば、１つのＲＡＳ信号と次のＲＡＳ信号との間で生じなければならない最大時間、書き込みイネーブル信号と書き込みイネーブル信号の結果との間で生じ得る最大時間などである。
【００８０】
タイミング計算装置１０８は、ＳＩＭＭの動作において生じ得るタイミング・イベントの時刻を表すタイミング制御値の組を計算して提供し、その場合に、各タイミング・イベントはタイミング信号によって表され、タイミング制御値は、ＳＩＭＭ動作を制御するのに用いられるＭＭ１４の内部クロックのクロック周期の単位を有する。このシステムにおいては、タイミング・イベントは、「絶対」時間及び「相対」時間の両方として決定すなわち計算され、「絶対」イベントが生じる時刻はメモリ動作サイクルの開始を表すＴ０に対して決定され、「相対」イベントは前のイベントに対して決定される。たとえば、ＲＡＳ及びＣＡＳ信号が生じる時刻は、メモリ・サイクルのＴ０開始に対する絶対イベントとして決定され、他方で、ＷＥが生じる時刻すなわちデータがＳＩＭＭモジュールから現れる時刻は、ＲＡＳ及びＣＡＳ信号の生起などの前のイベントに対して決定され得る。
【００８１】
次に、タイミング制御値がＤＲＡＭコントローラ７２に提供され、ＤＲＡＭコントローラ７２によって用いられて、ＲＡＳ、ＣＡＳ及びＷＥなどの実際のタイミング信号をＳＩＭＭモジュールに発生する。
【００８２】
本発明の別の実施例では、システム初期化においてタイミング計算装置１０８を介してタイミング値を計算するのではなく、各プロフィールに対するタイミング値を予め計算し、タイミング値をＤＲＡＭコントローラ７２に単にロードすることが好ましい。
【００８３】
このシステムのこの実施例では、システム内の各ＭＭ１４は１つのプロフィール１０６を用い、その特定のＭＭ１４に含まれる最低のＳＩＭＭモジュールにマッチするプロフィールを選択する。別の実施例では、１つのＭＭ１４内で複数のプロフィール１０６を用いてＭＳＥ３６内に異なるＳＩＭＭを備えることが可能である。この後者の場合では、ＤＲＡＭコントローラ７２は、ＤＲＡＭコントローラ７２に関連するレジスタの組において可能なタイミング値の２つ又はそれより多くの細を記憶し、アクセスされるアドレス位置に依存するすなわち現にアクセスされているＳＩＭＭモジュールのタイプに依存するタイミング値の組を選択する。
【００８４】
本発明の更に別の実施例では、プロフィール１０６に含まれるタイミング特性値は、更に、データ・バス２６又はＸＡ−ＭＰバス１２のデータ送信速度を反映するタイミング特性値を含み、これらの値は、ＤＲＡＭコントローラ７２に提供されるタイミング制御値を計算する際に用いられる。更に別の構成では、１つのシステムの中のデータ・バス２６が異なる送信速度を有することがあり、プロフィール１０６は、それらの異なる転送速度に対してタイミング特性値を含む。この場合には、やはり、ＤＲＡＭコントローラ７２にはタイミング制御値の複数の組が与えられこれらを用い、任意のメモリ・サイクルの間に用いられる値は、どのデータ・バス２６に情報が書き込まれる又はどのデータ・バス２６から情報が読み取られるかに依存する。
【００８５】
最後に、上述のように、ＭＳＥ３６は、２つのパーティションとして当初構成され、よって、ＭＳＥｓ３６からの読み取り及びＭＳＥｓ３６への書き込みは、イネーブルされる場合には、すなわち、ＭＳＥｓ３６の別の部分へ又はその別の部分に一般にインターリーブされ、よって、ＭＳＥｓ３６への及びＭＳＥｓ３６からの全体的なデータ転送速度を増加させる。このシステムのこの実施例では、メモリ・サイクルのインターリーブすなわちメモリ・サイクルのＭＳＥｓ３６のパーティションへの交換は、プロフィール１０６において提供されたタイミング特性値によって制御され、一方がＭＳＥ３６のＳＩＭＭアレーの各パーティションにタイミング信号を与える２つの有効なＤＲＡＭコントローラ７２によって実行される。この場合には、コントローラのそれぞれによって発生されるタイミング信号の一方は、他方のコントローラに提供されるタイミング信号、即ちＴ0タイミング信号であり、この他方のコントローラのメモリ・タイミング・サイクルを開始する。
【００８６】
したがって、各コントローラは、他方のコントローラによって発生される、それ自身のタイミング・サイクルの結論と次のタイミング・サイクルの開始との間の間隔を決定し、よって、タイミング・サイクルのインターリーブを制御する。各コントローラによって発生されたタイミング・サイクルの開始イベントは、他方のコントローラに対する開始イベントを発生するコントローラのタイミング・サイクルの間の任意の時刻に生じるように計算され、タイミング・サイクルのオーバラップ又は非オーバラップの任意の程度又は周期を許容し、タイミング・サイクルのインターリーブはプロフィール情報によって決定される。
【００８７】
最後に、タイミング計算装置１０８とＤＲＡＭコントローラ７２とは、システム１０のこの構成においては、２状態マシンとして実現される。
ＭＭ１４の更なる特徴においては、ＤＲＡＭコントローラ７２によって制御されるパーティションのリフレッシュ・サイクルは、個別に制御され、パーティションのＤＲＡＭのリフレッシュ・サイクルは、スタガーされてリフレッシュにより消費されるピーク電力を減少させ、これは、一度にパーティションのすべてのＤＲＡＭを読み取ることを含む。リフレッシュ制御ビットは、ＤＲＡＭコントローラ７２内に読み取られ及びＤＲＡＭコントローラ７２に提供され、リフレッシュ・サイクルのタイミングを制御する。
【００８８】
５．順序付きおよび順序の無いバス転送
上述されたように、ＸＡ−ＭＰバス１２上の情報転送の最初のモードは順序付き動作によりそしてバス・ワードとメモリからの貯蔵物ライン・リードのために使用される。メモリ以外の機能ユニットは要求に応答するが、プロセッサ・ユニットがその貯蔵庫のなかの要求されたデータの修正されたコピーを保持する時に、ＭＣＩ命令を主張することによりメモリ中の読取り要求を取消しそして要求がメモリ以外の別の機能ユニットおよび順序の無い転送により遂行されるであろうことを要求者に知らせる。
【００８９】
上述されるように、順序付き転送は、要求がバスの上に置かれている順序付きのメモリにより応答し、そしてＸＡ−ＭＰバス１２の要求者利得コントローラおよびＡＤＤＲバス２８上に要求された情報のアドレスを、制御信号と共に置くことにより初期化される。各機能ユニット中の順序付けされた要求キューの動作を介し、他の機能と独立して、各機能ユニットは自己の順序付きメモリ要求を追跡する。各機能ユニット中の順序付き要求キューは、その機能ユニットであるか別の機能ユニットであるかにかかわらず、メモリ読取りのための自己の要求とメモリからの全ての順序付の転送を許容し、メモリからの順序付の転送が自己の要求のひとつに応答してＸＡ−ＭＰバス１２の上に現れる時を検出する。機能ユニットは、それからＸＡ−ＭＰバス１２からデータを受け取ることにより応答しても良い。応答者が要求された情報とバス制御信号を、順序付き要求が受信されそして情報の受信をさらに確認することを要求されない順序で、ＸＡ−ＭＰバス１２上に乗せることのみを要求される分割バス動作の応答部分において、順序付き転送は、情報要求者と情報提供者の間に実行される初期接続手順の通常の順序を省く。
【００９０】
この記述に含まれる資料を含む、今述べられた本発明の実施例の記述の他のセクションで述べたように順序付きバス動作の実行を簡単に検討して要約すると、機能ユニットのバス・インターフェース制御ユニットは、情報のアドレスをＡＤＤＲバス２８に、バス・ワード用の条件付き命令をＣＭＤ３０上の貯蔵物ラインまたは２重貯蔵ライン上に乗せそして命令ストローブ（ＣＳ）を王張することにより情報要求をＸＡ−ＭＰバス上に乗せるであろう。そのアドレス・スペースが要求のアドレスを含むＭＭ１４は、そのアドレス・スペース内にあるとして要求を識別しそしてＡＣＫを主張するＭＭ１４により指示されるように、要求を受取ることにより応答するであろう。
【００９１】
他の機能ユニットにより主張されるＭＣＩ命令により取消されないならば、メモリは要求をＭＣＦＩＦＯ６８キュー中に配置して受信された順序で実行される。ＭＣ  ＦＩＦＯ６８に記憶された要求情報は、要求された動作の型および要求された情報のアドレスを含んでいる。もし要求がＭＣＩ命令により取消されるならば、要求は取消されそしてＭＣ  ＦＩＦＯ６８に配置されないであろう。
【００９２】
要求が最終的にＭＣ  ＦＩＦＯ６８により実行されるならば、メモリは１以上のバス転送において要求された情報をデータ・バス２６の一つに乗せる。メモリはまた、データ・バス２６の情報に依存して提供されるＯＲＤ＃０またはＯＥＤ＃１信号、そしてデータ・ストローブ（ＤＳ）を主張することを含む、適切な制御信号を転送の開始時にバス上に主張する。
【００９３】
元の要求機能ユニットのバス・インターフェース制御要素は、ＸＡ−ＭＰバス１２に現れる全ての順序付け応答の発生を検出するように、ＣＭＤバス３０およびＯＲＤ制御ラインを監視することによりＸＡ−ＭＰバス上の順序付け応答を発生を検出するであろう。もし応答がＸＡ−ＭＰバス１２により早く乗せられている順序付け要求に対応しているならば、情報が送られるデータ・バス２６からの該情報を受取りそしてデータ・ストローブにより指示されたようにデータ・バス２６からの情報を読取ることにより、機能ユニットは応答するであろう。
【００９４】
システム１０のこの実施例においては、メモリだけがオペレーション・キューをＭＣ  ＦＩＦＯ６８に有し、このメモリだけが一度に１つよりも多い未処理リクエストを収納することができる。従って、このメモリ以外の機能ユニットは、それらの未処理リクエストを記憶するために、それらのバス・インターフェース制御エレメントにただ１つのレジスタまたはメモリが必要になる。しかし、別の実施例として、各機能ユニットのバス・インターフェース制御エレメントにリクエスト・キューを与えて複数の未処理リクエストを記憶させることができる。この構成においては、各機能ユニットのインオーダー・リクエスト・キューは各ＭＭ１４におけるインオーダー・リクエスト・キューと同じ態様で拡張することができる。
【００９５】
メモリ及び他の機能ユニットのバス制御インターフェースの構成及び動作について前述したので、次にメモリ及び各機能ユニットのインオーダー・キューについて述べることによって、メモリ及びインオーダー・キューによって動作し信号のやり取りをする機能ユニットの機能エレメントは、特にメモリ及び他の機能ユーットの説明を参照することによって、理解されるであろう。
【００９６】
次に図８を参照すると、機能ユニットにおけるインオーダー・キュー及びメモリにおけるインオーダー・キューの機能ブロック図が示される。ここで、各機能ユニットのバス制御インターフェース・エレメント及び各ＭＭ１４の各ＭＣ３８内にインオーダー・キューがあることに注目すべきである。
【００９７】
図示のごとく、機能ユニットにあるインオーダー・リクエスト・キューはファンクショナル・ユニット・インオーダー・キュー（ＦＵＩＱ）１１０として識別され、ＭＣ３８にあるインオーダー・リクエスト・キューはメモリ・インオーダー・キュー（ＭＩＱ）１１２として識別される。その各々は、リクエスト・キューとレスポンス・キューから構成され、それぞれファンクショナル・ユニット・リクエスト・キュー（ＦＵＲＥＱ）１１４、メモリ・リクエスト・キュー（ＭＲＥＱ）１１６、ファンクショナル・ユニット・レスポンス・キュー（ＦＵＲＳＱ）１１８、及びメモリ・レスポンス・キュー（ＭＲＳＱ）１２０と呼ばれる。ＦＵＲＥＱＩ１４は機能ユニットによって与えられるインオーダー・リクエストを追跡し、ＭＲＥＱＩ１６はＭＭ１４のためのＭＩＣ３８によって受入れられたインオーダー・リクエストを追跡し、ＦＵＲＳＱ１１８はいずれかのＭＭ１４からＸＡ−ＭＰバス１２に現れたインオーダー・レスポンスを追跡し、ＭＲＳＱ１２０はいずれかのＭＭ１４からＸＡ−ＭＰバス１２に現れたインオーダー・レスポンスを追跡する。
【００９８】
最初にＦＵＩＱ１１０を参照すると、機能ユニットのファンクショナル・ユニット・バス・コントロール・インターフェース（ＦＵＢＣＩ）１２２は、前述したようにＸＡ−ＭＰバス１２上にインオーダー・リクエストを配置し、その各インオーダー・リクエストの配置時に、リクエスト（ＲＥＱ）の指示をＦＵＲＥＱ１１４に挿入する。ＦＵＲＥＱ１１４は、例えば、単一ビット幅のラップ・アラウンド・シフト・レジスタで構成して、出力を入力に戻して接続することが可能であり、それによってリクエストは充填されるまでループを回転する。この構成においては、リクエスト指示ＲＥＱの挿入は、シフト・レジスタの入力に１ビット、例えば論理「１」を与えることによって行われる。ＦＵＢＣＩ１１２は、いずれかの機能ユニットによってＸＡ−ＭＰバス１２上に配置された各インオーダー・リクエストを検出し、ＸＡ−ＭＰバス１２上にインオーダー・リクエストが現れる毎にＦＵＲＥＱ１１４をクロックすることによって、ＦＵＲＥＱ１１４におけるＲＥＱ指示がシフト・レジスタに沿って移動され、ＲＥＱ指示の位置は、インオーダー・リクエストの相対順位を表すことになり、その相対順位によって他のすべての機能ユニットによって作成される他のすべてのインオーダー・リクエストに対するその機能ユニットを表す。
【００９９】
ＦＵＩＱ１１０は、ＦＵＲＳＱ１１８のオペレーションによってＸＡ−ＭＰバス１２上に現れるインオーダー・レスポンスを追跡し、ＦＵＲＳＱ１１８は、ＦＵＢＣＩ１２２がＸＡ−ＭＰバス１２上のＭＭ１４からのインオーダー・レスポンスを検出する毎に機能ユニットＦＵＢＣＩ１２２によってクロックされる。それに応答して、ＦＵＲＳＱ１１８はポインタ（ＯＲＤＰ）を発生し、そのポインタはインオーダー・レスポンスのシーケンスの中から最新のインオーダー・レスポンスの出現を識別する。ＦＵＲＳＱ１１８及びＭＩＱ１１２内の類似のＭＲＳＱ１２０は、図８においては、最新レスポンスを表す１ビットを移動させる回転シフト・レジスタとして示されるが、その代わりにカウンタを使用することも可能であり、そのカウンタの数出力は、常にレスポンス・シーケンスにおける最新レスポンスを示すことになる。
【０１００】
ＦＵＲＥＱ１１４における各ＲＥＱ指示の位置は、ＣＯＭＰＡＲＥ１２２によってＦＵＲＳＱ１１８からのＯＲＤＰと比較され、ＲＥＱ指示の位置がＯＲＤＰによって示される最新レスポンスと一致することが検出されると、オウン・レスポンス（ＯＰＷＮＲＥＳ）出力がＦＵＢＣＩ１２２に発生され、その出力は最新インオーダー・レスポンスが機能ユニットによってそれより前に与えられたインオーダー・リクエストに一致することを示す。
【０１０１】
従って、要約すれば、ＦＵＲＳＱ１１８は、ＸＡ−ＭＰバス１２上の適切な順の応答の逐次的な発生を追跡し表示する。一方ＦＵＲＥＱ１１４は、ＸＡ−ＭＰバス１２上に送出された適切な順の逐次的要求の中の機能ユニット自体の適切な順の要求の位置を追跡し表示する。そしてＦＵＲＳＱ１１８とＦＵＲＥＱ１１４の同時発生は、機能ユニットによる適切な順の要求の送出に対応する適切な順の応答を表示する。
【０１０２】
ＭＩＱ１１２を参照すると、各ＭＭ１４は他のＭＭ１４と独立に適切な順の動作を実行するので、各ＭＭ１４は、ＸＡ−ＭＰバス１２上に有る全てのＭＭ１４のより実行される適切な順の動作に関連するそれ自身の適切な順の動作を追跡し表示することを要求され、同時に各ＭＭ１４は、それ自身のアドレス空間に向けられた適切な順の要求を認識して受け入れ、かつその要求に応答する。
【０１０３】
ＭＩＱ１１２はＦＵＩＱ１１０とほとんど同じ仕方で動作し、ＭＲＳＱ１２０はＦＵＲＳＱ１１８と同じ仕方でＸＡ−ＭＰバス１２上に現れた全ての適切な順の応答を追跡する。しかしながら、ＭＲＥＱ１１６は、他の全ての適切な順の要求に関連するＭＭ１４により受け入れられた適切な順の要求を追跡し、要求が受け入れられたことの表示（ＭＹＲＥＱ）をＭＲＥＱ１１６が要求を受け入れる度に、ＭＲＥＱ１１６へ置く。ＭＣ３８は、ＸＡ−ＭＰバス１２上に現れた各適切な順の要求を検出し、適切な順の要求が任意のＭＭ１４によって受け入れられる度に、すなわちＭＣＩによって取り消されない適切な順の要求の発生の度に、ＭＲＥＱ１１６をクロックする。説明したように、ＭＲＥＱ１１６は従って、ＭＭ１４によって受け入れられた種々のＭＹＲＥＱ表示を含み得、従ってＭＲＥＱ１１６は、ＸＡ−ＭＰバス１２上に現れた各適切な順の要求の一連の発生を表し、ＭＭ１４によって受け入れられた各要求がＭＹＲＥＱによって表され、かつ他のＭＭ１４によって受け入れられた各要求が論理「０」のような他の表示によって表される、一連の要求表示を含み得る。
【０１０４】
ＭＲＳＱ１２０のＯＲＤＰ出力とＭＲＥＱ１１６からのＭＹＲＥＱの同時発生が有ると、これは、それがシステム１０のＭＭ１４によって受け入れられた次の適切な順の要求であることを表すので、ＦＵＩＱ１１０と同じ仕方で、ＣＯＭＰＡＲＥ１２４は自己要求（ＯＷＮＲＥＱ）出力を与え、それによってＭＭ１４がそのＭＣ  ＦＩＦＯ６８内に記憶していた対応する適切な順の要求を実行するべきことを表示する。そのＭＭ１４のＭＣ３８は、その要求を実行することによってそのＯＷＮＲＥＱに応答する。
【０１０５】
適切な順の動作や乱れた順の動作の実行のこれ以上の説明は、システム１０のこの説明の一部である参考資料を含む、他のセクションに有る。
６．アドレス空間のマッピング
前述のように、システム１０は、全てのデータ、プログラム及びバス動作に関連するシステムの情報記憶機能が単一のアドレス空間を使用するようにして、そのような単一のアドレス空間で全ての動作を実行することによって統合環境を提供する。そのような情報記憶機能は、例えばＭＭ１４内のメモリー空間、プロセッサーユニット４２のレジスター及び、ビデオコントローラやＩ／Ｏデバイスの表示メモリーやオペレーティングシステム及びパーソナルコンピュータで通常用いられるＲＯＭ  ＢＩＯＳのようなＢＩＯＳの記憶に必要な空間のような、他の情報記憶機能を含み得る。
【０１０６】
しかしながら、バスに関連する情報記憶の管理はシステムの機能ユニットに分散されており、そのため、例えばＭＭ１４は、ＭＳＥ３６によってデータやプログラムを記憶するのに用いられるアドレス空間内のアドレス位置を管理することができる。同様の仕方で、ＰＭ１６は機能上ＰＭ１６のバス関連レジスターによって占有されているアドレス空間位置を管理することができ、一方ＢＭ１８はビデオディスプレイコントローラによって用いられるアドレス空間位置や読み出し専用メモリー及びＲＯＭ  ＢＩＯＳのようなプログラムやデータを記憶するための他のメモリーのアドレス空間位置を管理することができる。
【０１０７】
単一のシステムアドレス空間の管理は、ＰＭ１６レジスター、ＭＭ１４内の物理的記憶位置、ＲＯＭ  ＢＩＯＳ用のＲＯＭ内に与えられた記憶やビデオディスプレイコントローラ用のビデオメモリーのような種々の記憶手段をアドレス空間内にマッピングによって本来実行される。従ってシステム１０においては、各機能ユニットはそのバス動作関連記憶空間を単一のシステムアドレス空間にマッピングすることができる。このマッピングの一例は、以前にＰＭ１６レジスターをシステムアドレス空間にマッピングすることに関連して論及した。
【０１０８】
このプロセスは、図９に機能的かつ図解的に示されており、該図９はそれぞれの機能ユニットで実行される基本的なマッピング機能を示している。ここで説明する機能が、メモリ・レジデント・テーブルまたはプログラムされたゲート・アレイを介する等の、多数の手法で実行することができるが、実行される基本的な機能が、それぞれの実行に対してほぼ同一であることは、明らかであろう。
【０１０９】
図９は、機能ユニットにおいてマッピングを実行し、かつ、ＸＡ−ＭＰバス（ＸＡＭＰ  ＡＤＤＲ）１２を介してシステム・メモリに供給されるシステム・メモリ・スペース・アドレスと、それぞれの機能ユニット中の、図９において機能ユニット・メモリ・スペース（ＦＵＭＳ）１２８として表している、１つまたは複数の記憶スペースとの関連づけを実行するためのアドレス・スペース・マップ（ＡＳＭＰ）１２６の使用態様を示している。
【０１１０】
図示されているように、それぞれのＦＵＭＳ１２８は、メモリ・スペース・サブスペース（ＭＳＳＳ）１３０として構築すなわち仕切って構成することができ、ＭＳＳＳ１３０は、ＭＭ１４のＭＳＥ３６のように、単一のメモリ・スペース内の隣接領域を表している。また各ＦＵＭ１２８は、ＲＯＭ  ＢＩＯＳに対する個別のＲＯＭ及びビデオ・ディスプレイ・コントローラに対するビデオ・メモリ等の、メモリ内の個別の位置及び機能ユニットにアクセス可能な記憶スペース内に仕切って構成することもできる。
【０１１１】
ＡＤＭＰ１２６は、機能ユニット・メモリ・スペースのそれぞれのＭＳＳＳ１３０に対するマップ・エントリ（ＭＰＥ）１３２を含んでおり、それぞれのＭＰＥ１３２は、ＸＡＭＰ  ＡＤＤＲアドレスによって表されるように、システム・アドレス・スペースのアドレスまたはアドレス・レンジに対応している。
【０１１２】
それぞれのＭＰＥ１３２に含まれる情報は、ある特別の機能ユニットに依存しており、該特別の機能ユニットに対してアドレス・スペース・マッピングが実行され、該情報は、ＸＡＭＰ  ＡＤＤＲアドレスまたはアドレス・レンジに対応しているメモリ・スペース（ＭＳＳＳＯ１３０）を該機能ユニットが含んでいることを表す、ビット１３４として表される少なくとも１つのビットを含んでいる。ビット１３４は、例えば、ＭＭ１４において用いられ、ＭＭ１４が、メモリ読み出し要求の一部分としての、ＸＡ−ＭＰバス１２を介して供給されるアドレスによって示される情報を含んでいるメモリ・スペースを含んでいることを検出するために用いられる。
【０１１３】
この例についてさらに説明すると、それぞれのＭＰＥ１３２は複数のビットすなわちフィールドをさらに含んでおり、該フィールドは、行、列、及び対応するメモリ位置を含んでいるＳＩＭＭモジュールのグループを識別する情報を含んでいる。したがって、アドレス位置が所定のＭＭ１４内にあるかどうかを高速で識別するとともに、行、列、及びアドレス指定情報を含むＳＩＭＭモジュールのグループ番号を同時に供給することによって、ＳＩＭＭモジュールにおける物理的位置にＸＡ−ＭＰバス１２上のメモリ要求中のアドレスを、ＭＰＥ１３２からの情報が同一速度で変換することができる。そしてこの情報は、ＤＲＡＭコントローラ７２に供給され、それにより、ＳＩＭＭモジュール内のアドレス指定された位置からの読みだし動作を、遅延なく実行することができる。
【０１１４】
システム１０の機能６ユニットにおいて提供されたアドレス・スペース・マッピング動作の別の例においては、システム・アドレス・スペースに関連してＭＳＳＳ１３０のアドレス配置をオフセットすることが望ましい。このような場合の一例として、システムすなわちプロセッサのレジスタ等のような特殊の対象物に対するある下位アドレスを反転する必要があるが、ＭＭ１４がＳＩＭＭのメモリ位置で構成された隣接するアドレス・スペースを含む場合が考えられる。この例においては、ＭＭ１４の外部の機能ユニットが、反転されるべきアドレス位置を識別するためのレジスタを含み、ＭＭ１４のＭＰＥ１３２をオフセットの順位でＡＤＭＰ１２６に入れ込むことができ、それにより、ＭＭ１４において実行されるメモリ位置マッピングに、システム・アドレス・スペースにおける自動オフセットを提供することができる。同様に、ＳＩＭＭからのコード化サイズ情報がシステムにおいて用いられて、それぞれのＭＭ１４に関するＡＤＭＰ１２６のオフセットを発生することができ、それにより、メモリ位置マッピングに対するそれぞれのＭＭ１４のアドレス・スペースが、個別のＭＭ１４のメモリ位置をマッピングして隣接するアドレス・スペースを形成するように、オフセットされる。
【０１１５】
必要に応じ、機能ユニットのアドレス・マッピング要求に応じて、ＭＰＥ１３４に含まれる情報を機能ユニットの間で異ならせることができ、このような例は、ＭＭ１４のメモリ位置のマッピングと比較すると、プロセッサ・ユニット４２のマッピングである。他の機能ユニットにおいて、情報は例えば、対応するメモリすなわち記憶位置が書き込み不能すなわち読み出し専用であるかどうかに、依存するようにすることができる。
【０１１６】
最後に、システム１０の現在の実施態様においては、機能ユニットに対するアドレス・マッピングは、システムの初期化時に実行されるか、またはその直前に実行され、記憶され、そしてシステムの初期化時に機能ユニットのＡＤＭＰ１２６にロードされる。
【０１１７】
７．バス・アクセス・アービトレーション
先に述べたように、システムの機能ユニット間に分布されるシステム機能の間には、システムの機能ユニットによるＸＡ−ＭＰバス１２への争い（ｃｏｎｔｅｎｔｉｏｎ）及び仲裁がある。
【０１１８】
システム１０の機能ユニットは「スライス」とも称されるが、該機能ユニットのそれぞれは、仲裁ライン（ＡＲＢ）３２に接続された仲裁ロジックを含み、相対的優先基準に基づいてＸＡ−ＭＰバス１２へのアクセスに対して争う。それぞれの優先度はＸＡ−ＭＰバス１２に沿った「スライス」の位置によって決定される。
【０１１９】
図１０には、システム１０の仲裁機構が図解的、機能的に表示されている。既に述べたように、仲裁は、複数の仲裁ライン（ＡＲＢ）３２を介して実行され、ＴＹＵＵＳＡＩラインはＡＲＢ３２−０〜ＡＲＢ３２−９で示されている。システム１０のそれぞれのスライスすなわち機能ユニットは、図１０においてはＳＬＩＣＥ１３４−０〜ＳＬＩＣＥ１３４−９として表され、したがって、システム１０がスライスすなわち機能ユニットを有するものとして示されている。図１０の上部には、ＳＬＩＣＥ１３４からＡＲＢ３２への接続が図示されており、図１０の下部には、１つのＳＬＩＣＥ１３４における仲裁ロジックの機能ブロック図が示されている。
【０１２０】
図示されているように、ＳＬＩＣＥ１３４それぞれに対する仲裁ロジックは、それぞれのＡＲＢライン３２に接続された入力を有する仲裁信号ラッチ（ＡＲＢＬ）１３８と、同様にＡＲＢライン３２のそれぞれに接続された入力を有する仲裁マスク・レジスタ（ＡＲＢＭ）１３８と、仲裁コントロール（ＡＲＢＣ）１４０とを含んでいる。ＡＲＢＣ１４０は、ＳＬＩＣＥ１３４に対応しているＡＲＢライン３２に接続され、自身のＡＲＢライン３２上にＳＬＩＣＥのＡＲＢ信号をアサートする。
【０１２１】
図１０に図示されているように、スライス１３４それぞれからＡＲＢライン３２への接続は、ＡＲＢＭ１３８への入力接続に関しては、他のＳＬＩＣＥ１３４に関してシフトされている。すなわち、それぞれのＳＬＩＣＥ１３４のＡＲＢＭ１３８は、ＡＲＢ３２−０、ＡＲＢ３２−１・・・に接続された入力を有している。これらのシフトされた接続は、ＡＲＢライン３２とＳＬＩＣＥ１３４との接続交差部に示した丸印によって、図１０にシンボル化されて示されている。これらの丸印は、ＡＲＢライン３２とＡＲＢＭ１３８への第１のビット入力との間の接続を示しており、順次増大する番号がつけられた接続の方向は、丸印の側の矢印によって示されている。ＡＲＢライン３２への接続は、「ラッピング・アラウンド」によって、それぞれのＳＬＩＣＥ１３４の入力に番号順に交差し、それにより、ＡＲＢライン３２のそれぞれが、それぞれのＳＬＩＣＥ１３４のＡＲＢＭ１３８入力に接続される。それぞれのＡＲＢライン３２はまた、ＡＲＢＬ１３６の入力に接続されているが、これは非シフト接続である。
【０１２２】
システム１０の現在の実現態様においては、低い優先度のスライスを含んでいるＰＭ１６で、最も高い優先度のスライスにＢＲＩＤＧＥ５６が割り当てられる。この割り当ては固定的なものではないが、任意の機能ユニットを任意のスライス位置に割り当てることができる。スライス位置とスライスの相対的優先度とがシステムの初期化の時点で決定され、システム・マスタ機能ユニット、これは通常ＢＲＩＤＧＥ５６であるが、該ユニットがＡＲＢＣ１４０からのＡＲＢ信号出力に論理レベルをアサートする。ＡＲＢライン３２とＡＲＢＭ１３８の入力とがシフト接続されているため、マスタ・ユニットからの論理レベルは、ラッチのＡＲＢＣＭ１３８を横切る一連の入力に現れ、また、任意のスライスのＡＲＢＭ１３８入力に論理レベルが現れる入力が、スライス番号としたがってスライスの相対的優先度とを決定する。ＡＲＢライン３２の入力はラッチされて、それぞれのスライスのＡＲＢＭ１３８に記憶され、以下に説明するように、ＸＡ−ＭＰバス１２へのアクセスの時点を決定するときに「マスク」としてそれぞれのスライスによって後に用いられる。
【０１２３】
ＡＲＢライン３２にただ１つのスライスがアサートされた場合には、そのスライスはＸＡ−ＭＰバス１２のコントロールを受け、かつ仲裁は要求されない。しかしながら、複数のスライスが同一のバス・クロック・サイクルの間にＡＲＢ信号をアサートした場合には、これらのスライスは、バスに最初にアクセスするスライスがどれであるかを決定するために、仲裁される。これに関連し、仲裁機構は、クロック・サイクル毎にＡＲＢ信号をＳＲＢＬ１３６にラッチして、ＡＲＢＣ１４０において仲裁動作を実行する。
【０１２４】
もし多数のスライスが同じクロックサイクルの間にそれらのＡＲＢ信号をアサートしたとき、それらのスライスは、１つの“グループ”を形成し、このグループは、それらの間でＸＡ−ＭＰバス１２の制御を保持するが、この保持は、それらのＡＲＢ信号のアサートを各々がそのバスへのアクセスを得るまで続け、そして各々が、そのバス動作を実行し終えた後にそのバスへのアクセスを放棄しそれらのＡＲＢ信号を解放する、ということにより行う。１グループを形成するスライス間でのバスアクセスの選択及びシーケンスは、システム初期化時に各スライスのＡＲＢＭ１３８に記憶された“マスク”を介して行う。１グループ内の各スライスは、各クロックサイクル時に、そのマスクを、そのＡＲＢＬ１３６内にラッチされた現在のＡＲＢ信号（これらは、各クロックサイクル時に再びラッチされる）と比較する。この動作は、通常、そのスライスのマスクを現在ラッチされているＡＲＢ信号と論理的にＡＮＤ演算することにより行う。もしあるスライスのＡＲＢＣ１４０が、そのスライスのＡＲＢＬ１３６内に現在ラッチされているＡＲＢ信号をもつより高い優先順位のスライスがあること、を発見した場合、そのスライスは、優先権並びにバスの制御を、その高優先順位のスライスに譲る。
【０１２５】
上記グループ内の各スライスは、次に、各連続するクロックサイクル時にそれらの間で、バス制御の獲得について、各高優先順位のスライスがそのバス動作を完了したときのそれらの相対的優先順位に従って仲裁を行う。各スライスは、そのバス動作を終えると、バスの制御を放棄し、そしてそのＡＲＢ信号のアサートを止める。
【０１２６】
各スライスのＡＲＢＣ１４０のロジック回路に施された優先順位仲裁ルールによれば、あるグループのメンバーであるスライスであって、しかもそのバス動作を終えてバスの制御を放棄したかあるいはそのＡＲＢ信号のアサートを止めることによりそのグループから脱するかしたスライスは、バスに対する制御をアサートしようと試みることは、そのグループのどのメンバーもその各々のバス動作を完了するかあるいはそのグループのメンバーとしてＡＲＢ信号のアサートを止めることによりそのグループから脱するかするまでは、行いそうにない。
【０１２７】
更に各ＡＲＢＣ１４０のロジック回路に施された優先順位仲裁ルールによれば、あるグループにないどのスライスも、そのＡＲＢ信号をアサートしたりあるいはそのグループへの加入を試みることは、そのグループのどのメンバーもそのバス動作を完了するかあるいはそのグループから脱するかするまでは、行うことができない。このルールの例外は、ある高い優先順位のスライスが、あるグループに押し入ることがあるが、ただし２つの隣接したグループに押し入ることは、もしそれがその最初のグループからＮＡＫ処理により外に出された場合には、行うことができない、ということである。
【０１２８】
システム１０の仲裁機構は、バスアクセス仲裁のオーバーラップを許容するが、バスアクセスのオーバーラップを許容することはしないが、これは、ＡＲＢＣ１４０内にある手段を設けて、これにより、スライスは、ＡＲＢ信号から、たった１つのスライスだけがあるグループに留まっているか、あるいは、単一のスライスのみがその時バスへのアクセスを要求している（即ち、実効上、たった１つのメンバーのグループ）、ということを判定できるようにする。各バス関連ラインの各端部におけるバスラインラッチ（ＡＲＢ３２ラインを含む）を介するタイミングと、連続したバスクロックサイクルでのＡＲＢ信号ラッチ及びアクセス仲裁の交互実行とにより、潜在的な要求者が、バスの現行の所有者のＡＲＢ３２ラインが次のバスサイクルにおいて解放されるということを確かめ、そしてそのバスサイクルの間にそのＡＲＢ信号をアサートすることができるようになり、これにより、そのＡＲＢ信号がその次バスサイクル時に各スライスのＡＲＢＬ１３６にラッチされるようにする、ことができる。待機中の各要求者は、これにより、バスの単一のプロセッサの前のグループの最後のメンバーがそのバス動作を完了しつつある間に、バスに対する次の仲裁を開始することができる。
【０１２９】
最後に、前に述べたように、情報の読取に対するある種の要求は、イン・オーダー（順序正しい）動作ではなくアウト・オブ・オーダー（順序外れ）動作をもたらすことがあり、そのアウト・オブ・オーダー動作においては、その要求は、別の機能性ユニットのＭＣＩ信号のアサートにより、メモリ内でキャンセルされ、また、そのメモリ動作をキャンセルしたその機能性ユニットはその後に、その要求を、アウト・オブ・オーダー動作を実行することにより満たすことになる。上記したように、要求に対するアウト・オブ・オーダー応答においては、応答側ユニットは、バスへのアクセスについての仲裁を行い、そしてバスの制御を得たときに、ＡＤＤＲ  Ｂｕｓ２８、ＣＭＤ  Ｂｕｓ３０及びＤＡＴＡ  Ｂｕｓ２６の動作を実効上互いに結合するが、これは、そのバスに、その要求された情報を、これがアウト・オブ・オーダー応答であることを示すコマンドと、その要求を出した機能性ユニットのアドレスとを共に置くことにより行う。
【０１３０】
また上記したように、要求側の機能性ユニットは、単一又は多数のバスワードに対するあるいは単一又は多数のキャッシュラインに対する要求を行うとき、それ自身のアドレスあるいはその他の識別を送ることにより自分自身の正体を示すということを行わないが、それは、先に述べたように、その要求はイン・オーダー動作として満たされることが期待されているからである。アウト・オブ・オーダー応答者にとっては、そのアウト・オブ・オーダー応答を行うときには要求者を識別する必要があり、これは、仲裁機構を通して行う。即ち、要求者がそれ自身の識別を送っていない間、要求者のスライス番号は、本システムの各他の機能性ユニットにより利用可能となっており、従ってＭＣＩをアサートしてメモリ動作のキャンセルするアウト・オブ・オーダー応答者は、その要求者のスライス番号（図１０において、そのＡＲＢＣ１４０からのＳｌｉｃｅ  Ｎｕｍｂｅｒ（ＳＬＩＣＥＮ）として識別）を読み取り記憶し、そしてその後、アウト・オブ・オーダー応答を実行するときにそのスライス番号を要求者アドレスとして使う。
【０１３１】
仲裁機構の構造、機能及び動作の更なる詳細については、システム１０の機構ユニットに関するアペンディックス、即ちアペンディックス５、１０及び１１（それぞれ、“仲裁ロジック−Ａ，−Ｂ，及び−Ｃ”と題する）にみることができる。
【０１３２】
８．ブリッジ・インターフェース・コントローラ５６
図１１はブリッジ・インターフェース・コントローラ５６の機能的概観のブロック図を示し、このブリッジ・インターフェース・コントローラはＸＡ−ＭＰバス２１２とＡＳバス２０とを相互接続する。ＡＳバス２０は、（好適な実施例において、）従来のインテルｉ４８６プロセッサとそれに関連するＲＡＭメモリとを、標準のパーソナル・コンピュータ・システムの他のコンポーネントに相互接続するものと同じインテルｉ４８６バスである。
【０１３３】
ブリッジ・インターフェース・コントローラ５６は、サーバ（server）・ワークステーションのマザー・ボードに設置され得、そこにおいては、ＡＳバス２０は、従来のＥＩＳＡ又はＭＣＩＰＣコンパチブルＩ／Ｏバス及び従来のＩＢＭＰＣコンパチブルのファイル・サーバに用いられるタイプのコントローラ・システム及びそれと同様のものに接続し得る。おそらく、マザー・ボードには、ローカル・エリア・ネットワーク・アダプタ・カードのような、アクセサリー・カードのためのＥＩＳＡ又はＭＣＩスロットが装備されているであろう。また、それは、１つ以上のハード・ディスク・ドライブ・システム又は他のタイプの標準ディスク・ドライブ・コントローラ・システムに導くＳＣＳＩバスを駆動し得るであろう。例えば、典型的なＰＣ１４２のブロック図を示す図２１を参照されたい。
【０１３４】
それは、また、ＡＳバスと関連して、典型的に、例えば割り込みコントローラのような、標準ＰＣ支援用ハードウエアと、幾つかの直接メモリ・アクセス・デバイスと、アクセサリー・デバイスがＡＳ２０へのアクセスを得ること及びＡＳ２０の制御を得ることを可能とするバス・マスクリング・ハードウエアと、が存在することを意図している。最も典型的には、ディスクの読み取り及び書き込みのような、そのようなタスクを行う直接メモリ・アクセス・デバイスが、中央処理装置から受信したデータ出力コマンドに応答し、メイン・システムＲＡＭへの及びそこからのＥＩＳＡ又はＭＣＡバス・コントローラ及びブリッジ・インターフェース・コントローラ５６を経ての、ディスク・ドライブへの及びそこからの直接メモリ・アクセス（ＤＭＡ）読み取り及び書き込みを始める。
【０１３５】
図１１に関して、機能的に、ブリッジ・インターフェース・コントローラはＡＳバス２０へのＸＡ−ＭＰバス・ウインドウを示し、このＡＳバス２０を通じて、ＤＭＡコントローラ及びＥＩＳＡ又はＭＣＩバスに接続された他のバス・マスタ（master）が、コマンドが従来のｉ４８６マイクロプロセッサと関連するＲＡＭメモリに送られたかのようなそれと全く同じ様式で、データ記憶及び検索コマンドをアドレスすることができる。これらのコマンドは、シーケンサ１４６を経て、ウインドウ１４４を経て、ＸＡ−ＭＰバス・インターフェース１４８を経てＸＡ−ＭＰバス１２に渡される。しかしながら、これらコマンドのうちの多くのものは、ＸＡ−ＭＰバス２１にアクセスする必要なく、ブリッジ・インターフェース・コントローラ５６内のキャッシュ（後に説明する）を参照することによって満足させられ得る。
【０１３６】
このブリッジ・インターフェース・コントローラはまた、ＸＡ−ＭＰバス１２へのｉ４８６バス・ウインドウ１５０を示しており、このＸＡ−ＭＰバス１２を通じて、ＸＡ−ＮＰバス１２に接続された複数のプロセッサが、ＥＩＳＡ又はＭＣＡバスに接続されたいずれのもの、例えば、シリアル及びパラレル通信ポート、ＶＧＡ又は他のディスプレイ装置、ＲＯＭベースのプログラム・コードなど、へも直接にアクセスすることができる。このようなアクセスは、キャッシュされることはなく、ＸＡ−ＭＰバス２１からインターフェース１４８を経てｉ４８６バス・ウインドウ１５０へ、そしてシーケンサ１４６からＡＳバス２０へ、そしてその先の多種のアクセサリーに、直接に渡される。
【０１３７】
ハードウエア的な観点から、ブリッジ・インターフェース・コントローラは、３個のＬＳＩチップとＡＢＩＣチップ１５２（図１２）と、１個又は２個のＤＢＩＣチップ１５４（図１３）とで構成される。これらは、図１７に示されるようにバス２０及び２１に接続されている。ＤＢＩＣチップ１５４のそれぞれはＸＡ−ＭＰバス２１内の２つのデータ・バスの個々のものに接続し、両方のものがＡＳバス２０に接続する。両方がキャッシュ・メモリを含み、そして、関連するアドレス・タグはＡＢＩＣ１５２内に含まれる。バスアドレスライン及び制御ラインはＡＢＩＣ１５２に第一に接続し、これはブリッジ・コントロール・ロジックの殆どを含む。ブリッジ・インターフェース・コントローラの状態を定義する状態レジスタ１５６はまた、ＡＢＩＣ１５２内に含まれる。これらのレジスタはアクセス可能なようにプログラムされねばならないので、シリアルＩ／Ｏインターフェース１５８、１６０及び１６２が与えられ、それによって、レジスタの値が、ＡＳバス２０のデータ・ライン“０”を経てＤＢＩＣ１５４とＡＢＩＣ１５２との間でシリアルにシフトされ得、それによって、レジスタ１５６がＸＡ−ＭＰバス２１のデータ・バス部分からロードされかつそこヘアンロード（unload）され得る。図１３及び１４は、各タイプのチップにどのエレメントが在るかを示す。残りの図面ではこの２つのタイプのチップを区別しておらず、ブリッジ・インターフェース・コントローラは単一のデバイスであると考えている。図１３及び１４で見られる信号の説明はアペンディクスで見付けられる。
【０１３８】
図１４は、ＥＩＳＡ、ＩＳＡ、又はＭＣＡ又はＳＣＳＩバス・システムにおけるＡＳバス２０の先に在るバス・マスタ又は直接メモリ・アクセス・デバイスから開始されるデータ書き込み要求の処理に関連するブリッジ・インターフェース・コントローラ５６のそれらエレメントを機能的な様式で示す。
【０１３９】
ＡＳバス書き込み要求がＸＡ−ＭＰバス・ウインドウ１４４によって受信されると、ブリッジ・インターフェース・コントローラは、まず、ｉ４８６バス・ウインドウ１５０を閉じ、一時的にＡＳバスへのＣＰＵアクセスを切る（ステップ１６２）。（図１６に示すｉ４８６コマンド待ち行列１６４に記憶された）いずれの係属中のＣＰＵコマンドも直ちに実行されてクリアされる（ステップ１６６）。次に、ブリッジ・インターフェース・コントローラ５６は、ＡＳバス２０を、ＤＭＡ又はバス・マスタ又は他のデバイスが使用するために、リリースする（ステップ１６８）。
【０１４０】
次に、それが書き込み要求である場合、キャッシュが、指定されたアドレスに対応するキャッシュ・ラインを含んでいるかどうかについてテストされる（ｉ４８６スヌープ（snoop）・ロジック１７２）。ウインドウ１４４に与えられるアドレスのタグ部分がキャッシュ１７０に与えられ、そして、比較信号が、データのラインがキャッシュ１７０内に存在するかどうかをスヌープ・ロジック１７２に知らせる。ラインが存在する場合、ＨＩＴ（ヒット）信号によって、キャッシュへの書き込みオペレーション（ステップ１７４）が行われる。もしそれがキャッシュにおける最後のバイトであるならば、そして、このキャッシュ・ラインが（図１８ - -図１４のステップ１８０- - に示す変更されたビット１７４によってマークされたような）変更されたバイトを含んでいると仮定すると、ステップ１８０で、キャッシュ・ラインがＲＡＭに自動的に書き戻され、後の入来するキャッシュ・ラインのデータを受信するのに使用するために自由にされる。ここでは、複数のバイト又はワードの転送が行われていると仮定している。キャッシュ・ラインが入来するデータで一杯になるとすぐにこのようにキャッシュ・ラインを自由にすることによって、データ入力プロセスが２つのキャッシュ・ラインに限定され、キャッシュ全体にオーバーライト（overwrite）せず、それによって、同時に進行しているであろう他の入力又は出力転送とインターフェーシングする。即ち、キャッシュは、入来するメモリ書き込み要求のためのバッファのように機能し、また、後に説明するが、他の時に及び中央処理装置に対してＩ／Ｏキャッシュとして動作する。
【０１４１】
最後に、ステップ１８２において、キャッシュ・ラインにおけるｎ番目のバイトが書き込まれたかどうかについてのオプションのテストが行われる（ｎは調整可能）。もしそうであるならば、および、私達がこのキャッシュ・ラインの終わりに近付いているならば、１８４で、コントローラ５６はＢＩＣＬコマンドを生成する。これは、複数のプロセッサと関連するすべての他のキャッシュによって感知される。これらのキャッシュのうちのいずれかが、変更された次のシーケンスのキャッシュ・ラインの変更されたコピーを含むならば、このＢＩＣＬコマンドは、それらが変更されたラインをＲＡＭに書き戻すようにさせ、それらのキャッシュ・エントリを“無効”とマーク付けするようにさせる。同様に、この、次のシーケンスの変更ラインの変更されていないコピーを含むキャッシング・ユニット・キャッシュは、それらのキャッシュ・エントリを“無効”とマーク付けする。即ち、このＢＩＣＬコマンド（“ブリッジ無効キャッシュ・ライン（Bridge Invalidate Cache Line）”コマンド）は、データ転送の必要なく、システムがブリッジ・キャッシュにデータ・バイトを受信するようにする。いずれかの中央処理装置がこの同じキャッシュ・ラインに、それが入来するデータでロードされているときに、アクセスを試みると、ＸＡ−ＭＰバスと関連するスヌープ・ロジック１８６（図１８）は、このキャッシュ・ラインは“変更された”とマークされていることを検出し、メモリ要求の試みを、ステップ１８８で、替えられたバイトが（ＷＢＷコマンドによって、メモリが替えられたバイトとキャッシュ・ラインの残りの部分（remainder）とをマージして）ＲＡＭメモリこ再記憶（restore）されるまでＮＡＫする。
【０１４２】
スヌープ・ロジック１７２がＭＩＳＳ（ミス）を生成することによって示されるように、キャッシュ・ラインがキャッシュ１７０に既に存在していなければ、１９０で、ＲＡＭのみが更新されたキャッシュ・ラインのコピーを有することを発行するためにＢＩＣＬコマンドが生成され、ステップ１７４で、入来するデータはキャッシュ１７０における空のキャッシュ・ラインに書き込まれ、その読み取り性（readability）ビット１９２（図１８）がマーク付けされるとそれが幾つかの規定されていないデータを含むことを示すようにセットされ、その変更された（modified）ビット１７６（図１８）のうちの適当なものによってどれが新しい入来データ・バイトであるか及びどれが無効バイトであるかを示すようにセットされる。しかし、もし幾つかの他のキャッシュがこの特定のキャッシュ・ラインの変更されたコピーを含んでいるならば、その特定のキャッシュと関連するスヌープ・ロジック１８６は、キャッシュ・ユニットに、変更された値をＲＡＭに戻すための時間を与えるようにＮＡＫ信号（１９４で検出される）を生成する。周辺デバイスはＢＩＣＬが受け入れられるまで停止（stall）され、変更された値がＲＡＭに戻される。殆どの場合、ステップ１８２及び１８４は、ＢＩＣＬコマンドが早い時間に出て行くようにするので、このＮＡＫ及び後続の遅延は起こらない。
【０１４３】
図１５は、ＥＩＳＡ、ＩＳＡ、又はＭＣＡ又はＳＣＳＩバス・システムにおけるＡＳバス２０の先に在るバス・マスタ又は直接メモリ・アクセス・デバイスから開始されるデータ読み取り要求の処理に関連するブリッジ・インターフェース・コントローラ５６のそれらエレメンを機能的様式で示す。
【０１４４】
次に、読み取りの場合、キャッシュ１７０は、指定されたアドレスに対応するキャッシュ・ラインを含むかどうかについてテストされる（ｉ４８６スヌープ・ロジック１７２）。ウインドウ１４４に与えられるアドレスのタグ部分がキャッシュ１７０に与えられ、そして比較信号がスヌープ・ロジック１７２に、データのラインがキャッシュ１７０内に存在するかどうかについて知らせる。
【０１４５】
キャッシュ・ラインが存在する場合にはＨＩＴが発生し、ステップ１９８が、要求されたデータをキャッシュから待っているデバイスに転送する。ステップ２００で、ｎ番目のバイト（ｎは調節可能）がちょうど読まれたところであれば、オプションで、２０２において、ＲＣＬコマンドが発行され、次の連続するデータのキャッシュ・ラインが、ＲＡＭから（又は、それが変更された形で存在している或るキャッシュから）受信されるようにする。キャッシュ・ライン・データが存在しない場合にはＭＩＳＳが発生し、ステップ２０４は、ＲＡＭメモリから（又は、それが変更されている或る他のキャッシュから）キャッシュ・ラインを検索するＲＣＬコマンドを開始する。時間を節約するために、新しいキャッシュ・ラインがキャッシュにロードされるのと同時に、それはまたキャッシュをバイパスし、パラレルの経路を経て要求しているデバイスに直接進む（ステップ２０５）。
【０１４６】
複数のＣＰＵによって開始されかつブリッジ・インターフェース・コントローラの先にあるデバイスで指示されるデータの読み取り及び書き込みは、図１６に示されるｉ４８６バス・ウインドウに送られる。これらの要求には２つのタイプがあり得る。書き込みの場合にはアクノレッジメント（acknowledgment）を必要とする実際のＣＰＵのＩ／Ｏ要求と、ある様式でＡＳバス２０のアドレス・スペースにマップされるべきＣＰＵメモリ読み取り要求及び書き込み要求とである。好適な実施例は、図１６の２０６で、多種のこのようなＡＳバス２０アドレス・スペース・マッピングを含み、以下のものを含む。
【０１４７】
ＲＡＭメモリの低い幾つかのメガバイトの、ＡＳバス・アドレス・スペースのメモリ・アドレス側へのＩＳＡコンパチブル・マッピングがあり、４Ｋ、１６Ｋ、６４Ｋ、及びＩＭｅｇサイズのこのようなメモリのブロックは、読み取りのみ（ＡＳバス読み取り、ＲＡＭへ書き込み）、書き込みのみ（ＡＳバスへ書き込み、ＲＡＭから読み取り）、読み取り／書き込み（ＡＳバス読み取り及び書き込み）、及びＲＡＭのみ（ＡＳ動作なし）、とマーク付けされ得る。これによって、ＲＯＭがＲＡＭにおいて陰にされる（shadowed）ようにし、ＶＧＡ及びＥＧＡビデオ・グラフィックス・コントローラに対して要求されるように、一般にＡＳバス・スペースにおける或るＲＡＭがＲＡＭの中に現れるようにし、陰にするために用いられるＲＡＭが読み取りのみに効果的にされるように、する。また、或るＲＡＭへのアクセスは、多種のＰＣＲＯＭＢＩＯＳプログラムによって必要とされるようにスイッチ・オン及びオフされ得る。これのすべてに必要なことはＩＢＭＰＣコンパチブルのコンピュータ・システムの設計の当業者には明らかであり、詳細な説明は必要ではない。４つの再配置可能なウインドウが提供され、それは、大変高いメモリ・アドレス（ベース・レジスタ“relowin base”における開始アドレスよりも上）を、ＡＳアドレス・スペースにおける２つの４ＭＢと２つの８ＭＢのウインドウにマップする。これは、オペレーティング・システムを妨害することなく、ビデオ・グラフィックス・コントローラを使用することを容易にする。このオペレーティング・システムは自身の目的のためにメモリの下部の１６ＭＢのすべてを必要とするものである。サイズが１６バイトから４ｇバイトまで可変の、他のウインドウは、ＸＡ−ＭＰメモリ・アドレス・サイクルを、ＡＳバスＩ／Ｏアドレス・スペース・サイクルにマップする。このウインドウは、レジスタ“begin‐con”及び“end con”によって定められる。
【０１４８】
これらのＡＳアドレス・マッピングそして読み取りのみ（read only）、書き込みのみ（write only）などの特性は、レジスタ１５６（図１７）内に記憶された値によって定められる。これは、ｉ４８６バス・ウインドウ１５０が、ブリッジ・インターフェース・コントローラ５６の先にあるデバイスにアドレス指定されたメモリ及びＩ／Ｏ読み取り及び書き込み要求を認識しかつ押さえるようにしかつこれらの要求を押さえるようにする、ＡＳバス・アドレス・マッピング２０６（図１６）の結果となる。
【０１４９】
ＡＳバス・アドレス・スペースへのＸＡ−ＭＰバス・アクセスは、（それらがＮＡＫされていないならば、コマンド待ち行列１６４は一杯であるか、又はｉ４８６バス・ウインドウが閉じられて、ＤＭＡ又はバス・マスタのデータ転送が発生しているときに図１４及び１５のステップ１６２に続く動作を待っているので、）簡単に受け入れられ、ＡＣＫされ、ＭＣＩされ、そして処理される。ＭＣＩは正常なＲＡＭによるいずれの応答も取り消し、そしてＣＰＵが、応答が“シーケンスからはずれた（out of sequence）”応答となるであろう要求を作るように、アドバイスする。
【０１５０】
４つまでのそのような要求がバス・コマンド待ち行列１６４において、要求している中央処理装置のスライス番号とともに、待ち行列にされる。これらのコマンドはＡＳバス２０に与えられる。応答が戻ってくると、ブリッジ・コントローラ５６は、メイン・バスに対するアービトレーション（arbitrate）を行う。（そして、それは最高の優先順位を割り当てられているので、それを素早く得る。）次に、それは、要求するスライスにアドレス指定されかつ戻されたデータを伴うＲＷＲコマンドを生成する。または、Ｉ／Ｏアドレス・スペース書き込みの場合、それは、単に、バス・アドレス・サイクルのみを用いかつデータ・サイクルを用いずにＩＯＷＲ（Ｉ／Ｏ書き込み応答）コマンドを送る。
【０１５１】
ＩＢＭ  ＰＣコンパチビリティのために、幾つかのブリッジ・インターフェース・コントローラは割り込みアクノレッジ・コマンドに応答するように設計され得る。複数プロセッサの中からのｉ４８６またはペンティアム（登録商標、Pentium）・プロセッサがハードウエア割り込みをアクノレッジし、割り込み番号を呼ぶとき、ＭＢＣ５０は、ＩＮＴＡコマンドを生成する。このコマンドは、ｉ４８６バスが割り込みをアクノレッジして割り込み番号を要求しているかのように、ＡＳのｉ４８６バスに渡される。ＥＩＳＡ又はＭＣＩロジックによって戻される割り込み番号は、次に、割り込み番号をデータとしてもつＲＷＲコマンドの形でＭＢＣ５０に渡し戻され、最終的に、それを必要とするペンティアム(登録商標)又はｉ４８６に与えられる。
【０１５２】
ブリッジ・インターフェース・コントローラのレジスタのアクセス・コマンドは、図１７に示すステップ２０８によって処理される。
９．キャッシュ・スヌープ・ロジック
図１８、１９及び２０は、どの１つのパリティもキャッシュ・ラインを所有しない対称のバス・キャッシング・システムにおいて複数のＣＰＵ及びブリッジ・インターフェース・コントローラのキャッシュが同時にかつ協力して機能することを可能にするＭＥＳＩキャッシュ・スヌーピング・プロトコルの構造（図１８）及び機能的オベレーション（図１９及び２０）を示す。即ち、それは、（オーナーシップ（ownership）が排他的アクセス（これは、唯一の、しかしキャッシュ・ラインへの排他的アクセスではないことを意味する）によって置換される）従来のＭＯＳＩシステムと異なる。
【０１５３】
規定は以下のようである。キャッシュはキャッシュ・ラインのコピーを含むことができない、または、それは特定のキャッシュ・ラインを含むための排他的（ただ１つの、を意味する）キャッシュであり得る、または、他のものがまたコピーを含むならば、それはキャッシュ・ラインへの共用（sharing）アクセスであり得る、または、キャッシュ・ラインが替えられていたならば、それは変更されたキャッシュ・ラインであり、誰もそれを有することができない、または、何れかの者がそれらのコピーを変更するならば、私達は私達のコピーを、私達がそれを有していなかったかのように、無効とマーク付けして、再使用のためのスペースを自由にしそして変更されたデータをメモリに送り返す。
【０１５４】
従って、各キャッシュ・ラインは、フラッグ・ビットＭ（“変更”に対する）、Ｅ（“排他的”に対する）、Ｓ（“共用される”に対する）及びＩ（“無効”に対する）、を伴う。そして、図１８に示すように、信号ＡＣＫ（“私はそれを有する”に対する）、ＮＡＫ（“後に再度試みよ”に対する）、ＭＣＩ（“それはシーケンスを外れてあなたに来るであろう”に対する）、ＣＭＤ（“私はそれが変更されたのを有する”に対する）及びＣＤＳ（“私はそれを共用している”）が、キャッシュを有するスライス・デバイスのすべてに送られる。これらは、アドレスがＸＡ−ＭＰバス２１に与えられると、キャッシュが互いの内容をスヌープすることを可能にする。
【０１５５】
図１８に示されるように、各キャッシュはタグ比較ロジック２１０を含み、それは、何れかのＸＡ−ＭＰバス・アドレスのタグ部分とローカル・キャッシュ１７０内に含まれるタグ２１２とを比較することが可能であり、アドレスがキャッシュ１７０内に存在するならば比較信号をＸＡ−ＭＰバス・スヌープ・ロジック１８６に提供する。ＸＡ−ＭＰバス・ロジックは、最初に、ＡＣＫ信号を生成する（ＲＡＭメモリがこれをし得るがこれをし、次に、スヌープ・ロジック１８６はＭＥＳＩビット１９２を検査し、以下のものを信号で伝える）。
【０１５６】
−−排他的ビット又は共用ビットがセットされたならば、それはＣＤＳ信号を生成する。
−−ＭＯＤビットがセットされたならば、それはＣＭＤ信号を、そしてまたＭＣＩ信号を生成し、ステップ１８８が、シーケンスを外れたキャッシュからキャッシュへのＲＬＲ転送によって、変更されたキャッシュ・ラインを送り戻すであろうことを伝え（しかし、ブリッジ・コントローラのキャッシュは要求をＮＡＫし、ＷＣＬ（すべてのデータが有効である場合）又は１つ以上のＷＢＷ（何れかが無効である場合）を用いＲＡＭに替えられたデータを送り、これが完了するまでＮＡＫを行い、次にキャッシュ・ラインを無効とマーク付けする。
【０１５７】
−−さもなければ応答がない。
ブリッジ・インターフェース・コントローラと関連するキャッシュは、それが、どのバイトが有効データであるかを示す変更されたビット１７６と、（周辺デバイスのオペレーションへの出力の間に関して）キャッシュ・ラインが完全に読み取り可能なデータのみを含むかどうかを示す読み取り性（readability）ビット１９２とを有する、という点で他のものと異なる。ステップ１８８は、ＣＰＵキャッシュの場合、故障（out of order）ＲＬＲ転送を用いてキャッシュへ変更されたデータ・キャッシュを転送し、そして、ブリッジ・コントローラの転送の場合、変更されたデータをＲＡＭに送り戻し、要求しているプロセッサをＮＡＫする。ブリッジ・コントローラのキャッシュはまた、図１８の１７２及び図１４及び１５に示すように、周辺デバイスへのキャッシュとして働くが、それは、ＲＡＭ及びそれと同様のものへのＤＭＡ転送に対してバッファとして以上に機能するように上記で説明したように変更される。
【０１５８】
ａ）書き込みサイクル
キャッシュ・スヌーピング（snooping）・オペレーションは図１９及び２０に要約される。ＣＰＵのキャッシュに対して、キャッシュ・ライン２７０への書き込みに応答して、ローカルのキャッシュのスヌーブ・ロジックは、ローカルのコピーが２２２で“排他的”とマークされたを見るために検査され、そうであるならば、２２４で“変更された”とマークされる。どの他のキャッシュもコピーを含んでいないので、これ以上のことは行われる必要がない。どのＸＡ−ＭＰバス・アドレスもデータ・サイクルも要求されない。
【０１５９】
２２６で、“共用された”とマークとされると、“ＰＩＣＬ”コマンドが他のスヌープ・ロジック・ユニットに送り出されて、他のキャッシュに存在するこのデータの他のコピーを無効にし、そして再び、それは“変更された”とマークされる。すべての他のコピーがそれらのローカル・スヌープ・ロジックによって“無効”とマークされる。これは、ＸＡ−ＭＰバス・アドレス・サイクルのみを用い、データ・サイクルを用いない。
【０１６０】
２３２で、“変更された”とマークされると、同じステップがとられる。何れの者も“変更された”あるいは“排他的”コピーを有さないので、ＰＩＣＬコマンドは、インコヒーレンシー（incoherency）・エラーを検出することができることに留意されたい。
【０１６１】
２３８で、私達のローカル・キャッシュのコピーが無効又はなくなっている場合、或る者はＲＩＬを行いステップ２２０に戻り、キャッシュ・ラインへの書き込みを再び試みる。
【０１６２】
ブリッジのキャッシュに対して、ローカルのキャッシュのスヌープ・ロジック２７０は、ローカル・コピーが“変更された”とマークされているかどうかを見るために検査をする。そうであるならば、これ以上行われる必要がない。
【０１６３】
“変更された”とマークされていないならば、ＢＩＣＬコマンドが他のスヌープ・ロジック・ユニットに送られて、他のキャッシュに存在するこのデータの他のコピーを無効にし、そしてそれは“変更された”とマークされる。
【０１６４】
これは、変更されたデータを含むキャッシュをＮＡＫするように及びデータをＲＡＭに送り返すように強制し（図１４のステップ１８４、１９０、１９４及び１９６を参照せよ）、ＣＰＵのキャッシュに対しては、変更されたデータはＲＡＭに、それが或る新しいトランザクションによってローカル・キャッシュから強制的に出されるまで、戻されない。次に、それはキャッシュ書き戻し（writeback）レジスタに移動され（そこにおいて、それはいまだアクティブなキャッシュにあり）、それはＷＣＬ要求によってメモリに送り戻される。
【０１６５】
ｂ）読み取りサイクル
データがローカル・キャッシュに存在しない読み取り要求は（図２０、ステップ２４２）、ＲＣＬ読み取りキャッシュ・ライン・コマンドの実行で開始される。ＲＡＭメモリは、アドレスが有効であるならばＡＣＫする。すべてのキャッシュにおけるスヌープ・ロジック１８６は、衝突（collision）に対してアドレス及びローカル・キャッシュを試験し、次に、ヒットが存在する場合にはＭＥＳＩビットの状態を検査する。ＣＭＤ信号は、変更されたコピーが或るキャッシュに存在することを示し、ＣＤＳ信号は、変更されていないコピーがどこかに存在することを示す。ＣＭＤまたはＣＤＳ応答がない場合（ステップ２４４及び２４６）、戻されたキャッシュ・ラインは２４８で排他的とマークされる。他のコピーがどこかに存在したならば（ステップ２４６）、すべてのコピーは“共用される”とマークされる。変更されたコピーがＣＰＵのキャッシュに存在したならば（ステップ２５２）、変更されたコピーを含むキャッシュはＭＣＩ信号に応答し（ステップ２５８）、ステップ２６０で、キャッシュに直接にキャッシュする変更されたキャッシュ・ラインの、シーケンスから外れた転送を開始する。同じ変更された値に対するこのような要求の素早いシーケンスは、ウォーターフォール（waterfall）効果を引き起こすことができ、そこでは、それはキャッシュからキャッシュへ迅速に転送され、１つのキャッシュ（最後のキャッシュ）のみがその“変更された”信号の組を有する。
【０１６６】
変更された値を含むキャッシュがブリッジ・コントローラ・キャッシュであるならば（ステップ２５２）、データは、たぶん、ＤＭＡ転送からＲＡＭに到着しているところである。この場合、読み取りキャッシュ・ラインの要求は、ブリッジ・コントローラのスヌープ・ロジックによってＮＡＫされ、そして、変更されたデータはＲＡＭに書き込まれる（図２０のステップ２５６及び図１８のステップ１８８）。
【０１６７】
ブリッジＩ／Ｏロジック及びオペレーションの更なる詳細は、アペンデイックス９の“ブリッジ・インターフェース・コントローラ”と題されたところで見つけられる。
１０．プロセッサ・モジュール１６
上記で説明したシステム１０の特徴、構造、及びオペレーションは、このシステムの必要不可欠なすべての機能的ユニットにおいて実現されるので、ＰＭ１６の基本的なオペレーションの特徴は、上記の説明から及びＰＭ１６のエレメントに関係する適切なアペンデイックスから、理解されるであろう。その中には、“メモリ・バス・コントローラ”と題されたアペンデイックス６と、“プロセッサ・データ経路”と題されたアペンデイックス７とが含まれる。
【０１６８】
従って、以下に、適切なアペンデイックスと、ＰＭ１６の特徴とシステム１０の以前説明した特徴との関係とを理解するのを助けるために、要約ブロック図のレベルでＰＭ１６を説明する。
【０１６９】
図２２を参照すると、ＰＭ１６の全体のブロック図が示されており、そして、以前説明したように、各ＰＭ１６はプロセッシング・ユニット４２を含み、それは、第２のキャッシュ機構４６に関連するプロセッシング・ユニット４２に対する第一キャッシュ支持データ及び命令の読み取り及び書き込みと、直接のプロセッサ・ユニット４２のオペレーションを支持するための第２のキャッシュ・ディレクトリ４８とを含む。ＰＭ１６のこの好適な実施例に関連するアペンデイックスにおいて、プロセッサ・ユニット４２はタイトルＰ５によって指定され、キャッシュ・ディレクトリ４８及び第２のキャッシュ４６はタイトルＣ５Ｃ及びＣ８Ｃによって指定され、そこにおいて、Ｐ５はペンティアム(登録商標)・マイクロプロセッサであり、Ｃ５Ｃ及びＣ８Ｃは、インテル社からの関連のキャッシュ機構であり、適切な製品書類においてこれらのタイトルで呼ばれることに留意されたい。
【０１７０】
各ＰＭ１６は、更に、割り込み処理のためのアドバンスト・プロセッサ割り込みコントローラ（Advanced Processor lnterrupt Controller）（ＡＰＩＣ５４）と、スヌーピング・オペレーションで用いるためのキャッシュ機構４４のタグ・ディレクトリの複製を記憶するための複製ディレクトリ（Duplicate Directory）３００とを含む。
【０１７１】
各ＰＭ１６は、また、以前説明したように、ＸＡ−ＭＰバス１２に関するＰＭ１６のオペレーションを制御するためのＭＢＣ５０と、２つのＰＤＰ５２の形である２つのデータ経路、即ち、１つは偶数データ・バス２６用で１つは奇数データ・バス２６用、とを含む。
【０１７２】
ａ．メモリ・バス・コントローラ５０
次に図２４及び図２５を参照すると、ＭＢＣ５０に更に重点を置いた更なるブロック図が図解されている。図２３は、図２４と図２５との関係を示す。示されているように、ＭＢＣ５０は、ＰＤＰｓ５２を制御するプロセッサ・データ・パス制御３０２と、ＡＣＫ／ＮＡＫ発生器３０４とアドレス・レジスタ（Ａ）３０６と、スライスのスライス番号を記憶するスロットＩＤ３０８と、アドレス・デコード・メカニズム（ＡＤＤＲ  デコード）３１０とを含む。
【０１７３】
ＭＢＣ５０は、更に、制御レジスタ３１２とＡＤＡＭＰ１２６との組と、状態及び識別レジスタ３１２の組と、実行モニタ・レジスタ３１４とを含む。ＭＢＣ５０は、また、「Ｔａｇ  ＲＡＭ」と示され、状態情報を記憶する関連する状態ＲＡＭ３１８を有する複写（duplicate）ディレクトリ３００を制御する第２のタグ・コントローラ３１６を含む。
【０１７４】
図２６を参照すると、ＭＢＣは、更に、ＸＡ−ＭＰインターフェース制御３２２、クロック発生器３２２、仲裁論理３２４、スヌープ制御論理１８６、アドレス・マッピング制御３２６、トラップ／状態論理３２８及び誤り論理３３０を含む種々の制御論理を含む。
【０１７５】
ｂ．プロセッサ・データ・パス５２
次に図２７を参照すると、ＰＤＰ５２のブロック図が示されている。示されているように、ＰＤＰ５２は、ＸＡ−ＭＰバス１２へのＸＡ−ＭＰバス・インターフェース３３２と、出力ＦＩＦＯ３３４と、入力ＦＩＦＯ３３６と、キャッシュ・メカニズム４４へのキャッシュ・データ・インターフェース３３８とから成る。入力データ・パスに関連するのは入力データ・パリティ・チェック３４０であり、出力データ・パスに関連するのは出力パリティ制御３４２である。
【０１７６】
ＰＤＰ５２とＭＢＣ５０との間のインターフェースは、ＭＢＣインターフェース３４４、ＭＢＣ−ＩＮ３４６及びＭＢＣ−ＯＵＴ３４８を介して提供される。ＰＤＰ５２の動作は、状態マシン３５０によって提供される。
【０１７７】
ＰＤＰ５２は、更に、エラー・コレクタ３６０、クロック信号を与える位相ロック・ループ３６２及び走査制御３６４を含む。
以上で本発明の現時点での好適実施例を終わる。以上で述べてきた発明は、その本質的な特性から離れることなくこれ以外の形式でも具体化され得る。よって、この実施例は、あらゆる点において説明のためのものであって制限を意図したものではなく、本発明の範囲は、以上の説明ではなく、請求の範囲によって示される。請求の範囲の均等の意味及び範囲に含まれるあらゆる変更及び修正は、したがって、その範囲内に含まれるものとする。
【図面の簡単な説明】
【０１７８】
【図１】図２と図３との関係を示す図である。
【図２】本発明を組み入れたシステムのブロック図である（図３に続く）。
【図３】本発明を組み入れたシステムのブロック図である（図２に続く）。
【図４】メモリ・コントローラのブロック図である。
【図５】メモリ・データ・パスのブロック図である。
【図６】訂正行列（correction queue）のブロック図である。
【図７】適合的（adaptive）メモリ・タイミング論理のブロック図である。
【図８】インオーダ（in-order）な要求／応答行列のブロック図である。
【図９】アドレス空間マッピングのブロック図である。
【図１０】バス・アクセス仲裁メカニズム能力ブロック図である。
【図１１】入出力ブリッジのブリッジである。
【図１２】ブリッジ・バス・インターフェース・コントローラのブロック図である。
【図１３】ブリッジ・キャッシュのブロック図である。
【図１４】書き込み要求に対するブリッジ・インターフェース・コントローラのブロック図である。
【図１５】読み取り要求に対するブリッジ・インターフェース・コントローラのブロック図である。
【図１６】バス・ウインドウに対するブリッジ・コントローラのブロック図である。
【図１７】ブリッジ・インターフェース・レジスタ・データ・パスのブロック図である。
【図１８】ブリッジ・インターフェース・コントローラ及びスヌープ（snoop）のブロック図である。
【図１９】書き込み要求のスヌープの流れ図である。
【図２０】読み取り要求のスヌープの流れ図である。
【図２１】パーソナル・コンピュータのブロック図である。
【図２２】プロセッサの機能ユニットのブロック図である。
【図２３】図２４と図２５との関係を示す図である。
【図２４】メモリ・バス・コントローラのブロック図である（図２５へ続く）。
【図２５】メモリ・バス・コントローラのブロック図である（図２４へ続く）。
【図２６】メモリ・バス・コントローラの制御構造のブロック図である。
【図２７】プロセッサ・データ・パスのブロック図である。
【図１】
2006085728.tif 000003
【図２】
2006085728.tif 000004
【図３】
2006085728.tif 000005
【図４】
2006085728.tif 000006
【図５】
2006085728.tif 000007
【図６】
2006085728.tif 000008
【図７】
2006085728.tif 000009
【図８】
2006085728.tif 000010
【図９】
2006085728.tif 000011
【図１０】
2006085728.tif 000012
【図１１】
2006085728.tif 000013
【図１２】
2006085728.tif 000014
【図１３】
2006085728.tif 000015
【図１４】
2006085728.tif 000016
【図１５】
2006085728.tif 000017
【図１６】
2006085728.tif 000018
【図１７】
2006085728.tif 000019
【図１８】
2006085728.tif 000020
【図１９】
2006085728.tif 000021
【図２０】
2006085728.tif 000022
【図２１】
2006085728.tif 000023
【図２２】
2006085728.tif 000024
【図２３】
2006085728.tif 000025
【図２４】
2006085728.tif 000026
【図２５】
2006085728.tif 000027
【図２６】
2006085728.tif 000028
【図２７】
2006085728.tif 000029