動態存儲內存是如何設計出來的

工业奇迹档案
6 位粉絲
2026年8月27日
AI 生成·可能包含錯誤
視頻概述
AI 生成這段影片詳細解析了電腦內存(RAM)的底層工作原理,從最基本的存儲單元構造,到如何透過矩陣排列、解碼器、感應放大器以及複用器來實現數據的讀取與寫入,並解釋了動態內存需要週期性刷新的原因。
這是將內存放大到100萬倍後的樣子
它的內部有上百億個存儲單元
存儲單元分爲晶體管和電容器兩部分
這是一個電容器
電容器連接電源後
可以爲電容器充電
充滿電的電容器
可以當作電池使用
爲其他電器供電
只不過持續的時間非常短
這是一個MOS晶體管
它由山脊、圓脊以及漏脊組成
通過向山脊施加一個小電壓
電流就能從圓脊流向漏脊
在某些情況下
也可以從漏脊流向圓脊
我們可以將電容器與MOS晶體管相連接
就組合成了一個存儲單元
當山脊施加電壓時
晶體管就能爲電容器充電
充滿電後
往山脊施加電壓
電流就會從漏脊流向圓脊
從而導致電容器放電
然後我們就可以這樣定義
電容器沒有電就定義爲0
電容器有電就定義爲1
內存中的存儲單元並不是線性排列的
而是這種矩陣排列
我們可以使用單根導線
將每列晶體管的圓脊連接起來
稱爲位線
再使用單根導線
將每排晶體管的山脊連接起來
稱爲自線
我們可以分別激活一根位線和一根自線
然後通過兩根線的相交
來定位任何一個存儲單元
爲了激活自線
我們需要用到一個稱爲二進制解碼器的組件
解碼器可以根據不同的輸入
激活不同的輸出線
比如輸入00
會激活第一根輸出線
輸入01
會激活第二根輸出線
以此類推
激活位線也一樣
在底部再添加一個解碼器
這樣只需要改變二進制值
通過自線和位線相交
就能找到具體的存儲單元了
但是實際問題更加複雜
因爲激活自線時
還沒來得及選擇位線
這一排的存儲單元就輸出了
並且輸出時
會導致電容器放電
使得原本存儲1的單元變成了0
爲了解決這個問題
我們先這樣
將電容器的電壓充電到1V
代表二進制1
電壓放電爲0V
代表0
同時將位線也預充電到0.5V
對於這兩個充滿電的電容器
電壓大於位線的0.5V
所以電容器會輕微放電
電荷來到位線
導致位線的電壓增加
而對於沒有充電的電容器
電容器的電壓小於位線電壓0.5V
位線電壓會流向電容器
導致位線的電壓減小
然後這些電壓值的變化
會被位線連接的感應放大器檢測到
如果位線的電壓大於0.5V
就讀取爲1
如果位線的電壓小於0.5V
就讀取爲0
感應放大器內部有一個所存器
可以將讀取的數據存儲在裏面
即使是電容器放電了
依舊可以從所存器讀取到數據
但是我們需要讀取的是
某個單元的特定值
所以還需要添加一個新組件
用什麼組件好呢
現在我們在下面加一個多路複用器
多路複用器可以根據地址值
來確定將哪個數據輸出
它內部由解碼器和門電路組合而成
我們先不要關心它內部的時限
繼續回到電路
當向複用器輸入11時
會激活第一根輸出線
所以最終得到結果爲1
從而獲取到特定單元的值
但是有個問題需要考慮
在讀取數據時
電容器會充電或者放電
我們需要將它們的電壓
恢復到原有的狀態
解決方法很簡單
重新讀取感應放大器內部的值
然後發回位線
從而將電容器電壓恢復到跟之前一樣
這些說的都是讀取數據
那寫入數據又是如何操作的呢
前面說到的多路複用器
是用於讀取的
爲了寫入
我們還需要一個剛好相反的多路複用器
它可以接收單個數據
然後根據地址值
來確定將寫入數據發送到哪個輸出
然後將讀取和寫入複用器合在一起
就組成了一個新的複用器
它可以在讀和寫之間切換
現在我們看一下如何寫入數據
首先需要將所有位線充電至0.5V
然後根據地址值
激活所在單元的字線
跟前面一樣
這會導致電容器充電或者放電
然後感應放大器會檢測這些值
並存入所存器
這跟讀取是一樣的
寫入與讀取不同的在於
複用器會根據地址值
選擇一個感應放大器
然後根據寫入值1
將選中的感應放大器的值修改爲1
然後通過位線將所有值
發回存儲單元
存儲單元接着就會根據返回值
對選中的字線上所有的電容器
進行充電和放電
之所以寫入新值時
還重寫同一行中的其他值
主要是爲了防止數據丟失
寫入0也是一樣
位線充電至0.5V
之後電壓會發生變化
根據電壓值
感應放大器會向所存器存入相應數據
然後根據地址值
選中感應放大器
然後將值改爲0
之後發回位線
電容器就會進行放電
從而寫入0
但是存儲單元還有一個問題
那就是刪機即使沒有打開
那麼依舊會有少量的電荷
從漏集流向原集
從而導致電容器放電
雖然這個過程很慢
但是時間一長
就會發生數據丟失
解決方案就是對存儲單元
進行週期性的自動刷新
刷新會根據原有的數據
對電容器進行充電和放電
但是刷新週期內
刷新的存儲單元
會阻止外部的訪問
從而會產生一定的延遲
需要注意的是
前面講到所有東西只是基本原理
實際的內存要複雜很多倍
