【DOTS学习笔记】Cache层级结构与排队管理

news2024/11/25 0:25:27

目录

  • 前言
  • 如何理解L1,L2,L3级缓存的树形结构设计
  • 排队的烦恼
    • 现实中的排队烦恼
    • 计算机程序设计中的排队
  • 队列类型


前言


本文是Metaverse大衍神君的《DOTS之路》系列课程的学习笔记

如何理解L1,L2,L3级缓存的树形结构设计

在这里插入图片描述

排队的烦恼

现实中的排队烦恼


这是一张关于排队的图,现实中相信大家多少也都有关于排队的烦恼
在这里插入图片描述

  • 由于队形的结构类型不同
  • 排队规则不同
  • 队列中的人到达的事件不同
  • 服务的时间不同
  • 离开队列的条件
  • 其他等等一系列不同的因素

以上各种内外部因素导致你的预期调度不仅没有加速你在队列中的等待时间
相反造成了更长时间的等待

计算机程序设计中的排队


联想到计算机程序设计,其实我们的CPU指令执行也在排队!
很多算法也是在处理数据队列

现实中队列的内外因素不同,我们可以通过一些设计和规则以及调度的调整来改善队列的效率
这在计算机上也是一样的

  • DOTS面向数据的设计部分就是在设计队列的结构
  • ECS就是在组织队列中的规则
  • JobSystem就是在做队列的调度

队列类型


  • 单队列

这是最常见的队伍类型

  • 比较简单
  • 参与队伍管理的工作人员可以很少
  • 队列中的任何一个人或业务人员出现处理时间较长的问题
    • 造成的阻塞是整个系统级别的

  • 多队列
    在这里插入图片描述

单队列的优点与缺点简单易懂
而为了解决系统级别的阻塞问题,很自然的会想到使用多队列
让他们并行处理,不就解决问题了吗?

当初的CPU设计人员也是这样想
并行设计多核计算也是这么干的

  • 可并行处理
  • 占地大
  • 需要的服务人员与并行队列数量成正比
    • 在CPU上就需要有更好的工艺,给多核留更大的空间
  • 即使这样,单纯的多队列也并不一定高效
    • 我们不知道系统中每个人需要多久时间完成
    • 当一个并行队列中,一个人花费的时间太长时,依然会造成整体系统依旧很慢

  • 单队列+调度
    在这里插入图片描述

  • 处理并行,调度串行的队列

  • 需要一个调度人员来管理队列

  • 当某个窗口被阻塞时,调度人员会将长队列等待的人员调到其他处理窗口

  • 长的单行队列,就很像Cache缓存

  • 与多行并行队列相比,可以解决

    • 队列中每个人处理时间长度不一致的情况
    • 新到来的人进入队列的时间随机的情况

  • 复合队列-单行调度队列+多行并行队列
    在这里插入图片描述

  • 这种队列在现实中也有例子

    • 大规模核酸现场队伍
    • 每10人一管共测,每次调度员需要从单行队列中调10个人一起进入空闲并行队列等待
  • 适合多阶段批次处理事务的队列

  • 适合每个批次每个人处理的时间近似的情况

  • 有点符合Cache Line的概念了

  • 然而这种队列也不是没有问题的
    在这里插入图片描述
    一旦出现上图中这种同批次中每个人处理时间有巨大差异的时候,队列效率就会变得很差
    调度员的调度工作量与复杂度也会上升

在这里插入图片描述

如图所示,我们再增加一层并行队列,并增加两个调度人员
一个是应付进入整体队列系统的调度员A,用来调度随机到来的人员进入类似属性的队列
一个是调度员B按照每个并行队列中单个队列是否达到上限,将队列中的人统一调度到下一层的单行队列中进行等待
在这里插入图片描述
我们增加处理完的队列后的后续工作
如果我们按照当前的系统调度,虽然队列按照相同属性组织完成了
但离开队列的系统情况是离散的,导致离开队列变乱了
以机场为例:
如果按照固定时间完成一次离开队列的摆渡车发车处理
有时甚至填不满或者超出单次的承载量,这样整个系统的效率又变差了
在这里插入图片描述
那么我们考虑在进入第一层并行队列时,除按照属性组之外,再按照家庭或旅行团分离队列
在进入办理登机手续的时候,第一位成员就可以拿多本护照一次性办理
并选择临近的座位,一起坐上摆渡车

