文章目录
- @[toc]
- 零、写在前面
- 一、计算机系统概述
- 1.1 计算机系统的组成
- 1.2 计算机的发展*
- 1.3 计算机硬件
- 1.4 计算机软件
- 1.5 计算机系统的层次结构
- 1.6 计算机的基本工作原理
- 1.7 计算机系统的性能指标
文章目录
- @[toc]
- 零、写在前面
- 一、计算机系统概述
- 1.1 计算机系统的组成
- 1.2 计算机的发展*
- 1.3 计算机硬件
- 1.4 计算机软件
- 1.5 计算机系统的层次结构
- 1.6 计算机的基本工作原理
- 1.7 计算机系统的性能指标
零、写在前面
根据 408 计组内容,对 《计算机组成与设计:硬件/软件接口》关于计算机系统概述部分的补充。
主要就是个别零散的概念,性能指标那块跟大黑书一样。
一、计算机系统概述
1.1 计算机系统的组成

计算机系统由软件与硬件组成。
- 软件
- 系统软件:为管理整个计算机系统所编制的程序
- 操作系统 数据库管理系统 网络系统
- 标准程序库 语言处理程序 服务程序
- 应用软件:为实现用户应用所编制的各种程序
- 科学计算 数据处理
- 过程控制 事务管理
- 系统软件:为管理整个计算机系统所编制的程序
- 硬件
- 主机:
- 外设:
软件运行于硬件之上,计算机系统性能的好坏,取决于硬件和软件功能的总和。
练习
B
1.2 计算机的发展*
电子数字计算机的发展历程
-
1936年,英国数学家艾伦·图灵在其论文 论可计算数及其在判定问题上的应用 中,提出一种具备读写、存储等功能的通用计算机模型,被称为图灵机。
- 图灵机由三部分组成:纸带,读写头,控制装置

-
1938年,美国数学家 信息论创始人 香农,在其而士学位论文 继电器和开关电路的符号分析 中,深刻地揭示了布尔代数
与开关电路之间的联系,为数字电路设计与分析奠定了坚实的数学基础。这项开创性的研究为计算机科学、电子工程与信息技术的发展提供了重要的理论支持,对于现代科技的进步产生了深远的影响。- 世界上第一台真正意义上的电子数字计算机,是在1937-1942年间,由美国艾奥瓦州立大学物理系副教授Atanasoff和物理研究生Berry合作研制而成的 阿塔纳索夫-贝瑞计算机(Atanasoff-BerryComputer,简称ABC)
- 1937年开始设计,1942年成功测试
- 使用了300个电子管
- 不可编程,仅用于求解线性方程组
-
1946年,莫克利和艾克特基于ABC计算机的设计思想,得到了美国军方的支持和冯·诺依曼(John von Neumann)等人的帮助,成功研制出了真正实用的电子数字计算机ENIAC(Electronic Numerical Integrator and Computer)
- 莫克利和艾克特制造完成 ENIAC 后,就立刻为其申请并获得了美国专利,就是这个专利导致了ABC和ENIAC之间长期的世界上第一台电子数字计算机 的头衔之争。
- 1973年美国明尼苏达地区法院给出了正式宣判,推翻并吊销了莫克利的专利,现在 国际计算机界公认的事实是第一台电子数字计算机的真正发明人是 阿塔纳索夫(Atanasoff)
- 不过408大纲删除了计算机的发展的相关内容,所以不必纠结。

- 随着时间推移:
- 体积越小
- 功耗越低
- 可靠性越高
- 速度越快
摩尔定律
- 集成电路上可容纳的晶体管数目大约每经过18到24个月便会增加一倍。
- 换言之,处理器的性能大约每两年翻一倍,同时价格下降为之前的一半。

软件发展:

