Hexagon 系统架构
本节介绍 Hexagon 架构的一些独有特性。
中断
中断到达 Hexagon DSP 核心时,按优先级路由到符合条件且优先级最低的硬件线程处理。
内存
每个硬件线程的 SSR.ASID 保存地址空间标识符。 该值与 32 位虚拟地址拼接,MMU 将扩展后的虚拟地址解析为物理地址。
TLBs
TLB 条目格式如下。
备注
Small Core DSP 使用不同的 TLB 格式,目前尚不支持。
示意图
6 5 4 3
3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|v|g|x|A|A| | |
|a|l|P|1|0| ASID | Virtual Page |
|l|b| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3 2 1 0
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | | |
|x|w|r|u|Cacheab| Physical Page |S|
| | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
ASID:地址空间标识符。
A1、A0:QEMU 不建模这些缓存行属性的行为。
xP:扩展物理地址位,是物理地址最高位。
S:S 位和物理页的低位共同表示页面大小。
val:有效位,置位后表示页面匹配时应考虑此条目。
S 位 |
物理页低位 |
页面大小 |
|---|---|---|
1 |
N/A |
4kb |
0 |
0b1 |
16kb |
0 |
0b10 |
64kb |
0 |
0b100 |
256kb |
0 |
0b1000 |
1MB |
0 |
0b10000 |
4MB |
0 |
0b100000 |
16MB |
glb:全局位置位后,TLB 匹配不考虑 ASID。
Cacheab:不建模 TLB 缓存属性,忽略这些位。
RWX:读、写、执行使能位,表示用户程序能否读取、写入或执行此页。
U:表示用户程序能否访问此页。
调度器
Hexagon 提供辅助客户机操作系统任务调度的功能,通过 SCHEDCFG.EN 启用。 客户机设置 BESTWAIT,表示等待某硬件线程运行的最高优先级任务。 任一硬件线程的 STID.PRIO 优先级低于 BESTWAIT 时触发重调度中断, 并将 BESTWAIT.PRIO 重置为 0x1ff。
HVX 协处理器
监督者状态寄存器的 SSR.XA 将 DSP 硬件线程绑定到八个 HVX 上下文之一。 客户机操作系统负责管理此资源。
参见
更多 Hexagon 信息见 QEMU 源码树的 target/hexagon/README。