ICS15s-Ch1-intro_第1页
ICS15s-Ch1-intro_第2页
ICS15s-Ch1-intro_第3页
ICS15s-Ch1-intro_第4页
ICS15s-Ch1-intro_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第一章第一章 计算机系统概论计算机系统概论 主要内容主要内容 课程内容概要课程内容概要 课程教学安排及考试安排课程教学安排及考试安排 计算机系统概述计算机系统概述 计算机的发展历程计算机的发展历程 计算机系统的基本功能和组成计算机系统的基本功能和组成 程序的开发程序的开发 程序的执行程序的执行 计算机性能评价计算机性能评价计算机系统基础计算机系统基础从程序员角度认识系统从程序员角度认识系统 目标: 培养学生的系统能力,使其成为一个“高效”程序员,在程序调试、性能提升、程序移植和健壮性等方面成为高手;建立扎实的计算机系统概念,为后续的OS、编译、体系结构等课程打下坚实基础 以 IA-32+Lin

2、ux+C+gcc 为平台(开源项目平台) 与以下MOOC课程的想法类似/course/hwswinterface 主要内容:描述程序执行的底层机制 思路: 在程序与执行机制之间的建立关联,强化理解而不是记忆 课程内容概要课程内容概要/*-sum.c-*/int sum(int a , unsigned len)int i,sum = 0;for (i = 0; i = len1; i+) sum += ai;return sum;/*-main.c-*/int main()int a1=100;int sum; sum=sum(a,0); prin

3、tf(“%d”,sum);数据的表示数据的运算各类语句的转换与表示(指令)各类复杂数据类型的转换表示过程(函数)调用的转换表示链接(linker)和加载程序执行(存储器访问)异常和中断处理输入输出(I/O)课程内容概要课程内容概要l 使学生清楚理解: 计算机是如何生成和运行可执行文件的!l 重点在高级语言以下各抽象层 C语言程序设计层数据的机器级表示、运算语句和过程调用的机器级表示 指令集体系结构(ISA)和汇编层 指令系统、机器代码、汇编语言 微体系结构及硬件层CPU的通用结构层次结构存储系统 操作系统、编译和链接的部分内容“问题求解”课程解决应用算法(数据结构)编程层课程内容概要课程内容概

4、要内容组织:两大部分+附录 第一部分 系统概述和可执行文件的生成(表示和转换) 计算机系统概述 数据的机器级表示与处理 程序的转换及机器级表示 程序的链接 第二部分 可执行文件的运行(执行控制流) 程序的执行 层次结构存储系统 异常控制流 I/O操作的实现 附录 数字逻辑电路基础前导知识:C语言程序设计课程基本信息课程基本信息课程名称 计算机系统基础(Introduction to Computer Systems)课程网站 http:/ 前导课程 C语言程序设计、数字逻辑电路任课教师 第1、2、3章:唐杰副教授() 第4、6章:苏丰副教授() 第7、8章:路通教授() 教材:计算机系统基础,

5、袁春风,机械工业出版社,2014.7主要参考书: 深入理解计算机系统(第2版),Randal E. Bryant, david R. OHallaron著,龚奕利,雷迎春译,机械工业出版社,2011 年 Brian W. Kernighan, Dennis M. Ritchie, The C Programming Language ( second Edition),北京:机械工业出版社,2006 计算机系统概论(原书第2版),Yale N. Patt, Sanjay J. Patel著,梁阿磊,蒋兴昌,林凌译,机械工业出版社,2007年实验及考核方式实验及考核方式 实验类型 Homewor

