计算机组成原理常见面试题

   本意用于考研复试,以下是博主自己整理,博主是大四本科生,不能保证内容完全正确,请辩证地看,如果有问题可以在评论区指出我再修改。

   整理不易,我就不挂个二维码请游客付费了,如果可以的话,麻烦高抬贵手,点一下右下角的推荐吧!

 

IEEE754标准

 

  

符号位S

阶码

尾数

总位数

短实数

1

8

23

32

长实数

1

11

52

64

临时实数

1

15

64

80

  

 

 

 

 

 

                                                                      数符             小数点位置

根据IEEE 754国际标准,常用的浮点数有三种格式:

单精度格式32位,阶码为8位,尾数为23位.另有一位符号位S,处在最高位.

由于IEEE754标准约定在小数点左部有一位隐含位,从而实际有效位数为24位.这样使得尾数的有效值变为1.M .

阶码部分采用移码表示,移码值127,1到254经移码为-126到+127.

 

S(1位)

E(8位)

M(23位)

N(共32位)

符号位

0

0

0

符号位

0

不等于0

(-1)S·2-126·(0.M) 为非规格化数

符号位

1到254之间

-

(-1)S·2E-127·(1.M) 为规格化数

符号位

255

不等于0

NaN(非数值)

符号位

255

0

无穷大

0 有了精确的表示,无穷大也明确表示.对于绝对值较小的数,可以采用非规格化数表示,减少下溢精度损失.非规格化数的隐含位是0,不是1.

 

程序访问的局部性

l  时间局部性:如果一个存储项被访问,则可能该项会很快被再次访问.

l  空间局部性:如果一个存储项被访问,则该项及其邻近的项也可能很快被访问.

 

解释

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。

翻译的方式有两种,一个是编译,一个是解释。

l  编译型语言写的程序在执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,如果源程序不变以后要运行的话就不用重新翻译。

l  解释则不同,解释性语言的程序不需要编译,在运行程序的时候才翻译,翻译一句执行一句,不生成目标程序,这样解释性语言每执行一次就要翻译一次,效率比较低。

l  .java文件->编译->.class文件,编译成.class字节码,.class需要jvm解释,然后解释执行。Java很特殊,Java程序需要编译但是没有直接编译成机器语言,即二进制语言,而是编译成字节码(.class)再用解释方式执行。java程序编译以后的class属于中间代码,并不是可执行程序exe,不是二进制文件,所以在执行的时候需要一个中介来解释中间代码,这就是所谓的java虚拟机(JVM),也叫JDK。

l  C语言编译过程分成四个步骤:

1, 由.c文件到.i文件,这个过程叫预处理

将#include包含的头文件直接拷贝到hell.c当中;将#define定义的宏进行替换,同时将代码中没用的注释部分删除等

2, 由.i文件到.s文件,这个过程叫编译

3, 由.s文件到.o文件,这个过程叫汇编

高级语言->汇编语言->机器语言

4, 由.o文件到可执行文件,这个过程叫链接

将翻译成的二进制与需要用到库绑定在一块

 

字长

l  机器字长:计算机能直接处理的二进制位数

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

l  存储字长:一个存储单元存储二进制代码长度

l  CPI:执行一条指令需要的时钟周期数

l   

 

Cache的基本工作原理

Cache通常由两部分组成,块表和快速存储器.其工作原理是:处理机按主存地址访问存储器,存储器地址的高段通过主存-Cache地址映射机构借助查块表判定该地址的存储单元是否在Cache中,如果在,则Cache命中,按Cache地址访问Cache.否则,Cache不命中,则需要访问主存,并从主存中调入相应数据块到Cache中,若Cache中已写满,则要按某种算法将Cache中的某一块替换出去,并修改有关的地址映射关系.

 Cache和主存之间的映射方式

l  直接映射就是将主存地址映射到Cache中的一个指定地址.任何时候,主存中存储单元的数据只能调入到Cache中的一个位置,这是固定的,若这个位置已有数据,则产生冲突,原来的块将无条件地被替换出去.

l  全相联映射就是任何主存地址可映射到任何Cache地址的方式.在这种方式下,主存中存储单元的数据可调入到Cache中的任意位置.只有在Cache中的块全部装满后才会出现块冲突.

l  组相联映射指的是将存储空间的页面分成若干组,各组之间的直接映射,而组内各块之间则是全相联映射.

 

 

 

 

 

 Cache中主存块的替换算法

 

思想

优点

缺点

随机算法RAND

用软的或硬的随机数产生器产生上层中要被替换的页号

简单,易于实现

没有利用上层存储器使用的"历史信息",没有反映等程序局部性,命中率低.

先进先出FIFO

选择最早装入上层的页作为被替换的页

实现方便,利用了主存历史的信息

不能正确反映程序局部性原理,命中率不高,可能出现一种异常现象.

近期最少使用法LRU

选择近期最少访问的页作为被替换的页

比较正确反映程序局部性,利用访存的历史信息,命中率较高

实现较复杂

优化替换算法OPT

将未来近期不用的页换出去

命中率最高,可作为衡量其他替换算法的标准

不现实,只是一种理想算法

 

 

虚拟存储器的基本概念

虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩存的一种存储器系统

页式虚拟存储器

页式管理:是把虚拟存储空间和实际空间等分成固定大小的页,各虚拟页可装入主存中的不同实际页面位置.页式存储中,处理机逻辑地址由虚页号和页内地址两部分组成,实际地址也分为页号和页内地址两部分,由地址映射机构将虚页号转换成主存的实际页号.

页式管理用一个页表,包括页号,每页在主存中起始位置,装入位等.页表是虚拟页号与物理页号的映射表.页式管理由操作系统进行,对应用程序员的透明的.

