基本概念
- 机器语言:计算机能直接识别执行的语言,机器语言的程序由0、1代码序列组成
- 汇编语言:把机器指令表示为助记符,与机器语言指令一一对应
- 高级语言:接近自然语言,按约定符号和规则写程序
- 编译程序:把高级语言程序翻译成机器语言目标代码的系统软件
- 汇编程序:把汇编语言程序翻译成机器语言目标代码的系统软件
- 字长:运算器能并行参与运算的数据位数,取决于CPU内部寄存器的数据宽度
- 系列机:一个厂家生产的,具有相同的系统结构,但具有不同组成和实现的一系列不同型号机器
- 软件兼容:现有的软件在升级换代后的新机器上可以使用
- 虚拟机器:从使用者角度,计算机系统是硬件上的虚拟机器;虚拟机依靠软件存在,软件扩充了系统功能
- 二进制位:是数字计算机中信息最小的位
- 字节:8个二进制数是1个字节。计算机系统存储器按字节编址。
- 内存地址:给存储器每个位置编号,方便访问指定位置,该编号是内存地址
计算机系统层次结构
计算机系统的组成
- 硬件系统:有形的物理设备,计算机系统中实际物理装置的总称
- 软件系统:在硬件上运行的程序、相关数据、文档
计算机硬件的基本组成
早期冯诺依曼机
冯诺依曼提出了“存储程序”概念(指令以代码形式事先输入主存储器,按程序首地址开始按顺序执行直至程序结束)和二进制原理,以此概念原理为基础的各种计算机通称为冯诺依曼机,特点如下:
- 计算机硬件系统由运算器、存储器、控制器、输入设备、输出设备5个部分组成
- 指令和数据以同等地位存到存储器中,按址访问
- 指令和数据以二进制代码表示
- 指令由操作码和地址码组成,操作码是操作的类型,地址码指出操作的地址
- 指令在存储器内按顺序存放。通常是顺序执行,特定条件下可以改变执行顺序
现代计算机组织结构
- 早期的冯诺依曼机以运算器为中心,输出输出设备通过运算器与存储器传送数据
- 现代计算机以存储器为中心,输入输出尽量绕过CPU,提高效率。
- 现代计算机仍然遵循存储程序的设计思想
硬件组成和功能
现代计算机虽然结构和冯诺依曼机有区别,但硬件组成和功能相同,具体如下
- 输入设备:用于输入原始数据和程序,如键盘、鼠标
- 输出设备:用于输出计算机处理结果,如显示器、打印机
- 运算器:核心是一个算术逻辑运算部件ALU,完成信息或数据的处理运算,包括加、减、乘、除、比较、移位、逻辑运算,是计算机的执行部件
- 控制器:是整个计算机的指挥中心,在指令执行过程中产生指挥各个部件协同工作的控制信号
- 存储器:用于存放原始数据、程序、中间运算结果、最终处理结果。分为主(内)存储器和辅(外)存储器。CPU(即中央处理器,是运算器和控制器集成的芯片)能直接访问的程序和数据在主存储器中。此外,CPU和主存构成主机,外存和IO设备是外部设备。
计算机系统软件分类
- 系统软件
- 一组保证计算机系统高效正确运行的基础软件,作为系统资源供用户使用。
- 主要包括操作系统(OS)、数据库管理系统(DBMS)、语言处理程序、分布式软件系统、网络软件系统、标准库程序、服务性程序
- 应用软件
- 用户为了解决某个应用领域的问题编写的程序
- 例如科学计算程序、工程设计程序、数据统计处理程序
计算机软件和硬件的关系
- 是完整计算机系统中相互依存的两大部分
- 硬件是软件工作的物质基础,支持软件发挥性能
- 软件是硬件发挥作用的途径,完善的软件系统能充分发挥硬件各种功能
- 软件和硬件有逻辑等价性
- 软件能完成的工作硬件也能完成
- 硬件能完成的工作软件大多也能完成
- 软件实现更灵活、可复制
- 硬件实现更高效
计算机工作原理
存储程序工作方式
计算机的工作过程是
- 把数据和程序装入主存储器
- 将源程序转换成可执行文件,并保存到磁盘上
- 存储程序工作方式:把可执行文件保存到主存储器中,并从首地址开始逐条执行指令
高级语言程序与机器语言程序转换
- 解释方式
- 用专门的解释器将源程序逐行翻译为机器代码并立刻执行,不形成目标程序
- 每次执行都需要翻译一次,运行效率低,且不能脱离解释器独立运行
- 优点是只要提供特定平台的解释器,就可以方便实现源程序级别的跨平台移植
- 编译方式
- 专用的编译器,一次将高级语言源程序翻译成机器语言程序,编译后生成,可执行目标程序可以脱离开发环境独立运行,效率高
- 如果需要移植到其他平台,则需要采用特定平台编译器重新编译
- 大部分编译程序直接产生机器语言目标文件,也有的先产生汇编语言代码文件,再用汇编程序处理产生可执行机器语言目标文件
- 举一个GCC编译器的例子
- 预处理阶段:输入源文件hello.c,经过预处理器cpp对源文件的“#”开头命令进行处理,去掉注释,输出hello.i
- 编译阶段:编译器ccl对预处理后的源程序进行编译,生成汇编语言源程序hello.s
- 汇编阶段:汇编器as把hello.s翻译成机器语言指令,并打包成可重定位目标文件hello.o,这是二进制文件,文本编辑器打开是乱码
- 链接阶段:链接器ld把多个可重定位目标文件和标准库函数合并为一个可执行目标文件hello,最终保存到磁盘上。
程序与指令的执行过程
程序的第一条地址存在PC中,完成一条指令,会计算下一条指令的地址,程序和指令的执行过程分为三个阶段:
- 取指令
- 分析指令
- 执行指令
计算机系统层次结构
- 层次划分为
- 第0级机器:硬联逻辑级。由门电路、触发器等逻辑电路构成
- 第1级机器:微程序级。根据各指令操作的控制时序,用微指令写微程序,控制信息在部件之间传送
- 第2级机器:传统机器语言机器。机器语言程序员用此级指令系统写程序,并由第1级解释或第0级直接实现
- 第3级机器:操作系统机器(又叫混合层)。提供有人机交互功能的用户界面和底层系统调用服务例程。除了提供传统机器指令,还提供操作系统级别的指令(如打开文件,读写文件,关闭文件等)。
- 第4级机器:汇编语言机器。用汇编语言编写的程序,先由汇编程序翻译成第3级或第2级语言,再由相应机器解释。
- 第5级机器:高级语言机器。用高级语言写的程序由编译程序翻译成第4级或第3级机器上的语言,个别高级语言也用解释方式实现
- 第6级机器:应用语言机器。非计算机专业人员可以直接使用计算机,在用户终端用键盘或其他方式发出服务请求即可进入该级的信息处理系统
- 在特定计算机系统中,有些级可能不存在
- 划分层次的意义
- 便于分开研究层内和层间的关系,优化系统结构
- 便于理解计算机系统软件硬件逻辑等价性
- 虚拟机的概念:在硬件上由于软件的发展,扩充了计算机系统功能,不同语言用户面对的是不同层次的虚拟机
- 0-2层是没有软件配置的裸机,3-6层是虚拟机
计算机性能指标
主要衡量性能的指标有存储容量和速度,常见的具体指标如下
- 机器字长:计算机进行一次整数运算所能处理的二进制数据的位数,和CPU寄存器位数、加法器有关,通常是字节的整数倍
- 数据通路带宽:外部总线一次能传送的信息位数
- 主存储量:主存储器所能存储信息的最大容量,用字节衡量,或字数乘字长衡量
- 吞吐量:系统单位时间内处理请求的数量,主要取决于主存存取周期
- 响应时间:从用户发送请求,到计算机系统做出响应并获得结果需要的等待时间。包括CPU时间和等待时间(磁盘访问、存储器访问、IO、操作系统开销等)
- CPU时钟周期:CPU最小时间单位
- 主频:CPU时钟周期的倒数,机器内部时钟的频率,单位HZ
- CPI:平均每条指令执行需要的时钟周期数
- IPC:每个时钟周期执行的指令条数
- CPU执行时间:等于时钟周期数
时钟周期,等于(指令数 CPI) 时钟周期。这里的指令数、CPI、主频是相互制约的。 - MIPS:每秒执行多少百万条的指令数(同时考虑了主频和CPI),等于指令条数/(
执行时间)= 1/( 每条指令执行时间)= 主频/( CPI)。这种指标有缺陷,因为不同机器的指令集不同。 - MFLOPS:每秒执行多少百万次浮点运算,等于浮点操作次数/(执行时间
) - GFLOPS:每秒执行多少十亿次浮点运算,等于浮点操作次数/(执行时间
) - TFLOPS:每秒执行多少万亿次浮点运算,等于浮点操作次数/(执行时间
) - PFLOPS:等于浮点操作次数/(执行时间
) - EFLOPS:等于浮点操作次数/(执行时间
) - ZFLOPS:等于浮点操作次数/(执行时间
)
补充
关于常用前缀
- 描述存储容量、文件大小时,K、M、G、T是2的幂次,如1Kb=1024b
- 描述速度、频率时,k、M、G、T,是10的幂次,如1kb/s=1000b/s
- 前者用大写的K,后者用小写的k,其他的都用大写
关于透明性
- 计算机领域的透明性,指的是不可见的事物
- 比如
- 高级语言程序员,不可见乘法指令、浮点数格式
- 机器语言或汇编程序员不可见IR、MAR、MDR