zoukankan      html  css  js  c++  java
  • 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



  • 相关阅读:
    visio 改变画布大小
    Delphi 让自己的软件实现双击打开文件 转
    气相色谱里面的斜率灵敏度什么意思
    色谱峰的类型BB,BV,VB等都是什么意思
    Delphi的windows剪切板操作函数
    上传图片,多图上传,预览功能,js原生无依赖
    前端性能监控:window.performance
    ES6新属性笔记
    :jQuery实例【DEMO】
    自定义checkbox/radio
  • 原文地址:https://www.cnblogs.com/smartjourneys/p/6848018.html
Copyright © 2011-2022 走看看