(57)【特許請求の範囲】
【請求項１】
メモリ・コントローラと、
前記メモリ・コントローラに含まれる内部メモリ・サブシステム及び前記メモリ・コントローラの外部の外部メモリ・サブシステムを有し、ここで、前記内部メモリ・サブシステム及び前記外部メモリ・サブシステムは前記メモリ・コントローラによって制御される、共通ディスプレイ・メモリ及びメイン・メモリと、
前記内部メモリ・サブシステム及び前記外部メモリ・サブシステムに動作上結合された多用途メモリ・チャネルと、
前記メモリ・コントローラに結合され、前記多用途メモリ・チャネルを動的に割り付けるよう構成されたメモリ・チャネル・データ・スイッチと、
前記メモリ・チャネル・データ・スイッチ及び前記メモリ・コントローラに動作可能的に結合され、前記メモリ・チャネル・データ・スイッチ及び前記メモリ・コントローラへの制御信号を出力するよう構成された中央処理ユニット（ＣＰＵ）サブシステム・コントローラとを含む、コンピュータシステム。
【請求項２】
外部メモリ・サブシステムを前記多用途メモリ・チャネルに選択的に結合するよう構成されたマルチプレクサを更に有する請求項１記載のコンピュータシステム。
【請求項３】
前記内部メモリ・サブシステム及び前記外部メモリ・サブシステムのうちの少なくとも一方はメイン・システム・メモリとして機能し得るよう構成されたディスプレイ・メモリ・サブシステムである請求項２記載のコンピュータシステム。
【請求項４】
前記内部メモリ・サブシステム及び前記外部メモリ・サブシステムのうちの少なくとも一方はメイン・システム・メモリとして機能し得るよう構成されたディスプレイ・メモリ・サブシステムである請求項１記載のコンピュータシステム。
【請求項５】
前記内部メモリ・サブシステム及び前記外部メモリ・サブシステムのうちの少なくとも一方は複数のデータ記憶素子を含むデータ・マニピュレータを備えている請求項１記載のコンピュータシステム。
【請求項６】
完全な描画バッファを更に有し、前記完全な描画バッファは、グラフィックス・エンジンが表示出力データを記憶し、該表示出力データをその後の表示更新のため転送できるようにするよう構成されている、請求項１記載のコンピュータシステム。
【請求項７】
コンピュータ・ディスプレイと、完全な描画バッファと、グラフィックス・エンジンとを更に有し、前記グラフィックス・エンジンは、前記コンピュータ・ディスプレイへの出力のために前記描画バッファ中に出力データを記憶し、該出力データをその後、表示更新のため前記コンピュータ・ディスプレイに転送することができるよう構成されている、請求項１記載のコンピュータシステム。
【請求項８】
ディスプレイと、
メモリ・コントローラと、
前記メモリ・コントローラ内に含まれ、これと協力的に結合するよう構成された少なくとも一つの内部メモリ・サブシステム及び前記メモリ・コントローラの外部にあり、これと協力的に結合するよう構成された少なくとも一つの外部メモリ・サブシステムとを有し、ここで、前記内部メモリ・サブシステム及び前記外部メモリ・サブシステムは前記メモリ・コントローラによって制御される、共通ディスプレイ・メモリ及びメイン・メモリと、
前記共通ディスプレイ・メモリ及びメイン・メモリに動作上結合された複数のメモリ・チャネルであって、該複数のメモリ・チャネルのうち少なくとも一つが多用途メモリチャネルとして構成されている複数のメモリ・チャネルと、
前記メモリ・コントローラ及び前記複数のメモリ・チャネルに動作可能的に結合され、
前記少なくとも一つの内部メモリ・サブシステム及び前記少なくとも一つの外部メモリ・サブシステムの間で前記複数のメモリ・チャネルのうちの選択されたものを割り付けるよう構成されたメモリ・チャネル・データ・スイッチと、
前記メモリ・チャネル・データ・スイッチ及び前記メモリ・コントローラに動作可能的に結合され、前記メモリ・チャネル・データ・スイッチ及び前記メモリ・コントローラに加えられるべき出力信号を生成するよう構成された中央処理ユニット（ＣＰＵ）サブシステム・コントローラと、
前記ＣＰＵサブシステム・コントローラ、前記メモリ・チャネル・データ・スイッチ及び前記メモリ・コントローラに動作可能的に結合され、前記メモリ・チャネル・データ・スイッチ及び前記メモリ・コントローラに出力信号を提供するよう構成されているグラフィックス／描写及びディスプレイ・サブシステムと、
前記ＣＰＵサブシステム・コントローラ、前記グラフィックス／描画及びディスプレイ・サブシステムに動作可能的に結合され、前記ＣＰＵサブシステム・コントローラに、並びに、前記グラフィックス／描画及びディスプレイ・サブシステムに出力信号を提供するよう構成されているアービトレーション及び制御エンジンと、
前記メモリ・チャネル・データ・スイッチ、前記メモリ・コントローラ並びに前記アービトレーション及び制御エンジンに動作可能的に結合され、前記メモリ・チャネル・データ・スイッチ、前記メモリ・コントローラ、並びに前記アービトレーション及び制御エンジンに出力信号を提供するよう構成された周辺バス・コントローラとを含む、コンピュータシステム。
【請求項９】
前記少なくとも一つの内部メモリ・サブシステム及び前記少なくとも一つの外部メモリ・サブシステムのうちの少なくとも一つがＤＲＡＭメモリを備えている、請求項８記載のコンピュータシステム。
【請求項１０】
前記少なくとも一つの内部メモリ・サブシステム及び前記少なくとも一つの外部メモリ・サブシステムのうちの少なくとも一つは複数のデータ記憶素子を含むデータ・マニピュレータを備えている請求項８記載のコンピュータシステム。
【請求項１１】
前記少なくとも一つの内部メモリ・サブシステム及び前記少なくとも一つの外部メモリ・サブシステムのうちの少なくとも一つは複数のデータ記憶素子を含むデータ・マニピュレータを備えている請求項９記載のコンピュータシステム。
【請求項１２】
コンピュータ・ディスプレイと、完全な描画バッファと、グラフィックス・エンジンとを更に有し、前記グラフィックス・エンジンは、前記コンピュータ・ディスプレイへの出力のために前記描画バッファ中に出力データを記憶でき、該出力データをその後、表示更新のため前記コンピュータ・ディスプレイに転送できる、請求項８記載のコンピュータシステム。
【請求項１３】
メモリ・コントローラと；
前記メモリ・コントローラに含まれる内部メモリと；
前記メモリ・コントローラの外部の外部メモリとを含み、ここで、前記内部メモリ及び前記外部メモリは前記メモリ・コントローラによって制御され；
前記内部メモリ及び前記外部メモリに結合された多用途メモリ・チャネルと；
前記メモリ・コントローラに結合され、前記多用途メモリ・チャネルを動的に割り付けるよう構成されたスイッチと；
前記スイッチ及び前記メモリ・コントローラに結合され、前記スイッチ及び前記メモリ・コントローラへの制御信号を出力するよう構成された中央処理コントローラとを含む、
コンピュータシステム。
【請求項１４】
メモリ・コントローラと、
前記メモリ・コントローラに含まれる内部メモリ及び前記メモリ・コントローラの外部の外部メモリを有する共通ディスプレイ・メモリ及びメイン・メモリとを含み、ここで、前記内部メモリ及び前記外部メモリは前記メモリ・コントローラによって制御され、
前記内部メモリ及び前記外部メモリに結合されたメモリ・チャネルと、
前記メモリ・コントローラに結合され、前記多用途メモリ・チャネルを動的に割り付けるよう構成されたスイッチであって、ここで前記多用途メモリ・チャネルの動的割り付けは前記内部メモリ及び前記外部メモリを共有することによってメモリ容量使用に関して当該コンピュータ・システムを最適化するものである、スイッチと、
前記スイッチ及び前記メモリ・コントローラに結合され、前記スイッチ及び前記メモリ・コントローラへの制御信号を出力するよう構成された中央処理コントローラとを含む、
コンピュータシステム。
【請求項１５】
メモリの割り付けを制御するデバイスであって：
メモリ・コントローラと；
前記メモリ・コントローラに含まれる第一のメモリとを有しており；
前記第一のメモリは多用途メモリ・チャネルに結合されるよう構成されており、
前記多用途メモリ・チャネルは前記メモリ・コントローラの外部の第二のメモリに結合されており、ここで、前記第一のメモリ及び前記第二のメモリは前記メモリ・コントローラによって制御され、前記メモリ・コントローラはスイッチに結合されており、前記スイッチは前記多用途メモリ・チャネルを動的に割り付けるよう構成されており、ここで前記少なくとも一つの多用途メモリ・チャネルの動的割り付けは前記第一のメモリ及び前記第二のメモリを共用することによってメモリ容量使用に関して当該デバイスを最適化するものであり、前記メモリ・コントローラは前記スイッチに結合された中央処理コントローラに結合されるよう構成され、前記中央処理コントローラは前記スイッチ及び前記メモリ・コントローラへの制御信号を出力するよう構成されている、
デバイス。
【請求項１６】
メモリ・デバイスであって：
メモリ・コントローラに含まれるよう構成された第一のメモリと；
前記メモリ・コントローラの外部にあるよう構成された第二のメモリとを有しており、ここで、前記第一のメモリ及び前記第二のメモリは前記メモリ・コントローラによって制御され；
前記第一のメモリ及び前記第二のメモリは共通のメイン・メモリ兼ディスプレイ・メモリであり、メモリ・チャネルに結合されるよう構成されており、前記メモリ・チャネルはスイッチにより動的に割り付けられるよう構成されており、ここで前記メモリ・チャネルの動的割り付けは前記第一のメモリ及び前記第二のメモリを共用することによってメモリ容量使用に関して当該メモリ・デバイスを最適化するものであり、前記スイッチは前記メモリ・コントローラに結合されており、前記メモリ・コントローラ及び前記スイッチは中央処理コントローラに結合されており、前記中央処理コントローラは前記メモリ・コントローラ及び前記スイッチへの制御信号を出力するよう構成されている、
メモリ・デバイス。
【請求項１７】
メモリの割り付けを制御する方法であって：
コントローラからメイン・メモリ及びディスプレイ・メモリの少なくとも一つへのアクセスのための要求を受信する段階であって、ここで前記メイン・メモリ及び前記ディスプレイ・メモリは共通のメモリであって、共用されるよう構成されている、段階と；
実行されるべき動作を判定する段階と；
実行されるべき前記動作に従って、前記メイン・メモリ及び前記ディスプレイ・メモリの前記少なくとも一つを割り付ける段階とを有し、
前記共通のメモリが前記コントローラの内部のメモリおよび前記コントローラの外部のメモリを含み、前記内部および外部のメモリがいずれも前記コントローラによって制御される、
方法。
【発明の詳細な説明】
関連出願
本願は、１９９７年７月１日に出願された発明の名称が“Computer System Having a Common Display Memory And Main Memory”である同時係属中の米国特許出願第０８／８８６，２３７号の一部継続出願であり、この関連出願は参考のため引用される。
発明の背景
１．発明の分野
本発明は、一般的にコンピュータシステム用のメモリアーキテクチャに係わり、特に、内部メモリ及び外部メモリコントロールにより構成されたメモリサブシステムに関する。
２．従来技術の説明
典型的なパーソナルコンピュータシステムは、外部メインメモリを備えた中央処理ユニット（ＣＰＵ）と、専用メモリサブシステムを備えたグラフィックスディスプレイサブシステムとを有する。このメモリサブシステムの一部はディスプレイに出力を供給するフレームバッファであり、このサブシステムの一部はオフ・スクリーン動作のために使用してもよい。しかし、グラフィックスディスプレイサブシステムメモリと、メインシステムのメモリのプールは、データを効率的に共用しないか、若しくは、一方のメモリサブシステムから他方へデータを効率的に転送しない。
別の典型的なパーソナルコンピュータシステムは、ＣＰＵとグラフィックスサブシステムの両方のために単一のメモリサブシステムを有する。このタイプのコンピュータシステムの性能は、グラフィックスディスプレイサブシステム用とＣＰＵ用に別々のメモリサブシステムを有するコンピュータシステムの性能よりも劣る。単一の外部メモリシステムがＣＰＵ用のキャッシュメモリをサポートし得るとしても、メモリ帯域幅はグラフィックスサブシステムとＣＰＵサブシステムの間で共用されるので、全体的な性能は依然として劣る。これらのコンピュータシステムは、ＣＰＵ及びグラフィックスの両方のサブシステムに対し優れた性能を達成する能力の点で非常に制限される。費用効果率を保つため、これらのシステムは典型的に、グラフィックス動作の特殊な性能要求のため最適化されていない低価格のメインメモリを使用する。
ディスプレイの全てのリフレッシュ及び描画動作を行うため単一の外部メモリサブシステムを使用するシステムの場合、性能は、ＣＰＵのためのメモリ帯域幅と共用される上記動作のためのメモリ帯域幅によって拘束される。「リフレッシュ」は、フレームバッファメモリに格納された情報を取得し、次に、モニター、テレビジョン又はフラット形パネルディスプレイのような出力装置に表示するため、情報を行単位でパレットディジタル・アナログ変換器（ＤＡＣ）に転送することを表す一般的な用語である。フレームバッファの全ての内容は、表示された画像が可視化されるように出力装置へ連続的に転送されるべきである。モニターの場合、このリフレッシュは典型的に毎秒７５乃至９５回ずつ実行される。高解像度カラーシステムの場合、リフレッシュ過程は、メモリから利用可能な総帯域幅の中のかなりの部分を消費する。
リフレッシュ帯域幅に加えて、グラフィックスサブシステムは、帯域幅のかなりの量を消費する描画動作を行う。２次元グラフィックスアクセラレーションの場合に、描画動作は、Ｂｉｔ−ＢＬｔ（ビットブロック転送）と、線描画と、同じ共通メモリプールを使用する他の動作とを含む。
インテル社並びにパーソナルコンピュータの他の企業は、次世代周辺ポート（ＡＧＰ）バスと、グラフィックスとチップセットを組み合わせるための関連したシステムアーキテクチャとを設計した。ＡＧＰは、メインメモリコントローラチップセットとグラフィックスディスプレイサブシステムとの間の第２の個別バスである。ＡＧＰ及び関連したシステムアーキテクチャは、３次元テクスチャメモリをグラフィックスサブシステムによってアクセスされ得るメインメモリに格納できるようにさせる。これは、共用メインメモリをグラフィックス機能のため使用する一つの限定された用法である。しかし、グラフィックスサブシステムとメインメモリコントローラチップセットとの間には、単一のバスが存在するので、このバスはシステム性能を制限する。この単一のバスは、グラフィックスコントローラへの全てのＣＰＵコマンドと、ＣＰＵによるディスプレイデータの直接的な読み書き、メインメモリからの全てのテクスチャの取り出し、及び、ＣＰＵ又はＩ／Ｏサブシステムから発生または受信された他のディスプレイ情報（すなわち、捕捉チップ又はデコーダからのビデオデータ）の転送とによって共用される。
ＡＧＰは、ディスプレイリフレッシュ及び描画動作のためメインメモリサブシステムを使用することによる上記の性能限界を克服するため設計される。ＡＧＰシステムは、ＡＧＰバス上のグラフィックスサブシステムがスクリーンのリフレッシュ及び描画動作に対し別個のフレームバッファメモリサブシステムを有するという粗い強制的な要求によってこれらの制限を解決する。フレームバッファメモリの使用は、描画及びリフレッシュ動作と関連した性能ペナルティーを減少させる優れた解決法である。その間、フレームバッファは常に必要とされるので、ＡＧＰシステムはスクリーンリフレッシュがメインシステムメモリから行われることを許容しない。このため、メインメモリからスクリーンの全部又は一部のリフレッシュ動作は最適化できない。
さらに、描画動作はグラフィックスディスプレイメモリで行われる必要があるので、グラフィックスサブシステムコントローラによって行われる。また、専用フレームバッファのフレキシビリティは制限され、グラフィックスサブシステムコントローラはメインシステムメモリに描画できない。
フレームバッファメモリをメインシステムメモリから分離することは、入出力（Ｉ／Ｏ）システムデータを２倍にする。例えば、このことは、ビデオデータがシステムコントローラを通るＩ／Ｏバスを介してシステムに入り、次に、メインシステムメモリに格納されるシステムで生じる。データが表示される場合、そのデータはフレームバッファに複写される必要がある。これにより、データの２回目のコピーが行われ、データの転送のために余分な帯域幅が必要になる。
別の代替案は、Ｉ／Ｏデータがフレームバッファに転送される箇所にグラフィックスコントローラと関連した外部バスを具備することである。これにより、システムバスを介した余分な転送は行わなくても済むが、データはディスプレイサブシステム側に残されたままである。ＣＰＵ又はメインＩ／Ｏシステムはシステムバスを使用することなくこのデータにアクセスすることができない。共用メモリサブシステムを備えたシステムの場合、Ｉ／Ｏデータは共用メモリ領域に収容される。したがって、Ｉ／Ｏデータはディスプレイサブシステム又はＣＰＵのいずれからでも利用可能である。
図１は、標準的な先行技術のメモリアーキテクチャ１００の略構成図である。ＣＰＵサブシステム１０２はサブシステム１０４に接続され、サブシステム１０４は、外部システムランダムアクセスメモリ（ＲＡＭ）１１０及び外部コンポーネントインタフェース（ＰＣＩ）バス１１２に接続される。サブシステム１０４はシステムコントローラ１０６及びグラフィックスコントローラ１０８を含み、グラフィックスコントローラ１０８はディスプレイ（図１に図示しない）に接続される。システムは、グラフィックスディスプレイとＣＰＵ１０２の両方のための単一の外部メモリサブシステム１１０を有する。
図２は、ＣＰＵ用とグラフィックスディスプレイ用の別個のメモリを有する現状の技術レベルのパーソナルコンピュータのメモリアーキテクチャ２００の略構成図である。ＣＰＵサブシステム２０４は、外部システムＲＡＭ２１０及びＰＣＩバス２１６に接続されたシステムコントローラ２０６に接続される。また、システムコントローラ２０６は専用ＡＧＰバス２１４を介してグラフィックスコントローラ２０８に接続され、グラフィックスコントローラ２０８は、コントローラの外部又はコントローラに内蔵されたグラフィックスＲＡＭ２１２と、ディスプレイ２０２とに接続される。ＣＰＵサブシステムはシステムＲＡＭ２１０の拡張としてグラフィックスＲＡＭ２１２を取り扱えず、グラフィックスサブシステム２０８はディスプレイのリフレッシュのためシステムメモリ２１０を使用できない。
内部及び外部メモリを結合し、共通メモリがディスプレイメモリ及びメインメモリのため使用することができ、性能を低下させる共通メモリへの不適切な帯域幅のアクセスが回避された統合型システムコントローラが必要とされる。
発明の概要
本発明は、一つ以上の大帯域幅のメモリサブシステムを有し、その中の一部のメモリサブシステムはコントローラの外部に設けられ、一部のメモリサブシステムはコントローラの内部に設けられているメモリアーキテクチャである。各大帯域幅のメモリサブシステムは共用され、複数のバスを介してディスプレイサブシステム、中央処理ユニット（ＣＰＵ）サブシステム、入出力（Ｉ／Ｏ）バス及び他のコントローラに接続される。ディスプレイサブシステムは、高速メモリサブシステムから種々のビデオ及びグラフィックスタイプのデータを受信するように構成され、ディスプレイのリフレッシュのためそのデータを処理する。付加的なバッファ及びキャッシュがシステム性能を最適化するため使用される。ディスプレイリフレッシュパスは、メモリサブシステムからのデータをディスプレイに出力するため処理し、ここで、データは、Ｉ／Ｏサブシステム、ＣＰＵサブシステム又はグラフィックスサブシステムから共用メモリサブシステムに入る。
【図面の簡単な説明】
図１は先行技術のコンピュータシステム用メモリアーキテクチャの構成図であり、
図２は別の先行技術のコンピュータシステム用メモリアーキテクチャの構成図であり、
図３は、統合型メモリと外部メモリとからなる共通のディスプレイメモリ及びメインメモリを有するコンピュータシステムの一実施例の構成図であり、
図４は、共通のディスプレイメモリ及びメインメモリを備えたシステムの一実施例の構成図であり、
図５は、共通のディスプレイメモリ及びメインメモリを備えた新しい改良型システムの全機能の実施例を示す構成図であり、
図６は、内部メモリチャネル及び外部メモリチャネルを備えたデータスイッチの一実施例の構成図であり、
図７は４×４形クロスバー方式データスイッチの一実施例の構成図であり、
図８はアービトレーション及びデータスイッチ制御アーキテクチャの一実施例の構成図であり、
図９はマルチバンク形ＩＲＡＭサブシステムの一実施例の構成図であり、
図１０は、行方向バッファを具備した単一バック形ＩＤＲＡＭを含むＩＲＡＭサブシステムの一実施例の構成図であり、
図１１は、多数の行方向バッファを個々に使用する多数のＩＲＡＭサブシステムを具備したデータスイッチの一実施例の構成図であり、
図１２は、メインメモリのアーキテクチャとは無関係にグラフィックス描画及びディスプレイサブシステムに非常に厳密に適用されるＩＲＡＭメモリアーキテクチャの構成図である。
好ましい実施例の詳細な説明
本発明は、システムコントローラの内部及び外部の両方に設けられた一つ以上の共用大帯域幅メモリサブシステムである。各大帯域幅のメモリサブシステムは、複数のバスを介してディスプレイサブシステム、中央処理ユニット（ＣＰＵ）サブシステム、入出力（Ｉ／Ｏ）バス及び他のコントローラに接続される。ディスプレイサブシステムは、処理及びディスプレイリフレッシュのため高速メモリサブシステムから種々のビデオ及びグラフィックスタイプのデータを受信する。付加的なバッファ及びキャッシュがシステムを最適化するサブシステムのため使用される。
図３は、本発明の一実施例のシステム３００のブロック構成図であり、同図には改良型システムコントローラ３１０に接続されたＣＰＵサブシステム３０８が示され、改良型システムコントローラ３１０は、メモリチャネル（ＥＭＣ１）３２２を介してメモリサブシステム３１４に接続され、メモリチャネル（ＥＭＣ２）３２４を介してメモリサブシステム３１８に接続される。改良型システムコントローラ３１０は、入出力ブリッジ３１２と、ディスプレイ出力装置３３０と、ＰＣＩバス３３２と、次世代外部ポート（ＡＧＰ）３３４と、高速シリアルＩ／Ｏポート３３６とに接続される。改良型システムコントローラに一体化されているのは付加的な内部メモリサブシステムであり、各内部メモリサブシステムは専用の制御及びデータチャネルを備えている。
低コストのマルチメディアパーソナルコンピュータシステムは、ディスプレイメモリ及びメインシステムメモリの面で一つ以上の共通メモリサブシステムを共用するため、メモリ帯域幅に関してシステムを最適化することにより実現される。図３において、共通メモリサブシステムは、利用可能な帯域幅の共用、並びに、メモリプールの共用を可能にさせる。共用メモリサブシステムの帯域幅は、ディスプレイ動作、又は、主ＣＰＵ及びメインＩ／Ｏシステムの何れかに割り付けることが可能である。共通のメモリプールは、テクスチャ若しくはバッファのようなディスプレイメモリを支援するため、アプリケーション及び動作システムに依存して割り付けられる。或いは、共通のメモリプールは、ＣＰＵコード、データ、若しくは、システム内のＩ／Ｏ装置のための周辺システムスワップ領域を支援するため、システムの残りの部分に割り付けても良い。また、共通のメモリプールは、内部若しくは外部のいずれの場合も、ディスプレイサブシステムと他のシステムの両方の機能によって使用される共通データと共に動的に共用される。
図４は本発明の一実施例のシステム４００のブロック構成図であり、このシステム４００は、グラフィック／描画及びディスプレイサブシステム４０４に接続されたＣＰＵサブシステムコントローラ４０２と、メモリチャネルデータスイッチ及び制御ユニット４０６と、アービトレーション及び制御ユニット４０８と、周辺Ｉ／Ｏ制御ユニット４４０とを含む。ＣＰＵサブシステムコントローラ４０２はＣＰＵサブシステム（図示しない）にも接続される。グラフィック／描画及びディスプレイサブシステム４０４は、ディスプレイ装置（図示しない）と、メモリチャネルデータスイッチ及び制御ユニット４０６と、アービトレーション及び制御ユニット４０８とに接続される。メモリチャネルデータスイッチ４０６はＩＭＣチャネル４２５を介して内部メモリサブシステム４５０に接続される。メモリチャネルデータスイッチ及び制御ユニット４０６は、メモリチャネル（ＭＣ１）４２６及びメモリチャネル（ＭＣ２）４２８（図示しない）に接続される。周辺Ｉ／Ｏ制御ユニット４４０はＩ／Ｏブリッジ４３０（図示しない）に接続される。
図４の実施例には２本データバスが示されている。一方のデータバス（ＤＡＴＡ１）４２０は、主として共通メモリにアクセスするためＣＰＵサブシステムによって使用される。第２のデータバス（ＤＡＴＡ２）４２２は、主としてグラフィックス描画及びディスプレイサブシステム４０４によって使用される。２本のデータバスを有することにより、ＣＰＵコントローラ４０２と、グラフィックス描画及びディスプレイサブシステム４０４の両方の並列的なメモリへのアクセスが可能になる。周辺及びＩ／Ｏコントローラ４４０はＣＰＵコントローラ４０２、又は、グラフィックス描画及びディスプレイサブシステム４０４の何れかのデータバスを共用する。
本実施例には共用アドレス及び制御（Ａ＆Ｃ）バス４２４が示されている。アービトレーション及び制御ユニット４０８は、ＣＰＵサブシステムコントローラ４０２、グラフィックス描画及びディスプレイサブシステム４０４、並びに、周辺及びＩ／Ｏ制御ユニット４４０からの要求に応答し、それらのメモリアクセスをスケジューリングする役割がある。アービトレーション及び制御ユニット４０８は、要求を知的に処理するコンフィギュレーション及び状態レジスタ（図示しない）の組を含む。さらに、要求プロトコルは、要求元によって要求されたデータの量を指定する。アービトレーション及び制御ユニット４０８は、２本のデータバスの並列性を最大化し、転送の長さを最適化し、要求の待ち時間がシステム性能を制限しないことを保証する目的で要求を処理する。
これらの競合する目的を満たすため、アービトレーション及び制御ユニット４０８はメモリチャネルの状態及び要求の待ち時間を追跡する。アービトレーション及び制御ユニット４０８は、サブシステムからの単一の要求をメモリチャネルへの多数の要求に分解する。これにより、待ち時間及びメモリバーストが最適化される。また、要求中のサブシステムは、システムスループットの不均衡化を考慮することなく、かつ、Ａ＆Ｃバス４２４の再利用を必要とすることなく、非常に長いデータのバーストを要求する。
図５は、改良型ＣＰＵサブシステムコントローラ５０４の一実施例のシステム５００のブロック図である。ＣＰＵサブシステムコントローラ５０４は、データバス５３２を介してメモリチャネルデータスイッチ及びコントローラ５１２に接続され、制御バス５４２を介してアービトレーション及び制御ユニット５１８に接続される。システム５００はグラフィック／描画プロセッササブシステム５０６を更に有し、グラフィック／描画プロセッサシステム５０６は、データバス５３４を介してメモリチャネルデータスイッチ及びコントローラ５１２に接続され、制御バス５４６を介してアービトレーション及び制御ブロック５１８に接続される。システム５００は、ディスプレイプロセッササブシステム５０８を更に有し、ディスプレイプロセッササブシステム５０８は、データバス５３６を介してメモリチャネルデータスイッチ及びコントローラ５１２に接続され、制御バス５４８を用いてアービトレーション及び制御ユニット５１８に接続される。また、図５に示されたメモリチャネルデータスイッチ及びコントローラ５１２は、データバス５３０によって統合型プロセッサ５１０に接続され、データバス５３８によって周辺バス制御ユニット５１４に接続され、データバス５４０によって直接Ｉ／Ｏ制御ユニット５１６に接続され、データスイッチ制御ユニット５２０にも接続される。メモリチャネルデータスイッチ及びコントローラ５１２は、内部メモリチャネル（ＩＭＣ１）５２２〜内部メモリチャネル（ＩＭＣＮ）５２４と、外部メモリチャネル（ＥＭＣ１）５２６〜外部メモリチャネル（ＥＭＣＭ）５２８とのための出力を有する。
図５に示されている周辺バス制御ユニット５１４は、制御バス５５０を介してアービトレーション及び制御ユニット５１８に接続され、ＰＣＩバス５５４とＡＧＰバス５５６の２本のバスに接続される。直接Ｉ／Ｏ制御ユニット５１６は、制御バス５２０によってアービトレーション及び制御ユニット５１８に接続され、Ｉ／Ｏブリッジ５５８と、高速シリアルＩ／Ｏポート５６０とに接続される。図５に示された統合型プロセッサ５１０は、制御バス５４４によってアービトレーション及び制御ユニット５１８に接続される。
図５に示されたシステム５００は、図４に示された基本システム４００の非常に拡張された実施例である。システム５００は、非常に潜在的に並列性のあるデータバスと、付加的なＡ＆Ｃバスと、統合型プロセッサ５１０のような付加的な要求元サブシステムとを含む。グラフィックス描画及びディスプレイプロセッサは、２個の要求元サブシステムであるグラフィックス描画プロセッササブシステム５０６及びディスプレイプロセッササブシステム５０８とに分割され、各サブシステムはメモリチャネルデータスイッチ及びコントローラユニット５１２へのパスと、アービトレーション及び制御ユニット５１８へのパスとを備えている。多数のグラフィックス描画プロセッササブシステム５０６は、より複雑なシステムでは個々のサポート多重データパスに分割される。ディスプレイプロセッササブシステム５０８は別個のデータパスを含む。
図５に示された統合型プロセッサ５１０は、任意の数の機能を実効する。それらの機能には、例えば、３次元グラフィックスのための幾何及び照明用エンジン、ＭＰＥＧ−２方式デコーダ、オーディオプロセッサ、又は、あるタイプのオーディオ若しくはビデオ圧縮エンジンが含まれる。上記のサブシステムは、いずれプロセッサとローカルメモリとを含む。図５のシステムの実施例として階層的なメモリ構造を実現することが可能であり、ＩＲＡＭサブシステムを含む別個のメモリチャネルデータスイッチは、多数のグラフィックス／描画プロセッササブシステム及びディスプレイプロセッササブシステムと非常に密接に連結され得る。
図６は、サブシステムチャネルのＡチャネル６１０、Ｂチャネル６１２、Ｃチャネル６１４〜Ｚチャネル６１６を、メモリチャネルのＩＭＣ１チャネル６１８、ＩＭＣ２チャネル６２０、ＩＭＣ３チャネル６２２〜ＩＭＣＮチャネル６２４と、ＥＭＣ１チャネル６２６、ＥＭＣ２チャネル６２８、ＥＭＣ３チャネル６３０〜ＥＭＣＭチャネル６３２とに接続するデータスイッチ６０２の一実施例６００の構成図である。Ｎ個の内部メモリサブシステムである第１のＩＲＡＭサブシステム６３４、第２のＩＲＡＭサブシステム６３６、第３のＩＲＡＭサブシステム６３８〜第ＮのＩＲＡＭサブシステム６４０が存在し、夫々の制御及びデータバス（内部メモリチャネル）には、ＩＭＣ１バス６１８からＩＭＣＮバス６２４のラベルが付けられている。さらに、ＥＭＣ１バス６２６からＥＭＣＮバス６３２までのラベルが付けられたＭ個の外部メモリサブシステムバス（外部メモリチャネル）が示されている。各メモリチャネルは、制御及びデータパス構造からできる限り独立している。データスイッチ６０２は、サブシステムデータチャネルのＡチャネル６１０〜Ｚチャネル６１６が一部のメモリチャネルに並列的にアクセスすることを許可する。
図７には、４×４形クロスバーデータスイッチ７００の一実施例が示されている。Ａサブシステム７０２、Ｂサブシステム７０４、Ｃサブシステム７０６及びＤサブシステム７０８用のシステムコントローラ出力は、ＳＮＡスイッチ７１８、ＳＮＢスイッチ７２０、ＳＮＣスイッチ７２２及びＳＮＤスイッチ７２４を用いて、ＭＣ１メモリチャネル７１０、ＭＣ２メモリチャネル７１２、ＭＣ３メモリチャネル７１４及びＭＣ４メモリチャネル７１６に選択的にルーチングすることができ、整数Ｎは１、２、３若しくは４のいずれでも構わない。スイッチの実際のコンフィギュレーションは実施例毎に変化するが、図７には、４台のサブシステムコントローラと４本のメモリチャネルとに対する完全な能力が示されている。クロスバーデータスイッチ７００は、同時に４本の別個のデータパスがスイッチを通ることを許容する。何れかのコントローラが一つのメモリチャネルを利用するとき、他のコントローラは別の３個のメモリコントローラにアクセスすることが阻止されない。
クロスバースイッチは、双方向若しくは一方向のいずれにも設計することができる。一方向スイッチの場合、読み出し側スイッチの組と、書き込み側スイッチの組の両方の組が必要とされる。システム内の全てのスイッチがクロスバースイッチのように複雑ではなくても構わない。非常に簡単なスイッチ及びマルチプレクサＭＵＸベースのスイッチを使用し、良好な全体性能を得ることが可能である。最も簡単なケースでは、スイッチは、サブシステムチャネルとメモリチャネルの間の接続点でもよい。簡単なスイッチアーキテクチャは、特に、図９及び図１０に夫々示されるようなマルチバンク及び多重行バッファコンフィギュレーションのため使用される。
例えば、サブシステムＡがチャネルＭＣ３にアクセスしている場合、スイッチＳ３Ａはアクティブである。並列的に、サブシステムＢは、スイッチＳ４Ｂが閉じられた状態でチャネルＭＣ４にアクセスし、サブシステムＣはスイッチＳ１Ｃを介してチャネルＭＣ１にアクセスし、サブシステムＤはスイッチＳ２Ｄを介してチャネルＭＣ２にアクセスする。サブシステムが別のサブシステムによって使用中のメモリチャネルに接続する必要がある場合、その接続は阻止され、待機させられる。
図８は、アービトレーション及びデータスイッチ制御アーキテクチャ８００の一実施例の構成図である。コンフィギュレーションレジスタ８０２及び状態レジスタ８０４は、入力８５０からのアドレスと、入力８５２からのリード信号と、入力８５４からのライト信号と、入力８５６からのデータとを受信し、制御情報を制御バス８１６を介してメモリチャネル要求ユニット８０６と、スイッチサブシステム制御ユニットのＡユニット８０８、Ｂユニット８１０〜Ｍユニット８１２とに出力する。メモリチャネル要求ユニット８０６は、ＭＣＲＡメモリサブシステム８１８、ＭＣＲＢメモリサブシステム８２０、ＭＣＲＣメモリサブシステム８２２〜ＭＣＲＮメモリサブシステム８２４の各メモリサブシステムに対し制御ライン上に信号を生成する。スイッチサブシステム制御ユニット（Ａ）８０８は、Ｓ１Ａライン８２６、Ｓ２Ａライン８２８、Ｓ３Ａライン８３０〜ＳＮＡライン８３２上に信号を生成する。スイッチサブシステム制御ユニット（Ｂ）８１０は、Ｓ１Ｂライン８３４、Ｓ２Ｂライン８３６、Ｓ３Ｂライン８３８〜ＳＮＢライン８４０上に信号を生成する。スイッチサブシステム制御ユニット（Ｍ）８１２は、Ｓ１Ｍライン８４２、Ｓ２Ｍライン８４４、Ｓ３Ｍライン８４６〜ＳＮＭライン８４８上に信号を生成する。各制御ブロックはＮ本の制御ラインを有する。図７に示された４×４形スイッチの場合、Ｎ及びＭは共に４である。
コンフィギュレーションレジスタ８０２はサブシステムコントローラの性質を反映するように設定される。これらの特性は、バースト長、待ち時間許容量及び他のアドレッシング情報を含む。コンフィギュレーション情報は、メモリチャネル情報のためにも必要である。状態レジスタ８０４は、スイッチサブシステムコントローラ８０８、８１０及び８１２からのペンディング要求、並びに、メモリチャネル８１８、８２０、８２２及び８２４の状態を追跡する。
アービトレーションコントローラユニット８１４は、各サブシステム８０８、８１０及び８１２からメモリ要求を受信する。状態情報としてコンフィギュレーションレジスタ８０２情報を使用することにより、アービトレーションコントローラユニット８１４は、適当な時間に要求を承認し、メモリ要求を循環させるためメモリチャネル要求ユニット８０６、並びに、スイッチサブシステムコントローラ８０８、８１０及び８１２に信号を送る。
アービトレーションコントローラユニット８１４は、最大の待ち時間許容量を有するサブシステムが拘束されないことを保証する。また、アービトレーションコントローラユニット８１４は、最良の性能を得るためシステムの総帯域幅を最大限に広げる。一部の場合に、バーストは分解されないので、メモリチャネルの使用を完了することができる。他の場合に、単一のサブシステムコントローラ要求は分解され、多数のメモリチャネルアクセスによって満たされる。
図９は、メモリサブシステムコントローラ（ＭＳＣ）９６０と、データマルチプレクサ（ＭＵＸ）９１０と、多数のメモリバンク９２０、９３０、９４０及び９５０とを含む内部メモリサブシステム９００の一実施例を表す図である。ＭＳＣ９６０は、サブシステムコントローラがメモリサブシステムと関連したアドレス範囲内でメモリアクセスを要求するとき、ライン９５８を介してメモリチャネル要求を受信する。ＭＳＣ９６０は、データ要求を遂行するため、マルチプレクサ９１０及びＩＲＡＭバンク（９２０〜９５０）を制御する。リードの場合、ＭＳＣ９６０は、要求されたデータを収容するＩＲＡＭバンクを判定し、ＩＭＣデータバス９０２が適切なＩＲＡＭバンクからデータを受信するようにＭＵＸ９１０を調節する。
ＭＳＣ９６０は種々のサイズのデータ要求を取り扱う必要がある。ＩＲＡＭバンクの幅はＩＭＣデータパス９０２の幅とは無関係である。ＭＳＣ９６０は、適切なデータが適切な順序でＩＭＣ９０２に転送されることを保証するため、ＭＵＸ９１０の論理を使用する。これは、ＭＳＣ９６０がＩＲＡＭバンク９２０〜９５０を介して利用可能な幅広のデータパスの利点を活かすために有効な手段である。
また、メモリバンクのコンフィギュレーションは、高速な順次アクセスを可能にする。メモリのバンクは、記憶セルの行列形式の配列として定義される。典型的にＤＲＡＭの場合、配列の全ての行は一回のアクセスでイネーブルにされる。これにより、その行内の任意のデータを直ちにアクセスすることが可能になる。ＩＲＡＭの同一バンク内の異なる行アドレスへのアクセスが行われる場合、「プレチャージ」ペナルティが導入され、アクセスは遅延される。このような状況の出現を阻止するため、本例ではメモリサブシステムに多数のバンクが利用される。
内部メモリサブシステムを単独のバンクとして設計し得る場合に、多数のメモリバンクを使用する場合に対し性能上の利点がある。図９には、マルチプレクサ９１０によって単一の内部メモリチャネル（ＩＭＣ）９０２上で多重化されたＩＲＡＭバンク９２０〜９５０の４個のＩＲＡＭバンクが示されている。これにより、内部チャネルメモリ（ＩＭＣ）９０２の有効スループットが改良される。例えば、ＩＲＡＭバンク（９２０〜９５０）は、インターリーブ式であり、順次的なアクセスが異なるバンクに対し行われる。これは、特に、ＩＲＡＭバンクが最大ＩＭＣデータレートよりも遅い場合に有用である。
ＤＲＡＭの場合に、ＩＲＡＭバンク（９２０〜９５０）は、バンク内のページモードアクセスの利点を活かし、ページ境界を横切る時にバンクを変更することによりページミスペナルティを隠すために、バンク毎にインターリーブされる。ＩＲＡＭサブシステム用のメモリシーケンサは、メモリアクセスパターンに基づいて帯域幅を最大限に広げるためバンクを管理する。これには、新しいバンクがアクセスされたときにＤＲＡＭバンクをプレチャージ処理すること、或いは、メモリの各ブロックでページをアクティブに保持することが含まれる。
データバス９０２は、付加的なスイッチを通過するのではなく、処理又はＩ／Ｏサブシステムデータバスに直結される。このため、付加的なスイッチングのレベルが節約される。ＩＲＡＭバンクデータがこのタイプのコンフィギュレーションにおいて共用され得るように、ＩＲＡＭバンクは付加的なマルチプレクサ（図示しない）に接続してもよい。各付加的なマルチプレクサはＩＲＡＭバンクを別個の処理又はＩ／Ｏサブシステムデータバスに接続する。
図１９は、メモリサブシステムコントローラ（ＭＳＣ）１０２２と、ＩＤＲＡＭの単一バンク１００２と、双方向行バッファ１００４〜１０１８の組と、オプションのマルチプレクサ（ＭＵＸ）１００２２とを含むメモリサブシステム１０００の一実施例を示す図である。ＭＳＣ１０２２は、オプションのＭＵＸ１０２０と、行バッファ１００４〜１０１８と、ＩＤＲＡＭ１００２との間の相互作用を制御する。要求は、ＩＭＣ１０２６〜１０３２と関連したコントローラによって実現される。ＭＳＣ１０２２は、所与の内部メモリサブシステム１０００のメモリアドレスレンジに対応したデータに対するライン１０２４上のメモリチャネル要求を受信する。ＭＳＣ１０２２は、ＩＤＲＡＭバンク１００２と行バッファ１００４〜１０１８との間のデータ転送を制御し、並びに、行バッファ１００４〜１０１８と、ＩＭＣへのライン１０２６上の行バッファデータの選択のためのオプションのＭＵＸ１０２０との間の転送を制御する。
ＭＳＣ１０２２が新しいリード要求を受信したとき、ＭＳＣ１０２２は要求されたデータを格納するＩＤＲＡＭ配列１００２にアクセスする。ＩＤＲＡＭ配列からの完全なデータの行は、行バッファに転送され、行バッファからオプションのＭＵＸ１０２０を介してライン１０２６に沿ってＩＭＣに転送される。データの系列に対する要求の場合、行バッファデータは、要求がＩＭＣ１０２６上でバースト方式で満たされるようにルーチングされる。全ての行データは行バッファに残る。
ＭＳＣ１０２２は、同様の方法で、他の行バッファに格納されたデータに影響を与えることなく、異なる行に対する次のデータ要求を実施する。これらの要求は、同一のＩＭＣに対する要求でも、異なるＩＭＣに対する要求でも構わない。対応したデータが既に行バッファに存在するアドレスに対するデータリードが発生したとき、行バッファは付加的なＩＤＲＡＭバンク１００２へのアクセスを必要とすることなく、リード要求を直ちに実施する。高速アクセスのため、行バッファには多数のデータ行が含まれているので、メモリサブシステムへの典型的なアクセスパターンに対し著しく高い性能が得られる。
ＭＳＣ１０２２は、同様の方法でメモリサブシステムへの書き込の制御を取り扱う。キャッシュコントローラ設計の分野の当業者は、ＩＤＲＡＭデータが行バッファ１００４〜１０１８に一時的にキャッシュされることにより以下の複雑さが生じることを知っている。データ書き込みが既に行バッファに存在するデータの行に対し行われる場合、書き込みは行バッファに対し行われるだけであり、行バッファには最新のデータのコピーが行われた旨の標識が付けられる。この標識は「不正（dirty）」とも称され、データがある時点でＩＤＲＡＭ配列に格納され、そのデータの行に対する次の読み出しが既に配列に存在する「失効（stale）」データではなく、最新の「不正」データを用いて行われるべきことを要求するときに重要である。
「不正」データが配列にもう一度書き込まれたとき、別の実装上のトレードオフが生じる。同様に、行バッファ内に同時に収容されていないアドレスに対するデータ書き込みのため実装上のトレードオフを設計する必要がある。主要な選択肢は「書き込み時の割付」であり、この場合、完全な行が配列から読み出され、その行に対する書き込みが行われる。より簡単な実装は、現時点で行バッファに存在しないロケーションに関するＩＤＲＡＭバンク１００２への「ライトスルー」データ書き込みである。
メモリロケーションに対応する行バッファの割付に関する実装の詳細は、性能と、実装の簡単さとのトレードオフで決まる。最も簡単なケースでは、行バッファは、潜在的なメモリ配列の行の中の固定数の行に「直接的に割り当て」される。最もフレキシブルかつ複雑なケースでは、行バッファは何れかのＩＤＲＡＭ行に対応し、「完全に結合（fully associative）」していると称される。「規定の結合（set associative）」の割当の設計の中間的な複雑さは、２本以上の行バッファが固定されたＩＤＲＡＭ行の組毎に対応する場合に実現可能である。
別の複雑さは、行バッファ置換アルゴリズムを実装する必要がある予め決められた完全に結合的な割当スキームから得られる。２本以上の行バッファは所定の行アクセスに対するデータを収容し得るので、アルゴリズムは新しいアクセスのため置換すべき行バッファを選定する必要がある。好ましい実施例は、「最先使用」（ＬＲＵ）タイプの置換アルゴリズムを採用する。
単一バンクのＩＤＲＡＭ１００２の設計は、面積及び電力の節約の点でマルチバンク設計よりも幾つかの利点がある。単一バンクのＩＤＲＡＭ１００２からより優れた性能を得るため、一時的な行バッファ１００４〜１０１８がメモリのリード及びライトを記憶するため使用される。これらの一時的な行バッファ１００４〜１０１８は、メモリバンクに多重ポートを与える。
多重ポート化は、特に、従来よりビデオＲＡＭ（ＶＲＡＭ）で使用されている２重ポート方式の拡張である。ＶＲＡＭは、ランダムアクセスポートと、シリアルアクセスポートの両方のポートを含む。シリアルアクセスポートは、ＲＡＭ配列から単一サイクルにロードされたシリアルアクセスメモリ（ＳＡＭ）からのデータを使用する。ＶＲＡＭは、ＳＡＭデータ及びランダムデータの両方のデータを同時にアクセスすることを可能にする。また、ＶＲＡＭは、データがＳＡＭにシリアルに入力され、単一サイクルでメインＲＡＭに転送されることを可能にする。
行バッファはＳＡＭと同じ汎用的な機能を実施する。行バッファは、ＳＡＭレジスタと同様に、ＲＡＭの非常に幅広い行全域の内容を単一サイクルで行バッファに転送させることができる。ＶＲＡＭシステム内のＳＡＭへのシリアルアクセスとは相違して、オンチップの行バッファの場合、内部メモリチャネルへのデータパスは任意の幅に決めることができる。さらに、データ制御論理がデータパスに含まれているので、ＤＲＡＭバンクからのデータは選択されたＩＭＣ１０２６〜１０３２に中の最適なデータライン上で転送される。
異なるサブシステムは行バッファを別々に使用する。ディスプレイリフレッシュのような機能に対し、リフレッシュコントローラはメモリアドレス要求を行う。対応したメモリの行は行バッファに転送される。メモリコントローラは要求された量のデータを行バッファからリフレッシュコントローラに転送する。メモリ転送は、典型的に完全な行バッファの内容よりも少ないデータを必要とする。リフレッシュコントローラが次の順番の要求を実施するとき、データは既に転送準備ができた行バッファに存在する。
非グラフィックスアプリケーションにおけるＣＰＵサブシステムは、ＩＤＲＡＭバンクに対応したメモリアドレスからキャッシュラインの充填を実行する。ＩＤＲＡＭ行は行バッファに転送され、キャッシュラインデータはキャッシュデータチャネルの中を転送される。行バッファは、おそらく、キャッシュラインサイズよりも大きいので、同じ行バッファアドレスレンジに対応した任意の付加的なキャッシュラインの充填は、ＩＤＲＡＭバンクに再度アクセスすることなく満たされる。
また、多数の行バッファは、所定の時間に有効なデータを収容する。異なる行バッファへのアクセスは、有効なデータを収容するアクティブ行バッファに戻る能力を失うことなく順番に行われる。上記の二つの例を用いることにより、行バッファ１（ＲＢ１）の部分的な読み出しが、スクリーンリフレッシュの一部としてＩＭＣへのライン１０２６上で行われる。リフレッシュは、次に、ＩＭＣ１０２６を介した転送の次のバーストとしてＲＢ１から続けられる。
ＩＭＣデータバス１０２６〜１０３２は、付加的なスイッチを通るのではなく、処理又はＩ／Ｏサブシステムデータバスに直結することができる。これにより、付加的なスイッチングのレベルが節約される。同様に、行バッファデータライン１０４０〜１０５４は、オプションのＭＵＸ１０２０を通過させることなく、選択的に処理又はサブシステムデータバスに直結することができる。或いは、行バッファデータライ１０４０〜１０５４は、オプションのＭＵＸ１０２０を通過させるのではなく、システムデータスイッチに直結させてもよい。
図１１は、サブシステムデータチャネルＡ〜Ｚを含むシステム１１００を示す図であり、サブシステムデータチャネルＡ〜Ｚは、データスイッチ１１１０によって、内部メモリチャネル（ＩＭＣ）１１１２〜１１１４、並びに、内部メモリサブシステム及び外部メモリチャネル（ＥＭＣ）１１１６、１１１８に接続される。各ＩＤＲＡＭサブシステムは、ＩＤＲＡＭバンク１１２０と、メモリサブシステムコントローラ（ＭＳＣ）１１３０と、行バッファの組１１４０と、適当な行バッファデータをＩＭＣ１１１２及び以下に説明するオプションのデータ操作器（データ・マニピュレータ）１１６０に転送するマルチプレクサ（ＭＵＸ）１１５０とを含む。
本実施例は、前述の実施例に対し、多数の行バッファを個々に含む多数のＩＤＲＡＭバンクを組み合わせるハイブリッド方式である点で改良されている。図１１に示される如く、内部メモリサブシステム１１０２、１１０４の各サブシステムは、ＩＤＲＡＭのバンクに対応した行バッファを含む。データスイッチ１１１０は、各ＩＤＲＡＭメモリサブシステムへの１個以上のチャネルを有し、ＩＭＣ１１１２、１１１４が行バッファに多重化される。ＭＳＣは、行バッファ並びに対応したＩＭＣチャネル１１１２、１１１４と共にＩＤＲＡＭデータの適切な行バッファへの転送の制御を担う。或いは、データスイッチ１１１０は、各ＩＤＲＡＭバンクからの行バッファをサブシステムデータチャネルに直接的に多重化してもよい。
また、各ＩＤＲＡＭメモリサブシステム１１０２、１１０４に示されるように、例えば、オプションのデータ操作器（ＤＭ）１１６０が設けられる。データ操作器１１６０は、第２のキャッシュ処理レベルとして作用する記憶素子と、簡単な算術論理ユニット（ＡＬＵ）とを含み、ＭＳＣ１１３０によって制御される。ＩＤＲＡＭメモリサブシステム１１０２内にデータ操作器１１６０を含める利点は、より高い性能が得られることである。データ操作器１１６０は、行バッファの幅以上の幅を有し、ＩＭＣ１１１２、１１１４の幅を増加させる必要はなく、データスイッチ１１１０を通過するデータのレートよりも高いレートで動作する。この局所最適化は、ＩＤＲＡＭバンク内で行われる動作の性能を改良する。２個以上のＩＤＲＡＭバンクにデータを収容する動作は、依然として、データスイッチ１１１０のデータパスを利用する必要がある。
ＭＳＣ１１３０はＤＭ１１６０を制御可能であり、リード・モディファイ・ライト（読み出し・変更・書き込み）動作のようなＩＭＣ１１１２を介した動作は、簡単な書き込み動作によってＩＤＲＡＭメモリサブシステム内で満たされ得る。参考のため引用された米国特許第５，５４４，３０６号には、これを実現するための技術が記載されている。引用文献によれば、フレームバッファダイナミックランダムアクセスメモリは、Ｚバッファ比較及び赤・青・緑（ＲＧＢ）アルファ混合のようなリード・モディファイ・ライト動作を書き込みだけの動作に変換する。
図１２には、メインメモリアーキテクチャとは独立したグラフィックス描画及びディスプレイサブシステムに適用されたＩＲＡＭメモリアーキテクチャ１２００が示されている。多重バンク式、行バッファ式又は組合せ型ハイブリッド方式は、非常に高性能のグラフィックシステムを完成させるため、多数のグラフィックス描画エンジン及びローカルディスプレイコントローラと組み合わされる。各グラフィックス／描画プロセッサ（ＧＤＰ）１２２０、１２３０、１２４０及び１２５０は、データスイッチ１２１０へのパスを有する。また、ディスプレイプロセッササブシステム及びメインメモリへのパスは、データスイッチ１２１０への接続点（１２９２及び１２９４）を有する。各ＩＤＲＡＭサブシステムは、図面を参照した前述の説明の通り、多数のメモリバンクと、行バッファと、データ操作器との組合せでもよい。
ＧＤＰはディスプレイ用の画像データを操作するため並列に動作する。各ＧＤＰは、ローカルレジスタ、バッファ及びキャッシュメモリを含む。各ＧＤＰは異なるＩＲＡＭサブシステムデータに関して動作し、或いは、多数のＧＤＰは一つのＩＲＡＭサブシステムのデータに関して動作し得る。ＧＤＰは、変換、照明、セットアップ及びレンダリングのような完全なグラフィックスパイプライン処理の役割を担う。或いは、各ＧＤＰは、グラフィックスパイプライン処理の中の一段階を実施してもよい。理想的にＧＤＰは充分にフレキシブルであり、実施される特定のアプリケーションに依存して、システムは最も効率的なコンフィギュレーションで動作する。
多数のＧＤＰがデータをレンダリング処理する場合、レンダリングされたデータはフレームバッファを表現する規則的な構造であるとは限らない。ディスプレイプロセッサシステム（ＤＰＳ）は、マッピング情報が与えられ、種々の記憶されたレンダリング情報からディスプレイ情報を再生することができる。ＤＰＳは走査線毎に画像を再生するので、データを送出し、適切に表示することが可能である。また、ＤＰＳは、ＧＤＰよりも裏側のパスで行う方が適しているスケーリング及びフィルタリングのような動作を実施する。
メインメモリデータスイッチへのパスは、ＧＤＰとＤＰＳの両方で使用される。ＧＤＰの場合に、大量の記憶容量を必要とする大きなテクスチャ又は他の要素は、ＧＤＰによって読み込まれ処理される。ある種の場合に、未加工データ若しくは処理されたデータはＩＲＡＭサブシステムでキャッシュされ、或いは、データは簡単に使用され、得られた結果が局所的に記憶される。ディスプレイプロセッササブシステムは、出力表示を構成するためメインメモリへのパスを利用する。出力は、ＧＤＰ、並びに、メインシステムメモリに記憶されるビデオデータのような他の素子からのデータにより構成される。ＤＰＳは、ＩＲＡＭサブシステム又はメインメモリに記憶されたデータから走査線毎に出力を構成する。
図１２に示されたアーキテクチャはグラフィックスには関係のないシステムにも拡張することができる。多数のグラフィックス／描画プロセッサの代わりに、システムは多数のコンピュータエンジンを包含してもよく、各コンピュータエンジンは、専用レジスタ、ローカルメモリ若しくはキャッシュメモリを必要に応じて備えている。上述のＩＲＡＭサブシステムアークテクチャは、多数のコンピュータエンジンの全体で実施される計算的に複雑なアルゴリズムに対する性能の改善に同等に適用可能である。コンピュータエンジンは同時性のため異なるデータ要素に関して並列に動作し得る。或いは、コンピュータエンジンは、処理全体の中の各段階を個別に直列的に実行してもよい。上記の方法が利用され得るアプリケーションには、信号処理、圧縮、伸長及び通信が含まれる。
共通ディスプレイメモリ及びメインメモリを備えた改良型システムは、好ましくは、メモリサブシステム毎に別個の制御部と、多数のプロセッサ又は周辺サブシステムからの要求を受けるアービトレーションコントローラと、メモリデータパスとを含み、付加的なプロセッサ又は周辺サブシステムが他のメモリサブシステムにアクセスすることを禁止することなく、メモリサブシステムによってメモリデータがプロセッサ又は周辺サブシステムに供給される。
改良型システムは部分的な描画バッファを含み、グラフィックスエンジンが表示出力データの一部を書き込み、ディスプレイフレームが処理された後に次の表示の更新中に使用するため表示出力データの一部を共通メモリサブシステムに転送することができる。改良型システムは、好ましくは、完全な描画バッファを含み、グラフィックスエンジンは完全な表示出力データを記憶し、次の表示更新のため表示出力データを転送することができる。
改良型システムは、好ましくは、３次元グラフィックス機能を実施するためのグラフィックスコントローラと、グラフィックスコントローラ用のデータを供給するためのテクスチャキャッシュと、グラフィックスコントローラがデータを引き出し得る順序バッファとを含む。３次元グラフィックスコントローラに関して、３次元処理の主要な一面は、所与のフレームの間に可視的な対象物、したがって、対象物の画素を決めることである。所与の３次元画像中の多数の対象物は、他の対象物の画素によって視点から遮られる。適当な対象物からの画素が正面にあり、適切に表示されることを保証するため、３次元システムは、一般的にＺバッファ又は順序バッファと称されるバッファを含む。順序バッファは、新しい対象物の三角形又は画素が視点に対する位置に基づいて所与のフレームの間に表示されるべきかどうかを決定するため使用される。順序付けが行われるグラフィックスパイプライン処理において、最終的にシーンの間に見えない画素を描くために必要とされる計算は少なくなる。しかし、完全な三角形のレンダリングを行い、画素毎に基づいて、順序バッファ内の値に基づいて表示を更新すべきかどうかを決定する方が簡単な場合もある。
単一の３次元コントローラを備えたシステムの場合、順序バッファへのアクセスは主要な帯域幅の考慮事項である。したがって、テクスチャの場合と同様に、順序情報のためのキャッシュ又はバッファを備えている方が有利である。多数の３次元コントローラを備えたシステムの場合に、各３次元コントローラは、計算負荷を均衡させ、システムスループットを増加させるため、非同期的に動作することが許容される。各コントローラにアクセス可能な順序バッファは、非同期処理を行なうと共に、各対象物からの適当な画素を可視化させることが可能である。
当業者は、本発明がアプリケーションとは無関係に開示されたサブシステムに直列若しくは並列に接続された付加的なサブシステムと共に実施され得ることを認めるであろう。したがって、本発明は請求の範囲の欄の記載だけによって制限される。
【図１】
0004511638.tif 000002
【図２】
0004511638.tif 000003
【図３】
0004511638.tif 000004
【図４】
0004511638.tif 000005
【図５】
0004511638.tif 000006
【図６】
0004511638.tif 000007
【図７】
0004511638.tif 000008
【図８】
0004511638.tif 000009
【図９】
0004511638.tif 000010
【図１０】
0004511638.tif 000011
【図１１】
0004511638.tif 000012
【図１２】
0004511638.tif 000013