首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >乘法和加法运算所需的时钟周期

乘法和加法运算所需的时钟周期
EN

Stack Overflow用户
提问于 2022-10-08 06:27:19
回答 1查看 98关注 0票数 2

关于“计算机系统:程序员对执行算术运算所需的时钟周期的观点”中的问题5.5,我有一个问题:

就上下文而言,每项操作所需的时钟周期如下:

因此,对于“双”运算,“加法”花费3个周期,‘乘法’5个循环。

我认为,对于每个循环,第7行将指定成本,因为它需要一个加法和乘法,这意味着成本是‘3+5’。

然而,标准的答案是,第8行实际上是限制,因此每个循环的成本是5个周期:

有人能帮我理解一下为什么限制线8而不是第7行吗?

附上类似的后续问题5.6及其答案,这次计算的上限为“5+3”

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-08 10:29:26

在问题5.5中,xpwr的每一次计算都依赖于以前对xpwr的计算(在编译器没有主动优化的情况下,例如循环展开),因此必须等待乘法的全部延迟。

result的计算依赖于以前对result的加法和可以并行完成的乘法。与乘法相比,加法具有较低的延迟,因此不限制计算。

更详细地说,CPU中的浮点操作(忽略负载、整数操作等)通常会发生如下情况:

将启动

  • 周期0:a[i] * xpwr (对于i =0)。
  • 周期0:result += a[i] * xpwr无法启动,因为它必须等待启动i 0:x * xpwr。(我想我们可以在周期0中开始这两种方法,因为文本中说,每个周期的乘法能力是2。它还说在独立运作之间必须有一个周期,但我看不出有这样的感觉,因为每个cycle.)
  • Cycle 5:a[i] * xpwrx * xpwr x * xpwr 5:result += a[i] * xpwr都启动了( i =0)。
  • 循环5:a[i] * xpwr启动( i = 1),

H 128循环5:D29

  • Cycle >是started.
  • Cycle 8:d32 finishes.
  • Cycle 8:result += a[i] * xpwr (对于i =1)。因为它的available.
  • Cycle不是finish.
  • Cycle 10:a[i] * xpwr和x * xpwr xpwr 10:result += a[i] * xpwr是启动的(对于i =1)。
  • 循环10:a[i] * xpwr被启动(对于i =2)。H 250H 151循环10:x * xpwr started.
  • Cycle 13:result += a[i] * xpwr完成。H 256F 257

然后每件事都会在五个周期内重复。

在问题5.6中,result = a[i] + x*result意味着,在我们得到result的前一个值之后,计算x*result需要五个循环,在得到乘法的结果之前,我们不能开始加法。然后计算a[i] + x*result需要三个周期,所以从一个result到下一个result需要8个循环。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73994881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档