第一章 计算机系统概述
课前复习
1. 冯诺依曼计算机结构的主要特点?
2. 什么是存储程序工作方式?
3. Intel 80×86机的通用寄存器有哪些?指令指示器是做什么用的?他们都在那里?
4. Intel 80×86机的CPU包含哪几个部分?
1.1 计算机基本工作原理
第n代 | 时间 | 逻辑元件 | 存储器 | 特点 | 典型机器 | 语言 |
---|---|---|---|---|---|---|
第一代 | 20世纪四五十年代 | 电子管 | 声延迟线或磁鼓 | 定点运算 | ENIAC、EDVAC、EDSAC | 低级语言 |
第二代 | 20世纪五六十年代 | 晶体管 | 内:磁芯存储器 外:磁鼓、磁带 | 浮点运算、变址、中断、I/O处理器 | TRADIC、IBM7070 | 高级语言和编译器 |
第三代 | 20世纪六七十年代 | 集成电路 | 微程序控制器、高速缓存、虚拟存储器、流水线 | 操作系统 | DEC PDP、IBM360、CDC6600 | |
第四代 | 20世纪七十年代后期 | 超大规模集成电路 | 计算机网络 | 普适计算、嵌入式、智能化 | Cray-1 |
- 计算机是一种能自动对数字化信息进行算术和逻辑运算的高速处理装置。
功能:
- 数据处理:加减乘除、与或非、数值文字图像声音等
- 数据存储:计算机采用自动工作方式的基本保证
- 数据传送:计算机内部各个功能部件之间、计算机主机与外部设备之间、各个计算机系统之间进行信息交换的操作功能
1.1.1 冯诺依曼结构基本思想
- 存储程序
- 运算器、控制器、存储器、输入设备、输出设备
- 存储器:存储数据和指令;控制器:自动执行指令;运算器:加减乘除与或非;输入输出设备:人机通过这些设备使用计算机
- 计算机内部以二进制表示指令和数据;指令包括操作码和地址码;一串指令组成程序
1.1.2 冯诺依曼机基本结构
-
中央处理器(CPU):计算机核心
- 总线接口部件:是CPU与整个计算机系统之间的高速接口
- 功能:接受所有的总线操作请求,并按优先权进行选择,最大限度地利用本身的资源为这些请求服务。
- 执行部件:寄存器组、标志寄存器、算逻部件、控制部件等组成
-
功能:从译码指令队列中取出指令并且执行
-
寄存器组:
- 数据寄存器组
- EAX (累加器)Accumula
- EBX (基址寄存器)Base
- ECX (计数寄存器)Count
- EDX (数据寄存器)Data
- 作用:用来保存操作数、运算结果或作指示器、变址寄存 器,减少存取操作数所需要的访问总线和主存储器的时 间,加快运行速度。
- 指示器变址寄存器组
- ESI(Source Index),称为源变址寄址器;字符串指令源操 作数的指示器
- EDI(Destination Index),称为目的变址寄存器;字符串指 令目的操作数的指示器
- ESP(Stack Pointer),称为堆栈指示器,存放的是当前 堆栈段中栈顶的偏移地
- EBP(Base Pointer),为对堆栈操作的基址寄存器
- 作用:一般用来存放操作数的偏移地址,用作指示器或变址寄存器。
- 数据寄存器组
-
标志寄存器
- 条件标志
- OF:溢出标志
- SF:符号标志
- ZF:零标志
- CF:进位标志
- 控制标志
- DF:方向标志
- IF:中断允许标志
- TF:陷阱标志(单步执行)
- 条件标志
-
算逻部件
-
- 指令预取部件和指令译码部件
- 指令预取部件:通过总线接口部件,把将要执行的指令从主存中取出,送入指令排队机构中排队。
- 指令译码部件:从指令预取部件中读出指令并译码,再送入译码指令队列排队供执行部件使用。
- 指令指示器EIP:它总是保存着下一条将要被CPU执行的指令的偏移地址,其值为该指令到所在段首址的字节距离。
- 偏移地址:用它可以形成物理地址去存储器获取指令和数据
- 分段部件和分页部件
- 使用分段部件和分⻚部件实现虚拟存储空间映射到物理存储空间
- 段寄存器:保存段首描述符
- 代码段寄存器 CS
- 堆栈段寄存器 SS
- 数据段寄存器 DS
- 附加段寄存器 ES
- 附加段寄存器 FS
- 附加段寄存器 GS
- 总线接口部件:是CPU与整个计算机系统之间的高速接口
-
存储器
- 内存
- 主存储器
- 高速缓冲存储器
- 外存
- 辅助存储器:系统运行时之间和主存交换信息的存储器
- 磁盘和固态硬盘
- 海量后备存储器
- 磁带和光盘
- 辅助存储器:系统运行时之间和主存交换信息的存储器
- 内存
-
外设(I/O设备)
- 机械部分:外设本身
- 电子部分:控制外设工作的设备控制器(I/O控制器和I/O适配器)
-
总线(bus):传输信息
1.1.3 程序和指令的执行过程
指令:
- 指令(instruction):用0和1表示的一串 0/1 序列,用来指示CPU完成一个特定的原子操作。
- 取数指令 :从主存单元中取出数据存放到通用寄存器中
- 存数指令:将通用寄存器的内容写人主存单元
- 加法指令:将两个通用寄存器内容相加后送入结果寄存器
- 传送指令:将一个通用寄存器的内容送到另一个通用寄存器
- 指令通常被划分为若干个字段,有操作码、地址码等字段。
- 操作码字段指出指令的操作类型,如取数、存数、加、减、传送、跳转等
- 地址码字段指出指令所处理的操作数的地址,如寄存器编号、主存单元编号等。
每条指令的执行过程:
- 从内存中读取该指令
- 对指令进行译码
- 若为内存操作数,从内存中取操作数
- 对操作数进行运算
- 保存运算结果。若为内存操作数,保存结果到内存中
1.2 程序的开发与运行
1.2.1 程序设计语言和翻译程序
机器语言
- 机器语言:0/1序列,计算机可以理解执行
- 机器指令的一般形式:操作码+地址码
汇编语言
- 汇编语言:符号与机器指令对应的语言
- 汇编指令:机器指令对应的符号,用助记符和标号来表示的指令
- 指令包含操作码和操作数或其他地址码
- 优点:
- 不会因为增减指令修改其他指令
- 不需要记忆指令码,编写方便
- 可读性比机器语言强
机器级语言
- 机器语言和汇编语言,低级语言
- 细节多,效率低,同一程序不能在不同机器上运行
高级语言
- 与机器结构无关
- 面相算法描述,比机器语言描述能力强
- 有面向过程和面向对象之分
- 处理逻辑分三种结构
- 顺序、选择、循环
- 两种转换方式
- 编译程序
- 解释程序
1.2.2 从源文件到可执行文件
-
源程序:文本文件;用户编写;*.c, *.cpp, *.asm
-
目标程序:二进制文件;机器可识别,但不能执行;*.o(*.obj)
-
可执行程序:二进制文件;机器可执行;(*.exe)
-
编译器:将源程序转换为目标程序
-
链接器:将一个或多个目标程序链接生成可执行程序
-
预处理阶段:预处理程序(cpp) 对源程序中以字符#开头的命令进行处理,输出结果是一个源程序文件,以.i为扩展名。
-
编译阶段:编译程序(ccl)对预处理后的源程序进行编译,生成一个汇编语言源程序文件,以.s为扩展名。
-
汇编阶段:汇编程序(as)对汇编语言源程序进行汇编,生成一个可重定位具标文件(relocatable object file),以.o为扩展名,二进制文件。
-
链接阶段:链接程序(ld)将多个可重定位目标文件和标准库函数合并成为一个可执行目标文件(executable object file),可执行目标文件可简称为执行文件。
1.2.3 可执行文件的启动和执行
- 程序的执行过程就是数据组CPU、主存储器、I/O模块之间流动的过程
- 数据的流动都是通过总线、I/O
启动和执行过程:
- 双击图标,或在命令行中输入可执行程序文件名
- 从硬盘上将可执行程序的文件加载到内存中
- 将CPU中的指令指示寄存器EIP,指向程序的第一条指令
- CPU开始执行程序,按程序执行每条指令