1. 程式人生 > 其它 >【計算機組成原理】:儲存系統學習

【計算機組成原理】:儲存系統學習

一、程式的執行

馮諾依曼機的執行大致可分為兩個步驟,儲存程式和程式控制。具體而言,可分為以下步驟:

(1)輸入裝置將程式與資料寫入記憶體;

(2)CPU取指令;

(3)CPU執行指令期間讀資料;

(4)CPU寫回運算結果;

(5)輸出裝置輸出結果。

二、儲存系統層次結構

由於CPU和主存的執行速度相差較大,程式執行的速度就會受制於記憶體的速度。於是,儲存系統引入了快取記憶體(Cache)。Cache的引入使得CPU訪問到的儲存系統具有Cache的速度,賦存的容量和價格。

同時,Cache又可以劃分為L1 Cache和L2 Cache。其中L1 Cache整合在CPU中,分資料分資料Cache(D-Cache)和指令Cache(I-Cache)。早期L2 Cache在主機板上或與CPU整合在同一電路板上。隨著工藝的提高L2 Cache被整合在CPU核心中,不分D-Cache和I-Cache。

三、主存中的資料

資料存放在記憶體中,分為按邊界存放和未按邊界存放。

(1)按邊界存放

按邊界存放的方式,在32位系統中,儲存單元為4個位元組。int佔4個位元組,short佔兩個位元組,double佔8個位元組,char佔1個位元組。會產生空間空餘。

(2)未按邊界存放

未按邊界存放充分利用了空間,但是增加了記憶體的訪問次數。如double型別的x,佔了三個儲存單元,需要訪問三次。因此,這種方式雖然節省了空間,但增加了訪問記憶體的次數。

四、主存中的資料組織

知道了資料在記憶體中的存放方式,具體到程式碼層面有什麼影響呢?

如下兩種結構體的寫法:

struct S1{
    int
i; char c; int j } struct S2{ int i; int j char c; }

在邊界對齊的情況下,這些資料在記憶體中的儲存如下圖所示。可以看到S1的結構體寫法佔了12個位元組,S2的結構體佔了9個位元組。但就一個結構體的資料而言,程式碼的寫法確實可以節省空間。