6、k:课后习题 Lab:数据表示(位操作)、二进制炸弹、缓冲区溢出、逆向工程、链接加载 考核方式 Homework Lab 期末考试主要内容主要内容 课程内容概要课程内容概要 课程教学安排及考试安排课程教学安排及考试安排 计算机系统概述计算机系统概述 计算机的发展历程计算机的发展历程 计算机系统的基本功能和组成计算机系统的基本功能和组成 程序的开发程序的开发 程序的执行程序的执行 计算机性能评价计算机性能评价1. 计算机的发展历程计算机的发展历程 计算机发展历程计算机发展历程 冯冯诺依曼领导的小组发表了诺依曼领导的小组发表了“存储程序(存储程序(stored-program)”方式的电子数字计算

7、机方式的电子数字计算机 “存储程序存储程序”方式的基本思想是:必须将事先编好的程序和原始数据送入主存后才能执行程序,一旦程序被启动执行,计算机能在不需操作人员干预下自动完成逐条指令取出和执行的任务。计算机发展历程计算机发展历程 第一代第一代计算机:电子管计算机:电子管计算机计算机 第二代第二代计算机计算机:晶体管计算机晶体管计算机 第三代第三代计算机计算机:集成电路计算机集成电路计算机 第四代第四代计算机计算机:超大规模集成电路超大规模集成电路计算机计算机2. 计算机系统计算机系统的基本功能和的基本功能和组成组成 一个典型系统的硬件组成一个典型系统的硬件组成PC:程序计数器;程序计数器;ALU

8、:算术:算术/逻辑单元;逻辑单元;USB:通用串行总线:通用串行总线CPUMMInput/Output计算机硬件:打开计算机硬件:打开PC来看看来看看PC主板主板CPU插座插座内存条内存条PCI总线插槽总线插槽解剖一台计算机(分而治之)解剖一台计算机(分而治之) 个人计算机由主个人计算机由主机和外设组成机和外设组成主机中包含主机中包含多个电路板多个电路板每个电路板中有每个电路板中有十几个集成电路十几个集成电路每个集成电路中每个集成电路中有十几个模块有十几个模块每个模块中有每个模块中有上千万个单元上千万个单元每个单元中有每个单元中有十几个门电路十几个门电路每个门电路实现基每个门电路实现基本的逻辑

9、运算本的逻辑运算 所有信息都用二所有信息都用二进制编码表示进制编码表示Hardware/Software Interface(界面)(界面)机器语言由指令代码构成,能被硬件直接执行。 软件和硬件的界面:软件和硬件的界面: ISA(Instruction Set Architecture ) 指令集体系结构软件软件硬件硬件1000 1100 0100 1111 0000 0000 0000 00001000 1100 0101 0000 0000 0000 0000 0100Hardware/Software Interface , EXTop=1,ALUSelA=1,ALUSelB=11,AL

10、Uop=add,IorD=1,Read,MemtoReg=1,RegWr=1,.temp = vk;vk = vk+1;vk+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 00001000 1100 0101 0000 0000 0000 0000 01001010 1100 0101 0000 0000 0000 0000 00001010 1100 0100 1111 0000 0000 0000 0100软软件件硬硬件件Computer Hie

11、rarchy(计算机系统层次)(计算机系统层次)I/OCPUCompilerOperatingSystemApplicationDigital DesignCircuit Design 上图给出的是计算机系统的层次结构上图给出的是计算机系统的层次结构 指令系统(即指令系统(即ISAISA)是软)是软/ /硬件的交界面硬件的交界面Instruction Set Architecture不同用户工作在不同层次,所看到的计算机不一样不同用户工作在不同层次,所看到的计算机不一样最终用户最终用户End User应用程序员应用程序员Application Programmer系统管理员系统管理员Syste

12、m Administrator系统程序员系统程序员System ProgrammerMMAssemblerSoftware System software(系统软件系统软件) - 简化编程过程,并使硬件资源被有效利用简化编程过程,并使硬件资源被有效利用 操作系统(操作系统(Operating System):):硬件资源管理,用户接口硬件资源管理,用户接口语言处理系统:翻译程序语言处理系统:翻译程序+ Linker, Debug, etc 翻译程序翻译程序(Translator)有三类:有三类:汇编程序汇编程序(Assembler):汇编语言源程序汇编语言源程序机器语言目标程序机器语言目标程序

13、编译程序编译程序(Complier):高级语言源程序高级语言源程序机器级目标程序机器级目标程序解释程序解释程序(Interpreter ):将高级语言语句逐条翻译成机器指令并将高级语言语句逐条翻译成机器指令并立即执行立即执行,不生成目标文件。不生成目标文件。其他实用程序其他实用程序: 如:磁盘碎片整理程序、备份程序等如:磁盘碎片整理程序、备份程序等 Application software(应用软件应用软件) - 解决具体应用问题解决具体应用问题/完成具体应用任务完成具体应用任务各类媒体处理程序:各类媒体处理程序:Word/ Image/ Graphics/管理信息系统管理信息系统 (MIS)

14、 Game, 3. 程序程序的开发和执行的开发和执行过程过程 一个典型程序的转换处理过程一个典型程序的转换处理过程1 #include 23 int main()4 5 printf(hello, worldn);6 经典的经典的“ hello.c ”C-源程序源程序# i n c l u d e n n i n t m a i n ( ) n 104 62 10 10 105 110 116 32 109 97 105 110 40 41 10 123n p r i n t f ( h e l10 32 32 32 32 112 114 105 110 116 102 40 34 104 1

15、01 108l o , w o r l d n ) ; n 108 111 44 32 119 111 114 108 100 92 110 34 41 59 10 125hello.c的的ASCII文本表示文本表示计算机能够直接识计算机能够直接识别别hello.c源程序吗源程序吗?不能,需要转换为机器语言不能,需要转换为机器语言代码代码! ! 即:编译、汇编等即:编译、汇编等程序的功能是:程序的功能是:输出输出“hello,world”NoImageGCC使用举例使用举例使用GCC的命令是gcc,最常用的方式如下:#gcc -o filename sample1.c sample2.c sa

