DPDK学习——cache相关知识②

高速缓冲存储器Cache地址映像与变换及相联目录表的设计 相联目录表结构:主存块号+Cache块号(看题目是否有要求,有的话再加上1位有效位) 相联目录表的项(行)数等于Cache的总块数 两者是映射的时候一一对应的。 相联目录表结构:区号(看题目是否有要求,有的话再加上1位有效位) 相联目录表的项(行)数等于Cache的总块数 相当于是保存了区号和Cache中哪一块的映射。 主存地址字段:区号、组号、组内块号、块内地址(偏移) Cache地址字段:组号、组内块号、块内地址(偏移)可以理解为一个区的大小就是Cache的大小,Cache自成一区,将主存划分成 阅读详情

2 Cache地址映射和变换

2.1 背景

Cache的容量很小,L3也只有几十兆,而内存容量有好几G,在这种情况下要把内存中的内容放到cache中,需要一个映射算法和分块机制。

2.2 分块机制

cache和内存以块为单位进行数据交换。块以在内存的一个存储周期中能访问到的数据长度为限。当今主流大小都是64字节,所以一个cache line就是64大小的数据块。

2.3 映射算法

映射算法要把内存中的内容按照某种规则装入cache中,并建立cache地址与内存地址的对应关系。如果内存在cache中了,处理器访问这个数据块内容时,就把内存地址转换成cache地址,然后在cache中找到这个数据块,返回给处理器。

根据内存和cache的映射关系不同,有三类:

 

定义

映射过程

特点

全关联型

主存中任何一块内存都可以映射到cache的任意一块位置上。

0.     书中图2-5

1.     Cache中建立一个目录表,目录表的表现有三部分:内存地址,cache块号,有效位。

2.     内存分为两部分:块地址A和块内地址B,用内存块地址A查cache中目录表。

3.     目录表中找到后,还需要有效位是有效的。

4.     通过cache块号在cache中找到缓存的内存,加上块内地址B,找到相应数据并返回处理器。这时cache命中。

1.     没有块冲突。

2.     Cache利用率很高

3.     需要访问一个很快的相联存储器才行。当cache容量增加,电路设计复杂度也增加。所以只有容量很小的cache才设计成全关联性。比如一些TLB cache。

直接关联型

主存中的一块内存只能映射到cache的一个特定的块中。一个cache中有N个cache line,就要把内存分成N块。比如2K cache有32个64字节cache line,那么内存的第1块(地址0——63),第33块,第N*32+1块,都只能映射到第一块cache中。

0.     书中图2-6

1.     Cache中的目录表有两个表项:区号和有效位。

2.     内存地址分成三部分:区号A,块号B,块内地址C。

3.     根据区号A找cache中目录表,找到并且有效位有效说明数据在cache中,然后用块号B获得块地址,加上块内地址C,得到最终数据。

1.     很死的映射方法,如果多个内存块对应同一个cache块,只有一个内被缓存。因此命中率很低。

2.     实现方法简单,匹配速度最快。

组关联型

比较广泛的一种方式。内存被分为很多组,一个组的大小为多个cache line的大小,组内任意一块可以的任意一块内存可以对应cache组的任意一个。相当于组外采用直接关联,组内采用全关联。

1M大小的4路组关联cache,有16K个cache line(64字节一个),分成4K个组。

0.     图2-7

1.     Cache目录表有三部分:区号+块号、cache块号,有效位。

2.     内存地址分成四部分:区号A、组号B、块号C、块内地址D。

3.     以4路为例,根据组号B查找目录表,查找一组目录表现。

4.     根据区号A和块号C,在cache目录表里找到对应表项,并确认有效位有效。

5.     得到cache块号,加上块内地址D,得到内存地址在cache中的映射。

组关联相当于只有一个组的全关联,也相当于全部组内只有一个成员的全关联。

3. Cache的写策略

下表关注前两个。WC和UC针对特殊设备。

 

策略

优点

缺点

直写

数据写入到cache的同时,也写入到内存中

简单、可靠,保证任何时刻内存的数据和cache中的数据都是同步的。

浪费时间,没有必要:不是所有情景下都需要每时每刻把数据写入内存,大量没必要的操作会占用内存带宽,影响运行速度。比如一个局部变量,生命周期短,且其他线程根本用不到。

