# CPU Caches in the Big Picture contributed by <`krimson8`, `aben20807`, `allenchen8210`, `dange0`, `flawless0714`> ###### tags: `sysprog2018` Cache 提供了加速 CPU 存取記憶體的功能,但隨著 CPU 變成多核、多執行緒,cache 又分成 CPU 共享的 cache 和各自獨立的 cache ,使 cache 的資料存取不再這麼直觀,也遇到了一些問題。 ## Minimum Cache Configuration  為早期系統採用的 cache 架構,在 CPU core 與 main memory 之間插入 cache,所有的讀取與寫入都需要通過 cache。 ## Processor with Level 3 Cache  雖然 CPU 架構是採用范紐曼型架構(Von Neumann architecture),但是將 instruction 與 data 分離可以有效的提升高速緩存的效率,因此於 L1 cache 會區分為 L1i 與 L1d。詳見:哈佛架構(Harvard architecture)。 隨著系統越來越複雜,cache 的大小漸漸的不夠用,然而增加 L1 cache 的大小卻會帶來巨大的成本,因此採用新增不同大小、不同速度的 cache 解決 cache 不夠用的問題。 值得注意的是,雖然上圖中 L3 cache 看似 CPU 唯一進入 bus 的入口。但是實際上 CPU 在與 main memory 傳輸資料流時,並不需要經過更高級別的 cache。 補充範例:假設某資料在 L2,沒有在 L1。則 CPU 在 L1 miss 時,CPU 會去 L2 找並直接拿來使用,不需要先把資料搬到 L1 後 CPU 再透過 L1 獲得該資料。 ## Multi processor, multi-core, multi-thread  除此之外,現代處理器往往附有多個核心,且一個核心可能擁有多個執行緒。處理器的物理核心擁有獨立的硬體資源,大部分早期的多核心處理器甚至擁有獨立的 L2 Cache 而沒有 L3 Cache。比方說,處理器核心都可以獨立運作,除了當需要使用網絡連結這一類資源的時候。而執行緒則幾乎是共用 CPU 上的所有資源。Intel 的處理器上有一些獨立的暫存器供執行緒使用。一個完整的現代處理器的架構就如上圖所示。 在進入多核心多執行緒,cache 的管理就更為複雜了。 上圖為一個雙處理器,雙核心,雙執行緒之範例,可以觀察的以下特性: - 一個核心(深灰色框框)內的執行緒(橘色)共享 L1 cache(淺綠色) - 同一個處理器內(淺灰色框框)內的核心共用 L2、L3 cache(綠色) - 不同處理器間的 cache 是完全獨立
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up