计算机组成原理易混淆知识点总结(持续更新)

目录

1.机器字长,存储字长与指令字长

2.指令周期,机器周期,时钟周期

3.CPI,IPS,MIPS

4.描述存储容量和速率的单位

5.翻译程序和汇编程序

6.计算机体系结构和计算机组成的区别和联系

7.基准程序执行得越快说明机器的性能越好吗?

8.对于位数相同的定点数和浮点数,可表示的浮点数个数比定点数个数多吗?

10.相联存储器

11.DRAM的刷新和再生

12.随机存取和随机存储器

13.Cache行的大小和命中率之间的关系

14.虚拟存储器页面大小的设置

15.指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?

16.指令和微指令的关系

17.数据通路和数据总线的区别

18.在开中断情况下,CPU 检测到中断就一定会立即响应吗?

19.向量中断、中断向量、向量地址三个概念是什么关系?

20.程序中断和调用子程序有何区别?


1.机器字长,存储字长与指令字长

不同的机器三者在数值上可以相等也可以不等:

机器字长CPU内部用于整数运算的数据通路的宽度(也就是CPU一次可以处理的二进制代码的位数)。通常等于ALU的宽度或通用寄存器的位数。

数据通路是指数据在指令执行过程中所经过的路径及路径上的部件,主要是CPU内部进行数据运算,存储和传送的部件,这些部件的宽度基本上要一致才能相互匹配。因此机器字长等于ALU的宽度或通用寄存器的位数。

存储字长:一个存储单元中包含的二进制代码的位数,它等于MDR的位数。

补充:MDR的位数:存储单元的位数        MAR的位数反映了最多可寻址的存储单元的个数,如MAR:10位,那么最多有2^10个存储单元,MAR的长度与PC的长度相等。

指令字长:一个指令字中包含的二进制代码的位数。

指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2个访存周期来取出一条指令,若指令字长等于存储字长,则只需要1个访存周期取指令,指令周期等于机器周期。
早期的存储字长一般与指令字长、字长相等,因此访问一次主存储器便可取出一条指令或一个数据。随着计算机的发展,指令字长、存储字长都可变,但必须都是字节的整数倍。

机器字长会直接影响加法器(ALU),内部总线宽度(数据通路的宽度)及寄存器的位数,进而影响数据的精度和表示范围;如果提高机器字长,一个数能表示的精度和范围就越高,但随之而来的是成本的增加

2.指令周期,机器周期,时钟周期

指令周期:CPU从主存中取出并执行一条指令所需的全部时间

取出并执行一条指令包括:取出指令-->分析指令-->执行指令,如下图所示:

对指令译码的过程就是分析指令的过程

机器周期:

机器周期又称CPU周期,一个指令周期常用多个机器周期表示。一个如上图所示,取指操作算一个机器周期,执行指令操作也算一个机器周期。

时钟周期:一个机器周期又包含若干时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)

CPU上标注的主频,例如主频=3.0GHz,就表示每秒钟可以发送3.0G次的时钟周期

若想了解得更加详细,推荐看看这篇:指令执行过程

3.CPI,IPS,MIPS

CPU时钟周期:上面讲过,时钟周期是CPU工作的最小时间单位。

主频:机器内部主时钟的频率,即时钟周期的导数(1/CPU时钟周期)。对于同一型号的计算机,主频越高,完成指令的一个执行步骤所用时间越短,执行指令的速度越快。

CPI(Cycle Per Instruction):执行一条指令所需要的时钟周期数。不同指令的时钟周期数可能不同,因此对于一个程序或一台机器来说,其CPI指该程序或该机器指令集中的所有指令执行所需的平均时钟周期数,此时CPI是一个平均值

指令执行速度:主频/平均CPI,主频表示CPU内部主时钟的频率,例如主频1.5GHz说明1s有1.5G=1.5*10^9个时钟周期。平均CPI表示一条指令的时钟周期数,所以 指令执行速度=主频/平均CPI,即1s执行的指令数

用户CPU时间:总时钟周期数/主频,总时钟周期数=CPI(一条指令的时钟周期数)*指令条数,主频:1s的时钟周期数,所以用户CPU时间=总时钟周期数/主频

一定不要记,看题目理解即可!

IPC:表示每个时钟周期运行多少条指令,机CPI的倒数(1/CPI)。

IPS(Instructions Per Second):每秒执行多少条指令,IPS=主频/平均PCI。

CPU执行时间:CPU时钟周期数/主频=指令条数*CPI*时钟周期的长度=(指令条数*CPI)/主频

