(57)【要約】【課題】メモリ装置へのアクセスを制御するのに用いられる装置内でメンテナンス作業を実行する。【解決手段】メモリ装置へ発行されるアクセス要求を記憶する記憶装置と、記憶装置内に設けられた記憶素子に対してメンテナンス作業を行うメンテナンス回路と、記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行するメモリアクセス実行回路と、トレーニングイベントに応答して物理層インターフェースのトレーニング作業を開始する制御回路とを具備し、トレーニング作業が実行されている間、メンテナンス回路によるメンテナンス作業の実行をトリガするように制御回路がトレーニングイベントに応答する。トレーニング作業中は保留アクセス要求がメモリ装置へ発行されず、この期間のメンテナンス作業の実行で、メンテナンス作業の実行がアクセス要求の処理に与え得る影響が回避される。【選択図】図２
2018005902.tif 000002
【特許請求の範囲】
【請求項１】
メモリ装置へのアクセスを制御する装置であって、
前記メモリ装置へ発行されるアクセス要求を記憶する記憶装置と、
前記記憶装置内に設けられた記憶素子に対してメンテナンス作業を行うメンテナンス回路と、
前記記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に前記物理層インターフェースから前記メモリ装置へと伝搬するように発行するメモリアクセス実行回路と、
トレーニングイベントに応答して、前記物理層インターフェースのトレーニング作業を開始する制御回路と
を具備し、
前記制御回路が更に、前記トレーニング作業が実行されている間、前記メンテナンス回路による前記メンテナンス作業の実行をトリガするように前記トレーニングイベントに応答する、装置。
【請求項２】
前記制御回路は、前記メンテナンス作業の実行をトリガするために前記メンテナンス回路に制御信号を発行するようにされている、請求項１に記載の装置。
【請求項３】
前記制御回路は、前記メンテナンス回路をとりがして前記メンテナンス作業をさせる値に制御レジスタを更新するように前記トレーニングイベントに応答する、請求項１に記載の装置。
【請求項４】
前記制御回路は、前記トレーニング作業の予測期間の指標を発行するようにされ、前記メンテナンス回路は、前記メンテナンス作業の対象となる前記記憶素子を判定する際にその指標を参照するようにされている、請求項１〜３のいずれか一項に記載の装置。
【請求項５】
前記トレーニング作業の予測期間の前記指標は、前記トレーニング作業により行われるトレーニングのタイプを示し、前記メンテナンス回路は、トレーニングの複数の異なるタイプのそれぞれについて、前記トレーニング作業の予測期間を特定する記憶されたタイミング情報にアクセスを有する、請求項４に記載の装置。
【請求項６】
前記制御回路は、前記トレーニング作業が完了すると前記メンテナンス回路に通知するようにされている、請求項１〜３のいずれか一項に記載の装置。
【請求項７】
前記メンテナンス作業が前記制御回路によってトリガされたとき、前記メンテナンス回路は、前記メンテナンス作業をデフォルト期間の間実行するようにされている、請求項１〜３のいずれか一項に記載の装置。
【請求項８】
前記制御回路は、前記トレーニング作業を行うように構成されたハードウェア回路、又は、前記トレーニング作業を行うファームウェアを実行するようにされた処理回路である、請求項１〜７のいずれか一項に記載の装置。
【請求項９】
前記記憶装置は、保留アクセス要求バッファを具備し、前記アクセス要求の少なくとも前記データ部分は前記メンテナンス作業の対象となる前記記憶素子に記憶されている、請求項１〜８のいずれか一項に記載の装置。
【請求項１０】
前記記憶装置は、キャッシュ構造を具備し、前記キャッシュ構造の少なくとも一部は前記メンテナンス作業の対象となる記憶素子から形成される、請求項１〜９のいずれか一項に記載の装置。
【請求項１１】
前記メンテナンス回路は、エラーロバスト性のメンテナンスを提供するために、前記メンテナンス作業を行うようにされたビルトインセルフテストコントローラを具備する、請求項１〜１０のいずれか一項に記載の装置。
【請求項１２】
前記メンテナンス回路は、前記アクセス要求により特定された前記メモリアクセスの性能を向上させるために、前記メンテナンス作業を行うようにされたスケジューリング回路を具備する、請求項１〜１１のいずれか一項に記載の装置。
【請求項１３】
実行中の前記トレーニング作業が存在しない場合、前記スケジューリング回路は、どのアクセス要求が前記メモリアクセス実行回路によって発行されるかを決定するために前記アクセス要求の調停も行いつつ、バックグラウンドメンテナンス作業を行い、
前記トレーニング作業を実行している間は、前記スケジューリング回路は、調停を行うのを中止し、前記トレーニング作業を実行している間に記憶素子がメンテナンスの対象となる速度を上げるよう前記バックグラウンドメンテナンス作業の加速されたバージョンを前記メンテナンス作業として行う、請求項１２に記載の装置。
【請求項１４】
前記トレーニング作業は、前記物理層インターフェースと前記メモリ装置との間の接続にわたって伝搬する信号における遅延に対する補償を行うよう、前記物理層インターフェースの動作を調整する、請求項１〜１３のいずれか一項に記載の装置。
【請求項１５】
メモリ装置へのアクセスを制御する装置内でメンテナンス作業を実行する方法であって、
前記メモリ装置へ発行されるアクセス要求を記憶装置に記憶することと、
メンテナンス回路に前記記憶装置内に設けられた記憶素子に対してメンテナンス作業を行わせることと、
前記記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に前記物理層インターフェースから前記メモリ装置へと伝搬するように発行することと、
トレーニングイベントに応答して、制御回路に前記物理層インターフェースのトレーニング作業を開始させることと、
前記トレーニング作業が実行されている間、前記メンテナンス回路による前記メンテナンス作業の実行を前記制御回路にトリガさせることと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリ装置へのアクセスを制御するための装置及びそのような装置内においてメンテナンス作業を行う方法に関する。
【背景技術】
【０００２】
メモリ装置へのアクセスを制御するために用いられる装置は、数多くの送信元からアクセス要求を受け取り、メモリ装置へ発行されるアクセス要求のバッファリングが可能な記憶装置へのアクセスを有するかもしれない。そのような記憶装置内の記憶素子の少なくとも幾つかについて行うことが望ましいメンテナンス作業には様々な種類のものがある。例えば、メモリアクセス作業の全体的な性能向上を図るために行われるメンテナンス作業もあれば、例えば、ハードエラーの発生を検出しようとすることによってロバスト性向上を図るために行われるメンテナンス作業もある。しかしながら、そのようなメンテナンス作業の性能は、装置の全体的な性能に影響を与えることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
従って、そのようなメンテナンス作業を取り扱うための改善された技術を提供することが望ましい。
【課題を解決するための手段】
【０００４】
第１の構成例において、メモリ装置へのアクセスを制御する装置であって、メモリ装置へ発行されるアクセス要求を記憶する記憶装置と、記憶装置内に設けられた記憶素子に対してメンテナンス作業を行うメンテナンス回路と、記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行するメモリアクセス実行回路と、トレーニングイベントに応答して、物理層インターフェースのトレーニング作業を開始する制御回路とを具備し、制御回路が更に、トレーニング作業が実行されている間、メンテナンス回路によるメンテナンス作業の実行をトリガするようにトレーニングイベントに応答する、装置が提供される。
【０００５】
別の構成例において、メモリ装置へのアクセスを制御する装置内でメンテナンス作業を実行する方法であって、メモリ装置へ発行されるアクセス要求を記憶装置に記憶することと、メンテナンス回路に記憶装置内に設けられた記憶素子に対してメンテナンス作業を行わせることと、記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行することと、トレーニングイベントに応答して、制御回路に物理層インターフェースのトレーニング作業を開始させることと、トレーニング作業が実行されている間、メンテナンス回路によるメンテナンス作業の実行を制御回路にトリガさせることとを含む方法が提供される。
【０００６】
更なる構成例において、メモリ装置へのアクセスを制御する装置であって、メモリ装置へ発行されるアクセス要求を記憶するための記憶手段と、記憶手段内に設けられた記憶素子に対してメンテナンス作業を行うためのメンテナンス手段と、記憶手段から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行するためのメモリアクセス実行手段と、トレーニングイベントに応答して物理層インターフェースのトレーニング作業を開始するための制御手段とを具備し、制御手段が更に、トレーニング作業が実行されている間、メンテナンス手段によるメンテナンス作業の実行をトレーニングイベントに応答してトリガする、装置が提供される。
【０００７】
本技術を、添付の図面に示されるその実施例を参照して、単に例として、更に説明する。
【図面の簡単な説明】
【０００８】
【図１】一実施例に係るシステムのブロック図である。
【図２】一実施例に係る図１のメモリコントローラ及び物理層インターフェースをより詳細に示すブロック図である。
【図３】一実施例に係る図２の物理層トレーニング回路の動作を示すフロー図である。
【図４】一実施例に係るＳＲＡＭメンテナンスの実行を示すフロー図である。
【図５】一実施例に係る図２のスケジューラの動作を示すフロー図である。
【発明を実施するための形態】
【０００９】
添付図面を参照して実施例を議論する前に、実施例について以下に説明する。
【００１０】
現代のシステムの多くでは、システムの多くの構成要素がオンチップ集積されている場合や、１つ以上の構成要素がメモリ装置と通信を行う必要がある場合がある。メモリ装置は様々な形態を取ることができ、一例としてはダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）があり、現代のシステムでは記憶容量は極めて大きい。しばしば、メモリ装置自体は外部に設けられ、オンチップメモリコントローラがそのメモリ装置へのアクセスを制御するために用いられることがある。
【００１１】
メモリコントローラは、一般的に、メモリ装置へ発行されるアクセス要求のバッファリングが可能な記憶装置へのアクセスを有する。そのような記憶装置内における少なくとも幾つかの記憶素子に対して行うことが望ましいメンテナンス作業には様々な種類のものがある。例えば、特定のメンテナンス作業は、例えば、特定のアクセス要求をマージすることにより、及び／又は、それらがメモリ装置へ発行される前に記憶装置内でメモリ要求を整理するために特定のスケジューリング／順序付け機能を実行することにより、メモリアクセス作業の全体的な性能向上を図るために行われ得る。そのようなタスクは、バックグラウンド作業として行われ得るが、記憶装置へのアクセス帯域幅について、メモリ装置へのアクセスを行うためにアクセス要求を処理する際に必要な記憶装置での通常の読み取り／書き込み動作と、必要なメンテナンスタスクを行うために必要な記憶装置での読み取り／書き込み動作との間に競合が生じるだろう。このようなバックグラウンドメンテナンスタスクは、したがって、特に記憶装置の大きさ、すなわち、メンテナンスの対象となる記憶素子の数が増加するにつれて、性能に影響を与える可能性がある。
【００１２】
更に、その他のメンテナンス作業も行われることが望ましいかもしれない。例えば、記憶素子の正常動作をチェックし、とりわけハードエラーが存在したときに検出するために、ビルトインセルフテスト（ＢＩＳＴ）作業を実行することができる。従来、このようなＢＩＳＴタスクは、極めてエラーに弱いアプリケーションなどの特定のアプリケーションにおいて、製造テストの一部として、もしくは、ブート時にしか行われていなかったかもしれないが、そのようなＢＩＳＴテストをメモリコントローラのライブ使用時にメンテナンス作業として行うようにすることも望ましいかもしれない。しかしながら、そのようなメンテナンス作業の性能は、装置の全体的な性能に影響を与える可能性が高い。
【００１３】
従って、本明細書に記載される実施例によって、そのようなメンテナンス作業を取り扱うための改善された技術の提供が図られる。
【００１４】
一実施例によれば、メモリ装置へ発行されるアクセス要求を記憶する記憶装置と、その記憶装置内に設けられた記憶素子に対してメンテナンス作業を行うメンテナンス回路とを備えた、メモリ装置へのアクセスを制御する装置が提供される。記憶装置から選択されたアクセス要求をメモリ装置へ発行するメモリアクセス実行回路も設けられる。アクセス要求の発行は、メモリアクセス実行回路からアクセス要求を受け取り、メモリ装置へのアクセス要求のその先の伝搬を管理する、介在する物理層インターフェースを介して発生する。物理層インターフェースは、メモリ装置との物理的接続の性質を考慮して、メモリ装置との通信を管理するために設けられる。この物理的接続は、一般的に、複数の比較的長い物理的な有線接続を含み、パラレルインターフェースとして高速で動作することが要求されるであろう。物理層インターフェースは、メモリ装置との物理的接続にわたって同期通信を維持するよう動作する。
【００１５】
物理的接続の性質に起因して、様々な信号を正常に同期する能力に影響を及ぼし得る時変効果を引き起こすことがあり、よって、メモリ装置との同期通信を確保するのに用いられる位相遅延回路などの必要な再調整の実行を可能にするため、そのような物理層インターフェースは、物理的接続を介してテストコマンドがメモリコントローラへ発行される周期的なトレーニング作業を行う必要があることが一般的である。特に、物理層インターフェースのトレーニング作業を開始するために、トレーニングイベントに反応する制御回路が設けられてもよい。トレーニングイベントは、例えば、周期タイマーの経過や、例えば物理層インターフェースとメモリ装置との間の物理的接続を介して受け渡しされる信号の１つ以上の性質の分析による接近するエラー状態の兆候など、様々な形態を取ることができる。
【００１６】
本明細書に記載された実施例によれば、物理層インターフェースについて周期的なトレーニング作業を行う必要を利用して、記憶装置内に設けられる記憶素子に対してメンテナンス作業も行うためにその期間を用い、これにより、そのようなメンテナンス作業の性能への潜在的な影響を隠蔽することが可能になる。特に、物理層インターフェースについてトレーニング作業の実行中に保留中のアクセス要求を処理することはできず、したがって、その期間中に行われる積極的なメモリアクセス処理は存在しない。記載された実施例によれば、制御回路は、トレーニング作業の実行中にメンテナンス回路によるメンテナンス作業の実行をトリガするために、トレーニングイベントに応答する。よって、メンテナンス作業は、保留中のアクセス要求がいかなるイベントにおいても処理不可能な時に行われ、したがって、その期間にメンテナンス作業を行ってもそれ以上メモリアクセス性能に影響を与えることはない。
【００１７】
これにより、物理層インターフェースにトレーニング作業が行われることに起因して、メモリアクセス機能にすでに「ダウンタイム」が存在する期間に上記メンテナンス作業の実行をトリガすることにより、メンテナンス作業の実行を容易にする非常に効率的な機構が提供される。これは、実行することが望ましいメンテナンスタスクの量が、記憶素子へのアクセスにとって競合の原因を生じさせることでメモリアクセス処理の全体的な性能に影響を与え得るレベルであるという状況下で特に有効となり得る。特に、上記記憶素子は、メモリ装置の必要なデータにアクセするために、保留中のアクセス要求を正常に処理しつつアクセスを行う必要があり、もしメンテナンス作業でも同時に記憶素子へのアクセスを行う必要があった場合、性能を、特に、必要とされるメンテナンスタスク量の増加につれて、低下させる可能性がある。
【００１８】
制御回路が、トレーニングイベントに応じて、メンテナンス回路によるメンテナンス作業の実行をトリガする方法は数多くある。例えば、一実施例において、制御回路は、メンテナンス作業の実行をトリガするために、メンテナンス回路に制御信号を発行するよう手配されていてもよい。従って、そのような実施例では、制御回路は、メンテナンス作業の実行をトリガするため、メンテナンス回路に直接接触可能であってもよい。
【００１９】
代替の実施例では、制御回路は、メンテナンス回路には直接接触せず、その代わりに、メンテナンス作業の実行をトリガし得る代替動作を行ってもよい。例えば、一実施例において、制御回路は、トレーニングイベントに応答して、メンテナンス回路にメンテナンス作業をトリガさせる値に制御レジスタを更新してもよい。具体的な例として、制御レジスタは、その値が所定値に更新されると、それにより割り込みが発生し、例えば、メンテナンス作業の実行をトリガする例外ルーティンが行われるようになされてもよい。従って、制御回路は、トレーニングイベントに応答して、制御レジスタ値をその所定値に更新し、それにより割り込み機構を起動し、メンテナンス作業の実行をトリガすることができる。
【００２０】
メンテナンス作業が制御回路によってトリガされたときに実行されるべきメンテナンス動作を計画することについてメンテナンス回路を支援するため、一実施例において、トレーニング作業の予測期間の指標を発行するように制御回路を手配することができ、メンテナンス回路は、メンテナンス作業の対象となる記憶素子を判定する際にその指標を参照するようになされてもよい。トレーニング作業が実行されている間は保留中のアクセス要求に関してメモリ装置へのデータアクセスが行われないことが分かっているので、データアクセス性能に影響を与えることなくメンテナンス作業を実行できる利用可能時間を、こうして、メンテナンス回路に通知することができる。
【００２１】
制御回路によって提供されるトレーニング作業の予測期間の指標は様々な形態を取ることができる。例えば、多くのクロックサイクルを参照することにより、該当する期間を直接特定することができる。また、トレーニング作業により実行されているトレーニングのタイプを特定することで十分な場合もある。特に、トレーニングイベントの性質によっては、実行する必要があるトレーニングのタイプが異なることがあり、異なるタイプのトレーニングが、異なる予測期間を有しているかもしれない。一実施例において、メンテナンス回路は、複数の異なるタイプのトレーニングのそれぞれについて、トレーニング作業の予測期間を特定する記憶されたタイミング情報にアクセスできるようにすることができる。この場合、メンテナンス作業をトリガする際に制御回路が発行する指標は、トレーニング作業により実行されているトレーニングのタイプの指標を提供するようにされてもよく、メンテナンス回路はそのとき、この情報を使ってメンテナンスタスクの実行に利用可能な時間を決定することができる。
【００２２】
代替の実施例において、制御回路は、タイミング指標情報を提供しなくてもよく、その代わりに、トレーニング作業の完了をメンテナンス回路に通知するようになされてもよい。このような実施例では、メンテナンス回路は、トレーニング作業が完了したことが通知される時間までメンテナンスタスクを実行し続けることができる。例えば、その情報に応答して、次の適切な時点、例えば、トレーニング作業の完了をメンテナンス回路に通知した時にインフライトのメンテナンスタスクが完了した時点で、メンテナンス作業を完了することができる。
【００２３】
更に別の代替例として、メンテナンス作業が制御回路によってトリガされた場合、メンテナンス回路は、デフォルトの期間の間メンテナンス作業を実行するようになされてもよい。このデフォルトの期間は様々な方法で選択されてもよいが、例えば、トレーニング作業の最短予測期間に対応してもよい。
【００２４】
制御回路は様々な形態を取ることができる。一実施例では、トレーニング作業を行うように構成された専用ハードウェア回路の形態を取ってもよい。このハードウェア回路は、トレーニング作業の開始時にメンテナンス作業の実行をトリガする信号を発行するように更に構成されるだろう。しかしながら、代替の実施例において、制御回路は、トレーニング作業を行うファームウェアを実行するようになされたより汎用の処理回路の形態を取ってもよい。そして、このファームウェアは、トレーニング作業の開始時にメンテナンス作業の実行をトリガするために、必要な信号も発行させるだろう。
【００２５】
制御回路が専用ハードウェア回路である一実施例において、この専用ハードウェア回路は、メンテナンス作業を開始するためにトリガ信号をメンテナンス回路に直接発行する特定のパスを備えていてもよい。
【００２６】
制御回路がファームウェアを実行するより汎用の処理回路の形態を取る一実施例において、この処理回路は、システム内の要素の動作を制御するのに用いられる幾つかの制御レジスタを含む、システム内の様々なその他の要素と、周辺機器用バスを介して接続されてもよい。それらの制御レジスタのうちの１つは、特定の値に設定された場合に、メンテナンス作業を開始させる割り込みをトリガするレジスタとなるようになされてもよい。
【００２７】
メンテナンス作業の対象となる記憶素子を含む記憶装置は様々な形態を取ることができる。一実施例において、記憶装置は保留アクセス要求バッファを具備し、アクセス要求の少なくともデータ部分はメンテナンス作業が行われる記憶素子に記憶されている。例えば、特定の実施例において、アクセス要求のデータ部分は、記憶装置内のスタティックランダムアクセスメモリ（ＳＲＡＭ）に記憶されてもよく、これらのＳＲＡＭセルは、メンテナンス作業の対象であってもよい。一実施例において、記憶装置は、要求のその他の部分を記憶するその他の構造を利用してもよい。例えば、各アクセス要求に関連するコマンド／アドレス情報を記憶するために、フロップ（flop）を利用してもよい。このような記憶構造は、メンテナンス作業の対象ではなくてもよい場合があり、よって、メンテナンス作業の対象となるのは記憶装置全体ではない場合がある。しかしながら、代替実施例において、ＳＲＡＭセルには、コマンド／アドレス情報を含む各アクセス要求の全ての情報が記憶されてもよく、全てのこれらのＳＲＡＭセルがメンテナンス作業の対象となってもよい。
【００２８】
保留アクセス要求バッファに加えて、又は、そのようなバッファに代わるものとして、記憶装置は、その他の要素、たとえば、キャッシュ構造を具備してもよく、そのキャッシュ構造の少なくとも一部はメンテナンス作業が行われる記憶素子から形成されてもよい。例えば、システムオンチップ（ＳｏＣ）内では、最終レベルのキャッシュがメモリコントローラの機能と非常に密接に結合している場合があり、よって、キャッシュの領域がアクセス要求情報の保持に使用されることがある。そのため、物理層インターフェースに対してトレーニング作業が行われている期間中は、その期間中、積極的なアクセス要求の処理が行われないことから、そのようなキャッシュ構造へのアクセスは大幅に低減する又は停止する場合がある。よって、この期間は、キャッシュ構造内の記憶素子に対してメンテナンスタスクを行うのに適した期間を示してもいて、したがって、その期間中にそれらのメンテナンスタスクを開始するよう、制御回路からのトリガをそのようなキャッシュ構造に伝搬することができる。
【００２９】
メンテナンス作業は様々な形態を取ることができる。例えば、一実施例において、メンテナンス回路は、エラーロバスト性のメンテナンス（error robustness maintenance）を提供するために、メンテナンス作業を行うようになされたビルトインセルフテスト（ＢＩＳＴ）コントローラを具備する。特に、ＢＩＳＴコントローラによって行われるメンテナンス作業は、記憶素子におけるハードエラーの有無の判断を図るものであってもよい。例えば、１つ以上のデータ値を記憶するのに用いられる一連の記憶素子について、その１つ以上のデータ値を他のどこかで一時的にバッファリングし、その後、読み取りパターンが書き込みパターンと異なる状態を検出しようと努めるために、既知のパターンを用いて、その一連の記憶素子に対して一連の書き込み及び読み取りアクセスを行って、ひいては、ハードウェア故障を示してもよい。これは、アクセス要求が積極的に処理されている「ライブ」使用中に行われる場合には、メモリアクセス性能に大きな影響を与え得る非常に時間がかかる演習である可能性がある。しかしながら、これらの処理を物理層インターフェースのトレーニングが行われる期間に制限することにより、そのような影響はなくなり、ひいてはそのようなＢＩＳＴテストを行うのに非常に効率的な機構が提供される。
【００３０】
それに代えて、又は、それに加えて、上記メンテナンス回路は、アクセス要求により特定されたメモリアクセスの実行を向上させるために、メンテナンス作業を行うようになされたスケジューリング回路を具備してもよい。前述の、メンテナンス作業のＢＩＳＴの様式とは対照的に、スケジューリング回路によって行われるメンテナンス作業は、アクセス要求マージなどの技術やメモリアクセス性能の最適化を図るスケジューリング／再順序付け技術の利用を図ることができる。このようなメンテナンスは、システムのライブ使用時にバックグラウンドタスクとして行うことができるが、このメンテナンスを行うのにかかる時間は、記憶装置が大きくなるにつれて増加し、従って、そのようなバックグラウンドメンテナンスタスクの実行が、それらによって導入される、記憶素子へのアクセスにおける競合に起因して実際のアクセス要求処理の性能に影響を与える、もしくは、スケジューリング回路が所望のメンテナンスタスクを実行するのに十分な時間を見つけるのに苦労する可能性がある。しかしながら、物理層インターフェースのトレーニング期間中にスケジューリング回路に上記メンテナンスタスクを行わせることにより、メンテナンス回路は、ライブのデータアクセストラフィックに関して競合を導入することなく、そのようなメンテナンスタスクを行うことができる。従って、例えば、トレーニング作業が行われている期間中に記憶素子がメンテナンスを受ける速度を上昇させることにより、その期間中のメンテナンスタスクの積極性を増大させることができる。これは、物理層インターフェースのトレーニングが行われている期間中は何れにしてもメモリアクセス動作が中止されるため、メモリアクセス動作の実行に影響を与えるリスクを伴うことなく行うことができる。
【００３１】
トレーニング作業は様々な形態を取ることができる。しかしながら、一実施例においては、トレーニング作業は、物理層インターフェースとメモリ装置との接続にまたがる信号伝搬における遅延を償うために、物理層インターフェースの動作を調整する。
【００３２】
別の実施例では、本技術は、メモリ装置へのアクセスを制御する装置内でメンテナンス作業を実行する方法であって、メモリ装置へ発行されるアクセス要求を記憶装置に記憶することと、メンテナンス回路に記憶装置内に設けられた記憶素子に対してメンテナンス作業を行わせることと、記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行することと、トレーニングイベントに応答して、制御回路に物理層インターフェースのトレーニング作業を開始させることと、トレーニング作業が実行されている間、メンテナンス回路によるメンテナンス作業の実行を制御回路にトリガさせることとを含む方法を提供する。
【００３３】
次に、図面を参照して、特定の実施例について説明する。
【００３４】
図１は、一実施例に係るデータ処理システムのブロック図である。示されるように、多くの要求装置１０、１５、２０が、メモリ装置４０に保持されたデータに対するアクセス要求を発行するようになされている。この要求装置は様々な形態を取ることができ、例えば、中央処理ユニット（ＣＰＵ）、グラフィックス処理ユニット（ＧＰＵ）、キャッシュなどからなってもよい。メモリ装置４０は、要求装置１０、１５、２０から様々なアクセス要求を受け取り、メモリ装置４０内での処理のためにそれらのアクセス要求のスケジューリングを行うようになされている、それに関連するメモリコントローラ３０を有する。アクセス要求は、介在する物理層インターフェース３５を介してメモリコントローラ３０からメモリ装置４０へと発行される。メモリ装置４０はチップ外に設けられることが多く、メモリコントローラ３０とメモリ装置４０との間の物理的な接続は、高速パラレルインターフェースを提供するのに用いられる必要がある、複数の比較的長い電線に匹敵することが多いかもしれない。物理層インターフェース３５は、高速パラレルインターフェース達成することができることを確実にするため、それらの接続電線を介した高速の同期通信を維持する機構を採用する。
【００３５】
要求装置１０、１５、２０がメモリコントローラ３０と連結されるには数多くの方法があるが、図１に示す構成では、要求装置がそれを介してメモリコントローラ３０と通信を行う相互接続構造２５が介在するものと仮定している。様々な要求装置をメモリコントローラと、さらに実際には、相互接続２５に接続されるその他のスレーブ装置と相互接続するためのルーティングインターフェースを提供することに加えて、相互接続はその他の機能を備えることもできる。例えば、システム内のキャッシュの内容をコヒーレントに保つことを確実にするためにキャッシュコヒーレンスプロトコルを実装するようになされてもよい。これらのキャッシュには、各要求装置１０、１５、２０に関連して局所的に設けられるキャッシュやその他の共有キャッシュが含まれ、その一例としては、相互接続２５内に設けられる最終レベルキャッシュ６０があり得る。
【００３６】
メモリ装置４０は様々な形態を取ることができるが、一実施例では、一連のランク、バンク、行、列で通常の方法により構築され得るダイナミックランダムアクセスメモリ（ＤＲＡＭ）装置である。
【００３７】
一実施例では、１つのメモリコントローラ３０がメモリ装置全体を制御するかもしれない一方で、幾つかの実施例では、メモリ装置は、その各部分が関連する別のメモリコントローラと関連する物理層インターフェースを有する複数の部分に分けられる。ＤＲＡＭの例を考えた場合、メモリ装置は、それぞれのチャネルが別個のメモリコントローラ３０、４５と、関連する物理層インターフェース３５、５０を有する複数のチャネル４０、５５に分けられてもよい。その他のメモリコントローラ４５と物理層インターフェース５０は、その詳細が図２を参照して後述される、メモリコントローラ３０と物理層インターフェースと同様に構築されるであろう。
【００３８】
一実施例において、様々な要求装置１０、１５、２０、相互接続２５、メモリコントローラ３０、４５は全てシステムオンチップ（ＳｏＣ）内に設けられてもよい。物理層インターフェース３５、５０も、一実施例では、チップ上に設けられてもよいし、チップ外でメモリコントローラ３０、４５とのインターフェースに設けられてもよい。一実施例においては、メモリ装置４０、５５はチップ外に設けられ、接続電線を介して物理層インターフェース３５、５０と接続されている。
【００３９】
一般に、様々な要素間で発送される通信に使用されるオンチップ通信プロトコルが存在するであろう。一実施例において、オンチップで使用されるプロトコルは、メモリ装置との通信に使用されるプロトコルとは異なっていてもよく、様々な相互接続について図１に概略的に示されている。例えば、オンチップ通信プロトコルは、書き込みデータと読み取りデータの送信用の別々の書き込み及び読み取りデータチャネルとともに、要求装置１０、１５、２０から要求が発行され得る少なくとも１つのチャネルを有してもよい。この要求チャネルは、実際、別の１つ以上のチャネル、例えば、別の書き込みアドレスチャネルと別の読み取りアドレスチャネルを有してもよい。また、要求装置に応答を送り返すために応答チャネルが設けられてもよい。応答データは様々な形態を取ることができ、例えば、書き込み要求が処理のために受信されたことを確認する確認信号を含んでもよい。応答チャネルは、特定のアクセス要求がある理由で失敗したときを示すのに使用することもできる。
【００４０】
特定の一実施例において、オンチップ通信プロトコルは、イギリスはケンブリッジ市のＡＲＭ社によって開発されたＡＭＢＡ拡張可能インターフェース（ＡＸＩ）プロトコルであってもよい。
【００４１】
一実施例において、メモリコントローラ３０、４５は、保留中のアクセス要求のスケジューリングを取り扱うだけでなく、オンチップ通信プロトコルからチップ外のメモリ装置４０、５５との通信に使用される通信プロトコルへと変換するプロトコル変換も行うであろう。ＤＲＡＭメモリ装置については、通信プロトコルは、データ経路を介した書き込み及び読み取りデータの伝搬と共に、コマンド伝搬経路を介した様々な種類の一連のコマンドの発行を必要とするかもしれない。
【００４２】
図２は、一実施例に係るメモリコントローラ３０と物理層インターフェース３５との内部に設けられた要素をより詳細に示すブロック図である。メモリコントローラ３０は、相互接続２５を越えて用いられる通信プロトコルとメモリ装置４０との通信のために用いられるプロトコルとの変換を行うためのプロトコル変換器１００を備える。各要求が受信されると、それは変換され、１つ以上の保留アクセス要求バッファ１１０に置かれる。バッファ内の保留中のアクセス要求のそれぞれは、行われるアクセスのタイプなどの関連情報と共に、アクセスされるアドレスを特定するであろう。書き込み要求の場合は、１つ以上の保留アクセス要求バッファで書き込みデータのバッファリングを行うこともできる。
【００４３】
スケジューラ回路１２０は、メモリ装置へと保留中のアクセス要求を発行する順番を決めるため、１つ以上の保留アクセス要求バッファの内容についてスケジューリング作業を行うのに用いられる。これにより、メモリアクセス性能の最適化を図るために、メモリ装置の構造や機構を考慮に入れることができる。例えば、ＤＲＡＭメモリにおいて特定のページが開かれた場合、一般的には、そのページを閉じて別のページを開くより、そのページの内容にアクセスし続ける方がより効率的である。よって、ＤＲＡＭメモリで開かれているページに複数のアクセスを行うことを目的として、スケジューラによって保留中のアクセス要求の順番を変えることができる。アクセス実行回路１３０は、更に物理接続を介してメモリ装置４０へと伝搬するために、バッファ１１０から（スケジューラ１２０に決められた順番で）物理層インターフェースへ選択されたアクセス要求を発行するのに用いられる。
【００４４】
物理層インターフェース３５は、アクセスのタイプやアクセスされているアドレスを特定するコマンド信号を発行するコマンドモジュール１４５と、メモリ装置へ書き込みデータを出力する、又は、メモリ装置から読み取りデータを受け取るデータモジュール１４０とを含む。
【００４５】
同期制御部１５０は、物理層インターフェース３５とメモリ装置４０との間の物理的接続を介した同期通信を維持するために、コマンドモジュールとデータモジュールの動作を制御する。同期制御ブロックには、物理層インターフェースとメモリ装置との間の経路における相対及び絶対遅延の両方を考慮に入れるように構成された位相ロックループ回路や遅延ロックループ回路などの多数の回路が含まれるであろう。一実施例では、タイミングの基準を提供するために、コマンドモジュールからのコマンド信号に関連してクロック信号が発行され、クロック信号の適切なクロックエッジでデータがラッチされることを確実にするために、ストローブ信号がデータ信号に関連して発行される。
【００４６】
時間の経過と共に、例えば、動作温度や電圧の変化などの様々な要因で、物理層インターフェース３５とメモリ装置４０との接続を介した信号伝搬にドリフトが生じることがある。従って、同期制御ブロック１５０の構成を更新する（位相遅延などを調整する）ために、トレーニング作業を物理層インターフェース３５に周期的に行う必要がある場合がある。必要な場合、そうなり次第、そのようなトレーニング作業を行うよう、物理層トレーニング回路１６０を提供することができ、数多くの既知の技術を用いて、読み取り／書き込みレベリング、データアイトレーニング、ビットごとのデータデスキュー制御、ＰＶＴ（プロセス、電圧、温度）補償などの数多くの処理を適用することができる。トレーニング回路１６０は、周期的に、例えば、所定期間の経過時に、トレーニング手続を開始するようになされてもよいし、そのようなドリフトの問題が、エラーがじきに発生するという確率が受け入れられないほどに達しているときを検出することを企図して、メモリ装置との接続を介して送受信されている信号の品質を積極的に監視するようになされてもよい。監視し得る信号の性質には、例えば、データ収集の信号対ノイズ比といった数多くの性質がある。閾値を超えたときに、トレーニング作業を開始し得る。
【００４７】
トレーニング作業が行われる時はいつでも、保留中のアクセス要求の実行を引き延ばしにする必要があり、したがって、物理層インターフェース３５がトレーニング動作を行っている期間中は、アクセス実行回路１３０から保留中のアクセス要求が発行されることはない。
【００４８】
１つ以上の保留アクセス要求バッファ１１０を形成するのに用いられる記憶構造は、様々な形態を取ることができる。しかしながら、一実施例において、少なくとも、書き込みデータ（及び、相互接続へとさらに伝搬するためにアクセス実行回路を介してプロトコル変換器へ戻される際に一時的にバッファリングされる読み取りデータ）を記憶するために使用される記憶素子は、ＳＲＡＭセルを有する。幾つかの実施例では、アクセス要求情報の残りの部分、例えば、アドレスやアクセスタイプの情報は、フロップなどの様々な記憶構造に記憶することができ、又は、そのような情報は望むならばＳＲＡＭセルに記憶してもよい。
【００４９】
一実施例では、個々のＳＲＡＭセルの動作における障害を示すハードエラーの有無を判断するために、ＳＲＡＭセルを周期的にチェックするビルトインセルフテスト（ＢＩＳＴ）コントローラ１７０が設けられる。そのようなＢＩＳＴテスト処理は、製造時、および、随意にブート時に行われるのが一般的であるが、そのようなテストをメモリコントローラの「ライブ」動作時に行うことは通常必要とはこれまでは考えられていなかった。しかしながら、特定の新たに出現したアプリケーションはエラーに非常に敏感になってきており、そのようなアプリケーションでは、メモリコントローラの使用中に上記ＢＩＳＴテストを周期的に行い、故障セルを回避して使用されないようにする（多くの場合、そのような回避されたセルの代わりに一定数の冗長セルが設けられ得る）ことができれば有利である。
【００５０】
しかしながら、ＢＩＳＴテスト処理は比較的時間がかかり、メモリアクセス処理の全体的な性能に影響を与える可能性がある。例えば、一般的なＢＩＳＴテスト処理では、一連のメモリセルからの現在のデータコンテンツを一時的にバッファに記憶し、セルのいずれかがハードエラーを示している状態を検出するために、既知のパターンがセルに書き込まれた後セルから読み出される１つ以上の書き込み及び読み取りシーケンスを行ない得る。テスト処理をパスしたと仮定して、一時的にバッファリングされたデータを再びセルに書き込むことができ、ＢＩＳＴコントローラ１７０は、上記一連のセルがテストをパスしたことを示す記録を更新することができる。テストに失敗したセルがある場合は、ファームウェアエージェントなどの好適なエージェントに対してその失敗の状態についてフラグを立てることができ、そして、１つ以上の影響を受けたＳＲＡＭセルを無効にして、理想的には冗長セルをその代わりに利用する処理を行うことができる。必要とされる複数の書き込み及び読み取りシーケンスに起因して、保留アクセス要求の処理に必要な通常の読み書き動作を行う際にＳＲＡＭセルへのアクセス競合の重大な原因が生起され、メモリアクセス処理性能に大きな悪影響を及ぼす可能性があることが理解されよう。
【００５１】
一実施例において、物理層インターフェース３５についてトレーニング作業を行う間にそのようなＢＩＳＴテストを行うＢＩＳＴコントローラ１７０を設けることで、この潜在的な影響は軽減される。特に、物理層インターフェース３５に対してトレーニング作業を開始すべきであるとトレーニング回路に判定させるトレーニングイベントが発生するときに、ＢＩＳＴコントローラ１７０にトリガを発行してＢＩＳＴメンテナンス作業の実行をトリガするために、物理層トレーニング回路１６０が設けられる。これは、ＢＩＳＴメンテナンス作業を、積極的な保留アクセス要求が処理され得ず、よって上記競合問題が発生しない期間に実行することができることを意味する。
【００５２】
トレーニング回路１６０は、同期制御ブロック１５０内に保持された様々な同期制御パラメータの最適な調整方法を判定するために様々な信号を監視しつつ、一連のテストコマンドをメモリへ発行させるために同期制御ブロック１５０と連携することによってトレーニング作業を行うのに用いられる専用ハードウェア回路であってもよい。このような実施例では、トレーニング回路は、図２に示すようなＢＩＳＴコントローラ１７０に直接にトリガ信号を発行可能な専用接続部を備えてもよい。
【００５３】
しかしながら、代替実施例では、トレーニング回路１６０は、上記トレーニング作業を行うためにファームウェアを実行するより汎用のプロセッサによって実装されてもよい。一般的に、そのようなプロセッサは、物理層インターフェース３５に対してトレーニング作業を行うだけでなく、メモリコントローラの特定の制御レジスタ１８０に値を設定してメモリコントローラの動作を制御するためにも、周辺機器用バスを介してメモリコントローラ３０や物理層インターフェース３５の様々な要素と接続されてもよい。そのような実施例では、制御レジスタ１８０のうちの１つは、所定値に設定された場合に、ＢＩＳＴコントローラ１７０によるＢＩＳＴメンテナンス作業を開始するために例外ルーティンを行わせる、割り込みをトリガする値を維持するのに利用することができる。よって、図２に点線で示すように、トリガを直接ＢＩＳＴコントローラに発行するのではなく、上記実施例では、ＢＩＳＴコントローラ１７０によるＢＩＳＴメンテナンス作業の実行をトリガするために、トレーニング回路１６０が該当する制御レジスタ１８０を更新してもよい。
【００５４】
ファームウェアの手法を採用した代替実施例では、制御レジスタを更新する方法の代わりに、その他のハンドシェイキング方法を利用することもできる。
【００５５】
このようにＢＩＳＴコントローラ１７０がＢＩＳＴメンテナンス作業を実行するようトリガされると、ＢＩＳＴコントローラがどのくらいそのメンテナンス作業を継続して行うべきかを判定するのに利用可能な機構が数多く存在する。物理層インターフェース３５にトレーニング作業が行われている期間中にＳＲＡＭセルのブロック全体についてＢＩＳＴメンテナンスが行われることが保証される場合、全てのＳＲＡＭセルに全ＢＩＳＴテスト処理を行い、次いで終了すればよい。しかしながら、ＢＩＳＴテスト処理がトレーニング作業の実施にかかる時間よりも長く続く可能性がある場合、ＢＩＳＴテスト処理は、各段階がトレーニング作業に一致する複数の段階で行われることを確実にするような対策を講じることが好ましい。
【００５６】
後者の場合、一実施例では、トレーニング作業の予測時間に関する情報をＢＩＳＴコントローラに提供してもよい。これは、トリガ情報に関連してトレーニング回路１６０により直接提供されてもよく、それによってＢＩＳＴコントローラは、ＢＩＳＴテスト処理の対象とするＳＲＡＭセル数を調整する。あるいは、ＢＩＳＴコントローラは、トレーニングイベントの様々な種類について予測されるタイミングに関する情報を提供する記憶された情報１９０へのアクセスを有してもよく、トレーニング回路１６０は、トリガ又は更新の信号に関連して、現在のトレーニング作業によって行われるべきトレーニングのタイプに関する情報を提供してもよい。特に、トレーニングを開始させるトレーニングイベントの性質によっては、行われるトレーニングのタイプが異なることがあり、よって期間も異なることがある。しかしながら、実行されているトレーニングのタイプに関する情報をＢＩＳＴコントローラに提供し、記憶装置１９０内の情報へのアクセスを有することにより、ＢＩＳＴコントローラは、同様に、ＢＩＳＴテストを行うのに利用可能な適切な時間を決定することができ、その結果、ＢＩＳＴテストの対象とされるＳＲＡＭセルを選択することができる。
【００５７】
ＢＩＳＴコントローラ１７０は、どのＳＲＡＭセルに対してテストが行われたかを記録しておくことが可能であり、いずれは全てのＳＲＡＭセルに対してＢＩＳＴテストが行われるよう、それぞれのトレーニング作業が行われるごとに別のブロックのＳＲＡＭセルに対してテストを行うことができる。
【００５８】
更に別の代替例として、トレーニング回路１６０からタイミング情報が提供されない場合、ＢＩＳＴコントローラは、所定期間にわたって単にＢＩＳＴテストを行うようになされてもよい。例えば、この所定期間は、トレーニング作業が完了するまでに確実にＢＩＳＴテストが完了するように、トレーニング作業の最短予測期間を表すよう設定されてもよく、従って、ＢＩＳＴテストは、物理層インターフェース３５に対するトレーニング作業の終了に続いてシステムが再びライブになる場合に保留アクセス要求の処理効率に影響を与えることがない。
【００５９】
上記の例では、トレーニング作業の実行中に行われるメンテナンス作業がＢＩＳＴテスト処理であるが、メンテナンス作業は、その代わりに、又は、それに加えて、その他の形態を取ることができる。例えば、スケジューラ１２０は、メモリアクセス処理の全体的な性能の向上を図るために、メモリコントローラのライブ動作中にバックグラウンドタスクとして特定のメンテナンス作業を行うように前もってなされていてもよい。こうすることで、例えば、特定の要求をマージすることを企図することができ、保留アクセス要求バッファ１１０のコンテンツに対して特定のスケジューリング／再順序付け処理を行うことができる。これらは、通常の使用時にバックグラウンド動作として行うことができるが、ＳＲＡＭセルへの読み取り及び書き込みアクセスに引き起こす競合のため、そのメンテナンス自体がアクセス要求の処理量に影響を与え始めるまでに、メンテナンスのそのようなタイプのうちのどのくらいが実行可能かについては制限がある。そのため、一実施例においては、任意に、スケジューラ１２０には（又は、実際には、ＢＩＳＴコントローラ１７０ではなくスケジューラに）トリガも提供されることにより、トレーニング回路１６０が物理層インターフェース３５に対してトレーニング作業を行っている期間中にスケジューラが上記メンテナンス作業をより積極的に行うことが可能となる。特に、その期間中は保留アクセス要求の処理が行われないことが分かっているため、競合の問題が排除され、スケジューラはＳＲＡＭセルに上記メンテナンス作業が行われる速度を上昇させることができる。望まれれば、スケジューラ１２０は、そのようなメンテナンス作業のスケジューリングを積極的に行うのに適した時間を決めるために、記憶装置１９０内のトレーニングイベントタイプのタイミングにもアクセスを有することができる。
【００６０】
図３は、一実施例におけるトレーニング回路１６０の動作を示すフロー図である。ステップ２００では、トレーニング回路は、物理層（「ｐｈｙ」）トレーニングイベントが発生したかどうかを判定する。前述のように、そのようなトレーニングイベントは、タイマーの経過や、例えば、様々な物理配線を越えた信号のドリフトにより、接近するエラーポイントに達したことを示す、物理層インターフェース３５を介して発行される様々な信号のトレーニング回路の監視により発生し得る。
【００６１】
トレーニングイベントが検出されると、ステップ２０５で、行われるトレーニングのタイプを決定する。ステップ２１０で、１つ以上の保留アクセス要求バッファ１１０のＳＲＡＭセルに対するＳＲＡＭメンテナンスを開始するトリガが（必要であれば対応するタイミング情報と共に）送られ、そしてステップ２１５で、物理層インターフェース３５上でトレーニング作業が行われる。その後、処理はステップ２００に戻り、もしくは、随意で、トレーニング回路はトレーニング作業が完了したことをＳＲＡＭメンテナンス回路に通知するステップ２２０に移る。一旦トレーニング作業が完了すると、メモリコントローラ３０は、保留アクセス要求がメモリ装置４０への発行のために再開され得るライブ処理に戻ることができるから、この情報は、その後メンテナンス回路（ＢＩＳＴコントローラ１７０、もしくはスケジューラ１２０）が進行中のメンテナンス作業を終了するのに利用され得る。
【００６２】
図４は、一実施例によって実行され得るＳＲＡＭメンテナンス作業を示すフロー図である。この処理は、ＢＩＳＴコントローラ１７０の動作を参照して説明されているが、それが特定のメンテナンス作業を行うことによってトリガ信号に応答するようになされていれば、スケジューラ１２０によって同様の論理プロセスを適用することも可能である。
【００６３】
ステップ３００で、トレーニング回路からトリガを受け取ったかどうかを判定し、受け取った場合には、ステップ３０５で物理層トレーニング作業の長さを決定可能かどうかが判断される。これは、前述のように、トレーニング回路がトレーニング作業を実行するのにかかると予測される時間を直接特定することに起因する、又は、トレーニング回路が実行されているトレーニング作業のタイプを特定し、ＢＩＳＴコントローラが上記トレーニングの予測時間を決定する追加情報にアクセスを有しているからであり得る。トレーニング作業に関連して予測される時間が決定可能であると仮定すると、処理は、どのＳＲＡＭセル（図４で、ＳＲＡＭエントリとも記載される）にＳＲＡＭメンテナンスを行うかを決めるために、メンテナンス回路が以前のメンテナンスの記録を参照するステップ３１０に進む。一実施例では、ＳＲＡＭメンテナンスは、最も長い間テストが行われていないセルは、現在のＳＲＡＭメンテナンスタスクのブロックの対象となるように、ラウンドロビン方式で行ってもよい。そして、現在の反復中にＳＲＡＭメンテナンスの対象となるＳＲＡＭセル数が、ステップ３０５で得られたタイミング情報を考慮して決定される。
【００６４】
ステップ３１５で、選択されたＳＲＡＭセルに対してＳＲＡＭメンテナンスが行われ、その後、ステップ３２０で、それらのセルがＳＲＡＭメンテナンスの対象であったことを示すようにＳＲＡＭメンテナンスの記録が更新される。そして、処理はステップ３００に戻る。
【００６５】
ステップ３０５でトレーニング作業の予測時間が決定可能ではないと判断された場合、処理は、ＳＲＡＭメンテナンスが行われるべき最初のＳＲＡＭセルを決定するために以前のメンテナンスの記録を参照するステップ３２５へと進む。その後、ステップ３３０で、所定の期間にわたり、もしくは、トレーニング作業の完了がメンテナンス回路に通知されるまで、ステップ３２５で特定された最初のエントリから始めて、一連のＳＲＡＭセルにＳＲＡＭメンテナンスを行う。この時点で、処理は、ＳＲＡＭメンテナンスの記録が更新されるステップ３２０へと進んで、ステップ３００へと戻る。
【００６６】
これまでに説明した実施例では、１つ以上の保留アクセス要求バッファ１１０内にあるＳＲＡＭセルに対してメンテナンス作業を行うものとしたが、そのようなメンテナンス作業は、更に、もしくは、その代わりに、システム内のその他の記憶構造に対して行われてもよい。ある特定の例として、図１に示される最終レベルキャッシュ６０は、少なくともそのキャッシュのわずかではない部分がメモリ装置４０への保留アクセス要求に関する情報を記憶するために用いられるよう、メモリコントローラと比較的密接に結合されているかもしれない。このキャッシュは、特定のＳＲＡＭメンテナンス作業の対象となることが好ましいＳＲＡＭセルから形成されてもよい。上記レベルのキャッシュがメモリコントローラと非常に密接に結合されているならば、物理層インターフェース３５がトレーニング作業の対象となっている期間は、そのキャッシュに対するアクセスが大幅に減少する又は実際には停止する可能性が高い。これは、すなわち、そのキャッシュに対して必要なＳＲＡＭメンテナンス作業を行うのに理想的な期間を表している。従って、物理層インターフェース３５にトレーニング作業が行われている期間中にキャッシュに対するメンテナンスタスクの実行を開始するために、トレーニング回路により発行されたトリガ信号は、必要であれば、上記キャッシュ６０のために、メンテナンス制御回路に発行されてもよい。
【００６７】
図５は、一実施例におけるスケジューラ１２０の動作、特に、スケジューラがバックグラウンドタスクとして特定のメンテナンス作業を行うが、それらのメンテナンス作業の実行を加速させるためにトレーニング回路からのトリガ信号に応じるよう構成され得る実施例におけるメンテナンス作業についてのスケジューラの動作を示すフロー図である。ステップ３５０で、トレーニング回路１６０からトリガを受け取ったかどうかを判定する。受け取っていない場合は、ステップ３５５によって示されるように、スケジューラは、メモリコントローラによってアクセス要求が積極的に処理されるのと同時に、バックグラウンドメンテナンスタスクの実行を継続する。これらのバックグラウンドメンテナンスタスクには、前述のように、特定のスケジューリング／順序付けタスク、及び／又は要求にマージのタスクが含まれ得る。同時に、スケジューラは、アクセス実行回路１３０が物理層インターフェース３５を介してメモリ装置４０へ、どのアクセス要求を発行するかを決めるために、バッファ内の保留アクセス要求間で、通常、調停を行う。この処理は、ステップ３５０でトリガ信号の受信が検出されるまで継続される。
【００６８】
一旦トリガ信号が受信されると、処理は、その代わりに、図５に示されるフローの左側へと分岐する。物理層トレーニング作業が発生している間は保留アクセス要求は発行されないため、ステップ３６０で調停が中断される。その後、ステップ３６５でスケジューラが積極的なメンテナンスを実施し、ここでは、通常の読み取り／書き込み動作によるＳＲＡＭの帯域幅についての競合が生じないことを利用して、通常はバックグラウンドメンテナンスタスクとして行われるメンテナンスタスクが、加速された速度で行われる。特に、現時点でメモリコントローラにより処理されるメモリアクセスがないため、通常の読み取り／書き込み動作は現時点で行われていない。調停の中断と、積極的なメンテナンスの実行は、ステップ３７０で物理層インターフェース３５についてのトレーニング作業が終了したと判断されるまで継続され、この時点で処理はステップ３５０へ戻る。この時点ではトリガを受信しておらず、処理は、スケジューラの通常動作が再開されるステップ３５５へと進む。
【００６９】
図５に概略的に示されるようにスケジューラを動作させることは、１つ以上のバッファ１１０の大きさが大きくなる場合に特に効果的であり得る。例えば、保留アクセス要求をどのように再順序付けするかについてスケジューラに通知する情報がＳＲＡＭメモリに記憶されている場合、この順序付け機能は、比較的長い時間がかかり得るか、又は、他のＳＲＡＭエントリを通して読み出すのにより長い時間をかけることによって、より良いものとなり得、物理層インターフェースにトレーニング作業が行われている期間に上記タスクの実行を集中することにより、メモリアクセス要求の全体的な処理性能に影響を与えずに、この追加の時間を融通することができる。
【００７０】
上記実施例から、システムトランザクションを停止する必要がすでに存在する期間にメンテナンス作業の実行を集中することによって、物理層インターフェースについてのトレーニング作業の実行の要求に起因してメモリコントローラに関連する記憶素子に関するメンテナンス作業を取り扱うための改善された機構が、このような実施例によって提供されることがわかるであろう。特に、物理層インターフェースのトレーニングを実行することによって生じるダウンタイムを、その期間中に記憶素子に対して特定のメンテナンス作業を行って、これらのメンテナンス作業の実行がシステムのメモリアクセス性能に更なる悪影響を及ぼさないようにして、利用する。必要なメンテナンスタスクのランタイムをトレーニング作業の実行に必要なタイミングと一致しなければ、メンテナンス回路は、各物理層トレーニングの処理中にＳＲＡＭメモリアレイの特定の部分にのみテストが行われるように部分的なメンテナンスを行うよう構成することができ、そうすることで、トレーニング作業の複数の反復により、ＳＲＡＭアレイ全体のテストを行うことができる。
【００７１】
本願において、「〜するよう構成される」という表現は、装置の要素が規定の動作を実行可能な構成を有していることを指すのに用いられる。この文脈において、「構成」とは、ハードウェアやソフトウェアを相互接続する配置や方法を指す。例えば、装置は規定の動作を提供する専用ハードウェアを有していてもよく、もしくは、プロセッサやその他の処理装置がその機能を実行するようプログラミングされていてもよい。「〜するよう構成される」とは、装置の要素が規定の動作を提供するために何らかの方法で変更される必要があるということを意味するものではない。
【００７２】
これまで本明細書において添付図面を参照して本発明の例示的な実施例を詳細に説明したが、本発明はこれらのそのとおりの実施例に限定されるものではなく、添付の請求項に規定される本発明の範囲及び精神から逸脱することなく、それらに様々な変更、追加、改良が当業者によってなされ得ることを理解すべきである。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴の様々な組み合わせが独立請求項の特徴とともになされ得る。
【図１】
2018005902.tif 000003
【図２】
2018005902.tif 000004
【図３】
2018005902.tif 000005
【図４】
2018005902.tif 000006
【図５】
2018005902.tif 000007
【外国語明細書】
2018005902000001.pdf