处理器基础知识——cache

本文节选自书籍《大话处理器:处理器基础知识读本》
PDF版本可以访问我的网盘通过网盘分享的文件:大话处理器:处理器基础知识读本.pdf 提取码: 1234

0 什么是 Cache

  1. 随处可见的Cache–技术来源于生活
    使用电脑的人对 Cachc 并不会陌生,只要在 Windows 下搜索“Cache”,就会找到一大堆命名包括“Cache”的文件和文件夹,系统目录下有,浏览器目录下有,QQ目录下有,PPStream目录下有,迅雷看看目录下有……
    维基百科对 Cache的定义是:它是一个部件,透明地存储了一些数据,当下次需要这些数据时,就能更快的访问到。以迅雷看看为例,在网络上看完一个节目后,节目就存储在本地硬盘上,当下次再看这个节目时,就真接访问硬盘上缓存的内容,而不是从网络上去取,这样获取节目的速度就加快了。“透明”的意思是,用户不需要关心这段数据存在哪。Cache 的思想,并不是计算机专有的,它来源于生活。我们在大学读书时,书都放在宿舍里,今天要上《高数》课,就把《高数》的课本放进书包,明天要上《C语言》,就把书包中的《高数》课本取出来,把《C语言》课本放进书包,这个包就是一个 Cache(缓存)。垃圾篓、旅行包等都可以叫Cache。

1 处理器的 Cache 结构

1.1 Cache 的层次–层次化管理

我们通常会有这样的生活习惯,将最常用的东西放在桌上,这样可以最方便地拿到,将次常用的东西放在抽屉里,也能较快地拿到,将不常用的东西放在箱子里,去箱子里拿东西需要耗一点时间。
这种思想也被用在了Cache中,现在的处理器,都采用多级的Cache 组织形式,来达到性能和功耗的最优。

  • 单核处理器大都采用如下的 Cache 结构:
    在这里插入图片描述
    单核处理器通常包含两级Cache:L1Cache和L2 Cache,L表示 Level(级)。在 L1中,程序(Program)和数据(Data)使用各自的缓存(LIP和LID),而在L2中,程序和数据共用一套缓存。通常 L1空间为几十K,L2空间为几百K。
    当内核需要访问程序或数据时,会先从L1中去取,如果L1中没有,则L1从L2中将数据导入,如果 L2中也没有,则L2从内存中将数据导入。
    L1 通常和内核同频率,以保证速度,L2通常会降频使用,工作频率比内核低,这样能降低功耗。
  • 多核处理器大都采用如下的 Cache 结构:
    在这里插入图片描述
    在多核处理器中,一般每个内核独享自己的L1和L2,所有的内核会共用一个大容量的 L3。

1.2 Cache的工作方式——命中与未命中

整个 Cache 空间被分成了N个line,每个line(Cache line)通常是32 byte、64 byte等,Cache line 是 Cache 和内存交换数据的最小单位,每个Cache line 最少会包含如下3部分:
在这里插入图片描述

  • block中存储的是内存在Cache中缓存的数据
  • tag中存储的是该Cacheline 对应的内存块的地址。
  • valid 表示该Cache line中的数据是否有效。

下面描述了一个基本的Cache 工作方式,假设处理器只有一级Cache,当内核访问一个数据时,内核首先会在Cache中找,一开始自然找不到,于是就发生了Cachemiss(未命中),这时内存中的数据被导入到一个Cache line的block中,将地址写到相应的 tag 位置处,并将valid 标志置1。当下一次内核继续访问这个数据时,处理器根据地址在Cache中找到对应的 Cache line,发现 valid 标志为1并且tag 标志也匹配,就知道找到了数据,直接从 Cache 中取这个数据,这个过程叫 Cache hit。

  • 当Cache 命中时,内核直接从Cache中取数据,时间通常为几个cycle
  • 当 Cache 未命中时,数据需要从内存中导入,时间通常是几十、几百个cycle,极大地拖垮了处理器的性能。

1.3 Cache的映射方式–多对一的策略

由于内存的空间要远远大于Cache的空间,因此内存中的数据搬到Cache 中时,会存在一个多对一的映射。

  1. Full-associative Cache(全关联 Cache)
    内存以字节为存储单位,不过由于内存和Cache交换数据的最小单位是一个Cacheline,因此姑且将内存也看成按照 line的方式存储。
    在Full-associativeCache中,内存中的每个1ine能够被映射到Cache中的任意一个Cacheline,如下图:
大话处理器处理器基础知识读本的真正完整本,全部八章,手动呕血扫描加书签,非网上那种6.33MB的太监版~!以全家人性命为誓~! 作者简介   万木杨,网名木兮清扬,华为公司服务近6年,曾任软件工程师、算法工程师、系统工程师,擅长多媒体算法设计和编写高效代码。 作者自2004年起开始研究多媒体算法,从语音识别,到人脸动画,再到视频编解码,足迹遍布语音、图像、视频、3D。自2006年在DSP上编写程序,从此开始深入研究处理器内部结构,后来接触过大量的半导体公司和处理器芯片,对处理器技术和产品有着深刻的理解。 闲暇之余,作者喜爱读书,多年来保持平均两周一本的速度。 ·查看全部>>目录 第1章 漫游计算机世界 1.1 计算机的前世、今生、来世 1.2 计算机分门别类 1.3 PC机结构探秘 第2章 初识处理器——掀起你的盖头来 2.1 处理器是怎样工作的——处理器的硬件模型 2.2 怎样来使用处理器——处理器的编程模型 2.3 处理器的分层模型 2.4 选什么样的处理器——适合的才是最好的 第3章 指令集体系结构——处理器的外表 3.1 指令集是什么 3.2 指令集发展的来龙去脉 3.3 指令集的五朵金花 3.4 地盘之争 3.5 汇编语言格式——没有规矩不成方圆 第4章 微架构——处理器的内心世界 4.1 跟着顺溜学流水线 4.2 从子弹射击到指令执行 4.3 从顺序执行到乱序执行——因时制宜 4.4 处理器并行设计——并行,提高性能的不二法门 4.5 指令并行(Instruction Level Parallelism) 4.6 数据并行(Data Level Parallelism) 4.7 线程并行(Thread Level Parallelism) 4.8 并行总结 4.9 微架构总结 第5章 Cache——处理器的“肚量” 5.1 什么是Cache——探索既熟悉又陌生的领域 5.2 处理器Cache结构——探索那些鲜为人知的秘密 5.3 Cache一致性 5.4 片内可寻址存储器——软件管理的Cache 第6章 编写高效代码——时间就是生命 6.1 软件效率——21世纪什么最重要?效率! 6.2 减少指令数——勤俭持家 6.3 减少处理器不擅长的操作——不要逼我做我不喜欢的事情 6.4 优化内存访问——别让包袱拖垮了你 6.5 充分利用编译器进行优化——编译器:我才是优化第一高手 6.6 利用多核来加速程序——人多力量大 第7章 SOC——吸星大法 7.1 SOC大一统时代 7.2 IP核 第8章 “芯”路历程——明明白白我的“芯” 8.1 逻辑电路基础——计算机的基本构成 8.2 芯片设计——芯者,国之大事,不可不察也 8.3 芯片制造——点沙成金
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值