JP2023056711A - 駆動能力調整方法及び情報処理装置 - Google Patents

駆動能力調整方法及び情報処理装置 Download PDF

Info

Publication number
JP2023056711A
JP2023056711A JP2021166082A JP2021166082A JP2023056711A JP 2023056711 A JP2023056711 A JP 2023056711A JP 2021166082 A JP2021166082 A JP 2021166082A JP 2021166082 A JP2021166082 A JP 2021166082A JP 2023056711 A JP2023056711 A JP 2023056711A
Authority
JP
Japan
Prior art keywords
eye pattern
memory
during
common
drive
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021166082A
Other languages
English (en)
Inventor
時延 飯田
Tokinobu Iida
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2021166082A priority Critical patent/JP2023056711A/ja
Publication of JP2023056711A publication Critical patent/JP2023056711A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Memory System (AREA)
  • Dc Digital Transmission (AREA)
  • Cable Transmission Systems, Equalization Of Radio And Reduction Of Echo (AREA)

Abstract

Figure 2023056711000001
【課題】プロセッサとメモリとの間の伝送特性を最適化する駆動能力調整方法及び情報処理装置を提供する。
【解決手段】プロセッサと複数のメモリとを接続する複数の伝送経路毎のリードとライトの組み合わせを表す複数種類のトレーニングパターンにしたがって信号伝送を行わせ、トレーニングパターン毎にメモリのそれぞれに対して複数のアイパターンを取得し、取得した各アイパターンについてストローブポイントを決定し、メモリ毎に決定したストローブポイントを中心としてアイパターンを重ね合わせて共通アイパターンを生成し、生成した共通アイパターンを基にプロセッサと複数のメモリとの間の通信における駆動能力を調整する。
【選択図】図13

Description

