ARMV8 datasheet學習筆記4:AArch64系統級體系結構之存儲模型


1.前言

關於存儲系統體系架構,可以概述如下:

存儲系統體系結構的形式

VMSA

存儲屬性

 

2. 存儲系統體系結構

2.1.    地址空間

指令地址空間溢出

指令地址計算((address_of_current_instruction) + (size_of_executed_instruction))超過0xFFFF FFFF FFFF FFFF,PC變成不可知

 

2.2    Cache支持

  • Caches的一般行為

(1)Cache中已解鎖的項不會一直駐留在cache;

(2)Cache中鎖定的項會保證會一直在cache中;

(3)任何時候具有cacheable屬性的內存在當前異常級別或更高異常級別都可以分配到cache;

(4)不具有cacheable屬性的內存不會分配到cache;

(5)一個cache項的釋放會寫回內存;

  • Cache identification

Cache維護指令

 

(1)       影響整個cache,如IC IALLU;

(2)       對某個地址的操作,如IC IVAU;

(3)       對set/way的操作,如DC ISW

Cache identification registers

 

(1)       Cache type寄存器(CTR_EL0)

定義了最小的指令cache line長度;

定義了最小的數據cache line長度;

L1 Cache索引和tag策略

(2)       single cache level ID寄存器(CLIDR_EL1)

實現了哪幾級cache;

待續

(3)       single cache size selection寄存器

待續

(4)       cache size identification寄存器

是否支持寫透、回寫、讀分配和寫分配;

映射方式、sets/ways等

 

  • Cacheablity,cache分配,cache瞬態

Cacheablity

cacheablity只適用於normal memory,內存位置可定義為內部cache(如各PE內部的L1)或外部cache(各PE共享的L2);所有的device memory都作為non-cacheablity;

cacheablity屬性包含non-cacheablity;寫透;寫回。

Cache allocate hints

待續

Cache transient hints

待續

  •  Enable/disable內存的caching訪問

 

  • Reset的cache行為

(1)reset到自定義狀態的所有cache可能是未知的;

(2)cacheablity控制域強制所有內存作為non-cacheablity

(3)在cache被使能前,cache初始化時必須被invalidate

(4)如(2)所述,reset所有的內存都被作為non-cacheablity,如果仍然允許cahce hit,則需:(1)提供確保cache正確初始化的機制;(2)清楚記錄cache初始化;

(5)ARM建議任何時候需要無效cache時都要基於ARMV8 cache維護指令???

 

  • Non-cacheable訪問和指令cache

 

  • 關於ARMV8的cache維護

 

 

術語

Level:cache的級別;

Set:由多個連續的cache line組成一個組(set);

Way: 每個set中沖突的備選表項的數目;

(1)Clean:為確保更新到cache中的內容flush到內存;

(2)Invalidate:確保內存中的修改,能夠重新加載到cache;

(3)Clean and invalidate:clean指令后跟一個invalidate指令,針對的是同一訪問地址;

(1)PoU(Point of Unification):對所有的PE可以觀察到一致拷貝的點;

(2)PoC(Point of Coherence):對系統中所有的agent可以觀察到一致拷貝的點;

(1)LoC(Level of Coherence):定義了 整個系統  clean或invalidate PoC時所要clean或invalidate的最后一級cache級別號,如:PoU為Level4,則LoC為3,執行clean和invalidate后會清空L1,L2, L3;

(2)LoUU(Level of Unification, uniprocessor):定義了  PE   clean或invalidate PoU時所要clean或invalidate的最后一級cache級別號;

(3)LoUIS(Level of Unification, Inner Shareable):定義了  內部共享域   clean或invalidate PoU時所要clean或invalidate的最后一級cache級別號;

ARMV8 cache層級抽象

操作VA的cache維護指令

操作set/way的cache維護指令

 

  •  Cache維護指令

指令cache維護指令

 

數據cache維護指令

 

EL0 cache維護指令的使能配置

 

Cache維護指令的行為

沒有限制cache維護指令的行為,每個cache位置都可能被清空或無效

操作VA到PoU的影響

會影響共享域內的其它PE

所有set/way維護指令的影響

只影響到運行指令的PE

虛擬化和安全性維護指令的影響

每個安全狀態有自己的物理地址空間,cache與物理地址關聯

邊界條件

維護指令會強制所有的內存訪問為non-cache???

數據和指令cache維護指令的執行順序和完成

 

運行cache維護指令

 

  • Data cache zero指令

 

  • cache lockdown

一個cache lock 可保證cache 中的內容一直被保留

 

  • System level caches

不是體系結構定義的cache,不受體系結構定義的維護指令管理,主要包括三類:

  1. 位於PoC之前的系統級caches,不受cache維護指令管理;
  2. 位於PoC之前的系統級caches,受按地址操作的cache維護指令管理, 不受按set/way操作的cache指令管理;
  3. 位於PoC之前的系統級caches,軟件不可見???這部分不受體系結構的管理
  •  分支預測

ARMV8沒有定義任何分之預測指令,如果體系結構中分支預測指令對所有agent是可見的,則cache維護指令也要與之適配

 

2.3   External abort

External abort

存儲系統中MMU和debug邏輯檢測到的錯誤除外的其它錯誤,主要位於SOC外部

取指abort

 

Data read/write abort

 

External abort分類

 

奇偶校驗錯誤/ECC錯誤報告

 

 

3. 參考文檔

[1] DDI0487A_k_armv8_arm_iss10775.pdf




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM