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

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

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

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
匿名  發(fā)表于 2024-10-22 11:17:00 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
——————————————————————————————
版權(quán)聲明:
本文作者:烓圍瑋未。主要從事ISP/MIPI/SOC/車規(guī)芯片設(shè)計(jì)/SOC架構(gòu)設(shè)計(jì)
首發(fā)于知乎專欄:芯片設(shè)計(jì)進(jìn)階之路
微信公眾號:芯片設(shè)計(jì)進(jìn)階之路(x_chip)
轉(zhuǎn)發(fā)必須授權(quán),同時保留這段聲明,盜版必究!
——————————————————————————————
為了詳細(xì)了解,outstanding,out-of-order,interleaving對傳輸?shù)挠绊,繼續(xù)進(jìn)行場景分析。
在分析了各種場景下outstanding,out-of-order,interleaving的好處后,對更復(fù)雜的場景,比如soc中多master訪問多個slave的情況,這些可以分解為基本場景,只是在總線部分有些差異,這些主要是總線設(shè)計(jì)的內(nèi)容。
下面主要討論一下,在支持outstanding,out-of-order,interleaving的情況下,對ID的處理。
1. 一個master訪問兩個salve
先分析一下一個master訪問兩個slave的ID使用。

假設(shè)Master OST=4, Master先給Slave0發(fā)了一個ID=0的命令,那么Master能否繼續(xù)以ID=0給Slave1發(fā)送命令呢?
結(jié)論是不行:

BUS區(qū)分訪問slave0還是slave1是按照地址來區(qū)分的,但是slave返回response給master的時候只有ID信息,沒有address信息。所以BUS和master是沒有辦法來區(qū)分返回response是來自slave0還是slave1的,BUS會等到第一個ID0的response返回了,再發(fā)送第二個ID0的transaction。實(shí)際使用的系統(tǒng)總線比如NOC,NIC都不能支持相同ID的outstanding發(fā)給不同的slave。傳輸如下圖所示:

可以看到,如果master只能發(fā)送一個ID的outstanding,在發(fā)送給不同slave的時候outstanding機(jī)制失效了!但是如果master是發(fā)送給同一個master,那么還是能繼續(xù)發(fā)送多個transaction:

另外,提醒一下,outstanding是master在沒收到response的時候,最多能發(fā)送到命令個數(shù),實(shí)際發(fā)送多少命令還是看master的需求。
對于一個master訪問兩個(或者多個)slave的情況,通過以上分析我們可以得到以下結(jié)論:
Master通過outstanding訪問不同slave的時候,必須采用不同的ID,有多少slave就需要使用多少個ID;
Master通過outstanding訪問相同slave的時候,可以采用相同的ID,也可以采用不同ID;
[/ol]實(shí)際在進(jìn)行總線設(shè)計(jì)的時候,即需要匹配ID和outstanding個數(shù)。
2. 兩個master訪問兩個salve
現(xiàn)在增加到兩個master,那么兩個master如果都通ID=0訪問Slave0,會發(fā)生什么事情呢?BUS和Slave0無法區(qū)分傳輸來自master0還是master1。解決方式就是通過修改ID,給每個master增加一個唯一的master ID,如下圖所示:

這樣BUS傳輸?shù)膖ransaction的ID就是MID+AXI ID的組合,因?yàn)镸ID對整個SOC系統(tǒng)來說是唯一的,所以slave能精確區(qū)分命令的來源,BUS也能精確把response送給對應(yīng)masters。這個方案也是大部分實(shí)際SOC采用的方案,即:給SOC中所有的master增加唯一的master ID。
至于MID+AXI ID怎么組合,可以直接把MID作為AXI ID的高位,也可以通過hash再編碼,一般這個在系統(tǒng)BUS里處理。
這個多master訪問就和單master訪問多slave也是類似的,只是多master需要在bus做仲裁,可以簡化為延時增大了。
3. 一個AXI傳輸訪問兩個salve
有沒有可能,一個master發(fā)送一筆transaction,同時訪問兩個slave呢?正常情況是沒有,非常特殊情況下,確實(shí)存在,比較常見的是DDR interleaving訪問。除了這個外,基本上不允許一個master發(fā)送一筆transaction,同時訪問兩個slave的。AXI的跨4K限制就是為了限制這種情況。
但是SOC為了訪問帶寬,并且把帶寬均分到多個DDR,一般會支持DDR的interleaving訪問。也就是系統(tǒng)總線會主動的把一筆transaction拆分到兩個DDR或者多個DDR,如下圖所示:

訪問每個DDR的burst大小變小了,具體大小和interleaving的分拆大小有關(guān),這也是系統(tǒng)總線的核心參數(shù)。
Burst拆分會帶來很多問題,比如如果順序是A00,A01, 但是DDR0/1的響應(yīng)是B01,B00返回怎么處理呢?這里BUS就需要先排序再合并后返回到master,所以這里需要增加reorder buffer。

reorder buffer基本上必備的,因?yàn)槟悴荒鼙WCDDR0/1響應(yīng)返回的順序,所以為了傳輸正確性,一定要進(jìn)行重排。同樣,進(jìn)行讀的時候也需要重排,由于讀返回的是數(shù)據(jù)和response,所以reorder buffer開銷還是非常大的。
關(guān)于多master訪問DDR,這個是SOC設(shè)計(jì)的核心和重點(diǎn),后面會專門分析,這里就先不展開了。
后記
技術(shù)很重要,技術(shù)背后的思想更重要!
技術(shù)背后的某些思想就是你解決以后問題的鑰匙。我的文章可能一篇中知識點(diǎn)不太多,但是力求讓你能深入理解,為你進(jìn)階打下基礎(chǔ)。如果有一點(diǎn)點(diǎn)收獲,也算是我對中國芯片行業(yè)的一點(diǎn)點(diǎn)貢獻(xiàn)吧。
贈人玫瑰,手有余香。如果你有所收獲,麻煩花一秒時間幫我點(diǎn)個贊吧,謝謝!
知乎專欄:芯片設(shè)計(jì)進(jìn)階之路
微信公眾號:芯片設(shè)計(jì)進(jìn)階之路 x_chip
——————————————————————————————

本帖子中包含更多資源

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

x
回復(fù)

使用道具

發(fā)表回復(fù)

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

本版積分規(guī)則


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