当前计算机发展趋势
- 更微型化
- 低功耗
- 较高性能
- 多用途
- 更巨型化
- 超高速
- 并行处理
- 智能化
- 目前,我国最快的超级计算机是神威太湖之光,每秒可进行9.3亿亿次浮点运算
1.3 计算机硬件
1945年,数学家冯·诺依曼(von Neumann)在研究EDVAC(Electronic Discrete VariableAutomatic Computer),离散变量
自动电子计算机)机时提出了**“存储程序”的思想**。以该思想为基础所设计的各类计算机通称为冯·诺依曼机。
冯·诺依曼计算机的结构

- 采用十进制,没有内存储器
- 需要通过旋钮、开关和接插线的不同位置来表示程序
- 在ENIAC上设置一个实用程序,往往需要几天甚至几周的时间。如非必要,使用者很少愿意修改它。
- 因此,尽管ENIAC是通用的,却总在一段时间内只专用于某个问题(比如弹道计算),它的通用价值被大大削弱。
- 如果频繁地设置不同程序,机器在很大一部分时间里会处于设置程序过程而无法运行,它的高速性能又被大大浪费了。

- 冯·诺依曼计算机的主要特点如下:
- 构成程序的指令和数据均采用二进制表示。
- 指令和数据存放在存储器中,按地址访问,
- 指令在存储器中按顺序存放。一般情况下,指令是顺序执行的。
- 指令由操作码和地址码组成:
- 操作码用来表示执行何种操作。
- 地址码用来表示操作数在存储器中的位置。
- 机器以运算器为中心,输入/输出设备与存储器间的数据传送通过运算器完成。
- 计算机硬件由运算器、控制器、存储器、输入设备/输出设备5大部件组成。
- 冯·诺伊曼机以运算器为中心
现代计算机的结构(以存储器为中心):

- 可以让输入/输出(I/O)设备直接与存储器交换数据,以提高整体效率。
- 输入设备:将人们熟悉的信息形式转换为计算机能够识别的信息形式,常见的有键盘、鼠标、扫描仪、摄像头等。
- 输出设备:将计算机运算结果转换为人们熟悉的信息形式,常见的有显示器、打印机等。
- 存储器
- 主存储器:用于存放程序和数据,可以直接与CPU交换信息,又称为内存储器,简称内存或主存。
- 辅助存储器:用于帮助主存存储更多的信息。又称为外部存储器,简称外存或辅存。辅存中的信息必须调入主存后,才能被CPU访问。
- 运算器
- 核心为算术逻辑单元ALU(Arithmetic Logic Unit),主要功能如下:
- 算术运算:加、减、乘、除
- 逻辑运算:与、或、非、异或等
- 控制器:核心为控制单元CU(Control Unit),主要功能如下:
- 用于解释存储器中的指令,并发出各种操作命令来执行指令。
- I/O设备也受CU控制,用于完成相应的输入/输出操作。

练习
C
D
地址码用来表示操作数在存储器中的位置
D,还有逻辑运算
**
**A
B,CPU 和 主存储器
C,直接给出还访存干嘛……
1.4 计算机软件
计算机软件可分为:
- 应用软件:为解决某个应用领域的相关问题而编制的程序。
- 科学计算程序
- 工程设计程序
- 数据处理程序
- 企业管理程序
- 自动控制程序
- 系统软件:为了用户能够高效、安全地使用和管理计算机硬件资源以及为开发和运行应用软件而编制的各种软件。
- 操作系统
- 数据库管理系统
- 语言处理程序(例如汇编程序、编译程序、解释程序等)
- 服务性程序(例如诊断程序、排错程序等)



