第一章 计算机系统概述
1.2 计算机系统的基本组成
计算机系统由硬件和软件两部分组成。
1.2.1 计算机硬件
1.冯诺依曼结构:
(1)采用“存储程序”工作方式
(2)计算机由运算器、控制器、存储器、输入设备和输出设备5个基本部件组成。
(3)存储器不仅能存放数据,而且也能存放指令,形式上数据和指令没有区别,但计算机应能区分它们;控制器应能控制指令的自动执行;运算器应能进行算术运算和逻辑运算;
(4)计算机内部一二进制形式表示指令和数据;每条指令由操作码和地址码两部分组成,操作码指出操作类型,地址码指出操作数的地址;由一串指令组成程序。
2.计算机硬件主要包括中央处理器、存储器、I/O控制器、外部设备和各类总线等。
(1)中央处理器(CPU)主要用于指令的执行。CPU主要包含两种基本部件:数据通路和控制器。数据通路主要包含算术逻辑部件和通用寄存器等,其功能是用来算术运算和逻辑运算等操作。控制器用来对指令进行译码,生成相应的控制信号,以控制数据通路进行正确的操作。(一般将运算器和控制器集成到同一个芯片上,称为中央处理器)
(2)存储器分为内存和外存,内存包括主存储器和高速缓存。外存包括辅助存储器和海量后备存储器。目前主要的辅助存储器是磁盘存储器和固态硬盘。
------CPU和主存储器共同构成主机,其他统称为外设
(3)外部设备简称为外设,也称为I/O设备。
(4)总线是传输信息的介质,用于在部件之间传输信息,CPU、主存和I/O模块通过总线互连,在CPU和I/O模块中都内含相应的存储部件,即缓存器。
(5)ALU是数据处理部件,用于执行数据的算术运算和逻辑运算,ALU处理的数据来自寄存器堆;磁盘和主存是存储部件,分别用于存储长期保存信息和临时保存信息。
1.3 计算机系统层次结构
计算机系统是一个层次结构系统,通过向上层用户提提供一个抽象的简洁接口而将较小层次的实现细节隐藏起来。计算机解决应用问题的过程就是不同抽象层进行转换的过程。
1.3.1 计算机系统抽象层的转换
1.机器语言和汇编语言都是机器级语言
2.任何一个语言处理系统,都包含一个翻译程序,它能吧一种编程语言表示的程序转换为等价的另一种编程语言程序。被翻译的语言和程序分别称为源语言和源程序,翻译生成的语言和程序分别被称为目标语言和目标程序。
翻译程序由以下三类:
(1)汇编程序:也称汇编器,用来将汇编语言源程序翻译成机器语言目标程序。
(2)解释程序:也称解释器,用来将源程序中的语句按其执行顺序逐条翻译成机器指令并立即执行。
(3)编译程序:也称编译器,用来将高级语言源程序翻译成汇编语言目标程序。
3.指令集体系结构(ISA)是软件和硬件之间接口的一个完整定义。ISA是对指令系统的一种规定或结构规范,具体实现的组织称为微体系结构,简称微架构。ISA和微体系结构是两个不同层面上的概念,微体系结构是软件不可感知的部分。相同的ISA可能具有不同的微体系结构。
微体系结构最终是由逻辑电路实现的。
1.4 程序开发与执行过程
(1)通过程序编辑软件得到hello.c文件
(2)将hello.c进行预处理、编译、汇编和链接,最终生成可执行目标文件。
1.4.3 程序与指令的关系
可执行目标文件中包含机器代码段,可执行文件的执行实际上是所包含的机器代码段执行的过程。机器代码段由一条一条机器指令构成。
指令就是用0和1表示的一串0/1序列,用来指示CPU完成一个特定的原子操作。
指令通常被划分为若干个字段,有操作码字段,地址码字段和立即数字段等。
操作码字段指出指令的操作类型,如加、减、传送、跳转等;
地址码字段指出指令所处理的操作数的地址,如寄存器编号、内存单元地址等;
立即数字段指出具体的一个操作数或偏移地址等。
1.4.4 指令的执行过程
这是冯诺依曼结构的简单模型。
在该模型中CPU包含ALU、通用寄存器(GPRS)、标志寄存器、控制器、指令寄存器(IR)、程序计数器、存储器地址寄存器(MAR)和存储器数据寄存器(MDR)。
(1)ALU用于进行逻辑运算和算术运算;
(2)通用寄存器组由若干个通用寄存器组成,每个寄存器都有一个编号;通过指令可以指定哪个编号的寄存器中的数据作为ALU运算的操作数;标志寄存器用来存放ALU运算得到的一些标志信息,如结果是否为0、有无产生进位或借位、结果是否为负数等。
(3)IR用于存放从主存读出的指令;指令的操作码被送到控制器进行译码,以生成控制信号。
(4)CPU和主存之间通过一组总线相连,总线中有地址、控制和数据3组信号线。
(5)主存储器用来存储指令和操作数。每个存储单元有一个编号称为地址,通常一个存储单元存放一个字节(8位),因此,每条指令可能可能占用多个存储单元,一个操作数也会占用多个存储单元,指令的地址和操作数的地址都是指一组连续存储单元中最小的地址。
(6)CPU和主存构成主机,主机外部的输入设备和输出设备通过相应的方式与主机相连。
冯诺依曼结构采用“存储程序”的工作方式,因此,组成一个程序的指令序列以及程序所处理的操作数都被事先存放到主存储器中。程序中第一条指令的地址之于PC中,因此,一旦启动程序执行,CPU就按照以下步骤自动取出程序中的一条一条指令执行。
第一步:根据PC取指令到IR。将PC的内容送MAR,MAR中的内容直接送地址线,同时,控制器将读信号送读/写信号线,主存根据地址线上的地址和读信号,从指定存储单元开始读出指令,并送到数据线上,MDR从数据线接受指令信息,并传送到IR中。
第二步:指令译码并送出控制信号。控制器根据IR中指令的操作码,生成相应的控制信号,送到不同的执行部件。
第三步:取操作数。
第四步:指令执行
第五步:回写结果。
当一条指令执行结束时,PC中移动时下一条指令的地址。
指令的执行由时钟信号进行定时,一条指令的执行可能需要一个或多个时钟周期。
1.5 计算机系统性能评价
1.5.1 计算机性能的定义
吞吐率和响应时间是考察一个计算机系统性能的两个基本指标。吞吐率表示在单位时间内所完成的工作量。响应时间也称为执行时间或等待时间。
1.5.2 计算机性能的测试
通常用户感觉到的执行时间分成以下两部分:CPU时间和其他时间。
CPU时间进行计算的几个概念和指标
(1)时钟周期——CPU的主脉冲信号,其宽度称为时钟周期。
(2)时钟频率:CPU的主频就是CPU中的主脉冲信号的时钟频率,是CPU时钟周期的倒数。
(3)CPI:表示执行一条指令所需的时钟周期数。
CPU执行时间=程序所含时钟周期数/时钟频率=程序所含时钟周期数*时钟周期
已知程序总的指令条数和综合CPI:
程序总时钟周期=程序所含指令条数*CPI
已知程序综合CPI和指令条数:
CPU执行时间=CPI*程序总指令条数*时钟周期