【软考:软件设计师】 3 计算机组成与体系结构(二)详解存储系统 | 输入输出与总线

本文涉及的产品
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据同步 1个月
简介: 【软考:软件设计师】 3 计算机组成与体系结构(二)详解存储系统 | 输入输出与总线

一、计算机系统基础知识

👉:传送门💖计算机系统基础知识💖


二、计算机体系结构

1.计算机体系结构

👉:传送门💖计算机体系结构💖


2.存储系统


2.1 计算机存储结构层次

微信图片_20230701110033.png


计算机采用分级存储体系的主要目的是为了解决存储容量、成本和速度之间的矛盾问题

两级存储: Cache-主存、主存-辅存(虚拟存储体系)

存储器分类

按存储器所处的位置:内存、外存。

按存储器构成材料:磁存储器(磁带)、半导体存健器、光存储器(光盘)

按存储器的工作方式:可读可写存储(RAM),只读存储器(ROM只能读,PROM可写入一次,EPROM和EEPOM既可以读也可以写,只是修改方式不用)

按存储器访问方式:按地址访间、按内容访间(相联存储器)

按寻址方式:随机存储器(访问任意存储单元所用时间相同)、顺序存储器(只能按顺序访问,如磁带)、直接存储器(二者结合,如磁盘,对于砸道的寻址是随机的,在一个磁道内则是顺序的)

🚩2.2 局部性原理

在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,包括下面两个方面:


时间局部性原理: 如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项。

空间局部性原理: 在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问。

🚩2.3 高速缓存Cache

高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU和主存之间,容量小,速度为内存的5-10倍,由半导体材料构成。其内容是主存内存的副本拷贝,对于程序员来说是透明的。

Cache由控制部分和存储器组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换

🚩2.3.1地址映射方法

在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要 将主存地址转换为Cache存储器地址 ,这种地址的转换 称为地址映像, 由硬件自动完成映射,分为下列三种方法:


1️⃣直接映像: 将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也即二者块号相同才能命中。

优点:地址变换简单

缺点:不灵活,容易造成资源浪费

微信图片_20230701110105.png

2️⃣全相联映像: 同样都等分成块并编号。主存中 任意 一块都与Cache中任意一块对应。

优点:可以随意调入Cache任意位置

缺点:地址变换复杂,速度较慢。

因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是最不容易发生块冲突的映像方式。

微信图片_20230701110125.png



3️⃣组相联映像: 前面两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间采用直接映像,即主存中组号与Cache中组号相同的组才能命中,但是组内全相联映像,也即组号相同的两个组内的所有块可以任意调换。主存块可以放到特定分组中共的任意位置

优点:两种方式的折中,效果较好

🚩2.3.2 Cache置换算法

1️⃣随机算法(RAND,Random):若Cache已满,则 随机选择一块替换

优点:实现简单

缺点:完全没考虑局部性原理,命中率低,实际效果很不稳定

设总共有4个Cache块,初始整个Cache为空。采用全相联映像,依次访问主存块{1,2,3,4,1,2,5,1,2,3,4,5}

微信图片_20230701110143.png


2️⃣先进先出算法(FIFO,First In First Out):按调入cache的先后决定淘汰的顺序,即在需要更新时,将最先进入cache的块作为被替换的块


优点:实现简单,最开始按#0 #1 #2的顺序放入Cache,之后轮流替换#0 #1 #2

缺点:没考虑局部性原理,最先被调入Cache的块也有可能被频繁访问——抖动现象:频繁的换入换出现象(刚被替换的块很快又被调入)

设总共有4个Cache块,初始整个Cache为空。采用全相联映像,依次访问主存块{1,2,3,4,1,2,5,1,2,3,4,5}

微信图片_20230701110155.png


3️⃣近期最少使用算法(LRU,Least Recently Used):把CPU近期最少使用的块作为被替换的块。为每一个Cache块设置一个“计数器”,用于记录每个Cache块已经有多久没被访问了。当Cache满后替换“计数器”最大的

优点:基于"局部性原理",近期被访问过的主存块,在不久的将来也很有可能被再次访问,因此淘汰最久没被访问过的块是合理的。LRU算法的实际运行效果优秀,Cache命中率高。