类比到CPU上,其实就是把数据组织成矢量或对齐优化,处理时可以兼容SIMD指令
这样一个指令处理多条类似数据,不仅加快了处理效率,还可以保持离开队列系统时数据的连续

至此类比案例完成,最后做一个更加大胆的类比
在这里插入图片描述
我们可以将
蓝色部分类比为L1级缓存
青色部分类比成L2级缓存
紫色部分类比为一个CPU的逻辑核
红色部分类比为L3级缓存(多个逻辑核共享)
每个不同级别的缓存内的队列可以类比成Cache Line或Chunk
整个队列系统组织数据layout的过程可以类比成ECS
黄色调度员类比成不同调动方式下的JobSystem
而进入到蓝色处理元处理的人员队列类比成Burst编译器优化过后的支持SIMD的代码指令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

论文速递:AAAI 2023 | 优图16篇论文速览,含多标签分类、姿态估计、目标检测、HOI、小样本学习等研究方向

近日,AAAI 2023(Association for the Advancement of Artificial Intelligence)国际先进人工智能协会公布了录用结果,本届会议共有8777篇投稿,录用1721篇,录用率19.6%。 AAAI是人工智能领域的主要学术组织之…

[go 语言学习笔记] 7天用Go从零实现分布式缓存GeeCache 「持续更新中」

说明 本文用于记录学习 go 语言过程中的笔记, 文中的代码都是在文本中敲出来的伪代码, 并不能直接运行, 如有需要可以参考原文链接. 本文的整体思路是对原系列教程阅读后的复盘. 关于本文参考的 学习教程 可以访问原教程链接: 7天用Go从零实现分布式缓存GeeCache 本文如有…

文本检测识别技术在合合信息的应用实务解决方案

合合信息保险行业全业务流程数字化解决方案 合合信息依托AI大数据,打造了保险行业全业务流程数字化解决方案:OCR智能分类识别文档、表格、卡证、票据、合同等,替代人工录入,图像智能质检优化,实现投保、核保、理赔、合…

(Matlab实现)基于蒙特卡洛模拟的大规模电动车充电模型

目录 摘要: 1电动车日行驶里程概率分布: 2.电动车充电起始时间概率分布: 3.大规模电动车充电行为蒙特卡洛建模: 3.1日行驶里程 3.2开始充电时间 3.3耗电量 3.4充电时间 3.5总充电负荷 4.不同规模的电动车的充电负荷曲线…

vue中vue-router安装与配置方法步骤详解

vue-router 是 vue.js 官方的路由插件,里面组件和 URL 的映射关系由 vue-route 帮我们管理。 在 vue-router 的单页面应用中,页面的路径的改变就是组件的切换。 第一步: 1.正常初始化项目的时候,会有个 vue-router 供我们选择。…

docker安装kafka、zookeeper

