【组成原理】-经典面试题吐血整理

组成原理整体框架:https://blog.csdn.net/qq_39328436/article/details/114680942

说明:本篇文章是笔者为准备研究生复试和校招而写,因此主要针对问答,注重理解,而不在于细节计算。读者可以先查看上面的链接走一遍组成原理的整体框架结构。其中,重点难点以及易混淆的知识点,笔者会用其他文章进行了详述,在知识点处贴好了链接,有需要的可以查阅。组成原理是校招中不太会问到的一门课,但却是考研复试中非常重要的一门课

开始吧 (*^▽^*)

目录

系统概述

四门计算机专业课之间的关系

组成原理和体系结构的区别

冯诺依曼机的特点

计算机的层次结构【高汇操传微】

翻译程序

计算机性能指标

数据表示与运算

纠错与检错编码

原码反码补码移码

定点数的运算

溢出判断

边界对齐

存储方式

浮点数加减运算

IEEE 754 标准

并行进位加法器

存储系统

介绍一下计算机的多级存储系统

半导体存储器

SRAM VS DRAM

双端口RAM与多模块存储器

Cache与主存映射的原理

指令

寻址方式

数据寻址方式(10种)

变址寻址 VS 基址寻址

CISC VS RISC

CPU

CPU的结构和功能

指令周期 VS 机器周期 VS 节拍

机器字长 VS 存储字长 VS 指令字长

一条指令的执行过程

主存储器 VS 控制存储器

微程序 VS 程序

微程序控制器的基本结构

硬布线控制器 VS 微程序控制器

影响指令流水线的因素

流水线改进

总线

增强总线效能的办法

系统总线结构

总线仲裁

总线定时


系统概述

四门计算机专业课之间的关系

  • 数据结构研究的是数据和操作这些数据的算法,属于软件层面。
  • 组成原理研究的是如何实现计算机体系结构中的属性,属于硬件层面。
  • 操作系统是软件和硬件的交界面,是计算机最底层的软件。
  • 计算机网络研究的是计算机与计算机之间是怎么进行互联的。

组成原理和体系结构的区别

  • 计算机体系结构:指那些能够被程序员看到的计算机的属性。
  • 计算机组成原理:指如何实现计算机体系结构所体现出来的属性。
  • 以乘法指令为例,计算机是否有乘法指令,属于体系结构的问题。乘法指令是采用专用的乘法器,还是使用加法器和移位器构成,属于计算机组成的问题。

冯诺依曼机的特点

  1. 指令和数据以同等的地位存储,可按照地址访问
  2. 指令和数据都以二进制表示
  3. 存储程序思想:将指令以二进制代码的形式事先存入存储器中
  4. 以运算器为核心(现代计算机中以存储器为中心)

计算机的层次结构【高汇操传微】

  1. 高级语言机器:执行高级语言
  2. 汇编语言机器:执行汇编语言
  3. 操作系统机器:向上提供广义指令
  4. 传统机器:执行机器语言指令
  5. 微程序机器:执行微指令

翻译程序

  1. 汇编程序:汇编程序翻译成机器语言
  2. 编译程序:高级语言翻译成机器语言(一次性翻译,生成可执行代码)
  3. 解释程序:高级语言翻译成机器语言(一句一句翻译)

计算机性能指标

  1. 主频:1s内有多少个时钟周期
  2. IPS:1s内执行多少条指令
  3. CPI:1条指令消耗多少之中周期
  4. FLOPS:1s内执行多少次浮点运算(最能反映计算机的计算速度)

数据表示与运算

