一、计算机系统概述 1.1 计算机发展历程
#1:e:4:8:9:b:9:d:b:d:0:7:1:6:6:d:d:1:0:d:a:0:e:3:8:1:a:1:2:9:a:7#
1.1.1 什么是计算机系统
软件分为系统软件和应用软件。
应用软件:按任务须要编制成的各类程序,如B站,王者荣耀,迅雷。
软件和硬件在逻辑上是等效的,但不是等价的。
1.1.2 硬件的发展
#a:e:6:a:a:0:c:9:b:1:e:b:1:d:b:4:c:a:c:8:4:4:a:0:4:c:c:3:f:b:d:a#
#3:3:5:3:d:5:1:1:4:a:8:1:7:4:7:a:e:c:4:7:8:b:c:2:0:3:9:e:f:2:9:5#
1.1.3 发展趋势 1.2 计算机系统层次结构 1.2.1 计算机硬件的基本组成
#c:f:0:5:7:9:2:7:c:8:8:b:3:6:0:3:8:0:b:2:c:7:9:3:7:1:0:1:a:f:8:f#
1.2.1.1 冯·诺依曼结构 1.2.1.1.1 早期冯·诺依曼机
#b:2:8:f:9:6:f:3:5:a:1:9:a:9:2:0:1:3:0:a:3:9:c:0:5:f:b:b:6:9:0:f#
冯·诺依曼机特性:
早期的冯·诺依曼机以运算器为中心,且是单处理机。
冯·诺依曼机的最根本特点是采用”存储程序“原理,基本工作方式是控制流驱动程序。
冯·诺依曼结构计算机程序的功能都通过中央处理器(运算器和控制器)执行指令实现。
1.2.1.2 现代计算机的组织结构
在微处理器问世之前,运算器和控制器分离,而且存储器容量很小,因此设计成以运算器为中心的结构其他部件通过运算器完成数据的传递。现代计算机以存储器为中心。
1.2.1.2.1现代计算机的组织结构
#a:c:3:9:b:a:a:5:5:9:f:a:c:5:0:d:1:3:1:0:f:0:a:0:d:9:8:3:f:d:8:b#
#9:a:0:4:c:1:8:f:e:4:4:5:2:1:d:e:b:1:0:a:6:0:6:b:5:7:8:e:b:9:c:6#
目前绝大多数计算机仍依循冯·诺依曼的储存程序的设计思想。
1.2.2 计算机的功能部件
#e:7:1:b:e:f:6:4:2:9:e:8:e:f:e:a:6:1:f:2:e:9:f:f:1:b:e:2:1:a:7:3#
1.2.2.1 输入/输出设备(I/O设备) 1.2.2.2 存储器
存储器是计算机的储存部件,用来储存程序和数据。
存储器分为**主存储器(**寻址)和辅助存储器(辅存),CPU能直接访问的存储器是主存储器。辅助存储器中的信息必须调入主存储器后才会为CPU访问。
主存储器的工作方式是按储存单元的地址进行存取,即按地址存取。(相联存储器既可以按地址轮询又可以按内容轮询,又称按内容轮询的存储器)。
主存储器由许多储存单元组成,每个存储单元包含若干存储元件,每个存储元件可以储存一位二进制代码。将每位存储单元储存的一串二进制代码称为储存字(word),将储存字的位数成为储存字长,存储字长是1B(8bit)的偶数倍。
#8:e:b:5:2:2:7:4:1:f:c:e:f:c:f:5:d:b:e:c:0:f:7:5:f:d:2:8:d:9:6:8#
存储体储存二进制信息。
地址存储器(MAR)存放访存地址,经过地址混频后找到所选的储存单元。
数据存储器(MDR)用于暂存要从存储器中读或写的信息。
虽然MAR和MDR是存储器的一部分,但在现代CPU中却是存在于CPU中的,另外高速缓存(Cache)也存在于CPU中。
地址译码器是寻址的构成部份,不属于CPU。
另,1个字节(Byte)= 8bit,1B=1个字节,1b=1bit。
1.2.2.3 运算器
运算器是计算机的执行部件,用于进行算术运算(如加、减、乘、除)和逻辑运算(如与、或、非)。
#6:f:5:8:9:7:b:2:6:1:d:b:7:6:e:d:b:c:6:1:f:4:c:e:d:9:1:3:5:e:0:8#
运算器的核心是算术逻辑单元(ALU),运算器包含若干通用寄存器,用于暂存操作数和中间结果。如累加器(ACC),乘商寄存器(MQ),操作数寄存器(X),变址寄存器(IX),**基址寄存器(BR)**等,其中前三个寄存器是必须具备的。
运算器中还有程序状态寄存器(PSW),也称标志寄存器,用来储存ALU运算中得到的一些标志信息或处理机的状态信息。
#0:6:6:1:a:f:f:a:9:9:e:4:7:2:9:3:f:2:7:8:b:4:f:3:0:8:0:6:f:c:8:c#
1.2.2.4 控制器
控制器是计算机的指挥中心。控制器由程序计数器(PC),**指令寄存器(IR)和控制单元(CU)**组成。
PC拿来储存当前欲执行指令的地址,可以手动加1以产生下一条指令的地址,他与寻址的MAR有一条直接通路。在CPU中,PC拿来跟踪下一条要执行的指令在主存储器中的地址。
IR拿来储存当前的指令,其内容来自寻址的MDR。指令中的操作码OP(IR)送至CU,用以剖析指令并发出各类微操作命令序列;而地址码Ad(IR)送往MAR,用以取操作数。
#a:c:1:2:9:b:2:f:2:6:2:f:6:d:c:7:0:d:1:4:5:7:6:e:1:7:4:8:3:f:a:8#
完成一条指令须要三个步骤,即取指令,分析指令和执行指令。
#4:a:6:e:4:5:d:5:7:4:2:2:1:d:b:6:2:d:8:2:b:4:0:4:b:e:1:b:c:0:f:2#
一般将运算器和控制器集成到同一个芯片上,称为中央处理器(CPU),CPU和主存储器共同构成主机,除主机外的其他硬件装置也称为外部设备,简称外设。
下图所示为冯·诺依曼结构的模型机。CPU包含ALU、通用寄存器组GPRs、标志寄存器、控制器、指令寄存器R、程序计数器PC、存储器地址寄存器MAR和存储器数据寄存器MDR。图中从控制器送出的实线就是控制讯号,可以控制怎么更改PC 以得到下一条指令的地址,可以控制ALU执行哪些运算,可以控制寻址是进行读操作还是写操作(读/写控制讯号)。
#d:4:3:2:5:9:d:3:4:f:d:8:7:1:2:f:0:4:b:a:a:7:a:f:5:d:0:c:5:b:8:b#
CPU和寻址之间通过一组总线相连==,总线中有地址、控制和数据3组讯号线。==MAR中的地址信息会直接送到地址线上,用于指向读/写操作的寻址储存单元;控制线中有读/写信号线,指出数据是从CPU 写入寻址还是从寻址读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中。
1.2.3 计算机的工作过程
#3:7:3:1:9:b:c:b:1:1:7:0:f:7:2:b:4:5:5:e:6:f:3:4:0:4:c:b:0:f:2:c#
#6:4:f:7:2:f:7:4:2:b:1:9:f:5:4:e:e:c:e:d:d:b:d:1:4:a:4:6:1:9:7:2#
#2:c:b:5:1:5:0:1:c:1:8:b:8:9:d:7:6:b:b:b:9:a:b:0:c:e:2:a:f:4:9:b#
#6:7:5:2:7:3:8:a:b:0:a:1:0:0:1:c:4:5:d:7:1:c:6:4:8:4:3:1:1:7:6:1#
#e:c:5:2:6:e:4:4:8:3:c:1:9:e:b:f:4:b:d:e:c:9:7:d:3:2:f:5:0:7:8:1#
#0:8:e:7:d:a:9:2:6:a:0:b:2:9:d:f:3:3:4:2:3:8:5:b:a:9:2:7:6:1:6:1#
#0:a:d:4:6:e:a:2:e:3:e:2:8:e:8:7:d:a:b:5:c:e:0:3:f:e:7:1:c:c:7:e#
虽然指令和数据都以二进制方式储存在存储器中,但**CPU可以按照指令周期的不同阶段来分辨是指令还是数据,通常在取指阶段取出的是指令,在执行阶段取出的是数据。**须要清楚的是,CPU只有在确定取出的是指令后,才会将其操作码送去解调,因此不可能根据解调的结果来分辨指令和数据。
汇编程序员可以通过指定待执行指令的地址来设置PC的值,状态寄存器、通用寄存器只有为汇编程序员可见,才能实现编程,而IR、MAR、MDR是CPU的内部工作寄存器,对程序员均不可见。
1.2.4 计算机软件的分类 1.2.4.1 系统软件和应用软件
系统软件:是一组保证计算机高效、正确运行的基础软件,通常作为系统资源提供给用户使用。主要有操作系统、数据库管理系统(DBMS)、分布式软件系统、网络软件系统、语言处理程序、标准库程序、服务性程序等。
应用软件:是指用户为解决某个应用领域中的各种问题而编制的程序,如各类科学估算程序、工程设计类程序、数据统计与处理程序等。
数据库管理系统并不等于数据库系统,数据库系统是指在计算机系统中引入数据库后的系统,一般有数据库、数据库管理系统、应用系统、数据库管理员构成。数据库系统并不是系统软件。
1.2.4.2 计算机系统的多级层次结构
#2:c:7:3:c:b:b:f:a:a:b:a:5:9:e:6:9:0:a:9:b:9:0:b:3:a:9:8:0:5:3:d#
下层是下层的基础,上层是上层的扩充。
1.2.4.3 三种级别的语言
硬件能直接执行的语言只能是机器语言(二进制编码),硬件描述语言程序是电子系统硬件行为描述、结构描述、数据流描述的语言,并不能被直接执行。
寄存器对汇编语言不透明,汇编程序员要对寄存器进行直接操作。
#4:b:7:3:5:4:a:6:4:a:a:a:9:a:9:b:4:b:4:6:f:9:d:9:0:5:a:4:4:c:a:f#
高级语言翻译成机器语言程序有两种形式,一种是编译成汇编语言,再将汇编语言汇编为机器语言,或者直接编译为机器语言,以C语言为例,翻译过后会产生一个可执行文件,之后再执行时则不需要再度翻译。另一种方法是解释程序,这种方法会将源程序的句子逐字翻译为机器语言执行,每次执行都要翻译。
翻译程序是指把高级语言源程序转换成机器语言程序(目标代码)的软件。翻译程序有两种:一种是编译程序,它将中级语言源程序一次全部翻译成目标程序,每次执行程序时,只需执行目标程序,因此只要源程序不变,就无须重新编译。另一种是解释程序,它将源程序的一条句子翻译成对应的机器目标代码,并立刻执行,然后翻译下一条源程序句子并执行,直至所有源程序词句全部被翻译并执行完。所以解释程序的执行过程是翻译一句执行一句,并且不会生成目标程序。汇编程序也是一种语言翻译程序,它把汇编语言源程序翻译为机器语言程序。汇编语言是一种面向机器的低级语言,是机器语言的符号表示,与机器语言一一对应。
1.3 计算机的性能指标 1.3.1 计算机的主要性能指标
#e:c:6:b:c:4:7:6:f:d:5:5:3:9:e:7:5:6:5:b:e:7:3:f:7:f:a:7:c:2:b:3#
1.3.1.1 机器字长
机器字长是指计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,通常与CPU 的寄存器位数、加法器有关。因此,**机器字长通常等于内部寄存器的大小,字长越长,数的表示范围越大,计算精度越高。**计算机字长一般选取为字节(8位)的整数倍。
计算机的位数,即机器字长,也就是计算机一次能处理的二进制数的厚度。要注意的是,操作系统的位数是操作系统可轮询的位数,它与机器字长不同。一般情况下可通过寄存器的位数来判定机器字长。
机器字长是指CPU内部用于整数运算的数据通路的间距。机器字长是指CPU内部用于整数运算的数据通路的间距。CPU内部数据通路是指CPU内部的数据流经的路径及路径上的部件,主要是CPU内部进行数据运算、存储和传送的部件,这些部件的长度基本上要一致能够互相匹配。因此,机器字长等于CPU内部用于整数运算的运算器位数和通用寄存器间距。,主要是CPU内部进行数据运算、存储和传送的部件,这些部件的长度基本上要一致能够互相匹配。因此,机器字长等于CPU内部用于整数运算的运算器位数和通用寄存器间距。
1.3.1.2 数据通路带宽
**数据通路带宽是指数据总线一次所能并行传送信息的位数
**。**这儿所说的数据通路长度是指外部数据总线的长度,它与CPU内部的数据总线长度(内部寄存器的大小)有可能不同。
各个子系统通过数据总线联接产生的数据传送路径称为数据通路。
1.3.1.3 主存容量
主存容量是指主存储器所能储存信息的最大容量,通常以字节来评判,也可用字数×字长(如512K×16位)来表示储存容量。其中,MAR的位数反映储存单元的个数,MAR的位数反映可轮询范围的最大值(而不一定是实际存储器的存储容量)。
例如,MAR为16位,表示2162^{16}216= 65536,即此储存体内有65536个存储单元(可称为64K显存,1K= 1024),若MDR为32位,表示储存容量为64K×32位。
1.3.1.4 运算速率 1.3.1.4.1 吞吐量和响应时间
主频、主存容量和指令系统(间接影响CPI)并不是综合性能的彰显。吞吐率指系统在单位时间内处理恳求的数目,是评价计算机系统性能的综合参数。
1.3.1.4.2 主频和CPU时钟周期
CPU时钟周期=1/主频,主频一般以Hz(赫兹)为单位,1Hz表示每秒1次。
提高CPU主频、扩大寻址容量对性能的提高是有限度的。采用并行技术是实现高性能估算的重要途径,现今超级计算机均采用多处理器来提高并行处理能力。
1.3.1.4.3 CPI(Clock Per Instruction) 1.3.1.4.4 CPU执行时间
**外频、CPI和指令条数是互相掣肘的。**诸如,更改指令集可以降低程序所含指令的条数,但同时可能导致CPU结构的调整,从而可能会降低时钟周期的长度(降低显存)。
CPI是执行一条指令所需的时钟周期数,系统结构、指令集、计算机组织就会影响CPI,而时钟频度并不会影响CPI,但可推动指令的执行速率。例如,执行一条指令须要10个时钟周期,则一台位宽为1GHz的CPU,执行这条指令要比一台位宽为100MHz的CPU快。
1.3.1.4.5 MIPS(Million Instructions Per Second) 1.3.1.4.6 MFLOPS、GFLOPS、TFLOPS、PFLOPS、EFLOPS和ZFLOPS
注:在描述存储容量、文件大小等时,K、M、G、T一般用2的幂次表示,如 1Kb = 2102^{10}210b;在描述速度、频率等时,k、M、G、T一般用10的幂次表示,如 1kb/s = 10310^{3}103b/s。通常后者用小写的K,后者用大写的k,但其他前缀均为小写,表示的涵义取决于所用的场景。
1.3.1.5 基准程序 1.3.2 几个专业术语 1.4 本章小结 1.4.1 内容小结 1.4.2 易混淆知识点
机器字长、指令字长、存储字长的区别和联系是哪些?
指令字长通常取储存字长的整数倍,若指令字长等于储存字长的⒉倍,则须要﹖次访存来取出一条指令,因此取指周期为机器周期的⒉倍;若指令字长等于储存字长,则取指周期等于机器周期。
早期的计算机储存字长通常和机器的指令字长与数据字长相等,因此访问一次寻址便可取出一条指令或一个数据。随着计算机的发展,指令字长可变,数据字长也可变,但它们必须都是字节的整数倍。
请注意64位操作系统是指非常为64位构架的计算机而设计的操作系统,它还能借助64位处理器的优势。但64位机器既可以使用64位操作系统,又可以使用32位操作系统。而32位处理器是难以使用64位操作系统的。