第一章-计算机系统概述

WanXing2022年7月29日大约 10 分钟

1.1 计算机发展历程(大纲已删除)

1.什么是计算机系统

计算机系统 = 硬件 + 软件, 计算机性能的好坏取决于“软”、“硬”件功能的总和

2.软件

  • 系统软件: 用来管理整个计算机系统, 如操作系统、数据库管理系统、标准程序库(API)、网络软件、语言处理程序(高级语言变机器语言)、服务程序
  • 应用软件: 按任务需要编制成的各种程序, 如抖音、王者荣耀、迅雷、美图秀秀

3.硬件的发展

发展阶段时间逻辑元件速度(次/秒)内存外存
第一代1946-1957电子管几千-几万贡延迟线、磁鼓穿孔卡片、纸带
第二代1958-1964晶体管几万-几十万磁芯存储器磁带
第三代1964-1971中小规模集成电路几十万-几百万半导体存储器磁带、磁盘
第四代1972-现在大规模、超大规模集成电路上千万-万亿半导体存储器磁带、磁盘、光盘、半导体存储器

微处理器的发展

  • 机器字长: 计算机一次整数运算所能处理的二进制位数
  • 微型计算机的发展以微处理器技术为标志

硬件发展历史

  • 1947年, 贝尔实验室, 威廉・肖克利发明“晶体管”
  • 1955年, 肖克利在硅谷创建肖克利实验室股份有限公司
  • 1957年, 八叛徒创立仙童半导体公司
  • 1959年, 仙童半导体公司发明“集成电路”
  • 1968年, 摩尔等人离开仙童, 创立intel
  • 1969年, 仙童销售部负责人桑德斯离开仙童, 创立AMD

摩尔定律

集成电路上可容纳的晶体管数目, 约每隔18个月会增加一倍, 整体性能也将增加一倍

4.软件的发展

编程语言的发展

  1. 机器语言/汇编语言
  2. FORTRAN
  3. PASCAL
  4. C++
  5. Java

操作系统的发展

  1. DOS
  2. windows、ios、macos、android

5.目前发展趋势

  • 向更微型化、网络化、高性能、多用途方向发展
  • 向巨型化、超高速、并行处理、智能化方向发展

1.2 计算机硬件的基本组成

1. 冯诺依曼结构

1.存储程序

  • 存储程序: 指将指令以二进制代码的形式事先输入计算机的主存储器, 然后按其在存储器中的首地址执行程序的第一条命令, 以后就按该程序的规定顺序执行其他的命令, 直至程序执行结束

2.流程

3.特点

  1. 计算机由五大部件组成: I/O设备、存储器、运算器、控制器
  2. 指令和数据以同等地位位于存储器, 可以按地址寻访
  3. 指令和数据用二进制表示
  4. 指令由操作码和地址码组成
  5. 采用存储程序的工作方式
  6. 以运算器为中心(输入/输出设备与存储器之间的数据传送通过运算器完成)

2. 现代计算机的结构

  • 以存储器为中心
  • CPU = 运算器 + 控制器

流程

  • “主机”指的是CPU+主存储器
  • “辅存”指的是机械硬盘等等

3.存储器的层次结构

  • 辅存:外存,硬盘
  • 主存: 即通常所说的内存条
  • 高速缓冲存储器: 介于CPU和主存之间, 称为“Cache”
  • 寄存器: CPU中的存储器, 少量但是速度很快

1.3 计算机的功能部件

1.主存储器的基本组成

  • MAR位数反映存储单元的个数

    10位 --> 2102^{10}个存储单元

  • MDR位数 = 存储字长

    1B(8bit)的整数倍

  • 字和字节是不一样的

    对于 16 位机器,1 字 = 2 字节;但对于 8 位机器,1 字 = 1 字节

