计算机组成原理基础知识
计算机系统概述
冯 诺依曼计算机(普林斯顿)的主要设计思想是什么?
- 采用二进制形式表示数据和指令;指令由操作码和地址码组成
- 采用存储程序和程序控制:把编写好的程序和原始数据预先放入计算机主存储器中,使计算机工作时可以连续、自动、高速地从存储器中去取出指令并执行
- 指令顺序执行,程序分支由转移指令实现
- 计算机硬件系统由运算器、控制器、存储器、输入设备和输出设备组成
- 计算机以运算器为中心,数据的传送通过运算器完成(现代以存储器为中心)
哈弗结构:指令和数据分开存放,所以可以进行同时取指令和数据。
计算机系统中有哪三种语言?特点与区别
- 机器语言:由代码0,1构成,是计算机唯一可以直接识别和执行的语言,对不同的计算机硬件,其机器语言也不同
- 汇编语言:是将机器语言用助记符代替形成的一种语言,与具体的计算机有关,也是面向机器的语言。
- 高级语言:一种更接近人们使用习惯的语言,直观、通用,它与具体的计算机硬件配置无关
存储体系
存储器分类
按介质分类:半导体存储器(主存),磁表面存储器(磁盘)、光盘存储器(CD)
按存取方式:随机存储器(半导体存储器)、顺序存储器(磁带)、半顺序存储器(磁盘)
按读写功能:只读存储器(ROM),读写存储器(RAM)
按信息可保存性:易失性存储器(RAM),非易失性存储器(ROM)
按在计算机系统中的作用:主存、辅存、cache、寄存器
存储器设计的主要根据是程序的局部性原理(时间局部性,空间局部性)
存储系统的层次
- Cache和主存:为了解决CPU和主存速度不相匹配的问题
特点:CPU可以直接从Cache中获得信息,从而提高访存的速度,Cache和主存之间的信息调度由辅助硬件完成。
特点:采用虚拟存储技术,把主存辅存看成一个整体,速度取决于主存,容量取决于辅存,主存和辅存之间的信息调度由辅助硬件和操作系统共同完成。
通常用存储容量、存取周期、存储器带宽来反映存储器的性能。
主存储器的组成,SRAM( 静态随机存取存储器 )和DRAM(动态随机存取存储器)的区别
主存储器由译码器、驱动器、存储体、读/写电路等组成。
|
SRAM |
DRAM |
工作原理 |
双稳态触发器 |
电容储存电荷 |
刷新 |
不需要刷新 |
需要刷新 |
地址复用 |
不复用 |
按行列地址先后传送 |
集成性 |
集成度低 |
集成度高 |
功耗 |
功耗大 |
功耗小 |
速度 |
快 |
慢 |
作用 |
Cache |
内存 |
虚拟存储器含义与作用
虚拟存储器是指具有请求调入功能和置换功能,能从逻辑上对内存容量进行扩充的一种存储系统
作用:分割地址空间,解决主存容量问题和实现程序重定位
提高存储器速度的方法?
- 采用高速部件,选用存取周期短的芯片
- 采用并行操作的多端口存储器
- 在CPU与主存之间加入Cache(高度缓存存储器)
- 使用多体交叉存储器
Cache特点
- 位于CPU和主存之间的高速小容量的存储器,一般有SRAM构成
- 用来解决CPU和主存速度不匹配的问题
- 理论基础是程序访问的局部性原理
- Cache中存储频繁使用的指令和数据
- Cache的内容时主存部分内容的副本,功能均由硬件实现,对程序员透明
Cache地址映射方法
- 直接映射:主存的块只能复制到Cache的一个特定位置上,主存地址有高位标记、字块地址、块内地址三个标记,不够灵活,命中率低,适合容量大的Cache。
- 全相联映射:主存中的任一块都可以映射到Cache的任一块,主存地址有高位标记、块内地址。机制灵活,命中率高,但是结构复杂,成本高。
- 组相联映射:主存地址有高位标记、组地址、块内地址,主存中的块映射到Cache的组中的任一一块,比直接映像灵活,命中率高,比全相联映射成本低。
什么是刷新?刷新有几种方式?
DRAM是由电容的原理存储信息的,电容上的电荷要放电,为了维持所存的信息,需要在一段时间内(2ms),将所存的信息读出来再重新写入,这一过程叫刷新。
- 集中刷新:在2ms内,集中一段时间对存储器芯片的每一行刷新一遍,在这段时间内不能对存储器进行访问
- 分散刷新:系统把每一行的刷新分散到各个存储周期内,将存储周期分为2半,前半段进行读/写操作,后半段进行刷新,整个系统的速度降低了,但分散刷新没有存储器的死时间。
- 异步刷新:在2ms内分散地对存储芯片的每一行刷新一遍,这个就避免了分散式刷新中不必要的多次刷新,提高了整机速度。
主存的读/写过程
- 读操作:地址送到CPU片内总线,并送入地址寄存器(AR),控制器发出存储器读命令信号,启动存储器读操作,并将读出的数据从数据总线放到数据寄存器(DR)中。
- 写操作:地址送到CPU片内总线,并送入AR,送数据到DR中,DR将数据送到数据总线,控制器发出存储写命令信号,启动存储器写操作。
指令系统
指令包括那几部分?各表示什么含义?
指令由操作码和地址码组成。操作码用来指明该指令要完成的操作,地址码用来寻找执行操作所需要的操作数。
重要术语
指令:一组有意义的二进制代码
指令系统:一台计算机所有指令的集合
机器字长:CPU一次能处理数据的位数,通常与寄存器的位数有关
指令字长:指令二进制代码的总位数
存储字长:存储单元中存放二进制代码的总位数,即存储器MDR的位数
CISC( 复杂指令集计算机 )、RISC( 精简指令集计算机 )的特点
-
CISC复杂指令系统计算机,在指令系统中增加更多更复杂的指令,以适应不同应用领域的需要。
- 指令长度不固定,指令格式多,寻址方式多
- 可以访存的指令不受限制
- 各种指令使用频率相差很大,大多数指令需要多个时钟周期才能完成
- 控制器大多数采用微程序控制
- 难以用优化编译生成高效地目标代码
CISC架构的CPU:Inter Xeon,AMD Opteron
-
RISC精简指令系统计算机,要求指令系统尽可能简化,尽量使用寄存器-寄存器操作指令
- 指令长度固定,指令格式少,寻址方式种类少
- 选取使用频率较高的简单指令,复杂指令的功能由简单指令的组合实现
- 只有取数/存数指令可以访存,其他指令的操作在寄存器之间
- CPU有多个通用寄存器,减少访存次数
- 控制器采用组合逻辑电路
- 采用流水技术,大部分指令在一个时钟周期完成
- 采用优化了的编译程序
RISC架构的CPU:MIPS,RISC 1
CISC和RISC比较:
- RISC更能充分利用VLSI芯片的面积
- RISC更能提高运算速度
- RISC便于设计,可降低成本,提高可靠性
- RISC有利于编译程序的代码优化
在一地址和二地址指令中,如何指定两个操作数地址?如何存放操作结果?
一地址指令:OP A1
指令的地址码提供一个操作数地址,另一个操作数由计算机隐含提供,结果存放在A1中
二地址指令:OP A1 A2
两个操作数由两个地址码提供,结果存放在A1中
指令操作码的扩展技术的基本方法
采用可变操作码长度格式,操作码的长度随地址数的减少而增加。另外根据指令出现的频率来分配操作码的长度,使用频率高的指令分配较短的操作码,而频率低的指令分配较长的操作码,从而在满足需要的前提下,有效地缩短了指令长度。
确定寻址方式的目的和意义?
寻址方式:确定本条指令的操作数地址以及下一条将要执行的指令的地址的方法。
好处:
- 丰富程序设计手段,方便程序的设计,提高程序的执行效率
- 压缩程序占用的存储空间,使指令的地址码尽可能缩短,访问的存储空间尽可能的大。
寻址方式
寻址方式分为两种:指令寻址和操作数寻址
指令寻址:顺序寻址(PC+1),跳跃寻址(JMP指令)
数据寻址:立即寻址,寄存器寻址,直接寻址,间接寻址,寄存器间接寻址,寄存器相对寻址,基址寻址,变址寻址,基址变址寻址
立即寻址:地址字段为操作数
寄存器寻址:操作数在CPU内部的寄存器,不需要访问存储器,指令指定寄存器号
直接寻址:地址字段是操作数在内存中的地址
间接寻址:地址字段是操作数地址在内存中的地址
寄存器寻址:操作数的地址存放在寄存器中,该寄存器的编号放在指令的地址字段
相对寻址:以PC为基准,加上指令给出的相对偏移量形成有效转移地址(以下一条指令在内存中的首地址为基准位置的偏移量),主要用于跳转指令,执行(pc)+偏移量为地址的指令
变址寻址:面向用户,用来访问数组,字符串等成批数据,指令提供的形式地址是基准地址,变址寄存器的内容作为偏移量
基址寻址:面向系统,用来解决程序重定位和扩大寻址范围的问题,指令提供的形式地址是一个位移量,而基址寄存器里存放的是基准地址
基址变址寻址:EA=A+(R)+(IX);
控制器
重要术语
- 机器指令:由0,1代码组成,能被机器直接识别
- 微指令:由0,1代码组成,一条机器指令的功能就是若干条微指令组成的序列来实现的,由控制字段、判别测试字段和下址字段组成。
- 微程序:微指令的有序集合,完成对指令的解释和执行
- 微命令:控制部件通过控制线向执行部件发出各种控制命令,在微指令的控制字段中,每一位代码一个微命令
- 微操作:由微命令控制实现的最基本操作
- 主存:用来存放程序和数据,在CPU外部,由RAM来实现
- 控制存储器:用来存放微程序,在CPU内部,由ROM来实现
- 指令周期:计算机从取出一条指令并完成指令所需要的时间
- 机器周期:CPU周期,CPU与内存交换一次信息(读或写信息)所需要的时间
- 时钟周期:节拍,CPU执行一个微操作命令的最小时间单位,即T周期
指令周期—若干机器周期—若干时钟周期
- 微地址:微指令在控制存储器中的地址
- 微程序入口:机器指令对应的微程序在控制存储器的首地址(第一条微指令的地址)
CPU的功能
- 指令控制:确保计算机指令按程序的顺序执行
- 操作控制:一条指令通常由若干个控制信号组合起来实现,CPU控制这些微操作的产生、组合、传送和管理,从而控制部件按指令执行
- 时间控制:使各种微操作和指令的执行严格按照时间序列进行
- 数据加工:由运算器对数据进行算术运算和逻辑运算
- 中断处理:对计算机运行过程中出现的异常情况和特殊请求进行处理
控制器的功能
组成:程序计数器,指令寄存器,地址寄存器,数据寄存器,指令译码器,操作控制信号形成部件,时序信号产生器
功能:从存储器中取指令、指令译码、产生控制信号并控制计算机系统各部件有序地执行,从而实现指令功能。
根据PC取指令到IR。将PC的内容送到MAR中,根据MAR中的地址获取到指令送到MDR中,再送到指令寄存器IR中
指令译码并送出控制信号。控制器根据IR中指令的操作码生成相应的控制信号,送到不同的执行部件中
- 执行指令:Ad(IR)–>MAR–>M–>MDR–>ALU
取数操作。将IR中指令的地址码送到MAR中,根据MAR中的地址获取到操作数,并送到MDR中,再送到ALU中
此外,每取完一条指令,还须为下一条指令做准备,形成下一条指令的地址,即(PC)+1–>PC
控制器有哪几种控制方式?它们各有什么特点?
- 同步控制方式,控制器产生统一的、顺序固定的、周而复始的机器周期信号和时钟周期信号,电路简单,运行速度慢
- 异步控制方式:每个微操作的时钟周期个数可能不同。
- 联合控制方式:在功能部件内部采用同步控制,在功能部件之间采用异步控制。
完整指令周期包括哪几个周期?
取址周期:取指令的时间
间址周期:取操作数的有效地址
执行周期:取出操作数并执行相应的操作并将结果保存在给的寄存器中
中断周期:程序执行过程中有中断请求,就需要响应中断:保存断点,形成中断服务程序的入口地址,硬件关中断。
微指令格式类型
- 水平型微指令:采用长格式,一条指令能控制数据通路中多个功能部件并行操作
- 一般格式:控制字段+判别测试字段+下址字段
- 直接编码:每一位代表一个微命令(控制信号)
- 字段直接编码:相斥性微命令分在同一字段,相容性微命令分在不同字段内。
- 字段间接编码
- 垂直型微指令:采用短格式,一条微指令只能控制一两种微操作
比较:
- 水平型微指令并行操作能力强,指令高效,快速,灵活,,垂直型微指令比较差
- 水平型微指令执行一条指令时间短,垂直型执行执行时间长,需要译码才能发出微命令
- 水平型微指令构成的微程序字长而程序短,垂直型微指令字短而程序长
比较硬布线控制器和微程序控制器的异同点
- 根本区别在于微操作控制信号的产生方法不同:微程序控制器事先将编写好的微代码放入控制存储器中,执行过程中在需要的时再从控制存储器中读取并送出;而硬布线控制器是由组合逻辑电路产生微操作控制信号。
- 从电路整齐性来说,微程序控制的电路相对整齐,而硬布线控制器电路设计较为繁琐,不整齐
- 从指令系统的易扩充性来说,微程序控制器易修改和扩充,而硬布线控制器不易修改和扩充
- 微程序控制器执行指令的速度来说相对硬布线控制器要慢
- 微程序控制器主要用于CISC,硬布线控制器主要用于RISC
指令和数据均放在内存中,CPU如何从时间和空间两个方面对他们进行区分?
- 时间上,取指令事件发生在“取址周期”,取数据发生在“执行周期”。
- 空间上:从内存读出指令流流向控制器的指令寄存器IR,数据流流向运算器的通用寄存器
输入输出系统
I/O与主机交换信息有哪几种控制方式?各有什么特点?
- 程序查询方式。其特点是主机和I/O串行工作。CPU启动I/O后,时刻查询I/O是否准备好,若准备就绪,CPU便转入处理I/O与主机间传送信息的程序;若未准备好,就反复查询,CPU不执行其他工作等待I/O准备就绪。这种方式效率很低
- 程序中断方式。其特点是主机和I/O并行工作。CPU启动I/O后,不必时刻查询I/O状态,而是继续执行程序,当I/O准备就绪就会向CPU发送中断请求,CPU在适当的时候响应I/O的中断请求,暂停现行的程序转而执行I/O操作。这种方式消除了“踏步”现象,提高了效率。
- DMA方式(直接存储器访问)。其特点是主机和I/O并行工作。主机和I/O设备之间有一条直接的数据通路,整个数据传输由DMA控制器来控制,简化了CPU对I/O的控制,进一步提高了CPU的效率
- 通道方式。通道是一个具有特殊功能的处理器,CPU把部分权利下放给通道,由它实现读外围设备的统一管理和外围设备与内存之间的数据传送,大大提高了CPU的效率。
DMA和通道都是以内存为中心,实现设备与内存直接交换数据。
在DMA中,数据的传送方向、存放数据的地址以及数据块的大小都是CPU控制的
在通道中,这些都是由通道控制的。
DMA方式每台设备至少需要一个DMA控制器,一个通道控制器可以控制多台设备。
- I/O处理机方式。它是通道方式的进一步发展,CPU将I/O操作及外围设备的管理权全被交给I/O处理机,其结构接近一般的处理机,因此效率有更大的提高。
中断及其处理
中断概念:计算机在执行程序的过程中,出现异常情况或者特殊请求时,CPU暂停执行当前的指令流程,去处理外部设备或硬件的中断信号,最后返回现行程序中断处的过程
功能分类:
- 输入输出中断:I/O传输结束或出错中断
- 外中断:时钟中断、操作员控制台中断、通信中断
- 机器故障中断:电源故障、主存取指令错误
- 程序性中断:定点溢出、用户态下用核心态指令、非法操作
- 访管中断:对操作系统提出某种需求时所发出的中断
来源分类:中断(外部,硬中弄断),异常(内部,软中断)
中断请求:中断源向CPU发出中断信号
中断处理:
- 屏蔽中断
- 对同时到达中断的优先处理高优先级中断
- 中断嵌套处理,在处理低优先级中断时允许高优先级中断发生(开中断的情况下)
- 中断向量表,引导CPU转向相应的中断或异常处理程序
中断响应具备条件:
- 有中断源提出中断请求
- CPU允许中断及开中断
- 一条指令执行完毕后
中断响应:保护现场和恢复现场
现场:在中断的那一刻能确保程序继续运行的相关信息
- 下一条指令地址
- 程序运行所处的状态
- 指令的执行情况
- 程序执行的中间结果
中断/异常响应过程:
- 将当前程序断点(PC)及 程序状态字 (PSW)存入临时寄存器中(中断隐指令)
- 根据中断ID找到中断向量表中相应的中断向量单元:PSW–>PSW,中断服务程序入口–>PC
中断服务:
- 切换到核心栈
- 临时寄存器中的PS和PC存入到核心栈
- 开始执行中断/异常处理程序
中断返回:回到CPO原来的程序断点处继续执行