3013 字
15 分钟
1.计算机系统概述

1.1 计算机发展历程#

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

    • 摩尔定律: 价格不变前提下,集成电路可容纳晶体管每18个月翻一番
    • 半导体存储器发展
    • 微处理器发展
  • 计算机软件发展 机器语言->汇编语言->高级语言(C,Java,Python等),计算机系统: Windows,Linux,UNIX等

1.2 计算机系统层次结构#

计算机系统由硬件软件构成

1.2.2 计算机硬件#

  1. 冯诺依曼机基本思想 提出“存储程序”思想,基本工作原理是控制流驱动方式。主要特点:

    • 采用“存储程序”工作方式:把编制好的程序和初始数据预先存入主存储器,计算机启动后能自动,连续地取指并执行,直到程序结束,无需人工干预。
    • 硬件系统由运算器,控制器,存储器,输入设备输出设备五大部件组成。
    • 指令和数据在存储器中以相同的形式存放,仅凭内容无法区分,但计算机应能识别它们。
    • 指令和数据均采用二进制编码表示
    • 指令由操作码和地址码组成,其中操作码指明操作类型,地址码指出操作数的地址。
  2. 计算机的功能部件

    中央存储器(CPU)包括运算器,控制器,各类寄存器。

    • CPU

      传统基本组成部分是运算器控制器,现代处理器架构中为数据通路控制单元数据通路: 执行之际运算的硬件通路,核心包括算数逻辑单元(ALU)通用寄存器组。ALU运算,寄存器存储,控制单元: 协调整个CPU工作。

    • 存储器

      通常分为外存和内存。现代内存由主存和高速缓存(Cache)。传统上内存是主存。在冯诺依曼体系中,主存作为核心的工作存储器,用于存放待执行的程序和数据。外存有和主存交换数据的磁盘固态,还有长期备份的海量存储设备(磁带,光盘)

    • 外部设备和设备控制器

      外部设备简称外设I/O设备如打印机。 设备控制器统称I/O控制器I/O接口,如网卡,显卡。

    • 总线

      是计算机中用于和各种设备部件之间传输信息的公共通路。CPU-处理器总线,主存-存储器总线,I/O设备通过控制接入I/O总线。

1.2.3 计算机软件#

  1. 按功能划分
    • 系统软件: 一组邦长计算机系统高效,正确运行的基础软件,用于管理和调度系统资源,为用户和应用程序提供基础服务。如操作系统(OS),数据库管理系统(DBMS)等
    • 应用软件: 用户为解决特定应用领域问题而开发的程序。
  2. 软硬件逻辑功能等价 软件和硬件在逻辑功能上等价叫做软/硬件逻辑功能的等价性,硬件效率通常高于软件。软/硬件逻辑功能等价性是计算机系统设计的重要依据

1.2.4 计算机系统层次结构#

  1. 算法和编程

    • 编程语言:分为高级语言(独立于硬件结构)和低级语言(依赖于机器结构—汇编语言和机器语言)
      • 机器语言:二进制代码语言,唯一能直接识别和执行的语言
      • 汇编语言:有助记符,要通过汇编程序翻译成机器语言
      • 高级语言:C/C++
    • 翻译程序:把高级语言源程序转换为机器语言的系统软件。 目标程序:转换后生成的程序
      • 汇编程序(汇编器):汇编语言->机器语言
      • 解释程序(解释器):逐条翻译并立即执行,不生成独立目标程序
      • 编译程序(编译器):高级语言->汇编/机器语言目标程序
  2. 操作系统

  3. 指令集体系结构(ISA)

    是计算机软硬件关键接口完整定义了软件可直接使用的硬件功能,主要有:指令格式,操作类型,寻址方式,可访问的寄存器等硬件资源。

  4. 微体系结构(微架构)

    处理器内部硬件组织方式,实现ISA定义功能。核心设计包括数据通路组织,控制单元实现,流水线级数,缓存层次结构和分支预测等。相同ISA可对应多种不同的微架构

1.2.5 计算机系统用户#

  • 最终用户
  • 系统管理员
  • 应用程序员
  • 系统程序员

1.2.6 计算机系统工作原理#

  1. 存储程序工作方式

    程序执行前,把包含的指令和数据预先加载到主存中,启动后不用人工干预,自动取指令并执行。步骤:主存中取指令(地址由程序计数器PC提供),对指令译码,取操作数,执行操作,结果写回存储器。

    每次指令最后根据类型更新PC: - 顺序指令:下一个指令地址是PC+当前指令长度 - 跳转指令:下一个指令地址是指令中指定的地址

  2. 源程序到可执行文件

    x.c->预处理器(cpp)->x.i->编译器(ccl)->x.s->汇编器(as)->x.o->链接器(ld)->x(二进制文件)

    • 预处理:处理#开头内容,生成完整文件
    • 编译:每个语句以文本形式描述为一条低级机器指令
    • 汇编:转换成机器语言指令生成x.o(可重定位目标文件)
    • 链接:解析外部符号引用
  3. 指令执行过程描述

    可执行文件的代码段由一条条机器指令构成。指令执行可建模成**“取指-译码-执行”**

