计算机组成系列文章目录
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
第一章 计算机系统概论简介
第二章 计算机的发展以及应用(曾经作为过考点)
第三章 系统总线
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
这里是计算机组成的第一章,计算机系统的简介,大二刚结束,记录一下跟着老师学习下学期的计算机组成的心得体会吧。
本篇应该是第一章计算机系统概论核和第三章的系统总线
提示:以下是本篇文章正文内容,下面案例可供参考
一、计算机系统概论
1.1 现代计算机系统由哪两部分构成?——软硬件概念
软件包括系统软件和应用软件
硬件包括主机和外设,主机包括CPU和主存
1.2 层次结构
上层调用下层提供的接口调用下层的功能来实现自己的功能。
实际机器M1和微程序机器M0两个是硬件
虚拟机器对应的是软件
M0由硬件直接执行微指令
1.3 冯·诺依曼计算机
1.3.1 它的特点:
- 由五大部件组成:运算器、控制器、存储器、输入设备、输出设备
- 指令和数据以同等的地位存于存储器,可按地址寻访
- 指令和数据用二进制表示
- 指令由操作码(要做什么操作)和地址码(操作数存放的地址)组成 停机指令没有地址码!!
- ** 存储程序(核心特征!!!!) **
- 以运算器为中心
1.3.2 冯·诺依曼计算机硬件框图
运算器为中心
输入设备要通过运算器存入存储器
存储器要通过运算器到输出设备
实线是数据通过
虚线是控制和状态反馈
运算器: 算术运算和逻辑运算
存储器: 存放数据和程序
控制器: 指挥控制程序运行
输入设备 将信息转化为机器能识别的形式
输出设备 将结果转换为人们熟悉的形式
问题:不具有层次化的特征、运算器过于繁忙
1.3.3 改进的以存储器为中心的计算器硬件框图
双线的箭头表示数据的传输
1.3.4 现代计算器硬件框图
CPU包括ALU、CU
主机包括CPU和主存(所以电脑中的硬盘是辅存,不属于主机)
I/O设备包括辅存和输入设备输出设备(注意是包括辅存的)
而硬件则包括主机和I/O设备
系统复杂性管理的方法——3Y
层次化: 将被设计的系统分为多个模块或子模块,分别对子模块进行设计
模块化: 有明确定义的功能和接口,这样才可以将子模块组装在一起
规则性: 模块更容易被重用,设计的模块在别的系统也能用(比如只要内存的接口是标准化的,可以插到任何一个电脑上使用)
1.3.5 指令格式
指令格式组成:操作码+地址码
冯诺依曼机器:指令和数据都以同等地位保存在存储器中
都以二进制形式存储
将指令和数据互换,修改对应的地址码对应需要修改,然后将PC设置好到第一条指令即可继续运行!
存储器基本组成
存储元件构成存储单元,存储单元构成存储体
1.4.1 MAR
存储器地址寄存器,保存了存储单元的地址或者说存储单元的编号 ——它的长度说明着有多少个地址
1.4.2 MDR
存储器数据寄存器
要送到CPU的数据,或者从存储体取出或者送入存储体的数据——它的长度说明了存储字长的位数
运算器结构与功能
1.5.1 运算器的基本组成
为了让ALU(算逻运算单元,通常是组合电路),但是为了保存结果,需要在ALU之前用两个寄存器保存参与运算的数据,一个是ACC一个是X(数据寄存器)。为了保存运算结果,ACC还有保存运算结果的作用,但是有时候因为乘法的需要,还要一个MQ来作为另一个储存结果的寄存器。
各个运算时的寄存器用处如下:
其实可以注意一下,这个MQ用来保存乘数和商还有乘法的一个结果,所以被称为乘商寄存器
1.5.2 加法操作过程
指令是操作码+加数地址
首先把被加数存到ACC中,为加法做准备。
然后才把内存中的加数M存到X寄存器,结果保存到ACC
1.5.3 减法操作过程
指令是操作码+减数地址
被减数在初态被放入ACC
1.5.4 乘法操作过程
同样被乘数在初始状态就通过取数指令,放入ACC
M是乘数,送到MQ
再把ACC中的被乘数放到X寄存器(这一步不能忘!!)
由于乘法是通过累加和移位进行的,因此用ACC作为累加的寄存器,但是注意要先把ACC清零
这些操作的先后顺序由控制器进行控制
1.5.5 除法操作过程
对应减法一样,操作指令的M里面是除数的地址
控制器结构与功能
1.6.1 它的功能
解释指令
保证指令按序执行
1.6.2 控制器的基本组成
控制器由程序计数器PC、指令寄存器IR以及控制单元CU组成,控制器不只是CU!!!
完成一条指令分为三个阶段:
取指令PC:把内存单元保存的指令取出送到控制器
分析指令IR:操作码送到控制单元分析
执行指令CU:控制单元控制相应的执行部件完成相关操作
取指令 —> PC程序计数器,它与主存的MAR之间有一条通路,保存当前欲执行指令的地址,也就是说存放是预执行指令地址,存的是没有执行的指令
分析指令 ——>IR指令寄存器,它的内容来自MDR,存放当前要执行的指令,控制单元可以把操作码取出进行分析
执行指令 ——>操作的控制是CU进行控制
CU是控制器的核心,各种控制信号从CU发出来
主机完成一条指令的过程
1.7.1 以取数指令为例观察过程
1~4:取值操作
1:从PC取指令地址,送到MAR
2:保存地址,根据地址取出指令
3:取出的指令保存在MDR
4:IR存储现在要执行的指令
5:将指令寄存器的操作码部分存入CU
6:CU控制之下,IR将操作数地址送到MAR
7:取数
8:取出数送到MDR
9:将MDR中取出的数送到ACC
1.7.2 观察存数指令
1.7.3 一个普通程序的运行举例
在运行之前要先取出程序的指令首地址放到PC中
然后取指令、分析指令、执行指令完成一个动作
打印结果是最后一个动作,也是取指令、分析指令和执行指令的顺序
一定要记好这里的(PC)+1 对于PC的重新赋值是重要考点!!!
计算机硬件的主要技术指标
1.8.1 主要技术指标
-
机器字长:CPU一次能处理数据的位数,与CPU中寄存器位数有关。机器字长越长,性能越好
比如可以让CPU对一个八位二进制做加法得到的还是八位二进制数,那么说机器字长为八。在模型机中,这与寄存器的位数是一致的
早期计算机的存储字长一般和机器的指令字长与数据字长相等,但是现在的计算机要求指令字长与数据字长可变
64位一般是说机器字长64,但是存储字长还有指令字长这三者都不一定相等,但是他们都必须是字节的整数倍 -
存储容量
存储器的容量包括主存储器还有辅存储器
存储容量= 存储单元个数(由MAR位数得到) × \times ×存储字长(MDR的位数,存储字长)
存放二进制信息的总位数
-
运算速度:有几个可以衡量的方面,
主频 越高可能意味着运算速度越快,但是没有直接关系
核数 每个核支持的线程数,但是也不是直接指标
指令执行的速度 按照指令频率计算指令执行时间的加权平均值——吉普森法(两种计算方法)
一种:指令的静态使用频率,用程序清单直接计算,不用执行
另一种:动态使用频率,程序执行时候,每一条指令执行的频率,需要执行
CPI 执行一条指令需要的时钟周期数,它的计算也需要计算平均值,静态使用频率或者动态使用频率,加权计算出来
MIPS 每秒执行百万条指令
FLOPS 每秒浮点运算次数,这个更加科学
二、计算机的发展以及应用
2.1 计算机的产生历史
第一代电子管计算机
第二代晶体管计算机
第三代集成电路计算机
2.2 摩尔定理
2.3 软件
2.3.1 系统软件(考试区分)
操作系统属于大型系统软件
编译程序属于语言处理程序
连接程序属于服务型程序
数据库管理系统是系统软件,但是“数据库系统”不是
2.3.2 软件发展的特点
2.4 计算机的应用(考过CAD的名字)
这里一定注意CAD/CAM/CIMS
CAD 计算机辅助设计 Computer Aided Design
CAM 计算机辅助制造 Computer Aided Manufacturing
CIMS 计算机集成制造系统 Computer Integrated Manufacturing Systems
2.5 计算机的展望
三、系统总线
3.1 总线的基本概念
总线各个部件共享的传输介质,总线方便扩展计算机的各个设备
总线的概念: 总线是连接各个部件信息传输线,是各个部件共享的传输介质
总线上信息的传送: 分为串行和并行,但是不能直接比较两种方式谁块,如果是时钟周期相同情况下并行快,实际实现种并行总线如果时钟频率过高可能会出现问题。但是串行方式的实现的时候可能时钟频率很高
并行时候线与线之间可能存在干扰,因此应用的距离比较短,只有几厘米
而长距离的传输应该用串行,几十米甚至上百米
总线结构的计算机举例:
- 单总线结构框图
一般来说CPU快于主存快于I/O
这里存在的问题:
首先,因为总线只能支持一对也就是两个设备使用 这里在I/O设备和主存进行数据传输时,CPU只能停止工作,他不能跟主存进行数据传输,影响效率。有的I/O设备很慢会影响结果
其次,当主存与I/O设备很远时,数据传输需要通过较长时间
- 面向CPU的双总线结构
以CPU为中心
这里增加了一个总线来让CPU和主存进行传输,CPU的数据和指令都来自主存,他们之间的信息交换十分繁忙,单独拿一个总线
但是主存和I/O设备进行数据传输的时候还是需要经过CPU,打断了CPU的工作
3.以存储器为中心的双总线结构框图
3.2 总线的分类 重点!!!!
- 片内总线——芯片内部的总线
- 系统总线——计算机各部件之间的信息传输线
包括三类,数据总线;地址总线;控制总线
数据总线: 双向,与机器字长、存储字长有关,通常是小于或者等于机器字长和存储字长
地址总线: 单向,与存储地址、I/O地址有关,在我们的模型中是与MAR寄存器的宽度一致。都是由CPU发出到主存或者I/O
控制总线: 方向有出(CPU的发出:存储器读,存储器写,总线允许,中断确认) 有入(传入CPU:中断请求、总线请求信号)
出和入对应的不是同一根线,双向的数据总线则对应同一根线,两者不同
- 通信总线——用于计算机系统之间或计算机系统与其它系统(如控制仪表、移动通信等)之间的通信
传输方式:串行通信总线和并行通信总线
3.3 总线特性及性能指标
3.3.1 总线物理实现
在主板上
3.3.2 总线特性
机械特性:让总线能和插板能有效连接,尺寸、形状。管脚数以及排列顺序,什么样的卡插到什么样的槽中
电气特性:包括传输方向(数据线是双向的,地址线是单向的,注意这是电气特性而不是功能特性)有效的电平范围(0和1分别加上多少电压)是多少
功能特性:地址信号、数据信号、控制信号还有状态反馈信号
时间特性:信号的时序关系
3.3.3 总线的性能指标
首先是总线的宽度——>数据线的根数,根数越多,同时传输的位数越多,性能越好(可能4、8、16、32)
串行的总线的宽度就是1
标准传输率——> 通常用每秒做了多少操作传输多少数据,两个关键词:最大 满功率的、字节数
时钟同步还是异步 用一个时钟总线提供时钟
总线复用 ——>地址线与数据线的复用(8086 地址线20根,这20根地址线有16条同时作为数据线来使用,复用是一部分线复用,一部分专用,20位送到MAR,因为有D锁存器,16位可以被修改继续用来传输数据而不会修改结果)这样可以减少芯片管脚数量
总线复用的代价是加入了锁存器用来支持复用,锁存住地址低位,后面可以继续传输数据
信号线数——>地址线、数据线和控制线的总和(片选、读、写)(读写信号线和使能信号线)计算信号线数的时候要注意总线的复用
总线控制方式
其他指标
3.3.4 总线标准(可能选择,会考,比如记住他们的名字,小测考过)
不同企业生产不同的部件,需要一定的标准来进行集成
USB不是系统总线,他是通信总线
注意区分PCI和CPI还有IPC PCI是总线标准,但是CPI是表示每条计算机指令执行所需的时钟周期数,IPC是CPI倒数
3.3.5 总线结构
- 单总线结构
总线成为了系统的瓶颈
- 双总线结构
存储总线和I/O总线分离
存储总线上连接CPU和存储器。I/O总线上连接各种I/O设备
通过 通道 把I/O总线和主存总线进行连接,实现I/O设备与主存与CPU的通信
这里的 “通道” 是具有特殊功能、结构简单的处理器,专门用于输入输出操作
通道 有自己的控制器,有自己的指令系统,通道可以执行一些简单指令,通道是由操作系统编写而不是人工编写
- 三总线结构
除了主存总线和I/O总线外,增加了一个DMA总线
DMA:直接存储器访问(外部设备直接访问存储器内存)
高速外设直接从I/O接口通过DMA总线访问主存
而低速设备仍然要通过I/O总线经CPU访问主存(中低速设备用的还是程序中断或者是程序查询)
三总线结构的另一种形式:(局部总线的作用是重点)
CPU和主存之间的信息交换是最大的,但是从内存读取过慢,为解决这个问题,从cache缓存中读更快
局部总线将两者连起来,局部I/O控制器也可以连接一些局部的高速设备
各种设备都可以连到扩展总线上,解决I/O设备的扩展问题
但是存在一定问题,不同速度的外部设备都连接到扩展总线上,影响外部设备的工作速度
- 四总线结构
四总线结构加入了高速总线,将高速设备与低速设备分隔开
- 举例
- USB总线结构
可以有多层的扩展,总外部设备连接个数少于或等于127
3.3.6 总线控制(重点!难点!)
总线上连接了多个设备,设备之间进行通讯
总线的判优控制 到底哪一对设备使用总线
占用总线后,如何完成通讯过程 如何完成通讯过程以保证正确性
3.3.6.1 总线判优控制
基本概念:
是否能提出总线请求,把总线上的设备分为两类:
主设备(主模块),对总线具有控制权,可以提出对总线的占用申请,占用总线后可以控制和另外一台设备之间进行通信过程(CPU、DMA控制器等)
至少有一个主设备是CPU,DMA控制器也可能是主设备,对总线有控制权
从设备(从模块),响应从主设备发来的总线命令
有些设备既可以当主设备,又可以当从设备
有些总线只有一个主设备,有些可以有多个主设备
总线判优控制 分为集中式和分布式
集中式: 将判优逻辑放到一个逻辑部件中,放在CPU中。集中式又分为链式查询方式、计数器定时查询方式、独立请求方式
分布式: 将判优逻辑分布到各个设备,或者各个端口上
- 链式查询方式
总线控制部件是集中在一起的,这是集中式总线判优控制的特征
几个概念:
数据总线: 用于信息交换过程中信息的传输
地址总线: 主设备占用总线后,需要通过地址线找到从设备
BR: 总线请求,提出总线占用或者总线使用的请求(所有设备)
BS: 总线忙,如果某一个设备占用总线的控制权,通过总线忙这条信号告诉总线控制部件总线忙
BG: 总线授权线,它的特点让这个方式叫做链式查询方式。当有请求到达总线控制部件后,决定可以让出总线控制权,
过程: 因为只通过一条线提出的请求,不知道哪个设备优先权更高,总线控制权不知道应该交给谁。BG逐个查看I/O接口,查看每个接口是否提出了总线占用请求,若没有则总线授权信号继续向下进行传送,直到碰到第一个提出总线占用的I/O接口。让他获得总线占用权,接口通过BS设置总线忙。
特点: (网友总结:链式会导致饥饿现象,且一处故障全局瘫痪)
优先级的确定:与BG这条线的查询顺序有直接关系,它的查询顺序在一开始便已经确定
对电路故障特别敏感,尤其是BG,有一个地方发生电路故障信号无法向下传送的话,后面的I/O设备都无法接收到信号
优点是结构简单,优先级和总线仲裁的线只有三条。增删设备十分简单。可靠性设计也非常简单,比如将某一条线换成两条线,避免一些电路故障
速度比较慢,一般使用在微型计算机和简单的嵌入式系统中
2. 计数器定时查询方式
数据线
地址线
设备地址:传输的地址是由计数器给出的,通过这个地址查找某一个设备是否发出了总线的占用请求
BR
BS
特点:
总线控制部件有一个计数器,初值可以是0也可以是其他,如果某一个主设备请求总线使用权,并且如果此时总线可以让出总线使用权,启动计数器,通过设备地址这条线向外输出。如果计数器为0,那么就会查找0号设备是否提出了总线占用请求。如果设备未提出总线占用请求,那么计数器+1,继续查找。直到有一个接口响应,然后通过BS这条线进行应答,I/O接口被选中。
优点:
可以修改优先级顺序,只要修改设备地址即可
- 优先级确定非常灵活,可以事先确定,比如每一次计数器初始值都是从0开始,然后1234一直到n,此时优先级确定。但是优先级也可以从上一次结束的位置开始,此时就是循环优先级,这种条件下认为优先级是相同的,被选中机会相等。也可以软件进行设置初值等设置,可以进行更灵活的优先级确定。
区分: 除了数据线和地址线两条线以外,跟链式查询方式相比少了一个BG线,多了一个设备地址线。设备地址线的宽度应该是至少需要
⌈
log
2
n
⌉
\lceil \log_2 n \rceil
⌈log2n⌉条,
⌈
log
2
n
⌉
+
2
\lceil \log_2 n \rceil+2
⌈log2n⌉+2则是算上了BS和BR
3.独立请求方式
其实前两个都是按照顺序查找哪一个设备提出总线占用信号
每条线每个接口两条线,一个
B
R
n
BR_n
BRn 和
B
G
n
BG_n
BGn,通过
B
R
n
BR_n
BRn发送请求,然后总线控制部件会有排队器进行排队,这样可以灵活确定优先级,然后通过
B
G
n
BG_n
BGn返回响应信号。
优点:即使哪一条线出现问题不会影响其他设备
缺点:线太多了
4. 分布式控制
3.3.6.2 总线通信控制
主设备取得总线使用权后和从设备进行信息交换
- 目的:解决通信双方协调配合 问题
- 总线传输周期:主设备和从设备完成一次完整的并且可靠的一次通信所需要的时间。
这需要完成以下几个过程
申请分配阶段,经过优先级的判断,分配总线给谁使用,若只有一个主设备,主设备直接占用不需要再申请,可以没有申请分配阶段
撤销有关信息:清除传的数据、地址、命令以及申请分配阶段的一些握手信号
- 总线通信的四种方式
异步通信的时候,时钟不同随着时间的推移,相差会越来越大,采用应答方式来进行统一
半同步通信:既有统一时钟信号又有应答信号
分离式通信是在CPU不占用总线的时候,释放总线使用权让总线做别的事情
- 同步通信
同步通信,主从设备都是按照统一时标进行的,快的设备需要等待慢的设备
特点:
有定宽定距的时钟
发送方用系统时钟前沿发信号
接收方用系统时钟后沿判断、识别
应用在总线长度比较短,各个模块存取时间比较一致的情况下用同步通信
假设总线的传输周期有为4T,定宽定距的时钟,控制整个数据输出的过程——下面我们以同步的数据输入为例,
我们可以看到每一个时钟上升沿,各个信号的变化
读命令通常低电平有效
在第一个时钟上升沿,给出地址信号,这个信号是主设备给出的:
第二个时钟上升沿,读命令信号,告诉从设备读入数据
第三个周期的时钟上升沿,从设备通过数据总线给出数据信号
第四个时钟上升沿,数据信号和控制信号撤销。第四个时钟周期结束后,地址信号也撤销了
若是同步式数据输出,第一个时钟周期上升沿,给出地址信号。第一个时钟下降沿,给出数据。第二个时钟上升沿给出写命令,向从设备进行数据写入,第三个时钟的上升沿在进行写入操作。第四个时钟上升沿撤销数据,撤销写命令。第四个时钟的结束之前,地址信息也撤销掉。
- 异步通信
解决同步通信时主从设备频率不统一的情况,在规定的节拍内不能完成任务,出现错误
没有定宽顶距的时钟,增加两条线,一条线是请求线(主设备发出请求信号),一条是应答线(从设备对主设备的应答)
特点: 允许不同速度的模块和谐工作
不互锁:主设备发出通信请求,从设备接收请求后进行应答,之后主设备撤销请求信号,从设备也撤销应答信号
主设备发出通信请求后无论之后是否接到了应答信号,都会在一段时间后都会撤销请求信号
从设备不管主设备是否接收到了应答信号,都会在一段时间后都会撤销应答信号
不互锁的方式通信可靠性存在问题
半互锁:主设备发出请求,从设备接收到请求后发出应答信号,等主设备接收到了应答信号后才撤销请求信号。若接收不到的话,接收会保持。但是从设备会在一定时间后撤销响应信号。
半互锁方式可能让主设备的请求信号一直保持高电平
全互锁:主设备发出请求,从设备发出应答信号。主设备接收到应答信号后才会撤销请求信号,从设备在主设备接收到应答信号后才会撤销应答信号
如果传输过程中数据出错,半互锁和全互锁可以请求从设备重新发送或者接受数据
- 半同步通信
有同步和异步的特点,除此之外增加一条“等待信号” W A I T ‾ \overline{WAIT} WAIT
以CPU读入数据为例的半同步通信时序
当从模块比主模块慢的时候,就需要从模块发出wait信号,让主模块等等他,一次等一个时钟周期,
在下个时钟周期开始前检测wait,低电平继续等,高电平说明准备好数据了,拿就完事
但是我们注意到以上三种通信的特点,发现从模块准备数据这一阶段总线空闲。这是对总线资源的一种浪费。
因此提出第四种方法,分离式通信。
发命令和地址的时候占用的是控制总线和地址总线
从模块向主模块发数据占用数据总线
- 分离式通信
原来的从模块临时变成了主模块