1. 程式人生 > 其它 >計算機組成原理複試

計算機組成原理複試

一些可能會用到的知識

第三部分:儲存系統

 

1,儲存器是層次結構的思想:

使上一層較快的儲存器作為底一層儲存器的快取記憶體,解決了速度,容量,成本三者之間的矛盾

從上到下為暫存器、Cache、主存、外存

速度越來越慢,容量越來越大,成本越來越低

2,半導體儲存器:

ROMread- only Memory):只讀儲存器,非易失性儲存器,寫入程式後不能更改,只能讀取,用來儲存不變的常數和程式

包括U盤,SD卡,固態硬碟都是Rom派生出的儲存器,他們寫的速度要比讀的速度慢的多

RAMRandom- Access Memory隨機訪問儲存器:是指可以直接按照地址隨機存取,易失性儲存器,分為DRAM和SRAM,

SRAM的儲存元為雙穩態觸發器,整合度低,速度快,通常用來做Cache的材料

DRAM的儲存元是柵極電容,是動態隨機訪問儲存器,需要重新整理來保持資料不變,採用地址複用技術,可以減少地址線,整合度高,價格低,通常作為記憶體的材料。

DRAM的三種重新整理方式(以行為單位)

集中重新整理,分散重新整理,非同步重新整理

序列訪問儲存器:對儲存單元的讀寫要按照物理位置的先後順序定址。它包括順序存取儲存器和直接存取儲存器。前者的代表是磁帶,後者的代表是磁碟。

3,記憶體最大容量:

2mar的位數✖️儲存字長(MDR的長度)

4,時間區域性性和空間區域性性

時間區域性性:是指當前訪問的儲存單元在不久之後可能還會用到(例如迴圈結構)

空間區域性性:是指與當前訪問的儲存單元臨近的儲存單元在接下來很可能會被訪問(如陣列這種資料結構)

5,主存與CPU的連線:

分為字擴充套件和位擴充套件(或字位同時擴充套件)

字擴充套件時:資料線的連線方式相同,將CPU的高位地址經過譯碼器來充當晶片的片選

位擴充套件時:地址線完全相同,CPU通過同一個地址能夠同時訪問同一組晶片的對應相同的儲存單元。

6,雙埠RAM

每一個埠有自己獨立的地址線,控制線和資料線,可以提高CPU訪問儲存器的速度

7,多模組儲存器:

每一個模組具有自己獨立的MAR和MDR,分為高位交叉編址和地位交叉編址,顧名思義:

高位交叉編址的高位作為模組號,低位作為模組內部地址

地位交叉編址低位作為模組號,高位作為內部地址,能夠實現流水存取。(因為讀取儲存器之後,儲存器需要一段時間來恢復,所以存取週期要比存取時間大的多,在這段恢復的時間中,如果為高位交叉編址,因為讀取的下一條指令或者資料很可能與他處於同一個模組中,所以要等待到儲存器完全恢復才能夠進行下一次存取)但如果是低位交叉編址,連續的資料或者程式被放在不同的模組中,這樣在第一個儲存器的恢復時間裡CPU可以直接讀取下一個模組的資料。如何實現流水?設儲存週期為T,存取時間為r,如果模組號N=T/r,即可實現流水存取。

8,高速緩衝儲存器Cache

1)為什麼要有cache? 

因為要緩和CPU與記憶體之間的速度矛盾,引入了Cache,將當前CPU經常用到的資料放入cache中,之後獲得實體地址之後會先檢視cache中是否有,再檢視記憶體,如果cache命中,就讀取cache儲存單元的內容,如果不命中,再去記憶體中尋找,並將資料所在的整個資料塊都存入cache行中(這裡運用了局部性原理)以減少訪存的時間。

2)cache與主存地址的對映關係

如何對映?即如何決定物理塊存入哪一行cache,並且CPU如何用實體地址對cache進行查詢?

將主存和cache劃分為大小一樣的儲存塊,cache中稱做cache行,主存中稱做主存塊。

直接對映:將主存塊號對cache行號進行模運算取餘數,將該主存塊存入以餘數為序號對應唯一的cache行;此時cache的記憶體標記最小。

全相聯:將記憶體塊存入任意一行cache(替換演算法對cache的所有行都有效);記憶體地址除了塊內地址外都作為記憶體tag(標記)存入cache中

組相聯:將cache行分為幾個組,再存入記憶體塊時,用記憶體塊號N對組的數量M進行模運算取餘數,將記憶體塊存入對應的組的任意一行中,並將記憶體地址中粗了塊內地址和組號之外的部分作為記憶體tag存入記憶體中。

3)cache的替換演算法:

RAND、FIFO、LRU(記錄未被訪問次數)、LFU(記錄訪問次數)

後兩種:如果參與替換演算法的cache演算法有行2n行那麼需要n位作為替換演算法的計數器

4)cache中需要儲存的內容

cache資料+有效位+[換演算法位]+[髒位]

5)cache的寫策略:

命中時:

1⃣️寫回法:只更改cache中的資料,在該cache被替換時再寫回記憶體

2⃣️全寫法:cache和記憶體同時改(需要寫緩衝:緩和CPU與記憶體的速度矛盾)

寫不命中時:

1⃣️寫分配法:調該塊入cache,更改cache

2⃣️非寫分配法:只寫入主存,不調入cache

總結:寫回法和寫分配法搭配使用,並且一般用於cache與記憶體之間;全寫法和非寫分派法搭配,用於各級cache之間。