1.3 计算机性能指标#

1.3.1 计算机主要性能指标#

  1. 运算速度

    • 吞吐量:系统单位时间中处理请求的数量。存取性能对其有显著影响
    • 响应时间:用户发出请求到系统返回需求的等待时间,通常包含CPU时间和等待时间
    • CPU时钟周期:机器内部主时钟脉冲宽度,是CPU工作最小时间单位
    • 时钟脉冲:机器脉冲源产生,整形和分频后形成
    • 时钟周期
    • 主频(CPU时钟频率):机器内部主时钟频率,时钟周期的倒数,表示每秒包含的时钟周期数
    NOTE

    CPU时钟周期 = 1/主频。主频单位赫兹(Hz)。10Hz表示每秒10个时钟周期

    • CPI:执行一条指令需要的时钟周期数量

      一般是平均CPI

    • IPS:每秒执行多少指令。 IPS = 主频/平均CPI

    • CPU执行时间:运行程序花费的时间

      CPU执行时间 = CPU时钟周期数 / 主频 = (指令条数 X CPI) / 主频

      CPU性能取决于:指令条数,CPI,主频 并且有制约关系

    • MIPS:每秒执行多少百万条指令

      MIPS = 指令条数 / (CPU执行时间 + 10^6) = 主频 / (CPI * 10^6)

      不推荐用于不同主机性能比较

    • FLOPS:每秒执行的浮点运算次数

      MFLOPS(百万),GFLOPS(十亿),TFLOPS(万亿),PFLOPS(千万亿),EFLOPS(百亿亿),ZFLOPS(十万亿亿)

    NOTE

    存储容量通常是 2^10 速率通常是 10^3

  2. 基准程序:专门性能测评程序

1.4 本章小结#

  1. 主频高的CPU一定比主频低的CPU性能更高吗?为什么?

不一定。CPU性能受多种因素影响,不能仅凭主频高低判断优劣。主频表示CPU内部时钟信号的振荡频率,反映指令执行的节奏快慢,但并不直接等同于实际运算速度。实际性能还取决于微架构设计、流水线深度、缓存容量与层级、指令集效率、位宽、并行能力等。例如,一个主频较低但架构先进的CPU,可能因更高的每周期指令数(IPC)而超越主频更高但架构陈旧的处理器。因此,在特定场景下,主频较高的CPU实际性能反而可能更低。

  1. 不同级别的语言所编写的程序有何差异?哪一类语言可被硬件直接执行?

机器语言由二进制指令构成,与硬件指令一一对应,可被CPU直接执行;汇编语言使用助记符,需要汇编后执行;高级语言更抽象,需要编译或解释转换。只有机器语言能被硬件直接执行。

1.5 常见问题和易混淆知识点#

  1. 翻译程序、解释程序、汇编程序、编译程序的区别和联系是什么?

翻译程序是将一种编程语言转换为另一种语言的程序,主要包括编译程序、解释程序和汇编程序。编译程序将高级语言源程序一次性全部翻译为目标程序(如机器码或汇编代码),生成可独立执行的文件;源程序不变时,无须重复编译。解释程序逐条读取源程序语句,翻译成机器指令并立即执行,通常不生成可存储的目标程序,执行过程为“边翻译边执行”。汇编程序是一种特殊的翻译程序,将汇编语言源程序翻译为机器语言程序。 编译程序与汇编程序的区别: 若源语言为高级语言(如C、Java),目标语言为低级语言(如汇编语言或机器语言),则称为编译程序;若源语言为汇编语言,目标语言为机器语言,则称为汇编程序。

  1. 什么是透明性?透明是指什么都能看见吗?

在计算机领域,透明性指从某类用户的视角无法感知某一事物或属性的存在,这与日常生活中“透明=可见”的含义恰好相反。例如,对高级语言程序员而言,指令的格式、机器结构、数据格式等均是透明的;而对汇编或机器语言程序员,这些细节则不是透明的。CPU中的指令寄存器(IR)、存储器地址寄存器(MAR)和存储器数据寄存器(MDR),对所有程序员均透明。

  1. 计算机体系结构和计算机组成的区别与联系是什么?

计算机体系结构是指程序员可见的机器属性,包括指令集、数据类型、寻址方式等,属于抽象层面的定义。计算机组成则是体系结构的具体实现,涉及硬件如何完成取指、译码、执行等操作,包含大量对程序员透明的细节。例如,是否提供乘法指令属于体系结构问题,而采用何种电路(如阵列乘法器或移位相加)实现该指令,则属于组成问题。因此,两台机器可具有相同体系结构,但组成方式迥异,从而在性能与成本上呈现显著差异。

  1. 基准程序执行得越快说明机器的性能越好吗?

一般而言,基准程序的执行速度可反映机器性能,但单一程序通常只覆盖特定工作负载,难以全面代表系统整体性能,因其对计算、访存、I/O等资源的需求各异。