计算机组成原理:计算机系统概述

计算机组成原理:计算机系统概述

计算机系统层次结构

计算机系统组成

  • 硬件系统和软件系统

计算机硬件

1. 冯诺依曼机

  • 采用“存储结构”的工作方式
    • 将程序和数据送入主存后自动逐条执行
  • 运算器,,存储器,控制器,输入设备,输出设备
  • 指令和数据同等地位存储在存储器
  • 指令数据二进制表示,指令由操作码地址码构成。

2. 功能部件

  1. 输入设备
  2. 输出设备
  3. 存储器
    • 分为主存储器和辅助存储器(内/外)
    • 主存储器可以由cpu直接访问,按存储单元的地址进行存取,称为按地址存取
    • 存储体存放二进制信息。
      • 地址寄存器(MAR)存放访存地址,经过地址译码找到对应存储单元。
      • 数据存储器(MDR)用于暂存要从存储器中读写的信息。
      • 时序控制逻辑用于产生存储器操作所需的时许信号。
    • 存储单元包含若干存储元件,存储一串二进制代码称为存储字,位数为存储字长,字长可以是1B(8bit)的偶数倍
    • MAR用于寻址,位数对于存储单元个数。(10位=2^10个存储单元)MAR长度与PC长度相等
    • MDR长度和存储字长相等
    • MAR与MDR虽然是存储器一部分但是在现代计算机中位于CPU内,高速缓存(Cache)也在CPU内

file

  1. 运算器
    • 计算机的执行部件,进行算术与逻辑运算
      • 算数运算是按算数运算规则进行的运算,如加减乘除
      • 逻辑运算包括与,非,异或,比较,移位等
    • 核心是算术逻辑单元(ALU)
    • 包含寄存器
      • 累加器(AAC)(必须)
      • 乘商寄存器(MQ)(必须)
      • 操作数寄存器(X)(必须)
      • 变址寄存器(IX),基址寄存器(BR)等
    • 包含程序状态寄存器(PSW)也称标志寄存器
      • 用于存放ALU运算得到的标志与状态信息,例如结果溢出,有无进位错位,结果为负等
  2. 控制器
    • 控制各部件协调工作
    • 程序计数器(PC)
      • 存放当前预执行指令的地址,可以自动+1形成下一条指令地址,与主存MAR直接有直接通路
    • 指令寄存器(IR)
      • 存放当前指令,内容来自主存MDR
    • 控制单元(CU)
      • 接收IR中指令的操作码OP(IR),分析指令发出微操作命令序列。地址码Ad(IR)送往MAR,用以取操作数
    • 一般将运算器和控制器集成为CPU

file

  • CPU包含ALU,通用寄存器组GPRs,标志寄存器,控制器,指令寄存器IR,程序计数器PC,MAR和MDR。图中虚线为控制信号,控制器可以修改PC得到下一条指令,控制ALU执行运算和主存读写操作
  • CPU通过总线连接主存,包括地址控制和数据线。MAR地址会直接送到地址线上用于指向读写的主存操作单元。
  • 控制线有读/写信号线,指出数据是从CPU写入主存还是从主存读出到CPU。根据是读还是写操作将MDR中的数据送到数据线还是将数据线上的数据送入MDR

3. 软件

  1. 系统和应用软件

    • 系统软件是保住计算机正确高效运行的软件,通常作为系统资源提供给用户使用。主要包含操作系统(OS),数据库管理系统(DBMS),语言处理程序,分布式软件系统,网络软件系统,标准库系统,服务性程序等。
    • 应用软件是用户为解决问题编制的程序,如计算类,工程设计,数据统计程序等
  2. 三个级别语言

    • 机器语言,又称二进制代码语言。是计算机唯一可以直接识别和执行的语言
    • 汇编语言,用英文单词或缩写替代二进制指令代码。经过系统软件中汇编程序的翻译转化为机器语言后执行
    • 高级语言(如C,C++等)是为了方便写出解决问题的程序。通常要先经过编译程序编译成汇编语言,或者直接翻译为机器语言

    翻译程序类型

    • 汇编程序(汇编器)将汇编语言翻译为机器语言
    • 解释程序(解释器)将源程序语句按执行顺序逐条翻译为机器语言并立即执行
    • 编译程序(编译器)将高级语言程序翻译为汇编语言或机器语言程序
  3. 软件硬件的逻辑功能等价性

    • 从用户的角度来看,某一功能既能由硬件,也能由软件实现,它们在功能上是等价的。硬件实现性能优于软件。
    • 软件硬件逻辑功能等价性是计算机设计的重要思路(通用计算机),软件硬件的功能分配及其界面确定是计算机系统结构研究的重要内容。软件硬件功能界面的划分是由设计目标,性能性价比,技术水平等综合因素决定

