第1章 计算机系统概述

1.1 计算机系统简介

1.1.1 计算机的分类及发展

计算机的分类

  • 电子数字计算机:目前人们所说的计算机都是指电子数字计算机
  • 按用途分类
    • 专用计算机:针对某一特定任务而设计制造,结构简单、拥有固定的存储程序(如工业控制计算机、嵌入式系统)
    • 通用计算机:功能齐全,适应性强
  • 按性能和规模分类:巨型机(超级计算机)、大型机、服务器、中小型机、微型计算机、单片机

计算机的发展(五代划分)

  • 第一代:1946年开始的电子管计算机
  • 第二代:1956年开始的晶体管计算机
  • 第三代:1964年开始的中小规模集成电路计算机
  • 第四代:1972年开始的大规模/超大规模集成电路计算机
  • 第五代:1991年开始的巨大规模集成电路计算机,单片计算机开始出现

摩尔定律:每18个月,集成度翻一番,速度提高一倍,价格降低一半


1.1.2 计算机系统的组成

计算机系统 = 硬件系统 + 软件系统

硬件系统:构成计算机的所有实体部件的集合(电路、机械等物理部件)

软件系统

  • 程序:用计算机语言编写的命令序列的集合
  • 文档:为了便于了解程序所需要的阐述性资料

冯·诺依曼计算机(存储程序控制)

  1. 五大基本部件:运算器、存储器、控制器、输入设备、输出设备
  2. 指令和数据均以二进制编码表示,采用二进制运算
  3. 采用存储程序的方式,程序和数据存放在同一存储器中
  4. 指令在存储器中按执行顺序存放,由**程序计数器(PC)**指明要执行的指令地址
  5. 早期:以运算器为中心;现代计算机:以存储器为核心

现代计算机系统

  • 中央处理器(CPU):运算器和控制器集成在一片集成电路中
  • 主机:CPU和内存构成
  • 外围设备/外部设备(外设):主机以外的其他硬件设备(输入设备、输出设备、辅助存储器)
  • 现代计算机以存储器为中心,采用总线结构

总线(系统总线)

  • 定义:构成计算机系统的骨架,是多个系统部件之间进行数据传送的公共通路
  • 分类:
    • 地址总线(AB):单向,用来传送地址信息
    • 数据总线(DB):双向,用来传送数据信息
    • 控制总线(CB):单/双向(部分双向),用来传送各种控制信号
  • 都是三态总线

I/O接口(适配器)

  • 存在于CPU与外设之间,是CPU与外围设备进行信息交换的中转站
  • 功能:保证外围设备采用计算机系统所要求的形式发送和接收信息

存储系统(三级存储系统)

  • 主存储器(RAM):半导体材料组成的随机读写存储器,CPU直接访问,存取速度快但容量小
  • 辅助存储器(外存储器):容量大、价格低,但存取速度较慢,不能由CPU直接访问
  • 高速缓冲存储器(Cache):存取速度比主存更快,但容量更小,用来存放当前正在执行的程序中的活跃部分
  • 内存储器(内存):ROM、RAM、Cache的总称

软件系统分类

  • 系统软件:负责管理、控制和维护计算机的各种硬件资源(操作系统、数据库管理系统、语言处理程序等)
  • 应用软件:专业人员为各种应用目的而开发的程序

1.1.3 计算机系统的主要性能指标

字长

  • 位(bit/b):计算机内部数据存储的最小单位
  • 字节(Byte/B):最基本的存储单元,数据处理的基本单位,1B = 8b
  • 字(Word):计算机进行数据处理时,一次存取、加工和传送的数据长度

内存容量

  • 内存储器(内存)就是存储程序和数据的地方
  • 单位:B、KB、MB、GB(1KB = 2^10 B = 1024B,1MB = 2^20 B = 1048576B)
  • 每个存储单元必须有一个固定的内存地址

时钟频率

  • 时钟脉冲的频率又称为主频
  • 单位:Hz、MHz、GHz

1.2 微处理器的发展

Intel微处理器发展历程

  • Intel 4004:世界上第一块微处理器芯片(4位)
  • Intel 8008:第一个8位通用微处理器
  • Intel 8080/8085:成熟的8位微处理器
  • Intel 8086/80286:16位微处理器
  • IA32架构:32位微处理器(80386、80486、Pentium系列等)
  • IA64位微处理器:2000年Itanium推出,标志Intel进入64位时代

CISC vs RISC

  • CISC(复杂指令系统计算机):指令长度不等、执行时间不等、指令类型多、有些指令长且复杂、寻址方式复杂、内存定位复杂、采用微程序结构
  • RISC(精简指令集计算机)
    • 长度尽可能相等
    • 执行时间尽可能相同
    • 指令类型尽可能减少
    • 缩短指令长度,规范指令格式
    • 寻址方式简化,简化访问内存操作
    • 增加通用寄存器,简化处理器结构
    • 使用VLSI技术,增强处理器的并行处理能力

第2章 微型计算机系统基础

2.1 指令系统

