0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

规范中与访问重叠地址相关的一些细微差别讨论

星星科技指导员 来源:synopsys 作者:synopsys 2023-05-25 15:19 次阅读

在这篇文章中,我将讨论规范中与访问重叠地址相关的一些细微差别。由于多个主站可能共享同一位置,并且数据可以分布在不同主站的缓存中,因此这是验证相干系统的重要组成部分。互连在维护此类访问的一致性方面起着非常重要的作用。

相对于对重叠事务的访问,互连应注意三个关键方面。

对事务进行排序

窥探访问的时间相对于对连贯事务的响应

如果从内存读取的数据可能与所有相关 snoop 事务完成后读取的数据不同,则从内存中“重新获取”数据

对事务进行排序

请考虑以下示例:

poYBAGRvC96AOJ5-AAB0BDnDFRM510.png

在这里,主站 1 和主 2 希望写入同一位置,并将其大致同时存储在其本地缓存中。为此,主节点 1 和主节点 2 发送 MakeUnique 事务(如图 1a 和 2a 表示)。让我们暂时考虑一下互连不正确的行为模式的影响。假设互连发送主站 1 和主 2 MakeInvalid 侦听事务(由 1b 和 2b 表示),分别对应于它从主站 2 和主 1 收到的 MakeUnique 事务。一旦主站响应 snoop 响应(由 1c 和 2c 表示),互连将响应发送回主站(由 1d 和 2d 表示)。当事务在主服务器 1 和主服务器 2 中完成时,两个主服务器都会将缓存更新为唯一状态。这违反了协议,因为缓存行只能由主节点保持唯一状态。此外,每个主节点可能会在其本地缓存中存储不同的值,而两个主节点都错误地认为它们具有缓存行的唯一副本。显然,未正确排序的影响是不连贯的,如图所示,其中两个主节点对数据有两种不同的视图。为了解决这个问题,规范要求对重叠地址的此类访问进行排序。规范指出:

“互连有责任确保有一个定义的顺序,可以发生到同一缓存行的事务,并且所有组件的定义顺序都是相同的。如果两个主站几乎同时向同一缓存行发出事务,则互连将确定哪些事务首先排序,哪个事务最后排序。互连使用的仲裁方法未由协议定义。互连通过对事务响应和对主节点的侦听事务进行排序来指示到同一缓存行的事务顺序。排序规则如下:

• 如果主服务器向缓存行发出事务,并且在收到对其发出的事务的响应之前,它在同一缓存行接收侦听事务,则侦听事务定义为优先排序。

• 如果主服务器向缓存行发出事务,并且在收到到同一缓存行的侦听事务之前收到对该事务的响应,则主服务器发出的事务被定义为优先排序。

在上面的例子中,让我们假设互连优先于主站1。如果是这样,它必须向主站1发送一个窥探事务(2b),等待窥探响应(1c)并将响应发送回主站1(1d)。在此序列结束时,主 1 的缓存行将处于唯一状态,并可能在其缓存中写入值。然后,互连可以对主站 2 进行排序,并可以将侦听事务 (2b) 发送到主站 1,这将使主站 1 中的缓存行无效,等待侦听响应 (2c) 并将响应发送回主站 2 (2d)。在此序列结束时,主 1 的缓存行无效,主 2 的缓存行将分配给唯一状态。

Snoop 访问的时间相对于对连贯事务的响应

该规范规定了对同一缓存行的一致性事务和侦听事务的响应顺序的一些规则。这些给出如下:

“互连必须确保以下几点:

• 如果互连为主站提供对事务的响应,则在收到来自该主站的相关 RACK WACK 响应之前,它不得将该主站发送侦听事务到同一缓存行

• 如果互连将侦听事务发送到主站,则在收到来自该主站的相关 CRRESP 响应之前,它不得向该主站提供对同一缓存行事务的响应。

