0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

從Cache驗證參考模型對比來談復(fù)雜度權(quán)衡

路科驗證 ? 來源:路科驗證 ? 2023-04-28 09:25 ? 次閱讀

一直以來對MTK北京團隊做的關(guān)于Cache一致性驗證的方案有深刻印象,2019年當(dāng)時的一篇論文“An Enhanced Stimulus and Checking Mechanism on Cache Verification”(接下來該論文簡稱PP-MESH)采用的是MESH預(yù)測的方法,對cache的數(shù)據(jù)做好準(zhǔn)確預(yù)測和檢查。

2022年的時候我們V3課程中的聯(lián)發(fā)科學(xué)員,還跟著我們一同回顧了這篇論文中涉及到的一些技術(shù),給當(dāng)時正在做cache一致性驗證的其他同學(xué)提供了思路。我們以往做的各個方向的技術(shù)分享和論文回顧,都有保存在V3課程視頻中。

這次我們要談的論文DVCon 2022 “CAMEL: A Flexible Cache Model for Cache Verification”(接下來該論文簡稱PP-CAMEL),其背景正是基于PP-MESH做的更新,我們也可以借此以了解對于一個復(fù)雜設(shè)計而言,如何考慮規(guī)劃其參考模型,在實際項目中有哪些需要權(quán)衡的地方。

總體而言,在驗證L1 cache system (L1SYS)的過程中,L1SYS的機構(gòu)被拆分為多個模塊,包括shadow command buffer, store buffer, sram, line filling buffer, evinctionbuffer, prefetch buffer,而根據(jù)不同thread訪問數(shù)據(jù)時的cache hit/miss的情況和數(shù)據(jù)經(jīng)過L1SYS各個模塊的流向,又將L1SYS的不同數(shù)據(jù)讀寫行為定義為了各種情況(例如in-order, out-of-order, with-losses, any-in-order, either-in-order, MISO, with-redundancy等)。這種數(shù)據(jù)從點到點的流向,就構(gòu)成了DVCon 2019的這篇論文中數(shù)據(jù)檢查思想的框架,即根據(jù)每一個data stream的不同特征,分別對input stream, output stream做數(shù)據(jù)流向的標(biāo)注。

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

由于這種精細規(guī)劃和預(yù)測的方式,MESH檢查可以做到周期級的準(zhǔn)確(cycle-accurate),從下面這個圖也可以看到,L1SYS模型中的每一部分(STB/EB/LFB/PB/SRAM等)都需要監(jiān)測L1SYS設(shè)計外部和內(nèi)部數(shù)據(jù),從PP-CAMEL的回顧來看,MESH方案需要連接5個VIP monitor,而且從VIP monitor監(jiān)測到的數(shù)據(jù)需要根據(jù)需要組合為stream,再按照MESH表格對這些stream進行獨立的處理和檢查。

PP-CAMEL對以前的這部分工作評價是,盡管可以做到cycle-accurate的細致檢查,但帶來的一個煩惱是由于MESH方案需要與設(shè)計行為深度耦合,而且對驗證人員提出較高的維護要求,如果設(shè)計發(fā)生變化,那么MESH方案作為一個整體都將需要花費較大人力去更新MESH驗證環(huán)境。

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

上面來自PP-CAMEL的評價便于理解,這就像如果我們把設(shè)計的模型做成一個big synthesized model,那么設(shè)計的每一處更新都會使得讓我們?nèi)ゾS護這個大模型,而大模型越來越大、復(fù)雜、乃至趨于臃腫的情況下,設(shè)計可能打補丁式的修改,也可能會讓參考模型去做類似的補丁式修改。

理想情況下,如果維護這個模型的人是同一個人(大公司里這種情況較多)那么還好一些,但是如果一旦人員發(fā)生變動,模型當(dāng)時設(shè)定的好壞、代碼結(jié)構(gòu)是否合理、模型是否方便維護這些問題就隨之而來了。 從PP-CAMEL最后的代碼對比來看,也能證實這個問題,CAMEL模型的代碼量大概只有MESH模型的1/3。

但這并不是簡單說明,CAMEL既輕量化,又能完成MESH模型可以做的cycle-accurate的細致檢查。熊掌與魚難以兼得,CAMEL模型是在將功能檢查做了分層、分類以后,才將MESH模型原來可以一股腦完成的事情解耦合成CAMEL模型和其它模型,并且CAMEL模型能做的事情,也是分為了多種任務(wù)的。