- 随着硬件和软件的不断发展,人们又创造出了一类程序,称为操作系统(属于系统软件)
- 操作系统提供了在汇编语言和高级语言的使用和实现过程中所需的某些基本操作。
- 操作系统负责控制并管理计算机系统全部硬件资源(例如CPU、内存和外部设备)和软件资源(例如编译程序、应用程序等)。
- 操作系统为用户使用计算机系统提供了极为方便的条件。
- 随着计算机应用领域的逐渐扩大,还相应地出现了其他各类系统软件(例如数据库管理系统、网络系统等)以及多种多样应用软件。
- 随着软件的进一步发展,将会出现更高级的计算机语言,其发展方向是标准化、积木化、产品化以及智能化,最终向自然语言发展,它们能够自动生成程序。
C
D
A
D
A
C
值得注意的是,编译原理里面说的目标代码生成指的就是汇编,而且本题说的是高级语言程序进行转换,机器级目标代码就是汇编代码,所以是编译程序。
A
1.5 计算机系统的层次结构
- 计算机是一个非常复杂的系统,为了简化对计算机系统的研究和实现,可采用分层思想将计算机系统划分成一个层次结构的系统。
- 系统中的每一层都向其上层提供一个简洁和抽象的接口
- 每一层的实现细节对其上层而言都是“看不见”的,也就是透明的。
- 计算机解决问题的过程就是层次结构中的各层逐层转换的过程。
- 学习过或正在学习计算机网络课程的同学,对上面的叙述应该并不陌生,因为在计算机网络课程的第一章,计算机网络体系结构的分层思想就是这一章的重点和难点。
- 与计算机网络体系结构的分层不同,计算机系统的分层方式,目前并没有统一的标准,本课程介绍一种将计算机系统划分成六个抽象层的层次结构。


软件和硬件的逻辑功能等价性
- 在特定条件下,用软件实现的逻辑功能也可以通过硬件电路来实现,反之亦然。
- 对于一些特定的计算或控制任务,可以选择将其使用软件编程来实现,也可以选择设计专用硬件电路来实现,而两者的结果将在功能上等效。
- 软件和硬件的逻辑功能等价性是计算机科学中的一个重要概念,也是计算机体系结构和工程中的基本原则之一
- 当选择在软件层面实现某些逻辑功能时,这通常意味着使用通用处理器(例如CPU)来执行程序;
- 而当选择在硬件层面实现这些逻辑功能时,这通常意味着使用专用的硬件电路,例如**现场可编程门阵列FPGA(Field Programmable Gate Array)或专用集成电路ASIC(Application Specific Integrated Circuit)**技术。

当研制一台计算机时,设计者必须明确分配每一级的任务,确定哪些功能需要使用硬件实现,哪些功能需要使用软件实现。这是由设计目标、技术水平、性价比等综合因素决定的。
练习
C
B,上层功能依赖于下层接口提供的服务
D
C
1.6 计算机的基本工作原理
计算机硬件组成的细化



- ACC 表示累加器
- (ACC)表示累加器中的内容
- MQ 表示乘商寄存器
- (MQ)表示乘商寄存器中的内容
- X表示操作数寄存器
- (X)表示操作数寄存器中的内容
假设累加器ACC中已存有前一时刻的运算结果,并作为下述运算中的一个操作数。
-
加法操作过程
-
(M) -> X ;取出存放在主存中地址为M的存储单元中的内容(M)(加数),送到操作数寄存器X中 (ACC) + (X) -> ACC ; 将累加器ACC中的内容(ACC)(被加数)与操作数寄存器X中的内容(X)(加数)相加,结果(和)保留在累加器ACC中
-
-
减法操作过程
-
(M) -> X ;取出存放在主存中地址为M的存储单元中的内容(M)(减数),送到操作数寄存器X中 (ACC) - (X) -> ACC ;将累加器ACC中的内容(ACC)(被减数)与操作数寄存器X中的内容(X)(减数)相减,结果(差)保留在累加器ACC中
-
-
乘法操作过程
-
(M) -> MQ(ACC) ; 取出存放在主存中地址为M的存储单元中的内容(M)(乘数),送到乘商寄存器MQ中 (ACC) -> X ; 将累加器ACC中的内容(ACC)(被乘数),送到操作数寄存器X中 (X) x (MQ) -> ACC // MQ ; 将操作数寄存器X中的内容(X)(被乘数)与乘商寄存器MQ中的内容(MQ)(乘数)相乘,结果(积)的高位保留在累加器ACC中,低位保留在乘商寄存器MQ中
-
-
除法操作过程
-
(M) -> X ; 取出存放在主存中地址为M的存储单元中的内容(M)(除数),送到操作数寄存器X中 (ACC) / (X) -> MQ ; 将累加器ACC中的内容(ACC)(被除数)除以操作数寄存器X中的内容(X)(除数),结果(商)保留在乘商寄存器MQ中,余数保留在累加器ACC中。
-
-
存储体由很多个存储单元组成
- 每个存储单元由若干个存储元件组成
-

