メモリリフレッシュ

メモリリフレッシュとは、コンピュータメモリの領域から情報を定期的に読み取り、読み取った情報を変更せずに同じ領域にすぐに書き換えることで、情報を保存するプロセスです。[ 1 ]メモリリフレッシュは、コンピュータメモリで最も広く使用されているタイプの半導体ダイナミックランダムアクセスメモリ(DRAM)の動作中に必要なバックグラウンドメンテナンスプロセスであり、実際にはこのクラスのメモリを定義する特性です。[ 2 ]

DRAM チップでは、メモリデータの各ビットは、チップ上の小さなコンデンサの電荷の有無として保存されます。 [ 2 ] [ 3 ]時間が経つにつれて、メモリセルの電荷が漏れ出すため、リフレッシュしないと、保存されたデータは最終的に失われます。これを防ぐために、外部回路が定期的に各セルを読み取って再書き込みし、コンデンサの電荷を元のレベルに戻します。各メモリリフレッシュサイクルでは、メモリセルの連続する領域がリフレッシュされるため、チップ上のすべてのセルが連続したサイクルで繰り返しリフレッシュされます。このプロセスは通常、メモリ回路によってバックグラウンドで自動的に実行され、ユーザーには透過的です。[ 2 ]リフレッシュサイクルの実行中は、メモリは通常の読み取りおよび書き込み操作に使用できませんが、最新のメモリではこのオーバーヘッドはメモリ操作を大幅に遅くするほど大きくはありません。

SRAM(スタティックランダムアクセスメモリ)は、リフレッシュを必要としない電子メモリです。[ 2 ] SRAMメモリセルには4~6個のトランジスタが必要ですが、DRAMの1個のトランジスタと1個のコンデンサーが必要です。そのため、SRAM回路はチップ上でより多くの領域を必要とします。その結果、SRAMチップのデータ密度はDRAMよりもはるかに低く、SRAMのビットあたりの価格は高くなります。したがって、DRAMは、大容量と低コストが要求されるコンピューター、ビデオゲームコンソール、グラフィックスカードなどのメインメモリに使用されます。[ 4 ]メモリリフレッシュの必要性はDRAMをより複雑にしますが、DRAMの密度とコストの利点はこの複雑さを正当化します。

手術

メモリが動作している間、各メモリセルは繰り返しリフレッシュされなければならず、リフレッシュ間隔はメーカーが規定する最大間隔(通常はミリ秒単位)内で維持されなければならない。リフレッシュは、データアクセスに使用される通常のメモリ操作(読み出しおよび書き込みサイクル)ではなく、リフレッシュサイクルと呼ばれる特殊なサイクルによって行われる。リフレッシュサイクルは、独立したカウンタ回路によって生成され、通常のメモリアクセスの間に挿入される。[ 5 ] [ 6 ]

メモリチップ上の記憶セルは、行と列の長方形の配列にレイアウトされています。DRAMの読み出しプロセスは破壊的であり、メモリセルの行全体の電荷を除去します。そのため、チップ上にはセンスアンプと呼ばれる特殊なラッチの列がメモリセルの各列ごとに1つずつ配置され、データを一時的に保持します。通常の読み出し操作では、センスアンプはデータを読み取ってラッチした後、アクセスした行のデータを再書き込みします。[ 2 ] [ 7 ]この配置により、チップ上の通常の読み出し回路はメモリの行全体を並行してリフレッシュできるため、リフレッシュプロセスが大幅に高速化されます。通常の読み出しまたは書き込みサイクルはメモリの行をリフレッシュしますが、通常のメモリアクセスでは必要な時間内にすべての行をリフレッシュできるとは限らないため、別途リフレッシュプロセスが必要になります。リフレッシュプロセスでは、通常の読み出しサイクルを使用する代わりに、時間を節約するために短縮リフレッシュサイクルが使用されます。リフレッシュサイクルは読み出しサイクルに似ていますが、以下の2つの理由からより高速に実行されます。

  • リフレッシュには行アドレスのみが必要なので、チップ アドレス回路に列アドレスを適用する必要はありません。
  • セルから読み取られたデータは、CPU に送信するために出力バッファまたはデータ バスに送る必要はありません。

