接着上次簡單的介紹,讓我們來繼續討論這些“存儲器們”吧。
在上一篇中我提到了傳統的DRAM,簡單描述了每個DRAM芯片與存儲控制器的“交互”過程。下面,我們來看一下多個DRAM芯片是怎樣集合在一起工作的。
存儲器模塊:
DRAM 芯片包裝在存儲器模塊中,這個存儲器模塊是插到主板的擴展槽上的。常見的包裝包括168個引腳的雙列直插存儲器模塊(DIMM)
,它以64位爲塊傳送數據到存儲控制器和從存儲控制器傳出數據,還包括72個引腳的單列直插存儲器模塊(SIMM)
,它以32位爲塊兒傳送數據。
爲了展示一個存儲器模塊的基本思想,用一個 8個64Mbit的DRAM芯片
的模塊做示例,我簡單做了一個過程圖,如下:
在這裏,每個超單元存儲主存的一個字節,而用相應超單元爲(i,j)的8個超單元來表示主存中字節地址A處的64位雙字。
要取出存儲器地址A處的一個64位雙字,存儲控制器
將A轉換成一個超單元地址(i,j),並將它發送到存儲器模塊,然後存儲器模塊
再將i和j廣播到每個DRAM
。作爲響應,每個DRAM輸出它的(i,j)超單元的8位內容。模塊中的電路收集這些輸出,並把它們合成一個64位雙字,再返回給存儲控制器。
另外,通過將多個存儲器模塊連接到存儲控制器,能夠聚合主存。在這種情況下,當控制器收到一個地址A時,控制器先選擇包含A的模塊k,將A轉換成它的(i,j)形式,並將(i,j)發送到模塊k。
下面,我們來看幾個增強的DRAM:
快頁模式 DRAM(FPM DRAM):
傳統的DRAM將超單元的一整行拷貝到它的內部行緩衝區,使用一個然後丟棄其餘的。而FPM DRAM允許對同一行連續地訪問,可以直接地從緩衝區得到服務。例如,要從傳統DRAM的同一行中讀取四個超單元,則存儲控制器必須重複發四個RAS/CAS請求,即使行地址i在每個情況中都是一樣的。而要從一個FPM DRAM的同一行讀取四個超單元,存儲器發送第一個RAS/CAS,後面跟三個CAS請求。也就是一個RAS四個CAS。第一個超單元和傳統的一樣,剩下的三個,只需要根據CAS在行緩衝區獲得就行了。顯然獲得剩下的三個超單元比獲取第一個快。
同步DRAM(S DRAM):
像傳統DRAM、FPM DRAM 等都是異步的DRAM,相之下,S DRAM 能夠比它們更快地輸出超單元的內容。
好了,對隨機訪問存儲器(RAM)的簡單介紹我們就先進行到這裏,下面我們來看一些其他的存儲器:
非易失性存儲器:
如果斷電,DRAM和SRAM會丟失它們的信息,從這個意義上說,它們是易失的。而非易失性存儲器是即使在斷電後,也仍然保存着它的信息。現在有很多種非易失性存儲器。
我們先來看一種常見的非易失性存儲器 ROM:
雖然ROM中有的類型既可以讀也可以寫,但是它們整體上都稱爲只讀存儲器。ROM是以它們能夠被重寫的次數和對它們重寫所用的機制來區分的。
常見的ROM 有以下幾種:
PROM(可編程ROM):
只能被寫一次,PROM的每個存儲器單元有一種熔絲,它只能用高電流熔斷一次。
可擦可寫ROM(EPROM):
有一個透明的石英窗口,允許光達到存儲單元。紫外線光照射過窗口,EPROM單元就被清零。對EPROM編程是通過使用一種把1寫入EPROM的特殊設備來完成的。EPROM能夠被擦除和重編的次數的數量級可以達到1000次。
EEPROM(電子可擦除ROM):能夠被編程的次數達到100000。
存儲在ROM設備中的程序通常稱爲固件。當一個計算機系統通電後,它會運行存儲在ROM中的固件。PC上的BIOS(基本輸入/輸出系統)的例程就在固件中。還有一些複雜設備,如圖形卡和驅動控制器,也依賴固件翻譯來自CPU的I/O請求。
總線:
下面我們來先引入一個總線
的概念,首先,總線到底是什麼?它在計算機系統中又扮演着一個什麼樣的角色呢?
總線 是貫穿整個系統中的一組電子管道,它攜帶信息字節並負責在各個部件間傳遞。也可以說,總線是一組並行的導線,能攜帶地址、數據和控制信號。通常總線被設計成傳送定長的字節塊(字)。每個I/O設備都通過一個控制器或適配器與總線相連。
控制器:
控制器是置於I/O設備本身的或者系統的主印製電路板(通常稱爲主板)上的芯片組。
適配器:
適配器是一塊插在主板插槽上的卡。
控制器和適配器的功能
都是在I/O總線和I/O設備之間傳遞信息。
既然提到這裏,就順便介紹一下主存吧。
主存:主存是一個臨時存儲設備,在處理器執行程序時,用來存放程序和程序處理的數據。從物理上來說,主存是由一組動態隨機存儲器(DRAM)
芯片組成。
訪問主存:
我們先來看一個簡單的主存訪問模型圖:
數據流通過總線的共享電子電路在處理器和DRAM主存之間來來回回。
從主存傳送數據到CPU的過程叫做讀事務,從CPU傳送數據到主存的過程叫做寫事務。着一系列傳送數據的步驟稱爲總線事務
。
系統總線:連接CPU和I/O橋。
存儲器總線:連接I/O橋和主存。
I/O橋:將系統總線的電子信號翻譯成存儲器總線的電子信號 和
將存儲器總線信號翻譯成系統總線信號。
後面我們將會介紹,I/O橋也將系統總線和存儲器總線連接到I/O總線。像磁盤和圖形卡這樣的I/O設備共享I/O總線。
下面,我們來看一個典型的連接CPU和主存的總線結構圖:
根據這個簡單的模型圖,我們來簡單描述一下讀事務和寫事務的大致過程:
讀事務:
當要從內存中讀數據到CPU時,假設這裏的地址是A,那麼讀事務的目標就是把A的內容加載到寄存器文件中。
可簡單分爲四個步驟:
CPU把地址放到系統總線,I/O橋將信號傳遞到存儲器總線。
主存感受到存儲器總線上的信號,從存儲器總線上讀出地址A,從DRAM中的地址A處
(存儲控制器地址A轉換成超單元地址)取出數據字,放到存儲器總線上。
I/O橋將存儲器總信號翻譯成系統總信號傳遞給系統總線。
CPU感覺到系統總線上的數據,從總線上讀出數據,並拷貝到寄存器文件中。
寫事務:
和上面的讀相逆,這裏,寄存器文件的內容被寫到地址A,CPU發起寫事務。
首先,CPU將地址放到系統總線上。傳遞給存儲器總線。
存儲器從存儲器總線讀出地址,並等待數據到達。
CPU將數據字拷貝到系統總線,傳遞給存儲器總線。
主存從存儲器總線讀出數據字,並將這些位存儲到DRAM中。
好了,這裏插入的一點關於硬件過程的描述就先到這裏。
下一次,我們來具體詳細地討論磁盤的基本構造以及存儲方式。