目錄:
- 內存的物理構造(與或非門)
- CPU 訪問內存的過程
- DRAM 和 SRAM
- 內存中的數據結構
- 虛擬內存(地址轉換,TLB)
- 內存保護(可執行空間,地址空間佈局隨機化)
- 擴展 DRAM(DDRAM)
===========================================
- 內存的物理構造(與或非門)
先來看一下能存一個字節(1)的邏輯門電路:
當B爲 1 時,無論 A的輸入是啥,輸出都是1。這也就意味着這個異或邏輯門電路能存一個字節爲 1 的數據。
在來看一個能存 0 的邏輯門電路:
同樣的當B=0 時,無論 A 輸入是啥,此時的 out = 0 的。
我們都知道計算機處理的數據是二進制的也即0和1,所以我們將 AND 和 OR 邏輯門電路組成起來,就可存二進制的數據了。
組合起來的邏輯門電路如下:
SET 端就是用來數據輸入的,而 RESET 顧名思義就是復位用的。我們將這個邏輯門電路裝在一個黑箱子後:
我們將8個門鎖組合在一起就能構造一個寄存器(D觸發器)。
PS:D觸發器的原理
這樣感覺是不是這很抽象? 那我們舉個栗子:
那麼你會問內存跟寄存器又有啥關係? 怎麼感覺一點關係都沒有呢?
你可以這樣理解,我們將許多的寄存器(10億夠不夠?)組成矩陣。這樣多個矩陣就能組成內存了。這裏我將內存條放大,有個感性的認識。
有沒有看到放大最後的那張照片,裏面就是組成的矩陣。哈哈,現在是不是有點理解了?
2.CPU 訪問內存的過程
(1) BUS Request
申請地址總線的控制權,將訪問的地址發送給 MMU (內存控制器/內存管理單元) 。 MMU 將地址分解成 row 和 column 地址。
(2) [ Precharge ] and Row Access
即預充電 (後面說) 和行訪問,MMU 通過 BUS 將 row 發送給 Row Decoder 使其激活要訪問的那一行。
(3)Column Access
列訪問,MMU 通過 BUS 將 column 發送給 Column Decoder 使其激活要訪問的那一列。將(row,column)所指向的那一行數據 通過 Sens Amplifiers(讀出放大器)read 到 Data in/out Buffer 中。
(4) Bus Transmission
總線傳輸(row,column)所代表的數據。
這裏爲啥要把那一行都 read 到 buffer 中呢? 還不是爲了提高訪問速度,如果 cpu 下次訪問的數據還在那一行則直接從緩存中讀取出來。 那如果不是呢?
則將讀取出來那一行的狀態使其失效即可。 — Precharge (預充電)
小結:
其實從硬件在到邏輯角度理解內存就發現 哦? 原來內存內部構造是這樣的呀。