計算機最基礎的部分:存儲邏輯電路

今天咱們來實現一個最簡單內存。設計

因爲在計算機中除了邏輯電路以外沒有別的東西,咱們要存儲也須要用邏輯電路來實現,接下來咱們先去實現一個簡單的寄存器。3d

寄存器

寄存器又分爲兩種一種只能存 1 ,一種只能存 0cdn

能存 1

image

能存 0

image

能存 1 和 0 的邏輯電路有了,咱們就能夠存儲所有狀態了,咱們發現寄存器只能可以存一種狀態而且沒法清除保存的狀態。blog

鎖存器

image

此次好了,設置端通電 1 就存起來了,想存 0 就給恢復端通電,這樣咱們就簡單實現了一個能存儲一個 bit 的電路。可是咱們還會發現一個問題就是存 一、0 的狀態須要兩個線分別去處理,這樣就會有不少不便。咱們繼續往下看來解決這個問題。內存

門鎖

image

門鎖符號

image

這樣一來咱們就能夠用一根線控制鎖存器的狀態,而且添加了容許寫入的線來控制切入權限。這樣一來存一個 bit 的電路咱們就完成了。下面咱們來組合一下。it

8位寄存器

image

這個電路就是咱們使用 8 個門鎖組合成的存儲單位,這樣咱們就能夠存儲一個字節(Byte)了,可是咱們還會發現一些問題就是,若是內存這樣設計的話,是否是要浪費不少線材,你能夠簡單計算一下,這樣一個簡單的寄存器須要使用多少線材。io

門鎖矩陣

image

看到這個比較懵逼的圖了沒有,咱們使用矩陣的方式來組合門鎖,這個地方我省略的一些格子,理論上應該是 16 *16 也就是存儲 256 bit 的一個矩陣,這樣一來咱們會節省不少線材。咱們接下來看看每一個格子裏都是什麼?class

說句題外話這個地方爲何咱們選擇是 16 * 16 的矩陣來說解?基礎

  1. 咱們只講簡單的實現原理
  2. 咱們使用 8bit 的數據來表示 X、Y 的座標,那麼 X、Y 最大值就是 11111111,X:1111 Y:1111 換算成 10進制 就是 X:15 Y:15,從 0 - 15 也就是 16 個。

放大單個格子

image

咱們來分析一下這個電路的優劣勢?原理

優點

  1. 咱們只須要把全部格子的 輸入/輸出線,容許讀取線,容許寫入線 都連起來、這樣只須要給相應的位置就能作到對不一樣格子的讀取或寫入了。
  2. 咱們給相應的 X、Y 軸通電,而後給容許寫入線通電,在 輸入/輸出 端口傳入相應的狀態,就會存起來
  3. 咱們給相應的 X、Y 軸通電,而後給容許讀取線通電,在 輸入/輸出 端口就會傳出相應的狀態
  4. 若是 X、Y 只有一個有電,那麼第一個 AND 門就已經斷開了,沒有辦法對格子讀取或寫入,正是有第一個 AND 門的存在會減小不少錯誤,這樣一來只有肯定座標才能進行訪問或讀取。

劣勢

  1. 不能多個位置同時讀寫了,否則就會位置亂掉

繼續看咱們怎麼規避掉的。

簡易內存塊

image

這個圖就是把咱們上面的門鎖矩陣進行封裝而成的內存塊。

內存

image

而後咱們再把 8 個內存塊組合起來,這樣咱們就能夠繼續存 1Byte 的數據了。

寫入數據

  1. 首先咱們給一個地址
  2. 給容許寫入端通電
  3. 在數據端口放入數據,這樣咱們就能夠在同一個地址,同時存入 8bit 的數據了。

讀取數據

  1. 首先咱們給一個地址
  2. 給容許讀取端通電
  3. 在數據端口就能獲得 8bit 的數據了。

到此咱們就完成了一個簡單的內存。

小結

看到這個你們心中有沒有解開一個疑惑。 爲何計算機的基礎單位是 1Byte(8bit)? 這是由於計算機的基礎硬件就是這麼設計的,這個標準被普遍應用後。出新的就會致使不兼容,而引起問題,若是要改變這是一個浩大的工程,1byte 爲最小單位也沒有什麼太大的弊端,因此就成爲計算機的標準而流傳下來。

相關文章
相關標籤/搜索