计算机组成原理笔记-第一章-计算机系统概述

基于里昂学长的计算机组成原理课程

笔记目录

第一章-计算机系统概述
第二章-数据的表示和运算
第三章-存储系统
第四章-指令系统
第五章-中央处理器
第六章-总线
第七章-输入输出系统

第一章 计算机系统概述

1.2 计算机系统层次结构

1.2.1 计算机硬件

冯诺依曼在研究EDVAC机时提出了存储程序的概念。所谓的存储程序,就是我们将某个问题的程序提前存储到计算机中,我们只需要给计算机一些输入,告诉它具体求解的数据即可。

计算机五大功能部件分别为运算器、存储器、输入设备、输出设备以及控制器

image-20250529164351474

  • 输入设备

从计算机外部向计算机内部传送信息的装置。

  • 输出设备

将计算机处理的结果以人们所能接受的形式或其他系统所要求的信息形式输出。

  • 运算器

计算机的执行部件,用于进行算术运算和逻辑运算。

  • 控制器

计算机的指挥系统,负责协调输入、输出、存储设备以及运算器协同工作。

  • 存储器

分为主存储器(内存)和辅助存储器(外存),主要功能是存放程序和数据。

  • 外存
    优点是容量大,断电后依然可以保存数据。
    缺点是运算器无法直接取得数据,必须把数据调入内存后才能使用,访问速度慢。
  • 内存
    优点是访问速度快,可以直接和运算器交换信息,一般只存储正在运行的程序和待处理的数据。
    缺点在于容量小,断电无法保存数据。

内存是由一个个存储单元构成的。每个存储单元包含若干存储元件,每个存储元件存储一位二进制数,这串数被称为存储字,位数成为存储字长,存储字长可以是1B或是字节的偶数倍。

每个存储单元都是有地址的,想从存储单元中获取数据时,必须给出内存地址。

image-20250529165027789

准备访问某个存储单元的数据时需要将地址存在MAR(存储器地址寄存器)中,然后把数据暂存在MDR(存储器数据寄存器)中。

MAR用于存储地址、寻址,MDR用于寄存数据。MDR位数通常等于存储字长。虽然逻辑上属于主存,但是现代计算机中也集成到了CPU中。

1.2.2 冯诺依曼计算机

  1. 采用存储程序工作方式
  2. 由五大部件组成
  3. 指令和数据以同等地位存放在存储器中,按地址访问。
  4. 内部采用二进制表示指令和数据
  5. 指令由操作码和地址码组成,操作码表示操作的类型,地址码用来表示操作数在存储器中的位置

早期计算机以运算器为中心,每次输入数据都要运算器参与,会浪费很多运算时间。现代计算机变为以存储器为中心,可以让IO设备直接与存储器交换数据,提高整体的效率。

一般将运算器和控制器集成到同一个芯片上,成为中央处理器(CPU),CPU和主存储器共同构成主机,其他硬件装置成为外部设备

CPU的核心部件:

  • 算术逻辑单元(ALU) 用来完成逻辑运算。
  • 控制单元(CU) 用来解释存储器中的指令,并发出操作指令
    IO设备也受CU控制。
  • 程序计数器(PC) 用来存放当前欲执行指令的地址,具有自动+1的功能,可以自动形成下一条指令的地址。
  • 指令寄存器(IR) 用来存放当前指令,其内容来自主存的MDR。
  • 通用寄存器组(GPRs) 主要用来暂存一些ALU运算需要的数据。

1.2.3 存储程序工作方式

“存储程序”工作方式规定,程序执行前要将程序所含的指令和数据送入主存,一旦程序被启动执行,就无需操作人员的干预,自动完成指令的取出和执行任务。一个程序的执行就是周而复始地执行一条一条指令的过程。

