【计算机系统概述】
一、 计算机的发展
计算机系统 = 硬件 + 软件
硬件:计算机的实体,如主机、外设等
软件:由具有各类特殊功能的程序组成
计算机性能的好坏取决于软件和硬件功能的总和
1. 硬件的发展
第一台电子数字计算机:ENIAC(1946年),它使用的逻辑元件:电子管(用来处理电信号的最小的基本单元)
发展阶段 | 时间 | 逻辑元件 | 速度(次/秒) | 内存 | 外存 |
---|
第一代 | 1946 - 1957 | 电子管 | 几千 - 几万 | 汞延迟线、磁鼓 | 穿孔卡片、纸带 |
第二代 | 1958 - 1964 | 晶体管 | 几万 - 几十万 | 磁芯存储器 | 磁带 |
第三代 | 1964 - 1971 | 中小规模集成电路 | 几十万- 几百万 | 半导体存储器 | 磁带、磁盘 |
第四代 | 1972 - 现在 | 大规模、超大规模集成电路 | 上千万 - 万亿 | 半导体存储器 | 磁盘、磁带、光盘、半导体存储器 |
- 第一代:电子管时代,体积超大、耗电量超大,使用电子管作为逻辑元件、使用机器语言编程
- 第二代:晶体管时代,体积、功耗降低、使用晶体管作为逻辑元件的计算机,出现了面向过程的程序设计语言:FORTRAN,有了操作系统的雏形
- 第三代:中小规模集成电路时代,将原件集成在基片上,计算机主要用于科学计算等专业用途,高级语言迅速发展,开始有了分时操作系统
- 第四代:大规模、超大规模集成电路时代,开始出现“微处理器”、微型计算机,个人计算机(PC)萌芽,操作系统发展出了:Windows、MacOS、Linux……
(1) 微处理器的发展
微型计算机的发展以微处理器技术为标志
(2) 发展历程
- 1947年,贝尔实验室,发明了“晶体管”
- 1955年,威廉肖克利在硅谷创建了肖克利实验室股份有限公司
- 1957年,八叛徒(traitorous eight)(摩尔、罗伯茨、克莱纳、诺伊斯、格里尼克、布兰克、赫尔尼、拉斯特)创立了仙童半导体公司
- 1959年仙童半导体公司发明了“集成电路”
- 1968年,摩尔等人离开了仙童,创立了 Intel 公司
- 1969年,仙童销售部负责人桑德斯离开仙童,创立了 AMD 公司
(3) 摩尔定律
- 摩尔定律:揭示了信息技术进步的速度,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,整体性能也将会提升一倍
- 半导体存储器的发展(也遵循这一定律):
- 1970年,仙童公司生产出一个较大容量的半导体存储器
- 半导体存储器单芯片容量:1KB、4KB、16KB、64KB、256KB、1MB、4MB、16MB、64MB、256MB、1G……
2. 软件的发展
(1) 软件的分类
- 系统软件:用来管理整个计算机系统
- 例如:操作系统、数据库管理系统(DBMS)、标准程序库、网络软件、语言处理程序、服务程序等
- 应用软件:按任务需要编织成的各种程序
(2) 编程语言的发展
- 机器语言
- 汇编语言
- FORTRAN
- PASCAL
- C++
- java……
(3) 操作系统的发展
3. 目前的发展趋势
- “两极”分化
- 一级是微型计算机向着更微型化、网络化、高性能、多用途方向发展
- 另一极是巨型机向着2更巨型化、超高速、并行处理、智能化方向发展
二、 计算机硬件
1. 计算机硬件的基本组成
(1) 早期冯诺依曼机
由于 ENIAC 需要手动接线来控制计算,所以冯诺依曼提出了“存储程序”
- “存储程序”的概念是指将指令以二进制代码的形式事先输入计算机的主存储器(内存),然后按其在存储器中的首地址执行程序的第一条指定以后就按该程序规定的顺序执行其他指令,直至程序执行结束
- 随后第一台采用冯诺依曼结构的计算机 EDVAC 诞生
- 在计算机系统中,软件和硬件在逻辑上是等效的
- 例如:对于乘法运算,可以设计一个专门的硬件电路实现乘法运算也可以使用软件的方式,执行多次加法运算来实现
冯诺依曼计算机的特点:
- 计算机由五大部分组成
- 指令和数据以同等地位存于存储器,可以按地址寻访
- 指令和数据用二进制表示
- 指令由操作码和地址码组成
- 存储程序
- 以运算器为中心(输入\输出设备与存储器之间的数据传送通过运算器完成)
(2) 现代计算机的结构
- 现代计算机:以存储器为中心
- 现代计算机中:CPU = 运算器 + 控制器
- 概念区分:主存就是运行内存,辅存就是机身存储,指代固态硬盘、机械硬盘等
2. 主机中各个硬件的工作原理
主机:由运算器、控制器、主存储器三部分组成
(1) 主存储器的基本组成
- 每个地址对应一个存储单元
- 存储单元:每个存储单元存放一串二进制代码
- 存储字(word):存储单元中二进制代码的组合
- 存储字长:存储单元中二进制代码的位数
- 存储元:即存储二进制的电子元件,每个存储元可存 1 bit
- MAR(存储地址寄存器) 位数反应存储单元的个数
- MDR(存储数据寄存器) = 存储字长
- 例如:MAR = 4 位 → 总共有二的四次方个存储单元
MDR = 16 位 → 每个存储单元可存放16 bit,就是:一个字(word) = 16 bit(主要看计算机的硬件设计情况) - 易混淆:1 个字节(Byte) = 8 bit 、 1B = 1 个字节。1 b = 1 个 bit
- 现在的计算机通常把 MAR、MDR 也集成到 CPU 中
(2) 运算器的基本组成
- 运算器:用于实现算术运算(如:加减乘除)、逻辑运算(如:与或非)
- 各部分介绍:
- ACC(Accumulator) :累加器,用于存放操作数,或运算结果
- MQ(Multiple - Quotient Register) :乘商寄存器,在乘、除运算时,用于存放操作数或运算结果
- X :通用的操作数寄存器,用于存放操作数(可能有多个)
- ALU(Arithmetic and Logical Unit) :算数逻辑单元,通过内部复杂的电路实现算数运算、逻辑运算
(3) 控制器的基本组成
- 各部分介绍:
- CU(Control Unit) :控制单元,分析指令,给出控制信号
- IR(Instruction Register) :指令寄存器,存放当前执行的指令
- PC(Program Counter) :程序计数器,存放下一条指令地址,有自动加一的功能
(4) 计算机的工作过程
- 举例
- 分析指令结束后,不同的指令具体步骤不同
- CPU 区分指令和数据的依据:指令周期的不同阶段
3. 计算机系统的多级层次结构
(1) 多级层次结构
- 微程序机器(微指令系统):由硬件直接执行微指令:微指令1、微指令2……
- 传统机器(用机器语言的机器):执行二进制机器指令(例如:0000010000000101(取数指令)、0001000000000110(乘法指令))
- 虚拟机器(汇编语言机器):用汇编程序翻译称机器语言程序(例如:LOAD 5 、MUL 6)汇编语言指令和机器语言指令一一对应
- 虚拟机器(高级语言机器):用编译程序翻译成汇编语言程序(例如:y=a*b+c)
- 但由于汇编语言程序需要调用操作系统提供的某些服务所以需要添加一个层级在汇编语言机器与机器语言机器之间
- 虚拟机器(操作系统机器):向上提供“广义指令”(系统调用)
(2) 三种级别的语言
-
高级语言:C/C++/Java……
-
汇编语言:助记符
-
机器语言:二级制代码
-
例如:C、C++ 采用编译程序:
- 例如:JavaScript、Python、Shell 采用解释程序:
- 编译程序:将高级语言编写的源程序全部语句一次全部翻译成机器语言程序,而后再执行机器语言程序(只需要翻译一次)
- 解释程序:将源程序的一条语句翻译成对应于机器语言的语句,并立即执行,紧接着再翻译下一句(每次执行都要翻译)
- 编译程序、汇编程序、解释程序,可以统称为“翻译程序”
(3) 课程区分
- 计算机体系结构:机器语言程序员过见到的计算机系统的属性概念性的结构与功能特性(指令系统、数据类型、寻址技术、I/O 原理)(有无乘法指令)(如何设计硬件与软件之间的接口)
- 计算机组成原理:实现计算机体系结构所表现的属性,堆程序员”透明“(如何实现乘法指令)(如何用硬件实现所定义的接口)
三、 计算机的性能指标
1. 存储器的性能指标
- 总容量 = 存储单元个数 × 存储字长 bit = 存储单元个数 × 存储字长 / 8 Byte(1 Byte = 8 bit)
- 例如:MAR 为32位,MDR 为8位,总容量 = 二的三十二次方 × 8 bit = 4GB
2. CPU 的性能指标
- CPU 主频: CPU 内数字脉冲信号震荡的频率(例如:2.30 GHz、3.60 GHz……)(单位:赫兹,Hz)
- CPI(Clock cycle Per Instruction):执行一条指令所需的时钟周期数(不同的指令, CPI 不同,甚至相同的指令, CPI 也有可能有变化)
- 执行一条指令的耗时 = CPI × CPU 时钟周期
- CPU 执行时间(整个程序的耗时)= CPU 时钟周期 ÷ 主频 = (指令条数 × CPI)÷ 主频
- IPS(Instruction Per Second):每秒执行多少条指令
- FLOPS(Floating-point Operations Per Second):每秒执行多少次浮点运算
- 常用数量单位注意区分:
- 当描述存储器容量、文件大小时:
- 二的十次方:K
- 二的二十次方:M
- 二的三十次方:G
- 二的四十次方:T
- 当描述数据的处理速率、频率这种属性时:
- 十的三次方:K(千)
- 十的六次方:M(百万)
- 十的九次方:G(十亿)
- 十的十二次方:T(万亿)
3. 系统整体的性能指标
- 数据通路带宽:数据总线一次所能并行传送信息的位数(各硬件部件数据总线传输数据)
- 吞吐量:指系统在单位时间内处理请求的数量(它取决于信息能多快地输入内存,CPU 能多快地取指令,数据能多快地从内存中取出或存入,以及所得结果能多快地从内存送给一台外部设备,这些步骤中的每一步都关系到主存,因此,系统吞吐量主要取决于主存的存取周期)
- 响应时间:指从用户向计算机发送一个请求,到系统对该请求做出响应并获得它所需要的结果的等待时间(通常包括 CPU 时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O 操作、操作系统开销等时间))
- 系统整体的性能指标的动态测试
- 基准程序(跑分软件):是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其他计算机性能进行比较