回写

在cache line的标志位字段加了一个dirty标志位,当某个处理器修改了这个cache line后,就把dirty置1,当这个处理器再次修改这个cache line并要写入cache时,发现dirty为1,会先把cache line内容写回到内存中,再写入cache。

高效,规避了直写的浪费。

多核情况下会引起一致性的问题,需要MESI机制保障。

Write-combining

针对某些具体设备,比如显卡RAM的优化策略,因为这些设备上数据从cache到内存的迁移开销比直接访问内存都高。这种策略下会在cache line里的数据都写完后1,才把cache line写回到内存。

 

 

Uncacheable内存

一部分不能被存入cache的特殊内存,比如PCI设备的IO空间通过MMIO方式被映射成内存来访问,因为设备希望修改这种内存后可以立即写入设备内部。

 

 


小结

这里介绍了cache的映射机制,对应示例图片在《深入浅出DPDK》一书中有。另外介绍了cache中的内容修改后,写回内存的时机,也就是回写。但是回写并没有解决多处理器场景下的cache一致性问题。需要一种机制来保证同一个内存的多个cache备份保持一致。

深入浅出DPDK学习笔记(3)——— Cache和内存 深入浅出DPDK学习笔记(3)——— Cache和内存系统架构的演进Cache系统简介Cache的种类TLB CacheCache地址映射和变换全关联型Cache直接关联型Cache组关联型CacheCache的写策略Cache预取Cache的预取原理软件预取软件预取指令DPDK中的预取Cache一致性Cache Line对齐Cache一致性问题的由来一致性协议MESI协议DPDK如何保证Cache一致性TLB和大页逻辑地址到物理地址的转换TLB使用大页如何激活大页DDIONUMA系统 系统架构的演进 在经 阅读详情

相关推荐

DPDK源码分析之DPDK技术简介

DPDK的线程可以作为控制线程,也可以作为数据线程。硬件的能力提升迅速,在一块小小的网卡上,处理器能够提供的性能已经远远超出了简单的数据包接收转发的需求,这在技术上提供了将许多原先软件实现的功能下移由网卡硬件直接完成的可能。DPDK采用了轮询或者轮询混杂中断的模式来进行收包和发包,此前传统的方法都是系统内核态的网卡驱动程序基于异步中断处理模式,我们都知道中断是十分耗性能的。其次DPDK充分利用指令的并发,比如说rte_memcpy,虽然功能只是简单的内存拷贝功能,但是它的实现使用了平台。

lingshengxiyou的博客 802

《深入浅出DPDK》读书笔记(一):基础部分知识点

OS 的内核不是解决 C10M 问题的办法,恰恰相反 OS 的内核正是导致 C10M 问题的关键所在。

RToax 7890

LS2088ARDB平台DPDK性能调优与容器化部署实战指南

在追求极致网络性能的嵌入式与边缘计算场景中,数据平面开发套件(DPDK)通过用户态轮询、大页内存和CPU亲和性绑定等技术,绕过了传统内核协议栈的开销,将数据包处理延迟从毫秒级降至微秒甚至纳秒级,从而为5G前传、边缘网关和网络功能虚拟化(NFV)等应用提供了接近线速的处理能力。其核心原理在于最大化硬件利用率,减少上下文切换和内存访问延迟,这对于需要高吞吐量和低延迟确定性响应的系统至关重要。在NXP Layerscape这类集成了DPAA/DPAA2硬件加速引擎的平台上,结合DPDK可以充分发挥硬件潜能。然而,

congtaixiao7151的博客 350

ARM的cache和写缓冲器(write buffer)

转:https://blog.youkuaiyun.com/gameit/article/details/13169445?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-6.chann...

9527的博客 1837

使用广播星历进行 GPS 卫星位置的计算

