簡要總結計算機各種延時(寄存器、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又分爲L1、L2、L3(L1、L2一般集成在CPU上)。

理論上L1有着跟寄存器相同的速度,但L1工作在寫通過(write-through)模式下時,需要加鎖用來同步cache和內存的內容,這段期間L1不能被訪問,所以L1就沒寄存器快。L2、L3同樣需要加鎖,並且L2比L1慢,L3比L2慢。

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

 

RAM(主要針對DRAM)

即內存,其作用是用於暫存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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章