与协议的这一方面相比,需要注意的重要一点是,此要求不适用于 WriteBack 和 WriteClean 事务,尽管规范中没有明确说明。将上述规则应用于 WriteBack 和 WriteClean 事务可能会导致死锁。这是因为允许接收到缓存行的侦听事务的主服务器将其停止,直到它启动或即将启动到同一缓存行的任何挂起的写回或 WriteClean 事务完成。换句话说,必须允许此主服务器接收对 WriteBack 或 WriteClean 事务的响应,然后才能允许传入的窥探继续(即响应它)。如果上述规则应用于 WriteBack 或 WriteClean 事务,则互连将无法向 WriteBack 或 WriteClean 事务发送响应,因为侦听事务已发送到主服务器。因此,此规则不适用于写回和写清理事务非常重要。

从内存中重新获取数据

在某些情况下,可能必须从内存中重新获取数据。例如,假设主 1 发出 ReadShared 事务,而具有缓存行脏副本的主 2 发出写回事务。假设互连发出从主内存读取 ReadShared 事务。发送到主内存的读取事务完成后,让我们假设写回有进展。在此之后,互连发送的任何窥探事务都不会返回数据,因为写回会使主 2 中的缓存行无效。但是,如果互连使用先前读取内存中接收的数据,则该互连将过时,因为 WriteBack 事务在发出读取内存后更新了内存。因此,有必要从内存中重新获取数据,并使用该数据来响应主 1。我们如何检测与此相关的问题?这些可以通过一致性检查来检测。在上面的示例中,ReadShared 事务将传递干净的数据,其内容应与内存的内容匹配。如果没有,则可能意味着互连使用了过时的数据来响应 ReadShared 事务。

测试对重叠地址的访问

测试与访问重叠地址相关的所有方案可能会让人不知所措。给定一个系统,有多个不同接口类型的端口可以将事务发送到重叠的地址。但是,并非所有访问给定地址的主节点组合都有效,因为某些主节点可能只允许访问某些地址空间,而一组主节点可能只访问一组有限的地址空间,而这些主节点组形成一个可共享性域。除此之外,对于给定地址的缓存行,具有不同初始状态的主节点可以启动许多不同的事务类型。随机化和配置感知序列的强大功能可以满足这些要求。对此进行测试的序列可以执行以下操作:

根据用户给出的可共享性域,在该域中随机选择两个主节点

根据这些主节点的接口类型,为每个主节点选择一个随机交易类型

将缓存行初始化为一组地址的有效随机状态

同时从两个主服务器发送交易

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测试
    +关注

    关注

    8

    文章

    4443

    浏览量

    125120
  • 服务器
    +关注

    关注

    12

    文章

    8111

    浏览量

    82491
  • 内存
    +关注

    关注

    8

    文章

    2767

    浏览量

    72752
