簡要總結計算機各類延時(寄存器、cache、內存、磁盤)

 

Register寄存器緩存

寄存器是中央處理器的組成部份,可用來暫存指令、數據和位址。一般有通用寄存器,如指令寄存器IR、程序計數器(PC)、累加器(ACC)、堆棧指針寄存器(SP)等,另外還有狀態寄存器(標記狀態Z、N、V、C)。寄存器最靠近CPU,隨取隨用,速度最快。優化

 

Cache操作系統

即高速緩衝存儲器,位於CPU與內存之間,容量小但速度快。因爲CPU快而內存慢,CPU不存在直接讀/寫內存的狀況,每次讀/寫內存都要訪問Cache。Cache Line是cache與內存同步的最小單位,典型的虛擬內存頁面大小爲4K,Cache line爲32或64字節。Cache中通常保存着CPU剛用過或循環使用的部分數據,當CPU再次使用該部分數據時可從Cache中直接調用,這樣就抹平了CPU與內存的速度差。Cache又分爲L一、L二、L3(L一、L2通常集成在CPU上)。翻譯

理論上L1有着跟寄存器相同的速度,但L1工做在寫經過(write-through)模式下時,須要加鎖用來同步cache和內存的內容,這段期間L1不能被訪問,因此L1就沒寄存器快。L二、L3一樣須要加鎖,而且L2比L1慢,L3比L2慢。指針

cache下還有一個TLB,TLB是一個內存管理單元用於改進虛擬地址到物理地址轉換速度的緩存。code

 

RAM(主要針對DRAM)blog

即內存,其做用是用於暫存CPU的運算數據,以及與硬盤等外部存儲器交換的數據。內存的一個存儲週期是從存儲器收到有效地址(EA)開始,通過地址譯碼、驅動,直到被訪問的存儲單元被讀出/寫入爲止。內存

簡單介紹下CPU訪問內存的流程:同步

1. 找到數據(通常爲操做數)地址(或地址的地址)。(地址通常放在通用寄存器內)
2. 將地址送往內存管理單元(MMU),由MMU將虛擬的內存地址翻譯成實際的物理地址。
3. 將物理地址送往內存控制器,由控制器進行譯碼找到對應的存儲體。
4. 從對應的存儲體讀取數據送回給控制器,最後再送回CPU。

能夠看出內存的工做流程比cache多出許多,每一步都會產生延遲。而且當外圍設備(好比磁盤)經過DMA控制器與內存進行數據傳輸時(走數據總線),會與上面的CPU訪問內存發生衝突,此時CPU和DMA就會輪流挪用內存週期,這樣CPU訪問內存的速度就更慢了。工作流

HardDisk

又稱硬盤驅動器,常見的有磁性旋起色械盤和基於閃存的固態硬盤SSD,這裏主要講機械盤,當進行數據存取時,主要的速度影響來自於磁頭的尋道時間和盤片的旋轉時間,一般須要花費數毫秒的時間。若是是順序I/O還好,若是是隨機I/O,速度將很慢。雖然磁盤內部、操做系統及應用程序都對磁盤進行了緩存優化,但速度仍是遠遠不及內存。

下面是一張磁盤調用棧圖(引用Brendan Gregg)

最後以一張圖量化系統的各類延時時間(部分數據引用Brendan Gregg)

相關文章
相關標籤/搜索