CPU高效编程技术课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《CPU高效编程技术课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPU 高效 编程 技术 课件
- 资源描述:
-
1、微处理器的核心技术 流水线处理 运算器高速化 RISC和CISC 超标量执行 乱序执行 分支预测 缓存 多核心1了解处理器Nehalem E5620 长流水线=15级 X86指令解释为微指令后乱序执行 等待执行的微指令放在Reserveration Station 多个ALU运算单元并发、乱序执行 Reorder Buffer中实现串行化 Instruction RetirementPipeline 示例:4级和8级的流水线Intel的长流水线Front End读入x86指令,每个时钟周期16字节x86指令解析为微指令(op)微指令(op)缓存乱序执行-1寄存器重命名微指令进入保留站分配临时寄
2、存器发射指令各种运算Load/StoreEUEUEU乱序执行-2存入临时寄存器EU中计算结果Load/Store按指令顺序写出结果指令生效,真正写入内存和物理寄存器触发具有数据依赖的指令执行指令量化分析 取指令,每个16字节/cycle X86指令解析为微指令 简单指令3条/cycle 复杂指令1条/cycle 保留站到EU的Port,总共6个P0,P1,P5到ALU单元P2,P3,P4到Load/Store单元Instruction Retirement,4条op/cycleDependency Chain长度指令优化 长流水线=15级 Branch prediction miss性能损耗大
3、 减少Branch prediction miss率 减少/消除conditional branch Bit运算代替比较 Comvg指令代替比较 充分发挥Intel处理器乱序执行的能力 避免指令间存在long dependency chain 避免指令间隐性的依赖关系,例如对eflags的依赖CPU内部各部件访问速度10充分利用寄存器#define LZ4_COPYSTEP(s,d)A64(d)=A64(s);d+=8;s+=8;#define LZ4_COPYPACKET(s,d)LZ4_COPYSTEP(s,d)#define LZ4_WILDCOPY(s,d,e)do LZ4_COPYP
4、ACKET(s,d)while(d32)r=4;else r=0;val=32;if(!(val16)r+=2;val=8;else val=24;r+=(!val);return r;12并行执行*op+=*ref+;*op+=*ref+;*op+=*ref+;*op+=*ref+;13消除Conditional Branch 如何消除这个if语句if(a 31;r=(mask&c)|(mask&d);Bit运算版本2int mask=(a-b)31;r=d+mask&(c-d);cmovg版本r=(a b)?c:d;分支可能性提示#define likely(expr)expect(exp
5、r)!=0,1)#define unlikely(expr)expect(expr)!=0,0)while likely(ipmatchlimit-(STEPSIZE-1)15The Blocking Technique16The Blocking Technique/Increasing memory usage improves compression ratio/Reduced memory usage can improve speed,due to cache effect/Default value is 14,for 16KB,which nicely fits into Int
展开阅读全文