【计算机系统概论】

2021-08-18 16:17:21 浏览数 (1)

1. 概论

1.1 问题引入

等我学完了再回来解释

1.2 计算机系统基本组成与基本功能

冯诺依曼机 核心思想:存储程序 工作方式: 任何要计算机完成的工作都要先被编写成程序,然后将程序和原始 数据送入主存并启动执行。一旦程序被启动,计算机应能在不需操 作人员干预下,自动完成逐条取出指令和执行指令的任务。 主要思想:

  • 计算机有控制器、运算器、存储器、输入、输出五个基本部分。
    • 存储器:存放数据和指令,两者形式上没有区别,但是计算机应当能够进行区分(计算机根据时间来区分数据和指令)
    • 控制器:能自动取出指令来执行
    • 运算器:能进行加减乘除、逻辑运算和附加运算。
    • 输入输出:操作人员的通信方式
  • 内部以二进制表示指令和数据。指令由操作码和地址码组成。操作码指出操作类型,地址码指出操作数地址。一串指令组成程序。
  • 采用存储程序方式工作。

冯诺依曼结构模型

早期这些部件都是分散方式连接,现在都是用总线方式连接

现代计算机结构模型

CPU:中央处理器 PC:程序计数器 MAR:存储器地址寄存器 ALU:算术逻辑部件 IR:指令寄存器 MDR:存储器数据寄存器 GPRs:通用寄存器组(早期的累加器)

假设从存储器中装载数据到寄存器: 先到IR指令寄存器中,对存储器发起“读”操作,获取数据 数据到MDR,到总线 写到GPRS中

厨房-CPU,厨师-控制器,盘-GPRs,锅灶等-ALU ,架子-存储器 做菜前:

  • 原材料(数据)和菜谱(指令)按序放在厨房外的架子上(存储器),每个架子有编号(存储单元地址)
  • 菜谱信息:原料位置、做法、做好的菜放哪等
  • (数据和指令事先存放在存储器中,每条指令和每个数据都有地址, 指令按序存放,指令由OP、ADDR字段组成,程序起始地址置PC)

