gem5学习(22):经典内存系统的一致性——Classic Memory System coherence

本文主要是介绍gem5学习(22):经典内存系统的一致性——Classic Memory System coherence,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

官网教程:gem5: Classic memory system coherence

M5 2.0b4引入了一个经过大量重写和简化的缓存模型,包括一个新的一致性协议。一致性协议是用于确保多个缓存之间的数据一致性的规则和机制。这意味着在多个缓存中存储的数据将保持一致,以避免数据不一致的问题。

(在此之前的 M5 2.0 版本之前,缓存模型已经进行了修补,以适应引入的新内存系统。然而,旧的缓存模型并没有重新编写以充分利用新内存系统所提供的功能。因此,在 2.0beta 版本中,对缓存模型进行了彻底的重写,以使其能够更好地利用新内存系统的功能。)

新一致性协议的关键特性是它可以与多样化的缓存层次结构(多个层次上的多个缓存)配合工作。在计算系统中,通常会使用多个层次的缓存来加速数据访问。每个层次的缓存可以存储不同级别的数据,例如 L1 缓存、L2 缓存等。旧协议将缓存之间的数据共享限制在一个总线上,这就意味着只有通过总线才能进行数据的交互和传输。

在现实世界中,系统架构对协议可以适应的缓存数量或配置有限制。由于系统的多样性和复杂性,设计一个在任意配置下都既适用又高效的协议是不切实际的。因此,在设计一致性协议时,我们需要在现实性和可配置性方面做出一些妥协。

这意味着我们可能无法找到一种通用的协议,适用于所有可能的系统配置。相反,我们采取了一种折衷的方法,以满足在(几乎)任意配置上工作的需求。这意味着协议在大多数常见的系统配置下都能有效运行,但在某些特殊或定制的配置下可能会存在限制或不够高效。

尽管如此,我们的目标是确保协议对于研究系统行为的其他方面是足够的。这意味着协议能够满足一致性方面的基本需求,并在常见的系统配置下表现出良好的性能和可靠性。然而,对于专门研究一致性的研究人员来说,他们可能更倾向于使用特定的协议来替换默认的一致性机制,以满足其研究的特定需求。

该协议是一个MOESI(Modified, Owned, Exclusive, Shared, Invalid)嗅探协议,不强制实施包含性(Inclusion)。MOESI是一种常见的缓存一致性协议,用于管理多级缓存系统中的数据一致性。它定义了不同状态来表示缓存中数据的状态,包括被修改(Modified)、被拥有(Owned)、独占(Exclusive)、共享(Shared)和无效(Invalid)。

在一个CMP(Chip-level Multiprocessing)配置中,如果有多个L1缓存,它们的总容量是共享的L2缓存容量的显著一部分。在这种情况下,强制实施包含性可能非常低效。包含性是指较低级别缓存中的数据拷贝也存在于较高级别缓存中,以确保数据的一致性。

来自较高级别缓存(靠近CPU的缓存)的请求按预期的方式向内存传播:当L1缓存发生缺失时,它会在本地L1/L2总线上广播该缺失请求,并被其他L1缓存进行嗅探。如果没有响应,那么L2缓存将提供服务。如果L2中的请求也未命中,经过一段延迟后(通常等于L2的命中延迟),L2将在其内存侧总线上发出请求,可能被其他L2缓存进行嗅探,然后发送到L3缓存或内存。

然而,逐级向上传播嗅探请求可能会引发大量难以解决的竞争条件。实际系统通常不会按照这种方式进行处理。相反,通常希望在L2总线上执行单个嗅探操作,以告知整个L1/L2层次结构中该数据块的状态。为了实现这一点,可以采用多种方法:

  1. 只嗅探L2缓存,但强制实施包含性,以便L2具有关于L1缓存的所有所需信息。这种方法可以确保L2缓存具有关于L1缓存的完整状态信息,但可能会导致配置上的麻烦,需要根据上层缓存的数量、大小和配置来确定较低级别缓存的标记大小。
  2. 在L2上保留一组额外的标记,以便可以同时嗅探它们(如Compaq Piranha)。这种方法在层次结构不太深的情况下是合理的,但需要在设计中考虑额外的标记,并根据上层缓存的配置来确定标记的大小。
  3. 并行嗅探L1和L2缓存,特别是当它们都位于同一芯片上时。这种方法在一些处理器架构中被使用,如Intel的Pentium Pro。然而,为了实现这种并行嗅探,需要在设计中添加显式路径,这可能导致配置过程变得复杂。

为了解决以上问题,提出了引入"express snoops"的方法。"express snoops"是一种特殊的嗅探请求,即使在系统运行于时序模式时,也可以瞬间和原子地传播到整个层次结构上。这种方法类似于前述的第二或第三种选择,但由于嗅探是沿着常规总线互连传播的,所以没有额外的配置开销。然而,这可能引入一些时间上的不准确性,但如果系统中有专用路径用于这些嗅探,或者在较低级别缓存中维护额外的上层标记副本,那么差异可能是很小的。

最后,注意到该协议在某些配置下可能存在错误,特别是当有多个L2缓存,每个L2缓存后面有多个L1缓存时。这个问题可能在较新的版本中得到修复,但在较旧版本中,该协议在大多数有效的配置下是适用的。

这篇关于gem5学习(22):经典内存系统的一致性——Classic Memory System coherence的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/726107

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

NameNode内存生产配置

Hadoop2.x 系列,配置 NameNode 内存 NameNode 内存默认 2000m ,如果服务器内存 4G , NameNode 内存可以配置 3g 。在 hadoop-env.sh 文件中配置如下。 HADOOP_NAMENODE_OPTS=-Xmx3072m Hadoop3.x 系列,配置 Nam

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听