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

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

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

SoC常見問題 - axi deadlock

ruikundianzi ? 來源:IP與SoC設(shè)計 ? 2023-12-07 09:45 ? 次閱讀

最近多個項目并行,實在是沒有時間分享了,今天在評論區(qū)看到了一個非常有意義的問題,同樣也是社招,校招最常見的問題。那就是AXI協(xié)議怎么避免死鎖呢?

兩種死鎖場景分別是亂序讀和寫交織,有的人更熟悉英文,那就是out of order和interleaving。下面我們分析原因。

亂序讀:我們知道AXI協(xié)議支持亂序讀,那么為什么能實現(xiàn)呢?這也是常見面試題目,那就是因為AXI(現(xiàn)在單指AXI3)每個通路都有相應(yīng)的ID,通過請求和響應(yīng)ID的一致來將打亂的順序恢復(fù)。

現(xiàn)在假設(shè)M1發(fā)給S1的請求ID可以是1,2,3,M1發(fā)給S2的ID可以是3,4,5?,F(xiàn)在M1分別發(fā)起了兩組outstanding傳輸給S1和S2,RID是隨機的,也就是ARID_S1和ARID_S2存在都是3的可能。并且如圖,S1/S2響應(yīng)的時間是不同的,所以也就存在S1和S2 RID=3的響應(yīng)順序是不確定的,例如M1>S2先發(fā)出ID=3的請求,長度為16,又發(fā)出M1>S1的ID=3的請求,長度為8,但是由于S2響應(yīng)慢,M1會先拿到S1的響應(yīng),那么M1收到ID為3的響應(yīng)時該怎么區(qū)分呢?答案是無法區(qū)分,所以這種場景會造成M1工作異常(接到全部數(shù)據(jù)的時候沒有rlast信號,此時正處于S2響應(yīng)的中間,并沒有RLAST會導(dǎo)致M1認(rèn)為傳輸錯誤)。具體解決方案是per slave per id,M0發(fā)起訪問時,會判斷已經(jīng)發(fā)出去的ID,保證每個slave收到的ID是唯一的,所以我們設(shè)計axi master時也要這樣,當(dāng)然,我們也可以投機取巧,固定值。

想必一定有熟悉coreconsulatant和ARM NIC的同學(xué),配置的時候有兩個參數(shù),那就是每組outstanding可以使用的ID個數(shù),以及每個ID對應(yīng)的指令個數(shù),兩者相乘就是outstanding能力,所以為了避免死鎖我們會將ID個數(shù)配置為1(當(dāng)然僅限第一級矩陣,也就是和自研AXI_M連接的地方,這樣太暴力),這樣Master就很容易區(qū)分不同slave設(shè)備的響應(yīng)了,但是缺點也很明顯,那就是會降低性能,不同ID的請求會被矩陣master反壓,所以我們設(shè)置的需要合理。怎么算合理呢?首先如果大家看過cpu文檔,會發(fā)現(xiàn)ID個數(shù)以及不同ID的含義是有明確定義的,所以我們配置時要考慮master的ID個數(shù),但是master cpu訪問我們時限制不了的,所以我們會在那里下手呢?那就是矩陣,需要做remap,NIC和NOC都有這種設(shè)計,實時保證ID的唯一性。

4c8d0d94-94a0-11ee-939d-92fbcf53809c.jpg

亂序讀死鎖常見結(jié)構(gòu)

交織寫:AXI3協(xié)議支持交織寫,原因就是容易造成總線死鎖,其實并不是交織寫容易造成死鎖,而是某些場景容易出現(xiàn)(矩陣配置不合理,或者不同路徑delay分析不正確)。我們分析一下原因。

如下圖,假設(shè)M1對S1地址發(fā)起多次burst傳輸,并且因為矩陣支持交織寫,會把M1訪問的順序打亂(原因是master的數(shù)據(jù)也是由上級傳遞過來的,順序可能不同)。如果不好理解的話,可以抽象將M1和M2認(rèn)為是一個master,都在訪問S1,矩陣的interleaving深度是>1的,也就是S1出口會將寫的順序打亂,導(dǎo)致waddr和wdata的順序改變,那么結(jié)果是什么呢?那就是驢頭不對馬嘴,想寫A1,但是數(shù)據(jù)卻寫到了A2地址,但是控制通路已經(jīng)規(guī)定了burst長度,如果wlast出現(xiàn)的時候數(shù)據(jù)不夠,或者多了,當(dāng)然會讓slave出現(xiàn)問題嘍。

這也是為什么AXI4取消了WID的主要原因。

4c97daf8-94a0-11ee-939d-92fbcf53809c.jpg

交織寫死鎖常見結(jié)構(gòu)

交織讀為什么不容易死鎖呢?

如果是M1訪問S1,根本不會出現(xiàn)交織,這個場景安全。

如果M1同時訪問S1和S2,因為矩陣延遲的不同,很有可能發(fā)生交織,但是由于ARID和RID不同,也不會造成死鎖。也是安全的。

但是當(dāng)然存在不安全的場景,那就是master不支持交織,矩陣支持交織,同樣會導(dǎo)致總線異常,所以我們配置矩陣IP時,一定要充分了解所有的master設(shè)備和slave設(shè)備。主要參數(shù)如下:outstanding能力,read interleaving深度,master id寬度,master個數(shù),slave id寬度(矩陣slave口ID寬度會受master個數(shù)影響,id一定不能截位,但是可以remap)等。

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

    關(guān)注

    38

    文章

    4100

    瀏覽量

    217782
  • MASTER
    +關(guān)注

    關(guān)注

    0

    文章

    103

    瀏覽量

    11246
  • AXI
    AXI
    +關(guān)注

    關(guān)注

    1

    文章

    127

    瀏覽量

    16577

