(57)【要約】【課題】メモリミラーリングによるデータの冗長性を全く損なうことなく、メモリからデータを読み出すのに要する時間を短縮すること【解決手段】メモリコントローラ４は、上位装置２から指定されたアドレス範囲のデータを一対のメモリモジュール６から読み出す際に一方のメモリモジュールからのデータの読み出し順と他方のメモリモジュールからのデータ読み出し順が異なるように読み出しコマンドを発行する機能と、読み出しコマンドに応じて一対のメモリモジュールからアドレス範囲のデータがすべて出力された時点でＥＣＣコードを用いてエラーチェックを行い、訂正不能なエラーがない場合には、アドレス範囲のデータを上位装置に出力する機能と、を備えている。【選択図】図１
2008158804.tif 000002
【特許請求の範囲】
【請求項１】
書き込みデータにエラーコレクティングコードを付加する機能と、同一のデータを前記エラーコレクティングコードと共に一対のメモリモジュールに対して並行して書き込み及び読み込みする機能とを備えたメモリコントローラにおいて、
上位装置から指定されたアドレス範囲のデータを前記一対のメモリモジュールから読み出す際に一方のメモリモジュールからのデータの読み出し順と他方のメモリモジュールからのデータ読み出し順が異なるように読み出しコマンドを発行する機能と、
前記読み出しコマンドに応じて前記一対のメモリモジュールから前記アドレス範囲のデータがすべて出力された時点で前記エラーコレクティングコードを用いてエラーチェックを行い、訂正不能なエラーがない場合には、前記アドレス範囲のデータを前記上位装置に出力する機能と、
を備えたことを特徴としたメモリコントローラ。
【請求項２】
前記アドレス範囲が、連続したひとつの範囲である場合に、
ある時点で一方のメモリモジュールから読み出すデータのアドレスとその時点で他方のメモリモジュールから読み出すデータのアドレスが、前記メモリアドレス範囲の長さの２分の１だけずれるように読み出しコマンドを発行することを特徴とした請求項１に記載のメモリコントローラ。
【請求項３】
一方のメモリモジュールには前記範囲の先頭から末尾に向かって順に、他方のメモリモジュールには前記範囲の中央から末尾に向かって順に読み出し次いで先頭から中央の直前に向かって順に読み出すように読み出しコマンドを発行することを特徴とした請求項２に記載のメモリコントローラ。
【請求項４】
前記アドレス範囲が、不連続な二つの範囲である場合に、
一方のメモリモジュールには前記二つの範囲のうち一方の範囲の先頭から末尾に向かって順に、次いで、他方の範囲の先頭から末尾に向かって順に読み出し、他方のメモリモジュールには前記二つの範囲のうち他方の範囲の先頭から末尾に向かって順に、次いで、一方の範囲の先頭から末尾に向かって順に読み出すように読み出しコマンドを発行することを特徴とした請求項１に記載のメモリコントローラ。
【請求項５】
請求項１ないし請求項４のいずれかひとつに記載のメモリコントローラを備えたコンピュータ。
【請求項６】
エラーコレクティングコードと共に一対のメモリモジュールに書き込まれた同一のデータを並行して読み出すデータ読み出し方法において、
上位装置からアドレス範囲の指定を伴う読み出しの指示があったときに、一方のメモリモジュールからのデータの読み出し順と他方のメモリモジュールからのデータ読み出し順が異なるように読み出しコマンドを発行し、
前記読み出しコマンドに応じて前記一対のメモリモジュールから前記アドレス範囲のデータがすべて出力された時点で前記エラーコレクティングコードを用いてエラーチェックを行い、訂正不能なエラーがない場合には、前記アドレス範囲のデータを前記上位装置に出力することを特徴としたデータ読み出し方法。
【請求項７】
前記アドレス範囲が、連続したひとつの範囲である場合に、
ある時点で一方のメモリモジュールから読み出すデータのアドレスとその時点で他方のメモリモジュールから読み出すデータのアドレスが、前記メモリアドレス範囲の長さの２分の１だけずれるように読み出しコマンドを発行することを特徴とした請求項６に記載のデータ読み出し方法。
【請求項８】
一方のメモリモジュールには前記範囲の先頭から末尾に向かって順に、他方のメモリモジュールには前記範囲の中央から末尾に向かって順に読み出し次いで先頭から中央の直前に向かって順に読み出すように読み出しコマンドを発行することを特徴とした請求項７に記載のデータ読み出し方法。
【請求項９】
前記アドレス範囲が、不連続な二つの範囲である場合に、
一方のメモリモジュールには前記二つの範囲のうち一方の範囲の先頭から末尾に向かって順に、次いで、他方の範囲の先頭から末尾に向かって順に読み出し、他方のメモリモジュールには前記二つの範囲のうち他方の範囲の先頭から末尾に向かって順に、次いで、一方の範囲の先頭から末尾に向かって順に読み出すように読み出しコマンドを発行することを特徴とした請求項６に記載のデータ読み出し方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ミラーリング構成されたメモリからデータを読み出す技術に関し、特にデータの読み出しを高速化する技術に関する。
【背景技術】
【０００２】
近年のコンピュータには、可用性を高めるためにメモリミラーリングの機能を搭載するものがある。このようなコンピュータの一例が特許文献１に記載されている。
メモリミラーリングでは、２つのメモリに同一のデータを書き込むことにより冗長性を持たせ、一方のメモリに訂正不能エラーが発生しデータが破損した場合でも、もう一方のメモリから読み込んだデータを使用することにより、データの消失を防ぐことができるようにしている。
【０００３】
ここで、従来のメモリミラーリング機能を有するコンピュータの一例を図４に示す。コンピュータ２００は、ＣＰＵ(Central Processing Unit)１０１ａ、１０１ｂ（これらの総称として「ＣＰＵ１００」を用いる）と、ＣＰＵコントローラ１０２、Ｉ／Ｏコントローラ１０３、メモリコントローラ１０４、ＰＣＩ（Peripheral Component Interconnect）デバイス１０５ａ、１０５ｂ、１０５ｃ、ＤＩＭＭ（Dual In-line Memory Module）１０６ａ、１０６ｂ、１０６ｃ、１０６ｄ（これらの総称として「ＤＩＭＭ１００」を用いる）から構成される。
メモリコントローラ１０４は、ＣＰＵコントローラ１０２と専用インタフェース１１１で、ＤＩＭＭ１０６とメモリ制御バス１０７ａ、１０７ｂ及びメモリデータバス１０８ａ、１０８ｂで接続されており、ＣＰＵコントローラ１０２からのメモリアクセス要求に応じてＤＩＭＭ１０６の読み書きを行う。
【０００４】
図５は、メモリコントローラ１０４がＤＩＭＭ６ａとＤＩＭＭ６ｂからバースト長を８としてデータをバーストリードする場合のタイミングチャートである。
メモリコントローラ１０４は、時刻Ｔ１０とＴ１１でメモリ制御バス１０７ａとメモリ制御バス１０７ｂに対して同一のアクティブコマンド、及び、リードコマンドを出力する。
アクティブコマンド出力後、時刻Ｔ１２になるとメモリデータバス１０８ａとメモリデータバス１０８ｂにＤＩＭＭ１０６ａとＤＩＭＭ１０６ｂからデータが出力される。
【０００５】
メモリコントローラ１０４は、メモリデータバス１０８ａとメモリデータバス１０８ｂからデータを取り込む。このとき、ＥＣＣ（エラー・コレクティング・コード、Error Correcting Code）のチェックを行い、エラー検出及びエラー訂正を行う。ここで、一方のメモリデータバスから読み出したデータに訂正不能エラーがある場合は、もう一方のメモリデータバスのデータを使用して、時刻Ｔ１３でＣＰＵコントローラ１０２に対して読み込みデータを出力する。
このように、データ読み出しに要する時間は、訂正不能エラーの有無にかかわらず、メモリミラーリングを使用しない場合と同一である。
【０００６】
【特許文献１】特開２００２−１８２９７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
メモリミラーリング機能を使用した場合には、オペレーティングシステム上で使用したいメモリ容量に対して、２倍のメモリ容量をコンピュータに実装することが必要となる。しかし、前述のようにメモリからデータを読み出すのに要する時間は、エラーの有無にかかわらずメモリミラーリング機能を使用しない場合と同一である。
そのため、非常にコストがかかってしまうにもかかわらず、メモリに記憶されたデータに訂正不能エラーが発生した場合以外は利点がなく、特別に高い可用性が求められる一部のシステム以外では採用しにくいという問題があった。
【０００８】
そこで、本発明は、メモリミラーリングによるデータの冗長性を全く損なうことなく、メモリからデータを読み出すのに要する時間を短縮することができるメモリコントローラ等を提供することをその目的とする。
【課題を解決するための手段】
【０００９】
本発明のメモリコントローラは、上位装置から指定されたアドレス範囲のデータを一対のメモリモジュールから読み出す際に一方のメモリモジュールからのデータの読み出し順と他方のメモリモジュールからのデータ読み出し順が異なるように読み出しコマンドを発行する機能と、読み出しコマンドに応じて一対のメモリモジュールからアドレス範囲のデータがすべて出力された時点でエラーコレクティングコードを用いてエラーチェックを行い、訂正不能なエラーがない場合には、アドレス範囲のデータを上位装置に出力する機能と、を備えている。
【００１０】
上記メモリコントローラによれば、二つのメモリモジュールにデータの読み出し順が異なるように読み出しコマンドを発行する。二つのメモリモジュールは並行して、それぞれ指定された順でデータを出力する。その結果、メモリコントローラには、二つのメモリモジュールから同じ順番でデータを読み出した場合に比べて短い時間で、上位装置から指定された範囲のデータが揃うことになる。
【００１１】
上記メモリコントローラにおいて、アドレス範囲が、連続したひとつの範囲である場合に、ある時点で一方のメモリモジュールから読み出すデータのアドレスとその時点で他方のメモリモジュールから読み出すデータのアドレスが、メモリアドレス範囲の長さの２分の１だけずれるように読み出しコマンドを発行してもよい。
このようにすれば、二つのメモリモジュールから同じ順番でデータを読み出した場合に比べて２分の１の時間で、上位装置から指定された範囲のデータがメモリコントローラに揃う。
【００１２】
上記メモリコントローラにおいて、一方のメモリモジュールには範囲の先頭から末尾に向かって順に、他方のメモリモジュールには範囲の中央から末尾に向かって順に読み出し次いで先頭から中央の直前に向かって順に読み出すように読み出しコマンドを発行してもよい。
【００１３】
上記メモリコントローラにおいて、アドレス範囲が、不連続な二つの範囲である場合に、一方のメモリモジュールには二つの範囲のうち一方の範囲の先頭から末尾に向かって順に、次いで、他方の範囲の先頭から末尾に向かって順に読み出し、他方のメモリモジュールには二つの範囲のうち他方の範囲の先頭から末尾に向かって順に、次いで、一方の範囲の先頭から末尾に向かって順に読み出すように読み出しコマンドを発行してもよい。
このようにすれば、二つのメモリモジュールから同じ順番でデータを読み出した場合に比べて２分の１の時間で、上位装置から指定された範囲のデータがメモリコントローラに揃う。
【００１４】
本発明の、上記メモリコントローラを備えたコンピュータおよびデータ読み出し方法によっても上記と同様に上記課題を解決することができる。
【発明の効果】
【００１５】
本発明によれば、メモリミラーリングによるデータの冗長性を全く損なうことなく、メモリからからデータを読み出すのに要する時間を短縮することができる。
【発明を実施するための最良の形態】
【００１６】
図１は、本発明の一実施形態である情報処理装置２０の構成例である。情報処理装置２０は、例えばサーバコンピュータであり、ＣＰＵ１ａ、１ｂ（これらの総称として「ＣＰＵ１」を用いる）とＣＰＵコントローラ２とＩ／Ｏコントローラ３とメモリコントローラ４とＰＣＩデバイス５ａ、５ｂ、５ｃ（これらの総称としてと「ＰＣＩデバイス５」を用いる）とＤＩＭＭ６ａ、６ｂ、６ｃ、６ｄ（これらの総称として「ＤＩＭＭ６」を用いる）を備えている。
【００１７】
ＣＰＵ１とＣＰＵコントローラはＣＰＵ制御バス９ａおよびＣＰＵデータバス９ｂにより接続されている。ＣＰＵコントローラ２とＩ／Ｏコントローラ３は専用バス１０で接続されている。ＣＰＵコントローラ２とメモリコントローラ４は専用バス１１で接続されている。メモリコントローラ４とＤＩＭＭ６ａ、６ｃはメモリ制御バス７ａおよびメモリデータバス８ａで接続されている。メモリコントローラ４とＤＩＭＭ６ｂ、６ｄはメモリ制御バス７ｂおよびメモリデータバス８ｂで接続されている。
【００１８】
ＣＰＵコントローラ２は、ＣＰＵ１やＩ／Ｏコントローラ３からのメモリアクセス要求やＩ／Ｏアクセス要求をメモリコントローラ４とＩ／Ｏコントローラ３に転送する。
【００１９】
Ｉ／Ｏコントローラ３は、ＣＰＵコントローラ２からのＩ／Ｏアクセス要求をＰＣＩデバイス５に、ＰＣＩデバイス５からのメモリアクセス要求をＣＰＵコントローラ２に転送する。
【００２０】
メモリコントローラ４は、ＣＰＵコントローラ２からのメモリアクセス要求に応じてＤＩＭＭ６の読み書きを行う。なお、ＤＩＭＭ６への書き込みの際はＥＣＣ（エラー・コレクティング・コード）を付与する。また、読み込みの際は書き込み時に付与したＥＣＣを用いて読み込みデータのエラー検出、及び、可能な場合はエラー訂正を行う。
メモリコントローラ４は、ミラーリングされた一対のメモリモジュール（例えばＤＩＭＭ６ａとＤＩＭＭ６ｂ）からデータを読み出す際に、一方のメモリモジュールからのデータの読み出し順と他方のメモリモジュールからのデータ読み出し順が異なるように読み出しコマンドを発行する。
【００２１】
ＤＩＭＭ６は、たとえばＤＤＲ  ＳＤＲＡＭ（Double Data Rate Synchronous Dynamic Random Access Memory）を搭載しており、ＤＩＭＭ６ａとＤＩＭＭ６ｂの間、また、ＤＩＭＭ６ｃとＤＩＭＭ６ｄの間でメモリミラーリングが行われており同一のデータを保持している。
【００２２】
なお、本実施例では、ＣＰＵ１とＣＰＵコントローラ２の間、また、メモリコントローラ４とＤＩＭＭ６の間はバス接続としたが、ポイント・ツー・ポイント接続などの別の接続方法でも構わない。また、ＣＰＵコントローラ２とＩ／Ｏコントローラ３、メモリコントローラ４が別の部品になっているが、統合されていても構わないし、ＣＰＵ１に内蔵されていても構わない。さらに、ＤＩＭＭ６は、ＤＤＲ  ＳＤＲＡＭ以外のＤＤＲ２  ＳＤＲＡＭやその他ＲＡＭを用いても構わないし、また、ＤＩＭＭ６は、２の倍数枚であれば、任意の枚数で構わない。メモリモジュールの形式もＤＩＭＭ以外のものでも構わない。
【００２３】
次に、情報処理装置２０の動作について説明する。
図２は、メモリコントローラ４がＤＩＭＭ６ａとＤＩＭＭ６ｂからバースト長を８としてデータをバーストリードする場合のタイミングチャートである。
時刻Ｔ０において、メモリコントローラ４は、メモリ制御バス７ａとメモリ制御バス７ｂにアクティブコマンドを出力する。但し、チップセレクト信号は、ＤＩＭＭ６ａとＤＩＭＭ６ｂのみアサートし、ＤＩＭＭ６ｃと６ｄはネゲートにしておく。これにより、ＤＩＭＭ６ａとＤＩＭＭ６ｂのみがアクティブ状態に状態遷移する。
【００２４】
アクティブコマンド出力後、ＤＩＭＭ６に規定されているＲＡＳ（Row Address Strobe）−ｔｏ−ＣＡＳ（Column Address Strobe）ディレイ時間（本実施例の場合は２クロック）が経過するのを待ち、時刻Ｔ１にメモリコントローラ４は、メモリ制御バス７ａとメモリ制御バス７ｂにリードコマンドを出力する。ここで、メモリ制御バス７ａのリードコマンドは、読み出しアドレスの下位３ビットが、０、１、２、３、４、５、６、７、８の順番にデータが出力されるように、また、メモリ制御バス７ｂのリードコマンドは、読み出しアドレスの下位３ビットが、４、５、６、７、０、１、２、３の順番にデータが出力されるように指定する。これにより、ＤＩＭＭ６ａとＤＩＭＭ６ｂはリード状態に状態遷移する。
【００２５】
リードコマンド出力後、ＤＩＭＭ６に規定されているＣＡＳレイテンシ時間（本実施例の場合は３クロック）が経過して、時刻Ｔ２になるとメモリデータバス８ａとメモリデータバス８ｂにＤＩＭＭ６ａとＤＩＭＭ６ｂからデータが出力される。
【００２６】
メモリコントローラ４は、メモリデータバス８ａとメモリデータバス８ｂからデータを取り込む。このとき、ＥＣＣのチェックを行い、エラー検出及びエラー訂正を行う。訂正不能エラーがない場合は、時刻Ｔ３までにＤＩＭＭ６から読み出さなければならないデータは全てメモリコントローラ４に揃い、時刻Ｔ３でＣＰＵコントローラ２に対して読み込みデータを出力する。すなわち、データが出力され始めてからメモリコントローラにＣＰＵコントローラから指定されたデータ揃うまでの時間で比較すると、図５の従来例の２分の１となる。
一方のメモリデータバスから取り込んだデータに訂正不能エラーがあった場合は、時刻Ｔ４までにもう一方のメモリデータバス８からデータを取り込み、時刻Ｔ４でＣＰＵコントローラ２に対して読み込みデータを出力する。
【００２７】
次に、情報処理装置２０の他の動作例について説明する。
図３は、メモリコントローラ４がＤＩＭＭ６ａとＤＩＭＭ６ｂからバースト長を８としてデータをアドレスＸのデータとアドレスＹの２カ所からバーストリードする場合のタイミングチャートである。
時刻Ｔ５、及び、Ｔ６の動作は図２に示した先の実施例と一緒である。但し、リードコマンドで指定するアドレスは、メモリ制御バス７ａはアドレスＸ、メモリ制御バス７ｂはアドレスＹとする。なお、本実施例の場合は、データの出力順序は両方のメモリ制御バス７で同一にしても構わない。
【００２８】
１回目のリードコマンド出力後、メモリデータバス８が競合しないようなウェイト時間（本実施例の場合は４クロック）が経過するのを待ち、時刻Ｔ７にメモリコントローラ４は、メモリ制御バス７ａとメモリ制御バス７ｂに２回目のリードコマンドを出力する。リードコマンドで指定するアドレスは、メモリ制御バス７ａはアドレスＹ、メモリ制御バス７ｂはアドレスＸとする。
【００２９】
それぞれのリードコマンド出力後、ＣＡＳレイテンシ時間（本実施例の場合は３クロック）が経過すると、メモリデータバス８ａとメモリデータバス８ｂにＤＩＭＭ６ａとＤＩＭＭ６ｂからデータが出力される。
【００３０】
メモリコントローラ４は、メモリデータバス８ａとメモリデータバス８ｂからデータを取り込む。このとき、ＥＣＣのチェックを行い、エラー検出及びエラー訂正を行う。訂正不能エラーがない場合は、時刻Ｔ８までにＤＩＭＭ６から読み出さなければならないデータは全てメモリコントローラ４に揃い、時刻Ｔ８でＣＰＵコントローラ２に対して読み込みデータを出力する。一方のメモリデータバス８から取り込んだデータに訂正不能エラーがあった場合は、時刻Ｔ９までにもう一方のメモリデータバス８からデータを取り込み、時刻Ｔ９でＣＰＵコントローラ２に対して読み込みデータを出力する。
【００３１】
次に、情報処理装置２０の効果について説明する。
情報処理装置２０によれば、メモリコントローラ４は、ミラーリングされた二つのＤＩＭＭにデータの読み出し順が異なるようにリードコマンドを発行する。そのため、ＤＩＭＭ６からデータを読み出すのにかかる時間を短縮することができる。
また、メモリコントローラ４に読み出しデータが揃った時点で一方のＤＩＭＭから読み出したデータに訂正不能なエラーがあった場合には、他方のＤＩＭＭからデータを読み出すようにしているからメモリミラーリングによるデータの冗長性を全く損なうことがない。
【図面の簡単な説明】
【００３２】
【図１】本発明の一実施形態である情報処理装置の構成を示す図である。
【図２】メモリコントローラがＤＩＭＭからデータを読み出す際のタイミングチャートである。
【図３】メモリコントローラがＤＩＭＭからデータを読み出す際のタイミングチャートである。
【図４】従来のメモリミラーリング機能を備えたコンピュータの構成を示す図である。
【図５】従来のメモリコントローラがＤＩＭＭからデータを読み出す際のタイミングチャートである。
【符号の説明】
【００３３】
１ａ、１ｂ  ＣＰＵ
２  ＣＰＵコントローラ
３  Ｉ／Ｏコントローラ
４  メモリコントローラ
５ａ、５ｂ、５ｃ  ＰＣＩデバイス
６ａ、６ｂ、６ｃ、６ｄ  ＤＩＭＭ
７ａ、７ｂ  メモリデータバス
８ａ、８ｂ  メモリ制御バス
９ａ  ＣＰＵ制御バス
９ｂ  ＣＰＵデータバス
１０、１１  専用バス
【図１】
2008158804.tif 000003
【図２】
2008158804.tif 000004
【図３】
2008158804.tif 000005
【図４】
2008158804.tif 000006
【図５】
2008158804.tif 000007