750 likes | 971 Views
龙芯2号处理器设计. 中国科学院计算技术研究所 CPU 组 2004.11.10. 内容提要. 基本情况介绍 研究 目标 目前 进展 近期工作计划 关键技术 结构设计 处理器验证 物理设计. 龙芯 2 号研究目标. 研究目标 研制出具有自主知识产权、达到国际先进水平的 64 位高性能通用 CPU 芯片和配套的 PC以及 服务器系统样机。 建立开发平台、设计方法、研究队伍。 样机系统指标 MIPS 兼容, 64 位,超流水, 4 发射,乱序执行
E N D
龙芯2号处理器设计 中国科学院计算技术研究所 CPU组 2004.11.10
内容提要 • 基本情况介绍 • 研究目标 • 目前进展 • 近期工作计划 • 关键技术 • 结构设计 • 处理器验证 • 物理设计
龙芯2号研究目标 • 研究目标 • 研制出具有自主知识产权、达到国际先进水平的64位高性能通用CPU芯片和配套的PC以及服务器系统样机。 • 建立开发平台、设计方法、研究队伍。 • 样机系统指标 • MIPS兼容,64位,超流水,4发射,乱序执行 • 流片主频500MHz以上,SPEC CPU2000值为300分以上,性能与1GHz以上的PIII或PIV相当 • 300MHz的Untra Sparc II的分值为100分。 • 1.3GHzPIV实测结果:INT 346; FP 272。 • 运行完整的64位Linux操作系统和X-window视窗系统,通过包括SPEC CPU2000在内的若干基准程序的功能和性能测试,通过包括Office、浏览器、WEB服务器在内的一批应用程序的考核,可试运行电子政务等大型应用。
处理器 参数 日期 SPECint2000 SPECfp2000 UltraSPARC-II 300MHz, 16K+16K(L1),L2 100 100 UltraSPARC-III 900MHz, 32K+64K(L1), 8M(L2) 2001 466 410 Alpha 21264 500MHz, 64K+64K(L1), 4M(L2) 1999 313 422 Alpha 21264C 1001MHz, 64K+64K(L1), 8M(L2) 2001 621 756 MIPS R12000 500MHz, 32K+32K(L1), 8M(L2) 2000 347 343 MIPS R14000 500MHz, 32K+32K(L1), 8M(L2) 2001 412 386 Pentium III 1GHz, 16K+16K(L1), 256K(L2,on) 2001 403 264 Pentium IV 2GHz, 12K+8K(L1), 256K(L2,on) 2002 684 745 PA-8600 550MHz, 512K+1M(L1) 2000 422 414 PA-8700+ 875MHz, 0.75M+1.5M(L1) 2002 676 651 Power3-II 450MHz, 64K+32K(L1), 8M(L2) 2001 334 433 Power4+ 1.45GHz, 64K+32K(L1), 1.5M(L2,on),8M(L3) 2003 910 1158 部分处理器的SPEC CPU2000值
龙芯1 / 龙芯2 / 龙芯3 主流CPU的谱系和龙芯的位置 440 / 750 / 970 / Power4+ High Performance (GHz) MIPS MIPS Low Power (mW) 高性能 低能耗 XScale IA32 IA64 ARM Low Mid High
SPEC分值 龙芯3.3 龙芯3.2 1000 0.13-0.09um, 64位,多线程 龙芯3 800 2GHz的P4 SPEC分值在600到750之间 600 龙芯2.3 0.18-0.13um, 64位, 4发射 龙芯2.2 400 1.3GHz的P4实测分值为 定点342 浮点272 龙芯2 200 0.18um, 32位 单发射 龙芯1.3 以300MHz UltraSparc II为基准 龙芯1.2 龙芯1 时间 2001 2002 2003 2004 2005 2006 2007 龙芯处理器Roadmap
龙芯2号处理器特点 • 高性能 • 64位、四发射、乱序执行 • 64KB+64KB片内一级Cache, 1MB-8MB片外二级Cache • IEEE 754兼容浮点部件,专门的媒体支持 • 双精度浮点运算10亿次/秒,单精度浮点运算20亿次/秒 • SPEC CPU2000实测性能相当于500MHz-1GHz的PIII系列 • 完全满足桌面应用的要求 • 采用0.18um CMOS标准单元工艺,500MHz • 针对缓冲区溢出攻击的专门安全支持 • MIPS兼容,支持LINUX, VxWorks, WinCE等主流操作系统 • 1350万晶体管,面积6.2mm*6.7mm • 功耗:2w-4w@500MHz • 低成本:CPU+套片<20美元
龙芯2号进展 • 已经完成多次流片,包括0.18um的定型芯片 • 2002年7月开始概念结构设计,10月开始详细结构设计 • 2003年10月17日首片成功运行 • 2004年9月28日0.18um定型芯片的试流片运行 • 基本完成院重大专项和863重点项目 • 实测性能是龙芯1号的10倍以上 • 全面超过VIA的性能、实测性能达到PIII的水平 • 完全可以满足桌面的应用 • 系统设计进展 • 完成PC和服务器主板的设计,正在进行笔记本主板的联调 • 64位北桥设计,已经完成RTL设计 • 完成MIPS64 Linux kernel 和Debian的完整发行版的移植,包括xwindows, Open Office, Mozilla, 媒体播放, Email, Xpdf等
龙芯2号研发历程 • Balance between frequency and architecture is most important
Godson-2C主频 • 已完成多次流片,目前为C方案(Godson-2C) • 是0.18um的定型芯片 • 正常电压范围(1.8v±10%)主频为400MHz-450MHz • 目前由于封装散热较小(只能散1w-2w,实测400MHz时3w左右),因此降低电压运行在90MHz*3或90MHz*4 • 通过封装改进和工艺调整,正常电压范围达到500MHz-600MHz • 改进封装:通过散热片可以散3w-4w • 沟道宽度:0.16um或0.17um • 阈值电压:-5%或-10% • 不用改gds2版图,SMIC已经开始加工
SPEC初步性能比较(1) • 266MHz Godson-1 vs. 270MHz Godson-2C • 500MHz的龙芯2号性能是龙芯1号性能的10倍以上
SPEC初步性能比较(2) • 733MHz Via-C3 vs. 270MHz Godson-2C • 500MHz的龙芯2号性能将大大超过VIA的处理器
SPEC初步性能比较(3) • 360MHz Godson-2C vs. 450MHz的PIII • 500MHz的Godson-2C的性能达到600MHz以上PIII的性能
Godson-2C的SPEC 分值分析 • 目前gcc编译器270MHz时90-100分 • 龙芯1号是定点18分,浮点25分 • Godson-2B在225MHz时40-50分 • 通过硬件、OS和编译优化270MHz时达到100-120分 • 主频提高到500MHz使gcc编译的SPEC分值提高到200分左右 • 外频和二级Cache的增大使性能随主频线性增加 • 目前外频为90MHz,可以提高到125MHz。 • 目前二级Cache配置为4MB,可以配置到8MB。 • 编译器提高30%-50% • 估计需要2-3个月时间 • 二进制优化可以提高10%-20% • 已经把Alpha的ALTO移植到MIPS上 • 最后达到250分或300分以上
Godson-2D的设计 • 一个CPU设计、两种芯片形态、三个应用系统 • 一:Godson-2处理器的增强型,1GHz,SPEC分值600分 • 二:CPU和基于CPU的SOC(互连、存储控制、IO) • 三:PC、SMP服务器、TeraFLOPS高性能机 • 计算所负责CPU核和PC机 • 结构改进 • 浮点乘加:峰值性能双精度4GFLOPS,单精度8GFLOPS • 片内512KB二级Cache和SMP支持 • 物理设计 • 0.13um的HP工艺,更多的定制 • 目前进展 • 已完成乘加部件改造、11月完成二级Cache和SMP支持 • 11月中完成8端口寄存器堆的定制设计 • 2005年2月tapeout第一个芯片。 • 2005年底完成1GHz,SPEC分值600分的任务
龙芯3号考虑 • 处理器结构已经历了一个简单、复杂、简单、复杂的过程 • 早期的处理器结构一般都是简单的串行执行 • 工艺技术的发展及流水线、CACHE、向量机等使处理器结构变复杂 • RISC的出现使处理器结构得到一次较大的简化 • 工艺技术的发展及乱序执行和多发射技术又使RISC处理器结构变复杂 • 网络及媒体应用及功耗问题使处理器需求发生了变化 • Performance per second, Performance per dollar, Performance per watt • 连线延迟和设计复杂度越来越大 • 应该用层次化的结构简化设计,物理设计对结构设计的制约 • 对处理器的微体系结构进行突破性的变革的时机已经到来 • 从复杂到简单、面向网络和媒体应用、低功耗 • 多处理器核和多线程结构已成为研究热点,但没有解决已困扰二十年的并行程序编程难,对传统串行程序加速小的问题 • 现在没有一种结构(包括IRAM、PIM、SMT、CMP、Trace cache、微线程等)能全面解决上述问题,需要包括指令系统在内的系统创新
目前的研究方向 • 片内多处理器结构 • SMT、CMP、Micro-threading、Trace Cache • 存储层次与预取 • Cache一致性协议 • 用有效的预取达到大容量CACHE的效果 • 性能分析模型和方法 • 把龙芯2号结构移植到SimpleScalar上 • 片内多处理器模拟器 • 低功耗设计 • 系统级、逻辑级、电路级 • Java协处理器 • 针对java中类处理的特点
科研队伍情况 • 龙芯课题组共80多人 • 其中员工30人,研究员3人、副研3人,助研10人左右 • 绝大部分是年轻人 • 分成结构组、系统组、物理组、验证组、IP组、龙芯实验室等6个组 • 三名具有十年以上物理设计经验的硅谷设计人员常年合作 • 编译组 • 为龙芯2号做编译器 • 测试组 • 负责龙芯2号的测试 • 所外合作 • 中科院微电子所、772所
关键技术 • 结构设计 • 处理器验证 • 物理设计
龙芯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操作
结构设计关键技术(1) • 浮点部件的定点和媒体复用 • 对MIPS浮点指令的fmt域进行扩充,把浮点部件用做定点以及媒体处理部件的功能,不用额外增加指令。 • 同一条指令(如加法指令)通过fmt域来指定不同数据的相同运算。 • ADD.S, ADD.D, ADD.PS, ADD.64, ADD.32, ADD.4x16, ADD.8x8 • 不用对主要的数据通路(如寄存器重命名、发射、读寄存器、访存等)做任何修改,只需对在功能部件中增加适当的功能就可以大大加强处理能力。 • 实际上实现了简单的定点多线程,如有两套可用做定点操作的寄存器堆、发射通路、以及访存通路等。
结构设计关键技术(2) • 转移取消机制 • 转移猜测: 在转移条件确定前,猜测某个分支取指并执行。普通定点程序平均6-7条指令中有一条转移指令。 • Godson-2使用混合预测+Gshare + BTB + RAS的转移猜测方式 • 当发生转移猜测错误时要取消该转移指令及其后续指令。 • 在乱序执行的环境下,有可能该转移指令后面的指令已经执行,而该转移指令前面的指令反而没有执行。因此如何判断在各个流水阶段中的指令与猜测错误的指令的先后关系是一个关键技术。 • 与其他处理器如MIPS R10000相比,Godson-2在猜错的转移指令与其他指令的先后关系判断上更简单高效。 • 采用把程序分成若干基本块的方法 • 正因为如此,Godson-2中较容易地实现了8项转移队列,而R10000中的转移队列只有4项。
结构设计关键技术(3) • Godson-2的安全机制 • 利用缓冲区溢出进行攻击的例子 • Godson-2通过可执行保护防止缓冲区溢出攻击 • TLB增加可执行位 • MIPS的ISA没有执行保护
cp0qhead cp0qhead cp0qhead SW 100 1 2 3 4 SW 100 SW 100 1 1 2 2 3 3 4 4 SB 100 5 ? SB 100 SB ? 5 5 LW 100 1 2 3 5 LW 100 LW 100 1 1 2 2 3 3 5 5 SW 100 6 6 6 6 LW100 6 6 6 6 SW 100 SW 100 6 6 6 6 6 6 6 6 cp0qtail cp0qtail cp0qtail 结构设计关键技术(4) • 访存地址相关的解决:结构设计的难点 • Alpla 21264和MIPS R10000在遇到访存相关时都需要退回重新发射 • Godson-2在访存队列中通过物理地址的全相联比较动态解决访存相关 • Load Speculation • Cache命中的load操作必须等它前面的所有store的地址都确定后才能把值写回寄存器并传递给后面的操作(30%-40%的概率不能返回) • Godson-2实现了load操作Cache命中时可直接返回,并在发现访存相关时取消该load及其后面的操作(<<1%的概率需要取消)
结构设计研究方法 • 两个流程 • 基于C 模拟器的验证和评估 • 基于FPGA 的验证和评估 • 两个角度 • 工作负载分析 • 处理器瓶颈分析
C 模拟器 • Cycle-by-cycle精确 • 每秒可模拟约100k拍 • 全系统模拟,运行实际操作系统,模拟串口,内存,磁盘等外设。 • 调试,数据收集能力和灵活度不断提高 • 详细的数据统计 • 重要的整体行为特性:IPC,cache 失效率,分支预测失效率等 • 指令相关统计:每条指令在各流水级花费的拍数,遇到的失效数等
C 模拟器(续) • 专用的AMD64机群,大量使用批处理和自制脚本分析数据 • 发展方向—能够方便地在合理时间内完成比较全面的评估: • 改善代码可维护性 • 提高运行速度 • 增加功耗分析等功能 • 快速原型评估支持:更高层的模拟器
FPGA • 比C模拟器快30x以上,潜力还很大 • 和最终系统更接近,可以运行更大的数据集更多的应用 • FPGA 用于性能分析: • FPGA 和最终系统的差别在于接口时序大不相同 • 可以插入逻辑模拟最终系统的接口时序 • 可以加入更多的硬件支持来帮助性能分析:如更多的性能计数器,trace buffer等
FPGA模拟的精确度 SPEC CPU 2000 test 数据集误差: 整数平均: 0.045% 浮点平均: 2%.
Spec CPU2000 性能比较(test输入集,运行时间,使用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直接写回,不考虑前面是否还有为解决的store,然后检测发生相关的情况,利用例外机制取消错误的猜测—极小的硬件代价
Load 猜测-效果 • 对于上述数组拷贝代码,load猜测后硬件看起来就像是能够自动把循环展开成如下形式: lw .. lw .. lw .. sw .. sw .. sw ..
Load 猜测-更多的评估 • 增加预测器来减少错误的猜测 • 使用1024位的预测器可以再提高1% • 更激进的猜测? • 不仅猜测相关,同时猜测cache是否命中,进一步降低load延迟 • 结合预测器 • 相关paper
流水线各级的IPC分布 • 理想的IPC是4, 在哪里损失掉了? • 为什么?