16、mple3.cu 使用-o filename参数,输出可执行文件名为filename;如果没有这个参数,GCC将使用缺省的可执行文件名a.out25基本选项基本选项预处理阶段预处理阶段l忽略掉不需预处理的输入文件,生成中间文件*.i C预处理器cpp用来完成宏的求值、条件编译以及其他一些需要把代码传递到编译器前的工作 通常所见的那些“#”号后面的语句由 cpp 来进行处理,如#ifdef、#include以及#define等 例:下面一段代码: #define FOO (5*2) printf(%dn,FOO*2); 经过cpp预处理后变成下面形式: printf(%dn,(5*2)*2);基

17、本选项基本选项编译阶段编译阶段l输入中间文件*.i,生成汇编语言源程序文件*.s 对应的GCC命令如下例所示:gcc -S example.i -o example.sexample.s即为生成的汇编语言源程序文件 该例其实可以直接从源代码编译,即: gcc S example.c -o example.s基本选项基本选项汇编阶段汇编阶段 将输入的汇编语言源程序文件转换为可重定位目标代码文件(*.o),这可以通过使用-c选项完成,实际调用了汇编器as 对应的GCC命令如下例所示: gcc -c example.s -o example.o 注意:目标文件虽然是机器代码,但不可执行。 as 通常

18、情况下是被gcc调用的,但也可直接使用。基本选项基本选项链接阶段链接阶段p 将生成的目标文件与其它目标文件(或库文件)链接成可执行的二进制代码文件。这一步骤可以使用如下的GCC命令来完成: gcc example.o -o example 运行examplep 如果只需要最终的可执行文件,可以直接对源文件进行编译链接,对应的GCC命令如下所示: gcc example.c -o examplep 对于一个程序的多个源文件进行编译链接时,可以使用如下格式:gcc -o test first.c second.c third.c该命令将同时编译三个源文件,即first.c、second.c和thi

19、rd.c,然后将它们链接成一个可执行文件,名为test。注意:生成可执行文件时,被编译和链接的多个源文件中有且只能有一个main函数,因为main函数是该程序的入口29链接器链接器 ldp 在编写一个较大程序时,经常把它分成许多独立的模块,这时需要链接器把所有的模块组合起来,并结合 C 函数库和初始化代码,产生最后的可执行文件。链接器在产生可执行文件之前,起到重要的作用。p 通常情况下,ld被编译器所调用,产生可执行文件,但是,如果想更好地控制链接过程,最好手工调用ld。链接器使用实例链接器使用实例p 使用GCC直接指定在创建可执行文件时所需包含的库文件 gcc example5.c -o e

20、xample /usr/lib/i386-linux-gnu/libm.sop 快捷选项-l,命令的格式为: gcc example5.c -o example5 -lm 与上面指定库文件的全路径/usr/lib/libm.so命令等价,避免了在命令行写长路径 在Linux下,库文件在命名时总以lib开头,因此在用-l选项指定库文件名时可省去lib,-lm表示链接名为libm.so的库文件p GCC编译器在默认情况下使用动态库,但如果使用了-static选项,则忽略动态库,强制使用静态链接库,即使用如下命令: gcc example5.c -o example5 -static -lm此时静态

21、库文件中的代码全部包含到可执行文件中,故生成的可执行文件较大p GCC编译器提供了-shared选项来生成动态库文件 与动态库链接的可执行文件只包含它需要的函数的引用表,而不是所有的函数代码,且只有在程序执行时函数代码才会被拷贝到内存之中。这样使可执行文件比较小,进而节省了磁盘空间;更重要的是,如果库文件本身被更新了,不需要重新编译与它连接的源程序。31gdb符号符号调试器调试器p gdb(GNU Debugger)是由GNU计划完成的、受通用公共许可证(GPL)保护的自由软件。它主要工作在字符模式下,是一个功能强大的交互式程序调试工具lgdb能在程序运行时观察程序的内部结构和内存的使用情况

