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

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

3天内不再提示

从Cache验证参考模型对比来谈复杂度权衡

路科验证 来源:路科验证 2023-04-28 09:25 次阅读

一直以来对MTK北京团队做的关于Cache一致性验证的方案有深刻印象,2019年当时的一篇论文“An Enhanced Stimulus and Checking Mechanism on Cache Verification”(接下来该论文简称PP-MESH)采用的是MESH预测的方法,对cache的数据做好准确预测和检查。

2022年的时候我们V3课程中的联发科学员,还跟着我们一同回顾了这篇论文中涉及到的一些技术,给当时正在做cache一致性验证的其他同学提供了思路。我们以往做的各个方向的技术分享和论文回顾,都有保存在V3课程视频中。

这次我们要谈的论文DVCon 2022 “CAMEL: A Flexible Cache Model for Cache Verification”(接下来该论文简称PP-CAMEL),其背景正是基于PP-MESH做的更新,我们也可以借此以了解对于一个复杂设计而言,如何考虑规划其参考模型,在实际项目中有哪些需要权衡的地方。

总体而言,在验证L1 cache system (L1SYS)的过程中,L1SYS的机构被拆分为多个模块,包括shadow command buffer, store buffer, sram, line filling buffer, evinctionbuffer, prefetch buffer,而根据不同thread访问数据时的cache hit/miss的情况和数据经过L1SYS各个模块的流向,又将L1SYS的不同数据读写行为定义为了各种情况(例如in-order, out-of-order, with-losses, any-in-order, either-in-order, MISO, with-redundancy等)。这种数据从点到点的流向,就构成了DVCon 2019的这篇论文中数据检查思想的框架,即根据每一个data stream的不同特征,分别对input stream, output stream做数据流向的标注。

8ef440a2-e515-11ed-ab56-dac502259ad0.png8efb3e5c-e515-11ed-ab56-dac502259ad0.png

由于这种精细规划和预测的方式,MESH检查可以做到周期级的准确(cycle-accurate),从下面这个图也可以看到,L1SYS模型中的每一部分(STB/EB/LFB/PB/SRAM等)都需要监测L1SYS设计外部和内部数据,从PP-CAMEL的回顾来看,MESH方案需要连接5个VIP monitor,而且从VIP monitor监测到的数据需要根据需要组合为stream,再按照MESH表格对这些stream进行独立的处理和检查。

PP-CAMEL对以前的这部分工作评价是,尽管可以做到cycle-accurate的细致检查,但带来的一个烦恼是由于MESH方案需要与设计行为深度耦合,而且对验证人员提出较高的维护要求,如果设计发生变化,那么MESH方案作为一个整体都将需要花费较大人力去更新MESH验证环境。

8f00c264-e515-11ed-ab56-dac502259ad0.png8f0ec382-e515-11ed-ab56-dac502259ad0.png

上面来自PP-CAMEL的评价便于理解,这就像如果我们把设计的模型做成一个big synthesized model,那么设计的每一处更新都会使得让我们去维护这个大模型,而大模型越来越大、复杂、乃至趋于臃肿的情况下,设计可能打补丁式的修改,也可能会让参考模型去做类似的补丁式修改。

理想情况下,如果维护这个模型的人是同一个人(大公司里这种情况较多)那么还好一些,但是如果一旦人员发生变动,模型当时设定的好坏、代码结构是否合理、模型是否方便维护这些问题就随之而来了。 从PP-CAMEL最后的代码对比来看,也能证实这个问题,CAMEL模型的代码量大概只有MESH模型的1/3。

但这并不是简单说明,CAMEL既轻量化,又能完成MESH模型可以做的cycle-accurate的细致检查。熊掌与鱼难以兼得,CAMEL模型是在将功能检查做了分层、分类以后,才将MESH模型原来可以一股脑完成的事情解耦合成CAMEL模型和其它模型,并且CAMEL模型能做的事情,也是分为了多种任务的。

一句话,那就是CAMEL模型做了检查任务的规划,没有一来就试图去构建一个大而全的模型,而是一开始就打算将验证分成了多个步骤,逐一将从基础功能到高级功能再到边界情况的检查分为了多个任务去实现的。

8f179944-e515-11ed-ab56-dac502259ad0.png

那么,PP-CAMEL为什么不采用PP-MESH中的大模型呢?难道是不需要做准确预测了吗?其实从论文一开始的背景阐述来看,即他们开始在做多核多线程的架构(RISC-V)。这意味他们尽管可以参考原来PP-MESH中的L1SYS设计,但同时要适配多核ACE协议和snoop memory 请求(对于L1SYS而言属于新的外部请求/响应)。

我能猜想到的是,当时也应该是考虑过MESH方案复用的,但这意味着需要理解原有的方案,而且要修改MESH中的代码。如果是同一位工程师修改维护他原来的方案,那么思路大概还能跟得上拍子,但如果是不同的工程师打算要做这件事情,那么他还会考虑另外一种可能,就是在原有MESH思路的基础上,做一些检查的优化。

