⑴ 缓存的缓存映射
根据E的数值,高速缓存可以被分为不用的类,包括直接映射缓存,组相联缓存和全相联缓存。 在组相联缓存里,E大于1,就是说一个组里面有多个cacheline。E等于多少,就叫有多少路,所以叫E路组相联。
组相联的行匹配就要复杂一些了,因为要检查多个行的标记位和有效位。如果最终找到了,还好。当然,找不到会从下一级存储器中取出包含所需求数据的行来替换,但一个组里面这么多行,替换哪个行。如果有一个空行,自然就是替换空行,如果没有空行,那就引发了一些其他的替换策略了。除了刚才介绍过的随机策略,还有最不常使用策略,最近最少使用策略。这些策略本身是需要一定开销的,但要知道,不命中的开销是很大的,所以为了保证命中率,采取一些相对复杂的策略是值得的。 所谓全相联,就是由一个包含所有缓存行的组组成的缓存。由于只有一个组,所以组选择特别简单,此时地址就没有组索引了,只有标记和偏移,也就是t部分和b部分。其他的步骤,行匹配和数据选择,和组相联原理是一样的,只是规模大得多了。如果说上面关于这三种映射方法的描述非常抽象,为了能理解得更加透彻,把存储器比作一家大超市,超市里面的东西就是一个个字节或者数据。为了让好吃好玩受欢迎的东西能够容易被看到,超市可以将这些东西集中在一块放在一个专门的推荐柜台中,这个柜台就是缓存。如果仅仅是把这些货物放在柜台中即完事,那么这种就是完全关联的方式。
可是如果想寻找自己想要的东西,还得在这些推荐货物中寻找,而且由于位置不定,甚至可能把整个推荐柜台寻找个遍,这样的效率无疑还是不高的。于是超市老总决定采用另一种方式,即将所有推荐货物分为许多类别,如“果酱饼干”,“巧克力饼干”,“核桃牛奶”等,柜台的每一层存放一种货物。这就是直接关联的访问原理。这样的好处是容易让顾客有的放矢,寻找更快捷,更有效。
但这种方法还是有其缺点,那就是如果需要果酱饼干的顾客很多,需要巧克力饼干的顾客相对较少,显然对果酱饼干的需求量会远多于对巧克力饼干的需求量,可是放置两种饼干的空间是一样大的,于是可能出现这种情况:存放的果酱饼干的空间远不能满足市场需求的数量,而巧克力饼干的存放空间却被闲置。为了克服这个弊病,老板决定改进存货方法:还是将货物分类存放,不过分类方法有所变化,按“饼干”,“牛奶”,“果汁”等类别存货,也就是说,无论是什么饼干都能存入“ 饼干”所用空间中,这种方法显然提高了空间利用的充分性,让存储以及查找方法更有弹性。
⑵ 什么是字块内地址什么是主存块地址什么是缓存块地址什么是组地址
字块内地址: 一个块含有几个字,数据位于第几个字就是字块内地止。
主存块地址:将主存分块存储,位于第几块就是主存块地址。
缓存块地址:将cache分块存储,位于第几块就是主存块地址。
组地址:将cache的块分组,位于第几组就是组地址。
具体关系如图所示:
(2)如何判定映射到缓存的地址扩展阅读:
cache(缓存)与主存映射有三种映射:
全相联映射:主存的一块可以映射到cache的任意一行中。
直接相联映射 :根据cache的大小将主存划分为若干个区,每个区中的块与cache中的行一一对应。主存的一块只能存放到cache的某一特定行中。
组相联映射:
1、首先将cache的划分为若干组(U组),每组有V行(称为V路组相联)。
2、主存按每U块划分为一组,每组有U块。
3、主存的第j块按模U映射到cache的第i组中的任意一行。
4、组间直接映射,组内全相联映射
参考资料:网络-块映射策略
⑶ 缓存与主存的直接映射怎样简单理解
Cache与主存之间可采取多种地址映射方式,直接映射方式是其中的一种。在这种映射方式下,主存中的每一页只能复制到某一固定的Cache页中。由于Cache块(页)的大小为16B,而Cache容量为16KB。因此,此Cache可分为1024页。可以看到,Cache的页内地址只需4位即可表示;而Cache的页号需用10位二进制数来表示;在映射时,是将主存地址直接复制,现主存地址为1234E8F8(十六进制),则最低4位为Cache的页内地址,即1000,中间10位为Cache的页号,即1010001111。Cache的容量为16KB决定用这14位编码即可表示。题中所需求的Cache的地址为10100011111000。
⑷ 内存Cache直接映射、全相联映射和组相联映射
1. 直接映射
---- 一个内存地址能被映射到的Cache line是固定的。就如每个人的停车位是固定分配好的,可以直接找到。缺点是:因为人多车位少,很可能几个人争用同一个车位,导致Cache 淘汰换出频繁 ,需要频繁的从主存读取数据到Cache,这个代价也较高。
2. 全相联映射
---- 主存中的一个地址可被映射进任意cache line,问题是:当寻找一个地址是否已经被cache时,需要遍历每一个cache line来寻找,这个代价很高。就像停车位可以大家随便停一样,停的时候简单,找车的时候需要一个一个停车位的找了。
主存中任何一块都可以映射到Cache中的任何一块位置上。
全相联映射方式 比较灵活 ,主存的各块可以映射到Cache的任一块中,Cache的利用率高,块冲突概率低,只要淘汰Cache中的某一块,即可调入主存的任一块。但是,由于Cache比较电路的设计和实现比较困难,这种方式只适合于 小容量 Cache采用。
3. 组相联映射
---- 组相联映射实际上是直接映射和全相联映射的折中方案,其组织结构如图(3)所示。
主存和Cache都 分组 ,主存中一个 组内的块数 与Cache中的 分组数 相同,组间采用直接映射,组内采用全相联映射。也就是说,将Cache分成2^u组,每组包含2^v块,主存块存放到哪个组是固定的,至于存到该组哪一块则是灵活的。即主存的某块只能映射到Cache的特定组中的任意一块。主存的某块b与Cache的组k之间满足以下关系:k=b%(2^u).
⑸ 在程序运行时,高速缓冲存储器与主存的地址映射是由什么实现
高速缓冲存储器(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的替换算法有:
①Hybrid算法:算搜迅友法对Cache中的每一个对象赋予一个效昌培用函数,将效用最小的对象替换出Cache;
②LowestRelativeValue算法:将效用值最低的对象替换出Cache;
③(LCNR)算法:该算法使用一个关于文档访问频次、传输时间和大小的推理函数来确定替换文档;
④Bolot等人提出了一种基于文档传输时间代价、大小、和上次访问时间的权重推理函数来确定文档替换;
⑤SizeAdjustLRU(SLRU)算法:对缓存的对象按代价与大小的比率进行排序,并选取比率最小的对象进行替换。
⑺ cache内存的地址映射主要有几种方式
cache内存的地址映射主要有以下三种方式:
一、直接映像:
指主存的一个字块只能映像到Cache的一个准确确定的字块中。
特点:主存的字块只可以和固定的Cache字块对应,方式直接,利用率低。
二、全相联映像:
全相联映射是指主存中任意一个块都可以映射到Cache中任意一个块的方式,也就是说,当主存中的某一块需调入Cache时,可根据当时Cache的块占用或分配情况,选择一个块给主存块存储,所选的Cache块可以是Cache中的任意一个块。
特点:贮存中的字块可以和Cache的任何字块对应,利用率高,方式灵活,标记位较长,使用成本太高。
三、组相联映像:
是对全相联和直接映像的一种折中的处理方案。既不在主存和Cache之间实现字块的完全随意对应,也不在主存和Cache之间实现字块的多对一的硬性对应,而是实现一种有限度的随意对应。
特点:折中方案。组间全相联,组内直接映像。集中了两个方式的优点。成本也不太高。最常见的Cache映像方式。
⑻ dns服务器中如何将域名映射到IP地址
步骤如下:
1、DNS的解析过程,主要有以下几个步骤:1.如果现在要访问某网站站点,客户机会提出解析请求,并且将请求发送给本地的域名服务器。
5、重复上一步,直到查询到正确晌或前的缓存记录为止。
6、本地域名服务器将查到的结果保存到缓存中,为下一次的使用做好准备,与此同时会将结果返回给客户机。
⑼ 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总数时,组相连映射变成直接相连映射。