当前位置:首页 » 硬盘大全 » 地址映射主存和缓存
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

地址映射主存和缓存

发布时间: 2023-02-16 20:33:10

‘壹’ 计算机的存储系统中将主存地址定位到cache上的过程叫做地址映射对吗

对。
主存与cache的地址映射:与主存相比,cache的容量很小,它保存的内容只是主存内容的一个子集,因此,把主存地址定位到cache中,称为地址映射。

‘贰’ 在程序运行时,高速缓冲存储器与主存的地址映射是由什么实现

高速缓冲存储器(Cache)实际上是为了把由DRAM组成的大容量内存储器都看做是高速存储器而设置的小容量局部存储器,一般由高速SRAM构成。这种局部存储器是面向CPU的,引入它是为减小或消除CPU与内存之间的速度差异对系统性能带来的影响。Cache 通常保存着一份内存储器中部分内容的副本(拷贝),该内容副本是最近曾被CPU使用过的数据和程序代码。Cache的有效性是利用了程序对存储器的访问在时间上和空间上所具有的局部区域性,即对大多数程序来说,在某个时间片内会集中重复地访问某一个特定的区域。如PUSH/POP指令的操作都是在栈顶顺序执行,变量会重复使用,以及子程序会反复调用等,就是这种局部区域性的实际例证。因此,如果针对某个特定的时间片,用连接在局部总线上的Cache代替低速大容量的内存储器,作为CPU集中重复访问的区域,系统的性能就会明显提高。
系统开机或复位时,Cache 中无任何内容。当CPU送出一组地址去访问内存储器时,访问的存储器的内容才被同时“拷贝”到Cache中。此后,每当CPU访问存储器时,Cache 控制器要检查CPU送出的地址,判断CPU要访问的地址单元是否在Cache 中。若在,称为Cache 命中,CPU可用极快的速度对它进行读/写操作;若不在,则称为Cache未命中,这时就需要从内存中访问,并把与本次访问相邻近的存储区内容复制到Cache 中。未命中时对内存访问可能比访问无Cache 的内存要插入更多的等待周期,反而会降低系统的效率。而程序中的调用和跳转等指令,会造成非区域性操作,则会使命中率降低。因此,提高命中率是Cache 设计的主要目标。

‘叁’ 有关操作系统原理中CACHE与主存的地址映象问题.

