Ch1: Computer Abstractions 计算机系统概述 第1讲:计算机系统概述 第2讲:计算机性能评价 2018年11月22日星期四
第一讲 计算机系统概述 计算机发展简史 IAS通用计算机模型机:冯.诺依曼结构 IBM360系列机:引入兼容性(系列机)概念 DEC PDP-8:引入总线结构 计算机系统的组成 计算机硬件:CPU+MM+I/O 计算机软件:系统软件+应用软件 计算机层次结构 计算机硬件和软件的接口:指令系统 计算机软件如何在硬件上执行 本课程主要内容
计算机的功能和特点 什么是计算机? 计算机是一种能对数字化信息进行自动、高速运算的通用处理装置。 计算机的功能: 数据运算、数据存储、数据传送、控制 计算机的特点: 高速:高速元器件和“存储程序”工作方式带来高速性 通用:体现在处理对象和应用领域没有限制 准确:精度足够的算术运算带来准确性 智能 :逻辑推理能力带智能性
回顾:计算机发展简史 第一代:真空管(电子管Vacuum Tube )1946~57年 46年诞生第1台电子计算机 ENIAC 体积庞大,重30吨,有18000多个真空管组成,5000次加法/秒。 采用十进制表示/运算,其存储器由20个累加器组成,每个累加器可存10位十进制数,每一位数由10个真空管表示。 采用手动编程,通过设置开关和插拔电缆来实现。 冯·诺依曼机(Von Neumann Machine) 45年冯·诺依曼(图灵也同时)提出“存储程序(Stored-program)”思想,并于46年开始设计“存储程序”计算机。 “存储程序”思想: 将事先编好的程序和原始数据送入主存中,然后启动执行。计算机应能在不需操作人员干预下,自动完成逐条取出指令和执行指令的任务。 SKIP
The first general-purpose computer - ENIAC The First Generation: Vacuum Tube Computers (1946 - 1957) ENICA 18000个电子管,1500个继电器,重30吨。有20个寄存器,每个10位十进制数(100个电子管),每一位十进制数用10个电子管表示,看十个电子管中哪个亮表示几。有6000个开关。靠设置开关、连接插头和插座来编程。 The first general-purpose computer - ENIAC
ENIAC----Non von Neumann Model 有20个寄存器,每个10位十进制数,有6000个开关。靠设置开关、连接插头和插座来编程。 BACK
冯·诺依曼结构的主要思想 计算机应由运算器、控制器、存储器、输入设备和输出设备五个基本部件组成。 各基本部件的功能是: 存储器不仅能存放数据,而且也能存放指令,形式上两者没有区别,但计算机应能区分数据还是指令; 控制器应能自动执行指令; 运算器应能进行加/减/乘/除四种基本算术运算,并且也能进行一些逻辑运算和附加运算; 操作人员可以通过输入设备、输出设备和主机进行通信。 内部以二进制表示指令和数据。每条指令由操作码和地址码两部分组成。操作码指出操作类型,地址码指出操作数的地址。由一串指令组成程序。 采用“存储程序”工作方式。
计算机发展简史 第二代:晶体管 1958~64年 元器件:逻辑元件采用晶体管,内存由磁芯构成,外存为磁鼓与磁带。 特点:变址,浮点运算,多路存储器,I/O处理机,中央交换结构(非总线结构)。 软件:使用高级语言,提供了系统软件。 代表机种:IBM 7094 (scientific)、1401 (business)和 DEC PDP-1 晶体管: Transistor DEC PDP-1
计算机发展简史 第三代:SSI/MSI 1965~71年 元器件:逻辑元件与主存储器均由集成电路(IC)实现 。 特点:微程序控制,Cache,虚拟存储器,流水线等。 代表机种:IBM 360和DEC PDP-8(大/巨型机与小型机同时发展 ) 巨型机(Supercomputer):Cray-1 大型机(Mainframe):IBM360系列 小型机(Minicomputer):DEC PDP-8 问题:为什么可用集成电路实现计算机? 问题:计算机的基本功能是什么? 问题:这些基本功能如何实现? Cray-1
IBM System/360系列计算机 IBM公司于1964年研制成功 引入了“兼容机”(“系列机”)概念 兼容机的特征 : 相同的或相似的指令集 相同或相似的操作系统 更高的速度 更多的I/O端口数 更大的内存容量 更高的价格 IBM 360 问题1:引入“兼容机”有什么好处? 问题2:实现“系列机”的关键是什么? 低端机指令集是高端机的一个子集,称为“向后兼容”。功能相同,而性能不同。 问题1:引入“兼容机”有什么好处? 问题2:实现“系列机”的关键是什么?
DEC公司的PDP-8机 同在64年出现。与IBM 360相比,价格更低、更小巧,因而 被称为小型机(Minicomputer) PDP-8“创造了小型机的概念,并使之成为数十亿美元的工 业”,使DEC成为了最大的小型机制造商。 主要特点:首次采用总线结构。 Omnibus总线包含了96个独立的信号通道,用以传送控制 、地址和数据信号。这种结构具有高度的灵活性,允许将模 块插入总线以形成各种配置。
PDP–8/E计算机系统框图 问题:“总线结构”有什么好处? 具有高度的灵活性,允许将模块插入总线以形成各种配置 节省器件,体积小,价格便宜
计算机发展简史 (第四代:LSI/VLSI/ULSI 1972~至今) 微处理器和半导体存储器的技术发展迅猛,微型计算机出现。 使计算机以办公设备和个人电脑的方式走向普通用户。 半导体存储器 70年Fairchild公司生产出第一个相对大容量半导体存储器 74年位价格低于磁芯的半导体存储器出现,并快速下跌 从70年起,存储密度呈4倍提高(几乎是每3年)。 微处理器 微处理器芯片密度不断增加,使CPU中所有元件放在一块芯片上成为可能。71年开发出第一个微处理器芯片4004。 特点:共享存储器,分布式存储器及大规模并行处理系统 有的书上称第四代是VLSI,从80年代开始(如本书和Andraw编的《结构化计算机组成》),有的书称第四代是LSI,从72年开始,有的又分成LSI时代和VLSI时代。 以后几代(标准、意见不一) (注:有称第四代是VLSI,从80年代开始;也有称第四代是LSI,从72年开始;有的又分成LSI时代和VLSI时代)
打开计算机来看看
PC主板 CPU插座 PCI总线插槽 内存条
解剖计算机 个人计算机由主机和外设组成 主机中包含多个电路板 每个电路板中有十几个集成电路 每个集成电路中有十几个模块 每个门电路实现基本的逻辑运算 所有信息都用二进制编码表示 每个模块中有上千万个单元 每个单元中有十几个门电路
Integrated Circuits manufacturing process 圆形薄片 / 硅抛光片 (6/8/12寸,厚度不足1mm) 单晶硅锭 不合格的用磁浆点上记号 IC小片 / 芯片 “晶圆” / 大芯片 Ingot wafer die chip Please click “how chips are made” on the course website to see the steps in details. Question asked by a student: why is the wafer a round shape, not a square shape? 封装:将芯片固定在塑胶或陶瓷基座上,把芯片上蚀刻出来的引线与基座底部伸出的引脚连接,盖上盖板并封焊成芯片 约需400多道工序!
Pentium4处理器内部布局
Hardware/Software Interface temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) 1000 1100 0100 1111 0000 0000 0000 0000 1000 1100 0101 0000 0000 0000 0000 0100 1010 1100 0101 0000 0000 0000 0000 0000 1010 1100 0100 1111 0000 0000 0000 0100 … , EXTop=1,ALUSelA=1,ALUSelB=11,ALUop=add, IorD=1,Read,MemtoReg=1,RegWr=1,......
Hardware/Software Interface(界面) 软件 硬件 软件和硬件的界面: ISA(Instruction Set Architecture ) 指令集体系结构 机器语言由指令代码构成,能被硬件直接执行。
Software System software(系统软件) - 简化编程过程,使硬件资源被有效利用 操作系统(Operating System):硬件资源管理,用户接口 语言处理系统:翻译程序+ Linker, Debug, Loader, etc … 翻译程序(Translator)有三类: 汇编程序(Assembler):将汇编语言源程序翻译为机器语言目标程序文件。 编译程序(Complier):将高级语言源程序翻译为汇编语言或机器语言目标程序文件。 解释程序(Interpreter ):将高级语言语句逐条翻译成机器指令并立即执行。不生成目标文件。 其他实用程序: 如:磁盘碎片整理程序、备份程序等 Application software(应用软件) - 解决具体应用问题/完成具体应用任务 各类媒体处理程序:Word/ Image/ Graphics/… 管理信息系统 (MIS) Game, …
Computer Hierarchy(计算机系统层次) 应用程序员Application Programmer 最终用户End User 系统管理员 System Administrator Application 系统程序员System Programmer Operating Compiler System Assembler Instruction Set Architecture CPU MM I/O Digital Design Circuit Design ° 上图给出的是计算机系统的层次结构 指令系统(即ISA)是软/硬件的交界面 Merits of Abstraction: easy understanding, easy designing, compatibility Difference between Architecture and Organization. Computer Architecture: 1)how the software looks at the hardware? 2) functional, abstract view of hardware reflected in software. 每一层用户看到的计算机是不一样的。最终用户工作在应用程序层面,看到的是应用程序虚拟机,只知道如何使用相应的应用程序;应用程序开发人员在程序设计语言层面工作,看到的是高级语言虚拟机,只要会使用各种程序设计语言编程;系统维护人员工作在操作系统层面,看到的是操作系统虚拟机,只要知道系统中的命令和工具如何使用;系统程序员(OS和编译器开发人员)工作在计算机逻辑结构层面,看到的是汇编语言虚拟机;而汇编语言就是一台计算机指令系统的符号化表示,计算机的功能和性能就由机器的指令系统集中体现出来。 °不同用户工作在不同层次,所看到的计算机不一样 °中间阴影部分就是本课程主要内容,处于最核心的部分!
PC:程序计数器;ALU:算术/逻辑单元;USB:通用串行总线 一个典型系统的硬件组成 CPU MM Input/Output PC:程序计数器;ALU:算术/逻辑单元;USB:通用串行总线
计算机能够直接识别hello.c源程序吗? 一个典型程序的转换处理过程 经典的“ hello.c ”C-源程序 hello.c的ASCII文本表示 1 #include <stdio.h> 2 3 int main() 4 { 5 printf("hello, world\n"); 6 } # i n c l u d e <sp> < s t d i o . 35 105 110 99 108 117 100 101 32 60 115 116 100 105 111 46 h > \n \n i n t <sp> m a i n ( ) \n { 104 62 10 10 105 110 116 32 109 97 105 110 40 41 10 123 \n <sp> <sp> <sp> <sp> p r i n t f ( " h e l 10 32 32 32 32 112 114 105 110 116 102 40 34 104 101 108 l o , <sp> w o r l d \ n " ) ; \n } 108 111 44 32 119 111 114 108 100 92 110 34 41 59 10 125 程序的功能是: 输出“hello,world” 计算机能够直接识别hello.c源程序吗? 不能,需要转换为机器语言代码! 即:编译
Hello程序的数据流动过程 unix> ./hello hello, world unix> “hello” [Enter] Red:shell命令行处理 Blue:可执行文件加载 Cyan:hello程序执行过程 “hello” “hello,world/n” “hello” Hello程序被启动后,计算机的动作过程如下: Shell程序读取字符串“./hello”中各字符到寄存器,然后存放到主存; “Enter”键输入后,操作系统内核(载入程序)根据主存中的字符串“hello”到磁盘上找到特定的hello目标文件,将其包含的指令代码和数据(“hello, world\n”)从磁盘读到主存,并将控制权转交给hello程序,即将hello程序的第一条指令的地址送到PC中;处理器从hello主程序的指令代码开始执行;Hello程序将“hello, world\n”串中的字节从主存读到寄存器,再从寄存器输出到显示器上。 “hello,world/n” Hello可执行文件 数据经常在各存储部件间传送。故现代计算机大多采用“缓存”技术! 所有过程都是在CPU执行指令所产生的控制信号的作用下进行的。
该课程的主要学习内容 信息(指令和数据)在计算机中如何表示? 指令系统如何设计? 如何设计高性能CPU? 如何设计总线BUS? 如何设计存储器系统? 如何设计I/O? 信息(指令和数据)在计算机中如何表示? 指令系统如何设计?
Course Outline 性能评价(Performance measurement) 计算机算术(Arithmetic for Computer) 数据的表示和运算 存储器层次结构(Memory Hierarchies ) 指令集体系结构(Instruction Set Architecture) CPU设计 数据通路 (Data path) 和控制器(Control Unit) 流水线技术 (Pipelining) 系统总线 (System Buses) 输入/输出系统(Input / Output system)
第二讲 计算机性能评价 制造成本(manufacturing cost) 衡量计算机性能的基本指标 响应时间(response time) 执行时间(execution Time)、等待时间(latency) throughput (吞吐量) 带宽(bandwidth) 计算机性能测量 指令执行速度(MIPS、MFLOPS) 基准程序( Benchmark)
回顾: Integrated Circuits Costs --- manufacturing process 在考察性能前,先考察成本! 圆形薄片 / 硅抛光片 (6/8/12寸,厚度不足1mm) 单晶硅锭 不合格的用磁浆点上记号 IC小片 / 芯片 “晶圆” / 大芯片 Ingot wafer die chip Please click “how chips are made” on the course website to see the steps in details. Question asked by a student: why is the wafer a round shape, not a square shape? 封装:将芯片固定在塑胶或陶瓷基座上,把芯片上蚀刻出来的引线与基座底部伸出的引脚连接,盖上盖板并封焊成芯片 约需400多道工序!
Integrated Circuits Costs 公式 Die cost = Dies per wafer = Die Yield = 芯片成本与以下因素有关: 圆晶价格 圆晶所含小片数 小片合格率 This slide gives some formulae to calculate the die cost. 小片合格率 1 ( 1 + ( Defect _ per _ area x Die _ area )) 2 由此看出:每个圆晶片上的小片数、集成电路成本都与芯片面积有关!
计算机性能的基本评价指标 ° Time to do the task 响应时间(response time) °计算机有两种不同的性能 ° Time to do the task 响应时间(response time) 执行时间(execution time) 等待时间或时延(latency) ° Tasks per day, hour, sec, ns. .. 吞吐率(throughput) 带宽(bandwidth) ° 基本的性能评价标准是:CPU的执行时间 不同应用场合用户关心的性能不同: 要求吞吐率高的场合,例如: 多媒体应用(音/视频播放要流畅) 要求响应时间短的场合:例如: 事务处理系统(存/取款的速度要快) 要求吞吐率高且响应时间短的场合: ATM、文件服务器、Web服务器等 " X is n times faster than Y" means ExTime(Y) Performance(X) = ExTime(X) Performance(Y) 相对性能用执行时间的倒数来表示! “X is n times faster than Y” in English means X = (n+1) Y.
计算机性能的测量 比较计算机的性能时,用执行时间来衡量 完成同样工作量所需时间最短的那台计算机就是性能最好的 处理器时间往往被多个程序共享使用,因此,用户感觉到的程序执行时间并不是程序真正的执行时间(从hello程序执行过程可知) 通常把用户感觉到的响应时间分成: CPU时间:指CPU真正花在程序执行上的时间。又包括两部分: 用户CPU时间:用来运行用户代码的时间 系统CPU时间:为了执行用户程序而需要运行操作系统程序的时间 其他时间:指等待I/O操作完成或CPU花在其他用户程序的时间 系统性能和CPU性能不等价,有一定的区别 系统性能(System performance):系统响应时间,与CPU外的其他部分也都有关系 CPU性能(CPU performance):用户CPU时间 本章主要讨论CPU性能,即:CPU真正用在用户程序执行上的时间 问题:用户CPU时间与系统响应时间哪个更长?
CPI:Cycles Per Instruction CPU执行时间的计算 CPI:Cycles Per Instruction CPU 执行时间 = CPU时钟周期数 / 程序 X 时钟周期 = CPU时钟周期数 / 程序 ÷ 时钟频率 = 指令条数 / 程序 X CPI X 时钟周期 CPU时钟周期数 / 程序 = 指令条数 / 程序 X CPI CPI = CPU时钟周期数 / 程序 ÷指令条数 / 程序 CPI 用来衡量以下各方面的综合结果 Instruction Set Architecture(ISA) Implementation of that architecture program Need to explain 1) clock cycle, 2) clock frequency. Mention that CPI is important.
Aspects of CPU Performance CPU time = Seconds = Instructions x Cycles x Seconds Program Program Instruction Cycle instr. count CPI clock rate Program Compiler Instr. Set Arch. Organization Technology So CPU time is determined by 3 factors. The formula is specially useful because it separates the 3 key factors that affect performance. Time : ( length, CPI, Clock). Which are software dependent and which are hardware dependent? The table shows how such 3 factors are affected by other techniques. 思考:三个因素与哪些方面有关?
Aspects of CPU Performance CPU time = Seconds = Instructions x Cycles x Seconds Program Program Instruction Cycle instr. count CPI clock rate Program X X Compiler X (X) Instr. Set Arch. X X Organization X X Technology X So CPU time is determined by 3 factors. The formula is specially useful because it separates the 3 key factors that affect performance. Time : ( length, CPI, Clock). Which are software dependent and which are hardware dependent? The table shows how such 3 factors are affected by other techniques. 问题:ISA、计算机组织(Organization)、计算机实现技术(Technology)三者的关系是什么?
Architecture = Instruction Set Arch. + Organization Computer Design Computer Hardware Design ° Machine Implementation ° Logic Designer's View ° "Processor Architecture" ° " Computer Organization" "Construction Engineer" Instruction Set Design ° Machine Language ° Compiler View ° "Computer Architecture" ° "Instruction Set Processor" "Building Architect" “建筑设计师” 功能定义与设计 “建造工程师” 考虑用什么材料,如何布线等 例如,是否提供“乘法指令”是ISA设计要考虑的问题; 如何实现乘法指令(用专门的乘法器还是用一个加法器+移位器实现)是组成(Organization)考虑的问题; 如何布线、用什么材料、工艺设计等是计算机实现技术(Technology)考虑的问题。
如何计算CPI? ∑ ∑ Count Instructio C _ 对于某一条特定的指令而言,其CPI是一个确定的值。但是,对于某一类指令、或一个程序、或一台机器而言,其CPI是一个平均值,表示该类指令或该程序或该机器的指令集中每条指令执行时平均需要多少时钟周期。 CPU时间= 时钟周期 x 假定CPI i 和 C i分别为第 i类指令的CPI和指令条数,则程序的总时钟数为: = x ∑ n i C CPI 1 总时钟数 = 所以, 假定CPIi 、 Fi是各指令CPI和在程序中的出现频率,则程序综合CPI为: CPI = where = x ∑ n i F CPI 1 Count Instructio C _ CPU execution time, clock cycle are easy to get. How to measure CPI or instruction count? Static counting for small programs or dynamic recording tools(simulator and hardware counter) for large programs. CPI = (CPU 时间×时钟频率) / 指令条数 = 总时钟周期数 / 指令条数 已知CPU时间、时钟频率、总时钟数、指令条数,则程序综合CPI为: 问题:指令的CPI、机器的CPI、程序的CPI各能反映哪方面的性能? 单靠CPI不能反映CPU的性能!为什么?如:单周期处理器CPI=1,但性能差!
机器B的频率是A的两倍,但机器B的速度并不是A的两倍! Example1 程序P在机器A上运行需10 s, 机器A的时钟频率为400MHz。 现在要设计一台机器B,希望该程序在B上运行只需6 s. 机器B时钟频率的提高导致了其CPI的增加,使得程序P在机器B上时钟周期数是在机器A上的1.2倍。机器B的时钟频率达到A的多少倍才能使程序P在B上执行速度是A上的10/6=1.67倍? Answer: CPU时间A = 时钟周期数A / 时钟频率A 时钟周期数A = 10 sec x 400MHz = 4000M个 时钟频率B = 时钟周期数B / CPU时间B = 1.2 x 4000M / 6 sec = 800 MHz Change of one parameters would affect the other parameters. Machine A Machine B CPU clock rate 400 MHZ ??? Program length I 1.2 I Execution time 10 sec. 6 sec. In order to calculate ??? for machine B, we need to know I which can be calculated based on machine A. 机器B的频率是A的两倍,但机器B的速度并不是A的两倍!
Marketing Metrics (产品宣称指标) MIPS = Instruction Count / Time x106 = Clock Rate / CPI x 106 Million Instructions Per Second 因为每条指令执行时间不同,所以MIPS总是一个平均值。 不同机器的指令集不同 程序由不同的指令混合而成 指令使用的频度动态变化 Peak MIPS: (不实用) 所以MIPS数不能说明性能的好坏(用下页中的例子来说明) MFLOPS = FP Operations / Time x106 Million Floating-point Operations Per Second 与机器相关性大 并不是程序中花时间的部分 用MIPS数表示性能有没有局限? Due to such pitfalls, MIPS is not a convincing measurement of the speed. 用MFLOPS数表示性能也有局限!
仅仅在软件上进行优化,没有涉及到任何硬件措施。 Example: MIPS数不可靠! Assume we build an optimizing compiler for the load/store machine. The compiler discards 50% of the ALU instructions. 1) What is the CPI ? 2) Assuming a 20 ns clock cycle time (50 MHz clock rate). What is the MIPS rating for optimized code versus unoptimized code? Does the MIPS rating agree with the rating of execution time? 仅仅在软件上进行优化,没有涉及到任何硬件措施。 Optimizing compiler New Freq 27% 15% 31% Op Freq Cycle ALU 43% 1 Load 21% 2 Store 12% 2 Branch 24% 2 21.5/ (21.5+21+12+24)=27% 21 / (21.5+21+12+24)=27% 12 / (21.5+21+12+24)=15% 24 / (21.5+21+12+24)= 31% ALU instructions are cut by 50% and other instructions are unchanged. How to calculate the new frequencies? New Freq 21.5/ (21.5+21+12+24) = 27% 21 / (21.5+21+12+24) = 27% 12 / (21.5+21+12+24) = 15% 24 / (21.5+21+12+24) = 31% The optimized compiler leads to a smaller MIPS. In this case, remember that execution time is always more important than other measurement. Or remember that one program is not enough and we need a mix of programs or benchmarking. CPI 1.57 1.73 MIPS 31.8 28.9 50M/1.57=31.8MIPS 50M/1.73=28.9MIPS 结果:因为优化后减少了ALU指令(其他指令数没变),所以程序执行时间一定减少了,但优化后的MIPS数反而降低了。
选择性能评价程序(Benchmarks) 用基准程序来评测计算机的性能 基准测试程序是专门用来进行性能评价的一组程序 不同用户使用的计算机用不同的基准程序 基准程序通过运行实际负载来反映计算机的性能 最好的基准程序是用户实际使用的程序或典型的简单程序 基准程序的缺陷 现象:基准程序的性能与某段短代码密切相关时,会被利用以得到不当的性能评测结果 手段:硬件系统设计人员或编译器开发者针对这些代码片段进行特殊的优化,使得执行这段代码的速度非常快 例1:Intel Pentium处理器运行SPECint时用了公司内部使用的特殊编译器,使其性能极高 例2:矩阵乘法程序SPECmatrix300有99%的时间运行在一行语句上,有些厂商用特殊编译器优化该语句,使性能达VAX11/780的729.8倍! So far, All we discussed is for the performance evaluation of one computer based on one program. But how to compare 2 computers? Can we use only one program for the comparison purpose? You might have already seen the importance of benchmarks.
Successful Benchmark: SPEC 1988年,5家公司( Sun, MIPS, HP, Apollo, DEC )联合提出了Systems Performance Evaluation Committee (SPEC) SPEC给出了一组标准的测试程序、标准输入和测试报告。它们是一些实际的程序,包括 OS calls、 I/O等。 版本 89:10 programs = 4 for integer + 6 for FP, 用每个程序的执行时间求出一个综合性能指标 版本92:SPECInt92 (6 integer programs) and SPECfp92 (14 floating point programs) 整数和浮点数单独提供衡量指标:SPECInt92和SPECfp92 增加 SPECbase: 禁止使用任何与程序有关的编译优化开关 版本95: 8 int + 10fp 较新版本: include SPEC HPC96, SPEC JVM98, SPEC WEB99, SPEC OMP2001. SPEC CPU2000,See http://www.spec.org for more details “benchmarks useful for 3 years” Base machine is changed from VAX-11/780 to Sun SPARC 10/40
如何给出综合评价结果? A is 10 times faster than B for program1. 问题:如果用一组基准程序在不同的机器上测出了运行时间,那么如何综合评价机器的性能呢? 先看一个例子: Program 1: 1 sec on machine A, 10 sec on machine B Program 2: 1000 sec on A,100 sec on B What are your conclusions? 这个结论无法比较A和B的好坏 必须用一个综合的值来表示! A is 10 times faster than B for program1. B is 10 times faster than A for Program2. Total execution time是一个综合度量值,可以据此得出结论: B is 1001/110=9.1 times faster than A 实际上,必须考虑每个程序在作业中的使用频度,即加权平均
综合性能评价的方法 综上所述,算术平均和几何平均各有长处,可灵活使用! 可以用以下两种平均值来评价: Arithmetic mean(算术平均):求和后除n Geometric mean(几何平均):求积后开根号n 根据算术平均执行时间能得到总平均执行时间 根据几何平均执行时间不能得到程序总的执行时间 执行时间的规格化(测试机器相对于参考机器的性能): time on reference machine ÷ time on measured machine 平均规格化执行时间不能用算术平均来计算,而应该用几何平均 program A going from 2 seconds to 1 second as important as program B going from 2000 seconds to 1000 seconds. (算术平均值不能反映这一点!) time reference on machine ÷ time on measured machine is actually the normalized speed (e.g., MIPS) in order to see how many times faster the new machine is than the reference machine. 综上所述,算术平均和几何平均各有长处,可灵活使用!
第二讲小结 性能的定义:一般用程序的响应时间或系统的吞吐率表示机器或系统整体性能。 CPU性能的测量(用户程序的CPU执行时间): 一般把程序的响应时间划分成CPU时间和等待时间,CPU时间又分成用户CPU时间和系统CPU时间。 因为操作系统对自己所花费的时间进行测量时,不十分准确,所以,对CPU性能的测算一般通过测算用户CPU时间来进行。 各种性能指标之间的关系: CPU执行时间=CPU时钟周期数 x 时钟周期 时钟周期和时钟频率互为倒数 CPU时钟周期数 = 程序指令数 x 每条指令的平均时钟周期数CPI MIPS数在有些情况下不能说明问题,不具有可比性! 性能评价程序的选择: 采用一组基准测试程序进行综合(算术(加权)平均/几何平均)评测。 有些制造商会针对评测程序中频繁出现的语句采用专门的编译器,使评测程序的运行效率大幅提高。因此有时基准评测程序也不能说明问题。 对于某种特定的指令集体系结构,提高计算机性能的主要途径有: 提高时钟频率(第七章 流水线) 优化处理器中数据通路的结构以降低CPI(第六章 单周期/多周期处理器) 采用编译优化措施来减少指令条数或降低指令复杂度(第五章 指令系统 )