计算机组成原理精讲

**

计算机组成原理精讲解析(考察的是对硬件的特性)

**

计算机组成原理----存储器

你好! 这是计算机组成原理的基本知识

存储系统(二进制信息如何在内存中存储)

存储器概述

在这里插入图片描述

我们从上方图片中可以看出:
内存:8GB就是主存; 机身存储:128GB就是辅存
不同:主存和辅存的容量截然不同
那我们除了主存和辅存,还有没有其他存储器呢?

我们来看一下这些存储器:
在这里插入图片描述

  • 存储器的层次结构:

在这里插入图片描述

越靠近上层速度越快容量小价格高

解析一下:辅存里面读写速度很慢,而CPU读写速度很快,辅存里面的数据跟不上CPU的执行速度,因此,我们需要把辅存里面的数据调入到主存里面。
(就好比搬砖砌墙:你搬砖的速度跟不上我砌墙的速度,一定会影响进度的)
我们生活中用的微信
1、刚开始打开有2~3秒的停留时间(把辅存里面的数据读入到主存里面)
2、CPU就可以和主存中的数据进行访问

  • 在介绍一点:
    在这里插入图片描述

主存到辅存层:通过加上一个操作系统(实现页面置换);即为找到哪些需要从主存换输到辅存中【解决了主存容量不够的问题】

在这里插入图片描述

cache到主存:硬件自动完成的

  • cache:

在这里插入图片描述

1【cache作用】:缓解CPU和主存之间的速度差
2【解说一下】:虽然我们把数据放在了主存,CPU可以访问了,但是速度还是跟不上CPU的速度,这时候我们就出现了 cache,我们可以将经常使用的数据放入cache 中,然后CPU从cache里面读数据,也可以写数据,然后把在cache中修改的数据返回主存
3【举例说明】:
1、微信数据在主存中,假如和家里人视频聊天,
2、那么就把视频聊天的代码放在cache中,这样我们的速度就快了。

在这里插入图片描述

  • 寄存器:计算机中可能就有几十个寄存器
  • 案例:

在这里插入图片描述

1、虽然cache容量很小(为了节约成本),但是运行速度很高
2、都可以被CPU直接访问

在这里插入图片描述

我们在过去:机器硬盘
我们在现在:SSD硬盘m.2接口(他让我们读写的速度更快)

  • 存储器的分类----层次分:List item
    解说 一下:
    1、主存和高速缓冲存储器都可以直接被cpu读写
    2、辅存里面的数据需要读入主存中才可以被读写

  • 存储器的分类----介质分:

在这里插入图片描述
解说一下:
我们都知道,存储器的作用就是存放二进制01这些数据信息的,根据制作的材料不同,我们可以分为三类:
1、以半导体:主存,cache
2、磁性材料:磁盘,磁带(辅存)
3、光介质:光存储器

  • 存储器的分类----存取方式:
    在这里插入图片描述
    在这里插入图片描述

所有存储器都分为存储的一个个存储单元
1、随机存取存储器(RAM):(例如内存条)
读取任何我一个地址的地质单元读写时间速度都是相同,不会改变
2、顺序存取存储器 (SAM):(复读机,磁带)
读取所需要的时间取决于物理位置
(录音机有个磁头,轴转动的时候,磁条划过磁头,转到磁头下方读取数据)
3、直接存取存储器 (DAM):(磁盘)
比随机存储器慢,比顺序存储器快

【总结】
1、随机存取存储器(时间相同,与位置无关),顺序存储器(时间与位置相关),直接存取存储器(两大存储器特性):根据一个固定的地址去读写
2、相联存储器:根据内容检索到位置

  • 存储器的分类----信息可更改性:
    在这里插入图片描述【总结】
    RAM:可读可写
    ROM:只读不写

  • 存储器的分类----信息的可保存性:
    在这里插入图片描述

  • 存储器的性能指标:

  • 在这里插入图片描述
    存取时间:一个操作的时间
    存取周期:一个流程的时间

总结回顾:
在这里插入图片描述

主存储器

主存储器的基本组成
在这里插入图片描述
使用半导体元件来存储二进制原理
半导体元器件组合成了存储芯片
存储芯片中有好多不同的字的数据,存储芯片必须提供寻址的功能

  • 基本的半导体元件原理

