根据程序的局部性原理,在主存与CPU之间设置的一个高速的容量较小的存储器,叫做cache。

ARM cache架构由cache存储器和写缓冲器(write-buffer)组成。其中Write_buffer是cache按照FIFO原则向主存写的缓冲器。

cache可以分为Dcache,Icache。分别cache data和 instruction。其中Dcache必须在MMU开启后才能在CP15寄存器中使能,Icache在MMU未使能的情

况下,也是可以使能的。

在armv6版本之前的memory attribute:

一般会在使能MMU的过程中,规定MMU page table的definition。其中20bit表示每一page的memory attributes。12位表示每一page的基地址。一共32

位。每一page都会设置两个属性,cacheable,bufferable。其中每一page的memory attribute有

strong ordered,

Outer and inner write-back, write allocate,

Outer and inner write-through, no write allocate,

Outer and inner write-through, no write allocate,shared Device.

Shared Device.

non-cacheable.

MMU_CACHE:

.word            0x5000_0000|strong ordered;(其中strong order由20bit来表示)

其中arm的基本memory attribute有四种:

NCNB(Non-cacheable,non-bufferable,Strongly-ordered),

NCB(Non-cacheable,bufferable,Device),

Write-Through Cacheable bufferable,

Write-Back Cacheable bufferable

Write-Through方式:CPU向cache写入数据时,同时也向memory写一份,使得cache和memory的数据保持一致,缺点是每次都要访问memory,速度较

慢。

Write-Back方式:CPU更新cache时,只是把更新的cache区标记一下,并不同步更新memory,只有在cache区被新进入的数据取代时,才更新memory。

会引起memory和cache的一致性问题。

Write-allocate方式:在cache miss的情况下,先对存储器进行read操作,将操作数读入cache,在进行读写,这样便cache hit。

Bufferable与non-bufferable的区别,主要表现在ack信号的返回上,bufferable--将结果写入buffer(某个component)便返回ack,

non-bufferable等到结果写入外存,返回ack。

在AMBA3---AXI中,有四位的arcache/awcache信号,来表示transaction的这种属性。

arcache/awcache[0]表示,bufferable信号,表示interconnect或其他compnonent可以先返回ack,之后再写向final distination,只用在write操作。

arcache/awcache[1]表示,cacheable信号,对写操作,表示可以有不同的write megered together。

对读操作,表示该地址的数据可以pre-fetched,可被用在多个read transaction中。

arcache/awcache[2]表示,Read Allocate信号,如果一个transfer 读操作cache miss,它会allocated后再读。

arcache/awcache[3]表示,Write Allocate信号,如果一个write transfer cache miss,它会allocated,后读外存,在write-back方式的写回。

      这两bit的信号在AXI3中主要是Cache的互联中,会进行设置,通过smmu出来之后的transaction,之间简单的加载外存的值。

在armv7及其之后的版本,Bus AXI4中的memory attribute:

主要的基点改动,

  1) AxCache[1]表示modified的意思;

  2) AXI4对non-modified的transaction有order的限制;

  3) RA,WA变为了对memory attribute的编码。

modifiable transaction表示,

  1)一个大的transaction,可以被分割为多个小的transaction;

  2)多个小的transaction,可以被merge为一个大的transaction;

  3)一个read operation,可以读取超过需要的数据,prefetch数据,这样之后可能可以少发送一些read transaction;

  4)一个write operation,也可以访问一个更大的地址空间,不合理的地址对应的数据,使用strb信号关闭;

  5)所以一个transaction,从源到目的地,AxAddr,AxSize,AxLen,AxBurst信号的值,都可以改动。

对于non-modifiable transaction,这些信号在传输过程中,是不能被修改的,transaction也就是不能被merge和split

  但是AxCache信号,从Bufferable转换为Non-Bufferable是可以的,

  一个burst length大于16的transaction,也可以被split为几个小的burst length的transaction。这是个例外可以改length的地方

