天天看點

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

目錄:

一、計算機記憶體

二、1位存儲器

三、鎖存器

四、門鎖

五、8位鎖存器

六、門鎖矩陣

七、多路複用器

八、256位寄存器

九、尋址位址

十、随機存儲器

一、計算機記憶體

上節中介紹的ALU進行計算後得到的結果需要

對其進行存儲

,可能

還要進行多個連續操作

,這就需要用到

計算機記憶體

了。

随機存取存儲器(Random Access Memory, RAM)

,其隻能在

有電的情況下存儲東西

另一種存儲稱為

持久存儲(Persistent Memory)

,電源

關閉時資料也不會丢失

,它用來存其他東西。

二、1位存儲器

這一節中

首先建構

能夠

存儲1位的存儲器

,然後

對其擴充來得到記憶體子產品

之前建構的都是

單向電路

,我們同樣可以

建構回向電路

,把

輸出連回輸入

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

存儲1的電路

當将

OR門建構成回向電路

時,可以分析其電路特性

  1. A和B初始為0時,輸出結果為0
  2. 将A修改為1時,輸出結果為1,此時B的輸入就變為了1。随後 輸出始終保持為1 不論A如何變化

是以這個電路能夠

永久記錄1

,并且

無法将1變回0

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

存儲0的電路

同理可以分析下AND門建構成回向電路時的特點

  1. A和B初始化為1,則輸出結果為1
  2. 将A修改為0時,輸出結果為0,此時B的輸入就變成了0。随後輸入始終保持為0, 無論A如何變化。

是以這個電路能夠

永久記錄0

,并且

無法将0變回1

三、鎖存器

是以我們就得到了能夠

存儲1和0的電路

,為了

得到有用的Memory

,需要将兩個電路結合起來,可以得到

AND-OR鎖存器(AND-OR Latch)

上方的是

SET輸入

,下方的是

RESET輸入

當SET=1、RESET=0,就能将

輸出設定為1

當RESET=1,就能将

輸出設定為0

當SET=0、RESET=0,則輸出

最後放入的内容(也就是說,它存住了1位的資訊)

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

AND-OR 鎖存器

技巧: 當OR門其中一個輸入為0,或AND門其中一個輸入為1,則相當于另一個輸入 直接穿過這個門

當OR門其中一個輸入為1,則

直接輸出

1;

當AND門其中一個門為0,則

直接輸出 0。

這叫"鎖存",因為它

"鎖定"了一個值

放入資料

的動作叫

"寫入"

拿出資料

的動作叫

"讀取"

四、門鎖

兩條線

SET和RESET來

輸入線來控制,

有點難了解,為了更容易用,

我們希望隻有一條輸入線。 是以将兩條線

SET和RESET變為

允許寫入線

資料輸入線

,變為僅僅

一條線來控制(另一條線為輸入資料),

是以需要

添加其他門控單元

,可以得到一個

門鎖(GATE LATCH)
96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

門鎖

通過門鎖,

将值鎖起來。

門鎖關閉,鎖定原有值,輸出值不再發生變化(當資料輸入變化時)。

門鎖打開,輸入寫入到輸出。

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

是當WRITE ENABLE=1時,電路可以

化簡為以下形式:

① 當資料輸入為0時,AND門可以忽略OR門的輸出,直接輸出0,并且

OR門上方電極也将儲存0。

② 當資料輸入為1時,相當于忽略了AND門,OR門的輸出直接和OUTPUT相連,OR門輸出1,并且

OR門上方電極也将儲存1。

③ 是以,

當WRITE ENABLE=1時,資料輸入會直接傳到輸出(

當WRITE ENABLE=1時,

輸入改變,輸出就改變),而且資料輸入會儲存在OR門的上方電極,進行資料存儲。

這裡的

OR門上方電極就是表示存儲

的意思,斷電、掉電情況,它也

顯示這個資料信号

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

當WRITE ENABLE=0時,電路可化簡為

以下形式

① 此時能夠忽略AND門,直接将OR門的輸出當做OUTPUT。

② 而OR門的輸出其實就是上方電極的資料,由于上方電極就是目前OUTPUT的資料,是以會保持OUTPUT不變。

③ 是以,

當WRITE ENABLE=0時,會忽略資料輸入,保持OUTPUT不變(

當WRITE ENABLE=0時,OUTPUT原來是啥就是啥,無論DATA INPUT如何改變

)。
96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

可以将門鎖進行抽象,得到一個能夠

存儲一個bit的部件

當允許

寫入線為0時

,輸

出保持不變。

當允許寫入線為1時,輸出就是資料輸入,并且能夠

将資料輸入進行存儲

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

門鎖的抽象

五、8位鎖存器

如果我們

并排8個鎖存器

,就能

存儲8位資訊

。一組這樣的鎖存器稱為

寄存器(Register)

寄存器能夠

存一個數字

,這個

數字的位數

稱為寄存器的

位寬(Width)

寫入寄存器之前,要先

啟動裡面所有的鎖存器

,可以将所有鎖存器的允許寫入線

都連接配接在一起,把它設為1

,然後用8條資料線

發送資料

,然後将允許寫入線

設回0

,就能将8位資料

存儲在寄存器中

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

六、門鎖矩陣

