1. 计算机系统层次结构
1.1 计算机系统的基本组成
计算机系统 = 硬件 + 软件
- 硬件:由物理元器件构成的系统,计算机硬件是一个能够执行指令的设备。
- 软件:由程序构成的系统,分为系统软件和应用软件。
- 系统软件:用来管理整个计算机系统。Eg:操作系统、数据库管理系统、标准程序库、网络软件、语言处理程序、服务程序。
- 应用软件:按任务需要编制成的各种程序。
第一台电子数字计算机:ENIAC(1946)
- 硬件的发展
- 第一代:电子管时代
- 第二代:晶体管时代
- 第三代:中小规模集成电路时代
- 第四代:大规模、超大规模集成电路时代
- 计算机系统结构中的8 个伟大思想
- 面向摩尔定律的设计。
摩尔定律指出单芯片上的集成度每18 ~24 个月翻一番。 - 使用抽象简化设计。
提高硬件和软件生产率的主要技术之一是使用抽象(abstraction ) 来表示不同的设计层次,在高层次中看不到低层次的细节,只能看到一个简化的模型。 - 加速大概率事件。
大概率事件通常比小概率事件简单,从而易于提高。 - 通过并行提高性能。
计算机设计者就通过并行执行操作来提高性能。 - 通过流水线提高性能。
一个特别的并行性场景就是流水线(pipelining)。 - 通过预测提高性能。
在某些情况下,如果假定从误预测恢复执行代价不高并且预测的准确率相对较高,则通过猜测的方式提前开始某些操作,要比等到确切知道这些操作应该启动时才开始要快一些。 - 存储器层次。
由于存储器的速度通常影响性能、存储器的容量限制了解题的规模。 - 通过冗余提高可靠性。
由于任何一个物理器件都有可能失效,因此可以通过使用冗余部件的方式提高系统的可靠性(dependable) ,冗余部件可以替代失效部件并可以帮助检测错误。
- 面向摩尔定律的设计。
1.2 计算机硬件的基本组成
存储程序的概念是指将指令以二进制代码的形式事先输入计算机主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。
-
早期冯·诺依曼机
冯·诺依曼计算机特点 -
计算机有五大部件组成:
- 输入设备:为计算机提供信息的装置,如键盘。
- 输出设备:将计算结果输出给用户(如显示器)或其他计算机装置。
- 存储器:存储器:计算机中存储程序和数据的部件,分为内存和外存。
- 运算器:是处理器中执行算术操作的部分。
- 控制器:处理器中根据程序的指令指挥数据通路、存储器和l/ 0 设备的邻分。
-
指令和数据以同等地位存于存储器。可按地址寻访指令和数据用二进制表示。指令由操作码和地址码组成。存储程序。以运算器为中心。
-
现代计算机结构
- 以存储器为中心
- CPU = 运算器 + 控制器
-
指令集体系结构:也叫体系结构,是低层次软件和硬件之间的抽象接口,包含了需要编写正确运行的机器语言程序所需要的全部信息,包括指令、寄存器、存储访问和I/O 等。
-
主存储器:也叫主要存储器。这个存储器用来保持运行中的程序,在现代计算机中一般由DRAM 组成。
-
二级存储器:非易失性存储器,用来保存两次运行之间的程序和数据。在个人移动设备中一般由闪存组成,在服务器中由磁盘组成
-
磁盘:也叫硬盘(hard disk) ,是使用磁介质材料构成的以旋转盘片为基础的非易失性二级存储设备。因为是旋转的机械设备,所以磁盘的方位时间大约是5~20 毫秒
-
闪存:一种非易失性半导体内存,单位价格和速度均低于DRAM, 但单位价格比磁盘高,速度比磁盘快。其访问时间大约为5~50 毫秒。
1.3计算机软件和硬件的关系
- 硬件和软件相互依存
- 硬件和软件无严格界限
- 硬件和软件协同发展
1.4 计算机系统的工作过程
- 工作过程
- 把程序和数据装入主存储器
- 从程序的起始地址运行程序
- 用程序的首地址从存储器中取出第一条指令,完成指令后计算下一条指令的地址
- 用新得到的指令地址继续读出第二条指令并执行,直到程序结束为止
- 计算机系统的层次结构
- 重点:无论硬件还是软件都可以使用抽象分成多个层次,每个较低的层次把细节对上层隐藏起来。抽象层次中的一个关键接口是指令集体系结构——硬件和底层软件之间的接口。这一抽象接口使得同一软件可以由成本不同、性能也不同的实现方法来完成。
2. 计算机性能指标
- 数据通路带宽:数据总线一次所能并行传送信息的位数。
- 响应时间:也叫执行时间( execution time) ,是计算机完成某任务所需的总时间。通常包括CPU时间(运行一个程序所花费的时间)与等待时间(用于磁盘访问、存储器访问、I/O操作、操作系统开销时间等)
- 吞吐量:也叫带宽(bandwidth) ,性能的另一种度量参数,表示单位时间内完成的任务数量。
- CPU执行时间:简称CPU 时间,执行某一任务在CPU 上所花费的时间。CPU 时间还可进一步分为用于用户程序的时间和操作系统为用户服务花去的CPU 时间
- 一个程序的CPU 执行时间=一个程序的CPU 时钟周期数x 时钟周期时间
一个程序的CPU 执行时间=一个程序的CPU 时钟周期数/时钟频率 - CPI:每条指令的时钟周期数(clock cycle per instruction),表示执行某个程序或者程序片段时每条指令所需的时钟周期平均数。
- CPU 时钟周期数=程序的指令数x 每条指令的平均时钟周期数
- 经典的CPU性能公式:
CPU 时间=指令数 X CPI X 时钟周期时间
- MIPS:单字长定点指令平均执行速度 Million Instructions Per Second的缩写,每秒处理的百万级的机器语言指令数。这是衡量CPU速度的一个指标。
M I P S = 指 令 数 / ( 执 行 时 间 × 1 0 6 ) MIPS=指令数/(执行时间\times10^6) MIPS=指令数/(执行时间×106)
M I P S = 指 令 数 / ( 指 令 数 × C P I / 时 钟 频 率 × 1 0 6 ) = 时 钟 频 率 / ( C P I × 1 0 6 ) MIPS=指令数/(指令数\times CPI / 时钟频率 \times 10^6)=时钟频率 / (CPI \times 10^6) MIPS=指令数/(指令数×CPI/时钟频率×106)=时钟频率/(CPI×106)
秒 数 程 序 = 指 令 数 程 序 × 时 钟 周 期 数 指 令 数 × 秒 数 时 钟 周 期 数 \frac{秒数}{程序} = \frac{指令数}{程序} \times \frac{时钟周期数}{指令数} \times \frac{秒数}{时钟周期数} 程序秒数=程序指令数×指令数时钟周期数×时钟周期数秒数
基准程序:是用来测量计算机处理速度的一种实用程序,以便于被测量的计算机性能可以与运行相同程序的其它计算机性能进行比较
- 时钟周期(Clock Cycle):又称震荡周期,是处理操作的最基本、最小的时间单位。
- CPU周期:亦称为机器周期,一条指令执行过程被划分为若干阶段,每一阶段完成所需时间。
- 指令周期(Instruction Cycle):取出并执行一条指令的时间。
所以,我们说一个指令周期,包含多个 CPU 周期,而一个 CPU 周期包含多个时钟周期
- 主频:一秒(1 s)内,震荡周期的个数称为时钟频率,俗称主频。
- FLOPS:是Floating-point Operations Per Second每秒所执行的浮点运算次数的英文缩写。它是一个衡量计算机计算能力的量,这个量经常使用在那些需要大量浮点运算的科学运算中。有时也会被记为flop/s。
- MFLOPS:每秒百万个浮点操作。衡量计算机系统的技术指标,不能反映整体情况,只能反映浮点运算情况。
- GFLOPS:每秒拾亿(= 1 0 9 10^9 109 )次的浮点运算
- TFLOPS:每秒万亿(= 1 0 12 10^{12} 1012 )次的浮点运算
- PFLOPS:每秒千万亿(= 1 0 15 10^{15} 1015 )次的浮点运算
- EFLOPS:每秒百亿亿(= 1 0 18 10^{18} 1018 )次的浮点运算
3. 名词解释
- CPU:中央处理器,是计算机的核心部件,由运算器和控制器构成。
- 运算器:计算机中完成运算功能的部件,由ALU 和寄存器构成。
- ALU:算术逻辑运算单元,负责执行各种算术运算和逻辑运算。
- IR:指令寄存器,存放当前执行的指令
- PC:程序计数器,用于存放下一条指令地址,有自动加1功能。
- 指令:是一种经过编码的操作命令,它指定需要进行的操作,支配计算机中的信息传
递以及主机与输入输出设备之间的信息传递,是构成计算机软件的基本元素。 - 字 :数据运算和存储的单位,其位数取决于具体的计算机。
- 字节 :衡量数据量以及存储容量的基本单位。 1 字节等于 8 位二进制信息。
- 字长:一个数据字中包含 的位数,反应了计算机并行计算的能力。一般为 8 位、 16
位、 32 位或 64 位。 - 寄存器:是运算器中若干个临时存放数据的部件,由触发器构成,用于存储最频繁
使用的数据。 - 主存:一般采用半导体存储器件实现,速度较高。成本高且当电源断开时存储器的内容会丢失。
- 辅存:一般通过输入输出部件连接到主存储器的外围设备,成本低,存储时间长。
- 汇编程序:将汇编语言程序翻译成机器语言程序的计算机软件。
- 汇编语言:采用文字方式(助记符)表示的程序设计语言,其中大部分指令和机器语言中的指令一一对应,但不能被计算机的硬件直接识别。
- 编译程序:将高级语言程序转换成汇编语言程序的计算机软件。
- 指令流:在计算机的存储器与 CPU 之间形成的不断传递的 指令序列 。从存储器流向
控制器。 - 数据流:在计算机的存储器与 CPU 之间形成的不断传递的 数据序列 。存在于运算器
与存储器以及输入输出设备之间。