- 1、本文档共74页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
中國科學院知識創新工程重大項目高性能通用cpu芯片研制可行性
龙芯2号处理器设计 中国科学院计算技术研究所 CPU组 2004.11.10 内容提要 关键技术 结构设计 处理器验证 物理设计 龙芯2号结构设计关键技术 “可执行的结构设计” 用C模拟器作为详细结构设计的文档,并用于验证、性能分析等。 步步为营的性能分析:C模拟器、RTL、FPGA、流片 多发射和乱序执行的关键技术 9级流水:取指、预译码、译码、重命名、送入队列、发射、读寄存器、执行、提交 4发射,5个功能部件,浮点部件的定点和媒体复用 转移猜测:Gshare+BTB+RAS,高效的转移取消机制 寄存器重命名:两个64*64的物理寄存器堆 动态调度:ROB 32-64项,定点浮点发射队列各16项 存储层次的关键技术 TLB: 64项全相联,每项两页,独立的16项指令TLB TLB中增加可执行位,防止缓冲区溢出攻击 CACHE: 指令与数据CACHE各64KB,4路组相联 Non-blocking:最多允许16-32条。 Disambiguation:动态解决访存相关,不用重新发射 Load猜测执行:前面的store操作未确定的情况下执行load操作 结构设计研究方法 两个流程 基于C 模拟器的验证和评估 基于FPGA 的验证和评估 两个角度 工作负载分析 处理器瓶颈分析 C 模拟器 Cycle-by-cycle精确 每秒可模拟约100k拍 全系统模拟,运行实际操作系统,模拟串口,内存,磁盘等外设。 调试,数据收集能力和灵活度不断提高 详细的数据统计 重要的整体行为特性:IPC,cache 失效率,分支预测失效率等 指令相关统计:每条指令在各流水级花费的拍数,遇到的失效数等 C 模拟器(续) 专用的AMD64机群,大量使用批处理和自制脚本分析数据 发展方向—能够方便地在合理时间内完成比较全面的评估: 改善代码可维护性 提高运行速度 增加功耗分析等功能 快速原型评估支持:更高层的模拟器 FPGA 比C模拟器快30x以上,潜力还很大 和最终系统更接近,可以运行更大的数据集更多的应用 FPGA 用于性能分析: FPGA 和最终系统的差别在于接口时序大不相同 可以插入逻辑模拟最终系统的接口时序 可以加入更多的硬件支持来帮助性能分析:如更多的性能计数器,trace buffer等 FPGA模拟的精确度 工作负载分析 基准程序 SPEC CPU2000, media bench, dhryd/whetd, stream等 分析工具 模拟器 Performance counter: perfctr, PAPI, pfmon,Vtune等 二进制工具, 类似MIPS的pixie,Alpha的atom 分析角度:(随时间变化的)各种特性,热点基本块分析,编译优化等 处理器瓶颈分析 理想上限分析 专题研究 几个例子 访存子系统性能分析 Load 猜测 流水线中的IPC分布 Store miss优化 访存子系统性能分析 目标系统: Godson-2B 测量度量: 延迟 带宽 延迟 调查分析揭露了以下问题: 北桥花费过多时间访问sdram: 片外13~15 总线周期出第一个数 Godson-2B’s 不流水的接口比RM7K多花5-6个总线周期 总线利用率很低(1/8) 由于没有二级cache,godson2B 对访存延迟非常敏感 带宽 标准的stream带宽不是很理想: 91MB/s at 100x2MHz 1/8 of 峰值总线带宽(100x8=800MB/s) 原因 延迟过长 不流水的接口 Sysad 总线协议开销较大 应对措施 增加流水读接口支持 增加片外二级cache支持 在C模拟器中实现访存控制器,评估各种实现,包括访存调度,访存策略,片上控制器等 寻求二级cache的替代方案 启动北桥设计 Load 猜测-现象 数组拷贝汇编码: 433e58: lw $v0,0($a1) 433e5c: addiu $a2,$a2,-1 433e60: addiu $a1,$a1,4 433e64: sw $v0,0($v1) 433e68: bgez $a2,433e58 433e6c: addiu $v1,$v1,4 在没有猜测的情况下,每个lw都隐式地依赖上一个循环的sw,导致代码IPC很低 Lw-sw-lw-sw… Load 猜测-更多的观察 Load被前面的store延迟的现象非常普遍: ~30% 一个被延迟的load(发射后)至少需要5拍才能写回,30% 将使得平均load指令的延迟拉长到: 3x0.7 + 5 x 0.3 = 3.6 这恶化了原本就已经比较长的load延迟。 Load 猜测-应对措施 让准备好的load直接写回,不考虑前面是否还有为解决的st
文档评论(0)