(57)【要約】【課題】集積度を犠牲にせずに、アクセス速度の向上を図る。【解決手段】メモリ制御回路は、第１データ量を単位としてアクセスされる第１メモリに対するアクセス制御と、第１メモリと同一メモリ階層に属し第１データ量よりも多い第２データ量を単位として第１メモリよりも遅い読出し速度で第２メモリに対するアクセス制御と、を行うメモリコントローラを備える。【選択図】図１
2016062505.tif 000002
【特許請求の範囲】
【請求項１】
第１データ量を単位としてアクセスされる第１メモリに対するアクセス制御と、前記第１メモリと同一メモリ階層に属し前記第１データ量よりも多い第２データ量を単位として前記第１メモリよりも遅い読出し速度で第２メモリに対するアクセス制御と、を行うメモリコントローラを備えるメモリ制御回路。
【請求項２】
前記メモリコントローラは、アクセス要求のあったデータの一部を前記第１メモリに格納する制御を行い、アクセス要求のあったデータのすべてを前記第２メモリに格納する制御を行う請求項１に記載のメモリ制御回路。
【請求項３】
前記第１データ量は、複数ビットからなる１ワードであり、
前記第２データ量は、前記ワードのｎ倍（ｎは２以上の整数）である請求項１または２に記載のメモリ制御回路。
【請求項４】
前記メモリコントローラは、
第１データ量を単位として前記第１メモリに対するアクセス制御を行う第１メモリコントローラと、前記第２データ量を単位として前記第２メモリに対するアクセス制御を行う第２メモリコントローラと、
前記第１メモリコントローラおよび前記第２メモリコントローラのいずれにアクセスするかを制御する調停部と、を備える請求項１乃至３のいずれかに記載のメモリ制御回路。
【請求項５】
前記調停部は、前記第１メモリに格納すべきデータを決定するクリティカルデータ決定部を有する請求項４に記載のメモリ制御回路。
【請求項６】
前記メモリコントローラは、前記クリティカルデータ決定部での決定に基づき、書き込み要求のあったデータの一部を前記第１メモリに格納した後、または当該データを前記第１メモリに格納している最中に、当該データのすべてを前記第２メモリに格納する制御を行う請求項５に記載のメモリ制御回路。
【請求項７】
前記メモリコントローラは、読出し要求のあったデータの一部が前記第１メモリに格納されている場合には、前記一部を前記第１メモリから読み出す制御を行うとともに、読み出し要求のあったデータを前記第２メモリから読み出す制御を行う請求項１乃至４のいずれかに記載のメモリ制御回路。
【請求項８】
前記メモリコントローラは、読出し要求のあったデータの一部が前記第１メモリに格納されていない場合には、当該データのすべてを前記第２メモリから読み出す制御を行う請求項７に記載のメモリ制御回路。
【請求項９】
前記第２メモリに格納されているデータまたは格納されるべきデータを保持するバッファを備え、
前記メモリコントローラは、コントローラからのアクセス要求に基づいて、前記第１メモリおよび前記バッファに対する書込み制御および読出し制御の少なくとも一方を行う請求項１乃至８のいずれかに記載のメモリ制御回路。
【請求項１０】
前記メモリコントローラは、アクセスされたデータが前記バッファに保持されているかどうかを判定し、アクセスされたデータが前記バッファに保持されている場合には、前記第１メモリにアクセスを行わず、前記第２メモリにアクセスを行う、請求項９に記載のメモリ制御回路。
【請求項１１】
前記第１メモリに格納されるワードは、クリティカルワードとなる可能性が高いワードである請求項１乃至１０のいずれかに記載のメモリ制御回路
【請求項１２】
前記第１メモリに格納されるワードは、ページの先頭ワードである請求項１乃至１０のいずれかに記載のメモリ制御回路
【請求項１３】
前記第１メモリに格納されるワードは、過去にアクセスされたデータの先頭ワードである請求項１乃至１０のいずれかに記載のメモリ制御回路
【請求項１４】
前記第１メモリへのアクセス時に、前記第１メモリから読み出されたデータの誤り検出を行う誤り検出部を備え、
前記メモリコントローラは、前記誤り検出部で誤りが検出されなければ、前記第１メモリから読み出されたデータをコントローラに返し、前記誤り検出部で誤りが検出されると、読出し要求のあったデータすべてを前記第２メモリから読み出して前記コントローラに返す請求項１乃至１３のいずれかに記載のメモリ制御回路。
【請求項１５】
前記第２メモリは、前記第１メモリよりも格納可能なデータ容量が多い請求項１乃至１４のいずれかに記載のメモリ制御回路。
【請求項１６】
前記第１メモリは、ＭＲＡＭ（Magnetoresistive RAM）を含み、
前記第２メモリは、ＤＲＡＭ（Dynamic RAM）を含む請求項１乃至１５のいずれかに記載のメモリ制御回路。
【請求項１７】
第１データ量を単位としてアクセスされる第１メモリと、
前記第１メモリと同一メモリ階層に属し前記第１データ量よりも多い第２データ量を単位として前記第１メモリよりも遅い読出し速度でアクセスされる第２メモリと、
前記第１メモリおよび前記第２メモリに対するアクセス制御を行うメモリコントローラと、を備える半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリ制御回路および半導体記憶装置に関する。
【背景技術】
【０００２】
メモリウォール問題と称されるメインメモリとプロセッサの速度差は依然として大きな問題である。メインメモリとして一般的に用いられるＤＲＡＭ（Dynamic RAM）より高速アクセスが可能な他のメモリ（例えば、ＭＲＡＭ（Magnetoresistive RAM）を利用することでメインメモリの高速化が期待されている。
【０００３】
ＭＲＡＭはアクセス速度の側面からはＤＲＡＭより優位であるものの、集積度の面で劣る傾向にある。したがって、近年のメインメモリの大容量化を考慮すると、メインメモリ全てをＭＲＡＭで構成することは困難である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平７−３１９７６７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、容量を維持しつつ、アクセス速度を向上可能なメモリ制御回路および半導体記憶装置を提供することである。
【課題を解決するための手段】
【０００６】
本実施形態によれば、第１データ量を単位としてアクセスされる第１メモリに対するアクセス制御と、前記第１メモリと同一メモリ階層に属し前記第１データ量よりも多い第２データ量を単位として前記第１メモリよりも遅い読出し速度で第２メモリに対するアクセス制御と、を行うメモリコントローラを備えるメモリ制御回路が提供される。
【図面の簡単な説明】
【０００７】
【図１】本発明の一実施形態によるメモリ制御回路１のブロック図。
【図２】メモリコントローラ６の内部構成を具体化した一例を示すブロック図。
【図３】アクセス制御のデータ量の単位を説明する図。
【図４】図２のメモリコントローラ６の構成に誤り検出部１４を追加したブロック図。
【図５】調停部１１の内部構成を具体化した一例を示すブロック図。
【図６】読出し要求があった場合の調停部１１の動作を示す図。
【図７】書込み要求があった場合の調停部１１の動作を示す図。
【図８】ＣＳアドレス、ＲＡＳアドレスおよびＲＡＳアドレスによりアクセスされる場所を模式的に示す図。
【図９】（ａ）は階層化タグ構造、（ｂ）は統合タグ構造を示す図。
【図１０】第２メモリ３の内部構成の一例を示すブロック図。
【図１１】プロセッサシステムの内部構成の一例を示すブロック図。
【発明を実施するための形態】
【０００８】
以下、図面を参照して本発明の実施形態を説明する。以下の実施形態では、メモリ制御回路内の特徴的な構成および動作を中心に説明するが、メモリ制御回路には以下の説明で省略した構成および動作が存在しうる。ただし、これらの省略した構成および動作も本実施形態の範囲に含まれるものである。
【０００９】
図１は本発明の一実施形態によるメモリ制御回路１のブロック図である。図１のメモリ制御回路１は、第１メモリ２と第２メモリ３に対するアクセスを制御するものである。第１メモリ２と第２メモリ３は、同一階層のメモリである。同一階層とは、メモリが１階層以上の階層構造になっている場合の特定の階層を指す。より具体的な例としては、第１メモリ２と第２メモリ３はメインメモリの少なくとも一部を構成している。ここで、メインメモリとは、一般的にＯＳ等の基本ソフトウェアにより管理されるメモリである。一般的な計算機システムでは、プロセッサと同一ダイ上には実装されず、ＤＤＲ（Double-Data-Rate SDRAM）等のインタフェースを利用してプロセッサと接続される。なお、第１メモリ２と第２メモリ３は、必ずしもプロセッサにより管理されるメインメモリでなくてもよい。例えば、種々のメモリコントローラの制御の下でアクセスされる同一階層のメモリであればよい。
【００１０】
第１メモリ２は、第２メモリ３よりも読出し速度が速いメモリであり、例えばＭＲＡＭによるメモリセルアレイを含んでいる。第２メモリ３は、第１メモリ２よりも読出し速度が遅いメモリであり、例えばＤＲＡＭによるメモリセルアレイを含んでいる。ＤＲＡＭは、ＭＲＡＭよりも集積化が容易なため、第２メモリ３のメモリ容量は、第１メモリ２のメモリ容量よりも大きくすることができる。ただし、第１メモリ２と第２メモリ３のメモリ容量の大小は、逆でもよいし、両メモリのメモリ容量を等しくしてもよい。
【００１１】
第１メモリ２としてＭＲＡＭを用い、第２メモリ３としてＤＲＡＭを用いることは必ずしも必須ではないが、以下では第１メモリ２としてＭＲＡＭを用い、第２メモリ３としてＤＲＡＭを用い、第２メモリ３が第１メモリ２よりもメモリ容量が多い例を説明する。
【００１２】
図１のメモリ制御回路１は、コントローラ４と、Ｉ／Ｏ部５と、メモリコントローラ６とを備えている。
【００１３】
コントローラ４は、第１メモリ２と第２メモリ３に対するアクセス要求を発行する。アクセス要求には、読出し要求と書込み要求とがある。本実施形態では、例えばＤＤＲにおける１つのコマンドによるバーストアクセスも、１つのアクセスと見なすものとする。なお、ＤＤＲのバーストアクセス形態には例えば、インタリーブ方式とシーケンシャル方式があるが、以下ではシーケンシャル方式をベースとして記載する。しかしながら、本実施形態はシーケンシャル方式に限定されるものではない。コントローラ４は、図１では不図示のプロセッサと同じダイに実装されてもよいし、プロセッサとは別個のチップセット内に配置されてもよい。なお、コントローラ４は、例えばＤＭＡ（Direct Memory Access）コントローラのように、プロセッサとは無関係に第１メモリ２と第２メモリ３に対するアクセス要求を発行してもよい。
【００１４】
Ｉ／Ｏ部５は、コントローラ４で発行されたアクセス要求や、第１メモリ２および第２メモリ３に格納すべきデータを受け取り、メモリコントローラ６へとそれらを送付する。また、第１メモリ２および第２メモリ３から読み出されたデータをコントローラ４に送る。Ｉ／Ｏ部５は、一般には、ＳＲＡＭ等の高速なバッファを保持し、コントローラ４から発行されたアクセス要求や、第１メモリ２および第２メモリ３から読み出されたデータをバッファに一時的に保持する。なお、本実施形態において、Ｉ／Ｏ部５は必須の構成要件ではない。コントローラ４およびメモリコントローラ６がＩ／Ｏ部５を介さずに情報の受け渡しを行う実施形態であってもよい。
【００１５】
メモリコントローラ６は、コントローラ４からのアクセス要求に従って、第１メモリ２と第２メモリ３に対するアクセス制御を行う。アクセス制御とは、第１メモリ２と第２メモリ３に格納されたデータの読出し制御と、第１メモリ２と第２メモリ３へのデータの書き込み制御とを含む概念である。
【００１６】
より具体的には、メモリコントローラ６は、コントローラ４からの読出し要求があると、第１メモリ２と第２メモリ３に対する読み出し制御を行う。メモリコントローラ６は、読出し要求のあったデータのうち、第１メモリ２に格納されているデータを特定し、特定されたデータに対する読出し要求を第１メモリ２に送る。また、必要に応じて並行して、第２メモリ３に対しても、読出し要求を送る。
【００１７】
ＭＲＡＭはＤＲＡＭよりも高速であるため、第１メモリ２から読み出されたデータが第２メモリ３から読み出されたデータよりも先にメモリコントローラ６に到達する。このためメモリコントローラ６は、第１メモリ２から読み出されたデータを優先してＩ／Ｏ部５に送り、読出し要求のあったデータのうち、第１メモリ２に格納されていない残りのデータを、第２メモリ３から読み出してＩ／Ｏ部５に送る。Ｉ／Ｏ部５は、メモリコントローラ６から送られて来たデータをバッファリングする。Ｉ／Ｏ部５は、予め規定された順番に従い、バッファリングしたデータをコントローラ４に転送する。これにより、予め規定された順番において、最初にコントローラ４に転送するデータを第１メモリ２から読み出せた場合、第１メモリ２から読み出されたデータは、第２メモリ３から読み出されたデータよりも高速にコントローラ４に送られる。
【００１８】
一方、メモリコントローラ６は、コントローラ４からの書込み要求があると、書込み要求のあったデータの一部を第１メモリ２に格納する。また、メモリコントローラ６は、第１メモリ２への書込みが終了した後、または書込みを行っている最中に、書込み要求のあったデータのすべてを第２メモリ３に格納する。
【００１９】
図２はメモリコントローラ６の内部構成を具体化した一例を示すブロック図である。図２のメモリコントローラ６は、調停部１１と、第１メモリコントローラ１２と、第２メモリコントローラ１３とを有する。
【００２０】
調停部１１は、コントローラ４から発行されたアクセス要求をＩ／Ｏ部５から受け取り、第１メモリコントローラ１２および第２メモリコントローラ１３のいずれにアクセスするかを制御する。すなわち、調停部１１は、コントローラ４から書込み要求のあったデータの一部を第１メモリ２に格納する制御と、このデータのすべてを第２メモリ３に格納する制御とを行う。より具体的には、調停部１１は、読み出し要求のあったデータが第１メモリ２に格納されているか否かを判断し、第１メモリ２に対する読出し制御を行う。また、読み出し時には、調停部１１は、第１メモリ２と第２メモリ３から読み出されたデータの調停を行い、読み出したデータをＩ／Ｏ部５に転送する。さらに、書き込み時には、調停部１１は、第１メモリコントローラ１２と第２メモリコントローラ１３に対してデータの書き込みを指示する。
【００２１】
第１メモリコントローラ１２は、第１データ量を単位として第１メモリ２に対するアクセス制御を行う。第２メモリコントローラ１３は、第１データ量よりも多い第２データ量を単位として第２メモリ３に対するアクセス制御を行う。
【００２２】
第１データ量とは、例えばワード単位である。第２データ量とは、例えばライン単位である。図３はアクセス制御のデータ量の単位を説明する図である。一般的にメインメモリにはＤＲＡＭメモリアレイが用いられ、ＤＲＡＭメモリアレイに対するアクセスは１ｋバイト程度のページ単位で行われる。メインメモリはＤＤＲ等のインタフェースでコントローラ４と接続され、メインメモリから読み出したデータや、コントローラ４からの書き込みデータは、６４ビット程度のデータ入出力幅で転送される。１回の転送で受け渡される６４ビット程度のデータをワードと呼ぶ。一方、メインメモリに格納されているデータまたはメインメモリに格納されるべきデータの一部が格納されるキャッシュメモリに対するアクセスは、６４バイト程度のライン単位で行われる。また、プロセッサは、３２ビット（４バイト）や６４ビット（８バイト）等のデータアクセス要求を発行する。本実施形態では６４ビットであるものとする。
【００２３】
プロセッサは主にキャッシュミスが発生した際に、キャッシュメモリへとデータをフィルするため、コントローラ４を介してメインメモリへと６４バイト程度のデータ読み出しを行う。このとき、一般的なプロセッサでは、直近の演算で利用するデータを最初に転送するように、コントローラ４を介してメインメモリにアクセス要求を送る。これにより、プロセッサはメインメモリアクセスによる６４バイトのデータ転送がすべて終わるのを待たずに演算を行うことが可能となる。メインメモリから最初に転送されるワードをクリティカルワードと呼ぶ。本実施形態では、第１データ量を１ワードとし、第２データ量を１ラインとして、第１メモリ２に対しては迅速に小容量データのアクセス制御を行い、第２メモリ３に対しては一度に大容量データのアクセス制御を行うようにしている。
【００２４】
より具体的には、ＤＲＡＭを用いて構成される第２メモリ３には、書込み要求のあったデータのすべてを格納し、そのうちの一部のデータを、ＭＲＡＭを用いて構成される第１メモリ２に格納（コピー）する。
【００２５】
このように、第１メモリ２に格納されるデータを、第２メモリ３にも重複して格納するのは、ＭＲＡＭはＤＲＡＭよりもビットエラーの発生頻度が高いことが主な理由である。ＤＲＡＭにすべてのデータを格納しておけば、ＭＲＡＭ内のデータにビットエラーが発生しても、ＤＲＡＭから読み出したデータを読み出し要求先に返せるため、動作上の支障は起きない。
【００２６】
そこで、図４に示すように、図２のメモリコントローラ６の構成に誤り検出部１４を追加するのが望ましい。図４の誤り検出部１４は、ＭＲＡＭを用いて構成される第１メモリ２から読み出したデータにビットエラーがあるか否かを検出する。誤り検出部１４によるビットエラーの検出結果は調停部１１に送られる。調停部１１は、ビットエラーがなければ、第１メモリ２から読み出したデータと第２メモリ３から読み出した残りのデータとをコントローラ４に返し、ビットエラーがあれば、第１メモリ２から読み出したデータは無視して、第２メモリ３から読み出したすべてのデータをコントローラ４に返す。
【００２７】
このように、誤り検出部１４でビットエラーが検出されると、第１メモリ２内のデータは使用しないため、誤り訂正部を設ける必要はない。誤り訂正処理は、誤り検出処理よりも、多くの処理時間を必要とし、第１メモリ２からの読出し速度を低下させる要因になる。本実施形態では、単に誤り検出を行うだけなので、第１メモリ２からの読出し速度を高速化できる。
【００２８】
なお、図４では、誤り検出部１４を調停部１１や第１メモリコントローラ１２とは別個に設けているが、調停部１１や第１メモリコントローラ１２の内部に誤り検出部１４を設けてもよい。
【００２９】
第１メモリ２は、レイテンシが重要なデータを絞り込んで格納することを意図しており、第１メモリ２は第２メモリ３よりもメモリ容量が小さくても、多くのデータ数を格納することが可能であり、第１メモリ２の利用効率を高めることができる。例えば、クリティカルワードを第１メモリ２に格納すれば、プロセッサからのアクセス要求に迅速に応えることができる。
【００３０】
図５は調停部１１の内部構成を具体化した一例を示すブロック図である。図５の調停部１１は、タグ部１５と、クリティカルデータ決定部１６と、データ抽出部１７とを有する。
【００３１】
タグ部１５は、第１メモリ２に格納されているデータに対応するアドレス情報を格納する。また、タグ部１５は、読み出し時にＩ／Ｏ部５から入力されたアドレス情報がタグ部１５に格納されているアドレス情報と一致するか否かのヒットミス判定を行う。このように、タグ部１５は、入力されたアドレス情報に基づいて、第１メモリ２に格納されているデータを特定する。
【００３２】
クリティカルデータ決定部１６は、アクセス要求のあったデータの一部を第１メモリ２に格納すべきか否かを決定する。クリティカルデータ決定部１６は、所定のポリシに従って、第１メモリ２に格納すべきデータを決定する。このポリシの具体例については後述する。
【００３３】
データ抽出部１７は、クリティカルデータ決定部１６による決定にしたがって、書込み要求のあったデータの中から、第１メモリ２に格納すべきデータを抽出して第１メモリコントローラ１２に転送し、書き込み要求のあったデータ全てを第２メモリコントローラ１３に転送する。
【００３４】
図６は読出し要求があった場合の調停部１１の動作を示す図である。図６では、読出しに関係のある信号の流れを実線で示し、それ以外は破線で示している。読み出し時には、読み出すべきデータのアドレス情報がＩ／Ｏ部５からタグ部１５に入力される。タグ部１５は、読出し要求のあったアドレス情報がタグ部１５に格納されているアドレス情報と一致した場合には、第１メモリコントローラ１２に対してデータの読出しを指示する。この指示に従って、第１メモリコントローラ１２は、第１メモリ２から対応するワードデータを読み出す。
【００３５】
図７は書込み要求があった場合の調停部１１の動作を示す図である。図７では、書込みに関係のある信号の流れを実線で示し、それ以外は破線で示している。書き込み時には、Ｉ／Ｏ部５から書き込むべきアドレス情報と書込みデータが入力される。アドレス情報はクリティカルデータ決定部１６に入力される。クリティカルワード決定部１６は、予め定めたポリシに従って、第１メモリ２に格納すべきクリティカルデータを特定する。なお、クリティカルデータとは、例えば、そのアクセスレイテンシが大きくプロセッサの性能に影響を与えるデータである。例えば、上述したクリティカルワードはクリティカルデータである。
【００３６】
クリティカルデータ決定部１６におけるポリシには、種々のものが考えられる。例えば、クリティカルワードとなる可能性が高いデータを選択することが考えられる。クリティカルワードとなる可能性が高いデータとは、例えば、クリティカルワードになる頻度が高いデータである。
【００３７】
例えば、ページ内の先頭側のアドレスほどクリティカルワードとなりやすい性質を生かして、先頭から数ワードをクリティカルデータとして決定して第１メモリ２に格納することが考えられる。この場合、ページの先頭アドレスはメインメモリ設計時に一意に決まるため、第１メモリ２に格納されているデータを容易に特定できる。例えば、ＤＲＡＭに格納される全てのページの、各ページの先頭から予め規定されたワード数を格納可能な容量の第１メモリ２を備える場合、タグ部に格納する情報を設計時に設定し、その後書き換える必要は無い。つまり、タグ部の設計コストを低減できる。一方で、ＤＲＡＭに格納される全てのページの、各ページの先頭から予め規定されたワード数やライン数を格納可能な容量の第１メモリ２を備えない場合、メインメモリ動作時に動的に書き換え可能なタグ部を設けることが望ましい。
【００３８】
特定されたクリティカルデータのアドレス情報は、タグ部１５とデータ抽出部１７に送られる。タグ部１５は、クリティカルデータ決定部１６から送られて来たアドレス情報を、第１メモリ２に格納されているデータに対応するアドレス情報として管理する。データ抽出部１７は、クリティカルデータのアドレス情報に基づいて、書き込むべきデータの中から、アドレス情報に対応するクリティカルデータを抽出する。そして、データ抽出部１７は、第１メモリコントローラ１２に対して、クリティカルデータの格納を指示する。
【００３９】
なお、動的に書き換え可能なタグ部を必要とする（全ページのクリティカルデータ全てを格納する容量の第１メモリ２を備えない場合の）クリティカルデータ決定のポリシでは、第２メモリ３に格納すべきデータには変更が無く、第１メモリ２に格納すべきデータに変更があるケースが考えられる。この場合、第２メモリ３のデータには書き込みを行わずに、第１メモリ２にのみ書き込みを行ってもよい。例えば、読み出しアクセスの際に、ページの先頭のワードを読み出し、そのデータが第１メモリ２に格納されていなかった場合に、当該データのアドレス情報をタグ部に記録し、当該データを第１メモリ２に書き込んでもよい。
【００４０】
上述した第１メモリ２と第２メモリ３をメインメモリとして用いる場合、既存のメインメモリとの互換性を維持することが重要である。既存のメインメモリは、一般にＤＤＲ（Double-Data-Rate SDRAM）の規格に準拠して設計されている。ＤＤＲでは、ＣＳ（Chip Select）アドレス、ＲＡＳ（Row Address Select）アドレスおよびＣＡＳ（Column Address Select）アドレスを用いて、アクセスすべきメモリ位置を一意に特定する。ＣＳアドレスはアクセスするべきメモリセルアレイを特定するアドレス情報である。ＲＡＳアドレスはアクセスするべきロウを特定するアドレス情報である。ＣＡＳアドレスはアクセスするべきカラムを特定するアドレス情報である。
【００４１】
図８は、ＣＳアドレス、ＲＡＳアドレスおよびＲＡＳアドレスによりアクセスされる場所を模式的に示す図である。図８は複数のＤＲＡＭチップ２０でメインメモリを構成する例を示している。ＣＳアドレスは、いずれか一つのＤＲＡＭチップ２０を選択する。なお、ＣＳアドレスにて、一つのメモリバンクを選択してもよい。この場合、図８に示された４つのブロックのそれぞれは、メモリバンクを表すことになる。ＲＡＳアドレスは、ＣＳアドレスで選択した一つのＤＲＡＭチップ（あるいはメモリバンク）２０内の一つのロウを選択する。ＣＡＳアドレスは、ＲＡＳアドレスが選択したロウの中の一つのカラムを選択する。以下では、一例として、これらのアドレス情報を利用する実施形態を示す。
【００４２】
上述した第１メモリ２と第２メモリ３がメインメモリ内に設けられ、かつＤＤＲの規格に準拠している場合、第１メモリ２に格納されるデータのアドレス情報は、ＣＳアドレス、ＲＡＳアドレス、ＣＡＳアドレスの情報から一意に第１メモリ２へのデータの有無を特定可能な情報がタグ部１５に格納される。タグ部１５の実装形態としては、例えば、メインメモリ設計時から書き換えを行わないものとして永続的タグがあり、動的に書き換えを行うものとして図９（ａ）に示す分散タグ構造と、図９（ｂ）に示す統合タグ構造とが考えられる。
【００４３】
永続的タグの実装形態として、例えば、ＣＡＳアドレスから、ページの先頭アドレスか否かを判定する方法がある。例えば、ページに属するバイトデータが先頭から順に０、１、２、・・というようにアドレスが割り当てられている場合に、クリティカルワードのＣＡＳアドレスが０であれば、ページの先頭アドレスであることを特定できる。
【００４４】
分散タグ構造は、例えば、ＣＳで選択されるチップ毎のタグメモリを保持する。例えば、図９（ａ）のように、ＲＡＳアドレスでタグ引きを行い、読み出されるＣＡＳアドレスとの比較を行うことで第１メモリ２へのデータ保持/非保持を判定する。または、例えば、ＣＡＳアドレスでタグ引きを行い、読み出されたＲＡＳアドレスとの比較を行うことで第１メモリ２へのデータ保持/非保持を判定する。
【００４５】
一方、図９（ｂ）の統合タグ構造の場合、例えば、ＣＳアドレスおよびＲＡＳアドレスを統合したアドレスによりタグ引きを行い、読み出されるＣＡＳアドレスとの比較を行うことで第１メモリ２へのデータ保持／非保持を判定する。例えば、ＣＳアドレスおよびＣＡＳアドレスを統合したアドレスによりタグ引きを行い、読み出されるＲＡＳアドレスとの比較を行うことで第１メモリ２へのデータ保持／非保持を判定する。
【００４６】
分散タグは、統合タグと比較し、一度にアクセスするタグのサイズを小さくすることが可能であるため、タグアクセスが高速に行える傾向にある。一方で、統合タグは、チップ毎に異なるデータ数を第１メモリ２に保持する実施形態が比較的容易に実装可能である。統合タグは、チップ間でクリティカルデータの数に差がある場合、クリティカルデータを効率的に格納することが可能となる。
【００４７】
これらタグ部は、キャッシュメモリやＴＬＢ等で一般的に用いられる技術と組み合わせることが可能である。例えば、セットアソシアティブ方式と組み合わせることが可能である。例えば、ＴＬＢのように、タグメモリ自体を階層化してもよい。
【００４８】
ＤＲＡＭを用いて構成される第２メモリ３は、汎用的なＤＲＡＭモジュールと同様の構造にすることが可能である。図１０は第２メモリ３を含むメモリモジュールの内部構成の一例を示すブロック図である。図１０の第２メモリ３は、ＤＲＡＭアレイ２１と、ロウデコーダ２２と、ロウバッファ２３とを有する。ＤＲＡＭアレイ２１は、例えばページデータである１ｋバイト分のロウを含んでいる。ロウデコーダ２２は、ＲＡＳアドレスをデコードして、特定のロウを選択する。ロウバッファ２３は、ＳＲＡＭ等の高速メモリであり、ロウデコーダ２２で選択した特定のロウのデータを格納する。
【００４９】
特定のロウをロウバッファ２３に格納する処理は、アクティブ化と呼ばれる。以下では、アクティブ化が行われたＤＲＡＭチップ（あるいはメモリバンク）をアクティブ状態のバンク（アクティブバンク）と呼ぶ。アクティブバンクに対しては、読出しや書込みが可能である。異なるロウにアクセスするには、ロウバッファ２３のデータをＤＲＡＭチップ（あるいはメモリバンク）に書き戻し、ロウバッファ２３に格納されているデータを無効化する必要がある。この処理はプリチャージと呼ばれる。プリチャージが行われたＤＲＡＭチップ（あるいはメモリバンク）をアイドル状態のバンク（アイドルバンク）と呼ぶ。一般には、アイドルバンクに対してのみアクティブ化を行うことができる。また、アクティブバンクは、一定時間の経過後、あるいはプリチャージを行った後にアイドルバンクに遷移する。言い換えると、ロウバッファに書き込まれたデータは、一定時間の経過後、あるいはプリチャージを行った場合に、第２データ量であるページ単位で第２メモリ３へと書き込まれる。
【００５０】
一般的なＤＤＲの規格では、ＤＲＡＭモジュールに対してコマンドを発行してアクセスを行う。一般に、アクティブ化、読出し、書込み、およびプリチャージを指示するコマンドが設けられている。
【００５１】
（アイドル状態でのアクセス手順）
以下では、第２メモリ３がアイドル状態のときに、アクティブ化コマンドと８ワード（６４バイト）のバースト読出しコマンドとがコントローラ４にて発行された場合における読出し時の処理手順の一例を示す。なお、１ワードは８バイトとし、１ページは１ｋバイトとする。また、クリティカルデータは、ページの先頭１ワードとする。また、ＤＲＡＭからなる第２メモリ３に格納されているデータ全てのクリティカルデータを格納可能な容量のＭＲＡＭからなる第１メモリ２を備えるものとする。この場合、読出し要求のあったアドレス情報により第１メモリ２に格納されているか否かを特定できるため、メモリコントローラ６内のタグ部１５には動的に書き換え可能なタグメモリを設ける必要はない。また、ＭＲＡＭを用いて構成される第１メモリ２内のデータは、一定確率でビットエラーが発生するものとし、メモリコントローラ６が誤り検出部１４を備えているものとする。
【００５２】
調停部１１は、Ｉ／Ｏ部５からアクティブ化コマンドとバースト読出しコマンドを受け取り、これらコマンドを第２メモリコントローラ１３に転送する。第２メモリコントローラ１３は、一般的なのＤＤＲの動作と同様に、アクティブ化を行った後、アクセスされたデータをロウバッファ２３から読み出す。これに並行して、タグ部１５は、バースト読出しコマンドで指定されているバーストデータのクリティカルワードが第１メモリ２に格納されているか否かをチェックする。ここでは、永続的タグを利用してこれをチェックする。
【００５３】
このように、ページ内の先頭アドレスのみを第１メモリ２に格納する場合には、タグメモリを用いたアドレス情報の比較を行うことなく、単に読出し要求のあったデータにページ内の先頭アドレスが含まれるか否かをチェックするだけで、第１メモリ２に該当データが格納されているか否かを判断できる。このようなタグ部１５の構成の場合、データ保持／非保持を高速に判定することが出来る。
【００５４】
読出し要求のあったクリティカルワードがページ内の先頭でなければ、調停部１１は、第２メモリ３から読み出されたデータをＩ／Ｏ部５に転送する。
【００５５】
読出し要求のあったクリティカルワードがページ内の先頭であれば、調停部１１は、第１メモリコントローラ１２に第１メモリ２内の該当データの読出しを指示する。ＭＲＡＭは、ＤＲＡＭよりも読み出し速度が高速であるため、第１メモリ２からのデータ読出しが、第２メモリ３からのデータ読出しよりも先に完了する。
【００５６】
誤り検出部１４は、第１メモリ２から読み出されたデータにビットエラーがあるか否かを検出する。調停部１１は、誤り検出部１４の検出結果に基づいて、ビットエラーがなければ、第１メモリ２から読み出されたデータをＩ／Ｏ部５に転送する。その後、第２メモリコントローラ１３は、アクティブ化および読出しコマンドに基づいて、６４バイト分のバーストデータを第２メモリ３から読み出して調停部１１に転送する。調停部１１は、第２メモリ３から送られて来た６４バイト分のデータのうち、先にＩ／Ｏ部５に転送した８バイト分のデータを除いた５６バイト分のデータをＩ／Ｏ部５に転送する。
【００５７】
一方、誤り検出部１４でビットエラーが検出された場合、調停部１１は、第１メモリ２から読み出されたデータをＩ／Ｏ部５に転送する処理は行わず、第２メモリ３から読み出された６４バイト分のデータをＩ／Ｏ部５に転送する。
【００５８】
また、ビットエラーが検出された場合、調停部１１は、第２メモリ３から読み出された６４バイト分のデータの先頭アドレスに対応するデータを第１メモリ２に上書きするよう、第１メモリコントローラ１２に指示してもよい。
【００５９】
次に、第２メモリ３がアイドル状態のときに、アクティブ化と４ワード（６４バイト）のバースト書き込みコマンドとがコントローラ４にて発行された場合における書き込み時の処理手順の一例を示す。メインメモリに書込みを行う場合、調停部１１は、書込みデータにページの先頭アドレスのデータが含まれるか否かをチェックし、含まれる場合は、先頭アドレスのデータを第１メモリ２に書き込むよう第１メモリコントローラ１２に指示する。また、調停部１１は、Ｉ／Ｏ部５からアクティブ化コマンドとバースト書き込みコマンドを受け取り、一般的なＤＤＲの動作と同様に、アクティブ化を行った後、６４バイトのデータをロウバッファに書き込む。このような書き込みののち、プリチャージコマンドの実行か、一定時間経過後に、書き込みを行ったロウバッファ上のページデータを、ＤＲＡＭアレイへと書き込む。
【００６０】
（アクティブ状態でのアクセス手順）
上述したアイドル状態でのアクセス手順では、第２メモリ３がアイドル状態のときに、有効化コマンドに引き続き、読出しコマンドまたは書込みコマンドが発行される例を示した。一方、第２メモリ３のアクティブバンクに対してアクセス要求が発行されることもありうる。この場合、アクセス要求のあったデータがアクティブ状態のロウに含まれている否かで処理手順が異なる。
【００６１】
アクティブ状態のロウにアクセス要求のあったデータが含まれていない場合、コントローラ４は、アクセス要求コマンドを発行する前に、プリチャージコマンドを発行する。調停部１１は、プリチャージコマンドを第２メモリコントローラ１３に転送し、第２メモリ３をアイドル状態に遷移させた後に、アイドル状態でのアクセス手順と同様にして、第１メモリ２および第２メモリ３に対する読出し制御または書込み制御を行えばよい。
【００６２】
アクティブ状態のロウにアクセス要求のあったデータが含まれている場合、アクティブ状態のロウは、ＤＲＡＭよりも高速のＳＲＡＭ等で構成されたロウバッファ２３に格納されているため、ＭＲＡＭを用いて構成された第１メモリ２よりも高速に読み出せる可能性が高い。よって、読み出しアクセスの場合、第１メモリ２へのアクセスは行わずに、第２メモリ３を含むメモリモジュールに対してのみアクセスを行ってもよい。あるいは、アクセス手順の共通化のために、アイドル状態でのアクセス手順と同様の手順で第１メモリ２と第２メモリ３の双方にアクセスしてもよい。
【００６３】
一般的に、メインメモリへのアクセスコマンドは一時的にバッファに格納される。調停部１１は、例えば、Ｉ／Ｏ部に設けられているメインメモリへのアクセスコマンドを格納するバッファを参照し、アクセス要求コマンドがアクティブ化コマンドと対になっているか否かにより、アイドルバンクに対するアクセス手順か、アクティブバンクに対するアクセス手順かを識別できる。調停部は、この識別情報に基づき、第１メモリ２へのアクセスが必要か否かを判断することが出来る。
【００６４】
ここまでの実施形態では、クリティカルデータの選択ポリシとして、ページの先頭ワードをクリティカルデータとする形態を示した。しかしながら、本実施形態はこのような形態に限定されるものではない。クリティカルデータの選択ポリシには、このような実施形態の他にも、種々のものが考えられる。
【００６５】
例えば、毎回のアクセスデータのクリティカルワードをクリティカルデータとしてもよいし、複数回のアクセスの履歴から、クリティカルワードとなる頻度の高いデータをクリティカルデータとしてもよい。また、ロウバッファミス（アイドル状態への読み出し）を引き起こしたアクセスのクリティカルワードをクリティカルデータとしてもよい。この場合、クリティカルデータは様々なデータとなるため、動的に書き換え可能なタグ部を設けることが望ましい。
【００６６】
上述した第１メモリ２と第２メモリ３をメインメモリとして用いる場合のプロセッサシステムは、例えば図１１のようなブロック図で表される。図１１のプロセッサシステム３１は、キャッシュシステムを備えるプロセッサ３２と、メインメモリ３４と、コントローラ４と、Ｉ／Ｏ部５と、メモリコントローラ６とを備えている。
【００６７】
キャッシュシステムは、階層構造になっていてもよいし、一階層でもよい。プロセッサ３２は、コントローラ４に対してアクセス要求を発行する。コントローラ４は、上述したように、Ｉ／Ｏ部５を介してメモリコントローラ６にアクセス要求を送る。メモリコントローラ６は、上述した図１等で説明したように、メインメモリ３４内の第１メモリ２と第２メモリ３に対するアクセスを行う。
【００６８】
このように、本実施形態では、コントローラ４から書込み要求があったデータのすべてを第２メモリ３に書込み、そのうちの一部のデータを、第２メモリ３よりも読出し速度が速い第１メモリ２に書き込む。その後、コントローラ４から読出し要求があると、読出し要求のあったデータの一部は第１メモリ２から高速に読み出すことができる。よって、クリティカルデータを第１メモリ２に書き込んでおけば、クリティカルデータの読出し速度を向上できる。
【００６９】
また、第１メモリ２と第２メモリ３をメインメモリ３４内に設ければ、クリティカルデータを第１メモリ２に格納することで、プロセッサ３２によるメインメモリ３４のアクセス速度を向上できる。
【００７０】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００７１】
１  メモリ制御回路、２  第１メモリ、３  第２メモリ、４  コントローラ、５  Ｉ／Ｏ部、６  メモリコントローラ、１１  調停部、１２  第１メモリコントローラ、１３  第２メモリコントローラ、１４  誤り検出部、１５  タグ部、１６  クリティカルデータ決定部、１７  データ抽出部、２１  ＤＲＡＭアレイ、２２  ロウデコーダ、２３  ロウバッファ、３１  プロセッサシステム、３２  プロセッサ、３３  キャッシュメモリ、３４  メインメモリ
【図１】
2016062505.tif 000003
【図２】
2016062505.tif 000004
【図４】
2016062505.tif 000005
【図５】
2016062505.tif 000006
【図６】
2016062505.tif 000007
【図７】
2016062505.tif 000008
【図９】
2016062505.tif 000009
【図１０】
2016062505.tif 000010
【図１１】
2016062505.tif 000011
【図３】
2016062505.tif 000012
【図８】
2016062505.tif 000013