深入理解计算机系统第四版_深入理解计算机系统之存储器层次结构
我的計算機模型是這樣的:
CPU執(zhí)行指令,內(nèi)存猶如一個巨大的字節(jié)數(shù)組,存儲著指令和數(shù)據(jù),硬盤保存著各種程序與程序用到的數(shù)據(jù)。I/O完成輸入輸出的功能。在本文中我們拋開I/O,談一談關于CPU,內(nèi)存,硬盤的故事。
CPU包含了許多寄存器,用于保存臨時使用的數(shù)據(jù)和指令。這是CPU可以訪問到的最快的存儲器設備,CPU可以在一個時鐘周期內(nèi)訪問到它們。如果程序員理解了寄存器和內(nèi)存是如何合作完成任務的,也就明白了馮諾依曼計算機的本質(zhì)。舉例來說:
int fun(void) {int a;int b;int c;c=a+b;return c; }匯編代碼
fun:pushl %ebp movl %ebp,%espsubl $16,%espmovl -8(%ebp),%eaxaddl -12(%ebp),%eaxmovl %eax,-4(%ebp)leaveret變量a占用-8(%ebp),變量b占用-12(%ebp),變量c占用-4(%ebp)。
movl -8(%ebp),%eax將變量b的值放入寄存器%eax中。
addl -12(%ebp),%eax將%eax的值加上變量a的值。
movl %eax,-4(%ebp)完成c=a+b的功能。
可以看出,程序?qū)?nèi)存的值放入寄存器,進行運算,完成計算任務。其中,寄存器與內(nèi)存親密接觸,完成計算任務。
作為存儲設備CPU寄存器之下并不是內(nèi)存,而是多級高速緩存。最多可以分為三級:L1高速緩存,L2高速緩存,L3高速緩存。它們是基于SRAM技術構(gòu)成的高速緩存存儲器,CPU可以在幾個時鐘周期中訪問它們。L1快于L2,L2快于L3。高速緩存是不可編程的,是CPU設計者用硬件構(gòu)造出來的。它們按照固定的算法完成緩存內(nèi)存數(shù)據(jù)的任務。所以我在計算機抽象模型中忽略了它。它的基本原理是:根據(jù)要緩存的數(shù)據(jù)的地址讀出一系列與該地址相同或是臨近的的數(shù)據(jù)緩存起來。當再次訪問或訪問臨近的數(shù)據(jù)時,緩存命中,CPU直接讀取數(shù)據(jù)。如果讀取其他地址,緩存不命中,CPU從下一層存儲器中讀取并緩存數(shù)據(jù),如果下一層也沒有就用下下一層,直到讀取到數(shù)據(jù)。
為什么要用高速緩存存儲器?因為程序有局部性原理。
局部性通常分為兩種不同的形式:時間局部性和空間局部性。在一個具有良好的時間局部性的程序中,被引用過一次的存儲器位置很可能在不遠的將來被多次引用。在一個具有良好的空間局部性的程序中,如果一個存儲器位置被應用了一次,那么程序很可能在不遠的將來引用附近的一個存儲器位置。所以如果數(shù)據(jù)或者指令被緩存高速緩存器,那么程序運行的速度將加快許多倍。
在說道內(nèi)存,內(nèi)存由動態(tài)RAM構(gòu)成。內(nèi)存可以看成是一個巨大的字節(jié)數(shù)組,根據(jù)地址可以訪問到內(nèi)存字節(jié)。而內(nèi)存的每一個位都是由一個電容和一個訪問晶體管組成。但它很容易漏電,使得DRAM單元在10-100毫秒時間內(nèi)失去電荷。所以存儲器必須周期性的通過讀出然后重新刷新存儲器的每個位。DRAM芯片包裝在存儲器模塊中,他是插到主板的擴展槽中的。常見的包裝包括168個引腳的雙列直插存儲器模塊,它以64位為塊傳送數(shù)據(jù)到存儲器控制器和從存儲器控制器傳出數(shù)據(jù)。還包括72個引腳的單列直插式存儲器模塊,它以32位為塊傳送數(shù)據(jù),增強型DRM有:快頁模型DRAM,擴展數(shù)據(jù)輸出DRAM,同步DRAM,雙倍速率同步DRAM,視頻RAM。
內(nèi)存之下是硬盤。如果程序需要的數(shù)據(jù)是存儲在CPU寄存器的,那么1個周期便能訪問到它們。如果存儲在高速緩存中,需要1-30個周期。如果存儲在主存中需要50-300個周期。而如果存儲在磁盤中,需要大約幾千萬個周期。是的,磁盤就是這么慢。所以linux內(nèi)核中構(gòu)建了一層高速緩存器。使用內(nèi)存來緩存磁盤的內(nèi)容。內(nèi)核以4KB為一個塊,使用散列表的方式根據(jù)磁盤的塊號散列在內(nèi)存中。
磁盤由盤片構(gòu)成,每個盤片由兩面或稱為表面,表面覆蓋著磁性記錄材料。磁盤通常包含一個或者多個這樣的盤片,并封裝在一個密封的容器內(nèi)。
磁盤表面由一組稱為磁道的同心圓組成。每個磁盤被劃分為一組扇區(qū)。所有盤片表面上到主軸中心的距離相等的磁道稱為柱面。
固態(tài)硬盤是一種基于閃存的存儲技術,在某些情況下是傳統(tǒng)旋轉(zhuǎn)磁盤的極有吸引力的替代品。
總結(jié)
以上是生活随笔為你收集整理的深入理解计算机系统第四版_深入理解计算机系统之存储器层次结构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: access设置0字段为null是因为类
- 下一篇: python中符号输入_Python基础