计算机组成原理第一章
计算机发展历程:
第一代(1946-1957) 电子管时代 电子管 机器语言 主存延迟线或磁鼓 外存穿孔卡片和纸带 速度几千次到几万次
第二代(1958-1964) 晶体管时代 晶体管 高级语言(汇编语言、FORTRAN)主存磁芯存储器 外存磁带 几万次到几 十万次 有了操作系统雏形
第三代(1965-1971) 中小规模集成电路时代 中小规模集成电路 高级语言发展迅速 主存半导体存储器 外存磁带磁盘 速度几十万到几百万 有了分时操作系统
第四代(1972-现在) 超大规模集成电路时代 大规模集成电路和超大规模集成电路 主存半导体存储器 外存磁盘磁带 光盘半导体存储器 上千万到万亿 产生了微处理器
从第一代到第四代 计算机体系结构都是相同的即都由控制器、运算器、存储器、输入输出设备组成称为冯·诺依曼体系结构
第五代计算机 智能计算机 具备人工智能 ,像人一样思维 运算速度极快 软件系统能够处理知识信息 代表: 神经网络计算机
第六代计算机 生物计算与量子计算机 未来计算机发展的方向和趋势
计算机元件的更新换代
摩尔定律:集成电路上可容纳的晶体管数目每隔十八个月会增加一倍 揭示了信息技术进步的速度
半导体存储器的发展 :1970年 ,仙童半导体公司生产了第一个较大容量的半导体存储器
微处理器的发展 :微型计算机的发展以微处理技术为标志
软件发展历程
计算机的分类:
按用途分类
专用计算机
针对某类问题 适应性差
通用计算机
分为巨型机、大型机、中型机、小型机、微型机、单片机
按指令和数据流
单指令流和单数据流(SISD),传统的冯诺依曼体系结构
单指令流和多数据流(SIMD),阵列处理器和向量处理器
多指令流和单数据流(MISD)不存在
多指令流和多数据流(MIMD)多处理器和多计算机系统
计算机发展趋势
计算机发展“两极”分化
微型计算机向更微型化、网络化、高性能、多用途方向发展
巨型机向更巨型化、超高速、并行处理、智能化方向发展
操作系统直接影响计算机系统的性能
DOS-->UNIX-->Linux-->Windows
计机系统的基本组成
硬件系统
“看的见摸得着”的设备
软件系统
在硬件上运行的程序和相关的数据及文档
对于某个功能来说,既可以用软件实现又可以用硬件实现,则称软硬件逻辑上是等效的(而不是等价!!!)
设计时,要进行软硬件的功能分配。通常来说,如果一个功能使用较为频繁且用硬件实现的成本较为理想,则使用硬件,提高效率;使用软件,提高灵活性,但效率不如硬件高
计算机硬件的基本组成
早期冯诺依曼机
思想“存储程序”:指令-->主存储器-->按其在主存的首地址开始执行第一条指令-->按程序的规定顺序执行其他的指令
特点
计算机硬件系统由运算器、控制器、存储器、输入/输出设备组成
早期的冯诺依曼机以运算器为中心(运算器和控制器是分离的),输入输出设备通过运算器与存储器传送数据
指令和数据均用二进制代码表示(①取指阶段取得是指令,执行阶段取得是数据②取指令和取数据时地址的来源是不同的,指令来源于PC,数据来源于地址形成部件或者指令的地址码字段)
指令和数据形式上无差别,只在程序执行时有差别
指令和数据以同等的地位存储在存储器中,并可按地址寻址
指令由操作码和地址码组成
操作码表示操作的性质(其实就是操作的标号)
地址码表示操作数在存储器中的位置
指令在存储器内按顺序存放
通常,指令是按顺序执行的,特定的情况下,可根据运算结果或者设定的条件改变执行顺序(跳转指令)
基本工作方式:控制流驱动方式
现代计算机的组织结构(出现了微处理器,将运算器和控制器集成到了同一个芯片当中)
IO设备与CPU的速度差距悬殊,以运算器为中心已经不能满足计算机发展的要求,现代计算机以存储器为中心,使IO操作尽可能绕过CPU,提供系统的运行效率
运算器
作用(执行部件)
算术运算
按运算规则进行加、减、乘、除
逻辑运算
与、或、非、异或、比较、移位
组成
核心是算术逻辑单元(ALU)
若干通用寄存器(累加器(ACC)、乘商寄存器(MQ)操作数寄存器(X)、变址寄存 器(IX)基址寄存器(BR)等,前三个是必须有的)程序状态寄存器(标志寄存器 PSW)
控制器
作用
“指挥中心” 使各个部件自动协调工作
组成
程序计数器(PC)、指令寄存器(IR)、控制单元(CU)
运算器+控制器=CPU(集成在同一芯片上),CPU+主存储器=主机,I/O设备又称为外部设备
存储器
作用
存储部件,存放程序和数据
分类
主存储器(主存、内存 DRAm)
存储体<--存储单元<--存储元件<-- 二进制代码0,1
存储单元里的二进制(存储字)位数称为存储字长(存储字长是1B或为字节的偶数倍)
工作方式
按存储单元的地址进行存取,这种方式称为按地址存取方式
相联存储器既可以按地址访问又可以按内容访问
主存与CPU之间的接口
MAR(经过地址译码器译码找到存储单元)
用于寻址(寻址范围的单位一定不含B或bit,因为计算的时候约掉了,寻址本身和数据线没有任何关系),位数对应着存储单元的个数、地址码的长度,MAR的长度与PC的长度相等
MAR为10位,存储单元的个数有2^10=1024个
直接给出存储器的容量和字长,然后按字节、半字、字、双字寻址
不给出存储器的容量,只给出地址线和数据线的位数
一个16KX32位的存储器,地址线和数据线有多少根
14+32=46根
已知存储器容量是1MB,地址线和数据线有多少根
只要写成 nMB的形式,一律默认为nM X8,应该是28根
MDR
MDR的位数和存储字长相等,一般为字节的二次幂整数倍
地址译码器是存在于主存当中的
MAR、MDR虽然是存储器的一部分,但在现代的CPU中却是存在于CPU中的
IR存放当前欲执行的指令;PC存放下一条指令的地址;MAR用来存放欲访问的存储单元地址;MDR存放从存储单元取来的数据
Cache采用SRAM
辅助存储器(辅存、外存)
外存的信息必须调入主存后,才能执行
输入设备
人看到的-->计算机能懂得
输出设备
计算机懂的-->人理解的形式
计算机软件的基本组成
计算机软件的分类
系统软件(系统程序)
主要用来管理整个计算机系统,保证计算机系统正确高效地运行,通常作为系统资源提供给用户使用
操作系统、数据库管理系统(DBMS)、语言处理程序(编译程序、汇编程序)、分布式软件系统、网络软件系统、标准库程序、服务性程序(连接程序)、文件系统、
注意区别数据库管理系统(DBMS)和数据库系统(DBS):DBS包括DBMS和其他的东西,二DBMS是系统软件,DBS不是系统软件
应用软件
用户根据任务需求所编写的各种程序
计算机编程语言
机器语言
二进制代码 优点:硬件能够直接读懂(计算机可以直接识别和执行) 缺点 :难记忆、容易发生错误 难以找到错误
汇编语言
助记符 优点: 易读懂 缺点:复杂 是机器语言的符号表示,要经过汇编后才能被硬件执行
高级语言
优点:易使用 缺点 :不能直接被硬件读懂
编译程序、汇编程序、解释程序的区别
解释程序
高级语言翻译程序的一种,将源程序作为输入,解释一句执行一句,并不形成目标程序
编译程序
高级语言源程序-->目标程序-->计算机执行目标程序
编译程序与解释程序最大的区别
前者生成目标代码,后者不生成
编译程序产生目标代码的执行速度比解释程序的执行速度要快(若遇到循环程序,解释程序会一直循环,而编译程序只执行一次即可)
汇编程序
用汇编语言编写的程序
计算机的工作过程
将程序和数据装入主存-->将源程序转换成可执行文件-->从可执行文件的首地址开始逐条取出指令-->送至控制器-->经过分析CPU发出各种操作命令-->指挥各部件完成各种操作
从源程序到可执行文件
预处理阶段
宏展开 ,生成 .i 文件(修改了的源程序文件)
编译阶段
.编译器(ccl):i 文件-->汇编语言源程序.s 文件(汇编程序文本文件)
汇编阶段
汇编器(as):.s-->机器语言指令即可重定位文件.o(二进制文件)
链接阶段
连接器(ld):将多个可重定位目标文件+标准库函数合并为可执行文件
最终生成的可执行文件被保存在磁盘上
计算机系统的多级层次结构(同计算机网络分层,某一层观察者只需要关注此层即可)
第1层:微程序机器层
硬件层,微指令由硬件直接执行
第2层:传统机器层(用机器语言的层次)
由微程序解释机器指令系统
软硬件交界面
第3层:操作系统层
用机器语言程序解释作业控制语句(操作系统程序由机器指令和广义指令(系统调用,扩展机器功能)组成)
第4层:汇编语言层
用汇编程序翻译成成机器语言程序
第5层:高级语言层(面向用户的)
用编译程序翻译成汇编程序或者直接翻译成机器语言
补充:①没有配备软件的纯硬件系统称为“裸机”②3~5层为虚拟机,虚拟机只对该层的观察者存在③层次之间的关系紧密,下层是上层的基础,上层是下层的扩展④上下层是可以分割的,仅有下层没有上层是可以的
计算机性能指标
几种字长(都必须是字节的整数倍)
机器字长
指计算机进行一次整数运算所能够处理的二进制数据的位数
机器字长一般等于内部寄存器的大小,它决定了计算机的运算精度
指令字长
一个指令字中包含二进制代码的位数
存储字长
一个存储单元中存储的一串二进制的位数
数据通路带宽
数据总线一次所能并行传送的信息位数
这里所说的是外部数据总线的宽度,与CPU内部的数据总线宽度有可能不同
主存容量
主存所能存储信息的最大容量,通常以字节来衡量,可用字数*字长(512K X 16位)
与运算速度有关
吞吐量和响应时间
吞吐量
系统在单位时间内处理请求的数量,吞吐量主要取决于主存的存取周期
响应时间
提交作业到该作业得到CPU响应所经历的时间(包括CPU时间、等待时间)
响应时间越短,吞吐量越大
主频和CPU时钟周期
主频(CPU时钟频率)
机器内部主时钟的频率
同一个型号的计算机中,主频越高,完成指令的一个执行步骤所用的时间越短
1HZ表示每秒一次
CPU时钟周期(节拍脉冲)
主频的倒数,CPU中最小的时间单位
CPU周期(机器周期)
通常用从内存读取一条指令字的最短时间来定义,一个指令周期常用若干个CPU周期构成
CPI
执行一条指令所需的时钟周期数(说明与时钟周期的具体大小没关系,只是抽象的看个数)
系统结构、指令集、计算机组织都会影响CPI;但是时钟频率不会影响CPI,但是可以加快指令的执行速度
CPU执行时间
指运行一个程序所花费的时间
CPU执行时间=CPU时钟周期数/主频=(指令条数XCPI)/主频
提高CPU时钟频率、优化数据通路结构、对程序进行编译优化可以缩短程序执行时间
几种速度
MIPS
每秒执行多少百万条指令
MIPS=指令条数/(10^6X 执行时间)=主频/CPI
MFLOPS
每秒执行多少百万次浮点运算
MFLOPS=浮点操作次数/(10^6X执行时间)
GFLOPS
每秒执行多少十亿次浮点运算
GFLOPS=浮点操作次数/(10^9X执行时间)
TFLOPS
每秒执行多少万亿次浮点运算
TFLOPS=浮点操作次数/(10^12X执行时间)
注意
在描述存储容量、文件大小时,K、M、G、T通常用2的幂次表示
换算公式
1Kb=2^10b
1Mb=2^20b
1Gb=2^30b
1Tb=2^40b
在描述频率、速率时,K、M、G、T通常用10的幂次表示
1kb/s=10^3b/s
1Mb/s=10^6b/s
1Gb/s=10^9b/s
1Tb/s=10^12b/s
几个专业术语
系列机
具有基本相同的体系结构,使用相同基本指令系统,不同型号的一个产品系列
系列机的基本特征是指令系统向后兼容
兼容
指计算机软件或硬件的通用性
运行在某个型号的计算机系统的硬件/软件可以应用于另一个型号的计算机系统,称这两台计算机在硬件或软件上兼容
向后兼容指的是时间上向后兼容,即新机器兼容使用以前机器的指令系统
软件可移植性
指把某个系列计算机中的软件直接或者经过很少的修改就能运行在另一个系列计算机的可能性
固件
将程序固定在ROM中组成的部件称为固件 (就是把软件永恒地存储于只读存储器中)