纠错与检错编码

  • 1.奇偶校验码
    • 奇校验:整个校验码的1的个数为奇数

    • 偶校验:整个校验码的1的个数为偶数

    • 检测出奇数位错误,没有纠错能力

  • 2.循环冗余校验码CRC

    • 利用多项式生成校验码

    • 检测出奇数位错误和双比特错误,选择合适的生成多项式才有纠错能力

  • 3.海明校验码

    • 本质是分组偶校验,多个校验位可以反应出错位置

    • 海明码有1位纠错能力,2位检错能力

  • 原码反码补码移码

    • 补码:可以将减法操作变成等价的加法操作
    • 反码:只是原码转换为补码的一个中间过程
    • 移码:移码=真值+偏置值,可以直观地比较出数据之间的大小
    • 范围:
      • 原码和反码的真值0有两种形式
      • 补码和移码的真值0只要一种形式
      • 补码和移码相差一个符号位
    • 转换
      • 正数的原反补码相同
      • [x]补-->全部取反+1-->[-x]补

  • 定点数的运算

    • 移位运算

      • 算数移位:不带符号位的移位,相当于乘2或者除2

      • 逻辑移位:全部移动

      • 循环移位:移出的位不丢弃

    • 加减运算

      • 原码加减:符号单独判断

      • 补码加减:符号带着算[A-B]补=[A]补+[-B]补

    • 乘法运算

      • 原码一位乘法

      • 补码一位乘法:booth算法

    • 除法运算

      • 原码除法:恢复余数法

      • 补码除法:加减交替法

  • 溢出判断

    • 一位符号位:正+正=负;负+负=正时溢出
    • 双符号位:01上溢;10:下溢
    • 符号位进位+最好数值位进位:01上溢;10:下溢
  • 边界对齐

    • 以空间换时间的思路,起始地址要能够被自身长度整除
    • 采用边界对齐后,访问一个字只需要一次访存
  • 存储方式

    • 大端方式:高字节存储在低地址(顺着存)
    • 小端方式:高字节存储在高地址(逆着存)
  • 浮点数加减运算

    • 对阶:小阶向大阶看齐
    • 尾数加减
    • 规格化
      • 左规:尾数的最高位为非有效位时进行左规
      • 右规:尾数溢出时右规
    • 舍入:在右规和对阶的过程中都有可能存在舍入的问题
    • 溢出判断
      • 阶码上溢:抛出异常
      • 阶码下溢:按机器0处理
  • IEEE 754 标准

    • 阶码用移码表示,尾数用原码表示,隐藏最高位的1
  • 并行进位加法器

    • 通过进位产生函数和进位传递函数,让加法器的多个进位同时产生

存储系统

  • 介绍一下计算机的多级存储系统

    • 主存-缓存:用来缓解速度压力,完全由硬件实现,缓存是主存的副本
    • 主存-辅存:用来缓解容量压力,有操作系统和硬件配合实现,主存是缓存的副本
  • 半导体存储器

    • 半导体存储器包括RAM和ROM,其中RAM又分为SRAM和DRAM
    • 是否易失:取决于断电之后还有存储的效果
    • 是否破坏:取决于读出之后是否还能继续存储
    • SRAM:存储原理是双稳态触发器,因此是易失性的,非破坏性性读出
    • DRAM:存储原理是栅极电容,因此是易失性的,破坏性读出
    • ROM:存储原理是熔丝,因此是非易失性的,破坏性读出
      • 其中包括EPROM,PROM等
  • SRAM VS DRAM

    • DRAM只需要两个电容结构简单,集成度高,行列地址分两次传送,因此存储成本低,发热量低,但是运行速度比较慢,常用主存
    • SRAM需要双稳态触发器结构复杂,集成度低,行列地址一次性传送,因此存储成本高,发热量高,但是运行速度比较快,常用cache
    • 另外虽然两者都是易失性的,但是由于电容中存储的电量即使不断电也维持不了太久,因此对DRAM要刷新,刷新方式包括集中刷新,分散刷新,异步刷新。
  • 双端口RAM与多模块存储器

    • 双端口与多模块存储器都是用来增加存储器读写带宽的
    • 双端口RAM
      • 就是通过一个busy信号对同一个RAM 进行读写控制
    • 多模块存储器
      • 分为单体多字存储器
        • 在单体多字存储器中,一次性可以读出多个字,因此会要求指令和数据连续存放,并且当只需要对单个字进行读写操作时,会产生不必要的读写时间
      • 多体并行存储器
        • 多体并行存储器指的是多个存储器有自己的读写控制,可以并行运行,他包括高位交叉编址,和低位交叉编址
        • 低位交叉编址是多个存储器轮流启动,采用流水线的方式进行读取,能有效提高存储器的带宽
        • 高位交叉编址实际上相当于扩充了存储器的容量,各个存储器之间会有忙闲不均的情况,对增强存储器的带宽没有实际作用
  • Cache与主存映射的原理

    • 将主存和cache划分为等大的块,将主存中常用的数据存放在cache中,两者通过地址形成映射关系。映射方式包括全相联映射,直接相连映射,和组相联映射。
      • 全相联映射:主存中的块可以存放在任意一个cache块中,地址划分为标记和块内地址
      • 直接相联映射:主存中的块只能被映射到唯一一块cache中,地址划分为标记,行号,块内地址
      • 组相联映射:主存张总的块只能被映射到某一组cache块中,但是在组内可以随意放置,地址划分为标记,组号,和块内地址

