计算机的抽象与技术
这本书的作用:
高级语言编写的程序如何变为机器语言的?
硬件如何执行程序的?
这些概念是理解软硬件两者如何影响程序性能的基础。
那些因素决定了程序的性能?
程序员如何才能提高程序的性能?
程序的性能取决于:
-
原始程序
-
编译器,汇编器
-
执行程序的硬件(I/O系统 ,处理器,存储系统);
什么技术可提供程序员提高或者降低效能?
为什么串行处理发展为并行处理?这种发展带来的结果是什么?
计算机架构师们提出的哪些伟大思想构成了现代计算的基础?
第一章的内容
- 为各章奠定基础
- 介绍计算机中的一些基本概念和定义
- 指出如何剖析软硬件
- 如何评价性能和功耗
- 集成电路技术
- 解释了技术发展向多核的原因
1.2计算机体系结构机构的八大思想
- 面向摩尔定律的设计
- 使用抽象简化设计
- 加速大概率事件
- 通过并行提高性能
- 通过流水线提高性能
- 通过预测提高性能(体现了加速大概率事件的思想)
- 存储器层次结构
- 通过冗余提高可靠性
1.3程序的表象下
1.4硬件的包装下
输入设备:为计算机提供数据
输出设备:将结果发送给用户
计算机的五大部件
- 输入设备
- 输出设备
- 存储器
- DRAM:动态随机访问存储器
- SRAM(cache):静态随机访问存储器。
- 处理器
- 数据通路(运算器)
- 控制器
控制器控制输入输出设备、存储器、运算器。
指令集体系结构(体系结构):硬件和低层软件之间的接口。
应用程序的二进制接口:
- 基本指令集
- 操作系统接口
体系结构和应用程序二进制接口允许计算机设计者独立于具体硬件讨论功能。
重点:
硬件和软件都可以抽象成多个层次,每个层次对上一层隐藏本层的细节。
也就是说不管运行软件的平台是怎么样的,只要遵循了相同的抽象接口就可以在不同的硬件平台运行软件。
1.6性能的定义
响应时间(执行时间),墙钟时间,消逝时间,执行时间(用户所感受的时间)。
执行时间是唯一可靠的性能度量指标
任务所需的总时间(包括磁盘访问,内存访问,I/O操作和操作系统的开销).
吞吐率(带宽)
单位时间的内完成的工作量。
相应时间和吞吐率相互影响。
cpu执行时间(cpu时间)
表示完成某任务花费的计算时间,但是不包括I/O等待或者等待其他程序运行时间。
cup时间又分为:
1.用户cpu时间:程序执行本身所花费的cpu时间。
2.系统cpu时间:为执行程序而花费在操作系统上的时间。
时间周期、时间周期长度、时间周期数
时钟周期长度、时钟周期:时钟周期也称为振荡周期,定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。
时间周期的长度取决于晶体整荡器的工作频率。
时间周期数:cpu完成一项任务所需要经过的时间周期的个数。
指令周期:是指计算机从取指到指令执行完毕的时间
CPU周期(机器周期):在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。
cpu的性能及其度量因素
程序的cpu执行时间=程序的cpu周期数时钟周期的长度
因为:
时钟频率=1/时钟周期长度
所以:
程序的cpu执行时间 = 程序的cpu周期数 / 时钟频率
指令的性能
cpu时钟周期数=程序指令数CPI
CPI(clock cycles per instruction):是执行每条指令的平均时钟周期数
经典的性能公式
cpu时间= 指令数CPI时钟周期长度 = 指令数*CPI/时钟频率
重点
执行时间=程序执行的秒数=程序的指令数CPI每时钟周期的秒数
执行时间 = 执行的秒数 / 程序 = 指令数 / 程序 + 时钟周期数 / 指令 + 秒 / 时钟周期
性能要素 | 测量单位 |
---|---|
程序的cpu执行时间 | 程序的执行时间,以秒为单位 |
指令数目 | 程序执行的指令数目 |
CPI | 每条指令的平均时钟周期数 |
时钟周期时间 | 每个时钟周期的长度,以秒为单位 |
执行时间是唯一可靠的性能度量指标。时间也是唯一一个能够被完全可靠测量的计算机性能指标。