每条指令的执行过程:

  1. 从主存储器中取指令 根据PC取指令 (PC)=0 (PC)->MAR (M)->MDR (MDR)->IR
  2. 对指令进行译码 一般一条指令由操作码(OP)和操作数构成,操作数可以是数据或者内存地址,操作码说明这条指令是干什么用的。
  3. 计算下条指令地址 PC+1
  4. 取操作数并执行 IR识别出OP后,会送给CU分析,地址操作数会被送给MAR。CU分析OP后,将MDR中的数据读入到GPRs中。ALU对数据进行运算。
  5. 将结果送回存储器 ALU将结果放回MDR,主存根据MAR中的地址,将数据存储到对应的存储单元
  6. (PC)->MAR,开启新一轮指令执行

image-20250529172810648

1.2.4 从源程序到可执行文件(可能出选择)

  • 机器语言

机器语言是最低级的语言,由计算机硬件直接执行,由一系列二进制代码组成。

  • 汇编语言

汇编语言是一种低级语言,他使用助记符来代表机器语言的指令。汇编语言同样需要针对特定的硬件架构,但是比机器语言可读性更高。每次写完的汇编程序都需要先翻译成机器语言才行,这个过程叫做汇编

  • 高级编程语言

随着技术发展,对代码要求没有那么高了,高级编程语言开始出现,底层硬件对程序员透明。高级语言编写的程序需要通过编译器或解释器转换为机器语言。

源程序翻译成可执行目标文件的四个阶段:

  1. 预处理阶段:预处理器对源程序中以#开头的命令进行处理。
  2. 编译阶段:编译器对预处理后的源程序进行编译,生成一个汇编语言源程序。汇编程序的每一条语句都以一种文本格式描述了一条低级语言机器指令。
  3. 汇编阶段:汇编器将汇编语言源程序翻译成机器语言指令,把这些指令打包成一个可重定位目标文件(一种二进制文件)。
  4. 链接阶段:链接器将多个可重定位目标文件和库函数所在的可重定位目标文件合并,生成可执行文件。最终生成的可执行文件被保存在磁盘上。

image-20250529175821797

翻译程序有以下三类:

  1. 汇编程序(汇编器):将汇编程序翻译成机器语言程序。
  2. 解释程序(解释器):将源程序中的语句按执行顺序逐条翻译成机器指令并立即执行。
  3. 编译程序(编译器):将高级语言程序翻译成汇编语言或机器语言程序。

1.2.5 软件硬件以及层次结构

没有安装任何软件的计算机成为裸机。完整的计算机系统应该包含硬件设备软件系统

软件按功能分类可分为系统软件应用软件

  • 系统软件用来管理整个计算机系统,通常包括操作系统、语言处理程序(汇编程序、编译程序等等)、数据库管理系统、分布式软件系统、网络软件系统、标准库服务、服务性程序等等。
  • 应用软件是用户为解决某个应用领域的各类问题编写的程序,例如QQ等。

一台软、硬件组成的通用计算机系统可以按功能划分出多级层次结构。

image-20250529181041385

在高级语言层之上还可以有应用层。层次之间关系紧密,下层是上层的基础,上层是下层的扩展。

软件和硬件之间的界面就是指令集体系结构(ISA),ISA定义了一台计算机可以执行的所有指令的集合。ISA是指软件能感知到的部分,也称软件可见部分

系统程序员是设计和开发系统软件的程序员。应用程序员是用高级编程语言编写应用的程序员。

1.3 计算机的性能指标

1.3.1 与CPU相关的性能指标

寄存器和存储单元都是存储器件,可以保存一串二进制序列,这串序列叫做,长度叫做字长,单位为bit

  • 机器字

机器字一般指CPU内部与整数运算相关的寄存器中保存的字。机器字长反映了计算机能直接处理的二进制数据的位数,它决定了计算机的运算精度。字长越长,数的表示范围越大,计算精度越高。

  • 指令字

指令字指一个指令中包含的二进制序列。

  • 存储字

存储字指一个存储单元里保存的二进制序列。

  • 字节

字节(B)是一个长度单位,1B=8bit。字节是机器字长、存储字长、指令字长的最小单位

指令字长一般取存储字长的整数倍,如果指令字长等于存储字长的两倍,则需要两次访存才能取出一条指令。

早起的存储字长一般和指令字长、机器字长相等,因此一次访问就可以取出一条指令或一个数据。随着计算机发展,指令、机器字长都可变,但必须都是字节的整数倍

