考研复试计算机系统结构笔记.docx
《考研复试计算机系统结构笔记.docx》由会员分享,可在线阅读,更多相关《考研复试计算机系统结构笔记.docx(5页珍藏版)》请在冰豆网上搜索。
![考研复试计算机系统结构笔记.docx](https://file1.bdocx.com/fileroot1/2022-11/15/4733b45b-980d-4521-a47d-ccf260b30bc4/4733b45b-980d-4521-a47d-ccf260b30bc41.gif)
考研复试计算机系统结构笔记
1:
计算机系统的层次结构:
微程序机器级,传统机器语言机器级,操作系统机器级,汇编语言机器级,高级语言机器级,应用语言机器级。
2:
微程序机器级:
微指令系统,微程序直接由硬件实现。
传统机器语言机器级:
机器指令系统,由微程序解释执行。
操作系统机器级:
传统机器级指令和操作系统级指令,由第3级和第2级共同执行。
汇编语言机器级:
汇编语言,汇编语言程序翻译成第3级或第2级,然后执行。
高级语言机器级:
高级语言程序由编译器翻译到第4级或第3级。
应用语言机器级:
有应用程序翻译成第5级机器上的语言
3:
翻译就是先用转换器把高一级机器上的程序转换成低一级机器上等效程序,然后再低一级机器上运行,实现功能。
解释就是对于高一级机器上的程序中的每条语句或指令都转成低一级机器上的等效程序。
解释消耗时间多,但是空间少。
6层结构中,下3层解释实现,上3层翻译实现,下2层是物理机,上4层是虚拟机。
4:
计算机系统结构:
传统机器程序员所看到的计算机属性,即概念性结构与功能特性。
计算机组成:
计算机系统结构的逻辑实现,定义各部件的功能和各部件的联系。
计算机实现:
是指计算机组成的物理实现。
计算机系统结构定义了应有什么功能,计算机组成定义了怎么实现这些功能,计算机实现定义了实现这些功能的具体的物理器件。
相同系统结构的计算机因为速度,价格等方面要求不同,采用不同的计算机组成,而一种计算机组成采用不同的计算机实现,系列机就是相同体系结构但是不同组成和实现的不同型号的计算机。
系列机具有向上兼容(某种计算机编制的程序不加修改能运行比他高级的机器),向下兼容,向前兼容(某种计算机编制的程序不加修改能运行比他先出来的机器),向后兼容。
5:
计算机分类:
flynn分类法:
单指令单数据,单多,多单,多多。
冯氏分类法:
按一个字的位数和计算机同时处理的字数来确定。
Handler分类法:
程序控制部件,算术逻辑部件或处理部件,每个算术逻辑部件包含基本逻辑线路的套数。
6:
CPU时间=执行程序需要的时钟周期数*时钟周期时间
CPI,每条指令的平均时钟周期数。
IPC:
每个时钟周期完成的指令条数。
7:
程序的局部性原理:
程序执行时间的90%都是在执行程序中的10%的代码,时间局部性:
程序即将用到的信息很可能就是目前正在使用的信息。
空间局部性是指:
程序即将用到的信息很可能与目前正在使用的信息在空间上相近。
8:
计算机系统设计的任务:
确定用户对计算机系统的功能,价格和性能要求,软硬件功能分配,设计出生命周期长的系统结构。
9:
计算机设计的方法:
由上往下(面向特定的应用设计的,应用改变的时候会使软硬件变得不合适),由下往上(软件完全被动,造成硬件软件脱节),中间开始(首先确定软硬件功能分配,确定好这个界面,然后从界面往上设计操作系统,汇编,编译系统,往下设计传统机器级,微程序机器级)
10:
冯诺依曼:
计算机由运算器,控制器,存储器,输入设备,输出设备。
程序是指令驱动,程序预先存放在计算机存储器中,计算机按照程序指定的逻辑顺序执行这些程序,自动完成工作。
特点:
以运算器为中心,指令和数据同等对待,存储器是按地址访问并顺序编址的一维结构,指令的执行是顺序,指令由操作码和数据码组成,指令和数据由二进制表示。
11:
对冯诺依曼的改进:
所有部件读由控制器集中控制,导致不能并行操作,用DMA机制和通道机制改变。
为了减少程序运行过程中访问存储器的次数和提高访问速度,加入了通用寄存器和cache。
12:
模拟:
用软件的方法在一台计算机上实现另一台计算机的指令系统。
仿真:
用现有的一台计算机上的微程序去解释实现另一台计算机的指令系统。
仿真是用微程序解释执行,模拟是用机器语言解释执行,因此仿真比模拟快,但是计算机差别太大就不能仿真了。
13:
指令内部并行,指令级并行,线程级并行,过程级并行,程序级并行。
14:
如何提高并行技术:
时间重叠,资源重复,资源共享。
15:
CPU存放操作数的存储单元有3钟:
堆栈,累加器,通用寄存器,其中堆栈是隐式,累加器是半隐半显,通用寄存器是显式。
通用寄存器结构有三种,寄存器存储器,寄存器寄存器,存储器存储器。
16:
寄存器寻址,立即数寻址,偏移寻址,寄存器间接寻址,索引寻址,直接寻址,存储器间接寻址,自增寻址。
17:
改变控制流的指令:
分支,跳转,过程调用,过程返回。
18:
指令由两部分组成:
操作码和地址码,指令格式的优化是指如何用最短的位数来表示指令的操作信息和地址信息,可以采用哈弗曼编码和等长扩展码(让0000到1110代表15个操作码,让11110000到11111110代表15个,111111110000到111111111110代表15个)定长扩展码(用存储空间换硬件时间简单)
19:
CISC(复杂指令系统计算机):
指令多,功能多,但是指令使用频率悬殊,占用芯片面积大,CPI大。
RISC(精简指令系统计算机)指令条数少,功能简单,CPI低,充分利用流水线技术,只有load和store才能访问存储器。
20:
MIPS:
单字长定点指令平均执行速度每秒处理的百万级的机器语言指令数。
MFLOPS:
单字长浮点指令平均执行速度。
21:
流水线技术:
吧多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其他的子过程并行。
22:
流水线分类:
按照用于计算机等级的不同(部件级流水线,指令级流水线,系统级流水线)按照所完成的功能(单功能流水线,多功能流水线)多功能流水线进一步划分(静态流水线,动态流水线)按照是否有反馈(线性流水线,非线性流水线)按照流入流出顺序(顺序流水线和乱序流水线)
23:
流水线的问题:
瓶颈问题,流水线的额外开销,冲突问题。
24:
5段流水线:
取指令周期IF,指令译码/读寄存器周期ID,执行/有效地址计算周期EX,存储器访问/分支完成周期MEM,写回周期WB。
25:
流水线的相关:
数据相关:
(前一代码的结果是第二个代码的参数)。
名相关(反相关:
指令j写,而指令i读。
输出相关:
指令j写,指令i也写)控制相关:
分支指令引起的相关,条件语句和if体。
26:
流水线的冲突:
结构冲突(比如再同一个时刻两条指令都需要访存)数据冲突(比如第一条代码的结果要到5时刻才输出,但是第二条代码3时刻就要这个结果,有写后读,写后写,读后写几个冲突,使用定向技术可以解决,或者依靠编译器解决,实在不行就只能停顿了),控制冲突(分支导致的冲突,用预测分支,或者延迟分支(延迟分支就是,把一段代码放进延迟槽,然后一边执行分支一边执行延迟槽,逻辑上增长了分支执行的时间)解决。
)
27:
为了充分发挥流水线处理机的效率,实现高性能计算,有的流水线处理机设置向量数据表示和向量指令,这就是向量处理机,以前的都是标量处理机。
28:
向量的处理方式:
横向处理,纵向处理,纵横处理。
计算表达式D=A*(B-C),A是(a1,a2,a3…an)B是(b1,b2..bn),
横向处理就是a1*(b1-c1)->d1a2*(b2-c2)->d2这样每次都要发生(b1-c1)的结果给a1*的数据相关,不合适。
纵向处理就是先算出(b1-c1)(b2-c2)(b3-c3)…在一起的来a1*a2*a3*.
纵横处理就是:
分组,租内纵向处理,依顺序执行各组。
29:
向量处理机:
存储器存储器结构(纵向处理用,由于从存储器读出大量数据,需要存储器很高的贷款),寄存器寄存器结构(分组处理用),
30:
提高向量处理机性能常用技术:
设置多个功能部件,采用连接技术(就是先写后读的两条指令,可以吧功能部件连接起来进入流水处理),采用循环开采技术(把长向量分成长度固定的段,循环执行一个段)采用多处理机系统。
31:
指令级并行ILP:
采用资源重复,重复设置多个处理部件,让它们同时执行相邻或相近的多条指令,另一种是采用流水线技术,使指令并行。
32:
静态调度的流水线依靠编译器对代码进行静态调度,减少相关和冲突,一般是把相关指令拉开距离来减少停顿的可能。
动态调度是在程序执行过程中,依靠硬件对代码进行调度,通过硬件对指令顺序重新安排,减少数据相关导致的停顿,但是增加了硬件的复杂度。
33:
5段流水线的缺点:
如果某条指令堵塞了,后面的也都堵塞了。
动态调度把译码段ID工作分成2段,流出:
指令译码并检查是否存在结构冲突,如果不存在结构冲突,就将指令流出。
读操作数段:
等待数据冲突消失,然后读操作数。
34:
动态调度算法有记分牌算法和tomasulo算法:
动态调度算法:
维护三张表:
指令状态表,功能部件表,结果寄存器状态表,然后基于这3张表有记分牌算法对指令进行调度。
Tomasulo算法通过寄存器换名来解决WAR和WAW相关。
用保留站来达到寄存器换名,也是维护以上3张表。
35:
动态分支预测技术:
ILP越多,控制相关就越大,以前的预测分支,不是成功就是失败,但是动态分支预测就是根据分支指令过去的表现来预测其将来的行为。
多指令流出技术:
就是超流水线,每个时钟周期流出多条指令。
36:
存储系统的性能参数:
容量,平均每位价格,命中率,平均访问时间。
37:
三级存储系统:
cache—主存,主存—辅存结构,存储层次四问题:
映像规则,查找算法,替换算法,写策略。
38:
cache工作原理:
cpu要访问主存,把地址送入主存地址寄存器,然后主存cache转换器判定所访问的数据是否在cache中,如果在就把主存地址映射成cache地址,放入cache地址寄存器,然后用cache地址访问cache,再得到的数据给CPU,如果不命中,用主存地址访问主存,把块调入cache,再把CPU所要的数据或指令送给CPU。
39:
映像规则:
全相连(随机),直接相连(依次),组相连(cache以组为单位,直接相连,组内部全相连)
40:
cache查找方法:
主存地址分为3部分,标识,索引,块内位移。
前两者组成块地址。
Cache有一个目录表,记录每一个cache块所对应主存块中的地址的标识部分,目录表中每一项设置一个有效位,如果对应的信息有效,就设置为1。
由于是块替换。
所以找到块就可以了,块内位移用主存的快内位移就行了。
对于组相连就是先用索引找到组,然后用标识找到组里面的块,再用块内位移读出需要的数据。
41:
替换算法:
随即替换,先入先出替换,最近最少使用替换LRU(堆栈,比较对)
42:
写策略:
写直达法(cache和主存都要写),写回法(只写cache,只有当数据变化的时候才写入主存)
43:
改进cache性能有:
降低不命中率,减少不命中开销,减少命中时候。
44:
降低不命中时间:
强制性不命中:
cache中没有找到块。
容量不命中:
由于程序所需的块不能完全放入cache,某些快被替换以后又访问。
冲突不命中:
太多的内存块映射到cache块上,出现访问被替换的块。
解决方法有:
增加cache块的大小,增加cache容量,提高相连度,伪相连cache(如果不命中,就按一定的算法检查cache的另一个块),硬件预取(如果cache不命中,就去主存调两个块给cache,一个是被请求指令块,一个是顺序的下一指令的块,第一个给cache,第二个给缓冲区)编译器预取(编译器在程序中加入预取指令实现预取)编译优化(用软件的方法对代码进行优化,比如内层循环跨块,就不好,要改成外层循环跨块就好)牺牲cache(牺牲一部分cache来存放被替换出去的块,每次不命中,先查看这些块)
45:
减少cache不命中开销:
两级cache(就是用更快的cache拉低平均不命中开销)读不命中优先于写(读不命中的时候检查写缓冲,如果写缓冲的地址和读的地址不一样,就继续处理读不命中)写缓冲合并(两次写缓冲,如果写向同一个地址,就合并)请求字处理(一个cache块中往往只有一个字是CPU需要的,所以不等整个块调入cache,就把该字发给cpu,让cpu开始运行)非阻塞cache(cpu无须在cache不命中时停顿,直接执行后面的指令)
46:
减少命中时间:
容量下,结构简单的cache,虚拟cache(