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

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

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

是什么定義了處理器漏洞的復(fù)雜性以及如何檢測(cè)它?

Codasip 科達(dá)希普 ? 來源:Codasip 科達(dá)希普 ? 作者:Codasip 科達(dá)希普 ? 2022-11-01 15:50 ? 次閱讀

作為一個(gè)驗(yàn)證工程師我經(jīng)常被問到這樣的問題:"處理器的驗(yàn)證什么時(shí)候完成?"或者換句話說,"我該如何衡量測(cè)試平臺(tái)的效率,我如何對(duì)驗(yàn)證的質(zhì)量建立信心?"。當(dāng)然這一問題沒有簡(jiǎn)單的答案。業(yè)界有幾個(gè)常用的指標(biāo)可以參考,如覆蓋率和錯(cuò)誤曲線。雖然這些指標(biāo)是絕對(duì)必要的,但它們并不足以達(dá)到盡可能高的處理器品質(zhì)。事實(shí)上,這些指標(biāo)并不能真正揭示驗(yàn)證方法找到最后一個(gè)bug的能力。隨著經(jīng)驗(yàn)的積累,我了解到檢測(cè)處理器漏洞的復(fù)雜性是一個(gè)很好的指標(biāo),并可以在項(xiàng)目的整個(gè)開發(fā)過程中使用。

是什么定義了處理器漏洞的復(fù)雜性以及如何檢測(cè)它?

經(jīng)驗(yàn)告訴我,我們可以通過計(jì)算擊中漏洞所需的獨(dú)立事件或條件的數(shù)量來定義一個(gè)漏洞的復(fù)雜性。

那么“事件”又如何定義呢?

讓我們舉一個(gè)簡(jiǎn)單的例子。當(dāng)缺少所需的警告時(shí),一個(gè)典型的bug會(huì)在緩存中發(fā)現(xiàn)一個(gè)典型的漏洞。此時(shí)數(shù)據(jù)損壞可能發(fā)生在以下情況:

A cache line at address @A is Valid and Dirty in the cache.

A load at address @B causes an eviction of line @A.

Another load at address @A starts.

The external write bus is slower than the read, so the load @A completes before the end of the eviction.

External memory returns the previous data because the most recent data from the eviction got lost, causing data corruption.

在這個(gè)例子中,我們需要4個(gè)事件或條件來擊中這個(gè)漏洞。這4個(gè)事件給這個(gè)bug打了4分,也就是說漏洞的復(fù)雜性為4。

對(duì)處理器漏洞進(jìn)行分類?

為了衡量一個(gè)漏洞的復(fù)雜性,我們可以對(duì)漏洞進(jìn)行分類,供整個(gè)處理器驗(yàn)證團(tuán)隊(duì)來使用。在之前的一篇博文中,我們討論了4種類型的bug,并解釋了我們?nèi)绾问褂眠@些分類來提高測(cè)試平臺(tái)和驗(yàn)證的質(zhì)量。此時(shí)我們可以再進(jìn)一步,即將這種方法與漏洞的復(fù)雜性結(jié)合起來處理問題。

一個(gè)簡(jiǎn)單的漏洞可能需要觸發(fā)1到3個(gè)事件。那么第一個(gè)簡(jiǎn)單的測(cè)試就會(huì)失敗,而一個(gè)極端案例可能會(huì)需要4個(gè)或更多的事件。

回到我們上面的例子,我們有一個(gè)復(fù)雜性為4的bug,如果四個(gè)條件中的任何一個(gè)不存在,那么這個(gè)bug就不會(huì)被擊中。

一個(gè)受限的隨機(jī)測(cè)試平臺(tái)需要幾個(gè)功能,以便能夠擊中上文例子中的漏洞。地址序列應(yīng)該足夠聰明,可以重用之前請(qǐng)求的地址,外部總線上的延遲也應(yīng)該足夠非典型,以便有足夠快/慢的讀寫。

而一個(gè)隱藏比較深的案例可能需要更多的事件來觸發(fā)。假定一個(gè)更微妙的bug與我們的例子有相同的條件,但是它只發(fā)生在緩存上發(fā)現(xiàn)ECC錯(cuò)誤的時(shí)候,與中斷發(fā)生的時(shí)間完全一致,并且只發(fā)生在內(nèi)核完成FPU操作導(dǎo)致除以0錯(cuò)誤出現(xiàn)的時(shí)候。在典型的隨機(jī)測(cè)試平臺(tái)上,所有這些條件同時(shí)出現(xiàn)的概率是非常低的,這使得它成為一個(gè) "隱藏 "的終極漏洞。

為了使得這些隱藏的bug在測(cè)試平臺(tái)上更容易被發(fā)現(xiàn),提高驗(yàn)證的質(zhì)量是重點(diǎn)。它包括使隱藏的個(gè)例成為極端的個(gè)例此種情況。

