JP2018005902A - メモリ装置へのアクセスを制御するための装置及びそのような装置内においてメンテナンス作業を行う方法 - Google Patents
メモリ装置へのアクセスを制御するための装置及びそのような装置内においてメンテナンス作業を行う方法 Download PDFInfo
- Publication number
- JP2018005902A JP2018005902A JP2017115652A JP2017115652A JP2018005902A JP 2018005902 A JP2018005902 A JP 2018005902A JP 2017115652 A JP2017115652 A JP 2017115652A JP 2017115652 A JP2017115652 A JP 2017115652A JP 2018005902 A JP2018005902 A JP 2018005902A
- Authority
- JP
- Japan
- Prior art keywords
- maintenance
- training
- circuit
- work
- access
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/161—Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1064—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in cache or content addressable memories
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3037—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C29/00—Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
- G11C29/04—Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
- G11C29/08—Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
- G11C29/12—Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2207/00—Indexing scheme relating to arrangements for writing information into, or reading information out from, a digital store
- G11C2207/22—Control and timing of internal memory operations
- G11C2207/2254—Calibration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Debugging And Monitoring (AREA)
- Human Computer Interaction (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Memory System (AREA)
Abstract
【課題】メモリ装置へのアクセスを制御するのに用いられる装置内でメンテナンス作業を実行する。
【解決手段】メモリ装置へ発行されるアクセス要求を記憶する記憶装置と、記憶装置内に設けられた記憶素子に対してメンテナンス作業を行うメンテナンス回路と、記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行するメモリアクセス実行回路と、トレーニングイベントに応答して物理層インターフェースのトレーニング作業を開始する制御回路とを具備し、トレーニング作業が実行されている間、メンテナンス回路によるメンテナンス作業の実行をトリガするように制御回路がトレーニングイベントに応答する。トレーニング作業中は保留アクセス要求がメモリ装置へ発行されず、この期間のメンテナンス作業の実行で、メンテナンス作業の実行がアクセス要求の処理に与え得る影響が回避される。
【選択図】図2
【解決手段】メモリ装置へ発行されるアクセス要求を記憶する記憶装置と、記憶装置内に設けられた記憶素子に対してメンテナンス作業を行うメンテナンス回路と、記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行するメモリアクセス実行回路と、トレーニングイベントに応答して物理層インターフェースのトレーニング作業を開始する制御回路とを具備し、トレーニング作業が実行されている間、メンテナンス回路によるメンテナンス作業の実行をトリガするように制御回路がトレーニングイベントに応答する。トレーニング作業中は保留アクセス要求がメモリ装置へ発行されず、この期間のメンテナンス作業の実行で、メンテナンス作業の実行がアクセス要求の処理に与え得る影響が回避される。
【選択図】図2
Description
本技術は、メモリ装置へのアクセスを制御するための装置及びそのような装置内においてメンテナンス作業を行う方法に関する。
メモリ装置へのアクセスを制御するために用いられる装置は、数多くの送信元からアクセス要求を受け取り、メモリ装置へ発行されるアクセス要求のバッファリングが可能な記憶装置へのアクセスを有するかもしれない。そのような記憶装置内の記憶素子の少なくとも幾つかについて行うことが望ましいメンテナンス作業には様々な種類のものがある。例えば、メモリアクセス作業の全体的な性能向上を図るために行われるメンテナンス作業もあれば、例えば、ハードエラーの発生を検出しようとすることによってロバスト性向上を図るために行われるメンテナンス作業もある。しかしながら、そのようなメンテナンス作業の性能は、装置の全体的な性能に影響を与えることがある。
従って、そのようなメンテナンス作業を取り扱うための改善された技術を提供することが望ましい。
第1の構成例において、メモリ装置へのアクセスを制御する装置であって、メモリ装置へ発行されるアクセス要求を記憶する記憶装置と、記憶装置内に設けられた記憶素子に対してメンテナンス作業を行うメンテナンス回路と、記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行するメモリアクセス実行回路と、トレーニングイベントに応答して、物理層インターフェースのトレーニング作業を開始する制御回路とを具備し、制御回路が更に、トレーニング作業が実行されている間、メンテナンス回路によるメンテナンス作業の実行をトリガするようにトレーニングイベントに応答する、装置が提供される。
別の構成例において、メモリ装置へのアクセスを制御する装置内でメンテナンス作業を実行する方法であって、メモリ装置へ発行されるアクセス要求を記憶装置に記憶することと、メンテナンス回路に記憶装置内に設けられた記憶素子に対してメンテナンス作業を行わせることと、記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行することと、トレーニングイベントに応答して、制御回路に物理層インターフェースのトレーニング作業を開始させることと、トレーニング作業が実行されている間、メンテナンス回路によるメンテナンス作業の実行を制御回路にトリガさせることとを含む方法が提供される。
更なる構成例において、メモリ装置へのアクセスを制御する装置であって、メモリ装置へ発行されるアクセス要求を記憶するための記憶手段と、記憶手段内に設けられた記憶素子に対してメンテナンス作業を行うためのメンテナンス手段と、記憶手段から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行するためのメモリアクセス実行手段と、トレーニングイベントに応答して物理層インターフェースのトレーニング作業を開始するための制御手段とを具備し、制御手段が更に、トレーニング作業が実行されている間、メンテナンス手段によるメンテナンス作業の実行をトレーニングイベントに応答してトリガする、装置が提供される。
本技術を、添付の図面に示されるその実施例を参照して、単に例として、更に説明する。
添付図面を参照して実施例を議論する前に、実施例について以下に説明する。
現代のシステムの多くでは、システムの多くの構成要素がオンチップ集積されている場合や、1つ以上の構成要素がメモリ装置と通信を行う必要がある場合がある。メモリ装置は様々な形態を取ることができ、一例としてはダイナミック・ランダム・アクセス・メモリ(DRAM)があり、現代のシステムでは記憶容量は極めて大きい。しばしば、メモリ装置自体は外部に設けられ、オンチップメモリコントローラがそのメモリ装置へのアクセスを制御するために用いられることがある。
メモリコントローラは、一般的に、メモリ装置へ発行されるアクセス要求のバッファリングが可能な記憶装置へのアクセスを有する。そのような記憶装置内における少なくとも幾つかの記憶素子に対して行うことが望ましいメンテナンス作業には様々な種類のものがある。例えば、特定のメンテナンス作業は、例えば、特定のアクセス要求をマージすることにより、及び/又は、それらがメモリ装置へ発行される前に記憶装置内でメモリ要求を整理するために特定のスケジューリング/順序付け機能を実行することにより、メモリアクセス作業の全体的な性能向上を図るために行われ得る。そのようなタスクは、バックグラウンド作業として行われ得るが、記憶装置へのアクセス帯域幅について、メモリ装置へのアクセスを行うためにアクセス要求を処理する際に必要な記憶装置での通常の読み取り/書き込み動作と、必要なメンテナンスタスクを行うために必要な記憶装置での読み取り/書き込み動作との間に競合が生じるだろう。このようなバックグラウンドメンテナンスタスクは、したがって、特に記憶装置の大きさ、すなわち、メンテナンスの対象となる記憶素子の数が増加するにつれて、性能に影響を与える可能性がある。
更に、その他のメンテナンス作業も行われることが望ましいかもしれない。例えば、記憶素子の正常動作をチェックし、とりわけハードエラーが存在したときに検出するために、ビルトインセルフテスト(BIST)作業を実行することができる。従来、このようなBISTタスクは、極めてエラーに弱いアプリケーションなどの特定のアプリケーションにおいて、製造テストの一部として、もしくは、ブート時にしか行われていなかったかもしれないが、そのようなBISTテストをメモリコントローラのライブ使用時にメンテナンス作業として行うようにすることも望ましいかもしれない。しかしながら、そのようなメンテナンス作業の性能は、装置の全体的な性能に影響を与える可能性が高い。
従って、本明細書に記載される実施例によって、そのようなメンテナンス作業を取り扱うための改善された技術の提供が図られる。
一実施例によれば、メモリ装置へ発行されるアクセス要求を記憶する記憶装置と、その記憶装置内に設けられた記憶素子に対してメンテナンス作業を行うメンテナンス回路とを備えた、メモリ装置へのアクセスを制御する装置が提供される。記憶装置から選択されたアクセス要求をメモリ装置へ発行するメモリアクセス実行回路も設けられる。アクセス要求の発行は、メモリアクセス実行回路からアクセス要求を受け取り、メモリ装置へのアクセス要求のその先の伝搬を管理する、介在する物理層インターフェースを介して発生する。物理層インターフェースは、メモリ装置との物理的接続の性質を考慮して、メモリ装置との通信を管理するために設けられる。この物理的接続は、一般的に、複数の比較的長い物理的な有線接続を含み、パラレルインターフェースとして高速で動作することが要求されるであろう。物理層インターフェースは、メモリ装置との物理的接続にわたって同期通信を維持するよう動作する。
物理的接続の性質に起因して、様々な信号を正常に同期する能力に影響を及ぼし得る時変効果を引き起こすことがあり、よって、メモリ装置との同期通信を確保するのに用いられる位相遅延回路などの必要な再調整の実行を可能にするため、そのような物理層インターフェースは、物理的接続を介してテストコマンドがメモリコントローラへ発行される周期的なトレーニング作業を行う必要があることが一般的である。特に、物理層インターフェースのトレーニング作業を開始するために、トレーニングイベントに反応する制御回路が設けられてもよい。トレーニングイベントは、例えば、周期タイマーの経過や、例えば物理層インターフェースとメモリ装置との間の物理的接続を介して受け渡しされる信号の1つ以上の性質の分析による接近するエラー状態の兆候など、様々な形態を取ることができる。
本明細書に記載された実施例によれば、物理層インターフェースについて周期的なトレーニング作業を行う必要を利用して、記憶装置内に設けられる記憶素子に対してメンテナンス作業も行うためにその期間を用い、これにより、そのようなメンテナンス作業の性能への潜在的な影響を隠蔽することが可能になる。特に、物理層インターフェースについてトレーニング作業の実行中に保留中のアクセス要求を処理することはできず、したがって、その期間中に行われる積極的なメモリアクセス処理は存在しない。記載された実施例によれば、制御回路は、トレーニング作業の実行中にメンテナンス回路によるメンテナンス作業の実行をトリガするために、トレーニングイベントに応答する。よって、メンテナンス作業は、保留中のアクセス要求がいかなるイベントにおいても処理不可能な時に行われ、したがって、その期間にメンテナンス作業を行ってもそれ以上メモリアクセス性能に影響を与えることはない。
これにより、物理層インターフェースにトレーニング作業が行われることに起因して、メモリアクセス機能にすでに「ダウンタイム」が存在する期間に上記メンテナンス作業の実行をトリガすることにより、メンテナンス作業の実行を容易にする非常に効率的な機構が提供される。これは、実行することが望ましいメンテナンスタスクの量が、記憶素子へのアクセスにとって競合の原因を生じさせることでメモリアクセス処理の全体的な性能に影響を与え得るレベルであるという状況下で特に有効となり得る。特に、上記記憶素子は、メモリ装置の必要なデータにアクセするために、保留中のアクセス要求を正常に処理しつつアクセスを行う必要があり、もしメンテナンス作業でも同時に記憶素子へのアクセスを行う必要があった場合、性能を、特に、必要とされるメンテナンスタスク量の増加につれて、低下させる可能性がある。
制御回路が、トレーニングイベントに応じて、メンテナンス回路によるメンテナンス作業の実行をトリガする方法は数多くある。例えば、一実施例において、制御回路は、メンテナンス作業の実行をトリガするために、メンテナンス回路に制御信号を発行するよう手配されていてもよい。従って、そのような実施例では、制御回路は、メンテナンス作業の実行をトリガするため、メンテナンス回路に直接接触可能であってもよい。
代替の実施例では、制御回路は、メンテナンス回路には直接接触せず、その代わりに、メンテナンス作業の実行をトリガし得る代替動作を行ってもよい。例えば、一実施例において、制御回路は、トレーニングイベントに応答して、メンテナンス回路にメンテナンス作業をトリガさせる値に制御レジスタを更新してもよい。具体的な例として、制御レジスタは、その値が所定値に更新されると、それにより割り込みが発生し、例えば、メンテナンス作業の実行をトリガする例外ルーティンが行われるようになされてもよい。従って、制御回路は、トレーニングイベントに応答して、制御レジスタ値をその所定値に更新し、それにより割り込み機構を起動し、メンテナンス作業の実行をトリガすることができる。
メンテナンス作業が制御回路によってトリガされたときに実行されるべきメンテナンス動作を計画することについてメンテナンス回路を支援するため、一実施例において、トレーニング作業の予測期間の指標を発行するように制御回路を手配することができ、メンテナンス回路は、メンテナンス作業の対象となる記憶素子を判定する際にその指標を参照するようになされてもよい。トレーニング作業が実行されている間は保留中のアクセス要求に関してメモリ装置へのデータアクセスが行われないことが分かっているので、データアクセス性能に影響を与えることなくメンテナンス作業を実行できる利用可能時間を、こうして、メンテナンス回路に通知することができる。
制御回路によって提供されるトレーニング作業の予測期間の指標は様々な形態を取ることができる。例えば、多くのクロックサイクルを参照することにより、該当する期間を直接特定することができる。また、トレーニング作業により実行されているトレーニングのタイプを特定することで十分な場合もある。特に、トレーニングイベントの性質によっては、実行する必要があるトレーニングのタイプが異なることがあり、異なるタイプのトレーニングが、異なる予測期間を有しているかもしれない。一実施例において、メンテナンス回路は、複数の異なるタイプのトレーニングのそれぞれについて、トレーニング作業の予測期間を特定する記憶されたタイミング情報にアクセスできるようにすることができる。この場合、メンテナンス作業をトリガする際に制御回路が発行する指標は、トレーニング作業により実行されているトレーニングのタイプの指標を提供するようにされてもよく、メンテナンス回路はそのとき、この情報を使ってメンテナンスタスクの実行に利用可能な時間を決定することができる。
代替の実施例において、制御回路は、タイミング指標情報を提供しなくてもよく、その代わりに、トレーニング作業の完了をメンテナンス回路に通知するようになされてもよい。このような実施例では、メンテナンス回路は、トレーニング作業が完了したことが通知される時間までメンテナンスタスクを実行し続けることができる。例えば、その情報に応答して、次の適切な時点、例えば、トレーニング作業の完了をメンテナンス回路に通知した時にインフライトのメンテナンスタスクが完了した時点で、メンテナンス作業を完了することができる。
更に別の代替例として、メンテナンス作業が制御回路によってトリガされた場合、メンテナンス回路は、デフォルトの期間の間メンテナンス作業を実行するようになされてもよい。このデフォルトの期間は様々な方法で選択されてもよいが、例えば、トレーニング作業の最短予測期間に対応してもよい。
制御回路は様々な形態を取ることができる。一実施例では、トレーニング作業を行うように構成された専用ハードウェア回路の形態を取ってもよい。このハードウェア回路は、トレーニング作業の開始時にメンテナンス作業の実行をトリガする信号を発行するように更に構成されるだろう。しかしながら、代替の実施例において、制御回路は、トレーニング作業を行うファームウェアを実行するようになされたより汎用の処理回路の形態を取ってもよい。そして、このファームウェアは、トレーニング作業の開始時にメンテナンス作業の実行をトリガするために、必要な信号も発行させるだろう。
制御回路が専用ハードウェア回路である一実施例において、この専用ハードウェア回路は、メンテナンス作業を開始するためにトリガ信号をメンテナンス回路に直接発行する特定のパスを備えていてもよい。
制御回路がファームウェアを実行するより汎用の処理回路の形態を取る一実施例において、この処理回路は、システム内の要素の動作を制御するのに用いられる幾つかの制御レジスタを含む、システム内の様々なその他の要素と、周辺機器用バスを介して接続されてもよい。それらの制御レジスタのうちの1つは、特定の値に設定された場合に、メンテナンス作業を開始させる割り込みをトリガするレジスタとなるようになされてもよい。
メンテナンス作業の対象となる記憶素子を含む記憶装置は様々な形態を取ることができる。一実施例において、記憶装置は保留アクセス要求バッファを具備し、アクセス要求の少なくともデータ部分はメンテナンス作業が行われる記憶素子に記憶されている。例えば、特定の実施例において、アクセス要求のデータ部分は、記憶装置内のスタティックランダムアクセスメモリ(SRAM)に記憶されてもよく、これらのSRAMセルは、メンテナンス作業の対象であってもよい。一実施例において、記憶装置は、要求のその他の部分を記憶するその他の構造を利用してもよい。例えば、各アクセス要求に関連するコマンド/アドレス情報を記憶するために、フロップ(flop)を利用してもよい。このような記憶構造は、メンテナンス作業の対象ではなくてもよい場合があり、よって、メンテナンス作業の対象となるのは記憶装置全体ではない場合がある。しかしながら、代替実施例において、SRAMセルには、コマンド/アドレス情報を含む各アクセス要求の全ての情報が記憶されてもよく、全てのこれらのSRAMセルがメンテナンス作業の対象となってもよい。
保留アクセス要求バッファに加えて、又は、そのようなバッファに代わるものとして、記憶装置は、その他の要素、たとえば、キャッシュ構造を具備してもよく、そのキャッシュ構造の少なくとも一部はメンテナンス作業が行われる記憶素子から形成されてもよい。例えば、システムオンチップ(SoC)内では、最終レベルのキャッシュがメモリコントローラの機能と非常に密接に結合している場合があり、よって、キャッシュの領域がアクセス要求情報の保持に使用されることがある。そのため、物理層インターフェースに対してトレーニング作業が行われている期間中は、その期間中、積極的なアクセス要求の処理が行われないことから、そのようなキャッシュ構造へのアクセスは大幅に低減する又は停止する場合がある。よって、この期間は、キャッシュ構造内の記憶素子に対してメンテナンスタスクを行うのに適した期間を示してもいて、したがって、その期間中にそれらのメンテナンスタスクを開始するよう、制御回路からのトリガをそのようなキャッシュ構造に伝搬することができる。
メンテナンス作業は様々な形態を取ることができる。例えば、一実施例において、メンテナンス回路は、エラーロバスト性のメンテナンス(error robustness maintenance)を提供するために、メンテナンス作業を行うようになされたビルトインセルフテスト(BIST)コントローラを具備する。特に、BISTコントローラによって行われるメンテナンス作業は、記憶素子におけるハードエラーの有無の判断を図るものであってもよい。例えば、1つ以上のデータ値を記憶するのに用いられる一連の記憶素子について、その1つ以上のデータ値を他のどこかで一時的にバッファリングし、その後、読み取りパターンが書き込みパターンと異なる状態を検出しようと努めるために、既知のパターンを用いて、その一連の記憶素子に対して一連の書き込み及び読み取りアクセスを行って、ひいては、ハードウェア故障を示してもよい。これは、アクセス要求が積極的に処理されている「ライブ」使用中に行われる場合には、メモリアクセス性能に大きな影響を与え得る非常に時間がかかる演習である可能性がある。しかしながら、これらの処理を物理層インターフェースのトレーニングが行われる期間に制限することにより、そのような影響はなくなり、ひいてはそのようなBISTテストを行うのに非常に効率的な機構が提供される。
それに代えて、又は、それに加えて、上記メンテナンス回路は、アクセス要求により特定されたメモリアクセスの実行を向上させるために、メンテナンス作業を行うようになされたスケジューリング回路を具備してもよい。前述の、メンテナンス作業のBISTの様式とは対照的に、スケジューリング回路によって行われるメンテナンス作業は、アクセス要求マージなどの技術やメモリアクセス性能の最適化を図るスケジューリング/再順序付け技術の利用を図ることができる。このようなメンテナンスは、システムのライブ使用時にバックグラウンドタスクとして行うことができるが、このメンテナンスを行うのにかかる時間は、記憶装置が大きくなるにつれて増加し、従って、そのようなバックグラウンドメンテナンスタスクの実行が、それらによって導入される、記憶素子へのアクセスにおける競合に起因して実際のアクセス要求処理の性能に影響を与える、もしくは、スケジューリング回路が所望のメンテナンスタスクを実行するのに十分な時間を見つけるのに苦労する可能性がある。しかしながら、物理層インターフェースのトレーニング期間中にスケジューリング回路に上記メンテナンスタスクを行わせることにより、メンテナンス回路は、ライブのデータアクセストラフィックに関して競合を導入することなく、そのようなメンテナンスタスクを行うことができる。従って、例えば、トレーニング作業が行われている期間中に記憶素子がメンテナンスを受ける速度を上昇させることにより、その期間中のメンテナンスタスクの積極性を増大させることができる。これは、物理層インターフェースのトレーニングが行われている期間中は何れにしてもメモリアクセス動作が中止されるため、メモリアクセス動作の実行に影響を与えるリスクを伴うことなく行うことができる。
トレーニング作業は様々な形態を取ることができる。しかしながら、一実施例においては、トレーニング作業は、物理層インターフェースとメモリ装置との接続にまたがる信号伝搬における遅延を償うために、物理層インターフェースの動作を調整する。
別の実施例では、本技術は、メモリ装置へのアクセスを制御する装置内でメンテナンス作業を実行する方法であって、メモリ装置へ発行されるアクセス要求を記憶装置に記憶することと、メンテナンス回路に記憶装置内に設けられた記憶素子に対してメンテナンス作業を行わせることと、記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に物理層インターフェースからメモリ装置へと伝搬するように発行することと、トレーニングイベントに応答して、制御回路に物理層インターフェースのトレーニング作業を開始させることと、トレーニング作業が実行されている間、メンテナンス回路によるメンテナンス作業の実行を制御回路にトリガさせることとを含む方法を提供する。
次に、図面を参照して、特定の実施例について説明する。
図1は、一実施例に係るデータ処理システムのブロック図である。示されるように、多くの要求装置10、15、20が、メモリ装置40に保持されたデータに対するアクセス要求を発行するようになされている。この要求装置は様々な形態を取ることができ、例えば、中央処理ユニット(CPU)、グラフィックス処理ユニット(GPU)、キャッシュなどからなってもよい。メモリ装置40は、要求装置10、15、20から様々なアクセス要求を受け取り、メモリ装置40内での処理のためにそれらのアクセス要求のスケジューリングを行うようになされている、それに関連するメモリコントローラ30を有する。アクセス要求は、介在する物理層インターフェース35を介してメモリコントローラ30からメモリ装置40へと発行される。メモリ装置40はチップ外に設けられることが多く、メモリコントローラ30とメモリ装置40との間の物理的な接続は、高速パラレルインターフェースを提供するのに用いられる必要がある、複数の比較的長い電線に匹敵することが多いかもしれない。物理層インターフェース35は、高速パラレルインターフェース達成することができることを確実にするため、それらの接続電線を介した高速の同期通信を維持する機構を採用する。
要求装置10、15、20がメモリコントローラ30と連結されるには数多くの方法があるが、図1に示す構成では、要求装置がそれを介してメモリコントローラ30と通信を行う相互接続構造25が介在するものと仮定している。様々な要求装置をメモリコントローラと、さらに実際には、相互接続25に接続されるその他のスレーブ装置と相互接続するためのルーティングインターフェースを提供することに加えて、相互接続はその他の機能を備えることもできる。例えば、システム内のキャッシュの内容をコヒーレントに保つことを確実にするためにキャッシュコヒーレンスプロトコルを実装するようになされてもよい。これらのキャッシュには、各要求装置10、15、20に関連して局所的に設けられるキャッシュやその他の共有キャッシュが含まれ、その一例としては、相互接続25内に設けられる最終レベルキャッシュ60があり得る。
メモリ装置40は様々な形態を取ることができるが、一実施例では、一連のランク、バンク、行、列で通常の方法により構築され得るダイナミックランダムアクセスメモリ(DRAM)装置である。
一実施例では、1つのメモリコントローラ30がメモリ装置全体を制御するかもしれない一方で、幾つかの実施例では、メモリ装置は、その各部分が関連する別のメモリコントローラと関連する物理層インターフェースを有する複数の部分に分けられる。DRAMの例を考えた場合、メモリ装置は、それぞれのチャネルが別個のメモリコントローラ30、45と、関連する物理層インターフェース35、50を有する複数のチャネル40、55に分けられてもよい。その他のメモリコントローラ45と物理層インターフェース50は、その詳細が図2を参照して後述される、メモリコントローラ30と物理層インターフェースと同様に構築されるであろう。
一実施例において、様々な要求装置10、15、20、相互接続25、メモリコントローラ30、45は全てシステムオンチップ(SoC)内に設けられてもよい。物理層インターフェース35、50も、一実施例では、チップ上に設けられてもよいし、チップ外でメモリコントローラ30、45とのインターフェースに設けられてもよい。一実施例においては、メモリ装置40、55はチップ外に設けられ、接続電線を介して物理層インターフェース35、50と接続されている。
一般に、様々な要素間で発送される通信に使用されるオンチップ通信プロトコルが存在するであろう。一実施例において、オンチップで使用されるプロトコルは、メモリ装置との通信に使用されるプロトコルとは異なっていてもよく、様々な相互接続について図1に概略的に示されている。例えば、オンチップ通信プロトコルは、書き込みデータと読み取りデータの送信用の別々の書き込み及び読み取りデータチャネルとともに、要求装置10、15、20から要求が発行され得る少なくとも1つのチャネルを有してもよい。この要求チャネルは、実際、別の1つ以上のチャネル、例えば、別の書き込みアドレスチャネルと別の読み取りアドレスチャネルを有してもよい。また、要求装置に応答を送り返すために応答チャネルが設けられてもよい。応答データは様々な形態を取ることができ、例えば、書き込み要求が処理のために受信されたことを確認する確認信号を含んでもよい。応答チャネルは、特定のアクセス要求がある理由で失敗したときを示すのに使用することもできる。
特定の一実施例において、オンチップ通信プロトコルは、イギリスはケンブリッジ市のARM社によって開発されたAMBA拡張可能インターフェース(AXI)プロトコルであってもよい。
一実施例において、メモリコントローラ30、45は、保留中のアクセス要求のスケジューリングを取り扱うだけでなく、オンチップ通信プロトコルからチップ外のメモリ装置40、55との通信に使用される通信プロトコルへと変換するプロトコル変換も行うであろう。DRAMメモリ装置については、通信プロトコルは、データ経路を介した書き込み及び読み取りデータの伝搬と共に、コマンド伝搬経路を介した様々な種類の一連のコマンドの発行を必要とするかもしれない。
図2は、一実施例に係るメモリコントローラ30と物理層インターフェース35との内部に設けられた要素をより詳細に示すブロック図である。メモリコントローラ30は、相互接続25を越えて用いられる通信プロトコルとメモリ装置40との通信のために用いられるプロトコルとの変換を行うためのプロトコル変換器100を備える。各要求が受信されると、それは変換され、1つ以上の保留アクセス要求バッファ110に置かれる。バッファ内の保留中のアクセス要求のそれぞれは、行われるアクセスのタイプなどの関連情報と共に、アクセスされるアドレスを特定するであろう。書き込み要求の場合は、1つ以上の保留アクセス要求バッファで書き込みデータのバッファリングを行うこともできる。
スケジューラ回路120は、メモリ装置へと保留中のアクセス要求を発行する順番を決めるため、1つ以上の保留アクセス要求バッファの内容についてスケジューリング作業を行うのに用いられる。これにより、メモリアクセス性能の最適化を図るために、メモリ装置の構造や機構を考慮に入れることができる。例えば、DRAMメモリにおいて特定のページが開かれた場合、一般的には、そのページを閉じて別のページを開くより、そのページの内容にアクセスし続ける方がより効率的である。よって、DRAMメモリで開かれているページに複数のアクセスを行うことを目的として、スケジューラによって保留中のアクセス要求の順番を変えることができる。アクセス実行回路130は、更に物理接続を介してメモリ装置40へと伝搬するために、バッファ110から(スケジューラ120に決められた順番で)物理層インターフェースへ選択されたアクセス要求を発行するのに用いられる。
物理層インターフェース35は、アクセスのタイプやアクセスされているアドレスを特定するコマンド信号を発行するコマンドモジュール145と、メモリ装置へ書き込みデータを出力する、又は、メモリ装置から読み取りデータを受け取るデータモジュール140とを含む。
同期制御部150は、物理層インターフェース35とメモリ装置40との間の物理的接続を介した同期通信を維持するために、コマンドモジュールとデータモジュールの動作を制御する。同期制御ブロックには、物理層インターフェースとメモリ装置との間の経路における相対及び絶対遅延の両方を考慮に入れるように構成された位相ロックループ回路や遅延ロックループ回路などの多数の回路が含まれるであろう。一実施例では、タイミングの基準を提供するために、コマンドモジュールからのコマンド信号に関連してクロック信号が発行され、クロック信号の適切なクロックエッジでデータがラッチされることを確実にするために、ストローブ信号がデータ信号に関連して発行される。
時間の経過と共に、例えば、動作温度や電圧の変化などの様々な要因で、物理層インターフェース35とメモリ装置40との接続を介した信号伝搬にドリフトが生じることがある。従って、同期制御ブロック150の構成を更新する(位相遅延などを調整する)ために、トレーニング作業を物理層インターフェース35に周期的に行う必要がある場合がある。必要な場合、そうなり次第、そのようなトレーニング作業を行うよう、物理層トレーニング回路160を提供することができ、数多くの既知の技術を用いて、読み取り/書き込みレベリング、データアイトレーニング、ビットごとのデータデスキュー制御、PVT(プロセス、電圧、温度)補償などの数多くの処理を適用することができる。トレーニング回路160は、周期的に、例えば、所定期間の経過時に、トレーニング手続を開始するようになされてもよいし、そのようなドリフトの問題が、エラーがじきに発生するという確率が受け入れられないほどに達しているときを検出することを企図して、メモリ装置との接続を介して送受信されている信号の品質を積極的に監視するようになされてもよい。監視し得る信号の性質には、例えば、データ収集の信号対ノイズ比といった数多くの性質がある。閾値を超えたときに、トレーニング作業を開始し得る。
トレーニング作業が行われる時はいつでも、保留中のアクセス要求の実行を引き延ばしにする必要があり、したがって、物理層インターフェース35がトレーニング動作を行っている期間中は、アクセス実行回路130から保留中のアクセス要求が発行されることはない。
1つ以上の保留アクセス要求バッファ110を形成するのに用いられる記憶構造は、様々な形態を取ることができる。しかしながら、一実施例において、少なくとも、書き込みデータ(及び、相互接続へとさらに伝搬するためにアクセス実行回路を介してプロトコル変換器へ戻される際に一時的にバッファリングされる読み取りデータ)を記憶するために使用される記憶素子は、SRAMセルを有する。幾つかの実施例では、アクセス要求情報の残りの部分、例えば、アドレスやアクセスタイプの情報は、フロップなどの様々な記憶構造に記憶することができ、又は、そのような情報は望むならばSRAMセルに記憶してもよい。
一実施例では、個々のSRAMセルの動作における障害を示すハードエラーの有無を判断するために、SRAMセルを周期的にチェックするビルトインセルフテスト(BIST)コントローラ170が設けられる。そのようなBISTテスト処理は、製造時、および、随意にブート時に行われるのが一般的であるが、そのようなテストをメモリコントローラの「ライブ」動作時に行うことは通常必要とはこれまでは考えられていなかった。しかしながら、特定の新たに出現したアプリケーションはエラーに非常に敏感になってきており、そのようなアプリケーションでは、メモリコントローラの使用中に上記BISTテストを周期的に行い、故障セルを回避して使用されないようにする(多くの場合、そのような回避されたセルの代わりに一定数の冗長セルが設けられ得る)ことができれば有利である。
しかしながら、BISTテスト処理は比較的時間がかかり、メモリアクセス処理の全体的な性能に影響を与える可能性がある。例えば、一般的なBISTテスト処理では、一連のメモリセルからの現在のデータコンテンツを一時的にバッファに記憶し、セルのいずれかがハードエラーを示している状態を検出するために、既知のパターンがセルに書き込まれた後セルから読み出される1つ以上の書き込み及び読み取りシーケンスを行ない得る。テスト処理をパスしたと仮定して、一時的にバッファリングされたデータを再びセルに書き込むことができ、BISTコントローラ170は、上記一連のセルがテストをパスしたことを示す記録を更新することができる。テストに失敗したセルがある場合は、ファームウェアエージェントなどの好適なエージェントに対してその失敗の状態についてフラグを立てることができ、そして、1つ以上の影響を受けたSRAMセルを無効にして、理想的には冗長セルをその代わりに利用する処理を行うことができる。必要とされる複数の書き込み及び読み取りシーケンスに起因して、保留アクセス要求の処理に必要な通常の読み書き動作を行う際にSRAMセルへのアクセス競合の重大な原因が生起され、メモリアクセス処理性能に大きな悪影響を及ぼす可能性があることが理解されよう。
一実施例において、物理層インターフェース35についてトレーニング作業を行う間にそのようなBISTテストを行うBISTコントローラ170を設けることで、この潜在的な影響は軽減される。特に、物理層インターフェース35に対してトレーニング作業を開始すべきであるとトレーニング回路に判定させるトレーニングイベントが発生するときに、BISTコントローラ170にトリガを発行してBISTメンテナンス作業の実行をトリガするために、物理層トレーニング回路160が設けられる。これは、BISTメンテナンス作業を、積極的な保留アクセス要求が処理され得ず、よって上記競合問題が発生しない期間に実行することができることを意味する。
トレーニング回路160は、同期制御ブロック150内に保持された様々な同期制御パラメータの最適な調整方法を判定するために様々な信号を監視しつつ、一連のテストコマンドをメモリへ発行させるために同期制御ブロック150と連携することによってトレーニング作業を行うのに用いられる専用ハードウェア回路であってもよい。このような実施例では、トレーニング回路は、図2に示すようなBISTコントローラ170に直接にトリガ信号を発行可能な専用接続部を備えてもよい。
しかしながら、代替実施例では、トレーニング回路160は、上記トレーニング作業を行うためにファームウェアを実行するより汎用のプロセッサによって実装されてもよい。一般的に、そのようなプロセッサは、物理層インターフェース35に対してトレーニング作業を行うだけでなく、メモリコントローラの特定の制御レジスタ180に値を設定してメモリコントローラの動作を制御するためにも、周辺機器用バスを介してメモリコントローラ30や物理層インターフェース35の様々な要素と接続されてもよい。そのような実施例では、制御レジスタ180のうちの1つは、所定値に設定された場合に、BISTコントローラ170によるBISTメンテナンス作業を開始するために例外ルーティンを行わせる、割り込みをトリガする値を維持するのに利用することができる。よって、図2に点線で示すように、トリガを直接BISTコントローラに発行するのではなく、上記実施例では、BISTコントローラ170によるBISTメンテナンス作業の実行をトリガするために、トレーニング回路160が該当する制御レジスタ180を更新してもよい。
ファームウェアの手法を採用した代替実施例では、制御レジスタを更新する方法の代わりに、その他のハンドシェイキング方法を利用することもできる。
このようにBISTコントローラ170がBISTメンテナンス作業を実行するようトリガされると、BISTコントローラがどのくらいそのメンテナンス作業を継続して行うべきかを判定するのに利用可能な機構が数多く存在する。物理層インターフェース35にトレーニング作業が行われている期間中にSRAMセルのブロック全体についてBISTメンテナンスが行われることが保証される場合、全てのSRAMセルに全BISTテスト処理を行い、次いで終了すればよい。しかしながら、BISTテスト処理がトレーニング作業の実施にかかる時間よりも長く続く可能性がある場合、BISTテスト処理は、各段階がトレーニング作業に一致する複数の段階で行われることを確実にするような対策を講じることが好ましい。
後者の場合、一実施例では、トレーニング作業の予測時間に関する情報をBISTコントローラに提供してもよい。これは、トリガ情報に関連してトレーニング回路160により直接提供されてもよく、それによってBISTコントローラは、BISTテスト処理の対象とするSRAMセル数を調整する。あるいは、BISTコントローラは、トレーニングイベントの様々な種類について予測されるタイミングに関する情報を提供する記憶された情報190へのアクセスを有してもよく、トレーニング回路160は、トリガ又は更新の信号に関連して、現在のトレーニング作業によって行われるべきトレーニングのタイプに関する情報を提供してもよい。特に、トレーニングを開始させるトレーニングイベントの性質によっては、行われるトレーニングのタイプが異なることがあり、よって期間も異なることがある。しかしながら、実行されているトレーニングのタイプに関する情報をBISTコントローラに提供し、記憶装置190内の情報へのアクセスを有することにより、BISTコントローラは、同様に、BISTテストを行うのに利用可能な適切な時間を決定することができ、その結果、BISTテストの対象とされるSRAMセルを選択することができる。
BISTコントローラ170は、どのSRAMセルに対してテストが行われたかを記録しておくことが可能であり、いずれは全てのSRAMセルに対してBISTテストが行われるよう、それぞれのトレーニング作業が行われるごとに別のブロックのSRAMセルに対してテストを行うことができる。
更に別の代替例として、トレーニング回路160からタイミング情報が提供されない場合、BISTコントローラは、所定期間にわたって単にBISTテストを行うようになされてもよい。例えば、この所定期間は、トレーニング作業が完了するまでに確実にBISTテストが完了するように、トレーニング作業の最短予測期間を表すよう設定されてもよく、従って、BISTテストは、物理層インターフェース35に対するトレーニング作業の終了に続いてシステムが再びライブになる場合に保留アクセス要求の処理効率に影響を与えることがない。
上記の例では、トレーニング作業の実行中に行われるメンテナンス作業がBISTテスト処理であるが、メンテナンス作業は、その代わりに、又は、それに加えて、その他の形態を取ることができる。例えば、スケジューラ120は、メモリアクセス処理の全体的な性能の向上を図るために、メモリコントローラのライブ動作中にバックグラウンドタスクとして特定のメンテナンス作業を行うように前もってなされていてもよい。こうすることで、例えば、特定の要求をマージすることを企図することができ、保留アクセス要求バッファ110のコンテンツに対して特定のスケジューリング/再順序付け処理を行うことができる。これらは、通常の使用時にバックグラウンド動作として行うことができるが、SRAMセルへの読み取り及び書き込みアクセスに引き起こす競合のため、そのメンテナンス自体がアクセス要求の処理量に影響を与え始めるまでに、メンテナンスのそのようなタイプのうちのどのくらいが実行可能かについては制限がある。そのため、一実施例においては、任意に、スケジューラ120には(又は、実際には、BISTコントローラ170ではなくスケジューラに)トリガも提供されることにより、トレーニング回路160が物理層インターフェース35に対してトレーニング作業を行っている期間中にスケジューラが上記メンテナンス作業をより積極的に行うことが可能となる。特に、その期間中は保留アクセス要求の処理が行われないことが分かっているため、競合の問題が排除され、スケジューラはSRAMセルに上記メンテナンス作業が行われる速度を上昇させることができる。望まれれば、スケジューラ120は、そのようなメンテナンス作業のスケジューリングを積極的に行うのに適した時間を決めるために、記憶装置190内のトレーニングイベントタイプのタイミングにもアクセスを有することができる。
図3は、一実施例におけるトレーニング回路160の動作を示すフロー図である。ステップ200では、トレーニング回路は、物理層(「phy」)トレーニングイベントが発生したかどうかを判定する。前述のように、そのようなトレーニングイベントは、タイマーの経過や、例えば、様々な物理配線を越えた信号のドリフトにより、接近するエラーポイントに達したことを示す、物理層インターフェース35を介して発行される様々な信号のトレーニング回路の監視により発生し得る。
トレーニングイベントが検出されると、ステップ205で、行われるトレーニングのタイプを決定する。ステップ210で、1つ以上の保留アクセス要求バッファ110のSRAMセルに対するSRAMメンテナンスを開始するトリガが(必要であれば対応するタイミング情報と共に)送られ、そしてステップ215で、物理層インターフェース35上でトレーニング作業が行われる。その後、処理はステップ200に戻り、もしくは、随意で、トレーニング回路はトレーニング作業が完了したことをSRAMメンテナンス回路に通知するステップ220に移る。一旦トレーニング作業が完了すると、メモリコントローラ30は、保留アクセス要求がメモリ装置40への発行のために再開され得るライブ処理に戻ることができるから、この情報は、その後メンテナンス回路(BISTコントローラ170、もしくはスケジューラ120)が進行中のメンテナンス作業を終了するのに利用され得る。
図4は、一実施例によって実行され得るSRAMメンテナンス作業を示すフロー図である。この処理は、BISTコントローラ170の動作を参照して説明されているが、それが特定のメンテナンス作業を行うことによってトリガ信号に応答するようになされていれば、スケジューラ120によって同様の論理プロセスを適用することも可能である。
ステップ300で、トレーニング回路からトリガを受け取ったかどうかを判定し、受け取った場合には、ステップ305で物理層トレーニング作業の長さを決定可能かどうかが判断される。これは、前述のように、トレーニング回路がトレーニング作業を実行するのにかかると予測される時間を直接特定することに起因する、又は、トレーニング回路が実行されているトレーニング作業のタイプを特定し、BISTコントローラが上記トレーニングの予測時間を決定する追加情報にアクセスを有しているからであり得る。トレーニング作業に関連して予測される時間が決定可能であると仮定すると、処理は、どのSRAMセル(図4で、SRAMエントリとも記載される)にSRAMメンテナンスを行うかを決めるために、メンテナンス回路が以前のメンテナンスの記録を参照するステップ310に進む。一実施例では、SRAMメンテナンスは、最も長い間テストが行われていないセルは、現在のSRAMメンテナンスタスクのブロックの対象となるように、ラウンドロビン方式で行ってもよい。そして、現在の反復中にSRAMメンテナンスの対象となるSRAMセル数が、ステップ305で得られたタイミング情報を考慮して決定される。
ステップ315で、選択されたSRAMセルに対してSRAMメンテナンスが行われ、その後、ステップ320で、それらのセルがSRAMメンテナンスの対象であったことを示すようにSRAMメンテナンスの記録が更新される。そして、処理はステップ300に戻る。
ステップ305でトレーニング作業の予測時間が決定可能ではないと判断された場合、処理は、SRAMメンテナンスが行われるべき最初のSRAMセルを決定するために以前のメンテナンスの記録を参照するステップ325へと進む。その後、ステップ330で、所定の期間にわたり、もしくは、トレーニング作業の完了がメンテナンス回路に通知されるまで、ステップ325で特定された最初のエントリから始めて、一連のSRAMセルにSRAMメンテナンスを行う。この時点で、処理は、SRAMメンテナンスの記録が更新されるステップ320へと進んで、ステップ300へと戻る。
これまでに説明した実施例では、1つ以上の保留アクセス要求バッファ110内にあるSRAMセルに対してメンテナンス作業を行うものとしたが、そのようなメンテナンス作業は、更に、もしくは、その代わりに、システム内のその他の記憶構造に対して行われてもよい。ある特定の例として、図1に示される最終レベルキャッシュ60は、少なくともそのキャッシュのわずかではない部分がメモリ装置40への保留アクセス要求に関する情報を記憶するために用いられるよう、メモリコントローラと比較的密接に結合されているかもしれない。このキャッシュは、特定のSRAMメンテナンス作業の対象となることが好ましいSRAMセルから形成されてもよい。上記レベルのキャッシュがメモリコントローラと非常に密接に結合されているならば、物理層インターフェース35がトレーニング作業の対象となっている期間は、そのキャッシュに対するアクセスが大幅に減少する又は実際には停止する可能性が高い。これは、すなわち、そのキャッシュに対して必要なSRAMメンテナンス作業を行うのに理想的な期間を表している。従って、物理層インターフェース35にトレーニング作業が行われている期間中にキャッシュに対するメンテナンスタスクの実行を開始するために、トレーニング回路により発行されたトリガ信号は、必要であれば、上記キャッシュ60のために、メンテナンス制御回路に発行されてもよい。
図5は、一実施例におけるスケジューラ120の動作、特に、スケジューラがバックグラウンドタスクとして特定のメンテナンス作業を行うが、それらのメンテナンス作業の実行を加速させるためにトレーニング回路からのトリガ信号に応じるよう構成され得る実施例におけるメンテナンス作業についてのスケジューラの動作を示すフロー図である。ステップ350で、トレーニング回路160からトリガを受け取ったかどうかを判定する。受け取っていない場合は、ステップ355によって示されるように、スケジューラは、メモリコントローラによってアクセス要求が積極的に処理されるのと同時に、バックグラウンドメンテナンスタスクの実行を継続する。これらのバックグラウンドメンテナンスタスクには、前述のように、特定のスケジューリング/順序付けタスク、及び/又は要求にマージのタスクが含まれ得る。同時に、スケジューラは、アクセス実行回路130が物理層インターフェース35を介してメモリ装置40へ、どのアクセス要求を発行するかを決めるために、バッファ内の保留アクセス要求間で、通常、調停を行う。この処理は、ステップ350でトリガ信号の受信が検出されるまで継続される。
一旦トリガ信号が受信されると、処理は、その代わりに、図5に示されるフローの左側へと分岐する。物理層トレーニング作業が発生している間は保留アクセス要求は発行されないため、ステップ360で調停が中断される。その後、ステップ365でスケジューラが積極的なメンテナンスを実施し、ここでは、通常の読み取り/書き込み動作によるSRAMの帯域幅についての競合が生じないことを利用して、通常はバックグラウンドメンテナンスタスクとして行われるメンテナンスタスクが、加速された速度で行われる。特に、現時点でメモリコントローラにより処理されるメモリアクセスがないため、通常の読み取り/書き込み動作は現時点で行われていない。調停の中断と、積極的なメンテナンスの実行は、ステップ370で物理層インターフェース35についてのトレーニング作業が終了したと判断されるまで継続され、この時点で処理はステップ350へ戻る。この時点ではトリガを受信しておらず、処理は、スケジューラの通常動作が再開されるステップ355へと進む。
図5に概略的に示されるようにスケジューラを動作させることは、1つ以上のバッファ110の大きさが大きくなる場合に特に効果的であり得る。例えば、保留アクセス要求をどのように再順序付けするかについてスケジューラに通知する情報がSRAMメモリに記憶されている場合、この順序付け機能は、比較的長い時間がかかり得るか、又は、他のSRAMエントリを通して読み出すのにより長い時間をかけることによって、より良いものとなり得、物理層インターフェースにトレーニング作業が行われている期間に上記タスクの実行を集中することにより、メモリアクセス要求の全体的な処理性能に影響を与えずに、この追加の時間を融通することができる。
上記実施例から、システムトランザクションを停止する必要がすでに存在する期間にメンテナンス作業の実行を集中することによって、物理層インターフェースについてのトレーニング作業の実行の要求に起因してメモリコントローラに関連する記憶素子に関するメンテナンス作業を取り扱うための改善された機構が、このような実施例によって提供されることがわかるであろう。特に、物理層インターフェースのトレーニングを実行することによって生じるダウンタイムを、その期間中に記憶素子に対して特定のメンテナンス作業を行って、これらのメンテナンス作業の実行がシステムのメモリアクセス性能に更なる悪影響を及ぼさないようにして、利用する。必要なメンテナンスタスクのランタイムをトレーニング作業の実行に必要なタイミングと一致しなければ、メンテナンス回路は、各物理層トレーニングの処理中にSRAMメモリアレイの特定の部分にのみテストが行われるように部分的なメンテナンスを行うよう構成することができ、そうすることで、トレーニング作業の複数の反復により、SRAMアレイ全体のテストを行うことができる。
本願において、「〜するよう構成される」という表現は、装置の要素が規定の動作を実行可能な構成を有していることを指すのに用いられる。この文脈において、「構成」とは、ハードウェアやソフトウェアを相互接続する配置や方法を指す。例えば、装置は規定の動作を提供する専用ハードウェアを有していてもよく、もしくは、プロセッサやその他の処理装置がその機能を実行するようプログラミングされていてもよい。「〜するよう構成される」とは、装置の要素が規定の動作を提供するために何らかの方法で変更される必要があるということを意味するものではない。
これまで本明細書において添付図面を参照して本発明の例示的な実施例を詳細に説明したが、本発明はこれらのそのとおりの実施例に限定されるものではなく、添付の請求項に規定される本発明の範囲及び精神から逸脱することなく、それらに様々な変更、追加、改良が当業者によってなされ得ることを理解すべきである。例えば、本発明の範囲を逸脱することなく、従属請求項の特徴の様々な組み合わせが独立請求項の特徴とともになされ得る。
Claims (15)
- メモリ装置へのアクセスを制御する装置であって、
前記メモリ装置へ発行されるアクセス要求を記憶する記憶装置と、
前記記憶装置内に設けられた記憶素子に対してメンテナンス作業を行うメンテナンス回路と、
前記記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に前記物理層インターフェースから前記メモリ装置へと伝搬するように発行するメモリアクセス実行回路と、
トレーニングイベントに応答して、前記物理層インターフェースのトレーニング作業を開始する制御回路と
を具備し、
前記制御回路が更に、前記トレーニング作業が実行されている間、前記メンテナンス回路による前記メンテナンス作業の実行をトリガするように前記トレーニングイベントに応答する、装置。 - 前記制御回路は、前記メンテナンス作業の実行をトリガするために前記メンテナンス回路に制御信号を発行するようにされている、請求項1に記載の装置。
- 前記制御回路は、前記メンテナンス回路をとりがして前記メンテナンス作業をさせる値に制御レジスタを更新するように前記トレーニングイベントに応答する、請求項1に記載の装置。
- 前記制御回路は、前記トレーニング作業の予測期間の指標を発行するようにされ、前記メンテナンス回路は、前記メンテナンス作業の対象となる前記記憶素子を判定する際にその指標を参照するようにされている、請求項1〜3のいずれか一項に記載の装置。
- 前記トレーニング作業の予測期間の前記指標は、前記トレーニング作業により行われるトレーニングのタイプを示し、前記メンテナンス回路は、トレーニングの複数の異なるタイプのそれぞれについて、前記トレーニング作業の予測期間を特定する記憶されたタイミング情報にアクセスを有する、請求項4に記載の装置。
- 前記制御回路は、前記トレーニング作業が完了すると前記メンテナンス回路に通知するようにされている、請求項1〜3のいずれか一項に記載の装置。
- 前記メンテナンス作業が前記制御回路によってトリガされたとき、前記メンテナンス回路は、前記メンテナンス作業をデフォルト期間の間実行するようにされている、請求項1〜3のいずれか一項に記載の装置。
- 前記制御回路は、前記トレーニング作業を行うように構成されたハードウェア回路、又は、前記トレーニング作業を行うファームウェアを実行するようにされた処理回路である、請求項1〜7のいずれか一項に記載の装置。
- 前記記憶装置は、保留アクセス要求バッファを具備し、前記アクセス要求の少なくとも前記データ部分は前記メンテナンス作業の対象となる前記記憶素子に記憶されている、請求項1〜8のいずれか一項に記載の装置。
- 前記記憶装置は、キャッシュ構造を具備し、前記キャッシュ構造の少なくとも一部は前記メンテナンス作業の対象となる記憶素子から形成される、請求項1〜9のいずれか一項に記載の装置。
- 前記メンテナンス回路は、エラーロバスト性のメンテナンスを提供するために、前記メンテナンス作業を行うようにされたビルトインセルフテストコントローラを具備する、請求項1〜10のいずれか一項に記載の装置。
- 前記メンテナンス回路は、前記アクセス要求により特定された前記メモリアクセスの性能を向上させるために、前記メンテナンス作業を行うようにされたスケジューリング回路を具備する、請求項1〜11のいずれか一項に記載の装置。
- 実行中の前記トレーニング作業が存在しない場合、前記スケジューリング回路は、どのアクセス要求が前記メモリアクセス実行回路によって発行されるかを決定するために前記アクセス要求の調停も行いつつ、バックグラウンドメンテナンス作業を行い、
前記トレーニング作業を実行している間は、前記スケジューリング回路は、調停を行うのを中止し、前記トレーニング作業を実行している間に記憶素子がメンテナンスの対象となる速度を上げるよう前記バックグラウンドメンテナンス作業の加速されたバージョンを前記メンテナンス作業として行う、請求項12に記載の装置。 - 前記トレーニング作業は、前記物理層インターフェースと前記メモリ装置との間の接続にわたって伝搬する信号における遅延に対する補償を行うよう、前記物理層インターフェースの動作を調整する、請求項1〜13のいずれか一項に記載の装置。
- メモリ装置へのアクセスを制御する装置内でメンテナンス作業を実行する方法であって、
前記メモリ装置へ発行されるアクセス要求を記憶装置に記憶することと、
メンテナンス回路に前記記憶装置内に設けられた記憶素子に対してメンテナンス作業を行わせることと、
前記記憶装置から選択されたアクセス要求を物理層インターフェースへ、更に前記物理層インターフェースから前記メモリ装置へと伝搬するように発行することと、
トレーニングイベントに応答して、制御回路に前記物理層インターフェースのトレーニング作業を開始させることと、
前記トレーニング作業が実行されている間、前記メンテナンス回路による前記メンテナンス作業の実行を前記制御回路にトリガさせることと
を含む方法。
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| EP16176680.3 | 2016-06-28 | ||
| EP16176680.3A EP3264276A1 (en) | 2016-06-28 | 2016-06-28 | An apparatus for controlling access to a memory device, and a method of performing a maintenance operation within such an apparatus |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JP2018005902A true JP2018005902A (ja) | 2018-01-11 |
Family
ID=56296561
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2017115652A Pending JP2018005902A (ja) | 2016-06-28 | 2017-06-13 | メモリ装置へのアクセスを制御するための装置及びそのような装置内においてメンテナンス作業を行う方法 |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US10540248B2 (ja) |
| EP (1) | EP3264276A1 (ja) |
| JP (1) | JP2018005902A (ja) |
| CN (1) | CN107544923B (ja) |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10339050B2 (en) * | 2016-09-23 | 2019-07-02 | Arm Limited | Apparatus including a memory controller for controlling direct data transfer between first and second memory modules using direct transfer commands |
| US10347357B2 (en) * | 2017-04-24 | 2019-07-09 | Intel Corporation | Post-packaging environment recovery of graphics on-die memory |
| EP3557422A4 (en) * | 2018-03-09 | 2020-01-08 | Shenzhen Goodix Technology Co., Ltd. | METHOD FOR ACCESSING CODE SRAM AND ELECTRONIC DEVICE |
| CN110618903B (zh) * | 2018-06-19 | 2024-12-10 | 北京忆恒创源科技股份有限公司 | 电子设备测试方法与装置 |
| JP2020047340A (ja) | 2018-09-19 | 2020-03-26 | キオクシア株式会社 | 不揮発性メモリ及びメモリシステム |
| KR102728324B1 (ko) | 2019-12-03 | 2024-11-08 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 트레이닝 방법 |
| KR102804852B1 (ko) * | 2019-12-23 | 2025-05-09 | 주식회사 엘엑스세미콘 | 메모리 컨트롤러, 및 이의 동작 방법 |
| KR102804862B1 (ko) * | 2019-12-23 | 2025-05-09 | 주식회사 엘엑스세미콘 | 메모리 컨트롤러, 및 이의 동작 방법 |
| US12197766B2 (en) * | 2020-11-10 | 2025-01-14 | Micron Technology, Inc. | Error injection methods using soft post-package repair (sPPR) techniques and memory devices and memory systems employing the same |
| TWI811606B (zh) * | 2020-12-31 | 2023-08-11 | 新唐科技股份有限公司 | 事件觸發主控端、控制晶片及控制方法 |
| US12444476B2 (en) * | 2022-03-14 | 2025-10-14 | Micron Technology, Inc. | Host controlled media testing of memory |
| CN115344215B (zh) * | 2022-08-29 | 2025-03-18 | 深圳市紫光同创电子股份有限公司 | 存储器训练方法及系统 |
| US12608654B2 (en) * | 2024-01-09 | 2026-04-21 | Qualcomm Incorporated | Memory device high-speed interface training |
Family Cites Families (15)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO1999046775A2 (en) * | 1998-03-10 | 1999-09-16 | Rambus, Inc. | Performing concurrent refresh and current control operations in a memory subsystem |
| US6631440B2 (en) * | 2000-11-30 | 2003-10-07 | Hewlett-Packard Development Company | Method and apparatus for scheduling memory calibrations based on transactions |
| US20070250283A1 (en) * | 2006-04-25 | 2007-10-25 | Barnum Melissa A | Maintenance and Calibration Operations for Memories |
| JP2008269669A (ja) * | 2007-04-17 | 2008-11-06 | Renesas Technology Corp | 半導体装置及びデータ処理システム |
| GB2451668A (en) * | 2007-08-08 | 2009-02-11 | Advanced Risc Mach Ltd | Error correction in a set associative cache |
| US9176859B2 (en) * | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
| US8949520B2 (en) * | 2009-01-22 | 2015-02-03 | Rambus Inc. | Maintenance operations in a DRAM |
| US8127087B2 (en) * | 2009-02-12 | 2012-02-28 | International Business Machines Corporation | Memory controller for improved read port selection in a memory mirrored system |
| US8230260B2 (en) * | 2010-05-11 | 2012-07-24 | Hewlett-Packard Development Company, L.P. | Method and system for performing parallel computer tasks |
| US9176903B2 (en) * | 2010-11-09 | 2015-11-03 | Rambus Inc. | Memory access during memory calibration |
| US9432298B1 (en) * | 2011-12-09 | 2016-08-30 | P4tents1, LLC | System, method, and computer program product for improving memory systems |
| US9632954B2 (en) * | 2011-11-07 | 2017-04-25 | International Business Machines Corporation | Memory queue handling techniques for reducing impact of high-latency memory operations |
| CN105122218B (zh) * | 2013-03-14 | 2019-01-18 | 美光科技公司 | 包含训练、数据组织及/或遮蔽的存储器系统及方法 |
| US9639495B2 (en) * | 2014-06-27 | 2017-05-02 | Advanced Micro Devices, Inc. | Integrated controller for training memory physical layer interface |
| US20160239442A1 (en) * | 2015-02-13 | 2016-08-18 | Qualcomm Incorporated | Scheduling volatile memory maintenance events in a multi-processor system |
-
2016
- 2016-06-28 EP EP16176680.3A patent/EP3264276A1/en not_active Withdrawn
-
2017
- 2017-05-12 US US15/593,560 patent/US10540248B2/en active Active
- 2017-06-13 JP JP2017115652A patent/JP2018005902A/ja active Pending
- 2017-06-21 CN CN201710475609.8A patent/CN107544923B/zh active Active
Also Published As
| Publication number | Publication date |
|---|---|
| CN107544923B (zh) | 2023-09-01 |
| US20170371560A1 (en) | 2017-12-28 |
| CN107544923A (zh) | 2018-01-05 |
| EP3264276A1 (en) | 2018-01-03 |
| US10540248B2 (en) | 2020-01-21 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP2018005902A (ja) | メモリ装置へのアクセスを制御するための装置及びそのような装置内においてメンテナンス作業を行う方法 | |
| EP3270290B1 (en) | Ddr memory error recovery | |
| CN110729006B (zh) | 存储器控制器中的刷新方案 | |
| US10042700B2 (en) | Integral post package repair | |
| KR100813422B1 (ko) | 메모리 허브 및 메모리 시퀀싱 방법 | |
| US8880833B2 (en) | System and method for read synchronization of memory modules | |
| KR102939082B1 (ko) | Dram을 위한 리프레시 관리 | |
| JP7195486B1 (ja) | 異種メモリシステムに対するシグナリング | |
| CN112612596B (zh) | 命令调度方法、装置、设备和存储介质 | |
| US20120246369A1 (en) | Bus monitor circuit and bus monitor method | |
| EP3553662A1 (en) | Intergral post package repair | |
| US7765383B2 (en) | Data processing unit and data processing apparatus using data processing unit | |
| JP3830438B2 (ja) | メモリアクセスアービタ、メモリ制御装置 | |
| JP2005010995A (ja) | マルチプロセッサシステム及びそのライトバックの障害処理方法 |