高通 Hexagon V65 HVX 编程参考手册(3)

本文详细介绍了高通HexagonV65处理器的HVX向量处理单元的内存管理特性,包括对齐策略、HVX本地内存VTCM的使用、散射和收集操作以及内存类型的限制。HVX支持不对齐的内存访问,并且有特定的高速本地内存VTCM,适合用于中间向量数据。同时,文章提到了非时间属性的VMEM指令和权限控制机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


3内存

六角形统一字节可寻址存储器有一个32位的虚拟地址空间。所有地址,无论是标量还是向量操作使用,都通过MMU进行地址转换和保护。

3.1对齐

与在标量处理器上不同的是,一个未对齐的指针(即,一个不是向量大小的倍数的指针)不会导致内存故障或异常。当使用通用VMEM加载或存储时,地址的最小重要位将被忽略。

VMEM(R0) = V1 // Store to R0 & ~(0x3F)

矢量内寻址位被忽略(64B向量长度低6,128B向量长度低7)。通过VMEMU指令,也可以显式地支持未对齐的负载和存储。

V0 = VMEMU(R0) // Load a vector from R0 regardless of alignment

3.2 HVX本地内存: VTCM

HVX还支持一个名为VTCM的本地内存。内存的大小是已定义的实现。该大小可以从V65系统体系结构规范中定义的配置表中发现。VTCM像其他内存一样需要正常的虚拟到物理转换。该内存具有更高的性能和较低的功率。如果可能,这个内存至少应该用于中间向量数据。除了HVX VMEM访问外,正常的六角形内存访问指令也可以访问该内存。

以下条件对VTCM访问无效:

  • 使用大于VTCM大小的页面大小。
  • 试图执行来自VTCM的指令。这包括投机性的访问权。当HVX保险丝烧断(禁用)时的
  • Scalar VTCM访问。
  • 加载锁定或存储条件到VTCM。
  • 当多个线程处于活动状态时,从VTCM进行的物理加载。
  • 在HVX未完全通电或任何VTCM银行处于睡眠状态时访问VTCM。
  • VTCM页面和非VTCM页面之间的非对齐访问交叉。

3.3散射和收集

散点和收集指令允许每个元素的随机访问内存。每个元素可以指定应读(收集)或写(分散)的独立地址。HVX收集是一个从非连续地址到对齐连续向量位置的向量副本。

通常,这些指令不会依次执行以下操作。即使是来自相同散点或收集指令的元素的访问也没有顺序。主排序案例正在从收集结果中加载。为了帮助完成此排序,提供了一个散射存储发布指令,在之前的散射和收集完成之前不会执行该指令。从散射存储释放中消耗的负载停止,直到那些之前的散射和收集完成。

以下条件对分散或收集访问无效:

  • 分散(写入)或收集(读)区域覆盖一个页面,或者M源(长度-1)为负数。否则将生成一个异常。
  • 任何一次访问都不在VTCM范围内。这还包括收集目标地址。否则将生成一个异常。
  • 在同一数据包中的收集区域指令和分散指令。

3.4内存类型

HVX内存指令(VMEM或分散/收集)的目标设备类型的内存是非法的。如果这样做,则将引发一个VMEM地址错误异常。在MMU关闭时使用HVX内存指令也是非法的。

注:HVX设计适用于L2缓存、L2TCM或VTCM。对于L2缓存数据,内存应标记为L2-可缓存,而对于位于L2TCM或VTCM中的数据,内存应标记为未缓存。

3.5非时间

VMEM指令可以具有一个可选的非时间属性。这是在具有“:nt”附录的汇编中指定的。非时间指令标记表明微体系结构在指令发出后不再需要数据。高速缓存存储器系统使用这些信息来通知替换和分配决策。

3.6权限

恰好自然对齐的未对齐的VMEMU指令只需要对所访问的行具有MMU权限。硬件禁止生成对未使用部分的访问。

启用字节的条件VMEM存储指令都需要MMU权限。换句话说,在检查权限时不考虑Q寄存器的状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值