1、 存储体是用来存放二进制数据0和1的
2、 存储体由多个存储单元组成
3、 每个存储单元对应一个地址
4、每个存储单元里面 有一个存储元
在这里插入图片描述
在这里插入图片描述

解说一下:
1、每个存储元对应两个元器件(MOS管
2、MOS管可以看成一个用电控制的机关:
【假如mos管左端输入高电压5V,输入就可以导电,如果达不到5V,就无法导电,相当于一个绝缘体(不导电) 】
3、为什么叫做绝缘体呢?-----因为既不是导体也不是绝缘体,给了一个电压,达到高电压,那我们就可以导电,达不到高电压,就不导电
4、(读入)
----1、假如电容上面保存了一些电荷在这里插入图片描述
如何读取二进制?----在MOS管的一端输入一个高电压信号(输入1),达到预值,MOS管接通,电荷顺着往外流,就是1
在这里插入图片描述

----2、假如电容里面没有保存电荷(表示0)
检测不到由有电荷的流出,就是0
在这里插入图片描述
5、(写入)
在这里插入图片描述
在这里插入图片描述
存储器读或者写的单位:存储字

  • 存储器芯片的基本原理
    在这里插入图片描述
    如何根据地址来决定读或者写存储字呢?
    1、
    在这里插入图片描述
    2、
    在这里插入图片描述
    3、
    在这里插入图片描述
    4、归总:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
金属真脚:
在这里插入图片描述
金属引脚包括:多根地址线、多根数据线、一根片选线,至少一根读/写控制线
在这里插入图片描述
总结:

在这里插入图片描述

寻址

在这里插入图片描述

SRAM与DRAM

总览
在这里插入图片描述

  • 随机存储器:
    速度不会因为地址改变而改变
    为什么会出现不同呢?

在这里插入图片描述

在这里插入图片描述
栅极电容VS双稳态触发器(可以呈现出两种稳定的状态):
在这里插入图片描述

双稳态触发器写入:
若写入0,则给左边BL加上低电平;
若写入1,则给右边BLX加上低电平

两者区别

两者的存储元器件不同:SDAM(双稳态触发器)DRAM(栅极电容)
1、双稳态触发器:哪边出现零那边出现一(都是低电平)
2、栅极电容:里面电容 是否有电荷
1、栅极电容
在这里插入图片描述

重写(再次重新充电)

2、双稳态触发器(呈现两种稳定的状态):
在这里插入图片描述
【总结】:
栅极电容会有破坏性读出需要重写,因此读写速度慢
双稳态触发器没有破坏性读出不需要重写,因此读写速度快

其他不同点
在这里插入图片描述

2补充:假如一个芯片的面积不变,体积小,更密集集成在芯片上

在这里插入图片描述
DRAM制造的成本低,速度相对较慢------制造主存
SRAM制造成本高,对速度有要求-------制造cache

易失性存储器
在这里插入图片描述

不断的供电:给这个VDD触发器不断地供电

DRAM的刷新(自己独立完成,不用CPU控制)

在这里插入图片描述
1、多久刷新一次?------2ms
2、每次刷新多上存储单元?-----一行存储单元
3、为什么用行列地址?-------可以减少选通线的数量
(把一个地址拆分成一半,一半是行地址译码之后的选通线,另一半是列地址译码之后的选通线)

在这里插入图片描述

在这里插入图片描述

刷新多少存储单元:只要我们给一个行地址,行地址译码器就会读出一整行的
在这里插入图片描述

1、如何刷新:会有一个刷新电路来支持,直接读出一整行的存储信息,然后再重新写入 (给电容充电),读出一行信息本质上就是进行了一个存储周期
2、假设DRAM内部的排列128*128的形式(一共128行)读出一行用时0.5um,2ms内可以4000个周期
3、刷新的时候不能对存储器进行读和写
4、分散刷新:读完一行,刷新一行 (系统的就是1us)
5、集中刷新:在2ms内,集中在一个时间内专门刷新
6、异步刷新:每行刷新一次就行,读写,一段时间后刷新(CPU不访问的时候刷新)

**加粗样式**

同时送:我把这一个地址分成了两部分(行地址+列地址),把他们同时给译码器
缺点:地址有多少位,我们就要有多少跟地址线

在这里插入图片描述

地址线复用技术:
分两次来:
1、第一次我把n/2根地址线送到行地址缓冲器里面,
2、第二次我把n/2根地址线放在列地址缓冲器里面,
3、在控制电路的控制下,分别送到行地址译码器与列地址译码器里面,
4、我先让行译码器解析出来,再从解析出来的行信息里面把列的信息输进去,减少了不必要的时间
优点:地址线更少,芯片引脚更少

【总结一下送行列地址】

SRAM(同时送):集成度较低,需要的地址线本来就少
DRAM(分开送):集成度较高,需要的地址线多,分开送减少一点地址线
在这里插入图片描述

只读存储器ROM

在这里插入图片描述

我们知道放在RAM当中断电后会消失,那我们不想让数据消失,那么我们就得保证把这个不想消失的数据放在另一个芯片中,因此我们想到了ROM

ROM:read only memary
演变过程:
在这里插入图片描述

比如说:我想把这个镶进去,谁都不可以改了,我就跟厂家说,这一批货在你们制作芯片的时候就给我放进去,我不想有人破坏它,因为是专门定制的,所以他制作的周期也长,做的都是一批一批的,他固定就是这样的,所以它的可靠性很高,不过灵活性就很差了

为了提高只读存储器的灵活性:

在这里插入图片描述

可以由用户自己来个性化的定制写入的数据数据,但是机会只有一次,也是只读存储器
就好比:我知道你们怎么做的了,我自己动手操作一下,但是技术不娴熟,我只能有一次机会

在这里插入图片描述
在这里插入图片描述
cf49f2b4a2fe86434f9b54.png)

