计算机系统概述
计算机系统层次结构
计算机系统的组成
硬件系统
硬件是指有形的物理设备,是计算机系统中实际物理装置的总称
软件系统
软件是指在硬件上运行的程序和相关的文档资料
计算机硬件
冯·诺依曼机基本思想
1.采用存储程序的工作方式
将实现编制好的程序和原始数据送入主存后才能执行,一旦程序被启动执行,就无须操作人员的干预,计算机会自动逐条执行指令,直至程序执行结束。
2.计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备5大部件组成
3.指令和数据以同等地位存储在存储器中,形式上没有区别,但计算机能区分它们
取址周期取出的是指令
执行周期取出的是数据
4.指令和数据均用二进制代码表示。
计算机的功能部件
1.输入设备
2.输出设备
3.存储器
4.运算器
5.控制器
计算机软件
系统软件和应用软件
系统软件是一组保证计算机系统高效、正确运行的基础软件,通常作为系统资源提供给用户使用
操作系统、数据库管理系统、语言处理程序、网络软件系统、标准库程序、服务性程序
三个级别的语言
机器语言
又称二进制代码语言 是计算机唯一可以直接识别和执行的语言
汇编语言
用英文单词或其缩写代替二进制的指令代码
高级语言
方便程序设计人员写出解决问题的处理方案和解题过程的程序 如C、C++、Java
翻译程序
1.汇编程序
将汇编语言程序翻译成机器语言程序
2.解释程序
将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行
3.编译程序
将高级语言程序翻译成汇编语言或机器语言程序
计算机系统的层次结构
计算机系统的工作原理
1.“存储程序”工作方式
2.从源程序到可执行文件
1.预处理阶段
预处理器对源程序中以#开头的命令进行处理
2.编译阶段
编译器对预处理后的源程序进行编译
3.汇编阶段
汇编起将.s文件翻译成机器语言指令
4.链接阶段
链接器将多个可重定位目标文件和标准库函数合并为一个可执行文件
对某一功能来说,既可以用软件实现,又可以用硬件实现,则称为软硬件在逻辑功能上是等价的
计算机的性能指标
指标
1.字长
计算机进行一次整数运算所能处理的二进制数据的位数
2.数据通路带宽
数据总线一次所能并行传送信息的位数
3.主存容量
主存储器所能存储信息的最大容量
4.运算速度
吞吐量
系统在单位时间内处理请求的数量
取决于主存的存取周期
响应时间
用户向计算机发送一个请求,到系统对该请求做出响应时间并获得所需结果的等待时间
CPU时钟周期
通常为节拍脉冲或T周期,即主频的倒数
主频
机器内部主时钟的频率
CPI
执行一条指令所需的时钟周期数
CPU执行时间
运行一个程序所花费的时间
MIPS
每秒执行多少百万指令
MFLOPS(百万)、GFLOPS(十亿)、TFLOPS(万亿)、PFLOPS、EFLOPS、ZFLOPS
5.基准程序
专门用来进行性能评价的一组程序
专业术语
1.系列机
使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列
2.兼容
指软件或硬件的通用性
3.软件可移植性
把使用在某个系列计算机中的软件直接或很少的修改就能运行在另一个系列计算机的可能性
4.固件
把程序固化在ROM中组成的部件 是具有软件特性的硬件
数据的表示与运算
数制与编码
进制转换
二进制转换为八进制和十六进制
整数部分 从小数点开始往左数 将一串二进制数分为3位(八进制)或4位(十六进制)一组 最左边根据需要加“0”补齐
小数部分 从小数点开始往右数 分组后根据需要补“0”
八进制或十六进制转换二进制
将每位改为3位或4位二进制数 必要时去0
任意进制转换为十进制
将任意进制数的各位数码与它们的权值相乘 乘积相加
十进制数转换为任意进制数
整数采用除基取余法 小数部分用乘积取整法
真值和机器数
通常用 0 表示正 用 1 表示负
定点数的编码表示
机器数的定点表示
1.定点小数
是纯小数 约定小数点位置在符号位之后、有效数制部分最高位之前
2.定点整数
是纯整数 约定小数点位置在有效数值部分最低位之后
运算方法和运算电路
浮点数的表示与运算
存储系统
存储器概述
分类
1.按在计算机中的作用(层次)分类
1.主存储器(主存)
容量小、存取速度快、价格高
2.辅助存储器
辅存的内容需要调入主存后才能被CPU访问 容量大、存取速度慢、单位成本低
3.高速缓冲存储器 Cache
存放当前CPU经常使用的指令和数据 存取速度最快、容量小、价格高
2.按存储介质分类
1.磁表面存储器(磁盘、磁带)
2.磁芯存储器
3.半导体存储器
4.光存储器(光盘)
3.按存取方式分类
随机存储器(RAM)
可以随机读取 用作主存或Cache
只读存储器(ROM)
只能随机读出而不能写入 内容不会丢失
串行访问存储器
按物理位置的先后次序寻址
4.按信息的可保存性分类
1.易失性存储器
2.非易失性存储器
3.破坏性读出
4.非破坏性读出
性能
1.存储容量=存储字数✖️字长(如1M✖️8位)
2.单位成本
3.存储速度
1.存取时间
2.存取周期
指存储器进行一次完整读写操作所需的全部时间 存取周期=存取时间+恢复时间
3.主存带宽
多级层次的存储结构
Cache-主存层
解决CPU和主存速度不匹配的问题 由硬件完成 对所有程序员透明
主存-辅存层
解决存储系统的容量问题 由硬件和操作系统共同完成 对应用程序员透明
思想
上一层的存储器作为低一层存储器的高速缓存
主存储器
1.SRAM芯片和DRAM芯片
SRAM(Static Random Access Memory)
存储信息:触发器 非破坏性读出 不需要刷新 同时送行列地址 运行速度快 集成度低 存储成本高 主要用途:高速缓存
DRAM(Dynamic Random Access Memory)
存储信息:电容 破坏性读出 需要刷新 分两次送行列地址 运行速度慢 集成度高 存储成本低 主要用途:主机内存
存储器芯片的内部构造
1.存储体(存储矩阵)
2.地址译码器
3.I/O控制电路
4.片选控制信号
5.读/写控制信号
2.
主存储器与CPU的连接
外部存储器
高速缓冲存储器
虚拟存储器
指令系统
指令系统
指令
指示计算机执行某种操作的命令
指令系统
一台计算机的所有指令的集合构成 也称指令集
基本格式
1.零地址指令
2.一地址指令
3.二地址指令
4.三地址指令
5.四地址指令
定长操作码指令格式
拓展操作码指令格式
指令的操作类型
1.数据传送
2.算术和逻辑运算
3.移位操作
4.转移操作
5.输入输出操作
指令的寻址方式
程序的机器级代码表示
CICS和RISC的基本概念
复杂指令系统计算机 Complex Instruction Set Computer
特点
1.指令系统庞大,指令数目一般在200条以上
2.指令的长度不固定,指令格式多,寻址方式多
3.可以访存的指令不受限制
4.各种指令使用频度相差很大
5.各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成
6.控制器大多采用微程序控制,有些指令非常复杂,以至于无法采用硬连线控制
7.难以用优化编译生成高效的目标代码程序
精简指令系统计算机 Reduced Instruction Set Computer
诞生背景
各种指令的使用频率相差悬殊,大概只有20%的简单指令被反复使用,约占程序的80%
1.选取使用频率最高的一些简单指令,复杂指令的功能由简单指令的组合来实现
2.指令长度固定,指令格式种类少,寻址方式种类少
3.只有Load/Store(取数/存数)指令访存,其余指令的操作都在寄存器之间进行
4.CPU中通用寄存器的数量相当多
5.RISC一定采用指令流水线技术,大部分指令在一个时钟周期内完成
6.以硬布线控制为主,不用或少用微程序控制
7.特别重视编译优化工作,以减少程序执行时间
CICS和RISC的比较
1.RISC更能充分利用VLSI芯片的面积
2.RISC更能提高运算速度
3.RISC便于设计,可降低成本,提高可靠性
4.RISC有利于编译程序代码优化
中央处理器
CPU的功能和基本结构
功能
1.指令控制
2.操作控制
3.时间控制
4.数据加工
5.中断控制
结构
1.运算器
功能
接收从控制器传来的命令并执行相应的动作
组成
1.算术逻辑单元 ALU
2.暂存寄存器
用于暂存从主存读来的数据,该数据不能存放在通用寄存器中,否则会破坏其原有内容
3.累加寄存器 ACC
4.通用寄存器组
用于存放数据和地址
通用寄存器可供用户编程完成指定功能
5.程序状态字寄存器 PSW
6.移位器
7.计数器 CT
2.控制器
功能
执行指令,每条指令的执行是由控制器发出的一组微操作实现的
工作原理
计算机在控制器形成控制信号下产生预期结果
组成
1.程序计数器 PC
用于指出欲执行指令在主存中的存放地址 CPU根据PC的内容去主存中取指令 程序中指令通常是顺序执行 所以PC有自增功能
2.指令寄存器
3.指令译码器
4.存储器地址寄存器
5.存储器数据寄存器
6.时序系统
7.微操作信号发生器
CPU内部寄存器
用户可见:通用寄存器组、程序状态字寄存器PSW、程序计数器PC
用户不可见:MAR、MDR、IR、暂存寄存器
指令执行过程
指令周期
CPU从主存中取出并执行一条指令的时间
指令周期常用若干机器周期来表示 一个机器周期又包含若干时钟周期
机器周期
定长
不定长
标志触发器:FE、IND、EX、INT
置“1”状态表示正在执行的周期
数据流:不同阶段要求依次访问的数据序列
指令周期的数据流
1.取址周期
根据PC内容从主存中取出指令字并放在IR中
2.间址周期
取操作数有效地址
3.执行周期
取操作数,并根据IR中的指令字的操作码通过ALU操作产生执行结果
4.中断周期
保存断点,送中断向量,处理中断请求
指令执行方案
单指令周期
指令都选用相同的执行时间完成 指令间串行
多指令周期
对不同指令选用不同的执行步骤 指令间串行
流水线方案
隔一段时间启动一条指令,多条指令处于不同方案,同时运行
目标:力争在每个时钟脉冲周期完成一条指令的执行过程
都有CPU访存操作,只是访存的目的不同
数据通路的功能和基本结构
概念
数据在功能部件之间传送的路径称为数据通路,包括数据通路上流经的部件
数据通路描述了信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传送到哪个寄存器
数据通路由控制部件控制,控制部件根据每条指令功能的不同生成对数据通路的控制信号
功能:实现CPU内部的运算器与寄存器及寄存器之间的数据交换
基本结构
1.CPU内部单总线方式
将所有寄存器输入端和输出端都连接到一条公共通路上 结构简单 效率低
2.CPU内部多总线方式
将所有寄存器输入端和输出端都连接到多条公共通路上 同时在多个总线上传送不同数据 效率高
3.专用数据通路方式
根据指令执行过程中数据和地址流动方向安排线路 避免使用共享的总线 性能高 硬件量大 难实现
寄存器之间的数据传送可通过CPU内部总线完成
主存与CPU之间数据传送借助CPU内部总线完成
执行算数或逻辑运算运算的数必须在ALU输入端同时有效
控制器的功能和基本结构
异常和中断机制
概念
异常(内中断)
由CPU内部产生的意外事件 监测由CPU自身完成 是与正在执行的指令相关的同步事件
分类
1.故障(Fault)
在引起故障指令后 执行结束前检测到的异常事件
2.自陷(Trap)
预先安排的一种异常事件 根据不同陷阱进行相应处理 然后返回到自陷指令的下一条指令执行 自陷指令是转移指令时 返回到转移目标指令执行 故障异常和自陷异常属于程序性异常 软件中断
3.终止(Abort)
在执行过程中发生了使计算机无法继续执行的硬件故障 程序无法继续执行 只能终止 终止异常和外中断属于硬件中断
中断(外中断)
由来自CPU外部的设备向CPU发出的中断请求 不和任何指令相关连 也不阻止任何指令的完成 CPU必须通过中断请求线获取中断源的信息
分类
1.可屏蔽中断
通过可屏蔽中断请求线INTR向CPU发出中断请求 CPU可以通过在中断请求控制器中设置相应的屏蔽字来屏蔽它或不屏蔽它
2.不可屏蔽中断
通过专门的不可屏蔽中断请求线NMI向CPU发出 通常是非常紧急的硬件故障 这类信号不可被屏蔽
处理过程
能解决 回到被打断程序的第i/i+1条指令继续执行 发现是不可恢复的致命错误 终止用户程序
对异常和中断的具体处理过程由操作系统(和驱动程序)完成
响应过程
1.关中断
在保存断点和程序状态期间 不能被新的中断打断 置IF为1 开中断 允许响应中断 置IF为0 关中断 不允许响应中断
2.保存断点和程序状态
为了能在异常和中断处理结束后正确返回到被中断的程序继续执行 必须将程序的断点送到栈或特定寄存器中 保存栈中 支持异常或中断的嵌套
3.识别异常和中断并转到相应的处理程序
指令流水线
基本概念
提高处理机的并行性
1.时间上的并行技术
将一个任务分解为几个不同的子阶段 每个阶段在不同的功能部件上并行执行 以便在同一时刻能够同时执行多个任务 提高系统系能(流水线技术)
2.空间上的并行技术
在一个处理机内设置多个执行相同任务的功能部件 并让这些功能部件并行工作 (超标量处理机)
1.指令流水的定义
指令的执行过程
1.取指(IF) 从指令存储器或Cache中取指令
2.译码/读寄存器(ID) 操作控制器对指令进行译码 同时从寄存器堆中取操作数
3.执行/计算地址(EX) 执行运算操作或计算地址
4.访存(MEN) 对存储器进行读写操作
5.写回(WB) 将指令执行结果写回寄存器堆
实现指令流水线 指令集应具有
1.指令长度应尽量一致 有利于简化指令和指令译码操作
2.指令格式尽量规整 尽量保证源寄存器位置相同 有利于指令未知时就可以取寄存器操作数
3.采用Load/Store指令 其他指令都不能访问存储器 这样可把Load/Store指令的地址计算和运算指令的执行步骤规整在同一个周期中 有利于减少操作步骤
4.数据和指令在存储器中对齐存放 有利于减少访存次数 使所需数据在一个流水段内就能从存储器中得到
基本实现
1.流水线的数据通路
2.流水线的控制信号
3.流水线的执行过程
流水线的冒险与处理
定义
在指令流水线中 可能会遇到一些情况使得流水线无法正确执行后续指令而引起流水线堵塞和停顿 这种现象称为流水线冒险
冒险的原因
1.结构冒险
多条指令在同一时刻争用同一资源形成的冲突 又称资源冲突 由硬件资源竞争造成的冲突
解决方法
1.前一指令访存时 使后一条相关指令暂停一个时钟周期
2.单独设置数据存储器和指令存储器 使取数和取指令操作各在不同的存储器中完成
2.数据冒险
在一个程序中 下一条指令会用到当前指令计算出的结果 此时这两条指令发生数据冲突
分类
1.写后读
2.读后写
3.写后写
3.控制冒险
流水线的性能指标
1.吞吐量
单位时间内流水线所完成的任务数量或输出结果的数量 TP=n/Tk n是任务数 Tk是处理完n个任务所用的总时间 连续输入的任务数n—>∞时 最大吞吐量TPmax=1/△t
2.加速比
高级流水线技术
1.超标量流水线技术(动态多发射技术)
每个时钟周期内可并发多条独立指令 以并行操作方式将两条或多条指令编译并执行 需配置多个功能部件 简单超标量CPU中 指令顺序发射执行 为了更好提高并行性能 超标量CPU会结合动态流水线调度技术 通过动态分支预测 乱序执行
2.超长指令字技术(静态多发射技术)
将多条能并行执行操作的指令组合成一条具有多个操作码字段的超长指令字 采用多个处理部件
多发射流水线CPU每个时钟周期可以处理多条指令 CPI<1 成本更高 控制更复杂
3.超流水线技术
通过提高流水线主频的方式提升流水线性能 流水线级数越高 用于流水寄存器的开销越大 流水线充满后 CPI=1 但主频更高
多处理器的基本概念
基本概念
1.单指令流单数据流(SISD)结构
2.单指令流多数据流(SIMD)结构
3.多指令流单数据流(MISD)结构
4.多指令流多数据流(MIMD)结构
同时执行多条指令分别处理多个不同数据
1.多计算机系统
每个计算机节点都具有各自的私有存储器 具有独立的主存地址空间 不能通过存取指令来访问不同节点的私有存储器 而要通过消息传递进行数据传送 也称信息传递MIMD
2.多处理器系统
是共享存储多处理器(SMP)系统的简称 具有共享的单一地址空间 通过存取指令来访问系统中的所有存储器 也称共享存储MIMD
向量处理器
实现了直接操作一维数组(向量)指令集的CPU 基本理念是将存储器收集的一组数据按顺序放到一组向量寄存器中 然后以流水化的方式对它们依次操作 最后将结果写回寄存器 在特定环境性能很高
硬件多线程
目的
线程的切换只需激活选中的寄存器 省略了与存储器数据交换的环节 大大减少了线程切换的开销
实现方式
1.细粒度多线程
多个线程之间轮流交叉执行指令 多个线程之间的指令是不相关的 可以乱序并行执行 处理器在每个时钟周期切换线程
2.粗粒度多线程
仅在一个线程出现了较大开销的阻塞时才切换线程 在这种方式下 当发生流水线阻塞时 必须清除被阻塞的流水线 新线程的指令开始执行前需要重载流水线
3.同时多线程(SMT)
在实现指令级并行的同时 实现线程级并行 在同一个时钟周期内 发射多个不同进程中的多条指令执行
多核处理器
将多个处理单元集成到单个CPU中 每个处理单元称为一个核 每个核可以有自己的Cache也可以共享同一个
共享内存多处理器
统一存储访问(UMA)
每个处理器对所有存储单元的访问时间大致相同 需要解决的问题是Cache一致性
非同一存储访问(NUMA)
某些访存请求比其他的快 运算扩展性更强 主存被分割并分配给了同一机器上的不同处理器或内存控制器
操作共享变量时需要进行同步 方法:共享变量加锁
总线
总线概述
总线事务和定时
输入/输出系统
I/O系统基本概念
I/O接口
I/O方式