一句話,那就是CAMEL模型做了檢查任務(wù)的規(guī)劃,沒有一來就試圖去構(gòu)建一個大而全的模型,而是一開始就打算將驗證分成了多個步驟,逐一將從基礎(chǔ)功能到高級功能再到邊界情況的檢查分為了多個任務(wù)去實現(xiàn)的。

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

那么,PP-CAMEL為什么不采用PP-MESH中的大模型呢?難道是不需要做準(zhǔn)確預(yù)測了嗎?其實從論文一開始的背景闡述來看,即他們開始在做多核多線程的架構(gòu)(RISC-V)。這意味他們盡管可以參考原來PP-MESH中的L1SYS設(shè)計,但同時要適配多核ACE協(xié)議和snoop memory 請求(對于L1SYS而言屬于新的外部請求/響應(yīng))。

我能猜想到的是,當(dāng)時也應(yīng)該是考慮過MESH方案復(fù)用的,但這意味著需要理解原有的方案,而且要修改MESH中的代碼。如果是同一位工程師修改維護他原來的方案,那么思路大概還能跟得上拍子,但如果是不同的工程師打算要做這件事情,那么他還會考慮另外一種可能,就是在原有MESH思路的基礎(chǔ)上,做一些檢查的優(yōu)化。

值得注意的是,PP-CAMEL論文中提到了PP-MESH原本在數(shù)據(jù)激勵方面的layer層次規(guī)劃清晰、各個方法接口也很豐富,這些有關(guān)激勵部分思想和接口仍然可以復(fù)用下來。

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

所以可能更符合當(dāng)時實際情況的是,已經(jīng)經(jīng)歷過PP-MESH“高精度”模型帶來驗證環(huán)境與設(shè)計高度綁定以后的晃動帶來的痛苦之后,PP-CAMEL決定采取一個“循序漸進”的方案,即它的初衷是構(gòu)建一個更為快速能夠?qū)π碌腖1SYS設(shè)計進行檢查的驗證環(huán)境(如果能夠復(fù)用以前的一些激勵、測試序列那就更好)。

所以它一開始并沒有求全,而是把檢查的重心放在數(shù)據(jù)完整性上面,即data correctness check。這一點跟我們常規(guī)的數(shù)據(jù)流檢查類似,比如DMA數(shù)據(jù)搬遷或者數(shù)據(jù)打包解包操作等功能檢查,都是先完成數(shù)據(jù)完整性檢查,再去就設(shè)計的行為、時序做更為細致的檢查。

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

它的模型中的數(shù)據(jù)存放是較為模糊的,因為它不會準(zhǔn)確預(yù)測數(shù)據(jù),而是會存放所有可能從目標(biāo)地址讀出去的數(shù)據(jù)(stores all possible values of the same address),這種方式仍然可以在設(shè)計早期階段幫助驗證做數(shù)據(jù)(模糊)檢查。它的優(yōu)點在于更快部署、不依賴于具體的設(shè)計、時序,與設(shè)計可以解耦。

如果檢查方案里有配置按鈕(configuration knob),那么這種檢查方式可以給起個名字(rough level check)。 接下來PP-CAMEL也提到了,如果要進一步做到準(zhǔn)確的數(shù)據(jù)預(yù)測檢查,那么就需要獲得額外的信息,比如對cache hit/miss check和rationality read/write command to external memory(對外部存儲讀寫請求的合理性檢查,關(guān)系到cache hit/miss的預(yù)測和模型準(zhǔn)確度)。

那么就需要添加諸如location/SCB data/SRAM data這樣的屬性。而這些屬性又當(dāng)來自于各個VIP monitor。當(dāng)從monitor獲得的信息越多,那么CAMEL模型也將越復(fù)雜,而用于做data correctness check, hit/miss check, rationality check of request to external memory等也將越準(zhǔn)確。

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

這個道理我們似乎都懂,但是PP-CAMEL恰恰給出了與原有PP-MESH不同的驗證環(huán)境實現(xiàn)步驟,下面這段話我認為是整篇論文中要著重表達的驗證工程思想。我們能夠理解,一個simple testbench不可能做到precise check,但我們能不能理解如果要設(shè)計一個complex testbench,是否有能力讓它做到simple check,或者做到different precision of check?對于MESH模型,PP-CAMEL給出的回顧似乎在說維護這樣一個大模型很耗神,尤其在PP-CAMEL背景中遇到一個新的L1SYS設(shè)計的時候,需要修改的內(nèi)容恐怕很多,尤其是面對8000+行的MESH模型。

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

