以下具体框架来自华中科技大学 谭志虎 老师,本人根据框架补充自己的一些体会和见解。仅当作学习笔记使用

Target:

image-20220113203814604

一、计算机系统概述

  • 计算机系统层次结构

    • 计算机系统的基本组成

      • 硬件系统
        • 看得见的物理实体,电子线路和电子元件等
      • 软件系统
        • 解决问题的思想、方法,包括程序和数据
        • 分为
      • 固件
        • 固化的软件,firmware,本质是软件
      • 软硬件功能逻辑等效
        • 同一功能即可软件实现,也可以硬件实现
        • 软件灵活性高,性能差,成本低
        • 硬件效率高,成本高
        • 功能划分要折中考虑
      • 分层结构
        • 软件层(虚拟计算机)
          • 高级语言层
          • 汇编语言层
          • 操作系统层
        • 硬件层
          • 指令集架构层(机器语言层)
          • 微代码层(可选)(微程序解释机器指令)
          • 逻辑门层 (实体硬件)
        • 图解
          • e582b4cf-04cd-44ed-a905-f5cac0e939be-329792
          • ps:先编译后汇编
    • 计算机硬件的基本组成

      • 冯·诺依曼结构

        • 思想:存储程序&程序控制
          • 存储程序:将解题步骤编制成程序,然后将程序和运行程序所需要的数据储存到存储器中(以二进制),方便执行。
          • 程序控制则是计算机中控制器逐条去除存储器中的指令,并按照顺序执行,控制各部件完成相应操作,完成数据的加工处理。
        • 组成:5大功能部件
          • 存储器:存放程序和数据,按地址访问
          • 运算器:执行算术运算和逻辑运算
          • 控制器:根据指令的操作码、指令执行过程中的条件状态、时序系统等三方面的因素来产生指令执行过程中所需要的控制信号,控制指令的执行;
          • 输入设备:将信息输入到计算机的外部设备,如键盘、鼠标等。
          • 输出设备:输出计算机处理结果的外部设备。如显示器、打印机等
        • 图解:早期计算机以运算器为中心,现代计算机以存储器为中心
          • reason:早期主要是运算速度慢,现在瓶颈在于存储器
          • 39e0c26d-5c2c-427f-8ba1-124ad989c0d5-329792
      • ·诺依曼计算机特点

        • 组成:运算器、控制器、存储器、输入和输出设备

        • 存储程序

          • 指令和数据以二进制形式存放在存储器中
          • 指令顺序存放,存储器按地址访问
        • 程序控制

          • 程序运行时,控制器逐条从主存中取出指令,控制全机相关部件执行相应操作,完成指令的功能直至完成程序的功能。
          • 由指令控制计算机的运行
          • 由控制器来控制数据的存取及程序的执行
            • 程序顺序执行,遇到分支指令可能改变顺序
    • 计算机软件系统分类

      • 应用软件
        • 解决应用问题的程序集合
        • 如数据处理程序、情报检索程序等
      • 系统软件
        • 管理和调度计算机,方便用户使用计算机并提高使用效率的程序的集合
        • 操作系统、数据库管理系统
        • 分布式软件系统、网络软件系统、标准库程序
        • 语言处理程序
          • 编译器:将高级语言转换成汇编语言
          • 汇编器:将汇编语言转换成机器指令
          • 解释器:将高级语言直接翻译成机器指令 如JAVA
    • 计算机系统的工作过程

      • 工作过程
        • CPU不断从主存中逐条取出指令,控制器对指令进行译码分析,计算下条指令地址,并生成完成指令所需各种操作信号序列,控制功能部件依序形成对应数据通路,从而实现指令功能,再取下条指令,执行直至程序中全部指令执行结束
      • CPU如何执行程序
        • 将可执行程序和数据存放在主存中(存储程序)
          • 可执行程序为机器语言编写的代码
        • CPU上电后即开始取指令、执行指令的死循环(程序控制)
          • 上电后从固定位置开始取指令
          • 第一条指令是固化的BIOS程序
          • BIOS负责硬件自检,最后引导OS
          • OS负责加载可执行目标程序
        • 单条指令执行过程
          • 取指令
          • 指令译码(分析指令功能,计算下条指令地址)
          • 指令执行
        • 程序执行的过程
          • 循环取指令执行机器指令的过程
      • 高级语言程序→可执行目标程序
        • 编译型高级语言转换流程
          • cc2c31e9-4569-4af1-8c7f-7b228e455027-329792
        • 预处理
          • 预处理器对源程序中以#开头的命令进行处理
          • 如#include命令后面的.h文件内容插入程序文件
          • 输出是一个以.i为扩展名的源文件hello.i,还是C程序
        • 编译
          • 编译器对预处理后的源程序进行编译
          • 生成一个汇编语言程序hello.s,文本文件
        • 汇编
          • 汇编器将hello.s 翻译成机器语言指令
          • 输出为可重定位目标文件的hello.o,二进制文件
        • 链接
          • 链接器将多个可重定位目标文件和标准库函数合并
          • 输出为一个可执行目标程序hello,二进制文件
        • 解释性高级语言边解释,边执行,不生成目标代码
  • 计算机系统性能指标

    • 静态性能指标
    • 机器字长
      • CPU一次处理的数据位数
      • 与寄存器、运算器、数据总线的位宽相等
      • 决定数据表示范围和精度
    • 主存容量
      • 主存储器所能存储信息的最大容量
    • 时间相关性能指标
    • 吞吐量
      • 系统在单位时间内处理请求的数量
    • 响应时间
      • 用户向计算机发送一个请求,到系统对该请求做出相应并获得结果所用的时间
      • 响应时间越短,吞吐率越大
      • 程序执行时间=CPU时间+等待时间(磁盘、存储器访问、I/O操作、OS开销)
    • CPU时钟周期
      • CPU仅完成一个最基本的动作。是时钟频率的倒数,是处理操作最基本的时间单位
    • 主频
      • 时钟周期的倒数,同等条件下,频率越高,性能越好
      • 频率不可能无限提升,散热问题,串扰问题等
    • CPI
      • 执行每条指令所需的平均时钟周期数;clock cycle per instruction
      • CPI= {\displaystyle \sum_{i=1}^{n}{(CPI_i× P_i)} }= {\displaystyle \sum_{i=1}^{n}{(CPI_i× \frac{IC_i}{IC})} } CPI=i=1∑n(CPI**i×P**i)=i=1∑n(CPI**i×ICICi)
    • IPC
      • 每个时钟执行的指令条数
      • IPC=1/CPIIPC=1/CPI
    • CPU执行时间
      • 程序执行期间真正消耗CPU的时间
        • *T_{cpu}= CPI× IC× T *Tcpu*=*CPI*×*IC*×*T**
    • MIPS
      • 每秒执行多少百万条指令数量 Million Instructions Per Second
      • *MIPS= f/(CPI× 10^6 ) *MIPS*=*f*/(*CP**I*×106)*
      • 全性能公式
        • MIPS=IPC× f MIP**S=IPC×f
        • 时钟频率 f 的单位为 MHz
    • MFLOPS
      • 每秒执行多少百万次浮点操作
      • Million Floating-Point Operations Per Second
      • 用于衡量科学计算性能
      • 更大单位:TFLOPS、PFLOPS、EFLOPS、ZFLOPS
      • 每个单位相差1000倍
      • 磁存储,网络数传率也使用10进制为单位,计算时需注意
        • 1TB硬盘=10^91T**B硬盘=109Byte
        • 100M宽带=100×10^6100M宽带=100×106Bit/s
    • 单一指标都不能准确评价性能,基准测试程序更靠谱
    • 考研真题
      • 真题1
        • ac963c6e-678d-4fe9-8f2e-fe6f6168e019-329792
      • 真题2
        • a693f5f6-f4b9-4339-a265-7eda4d500c95-329792

计组学习建议

  • 构造观

    • 理解并掌握运算器,控制器等核心部件的结构和工作原理
    • 实现简单的设计
  • 系统观

    • 就是要研究硬件系统与软件系统的协同与互动。
    • 从原理上说,可以对任何硬件都从程序员的角度来审视。
    • 另一方面,从硬件工程师的角度来审视程序设计的优化问题,即探究如何利用硬件的特性提升程序运行的性能和效率
  • 工程观

    • 培养软硬件协同视角下的计算机系统开发和实现能力
    • 考虑工程的制约因素
    • 能有选择恰当技术和工具进行工程优化的意识