各セルがリフレッシュ時間間隔内にリフレッシュされるようにするには、リフレッシュ回路が間隔内にチップ上の各行に対してリフレッシュ サイクルを実行する必要があります。

リフレッシュ回路の種類

初期のシステムでは、マイクロプロセッサがリフレッシュを制御し、タイマーが周期的な割り込みをトリガーしてリフレッシュを実行するサブルーチンを実行していましたが、これはリフレッシュプロセスを停止してメモリ内のデータを失わずにマイクロプロセッサを一時停止、シングルステップ実行、または省電力休止状態にすることができませんでした。 [ 6 ]そのため、現代のシステムではリフレッシュはメモリコントローラ内の回路によって処理され、[ 2 ]チップ自体に組み込まれている場合もあります。擬似静的RAM(PSRAM)などの特殊なDRAMチップは、チップ上にすべてのリフレッシュ回路を備えており、コンピュータの残りの部分に関しては静的RAMのように機能します。 [ 8 ]

CPUベースのリフレッシュ

初期のマイクロプロセッサ( Zilog Z80など)には、行アドレスストローブ(RAS)を提供して動的メモリセルをリフレッシュできる特別な内部レジスタがあり、このレジスタはリフレッシュサイクルごとにインクリメントされます。また、システムで既に使用されている他の集積回路( Motorola 6845など)が既に RAM 全体のサイクリングアクセスを生成している場合、このレジスタを使用してもこれを実現できます。Z80などのCPUでは、RASリフレッシュが利用できることがハードウェア設計の簡素化につながるため、大きなセールスポイントでした。この場合、RASリフレッシュは、動作的に冗長なクロックサイクル(Tステート)、つまりバスが不要な命令のデコードおよび実行中に、アドレス線と制御線の独自の組み合わせによって通知されます。このようなTステート中にバスが非アクティブになる代わりに、リフレッシュレジスタが、リフレッシュ回路をアクティブにする制御信号の組み合わせとともにアドレスバス上に提示されます。

Z80の初期バージョンでは、16kBのRAMチップが128行で広く普及していたことと、ある程度の先見性の欠如により、Rレジスタは7ビット幅(0~127、128行)の範囲でしかインクリメントできませんでした。8番目のビットはユーザーが設定できましたが、内部サイクルによって変更されませんでした。64kビット以上のDRAMチップ(256行)の登場により、失われた8番目のビットを合成し、数ミリ秒後にメモリ内容のブロックが失われるのを防ぐために、リフレッシュ信号を中心に追加の回路またはロジックを構築する必要がありました。状況によっては、割り込みとソフトウェアを利用して適切なタイミングで8番目のビットを反転することで、Rレジスタの全範囲(256行)をカバーすることが可能でした。おそらくより汎用的ですが、ハードウェア的にはより複雑な別の方法は、8ビットカウンタチップを使用し、その出力をRレジスタの代わりにリフレッシュRASアドレスとして使用することでした。 CPUからのリフレッシュ信号がこのカウンタのクロックとして使用され、その結果、リフレッシュサイクルごとにメモリ行がインクリメントされました。Z80コアの後継バージョンおよびライセンス供与された類似製品では、自動サイクルに8ビット目が含まれないという問題が改善され、現代のCPUはこのような基本的なプロビジョニングを大幅に拡張し、DRAMリフレッシュのための充実したオールインワンソリューションを提供しています。

擬似静的DRAM

擬似スタティックRAM(PSRAMまたはPSDRAM)は、SRAMと同様の動作を実現するためにリフレッシュおよびアドレス制御回路を内蔵したダイナミックRAMです。DRAMの高密度と真のSRAMの使いやすさを兼ね備えています。Numonyx社製のPSRAMは、Apple iPhoneをはじめとする組み込みシステムに使用されています。[ 9 ]

