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

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

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

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

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

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

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

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

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

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

訪問每個(gè)DDR的burst大小變小了,具體大小和interleaving的分拆大小有關(guān),這也是系統(tǒng)總線的核心參數(shù)。
Burst拆分會(huì)帶來很多問題,比如如果順序是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í)候也需要重排,由于讀返回的是數(shù)據(jù)和response,所以reorder buffer開銷還是非常大的。
關(guān)于多master訪問DDR,這個(gè)是SOC設(shè)計(jì)的核心和重點(diǎn),后面會(huì)專門分析,這里就先不展開了。
后記
技術(shù)很重要,技術(shù)背后的思想更重要!
技術(shù)背后的某些思想就是你解決以后問題的鑰匙。我的文章可能一篇中知識(shí)點(diǎn)不太多,但是力求讓你能深入理解,為你進(jìn)階打下基礎(chǔ)。如果有一點(diǎn)點(diǎn)收獲,也算是我對(duì)中國芯片行業(yè)的一點(diǎn)點(diǎn)貢獻(xiàn)吧。
贈(zèng)人玫瑰,手有余香。如果你有所收獲,麻煩花一秒時(shí)間幫我點(diǎn)個(gè)贊吧,謝謝!
知乎專欄:芯片設(shè)計(jì)進(jìn)階之路
微信公眾號(hào):芯片設(shè)計(jì)進(jìn)階之路 x_chip
——————————————————————————————

本帖子中包含更多資源

您需要 登錄 才可以下載或查看,沒有賬號(hào)?立即注冊(cè)

x
回復(fù)

使用道具

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

本版積分規(guī)則

關(guān)閉

站長推薦上一條 /1 下一條


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