如果隻有

很少的位(bits)

,把鎖存器并排放置,也

勉強夠用了

64位寄存器要

64根資料線

64根連到輸出端

。幸運的是,我們隻要1根線

啟用所有的寄存器

,但加起來也有

129條線

了。

256位寄存器需要513條線。

可以通過

矩陣形式排列來進行化簡

。在矩陣中,我們

不并列排放鎖存器

,而是做成表格,存256位,我們用16×16(=256)網格的鎖存器,有16行16列,要

啟用某個鎖存器

,就

打開相應的行線和列線。
96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

門鎖矩陣

打開交叉處,局部更大

的細節如下圖所示:

鎖存器的“允許寫入線”,其他鎖存器保持關閉,我們

用AND門

首先,隻有

當行列都為1時

,AND門才輸出1,是以可以

使用單個鎖存器

這種行/列排列法,用一根“允許寫入線(WRITE ENABLE)”連所有鎖存器。為了讓鎖存器變成“允許寫入”,行線、列線和“允許寫入線”都必須是1。每次隻有1個鎖存器會這樣,代表我們可以隻用一根“資料線”連所有鎖存器來傳資料。其他鎖存器會忽略資料線上的值,因為沒有“允許寫入”。

設定WRITE ENABLE和READ ENABLE才有用,否則這兩條線的經過AND門的

輸出始終為0

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

門鎖矩陣局部細節

當WRITE ENABLE=1時,輸入資料就會

儲存在門鎖

中。

當READ ENABLE=1時,就會連通半導體,将

存儲在門鎖中的資料輸出

這裡添加了一個READ ENABLE線

來控制讀取

,同時将

輸入輸入和資料輸出線合并

,從3條線減少為2條。

并且由于

每次能夠控制唯一一個鎖存器

,是以所有的資料線可以合并成一條。也就是說,對于256位存儲,隻需要一條資料線,一條允許寫入線,一條允許讀取線和16行16列的線用來選擇鎖存器,一共35條線。

由于16x16門鎖矩陣

最多16行16列

,是以可以分别用

4位表示行和列的位址

,就能用一共

8位來定位一個鎖存器

,比如“

12行8列

”可以表示為

11001000

七、多路複用器

為了将

位址轉換

“行和列”

,需要

多路複用器(Multiplexer)

,多路複用器可以

有不同的大小。

當輸入一個4位數字,它就會将

那根線連接配接到對應的輸出線:

比如對列位址輸入0000,它就會選擇第一條線,

輸入0001,就會選擇第二條線……

一個多路複用器處理行

一個多路複用器處理列

,由此通過輸入

行和列的坐标

就能定位到

對應的鎖存器

了。

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

多路複用器

八、256位寄存器

可以對

256位寄存器

進行封裝,它的

輸入是一個8位位址

4位表示行,4位表示列,

同時需要允許寫入線和允許讀取線,

然後需要一條資料線用于讀寫資料。

注意:每次隻能選擇一個鎖存器,是以資料線隻能讀寫1bit資料

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

256位記憶體

對其再進步一擴充,可以将8個256位記憶體拼在一起,這樣就

能一次讀寫8bit資料

,也就是

一個位元組資料

由于每個256位記憶體都使用

相同的8位資料線

,是以8位資料會存在每個256位記憶體的相同位址中,并且第一個256位記憶體存放第一位,第二個256位記憶體存放第二位,以此類推。

這個子產品可以

在256個位址中存儲256個位元組

(由于這種設計,是以計算機中以一個位元組為尋址的最小機關)
96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

可以

對其進行抽象

,看成一個整體的

可尋址記憶體

,其中有256個位址,

每個位址

能讀寫

一個位元組的值

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

RAM

九、尋址位址

現代計算機可以在此基礎上将

記憶體擴充到MB和GB級别

我們這裡使用

8個16x16門鎖矩陣

可以得到

256位元組的記憶體

,然後可以用

4位表示行4位表示列來進行尋址

由此可以将門鎖矩陣

擴充到更大範圍

,但是需要

更多位來表示位址

。是以對于nxn門鎖矩陣,存儲空間為

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

位元組,需要的尋址空間為

96KB存儲器的怎麼算位址範圍_36 計算機科學速成課 06:計算機記憶體、鎖存器、門鎖矩陣、尋址位址、随機存儲器(KK)...

比如要給

千兆位元組

記憶體尋址

,就需要

32位的位址。

十、随機存儲器

記憶體的一個

重要特性

是:能夠

随時通路任何位置

。是以稱為

随機存取寄存器(Random Access Memory, RAM)

RAM隻記錄目前在做什麼

RAM中存儲的資料是 儲存在OR門其中一個電極上 ,是以斷電後就無法儲存。

這一節用鎖存器做了一塊

靜态随機存取存儲器(Static Random-Access Memory,SRAM)

,還有很多其他類型的RAM,比如DRAM、閃存和NVRAM,它們的功能和SRAM相似,但是使用不同的電路存放單個位。但是根本上,這些技術都是矩陣層層嵌套來存儲大量資訊。

幫忙點個贊,謝謝!
整理不易,給點鼓勵,謝謝!
更多的《計算機科學速成課》,關注專欄~
PS:請關注專欄,不要關注我!