多项式求和的算法比较.ppt

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
多项式求和的算法比较 组员:朱振强、杨浩蓝、龙景强、程帆瑾、刘树培 首先我们来看一下代码: 问题一:对于次数n,这段代码执行了多少次加法和乘法运算? 问题二:该运算的cep为何为8? 图5-12 双精度浮点数乘法: 延迟 5 发射时间 1 双精度浮点数加法: 延迟 3 发射时间 1 单精度浮点数乘法: 延迟 4 发射时间 1 单精度浮点数加法: 延迟 3 发射时间 1 整数乘法:延迟 3 发射时间 1 整数加法:延迟 1 发射时间 0.33 for( i = degree - 1; i = 0; i--) result = result * x + a[i]; return result; 在第一次讨论课的时候我们知道了所有的for循环在汇编时都会变为if语句,让我们来看一下这个for循环变为if语句是什么样的。 i=degree-1 loop: if(i0) {goto endloop; } result *= x; result += a[i] goto loop; endloop: 再来看下这个循环的汇编代码: mulsd %xmm0,%xmm1 # result *= x addsd 0xb2f60a0(%rdi,%rax,1),%xmm1 # result += a[i】 sub $0x8,%rax # i--, for 8-byte pointer cmp $0xfffffffff4d09f58,%rax # compare 0 : i jne 400690 polyh+0x10 # if !=, goto loop 注:i in %rax, a in %rdi, x in %xmm0, result in %xmm1 从来自上一次迭代的 result 的值开始,我们必须先把它乘以 x (需要 5 个时钟周期),然后把它加上 a[i] (需要 3 个时钟周期),然后得到本次迭代的值。因此,完成一次循环迭代需要 8 个时钟周期。由于后一个表达式 result += a[i] 的计算需要前一个表达式 result *= x 的值,所以这两个表达式的计算不能在流水线上同时进行。 问题三: 5.5的for循环: for ( i = 1; i =degree; i++,) {result += a[i] * xpwr; xpwr=x*xpwr;} 将其转换为if语句: i=1 loop: if(idegree) {goto endloop; } z *=xpwr; xpwr*=x result += z goto loop; endloop: 它的汇编代码如下: 400650 movsd (%rdi,%rax,1),%xmm3 # z = a[i] add $0x8,%rax # i++, for 8-byte pointer cmp $0xb2f60a8,%rax # compare N : i mulsd %xmm1,%xmm3 # z *= p mulsd %xmm0,%xmm1 # p *= x addsd %xmm3,%xmm2 # result += z jne 400650 poly+0x10 # if !=, goto loop 注: i in %rax, a in %rdi, x in %xmm0, p in %xmm1, result in %xmm2, z in %xmm3 我们可以看到,这里限制性能的计算是反复地计算表达式 p *= x。这需要一个双精度浮点数乘法(5个时钟周期),并且直到前一次迭代完成,下一次迭代的计算才能开始。两次连续的迭代之间,还要计算表达式 z *= p, 这需要一个双精度浮点乘法(5个时钟周期),以及计算表达式 result += z, 这需要一个双精度浮点加法(3个时钟周期)。这三个涉及浮点数运算的表达式的计算都可以在流水线上同时地进行。最终,完成一次循环迭代需要5个时钟周期。 * *

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档