如果断电,那么一段时间后将丢失所有数据
对于32位系统,计算机内存最大为 232 = 430 = 4GB,对于64为系统,计算机内存最大为 264 = 234 x 230 = 234GB
辅助存储器——磁盘
表面是可磁化的硬磁特性材料
移动磁头径向运动读取磁道信息
计算机的辅助存储器常用算法
先来先服务算法
最短寻道时间优先
与磁头当前位置有关
优先访问离磁头最近的磁道
扫描算法(电梯算法)
循环扫描算法
计算机的高速缓存 高速缓存的工作原理 字:是指存放在一个存储单元中的二进制代码组合
字块:存储在连续的存储单元中而被看作是一个单元的一组字节
一个字快有32位,一个字快共B个字,主存中共M个字块,则主存总字数=B*M,主存总容量(bits)=B*M*32。字的地址包含两部分:前m位指定字快的地址,后b位指定字在字快中的地址。
例子:假设主存用户空间容量位4G,字快大小为4M,字长为32位,则对于字地址中的快地址m和块内地址b的位数,至少应该是多少?
由于1G=1024M,所以4G=4096M,由于字快大小为4M,所以字快数为:\(4096\div4=1024\),所以字快地址m=\(\log_2 1024=10\),块内字数为\(4M\div32bit=1048576bit\),块内地址b=\(\log_2 1048576=20\),所以快地址m的位数至少为10,块内地址b的位数最少为20。
我们已经知道在CPU与主存之间存在高速缓存,当CPU需要的数据在缓存里时,则CPU直接从高度缓存中读取数据即可,不需要去访问主存,但当CPU需要的数据不在缓存里时,则需要去主存拿。由于CPU的处理速度远远快于主存的读取速度和数据传输速度,所以这样会导致CPU空转来等待数据传输,造成资源上的浪费。所以我们尽可能的让CPU去高速缓存中读取数据,因此我们需要一个量化指标,这个量化指标就是命中率。命中率是衡量缓存的重要性能指标,理论上CPU每次都能从高速缓存中读取数据的时候,命中率为1。假设访问主存次数为\(N_m\),访问Cache次数为:\(N_c\),则命中率h为:\(h=\frac{N_c}{N_c+N_m}\)。现在来看看访问效率e,假设访问主存时间为\(t_m\),访问缓存时间为\(t_c\),则访问Cache-主存系统的平均时间为:\(t_a=ht_c+(1-h)t_m\),则访问效率e为:\(e=\frac{t_c}{t_a}=\frac{t_c}{ht_c+(1-h)t_m}\)
例子:假设CPU在执行某段程序时,共访问了Cache命中2000次,访问主存50次,已知Cache的存取时间为50ns,主存的存取时间为200ns,求Cache-主存系统中的命中率、访问效率和平均访问时间。
命中率:\(h=\frac{N_c}{N_c+N_m}=\frac{2000}{2000+50}=0.97\)
访问效率:\(e=\frac{t_c}{t_a}=\frac{t_c}{ht_c+(1-h)t_m}=\frac{50}{0.97\ast50+(1-0.97)200}=0.917=91.7\%\)
平均访问时间:\(0.97\ast50+(1-0.97)200=54.5ns\) 高速缓存的替换策略
由于高速缓存的运行需要良好的缓存替换策略。什么是缓存替换策略呢?就是当高速缓存中没有数据时,需要从主存中载入所需要的数据。高速缓存中常见的替换策略:
随机算法
先进先出算法(FIFO)
最不经常使用算法(LFU)
优先淘汰最不经常使用的字快
需要额外的空间记录字快的使用频率
最近最少使用算法(LRU)
优先淘汰一段时间内没有使用的字快
有多种实现方法,一般使用双向链表
把当前访问节点置于链表前面(保证链表头部节点是经常使用的)
计算机的指令系统