22、gdb主要提供以下功能l监视程序中变量的值的变化l设置断点,使程序在指定的代码行上暂停执行,便于观察l单步执行代码l分析崩溃程序产生的core文件 命令形式如下:gdb filenamegdb调试调试执行程序执行程序gdb命令run(可以简写为r)执行装载代码在run命令之后可以加入执行参数来定制执行的方式 (gdb) r如果程序中存在断点,则会在断点处自动暂停33gdb调试调试设置断点设置断点p 通过使用gdb逐步调试代码,可以看到程序内部是如何运行的,还可以知道什么命令正在执行,变量的值的变化以及其他一些细节问题gdb调试示例针对源程序test.c: 1. 调用gdb,装载子程序 $gdb

23、 test( 若要在GDB启动后载入,则使用file命令:(gdb) file test ) 34gdb调试调试设置断点设置断点2、设置断点l 可以通过使用break命令(可简写为b)指定一个特定的位置设置断点。指定一个特定的位置设置断点,当程序运行到这个位置时就被中断,然后把程序的控制权交给调试器和程序员l 设置断点的最简单形式在break命令后加入行号来在该行加入断点 (gdb)break test.c:21Breakpoint 1 at 0 x12000061c:file test,line 21 另一种方法(gdb)break printmessageBreakpoint 1 at 0

24、 x120000848:file test.c,line 4835gdb调试调试使用使用断点断点p 在断点后继续运行程序,可使用continue命令(简写为c) (gdb) cp break命令后也可以跟函数名,使程序在进入指定的函数之前停下来p 设置断点时也可以进行条件判断,即只有条件为真,程序到达指定行或函数时才停下来(gdb) b 9 if i9p 在加入断点之后,可通过info break命令来查看设置断点的信息,包括编号、类型、地址等(gdb) info break36gdb调试调试使用使用断点断点p 可以通过可以通过delete(可以简写为(可以简写为d)命令来删除断点)命令来删除

25、断点 在在delete命令后加入断点编号可以删除指定的断点。不指定断点命令后加入断点编号可以删除指定的断点。不指定断点号则删除所有的断点号则删除所有的断点(gdb) d 1删除编号为删除编号为1的断点的断点 delete命令后面可以跟一个范围命令后面可以跟一个范围(gdb) d 1-6删除编号为删除编号为16的断点的断点p 也可以使用也可以使用clear来删除指定代码行上的断点来删除指定代码行上的断点(gdb) clear 9删除第删除第9行上的所有断点行上的所有断点 clear命令后面可以跟一个范围命令后面可以跟一个范围p 可以使用可以使用disable命令使某个断点暂时失效。命令使某个断点

26、暂时失效。disable命令可加断点命令可加断点号来禁用指定断点,否则会将所有断点禁用号来禁用指定断点,否则会将所有断点禁用p 断点在禁用之后可以用断点在禁用之后可以用enable命令来恢复使用命令来恢复使用gdb调试调试列出源代码列出源代码p 程序在载入到gdb之后,就可以通过list命令(可简写为l)来查看源代码信息。 (gdb) list list命令默认情况下只列出10行代码。如果上面命令的基础上再次输入list命令,会接着列出后面的10行代码,当然,如果后面还有10行的话,否则只列到源文件末尾p 也可以通过参数来指定list命令列出源文件的某一部分。例如:列出源文件example1.

27、c的第35行代码 (gdb) l 3,5p list命令后也可直接跟行号,这样列出的是该行上下5行代码 (gdb) l 938gdb调试调试显示数据显示数据p 使用print和display display和print 是显示数据最常用的两种命令,这两个命令的功能非常强大,并不限于简单地显示一个整数值p 使用printf 该命令可以接受指定格式和变量列表为参数,使用起来类似于 C 中的 printf()函数p 内存检查命令 gdb提供了命令x,来获得指针所指向的内容。 x/format address 39gdb调试调试设置观察点(窗口)设置观察点(窗口)p 观察点也称为数据断点,用来监测某个