CPU执行时间取决于三个要素:CPI,主频和指令条数。三个条件下过户制约,例如,更改指令集可以减少程序所含指令条数,但同时可能引起CPU结构的调整,从而可能会增加时钟周期的宽度(降低主频)。

MIPS(Million Instructions Per Second):每秒执行多少万条指令。

MIPS=指令条数/(执行时间*10^6)=主频/(CPI*10^6)

MIPS 对不同机器进行性能比较是有缺陷的。因为不同机器的指令集不同,指令的功能也就不同,比如在机器M1上某条指令的功能也许在机器M2上要用多条指令来完成;不同机器的CPI 和时钟周期也不同,因而同一条指令在不同机器上所用的时间也不同。

FLOPS(Floating-point Operations Per Second):每秒执行多少次浮点运算。

注意:

在描述存储容量、文件大小等时,K、M、G、T通常用2的幂次表示,如1Kb=2^10b;在描述速率、频率等时,K、M、G、T通常用10的幂次表示。如 1kb/s=10^3b/s。通常前者用大写的K,后者用小写的k,但其他前缀均为大写,表示的含义取决于所用的场景。

例题:

1.程序P在机器M上的执行时间是 20s,编译优化后,P执行的指令数减少到原来的 70%,而 CPI增加到原来的1.2倍,则P在M上的执行时间是()

解答:

假设原来的指令条数为x,则执行时间=指令条数*每条指令的时钟周期数*时钟周期的长度=

x*CPI*1/f        得到:20=(x*CPI)/f        所以原来的CPI=20f/x

经过编译优化后,指令条数减少为原来的70%,即指令条数为0.7x,而CPI增加到原来的1.2倍,即24f/x,则现在P在M上的执行时间=(0.7x * 24f/x) / f =24*0.7=16.8s

2.假定计算机 M1和M2具有相同的指令集体系结构,M1的主频为2GHz,程序P在M1上的运行时间为 10s。M2采用新技术可使主频大幅提升,但平均 CPI也增加到 M1 的 1.5 倍,则 M2的主频至少提升到多少才能使程序P在M2上的运行时间缩短为6s?

解答:

程序P在M1上的时钟周期数=指令条数xCPI=CPU执行时间x主频=10s*2GHz=2*10^10。M2的平均CPI为 M1 的1.5倍,因此程序P在 M2 上的时钟周期数 =1.5*2*10^10=3x10^10。
要使程序 P在 M2上的运行时间缩短到6s,则M2 的主频至少应为:

程序P所含时钟周期数/CPU执行时间=3x10^10/6s=5GHz

由此可见,M2的主频是 M1的 2.5 倍,但 M2 的速度却只是 M1 的 1.67 倍。

所以,这也可以看出主频高的CPU不一定比主频低的CPU快:

主频和实际的运算速度存在一定的关系,但目前还没有一确定的公式能够定量两者的数值关系,因为 CPU 的运算速度还要看 CPU 的流水线的各方面的性能指标(架构、缓存、指令集、CPU 的位数、Cache 大小等)。由于主频并不直接代表运算速度,因此在一定情况下很可能会出现主频较高的 CPU 实际运算速度较低的现象。

4.描述存储容量和速率的单位

在描述存储容量,文件大小等时,K,M,G,T通常用2的幂次表示,如1Kb=2^10b;在描述速率,频率等时,k,M,G,T通常用10的幂次表示,如1kb/s=10^3b/s。通常前者用大写K,后者用小写的k,但其他前缀均为大写。具体看表示的场景。

5.翻译程序和汇编程序

翻译程序有两种:一种是编译程序,它将高级语言源程序一次全部翻译成目标程序,只要源程序不变,就无须重新翻译。另一种是解释程序,它将源程序的一条语句翻译成对应的机器目标代码,并立即执行,然后翻译下一条源程序语句并执行,直至所有源程序语句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。

汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。

编译程序与汇编程序的区别:若源语言是诸如C、C++、Java 等“高级语言”,而目标语言是诸如汇编语言或机器语言之类的“低级语言”,则这样的一个翻译程序称为编译程序。若源语言是汇编语言,而目标语言是机器语言,则这样的一个翻译程序称为汇编程序。

6.计算机体系结构和计算机组成的区别和联系

计算机体系结构是指机器语言或汇编语言程序员所看得到的传统机器的属性,包括指令集、数据类型、存储器寻址技术等,大都属于抽象的属性。
计算机组成是指如何实现计算机体系结构所体现的属性,它包含许多对程序员来说透明的硬件细节。例如,指令系统属于结构的问题,但指令的实现即如何取指令、分析指令、取操作数、如何运算等都属于组成的问题。因此,当两台机器的指令系统相同时,只能认为它们具有相同的结构,至于这两台机器如何实现其指令,则完全可以不同,即可以认为它们的组成方式是不同的。