缺点:若被频繁访问的主存块数量>Cache行的数量,则有可能发生“抖动”,如:{1,2,3,4,5,1,2,3,4,5,1,2…}

设总共有4个Cache块,初始整个Cache为空。采用全相联映像,依次访问主存块{1,2,3,4,1,2,5,1,2,3,4,5}

微信图片_20230701110216.gif

①命中时,所命中的行的计数器清零,比其低的计数器加1,其余不变;

②未命中且还有空闲行时,新装入的行的计数器置0。其余非空闲行全加1;

③未命中且无空闲行时,计数值最大的行的信息块被淘汰,新装行的块的计数器置0,其余全加1。


4️⃣最不经常使用页置换算法(LFU,Least Frequently Used ):为每一个Cache块设置一个“计数器”,用于记录每个Cache块被访问过几次。当Cache满后替换“计数器”最小的

缺点: 曾经被经常访问的主存块在未来不一定会用到,并没有很好的遵循局部性原理,因此实际运行效果不如LRU

设总共有4个Cache块,初始整个Cache为空。采用全相联映像,依次访问主存块{1,2,3,4,1,2,5,1,2,3,4,5}


★新调入的块计数器=0,之后每被访问一次,计数器+1。需要替换时,选择计数器最小的一行

微信图片_20230701110238.gif

🚩2.3.3 命中率及平均时间

当CPU所访问的数据在Cache中时,称为命中,直接从Cache中读取数据,否则没有命中,需要从主存中读取所需的数据

示例:

设读取一次Cache时间为1ns,若CPU访问的数据不在Cache中,则需要从内存中读取,设读取一次内存的时间为1000ns,若在CPU多次读取数据过程中,有90%命中Cache,则CpU读取一次的平均时间为(90%*1+10%*1000)ns

🚩2.3.4 主存编址

B 表示一个字节,b表示位,现代计算机中常以字节数来描述容量的大小,一个字节已被定义为 8位二进制代码,故用字节数便能反映主存容量。1 B = 8 b 1B = 8b1B=8b

1 K = 1024 , 1 k = 1000 1K = 1024,1k = 10001K=1024,1k=1000

示例:求地址编号从80000H到BFFFFH且按字节编址的内存容量是多少KB?

①地址段包含的存储空间数,为BFFFFH-80000H+1=40000H

②按字节编制,即一个存储空间占一个字节,共40000H个字节

③将十六进制40000H转换为十进制:位权展开法,在计算机系统基础知识里讲过,40000 = 0 ∗ 1 6 1 + 0 ∗ 1 6 2 + 0 ∗ 1 6 3 + 4 ∗ 1 6 4 = 4 ∗ 1 6 4 40000=0*16^1+0*16^2+0*16^3+4*16^4=4*16^440000=0∗16

1

+0∗16

2

+0∗16

3

+4∗16

4

=4∗16

4

,此时如果直接乘开,数字太大,所以4 ∗ 1 6 4 = 2 2 ∗ ( 2 4 ) 4 = 2 18 = 2 8 ∗ 2 10 = 2 8 K = 256 K 4*16^4=2^2*(2^4)^4=2^{18}=2^8*2^{10}=2^8K=256K4∗16

4

=2

2

∗(2

4

)

4

=2

18

=2

8

∗2

10

=2

8

K=256K

④40000H个字节,即256KB


2.4 虚拟存储器

虚拟存储器技术是将很大的数据分成许多较小的块,全部存储在外存中。运行时,将用到的数据调入主存中,马上要用到的数据置于缓存中,这样,一边运行一边进行所需数据块的调入/调出。


对于应用程序员来说,就好像有一个比实际主存空间大得多的虚拟主存空间,基本层级为:主存一一缓存一一外存。与CPU一一高速缓存Cache一一主存的原理类似。可以看计算机存储结构层次这里的图.


虚拟存储器中程序员无需考虑地址映像关系,由系统自动完成,因此对于程序来说是透明的。


3.输入/输出技术

1️⃣程序控制(查询)方式:CPU主动查询外设是否完成数据传输,效率极低。

2️⃣程序中断方式:外设完成数据传输后,向CPU发送中断,等待CPU处理数据,效率相对较高。

中断响应时间指的是从发出中断请求到开始进入中断处理程序;

中断处理时间指的是从中断处理开始到中断处理结束。