28、变量或表达式的值是否有变化,如果有变化,则暂停程序的运行,这在调试程序的过程中是非常有用p 设置观察点的命令为watch,后面跟需要查看的变量或表达式(gdb) watch tol设置变量tol的观察点 若程序继续运行,则可以看到GDB给出了变量tol的旧值0和新值1,同时也给出了下一条指令的行号和指令内容40gdb调试调试查看查看栈信息栈信息p 当程序调用了一个函数时,函数的地址、函数参数、函数内的局部变量都会被压入“栈”(Stack)中。可以用backtrace(简写为bt)来查看当前的栈中的信息。p 如果要查看某一层的信息,需要切换当前的栈。程序停止时,最顶层的栈就是当前栈,如果要查看栈

29、下面层的详细信息,首先要做的是切换当前栈,可使用frame (简写为f)命令,后面跟栈帧的编号 (gdb) f 1p 查看当前栈帧的详细信息,可使用info frame命令(简写为info f) (gdb) info f 将显示调用函数的地址、被调用函数的地址、函数的编写语言、函数的参数、局部变量的地址、栈的层编号、当前的函数名、函数所在文件及行号、函数执行到的语句等信息。gdb调试调试程序执行控制程序执行控制p 单步执行l 即一步一步跟踪程序执行,是经常使用的一种调试操作p GDB中可以通过step(简写为s)或next(简写为n)来单步执行代码 step命令可以跟踪进入函数内部,在执行到函

30、数调用部分时,GDB会给出提示信息,包括被调用函数的入口参数、起始行号等,同时也会给出函数中将要执行的语句及所在行的行号 next命令也可以实现程序代码的单步执行,但它将函数调用看作是一条语句,不跟踪进入函数内部 next命令后面还可以跟参数来指定执行操作的次数,直至程序因其他原因暂停运行gdb调试调试程序执行控制程序执行控制p return命令l 忽略当前函数剩余的语句,跳出函数并继续向下执行。return命令后可以跟变量或者表达式来作为函数的返回值p 执行到指定行l 命令until加指定行号l 需要注意的是如果执行中有断点则会停在断点处p finish命令l 在退出当前函数前执行函数体p

31、jump命令l 跳过某一段代码继续执行,从而改变程序执行的顺序。命令后跟运行转到的行号。 l jump不会改变程序栈的内容,所以当从一个函数跳到另一个函数后,函数返回所进行的出栈操作必定会发生错误,程序运行结果也可能非常奇怪,所以最好是在同一个函数内进行跳转gdb调试调试查看信息查看信息p 查看寄存器信息:info registers命令 (gdb) info registersp 查看单个寄存器:在print命令后加上寄存器名称(前加“$”符号) (gdb) p $eipp 查看程序的汇编代码:disassemble命令 (gdb) disassemble printinfo 显示函数pri

32、ntinfo的汇编代码4. 程序的执行过程程序的执行过程 Hello程序的数据流动过程程序的数据流动过程“hello”Red:shell命令行处理命令行处理Blue:可执行文件加载:可执行文件加载Cyan:hello程序执行过程程序执行过程“hello”“hello,world/n”“hello,world/n”所有过程都是在所有过程都是在CPU执行指令所产生的控制信号的作用下进行的。执行指令所产生的控制信号的作用下进行的。数据经常在各存储部件间传送。故现代计算机大多采用数据经常在各存储部件间传送。故现代计算机大多采用“缓存缓存”技术!技术!Unix./hellohello, worlduni