Bus memory attribute的更多相关文章

  1. Bus,Exclusive access,memory attribute

    指令LDREX,STREX是在armv6中新加的指令,配合AMBA3--AXI中的lock[1:0]信号. 在Atomic Access一节中是这么规定的:ARLOCK[1:0]/AWLOCK[1:0 ...

  2. armv8 memory translation

    AArch32,arm的32bit架构: AArch64,arm的64bit架构: ARMv8.2-LPA,是armv8.2中的新feature,扩大了IPA和PA的支持范围,从48bit扩展到52b ...

  3. armv8 memory system

    在armv8中,由于processor的预取,流水线, 以及多线程并行的执行方式,而且armv8-a中,使用的是一种weakly-ordered memory model, 不保证program or ...

  4. memory consistency

    目前的计算机系统中,都是shared memory结构,提供统一的控制接口给软件, shared memory结构中,为了memory correctness,可以将问题分为:memory consi ...

  5. Memory Ordering in Modern Microprocessors

    Linux has supported a large number of SMP systems based on a variety of CPUs since the 2.0 kernel. L ...

  6. Interrupt distribution scheme for a computer bus

    A method of handling processor to processor interrupt requests in a multiprocessing computer bus env ...

  7. arm-cache coherency

    提高一个系统的performance,有两种办法: 1) 不断提高一个core的performance,手段就是不断提高freq,减小Vt,这样都会在增加power(dynamic,leakage) ...

  8. Linux内存初始化(二)identity mapping和kernel image mapping

    一.前言 本文没有什么框架性的东西,就是按照__create_page_tables代码的执行路径走读一遍,记录在初始化阶段,内核是如何创建内核运行需要的页表过程.想要了解一些概述性的.框架性的东西可 ...

  9. Method, apparatus, and system for speculative abort control mechanisms

    An apparatus and method is described herein for providing robust speculative code section abort cont ...

随机推荐

  1. URI Scheme注册伪协议实现远程命令执行

    Windows配置注册表注册伪协议 1.新建伪协议项 WIN+R 输入regedit 打开注册表,在注册表HKEY_CLASSES_ROOT键中新建一个项,项的名字就是你伪协议的名字,例如我注册一个c ...

  2. 23种设计模式之装饰模式(Decorator)

    装饰模式是一种对象结构型模式,可动态地给一个对象增加一些额外的职责,就增加对象功能来说,装饰模式比生成子类实现更为灵活.通过装饰模式,可以在不影响其他对象的情况下,以动态.透明的方式给单个对象添加职责 ...

  3. 美团店铺评价语言处理以及文本分类(logistic regression)

    美团店铺评价语言处理以及分类(LogisticRegression) 第一篇 数据清洗与分析部分 第二篇 可视化部分, 第三篇 朴素贝叶斯文本分类 本文是该系列的第四篇 主要讨论逻辑回归分类算法的参数 ...

  4. 9.14.16 Django ORM进阶用法

    2018-9-14 14:26:45 ORM 练习题   : http://www.cnblogs.com/liwenzhou/articles/8337352.html 2018-9-14 21:1 ...

  5. UVM/OVM中的factory【zz】

    原文地址:http://bbs.eetop.cn/viewthread.php?tid=452518&extra=&authorid=828160&page=1 在新的项目中再 ...

  6. UVM phase的用法研究【zz】

    原文地址:http://bbs.eetop.cn/viewthread.php?tid=383872&extra=&authorid=828160&page=1 我相信很多朋友 ...

  7. Check access restrictions in Zabbix agent configuration

    配置自定义监控K值时,出现下面错误提示 [root@manage ~]# zabbix_get -s -k "login_user" zabbix_get []: Check ac ...

  8. Asp.net MVC]Asp.net MVC5系列——实现编辑、删除与明细信息视图

    目录 概述 实现信息的明细视图 实现信息的编辑视图 实现信息的删除视图 总结 系列文章 [Asp.net MVC]Asp.net MVC5系列——第一个项目 [Asp.net MVC]Asp.net ...

  9. Java -- 给定一个int数组,拼接出最大数值

    public class ZhiJieTiaoDong { /* 给定一个数组:组合成最大数值 */ public String szpj(int[] args){ if(null == args | ...

  10. HDU-1166敌兵布阵(线段树)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissi ...