電子產(chǎn)業(yè)一站式賦能平臺

PCB聯(lián)盟網(wǎng)

搜索
查看: 136|回復: 0
收起左側(cè)

深入理解AXI協(xié)議中的outstanding/out-of-order/interleaving(三)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
匿名  發(fā)表于 2024-10-22 11:17:00 回帖獎勵 |倒序瀏覽 |閱讀模式
——————————————————————————————
版權聲明:
本文作者:烓圍瑋未。主要從事ISP/MIPI/SOC/車規(guī)芯片設計/SOC架構(gòu)設計
首發(fā)于知乎專欄:芯片設計進階之路
微信公眾號:芯片設計進階之路(x_chip)
轉(zhuǎn)發(fā)必須授權,同時保留這段聲明,盜版必究!
——————————————————————————————
為了詳細了解,outstanding,out-of-order,interleaving對傳輸?shù)挠绊,繼續(xù)進行場景分析。
  • 兩個master訪問兩個salve[/ol]兩個master訪問兩個個slave,代表了大多數(shù)SOC系統(tǒng)的最基本的總線結(jié)構(gòu)。

    在前面的分析中,其實簡化了BUS的作用,但是復雜情況下,其實BUS才是重點。加上了總線(BUS)后,為了便于分析,把BUS分解成如下結(jié)構(gòu):

    BUS仲裁采用最簡單的crossbar,實際中可能是NOC/MESH等結(jié)構(gòu),我們先按照最簡單的進行分析。BUS內(nèi)部總線也按照AXI來進行,實際中可能是AXI也可能是私有協(xié)議。
    可以看到,master訪問slave,實際上是經(jīng)過了一系列的中間單元,bus內(nèi)部的slave和master,這些單元會把輸入進行緩存或者進行時鐘域變換,或者進行數(shù)據(jù)位寬變幻,協(xié)議轉(zhuǎn)換等,這些是總線設計的重點,這里簡化為進行簡單的接受和轉(zhuǎn)發(fā)。那么一個master訪問slave可以簡化為下面的鏈路:

    下面我們先基于這個基本鏈路進行分析。復雜的系統(tǒng)都是這個鏈路的組合。
  • AXI鏈路的outstanding支持[/ol]再重復一下協(xié)議的規(guī)則:
  • 同一個ID:可以發(fā)送多個OST,但是必須按照順序回來;
  • 不同ID:可以發(fā)送多個OST, 返回可以亂序;
  • 讀和寫是獨立通道,沒有關系;
    [/ol]
  • Master是否支持oustanding的對比[/ol]如果master不支持oustanding,由于經(jīng)過了多個slave和master鏈路,導致響應延時更大,這時候master是否支持outstanding的區(qū)別更加明顯:

    圖片上半部分是不支持OST, 下半部分是支持OST?梢悦黠@看到,當response延時加大時候,支持outstanding帶來的提升更加明顯。
    如APB這種不支持OST的協(xié)議,在配置大量配置的時候,就需要非常長的時間,比如現(xiàn)在的GPU/ISP等IP可能需要配置幾萬個寄存器,如果使用APB協(xié)議,可能初始化時間就需要十分鐘,這是不能忍受的。所以最新的IP都是通過AXI或者自帶的DMA來進行配置。IP設計的時候要充分考慮到系統(tǒng)的需求。
  • 數(shù)據(jù)鏈路的oustanding計算[/ol]上面的分析中,沒有考慮到中間鏈路的outstanding的支持,如果AXI訪問鏈路上的OST是不一樣的,整個鏈路的OST怎么計算呢?如下圖所示:

    Master0的OST=4, Master00 OST=2, Master01 OST=5。假設Slave只是做接受和直接轉(zhuǎn)發(fā),不做任何緩存,實際中大部分也是這種情況。另外,Master0發(fā)送的傳輸必須等到slave0的response返回,這筆transcation才算結(jié)束,也就是不支持eraly response,這也符合大部分實際系統(tǒng)的運行。
    那么假設Master0還是能發(fā)出4個outstanding,傳輸?shù)組aster00。Master00在發(fā)送完2個outstanding命令后,需要等待第一個response返回,因為OST=2,這樣,Master00其實不會接受上游Master0的A2和A3命令。
    也就是Master0雖然OST=4, 但由于下游的Master00不接受,導致Master0實際只能發(fā)送2個,也就是鏈路到Master00實際的OST=2。
    那么Master00怎么控制Master0不繼續(xù)發(fā)送命令呢?別忘了AXI是一個握手協(xié)議,Master00不能繼續(xù)發(fā)送的時候,可以直接反壓上游,不發(fā)送Ready信號就可以讓上游的命令不能繼續(xù)發(fā)送。



    當Master00繼續(xù)把傳輸發(fā)送給Master01, 雖然Master01 OST=5,但是Master00發(fā)不出大于2的命令,這樣在Master01的輸出AXI口上,看到的OST=2.
    所以,整個鏈路的OST=2.
    分析其他情況我們可以得到如下結(jié)論:
    一個AXI訪問鏈路上的outstanding大小等于鏈路上組件支持的最小的outstanding.
    所以在系統(tǒng)總線設計的時候,原則就是保持整個鏈路的outstanding和Master一致,總線內(nèi)部outstanding大于master只會浪費資源,小于master又會限制master的性能。Master一般是IP,在進行IP設計的時候,比較好的設計是能夠調(diào)節(jié)IP的outstanding大小,這樣在整個SOC系統(tǒng)進行性能帶寬調(diào)試的時候,可以通過IP內(nèi)部來調(diào)節(jié),對系統(tǒng)優(yōu)化和后期靈活性帶來了極大的方便。
  • Master是否支持out-of-order和interleaving[/ol]正如前面的文章分析的,支持outstanding的一般都會支持,out-of-order和interleaving,不支持的影響在SOC系統(tǒng)上,只會放大不利因素,所以不在過多對比。如果IP(Master)不支持,那么系統(tǒng)總線設計也會解決這個問題,通過增加buffer等方式,不然對系統(tǒng)影響太大,具體的方法會在討論系統(tǒng)架構(gòu)的時候再分析(嗯,那是另外的價格)。
    真正的難點是多master訪問多slave的ID的處理,這會涉及到系統(tǒng)限制,死鎖等方面,下篇文章繼續(xù)分析。
    后記技術很重要,技術背后的思想更重要!
    技術背后的某些思想就是你解決以后問題的鑰匙。我的文章可能一篇中知識點不太多,但是力求讓你能深入理解,為你進階打下基礎。如果有一點點收獲,也算是我對中國芯片行業(yè)的一點點小貢獻吧。
    贈人玫瑰,手有余香。如果你有所收獲,麻煩花一秒時間幫我點個贊吧,謝謝!
    知乎專欄:芯片設計進階之路
    ——————————————————————————————
  • 本帖子中包含更多資源

    您需要 登錄 才可以下載或查看,沒有賬號?立即注冊

    x
    回復

    使用道具

    發(fā)表回復

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


    聯(lián)系客服 關注微信 下載APP 返回頂部 返回列表