計算機組成原理實驗報告存儲器
① 組成原理課程設計論文
組成原理課程設計論文
當代,論文常用來指進行各個學術領域的研究和描述學術研究成果的文章,簡稱之為論文。它既是探討問題進行學術研究的一種手段,又是描述學術研究成果進行學術交流的一種工具。它包括學年論文、畢業論文、學位論文、科技論文、成果論文等。接下來我為你帶來組成原理課程設計論文,希望對你有幫助。
篇一:計算機組成原理實驗報告
一、 實驗名稱:運算器實驗
二、 實驗目的:
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 為後綴的文件中。
;② 計組實驗報告如何將R0的數據存入寄存器A中
計組實驗報告將R0的數據存入寄存器A中:目的數據存儲器單元,如果是在單片機內部,這樣就可以:MOV@R0,A或送到片外:MOVX@R0,A。
首先,MOVAL,buf與MOVAL,[buf]沒有任何區別,都是將變數BUF的值送AL。想將buf的地址值存入AL,這是不可能的,因為AL是8位,而地址是16位。加中括弧就是是一個地址一邊就是把數據移入AL的話沒有特定的指出的話地址放在DS數據段中。
基本含義
寄存器是CPU內部用來存放數據的一些小型存儲區域,用來暫時存放參與運算的數據和運算結果。其實寄存器就是一種常用的時序邏輯電路,但這種時序邏輯電路只包含存儲電路。
寄存器的存儲電路是由鎖存器或觸發器構成的,因為一個鎖存器或觸發器能存儲1位二進制數,所以由N個鎖存器或觸發器可以構成N位寄存器。寄存器是中央處理器內的組成部分。寄存器是有限存儲容量的高速存儲部件,它們可用來暫存指令、數據和位址。
③ 計算機組成原理是什麼
計算機組成原理是什麼
計算機組成指的是系統結構的邏輯實現,包括機器機內的數據流和控制流的組成及邏輯設計等。計算機由什麼組成的,有什麼原理呢?下面我為大家分析一下!
【計算機性能指標】
計算機的性能指標主要是CPU性能指標、存儲器性能指標和I/O吞吐率。
處理機字長:是指處理機運算器中一次能夠完成二進制運算的位數。
匯流排寬度:一般指CPU中運算器與存儲器之間進行互連的內部匯流排二進制位數。
存儲器帶寬:單位時間內從存儲器讀出事物二進制數信息量,一般用位元組數/秒錶示。
主頻/時鍾周期:CPU的工作節拍受主時鍾控制,主時鍾不斷產生固定頻率的時鍾,主時鍾的頻率(f)叫CPU的主頻。主頻的倒數稱為CPU的周期(T)。
CPI:表示每條指令周期數,即執行一般程序所佔用的CPU時間,
CPU執行時間=CPU時鍾周期數*CPU時鍾周期
MIPS:表示平均每秒執行多少百萬條定點指令數,
FLOPS:表示每秒執行浮點操作的次數,用來衡量機器浮點操作的性能。
FLOPS=程序中的浮點操作次數/程序執行時間(s)
【定點數的表示和運算】
一個定點數由符號位和數值域兩部分組成。按小數點位置不同,定點數有純小數和純整數兩種表示方法。在定點計算機中,兩個原碼表示的數相乘的運算規則是:乘積的嫌族符號位由兩數的符號位按異或運算得到,而乘積的數值部分則者者仔是兩個正數相乘之積。兩個原碼表示的數相除時,商的符號位由兩數的符號按位相加求得,商的數值部分由兩數的數值部分相除求得。
【算數邏輯單元ALU】
為運算器構造的簡單性,運算方法中算數運算通常採用補碼加、減法,原碼乘除法或補碼乘除法。為了運算器的高速性和控制的簡單性,採用了先行進位、陣列乘除法、流水線等並行技術措施。ALU不僅具有多種算術運算和邏輯運算的功能,而且具有先行進位邏輯,從而能實現高速運算。
【存儲器的分類】
按存儲介質,用半導體器件組成的存儲器稱為半導體存儲器,用磁性材料做成的存儲器稱為磁表面存儲首汪器;作為存儲介質的基本要求,必須有兩個明顯區別的物理狀態,分別用來表示二進制的代碼0和1。另一方面,存儲器的存取速度又取決於這種物理狀態的改變速度。
按存取方式,存儲器中任何存儲單元的內容都能被隨機存取,且存取時間和存儲單元的位置無關的存儲器稱為隨機存儲器,存儲器只能按某種順序來存取,即存取時間和存儲單元的物理位置有關的存儲器稱為順序存儲器;半導體存儲器是隨機存儲器,RAM和ROM都是採用隨機存取的方式進行信息訪問,磁帶存儲器是順序存儲器。
按信息易失性,斷電後信息消失的存儲器稱為易失性存儲器,斷電後仍能保存信息的存儲器稱為非易失性存儲器;半導體讀寫存儲器RAM是易失性存儲器,ROM是非易失性存儲器,磁性材料做成的存儲器是非易失性存儲器。
按存儲內容可變性,有些半導體存儲器存儲的內容是固定不變的,即只能讀出而不能寫入,這種半導體存儲器稱為只讀存儲器(ROM),既能讀出又能寫入的半導體存儲器稱為隨機讀寫存儲器(RAM);
按系統中的作用,可分為內部存儲器、外部存儲器;又可分為主存儲器、高速緩沖存儲器、輔助存儲器、控制存儲器;半導體存儲器是內部存儲器,磁碟是外部存儲器,又是輔助存儲器。
【存儲器的層次化結構】
目前在計算機系統中,通常採用多級存儲器體系結構,即使用高級緩沖存儲器(cache)、主存儲器和外存儲器。CPU能直接訪問的存儲器稱為內存儲器,它包括cache和主存儲器。CPU不能直接訪問外存儲器,外存儲器的信息必須調入內存儲器後才能為CPU進行處理。cache是計算機系統中的一個高速小容量半導體存儲器,在計算機中利用cache來高速存取指令和數據。cache的工作原理基於程序運行中具有的空間局部性和時間局部性特徵。cache能高速地向CPU提供指令和數據,從而加快了程序的執行速度。從功能上看,它是主存的緩沖存儲器,由高速的SRAM組成。為追求高速,包括管理在內的全部功能由硬體實現,因而對程序員是透明的。與主存容量相比。cache的容量很小,它保存的內容只是主存內容的一個子集,且cache與主存的數據交換是以塊為單位。主存儲器是計算機系統的主要存儲器,由MOS半導體存儲器組成,用來存放計算機運行期間的大量程序和數據,能和cache交換數據和指令。外存儲器是大容量輔助存儲器,通常用來存放系統程序和大型數據文件及資料庫。
存儲器的技術指標有存儲容量、存取時間、存儲周期、存儲器帶寬。存取時間、存儲周期、存儲器帶寬三個概念反映了主存的速度指標。
存取時間:指一次讀操作命令發出到該操作完成,將數據讀出到數據匯流排上所經歷的時間。通常取寫操作時間等於讀操作時間,故稱為存儲器存取時間,存取時間又稱存儲器訪問時間。
存儲周期:指連續兩次讀操作所需間隔的最小時間。通常,存儲周期略大於存取時間。
“位(bit)”是電子計算機中最小的數據單位,每一位的狀態只能是0或1。8個二進制位構成一個“位元組(Byte)”,位元組是儲存空間的基本計量單位,一個位元組可以儲存一個英文字母,2個位元組可以儲存一個漢子。“字”由若干位元組構成,字的位數叫作字長,不同檔次的機器有不同的字長。存儲器的基本單位位元組的長度是8 bit。表示主存容量的常用單位位元組B,是基本單位。此外還有KB、MB、GB、TB。一個雙穩態半導體電路或一個CMOS晶體管或磁性材料的存儲元,均可以存儲一位二進制代碼。這個二進制代碼位是存儲器中最小的存儲單位,稱為存儲位元。
所有的SRAM的特徵是用一個鎖存器(觸發器)作為存儲元,觸發器具有兩個穩定的狀態,只要直流供電電源一直加在這個記憶電路上,它就無限期地保持記憶的1或0狀態;如果電源斷電,那麼存儲的數據(1或0)就會丟失。SRAM是易失性存儲器。半導體靜態存儲器 SRAM 的存儲原理是依靠雙穩態電路。SRAM存儲器的存儲元是一個觸發器,它具有兩個穩定的狀態。SRAM的優點是存取速度快,但存儲容量不如DRAM大。動態MOS隨機讀寫存儲器DRAM的存儲容量極大,通常用作計算機的主存儲器。主存也可以用SRAM實現,只是成本高。與SRAM相比,DRAM成本低、功耗低,但需要刷新。動態RAM存儲信息依靠的是電容。DRAM存儲器的存儲元是由一個MOS晶體管和電容器組成的記憶電路,其中MOS晶體管作為開關使用,而所存儲的信息1或0則是由電容器上的電荷量來體現--當電容器充滿電荷時,代表儲存了1,當電容器放電沒有電荷時,代表存儲了0。讀出過程也是刷新過程。輸入緩沖期與輸出緩沖器總是互鎖的。這是因為讀操作和寫操作是互斥的,不會同時發生。與SRAM不同的是:DRAM增加了行地址鎖存器和列地址鎖存器,增加了刷新計數器和相應的控制電路。DRAM比SRAM集成度更高。DRAM讀出後必須刷新,而未讀寫的存儲元也要定期刷新,而且要按行刷新,所以刷新計數器的長度等於行地址鎖存器。DRAM存儲位元是基於電容器上的電荷量存儲,這個電荷量隨著時間和溫度而減少,因此必須定期地刷新,以保持它們原來記憶的信息。DRAM是易失性存儲器。一次讀操作會自動地刷新選中行中的所有存儲位元。然而通常情況下,人們不能准確地預知讀操作出現的頻率,因此無法阻止數據丟失。在這種情況下,必須對DRAM進行定期刷新。DRAM使用電容存儲,所以必須隔一段時間刷新(refresh)一次,如果存儲單元沒有被刷新,存儲的信息就會丟失。DRAM存儲器有讀周期、寫周期和刷新周期,刷新周期比讀/寫周期有更高的優先權。DRAM存儲器需要逐行進行定時刷新,以使不因存儲信息的電容漏電而造成信息丟失。另外,DRAM晶元的讀出是一種破壞性讀出,因此在讀取之後要立即按讀出信息予以充電再生。動態MOS隨機讀寫存儲器DRAM的存儲容量極大,通常用作計算機的主存儲器。SRAM和DRAM都是隨機讀寫存儲器,它們的特點是數據可讀可寫。ROM叫作只讀存儲器,在它工作時只能讀出,不能寫入,其中存儲的原始數據必須在它工作以前寫入。FLASH叫作快閃記憶體存儲器,是高密度非易失性的讀/寫存儲器,高密度意味著它具有巨大比特數目的存儲容量,非易失性意味著存放的數據在沒有電源的情況下可以長期保存。FLASH存儲元是在EPROM存儲元基礎上發展起來的。快閃記憶體存儲器有三個主要的基本操作,它們是編程操作、讀取操作和擦除操作。可編程ROM有PROM、EPROM、EEPROM。其中,PROM是一次性編程。EPROM叫作光擦除可編程只讀存儲器,它的存儲內容可以根據需要寫入,當需要更新時將原存儲內容抹去,再寫入新的內容。EEPROM叫作電擦除可編程只讀存儲器,其儲存元是一個具有兩個柵極的NMOS管,這種存儲器在出廠時,存儲器內容為全“1”狀態。使用時,可根據要求把某些存儲元寫“0”。EPROM是可改寫的,但它不能用作為隨機存儲器用。
【主存儲器與CPU的連接】
主儲存器和CPU之間增加cache的目的是解決CPU和主存之間的`速度匹配問題。程序和數據存儲在主存中,主存通常採用多體交叉存儲器,以提高訪問速度。cache是一個高速緩沖存儲器,用以彌補主存和CPU速度上的差異。指令部件本身又構成一個流水線,它由取指令、指令解碼、計算操作數地址、取操作數等幾個過程段組成。指令隊伍是一個先進先出(FIFO)的寄存器棧,用於存放經過解碼的指令和取來的操作數。它也是由若干個過程段組成的流水線。執行部件可以具有多個算數邏輯運算部件,這些部件本身又用流水線方式構成。為了使存儲器的存取時間能與流水線的其他各過程段的速度匹配,一般採用多體交叉存儲器。執行段的速度匹配問題,通常採用並行的運算部件以及部件流水線的工作方式來解決。一般採用的方法包括:將執行部件分為定點執行部件和浮點執行部件兩個可並行執行的部分,分別處理定點運算指令和浮點運算指令;在浮點執行部件中,又有浮點加法部件和浮點乘/除部件,它們也可以同時執行不同的指令;浮點運算部件都以流水線方式工作。所謂資源相關,是指多條指令進入流水線後在同一機器時鍾周期內爭用同一個功能部件所發生的沖突。在一個程序中,如果必須等前一條指令 執行完畢後,才能執行後一條指令,那麼這兩條指令就是數據相關的。為了解決數據相關沖突,流水CPU的運算器中特意設置若干運算結果緩沖寄存器,暫時保留運算結果,以便於後繼指令直接使用,這稱為“向前”或定向傳送技術。控制相關沖突是由轉移指令引起的。當執行轉移指令時,依據轉移條件的產生結果,可能為順序取下條指令;也可能轉移到新的目標地址取指令,從而使流水線發生斷流。為了減小轉移指令對流水線性能的影響,常採用以下兩種轉移處理技術:由編譯程序重排指令序列來實現的延遲轉移法、硬體方法來實現的轉移預測法。
【雙口RAM和多模塊存儲器】
雙埠存儲器採用空間並行技術,能進行高速讀/寫操作。雙埠存儲器提供了兩個相互獨立的讀寫電路,可以對存儲器中任意位置上的數據進行獨立的存取操作。事實上雙埠存儲器也可以由DRAM構成。當兩個埠的地址不相同時,在兩個埠上進行讀寫操作,一定不會發生沖突。當兩個埠同時存取存儲器同一存儲單元時,便發生沖突。總之,當兩個埠均為開放狀態且存取地址相同時,發生讀寫沖突。
一個由若干模塊組成的主存儲器是線性編址的,這些地址在各模塊中的安排方式有兩種:一種是順序方式,一種是交叉方式。從定性分析,對連續字的成塊傳送,交叉方式的存儲器可以實現多模塊流水式並行存取,大大提高存儲器的帶寬,由於CPU的速度比主存快,假如能同時從主存取出n條指令,這必然會提高機器的運行速度。多模塊交叉存儲器是一種並行存儲器結構。
【高速緩沖存儲器(cache)】
cache是一種高速緩沖存儲器,是為了解決CPU和主存之間速度不匹配而採用的一項重要技術。其原理基於程序運行中具有的空間局部性和時間局部性特徵。cache能高速地向CPU提供指令和數據,從而加快了程序的執行速度。從功能上看,它是主存的緩沖存儲器,由高速的SRAM組成。為追求高速,包括管理在內的全部功能由硬體實現,因而對程序員是透明的。當前隨著半導體器件集成度的進一步提高,cache已放入到CPU中,其工作速度接近於CPU的速度,從而能組成兩級以上的cache系統。cache除包含SRAM外,還要有控制邏輯。若cache在CPU晶元外,它的控制邏輯一般與主存控制邏輯合成在一起,成為主存/cache控制器;若cache在CPU內,則由CPU提供它的控制邏輯。CPU與cache之間的數據交換是以字為單位,而cache與主存之間的數據交換是以塊為單位。一個塊由若干字組成,是定長的。當CPU讀取內存中一個字時,便發出此字的內存地址到cache和主存。此時cache控制邏輯依據地址判斷此字是否在cache中:若是,此字立即傳送給CPU;若非,則用主存讀周期把此字從主存讀出送到CPU,與此同時,把含有這個字的整個數據塊從主存讀出送到cache中。從CPU看,增加一個cache的目的,就是在性能上使主存的平均讀出時間盡可能接近cache的讀出時間。為了達到這個目的,在所有的存儲器訪問中由cache滿足CPU需要的部分應占很高的比例,即cache的命中率應接近於1.由於程序訪問的局部性,實現這個目標是可能的。運算器由算數邏輯單元(ALU)、通用寄存器、數據緩沖寄存器DR和狀態條件寄存器PSW組成,它是數據加工處理部件。運算器接受控制器的命令而進行動作,即運算器所進行的全部操作都是由控制器發出的控制信號來指揮的,所以它是執行部件。運算器有兩個主要功能:(1)執行所有的算數運算;(2)執行所有的邏輯運算,並進行邏輯測試,如零值測試或兩個值的比較。通常,一個算數操作產生一個運算結果,而一個邏輯操作則產生一個判決。
與主存容量相比,cache的容量很小,它保存的內容只是主存內容的一個子集,且cache與主存的數據交換是以塊為單位。為了把主存塊放到cache中,必須應用某種方法把主存地址定為到cache中,稱做地址映射。“映射”的物理含義是確定位置的對應關系,並用硬體來實現。這樣當CPU訪問存儲器時,它所給出的一個字的內存地址會自動變換成cache的地址。由於採用硬體,這個地址變換過程很快,軟體人員絲毫感覺不到cache的存在,這種特性成為cache的透明性。地址映射方式有全相聯方式、直接方式和組相聯方式三種。在全相聯映射中,將主存中一個塊的地址(塊號)與塊的內容(字)一起存於cache的行中,其中塊地址存於cache行的標記部分中。這種帶全部塊地址一起保存的方法,可使主存的一個塊直接拷貝到cache中的任意一行上。全相聯映射方式的檢索過程:CPU訪存指令指定了一個內存地址(包括主存和cache),為了快速檢,指令中的塊號與cache中所有行的標記同時在比較器中進行比較。如果塊號命中,則按字地址從cache中讀取一個字;如果塊號未命中,則按內存地址從主存中讀取這個字。在全相聯cache中,全部標記用一個相聯存儲器來實現,全部數據用一個普通RAM來實現。全相聯方式的主要缺點是比較器電路難於設計和實現,因此只適合於小容量cache採用。直接映射方式也是一種多對一的映射關系,但一個主存塊只能拷貝到cache的一個特定行位置上去。直接映射方式的優點是硬體簡單,成本低。缺點是每個主存塊只有一個固定的行位置可存放,如果塊號相距m整數倍的兩個塊存於同一cache行時,就要發生沖突。發生沖突時就要將原先存入的行換出去,但很可能過一段時間又要換入。頻繁的置換會使cache的效率下降。因此直接映射方式適合於需要大容量cache的場合,更多的行數可以減小沖突的機會。採用直接映射時,cache無需考慮替換問題。從存放位置的靈活性和命中率來看,全相聯映射方式為優;從比較器電路簡單及硬體投資來說,直接映射方式為佳。組相聯映射方式將cache分成u組,每組v行,主存塊存放到哪個組是固定的,至於存到該組哪一行是靈活的。組相聯映射方式的比較器電路容易設計和實現,而塊在組中的排放又有一定的靈活性,使沖突減少。全相聯映射方式和組相聯映射方式速度較低,通常適合於小容量cache。
cache工作原理要求它盡量保存最新數據。當一個新的主存塊需要拷貝到cache,而允許存放此塊的行位置都被其他主存塊占滿時,就要產生替換。對直接映射方式來說,因一個主存塊只有一個特定的行位置可存放,所以只要把此特定位置上的原主存塊換出cache即可。對全相聯和組相聯cache來說,就要允許存放新主存塊的若干特定行中選取一行換出。cache的替換全部靠硬體實現。
如何選取就涉及替換策略,又稱替換演算法,硬體實現的常用演算法主要有以下三種:1)近期最少使用(LRU)演算法:將近期內長久未被訪問的行換出;2)最不經常使用(LFU)演算法:將一段時間內被訪問次數最少的那行數據換出;3)隨機替換:實際上是不要什麼演算法,從特定的行位置中隨機地選出一行換出即可。在Cache替換演算法中,近期最少使用法比較正確地利用了程序訪存局部性原理,替換出近期用得最少的存儲塊,命中率較高,是一種比較好的替換演算法;隨機法是隨機地確定替換的存儲單元,先進先出法是替換最早調入的存儲單元,它們都沒有根據程序訪存局部性原理,命中率較低;而後進先出法不是cache所使用的替換演算法,此法在堆棧存儲結構中使用。
【虛擬存儲器】
常用的虛擬存儲系統由主存-輔存兩級存儲器組成,其中輔存是大容量的磁表面存儲器。在虛擬存儲器中,主存的內容只是輔存的一部分內容。虛擬存儲系統是為了提高存儲系統的性能價格比而構造的分層存儲體系,力圖使存儲系統的性能接近高速存儲器,而價格和容量接近低速存儲器。虛擬存儲利用了程序運行時的局部性原理把最近常用的信息塊從相對慢速而大容量的存儲器調入相對高速而小容量的存儲器。虛擬存儲主要是解決存儲容量問題,另外還包括存儲管理、主存分配和存儲保護等方面。虛存所依賴的輔存與CPU之間不存在直接的數據通路,當主存不命中時只能通過調頁解決,CPU最終還是要訪問主存。虛存管理由軟體(操作系統)和硬體共同完成,由於軟體的介入,虛存對實現存儲管理的系統程序員不透明,而只對應用程序員透明(段式和段頁式管理對應用程序員“半透明”)。主存未命中時系統的性能損失要遠大於cache未命中時的損失。
【虛擬內存管理】
虛存機制也要解決一些關鍵問題:(1)調度問題:決定哪些程序和數據應被調入主存;(2)地址映射問題:在訪問主存時把虛地址變為主存物理地址,在訪問輔存時把虛地址變為輔存的物理地址,以便換頁;(3)替換問題:解決哪些程序和數據應被調出主存;虛擬存儲器的替換演算法與cache的替換演算法類似,有FIFO演算法、LRU演算法、LFU演算法,虛擬存儲器的替換有操作系統的支持(4)更新問題:確保主存和輔存的一致性。虛擬存儲器分為頁式、段式、段頁式三種。
頁式虛擬存儲系統中,虛地址空間被分成等長大小的頁,稱為邏輯頁;主存空間也被分成同樣大小的頁,稱為物理頁。相應地,虛地址分為兩個欄位:高欄位為邏輯頁號,低欄位為頁內地址(偏移量);實存地址也分為兩個欄位:高欄位為物理頁號,低欄位為頁內地址。通過頁表可以把虛地址(邏輯地址)轉換成物理地址。在大多數系統中,每個進程對應一個頁表。現代的中央處理機通常有專門的硬體支持地址變換。每個進程所需的頁數並不固定,所以頁表的長度是可變的,因此通常的實現方法是把頁表的基地址保存在寄存器中,而頁表本身則放在主存中。由於虛地址空間可以很大,因而每個進程的頁表有可能非常長。由於頁表通常在主存中,因而即使邏輯頁已經在主存中,也要至少訪問兩次物理存儲器才能實現一次訪存,這將使虛擬存儲器的存取時間加倍。為了避免對主存訪問次數的增多,可以對頁表本身實行二級緩存,把頁表中的最活躍部分存放在高速存儲器中。這個專用於頁表緩存的高速存儲部件通常稱為轉換後援緩沖器(TLB),又稱快表。而保存在主存中的完整頁表則稱為慢表。快表的作用是加快地址轉換。TLB的作用和與主存與CPU之間的cache作用相似,通常由相聯存儲器實現,容量比慢表小得多,存儲慢表中部分信息的副本,可以完成硬體高速檢索操作。地址轉換時,根據邏輯頁號同時查快表和慢表,當在快表中有此邏輯號時,就能很快地找到對應的物理頁號。根據程序的局部性原理,多數虛擬存儲器訪問都將通過TLB進行,從而有效降低訪存的時間延遲。由於TLB的緩沖過程與cache的緩沖過程是獨立的,所以在每次存儲器訪問過程中有可能要經歷多次變換。
;④ 計算機組成原理(三)存儲系統
輔存中的數據要調入主存後才能被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單個晶元的容量