docker安装kafka、zookeeper 基于win10,docker desktop 基于linux也是一样的处理方式 (win10通过Docker搭建LNMP环境全流程)[https://blog.csdn.net/fendouweiqian/article/details/128062543] docker安装kafka、zookeeper 创建共享网络 为的是容器内可以通讯 …

vue-cli-3环境搭建和配置

一、vue 是单文件组件 之前注册组件有什么缺点 ? 1- 缺乏语法高亮 2-格式不好 3-没有专门的写css代码等等 参考 : vue > 工具 > 单文件组件 什么是单文件组件 :后缀为 .vue 的文件 单文件组件的三个组成部分 (代码块 : scaffold 自动提示) template (模…

21. 合理的模型初始化和激活函数

1. 让训练更加稳定 2. 让每层的方差是一个常数 以两个变量为例,均值为零可以让变量于自己的轴对称,那么在二维上整个变量分布就是中心对称,而方差则可以控制各个变量离原点的离散程度,那么就可以把二维变量看成限制在某个圈内。 在…

物联网开发笔记(61)- 使用Micropython开发ESP32开发板之控制3.2寸触摸屏的SD卡(续)

一、目的 这一节我们学习如何使用我们的ESP32开发板来控制3.2寸触摸屏的SD卡。 关键字:3.2寸SPI串口TFT液晶显示屏模块 ILI9341驱动 LCD触摸屏 240*320 XPT2046触摸屏芯片IC 二、环境 ESP32 3.2寸触摸屏SD卡模块 Thonny IDE 几根杜邦线 接线方法: …

[附源码]计算机毕业设计的中点游戏分享网站Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

一篇文章带你深入了解JavaScript中let+var的特性

暂时性死区 上篇文章我们了解到了let和var之间的细微差别&#xff0c;同时它们之间还有一个区别就是let声明的变量不会在作用域中被提升 <script> //name会被提升console.log(name); //undefinedvar name "Matt"; ​//age不会被提升console.log(age); //…

5.Naocs系列之集群部署

本文学习nacos基于docker的集群部署 1. 新增mysql8 Dockerfile文件 // online/shenjian/nacos/nacosCluster/image/mysql FROM mysql:8.0.30 ADD https://raw.githubusercontent.com/alibaba/nacos/develop/distribution/conf/mysql-schema.sql /docker-entrypoint-initdb.d/…

极客时间Kafka - 13 Kafka 中的高水位和 Leader Epoch 机制

文章目录1. 什么是高水位&#xff1f;2. 高水位的作用3. 高水位更新机制1. Leader 副本高水位更新机制2. Follower 副本高水位更新机制4. 副本同步机制解析5. Leader Epoch你可能听说过高水位&#xff08;High Watermark&#xff09;&#xff0c;但不一定耳闻过 Leader Epoch。…

vxe-table 实现表格填写自动计算且限制数值的复杂操作

vxe-table 实现表格填写自动计算且限制数值复杂操作 效果 演示思路 输入框设置最大值 :max"row.max"输入框调用方法blur"updateFooterEvent(row, $event)" input" if (row[item.field] > row.max) { row[item.field] row.max; } " 上代码…

我们是如何追逐元宇宙、XR等“概念股”浪潮的?

作者&#xff1a;金擘(渚薰) 1.今年我们迈出的第一步 随着淘宝人生小屋项目的正式上线&#xff0c;淘宝人生今年的元宇宙规划初步成型。 加上在 S1 同淘宝直播团队的合作上线的 Disney 毛毛狂欢馆&#xff0c;我们也正式迈出了“元宇宙”技术的第一步。 今年是淘宝人生上线 3…

数智技术,企业绿色低碳转型的催化剂?大咖说新一期每周推荐来袭!

“双碳”战略下&#xff0c;企业会遇到哪些机遇和挑战&#xff1f;中小企业如何实现绿色转型&#xff1f;数字化又在其中发挥了怎样的作用&#xff1f; 介绍&#xff1a; 阿里云能耗云总经理 周文闻 施耐德电气首席数字化设计师 毛春景 “双碳”战略下&#xff0c;企业会遇到…

你写过哪些有趣的python?(附零基础学习资料)

前言 某网站上有个浏览超过400万的问题&#xff1a;可以用 Python 编程语言做哪些神奇好玩的事情&#xff1f; 我先举一个很不专业的栗子… 然后再找几个人抬一堆例子来… 不是很稀饭《复联》嘛&#xff0c;看了《复联4》&#xff0c;就用50行Python代码做了这些&#xff1a;…

Word控件Spire.Doc 【超链接】教程(4):如何修改Word文档中的超文本

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

【leetcode】从前序与中序遍历序列构造二叉树

一、题目描述 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例1&#xff1a; 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出:…

rk3399-uboot2017-增加串口通信

一、主要还是解决这个问题&#xff0c;最后没办法&#xff0c;只能进行串口通信&#xff0c;来识别屏幕的类型了。 基本步骤如下&#xff1a; 1. uboot阶段发送串口指令&#xff0c;等待串口回复数据&#xff0c;根据数据识别屏幕类型 2.在bootargs增加一个自定义的参数&…