33、xEnter4.计算机计算机性能评价性能评价 计算机性能的基本评价指标计算机性能的基本评价指标“ 机器机器X的速度(性能)是的速度(性能)是Y的的n倍倍” 的含义:的含义:ExTime(Y) Performance(X) = = nExTime(X)Performance(Y)相对性能用执行时相对性能用执行时间的倒数来表示!间的倒数来表示!计算机有两种不同的性能计算机有两种不同的性能 Time to do the task 响应时间(响应时间(response time) 执行时间(执行时间(execution time) 等待时间或时延(等待时间或时延(latency) Tasks per

34、day, hour, sec, ns. . 吞吐率(吞吐率(throughput) 带宽(带宽(bandwidth) 基本的性能评价标准是:基本的性能评价标准是:CPU的执行时间的执行时间不同应用场合用户关心的性能不同:不同应用场合用户关心的性能不同:-要求吞吐率高的场合,例如:要求吞吐率高的场合,例如: 多媒体应用(音多媒体应用(音/视频播放要流畅)视频播放要流畅)-要求响应时间短的场合:例如:要求响应时间短的场合:例如: 事务处理系统(存事务处理系统(存/取款速度要快)取款速度要快)-要求吞吐率高且响应时间短的场合:要求吞吐率高且响应时间短的场合: ATM、文件服务器、文件服务器、Web服

35、务器等服务器等CPU执行时间的计算执行时间的计算CPU 执行时间执行时间 = CPU时钟周期数时钟周期数 / 程序程序 X 时钟周期时钟周期 = CPU时钟周期数时钟周期数 / 程序程序 时钟频率时钟频率 = 指令条数指令条数 / 程序程序 X CPI X 时钟周期时钟周期CPU时钟周期数时钟周期数 / 程序程序 = 指令条数指令条数 / 程序程序 X CPICPI = CPU时钟周期数时钟周期数 / 程序程序 指令条数指令条数 / 程序程序 CPI 用来衡量以下各方面的综合结果用来衡量以下各方面的综合结果Instruction Set Architecture(ISA)Implementat

36、ion of that architecture (Organization & Technology)Program(Compiler、Algorithm) CPI:Cycles Per Instruction如何计算如何计算CPI?对于某一条特定的指令而言,对于某一条特定的指令而言,其其CPI是一个确定的值。但是,对于某一个程是一个确定的值。但是,对于某一个程序或一台机器而言,其序或一台机器而言,其CPI是一个平均值,表示该程序或该机器指令集中每是一个平均值,表示该程序或该机器指令集中每条指令执行时平均需要多少时钟周期条指令执行时平均需要多少时钟周期。假定假定CPIi、Fi是各指令是各指令

37、CPI和在程序中的出现频率,则程序综合和在程序中的出现频率,则程序综合CPI为为:CPI = where =xniiiFCPI1CountnInstructioCFii_=CPU时间时间= 时钟周期时钟周期 x假定假定CPIi 和和 Ci分别为第分别为第i类指令的类指令的CPI和指令条数,则程序的总时钟数为:和指令条数,则程序的总时钟数为:=xniiiCCPI1=xniiiCCPI1总时钟数总时钟数 =所以,所以,CPI = (CPU 时间时间时钟频率时钟频率) / 指令条数指令条数 = 总时钟周期数总时钟周期数 / 指令条数指令条数已知已知CPU时间、时钟频率、总时钟数、指令条数,则程序综合

38、时间、时钟频率、总时钟数、指令条数,则程序综合CPI为为:问题:指令的问题:指令的CPI、机器的、机器的CPI、程序的、程序的CPI各能反映哪方面的性能?各能反映哪方面的性能? 单靠单靠CPI不能反映不能反映CPU性能!为什么?性能!为什么? 例如,单周期处理器例如,单周期处理器CPI=1,但性能差!,但性能差!Example1程序程序P在机器在机器A上运行需上运行需10 s, 机器机器A的时钟频率为的时钟频率为400MHz。 现在要设计一台机器现在要设计一台机器B,希望该程序在,希望该程序在B上运行只需上运行只需6 s. 机器机器B时钟频率的提高导致了其时钟频率的提高导致了其CPI的增加,使

39、得程序的增加,使得程序P在机器在机器B上时钟周期数是在机器上时钟周期数是在机器A上的上的1.2倍。机器倍。机器B的时钟频率达到的时钟频率达到A的多少倍才能使程序的多少倍才能使程序P在在B上执行速度是上执行速度是A上的上的10/6=1.67倍?倍?Answer: 时钟时钟周期数周期数A = 10 sec x 400MHz = 4000M个个 时钟时钟周期数周期数B = 1.2 x 4000M = 4800M 时钟频率时钟频率B = 时钟周期数时钟周期数B / CPU时间时间B = 4800M / 6 sec = 800 MHz机器机器B的频率是的频率是A的两倍,但机器的两倍,但机器B的速度并不是

40、的速度并不是A的两倍!的两倍!Marketing Metrics (产品宣称指标)MIPS= Instruction Count / Time x106= Clock Rate / CPI x 106Million Instructions Per Second (定点指令定点指令执行速度)执行速度)因为每条指令执行时间不同,因为每条指令执行时间不同,所以所以MIPS总是总是一个平均值。一个平均值。 不同机器的指令集不同不同机器的指令集不同 程序由不同的指令混合而成程序由不同的指令混合而成 指令使用的频度动态变化指令使用的频度动态变化 Peak MIPS: (不实用)(不实用)所以所以MIPS数不能说明性能的好坏数不能说明性能的好坏(用下页中的例子来说明)(用下页中的例子来说明)MFLOPS = FP Operations / Time x106Million Floating-point Operations Per Second(浮点浮点操作速度)操作速度)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论