例如,一台机器是否具备乘法指令是一个结构的问题,但实现乘法指令采用什么方式则是一个组成的问题。许多计算机厂商提供一系列体系结构相同的计算机,而它们的组成却有相当大的差别。即使是同一系列的不同型号机器,其性能和价格差异也很大。

7.基准程序执行得越快说明机器的性能越好吗?

一般情况下,基准测试程序能够反映机器性能的好坏。但是,由于基准程序中的语句存在频度的差异,因此运行结果并不能完全说明问题。

8.对于位数相同的定点数和浮点数,可表示的浮点数个数比定点数个数多吗?

不是,可表示的数据个数取决于编码所采用的位数。编码位数一定,编码出来的数据个数就是一定的。n位编码只能表示 (2^n)个数,所以对于相同位数的定点数和浮点数来说,可表示的数据个数应该一样多(有时可能因为一个值有两个或多个编码对应,编码个数会有少量差异)。这里要与定点数与浮点数相同位数的表示范围区分:定点数能表示的精度高,但是范围比浮点数小。

9.存储器的性能指标

存储器的主要性能指标主要有3个:存储容量,单位成本,存储速度。这里只讲存储速度:

① 存取时间(Ta):存取时间是指从启动一次存储器操作到完成该操作所经历的时间,分为读出时间和写入时间。
② 存取周期(Tm):存取周期是指存储器进行一次完整的读/写操作所需的全部时间,即连续两次独立访问存储器操作(读或写操作)之间所需的最小时间间隔。

③主存带宽(Bm):也称数据传输速率,表示每秒火主存进出信息的最大数量,单位为字/秒、字节/秒(B/s)或位/秒(b/s)。

例如,某存储器存储周期为250ns,每次读出16位,该存储器的数据传输速率()

16bit=2Byte,数据传输速率为2B/(250*10^-9)s=8*10^6B/s

存取时间不等于存取周期,通常存取周期大于存取时间。这是因为对任何一种存储器,在读/写操作之后,总要有一段恢复内部状态的复原时间。对于破坏性读出的存储器,存取周期往往比存取时间大得多,甚至可达Tm=2Ta,因为存储器中的信息读出后需要马上进行再生。

10.相联存储器

按内容寻址的存储器是相联存储器,但是相联存储器不止按内容寻址。

相联存储器的基本原理是把存储单元所存内容的某一部分作为检索项(即关键字项)去检索该存储器,并将存储器中与该检索项符合的存储单元内容进行读出或写入。所以它是按内容或地址进行寻址的,价格较为昂贵。一般用来制作 TLB、相联 Cache 等。

11.DRAM的刷新和再生

DRAM 电容上的电荷一般只能维持1~2ms,因此即使电源不断电,信息也会自动消失。

读操作会使其状态发生改变(破坏性读出),需读后再生,这也是称其为动态存储器的原因。

刷新可以采用读出的方法进行,根据读出内容对相应单元进行重写,即读后再生。

对同一行进相邻两次刷新的时间间隔称为刷新周期,通常取2ms。常用的刷新方式有以下3种:集中刷新,分散刷新,异步刷新。

DRAM 的刷新需要注意以下问题:① 刷新对 CPU是透明的,即刷新不依赖于外部的访问;② DRAM 的刷新单位是行,由芯片内部自行生成行地址;③ 刷新操作类似于读操作,但又有所不同。这里的“读”并不是把信息读入CPU,而不是从CPU向主存存入信息,他只是把信息读出,通过一个刷新放大器后又重新存回存储单元,而刷新放大器是集成在RAM上的所以,一次完整的刷新过程只需要占用一个存储周期另外,刷新时不需要选片,即整个存储器中的所有芯片同时被刷新

注:虽然DRAM的刷新和再生都是恢复数据,但刷新与再生过程并不完全相同。刷新是以行为单位,逐行恢复数据的,而再生仅需恢复被读出的那些单元的数据。

12.随机存取和随机存储器

随机存取与随机存储器(RAM)不同,只读存储器(ROM)也是随机存取的。因此支持随机存取的存储器不一定是RAM。

ROM可分为:ROM 可分为掩模式只读存储器(MROM)、一次可编程只读存储器(PROM)、可擦除可编程读存储器(EPROM)、Flash存储器和固态硬盘(SSD)。

