组成原理
计算机系统概述
-
冯诺依曼结构是什么?
冯提出了存储程序的概念,以该思想为基础的计算机称为冯诺依曼机。
- 计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备五部分构成;
- 指令和数据同等地存储在存储器中,并可按地址寻址;
- 指令和数据以二进制代码表示;
- 指令由操作码和地址码表示;
- 指令按顺序存放,按顺序执行;
- 以运算器为中心;
-
现代计算机组织结构与冯诺依曼机的区别
以存储器为中心,IO操作绕过CPU,直接在IO设备和存储器之间完成;
-
什么是MAR,MDR,MMU
- MAR是Memory Address Register,即地址寄存器,用于寻址,位数对应存储单元的位数。
- MDR是Memory Data Register,即数据寄存器,位数等于存储字长。
- MMU是Memory Management Unit,即内存管理单元,是CPU用来管理虚拟存储器、物理存储器的控制线路,同时将虚拟地址映射为物理地址,以及提供硬件机制的内存访问授权。
特别地,MAR和MDR逻辑上属于存储器,但在现代计算机结构中是存在于CPU中的。同样的还有高速缓存Cache。
-
CPU如何区分数据和指令?
CPU根据指令周期的不同阶段区分数据和指令。
-
指令执行的过程?
-
取指令
根据指令地址(程序计数器PC提供)从存储器中取指令到指令寄存器IR
-
分析指令
- 对取出的指令进行译码分析,控制器根据指令的操作码生成相应的控制信号;
- 根据寻址方式将指令的地址码送MAR,送地址总线,控制单元CU读存储器,形成操作数的地址,取地址存至MDR;
-
执行指令
根据操作码生成的相关控制信号和操作数的地址,通过运算器的算术逻辑单元ALU运算完成指令。
-
-
低级语言与高级语言的概念,高级语言的优势?
- 低级语言泛指机器语言和汇编语言,机器语言由01组成,直接对应CPU指令与内存位置;汇编语言用字母组合表示01组合,方便记忆;
- 高级语言对低级语言进行了封装与抽象,使它更接近我们平常的思维,需要由翻译程序(编译程序或解释程序)翻译成低级语言才能被计算机识别;
- 高级语言的优势:表达能力更强,可方便地表示数据的运算和程序的控制结构,能更好的描述算法,容易学习掌握;
数据的表示与运算
注:D代表十进制,B代表八进制,H代表十六进制。
-
二进制如何转为八进制或十六进制?
- 对于转八进制,将二进制数分为3位一组,最左边加0补齐,而后对每组二进制数分别用对应的八进制数替代。
- 对于转十六进制,将二进制数分为4位一组,同上。
-
任意进制如何转为十进制?
使用按权展开相加法:将任意进制数的各位数码与它们的权值相乘,再把乘积相加;
小数点前$n$位则乘以$k^n$,小数点后$n$位则乘以$k^{-n}$
-
十进制如何转为任意进制?
- 对整数部分,使用除基取余法,最高位在下,最低位在上;
- 对小数部分,使用乘基取整法,最高位在上,最低位在下;
特别地,不是每个十进制数都可以用二进制表示,但是每个二进制数都可以用十进制表示。
-
字符编码ASCII码
0-31和127是控制字符。32是空格,48-57是0-9,65-90是A-Z,97-122是a-z。
-
海明码检错与纠错的关系
两个合法编码对应比特取值不同的比特数称为海明距离。
-
海明距离为$d+1$的编码能检测出d位差错。 因为在距离为$d+1$的检验码中,只改变d位的值,不可能产生另一个合法码。如奇偶校验码,海明距离为2,能查出单个错。
-
海明距离为$2d+1$的编码,能纠正d位差错。 因为此时,如果一个码字有d位发生差错,它仍然距离原来的码字距离最近,可以直接恢复为该码。
-
-
海明码校验原理
-
设$n$是有效信息位数,$k$为检验信息位数,应满足$n+k \leq 2^k-1$,若要检验两位错,则校验位需要增加一位。
-
校验位$P_i$在海明位号为$2^{i-1}$上,其余各位为信息位。
-
分组形成校验关系:被校验数据位的海明位号等于校验该数据位的各校验位海明位号之和。
或者,用二进制通配符,海明位号依次能检验$1,1,1,…$位上的数据。
-
校验位的值等于由该校验位所检验的各数据位的值求异或。
-
从高到低,每个校验位和参与形成该校验位的各数据位的异或,形成一列二进制数,若该数各位全0则代表无错。若某位为1说明该数据位有错,直接将该位取反。
-
-
循环冗余校验码CRC
- 首先已知信息码$k$位和生成多项式最高次幂为$r$;
- 移位,将原信息码向左移动$r$位,低位补0;
- 用该数对生成多项式的二进制数进行模2除法(即不借位),产生余数;
- 原信息码后附加上余数成为CRC码;
- 接收端对CRC码用生成多项式做模2除法,余数为0则无错,若某位为1说明该位出错,将该位取反。
-
原码,补码,反码
-
浮点数标准化的目的?具体规则如何?
统一进行表示有利于软件在不同环境上的移植。
- 采用三元组(数符,阶码,尾数)表示浮点数;
- 一共有32位,其中数符1位,阶码8位,尾数23位;
- 阶码采用移码表示,实际为阶码减去偏移量$2^7-1$;
- 尾数采用原码表示,除非阶码全1或全0,否则尾数默认表示1以后的部分;
-
布尔运算
- 与:全真则真,有假则假
- 或:有真则真,无真则假
- 非:取反
- 异或:相同则假,不同则真 或 同0异1
存储系统
-
DRAM和SRAM分别是什么?
- SRAM是静态随机存储器,存储元是双稳态触发器(六晶体管MOS),信息读出后不需要再生,存取快,集成低,功耗大,用于组成高速缓冲存储器;
- DRAM是动态随机存储器,存储元是一个晶体管,利用存储元电路中栅极电容上的电荷存储信息,电荷只能维持2ms,需要不断地刷新。密度更高,采用地址复用技术,容易集成,容量大,功耗低,但是存取比SRAM慢,用于组成大容量主存系统;
类型 SRAM DRAM 存储信息 双稳态触发器 栅极电容 破坏性读出 否 是 刷新或再生 否 是 送行列地址 同时送 分两次送 运行速度 快 慢 集成度 低 高 功耗 大 小 成本 高 低 用途 高速缓冲存储 主存内存 -
DRAM的三种刷新方式是什么?
集中刷新,分散刷新,异步刷新;
- 集中刷新:在一个刷新时间内利用固定的刷新时间对存储器所有行集中进行逐一再生,此时称为死时间,无法读写;
- 分散刷新:对每行的刷新分散到各个工作周期中,存储器工作周期因此分成两部分,前半部分用于正常读写或保持,后半部分用于刷新某一行;
- 异步刷新:异步刷新是前两种方法的结合,刷新周期除以行数,得到两次刷新的间隔t,在此间隔时间内对各行依次刷新一遍;
-
Cache和主存的映射方式有哪些?
-
直接映射
主存中的每一个块只能装入Cache的唯一位置,冲突时原来的块会被无条件替换出去。 $$ j=i \ mod \ 2^c $$ 其中,$j$是Cache的块号,$i$是主存的块号,$2^c$是Cache中的总块数。
-
全相联映射
主存中的每一块可以装入Cache中的任何位置。每行具有标记,用于指出该行取自主存的哪一块。 $$ j=i\ mod \ 1 $$
-
组相联映射
Cache空间分为大小相同的组,主存上的一个块可以装入一个组内的任意位置。即组内直接映射,组外全相联映射。 $$ j=i\ mod \ Q $$ 其中$Q \in[1,Cache]$,Cache中的块从0开始计算。
-
指令系统
-
CISC和RISC是什么?区别是什么?
- CISC是复杂指令系统计算机,如X86。主要特点:指令系统复杂庞大,指令长度不定,访存指令无限制,各种指令使用频率相差很大,执行时间相差也很大,控制器采用微程序控制,难以优化编译生成高效的目标代码程序;
- RISC是精简指令计算机,如ARM,MIPS。主要特点:指令系统简单,复杂指令由简单指令组合实现,指令长度固定,仅Load/Store指令访存,CPU中通用寄存器数量相当多,大部分指令在一个周期完成,以硬布线为主,特别重视编译优化工作,减少程序执行时间;
类型 CISC RISC 指令系统 复杂 简单 指令数目 多 少 指令字长 不定长 定长 可访存指令 无限制 仅Load/Store指令 指令执行时间 相差较大 多在一个周期 指令使用频度 相差较大 常用 通用寄存器 少 多 目标代码 难以优化 优化、高效 控制方式 微程序 组合逻辑、硬布线 指令流水线 可以实现 必须实现 兼容性 可兼容 难以兼容 运算速度 更慢 更快 成本 更高 更低 可靠性 更低 更高 -
XXX
中央处理器
-
指令流水线有哪些冲突?如何克服它们?
有结构相关、数据相关、控制相关三种冲突;
-
结构相关(资源相关):流水线中多条指令在同一时钟周期内争用同一功能部件的现象,即因硬件资源满足不了指令重叠执行的要求而发生的冲突;
解决办法:令流水线在完成前一条指令对数据的存储器访问时访问暂停取后一条指令;
-
数据相关:如某程序下一条指令会用到上一条指令计算的结果,称这两条指令为数据冒险;当各指令重叠操作可能改变对操作数的读写访问顺序从而导致数据相关冲突;
解决办法:
- 在前一条指令遇到数据相关时停顿后一条指令的执行;
- 设置相关专用通路,即数据旁路技术;
- 用编译器进行编译优化,调整指令顺序;
-
控制相关:执行转移、调用或返回等指令的时候改变程序计数器的值,从而造成断流;
解决办法:
- 对转移指令进行分支预测,尽早生成转移目标地址;
- 预取转移成功和不成功两个控制流方向上的目标指令;
- 加快和提前形成条件码;
- 提高转移方向的猜准率;
-
总线
-
数据线,控制信号线,地址线的数目分别有什么作用?
数据线的总数决定计算机的存储字长,地址线的数目决定计算机的存储单元个数,控制线的数目决定计算机能够发出信号的种类数目;
-
总线带宽的决定因素是什么?
总线带宽(Bps)=总线工作频率(Hz)×总线宽度(B)
总线带宽(bps)=总线工作频率(Hz)×总线宽度(bit)
输入输出系统
-
什么是中断?中断有什么作用?
中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,转而对异常情况或特殊请求进行处理。
中断的作用:
- CPU与IO设备并行工作;
- 处理硬件故障和软件错误;
- 实现人机交互,用户干预;
- 实现多道程序、分时操作;
- 实时处理系统需要中断才能快速响应;
- 应用程序和操作系统之间的切换需要(管态与目态);
- 多处理器系统中各处理器之间协作需要;
-
中断处理流程是怎样的?
graph TD A((1.关中断))-->B[2.保存断点] B-->C[3.引出中断服务程序] C-->D[4.保存现场和屏蔽字] D-->E((5.开中断)) E-->F[6.执行中断服务程序] F-->G((7.关中断)) G-->H[8.恢复现场和屏蔽字] H-->I((9.开中断)) I-->J[中断返回]其中,1-3由中断隐指令完成,4-9由中断服务程序完成。
-
中断控制器的功能
- 中断源的识别
- 中断源的屏蔽
- 中断优先级处理
-
什么是单中断,什么是多重中断?
在CPU执行中断服务程序的过程中,出现了新的中断请求,此时:
- 对新的中断请求不予响应,则称为单中断;
- 转而处理新的中断请求,则称为多重中断;
两者的区别在于“开中断”的时间不同,单中断的“开中断”时间在最后的中断返回之前,而多重中断的“开中断"时间在“保存现场与屏蔽字”之后。
-
XXX