前言
本文为本人自学《计算机组成原理》(唐朔飞编著/第2版)第一章内容的总结,全文描述约90%皆基于个人对书本内容的理解,对于大部分术语的概念解释并不完全照搬书本,只为梳理自我对该专业的认知(当然以后或许还会优化修改),不建议作为以考试为目的的参考资料。
计算机系统、软硬件概念
计算机系统由硬件系统和软件系统组成。
硬件:组成计算机系统的实体部分,例如CPU、存储器、键盘、鼠标、显示器等。
软件:存在于计算机系统的程序和数据,一般存放于计算机的主存和辅存中。
软件可分为系统软件和应用软件。
系统软件:用以管理计算机系统资源,控制任务执行,监视服务,目的是让计算机系统高效运作。
应用软件:用户为实现各种需求所编制的程序,如浏览器、通讯APP等。
软件需要有硬件支撑才能运行,而没有软件的硬件也相当于一件普通固体,软硬件之间相互依赖,具有同样的重要性。
计算机系统的层级
现代多层次结构的计算机系统的层级自顶向下普遍是:
应用语言虚拟机级:高级语言机器以上的层级,该层级主要是为了满足各种应用软件的设计需要,用以解释应用语言。
高级语言虚拟机级:将高级语言翻译成汇编语言,或者直接翻译成机器语言
汇编语言虚拟机级:将汇编语言翻译成机器语言
操作系统虚拟机级:用以支持将高级语言和汇编语言翻译成机器语言,同时也管理计算机系统的软硬件资源,控制作业执行,为用户提供各种服务
传统机器级:微程序会将该层级中的每一条指令翻译成一组微指令
微程序机器级:由硬件执行微指令
多层级计算机系统结构图计算机体系结构和计算机组成
计算机体系结构和计算机组成是两种不同的概念。
计算机体系结构是构成计算机系统的属性,是概念性结构和功能特性,能被对应层级的程序员所见。
计算机组成是计算机系统属性的具体组成,其包含了对程序员透明的各种软硬件细节。
例如,指令集是计算机系统的属性之一,属于计算机体系结构,而组成指令集的方式如取指令、分析指令、取操作数、运算、送结果等,则是指令集的具体组成,属于计算机组成。
计算机硬件框图
典型的冯·诺依曼计算机结构硬件框图有以下特征:
典型的冯·诺依曼计算机结构框图1.计算机系统有五大部件构成,分别是运算器、控制器、存储器、输入设备、输出设备。
2.指令和数据都保存在存储器中,具有同等地位。
3.指令和数据都用二进制数表示。
4.指令由操作码和地址码组成,操作码表示具体操作,地址码则表示了操作对象所对应存储器中的具体位置。
5.指令按顺序依次保存在存储器中,通常被按顺序执行,特定条件下,可根据运算结果或设定的条件来改变执行次序。
6.机器以运算器为中心,存储器与输入输出设备之间的数据传输需要经过运算器。
五大部件的功能如下
运算器:用以进行算术运算和逻辑运算,并将运算结果保存在运算器中。
控制器:用以控制、指挥程序和数据的输入、运算和处理结果。
存储器:用以存放程序和数据。
输入设备:将用户能识别的信息转化成机器能识别的信息。
输出设备:将机器信息转化成用户能识别的信息并输出。
由于输入输出设备和存储器之间的数据传送都需要通过运算器来完成,每次数据经过运算器,都使运算器停止运算,降低了系统工作效率,后来出现了以存储器为中心的计算机结构。
以存储器为中心的计算机结构框图而由于运算器和控制器的电路结构关联紧密,人们后来将这两个部件集成在同一芯片中,该芯片被称作中央处理器(CPU),因此,现代计算机系统硬件结构主要分为三大部分:CPU、主存、I/O设备(输入输出设备)。
其中CPU和主存合起来被称为主机。
现代计算机组成框图计算机工作步骤
计算机系统处理工作分为两大步,第一步是上机前准备,第二步是上机运行。
上机前准备分为建立数学模型、确定计算方法、编写解题程序三步。
建立数学模型:将要处理的工作建立成一个可行的数学模型。
确定计算方法:将数学模型中的运算方程简化为计算机能执行的四则运算(加、减、乘、除)方程。
编写解题程序:对应四则运算方程来分步编写能让机器执行的指令。
完成上机前的准备后,就能进行上机运行操作。
计算机各部件概述
主存储器:
主存储器简要结构框图主存储器又称主存,由存储体、各种逻辑部件和控制电路组成。
存储体内有多个存储单元,每个存储单元由多个存储基元(或称存储元件、存储元)组成,一个存储基元可以包含一位二进制数。
一个存储单元包含一个存储字,一个存储字由一串二进制代码组成,其存储字长就是二进制代码的位数,通常有8位、16位、32位等。
(可以这么粗略理解:1个存储体 = 多个存储单元;1个存储单元 = 1个存储字 = N个存储基元 = N个二进制代码,其存储字长为N位。)
存储体中的每个存储单元都配有相应的地址号,主存的工作方式是 根据这些地址号对相应存储单元的二进制位进行写入或读出,从而实现存取操作,这种根据地址来访问存储数据的方式称为按地址访问存储器,简称为访存。
(早期计算机的机器指令字长和数据字长往往要与存储字长相等,执行一次访存就能完成一个指令或数据的存取操作,随着计算机的广泛应用以及解题精度的提高,指令字长和数据字长往往被要求是可变的,因而它们的字长不再以存储字长为主,而是以字节(Byte)为单位,8位称作1字节,而字长必须是字节的整倍数,例如可以是1字节、4字节等。)
为了实现访存,主存内还配备了两个寄存器,分别是MAR和MDR。
MAR(Memory Address Register,存储地址寄存器)用以寄存将要访问的存储单元的地址号,系统进行访存时,会根据MAR内寄存的地址号来找到存储体中对应地址的存储单元。
MAR位数是对应存储体内的存储单元个数的,它的位数必须要概括存储体内所有存储单元的地址号,假设存储体大小有1K,即拥有1024个(2¹⁰个)存储单元,那么对应的MAR的位数就是10位,它概括了编号为 00 0000 0000 ~ 11 1111 1111 共计1024个地址号。
同理,若知道MAR的位数,可以算出它对应的存储体的大小。
MDR(Memory Data Register,存储数据寄存器)用以取出对应地址的存储单元内的数据,或存放要保存在相应地址的存储单元内的数据。
MDR位数是存储单元的存储字长。假设一个存储体内每个存储单元的字长为8位,而对应MDR是用来寄存某个存储单元的,那么MDR的位数自然也是存储体内存储单元的位数,也是8位。
(由于要完成完整的存取操作仅凭主存是不行的,还得依赖CPU,而随着超大规模集成电路的发展,现代计算机往往是将MAR和MDR集成到了CPU中,而非主存里。)
运算器:
运算器简要结构框图
上图中的运算器包含了3种寄存器(ACC、MQ、X)和一个算术逻辑单元(ALU)。
ACC(Accumulator)为累加寄存器,用以存放被加数及和、被减数及差、积高位、被除数及余数。
MQ(Multiplier-Quotient Register)为乘商寄存器,用以存放乘数及积低位、商。
X为操作数寄存器,用以存放加数、减数、被乘数、除数。
ALU(Arithmetic Logic Unit)为算术逻辑单元,用以处理算术逻辑运算,是CPU的核心部件之一。
各寄存器所存放的操作数表假设ACC中已经留有上一次运算的结果数据,那么:
进行加法操作的步骤为:
1.将从存储体取出的数据(加数)放进X寄存器中。
2.ACC中的数据(被加数) + X寄存器中的数据(加数)。
3.将得出的结果(和)保存在ACC中。
进行减法操作的步骤为:
1.将从存储体取出的数据(减数)放进X寄存器中。
2.ACC中的数据(被减数) - X寄存器中的数据(减数)。
3.将得出的结果(差)保存在ACC中。
进行乘法操作的步骤为:
1.将从存储体取出的数据(乘数)放进MQ寄存器中。
2.将ACC中的数据(被乘数)放进X寄存器中。
3.将ACC归0。
4.X寄存器的数据 MQ寄存器中的数据。
5.将得出的结果(乘积)的低位保留在MQ寄存器中,高位则保存在ACC寄存器中。
进行除法操作的步骤为:
1.将从存储体取出的数据(除数)放进X寄存器中。
2.ACC中的数据(被除数) X寄存器中的数据(减数)。
3.将得出的结果(商)暂存在MQ中,余数保存在ACC中。
4.可以将商保存在ACC中。
(不同的机器运算器结构并不相同,有的机器用MDR来替代X寄存器。)
控制器:
控制器简要结构框图控制器相当于计算机系统的神经中枢,负责控制计算机各部件自动、协调的运作。
控制器的工作方式分三步,分别是取指令、分析指令以及执行指令。
它由CU、PC和IR组成。
CU(Control Unit)即控制单元,用以解释指令,向各部件发送操作命令以执行指令。
PC(Program Counter)即程序计数器,存放将要访问的指令地址,与MAR有直接通道,每次指令执行完毕后会自动对本身所存地址值进行+1操作,来达到依次访问指令地址的功能,直至机器停止作业为止。
IR(Instruction Register)即指令寄存器,用以接收MDR传送过来的指令(取指令),也用以将指令的操作码交由CU分析(分析指令,记作OP(IR)→CU),以及将指令的地址码交由MAR(记作Ad(IR)→MAR),来取得存储体内对应数据。
I/O:
I/O子系统包含各种I/O设备(Input-Ouput Equipment,输入输出设备)和接口,I/O设备通过接口与主机相连,接收主机发出的控制命令来完成相应作业。
计算机的硬件性能指标
计算机的硬件性能指标主要体现在三个要素:机器字长、存储容量以及运算速度。
机器字长
机器字长是CPU一次操作能处理的数据的位数,通常跟CPU内的寄存器有关。
机器字长的大小,决定了CPU执行指令的效率,假设CPU要做一次取指操作,若机器字长比存储单元字长短,则需要访存两次或以上才能完成。
存储容量
存储容量包括主存容量和辅存容量。
主存容量指存储器内存储体所能容纳的存储基元的量,可由公式“存储容量 = 存储单元 存储字长”求得。
辅存容量以字节为单位,1G = 1024 M = 1024 1024 K = 1024 1024 1024 Byte。
运算速度
运算速度的大小跟许多因素有关,诸如机器主频、执行的指令类型、主存取指取数的速度等。
早期的运算速度采取普通法,以机器执行一次加法或乘法所需时间来衡量。
后来采取了吉普森(Gibson)法,综合了每条指令所花时间及占总指令数的百分比来衡量,其公式为:
=
其中是运算速度,是第i条指令所占总指令数的百分比,是执行第i条指令所花时间。
如今常用来衡量运算速度的有三种单位,分别是MIPS、CPI、FLOPS。
MIPS(Million Instruction Per Second)即百万条指令每秒,以在一秒内执行的指令条数来衡量。
CPI(Cycle Per Instruction)即每条指令所需时钟周期(机器主频的倒数)数。
FLOPS(Floating Point Operation Per Second)即每秒内所作的浮点运算次数。
其他
指令示意图
假设指令字长为16位,其中6位为操作码,其值为“000110”,10位为地址码,其值为“0001100001”,其示意图如下:
指令示例图细化的计算机硬件框图
细化的计算机硬件框图执行将某个数据从存储体中取出来并放置ACC中的任务过程简图
将某个数据从存储体中取出来并放置ACC中1.机器启动,控制器将PC中的指令所在地址传送至存储器的MAR中。
2.CU命令存储器执行读操作,通过MAR中的指令所在地址找到存储体M中对应指令。
3.存储体在控制器的命令下将指令传送至MDR中,完成读操作。
4.MDR将指令送至IR,至此完成取指令操作。
5.IR将指令中的操作码交由CU,CU对指令的操作码进行分析,至此完成分析指令操作。
6.CU将IR中的指令地址码送往MAR。
7.CU再次命令存储器执行读操作,通过MAR中的指令地址码找到存储体M中对应数据。
8.存储体在控制器的命令下将数据传送至MDR中,完成读操作。
9.CU将MDR中的数据传送至ACC,至此指令执行完成,PC自动将内容中的值进行+1操作。
网友评论