mathe 发表于 2010-10-8 16:25:04

CPU的效率问题

假设有一个主频为1G的CPU,对于每一条需要处理的指令,需要通过一个长度为12级的流水线。
为了简单起见,假设所有的指令所需要的处理时间都是类似的,但是存在一些随机因素:在流水线的每一级,每条指令需要花费1到3个时钟周期(其中花费1个时钟,2个时钟或者3个时钟的概率都是1/3).
另外,对于流水线的每一级,如果当前没有指令可以处理,那么必须空等待;如果当前还在处理某一条指令,而这时,前一级流水线处理完一条指令,那么前一级处理完的这条指令会被放置在一个缓冲区中。其中每一级的缓冲区可以最多缓冲5条指令。而如果缓冲区满,那么这一级也要停止下来,直到缓冲区有空。
请问,对于这样的一个CPU模型,平均每秒可以处理多少条指令?

KeyTo9_Fans 发表于 2010-10-8 17:23:20

读了若干遍题目,还是没有读懂。

存在若干问题:


[*]是不是相当于$1$条指令需要按顺序进行$12$个步骤才能完成,每一级流水线处理其中一个步骤?
[*]只有$1$个CPU,这个CPU是不是可以同时干$12$件事情,每件事情对应一个步骤?
[*]指令有多少条?这些指令要按什么顺序执行?

举一个例子也许能够让人更明白题意。

mathe 发表于 2010-10-8 17:48:53

是的,12个步骤,但是有先后关系。
对于每一条指令,必须先处理步骤1,然后步骤2,...
只有一个CPU,但是可以同时做12个步骤(当然必需不同指令的不同步骤)。
指令无数条,要求按严格顺序执行(对于每个步骤)

gxqcn 发表于 2010-10-11 07:51:26

主要是大家对CPU的运作机理不清楚,里面涉及的指令、流水线、缓冲区等专业术语很难理解。
与Key版一样,我也是读了好多遍,没搞明白。

是不是这样的:有一个12级的流水线,开动后每一级可同时处理,指令从流水线前端进入,但由于各指令不同步骤花费时间可能有所不同,造成流水线会出现某些级积压(需要缓存,但容量有限),有些级出现“饥渴”等待状态。

mathe 发表于 2010-10-11 08:27:31

理解得非常正确
页: [1]
查看完整版本: CPU的效率问题