目录1.计算卫星运动的平均角速度 n2.计算观测瞬间卫星的近地点角3.计算偏近点角4.计算真近点角 f5.计算升交角距 6.计算摄动改正项7.进行摄动改正 8.计算卫星在轨道面坐标系中的位置9.计算观测瞬间升交点的经度 L10.计算卫星在瞬时地球坐标系中的位置11.计算卫星在协议地球坐标系中的位置使用广播星历进行GPS卫星位置的计算的详细步骤如下:关于在广播星历中各参数的分布情况可以参考下图:首先根据广播星历中给出的参数 计算参考时刻(TOE) 的平均角速度 式中,GM为万有引力常数 G 与地球总质量

qq_43381998的博客 5567

别再混淆了!5分钟搞懂机器人导纳控制与阻抗控制的本质区别(附Simulink对比仿真)

本文深入解析机器人柔顺控制中的导纳控制与阻抗控制的本质区别,通过信号流方向、架构对比和应用场景三个关键视角进行详细阐述。文章还提供Simulink对比仿真案例,帮助读者快速理解两种控制策略的差异及其适用场景,特别适合机器人控制领域的研究者和工程师参考。

weixin_42543046的博客 604

cache映射方式

Cache与主存之间的全相联映射,直接映射和组相联映射的区别 1.高速缓冲存储器的功能、结构与工作原理   高速缓冲存储器是存在于主存与CPU之间的一级存储器,由静态存储芯片(SRAM)组成,容量比较小但速度比主存高得多,接近于CPU的速度。 Cache的功能是用来存放那些近期需要运行的指令与数据。目的是提高CPU对存储器的访问速度。为此需要解决2个技术问题:一是主存地址与缓存地址的映象及

3444

IEEE Transactions on Industrial Informatics(TII)投稿全流程解析:从准备到成功提交

本文详细解析了向IEEE Transactions on Industrial Informatics(TII)投稿的全流程,涵盖从投稿前的格式准备、内容结构优化到在线提交系统实操等关键环节。重点强调了遵守TII严格的格式规范、双盲评审要求以及如何构建有说服力的学术叙述,旨在帮助研究者提升稿件质量,顺利通过评审。

weixin_28396629的博客 1863

存储系统|查找方法

2021年11月30日 查找方法 通过目录表来实现 即用地址中的内存块中的索引先找到对应的cache目录表的侯选位置(是一个大组的整体位置),然后通过标识来对比这个组内的来找,找到即命中,找不到不命中,访问内存。 找侯选位置中的目录表项可以用顺序查找也可以用并行查找 并行查找可以用相联存储器或者单体多字存储器+比较器来查找(非重点) 替换算法 1 有一个新的块要调入,要替换哪个块? 对于直接映像只能有一个块别无选择,组相联映像找到对应的组,全相联映像可以替换任意块 2 替

CodeShopper的博客 1134

银河麒麟V10离线安装VLC播放器:依赖处理与3.0.9.2版本实操指南

在国产化操作系统日益普及的背景下,软件安装方式成为政企内网用户关注的重点。离线安装作为一种不依赖公网源的部署手段,常用于解决内网环境下的软件获取问题。其核心在于理解Linux包管理机制,如dpkg与apt对依赖关系的处理逻辑。掌握这一原理,不仅能应对多媒体软件的部署,也能提升系统维护效率。VLC作为跨平台多媒体播放器,凭借强大的解码能力与协议支持,广泛应用于本地视频播放、RTSP拉流及监控大屏等场景。本文从离线安装的通用概念出发,结合银河麒麟V10桌面版的实际环境,详细梳理了VLC 3.0.9.2离线包的获

weixin_32247165的博客 368

从零部署思澈科技SiFli-Solution:避坑指南与实战排错

本文详细介绍了从零部署思澈科技SiFli-Solution开发环境的完整流程与实战排错指南。重点解析了Keil uVision5版本选择、Butterfli工具路径配置等关键步骤,并针对Keil路径报错、函数冲突等高频问题提供了具体解决方案,帮助开发者高效避坑,快速搭建稳定的嵌入式开发环境。

devops8pract的博客 529

DPDK学习——cache相关知识③

4. cache预取背景:cache操作对大多数程序员透明,但当对程序执行效率有很高要求的时候,程序员可以一定程度上控制cache。4.1 Cache局部性①时间局部性:程序即将用到的指令或数据,可能就是目前正在使用的指令或数据,可以在当前的指令数据使用完后暂存在cache中。典型的例子就是for循环。②空间局部性:程序即将使用的指令或数据可能与目前正在使用的指令或数据在空间上相邻或相近。所以可以...