一部のDRAMコンポーネントには、セルフリフレッシュ・スタンバイモードが搭載されています。これは主に、システムがDRAMコントローラの動作を一時停止し、DRAMに保存されているデータを失うことなく電力を節約できるようにするために提供されています。一方、PSRAMは、独立したDRAMコントローラなしで動作できます。PSRAMの組み込みバージョンは、 MoSysによって1T-SRAMという名前で販売されています。これは技術的にはDRAMですが、SRAMとほぼ同様に動作し、ゲームキューブWiiで使用されています。

リフレッシュ操作

通常、リフレッシュ回路は、リフレッシュする行のアドレスを含むリフレッシュカウンタ(チップの行アドレス線に印加される)と、カウンタをインクリメントして行を進むタイマーで構成される。[ 5 ]このカウンタは、メモリコントローラ回路の一部である場合もあれば、メモリチップ自体に搭載されている場合もある。2つのスケジューリング戦略が用いられている。[ 6 ]

  • バーストリフレッシュ- すべての行がリフレッシュされるまで一連のリフレッシュサイクルが次々に実行され、その後、次のリフレッシュが必要になるまで通常のメモリアクセスが発生します。
  • 分散リフレッシュ- リフレッシュ サイクルはメモリ アクセスを挟みながら定期的に実行されます。

バーストリフレッシュはメモリが利用できない期間が長くなるため、分散リフレッシュはほとんどの最新システム、特にリアルタイムシステムで使用されている[ 5 ]。分散リフレッシュでは、リフレッシュサイクルの間隔は

リフレッシュサイクル間隔リフレッシュ時間/行数{\displaystyle {\text{リフレッシュサイクル間隔}}={\text{リフレッシュ時間}}\,/\,{\text{行数}}\,}

例えば、DDR SDRAMのリフレッシュ時間は64ms、行数は8,192行なので、リフレッシュサイクル間隔は7.8μsです。[ 5 ] [ 10 ]最近のDDRxデバイスでは、分散リフレッシュのみがサポートされています。一方、LPDDRxデバイスは依然としてバーストリフレッシュをサポートしています。[ 11 ]

非同期リフレッシュと同期リフレッシュ

非同期DRAMにはリフレッシュを提供する3つの標準的な方法があり、列選択(CAS)ラインと行選択(RAS)ライン上の異なる信号パターンによって選択される。[ 6 ]

  • RAS のみのリフレッシュ - このモードでは、リフレッシュする行のアドレスは、通常、メモリ コントローラ内の外部カウンタによって生成されるアドレス バス ラインによって提供されます。
  • CAS-before-RAS(CBR)リフレッシュ – このモードでは、オンチップカウンタがリフレッシュする行を追跡し、外部回路はリフレッシュサイクルを開始するだけです。[ 5 ]このモードでは、メモリアドレスバスバッファに電源を供給する必要がないため、消費電力が少なくなります。ほとんどの最新コンピュータで使用されています。
  • 隠しリフレッシュ – これはCBRリフレッシュサイクルの代替バージョンであり、先行する読み取りまたは書き込みサイクルと組み合わせることができます。[ 5 ]リフレッシュはデータ転送中に並行して行われるため、時間が節約されます。

同期DRAMはクロックのエッジでコマンドとアドレス信号をサンプリングする。リフレッシュモードは以下の通りである。[ 11 ]

リフレッシュオーバーヘッド

メモリがリフレッシュに費やす時間の割合、つまりリフレッシュオーバーヘッドは、システムタイミングから計算できます。[ 12 ]

リフレッシュオーバーヘッドリフレッシュに必要な時間更新間隔{\displaystyle {\text{リフレッシュオーバーヘッド}}={\frac {\text{リフレッシュに必要な時間}}{\text{リフレッシュ間隔}}}\,}

例えば、SDRAMチップは2 13 =8,192行、リフレッシュ間隔は64ms、メモリバスは133MHzで動作し、リフレッシュサイクルは4クロックサイクルかかります。[ 12 ]リフレッシュサイクルの時間は[ 12 ]です。

