【820复试】计算机组成原理面试问题
文章目录
- 1.DRAM三种刷新方式(重点)
- 2.指令集体系结构是什么?精简指令集和复杂指令集的区别
- 3.2路映射,内存单位为16字节,一个缓存块16行,要访问的块地址是1000 0001 1101 0011,怎么判断是否命中?
- 4.浮点数标准化的目的是什么?IEEE标准的方法是?
- 5.高级语言和低级语言的概念以及高级语言的优势是什么?
- 6.单中断和多重中断是什么?
- 7.中断处理的适合,恢复现场为什么要关中断?
- 8.外存储器的类别
- 9.例举ALU的6种指令
- 10.程序从读取到执行的流程
- 11.cache(重点)
- 12.计算机的工作过程
- 13.描述一下指令执行过程(重点)
- 14.C语言中浮点数类型及类型转换
- 15.为什么要用二进制来表示数据
- 16.有哪些技术能够提高CPU访存速度?
- 17.虚拟存储器是什么?有哪些虚拟存储器(重点)
- 18.CPU的功能
- 19.引入总线结构的好处
- 20.CPU响应中断要具备哪些条件
- 21.中断响应优先级和中断处理优先级分别指什么?
- 22.中断向量、向量中断、向量地址三者之间是什么关系
- 23.程序中断和调用子程序的区别
- 24.指令流水线(重点)
- 25.数据通路和控制器
1.DRAM三种刷新方式(重点)
DRAM(动态随机存取存储器)——主存储器。 存储数据需要定期刷新以防止信息丢失。
三种常见的DRAM刷新方式:
①自刷新:
计数器+定时器。空闲时计数器递增–>达到预设的阈值开始自刷新。刷新期间内部电荷被读出和重新写入,以确保存储的数据不会丢失。——由DRAM自身管理,无需主机干预。
②异步刷新:
由主机或内存控制器发出命令触发的刷新方式。周期性发送刷新请求到DRAM,从而确保数据得到更新。——由系统软件或硬件来管理。
③同步刷新:
与系统的时钟同步。根据系统时钟的周期来执行刷新操作。只需要确保内存控制器和DRAM之间的始终同步即可。
2.指令集体系结构是什么?精简指令集和复杂指令集的区别
指令集体系结构:软件和硬件之间接口的一个完整定义。
定义了一台计算机可以执行的所有知量的集合,每条指令规定了计算机执行什么操作、操作存放的地址空间以及操作数类型。
精简指令集:RISC架构的指令集相对较小且简单,每条指令都执行的操作比较基本,通常只包含简单的算术运算、逻辑操作和存储访问等基本操作。RISC架构通常采用固定长度的指令格式,并且每条指令只执行一个操作。RISC架构的设计目标是简化处理器的设计和实现,提高指令执行速度和系统的性能,同时降低处理器的成本和功耗。
复杂指令集:CISC架构的指令集数量较多且复杂,每条指令可以执行多个操作,包括复杂的地址计算、内存操作、字符串处理等。CISC处理器的指令可以实现更多的功能,但由于指令的复杂性,执行速度相对较慢。CISC架构的指令格式可以是变长的,且一条指令可以执行多个操作,这使得CISC处理器的指令执行过程相对复杂,并且难以实现高效的流水线和超标量等技术。CISC架构的设计目标是提供更多的指令和功能,以便于编程人员编写更简洁、更高级的程序,同时减少程序的指令数目和执行时间。
3.2路映射,内存单位为16字节,一个缓存块16行,要访问的块地址是1000 0001 1101 0011,怎么判断是否命中?
由块地址可知前12位位标记位,00为组索引,0011为块内偏移。
2路映射中,每组有两个缓存块,所有有8个组(16/2)。
确定访问的组索引00,看目标组中两个缓存块的标记位,查看0中的两个缓存块的标记位,比较目标块的标记位与组内两个缓存块的标记位是否相同,若有任一标记位效题,则命中。
4.浮点数标准化的目的是什么?IEEE标准的方法是?
浮点数标准化的目的:是为了提高浮点数表示的精度和范围,使得浮点数可以更有效地进行计算和比较。
IEEE标准定义了浮点数的表示形式、操作规则和舍入方式等。IEEE标准中,浮点数采用科学计数法表示,由三部分组成:符号位、指数部分和尾数部分。
符号位:0正1负;
指数部分:浮点数的阶码,以偏移值的形式表示。
尾数部分:表示浮点数的有效数字。
例如:单精度浮点数(32位),1位符号位、8位指数部分、23位尾数部分。
单精度浮点数0.0011010101–>二进制科学计数法:1.1010101*2^(-3)
指数部分为-3,加偏移值位-3+127=124—>二进制:0111 1100
位数部分:1.1010101,一般来说小数点左侧的1被省略,所以尾数部分为101 0101 0000 0000 0000
组合各部分得到IEEE标准下的浮点数表示:
0 (0111 1100) (101 0101 0000 0000 0000)
5.高级语言和低级语言的概念以及高级语言的优势是什么?
低级语言:是与计算机硬件紧密相关的编程语言,它直接使用计算机的底层结构和指令集来编写程序。(汇编语言、机器语言)
其中汇编语言是一种符号化的表示,每条指令对应到计算机的一条指令,但是仍然与底层的机器指令相对应。而机器语言则是由二进制代码组成,直接由计算机硬件执行。
高级语言:是与计算机硬件无关的编程语言,它使用人类可读的语法和结构来编写程序,而不需要直接考虑底层的硬件细节。 (C、C++、Java、Python)
高级语言的优势:
易学易用:高级语言采用人类可读的语法和结构,使得程序员更容易理解和学习,降低了编程的门槛。
可移植性:高级语言的代码与底层硬件无关,可以在不同的计算机平台上运行,提高了程序的可移植性和跨平台性。
抽象程度高:高级语言提供了丰富的数据结构、算法和函数库,使得程序员能够更高效地进行程序设计和开发,同时提供了更高的抽象程度。
易维护性:高级语言通常具有更清晰、更模块化的代码结构,易于阅读、理解和维护,有利于长期的软件开发和维护。
生产效率高:高级语言具有更高的表达能力和编程效率,可以更快地完成程序开发和调试,提高了生产效率和开发速度。
6.单中断和多重中断是什么?
单中断:(串行执行)
在单中断系统中,处理器一次只能处理一个中断请求。当一个中断请求被触发时,处理器会暂停当前的任务,跳转到中断服务程序(ISR),执行相应的中断处理操作。在中断处理完成后,处理器会返回到原来的任务继续执行
多重中断:(优先级调度)
在多重中断系统中,处理器可以同时处理多个中断请求。当多个中断请求同时发生时,处理器会根据中断的优先级选择其中一个中断进行处理,而其他的中断请求则被挂起等待。处理器会执行被选中的中断服务程序(ISR),完成相应的中断处理操作。在中断处理完成后,处理器会返回到原来的任务继续执行。
7.中断处理的适合,恢复现场为什么要关中断?
关中断是为了确保中断处理过程的可靠性和一致性。在处理中断时,为了保证中断处理程序的正确执行,通常需要在进入中断处理程序之前禁止其他中断的触发,以防止其他中断中断当前的中断处理过程。
关中断的目的是为了避免中断嵌套(即在处理一个中断的过程中,又触发了其他中断),从而导致中断处理程序的执行出现混乱或者不可预测的情况。
关中断还可以确保中断处理程序的原子性,即中断处理过程中不会被其他中断打断,从而保证中断处理的一致性和完整性。
8.外存储器的类别
硬盘驱动器、固态硬盘、光盘、闪存驱动器(U盘)、外部硬盘、网络存储、磁带存储。
9.例举ALU的6种指令
ALU算术逻辑单元:
算术运算指令:加法指令、减法指令、乘法指令、除法指令。
逻辑运算指令:与、或、非、异或指令。
移位和旋转指令:左移、右移、循环左移、循环右移。
比较指令。
10.程序从读取到执行的流程
取指令:从存储器中取出要执行的指令;
分析指令:对取出的指令进行译码分析,以确定要完成的操作,根据寻址方式的分析和指令功能的要求,形成操作数的有效地址,并按此地址取出数据,以实现程序转移。
执行指令:根据指令产生的控制信号和有效地址,按一定的算法形成指令操作控制序列,完成指令规定的功能。执行结束后若无异常,继续取出并执行下一条指令。
11.cache(重点)
缓存(Cache)是计算机系统中的一种高速存储器,用于临时存储频繁访问的数据或指令,以提高数据访问速度和系统性能。缓存通常位于处理器和主内存之间。
缓存结构:L1缓存、L2缓存、L3缓存。数据首先从L1缓存加载,若未命中则从L2缓存加载,依次类推;
缓存命中:处理器可以直接从缓存中获取数据或理论,避免访问主内存的开销,提高访问速度。
缓存未命中:会从主内存中加载所需的数据到缓存中,更新数据块。
替换策略:缓存空间已满且需要替换数据块时,用替换策略(LRU,最近最少使用)(FIFO,先进先出)。
写策略:缓存中的数据发生改变时,要同步到主内存中。常见的写策略(写回, Write Back)(写通过,Write Through)。
写回策略在数据发生改变时不立即将数据写入主内存,而是等到数据被替换出缓存时再写回主内存;
写通过策略在数据发生改变时立即将数据写入主内存,保持主内存和缓存的一致性。
12.计算机的工作过程
计算机的工作过程分为以下三个步骤:
- 把程序和数据装入主存储器。
- 将源程序转换成可执行文件。
- 从可执行文件的首地址开始逐条执行指令。
13.描述一下指令执行过程(重点)
程序中第一条指令的地址置于PC 中,根据PC 取出第一条指令,经过译码、执行步骤等,控制计
算机各功能部件协同运行,完成这条指令的功能,并计算下一条指令的地址。用新得到的指令地
址继续读出第二条指令并执行,直到程序结束为止。
- 取指令: PC 一>MAR—>M—>MDR—>IR
根据PC 取指令到IR, 将PC 的内容送MAR, MAR 中的内容直接送地址线,同时控制器将读信号送读
/写信号线,主存根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,
MDR 从数据线接收指令信息,并传送到IR 中。 - 分析指令: OP(IR)—>CU
指令译码并送出控制信号。
控制器根据IR 中指令的操作码,生成相应的控制信号,送到不同的执
行部件。在本例中, IR 中是取数指令,因此读控制信号被送到总线的控制线上。 - 执行指令: Ad(IR)—>MAR—>M—>MDR—>ACC
取数操作。
将IR 中指令的地址码送MAR, MAR 中的内容送地址线,同时控制器将读信号送读/写
信号线从主存指定存储单元读出操作数,并通过数据线送至MDR, 再传送到ACC 中。
此外,每取完一条指令,还须为取下一条指令做准备,形成下一条指令的地址,即(PC)+1 —> PC
。
14.C语言中浮点数类型及类型转换
以char->int->long->double 和
float->double最为常见,从前到后范围和精度都从小到大,转换过程没有损失。
- 从int 转换为float 时,虽然不会发生溢出,但int 可以保留32 位, float 保留24 位,可能有数
据舍入,若从int 转换为double 则不会出现。 - 从int 或float 转换为double 时,因为double 的有效位数更多,因此能保留精确值。
- 从double 转换为float 时,因为float 表示范围更小,因此可能发生溢出。此外,由于有效位数
变少,因此可能被舍入。 - 从float 或double 转换为int 时,因为int 没有小数部分,所以数据可能会向0 方向被截断(仅
保留整数部分),影响精度。另外,由于int 的表示范围更小,因此可能发生溢出。
15.为什么要用二进制来表示数据
从可行性来说,采用二进制,只有0 和1 两个状态,能够表示0 、1 两种状态的电子器件很多,如开关的接通和断开、晶体管的导通和截止、磁元件的正负剩磁、电位电平的高与低等,都可表示0
、1 两个数码。使用二进制,电子器件具有实现的可行性。
从运算的简易性来说,二进制数的运算法则少,运算简单,使计算机运算器的硬件结构大大简化
(十进制的乘法九九口诀表有55 条公式,而二进制乘法只有4 条规则)。
从逻辑上来说,由于二进制0 和1 正好和逻辑代数的假(false) 和真(true) 相对应,有逻辑代数的理
论基础,用二进制表示二值逻辑很自然。
16.有哪些技术能够提高CPU访存速度?
高速缓存(Cache)
缓存预取(Cache Prefetching):缓存预取是一种在缓存未命中时,预先从主内存中加载可能会被访问的数据块到高速缓存中的技术。通过预取机制,可以减少缓存未命中的发生次数,提高访存速度。
多通道存储器架构(Multi-channel Memory Architecture):
多通道存储器架构通过增加内存控制器通道的数量,同时并行访问多个内存模块,提高了内存访问带宽和速度。多通道存储器架构可以减少内存访问的瓶颈,提高CPU访存速度。
内存层次优化(Memory Hierarchy Optimization):内存层次优化是一种通过合理设计内存系统的层次结构和策略,提高数据访问的效率和速度的方法。
内存数据对齐(Memory Data Alignment):内存数据对齐是指将数据存储在内存中的地址按照特定的规则对齐,使得数据访问更加高效。对齐的数据访问可以减少内存访问的次数和延迟,提高CPU访存速度。
内存一致性模型优化(Memory Consistency Model Optimization):内存一致性模型是指多核处理器系统中不同核之间的内存访问一致性问题。通过优化内存一致性模型,可以降低多核处理器之间的通信开销和内存访问延迟,提高CPU访存速度。
17.虚拟存储器是什么?有哪些虚拟存储器(重点)
虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩存的一种存储器系统。
虚拟存储器的核心思想是将主存储器中的部分数据和指令交换到磁盘上,从而释放出主存储器的空间,使得可以运行更大的程序或者处理更多的数据。
①将主存储器和磁盘存储器结合起来,形成一个统一的地址空间。
②可以在主存储器和磁盘存储器之间动态地进行数据交换。
③允许程序访问比实际物理内存更大的虚拟内存空间。
页面式虚拟存储器、段式虚拟存储器、段页式虚拟存储器。
18.CPU的功能
中央处理器(CPU) 由运算器和控制器组成。
其中,控制器的功能是负责协调并控制计算机各部件
执行程序的指令序列,包括取指令、分析指令和执行指令;运算器的功能是对数据进行加工。
指令控制、操作控制、时间控制、数据加工、中断处理。
19.引入总线结构的好处
模块化设计:
总线结构将计算机系统划分为不同的模块,并通过总线连接这些模块,使得计算机系统更加模块化和可扩展。各个模块之间通过总线进行通信和数据传输,模块之间的连接和升级更加灵活方便。
提高可靠性:
总线结构可以提高计算机系统的可靠性。通过总线连接的各个模块之间相对独立,模块之间的故障不会影响到其他模块的正常工作。此外,总线结构也更容易实现冗余设计和故障恢复,提高了系统的可靠性和容错性。
降低成本:
总线结构可以降低计算机系统的成本。通过共享总线,各个模块之间可以共享通信和数据传输的资源,避免了不必要的重复设计和开销,降低了系统的总体成本。
提高性能:
总线结构可以提高计算机系统的性能。通过合理设计总线的带宽和传输速率,可以满足系统对于数据传输和通信的需求,提高系统的数据传输速率和处理能力,从而提高系统的性能。
20.CPU响应中断要具备哪些条件
1)在CPU内部设置的中断屏蔽触发器必须是开放的
2)外设有中断请求时,中断请求触发器必须处于“1”状态,保持中断请求信号。
3)外设(接口)中断允许触发器必须为"1"'这样才能把外设中断请求送至CPU 。
具备上述三个条件时, CPU 在现行指令结束的最后一个状态周期响应中断。
21.中断响应优先级和中断处理优先级分别指什么?
中断响应优先级是由硬件排队线路或中断查询程序的查询顺序决定的,不可动态改变;
而中断处理优先级可以由中断屏蔽字来改变,反映的是正在处理的中断是否比新发生的中断的处理优先级低(屏蔽位为"0", 对新中断开放),
若是,则中止正在处理的中断,转到新中断去处理,处理完
后再回到刚才被中止的中断继续处理。
22.中断向量、向量中断、向量地址三者之间是什么关系
1)中断向量:每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称
为中断向量。所有中断的中断服务程序入口地址构成一个表,称为中断向量表;也有的机器把中
断服务程序入口的跳转指令构成一张表,称为中断向量跳转表。
2)向量中断:指一种识别中断源的技术或方式。识别中断源的目的是找到中断源对应的中断服务
程序的入口地址的地址,即获得向量地址。
3)向量地址:中断向量表或中断向量跳转表中每个表项所在的内存地址或表项的索引值,称为向
量地址或中断类型号。
23.程序中断和调用子程序的区别
程序中断:
- 程序中断是在程序执行过程中发生的一种事件,导致程序的正常执行被暂停或者转移至其他处理程序。
- 中断通常由外部事件触发,如硬件故障、用户输入、定时器溢出等。
- 当发生中断时,处理器会立即停止当前正在执行的指令,保存当前的执行现场(如程序计数器、寄存器状态等),然后转移到中断处理程序来处理中断事件。
- 处理完中断事件后,处理器会恢复之前的执行现场,继续执行被中断的程序。
- 中断是一种异步事件,可以随时发生,而且通常由外部设备或者其他程序控制。
调用子程序:
- 调用子程序是在程序执行过程中主动调用另一个子程序来执行特定的任务,并在执行完成后返回到原来的程序。
- 调用子程序是一种同步的过程,主程序显式地调用了子程序,并等待子程序执行完毕后继续执行。
- 在调用子程序时,通常会将一些参数传递给子程序,子程序执行完毕后可以返回一个结果给主程序。
- 调用子程序通常是为了模块化程序、提高代码的可读性和可维护性,将程序分解为多个独立的功能模块。
24.指令流水线(重点)
指令流水线包括以下几个阶段:
- 取指阶段(Instruction Fetch): 在这个阶段,处理器从指令存储器中获取要执行的指令。通常会根据程序计数器(PC)中存储的地址,从指令存储器中读取指令,并将其送入流水线的下一个阶段。
- 译码阶段(Instruction Decode): 在这个阶段,处理器对获取到的指令进行译码,确定指令的操作类型以及涉及的寄存器或内存地址。译码完成后,处理器知道要执行的具体操作以及操作所需的操作数。
- 执行阶段(Execute): 在这个阶段,处理器执行指令所需的操作。这可能涉及到算术运算、逻辑运算、内存访问等操作,具体的执行过程取决于指令类型。
- 访存阶段(Memory Access): 如果指令需要访问内存,则在这个阶段进行内存访问。这可能涉及读取或写入内存中的数据,或者执行其他与内存相关的操作。
- 写回阶段(Write Back): 在这个阶段,处理器将执行阶段得到的结果写回到寄存器文件或内存中。这确保了后续指令可以访问到正确的数据。
影响流水线性能的因素
1)结构相关是当多条指令同一时刻争用同一资源形成冲突
解决方案:(1)暂停一个时钟周期(2)单独设置数据存储器和指令存储器
2)数据相关是指令在流水线中重叠执行时,当后继指令需要用到前面指令的执行结果时发生的.
解决方案:(1)暂停一个时钟周期(2)数据旁路:把前一条指令的ALU计算结果直接输入到下
一条指令
3)控制相关是当流水线遇到分支指令和其他改变PC值的指令时引起的.
解决方案:(1)延迟转移技术。将转移指令与其前面的与转移指令无关的一条或几条指令对换位
置,让成功转移总是在紧跟的指令被执行之后发生,从而使预取的指令不作废。(2)转移预测技术。
流水线越多,并行度就越高。是否流水段越多,指令执行越快?
错!
流水段缓冲之间的额外开销增大。每个流水段有一些额外开销用于缓冲间传送数据、进行各种
准备和发送等功能,这些开销加长了一条指令的整个执行时间,当指令间逻辑上相互依赖时,开销更大。
流水段间控制逻辑变多、变复杂。用于流水线优化和存储器(或寄存器)冲突处理的控制逻辑
将随流水段的增加而大增,这可能导致用于流水段之间控制的逻辑比段本身的控制逻辑更复杂。
25.数据通路和控制器
数据通路: 数据通路(Data Path)是计算机系统中负责数据传输和处理的部件集合。它由一系列的数据传输线路和功能单元组成,用于执行指令中的数据操作。数据通路的主要功能包括:
- 数据传输:负责从内存或者寄存器中读取数据,并将数据传递给运算单元或者存储单元。
- 运算:负责执行算术运算(如加法、减法、乘法、除法等)和逻辑运算(如与、或、非、异或等)。
- 存储:负责将运算结果存储到寄存器或者内存中。
控制器: 控制器(Controller)是计算机系统中负责控制和协调数据通路的部件。控制器根据指令的操作码和状态信息,控制数据通路的各个部件以正确的时序执行指令,完成指令的执行过程。控制器的主要功能包括:
- 指令解码:解析指令中的操作码,确定指令的类型和执行操作。
- 时序控制:根据指令的执行步骤和时序要求,生成时钟信号和控制信号,控制数据通路各个部件的工作。
- 状态管理:管理和维护数据通路的状态信息,如程序计数器、指令寄存器、标志寄存器等。
- 异常处理:监测和处理异常情况,如中断、陷阱、错误等,保证计算机系统的稳定和可靠运行。