計算機組成原理—3—各類儲存器介紹

   注:這一章主要介紹了SRAM與DRAM、ROM與FLASH、並行存儲器、cache存儲器、虛擬存儲器的概念,其中cache存儲器和虛擬存儲器是重點內容。

1、SRAM與DRAM

   目前採用最廣泛的內部存儲器是半導體存儲器。其根據信息存儲的機理,又分爲靜態存儲器(SRAM)動態存儲器(DRAM)。SRAM的優點是存取速度快,但存儲量不如DRAM大。

  動態MOS隨機讀寫存儲器DRAM的存儲量極大,通常用作計算機的主存儲器。

  SRAM存儲器的存儲單元是一個觸發器,具有兩個穩定的狀態。而DRAM存儲器的儲存元是由一個MOS晶體管電容器組成的記憶電路,其中MOS管作爲開關使用,而所存儲的信息1和0則是由電容器上的電荷量來體現——當電容器充滿電荷時。代表存儲了1,當電容器放電沒有電荷時,代表存儲了0。

  DRAM的刷新週期:DRAM存儲位元是基於電容器上的電荷量存儲,這個電荷量隨之的時間和溫度而減少,因此必須定期地刷新,從而保存原來的存儲信息。一般典型器件的刷新週期是8ms到16ms,某些器件的刷新週期可以大於100ms。

  一次讀寫操作會自動地刷新選中行中的所有存儲單元。於此同時必須對DRAM進行定時刷新。

  刷新操作有集中式刷新和分散式刷新兩種方式:
  集中式刷新,DRAM的所有行在每一個刷新週期中都將被刷新。
  分佈式刷新,每一行的刷新插入到正常的讀寫週期之中。

  SRAM和DRAM都是隨機讀寫存儲器。

2、ROM與FLASH

  只讀存儲器ROM:顧名思義,只讀的意思是在它工作時只能讀出,不能寫入。其工作可靠性高,保密性強,被廣泛應用。ROM分爲掩模ROM和可編程ROM兩類。掩模ROM實際是一個存儲內容固定的ROM。後者又分爲一次性編程的PROM和多次編程的EPROM和E²PROM。前者是鼻祖,後者是繼承創新的產物。

   閃速存儲器FLASH:是高密度非易失性的讀寫存儲器。高密度意味着它具有巨大比特數目的存儲容量。非易失性意味着存放的數據可在沒有電源的情況下可以長期保存。

3、並行存儲器

   由於CPU和主存儲器之間在速度上是不匹配的,爲了提高CPU和主存之間的數據傳輸率,除了採用更高速的技術來縮短讀出時間外,還可以採用並行技術的存儲器。

  雙端口存儲器

  雙端口存儲器由於同一個存儲器具有兩個互相獨立的讀寫電路而得名。由於並行的獨立操作,因而是一種高速工作的存儲器,在科研和工程中非常有用。

  雙端口存儲器提供兩個相互獨立的端口來進行讀寫功能。當兩個端口的地址不相同時,在兩個端口上進行讀寫操作,一定不會發生衝突。當兩個端口同時存取存儲器同一單元時,便發生讀寫衝突。

  多模塊交叉存儲器

  一個若干模塊組成的主存儲器是線性編址的。這些地址在各模塊中的安排方式有兩種:順序方式交叉方式
  常規的主存儲器訪問地址採用順序方式。在順序方式中某個模塊進行存儲時,其他模塊不工作。所以某一模塊出現故障時,其他模塊照常工作,另外通過增添模塊來擴充存儲器容量比較方便。但是順序存方式的缺點是各模塊一個接一個串行工作,因此儲存器的帶寬受到限制。
  而尋址訪問方式爲交叉方式的多模塊存儲器(多模塊交叉存儲器),從定性上分析,對連續字的成塊傳送,多模塊交叉存儲器可以實現模塊流水式並行存取,大大提高存儲器的帶寬。

4、cache存儲器