收藏 人收藏

    评论

    相关推荐

    DDS与PLL的细微差别

    这样做的可控性或可重复性远不如DDS扫频。相位分辨率与灵活性:在模拟PLL,任何相位调整的结果都是遍历环路,所以它不是像DDS那样的精确可重复变化。数字PLL可提供定程度的相位调整能力。幅度分辨率与灵活性:幅度不是PLL所改变的参数。:ADI工程师博客分享——DDS与
    发表于 10-11 11:15

    DDS与PLL的细微差别

    分辨率 这里有几点细微差别…有款DDS运行速度为400 MSPS,使用48位调谐字(AD9956),由此得到的调谐分辨率不低于1.42 µHz,不错,其单位是微赫兹。标准PLL的分辨率受限于环路中分
    发表于 01-18 13:19

    设备在控制中心丢失该怎么办?

    你好。我使用CysB3014。StreamIN。然后用PC,ISEEN控制中心引导加载程序,但我下载流控制器,我的设备在控制中心丢失,或连接/断开,或规范工作。控制器用不同的电缆表现不同。这么多人拒绝了电缆或固件细微差别
    发表于 10-31 08:40

    不同MCU检测UART帧错误的细微差别

    今天翻看以前写的笔记,记录的是不同MCU UART 模块对错误检测的细微差别。重新整理了下,分享。
    发表于 03-29 11:54

    这家公司推出iDAR传感器挑战激光雷达

    传统激光雷达的另个限制是不能提供物体颜色、文本的详细信息,所以不能理解道路标线、路沿、路标和交通灯等目标物颜色的细微差别,而这些工作都需要后续处理,这个过程中标定工作的挑战很大,还有延迟,同时不可避免要消耗计算资源。
    发表于 05-19 07:35

    技术小课堂| NAND Flash与MCU集成的细微之处

    设备包含ECC引擎,可以减轻MCU的处理负担。关注NAND固有特性使用NAND Flash的复杂性是许多细微差别导致的,这些差别是这种存储介质不可或缺的部分。通常,Flash密度越高,使用越复杂。以下
    发表于 09-04 13:51

    如何最有效地使用光电二极管和光电晶体管

    。例如,需要合适的接口电路以在不同的强度和条件下提取最大电流。但是,确保应用的有效性还需要了解光电晶体管和光电二极管的工作原理以及二者之间的差异。本文将讨论这些器件的工作原理、一些关键的参数考虑因素、器件应用的一些
    发表于 01-12 07:56

    时钟树为何不是采用个系统时钟

    概念基础:STM32时钟系统基本致,不同系列之间有细微差别。此文档主要针对STM32F446的时钟系统进行介绍。1. 时钟树概述为何不是采用个系统时钟?如51 因为STM32本身非常复杂,外设
    发表于 08-12 06:45

    EarthQuaker Devices Special Cranker全离散模拟失真增强设备

    描述EQD 特殊曲柄EarthQuaker Devices Special Cranker 是款全离散模拟失真增强设备,旨在为您的信号提供一些额外的沙砾和提升,而不会大幅改变您的音调并保留放大器的所有自然细微差别和特性。
    发表于 09-05 06:51

    实用的HTTP/3协议部署选项相关资料分享

    今天,您也很难找到篇详细介绍细微差别的最佳实践的好文章。这是因为,正如我在第1部分的介绍中所说,早期的 HTTP/2内容的大部分内容都过于乐观地认为它在实践的效果如何,坦率地说,
    发表于 09-19 16:53

    编码器模式的细微差别有哪些?

    的两个边沿。为了跟踪上溢和下溢,每当我设置为 2399 的 ARR 溢出时,我都会生成个中断。在随后的 PeriodElapsedCallback 函数,我跟踪转数。在大多数情况下,这是有效的,除了
    发表于 02-01 07:46

    Arduino esp8266核心文件已过时要怎么解决?

    页上的文件存在细微差别:https: //github.com/esp8266/Arduino/blob ... _digital.c有趣的是,最后的变化似乎有修复了我面临的问题(在附加/分离 ISR
    发表于 05-08 07:23

    STM32时钟系统与时钟启动顺序详解

    STM32时钟系统基本一致,不同系列之间有细微差别。此文档主要针对STM32F446的时钟系统进行介绍。
    发表于 02-09 10:31 6次下载
    STM32时钟系统与时钟启动顺序详解

    DS2155和DS21458之间的细微差别

    DS21458为四端口T1/E1/J1单芯片收发器(SCT),与DS2155共享一个公共寄存器组,即单端口T1/E1/J1 SCT。DS2155和DS21458共享通用的软件架构,因此从单端口DS2155迁移到四端口DS21458相对简单。本文详细介绍了DS2155和DS21458之间的细微差别
    的头像 发表于 01-09 21:22 919次阅读

    验证符合AXI/ACE标准的互连的策略:第三部分

    这篇文章中,我将讨论规范中与访问重叠地址相关一些
    的头像 发表于 05-29 10:28 587次阅读
    验证符合AXI/ACE标准的互连的策略:第三部分