找回密码
 欢迎注册
查看: 6365|回复: 4

[讨论] CPU的效率问题

[复制链接]
发表于 2010-10-8 16:25:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
假设有一个主频为1G的CPU,对于每一条需要处理的指令,需要通过一个长度为12级的流水线。
为了简单起见,假设所有的指令所需要的处理时间都是类似的,但是存在一些随机因素:在流水线的每一级,每条指令需要花费1到3个时钟周期(其中花费1个时钟,2个时钟或者3个时钟的概率都是1/3).
另外,对于流水线的每一级,如果当前没有指令可以处理,那么必须空等待;如果当前还在处理某一条指令,而这时,前一级流水线处理完一条指令,那么前一级处理完的这条指令会被放置在一个缓冲区中。其中每一级的缓冲区可以最多缓冲5条指令。而如果缓冲区满,那么这一级也要停止下来,直到缓冲区有空。
请问,对于这样的一个CPU模型,平均每秒可以处理多少条指令?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-10-8 17:23:20 | 显示全部楼层
读了若干遍题目,还是没有读懂。

存在若干问题:

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


举一个例子也许能够让人更明白题意。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-10-8 17:48:53 | 显示全部楼层
是的,12个步骤,但是有先后关系。
对于每一条指令,必须先处理步骤1,然后步骤2,...
只有一个CPU,但是可以同时做12个步骤(当然必需不同指令的不同步骤)。
指令无数条,要求按严格顺序执行(对于每个步骤)
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-10-11 07:51:26 | 显示全部楼层
主要是大家对CPU的运作机理不清楚,里面涉及的指令、流水线、缓冲区等专业术语很难理解。
与Key版一样,我也是读了好多遍,没搞明白。

是不是这样的:有一个12级的流水线,开动后每一级可同时处理,指令从流水线前端进入,但由于各指令不同步骤花费时间可能有所不同,造成流水线会出现某些级积压(需要缓存,但容量有限),有些级出现“饥渴”等待状态。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-10-11 08:27:31 | 显示全部楼层
理解得非常正确
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-6 09:24 , Processed in 0.072776 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表