指令

  • 寻址方式

    • 在计算机中的寻址包括数据寻址和指令寻址
    • 指令寻址方式
      • 顺序寻址:PC+1
      • 跳跃寻址方式:修改当前PC值,目标地址=(pc)+指令字长+k*OFFSET
  • 数据寻址方式(10种)

    • 隐含寻址:有一个操作数隐含在ACC中
    • 立即寻址:地址字段为操作数的补码,执行阶段不访存
    • 直接寻址:地址字段操作数的地址,执行阶段1次访问
    • 间接寻址:地址字段为操作数的地址的地址,执行阶段多次访存(可能1次间址也可能多次间址)
    • 寄存器寻址:地址字段为寄存器号,寄存器中是操作数,执行阶段不访存
    • 寄存器间接寻址:地址字段为寄存器号,寄存器中是操作数地址,执行阶段不访存,可以扩大寻址范围
    • 相对寻址:地址码字段为相对地址,有效地址=pc+(指令长度/1B)+A
    • 基址寻址:有效地址=基址寻址器+地址码字段
    • 变栈寻址:有效地址=变址寻址器+地址码字段
    • 堆栈寻址:读写地址由堆栈寄存器给出
  • 变址寻址 VS 基址寻址

    • 变址寻址:变址寄存器内容用户可以改变,面向程序员,适合处理数组,编制循环程序
    • 基址寻址:基址寄存器内容用户不能改变,面向操作系统,适合处理程序浮动,利于多道程序设计
  • CISC VS RISC

    • RISC是精简指令集,CISC是复杂指令集
    • 在CISC中,指令系统非常庞大,指令数目很多,指令字长不固定,访存指令不加限制,各个指令的执行时间也相差很大,使用频率也相差很大,有较少的寄存器,一般适用于微程序控制,可以通过一定的方式实现流水线
    • 在RISC中,指令系统比较简单,指令数目比较少,指令字长固定,并规定只有LOAD和STORE指令可以访存,各个指令的执行时间相差不大,使用频率也相差不大,有很多的寄存器,一般适用于组合逻辑电路控制,必须实现流水线控制方式

