1.1 为什么要学习计算机系统基础
1.用系统思维分析问题
2.什么是计算机系统
3.计算机系统基础内容提要
1.2 计算机系统基本组成与基本功能
1.计算机发展史
(1) 第1台通用电子计算机
1946年,第1台通用电子计算机ENIAC诞生
(Electronic Numerical Integrator And Computer 电子数字积分计算机)
–由电子真空管组成
–美国宾夕法尼亚大学研制
–用于解决复杂弹道计算问题 –5000次加法/s
–可进行平方、立方、sin、cos等运算
–用十进制表示信息并运算
–采用手动编程,通过设置开关和插拔电缆来实现
(2) 现代计算机的原型
离散变量自动电子计算机EDSAC(Electronic Discrete Variable Automatic Computer)
–1946年,普林斯顿高等研究院(the Institute for Advance Study at Princeton,IAS )开始设计“存储程序”计算机,被称为IAS计算机
(1951年才完成,并不是第一台存储程序计算机,1949年由英国剑 桥大学完成的EDSAC是第一台)。
–在那个报告中提出的计算机结构被称为冯·诺依曼结构。
–冯·诺依曼结构最重要的思想是“存储程序(Stored-program)” 工作方式:
任何要计算机完成的工作都要先被编写成程序,然后将程序和原始 数据送入主存并启动执行。
一旦程序被启动,计算机应能在不需操 作人员干预下,自动完成逐条取出指令和执行指令的任务。
–冯·诺依曼结构计算机也称为冯·诺依曼机器(Von Neumann Machine)。
–几乎现代所有的通用计算机大都采用冯·诺依曼结构,因此,IAS计 算机是现代计算机的原型机。
(3) 冯·诺依曼结构计算机模型
早期,部件之间用分散方式相连
现在,部件之间大多用总线方式相连
(4) 冯诺依曼结构的主要思想
- 计算机应由运算器、控制器、存储器、输入设备和输出设备 五个基本部件组成。
- 各基本部件的功能是:
- 存储器不仅能存放数据,而且也能存放指令,形式上两者 没有区别,但计算机应能区分数据还是指令;
- 控制器应能自动取出指令来执行;
- 运算器应能进行加/减/乘/除四种基本算术运算,并且也 能进行一些逻辑运算和附加运算;
- 操作人员可以通过输入设备、输出设备和主机进行通信。
- 内部以二进制表示指令和数据。每条指令由操作码和地址码 两部分组成。操作码指出操作类型,地址码指出操作数的地 址。由一串指令组成程序。
- 采用“存储程序”工作方式。
2. 现代计算机模型
(1)现代计算机基本部件及组成
(2) 计算机工作原理
妈妈做菜过程
类似“存储程序”工作方式
做菜前
原材料(数据)和菜谱(指令)都按序放在厨房外的架子(存储器)上,
每个架子有编号(存储单元地址)。
菜谱上信息:原料位置、做法、做好的菜放在哪里等
例如,把10、11号架上的原料一起炒,并装入3号盘
然后,我告诉妈妈从第5个架上(起始PC=5)指定菜谱开始做
开始做菜
第一步:从5号架上取菜谱(根据PC取指令)
第二步:看菜谱(指令译码)
第三步:从架上或盘中取原材料(取操作数)
第四步:洗、切、炒等具体操作(指令执行)
第五步:装盘或直接送桌(回写结果)
第六步:算出下一菜谱所在架子号6=5+1(修改PC的值)
继续做下一道菜(执行下一条指令)
计算机的工作
程序在执行前
数据和指令事先存放在存储器中,每条指令和每个数据都有地址,
指令按序存放,指令由OP、ADDR字段组成,程序起始地址置PC
(原材料和菜谱都放在厨房外的架子上,每个架子有编号。妈妈从第5个架上指定菜谱开始做)
开始执行程序
第一步:根据PC取指令(从5号架上取菜谱)
第二步:指令译码(看菜谱)
第三步:取操作数(从架上或盘中取原材料)
第四步:指令执行(洗、切、炒等具体操作)
第五步:回写结果(装盘或直接送桌)
第六步:修改PC的值(算出下一菜谱所在架子号6=5+1)
继续执行下一条指令(继续做下一道菜)
(3)指令和数据
-
程序启动前,指令和数据都存放在存储器中,形式上没有差别, 都是0/1序列
-
采用”存储程序“工作方式:程序由指令组成,程序被启动后,计算机能自动取出一条一
条指令执行,在执行过程中无需人的干预。 -
指令执行过程中,指令和数据被从存储器取到CPU,存放在CPU内的寄存器中,指令在IR中,数据在GPR中。
-
指令中需给出的信息:
- 操作性质(操作码)
- 源操作数1 或/和源操作数2 (立即数、寄存器编号、存储地址)
- 目的操作数地址 (寄存器编号、存储地址)
-
存储地址的描述与操作数的数据结构有关!
3. 计算机的基本组成与基本功能
1.什么是计算机?
- 计算机是一种能对数字化信息进行自动、高速算术和逻 辑运算的处理装置
2.计算机的基本部件及功能:
- 运算器(数据运算):ALU、GPRs、标志寄存器等
- 存储器(数据存储):存储阵列、地址译码器、读写控制电 路
- 总线(数据传送):数据(MDR)、地址(MAR)和控制线
- 控制器(控制):对指令译码生成控制信号
3.计算机实现的所有任务都是通过执行一条一条指令完成的!
1.3 程序开发和执行过程简介
1.用机器级语言开发程序
- 汇编语言(源)程序由汇编指令构成
- 汇编指令: 用助记符和标号来表示的指令(与机器指令一一对应)
- 指令
- 包含操作码和操作数或其地址码(机器指令用二进制表示,汇编指令用符号表示)
- 只能描述:取(或存一个数)两个数加(或减、乘、除、与、或等)根据运算结果判断是否转移执行
- 机器语言和汇编语言都是面向机器结构的语言, 故它们统称为机器级语言
2.用高级语言开发程序
现在,几乎所有程序员都用高级语言编程,但最终要将高级语言转换为机器语言程序
–它们与具体机器结构无关
–面向算法描述,比机器级语言描述能力强得多
–高级语言中一条语句对应几条、几十条甚至几百条指令
–有“面向过程”和“面向对象”的语言之分
–处理逻辑分为三种结构
•顺序结构
•选择结构
•循环结构
–有两种转换方式:“编译”和“解释”
•编译程序(Complier):将高级语言源程序转换为机器级目标程序,执行时只要启动目标程序即可
•解释程序(Interpreter):将高级语言语句逐条翻译成机器指令并立即执行,不生成目标文件
3.一个典型程序处理与执行
(1)程序的处理与转换
(2)程序的数据流动过程
(3)不同层次语言间的等价转换
(4)开发和运行程序需要的支撑
1.4计算机系统层次结构
1.现代(传统)计算机的层次
- 应用程序
- 语言处理系统
- 各种语言处理程序(如编译、汇编、 链接)
- 运行时系统(如库函数,调试、优化等功能)
- 操作系统
- 人机交互界面
- 提供服务功能的内核例程
- 指令集体系结构
- 计算机硬件
2.计算机系统抽象层的转换
程序执行结果 不仅取决于算法、程序编写,而且取决于语言处理系统、操作系统、ISA 微体系结构
功能转换:上层是下层的抽象,下层是上层的实现,底层为上层提供支撑环境
3.指令集体系结构ISA
-
指令集体系结构ISA(Instruction Set Architecture),有时简称为指令系统
-
ISA是一种规约(Specification),它规定了如何使用硬件
– 可执行的指令的集合,包括指令格式、操作种类以及每种操作对应的操作数的相应规定;
– 指令可以接受的操作数的类型;
– 操作数所能存放的寄存器组的结构,包括每个寄存器的名称、编号、长度和用途;
– 操作数所能存放的存储空间的大小和编址方式;
– 操作数在存储空间存放时按照大端还是小端方式存放;
– 指令获取操作数的方式,即寻址方式;
– 指令执行过程的控制方式,包括程序计数器(PC)、条件码定义等。 -
ISA是计算机组成的抽象
- 不同ISA规定的指令集不同,如,IA-32、MIPS、ARM等
- 计算机组成必须能够实现ISA规定的功能,如提供GPR、标志、运算电路等 同一种ISA可以有不同的计算机组成,如乘法指令可用ALU或乘法器实现
- 没有它,软件无法使用计算机硬件,一台计算机也不能称为“通用计算机”