系统架构师 之 Cache的映射机制和替换算法

今天来着重学习了Cache的映射机制和替换算法,在这简单总结一下。

Part 1: cache映射机制

cache的映像机制:是指在CPU发出访问主存指令后,存储器地址先被送到cache,若命中则直接对cache进行访问。

下面阐述cache映射机制的三种类型。

[if !supportLists]一、[endif]直接映射:是以随机存取存储器作为cache存储器,电路简单,主存地址呗分为三个部分(从高到低):区号、页号、页内地址。根据该三个区域与cache进行直接映射。从下面的例子看可能更加直观:

内存容量为1GB,cache的容量为8MB,页面大小为512KB,求区号和页号位数。

①求区号:区号=内存容量/cache地址 = 128个,即7位

②求页号:页号=cache容量/页面大小 = 16页,即4位

直接映射存在缺点:地址块之间冲突绿很高,因为,主存内第n页即在cache的第n标记块中。进一步会导致cache存储空间利用不足。

[if !supportLists]二、[endif]全项链映像:主存中每一页可以映像cache中任意一页。其中主存地址划分为两部分,地址部分和数据部分。顾名思义,地址部分存放存储器地址;数据部分存储数据。其特点:cache的标记为=主存地址位,则存放相同主存中的内容,cache所需要的空间更大,导致cache的成本更高。

cache命中方式:将主存标记与cache标记逐个对比,直到命中。可见缺点:cache对比

速度慢,电路设计困难,只适合用于小容量的cache。

[if !supportLists]三、[endif]组相联映像:介于直接映像和全相联映像之间。全相联映像方式以页为单位,可以自由映像,没有固定的对应关系;直接映像方式中,主存分组,主存组内各页与cache的页之间采取的是固定的映射关系;然而在组相联映像中,主存与cache都分组,主存中一个组内的页数与cache相同。

其规则:主存中组与cache中组成直接映像关系,单每个组内的页是全相联映像关系、

下面采用例子进行阐释。一主存分为128个区,每个区8个组,每个组2个页。组相连

映像方式的主存地址。


Part2: 替换算法

cache存在未命中的时候,如果cache未命中,则需要将内容与内存中进行替换,这边是替换算法。目的是为了淘汰cache中某些旧数据,替换上新的需要使用的数据。

常用的替换算法有三种:随机算法、先进先出法、最近最少使用法。

[if !supportLists]一、[endif]随机算法:这是最简单的替换算法,不管内容进入到cache采用了什么方式,新的数据如果想要进入到cache当中则随机淘汰一页。

[if !supportLists]二、[endif]先进先出算法(FIFO),按照调入cache的时间先后顺序进行淘汰。如果新数据想要进入cache,则将里当前时间最久远的数据页替换掉,这一定程度上满足程序的时间局部性原理。

[if !supportLists]三、[endif]最近最少使用算法(LRU),LRU算法是吧CPU最近最少使用的数据块作为被替换的快,这样就要使用到一个计数器或者一个时间记录位,记录数据最近访问的最新时间,作为被替换的标准。这样最大程度满足了程序的时间局部性原理。

[if !supportLists]一、[endif]


Part3:写操作

cache中的数据需要保证与内存中一致,所以离不开写缓存。写cache常用到一下三种方法:写直达、写回、标记法。

[if !supportLists]二、[endif]写直达(write through),当要写cache的时候,数据同时写回内存。这样如果新的数据想要进入cache的话,可以直接覆盖,无需再次写回内存。

[if !supportLists]三、[endif]写回(write back),CPU修改Cache的某一块,数据不立刻写回缓存,而是从当前cache中淘汰,淘汰后块中数据写回缓存。这种策略经常需要标记单元是否修改,用于判断是否需要更新内存中页内数据。

[if !supportLists]四、[endif]标记法,对cache中每一个数据设置一个有效位,数据进入cache后,有效则标记为1,更新后则标记为0。用1和0区分访问cache和内存。1访问cache,0访问内存。这样有效的共同使用起来了cache与内存,但是存在读脏情况,需要定期更新。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,313评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,369评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,916评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,333评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,425评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,481评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,491评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,268评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,719评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,004评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,179评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,832评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,510评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,153评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,402评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,045评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,071评论 2 352

推荐阅读更多精彩内容

  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    时光清浅03阅读 482评论 0 0
  • 第一章 计算机组成与体系结构 1.1 计算机系统组成 1.1.1 计算机硬件的组成 控制器。控制器是分析和执行指令...
    步积阅读 1,958评论 0 15
  • Sonar翻译 Sonar翻译... 1 User Guide(用户指南)... 2 第一章Fixing the ...
    pig_zzZ阅读 2,762评论 0 1
  • [if !supportLists]1、[endif]文件管理:把所管理的程序和数据组织成一系列的文件,并能进行合...
    小公举凡阅读 479评论 0 0
  • 最近每天给英语群里的人教两个书写体字母。昨天把二十六个字母都教完了,今天早上还是忍不住想写点什么,于是就写了句歌词...
    星火盎然的艾珐阅读 382评论 0 0