HelloNerd的博客 2349

Hermes Dashboard Web 端部署完整说明

通过反向代理(nginx)使用公网域名访问时,会遇到 Host 头校验、CORS 跨域、WebSocket 连接拒绝三个核心问题。本文档记录了完整的源码修改方案和部署步骤。确保 nginx 主配置加载了 WebSocket map(宝塔默认为。路径的公开访问(无需登录),其他路径仍受 Cookie 认证保护。Hermes Dashboard 默认绑定。访问站点时会先弹出浏览器密码框,输入用户。在 nginx 反向代理配置中的。环境变量动态读取允许的域名。nginx 配置中已添加。

大白菜代码的博客 801

DPDK学习——cache相关知识④

6. TLB和大页6.1 TLB如前所说,TLB也是一种cache,用于存放页表项的cache,方便快速完成逻辑地址到物理地址的转换。6.2 大页但是一个常规页4k,假设一个程序用了512页,总共2MB,这就需要TLB里至少方下512个页表项才能保证每次都能命中,但TLB大小有限。所以为了减少TLB不命中的情况,可以使用大页,以1G为单位进行分页。7. DDIO7.1 提出DDIO的背景/原因①随...

HelloNerd的博客 1127

基于cat12搞定SBM的ROI的统计分析——vertex水平和ROI水平的双样本T检验

前言 一、Atlas皮层图谱介绍 二、SBM分析——主要以皮层四种常用指标中的厚度(thickness)和沟深(depth)为主

Sophia2023的博客 8749

反光柱定位算法实战05:Cartographer Landmark融合定位——从原理到实战

本文介绍了CartographerLandmark融合定位方案,该方案将反光柱作为Landmark节点直接融入Cartographer后端优化框架,避免了传统双系统切换导致的位姿跳变问题。文章详细阐述了Landmark的核心原理、数据发布格式(包括ID、坐标、权重等关键字段)以及两种工作模式(建图模式和导航模式)。特别指出组合反光柱作为Landmark可提供方向参考,有效解决镜像歧义问题。该方案通过统一优化框架实现稳定定位,尤其适用于缺乏自然特征的环境,但存在ID匹配不稳定等局限性。整体而言,Cartogr

Studying…… 424

DPDK学习——cache相关知识①

1. cache系统1.1 出现原因:内存性能对于CPU来说仍然很慢,处理器从内存中读数据多达上百个时钟周期,这几个周期里,处理器只能等待。所以提出了Cache以匹配处理器与内存之间的巨大速度鸿沟。1.2 三级cache:一级cache一般分为数据cache和指令cache,3~5个指令周期就能访问到数据,一般只有几十K;二级cache中数据和指令无差别的放在一起,需要十几个处理器周期访问到数据,...

HelloNerd的博客 805

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

DPDK学习(一)DPDK简介

1.DPDK介绍 Intel® DPDK 全称 Intel Data Plane Development Kit,是intel提供的数据平面开发工具集,为Intel architecture(IA)处理器架构下用户空间高效的数据包处理提供库函数和驱动的支持,它不同于Linux系统以通用性设计为目的,而是专注于网络应用中数据包的高性能处理。其工作在用户层,取代传统Linux系统中的网络数据报文处理。...

cuibin1991的专栏 2387

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

dpdk读书笔记--cache和内存

dpdk内存架构解读

huoyunfeng13579的专栏 191

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

DPDK学习笔记(1):二层转发应用例代码解析

本系列记录了我学习dpdk的学习笔记,文章内容会参考dpdk的官方文档,同时也会用ai辅助自己理解代码。选用的dpdk版本是24.11.4。目录简介二层转发应用例功能介绍函数讲解参数解析程序执行流程程序运行结果相关参考文档该程序的功能是将数据包在成对的端口间转发,默认情况下是端口0和端口1、端口2和端口3.....以此类推。如果启用了MAC地址修改功能的话会将数据包的源MAC地址修改成接受到数据包的端口的MAC地址,目的地址修改成02:00:00:00:00:xx,其中xx为目的端口的端口号。*/

m0_74123546的博客 895

【DPDK核心知识了解】(4) 并发与队列模型

本文介绍了DPDK中高性能并发队列rte_ring的设计原理与实现机制。rte_ring通过环形数组、多指针设计和原子操作,实现了无锁化的高并发数据交换。重点分析了SPSC(单生产单消费)和MPMC(多生产多消费)两种模式:SPSC模式下仅需内存屏障保证可见性;MPMC模式下通过CAS原子指令抢占写入位置,并严格按序提交数据。文章还探讨了rte_ring相比传统锁的三点优势:用户态自旋避免上下文切换、极小临界区设计、缓存行对齐消除伪共享。最后指出这种设计通常需要绑定CPU核以发挥最大性能,是DPDK实现高吞

qq_54050349的博客 204

多线程DPDK应用的内存优化

在一个线程收包,另一个线程发包的情况下,mbuf不会在同一个线程分配/释放,也就是上述导致内存池cache冗余(两个线程,两个mempool,两个mempool的cache)的例子。这个模型的效率更高。对这个程序来说,这是一个糟糕的模型,因为线程0的mempool cache一直包含的是'冷'的mbuf,而线程1的mempool cache一直是满的。采用stack模型的mempool时,CPU会尽可能把程序请求的大多数mbuf保持在Cache中,只有其中少部分会被刷到内存里。

lingshengxiyou的博客 526

DPDK学习总结(一)简介

开始学习DPDK,将学习中的心得和分析记录下来,以免时间久了自己都忘记了,也便于和其他同道中人交流。说是学习心得和体会,但也借鉴了书籍和其他网友的分析总结,在学习他人总结过程中发现介绍往往浅尝辄止,知其然不知其所以然,因此本学习总结希望可以从一个初学者的角度来介绍,尽量做到知其然及知其所以然,可能大家会觉得别人一两句话说完的事情这里用了一个章节来描述很啰...

weixin_33845477的博客 302

DPDK L2fwd 源码阅读

但是改变了目的MAC地址,自然无法通信。如果把修改目的MAC地址的那一行代码注释掉,就可以正常通信。原文链接: https://www.cnblogs.com/ZCplayground/p/9360798.html。学习地址:http://ke.qq.com/course/5066203?793599096 免费获取,或自行报名学习,免费订阅,永久学习,关注我持续更新哦!更多DPDK学习资料有需要的可以自行添加进入学习交流君 羊。可以看到经过端口转发的包的目的MAC地址被程序改变了。......

lingshengxiyou的博客 395

DPDK实战第五课:性能调优“三板斧”——从“跑起来”到“跑更快”

本文详细介绍了基于DPDK的网络安全防御软件性能调优技术。首先强调"先测量后优化"原则,介绍了DPDK自带的分析工具(dpdk-procinfo、dpdk-pmdinfo)和进阶工具(eBPF+perf)的使用方法。接着针对四种常见性能瓶颈提出了解决方案:缓存未命中时优化数据对齐和预取、内存拷贝时采用零拷贝设计、锁竞争时使用无锁数据结构和核隔离、小包处理时采用批量聚合和硬件加速。最后通过一个负载均衡器调优案例,展示了从50%吞吐量提升到90%的具体优化过程。

fearhacker的专栏 935

NXP Layerscape平台DPDK与VPP部署实战:释放DPAA2硬件加速潜能

在追求极致网络性能的场景中,传统Linux内核网络协议栈因频繁的内存拷贝和上下文切换,往往成为性能瓶颈。数据平面开发套件通过用户态轮询和零拷贝技术,实现了内核旁路,将CPU算力聚焦于业务处理。矢量包处理框架则创新性地采用批处理与图节点架构,通过缓存友好性大幅提升吞吐并稳定延迟。这两项技术的结合,为路由器、防火墙、5G UPF及边缘计算网关等设备提供了强大的软件数据平面解决方案。在NXP Layerscape处理器平台上,其内置的DPAA2硬件加速引擎能与DPDK的轮询模式驱动深度协同,实现流量管理、加解密等

weixin_30458043的博客 385
上一篇: DPDK学习——cache相关知识①
下一篇: DPDK学习——cache相关知识③
HelloNerd
博客等级 码龄12年 10粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值