·地址映像
所谓映象问题是指如何确定Cache中的内容是主存中的哪一部分的拷贝,即必须应用某种函数把主存地址映象到Cache中定位,也称地址映象。当信息按这种方式装入Cache中后,执行程序时,应将主存地址变换为Cache地址,这个变换过程叫作地址变换。地址映象方式通常采用直接映象、全相联映象、组相联映象三种。
1.直接映象
每个主存地址映像到Cache中的一个指定地址的方式,称为直接映象方式。在直接映象方式下,主存中存储单元的数据只可调入Cache中的一个位置,如果主存中另一个存储单元的数据也要调入该位置则将发生冲突。地址映像的方法一般是将主存空间按Cache的尺寸分区,每区内相同的块号映像到Cache中相同的块位置。一般地,Cache被分为2N块,主存被分为同样大小的2M块,主存与Cache中块的对应关系可用如下映像函数表示:j = i mod 2N。式中,j是Cache中的块号,i是主存中的块号。
直接映象是一种最简单的地址映像方式,它的地址变换速度快,而且不涉及其他两种映像方式中的替换策略问题。但是这种方式的块冲突概率较高,当称序往返访问两个相互冲突的块中的数据时,Cache的命中率将急剧下降,因为这时即使Cache中有其他空闲块,也因为固定的地址映像关系而无法应用。
2.全相联映象
主存中的每一个字块可映像到Cache任何一个字块位置上,这种方式称为全相联映像。这种方式只有当Cache中的块全部装满后才会出现块冲突,所以块冲突的概率低,可达到很高的Cache命中率;但实现很复杂。当访问一个块中的数据时,块地址要与Cache块表中的所有地址标记进行比较已确定是否命中。在数据块调入时存在着一个比较复杂的替换问题,即决定将数据块调入Cache中什么位置,将Cache中那一块数据调出主存。为了达到较高的速度,全部比较和替换都要用硬件实现。
3.组相联映象
组相联映象方式是直接映象和全相联映象的一种折衷方案。这种方法将存储空间分为若干组,各组之间是直接映像,而组内各块之间则是全相联映像。它是上述两种映像方式的一般形式,如果组的大小为1,即Cache空间分为2N组,就变为直接映像;如果组的大小为Cache整个的尺寸,就变为了全相联映像。组相联方式在判断块命中及替换算法上都要比全相联方式简单,块冲突的概率比直接映像的低,其命中率也介于直接映像和全相联映像方式之间。
·替换策略和一致性问题的处理方法
Cache和存储器一样具有两种基本操作,即读操作和写操作。
当CPU发出读操作命令时,根据它产生的主存地址分为两种情形:一种是需要的数据已在Cache中,那么只需直接访问Cache,从对应单元中读取信息到数据总线;另一种是需要的数据尚未装入Cache,CPU需从主存中读取信息的同时,Cache替换部件把该地址所在的那块存储内容从主存拷贝到Cache中;若Cache中相应位置已被字块占满,就必须去掉旧的字块。常见的替换策略有两种:
1.先进先出策略(FIFO)FIFO(First In First Out)策略总是把最先调入的Cache字块替换出去,它不需要随时记录各个字块的使用情况,较容易实现;缺点是经常使用的块,如一个包含循环程序的块也可能由于它是最早的块而被替换掉。
2.最近最少使用策略(LRU)LRU(Least Recently Used)策略是把当前近期Cache中使用次数最少的那块信息块替换出去,这种替换算法需要随时记录Cache中字块的使用情况。LRU的平均命中率比FIFO高,在组相联映像方式中,当分组容量加大时,LRU的命中率也会提高。
当CPU发出写操作命令时,也要根据它产生的主存地址分为两种情形:一种是不命中时,只向主存写入信息,不必同时把这个地址单元所在的整块内容调入Cache中;另一种是命中时,这时会遇到如何保持Cache与主存的一致性问题,通常有三种处理方式:
1.直写式(write through)即CPU在向Cache写入数据的同时,也把数据写入主存以保证Cache和主存中相应单元数据的一致性,其特点是简单可靠,但由于CPU每次更新时都要对主存写入,速度必然受影响。
2.缓写式(post write)即CPU在更新Cache时不直接更新主存中的数据,而是把更新的数据送入一个缓存器暂存,在适当的时候再把缓存器中的内容写入主存。在这种方式下,CPU不必等待主存写入而造成的时延,在一定程度上提高了速度,但由于缓存器只有有限的容量,只能锁存一次写入的数据,如果是连续写入,CPU仍需要等待。
3.回写式(write back)即CPU只向Cache写入,并用标记加以注明,直到Cache中被写过的块要被进入的信息块取代时,才一次写入主存。这种方式考虑到写入的往往是中间结果,每次写入主存速度慢而且不必要。其特点是速度快,避免了不必要的冗余写操作,但结构上较复杂。
此外,还有一种设置不可Cache区(Non-cacheable Block)的方式,即在主存中开辟一块区域,该区域中的数据不受Cache控制器的管理,不能调入Cache,CPU只能直接读写该区域的内容。由于该区域不与Cache发生关系,也就不存在数据不一致性问题。目前微机系统的BIOS设置程序大多允许用户设置不可Cache区的首地址和大小。

‘肆’ 256mb为什么是28位地址

1.主存中存储单元地址的分配

例:对24位地址线的主存而言,按字节寻址的范围是16M,而对于按字寻址需要观察

即每一个存储字包含几个独立寻址的字节,若包含4个,则按字寻址为4M,若包含两个,则按寻址为8M

