计算机组成原理
计算机系统=硬件+软件
软件
系统软件:用来管理整个计算机系统(操作系统,数据库管理系统)
应用软件:按任务需要编织成的各种程序(抖音、王者)
第一台电子数字计算机:ENIC(1964) 逻辑元件:电子管
第一代:电子管 内存:泵延迟线、磁鼓
第二代:晶体管 内存: 磁芯存储器
第三代:中小规模继承电路 半导体存储器
第四代:大规模、超大规模集成电路 半导体存储器
微处理器:CPU,微型计算机
硬件的发展
- 1947贝尔实验室 发明了”晶体管“
- 1955,肖克利在硅谷创建公司
- 1959年 仙童半导体公司发明集成电路
- 1968年 摩尔等人离开仙童创立Inter
- 1969年仙童销售部负责人桑德斯离开仙童创立AMD
摩尔定律
集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,效率也提升一倍
软件的发展
机器语言–>汇编语言—>pascal、C++、java、python
操作系统 DOS–windows—Linux
目前趋势
两级分化:一极是微型计算机向跟微型化网络化、高性能、多用途方向发展
另一极是巨型化,向更巨型化、超高速、并行处理、智能化方向发展
计算机硬件的基本组成
冯诺依曼的计算机
- 计算机由五大部件组成
- 指令和数据以同等的地位存于存储器中,可以按地址访问
- 指令和操作数用二进制表示
- 指令由操作码和地址吗组成
- 存储程序
- 以运算器为中心
ENIAC 手动接线来控制计算
存储程序概念
将指令以二进制代码的形式事先输入到计算机的主存储器,然后按照其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其它命令直至程序执行结束。
- 输入设备:将信息转换为机器能识别的形式
- 存储器:存放程序和数据
- 运算器:算术逻辑运算
- 控制器:指挥程序运行
- 输出设备:转为为人们熟悉的形式
在计算机系统中软件和硬件在逻辑上是等效的。软件实现:成本低、效率也低 硬件实现:效率高成本也高。
现代计算机:以存储器为中心 CPU=运算器+控制器
现代计算机的结构
CPU(运算器、控制器)—主存储器------(输入设备、输出设备)
主存储器的基本组成
存储体—(存储地址寄存器MAR、存储数据寄存器MDR)
cpu将地址写到MDR中 然后主存储器根据地址到存储体中取出数据,然后主存储器中的一些控制逻辑将CPU想要的数据写到(存储数据寄存器)MDR中最后CPU通过线路从MDR中取出数据
CPU写入数据:写入的位置放在MAR中,写入的数据放在MDR中 再通过地址总线写入存储体
存储体:数据在存储体内按地址存储
存储单元”每个存储单元存放一串二级制代码
存储字:存储单元的二进制代码组合
存储字长:存储单元二进制代码的位数
存储元:存储二级制电子元件,每个存储元可以存储1bit(原理:电容)
MAR位数反映了存储单元的个数 MDR位数=存储字长
列题:
MAR=4位–>总共由2^4个存储单元
MD=16位---->每个存储单元可以存放16bit,一个字(word)=16bit
一个字节byte=8bit
1B=1个字节,1b=1个bit
运算器的基本组成
运算器:用于实现算术运算(如:加减乘除)、逻辑运算(如:与非)
- ACC:累加器、用于存放操作数、或者运算结果
- MQ:乘商寄存器,在乘除法运算时,用于存放操作数或者运算结果
- X:通用的操作数寄存器,用于存放操作数
- ALU:算术逻辑单元、通过内部复杂的电路实现算术运算、逻辑运算
控制器的基本组成
- CU:控制单元,分析指令,给出控制信号(Control Unit)
- IR:指令寄存器,存放当前执行的指令(Instruction Register)
- PC:程序计数器,存放下一条指令地址,有自动加1的功能(Program Counter)
完成一条指令—{取指令PC、分析指令IR}—{执行指令CU}
计算机系统的多级层次结构
高级语言机器 虚拟机器M4 用编译程序翻译成汇编语言程序
汇编语言机器叫做虚拟机器M3 (用汇编程序翻译成机器语言程序)
操作系统机器(虚拟机器M2) 向上提供“广义指令”系统调用
传统的机器M1用机器语言的机器 执行二进制机器指令
微程序机器M0 (微指令系统) 由硬件直接执行的微指令
三种级别的语言
汇编语言:助记符 高级语言 :C++ 机器语言:二级制代码
编译程序:将高级语言编写的源程序全部语句一次性的翻译成机器语言程序,而后在执行机器语言程序(只需要执行一次)(C++/C/Java)
解释程序:将原程序的一条语句翻译成对应的机器语言的语句,并立即执行。紧接着再翻译下一句(每次执行都要翻译)(JavaScript、Python、Shell)
存储器的性能指标
主存储器中的MAR:位数反映存储单元的个数(最多支持多少个)
主存储器中的MDR:位数=存储字长=每个存储单元的大小
总容量=存储单元的个数×存储字长 bit 1Byte=8bit
=存储单元的个数×存储字长/8 Byte
Eg: MAR为32位 MDR为8位 总容量=2^(32)×8bit=4GB
CPU的性能指标
CPU主频(时钟频率)=1/(CPU的时钟周期)
CPI:执行一条指令所需要的时钟周期数
执行一条指令的耗时=CPI×CPU的时钟周期
CPU执行时间=CPU时钟周期数/主频=(指令条数*CPI)/主频
IPS:每秒执行多少条指令
IPS=主频/平均CPI
FLOPS:每秒执行多少次浮点运算
系统整体的性能指标
数据通路带宽:数据总线一次所能运行并传送信息的位数
吞吐量:指系统在单位时间内处理请求的数量
响应时间:指用户向计算机发送一个请求到系统对该请求做出响应并获取它所需要的结果的等待时间
ASCLL码
可印刷的字符:32~126 其余的为控制、通信字符
汉字的表示和编码
GB 2312-80:汉字+各种符号共7445个
字符串
大端模式:将数据的最高有效字节存放在低地址单元中
小端模式:将数据的最高有效字节存放在高地址的单元中
第三章
1.主存储器
存储体、MAR(地址寄存器)、MDR(数据寄存器)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EQLASe2U-1665215960657)(https://cdn.jsdelivr.net/gh/7756JokerQAQ/picodemoo/img/image-20221003175031177.png)]
一个存储单元有多个存储元构成,一个存储体有多个存储单元构成
存储字:一串二进制数 存储字长:8bit 字节:1Byte=8bit
n位地址—>2^n个存储单元(代表行数) 总容量=存储单元的个数×存储字长
存储芯片的基本构成:
1.常见的描述
8×8位的存储芯片 :
8K×8 位 即 213×8bit
8K×1位 即213 ×1bit
64K×16位 即216 ×16bit
K:210 M:220 G : 230 T : 240
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y5UvHtlz-1665215960658)(https://cdn.jsdelivr.net/gh/7756JokerQAQ/picodemoo/img/image-20221003181617497.png)]
- 存储矩阵:有大量相同的位存储单元阵列构成
- 译码驱动:将来自地址总线的地址信号翻译对应的存储单元的选通信号,该信号在读写电路的配合下完成对被选中单元的读/写操作。
- 读写电路:包括读出放大器和写入电路,用来完成读写操作
- 读写控制线:决定芯片进行读/写操作
- 片选线:确定那个存储芯片被选中。可用于容量扩充(开关 0 /1)
- 地址线:是单向输入的,其位数与存储字的个数有关(决定要操作的数据的地址)
- 数据线:是双向的,其位数与读写或写入的数据位数有关。
- 数据线数和地址线数共同的反映了存储芯片容量的大小。(确定存储器的容量)
DRAM的刷新
刷新周期为2ms
每次刷新多少存储单元?以行为单位,每次刷新一行存储单元
使用行列地址 可以大幅度的减少选通线的数量;
如何刷新? 有硬件支持,读出一行的信息后重新写入占用一个读写周期
RAM:易失去性存储器
ROM:只读存储器
存储器的分类
1.磁表面存储器:磁盘(直接存取:非易失性)、磁带(顺序存取:访问速度慢)
2.磁芯存储器
3.半导体存储器(ROM、DRAM【破坏性读出】 随机存取)(存取时间与位置无关)
4.光存储器
按照不同的特性分:存取方式和信息的可保存性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kBo8ueiv-1665215960659)(https://cdn.jsdelivr.net/gh/7756JokerQAQ/picodemoo/img/image-20221005102304041.png)]
存储器的性能指标
1.存储容量:存储字数×字长(如1M×8位)
2.单位成本:每位价格=总成本/总容量
3.存储速度:数据的传输率=数据的宽度/存储周期
存储器的层次化结构
主存与CPU的链接
主存储器容量的扩展-译码器
线选法–>n个片选信号:电路简单:地址空间不连续
译码片选法—>2n 个片选信号 :电路复杂:地址空间可连续,可以增加逻辑设计
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-71ramRVz-1665215960660)(https://cdn.jsdelivr.net/gh/7756JokerQAQ/picodemoo/img/image-20221005115954352.png)]
流水线:
微观(计算题)
模块数m=4,存储周期为T,字长为W,数据总线宽度为W,总线的传输周期为r,连续存取n个字,求交叉存储器的宽度。
有m个存储体,存储周期为T,字长为w每隔r时间启动下一个存储体,连续存取n个字,求存储器的存取速率。
连续存取n个字耗时=T+(n-1)r m>=T/r
带宽=n×W/(T+(n-1)r)
当n较大时,带宽—>W/r 相当于m个存储体并行工作,对比单个存储体的带宽:W/T
宏观(概念题)
一个存储周期内,交叉存储器可以提供数据量为单个模块的m倍
补充:可以并行工作如总线宽度为mW时可以同时取出长度为mW的数据
高速缓冲存储器
提高存储器的工作速度:如m个模块组成的低位交叉编址存储器,可以将带宽提升为m倍。
优化后速度与CPU的差距依然很大–>更高速的存储单元设计—>存储器价格高容量小和程序访问的局部性原理---->存储体系的改善”Cache-主存“层次
局部性原理
空间局部性:在最近的未来要使用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是临近的
时间局部性:在最近的未来要使用到的信息,很可能是现在正在使用的信息
性能分析
命中率H:CPU欲访问的信息已在Cache中的比率
设一个程序执行期间,Cache的总命中次数为Nc 访问主存的总次数为Nm 则 N c N c + N m \frac {N_c} {N_c+N_m} Nc+NmNc
缺失率M=1-H
设tc 为命中时的Cache访问时间,tm 为未命中时的访问时间则:Cache–主存系统的平均访问时间Ta 为
Ta =Htc +(1-H)tm
Cache的基本工作原理
主存中快放到Cache中的位置
- 空位随意放,全相联映射(主存块地址+字块内地址)
- 对号入座(主存字块标记+Cache字块地址+字块内地址)
- 按号分组,组内随意放:组相联映射(主存字块标记+组地址+字块内地址)
高速缓冲
替换算法:
- 随机算法
随机地确定替换Cache块、。他的实现比较简单,但没有依据程序访问的局部性原理,故可能命中率较低
- 先进先出算法
选择最早调入的进行替换。它比较容易实现,但是没有根据程序访问的局部性原理,可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入Cache的块替换掉
- 近期最少使用的算法
依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换行,平均命中率要比先进先出要高,是一个堆栈类的算法。他的算法对每行设置一个计数器,Cache每命中一次,命中行计数器清零,而其他的各行计数器均加1,需要替换时比较个特定的行计数值,将计数值最大的行换出
- 最不经常使用算法
将一段时间内被访问次数最少的存储行换出,每行也设置一个计数器,新建立后从0开始计数,,每访问一次,被访问的行计数器加1,需要替换时比较个特定行的计数值,将计数值最小的行换出。
存储系统
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6RpL18ct-1665215960661)(https://cdn.jsdelivr.net/gh/7756JokerQAQ/picodemoo/img/image-20221005160439585.png)]
提高存储系统的容量
1.地址转换
2.虚拟存储器的访问过程
虚拟存储器是一个逻辑模型
功能:用户给出一个地址,叫做虚拟地址或者逻辑地址,虚拟存储器要给出该地址对应的数据
实现:有辅助硬件将虚地址映射到主存当中的某个单元,主存单元地址称为实地址或者物理地址
辅存地址:磁盘号+盘面号+磁道号+扇区号
页式虚拟存储
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FoF339FZ-1665215960661)(https://cdn.jsdelivr.net/gh/7756JokerQAQ/picodemoo/img/image-20221005163439651.png)]
段式虚拟存储器
段页式虚拟存储
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qwmCCoP0-1665215960662)(https://cdn.jsdelivr.net/gh/7756JokerQAQ/picodemoo/img/image-20221005163752969.png)]
存储系统
[外链图片转存中…(img-6RpL18ct-1665215960661)]
提高存储系统的容量
1.地址转换
2.虚拟存储器的访问过程
虚拟存储器是一个逻辑模型
功能:用户给出一个地址,叫做虚拟地址或者逻辑地址,虚拟存储器要给出该地址对应的数据
实现:有辅助硬件将虚地址映射到主存当中的某个单元,主存单元地址称为实地址或者物理地址
辅存地址:磁盘号+盘面号+磁道号+扇区号
页式虚拟存储
[外链图片转存中…(img-FoF339FZ-1665215960661)]
段式虚拟存储器
[外链图片转存中…(img-U4GDCFY2-1665215960661)]
段页式虚拟存储
[外链图片转存中…(img-qwmCCoP0-1665215960662)]