-
每个存储元件能存储一位二进制数“0”或“1”
-
- 一个存储单元中可存储一串二进制信息,称这串二进制信息为一个存储字,这串二进制信息的位数称为存储字长(可以是8位、16位或32位等)。
- 每个存储单元由若干个存储元件组成
-
给每个存储单元都赋予一个编号,称为存储单元的地址
-
存储器地址寄存器MAR,用来存放欲访问的存储单元的地址
- MAR的位数(长度),决定了存储单元的数量
-
存储器数据寄存器MDR,用来存放从存储体的某个存储单元取出的信息或者准备往某个存储单元存入的信息。
- MDR的位数(长度),与存储字长相等。
-
主存(内存)的这种按存储单元的地址来实现对其写入和读取的存取操作,需要在CPU中的控制器的控制下进行。

- 控制器是计算机的神经中枢,由它指挥各部件自动、协调地工作。
- 控制从主存中读取一条指令,称为取指过程(阶段)。
- 对指令进行分析,指出该指令要完成何种操作,并按寻址特征指明操作数的地址,称为分析过程(阶段)
- 根据指令的操作码和操作数所在的地址完成某种操作,称为执行过程(阶段)
- 程序计数器PC用来存放当前欲执行指令的地址
- PC与MAR之间有一条直接通路
- PC自动形成下一条指令的地址(“自动加1”功能)
- 指令寄存器IR用来存放当前的指令
- IR的内容来自MDR
- IR中的操作码(用OP(IR)表示)会送至CU(用OP(IR)→CU表示),用来分析指令
- IR中的地址码(用Ad(IR)表示)作为操作数的地址送至MAR(用Ad(IR)→MAR表示),用来从内存中取操作数
- 控制单元CU用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象。
- 随着硬件技术的发展,内存都制成大规模集成电路芯片而将MAR和MDR集成到了CPU芯片中
练习
D
A
C
B
IR 放的是实际指令,PC 放的是指令地址
A
注意C说的是存储字长
C
2^16 B = 64KB
1.7 计算机系统的性能指标
计算机系统的性能指标是用来衡量计算机系统在各种操作和任务中的工作效率、执行速度以及处理能力的标准。
计算机系统的性能指标可以帮助人们评估计算机系统的整体表现,从而更好地了解系统在不同方面的优势和限制。
计算机系统的性能与软件硬件都有关系。
- 硬件与计算机系统性能的关系:
- 硬件是构建计算机系统的物理组件(例如CPU、内存、外部设备等)。
- 硬件对于计算机系统的性能有着重要影响,因为它决定了系统的计算能力、数据传输速率和存储容量。
- CPU的时钟频率决定了CPU每秒钟可以执行的指令数量。
- 内存带宽会影响数据的读写速率。
- 软件与计算机系统性能的关系:
- 软件包括用于控制、管理、应用计算机系统的各类系统软件和应用软件。
- 软件的优化可以显著影响计算机系统的性能因为合理的算法和代码实现可以更有效地利用硬件资源。
- 操作系统的调度算法会影响多任务处理的效率,从而影响系统的响应时间。
- 在图像处理任务中,优化的软件算法可以减轻CPU和内存的负担,提高图形处理速度。
- 软件层面的并行计算可以更好地利用多核处理器,提高吞吐量。
- 综上所述,计算机系统的性能指标涵盖了硬件和软件两个层面,它们之间密切相关。优化硬件可以提供更强大的计算和传输能力,而优化软件可以更有效地利用这些硬件资源,从而共同实现更好的系统性能。正确的硬件选择可以为软件提供更好的执行环境,反之亦然
计算机硬件的相关性能指标
- 基本性能指标
- 机器字长
- 机器字长是指CPU一次能够处理的二进制数据的位数,也就是构成二进制数据的比特(bit,简写为b)数量。
- 机器字长与CPU内部用于整数运算的ALU的位数以及通用寄存器的宽度相等。
- 机器字长对计算机系统性能的主要影响如下:
- 字长越长,数的表示范围就越大、精度也越高。
- 字长越长,请计算精度也越高。
- 字长还会影响计算速度。
- 随着硬件技术的发展,计算机的字长已经从早期的8位逐渐增加到16位、32位、64位甚至更高
- 机器字长是指CPU一次能够处理的二进制数据的位数,也就是构成二进制数据的比特(bit,简写为b)数量。
- 主存容量
-
主存容量是指主存储器(内存)能够存储的最大信息量。
-
假设主存包含M个存储单元,每个存储单元可存储N个二进制位,可以通过下式计算主存容量:
-

