微型计算机基础绪论
一些英文
微处理器MPU=Microprocessor Unit
处理器CPU=Center Processing Unit(有时也指代微处理器)
地址总线AB=Address Bus
数据总线DB=Data Bus
控制总线CB=Control Bus
总线接口部件BIU=Bus interface Unit
字节Byte=bit(一组八位二进制数)
只读存储器ROM=Read Only Memory
随机存取存储器RAM=Random Access Memory
程序计数器PC=Programming Counter
十进制D=decimal
二进制B=binary
十六进制H=hex
八进制O=octal
二进制编码的十进制BCD=Binary-Coded Decimal
1word=2Byte,1Byte=8bit
word是字,Byte是字节,bit是位
与门=AND gate
或门=OR gate
非门=NOT gate
与非门=NAND gate
或非门=NOR gate
异或门=XOR gate
同或门=XNOR gate
纲要
微型计算机系统组成
计算机中的数制及其转换
补码的概念和运算
冯・诺依曼结构及基本原理
基本逻辑门及其逻辑关系
习题
微处理器、微型计算机、微型计算机系统三者间有什么不同?
计算机为什么要采用二进制? 除二进制外为什么还有其它计数制?
什么是无符号数? 什么是有符号数?
为什么要引入补码?
冯・诺依曼计算机具有什么结构特点和基本工作原理?
利用冯・诺依曼计算机执行一条指令需要的基本过程?
什么是逻辑? 真值表的含义?
程序计数器的作用。
不同计数制之间如何转换?
原码、反码和补码之间的关系?
二进制运算
如何判断运算结果是否溢出?
基本逻辑门电路的符号及输入与输出的关系(逻辑真值表)
内存的组织关系:单元, 单元内容, 单元地址
补码的概念及其运算
基本逻辑门及其逻辑关系
补码数A8H对应的十进制数是多少?
解:
因为:A8H=10101000B
所以,该数是负数
要获得该数的真值,需要对该数再求补码:
[ A 8 H ] 补 = [ 10101000 ] 补 = 11011000 , [\mathrm{A} 8 \mathrm{H}]_{\text {补 }}=[10101000]_{\text {补 }}=11011000, [A8H]补 =[10101000]补 =11011000, 真值为 :-1011000
该数对应的十进制数是:-88
微型计算机基础绪论
课程研究内容
如果需要从事计算机软件理论、体系结构设计,那就需要计算机组成原理、结构设计的相关课程;
如果未来侧重于计算机应用系统、过程控制系统设计,那就是本课程的重点。
计算机的主要应用分为:数值计算、信息处理、过程控制
工业过程控制的对象往往是一些達夹变化的非电物 理量,要使这类信号能够被计算机所识列和 处理,需要经过一个角杂的过程。
这门课程关注的重点:计算机的基础知识、微型计算机基本原理、微机接口控制,也就是计算机硬件技术和输入输出接口控制技术。
为了先对所学的东西有一个大致的概念,先来看两个案例。
案例一:家庭安全防盗系统设计
为一栋含8个窗卜的HOUSE设计一个简易的安全报警系统。
系统功能要求:
- 每个窗台安装一个检测装置,当某一监测装置连续5次检测出异常时,启动报警(警铃响,警灯闪烁);
- 在危险解除后关闭报警(不能一直响应);
- 在需要时启动系统布防,不需要时则可关闭系统(长期在家时并无危险)。
案例分析:
如何检测出有无异常 ?
检测到的信息在计算机中如何表示 ?
如何确定异常次数?/异常来自同一监测装置?(具体一个窗台上连续5次,以消除干扰)
如何启动和停止报警?
案例二:温室温度控制系统
由3台电炉实现温室温度控制
系统功能要求
- 温室温度控制为:25"C -38"C;
- 实时显示2位温室温度;
- 当在给定时间不能保证温度在要求范围时要发出警报信号
案例分析
设计硬件系统:
- 温度测量电路
- 温度控制电路
- 温度显示电路
- 报警电路
设计软件系统:
- 温度检测
- 温度控制(根据测量值和给定值控制电炉通断)
- 显示温度
- 报警输出
室温如何读取并能被计算机识别?
温度如何显示?
怎样实现报警?
系统要将非电信号转化为连续变化的电信号,再转化成计算机能够识别的离散电信号,与内部内存的数据进行比对。
学习完这门课程后,我们就要能完成一些类似的系统设计。
涉及:数据在计算机中表示、现场数据的采集(获取)与转换、现场数据的存储与处理
主要讲授
数值信息表示
微型计算机基本原理(微处理器结构,Intel80x86基本指令集)
汇编程序设计(软件设计)
半导体储存器及其接口设计(硬件设计)
输入输出技术(硬件设计,数字并行接口、模拟量并行接口)
汇编语言和计算机基本原理息息相关,而高级编程语言,执行一条程序则不能知道他到底在哪里执行,内存在哪。
微型计算机系统组成
外部设备:可以和CPU进行数据交换,但不能直接和CPU进行数据交换,u盘、手机、键盘鼠标,都属于这个范畴。
主机系统(CPU,存储器,输入输出接口,总线)
微处理器(运算器,控制器,寄存器组)
微处理器简称CPU(Center Processing Unit)
{ 运算器 控制器 寄存器组 \left\{\begin{array}{l}\text { 运算器 } \\ \text { 控制器 } \\ \text { 寄存器组 }\end{array}\right. ⎩⎨⎧ 运算器 控制器 寄存器组
控制器,由一组控制逻辑单元
寄存器:就像是火车站的行李寄存点一样,当我们需要进行多个数的运算时,前两个数的结果不需要立刻抛出到很远的地方,就可以先放到寄存点,然后再依次求和。但是数据的暂时存放只是寄存器的一个功能而已,具体的其他功能,之后的章节在详细描述。
存储器
计算机中的记忆装置。 用于存放计算机工作过程中需要操作的数据和程序。
{ 内存储器 外存储器 { 联机外存 ⟶ 硬磁盘、固态盘 脱机外存 ⟶ 各种移动存储设备 \left\{\begin{array}{l}\text { 内存储器 } \\ \text { 外存储器 }\left\{\begin{array}{l}\text { 联机外存 } \longrightarrow \text {硬磁盘、固态盘} \\ \text { 脱机外存 } \longrightarrow \text {各种移动存储设备}\end{array}\right.\end{array}\right. ⎩⎨⎧ 内存储器 外存储器 {
联机外存 ⟶硬磁盘、固态盘 脱机外存 ⟶各种移动存储设备
实际上硬盘的借口规定SATA就是指和CPU的接口。
外存储器都属于外设,不能直接和CPU发生数据交换,一定要通过I/O接口。之后描述的存储器,不特殊说明都是指内存储器,简称内存。
上图为机械硬盘
上图为内存ROM
内存储器
特点
- 存取速度较快,容量相对较小。
- 内存按单元组织,每单元都对应个惟一的地址 ;
- 每个内存单元中存放1Byte数据;
- 内存单元个数称为内存容量。
解释:内存就相当于是摩天大楼,由很多房间构成,房间门牌号码的长度取决于有多少房间
。门牌号码的编制方式也很讲究,如果只有9层楼,那么只需要一位十进制数801,那么得到这个信息的客户肯定就知道,要先去8楼找房间了。
存储容量与读写操作
- 存储容量:存放的数据量。用字节表示。
- 对存储器的操作:读(出),写(入)
每8位0或1称 为1字节 (Byte),内存单元每个单元都是1Byte,即一字节,也即一个八位二进制码,每个单元的内容都是这样。
内存地址编码方式类似于摩天大楼的编码方式,内存单元的个数称为容量,表征对数据存储量的大小。
读,是copy一份文件,非破坏性操作;写则是破坏性操作,二者都是信息交换操作。
分类方式
安装工作方式 { 随机存取存储器(RAM) 只读存储 器 (ROM) \left\{\begin{array}{l}\text { 随机存取存储器(RAM) } \\ \\ \text { 只读存储 器 (ROM) }\end{array}\right. ⎩⎨⎧ 随机存取存储器(RAM) 只读存储 器 (ROM)
内存RAM就是想读就读,想写就写,十分方便,缺点就是需要后备电源;
只读ROM的写是有条件的,但是它不需要后备电源,也就是掉电仍能保持数据,U盘,相机,手机都是这样。
输入/输出接口
接口是CPU与外部设备间的桥梁
主要功能:
数据缓冲寄存;
信号电平或类型的转换;
实现主机与外设间的运行匹配。
为什么需要接口呢?
比方说你走在路上,想要和车子里的人说话,那没办法,车子就没法保持高速运转,只能慢下来甚至停下来。
而计算机里的CPU是高速设备,他要和相当数量的“行人”(外设)有交流,不可能每个行人他都过来慢慢跑。
所以这个时候,就需要一个中转站,接口,相当于一个小货仓,行人想说什么,写纸条上,放在这个中转站,CPU就检查这个仓库就对了,不需要和行人直接对接,只要定期来看看这里存了些什么东西即可。
外设可能是数字信号、模拟信号、按位传输、按帧传输,种类,速度要求各不相同,而CPU本身的驱动能力也相对有限,所以通过一个接口是十分有必要的。
总线
是一组导线和相关的控制、驱动电路的集合。
是计算机系统各部件之间传输地址、数据和控制信息的通道。
总线是一组导线加一堆控制电路,也就是一个传送带,大家各个部件共用,如果发生争执,那总线自己要裁决先运谁的货。
总线今天仍然是计算机系统的瓶颈,因为多个部件,大家速度都很高,各不相同,又要共用,通道的速度就直接影响了整个系统的性能。
分类:
地址总线(AB)
数据总线(DB)
控制总线(CB)
总线上跑的是0和1,但是属性是不同的,一组01可能是地址(房间门牌号),一组01可能是单元内容(住的谁),可能代表着一些控制信息(有人敲门进房间之类的,要提取数据)
因此三条线对应了三种不同的信息。
软件系统
软件:为运行、管理和维护计算机系统或为实现某一功能而编写的各种程序的总和及其相关资料。
软件 { 系统软件 { 操作系统 编译系统 网 络系统 工具软件 应用软件 \text { 软件 } \left\{\begin{array}{l} \text { 系统软件 }\left\{\begin{array}{l} \text { 操作系统 } \\ \text { 编译系统 } \\ \text { 网 络系统 } \\ \text { 工具软件 } \end{array}\right. \\ \text { 应用软件 } \end{array}\right. 软件 ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧ 系统软件 ⎩⎪⎪⎨⎪⎪⎧ 操作系统 编译系统 网 络系统 工具软件 应用软件
软件不等于程序,还包括运行数据和相关文档资料的总和。
Windows系统风格的继承,每一代都有不同的员工,如何保证?就依赖于文档资料的管理,有了不同的历史版本信息,后面的人就能很快读懂之前的程序信息。
文档管理在软件工程上相当重要。
我们大部分编的都是应用程序。
总结图
主机系统特征
能够与CPU直接进行信息交换的部件属于主机系统
不能够与CPU直接进行信息交换的部件属于外部设备
微型计算机的一般工作过程
刚刚我们已经知道了计算机由硬件系统和软件系统构成,包括CPU,存储器,总线,I/O,外设,软件。
计算机的工作就是执行程序,而程序是指令的序列
那么计算机的工作就是按照一定的顺序,一条条地执行指令
指令
指令的执行过程
计算机的工作过程就是执行程序的过程
程序是指令的序列,程序是由指令组成的,计算机的工作过程就是执行指令的过程
分析和执行只需要在CPU内部完成即可,只有取指令需要到存储空间去,因为程序是在那里存起来的,也就是说只有取指令需要用到总线。
顺序执行
一条指令执行完了再执行下一条指令。
执行时间=取指令+分析指令+执行指令
设: 三个部分的执行时间均为 Δ t , \Delta \mathrm{t}, Δt, 则 : : : 执行n条指令时间 T 0 \mathrm{T}_{0} T0 为:
T 0 = 3 n Δ t \mathrm{T}_{0}=3 \mathrm{n} \Delta \mathrm{t} T0=3nΔt
并行执行
同时执行两条或多条指令。
仅第1条指令需要3 Δ \Delta Δ 时间,之后每经过1 Δ \Delta Δ t,就有一条指令执行结束 执行时间: T = 3 Δ t + ( n − 1 ) Δ t \mathrm{T}=3 \Delta \mathrm{t}+(\mathrm{n}-1) \Delta \mathrm{t} T=3Δt+(n−1)Δt
打开水龙头的过程,开头是要稍微等一下的,然后就源源不断了,这个也类似。本来水管口子哪里有一点是不工作的,然后整个水管全部被占用了(类比总线)
两种方式的对比
某程序段经编译后生成18000条机器指令,假设取指令、分析指令和执行指令所用的时间均为2ns。则使用并行流水线方式完成该程序段所需的时间为( )ns。
A. 36004
B. 36006
C. 108000
D. 36000
选A
并行:更高的效率,更高的复杂度
相对于顺序执行方式,指令并行执行的优势用加速比S表示:
S=顺序执行花费的时间÷并行执行花费的时间
例:
3 n Δ t 3 Δ t + ( n − 1 ) Δ t = 3 n 2 + n \begin{aligned}\frac {3\mathrm{n} \Delta \mathrm{t} }{3 \Delta \mathrm{t}+(\mathrm{n}-1) \Delta \mathrm{t}}=\frac {3 \mathrm{n}}{2+\mathrm{n}}\end{aligned} 3Δt+(n−1)Δt3nΔt=2+n3n
当然这只是理想情况下,取值译码执行全部用一样的时间,完全无缝拼接,但其实每条指令当然不一样,如果还要取操作数就更要断流了。
冯诺依曼计算机
冯・ 诺依曼计算机的工作原理:存储程序工作原理
程序从存储器到CPU
结构特点:运算器为核心
工作过程
Programming Counter
计数器(寄存器的一部分)指向第一条指令的存储地址,CPU就会将这一指令取出,如果需要操作数,再去取,最后返回。
取一条指令的工作过程:
以十六进制B1H为例,计数器先搞到它的地址(这个操作由地址寄存器完成,但不对程序员开放),地址总线就要起作用了,因为进别人房间要先敲门,CPU就要发“读存储器”的命令,指令若不是地址,就要从数据线再传到译码
(1) 将指令所在地址赋给程序计数器PC;
(2) PC内 容送到地址寄存器AR,PC自动加1 ;
(3) 把AR的内容通过地址总线送至内存储器,经地址译码器译码,选中相
应单元。
(4) CPU的控制器发出读命令。
(5) 在读命令控制下,把所选中单元的内容(即指令操作码) 读到数据总线
D B ∘ \mathrm{DB}_{\circ} DB∘
(6) 把读出的内容经数据总线送到数据寄存器DR。
(7) 指令译码
- 数据寄存器DR将它送到指令寄存器IR,然后再送到指令译码器田
体系结构
冯诺依曼的五部件结构,运算器控制器在CPU中,存储器特指内存,输入有键盘鼠标等,输出有显示器等
优缺点
特点:
程序存储,共享数据,顺序执行
属于顺序处理机,适合确定的算法和数值数据的处理。
不足:
与存储器间有大量数据交互,对总线要求很高;
执行顺序由程序决定,对大型复杂任务较困难;
以运算器为核心,处理效率较低;
由PC控制执行顺序,难以进行真正的并行处理。
不足,指令执行过程,取数取指令共用总线,中间必须要等待
而如今数据交互需要越来越大型了,通道,总线的要求都越来越高;
大型任务对算法的要求越来越大,而其中可能并不会需要那么清晰的明确的算法
运算器核心,内存→CPU→输出,以及CPU,内存,接口的传输,
而只要需要软件参与,速度就大大受限了,直接硬件的操作才足够迅速
程序计数器只有一个,很难并行处理
哈佛结构
指令和数据分别存放在两个独立的存储器模块中
CPU与存储器间指令和数据的传送分别采用两组独立的总线;
可以在一个机器周期内同时获得指令操作码和操作数。
大型机微型机的改进型结构/哈佛结构:指令和运算数据分开存储,分开通道
数制及其转换
人类最习惯的计数制是十进制
计算机由具有两种状态的开关器件组成,可以用0和1分别表 示两种不同的状态 二进制
计算机中采用二进制
计算机硬件唯一能够识别的是二进制数。
任何其它计数制和各种信息要让计算机处理,都需要借助软件 转换为二进制。
0,1是计算机唯一能识别的,其他程序都要搞成这两个东西
进制统一表示
对任意一种计数制,都可以用以下权展开式表示:
( S ) k = S n − 1 × K n − 1 + S n − 2 × K n − 2 + ⋯ + S o × K 0 + S − 1 × K − 1 + ⋯ + S − m × K − m = ∑ i = − m n − 1 S i × K i \begin{aligned} (S)_{k} &=S_{\mathrm{n}-1} \times K^{n-1}+S_{n-2} \times K^{n-2}+\cdots+S_{\mathrm{o}} \times K^{0}+S_{-1} \times K^{-1} \\ &+\cdots+S_{-m} \times K^{-m} \\ &=\sum_{i=-m}^{n-1} S_{i} \times K^{i} \end{aligned} (S)k=Sn−1×Kn−1+Sn−2×Kn−2+⋯+So×K0+S−1×K−1+⋯+S−m×K−m=i=−m∑n−1Si×Ki
十进制表示法
特点:
以十为底,逢十进一;
共有0-9十个数字符号。用D (decimal) 代表。
( D ) 10 = D n − 1 × 1 0 n − 1 + D n − 2 × 1 0 n − 2 + ⋯ + D 1 × 1 0 1 + D 0 × 1 0 0 + D − 1 × 1 0 − 1 + ⋯ + D − m × 1 0 − m (D)_{10}=D_{n-1} \times 10^{n-1}+D_{n-2} \times 10^{n-2}+\cdots+D_{1} \times 10^{1}+D_{0} \times 10^{0}+D_{-1} \times 10^{-1}+\cdots+D_{-m} \times 10^{-m} (D)10=Dn−1×10n−1+Dn−2×10n−2+⋯+D1×101+D0×100+D−1×10−1+⋯+D−m×10−m
= ∑ i = − m n − 1 D i × 1 0 i =\sum\limits_{i=-m}^{n-1} D_{i} \times 10^{i} =i=−m∑n−1Di×10i
一般没有标识就默认十进制数字,即便在计算机中也是,二进制要末尾B,十六进制H,八进制O
二进制表示法
特点:
以2为底,逢2进位;
只有0和1两个符号。用B (binary) 表示。
表示:
( B ) 2 = B n − 1 × 2 n − 1 + B n − 2 × 2 n − 2 + … + B 0 × 2 0 + B − 1 × 2 − 1 + … + B − m × 2 − m = ∑ i = − m n − 1 B i × 2 i \begin{aligned}(B)_{2} &=B_{\mathrm{n}-1} \times 2^{n-1}+B_{n-2} \times 2^{n-2}+\ldots+B_{0} \times 2^{0}+B_{-1} \times 2^{-1}+\ldots+B_{-m} \times 2^{-m} \\ &=\sum_{i=-m}^{n-1} B_{i} \times 2^{i} \end{aligned} (B)2=Bn−1×2n−1+Bn−2×2