欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流
本文收录于软考中级:软件设计师系列专栏,本专栏服务于软考中级的软件设计师考试,包括不限于知识点讲解与真题讲解两大部分,并且提供
电子教材
与电子版真题
,关注私聊
即可
:传送门计算机系统基础知识
:传送门计算机体系结构
解决存储容量、成本和速度之间的矛盾问题
- 按存储器所处的位置:内存、外存。
- 按存储器构成材料:磁存储器(磁带)、半导体存健器、光存储器(光盘)
- 按存储器的工作方式:可读可写存储(RAM),只读存储器(ROM只能读,PROM可写入一次,EPROM和EEPOM既可以读也可以写,只是修改方式不用)
- 按存储器访问方式:按地址访间、按内容访间(相联存储器)
- 按寻址方式:随机存储器(访问任意存储单元所用时间相同)、顺序存储器(只能按顺序访问,如磁带)、直接存储器(二者结合,如磁盘,对于砸道的寻址是随机的,在一个磁道内则是顺序的)
在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,包括下面两个方面:
时间局部性原理:
如果一个数据项正在被访问,那么在近期它很可能会被再次访问,即在相邻的时间里会访问同一个数据项
。空间局部性原理:
在最近的将来会用到的数据的地址和现在正在访问的数据地址很可能是相近的,即相邻的空间地址会被连续访问
。控制部分
和存储器
组成,存储器存储数据,控制部分判断CPU要访问的数据是否在Cache中,在则命中,不在则依据一定的算法从主存中替换在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要 将主存地址转换为Cache存储器地址
,这种地址的转换 称为地址映像
, 由硬件自动完成映射,分为下列三种方法:
任意
一块都与Cache中任意
一块对应。
优点
:可以随意调入Cache任意位置缺点
:地址变换复杂,速度较慢。因为主存可以随意调入Cache任意块,只有当Cache满了才会发生块冲突,是
最不容易发生块冲突
的映像方式。
主存块可以放到特定分组中共的任意位置
优点
:两种方式的折中,效果较好随机选择一块替换
优点
:实现简单缺点
:完全没考虑局部性原理,命中率低,实际效果很不稳定设总共有4个Cache块,初始整个Cache为空。采用全相联映像,依次访问主存块{1,2,3,4,1,2,5,1,2,3,4,5}
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}
把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}
①命中时
,所命中的行的计数器清零,比其低的计数器加1,其余不变;
②未命中且还有空闲行时
,新装入的行的计数器置0。其余非空闲行全加1;
③未命中且无空闲行时
,计数值最大的行的信息块被淘汰,新装行的块的计数器置0,其余全加1。
设总共有4个Cache块,初始整个Cache为空。采用全相联映像,依次访问主存块{1,2,3,4,1,2,5,1,2,3,4,5}
★新调入的块计数器=0,之后每被访问一次,计数器+1。需要替换时,选择计数器最小的一行
命中
,直接从Cache中读取数据,否则没有命中,需要从主存中读取所需的数据平均时间
为(90%*1+10%*1000)ns示例:求地址编号从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^4 40000=0∗161+0∗162+0∗163+4∗164=4∗164,此时如果直接乘开,数字太大,所以 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=256K 4∗164=22∗(24)4=218=28∗210=28K=256K
④40000H个字节,即256KB
虚拟存储器技术是将很大的数据分成许多较小的块,全部存储在外存中。运行时,将用到的数据调入主存中,马上要用到的数据置于缓存中,这样,一边运行一边进行所需数据块的调入/调出。
对于应用程序员来说,就好像有一个比实际主存空间大得多的虚拟主存空间,基本层级为:主存一一缓存一一外存。与CPU一一高速缓存Cache一一主存的原理类似。可以看计算机存储结构层次这里的图.
虚拟存储器中程序员无需考虑地址映像关系,由系统自动完成,因此对于程序来说是透明的。
效率极低
。效率相对较高
。
中断响应时间
指的是从发出中断请求到开始进入中断处理程序;中断处理时间
指的是从中断处理开始到中断处理结束。效率很高
。
从广义上讲,任何连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
并行总线适合近距离高速数据传输,串行总线适合长距离数据传输,专用总线在设计上可以与连接设备实现最佳匹配。