计算机组成原理【CO】Ch1 计算机系统概述

冯诺依曼机的特点

  • 指令和数据以同等地位存储在存储器中,并按地址寻问
    • 按存储单元的地址进行存取
  • 指令和数据均以二进制代码表示
    • CPU区分指令和数据的依据是指令周期的不同阶段。取值IF阶段是指令,译码ID阶段是数据
    • 数据由指令的地址码给出
  • 指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下可根据运算结果或根据设定的条件改变执行顺序
  • 早期冯诺依曼机以运算器为中心,输入输出设备通过运算器与存储器传送数据
    • 现代是以存储器为中心
  • 是单处理机
  • 基本工作方式是控制流驱动方式[存储程序思想]
    • 控制流驱动:从程序存储器中拿到操作指令后,再去数据存储器中取操作数进行计算;[在程序执行前, 指令和数据需预先存放在存储器中, 中央处理器可以从存储器存取代码]
    • 数据流驱动:只要数据已经准备好,有关的指令可并行执行。

【※】计算机性能指标

主频和CPU时钟周期

  • 主频:机器内部主时钟的频率,代表每秒执行多少个时钟周期数
    • 值越大代表一个操作所需时间越少,CPU运行速度越快
  • CPU时钟周期:通常为节拍脉冲或T周期,即主频的倒数
    • 是CPU中最小的时间单位,每个动作至少需要1个时钟周期
  • 时钟周期=1/主频,如主频为2.4GHz,则时钟周期=1/2.4G 秒

CPI

  • 执行一条指令所需要的时钟周期数
  • CPI与系统结构,指令集,计算机组织有关,与时钟频率无关
    • 时钟频率并不会影响CPI,但可加快指令的执行速度。
    • 例如,执行一条指令需要10个时钟周期,则一台主频为1GHz的CPU,执行这条指令要比一台主频为100MHz的CPU快。
  • CPI=时钟周期数量/指令数量

CPU执行时间

  • 运行一个程序所花费的时间
  • 执行时间= 时钟周期数量×时钟周期

Ch1 计算机系统概述

冯诺依曼机的特点

  • 指令和数据以同等地位存储在存储器中,并按地址寻问
    • 按存储单元的地址进行存取
  • 指令和数据均以二进制代码表示
    • CPU区分指令和数据的依据是指令周期的不同阶段。取值IF阶段是指令,译码ID阶段是数据
    • 数据由指令的地址码给出
  • 指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下可根据运算结果或根据设定的条件改变执行顺序
  • 早期冯诺依曼机以运算器为中心,输入输出设备通过运算器与存储器传送数据
    • 现代是以存储器为中心
  • 是单处理机
  • 基本工作方式是控制流驱动方式[存储程序思想]
    • 控制流驱动:从程序存储器中拿到操作指令后,再去数据存储器中取操作数进行计算;[在程序执行前, 指令和数据需预先存放在存储器中, 中央处理器可以从存储器存取代码]
    • 数据流驱动:只要数据已经准备好,有关的指令可并行执行。

【※】计算机性能指标

主频和CPU时钟周期

  • 主频:机器内部主时钟的频率,代表每秒执行多少个时钟周期数
    • 值越大代表一个操作所需时间越少,CPU运行速度越快
  • CPU时钟周期:通常为节拍脉冲或T周期,即主频的倒数
    • 是CPU中最小的时间单位,每个动作至少需要1个时钟周期
  • 时钟周期=1/主频,如主频为2.4GHz,则时钟周期=1/2.4G 秒

CPI

  • 执行一条指令所需要的时钟周期数
  • CPI与系统结构,指令集,计算机组织有关,与时钟频率无关
    • 时钟频率并不会影响CPI,但可加快指令的执行速度。
    • 例如,执行一条指令需要10个时钟周期,则一台主频为1GHz的CPU,执行这条指令要比一台主频为100MHz的CPU快。
  • CPI=时钟周期数量/指令数量

CPU执行时间

  • 运行一个程序所花费的时间
  • 执行时间= 时钟周期数量×时钟周期