原文標(biāo)題:SoC常見問題 - axi deadlock

文章出處:【微信號:IP與SoC設(shè)計,微信公眾號:IP與SoC設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    soc開發(fā)流程常見問題及解決方案

    SOC(System on a Chip,系統(tǒng)級芯片)開發(fā)流程中常見問題及解決方案主要包括以下幾個方面: 一、環(huán)境問題 常見問題 : 開發(fā)環(huán)境配置復(fù)雜,新手難以快速上手。 依賴項缺失或版本不兼容
    的頭像 發(fā)表于 11-10 09:26 ?181次閱讀

    Keystone EDMA常見問題解答

    電子發(fā)燒友網(wǎng)站提供《Keystone EDMA常見問題解答.pdf》資料免費下載
    發(fā)表于 10-11 10:43 ?0次下載
    Keystone EDMA<b class='flag-5'>常見問題</b>解答

    Keystone NDK常見問題解答

    電子發(fā)燒友網(wǎng)站提供《Keystone NDK常見問題解答.pdf》資料免費下載
    發(fā)表于 10-11 10:41 ?0次下載
    Keystone NDK<b class='flag-5'>常見問題</b>解答

    KeyStone設(shè)備的PCI Express (PCle)常見問題

    電子發(fā)燒友網(wǎng)站提供《KeyStone設(shè)備的PCI Express (PCle)常見問題.pdf》資料免費下載
    發(fā)表于 10-11 10:21 ?0次下載
    KeyStone設(shè)備的PCI Express (PCle)<b class='flag-5'>常見問題</b>

    TVP5146常見問題

    電子發(fā)燒友網(wǎng)站提供《TVP5146常見問題.pdf》資料免費下載
    發(fā)表于 09-30 09:46 ?0次下載
    TVP5146<b class='flag-5'>常見問題</b>

    TFPxxx常見問題解答

    電子發(fā)燒友網(wǎng)站提供《TFPxxx常見問題解答.pdf》資料免費下載
    發(fā)表于 09-29 09:56 ?0次下載
    TFPxxx<b class='flag-5'>常見問題</b>解答

    驅(qū)動芯片在應(yīng)用中的常見問題分析與解決

    電子發(fā)燒友網(wǎng)站提供《驅(qū)動芯片在應(yīng)用中的常見問題分析與解決.pdf》資料免費下載
    發(fā)表于 09-10 10:48 ?0次下載
    驅(qū)動芯片在應(yīng)用中的<b class='flag-5'>常見問題</b>分析與解決

    TMP LM 75比較常見問題解答

    電子發(fā)燒友網(wǎng)站提供《TMP LM 75比較常見問題解答.pdf》資料免費下載
    發(fā)表于 08-30 11:40 ?0次下載
    TMP LM 75比較<b class='flag-5'>常見問題</b>解答

    PCB設(shè)計中的常見問題有哪些?

    一站式PCBA智造廠家今天為大家講講PCB設(shè)計中的常見問題有哪些?PCB設(shè)計布局時容易出現(xiàn)的五大常見問題。在電子產(chǎn)品的開發(fā)過程中,PCB(Printed Circuit Board,印刷電路
    的頭像 發(fā)表于 05-23 09:13 ?720次閱讀
    PCB設(shè)計中的<b class='flag-5'>常見問題</b>有哪些?

    SoC設(shè)計中總線協(xié)議AXI4與AXI3的主要區(qū)別詳解

    AXI4和AXI3是高級擴展接口(Advanced eXtensible Interface)的兩個不同版本,它們都是用于SoC(System on Chip)設(shè)計中的總線協(xié)議,用于處理器和其它外設(shè)之間的高速數(shù)據(jù)傳輸。
    的頭像 發(fā)表于 05-10 11:29 ?5819次閱讀
    <b class='flag-5'>SoC</b>設(shè)計中總線協(xié)議<b class='flag-5'>AXI</b>4與<b class='flag-5'>AXI</b>3的主要區(qū)別詳解

    Ubuntu系統(tǒng)常見問題及解答

    今天小編為大家總結(jié)了Ubuntu系統(tǒng)常見問題的解決方法,便于收藏和查閱,大家快快碼住哦~
    的頭像 發(fā)表于 04-19 12:29 ?939次閱讀
    Ubuntu系統(tǒng)<b class='flag-5'>常見問題</b>及解答

    步進電機常見問題及維護

    ? ? ? 步進電機是一種將電脈沖信號轉(zhuǎn)換為角位移或線位移的開環(huán)控制元件,廣泛應(yīng)用于各種自動化設(shè)備和系統(tǒng)中。然而,在使用過程中,步進電機也會遇到一些常見問題,需要進行適當(dāng)?shù)木S護。本文將介紹步進電機
    的頭像 發(fā)表于 03-17 08:36 ?786次閱讀
    步進電機<b class='flag-5'>常見問題</b>及維護

    PCB金手指設(shè)計的常見問題和解決方案

    PCB金手指設(shè)計的常見問題和解決方案
    的頭像 發(fā)表于 12-25 10:09 ?2030次閱讀

    CLOCK常見問題解答

    電子發(fā)燒友網(wǎng)站提供《CLOCK常見問題解答.pdf》資料免費下載
    發(fā)表于 11-23 10:23 ?0次下載
    CLOCK<b class='flag-5'>常見問題</b>解答

    C語言的常見問題

    電子發(fā)燒友網(wǎng)站提供《C語言的常見問題集.pdf》資料免費下載
    發(fā)表于 11-18 10:29 ?0次下載
    C語言的<b class='flag-5'>常見問題</b>集