值得注意的是,PP-CAMEL论文中提到了PP-MESH原本在数据激励方面的layer层次规划清晰、各个方法接口也很丰富,这些有关激励部分思想和接口仍然可以复用下来。

8f1fa1ca-e515-11ed-ab56-dac502259ad0.png8f2ceea2-e515-11ed-ab56-dac502259ad0.png

所以可能更符合当时实际情况的是,已经经历过PP-MESH“高精度”模型带来验证环境与设计高度绑定以后的晃动带来的痛苦之后,PP-CAMEL决定采取一个“循序渐进”的方案,即它的初衷是构建一个更为快速能够对新的L1SYS设计进行检查的验证环境(如果能够复用以前的一些激励、测试序列那就更好)。

所以它一开始并没有求全,而是把检查的重心放在数据完整性上面,即data correctness check。这一点跟我们常规的数据流检查类似,比如DMA数据搬迁或者数据打包解包操作等功能检查,都是先完成数据完整性检查,再去就设计的行为、时序做更为细致的检查。

8f37bd28-e515-11ed-ab56-dac502259ad0.png8f3edbe4-e515-11ed-ab56-dac502259ad0.png

它的模型中的数据存放是较为模糊的,因为它不会准确预测数据,而是会存放所有可能从目标地址读出去的数据(stores all possible values of the same address),这种方式仍然可以在设计早期阶段帮助验证做数据(模糊)检查。它的优点在于更快部署、不依赖于具体的设计、时序,与设计可以解耦。

如果检查方案里有配置按钮(configuration knob),那么这种检查方式可以给起个名字(rough level check)。 接下来PP-CAMEL也提到了,如果要进一步做到准确的数据预测检查,那么就需要获得额外的信息,比如对cache hit/miss check和rationality read/write command to external memory(对外部存储读写请求的合理性检查,关系到cache hit/miss的预测和模型准确度)。

那么就需要添加诸如location/SCB data/SRAM data这样的属性。而这些属性又当来自于各个VIP monitor。当从monitor获得的信息越多,那么CAMEL模型也将越复杂,而用于做data correctness check, hit/miss check, rationality check of request to external memory等也将越准确。

8f4a7d0a-e515-11ed-ab56-dac502259ad0.png

这个道理我们似乎都懂,但是PP-CAMEL恰恰给出了与原有PP-MESH不同的验证环境实现步骤,下面这段话我认为是整篇论文中要着重表达的验证工程思想。我们能够理解,一个simple testbench不可能做到precise check,但我们能不能理解如果要设计一个complex testbench,是否有能力让它做到simple check,或者做到different precision of check?对于MESH模型,PP-CAMEL给出的回顾似乎在说维护这样一个大模型很耗神,尤其在PP-CAMEL背景中遇到一个新的L1SYS设计的时候,需要修改的内容恐怕很多,尤其是面对8000+行的MESH模型。

8f518dca-e515-11ed-ab56-dac502259ad0.png

将模型先从简单做起,有的时候也是一种妥协。这种妥协可能是来自于项目的压力,可能是来自于对复杂设计逻辑和时序,也可能是为了将来以后便于维护。PP-CAMEL的模型核心是围绕着地址和数据的,它本身不复杂,而在此基础之上添加了一些必要的属性,即能够创造出条件做不同精确度的检查。最终,检查精度还会落回到模型复杂性上。

只不过,从trade-off来看,PP-CAMEL提出的思路,使得在验证L1SYS过程中,得以找到一条从简单到复杂的路,使得可以对L1SYS的各个功能逐一做从基础到复杂的检查。另外,在PP-CAMEL中可以看到,与PP-MESH的验证思路联系紧密,尽管模型的实现方式发生了较大变化,但激励层次的组织和复用、以及原有的各个API的复用仍然带来了帮助。

这种有历史衔接的论文前后研究起来也很有收获,而这两篇论文也可以启发我们在实现参考模型时,究竟是按照大模型来实现,还是按照分层(由易到难)模型来实现,需要考虑诸多工程因素。






审核编辑:刘清

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

    关注

    6

    文章

    742

    浏览量

    113907
  • Cache
    +关注

    关注

    0

    文章

    127

    浏览量

    27991
  • mesh技术
    +关注

    关注

    0

    文章

    13

    浏览量

    8708
  • miso
    +关注

    关注

    0

    文章

    6

    浏览量

    5377

原文标题:DVCon文赏-2023w18 从Cache验证参考模型对比来谈复杂度权衡

