(57)【特許請求の範囲】
【請求項１】
複数のアクセス制御信号がそれぞれ割り当てられ、互いに独立してアクセス可能な複数のメモリバンクと、
前記複数のアクセス制御信号にそれぞれ対応する複数のデコード条件が設定され、それらデコード条件とＣＰＵからのメモリアドレスとの一致の有無を検出し、一致したデコード条件に対応するアクセス制御信号線を付勢してメモリバンクを選択するアドレスデコーダと、
前記複数のメモリバンクそれぞれのメモリサイズを検出する手段と、
メモリサイズの大きいバンクほどＣＰＵのメモリアドレス空間の若い方に配置されるように前記複数のメモリバンクをメモリサイズ順に前記メモリアドレス空間に再配置し、このメモリ配置に従って前記複数のメモリバンクそれぞれに割り当てるべきメモリアドレス範囲を決定するメモリ再配置手段と、
前記複数のメモリバンクのメモリ配置に従って、ページインタリーブ可能な２以上のメモリバンクの組み合わせを決定する手段と、
前記組み合わせに属するメモリバンクがページ単位で交互にアクセスされるように、前記組み合わせに属するメモリバンクそれぞれに対応するアクセス制御信号線のデコード条件を、前記組み合わせに属するメモリバンク全体のアドレス範囲に属する全てのメモリアドレス値それぞれを示す２値データに共通に存在するビット列と、各メモリバンクのページ内アドレスとページ指定アドレスとの間の所定ビット列とに従って決定して、前記アドレスデコーダに設定する手段とを具備することを特徴とするコンピュータシステム。
【請求項２】
前記アドレスデコーダは、
前記複数のアクセス制御信号線それぞれに対応する複数のデコード条件を示す複数のビット列が設定されるレジスタ群と、
前記複数のアクセス制御信号線に対応してそれぞれ設けられた複数のデコード回路とを有し、
各デコード回路は、それに対応するアクセス制御信号線のデコード条件を示すビット列と前記ＣＰＵからのメモリアドレスとの一致の有無を検出し、一致した際にアクセス制御信号線を付勢することを特徴とする請求項１記載のコンピュータシステム。
【請求項３】
前記各メモリバンクは複数のＤＲＡＭチップから構成されたＤＲＡＭバンクであり、
前記各アクセス制御信号線は、前記ＤＲＡＭバンクのＤＲＡＭチップに共通接続されるロウアドレスストローブ信号線であることを特徴とする請求項１記載のコンピュータシステム。
【請求項４】
前記メモリサイズ検出手段は、
ＤＲＡＭバンク毎にそのカラムアドレスサイズおよびロウアドレスサイズの少なくとも一方を検出し、その検出したアドレスサイズに基づいて各ＤＲＡＭバンクのメモリサイズを決定するアドレスサイズ検出手段を含むことを特徴とする請求項３記載のコンピュータシステム。
【請求項５】
前記ＣＰＵからのメモリアドレスをアクセス対象のＤＲＡＭバンクに対応するロウアドレスおよびカラムアドレスに分解して出力するアドレス出力手段をさらに具備し、
このアドレス出力手段は、
前記メモリアドレスからロウアドレスを切り出すための切り出し開始位置を前記ＲＡＳ信号線毎に指定する複数のパラメタ値がセットされるレジスタ群と、
前記アドレスデコーダによって付勢されたロウアドレスストローブ信号線に応じて前記レジスタ群から１つのパラメタ値を選択し、その選択されたパラメタ値に従って前記メモリアドレスからロウアドレスを切り出す手段とを含むことを特徴とする請求項３記載のコンピュータシステム。
【請求項６】
前記ＣＰＵからのメモリアドレスをアクセス対象のＤＲＡＭバンクに対応するロウアドレスおよびカラムアドレスに分解して出力するアドレス出力手段をさらに具備し、
このアドレス出力手段は、
前記メモリアドレスからロウアドレスを切り出すための切り出し開始位置を前記ＲＡＳ信号線毎に指定する複数のパラメタ値がセットされるレジスタ群と、
このレジスタ群にセットされた複数のパラメタ値に応じて、前記メモリアドレスからロウアドレスをそれぞれ切り出す複数のロウアドレス切り出し手段と、
これら複数のロウアドレス切り出し手段の後段に接続され、前記アドレスデコーダによって付勢されたロウアドレスストローブ信号線に応じて前記複数のロウアドレス切り出し手段の出力の１つを選択する手段とを含むことを特徴とする請求項３記載のコンピュータシステム。
【請求項７】
前記ＣＰＵのメモリアドレス空間には前記複数のＤＲＡＭバンク以外のメモリを配置するための予約領域が確保されており、
前記アドレスデコーダの前段に設けられ、前記予約領域の直前および直後のＤＲＡＭバンク間でそれらに割り当てられるメモリアドレスが連続されるように、前記ＣＰＵのメモリマップに応じて、前記ＣＰＵからのメモリアドレスをＤＲＡＭバンク専用のＤＲＡＭ論理アドレスに変換するアドレス変換手段をさらに具備し、
前記アドレスデコーダは、前記アドレス変換手段によって変換されたＤＲＡＭ論理アドレスと前記各デコード条件との一致の有無を検出することを特徴とする請求項３記載のコンピュータシステム。
【請求項８】
前回のメモリアクセス時におけるＣＰＵからのメモリアドレスを保持し、そのメモリアドレスと次回のメモリアクセス時におけるＣＰＵからのメモリアドレスとを比較し、その比較結果に応じてページヒットの有無を判定するページヒット判定手段をさらに具備することを特徴とする請求項３記載のコンピュータシステム。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、例えばパーソナルコンピュータ等のコンピュータシステムに関し、特に複数のＤＲＡＭバンクを効率良くアクセスするための改良がなされたメモリ制御ロジックを含むコンピュータシステムに関する。
【０００２】
【従来の技術】
近年、携行が容易でバッテリにより動作可能なノートブックタイプまたはラップトップタイプのポータブルパーソナルコンピュータが種々開発されている。この種のパーソナルコンピュータにおいては動作速度の高速化が望まれており、最近では、大規模なキャッシュを内蔵する高性能マイクロプロセッサがＣＰＵとして使用され始めている。
【０００３】
キャッシュ内蔵のマイクロプロセッサをＣＰＵとして使用した場合には、メインメモリのアクセス回数を減らすことができ、ある程度はシステム動作性能の向上を図ることができる。
【０００４】
しかしながら、ＣＰＵがキャッシュを内蔵していてもメインメモリに対するアクセスが無くなるわけではなく、キャッシュミスが発生したときには、ＣＰＵがメインメモリに対してメモリリード／ライトサイクルを実行することが必要とされる。このため、実際には、システム性能を向上させるためには、ＣＰＵによるメモリリード／メモリライトサイクルの実行速度を早めることが必要不可欠となる。
【０００５】
パーソナルコンピュータのメインメモリとしては、通常、ダイナミックＲＡＭ（ＤＲＡＭ）メモリが使用されている。ＤＲＡＭは、スタテッィクＲＡＭ（ＳＲＡＭ）に比べて低コストである反面、アクセス速度が遅いという特徴を持つ。この問題を解決するため、最近ではＤＲＡＭチップ自体の改良などの半導体技術レベルでの改善に加え、インタリーブ制御などの採用によるメモリアーキテクチャレベルでの改善も進められている。
【０００６】
しかし、パーソナルコンピュータにおけるメモリアーキテクチャの構築に際しては、システムボード上に標準実装された内部メモリの制御だけでなく、ユーザによって必要に応じて装着される種々の増設メモリの制御も考慮しなければならない。
【０００７】
このため、パーソナルコンピュータに設けられる従来のメモリ制御ロジックにおいては、非常に複雑なハードウェア構成が必要とされた。特にメモリアドレス制御を行うハードウェアロジックの複雑化は、メモリアクセス速度を低下させる直接的な原因となっている。
【０００８】
以下、従来のメモリ制御ロジックを用いたＤＲＡＭアドレス制御の原理について説明する。
【０００９】
通常、パーソナルコンピュータには、ＤＲＡＭカードなどの増設メモリを装着するための複数の拡張用メモリコネクタが設けられている。ＤＲＡＭカードなどの増設メモリは、１以上のＤＲＡＭバンクから構成されている。内部メモリと増設メモリ内の全てのＤＲＡＭバンクは、互いに異なるロウアドレスストローブ信号線（ＲＡＳ線）に接続される。メモリアクセス制御においては、それらＲＡＳ線の１つが付勢され、そのＲＡＳ線に接続されているＤＲＡＭバンクがアクセス対象バンクとして選択される。
【００１０】
ＲＡＳ線の付勢制御は、メモリ制御ロジック内のアドレスデコータによって行われる。アドレスデコーダは、複数のＲＡＳ線の中で、ＣＰＵからのメモリアドレス値が満たすデコード条件を持つＲＡＳ線を付勢する。各ＲＡＳ線のデコード条件は、次のように決定される。
【００１１】
すなわち、内部メモリおよび増設メモリ内の全てのＤＲＡＭバンクは、それらの物理的な装着位置の順序、つまりシステムボード、拡張メモリコネクタ１、拡張メモリコネクタ２…の順で、ＣＰＵのメモリアドレス空間の若い方から順に配置される。このメモリ配置に従い、それらＤＲＡＭバンクに割り当てるべきアドレス範囲がそれぞれ規定され、そのアドレス範囲にしたがって各ＲＡＳ線のデコード条件が決定される。
【００１２】
この場合、どのようなメモリサイズを持つＤＲＡＭバンクがどのＲＡＳ線に接続されてもかまわないように、各ＲＡＳ線のデコード条件としては、対応するＤＲＡＭバンクに割り当てられたアドレス範囲の上限を示す先頭アドレスと下限を示す最終アドレスの双方が利用される。
【００１３】
このため、アドレスデコーダは、ＣＰＵからのメモリアドレスがどのＲＡＳ線のデコード条件を満たすかを検出するために、ＲＡＳ線毎に２個のコンパレータを備える必要があった。一方のコンパレータはＣＰＵからのメモリアドレス値と該当するＲＡＳ線に割り当てられたアドレス範囲の先頭アドレス値との大小を比較し、他方のコンパレータはＣＰＵからのメモリアドレス値とそのＲＡＳ線に割り当てられたアドレス範囲の最終アドレス値との大小を比較する。メモリアドレスの値が先頭アドレス値以上で、最終アドレス値よりも小さいならば、該当するＲＡＳ線が付勢される。
【００１４】
このように、従来のメモリ制御ロジックにおいてはアドレスデコーダに多くのコンパレータを設ける必要があり、そのためにアドレスデコーダ内部で比較的大きなディレイが生じる欠点があった。このディレイは、ＲＡＳ線が付勢されるまでに要する時間を長くし、メモリアクセス速度の低下を引き起こす要因となる。
【００１５】
また、このようなＲＡＳ線付勢に係るディレイは、インタリーブアーキテクチャを利用したメモリアクセス性能を制限する要因にもなる。
【００１６】
すなわち、インタリーブは、例えばページ毎に付勢するＲＡＳ線を切り替える事によって、異なるＤＲＡＭバンクを順次アクセスする技術である。同一ＤＲＡＭバンクを続けてアクセスする場合には、前回のメモリサイクル完了後、そのＤＲＡＭバンクのメモリセルの再充電が完了するまでの時間（プリチャージディレイ）だけ、次のメモリサイクルの実行を待つ必要がある。インタリーブを採用すれば、あるＤＲＡＭバンクの再充電期間中に別のＤＲＡＭバンクをアクセスでき、同一バンクを連続してアクセスする時に必要なプリチャージディレイによる時間ロスを無くすことができる。
【００１７】
ところが、前述のＲＡＳ線付勢に係るディレイは、ＲＡＳ線の切り替え速度そのものを遅くするので、インタリーブの高速アクセス性能を十分に発揮させることができなくなる。また、実際には、インタリーブを実現するためにはアドレスデコーダの他に例えばページ単位でＲＡＳ線切り替えのための専用のハードウェアロジックを追加しなければならず、それによるディレイによってインタリーブの高速アクセス性能はさらに低下されることになる。
【００１８】
また、インタリーブを有効利用するためには、インタリーブ可能なバンクの組み合わせを作るためのグルーピングを容易にするために、比較的メモリサイズが等しいメモリバンク同士に隣接したアドレス範囲が割り当てられている事が望ましい。このようにすれば、インタリーブの組み合わせから外れるＤＲＡＭバンクを少なくでき、より多くのＤＲＡＭバンクをインタリーブ制御する事ができるからである。
【００１９】
しかし、前述したように、従来では、システム内のＤＲＡＭバンクのメモリ配置は、それらＤＲＡＭバンクの物理的な装着位置のみによって決定されるので、メモリサイズの大小関係とは全く無関係にＤＲＡＭバンクがアドレス空間に配置されてしまう。これは、インタリーブ可能なＤＲＡＭバンクの組み合わせを制限し、インタリーブの組み合わせから外れるＤＲＡＭバンク数を増加させる原因となる。
【００２０】
【発明が解決しようとする課題】
従来では、システム内のＤＲＡＭバンクのメモリアドレス空間への配置はそれらのメモサイズの大小関係とは無関係に、物理的な装着位置のみ決定された。このため、アドレスデコーダのハードウェア構成が複雑化され、アドレスデコーダ内のディレイが大きくなる欠点があった。
【００２１】
また、前述のようなＤＲＡＭバンクのメモリ配置はインタリーブ可能なＤＲＡＭバンクグループの組み合わせを制限する要因となり、インタリーブによる高速アクセス性能を十分に有効利用することができなくなる欠点があった。
【００２２】
この発明はこのような点に鑑みてなされたもので、システム内のＤＲＡＭバンクをそれらのメモリサイズに応じてメモリアドレス空間に最適配置することによってアドレスデコーダのデコード条件の簡単化、およびインタリーブアーキテクチャの有効利用を図り、メモリアクセス速度の高速化を実現することができるコンピュータシステムを提供することを目的とする。
【００２３】
【課題を解決するための手段および作用】
この発明のコンピュータシステムは、複数のアクセス制御信号がそれぞれ割り当てられ、互いに独立してアクセス可能な複数のメモリバンクと、前記複数のアクセス制御信号にそれぞれ対応する複数のデコード条件が設定され、それらデコード条件とＣＰＵからのメモリアドレスとの一致の有無を検出し、一致したデコード条件に対応するアクセス制御信号線を付勢してメモリバンクを選択するアドレスデコーダと、前記複数のメモリバンクそれぞれのメモリサイズを検出する手段と、メモリサイズの大きいバンクほどＣＰＵのメモリアドレス空間の若い方に配置されるように前記複数のメモリバンクをメモリサイズ順に前記メモリアドレス空間に再配置し、このメモリ配置に従って前記複数のメモリバンクそれぞれに割り当てるべきメモリアドレス範囲を決定するメモリ再配置手段と、前記複数のメモリバンクのメモリ配置に従って、ページインタリーブ可能な２以上のメモリバンクの組み合わせを決定する手段と、前記組み合わせに属するメモリバンクがページ単位で交互にアクセスされるように、前記組み合わせに属するメモリバンクそれぞれに対応するアクセス制御信号線のデコード条件を、前記組み合わせに属するメモリバンク全体のアドレス範囲に属する全てのメモリアドレス値それぞれを示す２値データに共通に存在するビット列と、各メモリバンクのページ内アドレスとページ指定アドレスとの間の所定ビット列とに従って決定して、前記アドレスデコーダに設定する手段とを具備することを特徴とする。
【００２４】
このコンピュータシステムにおいては、複数のメモリバンクそれぞれのメモリサイズが検出され、それらメモリバンクの物理的な装着位置とは関係なく、メモリサイズの大小関係に従ってそれらメモリバンクのメモリアドレス空間への配置順が決定される。この場合、複数のメモリバンクはそのメモリサイズの大きいもの順に、ＣＰＵのメモリアドレス空間の若い方から配置される。
【００２５】
このようなメモリ配置下においては、複数のメモリバンクそれぞれに割り当てられるアドレス範囲は、２値データで表現されるメモリアドレス値によって区分されるアドレス境界と上手く合致する。このため、どのアドレス範囲に属する全てのメモリアドレス値にも、そのアドレス範囲においてのみ共通の値を持つビット列が必ず存在する。そして、さらに、複数のメモリバンクのメモリ配置に従って、ページインタリーブ可能な２以上のメモリバンクの組み合わせが決定され、その組み合わせに属するメモリバンクがページ単位で交互にアクセスされるように、前記組み合わせに属するメモリバンクそれぞれに対応するアクセス制御信号線のデコード条件が、前記組み合わせに属するメモリバンク全体のアドレス範囲に属する全てのメモリアドレス値それぞれを示す２値データに共通に存在するビット列と、各メモリバンクのページ内アドレスとページ指定アドレスとの間の所定ビット列とに従って決定され、アドレスデコーダに設定される。
【００２６】
したがって、各アドレス範囲の先頭アドレス値と最終アドレス値の双方をデコード条件として使用する必要がなくなり、各アクセス制御信号のデコード条件を簡単化できる。これによって、アドレスデコーダはＣＰＵからのメモリアドレス値とデコード条件との一致／不一致をアクセス制御信号毎に検出するだけで済む。よって、従来に比し、アドレスデコーダのハードウェア構成を大幅に簡単化できるので、アドレスデコーダ内のディレイが小さくなり、メモリアクセス速度の高速化を実現できる。さらに、上記デコード条件の設定により、ＣＰＵからのメモリアドレス値とデコード条件との一致／不一致をアクセス制御信号毎に検出するというアドレスデコーダの構成を用いて、ページ毎に異なるバンクをアクセスするページインタリーブアーキテクチャが実現される。
【００３０】
【実施例】
以下、図面を参照してこの発明の実施例を説明する。図１には、この発明の一実施例に係わるコンピュータシステムが示されている。
【００３１】
このシステムはノートブックタイプまたはラップトップタイプのポータブルパーソナルコンピュータを実現するためのものであり、システムボード１０上には、図示のように、ＣＰＵ１１、システムコントローラ１２、システムメモリ１３、ＢＩＯＳ  ＲＯＭ１４、リアルタイムクロック（ＲＴＣ）１５、割り込みコントローラ（ＰＩＣ）１６、キーボードコントローラ（ＫＢＣ）１７、ディスプレイコントローラ１８などが実装されている。
【００３２】
また、システムボード１０上には、ＣＰＵローカルバス（プロセッサバスと称する場合もある）３１、ＩＳＡ／ＥＩＳＡ／ＰＣＩなどの仕様を持つシステムバス３２、およびメモリアドレスバス３３などが配設されている。
【００３３】
さらに、このシステムには、増設メモリを接続するための２つの拡張用メモリコネクタ２１，２２が設けられている。図１においては、拡張メモリコネクタ２１，２２にそれぞれ増設メモリ４１，４２が接続されている状態が示されている。
【００３４】
増設メモリ４１，４２は、システムメモリサイズを拡張するためにユーザによって必要に応じて装着されるオプションメモリであり、例えばＤＲＡＭカードや、ＳＩＭＭメモリモジュールなどから構成されている。これら増設メモリは、通常、１以上のＤＲＡＭバンクから構成されている。
【００３５】
ＣＰＵ１１は、大規模なキャッシュメモリを内蔵したマイクロプロセッサであり、例えば米インテル社のＩｎｔｅｌ４８６ＣＰＵなどが使用される。ＣＰＵ１１は、ＣＰＵローカルバス３１を介してシステムコントローラ１２に接続されている。ＣＰＵローカルバス３１は、ＣＰＵ１１を構成するマイクロプロセッサの入出力ピンに直接繋がる信号群である。ここには、３２ビットデータバス、３２ビットアドレスバス、および各種ステータス信号線などが含まれている。
【００３６】
システムコントローラ１２は、ＣＰＵローカルバス３１とシステムバス３２との間に接続されており、ＣＰＵ１１からの要求に応じてシステム内の全てのメモリおよびＩ／Ｏデバイスを制御する。このシステムコントローラ１２は、ゲートアレイによって構成された１個のＬＳＩによって実現されており、その中にはシステムメモリ１３および増設メモリ４１，４２のＤＲＡＭを制御するためのメモリ制御ロジロックが組み込まれている。
【００３７】
システムメモリ１３は、このシステムのメインメモリとして使用されるものであり、通常、１以上のＤＲＡＭバンクから構成されている。このシステムメモリ１３には、オペレーティングシステム、実行対象のアプリケーションプログラム、および各種処理データなどが格納される。
【００３８】
システムメモリ１３は、所定のコネクタを介してまたは直接にシステムボード１０上に実装されている。システムメモリ１３は３２ビットのメモリデバイスであり、そのデータポートはＣＰＵローカルバス３１の３２ビットデータバスに接続され、また、アドレス入力ポートはメモリアドレスバス３３に接続されている。メモリアドレスバス３３はＤＲＡＭ専用のアドレスバスであり、このメモリアドレスバス３３上にはＤＲＡＭの物理アドレス（ロウアドレス／カラムアドレス）がシステムコントローラ１２から出力される。
【００３９】
同様に、増設メモリ４１，４２もそれぞれ３２ビットのメモリデバイスであり、対応するコネクタ２１，２２を介してそのデータポートがＣＰＵローカルバス３１の３２ビットデータバスに接続され、アドレス入力ポートがメモリアドレスバス３３に接続されている。
【００４０】
また、システムメモリ１３には２本のロウアドレスストローブ信号線（ＲＡＳ線：ＲＡＳ０、ＲＡＳ１）が接続されている。同様に、拡張メモリコネクタ２１には別の２本のロウアドレスストローブ信号線（ＲＡＳ線：ＲＡＳ２、ＲＡＳ３）が接続され、拡張メモリコネクタ２２にも、別の２本のロウアドレスストローブ信号線（ＲＡＳ線：ＲＡＳ４、ＲＡＳ５）が接続されている。
【００４１】
さらに、システムメモリ１３および増設メモリ４１，４２には、カラムアドレスストローブ信号線（ＣＡＳ線）、および他の各種制御信号線（ライトイネーブル信号線ＷＥ、アウトプットイネーブル信号線ＯＥなど）がそれぞれ共通接続されている。
【００４２】
システムメモリ１３および増設メモリ４１，４２内の全てのＤＲＡＭバンクは、ＣＰＵ１１のＤＲＡＭ用メモリアドレス空間に配置される。このシステムにおいては、各ＲＡＳ線のデコード条件の簡単化、およびインタリーブアーキチャを最大限有効利用するために、それらＤＲＡＭバンクはメモリサイズの大きなもの程若いアドレスの方に配置される。
【００４３】
システムメモリ１３および増設メモリ４１，４２のリード／ライトアクセス制御においては、ＲＡＳ線（ＲＡＳ０〜ＲＡＳ５）の１つがアクティブ状態に設定され、そのアクティブ状態のＲＡＳ線に接続されたＤＲＡＭバンクがアクセス対象のＤＲＡＭバンクとして選択される。このようなＲＡＳ線の付勢制御は、システムコントローラ１２のメモリ制御ロジックによって実行される。
【００４４】
図２には、メモリ制御ロジックの構成が示されている。
【００４５】
メモリ制御ロジック１２０は、ＤＲＡＭのページモードアクセスおよびページインタリーブをサポートするハードウェアロジックであり、アドレス変換回路１２１、ＲＡＳデコーダ１２２、ロウアドレス／カラムアドレスマルチプレクサ１２３、ＣＡＳ発生回路１２４、タイミング制御回路１２５、およびページヒット判定回路１２６を有している。
【００４６】
アドレス変換回路１２１は、ＣＰＵアドレス（Ａ３１：０２）をＤＲＡＭ論理アドレス（ＭＡ３１：０２）に変換する。この変換は、ＣＰＵ１１のメモリアドレス空間に分散配置されている複数のＤＲＡＭメモリエリアをＤＲＡＭアクセス専用の論理アドレス空間に連続的に割り付けるために行われる。このアドレス変換動作の一例を図３に示す。
【００４７】
すなわち、図３（Ａ）に示されているように、ＣＰＵ１１のメモリアドレス空間には、通常、システムメモリエリアやＰＭメモリエリアのようなＤＲＡＭエリアの他に、ビデオＲＡＭ、ＢＩＯＳ  ＲＯＭ、および各種オプションＲＯＭなどを配置するための予約領域（０Ａ００００Ｈ〜０Ｃ００００Ｈ）が確保されている。アドレス変換回路１２１は、このようなＣＰＵメモリマップに応じて、予約領域の直前および直後のＤＲＡＭエリアのアドレスが連続するようにアドレス変換を行う。
【００４８】
また、ＢＩＯＳ  ＲＯＭに格納されたＶＧＡ  ＢＩＯＳやシステムＢＩＯＳなどをＤＲＡＭにコピーして使用する場合には、図３（Ｂ）に示されているように、予約領域のＶＧＡ  ＢＩＯＳエリアおよびシステムＢＩＯＳエリアに割り当てられたＣＰＵアドレスも、ＤＲＡＭ論理アドレスに変換される。さらに、システムマネージメントモード（ＳＭＭ）を有するＣＰＵの場合には、そのＳＭＭの中でのみ使用されるＳＭＲＡＭエリアに割り当てられたＣＰＵアドレスもＤＲＡＭ論理アドレスに変換される。
【００４９】
このようなＣＰＵアドレスからＤＲＡＭ論理アドレスへの変換は、例えば１６Ｋバイト単位で行われる。このため、ＤＲＡＭ論理アドレスの下位ビット部（ＭＡ１３：０２）は、アドレス変換後においても、ＣＰＵアドレスの下位ビット部（Ａ１３：０２）と等しい。
【００５０】
アドレス変換回路１２１によって得られたＤＲＡＭ論理アドレス（ＭＡ３１：０２）は、システム内のＤＲＡＭバンクをアドレッシングするために使用される。
【００５１】
ＲＡＳデコーダ１２２は、その内部レジスタにセットされたＲＡＳ０〜ＲＡＳ５それぞれのデコード条件に従ってＤＲＡＭ論理アドレス（ＭＡ３１：０２）をデコードし、ＲＡＳ０〜ＲＡＳ５線の中でそのＤＲＡＭ論理アドレスが満たすデコード条件を持つＲＡＳ線を選択してそれをアクティブにする。ＲＡＳ線をアクティブにするタイミングなどは、タイミング制御回路１２５からのタイミング制御信号ＣＯＮＴ１によって制御される。
【００５２】
このＲＡＳデコーダ１２２のデコード動作は、各ＲＡＳ線のデコード条件とＤＲＡＭ論理アドレスとの一致／不一致を検出する事のみによって行うことができる。ＲＡＳ０〜ＲＡＳ５線それぞれのデコード条件がどのように決定されるかについては、図３以降で詳述する。
【００５３】
ロウアドレス／カラムアドレスマルチプレクサ１２３は、ＤＲＡＭ論理アドレス（ＭＡ３１：０２）を、アクセス対象ＤＲＡＭバンクをアドレッシングするためのロウアドレス（ＲＡ）とカラムアドレス（ＣＡ）に分解する。このロウアドレス／カラムアドレスマルチプレクサ１２３の内部レジスタには、各ＤＲＡＭバンクのロウアドレス（ＲＡ）の開始ビット位置を示す制御パラメタが予めセットされている。ロウアドレス（ＲＡ）とカラムアドレス（ＣＡ）に分解する動作は、アクセス対象ＤＲＡＭバンクに対応する制御パラメタに従って行われる。
【００５４】
ロウアドレス（ＲＡ）およびカラムアドレス（ＣＡ）は、メモリバス３３上に時分割的に出力される。この出力タイミングは、タイミング制御回路１２５からのタイミング制御信号ＣＯＮＴ２によって制御される。
【００５５】
ＣＡＳ発生回路１２４は、タイミング制御回路１２５からのタイミング制御信号ＣＯＮＴ３に従って、ＣＡＳ線の付勢を制御する。
【００５６】
タイミンク制御回路１２５は、前述のタイミング制御信号ＣＯＮＴ１〜ＣＯＮＴ３を発生することによって、ＲＡＳデコーダ１２２、ロウアドレス／カラムアドレスマルチプレクサ１２３、およびＣＡＳ発生回路１２４の動作を制御する。タイミング制御信号の発生動作は、ページヒット判定回路１２６からのページヒット信号ＨＩＴなどによって制御される。
【００５７】
ページヒット判定回路１２６は、前回のＤＲＡＭアクセス時のＣＰＵアドレスをページヒート判定用ＣＰＵアドレスとして保持しており、そのＣＰＵアドレスと次回のＤＲＡＭアクセス時のＣＰＵアドレスとを比較することによって、ページヒットの有無を判定する。ここで、ページヒットとは、次回のＤＲＡＭアクセスが前回と同一のＤＲＡＭバンク内の同一ページをアクセスすることをいう。ページヒットしたことが判定されると、このことがページヒット信号ＨＩＴによって、タイミング制御回路１２５に通知される。
【００５８】
このように、ページヒットの判定動作は、ＤＲＡＭ論理アドレスではなく、ＣＰＵアドレスの値に基づいて行われる。これにより、アドレス変換動作とページヒット判定動作とを並行して行うことが可能となる。ページヒット判定にＣＰＵアドレスを利用することができるのは、ＣＰＵアドレスからＤＲＡＭ論理アドレスへのアドレス変換の単位（１６Ｋバイト）がＤＲＡＭバンクのページサイズ（最大４Ｋバイト程度）よりも大きな値に設定されているからである。
【００５９】
ページヒットの判定には、ＣＰＵアドレス（Ａ３１：０２）の中でカラムアドレスよりも上位のビット列が使用される。カラムアドレスのビット数、つまりページサイズはアクセス対象のＤＲＡＭバンク毎に異なる。このため、ページヒット判定回路１２６の内部レジスタにもページヒット判定に使用すべきビットをＲＡＳ線毎に指定する制御パラメタが予めセットされており、アクセス対象ＤＲＡＭバンクに対応する制御パラメタに従ってページヒットの判定が行われる。
【００６０】
このメモリ制御ロジック１２０によるＤＲＡＭ制御タイミングは、次の３つの状態に対応したサイクルタイミングに分類される。
【００６１】
（１）ページヒット
これは、次回のＤＲＡＭアクセスが前回と同一のＤＲＡＭバンク内の同一ページをアクセスすることをいう。この場合、ＤＲＡＭバンクはページモードでアクセス制御される。すなわち、カラムアドレスおよびＣＡＳ線の付勢タイミングだけが制御され、ＲＡＳデコーダ１２２によるＲＡＳ線の切り替えは行われない。また、前回のメモリサイクルが終了してもＲＡＳ線はアクティブ状態に維持され続ける。
【００６２】
（２）バンクミス
これは、次回のＤＲＡＭアクセスが前回と異なるＤＲＡＭバンクをアクセスすることをいう。この場合、ＲＡＳデコーダ１２２によるＲＡＳ線の切り替えが発生し、ＤＲＡＭバンクは通常のＤＲＡＭアクセスサイクルでアクセスされる。また、ページヒット判定回路１２６に保持されているページヒット判定用ＣＰＵアドレスの更新が行われる。
【００６３】
（３）ページミス
これは、次回のＤＲＡＭアクセスが前回と同一のＤＲＡＭバンク内の異なるページをアクセスすることをいう。この場合、ＲＡＳデコーダ１２２によって前回と同一のＲＡＳ線が再びアクティブ状態に設定し直され、ＤＲＡＭバンクは通常のＤＲＡＭアクセスサイクルでアクセスされる。また、ページヒット判定回路１２６に保持されているページヒット判定用ＣＰＵアドレスの更新が行われる。
【００６４】
次に、図４乃至図６を参照して、ＲＡＳデコーダ１２２に設定される各ＲＡＳ線のデコード条件について説明する。
【００６５】
図４には、システム内のＤＲＡＭメモリマップの一例が示されている。このＤＲＡＭメモリマップは、図１に示されているように、システムボード１０上にシステムメモリ１３として２個の２ＭバイトＤＲＡＭバンクが実装されており、拡張メモリコネクタ２１の増設メモリ４１が１個の８ＭバイトＤＲＡＭバンクから構成され、また拡張メモリコネクタ２２の増設メモリ４２が２個の４ＭバイトＤＲＡＭバンクから構成されている場合に対応するものである。
【００６６】
この場合、これらＤＲＡＭバンクは、メモリサイズの大きいもの順、すなわち、図４のように、８ＭバイトＤＲＡＭバンク、２個の４ＭバイトＤＲＡＭバンク、２個の２ＭバイトＤＲＡＭバンクの順で、合計２０ＭバイトのＤＲＡＭ論理アドレス空間に配置される。
【００６７】
このメモリ配置においては、８ＭバイトＤＲＡＭバンクに対応するＲＡＳ２線には０〜８Ｍバイトのアドレス範囲が割り当てられる。また、最初の４ＭバイトＤＲＡＭバンクに対応するＲＡＳ４線には８〜１２Ｍバイトのアドレス範囲、次の４ＭバイトＤＲＡＭバンクに対応するＲＡＳ５線には１２〜１６Ｍバイトのアドレス範囲が割り当てられる。さらに、最初の２ＭバイトＤＲＡＭバンクに対応するＲＡＳ０線には１６〜１８Ｍバイトのアドレス範囲、次の２ＭバイトＤＲＡＭバンクに対応するＲＡＳ１線には１８〜２０Ｍバイトのアドレス範囲が割り当てられる。ＲＡＳ３線は使用されないので、このＲＡＳ３線にはアドレス範囲は割り当てられない。
【００６８】
この時、ＲＡＳ０〜ＲＡＳ５線それぞれのデコード条件は、図５のように決定される。
【００６９】
ＲＡＳ０〜ＲＡＳ５線それぞれのデコード条件としては、各ＲＡＳ線に割り当てられたアドレス範囲に属する全てのＤＲＡＭ論理アドレス値（ＭＡ３１：０２）にのみ共通に存在するビット列が使用される。
【００７０】
すなわち、ＲＡＳ２線のデコード条件は、ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の上位９ビット（ＭＡ３１〜２３）＝“００００  ００００  ０”となる。ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の下位２１ビットは、ＲＡＳ２線に接続された８ＭバイトＤＲＡＭバンクのロウアドレスおよびカラムアドレスとして使用される。
【００７１】
また、ＲＡＳ４線のデコード条件は、ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の上位１０ビット（ＭＡ３１〜２２）＝“００００  ００００  １０”となる。ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の下位２０ビットは、ＲＡＳ４線に接続された４ＭバイトＤＲＡＭバンクのロウアドレスおよびカラムアドレスとして使用される。
【００７２】
ＲＡＳ５線のデコード条件は、ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の上位１０ビット（ＭＡ３１〜２２）＝“００００  ００００  １１”となる。ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の下位２０ビットは、ＲＡＳ５線に接続された４ＭバイトＤＲＡＭバンクのロウアドレスおよびカラムアドレスとして使用される。
【００７３】
ＲＡＳ０線のデコード条件は、ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の上位１１ビット（ＭＡ３１〜２１）＝“００００  ０００１  ０００”となる。ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の下位１９ビットは、ＲＡＳ０線に接続された２ＭバイトＤＲＡＭバンクのロウアドレスおよびカラムアドレスとして使用される。
【００７４】
ＲＡＳ１線のデコード条件は、ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の上位１１ビット（ＭＡ３１〜２１）＝“００００  ０００１  ０００”となる。ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の下位１９ビットは、ＲＡＳ０線に接続された２ＭバイトＤＲＡＭバンクのロウアドレスおよびカラムアドレスとして使用される。
【００７５】
このように、各ＲＡＳ線のデコード条件としては、各ＲＡＳ線に対応するアドレス範囲に属する共通ビット列が使用される。このため、前述のＲＡＳデコーダ１２２は、ＤＲＡＭ論理アドレス値とデコード条件との一致／不一致をＲＡＳ線毎に検出するだけで済み、従来に比し、そのハードウェア構成を大幅に簡単化することが可能となる。
【００７６】
次に、ページインタリーブアーキテクチャを採用する場合の各ＲＡＳ線のデコード条件について説明する。
【００７７】
ページインタリーブを行う場合には、図４のようにマッピングされた５つのＤＲＡＭバンクは、ページインタリーブ可能なバンクグループに分類される。各バンクグループは、メモリアドレス範囲が隣接し且つ合計メモリサイズが一致するバンクの組み合わせを含む。このようなグループピングは、ＤＲＡＭ論理アドレスの若い方から順番に行われる。
【００７８】
すなわち、図４の例では、ＲＡＳ２の８ＭバイトＤＲＡＭバンクのアドレス範囲（０〜８Ｍバイト）に後続するアドレス範囲に割り付けられた２個の４ＭバイトＤＲＡＭバンクの合計メモリサイズが８Ｍバイトとなるので、ＲＡＳ２、ＲＡＳ４、ＲＡＳ５に対応する３つのバンクによって１つのページインタリーブグループが構成される。
【００７９】
また、ＲＡＳ０の２ＭバイトＤＲＡＭバンクのアドレス範囲（１６〜８Ｍバイト）に後続するアドレス範囲にＲＡＳ１の２ＭバイトＤＲＡＭバンクが割り付けられているので、ＲＡＳ０、ＲＡＳ１に対応する２つのバンクによって別のページインタリーブグループが構成される。
【００８０】
この場合、各ＲＡＳ線のデコード条件は図５から図６のように変更される。
【００８１】
すなわち、グループ１のＲＡＳ２，ＲＡＳ４，ＲＡＳ５それぞれのデコード条件としては、グループ１に割り当てられる合計１６Ｍバイトのアドレス範囲（０〜１６Ｍバイト）に属する全てのＤＲＡＭ論理アドレス値（ＭＡ３１：０２）に共通に存在するビット列と、ＲＡＳ２，ＲＡＳ４，ＲＡＳ５それぞれに対応するＤＲＡＭバンクのカラムアドレス（ページ内アドレス）とロウアドレス（ページアドレス）の間のビット列とが使用される。
【００８２】
すなわち、図６のように、ＲＡＳ２、ＲＡＳ４、およびＲＡＳ５に割り当てられる合計１６Ｍバイトのアドレス範囲においては、ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の上位８ビット（ＭＡ３１〜２４）＝“００００  ００００”が共通して存在し、これはグループ２には存在しない。したがって、（ＭＡ３１〜２４）＝“００００  ００００”は、ＲＡＳ２、ＲＡＳ４、およびＲＡＳ５の共通のデコード条件として使用される。
【００８３】
ＲＡＳ２については、ＤＲＡＭ論理アドレスにおけるロウアドレスの開始位置が１ビット左シフトされて、ＲＡＳ２に対応する８ＭバイトＤＲＡＭバンクのロウアドレスとカラムアドレスとの間の１ビット（ＭＡ１２）＝“０”がデコード条件として加えられる。
【００８４】
ＲＡＳ４，ＲＡＳ５それぞれについては、ＤＲＡＭ論理アドレスにおけるロウアドレスの開始位置が２ビット左シフトされて、それらに対応する４ＭバイトＤＲＡＭバンクそれぞれのロウアドレスとカラムアドレスの間の２ビット（ＭＡ１３，１２）の値がアドレス条件として加えられる。２ビット使用されるのは、ＲＡＳ４，ＲＡＳ５それぞれのメモリサイズが、ＲＡＳ２のメモリサイズの半分だからである。
【００８５】
すなわち、ＲＡＳ４については、そのＲＡＳ４に対応する４ＭバイトＤＲＡＭバンクのロウアドレスとカラムアドレスの間の２ビット（ＭＡ１３，１２）＝“０１”がデコード条件として加えられ、ＲＡＳ５については、そのＲＡＳ５に対応する４ＭバイトＤＲＡＭバンクのロウアドレスとカラムアドレスの間の２ビット（ＭＡ１３，１２）＝“１１”がアドレス条件として加えられる。
【００８６】
このようにＲＡＳ２，ＲＡＳ４，ＲＡＳ５のデコード条件を決定すると、ＲＡＳ２の８ＭバイトＤＲＡＭバンクには０〜１６Ｍバイトのアドレス範囲の中の偶数ページ（０，２，４，６，……）が割り当てられ、ＲＡＳ４の４ＭバイトＤＲＡＭバンクには０〜１６Ｍバイトのアドレス範囲の中の奇数ページの一部（１，５，９，……）が割り当てられ、ＲＡＳ５の４ＭバイトＤＲＡＭバンクには０〜１６Ｍバイトのアドレス範囲の中の残りの奇数ページ（３，７，１１，……）が割り当てられる。
【００８７】
したがって、０〜１６Ｍバイトの範囲で連続アクセスが行われる時には、ＲＡＳ２、ＲＡＳ４、ＲＡＳ２、ＲＡＳ５、ＲＡＳ２、……という順番で、３つのＤＲＡＭバンクがページ単位で交互にアクセスされる。
【００８８】
一方、グループ２のＲＡＳ０，ＲＡＳ１それぞれのデコード条件は、次のようになる。
【００８９】
すなわち、ＲＡＳ０，ＲＡＳ１それぞれのデコード条件としては、グループ２に割り当てられる合計４Ｍバイトのアドレス範囲（１６〜２０Ｍバイト）に属する全てのＤＲＡＭ論理アドレス値（ＭＡ３１：０２）に共通に存在するビット列と、ＲＡＳ０，ＲＡＳ１それぞれに対応するＤＲＡＭバンクのカラムアドレスとロウアドレスの間のビット列とが使用される。
【００９０】
ＲＡＳ０、ＲＡＳ１に割り当てられる合計４Ｍバイトのアドレス範囲においては、ＤＲＡＭ論理アドレス値（ＭＡ３１：０２）の上位１０ビット（ＭＡ３１〜２２）＝“００００  ０００１  ００”が共通して存在し、これはグループ１には存在しない。したがって、（ＭＡ３１〜２２）＝“００００  ０００１  ００”は、ＲＡＳ０、ＲＡＳ１の共通のデコード条件として使用される。
【００９１】
また、ＲＡＳ０については、ＤＲＡＭ論理アドレスにおけるロウアドレスの開始位置が１ビット左シフトされて、ＲＡＳ０に対応する２ＭバイトＤＲＡＭバンクのロウアドレスとカラムアドレスとの間の１ビット（ＭＡ１１）＝“０”がデコード条件として加えられる。
【００９２】
ＲＡＳ１についても、ＤＲＡＭ論理アドレスにおけるロウアドレスの開始位置が１ビット左シフトされて、それに対応する２ＭバイトＤＲＡＭバンクのロウアドレスとカラムアドレスの間の１ビット（ＭＡ１１）＝“１”がデコード条件として加えられる。
【００９３】
このようにＲＡＳ０，ＲＡＳ１のデコード条件を決定すると、ＲＡＳ０の２ＭバイトＤＲＡＭバンクには１６〜２０Ｍバイトの４Ｍバイトのアドレス範囲の中の偶数ページ（０，２，４，６，……）が割り当てられ、ＲＡＳ１の２ＭバイトＤＲＡＭバンクには奇数ページ（１，３，５，７，……）が割り当てられる。したがって、１６〜２０Ｍバイトの範囲で連続アクセスが行われる時には、ＲＡＳ０、ＲＡＳ１、ＲＡＳ０、ＲＡＳ１、……という順番で、２つのＤＲＡＭバンクがページ単位で交互にアクセスされる。
【００９４】
このように、ページインタリーブは、インタリーブグループのアドレス範囲に共通に存在するビット列と、ロウアドレスとカラムアドレスとの間の所定ビット列とに基づいて各ＲＡＳのデコード条件を決定し、それをＲＡＳデコーダ１２２に設定するだけで実現する事ができる。
【００９５】
ＲＡＳデコーダ１２２へのデコード条件の設定などのメモリ制御ロジック１２０に対する初期設定処理は、ＢＩＯＳ  ＲＯＭ１４のＩＲＴルーチンによって実行される。
【００９６】
図７には、ＩＲＴルーチンによって実行されるメモリ制御ロジック１２０に対する初期設定動作の手順が示されている。
【００９７】
システムがパワーオンされると、ＩＲＴルーチンは、まず、各ＤＲＡＭバンクのメモリタイプ（カラムアドレスおよびロウアドレスそれぞれのビット幅）を調べ、そのメモリバンクタイプにしたがってメモリサイズを検出する（ステップＳ１１）。カラムアドレスとロウアドレスそれぞれのビット幅は、テスト対象ＤＲＡＭバンクのある特定のメモリ番地に対するライト・リード・コンペアテストを実行することによって検出できる。
【００９８】
このステップＳ１１で行われるメモリサイズ検出処理動作の詳細については、図８以降で後述する。
【００９９】
次に、ＩＲＴルーチンは、システム内のＤＲＡＭバンクのメモリ再配置を行う（ステップＳ１２）。このメモリ再配置では、図４で説明したように、メモリサイズの大きいＤＲＡＭバンクから順にメモリアドレス空間の若い方に配置され、その配置に従って各ＤＲＡＭバンクに割り当てるべきアドレス範囲が決定される。
【０１００】
次いで、ＩＲＴルーチンは、図５で説明したように、ＤＲＡＭバンクそれぞれに割り当てられたアドレス範囲毎にその範囲に属するＤＲＡＭ論理アドレス値にのみ共通に存在するビット列を検出し、その共通ビット列をＲＡＳ線それぞれのデコード条件として決定する（ステップＳ１３）。
【０１０１】
ページインタリーブアーキテクチャを用いない場合には、ＩＲＴルーチンは、ステップＳ１３で決定した各ＲＡＳ線のデコード条件を、そのままＲＡＳデコーダ１２２の内部レジスタにセットする（ステップＳ１７）。次いで、ＩＲＴルーチンは、ロウアドレス／カラムアドレスマルチプレクサ１２３の内部レジスタにロウアドレス開始位置をＲＡＳ線毎に指定する制御パラメタをセットし、またページヒット判定回路１２６の内部レジスタにペ−ジヒット判定に使用するＣＰＵアドレスの位置をＲＡＳ線毎に指定する制御パラメタをセットする（ステップＳ１８）。これら制御パラメタの値は、それぞれステップＳ１１で検出されたメモリバンクタイプに従って決定される。
【０１０２】
一方、ページインタリーブアーキテクチャを採用する場合には、ＩＲＴルーチンは、ステップＳ１２でメモリサイズ順に配置したＤＲＡＭマップに従って、ページインタリーブ可能なグループを決定する（ステップＳ１５）。次いで、ＩＲＴルーチンは、ページインタリーブグループのアドレス範囲に共通に存在するビット列と、ロウアドレスとカラムアドレスとの間の所定ビット列とに基づいて各ＲＡＳのデコード条件を変更する（ステップＳ１６）。
【０１０３】
この後、ＩＲＴルーチンは、ステップＳ１６で決定した各ＲＡＳ線のデコード条件を、ＲＡＳデコーダ１２２の内部レジスタにセットする（ステップＳ１７）。次いで、ＩＲＴルーチンは、ロウアドレス／カラムアドレスマルチプレクサ１２３の内部レジスタにロウアドレス開始位置をＲＡＳ線毎に指定する制御パラメタをセットし、またページヒット判定回路１２６の内部レジスタにペ−ジヒット判定に使用するＣＰＵアドレスの位置をＲＡＳ線毎に指定する制御パラメタをセットする（ステップＳ１８）。ロウアドレス開始位置は、ステップＳ１１で検出されたメモリバンクタイプと、ページインターリーブのためのデコード条件として使用したロウアドレスとカラムアドレス間のビット数とに基づいて決定される。また、ペ−ジヒット判定に使用するＣＰＵアドレスの位置については、ステップＳ１１で検出されたメモリバンクタイプに従って決定される。
【０１０４】
次に、図８乃至図１２を参照して、ＤＲＡＭバンクのメモリサイズ検出処理の原理を説明する。
【０１０５】
まず、図８を参照して、１本のＲＡＳでアクセス制御可能なＤＲＡＭバンクの種類について説明する。ＤＲＡＭバンクは、図示のように、タイプ１〜タイプ４の４つのバンクに大別される。
【０１０６】
タイプ１のＤＲＡＭバンクは、２Ｍバイトのメモリサイズを有する。このタイプ１のＤＲＡＭバンクは、５１２Ｋ（１Ｋ行×５１２列）×８ビット構成の４ＭビットＤＲＡＭチップを４個含んでおり、ロウアドレスのビット幅は１０ビット、カラムアドレスのビット幅は９ビットである。
【０１０７】
タイプ２のＤＲＡＭバンクは、４Ｍバイトのメモリサイズを有する。このタイプ２のＤＲＡＭバンクは、１Ｍ（１Ｋ行×１Ｋ列）×４ビット構成の４ＭビットＤＲＡＭチップを８個含んでおり、ロウアドレスのビット幅は１０ビット、カラムアドレスのビット幅は１０ビットである。
【０１０８】
タイプ３のＤＲＡＭバンクは、８Ｍバイトのメモリサイズを有する。このタイプ３のＤＲＡＭバンクは、２Ｍ（２Ｋ行×１Ｋ列）×８ビット構成の１６ＭビットＤＲＡＭチップを４個含んでおり、ロウアドレスのビット幅は１１ビット、カラムアドレスのビット幅は１０ビットである。
【０１０９】
タイプ４のＤＲＡＭバンクは、１６Ｍバイトのメモリサイズを有する。このタイプ４のＤＲＡＭバンクは、４Ｍ（２Ｋ行×２Ｋ列）×４ビット構成の１６ＭビットＤＲＡＭチップを８個含んでおり、ロウアドレスのビット幅は１１ビット、カラムアドレスのビット幅は１１ビットである。
【０１１０】
図９、図１０、および図１１には、それぞれ図１のシステムメモリ１３、増設メモリ４１、および増設メモリ４２のメモリ構成が示されている。
【０１１１】
システムメモリ１３がタイプ１の２個の２ＭバイトＤＲＡＭバンクによって構成されている場合には、図９に示されているように、一方の２ＭバイトＤＲＡＭバンクの４つのＤＲＡＭチップはＲＡＳ０線およびＣＡＳ線に共通接続され、他方の２ＭバイトＤＲＡＭバンクの４つのＤＲＡＭチップはＲＡＳ１線、およびＣＡＳ線に共通接続される。また、これら２つの２ＭバイトＤＲＡＭバンク内の全てのチップは、メモリアドレスバス３３、およびデータバス３２２の双方に並列接続される。
【０１１２】
これら２つの２ＭバイトＤＲＡＭバンクのどちらがアドレス指定されるかは、ＲＡＳ０とＲＡＳ１のどちらが付勢されるかによって決定される。
【０１１３】
ＲＡＳ０線が付勢された場合には、その時にメモリアドレスバス３３上に出力されているアドレス値の下位１０ビットがロウアドレスとしてそのＲＡＳ０線に接続されている４つのチップにそれぞれ取り込まれる。この後、ＲＡＳ０線に接続されている４つのチップは、ＣＡＳ線が付勢された時にメモリアドレスバス３３上に出力されているアドレス値の下位９ビットをカラムアドレスとして取り込む。これら１０ビットのロウアドレスおよび９ビットのカラムアドレスによってＲＡＳ０線に接続されている４つのチップそれぞれの同一番地が同時にアドレス指定され、１チップ当たり８ビットの合計３２ビット単位でＲＡＳ０線に対応するＤＲＡＭバンクがリード／ライトアクセスされる。
【０１１４】
同様に、ＲＡＳ１線が付勢された場合には、その時にメモリアドレスバス３３上に出力されているアドレス値の下位１０ビットのロウアドレスがそのＲＡＳ１線に接続されている４つのチップにそれぞれ取り込まれる。この後、ＲＡＳ１線に接続されている４つのチップは、ＣＡＳ線が付勢された時にメモリアドレスバス３３上に出力されているアドレス値の下位９ビットのカラムアドレスを取り込む。これら１０ビットのロウアドレスおよび９ビットのカラムアドレスによって、ＲＡＳ１線に接続されている４つのチップそれぞれの同一記憶位置が同時にアドレス指定され、１チップ当たり８ビットの合計３２ビット単位でＲＡＳ１線に対応するＤＲＡＭバンクがリード／ライトアクセスされる。
【０１１５】
増設メモリ４１がタイプ３の１個の８ＭバイトＤＲＡＭバンクによって構成されている場合には、図１０に示されているように、その８ＭバイトＤＲＡＭバンクの４つのＤＲＡＭチップはＲＡＳ２線およびＣＡＳ線に共通接続される。また、８ＭバイトＤＲＡＭバンク内の全てのチップは、メモリアドレスバス３３、およびデータバス３２２の双方に並列接続される。
【０１１６】
ＲＡＳ２線が付勢された場合には、その時にメモリアドレスバス３３上に出力されているアドレス値の下位１１ビットがロウアドレスとしてそのＲＡＳ２線に接続されている４つのチップにそれぞれ取り込まれる。この後、ＲＡＳ２線に接続されている４つのチップは、ＣＡＳ線が付勢された時にメモリアドレスバス３３上に出力されているアドレス値の下位１０ビットをカラムアドレスとして取り込む。これら１１ビットのロウアドレスと１０ビットのカラムアドレスとによって、ＲＡＳ０線に接続されている４つのチップそれぞれの対応する記憶位置が同時にアドレス指定され、１チップ当たり８ビットの合計３２ビット単位で、ＲＡＳ２線に対応するＤＲＡＭバンクがリード／ライトアクセスされる。
【０１１７】
増設メモリ４２がタイプ２の２個の４ＭバイトＤＲＡＭバンクによって構成されている場合には、図１１に示されているように、一方の４ＭバイトＤＲＡＭバンクの８つのＤＲＡＭチップはＲＡＳ４線およびＣＡＳ線に共通接続され、他方の４ＭバイトＤＲＡＭバンクの８つのＤＲＡＭチップはＲＡＳ５線およびＣＡＳ線に共通接続される。また、これら４ＭバイトＤＲＡＭバンク内の全てのチップは、メモリアドレスバス３３、およびデータバス３２２の双方に並列接続される。
【０１１８】
これら２つの４ＭバイトＤＲＡＭバンクのどちらがアドレス指定されるかは、ＲＡＳ４とＲＡＳ５のどちらが付勢されるかによって決定される。
【０１１９】
ＲＡＳ４線が付勢された場合には、その時にメモリアドレスバス３３上に出力されているアドレス値の下位１０ビットがロウアドレスとしてそのＲＡＳ４線に接続されている８つのチップにそれぞれ取り込まれる。この後、ＲＡＳ４線に接続されている８つのチップは、ＣＡＳ線が付勢された時にメモリアドレスバス３３上に出力されているアドレス値の下位１０ビットをカラムアドレスとして取り込む。これら１０ビットのロウアドレスおよび１０ビットのカラムアドレスによって、ＲＡＳ４線に接続されている８つのチップそれぞれの同一の記憶位置が同時にアドレス指定され、１チップ当たり４ビットの合計３２ビット単位でＲＡＳ４線に対応するＤＲＡＭバンクがリード／ライトアクセスされる。
【０１２０】
同様に、ＲＡＳ５線が付勢された場合には、その時にメモリアドレスバス３３上に出力されているアドレス値の下位１０ビットがロウアドレスとしてそのＲＡＳ５線に接続されている８つのチップにそれぞれ取り込まれる。この後、ＲＡＳ５線に接続されている８つのチップは、ＣＡＳ線が付勢された時にメモリアドレスバス３３上に出力されているアドレス値の下位１０ビットをカラムアドレスとして取り込む。これら１０ビットのロウアドレスおよび１０ビットのカラムアドレスとによって、ＲＡＳ５線に接続されている８つのチップそれぞれの同一記憶位置が同時にアドレス指定され、１チップ当たり４ビットの合計３２ビット単位でＲＡＳ５線に対応するＤＲＡＭバンクがリード／ライトアクセスされる。
【０１２１】
このように、ＤＲＡＭバンクのタイプ毎に、ロウアドレスとして使用されるビット数とカラムアドレスとして使用されるビット数との関係が異なっている。各ＲＡＳ線に接続されたＤＲＡＭバンクのメモリサイズは、ロウアドレスおよびカラムアドレスとして使用されるビット数の違いを利用して検出される。
【０１２２】
以下、図１２のフローチャートを参照して、ＩＲＴルーチンのステップＳ１１で実行されるメモリサイズ検出処理の手順を説明する。
【０１２３】
ＩＲＴルーチンは、ＲＡＳ０、ＲＡＳ１、ＲＡＳ２、…の順で、ＲＡＳ線に接続されたＤＲＡＭバンクのメモリサイズ検出処理を行う。ＩＲＴルーチンは、まず、検査対象のＲＡＳ線の付勢だけが許可されるように、ＲＡＳデコーダ１２２に所定のデコード条件をセットする（ステップＳ２１）。この場合、検査対象ＲＡＳ線のデコード条件としては、メモリサイズ検出のために行われる何回かのメモリアクセスで使用されるメモリアドレス値に共通のビット列が使用される。また、検査対象ＲＡＳ線を除くの他の全てのＲＡＳ線については、メモリサイズ検出のために行われる何回かのメモリアクセスでそれらＲＡＳ線が付勢されないように、検査対象ＲＡＳ線とは異なる所定のビット列がそれぞれのデコード条件として設定される。
【０１２４】
次いで、ＩＲＴルーチンは、タイプ１〜タイプ４のＤＲＡＭバンクの中で最もカラムアドレスのビット数が大きいタイプ４のＤＲＡＭバンク（カラムアドレスＣＡ＝１１ビット、ロウアドレスＲＡ＝１１ビット）が検査対象ＲＡＳ線に接続されていると想定し、そのＤＲＡＭバンクに対してライト・リード・コンペアテストを行う（ステップＳ２２）。この場合、ロウアドレス／カラムアドレスマルチプレクサ１２３には、タイプ４のＤＲＡＭバンクに対応する制御パラメタがセットされる。ライト・リード・コンペアテストでは、ライトアドレス００００１０００Ｈ（Ｈは１６進表示を示す）のライトアクセスと、リードアドレス００００００００Ｈのリードアクセスとが行われ、その時のライトデータとリードデータの一致の有無が調べられる（ステップＳ２３）。
【０１２５】
もし、検査対象ＲＡＳ線に実際に接続されているＤＲＡＭバンクが想定した通りのタイプ４のＤＲＡＭバンクであれば、アドレス００００１０００Ｈに正常にデータを書き込むことができるので、ライトデータとリードデータの値は不一致となる。一方、検査対象ＲＡＳ線に実際に接続されているＤＲＡＭバンクがそのカラムアドレス数が１０ビット以下のタイプ１、タイプ２、またはタイプ３のバンクであった場合には、ライトデータとリードデータの値は一致する。これは、次の理由による。
【０１２６】
すなわち、ステップＳ２２ではタイプ４のＤＲＡＭバンクに対応する設定が成されているので、アドレス００００１０００Ｈのライトアクセス時に出力される１１ビットのロウアドレスＲＡ（ＭＡ２３，……，ＭＡ１３）＝０００００００００００であり、１１ビットのカラムアドレスＣＡ（ＭＡ１２，……，ＭＡ０２）＝１００００００００００である。カラムアドレス数が１０ビット以下のＤＲＡＭバンクにおいては、１１ビットのカラムアドレスＣＡの最上位ビットＭＡ１２の値“１”は無視される。このため、タイプ１、タイプ２、またはタイプ３のバンクが接続されている場合には、ライトアドレス００００１０００Ｈのライトアクセスによって、その先頭行におけるカラムアドレスＣＡ＝００００００００００で指定される番地、すなわちアドレス００００００００Ｈにデータが書き込まれる。これにより、リードアドレス００００００００Ｈのリードアクセスで読み出されたリードデータがライトデータと一致する。
【０１２７】
したがって、ステップＳ２３でライトデータとリードデータの不一致が検出された時は、検査対象ＲＡＳ線に接続されているＤＲＡＭバンクは想定した通りのタイプ４のＤＲＡＭバンク（ＣＡ＝１１ビット、ＲＡ＝１１ビット、メモリサイズ＝１６Ｍバイト）であると判定され（ステップＳ２４）、一方、ライトデータとリードデータの一致が検出された場合には、検査対象ＲＡＳ線に接続されているＤＲＡＭバンクはカラムアドレスビット数が１０ビット以下の他のタイプ（タイプ１、タイプ２、またはタイプ３）のＤＲＡＭバンクであると判定される。この場合には、次のようなステップＳ２５以降の処理が行われる。
【０１２８】
すなわち、ＩＲＴルーチンは、今度は、タイプ４の次にカラムアドレスビット数が大きいタイプ３（またはタイプ２）のメモリ構成（カラムアドレスＣＡ＝１０ビット、ロウアドレスＲＡ＝１１ビット）が検査対象ＲＡＳ線に接続されていると想定して、そのＤＲＡＭバンクに対してライト・リード・コンペアテストを行う（ステップＳ２５）。このライト・リード・コンペアテストでは、ライトアドレス０００００８００Ｈのライトアクセスと、リードアドレス００００００００Ｈのリードアクセスとが行われ、その時のライトデータとリードデータの一致の有無が調べられる（ステップＳ２６）。
【０１２９】
もし、検査対象ＲＡＳ線に実際に接続されているＤＲＡＭバンクがそのカラムアドレス数が９ビット以下のタイプ１のＤＲＡＭバンクであった場合には、前述と同様にカラムアドレスの最上位ビット“１”が無視されるため、そのタイプ１のＤＲＡＭバンクのアドレス００００００００Ｈで指定される番地にデータが書き込まれる。この結果、ライトデータとリードデータの値は一致する。したがって、ライトデータとリードデータの一致が検出された場合には、検査対象ＲＡＳ線に接続されているＤＲＡＭバンクがタイプ１のＤＲＡＭバンク（ＣＡ＝９ビット、ＲＡ＝１０ビット、メモリサイズ＝２Ｍバイト）であると判定される（ステップＳ２７）。
【０１３０】
一方、査対象ＲＡＳ線に実際に接続されているＤＲＡＭバンクが想定した通りの１０ビットのカラムアドレスビット数を持つタイプ２またはタイプ３のＤＲＡＭバンクであれば、アドレス０００１００００Ｈに正常にデータを書き込むことができるので、ライトデータとリードデータの値は不一致となる。したがって、ライトデータとリードデータの不一致が検出された場合には、タイプ２またはタイプ３のどちらのＤＲＡＭバンクが接続されているかを検出するために、次のようなステップＳ２８以降の処理が行われる。
【０１３１】
すなわち、ＩＲＴルーチンは、今度は、それらＤＲＡＭバンクの中でロウアドレスビット数が大きいタイプ３のＤＲＡＭバンク（カラムアドレスＣＡ＝１０ビット、ロウアドレスＲＡ＝１１ビット）が接続されていると想定して、そのＤＲＡＭバンクに対してライト・リード・コンペアテストを行う（ステップＳ２８）。
【０１３２】
このライト・リード・コンペアテストでは、ライトアドレス００４０００００Ｈのライトアクセスと、リードアドレス００００００００Ｈのリードアクセスとが行われ、その時のライトデータとリードデータの一致の有無が調べられる（ステップＳ２９）。
【０１３３】
もし、検査対象ＲＡＳ線に実際に接続されているＤＲＡＭバンクが想定した通りのタイプ３のＤＲＡＭバンクであれば、アドレス００４０００００Ｈに正常にデータを書き込むことができるので、ライトデータとリードデータの値は不一致となる。一方、検査対象ＲＡＳ線に実際に接続されているＤＲＡＭバンクがそのロウアドレス数が１０ビットのタイプ２のバンクであった場合には、ライトデータとリードデータの値は一致する。これは、次の理由による。
【０１３４】
すなわち、ステップＳ２８ではタイプ３のＤＲＡＭバンクに対応する設定が成されているので、アドレス００４０００００Ｈライトアクセス時に出力される１１ビットのロウアドレスはＲＡ（ＭＡ２２，……，ＭＡ１２）＝１００００００００００であり、１０ビットのカラムアドレスＣＡ（ＭＡ１１，……，ＭＡ０２）＝００００００００００である。ロウアドレス数が１０ビットのタイプ２のＤＲＡＭバンクにおいては、１１ビットのロウアドレスＲＡの最上位ビットＭＡ２２の値“１”は無視される。このため、タイプ２のバンクが接続されている場合には、ライトアドレス００４０００００Ｈのライトアクセスによって、その先頭行におけるカラムアドレスＣＡ＝００００００００００で指定される番地、すなわちアドレス００００００００Ｈにデータが書き込まれる。これにより、リードアドレス００００００００Ｈのリードアクセスで読み出されたリードデータがライトデータと一致する。
【０１３５】
したがって、ステップＳ２９でライトデータとリードデータの不一致が検出された時は、検査対象ＲＡＳ線に接続されているＤＲＡＭバンクは想定した通りのタイプ３のＤＲＡＭバンク（ＣＡ＝１０ビット、ＲＡ＝１１ビット、メモリサイズ＝８Ｍバイト）であると判定され（ステップＳ３０）、一方、ライトデータとリードデータの一致が検出された場合には、検査対象ＲＡＳ線に接続されているＤＲＡＭバンクはロウアドレスビット数が１０ビットのタイプ２のＤＲＡＭバンク（ＣＡ＝１０ビット、ＲＡ＝１０ビット、メモリサイズ＝４Ｍバイト）であると判定される（ステップＳ３１）。
【０１３６】
次に、図２で説明したＲＡＳデコーダ１２２、ロウアドレス／カラムアドレスマルチプレクサ１２３、およびページヒット判定回路１２６それぞれの具体的な回路構成について説明する。
【０１３７】
図１３には、ＲＡＳデコーダ１２２の具体的な回路構成が示されている。ＲＡＳデコーダ１３は、図示のように、ＲＡＳ０線〜ＲＡＳ５線にそれぞれ対応する６個のＲＡＳデコード回路５１〜５６を含んでいる。これらＲＡＳデコード回路５１〜５６は、それぞれＤＲＡＭ論理アドレス（ＭＡ３１：０２）と対応するデコード条件との一致／不一致を調べ、一致した際に対応するＲＡＳ線を所定のタイミングで付勢制御する。この場合、実際には３０ビットのＤＲＡＭ論理アドレス（ＭＡ３１：０２）全てのビット値を見る必要はなく、サポートするＤＲＡＭバンクの種類、最大ＤＲＡＭ論理アドレス空間などの条件から、ＭＡ２６，ＭＡ２５，ＭＡ２４，ＭＡ２３，ＭＡ２２，ＭＡ２１，飛んで、ＭＡ１３，ＭＡ１２，ＭＡ１１の９ビットだけがデコードに使用される。
【０１３８】
ＲＡＳデコード回路５１〜５６はどれも同じ回路構成であるので、ここでは、ＲＡＳデコード回路５１の回路構成を代表して説明する。
【０１３９】
ＲＡＳデコード回路５１は、ＲＡＳセットレジスタ６１、ＲＡＳマスクレジスタ６２、９個の一致／不一致検出回路７１〜７９、９個のマスク回路７１〜７９、およびＡＮＤ回路９１から構成されている。
【０１４０】
ＲＡＳセットレジスタ６１は、ＣＰＵ１１によってリード／ライト可能なＩ／Ｏレジスタであり、ここにはＲＡＳ０線のデコード条件を示すビット列がセットされる。例えば、ＲＡＳ０線のデコード条件が図５のように決定された場合には、“００１００Ｘ  ＸＸ１”がＲＡＳ０線のデコード条件としてＲＡＳセットレジスタ６１にセットされる。ここで、Ｘはデコード条件に関係しない不定のビット値（Ｄｏｎ´ｔ  Ｃａｒｅ）を意味する。
【０１４１】
ＲＡＳマスクレジスタ６２は、ＣＰＵ１１によってリード／ライト可能なＩ／Ｏレジスタであり、ここにはＲＡＳ０線のデコード条件とＤＲＡＭ論理アドレスとの一致／不一致の判定結果をビット毎にマスクするか、しないかを指定するマスクデータ（“０”＝マスクする、“１”＝マスクしない）がセットされる。ここで、マスクするというのは、デコード条件のビット列の対応する１ビットの判定結果に関係なく、そのビットの判定結果を常に一致したことにすることを意味する。したがって、ＲＡＳセットレジスタ６１に前述のようにデコード条件として“００１００Ｘ  ＸＸ１”がセットされた場合には、ＲＡＳマスクレジスタ６２には、マスクデータ“１１１１１０  ００１”がセットされる。これにより、デコード条件の“００１００Ｘ  ＸＸ１”の内の“Ｘ”のビットをデコード条件から除外することができる。
【０１４２】
一致／不一致検出回路７１〜７９は、それぞれＤＲＡＭ論理アドレスとデコード条件の対応するビット同士の一致／不一致を検出する。これら一致／不一致検出回路７１〜７９の各々は、排他的論理和ゲートから実現する事ができる。９個のマスク回路７１〜７９は、それぞれ対応する一致／不一致検出回路７１〜７９の検出結果出力をマスクする。
【０１４３】
このように、ＲＡＳデコーダ１２２は、１本のＲＡＳ線当たり９ビットのデータサイズに相当するデータの一致／不一致を行うためのロジックだけで実現する事ができる。
【０１４４】
次に、図１４を参照して、ロウアドレス／カラムアドレスマルチプレクサ１２３の具体的な回路構成について説明する。
【０１４５】
ロウアドレス／カラムアドレスマルチプレクサ１２３は、図示のように、レジスタファイル２０１、パターンデコーダ２０２、ロウアドレスセレクタ２０３、ロウアドレス開始位置切り替え回路２０４〜２０７、およびロウアドレス／カラムアドレスセレクタ２０８から構成されている。
【０１４６】
レジスタファイル２０１は、ＣＰＵ１１によってリード／ライト可能なＩ／Ｏレジスタ群であり、ここにはＲＡＳ０〜ＲＡＳ５線それぞれに対応する６つの制御パラメタがセットされる。各制御パラメタは、対応するＲＡＳ線に接続されたＤＲＡＭバンクのロウアドレス開始位置、つまりＤＲＡＭ論理アドレスのどのｂｉｔをロウアドレスのＬＳＢにするかを指定する。
【０１４７】
ロウアドレス開始位置として使用される可能性があるのは、サポートするＤＲＡＭの種類、およびページインタリーブの条件から、ＤＲＡＭ論理アドレスのＭＡ１１，ＭＡ１２，ＭＡ１３，ＭＡ１４の４ビットである。各制御パラメタは、これら４種類のロウアドレス開始位置のいずれか１つを指定する４ビットデータから構成される。制御パラメタ“０００１”はＭＡ１１を指定し、“００１０”はＭＡ１２、“００１１”はＭＡ１３、“０１００”はＭＡ１４を指定する。
【０１４８】
レジスタファイル２０１にセットされている６つの制御パラメタの１つは、パターンデコーダ２０２に読み出される。どの制御パラメタが読み出されるかは、ＲＡＳデコータ１２２のデコード結果出力によって決定される。例えば、ＲＡＳデコータ１２２によってＲＡＳ０線が付勢される時は、ＲＡＳ０線に対応する制御パラメタがレジスタファイル２０１から読み出される。
【０１４９】
パターンデコーダ２０２は、レジスタファイル２０１から読み出された制御パラメタをデコードし、そのデコード結果に従って、セレクタ２０３に４種類のロウアドレスの１つを選択させるための選択信号を発生する。
【０１５０】
ロウアドレス開始位置切り替え回路２０４は、ＤＲＡＭ論理アドレスＭＡ３１：０２）の中からＭＡ１１をロウアドレス開始位置（ＬＳＢ）とする合計１１ビット（ＭＡ２１，……，ＭＡ１１）をロウアドレス（ＲＡ１０：０）として取り出す。同様に、ロウアドレス開始位置切り替え回路２０５はＭＡ１２をＬＳＢとする合計１１ビット（ＭＡ２２，……，ＭＡ１２）を取り出し、ロウアドレス開始位置切り替え回路２０６はＭＡ１３をＬＳＢとする合計１１ビット（ＭＡ２３，……，ＭＡ１３）を取り出し、ロウアドレス開始位置切り替え回路２０７はＭＡ１４をＬＳＢとする合計１１ビット（ＭＡ２４，……，ＭＡ１４）をロウアドレスとして取り出す。
【０１５１】
これらロウアドレス開始位置切り替え回路２０４〜２０７は、例えばバレルシフタなどによって構成されている。
【０１５２】
ロウアドレスセレクタ２０３は、パターンデコーダ２０２からの選択信号に従って、ロウアドレス開始位置切り替え回路２０４〜２０７から出力される４種類のロウアドレスの１つを選択して出力する。ロウアドレスセレクタ２０３によって選択されたロウアドレスは、ロウアドレス／カラムアドレスセレクタ２０８に供給される。また、このロウアドレス／カラムアドレスセレクタ２０８には、カラムアドレスも供給される。このカラムアドレスとしては、ＤＲＡＭ論理アドレスの下位１１ビット（ＭＡ１２，……ＭＡ０２）が常に使用される。
【０１５３】
ロウアドレス／カラムアドレスセレクタ２０８は、図２のタイミング制御回路１２５からの制御信号によって指定されるタイミングで、ロウアドレスとカラムアドレスを選択的にメモリアドレスバス３３上に出力する。
【０１５４】
このロウアドレス／カラムアドレスマルチプレクサ１２３においては、ＲＡＳデコーダ１２２のデコード動作と並行して、ロウアドレス開始位置切り替え回路２０４〜２０７それぞれによるロウアドレス切り出し動作が行われる。ＲＡＳデコーダ１２２のデコード結果が確定すると、その確定されたデコード結果によって指定される付勢対象のＲＡＳ線に対応した１つの制御パラメタがレジスタファイル２０１から読み出され、それがパターンデコーダ２０２に送られる。そして、そのパターンデコーダ２０２によるデコード動作、およびロウアドレスセレクタ２０３のロウアドレス選択動作が制御パラメタに従って実行され、これによってＤＲＡＭアクセスに使用すべきロウアドレスが確定される。
【０１５５】
なお、ここでは、ロウアドレス開始位置切り替え回路２０４〜２０７およびロウアドレスセレクタ２０３によってロウアドレス（ＲＡ１０：０）の１１ビット全てをＲＡＳ線に応じて切り替えるように説明したが、実際は、全部のロウアドレスのビットを切り替える必要はない。
【０１５６】
すなわち、ロウアドレス開始位置がＭＡ１１，ＭＡ１２，ＭＡ１３，ＭＡ１４のいずれの場合においても、ＭＡ１４〜ＭＡ１９の６ビットは共通に使用されるので、それらビットについては切り替え対象から除外する事ができる。この場合のＣＰＵアドレスとロウアドレスとの対応関係の一例を図１５に示す。
【０１５７】
図１５においては、ロウアドレスの下位３ビット（ＲＡ２〜ＲＡ０）と上位２ビット（ＲＡ１０，ＲＡ９）のみが切り替えの対象となっている。このようにすれば、ＣＰＵアドレスのＭＡ１４〜ＭＡ１９の６ビットをロウアドレスの中位６ビット（ＲＡ８〜ＲＡ３）としてロウアドレス／カラムアドレスセレクタ２０８に直接送ることができるので、ロウアドレス開始位置切り替え回路２０４〜２０７およびロウアドレスセレクタ２０３はそれぞれ切り替え対象の５ビット分のハードウェア構成だけで実現できる。
【０１５８】
このように、図１４のロウアドレス／カラムアドレスマルチプレクサ１２３の回路構成は、必要とする回路数を非常に少なくすることができる。しかし、ＲＡＳデコーダ１２２のデコード結果が確定されてからＤＲＡＭアクセスに使用すべきロウアドレスが確定されるまでには、３つの回路ブロックの動作（レジスタファイル２０１から使用する制御パラメタを選択して読み出す動作、パターンデコーダによるデコード動作、およびロウアドレスセレクタ２０３によるロウアドレス選択動作）を順次行う必要がある。このため、ロウアドレス／カラムアドレスマルチプレクサ１２３内で比較的大きなディレイが生じるという問題がある。
【０１５９】
図１６には、ロウアドレス／カラムアドレスマルチプレクサ１２３の第２の回路構成例が示されている。この図１６の構成は、ロウアドレス／カラムアドレスマルチプレクサ１２３内でのディレイを少なくするための改良が次のように成されている。
【０１６０】
すなわち、この図１６のロウアドレス／カラムアドレスマルチプレクサ１２３においては、図１４のパターンデコーダ２０２およびロウアドレスセレクタ２０３の代わりに、ＲＡＳ０〜ＲＡＳ５線それぞれに対応する６個のパターンデコーダ２０２−１〜２０２−６、および６個のロウアドレスセレクタ２０３−１〜２０３−６が設けられている。パターンデコーダ２０２−１〜２０２−６は、それぞれレジスタファイル２０１のＲＡＳ０制御パラメタ〜ＲＡＳ５制御パラメタに従ってロウアドレスセレクタ２０３−１〜２０３−６のロウアドレス選択動作を制御する。
【０１６１】
また、それらロウアドレスセレクタ２０３−１〜２０３−６の次段には、それらロウアドレスセレクタ２０３−１〜２０３−６によって得られた６種類のロウアドレス（ＲＡＳ０ロウアドレス〜ＲＡＳ５ロウアドレス）の１つをＲＡＳデコーダ１２２のデコード結果に応じて選択するロウアドレスセレクタ２０９が設けられている。
【０１６２】
この回路構成においては、ＲＡＳデコーダ１２２のデコード動作と並行して、ロウアドレス開始位置切り替え回路２０４〜２０７それぞれによるロウアドレス切り出し動作と、パターンデコーダ２０２−１〜２０２−６およびロウアドレスセレクタ２０３−１〜２０３−６によるロウアドレス選択動作とが行われる。これにより、ＲＡＳデコーダ１２２のデコード結果の確定を待たずに、ＲＡＳ０〜ＲＡＳ５線にそれぞれ対応した６種類のロウアドレス（ＲＡＳ０ロウアドレス〜ＲＡＳ５ロウアドレス）を生成することができる。
【０１６３】
ＲＡＳデコーダ１２２のデコード結果が確定すると、その確定されたデコード結果によって指定される付勢対象のＲＡＳ線に対応したロウアドレスがロウアドレスセレクタ２０９によって選択される。
【０１６４】
したがって、ＲＡＳデコーダ１２２のデコード結果が確定されてからＤＲＡＭアクセスに使用すべきロウアドレスが確定されるまでに必要となる回路動作は、最終段のアドレスセレクタ２０９によるアドレス選択動作だけとなり、内部ディレイが大幅に低減される。
【０１６５】
なお、この図１６の構成に於いても、図１４の場合と同様に、全部のロウアドレスのビットを切り替える必要はない。
【０１６６】
図１７には、図２のページヒット判定回路１２６の具体的な回路構成が示されている。
【０１６７】
このページヒット判定回路１２６には、図示のように、レジスタファイル３０１、ページヒット判定用ＣＰＵアドレスレジスタ３０２、一致判定回路３０３、マスク回路３０４、および一致判定マスク位置レジスタ３０５が設けられている。
【０１６８】
レジスタファイル３０１は、ＣＰＵ１１よってリード／ライト可能なＩ／Ｏレジスタであり、ここにはページヒット判定のために使用されるＣＰＵアドレスとの一致条件をマスクするか、しないかを指定するマスクデータ（“０”＝マスクする、“１”＝マスクしない）がＲＡＳ０〜ＲＡＳ５線それぞれに対応する制御パラメタとしてセットされる。
【０１６９】
すなわち、ページヒット判定では、ＣＰＵアドレス（Ａ３１：０２）の中で、ページ内アドレスを除外した残りのアドレス、つまり、カラムアドレスに相当する部分を除いた、ロウアドレス（ページアドレス）およびＲＡＳデコード用アドレスが対象となる。カラムアドレスに相当する部分はページヒット判定に関与しないので、そのカラムアドレスとして使用されているビットそれぞれについての判定結果はマスクデータによってマスクする必要がある。ここで、マスクするというのは、該当するビットの判定結果を常に一致したことにすることを意味する。
【０１７０】
実際には、各ＲＡＳ線に対応するマスクデータは、カラムアドレスの全ビットではなく、Ａ１２，Ａ１１，Ａ１０についてそれぞれマスクするか、しないかを示す３ビットデータから構成されている。これは、一致判定回路３０３が、ＤＲＡＭバンクの種類と関係なく常にカラムアドレスとして使用されるＡ１０よりも下位のビットについては一致判定から除外し、Ａ１０以降の上位のビットだけを一致判定の対象とするように構成されており、また、Ａ１２，Ａ１１，Ａ１０の３ビットそれぞれは、ＤＲＡＭバンクの種類によってカラムアドレスの一部として使用されるか否かが異なるからである。
【０１７１】
例えば、ＲＡＳ０線にタイプ１のＤＲＡＭバンク（カラムアドレスビット数＝９ビット）が接続されている場合には、Ａ１２，Ａ１１，Ａ１０の３ビットの中でＡ１０だけがカラムアドレスの一部として使用される。この時は、ＲＡＳ０線に対応するマスクデータ“１１０”がレジスタファイル３０１にセットされる。
【０１７２】
レジスタファイル３０１にセットされている６つのマスクデータのうちの１つは、レジスタファイル３０１から読み出されて一致判定マスク位置レジスタ３０５にセットされる。どのマスクデータが読み出されるかは、ＲＡＳデコータ１２２のデコード結果出力によって決定される。例えば、ＲＡＳデコータ１２２によってＲＡＳ０線が付勢される時は、ＲＡＳ０線に対応するマスクデータがレジスタファイル３０１から読み出される。
【０１７３】
ページヒット判定用ＣＰＵアドレスレジスタ３０２には、前回のメモリアクセス時のＣＰＵアドレス（Ａ３１：０２）の内のＡ２６〜Ａ１１の１７ビットがページヒット判定用ＣＰＵアドレスとして保持される。このページヒット判定用ＣＰＵアドレスレジスタ３０２の内容は、ページヒットせず、バンクミスまたはページミスが発生した時に、その時のメモリアクセスで使用されているＣＰＵアドレス（Ａ３１：０２）に従って更新される。すなわち、バンクミスまたはページミスが発生すると、タイミング制御回路１２５からレジスタ更新信号が発生される。このレジスタ更新信号に応答して、その時にＣＰＵアドレスバス上に出力されているＣＰＵアドレス（Ａ２６〜Ａ１１）がページヒット判定用ＣＰＵアドレスレジスタ３０２にラッチされる。これによって、ページヒット判定用ＣＰＵアドレスレジスタ３０２の内容は、バンクミスまたはページミスが発生したメモリサイクル時のＣＰＵアドレスに変更される。
【０１７４】
一致判定回路３０３は、今回のメモリアクセス時のＣＰＵアドレス（Ａ２６〜Ａ１１）とページヒット判定用ＣＰＵアドレスレジスタ３０２に保持されているＣＰＵアドレス（Ａ２６〜Ａ１１）との一致／不一致をビット毎に検出し、Ａ２６〜Ａ１１それぞれの検出結果を示す１７ビットデータを出力する。
【０１７５】
マスク回路３０４は、Ａ２６〜Ａ１１それぞれの検出結果の内のＡ１２，Ａ１１，Ａ１０の検出結果出力を、一致判定マスク位置レジスタ３０５のマスクデータに従ってマスクし、マスク後の検出結果出力が全て一致を示す時にページヒット信号ＨＩＴを発生する。
【０１７６】
一致判定マスク位置レジスタ３０５には、付勢対象のＲＡＳ線に対応するマスクデータがセットされる。この一致判定マスク位置レジスタ３０５の内容は、ページヒットせず、バンクミスまたはページミスが発生した時に、その時にＲＡＳデコーダ１２２によって付勢されるＲＡＳ線に対応するマスクデータに更新される。すなわち、バンクミスまたはページミスが発生すると、タイミング制御回路１２５からレジスタ更新信号が発生される。このレジスタ更新信号に応答して、その時にＲＡＳデコーダ１２２によって選択されているレジスタファイル３０１内のマスクデータが一致判定マスク位置レジスタ３０５にラッチされる。これによって、一致判定マスク位置レジスタ３０５の内容は、バンクミスまたはページミスが発生したメモリサイクル時に付勢されるＲＡＳ線に対応したマスクデータに変更される。
【０１７７】
以上のように、この実施例のシステムにおいては、複数のＤＲＡＭバンクそれぞれのメモリサイズがリード・ライト・コンペアテストによって検出され、それらＤＲＡＭバンクの物理的な装着位置とは関係なく、メモリサイズの大小関係に従ってそれらＤＲＡＭバンクのメモリアドレス空間への配置順が決定される。したがって、どのようなタイプの増設メモリがどのような順番で装着されたとしても、最適なメモリ配置に自動的に再設定し直され、システム内のＤＲＡＭバンクは常にそのメモリサイズの大きいもの順にＤＲＡＭ論理アドレス空間の若い方から配置される。
【０１７８】
このようなメモリ配置下においては、ＲＡＳデコーダ１２２はＣＰＵからのメモリアドレス値とデコード条件との一致／不一致をＲＡＳ毎に検出するだけで済む。よって、従来に比し、ＲＡＳデコーダ１２２のハードウェア構成を大幅に簡単化できるので、ＲＡＳデコーダ内のディレイが小さくなり、メモリアクセス速度の高速化を実現できる。また、この構成においては、２つの異なるＲＡＳ線のデコード条件を同一値に設定すれば２つのＲＡＳ線を同時に付勢できめので、アクセスデータ幅を２倍に切り替えるといった応用も可能となる。
【０１７９】
なお、ページ内アドレスの一部をデコード条件として使用すれば、ワードインタリーブを実現することもできる。
【０１８０】
【発明の効果】
以上説明したように、この発明によれば、システム内のＤＲＡＭバンクをそれらのメモリサイズに応じてメモリアドレス空間に最適配置することによってＲＡＳデコーダのデコード条件の簡単化を図ることが可能となる。このため、ＲＡＳデコーダは、ＣＰＵからのメモリアドレス値とデコード条件との一致／不一致をＲＡＳ線毎に検出するだけの構成で済み、従来に比し、そのハードウェア構成を大幅に簡単化できる。
【０１８１】
また、このようなＲＡＳデコーダの構成を採用すると、そのＲＡＳデコーダに設定するデコード条件を替えるだけで容易にページインタリーブアーキテクチャを実現することが可能となる。
【０１８２】
よって、ＲＡＳデコーダの簡単化、およびインタリーブアーキテクチャの有効利用を図ることができ、メモリアクセス速度の高速化を実現できる。
【図面の簡単な説明】
【図１】この発明の一実施例に係るコンピュータシステムの構成を示すブロック図。
【図２】同実施例のシステムに設けられているシステムコントローラ内のメモリ制御ロジックを示すブロック図。
【図３】図２のメモリ制御ロジックに含まれるアドレス変換回路によって実行されるＣＰＵメモリアドレス空間からＤＲＡＭ論理アドレス空間への変換動作の示す図。
【図４】同実施例のシステムに設けられている複数のＤＲＡＭバンクがＤＲＡＭ論理アドレス空間にメモリサイズ順に再配置された状態を表すＤＲＡＭメモリマップを示す図。
【図５】同実施例のシステムに設けられている複数のＤＲＡＭバンクに接続されるＲＡＳ線それぞれのデコード条件を示す図。
【図６】同実施例のシステムでページインタリーブアーキテクチャを実現する場合に採用されるＲＡＳ線それぞれのデコード条件を示す図。
【図７】同実施例のシステムのパワーオン時にＩＲＴルーチンによって実行されるメモリ制御ロジックのための初期設定処理の手順を示すフローチャート。
【図８】同実施例のシステムでサポートされるＤＲＡＭバンクの種類の一例を示す図。
【図９】同実施例のシステムのシステムボード上に標準実装されたシステムメモリのメモリ構成の一例を示す図。
【図１０】同実施例のシステムに設けられた拡張メモリスロットに装着される増設メモリのメモリ構成の一例を示す図。
【図１１】同実施例のシステムに設けられた拡張メモリスロットに装着される増設メモリの他のメモリ構成の一例を示す図。
【図１２】図７のメモリ制御ロジックの初期設定処理において実行される各ＤＲＡＭバンクのメモリサイズ検出処理の手順を示すフローチャート。
【図１３】図２のメモリ制御ロジックに含まれるＲＡＳデコーダの具体的構成の一例を示す回路図。
【図１４】図２のメモリ制御ロジックに含まれるロウアドレス／カラムアドレスマルチプレクサの具体的構成の一例を示す回路図。
【図１５】図１４のロウアドレス／カラムアドレスマルチプレクサのロウアドレス切り替え動作を説明するための図。
【図１６】図２のメモリ制御ロジックに含まれるロウアドレス／カラムアドレスマルチプレクサの具体的構成の他の例を示す回路図。
【図１７】図２のメモリ制御ロジックに含まれるページヒット判定回路の具体的構成の一例を示す回路図。
【符号の説明】
１１…ＣＰＵ、１２…システムコントローラ、１３…システムメモリ、２１，２２…拡張メモリスロット、３１…ＣＰＵローカルバス、３３…メモリアドレスバス、４１，４２…増設メモリ、１２０…メモリ制御ロジック、１２１…アドレス変換回路、１２２…ＲＡＳデコーダ、１２３…ロウアドレス／カラムアドレスマルチプレクサ、１２４…ＣＡＳ発生回路、１２５…タイミング制御回路、１２６…ページヒット判定回路、５１〜５６…ＲＡＳデコード回路、７１〜７９…一致検出回路、８１〜８９…マスク回路、９１…ＡＮＤ回路、２０１，３０１…レジスタファイル、２０２…パターンデコーダ、２０３…ロウアドレスセレクタ、２０４〜２０７…ロウアドレス開始位置切り替え回路、２０８…ロウアドレス／カラムアドレスセレクタ、３０２…ページヒット判定用ＣＰＵアドレスレジスタ、３０３…一致判定回路、３０４…マスク回路、３０５…一致判定マスク位置レジスタ。
【図１】
0003540388.tif 000002
【図２】
0003540388.tif 000003
【図３】
0003540388.tif 000004
【図４】
0003540388.tif 000005
【図５】
0003540388.tif 000006
【図６】
0003540388.tif 000007
【図７】
0003540388.tif 000008
【図８】
0003540388.tif 000009
【図９】
0003540388.tif 000010
【図１０】
0003540388.tif 000011
【図１１】
0003540388.tif 000012
【図１２】
0003540388.tif 000013
【図１３】
0003540388.tif 000014
【図１４】
0003540388.tif 000015
【図１５】
0003540388.tif 000016
【図１６】
0003540388.tif 000017
【図１７】
0003540388.tif 000018