(57)【要約】【課題】半導体装置のタイミング調整を最適に行うシステム、システムにおける調整装置、システムの制御方法を提供する。【解決手段】メモリチップを有する複数の半導体装置３０と、複数の半導体装置のいずれかの半導体装置に、予め調整対象とされている被調整信号のタイミングと、被調整信号のハイレベルとローレベルとを判別するための参照電圧と、を段階的に変更させてシュム−データを取得するメモリコントローラ２０と、メモリコントローラにより取得されたシュム−データに基づき被調整信号のタイミングと参照電圧との関係の最適ポイントを算出する演算部１２と、を備え、メモリコントローラは、演算部が算出した最適ポイントを示す情報に基づき調整される信号のタイミング及び参照電圧を複数の半導体装置のそれぞれに対して調整する。【選択図】図１
2012194686.tif 000002
【特許請求の範囲】
【請求項１】
メモリチップを有する複数の半導体装置と、
前記複数の半導体装置のうち、いずれかの半導体装置に、予め調整対象とされている被調整信号のタイミングと、前記被調整信号のハイレベルとローレベルとを判別するための参照電圧と、を段階的に変更させてシュム−データを取得するメモリコントローラと、
前記メモリコントローラにより取得されたシュム−データに基づき前記被調整信号のタイミングと前記参照電圧との関係の最適ポイントを算出する演算部と、
を備え、
前記メモリコントローラは、
前記演算部が算出した前記最適ポイントを示す情報に基づき前記調整される信号のタイミング及び前記参照電圧を前記複数の半導体装置のそれぞれに対して調整する
こと特徴とするシステム。
【請求項２】
前記メモリコントローラは、
前記システムが起動され、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）による第１の組み合わせ数のアクセスパターンとデータパターン及び前記参照電圧のレベルの組み合わせを用いて前記被調整信号のタイミングの調整後、前記第１の組み合わせ数より多い第２の組み合わせ数のアクセスパターンとデータパターン及び前記参照電圧のレベルの組み合わせを段階的に変更させてシュム−データを取得する
ことを特徴とする請求項１に記載のシステム。
【請求項３】
前記メモリコントローラは、
前記システムが起動され、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）による第１の組み合わせ数のアクセスパターンとデータパターン及び前記参照電圧のレベルの組み合わせを用いて前記被調整信号のタイミングの調整後、前記被調整信号が制御される実動作と並行して、前記調整を行う
ことを特徴とする請求項１または請求項２に記載のシステム。
【請求項４】
前記メモリコントローラは、
記憶部を備え、
前記取得したシュム−データを前記記憶部に記憶させ、前記記憶部に記憶させたシュム−データを前記演算部に出力する
ことを特徴とする請求項１から請求項３のいずれか１項に記載のシステム。
【請求項５】
前記被調整信号のタイミングは、
同期クロックに対する各入出力信号のタイミング、前記同期クロックに対するデータストローブ信号のタイミング、または、前記同期クロックに対するコマンド信号とアドレス信号のタイミングである
ことを特徴とする請求項１から請求項４のいずれか１項に記載のシステム。
【請求項６】
前記参照電圧は、
前記入出力信号の参照電圧と、前記コマンド信号と前記アドレス信号との参照電圧である
ことを特徴とする請求項５に記載のシステム。
【請求項７】
前記複数の半導体装置は、
少なくとも１つがシュム−データ取得専用であり、
前記メモリコントローラは、
前記シュム−データ取得専用の半導体装置に、前記被調整信号のタイミングと前記参照電圧を段階的に変更させてシュム−データを取得し、前記取得したシュム−データを前記演算部に出力する
ことを特徴とする請求項１から請求項６のいずれか１項に記載のシステム。
【請求項８】
前記複数の半導体装置は、
各々、第１半導体装置と第２半導体装置とでミラー構成され、
前記メモリコントローラは、前記複数の半導体装置の各第１半導体装置に、前記被調整信号のタイミングと前記参照電圧を段階的に変更させてシュム−データを取得し、前記取得したシュム−データを前記演算部に出力する
ことを特徴とする請求項１から請求項７のいずれか１項に記載のシステム。
【請求項９】
メモリチップを有する複数の半導体装置のうち、いずれかの半導体装置に、予め調整対象とされている被調整信号のタイミングと、前記被調整信号のハイレベルとローレベルとを判別するための参照電圧と、を段階的に変更させてシュム−データを取得するメモリコントローラと、
前記メモリコントローラにより取得されたシュム−データに基づき前記被調整信号のタイミングと前記参照電圧との関係の最適ポイントを算出する演算部と、
を備え、
前記メモリコントローラは、
前記演算部が算出した前記最適ポイントを示す情報に基づき前記調整される信号のタイミング及び前記参照電圧を前記複数の半導体装置のそれぞれに対して調整する
こと特徴とするシステムにおける調整装置。
【請求項１０】
メモリチップを有する複数の半導体装置と、
前記複数の半導体装置を制御するメモリコントローラと、
前記メモリコントローラを制御する演算部と、を有するシステムの制御方法であって、
前記メモリコントローラが、前記複数の半導体装置のうち、いずれかの半導体装置を選択する選択工程と、
前記選択工程で選択された半導体装置に予め調整対象とされている被調整信号のタイミングと、前記被調整信号のハイレベルとローレベルとを判別するための参照電圧と、を段階的に変更させてシュムーデータを取得する変更工程と、
前記演算部が、前記変更工程より取得されたシュム−データに基づき前記被調整信号のタイミングと前記参照電圧との関係の最適ポイントを算出する算出工程と、
前記メモリコントローラが、前記算出工程で算出された前記被調整信号タイミングと前記参照電圧との関係の最適ポイントを示す情報に基づき前記複数の半導体装置に対する前記被調整信号のタイミング及び前記参照電圧を調整する工程と、
を含むことを特徴としているシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、システム、システムにおける調整装置、およびシステムの制御方法に関する。
【背景技術】
【０００２】
コンピュータ等の主記憶装置として、複数のシンクロナスメモリ（クロック同期型半導体メモリ）、例えばＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のチップをプリント基板に搭載した半導体装置であるＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）が用いられている。
このようなＤＩＭＭを用いたシステムは、パラレル接続された複数のＤＩＭＭに加えて、これらＤＩＭＭに対するアクセスを制御するＣＰＵ（中央演算装置）とメモリコントローラとを有している（例えば、特許文献１参照）。そして、このようなシステムでは、一般的には起動時に、同期クロックに対するＤＱ（入出力データ）信号、ＤＱＳ（データのリード/ライトのタイミングを指定する差動ストローブ）信号のタイミング調整を行っている。このタイミング調整では、メモリコントローラが、例えば、あらかじめ定められた同期クロックに対する各信号のデータパターンを各ＤＩＭＭに出力して、各ＤＩＭＭ遅延時間等を取得する。そして、メモリコントローラは、取得した遅延時間等に基づき、同期クロックに対するＤＱ信号とＤＱＳ信号のタイミングを調整している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−１４４４５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載の発明では、起動時における短い時間内でタイミング調整を行う必要があるため、限られた種類のタイミング調整用のデータパターンを用いたタイミング調整を行う必要がある。このため、例えば、データのやりとりを行う実動作のアクセス・タイミングと、限られたタイミング調整用のデータパターンにおけるアクセス・タイミングとが異なっている場合、同期クロックに対するＤＱ信号とＤＱＳ信号のタイミング調整が最適化されないことがある。また、タイミング調整のデータパターンが、ワーストパターンになっていなかった場合、同期クロックに対するＤＱ信号とＤＱＳ信号のタイミング調整が最適化されないことがある。
【課題を解決するための手段】
【０００５】
上記目的を達成するため、本発明のシステムは、メモリチップを有する複数の半導体装置と、前記複数の半導体装置のうち、いずれかの半導体装置に、予め調整対象とされている被調整信号のタイミングと、前記被調整信号のハイレベルとローレベルとを判別するための参照電圧と、を段階的に変更させてシュム−データを取得するメモリコントローラと、前記メモリコントローラにより取得されたシュム−データに基づき前記被調整信号のタイミングと前記参照電圧との関係の最適ポイントを算出する演算部と、を備え、前記メモリコントローラは、前記演算部が算出した前記最適ポイントを示す情報に基づき前記調整される信号のタイミング及び前記参照電圧を前記複数の半導体装置のそれぞれに対して調整すること特徴としている。
【０００６】
上記目的を達成するため、本発明のシステムにおける調整装置は、メモリチップを有する複数の半導体装置のうち、いずれかの半導体装置に、予め調整対象とされている被調整信号のタイミングと、前記被調整信号のハイレベルとローレベルとを判別するための参照電圧と、を段階的に変更させてシュム−データを取得するメモリコントローラと、前記メモリコントローラにより取得されたシュム−データに基づき前記被調整信号のタイミングと前記参照電圧との関係の最適ポイントを算出する演算部と、を備え、前記メモリコントローラは、前記演算部が算出した前記最適ポイントを示す情報に基づき前記調整される信号のタイミング及び前記参照電圧を前記複数の半導体装置のそれぞれに対して調整すること特徴としている。
【０００７】
上記目的を達成するため、本発明は、メモリチップを有する複数の半導体装置と、前記複数の半導体装置を制御するメモリコントローラと、前記メモリコントローラを制御する演算部と、を有するシステムの制御方法であって、前記メモリコントローラが、前記複数の半導体装置のうち、いずれかの半導体装置を選択する選択工程と、前記選択工程で選択された半導体装置に予め調整対象とされている被調整信号のタイミングと、前記被調整信号のハイレベルとローレベルとを判別するための参照電圧と、を段階的に変更させてシュムーデータを取得する変更工程と、前記演算部が、前記変更工程より取得されたシュム−データに基づき前記被調整信号のタイミングと前記参照電圧との関係の最適ポイントを算出する算出工程と、前記メモリコントローラが、前記算出工程で算出された前記被調整信号タイミングと前記参照電圧との関係の最適ポイントを示す情報に基づき前記複数の半導体装置に対する前記被調整信号のタイミング及び前記参照電圧を調整する工程と、を含むことを特徴としている。
【発明の効果】
【０００８】
本発明によれば、複数の半導体装置の中のいずれかの半導体装置に対して、データのやりとりを行う実動作中にメモリコントローラが、調整する調整信号（各入出力信号、アドレス・コントロール信号）のタイミングと、調整信号のハイレベルとローレベルとを判別するための参照電圧とを起動時のＢＩＯＳに予め設定されているタイミング調整より多くの個数で段階的に変更して、各種のタイミング再調整テストを行ってシュムーデータを取得する。そして、演算部は、取得されたシュムーデータを用いて、被調整信号のタイミングと参照電圧の最適ポイントを算出する。そして、メモリコントローラは、演算部が算出した最適ポイントに基づき、実動作中に複数の半導体装置に対してＢＩＯＳの設定でタイミング調整された設定値の再調整を行う。この結果、実動作の被調整信号のタイミングに合わせ、半導体装置に対する被調整信号のタイミングと参照電圧とを再調整することができる。
【図面の簡単な説明】
【０００９】
【図１】この発明の技術思想を示す原理図である。
【図２】本実施形態に係るシステム１の構成の一例を説明する図である。
【図３】ＤＱＳ信号、ＤＱ信号、参照電圧ＶｒｅｆＤＱ、及びＤＱ−ＤＱＳスキューを説明する図である。
【図４】同実施形態に係るＣＰＵ１００とメモリコントローラ２００の構成の一例を説明する図である。
【図５】同実施形態に係るタイミング再調整処理のフローチャートである。
【図６】ＢＩＯＳによるメモリタイミング設定における信号の流れの概略を説明する図である。
【図７】書き込み時のＢＩＯＳによるメモリタイミング設定における同期クロックに対するアドレス信号とコマンド信号のタイミング設定の一例のタイミングチャートである。
【図８】書き込み時のＢＩＯＳによるメモリタイミング設定における同期クロックに対するＤＱＳ信号のタイミング設定の一例のタイミングチャートである。
【図９】書き込み時のＢＩＯＳによるメモリタイミング設定におけるＤＱＳ信号に対するＤＱ信号のタイミング設定の一例のタイミングチャートである。
【図１０】書き込み時のＢＩＯＳによるメモリタイミング設定における同期クロックに対するＤＱＳ信号のタイミング設定の一例のタイミングチャートである。
【図１１】読み込み時のＢＩＯＳによるメモリタイミング設定におけるＤＱＳ信号に対するＤＱ信号のタイミング設定の一例のタイミングチャートである。
【図１２】メモリタイミング調整におけるＤＩＭＭ３０１〜３０５へのデータ遅延を説明する図である。
【図１３】メモリタイミング調整におけるＤＩＭＭ３０１〜３０５からのメモリコントローラ２００の信号取り込みタイミングを説明する図である。
【図１４Ａ】同実施形態に係る第１可変テスト〜第３可変テストの一例を説明する図である。
【図１４Ｂ】同実施形態に係る第１可変テスト〜第３可変テストによるシュムープロットの一例を説明する図である。
【図１５】同実施形態に係るテストパターンＡの場合のＤＱ／ＤＱＳ対ＶｒｅｆＤＱのシュムーデータの一例を示す図である。
【図１６】同実施形態に係るテストパターンＢの場合のＤＱ／ＤＱＳ対ＶｒｅｆＤＱのシュムーデータの一例を示す図である。
【図１７】第２実施形態に係るシステム１ａの構成の一例を説明する図である。
【図１８】同実施形態に係るタイミング再調整処理のフローチャートである。
【図１９】第３実施形態に係るシステム１ｂの構成の一例を説明する図である。
【図２０】同実施形態に係るタイミング再調整処理のフローチャートである。
【発明を実施するための形態】
【００１０】
本発明の課題を解決する技術思想の代表的な一例は、以下に示される。但し、本発明の請求内容はこの技術思想に限られず、本発明の請求項に記載の内容であることは言うまでもない。
【００１１】
図１は、この発明の技術思想を示す原理図である。
図１に示すように、システム１は、調整装置４０、複数の半導体装置３０から構成されている。また、調整装置４０は、演算部１２、メモリコントローラ２０から構成されている。システム１は、例えば、ＰＣ（パーソナル・コンピュータ）である。
【００１２】
半導体装置３０は、例えば、半導体装置３２、３４、３６、及び３８である。そして、半導体装置３２、３２、３４、及び３６は、例えば、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）であり、各々メモリチップ３１を備えている。
演算部１２は、例えば、システム１がＰＣの場合、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算装置）である。
【００１３】
メモリコントローラ２０は、半導体装置３０に対して、システム１の起動時、予め定められている第１の個数のテストパターンでタイミング調整を行う。そして、メモリコントローラ２０は、起動時のタイミング調整後、半導体装置３０に対して、データのやりとりを行う実動作中に、起動時のタイミング調整で用いた第１の個数より多くのテストパターンを用いてタイミング再調整テストを行ってシュムーデータを取得する。なお、タイミング再調整テストとは、起動時に用いた第１の個数より多くのテストパターン用いて、同期クロックに対する調整する調整信号のタイミングを変更し、調整信号に対する参照電圧のレベルを変更して行うテストである。なお、テストパターンとは、データの組み合わせパターン（例えば、０１００、００１０など）であるデータパターン、及び、同期クロックに対する調整される信号の立ち上がり又は立ち下がりのタイミングのパターンであるアクセスパターンである。また、調整信号とは、各入出力信号、及びアドレス・コントロール信号である。また、参照電圧とは、各入出力信号及びアドレス・コントロール信号のハイレベルとローレベルを判別する電圧である。また、メモリコントローラ２０は、取得したシュムーデータを記憶部に記憶している。
演算部１２は、タイミング再調整テストによりメモリコントローラ２０が取得したシュムーデータに基づき、統計的手法を用いて、参照電圧と各入出力信号との最適ポイント、または、参照電圧とアドレス・コントロール信号との最適ポイントを算出し、算出した最適ポイントをメモリコントローラ２０に出力する。
そして、メモリコントローラ２０は、起動後の実動作時において、演算部１２により算出された最適ポイントに基づき、半導体装置３０に対して、タイミング再調整を行う。なお、タイミング再調整とは、同期クロックに対する調整信号のタイミングと参照電圧との最適ポイントと、同期クロックに対するアドレス・コントロール信号のタイミングと参照電圧の最適ポイントとを調整することである。以上のように、半導体装置３０のタイミング調整を最適に行うことを技術思想とする。
【００１４】
［第１実施形態］
以下、添付図面を参照しながら、本発明の好ましい実施の形態について詳細に説明する。
【００１５】
図２は、本実施形態に係るシステム１の構成の一例を説明する図である。
図２に示すように、システム１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ；中央演算装置）１００、ＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）１２０、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）１４０、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１６０、メモリコントローラ２００、ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）３０１、ＤＩＭＭ３０２、ＤＩＭＭ３０３、ＤＩＭＭ３０４、及びテスト用ＤＩＭＭ３０５を備えている。
【００１６】
ＢＩＯＳ１２０は、システム１に関する基本的な処理手順等を記憶する一種のファームウェアであり、フラッシュメモリなどの不揮発性メモリによって構成される。ＢＩＯＳ１２０は、ＣＰＵ１００の動作を制御するプログラムとして、例えば、不揮発性メモリ記憶されている。
【００１７】
ＣＰＵ１００は、ＢＩＯＳ１２０またはＯＳ１４０に基づき、メモリコントローラ２００の動作を制御する。また、ＣＰＵ１００は、ＢＩＯＳ１２０に基づき、起動時にＯＳ１４０がＨＤＤ１６０から読み込む前に、ＤＩＭＭ３０１〜３０４、及びテスト用ＤＩＭＭ３０５の同期クロックに対する各信号のタイミングをメモリコントローラ２００に設定させる。また、ＣＰＵ１００は、ＯＳ１２０が読み込まれる前に、ＤＩＭＭ３０１〜３０４、及びテスト用ＤＩＭＭ３０５に対して、ＢＩＯＳ１２０に記憶されている第１の個数のテストパターンを用いて、予め定められた時間内でメモリトレーニングやレベリングによるメモリタイミング調整をメモリコントローラ２００に行わせる。また、ＣＰＵ１００は、ＯＳ１４０がメインメモリに読み込まれた後、ＯＳ１４０に基づいて、後述するタイミング再調整テストを行う指示をメモリコントローラ２００に出力する。また、ＣＰＵ１００は、メモリコントローラ２００の後述するテスト結果記憶部に記憶されているシュムーデータ（ｓｈｍｏｏ  ｄａｔａ）を取得し、取得したシュムーデータを統計処理する。またＣＰＵ１００は、統計処理した結果に基づき、同期クロックに対する各調整信号のタイミングと参照電圧（Ｖｒｅｆ）の最適ポイントを算出し、算出した最適ポイントをメモリコントローラ２００に出力する。
なお、シュムープロットとは、取得したシュムーデータを電気的特性に相関のある２つのパラメータをＸ軸とＹ軸にプロットしたものである。シュムーデータとは、シュムープロットに基づいて、Ｘ軸とＹ軸とのデータにおけるＰａｓｓとＦａｉｌに対応して記憶されているデータテーブルである。また、調整信号とは、各入出力信号、及びアドレス・コントロール信号である。また、参照電圧とは、調整信号のハイレベルとローレベルを判別する電圧である。
【００１８】
ＯＳ１４０は、オペレーティングシステム、システム１の動作制御、タイミング再調整処理などのアプリケーション、タイミング再調整のためのアクセスパターンとデータパターン等を含むものであり、システム１の起動前はＨＤＤ１６０に記憶されている。
【００１９】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１６０は、ＯＳ１４０のデータが予め記憶されている。ＯＳ１４０は、システム１の起動時にＣＰＵ１００により読み出され、メインメモリであるＤＩＭＭ３０１〜３０４に書き込まれる。なお、ＨＤＤ１６０は、ハードディスクに限られず、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）であってもよい。
【００２０】
メモリコントローラ２００は、ＯＳ１４０に基づき、ＣＰＵ１００が入出力するデータを、ＤＩＭＭ３０１〜３０４に対して書き込み及び読み出しの制御を行う。また、メモリコントローラ２００は、ＢＩＯＳ１２０に基づき、ＤＩＭＭ３０１〜３０４、及びテスト用ＤＩＭＭ３０５に対して起動時に予め定められた時間内で第１の個数のテストパターンでタイミング調整を行う。起動時に行われるタイミング調整とは、メモリトレーニングやレベリングによるＤＩＭＭ３０１〜３０４、及びテスト用ＤＩＭＭ３０５のＤＱ（データ）信号、ＤＱＳ（データストローブ；Ｄａｔａ  Ｓｔｒｏｂｅ）信号のタイミング調整である。
また、メモリコントローラ２００は、ＯＳ１４０に記憶されているタイミング再調整のアプリケーションに基づき、テスト用ＤＩＭＭ３０５に対して、実動作時に第２の個数のテストパターンでタイミング再調整テストを行ってシュムーデータを取得する。
なお、タイミング再調整テストとは、起動時にＢＩＯＳ１２０に設定されている第１の個数より多数の第２の個数のテストパターン用いて、同期クロックに対する調整する調整信号のタイミングを変更し、調整信号の参照電圧のレベルを変更して行うテストである。
なお、テストパターンとは、データの組み合わせパターン（例えば、０１００、００１０など）であるデータパターン、及び、同期クロックに対する調整される信号の立ち上がり又は立ち下がりのタイミングのパターンであるアクセスパターンである。また、調整信号とは、各入出力信号、及びアドレス・コントロール信号である。また、参照電圧とは、各入出力信号及びアドレス・コントロール信号のハイレベルとローレベルを判別する電圧である。
なお、タイミング再調整テストとは、例えば、同期クロックに対する所定のデータパターン（例えば０１００）の調整信号の立ち上がりのタイミングと、参照電圧のレベルを変化させて、取得したデータと、予め設定されているテストパターンに対するデータの期待値とを比較する。そして比較結果が一致すればテスト結果をＰａｓｓパスと判定し、一致しなければ、テスト結果をＦａｉｌと判定する。
また、メモリコントローラ２００は、ＣＰＵ１００が算出した最適ポイントに基づき、実動作時にＤＩＭＭ３０１〜３０４に対して同期クロックに対する調整信号のタイミングと参照電圧のレベルを再調整する。
【００２１】
ＤＩＭＭ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）３０１〜３０４は、複数のＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）またはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のチップが、プリント基板上に搭載されているメモリモジュールである。
【００２２】
テスト用ＤＩＭＭ３０５は、ＤＩＭＭ３０１〜３０４と同様に、複数のＳＤＲＡＭまたはＤＲＡＭのチップが、プリント基板上に搭載されているメモリモジュールである。
また、テスト用ＤＩＭＭ３０５は、後述するように、メモリコントローラ２００が行うタイミング再調整テストに用いられる。
なお、本実施形態では、ＤＩＭＭ３０１〜３０４と、テスト用ＤＩＭＭ３０５とは、同期クロックに対する各信号のタイミング、参照電圧などが同様のスペックを有している。例えば、各ＤＩＭＭに使用されているＳＤＲＡＭが同一製造メーカ製且つ同一ロットのものである。
【００２３】
以下に、本実施形態を行う理由の概要を説明する。
図３は、ＤＱＳ信号、ＤＱ信号、参照電圧ＶｒｅｆＤＱ、及びＤＱ−ＤＱＳスキューを説明する図である。図３において、符号ｇ１は、ＤＱＳ信号であり、符号ｇ２は、／ＤＱＳ信号である。また、符号ｇ１１とｇ１２は、ＤＱＳ信号ｇ１と／ＤＱＳ信号ｇ２とのクロスポイントである。また、符号ｇ２１は、ＤＱ信号ｇ３と参照電圧ＶｒｅｆＤＱとのクロスポイントである。なお、／ＤＱＳ信号は、ＤＱＳ信号の反転信号である。以下、本実施形態では、反転信号を記号／で表す。また、図３において、横軸は時間を表し、縦軸は信号のレベルを表す。
ＤＩＭＭ３０１〜３０５が、例えばＤＤＲ２  ＳＤＲＡＭ（Ｄｏｕｂｌｅ−ＤａｔａーＲａｔｅ２  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）規格のメモリモジュールの場合、図３に示すようにＤＤＲ２  ＳＲＡＭのメモリチップは、ＤＱＳ信号と／ＤＱＳ信号とのクロスポイントを、入出力データの同期クロックとして使用している。メモリコントローラ２００は、この同期クロックに同期してＤＱ信号からデータを読み取っている。ＤＱＳ信号と／ＤＱＳ信号のドライブ能力が異なる場合、ＤＱＳ信号と／ＤＱＳ信号とのクロスポイントは、それぞれの中間レベルからずれる場合がある。この場合、図３に示すようにＤＱＳ信号と／ＤＱＳ信号とのクロスポイントと、ＤＱ信号と参照電圧ＶｒｅｆＤＱのクロスポイントとの間に、遅延時間（ＤＱ−ＤＱＳスキュー）Δｔ１（＝ｔ２−ｔ１）、Δｔ２（＝ｔ４−ｔ３）が生じる。このように、ＤＱ−ＤＱＳスキューが生じている場合、データ入出力時のデータの有効データ時間が減少してしまう。なお、／ＤＱＳ信号は、ＤＱＳ信号の反転信号を表している。また、参照電圧ＶｒｅｆＤＱとは、ＤＱ信号がハイレベルかローレベルかを判定する電圧である。
このため、後述するように、メモリコントローラ２００は、タイミング再調整処理を行い、ＣＰＵ１００がタイミング再調整処理で得られたシュムーデータを統計処理してＤＱ−ＤＱＳスキューが少なくなる最適ポイントを算出する。そして、メモリコントローラ２００は、算出された最適ポイントを用いて、各信号のタイミングを再調整することで、起動時のＢＩＯＳ１２０に設定されているタイミング調整を行った場合よりもタイミングを最適に調整できるため、ＤＩＭＭ３０１〜３０４を精度良く高速に動作させることができる。
【００２４】
図４は、本実施形態に係るＣＰＵ１００とメモリコントローラ２００の構成の一例を説明する図である。
図４に示すように、ＣＰＵ１００は、テスト結果統計処理部１０４を備えている。また、ＣＰＵ１００は、ＨＤＤ１６０からＯＳ１４０を読み込み後、読み込んだＯＳ１４０に含まれているＯＳ上のアプリケーションソフト１０１からタイミング再調整テストのアプリケーション、及びタイミング再調整のアプリケーションを読み出す。また、ＣＰＵ１００は、読み込んだＯＳに含まれているアクセスパターンライブラリ１０２からアクセスパターンを読み出す。また、ＣＰＵ１００は、読み込んだＯＳに含まれているデータパターンライブラリ１０３からデータパターンを読み出す。
ＣＰＵ１００は、読み出したタイミング再調整テストのアプリケーション及びタイミング再調整のアプリケーション、アクセスパターン及びデータパターンをメモリコントローラ２００に出力する。また、ＣＰＵ１００のテスト結果統計処理部１０４は、メモリコントローラ２００に記憶されているテスト結果に基づき、タイミング再調整テストで取得されたシュムーデータの最適ポイントを算出し、算出した最適ポイントをメモリコントローラ２００に出力する。
【００２５】
メモリコントローラ２００は、テストプログラム制御部２０２、テスト条件設定部２０４、プログラム実行部２０６、メモリ出力制御部２１２、メモリ入力制御部２１４、ＶｒｅｆＤＱ可変部２２２、ＶｒｅｆＣＡ可変部２２４、ＣＬＫ調整部２３１及び２３２、コマンド調整部２４１及び２４２、アドレス調整部２５１及び２５２、ＤＱＳ調整部２６１及び２６２、ＤＱ調整部２７１及び２７２、ＣＬＫ出力部２３６、ＣＬＫ入力部２３７、コマンド出力部２４６、コマンド入力部２４７、アドレス出力部２５６、アドレス入力部２５７、ＤＱＳ出力部２６６、ＤＱＳ入力部２６７、ＤＱ出力部２７６、ＤＱ入力部２７７、テスト結果記憶部２８０、及びテスト開始トリガ部２９０を備えている。なお、メモリコントローラ２００は、例えばＰＣなどに用いられているシステムのメモリコントローラと同様に、非図示のクロックＣＬＫ分周部、アドレス生成部、初期化部等を備えている。
【００２６】
テストプログラム制御部２０２には、ＣＰＵ１００が出力するタイミング再調整テストのアプリケーション及びタイミング再調整のアプリケーション、アクセスパターン、データパターンが入力される。また、テストプログラム制御部２０２は、入力されたタイミング再調整テストのアプリケーションに基づき、タイミング再調整テストのアプリケーション、アクセスパターン、データパターンをプログラム実行部２０６に出力する。
テストプログラム制御部２０２は、入力されたタイミング再調整テストのアプリケーションに基づき、メモリ入力制御部２１４が出力するシュムーデータを取得し、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テストプログラム制御部２０２は、テスト開始トリガ部２９０が出力するトリガ信号に応じて、テスト用ＤＩＭＭ３０５に対して、順次、タイミング再調整テストを行う指示をプログラム実行部２０６に出力する。
また、テストプログラム制御部２０２は、タイミング再調整テストが終了した場合、タイミング再調整が終了したことを示す情報をＣＰＵ１００に出力する。
また、テストプログラム制御部２０２は、入力されたタイミング再調整のアプリケーションに基づき、ＣＰＵ１００から入力された最適ポイントを示す情報、タイミング再調整のアプリケーションをプログラム実行部２０６に出力する。
【００２７】
テスト条件設定部２０４は、各信号のタイミングをそのように可変するか、参照電圧ＶｒｅｆＤＱ、ＶｒｅｆＣＡレベルをどのように可変するか等のタイミング再調整テストの各種条件が予め設定されて記憶されている。テスト条件設定部２０４は、タイミング再調整テストの各種条件を、プログラム実行部２０６に出力する。
【００２８】
プログラム実行部２０６には、テスト条件設定部２０４が出力するタイミング再調整テストの各種条件と、テストプログラム制御部２０２が出力するタイミング再調整テストのアプリケーション及びタイミング再調整のアプリケーション、データパターン及びアクセスパターンが入力される。プログラム実行部２０６は、入力されたタイミング再調整のアプリケーションに基づき、メモリ出力制御部２１２、メモリ入力制御部２１４、ＶｒｅｆＤＱ可変部２２２、ＶｒｅｆＣＡ可変部２２４をデータパターン及びアクセスパターンを用いて制御し、テスト用ＤＩＭＭ３０５に対してタイミング再調整テストを行う。
また、プログラム実行部２０６は、テストプログラム制御部２０２が出力するタイミング再調整のアプリケーションに基づき、メモリ出力制御部２１２、メモリ入力制御部２１４、ＶｒｅｆＤＱ可変部２２２、ＶｒｅｆＣＡ可変部２２４を制御し、順次、選択されたＤＩＭＭ３０１〜３０４のいずれかのＤＩＭＭに対して、タイミング再調整を行う。
【００２９】
メモリ出力制御部２１２には、同期クロックＣＬＫが入力されている。メモリ出力制御部２１２は、プログラム実行部２０６が出力する出力指示に応じて、入力された信号（コマンド、アドレス、ＤＱＳ、ＤＱ）及びタイミング調整指示を、ＣＬＫ調整部２３１、コマンド調整部２４１、アドレス調整部２５１、ＤＱＳ調整部２６１、及びＤＱ調整部２７１に出力する。また、メモリ出力制御部２１２は、プログラム実行部２０６が出力する出力指示に応じて、タイミング再調整テストの場合、テスト用ＤＩＭＭ３０５のみにテスト用データを出力するように制御する。また、メモリ出力制御部２１２は、プログラム実行部２０６が出力する出力指示に応じて、タイミング再調整の場合、ＤＩＭＭ３０１〜３０４の中から選択されたＤＩＭＭのみにタイミング再調整のアクセスするように制御し、選択されたＤＩＭＭに実動作のデータをアクセスさせないように制御する。また、メモリ出力制御部２１２は、プログラム実行部２０６が出力する出力指示に応じて、選択されていないＤＩＭＭに対して実動作のデータをアクセスさせるように制御する。
【００３０】
メモリ入力制御部２１４には、同期クロックＣＬＫが入力されている。メモリ入力制御部２１４には、プログラム実行部２０６が出力する入力指示に応じて、ＣＬＫ調整部２３１、コマンド調整部２４１、アドレス調整部２５１、ＤＱＳ調整部２６１、及びＤＱ調整部２７１からの信号（ＣＬＫ（クロック）、コマンド、アドレス、ＤＱＳ、ＤＱ）を、テストプログラム制御部２０２に出力する。また、メモリ入力制御部２１４は、プログラム実行部２０６が出力する入力指示に応じて、タイミング再調整テストの場合、テスト用ＤＩＭＭ３０５のみからテスト用データが入力されるように制御する。また、メモリ入力制御部２１４は、プログラム実行部２０６が出力する入力指示に応じて、タイミング再調整の場合、ＤＩＭＭ３０１〜３０４の中から選択されたＤＩＭＭのみにタイミング再調整のアクセスするように制御し、選択されたＤＩＭＭに実動作のデータをアクセスさせないように制御する。また、メモリ入力制御部２１４は、プログラム実行部２０６が出力する入力指示に応じて、選択されていないＤＩＭＭに対して実動作のデータをアクセスさせるように制御する。
【００３１】
ＶｒｅｆＤＱ可変部２２２は、プログラム実行部２０６が出力するＶｒｅｆＤＱ可変指示に応じて、参照電圧ＶｒｅｆＤＱレベルを可変して、可変した参照電圧ＶｒｅｆＤＱをＤＩＭＭ３０１〜３０５に供給する。
ＶｒｅｆＣＡ可変部２２４は、プログラム実行部２０６が出力するＶｒｅｆＣＡ可変指示に応じて、参照電圧ＶｒｅｆＣＡレベルを可変して、可変した参照電圧ＶｒｅｆＣＡをＤＩＭＭ３０１〜３０５に供給する。なお、参照電圧ＶｒｅｆＣＡとは、アドレス信号とコマンド信号がハイレベルかローレベルかを判定する電圧である。
【００３２】
ＣＬＫ調整部２３１は、メモリ出力制御部２１２が出力するタイミング調整指示に応じて、タイミング再調整テストの場合、同期クロック、ＤＱ―ＣＬＫ、及びＤＱＳ−ＣＬＫの出力タイミングを調整（可変また変更ともいう）して、出力タイミングを調整した同期クロック、ＤＱ―ＣＬＫ、及びＤＱＳ−ＣＬＫをテスト用ＤＩＭＭ３０５に出力する。ＣＬＫ調整部２３１は、メモリ出力制御部２１２が出力するタイミング調整指示に応じて、タイミング再調整の場合、同期クロック、ＤＱ―ＣＬＫ、及びＤＱＳ−ＣＬＫの出力タイミングを調整して、調整した同期クロック、ＤＱ―ＣＬＫ、及びＤＱＳ−ＣＬＫをＤＩＭＭ３０１〜３０４に出力する。
ＣＬＫ調整部２３２は、メモリ入力制御部２１４が出力するタイミング調整指示に応じて、タイミング再調整テストの場合、同期クロック、ＤＱ―ＣＬＫ、及びＤＱＳ−ＣＬＫの入力タイミングを調整して、テスト用ＤＩＭＭ３０５から同期クロック、ＤＱ―ＣＬＫ、及びＤＱＳ−ＣＬＫを受け取る。ＣＬＫ調整部２３２は、メモリ入力制御部２１４が出力するタイミング調整指示に応じて、タイミング再調整の場合、同期クロック、ＤＱ―ＣＬＫ、及びＤＱＳ−ＣＬＫの入力タイミングを調整して、ＤＩＭＭ３０１〜３０４から同期クロック、ＤＱ―ＣＬＫ、及びＤＱＳ−ＣＬＫを受け取る。
【００３３】
コマンド調整部２４１は、メモリ出力制御部２１２が出力するタイミング調整指示に応じて、タイミング再調整テストの場合、コマンド（ＣＯＭ）信号の出力タイミングを調整して、出力タイミングを調整したコマンド信号をテスト用ＤＩＭＭ３０５に出力する。コマンド調整部２４１は、メモリ出力制御部２１２が出力するタイミング調整指示に応じて、タイミング再調整の場合、コマンド信号の出力タイミングを調整して、出力タイミングを調整したコマンド信号をＤＩＭＭ３０１〜３０４に出力する。
コマンド調整部２４２は、メモリ入力制御部２１４が出力するタイミング調整指示に応じて、タイミング再調整テストの場合、コマンド信号の入力タイミングを調整して、テスト用ＤＩＭＭ３０５からコマンド信号を受け取る。コマンド調整部２４２は、メモリ入力制御部２１４が出力するタイミング調整指示に応じて、タイミング再調整の場合、コマンド信号の入力タイミングを調整して、ＤＩＭＭ３０１〜３０４からコマンド信号を受け取る。
【００３４】
アドレス調整部２５１は、メモリ出力制御部２１２が出力するタイミング調整指示に応じて、タイミング再調整テストの場合、アドレス（ＡＤＤ）信号の出力タイミングを調整して、出力タイミングを調整したアドレス信号をテスト用ＤＩＭＭ３０５に出力する。アドレス調整部２５１は、メモリ出力制御部２１２が出力するタイミング調整指示に応じて、タイミング再調整の場合、アドレス信号の出力タイミングを調整して、出力タイミングを調整したアドレス信号をＤＩＭＭ３０１〜３０４に出力する。
アドレス調整部２５２は、メモリ入力制御部２１４が出力するタイミング調整指示に応じて、タイミング再調整テストの場合、アドレス信号の入力タイミングを調整して、テスト用ＤＩＭＭ３０５からアドレス信号を受け取る。アドレス調整部２５２は、メモリ入力制御部２１４が出力するタイミング調整指示に応じて、タイミング再調整の場合、アドレス信号の入力タイミングを調整して、ＤＩＭＭ３０１〜３０４からアドレス信号を受け取る。
【００３５】
ＤＱＳ調整部２６１は、メモリ出力制御部２１２が出力するタイミング調整指示に応じて、タイミング再調整テストの場合、ＤＱＳ信号の出力タイミングを調整して、出力タイミングを調整したＤＱＳ信号をテスト用ＤＩＭＭ３０５に出力する。ＤＱＳ調整部２６１は、メモリ出力制御部２１２が出力するタイミング調整指示に応じて、タイミング再調整の場合、ＤＱＳ信号の出力タイミングを調整して、出力タイミングを調整したＤＱＳ信号をＤＩＭＭ３０１〜３０４に出力する。
ＤＱＳ調整部２６２は、メモリ入力制御部２１４が出力するタイミング調整指示に応じて、タイミング再調整テストの場合、ＤＱＳ信号の入力タイミングを調整して、テスト用ＤＩＭＭ３０５からＤＱＳ信号を受け取る。ＤＱＳ調整部２６２は、メモリ入力制御部２１４が出力するタイミング調整指示に応じて、タイミング再調整の場合、ＤＱＳ信号の入力タイミングを調整して、ＤＩＭＭ３０１〜３０４からＤＱＳ信号を受け取る。
【００３６】
ＤＱ調整部２７１は、メモリ出力制御部２１２が出力するタイミング調整指示に応じて、タイミング再調整テストの場合、ＤＱ信号の出力タイミングを調整して、出力タイミングを調整したＤＱ信号をテスト用ＤＩＭＭ３０５に出力する。ＤＱ調整部２７１は、メモリ出力制御部２１２が出力するタイミング調整指示に応じて、タイミング再調整の場合、ＤＱ信号の出力タイミングを調整して、出力タイミングを調整したＤＱ信号をＤＩＭＭ３０１〜３０４に出力する。
ＤＱ調整部２７２は、メモリ入力制御部２１４が出力するタイミング調整指示に応じて、タイミング再調整テストの場合、ＤＱ信号の入力タイミングを調整して、テスト用ＤＩＭＭ３０５からＤＱ信号を受け取る。ＤＱ調整部２７２は、メモリ入力制御部２１４が出力するタイミング調整指示に応じて、タイミング再調整の場合、ＤＱ信号の入力タイミングを調整して、ＤＩＭＭ３０１〜３０４からＤＱ信号を受け取る。
【００３７】
ＣＬＫ出力部２３６は、タイミング再調整テストの場合、ＣＬＫ調整部２３１が出力する各クロック信号（同期クロック、ＤＱＳ−ＣＬＫ、ＤＱ−ＣＬＫ）をテスト用ＤＩＭＭ３０５に出力する。ＣＬＫ出力部２３６は、タイミング再調整の場合、ＣＬＫ調整部２３１が出力する各クロック信号（同期クロック、ＤＱＳ−ＣＬＫ、ＤＱ−ＣＬＫ）を選択されたＤＩＭＭ３０１〜３０４のいずれかに出力する。
ＣＬＫ入力部２３７は、タイミング再調整テストの場合、テスト用ＤＩＭＭ３０５が出力する各クロック信号（同期クロック、ＤＱＳ−ＣＬＫ、ＤＱ−ＣＬＫ）を、ＣＬＫ調整部２３２に出力する。ＣＬＫ入力部２３７は、タイミング再調整の場合、選択されたＤＩＭＭ３０１〜３０４のいずれかのＤＩＭＭが出力する各クロック信号（同期クロック、ＤＱＳ−ＣＬＫ、ＤＱ−ＣＬＫ）を、ＣＬＫ調整部２３２に出力する。
【００３８】
コマンド出力部２４６は、タイミング再調整テストの場合、コマンド調整部２４１が出力するコマンド信号を、テスト用ＤＩＭＭ３０５に出力する。コマンド出力部２４６は、タイミング再調整の場合、コマンド調整部２４１が出力するコマンド信号を、選択されたＤＩＭＭ３０１〜３０４のいずれかに出力する。
コマンド入力部２４７は、タイミング再調整テストの場合、テスト用ＤＩＭＭ３０５が出力するコマンド信号をコマンド調整部２４２に出力する。コマンド入力部２４７は、タイミング再調整の場合、選択されたＤＩＭＭ３０１〜３０４のいずれかのＤＩＭＭが出力するコマンド信号をコマンド調整部２４２に出力する。
【００３９】
アドレス出力部２５６は、タイミング再調整テストの場合、アドレス調整部２５１が出力するアドレス信号を、テスト用ＤＩＭＭ３０５に出力する。アドレス出力部２５６は、タイミング再調整の場合、アドレス調整部２５１が出力するアドレス信号を、選択されたＤＩＭＭ３０１〜３０４のいずれかに出力する。
アドレス入力部２５７は、タイミング再調整テストの場合、テスト用ＤＩＭＭ３０５が出力するアドレス信号をアドレス調整部２５２に出力する。アドレス入力部２５７は、タイミング再調整の場合、選択されたＤＩＭＭ３０１〜３０４のいずれかのＤＩＭＭが出力するアドレス信号をアドレス調整部２５２に出力する。
【００４０】
ＤＱＳ出力部２６６は、タイミング再調整テストの場合、ＤＱＳ調整部２６１が出力するＤＱＳ信号を、テスト用ＤＩＭＭ３０５に出力する。ＤＱＳ出力部２６６は、タイミング再調整の場合、ＤＱＳ調整部２６１が出力するＤＱＳ信号を、選択されたＤＩＭＭ３０１〜３０４のいずれかに出力する。
ＤＱＳ入力部２６７は、タイミング再調整テストの場合、テスト用ＤＩＭＭ３０５が出力するＤＱＳ信号をＤＱＳ調整部２６２に出力する。ＤＱＳ入力部２６７は、タイミング再調整の場合、選択されたＤＩＭＭ３０１〜３０４のいずれかのＤＩＭＭが出力するＤＱＳ信号をＤＱＳ調整部２６２に出力する。
【００４１】
ＤＱ出力部２７６は、タイミング再調整テストの場合、ＤＱ調整部２７１が出力するＤＱ信号を、テスト用ＤＩＭＭ３０５に出力する。ＤＱ出力部２７６は、タイミング再調整の場合、ＤＱ調整部２７１が出力するＤＱ信号を、選択されたＤＩＭＭ３０１〜３０４のいずれかに出力する。
ＤＱ入力部２７７は、タイミング再調整テストの場合、テスト用ＤＩＭＭ３０５が出力するＤＱ信号をＤＱ調整部２７２に出力する。ＤＱ入力部２７７は、タイミング再調整の場合、選択されたＤＩＭＭ３０１〜３０４のいずれかのＤＩＭＭが出力するＤＱ信号をＤＱ調整部２７２に出力する。
【００４２】
テスト結果記憶部２８０は、例えばレジスタである。テスト結果記憶部２８０には、動作時、テストプログラム制御部２０２が取得したシュムーデータが記憶されている。また、テスト結果記憶部２８０は、シュムーデータが書き込まれた場合、シュムーデータが書き込まれたことを示す情報をテスト開始トリガ部２９０に出力する。
【００４３】
テスト開始トリガ部２９０は、テスト結果記憶部２８０が出力するシュムーデータが書き込まれたことを示す情報に基づき、トリガ信号を生成し、生成したトリガ信号をテストプログラム制御部２０２に出力する。
【００４４】
次に、本実施形態に係るタイミング調整処理について、図５を用いて説明する。
図５は、本実施形態に係るタイミング再調整処理手順の一例のフローチャートである。なお、図５において、ステップＳ７〜Ｓ２１が、本実施形態のタイミング再調整テスト処理である。
【００４５】
（ステップＳ１）
まず、システム１の使用者は、システム１の電源を入れる。ステップＳ１終了後、ステップＳ２に進む。
【００４６】
（ステップＳ２）
次に、ＣＰＵ１００は、ＨＤＤ１６０からＯＳ１４０を読み込む前に、ＢＩＯＳ１２０に設定されているメモリタイミング設定値を読み出し、読み出したメモリタイミング設定値をメモリコントローラ２００に出力する。メモリコントローラ２００は、ＣＰＵ１００が出力するメモリタイミング設定値をレジスタに設定する。なお、レジスタは、テスト結果記憶部２８０が兼ねてもよい。ステップＳ２終了後、ステップＳ３に進む。
【００４７】
ステップＳ２で行うメモリタイミング設定の一例について、図６〜図１１を用いて説明する。図６は、ＢＩＯＳによるメモリタイミング設定における信号の流れの概略を説明する図である。図７は、書き込み時のＢＩＯＳによるメモリタイミング設定における同期クロックに対するアドレス信号とコマンド信号のタイミング設定の一例のタイミングチャートである。図８は、書き込み時のＢＩＯＳによるメモリタイミング設定における同期クロックに対するＤＱＳ信号のタイミング設定の一例のタイミングチャートである。図９は、書き込み時のＢＩＯＳによるメモリタイミング設定におけるＤＱＳ信号に対するＤＱ信号のタイミング設定の一例のタイミングチャートである。図１０は、読み込み時のＢＩＯＳによるメモリタイミング設定における同期クロックに対するＤＱＳ信号のタイミング設定の一例のタイミングチャートである。図１１は、読み込み時のＢＩＯＳによるメモリタイミング設定におけるＤＱＳ信号に対するＤＱ信号のタイミング設定の一例のタイミングチャートである。
【００４８】
図６に示すように、メモリコントローラ２００は、レジスタに設定されたタイミング値を用いて、ＤＩＭＭ３０１〜３０４、及びテスト用ＤＩＭＭ３０５との信号のやりとりを行う。設定されるタイミング値は、例えば、図７〜図１１に示す各タイミング値である。
図７に示すように、メモリコントローラ２００に設定されるＤＩＭＭ３０１〜３０５に書き込み時の同期クロックＣＫ、／ＣＫに対するコマンド信号とアドレス信号の各タイミング値は、ｔｌＳＬ、ｔｌＨＬ、ｔｌＳＨ、ｔｌＨＨ、及びローレベルのピーク電圧ＶｌＬ、ハイレベルのピーク電圧ＶｌＨである。
タイミングｔｌＳＬは、コマンド信号のレベルがＶｒｅｆ−０．１７５［Ｖ］の時刻ｔ１１から、同期クロックＣＫと／ＣＫとのクロスポイントｇ１０１の時刻ｔ１２までの時間である。タイミングｔｌＨＬは、同期クロックＣＫと／ＣＫとのクロスポイントｇ１０１の時刻ｔ１２から、コマンド信号のレベルがＶｒｅｆ−０．１００［Ｖ］の時刻ｔ１３までの時間である。タイミングｔｌＳＨは、コマンド信号のレベルが、Ｖｒｅｆ＋０．１７５［Ｖ］の時刻ｔ１４から、同期クロックＣＫと／ＣＫとのクロスポイントｇ１０２の時刻ｔ１５までの時間である。タイミングｔｌＨＨは、コマンド信号のレベルが、同期クロックＣＫと／ＣＫとのクロスポイントｇ１０２の時刻ｔ１５から、Ｖｒｅｆ＋０．１００［Ｖ］の時刻ｔ１６までの時間である。
【００４９】
図８に示すように、メモリコントローラ２００に設定されるＤＩＭＭ３０１〜３０５に書き込み時の同期クロックＣＫに対するＤＱＳ信号の各タイミング値は、ｔＤＱＳＳ、ｔＤＳＳ、ｔＤＱＳＬ、ｔＤＳＨ、ｔＤＱＳＨである。
タイミングｔＤＱＳＳは、ＤＱＳ信号がＶｒｅｆの時刻ｔ２１（ｇ２１１）から、同期クロックＣＫとＶｒｅｆのクロスポイントｇ２０１の時刻ｔ２２までの時間である。タイミングｔＤＱＳＬは、ＤＱＳ信号がＶｒｅｆの時刻ｔ２３（ｇ２１２）から、ＤＱＳ信号がＶｒｅｆの時刻ｔ２４（ｇ２１３）までの時間である。タイミングｔＤＳＳは、ＤＱＳ信号がＶｒｅｆの時刻ｔ２３（ｇ２１２）から、同期クロックＣＫとＶｒｅｆのクロスポイントｇ２０２の時刻ｔ２５までの時間である。タイミングｔＤＱＳＨは、ＤＱＳ信号がＶｒｅｆの時刻ｔ２４（ｇ２１３）から、ＤＱＳ信号がＶｒｅｆの時刻ｔ２６（ｇ２１４）までの時間である。タイミングｔＤＳＨは、同期クロックＣＫとＶｒｅｆのクロスポイントｇ２０２の時刻ｔ２５から、ＤＱＳ信号がＶｒｅｆの時刻ｔ２６（ｇ２１４）までの時間である。
【００５０】
図９に示すように、メモリコントローラ２００に設定されるＤＩＭＭ３０１〜３０５に書き込み時のＤＱＳに対するＤＱ信号の各タイミング値は、ｔＤＳ、ｔＤＨ、及びローレベルのピーク電圧ＶｌＬＤＱ、ハイレベルのピーク電圧ＶｌＨＤＱである。
タイミングｔＤＳは、ＤＱ信号がＡＣレベルの時刻ｔ３１（ｇ３１１、ｇ３１２）から、ＤＱＳ信号がＶｒｅｆの時刻ｔ３２（ｇ３０１）までの時間である。タイミングｔＤＨは、ＤＱＳ信号がＶｒｅｆの時刻ｔ３２（ｇ３０１）から、ＤＱ信号がＤＣレベルの時刻ｔ３３（ｇ３１３、ｇ３１４）までの時間である。
【００５１】
図１０に示すように、メモリコントローラ２００に設定されるＤＩＭＭ３０１〜３０５から読み込み時の同期クロックＣＫに対するＤＱＳに対する各タイミング値は、ｔＱＳＬ、ｔＤＱＳＬＣＫ、ｔＱＳＨ、及びローレベル電圧ＶＯＬ、ハイレベル電圧ＶＯＨ、ＤＱＳ信号と／ＤＱＳ信号とのクロスポイントの許容ハイレベルＶＯＸｍａｘ、ＤＱＳ信号と／ＤＱＳ信号とのクロスポイントの許容ローレベルＶＯＸｍｉｎである。
タイミングｔＱＳＬは、ＤＱＳと／ＤＱＳのクロスポイントの時刻ｔ４１（ｇ４１１）から、ＤＱＳ信号がＶｒｅｆの時刻ｔ４３（ｇ４１２）までの時間である。タイミングｔＤＱＳＣＫは、同期クロックＣＫがＶｒｅｆの時刻ｔ４２（ｇ４０１）から、ＤＱＳ信号がＶｒｅｆの時刻ｔ４３（ｇ４１２）までの時間である。タイミングｔＱＳＨは、ＤＱＳ信号がＶｒｅｆの時刻ｔ４３（ｇ４１２）から、ＤＱＳ信号がＶｒｅｆの時刻ｔ４４（ｇ４１３）までの時間である。
【００５２】
図１１に示すように、メモリコントローラ２００に設定されるＤＩＭＭ３０１〜３０５に読み込み時のＤＱＳに対するＤＱ信号の各タイミング値は、ｔＤＱＳＱ、ｔＱＨ、及びローレベル電圧ＶＯＬ、ハイレベル電圧ＶＯＨである。
タイミングｔＤＱＳＱは、ＤＱＳ信号がＶｒｅｆの時刻ｔ５１（ｇ５０１）から、ＤＱ信号がＶｒｅｆの時刻ｔ５２（ｇ５１１）までの時間である。タイミングｔＱＨは、ＤＱＳ信号がＶｒｅｆの時刻ｔ５１（ｇ５０１）から、ＤＱ信号がＶｒｅｆの時刻ｔ５４（ｇ５１２）までの時間である。
【００５３】
（ステップＳ３）
図５に戻って、ＣＰＵ１００は、ＢＩＯＳ１２０に基づき、ＨＤＤ１６０からＯＳ１４０を読み込む前に、ＤＩＭＭ３０１〜３０４、及びテスト用ＤＩＭＭ３０５に対してメモリタイミング調整を行う指示をメモリコントローラ２００に出力する。メモリコントローラ２００は、ＣＰＵ１００が出力するメモリタイミング調整を行う指示に基づき、ＤＩＭＭ３０１〜３０４、及びテスト用ＤＩＭＭ３０５に対してタイミング調整を行う。
なお、メモリタイミング調整とは、メモリトレーニング、及びレベリングなどである。例えば、ＰＣ（パーソナルコンピュータ）の起動時に、ＢＩＯＳに設定されている設定値により行われている処理と同様に行われる。ステップＳ３終了後、ステップＳ４に進む。
【００５４】
ステップＳ３で行うメモリタイミング調整の一例としてリードタイミング調整について、図１２と図１３を用いて説明する。図１２は、メモリタイミング調整におけるＤＩＭＭ３０１〜３０５へのデータ遅延を説明する図である。図１３は、メモリタイミング調整におけるＤＩＭＭ３０１〜３０５からのメモリコントローラ２００の信号取り込みタイミングを説明する図である。
図１２に示すように、ＤＩＭＭ３０１〜３０５のメモリモジュールは、例えば、３１−１〜３１〜８の８個のメモリチップ（メモリデバイスともいう）で構成されている。ＤＩＭＭ３０１〜３０５が、ＤＤＲ３の場合、これらのメモリチップ３１−１〜３１〜８は、メモリモジュール内の基板上で、コマンド信号、アドレス信号、同期クロックが各ピン１つのラインでデイジーチェーン接続されている。このような構成を、フライバイ構成という。フライバイ構成の場合、同期クロックが、メモリチップ３１−１〜３１−８に伝搬する時間に差が生じるので、信号出力タイミングが、メモリチップ３１−１〜３１−８毎に異なっている。このため、メモリコントローラ２００は、メモリコントローラ２００内にメモリチップ３１−１〜３１−８毎の信号を受け取るタイミング差を補正する遅延回路Ｄ１〜Ｄ８を備えている。すなわち、図１２に示すように、メモリコントローラ２００は、クロック信号、コマンド信号、アドレス信号の到達遅延時間で発生するデータ出力のタイミングのずれを見積もっておく。
リードレベリング（Ｒｅａｄ  Ｌｅｖｅｌｉｎｇ）は、この各遅延時間を検出する処理である。
【００５５】
図１３に示すように、タイミング調整時、メモリコントローラ２００は、ＤＩＭＭ３０１〜３０５のＤＱ０の端子にタイミング調整用のデータを書き込み、ＤＱ０以外の端子に同一データか０を書き込む。データパターンは、例えば、０１０１０等である。そして、メモリコントローラ２００は、書き込んだデータＤＱを読み出し、メモリチップ３１−１〜３１−８の各遅延時間を検出する。この場合、メモリコントローラ２００は、ＤＱＳ端子と／ＤＱＳ端子からは、通常のリードコマンド入力時と同様のデータストローブ信号をＤＩＭＭ３０１〜３０５に出力する。メモリコントローラ２００は、ＤＩＭＭ３０１〜３０５からのデータＤＱの読み込み時、図１３のＳ６０１〜Ｓ６０５のように、取り込みラッチ信号のタイミングをスキャンして、ＤＱ信号を取り込めるタイミングをＤＩＭＭ３０１〜３０５上のメモリチップ３１−１〜３１−８毎に検出する。そして、メモリコントローラ２００は、各メモリチップ３１−１〜３１−８の取り込みタイミングを決定し、メモリコントローラ２００内の各遅延回路Ｄ１〜Ｄ８に設定する。
すなわち、図１３に示すように、メモリコントローラ２００は、取り込みラッチ信号のタイミングをスキャンして、ＤＱ信号が取り込めるタイミングをメモリモジュール上のＤＲＡＭ毎に見つけ、ＤＲＡＭ毎のメモリコントローラ２００への取り込みラッチタイミングを決める。
【００５６】
（ステップＳ４）
図５に戻って、ＣＰＵ１００は、ＨＤＤ１６０からＯＳ１４０を読み出し、読み出したＯＳ１４０から必要な情報、アプリケーション等をメインメモリであるＤＩＭＭ３０１〜３０４に書き込む。ステップＳ４終了後、ステップＳ５に進む。
【００５７】
（ステップＳ５）
次に、ＣＰＵ１００は、ＯＳ１４０に基づき、実動作を開始する。なお、実動作とは、例えば、システム１がＰＣに適用されている場合、使用者からの指示やＨＤＤ１６０にインストールされているアプリケーションからの指示、及びそれらの指示に基づくＯＳ１４０からの指示による動作である。ステップＳ５終了後、ステップＳ６とステップＳ７を並行して進める。
【００５８】
（ステップＳ６）
ＣＰＵ１００は、ステップＳ７〜Ｓ２１のタイミング再調整処理（タイミング再調整テストとタイミング再調整）と並行して、ＯＳ１４０に基づき、ＤＩＭＭ３０１〜３０４に対して実動作処理を行う。
【００５９】
（ステップＳ７）
ステップＳ５終了後、ＣＰＵ１００は、ＯＳ１４０から、タイミング再調整テストのアプリケーション、テストパターン及びアクセスパターンを読み出して、タイミング再調整処理を開始する。
ステップＳ７終了後、ステップＳ８に進む。
【００６０】
（ステップＳ８）
次に、ＣＰＵ１００は、ＯＳ１４０から読み出したタイミング再調整テストのアプリケーションとタイミング再調整のアプリケーション、テストパターン及びアクセスパターンをメモリコントローラ２００に出力する。
次に、メモリコントローラ２００のプログラム実行部２０６は、ＣＰＵ１００が出力したタイミング再調整テストのアプリケーションの中から、第１可変テストのアプリケーションを読み出す。第１可変テストでは、起動時のＢＩＯＳ１２０に設定されている第１の組み合わせより多い第２の組み合わせのテストパターンを用いる。すなわち、第１可変テストでは、同期クロックに対するコマンド・アドレス信号の出力タイミングを可変（変更）し、コマンド・アドレス信号用の参照電圧ＶｒｅｆＣＡレベルを可変（変更）する組み合わせの複数のパターンを用いて、複数のシュム−データを取得するテストである。
次に、プログラム実行部２０６は、読み出した第１可変テストのアプリケーションに基づき、テスト用ＤＩＭＭ３０５に対してタイミング再調整テストを行い、テスト結果であるシュムーデータを取得する。ステップＳ８終了後、ステップＳ９に進む。
【００６１】
図１４Ａは、本実施形態に係る第１可変テスト〜第３可変テストの一例を説明する図である。図１４Ｂは、本実施形態に係る第１可変テスト〜第３可変テストによるシュムープロットの一例を説明する図である。プログラム実行部２０６は、コマンド調整部２４１及び２４２を制御して、同期クロックＣＫ、／ＣＫに対するコマンド信号の立ち下がり（Ｓｅｔ  ｕｐ  ｔｉｍｅ）のタイミング及び立ち上がり（Ｈｏｌｄ  ｔｉｍｅ）のタイミングを可変し、タイミングを可変したコマンド信号をテスト用ＤＩＭＭ３０５に出力する。同様に、メモリコントローラ２００のアドレス調整部２５１及び２５２は、同期クロックＣＫ、／ＣＫに対するアドレス信号の立ち下がりのタイミング及び立ち上がりのタイミングを可変し、タイミングを可変したアドレス信号をテスト用ＤＩＭＭ３０５に出力する。また、メモリコントローラ２００のプログラム実行部２０６は、ＶｒｅｆＣＡ可変部２２４を制御して、レベルを可変した参照電圧ＶｒｅｆＣＡをテスト用ＤＩＭＭ３０５に出力する。
【００６２】
図１４Ａに示すように、プログラム実行部２０６は、ＶｒｅｆＣＡ可変部２２４を制御して、ＶｒｅｆＣＡ＝０．７５［Ｖ］に設定する。プログラム実行部２０６は、コマンド調整部２４１及び２４２を制御して、同期クロックＣＫ、／ＣＫに対するコマンド信号の立ち下がり（Ｓｅｔ  ｕｐ  ｔｉｍｅ）Ｓ７０１のタイミング及び立ち上がり（Ｈｏｌｄ  ｔｉｍｅ）Ｓ７０２のタイミングを可変し、タイミングを可変したコマンド信号をテスト用ＤＩＭＭ３０５に出力する。すなわち、図１４Ａに示すように、テストプログラム制御部２０２は、メモリコントローラ２００は、信号の立ち下がり（セットアップ）、信号の立ち上がり（ホールド）をスキャンする毎に、データパターンでアクセスしてテストを行い、ＰａｓｓであるかＦａｉｌであるかを確認する。
そして、図１４Ｂに示すように、テストプログラム制御部２０２は、コマンド入力部２４７を介して、テスト用ＤＩＭＭ３０５から読み込んだコマンド信号を取得し、取得したタイミングでデータが取り込めるか（Ｐａｓｓ）、取り込めないか（Ｆａｉｌ）を判定する。図１４Ｂにおいて、横軸はタイミング、縦軸はＶｒｅｆレベルである。そして符号Ｓ７１１〜Ｓ７２３それぞれが、各タイミングの判定結果である。
メモリコントローラ２００は、データパターン及びアクセスパターンに基づき、コマンド信号、アドレス信号のタイミング、参照電圧ＶｒｅｆＣＡレベルを可変して、シュムーデータを取得する。
【００６３】
（ステップＳ９）
次に、プログラム実行部２０６は、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テスト結果記憶部２８０は、シュムーデータが書き込まれたことに応じて、シュムーデータが書き込まれたことを示す情報をテスト開始トリガ部２９０に出力する。テスト開始トリガ部２９０は、テスト結果記憶部２８０が出力するシュムーデータが書き込まれたことを示す情報に応じて、次のテストを開始するトリガをテストプログラム制御部２０２に出力する。ステップＳ９終了後、ステップＳ１０に進む。
【００６４】
（ステップＳ１０）
次に、プログラム実行部２０６は、テスト開始トリガ部２９０が出力するトリガに応じて、タイミング再調整テストのアプリケーションの中から、第２可変テストのアプリケーションを読み出す。第２可変テストでは、起動時のＢＩＯＳ１２０に設定されている第１の組み合わせ数より多い第２の組み合わせ数のテストパターンを用いる。すなわち、第２可変テストでは、データクロックＤＱ−ＣＬＫに対するＤＱ信号の出力タイミングを可変し、データ信号用の参照電圧ＶｒｅｆＤＱレベルを可変する複数のパターンを用いて、複数のシュム−データを取得するテストである。また、第２可変テストでは、データクロックＤＱＳ−ＣＬＫに対するＤＱＳ信号の出力タイミングと、データ信号用の参照電圧ＶｒｅｆＤＱとの組み合わせの複数のパターンを用いて、複数のシュム−データを取得するテストである。
なお、データクロックＤＱ−ＣＬＫは、リード動作又はライト動作においてデータ信号ＤＱが有効となる時間を示す信号である。また、データクロックＤＱＳ−ＣＬＫは、リード動作又はライト動作においてデータストローブ信号ＤＱＳが有効となる時間を示す信号である。
次に、プログラム実行部２０６は、読み出した第２可変テストのアプリケーションに基づき、テスト用ＤＩＭＭ３０５に対してタイミング再調整テストを行い、テスト結果であるシュムーデータを取得する。ステップＳ１０終了後、ステップＳ１１に進む。
【００６５】
（ステップＳ１１）
次に、プログラム実行部２０６は、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テスト結果記憶部２８０は、シュムーデータが書き込まれたことに応じて、シュムーデータが書き込まれたことを示す情報をテスト開始トリガ部２９０に出力する。テスト開始トリガ部２９０は、テスト結果記憶部２８０が出力するシュムーデータが書き込まれたことを示す情報に応じて、次のテストを開始するトリガをテストプログラム制御部２０２に出力する。ステップＳ１１終了後、ステップＳ１２に進む。
【００６６】
（ステップＳ１２）
次に、プログラム実行部２０６は、テスト開始トリガ部２９０が出力するトリガに応じて、タイミング再調整テストのアプリケーションの中から、第３可変テストのアプリケーションを読み出す。第３可変テストでは、起動時のＢＩＯＳ１２０に設定されている第１の組み合わせ数より多い第２の組み合わせ数のテストパターンを用いる。すなわち、第３可変テストでは、データクロックＤＱ−ＣＬＫに対するＤＱ信号の入力タイミングを可変し、データ信号用の参照電圧ＶｒｅｆＤＱレベルを可変する複数のパターンを用いて、複数のシュム−データを取得するテストである。また、第３可変テストでは、データクロックＤＱＳ−ＣＬＫに対するＤＱＳ信号の入力タイミングと、データ信号用の参照電圧ＶｒｅｆＤＱとの組み合わせの複数のパターンを用いて、複数のシュム−データを取得するテストである。
次に、プログラム実行部２０６は、読み出した第３可変テストのアプリケーションに基づき、テスト用ＤＩＭＭ３０５に対してタイミング再調整テストを行い、テスト結果であるシュムーデータを取得する。ステップＳ１２終了後、ステップＳ１３に進む。
【００６７】
（ステップＳ１３）
次に、プログラム実行部２０６は、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テスト結果記憶部２８０は、シュムーデータが書き込まれたことに応じて、シュムーデータが書き込まれたことを示す情報をテスト開始トリガ部２９０に出力する。テスト開始トリガ部２９０は、テスト結果記憶部２８０が出力するシュムーデータが書き込まれたことを示す情報に応じて、次のテストを開始するトリガをテストプログラム制御部２０２に出力する。ステップＳ１３終了後、ステップＳ１４に進む。
【００６８】
（ステップＳ１４）
次に、プログラム実行部２０６は、テスト開始トリガ部２９０が出力するトリガに応じて、タイミング再調整テストが終了したことを示す情報をＣＰＵ１００に出力する。ステップＳ１４終了後、ステップＳ１５に進む。
【００６９】
（ステップＳ１５）
次に、ＣＰＵ１００のテスト結果統計処理部１０４は、メモリコントローラ２００が出力するタイミング再調整テストが終了したことを示す情報に基づき、メモリコントローラ２００に記憶されているテスト結果であるシュムーデータを読み出す。そして、テスト結果統計処理部１０４は、タイミング再調整のアプリケーションに基づき、読み出したシュムーデータを用いて、各信号の各タイミングと各参照電圧との対応の最適ポイントを、テストパターン毎に統計処理により算出する。
図１５は、本実施形態に係るテストパターンＡの場合のＤＱ／ＤＱＳ対ＶｒｅｆＤＱのシュムーデータの一例を示す図である。図１６は、本実施形態に係るテストパターンＢの場合のＤＱ／ＤＱＳ対ＶｒｅｆＤＱのシュムーデータの一例を示す図である。図１５と図１６において、横軸は信号のタイミング、縦軸はＶｒｅｆＤＱレベルを表している。
図１５及び図１６において、符号Ｐは、テストにパス（Ｐａｓｓ）したことを表し、符号Ｆａｉｌはテストにパスしなかったことを表している。テストにパスするとは、例えば、プログラム実行部２０６は、同期クロックに対してＤＱ信号のタイミングと参照電圧ＶｒｅｆＤＱレベルを可変したパターンＡを用いて、例えば、第１可変テストを行う。この場合、このパターンＡを用いて可変テストを行った場合の期待値が、テストパターンと共にテストプログラム制御部２０２に記憶されている。テストプログラム制御部２０２は、可変テストにより取得されたシュムーデータと、テスト結果記憶部２８０に記憶されている期待値とを比較し、取得したシュムーデータが、期待値に対して所定のしきい値以内の場合、可変テストをパスしたと判定する。また、テストプログラム制御部２０２は、可変テストにより取得されたシュムーデータと、このテスト結果記憶部２８０に記憶されている期待値とを比較し、取得したシュムーデータが、期待値に対して所定のしきい値より大きい場合、可変テストをパスしなかったと判定する。
ＣＰＵ１００は、図１５及び図１６に示すように、まず、ＤＱ／ＤＱＳ対ＶｒｅｆＤＱのパスしたデータの例えば重心を最適調整ポイントＳ９０１またはＳ９０２として算出する。そして、ＣＰＵ１００は、例えば、このように算出されたテストパターン毎の最適調整ポイントの値を平均化して、調整信号毎に最適調整ポイントを算出する。ステップＳ１５終了後、ステップＳ１６に進む。
【００７０】
（ステップＳ１６）
次に、ＣＰＵ１００は、算出した調整信号の最適調整ポイントをメモリコントローラ２００に出力する。ステップＳ１６終了後、ステップＳ１７に進む。
【００７１】
（ステップＳ１７）
次に、ＣＰＵ１００は、タイミング再調整のアプリケーションに基づき、タイミング再調整を行うＤＩＭＭを１つ選択する。この場合、例えば、タイミング再調整のアプリケーションには、ＤＩＭＭを選択する順番として、最初にＤＩＭＭ３０１、次にＤＩＭＭ３０２、その後ＤＩＭＭ３０３、最後にＤＩＭＭ３０４が記憶されている。このため、ＣＰＵ１００は、まず、ＤＩＭＭ３０１をタイミング再調整することを示す情報をメモリコントローラ２００に出力する。ステップＳ１７終了後、ステップＳ１８に進む。
【００７２】
（ステップＳ１８）
次に、ＣＰＵ１００は、タイミング再調整のアプリケーションに基づき、タイミング再調整を行うＤＩＭＭに実動作のアクセスと行わない命令をメモリコントローラ２００に出力する。例えば、ＤＩＭＭ３０１に対してタイミング再調整を行う場合、ＣＰＵ１００は、メモリコントローラ２００にＤＩＭＭ３０１に実動作のアクセスを行わないように制御させ、残りのＤＩＭＭ３０２〜３０４のみに実動作のアクセスを行わせる。ステップＳ１８終了後、ステップＳ１９に進む。
【００７３】
（ステップＳ１９）
次に、プログラム実行部２０６は、ＣＰＵ１００が出力する実動作のアクセスと行わない命令に従って、メモリ出力制御部２１２及びメモリ入力制御部２１４を制御して、タイミング再調整を行うために選択された１つのＤＩＭＭに実動作のアクセスをしない制御を行う。
例えば、プログラム実行部２０６は、ＤＩＭＭ３０１に対してタイミング再調整を行い、ＤＩＭＭ３０１に対して実動作のアクセスと行わない制御を行う。そして、プログラム実行部２０６は、は、残りのＤＩＭＭ３０２〜３０４のみに実動作を行う制御をする。
次に、プログラム実行部２０６は、は、ＣＰＵ１００が出力するタイミング再調整を行う命令に従って、選択された他のＤＩＭＭのタイミング再調整を行う。ステップＳ１９終了後、ステップＳ２１に進む。
【００７４】
（ステップＳ２０）
プログラム実行部２０６は、選択されたＤＩＭＭのタイミング再調整が完了したことを示す情報をＣＰＵ１００に出力する。ステップＳ２０終了後。ステップＳ２１に進む。
【００７５】
（ステップＳ２１）
ＣＰＵ１００は、プログラム実行部２０６が出力する、選択されたＤＩＭＭのタイミング再調整が完了したことを示す情報に基づき、全てのＤＩＭＭのタイミング再調整が完了したか否かを判別する。全てのＤＩＭＭのタイミング再調整が完了したと判別される場合（ステップＳ２１；Ｙｅｓ）、タイミング再調整処理を終了する。全てのＤＩＭＭのタイミング再調整が完了していないと判別された場合（ステップＳ２１；Ｎｏ）、ＣＰＵ１００は、ステップＳ１７〜Ｓ２１を、全てのＤＩＭＭのタイミング再調整が完了するまで繰り返し行う。
【００７６】
以上のように、本実施形態では、テスト用ＤＩＭＭ３０５を備え、このテスト用ＤＩＭＭ３０５に対して、実動作中にメモリコントローラ２００がＢＩＯＳ１２０に設定されているタイミング調整より多くのテストパターンを用いて、各種のテストを行う。そして、メモリコントローラ２００は、各種のテストで取得したシュムーデータを取得する。そして、ＣＰＵ１００は、取得されたシュムーデータを用いて、調整信号と参照電圧の最適ポイントを算出する。そして、メモリコントローラ２００は、算出された最適ポイントを、実動作中にＤＩＭＭ３０１〜３０４に対してタイミング再調整する。このように、メモリコントローラ２００は、実動作時に、テスト用ＤＩＭＭ３０５に起動時のタイミング調整より多数のテストパターンを用いてテストを行い、その結果である最適ポイントを実動作中に、順次、ＤＩＭＭ３０１〜３０４にタイミング再調整する。この結果、実動作のアクセス・タイミングに合わせた多数のデータパターンを用いて、タイミング再調整を行うことができる。
【００７７】
なお、本実施形態で説明したタイミング調整は、例えば、システム１のシャットダウン時に行い、算出された最適ポイントをメモリコントローラ２００のテスト結果記憶部２８０に記憶させておき、次回、システム１が起動されたときに読み出して用いるようにしてもよい。
また、ステップＳ７〜Ｓ２１のタイミング調整処理は、実動作中に１度行ってもよく、または、実動作中に繰り返し行ってもよい。繰り返しタイミング調整処理を行う場合、予め定められた時間間隔で行うようにしてもよく、あるいは、ランダムに行ってもよく、または、ＣＰＵ１００やメモリコントローラ２００の処理負荷が少ないときに行ってもよい。
また、本実施形態では、再調整を選択された１つのＤＩＭＭに対して順次行う例を説明したが、ＣＰＵ１００やメモリコントローラ２００の処理負荷が少ない場合、同時に複数のＤＩＭＭに対して行うようにしてもよい。
【００７８】
［第２実施形態」
図１７は、本実施形態に係るシステム１ａの構成の一例を説明する図である。
図１７に示すように、システム１ａは、ＢＩＯＳ１２０、ＣＰＵ１００、ＯＳ１４０、ＨＤＤ１６０、メモリコントローラ２００ａ、ＤＩＭＭ３０１〜３０４を備えている。メモリコントローラ２００ａ以外の機能は、第１実施形態と同様である。
【００７９】
メモリコントローラ２００ａのテストプログラム制御部２０２には、ＣＰＵ１００が出力するタイミング再調整テストのアプリケーション及びタイミング再調整のアプリケーション、アクセスパターン、データパターンが入力される。また、テストプログラム制御部２０２は、入力されたタイミング再調整テストのアプリケーションに基づき、アクセスパターン、データパターンを用いて、タイミング再調整テストのアプリケーション、アクセスパターン及びデータパターンをプログラム実行部２０６に出力する。
テストプログラム制御部２０２は、入力されたタイミング再調整テストのアプリケーションソフト１０１に基づき、メモリ入力制御部２１４が出力するシュムーデータを取得し、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テストプログラム制御部２０２は、テスト開始トリガ部２９０が出力するトリガ信号に応じて、ＤＩＭＭ３０１〜３０４に対して、順次、タイミング再調整テストを行う指示をプログラム実行部２０６に出力する。
また、テストプログラム制御部２０２は、タイミング再調整テストが終了した場合、タイミング再調整テストが終了したことを示す情報をＣＰＵ１００に出力する。
また、テストプログラム制御部２０２は、入力されたタイミング再調整のアプリケーションソフト１０１に基づき、ＣＰＵ１００から入力された最適ポイントを示す情報及びタイミング再調整のアプリケーションをプログラム実行部２０６に出力する。
【００８０】
プログラム実行部２０６には、テスト条件設定部２０４が出力するタイミング再調整テストの各種条件、テストプログラム制御部２０２が出力するタイミング再調整テストのアプリケーション及びタイミング再調整のアプリケーション、アクセスパターン及びデータパターンが入力される。プログラム実行部２０６は、入力されたタイミング再調整のアプリケーション、データパターン等を用いて、メモリ出力制御部２１２、メモリ入力制御部２１４、ＶｒｅｆＤＱ可変部２２２、ＶｒｅｆＣＡ可変部２２４を制御し、順次、選択されたＤＩＭＭ３０１〜３０４のいずれかのＤＩＭＭに対して、タイミング再調整テストを行う。
また、プログラム実行部２０６は、テストプログラム制御部２０２が出力するタイミング再調整のアプリケーションに基づき、メモリ出力制御部２１２、メモリ入力制御部２１４、ＶｒｅｆＤＱ可変部２２２、ＶｒｅｆＣＡ可変部２２４を制御し、順次、選択されたＤＩＭＭ３０１〜３０４のいずれかのＤＩＭＭに対して、タイミング再調整を行う。
【００８１】
次に、本実施形態に係るタイミング調整処理について、図１８を用いて説明する。
図１８は、本実施形態に係るタイミング再調整処理手順の一例のフローチャートである。なお、図１８において、ステップＳ１０７〜Ｓ１２１が、本実施形態のタイミング再調整処理である。
【００８２】
（ステップＳ１０１〜Ｓ１０５）
ステップＳ１０１〜Ｓ１０５は、第１実施形態のステップＳ１〜Ｓ５と同様に行う。ステップＳ１０５終了後、ステップＳ１０６とステップＳ１０７を並行して進める。
【００８３】
（ステップＳ１０６）
ＣＰＵ１００は、ステップＳ１０７〜Ｓ１２１のタイミング再調整処理と並行して、ＯＳ１４０に基づき、実動作処理を行う。
【００８４】
（ステップＳ１０７）
次に、ＣＰＵ１００は、タイミング再調整テストのアプリケーションに基づき、タイミング再調整テストを行うＤＩＭＭを選択する。この場合、例えば、タイミング再調整テストのアプリケーションには、ＤＩＭＭを選択する順番として、最初にＤＩＭＭ３０１、次にＤＩＭＭ３０２、その後ＤＩＭＭ３０３、最後にＤＩＭＭ３０４が記憶されている。このため、ＣＰＵ１００は、まず、ＤＩＭＭ３０１のタイミング再調整テストを行うことを示す情報をメモリコントローラ２００ａに出力する。ステップＳ１０７終了後、ステップＳ１０８に進む。
【００８５】
（ステップＳ１０８）
次に、ＣＰＵ１００は、タイミング再調整テストのアプリケーションに基づき、タイミング再調整テストを行うＤＩＭＭに実動作のアクセスと行わない命令をメモリコントローラ２００ａに出力する。
次に、プログラム実行部２０６は、ＣＰＵ１００が出力するタイミング再調整テストを行うＤＩＭＭに実動作のアクセスと行わない命令に従って、メモリ出力制御部２１２及びメモリ入力制御部２１４を制御して、タイミング再調整テストを行うために選択されたＤＩＭＭに実動作のアクセスをしない制御を行う。
例えば、プログラム実行部２０６は、ＤＩＭＭ３０１に対して、実動作のアクセスと行わない制御を行い、残りのＤＩＭＭ３０２〜３０４のみに実動作を行う制御をする。ステップＳ１０８終了後、ステップＳ１０９に進む。
【００８６】
（ステップＳ１０９）
次に、ＣＰＵ１００は、ＯＳ１４０から、タイミング再調整のアプリケーション及びタイミング再調整のアプリケーション、テストパターン及びアクセスパターンを読み出して、タイミング再調整処理を開始する。
【００８７】
（ステップＳ１１０）
次に、ＣＰＵ１００は、ＯＳ１４０から読み出したタイミング再調整テストのアプリケーション及びタイミング再調整のアプリケーション、テストパターン及びアクセスパターンを、メモリコントローラ２００ａに出力する。
次に、プログラム実行部２０６は、ＣＰＵ１００が出力したタイミング再調整テストのアプリケーションの中から、第１可変テストのアプリケーションを読み出す。プログラム実行部２０６は、読み出した第１可変テストのアプリケーションに基づき、選択された１つのＤＩＭＭに対して第１可変テストを行い、シュムーデータを取得する。なお、第１可変テストは、第１実施形態のステップＳ８で行う第１可変テストと同様である。ステップＳ１１０終了後、ステップＳ１１１に進む。
【００８８】
（ステップＳ１１１）
次に、プログラム実行部２０６は、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テスト結果記憶部２８０は、シュムーデータが書き込まれたことに応じて、シュムーデータが書き込まれたことを示す情報をテスト開始トリガ部２９０に出力する。テスト開始トリガ部２９０は、テスト結果記憶部２８０が出力するシュムーデータが書き込まれたことを示す情報に応じて、次のテストを開始するトリガをテストプログラム制御部２０２に出力する。ステップＳ１１１終了後、ステップＳ１１２に進む。
【００８９】
（ステップＳ１１２）
次に、プログラム実行部２０６は、テスト開始トリガ部２９０が出力するトリガに応じて、タイミング再調整テストのアプリケーションの中から、第２可変テストのアプリケーションを読み出す。なお、第２可変テストは、第１実施形態のステップＳ１０で行う第２可変テストと同様である。
次に、プログラム実行部２０６は、読み出した第２可変テストのアプリケーションに基づき、選択された１つのＤＩＭＭに対してテストを行い、テスト結果であるシュムーデータを取得する。ステップＳ１１２終了後、ステップＳ１１３に進む。
【００９０】
（ステップＳ１１３）
次に、プログラム実行部２０６は、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テスト結果記憶部２８０は、シュムーデータが書き込まれたことに応じて、シュムーデータが書き込まれたことを示す情報をテスト開始トリガ部２９０に出力する。テスト開始トリガ部２９０は、テスト結果記憶部２８０が出力するシュムーデータが書き込まれたことを示す情報に応じて、次のテストを開始するトリガをテストプログラム制御部２０２に出力する。ステップＳ１１３終了後、ステップＳ１１４に進む。
【００９１】
（ステップＳ１１４）
次に、プログラム実行部２０６は、テスト開始トリガ部２９０が出力するトリガに応じて、タイミング再調整テストのアプリケーションの中から、第３可変テストのアプリケーションを読み出す。なお、第３可変テストは、第１実施形態のステップＳ１２で行う第３可変テストと同様である。
次に、プログラム実行部２０６は、読み出した第３可変テストのアプリケーションに基づき、選択された１つのＤＩＭＭに対してテストを行い、テスト結果であるシュムーデータを取得する。ステップＳ１１４終了後、ステップＳ１１５に進む。
【００９２】
（ステップＳ１１５）
次に、プログラム実行部２０６は、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テスト結果記憶部２８０は、シュムーデータが書き込まれたことに応じて、シュムーデータが書き込まれたことを示す情報をテスト開始トリガ部２９０に出力する。テスト開始トリガ部２９０は、テスト結果記憶部２８０が出力するシュムーデータが書き込まれたことを示す情報に応じて、次のテストを開始するトリガをテストプログラム制御部２０２に出力する。ステップＳ１１５終了後、ステップＳ１１６に進む。
【００９３】
（ステップＳ１１６）
次に、プログラム実行部２０６は、テスト開始トリガ部２９０が出力するトリガに応じて、タイミング再調整テストが終了したことを示す情報をＣＰＵ１００に出力する。ステップＳ１１６終了後、ステップＳ１１７に進む。
【００９４】
（ステップＳ１１７）
次に、ＣＰＵ１００のテスト結果統計処理部１０４は、メモリコントローラ２００ａが出力するタイミング再調整テストが終了したことを示す情報に基づき、メモリコントローラ２００ａに記憶されているテスト結果であるシュムーデータを読み出す。そして、テスト結果統計処理部１０４は、タイミング再調整のアプリケーションに基づき、読み出したシュムーデータを用いて、各信号の各タイミングと各参照電圧との対応の最適ポイントを、テストパターン毎に統計処理により算出する。
テスト結果統計処理部１０４は、まず、ＤＱ／ＤＱＳ対ＶｒｅｆＤＱのパスしたデータの例えば重心を最適調整ポイントとして算出する。そして、テスト結果統計処理部１０４は、例えば、このように算出された各テストパターンの最適調整ポイントを更に平均化して、信号毎に最適調整ポイントを算出する。ステップＳ１１７終了後、ステップＳ１１８に進む。
【００９５】
（ステップＳ１１８）
次に、ＣＰＵ１００は、算出した信号毎の最適調整ポイントをメモリコントローラ２００ａに出力する。ステップＳ１１８終了後、ステップＳ１１９に進む。
【００９６】
（ステップＳ１１９）
次に、ＣＰＵ１００は、タイミング再調整のアプリケーションに基づき、タイミング再調整を行うＤＩＭＭを選択する。この場合、例えば、タイミング再調整のアプリケーションには、ＤＩＭＭを選択する順番として、最初にＤＩＭＭ３０１、次にＤＩＭＭ３０２、その後ＤＩＭＭ３０３、最後にＤＩＭＭ３０４が記憶されている。このため、ＣＰＵ１００は、まず、ＤＩＭＭ３０１をタイミング再調整することを示す情報をメモリコントローラ２００ａに出力する。
次に、プログラム実行部２０６は、ＣＰＵ１００が出力するタイミングの再調整を行う命令に従って、選択されたＤＩＭＭの再調整を行う。ステップＳ１１９終了後、ステップＳ１２０に進む。
【００９７】
（ステップＳ１２０）
プログラム実行部２０６は、選択されたＤＩＭＭのタイミング再調整が完了したことを示す情報をＣＰＵ１００に出力する。ステップＳ１２０終了後。ステップＳ１２１に進む。
【００９８】
（ステップＳ１２１）
ＣＰＵ１００は、メモリコントローラ２００ａが出力する、選択されたＤＩＭＭのタイミング再調整が完了したことを示す情報に基づき、全てのＤＩＭＭの再調整が完了したか否かを判別する。全てのＤＩＭＭのタイミング再調整が完了したと判別される場合（ステップＳ１２１；Ｙｅｓ）、タイミング調整処理を終了する。全てのＤＩＭＭのタイミング再調整が完了していないと判別された場合（ステップＳ１２１；Ｎｏ）、ステップＳ１０７〜Ｓ１２１を、全てのＤＩＭＭのタイミング再調整が完了するまで繰り返し行う。
【００９９】
以上のように、本実施形態では、メインメモリであるＤＩＭＭ３０１〜３０４から選択された１つのＤＩＭＭに対して、実動作中にメモリコントローラ２００ａがＢＩＯＳ１２０に設定されているタイミング調整より多くのパターンを用いて、各種のテストを行う。そして、メモリコントローラ２００ａは、各種のテストで取得したシュムーデータを記憶する。そして、ＣＰＵ１００は、取得されたシュムーデータを用いて、各信号と参照電圧の最適ポイントを算出する。そして、メモリコントローラ２００ａは、算出した最適ポイントを、実動作中にＤＩＭＭ３０１〜３０４の中から選択された１つのＤＩＭＭに対して、順次、タイミング再調整する。この結果、実動作のアクセス・タイミングに合わせた多数のデータパターンを用いて、タイミング再調整を行うことができる。
【０１００】
なお、ステップＳ１０７〜Ｓ１２１のタイミング調整処理は、実動作中に１度行ってもよく、または、実動作中に繰り返し行ってもよい。繰り返しタイミング調整処理を行う場合、予め定められた時間間隔で行うようにしてもよく、あるいは、ランダムに行ってもよく、または、ＣＰＵ１００やメモリコントローラ２００ａの処理負荷が少ないときに行ってもよい。
また、本実施形態では、タイミング調整を選択された１つのＤＩＭＭに対して順次行う例を説明したが、ＣＰＵ１００やメモリコントローラ２００ａの処理負荷が少ない場合、同時に複数のＤＩＭＭに対して行うようにしてもよい。
【０１０１】
［第３実施形態」
図１９は、本実施形態に係るシステム１ｂの構成の一例を説明する図である。
図１９に示すように、システム１ｂは、ＣＰＵ１００、ＢＩＯＳ１２０、ＯＳ１４０、ＨＤＤ１６０、メモリコントローラ２００ｂ、ＤＩＭＭ３０１ａ、ＤＩＭＭ３０１ｂ、ＤＩＭＭ３０２ａ、ＤＩＭＭ３０２ｂ、ＤＩＭＭ３０３ａ、ＤＩＭＭ３０３ｂ、ＤＩＭＭ３０４ａ及びＤＩＭＭ３０４ｂを備えている。第３実施形態におけるＤＩＭＭは、２枚ずつのミラー構成であり、ＤＩＭＭ３００ａとＤＩＭＭ３０１ｂとがミラー構成されている。同様に、ＤＩＭＭ３０２ａとＤＩＭＭ３０２ｂとがミラー構成され、ＤＩＭＭ３０３ａとＤＩＭＭ３０３ｂとがミラー構成され、ＤＩＭＭ３０４ａとＤＩＭＭ３０４ｂとがミラー構成されている。以下、ＤＩＭＭ３０１ａ、ＤＩＭＭ３０２ａ、ＤＩＭＭ３０３ａ、及びＤＩＭＭ３０４ａを第１ＤＩＭＭと称する。また、ＤＩＭＭ３０１ｂ、ＤＩＭＭ３０２ｂ、ＤＩＭＭ３０３ｂ、及びＤＩＭＭ３０４ｂを第２ＤＩＭＭと称する。
【０１０２】
メモリコントローラ２００ｂのテストプログラム制御部２０２には、ＣＰＵ１００が出力するタイミング再調整テストのアプリケーション及びタイミング再調整のアプリケーション、アクセスパターン、データパターンが入力される。また、テストプログラム制御部２０２は、入力されたタイミング再調整テストのアプリケーションに基づき、タイミング再調整テストのアプリケーション、アクセスパターン及びデータパターンをプログラム実行部２０６に出力する。
テストプログラム制御部２０２は、入力されたタイミング再調整テストのアプリケーションソフト１０１に基づき、メモリ入力制御部２１４が出力するシュムーデータを取得し、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テストプログラム制御部２０２は、テスト開始トリガ部２９０が出力するトリガ信号に応じて、第１ＤＩＭＭと第２ＤＩＭＭに対して、順次、タイミング再調整テストを行う指示をプログラム実行部２０６に出力する。
また、テストプログラム制御部２０２は、タイミング再調整テストが終了した場合、タイミング再調整テストが終了したことを示す情報をＣＰＵ１００に出力する。
また、テストプログラム制御部２０２は、入力されたタイミング再調整のアプリケーションソフト１０１に基づき、ＣＰＵ１００から入力された最適ポイントを示す情報及びタイミング再調整のアプリケーションをプログラム実行部２０６に出力する。
【０１０３】
プログラム実行部２０６には、テスト条件設定部２０４が出力するタイミング再調整テストの各種条件、テストプログラム制御部２０２が出力するタイミング再調整テストのアプリケーション及びタイミング再調整のアプリケーション、アクセスパターン及びデータパターンが入力される。プログラム実行部２０６は、入力されたタイミング再調整のアプリケーション、データパターン等を用いて、メモリ出力制御部２１２、メモリ入力制御部２１４、ＶｒｅｆＤＱ可変部２２２、ＶｒｅｆＣＡ可変部２２４を制御し、順次、選択された第１ＤＩＭＭか第２ＤＩＭＭのいずれか４つのＤＩＭＭに対して、タイミング再調整テストを行う。
また、プログラム実行部２０６は、テストプログラム制御部２０２が出力するタイミング再調整のアプリケーションに基づき、メモリ出力制御部２１２、メモリ入力制御部２１４、ＶｒｅｆＤＱ可変部２２２、ＶｒｅｆＣＡ可変部２２４を制御し、順次、選択された第１ＤＩＭＭか第２ＤＩＭＭのいずれかの４つのＤＩＭＭに対して、タイミング再調整を行う。
【０１０４】
次に、本実施形態に係るタイミング調整処理について、図２０を用いて説明する。
図２０は、本実施形態に係るタイミング調整処理手順の一例のフローチャートである。なお、図２０において、ステップＳ２０７〜Ｓ２２２が、本実施形態のタイミング再調整処理である。
【０１０５】
（ステップＳ２０１〜Ｓ２０５）
ステップＳ２０１〜Ｓ２０５は、第１実施形態のステップＳ１〜Ｓ５と同様に行う。ステップＳ２０５終了後、ステップＳ２０６とステップＳ２０７を並行して進める。
【０１０６】
（ステップＳ２０６）
ＣＰＵ１００は、ステップＳ２０７〜Ｓ２２１のタイミング再調整処理と並行して、ＯＳ１４０に基づき、ステップＳ２０７で選択されていない第１ＤＩＭＭまたは第２ＤＩＭＭを用いて実動作処理を行う。
【０１０７】
（ステップＳ２０７）
次に、ＣＰＵ１００は、タイミング再調整テストのアプリケーションに基づき、まず、タイミング再調整テストを行うＤＩＭＭとして第１ＤＩＭＭを選択する。ステップＳ２０７終了後、ステップＳ２０８に進む。
【０１０８】
（ステップＳ２０８）
次に、ＣＰＵ１００は、タイミング再調整テストのアプリケーションに基づき、タイミング再調整テストを行うＤＩＭＭに実動作のアクセスと行わない命令をメモリコントローラ２００ｂに出力する。
次に、メモリコントローラ２００ｂのプログラム実行部２０６は、ＣＰＵ１００が出力するタイミング再調整テストを行うＤＩＭＭに実動作のアクセスと行わない命令に従って、タイミング再調整テストを行うために選択された第１ＤＩＭＭまたは第２ＤＩＭＭに実動作のアクセスをしない制御を行う。
例えば、プログラム実行部２０６は、最初の処理では第１ＤＩＭＭに対して、実動作のアクセスと行わない制御を行い、次の処理では第２ＤＩＭＭに対して実動作を行わない制御をする。ステップＳ２０８終了後、ステップＳ２０９に進む。
【０１０９】
（ステップＳ２０９）
次に、ＣＰＵ１００は、ＯＳ１４０から、タイミング再調整テストのアプリケーション及びタイミング再調整のアプリケーション、テストパターン及びアクセスパターンを読み出し、タイミング再調整処理を開始する。
【０１１０】
（ステップＳ２１０）
次に、ＣＰＵ１００は、ＯＳ１４０から読み出したタイミング再調整テストのアプリケーション及びタイミング再調整のアプリケーション、テストパターン及びアクセスパターンを、メモリコントローラ２００ｂに出力する。
次に、プログラム実行部２０６は、タイミング再調整テストのアプリケーションの中から、第１可変テストのアプリケーションを読み出す。プログラム実行部２０６は、読み出した第１可変テストのアプリケーションに基づき、選択された第１ＤＩＭＭまたは第２ＤＩＭＭに対して第１可変テストを行い、シュムーデータを取得する。なお、第１可変テストは、第１実施形態のステップＳ８で行う第１可変テストと同様である。この場合、例えば、プログラム実行部２０６は、第１ＤＩＭＭであるＤＩＭＭ３０１ａ、ＤＩＭＭ３０２ａ、ＤＩＭＭ３０３ａ、及びＤＩＭＭ３０４ａに対して同時に第１可変テストを行う。
ステップＳ２１０終了後、ステップＳ２１１に進む。
【０１１１】
（ステップＳ２１１）
次に、プログラム実行部２０６は、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テスト結果記憶部２８０は、シュムーデータが書き込まれたことに応じて、シュムーデータが書き込まれたことを示す情報をテスト開始トリガ部２９０に出力する。テスト開始トリガ部２９０は、テスト結果記憶部２８０が出力するシュムーデータが書き込まれたことを示す情報に応じて、次のテストを開始するトリガをテストプログラム制御部２０２に出力する。ステップＳ２１１終了後、ステップＳ２１２に進む。
【０１１２】
（ステップＳ２１２）
次に、プログラム実行部２０６は、タイミング再調整テストのアプリケーションの中から、第２可変テストのアプリケーションを読み出す。なお、第２可変テストは、第１実施形態のステップＳ１０で行う第２可変テストと同様である。この場合、例えば、プログラム実行部２０６は、第１ＤＩＭＭであるＤＩＭＭ３０１ａ、ＤＩＭＭ３０２ａ、ＤＩＭＭ３０３ａ、及びＤＩＭＭ３０４ａに対して同時に第２可変テストを行う。
次に、プログラム実行部２０６は、読み出した第２可変テストのアプリケーションに基づき、選択された第１ＤＩＭＭまたは第２ＤＩＭＭに対してテストを行い、テスト結果であるシュムーデータを取得する。ステップＳ２１２終了後、ステップＳ２１３に進む。
【０１１３】
（ステップＳ２１３）
次に、プログラム実行部２０６は、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テスト結果記憶部２８０は、シュムーデータが書き込まれたことに応じて、シュムーデータが書き込まれたことを示す情報をテスト開始トリガ部２９０に出力する。テスト開始トリガ部２９０は、テスト結果記憶部２８０が出力するシュムーデータが書き込まれたことを示す情報に応じて、次のテストを開始するトリガをテストプログラム制御部２０２に出力する。ステップＳ２１３終了後、ステップＳ２１４に進む。
【０１１４】
（ステップＳ２１４）
次に、プログラム実行部２０６は、タイミング再調整テストのアプリケーションの中から、第３可変テストのアプリケーションを読み出す。なお、第３可変テストは、第１実施形態のステップＳ１２で行う第３可変テストと同様である。この場合、プログラム実行部２０６は、例えば、第１ＤＩＭＭであるＤＩＭＭ３０１ａ、ＤＩＭＭ３０２ａ、ＤＩＭＭ３０３ａ、及びＤＩＭＭ３０４ａに対して同時に第３可変テストを行う。
次に、プログラム実行部２０６は、読み出した第３可変テストのアプリケーションに基づき、選択された第１ＤＩＭＭまたは第２ＤＩＭＭに対してテストを行い、テスト結果であるシュムーデータを取得する。ステップＳ２１４終了後、ステップＳ２１５に進む。
【０１１５】
（ステップＳ２１５）
次に、プログラム実行部２０６は、取得したシュムーデータをテスト結果記憶部２８０に記憶させる。また、テスト結果記憶部２８０は、シュムーデータが書き込まれたことに応じて、シュムーデータが書き込まれたことを示す情報をテスト開始トリガ部２９０に出力する。テスト開始トリガ部２９０は、テスト結果記憶部２８０が出力するシュムーデータが書き込まれたことを示す情報に応じて、次のテストを開始するトリガをテストプログラム制御部２０２に出力する。ステップＳ２１５終了後、ステップＳ２１６に進む。
【０１１６】
（ステップＳ２１６）
次に、プログラム実行部２０６は、テスト開始トリガ部２９０が出力するトリガに応じて、タイミング再調整テストが終了したことを示す情報をＣＰＵ１００に出力する。ステップＳ２１６終了後、ステップＳ２１７に進む。
【０１１７】
（ステップＳ２１７）
次に、ＣＰＵ１００のテスト結果統計処理部１０４は、メモリコントローラ２００ｂが出力するタイミング再調整テストが終了したことを示す情報に基づき、メモリコントローラ２００ｂに記憶されているテスト結果であるシュムーデータを読み出す。そして、テスト結果統計処理部１０４は、タイミング再調整のアプリケーションに基づき、読み出したシュムーデータを用いて、各信号の各タイミングと各参照電圧との対応の最適ポイントを、テストパターン毎に統計処理により算出する。
テスト結果統計処理部１０４は、まず、ＤＱ／ＤＱＳ対ＶｒｅｆＤＱのパスしたデータの例えば重心を最適調整ポイントとして算出する。そして、テスト結果統計処理部１０４は、例えば、このように算出された各テストパターンの最適調整ポイントを更に平均化して、信号毎に最適調整ポイントを算出する。ステップＳ２１７終了後、ステップＳ２１８に進む。
【０１１８】
（ステップＳ２１８）
次に、ＣＰＵ１００は、算出した信号毎の最適調整ポイントをメモリコントローラ２００ｂに出力する。ステップＳ２１８終了後、ステップＳ２１９に進む。
【０１１９】
（ステップＳ２１９）
次に、ＣＰＵ１００は、タイミング再調整のアプリケーションに基づき、タイミング再調整を行うＤＩＭＭを選択する。この場合、例えば、タイミング再調整のアプリケーションには、ＤＩＭＭを選択する順番として、最初に第１ＤＩＭＭ、次に第２ＤＩＭＭが記憶されている。このため、ＣＰＵ１００は、まず、第１ＤＩＭＭをタイミング再調整することを示す情報をメモリコントローラ２００ｂに出力する。
次に、プログラム実行部２０６は、ＣＰＵ１００が出力するタイミング再調整のアプリケーションに基づき、選択された第１ＤＩＭＭまたは第２ＤＩＭＭのタイミング再調整を行う。すなわち、プログラム実行部２０６は、第１ＤＩＭＭであるＤＩＭＭ３０１ａ、ＤＩＭＭ３０２ａ、ＤＩＭＭ３０３ａ、及びＤＩＭＭ３０４ａに対して同時にタイミング再調整を行う。ステップＳ２１９終了後、ステップＳ２２０に進む。
【０１２０】
（ステップＳ２２０）
プログラム実行部２０６は、選択されたＤＩＭＭのタイミング再調整が完了したことを示す情報をＣＰＵ１００に出力する。ステップＳ１２０終了後。ステップＳ１２１に進む。
【０１２１】
（ステップＳ２２１）
ＣＰＵ１００は、メモリコントローラ２００ｂが出力する、選択された第１ＤＩＭＭまたは第２ＤＩＭＭのタイミング再調整が完了したことを示す情報に基づき、全てのＤＩＭＭのタイミング再調整が完了したか否かを判別する。全てのＤＩＭＭのタイミング再調整が完了したと判別される場合（ステップＳ２２１；Ｙｅｓ）、タイミング再調整処理を終了する。全てのＤＩＭＭのタイミング再調整が完了していないと判別された場合（ステップＳ２２１；Ｎｏ）、ステップＳ２０７〜Ｓ２２１を、全てのＤＩＭＭのタイミング再調整が完了するまで繰り返し行う。
【０１２２】
（ステップＳ２２２）
全てのＤＩＭＭのタイミング再調整が完了していないと判別された場合（ステップＳ２２１；Ｎｏ）、ＣＰＵ１００は、タイミング再調整のアプリケーションに基づき、タイミング再調整を行うＤＩＭＭとして第２ＤＩＭＭを選択する。この場合、ＣＰＵ１００は、第２ＤＩＭＭを選択する。ステップＳ２２２終了後、ステップＳ２０８〜Ｓ２２１を繰り返す。
【０１２３】
以上のように、本実施形態では、メインメモリであるＤＩＭＭを第１ＤＩＭＭ（３０１ａ、３０２ａ、３０３ａ、３０４ａ）と第２ＤＩＭＭ（３０１ｂ、３０２ｂ、３０３ｂ、３０４ｂ）によるミラー構成にする。そして、実動作中に、メモリコントローラ２００ｂがＢＩＯＳ１２０に設定されているタイミング調整より多くのパターンを用いて、各種のタイミング再調整テストを第１ＤＩＭＭまたは第２ＤＩＭＭの４つのＤＩＭＭに対して同時にテストを行う。そして、メモリコントローラ２００ｂは、各種のテストで取得したシュムーデータを記憶する。そして、ＣＰＵ１００は、取得されたシュムーデータを用いて、各信号と参照電圧の最適ポイントを算出する。そして、メモリコントローラ２００ｂは、算出した最適ポイントを、実動作中に第１ＤＩＭＭまたは第２ＤＩＭＭに対してタイミング再調整する。この結果、実動作のアクセス・タイミングに合わせた多数のデータパターンを用いて、４つのＤＩＭＭに対して同時にタイミング再調整を行うことができる。
【０１２４】
なお、ステップＳ２０７〜Ｓ２２２のタイミング再調整処理は、実動作中に１度行ってもよく、または、実動作中に繰り返し行ってもよい。繰り返しタイミング再調整処理を行う場合、予め定められた時間間隔で行うようにしてもよく、あるいは、ランダムに行ってもよく、または、ＣＰＵ１００やメモリコントローラ２００ｂの処理負荷が少ないときに行ってもよい。
【０１２５】
なお、第１実施形態〜第３実施形態において、ＤＩＭＭが４つの例を説明したが、ＤＩＭＭの数はこれに限られず、４つ以下でも、４より多くてもよい。
また、本実施形態では、ＣＰＵ１００と、メモリコントローラ２００（または２００ａ、２００ｂ）が別の構成の例を説明したが、例えば、ＣＰＵ１００が、メモリコントローラ２００（または２００ａ、２００ｂ）を備える図１のような調整装置４０であってもよい。
また、タイミング再調整テストのアプリケーション、タイミング再調整のアプリケーション、データパターン、アクセスパターン等がＯＳ１４０に含まれている例を説明したが、例えば、イミング再調整テストのアプリケーション、タイミング再調整のアプリケーション、データパターン、アクセスパターン等をメモリコントローラ２００（または２００ａ、２００ｂ）の記憶部に予め記憶させておいてもよい。または、イミング再調整テストのアプリケーション、タイミング再調整のアプリケーション、データパターン、アクセスパターン等は、メモリコントローラ２００（または２００ａ、２００ｂ）に接続されている非図示の記憶部（例えばＲＯＭ）に予め記憶させておくようにしてもよい。
【０１２６】
また、本実施形態のシステムを、例えばＰＣ装置、携帯電話器、携帯情報端末、ゲーム機、携帯ゲーム機、デジタル家電などの演算装置、メモリコントローラ、メモリを備える装置に用いてもよい。また、メモリコントローラ１２０は、ＣＰＵ１００の中に備えられるようにしてもよい。また、メモリコントローラ１２０は、例えば、ＰＬＤ（プログラマブルロジックデバイス）やＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）や回路でハードウェアにより実現することも可能である。
【０１２７】
本願の技術思想は、発揮性メモリ及び発揮性メモリ並びにそれらの混在するメモリに関するシステムに適用できる。更に、図面で開示した各ブロック内の回路形式、各ステップの制御方法の詳細は、実施例が開示する回路形式及び詳細な制御方式には限られない。
また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせ、ないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得る、であろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１２８】
１、１ａ、１ｂ・・・システム、３０、３２、３４、３６、３８・・・半導体装置、
３１・・・メモリチップ、１２・・・演算部、２０・・・メモリコントローラ、
４０・・・調整装置、
１００・・・ＣＰＵ、１２０・・・ＢＩＯＳ
１４０・・・ＯＳ、１６０・・・ＨＤＤ、
２００、２００ａ、２００ｂ・・・メモリコントローラ、
３０１、３０１ａ、３０１ｂ、３０２、３０２ａ、３０２ｂ、３０３、３０３ａ、３０３ｂ、３０４、３０４ａ、３０４ｂ・・・ＤＩＭＭ、
３０５・・・テスト用ＤＩＭＭ、
２０２・・・テストプログラム制御部、２０４・・・テスト条件設定部、
２０６・・・プログラム実行部、２１２・・・メモリ出力制御部、
２１４・・・メモリ入力制御部、２２２・・・ＶｒｅｆＤＱ可変部、
２２４・・・ＶｒｅｆＣＡ可変部、２３１、２３２・・・ＣＬＫ調整部、
２４１、２４２・・・コマンド調整部、２５１、２５２・・・アドレス調整部、
２６１、２６２・・・ＤＱＳ調整部、２７１、２７２・・・ＤＱ調整部、
２３６・・・ＣＬＫ出力部、２３７・・・ＣＬＫ入力部、
２４６・・・コマンド出力部、２４７・・・コマンド入力部、
２５６・・・アドレス出力部、２５７・・・アドレス入力部、
２６６・・・ＤＱＳ出力部、２６７・・・ＤＱＳ入力部、
２７６・・・ＤＱ出力部、２７７・・・ＤＱ入力部、
２８０・・・テスト結果記憶部、２９０・・・テスト開始トリガ部
【図１】
2012194686.tif 000003
【図２】
2012194686.tif 000004
【図３】
2012194686.tif 000005
【図４】
2012194686.tif 000006
【図５】
2012194686.tif 000007
【図６】
2012194686.tif 000008
【図７】
2012194686.tif 000009
【図８】
2012194686.tif 000010
【図９】
2012194686.tif 000011
【図１０】
2012194686.tif 000012
【図１１】
2012194686.tif 000013
【図１２】
2012194686.tif 000014
【図１３】
2012194686.tif 000015
【図１４Ａ】
2012194686.tif 000016
【図１４Ｂ】
2012194686.tif 000017
【図１５】
2012194686.tif 000018
【図１６】
2012194686.tif 000019
【図１７】
2012194686.tif 000020
【図１８】
2012194686.tif 000021
【図１９】
2012194686.tif 000022
【図２０】
2012194686.tif 000023