文章出处:【微信号:Rocker-IC,微信公众号:路科验证】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于纹理复杂度的快速帧内预测算法

    为降低帧内预测的运算复杂度,根据不同的模式在宏块中出现概率的大小不同,在帧内4×4的亮度预测模式中,选取出现概率最大的5种预测模式,作为优先选择的预测模式。基于像素块的纹理特性,选择不具有
    发表于 05-06 09:01

    一种新的定量评估电磁环境复杂度方法

    摘 要 针对跳频信号分选提出了采用“复合信息熵”定量评估电磁环境复杂度的方法。“复合信息熵”分三个部分:类型熵、密度熵、分布熵,综合考虑了电磁环境中包含的信号类型数、跳频跳速、跳频电台数目和信道
    发表于 07-11 22:35

    嵌入式视频教程之软硬件关系的复杂度

      现如今,随着移动互联网科技的飞速发展,目前嵌入式开发的复杂度越来越大,对于设计工程师在定义和分析系统初始要求时必须认真考虑软硬件的协同关系,所有传统设计考虑的复杂度也被推上了一个更高的层次。本文
    发表于 06-27 09:30

    嵌入式视频教程之软硬件关系的复杂度

      现如今,随着移动互联网科技的飞速发展,目前嵌入式开发的复杂度越来越大,对于设计工程师在定义和分析系统初始要求时必须认真考虑软硬件的协同关系,所有传统设计考虑的复杂度也被推上了一个更高的层次。本文
    发表于 06-29 16:03

    嵌入式视频教程之软硬件关系的复杂度

      现如今,随着移动互联网科技的飞速发展,目前嵌入式开发的复杂度越来越大,对于设计工程师在定义和分析系统初始要求时必须认真考虑软硬件的协同关系,所有传统设计考虑的复杂度也被推上了一个更高的层次。本文
    发表于 07-05 09:59

    复杂度一般的4层板工程文件!

    小弟从未画过4层及以上的板,不知哪位大神能传份复杂度一般的工程给小弟参考参考。感激不尽!我的邮箱87906234@qq.com。在此谢过
    发表于 07-09 00:36

    JEM软件复杂度的增加情况

    这篇文档展示了几个机构关于JEM软件复杂度的增加情况的看法,特别提出来创立一个新的Ad-hoc组,研究降低软件一般性复杂度的可能方法。
    发表于 07-19 08:25

    如何降低LMS算法的计算复杂度,加快程序在DSP上运行的速度,实现DSP?

    基于线性预测的FIR自适应语音滤波器的系统结构由那几部分组成?如何降低LMS算法的计算复杂度,加快程序在DSP上运行的速度,实现DSP?
    发表于 04-12 06:27

    时间复杂度是指什么

    原理->微机原理->软件工程,编译原理,数据库数据结构1.时间复杂度时间复杂度是指执行算法所需要的计算工作量,因为整个算法的执行时间与基本操作重复执行的...
    发表于 07-22 10:01

    各种排序算法的时间空间复杂度、稳定性

    各种排序算法的时间空间复杂度、稳定性一、排序算法分类:二、排序算法比较:注:1、归并排序可以通过手摇算法将空间复杂度降到O(1),但是时间复杂度会提高。2、 基数排序时间复杂度为O(N
    发表于 12-21 07:48

    kicad的cpu架构移植复杂度评估

    工作的复杂度和工作量,即使他已经经过移植。作为我的数据集的一部分,我收集了kicad项目。我希望收集社会人士的意见,以支持我的评估。我很感谢你的帮助和回应!基于扫描工具,移植的复杂性被确定为困难,项目
    发表于 09-11 17:06

    CMP中Cache一致性协议的验证

    CMP是处理器体系结构发展的一个重要方向,其中Cache一致性问题的验证是CMP设计中的一项重要课题。基于MESI一致性协议,本文建立了CMP的Cache一致性协议的验证
    发表于 07-20 14:18 38次下载

    一种基于贝叶斯网络的随机测试方法在Cache一致性验证中的设计与实现

    随着集成电路设计复杂度指数级增长,功能验证已经越来越成为大规模芯片设计的瓶颈,而在多核处理器中,Cache -致性协议十分复杂验证难度大。
    发表于 11-17 17:24 2次下载
    一种基于贝叶斯网络的随机测试方法在<b class='flag-5'>Cache</b>一致性<b class='flag-5'>验证</b>中的设计与实现

    深度剖析时间复杂度

    相信每一位录友都接触过时间复杂度,但又对时间复杂度的认识处于一种朦胧的状态,所以是时候对时间复杂度来一个深度的剖析了。
    的头像 发表于 03-18 10:18 1599次阅读

    Cache与性能优化精彩问答38条

    占用非常大的面积,大概在一半以上,而且一个好的 Cache 的设计复杂度非常高,可能比较 CPU 的 Pipeline 还要复杂。这里要考虑成本,设计复杂度,或者其他方面的考虑。你知道
    的头像 发表于 01-11 09:34 914次阅读