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

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

3天内不再提示

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

星星科技指导员 来源:synopsys 作者:Ray Varghese 2023-05-29 10:28 次阅读

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

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

对事务进行排序

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

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

对事务进行排序

请考虑以下示例:

poYBAGR0DYqAA4HnAAB-WtPuSiA929.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。如果是这样,它必须向主站1发送一个窥探事务(2b),等待窥探响应(1c)并将响应发送回主站1(1d)。在此序列结束时,主 1 的缓存行将处于唯一状态,并可能在其缓存中写入值。然后,互连可以对主站 2 进行排序,并可以将侦听事务 (2b) 发送到主站 1,这将使主站 1 中的缓存行无效,等待侦听响应 (2c) 并将响应发送回主站 2 (2d)。在此序列结束时,主 1 的缓存行无效,主 2 的缓存行将分配给唯一状态。

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

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

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

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

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

poYBAGR0DZCACBLvAACQC-HJHJA927.png

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

从内存中重新获取数据

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

测试对重叠地址的访问

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

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

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

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

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

关键验证点

上一篇博客中提到的所有验证点也适用于此处。除此之外,还需要检查以下内容:

事务顺序:事务的顺序必须与所有主节点看到的顺序相同

与相干响应和窥探访问相关的排序要求

确保需要从内存中重新获取数据时的一致性

在这篇文章中,我描述了测试策略和测试相对于访问重叠地址的关键方面。

审核编辑:郭婷

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

    关注

    33

    文章

    8491

    浏览量

    150814
  • 服务器
    +关注

    关注

    12

    文章

    9015

    浏览量

    85169
收藏 人收藏

    评论

    相关推荐

    独特的51单片机教程第三部分上—牛人经验,论坛独家奉献

    本帖最后由 eehome 于 2013-1-5 10:01 编辑 独特的51单片机教程第三部分—牛人经验,论坛独家奉献指令系统 与 寻址方式 按照顺序,今天该到说指令系统的时候了,要说指令系统
    发表于 11-17 11:18

    LabVIEW开发者必备技巧宝典第三部分

    LabVIEW开发者必备技巧宝典第三部分分享给大家,请叫我雷锋。
    发表于 12-05 11:40

    LabVIEW开发者必备技巧宝典第三部分

    本帖最后由 jfzhangjin 于 2015-5-6 09:30 编辑 LabVIEW开发者必备技巧宝典第三部分由电子发烧友网论坛出品,集结众多大牛、工程师的经验之作。为广大LabVIEW
    发表于 12-05 14:19

    找不到任何基于PSoC4或Pro的第三部分模块

    大家好,我似乎找不到任何基于PSoC4或Pro的第三部分模块。例如,对话框的DA14580来自松下的PAN1740模块。塞浦路斯IC有第三方供应商吗?提前感谢!克里斯托弗
    发表于 09-17 14:18

    接收机用晶体变换器设计及制作第三部分

    接收机用晶体变换器设计及制作第三部分 晶体变换器的印刷电路基板的制作与调整 图26晶体变换器的印刷电路基板
    发表于 05-15 10:58 990次阅读
    接收机用晶体变换器设计及制作<b class='flag-5'>第三部分</b>

    开关电源设计(第3版)第三部分

    电子发烧友网站提供《开关电源设计(第3版)第三部分.txt》资料免费下载
    发表于 09-12 15:04 0次下载

    2012年PSoC数模混合设计培训_第三部分

    2012年PSoC数模混合设计培训_第三部分
    发表于 10-27 09:30 8次下载
    2012年PSoC数模混合设计培训_<b class='flag-5'>第三部分</b>

    LTC2387驱动程序第三部分

    LTC2387驱动程序第三部分
    发表于 05-16 15:23 5次下载
    LTC2387驱动程序<b class='flag-5'>第三部分</b>

    用于激活设备的可编程定时器-第三部分

    电子发烧友网站提供《用于激活设备的可编程定时器-第三部分.zip》资料免费下载
    发表于 12-16 10:28 0次下载
    用于激活设备的可编程定时器-<b class='flag-5'>第三部分</b>

    验证符合AXI/ACE标准互连策略

    用于片上系统 (SoC) 中功能块连接和管理的 AMBA 4 规范现在具有支持多核计算的高级可扩展接口 (AXI) 一致性扩展 (ACE)。ACE 规范支持跨多核处理器群集的系统级缓存一致性。对这种系统的核查提出了重大挑战。
    的头像 发表于 05-25 14:50 1555次阅读
    <b class='flag-5'>验证</b><b class='flag-5'>符合</b><b class='flag-5'>AXI</b>/<b class='flag-5'>ACE</b><b class='flag-5'>标准</b>的<b class='flag-5'>互连</b>的<b class='flag-5'>策略</b>

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

    用于片上系统 (SoC) 中功能块连接和管理的 AMBA 4 规范现在具有支持多核计算的高级可扩展接口 (AXI) 一致性扩展 (ACE)。ACE 规范支持跨多核处理器群集的系统级缓存一致性。对这种
    的头像 发表于 05-29 10:23 1006次阅读
    <b class='flag-5'>验证</b><b class='flag-5'>符合</b><b class='flag-5'>AXI</b>/<b class='flag-5'>ACE</b><b class='flag-5'>标准</b>的<b class='flag-5'>互连</b>的<b class='flag-5'>策略</b>:第一<b class='flag-5'>部分</b>

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

    的每一个都有一组与互连不同的响应要求。此外,这些事务中的每一个都可以在多个配置中使用。我们需要验证互连对于每种事务类型是否正常工作。我们将首先概述该协议,然后再进行这些协议的测试策略
    的头像 发表于 05-29 10:24 2902次阅读
    <b class='flag-5'>验证</b><b class='flag-5'>符合</b><b class='flag-5'>AXI</b>/<b class='flag-5'>ACE</b><b class='flag-5'>标准</b>的<b class='flag-5'>互连</b>的<b class='flag-5'>策略</b>:第二<b class='flag-5'>部分</b>

    硬件即代码第三部分:空间与时间

    电子发烧友网站提供《硬件即代码第三部分:空间与时间.zip》资料免费下载
    发表于 06-14 15:12 0次下载
    硬件即代码<b class='flag-5'>第三部分</b>:空间与时间

    SensorTile.box第三部分:编程模式(Pro mode)介绍

    电子发烧友网站提供《SensorTile.box第三部分:编程模式(Pro mode)介绍.pdf》资料免费下载
    发表于 07-29 16:19 0次下载
    SensorTile.box<b class='flag-5'>第三部分</b>:编程模式(Pro mode)介绍

    用于高频接收器和发射器的锁相环——第三部分

    电子发烧友网站提供《用于高频接收器和发射器的锁相环——第三部分.pdf》资料免费下载
    发表于 11-23 10:18 0次下载
    用于高频接收器和发射器的锁相环——<b class='flag-5'>第三部分</b>