1、香山处理器昆明湖架构向量扩展的设计与演进刘威丁2,3胡轩1张林隽2 张梓悦1王郅尊2 冯浩原1 肖飞豹2贾志杰1 唐浩晋1刘泽昊11中国科学院计算技术研究所2北京开源芯片研究院3南京理工大学2024 年 8 月 22 日中国科学院计算技术研究所(ICT,CAS)2 2目录 背景介绍 香山向量扩展设计 高性能向量扩展设计演进 总结中国科学院计算技术研究所(ICT,CAS)3 3目录 背景介绍 香山向量扩展设计 高性能向量扩展设计演进 总结中国科学院计算技术研究所(ICT,CAS)4 4背景:SIMD SISD:单指令单数据 单条指令处理单个数据 标量处理器 SIMD:单指令多数据 单条指令处理多
2、个数据 向量处理机 提高计算并行度 适用于图像/信号处理等应用中国科学院计算技术研究所(ICT,CAS)5 5背景:SIMD 传统的 SIMD 使用特定向量长度,对应特定的向量寄存器位宽 软件使用短向量长度+硬件长 SIMD 寄存器等硬件资源浪费 软件使用长向量长度+硬件短 SIMD 程序并行度低中国科学院计算技术研究所(ICT,CAS)6 6背景:RISC-V 向量计算技术 寄存器组:一条指令操作多个向量寄存器 提高运算并行度中国科学院计算技术研究所(ICT,CAS)7 7背景:RISC-V 向量计算技术 寄存器组:一条指令操作多个向量寄存器组 提高运算并行度 可变长向量长度:指令与向量寄存
3、器宽度无关 软硬件解耦中国科学院计算技术研究所(ICT,CAS)8 8背景:RISC-V 向量计算技术 寄存器组:一条指令操作多个向量寄存器组 提高运算并行度 可变长向量长度:指令与向量寄存器宽度无关 软硬件解耦 谓词操作:通过掩码对特定元素操作 方便稀疏数据处理中国科学院计算技术研究所(ICT,CAS)9 9背景:RISC-V 向量计算技术 寄存器组:一条指令操作多个向量寄存器组 提高运算并行度 可变长向量长度:指令与向量寄存器宽度无关 软硬件解耦 谓词操作:通过掩码对特定元素操作 方便稀疏数据处理 丰富的访存模式:支持多种向量访存操作中国科学院计算技术研究所(ICT,CAS)1010目录
4、背景介绍 香山向量扩展设计 高性能向量扩展设计演进 总结中国科学院计算技术研究所(ICT,CAS)1111香山处理器向量后端整体介绍 译码阶段拆分向量指令 独立的向量发射队列 分离的向量寄存器堆中国科学院计算技术研究所(ICT,CAS)1212向量指令拆分:Uop(Micro-operation)问题 一条向量指令需要处理多个向量寄存器 运算单元每周期能处理的数据量有限(VLEN=向量寄存器宽度)目标:简化设计+复用标量流水线 解决方案:每条指令以向量寄存器为粒度拆分为若干 Uop Uop 之间并行执行 Uop 内部元素并行执行中国科学院计算技术研究所(ICT,CAS)1313向量指令拆分:难
5、点 某些向量指令需要获取标量操作数 标量寄存器堆与向量寄存器堆彼此独立,且距离较远 向量指令操作数来自标量寄存器或立即数时,需进行元素复制填充操作 解决方案 添加一个用于数据搬运的 Uop 读标量寄存器堆 元素复制填充 写向量寄存器堆中国科学院计算技术研究所(ICT,CAS)1414向量指令拆分:样例 向量运算指令拆分 vadd.vx v4,v6,s2 vlmul=2,vsew=32,vl=8 拆分出 3 个 Uop 1 个 move Uop 2 个 vadd Uop中国科学院计算技术研究所(ICT,CAS)1515向量寄存器堆拆分Now向量寄存器堆vec 寄存器堆v0 寄存器堆vl 寄存器堆
6、项数1282232读口1244写口662 向量指令至多占用 5 个寄存器读口 源寄存器*2 目的寄存器 谓词化掩码(v0)向量长度(vl 重命名以避免控制依赖)寄存器堆读端口压力大、时序面积紧张Previous不足:理想情况下寄存器堆需提供约20个读口中国科学院计算技术研究所(ICT,CAS)1616香山处理器向量访存整体介绍 混合的发射队列 按元素再次拆分 Uop 复用标量流水线 按 Uop 写回中国科学院计算技术研究所(ICT,CAS)1717向量访存指令拆分 访存指令元素地址计算模式复杂 向量访存指令的两阶段指令拆分 译码单元以目的 寄存器 为粒度