时钟期、主频

CU需要一个时钟来在不同时间发出相应的控制信号,保证各个部件按序工作。

  • 时钟周期

时钟周期也叫CPU时钟周期,是计算机中最基本的、最小的时间单位。在一个时钟周期中,CPU仅完成一个最基本的动作。

  • 主频

主频也叫CPU时钟频率。即时钟周期的倒数,是衡量机器速度的重要参数。单位为Hz。对同一个型号的计算机,主频越高,完成一个指令执行步骤的时间就越短,执行指令的速度就越快。

CPI与CPU执行时间
  • CPI(Clock Cycle Per Instruction)

执行一条命令所需的时钟周期数。不同指令需要的时钟周期数不同,所以对于一个程序或机器来说,CPI指的是所有指令执行所需的平均时钟周期数(平均CPI)。CPI与时钟频率无关,时钟频率只影响该指令的执行速度。

  • CPU执行时间

运行一个特定程序所花费的时间。

$$CPU执行时间=CPU时钟周期数时钟周期=(指令条数CPI)*时钟周期$$

$$=CPU时钟周期数/主频=(指令条数*CPI)/主频$$

CPU的性能取决于三个要素:主频CPI指令条数,他们是相互制约的。

image-20250529191145210

[!Caution]

比较运行速度时要保证指令集一样,否则无法确定哪台机器快。

IPS、MIPS、IPC
  • IPS(Instruction Per Second)

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

  • MIPS(Million Instructions Per Second)

每秒执行多少百万条指令

$$MIPS=指令条数/(指令执行时间10^6)=主频/(CPI10^6)=IPS/(10^6)$$

  • IPC(Instructions Per Circle)

每个时钟周期执行多少条指令,是CPI的倒数。

1.3.2 与存储器相关的性能指标

$$
K=2^{10}\
M=2^{10}2^{10}=KK\
G=2^{10}2^{10}2^{10}=KKK\
T=2^{10}2^{10}2^{10}2^{10}=KKKK
$$

[!TIP]

描述存储容量、文件大小的时候KMGT通常用2的幂次表示,再描述速率、频率时,通常用10的幂次表示,前者用大写的K,后者用小写的K,但其他前缀均为大写。

  • 主存容量

主存容量指主存储器所能存储信息的最大容量,通常以字节来衡量,也可以用字数*字长来表示存储容量。其中,MAR的位数反映了存储单元的个数,MDR的位数反映了存储单元的字长。

例子:MAR为16位->表示$2^{16}=65536$,此存储体有65536个存储单元,MDR为32位->表示存储容量为64K*32位。

1.3.3 其他性能指标

数据通路带宽

数据通路贷款是指数据总线一次能并行传送信息的位数。

[!TIP]

各个子系统通过数据总线连接形成的数据传送路径成为数据通路。

衡量浮点数运算速度的指标

浮点数运算与科学运算更相关。

  • FLOPS(Float-point Operations Per Second):每秒执行多少次浮点运算。
  • MFLOPS(Million FLOPS):每秒执行多少百万($10^{6}$)次浮点运算。
  • GFLOPS(Giga FLOPS):每秒执行多少十亿($10^{9}$)次浮点运算。
  • TFLOPS(Tera FLOPS):每秒执行多少万亿($10^{12}$)次浮点运算。
  • PFLOPS(Peta FLOPS):每秒执行多少千万亿($10^{15}$)次浮点运算。
  • EFLOPS(Exa FLOPS):每秒执行多少百京($10^{18}$)次浮点运算。(1京=1亿亿=$10^{16}$)
  • ZFLOPS(Zetta FLOPS):每秒执行多少十万京($10^{21}$)次浮点运算。
吞吐量

一般可以和吞吐率互换使用,指系统在单位时间内处理请求的数量。提高吞吐量可以更快地完成任务或处理更多的数据。

响应时间

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

基准测试程序(Benchmarks)

基准测试程序用于测试和预测计算机系统的性能,可以做参考。

当前文章:计算机组成原理笔记-第一章-计算机系统概述
作者:ikuyo
暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