概述
-
- Storage Attributes
- Overview
- Write-Through W
- Expanded Write-Through Storage Attributes WL1
- Caching Inhibited I
- Memory Coherence Required M
- Guarded G
- Endian E
- User-Definable U0-U3
- Attribute Combination属性绑定
- Storage Attributes
Storage Attributes
Overview
以下内容涉及Cache以及存储(内存)管理理论较多,请注意参考相关资料。
每个TLB entry都定义了一些相关页面的存储属性,将控制页面存储访问行为;
主要包含以下属性(WIMG CPU):
- Write through(W)直写(关于Cache写机制参考)
- Caching inhibited(I)缓存抑制
- Memory coherence required(M)内存一致性
- Guarded(G)
- Endianness(E)
- User-definable(U0,U1,U2,U3)
Write-Through W
如果页面内存采用直写方式(W=1),那么数据可以直接写入主存Memory(注意:信号同时发送到Cache与
主存,主存数据可与Cache数据保持同步);相反的情况下(W=0),会仅仅先写入数据缓存(除非主动flush,
缓存数据可能与主存数据不一致)。
如果Cache Line中已经存在对应的数据缓存(即“命中”),数据也会写入Data Cache(但对应的Cache Line
并不会再标记已经修改了(即,dirty位不会置位)。
Expanded Write-Through Storage Attributes, WL1
关于引入一级缓存的直写扩展属性的原因如下:
- 当一级缓存中出现奇偶校验错误,为了恢复,L1 Cache必须工作在Write-Through模式;
- PowerPC架构禁止混淆使用W属性(对L1 Cache单独控制);
WL1位1时,L1 data cache 工作在Write-through模式
WL1位0时,W=0则工作在Copy-back(回写)模式,W=1无效绑定;
Caching Inhibited I
如果一个主存页标记为缓存抑制的(I = 1), 那么所有的加载、存储以及指令Fetch操作均在主存中;
反言之,页在Cache中有缓存的,会首先从对应的指令或数据缓存中执行操作。
Memory Coherence Required M
由于PPC460-S并不支持多核一致性,所以此项设置对内核没有效果。
Guarded G
首先理解下面两个关于Memory location的属性概念 non-well-behaved 和 well-behaved :
表现好的:如果对应的存储页面确实存在,而且没有特别的缺陷,而且对于单次访问与多次访问
也没有特殊的区别,那么就可以说,对此处的Memory的定位将会是表现良好的。
这个属性主要用于控制对于表现不好的页面定位的随机访问(乱序访问,被中断,后重试等)。
通常情况下,如果发现了定位表现不好的页面,就需要对其标记为Guarded. 因为此处的页写入
可能代表了一个IO设备的控制寄存器或者页面可能不存在,对此处的乱序访问可能引起非预想的
结果或者引发设备检查异常(Machine Check Exception)。
那么,对于一个已经标记为Guarded的Storage location如何访问呢?
此时就需要保证当前的访问是一种已知的连续执行模块的请求,或者当前的访问在Data Cache中
已有缓存。当一个守护的数据存储访问已经初始化(已经要开始访问,且知道为Guarded属性)时,
如果存储属性配置了缓存抑制(caching inhibited,页面无缓存),那么此时只允许其在主存中访
问请求的字节数数据。如果没有配置缓存抑制,那么当前存储可允许其访问在Cache或者主存中的
整个Cache Block。
由于PowerPC架构并没有禁止从守护Storage中取指,因此对于Guarded Storage取指不受影响,
但是软件一般应通过标记这些页为不可执行(UX/SX=0)来禁止这种类型的取指操作,然后,当
这样的取指发生时便会引发执行权限异常。
Endian E
显而易见,此Endianness属性用来控制读、写以及取指操作的字节序。
E = 0 大端
E = 1 小端
User-Definable U0-U3
PPC460-S内核定义了4个用户可自定义的Storage Attributes。
当然,默认情况下,这些属性对内核不会有任何作用。
特别的系统设计时才可能用到这些属性来控制系统级的行为(未知什么情况,好像需要内核特别支持)
但是,用户可以通过配置MMUCR寄存器来配置U1、U2两个属性起作用(但这两个属性已经固定),
尽管如此控制了一些属性,但其实对于内核来说仍然没有任何作用,不过已经方便了不少;
其中U1的属性可以控制对于相应页面的相应Cache的方式(正常模式或旁路模式)
U2的属性可以控制当Cache Line中缺页时是否再分配Cache line(从主存中拷贝,并重新缓存一个Entry)
Attribute Combination属性绑定
属性绑定:
W=1时(即直写模式),内存访问时将同时访问Cache与主存,而此时如果I=1(即缓存抑制)会出现
属性冲突,因此不支持W=1 && I = 1;
其他情况下可自由绑定结合;
关于内存控制器MMUCR以及进程控制器PID部分参见后续文章介绍。
参考资料 Reference:
- WiKi Cache Computing
- 关于CPU cache
- L1 cache
- WIMG CPU
最后
以上就是真实灯泡为你收集整理的PowerPC PPC460-S MMU(四 Storage Attribute)的全部内容,希望文章能够帮你解决PowerPC PPC460-S MMU(四 Storage Attribute)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复