存储体

  • 存储体由许多存储单元组成
    • 存储单元: 每个存储单元存放一串二进制代码

      对应MAR位数

      • 存储元件(存储元): 每个存储单元包含若干存储元件, 每个存储元件存储一位二进制代码
    • 存储字: 存储单元中二进制代码的组合
    • 存储字长: 存储单元中二进制代码的位数, 应该是8bit的整数倍

    等于MDR位数

2.运算器的基本组成

  • 运算器: 用于实现算数运算、逻辑运算
    • 运算器的核心是算术逻辑单元
  • ACC: 累加器, 用于存放操作数, 或者运算结果
  • MQ: 乘商寄存器, 在乘、除运算时, 用于存放操作数或者运算结果
  • X: 通用的操作数寄存器, 用于存放操作数

    IX(变址寄存器)、BR(基址寄存器)不是必需的

  • ALU: 算术逻辑单元, 通过内部复杂的电路实现算数运算、逻辑运算
ACC(Accumulator)被加数被减数、差乘积高位被除数、余数
MQ(MUltiple-Quotient Register)乘数、乘积低位
X(Arithmetic and Logic Unit)加数减数被乘数除数

3.控制器的基本组成

  • CU(Control Unit): 控制单元, 分析指令, 给出控制信号
  • IR(Instruction Register): 指令寄存器, 存放当前执行的指令
  • PC(Program Counter): 程序计数器, 存放当前欲执行指令的地址,自动加1形成下一条指令的地址

4.输入设备

  • 将程序和数据以机器所能识别和接受的信息形式输入计算机
  • 键盘、鼠标、扫描仪、摄像机

5.输出设备

  • 将计算机处理的结果以人们所能接受的形式或其他习题所要求的形式输出
  • 显示器、打印机

1.4 计算机软件

1.系统软件和应用软件

  • 系统软件:保证计算机系统高性、正确运行的基础软件
    • 操作系统、数据库管理系统、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序
  • 应用软件:用户为解决某个应用领域中的各类问题而编制的程序
    • 科学计算类程序、工业设计类程序、数据统计与处理程序

2.三种级别的语言

编译程序和解释程序的区别

  • 编译程序: 将高级语言编写的源程序全部语句一次全部翻译成机器语言程序, 而后再执行机器语言程序(只需要翻译一次)
  • 解释程序: 将源程序的一条语句翻译成对英语机器语言的语句, 并立即执行. 紧接着再翻译下一句(每次执行都需要翻译)

3.软件硬件逻辑上等价

1.5计算机系统的层次结构

层次结构

  • M0: 由硬件直接执行微指令
  • M1: 执行二进制机器指令

---------软硬件交界面---------

  • M2: 向上提供“广义指令”, 由操作系统程序实现, 由机器指令和广义指令组成, 目的是为了扩展机器功能, 也称为混合层
  • M3: 用汇编程序翻译成机器语言程序
  • M4: 用编译程序翻译成汇编语言程序

1.6 计算机系统的工作原理

完成一条指令

  1. 取指令: PC->MAR->M->MDR->IR
  2. 分析指令: OP(IR)->CU
  3. 执行指令: AD(IR)->MAR->M->MDR->ACC

计算机的工作过程

  1. 最初: (PC)=0, 指向第一条指令的存储地址
  2. #1: (PC)->MAR, 导致(MAR)=0
  3. #3: M(MAR)->MDR, 导致MDR=000001 0000000101
  4. #4: (MDR)->IR, 导致(IR)=000001 0000000101
  5. #5: OP(IR)->CU, 指令的操作码送到CU, CU分析后得知, 是“取数”指令
  6. #6: Ad(IR)->MAR, 指令的地址码送到MAR, 导致(MAR)=5
  7. #8: M(MAR)->MDR, 导致(MDR)=0000000000000010=2
  8. #9: (MDR)->ACC, 导致ACC=0000000000000010=2
  9. 上一条指令取后PC自动加1, 以上为“取数”指令执行过程. 其他指令自行分析
  • M: 主存中某存储单元
  • ACC、MQ、X、MAR、MDR: 相应寄存器
  • M(MAR): 取存储单元中的数据
  • (ACC): 取相应寄存器中的数据
  • 指令: 操作码+地址码
  • OP(IR): 取操作码
  • Ad(IR): 取地址码