开始做菜:

  • 从5号架子上取菜谱(根据PC取指令
  • 看菜谱(指令译码
  • 从架上或盘中取原材料(取操作数
  • 开始炒菜(指令执行
  • 装盘送桌(回写结果
  • 算出下一个菜谱所在架子号6=5 1(修改PC值
  • 继续做下一道菜(执行下一条指令

实际上取指令之后PC就 了

指令和数据:

  • 程序启动前,指令和数据都存放在存储器中,形式上没有差别, 都是0/1序列
  • 采用”存储程序“工作方式:
    • 程序由指令组成,程序被启动后,计算机能自动取出一条条的指令执行,在执行过程中无需人的干预。
  • 指令执行过程中,指令和数据被从存储器取到CPU,存放在CPU内的寄存器中,指令在IR中,数据在GPR中。
  • 指令中需给出的信息:
    • 操作性质(操作码)
    • 源操作数1 或/和源操作数2 (立即数、寄存器编号、存储地址)
    • 目的操作数地址 (寄存器编号、存储地址)
  • 存储地址的描述与操作数的数据结构有关!

编译程序(Complier):将高级语言源程序转换为机器级目 标程序,执行时只要启动目标程序即可

解释程序(Interpreter ):将高级语言语句逐条翻译成机器 指令并立即执行,不生成目标文件。


1.3 指令执行

微操作:最小操作单元,如取指令


HelloWorld.c的运行

  1. 红色:键盘读入./hello,到达cpu,得到执行结果后放入主存储器中
  2. 蓝色:hello可执行文件运行
  3. 绿色:从主存储器中拿到数据,在cpu中解释,得到结果最终在显示屏显示

1.4 计算机系统层次

第一代程序设计语言:机器语言

第二代程序设计语言:汇编语言

第三代程序设计语言:如何做 第四代程序设计语言:做什么

语言处理系统包括: 各种语言处理程序(如编译、汇编、 链接)、 运行时系统(如库 函数,调试、优化等功能)

操作系统包括人机交互界面、 提供服务功能的内核例程。


  • 最终用户工作在由应用程序提供的最上面的抽象层
  • 系统管理员 工作在由操作系统提供的抽象层
  • 应用程序员 工作在由语言处理系统(主要有编译器和汇编器)的抽象层
  • 语言处理系统 建立在操作系统之上
  • 系统程序员 (实现系统软件)工作在ISA层次,必须对ISA非常了解
  • 编译器和汇编器的目标程序由机器级代码组成
  • 操作系统通过指令直接对硬件进行编程控制
  • ISA处于软件和硬件的交界面(接口),ISA是对硬件的抽象,所有软件功能都建立在 ISA之上

ISA是最重要的层次

ISA指Instruction Set Architecture,即指令集体系结构,有时简称为指令系统

ISA是一种规约(Specification),它规定了如何使用硬件

  • 可执行的指令的集合,包括指令格式、操作种类以及每种操作对应的操作数的相应规定;
  • 指令可以接受的操作数的类型
  • 操作数所能存放的寄存器组的结构,包括每个寄存器的名称、编号、 长度和用途;
  • 操作数所能存放的存储空间的大小和编址方式;
  • 操作数在存储空间存放时按照大端还是小端方式存放;
  • 指令获取操作数的方式,即寻址方式
  • 指令执行过程的控制方式,包括程序计数器(PC)、条件码定义等。

ISA在通用计算机系统中是必不可少的一个抽象层,没有它,软件无法使用计算机硬件! 没有它,一台计算机不能称为“通用计算机”

ISA和计算机组成(Organization,即MicroArchitecture)是何关系? ISA是一种规范,是计算机组成的抽象


计算机系统核心层之间的关联

ISA:硬件抽象接口 ABI:应用程序二进制接口

1.5 计算机性能评价

评价指标:

  • CPU执行时间
  • CPI
  • MIPS
  • FLOPS
  • 专用的基准测试程序

CPU执行时间也称为CPU时间(CPU time),是指在程序运行过程中,CPU真正用于程序执行的时间。它不包括因为等待I/O操作完成所需的时间,也不包括CPU执行其他程序所需的时间。对用户来说,能直接感觉到的只能是响应时间,而不可能是CPU执行时间CPU 执行时间被进一步分为两部分:一部分是用来运行用户程序代码的时间,称为用户CPU时间(user CPU time);另一部分是为了执行用户程序而不得不运行的一些操作系统代码所花费的时间,称为系统CPU时间(system CPU time)。

CPI是衡量CPU性能的一种基本参数,它表示执行一条指令所需的平均时钟周期个数。

计算公式: CPU执行时间=CPU时钟周期数÷程序个数×时钟周期

类比:一个人吃完所有苹果需要耗费的时间=苹果个数/人数×吃一个苹果需要耗费的时间 从公式上理解为:CPU执行一个程序需要耗费的时间。 如果程序个数没有给出,一般为1;有些公式上默认程序个数就是1,将其省略。

CPU执行时间=CPU时钟周期数÷程序个数÷时钟频率

因为周期的倒数为频率

CPU执行时间=指令条数÷程序个数×CPI×时钟周期

指令条数÷程序个数=单个程序的指令条数 单个程序的指令条数×CPI=CPU时钟周期数 时钟周期数×时钟周期<==>速度×时间=路程<==>CPU执行时间

可以得到 CPI=时钟周期数÷指令条数

也就是指令的平均耗费周期个数

MIPS=指令个数/CPU时间×百万

无论是MIPS还是CPI都不一定可靠。

FLOPS(单位):

  • MFLOPS:每秒2的20次方次运算
  • GFLOPS:每秒2的30次方次运算
  • TFLOPS:每秒2的40次方次运算
  • PFLOPS:每秒2的50次方次运算
  • EFLOPS:每秒2的60次方次运算

基准测试程序


阿姆达尔定律

阿木达尔定律是计算机系统设计方面重要的定量原则之一。

基本思想:对系统的某部分进行更新所带来的系统性能的改进程度,取决于该部分被使用的频率或其执行时间占总执行时间的比例。

小结论:如果某个部分运算时间占比<=80%,那么不可能通过优化该部分,实现整体程序性能提高5倍。

1.6 小结

  1. “并行”成为重要主题,软硬件贯通是关键
  2. 在程序(源代码)与程序的执行机制之间建立关联
  1. 内容概要

2. 数据的机器级表示和处理

计算机

  1. 如何获得数据
  2. 如何表示数据
  3. 如何处理数据

2.1 引入

浮点数的尾数:小数点后面的数字

请记住这个时钟模型,能帮助我们理解补码与无符号数的转换(此处就用12个机器数来理解) 有符号时:0点为0,6点为最大值,7点为-1,11点为最小值 无符号时:就是我们平时用的12时刻时钟。

2.2 有符号数(补码)与无符号数的转换

符号说明: U:unsigned,无符号数 T: 补码(应该是True number 真值的意思) 2:to的谐音,表示转换

U2T表示无符号数转为无符号数; T2U表示无符号数转为有符号数; w表示位数(例题都是用的32位机器,因此w为32)

公式:

如何理解公式: 2^(w-1)是T的最大值,如果U小于该值,那么显然U和T都相等;如果大于该值,此时对于T来说该值不存在,就得减去模值(表现为往负半轴累减)

如何理解公式:U是没有负数的,如果T<0,那么就得加上模数, T>=0时,T的取值范围是U的子集,那么显然T=U。

小结

如果不死记公式,可以这么做。

总结特点:

  • 无符号数和有符号数表示数的个数一样
  • 无符号数只有正数,由于表示数的个数一样,因此它能表示更多的正数
  • 有符号数还包括负数,因此它的正数最大值要小得多(最大正数为2^(w-1),w为机器位数,比如在32位机器,w为32)

现在通过上述3个特点,就能够实现无符号数和有符号数的转换。

代码语言:javascript复制
如果是U2T,U只有正数,如果该数大于T的正数范围(2^(w-1)),显然在T中就超出了,那就得减去模数
如果是T2U,T有负数而U没有,如果想把负数转为U,那么就得加上U
其他情况,U=T

此外,甚至上面的文字都可以不记住,只需要记住两张图加一句话。 模数=2^机器位 无符号钟

有符号钟:

操作方法: 无符号数与有符号数之间的转换,相同的地方照抄,不同的地方(越界的地方)±模数

例题

为了应付考试,需要把C90中标红的那个记住,这个特殊值是无符号数,会将与其进行运算的有符号数自动解析为无符号数。

2.3 (二进制的)科学计数法与浮点数

由于二进制的基固定,因此只需要对尾数和指数编码保存。

IEEE754编码标准

小数点前面固定为1,xxxx就是尾数,Exponent就是阶码 阶码偏置常数为-126~127,全0和全1用来表示特殊值

S:符号位,1负0正 阶码:阶码=指数 偏置常数 阶码是一种移码,什么是移码? 把X±一个常数的编码方式就叫移码,这个常数称为偏置常数。

尾数:小数点后的数字,1.xxxx

例题:二进制到十进制

通常用十六进制数保存科学计数法的浮点数:BEE00000H 转为二进制为:10111110111000000000000000000000 最高位为符号位,1~8为为阶码,9~31位为尾数 运算如下图

125-127用的是阶码=指数 偏置常数这个公式; 还可以这么做: 算出来为-1.11×2-2=-0.0111=-(2-2 2-3 2-4)=-0.4375

例题:十进制到二进制

十进制数-12.75 ⇒ 转为二进制数

  • 正数12:二进制1100
  • 小数.75:二进制.11 (注意按小数方法换算)

⇒ 1100.11

⇒ 1.10011×2^3

  • 尾数为10011
  • 指数为3,阶码=指数+偏置常数=3 127=128 2=1000 0010

⇒ 负号:最高位为-1

如图所示

0 : 全零 -0 : 符号位为1,其他为零 正无穷:符号位和尾数为0,阶码全1 负无穷:尾数为0,符号位和阶码全1 NaN(非数):阶码255,尾数不为零

定点:小数点默认固定,比如4位机器1111定点整数为-7,(小数点在最后),定点小数为-0.875(小数定点在符号位后)

2.4 非数值机器表示

逻辑值:0/1

西文字符:ASCII

汉字以及国际字符:

比特bit: 计算机最小单位 字节byte: 最小可寻址单位 字word:描述数据类型宽度(一个字两个字节) 字长:描述数据通路宽度(一次性处理数据长度)

IA-32机器,字16位,字长32位

假设 int 12345678 小端存放如下, 因为一个内存单元==》最小可寻址单位==》一个字节 int 4字节==》两个数一个内存单元

大端存储与小端存储

小端存储:数据的低位存放在地址的低位 如1234,存放形式

代码语言:javascript复制
	1
	2
	3
	4

大端存储:数据的高位存放在地址的低位 如1234,存放形式

代码语言:javascript复制
	4
	3
	2
	1

指令的大小端存储: 指令mov总是在最低位 地址总是在次低位 数据服从大端、小端规律

MSB和LSB存放着数据的寻址地址,相当于一个停止位,数据读取到MSB/LSB就停止此次读取。

2.5 数据的表示和运算

一切计算都规整到ALU中。

移位运算:左移可能溢出,右移损失精度(将1移出则损失精度)。 无符号数:逻辑左移,逻辑右移,左移最高位为1,则溢出 有符号数:算数左移,算数右移,左移最高位变了(符号位),则溢出

位扩展: 无符号数,前面补零 带符号整数,前面补符

截断:丢弃高位

概念集

系统软件:简化编程过程,并使硬件资源被有效利用

  • 操作系统(硬件资源管理、用户接口)
  • 语言处理程序(翻译程序、链接器、debug…)
    • 翻译程序:
      • 汇编程序:汇编语言源程序–>机器语言目标程序
      • 编译程序:高级语言源程序–>机器级目标程序
      • 解释程序:将高级语言解释成机器指令并立即执行
  • 其他(磁盘碎片整理、备份程序)

应用软件:非系统软件的,常见的软件。


系列机(family machine) 系列机是指一个厂家生产的具有相同系统结构、不同组成和实现的一系列不同型号的机 器。它应在指令系统、数据格式、字符编码、中断系统、输人/输出控制方式等方面保持金 一,从而保证软件的兼容性。

兼容性(compatibility) 兼容是一个广泛的概念,主要表示一种“互换”特性,包括软件兼容、硬件兼容等。

软件兼容(software compatibility) 软件兼容是指在某种机型上开发的软件可以不加修改地在另外的机型上正确运行。一般 在同一系列机内的软件是兼容的,有向上兼容和向下兼容两种形式。向上兼容是指高档机型 上的程序能在低档机型上运行,向下兼容是指低档机型上的程序能在高档机型上运行,一般 系列机满足向下兼容性。因为系列机中高档机的指令系统包含了低档机中的所有指令。

硬件兼容(hardware compatibility) 硬件兼容也就是设备或部件兼容,是指设备或部件<以不加改动地用于多种计算机。这 要求设备或部件符合某种标准化设计。

小规模集成电路(Small Scale Integrated circuit, SSI) 集成度小于100的集成电路。

中规模集成电路(Medium Scale Integrated circuit, MSI) 集成度在100到1000的集成电路。

大规模集成电路(Large Scale Integrated circuit, LSI) 集成度在1000到10万的集成电路。

超大规模集成电路(Very Large Scale Integrated circuit, VLSI) 集成度在10万到1000万的集成电路。

极大规模集成电路(Ultra Large Scale Integrated circuit, ULSI) 集成度在1000万以上的集成电路。

摩尔定律(Moore’s law) 1965年,摩尔预测:以后每年将缩小硅片中形成晶体管电路的细线尺寸的10%,芯片 制造商能够每3年发布新一代的芯片,其晶体管数为上一代的4倍。后来摩尔定律被表述 成:由于集成电路技术的不断改进,每18〜24个月,集成电路芯片上集成的晶体管数将翻 一番,速度将提高一倍,而价格将降低一半。

通用电子计算机(general-purpose electronic computer) 通用电子计算机是和专用电子计算机对应的,专用电子计算机只能专门用于某种应用, 而通用电子计算机从定义上来说可以解决任何问题,只要这个问题可以用程序来表示。通用电子计算机也被称为完备的图灵机。

**算术逻辑单元(Arithmetic Logic Unit,简称 ALU) 对数据进行算术运算和逻辑运算处理的部件:

数据通路(data path) 数据通路指的是指令在执行过程中数据所经过的部件以及部件之间的连接线路,主要由 ALU和一组寄存器、存储器、总线等组成。国内许多教科书中提到的运算器即是运算数据 通路。

**控制器(control unit) 控制器也称为控制单元或控制部件。其作用是对指令进行译码,将译码结果和状态/标 志信号、时序信号等进行组合,产生各种操作控制信号。这些操作控制信号被送到CPU内 部或通过总线送到主存或I/O模块。送到CPU内部的控制信号用于控制CPU内部数据通路 的执行,送到主存或I/O模块的控制信号用于控制CPU和主存或CPU和I/O模块之间的信 息交换。控制单元是整个CPU的指挥控制中心,通过规定各部件在何时做什么动作来控制 数据的流动,完成指令的执行。

**中央处理器(Central Processing Unit, CPU) 中央处理器是计算机中最重要的部件之一,主要由运算器和控制器组成。其内部结构归 纳起来可以分为控制部件、运算部件和存储部件三大部分,它们相互协调,共同完成对指令 的执行。

存储器(Memory, Storage) 存储器用于存储程序和数据,分为内存储器(简称内存)和外存储器(简称外存)。内存 存取速度快,但容量小、价格贵;外存容量大、价格低,但存取速度慢。

**内存(memory) 从字面上来说,内存是内部存储器,应该包括主存(Main Memory,简称MM)和高速 缓存(cache),但是,因为早期计算机中没有高速缓存,因而传统意义上的内存就是主存, 所以,目前也并不区分内存和主存。内存位于CPU之外,用来存放已被启动执行的程序及 所用的数据,包括ROM芯片和RAM芯片组成的相应ROM存储区和RAM存储区两部分。

**外存(storage) 外存储器主要有磁盘存储器、磁带存储器和光盘存储器等。磁盘是最常用的外存储器, 通常它分为软盘和硬盘两类。容量极大、价格便宜的磁带机和光盘组等称为海量存储器,常 用作数据备份,也称为辅存(Accessorial Memory,简称AM)或二级存储器(Secondary Memory,简称 SM)。

系统软件(system software) 系统软件是介于计算机硬件与应用程序之间的各种软件,它与具体应用关系不大。系统 软件包括操作系统(如Windows)、语言处理系统(如C语言编译器)、数据库管理系统(如 Oracle)和各类实用程序(如磁盘碎片整理程序、备份程序)。

应用软件(application software) 应用软件是指针对使用者的某种应用目的所编写的软件,例如办公自动化软件、互联网应用软件、多媒体处理软件、股票分析软件、游戏软件、管理信息系统等。

操作系统(Operating System,简称OS) 操作系统是计算机系统中负责支撑应用程序运行环境以及用户操作环境的系统软件,其 目的是使计算机系统所有资源最大限度地发挥作用,并为用户提供方便的、有效的、友善的 服务界面。操作系统是一个庞大的管理控制程序,大致包括五个方面的管理功能:进程与处 理器管理、作业管理、存储管理、设备管理和文件管理。目前比较流行的操作系统主要有两 个家族:类UNIX家族和微软的Windows家族。

最终用户(end user) 使用应用程序完成特定任务的计算机用户称为最终用户。大多数计算机使用者都属于 最终用户。例如使用炒股软件的股民、玩计算机游戏的人、进行会计电算化处理的人 员等。

系统管理员(system administrator) 指利用操作系统提供的功能对系统进行配置、管理和维护以建立高效合理的系统环境供 计算机用户使用的操作人员。其职责主要包括安装、配置和维护系统的硬件和软件,建立和 管理用户账户,升级软件,备份和恢复业务系统及数据等。

应用程序员(application programmer) 指使用高级编程语言编制应用软件的程序员。

系统程序员(system programmer) 指设计和开发系统软件的程序员,如开发操作系统1编译器、数据库管理系统等系统软 件的程序员。

高级语言(high-level programming language) 高级语言也称为高级编程语言或算法语言,是面向问题和算法的描述语言。用这种语 言编写程序时,程序员不必了解实际机器的结构和指令系统等细节,而是通过一种比较自然 的、直接的方式来描述问题和算法。

汇编语言(assembly language) 汇编语言是一种面向实际机器结构的低级语言,是机器语言的符号表示,与机器语言 一一对应。因此,汇编语言程序员必须对机器的结构和指令系统等细节非常清楚。

机器语言(machine language) 机器语言是指直接用二进制代码(指令)表示的语言。用户必须用二进制代码来编写机 器语言程序。因此,机器语言程序员必须对机器的结构和指令系统等细节非常清楚。

指令集(instruction set) 指令集是一台计算机能够执行的所有机器指令的集合。指令按功能可以分为运算指令、 移位指令、传送指令、串指令、程序控制指令等类型。

**指令集体系结构(Instruction Set Architecture, ISA) 指令集体系结构是计算机硬件与系统软件之间的接口,指机器语言程序员或操作系统、 编译器、解释器设计人员所看到的计算机功能特性和概念性结构。其核心部分是指令系统, 同时还包禽数据类喂和数据格式定义、寄存器组织、I/O空间的编址和数据传输方式、中断 结构、计算机状态的定义和切换、存储保护等。ISA设计得好坏直接决定了计算机的性能和 成本。

**透明性(transparency) 由于计算机系统釆用了层次化结构进行设计和组织,因此面向不同的硬件或软件层面进 行工作的人员或用户所“看到”的计算机是不一样的。也就是说,计算机组织方式或系统结 构中的一部分对某些用户而言是“看不到”的或称为“透明”的。例如,对于高级语言程序 员来说,指令格式、数据格式、机器结构、指令和数据的存取方式等都是透明的;而对于机 器语言程序员和汇编语言程序员来说,指令格式、机器结构、数据格式等则不是透明的。

源程序(source program) 编译程序、解释程序和汇编程序统称为语言处理程序。各种语言处理程序处理的对象称 为源程序,用高级(算法)语言或汇编语言编写,如C语言源程序、Java语言源程序、汇编 语言源程序等。

**目标程序(object program) 编译程序和汇编程序对源程序进行翻译得到的结果程序称为目标程序或目标代码 (object code)0

**编译程序(compiler) 编译程序也称为编译器,是用来将高级语言源程序翻译成汇编语言或机器语言目标代码 的程序。

**解释程序(interpreter) 解释程序将源程序的一条语句翻译成对应的机器语言目标代码,并立即执行,然后翻译 下一条源程序语句并执行,直至所有源程序中的语句全部被翻译并执行完。因此,解释程序 并不输出目标程序,而是直接输出源程序的执行结果。

**汇编程序(assembler) 汇编程序也是一种语言翻译程序,它把用汇编语言写的源程序翻译为机器语言目标程 序。汇编程序和汇编语言是两个不同的概念,不能混为一谈。

**响应时间(response time) 响应时间也称为执行时间(execution time)或等待时间(latency time),是指从作业提交开始到作业完成的时间。一般一个程序的响应时间除了 CPU执行程序包含的指令执行时间外,还包括等待I/O的时间、系统运行其他用户程序所用的时间以及操作系统运行的时 间等。

**吞吐率(throughput) 在有些场合下,吞吐率也称为带宽(bandwkith),是指在一定的时间内所完成的工作量。

**CPU 执行时间(CPU execution time) CPU执行时间也称为CPU时间(CPU time),是指在程序运行过程中,CPU真正用于程 序执行的时间。它不包括因为等待I/O操作完成所需的时间,也不包括CPU执行其他稈序听 需的时间。对用户来说,能直接感觉到的只能是响应时间,而不可能是CPU执行时间CPU 执行时间被进一步分为两部分:一部分是用来运行用户程序代码的时间,称为用户CPU时 间(user CPU time);另一部分是为了执行用户程序而不得不运行的一些操作系统代码所花费 的时间,称为系统CPU时间(system CPU time)。

系统性能(system performance) 通常用没有任何其他负载的情况下程序的响应时间来表示系统性能。 CPU 性能(CPU performance)通常以用户CPU时间来表示CPU性能。

**时钟周期(clock cycle, tick, clock tick, clock) 所有计算机执行指令的过程都是分成若干步骤和相应的动作来完成的,每一步动作都要’ 有相应的控制信号进行控制,这些控制信号何时发岀、作用时间多长,都要有相应的定时信 号进行同步。因此,CPU必须能够获得用于同步的时钟定时信号,也就是CPU的主脉冲信 号,其宽度称为时钟周期。

时钟频率(clock rate,主频) CPU的主频就是CPU的主脉冲时钟信号的频率,是CPU时钟周期的倒数。

**CPI (Cycle Per Instruction) CPI是衡量CPU性能的一种基本参数,它表示执行一条指令所需的平均时钟周期个数。

基准测试程序(benchmark) 基准测试程序是专门用来进行性能评价的一组程序,这些程序能够很好地反映机器在运 行实际负载时的性能。可以在不同机器上运行相同的基准测试程序来比较不同机器的运行时 间,从而比较其性能。

SPEC基准测试程序集(SPEC benchmark) 系统性能评价标准 SPEC ( System Performance Evaluation Cooperative)是一个应用广泛 而且全面的基准程序集,用于对CPU性能进行评测,分为整数程序集SPECint和浮点数程 序集SPECfp等。

SPEC 比值(SPEC ratio) SPEC比值是将测试程序在Sun SPARCstation上运行时的执行时间除以该程序在测试机 器上的执行时间所得到的比值。比值越大,机器的性能越好。

**阿姆代尔定律(Amdahl’s law) 阿姆代尔定律的主要含义是指系统优化某部件所获得的系统性能的改善程度,取决于该 部件被使用的频率或所占总执行时间的比例。该定律很好地诠释了改善“系统瓶颈”性能的 重要性。

MIPS (Million Instructions Per Second) MIPS用来衡量单位时间内执行指令的条数,具体是指每秒执行多少百万条指令。

加法指令执行速度(add instruction execution speed) 最早用来衡量计算机性能的指标是完成单个运算(如加法运算)指令所需要的时间。当 时大多数指令的执行时间是相同的,并且加法指令能反映乘、除等运算,而其他指令的时间 也大体与加法指令相当,故加法指令的速度有一定的代表性。加法指令执行速度的计量单位 为KIPS (每秒千条指令)和MIPS (每秒百万条指令)。

平均指令执行时间(average instruction execution time) 以平均指令执行时间衡量性能的方法也称为等效指令速度法或Gibson混合法。随着计 算机的发展,不同指令所需的执行时间差别越来越大,人们就根据等效指令速度法通过统计 各类指令在程序中所占比例进行折算设某类指令i在程序中所占比例为w,,执行时间为t,, 则等效指令的执行时间为:T=Wi x t| w2 X t2 … wn x t„ (n为指令种类数)。如果指令执行时间用时钟周期数来衡量,那么平均指令执行时间就是平均CPI。对平均指令执行时间求倒数 能够得到平均MIPS值。

峰值 MIPS (peak MIPS) 选取一组指令组合,使得平均CPI最小,由此得到的MIPS就是峰值MIPS。有些制造 商经常将峰值MIPS直接当作MIPS,因此,实际上的性能要比标称的性能差。

相对 MIPS (relative MIPS) 根据一种公认的参考机型来定义相应的MIPS值,其值的含义是相对于参考机型MIPS 的多少倍。

MFLOPS (Million floating-point operations per second) MFLOPS是计算机浮点数运算速度的一种计量单位,表示每秒执行多少百万次浮点数运 算。它是基于所完成的单精度浮点数的操作次数而不是指令数来衡量的。类似的速度单位还 有 GFLOPS(1G=109)、TFLOPS(1T=1012)、PFLOPS(1P=1015), EFLOPS(1E=10〗8)等。

汇编指令:用助记符(操作码、寄存器)和标号(位置)来表示的指令(与机器指令一一对应) 指令

  • 操作码 操作数(机器指令为二进制,汇编指令为符号)
  • 可以描述:取、两个数运算、根据运算结果判断是否转义执行

0 人点赞