2.主存的技术指标

主存的主要技术指标是存储容量和存储速度

(1)存储容量

存储容量=存储单元个数*存储字长

也可以用字节总数来表示(1字节=8字长)

存储容量=存储单元个数*存储字长/8

例:某机存储容量为256MB,则按字节寻址的地址线位数应对应28位

(2)存储速度

存储速度由存取时间和存储周期表示

存储时间是指启动一次存储器操作(读或写)到完成该操作所需的全部时间

存储周期是指存储器进行连续两次独立的存储器操作(如连续两次读操作)所需的最小间隔时间

(3)存储器带宽

它表示单位时间内存储器存取的信息量,单位可用字/秒或字节/秒或位/秒1

1ns=10-9s

为了提高存储器的带宽,可以采用一下措施

1.缩短存取周期 2.增加存储字长,使每个存储储周期可读/写更多的二进制位数 3.增加存储体

3.Cache-主存地址映射

cache的作用:解决CPU和主存速度不匹配的问题

不能将Cache的容量扩大取代主存,原因是(1)Cache容量越大,成本越大,难以满足人们追求价格的要求

(2)如果取消主存,当CPU访问Cache失败时,需要将辅存的内容调入Cache再由CPU访问,造成CPU等待时间太长,损失更大。

(1)直接映射

每个主存块只与一个缓存块相对应

一个缓存块对应若干个主存块

缺点:不够灵活,每个主存块只能固定地对应某个缓存块,即使缓存内还空着许多位置也不能占用,使缓存的存储空间得不到充分地利用

(2)全相连映射

允许主存中每一字块映射到Cache中的任何一块位置上

缺点:这种方式所需的逻辑电路甚多,成本较高,实际的Cache还要采用各种措施来减少地址的比较次数

(3)组相联映射

(4)命中率

h=Nc/Nc+Nm

Nc为访问cache的总命中次数,Nm为访问主存的总次数

(5)访问效率

例:

假设主存容量为512KB,Cache容量为4KB,每个字块为16个字,每个字32位。

(1)Cache地址有多少位?可容纳多少块

根据1K=2^10B 1M=2^10K 4K=2^12

‘伍’ 什么是字块内地址什么是主存块地址什么是缓存块地址什么是组地址

字块内地址: 一个块含有几个字,数据位于第几个字就是字块内地止。

主存块地址:将主存分块存储,位于第几块就是主存块地址。

缓存块地址:将cache分块存储,位于第几块就是主存块地址。

组地址:将cache的块分组,位于第几组就是组地址。

具体关系如图所示:

(5)地址映射主存和缓存扩展阅读:

cache(缓存)与主存映射有三种映射:

全相联映射:主存的一块可以映射到cache的任意一行中。

直接相联映射 :根据cache的大小将主存划分为若干个区,每个区中的块与cache中的行一一对应。主存的一块只能存放到cache的某一特定行中。

组相联映射:

1、首先将cache的划分为若干组(U组),每组有V行(称为V路组相联)。

2、主存按每U块划分为一组,每组有U块。

3、主存的第j块按模U映射到cache的第i组中的任意一行。

4、组间直接映射,组内全相联映射

参考资料:网络-块映射策略

‘陆’ cache内存的地址映射主要有几种方式

cache内存的地址映射主要有以下三种方式:x0dx0a一、直接映像:x0dx0a指主存的一个字块只能映像到Cache的一个准确确定的字块中。x0dx0a特点:主存的字块只可以和固定的Cache字块对应,方式直接,利用率低。x0dx0ax0dx0a二、全相联映像:x0dx0ax0dx0a全相联映射是指主存中任意一个块都可以映射到Cache中任意一个块的方式,也就是说,当主存中的某一块需调入Cache时,可根据当时Cache的块占用或分配情况,选择一个块给主存块存储,所选的Cache块可以是Cache中的任意一个块。x0dx0a特点:贮存中的字块可以和Cache的任何字块对应,利用率高,方式灵活,标记位较长,使用成本太高。x0dx0a三、组相联映像:x0dx0ax0dx0a是对全相联和直接映像的一种折中的处理方案。既不在主存和Cache之间实现字块的完全随意对应,也不在主存和Cache之间实现字块的多对一的硬性对应,而是实现一种有限度的随意对应。x0dx0a特点:折中方案。组间全相联,组内直接映像。集中了两个方式的优点。成本也不太高。最常见的Cache映像方式。

