1 计算机的硬件组成
1.1 计算机硬件
计算机的硬件系统是指组成一个计算机的实实在在的器件。计算机硬件一般由五部分组成:运算器、控制器、存储器、输入设备、输出设备。
1.2 计算机结构-冯洛伊曼结构
1 计算机是由运算器、控制器、存储器、输入设备、输出设备组成
2 采用2进制形式表示表示数据和指令。冯洛伊曼结构的计算机中,指令与数据均以二进制代码的形式同时存于存储器中,两者在存储器中的地位相同,并可按地址寻访。
3 采用存储程序的方式,这时冯洛伊曼思想的核心。存储程序是指在用计算机解题之前,事先编制好程序,并连同所需要的数据一同存储在主存储器中
1.3 硬件和软件的关系
计算机系统中硬件和软件是紧密相连,缺一不可的。但是对于某一个具体功能来说,既可以用硬件实现,也可以用软件实现,这就是硬件和软件在逻辑功能上的等效。也就是说任何由软件实现的操作,在原理上都可以由硬件来实现;任何由硬件实现的操作,在原理上都可以由软件模拟来实现。因此在设计一个计算机系统的时候,必须根据实际条件确定哪些由硬件实现,哪些由软件实现。
1.4 计算机系统的层次
1.5 计算机硬件系统的组织-总线
前面讲过,计算机系统由五大部件组成,那么把五大部件互联起来就是硬件系统的组织问题。我们用总线把他们组织在一起。
CPU内部总线:用来连接CPU内部各寄存器和算术逻辑部件的总线
部件内部总线:属于芯片间的总线
系统总线:连接系统中各大部件如CPU、主存、I/O设备的总线。系统总线包括地址线、数据线、控制/状态信号线。
外总线:各个计算机之前的连线。
1.5.1 单总线结构
通过一组系统总线把CPU、主存、I/O接口连接起来。
这种总线结构,主存和I/O接口都连接在总线上,所以可以将I/O设备的寄存器和主存统一编址,统称为总线地址。这样CPU可以用通用的传送指令,像访问内存一样访问I/O设备的寄存器,因此比较简单。
1.5.2 双总线结构
这种总线结构保持了单总线结构的优点。同时由于多了存储总线,因此提高了CPU访问存储器和I/O接口寄存器的速度。
2 运算器
2.1 定点运算器
运算器的核心是算术逻辑单元(ALU),但是,作为一个完整的数据加工处理部件,运算器中还需要有个各类通用寄存器、缓冲寄存器、总线等逻辑部件。
2.1.1 单总线结构
所有部件都接在同一个总线上。由于所有部件都连接在同一个总线上传送数据,因此在同一时间,只能有一个操作数放到单总线上,所以需要两个缓冲器A,B。当执行双操作数运算时,首先在机器时钟的控制下,把一个操作数送入缓冲器A,然后把另一个操作数送入缓冲器B,只有两个操作数同时出现在ALU的输入端时,ALU才能正确执行相应的运算。运算结束后再通过单总线将运算结果存入目的寄存器。
2.1.2 双总线结构
操作部件连接在两个总线上,可以同时通过两组总线传输数据。在执行双操作数运算时,可以将两个操作数同时加到ALU的输入端进行运算,一步完成操作并得到结果。但是由于在输出运算结果时,两条总线都被输入的操作数占用着,运算结果不能直接加到数据总线上,需要输出缓冲器来暂存运算结果。等到下一个机器周期,再将缓冲器中的运算结果通过总线送入目的寄存器。
2.1.3 三总线结构
三总线结构的特点是操作部件连接在三组总线上,可以同时通过三组总线传输数据,在执行双操作数运算时,由于能够利用三组总线分别接受两个操作数和ALU的运算结果,因此只需要一步就可以完成一次运算。
3 存储器
存储器工作原理和组成详细信息可查看https://www.cnblogs.com/zhenjingcool/p/17455166.html
3.1 主存储器的组成和操作
存储体由大量的存储单元组成,为了区分各个存储单元,我们把它们进行统一编号,称为内存地址。
地址寄存器用于存放所要访问的存储单元的地址。要对某一单元进行存取操作,首先应该通过地址总线将被访问单元的地址存放到地址寄存器中。
地址译码器的作用是把地址寄存器中的地址进行译码(比如3-8译码器),通过对应的地址选择线到存储阵列中找到所要访问的存储单元,并驱动其完成指定的存取操作。通过译码器,输入的是三位二进制地址,输出的是8线的高低电平,这8条线和存储阵列相连。
读写电路和数据寄存器的作用是,根据CPU的读写命令,把数据寄存器的内容写入被访问的存储单元;或者从被访问的存储单元读出信息送入数据寄存器中,以供CPU或I/O系统使用
地址译码器和存储阵列中间有一层是驱动电路,驱动电路的作用是完成数据的读写。每一个译码器输出端都需要有一个驱动电路。
时序电路用于接收来自CPU的读写控制信号,产生存储器操作所需要的各种时序控制信号,控制存储器完成指定的操作。
当CPU要从存储器读一个信息字时,CPU首先把被访问单元的地址送到地址寄存器MAR,同时发出读信号,存储器接到读命令,根据地址从被选单元中读出信息,并经数据总线送入存储器数据寄存器MDR中。
当CPU要存一个字到主存时,CPU把存入的存储单元的地址经MAR送入主存,并把要存储的信息送入MDR,此时发出写信号,在此命令的控制下经数据总线把MDR中的内容写入主存。
3.2 字片式半导体存储芯片
字片式是指,一个存储单位是一个字节(8位)。位片式是指,一个存储单位是一位。
图中每一个小方块表示一个存储单元。存储单元可以是DRAM也可以是SRAM。
以64字X 8位为例说明。
地址线6位,译码器输入有6个管脚,输出有64个管脚。当CPU把地址送入地址寄存器后,经过译码器译码,译码器的64个输出管脚和存储阵列的64个横线相连。
这种字片式存储芯片,有多少个译码输出端就有多少个译码驱动电路。所以译码驱动电路较多。
3.3 位片式半导体存储芯片
位片式和字片式有所不同,它有两个译码器。6位行地址和6位列地址分别对应一个译码器。当我们要访问某一个地址时,分别经过行列地址译码器后其行列相交的存储单元就是我们要找的存储单元。
这种译码方式,只需要64x2=128个译码驱动电路就可以,而同等大小的字片式则需要4096个译码驱动电路。
3.4 半导体存储器的组成
一般内存都是由DRAM组成,因为DRAM基本存储单元由一个MOS管和小电容组成,集成度可以比较大,而且造价较SRAM低。
我们所购买的内存条一般由多个存储芯片组成
我们可以把存储芯片通过位扩展和字扩展把多个存储芯片组成一个内存条。
3.4.1 位扩展
例如我们使用两个1K*4位的芯片组成1K*8位的存储器。
3.4.2 字扩展
例如我们用16K*8位的芯片组成64K*8位的芯片
3.4.3 同时扩展
用1K*4位芯片扩展为4K*8位存储器
4 硬盘
4.1 辅助存储器
辅助存储器分为磁表面存储器和光存储器两类。如磁盘和光盘。
4.1.1 磁表面存储器
磁表面存储器存储信息的原理:利用磁性材料在不同方向的磁场作用下具有两个稳定的剩磁状态来记录信息。把磁性材料均匀涂覆在载体的表面,形成记录信息的载体。
4.2 硬盘结构
把磁头、盘片、磁头定位机构和读写电路密封在一个盘盒中,构成一个密封的组合体,这种结构使得硬盘防尘性好、可靠性高。
盘片由铝合金圆盘载体两面涂敷磁胶制成,厚度1~2mm,片间距10~20mm,由同心轴带动旋转。
磁道:许多半径不同的同心圆就是磁道
扇区:将盘面划分为若干个扇区
扇段:每条磁道在扇区中的部分叫做扇段。扇段是磁盘信息的基本单位,每个磁道上扇区的个数是一样的。由于各条磁道半径不同,所以各条磁道的存储密度不同。
扇段的定位:柱面和盘面的定位比较方便,扇段的定位则比较复杂。一般的,可以使用设置盘片缺口或孔,通过光敏元件,使盘片每转动一圈产生一个索引脉冲来定位第0扇区,其后每隔一段时间定位一个扇区。
磁盘信息访问的基本单位是扇段,扇段的信息记录格式如下所示
由磁盘控制器产生的扇标脉冲标志着一个扇区的开始。每个扇区由头部空白、续标、数据、校验字和尾部空白组成。
5 高速缓存
现在计算机使用的内存一般是由DRAM芯片组成,由于DRAM是由1个MOS和小电容组成,其特点是功耗和成本较低,但是速度相对较慢。
为解决CPU和内存之间的速度不匹配的问题,我们依据局部性原理,在CPU和DRAM中间加一层高速缓存。高速缓存我们使用SRAM组成,由于SRAM的基本存储单元是触发器,它至少要6个MOS管组成,所以其功耗高、造价高,但是其速度快。
6 机器指令
机器指令是计算机硬件唯一能够直接理解并执行的命令。机器指令的总和称为指令集。不同的计算机具有不同的指令集。
由机器指令编写的代码称为机器代码,存储于内存中,供CPU取指执行。
高级语言代码都需要编译成机器代码。
机器指令和微指令区别:机器指令是软件,微指令是硬件。机器指令存储于内存供CPU取指执行,微指令存储于CPU内部。1条机器指令的执行可能对应多条微指令的执行。有关微指令的详细介绍在后续部分。
6.1 机器指令的格式
机器指令是一串二进制数字,包含了操作码+地址码。操作码指明是哪种操作。地址码既可以是操作数的地址也可以是操作数本身。比如
10110100 01011101 11010001
上述机器指令前8位是操作码,表示累加,后两位是两个操作数
6.2 指令的寻址方式
寻址方式指的是形成本条指令的操作数地址和下一条要执行的指令地址的方法。
6.2.1 顺序方式
现在计算机均利用程序计数器PC跟踪程序的执行并指示将要执行得到指令地址。当程序启动运行时,通常由系统程序直接给出程序的起始地址并送入PC。
顺序方式就是采用PC增量的方式形成下一条指令地址。因为程序中的指令在内存中通常是顺序存放的,所以当程序顺序执行时,将PC的内容按一定的规则增量,即可形成下一条指令地址。
6.2.2 跳跃方式
当程序发生转移时,根据指令的转移目标地址修改PC的内容。
6.3 操作数的寻址方式
操作数可能在主存中,也有可能在寄存器中,还有的操作数就是原始数据,因此操作数的寻址比较复杂。后续如有需要再补充
7 控制系统
计算机运行程序的过程,实质上就是由控制器根据程序所要求的指令序列,执行一条条指令的过程。
7.1 指令执行的步骤
取指令
分析指令
执行指令
7.2 控制器组成
7.2.1 指令部件
7.2.1.1 程序计数器PC
保证程序按规定的序列正确运行,并提供下一条指令的地址。
7.2.1.2 指令寄存器IR
存放当前正在执行的执行。
7.2.1.3 指令译码器ID
对指令寄存器中的指令操作码进行译码分析,产生相应操作的控制点位,提供给微操作控制信号形成部件。
7.2.2 时序控制部件
一条指令的执行过程可以分解为若干简单的基本操作,称之为微操作。这些微操作是具有严格的时间顺序要求的,不可随意颠倒。时序控制部件就是用来产生一系列时序信号,保证微操作的执行顺序。
7.2.2.1 时序信号发生器
7.2.3 微操作控制信号形成部件
不同的指令完成不同的功能,需要不同的微操作控制信号序列。每条指令都有自己对应的微操作序列。控制器必须根据不同的指令,在不同的时间,产生并发出不同的微操作控制信号,控制有关部件协调工作,完成指令所规定的任务。
微操作控制信号形成部件的功能是根据指令部件提供的操作控制电位、时序部件所提供的各种时序信号,以及有关的状态条件,产生机器所需的各种微操作控制信号。
7.2.4 中断控制逻辑
用来实现异常情况和特殊请求的处理
7.2.5 程序状态字PSW
PSW表明了系统的基本状态,是控制程序执行的重要依据。
比如8086微处理器的PSW格式如下:
CF:进位标志,OF:溢出标志,AF:辅助进位,中断允许:IF,陷阱:TF
7.3 控制器的组成方式
根据产生微操作控制信号的方式不同,控制器可分为组合逻辑型、存储逻辑型、二者结合型。
7.3.1 组合逻辑型
采用组合逻辑电路实现,其微操作信号发生器是由门电路组成复杂的树状网络结构。其优点是速度快,缺点是设计调试维修困难,难以实现设计自动化。目前只有一些巨型机为追求高速度仍然采用。
7.3.2 存储逻辑型
这种控制器采用存储逻辑实现,也就是说把微操作信号代码化,使每条机器指令转化成为一段微程序,存入控制存储器中。
它具有设计规整,调试维修以及更改扩充指令方便的特点,但是速度比组合逻辑型要慢一点。
7.2.3 结合型
7.4 时序系统
机器周期和指令周期
机器周期也叫CPU周期,一条指令的执行过程由若干个机器周期组成
指令周期是指一个指令的执行周期,包括取指、分析指令、执行指令的全过程。
7.5 寄存器
CPU由运算器、控制器和寄存器组成
前面已经介绍了运算器和控制系统,现在介绍寄存器
寄存器由触发器组成,一个触发器能够存储一位二进制信息。一个8位得到寄存器由8个触发器组成。
7.6 控制器的设计
控制器的设计就是设计数据通路(比如采用总线结构),指令格式,时序系统、采用组合逻辑实现还是存储逻辑实现等问题。
7.6.1 数据通路
数据通路就是设计控制器采用什么方式来连接各个部件。分为内部总线和系统总线
内部总线为CPU内部各个部件之前的连接方式
系统总线为CPU和存储器、IO设备的连线。
7.6.2 指令系统
7.6.2.1 指令格式
比如我们设计的指令格式如上图所示,由操作码+源操作数+目的操作数组成
其中,操作数由寻址方式和操作数数字组成
7.6.2.2 然后,我们设计操作码
7.6.2.3 然后我们设计寻址方式
000 直接寻址
001 间接寻址
其他寻址省略…
7.6.3 时序系统
时序系统,可以采用同步时序或异步时序。这里我们采用同步控制方式。
7.6.3.1 节拍发生器
由两个T触发器和一些门电路构成。输出是T0,T1,T2,T3。
7.6.3.2 周期状态触发器
T0,T1,T2,T3分别接在4个周期状态触发器的输入端,控制4个触发器,比如,当取指触发器值1,则进行取指操作。
这样,在一个机器周期内,在节拍的控制下,进行规律性的取指+取源+取目的+执行。完成一次机器指令操作。
7.6.4 组合逻辑和存储逻辑
组合逻辑采用大量的门电路实现控制逻辑,电路复杂,设计困难,修改困难,电路不规整。
存储逻辑,采用具有存储特性的锁存器或者触发器,将一些基本操作代码化,存储在CPU的控制存储器中,比如00110101代表一个特定的微操作。这样设计的控制器规整,易于维护,易于设计。存储逻辑设计方式也称为微程序设计
7.6.5 微程序
微程序设计的实质是用程序设计的思想方法来组织操作控制逻辑,用规整得到存储逻辑代替繁杂的组合逻辑。
微程序就是把各条指令的微操作序列以二进制编码的形式编制成程序,存储于CPU的控制存储器中。
执行指令时,通过读取并执行相应的微程序实现一条指令的功能。执行指令时,通过依次读取一条条微程序,产生一组组操作控制信号,控制有关部件完成一组组微操作。
对于机器语言程序员,编写的是机器指令,机器指令存储于主存储器中;对于硬件设计工程师,编写的是微程序,微程序存储于CPU的控制存储器中。