文章目录
1.1 计算机系统简介
1.1.1 计算机的软硬件概念
- 计算机系统:硬件/软件
- 硬件
- 计算机的实体部分
- 看得见摸得着的各种电子元器件/各类光、电、机设备的实物
- 软件
- 事先编制的具有各类特殊功能的程序
- 系统软件/应用软件
- 系统软件
- 管理整个计算机系统
- 监视服务
- 使系统资源得到合理调度
- [标准程序库、语言处理程序(汇编程序/编译程序)、操作系统、服务程序、数据库管理系统、网络软件等]
- 应用软件:用户根据任务需要所编制的各种程序
- 系统软件
- 硬件
1.1.2 计算机系统的层次结构
- 现代计算机的解题过程
- 用户用高级语言编写程序
- 把源程序和数据送入计算机内
- 计算机将源程序翻译成机器语言程序
- 机器自动运行机器语言程序,并将计算结果输出
- 抽象:对一个过程或者一件制品的某些细节有目的的隐藏,以便把其他方面、细节或结构表达得更加清楚
- 机器语言
- 用二进制代码来编写程序->要求程序员对所使用的计算机硬件及其指令系统十分熟悉
- 编写程序难度很大,操作过程也极易出错
- 用户编写的机器语言程序可以直接在机器上执行——实际机器 M 1 M_1 M1(机器语言机器)
- 汇编语言
- 用符号表示操作和指令或数据所在存储单元->程序员可以不再使用繁杂而易错的二进制代码来编写程序
- 用汇编程序——虚拟机器 M 2 M_2 M2(汇编语言机器)将汇编语言程序翻译成机器语言程序才能被机器接受并自动执行
- 一种面向实际机器的语言
- 每一条语句都与机器语言的某一条语句对应->要求程序员对实际的机器 M 1 M_1 M1的内部组成和指令系统非常熟悉
- 没有通用性——摆脱不了实际机器的指令系统
- 面向问题的高级语言
- 对问题的描述十分接近人们的习惯
- 具有较强的通用性——程序员完全不必了解、掌握实际机器 M 1 M_1 M1的机型、内部的具体组成及指令系统,只要掌握这类高级语言的语法,便可直接用这种高级语言编程
- 将高级语言程序翻译成汇编语言程序(或其他中间语言程序)或直接翻译成机器语言程序——虚拟机器 M 3 M_3 M3(高级语言机器),然后将汇编语言程序翻译成机器语言程序后执行或直接执行
- 翻译程序
- 将高级语言程序翻译成机器语言程序的软件
- 编译程序/解释程序
- 编译程序:将用户编写的源程序的全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序
- 解释程序:将源程序的一条语句翻译成对应与机器语言的一条语句,并且立即执行这条语句,接着翻译源程序的下一条语句,并执行这条语句,如此重复直至完成源程序的全部翻译任务
- 微程序机器
M
0
M_0
M0(微指令系统)
- 机器 M 1 M_1 M1内部向下延伸一级
- 用微程序解释并执行 M 1 M_1 M1的每一条机器指令
- 操作系统机器
- 在实际机器 M 1 M_1 M1与虚拟机器 M 2 M_2 M2之间
- 提供了在汇编语言和高级语言的使用和实现过程中所需的某些基本操作
- 控制并管理计算机系统全部硬件和软件资源,为用户使用计算机系统提供了极为方便的条件
- 操作系统的功能是通过其控制语言实现的
- 应用语言虚拟机
- 虚拟机器 M 4 M_4 M4向上延伸一级
- 为使计算机满足某种用途而专门设计的
- 所用的语言是各种面向问题的应用语言,应用语言编写的程序一般由应用程序包翻译到虚拟机器 M 4 M_4 M4上
- 硬件研究的主要对象归结为传统机器 M 1 M_1 M1和微程序机器 M 0 M_0 M0
- 软件研究的主要对象是操作系统级以上的各级虚拟机
- 软硬件交界界面的划分不是一成不变的,随着超大规模集成电路技术的不断发展,一部分软件功能将由硬件来实现,例如目前的操作系统已实现了部分的固化——固件
- 用机器语言解释操作系统:操作系统调用相关硬件执行机器语言程序,这个过程从底层来看就是由一条条机器指令组成
1.1.3 计算机组成和计算机体系结构
- 计算机体系结构:那些能被程序员所见到的计算机系统的属性——概念性的结构与功能
- 计算机系统的属性
- 通常是指用机器语言编程的程序员(也包括汇编语言程序设计者和汇编程序设计者)所看到的传统机器的属性
- 指令集、数据类型、存储器寻址技术、I/O机理等
- 计算机系统的属性
- 计算机组成:如何实现计算机体系结构所体现的属性,包含许多对程序员来说是透明的硬件细节
1.2 计算机的基本组成
1.2.1 冯·诺依曼计算机的特点
- 冯·诺依曼机
- 以“存储程序”概念为基础的各类计算机
- 运算器、存储器、控制器、输入设备、输出设备
- 以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成
- 指令和数据
- 以同等地位存放于存储器内,并可按地址寻访
- 均用二进制数表示
- 指令
- 在存储器内按顺序存放,通常是顺序执行的,在特定情况下,可以根据运算结果或设定的条件改变执行顺序
- 操作码/地址码
- 操作码:表示操作的性质
- 地址码:表示操作数在存储器的位置
1.2.2 计算机的硬件框图
- 典型的冯·诺依曼计算机是以运算器为中心的
- 现代计算机已转化为以存储器为中心——实践中发现运算器的负荷太大
- 系统复杂性管理的方法——3Y原则
- 层次化(Hierarchy):将被设计的系统划分为多个模块或子模块
- 模块化(Modularity):有明确定义的功能和接口
- 规则性(Regularity):模块更容易被重用
- 运算器:用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内
- 存储器
- 用来存放数据和程序
- 主存(内存)/辅存(硬盘)
- 控制器:用来控制、指挥程序和数据的输入、运行以及处理运算结果
- 输入设备
- 用来将人们熟悉的信息形式转换为机器能识别的信息形式
- 键盘、鼠标等
- 输出设备
- 将机器运算结果转换为人们熟悉的信息形式
- 打印机输出、显示器输出等
- 中央处理器(CPU)
- 运算器/控制器——两者在逻辑关系和电路结构上的联系十分紧密,尤其在大规模集成电路制作工艺出现后,这两大部件往往集成在同一芯片上
- 算术逻辑单元(ALU)/控制单元(CU)
- ALU:用来完成算术逻辑运算
- CU:用来解释存储器中的指令、并发出各种操作命令来执行指令
- I/O设备:输入设备/输出设备
- 计算机的硬件系统:CPU、I/O设备、存储器、系统总线
- 现代计算机:CPU、I/O设备、主存储器
- 主机:CPU、主存储器
- 外部设备:I/O设备
1.2.3 计算机的工作步骤
- 计算机的解题步骤
- 上机前的各种准备
- 建立数学模型
- 确定计算方法
- 编制解题程序
- 上机运行
- 计算机的工作过程
- 取数 - 乘法 - …
P C → M A R M D R → I R O P ( I R ) → C U A d ( I R ) → M A R M D R → A C C P C + + P C → M A R M D R → I R O P ( I R ) → C U A d ( I R ) → M A R M D R → M Q A C C × M Q → A C C / / M Q . . . . . . \begin{aligned} &PC\rightarrow MAR\\ &MDR\rightarrow IR\\ &OP(IR)\rightarrow CU\\ &Ad(IR)\rightarrow MAR\\ &MDR\rightarrow ACC\\ &PC++\\ &PC\rightarrow MAR\\ &MDR\rightarrow IR\\ &OP(IR)\rightarrow CU\\ &Ad(IR)\rightarrow MAR\\ &MDR\rightarrow MQ\\ &ACC×MQ\rightarrow ACC//MQ\\ &...... \end{aligned} PC→MARMDR→IROP(IR)→CUAd(IR)→MARMDR→ACCPC++PC→MARMDR→IROP(IR)→CUAd(IR)→MARMDR→MQACC×MQ→ACC//MQ......
- 取数 - 乘法 - …
- 主存储器
- 存储体M、各种逻辑部件、控制电路等
- 存储体 > 存储单元(存储字) > 存储元件(寄存一位二进制代码)
- 存储字长:存储字的二进制代码位数,可以是8位或16位等
- 存储字可代表二进制数、字符串、指令
- 存储单元的地址号
- 存储单元的编号
- 主存的工作方式是按地址号访存,利于程序自动化执行(指令地址)、提高存储空间的利用率(数据地址)、用同一套控制线路完成指令和数据操作
- 存储器地址寄存器(MAR)
- 用来存放欲访问的存储单元的地址
- 其位数决定存储单元的个数
- 存储数据寄存器(MDR)
- 用来存放从存储体某单元取出的代码或准备往某存储单元存入的代码
- 其位数与存储字长相等
- 存储体 > 存储单元(存储字) > 存储元件(寄存一位二进制代码)
- 指令和数据字长由字节的个数表示,而不由存储字长确定——适应指令和数据字长的可变性,但3者必须是字节的整数倍,所以字节是计算机存储指令和数据的基本单元
- 存储体M、各种逻辑部件、控制电路等
- 运算器
- 最少包括3个寄存器(累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X))/一个ALU
- 加法操作过程
[ M ] → X [ A C C ] + [ X ] → A C C \begin{aligned} &[M]\rightarrow X\\ &[ACC]+[X]\rightarrow ACC \end{aligned} [M]→X[ACC]+[X]→ACC - 减法操作过程
[ M ] → X [ A C C ] − [ X ] → A C C \begin{aligned} &[M]\rightarrow X\\ &[ACC]-[X]\rightarrow ACC \end{aligned} [M]→X[ACC]−[X]→ACC - 乘法操作过程
[ M ] → M Q [ A C C ] → X 0 → A C C [ X ] × [ M Q ] → A C C / / M Q \begin{aligned} &[M]\rightarrow MQ\\ &[ACC]\rightarrow X\\ &0\rightarrow ACC\\ & [X]×[MQ]\rightarrow ACC//MQ \end{aligned} [M]→MQ[ACC]→X0→ACC[X]×[MQ]→ACC//MQ - 除法操作过程
[ M ] → X [ A C C ] ÷ [ X ] → M Q . . . A C C \begin{aligned} &[M]\rightarrow X\\ & [ACC]÷[X]\rightarrow MQ...ACC \end{aligned} [M]→X[ACC]÷[X]→MQ...ACC
- 最少包括3个寄存器(累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X))/一个ALU
- 控制器
- 完成一条指令的全过程
- 取指阶段:命令存储器读出一条指令
- 分析阶段:对这条指令进行分析,指出该指令要完成什么操作,并按寻址特征指明操作的地址
- 执行阶段:根据操作数所在的地址以及指令的操作码完成某种操作
- 程序计数器(PC)、指令寄存器(IR)、控制单元(CU)
- PC
- 用来存放当前欲执行指令的地址
- 与主存的MAR之间有一条直接通路
- 具有自动加1的功能,可自动形成下一条指令的地址
- IR
- 用来存放当前的指令
- 其内容来自MDR
- 操作码被送到CU( O P ( I R ) → C U OP(IR)\rightarrow CU OP(IR)→CU),用于分析指令
- 地址码作为操作数的地址被送到MAR( A d ( I R ) → M A R Ad(IR)\rightarrow MAR Ad(IR)→MAR)
- CU
- 用来分析当前指令要完成的操作
- 发出各种微操作命令序列,用以控制所有被控对象
- PC
- I/O
- I/O设备、相应接口
- 每一种I/O设备都由I/O接口与主机联系,接收CU发出的各种控制命令,并完成相应的操作
1.3 计算机硬件的主要技术指标
1.3.1 机器字长
- CPU一次能处理数据的位数
- 通常与CPU的寄存器位数有关
- 字长越长,数的表示范围越大,精度越高
- 影响机器的运算速度
- 影响硬件的造价
- 直接影响ALU、数据总线、存储字长的位数
1.3.2 存储容量
- 主存容量/辅存容量
- 存储容量 = 存储单元个数 × 存储字长
1.3.3 运算速度
- 吉普森法 T M = ∑ i = 1 n f i t i T_M=\sum_{i=1}^n f_it_i TM=i=1∑nfiti其中, T M T_M TM为机器运行速度; f i f_i fi为第 i i i种指令占全部操作的百分比数; t i t_i ti为第 i i i种指令的执行时间
- 衡量指标
- 普遍采用单位时间内执行指令的平均条数来,并用MIPS(百万条指令每秒)作为计量单位
- 主频:CPU的时钟频率
- CPI
- 执行一条指令所需的时钟周期
- 与主频互为倒数
- FLOPS(浮点运算次数每秒)