写:先擦后写
读:直接读

在这里插入图片描述

密度高:存储元更小,集成度高,保存更多的二进制位

在这里插入图片描述
在这里插入图片描述
就像我们的手机,利用flash芯片可以,他比电脑的集成度更高,也就意味着体积更小,功率低,意味着耗电小,价格贵,辅存越高的越贵

为什么会有FLASH呢?位密度更高有什么用呢?
1、数据存储密度高:Flash存储器具有较高的存储容量和密度,能够满足大容量数据存储的需求。
2、功耗低:Flash存储器的功耗相对较低,有利于节能减排和延长设备使用寿命

计算机内部一个很重要的芯片-----ROM

在这里插入图片描述

解说:
1、主存里面放:指令和数据
2、CPU从主存中拿指令和数据的
3、CPU任务:到主存中取指令------执行指令
4、RAM的一个特性:断电后RAM里面的数据全部丢失(也就是说,当我们的计算机关机之后,里面的数据信息全部都没有了)
5、计算机开机之后,意味着:把操作系统和应用程序相关的指令数据再一次调入主存

在这里插入图片描述

6、操作系统安装在辅存中
7、CPU作为计算机的指挥中心,也是要取指令的(傻:只能根据指令一步一步地执行)
8、但是此时主存里面是没有数据的
在这里插入图片描述

9、CPU从主板(BIOS芯片)上ROM芯片中读取一些指令
在这里插入图片描述
统一编制:
假如1KB:1024B,我们把0~1023给ROM,从1024往后给RAM

回顾:
在这里插入图片描述

双端口RAM和多模块存储器

在这里插入图片描述
引入:存取时间:意味着CPU从内存中读取一个字的数据实际上只需要t2-t1这一段的时间,但是即使CPU读的存取时间的速度非常快,但是必须要等待回复时间。
问题一:面对多核CPU进行访问:一个CPU访问一次之后,下一个CPU也要进行访问,那么要等恢复时间恢复之后才能再进行访问,那我的时间就很长呀,我这个问题怎么解决 ?
问题二:即使是一个cpu:由于CPU的读写速度比主存快很多怎么办(因为主存的恢复时间太长了)?

在这里插入图片描述

  • 双端口 RAM

【目的:优化多核CPU访问一根内存条问题】
在这里插入图片描述
优点:可以解决多核CPU访问一根内存条的速度问题
注意:不能同时写,不能同时一读一写

  • 双端口 RAM
    多模块存储器:
    【目的】:解决单核cpu,cpu读写速度比内存的 速度要快的多,CPU想要连续读取一段数据的时候,必须要等待恢复时间问题

在这里插入图片描述

高位交叉编制的多存储器:

在这里插入图片描述
在这里插入图片描述
低位交叉编制的多存储器:

在这里插入图片描述
在这里插入图片描述
高位和低位访问连续地址所用时间:
在这里插入图片描述

