为什么这个问题没有考虑控制器延迟?
Why is the controller latency not accounted for in this question?
建议的答案是 (a.):
a. 30(PC Read)+250(IM)+25(Mux)+150(RF)+25(MUX)+200(ALU)+25(mux)+20(Setup) = 725 ps
b. 30+250+25+150+25+200+250+25+20= 975 ps
c. 30+250+25+150+25+200+250=930 ps
d. 30+250+25+150+25+200+5+5+25+20=735 ps
e. 30+250+50+150+25+20=525 ps
f. 30+250+25+150+25+200+25+20=725ps
g. 975 ps
数据路径
正如您在建议的答案中看到的那样,控制器的延迟从未被考虑在内。同样,符号扩展的延迟也未在“f”部分中考虑。
我对问题“a”部分的解决方案与建议的答案完全相同,但我会为控制器添加 50,对于“f”部分,我还为符号扩展添加 50。
那么建议的答案是否正确?还是我?
您可以计算每个子组件的时间,主要是从左到右计算。从中您可以计算任何周期所需的最长时间,或使用约束进行评估,例如仅考虑 R 型指令。
计算子组件计时的方法是:
- endTime = startTime + 延迟时间,并且,
- startTime = max(组件输入的所有结束时间)
我们必须特别考虑图中的后边。它们是需要设置时间但不计入组件输入列表的寄存器写入。此图中有两个后沿,一个用于写入 PC,另一个用于写入寄存器文件。 (它们都从其他数据路径中脱颖而出,因为它们使用从右到左形成循环的 arrows/lines。)这两者都发生在周期结束时,因为时钟上升沿触发从后面捕获数据边缘进入寄存器。
由于 PC 子组件在此周期开始时没有输入,我们可以将其开始时间确定为 0。然后其延迟为 30ps(读取寄存器),因此其结束时间为 0+30ps。
鉴于此,我们可以通过使用 30ps 作为它们的开始时间并添加它们各自的延迟来确定指令存储器和 PC+4 加法器的结束时间。
pc+4 加法器在 30ps 时获得良好的输入,所以这是它的 startTime,它的延迟是 150ps;它在 180ps 时产生良好的输出。
同样,寄存器文件前面的mux在30ps时得到良好的输入,它的延迟是25ps;因此,多路复用器提供了 55ps 的良好输出。
寄存器文件有三个与此处相关的输入,分别附加到结束时间为 30ps、55ps 和 30ps 的组件;因此寄存器文件组件的 startTime 是 55ps...
等等。随着您的深入,您会发现一些较快组件的延迟被其他较慢组件或路径的延迟所隐藏。
建议的答案是 (a.):
a. 30(PC Read)+250(IM)+25(Mux)+150(RF)+25(MUX)+200(ALU)+25(mux)+20(Setup) = 725 ps
b. 30+250+25+150+25+200+250+25+20= 975 ps
c. 30+250+25+150+25+200+250=930 ps
d. 30+250+25+150+25+200+5+5+25+20=735 ps
e. 30+250+50+150+25+20=525 ps
f. 30+250+25+150+25+200+25+20=725ps
g. 975 ps
数据路径
正如您在建议的答案中看到的那样,控制器的延迟从未被考虑在内。同样,符号扩展的延迟也未在“f”部分中考虑。
我对问题“a”部分的解决方案与建议的答案完全相同,但我会为控制器添加 50,对于“f”部分,我还为符号扩展添加 50。
那么建议的答案是否正确?还是我?
您可以计算每个子组件的时间,主要是从左到右计算。从中您可以计算任何周期所需的最长时间,或使用约束进行评估,例如仅考虑 R 型指令。
计算子组件计时的方法是:
- endTime = startTime + 延迟时间,并且,
- startTime = max(组件输入的所有结束时间)
我们必须特别考虑图中的后边。它们是需要设置时间但不计入组件输入列表的寄存器写入。此图中有两个后沿,一个用于写入 PC,另一个用于写入寄存器文件。 (它们都从其他数据路径中脱颖而出,因为它们使用从右到左形成循环的 arrows/lines。)这两者都发生在周期结束时,因为时钟上升沿触发从后面捕获数据边缘进入寄存器。
由于 PC 子组件在此周期开始时没有输入,我们可以将其开始时间确定为 0。然后其延迟为 30ps(读取寄存器),因此其结束时间为 0+30ps。
鉴于此,我们可以通过使用 30ps 作为它们的开始时间并添加它们各自的延迟来确定指令存储器和 PC+4 加法器的结束时间。
pc+4 加法器在 30ps 时获得良好的输入,所以这是它的 startTime,它的延迟是 150ps;它在 180ps 时产生良好的输出。
同样,寄存器文件前面的mux在30ps时得到良好的输入,它的延迟是25ps;因此,多路复用器提供了 55ps 的良好输出。
寄存器文件有三个与此处相关的输入,分别附加到结束时间为 30ps、55ps 和 30ps 的组件;因此寄存器文件组件的 startTime 是 55ps...
等等。随着您的深入,您会发现一些较快组件的延迟被其他较慢组件或路径的延迟所隐藏。