程序设计语言

  • 机器语言:机器能直接识别的程序语言(二进制代码)
  • 汇编语言:用约定的文字、符号和数字表示指令(汇编指令),需通过汇编程序翻译成机器语言
  • 高级语言:接近数学语言,通过编译程序解释程序翻译为机器语言

处理器体系结构

  • 指令集体系结构(ISA):CPU物理硬件和上层软件之间的接口
  • 系列计算机:具有相同的基本指令系统和基本体系结构,但具有不同组成和实现的一系列不同型号的机器

2.2 计算机中的数据表示与编码

2.2.1 数与数制

常用数制:二进制、八进制、十进制、十六进制

数制转换

  • r进制数转换为十进制数:按位权展开后相加
  • 十进制数转换为r进制数:
    • 整数部分:除r取余法
    • 小数部分:乘r取整法
  • 二进制与八进制/十六进制转换:每3位/4位二进制对应1位八进制/十六进制

2.2.2 数据格式

定点数表示方法

  • 定点纯小数:小数点固定在数值部分的最高位之前
  • 定点纯整数:小数点固定在数值部分的最后面

浮点数表示法

  • 由两部分构成:阶码尾数
  • 阶码:指数部分,决定浮点数的表示范围
  • 尾数:表示数值的有效数字,是纯小数,决定浮点数的精度
  • 规范化浮点数:尾数部分为纯小数,尾数第一位不为0
  • IEEE 754标准:规定了32位浮点数和64位浮点数的标准格式

2.2.3 二进制数的编码及运算

机器码与真值

  • 机器码:一个数在机器(计算机)中的表示形式
  • 真值:一般书写表示的实际数值数据

无符号数

  • 机器码中所有位均作为数值位处理
  • 表示范围:0 ≤ N ≤ 2^n - 1
  • 最常见的无符号整数是地址,双字长数据的低位字也是无符号整数

有符号数

  • 用机器码的最高位来表示其正负符号(0表示正数,1表示负数)
  • 常用机器码:原码、反码、补码
  • 大多数微机采用补码编码

原码

  • 正数的原码就是它本身
  • 负数的原码:符号位取1,数值部分是真值的绝对值
  • 缺点:+0和-0的原码不同,加减运算复杂

反码

  • 正数的反码就是它本身
  • 负数的反码:符号位取1,数值部分按位取反

补码

  • 核心思想:用补码表示时,可以把负数转换为正数,减法转换为加法
  • 正数的补码就是它本身
  • 负数的补码:符号位取1,数值部分按位取反后末位加1
  • 优点:+0和-0的补码形式相同(0只有一种表示形式)
  • 表示范围:-2^(n-1) ~ 2^(n-1) - 1

补码运算

  • [X + Y]补 = [X]补 + [Y]补
  • [X - Y]补 = [X]补 + [-Y]补
  • 特点
    1. 进行加法运算时,把符号位和数值位一起进行运算(若符号位有进位,则丢掉)
    2. 减法运算可以转换为加法运算,不必专门配减法器,大大简化了硬件设计
    3. 无符号数和有符号数的运算是兼容的

溢出检测

  • 单符号位法:最高有效位产生进位而符号位无进位时,产生正溢出;反之产生负溢出
  • 双符号位法(变形补码/模4补码):符号位出现"01"表示正溢出,"10"表示负溢出

2.2.4 十进制数的编码及运算

BCD码(二进制编码的十进制数)

  • 最常见:8421BCD码
  • 非压缩BCD码:一字节中仅存放1位十进制数的BCD码,低4位表示相应十进制数位,高4位没有意义
  • 压缩BCD码:一字节中存放2位十进制数的BCD码

BCD码加减运算规则

  • 两个BCD码相加,如果和小于或等于9,则不需要修正
  • 如果相加之和大于9,则需加6修正

2.2.5 ASCII字符代码

ASCII码组成

  • 32个控制字符:编码值0~31(如回车CR、换行LF)
  • 空格字符SP:编码值32
  • 删除控制码DEL:编码值127
  • 94个可印刷字符

2.3 微型计算机硬件系统组成

2.3.1 微处理器与微型计算机

基本概念

  • 微处理器(μP/MP):将运算器和控制器集成在一起的中央处理器部件
  • CPU:巨型机、大型机和服务器的中央处理器
  • MPU(Microprocessing Unit):微处理器
  • 微型计算机(μC/MC):以微处理器为核心,配上内存储器、输入/输出接口电路及系统总线所组成的计算机
  • 微型计算机系统(μCS/MCS):以微型计算机为中心,配以相应的外围设备、电源、辅助电路以及系统软件所构成的计算机系统

微处理器结构模型关键部件

  • ALU:运算、移位,参与运算的数一个来自累加器A,另一个来自内部数据总线
  • 寄存器阵列:用于存放数据和运算结果,由若干通用/专用寄存器组成
  • 数据寄存器:暂时存放CPU和内存之间数据交换的数据
  • PC(程序计数器):存放下一条将要执行的指令地址,取出地址后自动加一
  • AR(地址寄存器):存放操作数或正要取出的指令地址,PC中取出的地址会先送入AR中进行操作
  • 标志信号(F/FR/PSW):用来存放执行指令结果或状态的标志信号