MIPS

  • MIPS:每秒执行多少百万条指令 [Million instructions per second]
    • M I P S = 指令条数 / ( 执行时间 × 1 0 6 ) = 主频 / ( C P I × 1 0 6 ) MIPS=指令条数/(执行时间×10^6)=主频/(CPI×10^6) MIPS=指令条数/(执行时间×106)=主频/(CPI×106)
  • MFLOPS:每秒执行多少百万次浮点运算
    • M F L O P S = 浮点操作数次数 / ( 执行时间 ∗ 1 0 6 ) MFLOPS = 浮点操作数次数/(执行时间 * 10^6) MFLOPS=浮点操作数次数/(执行时间106)
  • GFLOPS:每秒执行多少十亿次浮点运算
    • G F L O P S = 浮点操作数次数 / ( 执行时间 ∗ 1 0 9 ) GFLOPS = 浮点操作数次数/(执行时间 * 10^9) GFLOPS=浮点操作数次数/(执行时间109)
  • TFLOPS:每秒执行多少万亿次浮点运算
    • T F L O P S = 浮点操作数次数 / ( 执行时间 ∗ 1 0 12 ) TFLOPS = 浮点操作数次数/(执行时间 * 10^{12}) TFLOPS=浮点操作数次数/(执行时间1012)
  • P F L O P S = 浮点操作数次数 / ( 执行时间 ∗ 1 0 15 ) PFLOPS = 浮点操作数次数/(执行时间 * 10^{15}) PFLOPS=浮点操作数次数/(执行时间1015)
  • E F L O P S = 浮点操作数次数 / ( 执行时间 ∗ 1 0 18 ) EFLOPS = 浮点操作数次数/(执行时间 * 10^{18}) EFLOPS=浮点操作数次数/(执行时间1018)
  • Z F L O P S = 浮点操作数次数 / ( 执行时间 ∗ 1 0 21 ) ZFLOPS = 浮点操作数次数/(执行时间 * 10^{21}) ZFLOPS=浮点操作数次数/(执行时间1021)
  • MGTPEZ

工作频率, 时钟频率之间的关系

假设总线传送一次数据是由N个时钟周期完成.

  • 1 / 工作频率 1/工作频率 1/工作频率:表示每次完成数据传输所花费的时间
  • 1 / 时钟频率 1/时钟频率 1/时钟频率:表示每次执行1个时钟周期所花费的时间

又因为每次完成传输数据都需要经过N个时钟周期来完成,根据时间关系所以有:

工作频率 = 时钟频率 / N 工作频率 = 时钟频率/N 工作频率=时钟频率/N

【※】各种字长的概念

指令字长

  • 指令中包含二进制代码的位数,即一条指令的总长度
  • 取决于:
    • 操作码的位数(即多少操作)
    • 操作数地址的长度(取决于主存的大小,如果容量为1GB的主存按字节寻址,每个操作数地址的长度都需要30位地址码)
    • 操作数地址的个数(四、三、二、一、零地址等)。
  • 为了硬件设计方便,指令字长一般取字节或存储字长的整数倍。
  • 如果指令字长等于存储字长的2倍,那么需要2次访存,那么取指周期就等于机器周期的2倍。

机器字长

  • CPU进行一次整数运算所能处理的二进制数据的位数
  • 通常和ALU直接相关,由运算器内部寄存器决定【一般相等】。
  • 反映了计算机的处理信息的能力
  • 等于计算机的字长
  • 是一个硬件概念

存储字长

  • 是指一个存储单元存储的二进制代码(存储字)的长度。
  • 通常和MDR位数相同。
  • 一般情况下等于机器字长,也可以是机器字长的倍数

数据通路带宽

  • 数据总线一次可以传递的位数,通常大于MDR位数

操作系统位数

  • OS 可以寻址的位数,是软件概念

机器字长、指令字长和存储字长,三者在数值上可以相等也可以不等,视不同机器而定。

【※】各种周期概念

在这里插入图片描述

指令周期

  • 从一条指令的启动到下一条指令启动所经历的时间。
  • 通常由多个机器周期组成。
  • CPU每取出并执行一条指令所需的全部时间,即CPU完成一条指令的时间,称为指令周期。

时钟周期(节拍周期)

  • 计算机主频周期,通常将一个时钟周期定义为一个节拍。
  • 时钟周期是计算机操作的最小单位时间,由计算机的主频决定,是主频的倒数。
  • 工作脉冲是控制器的最小时间单位,起定时触发作用,一个时钟周期有一个工作脉冲。

机器周期(CPU周期)

  • 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作,如取指令、存储器读、存储器写等,每一项工作称为一个基本操作。
  • 完成一个基本操作所需的时间称为机器周期,也称为CPU工作周期或基本周期,通常等于取指时间(或访存时间)。
  • 一般情况下,一个机器周期由若干个时钟周期构成。

总线周期

  • CPU对存储器和I/O接口的访问通过总线实现。
  • 把CPU通过总线对存储器或I/O接口进行一次访问所需时间称为一个总线周期。
  • 总线的传输周期(总线周期):一次总线操作所需的时间(包括申请阶段、寻址阶段、传输阶段和结束阶段)通常由若干个总线时钟周期构成。

微指令周期

  • 读出微指令的时间加上执行该条微指令的时间。
  • 注意:微指令周期常取成和机器周期相等。

存取周期

  • 存取周期指存储器进行连续两次独立的存储器操作(要么连续两次读操作,要么连续两次写操作)所需的最小间隔时间。
  • 存取周期 = 存取时间 + 恢复时间
  • 存取时间又称为存储器的访问时间,指启动一次存储器操作(读或写)到完成该操作所需的全部时间。
  • 存取时间分为读出时间和写入时间两种。

