メモリ更新
メモリリフレッシュは、情報を保存するために、コンピュータメモリの領域から定期的に情報を読み取り、読み取った情報を変更せずに同じ領域にすぐに書き換えるプロセスです。メモリリフレッシュは、最も広く使用されているコンピューターメモリである半導体ダイナミックランダムアクセスメモリ(DRAM)の動作中に必要なバックグラウンドメンテナンスプロセスであり、実際、このクラスのメモリの特徴的な特性です。
DRAMチップでは、メモリデータの各ビットは、チップ上の小さなコンデンサの電荷の有無として保存されます。時間が経過すると、メモリセルの電荷が漏れ出すため、更新されなければ保存されたデータは最終的に失われます。これを防ぐために、外部回路は定期的に各セルを読み取り、それを書き換えて、コンデンサの電荷を元のレベルに戻します。各メモリリフレッシュサイクルは、メモリセルの後続の領域をリフレッシュするため、連続したサイクルですべてのセルを繰り返しリフレッシュします。このプロセスは、メモリ回路によってバックグラウンドで自動的に実行され、ユーザーには透過的です。リフレッシュサイクルが発生している間、メモリは通常の読み取りおよび書き込み操作には使用できませんが、現代のメモリでは、この「オーバーヘッド」時間はメモリ操作を大幅に遅くするほど大きくはありません。
スタティックランダムアクセスメモリ(SRAM)と呼ばれる、リフレッシュを必要としない電子メモリが利用可能です。 SRAMのメモリセルは、DRAMの単一のトランジスタとコンデンサに比べて4〜6個のトランジスタを必要とするため、SRAM回路はチップ上のより多くの領域を必要とします。その結果、SRAMチップのデータ密度はDRAMよりもはるかに低く、SRAMのビットあたりの価格は高くなっています。したがって、DRAMは、コンピュータ、ビデオゲームコンソール、グラフィックカード、および大容量と低コストを必要とするアプリケーションのメインメモリに使用されます。メモリのリフレッシュが必要なため、DRAMのタイミングと回路はSRAM回路よりもはるかに複雑になりますが、DRAMの密度とコストの利点により、この複雑さが正当化されます。
DRAMリフレッシュの仕組み
メモリーが動作している間、各メモリーセルは、メーカーが指定するリフレッシュの最大間隔(通常はミリ秒単位)内で繰り返しリフレッシュする必要があります。リフレッシュでは、データへのアクセスに使用される通常のメモリ操作(読み取りおよび書き込みサイクル)を使用しませんが、メモリ回路内の個別のカウンター回路によって生成され、通常のメモリアクセス間に散在するリフレッシュサイクルと呼ばれる特殊なサイクルを使用します。
メモリチップ上の記憶セルは、行と列の長方形の配列に配置されます。 DRAMの読み取りプロセスは破壊的であり、行全体のメモリセルの電荷を除去するため、チップにはメモリセルの各列に1つずつ、データを一時的に保持するためのセンスアンプと呼ばれる特殊なラッチの行があります。通常の読み取り動作では、データを読み取ってラッチした後のセンスアンプは、アクセスした行のデータを書き換えてから、単一の列から出力にビットを送信します。これは、チップ上の通常の読み取り電子回路がメモリの行全体を並行して更新できることを意味し、更新プロセスを大幅に高速化します。通常の読み取りまたは書き込みサイクルではメモリの行が更新されますが、通常のメモリアクセスでは、必要な時間内にすべての行をヒットすることはできないため、個別の更新プロセスが必要です。リフレッシュプロセスで通常の読み取りサイクルを使用するのではなく、時間を節約するために、リフレッシュサイクルと呼ばれる短縮サイクルが使用されます。リフレッシュサイクルは読み取りサイクルに似ていますが、次の2つの理由で実行速度が速くなります。
- リフレッシュには、行アドレスのみが必要なので、列アドレスをチップアドレス回路に適用する必要はありません。
- セルから読み取ったデータは、CPUに送信するために出力バッファーまたはデータバスに供給する必要はありません。
リフレッシュ回路は、各セルが確実にリフレッシュされるように、リフレッシュ時間内にチップ上の各行でリフレッシュサイクルを実行する必要があります。
リフレッシュ回路の種類
いくつかの初期のシステムでは、マイクロプロセッサがリフレッシュを制御しましたが、タイマーはリフレッシュを実行するサブルーチンを実行する定期的な割り込みをトリガーしましたが、これはマイクロプロセッサをリフレッシュを停止せずに一時停止、シングルステップ、または省エネ休止状態にすることができないことを意味しましたメモリー内のデータを処理して失う。そのため、最新のシステムでは、リフレッシュはメモリコントローラー内の回路、またはチップ自体の回路で処理されます。擬似静的RAM(PSRAM)などの一部のDRAMチップには、チップ上のすべてのリフレッシュ回路があり、コンピューターの残りの部分に関しては静的RAMのように機能します。
通常、リフレッシュ回路は、チップの行アドレスラインに適用されるリフレッシュされる行のアドレスを含むリフレッシュカウンターと、カウンターをインクリメントして行をステップするタイマーで構成されます。このカウンタは、メモリコントローラ回路の一部、またはメモリチップ自体にある場合があります。 2つのスケジューリング戦略が使用されています。
- バーストリフレッシュ -すべての行がリフレッシュされるまで一連のリフレッシュサイクルが次々に実行され、その後、次のリフレッシュが必要になるまで通常のメモリアクセスが発生します。
- 分散リフレッシュ -リフレッシュサイクルは定期的に実行され、メモリアクセスが散在しています。
バーストリフレッシュは、メモリが利用できないときに長期間を要するため、最新のシステム、特にリアルタイムシステムで分散リフレッシュが使用されています。分散リフレッシュでは、リフレッシュサイクルの間隔は
更新サイクル間隔=更新時間/行数{\ displaystyle {\ text {更新サイクル間隔}} = {\ text {更新時間}} \、/ \、{\ text {行数}} \、}たとえば、現在の世代のチップ(DDR SDRAM)のリフレッシュ時間は64ミリ秒、8,192行であるため、リフレッシュサイクル間隔は7.8μsです。
最近の世代のDRAMチップには統合リフレッシュカウンタが含まれており、メモリ制御回路はこのカウンタを使用するか、外部カウンタから行アドレスを提供できます。これらのチップには、「列選択」(CAS)および「行選択」(RAS)ライン上の異なる信号パターンによって選択される、リフレッシュを提供する3つの標準的な方法があります。
- " RAS only refresh "-このモードでは、リフレッシュする行のアドレスはアドレスバスラインによって提供されるため、メモリコントローラーの外部カウンターで使用されます。
- 「 CAS before RAS refresh 」(CBR)-このモードでは、オンチップカウンターはリフレッシュされる行を追跡し、外部回路は単にリフレッシュサイクルを開始します。このモードでは、メモリアドレスバスバッファの電源を入れる必要がないため、消費電力が少なくなります。最近のほとんどのコンピューターで使用されています。
- 「 非表示リフレッシュ 」-これは、CBRリフレッシュサイクルの代替バージョンであり、前の読み取りまたは書き込みサイクルと組み合わせることができます。リフレッシュはデータ転送中に並行して行われ、時間を節約します。
最新(2012)世代のチップでは、「RASのみ」モードが廃止され、内部カウンターを使用してリフレッシュが生成されます。チップには、コンピューターが休止状態のときに使用する追加の「スリープモード」があります。このモードでは、オンチップオシレーターが内部リフレッシュサイクルを生成し、外部クロックをシャットダウンできます。
更新オーバーヘッド
メモリがリフレッシュに費やす時間の割合であるリフレッシュオーバーヘッドは、システムタイミングから計算できます。
更新のオーバーヘッド=更新に必要な時間、msrefresh間隔、ms {\ displaystyle {\ text {refreshオーバーヘッド}} = {\ frac {\ text {更新に必要な時間、ms}} {\ text {refresh interval、ms}}} \、}たとえば、最近のSDRAMチップには213 = 8,192行、リフレッシュ間隔は64ミリ秒、メモリバスは133 MHzで動作し、リフレッシュサイクルには4クロックサイクルかかります。更新サイクルの時間は
更新サイクルの長さ= 4 / f = 41.33(108)Hz = 30ns {\ displaystyle {\ text {更新サイクルの長さ}} = 4 / f = {\ frac {4} {1.33(10 ^ {8})\ 、{\ text {Hz}}}} = 30 \、{\ text {ns}} \、}更新に必要な時間=(更新サイクルの長さ)(行)=(30ns)(8192)= 0.246ms {\ displaystyle {\ text {更新に必要な時間}} =({\ text {更新サイクルの長さ}})({\ text {rows}})=(30 \、{\ text {ns}})(8192)= 0.246 \、{\ text {ms}} \、}オーバーヘッドの更新= 0.246ms64ms = .0038 {\ displaystyle {\ text {refreshオーバーヘッド}} = {\ frac {0.246 \、{\ text {ms}}}} 64 \、{\ text {ms}}}} =。0038 \、}したがって、メモリチップの時間の0.4%未満がリフレッシュサイクルに費やされます。 SDRAMチップでは、各チップのメモリがバンクに分割され、それらが並行してリフレッシュされるため、さらに時間が節約されます。したがって、必要なリフレッシュサイクルの数は、最近の(2012)世代のチップが8,192で凍結されている仕様で指定されている単一バンク内の行数です。
更新間隔
リフレッシュ動作間の最大時間間隔は、DRAMテクノロジーごとにJEDECによって標準化されており、製造元のチップ仕様で指定されています。通常、DRAMの場合はミリ秒の範囲で、eDRAMの場合はマイクロ秒の範囲です。 DDR2 SDRAMチップの場合、64ミリ秒です。これは、リーク電流に対するメモリセルコンデンサに保存された電荷の比率に依存します。コンデンサのジオメトリはメモリチップの新世代ごとに縮小しているという事実にもかかわらず、後の世代のコンデンサはより少ない電荷を保存しますが、DRAMのリフレッシュ時間は改善されています。 1Mチップの場合は8ミリ秒、16Mチップの場合は32ミリ秒、256Mチップの場合は64ミリ秒です。この改善は、主にリークを大幅に低減するトランジスタを開発することにより達成されます。リフレッシュ時間が長くなると、デバイスの時間のほんの一部がリフレッシュで占有され、メモリアクセスの時間が長くなります。以前のDRAMではリフレッシュオーバーヘッドがチップ時間の最大10%を占めていましたが、最新のチップではこの割合は1%未満です。
半導体のリーク電流は温度とともに増加するため、高温ではリフレッシュ時間を短縮する必要があります。現世代のDDR2 SDRAMチップには、温度補償されたリフレッシュ構造があります。チップケースの温度が85°C(185°F)を超えると、リフレッシュサイクル時間を半分にする必要があります。
読み取り可能な電荷値の実際の持続性、したがってほとんどのDRAMメモリセルのデータは、リフレッシュ時間よりもはるかに長く、最大1〜10秒です。ただし、トランジスタのリーク電流は、プロセスのばらつきにより、同じチップ上の異なるメモリセル間で大きく異なります。 1ビットが失われる前にすべてのメモリセルが確実に更新されるようにするため、メーカーはリフレッシュ時間を控えめに短く設定する必要があります。
この頻繁なDRAMリフレッシュは、スタンバイモードの低電力電子機器によって消費される総電力の3分の1を消費します。研究者は、温度補償リフレッシュ(TCR)やDRAMの保持を意識した配置(RAPID)など、リフレッシュレートを下げることで充電間のバッテリー実行時間を延長するためのいくつかのアプローチを提案しています。実験によると、一般的な既製のDRAMチップでは、最悪の場合の64 msのリフレッシュ間隔が実際に必要なのは少数のウィークセルだけであり、それでも指定された温度範囲の上限でのみです。室温(24°C(75°F)など)では、正常に動作させるために500 msごとに同じ弱いセルを更新する必要があります。システムが最も弱い1%のページの使用を回避できる場合、残りの99%のページを正しく動作させるために、通常のDRAMは70°C(158°F)でも1秒に1回だけ更新する必要があります。一部の実験では、これら2つの補完的な手法を組み合わせて、10秒の更新間隔で室温で正しく動作します。
エラー耐性のあるアプリケーション(グラフィックスアプリケーションなど)の場合、DRAMまたはeDRAMに保存されている重要でないデータを保持期間よりも低いレートで更新すると、エネルギーが節約されます。
SRAMおよびDRAMメモリテクノロジー
SRAM
別のタイプの半導体メモリであるスタティックランダムアクセスメモリ(SRAM)では、データはキャパシタの電荷としてではなく、一対のクロスカップルインバータに格納されるため、SRAMをリフレッシュする必要はありません。 2つの基本的なタイプのメモリには長所と短所があります。静的メモリは、電源がオンになっている間、永続的であると見なすことができます。つまり、一度書き込まれると、メモリは特に変更されるまで維持されるため、システム設計の観点からその使用は簡単です。ただし、DRAMセルに必要な単一のトランジスタと比較して、各SRAMセルの内部構造には6つのトランジスタが必要であるため、SRAMの密度はDRAMよりもはるかに低く、ビットあたりの価格は非常に高くなります。
CPUベースの更新
初期のマイクロプロセッサ(Zilog Z80など)には、ダイナミックメモリセルを更新するRow-Address Strobe(RAS)を提供できる特別な内部レジスタがあり、各リフレッシュサイクルでレジスタがインクリメントされていました。これは、すでにシステムで使用されている他の集積回路によっても達成できます。これらの集積回路が既にRAM( たとえば Motorola 6845)でサイクリングアクセスを生成している場合です。 Z80などのCPUでは、ハードウェア設計が簡素化されているため、RASリフレッシュの可用性は大きなセールスポイントでした。ここで、RASリフレッシュは、動作上冗長なクロックサイクル(Tステート)の間、つまりバスが不要な可能性がある命令デコード/実行中に、アドレスと制御ワイヤのユニークな組み合わせによって通知されます。このようなTステート中にバスが非アクティブになる代わりに、リフレッシュ回路に示す制御ワイヤの組み合わせと共に、リフレッシュレジスタがアドレスバスに表示されます。
Z80の初期のバージョンでは、16 kBのRAMチップ( つまり 、128行)の偏在性と先見性の欠如により、Rレジスタは7ビット幅の範囲(0〜127、 つまり 128行)でしか増加しませんでした。 ; 8番目のビットはユーザーが設定できますが、内部サイクリングによって変更されないままになります。 64 kbit + DRAMチップ(8ビットRAS)の急速な出現により、不足している8ビットを合成し、数ミリ秒後にメモリブロックが失われるのを防ぐために、リフレッシュ信号の周りに追加の回路またはロジックを構築する必要がありました。状況によっては、割り込みを利用して適切なタイミングで8番目のビットを反転させ、Rレジスタの全範囲(256行)をカバーすることができました。別の方法は、おそらくより普遍的ですが、ハードウェアの点ではより複雑で、8ビットカウンターチップを使用することで、その出力はRレジスタの代わりにリフレッシュRASアドレスを提供します:CPUからのリフレッシュ信号がクロックとして使用されましたこのカウンタの場合、更新されるメモリ行は更新サイクルごとに増分されます。 Z80コアのそれ以降のバージョンとライセンスされた「類似」は、自動サイクリングの8ビットが含まれないことを改善し、最新のCPUは、DRAMリフレッシュのための豊富なオールインワンソリューションを提供するために、このような基本プロビジョニングを大幅に拡張しました。
疑似スタティックDRAM
疑似スタティックRAM(PSRAMまたはPSDRAM)は、リフレッシュおよびアドレス制御回路を内蔵したダイナミックRAMであり、スタティックRAM(SRAM)と同様に動作します。 DRAMの高密度と真のSRAMの使いやすさを兼ね備えています。 PSRAM(ニューモニクス製)は、Apple iPhoneおよびその他の組み込みシステムで使用されます。
一部のDRAMコンポーネントには「セルフリフレッシュモード」があり、これには擬似静的動作に必要なロジックとほぼ同じものが含まれますが、このモードは多くの場合スタンバイモードと同等です。これは主に、システムがDRAMコントローラーの動作を一時停止してDRAMに保存されたデータを失うことなく電力を節約できるようにするためであり、PSRAMの場合のように別個のDRAMコントローラーなしで動作できるようにするためではありません。 PSRAMの組み込みバリアントは、1T-SRAMという名前でMoSysから販売されています。技術的にはDRAMですが、SRAMと同じように動作し、任天堂のゲームキューブおよびWiiコンソールで使用されます。
リフレッシュを使用するその他のメモリテクノロジー
いくつかの初期のコンピューターメモリテクノロジーでは、メモリの更新と目的が似ている定期的なプロセスも必要でした。ウィリアムズチューブは、DRAMと同様に、基本的に各ビットに保存された値がリフレッシュされない限り徐々に減衰する容量性メモリであるため、最も類似しています。
磁気コアメモリでは、電源をオフにしても各メモリセルは無期限にデータを保持できますが、メモリセルからデータを読み取るとその内容が消去されます。結果として、メモリコントローラーは通常、各読み取りサイクルの後にリフレッシュサイクルを追加して、非破壊的な読み取り操作の錯覚を作り出します。
遅延線メモリは、データが実際に伝送線に信号として保存されるため、常に更新する必要があります。この場合、リフレッシュレートはメモリアクセス時間に匹敵します。