サーバ装置、メモリ装置
【課題】レジスタチップを搭載するためのコストを抑えつつ、メモリモジュールとメモリコントローラの間の通信を安定化させることのできる技術を提供する。
【解決手段】本発明に係るサーバ装置は、複数のメモリモジュールに対する命令を格納する共用レジスタを備える。メモリコントローラは、複数のメモリモジュールに対する命令を共用レジスタに格納し、共用レジスタは、メモリコントローラから受け取った命令を複数のメモリモジュールに対して並列出力する。
【解決手段】本発明に係るサーバ装置は、複数のメモリモジュールに対する命令を格納する共用レジスタを備える。メモリコントローラは、複数のメモリモジュールに対する命令を共用レジスタに格納し、共用レジスタは、メモリコントローラから受け取った命令を複数のメモリモジュールに対して並列出力する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、複数のメモリモジュールに対するデータアクセスに関するものである。
【背景技術】
【0002】
近年のプロセッサ性能の向上に伴い、ローエンドサーバにおいても、仮想化やマルチタスクOS(Operating System)を活用したサーバ統合などの用途のため、1台のサーバ装置上で稼動するアプリケーションョン数が増加している。これに伴い、メインメモリの記憶容量を増やすため、多数のメモリモジュールをサーバ装置に搭載する必要がある。
【0003】
一方、近年のメモリインターフェースの高速化(例えば1600Mbps)に伴い、複数のメモリモジュールをサーバ装置に搭載したとき、メモリモジュールとメモリコントローラの間の通信を安定化させる必要がある。そこで、高速なメモリインターフェースを搭載したサーバ装置では、メモリモジュールとメモリコントローラは、レジスタチップと呼ばれるバッファIC(Integrated Circuit)を介して通信するように構成されている。
【0004】
メモリコントローラは、レジスタチップを介してメモリモジュールにアクセスすることにより、複数メモリモジュールに実装された複数DRAM(Dynamic Random Access Memory)チップ全体ではなく、レジスタチップのみを駆動することができる。これにより、メモリコントローラに接続される全DRAMチップ数が増えても、通信信号品質を維持することができる。
【0005】
下記特許文献1に記載されている技術では、メモリモジュール上に複数レジスタチップを搭載することにより、複数メモリモジュールを高速に駆動する方法を実現している。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特表2009−510562号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述のレジスタチップをメモリモジュール上に搭載する場合、そのために必要な回路部品(例えば、レジスタチップ本体およびPLL回路などのクロック発生器)をメモリモジュール毎に実装する必要がある。これにより、部品点数が増加し、メモリモジュールが高価になる。
【0008】
特に、レジスタチップを搭載するために必要なコストはメモリモジュールの容量に関係なく発生するため、搭載されているDRAMチップ数が少ない小容量のメモリモジュールほど、メモリモジュール全体に占める同コストの割合が大きくなってしまう。そのため、特に小容量のメモリモジュールを多数搭載する傾向にあるローエンドサーバにおいては、メモリモジュール毎に搭載されるレジスタチップやPLL回路がサーバ装置の原価に占める割合が大きくなり、コスト高となる。
【0009】
本発明は、上記のような課題を解決するためになされたものであり、レジスタチップを搭載するためのコストを抑えつつ、メモリモジュールとメモリコントローラの間の通信を安定化させることのできる技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明に係るサーバ装置は、複数のメモリモジュールに対する命令を格納する共用レジスタを備える。メモリコントローラは、複数のメモリモジュールに対する命令を共用レジスタに格納し、共用レジスタは、メモリコントローラから受け取った命令を複数のメモリモジュールに対して並列出力する。
【発明の効果】
【0011】
本発明に係るサーバ装置によれば、メモリモジュールに対する命令を共用レジスタに格納することにより、通信を安定化させることができる。また、各メモリモジュールが共用レジスタを共有するので、レジスタチップを搭載するために必要なコストを抑えることができる。
【図面の簡単な説明】
【0012】
【図1】従来のメモリモジュールと本発明に係るメモリモジュールの差異を比較する図である。
【図2】実施形態1に係るサーバ装置100の機能ブロック図である。
【図3】共用レジスタチップ120がメモリモジュール140を冗長化構成する動作フローを示す図である。
【図4】メモリモジュール140上に冗長化構成を構築したときの記憶領域割当を示す図である。
【図5】共用レジスタチップ120がデータ読取命令を受け取ったときの動作フローである。
【図6】実施形態3に係るメモリ装置200の機能ブロック図である。
【発明を実施するための形態】
【0013】
<実施の形態1>
図1は、従来のメモリモジュールと本発明に係るメモリモジュールの差異を比較する図である。従来のメモリモジュールは、各メモリモジュール上にそれぞれレジスタチップとPLL回路を搭載しているが、本発明に係るメモリモジュールは、レジスタチップとPLL回路を各メモリモジュールから共有する構成とした。
【0014】
レジスタチップとPLL回路を各メモリモジュールから共有することにより、部品点数を削減することによるコスト低減効果を見込むことができる。また、CPUから見ると単一の共用レジスタチップに対して命令を発行すれば済むので、命令処理回数を削減することにより処理速度を向上させることもできる。
【0015】
図2は、本発明の実施形態1に係るサーバ装置100の機能ブロック図である。サーバ装置100は、CPU110、メモリコントローラ111、共用レジスタチップ120、PLL回路130、1以上のメモリモジュール140、回路基板150を備える。各メモリモジュールは同様の構成を備えるため、個々のメモリモジュールを区別するときには、内部的な構成要素と併せてアルファベット添字を付与する。また、ここでは図示しないが、サーバ装置100は、キーボードやマウスなどの入力装置、ディスプレイなどの出力装置、ネットワークインターフェースなどを備えることもできる。
【0016】
CPU110は、メモリコントローラ111に対し、メモリモジュール140が格納しているデータを読み取るデータ読取命令、またはメモリモジュール140にデータを書き込むデータ書込命令を発行する。
【0017】
メモリコントローラ111は、CPU110から受け取ったデータ読取命令またはデータ書込命令に基づき、共用レジスタチップ120を介して、メモリモジュール140に対しデータ読取命令またはデータ書込命令を発行する。このデータ読取命令またはデータ書込命令には、メモリモジュール140上のアクセス先アドレスを指示するアドレス信号、命令内容を指定するコマンド信号、データを記述したデータ信号などが含まれる。
【0018】
共用レジスタチップ120は、メモリコントローラ111から受け取ったデータ読取命令またはデータ書込命令のうち、アドレス信号とコマンド信号を格納し、PLL回路130が出力するクロック信号に同期して各メモリモジュール140に並列的に出力する。共用レジスタチップ120は、各メモリモジュール140との間でアドレス信号とコマンド信号を送受信した後、残りの信号を各メモリモジュール140との間で送受信する。
【0019】
PLL回路130は、各メモリモジュール140に共通するクロック信号を、共用レジスタチップ120、各メモリモジュール140、メモリコントローラ111に出力する。これら各デバイスは、PLL回路130が出力するクロック信号に同期して命令を送受信する。
【0020】
メモリモジュール140は、1以上のメモリチップ(ここではDRAMチップ)141、SPD(Serial Presence Detect)142を備える。メモリチップ141は、例えばDRAMチップのような、データを格納する記憶デバイスである。SPD142は、メモリモジュール140の仕様情報などを格納する記憶デバイスである。
【0021】
CPU110、メモリコントローラ111、共用レジスタチップ120、PLL回路130、メモリモジュール140は、サーバ装置100が備える同一の回路基板150上に実装することができる。
【0022】
<実施の形態1:まとめ>
以上のように、本実施形態1に係るサーバ装置100は、各メモリモジュール140に対するデータ読取命令またはデータ書込命令を格納する共用レジスタチップ120を備える。これにより、メモリモジュール140毎にレジスタチップを搭載する必要がなくなるので、部品点数を削減してコストを抑えることができる。
【0023】
また、本実施形態1に係るサーバ装置100において、共用レジスタチップ120は、メモリコントローラ111から受け取った命令を、各メモリモジュール140に対して並列出力する。これにより、メモリチップ141の数が多くなっても、メモリコントローラ111と各メモリモジュール140を接続するメモリバスの本数を少なくすることができるので、信号送受信に係る制御を容易にすることができる。したがって、信号周波数が高くなっても、メモリコントローラ111と各メモリモジュール140の間の通信を安定させることができる。
【0024】
また、本実施形態1に係るサーバ装置100において、CPU110は単一の共用レジスタチップ120に対して命令を発行すれば済むので、メモリモジュール140毎にレジスタチップを搭載する場合と比較して、CPU110の処理負荷を軽減して処理速度を向上させることができる。
【0025】
また、本実施形態1に係るサーバ装置100は、各メモリモジュール140に共通するクロック信号を生成するPLL回路130を備え、共用レジスタチップ120は、そのクロック信号に同期してアドレス信号とコマンド信号を各メモリモジュール140に並列出力する。これにより、各メモリモジュール140間の同期を保ちつつ、メモリモジュール140毎にPLL回路130を搭載する必要がなくなるので、部品点数を削減してコストを抑えることができる。
【0026】
また、本実施形態1に係るサーバ装置100において、共用レジスタチップ120、PLL回路130、メモリモジュール140を同一の回路基板150上に実装することにより、共用レジスタチップ120をサーバ装置100の構成部品として提供しやすくなる。
【0027】
<実施の形態2>
サーバ装置100に搭載するメモリモジュールの個数が増えると、ソフトエラーや素子欠陥によるメモリエラーが発生する確率が増す。そのため、ECC(Error Correcting Code:エラー訂正コード)機能をメモリモジュールに搭載することにより、メモリエラーに対処することが求められる。しかし、メモリモジュールのECC機能を実現するためには、各メモリモジュール上にデータ記録用のメモリチップとは別にECCパリティ記録用のメモリチップを搭載する必要があり、メモリモジュールのコストを増加させる要因となっている。
【0028】
そこで本発明の実施形態2では、メモリモジュール140毎にECC機能を実現するためのチップを搭載することなく、共用レジスタチップ120にメモリモジュール140を冗長化構成する機能を搭載し、同等の機能を実現する構成例を説明する。
【0029】
図3は、共用レジスタチップ120がメモリモジュール140を冗長化構成する動作フローを示す図である。以下、図3の各ステップについて説明する。
【0030】
(図3:ステップS300)
共用レジスタチップ120は、サーバ装置100が起動するとき、またはサーバ装置100のユーザが指示した時点などで、本動作フローを起動する。
【0031】
(図3:ステップS301)
共用レジスタチップ120は、各メモリモジュール140が備えているSPD142から、各メモリモジュール140の記憶容量、個数などの仕様情報を取得する。
【0032】
(図3:ステップS302)
共用レジスタチップ120は、サーバ装置100が備えているメモリモジュール140の個数が2以上であるか否かを判定する。2以上であればステップS303へ進み、それ以外であればステップS306へスキップする。本ステップは、サーバ装置100が冗長化構成するために十分な数のメモリモジュール140を備えているか否かを判定する意義を有する。
【0033】
(図3:ステップS303)
共用レジスタチップ120は、サーバ装置100が備えている各メモリモジュール140の記憶容量が同じであるか否かを判定する。同じであればステップS304へ進み、それ以外であればステップS306へスキップする。本ステップは、メモリモジュール140を冗長化構成するためには各メモリモジュール140の記憶容量が同じであることが望ましいので、あらかじめこれを判定する意義を有する。
【0034】
(図3:ステップS304)
共用レジスタチップ120は、メモリモジュール140を冗長化構成するか否かを判定する。例えば、冗長化構成すべき旨のビットが所定のレジスタ等にセットされているか否かなどにより、冗長化構成するか否かを判定することができる。
【0035】
(図3:ステップS305)
共用レジスタチップ120は、後述の図4で説明するような冗長化構成を、メモリモジュール140上に構築する。
【0036】
(図3:ステップS306)
共用レジスタチップ120は、メモリモジュール140の冗長化構成を構築せず、本動作フローを終了する。
【0037】
図4は、メモリモジュール140上に冗長化構成を構築したときの記憶領域割当を示す図である。図4(a)は2つのメモリモジュール140を用いた場合、図4(b)は3つ以上のメモリモジュール140を用いた場合の例を示す。
【0038】
共用レジスタチップ120は、2つのメモリモジュール140を用いて冗長化構成を構築する場合は、各メモリモジュール140に全く同じデータを格納することにより、ミラー構成を構築する。共用レジスタチップ120は、メモリコントローラ111からデータ書込命令を受け取ったときは、各メモリモジュール140に同じデータを書き込み、データ読取命令を受け取ったときは、各メモリモジュール140から同じデータを読み取って整合性を確認した上でメモリコントローラ111に送信する。
【0039】
共用レジスタチップ120は、3つ以上のメモリモジュール140を用いて冗長化構成を構築する場合は、各メモリモジュール140の記憶領域をメモリモジュール140の個数で分割し、いずれかの記憶領域にパリティデータを格納し、その他の記憶領域には本来格納すべきデータを格納する。各パリティデータは、他のメモリモジュール140が格納しているデータを復元することができるように構成する。
【0040】
図4(b)に示す例では、データ領域A1、B1、C1に対するパリティデータがP1、データ領域A2、B2、C2に対するパリティデータがP2、データ領域A3、B3、C3に対するパリティデータがP3、データ領域A4、B4、C4に対するパリティデータがP4となる。
【0041】
この構成により、いずれかのメモリモジュール140に障害が発生したとしても、パリティデータから元のデータを再計算することにより、失われたデータを復旧することができる。また、冗長化構成機能はECC機能と異なりECCパリティ数による訂正bit数の制限を受けないため、仮に2bit以上のエラーが発生したとしても復旧できる可能性が高い。ただし、冗長化グループ内で複数のエラーが発生した場合は復旧できない場合がある。例えば、記憶領域A1、B1、C1、P1のグループにおいて、データ領域A1とパリティデータP1に同時にエラーが発生した場合、復旧することができない。
【0042】
なお、パリティデータを各メモリモジュール140に分散して格納しているのは、パリティデータのみを記録しているメモリモジュール140に対してアクセスが集中することを避けるためである。
【0043】
共用レジスタチップ120は、メモリコントローラ111からデータ書込命令を受け取ったときは、各メモリモジュール140にデータを書き込むとともに、データを書き込んだ記憶領域を復元するためのパリティデータを更新する。読取命令を受け取ったときは、メモリモジュール140からデータを読み取るとともに、パリティデータを用いて読み取ったデータを別途復元し、整合性を確認した上でメモリコントローラ111に送信する。
【0044】
図5は、共用レジスタチップ120がデータ読取命令を受け取ったときの動作フローである。以下、図5の各ステップについて説明する。
【0045】
(図5:ステップS500)
共用レジスタチップ120は、メモリコントローラ111からデータ読取命令を受け取ると、本動作フローを開始する。
【0046】
(図5:ステップS501)
共用レジスタチップ120は、メモリモジュール140をミラー構成しているときは、読取対象データのミラーデータを取得する。3つ以上のメモリモジュール140を用いて冗長化構成を構築しているときは、読取対象データのパリティデータを用いて、読取対象データを別途復元する。
【0047】
(図5:ステップS502〜S503)
共用レジスタチップ120は、ステップS501で取得したミラーデータまたはパリティデータから復元したデータと、読取対象データとを比較する(S502)。両者が一致した場合はステップS505へスキップし、一致しなかった場合はステップS504へ進む(S503)。
【0048】
(図5:ステップS504)
共用レジスタチップ120は、ステップS501で取得したミラーデータまたはパリティデータから復元したデータを用いて、読取対象データを上書きする。これにより、エラーが発生しているデータを復旧する。
【0049】
(図5:ステップS505)
共用レジスタチップ120は、ステップS503でミラーデータまたは復元データと読取対象データが一致した場合は、いずれかのデータをメモリコントローラ111へ出力する。一致しなかった場合は、ステップS501で取得したデータを正常データであるとみなし、メモリコントローラ111へ出力する。
【0050】
<実施の形態2:まとめ>
以上のように、本実施形態2に係るサーバ装置100において、共用レジスタチップ120は、メモリモジュール140上に冗長化した記憶領域を構成する。これにより、メモリモジュール毎に冗長化構成のための専用チップを搭載する必要がなくなり、コストを抑えることができる。
【0051】
また、本実施形態2に係るサーバ装置100において、共用レジスタチップ120は、いずれかのメモリモジュール140にエラーが生じると、冗長化した記憶領域に格納されているデータを用いてエラーを回復する。これにより、コストを抑えつつメモリモジュール140の信頼性を向上させることができる。
【0052】
また、本実施形態2に係るサーバ装置100において、共用レジスタチップ120は、メモリモジュール140上にミラー構成を構築し、ミラー化された記憶領域それぞれに同一のデータを書き込む。また、いずれかの記憶領域にエラーが生じた場合は、ミラー化されているデータを用いて動作を継続する。これにより、メモリモジュール140の信頼性を向上させることができる。
【0053】
また、本実施形態2に係るサーバ装置100において、共用レジスタチップ120は、メモリモジュール140上にパリティデータを用いた冗長化構成を構築し、記憶領域にデータを書き込む際にパリティデータを更新する。また、いずれかの記憶領域にエラーが生じた場合は、パリティデータを用いてデータを復元する。これにより、メモリモジュール140の信頼性を向上させることができる。
【0054】
また、本実施形態2に係るサーバ装置100において、共用レジスタチップ120は、パリティデータを用いて復元したデータと、読取対象データとを比較し、両者が一致しない場合は、パリティデータを用いて復元したデータをメモリコントローラ111に出力する。これにより、メモリモジュール140の内部でエラーが発生しても、正しいデータをメモリコントローラ111に戻すことができるので、メモリモジュール140の信頼性を向上させることができる。
【0055】
<実施の形態3>
図6は、本発明の実施形態3に係るメモリ装置200の機能ブロック図である。メモリ装置200は、実施形態1〜2で説明したサーバ装置100の機能のうち、共用レジスタチップ120、PLL回路130、およびメモリモジュール140を抜き出して1つの装置として構成した記憶装置である。
【0056】
メモリ装置200は、例えばPCIe(Peripheral Component Interconnect Express)のようなインターフェースを介して、サーバ装置100などのコンピュータに接続し、記憶装置として動作することができる。具体的な動作は実施形態1〜2と同様である。
【0057】
本実施形態3のように、実施形態1〜2で説明した手法を用いてメモリ装置200を構成することにより、コンピュータへ追加的に搭載するメモリデバイスの信頼性と動作速度を向上させつつ、メモリデバイスのコストを抑えることができる。
【0058】
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【0059】
また、上記各構成、機能、処理部などは、それらの全部または一部を、例えば集積回路で設計することによりハードウェアとして実現することもできるし、プロセッサがそれぞれの機能を実現するプログラムを実行することによりソフトウェアとして実現することもできる。各機能を実現するプログラム、テーブルなどの情報は、メモリやハードディスクなどの記憶装置、ICカード、DVDなどの記憶媒体に格納することができる。
【符号の説明】
【0060】
100:サーバ装置、110:CPU、111:メモリコントローラ、120:共用レジスタチップ、130:PLL回路、140:メモリモジュール、150:回路基板、200:メモリ装置。
【技術分野】
【0001】
本発明は、複数のメモリモジュールに対するデータアクセスに関するものである。
【背景技術】
【0002】
近年のプロセッサ性能の向上に伴い、ローエンドサーバにおいても、仮想化やマルチタスクOS(Operating System)を活用したサーバ統合などの用途のため、1台のサーバ装置上で稼動するアプリケーションョン数が増加している。これに伴い、メインメモリの記憶容量を増やすため、多数のメモリモジュールをサーバ装置に搭載する必要がある。
【0003】
一方、近年のメモリインターフェースの高速化(例えば1600Mbps)に伴い、複数のメモリモジュールをサーバ装置に搭載したとき、メモリモジュールとメモリコントローラの間の通信を安定化させる必要がある。そこで、高速なメモリインターフェースを搭載したサーバ装置では、メモリモジュールとメモリコントローラは、レジスタチップと呼ばれるバッファIC(Integrated Circuit)を介して通信するように構成されている。
【0004】
メモリコントローラは、レジスタチップを介してメモリモジュールにアクセスすることにより、複数メモリモジュールに実装された複数DRAM(Dynamic Random Access Memory)チップ全体ではなく、レジスタチップのみを駆動することができる。これにより、メモリコントローラに接続される全DRAMチップ数が増えても、通信信号品質を維持することができる。
【0005】
下記特許文献1に記載されている技術では、メモリモジュール上に複数レジスタチップを搭載することにより、複数メモリモジュールを高速に駆動する方法を実現している。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特表2009−510562号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
上述のレジスタチップをメモリモジュール上に搭載する場合、そのために必要な回路部品(例えば、レジスタチップ本体およびPLL回路などのクロック発生器)をメモリモジュール毎に実装する必要がある。これにより、部品点数が増加し、メモリモジュールが高価になる。
【0008】
特に、レジスタチップを搭載するために必要なコストはメモリモジュールの容量に関係なく発生するため、搭載されているDRAMチップ数が少ない小容量のメモリモジュールほど、メモリモジュール全体に占める同コストの割合が大きくなってしまう。そのため、特に小容量のメモリモジュールを多数搭載する傾向にあるローエンドサーバにおいては、メモリモジュール毎に搭載されるレジスタチップやPLL回路がサーバ装置の原価に占める割合が大きくなり、コスト高となる。
【0009】
本発明は、上記のような課題を解決するためになされたものであり、レジスタチップを搭載するためのコストを抑えつつ、メモリモジュールとメモリコントローラの間の通信を安定化させることのできる技術を提供することを目的とする。
【課題を解決するための手段】
【0010】
本発明に係るサーバ装置は、複数のメモリモジュールに対する命令を格納する共用レジスタを備える。メモリコントローラは、複数のメモリモジュールに対する命令を共用レジスタに格納し、共用レジスタは、メモリコントローラから受け取った命令を複数のメモリモジュールに対して並列出力する。
【発明の効果】
【0011】
本発明に係るサーバ装置によれば、メモリモジュールに対する命令を共用レジスタに格納することにより、通信を安定化させることができる。また、各メモリモジュールが共用レジスタを共有するので、レジスタチップを搭載するために必要なコストを抑えることができる。
【図面の簡単な説明】
【0012】
【図1】従来のメモリモジュールと本発明に係るメモリモジュールの差異を比較する図である。
【図2】実施形態1に係るサーバ装置100の機能ブロック図である。
【図3】共用レジスタチップ120がメモリモジュール140を冗長化構成する動作フローを示す図である。
【図4】メモリモジュール140上に冗長化構成を構築したときの記憶領域割当を示す図である。
【図5】共用レジスタチップ120がデータ読取命令を受け取ったときの動作フローである。
【図6】実施形態3に係るメモリ装置200の機能ブロック図である。
【発明を実施するための形態】
【0013】
<実施の形態1>
図1は、従来のメモリモジュールと本発明に係るメモリモジュールの差異を比較する図である。従来のメモリモジュールは、各メモリモジュール上にそれぞれレジスタチップとPLL回路を搭載しているが、本発明に係るメモリモジュールは、レジスタチップとPLL回路を各メモリモジュールから共有する構成とした。
【0014】
レジスタチップとPLL回路を各メモリモジュールから共有することにより、部品点数を削減することによるコスト低減効果を見込むことができる。また、CPUから見ると単一の共用レジスタチップに対して命令を発行すれば済むので、命令処理回数を削減することにより処理速度を向上させることもできる。
【0015】
図2は、本発明の実施形態1に係るサーバ装置100の機能ブロック図である。サーバ装置100は、CPU110、メモリコントローラ111、共用レジスタチップ120、PLL回路130、1以上のメモリモジュール140、回路基板150を備える。各メモリモジュールは同様の構成を備えるため、個々のメモリモジュールを区別するときには、内部的な構成要素と併せてアルファベット添字を付与する。また、ここでは図示しないが、サーバ装置100は、キーボードやマウスなどの入力装置、ディスプレイなどの出力装置、ネットワークインターフェースなどを備えることもできる。
【0016】
CPU110は、メモリコントローラ111に対し、メモリモジュール140が格納しているデータを読み取るデータ読取命令、またはメモリモジュール140にデータを書き込むデータ書込命令を発行する。
【0017】
メモリコントローラ111は、CPU110から受け取ったデータ読取命令またはデータ書込命令に基づき、共用レジスタチップ120を介して、メモリモジュール140に対しデータ読取命令またはデータ書込命令を発行する。このデータ読取命令またはデータ書込命令には、メモリモジュール140上のアクセス先アドレスを指示するアドレス信号、命令内容を指定するコマンド信号、データを記述したデータ信号などが含まれる。
【0018】
共用レジスタチップ120は、メモリコントローラ111から受け取ったデータ読取命令またはデータ書込命令のうち、アドレス信号とコマンド信号を格納し、PLL回路130が出力するクロック信号に同期して各メモリモジュール140に並列的に出力する。共用レジスタチップ120は、各メモリモジュール140との間でアドレス信号とコマンド信号を送受信した後、残りの信号を各メモリモジュール140との間で送受信する。
【0019】
PLL回路130は、各メモリモジュール140に共通するクロック信号を、共用レジスタチップ120、各メモリモジュール140、メモリコントローラ111に出力する。これら各デバイスは、PLL回路130が出力するクロック信号に同期して命令を送受信する。
【0020】
メモリモジュール140は、1以上のメモリチップ(ここではDRAMチップ)141、SPD(Serial Presence Detect)142を備える。メモリチップ141は、例えばDRAMチップのような、データを格納する記憶デバイスである。SPD142は、メモリモジュール140の仕様情報などを格納する記憶デバイスである。
【0021】
CPU110、メモリコントローラ111、共用レジスタチップ120、PLL回路130、メモリモジュール140は、サーバ装置100が備える同一の回路基板150上に実装することができる。
【0022】
<実施の形態1:まとめ>
以上のように、本実施形態1に係るサーバ装置100は、各メモリモジュール140に対するデータ読取命令またはデータ書込命令を格納する共用レジスタチップ120を備える。これにより、メモリモジュール140毎にレジスタチップを搭載する必要がなくなるので、部品点数を削減してコストを抑えることができる。
【0023】
また、本実施形態1に係るサーバ装置100において、共用レジスタチップ120は、メモリコントローラ111から受け取った命令を、各メモリモジュール140に対して並列出力する。これにより、メモリチップ141の数が多くなっても、メモリコントローラ111と各メモリモジュール140を接続するメモリバスの本数を少なくすることができるので、信号送受信に係る制御を容易にすることができる。したがって、信号周波数が高くなっても、メモリコントローラ111と各メモリモジュール140の間の通信を安定させることができる。
【0024】
また、本実施形態1に係るサーバ装置100において、CPU110は単一の共用レジスタチップ120に対して命令を発行すれば済むので、メモリモジュール140毎にレジスタチップを搭載する場合と比較して、CPU110の処理負荷を軽減して処理速度を向上させることができる。
【0025】
また、本実施形態1に係るサーバ装置100は、各メモリモジュール140に共通するクロック信号を生成するPLL回路130を備え、共用レジスタチップ120は、そのクロック信号に同期してアドレス信号とコマンド信号を各メモリモジュール140に並列出力する。これにより、各メモリモジュール140間の同期を保ちつつ、メモリモジュール140毎にPLL回路130を搭載する必要がなくなるので、部品点数を削減してコストを抑えることができる。
【0026】
また、本実施形態1に係るサーバ装置100において、共用レジスタチップ120、PLL回路130、メモリモジュール140を同一の回路基板150上に実装することにより、共用レジスタチップ120をサーバ装置100の構成部品として提供しやすくなる。
【0027】
<実施の形態2>
サーバ装置100に搭載するメモリモジュールの個数が増えると、ソフトエラーや素子欠陥によるメモリエラーが発生する確率が増す。そのため、ECC(Error Correcting Code:エラー訂正コード)機能をメモリモジュールに搭載することにより、メモリエラーに対処することが求められる。しかし、メモリモジュールのECC機能を実現するためには、各メモリモジュール上にデータ記録用のメモリチップとは別にECCパリティ記録用のメモリチップを搭載する必要があり、メモリモジュールのコストを増加させる要因となっている。
【0028】
そこで本発明の実施形態2では、メモリモジュール140毎にECC機能を実現するためのチップを搭載することなく、共用レジスタチップ120にメモリモジュール140を冗長化構成する機能を搭載し、同等の機能を実現する構成例を説明する。
【0029】
図3は、共用レジスタチップ120がメモリモジュール140を冗長化構成する動作フローを示す図である。以下、図3の各ステップについて説明する。
【0030】
(図3:ステップS300)
共用レジスタチップ120は、サーバ装置100が起動するとき、またはサーバ装置100のユーザが指示した時点などで、本動作フローを起動する。
【0031】
(図3:ステップS301)
共用レジスタチップ120は、各メモリモジュール140が備えているSPD142から、各メモリモジュール140の記憶容量、個数などの仕様情報を取得する。
【0032】
(図3:ステップS302)
共用レジスタチップ120は、サーバ装置100が備えているメモリモジュール140の個数が2以上であるか否かを判定する。2以上であればステップS303へ進み、それ以外であればステップS306へスキップする。本ステップは、サーバ装置100が冗長化構成するために十分な数のメモリモジュール140を備えているか否かを判定する意義を有する。
【0033】
(図3:ステップS303)
共用レジスタチップ120は、サーバ装置100が備えている各メモリモジュール140の記憶容量が同じであるか否かを判定する。同じであればステップS304へ進み、それ以外であればステップS306へスキップする。本ステップは、メモリモジュール140を冗長化構成するためには各メモリモジュール140の記憶容量が同じであることが望ましいので、あらかじめこれを判定する意義を有する。
【0034】
(図3:ステップS304)
共用レジスタチップ120は、メモリモジュール140を冗長化構成するか否かを判定する。例えば、冗長化構成すべき旨のビットが所定のレジスタ等にセットされているか否かなどにより、冗長化構成するか否かを判定することができる。
【0035】
(図3:ステップS305)
共用レジスタチップ120は、後述の図4で説明するような冗長化構成を、メモリモジュール140上に構築する。
【0036】
(図3:ステップS306)
共用レジスタチップ120は、メモリモジュール140の冗長化構成を構築せず、本動作フローを終了する。
【0037】
図4は、メモリモジュール140上に冗長化構成を構築したときの記憶領域割当を示す図である。図4(a)は2つのメモリモジュール140を用いた場合、図4(b)は3つ以上のメモリモジュール140を用いた場合の例を示す。
【0038】
共用レジスタチップ120は、2つのメモリモジュール140を用いて冗長化構成を構築する場合は、各メモリモジュール140に全く同じデータを格納することにより、ミラー構成を構築する。共用レジスタチップ120は、メモリコントローラ111からデータ書込命令を受け取ったときは、各メモリモジュール140に同じデータを書き込み、データ読取命令を受け取ったときは、各メモリモジュール140から同じデータを読み取って整合性を確認した上でメモリコントローラ111に送信する。
【0039】
共用レジスタチップ120は、3つ以上のメモリモジュール140を用いて冗長化構成を構築する場合は、各メモリモジュール140の記憶領域をメモリモジュール140の個数で分割し、いずれかの記憶領域にパリティデータを格納し、その他の記憶領域には本来格納すべきデータを格納する。各パリティデータは、他のメモリモジュール140が格納しているデータを復元することができるように構成する。
【0040】
図4(b)に示す例では、データ領域A1、B1、C1に対するパリティデータがP1、データ領域A2、B2、C2に対するパリティデータがP2、データ領域A3、B3、C3に対するパリティデータがP3、データ領域A4、B4、C4に対するパリティデータがP4となる。
【0041】
この構成により、いずれかのメモリモジュール140に障害が発生したとしても、パリティデータから元のデータを再計算することにより、失われたデータを復旧することができる。また、冗長化構成機能はECC機能と異なりECCパリティ数による訂正bit数の制限を受けないため、仮に2bit以上のエラーが発生したとしても復旧できる可能性が高い。ただし、冗長化グループ内で複数のエラーが発生した場合は復旧できない場合がある。例えば、記憶領域A1、B1、C1、P1のグループにおいて、データ領域A1とパリティデータP1に同時にエラーが発生した場合、復旧することができない。
【0042】
なお、パリティデータを各メモリモジュール140に分散して格納しているのは、パリティデータのみを記録しているメモリモジュール140に対してアクセスが集中することを避けるためである。
【0043】
共用レジスタチップ120は、メモリコントローラ111からデータ書込命令を受け取ったときは、各メモリモジュール140にデータを書き込むとともに、データを書き込んだ記憶領域を復元するためのパリティデータを更新する。読取命令を受け取ったときは、メモリモジュール140からデータを読み取るとともに、パリティデータを用いて読み取ったデータを別途復元し、整合性を確認した上でメモリコントローラ111に送信する。
【0044】
図5は、共用レジスタチップ120がデータ読取命令を受け取ったときの動作フローである。以下、図5の各ステップについて説明する。
【0045】
(図5:ステップS500)
共用レジスタチップ120は、メモリコントローラ111からデータ読取命令を受け取ると、本動作フローを開始する。
【0046】
(図5:ステップS501)
共用レジスタチップ120は、メモリモジュール140をミラー構成しているときは、読取対象データのミラーデータを取得する。3つ以上のメモリモジュール140を用いて冗長化構成を構築しているときは、読取対象データのパリティデータを用いて、読取対象データを別途復元する。
【0047】
(図5:ステップS502〜S503)
共用レジスタチップ120は、ステップS501で取得したミラーデータまたはパリティデータから復元したデータと、読取対象データとを比較する(S502)。両者が一致した場合はステップS505へスキップし、一致しなかった場合はステップS504へ進む(S503)。
【0048】
(図5:ステップS504)
共用レジスタチップ120は、ステップS501で取得したミラーデータまたはパリティデータから復元したデータを用いて、読取対象データを上書きする。これにより、エラーが発生しているデータを復旧する。
【0049】
(図5:ステップS505)
共用レジスタチップ120は、ステップS503でミラーデータまたは復元データと読取対象データが一致した場合は、いずれかのデータをメモリコントローラ111へ出力する。一致しなかった場合は、ステップS501で取得したデータを正常データであるとみなし、メモリコントローラ111へ出力する。
【0050】
<実施の形態2:まとめ>
以上のように、本実施形態2に係るサーバ装置100において、共用レジスタチップ120は、メモリモジュール140上に冗長化した記憶領域を構成する。これにより、メモリモジュール毎に冗長化構成のための専用チップを搭載する必要がなくなり、コストを抑えることができる。
【0051】
また、本実施形態2に係るサーバ装置100において、共用レジスタチップ120は、いずれかのメモリモジュール140にエラーが生じると、冗長化した記憶領域に格納されているデータを用いてエラーを回復する。これにより、コストを抑えつつメモリモジュール140の信頼性を向上させることができる。
【0052】
また、本実施形態2に係るサーバ装置100において、共用レジスタチップ120は、メモリモジュール140上にミラー構成を構築し、ミラー化された記憶領域それぞれに同一のデータを書き込む。また、いずれかの記憶領域にエラーが生じた場合は、ミラー化されているデータを用いて動作を継続する。これにより、メモリモジュール140の信頼性を向上させることができる。
【0053】
また、本実施形態2に係るサーバ装置100において、共用レジスタチップ120は、メモリモジュール140上にパリティデータを用いた冗長化構成を構築し、記憶領域にデータを書き込む際にパリティデータを更新する。また、いずれかの記憶領域にエラーが生じた場合は、パリティデータを用いてデータを復元する。これにより、メモリモジュール140の信頼性を向上させることができる。
【0054】
また、本実施形態2に係るサーバ装置100において、共用レジスタチップ120は、パリティデータを用いて復元したデータと、読取対象データとを比較し、両者が一致しない場合は、パリティデータを用いて復元したデータをメモリコントローラ111に出力する。これにより、メモリモジュール140の内部でエラーが発生しても、正しいデータをメモリコントローラ111に戻すことができるので、メモリモジュール140の信頼性を向上させることができる。
【0055】
<実施の形態3>
図6は、本発明の実施形態3に係るメモリ装置200の機能ブロック図である。メモリ装置200は、実施形態1〜2で説明したサーバ装置100の機能のうち、共用レジスタチップ120、PLL回路130、およびメモリモジュール140を抜き出して1つの装置として構成した記憶装置である。
【0056】
メモリ装置200は、例えばPCIe(Peripheral Component Interconnect Express)のようなインターフェースを介して、サーバ装置100などのコンピュータに接続し、記憶装置として動作することができる。具体的な動作は実施形態1〜2と同様である。
【0057】
本実施形態3のように、実施形態1〜2で説明した手法を用いてメモリ装置200を構成することにより、コンピュータへ追加的に搭載するメモリデバイスの信頼性と動作速度を向上させつつ、メモリデバイスのコストを抑えることができる。
【0058】
以上、本発明者によってなされた発明を実施形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【0059】
また、上記各構成、機能、処理部などは、それらの全部または一部を、例えば集積回路で設計することによりハードウェアとして実現することもできるし、プロセッサがそれぞれの機能を実現するプログラムを実行することによりソフトウェアとして実現することもできる。各機能を実現するプログラム、テーブルなどの情報は、メモリやハードディスクなどの記憶装置、ICカード、DVDなどの記憶媒体に格納することができる。
【符号の説明】
【0060】
100:サーバ装置、110:CPU、111:メモリコントローラ、120:共用レジスタチップ、130:PLL回路、140:メモリモジュール、150:回路基板、200:メモリ装置。
【特許請求の範囲】
【請求項1】
メモリチップを搭載した複数のメモリモジュールに対するデータ読み取りまたはデータ書き込みを制御するメモリコントローラと、
前記複数のメモリモジュールに対する命令を格納する共用レジスタと、
前記メモリコントローラおよび前記共用レジスタを介して前記複数のメモリモジュールに対してデータ読取命令またはデータ書込命令を発行するプロセッサと、
を備え、
前記メモリコントローラは、
前記複数のメモリモジュールに対する命令を前記共用レジスタに格納し、
前記共用レジスタは、
前記メモリコントローラから受け取った命令を前記複数のメモリモジュールに対して並列出力する
ことを特徴とするサーバ装置。
【請求項2】
前記複数のメモリモジュールに共通するクロック信号を生成するクロック生成器を備え、
前記共用レジスタは、
前記複数のメモリモジュールに対する命令のうち、アクセス先アドレスを指示するアドレス信号と、命令内容を指定するコマンド信号とを格納し、
前記クロック生成器が生成するクロック信号に同期して、前記メモリコントローラから受け取った命令を前記複数のメモリモジュールに対して並列出力する
ことを特徴とする請求項1記載のサーバ装置。
【請求項3】
前記共用レジスタは、
前記複数のメモリモジュール上で冗長化構成を構築し、
前記複数のメモリモジュールが格納しているデータにエラーが生じると、冗長化されているデータを用いてエラーを回復する
ことを特徴とする請求項1記載のサーバ装置。
【請求項4】
前記共用レジスタは、
前記複数のメモリモジュール上でミラー構成を構築し、
前記複数のメモリモジュールが格納しているデータにエラーが生じると、ミラー化されているデータを用いて動作を継続する
ことを特徴とする請求項1記載のサーバ装置。
【請求項5】
前記共用レジスタは、
パリティデータを格納するパリティ領域を前記複数のメモリモジュール上に構築し、
前記複数のメモリモジュールが格納しているデータにエラーが生じると、前記パリティデータを用いてデータを復元する
ことを特徴とする請求項1記載のサーバ装置。
【請求項6】
前記共用レジスタは、
前記メモリコントローラからデータ書込命令を受け取ると、そのデータを前記複数のメモリモジュールに書き込むとともに前記パリティデータを更新し、
前記メモリコントローラからデータ読取命令を受け取ると、そのデータを前記複数のメモリモジュールから読み出すとともに前記パリティデータを用いてデータを復元し、両者が一致した場合はそのデータを前記メモリコントローラに出力し、両者が一致しなかった場合は復元したデータを前記複数のメモリモジュールに対して上書更新し、復元したデータを前記メモリコントローラに出力する
ことを特徴とする請求項5記載のサーバ装置。
【請求項7】
前記メモリモジュール、前記メモリコントローラ、前記共用レジスタは、同一の回路基板上に実装されている
ことを特徴とする請求項1記載のサーバ装置。
【請求項8】
メモリチップを搭載した複数のメモリモジュールと、
前記複数のメモリモジュールに対するデータ読み取りまたはデータ書き込みを制御するメモリコントローラと、
前記複数のメモリモジュールに対する命令を格納する共用レジスタと、
を備え、
前記メモリコントローラは、
前記複数のメモリモジュールに対する命令を前記共用レジスタに格納し、
前記共用レジスタは、
前記メモリコントローラから受け取った命令を前記複数のメモリモジュールに対して並列出力する
ことを特徴とするメモリ装置。
【請求項1】
メモリチップを搭載した複数のメモリモジュールに対するデータ読み取りまたはデータ書き込みを制御するメモリコントローラと、
前記複数のメモリモジュールに対する命令を格納する共用レジスタと、
前記メモリコントローラおよび前記共用レジスタを介して前記複数のメモリモジュールに対してデータ読取命令またはデータ書込命令を発行するプロセッサと、
を備え、
前記メモリコントローラは、
前記複数のメモリモジュールに対する命令を前記共用レジスタに格納し、
前記共用レジスタは、
前記メモリコントローラから受け取った命令を前記複数のメモリモジュールに対して並列出力する
ことを特徴とするサーバ装置。
【請求項2】
前記複数のメモリモジュールに共通するクロック信号を生成するクロック生成器を備え、
前記共用レジスタは、
前記複数のメモリモジュールに対する命令のうち、アクセス先アドレスを指示するアドレス信号と、命令内容を指定するコマンド信号とを格納し、
前記クロック生成器が生成するクロック信号に同期して、前記メモリコントローラから受け取った命令を前記複数のメモリモジュールに対して並列出力する
ことを特徴とする請求項1記載のサーバ装置。
【請求項3】
前記共用レジスタは、
前記複数のメモリモジュール上で冗長化構成を構築し、
前記複数のメモリモジュールが格納しているデータにエラーが生じると、冗長化されているデータを用いてエラーを回復する
ことを特徴とする請求項1記載のサーバ装置。
【請求項4】
前記共用レジスタは、
前記複数のメモリモジュール上でミラー構成を構築し、
前記複数のメモリモジュールが格納しているデータにエラーが生じると、ミラー化されているデータを用いて動作を継続する
ことを特徴とする請求項1記載のサーバ装置。
【請求項5】
前記共用レジスタは、
パリティデータを格納するパリティ領域を前記複数のメモリモジュール上に構築し、
前記複数のメモリモジュールが格納しているデータにエラーが生じると、前記パリティデータを用いてデータを復元する
ことを特徴とする請求項1記載のサーバ装置。
【請求項6】
前記共用レジスタは、
前記メモリコントローラからデータ書込命令を受け取ると、そのデータを前記複数のメモリモジュールに書き込むとともに前記パリティデータを更新し、
前記メモリコントローラからデータ読取命令を受け取ると、そのデータを前記複数のメモリモジュールから読み出すとともに前記パリティデータを用いてデータを復元し、両者が一致した場合はそのデータを前記メモリコントローラに出力し、両者が一致しなかった場合は復元したデータを前記複数のメモリモジュールに対して上書更新し、復元したデータを前記メモリコントローラに出力する
ことを特徴とする請求項5記載のサーバ装置。
【請求項7】
前記メモリモジュール、前記メモリコントローラ、前記共用レジスタは、同一の回路基板上に実装されている
ことを特徴とする請求項1記載のサーバ装置。
【請求項8】
メモリチップを搭載した複数のメモリモジュールと、
前記複数のメモリモジュールに対するデータ読み取りまたはデータ書き込みを制御するメモリコントローラと、
前記複数のメモリモジュールに対する命令を格納する共用レジスタと、
を備え、
前記メモリコントローラは、
前記複数のメモリモジュールに対する命令を前記共用レジスタに格納し、
前記共用レジスタは、
前記メモリコントローラから受け取った命令を前記複数のメモリモジュールに対して並列出力する
ことを特徴とするメモリ装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図2】
【図3】
【図4】
【図5】
【図6】
【公開番号】特開2012−118935(P2012−118935A)
【公開日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願番号】特願2010−270659(P2010−270659)
【出願日】平成22年12月3日(2010.12.3)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
【公開日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願日】平成22年12月3日(2010.12.3)
【出願人】(000005108)株式会社日立製作所 (27,607)
【Fターム(参考)】
[ Back to top ]