中断向量提供中断服务程序的入口地址。

多级中断嵌套,使用堆栈来保护断点和现场。

3️⃣DMA方式(直接主存存取):CPU只需完成必要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通路,效率很高。

在一个总线周期结束后,CPU会响应DMA请求开始读取数据

CPU响应程序中断方式请求是在一条指令执行结束时

区分指令执行结束和总线周期结束。

4️⃣通道:也是一种处理机,内部具有独立的处理系统,使数据的传输独立于CPU。

分为字节多路通道的传送方式(每一次传送一个通道的一个字节,多路通道循环)和选择通道的传送方式(选择一个通道,先传送完这个通道的所有字节,再开始下一个通道传送)。

4.总线结构

4.1 总线

从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:


1️⃣内部总线:内部芯片级别的总线,芯片与处理器之间通信的总线。

2️⃣系统总线:是板级总线,用于计算机内各部分之间的连接

具体分为数据总线(并行数据传输位数)、地址总线(系统可管理的内存空间的大小)、控制总线(传送控制命令)

代表的有ISA总线、 EISA总线、PCI总线。

3️⃣外部总线:设备一级的总线,微机和外部设备的总线。

代表的有RS232(串行总线)、 SCSI(并行总线)、 USB(通用串行总线,即插即用,支持热插拔)

并行总线适合近距离高速数据传输,串行总线适合长距离数据传输,专用总线在设计上可以与连接设备实现最佳匹配。


4.2 总线计算

1️⃣总线的时钟周期=时钟频率的倒数;

2️⃣总线的宽度(传输速率) = 单位时间内传输的数据总量/单位时间大小


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
8月前
|
存储 编解码 并行计算
【软件设计师备考 专题 】计算机系统的组成、体系结构分类及特性
【软件设计师备考 专题 】计算机系统的组成、体系结构分类及特性
143 0
|
存储
【软考:软件设计师】 2 计算机组成与体系结构(二)详解指令系统 | 指令流水线
【软考:软件设计师】 2 计算机组成与体系结构(二)详解指令系统 | 指令流水线
294 0
|
8月前
|
数据采集 算法 C++
物理电学的编程
物理电学的编程
62 1
|
vr&ar C语言
软件设计师(一):计算机组成与体系结构(一)
软件设计师(一):计算机组成与体系结构(一)
软件设计师(一):计算机组成与体系结构(一)
|
机器学习/深度学习 数据处理 vr&ar
【软考:软件设计师】1 计算机组成与体系结构(一)计算机系统基础知识
【软考:软件设计师】1 计算机组成与体系结构(一)计算机系统基础知识
303 0
|
存储 缓存 移动开发
软件设计师(一):计算机组成与体系结构(二)
软件设计师(一):计算机组成与体系结构(二)
|
存储 固态存储 数据安全/隐私保护
计算机组成原理/计算机硬件基础第五章:存储器
计算机组成原理/计算机硬件基础第五章:存储器
501 0
计算机组成原理/计算机硬件基础第五章:存储器
计算机组成原理/计算机硬件基础第六章:指令系统
计算机组成原理/计算机硬件基础第六章:指令系统
400 0
计算机组成原理/计算机硬件基础第六章:指令系统
|
算法 编译器 数据格式
计算机组成原理/计算机硬件基础 第四章
计算机组成原理/计算机硬件基础 第四章
246 0
计算机组成原理/计算机硬件基础 第四章
|
存储 程序员 芯片
一文详解8086微处理器系统结构
地址指针和变址寄存器 - 地址指针和变址寄存器组包括堆栈指针 SP、堆栈基址寄存器 指针BP以及变址寄存器 指针SI和DI等4个16位寄存器。它们主要是用来存放或指示操作数的偏移地址。 - 堆栈指针SP中存放的是当前堆栈段中**栈顶**的偏移地址。堆栈操作指令PUSH和POP就是从SP中得到操作数的段内偏移地址的。 - BP是访问堆栈时的基址寄存器。BP中存放的是堆栈中某一存储单元的偏移地址,SP、BP通常和SS联用。 - **SI和DI称为变址寄存器**。它们通常与DS联用,为程序访问当前数据段提供操作数的**段内**偏移地址。SI和DI除
1069 0
一文详解8086微处理器系统结构