CPU高效编程技术课件_第1页
CPU高效编程技术课件_第2页
CPU高效编程技术课件_第3页
CPU高效编程技术课件_第4页
CPU高效编程技术课件_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微处理器的核心技术流水线处理运算器高速化RISC和CISC超标量执行乱序执行分支预测缓存多核心1微处理器的核心技术流水线处理1了解处理器Nehalem E5620长流水线 = 15级X86指令解释为微指令后乱序执行等待执行的微指令放在Reserveration Station多个ALU运算单元并发、乱序执行Reorder Buffer中实现串行化Instruction Retirement了解处理器Nehalem E5620长流水线 = 15级Pipeline示例:4级和8级的流水线Pipeline示例:4级和8级的流水线Intel的长流水线Intel的长流水线Front End读入x86指令

2、,每个时钟周期16字节x86指令解析为微指令(op)微指令(op)缓存Front End读入x86指令,x86指令解析为微指令(乱序执行-1寄存器重命名微指令进入保留站分配临时寄存器发射指令各种运算Load/StoreEUEUEU乱序执行-1寄存器重命名微指令进入保留站分配临时寄存器发射指乱序执行-2存入临时寄存器EU中计算结果Load/Store按指令顺序写出结果指令生效,真正写入内存和物理寄存器触发具有数据依赖的指令执行乱序执行-2存入临时寄存器EU中计算结果Load/Store指令量化分析取指令,每个16字节/cycleX86指令解析为微指令简单指令3条/cycle复杂指令1条/cycl

3、e保留站到EU的Port,总共6个P0,P1,P5到ALU单元P2,P3,P4到Load/Store单元Instruction Retirement,4条op/cycleDependency Chain长度指令量化分析取指令,每个16字节/cycle指令优化长流水线 = 15级Branch prediction miss性能损耗大减少Branch prediction miss率减少/消除conditional branchBit运算代替比较Comvg指令代替比较充分发挥Intel处理器乱序执行的能力避免指令间存在long dependency chain避免指令间隐性的依赖关系,例如对efl

4、ags的依赖指令优化长流水线 = 15级CPU内部各部件访问速度10CPU内部各部件访问速度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_COPYPACKET(s,d) while (d32) r=4; else r=0; val=32; if (!(val16) r+=2; val=8; else val=24; r += (!val);return

5、r;12位运算int r;12并行执行*op+=*ref+;*op+=*ref+;*op+=*ref+;*op+=*ref+;13并行执行*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;消除Conditional Branch如何消除这个if语句分支可能性提示#define likely(expr) expect(expr) != 0, 1

6、)#define unlikely(expr) expect(expr) != 0, 0)while likely(ipmatchlimit-(STEPSIZE-1)15分支可能性提示#define likely(expr) exThe Blocking Technique16The Blocking Technique16The Blocking Technique/ Increasing memory usage improves compression ratio/ Reduced memory usage can improve speed, due to cache effect/

7、Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache#define MEMORY_USAGE 14#define HASH_LOG (MEMORY_USAGE-2)#define HASHTABLESIZE (1 HASH_LOG)structrefTablesHTYPEhashTableHASHTABLESIZE;17The Blocking Technique/ Incrememchrmagic_bits = (unsigned long int) 0 x7efefefe 32) | 0 xfefe

8、feff;/* Set up a longword, each of whose bytes is C. */charmask = c | (c 8); charmask |= charmask 16; charmask |= charmask = sizeof (longword) longword = *longword_ptr+ charmask; if (longword + magic_bits) & magic_bits) != 0) 18memchrmagic_bits = (unsigned memchr续 const unsigned char *cp = (const un

9、signed char *) (longword_ptr - 1); if (cp0 = c) return (_ptr_t) cp; . if (cp7 = c) return (_ptr_t) &cp7; n -= sizeof (longword);19memchr续 19False sharing20False sharing20对齐cachelinetypedef union GFAllctr_t gfa; char align_gfaERTS_ALC_CACHE_LINE_ALIGN_SIZE(sizeof(GFAllctr_t); ErtsAllocatorState_t;cha

10、r *states = erts_sys_alloc(0, + ERTS_CACHE_LINE_SIZE - 1); states = (UWord) states) & ERTS_CACHE_LINE_MASK) ? (char *) (UWord) states) & ERTS_CACHE_LINE_MASK) + ERTS_CACHE_LINE_SIZE) : (char *) states);21对齐cachelinetypedef union 21perf listRAW HARDWARE EVENT DESCRIPTOR Even when an event is not avai

11、lable in a symbolic form within perf right now, it can be encoded in a per processor specific way. For instance For x86 CPUs NNN represents the raw register encoding with the layout of IA32_PERFEVTSELx MSRs (see Intel(R) 64 and IA-32 Architectures Software Developers Manual Volume 3B: System Programming Guide Figure 30-1 Layout of IA32_PERFEVTSELx MSRs) or AMDs PerfEvtSeln (see AMD64 Architecture Programmers Manual Volume 2: System Programming, Page 344, Figure 13-7 Performanc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论