1、存儲技術編程
(一)隨機訪問存儲器緩存
隨機訪問寄存器(RAM)分爲靜態隨機訪問寄存器(SRAM)和動態隨機訪問寄存器(DRAM)。靜態RAM能夠做爲高速緩存寄存器,動態RAM能夠用做主存以及圖形系統的幀緩衝區。靜態RAM將每個位存儲在一個雙穩態的存儲器單元裏,構成靜態RAM 的電路能夠無限期的保持在兩個不一樣的電壓配置或狀態之一。動態RAM將每個位存儲爲對電容的充電,因此動態RAM要比靜態RAM對干擾的敏感度更高。構成動態RAM的電路被幹擾後就不會恢復了。性能
1 傳統的DRAMspa
常規DRAM芯片中的單元被分紅了d個超單位(supercall),每一個超單位都是由w個DRAM單元組成的。一個d*w的DRAM總共存儲了dw位信息。超單元被組織成一個r行r列的長方形矩陣列,rc=d。每一個DRAM被鏈接到存儲控制器這個電路,該電路能一次傳w位到每一個DRAM芯片或一次從每一個DRAM芯片傳出w位。下圖是一個128位16*8的DRAM芯片的高級視圖。翻譯
要讀取圖中的超單元(2,1),存儲控制器將把2發送出去,DRAM的響應是將2行的整個內容都拷貝到內部緩衝區。接下來,存儲控制器將發送1,DRAM的響應是從緩衝區中拷貝出單元(2,1)中的八位並將它們發送到存儲控制器。設計
2 存儲器模塊3d
DRAM 芯片包裝在存儲器模塊中,它是直接插到主板的擴展槽上的,常見的包裝包括168個引腳的雙列直插存儲器模塊,其以64位爲塊傳送數據到存儲控制器和從該控制器中傳出數據,還包括72個引腳的單列直插存儲器模塊,它是以32位爲塊傳送數據的。視頻
3加強的DRAM對象
快頁模式DRAM(FPM DRAM)、擴展數據輸出DRAM(EDO DRAM)、雙倍數據速率同步DRAM (DDR SDRAM)、Rambus DRAM(RDRAM)、視頻RAMblog
4 非易失性存儲器
非易失性存儲器不一樣於DRAM與SRAM,它在斷電後也仍然能夠保存它的信息。ROM和閃存就是非易失性存儲器。
4.1 ROM以可以被重編程的次數和它們進行重編程所用的機制來區分的
可編程ROM (PROM):只能被編程一次。
可擦寫可編程ROM(EPROM):EPROM可以被擦寫和重編程的次數的數量級能夠達到1000次。
電子可擦除PROM(EEPROM):EEPROM可以被擦寫和重編程的次數的數量級能夠達到100000次。
4.2
閃存:閃存是基於EEPROM的非易失性存儲器,是一種較爲廣泛的非易失性存儲器。
5 訪問主存
數據流經過稱爲總線的共享電子電路在處理器和DRAM主存之間來來回回。每次CPU與主存之間的數據都是由總線事務來完成的,總線事務包括讀事務和寫事務。
(二)磁盤存儲
磁盤是用來保存大量數據的存儲設備,能比基於RAM的存儲器存更多的數據,可是讀取數據的速度卻遠遠低於基於RAM的存儲器。
1 磁盤構造
磁盤是由盤片構成的。每一個盤片上是由一組成爲磁道的同心圓組成的。每一個磁道被劃分爲一組扇區。扇區之間存在間隙。
2 磁盤容量
磁盤容量是由如下因素決定的:記錄密度、磁道密度、面密度
3磁盤操做
傳動臂經過尋道操做將讀寫頭定位到相應的磁道上。磁盤以扇區大小的塊來訪問數據,對於扇區的訪問時間有三個部分:尋道時間、旋轉時間和傳送時間。
4邏輯磁盤塊
現代磁盤構造呈現爲一個簡單的視圖,一個B個扇區大小的邏輯塊的序列,編號爲0,1......,B-1.磁盤中有一個小的硬件/固件設備,稱爲磁盤控制器,維護着邏輯塊號和實際磁盤扇區的映射關係。
5鏈接到I/O設備
像圖形卡、監視器、鼠標、鍵盤和磁盤這樣的I/O設備,都是經過I/O總線鏈接到CPU和主存的。
6訪問磁盤
CPU使用一種稱爲存儲器映射I/O的技術向I/O設備發出命令。在使用存儲器映射I/O的系統中,地址空間有一塊地址是爲與I/O設備通訊保留的,每一個這樣的地址稱爲一個I/O端口。當一個設備鏈接到總線時,它與一個或多個端口相關聯。
(三)固態硬盤
固態硬盤(SSD)是一種基於閃存的存儲技術。一個SSD包由一個或多個閃存芯片和閃存翻譯層組成,閃存芯片替代傳統旋轉磁盤中的機械驅動器,而閃存翻譯是一個硬件/固件設備,扮演與磁盤控制器相同的角色,將對邏輯塊的請求翻譯成對底層物理設備的訪問。
二 局部性
一個計算機程序一般具備良好的局部性,也就是說,它們傾向於引用於其餘最近引用過的數據項的數據項,或者最近引用過的數據項自己。局部性一般有兩種不一樣的形式:時間局部性和空間局部性。
對程序數據引用的局部性
一個連續向量中,每隔k個元素進行訪問,就被稱爲步長爲k的引用模式。步長爲的引用模式是程序中空間局部性常見和重要的來源。通常而言,隨着步長的增長,空間局部性降低。
三 存儲器層次結構
全部的現代計算機系統中都使用存儲器結構層次來使得軟件和硬件互相補充。
通常而言,從高層往底層走,存儲設備變得更慢、更便宜和更大。
(一)存儲器層次結構中的緩存
通常而言,高速緩存是一個小而快速的存儲設備,它做爲存儲在更大也更慢的存儲設備中的數據對象的緩衝區域。使用高速緩存的過程稱爲緩存。
(二)存儲器層次結構概念小結
歸納來講,基於緩存的存儲器層次結構行之有效,是由於較慢的存儲設備比較快的存儲設備更便宜,還由於程序每每展示局部性:利用時間局部性和利用空間局部性。
四 高速緩存存儲器
早期計算機系統的存儲結構只有三層:CPU寄存器、DRAM主存儲器和磁盤存儲。不過,因爲CPU和主存之間逐漸增大的距離,系統設計者被迫在CPU寄存器文件和主存之間插入了一個小的SRAM高速緩存存儲器,稱爲L1高速緩存。隨着CPU和主存之間的性能差距不斷增大,系統設計者在L1高速緩存更大的高速緩存,稱爲L2高速緩存。有些現代計算機還包括一個更大的高速緩存,稱爲L3緩存。
(一)通用的高速緩存存儲器結構
通常而言,高速緩存的結構能夠用元組(S,E,B,m)來描述。高速緩存的大小(或容量)C指的是全部塊的大小的和。標記位和有效位不包括在內。所以,C=S*E*B。
(二)直接映射高速緩存
根據E(每一個組的高速緩存行數)高速緩存被分爲不一樣的類。每一個組只有一行(E=1)的高速緩存稱爲直接映射高速緩存。
(三)組相聯高速緩存
直接映射高速緩存中衝突不命中形成的問題是源於每一個組只有一行這個限制,組相聯高速緩存放鬆了這條限制,因此每一個組都保存多餘一個的高速緩存行。
(四)全相聯高速緩存
一個全相聯高速緩存是由一個包含全部高速緩存行的組。