1.计算机经历了电子管,晶体管,集成电路,超大规模集成电路以及极大规模集成电路等多个发展阶段。
2.计算机系统具有数据处理,数据存储和数据传输三种基本功能。
3.计算机由硬件和软件两个部分组成:
硬件
是物理装置的总称。包括芯片,板卡、外设、电缆等都是计算机硬件;
软件
包括运行在硬件上的程序和数据,以及相关的文档。
程序
是指挥计算机如何操作一个指令序列。也即程序是由指令组成。
指令
是计算机硬件能够直接理解并执行的最基本操作。
数据
是指令操作的对象。
1.1 计算机硬件的基本组成
存储程序 方式的基本思想是,必须将事情编好的程序和允许数据送入储存后才能执行程序,一段程序被启动执行计算机不需再人工干预下自动完成逐条指令取出和执行任务。
1.1.1 冯.诺依曼结构基本思想
1.1.2 现代计算机的基本组成
计算机硬件主要包括中央处理器、存储器、外部设备和各类总线等。
中央处理器(Central Processing Unit)简称CPU,CPU是整个计算机的核心部件,主要用于指令的执行。CPU主要包含两个基本部分:数据通路和控制器。
数据通路(datapath):
是指指令执行过程中数据所流经的部件。其中包括各类运算部件。最重要的是
算术逻辑部件(Arithmetic Logic Unit,简称ALU)
,它用来进行基本的算术和逻辑运算。ALU中最基本的部件是
加法器
,所有算数运算都可以基于加法运算和逻辑运算来实现。
控制器
用来对指令进行译码,生成相应的控制信号。以控制数据通路进行特定的操作。
存储器分为内存和外存,内存,包括主存储器(简称主存)和高速缓冲存储器。外存,包括辅助存储器(辅存)和海量后备存储器。
外部设备简称外设,也称I/O(input/output)设备。每个外设都需要相应的控制逻辑,通常将控制外部设备工作的控制逻辑,称为I/O控制器或I/O适配器。外设通过I/O控制器或者I/O适配器连接到主机上。他俩统称为设备控制器。属于一种I/O模块和I/O接口。
总线是传输信息的通路,用于部件之间传输信息。CPU、主存和I/O模块通过总线互联。
1.2 计算机软件概述
为了充分利用处理器、存储器和输入输出设备等计算机资源。出现了操作系统;为了提高并编程效率出现了高级语言;为了适应大量的数据处理出现了数据库及其管理系统。根据软件的用途,一般将软件分成系统软件和应用软件两大类。
系统软件介于计算机硬件和应用程序之间。包括操作系统(Windows、UNIX 、Linux.),语言处理系统(Visual Studio、GCC),数据库管理系统(Oracle)和各类应用程序(磁盘碎片整理程序、备份程序)。
操作系统
:管理整个计算机系统资源;提供计算机用户与硬件之间的交互;提供对应用软件的支持。
语言处理系统:
提供高级语言编程环境;对源程序编辑、翻译、调试、链接装入运行等功能
应用软件只专门为数据处理、科学计算、事务管理、多媒体处理、工程设计以及过程控制等应用编写的各类程序。
1.3 计算机系统层次结构
计算机系统是一个层次结构系统,通过向上层用户提供一个抽象的简洁接口而将较低层次的实现细节隐藏起来。计算机解决应用问题的过程就是不同层次进行转换的过程。
希望计算机解决一个问题,最开始形成是用自然语言描述的。但是计算机硬件,只能够理解计算机语言。而将一个自然语言的描述应用问题转换成机器语言程序,需要经过多个抽象层的转换。
编程语言将算法转换为程序。
程序编程语言与自然语言不同,它有严格的执行顺序,不存在二义性,能够唯一地确定计算机执行指令的顺序。从抽象层次上来分,程序语言可以分为高级语言和低级语言两类。
高级语言
和底层计算机结构关联不大,是机器无关语言,大部分编程语言都是高级语言。
低级语言
和计算机底层结构密切相关,通常称为机器语言。
机器语言
和
汇编语言
都是机器级语言。
汇编语言
用简短的英文符号和二进制代码建立对应关系。方便程序员编写和阅读机器语言程序。
语言处理系统用编译程序把一种编程语言表示的程序转化为等价的另一种编程语言程序。编译程序有以下三类:
汇编程序
也称
汇编器
,用来将汇编语言源程序翻译成机器语言目标程序。
解释程序
也称解释器,用来将源程序中的语句按其执行顺序逐条用子程序进行解释并最终转换成机器指令执行。
编译程序
也称编译器,用来将高级语言源程序翻译成汇编语言和机器语言目标程序。
指令集体系结构,简称体系结构和系统结构。定义了计算机可执行的所有指令的集合,每条指令规定了计算机执行什么操作,以及处理的操作数存放的地址空间和操作数据类型。
体系结构是对指令系统的一种规定和结构规范。具体实现组织称为微体系结构,简称微架构。
微体系结构由逻辑电路实现。每个基本的逻辑电路都是按特定的器件技术实现。
1.3.2 不同用户所在的工作层次
在计算机上完成的任务不同,可以把用户分成一下四类:最终用户、系统管理员、应用程序猿和系统程序。
1.4 程序开发与执行过程
程序有时被称为用户程序或者应用程序。
1.4.1 从源程序到可执行目标程序
(1)编辑程序保存为文本文件(ASCLL码和汉字字符表示的文件称为文本文件)
(2)将编程好的文件进行预处理、编译、汇编和链接,生成可执行的目标文件。
预处理阶段
:例如上面的程序,已处理程序对源程序中,以字符“#”开头的命令进行处理。将后面的.h文件嵌入进来。
编译阶段
:对源程序进行编译生成一个汇编语言源程序。以 .s 为扩展名
汇编阶段
:汇编程序对汇编语言进行汇编生成一个可重新定位的目标文件。一 .o 为扩展名
链接阶段
:链接程序将多个可重定位目标文件和标准库函数目标模块合并成一个
可执行目标文件
(可执行文本)。
1.4.2 冯.诺依曼结构模型机
要求:了解冯.诺依曼结构模型机的组成、各个部件的基本概念及作用,以及指令的执行过程。
由cpu和主存构成一个主机,之间通过一组总线相连,主机外部依靠输入、输出设备通过相应的方式与主机相连。
1.4.3指令的执行过程
例如这是一次算术逻辑部件ALU运算指令
1)根据程序计数器取到指令到指令寄存器。
指令计数器的内容发送到存储器地址寄存器,存储器地址寄存器中的内容会直接送到地址线,同时,控制器将“读命令”送至读/写信号线,主存根据地址线上的地址和“读命令”,从主存指定的存储单元开始读取指令,并送到数据线上,存储器数据寄存器从数据线接受指令信息,传送到指令寄存器中。
2)指令译码并送出控制信号
控制器根据指令寄存器中指令的操作码对指令进行译码,生成相应的控制信号,然后将控制信号发送到不同的执行部件。例如ALU运算指令的控制信号会被送到ALU的操作控制端。
3)取操作数
根据指令寄存器IR中指令指定的寄存器编号选择寄存器中的内容作为操作数,送到ALU的输入端。
4)指令执行
在算术逻辑部件ALU的控制信号下,进行相应的运算,并生成运算结果和相应的标志信息。
5)回写结果
将算术逻辑部件ALU的结果写入指定编号的寄存器或者指定的主存单元中。
指令结束时,为了能自动执行程序中的指令,CPU必须能够自动得到下一条指令的地址并送到PC。
对于定长指令字系统(每一条指令长度都一样长的指令系统):只要每次都将程序计数器PC自动加上指令长度即可,通常在主存取指令时修改PC。
对于变长指令系统:需要对指令进行译码,根据不同情况来使PC加上不同的值。
指令周期:一条指令的读取并执行的时间称为指令周期。
时钟信号:每个指令周期中包含了不同的操作,这些操作需要有相应的控制信号进行控制,何时发出、作用时间多长,都需要有定时信号进行同步,这个同步信号就是CPU的主脉冲信号,也称时钟信号,其宽度称为CPU的时钟周期。其宽度称为CPU的时钟周期。由此可见,一个指令周期包含一个或者多个时钟周期。
1.4.4程序和指令的关系
可执行文件中包含了机器的代码段,代码段其实是由一条条机器指令构成的,程序启动后,CPU通过逐条执行程序中的指令来实现程序的功能。
指令:通常被划分为若干字段:操作码字段、地址码字段等。
操作码字段指出操作类型:加、减、传送、跳转等;
地址码字段指出指令处理的操作数所在的存储地址。
1.5 计算机系统性能评价
1.5 .1 计算机性能的定义
吞吐率(throughput)和响应时间(response time)是考量一个计算机系统性能的两个基本指标。
吞吐率:单位时间内完成的工作量
相应时间(执行时间或等待时间):指从作业提交开始到作业完成所用的时间
1.5.2 用CPU执行时间进行性能评估
从执行时间来考虑,完成同样工作量所需时间最短的那台计算机性能是最好的。
执行时间分成以下两部分:
计算机系统性能评价主要考虑的是CPU性能。系统性能和CPU性能不等价,系统性能是指系统的响应时间,它与CPU外的其他部分也有关系。
CPU时间计算几个重要的概念和指标:
1.时钟周期:对一条指令每一步操作的控制信号进行定时同步信号就是CPU时钟信号,其宽度为一个时钟周期。
2.时钟频率:CPU的主频就是CPU时钟信号的时钟频率,是CPU时钟周期的倒数。例:
主频为1.0MHz表示每秒发生10^6个时钟信号,因此时钟周期为10^-6s(秒);
3.CPI(cycles per instruction)表示执行一条指令所需的时钟周期。
CPU执行时间=程序所含时钟周期数/时钟频率
CPU执行时间=程序所含时钟周期数*时钟周期
CPU执行时间=程序所含指令条数*时钟周期*CPI
程序总时钟周期数=程序所含指令条数*CPI
1.5.3 用执行速度进行性能评估
因为早期的大多指令的执行时间是相同的,所以指令速度有一定的代表性,单位为MIPS(平均每次执行多少条百万条数据)。
随着计算机体系结构的发展,不同指令所需的执行时间差别越来越大,人们就根据等效指令速度法,通过统计各类指令在程序中所占比例进行折算。
但是用MIPS来对不同的机器进行性能比较有时是不准确或不客观的。因为不同机器的指令集不同,而且指令的功能也不同;另外,不同机器的CPI和时钟周期也不同,因而同一条指令在不同机器上所用的时间也不同。
1.5.4 用基准程序进行性能评估
基准程序是进行计算机性能测评的一种重要工具。基准程序是专门用来进行性能评价的一组程序,能够很好地反映机器在运行实际负载时的性能。最好就是用户经常使用的一些实际程序,或是某个应用领域的一些典型的简单程序。
执行时间的归一化值=参考机器上的执行时间/被测机器上的执行时间