微处理器之Trace Cache浅析

文章探讨了处理器内流水线处理分支指令的性能问题,提出使用TraceCache技术降低分支预测失败带来的开销。通过缓存译码指令集,减少译码时间和避免流水线刷新,有效提升了指令执行速度。此外,TraceCache还减少了指令预取要求的字节对齐和译码配对问题,实现了更高的性能增益。
部署运行你感兴趣的模型镜像

问题背景是这样的:随着处理器内流水线越来越长,主频越来越高,分支问题带来的性能损失就越来越明显了。根据统计,分支指令占指令总数的10%(静态),15%(动态)。也就是说平均每处理6~7条指令就出现一条条件转移指令。比如流水线的深度为25,当出现条件转移时,整个流水线都需要被刷新,这个性能损失是难以容忍的。尽管可以采用分支预测等手段来减缓条件转移带来的开销,但并不能彻底解决问题。

我们首先来研究一下分支指令的执行速度:

ExecTime = PredictTime + FailRate * FailPenalty

其中,ExecTime是执行分支指令的速度,PredictTime是预测成功情况下,指令的执行速度。FailRate是预测失败的概率,FailPenalty是分支预测失败时恢复流水线所耗费的时间。FailRate的降低主要依靠提升分支预测的准确率,可以通过在程序里添加一些信息告知编译器那个分支的概率更高点,但是想进一步提高就很困难了。Trace Cache的出现可以降低PredictTime和FailPenalty.

对于X86指令集,译码的时间是非常长的。流水线的大部分工作都是在执行译码,如果能把这部分时间去除或者大幅降低将大幅提高指令的执行速度。从这个角度出发,我们再接着考察实际的程序。事实上,处理器在执行程序的时候总是会处理循环的。这是因为现代处理器可以在1秒内轻易处理10GB以上条指令,如果没有循环,那么这一秒内的程序文件将达到10GB以上,而实际上可执行程序的大小通常是10KB~20MB,也就是说程序中的平均每条指令都需要执行1000次~1000,000次。根据这个观察的结果,如果我们能将1次的译码时间分摊在1000条甚至1000,000条指令上将大幅提升指令的执行速度。

Trace Cache正是基于这个理念实现的,如果把一个窗口内的指令集译码完毕后保存到一个缓冲区中,如果下次再需要执行时,直接从这个缓冲区中读取,不再进行译码将有效降低分支指令预测失败带来的开销。这有两个原因:第一个是可以降低FailPenalty。我们可以宏观的将处理器流水线分为两部分:取指译码部分和执行部分。如果分支预测失败,也只需要将执行部分的流水线清空,而不需要将取指译码部分的流水线清空。第二个原因是降低了PredictTime。这是因为如果分支预测成功了,可以直接从Trace Cache中加载译码之后产生的微操作(uOp),相当于消除了条件指令在译码流水线上耗费的时间。考虑到条件指令占总指令数量的15%左右,这个提升还是非常可观的。

Trace Cache还能带来其他的好处:

  • 消除指令预取要求的字节对齐。为了充分利用16字节对齐的指令预取要求,函数和循环的入口地址通常需要按照16字节对齐。而Trace Cache中直接加载微操作,这个要求就不需要了。
  • 可以消除译码配对问题。处理器通常将简单指令和复杂指令在不同的部件上执行,为了在执行微操作时充分实现部件之间的全并行,编译器在优化时需要按照一定的模式对译码后的微操作进行配对。而Trace Cache中直接加载的就是微操作,不需要再进行配对。
Trace Cache虽然有很多优点,但是其最大的缺点就是缓冲区耗费的空间比较大。占用较多的芯片面积,随着集成技术的进步,这个问题将会慢慢有所改观。
参考:http://memcache.drivehq.com/memparam/Bench/Other/TraceCache.htm

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

