閱讀541 返回首頁    go 阿裏雲 go 技術社區[雲棲]


內存管理 之 存儲器硬件知識

接下來,為了順應Linux Kernel的學習,在操作係統方麵首先學習的是內存管理。首先主要講解物理內存的相關知識。本節主要講解存儲器的基礎硬件知識,下一節講解存儲器的層次結構。

 

存儲器是計算機係統的重要組成部分,它在計算機係統中的作用是存放程序和數據。存儲器不僅使計算機具有記憶功能,而且是計算機高速自動運行的基礎。

作為計算機的核心部件之一,存儲器直接關係到整個計算機係統性能的高低。如何以合理的成本搭建出容量和速度都滿足要求的存儲器係統,始終是計算機體係結構設計中的關鍵問題之一:一方麵,人們不斷采用新的高速器件來提高存儲器的存取速度,另一方麵,則通過改進其組織形式來改善存儲係統的整體性能。


1、存儲器的分類:

存儲器有存儲介質(如半導體、磁和光等)和讀寫數據的控製部件組成。不同的存儲介質采用了不同的存儲原理,而不同的讀寫控製部件則決定了數據的存取方式。


A、按存儲介質分類

*半導體存儲器:

#易失性存儲器(Volatile Memory

易失性存儲器是指需要維持電源供應,才能確保存儲內容不變化丟失的存儲器。也就是,一旦電源供應終止,易失性存儲器存儲的內容就會改變。

易失性存儲器有兩種基本類型:靜態RAMStatic RAM, SRAM)和動態RAMDynamic RAM, DRAM)。

其中,SRAM完全由晶體管實現,其基本存儲單元是雙穩態電路,存儲的信息由雙穩態電路的邏輯狀態表征。DRAM則使用晶體管和電容實現,存儲的信息由電容上的電位來表征。由於電容存在充放電過程,所以DRAM需要定期刷新。DRAM的密度高於SRAM,但由於不能在刷新操作的同時執行讀寫操作,存取速度低於SRAM

在計算機係統中,一般采用速度較快但成本較高的SRAM構成高速緩衝存儲器(Cache),而主存一般采用成本較低、速度較慢的DRAM構成。

現代計算機采用以下幾種技術來提高DRAM主存的讀寫速度:同步動態隨機存儲器(SDRAM)、雙數據速率同步動態隨機存儲器(DDR SDRAM)、接口動態隨機存儲器(DR DRAM)、帶高速緩存動態隨機存儲器(CDRAM)、虛擬通道存儲器(VCM)。

#非易失性存儲器(No-Volatile Memory

非易失性存儲器寫速度較慢,且重寫次數有限,一般用作輔助存儲器,如手機中程序和數據的存儲。主要包括ROMEPROMEEPROM)和Flash存儲器等。

*磁介質存儲器:

磁性存儲器價格低,容量大,讀寫方便,信息可長時間保存,通常用來作為輔助存儲器。由磁性材料生產的存儲器主要有磁帶、軟盤和硬盤(RAID)。

*光介質存儲器:光盤。


B、按讀寫策略分類

*按數據訪問方式分類

#並行存儲器(Parallel Memory

#串行存儲器(Serial Memory


*按數據存取順序分類

#隨機存取存儲器

隨機存取又稱為直接存取。隨機存取有兩層含義:可按地址訪問任意存儲單元;訪問存儲單元所需的時間與數據存儲的位置(地址)無關。計算機係統中CPU直接尋址的存儲器采用隨機存取方式。

#順序存取存儲器

在順序存取方式下,數據按照特定的線性或時序順序寫入存儲介質,並且可以按照完全相同的順序讀回。順序存取也稱為“先進先出”,非常適合作為緩衝存儲器。磁帶就是典型的順序存取存儲器。

#堆棧存取存儲器

采用“後進先出”的存取原則。堆棧通常一端固定(棧底),一端浮動(棧頂),壓入數據(進棧)和取出數據(出棧)的操作都是針對棧頂單元。堆棧分為向下生成和向上生成。


2、半導體存儲芯片的性能指標:

*存儲容量:

存儲芯片的容量表示該芯片能存儲多少個用二進製表示的信息位。

*存取速度:

存取時間——啟動一次存儲器操作(讀或寫)到完成該操作所需的時間。

存取周期——連續啟動兩次獨立的存儲器操作所需間隔的最小時間。

帶寬——存儲器在連續訪問時的數據吞吐量,用bps表示。

*功耗:

功耗有兩種定義方法:一種是存儲芯片中存儲單元的功耗,單位是微瓦每單元;另一種是存儲芯片的功耗,單位是毫瓦每芯片。

功耗是便攜式係統的關鍵性指標之一,它不僅表示存儲芯片所需的能量,還影響係統的散熱。功耗與速度通常成正比。

*可靠性:

可靠性指在規定時間內存儲器無故障讀寫的概率,通常用平均故障時間(MTBF)來衡量。可靠性一般指存儲器對電磁場的抗幹擾性和對溫度變化的抗幹擾性。

存儲器的其他性能指標包括工作電源電壓、工作溫度範圍、可編程存儲器的編程次數等。


3、主存儲器設計技術:

A、存儲芯片選型:存儲器擴展

B、存儲芯片的組織形式

*存儲模塊結構——存儲芯片互連

計算機係統通常需要將多個存儲芯片按照一定規則互連擴充為主存。與存儲芯片以bit為容量單位不同,主存的容量通常以字節為單位。多個容量為N*M的存儲芯片互連時通常有以下兩種策略

#M<8,則應先對存儲芯片進行位擴展,即把多個存儲芯片互連成字節模塊,以實現按字節編址。

#N<主存容量,則應進行字擴展,即把多組字節模塊互連,增加可尋址單元的數量,達到主存容量要求。


*存儲係統組織形式——存儲模塊互連

#並行存儲器

並行存儲器允許在一個存取周期內並行存取多個字,從而提高整體信息的吞吐量。

#多體交叉存儲器

 

#雙端口存儲器

雙端口存儲器具有兩組讀寫操作電路和數據輸入輸出電路。

#相聯存儲器

根據信息的特征進行存取。

 


C、地址譯碼技術

*固定地址譯碼:

#全譯碼

係統所有地址線全部都應該參與譯碼;

低段地址線應直接接在模塊上,尋址模塊內單元;

中段地址線譯碼後產生片選信號區分不同模塊;

高段地址線可用作片選信號有效的使能控製。

#部分譯碼

高段地址信號不參與譯碼,會造成地址空間的重疊及不連續。

#線譯碼

電路結構簡單,但係統必須保證參與片選的地址線不能同時為有效電平;

同部分譯碼法一樣,因為有地址信號不參與譯碼,也存在地址重疊及不連續的問題。

*可變地址譯碼。


D、存儲器接口設計

*存儲總線

 

數據線:如果考慮總線負載問題,可加接數據收發器。

讀寫控製線:考慮有效電平。

地址線:字選+片選。

字選:係統地址總線中的低位地址線直接與各存儲芯片的地址線連接。所需低位地址線的數目N與存儲芯片容量L的關係:L2N

片選:係統地址總線中餘下的高位地址線經譯碼後用做不同存儲芯片的片選。通常IO//M信號也參與片選譯碼。

*總線隔離:驅動器和緩衝器,輸出端增強驅動能力,在輸入端減輕負載。

最後更新:2017-04-03 05:39:25

  上一篇:go apache 不能訪問 cgi-bin目錄下的文件
  下一篇:go eclipse maven plugin 插件 安裝 和 配置