計算機組成原理存儲器實驗
① 計算機組成原理——虛擬存儲器
(1)程序員在比實際主存大得多的邏輯地址空間中編寫程序
(2)程序執行時,把當前需要的程序段和數據塊掉入主存,其他暫不使用的放在磁碟上
(3)執行指令時,通過硬體將邏輯地址轉化為物理地址。虛擬地址高位為虛頁號,低位為頁內偏移地址
(4)當程序發生數據訪問或程序訪問失效(缺頁時),由操作系統把信息從磁碟調入主存中
(1)基本思想:
內存被分成固定長度且長度較小的存儲塊(頁框,實頁,物理頁)
每個進程也被劃分為固定長度的程序塊(頁,虛頁,邏輯頁)
通過頁表,實現邏輯地址想物理地址的轉化
(2)邏輯地址
程序中指令所使用的地址(進程所在地址空間)
(3)物理地址
存放指令或數據的實際內存地址
(1)與「cache-主存」層次相比,頁大小遠比cache的行大小要大(windows中的頁位4k)
(2)採用全相聯映射方式:磁碟中的任意一個頁能用射到內存中的任意一個頁
因為缺頁導致中斷時,操作系統從磁碟拿數據通常要耗費幾百萬個時鍾周期。增大頁大小,可以減少缺頁中斷
(3)為什麼讓軟體處理「缺頁」
因為訪問磁碟需要好粉幾百萬個時鍾周期,硬體即使能立刻把地址打給磁碟,磁碟也不能立即響應
(4)為什麼地址轉換用硬體實現
硬體實現地址轉換可以加快指令的執行速度
(5)為什麼頁寫會策略採用write back
避免頻繁的慢速磁碟訪問
頁表的首地址放在基址寄存器。採用基址定址方式
每個頁表項前面有一個虛頁號:從0開始遞增的序號。頁表項又分為幾個結構:
(1)裝入位:該頁是否在內存中
(2)修改位:該也在內存中是否被修改
(3)替換控制位:用於clock演算法
(4)其他
(5)實頁號(8進制)
(1)一次磁碟引用需要訪問幾次主存?2次,一次查頁表,一次查物理地址。於是,把經常查的頁表放到cache中。這種在cache頁表項組成的頁表稱為TLB(Translation Lookside Buffer)
(2)TLB的頁表結構:tag + 主存中的頁表項
當採用全相連映射時,tag為頁表項前面的虛頁號。需要把tag和虛頁號一一比較
當採用組相聯映射時,tag被分為tag+index,虛頁號的高位為tag,虛頁號的低位為index,做組內索引(屬於組內第幾行)
1.段式存儲是根據程序邏輯,給程序分段。使得每段大小不同。這種虛擬地址劃分方法適合程序設計
2.段式存儲的虛擬地址由段號和段內偏移地址組成。段式虛擬存儲器到物理地址的映射通過段表實現
3.段式虛擬存儲會造成空頁
1.段頁式虛擬存儲,先把程序按照邏輯分成段,再把每段分成固定大小的頁。
2.程序對主存的調入調出是按照頁面進行的;但他有可以根據段實現共享和保護
3.缺點是段頁式虛擬地址轉換成物理地址需要查詢2個表:段表和頁表。段表找到相應頁表的位置,頁表找到想也頁的位置
4.段頁式細膩地址的結構可以為以下形式:
程序地址: 用戶號(進程pid) | 段號 | 頁號 | 頁內偏移地址
(1)某計算機的cache塊工16塊,採用二路組相聯映射方式,每個主存塊大小為32位元組,按照位元組編制。則主存129號單元的主存塊硬裝如刀cache的組號是:(C)A、0 B、2 C、4 D、6
解:二路組相聯,所以每組2塊,共有16/2=8組,所以組號佔3位。
每塊32位元組,所以塊內地址佔5位。
129轉化為二進制:1000 0001:前3位為組號,100:=4
(2)假設用若干個2K4位的晶元組成一個8K8位的存儲器,則地址0B1FH所在晶元的最小地址為:
解:用2片組成一行,共4行,所以片選地址佔2位。片內地址有2k=211,所以佔11位
0B1FH:000|0 1|011 0001 1111 這三段為前綴,片選地址,片內地址。
該片晶元的最小地址是片內地址全0:000|0 1|000 0000 0000 = 0800H
(3)某計算機的主存地址空間大小為256MB,按位元組編址,指令cache和數據cache分離,均有8個cache行,每行大小為64B,數據cache採用直接映射方式,現有兩個程序A,B對數組int a[256][256]進行遍歷,程序A按行遍歷,程序B按列遍歷。假定int類型數據用32位補碼表示,數組a按行優先方式存儲,其地址為320(十進制)。
問:(1) 若不考慮cache一致性維護和替換演算法所需的控制位,則數據cache的總容量佔多少?
(2) 數組元素a[0][31]和a[1][1]各自所在主存塊對應的cache行號分別為多少(cache從0行開始)?
(3)程序A和B的數據訪問命中率各自為多少?哪個程序的執行時間更短?
解:(1) 因為cache的總容量是cache每行的數據存儲大小+tag位+數據是否有效位+其他一致性控制位。
主存地址空間256MB,佔28位。直接映射方式,8行,行號佔3位。每行64B,所以塊內地址佔6位,因此,tag佔28-3-6=19位
每行有一個數據有效位。因此,cache共(19+1+648)8 = 532位元組
(2) 因為int類型佔32位,所以一個int佔4B。a[0][31] = 320 + 314 = 444 a1 = 320 + 4(256+1) = 1348。
塊內地址佔6位,直接映射下行號佔3位,因此444 = 110 | 111100,所以行號為6
1348 = 10 | 101 | 000100,所以行號為5
(3) 因為1行cache佔64B,每個int數佔4B,所以一行有16個數。第一個數會因cache缺失而不命中,然後調入cache。,使得後面的15個int訪問全部命中。所以命中率為1516 對於程序B,每次調入16個數,小於數組每行的128個元素,因此每次都不會命中,命中率為0
② 組成原理課程設計論文
組成原理課程設計論文
當代,論文常用來指進行各個學術領域的研究和描述學術研究成果的文章,簡稱之為論文。它既是探討問題進行學術研究的一種手段,又是描述學術研究成果進行學術交流的一種工具。它包括學年論文、畢業論文、學位論文、科技論文、成果論文等。接下來我為你帶來組成原理課程設計論文,希望對你有幫助。
篇一:計算機組成原理實驗報告
一、 實驗名稱:運算器實驗
二、 實驗目的:
1.學習數據處理部件的工作方式控制。 2. 學習機器語言程序的運行過程。
三、 實驗原理:
CP226實驗儀的運算器由一片CPLD實現,包括8種運算功能。運算時先將數據寫到寄存器A和寄存器W中,根據選擇的運算方式系統產生運算結果送到直通門D。
實驗箱上可以向DBUS送數據的寄存器有:直通門D、左移門L、右移門R、程序計數器PC、中斷向量寄存器IA、外部輸入寄存器IN和堆棧寄存器ST。它們由138解碼器的
四、 實驗內容:
1. 計算37H+56H後左移一位的值送OUT輸出。 2. 把36H取反同54H相與的值送人R1寄存器。
五、 實驗步驟:
實驗內容(一):
1. 關閉電源。用8位扁平線把J2和J1連接。
2. 用不同顏色的導線分別把K0和AEN、K1和WEN、K2和S0、K3和S1、K4和S2、
K6和X0、K7和X1、K8和X2、K9和OUT連接。 3. K15~K0全部放在1位,K23 ~K16放0位。
4. 注視儀器,打開電源,手不要遠離電源開關,隨時准備關閉電源,注意各數碼管、
發光管的穩定性,靜待10秒,確信儀器穩定、無焦糊味。 5. 設置實驗箱進入手動模式。
6. 設置K0=0,K8K7K6=000,K23 ~K16=0011 0111。 7. 按下STEP鍵,在A寄存器中存入37。 8. 設置K0=1,K1=0,K23 ~K16=0101 0110。 9. 按下STEP鍵,在W寄存器中存入56。
10. 設置K0=1,K1=1,K8K7K6=110,K4K3K2=000。 11. 按下STEP鍵,L寄存器顯示1A。 12. 設置K9=0,其他保持不變。
13. 按下STEP鍵,OUT寄存器顯示1A。 14. 關閉實驗箱電源。
實驗內容(二):
1. 基本與實驗內容(一)的前5個步驟相同(去掉連接OUT寄存器的導線)。 2. 連接K10和SA,K11和SB,K12和RWR。
3. 設置K0=0,K8K7K6=000,K23~K16=0011 0110。 4. 按下STEP鍵,A寄存器顯示36。 5. 設置K8K7K6=100,K4K3K2=110。 6. 按下STEP鍵,A寄存器顯示9C。
7. 設置K1K0=01,K8K7K6=000,K4K3K2=111,K23~K16=0100 0101。 8. 按下STEP鍵,W寄存器顯示45。
9. 設置K1K0=11,K8K7K6=100,,4K3K2=011,K10K11=10,K12=0。 10. 按下STEP鍵,D寄存器和R1寄存器顯示40。 11. 關閉實驗箱電源。
六、 實驗結論:
實現數據處理部件的工作方式控制和機器語言程序的運行過程。
七、 體會:
通過本次試驗,我對運算器實驗了解更深了並進一步鞏固了第一周所學的內容。
八、 思考題:
如何計算3456H+12EFH的值? 答:
通過CP226實驗儀,把S2S1S0設置為100,可以使用帶進位加法運算。由於是四位16進制,可以把它拆開,從個位開始計算,一位一位向上計算通過帶進位加法器,即算(64H*64H+64H*10H*3H+64H*3H+10H*9H+8h)+(64H*10H*4H+64H*8H+10H*4H+7H)
篇二:計算機組成原理實驗報告
【實驗環境】
1. Windows 2000 或 Windows XP
2. QuartusII、GW48-PK2或DE2-115計算機組成原理教學實驗系統一台,排線若干。
【實驗目的】
1、熟悉原理圖和VHDL語言的編寫。2、驗證全加器功能。
【實驗原理】
設計一個一位全加器,能完成兩個二進制位的加法操作,考慮每種情況下的進位信號,完成8組數據的操作。
【實驗步驟】
1.1建立工程項目
1.1.4 原理圖設計
新建項目後,就可以繪制原理圖程序了。下面以一位全加器如圖1-12所示為例,講解原理圖的編輯輸入的方法與具體步驟。
圖1-12 一位全加器原理圖
(1)執行菜單「File」→「New…」,或在工具欄中單擊圖標,彈出如圖1-13所示的「New」對話框。在此對話框的「Design Files」項中選擇「Block Diagram/Schematic File」,在單擊「OK」按鈕,QuartusⅡ10.0的主窗口進入如圖1-14所示的原理圖工作環境界面。
圖1-13 「New」對話框
(2)在如圖1-14所示的原理圖工作環境界面中單擊圖標或在原理圖編輯區的空白處雙擊滑鼠或在原理圖編輯區的空白處右鍵單擊在彈出的菜單中選擇「Insert」中的任意一個,彈出如圖1-15所示的元件輸入對話框,在「Name」欄中直接輸入所需元件名或在「Libraries: 」的相關庫中找到合適的元件,再單擊「OK」按鈕,然後在原理圖編輯區中單擊滑鼠左鍵,即可將元件調入原理圖編輯區中。為了輸入如圖1-12所示的原理圖,應分別調入and2、xor2、or3、input、output。對於相同的器件,可通過復制來完成。例如3個and2門,器操作方法是,調入一個and2門後,在該器件上單擊滑鼠右鍵,在彈出的菜單中選擇「Copy」命令將其復制,然後在合適的位置上右鍵,在彈出的菜單中選擇「Paste」命令將其粘帖即可。1
圖1-14 原理圖工作環境界面
圖1-15 元件輸入對話框
如果元件放置好後,需要改元件的位置時,對於單個器件而言,在該器件上按住滑鼠左鍵,拖到合適的位置後再松開滑鼠左鍵即可;對於多個器件而言,應該按下滑鼠左鍵框選需要移動的所有器件,然後將游標移動到選擇的器件上,待游標變成可移動的「十」字游標,此時按住滑鼠左鍵將其拖到合適的位置即可。
如果要刪除元件時,應先將元件選中,然後按「Del」鍵或右鍵在彈出的菜單中選擇「Del」。
如果要旋轉元件時,應先將元件選中,然後右鍵在彈出的菜單中可選「Filp Horizontal」(水平翻轉)、「Filp Vertical」(垂直翻轉)、「Rotate by Degrees」(逆時針方向旋轉,可選90°、180°、270°)等命令。
(3)將游標指向元件的引腳上,游標變成「十」字形狀,按下滑鼠左鍵並拖動,就會有導線引出,連接到另一端的元件上後,松開滑鼠左鍵,即可繪制好一根導線,按此方法繪制好全部導線,如圖1-16所示。
2
圖1-16 導入元件和繪制導線(注意:用滑鼠拖出的導線只能最多轉一個彎)
圖1-17 修改引腳名對話框
(4)雙擊或右鍵單擊「pin_name」輸入引腳,將彈出如圖1-17所示的對話框。在此對話框的「Gerneral」頁的「Pin name(s) 」項中輸入引腳名,如:S,然後單擊「確定」按鈕,即可將「pin_name」輸入引腳名改為「S」。按此方法依次修改其他引腳。修改後如圖1-16所示。
(5)執行菜單命令「File」→ 「Save…」,或在工具欄中單擊
名並單擊「保存」按鈕即可(此時最好不要更改存儲路徑)。
圖標,彈出「Save AS」對話框,在此對話框中輸入文件
2.1 頂層VHDL文件設計
2.1.1 創建工程和編輯設計文件
首先建立工作庫,以便設計工程項目的存儲。任何一項設計都是一項工程(Project),都必須首先為此工程建立一個放置與此工程相關的所有文件的文件夾,此文件夾將被EDA軟體默認為工作庫(Work Library)。
在建立了文件夾後就可以將設計文件通過QuartusII的文本編輯器編輯並存檔,詳細步驟如下:
1、新建一個文件夾。利用資源管理器,新建一個文件夾,如:e : eda 。注意,文件夾名不能用中文。
2、輸入源程序。打開QuartusII,選擇菜單「File」「New」,在New窗中的「Device Design Files」中選擇編譯文件的語言類型,這里選「VHDL Files」(如圖2-1所示)。然後在VHDL文本編譯窗中鍵入VHDL程序(如圖2-2所示)。3
圖2-1 選擇編輯文件的語言類型
圖2-2編輯輸入設計文件(頂層設計文件ADD1.VHD)
圖2-3利用「New Preject Wizard」創建工程
篇三:計算機組成原理實驗2.2_實驗報告
一、 實驗目的與要求
(1) 掌握Cache 控制器的原理及其設計方法。
(2) 熟悉CPLD 應用設計及EDA 軟體的使用。
二、 實驗設備
PC 機一台,TD-CM3+或TD-CMX 實驗系統一套。
三、 實驗原理
本實驗採用的地址變換是直接映象方式,這種變換方式簡單而直接,硬體實 現很簡單,訪問速度也比較快,但是塊的沖突率比較高。其主要原則是:主存中一塊只能映象到Cache 的一個特定的塊中。
假設主存的塊號為B,Cache 的塊號為b,則它們之間的映象關系可以表示 為:b = B mod Cb
其中,Cb 是Cache 的塊容量。設主存的塊容量為Mb,區容量為Me,則直接 映象方法的關系如圖2-2-1 所示。把主存按Cache 的大小分成區,一般主存容量為Cache 容量的整數倍,主存每一個分區內的塊數與Cache 的總塊數相等。直接映象方式只能把主存各個區中相對塊號相同的那些塊映象到Cache 中同一塊號的那個特定塊中。例如,主存的塊0 只能映象到Cache 的塊0 中,主存的塊1 只能映象到Cache 的塊1 中,同樣,主存區1 中的塊Cb(在區1 中的相對塊號是0)
也只能映象到 Cache 的塊0 中。根據上面給出的地址映象規則,整個Cache 地址與主存地址的低位部分是完全相同的。
直接映象方式的地址變換過程如圖2-2-2 所示,主存地址中的塊號B 與Cache 地址中的塊號b 是完全相同的。同樣,主存地址中的塊內地址W 與Cache 地址中的塊內地址w 也是完全相同的,主存地址比Cache 地址長出來的部分稱為區號E。
1
在程序執行過程中,當要訪問 Cache 時,為了實現主存塊號到Cache 塊號的變換,需要有一個存放主存區號的小容量存儲器,這個存儲器的容量與Cache 的塊數相等,字長為主存地址中區號E 的.長度,另外再加一個有效位。
在主存地址到Cache 地址的變換過程中,首先用主存地址中的塊號去訪問區號存儲器(按地址訪問)。把讀出來的區號與主存地址中的區號E 進行比較,根據比較結果和與區號在同一存儲字中的有效位情況作出處理。如果區號比較結果相等,有效位為『1』,則Cache 命中,表示要訪問的那一塊已經裝入到Cache 中了,這時Cache 地址(與主存地址的低位部分完全相同)是正確的。用這個Cache 地址去訪問Cache,把讀出來的數據送往CPU。其他情況均為Cache沒有命中,或稱為Cache 失效,表示要訪問的那個塊還沒有裝入到Cache 中,這時,要用主存地址去訪問主存儲器,先把該地址所在的塊讀到Cache 中,然後CPU 從Cache 中讀取該地址中的數據。
本實驗要在CPLD 中實現Cache 及其地址變換邏輯(也叫Cache 控制器),採用直接相聯地址變換,只考慮CPU 從Cache 讀數據,不考慮CPU 從主存中讀數據和寫回數據的情況,Cache和CPU 以及存儲器的關系如圖2-2-3 所示。
Cache 控制器頂層模塊如圖2-2-4 所示,主存地址為A7A0,共8 位,區號E 取3 位,這樣Cache 地址還剩5 位,所以Cache 容量為32 個單元,塊號B 取3 位,那麼Cache 分為8 塊,塊內地址W 取2 位,則每塊為4 個單元。圖2-2-4 中,WCT 為寫Cache 塊表信號,CLR 為系統總清零信號,A7A0 為CPU 訪問內存的地址,M 為Cache 失效信號,CA4CA0 為Cache 地址,
2
MD7MD0 為主存送Cache 的數據,D7D0 為Cache 送CPU 數據,T2 為系統時鍾, RD 為CPU 訪問內存讀信號,LA1 和LA0 為塊內地址。
在 QuartusII 軟體中先實現一個8 位的存儲單元(見常式中的MemCell.bdf),然後用 這個8位的存儲單元來構成一個32 X 8 位的Cache(見常式中的CacheMem.bdf),這樣就實現了Cache的存儲體。
再實現一個4 位的存儲單元(見常式中的TableCell.bdf),然後用這個4 位的存儲單
元
來構成一個8 X 4 位的區表存儲器,用來存放區號和有效位(見常式中的CacheTable.bdf),在這個文件中,還實現了一個區號比較器,如果主存地址的區號E 和區表中相應單元中的區號相等,且有效位為1,則Cache 命中,否則Cache 失效,標志為M,M 為0 時表示Cache 失效。
當Cache 命中時,就將Cache 存儲體中相應單元的數據送往CPU,這個過程比較簡單。 當Cache 失效時,就將主存中相應塊中的數據讀出寫入Cache 中,這樣Cache 控制器就要產生訪問主存儲器的地址和主存儲器的讀信號,由於每塊佔四個單元,所以需要連續訪問四次主存,這就需要一個低地址發生器,即一個2 位計數器(見常式中的Counter.vhd),將低2 位和CPU 給出的高6 位地址組合起來,形成訪問主存儲器的地址。M 就可以做為主存的讀信號,這樣,在時鍾的控制下,就可以將主存中相應的塊寫入到Cache 的相應塊中,
最後再修改區表(見常式中的(CacheCtrl.bdf)。
四、 實驗步驟
1、實驗接線:
3
2、實驗步驟:
(1) 使用Quartus II 軟體編輯實現相應的邏輯並進行編譯,直到編譯通過,Cache 控
制
器在EPM1270 晶元中對應的引腳如圖2-2-5 所示,框外文字表示I/O 號,框內文字表示該引腳的含義(本實驗常式見『安裝路徑Cpld CacheCtrlCacheCtrl.qpf』工程)
(2) 關閉實驗系統電源,按圖2-2-6 連接實驗電路,並檢查無誤,圖中將用戶需要連接的信號用圓圈標明。
(3) 打開實驗系統電源,將生成的POF 文件下載到EMP1270 中去,CPLD 單元介紹見實驗1.2。
(4) 將時序與操作台單元的開關KK3 置為『運行』檔,CLR 信號由CON 單元的CLR 模擬給出,按動CON 單元的CLR 按鈕,清空區表。
(5) 預先往主存寫入數據:聯機軟體提供了機器程序下載功能,以代替手動讀寫主存,機器程序以指定的格式寫入到以TXT 為後綴的文件中。
;③ 計算機組成原理(三)存儲系統
輔存中的數據要調入主存後才能被CPU訪問
按存儲介質,存儲器可分為磁表面存儲器(磁碟、磁帶)、磁心存儲器半導體存儲器(MOS型存儲器、雙極型存儲器)和光存儲器(光碟)。
隨機存取存儲器(RAM):讀寫任何一個存儲單元所需時間都相同,與存儲單元所在的物理位置無關,如內存條等
順序存取存儲器(SAM):讀寫一個存儲單元所需時間取決於存儲單元所在的物理位置,如磁碟等
直接存取存儲器(DAM):既有隨機存取特性,也有順序存取特性。先直接選取信息所在區域,然後按順序方式存取。如硬碟等
相聯存儲器,即可以按內容訪問的存儲器(CAM)可以按照內容檢索到存儲位置進行讀寫,「快表」就是一種相聯存儲器
讀寫存儲器—即可讀、也可寫(如:磁碟、內存、Cache)
只讀存儲器—只能讀,不能寫(如:實體音樂專輯通常採用CD-ROM,實體電影採用藍光光碟,BIOS通常寫在ROM中)
斷電後,存儲信息消失的存儲器——易失性存儲器(主存、Cache)
斷電後,存儲信息依然保持的存儲器——非易失性存儲器(磁碟、光碟)
信息讀出後,原存儲信息被破壞——破壞性讀出(如DRAM晶元,讀出數據後要進行重寫)
信息讀出後,原存儲信息不被破壞——非破壞性讀出(如SRAM晶元、磁碟、光碟)
存儲器晶元的基本電路如下
封裝後如下圖所示
圖中的每條線都會對應一個金屬引腳,另外還有供電引腳、接地引腳,故可以由此求引腳數目
n位地址對應2 n 個存儲單元
假如有8k×8位的存儲晶元,即
現代計算機通常按位元組編址,即每個位元組對應一個地址
但也支持按位元組定址、按字定址、按半字定址、按雙字定址
(Dynamic Random Access Memory,DRAM)即動態RAM,使用柵極電容存儲信息
(Static Random Access Memory,SRAM)即靜態RAM,使用雙穩態觸發器存儲信息
DRAM用於主存、SRAM用於Cache,兩者都屬於易失性存儲器
簡單模型下需要有 根選通線,而行列地址下僅需 根選通線
ROM晶元具有非易失性,斷電後數據不會丟失
主板上的BIOS晶元(ROM),存儲了「自舉裝入程序」,負責引導裝入操作系統(開機)。邏輯上,主存由 輔存RAM+ROM組成,且二者常統一編址
位擴展的連接方式是將多個存儲晶元的地址端、片選端和讀寫控制端相應並聯,數據端分別引出。
字擴展是指增加存儲器中字的數量,而位數不變。字擴展將晶元的地址線、數據線、讀寫控制線相應並聯,而由片選信號來區分各晶元的地址范圍。
實際上,存儲器往往需要同時擴充字和位。字位同時擴展是指既增加存儲字的數量,又增加存儲字長。
兩個埠對同一主存操作有以下4種情況:
當出現(3)(4)時,置「忙」信號為0,由判斷邏輯決定暫時關閉一個埠(即被延時),未被關閉的埠正常訪問,被關閉的埠延長一個很短的時間段後再訪問。
多體並行存儲器由多體模塊組成。每個模塊都有相同的容量和存取速度,各模塊都有獨立的讀寫控制電路、地址寄存器和數據寄存器。它們既能並行工作,又能交義工作。多體並行存儲器分為高位交叉編址(順序方式)和低位交叉編址(交叉方式)兩種.
①高位交叉編址
②低位交叉編址
採用「流水線」的方式並行存取(宏觀上並行,微觀上串列),連續取n個存儲字耗時可縮短為
宏觀上,一個存儲周期內,m體交叉存儲器可以提供的數據量為單個模塊的m倍。存取周期為T,存取時間/匯流排傳輸周期為r,為了使流水線不間斷,應保證模塊數
單體多字系統的特點是存儲器中只有一個存儲體,每個存儲單元存儲m個字,匯流排寬度也為m個字。一次並行讀出m個字,地址必須順序排列並處於同一存儲單元。
缺點:每次只能同時取m個字,不能單獨取其中某個字;指令和數據在主存內必須是連續存放的
為便於Cache 和主存之間交換信息,Cache 和主存都被劃分為相等的塊,Cache 塊又稱Cache 行,每塊由若干位元組組成。塊的長度稱為塊長(Cache 行長)。由於Cache 的容量遠小於主存的容盤,所以Cache中的塊數要遠少於主存中的塊數,它僅保存主存中最活躍的若干塊的副本。因此 Cache 按照某種策略,預測CPU在未來一段時間內欲訪存的數據,將其裝入Cache.
將某些主存塊復制到Cache中,緩和CPU與主存之間的速度矛盾
CPU欲訪問的信息已在Cache中的比率稱為命中率H。先訪問Cache,若Cache未命中再訪問主存,系統的平均訪問時間t 為
同時訪問Cache和主存,若Cache命中則立即停止訪問主存系統的平均訪問時間t 為
空間局部性:在最近的未來要用到的信息(指令和數據),很可能與現在正在使用的信息在存儲空間上是鄰近的
時間局部性:在最近的未來要用到的信息,很可能是現在正在使用的信息
基於局部性原理,不難想到,可以把CPU目前訪問的地址「周圍」的部分數據放到Cache中
直接映射方式不需要考慮替換演算法,僅全相聯映射和組相聯映射需要考慮
①隨機演算法(RAND):若Cache已滿,則隨機選擇一塊替換。實現簡單,但完全沒考慮局部性原理,命中率低,實際效果很不穩定
②先進先出演算法(FIFO):若Cache已滿,則替換最先被調入Cache的塊。實現簡單,依然沒考慮局部性原理
③近期最少使用演算法(LRU):為每一個Cache塊設置一個「計數器」,用於記錄每個Cache塊已經有多久沒被訪問了。當Cache滿後替換「計數器」最大的.基於「局部性原理」,LRU演算法的實際運行效果優秀,Cache命中率高。
④最不經常使用演算法(LFU):為每一個Cache塊設置一個「計數器」,用於記錄每個Cache塊被訪問過幾次。當Cache滿後替換「計數器」最小的.並沒有很好地遵循局部性原理,因此實際運行效果不如LRU
現代計算機常採用多級Cache,各級Cache之間常採用「全寫法+非寫分配法」;Cache-主存之間常採用「寫回法+寫分配法」
寫回法(write-back):當CPU對Cache寫命中時,只修改Cache的內容,而不立即寫入主存,只有當此塊被換出時才寫回主存。減少了訪存次數,但存在數據不一致的隱患。
全寫法(寫直通法,write-through):當CPU對Cache寫命中時,必須把數據同時寫入Cache和主存,一般使用寫緩沖(write buffer)。使用寫緩沖,CPU寫的速度很快,若寫操作不頻繁,則效果很好。若寫操作很頻繁,可能會因為寫緩沖飽和而發生阻塞訪存次數增加,速度變慢,但更能保證數據一致性
寫分配法(write-allocate):當CPU對Cache寫不命中時,把主存中的塊調入Cache,在Cache中修改。通常搭配寫回法使用。
非寫分配法(not-write-allocate):當CPU對Cache寫不命中時只寫入主存,不調入Cache。搭配全寫法使用。
頁式存儲系統:一個程序(進程)在邏輯上被分為若干個大小相等的「頁面」, 「頁面」大小與「塊」的大小相同 。每個頁面可以離散地放入不同的主存塊中。CPU執行的機器指令中,使用的是「邏輯地址」,因此需要通「頁表」將邏輯地址轉為物理地址。頁表的作用:記錄了每個邏輯頁面存放在哪個主存塊中
邏輯地址(虛地址):程序員視角看到的地址
物理地址(實地址):實際在主存中的地址
快表是一種「相聯存儲器」,可以按內容尋訪,表中存儲的是頁表項的副本;Cache中存儲的是主存塊的副本
地址映射表中每一行都有對應的標記項
主存-輔存:實現虛擬存儲系統,解決了主存容量不夠的問題
Cache-主存:解決了主存與CPU速度不匹配的問題
④ 【計算機組成原理】存儲器設計問題
1、要考慮速度問題,即CPU和存儲器之間的速度;
2、容量問題,CPU的訪問地址線要能夠足夠存儲單元用。
3、成本問題,要適合要設計的系統,成本要低;
4、可靠性問題
5、存儲器類型,選用eeprom還是flash rom,還是EPROM等等
第一問:ROM需要6個,先用兩個組成2K*8一組,再用3組組成6K*8的ROM;RAM需要4個晶元組成2K*8.總計8K,所以需要13條地址線。片選信號,CPU的WR RD分別連接RAM晶元的EN ,OE ; EA連接ROM的OE。
晶元數量的計算方法為 數量n =ROM或RAM的總容量/ROM或RAM單個晶元的容量