1 从Cache验证参考模型对比来谈复杂度权衡-德赢Vwin官网 网
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的复用仍然带来了帮助。

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






审核编辑:刘清

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

    关注

    6

    文章

    767

    浏览量

    114671
  • Cache
    +关注

    关注

    0

    文章

    129

    浏览量

    28329
  • mesh技术
    +关注

    关注

    0

    文章

    14

    浏览量

    8757
  • miso
    +关注

    关注

    0

    文章

    7

    浏览量

    5421

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

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

收藏 人收藏

    评论

    相关推荐

    业务复杂度治理方法论--十年系统设计经验总结

    一、复杂度综述 1、什么是复杂度 软件设计的核心在于降低复杂性。 --《软件设计的哲学》 业界对于复杂度并没有统一的定义, 斯坦福教授John Ousterhout
    的头像 发表于 09-05 14:11 981次阅读
    业务<b class='flag-5'>复杂度</b>治理方法论--十年系统设计经验总结

    PCB与PCBA工艺复杂度的量化评估与应用初探!

    的问题。另一个方面,在工程能 力方面,做了一些针对性的工作,来 达到高质量和低成本的这样一个目标。 高复杂PCB的特点 我们的具体情况看,高复杂度 PCB有以下特点:大尺寸、高层数( 18层以上)、1+10+1
    发表于 06-14 11:15

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

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

    JEM软件复杂度的增加情况

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

    时间复杂度是指什么

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

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

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

    图像复杂度对信息隐藏性能影响分析

    针对信息隐藏中载体图像的差异性,提出一种图像复杂度评价方法,综合考虑图像的压缩特性以及图像纹理能量作为图像复杂度指标,并基于阈值划分准则对栽体图像进行复杂度分类,以几种经典的基于直方图的几种无损隐藏
    发表于 11-14 09:57 5次下载

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

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

    深度剖析时间复杂度

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

    如何求递归算法的时间复杂度

    相信很多同学对递归算法的时间复杂度都很模糊,那么这篇Carl来给大家通透的讲一讲。
    的头像 发表于 07-13 11:33 1601次阅读

    算法之空间复杂度

    算法之空间复杂度:衡量一个算法运行需要开辟的额外空间
    的头像 发表于 08-31 10:29 1600次阅读

    常见机器学习算法的计算复杂度

    时间复杂度不是测量一个算法或一段代码在某个机器或者条件下运行所花费的时间。时间复杂度一般指时间复杂性,时间复杂度是一个函数,它定性描述该算法的运行时间,允许我们在不运行它们的情况下比较
    发表于 10-02 12:45 812次阅读

    算法时空复杂度分析实用指南1

    我以前的文章主要都是讲解算法的原理和解题的思维,对时间复杂度和空间复杂度的分析经常一笔带过,主要是基于以下两个原因:
    的头像 发表于 04-12 14:37 509次阅读
    算法时空<b class='flag-5'>复杂度</b>分析实用指南1

    算法时空复杂度分析实用指南2

    类似的,想想之前说的数据结构扩容的场景,也许`N`次操作中的某一次操作恰好触发了扩容,导致时间复杂度提高,但总的时间复杂度依然保持在`O(N)`,所以均摊到每一次操作上,其平均时间复杂度依然是`O(1)`。
    的头像 发表于 04-12 14:38 527次阅读
    算法时空<b class='flag-5'>复杂度</b>分析实用指南2

    如何计算时间复杂度

    1 算法与时间复杂度 算法(Algorithm)是求解一个问题需要遵循的,被清楚指定的简单指令的集合。 算法一旦确定,那么下一步就要确定该算法将需要多少时间和空间等资源,如果一个算法需要一两年的时间
    的头像 发表于 10-13 11:19 2960次阅读
    如何计算时间<b class='flag-5'>复杂度</b>