CPU

  • CPU的结构和功能

    • 功能:【只做中间数】
      • 指令控制
      • 操作控制
      • 中断处理
      • 时间控制
      • 数据加工
    • 结构:
      • cpu由运算器和控制器构成。运算器中有累加器ACC,乘商寄存器MQ,算数逻辑单元ALU,以及暂存寄存器X。控制器中有CU和指令寄存器IR以及PC。
      • MAR,MDR在逻辑上属于主存,但实际上是放在CPU中的控制器中的
  • 指令周期 VS 机器周期 VS 节拍

    • 指令周期:从主存取出一条指令并执行的全部时间
    • 机器周期:一般把总线事务访问一次主存的时间定为机器周期
    • 指令周期中有若干机器周期,机器周期中有若干节拍
  • 机器字长 VS 存储字长 VS 指令字长

    • 机器字长:计算机能直接处理的二进制数据位数,为内部寄存器字长等长
    • 指令字长:一条指令的二进制位数
    • 存储字长:一个存储单元所能存储的二进制的位数
    • 三者都必须是字节的整数倍,彼此之间没有直接的制约关系
  • 一条指令的执行过程

    • 取指周期--FE--fetch:访问主存取指令分析指令

    • 间址周期--IND--indirect:访问主存取操作数的有效地址

    • 执行周期--EX--execute:访问主存取操作数

    • 中断周期--INT-interrupt:访问主存保存程序断点

  • 主存储器 VS 控制存储器

    • 主存储器在cpu内部,ram实现,存放数据和程序
    • 控制存储器在cpu内部,rom实现,存放微程序
  • 微程序 VS 程序

    • 程序是指令的集合,对程序员不透明
    • 微程序是微指令的集合,对程序员透明
    • 一条指令对应一个微程序,一个微程序由多个微指令构成,一条微指令对应多个微命令
  • 微程序控制器的基本结构

    • 指令送到指令寄存器后,取出操作码op送入微地址形成部件,产生初始微地址和后继微地址.
    • CMAR是微地址寄存器,接收微地址,为在CM中去读微指令做准备
    • CM中存储了各个指令对应的微程序
    • CMDR用于存储从CM中取出的微指令,操作码字段送到CPU内部,下地址字段送到顺序逻辑。
  • 硬布线控制器 VS 微程序控制器

    • 1.硬布线控制器是用组合逻辑电路来实现控制器中的CU,微程序控制器是用存储程序的思想来实现CU
    • 2.硬布线的执行速度块,微程序控制器执行速度慢
    • 3.硬布线繁琐,不规整,微程序控制器较规整
    • 4.硬布线应用于RISC,微程序控制器应用于CISC
    • 5.硬布线不易扩充,微程序控制器易于扩充
  • 影响指令流水线的因素

    • 结构冲突:多条指令在同一时刻争用统一资源(比如取址与取数据争用内存)
    • 数据冲突:按序发射,按序输出的流水线中,只可能有RAW(写后读冲突)
    • 控制冲突:遇到转移指令,或者其他改变PC的指令(指令流水线处理的必须是连续的任务)
  • 流水线改进

    • 超标量流水线:每个时钟周期并发多条独立的指令,配置多个功能部件
    • 超流水线:一个时钟周期内在分段,允许一个部件在一个时钟周期内多次使用
    • 超长指令字:多个操作码字段,多个部件并行执行

总线

  • 增强总线效能的办法

    • 猝发传输:读写一组连续的字时,只需要给出首地址即可
    • 总线复用:信号线在不同的时间传输不同的信息
  • 系统总线结构

    • 单总线
      • cpu和外设之间可以之间进行信息交换,无需中间设备干预;cpu与外设之间速度不匹配
    • 三总线
      • 主存总线+io总线+DMA总线
      • DMA总线在内存和高速外设之间传输数据,系统吞吐量提高,但是系统工作效率低
    • 双总线
      • 主存总线+io总线

      • 将低速设备从单总线上分离出来,但是增加通道等硬件设备

  • 总线仲裁

    • 解决多个主设备同时竞争总线控制权的问题

    • 集中仲裁方式:将所有的总线请求集中起来,利用特定的算法进行总裁

    • 分步仲裁方式:不需要总仲裁器,每个潜在的主模块都有自己的仲裁号和仲裁器
  • 总线定时

    • 总线双方在交换数据过程中需要时间上的配合,这一控制叫做总线定时
    • 同步定时方式:使用同一的时钟
    • 异步定时方式:双方通过握手信号来实现控制

输入输出设备

  • 磁盘冗余阵列RAID

    • 将多个磁盘组成一个独立的逻辑盘,数据在多个物理盘分割交叉存储,并行访问。可以使得数据存储更加安全,更加可靠
      • RAID0:类似低位交叉编址,没有容错能力
      • RAID1:镜像存储,粗暴地存储两份数据
      • RAID2:采用纠错的海明码磁盘阵列
      • 等级越高,可靠度越高
  • io控制方式

完结撒花✿✿ヽ(°▽°)ノ✿

猜你喜欢

转载自blog.csdn.net/qq_39328436/article/details/114849681