本発明は、駆動能力調整方法及び情報処理装置に関する。
近年のCPU(Central Processing Unit)-メモリ間のデータ通信環境は様々な要因により厳しい状態である。要因としては、伝送速度の高速化や低電圧化などがある。高速化や低電圧化によりデータ・バリッド・ウィンドウが縮小し、縮小したデータ・バリッド・ウィンドウを用いてデータ通信を行うことが要求されることで、データ通信環境が厳しくなる。
例えば、DDR(Double Data Rate)4のメモリの場合、シングルエンド方式のパラレルバスで1チャネルあたりの伝送速度は、2400MT/sを超える。さらに、大規模システムでは、基板の多層化によりノイズの影響を受けやすくなり、且つ、様々なメモリ搭載条件への対応が望まれることからデータ通信環境が厳しくなる。
従来、CPUとメモリとの間のシステム動作に必要な信号の駆動能力の決定は、一つのメモリコントローラのみ動作させ、リード動作とライト動作の伝送特性を別々に評価し、固定的な駆動能力を事前評価することで行われていた。
例えば、CPUとメモリシステム制御ユニットを有する構成を例に説明する。CPUは、複数のメモリコントローラ及びI/O(Input/Output)回路を有する。メモリコントローラは、I/O回路とメモリとの間の信号の送受信を制御する。システム制御ユニットは、装置全体の監視及び制御を行う。また、システム制御ユニットは、CPUとも接続されており、メモリコントローラを制御する。
CPUとメモリとの間で通信を行う場合、次の2つの要素が決定される。1つは、CPUとメモリとの間を接続するメモリバスの信号の強さである駆動能力である。駆動能力は、信号を駆動する側の回路の抵抗値で表され、小さいほど駆動能力が高いことを表す。もう1つは、送信された信号を受信側で0/1判定する際の判定値となる「ストローブポイント」である。ストローブポイントとは、信号を判定する際の信号波形に対する電圧及び時間方向の位置を表す設定情報である。これらの駆動能力及びストローブポイントはシステム制御ユニットによる処理で決定される。
従来は、これら「駆動能力」及び「ストローブポイント」が以下のようにして決定されてきた。駆動能力に関しては、情報処理装置の出荷前に事前評価が行われ、CPUとメモリとの間の通信において信号を0/1判定することが可能な領域の大きさを表すアイパターンが測定される。そして、アイパターンの最も領域が大きくなる条件の駆動能力が、その情報処理装置における標準の固定設定値として決定される。一般的に、一つのメモリバスに接続するメモリ数が増えるほどメモリバスの負荷が増え、アイパターンが狭くなる。そのため、様々なメモリ構成に対応できるように、駆動能力は、最大負荷となる最大数のメモリ構成にも対応できる強めの設定値とされる。このため、従来の方法で決定された駆動能力は、実際には最大負荷構成に最適な設定となる。
次に、ストローブポイントについて説明する。ストローブポイントは、装置起動時にシステム制御ユニットが行うCPUとメモリとの間のトレーニングで自動調整によって決定される。まず、システム制御ユニットは、アイパターンを測定する。その後、システム制御ユニットは、より安定して0/1判別できるようにアイパターンの電圧方向、時間方向の両方に対して中央となる値にストローブポイントを設定する。このため、ストローブポイントは、様々なメモリ構成に対して適した設定となる。これら設定値はCPUが複数のメモリコントローラ及びメモリバスを持つ場合には、評価、調整対象である単一のメモリコントローラ及びメモリのみ動作させて測定したアイパターンを元に決定される。
ただし、従来の駆動能力やストローブポイントの設定方法では、決定された駆動能力は各種ノイズが少ない状態での理想的な伝送特性に対応した駆動能力である。そのため、駆動能力の設定値はどのようなメモリ搭載条件にも対応できるように設定される。
なお、伝送特性に関する技術として、併走するパラレル伝送路の組み合わせに応じてアイパターンを評価し、伝搬遅延に応じてアイパターンを広げ、そのアイパターンの中央付近にストローブのクロスポイントが来るように設計する技術がある。また、バスシステムのリセット期間の動作状態やトレーニング期間の動作状態で出力インピーダンスをハイにして、抵抗素子やイコライザを挿入してアイを開口させる技術がある。
特開2011-010118号公報 国際公開第2017/061247号
しかしながら、OS(Operating System)起動後のシステム動作では複数のメモリコントローラが同一のタイミングでリード動作とライト動作をする場合があり、各種ノイズの影響で伝送特性が悪化することが考えられる。そのため、従来の駆動能力の決定方法では、システム動作での伝送特性を最適化する駆動能力は評価時とは異なったものになっていた。また、駆動能力だけでなく、システム動作開始前に自動で最適値に調整されるデータ取込みのタイミングであるストローブポイントの調整も、駆動能力の決定時と同様に各種ノイズが少ない条件で行われるため最適ではないことがあり、エラー発生の原因となっていた。したがって、従来の駆動能力やストローブポイントの決定方法では、伝送特性を最適化することは困難であった。
また、パラレル伝送路の組み合わせに応じたアイパターンを伝搬遅延に応じて広げ、中央付近にストローブポイントを設定する技術では、伝送遅延を保証することはできるが、CPU-メモリ間での伝送特性の調整については考慮されていない。そのため、CPU-メモリ間のトレーニングに適用することは難しく、CPU-メモリ間の伝送特定を最適化することは困難である。また、トレーニング期間の動作状態をリセット期間の動作状態に合わせてアイパターンを測定し、抵抗素子やイコライザを挿入してアイを開口させる技術では、様々なアクセスパターンに対するアイパターンが得られない。そのため、実際の動作時におけるCPUとメモリとの間の伝送特性を最適化することは困難である。
開示の技術は、上記に鑑みてなされたものであって、プロセッサとメモリとの間の伝送特性を最適化する駆動能力調整方法及び情報処理装置を提供することを目的とする。
本願の開示するメモリの駆動能力調整方法の一つの態様において、プロセッサと複数のメモリとを接続する複数の伝送経路毎のリードとライトの組み合わせを表す複数種類のトレーニングパターンにしたがって信号伝送を行わせ、前記トレーニングパターン毎に前記メモリのそれぞれに対して複数のアイパターンを取得し、取得した各前記アイパターンについてストローブポイントを決定し、前記メモリ毎に決定したストローブポイントを中心として前記アイパターンを重ね合わせて共通アイパターンを生成し、生成した前記共通アイパターンを基にプロセッサと複数のメモリとの間の通信における駆動能力を調整する。
1つの側面では、本発明は、プロセッサとメモリとの間の伝送特性を最適化することができる。
図1は、実施例に係る情報処理システムのハードウェア構成の一例を示す図である。 図2は、実施例に係るCPUとメモリとの間の接続を示す模式図である。 図3は、リード動作時における特定のデータ信号のアイパターンを表す図である。 図4は、ライト動作時における送信側のCPU及びメモリの構成を示す回路図である。 図5は、事前評価で駆動能力の設定を変えて測定したトレーニング時のアイパターンの一例の図である。 図6は、実施例に係るシステム制御ユニットのブロック図である。 図7は、2つのメモリコントローラをいずれもリード動作させた場合の図である。 図8は、2つのメモリコントローラをいずれもライト動作させた場合の図である。 図9は、一方のメモリコントローラをリード動作させて他方のメモリコントローラをライト動作させた場合の図である。 図10は、一方のメモリコントローラをライト動作させて他方のメモリコントローラをリード動作させた場合の図である。 図11は、ライト動作時の共通アイパターンの生成を説明するための図である。 図12は、複数のデータ信号のアイパターンを重ね合わせて得られる共通アイパターンの一例を示す図である。 図13は、駆動能力の調整処理の一例を説明するための図である。 図14は、実施例に係る駆動能力調整方法による駆動能力の調整処理のフローチャートである。 図15は、4種類のトレーニングパターンを用いたアイパターンの測定処理のフローチャートである。 図16は、駆動能力を弱める処理のフローチャートである。 図17は、駆動能力を強める処理のフローチャートである。 図18は、各メモリを単独で動作させるトレーニングにより駆動能力を調整した場合の結果の一例を示す図である。 図19は、実施例に係る駆動能力調整方法を用いた場合の結果の一例を示す図である。 図20は、各メモリを単独で動作させるトレーニングにより駆動能力を調整した場合の結果の他の例を示す図である。 図21は、実施例に係る駆動能力調整方法を用いた場合の結果の他の例を示す図である。
以下に、本願の開示する駆動能力調整方法及び情報処理装置の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する駆動能力調整方法及び情報処理装置が限定されるものではない。
図1は、実施例に係る情報処理システムのハードウェア構成の一例を示す図である。情報処理システム1は、情報処理装置10、記憶装置20、入力装置30及び出力装置40を有する。
従来のCPU100とメモリ200との間の伝送特性の調整方法では、駆動能力が固定設定値であり信号の振幅が大きくなる強めの設定とされることが多かった。そのため、メモリ200が最大負荷時以外の構成の場合には、ライト動作時とリード動作時のアイパターンのサイズが非対称となり、通信時の安定性が低下するおそれがある。なおこの非対称性はメモリ200の搭載場所や製造上発生する個体のばらつきでも発生する。このように、従来のメモリ駆動能力の調整方法では様々なメモリ構成に対して最適な設定をとることが困難である。また、従来の調整方法では調整対象のメモリコントローラしか動作させないため、複数のメモリコントローラが同時に動作するシステム動作時には、様々なノイズの影響でアイパターンが縮小するため、システム動作時の最適な設定値とならない。このように、事前評価や装置起動後のトレーニングではOS起動後のシステム動作時に最適な設定値とすることは困難である。
図2は、実施例に係るCPUとメモリとの間の接続を示す模式図である。図2では、メモリ200として、メモリバス301に接続されるメモリ201~203及びメモリバス302に接続されるメモリ211~213が存在する場合の構成を表す。ここでは、メモリ201~203及び211~213のそれぞれを区別しない場合、メモリ200と呼ぶ。次に、CPU100とメモリ200との間の信号の伝送特性に影響を及ぼす様々なノイズの中から主要な3つのノイズについて説明する。メモリバス301及び302が、「プロセッサと複数のメモリとを接続する複数の伝送経路」の一例にあたる。
1つ目のノイズは、隣接の信号間で発生するクロストークノイズである。メモリバス301や302といった同一メモリバス内ではパラレルにデータ信号が走っているためにクロストークノイズが発生する。さらに、複数のメモリバス構成の場合、メモリバス301とメモリバス302との間でもリード動作やライト動作が同一タイミングで発生した場合などにクロストークノイズが発生する。CPU100の送信端であるI/O制御部113ではライト波形の振幅が大きく、CPU100の他の受信端であるI/O制御部114のリード波形への影響が大きく、これらが波形を歪ませる原因となる。またメモリ200の受信端ではメモリ200から送信されるリード波形の振幅が大きく、他のメモリ200が受信するライト波形への影響が大きく、こちらも同様に波形を歪ませる原因となる。波形が大きく歪むと伝送エラーの原因となる。
また、2つ目のノイズとして、図2のようにメモリコントローラ111及び112のそれぞれに複数のメモリ201~203及び211~213が搭載される場合や搭載されるメモリ200が異なるランクの場合に発生する反射ノイズがある。これは伝送路内のインピーダンスの整合が取れていないことが原因である。このような反射ノイズも波形が歪む原因となる。
3つ目のノイズとして、メモリ200がパラレルバスでシングルエンドの伝送方式であることなどを原因として発生する同時スイッチングノイズがある。同時スイッチングノイズは、同一の電源及びグランド内でトランジスタが同時にオン、オフする際に発生する。同時スイッチングノイズが発生すると、電源電圧やグランド電圧が揺れることにより回路内のジッタの増加し、タイミングマージンが減る。
これらのノイズは、信号の駆動能力と相関があり、駆動能力を弱めることで改善することができる。しかし、弱め過ぎると本来の通信が出来なくなるため、最適な駆動能力を決定することが安定した通信を行うために重要となっている。
次に、CPU100とメモリ200との間のリード及びライトのトレーニングを行う際に測定するアイパターンについて説明する。リードトレーニング時のCPU100のI/O制御部113及び114における各データ信号の受信可否を表す波形であるアイパターンを用いて説明する。図3は、リード動作時における特定のデータ信号のアイパターンを表す図である。図3における、横軸は時間を表し、縦軸は電圧を表す。ここでは、時間軸における1単位をタップと呼び、時間軸はCPU100のI/O制御部113及び114におけるタップ値を表す。また、ここでは、電圧軸における1単位をコードと呼び、電圧軸はI/O制御部113及び114における信号を判定する閾値電圧のコード値を表す。以下では、アイパターンを示す図において紙面に向かった場合の上下左右を用いてアイパターンに対する方向を表す。図3のアイパターン310は、ストローブポイント311から上に7コードのマージンを有し、下に6コードのマージンを有し、左に7タップのマージンを有し、右に8タップのマージンを有する。マージンとは、信号の伝送でエラーが発生しないための伝送余裕にあたる。
従来であれば、システム制御ユニット12は、メモリコントローラ111に設定の変更を指示することで、時間軸及び電圧軸で表されるディレイタップ及びコードといった2つのパラメータの設定を変更する。そして、システム制御ユニット12は、I/O制御部113が受信した疑似ランダムの2値信号列であるPRBS(Pseudo Random Binary Sequence)データパターンとメモリコントローラ111が内部で生成したPRBSパターンとを比較する。比較結果を用いて、システム制御ユニット12は、I/O制御部113が受信したPRBSデータパターンの正誤を判定する。受信したデータパターンが期待するパターンと一致した場合、システム制御ユニット12は、エラーが無いと判定する。システム制御ユニット12は、その判定結果を保持し、2つのパラメータを広範囲に変更して各点でのエラーの有無を調べることでアイパターンを得る。図3における数値の0はエラー無しで伝送可能であることを表し、数値の1はエラー有りで伝送不可であることを表す。以下では、アイパターンにおけるエラーなしで伝送可能である領域を、「アイパターンの開口」と呼ぶ場合がある。
従来は、システム制御ユニット12が行うこのトレーニングによる調整でアイパターンの中心にストローブポイントが決定されていた。例えば、図3この場合のアイパターン310の開口はストローブポイント311の中心から上下がそれぞれ7コード及び6コードであり、左右がそれぞれ7タップ及び8タップである。これより、アイパターン310では下側のマージンが相対的に少ないことがわかる。なおこれらのタップ数やコード数の算出もシステム制御ユニット12が行う。
ここで、ライトトレーニング時のメモリ200内の受信可否を表すアイパターンを考える。メモリ200のアイパターンの時間軸は、CPU100のI/O制御部113や114の送信時のディレイを変えることで設定できる。また、メモリ200のアイパターンの電圧軸の閾値電圧は、メモリコントローラ112によるメモリ200の制御にしたがって設定が変更される。このトレーニングにおける信号の伝送可否は、メモリ200が受信した信号を折り返えしてCPU100に受信させて判定させる。ただし、メモリ200のデータビット毎にアイパターンは取得される。例えば、メモリバス301及び302のバス幅が72ビットの場合、メモリバス301及び302のバス幅に応じたデータビット数分(例えば、72個)のアイパターンがメモリ200毎に取得される。
次に、従来の事前評価による駆動能力の決定方法について説明する。図4は、ライト動作時における送信側のCPU及びメモリの構成を示す回路図である。ここでは、CPU100はI/Oインタフェース150を有し、メモリ200はI/Oインタフェース220を有する。送信側となるCPU100のI/Oインタフェース150には可変抵抗が信号線に対して電源側、グランド側に接続され、信号をHレベルで駆動する際はグランド側の接続が切れて、電源側に接続される。一方の受信側となるメモリ200のI/Oインタフェース220では電源側に可変抵抗が接続される。可変抵抗は34Ωと48Ωとのいずれかに設定が可能である。抵抗値である設定値による駆動能力と振幅の関係は、設定値が小さい程、駆動能力は強く振幅も大きい。一方、設定値が大きい程、駆動能力は弱く振幅も小さい。この可変抵抗の値により、CPU100の駆動能力が示される。
従来、駆動能力の設定は事前評価で様々なメモリ構成に対して設定値を変えて、トレーニング時のライトのアイパターンを見て決められてきた。アイパターンが開いている程、伝送品質が良くエラーの発生確率が低い。駆動能力が強すぎるとライトの振幅は大きくなりアイパターンも広がるが、OS起動後のシステム動作時では駆動能力が強すぎるため各種ノイズが増加してリード動作時にエラーが発生してしまう。その場合は例えトレーニング時のライトのアイパターンが開いていても、その設定値は使用することは難しい。
たとえば、図5は、事前評価で駆動能力の設定を変えて測定したトレーニング時のアイパターンの一例の図である。紙面に向かって左からそれぞれ駆動能力を40Ω、34Ω、30Ωに設定した場合のアイパターンを表す。駆動能力が40Ωの設定ではライト動作時のアイパターンの開口が小さい。また、駆動能力が30Ωの設定ではライトのアイパターンの開口が大きいが、この設定ではOS起動後のシステム動作時にリード動作でエラーが発生した。そこで、この場合の設定はリード動作でもエラーが発生しない34Ω設定とされる。
次に、従来のトレーニングによるリード及びライト波形のストローブポイントの測定処理について説明する。まず事前の評価により決定された駆動能力が設定される。次に、トレーニング対象となるメモリバス301がメモリコントローラ111によりリード動作に設定され、メモリ201~203のアイパターンが測定され、ストローブポイントが決定される。この時、メモリバス302は停止させる。その後、メモリバス302のアイパターンが測定され、ストローブポイントが決定される。次に、メモリコントローラ111によりメモリバス301がライト動作に設定され、メモリ201~203のアイパターンが測定され、ストローブポイントが決定される。その後、メモリバス302のライト動作時のアイパターンが測定され、ストローブポイントが決定される。トレーニング終了後、OS起動後のシステム動作時では複数のメモリコントローラ111及び112が同時に動き、同一タイミングでリード動作とライト動作が発生する。この時に発生する様々なノイズによりアイパターンはリード動作時及びライト動作時ともに縮小する。
次に、測定したアイパターンからストローブポイントを求める方法について説明する。このストローブポイントの決定はシステム制御ユニット12により測定データをもとに行われる。まず、アイパターンが測定される。次に、伝送可能領域であるアイパターン内の各ポイントで伝送可能な上下の境界までのコード余裕数であるマージンがそれぞれ求められる。次に、伝送可能な左右の境界までのディレイタップ余裕数であるマージンが求められる。次に、時間軸で表されるディレイを変更して、上下左右の境界までのマージンの算出が繰り返えされる。続いて、閾値電圧のコードを変更して、同様にマージンの算出が繰り返えされる。これにより、アイパターン内の各点における上下のコード余裕数、左右のタップ余裕数が求められる。次に、伝送可能領域内の各ポイントで最小となるタップ数もしくはコード数を求める。以上の処理が伝送可能領域内の全ポイントに対して行われる。次に、求められた伝送可能領域内の余裕数であるマージンが最大となるポイントが求められ、そのポイントがストローブポイントと決定されて、処理が終了する。ストローブポイントも、メモリ200のデータビット毎に決定される。例えば、メモリバス301及び302のバス幅がエラー訂正符号などを加えた72ビットの場合、72個のデータビット毎にストローブポイントが決定される。
ここで、システム動作時のエラー原因となるストローブポイントのずれについて説明する。例としてリードのアイパターンが縮小した場合と歪な形状となった場合の2つのアイパターンについて考える。ライト動作時のアイパターンを広げるためには駆動能力を上げることになるが、これはノイズを増大させリードのアイパターンが縮小する要因となる。例えば、CPU100の駆動能力が強すぎる場合、システム動作時のライトのアイパターンは拡大するが、リードのアイパターンがノイズにより縮小してしまう。この場合はリードのアイパターンは縮小したが、ストローブポイントがアイパターンの中心からずれることはない。また、駆動能力が強すぎてリードのアイパターンが縮小し、かつシステム動作時のリードのアイパターンがノイズにより歪な形状となる場合がある。トレーニング時のアイパターンは通常の円形もしくは楕円形であり、ストローブポイントは、アイパターンの中心に設定されるが、その後のシステム動作時にはアイパターンの形状が変わり、ストローブポイントがアイパターンの中心から外れるおそれがある。
以上のことから、従来の伝送特性の調整方法には2つの問題点が存在する。1つは装置起動後のトレーニング時とOS起動後のシステム動作時ではノイズの差がありアイパターンの開口が異なることである。大規模システムなどの複数メモリバスを搭載している場合ではシステム動作中にリード動作とライト動作が複数のメモリコントローラ111及び112で同時に発生する場合がある。そのため、メモリコントローラ111及び112毎に個別に調整したトレーニング時とシステム動作時のアイパターンの開口には差が生じる。もう1つは設定した駆動能力が強すぎることによりリード動作時とライト動作時のアイパターンがアンバランスとなることである。つまり一方のアイパターンが縮小してしまう。例えば、CPU駆動能力が強すぎるとライト動作時のアイパターンは開くが、ノイズが大きくなりリード動作時のアイパターンが縮小する。ストローブポイントの決定はトレーニング時のアイパターンの形状から決定しているため、これまでに説明したようにシステム動作時の様々なノイズにより歪な形状となった場合、ストローブポイントが最適とならないおそれがある。通常の円形のアイパターンの場合、ストローブポイントがアイパターンの中心になるが、歪な形状のアイパターンの場合、例えば、下側の伝送余裕が減るなどの不都合が発生するおそれがある。例えば、ストローブポイントが伝送可能領域の境界にある場合、エラー発生の原因となってしまう。
そこで、本実施例に係る駆動能力調整方法は、各メモリ200に最適な駆動能力を設定することで伝送特性を改善し、さらにシステム動作と同等の状態でトレーニングをすることで、これまでより精度の高いストローブポイントの調整を可能とする。以下に、本実施例に係る駆動能力調整方法によるアイパターン及びストローブポイントの決定手順について説明する。
図1に示すように、情報処理装置10は、メインボード11、システム制御ユニット12を有する。また、情報処理装置10は、PCI(Peripheral Component Interconnect)インタフェース13、LAN(Local Area Network)インタフェース14及びSATA(Serial Advanced Technology Attachment)インタフェース15を有する。さらに、情報処理装置10は、電源ユニット16及び冷却ファン17を有する。
メインボード11には、CPU100及びメモリ200が搭載される。本実施例では、CPU100とメモリ200とは、図2に示すように接続される。
システム制御ユニット12は、SDRAM(Synchronous Dynamic Random Access Memory)121、MPU(Micro Processor Unit)122及びSD(登録商標)カード123を有する。MPU122は、演算処理を行い、CPU100への命令の出力及びデータの送受信を行うことでCPU100を制御する。SDRAM121は、MPU122に使用される主記憶装置である。SDカード123は、MPU122に使用される主記憶装置である。システム制御ユニット120による処理の実行は、実際にはMPU122により行われるが、以下の説明では、システム制御ユニット12により実行されるものとして説明する。
PCIインタフェース13は、PCIデバイスが接続され、接続されたPCIデバイスとCPU100との間のデータの送受信を中継する。LANインタフェース14は、ネットワークに接続され、他の情報処理装置とCPU100との間の通信を中継する。SATAインタフェース15は、SATA規格に準拠したデバイスが接続され、接続されたデバイスとCPU100との間のデータの送受信を中継する。
電源ユニット16は、メインボード11、システム制御ユニット12、PCIインタフェース13、LANインタフェース14、SATAインタフェース15及び冷却ファン17などに駆動のための電力供給を行う。冷却ファン17は、メインボード11及びシステム制御ユニット12などに送風して冷却する。
また、CPU100には、バスを介して、記憶装置20、入力装置30及び出力装置40が接続される。記憶装置20は、補助記憶装置であるHDD(Hard Disk Drive)21を有する。HDD21には、各種プログラムやデータなどが格納される。HDD21に格納された各種プログラムは、CPU100により読み出されて、HDD21に格納されたデータなどを用いて実行される。入力装置30は、例えば、キーボード31を含む。他にも、入力装置30は、マウスなどを含んでもよい。操作者は、入力装置30を用いて命令やデータのCPU100への入力を行う。出力装置40は、ディスプレイ41を含む。操作者は、ディスプレイ41に表示された画像やメッセージなどを確認して、入力装置30を用いた入力を行う。
メインボード11には、CPU100及びメモリ200が搭載される。本実施例では、CPU100とメモリ200とは、図2に示すように接続される。
本実施例に係るCPU100は、メモリコントローラ111及び112、並びに、I/O制御部113及び114を有する。メモリコントローラ111は、I/O制御部113を介して、メモリバス301に接続される。メモリバス301には、メモリ201~203が接続される。メモリコントローラ111は、メモリバス301を介してメモリ201~203とデータの送受信を行う。
CPU100は、システム制御ユニット12により決定された駆動能力にしたがって駆動する。そして、CPU100は、HDD21に格納された各種プログラムを読み出してメモリ201~203に展開して実行する。
システム制御ユニット12は、情報処理装置10の起動時にCPU100とメモリ200との間の通信のトレーニングを行う際に以下の処理を実行して、ストローブポイント及びCPU100の駆動能力を決定する。図6は、実施例に係るシステム制御ユニットのブロック図である。システム制御ユニット12は、アイパターン測定部401、ストローブポイント決定部402、共通アイパターン生成部403及び駆動能力調整部404を有する。
アイパターン測定部401は、CPU100とメモリ201~203及び211~213との間で、メモリバス301及び302を用いて通信を行わせ、メモリ200のデータビット毎にそれぞれのアイパターンを取得する。例えば、メモリバス301及び302のバス幅が誤り訂正符号なども含めて72ビットであり、データビットの数が72個の場合、アイパターン測定部401は、メモリ200毎に72個のアイパターンをリード動作時及びライト動作時のそれぞれについて取得する。以下では、メモリ200のデータビットの数が72である場合で説明する。
アイパターン測定部401は、以下に説明する4つのパターンでメモリコントローラ111及び112を動作させる。図7は、2つのメモリコントローラをいずれもリード動作させた場合の図である。また、図8は、2つのメモリコントローラをいずれもライト動作させた場合の図である。また、図9は、一方のメモリコントローラをリード動作させて他方のメモリコントローラをライト動作させた場合の図である。図10は、一方のメモリコントローラをライト動作させて他方のメモリコントローラをリード動作させた場合の図である。アイパターン測定部401は、図7~10に示す各トレーニングパターンでトレーニングを行う。これにより、システム動作と同等の動作環境とすることができ、この動作環境でストローブポイントを調整することで、システム動作時に適した伝送特性の調整が可能となる。
アイパターン測定部401は、図7~10の各トレーニングパターンを用いて測定したメモリ200の72個のデータビット毎のそれぞれのデータ信号のアイパターンを取得する。アイパターン測定部401は、データビット毎のアイパターンを取得するため、複数のデータ信号を用いて、メモリ201~203及び211~213のそれぞれについて複数のアイパターンを取得する。ここでは、データビットの数が72であるので、アイパターン測定部401は、データ信号#0~#71を用いて、メモリ201~203及び211~213のそれぞれについて、4つのトレーニングパターンそれぞれについて72個のアイパターンを取得する。
具体的には以下のような組み合わせでアイパターンの測定が行われる。メモリコントローラ111とメモリコントローラ112とのリードとライトの組み合わせによるアイパターンの測定について説明する。
メモリコントローラ111及び112はリードの場合はCPU100側のアイパターンが測定されるため、メモリ201~203及び211~213側のアイパターンは測定されない。メモリコントローラ111と112とのリードとライトの組み合わせとして、「リード、リード」、「リード、ライト」「ライト、リード」「ライト、ライト」の4つのトレーニングパターンが存在する。そして、CPU100側のリードのアイパターンはメモリコントローラ111では「リード、リード」及び「リード、ライト」の生み合わせの2通りが測定される。また、メモリコントローラ112では「リード、リード」及び「ライト、リード」の組み合わせの2通りが測定される。
これに対して、ライトの場合はメモリ201~203及び211~213側のアイパターンが測定される。そのため、上記4つのトレーニングパターンに対して、メモリ201~203では「ライト、リード」及び「ライト、ライト」の生み合わせの2通りが測定される。また、メモリ211~213では「ライト、リード」及び「ライト、ライト」の生み合わせの2通りが測定される。
その後、アイパターン測定部401は、測定したデータビット毎のアイパターンをストローブポイント決定部402へ出力する。
ストローブポイント決定部402は、4つのトレーニングパターンそれぞれについてのデータビット毎のアイパターンの入力をアイパターン測定部401から受ける。次に、システム制御ユニット12は、各アイパターンについてストローブポイントを求める。
具体的には、特定のアイパターンを例に説明すると、ストローブポイント決定部402は、アイパターン内の各ポイントで伝送可能な上下の境界までのコード余裕数であるマージンをそれぞれ求める。次に、ストローブポイント決定部402は、伝送可能な左右の境界までのディレイタップ余裕数であるマージンを求める。次に、ストローブポイント決定部402は、時間軸で表されるディレイを変更して、上下左右の境界までのマージンの算出を繰り返えす。続いて、ストローブポイント決定部402は、閾値電圧のコードを変更して、同様にマージンの算出を繰り返えす。これにより、ストローブポイント決定部402は、アイパターン内の各点における上下のコード余裕数、左右のタップ余裕数を求める。次に、ストローブポイント決定部402は、伝送可能領域内の各ポイントで最小となるタップ数もしくはコード数を、伝送可能領域内の全ポイントについて求める。次に、ストローブポイント決定部402は、求めた伝送可能領域内の最小のマージンが、最も大きくなるポイントをそのアイパターンにおけるストローブポイントと決定する。その後、ストローブポイント決定部402は、4つのトレーニングパターンに対応するメモリ200のデータビット毎のアイパターンの情報及び各アイパターンにおけるストローブポイントの情報を共通アイパターン生成部403へ出力する。
また、ストローブポイント決定部402は、メモリ200のデータビット毎のストローブポイントの情報をCPU100へ通知する。ここで、データビット毎のストローブポイントはトレーニングパターン毎に4つ決定される。そこで、ストローブポイント決定部402は、4つのストローブポイントを用いて、それぞれのデータビットにおけるストローブポイントを決定する。例えば、ストローブポイント決定部402は、それぞれのデータビットについて、4つのストローブポイントのうち、4つのアイパターンにおいて最小のマージンが最も大きくなるストローブポイントを、そのデータビットにおけるストローブポイントと決定する。そして、ストローブポイント決定部402は、決定した各データビットにおけるストローブポイントの情報をCPU100へ通知する。
ここで、以下に説明するように、システム制御ユニット12は、ストローブポイントを基に共通アイパターンを生成して駆動能力を決定するが、実際のシステム動作時に使用するストローブポイントとしては、この共通アイパターンのストローブポイントは用いない。ストローブポイント決定部402がCPU100に通知したデータビット毎に決定したストローブポイントが、実際のシステム動作時にストローブポイントとして使用される。
共通アイパターン生成部403は、4つのトレーニングパターンに対応するメモリ200のデータビット毎のアイパターンの情報及び各アイパターンにおけるストローブポイントの情報の入力をストローブポイント決定部402から受ける。次に、共通アイパターン生成部403は、取得したデータビット毎のアイパターンから、メモリ200毎且つリード及びライト毎に、CPU100の駆動能力の決定に用いる共通アイパターンを生成する。以下に、CPU100の駆動能力の決定に用いる共通アイパターンの生成について詳細に説明する。従来は、ストローブポイントを各データ信号の2値判定に利用していたが、本実施形態に係る駆動能力調整方法では、ストローブポイントを駆動能力の調整にも利用する。
共通アイパターン生成部403は、メモリ200毎に、各トレーニングパターンに対応するリード動作時のアイパターンそれぞれを、ストローブポイントを中心にして重ね合わせる。また、共通アイパターン生成部403は、メモリ200毎に、各トレーニングパターンに対応するライト動作時のアイパターンそれぞれを、ストローブポイントを中心にして重ね合わせる。すなわち、共通アイパターン生成部403は、アイパターンの中心を揃えるためにストローブポイントを使用する。アイパターンを重ね合わせる理由としては、1つのデータ信号毎に駆動能力を調整すると時間がかかることに加えて、メモリ200内ではデータ信号の特性がほぼ同一であるため重ね合わせても取得されるデータ信号の特性が損なわれずに使用できるためである。
図11は、ライト動作時の共通アイパターンの生成を説明するための図である。例えば、図11に示すように、共通アイパターン生成部403は、アイパターン501~508に例示されるような、メモリ213においてデータ信号#0~#71を使用したライト動作時のデータビット毎のアイパターンを取得する。次に、共通アイパターン生成部403は、アイパターン501~508を含む取得した全てのライト動作時のアイパターンをストローブポイントを中心として重ね合わせてメモリ213における共通アイパターン510を生成する。
図12は、複数のデータ信号のアイパターンを重ね合わせて得られる共通アイパターンの一例を示す図である。例えば、ライト動作時の共通アイパターンを生成する場合、共通アイパターン生成部403は、図12に示すように、特定のメモリ200について、アイパターン521及び522を含むライト動作時のデータビット毎の全てのアイパターンを重ね合わせる。そして、共通アイパターン生成部403は、アイパターン521及び522を含むライト動作時のデータビット毎の全てのアイパターンの共通の領域をアイパターンとする共通アイパターン523を生成する。
また、共通アイパターン生成部403は、図11に示すように、メモリ213と同様に、メモリ211についてライト動作時の共通アイパターン511を生成し、メモリ212についてライト動作時の共通アイパターン512を生成する。また、共通アイパターン生成部403は、メモリ211~213について、リード動作時の共通アイパターンも生成する。さらに、共通アイパターン生成部403は、メモリ201~203についても、ライト動作時の共通アイパターン及びリード動作時の共通アイパターンを生成する。すなわち、共通アイパターン生成部403は、メモリ200毎にライト動作時の共通アイパターン及びリード動作時の共通アイパターンを生成する。その後、共通アイパターン生成部403は、生成したメモリ200毎のライト動作時の共通アイパターン及びリード動作時の共通アイパターンを駆動能力調整部404へ出力する。
駆動能力調整部404は、起動時には駆動能力の初期設定値を通知して、CPU100の駆動能力を設定する。例えば、駆動能力の初期設定値は、40Ωとすることができる。
その後、駆動能力調整部404は、メモリ200毎のライト動作時の共通アイパターン及びリード動作時の共通アイパターンの入力を共通アイパターン生成部403から受ける。次に、駆動能力調整部404は、各メモリ200のリード動作時の共通アイパターンとライト動作時の共通アイパターンとの大小を比較して、バランスが取れるようにCPU100の駆動能力を変更する。ここで、ライト動作時の共通アイパターンは、CPU100の駆動能力に比例して大きくなる。これに対して、CPU100の駆動能力の影響によりリード動作時の共通アイパターンが小さいくなるため、CPU100の駆動能力を小さくすることでリード動作時の共通アイパターンを大きくすることができる。
具体的には、駆動能力調整部404は、駆動能力の段階毎の変化量を予め保持する。そして、駆動能力調整部404は、各メモリ200のリード動作時の共通アイパターンとライト動作時の共通アイパターンとを比較して、以下の処理をメモリ200毎に行う。例えば、ライト動作時の共通アイパターンの方が大きく開いている場合は、駆動能力調整部404は、CPU100の駆動能力の設定を1段弱める。逆に、ライト動作時の共通アイパターンが小さく閉じている場合は、駆動能力調整部404は、CPU100の駆動能力の設定を1段強める。駆動能力調整部404は、搭載された全てのメモリ200についてCPU100の駆動能力の調整を行う。
メモリ200毎のCPU100の駆動能力の変更後、駆動能力調整部404は、変更後の駆動能力をCPU100に設定する。また、駆動能力調整部404は、駆動能力の変更をアイパターン測定部401に通知し、駆動能力の再調整を指示する。これにより、アイパターン測定部401、ストローブポイント決定部402及び共通アイパターン生成部403により変更後の駆動能力でCPU100を動作させた場合のメモリ200毎のライト動作時の共通アイパターン及びリード動作時の共通アイパターンが生成される。駆動能力調整部404は、変更後の駆動能力でCPU100を動作させた場合のメモリ200毎のライト動作時の共通アイパターン及びリード動作時の共通アイパターンを用いてバランスが取れるようにCPU100の駆動能力の変更を再度行う。
駆動能力調整部404は、全てのメモリ200のライト動作時とリード動作時との共通アイパターンの大きさのバランスが取れる状態になるまでCPU100の駆動能力の変更を繰り返す。そして、全てのメモリ200のライト動作時とリード動作時との共通アイパターンの大きさのバランスが取れる状態になった場合、駆動能力調整部404は、その時点の駆動能力をCPU100の駆動能力として決定する。その後、駆動能力調整部404は、CPU100に決定した駆動能力を設定して、実際の動作時にはCPU100をその決定した駆動能力で動作させる。
図13は、駆動能力の調整処理の一例を説明するための図である。表601は、複数のメモリコントローラ111及び112と複数のメモリ201~203及び211~213を搭載した場合の駆動能力を初期設定値である40Ωとした場合のリード動作時及びライト動作時の共通アイパターンを表す。ここでは、説明の都合上、共通アイパターンの開口は大中小の3段階に簡略的に分けて説明するが、実際は共通アイパターンの開口はタイミングのタップ数と閾値電圧のコード数で表すことができる。
表601では、一部のメモリ200でリード動作時とライト動作時の共通アイパターンのバランスが取れていないことがわかる。例えば、メモリコントローラ111のメモリ201では駆動能力が40Ωの場合、ライト動作時の共通アイパターンは十分に開いているが、リード動作時の共通アイパターンはやや小さい。そこで、駆動能力調整部404は、メモリ201については駆動能力がやや強すぎると判定し、駆動能力を1段階下げて48Ωに変更する。一方メモリコントローラ111のメモリ202ではライト動作時の共通アイパターンが小さく、リード動作時の共通アイパターンが大きい。そこで、駆動能力調整部404は、メモリ202については駆動能力が弱すぎると判断し、駆動能力の設定を1段階上げて34Ωに設定する。駆動能力調整部404は、同様の調整をメモリ203及び211~213についても実施する。
その後、変更された設定で共通アイパターンが再度測定される。表602は変更した設定で再度取得された共通アイパターンを表す。これより、初期設定値の場合よりも、各メモリ200においてリード動作時とライト動作時の共通のバランスが取れていることがわかる。ただし、一部のメモリ200ではまだバランスが取れていないので、駆動能力調整部404は、調整を再度行う。例えば、表602では、メモリコントローラ111のメモリ202では、未だライト動作時の共通アイパターンが小さく、リード動作時の共通アイパターンが大きい。そこで、駆動能力調整部404は、メモリ202については駆動能力が弱すぎると判断し、駆動能力の設定を1段階上げて30Ωに設定する。なおバランスの取れているメモリ200の設定値は変えずに保持する。再調整後、駆動能力調整部404は、再度共通アイパターンを取得する。この際、駆動能力調整部404は、バランスの取れていたメモリ200についても再度共通アイパターンを測定する。それは他のメモリ200の駆動能力の設定変更が影響して共通アイパターンの開口が変わる場合があるためである。
表603は、2度目の再調整後の共通アイパターンを表す。表603では、全てのメモリ200でリードとライトのバランスが取れていることがわかる。そこで、駆動能力調整部404は、駆動能力の調整を終える。これにより搭載された全てのメモリ200で共通アイパターンが大もしくは中となり、ここでは中以上と決められた基準値をクリアすることができる。
図14は、実施例に係る駆動能力調整方法による駆動能力の調整処理のフローチャートである。次に、図14を参照して、実施例に係る駆動能力調整方法による駆動能力調整処理の流れを説明する。
駆動能力調整部404は、CPU100の駆動能力を初期設定値に設定する(ステップS1)。
アイパターン測定部401は、未選択のトレーニングパターンの中から1つのトレーニングパターンを選択して、選択したトレーニングパターンに応じた動作条件を取得する(ステップS2)。
次に、アイパターン測定部401は、メモリコントローラ111及び112を介してメモリバス301及び302に取得した動作条件を設定する(ステップS3)。
次に、アイパターン測定部401は、設定した動作条件でCPU100とメモリ200との間の通信を行わせた場合の、各メモリ200のデータビット毎のアイパターンを測定する(ステップS4)。そして、アイパターン測定部401は、取得した各メモリ200のデータビット毎のアイパターンをストローブポイント決定部402へ出力する。
ストローブポイント決定部402は、各メモリ200のデータビット毎のアイパターンの入力をアイパターン測定部401から受ける。そして、ストローブポイント決定部402は、各アイパターンにおけるストローブポイントを決定する(ステップS5)。その後、ストローブポイント決定部402は、各アイパターンの情報及びそれぞれのアイパターンのストローブポイントの情報を共通アイパターン生成部403へ出力する。
その後、アイパターン測定部401は、アイパターンの測定が全てのトレーニングパターンについて終了したか否かを判定する(ステップS6)。トレーニングパターンが残っている場合(ステップS6:否定)、アイパターン測定部401は、ステップS2へ戻る。
これに対して、全てのトレーニングパターンが終了した場合(ステップS6:肯定)、共通アイパターン生成部403は、データビット毎に、リード動作時とライト動作時それぞれについてストローブポイントを中心としてアイパターンを重ね合わせる。そして、共通アイパターン生成部403は、重ね合わせたアイパターンの共通部分を共通アイパターンとして、リード動作時及びライト動作時のそれぞれの共通アイパターンをメモリ2000毎に生成する(ステップS7)。その後、共通アイパターン生成部303は、生成した各共通アイパターンを駆動能力調整部404へ出力する。
駆動能力調整部404は、メモリ200毎のリード動作時及びライト動作時のそれぞれの共通アイパターンを共通アイパターン生成部403から取得する。次に、駆動能力調整部404は、各共通アイパターンの中心を求める(ステップS8)。
次に、駆動能力調整部404は、各共通アイパターンの中心からの上下左右のマージンを取得する(ステップS9)。
そして、駆動能力調整部404は、各共通アイパターンの中心からの上下左右のマージンを基に、各メモリ200のリード動作時及びライト動作時の共通アイパターンが予め決められた基準値以上か否かを判定する(ステップS10)。
基準値未満の共通アイパターンが存在する場合(ステップS10:否定)、駆動能力調整部404は、リード動作時の共通アイパターンが小さく、ライト動作時の共通アイパターンが大きいメモリ200が存在する科否かを判定する(ステップS11)。リード動作時の共通アイパターンが小さく、ライト動作時の共通アイパターンが大きいメモリ200が存在しない場合(ステップS11:否定)、駆動能力調整部404は、ステップS13へ進む。
一方、リード動作時の共通アイパターンが小さく、ライト動作時の共通アイパターンが大きいメモリ200が存在する場合(ステップS11:肯定)、駆動能力調整部404は、そのメモリ200に対するCPU100の駆動能力を弱める(ステップS12)。
次に、駆動能力調整部404は、リード動作時の共通アイパターンが大きく、ライト動作時の共通アイパターンが小さいメモリ200が存在する科否かを判定する(ステップS13)。リード動作時の共通アイパターンが大きく、ライト動作時の共通アイパターンが小さいメモリ200が存在しない場合(ステップS13:否定)、駆動能力調整部404は、ステップS15へ進む。
一方、リード動作時の共通アイパターンが大きく、ライト動作時の共通アイパターンが小さいメモリ200が存在する場合(ステップS13:肯定)、駆動能力調整部404は、そのメモリ200に対するCPU100の駆動能力を強める(ステップS14)。
その後、駆動能力調整部404は、決定した各メモリ200に対するCPU100の駆動能力をメモリコントローラ111及び112に通知して、CPU100の駆動能力を設定する(ステップS15)。その後、駆動能力の調整処理は、ステップS2へ戻る。
一方、各メモリ200のリード動作時及びライト動作時の共通アイパターンが全て基準値以上の場合(ステップS10:肯定)、駆動能力調整部404は、その時点での駆動能力を実際の動作時のCPU100の駆動能力として設定して、駆動能力の調整を終了する。
図15は、4種類のトレーニングパターンを用いたアイパターンの測定処理のフローチャートである。図15のフローにおける各処理は、図14のフローにおけるステップS1~S6で実行される処理の一例にあたる。次に、図15を参照して、4種類のトレーニングパターンを用いたアイパターンの測定処理の流れについて説明する。
アイパターン測定部401は、メモリバス301及び302のいずれもリード動作に設定する。そして、アイパターン測定部401は、CPU100とメモリ200との間で行われたメモリバス301及び302を用いたリード動作時の通信結果をI/O制御部113及び114から取得する。次に、アイパターン測定部401は、取得した通信結果から、メモリ200のそれぞれのデータビット毎のアイパターンを取得する。ストローブポイント決定部402は、メモリ200のそれぞれのデータビット毎のアイパターンにおけるストローブポイントを決定する(ステップS101)。
次に、アイパターン測定部401は、メモリバス301をリード動作に設定し、メモリバス302をライト動作に設定する。そして、アイパターン測定部401は、CPU100とメモリ200との間で行われたメモリバス301を用いたリード動作時の通信結果及びメモリバス302を用いたライト動作時の通信結果をI/O制御部113及び114から取得する。次に、アイパターン測定部401は、取得した通信結果から、メモリ200のそれぞれのデータビット毎のアイパターンを取得する。ストローブポイント決定部402は、メモリ200のそれぞれのデータビット毎のアイパターンにおけるストローブポイントを決定する(ステップS102)。
次に、アイパターン測定部401は、メモリバス301をライト動作に設定し、メモリバス302をリード動作に設定する。そして、アイパターン測定部401は、CPU100とメモリ200との間で行われたメモリバス301を用いたライト動作時の通信結果及びメモリバス302を用いたリード動作時の通信結果をI/O制御部113及び114から取得する。次に、アイパターン測定部401は、取得した通信結果から、メモリ200のそれぞれのデータビット毎のアイパターンを取得する。ストローブポイント決定部402は、メモリ200のそれぞれのデータビット毎のアイパターンにおけるストローブポイントを決定する(ステップS103)。
次に、アイパターン測定部401は、メモリバス301及び302のいずれもライト動作に設定する。そして、アイパターン測定部401は、CPU100とメモリ200との間で行われたメモリバス301及び302を用いたライト動作時の通信結果をI/O制御部113及び114から取得する。次に、アイパターン測定部401は、取得した通信結果から、メモリ200のそれぞれのデータビット毎のアイパターンを取得する。ストローブポイント決定部402は、メモリ200のそれぞれのデータビット毎のアイパターンにおけるストローブポイントを決定する(ステップS104)。
図16は、駆動能力を弱める処理のフローチャートである。図16のフローにおける各処理は、図14のフローにおけるステップS12で実行される処理の一例にあたる。次に、図16を参照して、駆動能力を弱める処理の流れについて説明する。ここでは、CPU100の駆動能力として、80Ω、60Ω、48Ω、40Ω、34Ω、30Ω及び27Ωの7段階が設定可能な場合で説明する。
駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値が80Ωか否かを判定する(ステップS201)。駆動能力の設定値が80Ωの場合(ステップS201:肯定)、駆動能力は最低値であるため、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を80Ωのまま維持する(ステップS202)。そして、駆動能力調整部404は、駆動能力を弱める処理を終了する。
これに対して、駆動能力の設定値が80Ωでない場合(ステップS201:否定)、駆動能力調整部404は、駆動能力の設定値が60Ωか否かを判定する(ステップS203)。駆動能力の設定値が60Ωの場合(ステップS203:肯定)、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を80Ωに変更する(ステップS204)。そして、駆動能力調整部404は、駆動能力を弱める処理を終了する。
これに対して、駆動能力の設定値が60Ωでない場合(ステップS203:否定)、駆動能力調整部404は、駆動能力の設定値が48Ωか否かを判定する(ステップS205)。駆動能力の設定値が48Ωの場合(ステップS205:肯定)、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を60Ωに変更する(ステップS206)。そして、駆動能力調整部404は、駆動能力を弱める処理を終了する。
これに対して、駆動能力の設定値が48Ωでない場合(ステップS205:否定)、駆動能力調整部404は、駆動能力の設定値が40Ωか否かを判定する(ステップS207)。駆動能力の設定値が40Ωの場合(ステップS207:肯定)、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を48Ωに変更する(ステップS208)。そして、駆動能力調整部404は、駆動能力を弱める処理を終了する。
これに対して、駆動能力の設定値が40Ωでない場合(ステップS207:否定)、駆動能力調整部404は、駆動能力の設定値が34Ωか否かを判定する(ステップS209)。駆動能力の設定値が34Ωの場合(ステップS209:肯定)、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を40Ωに変更する(ステップS210)。そして、駆動能力調整部404は、駆動能力を弱める処理を終了する。
これに対して、駆動能力の設定値が34Ωでない場合(ステップS209:否定)、駆動能力調整部404は、駆動能力の設定値が30Ωか否かを判定する(ステップS211)。駆動能力の設定値が30Ωの場合(ステップS211:肯定)、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を34Ωに変更する(ステップS212)。そして、駆動能力調整部404は、駆動能力を弱める処理を終了する。
これに対して、駆動能力の設定値が30Ωでない場合(ステップS211:否定)、設定値は27Ωであるので、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を30Ωに変更する(ステップS213)。そして、駆動能力調整部404は、駆動能力を弱める処理を終了する。
図17は、駆動能力を強める処理のフローチャートである。図17のフローにおける各処理は、図14のフローにおけるステップS14で実行される処理の一例にあたる。次に、図17を参照して、駆動能力を強める処理の流れについて説明する。ここでも、CPU100の駆動能力として、80Ω、60Ω、48Ω、40Ω、34Ω、30Ω及び27Ωの7段階が設定可能な場合で説明する。
駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値が27Ωか否かを判定する(ステップS301)。駆動能力の設定値が27Ωの場合(ステップS301:肯定)、駆動能力は最大値であるため、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を27Ωのまま維持する(ステップS302)。そして、駆動能力調整部404は、駆動能力を強める処理を終了する。
これに対して、駆動能力の設定値が27Ωでない場合(ステップS301:否定)、駆動能力調整部404は、駆動能力の設定値が30Ωか否かを判定する(ステップS303)。駆動能力の設定値が30Ωの場合(ステップS303:肯定)、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を27Ωに変更する(ステップS304)。そして、駆動能力調整部404は、駆動能力を強める処理を終了する。
これに対して、駆動能力の設定値が30Ωでない場合(ステップS303:否定)、駆動能力調整部404は、駆動能力の設定値が34Ωか否かを判定する(ステップS305)。駆動能力の設定値が34Ωの場合(ステップS305:肯定)、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を30Ωに変更する(ステップS306)。そして、駆動能力調整部404は、駆動能力を強める処理を終了する。
これに対して、駆動能力の設定値が34Ωでない場合(ステップS305:否定)、駆動能力調整部404は、駆動能力の設定値が40Ωか否かを判定する(ステップS307)。駆動能力の設定値が40Ωの場合(ステップ307:肯定)、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を34Ωに変更する(ステップS308)。そして、駆動能力調整部404は、駆動能力を強める処理を終了する。
これに対して、駆動能力の設定値が40Ωでない場合(ステップS307:否定)、駆動能力調整部404は、駆動能力の設定値が48Ωか否かを判定する(ステップS309)。駆動能力の設定値が48Ωの場合(ステップS309:肯定)、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を40Ωに変更する(ステップS310)。そして、駆動能力調整部404は、駆動能力を強める処理を終了する。
これに対して、駆動能力の設定値が48Ωでない場合(ステップS309:否定)、駆動能力調整部404は、駆動能力の設定値が60Ωか否かを判定する(ステップS311)。駆動能力の設定値が60Ωの場合(ステップS311:肯定)、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を48Ωに変更する(ステップS312)。そして、駆動能力調整部404は、駆動能力を強める処理を終了する。
これに対して、駆動能力の設定値が60Ωでない場合(ステップS311:否定)、設定値は80Ωであるので、駆動能力調整部404は、調整対象としたメモリ200に対するCPU100の駆動能力の設定値を60Ωに変更する(ステップS313)。そして、駆動能力調整部404は、駆動能力を強める処理を終了する。
次に、本実施例に係る駆動能力調整方法を用いた場合の伝送特性に対する効果について説明する。図18は、各メモリを単独で動作させるトレーニングにより駆動能力を調整した場合の結果の一例を示す図である。この場合、メモリ200毎にトレーニング時にリード動作時及びライト動作時のアイパターンを取得して、その結果からストローブポイントが決定される。
アイパターン701は、トレーニングにおけるリード動作時のアイパターンである。また、アイパターン702は、トレーニングにおけるライト動作時のアイパターンである。また、アイパターン703は、OS起動後のシステム動作中のリード動作時のアイパターンである。また、アイパターン704は、OS起動後のシステム動作中のライト動作時のアイパターンである。
この場合のトレーニングにおけるリード動作時のアイパターン701は、中心からの上下のマージンはそれぞれ5コードであり、左右のマージンはそれぞれ5タップである。また、トレーニングにおけるライト動作時のアイパターン702は、中心からの上下のマージンはそれぞれ9コードであり、左右のマージンはそれぞれ9タップである。このように、この場合のトレーニングでは、リード動作時のアイパターンの大きさと、ライト動作時のアイパターンの大きさが大きく異なる。
また、この場合のシステム動作中のリード動作時のアイパターン703は、中心からの上下のマージンはそれぞれ3コードであり、左右のマージンはそれぞれ3タップである。また、システム動作中のライト動作時のアイパターン704は、中心からの上下のマージンはそれぞれ7コードであり、左右のマージンはそれぞれ7タップである。この場合、リード動作時及びライト動作時のいずれも、トレーニングの場合に比べてシステム動作時にはアイパターンが縮小した。特に、システム動作中のリード動作時のアイパターンの大きさが小さくなっており、エラーが発生する可能性が高くなる。
図19は、実施例に係る駆動能力調整方法を用いた場合の結果の一例を示す図である。この場合、搭載された全てのメモリ200を動作させてトレーニングを行い、リード動作時及びライト動作時のアイパターンを取得して、その結果からストローブポイントが決定される。図19は、図18の場合と同じシステムを用いて測定を行った結果である。
アイパターン711は、本実施例に係る駆動能力調整方法を用いた場合のトレーニングにおけるリード動作時のアイパターンである。また、アイパターン712は、本実施例に係る駆動能力調整方法を用いた場合のトレーニングにおけるライト動作時のアイパターンである。また、アイパターン713は、本実施例に係る駆動能力調整方法を用いた場合のOS起動後のシステム動作中のリード動作時のアイパターンである。また、アイパターン714は、本実施例に係る駆動能力調整方法を用いた場合のOS起動後のシステム動作中のライト動作時のアイパターンである。
この場合のトレーニングにおけるリード動作時のアイパターン711は、中心からの上下のマージンはそれぞれ5コードであり、左右のマージンはそれぞれ5タップである。また、トレーニングにおけるライト動作時のアイパターン712は、中心からの上下のマージンはそれぞれ5コードであり、左右のマージンはそれぞれ5タップである。このように、本実施例に係る駆動能力調整方法を用いた場合のトレーニングでは、リード動作時のアイパターンの大きさと、ライト動作時のアイパターンの大きさのバランスがとれていることが分かる。
また、この場合のシステム動作中のリード動作時のアイパターン713は、中心からの上下のマージンはそれぞれ5コードであり、左右のマージンはそれぞれ5タップである。また、システム動作中のライト動作時のアイパターン714は、中心からの上下のマージンはそれぞれ5コードであり、左右のマージンはそれぞれ5タップである。この場合、OS起動後のシステム動作時のアイパターンと、トレーニング時のアイパターンとが同等であることが分かる。そして、この場合のシステム動作時のアイパターンは、図18に示す各メモリ200を単独で動作させるトレーニングにより駆動能力を調整した場合のアイパターンに比べて、リード動作時のマージンが上下で2コード及び左右で2タップの拡大したことが分かる。すなわち、本実施例に係る駆動能力調整方法を用いた場合、エラーの発生を抑えることができる。
さらに、他の例を用いて本実施例に係る駆動能力調整方法を用いた場合の伝送特性に対する効果について説明する。図20は、各メモリを単独で動作させるトレーニングにより駆動能力を調整した場合の結果の他の例を示す図である。
アイパターン721は、トレーニングにおけるリード動作時のアイパターンである。また、アイパターン722は、トレーニングにおけるライト動作時のアイパターンである。また、アイパターン723は、OS起動後のシステム動作中のリード動作時のアイパターンである。また、アイパターン724は、OS起動後のシステム動作中のライト動作時のアイパターンである。
この場合のトレーニングにおけるリード動作時のアイパターン721は、中心からの上下のマージンはそれぞれ5コードであり、左右のマージンはそれぞれ5タップである。また、トレーニングにおけるライト動作時のアイパターン722は、中心からの上下のマージンはそれぞれ9コードであり、左右のマージンはそれぞれ9タップである。このように、この場合のトレーニングでは、リード動作時のアイパターンの大きさと、ライト動作時のアイパターンの大きさが大きく異なる。
また、この場合のシステム動作中のリード動作時のアイパターン723は、中心からの上下のマージンはそれぞれ3コード及び0コードであり、左右のマージンはそれぞれ3タップである。また、システム動作中のライト動作時のアイパターン704は、中心からの上下のマージンはそれぞれ7コードであり、左右のマージンはそれぞれ7タップである。この場合、リード動作時及びライト動作時のいずれも、トレーニングの場合に比べてシステム動作時にはアイパターンが縮小した。特に、システム動作中のリード動作時のアイパターンは、中心から下のマージンが無いためエラーが頻発する。このように、各メモリ200を単独で動作させるトレーニングを行った場合、トレーニング時にはアイパターンが正常な円形であっても、システム動作時にはノイズなどの影響によりアイパターンが歪な形状になる場合がある。その場合、トレーニング時に調整したストローブポイントではシステム動作時に最適な位置にならないおそれがある。
図21は、実施例に係る駆動能力調整方法を用いた場合の結果の他の例を示す図である。図21は、図20の場合と同じシステムを用いて測定を行った結果である。
アイパターン731は、本実施例に係る駆動能力調整方法を用いた場合のトレーニングにおけるリード動作時のアイパターンである。また、アイパターン732は、本実施例に係る駆動能力調整方法を用いた場合のトレーニングにおけるライト動作時のアイパターンである。また、アイパターン733は、本実施例に係る駆動能力調整方法を用いた場合のOS起動後のシステム動作中のリード動作時のアイパターンである。また、アイパターン734は、本実施例に係る駆動能力調整方法を用いた場合のOS起動後のシステム動作中のライト動作時のアイパターンである。
この場合のトレーニングにおけるリード動作時のアイパターン731は、中心からの上下のマージンはそれぞれ4コードであり、左右のマージンはそれぞれ5タップである。また、トレーニングにおけるライト動作時のアイパターン732は、中心からの上下のマージンはそれぞれ4コードであり、左右のマージンはそれぞれ4タップである。このように、本実施例に係る駆動能力調整方法を用いた場合のトレーニングでは、リード動作時のアイパターンの大きさと、ライト動作時のアイパターンの大きさのバランスがとれていることが分かる。
また、この場合のシステム動作中のリード動作時のアイパターン733は、中心からの上下のマージンはそれぞれ4コードであり、左右のマージンはそれぞれ5タップである。また、システム動作中のライト動作時のアイパターン734は、中心からの上下のマージンはそれぞれ4コードであり、左右のマージンはそれぞれ4タップである。この場合、OS起動後のシステム動作時のアイパターンと、トレーニング時のアイパターンとが同等であることが分かる。このように、本実施例に係る駆動能力調整方法を用いた場合、トレーニング時にシステム動作時と同様の環境で駆動能力を決定するため、OS起動後のシステム起動時のアイパターンをトレーニング時のアイパターンとほぼ等しくなる。したがって、OS起動後のシステム動作時においても、ストローブポイントをアイパターンの中心に位置させることが可能となる。また、この場合のシステム動作時のアイパターンは、図20に示す各メモリ200を単独で動作させるトレーニングにより駆動能力を調整した場合のアイパターンに比べて、リード動作時のマージンが上下左右に拡大し、伝送路余裕を充分に確保することができる。すなわち、本実施例に係る駆動能力調整方法を用いた場合、エラーの発生を抑えることができる。
以上に説明したように、本実施例に係る駆動能力調整方法は、複数のメモリを同時に動作させ、決められたリードライトの組み合わせである複数のトレーニングパターンを用いてアイパターンを測定する。次に、本実施例に係る駆動能力調整方法は、ストローブポイントを中心として各アイパターンを重ね合わせて重畳領域を通信可能範囲とする共通アイパターンを生成する。そして、本実施例に係る駆動能力調整方法は、リード動作時の共通アイパターンとライト動作時の共通アイパターンとのサイズが同等であり且ついずれも十分な大きさを有するようにCPUの駆動能力を調整する。
これにより、リード動作時とライト動作時のアイパターンが小さくなることを回避し、且つ、大きさを同等にすることができる。さらに、トレーニング時とシステム動作時とのアイパターンのサイズを近似させてストローブポイントをシステム動作時にもアイパターンの中央に位置させることができる。したがって、システム動作時の伝送エラーの発生を軽減することができ、CPUとメモリとの間の伝送特性を最適化することが可能となる。
ここで、本実施例では、CPUの駆動能力を調整してリード動作時のアイパターンとライト動作時のアイパターンとのバランスを合わせたが、システム制御ユニットがメモリの駆動能力を調整可能な構成であれば、メモリの駆動能力を調整して、リード動作時のアイパターンとライト動作時のアイパターンとのバランスを合わせてもよい。
1 情報処理システム
10 情報処理装置
11 メインボード
12 システム制御ユニット
13 PCIインタフェース
14 LANインタフェース
15 SATAインタフェース
16 電源ユニット
17 冷却ファン
20 記憶装置
21 HDD
30 入力装置
31 キーボード
40 出力装置
41 ディスプレイ
100 CPU
111,112 メモリコントローラ
113,114 I/O制御部
121 SDRAM
122 MPU
123 SDカード
200~203,211~213 メモリ
301,302 メモリバス
401 アイパターン測定部
402 ストローブポイント決定部
403 共通アイパターン生成部
404 駆動能力調整部