段式虚拟存储器

段式管理: 把主存按段分配的存储管理方式.它是一种模块化的存储管理方式,每个用户程序模块可分到一个段,该程序模块只能访问分配给该模块的段所对应的主存空间.段长可以任意设定,并可放大和缩小.

系统中通过一个段表指明各段在主存中的位置.段表中包括段名(段号),段起点,装入位和段长等.段表本身也是一个段.段一般是按程序模块分的.

段页式虚拟存储器

段页式管理:是上述两种方法的结合,它将存储空间按逻辑模块分成段,每段又分成若干个页,访存通过一个段表和若干个页表进行.段的长度必须是页长的整数倍,段的起点必须是某一页的起点.

TLB(快表)

在虚拟存储器中进行地址变换时,需要虚页号变换成主存中实页号的内部地址变换,这一过程

缓存时首先要到主存查页表,然后才能根据主存物理地址访问主存的存取指令或数据。因此采用虚拟存储器机制后,访存的次数增加了。为了减少访存的次数,往往将页表中最活跃的几个页表项复制到高速缓存中。这种在高速缓存中的页表项称为快表(translation look aside buffer)

查表时,根据虚页表同时查找快表和慢表,当在快表中查到该虚页号时,就能很快找到对应的实页号,将其送入主存实地址寄存器,同时使慢表的查找作废,这时主存的访问速度没降低多少.如果在快表中查不到,则经过一个访主存的时间延迟后,将从慢表中查到的实页送入实地址寄存器,同时将此虚页号和对应的实页号送入快表

 

 

 

指令的执行过程

         读取指令

               指令地址(在PC中)送到地址寄存器                       

               读主存,读出内容(指令代码)送入指令寄存器IR

 

         分析指令

                  形成下一条指令的地址并送到PC中

 

         执行指令

               用一到几个执行步骤,完成指令的运算、操作功能,

               不同的指令操作步骤和具体运算、操作功能各不相同        

         检查有无中断请求

               无中断请求、进入下一条指令的执行过程

 

 

 

CISC(复杂指令集计算机

RISC(简单指令集计算机

指令系统

指令数

寻址方式

可访存指令

各种指令使用频率

各种指令执行时间

复杂,庞大

一般大于200

不固定

不加限制

相差很大

相差很大

简单,精简

一般小于100

固定32位

只有LOAD/STORE指令

相差不大

绝大多数在一个机器周期完成

优化编译实现

很难

较容易

程序源代码长度

较短

较长

控制逻辑实现方式

绝大多数为微程序控制

绝大多数为硬连线控制,应用流水线技术

RISC机的主要优点可归纳如下

①充分利用VLSI芯片的面积

②提高了计算机运行速度

③便于设计,降低成本,提高可靠性

④有效支持高级语言程序

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

指令流水线的基本概念

(1)流水线基本原理

流水线技术是一种显著提高指令执行速度与效率的技术.方法是:指令取指完成后,不等该指令执行完毕即可取下一条指令.

如果把一条指令的解释过程进一步细分,例如分成取指,译码, 访存,执行,和写回五个子过程,并用五个子部件分别处理这五个子过程.这样只需在上一指令的第一子过程处理完毕进入第二子过程处理时,在第一子部件中就开始对第二条指令的第一子过程进行处理.随着时间推移,这种重叠操作最后可达到五个子部件同时对五条指令的子过程进行操作.

 

(2)影响流水线性能的因素

l  结构相关是当多条同一时刻争用同一资源形成冲突

²  暂停一个时钟周期

²  单独设置数据存储器和指令存储器

l  数据相关是指令在流水线中重叠执行时,当后继指令需要用到前面指令的执行结果时发生的.

²  暂停时钟周期

²  数据旁路:把前一条指令的ALU计算结果直接输入到下一条指令

l  控制相关是当流水线遇到分支指令和其他改变PC值的指令时引起的.

 

 

 

2)RAID分类

其原理是将并行处理原理引入磁盘系统.它采用低成本的小温盘,使多台磁盘构成同步化的磁盘阵列,数据展开存储在多台磁盘上,提高了数据传输的带宽,并利用冗余技术提高可靠性

RAID-0级采用无冗余无校验,数据分布在多个物理磁盘.

RAID-1级采用磁盘镜像阵列技术.

RAID-2级采用海明纠错码的磁盘阵列,通过增加校验磁盘实现单纠错双检错功能.

RAID-3级是采用奇偶校验冗余的磁盘阵列,它也采用数据位交叉,阵列中只用一个校验盘.

RAID-4级是一种独立传送磁盘阵列,它采用数据块交叉,用一个校验盘.

RAID-5也是一种独立传送磁盘阵列,它采用数据块交叉和分布的冗余校验,将数据和校验位都分布在各磁盘中,没有专门的奇偶校验驱动器.

 

I/O方式

1. 程序查询方式

程序查询方式的核心问题是每时每刻需要不断查询I/O设备是否准备好.CPU不断地询问外设是否准备好:如果准备好,CPU执行IO操作;否则,CPU一直等待.CPU大部分时间处于等待状态,利用率不高.

2. 程序中断方式

  中断处理过程

中断处理过程可分以下几个步骤:

请求中断→响应中断→关闭中断→保留断点→中断源识别→保护现场→中断服务子程序→恢复现场→中断返回

3. DMA方式

DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。

DMA 方式与程序中断方式的比较

 

中断方式

DMA方式

(1) 数据传送

程序

硬件

(2) 响应时间

指令执行结束     

存取周期结束

(3) 处理异常情况

不能

(4) 中断请求

传送数据             

后处理

(5) 优先级

转载于:https://www.cnblogs.com/yuxiaoba/p/8646090.html

  • 43
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值