第二章计算机组成原理
2.1计算机系统概述
计算机系统包括硬件和软件两大部分,硬件是具体的物理装置,软件指运行再硬件之上的程序,数据以及相关文档。
2.1.1计算机发展历程
世界上第一台通用电子计算机是1946年在美国诞生的ENIAC。研制小组在设计和研制ENIAC过程中,意识到ENIAC还存在很多问题,例如,没有储存器,也没有采用二进制。因此1945年,参与研制ENIAC的冯.诺伊曼
”存储程序“方式的基本思想是:必须将事先编好的程序和原始数据送入主存后才能执行程序,一旦程序被启动执行,计算机能在无须操作人员干预的情况下自动完成逐条指令并执行的任务。
1965年Intel公司的创始人戈登,摩尔(Golden Moore)对半导体芯片工业发展前景进行了预测:由于归技术的不断改进,每18个月,集成度将翻一番,速度将高一倍,而其价格将降低一半。这就是著名的摩尔定律,在计算机发展的几十年中,它一直引导着计算机产业的发展。
2.1.2计算机系统层次结构
计算机系统是由各种硬件和各类软件采用层次化方式构建的系统,硬件和软件之间通过指令关联,指令是对硬件功能的抽象,软件通过指令使用硬件。
1.计算机系统的基本组成。
图2-1是计算机系统层次 转换示意图,描述了从最终用户希望计算机完成的应用(问题)到电子工程师使用器件电路设计的整个转换过程。计算机硬件只能理解机器语言,应用问题转换为计算机语言程序,需要经过多个抽象层的转换。
应用(问题) | 最终用户 | |
---|---|---|
算法 | 程序员 | |
软件 | 编程(语言) | 程序员 |
操作系统/虚拟机 | 程序员 | |
指令集体结构(ISA) | 架构师 | |
微体系结构 | 架构师 | |
功能部件/RTL | 架构师 | |
硬件 | 电路 | 电子工程师 |
器件 | 电子工程师 | |
首先,根据算法编写程序,绝大数程序员使用高级语言编写程序。将高级语言程序转换成机器语言程序所运行的计算机硬件和软件之间需要有一个”桥梁“,这个在软件和硬件之间的界面就是指令集体系结构(Instruction Set Architecture,ISA)简称体系结构或系统结构,它是软件和硬件之间的接口的一个完成定义
机器语言程序就是一个ISA规定的指令的序列,因此,计算机硬件执行机器语言程序的过程就是让其执行一条一条指令的过程。
2.计算机硬件的基本组成
计算机发展至今,绝大部分计算机的基本组成仍然具有冯·诺依曼结构计算机的特征,即;计算机由运算器,控制器,存储器,输入设备和输出设备五个基本部件组成;存储器不仅能存放数据,而且也能存放指令,形式上数据和指令没有区别,但计算机应能区分它们;控制器应能控制指令的自动执行;运算器应能进行加,减,乘,除,四种基本算术运算,并且也能进行逻辑运算,操作人员可以通过输入输出设备使用计算机;计算机内部以二进制形式标识指令和数据;每条指令由操作码和地址吗两部分组成,操作码指出操作类型,地址吗指出操作数的地址;由一串指令组成程序。
现代计算机中将控制器和运算器以及完成指令执行的一些辅助电路,如通过寄存器等,都放在一个处理器芯片中,这种部件称为中央处理器(CPU)。
3.计算机软件的分类
根据软件的用途,一般将软件分成系统软件和应用软件两大类。系统软件包括有效,安全地使用和管理计算机以及开发和运行应用软件而提供的各种软件,包括操作系统(如Windows,UNIX,Linux),言语处理系统(如 Visual Studio,GCC),数据库管理系统(如Oracle)和各类使用程序(如磁盘碎片整理程序,备份程序)。应用软件指专门为数据处理,可续计算,事务管理,多媒体处理,工程处理,工程设计以及过程控制等应用所编写的各类程序。
4.计算机的工作过程
高级语言程序必须先转换成机器语言表示的可执行目标代码,然后才能装入寄存器并由CPU执行。将高级语言程序转换为机器语言目标代码的过程主要包括编译阶段,汇编阶段,链接阶段。最终生成的可执行目标代码以可执行文件的方式被保存在磁盘上,可以通过某种方式启动一个磁盘上的可执行文件运行。
一旦可执行目标代码被执行,则CPU将自动取出一条条指令并执行。将要执行的指令在存储器中的地址被保存在程序计数器(PC)中。
指令执行过程包括:从存储器取指令并计算下一条指令的地址,对指令进行译码,取操作数,对操作数进行运算,送运算结果到存储器或寄存器保存。每次从存储器取指令都是将PC的值作为指令的地址,在指令执行过程中,计算出的下一条要执行指令的地址送到PC;当前指令执行完后,在根据PC的值访问存储器,从而能够周而复始地取出并执行程序中的一条条指令。指令的执行由时钟信号(clock signal)进行定时,一条指令的执行可能需要一个或多个时钟周期的时间。
2.1.3计算机性能指标
计算机系统的性能评价主要考虑CPU性能。CPU性能主要指用户CPU时间,即CPU运行用户程序的时间。在对程序执行时间进行计算时需要用到以下几个重要的概念和指标。