4.1 基本功能

  cache存儲器是一種高速緩衝存儲器,是爲了解決CPU和主存之間速度不匹配而採用的一項技術。其原理是基於程序運行中具有控件局部性和時間局部性特徵。從功能上看,它是主存的緩衝存儲器,由高速的SRAM組成。爲追求高速,包括管理在內的全部功能由硬件實現,因而對程序員是透明的。目前大部分計算機的cache存儲器位於CPU中,工作速度接近CPU的速度。

4.2 基本原理

  cache除了包括SRAM外,還要有控制邏輯。若cache在CPU芯片外,它的控制邏輯一般與主存邏輯合在一起,稱爲主存/cache控制器;若cache在CPU內,則由CPU提供它的控制邏輯。
  CPU與cache之間的數據交換是以字爲單位,而cache與主存之間的數據交換是以塊爲單位。一個塊由若干字組成,是定長的。當CPU讀取主存中的一個字時,遍發出此字的內存地址到cache和主存。此時cache控制邏輯依據地址判斷此字當前是否在cache中:若在,此字立即傳送給CPU;若不在,則用主存讀週期把此字從主存讀出送到CPU,於此同時,把含有這個字的整個數據塊從主存讀出送到cache中。

4.3 命中率

  cache從CPU來看,增加一個cache的目的,就是在性能上使主存的平均讀出時間儘可能接近cache的讀出時間。爲了達到這個目的,在所有的存儲器訪問中由cache滿足CPU的部分應占很高的比例,即cache的命中率應接近於1。

4.4 主存與cache的地址映射

  與主存容量相比,cache容量很小,它保存的內容只是主存內容的一個子集,且cache與主存的數據交換是以塊爲單位。爲了把主存塊存放到cache中,必須應用某種方法把主存地址定位到cache中,稱爲地址映射。這個地址轉換非常快,軟件人員絲毫感覺不到cache的存在,這種特性稱爲cache的透明性。
  地址映射方式有全相聯方式、直接方式和組相聯方式三種。
  在全相聯映射中,將主存中一個塊的地址(塊號)與塊的內容(字)一起存於cache的行中,其中塊地址存於cache行的標記部分中。
  直接映射方式,也是一種多對1的映射方式,但一個主存塊只能拷貝到cache的一個特定的位置上去。
  組相聯映射方式,全相聯映射和直接映射兩種方式的優缺點正好相反。從存放位置的靈活性和命中率來看,前者爲優;從比較器電路簡單及硬件投資來說,後者爲佳。
  而組相聯映射方式是前兩種方式的折衷,其兼顧二者的優點又避免二者的缺點,因而被普遍採用。這種方式將cache分爲u組,每組v行。主存存放到哪個組是固定的,至於存放到該組的哪一行是靈活的。

4.5 替換策略

  cache工作原理要求它儘量保存最新數據。當一個新的主存塊需要拷貝到cache,而允許存放此塊的行位置都被其他主存放塊佔滿時,就要產生替換。
  硬件實現的常用算法主要有:(1)最不經常使用(LFU)算法;(2)近期最少使用(LRU)算法;(3)隨機替換。

4.6 使用多級cache減少缺失損失
  當CPU訪問一級cache缺失時就會訪問二級cache。

5、虛擬存儲機

5.1 實地址與虛地址

  因爲在程序需設計時,在程序所需的存儲容量與計算機系統的實際配備的主存儲器容量之間往往存在着矛盾。因此在編程時不考慮程序是否能在物理存儲器中存放得下,也不考慮程序應該存放在什麼物理位置。而在程序運行時,則分配給每個程序一定的運行空間,由地址轉換部件(硬件或軟件)將編程時的地址轉換成實際內存的物理地址。如果分配的內存不夠,則只調入當前正在運行的或將要運行的程序塊(數據塊),其餘部分暫時駐留在輔存中。

  用戶編址程序時使用的地址稱爲虛地址邏輯地址,其對應的存儲空間稱爲虛存空間邏輯地址空間;而 計算機物理內存的訪問地址則稱爲實地址物理地址,而對應的存儲空間稱爲物理存儲空間主存儲空間

  程序進行虛地址到實地址轉換的過程稱爲程序的再定位