Claims (6)

  1. プロセッサと複数のメモリとを接続する複数の伝送経路毎のリードとライトの組み合わせを表す複数種類のトレーニングパターンにしたがって信号伝送を行わせ、前記トレーニングパターン毎に前記メモリのそれぞれに対して複数のアイパターンを取得し、
    取得した各前記アイパターンについてストローブポイントを決定し、
    前記メモリ毎に決定したストローブポイントを中心として前記アイパターンを重ね合わせて共通アイパターンを生成し、
    生成した前記共通アイパターンを基にプロセッサと複数のメモリとの間の通信における駆動能力を調整する
    処理をコンピュータに実行させることを特徴とする駆動能力調整方法。
  2. 前記メモリ毎に接続された前記伝送経路のバス幅に応じた数の前記アイパターンを取得し、
    前記メモリ毎に接続された前記伝送経路のバス幅に応じた数の前記アイパターンを重ね合わせて共通アイパターンを生成する
    ことを特徴とする請求項1に記載の駆動能力調整方法。
  3. 前記メモリ毎にリード動作時の前記アイパターンを重ね合わせて前記リード動作時の前記共通アイパターンを生成し、
    前記メモリ毎にライト動作時の前記アイパターンを重ね合わせて前記ライト動作時の前記共通アイパターンを生成し、
    前記リード動作時の前記共通アイパターンと前記ライト動作時の前記共通アイパターンとのサイズの比較結果を基に、前記駆動能力を調整する
    ことを特徴とする請求項1又は2に記載の駆動能力調整方法。
  4. 前記リード動作時の前記共通アイパターンと前記ライト動作時の前記共通アイパターンとのサイズが同程度となり、且つ、前記リード動作時の前記共通アイパターンと前記ライト動作時の前記共通アイパターンとのサイズが基準値以上となるように前記駆動能力を調整する請求項3に記載の駆動能力調整方法。
  5. 前記ライト動作時の前記共通アイパターンのサイズを大きくする場合、前記プロセッサの駆動能力を大きくし、
    前記リード動作時の前記共通アイパターンのサイズを大きくする場合、前記プロセッサの駆動能力を小さくする
    ことを特徴とする請求項3又は4に記載の駆動能力調整方法。
  6. プロセッサと複数のメモリとを接続する複数の伝送経路と、
    前記伝送経路毎のリードとライトの組み合わせを表す複数種類のトレーニングパターンにしたがって信号伝送を行わせ、前記メモリのそれぞれのデータビット毎にアイパターンを取得するアイパターン測定部と、
    前記アイパターン測定部により取得された各アイパターンについてストローブポイントを決定するストローブポイント決定部と、
    前記メモリ毎にリード動作時及びライト動作時のそれぞれのアイパターンを前記ストローブポイント決定部により決定されたストローブポイントを中心として重ね合わせて共通アイパターンを生成する共通アイパターン生成部と、
    前記共通アイパターン生成部により生成された前記共通アイパターンを基にプロセッサと複数のメモリとの間の通信における駆動能力を調整する駆動能力調整部と
    を備えたことを特徴とする情報処理装置。