b0e504ee-5942-11ed-a3b6-dac502259ad0.jpg

如圖所示,4只紅色昆蟲分別代表4種類型的CPU漏洞

這種分類沒有任何限制。經(jīng)驗(yàn)告訴我們,一個(gè)能夠找到8分或9分漏洞的測(cè)試平臺(tái)本身就是一個(gè)強(qiáng)大的模擬測(cè)試平臺(tái),是提供高質(zhì)量RTL的關(guān)鍵。根據(jù)我們的觀察,今天最先進(jìn)的仿真測(cè)試平臺(tái)可以找到復(fù)雜度高達(dá)10的漏洞。幸運(yùn)的是,形式化驗(yàn)證的使用使我們更容易找到復(fù)雜度更高的bug,為更好的設(shè)計(jì)鋪平道路,并為仿真中需要改進(jìn)的地方提供線索。

使用漏洞的復(fù)雜性分類來提高驗(yàn)證測(cè)試平臺(tái)的質(zhì)量

這種分類和方法只有在驗(yàn)證開始時(shí)和整個(gè)項(xiàng)目開發(fā)過程中使用才有效,原因有二:

漏洞必須在被發(fā)現(xiàn)時(shí)即時(shí)修復(fù)。留下一個(gè)2級(jí)或3級(jí)的bug而不即時(shí)修復(fù),則意味著在啟動(dòng)大型浸泡測(cè)試(soak test)時(shí)會(huì)出現(xiàn)大量的失誤。據(jù)統(tǒng)計(jì),一個(gè)需要更多事件的類似bug(來自同一漏洞集群)可能會(huì)被忽略。

漏洞的復(fù)雜性被用來改善和衡量測(cè)試平臺(tái)的質(zhì)量。復(fù)雜性水平與觸發(fā)漏洞所需的事件數(shù)量越匹配,復(fù)雜性得分越高,測(cè)試平臺(tái)的壓力越大。追蹤和分析觸發(fā)漏洞的事件對(duì)于了解如何調(diào)整隨機(jī)約束或創(chuàng)建新的功能覆蓋點(diǎn)來說非常有用。

最后,通過將這種方法與Codasip的驗(yàn)證方法結(jié)合起來,包括獵殺以集群為單位的bug,確保了高水平的驗(yàn)證質(zhì)量,幫助我們確信并超越驗(yàn)證驗(yàn)收標(biāo)準(zhǔn)。

審核編輯 :李倩

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

    關(guān)注

    68

    文章

    19384

    瀏覽量

    230511
  • 漏洞
    +關(guān)注

    關(guān)注

    0

    文章

    204

    瀏覽量

    15401

原文標(biāo)題:處理器驗(yàn)證系列之四:系統(tǒng)Bug獵殺-檢測(cè)處理器漏洞的復(fù)雜性以提高測(cè)試平臺(tái)的質(zhì)量!

