1.1 计算机发展历程
1.1.1计算机硬件的发展
1.逻辑元件的四代变化:
电子管->晶体管->中小规模集成电路->超大规模集成电路
第四代计算机时代产生了微处理器,是微型计算机发展的标志。
2. 计算机元件的更新换代
如半导体存储器、微处理器都在不断更新迭代。
摩尔定律:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将会提升一倍。
1.1.2 计算机软件的发展
计算机语言的发展:机器语言->汇编语言->面相问题的高级语言
计算机系统:出现了Windows、UNIX、Linux等等。
1.2 计算机系统层次结构
1.2.1 计算机系统的组成
硬件系统和软件系统共同构成了一个完整的计算机系统。硬件是指有形的物理设备,软件是指在硬件上运行的程序和相关的数据及文档。
1.2.2 计算机硬件
冯诺依曼机基本思想:
(1) 采用"存储程序"的工作方式。
(2) 计算机硬件系统由运算器、控制器、存储器、输入设备和输出设备5大部件组成。
(3) 指令和数据以同等地位存储在存储器中,形式上没有区别。
(4) 指令和数据均用二进制代码表示。指令由操作码和地址码组成,操作码指出操作的类型,地址码指出操作数的地址。
计算机的功能部件
(1)输入设备
如键盘、鼠标、扫描仪、摄像机等。
(2)输出设备
如显示器、打印机等。
(3)存储器
存储器分为主存储器(内存储器)和辅助存储器(外存储器),CPU能够直接访问的存储器是主存储器,辅助存储器用于帮助主存储器存储更多的信息,辅存中的信息必须调入主存后,才能被CPU访问。
主存储器的工作方式是按存储单元的地址进行存取。地址寄存器(MAR)存放访存地址,经过地址译码器后找到所选的存储单元。数据寄存器(MDR)用于暂存要从存储器中读或写的信息,时序控制逻辑用于产生存储器操作所需的各种时序信号。
(4)运算器
用于进行算术运算和逻辑运算。算术运算如(加、减、乘、除);逻辑运算如(与、或、非、异或、比较、移位)。
运算器的核心是算术逻辑单元(ARrithmetic and Logical Unit,ALU)。运算器通常包含若干通用寄存器,用于暂存操作数和中间结果,如累加器(ACC)、乘商寄存器(MQ)、操作数寄存器(X)、变址寄存器(IX)、基址寄存器(BR)等,其中前三个是必需的。
(5)控制器
控制器由程序计数器(PC)、指令寄存器(IR)和控制单元(CU)组成。
PC用来存放当前欲要执行的指令,具有自动加“1”的功能。
IR用来存放当前指令,其内容来自主存的MDR。指令中的操作码OP(IR)送至CU,用来分析指令并发出各种微操作命令序列;地址码Ad(IR)送到MAR,用来取操作数。
CPU和主存之间通过一组总线项链,总线中有地址、控制和数据3组信号线。MAR中的地址信息会直接送到地址线上,用于指向读/写操作的只存存储单元;控制线中有读/写信号线,指出数据是从CPU写入主存还是从主存读出到CPU,根据是读操作还是写操作来控制将MDR中的数据是直接送到数据线上还是将数据线上的数据接收到MDR中
1.2.3 计算机软件
软件按功能分类可以分为系统软件和应用软件。系统软件保证计算机系统高效、正确的运行,应用软件专门用来用户解决某个应用领域中的各类问题。
三个级别的语言:
(1)机器语言。又称为二进制代码语言。
(2)汇编语言。汇编语言用英文单词或其缩写代替二进制的指令代码,更方便记忆。
(3)高级语言。如(C、C++、Java等)
由于机器语言无法直接理解和执行高级语言程序,需要将高级语言转换为机器语言,通常把进行这种转换的软件系统称为翻译程序。
三类翻译程序:
(1)汇编程序(汇编器)。将汇编语言程序翻译成及其语言程序。
(2)解释程序(解释器)。将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
(3)编译程序(编译器)。将高级语言程序翻译成汇编语言或机器语言程序。
软件和硬件逻辑功能的等价性是计算机系统设计的重要依据。
1.2.4 计算机系统的层次结构
1.2.5 计算机系统的工作原理
1.“存储程序”工作方式
2. 从源程序到可执行文件
(1)预处理阶段
预处理器(CPP)对源程序中以字符#开头的命令进行处理,例如将#include命令后面的.h文件内容插入到程序文件。输出结果是一个以.i为扩展名的源文件hello.i 。
(2)编译阶段
编译器(cc1)对预处理后的源程序进行编译,生成一个汇编语言源程序hello.s 。汇编语言源程序中的每条语句都以一种文本格式描述了一条低级机器语言指令。
(3)汇编阶段
汇编器(as)将hello.s翻译成机器语言指令,把这些低级指令打包生成一个称为可重定位目标文件的hello.o,它是一种二进制文件,用文本编译器打开会显示乱码。
(4)链接阶段
链接器(ld)将多个可重定位目标文件和标准库函数合并为一个可执行目标文件,简称可执行文件。例如:链接器将hello.o和标准库函数printf所在的可重定位目标木块printf.o合并,生成可执行文件hello。最终生成的可执行文件被保存在磁盘上。
3. 指令执行过程
(1)取指令
PC->MAR->M->MDR->IR
根据PC取指令到IR。将PC的内容送到MAR,MAR中的内容直接送到地址线,同时控制器将读信号送读/写信号线,主存根据地址线上的地址和读信号,从指定存储单元读出指令,送到数据线上,MDR从数据线接收指令信息,并传送到IR中。
(2)分析指令
OP(IR)->CP
指令译码并送出控制信号。控制器根据IR中指令的操作码,生成相应的控制信号,送到不同的执行部件,例如,IR中是取数指令,因此读控制信号被送到总线的控制线上。
(3)执行指令
Ad(IR)->MAR->M->MDR->ACC
取操作数。将IR中指令的地址码送MAR,MAR中的内容送地址线,同时控制器将读信号送读/写控制线,从主存中取出操作数,并通过数据线送至MDR,再传送到ACC中。
每取完一条指令,还须为取下条指令做准备,计算下条指令的地址,即(PC)+1 -> PC 。
1.2+补充
1.2.1 知识点
冯诺依曼机的基本工作方式是控制流驱动方式。
1.2.2 问题
1.什么是存储程序原理?按此原理,计算机应具有哪几大功能?
存储程序是指将指令以二进制代码的形式事先输入计算机主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直直程序执行结束。
数据传输功能、数据存储功能、数据处理功能、操作控制功能、操作判断功能。
1.3计算机的性能指标
1.3.1 主要性能指标
1. 字长
字长是指计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,通常与CPU的寄存器位数、加法器位数有关。因此,字长一般等于内部寄存器的大小,字长越长,数的表示范围越大,计算精度越高。计算机字长通常选定为字节(8位)的整数倍。
2.数据通路宽度
数据通路宽度指数据总线一次所能并行传达信息的位数。这里的数据通路宽度是指外部数据总线的宽度,它与CPU内部的数据总线宽度(内部寄存器的大小)可能有不同。
3.主存容量
主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量,也可以用字数*字长来表示。其中,MAR的位数反映了存储单元的个数,MDR的位数反映了存储单元的字长。
4. 运算速度
(1)吞吐量和响应时间
吞吐量指系统在单位时间内处理请求的数量。它取决于信息能多快地输入内存,CPU能多快地取指令,数据能多快地从内存取出或存入,以及所得结果能多快地从内存送给一台外部设备。几乎每步都关系到主存,因此系统吞吐量主要取决于主存的存取周期。
响应时间指用户向计算机发送一个请求,到系统对该请求做出响应并获得所需结果的等待时间。
(2)主频和CPU时钟周期
CPU始终周期:主频的倒数,通常为节拍脉冲或T周期。
主频(CPU时钟频率):机器内部主时钟的频率。
(3)CPI:执行一条指令所需的时钟周期数。
(4)CPU执行时间:运行一个程序所花费的时间。
CPU执行时间=CPU时钟周期数/主频=(指令条数*CPI)/主频
(5)MIPS:每秒执行多少百万条指令
相对于IPS的数量级:
MFLOPS(10^6) GFLOPS(10^9) TFLOPS(10^12) PFLOPS(10^15)
EFLOPS(10^18) ZFLOPS(10^21)
注:描述存储容量、文件大小等时,K、M、G、T通常用2的幂次表示;描述速率、频率等时,K、M、G、T通常用10的幂次表示。
1.3+ 补充
1.3.1 知识点
(1)在CPU中,IR、MAR和MDR对各类程序员都是透明的。
1.3.2 问题
字、字长、机器字长、指令字长、存储字长的区别和联系是什么?
通常所说的32位、64位机器,其中32、64指的是字长也称为机器字长。
字长通常是指CPU内部用于整数运算的数据通路的宽度,因此字长等于CPU内部用于用于众数运算的运算器位数和通用寄存器宽度。字和字长不同,字用来表示被处理信息的单位。
指令字长:一个指令中包含的二进制代码的位数。
存储字长:一个存储单元的二进制代码的长度。
指令字长一般取存储字长的整数倍,若指令字长等于存储字长的2倍,则需要2个访存周期来取出一条指令;若指令字长等于等于存储字长,则取值周期数等于机器周期。