4. 计算机系统层次结构

由于软硬件的设计者和使用者从不同角度,不同语言对待同一个计算机系统,他们看到的属性与提出的要求也各不相同。
计算机系统的多级层次结构的作用,根据从各种角度看到的机器之间的有机联系,分清彼此之间的界面,明确各自功能,构成合理高效计算机系统。

file

  • 在高级语言层上还可以有应用程序层
  • 没有配备软件的纯硬件系统称为裸机,第3~5层称为虚拟机(软件实现)。虚拟机器只对该层的观察者存在,对该层观察者而言只能通过该层语言了解使用计算机,不必关心下层如何运作。

5. 计算机系统工作原理

  1. “存储程序”工作方式
  • 程序执行前将程序所含指令和数据送入主存,一旦被执行则无需人工干预,自动逐条执行。

file

  • 执行前先将第一条指令地址存放到PC中,取指令时将PC内容作为地址访问主存。
  1. 从源程序到可执行文件
    • 计算机中编写的C语言程序,都必须转换为一系列低级机器指令按照可执行目标文件格式打包存储。
    • 以UNIX系统中GCC编译器为例

file

  1. 预处理阶段:预处理(cpp)器对源程序中#开头命令处理,把对应的.h头文件插入程序文件
  2. 编译阶段:编译器(ccl)对预处理后的源程序进行编译,生成对应的汇编程序
  3. 汇编阶段:汇编器(as)将.s文件翻译成机器语言指令,打包为.o的二进制文件
  4. 链接阶段:链接器(ld)将多个可重定位目标文件和标准库函数合并为一个可执行目标文件。
    • 本例中链接器将hello.o和标准库函数printf所在的可重定位目标模块printf.o合并,生成可执行文件hello
  1. 程序执行过程的描述
    在UNIX系统中,通过shell命令行解释器执行程序

    unix>./hello
    hello,world
    unix>

    其中"unix>"是命令提示符,"./"表示当前目录,"./hello"是可执行文件的路径,下图为执行程序的过程

file

  • shell程序将用户从键盘输入字符读入CPU寄存器,然后保存到主存储器中,在主存储器缓冲区形成字符"./hello"。
  • 接收到enter键时,shell调出操作系统内核程序,由内核加载磁盘上的可执行文件hello到主存中。
  • 内核加载完可执行文件的代码数据后,将hello的第一条指令的地址送至PC,CPU随后开始执行hello程序,将已加载到主存的字符串"hello,world\n"中的每个字符从主存提取到CPU寄存器中,然后将CPU寄存器的字符送到显示器。
  • 由此可见,程序的执行过程就是在CPU,主存和I/O之间流动的过程。
  • 在程序执行过程中,必须依靠操作系统支持。特别是在键盘磁盘等外设操作时,用户不能直接访问,需要依靠操作系统内核完成
  1. 指令执行过程的描述
    • 可执行文件由指令构成,指令由0/1序列构成,指示CPU完成一个特定的操作。(详细内容在第五章)