说白了就是:CPU访问一个存储体需要等待存取时间+等待时间
高位存储体:用高两位进行区分不同的存储体
(这五个地址位于一个存储体,就要等待【等待时间】过后再进行下一个地址的访问,因此总耗时nT)
低位存储体:用低两位进行区分不同的存储体
(这五个地址有四个位于不同的存储体,当访问完一个地址之后,不用等时间,另个存储体已经准备好了,经过四个之后,正好一个T时间结束了,因此第五个地址可以接着访问,最后一个要留出等待时间,因此总耗时为:地址+等待时间=T+(n-1)r

发现:低位存储体用的时间比高位时间短

思考:为什么要探讨“连续访问的”情况?------因为几乎都是连着的

问题 :既然低位的存储块,那么应该取几个 “体"呢?

在这里插入图片描述

在这里插入图片描述

为什么是保证m>=T/r--------假如

在这里插入图片描述
总结:
在这里插入图片描述

CPU可以自己独立的选择 要哪个存储体读出哪个字

多体并行与单体并行
在这里插入图片描述

  • 多体并行:存储器并行独立
    单体并行:存储器 串行相连,对于不是从头开始的存储单元进行读取,会有很多没用的信息,但是速度上要比多体并行的快

[回顾]:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

主存储器与CPU的链接

知识总览
在这里插入图片描述
单块芯片与CPU连接
在这里插入图片描述

对外暴露出一些接口
绿色:传送数据,数据总线和CPU连接
红色:传送访问地址,地址总线和CPU连接
黄色:CPU通过控制总线来进行控制

  • 目前这个芯片只能存储8个字节的数据 如果想扩展主存储字数怎么办?----字扩展(连接多个存储芯片)
    如果想要存取更多的位数怎么办?------位扩展
    补充
    现在的计算机通常将MDR和MAR放在CPU中(因此芯片里面的都只是普通的寄存器而已)

现在的计算机:

在这里插入图片描述

MAR中的地址数据是通过地址总线传给主存
MDR中的数据是通过数据总线进行交换的
CPU通过控制总线进行读写信息

存储器芯片的输入输出信号(为了后面看着方便):
在这里插入图片描述

地址线:
数据线:
片选线:
读/写控制信线:

  • 增加位扩展:

在这里插入图片描述
增加主存的存储字长—位扩展

在这里插入图片描述

优点:可以同时读两位的信息

同理,想要八位一起读
在这里插入图片描述
增加字扩展:

在这里插入图片描述
因此字扩展:

在这里插入图片描述

增加一个新的一模一样的芯片
缺点
1、给两个芯片的片选线都加上1(高电平)【都工作】
2、将会导致两个芯片的 数据信息都会通过数据总线传给cpu,导致数据总线的冲突
因此,接下来改进:

在这里插入图片描述

改进:将片选线接入A13,第二个接到A14(片选线接入高电平1后才会有效)

左边选中,右边未被选中(读的是左边芯片的数据)

在这里插入图片描述

改进:将片选线接入A13,第二个接到A14(片选线接入高电平1后才会有效)

右边选中,左边未被选中(读的是左边芯片的数据)

在这里插入图片描述

改进:将片选线接入A13,第二个接到A14(片选线接入高电平1后才会有效)

左右两边都被选中(数据冲突)
只能允许:左为1,右边为0 或者 ( 左为0 右位1)

改进:

在这里插入图片描述

在这里插入图片描述

3-8译码器:输入了3个信号,输出了8个信号
(假如给了三位的地址,共有8种可能,若输入000,则表示第0根,则他被选通,其他为0)

  • 主存容量扩展:
    在这里插入图片描述
    在这里插入图片描述
    总结:
    在这里插入图片描述

字扩展:增加控制总线的作用
位扩展:增加数据总线的作用

  • 主存容量扩展—字位同时扩展
    在这里插入图片描述
    在这里插入图片描述
    回顾:

在这里插入图片描述

补充----译码器:
在这里插入图片描述

解说:
高电平有效:1
低电平有效:0

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

解说补充:等到地址信号稳定之后,发出一个读或者是写的信号,使能信号使译码器的输出端输出有效的片选信号,使得存储芯片被选通

外部存储器(磁盘存储器)

在这里插入图片描述

主要:磁盘存储器(对硬件的管理)
在这里插入图片描述

解说:
这里有一个磁带
商家在磁带上面涂上一层磁性介质

磁带划过磁头的时候,磁头可以1bit的写入数据
磁带划过此头的时候,读线圈根据接的电路1bie的读

在这里插入图片描述

解说:
因为磁头只能1bit的进行写入与读出
因此在读线圈的一方设计一个电路能把并行的多数据变成穿行的1bit数据

在这里插入图片描述
磁盘的一面(机械部分):
在这里插入图片描述

解说:
step1:驱动轴让我们的磁盘转动
step2:盘片上面每一圈图上不同的材性介质
step3:移动我们的磁头
step4:读或者写数据

磁盘的另一面(磁盘的电子部分【电路板】):

通过电子部分才可以和主机进行交换数据

在这里插入图片描述

解说:
1、我们的磁盘------有多个盘面
2、一个盘面-------每一圈的磁性材质不同,每一圈的材质就是一个磁道,分为多个磁道
3、一个磁道-------分为了几个扇区(为了方便主机对磁盘的读写)
【以扇区为单位进行读/写操作】
4、由于一个磁盘有多个盘面,多个盘面相对位置相同的盘面组成了柱面
【柱面号就是指明了一个磁道】
【通过一个柱面号来确定磁道的位置】

---------为了能让我们这个磁盘的轴转起来,磁头能读到不同的柱面号,那么我们就要搭配一些硬件:
在这里插入图片描述
在这里插入图片描述
即:磁盘驱动器:驱动轴,磁头移动臂这些东西
在这里插入图片描述

  • 磁盘的性能指标

1、磁盘的容量
在这里插入图片描述

  • 非格式化容量:存盘在物理上来看总共可以存储的二进制比特位的上线
  • 格式化容量:这个磁盘可能有些扇区损坏,防止磁盘的扇区损坏导致整个磁盘无法正常工作,因此需要格式化(留下某些备用扇区顶替使用)
  • 对比来说:
    格式化之后,某些部分容量被用来作为其他用途,因此格式化容量比非格式化容量要小
2、记录密度
道密度:沿着半径长度上的磁道数(比如:磁盘半径1cm的位置上一共有60个磁道)
位密度:磁道单位长度上能记录的二进制比特位的位数(比如:1cm的磁道上面有60bit位的信息)
面密度:位密度*道密度
在这里插入图片描述

3、平均存取时间(都或者写是以扇区为单位的)
【小马达带着转圈圈,磁头移动臂带着磁头去私奔】
对于一个磁道上面的一块扇区,我们要读取他或者写入他如何让实现呢?让我们来看看下面这张图:
在这里插入图片描述

首先step1:让我们的磁头寻找要到的磁道上面
其次step2:让我们的磁盘旋转,一直到和扇区的开始部分重合
最后step3:让我们磁头划过这一片扇区进行存取
【旋转延迟时间可以按照转半圈(理想状态),传输时间要计算】

4、数据传输率
在这里插入图片描述
问题:主机如何向磁盘指明我读的是哪一块扇区?---------向磁盘的扇区给一个编号
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

磁盘阵列:
在这里插入图片描述

无校验:难免会有磁盘损坏的情况(如果没有存储一些冗余的信息,那么这个数据将被损坏)

在这里插入图片描述

PAID:某个磁盘扇区被损坏(或者发生跳变1-0),还可以在第二个磁盘里面找到数据
因此可以有冗余以及能够校验
缺点:空间浪费

改进:
在这里插入图片描述

通过海明校验码可以把错误的信息修正过来
通过海明校验码把跳转的信息修正过来

在这里插入图片描述
在这里插入图片描述
固态硬盘SSD

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
固态硬盘是以页为单位的
固态硬盘的页相当于机器磁盘的扇区
固态硬盘的块,相当于机器磁盘的磁道

在这里插入图片描述

固态硬盘以块为单位进行擦除:
意思就是说,我这个一块里面有数据,我想再写,我就写不进去了,我必须要擦除,然而擦除之后,我就可以写数据了,
问题:我要是想保留其他的数据,我只改动一个数据怎么办。可以把不动的数据放到另一个闪存芯片里面,然后将这个芯片的块擦除,从另一个芯片里面写入这个数据,那么,我们读取的位置不就变了么,我们的闪存翻译层可以将这个地址映射到正确的位置
因此,读的速度要大于写的速度
机器硬盘是通过磁头臂定位到一个位置,固态硬盘是通过电路迅速定位到对应的物理位置

高速缓冲存储(敬请期待)

虚拟存储器(敬请期待)

  • 26
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值