浅谈CPU中的缓存技术原理

CPU多级缓存机制 缓存的设计依赖于SRAM作为高速存储介质,一级缓存(L1)通常直接与CPU核心集成,而二级缓存(L2)可以集成在芯片内或外部。三级缓存(L3)则通常是多个核心共享的,容量更大但速度较慢。标签和数据存储分离的设计,帮助提高缓存的效率,减少数据访问延迟。每一层缓存的设计都是为了在速度、容量、成本、功耗之间找到最佳平衡,以提高整个系统的性能。 阅读详情

     CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即 将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。由此可见,在CPU中加入缓存是一种高效的解决方案,这样整个内存 储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓 存间的带宽引起的。 

  缓存的工作原理是当CPU要读取一个数据时,首先从缓存中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的 速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入缓存中,可以使得以后对整块数据的读取都从缓存中进行,不必再调用内存。

  正是这样的读取机制使CPU读取缓存的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在缓存中,只有 大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先缓存后内存。

  最早先的CPU缓存是个整体的,而且容量很低,英特尔公司从Pentium时代开始把缓存进行了分类。当时集成在CPU内核中的缓存已不足以满 足CPU的需求,而制造工艺上的限制又不能大幅度提高缓存的容量。因此出现了集成在与CPU同一块电路板上或主板上的缓存,此时就把 CPU内核集成的缓 存称为一级缓存,而外部的称为二级缓存。一级缓存中还分数据缓存(Data Cache,D-Cache)和指令缓存(Instruction Cache,I-Cache)。二者分别用来存放数据和执行这些数据的指令,而且两者可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处 理器效能。英特尔公司在推出Pentium 4处理器时,用新增的一种一级追踪缓存替代指令缓存,容量为12KμOps,表示能存储12K条微指令。

  随着CPU制造工艺的发展,二级缓存也能轻易的集成在CPU内核中,容量也在逐年提升。现在再用集成在CPU内部与否来定义一、二级缓存,已不 确切。而且随着二级缓存被集成入CPU内核中,以往二级缓存与CPU大差距分频的情况也被改变,此时其以相同于主频的速度工作,可以为CPU提供更高的传 输速度。

  二级缓存是CPU性能表现的关键之一,在CPU核心不变化的情况下,增加二级缓存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二级缓存上有差异,由此可见二级缓存对于CPU的重要性。

  CPU在缓存中找到有用的数据被称为命中,当缓存中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有二级 缓存的CPU中,读取一级缓存的命中率为80%。也就是说CPU一级缓存中找到的有用数据占数据总量的80%,剩下的20%从二级缓存中读取。由于不能准 确预测将要执行的数据,读取二级缓存的命中率也在80%左右(从二级缓存读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经 是一个相当小的比例了。目前的较高端的CPU中,还会带有三级缓存,它是为读取二级缓存后未命中的数据设计的—种缓存,在拥有三级缓存的CPU中,只有约 5%的数据需要从内存中调用,这进一步提高了CPU的效率。

  为了保证CPU访问时有较高的命中率,缓存中的内容应该按一定的算法替换。一种较常用的算法是“最近最少使用算法”(LRU算法),它是将最近 一段时间内最少被访问过的行淘汰出局。因此需要为每行设置一个计数器,LRU算法是把命中行的计数器清零,其他各行计数器加1。当需要替换时淘汰行计数器 计数值最大的数据行出局。这是一种高效、科学的算法,其计数器清零过程可以把一些频繁调用后再不需要的数据淘汰出缓存,提高缓存的利用率。

  CPU产品中,一级缓存的容量基本在4KB到64KB之间,二级缓存的容量则分为128KB、256KB、512KB、1MB、2MB等。一级 缓存容量各产品之间相差不大,而二级缓存容量则是提高CPU性能的关键。二级缓存容量的提升是由CPU制造工艺所决定的,容量增大必然导致CPU内部晶体 管数的增加,要在有限的CPU面积上集成更大的缓存,对制造工艺的要求也就越高。

    双核心CPU的二级缓存比较特殊,和以前的单核心CPU相比,最重要的就是两个内核的缓存所保存的数据要保持一致,否则就会出现错误,为了解决这个问题不同的CPU使用了不同的办法:

Intel双核心处理器的二级缓存
    目前Intel的双核心CPU主要有Pentium D、Pentium EE、Core Duo三种,其中Pentium D、Pentium EE的二级缓存方式完全相同。Pentium D和Pentium EE的二级缓存都是CPU内部两个内核具有互相独立的二级缓存,其中,8xx系列的Smithfield核心CPU为每核心1MB,而9xx系列的 Presler核心CPU为每核心2MB。这种CPU内部的两个内核之间的缓存数据同步是依靠位于主板北桥芯片上的仲裁单元通过前端总线在两个核心之间传 输来实现的,所以其数据延迟问题比较严重,性能并不尽如人意。
    Core Duo使用的核心为Yonah,它的二级缓存则是两个核心共享2MB的二级缓存,共享式的二级缓存配合Intel的“Smart cache”共享缓存技术,实现了真正意义上的缓存数据同步,大幅度降低了数据延迟,减少了对前端总线的占用,性能表现不错,是目前双核心处理器上最先进 的二级缓存架构。今后Intel的双核心处理器的二级缓存都会采用这种两个内核共享二级缓存的“Smart cache”共享缓存技术。

AMD双核心处理器的二级缓存
    Athlon 64 X2 CPU的核心主要有Manchester和Toledo两种,他们的二级缓存都是CPU内部两个内核具有互相独立的二级缓存,其中,Manchester 核心为每核心512KB,而Toledo核心为每核心1MB。处理器内部的两个内核之间的缓存数据同步是依靠CPU内置的System Request Interface(系统请求接口,SRI)控制,传输在CPU内部即可实现。这样一来,不但CPU资源占用很小,而且不必占用内存总线资源,数据延迟也 比Intel的Smithfield核心和Presler核心大为减少,协作效率明显胜过这两种核心。不过,由于这种方式仍然是两个内核的缓存相互独立, 从架构上来看也明显不如以Yonah核心为代表的Intel的共享缓存技术Smart Cache。

 
【Python・统计学】(两)多因素方差分析(原理及代码) 自学笔记,分享给对统计学原理不太清楚但需要在论文中用到的小伙伴,欢迎大佬们补充或绕道。ps:本文不涉及公式讲解(文科生小白友好体质)~(部分定义等来源于知乎) 本文重点:多因素方差分析 【1.多因素方差分析简单原理】 【2.多因素方差分析步骤】 【3.多因素方差分析代码】 阅读详情

相关推荐

FreeRTOS-Plus-CLI使用笔记

FreeRTOS-Plus-CLI使用笔记 一、简介 详细介绍可参考FreeRTOS-Plus-CLI官网地址入口 FreeRTOS+CLI(Command Line Interface, 命令行接口)提供了一种简单、小型、可扩展且RAM高效的方法,使FreeRTOS应用程序能够处理命令行输入。添加一条指令的步骤如下: 提供一个实现命令功能的函数 将命令映射到该功能函数 注册命令 运行命令解释器 命令行调试接口对于排查分析出现的问题提供了很好的接口,可以通过查看传感器信息判断传感器是否正常,可以查看内置

ApexYuan 6963

计算机硬件基础-----CPU缓存

一、什么是缓存 一台电脑有两种内存 一种是动态随机存储器,它是在RAM(ram是芯片的运行内存)模块中使用的DRAM(Dynamic RAM),使用电容器来存储数据的内存需要动态地被电流刷新才能存储数据 另一种是CPU中使用叫做SRAM(StaticRAM) 静态随机存储器 二、CPU缓存 2.1 什么是CPU缓存 CPU缓存:CPU缓存是位于CPU与内存之间的临时数据交换器,它的容量比内存小的多但是交换速度却比内存要快得多。 2.2 CPU缓存出现..

weixin_60075467的博客 3958

电子结构设计(EMD)十年知识总结

客官,你的面相是做结构设计的奇才~1. 材料选择【一出手的0.1s就败了】2. 钣金件设计【折来折去有啥难】3. 塑胶件设计【看着好复杂】4. 型材件设计【凭啥不让我设计】5. 电子结构(PCBA)设计【静电肿么要我背锅】6. 包装设计【要的就是金玉其外,败絮其中】7. 外观(工业)设计【好不好看,谁说了算】8. 标签设计【】9. 标准件选择【一个螺丝难倒英雄汉/提起螺丝,英雄气短】10. 计算仿...

wfeng86的博客 1569

CPU设计-- 缓存入门篇 1 什么是缓存

当我们需要运行一个进程的时候,首先会从磁盘设备(例如,eMMC、UFS、SSD、硬盘等)中将可执行程序load到主存中,然后开始执行。主存的特点就是容量很大,可以达到几十GB的容量,但CPU访问DDR的时间却要比寄存器慢几十倍的时间。底层技术的朋友来说,或许没有接触过缓存,毕竟对于程序员来说,是不太关心缓存的。今天,将带大家进入缓存的世界。试想:如果CPU想要执行A+B这条指令,则需要花费100多ns的时间从主存中拿取数据,然后再话几十ns的时间将结果写回到主存,则一来一回的代价对于CPU来说,太大了。

why584691794的博客 441

Windows 24H2下eNSP AR_40启动失败的终极修复指南

本文针对Windows 11 24H2更新后eNSP AR_40路由器启动失败的问题,提供了终极修复方案。核心在于解决系统强制虚拟化安全(VBS/Hyper-V)与老版模拟软件的兼容性冲突。指南详细介绍了安装关键系统更新KB5053656、精细调整Windows虚拟化功能以及后续排错步骤,帮助用户在24H2系统上稳定运行eNSP进行网络实验。

weixin_29233333的博客 507

libcurl库使用详情、libcurl库的制作

​ libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。libcurl的官网 、库下载。这种库使用的时候就像使用wiringPi库一样,编写完代码需要链接这个库,所以要先下载这个库。libcurl的使用(其实和socket编程时一样,都需要一定的步骤):

qq_45698138的博客 5337

CPU Cache

无论你写什么样的代码都会交给 CPU 来执行,所以,如果你想写出性能比较高的代码,这篇文章中提到的技术还是值得认真学习的。另外,千万别觉得这些东西没用,这些东西非常有用,十多年前就是这些知识在性能调优上帮了我的很多大忙,从而跟很多人拉开了差距…… 基础知识 首先,我们都知道现在的 CPU 多核技术,都会有几级缓存,老的 CPU 会有两级内存(L1 和 L2),新的CPU会有三级内存(L1,L2,L3 ),如下图所示: 其中: L1 缓存分成两种,一种是指令缓存,一种是数据缓存。L2 缓.

master-计算机科学专栏 782

瑞芯微rv1126 rtsp+mpp+rga取流

瑞芯微rv1109 rtsp+mpp+rga取流

ZuoSeDiao的博客 6338

CPU高速缓存(Cache Memory)

文章目录CPU高速缓存多CPU多核缓存架构缓存一致性(Cache coherence)缓存一致性的要求写传播(Write Propagation)事务串行化(Transaction Serialization)一致性机制(Coherence mechanisms)总线仲裁机制总线锁定缓存锁定总线窥探(Bus Snooping)工作原理窥探协议类型一致性协议(Coherence protocol)MESI协议伪共享的问题linux下查看Cache Line大小避免伪共享方案 CPU高速缓存 CPU缓存即高速缓

沮丧的南瓜 4511

Zabbix在Ubuntu 22.04上的性能优化与监控实战:从基础安装到高级配置

本文详细介绍了在Ubuntu 22.04系统上部署和优化Zabbix监控系统的完整流程,从基础安装到高级配置。内容包括MySQL数据库设置、Zabbix服务器与Web前端优化、性能调优策略以及实战监控场景应用,帮助用户构建高效的企业级监控解决方案。

sss66的博客 894

如何打开本地网络的防火墙端口(Windows版)解决ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。问题

ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。 最开始在遇到这个报错的时候十分不解,后来经过思考,有可能是服务器端口占用,或者并没有放行。因此搜查问题的关键是要先去排查问题。 在搜索栏输入控制面板 选择防火墙 选择开关 保证这些选项是开着的 选择高级设置 新建规则 创建协议端口 选择端口 允许连接 点击下一步 创建规则后点击下一步(后命名) 选择任意端口ALL即可 问题排查完毕!socket创建网络通信时,有读者

weixin_46900108的博客 9万+

浅谈数据库存储引擎技术原理与实现

摘要:数据库存储引擎是DBMS的核心组件,负责数据存储、检索和事务管理。分为B树/B+树和LSM树两大类型,B+树通过多路平衡树结构优化磁盘IO和范围查询,广泛应用于关系型数据库;LSM树则通过MemTable和SSTable实现高吞吐写入,适合写密集型场景。性能评估包括响应时间、吞吐量等指标,不同引擎适用于OLTP或OLAP等业务需求。

youngerwang的博客 1085

前端开发学习--登录和注册页面设计(html和css,可完成两个页面点击切换)

今天学习了登录和注册页面的设计,主要是HTML和CSS部分,注册和切换采用了Js代码进行,后面将通过js进行填写内容的验证,进而可通过JSP跳转到Servlet进行DAO数据的校验,这属于后端部分了。 总体设计思路:整个页面设计可以分为主体(content)、头部(content-header)、内容(content-body)三个部分组成,其中是主体是根部,包含了头部和内容,头部和内容各自下设两...

weixin_43691879的博客 1万+

浅谈Linux追踪技术

随着计算机的发展,软硬件系统变得越来越复杂,于是衍生出了各类追踪技术和工具,用于验证和分析复杂系统内部运行的正确性,并为解决生产问题提供必要的帮助。从广义上来说,包括日志也是一种追踪技术,日志记录系统的运行信息,并且可以在系统出错时打印错误信息,但日志的功能通常限制于对系统的流程信息和错误进行打印,而无法记录系统更详细的运行信息。时至今日,Linux系统上已经产生了太多的工具,例如perf、ftrace、BFP等,如何在面临问题时,选择和搭配合适的工具反而成了难题。

Aspiresky的专栏 1157

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

浅谈主流笔记本内存

现代的PC(包括NB)都是以存储器为核心的多总线结构,即CPU只通过存储总线与主存储器交换信息(先在Cache里找数据,如果找不到,再去主存找)。输入输出设备通过I/O总线直接与主存储器交换信息。在I/O设备和主存储器之间配置专用的I/O处理器。CPU不直接参与I/O设备与主存储器之间的信息传送。 存储器分为内部存储器和外部存储器(或者叫主存储器和辅助存储器)。内部存储器简称内存,也...

weixin_30565327的博客 379

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

月报|公众号 4月文章汇总

「点击图片获取最近两年爆款好文」往期汇总如下:月报|公众号 3 月文章汇总月报|公众号 2 月文章汇总月报|公众号 1 月文章归总历史文章中选了一些比较受读者欢迎的文章,把它整理出来...

民工哥的博客 1230

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

大厂面试资料

基于SSD的Kafka应用层缓存架构设计与实现 Java中9种常见的CMS GC问题分析与解决 Java即时编译器原理解析及实践 外卖客户端容器化架构的演进 Kubernetes如何改变美团的云基础设施? 新一代垃圾回收器ZGC的探索与实践 美团搜索中NER技术的探索与实践 BERT在美团搜索核心排序的探索和实践 美团万亿级 KV 存储架构与实践 MyBatis版本升级引发的线上告警回顾及原理分析 美团MySQL数据库巡检系统的设计与应用 Java线程池实现原理及其在美团业务中的实践 Intel PAUSE

程序员劝退师的博客 1580

星弟专享面试题汇总(星弟亲自总结)

synchronized与ReentrantLock的区别。三个线程如何交替打印1, 2, 3。xml中手写一个分页。

qq_48089180的博客 608

我的最近阅读

这才叫分布式限流算法!从零构建你自己的关系型数据库RabbitMQ 是什么?架构是怎么样的?海外泼天流量|浅谈全球化技术架构一大批程序员又要开始写简历了!浅入浅出——MySQL索引万字长文:细数那些Go网络编程的事情多线程读写锁产生死锁的故障解决方案IO模型介绍(select、poll、epoll)八年实战经验,解读DDD思想内核高性能Gin框架原理学习教程K8s里我的容器到底用了多少内存?Redis 问题排查与 QPS 评估理解Go协程调度的本质74.1k!Star分分钟搭建百万用户在线系统?Supaba

m0_62988535的博客 147

CPU 为什么需要缓存?揭开速度与效率的底层逻辑

CPU 为什么需要缓存?揭开速度与效率的底层逻辑在计算机系统中,CPU 与内存的速度差异是引入缓存的核心原因。现代计算机系统中,,这种速度鸿沟严重制约系统性能。而缓存(Cache)正是解决这个矛盾的 “桥梁”。今天我们就从底层逻辑聊起:为什么现代 CPU 离不开缓存?这个小小的芯片组件,到底在系统中扮演着怎样的关键角色?一、核心矛盾:CPU 与内存的 “速度鸿沟”。:现代 CPU 的主频普遍在 3GHz 以上(如 Intel i9-13900K 可达 5.8GHz),意味着每秒能执行数十亿次运算。

qq_34999565的博客 1585

4路组相连cache设计_【芯片设计】多核体系的缓存设计 (一)

多核体系结构的性能正越来越多的受到存储速率和片外带宽的限制,多级高速缓存设计作为提升处理器性能的手段被广泛应用在芯片架构中。01—Cache的历史286时代及以前,CPU和内存速度都很慢,CPU可以直接访问内存。386开始,处理器增加了流水线功能,因此引入写直达策略的小容量主板缓存以实现更快的数据访问。486将集成浮点运算单元(FPU)从协处理器集成到芯片上,由于CPU计算和内存...

weixin_39524741的博客 1559

Infinity Cache是什么

对于 AMD 来说,这也是一笔不小的数目,其工程师告诉我们,这是将游戏性能从 1080p 解锁到 4K 的关键,否则它将被庞大而耗电的选择所困扰。AMD 的工程师预计对 Infinity Cache 的调用将达到 60-80%的时间,这意味着它现在经常与现有的游戏引擎一起使用,存储有用的数据以渲染帧。根据 AMD 在发布会的 PPT 显示,采用 Infinity Cache+ 256bit GDDR6 显存的方案相比传统的 384bit GDDR6 显存带宽翻倍,并在功耗还要更低。...

2023年最新地推相关信息 2715

CPU缓存原理

那现在主流的缓存机制是怎样的呢,首先L1,每个逻辑核心(如果没有超线程技术,逻辑核心就是物理核心,如果有超线程技术,通常超线程是将一个物理核心配套两套缓存等其他硬件,在软件层面虚拟成两个核心,所以一个物理核心对应两套缓存)对应自己的L1,在保证速度不会下降的情况下尽量大(几十K就差不多了),然后是L2,如果L2不是最后一级缓存,通常还是每个逻辑核心对应自己的L2,在降低一定的速度要求,在兼顾空间的基础上尽量大。它是相对于外存而言的。首先,一般指的缓存有2种,一种是cpu的多级缓存,一种是硬盘的缓存。

m0_74282605的博客 323

【面试笔记】CPU 缓存机制

CPU的多层次缓存结构的设计和工作原理

Louistark的博客 2020

深入理解CPU缓存Cache:原理、机制与实践

在嵌入式开发与系统优化领域,Cache 是绕不开的核心概念。它既是提升 CPU 性能的关键硬件设计,也是引发数据一致性问题、性能瓶颈的常见源头。无论是调试驱动程序中的 DMA 异常,还是优化算法的运行效率,深入理解 Cache 的工作机制都至关重要。本文将从基础原理出发,逐步拆解 Cache 的核心特性、管理方式与实践要点,为工程师提供系统性的认知框架。

WCIAS的博客 3449

解读CPU缓存,它们如何工作的?

例如,AMD Ryzen 5 5600X具有384KB的L1缓存和3MB的L2缓存(加上32MB的L3缓存)。现在,CPU 中的 L3 缓存可能非常庞大,高端消费类 CPU 具有高达 32MB 的 L3 缓存,某些服务器 CPU L3 缓存可能会超过此值,最高可达 128MB。实际上,除了更多的晶体管数量和更高的频率之外,缓存也非常重要。还有“随机存取存储器”, 俗称内存,它比主存储快得多,但只是一个短期存储介质,它让计算机及其程序使用 RAM 来存储经常访问的数据,从而帮助保持计算机上的操作良好而快速。

Free雅轩的博客 410
上一篇: Java对象池技术的原理及其实现的小结。
下一篇: java中常用的方法
QJC13
博客等级 码龄19年 9粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值