计算机组成原理习题

1、与具有n个并列部件的处理器相比,一个n段的流水处理器__A__(计算机组成原理学习指导与习题解答,唐朔飞264页18题)
A、具备同等水平吞吐能力
B、不具备同等水平吞吐能力
C、吞吐能力大于前者的吞吐能力
ps:我选的错误答案是B,不理解什么是n个并列部件,我理解为和超标量技术是一样的。吞吐能力=吞吐量=吞吐率?这么理解对么?

2、在CPU寄存器中,__B__对用户完全透明的。(计算机组成原理学习指导与习题解答,唐朔飞265页30题)
A、程序计数器
B、指令寄存器
C、状态寄存器
ps:为什么程序计数器和状态寄存器对用户可见?MAR和MDR是不是对用户完全透明?

鄙人佩服楼主刁伶的思维和钻研的精神。愿与楼主讨论下鄙人对这两道题的做法。

1 本题楼主主要出错在对“吞吐率”的理解。
吞吐能力是由吞吐率决定的。
对于本题来说,吞吐率是指单位时间内CPU执行“指令段”的和。

楼主就错在这里, 是“指令段”的和,而不是“指令”的和。 因为在流水线中,假设每个指令段需要执行的时间为 t ,那么一条指令有n个段(n流水),执行一条指令需要 t×n 时间。可是在这t×n 时间内,指令确实只完成了1条,但是其他时间虽然没有完成一整条指令,它也完成了其中的几个指令段,这些被完成的指令段是必须加在吞吐量中的, 只要你做了其中一个段,就算有吞吐量! 否则不是不科学、不公平吗? 事实上吞吐率的定义也是如此。

n个并列部件的CPU意思就是n核心CPU 各个核心的主频、寄存器、寄存器位数、ALU一摸一样并且不共享。是单独的线程。每条指令都可以挂在任何一条线程上。倘若每条指令“段”的执行时间为 t ,那么单位时间可完成 1(单位时间) × n(n核心) ÷ t (用时/段) 个指令“段”。

在n段流水时,在一个新的指令开始时 (即取址周期时) 其他部件由于流水 分别在执行上几条指令的其他各个阶段。其他部件并没有闲着,而在 n 核心无流水时,虽然有n个执行线程,但是每个部件只工作1个段,之后便休息,休息是没有吞吐量的。而流水相当于n个段一直在工作,所以单位时间可完成 1 ÷ t × n (n个部件参与流水)

唐书上讲 吞吐率是执行指令的条数,其实也正确,如果楼主把n流水执行的部分指令段拼凑起来的话,楼主你会发现能拼成 n 个完整的指令。为什么那么巧? 因为流水错位是始终对称的嘛。

事实上楼主看一下他们的工作图:
1 2 3 (时间段)
n核心无流水: 核心1 部件1 #
部件2 #
部件n #
核心2 部件1 #
部件2 #
部件n #
核心n 部件1 #
部件2 #
部件n #
1核心n流水: 核心1 部件1 # # #
部件2 # # #
部件n # # #
这样就很清楚了。在流水中,这个部件在取址时,其他部件在继任上一条指令的执行周期,上上一条指令的编译周期。。。。他们没有闲着,一直在为吞吐量做贡献。
补充一点给楼主,目前先进的CPU比如AMD X4 PHONEN 和 Core i7 都采用了多核心多线程多流水,吞吐能力倍增!

2.状态寄存器肯定不能透明!比如执行程序 if ( a > b) ,那么状态寄存器其中之一:JNZ寄存器(寄存JNZ的寄存器)就会有一个值,通过这个值是0还是1,计算机可以进行 if 之后的分支选择:是选 a>b 还是选 else。 而这个值用户是可以访问到的! 因为用户有时候需要JNZ来进行人工选择分支。
顺便说一下:JNZ这个东西就是用来 判断 “ a - b 比 0大还是小 ”之后 选择执行语句的分支的。

程序计数器PC是用户用来定下一条指令的地址的,这个不能透明,因为程序之所以能够连续运行,就是因为用户先把需要运行的程序的第一条指令地址给PC,然后它自加1完成的。
你若不能写PC(即PC如果是透明的话),怎么让计算机了解你要运行哪个程序?

至于指令寄存器IR,它是一个现在正在执行的指令 的一个镜像放在IR中。
完全由计算机自己完成,用户最多了解现在正在执行程序的地址PC -1(程序计数器:下一条指令地址。 -1变成前一个地址,也就是正在执行的) 实在想要,去PC -1 取就成了,也不用访问IR。 楼主会问我,为什么不能IR也显示给用户?这样不更好吗?
IR是现在正在运行的指令,随意暴给用户更改是危险的,比如你正在看一个动漫,你能改它的文件名或者是内容吗? 不能,改了之后 你看的就和原本的东西有差异了(比如下一条指令本来人家顺序执行,结果用户给人家改成了一个找不到的地址),会出错的。
改IR就是会出错! 所以PC都可以改,IR是绝对不能改的。既然不能改,访问也可以通过PC -1 来访问,那要IR显示干啥? 干脆透明算了。

3.MAR MDR这两个东西是你访问内存时,假若内存是房子,它们就是进出内存的一个“门”。
必须先写到这个东西里面,它才给你自动转到内存中去,所以不能透明。

补充一点给楼主:透明的意思是:用户不可见(读)、用户不可改,但计算机却对他们的结构是完全了解的,计算机也可以自己读写他们。
温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网