(57)【要約】【課題】  ３２ビットまたは６４ビットの外部メモリ・バス間の切り替えを可能にする。【解決手段】  本発明はデュアル幅のメモリ・バスへのアクセスを可能にするメモリ・システム・インタフェース設計を提供するものである。具体的には、３２ビットまたは６４ビットのバスとのインタフェースを備えるサブシステム並びに方法を提供するものである。３２ビット・バスはローエンドの製品に使われ、６４ビット・バスはハイエンドの製品に使われるであろう。メモリ制御ユニット（ＭＣＵ）は３２ビット及び６４ビット両方のモードをサポートする。３２ビットかまたは６４ビットのメモリ・サブシステムを選択することによって、ユーザはより余裕をもってシステム費用や性能を調整することができるようになる。【選択図】    図１
2004185639.tif 000002
【特許請求の範囲】
【請求項１】
マスタ・デバイスが、バスを介してスレーブ・デバイスからデータを読み出すための方法であって、前記マスタ・デバイスが第１データ幅を有するデータ語上で動作し、バスが、該第１データ幅と等しいまたはこれよりも短い第２データ幅を有し、前記方法が、
前記マスタ・デバイスによって該バスへのアクセスを要求する段階と、
前記バスからファーストイン・ファーストアウト（ＦＩＦＯ）データ・バッファへデータを転送する段階をさらに備え、前記データが、該バスから該ＦＩＦＯデータ・バッファへ、該第２データ幅と等しいブロックにおいて転送され、
前記ＦＩＦＯデータ・バッファから一対のマルチプレクサへ、該第２データ幅と等しいブロックにおいて前記データを転送する段階をさらに備え、前記一対のマルチプレクサが、前記データの一時的な格納が可能であり、該ＦＩＦＯデータバッファからデータを転送する前記段階が、第１データ幅と等しいデータ・ブロックの、前記一対のマルチプレクサへの転送が完了するまで続き、また、
前記一対のマルチプレクサから該マスタ・デバイスへ、該第１データ幅と等しいブロックにおいて前記データを転送することを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は一般的にはマイクロプロセッサ・メモリシステムの分野に関し、より具体的には、デュアル幅（ｄｕａｌ  ｗｉｄｔｈ）のメモリ・バスをサポートするシステムに関する。
【背景技術】
【０００２】
関連特許出願の引照
本発明は、本発明の出願人による下記の出願に関連するものである：１９９１年７月８日出願、Ｄｅｒｅｋ  Ｊ．Ｌｅｎｔｚ他の発明になる、発明の名称：「複数の異種型プロセッサをサポート可能なマイクロプロセッサ・アーキテクチャ（Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  Ｃａｐａｂｌｅ  ｏｆ  Ｓｕｐｐｏｒｔｉｎｇ  Ｍｕｌｔｉｐｌｅ  Ｈｅｔｅｒｏｇｅｎｅｏｕｓ  Ｐｒｏｃｅｓｓｏｒｓ）」米国特許出願番号０７／７２６，８９３号（特願平５−５０２１５１号：特表平６−５０１１２３号公報）。なお、当該出願は参照することにより本明細書の一部として組み込まれているものとする。
【０００３】
典型的なコンピュータ・ベースのプロセッサ・システム（或いはコンピュータ・システム）は３つの主要なサブシステムから成り立っている。それらは、即ち、１個の主記憶、少なくとも１個以上の中央演算処理装置（ＣＰＵ）、並びに１つの入出力（Ｉ／Ｏ）サブシステムである。コンピュータ・システムにおいて、前記の様々なサブシステムは互いにインタフェースをとっていなければならない。例を挙げれば、メモリとＣＰＵは通信する必要があり、ＣＰＵと入出力（Ｉ／Ｏ）デバイスについてもまた同様である。
【０００４】
この通信は典型的にはバスを介して行なわれる。バスはサブシステム間の共用通信リンクとしての役割を有する。バスを備えることの大きな利点は、低費用と汎用性の２つである。配線スキームを１つだけ定義することによって、コンピュータ・システムに新たなデバイスやサブシステムを簡単に追加することができる。さらに、共通バスを使う別々のコンピュータ・システム間に周辺機器を接続することさえ可能である。
【０００５】
バスの設計が非常に困難である理由の一つに、バスの最高速度が物理的な要因、即ち、バスの長さとデバイスの数（従って、バス・ローディング）によって大きく制限されることが挙げられる。こうした物理的な制限があるために自由にバスをスピードアップすることができない。
【０００６】
メモリ・サブシステムを設計する目的は、容易に且つ最も納得のゆく費用でプロセッサの速度をメモリの情報の速度（またはバンド幅）にマッチさせるようにすることである。主記憶については、メモリのバンド幅を広げたりメモリのレイテンシを短縮したりするために、「メモリ・バス」と呼ばれるより幅の広いバスを使うことができる。メモリ・サブシステムの場合、メモリのバンド幅は、単位時間につきＣＰＵとメモリ間を転送（フェッチまたは格納）できるメモリ・バイト数である。従って、メモリ・バスの最大バンド幅Ｂは「Ｂ＝Ｗ／Ｔｍバイト／秒」に等しく、その場合Ｗはメモリ・サイクルＴｍにつき伝達されるバイトで表したワードの幅である（例えば、非特許文献１参照）。
【非特許文献１】１９９０年Ｍｏｒｇａｎ  Ｋａｕｆｍａｎｎ出版社発行のＨｅｎｎｅｓｓｙ他の著作「Ｃｏｍｐｕｔｅｒ  Ａｒｃｈｉｔｅｃｔｕｒｅ  ａ  Ｑｕａｎｔｉｔａｔｉｖｅ  Ａｐｐｒｏａｃｈ」
【発明の開示】
【発明が解決しようとする課題】
【０００７】
様々なサイズの異なるメモリ・バスを使って性能の向上が計られることが多い。しかしながら、幅が異なる、複数の外部バスへのアクセスが可能なシステムの設計は一つの設計問題を抱えている。例を挙げれば、システムが現在３２ビット・ブロックのメモリ・バスからデータを受け取るように構成されていれば、６４ビットのデータ転送はＣＰＵやキャッシュに負担をかけることになる。従って、コンピュータ・システムの全体的な構成を変更しなくても幅の異なるメモリ・バスが使えるシステムが必要である。
【課題を解決するための手段】
【０００８】
本発明は、プロセッサ用のメモリ・システム・インタフェース設計並びにデュアル幅のメモリ・バスへのアクセスを可能にするインタフェースを作動させる方法を提供するものである。より具体的には、本発明は、コンピュータ・ベースのシステムが３２ビットのメモリ・バスまたは６４ビットのメモリ・バスのどちらにでもアクセスできるようにするメカニズムを提供するものである。３２ビットのメモリ・バスはローエンドの製品に使われるのに対し、６４ビットのメモリ・バスはハイエンドの製品に使われると思われる。本発明によるメモリ制御ユニット（ＭＣＵ）は３２ビット・バスモードと６４ビット・バスモードの双方をサポートする。一実施例における本発明は、既に或るマイクロプロセッサ・チップに組み込まれている。
【０００９】
本発明は、主記憶とバス要求者との間の外部メモリ・バス上のデータの転送を効率的に行なうためのコンピュータ・ベースのシステム並びに方法を提供するもので、複数の異なる外部メモリ・バスへのアクセスを可能にするように構成されたデュアルの幅のメモリ・サブシステムから成っている。デュアル幅のメモリ・サブシステムは、バス要求者からデータを受け取るように接続された複数のマルチプレクサと、その複数のマルチプレクサからデータを受け取り且つ格納するように接続された１個の記憶装置とから成り、データは外部バスの幅によって異なるブロックにして格納される。さらに、デュアル幅のメモリ・サブシステムは、外部メモリ・バスからデータを受け取り且つ格納するように接続された記憶装置から成り、データは外部バスの幅によって異なるブロックにして格納される。複数のマルチプレクサは、記憶装置からデータを受け取り、且つ前記データをシステムの限定条件に従って決定されたブロックにしてバス要求者に送るように接続されている。
【発明の効果】
【００１０】
３２ビットかまたは６４ビットのメモリ・サブシステムを選択することは、ユーザにシステムを設計するための変更可能な（ｆｌｅｘｉｂｌｅ）フレームワークを提供することになる。ユーザは、３２ビットかまたは６４ビットの外部バスの活用を選択することによってシステムの費用並びに性能を調整することができる。本発明は、データ転送に必要な配線（ｗｉｒｅ）量を最少限に減らすシステム並びに方法を提供するものである。さらに、本発明を組み込んだマイクロプロセッサ・チップは、制御信号やシステム構成を変更せずに、３２ビットまたは６４ビットの外部メモリ・バス間の切り替えを可能にする。
【発明を実施するための最良の形態】
【００１１】
Ｉ．発明の環境／背景
図１において、本発明による好適な実施例に基づき一般的に１００と指定されたマイクロプロセッサのアーキテクチャが提示されている。システム・アーキテクチャ１００は、ＣＰＵ１０５、キャッシュ・メモリ１１３並びに１１５を含むキャッシュ制御ユニット１１０、Ｉ／Ｏサブシステム１３０、メモリ制御兼インタフェース・ユニット１２０（ＭＣＵ）、及びインタリーブ方式のオペレーション（ｉｎｔｅｒｌｅａｖｅｄ  ｏｐｅｒａｔｉｏｎ）を実行するように構成されたインタリーブド・メモリ・バンク１５０ａ、１５０ｂ、１５０ｃから成る。インタリーブド・メモリ・バンク１５０は外部データバス１４０を介してＭＣＵ１２０と接続されている。本発明は、ＭＣＵ１２０が３２ビットと６４ビットのどちらの外部バス１４０からもデータを受け取ることを可能にする。本発明はマルチプロセッサの環境で作動することを意図したものである。
【００１２】
キャッシュ・メモリ１１３及び１１５はＣＰＵ１０５とメモリ１５０ａ、１５０ｂ、さらに１５０ｃとの間のバッファとしての役割をもつ。一般的に、キャッシュは、一番最後にアクセスされたコードやデータを保持するＣＰＵ１０５の近くに設置された小型の高速メモリである。典型的には、ＣＰＵ１０５がシステムの中で最も速いユニットでプロセッサ・サイクルが数十ナノ秒であるのに対し、メモリ１５０はサイクル時間が数百ナノ秒である。ＣＰＵ１０５とメモリ１５０との速度のギャップは、その２つの間に高速キャッシュ・メモリ１１０を使うことによって縮めることができる。しかしながら、ＣＰＵ１０５やキャッシュ１１０がどんなに高速であろうとも、データを速く効率的に検索する手段がなければ性能の低下は避けられない。そこで、より幅の広い外部バス１４０をＭＣＵ１２０に接続することによってより多くのデータが転送されるようになる。従って、本発明は、データ幅の異なるメモリ・バスへのＭＣＵ１２０の接続を可能にするものである。
【００１３】
本発明に基づく好適な実施例におけるＭＣＵ１２０は、スイッチ・アービトレーション・ユニット１３２を備えるスイッチ・ネットワーク１２５、データ・キャッシュ・インタフェース回路１１７、命令キャッシュ・インタフェース回路１１２、Ｉ／Ｏインタフェース回路１３５、ポートとして知られる少なくとも１個以上のメモリ・ポート・インタフェース回路１２７から成っており、各ポート・インタフェース回路１２７はポート・アービトレーション・ユニット１３４を含む。ＭＣＵ１２０は、データ並びに命令をキャッシュ制御ユニット１１０（ＣＣＵ）（Ｄ−キャッシュ１１５とＩ−キャッシュ１１３（読み出し専用）の両方）、ＩＯＵ１３０、及び主記憶１５０の間で転送（読み出しまたは書き込み）する回路である。
【００１４】
スイッチ・ネットワーク１２５はマスタ・デバイスとスレーブ・デバイス間の通信手段である。スイッチ・ネットワーク１２５にとって、予想されるマスタ・デバイスは、例えば、Ｄ−キャッシュ１１５、Ｉ−キャッシュ１１３、もしくはＩ／Ｏ制御ユニット（ＩＯＵ）１３０であり、予想されるスレーブ・デバイスはメモリ・ポート・インタフェース回路１２７またはＩＯＵ１３０である。
【００１５】
スイッチ・ネットワーク１２５の機能はＣＣＵ１１０やＩＯＵ１３０から様々な命令やデータ要求を受け取ることである。これらのユニットはバス要求者と呼ばれることがある。要求を受け取った後、スイッチ・アービトレーション・ユニット１３２がそれらの要求を（命令アドレスによって異なる）然るべきメモリ・ポートに渡す。メモリ・ポート・インタフェース回路１２７（ポートが複数の場合もある）は、次に必要なタイミング信号を生成し、外部メモリ・バス１４０に必要なデータを送るか、そこからデータを受け取るかする。メモリ・ポート・インタフェース回路１２７は、インタリーブド・メモリ１５０に送ったりまたはそこから受け取ったりすることによってデータを管理する。Ｄ−キャッシュ１１５は、システムが現在３２ビットの外部メモリ・バス１４０に連結されていようが６４ビットの外部メモリ・バス１４０に連結されていようが、データのトランザクションが６４ビットのブロックで実行されることを求める。
【００１６】
スイッチ・ネットワーク１２５は一式のトライステート・バッファ付き信号バスを介してＣＣＵ１１０、ＩＯＵ１３０、及びメモリ・ポート１２７に接続されている。トライステート・バッファ付き信号バスはメモリ制御データ・バス（ＭＣ Ｄ ＢＵＳ）１２６（ａ）、キャッシュ・データ・バス（ＣＣ Ｄ ＢＵＳ）１２６（ｂ）、及びメモリ制御命令バス（ＭＣ Ｉ ＢＵＳ）１２６（ｃ）を備えている。さらに、本発明は、要求バスＣＣ Ｄ ＲＥＱ１２８（ａ）とＣＣ Ｉ ＲＥＱ１２８（ｂ）、並びに制御信号（表示なし）ＭＣ Ｄ ＲＥＱ ＡＣＫ、ＭＣ Ｄ ＤＡ ＡＣＫ、及びＭＣ Ｄ Ｂ ＶＬＤを備えている。
【００１７】
一般的に、バス・トランザクションにはアドレスの送信とデータの送信・受信の２つがある。バス・トランザクションは普通そのトランザクションがメモリに何をするかによって定義される。即ち、読み出しトランザクションはメモリから（例えば、ＣＰＵかＩ／Ｏデバイスかどちらかに）データを転送し、書き込みトランザクションはメモリにデータを書き込む。読み出しトランザクションでは、読み出しを表している然るべき制御信号と共に、アドレスが先ずメモリ１５０に向かうメモリ・アドレス・バス（表示なし）に乗せられる。メモリは対応する制御信号と共にデータをバス１４０上に戻すことによって応答する。書き込みトランザクションは、ＣＰＵまたはＩ／Ｏデバイスがアドレス及びデータの双方を送るよう要求して、データの戻りは求めない。
【００１８】
本発明は、６４ピンか３２ピンかどちらかの外部メモリ・バス・インタフェースを備えたチップへの適用を意図するものである。理解されるであろうが、６４ピンのインタフェースは、３２ビットと６４ビットのいずれのモード（例えば、６４ビットか３２ビットのどちらかの外部バス１４０で）でも使うことができる。３２ピンのメモリ・データ・バス・インタフェースは６４ビット・モードでは動作しない。
【００１９】
リセット時、好適な一実施例は電源投入（ブート）中３２ビットのメモリ・インタフェースを想定し、（オン・チップまたはオフ・チップの）決まった記憶場所からワードを読み出し、そこから適正なシステム動作に必要な構成を確かめる。具体的には、電源投入中ＣＰＵ１０５はブート・コードを読み出し且つ実行する。ブート・コードはメモリ１５０内の特定の記憶場所を読み出すようＣＰＵ１０５に命令する。その記憶場所にはその中にどんなサイズのデータ・バスがシステム１００に連結されているか確認するための情報がコード化されて入っている。別の実施例では、そのサイズの外部バス１４０を有するチップ・ハードウエアが事前にプログラムされている。従って、以下に説明する、３２ビットまたは６４ビットの外部メモリ・バス１４０へのアクセスを可能にするためのサブシステムは、チップへの電源投入後もしくはハードウエアリセット後直ちに、どのサイズの外部バス１４０が現在システム１００に連結されているか解かる。もちろん、外部バスのサイズを確認する他の手段について当業者には明らかであろうし、本発明は決して上述の技法に限定されるものではない。
【００２０】
図１、図２並びに図５において、ＣＣ Ｄ ＢＵＳ１２６（ｂ）及びＳＷ−ＷＤ２１５はマスタ・デバイス（例えば、Ｄ−キャッシュ１１５）から書き込みデータＦＩＦＯ２３０（以下に記述し図２に示す）に書き込みデータを送るために使われる。ＭＣ Ｄ ＢＵＳ１２６（ａ）及びＳＷ ＲＤの４５０と４５５とはスレーブ・デバイス（メモリ・ポート１２７またはＩＯＵ１３０）からマスタ・デバイスに読み出しデータの結果を送るために使われる。ＳＷ ＷＤ及びＳＷ ＲＤは共にトライステート・バスである。
ＩＩ．デュアル幅メモリ・サブシステム
本発明により、上に記述したシステム・アーキテクチャが３２ビットと６４ビットのどちらの外部メモリ・バス１４０にもインタフェースがとれるようになる。
【００２１】
デュアル幅メモリの転送を容易にするために、本発明はキャッシュ１１０及びメモリ・ポート・インタフェース１２７間のワード送信のために最大で２クロック・サイクルを使うように設計されている。例えば、キャッシュ１１０が１つのロングワード（６４ビット）を書き込み、且つシステム１００が３２ビットの外部バス１４０に連結されていれば、データをメモリ・ポート・インタフェース１２７に送るには２クロック・サイクルを要する。
【００２２】
図２において、主記憶１５０に書き込むための論理設計２００（以下、サブシステム２００と言う）がある。サブシステム２００は、３２ビットまたは６４ビットのどちらのデータ転送にも必要なハードウェアである。サブシステム２００はデータを「ダブル・ポンプ式（ｄｏｕｂｌｅ  ｐｕｍｐｅｄ）」で転送する。例えば、クロック・サイクル毎に１ワードのデータを転送するのではなく、サブシステム２００は１／２（半）クロック・サイクル毎にデータの１／２ワードを転送することができる。バスはダブル・ポンプ式だから、バスがターンアラウンドして１つのマスタから次のマスタに切り替わる時、バス競合（ｂｕｓ  ｃｏｎｆｌｉｃｔ）が起こらないように回路設計段階で注意が払われている。ダブル・ポンピング（ｄｏｕｂｌｅ  ｐｕｍｐｉｎｇ）は必要ビット線数を減らしそれによって性能の低下を最小限に抑えながら費用のかかる配線要件（ｗｉｒｅ  ｒｅｑｕｉｒｅｍｅｎｔ）を最低限に抑える。好適な実施例ではダブル・ポンプ方式を採用しているが、本発明の実現にダブル・ポンピングが必要というわけではない。
【００２３】
サブシステム２００は、データ・キャッシュ・バス（ＣＣ Ｄ ＢＵＳ）１２６（ｂ）から主記憶１５０にデータを送るためにマルチプレクサ２１０、２２０を使用する。本発明による好適な実施例におけるマルチプレクサ２１０、２２０はマルチプレクサ／ラッチを使う。言い換えれば、マルチプレクサは一時的にデータを格納することができる。１６または３２ビット（３２ビットのメモリ・バス１４０があるか或いは６４ビットのメモリ・バス１４０があるかによって決まる）のデータは、半クロック・サイクル毎にメモリ・ポート・インタフェース１２７に転送され、メモリ・ポート・インタフェース１２７とＣＣＵ１１０との間に設置された書き込みデータＦＩＦＯ２３０の中に格納される。
【００２４】
サブシステム２００はまた、バッファ２５０及びパッド２６０を備えている。バッファ２５０は外部メモリ・データ・バスを駆動するためのトライステート出力パッド・バッファで、パッド２６０はサブシステム２００を主記憶１５０に接続するために使われる。
【００２５】
図３及び図４はそれぞれ、３２ビットか６４ビットかいずれかのメモリ・バスを使ってメモリ１５０にデータを書き込む時のタイミング図である。データは、６４ビットのメモリ・バスが使われていれば１サイクルで転送されるのに対し、３２ビットのメモリ・バスではデータの転送に２サイクルを要する。
【００２６】
より具体的には、図３が３２ビットのメモリ・バスを使ってデータをメモリ１５０に書き込むタイミング図を表している。先ず、キャッシュ１１０が、参照番号３１０で示すように、メモリ１５０へのアクセスを求めてキャッシュ要求信号（ＣＣ Ｄ ＲＥＱ）１２８（ａ）を介して要求を送る。ＭＣＵ１２０は、参照番号３１５で示すように、（クロック３０５の立ち上がりエッジで）ＭＣ Ｄ ＲＥＱ ＡＣＫがハイになると、その要求の受取りを確認する。次に、メモリへのアクセスが可能であることが確認されれば、参照番号３２０で示すように、メモリ１５０に書き込まれるべきデータがＣＣ Ｄ ＢＵＳ１２６（ｂ）上に現われる。ひとたびデータがＣＣ Ｄ ＢＵＳ１２６（ｂ）上に現われれば、そのデータはクロック３０５の次の２サイクルで書き込みデータＦＩＦＯ２３０に転送される。参照番号３２５で示すように、ＭＣ Ｄ ＤＡ ＡＣＫ信号は、データが現在書き込みデータＦＩＦＯ２３０の中に書き込まれていることを示している。３２ビットのデータがＭＣＵ１２０に入力される度に、そのデータは書き込みデータＦＩＦＯ２３０の中に入れられる。
【００２７】
最初の３２ビットはクロック３０５の最初のサイクルで送られ（半クロック・サイクルにつき１６ビットの割合）、２番目の３２ビットはクロック３０５の２番目のサイクルで送られる。図２において、先ず、データの全６４ビットはマルチプレクサ２１０及び２２０への入力として動作する。クロック３０５の最初のサイクルで、最初の３２ビットがマルチプレクサ２１０、２２０から選択され、ＳＷ ＷＤ２１５、２１７を介して書き込みデータＦＩＦＯ２３０の中に保存される。２番目のクロック・サイクルで、２番目の３２ビットがマルチプレクサ２１０、２２０から選択され、ＳＷ ＷＤ２１５、２１７を介して書き込みデータＦＩＦＯ２３０の中に保存される。当業者は、上述のタイミング信号と前記システム１００が現在３２ビットの外部バスに連結されているとの情報に基づいて、マルチプレクサ２１０、２２０に必要な制御信号／論理を容易に生成することができるだろう。ひとたびデータが書き込みデータＦＩＦＯ２３０に保存されれば、外部データ・バス１４０が使用可能になり次第メモリ１５０に書き込まれる（格納される）。
【００２８】
必ずしもデータの全てがメモリ１５０に書き込まれなければならないとは限らない場合（例えば、読み出しー変更ー書き込み時）が多々ある。そのために、データ・マルチプレクサ・セレクト２４０が備えられている。図８Ａにおいて、データ・マルチプレクサ・セレクト２４０は、書き込みデータＦＩＦＯ２３０から主記憶１５０に転送中のデータからバイト集合を選択するスキームを備えている。読み出しー変更ー書き込み時、データの一部分だけが変更されるはずである。例えば、図８Ｂに示すように、Ｗ０の最初の８ビットだけが変更されている（斜線で示した部分）。先ず、全３２ビットがマルチプレクサのＡ−６４０からＤ−６１０の入力ＯＲＧ０−６６０からＯＲＧ３−６６６に入れられる。これらの入力データは、読み出しー変更ー書き込み動作の読み出しの部分から元々読み出されたデータである。このデータは変更されマルチプレクサＡ−６４０からＤ−６１０の他の入力ＮＥＷ０−６５０からＮＥＷ３−６５６に入れられる。本例が示すように、最初の８ビットだけが変更されており、データの残る２４ビットはメモリに格納されるべきではない。従って、データ線ＮＥＷ０−６５０がマルチプレクサＡ−６４０で選択され、マルチプレクサのＢ−６３０、Ｃ−６２０、及びＤ−６１０ではデータ線ＯＲＧ１−６６２、ＯＲＧ２−６６４、及びＯＲＧ３−６６６が選択されている。それはデータの変更部分を除いて、メモリから元々読み出されたデータを格納することを意味する。マルチプレクサＡ−６４０からＢ−６３０の出力を選択するための制御論理の構造並びに動作については当業者には明確になるであろう。
【００２９】
データ・マルチプレクサ・セレクト２４０は本発明の実現に不可欠ではないことを記しておく。本発明に基づく好適な一実施例で使用されているオプションにすぎない。
【００３０】
図３に示すタイミング図は３２ビットの外部バス１４０を介してメモリ１５０に書き込み中の２つの６４ビット・ワードの例を表すものである。サンプルの書き込みデータＦＩＦＯ３４０は４個の３２ビット・ブロックで表されている。この時点で、データは３２ビットのブロックで書き込みデータＦＩＦＯ３４０から外部データ・バス１４０上に送り出せる準備ができている。
【００３１】
図４は６４ビットの外部バスを使ってデータを主記憶１５０に書き込むためのタイミング図を示すものである。先ず、キャッシュ１１０がＭＣＵ１２０に対してデータをメモリ１５０に書き込めることの確認応答を要求する。ここでも、これは３５０でＣＣ Ｄ ＲＥＱがハイになることによって確認される。ＭＣＵ１２０は、３５５でＭＣ Ｄ ＲＥＱ ＡＣＫがハイになることによってその要求に応答するのであるが、その時点はデータがＣＣ Ｄ ＢＵＳ１２６（ｂ）上に送られる時点である。次のクロック・サイクル（参照番号３０５で表示）の初めに３２ビットのデータがＳＷ ＷＤ２１５及び２１７を介して書き込みデータＦＩＦＯ２３０に転送される。ここでも、書き込みデータＦＩＦＯ２３０がキャッシュ１１０からデータを受信中であることを確認するためにＭＣ Ｄ ＤＡ ＡＣＫ信号がハイになる。
【００３２】
３２ビットのメモリ・バスのタイミング制約と対照して、６４ビットを書き込みデータＦＩＦＯ２３０に転送するには１クロック・サイクルを要する。３２ビットが半サイクル毎に転送される。サンプルの書き込みデータＦＩＦＯ３７５は２個の６４ビット・ブロックで表されている。この時点で、データは６４ビットで外部データ・バス１４０上に送り出される準備ができている。
【００３３】
上述のごとく、図２において、データの全６４ビットはマルチプレクサ２１０及び２２０への入力として動作する。６４ビットの外部データ・バス１４０がシステム１００と連結されている場合、データの全６４ビットがマルチプレクサ２１０、２２０から選択される。従って、６４ビットのブロックが書き込みデータＦＩＦＯ２３０に格納される。最初の半クロック・サイクルで最初の３２ビットがＳＷ ＷＤ２１５に送られ、次の半クロック・サイクルで２番目の３２ビットがＳＷ ＷＤ２１７に送り出される。その結果、キャッシュ１１０から書き込みデータＦＩＦＯ２４０に６４ビットが転送されるのに１クロック・サイクルしか掛からない。
【００３４】
外部データ・バス１４０を介して３２ビットまたは６４ビットのデータ・ストリームを主記憶１５０に書き込むための上述の手順について、図９にその概略を示す。その手順は、ステップ７５０を除いて、３２ビット並びに６４ビットのデータ転送と全く同じであることを記しておく。システム１００が３２ビットの外部バスに連結されていればデータ転送には２サイクルを要し、システム１００が６４ビットの外部バスに連結されていればデータ転送は１サイクルしか掛からない。３２ビットだけのインプリメンテーションは６４ビット・インプリメンテーションのサブセットだから、両方に同じＭＣＵ１２０の制御論理を用いることができる。ＭＣＵ１２０の制御は、メモリ・バス１４０の輻に合わせて制御信号（即ち、マルチプレクサへの入力）を変えるように設計されている。当業者は上述のタイミング並びにハードウエア構成によって本発明を作動させるのに必要な制御論理を容易に生成できるだろう。
【００３５】
図５はデータを読み出す（即ち、情報のフェッチ）ためのメモリ・システムを示している。書き込み動作（ｗｒｉｔｅ  ｏｐｅｒａｔｉｏｎ）と同様のやり方で、キャッシュ１１０はデータの結果が６４ビットのブロックでキャッシュ１１０に戻されるように要求する。メモリ・ポート１２７が２つのロングワード（ｌｏｎｇ  ｗｏｒｄ）から成る読み出し要求をキャッシュ１１０に戻せば、１２８ビットをキャッシュ１１０に送るのにクロック５０５の２サイクルが掛かる。ＳＷ ＲＤバス４５０、４５５は、スレーブ・デバイス（メモリ・ポート１２７またはＩＯＵ１３０）からマスタ・デバイスに読み出しデータの結果を送るために使われる。キャッシュ１１０のタイミング制約があるために、このバスはダブル・ポンプ式ではない。データは、クロック５０５がハイの時だけに送られる。キャッシュ１１０はデータがクロック５０５の立ち下がりエッジで有効であることを要求する。データはクロック５０５がハイの時にポート１２７から受信されるから、ＳＷ ＲＤバス４５０、４５５がダブル・ポンプ式だったとしたら、キャッシュ１１０がデータを受け取るのは一番早くてクロック５０５の正のエッジにおいてで、クロック５０５の負のエッジにおいてではない。ＳＷ ＲＤバス４５０、４５５はダブル・ポンプ式ではないから、このバスはクロック５０５でのみアクティブ（トライステート型ではない）であり、２つのバス・ドライバが同時に同じ配線を駆動する、バス・バッファ競合の問題は生じない。
【００３６】
サブシステム４００は、またバッファ４４０及びパット４５０を含んでいる。バッファ４４０は、外部パッド電圧を内部論理電圧に変換するために使われ、パッド４５０はサブシステム４００を主記憶１５０に接続するために使われる。
【００３７】
第６及び図７は、それぞれ３２ビットと６４ビットのバス・モード用の、キャッシュ１１０への読み出しデータのタイミングを示すものである。図６は３２ビットの外部メモリ・バス１４０を使って主記憶１５０からデータを読み出すためのタイミング図である。先ず、３２ビットのデータが外部メモリ・バス１４０上を転送され、３２ビットのブロックで読み出しデータＦＩＦＯ４３０に入れられる。次に、そのデータは参照番号５１０及び５１２で表したデータ線ＳＷ ＲＤ上に送られる。参照番号５１５で示すように、ＭＣ Ｄ Ｂ ＶＬＤがハイになると、ＭＣ Ｄ ＢＵＳが使用可能になる。参照番号５２０で示すように、クロック５０５の次の立ち上がりエッジの始まりに続いて、キャッシュ１１０によって要求されたデータ／命令がその後にデータ・バス（ＭＣ Ｄ ＢＵＳ）１２６（ａ）／命令バス（ＭＣ Ｉ ＢＵＳ）１２６（ｃ）上にそれぞれ現われる。この時点で、データはキャッシュ１１０に転送中である。
【００３８】
図１及び図５において、３２ビットの外部バス１４０を使用する場合、データはポート１２７を通ってＭＣＵ１２０に入る。データはその後３２ビットのブロックで読み出しデータＦＩＦＯ４３０に格納される。初め、読み出しデータＦＩＦＯ４３０は空で、データ線の４５０、４５５は使用可能である。しかしながら、データ線ＳＷ ＲＤ［３１：０］４５０とＳＷ ＲＤ［６３：３２］４５５がひとたび使用不可になれば、データ線４５０、４５５が使用可能になる（３２ビット・モードではデータ線４５０だけが使われる）までデータは読み出しデータＦＩＦＯ４３０に格納されたままである。
【００３９】
データ線４５０が使用可能になり次第、読み出しデータＦＩＦＯ４３０内の最初の３２ビットはマルチプレクサ４１０、４２０に送られる。より具体的には、マルチプレクサ４２０は下位の３２ビットに係わり、マルチプレクサ４１０は上位の３２ビットに係わる。最初の３２ビットは読み出しデータＦＩＦＯ４３０からはじき出され、ＳＷ ＲＤ［３１：０］４５０を介してマルチプレクサ４２０に入力される。次に、２番目の３２ビットが読み出しデータＦＩＦＯ４３０からはじき出され、ＳＷ ＲＤ［６３：３２］４５５を介してマルチプレクサ４１０に送られる。ひとたびデータの全６４ビットがマルチプレクサ４１０、４２０に入力されれば、全６４ビットがマルチプレクサ４１０、４２０から選択され、ＭＣ Ｄ ＢＵＳ１２６（ａ）（場合によってはＭＣ Ｉ ＢＵＳ１２６（Ｃ））上を送られキャッシュ１１０に読み込まれる。
【００４０】
本発明に基づく別の実施例は、Ｉ キャッシュ１１３用のセットとＤ キャッシュ１１５用のセットの、別々のマルチプレクサ・セットを使って構成することが可能である。さらに、データ線ＳＷ ＲＤ［６３：３２］は３２ビット（低費用）インプリメンテーション用のオプションである。
【００４１】
図７は、６４ビットの外部バス１４０を使用する時のデータ読み出しのタイミング図を示すものである。先ず、外部データ・バス１４０からデータが読み出しデータＦＩＦＯ４３０に格納される。６４ビットの外部データ・バス１４０が使用されているから、読み出しデータＦＩＦＯ４３０に格納されているデータは６４ビット長のワードである。データは、データ線ＳＷ ＲＤ４５０、４５５が使用可能になるまで読み出しデータＦＩＦＯ４３０の中に留められる。ひとたびＳＷ ＲＤ４５０、４５５が使用可能になれば、参照番号５５０で示すように、全６４ビットがＳＷ ＲＤ４５０、４５５を介してマルチプレクサの入力に転送される。５５５で示すように、ＭＣ Ｄ Ｂ ＹＬＤがハイになると、参照番号５６０で示すように、データは続いてクロック５０５の次のサイクルでＭＣ Ｄ ＢＵＳ１２６（ａ）（場合によってはＭＣ Ｉ ＢＵＳ１２６（ｃ））上に送り出される。データはＭＣ Ｄ ＢＵＳ１２６（ａ）上を転送され要求側のキャッシュ１１０に送られる。
【００４２】
再び図５において、データが読み出しデータＦＩＦＯ４３０に入りデータ線４５０、４５５が使用可能になった後、データの全６４ビットはマルチプレクサ４１０、４２０に入力される。下位の３２ビットはデータ線ＳＷ ＲＤ［３１：０］４５０を介してマルチプレクサ４２０に入力され、上位の３２ビットはデータ線ＳＷ ＲＤ［６３：３２］４５５を介してマルチプレクサ４１０に入力される。全６４ビットがデータ線のＳＷ ＲＤ［３１：０］４５０及びＳＷ ＲＤ［６３：３２］４５５に入力された後、データはマルチプレクサ４１０、４２０から選択され、キャッシュ１１０に回送（ｆｏｒｗａｒｄ）される。
【００４３】
外部データ・バス１４０を介して主記憶１５０から３２ビットまたは６４ビットのデータ・ストリームを読み出すための上述の手順について、図１０にその概略を示す。ここでも、ステップの８５０、８６０、及び８７０を除いて、手順は３２ビット、６４ビット共に全く同じであることを記しておく。システム１００が３２ビットの外部バスに連結されていればデータ転送にはロングワード（６４ビット）につき２サイクル掛かり、システム１００が６４ビットの外部バスに連結されていればデータ転送にはロングワードにつき１サイクルに掛かる。当業者は、今までに説明したタイミングやハードウエア構成に基づいて本発明を作動させるのに必要な制御論理を簡単に生成するであろう。
【００４４】
スイッチ読み出しバス（ＳＷ ＲＤ）が使用できない時データは読み出しデータＦＩＦＯ４３０に入れられる。データは常に書き込みデータＦＩＦＯ２３０に入れられ、メモリのタイミング要件に従って読み出される。外部バス１４０あるいはＳＷ ＲＤバスがその時点で他のポートによって使用されていれば、次の書き込みまたは読み出しのデータは、それぞれ一時的に書き込みデータ２３０か読み出しデータ４３０に押し込められる。要求バスが使用可能になる（即ち、外部バス１４０かＳＷ ＲＤが開放される）と、データがその特定のＦＩＦＯからはじき出され、主記憶１５０か、または要求を出しているキャッシュ１１０かＩＯＵ１３０か、いずれかに転送される。一方、データが書き込みデータＦＩＦＯ２３０または読み出しデータＦＩＦＯ４３０に到着する時点で要求バスが使用可能ならば、データは直ちにそれぞれのＦＩＦＯを通してデータ線上を転送される。
【００４５】
メモリ・システムは、６４ビットのデータ・パス（ｄａｔａ  ｐａｔｈ）が６４ビットと３２ビットのどちらのモードでも作動するように設計されている。ソフトウエアはどちらのシステム構成が使われるか選択することができる。６４ビットと３２ビットのチップでは、３２ビット・モードの制御動作は同じである。根本的に、制御論理とデータ・パスは、３２ビットの外部バスに接続され３２ビット・モードで走るように構成されているシステムと類似している。しかしながら、３２ビット外部バスが使われていると、スイッチ１２５の上位ビット及び書き込みデータＦＩＦＯ２３０か読み出しデータＦＩＦＯ４３０の上位ビットは使用されない（即ち、ＳＷ ＷＤ［３１：１６］とＳＷ ＲＤ［６３：３２］は無視される）。だが、上に説明したように、制御論理は同じである。
【００４６】
本発明に基づく設計の良さを十分に活かすためには、書き込みデータＦＩＦＯ２３０と読み出しデータＦＩＦＯ４３０は、いつでもデータ集合を少なくとも２つ以上格納できるものでなければならない。その場合、１データ集合は転送対象のデータの最大ブロックに等しい。これにより、最初のデータ集合が外部バス１４０上に送り出されている時点で外部バス１４０が既にアクセスされている時、２番目のデータ集合は直ちに外部バス１４０上に送り出せる状態になっていることが保証される。従って、外部バス１４０上に送り出される最初のデータ集合と２番目のデータ集合との間に決まった時間のずれ（ｌａｇ  ｔｉｍｅ）はない。
【００４７】
その上、本発明は完全にスケーラブル（例えば、６４／１２８ビット）である。従って、当業者は様々なビット転送の組み合わせでデュアル幅のメモリ・バンド幅に対応するシステムを容易に設計することができる。さらに、本発明はマルチ幅のメモリ・バスを意図するものである。従って、当業者が上記の本発明が教えるところを活用し、例えば、３２ビット、６４ビット、さらには１２８ビットの外部データ・バスに対応する構成になったシステムを容易に設計することができることを意図している。従って、本発明が教えるところを活かせば１つのシステムに取り入れることができる外部データ・バス幅の組み合わせは無限である。
【００４８】
当業者は本発明の教えるところをコンピュータ・ベースのシステムのどんなタイプのバスにも適用できるものと思われる。例えば、本発明はデュアル幅のＩ／Ｏバスに適用することができるし、さらに外部バスに限らず、内部バスにも適用可能である。
【００４９】
本発明は、具体的に実施例において図解し説明してきたが、当業者には、本発明の精神並びに適用範囲から外れることなく、その形態及び詳細において様々な変更が可能なことが理解されるであろう。
【図面の簡単な説明】
【００５０】
【図１】本発明に基づくシステム・アーキテクチャ１００の概略ブロック図である。
【図２】キャッシュ１１０の主記憶１５０への書き込み（格納）のための回路ブロック図である。
【図３】３２ビットのメモリバスにおけるキャッシュ書き込み（格納）データのタイミングを表すものである。
【図４】６４ビットのメモリバスにおけるキャッシュ書き込み（格納）データのタイミングを表すものである。
【図５】主記憶１５０からキャッシュ１１０への読み出し（フェッチ）のための回路ブロック図である。
【図６】３２ビットのメモリ・バスの読み出しデータのタイミング図である。
【図７】６４ビットのメモリ・バスの読み出しデータのタイミング図である。
【図８】図２に示すデータ・マルチプレクサ・セレクト２４０の詳細な回路図である。
【図９】データ・ストリームを主記憶１５０に書き込むための概略フローチャートである。
【図１０】主記憶１５０からデータ・ストリームを読み出すための概略フローチャートである。
【符号の説明】
【００５１】
１００…システム、１０５…ＣＰＵ、１１０…ＣＣＵ、１２０…ＭＣＵ、１３０…ＩＯＵ、１４０…ソモリ・バス、１５０…メモリ
【図１】
2004185639.tif 000003
【図２】
2004185639.tif 000004
【図３】
2004185639.tif 000005
【図４】
2004185639.tif 000006
【図５】
2004185639.tif 000007
【図６】
2004185639.tif 000008
【図７】
2004185639.tif 000009
【図８】
2004185639.tif 000010
【図９】
2004185639.tif 000011
【図１０】
2004185639.tif 000012