メモリリフレッシュとは、コンピュータメモリの領域から定期的に情報を読み取り、読み取った情報を同じ領域に修正せずに即座に書き戻すことで情報を保持するプロセスです。[ 1 ]メモリリフレッシュは、最も広く使用されているタイプのコンピュータメモリである半導体ダイナミックランダムアクセスメモリ(DRAM)の動作中に必要とされるバックグラウンドメンテナンスプロセスであり、実際にはこのクラスのメモリの決定的な特徴です。[ 2 ]
DRAMチップでは、メモリデータの各ビットは、チップ上の小さなコンデンサの電荷の有無として保存されます。 [ 2 ] [ 3 ]時間が経つにつれて、メモリセル内の電荷は漏れ出すため、リフレッシュしないと、保存されたデータは最終的に失われます。これを防ぐために、外部回路は定期的に各セルを読み取り、書き換え、コンデンサの電荷を元のレベルに戻します。各メモリのリフレッシュサイクルは、次のメモリセル領域をリフレッシュし、連続するサイクルでチップ上のすべてのセルを繰り返しリフレッシュします。このプロセスは通常、メモリ回路によってバックグラウンドで自動的に実行され、ユーザーには透過的です。[ 2 ]リフレッシュサイクルが実行されている間、メモリは通常の読み書き操作には使用できませんが、最新のメモリでは、このオーバーヘッドはメモリの動作を大幅に遅くするほど大きくはありません。
スタティックランダムアクセスメモリ(SRAM)はリフレッシュを必要としない電子メモリです。[ 2 ] SRAMメモリセルは、DRAMの1つのトランジスタとコンデンサと比較して4~6個のトランジスタを必要とするため、SRAM回路はチップ上でより広い面積を必要とします。その結果、SRAMチップのデータ密度はDRAMよりもはるかに低く、SRAMはビットあたりの価格が高くなります。そのため、DRAMはコンピュータ、ビデオゲーム機、グラフィックカード、および大容量と低コストを必要とするアプリケーションのメインメモリとして使用されます。[ 4 ]メモリのリフレッシュが必要なため、DRAMはより複雑になりますが、DRAMの密度とコストの利点により、この複雑さは正当化されます。
While the memory is operating, each memory cell must be refreshed repetitively and within the maximum interval between refreshes specified by the manufacturer, usually in the millisecond region. Refreshing does not employ the normal memory operations (read and write cycles) used to access data, but specialized cycles called refresh cycles which are generated by separate counter circuits and interspersed between normal memory accesses.[5][6]
The storage cells on a memory chip are laid out in a rectangular array of rows and columns. The read process in DRAM is destructive and removes the charge on the memory cells in an entire row, so there is a column of specialized latches on the chip called sense amplifiers, one for each column of memory cells, to temporarily hold the data. During a normal read operation, the sense amplifiers, after reading and latching the data, rewrite the data in the accessed row.[2][7] This arrangement allows the normal read electronics on the chip to refresh an entire row of memory in parallel, significantly speeding up the refresh process. Although a normal read or write cycle refreshes a row of memory, normal memory accesses cannot be relied on to hit all the rows within the necessary time, necessitating a separate refresh process. Rather than use the normal read cycle in the refresh process, to save time, an abbreviated refresh cycle is used. The refresh cycle is similar to the read cycle, but executes faster for two reasons:
To ensure that each cell gets refreshed within the refresh time interval, the refresh circuitry must perform a refresh cycle on each of the rows on the chip within the interval.
初期のシステムでは、マイクロプロセッサがリフレッシュを制御し、タイマーが定期的な割り込みをトリガーしてリフレッシュを実行するサブルーチンを実行していましたが、これはリフレッシュ処理を停止してメモリ内のデータを失うことなく、マイクロプロセッサを一時停止、シングルステップ実行、または省電力休止状態にすることができないことを意味していました。 [ 6 ]そのため、現代のシステムでは、リフレッシュはメモリコントローラ内の回路によって処理され、[ 2 ]チップ自体に組み込まれている場合もあります。擬似スタティック RAM (PSRAM) などの特殊な DRAM チップは、すべてのリフレッシュ回路をチップ上に備えており、コンピュータの他の部分から見るとスタティック RAMのように機能します。 [ 8 ]
初期のマイクロプロセッサ(例えば、Zilog Z80)の中には、動的メモリセルをリフレッシュするための行アドレスストローブ(RAS)を提供する特別な内部レジスタを備えており、このレジスタはリフレッシュサイクルごとにインクリメントされる。これは、システム内で既に使用されている他の集積回路(例えば、 Motorola 6845)が既にRAM全体にわたって循環アクセスを生成している場合にも実現できる。Z80のようなCPUでは、RASリフレッシュが利用できることがハードウェア設計の簡素化につながるため、大きなセールスポイントとなった。ここでは、RASリフレッシュは、動作冗長クロックサイクル(Tステート)、つまりバスが不要な命令のデコードと実行中に、アドレス線と制御線の独自の組み合わせによって信号が送られる。このようなTステートではバスが非アクティブになる代わりに、リフレッシュレジスタが制御信号の組み合わせとともにアドレスバス上に提示され、リフレッシュ回路がアクティブになる。
Z80の初期バージョンでは、 128行の16kB RAMチップが広く普及していたことと、先見性の欠如から、Rレジスタは7ビット幅(0~127、128行)でしかインクリメントされませんでした。8ビット目はユーザーが設定できましたが、内部サイクルでは変更されませんでした。64kビット以上のDRAMチップ(256行)が登場すると、欠落していた8ビット目を合成し、数ミリ秒後にメモリの内容が失われるのを防ぐために、リフレッシュ信号の周りに追加の回路またはロジックを構築する必要がありました。状況によっては、割り込みとソフトウェアを使用して適切なタイミングで8ビット目を反転させ、Rレジスタの全範囲(256行)をカバーすることが可能でした。おそらくより汎用的ではあるものの、ハードウェア的にはより複雑な別の方法は、8ビットカウンタチップを使用することでした。この出力は、Rレジスタの代わりにリフレッシュRASアドレスを提供します。 CPUからのリフレッシュ信号がこのカウンタのクロックとして使用され、リフレッシュサイクルごとにメモリ行がインクリメントされる仕組みになっていました。Z80コアの後のバージョンやライセンスを受けた互換プロセッサでは、自動サイクルに8ビット目が含まれていないという問題が解消され、現代のCPUはこうした基本的な機能を大幅に拡張し、DRAMリフレッシュのためのオールインワンソリューションを提供しています。
擬似静的RAM(PSRAMまたはPSDRAM)は、SRAMと同様の動作をするようにリフレッシュ回路とアドレス制御回路を内蔵した動的RAMです。DRAMの高密度性と真のSRAMの使いやすさを兼ね備えています。PSRAM(Numonyx製)は、Apple iPhoneやその他の組み込みシステムで使用されています。[ 9 ]
DRAMコンポーネントの中には、自己リフレッシュスタンバイモードを備えているものがあります。これは主に、DRAMに保存されたデータを失うことなく、システムがDRAMコントローラの動作を一時停止して消費電力を節約できるようにするためのものです。一方、PSRAMは、別途DRAMコントローラがなくても動作できます。PSRAMの組み込み型は、 MoSys社から1T-SRAMという名称で販売されています。これは技術的にはDRAMですが、SRAMと非常によく似た動作をし、ゲームキューブやWiiなどのゲーム機で使用されています。
通常、リフレッシュ回路は、リフレッシュする行のアドレスを含むリフレッシュカウンタと、行を順に処理するためにカウンタをインクリメントするタイマーで構成されます。[ 5 ]このカウンタは、メモリコントローラ回路の一部である場合もあれば、メモリチップ自体にある場合もあります。2つのスケジューリング戦略が使用されています。[ 6 ]
バーストリフレッシュではメモリが使用できない期間が長くなるため、分散リフレッシュがほとんどの最新システム、特にリアルタイムシステムで使用されています[ 5 ]。分散リフレッシュでは、リフレッシュサイクル間の間隔は
例えば、DDR SDRAMはリフレッシュ時間が64ms 、行数が8,192なので、リフレッシュサイクル間隔は7.8μsです 。[ 5 ] [ 10 ]最新のDDRxデバイスでは、分散オプションのみがサポートされています。一方、LPDDRxデバイスはバーストリフレッシュをサポートしています。[ 11 ]
非同期DRAMには、列選択(CAS)線と行選択(RAS)線の異なる信号パターンによって選択される、リフレッシュを提供する3つの標準的な方法があります。[ 6 ]
同期DRAMはクロックのエッジでコマンド信号とアドレス信号をサンプリングします。リフレッシュモードは次のとおりです。[ 11 ]
メモリがリフレッシュに費やす時間の割合、つまりリフレッシュオーバーヘッドは、システムタイミングから計算できます。[ 12 ]
例えば、SDRAMチップには2¹³ =8,192行があり、リフレッシュ間隔は64ms、メモリバスは133MHzで動作し 、リフレッシュサイクルは4クロックサイクルかかります。[ 12 ]リフレッシュサイクルにかかる時間は[ 12 ]
つまり、メモリチップの処理時間のうち、リフレッシュサイクルに費やされるのは0.4%未満です。SDRAMチップでは、各チップ内のメモリはバンクに分割され、並列にリフレッシュされるため、さらに時間を節約できます。したがって、必要なリフレッシュサイクル数は、仕様で指定されている1バンク内の行数であり、2012年世代のチップでは8,192に固定されています。
リフレッシュ動作間の最大時間間隔は、 DRAM テクノロジーごとにJEDECによって標準化されており、メーカーのチップ仕様で指定されています。通常、DRAM の場合はミリ秒、eDRAMの場合はマイクロ秒の範囲です。DDR2 SDRAM チップの場合は 64 ms です。[ 13 ] : 20最大リフレッシュ間隔は、メモリセルコンデンサに蓄積された電荷とリーク電流の比率に依存します。半導体のリーク電流は温度とともに増加するため、高温ではリフレッシュ間隔を短くする必要があります。DDR2 SDRAM チップは温度補償リフレッシュ構造を備えています。チップケース温度が 85 °C (185 °F) を超えると、リフレッシュ間隔を半分にする必要があります。[ 13 ] : 49メモリ チップの新世代ごとにコンデンサの形状が縮小し、蓄積される電荷が減少していますが、DRAM のリフレッシュ間隔は増加しています。 1Mチップでは8ms 、 16Mチップでは32ms、 256Mチップでは64msと、リフレッシュ間隔が長くなっています。リフレッシュ間隔が長くなると、デバイスの処理時間のうちリフレッシュに費やす割合が減り、メモリへのアクセスに使える時間が増えます。この改善は主にリーク電流の低減によって実現されています。
ほとんどのDRAMメモリセルにおける読み取り可能な電荷値、ひいてはデータの実際の保持時間は、リフレッシュ間隔よりもはるかに長く、最大1~10秒です。[ 14 ]しかし、トランジスタのリーク電流は、プロセスばらつきにより、同じチップ上の異なるメモリセル間で大きく異なります。1ビットも失われる前にすべてのメモリセルがリフレッシュされるようにするためには、メーカーはリフレッシュ時間を保守的に短く設定する必要があります。[ 15 ]
この頻繁な DRAM のリフレッシュは、待機モードの低電力電子機器が消費する総電力の 3 分の 1 を消費します。研究者たちは、温度補償リフレッシュ (TCR) や DRAM 内の保持を考慮した配置 (RAPID) など、リフレッシュ レートを下げることで充電間のバッテリー駆動時間を延長するためのいくつかのアプローチを提案しています。実験によると、一般的な市販の DRAM チップでは、最悪のケースである 64 ms のリフレッシュ間隔を実際に必要とするのはごく少数の弱いセルだけであり、[ 16 ]しかも、指定された温度範囲の上限でのみ必要です。室温 (たとえば24 °C (75 °F) ) では、同じ弱いセルが正しく動作するために 500 ms ごとに 1 回リフレッシュする必要があります。システムが最も弱い 1% のページの使用を避けることができれば、一般的な DRAM は、残りの 99% のページが正しく動作するために70 °C (158 °F)であっても 1 秒に 1 回リフレッシュするだけで済みます。いくつかの実験では、これら2つの相補的な技術を組み合わせ、室温で10秒のリフレッシュ間隔で正しく動作することを示している。[ 16 ]
エラー耐性のあるアプリケーション(グラフィックスアプリケーションなど)の場合、DRAMまたはeDRAMに保存されている重要でないデータを、その保持期間よりも低いレートで更新すると、わずかな品質低下でエネルギーを節約できます。これは近似計算の一例です。[ 17 ] [ 18 ]
半導体メモリの一種であるスタティックランダムアクセスメモリ(SRAM)では、データはコンデンサの電荷としてではなく、双安定回路に保存されるため、SRAMはリフレッシュする必要がありません。この2つの基本的なメモリタイプには、それぞれ長所と短所があります。スタティックメモリは、電源が入っている間は永続的であると考えられます。つまり、一度書き込まれると、メモリは特に変更されるまで保持されるため、システム設計の観点からは、その使用は比較的簡単です。しかし、各SRAMセルの内部構造には6つのトランジスタが必要であり、DRAMセルに必要なトランジスタが1つであるのと比較すると、SRAMの密度はDRAMよりもはるかに低く、ビットあたりの価格はDRAMよりもはるかに高くなります。
初期のコンピュータメモリ技術のいくつかも、メモリのリフレッシュと同様の目的で定期的な処理を必要とした。ウィリアムズ管は、DRAMと同様に本質的に容量性メモリであり、リフレッシュしない限り各ビットに格納された値が徐々に減衰していくため、最も近い類似性を持つ。
In magnetic-core memory, each memory cell can retain data indefinitely even with the power turned off, but reading the data from any memory cell erases its contents. As a consequence, the memory controller typically added a refresh cycle after each read cycle in order to create the illusion of a non-destructive read operation. Some early computers implemented atomic read–modify–write cycles (combined read and write with modify) for increment and decrement.
Delay-line memory requires constant refreshing because the data is actually stored as a signal in a transmission line. In this case, the refresh rate is comparable to the memory access time.
NAND flash memory may need a form of memory refresh to detect and correct ECC errors, especially if the memory has not been powered up in a long time.[19]