標籤:
1.幾種儲存技術
- 隨機訪問儲存空間RAM,RAM又分為兩類:靜態SRAM和動態DRAM。
- 靜態SRAM特點:容量較小,速度較之動態DRAM要快很多,故而價格也較高。一般用作CPU與記憶體的緩衝。
- 動態DRAM特點:容量較大,速度比SRAM慢,價格相對較低。一般用作系統記憶體。
- 磁碟儲存,存檔屬於外部I/O裝置,其特點是儲存容量大,但讀取速度更慢,價格也更加便宜。一般而言,從磁碟上讀資訊的時間為毫秒級,從DRAM讀比從磁碟讀快10萬倍,從SRAM讀比從磁碟讀快100萬倍。
- 因為磁碟的構造是一個圓盤,盤上分布著一條條磁軌(不同半徑就有不同的磁軌),每次訪問都要找到相應的磁軌,然後磁碟旋轉到對應的啟示位置,故而,磁碟扇區訪問時間=尋道時間+旋轉時間+傳輸時間。
2.局部性
在程式中,程式傾向於引用鄰近於其他最近引用過的資料項目的資料項目,或者就是最近引用的資料項目本身,這種傾向,稱為局部性原理。打個比方,在如下一個二維數組的迴圈中,迴圈1的局部性就比迴圈2的更優秀。
/*有良好局部性的程式*/
int loop1( int array[M][N] ){ int i = 0,j = 0,sum = 0; for( i = 0;i < M;i++ ){ for( j = 0;j < N;j++ ) sum += a[i][j]; return sum;}
/*局部性很差的程式*/
int loop2( int array[M][N] ){ int i = 0,j = 0,sum = 0; for( i = 0;i < M;i++ ){ for( j = 0;j < N;j++ ) sum += a[j][i]; return sum;}
程式局部性可以總結為以下:
- 重複引用一個變數的程式有良好的時間局部性。
- 對於具有步長為k的參考模式的程式,步長越小,空間局部性越好。相對得,在儲存空間中以大步長跳來跳去的程式空間局部性會很差。
- 對於取指令來說,迴圈有好的時間和空間局部性。迴圈體越小,迴圈迭代次數越多,局部性越好。
3.快取儲存空間
隨著CPU與主存之間的速度差距不見增加,故而早期的系統設計者被迫在CPU寄存器和主存之間插入了一個小的SRAM告訴緩衝儲存空間。而後來隨著系統內部各儲存空間結構之間速度差距的不斷增大,緩衝這項技術也被用到了各儲存空間結構之間,比如磁碟和記憶體。
緩衝是為了減少各儲存空間階層之間的速度差異而存在的,其作用就是在訪問更低級的儲存空間結構的時候,直接低層次儲存空間結構的一個較大的塊存放到緩衝儲存空間中。這樣,下次要訪問之前資料的鄰近資料時,就能快速得從緩衝儲存空間中得到資料。要編寫局部性良好的程式也是基於這個原因。
儲存空間階層 --《深入理解電腦系統》第六章讀書筆記