1. 一棵二叉树的顺存储情况如下: 中,度为2的结点数为( )。 A.1 B.2 C.3 D.4 2. 一棵“完全二叉树”结点数为25,高度为( )。 A.4 B.5 C.6 D.不确定 3.下列说法中,( )是正确的。 A. 二叉树就是度为2的 B. 二叉树中不存在度大于2的结点 C. 二叉树是有 D. 二叉树中每个结点的度均为2 4.一棵二叉树的前遍历序列为ABCDEFG,它的中遍历序列可能是( )。 A. CABDEFG B. BCDAEFG C. DACEFBG D. ADBCFEG 5.线索二叉树中的线索指的是( )。 A.左孩子 B.遍历 C.指针 D.标志 6. 建立线索二叉树的目的是( )。 A. 方便查找某结点的前驱或后继 B. 方便二叉树的插入与删除 C. 方便查找某结点的双亲 D. 使二叉树的遍历结果唯一 7. 有abc三个结点的右单枝二叉树的顺存储结构应该用( )示意。 A. a b c B. a b ^ c C. a b ^ ^ c D. a ^ b ^ ^ ^ c 8. 一颗有2046个结点的完全二叉树的第10层上共有( )个结点。 A. 511 B. 512 C. 1023 D. 1024 9. 一棵完全二叉树一定是一棵( )。 A. 平衡二叉树 B. 二叉排 C. 堆 D. 哈夫曼 10.某二叉树的中遍历序列遍历序列正好相反,则该二叉树一定是( )的二叉树。 A.空或只有一个结点 B.高度等于其结点数 C.任一结点无左孩子 D.任一结点无右孩子 11一棵二叉树的顺存储情况如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 A B C D E 0 F 0 0 G H 0 0 0 X 结点D的左孩子结点为( )。 A.E B.C C.F D.没有 12.一棵“完全二叉树”结点数为25,高度为( )。 A.4 B.5 C.6 D.不确定 二、填空题(每空3分,共18分)。 1. 的路径长度:是从根到每个结点的路径长度之。对结点数相同的来说,路径长度最短的是 完全 二叉树。 2. 在有n个叶子结点的哈夫曼中,总结点数是 2n-1 。 3. 在有n个结点的二叉链表中,值为非空的链域的个数为 n-1 。 4. 某二叉树的中遍历序列遍历序列正好相反,则该二叉树一定是 任一结点无左孩子 的二叉树。 5. 深度为 k 的二叉树最多有 个结点,最少有 k 个结点。 三、综合题(共58分)。 1. 假定字符集{a,b,c,d,e,f }中的字符在电码中出现的次数如下: 字符 a b c d e f 频度 9 12 20 23 15 5 构造一棵哈夫曼(6分),给出每个字符的哈夫曼编码(4分),并计算哈夫曼的加权路径长度WPL(2分)。 (符合WPL最小的均为哈夫曼,答案不唯一) 哈夫曼编码: 2. 假设用于通信的电文由字符集{a,b,c,d,e,f,g}中的字符构成,它们在电文中出现的频率分别为{0.31,0.16,0.10,0.08,0.11,0.20,0.04}。要求: (1)为这7个字符设计哈夫曼(6分)。 (2)据此哈夫曼设计哈夫曼编码(4分)。 (3)假设电文的长度为100字符,使用哈夫曼编码比使用3位二进制数等长编码使电文总长压缩多少?(4分) (1) 为这7个字符设计哈夫曼为(符合WPL最小的均为哈夫曼,答案不唯一): (2) 哈夫曼编码为: a:01;b:001;c:100;d:0001;e:101;f:11;g:0000 (3) 假设电文的长度为100字符,使用哈夫曼编码比使用3位二进制数等长编码使电文总长压缩多少? 采用等长码,100个字符需要300位二进制数,采用哈夫曼编码发送这100个字符需要261二进制位,压缩了300-261=39个字符。压缩比为39/300=13%。 3. 二叉数T的(双亲到孩子的)边集为: { <A,B>, <A,C>, <D,A>, <D,E>, <E,F>, <F,G> } 请回答下列问题: (1)T的根结点(2分): (2)T的叶结点(2分): (3)T的深度(2分): (4)如果上述列出边集中,某个结点只有一个孩子时,均为其左孩子;某个结点有两个孩子时,则先列出了连接左孩子的边后列出了连接右孩子的边。画出该二叉树其及前线索(6分)。 (1)T的根结点 (2)T的叶结点 : (3)T的深度 : (4)二叉树其及前线索为: 4.现有以下按前遍历二叉树的结果: 前:ABCEDFGHI 中:CEBGFHDAI 画出该二叉树的逻辑结构(5分),并在中加入中线索(5分)。 5.有电文:ABCDBCDCBDDBACBCCFCDBBBEBB。 用Huffman构造电文中每一字符的最优通讯编码。画出构造的哈夫曼,并给出每个字符的哈夫曼编码方案。(符合WPL最小的均为哈夫曼,答案不唯一) (1)构造哈夫曼(6分): (2)哈夫曼编码方案(4分):
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值