1.7 计算机的性能指标

1.存储器的性能指标

主存容量

  • 总容量 = 存储单元的个数*存储字长 bit
    • = 存储单元个数 * 存储字长/8 Byte
  • MAR: 位数反映存储单元的个数(最多支持多少个)
  • MDR: 位数=存储字长=每个存储单元的大小

例如: MAR32为, MDR8位, 总容量=2^32*8bit=4GB

2.CPU的性能指标

1.主频

  • CPU主频: CPU内数字脉冲信号振荡的频率
  • 在描述CPU主频的时候, “G”指的是10910^9

2.时钟周期

  • 时钟周期: 每个脉冲的时间
  • CPU主频=1/时钟周期

3.CPI(Clock Cycle Per Instruction)

  • CPI: 执行一条指令所需的时钟周期数, 不同的指令, CPI不同. 甚至相同的指令, CPI也有可能变化(在CPU内部实现方式不同)
  • 执行一条指令消耗的时间=CPI*时钟周期
  • CPU执行时间(整个程序消耗的时间)
    • =CPU时钟周期数/主频CPU时钟周期数/主频
    • =(指令条数CPI)/主频(指令条数*CPI)/主频

例如: 某CPU的主频为1000Hz, 某程序包含100条指令, 平均来看指令的CPI=3. 该程序在CPU上执行需要多长时间? 100031/1000=0.3s

4.IPS(Instruction Per Second)

  • IPS: 每秒执行多少条指令
  • IPS=主频/平均CPI
  • MIPS
    • = 指令条数/(执行时间106)指令条数/(执行时间*10^6)
    • = 主频/(CPI106)主频/(CPI*10^6)

    每秒执行百万条指令数

5.FLOPS(FLoating-point Operations Per Second)

  • FLOPS: 每秒执行多少次浮点运算
    • MFLOPS = 浮点操作次数/(执行次数106)浮点操作次数/(执行次数*10^6)
    • GFLOPS = 浮点操作次数/(执行次数109)浮点操作次数/(执行次数*10^9)
    • TFLOPS = 浮点操作次数/(执行次数1012)浮点操作次数/(执行次数*10^{12})

3.系统整体性能指标

1.字长

  • 计算机进行依次整数运算所能处理的二进制数据位数
  • 机器字长:字长,也称机器字长
  • 指令字长:一个指令字中包含的二进制代码的位数
  • 存储字长:一个存储单元存储的二进制代码位数 指令字长一般是存储字长的整数倍
  • 2倍->两个访存周期

2.数据通路带宽

  • 数据通路带宽: 数据总线一次所能并行传送信息的位数(各硬件部件通过数据总线传输数据)

外部数据总线,不同于CPU内

3.吞吐量

  • 吞吐量: 指系统在单位时间内处理请求的数量

4.相应时间

  • 相应时间: 指从用户向计算机发送一个请求, 到系统对该请求做出相应并获得它所需要的结果的等待时间

4.系统整体的性能指标(动态测试)

1.基准程序

  • 基准程序: 用来测量计算机处理速度的一种实用程序, 以便于被测量的计算机性能可以与运行相同程序的其他计算机的性能进行比较

一些思考

  • 1.主频高的CPU一定比主频低的CPU快吗?
    • 不一定, 如两个CPU, A的主频是2GHz, 平均CPI=10; B的主频为1GHz, 平均CPI=1; 则A的IPS为0.2G, B的IPS为1G
  • 2.若上述A和B两个CPU的平均CPI相同, 则A一定更快吗?
    • 不一定, 还要看指令系统, 如A不支持乘法指令, 只能用多次的加法实现惩乘法; 而B支持乘法指令
  • 3.基准程序执行得越快说明机器的性能越好吗?
    • 不一定, 基准程序中的语句存在频度差异, 运行结果也不能完全说明问题
Loading...