1. 程式人生 > 實用技巧 >程式設計師的計算機修養-記憶體模型

程式設計師的計算機修養-記憶體模型

記憶體對於程式設計師而言可以說是非常重要,但很多人對其只知其名,不知道它的內部原理。

物理結構

看一下它的物理結構,大家肯定見過。

記憶體的內部是由各種IC電路組成的,主要分為3種

隨機儲存器(RAM):讀寫很快,斷電失去資料。

只讀儲存器(ROM):只能讀取,斷電資料不丟失。

快取記憶體(Cache):有3種,L1,L2,L3 Cache。它們位於CPU和記憶體之間,比記憶體的讀寫更快。

記憶體IC引腳配置
圖中VCC和GND表示電源,A0 - A9是地址訊號的引腳,D0 - D7表示的是控制訊號、RD和WR都 是好控制訊號,我用不同的顏色進行了區分。
將電源連線到VCC和GND後,就可以對其他引腳傳遞 0和1的訊號,大多數情況下,+5V表示1, 0V表示0。 我們都知道記憶體是用來儲存資料,那麼這個記憶體IC中能儲存多少資料呢?
D0
- D7表示的是資料信 號,也就是說,一次可以輸入輸出8 bit = 1 byte的資料。A0 - A9是地址訊號共十個,表示可以指定 00000 00000 - 11111 11111共2的10次方=1024個地址。
每個地址都會存放1 byte的資料,因 此我們可以得出記憶體IC的容量就是1 KB。 如果我們使用的是512 MB的記憶體,這就相當於是512000(
512 * 1000)個記憶體IC。當然,一臺計 算機不太可能有這麼多個記憶體IC,然而,通常情況下,一個記憶體IC會有更多的引腳,也就能儲存更多資料。

來詳細描述一下這個過程,假設我們要向記憶體IC中寫入Ibyte的資料的話,它的過程是這樣的:
・    首先給VCC接通
+5V的電源,給GND接通0V的電源,使用A0 - A9來指定資料的儲存場 所,然後再把資料的值輸入給D0 - D7的資料訊號,並把WR (write)的值置為1,執行完這些操作後,即可以向記憶體IC寫入資料 ・ 讀出資料時,只需要通過A0 - A9的地址訊號指定資料的儲存場所,然後再將RD的值置為1即 可。 ・ 圖中的RD和WR又被稱為控制訊號。其中當WR和RD都為0時,無法進行寫入和讀取操作。

現實模型

為了便於記憶,我們把記憶體模型對映成為我們現實世界的模型,在現實世界中,記憶體的模型很想我們生活的樓房。在這個樓房中,1層可以儲存一個位元組的資料,樓層號就是地址,下面是記憶體和樓層整合的模型圖。

下面看一個實際例子的記憶體模型

    //定義變數
    char a;
    short b;
    long c;
    
    //變數賦值
    a = 123;
    b = 123;
    c = 123;