- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CPU高效编程技术
核心系统数据库组 褚霸(余锋)
2013-5-7
微处理器的核心技术
流水线处理
运算器高速化
RISC和CISC
超标量执行
乱序执行
分支预测
缓存
多核心
2
了解处理器Nehalem E5620
长流水线 = 15级
X86指令解释为微指令后乱序执行
等待执行的微指令放在Reserveration Station
多个ALU运算单元并发、乱序执行
Reorder Buffer中实现串行化
Instruction Retirement
Pipeline
示例:4级和8级的流水线
Intel的长流水线
Front End
读入x86指令,
每个时钟周期
16字节
x86指令解析为微指令(μop)
微指令(μop)缓存
乱序执行-1
寄存器重命名
微指令进入保留站
分配临时寄存器
发射指令
各种运算
Load/Store
EU
EU
EU
乱序执行-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/cycle
Dependency Chain长度
指令优化
长流水线 = 15级
Branch prediction miss性能损耗大
减少Branch prediction miss率
减少/消除conditional branch
Bit运算代替比较
Comvg指令代替比较
充分发挥Intel处理器乱序执行的能力
避免指令间存在long dependency chain
避免指令间隐性的依赖关系,例如对eflags的依赖
CPU内部各部件访问速度
11
充分利用寄存器
# 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 (de);
12
位运算
int r;
if (!(val32)) { r=4; } else { r=0; val=32; }
if (!(val16)) { r+=2; val=8; } else { val=24; }
r += (!val);
return r;
13
并行执行
*op++?=?*ref++;
*op++?=?*ref++;
*op++?=?*ref++;
*op++?=?*ref++;
14
消除Conditional Branch
如何消除这个if语句
if (a b) {
r = c;
} else {
r = d;
}
Bit运算版本1
int mask = (a-b) 31;
r = (mask c) | (~mask d);
Bit运算版本2
int mask = (a-b) 31;
r = d + mask (c-d);
cmovg版本
r = (a b) ?c : d;
分支可能性提示
#define likely(expr) expect((expr) != 0, 1)
#define unlikely(expr) expect((expr) != 0, 0)
while likely(ipmatchlimit-(STEPSIZE-1))
{
…
}
16
The Blocking Technique
17
The 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 Intel x86 L1 cache
#define MEMORY_USAGE 14
#define HASH_LOG (MEMORY_USAGE-2)
#define HASHTABLESIZE (1 HASH_LOG)
struct?refTables
{
HTYPE?hashTable[HASHTABLESIZE];
};
18
memchr
magic_bits = ((unsi
您可能关注的文档
- ExcelVBA程序开发自学宝典第版doc.ppt
- Excel中文电子表格.ppt
- ExcelTraining.ppt
- EXCEL函数应用.ppt
- excel公式与函数.ppt
- Excel公式和函数.ppt
- EXCEL初级入门专用曹.ppt
- EXCEL公式和函数应用技巧.ppt
- Excel和Origin在处理物理实验数据中的应用.ppt
- Excel在财务分析中的应用.ppt
- 山东省临沂市2024-2025学年高二上学期期中考试生物含答案.pdf
- 广东省六校2024-2025学年高二上学期12月联考数学试题含答案.pdf
- 2025人教版物理重难点-必修一1.docx
- 河北省邯郸市部分学校2025届高三上学期第一次大联考模拟预测试题 生物 含答案.pdf
- 辽宁省鞍山市普通高中2025届高三年级上学期第三次月考政治含答案.pdf
- 广西壮族自治区玉林市2024-2025学年高一上学期11月期中考试 化学.pdf
- 江苏省徐州市2024-2025学年高二上学期期中考试数学含答案.pdf
- 2025届云学联盟12月联考数学试卷含答案.pdf
- 湖南省五市十校2024-2025学年高三上学期12月月考地理试题含答案.docx
- 湖南省长沙市长郡中学2024-2025学年高一上学期12月月考生物试题含解析.pdf
文档评论(0)