AHB5定义了Extended_Memory_Types
属性。这个属性定义了一个接口是否支持本节中描述的扩展存储器类型。如果这个属性没有定义,那么接口就不支持扩展存储器类型。
本规范的这一版为每类存储器类型添加了额外的HPROT信号,并为每种存储器类型提供了更详细的要求列表。
表3-5 HPROT位的含义
位 | 名称 | 描述 |
---|---|---|
HPROT[0] | Data/Inst | 被断言时,此位表示传输是数据访问。 未被断言表示传输是指令取指。 |
HPROT[1] | Privileged | 被断言时,此位表示传输是特权访问。 未被断言表示传输是非特权访问。 |
HPROT[2] | Bufferable | 如果HPROT[4:3]都未被断言,那么当此位为:
|
HPROT[3] | Modifiable | 被断言时,传输的特性可以被修改。 未被断言时,传输的特性不得修改。 |
HPROT[4] | Lookup | 被断言时,传输必须在缓存中查找。 未被断言时,传输不需要在缓存中查找,且传输必须传播到最终目的地址。 |
HPROT[5] | Allocate | 被断言时,出于性能原因,本规范推荐此传输应在缓存中分配。 未被断言时,出于性能原因,本规范推荐此传输不应在缓存中分配。 |
HPROT[6] | Shareable | 被断言时,表示此传输到的存储器区域与系统中的其他master共享。在传输对其他master可见之前,不得为传输提供响应。 未被断言时,表示此传输为非共享的,存储器区域不与系统中的其他master共享,传输的响应不保证对其他master可见。 |
1. 数据或指令
所有传输都包含数据或指令保护位HPROT[0]:
- 当该位被断言(置为高)时,表示传输是数据访问。
- 当该位未被断言(置为低)时,表示传输是指令取指。
协议将这种指示定义为一种提示。并非在所有情况下都准确,例如,当事务包含指令和数据项的混合时。 本规格说明书建议,除非访问明确已知为指令访问,否则主设备应将HPROT[0]设置为高,以指示数据访问。
2. 特权或非特权
所有传输都包含特权或非特权保护位HPROT[1]:
- 当该位被断言时,表示传输是特权访问。
- 当该位未被断言时,表示传输是非特权访问。
注意:一些处理器支持多个特权级别,请参阅所选处理器的文档以确定到AHB特权级别的映射。这里提供的唯一的区分是特权访问和非特权访问。
3. 存储器类型
本节提供了有关HPROT保护控制信号的额外信息,以及这些信号如何与不同类型的存储器相关联。表3-6显示了HPROT[6:2]信号与存储器类型之间的映射。表3-6未显示的位组合是不允许的。 设备存储器类型后缀“E”表示允许早期写响应。 设备存储器类型后缀“nE”表示不允许早期写响应,且写响应必须来自最终目的地址。
表3-6 HPROT[6:2] 映射到存储器类型
HPROT[6] | HPROT[5] | HPROT[4] | HPROT[3] | HPROT[2] | 存储器类型 |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | Device-nE |
0 | 0 | 0 | 0 | 1 | Device-E |
0 | 0 | 0 | 1 | 0 | Normal Non-cacheable, Non-shareable |
0 | 0 或 1 | 1 | 1 | 0 | Write-through, Non-shareable |
0 | 0 或 1 | 1 | 1 | 1 | Write-back, Non-shareable |
1 | 0 | 0 | 1 | 0 | Normal Non-cacheable, Shareable |
1 | 0 或 1 | 1 | 1 | 0 | Write-through, Shareable |
1 | 0 或 1 | 1 | 1 | 1 | Write-back, Shareable |
4. 设备存储器要求
对于所有设备存储器,即Device-nE和Device-E,要求行为如下:
- 读取数据必须从最终目的地址获取。
- 传输不得分割为多个传输或与其他传输合并。
- 读取不得预取或推测性执行。
- 写入不得合并。
- 来自同一master的对同一slave的读写传输必须保持有序。
- 传输的大小,如HSIZE所示,不得更改。
- 允许将突发传输分解为多个较小的突发,但是原始突发中的NONSEQ(非顺序)和SEQ(顺序)传输的总数必须与结果较小突发中的NONSEQ和SEQ传输的总数相同。
- 允许对HPROT的唯一更改是将传输从可缓冲(Bufferable)转换为非缓冲(Non-bufferable)。
对于Device-nE:
- 写响应必须从最终目的地址获取。
对于Device-E:
- 写响应可以从中间点获取。
- 在给出写响应的点,写传输必须对所有其他master可见。
- 写传输必须及时到达最终目的地址。
5. 普通存储器要求
对于所有普通存储器,即普通非缓存存储器、写通式和写回式,要求行为如下:
- 读取可以是推测性的。
- 读取可以获取比需要的更多的数据。
- 写入可以合并。
- 传输的特性,如HBURST和HSIZE,可以更改。
- 来自同一master的对重叠地址的读写传输必须保持有序。
- 对于共享事务,只有在传输对所有其他master可见时才给出响应。
另外,对于普通非缓存存储器:
- 写传输必须及时在最终目的地址可见。
注意:没有机制可以确定写传输何时到达其最终目的地址。
- 读取数据必须从以下来源之一获取:
- 最终目的地址
- 正在传输至其最终目的地址的写传输
- 如果读取数据是从写传输中获取的:
- 它必须来自最新版本的写入。
- 数据不得被缓存以服务于后续的读取。
- 读取不得为后续使用而缓存获取的数据
注意 对于普通非缓存存储器,读取数据可以从仍在向其最终目的地址传输的写传输中获取,这与读取和写入传输同时传播到达最终目的地址是无法区分的。以这种方式返回的读取数据并不表明写传输在最终目的地址可见。
另外,对于写通式(Write-through):
- 写响应可以从中间缓存或缓冲区获取。
- 读取数据可以被缓存在中间缓存或缓冲区。
- 读取和写入传输都需要进行缓存查找。
- 写事务必须及时在最终目的地址可见。
注意:没有机制可以确定写事务何时在最终目的地址可见。
另外,对于写回式(Write-back):
- 写响应可以从中间缓存或缓冲区获取。
- 读取数据可以被缓存在中间缓存或缓冲区。
- 读取和写入传输都需要进行缓存查找。
- 写事务不需要在最终目的地址可见。
6. 分配属性(Allocate attribute)
写通式和写回式传输包含一个分配属性,HPROT[5]:
- 当该位被断言(置为高)时,出于性能原因,本规范推荐此传输应在缓存中分配。
- 当该位未被断言(置为低)时,出于性能原因,本规范推荐此传输不应在缓存中分配。
7. 兼容性考虑
表3-7 展示了本规范推荐的映射,以便为仅包含 HPROT[3:0] 信号的组件提供 HPROT[6:0] 信号。
表3-7 HPROT[3:0] 信号组件提供 HPROT[6:0] 信号的映射
当在仅包含HPROT[3:0]的系统中使用支持HPROT[6:0]的组件时,那么高位的HPROT位可以被移除。
注意 这种方法会导致将写通式(Write-through)映射到非缓存存储器(Non-cacheable memory)。然而,也可以使用另一种方案,特别是如果提供了额外的信息来确定更合适的映射。
8.安全传输
AHB5定义了Secure_Transfers
属性。这个属性定义了一个接口是否支持安全和非安全传输的概念。如果这个属性没有定义,那么接口就不支持安全传输。
支持安全传输的接口有一个额外的信号,HNONSEC。当进行非安全传输时,这个信号被断言;当进行安全传输时,这个信号未被断言。
HNONSEC是地址阶段信号,并且与HADDR具有相同的有效性约束。
在将不支持安全传输的组件进行接口连接时,必须小心处理。
注意:这个信号被定义为,当它被断言时,传输被识别为非安全的。这与ARM安全扩展实现中的其他信号一致。