-
增加主存(内存)容量可以减少程序运行期间对辅存(外存)的访问,由于访问内存的速度远大于访问外存的速度,因此可以提高程序的执行速度,进而提高计算机系统的性能。
-
- 吞吐量
- 吞吐量是指计算机系统在单位时间内能够处理的信息量。
- 影响吞吐量的主要因素如下:
- CPU的处理能力。
- 内存(主存)的访问速度。
- 外存(辅存,例如硬盘)的访问速度。
- 响应时间
- 响应时间是指从向计算机系统提交作业开始,到系统完成作业为止所需要的时间。

- 机器字长
练习
C
D
D
2^len = cnt
B
机器字长是指CPU一次能够处理的二进制数据的位数,ALU 和 通用寄存器属于 CPU
- 与运算速度相关的性能指标
- CPU时钟频率和时钟周期
- 计算机执行一条指令的过程:取指 -> 分析 -> 执行
- 上述过程涉及多个步骤,每个步骤都需要特定的控制信号进行控制。
- 控制信号的发出时机、持续时间等都需要相应的定时信号来调控。
- CPU时钟信号是一个基本定时信号,它是一种固定频率的脉冲信号,用于驱动计算机内部各组件协调工作。
- 这种脉冲信号的频率被称为CPU时钟频率(Clock Rate),基本单位为赫兹(Hz)
- CPU时钟周期(Clock Cycle 或 Clock Tick,也可简称为clock 或 tick) 是 CPU时钟频率的倒数,基本单位为秒(s)
- CPI
- 一条指令的CPI:该指令执行所需要的时钟周期数量。
- 一类指令(例如算术运算类指令)的CPI:构成该类指令的所有指令执行所需要时钟周期数量的平均值
- 一个程序的CPI:构成该程序的所有指令执行所需要时钟周期数量的平均值。
- CPI = 程序执行所需时钟周期数量 / 程序所包含的指令数量
- 如果知道某个程序中共有 n 类不同类型的指令、每类指令的CPI(用CPIi表示)、每类指令的数量在程序所包含的指令数量中所占的比例(用Pi表示),则该程序的CPI可用下式计算:
- CPI = Σ CPI × Pi
- CPU执行时间
- CPU执行时间是指真正用于用户程序的执行时间,而不包括为执行用户程序而花费在操作系统、访问主存(内存)、访问辅存(外存)、访问外部设备上的时间。
- CPU执行时间 = 程序执行所需时钟周期数量 x 时钟周期 = 程序执行所需时钟周期数量 / 时钟频率
- CPI = 程序执行所需时钟周期数量 / 程序所包含的指令数量
- CPU执行时间 = (CPI x 程序所包含的指令数量) x 时钟周期 = (CPI x 程序所包含的指令数量) / 时钟频率
- CPU执行时间是指真正用于用户程序的执行时间,而不包括为执行用户程序而花费在操作系统、访问主存(内存)、访问辅存(外存)、访问外部设备上的时间。
- IPC
- IPC(Instructions Per cycle)的意思是每个时钟周期能够执行的指令数量。
- IPC是CPI的倒数,它与CPU架构、指令集、指令流水线技术等密切相关。
- 由于指令流水线技术以及多核技术的发展,目前IPC的值已经可以大于1
- MIPS
- MIPS(Million Instructions Per Second)的意思是每秒执行多少百万条指令
- MIPS = (程序是所包含的指令数量 / CPU执行时间) / 10^6
- CPU执行时间 = (CPI x 程序所包含的指令数量) / 时钟频率
- => MIPS = (时钟频率 / CPI) / 10^6
- 用MIPS对不同的机器进行性能比较有时是不准确的,主要原因如下:
- 不同机器的指令集不同,并且指令的功能也不同,在某种机器上的某一条指令的功能,可能在另一种机器上需要用多条指令来实现。
- 不同机器的CPI和时钟周期也不同,因而同一条指令在不同机器上所用的时间也不同。
- MIPS(Million Instructions Per Second)的意思是每秒执行多少百万条指令
- MFLOPS
- MFLOPS(Milion Floating-Point Operations Per Second)的意思是每秒执行多少百万次浮点运算
- MFLOPS = (浮点运算次数 / 测试程序的执行时间) / 10^6
- 相较于MFLOPS,衡量每秒执行浮点运算的次数还有以下更大的单位(需要记忆):
- GFLOPS(GigaFLOPS)的意思是每秒执行多少十亿次浮点运算
- TFLOPS(TeraFLOPS)的意思是每秒执行多少万亿次浮点运算
- PFLOPS(PetaFLOPS)的意思是每秒执行多少干万亿次浮点运算
- EFLOPS(ExaFLOPS)的意思是每秒执行多少百亿亿次浮点运算
- ZFLOPS(ZettaFLOPs)的意思是每秒执行多少十万亿亿次浮点运算
- MFLOPS不能全面反映计算机系统的性能。MFLOPS仅反映浮点运算速度,其值与所使用的测试程序相关不同测试程序中包含的浮点运算量不同,测试得到的结果也不相同。
- MFLOPS(Milion Floating-Point Operations Per Second)的意思是每秒执行多少百万次浮点运算
- CPU时钟频率和时钟周期
使用基准程序进行性能评估
- 基准程序(Benchmark)是一组特定的程序,专门用于评测计算机的性能。
- 这些程序能够有效地模拟计算机在处理实际任务时的表现。
- 在不同计算机上运行同样的基准程序,通过比较各计算机运行基准程序的时间,从而评测它们各自的性能。
- 不同基准程序的评测重点不同,例如CPU性能、图形性能、存储性能、浮点数计算性能、并行计算性能等。
- 目前国际上流行的基准程序主要有 SPEC、Linpack、Dhrystone、Whetstone、NPB等。
值得注意的是,衡量计算机系统性能是一项比较复杂的任务,很难仅凭借单一指标进行精确衡量。上述一些衡量计算机性能的指标之间也不是完全独立的,改变其中一项指标可能会影响到其他指标。
练习
D
D
D
90 / 1.5 + 10 = 70s
CPI = 1 + 0.6 + 0.4 + 1 = 3
1.2G / 3 / 1M = 400
故选C
CPI0 * Cnt * Cycle = 20
CPI * 1.2 * 0.7 Cnt * Cycle = 16.8
选D
(CPI0 * Cnt / f0) / (CPI1 * Cnt / f1) = 2.4 / 1.5 = 1.6
选C
0.8 的 指令的CPI 为 1
0.2 的 指令的CPI 为10
则 平均CPI = 0.8 + 2 = 2.8
CPUTime = 10000 * 2.8 / 1G * 1M = 28μs
选 A
1.5 / 1.2 = 1.25 GIPS
5E5 * 1.2 / 1.5G *1000 = 6E8 / 1.5E9 = 0.4ms
选C





