5.2 虛存的訪問過程

  虛存空間的用戶程序按照虛地址編程並存放在輔存中。程序運行時,由地址變換機構依據當時分配給該程序的實地址空間把程序的一部分調入實存。
  每次訪存時,首先判斷該虛地址所對應的部分是否在實存中,如果是,則進行地址轉換並訪問內存;否則,按照某種算法將輔存中的部分程序調度進內存,再按同樣的方法訪問內存。

  虛存是在主存和輔存之外附加一些硬件和軟件實現的。由於軟件的接借入,使虛存對設計存儲管理軟件的系統程序員而言是不透明的,但對應用程序員而言仍是透明的。

5.3 cache與虛存的異同

   從虛存的概率上看,主存-輔存的訪問機制與cache-主存的訪問機制是類似的。這是由cache存儲器、主存和輔存構成的三級存儲體系中的兩個層次。
   cache和主存以及主存和輔存之間分別有輔助硬件和輔助軟硬件負責地址變換與管理,以便各級存儲器能夠組成有機的三級存儲體系。cache和主存構成了系統的內存,而主存和輔存依靠輔助軟硬件的支持構成了虛擬存儲器。
   二個存儲層次有許多的相同點;
   (1)出發點相同:二者都是爲了提高存儲系統的性價比。
   (2)原理相同:都是利用了程序運行時的局部性原理把最近常用的信息塊從相對較慢而大容量的存儲器調入相對高速而小容量的存儲器。
   (3)則重點不同:cache主要解決主存與CPU的速度差異問題;而就性價比的提高而言,虛存主要是解決存儲容量問題,另外還包括存儲管理、主存分配和存儲保護等方面。
   (4)數據通路不同:CPU與cache和主存之間均有直接的通路,cache不命中時可直接訪問主存;而虛存所依賴的輔存與CPU之間不存在數據通路,當主存不命中是隻能通過調頁解決,CPU最終還是要訪問主存。
   (5)透明性不同:cache的管理完全由硬件完成,對系統程序員和應用程序員均透明;虛存管理由軟件(操作系統)和硬件共同完成,由於軟件的介入,虛存對實現存儲器的管理系統程序員不透明,而只對應用程序員透明(段式和段頁式管理對應用程序員“半透明”)。
  (6) 未命中時的損失不同:由於主存的存取時間是cache的存取時間的5-10倍,而主存的存取速度通常比輔存的存取速度快上千倍,故主存未命中時系統的性能損失要遠大於cache未命中時的損失。

5.4 虛擬機制要解決的關鍵問題

(1) 調度問題:解決哪些程序和數據應用被調入主存。
(2)地址映射問題:在訪問主存時把虛擬地址變爲主存物理地址(這一過程稱爲內地址變換);在訪問輔存時把虛地址變成輔存的物理地址(這一過程稱爲外地址變換),以便換頁。此外還要解決主存分配、存儲保護與程序再定位等問題。
(3)替換問題:決定哪些程序和數據應被調換出主存。
(4)更新問題:確保主存和輔存的一致性。

5.5 虛擬存儲器的分類

   根據虛擬存儲器中每次調換數據的形式,將虛擬存儲器分爲也三類 :1、虛擬地址空間被分爲等長大小的頁的虛擬存儲器,稱爲頁式虛擬存儲器。2、虛擬空間地址按照程序的自然分界分割成長度不一的段的虛擬存儲器稱爲段式存儲器。3、段頁式虛擬存儲器是段式虛擬存儲器和頁式虛擬存儲器的結合。實存被等分成頁。每個程序則先按邏輯結構分段,每段再按照實存的頁大小分頁,程序按頁進行調入和調出操作,可按段進行編程、保護和共享。

5.6 虛存的替換算法

   虛擬存儲器的替換算法與cache的替換算法類似,有最不經常使用算法(FIFO),近期最少使用算法(LRU)和最久未被使用算法(LFU)。
   而虛擬存儲器的替換算法與cache的替換算法不同的是:
(1)cache的替換全部靠硬件實現,而虛擬存儲器的替換有操作系統支持。
(2)虛存缺頁對系統性能的影響比cache未命中要大得多,因爲調頁需要訪問輔存,並要進行任務切換。
(3)虛存頁面替換的選擇餘地很大,屬於一個進程的頁面都可替換。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章