【问题标题】:What is the number of cycles needed to execute the following loop? [closed]执行以下循环所需的循环数是多少? [关闭]
【发布时间】:2015-10-14 11:24:13
【问题描述】:

考虑一个 4 级流水线处理器。所需的周期数 S1、S2、S3、S4阶段的4条指令I1、I2、I3、I4如下图:

    S1    S2    S3    S4
I1  2     1     1     1
I2  1     3     2     2
I3  2     1     1     3
I4  1     2     2     2 

执行以下循环所需的循环数是多少?

For (i=1 to 2) {I1; I2; I3; I4;}

选项是:

  1. 16

  2. 23

  3. 28

  4. 30


我的解释:


我哪里错了?

【问题讨论】:

  • 我投票结束这个问题,因为它与编程无关。

标签: parallel-processing cpu computer-science pipeline computer-architecture


【解决方案1】:

当使用以下时间线时,我得到 23 个周期:

【讨论】:

  • 为什么在第 S3 阶段的第一次迭代中为 intn 4 使用 1 个时钟周期,在第二次迭代中使用 2 个时钟周期?
  • @m.s.:您对这个问题的回答是完整的。有没有一种通用的方法可以找到给定指令集所需的周期数?
  • @displayName 我猜你需要某种“模拟器”来找出一组指令的周期数;这可以是上面使用的简单电子表格,也可以是完整的处理器模拟器。
  • @m.s.:我的想法是,如果我们有办法不仅证明 23 个周期是 得到的最佳时间,而且证明它不能做得比这更好,那就是锦上添花。
  • @displayName 这不是我的专业领域,但如果我要证明这样的事情,我会首先尝试将处理器建模为 petri 网或有限状态机;你可以在cs.stackexchange.com问这个问题
【解决方案2】:

答案应该是 23 个周期... 从时间线 10 开始你就错了

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2015-05-19
    • 1970-01-01
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多