處理器架構 (六.1) armv4v5v6 架構參考手冊(2.1) 存儲金字塔及速度

最新存儲金字塔架構

在這裏插入圖片描述

存儲金字塔v1及速度

Instruction cycle timings 在 TRM 中 有表述
Size of caches/TLBs	在 TRM 中 有表述

內存金字塔是按照 Ln 劃分的
一開始沒有 cache
L0 寄存器			訪問速度 	xns // 比如 ADD{<cond>}{S} <Rd>, <Rn>, <shifter_operand> 該指令週期爲1個時鐘週期,如果主頻1Ghz,可以1ns就可以搞定.
L1 Main memory 		訪問速度	100ns

對於Cortex M0 M3 M4的我知道可以在其《技術參考手冊》>  程序員模型 >指令集摘要裏面查看,但是到了M7,他告訴我去ARM-V7-M的手冊中找

爲了給大家一個直觀的印象,我們把CPU的一個時鐘週期看作一秒。
那麼,從L0 register 讀信息就是1s
從L1 cache讀取信息就好像是拿起桌上的一張草稿紙(3秒);
從L2 cache讀取信息則是從身邊的書架上取出一本書(14秒);
而從主存中讀取信息則相當於走到辦公樓下去買個零食(4分鐘).


L1 L2 L3 cache 就是 On-chip-memory ,  也就是 on-chip-ram
https://www.zhihu.com/question/20075426

DRAM DDR DDR3 DDR4 DDR5

存儲金字塔v2及速度

以上很多資料裏面對 write buffer 的描述 是 緩解 對 磁盤的 衝擊,但是 arm核心架構中提到的 write buffer 是 環節 對 主存的衝擊.

  • 實際情況
CPU register的速度一般小於1ns,主存的速度一般是65ns左右。速度差異近百倍。
因此,上面舉例的3個步驟中,步驟1和步驟3實際上速度很慢。

當CPU試圖從主存中load/store 操作時,由於主存的速度限制,CPU不得不等待這漫長的65ns時間。
  • 願景與困難
如果我們可以提升主存的速度,那麼系統將會獲得很大的性能提升。


如今的DDR存儲設備,動不動就是幾個GB,容量很大。
如果我們採用更快材料製作更快速度的主存,並且擁有幾乎差不多的容量。
其成本將會大幅度上升。我們試圖提升主存的速度和容量,又期望其成本很低,這就有點難爲人了。
  • 解決方案

因此,我們有一種折中的方法,那就是製作一塊速度極快但是容量極小的存儲設備。那麼其成本也不會太高。這塊存儲設備我們稱之爲cache memory。

cache 並不是說 等待 cpu 獲取主存數據時纔去獲取內存數據,而是根據一些策略去獲取主存數據.

相當於 cache 一直從 主存拿數據與指令,然後cpu 一直從cache 拿數據與指令.

然後實際性能完全能夠

  • 解決方案效果

Cache 的命中率除了與 Cache 的容量有關外,還與地址映象的方式有關。

目前, Cache 存儲器容量主要有 256KB 和 512KB 等。這些大容量的 Cache

存儲器,使 CPU 訪問 Cache 的命中率高達 90 %,大大提高了 CPU 訪問

數據的速度,提高了系統的性能。

  • 解決方案優化
register 和 主存中間 加一層cache ,命中率可達90%,形成了以下金字塔架構
	register
	L1 cache
	Memory
	
在  cache 和 主存中間 再加一層cache ,命中率可達98%,形成了以下金字塔架構
	register
	L1 cache
	L2 cache
	Memory

現實情況

main memory是磁盤的緩存,cache是main memory的緩存,CPU寄存器是對cache的緩存。
我們讀數據的時候,如果需要知道其位置,則可以從 
	register ,L1cache ,L2cache, ... ,main Memory, HardDisk
我們寫數據的時候,如果需要知道其位置,則可以從 
	register ,write_buffer ,cache,main Memory, HardDisk
發佈了283 篇原創文章 · 獲贊 41 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章