アカウント名:
パスワード:
そういや、90年代前半にDRAMのタイミング系を自作してたときに、1秒以上アクセスもリフレッシュしなくても記憶が残っていて驚いた。
実は、DRAMの大部分の記憶セルは、1秒くらい経っても正しく情報を読み出すことができます。 [省略] (製造のばらつきを考慮して)規格としては64msという安全ラインが設定されているわけです。
だそうです。
32bit Windowsで余ったメモリをRAMディスクにするのが流行ったとき、RAMディスクにウォームスタート機能を付ける実験をしてみたことがあります。大部分の内容は残っているのですが、ところどころ壊れているという状態なんでRAMディスクとしてはちょっと使い物になりませんでした。誤差を許容するような用途ならなにか使いみちがあるかもしれません。
リフレッシュが要らないのはアクセスした行だけ、基本的に破壊読み込みですぐに修復するから記憶が新しくなったんだったと思う。
「DRAMのリフレッシュって何をしてるの?」って人のためにもうちょっと解説しておくと、
DRAMは、コンデンサに電荷を貯めることで情報を記憶している分けですが、コンデンサに溜まった電荷は漏れ電流などによって徐々に抜けていきます。そのため、定期的に充電しないと記憶内容が消えてしまいます。そういう「再充電処理」がリフレッシュ。
ところで、このDRAMでデータを記憶するコンデンサの「セル」の大きさは非常に微小であり、そのセルに至るまでの配線の方が長いので、セルよりも、配線の寄生容量の方が、桁違いに静電容量が大きいです。
そのため、DRAMの読み出しでは、
セルに電荷が貯まっている時→セルに溜まった電荷が配線に流れ、セルは放電、配線容量というコンデンサは若干充電する形になり、ほんのちょっぴり配線の電圧が上がる
セルに電荷が貯まっていない時→配線容量に溜まった電荷がセルに流れ、セルは充電、配線容量というコンデンサは若干放電する形になり、ほんのちょっぴり配線の電圧が下がる
といった電気の流れになり、この「配線の電圧がほんのチョッピリ上がるか下がるか」を検出して1/0を出力します。
このとき、セルの電圧はほぼ配線の電圧になるまで充放電されてしまいますから、読み出し処理によって記憶内容は失われてしまいます。そのため、DRAMでは、読み出し処理後には、読みとったデータを元に1行まるごと再度書き込み(セルの充放電)処理を行うようになっています。
このように、「DRAMの読み取り処理」には必ず「セルの再充電処理」がセットになっており、リフレッシュとは「コンデンサの電荷が抜けきる前に定期的に空読み処理を行う」ものなわけです。
というわけで、そもそも「定期的に全セルに読みとり処理が行われる」ことが保証されているのであれば、リフレッシュは不要になるわけです。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あつくて寝られない時はhackしろ! 386BSD(98)はそうやってつくられましたよ? -- あるハッカー
DRAMのリフレッシュ (スコア:0)
Re:DRAMのリフレッシュ (スコア:2)
そういや、90年代前半にDRAMのタイミング系を自作してたときに、1秒以上アクセスもリフレッシュしなくても記憶が残っていて驚いた。
Re:DRAMのリフレッシュ (スコア:2, 参考になる)
だそうです。
Re: (スコア:0)
32bit Windowsで余ったメモリをRAMディスクにするのが流行ったとき、RAMディスクにウォームスタート機能を付ける実験をしてみたことがあります。
大部分の内容は残っているのですが、ところどころ壊れているという状態なんでRAMディスクとしてはちょっと使い物になりませんでした。誤差を許容するような用途ならなにか使いみちがあるかもしれません。
Re: (スコア:0)
TEGでセル単体のテストをすれば、もっと良いホールド特性が得られることもある
Re: (スコア:0)
Re:DRAMのリフレッシュ (スコア:2)
リフレッシュが要らないのはアクセスした行だけ、基本的に破壊読み込みですぐに修復するから記憶が新しくなったんだったと思う。
Re:DRAMのリフレッシュ (スコア:1)
Re:DRAMのリフレッシュ (スコア:4, 参考になる)
「DRAMのリフレッシュって何をしてるの?」って人のためにもうちょっと解説しておくと、
DRAMは、コンデンサに電荷を貯めることで情報を記憶している分けですが、コンデンサに溜まった電荷は漏れ電流などによって徐々に抜けていきます。
そのため、定期的に充電しないと記憶内容が消えてしまいます。そういう「再充電処理」がリフレッシュ。
ところで、このDRAMでデータを記憶するコンデンサの「セル」の大きさは非常に微小であり、そのセルに至るまでの配線の方が長いので、
セルよりも、配線の寄生容量の方が、桁違いに静電容量が大きいです。
そのため、DRAMの読み出しでは、
セルに電荷が貯まっている時→セルに溜まった電荷が配線に流れ、セルは放電、配線容量というコンデンサは若干充電する形になり、ほんのちょっぴり配線の電圧が上がる
セルに電荷が貯まっていない時→配線容量に溜まった電荷がセルに流れ、セルは充電、配線容量というコンデンサは若干放電する形になり、ほんのちょっぴり配線の電圧が下がる
といった電気の流れになり、この「配線の電圧がほんのチョッピリ上がるか下がるか」を検出して1/0を出力します。
このとき、セルの電圧はほぼ配線の電圧になるまで充放電されてしまいますから、読み出し処理によって記憶内容は失われてしまいます。
そのため、DRAMでは、読み出し処理後には、読みとったデータを元に1行まるごと再度書き込み(セルの充放電)処理を行うようになっています。
このように、「DRAMの読み取り処理」には必ず「セルの再充電処理」がセットになっており、
リフレッシュとは「コンデンサの電荷が抜けきる前に定期的に空読み処理を行う」ものなわけです。
というわけで、そもそも「定期的に全セルに読みとり処理が行われる」ことが保証されているのであれば、リフレッシュは不要になるわけです。