(57)【要約】  アドレス線のトポロジーの異なるいずれのＤＩＭＭに対してもアドレス指定とデータの読み書きを正確に行うことができるとともに、製造コストを抑制したメモリコントローラ及び情報処理装置を提供することを課題とする。  アドレス線のトポロジーが異なるＤＩＭＭの種類をＳＰＤに基づいて判定する判定部と、  前記判定部によって判定されるＤＩＭＭの種類に応じて、アドレス信号のスルーレートを設定するスルーレート設定部と、  前記判定部によって判定されるＤＩＭＭの種類に応じて、データの読み出し時又は書き込み時のデータ遅延量を設定する遅延設定部と  を含む、メモリコントローラ。
2012095980.tif 000002
【特許請求の範囲】
【請求項１】
アドレス線のトポロジーが異なるＤＩＭＭの種類をＳＰＤに基づいて判定する判定部と、
前記判定部によって判定されるＤＩＭＭの種類に応じて、アドレス信号のスルーレートを設定するスルーレート設定部と、
前記判定部によって判定されるＤＩＭＭの種類に応じて、データの読み出し時又は書き込み時のデータ遅延量を設定する遅延設定部と
を含む、メモリコントローラ。
【請求項２】
前記スルーレート設定部は、
前記判定部によって判定されるＤＩＭＭの種類に応じて、前記アドレス信号のスルーレートを設定するためのスルーレート設定指令を生成するスルーレート設定指令生成部と、
前記アドレス信号を伝送するアドレス線に挿入され、前記スルーレート設定指令生成部が生成する前記スルーレート設定指令に基づき、前記アドレス信号のスルーレートを変更するスルーレート変更部とを有する、請求項１記載のメモリコントローラ。
【請求項３】
前記スルーレート変更部は、
前記スルーレート設定指令に応じた電流を出力するバイアス回路部と、
前記アドレス信号によって駆動されるとともに、前記バイアス回路部の出力電流が供給され、前記バイアス回路部の出力電流に応じてスルーレートを変更したアドレス信号を出力するＣＭＯＳインバータ回路部とを有する、請求項２記載のメモリコントローラ。
【請求項４】
前記スルーレート設定部は、ＵＤＩＭＭに入力される第１アドレス信号のスルーレートを、ＲＤＩＭＭに入力される第２アドレス信号のスルーレートよりも低くする、請求項１記載のメモリコントローラ。
【請求項５】
前記遅延設定部は、
前記判定部によって判定されるＤＩＭＭの種類に応じて、前記データ遅延量を設定するための遅延指令を生成する遅延指令生成部と、
前記データの伝送路に挿入され、前記遅延指令生成部が生成する前記遅延指令に基づき、前記データ遅延量を制御する遅延制御部とを有する、請求項１記載のメモリコントローラ。
【請求項６】
前記遅延制御部は、
前記データの伝送路に挿入される遅延部と、
前記データの伝送路に挿入され、前記遅延指令に基づき、前記遅延部を経由する第１経路と、前記遅延部を経由しない第２経路とのいずれか一方を経由するデータを選択するマルチプレクサとを有し、
前記マルチプレクサで前記第１経路又は前記第２経路のいずれか一方を経由するデータを選択することにより、前記データ遅延量を制御する、請求項５記載のメモリコントローラ。
【請求項７】
前記遅延制御部は、ＵＤＩＭＭから前記データを読み出すときには前記第１経路を経由するデータを選択し、ＵＤＩＭＭに前記データを書き込むときには前記第２経路を経由するデータを選択するとともに、ＲＤＩＭＭから前記データを読み出すときには前記第２経路を経由するデータを選択し、ＲＤＩＭＭに前記データを書き込むときには前記第１経路を経由するデータを選択する、請求項６記載のメモリコントローラ。
【請求項８】
演算処理装置と、
記憶装置と、
前記演算処理装置と前記記憶装置との間でデータを伝送する、請求項１記載のメモリコントローラと
を含む、情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
メモリコントローラ、及び情報処理装置に関する。
【背景技術】
【０００２】
従来より、複数のメモリ回路及びシステムと通信できるインターフェース回路を備えるサブシステムであって、インターフェース回路が、メモリ回路及びシステムをインターフェースして、メモリ回路の命令スケジューリングにおける制約を減少させるように動作する、サブシステムがあった。このようなサブシステムにおいて、ピンごとのタイミングキャリブレーション能力及び補正能力に加えて、スルーレート（slew rate）、プルアップの能力又は強さ、及びプルダウンの能力又は強さを制御する回路を、バッファ集積回路のＩ／Ｏピンのそれぞれに追加する、又は、バッファ集積回路の一連のＩ／Ｏピンに共通回路として追加することが行われていた。【０００３】
また、半導体装置の固有の電気的特性を示す特性情報を記憶した記憶部を具備し、記憶部に記憶されている特性情報に基づいて、半導体装置のバッファ能力を調整可能としたことを特徴とする半導体装置があった。特性情報として、特性ばらつき情報、予め測定した各半導体メモリのスルーレート、ドライブ能力、電圧振幅、電流特性等を記憶部に記憶させていた。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−５２６３２３号公報
【特許文献２】特開２００３−０２３３４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
半導体技術及びＬＳＩ（Large Scale Integrated circuit：大規模集積回路）等の実装技術の進展に伴い、１枚の基板に複数のＣＰＵ（Central Processing Unit：中央演算処理装置）及び大容量の主記憶装置を搭載した情報処理装置が提供されている。【０００６】
このような情報処理装置の一例として、ブレードサーバがある。ブレードサーバは、大容量の主記憶装置として、ＤＩＭＭ（Dual Inline Memory Module）を含む。【０００７】
ＤＩＭＭの種類は、業界標準団体であるＪＥＤＥＣ（Joint Electron Device Engineering Council）によって標準化が行われており、JEDEC standard No. 21-Cによって仕様が決まっている。【０００８】
ＤＩＭＭには幾つかの種類があり、例えば、ＵＤＩＭＭ（Unbuffered Dual Inline Memory Module）とＲＤＩＭＭ（Registered Dual Inline Memory Module）がある。【０００９】
ＵＤＩＭＭとＲＤＩＭＭは、アドレス線のトポロジーが異なる。ＲＤＩＭＭは、アドレス信号の波形及びタイミングを調整するレジスタチップ(registered chip)を含み、ＵＤＩＭＭはレジスタチップを含まない。【００１０】
一般的に、ブレードサーバのような大型の装置には、レジスタチップを含むＲＤＩＭＭが用いられ、デスクトップ型のＰＣ（Personal Computer：パーソナルコンピュータ）には、レジスタチップを含まないＵＤＩＭＭが用いられる。【００１１】
ところで、従来のサブシステム又は半導体装置等の装置（以下、従来の装置と称す）は、ＤＩＭＭのアドレス線のトポロジーの違いに応じてアドレス信号のスルーレートを設定することを行っていない。【００１２】
従って、従来の装置で、ＵＤＩＭＭとＲＤＩＭＭのようにアドレス線のトポロジーの異なるＤＩＭＭに対してデータの読み書きを行おうとすると、正しくアドレスを指定できない、又は、正しくデータの読み書きができないという課題があった。【００１３】
このため、従来は、アドレス線のトポロジーに応じて、ＵＤＩＭＭ用のメモリコントローラとＲＤＩＭＭ用のメモリコントローラを作り分けていた。【００１４】
また、上述のように、ＵＤＩＭＭはデスクトップ型のＰＣのように大量に生産される装置に用いられ、ＲＤＩＭＭはブレードサーバのような大型で生産台数が比較的少ない装置に用いられるため、一般的にＵＤＩＭＭはＲＤＩＭＭよりも安価である。【００１５】
また、このようにＲＤＩＭＭはＵＤＩＭＭよりも生産台数が少ないため、ＲＤＩＭＭ用のメモリコントローラはＵＤＩＭＭ用のメモリコントローラよりも高価であるという課題があった。【００１６】
そこで、アドレス線のトポロジーの異なるいずれのＤＩＭＭに対してもアドレス指定とデータの読み書きを正確に行うことができるとともに、製造コストを抑制したメモリコントローラ及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本発明の実施の形態のメモリコントローラは、アドレス線のトポロジーが異なるＤＩＭＭの種類をＳＰＤに基づいて判定する判定部と、前記判定部によって判定されるＤＩＭＭの種類に応じて、アドレス信号のスルーレートを設定するスルーレート設定部と、前記判定部によって判定されるＤＩＭＭの種類に応じて、データの読み出し時又は書き込み時のデータ遅延量を設定する遅延設定部とを含む。
【発明の効果】
【００１８】
アドレス線のトポロジーの異なるいずれのＤＩＭＭに対してもアドレス指定とデータの読み書きを正確に行うことができるとともに、製造コストを抑制したメモリコントローラ及び情報処理装置を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】比較例の情報処理装置の一例としてのサーバ１０のブロック構成を示す図である。
【図２】比較例のメモリコントローラ４０とＲＤＩＭＭ５０の例示的な実装状態を示す側面図である。
【図３】比較例のサーバ１０内のメモリコントローラ４０の回路を示す図である。
【図４】ＲＤＩＭＭ５０のアドレス線の回路を示す図である。
【図５】ＵＤＩＭＭ６０のアドレス線の回路を示す図である。
【図６】実施の形態のメモリコントローラ１００の回路を示す図である。
【図７Ａ】ＲＤＩＭＭ又はＵＤＩＭＭのＳＰＤ素子に記憶された諸元を表すデータの一部を示す図である。
【図７Ｂ】図７Ａに示すデータのデータビット［３：０］の値の具体例を示す図である。
【図８】実施の形態のメモリコントローラ１００のドライバ１０３の回路を示す図である。
【図９】実施の形態のメモリコントローラ１００における設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３と、バイアス回路２２０、２３０のバイアス電流と、アドレス信号のスルーレートの関係を表す図である。
【図１０Ａ】実施の形態のメモリコントローラ１００でスルーレートを最大にした場合のアドレス信号の立ち上がり波形のシミュレーション結果を示す図である。
【図１０Ｂ】実施の形態のメモリコントローラ１００でスルーレートを最小にした場合のアドレス信号の立ち上がり波形のシミュレーション結果を示す図である。
【図１１Ａ】アドレス信号のスルーレートを最大にした場合に、ＵＤＩＭＭ６０のＳＤＲＡＭ１が受信するアドレス信号のアイパターンを示す図である。
【図１１Ｂ】アドレス信号のスルーレートを最大にした場合に、ＵＤＩＭＭ６０のＳＤＲＡＭ８が受信するアドレス信号のアイパターンを示す図である。
【図１２Ａ】アドレス信号のスルーレートを最小にした場合に、ＵＤＩＭＭ６０のＳＤＲＡＭ１が受信するアドレス信号のアイパターンを示す図である。
【図１２Ｂ】アドレス信号のスルーレートを最小にした場合に、ＵＤＩＭＭ６０のＳＤＲＡＭ８が受信するアドレス信号のアイパターンを示す図である。
【図１３】実施の形態のメモリコントローラ１００にＲＤＩＭＭ５０又はＵＤＩＭＭ６０が接続された場合に、メモリコントローラ１００のＳＰＤコントローラ１５０が実行する処理を示す図である。
【図１４】実施の形態のメモリコントローラ１００のスルーレート設定指令生成部１３０及び遅延指令生成部１４０の動作を示す真理値表を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明のメモリコントローラ、及び情報処理装置を適用した実施の形態について説明する。
【００２１】
実施の形態のメモリコントローラ、及び情報処理装置について説明する前に、まず、図１乃至図５を用いて、比較例のメモリコントローラにおける問題点について説明する。
【００２２】
図１は、比較例の情報処理装置の一例としてのサーバ１０のブロック構成を示す図である。
【００２３】
サーバ１０は、システムボード２０、ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３、ＣＰＵコントローラ３０、メモリコントローラ４０、及びＲＤＩＭＭ５０を含む。
【００２４】
ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、ＣＰＵ３、ＣＰＵコントローラ３０、メモリコントローラ４０、及びＲＤＩＭＭ５０は、システムボード２０に搭載されている。図１には、一例として、８つのＲＤＩＭＭ５０を示す。
【００２５】
ＣＰＵコントローラ３０は、ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、及びＣＰＵ３が、メモリコントローラ４０を介してＲＤＩＭＭ５０との間でデータの読み出し又は書き込みを行う際に、ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、及びＣＰＵ３とメモリコントローラ４０との間でデータの受け渡しの制御を行う制御部である。
【００２６】
図１に示すＣＰＵコントローラ３０には、一例として、４つのＣＰＵ０〜ＣＰＵ３が接続されている。
【００２７】
メモリコントローラ４０は、ＣＰＵ０、ＣＰＵ１、ＣＰＵ２、及びＣＰＵ３が、ＣＰＵコントローラ３０を介してＲＤＩＭＭ５０との間でデータの読み出し又は書き込みを行う際に、ＣＰＵコントローラ３０とＲＤＩＭＭ５０との間でデータの受け渡しの制御を行う制御部である。
【００２８】
図１に示すメモリコントローラ４０には、一例として、８つのＲＤＩＭＭ５０が接続されている。
【００２９】
ＣＰＵ０〜ＣＰＵ３は、ＣＰＵコントローラ３０及びメモリコントローラ４０を介して、ＲＤＩＭＭ５０に記憶されたデータの読み出し、又はＲＤＩＭＭ５０へのデータの書き込みを行い、所定のプログラム等を実行し、演算処理を行う。
【００３０】
このように、図１に示すサーバ１０は、複数のＣＰＵ０〜ＣＰＵ３と、複数のＲＤＩＭＭ５０とを含んでいる。
【００３１】
これに対して、デスクトップ型のＰＣは、例えば、１つのＣＰＵと、１個又は２〜３個程度のＵＤＩＭＭとを含み、ＣＰＵコントローラを含まない構成である。
【００３２】
次に、図２を用いて、比較例のメモリコントローラ４０とＲＤＩＭＭ５０の実装状態について説明する。
【００３３】
図２は、比較例のメモリコントローラ４０とＲＤＩＭＭ５０Ａ、５０Ｂの例示的な実装状態を示す側面図である。
【００３４】
図２では、説明の便宜上、２つのＲＤＩＭＭを符号５０Ａ、５０Ｂで区別するが、ＲＤＩＭＭ５０Ａ、５０Ｂは、図１に示す８つのＲＤＩＭＭ５０のうちの２つである。図２に示さない他の６つのＲＤＩＭＭ５０は、図２に示すＲＤＩＭＭ５０Ａ、５０Ｂと同様に接続される。
【００３５】
なお、以下において、ＲＤＩＭＭ５０Ａ、５０Ｂを特に区別しない場合は、単にＲＤＩＭＭ５０と称す。
【００３６】
上述のように、メモリコントローラ４０とＲＤＩＭＭ５０Ａ、５０Ｂは、システムボード２０に搭載されている。
【００３７】
システムボード２０は、ビア２１Ａ、２１Ｂ、２１Ｃ、及び層間配線２２を有する。図２には、ビア２１Ａ、２１Ｂ、２１Ｃ、及び層間配線２２を破線で示す。
【００３８】
ビア２１Ａ、２１Ｂ、２１Ｃは、それぞれ、システムボード２０の上側と下側に示す２つの主面２０Ａ、２０Ｂを接続するように厚さ方向に貫通している。
【００３９】
層間配線２２は、システムボード２０の厚さの略中央で、図中上側と下側に示す２つの主面２０Ａ、２０Ｂに略並行に形成されている。
【００４０】
メモリコントローラ４０は、バンプ２３によってシステムボード２０に実装されており、筐体４０Ａ内のＩＣ（Integrated Circuit：集積回路）チップ４１は、破線で示すメモリコントローラ４０内の配線４２とバンプ２１を通じて、層間配線２２に接続されている。ＩＣチップ４１は、ＣＰＵコントローラ３０（図１参照）とＲＤＩＭＭ５０Ａ、５０Ｂとの間でデータの受け渡しの制御を行う。
【００４１】
ＲＤＩＭＭ５０Ａ、５０Ｂは、システムボード２０の主面２０Ａに配設されるソケット２４Ａ、２４Ｂに差し込まれている。ソケット２４Ａ、２４Ｂは、それぞれ、ビア２１Ｂ、２１Ｃに接続されている。なお、ソケット２４Ａ、２４Ｂに形成されている配線２５Ａ、２５Ｂを破線で示す。
【００４２】
ＲＤＩＭＭ５０Ａ、５０Ｂは、それぞれ、基板５１Ａ、５１Ｂを有する。基板５１Ａ、５１Ｂには、それぞれ、バンプ５２Ａ、５２ＢによってＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）５３Ａ、５３Ｂが実装されている。すなわち、基板５１Ａ、５１Ｂには、ＳＤＲＡＭ５３Ａ、５３Ｂが両面実装されている。
【００４３】
ＲＤＩＭＭ５０Ａ、５０Ｂは、それぞれ、バンプ５２Ａ、５２Ｂを通じて、基板５１Ａ、５１Ｂ内の層間配線５４Ａ、５４Ｂに接続されている。層間配線５４Ａ、５４Ｂは、それぞれ、ソケット２４Ａ、２４Ｂの配線２５Ａ、２５Ｂを通じてビア２１Ｂ、２１Ｃに接続されている。
【００４４】
以上のような配線構造により、メモリコントローラ４０とＲＤＩＭＭ５０Ａ、５０Ｂは、電気的に接続されている。メモリコントローラ４０とＲＤＩＭＭ５０とを接続する配線は、クロック信号、アドレス信号、データストローブ信号、及びデータを伝送する。
【００４５】
なお、図２では、システムボード２０に実装されたメモリコントローラ４０とＲＤＩＭＭ５０Ａ、５０Ｂについて説明したが、ＵＤＩＭＭも図２に示すＲＤＩＭＭ５０Ａ、５０Ｂと同様にシステムボードに実装され、メモリコントローラと接続される。
【００４６】
次に、図３を用いて、メモリコントローラ４０とＲＤＩＭＭ５０の間を接続する回路について簡単に説明する。
【００４７】
図３は、比較例のサーバ１０内のメモリコントローラ４０の回路を示す図である。図３には、メモリコントローラ４０にＲＤＩＭＭ５０Ａ、５０Ｂを接続した状態の回路を示す。なお、図３では、ＲＤＩＭＭ５０Ａ、５０Ｂ内のＳＤＲＡＭを省略する。
【００４８】
メモリコントローラ４０とＲＤＩＭＭ５０の間では、上述のように、クロック信号、アドレス信号、データストローブ信号、及びデータが伝送される。
【００４９】
メモリコントローラ４０は、ドライバ４３、４４、４５、レシーバ４６、ドライバ４７、及びレシーバ４８を有する。ドライバ４３、４４、４５、レシーバ４６、ドライバ４７、及びレシーバ４８は、それぞれ、ＩＣチップ４１（図２参照）に内蔵される素子である。
【００５０】
ドライバ４３は、システムクロックが入力され、システムクロックから差動クロック信号を生成し、ＲＤＩＭＭ５０Ａ、５０Ｂに差動クロック信号を伝送する。
【００５１】
ドライバ４４は、ＲＤＩＭＭ５０Ａ、５０Ｂのアドレス信号をデコードするデコーダ（図示せず）からアドレス信号が入力され、ＲＤＩＭＭ５０Ａ、５０Ｂにアドレス信号を伝送する。
【００５２】
ドライバ４５は、データの読み出し／書き込みのタイミングを指定する差動ストローブ信号を生成し、ＲＤＩＭＭ５０Ａ、５０Ｂに伝送する。
【００５３】
ドライバ４５が差動ストローブ信号を出力する一対の出力端子には、レシーバ４６の一対の入力端子が接続されており、レシーバ４６は、ＲＤＩＭＭ５０Ａ、５０Ｂから伝送される差動ストローブ信号を受信する。
【００５４】
ドライバ４７は、ＲＤＩＭＭ５０Ａ、５０Ｂに書き込むデータを伝送する。ドライバ４７の出力端子には、レシーバ４８の入力端子が接続されており、レシーバ４８は、ＲＤＩＭＭ５０Ａ、５０Ｂから読み出したデータを受信する。
【００５５】
なお、図１乃至図３では、サーバ１０内のメモリコントローラ４０とＲＤＩＭＭ５０との接続関係について説明したが、例えばデスクトップ型のＰＣ等におけるメモリコントローラとＵＤＩＭＭとの接続関係は、ＵＤＩＭＭの数が少ないだけで基本的に同様である。
【００５６】
次に、図４及び図５を用いて、ＲＤＩＭＭとＵＤＩＭＭのアドレス線のトポロジーの違いについて説明する。
【００５７】
図４は、ＲＤＩＭＭ５０のアドレス線の回路を示す図である。図５は、ＵＤＩＭＭ６０のアドレス線の回路を示す図である。
【００５８】
ＲＤＩＭＭ５０は、１６個のＳＤＲＡＭ１〜ＳＤＲＡＭ８及びＳＤＲＡＭ１１〜ＳＤＲＡＭ１８、レジスタチップ５５、アドレス線５６、入力端子５７、及び終端抵抗器５８を含む。終端抵抗器５８には、所定電圧（０．７５Ｖ）の電源が接続されている。終端抵抗器５８は、アドレス線５６を伝送されるアドレス信号の反射を抑制するために、アドレス線５６の終端におけるインピーダンス整合を取るために設けられている。
【００５９】
なお、終端抵抗器５８に接続される電源の電圧（０．７５Ｖ）は、アドレス信号の"０"と"１"の境界となる閾値に相当する。この閾値は、ＪＥＤＥＣの規格によって決められている。
【００６０】
入力端子５７には、メモリコントローラ４０のドライバ４４（図３参照）が接続され、メモリコントローラ４０からアドレス信号が入力される。
【００６１】
アドレス線５６は、入力端子５７と終端抵抗器５８との間に配線されており、レジスタチップ５５が挿入されるとともに、レジスタチップ５５の出力側においてＳＤＲＡＭ１〜ＳＤＲＡＭ８及びＳＤＲＡＭ１１〜ＳＤＲＡＭ１８に分配されるように接続されている。
【００６２】
アドレス信号は、メモリコントローラ４０（図３参照）から入力端子５７を介してアドレス線５６に入力され、ＳＤＲＡＭ１〜ＳＤＲＡＭ８及びＳＤＲＡＭ１１〜ＳＤＲＡＭ１８に入力される前に、レジスタチップ５５で波形とタイミングが調整される。
【００６３】
このようにアドレスチップ５５を挿入しているのは、主に、次のような理由によるものである。ブレードサーバのような大型のサーバでは、システムボード２０（図２参照）に多数のＲＤＩＭＭ５０を実装するため、メモリコントローラ４０とＲＤＩＭＭ５０との間でアドレス信号を伝送する配線が長くなる。アドレス信号を伝送する配線が長いと、伝送する間にアドレス信号が減衰する可能性がある。このため、ＲＤＩＭＭ５０にアドレス信号が入力された時点で、各ＳＤＲＡＭにアドレス信号を分配する前に、レジスタチップ５５でアドレス信号の波形とタイミングを整えている。
【００６４】
次に、図５に示すＵＤＩＭＭ６０について説明する。なお、ここでは、図３に示すＲＤＩＭＭ５０Ａ、５０Ｂの代わりに１つのＵＤＩＭＭ６０がシステムボード２０に実装され、ＵＤＩＭＭ６０がメモリコントローラ４０と接続されているものとして説明を行う。
【００６５】
ＵＤＩＭＭ６０は、１６個のＳＤＲＡＭ１〜ＳＤＲＡＭ８及びＳＤＲＡＭ１１〜ＳＤＲＡＭ１８、アドレス線６１、入力端子６２、及び終端抵抗器６３を含む。終端抵抗器６３には、図４に示すＲＤＩＭＭ５０と同様に、所定電圧（０．７５Ｖ）の電源が接続されている。終端抵抗器６３は、アドレス線６１を伝送されるアドレス信号の反射を抑制するために、アドレス線６１の終端におけるインピーダンス整合を取るために設けられている。
【００６６】
なお、終端抵抗器６３に接続される電源の電圧（０．７５Ｖ）は、アドレス信号の"０"と"１"の境界となる閾値に相当する。この閾値は、ＪＥＤＥＣの規格によって決められている。
【００６７】
入力端子６２には、メモリコントローラ４０のドライバ４４（図３参照）が接続され、メモリコントローラ４０からアドレス信号が入力される。
【００６８】
アドレス線６１は、入力端子６２と終端抵抗器６３との間に配線されており、入力端子６２と終端抵抗器６３との間においてＳＤＲＡＭ１〜ＳＤＲＡＭ８及びＳＤＲＡＭ１１〜ＳＤＲＡＭ１８に分配されるように接続されている。
【００６９】
アドレス信号は、メモリコントローラ４０（図３参照）から入力端子６２を介してアドレス線６１に入力され、ＳＤＲＡＭ１〜ＳＤＲＡＭ８及びＳＤＲＡＭ１１〜ＳＤＲＡＭ１８に直接入力される。ＵＤＩＭＭ６０は、レジスタチップを含まない。
【００７０】
ここで、一般的に、デスクトップ型のＰＣが含むＵＤＩＭＭ６０は１個又は２〜３個程度である。従って、メモリコントローラ４０とＵＤＩＭＭ６０との間でアドレス信号を伝送する伝送線の長さは、ブレードサーバにおける伝送線に比べると非常に短い。
【００７１】
このため、デスクトップ型のＰＣには、一般に、ＵＤＩＭＭ６０が用いられている。
【００７２】
ところで、ＵＤＩＭＭ６０は、レジスタチップを含まないため、メモリコントローラ４０から分配されるアドレス信号は、ＵＤＩＭＭ６０に含まれるすべてのＳＤＲＡＭに直接分配される。
【００７３】
このため、ＵＤＩＭＭ６０では、アドレス線の電気的な負荷がＲＤＩＭＭ５０よりも大きい。
【００７４】
例えば、ＵＤＩＭＭ６０に４ｂｉｔのＳＤＲＡＭが搭載されている場合、アドレス信号は、メモリコントローラ４０から直接的に１６個のＳＤＲＡＭに分配されることになる。
【００７５】
このような場合には、メモリコントローラ４０から１つのＵＤＩＭＭ６０につき、１６個のＳＤＲＡＭがアドレス線を介して直接接続されることになるため、アドレス信号に反射波が発生し、各ＳＤＲＡＭが受信するアドレス信号の波形が乱れる可能性があるという問題があった。
【００７６】
ＵＤＩＭＭ６０の内部では、入力端子６２に近いＳＤＲＡＭと、入力端子６２から遠いＳＤＲＡＭがあるため、入力端子６２からの距離の違いにより、反射波による波形の乱れが異なる可能性があった。
【００７７】
アドレス信号の波形が乱れると、アドレス指定を正しく行うことができなくなる可能性が生じるという問題があった。
【００７８】
以上のように、比較例のメモリコントローラ４０は、ＵＤＩＭＭ６０に用いた場合に反射波の乱れによりアドレス指定を正しく行うことができなくなる可能性が生じるという問題があった。
【００７９】
以下の実施の形態では、アドレス信号の波形の乱れに起因する問題を解決し、例えば、ＲＤＩＭＭとＵＤＩＭＭのようにアドレス線のトポロジーが異なるＤＩＭＭに対して汎用的に利用でき、正確なアドレス指定とデータの読み書き、及び製造コストの抑制を実現するメモリコントローラ及び情報処理装置について説明する。
【００８０】
＜実施の形態＞
図６は、実施の形態のメモリコントローラ１００の回路を示す図である。図６には、メモリコントローラ１００にＲＤＩＭＭ５０Ａ、５０Ｂを接続した状態の回路を示す。なお、図６では、ＲＤＩＭＭ５０Ａ、５０Ｂ内のＳＤＲＡＭを省略する。
【００８１】
以下で説明する本実施の形態のメモリコントローラ１００は、比較例のメモリコントローラ４０と同様にＲＤＩＭＭ５０とＣＰＵコントローラ３０（図１参照）との間に接続される。このため、以下の説明では、図１乃至図５を援用し、図１乃至図５に示す構成要素と同一又は同等の構成要素には同一符号を付し、その説明を省略する。
【００８２】
メモリコントローラ１００は、入力端子１０１、シフトレジスタ１０２、ドライバ１０３、及び出力端子１０４を含む。
【００８３】
メモリコントローラ１００は、さらに、入力端子１１１、シフトレジスタ１１２、１２２、遅延部１１３、１２３、マルチプレクサ１１４、１２４、ドライバ１１５、入出力端子１１６、出力端子１２１、及びレシーバ１２５を含む。
【００８４】
メモリコントローラ１００は、さらにまた、スルーレート設定指令生成部１３０、遅延指令生成部１４０、ＳＰＤコントローラ１５０、入力端子１５１、レシーバ１５２、及び初期設定部１６０を含む。
【００８５】
図６に示すＲＤＩＭＭ５０Ａ、５０Ｂには、ＳＰＤ（Serial Presence Detect）素子５９を示す。ＳＰＤ素子５９は、ＤＩＭＭのモジュールの容量、アクセス速度、アクセス方法等の諸元を表すデータが記憶されている。ＳＰＤ素子５９は、例えば、シリアルＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）チップである。
【００８６】
図６にはＲＤＩＭＭ５０のＳＰＤ素子５９を示すが、ＵＤＩＭＭ６０（図５参照）も同様のＳＰＤ素子を含む。
【００８７】
ＲＤＩＭＭ５０のＳＰＤ素子５９には、ＲＤＩＭＭであることを示す諸元を表すデータが記憶されており、ＵＤＩＭＭ６０（図５参照）のＳＰＤ素子にはＵＤＩＭＭであることを示す諸元を表すデータが記憶されている。
【００８８】
入力端子１０１は、図示しないデコーダから伝送されるアドレス信号をメモリコントローラ１００に入力するための端子である。入力端子１０１の入力側には、図示しないデコーダが接続され、入力端子１０１の出力側にはシフトレジスタ１０２が接続される。
【００８９】
シフトレジスタ１０２は、入力端子１０１を介してデコーダから入力されるアドレス信号を一時的に保持する。シフトレジスタ１０２の出力側にはドライバ１０３が接続されている。
【００９０】
ドライバ１０３は、スルーレート設定指令生成部１３０から入力される設定値Ｄに基づき、シフトレジスタ１０２から入力されるアドレス信号のスルーレート（slew rate）を変更するスルーレート変更部の一例である。
【００９１】
また、スルーレート変更部の一例としてのドライバ１０３と、スルーレート設定指令生成部１３０は、アドレス信号のスルーレートを設定するためのスルーレート設定部の一例である。なお、ドライバ１０３の内部構成及び動作については、図７を用いて後述する。
【００９２】
出力端子１０４は、ドライバ１０３でスルーレートが設定されるアドレス信号をメモリコントローラ１００からＲＤＩＭＭ５０に出力する端子であり、ＲＤＩＭＭ５０の入力端子５７（図４参照）に接続される。なお、メモリコントローラ１００にＵＤＩＭＭ６０（図５参照）を接続する場合には、出力端子１０４に入力端子６２（図５参照）が接続される。
【００９３】
入力端子１１１は、ＲＤＩＭＭ５０に書き込むためのデータがメモリコントローラ１００に入力される端子である。入力端子１１１の入力側には、ＣＰＵコントローラ３０を介して、ＣＰＵ０〜ＣＰＵ３（図１参照）が接続される。
【００９４】
シフトレジスタ１１２は、入力端子１１１を介して入力される書き込み用のデータを一時的に保持する。シフトレジスタ１１２の出力側には遅延部１１３及びマルチプレクサ１１４が接続されている。
【００９５】
遅延部１１３は、シフトレジスタ１１２の出力側において分岐された信号線１１７Ａ、１１７Ｂのうちの信号線１１７Ａに挿入されている。遅延部１１３は、シフトレジスタ１１２から出力される書き込み用のデータに遅延を与えて出力する。遅延部１１３が書き込み用のデータに与える遅延時間は、システムクロックの１周期の時間に設定されている。なお、信号線１１７Ａ、１１７Ｂは、ともにマルチプレクサ１１４の入力側に接続されている。また、遅延時間をシステムクロックの１周期の時間に設定する理由については後述する。
【００９６】
マルチプレクサ１１４は、遅延指令生成部１４０から入力される設定値Ｗに基づき、入力側に接続される信号線１１７Ａ又は信号線１１７Ｂのいずれか一方を経て自己に入力される書き込み用のデータを選択して出力する。マルチプレクサ１１４の出力側は、ドライバ１１５に接続されている。
【００９７】
ドライバ１１５は、マルチプレクサ１１４の出力端子と、入出力端子１１６との間に挿入されており、入出力端子１１６を経てメモリコントローラ１００から出力される書き込み用のデータの波形成形及び増幅を行う。ドライバ１１５の出力側において入出力端子１１６との間で分岐した信号線にはレシーバ１２５が接続される。
【００９８】
入出力端子１１６は、ドライバ１１５の出力側と、レシーバ１２５の入力側に接続されている。入出力端子１１６は、ドライバ１１５から伝送される書き込み用のデータをＲＤＩＭＭ５０Ａ、５０Ｂに出力するとともに、ＲＤＩＭＭ５０Ａ、５０Ｂから伝送される読み出しデータをレシーバ１２５に入力する。
【００９９】
レシーバ１２５は、入出力端子１１６と、遅延部１２３及びマルチプレクサ１２４との間に接続され、入出力端子１１６を介してメモリコントローラ１００に入力される読み出しデータを遅延部１２３及びマルチプレクサ１２４に伝送する。レシーバ１２５は、読み出しデータを遅延部１２３及びマルチプレクサ１２４に伝送する際に、読み出し用データの波形成形及び増幅を行う。
【０１００】
遅延部１２３は、レシーバ１２５の出力側において分岐された信号線１２７Ａ、１２７Ｂのうちの信号線１２７Ａに挿入されている。遅延部１２３は、レシーバ１２５から出力される読み出しデータに遅延を与えて出力する。遅延部１２３が読み出しデータに与える遅延時間は、システムクロックの１周期の時間に設定されている。なお、信号線１２７Ａ、１２７Ｂは、ともにマルチプレクサ１２４の入力側に接続されている。また、遅延時間をシステムクロックの１周期の時間に設定する理由については後述する。
【０１０１】
マルチプレクサ１２４は、遅延指令生成部１４０から入力される設定値Ｒに基づき、入力側に接続される信号線１２７Ａ又は信号線１２７Ｂのいずれか一方を経て自己に入力される読み出しデータを選択して出力する。マルチプレクサ１２４の出力側は、シフトレジスタ１２２に接続されている。
【０１０２】
ここで、遅延部１１３、マルチプレクサ１１４、遅延部１２３、及びマルチプレクサ１２４は、データの遅延時間を制御する遅延制御部の一例である。
【０１０３】
また、遅延指令生成部１４０と、遅延制御部の一例としての遅延部１１３、マルチプレクサ１１４、遅延部１２３、及びマルチプレクサ１２４とは、データの遅延時間を設定する遅延設定部の一例である。
【０１０４】
シフトレジスタ１２２は、マルチプレクサ１２４から出力される読み出しデータを一時的に保持し、出力端子１２１に伝送する。
【０１０５】
出力端子１２１は、シフトレジスタ１２２から伝送される読み出しデータをメモリコントローラ１００から出力するための端子である。出力端子１２１の出力側は、ＣＰＵコントローラ３０を介して、ＣＰＵ０〜ＣＰＵ３（図１参照）が接続される。
【０１０６】
スルーレート設定指令生成部１３０は、ＳＰＤコントローラ１５０から入力される制御信号に基づいて設定値Ｄの値を設定し、設定値Ｄをドライバ１０３に入力する。この結果、ドライバ１０３では、スルーレート設定指令生成部１３０から入力される設定値Ｄに基づいて、アドレス信号のスルーレートが設定される。すなわち、ドライバ１０３において設定されるアドレス信号のスルーレートは、設定値Ｄの値によって決められる。スルーレート設定指令生成部１３０としては、例えば、組合せ回路を用いることができる。
【０１０７】
スルーレート設定指令生成部１３０は、メモリコントローラ１００にＲＤＩＭＭ５０が接続された場合は、アドレス信号のスルーレートが比較的高い値になるように設定値Ｄを設定する。この場合に、スルーレート設定指令生成部１３０は、スルーレートが最大値になるように設定値Ｄを設定してもよい。
【０１０８】
また、スルーレート設定指令生成部１３０は、メモリコントローラ１００にＵＤＩＭＭ６０が接続された場合は、アドレス信号のスルーレートが比較的低い値になるように設定値Ｄを設定する。
【０１０９】
すなわち、スルーレート設定指令生成部１３０は、ＵＤＩＭＭ６０が接続された場合に、ＲＤＩＭＭ５０が接続された場合よりもアドレス信号のスルーレートが低くなるように設定値Ｄを設定する。
【０１１０】
これは、アドレス線におけるアドレス信号の反射の問題が発生する可能性がＲＤＩＭＭ５０よりも高いＵＤＩＭＭ６０の場合は、アドレス信号のスルーレートを低く設定することにより、アドレス線６１でのアドレス信号の反射の発生を抑制するためである。
【０１１１】
なお、スルーレート設定指令生成部１３０は、メモリコントローラ１００にＵＤＩＭＭ６０が接続された場合は、スルーレートが最小値になるように設定値Ｄを設定してもよい。
【０１１２】
また、スルーレート設定指令生成部１３０は、アドレス信号のスルーレートに加えて、クロック、データストローブ信号、及びデータのスルーレートも設定する。スルーレート設定指令生成部１３０は、例えば、クロック、データストローブ信号、及びデータのスルーレートを最大値に設定する。
【０１１３】
遅延指令生成部１４０は、ＳＰＤコントローラ１５０から入力される制御信号に基づいて設定値Ｗと設定値Ｒの値を設定し、設定値Ｗ、Ｒをそれぞれマルチプレクサ１１４、１２４に入力する。マルチプレクサ１１４、１２４において、それぞれ遅延部１１３、１２３を経由したデータを選択するか否かは、遅延指令生成部１４０が出力する設定値Ｗ、Ｒによって決められる。遅延指令生成部１４０としては、例えば、組合せ回路を用いることができる。
【０１１４】
ここで、本実施の形態のメモリコントローラ１００は、ＲＤＩＭＭ５０及びＵＤＩＭＭ６０の両方に汎用的に利用できるものである。
【０１１５】
しかしながら、ＲＤＩＭＭ５０はレジスタチップ５５を含み、ＵＤＩＭＭ６０はレジスタチップを含まず、ＲＤＩＭＭ５０とＵＤＩＭＭ６０はアドレス線のトポロジーが異なる。
【０１１６】
このため、メモリコントローラ１００をＲＤＩＭＭ５０とＵＤＩＭＭ６０とに対して汎用的に用いるためには、アドレス信号とデータとのタイミングを調整する必要がある。
【０１１７】
本実施の形態のメモリコントローラ１００の遅延指令生成部１４０は、ＲＤＩＭＭ５０が接続された場合のデータの読み取り時とデータの書き込み時とでマルチプレクサ１１４、１２４に入力する設定値Ｗ、Ｒの値（Ｈ（High）又はＬ（Low））を変更する。
【０１１８】
同様に、遅延指令生成部１４０は、ＵＤＩＭＭ６０が接続された場合のデータの読み取り時とデータの書き込み時とでマルチプレクサ１１４、１２４に入力する設定値Ｗ、Ｒの値（Ｈ（High）又はＬ（Low））を変更する。
【０１１９】
遅延指令生成部１４０は、ＲＤＩＭＭ５０とＵＤＩＭＭ６０とを汎用的に接続できるようにするために、ＲＤＩＭＭ５０が接続された場合のデータの読み出し時には、設定値ＲをＬレベルにする。これは、ＲＤＩＭＭ５０からデータを読み出す場合には、レジスタチップ５５で生じるアドレス信号の遅延は問題にならないからである。
【０１２０】
これにより、マルチプレクサ１２４は信号線１２７Ｂを選択するため、ＲＤＩＭＭ５０から読み出されるデータに遅延は与えられない。
【０１２１】
また、遅延指令生成部１４０は、ＲＤＩＭＭ５０が接続された場合のデータの書き込み時には設定値ＷをＨレベルにする。
【０１２２】
これは、データの書き込み時に、レジスタチップ５５によってアドレス信号がシステムクロックの１周期の時間（１τ）だけ遅延すると、書き込みデータとのタイミングがずれるため、マルチプレクサ１１４に信号線１１７Ａを選択させて、遅延部１１３でデータに１τ分の遅延を与えるためである。
【０１２３】
このように、ＲＤＩＭＭ５０へのデータの書き込み時にアドレス信号とデータとのタイミングを合わせるために、遅延部１１３の遅延時間は、レジスタチップ５５におけるアドレス信号の遅延時間（１τ）と同一の時間に設定されている。
【０１２４】
また、遅延指令生成部１４０は、ＵＤＩＭＭ６０が接続された場合のデータの読み出し時には設定値ＲをＨレベルにする。これにより、マルチプレクサ１２４は信号線１２７Ａを選択するため、ＵＤＩＭＭ６０から読み出されるデータには遅延部１２３で遅延が与えられる。
【０１２５】
これは、ＲＤＩＭＭ５０からデータを読み出す場合にはレジスタチップ５５でアドレス信号に遅延が生じ、メモリコントローラ１００に読み出しデータが届くタイミングがＵＤＩＭＭ６０よりも遅れるため、ＲＤＩＭＭ５０とＵＤＩＭＭ６０とでタイミングを合わせるためである。
【０１２６】
このように、データを読み出す場合にＲＤＩＭＭ５０とＵＤＩＭＭ６０とでタイミングを合わせるために、遅延部１２３の遅延時間は、レジスタチップ５５におけるアドレス信号の遅延時間（１τ）と同一の時間に設定されている。
【０１２７】
また、遅延指令生成部１４０は、ＵＤＩＭＭ６０が接続された場合のデータの書き込み時には設定値ＷをＬレベルにする。
【０１２８】
これは、レジスタチップを含まないＵＤＩＭＭ６０ではアドレス信号の遅延が生じないため、データの書き込み時にデータに遅延を与える必要がないからである。この結果、マルチプレクサ１１４は信号線１１７Ｂを選択する。
【０１２９】
入力端子１５１は、ＲＤＩＭＭ５０Ａ、５０ＢのＳＰＤ素子５９に接続され、ＲＤＩＭＭ５０Ａ、５０Ｂの諸元を表すデータが入力される。入力端子１５１の出力側にはレシーバ１５２が接続される。
【０１３０】
レシーバ１５２は、入力端子１５１から入力される諸元を表すデータを受信し、ＳＰＤコントローラ１５０に伝送する。
【０１３１】
ＳＰＤコントローラ１５０は、入力端子１５１及びレシーバ１５２を経て入力されるデータに基づき、出力端子１０４及び入出力端子１１６に接続されるＤＩＭＭがＲＤＩＭＭ５０又はＵＤＩＭＭ６０のいずれであるかを判定する判定部の一例である。
【０１３２】
ＳＰＤコントローラ１５０としては、例えば、シーケンサを用いることができる
ここで、図４及び図５に示したように、ＲＤＩＭＭ５０とＵＤＩＭＭ６０とは、アドレス線のトポロジーが異なるため、ＲＤＩＭＭ５０のＳＰＤ素子と、ＵＤＩＭＭ６０のＳＰＤ素子とに記憶されている諸元を表すデータは、互いに異なる。
【０１３３】
このため、ＳＰＤコントローラ１５０は、ＲＤＩＭＭ５０又はＵＤＩＭＭ６０のＳＰＤ素子に記憶された諸元を表すデータを読み取ることにより、アドレス線のトポロジーの違いに基づいて、出力端子１０４及び入出力端子１１６に接続されるＤＩＭＭがＲＤＩＭＭ５０又はＵＤＩＭＭ６０のいずれであるかを判定する。なお、ＲＤＩＭＭ５０又はＵＤＩＭＭ６０のＳＰＤ素子に記憶された諸元を表すデータについては、図７Ａ、図７Ｂを用いて後述する。
【０１３４】
初期設定部１６０は、メモリコントローラ１００の電源が投入されると、スルーレート設定指令生成部１３０の設定値Ｗ、Ｒと、遅延指令生成部１４０の設定値Ｄを初期値に設定する。
【０１３５】
次に、図７Ａ、図７Ｂを用いて、ＲＤＩＭＭ又はＵＤＩＭＭのＳＰＤ素子に記憶された諸元を表すデータについて説明する。
【０１３６】
図７Ａは、ＲＤＩＭＭ又はＵＤＩＭＭのＳＰＤ素子に記憶された諸元を表すデータの一部を示す図であり、図７Ｂは、図７Ａに示すデータのデータビット［３：０］の値の具体例を示す図である。
【０１３７】
このように図７Ａ及び図７Ｂに示すデータは、JEDEC standard No. 21-Cによって定められている。
【０１３８】
図７Ａは、ＳＰＤ素子５９（図６参照）のＢｙｔｅアドレス３（００００００１１）のデータビット［７：０］のデータ構造を示す図である。ＳＰＤ素子５９のＢｙｔｅアドレス３のデータビット［７：０］には、ＲＤＩＭＭ又はＵＤＩＭＭのいずれであるかを示すデータが含まれている。
【０１３９】
データビット［７：０］のうちのデータビット［３：０］の値は定義されており、それぞれ、Ｄ３、Ｄ２、Ｄ１、Ｄ０である。データビット［７：０］のうちのデータビット［３：０］以外の値は、未定義である。
【０１４０】
図７Ｂに示すように、データビット［３：０］の各ビットの値Ｄ３、Ｄ２、Ｄ１、Ｄ０の値は、第２項に示すように、Ｄ３、Ｄ２、Ｄ１、Ｄ０が０、０、０、１のものがＲＤＩＭＭに割り当てられている。また、第３項に示すように、Ｄ３、Ｄ２、Ｄ１、Ｄ０が０、０、１、０のものがＵＤＩＭＭに割り当てられている。
【０１４１】
なお、第１項に示すＤ３、Ｄ２、Ｄ１、Ｄ０が０、０、０、０のデータは未定義であり、図７Ｂでは第４項以下を省略する。
【０１４２】
ＳＰＤコントローラ１５０は、図７Ａ及び図７Ｂに示すデータに基づいて、出力端子１０４及び入出力端子１１６に接続されるＤＩＭＭがＲＤＩＭＭ５０又はＵＤＩＭＭ６０のいずれであるかを判定する。
【０１４３】
次に、図８を用いて、実施の形態のメモリコントローラ１００のドライバ１０３の内部回路について説明する。
【０１４４】
図８は、実施の形態のメモリコントローラ１００のドライバ１０３の回路を示す図である。
【０１４５】
ドライバ１０３は、入力端子２００、ＰＭＯＳ（P type Metal Oxide Semiconductor）トランジスタ２０１、２０３、ＮＭＯＳ（N type Metal Oxide Semiconductor）トランジスタ２０２、２０４、設定レジスタ２１０、インバータ２１１、２１２、２１３、バイアス回路２２０、２３０、保護抵抗器２４１、２４２、及び出力端子２５０を含む。
【０１４６】
入力端子２００は、ドライバ１０３の入力端子であり、シフトレジスタ１０２（図６参照）の出力端子に接続されている。入力端子２００にはシフトレジスタ１０２からアドレス信号が入力される。
【０１４７】
ＰＭＯＳトランジスタ２０１とＮＭＯＳトランジスタ２０２は、ＣＭＯＳ（Complementary Metal Oxide Semiconductor）回路を構築する。
【０１４８】
ＰＭＯＳトランジスタ２０１とＮＭＯＳトランジスタ２０２のゲートには、入力端子２００が接続される。ＰＭＯＳトランジスタ２０１のドレインには電源（ＶＣＣ）が接続され、ソースはＮＭＯＳトランジスタ２０２のドレインに接続される。ＮＭＯＳトランジスタ２０２のソースは接地される。
【０１４９】
ＰＭＯＳトランジスタ２０１のソースとＮＭＯＳトランジスタ２０２のドレインとの接続部２０５には、ＰＭＯＳトランジスタ２０３のゲートとＮＭＯＳトランジスタ２０４のゲートとが接続される。接続部２０５は、ＰＭＯＳトランジスタ２０１とＮＭＯＳトランジスタ２０２を含むＣＭＯＳ回路の出力部である。
【０１５０】
ＰＭＯＳトランジスタ２０３とＮＭＯＳトランジスタ２０４は、ＣＭＯＳ回路を構築する。ＰＭＯＳトランジスタ２０３のゲート、及びＮＭＯＳトランジスタ２０４のゲートには、接続部２０５が接続される。ＰＭＯＳトランジスタ２０３のドレインは、バイアス回路２２０の出力端子２２４に接続され、ソースは保護抵抗器２４１及び２４２を介してＮＭＯＳトランジスタ２０４のドレインに接続される。
【０１５１】
ＮＭＯＳトランジスタ２０４のソースはバイアス回路２３０の入力端子２３４に接続される。ＰＭＯＳトランジスタ２０３のソースとＮＭＯＳトランジスタ２０４のドレインとの間に接続される保護抵抗器２４１及び２４２の接続点２０６は、ドライバ１０３の出力端子２５０に接続されている。
【０１５２】
ここで、入力端子２００に入力されるアドレス信号が"１"の場合、ＰＭＯＳトランジスタ２０１がオフになり、ＮＭＯＳトランジスタ２０２がオンになる。このため、接続部２０５の電位は接地電位になる。
【０１５３】
この結果、ＰＭＯＳトランジスタ２０３がオンになり、ＮＭＯＳトランジスタ２０４はオフになる。
【０１５４】
このとき、バイアス回路２２０内のＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３のうちのいずれかがオンになれば、バイアス回路２２０からＰＭＯＳトランジスタ２０３に所定の電流値のバイアス電流が流れる。
【０１５５】
このように、入力端子２００にアドレス信号の"１"が入力されてＰＭＯＳトランジスタ２０３がオンになり、バイアス回路２２０から所定の電流値のバイアス電流が出力されると、ＰＭＯＳトランジスタ２０３及び保護抵抗器２４１を通じて、出力端子２５０から電流が出力される。
【０１５６】
これにより、出力端子２５０の電位がアドレス信号の"１"／"０"の境界を表す電位よりも高電位になり、アドレス信号の"１"が出力端子２５０から出力される。
【０１５７】
一方、入力端子２００に入力されるアドレス信号が"０"の場合、ＰＭＯＳトランジスタ２０１がオンになり、ＮＭＯＳトランジスタ２０２がオフになる。このため、接続部２０５の電位は、電源（ＶＣＣ）の電位になる。
【０１５８】
この結果、ＰＭＯＳトランジスタ２０３がオフになり、ＮＭＯＳトランジスタ２０４がオンになる。
【０１５９】
このとき、バイアス回路２３０内のＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のうちのいずれかがオンになれば、ＮＭＯＳトランジスタ２０４からバイアス回路２３０に電流が流入する。
【０１６０】
このように、入力端子２００にアドレス信号の"０"が入力されてＮＭＯＳトランジスタ２０４がオフになり、バイアス回路２３０に所定の電流値のバイアス電流が流入すると、ＮＭＯＳトランジスタ２０４及び保護抵抗器２４２を通じて、出力端子２５０から電流が流入する。
【０１６１】
これにより、出力端子２５０の電位がアドレス信号の"１"と"０"の境界を表す電位よりも低電位になり、アドレス信号の"０"が出力端子２５０から出力される。
【０１６２】
以上のように、アドレス信号の"１"と"０"が出力端子２５０を経てドライバ１０３から出力される。
【０１６３】
次に、設定レジスタ２１０とバイアス回路２２０、２３０の回路構成について説明する。
【０１６４】
設定レジスタ２１０は、３ビットのデータ領域を有しており、３ビットのデータ領域は、それぞれ、データＳ１、Ｓ２、Ｓ３を保持する。設定レジスタ２１０には、スルーレート設定指令生成部１３０（図６参照）から３ビットの設定値Ｄが入力される。設定値Ｄが設定レジスタ２１０に入力されると、データＳ１、Ｓ２、Ｓ３として保持される。
【０１６５】
設定レジスタ２１０の各データ領域が保持するデータＳ１、Ｓ２、Ｓ３は、インバータ２１１、２１２、２１３を介してバイアス回路２２０に入力されるとともに、バイアス回路２３０に直接入力される。
【０１６６】
バイアス回路２２０とバイアス回路２３０は、同一の回路構成を有しているが、バイアス回路２２０はアドレス信号の"１"のデータを出力するために用いられ、バイアス回路２３０はアドレス信号の"０"のデータを出力するために用いられる。
【０１６７】
上述のように、バイアス回路２２０とバイアス回路２３０とは、出力端子２５０との間でバイアス電流が流れる方向が異なる。バイアス回路２２０と出力端子２５０との間では、バイアス回路２２０から出力端子２５０に向かって電流が流れる。一方、バイアス回路２３０と出力端子２５０との間では、出力端子２５０からバイアス回路２３０に向かって電流が流れる。
【０１６８】
バイアス回路２２０は、ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３、入力端子２２１、２２２、２２３、及び出力端子２２４を含む。ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３と、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３とは、それぞれ、添え数字が等しいＰ型とＮ型のトランジスタ同士でＣＭＯＳ回路を構築する。
【０１６９】
入力端子２２１、２２２、２２３には、それぞれ、インバータ２１１、２１２、２１３の出力端子が接続されている。入力端子２２１、２２２、２２３には、それぞれ、設定レジスタ２１０から出力されるデータＳ１、Ｓ２、Ｓ３がインバータ２１１、２１２、２１３で反転されて入力される。
【０１７０】
ＰＭＯＳトランジスタＰ１のゲートと、ＮＭＯＳトランジスタＮ１のゲートには、入力端子２２１を介して、インバータ２１１の出力端子が接続されている。同様に、ＰＭＯＳトランジスタＰ２のゲートと、ＮＭＯＳトランジスタＮ２のゲートには、入力端子２２２を介して、インバータ２１２の出力端子が接続されている。また、ＰＭＯＳトランジスタＰ３のゲートと、ＮＭＯＳトランジスタＮ３のゲートには、入力端子２２３を介して、インバータ２１３の出力端子が接続されている。
【０１７１】
ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３のドレインは、それぞれ、電源（ＶＣＣ）に接続される。ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３のソースは、それぞれ、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のドレインに接続される。ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のソースは接地される。なお、ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３のソースと、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のドレインとの接続部を、それぞれ、接続部２２５、２２６、２２７とする。
【０１７２】
接続部２２５、２２６、２２７は、すべて、出力端子２２４を介してＰＭＯＳトランジスタ２０３のドレインに接続されている。
【０１７３】
このようなバイアス回路２２０に、データＳ１、Ｓ２、Ｓ３として"１"、"１"、"１"がインバータ２１１、２１２、２１３を通じて入力されると、ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３がオンになり、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３がオフになる。
【０１７４】
このため、ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３から接続部２２５、２２６、２２７を通じて、ＰＭＯＳトランジスタ２０３にバイアス電流が供給される。
【０１７５】
また、バイアス回路２２０に、データＳ１、Ｓ２、Ｓ３として"０"、"０"、"０"が入力されると、ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３がオフになり、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３がオンになる。このため、ＰＭＯＳトランジスタ２０３にバイアス電流は供給されない。
【０１７６】
このため、データＳ１、Ｓ２、Ｓ３のうち、少なくともいずれか１つを"１"にすることにより、"１"のデータに対応するＰＭＯＳトランジスタ（Ｐ１、Ｐ２、Ｐ３のいずれか）がオンになり、オンになったＰＭＯＳトランジスタ（Ｐ１、Ｐ２、Ｐ３のいずれか）からバイアス電流がＰＭＯＳトランジスタ２０３に供給される。
【０１７７】
データＳ１、Ｓ２、Ｓ３のうち"１"にするデータの数を増やすことにより、オンになるＰＭＯＳトランジスタ（Ｐ１、Ｐ２、Ｐ３のいずれか）の数が増え、バイアス回路２２０から出力されるバイアス電流の電流値が増大する。
【０１７８】
ここで、バイアス回路２２０のＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３、及びＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３は、３ビットのデータＳ１、Ｓ２、Ｓ３の値をインクリメントすることにより、段階的にバイアス電流の値が変化するように、サイズ比が決められている。
【０１７９】
バイアス回路２２０のＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３のサイズ比、及びＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のサイズ比については後述する。
【０１８０】
また、バイアス回路２３０は、ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３、及び入力端子２３１、２３２、２３３、２３４を含む。ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３と、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３とは、それぞれ、添え数字が等しいＰ型とＮ型のトランジスタ同士でＣＭＯＳ回路を構築する。
【０１８１】
入力端子２３１、２３２、２３３には、それぞれ、設定レジスタ２１０の各データ領域が保持するデータＳ１、Ｓ２、Ｓ３が直接入力される。
【０１８２】
ＰＭＯＳトランジスタＰ１のゲートと、ＮＭＯＳトランジスタＮ１のゲートとには、入力端子２３１を介して、設定レジスタ２１０からデータＳ１が入力される。同様に、ＰＭＯＳトランジスタＰ２のゲートと、ＮＭＯＳトランジスタＮ２のゲートとには、入力端子２３２を介して、設定レジスタ２１０からデータＳ２が入力される。また、ＰＭＯＳトランジスタＰ３のゲートと、ＮＭＯＳトランジスタＮ３のゲートとには、入力端子２３３を介して、設定レジスタ２１０からデータＳ３が入力される。
【０１８３】
ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３のドレインは、それぞれ、電源（ＶＣＣ）に接続される。ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３のソースは、それぞれ、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のドレインに接続される。ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のソースは接地される。なお、ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３のソースと、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のドレインとの接続部を、それぞれ、接続部２３５、２３６、２３７とする。
【０１８４】
接続部２３５、２３６、２３７は、すべて、入力端子２３４を介してＮＭＯＳトランジスタ２０４のソースに接続されている。
【０１８５】
このようなバイアス回路２３０は、上述のように、アドレス信号の"０"を出力するために用いられる。出力端子２５０からバイアス回路２３０に向かって電流が流れることにより、出力端子２５０の電位が低下し、出力端子２５０から出力されるアドレス信号が"０"になる。
【０１８６】
このようなバイアス回路２３０に、データＳ１、Ｓ２、Ｓ３として"１"、"１"、"１"が入力されると、ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３がオフになり、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３がオンになる。
【０１８７】
このため、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３及び接続部２３５、２３６、２３７を通じて、ＮＭＯＳトランジスタ２０４のソースが接地される。このとき、ＮＭＯＳトランジスタ２０４がオンになれば、出力端子２５０から保護抵抗器２４２及びＮＭＯＳトランジスタ２０４を通じて、バイアス電流がバイアス回路２２０に流入する。
【０１８８】
また、バイアス回路２３０に、データＳ１、Ｓ２、Ｓ３として"０"、"０"、"０"が入力されると、ＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３がオンになり、ＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３がオフになる。このとき、ＮＭＯＳトランジスタ２０４がオンになっても、バイアス回路２２０にバイアス電流は流入しない。
【０１８９】
このため、データＳ１、Ｓ２、Ｓ３のうち、少なくともいずれか１つを"１"にすることにより、"１"のデータに対応するＮＭＯＳトランジスタ（Ｎ１、Ｎ２、Ｎ３のいずれか）がオンになり、オンになったＮＭＯＳトランジスタ（Ｎ１、Ｎ２、Ｎ３のいずれか）を通じて、出力端子２５０からバイアス電流がバイアス回路２２０に流入する。
【０１９０】
データＳ１、Ｓ２、Ｓ３のうち"１"にするデータの数を増やすことにより、オンになるＮＭＯＳトランジスタ（Ｎ１、Ｎ２、Ｎ３のいずれか）の数が増え、バイアス回路２３０に流入するバイアス電流の電流値が増大する。
【０１９１】
ここで、バイアス回路２３０のＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３、及びＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３は、３ビットのデータＳ１、Ｓ２、Ｓ３の値をインクリメントすることにより、段階的にバイアス電流の値が変化するように、サイズ比が決められている。
【０１９２】
バイアス回路２３０のＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３のサイズ比、及びＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のサイズ比については後述する。
【０１９３】
なお、図８におけるＰＭＯＳトランジスタ２０１、２０３、ＮＭＯＳトランジスタ２０２、２０４のドレインとソースの接続関係は、上述した接続関係とは逆であってもよい。
【０１９４】
同様に、バイアス回路２２０、２３０内のＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３とＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のドレインとソースの接続関係も、上述した接続関係とは逆であってもよい。
【０１９５】
次に、図８に示すバイアス回路２２０、２３０のバイアス電流と、出力端子２５０から出力されるアドレス信号のスルーレートの関係について説明する。
【０１９６】
本実施の形態のメモリコントローラ１００は、図８に示すバイアス回路２２０からＰＭＯＳトランジスタ２０３に供給するバイアス電流の電流値を制御することによってアドレス信号のデータ"１"のスルーレートを制御する。
【０１９７】
また、メモリコントローラ１００は、図８に示すＮＭＯＳトランジスタ２０４からバイアス回路２３０に流入するバイアス電流の電流値を制御することによってアドレス信号のデータ"０"のスルーレートを制御する。
【０１９８】
アドレス信号のスルーレートの制御には、ＰＭＯＳトランジスタ２０３とＮＭＯＳトランジスタ２０４の寄生容量を利用する。
【０１９９】
ここで、寄生容量Ｃのトランジスタのドレイン−ソース間に流れる電流Ｉとドレイン又はソースから出力される出力電圧Ｖの関係は、Ｖ＝（１／Ｃ）×（ｄＩ／ｄｔ）で表される。ｔは時間を表す。
【０２００】
このため、Ｃが一定値の場合、電流Ｉが大きければ出力電圧Ｖの立ち上がりと立ち下がりは早くなり、電流Ｉが小さければ出力電圧Ｖの立ち上がりと立ち下がりは緩やかになる。すなわち、電流Ｉの電流値を幾つかの値に設定すれば、トランジスタに流れる電流Ｉの立ち上がりと立ち下がりの緩急を調整することができる。
【０２０１】
メモリコントローラ１００は、バイアス回路２２０、２３０でＰＭＯＳトランジスタ２０３、ＮＭＯＳトランジスタ２０４のバイアス電流の電流値を設定することにより、ＰＭＯＳトランジスタ２０３、ＮＭＯＳトランジスタ２０４を通じて出力端子２５０から出力されるアドレス信号のスルーレートを設定する。
【０２０２】
次に、バイアス回路２２０、２３０のＰＭＯＳトランジスタＰ１、Ｐ２、Ｐ３とＮＭＯＳトランジスタＮ１、Ｎ２、Ｎ３のサイズ比、設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３、及びバイアス回路２２０、２３０におけるバイアス電流の関係について説明する。
【０２０３】
図９は、実施の形態のメモリコントローラ１００における設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３と、バイアス回路２２０、２３０のバイアス電流と、アドレス信号のスルーレートの関係を表す。
【０２０４】
設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３は、図９に示すように、"０"、"０"、"０"から"１"、"１"、"１"の値を取り得る。
【０２０５】
ただし、データＳ１、Ｓ２、Ｓ３が"０"、"０"、"０"の場合は、バイアス回路２２０はＰＭＯＳトランジスタＰ１〜Ｐ３がすべてオフになり、バイアス回路２３０はＮＭＯＳトランジスタＮ１〜Ｎ３がすべてオフになり、バイアス回路２２０、２３０ともにバイアス電流が流れない。
【０２０６】
従って、データＳ１、Ｓ２、Ｓ３が"０"、"０"、"０"の場合はアドレス信号を出力することができない。
【０２０７】
このため、データＳ１、Ｓ２、Ｓ３が"０"、"０"、"０"になる場合については、設定レジスタ２１０で用いないこととする。
【０２０８】
バイアス回路２２０、２３０のＰＭＯＳトランジスタＰ１〜Ｐ３及びＮＭＯＳトランジスタＮ１〜Ｎ３のサイズ比は、図９の第２項から第８項に示すように設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３が下位ビットＳ３から順に"１"になると、バイアス電流が順次増大して行くように設定されている。
【０２０９】
ＰＭＯＳトランジスタＰ１〜Ｐ３のサイズ比の設定は、例えば、ＰＭＯＳトランジスタＰ１〜Ｐ３のゲート長又はゲート幅等を設定することによって行えばよい。
【０２１０】
同様に、ＮＭＯＳトランジスタＮ１〜Ｎ３のサイズ比の設定は、例えば、ＮＭＯＳトランジスタＮ１〜Ｎ３のゲート長又はゲート幅等を設定することによって行えばよい。
【０２１１】
ここで、上述のように、出力端子２５０（図８参照）から出力されるアドレス信号のスルーレートは、バイアス回路２２０、２３０に流れるバイアス電流の電流値に応じて変化する。
【０２１２】
このため、図９に示すように、設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３が下位ビットＳ３から順に"１"になる場合にバイアス電流が順次増大するようにＰＭＯＳトランジスタＰ１〜Ｐ３及びＮＭＯＳトランジスタＮ１〜Ｎ３のサイズ比を設定すれば、アドレス信号のスルーレートが順次増大するように設定することができる。
【０２１３】
バイス回路２２０、２３０のバイアス電流の電流値は、設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３が"０"、"０"、"１"の場合に最小である。このとき、スルーレートも最小となる。
【０２１４】
また、バイス回路２２０、２３０のバイアス電流の電流値は、設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３が"１"、"１"、"１"の場合に最大である。このとき、スルーレートも最大となる。
【０２１５】
次に、図１０Ａ、図１０Ｂを用いて、アドレス信号のスルーレートの違いについて説明する。
【０２１６】
図１０Ａは、実施の形態のメモリコントローラ１００でスルーレートを最大にした場合のアドレス信号の立ち上がり波形のシミュレーション結果を示す図である。
【０２１７】
図１０Ｂは、実施の形態のメモリコントローラ１００でスルーレートを最小にした場合のアドレス信号の立ち上がり波形のシミュレーション結果を示す図である。
【０２１８】
ここで、図１０Ａ及び図１０Ｂに示すアドレス信号のスルーレートの評価は、電圧が０．６５（Ｖ）から０．８５（Ｖ）までの０．２（Ｖ）だけ上昇する時間を求めて行った。
【０２１９】
ＲＤＩＭＭ及びＵＤＩＭＭのアドレス信号の"０"と"１"の境界を表す閾値は、ＪＥＤＥＣの規格によって０．７５（Ｖ）と決められており、また、閾値のばらつきについても、下限値が０．６５（Ｖ）で上限値が０．８５（Ｖ）と決められている。
【０２２０】
このため、スルーレートの評価は、電圧が０．６５（Ｖ）から０．８５（Ｖ）まで上昇する時間を求めて行うことにした。
【０２２１】
図１０Ａに示すアドレス信号の立ち上がりのスルーレートは、４３（ｐｓ（pico second））の間に電圧が０．６５（Ｖ）から０．８５（Ｖ）まで０．２（Ｖ）上昇しているため、４．６５（Ｖ／ｎｓ（nano second））である。
【０２２２】
図１０Ｂに示すアドレス信号の立ち上がりのスルーレートは、１１０（ｐｓ）の間に電圧が０．６５（Ｖ）から０．８５（Ｖ）まで０．２（Ｖ）上昇しているため、１．８（Ｖ／ｎｓ）である。
【０２２３】
実施の形態のメモリコントローラ１００は、一例として、設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３を "１"、"１"、"１"（図９に示す第８項）に設定することにより、アドレス信号のスルーレートを図１０Ａに示すように最大値に設定する。
【０２２４】
また、実施の形態のメモリコントローラ１００は、一例として、設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３を"０"、"０"、"１" （図９に示す第２項）に設定することにより、アドレス信号のスルーレートを図１０Ｂに示すように最小値に設定する。
【０２２５】
また、実施の形態のメモリコントローラ１００は、設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３を"１"、"１"、"１"と"０"、"０"、"１"の間の値（図９に示す第３項から第７項の値）に設定することにより、アドレス信号のスルーレートを図１０Ａと図１０Ｂとの間の値に設定する。
【０２２６】
次に、図１１及び図１２を用いて、アドレス信号のスルーレートを最大又は最小にした場合に、ＵＤＩＭＭ６０のＳＤＲＡＭ１とＳＤＲＡＭ８が受信するアドレス信号のアイパターンについて説明する。
【０２２７】
図１１Ａは、アドレス信号のスルーレートを最大にした場合に、ＵＤＩＭＭ６０のＳＤＲＡＭ１が受信するアドレス信号のアイパターンを示し、図１１Ｂは、アドレス信号のスルーレートを最大にした場合に、ＵＤＩＭＭ６０のＳＤＲＡＭ８が受信するアドレス信号のアイパターンを示す。
【０２２８】
図１２Ａは、アドレス信号のスルーレートを最小にした場合に、ＵＤＩＭＭ６０のＳＤＲＡＭ１が受信するアドレス信号のアイパターンを示し、図１２Ｂは、アドレス信号のスルーレートを最小にした場合に、ＵＤＩＭＭ６０のＳＤＲＡＭ８が受信するアドレス信号のアイパターンを示す。
【０２２９】
図１１Ａ、図１１Ｂ、図１２Ａ、図１２Ｂでは、横軸に時間、縦軸に電圧をとってアイパターンを示す。
【０２３０】
また、ここでは、ＲＤＩＭＭ及びＵＤＩＭＭのアドレス信号の"０"と"１"の境界を表す閾値の下限値（０．６５（Ｖ））と上限値（０．８５（Ｖ））との間にある有効な窓幅を求めた。
【０２３１】
図１１Ａに示すアイパターンでは、有効な窓幅は、点Ａ１と点Ｂ１との間であり、９００．９４（ｐｓ）である。また、図１１Ｂに示すアイパターンでは、有効な窓幅は、点Ｃ１と点Ｄ１との間であり、１．１２９（ｎｓ）である。
【０２３２】
図１１Ａ、図１１Ｂは、ＲＤＩＭＭ５０用のスルーレートのアドレス信号をＵＤＩＭＭ６０に入力した場合のアイパターンを示している。
【０２３３】
このため、入力端子６２（図５参照）から見て最も奥に位置するＳＤＲＡＭ８のアイパターン（図１１Ｂ）の方が、入力端子６２から見て最も手前に位置するＳＤＲＡＭ１のアイパターン（図１１Ａ）よりも有効な窓幅が狭くなっている。
【０２３４】
これは、入力端子６２から見て手前側に位置するＳＤＲＡＭ１の方が、入力端子６２から見て奥側に位置するＳＤＲＡＭ８よりも、アドレス信号の反射による影響が顕著に現れていることを示している。
【０２３５】
これに対して、アドレス信号のスルーレートを最小に設定した場合のアイパターンは、図１２Ａ及び図１２Ｂに示す通りである。
【０２３６】
図１２Ａに示すアイパターンでは、有効な窓幅は、点Ａ２と点Ｂ２との間であり、１．９４９（ｎｓ）である。また、図１２Ｂに示すアイパターンでは、有効な窓幅は、点Ｃ２と点Ｄ２との間であり、１．６８１３（ｎｓ）である。
【０２３７】
このように、アドレス信号のスルーレートを最小にしてＵＤＩＭＭ６０に入力すると、入力端子６２に最も近いＳＤＲＡＭ１のアイパターンの有効な窓幅は、図１１Ａに示すアイパターンの２倍以上に広がった。
【０２３８】
また、入力端子６２から見て最も奥に位置するＳＤＲＡＭ８のアイパターンの有効な窓幅は、図１１Ｂに示すアイパターンの約１．５倍に広がった。
【０２３９】
以上より、アドレス信号のスルーレートを低下させてＵＤＩＭＭ６０に入力すると、アドレス信号の反射による影響を抑制できることが分かった。
【０２４０】
次に、図１３を用いて、メモリコントローラ１００にＲＤＩＭＭ５０又はＵＤＩＭＭ６０が接続された場合に、メモリコントローラ１００が実行する処理について説明する。
【０２４１】
図１３は、実施の形態のメモリコントローラ１００にＲＤＩＭＭ５０又はＵＤＩＭＭ６０が接続された場合に、メモリコントローラ１００のＳＰＤコントローラ１５０が実行する処理を示す図である。
【０２４２】
ＳＰＤコントローラ１５０は、メモリコントローラ１００の電源が投入されると、処理を開始し、ＳＰＤ素子に記憶されたデータを読み込む（ステップＳ１）。
【０２４３】
次いで、ＳＰＤコントローラ１５０は、ＳＰＤ素子から読み込んだデータに基づき、ＤＩＭＭの種類を判定する（ステップＳ２）。
【０２４４】
ＳＰＤコントローラ１５０は、ステップＳ２でメモリコントローラ１００にＲＤＩＭＭ５０が接続されたと判定すると、スルーレート設定指令生成部１３０にクロック、アドレス信号、データストローブ信号、及びデータのスルーレートをＲＤＩＭＭ用に設定させる（ステップＳ３Ｒ）。
【０２４５】
この結果、スルーレート設定指令生成部１３０は、クロック、データストローブ信号、及びデータのスルーレートを最大値（max）に設定するとともに、初期設定部１６０によって保持される値に応じて、アドレス信号のスルーレートをＲＤＩＭＭ用の値（比較的高い値）に設定する。
【０２４６】
ステップＳ３Ｒの処理が終了すると、メモリコントローラ１００は、クロック、アドレス信号、データストローブ信号、及びデータのタイミング設定を行う（ステップＳ４Ｒ）。
【０２４７】
以上により、処理が終了する。
【０２４８】
一方、ＳＰＤコントローラ１５０がステップＳ２でメモリコントローラ１００にＵＤＩＭＭ５０が接続されたと判定すると、スルーレート設定指令生成部１３０にクロック、アドレス信号、データストローブ信号、及びデータのスルーレートをＵＤＩＭＭ用に設定させる（ステップＳ３Ｕ）。
【０２４９】
この結果、スルーレート設定指令生成部１３０は、クロック、データストローブ信号、及びデータのスルーレートを最大値（max）に設定するとともに、初期設定部１６０によって保持される値に応じて、アドレス信号のスルーレートをＵＤＩＭＭ用の値（比較的低い値）に設定する。
【０２５０】
ステップＳ３Ｕの処理が終了すると、メモリコントローラ１００は、クロック、アドレス信号、データストローブ信号、及びデータのタイミング設定を行う（ステップＳ４Ｕ）。
【０２５１】
以上により、処理が終了する。
【０２５２】
次に、図１４の真理値表を用いて、実施の形態のメモリコントローラ１００のＳＰＤコントローラ１５０の動作について説明する。
【０２５３】
図１４は、実施の形態のメモリコントローラ１００のスルーレート設定指令生成部１３０及び遅延指令生成部１４０の動作を示す真理値表を示す図である。
【０２５４】
図１４には、スルーレート設定指令生成部１３０及び遅延指令生成部１４０への入力として、第１項から第８項までの初期設定値とＳＰＤコントローラ１５０の出力（判定結果）を示す。
【０２５５】
初期設定値は、初期設定部１６０（図６参照）が保持する２ビットのデータで表される値であり、"００"、"０１"、"１０"、"１１"の値を取り得る。
【０２５６】
初期設定値は、アドレス信号のスルーレートを微調整するために用いる値である。ＵＤＩＭＭ６０用のアドレス信号のスルーレートは、初期設定値が"００"のときに最小値となり、"００"よりも"１１"にシフトするに連れてスルーレートが大きくなるように設定されている。
【０２５７】
また、ＲＤＩＭＭ５０用のアドレス信号のスルーレートは、初期設定値が"００"のときに最大値となり、"００"よりも"１１"にシフトするに連れてスルーレートが大きくなるように設定されている。
【０２５８】
初期設定値は、例えば、ＲＤＩＭＭ５０又はＵＤＩＭＭ６０をメモリコントローラ１００に接続する前に、ＲＤＩＭＭ５０又はＵＤＩＭＭ６０のアドレス信号のスルーレートを調整しながらオシロスコープ等で観測し、波形の特性に応じて決定し、予め初期設定部１６０に設定しておけばよい。
【０２５９】
特に、レジスタチップを含まないＵＤＩＭＭ６０は、内部のアドレス線６１（図５参照）でのアドレス信号の反射があるため、個体差等に応じて最適な初期設定値を決定すればよい。
【０２６０】
また、図１４には、スルーレート設定指令生成部１３０で設定される設定値Ｄと、遅延指令生成部１４０で設定される設定値Ｒ、Ｗを示す。設定値Ｄは３ビットのデータであり、ドライバ１０３の設定レジスタ２１０（図６参照）に入力されると、データＳ１、Ｓ２、Ｓ３として保持される。
【０２６１】
また、図１４には、第１項から第８項までの設定値Ｒ、Ｗ、Ｄとスルーレートの関係を示す。
【０２６２】
上述のように、スルーレート設定指令生成部１３０は、設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３を設定するための３ビットの設定値Ｄを設定する。また、図９に示したように、設定レジスタ２１０のデータＳ１、Ｓ２、Ｓ３は"０"、"０"、"１"から"１"、"１"、"１"まで変化する。
【０２６３】
このため、スルーレート設定指令生成部１３０は、設定値Ｄを"００１"から"１１１"まで変化させる。
【０２６４】
また、上述のように、遅延指令生成部１４０は、ＲＤＩＭＭ５０からデータを読み出すときは設定値ＲをＬレベルに設定し、ＲＤＩＭＭ５０にデータを書き込むときは設定値ＷをＨレベルにする。
【０２６５】
遅延指令生成部１４０は、ＵＤＩＭＭ６０からデータを読み出すときは設定値ＲをＨレベルに設定し、ＵＤＩＭＭ６０にデータを書き込むときは設定値ＷをＬレベルにする。
【０２６６】
このため、スルーレート設定指令生成部１３０で設定される設定値Ｄと、遅延指令生成部１４０で設定される設定値Ｒ、Ｗは、図１４に示すように、第１項から第８項まで設定される。
【０２６７】
第１項から第４項は、ＳＰＤコントローラ１５０によってＲＤＩＭＭ５０が接続されたと判定された場合に相当する。
【０２６８】
この場合に、初期設定値（"００"〜"１１"）に応じて、第１項から第４項まで設定値Ｄが"１１１"から"１００"まで変化し、これに応じて、スルーレートは段階的に低下する。
【０２６９】
なお、第１項から第４項では、設定値ＲはＬレベル、設定値ＷはＨレベルにそれぞれ設定される。
【０２７０】
また、第８項から第５項は、ＳＰＤコントローラ１５０によってＵＤＩＭＭ６０が接続されたと判定された場合に相当する。
【０２７１】
この場合に、初期設定値（"００"〜"１１"）に応じて、第８項から第５項まで設定値Ｄが"００１"から"１００"まで変化し、これに応じて、スルーレートは段階的に増大する。
【０２７２】
なお、第８項から第５項では、設定値ＲはＨレベル、設定値ＷはＬレベルにそれぞれ設定される。
【０２７３】
本実施の形態のメモリコントローラ１００によれば、図１４に示す初期設定値、スルーレート設定指令生成部１３０で設定される設定値Ｄ、遅延指令生成部１４０で設定される設定値Ｒ、Ｗを用いることにより、ＲＤＩＭＭ５０とＵＤＩＭＭ６０とを汎用的に利用することができる。
【０２７４】
また、特に、メモリコントローラ１００にＵＤＩＭＭ６０を接続する場合は、アドレス信号のスルーレートを比較的低く設定するため、ＵＤＩＭＭ６０のアドレス線６１におけるアドレス信号の反射の発生を抑制することができる。
【０２７５】
また、メモリコントローラ１００はＲＤＩＭＭ５０とＵＤＩＭＭ６０とに汎用的に利用できるため、従来のようにＲＤＩＭＭ５０とＵＤＩＭＭ６０用に別々のメモリコントローラを用意する必要がなくなる。
【０２７６】
これにより、ＲＤＩＭＭ５０に利用できるメモリコントローラ１００を従来よりも安価に提供することができる。
【０２７７】
そして、この結果、ＲＤＩＭＭ５０を実装したブレードサーバのような大型の情報処理装置のコストダウンを図ることができる。
【０２７８】
以上より、本実施の形態によれば、アドレス線のトポロジーの異なるいずれのＤＩＭＭに対してもアドレス指定とデータの読み書きを正確に行うことができるとともに、製造コストを抑制したメモリコントローラ及び情報処理装置を提供することができる。
【０２７９】
なお、以上では、初期設定部１６０が保持する初期設定値に応じてアドレス信号のスルーレートを最大値と最小値との間で段階的に設定する形態について説明したが、メモリコントローラ１００にＲＤＩＭＭ５０が接続された場合には一律にアドレス信号のスルーレートを最大値に設定してもよい。
【０２８０】
同様に、メモリコントローラ１００にＵＤＩＭＭ６０が接続された場合には一律にアドレス信号のスルーレートを最小値に設定してもよい。
【０２８１】
以上、本発明の例示的な実施の形態のメモリコントローラ、及び情報処理装置について説明したが、本発明は、具体的に開示された実施の形態に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０２８２】
１０  サーバ
２０  システムボード
２０Ａ、２０Ｂ  主面
２１Ａ、２１Ｂ、２１Ｃ  ビア
２２  層間配線
２３  バンプ
２４Ａ、２４Ｂ  ソケット
２５Ａ、２５Ｂ  配線
３０  ＣＰＵコントローラ
４０  メモリコントローラ
４１  ＩＣチップ
４２  配線
４３、４４、４５、４７  ドライバ
４６、４８  レシーバ
５０、５０Ａ、５０Ｂ  ＲＤＩＭＭ
５１Ａ、５１Ｂ  基板
５２Ａ、５２Ｂ  バンプ
５３Ａ、５３Ｂ  ＳＤＲＡＭ
５４Ａ、５４Ｂ  層間配線
５５  レジスタチップ
５６  アドレス線
５７  入力端子
５８  終端抵抗器
５９  ＳＰＤ素子
６０  ＵＤＩＭＭ
６１  アドレス線
６２  入力端子
６３  終端抵抗器
１００  メモリコントローラ
１０１  入力端子
１０２  シフトレジスタ
１０３  ドライバ
１０４  アドレス指定端子
１１１、１２１  入力端子
１１２、１２２  シフトレジスタ
１１３、１２３  遅延部
１１４、１２４  マルチプレクサ
１１５  ドライバ
１１６  入出力端子
１２５  レシーバ
１３０  スルーレート設定指令生成部
１４０  遅延指令生成部
１５０  ＳＰＤコントローラ
１５１  入力端子
１５２  レシーバ
１６０  初期設定部
２０１、２０３  ＰＭＯＳ
２０２、２０４  ＮＭＯＳ
２１０  設定レジスタ
２１１、２１２、２１３  インバータ
２２０、２３０  バイアス回路
２４１、２４２  保護抵抗器
２５０  出力端子
【図１】
2012095980.tif 000003
【図２】
2012095980.tif 000004
【図３】
2012095980.tif 000005
【図４】
2012095980.tif 000006
【図５】
2012095980.tif 000007
【図６】
2012095980.tif 000008
【図７Ａ】
2012095980.tif 000009
【図７Ｂ】
2012095980.tif 000010
【図８】
2012095980.tif 000011
【図９】
2012095980.tif 000012
【図１０Ａ】
2012095980.tif 000013
【図１０Ｂ】
2012095980.tif 000014
【図１１Ａ】
2012095980.tif 000015
【図１１Ｂ】
2012095980.tif 000016
【図１２Ａ】
2012095980.tif 000017
【図１２Ｂ】
2012095980.tif 000018
【図１３】
2012095980.tif 000019
【図１４】
2012095980.tif 000020
【手続補正書】
【提出日】平成26年2月28日(2014.2.28)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
アドレス線のトポロジーが異なるＤＩＭＭの種類をＳＰＤに基づいて判定する判定部と、
前記判定部によって判定されるＤＩＭＭの種類に応じて、アドレス信号のスルーレートを設定するスルーレート設定部と、
前記判定部によって判定されるＤＩＭＭの種類に応じて、データの読み出し時又は書き込み時のデータ遅延量を設定する遅延設定部と
を含み、
前記遅延設定部は、
前記判定部によって判定されるＤＩＭＭの種類に応じて、前記データ遅延量を設定するための遅延指令を生成する遅延指令生成部と、
前記データの伝送路に挿入され、前記遅延指令生成部が生成する前記遅延指令に基づき、前記データ遅延量を制御する遅延制御部とを有し、
前記遅延制御部は、
前記データの伝送路に挿入される遅延部と、
前記データの伝送路に挿入され、前記遅延指令に基づき、前記遅延部を経由する第１経路と、前記遅延部を経由しない第２経路とのいずれか一方を経由するデータを選択するマルチプレクサとを有し、
前記マルチプレクサで前記第１経路又は前記第２経路のいずれか一方を経由するデータを選択することにより、前記データ遅延量を制御し、
前記遅延制御部は、ＵＤＩＭＭから前記データを読み出すときには前記第１経路を経由するデータを選択し、ＵＤＩＭＭに前記データを書き込むときには前記第２経路を経由するデータを選択するとともに、ＲＤＩＭＭから前記データを読み出すときには前記第２経路を経由するデータを選択し、ＲＤＩＭＭに前記データを書き込むときには前記第１経路を経由するデータを選択する、メモリコントローラ。
【請求項２】
前記スルーレート設定部は、
前記判定部によって判定されるＤＩＭＭの種類に応じて、前記アドレス信号のスルーレートを設定するためのスルーレート設定指令を生成するスルーレート設定指令生成部と、
前記アドレス信号を伝送するアドレス線に挿入され、前記スルーレート設定指令生成部が生成する前記スルーレート設定指令に基づき、前記アドレス信号のスルーレートを変更するスルーレート変更部とを有する、請求項１記載のメモリコントローラ。
【請求項３】
前記スルーレート変更部は、
前記スルーレート設定指令に応じた電流を出力するバイアス回路部と、
前記アドレス信号によって駆動されるとともに、前記バイアス回路部の出力電流が供給され、前記バイアス回路部の出力電流に応じてスルーレートを変更したアドレス信号を出力するＣＭＯＳインバータ回路部とを有する、請求項２記載のメモリコントローラ。
【請求項４】
前記スルーレート設定部は、ＵＤＩＭＭに入力される第１アドレス信号のスルーレートを、ＲＤＩＭＭに入力される第２アドレス信号のスルーレートよりも低くする、請求項１記載のメモリコントローラ。
【請求項５】
演算処理装置と、
記憶装置と、
前記演算処理装置と前記記憶装置との間でデータを伝送する、請求項１記載のメモリコントローラと
を含む、情報処理装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
本発明の実施の形態のメモリコントローラは、アドレス線のトポロジーが異なるＤＩＭＭの種類をＳＰＤに基づいて判定する判定部と、前記判定部によって判定されるＤＩＭＭの種類に応じて、アドレス信号のスルーレートを設定するスルーレート設定部と、前記判定部によって判定されるＤＩＭＭの種類に応じて、データの読み出し時又は書き込み時のデータ遅延量を設定する遅延設定部とを含み、前記遅延設定部は、前記判定部によって判定されるＤＩＭＭの種類に応じて、前記データ遅延量を設定するための遅延指令を生成する遅延指令生成部と、前記データの伝送路に挿入され、前記遅延指令生成部が生成する前記遅延指令に基づき、前記データ遅延量を制御する遅延制御部とを有し、前記遅延制御部は、前記データの伝送路に挿入される遅延部と、前記データの伝送路に挿入され、前記遅延指令に基づき、前記遅延部を経由する第１経路と、前記遅延部を経由しない第２経路とのいずれか一方を経由するデータを選択するマルチプレクサとを有し、前記マルチプレクサで前記第１経路又は前記第２経路のいずれか一方を経由するデータを選択することにより、前記データ遅延量を制御し、前記遅延制御部は、ＵＤＩＭＭから前記データを読み出すときには前記第１経路を経由するデータを選択し、ＵＤＩＭＭに前記データを書き込むときには前記第２経路を経由するデータを選択するとともに、ＲＤＩＭＭから前記データを読み出すときには前記第２経路を経由するデータを選択し、ＲＤＩＭＭに前記データを書き込むときには前記第１経路を経由するデータを選択する。
【国際調査報告】
2012095980.tif 000021
2012095980.tif 000022
2012095980.tif 000023
2012095980.tif 000024