將模型先從簡單做起,有的時候也是一種妥協(xié)。這種妥協(xié)可能是來自于項目的壓力,可能是來自于對復(fù)雜設(shè)計邏輯和時序,也可能是為了將來以后便于維護。PP-CAMEL的模型核心是圍繞著地址和數(shù)據(jù)的,它本身不復(fù)雜,而在此基礎(chǔ)之上添加了一些必要的屬性,即能夠創(chuàng)造出條件做不同精確度的檢查。最終,檢查精度還會落回到模型復(fù)雜性上。

只不過,從trade-off來看,PP-CAMEL提出的思路,使得在驗證L1SYS過程中,得以找到一條從簡單到復(fù)雜的路,使得可以對L1SYS的各個功能逐一做從基礎(chǔ)到復(fù)雜的檢查。另外,在PP-CAMEL中可以看到,與PP-MESH的驗證思路聯(lián)系緊密,盡管模型的實現(xiàn)方式發(fā)生了較大變化,但激勵層次的組織和復(fù)用、以及原有的各個API的復(fù)用仍然帶來了幫助。

這種有歷史銜接的論文前后研究起來也很有收獲,而這兩篇論文也可以啟發(fā)我們在實現(xiàn)參考模型時,究竟是按照大模型來實現(xiàn),還是按照分層(由易到難)模型來實現(xiàn),需要考慮諸多工程因素。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • sram
    +關(guān)注

    關(guān)注

    6

    文章

    768

    瀏覽量

    114698
  • Cache
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

    28351
  • mesh技術(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    8758
  • miso
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    5431

原文標(biāo)題:DVCon文賞-2023w18 從Cache驗證參考模型對比來談復(fù)雜度權(quán)衡

文章出處:【微信號:Rocker-IC,微信公眾號:路科驗證】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    業(yè)務(wù)復(fù)雜度治理方法論--十年系統(tǒng)設(shè)計經(jīng)驗總結(jié)

    一、復(fù)雜度綜述 1、什么是復(fù)雜度 軟件設(shè)計的核心在于降低復(fù)雜性。 --《軟件設(shè)計的哲學(xué)》 業(yè)界對于復(fù)雜度并沒有統(tǒng)一的定義, 斯坦福教授John Ousterhout
    的頭像 發(fā)表于 09-05 14:11 ?1001次閱讀
    業(yè)務(wù)<b class='flag-5'>復(fù)雜度</b>治理方法論--十年系統(tǒng)設(shè)計經(jīng)驗總結(jié)

    PCB與PCBA工藝復(fù)雜度的量化評估與應(yīng)用初探!

    的問題。另一個方面,在工程能 力方面,做了一些針對性的工作,來 達到高質(zhì)量和低成本的這樣一個目標(biāo)。 高復(fù)雜PCB的特點 我們的具體情況看,高復(fù)雜度 PCB有以下特點:大尺寸、高層數(shù)( 18層以上)、1+10+1
    發(fā)表于 06-14 11:15

    基于紋理復(fù)雜度的快速幀內(nèi)預(yù)測算法

    為降低幀內(nèi)預(yù)測的運算復(fù)雜度,根據(jù)不同的模式在宏塊中出現(xiàn)概率的大小不同,在幀內(nèi)4×4的亮度預(yù)測模式中,選取出現(xiàn)概率最大的5種預(yù)測模式,作為優(yōu)先選擇的預(yù)測模式?;谙袼貕K的紋理特性,選擇不具有
    發(fā)表于 05-06 09:01

    JEM軟件復(fù)雜度的增加情況

    這篇文檔展示了幾個機構(gòu)關(guān)于JEM軟件復(fù)雜度的增加情況的看法,特別提出來創(chuàng)立一個新的Ad-hoc組,研究降低軟件一般性復(fù)雜度的可能方法。
    發(fā)表于 07-19 08:25

    時間復(fù)雜度是指什么

    原理->微機原理->軟件工程,編譯原理,數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)1.時間復(fù)雜度時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量,因為整個算法的執(zhí)行時間與基本操作重復(fù)執(zhí)行的...
    發(fā)表于 07-22 10:01

    各種排序算法的時間空間復(fù)雜度、穩(wěn)定性

    各種排序算法的時間空間復(fù)雜度、穩(wěn)定性一、排序算法分類:二、排序算法比較:注:1、歸并排序可以通過手搖算法將空間復(fù)雜度降到O(1),但是時間復(fù)雜度會提高。2、 基數(shù)排序時間復(fù)雜度為O(N
    發(fā)表于 12-21 07:48

    基于RNS的低復(fù)雜度DDS的設(shè)計與實現(xiàn)_張鳳君

    基于RNS的低復(fù)雜度DDS的設(shè)計與實現(xiàn)_張鳳君
    發(fā)表于 01-08 10:11 ?0次下載

    圖像復(fù)雜度對信息隱藏性能影響分析

    針對信息隱藏中載體圖像的差異性,提出一種圖像復(fù)雜度評價方法,綜合考慮圖像的壓縮特性以及圖像紋理能量作為圖像復(fù)雜度指標(biāo),并基于閾值劃分準(zhǔn)則對栽體圖像進行復(fù)雜度分類,以幾種經(jīng)典的基于直方圖的幾種無損隱藏
    發(fā)表于 11-14 09:57 ?5次下載

    一種基于貝葉斯網(wǎng)絡(luò)的隨機測試方法在Cache一致性驗證中的設(shè)計與實現(xiàn)

    隨著集成電路設(shè)計復(fù)雜度指數(shù)級增長,功能驗證已經(jīng)越來越成為大規(guī)模芯片設(shè)計的瓶頸,而在多核處理器中,Cache -致性協(xié)議十分復(fù)雜,驗證難度大。
    發(fā)表于 11-17 17:24 ?2次下載
    一種基于貝葉斯網(wǎng)絡(luò)的隨機測試方法在<b class='flag-5'>Cache</b>一致性<b class='flag-5'>驗證</b>中的設(shè)計與實現(xiàn)

    深度剖析時間復(fù)雜度

    相信每一位錄友都接觸過時間復(fù)雜度,但又對時間復(fù)雜度的認識處于一種朦朧的狀態(tài),所以是時候?qū)r間復(fù)雜度來一個深度的剖析了。
    的頭像 發(fā)表于 03-18 10:18 ?1895次閱讀

    如何求遞歸算法的時間復(fù)雜度

    相信很多同學(xué)對遞歸算法的時間復(fù)雜度都很模糊,那么這篇Carl來給大家通透的講一講。
    的頭像 發(fā)表于 07-13 11:33 ?1618次閱讀

    算法之空間復(fù)雜度

    算法之空間復(fù)雜度:衡量一個算法運行需要開辟的額外空間
    的頭像 發(fā)表于 08-31 10:29 ?1614次閱讀

    常見機器學(xué)習(xí)算法的計算復(fù)雜度

    時間復(fù)雜度不是測量一個算法或一段代碼在某個機器或者條件下運行所花費的時間。時間復(fù)雜度一般指時間復(fù)雜性,時間復(fù)雜度是一個函數(shù),它定性描述該算法的運行時間,允許我們在不運行它們的情況下比較
    發(fā)表于 10-02 12:45 ?816次閱讀

    算法時空復(fù)雜度分析實用指南2

    類似的,想想之前說的數(shù)據(jù)結(jié)構(gòu)擴容的場景,也許`N`次操作中的某一次操作恰好觸發(fā)了擴容,導(dǎo)致時間復(fù)雜度提高,但總的時間復(fù)雜度依然保持在`O(N)`,所以均攤到每一次操作上,其平均時間復(fù)雜度依然是`O(1)`。
    的頭像 發(fā)表于 04-12 14:38 ?540次閱讀
    算法時空<b class='flag-5'>復(fù)雜度</b>分析實用指南2

    如何計算時間復(fù)雜度

    1 算法與時間復(fù)雜度 算法(Algorithm)是求解一個問題需要遵循的,被清楚指定的簡單指令的集合。 算法一旦確定,那么下一步就要確定該算法將需要多少時間和空間等資源,如果一個算法需要一兩年的時間
    的頭像 發(fā)表于 10-13 11:19 ?3000次閱讀
    如何計算時間<b class='flag-5'>復(fù)雜度</b>