計組那些容易搞混的東西

瓜瓜头發表於2024-09-17

訪存

機器字長 = 機器位數:是CPU一次處理的位數

  • (64位機器,機器字長為64位,1字=64位=8位元組)

儲存字長 = 資料匯流排根數(MDR) :一次訪存取出一個儲存字長的資料,所以可能需要多次訪存才能進行一次操作

  • (主存為64K×16位,儲存字長為16位,2位元組)
    儲存字長不等於機器字長,但有些題並未分別清楚給出時預設相等

低體交叉編址和字位擴充套件

低體交叉編址分為輪流(流水線)和同時執行
判斷輪流還是同時需要看儲存字長(資料匯流排寬度)

輪流執行:

此時儲存字長 = 1個體的位數

  • 可以理解為多個記憶體條先後依次執行,每次讀出還是1個記憶體的位數

同時執行:

儲存字長 = n個體的位數

  • 並行,理解為n個記憶體條同時讀出,每次讀出n個記憶體的位數
  • 如下的題幹中便為並行執行的方式
    【2017 統考真題】某計算機主存按位元組編址,由4個64Mx8 位的 DRAM 晶片採用交叉編址方式構成,並與寬度為 32 位的儲存器匯流排相連
  • 【2022.17】某記憶體條包含8個8192x8192*8位的DRAM 晶片,按位元組編址,支援突發(bust)傳送方式,對應儲存器匯流排寬度為64位,每個DRAM晶片內有一個行緩衝區,下列關於該記憶體條的敘述中,不正確的是(C)。(注意DRAM使用地址複用技術)
    A.記憶體條的容量為512MB
    B.採用多模組交叉編址方式 此處就是同時執行的情況
    C.晶片的地址引腳為26位
    D.晶片內行緩衝有8192x8位

而字位擴充套件可以穿插在交叉編址中

  • 比如系統要求32K×16b的儲存器,透過兩個16K×8b的DRAM先擴充套件為32K×8b,再將兩個32K×8b的體進行交叉編址(此情況為同時執行)
  • 也可以系統要求16K×16b的儲存器,透過兩個16K×8b的DRAM先擴充套件為16K×16b,再將兩個16K×16b的體進行交叉編址(此情況為輪流執行)

編址,定址

位元組進行編址,可以按或者位元組進行定址
編址則只能按字進行定址

  • cpu有20根地址線和32根資料線,按位元組編址,按位元組和字定址,定址範圍分別是多少?
    (注意此處預設了機器位數 = 儲存字長 = 32位)
    按位元組定址,定址範圍:220=1MB
    按字定址,32根資料線可以看做儲存字長有32位,4個位元組,這4個位元組的區分,需要從20根地址線拿出兩根作為字內定址,這樣剩下18根資料線來定址,定址範圍:218(0~218-1)
  • 設有一個1MB容量的儲存器,字長32位,問:按位元組編址,字編址的定址範圍以及各自的定址範圍大小?
    如果按位元組編址,則
    1MB =220B
    220B/1B=220
    地址範圍為0~220-1,也就是說需要二十根地址線,定址範圍大小為2^20=1M
    如果按編址,則
    1字=32bit=4B
    220B/4B=218
    地址範圍為0~218-1,也就是說我們至少要用18根地址線,因此按字編址的定址範圍是218

頁-主存-Cache

邏輯地址

透過邏輯頁號找到該頁對應的頁框號(物理頁號),以它為前n位,在後面n位後加上頁內地址即為主存地址

邏輯頁號(12) 頁內地址(11)

頁面大小4KB=212,邏輯頁號(虛頁號)=12位
邏輯(虛擬)地址空間8MB=223,則頁內地址為11位

主存地址

物理頁號(3) 頁內地址(11)
主存塊號(6) 塊內地址(8)
標記+行號(組號)

主存地址空間為16KB=214,物理頁號為14-11=3位
主存塊內地址 = Cache行長 = 28

Cache

行長(8)

cache行長只代表塊內地址位數,標記等資訊不參與計算
注意容量和總容量,容量=行長×塊數,總容量行長還要加上標記等

髒位 有效位 標記 行長(8)

N組相聯 LRU髒位數n: 2n=N

相關文章