JP2021166082A 2021-10-08 2021-10-08 駆動能力調整方法及び情報処理装置 Pending JP2023056711A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2021166082A JP2023056711A (ja) 2021-10-08 2021-10-08 駆動能力調整方法及び情報処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2021166082A JP2023056711A (ja) 2021-10-08 2021-10-08 駆動能力調整方法及び情報処理装置

Publications (1)

Publication Number Publication Date
JP2023056711A true JP2023056711A (ja) 2023-04-20

Family

ID=86005171

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021166082A Pending JP2023056711A (ja) 2021-10-08 2021-10-08 駆動能力調整方法及び情報処理装置

Country Status (1)

Country Link
JP (1) JP2023056711A (ja)

Similar Documents

Publication Publication Date Title
US10347319B2 (en) Method and apparatus for dynamically adjusting voltage reference to optimize an I/O system
CN111538539B (zh) 存储系统启动方法、装置及计算机可读存储介质
US9373416B2 (en) Method and system for testing a memory
US7480360B2 (en) Regulating a timing between a strobe signal and a data signal
US8289784B2 (en) Setting a reference voltage in a memory controller trained to a memory device
JP6409399B2 (ja) 電子機器、通信制御回路および通信制御方法
KR100780962B1 (ko) 다이나믹 odt 모드 테스트 방법 및 그 방법을 사용하는odt 모드 테스트 회로
US9459982B2 (en) Bus interface optimization by selecting bit-lanes having best performance margins
KR20120062870A (ko) 에러 검출 기법들에 의거한 메모리 쓰기 타이밍의 조정
US20080143375A1 (en) Method for reducing cross-talk induced source synchronous bus clock jitter
US20060182187A1 (en) Automatic reconfiguration of an I/O bus to correct for an error bit
KR100816928B1 (ko) 고속 직렬 수신기의 검사를 위한 자동 아이 다이어그램열화 기술들
US20120296598A1 (en) Compensating for jitter during ddr3 memory delay line training
US20100293410A1 (en) Memory Downsizing In A Computer Memory Subsystem
JP2023056711A (ja) 駆動能力調整方法及び情報処理装置
WO2014049752A1 (ja) データ伝送装置及びデータ伝送方法
CN116738237B (zh) 一种存储器系统的训练方法及系统
US11323296B1 (en) Decision feedback equalization training scheme for GDDR applications
KR101300036B1 (ko) 메모리 세팅 조건을 결정하는 메모리 테스트 장치 및 그방법
US7299380B2 (en) Testing a receiver connected to a reference voltage signal
CN115562916A (zh) 一种信号质量评估的方法、装置以及介质
US9928325B2 (en) Information processing device and waveform verification method
CN115762590A (zh) 应用于存储器接口的眼图判断电路及其眼图判断方法
JPWO2007122990A1 (ja) 信号出力装置、信号検出装置、試験装置、電子デバイスおよびプログラム
WO2017152534A1 (zh) 一种获取ddr odt参数的方法和装置