Flash 存储器是在 EPROM 的基础上发展起来的,它兼有 ROM 和 RAM 的优点,可在不加电的情况下长期保存信息,又能在线进行快速擦除与重写。Flash存储器既有EPROM 价格便宜、集成度高的优点,又有E^2PROM 电可擦除重写的特点,且擦除重写的速度快。常用作辅存SSD硬盘和U盘都是采用了Flash技术。

:Flash存储器在写入前要擦除原有数据,写速度比读速度慢。

13.Cache行的大小和命中率之间的关系

Cacbe 行的长度较大时,能充分利用程序访问的空间局部性,使一个较大的局部空间被一起
调到 Cache 中,因而可以增加命中机会。

但是,行长也不能太大,主要原因有两个:

1)行长大使失效损失变大。也就是说,若未命中,则需花更多时间从主存读块。

2)行长太大,Cache 项数变少,因而命中的可能性变小。Cache 行的长度较小时,命中率会很低,但好处是存取块的代价较小。所以通常为几本字节到上百字节

14.虚拟存储器页面大小的设置

虚拟存储系统的页面是设置得大一些好还是设置得小一些好?页面大小要适中。页面太小时,平均页内剩余空间较小,可节省存储空间,但会使得页表增大,页面太小时也不能充分利用空间局部性来提高命中率;页面太大时,可减少页表空间,但平均页内剩余空间较大,会浪费较多存储空间,页面太大还会使页面调入/调出的时间较长。

15.指令和数据均存放在内存中,计算机如何从时间和空间上区分它们是指令还是数据?

从时间上讲,取指令事件发生在“取指周期”,取数据事件发生在“执行周期”。从空间上讲从内存读出的指令流流向控制器(指令寄存器IR),从内存读出的数据流流向运算器(通用寄存器)。

16.指令和微指令的关系

控制部件通过控制线向执行部件发出各种控制命令,通常把这种控制命令称为微命令,而一组实现一定操作功能的微命令的组合,构成一条微指令。许多条微指令组成的序列构成微程序,微程序完成对指令的解释执行。

指令,即指机器指令。每条指令可以完成一个独立的算术运算或逻辑运算操作。在采用微程序控制器的CPU中,一条指令对应一个微程序,一个微程序由许多微指令构成,一条微指令会发出很多不同的微命令。

17.数据通路和数据总线的区别

各个功能部件通过数据总线连接形成的数据传输路径称为数据通路。数据通路表示的是数据流经的路径,而数据总线是数据传输的媒介。

18.在开中断情况下,CPU 检测到中断就一定会立即响应吗?

在开中断情况下,CPU总在每条指令执行结束时采样中断信号,此时若检测到中断请求信号会立即响应。即便是多重中断,CPU正在处理某个中断的过程中,由于中断屏蔽字的存在,CPU检测不到处理优先级更低的中断请求信号,因此若检测到中断请求信号,则说明新中断源的处理优先级更高,同样也会立即响应。

19.向量中断、中断向量、向量地址三个概念是什么关系?

中断向量:每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中断的中断服务程序入口地址构成一个表,称为中断向量表;也有的机器把中断服务程序入口的跳转指令构成一张表,称为中断向量跳转表。
向量地址:中断向量表或中断向量跳转表中每个表项所在的内存地址或表项的索引值,称为向量地址或中断类型号,其为中断服务程序的入口地址的地址
向量中断:指一种识别中断源的技术或方式。识别中断源的目的是找到中断源对应的中断服务程序的入口地址的地址,即获得向量地址。

20.程序中断和调用子程序有何区别?

两者的根本区别主要表现在服务时间和服务对象上不一样。

1)调用子程序过程发生的时间是已知的和固定的,即在主程序中的调用指令(CALL)执行时发生主程序调用子程序过程,调用指令所在位置是已知的和固定的。而中断过程发生的时间一般是随机的,CPU 在执行某个主程序时收到中断源提出的中断申请,就发生中断过程,而中断申请一般由硬件电路产生,申请提出时间是随机的。也可以说,调用子程序是程序设计者事先安排的,而执行中断服务程序是由系统工作环境随机决定的。
2)子程序完全为主程序服务,两者属于主从关系。主程序需要子程序时就去调用子程序,并把调用结果带回主程序继续执行。而中断服务程序与主程序二者一般是无关的,不存在谁为谁服务的问题,两者是平行关系。
3)主程序调用子程序的过程完全属于软件处理过程,不需要专门的硬件电路;而中断处理系统是一个软/硬件结合的系统,需要专门的硬件电路才能完成中断处理的过程。

4)子程序嵌套可实现若干级,嵌套的最多级数计算机内存开辟的堆栈大小限制;而中断嵌套级数主要由中断优先级来决定,一般优先级数不会很大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值