6.计算机的性能指标

  1. 字长:字长是指计算机进行一次整数运算(定点整数运算)所能处理的二进制数据的位数,通常与CPU寄存器位数、加法器有关。字长越长数的表示范围越大,计算精度越高。
  2. 数据通路带宽:指数据总线一次所能并行传送的信息的位数。这里的指的是外部数据总线宽度,与CPU内的数据总线宽度可能不同。
  3. 主存容量:指主存储器所能存储的最大容量,通常以字节衡量,也可用字数x字长(如512Kx16位)来表示。其中MAR的位数反应存储单元的个数,MDR的位数反映可寻址范围的最大值(不一定是实际存储器的存储容量)。
  4. 运算速度
    1. 吞吐量和响应时间
      • 吞吐量:指系统在单位时间内处理请求的数量,主要取决于主存存储周期。
      • 响应时间:指用户向计算机发送一个请求到系统对该请求做出响应并获得所需结果的时间。通常包括CPU时间与等待时间。
    2. 主频和CPU时钟周期
      • CPU时钟周期:通常为节拍脉冲或T周期,即主频的倒数,是CPU中最小的时间单位。
      • 主频(CPU时钟频率):机器内部主时钟的频率,是衡量机器速度的重要参数。对同型号计算机主频越高执行一个步骤时间越短。
      • CPU时钟周期=1/主频,主频单位通常为Hz(赫兹),1Hz表示每秒一次。
    3. CPI(Clock cycle Per Instruction):执行一条指令所需的时钟周期数。不同指令时钟周期可能不同,所以CPI指的是指令集中所有指令执行所需的平均时钟周期数,是平均值。
    4. CPU执行时间:运行一个程序所花费的时间
      • CPU执行时间=CPU时钟周期数/主频=(指令条数xCPI)/主频
      • CPU性能取决于1.主频2.每条指令执行所用时钟周期数3.指令条数
      • 主频,CPI和指令条数是相互制约的
    5. MIPS(Million Instructions Per Second):每秒执行多少百万条指令。
      • MIPS=指令条数/(执行时间x10^6)=主频/(CPIx10^6)
      • MIPS对不同机器进行性能比较是有缺陷的,不同机器指令集不同指令功能也不同
    6. MFLOPS,GFLOPS,TFLOPS,PFLOPS,EFLOPS,ZFLOPS
      • MFLPOPS(Mega FLoating-point Operations Per Second):每秒执行多少百万次浮点运算。MFLOPS=浮点操作次数/(执行时间x10^6)
      • GFLOPS (Giga Floating-point Operations Per Second), 即每秒执行多少十亿次浮点运算。GFLOPS=浮点操作次数/(执行时间x10^9)
      • TFLOPS (Tera Floating-point Operations Per Second), 即每秒执行多少万亿次浮点运算。TFLOPS=浮点操作次数/(执行时间10^12)
      • PFLOPS =浮点操作次数/(执行时间x10^15); EFLOPS =浮点操作次数/(执 行时间x10^18); ZFLOPS =浮点操作次数/(执行时间x10^21)
        注意:在描述存储容量、文件大小等时,K、M、G、T通常用2的幕次表示,如1Kb = 2^10b; 在描述速率、频率等时,k、M、G、T通常用10的幕次表示, 如1kb/s =10^3b/s。通常前者用大写的 K, 后者用小写的 k, 但其他前级均为大写,表示的含义取决于所用的场景
  5. 基准程序
    • 基准程序(Benchmarks)是专门用来进行性能评价的一组程序,能够很好地反映机器在运行实际负载时的性能,可以通过在不同机器上运行相同的基准程序来比较在不同机器上的运行时间,从而评测其性能。对于不同的应用场合,应该选择不同的基准程序。
    • 使用基准程序进行计算机性能评测也存在一些缺陷,因为基准程序的性能可能与某一小段的短代码密切相关,而硬件系统设计人员或编译器开发者可能会针对这些代码片段进行特殊的优化,使得执行这段代码的速度非常快,以至于得不到准确的性能评测结果。
  6. 一些专业术语
    1. 系列机:具有基本相同的体系结构,使用相同基本指令系统的多个不同型号的计算机组成的一个产品系列
    2. 兼容:指软件或硬件的通用性,即运行在某个型号的计算机系统中的硬件/软件也能应用于另一个型号的计算机系统时,称这两台计算机在硬件或软件上存在兼容性
    3. 软件可移植性:指把使用在某个系列计算机中的软件直接或进行很少的修改就能运行在另一个系列计算机中的可能性
    4. 固件:将程序固化在 ROM中组成的部件称为固件。固件是一种具有软件特性的硬件吸收了软/硬件各自的优点,其执行速度快于软件,灵活性优于硬件,是软/硬件结合的产物

王道408复习笔记-by type59magictank