CPU
CPU負責執行指令,是所有計算機硬件中速度最快的。一般用時鍾周期(時鍾頻率)來衡量CPU的性能。
時鍾周期
CPU時鍾周期是操作的最小時間單位,值是主頻的倒數,現代計算機的主頻可以達到幾GHZ。
指令周期是取出並執行一個指令的時間單位,一個指令需要多個CPU操作來執行,一般來說一個指令周期至少包含2個CPU時鍾周期(取指+執行)。
同一個硬件架構下不同CPU的時鍾周期越高,相同時間內能夠執行的指令就越多,性能就越好;但在不同的硬件架構下只比較CPU主頻大小意義不大,處理器結構不同,指令集就不同,相同意義的指令所需的CPU時鍾周期也就不同。
除了計算機架構不同外,在比較計算機整體性能的時候還需要考慮很多因素,例如前端總線("front side bus",FSB),內存的時鍾周期,CPU通用寄存器的數據寬度和機器的一級、二級緩存等。
寄存器
寄存器是CPU的內部組成單元,是CPU運算時取指令和數據的地方,速度很快,可以理解為對於CPU來說讀/寫寄存器是不需要時間的,或者說如果只是操作寄存器(比如類似mov BX,AX之類的操作),那么一秒鍾執行的指令個數理論上說就等於主頻,因為寄存器是CPU的一部分。
寄存器可以用來暫存指令、數據和地址。在CPU中,通常有通用寄存器,如指令寄存器IR;特殊功能寄存器,如程序計數器PC、sp等。
高速緩存
高速緩存(cache)通常分為L1,L2,L3三級,速度遞減,容量遞增,是為了彌補CPU與內存之間運算速度的差異而設置的硬件。
作用
Cache一詞來源於1967年的一篇電子工程期刊論文。其作者將法語詞“cache”賦予“safekeeping storage”的涵義,用於電腦工程領域。
當CPU處理數據時,它會先到Cache中去尋找,如果數據因之前的操作已經讀取而被暫存其中,就不需要再從主內存中讀取數據——由於CPU的運行速度一般比主內存的讀取速度快,主存時鍾周期(訪問主存儲器所需要的時間)為數個CPU時鍾周期。因此若要訪問主內存的話,就必須等待數個CPU周期從而造成浪費。L1緩存的速度可以在2-4個CPU時鍾頻率內完成,速度很快。
Linux下可以通過lscpu
命令來查看CPU的信息,其中包括cache層次。
原理
提供“緩存”的目的是為了讓數據訪問的速度適應CPU的處理速度。
通常它不像系統主存那樣使用DRAM技術,而使用昂貴但較快速的SRAM技術。其基於的原理是內存中“程序執行與數據訪問的局域性行為”,即一定程序執行時間和空間內,被訪問的代碼集中於一部分。為了充分發揮緩存的作用,不僅依靠“暫存剛剛訪問過的數據”,還要使用硬件實現的指令預測與數據預取技術——盡可能把將要使用的數據預先從內存中取到緩存里。
數據結構
高速緩存的數據結構類似於拉鏈式的散列表,key是內存地址,值是內存數據的副本或即將寫入內存的數據。

緩存條目中又包含三個屬性:
其中tag可以理解為數據的內存地址,Data Block是內存數據,Flag用於標識數據狀態。
歷史
CPU的緩存曾經是用在超級計算機上的一種高級技術,不過現今個人電腦上使用的微處理器都將L1緩存集成在CPU芯片內部,用於存儲數據緩存和指令緩存;而L2緩存曾經被放在CPU外部(主板或者CPU接口卡上),但是現在已經成為CPU內部的標准組件;更昂貴的CPU會配備比L2緩存還要大的L3緩存。
概念的擴展
如今緩存的概念已被擴充,不僅在CPU和主內存之間有Cache,而且在內存和硬盤之間也有Cache(磁盤緩存),乃至在硬盤與網絡之間也有某種意義上的Cache──稱為Internet臨時文件夾或網絡內容緩存等。凡是位於速度相差較大的兩種硬件之間,用於協調兩者數據傳輸速度差異的結構,均可稱之為Cache。
計算機的存儲體系金字塔

https://zh.wikipedia.org/wiki/%E6%97%B6%E9%92%9F%E9%A2%91%E7%8E%87
https://blog.csdn.net/hellojoy/article/details/54744231
《Java多線程編程實戰指南-核心篇》