——————————————————————————————
版權聲明:
本文作者:烓圍瑋未。主要從事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è)的一點點小貢獻吧。
贈人玫瑰,手有余香。如果你有所收獲,麻煩花一秒時間幫我點個贊吧,謝謝!
知乎專欄:芯片設計進階之路
—————————————————————————————— |