(57)【特許請求の範囲】
【請求項１】
中央演算部と、
ライトバック形式のキャッシュメモリと、
複数のメモリバンクと、データプリロードレジスタと、リードデータ線と、ライトデータ線とを有するメインメモリと、
入力アドレスから前記メインメモリのアクセスのためのバンクアドレス、ロウアドレス、カラムアドレスを形成するアドレス変換回路と、
前記中央演算部と前記キャッシュメモリと前記メインメモリ間を結ぶデータ線とを備え、
前記アドレス変換回路は、前記入力アドレスのＩＮＤＥＸビットの一部のビットを固定した値として前記入力アドレスのＴＡＧビットの一部のビットを変化させた場合に互いに異なる前記バンクアドレス及び同一のカラムアドレスとロウアドレスを出力するものであり、
前記中央演算部からのリクエストアドレスによる前記キャッシュメモリへのアクセスがミスした場合には、
前記キャッシュメモリは、リクエストアドレスとＩＮＤＥＸビットが同じでＴＡＧビットの異なるライトアドレスを出力し、
前記アドレス変換回路は、前記リクエストアドレスに対応するバンクアドレスであるリクエストバンクアドレスを出力し、かつ、前記ライトアドレスに対応するバンクアドレスであるライトバンクアドレスを出力し、
前記キャッシュメモリからのライトデータは、前記データ線から前記プリロードレジスタへ格納された後、前記ライトデータ線を経由して前記ライトバンクアドレス、前記ロウアドレス、前記カラムアドレスにより指定される箇所へ格納され、
前記リクエストバンクアドレス、前記ロウアドレス、前記カラムアドレスにより指定される箇所のリードデータは、前記リードデータ線を介して前記各バンクから前記データ線へ出力されるものであって、前記リクエストバンクアドレスにより指定されるバンクと、前記ライトバンクアドレスにより指定されるバンクとは同一サイクルでアクセスが開始されることを特徴とする情報処理装置。
【請求項２】
請求項１において、
前記ＩＮＤＥＸビットの一部のビットのビット数、前記ＴＡＧビットの一部のビットのビット数、及び前記バンクアドレスのビット数は互いに等しいことを特徴とする情報処理装置。
【請求項３】
請求項１において、
前記複数のメモリバンクの数は、２のＮ乗個（Ｎ＝１，２，３、．．．）であり、
前記ＩＮＤＥＸビットの一部のビットは、前記ＩＮＤＥＸビットの下位のＮビットであり、
前記ＴＡＧビットの一部のビットは、前記ＴＡＧビットの下位のＮビットであることを特徴とする情報処理装置。
【請求項４】
請求項１において、
前記キャッシュメモリは、前記ＩＮＤＥＸビットで表される数を持つ複数のエントリーブロックを含み、
前記複数のエントリーブロックのそれぞれは、前記リクエストアドレスに含まれる前記ＴＡＧビットと比較するためのエントリーＴＡＧアドレスを記憶するためのアドレス領域と前記メインメモリのデータが複写すべきデータ領域とを有することを特徴とする情報処理装置。
【請求項５】
請求項１において、
前記アドレス変換回路は、前記リクエストアドレスのＩＮＤＥＸビットの一部のビットと前記リクエストアドレスのＴＡＧビットの一部のビットとを受けて、前記リクエストバンクアドレスを示すバンクアドレスビットを出力する論理回路を含むものであり、
前記キャッシュメモリは、前記キャッシュメモリに含まれる一つのブロック中で書き換えられたデータをそれに対応するアドレスを持つメインメモリに書き戻す動作であるライトバック動作を行うための前記ライトアドレスを示すライトバックアドレスビットを出力可能とするものであり、
前記アドレス変換回路は、前記ライトバックアドレスビットの一部のビットと前記ＩＮＤＥＸビットの一部のビットとを受けて、前記ライトバンクアドレスを示すライトバック用バンクアドレスビットを出力する第２論理回路を更に有し、
前記ライトバック動作を行う場合に、前記ライトバック用バンクアドレスビットは、書き込みが行うべき前記複数のメモリバンクの一つを指定することを特徴とする情報処理装置。
【請求項６】
請求項５において、
前記第２論理回路は、前記論理回路と同一の論理演算をする回路であることを特徴とする情報処理装置。
【請求項７】
請求項５において、
前記情報処理装置は、前記アドレス変換回路から前記メインメモリに前記バンクアドレスビットを伝達するための第１アドレスバスと前記アドレス変換回路から前記メインメモリに前記ライトバック用バンクアドレスビットを伝達するための第２アドレスバスとを更に有し、
前記メインメモリは、前記バンクアドレスビットによって選択される前記複数のメモリバンクの一つからの読み出し動作と、前記ライトバック用バンクアドレスビットによって選択される前記複数のメモリバンクの他の一つへの書き込み動作とが、並列して実行される期間を有することを特徴とする情報処理装置。
【請求項８】
請求項１から７のいずれかにおいて、
前記キャッシュメモリは、ダイレクトマップ方式又はセットアソシアティブ方式とされることを特徴とする情報処理装置。
【請求項９】
請求項１から８のいずれかにおいて、
前記中央演算部と、前記キャッシュメモリとは第１半導体チップ上に形成され、前記アドレス変換回路は第２半導体チップ上に形成され、前記メインメモリは第３半導体チップ上に形成されたメモリチップを含むことを特徴とする情報処理装置。
【請求項１０】
請求項１から８のいずれかにおいて、
前記中央演算部と、前記キャッシュメモリと、前記アドレス変換回路は第１半導体チップ上にモノリシックに形成され、前記メインメモリは第２半導体チップ上に形成されたメモリチップを含むことを特徴とする情報処理装置。
【請求項１１】
請求項１から１０のいずれかにおいて、
前記メインメモリはダイナミック形メモリであることを特徴とする情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
CPUとメモリを含む情報処理システムにおいて、特に、キャッシュメモリを用いる場合の主記憶装置(メインメモリ)に対するアドレスの割付に関する。
【０００２】
【従来の技術】
この明細書で参照される文献のリストは以下の通りであり、文献の参照は文献番号をもってすることとする。[文献１]：日経マイクロデバイス 1998年２月号、 pp.134-141、  [文献２]：David A. Patterson and John L Hennessy, "Computer Architecture  A Quantitative Approach Second Edition", Morgan Kaufmann Publisher Inc., (1996),  pp.375-384。
【０００３】
[文献１]には、DRAMへのアドレスマッピング例がpp.141に開示されている。アドレスマッピングとは、アドレス信号とＤＲＡＭチップ内で選択される場所との対応づけのことである。この例では1チップ4バンクの64Ｍbit DRAMを2チップ用いている。この例で64ビット単位の連続するアドレスへのアクセスは、同文献の図C（a）に示すようにアドレスビットの下位から列、行、デバイス、バンクの順にアドレスを割り当てると、第一チップと第二チップの2つのメモリバンクへ隙間なく16MBのデータを記憶できる。同文献の図Ｃ（ｂ）はアドレスビットを下位から列、バンク、デバイス、行の順で割り当てる例である。これにより８個のバンクに連続するアクセスが分散するようにデータを記憶することが記載される。
【０００４】
【発明が解決しようとする課題】
本願に先立ち本願発明者は、現実の情報処理システムが中央演算部（以後CPUとよぶ）とキャッシュメモリ及びメインメモリとからなり、それらの相互関係を考慮したアドレスマッピングについて検討した。その結果、CPUの発行するアドレスは、キャッシュメモリによってメインメモリへ行われるものが選別されるため、キャッシュメモリとの関係を考慮したメインメモリへのアドレス変換（アドレスマッピング）の必要性があることを見いだした。
【０００５】
図２は、本願に先だって検討したキャッシュメモリのアドレス管理を示す図である。この図は、物理アドレスをキャッシュメモリが管理する領域に分けたものであり、[文献２]のpp.378よりの引用である。キャッシュメモリは、物理アドレスを大きくブロックオフセットとブロックアドレスの２つに分割して扱う。ブロックオフセットはキャッシュメモリが保持するデータを扱う最小単位であり、ラインサイズとも呼ばれる。ブロックアドレスはブロックオフセット単位のアドレスである。また、ある種のキャッシュメモリは、ブロックアドレスをさらに二分割して管理する方式をとる。これは、ダイレクトマップ方式、セットアソシアティブ方式と呼ばれるキャッシュメモリの場合である。これらの方式では、下位をINDEX、上位をTAGと呼ぶ。
【０００６】
図３はキャッシュメモリがアドレスとデータを管理する様子を示したものである。この図は、[文献２]のpp.381 からの引用である。ここでCMはキャッシュメモリであり、容量が8-KBでラインサイズが32Bのダイレクトマップのキャッシュメモリを示している。まず、CPUからメモリシステムへの要求アクセスにおいて、キャッシュメモリへリードアクセスがヒットした場合について説明する。CPUからのリクエストアドレス(以後、リクエストアドレスとする)はアドレス線にてキャッシュメモリへ伝達される（図中▲１▼）。その後、リクエストアドレスの一部分であるINDEX情報を元に、キャッシメモリにエントリーされている番号が決定される。ここではダイレクトマップ形式のキャッシュメモリを例にしているので、INDEXアドレスの総数（この例では２の８乗の２５６）とキャッシュメモリのエントリー数が一致している。そのためこの対応は１対１対応できまる（図中▲２▼）。アドレスのINDEX情報からキャッシュメモリのエントリー番号が選択された後、そのエントリー番号で示されるエントリーに格納されているTAGと、リクエストアドレスのTAGを比較する（図中▲３▼）。これはキャッシュメモリのエントリーが有効である場合のみ行う（有効ビットValidにて確認する）。リクエストアドレスとキャッシュにエントリーされているTAGが一致している場合は、ブロックオフセットのアドレスを利用して、４：１のマルチプレクサで所望の８バイトのデータをCPUへ伝達させる（図中▲４▼）。一方、リクエストアドレスとキャッシュに保持されているデータのアドレスが一致しなかった場合はメインメモリへアクセスすることになる。
【０００７】
次にメモリシステムへの書き込みについて述べる。ここでは、ライトバック形式(後述)のキャッシュメモリにおいて、キャッシュメモリへライトアクセスがヒットした場合について説明する。CPUから書き込み要求が発生すると、前述したリードアクセスと同様、キャッシュメモリへリクエストアドレスが伝達される。その後、前述した手続きをおこない、キャッシュメモリに保持されたデータのアドレスと一致するかが判定される。ここで、リクエストアドレスのTAGがキャッシュメモリ内に保持されているTAGと一致していれば、キャッシュメモリに保持しているデータを変更し、メインメモリのデータとは一致してないことを示すダーティービットを立てる(不図示)。CPUはキャッシュメモリの内容のみ更新し処理を続行することが可能なので高速アクセスができる。
【０００８】
さて、このようにキャッシュメモリの内容が変化している状態で、次のアクセスがキャッシュミスである場合の処理について述べる。この場合、キャッシュメモリの内容を新たに要求された内容に置き換える必要が生じる。これは、参照の局所性（新しく必要となったデータは近い将来ふたたび必要とされる確率が高いという性質）を利用しているためである。このキャッシュ内容の置き換え動作を以後ライトバックと呼び、この形式をとるキャッシュメモリをライトバック型キャッシュメモリと呼ぶ。キャッシュメモリはアドレスの一部であるINDEX部でデータを管理するので、ここで置き換えられるアドレスはリクエストアドレスとINDEX部が同じでTAG部が異なる性質がある（ブロックオフセット分はそっくり置き換えられる。これをキャッシュのリプレースと呼ぶ）。
【０００９】
このようなキャッシュメモリの動作を考慮すると、メインメモリへのアクセスには、参照の局所性とライトバック時のINDEXが同じでTAGが異なるアドレス間のアクセスの２種類の性質を考慮する必要がある。[文献１]の例では、アクセスの空間的局所性に依存した前者のタイプのアクセスに対しては、アクセスが異なるバンクへ分散するため高速アクセスが可能であるが、後者のライトバック時のアクセスに対しては考慮されていない。即ちライトバックにより同一バンクの異なるワード線へのアクセス（バンク競合状態）が生ずるとと高速アクセスがこんなんとなる。そのため、ライトバックが頻繁に発生するアプリケーション（プログラム）を実行する際に問題となる。
【００１０】
そこで本発明の目的の一つは、キャッシュメモリを有する情報処理装置の主記憶装置(メインメモリ)にDRAMを用いる場合に、バンク競合状態を避けるために、アクセスの局所性とライトバック時のアクセスの規則性を取り入れて、これらのアクセスを高確率でDRAMの異なるバンクに割り当てることである。さらには、本願の他の目的はライトバック処理後の次のリードアクセス高速化することである。
【００１１】
【課題を解決するための手段】
本願発明の代表的な手段を示せば以下の通りである。CPUからのリクエストアドレスをDRAMの各バンクに割り当てる際に、局所的なアクセスとライトバック時のアクセスを異なるバンクへ割り当てられるように、DRAMのバンクアドレスをINDEX部とTAG部の演算によってDRAMのバンクアドレスを生成することである。より具体的には、CPUの発するリクエストアドレスのINDEX部とTAG部から演算によってDRAMのバンクアドレスを生成するアドレス変換回路も設ける。INDEX部とTAG部からDRAMのバンクアドレスを生成するための典型的な演算は加算である。
【００１２】
【発明の実施の形態】
＜実施例１＞
図１は本願の情報処理装置の基本概念を示す構成図である。これは、キャッシュメモリCMとCPU装置と、アドレスマッピング回路AMCを含むメモリコントローラMCONと、1以上のDRAMを含むメインメモリMMで構成される。CPUからのリクエストアドレスは、ADBUSにてCMおよびMCONへ伝達される。CMへ伝達されたリクエストアドレスはAMCにてDRAMアクセスのためのバンクアドレス、ロウアドレス、カラムアドレスに変換された後、ADBUSBにてMMへ伝達される。ここではアドレス変換の方法を説明するため小規模なシステムを用いて説明する。そのため、キャッシュメモリの容量が128B、ブロックオフセットが４ビット（16B）、のダイレクトマップ型キャッシュメモリを想定して説明する。この例ではINDEXが３ビット、TAGが23ビットである。
【００１３】
図４は本発明で用いられるメインメモリMMの構成例である。ここでは容量が512Ｂ（アドレスとしては９ビット必要）、構成バンクが２バンク（アドレスは１ビット必要）のDRAMでMMを構成すると考える。ここで、基本的なメモリアレイは、複数のワード線WLとビット線BLの交点に設けられたダイナミック型メモリセルMC（１個のトランスファーMOSFETと１個のキャパシタを持つ）を複数持ち、センスアンプSAはWLで選択されたメモリセルのデータを増幅する機能を持つ。SAにて増幅されたデータはBL上に保持され、切り替えスイッチYSによってグローバルビット線GBLにつながれてCPUへ伝達される。
【００１４】
図５はアドレス変換の一実施例である。ここではリクエストアドレスRQADRがアドレス変換回路（アドレスマッピング回路）AMCにてDRAMアクセスのアドレスDRADRへ変換される様子を説明する。AMCは論理回路LCを含む。リクエストアドレスRQADRの上に記した数字は、アドレス構成ビットの下位からの番号である。LINEはキャッシュメモリのブロックオフセットを示す。ここで後の便宜のため、このアドレスをDRAM容量を考慮して別の割り当て方を定義する。D-LINEはDRAMのワード線単位のブロックオフセットと定義し、D-TAGはTAGの下位からDRAM容量（ここでは９ビット）までと定義し、D-INDEXは、D-TAGと同数ビットで構成されるINDEXの一部と定義する。この例では、D-LINEはアドレスの下位からINDEXの下位まで割り当てている。これは、連続するアドレスがより多く同一のワード線へ集まるように割り当てているため、高速ページモード等を用いることで高速アクセスが可能である。また場合によってはD-LINEをLINEとINDEXの上位で構成することも可能である。このような実施例は、連続するアドレスが異なるワード線へ割り当てられるので、DRAMへのアクセスにおいて、常にプリチャージをおこなう信号を付加する場合に有効である。
【００１５】
次に、AMCで変換をおこなうアドレスについて説明する。ここでは参照の局所性に起因するアクセス(局所アクセス)を同一ワード線へ集め、同一ワード線へ集めきれない局所アクセスとライトバック時のアクセスを異なるバンクへ割り当てる例を考える。これは、DRAMは同一のワード線上のデータには最初のアクセス以外は高速に行え、また、同一ワード線上にないデータでも、異なるバンクのワード線上のデータであれば、バンクを独立動作させることによって高速アクセスがおこなえるからである。したがって、ここで変換をおこなうアドレスは、D-INDEXとD-TAGである。これらのアクセスをできる限り異なるバンクへ割り当てるアドレス変換方式は、排他論理和をD-INDEXの一部とD-TAGの一部に対しておこなうことで実現する。ここではDRAMのバンク数が２であることを考慮して、D-INDEXとD-TAGの下位1ビットを排他論理和で演算した結果をDRAMのバンクアドレスRBAに割り当て、D-TAGの上位1ビットとD-INDEXの２ビットをロウアドレスRRAへ割り当て、D-LINEの上位1ビットをカラムアドレスRCAへ割り当てる。このような変換を行う論理回路は排他論理和が唯一ではなく、たとえば加算器をもちいても達成できる。加算器を用いる場合は、
BANK = （D-TAG ＋ D-INDEX） mod Ｎ  （但しＮはバンク数）
でDRAMのバンクアドレスを変換すればよい。これはオーバーフローのキャリーを無視する加算器で実現される。バンク数が2の場合は排他論理和による演算と加算による演算は一致するが、これ以外の場合は変換結果が異なる。
【００１６】
図６はこのようなアドレス変換を行ってバンクアドレスを割り当てた結果である。横軸はD-INDEXの下位一ビットD-INDEX_L1（２進表記）であり、縦軸はD-TAGの下位一ビット（２進表記）D-TAG_L1である。図中の各桝内の数字はバンクアドレスである。本発明のマッピングをおこなうと、D-INDEXのみ変化する連続アクセスの一部に対しても、また同時に、INDEXが同じでTAGが異なるライトバック時のアクセスの一部についても異なるバンクに割り当てることが可能となる。そのため、空間的局所性を有するアクセスもライトバック時のアクセスも高い確率で異なるバンクへ割り当てられるので、高速アクセスが可能となる。
【００１７】
＜実施例２＞
上述のようにINDEXが同じでTAGが異なるアドレスは、高い確率でバンク競合が起こらないようにDRAMの異なるバンクへ割り付けることが可能である。このアドレス割り付けを拡張すると、ライトバック時のリードとライトを完全に別バンクに割り当てることが可能となるので、ライトバック時のリードアクセスとライトアクセスを同一のサイクルで行うことが可能となる。以下でその実施例について述べる。
【００１８】
図７は、ライトバック時（キャッシュメモリをミスした際にキャッシュ内容の置き換えが発生するアクセス）に発生するリードアクセスとライトアクセスを完全に別バンクに割り当て、それによってライトバック時のリードとライトを同時に行う発明の一実施例である。これは、CPUと、キャッシュメモリCMと、DRAMを含むメインメモリMMと、MMを制御するメモリコントローラMCONと、MCONに含まれるアドレス変換回路AMCによって構成される。
【００１９】
CPUからのリクエストアドレスは、ADBUSAにてCMに伝達されるとともにMCONへも伝達される。MCONへ伝達されたリクエストアドレスはAMCへ伝達され、DRAMのバンクアドレスRBA、ロウアドレスRRA、カラムアドレスRCAに変換される。また、ライトバック時のライトアドレスのTAGはCMよりWBADBUSにてMCONへ伝達され、AMCにてDRAMのライトバック時のライト用バンクアドレスWBAに変換される。AMCで変換されたこれらのアドレスはADBUSBにてMMへ伝達される。なお詳しくは後述するが、このADBUSBはリクエストアドレスのバンクアドレスRBAを伝達アドレス線RBALと、ライトバック時のライトアドレスのバンクアドレスWBAを伝達するアドレス線WBALと、ロウアドレスRRA、カラムアドレスRCAを伝達するアドレス線RCLとで構成される。CPUからCMとMCONへの制御はCTBUSAにて行われる。MMへの制御は、MCONからCTBUSBにて行われる。CPUとCMおよびMMで構成されるメモリシステムへのデータ授受は、DABUSにて行われる。
【００２０】
図８（Ａ）はメインメモリの一実施例である。ここで考えるCMは容量が128B、ブロックオフセット(LINE)が４ビット（16B）、のダイレクトマップ型とし、MMは容量が512B（アドレスとしては９ビット必要）とする。この場合、D-TAGが２ビットとなるので、INDEXが同じでTAGが異なるアクセスを別バンクへ割り当てるためには、
バンク数  ＝  ２のD-TAG乗  ＝  ２の２乗  ＝  ４
とすればよい。各バンクはRA0からRA3で示される4本のワード線で構成される。このDRAMの構成は、ライトバック時のリードアクセスとライトアクセスが完全に別バンクに割り当てられることが特徴である。なお、ワード線の上に記した数字は、後程説明する加算によってバンクアドレスを変換する場合のD-INDEXとD-TAG部分のアドレスである。
【００２１】
ここで、各部の動作を説明する。RBAL、WBAL、RCLで構成されるADBUSBにて入力されたDRAMアクセスのアドレスはアドレスバッファADBUFで受け、その後ADBUSCにて各バンクへ伝達される。CTBUSBにて入力された制御信号は、制御部CTRへ入力された後、CTRからDRAM内の各部を制御する。DRAMへのデータ入出力はDABUSを用いておこない、DRAM内のI/OバッファIOBUFへ結線される。この実施例では、ライトバック時のリードとライトを同時に行うが、DABUSの構成線数を従来と同じとすることを特徴とする。したがって、このDABUSはリードとライトで共用する。また、ライトバック時のリードとライトを同時に行うため、本発明ではDRAM内部でのリードとライトのデータの伝達経路を独立化する。まずリードデータはリードデータ線RDLにて各バンクから直接このIOBUFへ伝達し、ライトデータはライトデータ線WDL1にてIOBUFからデータプリロードレジスタDPLREGへ伝達した後、ライトデータ線WDL2にて各バンクへ伝達する。このようにDPLREGを設置することにより、詳しくは後述する１ポートで擬似的な２ポートアクセスが可能となる。
【００２２】
図８（B）はこのような構成のDRAMの１バンクの構成例である。記号の意味は図４と同じであり、ここではその構成数のみが異なる。
【００２３】
図９はリクエストアドレスとライトバック時のライトアドレスのTAGアドレスをDRAMアクセスのアドレスへ変換するアドレス変換回路AMCを含むメモリコントローラMCONの一実施例である。リクエストアドレスRQADRは、AMCによってDRAMアクセスのアドレスDADR1に変換され、ライトバック時のアドレスWBADRはAMCによってDRAMアクセスのアドレスDADR2に変換される。また、外部からの制御線はCTBUSAにてMCON内の制御回路CTR1へ伝達され、DRAMアクセスの制御信号を生成し、DRAMへCTBUSBにて伝達する。
【００２４】
ここで、AMCによるアドレス変換について説明する。まず、D-TAGとD-INDEXとD-LINEの一部がMCONへ伝達されMCON内部のAMCへ伝達される。AMCへ入力されたD-TAGとD-INDEXはAMC内部のLC1へ伝達される。LC1は2つの排他論理和回路XOR1、XOR2で構成される。LC1へはD-INDEXの下位1ビットがLC1のノード１N1へ、D-TAGの下位1ビットがLC1のノード２N2へ、D-INDEXの上位1ビットがLC1のノード３N3へ、D-TAGの上位1ビットがLC1のノード４N4へ伝達される。LC1内では、N1とN2が排他論理和回路XOR２に入力され、演算結果がノード５N5へ出力される。また、N3、N4が排他論理和回路XOR1に入力され、演算結果がノード６N6へ出力される。N5はバンクアドレスRBAの下位1ビットに割り当てられ、N6はRBAの上位1ビットに割り当てられる。また、D-INDEXの下位１ビットはロウアドレスRRAの下位１ビットへ、D-INDEXの上位１ビットはロウアドレスRRAの上位１ビットへ割り当てられる。ここではキャッシュメモリへのデータ転送（キャッシュフィル）を32ビットづつ４回おこなう例を考えるので、カラムアドレスRCAはD-LINEの上位３ビットをカラムアドレスへ変換する。
【００２５】
次に、ライトバック時のライトアドレスWBADRの変換について説明する。AMCへ伝達されたWBADRのD-TAGとRQADRのD-INDEXとがLC2へ伝達される。LC2は2つの排他論理和回路XOR3、XOR４で構成される。ここでも、LC2へはD-INDEXの下位1ビットがLC1のノード７N7へ、D-TAGの下位1ビットがLC1のノード８N8へ、D-INDEXの上位1ビットがLC1のノード９N9へ、D-TAGの上位1ビットがLC1のノード１０N10へ伝達される。N7とN8は排他論理和回路XOR4に入力され、演算結果がノード11N11へ出力される。またN9、N10が排他論理和回路XOR3に入力され、演算結果がノード１２N12へ出力される。N11はWBAの下位1ビットに割り当てられ、N12はWBAの上位1ビットに割り当てられる。ライトバック時のライトアドレスのロウアドレスとカラムアドレスは、リクエストアドレスのINDEXとLINEと等しいので、リクエストアドレスのロウアドレスRRAとカラムアドレスRCAと同じである。
【００２６】
ここで得られたDRAMアクセスのアドレスRBA、WBA、RRA、RCAはタイミングコントローラTCRへ伝達され、その後RBAL、WBAL、RCLで構成されるADBUSBにてDRAMへ伝達される。DRAMへのアドレスの投入タイミングはこのTCRにて制御される。
【００２７】
図１０はリクエストアドレスとライトバック時のライトアドレスのTAGアドレスをDRAMアクセスのアドレスへ変換する図９のアドレス変換回路AMC内の論理回路LC１及びLC2の別の実施例である。ここでは、LC1、LC2に加算器を用いる例を示し、その構成と機能について説明する。LC1は1つの論理積回路AND1と3つの排他論理和回路XOR1、XOR2、XOR5にて構成される。LC1内の演算は、N1とN2を排他論理和XOR2へ入力しその出力結果をN5に出力し、N1とN2を論理積回路AND１へ入力し、N3とN4を排他論理和XOR1へ入力し、AND1とXOR1の出力結果を排他論理和XOR5へ入力し、その結果をN6に出力する。LC2もLC1と全く同じに構成される。
【００２８】
図１１はAMCによるバンクアドレスの変換結果である。この図で縦軸はD-TAG(2進表記)であり、横軸はD-INDEX(2進表記)であり、各桝目内はバンクアドレス(10進表記)である。（A）はAMCの論理回路LC1, LC2に排他論理和を用いた図９の場合のバンクアドレス変換結果であり、（B）はAMCの論理回路LC1, LC2に図１０の加算器を用いた場合のバンクアドレス変換結果である。いずれの論理回路を用いても（A）、（B）に示すように、バンクアドレスは横軸方向も縦軸方向も全て異なる数字が割り当てられている。即ち、アドレス変換に必要な論理回路を一般化すれば、ＩＮＤＥＸビットの一部のビットとＴＡＧビットの一部のビットを受けてバンクアドレスビットを出力するものであって、ＩＮＤＥＸビットの一部のビットを固定した値としてＴＡＧビットの一部のビットを変化させた場合に互いに異なる前記バンクアドレスビットを形成し、かつＴＡＧビットの一部のビットを固定した値としてＩＮＤＥＸビットの一部のビットを変化させた場合に互いに異なるバンクアドレスビットを出力するものである。このようにメインメモリへ行われる空間的局所性の高いアクセスを別バンクへ割り当て、同時に、ライトバック時のリードとライトのアクセスを完全に別バンクに割り当てることができる。
【００２９】
図１２は図８のDRAMに対して、ライトバック（書き戻しと読み出し）の後に読み出しを行う時のアクセスプロトコルを示すものである。図１２（Ｂ）は本発明の擬似的な2ポートアクセスの動作を示す実施例である。ここで擬似的な2ポートアクセスとは、一つのメモリバンクに対する書き込みと他の一つのメモリバンクからの読み出しを時間的に並列にして行うメモリアクセスをさす。図１２（Ａ）は、比較のための擬似的２ポートアクセスを行わないでライトバックを行う例をしめしている。（Ａ）、（Ｂ）ともに最上段はDRAMの動作クロック（CLK）を示しクロックの立ち上がりエッジに通し番号を付けた。次段はDRAMに入力されるアドレス（Address）を示し、３段目はCPU-DRAM間のデータバスの使用状況（Data）を示す。ここでは、ライトバック動作としてDRAMのバンク１にリードアクセスが、バンク２にライトアクセスが生じ、その後、バンク３にリードアクセスが発生した場合について記した。また、最下段は各バンクの使用状況を示している。なお、#の付いた数字は、アクセスの順番を表わしている。
【００３０】
まず図１２（Ａ）のアクセス方法について述べる。DRAMへのリードアクセス要求が発生すると、所望のリードデータが格納されているバンクのワード線を立ち上げてメモリセル内のデータをセンスアンプで増幅する動作（バンクアクティブ動作）がおこなわれる。これは、バンクアドレスRBAとロウアドレスRRAをDRAM側へ伝達し、同時に、バンクアクティブコマンドACT#1が投入されることで行われる。所望のリードデータがセンスアンプにて増幅されると（バンクアクティブ状態）、カラムアドレスRCAとリードコマンドR#1をDRAMへ投入することによってセンスアンプに増幅されたデータの一部がデータバスに読み出される。その後のライトは、ライトのバンクアドレスWBAとロウアドレスRRAとバンクアクティブコマンドACT#2を投入することでバンクアクティブ動作を行い、バンクアクティブ状態になった後にライトコマンドW#2とライトデータを入力することでおこなう。ここではバンクアクティブコマンドを投入してからリード及びライトコマンドを投入するまで2クロックかかるとし、リードコマンド投入からデータ出力まで2クロック、ライトコマンド投入からライトデータ入力まで0クロックとした。さらにその後のバンク３に発生したリードアクセスはバンク１でのリードアクセスと同様に処理される。但し、ライトデータのバーストアクセスを妨げないために、最初のバンクアクティブコマンドACT#1投入後10クロック後に3番目のバンクアクティブコマンドACT#3を投入する。この時リードコマンドR#3はその後2クロック後に投入される。このように（Ａ）では最初のバンクアクティブコマンドを投入してから2回目のリードデータが出力完了するまで17クロックかかる。
【００３１】
一方、図１２（Ｂ）に示す本発明のアクセス方法は、ライトバックが発生するとバンク１のリードアクセスを開始すると同時にバンク２のライトアクセスを開始する。このアクセスによりDRAMへ送られるコマンドとアドレスは、ライトバックコマンドWB#1とリードバンクアドレスRBAとライトバンクアドレスWBAとロウアドレスRRAである。ここでロウアドレスRRAがリードとライトで同一なのは、ロウアドレスがINDEXの一部であり、ライトバック時のリードとライトのアドレス間にはINDEXが同じでTAGが異なる性質があることを利用したものである。また同時に、データバスにはライトデータの転送が開始される。これはリードデータがバンクアクティブコマンドを投入後4クロック後に出力されることを考慮して、ライトデータをその待ち時間に入力するためである。ライトバックコマンドを投入後2クロック後にカラムコマンドC#1とカラムアドレスRCAを投入する。このカラムアドレスもリードとライトで同一である。それは、カラムアドレスがINDEXの一部とLINEの一部で構成されており、ライトバック時は、INDEXが同じでTAGが異なる同一LINEが置き換えられるからである。このようにすると、ライトバック時のリードとライトアクセスを同時おこなうことができる。このとき、ライトデータはライトバンクがアクティブとなる前に入力されるため、データプリロードレジスタDPLREGで一旦このライトデータを受ける。このライトデータは、ライトバンクが活性化した後に、カラムコマンドC#1とカラムアドレスRCAによって、DPLREGから該当バンクへ転送される。一方、バンク2ではこのC#1とRCAによってリードデータが出力される。このように、バンク１とバンク２にてライトバック時のリードとライトが処理できるので、同一サイクルでライトバック時のリード動作とライト動作が終了できる。その後にバンク３に発生するリードアクセスは、（Ａ）のリードアクセスと同様の手続きでおこなわれる。この場合、バンク３へのリードアクセスが（Ａ）に比べて早く開始できるため、ライトバックが発生してからバンク３のリードアクセスが終了するまで11サイクルで済む。これは（A）に比べて6サイクル高速化することになる。
【００３２】
本願発明の疑似２ポートアクセスは、アドレスバスの最小限の追加で２つのメモリバンクへの並列アクセスできる点に特徴がある。「疑似」でない通常の２ポートアクセスとは、アドレスバスもデータバスも２組使用することを意味する。即ち、書き込みと読み出しを時系列てきにではなく並列に行うには、通常は２倍のバスが必要となるが、ハードウェアが増加する点で好ましいものではない。本願の疑似２ポートとアクセスでは、並列アクセスを可能とするためにバンクアドレスだけは２組必要とするが、他のアドレスバスとデータバスを追加する必要がない点が利点である。即ち、ライトバック時には、バンクアドレスだけが異なり他のロウアドレスとカラムアドレスは同じ場所がアクセスされるため、バンクアドレス以外のアドレスバスの追加を必要としない。
【００３３】
また、ＤＲＡＭバンクを活性化してデータを読み出すには所定の時間がかかってしまう。この時間を利用して、ライトバックにおいてデータバスは時分割的に使い、データバスの増加を防止している。即ち、最初キャッシュからの書き戻しデータがデータバスによりＤＲＡＭに伝達されＤＲＡＭのプリロードレジスタDPLREGに取り込まれる。その後で他のメモリバンクからのデータがデータバスによりキャッシュに伝達される。従ってデータバスを時分割的に利用するために、ＤＲＡＭには、バンクが活性化して書き込みが可能になる前に書き込みデータを取り込んでおくためのプリロードレジスタDPLREGを設けておけば良い。
【００３４】
なお、バースト長を複数設定できるシンクロナスDRAM(SDRAM)のようなプロトコルでは、連続するデータの長さ（バースト長）を調節できる。このような方式では、バースト長分のデータが出力される前に別のリードコマンドを投入すると、以前のデータのバースト転送が遮断されてしまう。そこでキャッシュメモリの内容を置き換える目的のライトバック時は、必要となる転送データ長が決まっているため、バースト転送を遮断することなく次のリードコマンドを投入できるようにすれば、ライトバック時のリードデータが出力完了した後に直に次のリードデータが出力開始できるようになる。
【００３５】
＜実施例３＞
図１３は、図７の情報処理装置に対して本発明を現在用いられている典型的な容量を有するキャッシュメモリとDRAMを用いた場合に適用した他の実施例である。ここでは、キャッシュメモリとして、容量が512KB、ブロックオフセット(LINE)が32Bであるダイレクトマップ形式のライトバック方式を考える。この場合、LINEは５ビット[0:4]、INDEXは14ビット[5:18]、残りがTAG[19:31]となる。一方、メインメモリの総容量は128MBとし、容量が8MBのマルチバンク構成のDRAMで構成することを考える。まず、この128MBが１チップDRAMであると仮に考えれば、先に定義したD-TAGの概念を用いることができ、D-TAGは8ビットとなる。これにより、本システムで必要な独立バンク数は256と決まる。しかし、ここでは１チップDRAMの容量は８MBであり、このような大容量に対応していないため、16チップを用いてメインメモリを構成する。その結果、１つのDRAMチップのバンク数は16バンク、１バンクあたりのワード線数は、256本、一本のワード線下のメモリセル数は16384個とすれば実現される。
【００３６】
ここでメモリコントローラMC内でのAMCによるアドレス変換について説明する。ここでは加算演算によりDRAMのバンク及びチップ番号を決定する方法を述べる。まずリクエストアドレスRQADRの変換について述べる。ここで加算演算するアドレスの部分はD-TAG[19:26]とD-INDEX[5:12]である。このD-TAGとD-INDEXを加算器ADDER1へ入力することによって、その出力結果の下位4ビットをバンクアドレスRBA、上位4ビットをチップセレクトCS1へ変換する。このうちRBAはタイミングコントローラTCRへ伝達され、CSはRQADRの[27:31]と共にチップセレクト回路CSCへ伝達される。また、ロウアドレスRRAはD-INDEXを、カラムアドレスはRQADRの[2:3]と[13:18]を割り当てることで、DRAMへのアドレス変換が完了する。
【００３７】
次にライトバック時のライトアドレスの変換について述べる。ライトバック時のライトアドレスは、キャッシュメモリからTAGのみMCONへ伝達し、これをライトバック時のライトアドレスWBADRとする。ここで加算演算するアドレスの部分はWBADRのD-TAG[19:26]とRQADRのD-INDEXである。これらを加算器ADDER2へ入力することで、その出力結果の下位4ビットをバンクアドレスWBAに上位４ビットをチップセレクトCS2へ変換する。このうちCS2はCSCへ伝達され、WBAはTCRへ伝達される。なお、ライトバック時のライトアクセスのロウアドレスとカラムアドレスは、アドレスのINDEXとLINEに相当するため、それぞれRRA、RCAに等しい。
【００３８】
タイミングコントローラTCRは、上記AMCで変換されたRBA、WBA、RRA、RCAをDRAMへ発行するタイミングを計測する。ライトバック時には、TCRは第一のタイミングでRBA、WBA、RRAを発行し、第二のタイミングでRCAを発行する。このように、本発明のライトバック時の擬似２ポートメモリは、メインメモリが１チップに収まらない大容量の場合でもライトバック時のライトバンクアドレス線とチップセレクト信号線を増設するだけで実現され、情報の高速処理が可能となる。
【００３９】
ところで、完全にライトバック時のリードとライトが同時処理されなくてもよいと考えられる場合には、独立バンク数を少なくして、最大限バンク競合が起こらないように設定できる。この例は、図５の場合のようにD-TAGとD-INDEXの一部を用いてバンクアドレスを演算すればよい。
【００４０】
最後に、実施例１〜３に示してきた情報処理装置の現実的な適用形態について説明する。図１４（Ａ）はCPUとキャッシュメモリCMとメモリコントローラMCONとメインメモリMCが同一の半導体基盤上にモノリシックに形成される実施例である。
【００４１】
図１４（Ｂ）はCPUとCMとMCONとが第１の半導体チップ上にモノリシックに形成され、MMが第2の半導体チップ上に形成される実施例である。図１４（Ｃ）はCPUとCMとが同一の半導体チップ上にモノリシックに形成され、MCONが第２の半導体チップ上に形成され、MMが第３半導体チップ上に形成される実施例である。図１４（Ｄ）はCPUが第１の半導体チップに形成され、CMが第２の半導体チップに形成され、MCONが第３の半導体チップに形成され、MMが第４の半導体チップ上に形成される実施例である。
【００４２】
図１４（Ｃ）〜（Ｄ）のような実施例では、本願発明に特徴的なアドレス変換回路は、メモリコントローラMCON半導体チップ内に搭載されることで実施される。また図１４（Ｂ）〜（Ｄ）のように複数の半導体チップをからなる場合は、各半導体チップは各々レジン等で保護されたＩＣパッケージに封止され、典型的にはガラスエポキシ等でできた配線基板上に半田付けされる。また複数の半導体チップがセラミック等でできた配線基板にボンデイングワイヤ又は半田バンプで接続されるマルチチップモジュールの形態を取ってもよい。
【００４３】
【発明の効果】
キャッシュメモリを有する計算機システムにおけるメインメモリアクセスは、参照の局所性と呼ばれるINDEXが変化するアクセスとライトバック時のINDEXが同じでTAGが異なるアクセスがある。本発明はこれらのアクセスを別バンクへ割り当てることができるため、高速アクセスが可能となる。また、ライトバック時のリードアクセスとライトアクセスを完全に別バンクへ割り当てられれば、１つのポートを利用した擬似的な2ポートアクセスが可能となり、ライトバックのアクセスとその後のリードアクセスの高速化が実現される。
【図面の簡単な説明】
【図１】本発明の第１の実施例による情報処理装置を示す図。
【図２】キャッシュメモリの管理アドレスの例。
【図３】キャッシュメモリを含む情報処理装置の構成例。
【図４】図１の実施例に用いるメインメモリMMの構成例。
【図５】図１の実施例に用いるアドレス変換回路の一実施例。
【図６】図５のアドレス変換回路によるバンクアドレスの変換結果。
【図７】本発明の第２の実施例による情報処理装置を示す図。
【図８】図７の実施例に用いるメインメモリMMの構成例。
【図９】図７の実施例に用いるアドレス変換回路の一例。
【図１０】図９の論理回路の他の構成例。
【図１１】排他論理和（Ａ）及び加算（Ｂ）によるバンクアドレスの変換結果。
【図１２】図７の実施例のアクセスシーケンス。
【図１３】図７の情報処理装置の他の適用例。
【図１４】本発明の情報処理装置の具体的な実現方法を示す図。
【符号の説明】
CPU…中央演算部、  CM…キャッシュメモリ、  MCON…メモリコントローラ、  AMC…アドレスマッピング回路(アドレス変換回路)、  MM…メインメモリ、  DRAM…ダイナミック型ランダムアクセスメモリ、  TAG(Tag)…アドレスのTAG部、  INDEX(Index)…アドレスのINDEX部、  D-TAG…DRAMの構成を考慮したTAGの一部、  D-INDEX…DRAMの構成を考慮したINDEXの一部、  SA…センスアンプ、  MC…メモリセル、  BL…ビット線、  WL…ワード線、  GBL…グローバルビット線、  ADBUF…アドレスバッファ、  DPLREG…データプリロードレジスタ、  IOBUF…データI/Oバッファ、  ADBUSA…アドレス線Ａ、  ADBUSB…アドレス線Ｂ、  CTBUSA…制御線A、  CTBUSB…制御線B、  DABUS…データ線、  RBA…リクエストバンクアドレス、  RRA…リクエストロウアドレス、  RCA…リクエストカラムアドレス、  WBA…ライトバック時のライトバンクアドレス。
【図１】
0003807582.tif 000002
【図２】
0003807582.tif 000003
【図３】
0003807582.tif 000004
【図４】
0003807582.tif 000005
【図５】
0003807582.tif 000006
【図６】
0003807582.tif 000007
【図７】
0003807582.tif 000008
【図８】
0003807582.tif 000009
【図９】
0003807582.tif 000010
【図１０】
0003807582.tif 000011
【図１１】
0003807582.tif 000012
【図１２】
0003807582.tif 000013
【図１３】
0003807582.tif 000014
【図１４】
0003807582.tif 000015