文章出處:【微信號(hào):Codasip 科達(dá)希普,微信公眾號(hào):Codasip 科達(dá)希普】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    光伏連接外殼:超越簡(jiǎn)單塑料的復(fù)雜性與重要

    將深入探討光伏連接外殼的設(shè)計(jì)要求及其超越簡(jiǎn)單塑料的復(fù)雜性與重要。 一、光伏連接外殼的設(shè)計(jì)要求 材料選擇 光伏連接的外殼并非簡(jiǎn)單的塑料
    的頭像 發(fā)表于 11-04 14:50 ?205次閱讀
    光伏連接<b class='flag-5'>器</b>外殼:超越簡(jiǎn)單塑料的<b class='flag-5'>復(fù)雜性</b>與重要<b class='flag-5'>性</b>

    處理器指令的獲取過程

    處理器指令的獲取是計(jì)算機(jī)執(zhí)行程序過程中的關(guān)鍵環(huán)節(jié),決定處理器如何對(duì)數(shù)據(jù)和指令進(jìn)行處理。以下將詳細(xì)闡述微
    的頭像 發(fā)表于 10-05 15:16 ?371次閱讀

    簡(jiǎn)述微處理器的指令集架構(gòu)

    處理器的指令集架構(gòu)(Instruction Set Architecture,ISA)是計(jì)算機(jī)體系結(jié)構(gòu)中的核心組成部分,定義計(jì)算機(jī)能夠執(zhí)行的指令集合、數(shù)據(jù)類型、寄存
    的頭像 發(fā)表于 10-05 14:59 ?526次閱讀

    處理器的指令集有哪些

    處理器的指令集是微處理器設(shè)計(jì)和功能實(shí)現(xiàn)的基礎(chǔ),決定處理器能夠執(zhí)行哪些操作以及這些操作如何
    的頭像 發(fā)表于 10-05 14:58 ?342次閱讀

    ARM處理器和CISC處理器的區(qū)別

    ARM處理器和CISC(復(fù)雜指令集計(jì)算機(jī))處理器在多個(gè)方面存在顯著的區(qū)別。這些區(qū)別主要體現(xiàn)在架構(gòu)原理、性能與功耗、設(shè)計(jì)目標(biāo)、應(yīng)用領(lǐng)域以及市場(chǎng)生態(tài)等方面。
    的頭像 發(fā)表于 09-10 11:10 ?525次閱讀

    簡(jiǎn)述微處理器的發(fā)展歷史

    處理器的發(fā)展歷史是一部充滿創(chuàng)新與突破的技術(shù)演進(jìn)史,見證計(jì)算機(jī)技術(shù)的飛速發(fā)展和人類社會(huì)的巨大變革。以下是對(duì)微處理器發(fā)展歷史的詳細(xì)回顧,內(nèi)容將涵蓋其關(guān)鍵節(jié)點(diǎn)、重要里程碑
    的頭像 發(fā)表于 08-22 14:22 ?3429次閱讀

    處理器的指令集架構(gòu)介紹

    處理器的指令集架構(gòu)(Instruction Set Architecture,ISA)是計(jì)算機(jī)體系結(jié)構(gòu)中至關(guān)重要的部分,定義處理器
    的頭像 發(fā)表于 08-22 10:53 ?1441次閱讀

    圖像處理器是什么意思

    圖像處理器(Image Processor)是一種專門用于圖像處理和計(jì)算的硬件設(shè)備或芯片,通過高速數(shù)據(jù)傳輸、圖像編解碼、濾波、變換等多種技術(shù)手段,對(duì)輸入的圖像進(jìn)行一系列復(fù)雜的操作,以
    的頭像 發(fā)表于 08-14 09:28 ?945次閱讀

    處理器定義和種類

    處理器,作為計(jì)算機(jī)系統(tǒng)的核心部件,承載著執(zhí)行指令、處理數(shù)據(jù)的重要任務(wù)。隨著信息技術(shù)的飛速發(fā)展,處理器的種類和性能也在不斷提升。本文將對(duì)處理器定義
    的頭像 發(fā)表于 05-12 18:12 ?2792次閱讀

    嵌入式微處理器定義與發(fā)展 嵌入式微處理器種類和型號(hào)

    嵌入式微處理器定義與發(fā)展 嵌入式微處理器指的是以處理器為核心的專用集成電路芯片,用于實(shí)現(xiàn)特定任務(wù)的計(jì)算或控制功能。通常被嵌入在各種電子設(shè)
    的頭像 發(fā)表于 05-04 15:43 ?2288次閱讀

    什么是嵌入式微處理器? 嵌入式微處理器的區(qū)別

    的任務(wù)或控制其他硬件設(shè)備。 嵌入式微處理器的出現(xiàn)可以追溯到20世紀(jì)70年代末以及80年代初。嵌入式微處理器通過集成了處理器核心、內(nèi)存、輸入輸出控制
    的頭像 發(fā)表于 04-21 15:44 ?1620次閱讀

    處理器屬于專用集成電路嗎對(duì)嗎

    處理器定義、工作原理、制造工藝以及應(yīng)用等方面進(jìn)行詳細(xì)介紹。 首先,我們來了解一下什么是微處理器。微處理器是一種能夠執(zhí)行各種算術(shù)和邏輯運(yùn)算
    的頭像 發(fā)表于 04-19 14:32 ?851次閱讀

    C語言中的預(yù)處理器

    所有的預(yù)處理器命令都是以井號(hào)(#)開頭。必須是第一個(gè)非空字符,為了增強(qiáng)可讀,預(yù)處理器指令應(yīng)從第一列開始。
    發(fā)表于 03-01 12:16 ?956次閱讀
    C語言中的預(yù)<b class='flag-5'>處理器</b>

    淺談SoC中常用的處理器

    復(fù)雜系統(tǒng)執(zhí)行多種多樣的復(fù)雜任務(wù)。任務(wù)常因?yàn)槭袌?chǎng)需求而改變。處理器的軟件可編程使得它可以實(shí)現(xiàn)更加快速的功能開發(fā)和提供更加敏捷的可適,已成為
    的頭像 發(fā)表于 02-23 09:19 ?1342次閱讀
    淺談SoC中常用的<b class='flag-5'>處理器</b>

    解決選擇合適安全控制復(fù)雜性

    作者:Jeff Shepard 投稿人:DigiKey 北美編輯 工業(yè)系統(tǒng)中的安全是一個(gè)關(guān)鍵而復(fù)雜的主題,因此為給定應(yīng)用指定最佳安全控制器具有挑戰(zhàn)。其中考慮因素包括與安全控制相關(guān)的眾多
    的頭像 發(fā)表于 02-13 13:32 ?617次閱讀
    解決選擇合適安全控制<b class='flag-5'>器</b>的<b class='flag-5'>復(fù)雜性</b>