CPU访存的过程

  • CPU通过总线把数据地址送给存储器。
  • 存储器得到地址后启动存储器即准备数据。
  • CPU输出控制信号或其他操作。
  • 数据准备完毕【此过程完成数据准备即一个存储周期】,再由总线送回CPU。

存储周期与总线周期

  • 一个存储周期是对存储器的两次存取操作的时间间隔,在这个时间间隔里面可以包含多个总线传输周期,因为一次存取操作不一定读取一个数据总线宽度的数据,所以一个存取周期可以包含多个总线传输周期。
  • 所以,通常存储周期 > 总线周期,CPU不能连续存取数据,必须等待。
  • 为提高传输效率,由此也引出了两个概念:
    • 总线突发传输方式:即总线可以在一个总线周期内传输一个地址和一批地址连续的数据,代替常规传输的一个地址一个数据。
    • 多体并行存储器:存储器采用多个存储模块组成,以流水线方式准备数据,从而提高存储带宽。

【※】各种线的条数的确定

  • 地址总线线数 —> 可寻址的范围 —> 存储器最大容量【存储单元的个数】—>一般和MAR的位数一样
  • 数据总线线数 —> 一次可取的数据位数 —> MDR的位数 —> 运算器一次处理的位数 —>运算器寄存器位数—>通常与存储字长相等 —>n位CPU的n
  • 控制总线线数 —> 一次可并行传送的控制信息位数
  • IO线数 —> 与外设通信的并行程度

【※】从源文件到可执行文件

三种程序转换图

在这里插入图片描述

  • 三个语言:

    • 机器语言:是计算机唯一可以直接识别和执行的语言
    • 汇编语言:由汇编程序(系统软件)汇编成为机器语言后,才能执行
    • 高级语言:
      • 如C,C++,Java
      • 一种是经过编译程序,编译得到汇编语言,然后经过汇编操作,得到机器语言,然后再执行【高级语言->汇编语言->机器语言】
      • 一种是由高级语言程序直接翻译成机器语言(边翻译边执行,不生成可执行文件)【高级语言->机器语言】
  • 三种程序:

    • 汇编程序(汇编器) :将汇编语言程序翻译为机器语言程序。
    • 编译程序(编译器) :将高级语言源程序一次翻译成目标程序(汇编语言或机器语言)
    • 解释程序(解释器) :将源程序的一条语句翻译成对应的机器目标代码并立即执行,并不形成目标程序。
  • 预处理阶段:预处理器(cpp) 根据以字符#开头的命令,修改原始的C程序,得到另一个C程序,通常以i作为文件扩展名。

  • 编译阶段:编译器(ccl) 将文本文件hello.i翻译成文本文件hello.s,它包含一个汇编语言程序。

  • 汇编阶段:汇编器(as)将hello.s翻译成机器语言指令,把这些指令打包成一种叫做可重定位目标程序的格式,并将结果保存在目标文件hello.o中。

  • 链接阶段:hello程序调用了printf函数,printf函数存在于一个名为prntf.o的单独的一个预编译好了的目标文件中,而这个文件必须以某种方式合并到我们的hello.o程序中。链接器(ld) 就负责处理这种合并。结果得到hello文件,它是一个可执行目标文件,可以被加载到内存中,由系统执行。

应用软件和系统软件

应用软件

  • 办公软件
  • 多媒体软件
  • 辅助设计软件
  • 企业应用软件
  • 网络应用软件
  • 安全防范软件
  • 科学计算类软件
  • 工程设计类程序
  • 数据统计与处理程序
  • 娱乐休闲软件
  • 数据库系统

系统软件

  • 操作系统
  • 网络服务程序【连接程序】
  • 语言处理程序【编译程序】
  • 数据库管理系统
  • 软件系统
  • 分布式系统
  • 程序设计语言
  • 其他实用程序和工具

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 17:54:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 17:54:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 17:54:06       82 阅读
  4. Python语言-面向对象

    2024-04-13 17:54:06       91 阅读

热门阅读

  1. 蓝桥杯省赛最后一天冲刺!!

    2024-04-13 17:54:06       35 阅读
  2. 在页面上清除多行数据

    2024-04-13 17:54:06       33 阅读
  3. isinstance函数详解

    2024-04-13 17:54:06       33 阅读
  4. LeetCode 17.电话号码的字母组合

    2024-04-13 17:54:06       35 阅读
  5. ActiveMQ消息中间件面试专题

    2024-04-13 17:54:06       33 阅读
  6. Android 自定义解析html标签

    2024-04-13 17:54:06       37 阅读
  7. golang 协程题目

    2024-04-13 17:54:06       39 阅读
  8. 自用-常用词

    2024-04-13 17:54:06       25 阅读