‘柒’ 浅谈主存和Cache间的地址映射

最近在学计算机架构,正好学到主存与Cache间的地址映射,记录一下,方便以后复习回顾。

学一个东西要弄清楚这个东西有什么用,发明它的目的是什么。Cache和主存的地址映射则主要是为了加快CPU的处理速度,因为如果CPU每次都要从主存(如4GB)中找数据的话就太慢了,但是如果在Cache(如64K)中有对应主存的数据,这样就很快了。下面的地址映射方式都是想判断主存中某个数据在不在Cache中,只不过效率不同而已。

首先指明基础单位,简单来说,有4个基础单位: Bit Byte Block Word
其中

在主存和Cache间的地址映射过程中,都是使用 Block 作为基本单位来交换数据,因为这样更加高效

主存和Cache有三种地址映射方式

全相连映射大概如下图所示:

Cache和 Main Memory(MM) 都被分为一定数量的 Block ,即图中的b(0), b(1), ...

由图可知,Cache被分为 C/B-1 个 Block ,Main Memory被分为 M/B-1 个 Block (C是缓存大小,如64k=2^16 Bytes,同理B和M分别是 Block 和MM大小)

全相连映射方式比较简单,其思想是MM中的任意一个Block可以存在Cache中任意一个Block中,寻址方式如下图:

BTW:Associative Memory(相联存储器)的列数和Cache的列数一致

例题1:
Assume that cache capacity is 64KB in a computer system, data block size is 16 bytes, main memory capacity is 4MB, fully associative mapping is used.

直接相连映射与全相连映射的不同之处在于它将MM中的Block分成了一个个Area,每个Area的大小都和Cache相同,并且每个Area中的Block只能存在Cache中对应位置的Block,例如:MM中Area0的b(0)只能存在Cache中的b(0),Area1的b(0)也只能存在Cache中的b(0),以此类推。因此它也要求MM的大小必须是Cache大小的整数倍。

Ei是Area编号,Bi是Area中的Block编号,bi是Cache中Block编号,Block Address是Block中的地址

首先,由Bi选出Directory Table中对应的Block,该Block存着Area编号,将这个编号和MM Address的Ei比较一下,相同的话就说明在Cache中找到了对应MM中的数据(Hit),然后直接把MM Address的Bi和Block Address当做Cache Address去Cache找。

例题2:
Assume that cache capacity is 64KB in a computer system, data block size is 16 bytes, main memory capacity is 4MB, direct associative mapping is used.

组相连映射的思想相当于结合了前两种映射思想,在已经分好Area的基础上再进一步地分Group,每个Areaz里面有若干个Group,与直接相连映射不同的是,组相连映射要求的只是每个Group必须一一对应,而Group里面的Block则是随意对应(即全相连映射)

Gi是Group的编号,其余同直接相连映射
同理,先由Gi选出Directory Table中对应的Group,再把Ei和Bi与其内容作比较,相等就说明Cache中存在MM中的数据,然后直接把Directory Table中的bi和MM Address中的Gi当成Cache Address去Cache中找数据

例题3:
Assume that cache capacity is 32KB in a computer system, data block size is 64 bytes, main memory capacity is 1MB, set associative mapping is used and the group count is 128.

最后,总结一下三种映射方式,当组相连映射中的Group数量减少到1时,组相连映射变成全相连映射,当Group数量增加到Block总数时,组相连映射变成直接相连映射。