2.3.2 微处理器中主要的寄存器

CPU通过寄存器来存放指令、数据和地址

六类基本寄存器

  1. 指令寄存器(IR):保存当前正在执行的一条指令
  2. 程序计数器(PC):指出下一条将要执行的指令在主存储器中的地址
    • 程序执行前,将程序首地址送入PC
    • CPU自动递增PC内容
    • 遇到转移指令时,下一条指令的地址由转移指令的地址码字段来指定,而不是顺序递增
  3. 地址寄存器(AR):保存CPU当前所访问的主存单元的地址
  4. 数据寄存器(DR/数据缓冲寄存器):作为CPU和主存、外设之间信息传输的中转站,弥补速度差异
  5. 通用寄存器(R0~Rn):为运算器提供工作区,暂时保存操作数或运算结果,可用作地址指示器、变址寄存器、堆栈指示器等
  6. 程序状态字寄存器(PSW):保存当前各种运算状态条件及程序的工作方式
    • 标志位:进/借位标志(C)、溢出标志(O)、结果为零标志(Z)、结果为负标志(N)、符号标志(S)等

2.3.3 微型计算机中的存储器与地址分配

内存组织

  • 内存按字节来组织,每字节有一个地址
  • CPU访问内存需要给出:地址 + 读/写操作 + 数据(写操作时)

I/O端口编址方式

  • I/O端口:能够被CPU直接访问的寄存器(数据端口、状态端口、控制端口)
  • 统一编址:I/O端口和内存储器统一编址,从内存空间中划出一个子空间给I/O端口,用访问内存的指令对I/O端口进行操作
  • 独立编址(单独编址):内存和I/O端口地址空间各自独立,对I/O端口的操作使用专门的输入/输出指令(I/O指令)
  • Intel系列机普遍采用I/O端口单独编址方式

堆栈

  • 定义:按**后进先出(LIFO)**原则进行存取的存储结构
  • 用途:保存返回地址、保存断点地址、保护现场和恢复现场
  • 子程序调用和中断处理都需要使用堆栈

2.4 输入/输出系统

2.4.1 信息交换方式

1. 程序查询方式

  • CPU首先检查外设是否"准备好",若没有准备好,则CPU重复查询其状态,直至外设准备好才能进行数据传送
  • 缺点:CPU花费大量时间在状态查询中,效率低

2. 中断控制方式

  • 外围设备用来"主动"通知CPU,报告它是否已进入准备就绪状态
  • CPU不必花费时间进行循环测试,从而节省了CPU宝贵的时间
  • 当CPU响应中断时,暂停运行正在执行的程序(主程序),转去执行I/O操作程序(中断服务子程序/中断处理子程序),结束后返回原程序继续执行

3. 直接存储器存取方式(DMA)

  • 完全由硬件执行I/O交换的方式
  • DMA控制器从CPU完全接管对总线的控制,数据交换不经过CPU,直接在内存和外围设备之间进行
  • 优点:数据传送速度很高,传送速率仅受到内存访问时间的限制
  • 适用:主存和高速外围设备之间大批量数据交换

4. 通道方式

  • 通道:具有特殊功能的处理器(输入/输出处理器),分担CPU的一部分功能,实现对外围设备的统一管理

5. 外围处理机方式(PPU)

  • 通道方式的进一步发展
  • 外围基本上独立于主机工作,结构更接近于一般的处理机,甚至就是微小型计算机

2.4.2 程序中断方式

中断的基本思想

  • 主程序只是在设备数据准备就绪时,才去处理进行数据交换
  • 在速度较慢的外围设备准备数据时,CPU照常执行自己的主程序
  • CPU和外围设备的一些操作是并行进行的

中断源

  • 能够引发中断的事件称为中断源
  • 内部中断源:计算溢出、指令的单步运行、执行特定的中断指令等
  • 外部中断源:外设的输入/输出请求、定时时间到、电源掉电、设备故障等

中断处理过程

  1. 中断请求:中断源向CPU发出中断请求
  2. 中断响应:CPU暂停当前程序的执行,转去执行相应的中断处理程序
    • 保护断点:保存被打断的程序中紧接当前指令的下一条指令的地址
    • 保护现场:保存被打断程序中CPU内部各个寄存器(包括标志寄存器)的值
    • 识别中断源:找到中断源服务程序入口地址
  3. 中断处理:执行中断服务子程序
  4. 中断返回:返回被中断程序继续执行,包括恢复现场和恢复断点两部分工作(堆栈)

中断响应特点

  1. 由CPU的中断允许触发器开启中断
  2. CPU在现行指令结束后响应中断
  3. CPU在指令执行周期的最后一个时钟周期(T状态)才采样检测中断请求信号线(INTR)是否有中断请求信号,若有且开启中断,才会开始处理中断

中断系统的功能

  1. 进入中断和退出中断
  2. 对某些中断进行屏蔽,并在必要时开放
  3. 进行优先权排序
  4. 提供中断嵌套的能力