CACHE与住存之间的全相联映射,直接映射和组相联映射的区别
- 格式:pdf
- 大小:2.42 MB
- 文档页数:10
以下习题来自《计算机系统结构》第七章存储体系。
7.1解释下列术语直接映像:每个主存地址映像到Cache中的一个指定地质的方式称为直接映像。
全相联映像:任何主存地址可映像到任何Cache地址的方式称为全相联映像。
组相联映像:组相联映像指的是将存储空间的页面分成若干组,各组之间是直接映像,而组内各块之间是全相联映像。
全写法:全写法也称直达法,即写操作将数据同时写入Cache和缓存。
写回法:写Cache时不写主存,仅当被写Cache数据块要被替换出去时才写回主存。
虚拟存储器:虚拟存储器是主存的扩展,当主存的容量不能满足要求时,数据可存放在外存中,在程序中仍然按地址访问外存空间。
大小取决于计算机的访存能力。
段式管理:把主存按段分配的存储管理方式称为段式管理。
页式管理:把虚拟存储空间和实际存储空间等分成固定大小的页,各虚拟页可装入主存中不同的实际页面位置。
段页式管理:段页式管理式段式管理和页式管理的结合,他将存储空间按逻辑模块分成段,每段又分成若干个页,访存通过一个段表和若干个页表进行。
段的长度必须是页的长度的整数倍,段的起点必须是某一页的起点。
快表:为了提高页表中常用项的访问速度,采用快速硬件构成的比全表小的多的部分表格。
慢表:存放在主存中的整个页表。
高速缓存:高速缓冲存储器是位于CPU和主存之间的高层存储子系统。
时间局部性:如果一个存储项被访问,则可能该项会很快再次被访问。
空间局部性:如果一个存储项被访问,则该项及其邻近的相也可能很快被访问。
段表:在对虚拟内存进行管理时,系统中用于指明各段在主存中的位置的表,表中包括段名或段号、段起点、装入位和段长等。
页表:在对虚拟内存进行管理时,系统中用于指明各页在主存中的位置的表,表中包括页号、每页在主存中的起始位置、表示该页是否已装入主存的装入位等。
块表:存储系统中的一个用于解决块和页的定位、标志、和寻址问题的表。
7.2 有人认为,随着存储器芯片集成度的提高,主存的容量将越来越大,虚拟存贮器将被淘汰,未来的计算机中将不采用虚拟存储器。
主存与cache的地址映射关系主存与Cache的地址映射CPU对存储器的访问,通常是⼀次读写⼀个字单元。
当CPU访Cache不命中时,需将存储在主存中的字单元连同其后若⼲个字⼀同调⼊Cache中,之所以这样做,是为了使其后的访存能在Cache中命中。
因此,主存和Cache之间⼀次交换的数据单位应该是⼀个数据块。
数据块的⼤⼩是固定的,由若⼲个字组成,且主存和Cache的数据块⼤⼩是相同的。
从Cache-主存层次实现的⽬标看,⼀⽅⾯既要使CPU的访存速度接近于访Cache的速度,另⼀⽅⾯为⽤户程序提供的运⾏空间应保持为主存容量⼤⼩的存储空间。
在采⽤Cache-主存层次的系统中,Cache对⽤户程序⽽⾔是透明的,也就是说,⽤户程序可以不需要知道Cache的存在。
因此,CPU每次访存时,依然和未使⽤Cache的情况⼀样,给出的是⼀个主存地址。
但在Cache-主存层次中,CPU⾸先访问的是Cache,并不是主存。
为此,需要⼀种机制将CPU的访主存地址转换成访Cache地址。
⽽主存地址与Cache地址之间的转换是与主存块与Cache块之间的映射关系紧密联系的,也就是说,当CPU访Cache未命中时,需要将欲访问的字所在主存中的块调⼊Cache中,按什么样的策略调⼊,直接影响到主存地址与Cache地址的对应关系,这也就是本⼩节要解决的主存与Cache的地址映射问题。
主要有三种地址映射⽅式,分别为全相联映射、直接相联映射和组相联映射。
1. 全相联映射全相联映射是指主存中任⼀块都可以映射到Cache中任⼀块的⽅式,也就是说,当主存中的⼀块需调⼊Cache时,可根据当时Cache的块占⽤或分配情况,选择⼀个块给主存块存储,所选的Cache块可以是Cache中的任意⼀块。
例如,设Cache共有2C块,主存共有2M块,当主存的某⼀块j需调进Cache中时,它可以存⼊Cache的块0、块1、…、块i、… 或块2C -1的任意⼀块上。
第三章存储系统第五节Cache存储器二、主存与Cache的地址映射由于Cache比主存小的多,因此必须使用一种机制将主存地址定位到Cache中,即地址映射。
这个映射过程全部由硬件实现,对程序员透明。
1.地址映射方法:采用查表法(用专用快速硬件实现表格)表中内容:映射的Cache地址、标记(命中判断)、有效位2.地址映射的三种方式:(1)全相联映射方式:灵活,但映射函数复杂,不易实现。
(2)直接映射方式:映照简单,不需计算,快速,但效率不高,易颠簸;。
(3)组相联映射方式:组内全相联映射,组间直接映射(1)全相联映射方式·任一主存块能映射到Cache中任意行(主存块的容量等于Cache行的容量),见图1:·映射过程:(见图2)①存入Cache:块表标记中存放主存的块号②检索:访问主存地址的块号与所有Cache行标记比较(图2阴影区)·符合,即数据在Cache中,形成访问Cache的地址(地址映射),访问Cache;·不符合:访问主存,并将该块调入Cache。
·优点:灵活,不易产生冲突;缺点:比较电路难于实现,且效率低,速度慢。
例:设访问存储器地址的块号序列为22、26、22、26、16、4、16、18,采用全相联映射方式时,Cache行分配情况(见图3)。
全相联映射方式实例演示(2)直接映射方式直接映射方式实例演示·某一主存块只能能映射到Cache的特定行,见图4:i = j mod m 其中:i:Cache的行号;j:主存的块号;m:Cache的总行数。
·映射过程:(见图5)①存入Cache:快表标记中存放主存地址的区号(将块地址分为二部分:·块(行)地址·标记(区号))②检索:根据访问主存地址的中间字段(行号),找到Cache快表中的这一行,读取该行中的标记字段与主存地址高位字段(区号)比较(图5阴影区)·符合:即数据在Cache中,形成访问Cache的地址(地址映射),访问Cache;·不符合:访问主存,并将该块调入Cache。
5.1 解释下列术语多级存储层次:由若干个采用不同实现技术的存储器构成的存储器系统,各存储器处在离CPU不同距离的层次上。
使得靠近CPU的存储器速度较快,容量较小。
整个存储系统的速度接近与离CPU最近的存储器的速度,而容量和每位价格接近于最低层次的容量和价格。
全相联映像:指主存中的任一块可以被放置到Cache中的任意一个位置。
直接映像:指主存中的每一块只能被放置到Cache中唯一的一个位置。
组相联映像:指主存中的每一块可以被放置到Cache中固定的一个组中的任意位置。
替换算法:由于主存中的块比Cache中的块多,所以当要从主存中调入一个块到Cache中时,会出现该块所映像的Cache块位置已经被占用的情况。
替换算法即解决如何选择替换块的问题。
LRU:最近最少使用法。
选择近期最少被访问的块作为被替换的块。
写直达法:在执行“写”操作时,不仅把信息写入Cache中相应的块,而且也写入下一级存储器中相应的块。
写回法:只把信息写入Cache中相应的块,该块只有在被替换时才被写回主存。
按写分配法:在写失效时,先把所写单元所在的块从主存调入Cache,然后再进行写入。
不按写分配法:写失效时,直接写入下一级存储器而不将相应的块调入Cache。
命中时间:CPU所要访问的块在Cache中,确认并取走所花费的时间开销。
失效率:CPU一次访存不命中的概率。
失效开销:CPU一次访存不命中,而额外增加的访存开销。
强制性失效:当第一次访问一个块时,该块不在Cache中,需从下一级存储器中调入Cache。
容量失效:如果程序执行执行时所需的块不能全部调入Cache中,则当某些快被替换后,若又重新被访问,就会发生失效。
冲突失效:在组相联或直接映像Cache中,若不多的块映像到同一组中,则会出现该组中某个块被别的块替换,然后又重新被访问的情况。
2:1 Cache经验规则:大小为N的直接映像Cache的失效率约等于大小为N/2的2路组相联Cache的失效率。
cache工作原理概述:Cache是计算机系统中的一种高速缓存,用于存储频繁访问的数据,以提高数据访问速度和系统性能。
本文将详细介绍Cache的工作原理及其在计算机系统中的应用。
一、Cache的定义和作用Cache是位于CPU和主存储器之间的一级或者多级高速存储器,用于暂时存储最近被访问的数据和指令。
其主要作用是减少CPU访问主存储器的次数,从而提高数据读取和指令执行的速度。
Cache能够存储大量数据,并且具有较低的访问延迟,因此能够快速响应CPU的读写请求。
二、Cache的工作原理1. 缓存行Cache将主存储器分成若干个连续的缓存行,每一个缓存行包含多个字节的数据。
缓存行的大小通常为64字节或者128字节,具体大小取决于计算机系统的设计。
2. 缓存映射方式Cache采用缓存映射方式将主存储器中的数据和指令映射到缓存中。
常见的缓存映射方式包括直接映射、全相联映射和组相联映射。
其中,直接映射将主存储器的每一个地址映射到惟一的缓存行,全相联映射将主存储器的每一个地址都可以映射到任意一个缓存行,而组相联映射则介于两者之间。
3. 缓存命中和缓存失效当CPU需要访问数据或者指令时,首先会在Cache中进行查找。
如果所需数据或者指令在Cache中找到,即发生缓存命中,CPU可以直接从Cache中读取数据或者指令,从而避免了访问主存储器的开消。
如果所需数据或者指令不在Cache 中,即发生缓存失效,CPU需要从主存储器中读取数据或者指令,并将其存入Cache中,以备后续访问。
4. 缓存替换策略当Cache已满且发生缓存失效时,需要选择一个缓存行替换出来,以腾出空间存放新的数据或者指令。
常见的缓存替换策略包括最近至少使用(LRU)、先进先出(FIFO)和随机替换等。
其中,LRU是一种基于访问历史的替换策略,即替换最长期未被访问的缓存行。
5. 缓存一致性由于Cache和主存储器是分离的,因此可能存在数据不一致的情况。
《计算机组成原理》教学中几个基本概念的分析作者:李涛,章伟煊,陈建英来源:《教育教学论坛》2013年第38期摘要:《计算机组成原理》是计算机学科学生的一门必修课程,针对在教学过程中,学生不易理解或易混淆的几个基本概念进行分析,以期学生能加深对这些概念的理解,为后续课程的学习以及今后的工程实践中运用相关知识解决问题有所帮助。
关键词:计算机组成原理;教学改革;基本概念中图分类号:G642 文献标志码:A 文章编号:1674-9324(2013)38-0075-03《计算机组成原理》是所有计算机学科学生的专业基础课,是构成学生终生知识体系的重要组成部分,在整个计算机科学与技术专业的课程中起着承上启下的关键作用,是计算机学科的研究生入学考试必考科目之一。
从事该课程教学的教师们已进行了不少探索,包括教材的选择、教学内容设计,以及对教学模式、教学方法和实验教学等方面研究,为该课程的教学提供了有益的经验。
《计算机组成原理》这门课有一定的理论深度,其实践要求也高,涉及较多的前期知识和相关领域,课程的横向跨度大。
随着计算机硬件水平发展迅速,集成化程度不断提高,CPU由单核、双核发展到四核、多核;目前学生自己配置的计算机中笔记本已占大多数,学生很难直接了解计算机的内部结构,在课程学习中普遍感到概念抽象而难以感性化、内容多、难度大,他们认为《计算机组成原理》是一门比较难掌握的课程。
不少学生在完成该课程的学习后仍感到并未真正理解和掌握其中的基本原理。
为此,笔者介绍在近年来从事《计算机组成原理》教学过程中对几个基本概念的把握。
一、定点小数的补码表示范围定点小数在用补码表示时,负数最小时为-1,而-1本不属于小数范围,但是定点小数中[-1]的补码却存在,另外,整数的-1和小数的-1的表示也不一样,如机器字长为8时,整数的[-1]补=11111111和小数的[-1]补=1.0000000。
对此,学生难以理解和接受,进而影响浮点数表示范围的理解。
3.7.3 Cache和主存之间的映像方式为了把信息放到Cache中,必须应用某种函数把主存地址映像到Cache中定位,称为地址映像(映射)。
而将主存地址变换成Cache地址,称做地址变换,它们之间是密切相关的。
常用的地址映像方式有三种,分别是全相联映像、直接映像和组相联映像。
1.全相联映像全相联映像是指将内存和Cache按照固定的相同的大小进行分块。
内存的块和Cache的块可以任意对应,即内存的任何一块都可以映像到Cache的任何一块。
在Cache的存储空间被占满的情况下,也允许确实已被占满的Cache存储器中替换出任何一个旧块,具体如图3-14所示。
2.直接映像直接映像先将Cache分成若干块,每个块的大小相同,并对每个块进行编号。
同时根据Cache容量大小将内存分成若干区(页),每个区的容量都跟Cache的容量相同,然后对内存进行分块,每块的大小跟Cache块的大小相同,同样对区内的块进行编号。
映像时,内存的某个区的块只能保存在与其块号相同的Cache块中。
如图3-15所示,内存各区中的第0块只能映像到Cache的第0块,而不能映像到其他块。
3.组相联映像组相联映像实际上是直接映像和全相联映像的折中方案。
组相联映像方式先将Cache分成大小相同的若干区(组),对每个区按照直接映像的方式进行分块,并且编号,因此,Cache中有多个编号相同的块。
对内存按照Cache区的大小进行分页,再对每页按照Cache块的大小进行分块,每个内存块可以对应不同Cache区中的相同块号的块。
如图3-16中内存第0页的第0块,可以对应Cache的第0区的第0块,也可以对应第j区的第0块。
在三种方式中,全相联映像方式比较灵活,Cache的块冲突概率最低、空间利用率最高,但是地址变换速度慢,而且成本高,实现起来比较困难;直接映像方式是最简单的地址映像方式,成本低,易实现,地址变换速度快,而且不涉及其他两种映像方式中的替换算法问题。
全相连映射、组相连映射和直接映射是计算机科学中常见的术语,它们在计算机存储器和缓存系统中扮演着重要的角色。
通过深入探讨这些映射方式的特点和应用,我们可以更好地理解计算机存储器和缓存系统的工作原理和优化方法。
1. 全相连映射全相连映射是一种常见的存储器映射方式,它的特点是任何给定的存储器块都可以映射到存储器缓存的任何一个位置上。
任何一个存储器块都可以放置在缓存中的任意一个位置,只要这个位置没有被其他块占用。
在全相连映射中,当需要访问存储器块时,系统会先计算存储器块的位置区域在缓存中的映射位置,然后检查这个位置是否已经被其他块占用。
如果该位置已经被其他块占用,就需要进行替换操作。
全相连映射的优点是实现简单、应用广泛,但缺点是替换算法相对复杂,性能可能不如其他映射方式。
2. 组相连映射组相连映射是全相连映射的一种改进方式,它将缓存划分为多个组,每个组包含多个缓存行。
存储器块的映射位置由该块的位置区域的一部分决定,这样可以将存储器块映射到特定的组中。
在组内部,采用全相连映射的方式进行存储器块的替换操作。
组相连映射的优点是减少了替换操作的复杂性,提高了替换算法的效率;缺点是需要对存储器位置区域进行分组,增加了硬件的复杂性。
但是,相比于全相连映射,组相连映射在实际应用中更为有效。
3. 直接映射直接映射是另一种常见的存储器映射方式,它的特点是将存储器块映射到缓存中的特定位置。
这意味着每个存储器块只能映射到缓存中的一个固定位置,当需要替换时,只能替换该位置上的存储器块。
直接映射的优点是实现简单、硬件成本低,但缺点是可能会出现替换频繁的情况,导致性能下降。
在实际应用中,直接映射往往作为全相连映射和组相连映射的一种辅助方式来使用。
通过对全相连映射、组相连映射和直接映射的深入探讨,我们可以看到它们在计算机存储器和缓存系统中的重要性和应用价值。
在实际应用中,不同的映射方式可以根据具体的需求来选择,以达到最佳的性能和效率。
主存和Cache的⼏种映射⽅式在⼀切开始之前,⾸先最重要的是需要去明⽩和掌握内存的块的定义:内存被分为若⼲块,这些块:1.⼤⼩相等,2.每块由若⼲字组成,3.块的长度成为块长,块的长度是指由⼏个字组成就是多长,⽐如⼀个块由x个字组成,那么块长为x.4.每个块由连续的字组成。
在Cache中这种块被某些替换原则替换进⼊Cache之后,称为Cache的⾏(有些书上也称为块,这⾥就⽤⾏表⽰,以免混淆)。
有以下⼏个特点:1.块长(⼀般是取⼀个存取周期内从主存调出的信息长度,和交互存取有关系)与⾏长相等,这点和物理页和逻辑页的页内地址的长度是⼀样的原理类似。
2.Cache中⾏的位数=⾏号+⾏内地址内存中块的位数=块号+块内地址。
3.块内地址的位数由块的长度决定(设块的长度为x,块内地址的位数其实就是⽤⼏位能表⽰x的问题),块号的位数由块的数⽬决定(⽐如块的数⽬是x,块号其实就是⽤⼏位⼆进制数能表⽰x个数的问题),⾏号的位数由⾏数决定。
块⾥的内容就是⾏的内容,⾏内地址和块内地址相同。
、标记位是什么?先记住⼀点,标记位和cache的地址没有⼀点关系。
每个⾏对应⼀个标记位。
后⾯会进⾏说明CPU与内存以及Cache之间的交互⽅式好了,明⽩了块和⾏的定义之后,我们来看看CPU与内存和Cache之间的交互:1.CPU同时(也有可能不是同时,这时事先访问cache cahce⾥⾯没有再对主存进⾏访问,如果缺失的话访存时间会长⼀点)向Cache和内存发出读请求。
把地址同时送给Cache和内存。
2.Cache控制逻辑(由硬件实现)判断此内存地址是否在Cache中,在则⽴马将此内存的字送给CPU,与此同时,终⽌访问内存。
3.若不在Cache中,⽤主存读取周期从主存中将字取出送往CPU,与此同时,把含有这个字的整个数据块通过Cache与主存的直接通路送到Cache 中。
(由这个交互过程我们可以看到,主存和Cache与CPU交互的时候传送的是字,但是Cache和主存交互传送的是块)了解了过程之后我们来看看映射关系是什么,映射关系是CPU在访存时,将主存地址变换成Cache地址的过程。
Cache和主存的三种映射方式Cache與主存之間的全相聯映射,直接映射和組相聯映射的區別1.高速緩沖存儲器的功能、結構與工作原理高速緩沖存儲器是存在於主存與CPU之間的一級存儲器,由靜態存儲芯片(SRAM)組成,容量比較小但速度比主存高得多,接近於CPU 的速度。
Cache的功能是用來存放那些近期需要運\行的指令與數據。
目的是提高CPU對存儲器的訪問速度。
為此需要解決2個技術問題:一是主存地址與緩存地址的映象及轉換;二是按一定原則對Cache的內容進行替換。
Cache的結構和工作原理如圖2.3.1所示。
主要由三大部分組成:Cache存儲體:存放由主存調入的指令與數據塊。
地址轉換部件:建立目錄表以實現主存地址到緩存地址的轉換。
替換部件:在緩存已滿時按一定策略進行數據塊替換,並修改地址轉換部件。
2.地址映象與轉換地址映象是指某一數據在內存中的地址與在緩沖中的地址,兩者之間的對應關系。
下面介紹三種地址映象的方式。
1.全相聯方式地址映象規則:主存的任意一塊可以映象到Cache中的任意一塊(1) 主存與緩存分成相同大小的數據塊。
(2) 主存的某一數據塊可以裝入緩存的任意一塊空間中。
全相聯方式的對應關系如圖2.3.2所示。
如果Cache的塊數為Cb,主存的塊數為Mb,則映象關系共有Cb×Mb種。
圖2.3.3示出了目錄表的格式及地址變換規則。
目錄表存放在相關(聯)存儲器中,其中包括三部分:數據塊在主存的塊地址、存入緩存後的塊地址、及有效位(也稱裝入位)。
由於是全相聯方式,因此,目錄表的容量應當與緩存的塊數相同。
舉例:某機主存容量為1M,Cache的容量為32KB,每塊的大小為16個字(或字節)。
劃出主、緩存的地址格式、目錄表格式及其容量。
容量:與緩沖塊數量相同即211=2048(或32K/16=2048)。
優點:命中率比較高,Cache存儲空間利用率高。
缺點:訪問相關存儲器時,每次都要與全部內容比較,速度低,成本高,因而應用少。
CPU对存储器的访问,通常是一次读写一个字单元。
当CPU访Cache不命中时,需将存储在主存中的字单元连同其后若干个字一同调入Cache中,之所以这样做,是为了使其后的访存能在Cache中命中。
因此,主存和Cache之间一次交换的数据单位应该是一个数据块。
数据块的大小是固定的,由若干个字组成,且主存和Cache的数据块大小是相同的。
从Cache-主存层次实现的目标看,一方面既要使CPU的访存速度接近于访Cache的速度,另一方面为用户程序提供的运行空间应保持为主存容量大小的存储空间。
在采用Cache-主存层次的系统中,Cache对用户程序而言是透明的,也就是说,用户程序可以不需要知道Cache的存在。
因此,CPU每次访存时,依然和未使用Cache的情况一样,给出的是一个主存地址。
但在Cache-主存层次中,CPU首先访问的是Cache,并不是主存。
为此,需要一种机制将CPU的访主存地址转换成访Cache地址。
而主存地址与Cache地址之间的转换是与主存块与Cache块之间的映射关系紧密联系的,也就是说,当CPU访Cache未命中时,需要将欲访问的字所在主存中的块调入Cache中,按什么样的策略调入,直接影响到主存地址与Cache地址的对应关系,这也就是本小节要解决的主存与Cache的地址映射问题。
主要有三种地址映射方式,分别为全相联映射、直接相联映射和组相联映射。
1. 全相联映射全相联映射是指主存中任一块都可以映射到Cache中任一块的方式,也就是说,当主存中的一块需调入Cache时,可根据当时Cache的块占用或分配情况,选择一个块给主存块存储,所选的Cache块可以是Cache中的任意一块。
例如,设Cache共有2C块,主存共有2M块,当主存的某一块j需调进Cache中时,它可以存入Cache的块0、块1、…、块i、…或块2C -1的任意一块上。
如图4-28所示。
图4-28全相联映射方式在全相联映射方式下,CPU的访主存地址为如下形式:其中,M为主存的块号,W为块内的字号。