length of refresh cycle=4/f=41.33(108)Hz=30ns{\displaystyle {\text{length of refresh cycle}}=4/f={\frac {4}{1.33(10^{8})\,{\text{Hz}}}}=30\,{\text{ns}}\,}
time required for refresh=(length of refresh cycle)(rows)=(30ns)(8192)=0.246ms{\displaystyle {\text{time required for refresh}}=({\text{length of refresh cycle}})({\text{rows}})=(30\,{\text{ns}})(8192)=0.246\,{\text{ms}}\,}
refresh overhead=0.246ms64ms=.0038{\displaystyle {\text{refresh overhead}}={\frac {0.246\,{\text{ms}}}{64\,{\text{ms}}}}=.0038\,}

つまり、メモリチップの時間の0.4%未満がリフレッシュサイクルに消費されることになります。SDRAMチップでは、各チップ内のメモリがバンクに分割され、各バンクが並行してリフレッシュされるため、さらに時間を節約できます。そのため、必要なリフレッシュサイクル数は、仕様で定められた1バンクの行数であり、2012世代のチップでは8,192に固定されています。

更新間隔

リフレッシュ操作間の最大時間間隔は、各 DRAM テクノロジごとにJEDECで標準化されており、製造元のチップ仕様で指定されています。通常、DRAM の場合はミリ秒単位、eDRAMの場合はマイクロ秒単位です。DDR2 SDRAM チップの場合は 64 ミリ秒です。[ 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% のページの使用を避けることができれば、一般的な DRAM では、70 °C (158 °F) でも、残りの 99% のページを正しく動作させるために、1 秒に 1 回のリフレッシュのみが必要です。いくつかの実験では、これら2つの相補的な技術を組み合わせ、10秒のリフレッシュ間隔で室温で正しく動作することを示した。[ 16 ]

エラー耐性のあるアプリケーション(グラフィックスアプリケーションなど)では、DRAMまたはeDRAMに保存されている重要でないデータを保持期間よりも低いレートで更新すると、品質の低下がわずかでエネルギーを節約できます。これは近似計算の一例です。[ 17 ] [ 18 ]

スラム

別の種類の半導体メモリであるスタティックランダムアクセスメモリ(SRAM)では、データはコンデンサの電荷としてではなく、双安定回路に保存されるため、リフレッシュは不要です。この2つの基本的なメモリタイプには、それぞれ長所と短所があります。スタティックメモリは、電源投入中は永続的とみなすことができます。つまり、一度書き込まれると、明示的に変更されるまでメモリは保持されるため、システム設計の観点からは使用が簡単です。ただし、各SRAMセルの内部構造には6個のトランジスタが必要ですが、DRAMセルには1個のトランジスタしか必要ありません。そのため、SRAMの密度はDRAMよりもはるかに低く、ビット単価ははるかに高くなります。

リフレッシュを使用する他のメモリ技術

初期のコンピュータメモリ技術のいくつかも、メモリリフレッシュと同様の目的で定期的なプロセスを必要としました。ウィリアムズ管はDRAMと同様に本質的に容量性メモリであり、各ビットに格納された値はリフレッシュされない限り徐々に減少するため、メモリリフレッシュに最も近い類似性を持っています。

磁気コアメモリでは、各メモリセルは電源を切ってもデータを無期限に保持できますが、メモリセルからデータを読み出すと内容は消去されます。そのため、メモリコントローラは通常、各読み出しサイクルの後にリフレッシュサイクルを追加し、非破壊的な読み出し操作の印象を与えていました。初期のコンピュータの中には、インクリメントとデクリメントのために、アトミックな読み出し・変更・書き込みサイクル(読み出しと書き込みに加え、変更も行う)を実装したものもありました。

遅延線メモリは、データが伝送線路上の信号と​​して実際に保存されるため、一定のリフレッシュを必要とします。この場合、リフレッシュレートはメモリアクセス時間に匹敵します。

参照

参考文献

  1. ^「リフレッシュサイクル」 Laplante, Phillip A. (1999).電気工学総合辞典. Springer. 540ページ. ISBN 3540648356
  2. ^ a b c d e fガンスル, ジャック; タミー・ノーガード; フレッド・イーディー; ルーウィン・エドワーズ; デイビッド・J・カッツ (2007).組み込みハードウェア. ニューネス. p. 106. ISBN 978-0750685849
  3. ^ジェイコブ、ブルース、スペンサー・ン、デイビッド・ワン (2007).メモリシステム:キャッシュ、DRAM、ディスク. モーガン・カウフマン. pp.  431– 432. ISBN 978-0123797513
  4. ^ Laasby, Gitte (2014年3月10日). 「コンピューターチップの価格固定に関する和解で消費者が金銭を受け取る資格」 .ミルウォーキー・ジャーナル・センチネル. ミルウォーキー、ウィスコンシン州. 2024年4月16日閲覧
  5. ^ a b c d e f Reinhardt, Steven K. (1999). 「メモリ、p. 9–3」(PDF) . EECS 373 マイクロプロセッサベースシステムの設計、講義ノート、1999年秋. ミシガン大学電気工学部. 2014年1月2日時点のオリジナルよりアーカイブ(PDF) . 2024年4月16日閲覧
  6. ^ a b c dヒース、スティーブ (2003).組み込みシステム設計 第2版. ニューネス. pp.  88– 89. ISBN 0750655461
  7. ^ 「Memory 1997」(PDF) . Integrated Circuit Engineering. 1997. p. 7.4.スミソニアン博物館のチップコレクションのウェブサイト
  8. ^ Kumar (2009). 『デジタル回路の基礎』第2版. インド: PHI Learning Pvt. Ltd. p. 819. ISBN 978-8120336797
  9. ^ EE TimesによるiPhone 3Gの分解
  10. ^ 「JEDEC Double Data Rate (DDR) SDRAM仕様」(PDF) JESD79C JEDEC Solid State Technology Assoc. 2003年3月. 2024年4月16日閲覧ベイラー大学工学部・コンピュータサイエンス学部ウェブサイト、p.20
  11. ^ a b Bhati, Ishwar; Chang, Mu-Tien; Chishti, Zeshan; Lu, Shih-Lien; Jacob, Bruce (2016年1月1日). 「DRAMリフレッシュメカニズム、ペナルティ、トレードオフ」(PDF) . IEEE Transactions on Computers . 65 (1): 108– 121. doi : 10.1109/TC.2015.2417540 .
  12. ^ a b c Godse, Deepali A.; Godse, Atul P. (2008). Computer Organization . インド: Technical Publications. p. 4.23. ISBN 978-8184313567
  13. ^ a b「JEDEC DDR2 SDRAM仕様」(PDF) ECS.Baylor.edu JESD79-2b JEDECソリッドステート技術協会 2005年1月2024年4月16日閲覧
  14. ^ジェイコブ、2007年、356ページ
  15. ^ Bhati, Ishwar; Chang, Mu-Tien; Chishti, Zeshan; Lu, Shih-Lien; Jacob, Bruce (2016). 「DRAMリフレッシュメカニズム、ペナルティ、トレードオフ」. IEEE Transactions on Computers . 65 (1): 108– 121. Bibcode : 2016ITCmp..65..108B . doi : 10.1109/TC.2015.2417540 .
  16. ^ a b Ravi K. Venkatesan、Stephen Herr、Eric Rotenberg。「DRAMにおけるリテンションを考慮した配置(RAPID):準不揮発性DRAM向けソフトウェア手法」 2006年。
  17. ^ Raha, A.; Sutar, S.; Jayakumar, H.; Raghunathan, V. (2017年7月). 「Quality Configurable approximate DRAM」 . IEEE Transactions on Computers . 66 (7): 1172– 1187. Bibcode : 2017ITCmp..66.1172R . doi : 10.1109/TC.2016.2640296 . ISSN 0018-9340 . 
  18. ^キム・ヨンジュン;チェ・ウォノ;ギュイヨ、シリル。カスト、ユヴァル(2019年12月)。 「エネルギー効率の高いメモリのための最適なリフレッシュ電力割り当てについて」。2019 IEEE グローバル コミュニケーション カンファレンス (GLOBECOM)。米国ハワイ州ワイコロア: IEEE。ページ 1 6。arXiv : 1907.01112土井: 10.1109/GLOBECOM38437.2019.9013465ISBN 978-1-7281-0962-6. S2CID  195776538 .