郭振江 王煥東 張福新 肖俊華*
①(計算機體系結構國家重點實驗室 北京 100190)
②(中國科學院計算技術研究所 北京 100190)
③(中國科學院大學計算機科學與技術學院 北京 100049)
④(龍芯中科技術有限公司 北京 100190)
模塊化片上系統(Modular System on Chip,MSoC)作為一種新興的芯片設計方法,為當前摩爾定律與算力需求之間、芯片面積與良率之間、設計復雜度與快速迭代之間的矛盾提供了突破性的解決方案[1–5]。目前,單個獨立芯片的設計遇到了兩方面的挑戰。一是深度學習時代的算力需求每3~4月翻1番,但摩爾定律卻只能每1.5~2年翻1番[6]。二是增大單一芯片面積會導致芯片良率迅速下降,并受到光刻口徑限制,最終撞上“面積墻”。MSoC可以通過封裝多個獨立設計的芯粒(Die)提供更多功能和算力,同時較高的良率、可重復使用的設計、獨立的制程工藝帶來成本收益足夠抵消封裝開銷[7]。國內外幾乎同時成立產業聯盟制定互連標準也促使SoC進一步向模塊化發展。
表1整理了近年發布的多款處理器芯片中的IP組件情況。從中可以看出,這些芯片異構集成了不同類型的IP,通常包括多個處理器核、多核GPU、神經網絡處理單元(Neural Processor Unit ,NPU)以及各類定制化的組件如圖像信號處理(Image Signal Processing ISP)單元、密碼學加速器Crypto、數據壓縮加速器等。這些IP來自不同的設計團隊,多核IP內部一般還包含有互連子網絡。模塊化SoC靈活、復雜的結構給片上網絡(Networkon-Chip, NoC)帶來了新的挑戰。

表1 近年發布的多款處理器芯片的IP組件情況
一方面,現有的無死鎖互連研究缺少拓撲靈活性,不適用于模塊化SoC。現有的研究大多假設SoC包含多個2D Mesh,并通過有限數量的邊界路由器在水平或垂直方向互聯[14,15]。而實際芯片往往具有明顯的非對稱特征,無法嵌入到Mesh當中。此外,實際芯片通常包含多個子網絡,且子網絡間直接連線較多,但現有的研究沒有充分利用這種拓撲信息[16]。
另一方面,現有的無死鎖理論大多基于蟲洞路由,但高級可擴展接口(Advanced eXtensible Interface, AXI)協議與蟲洞路由不完全相同。第1點不同在于,AXI協議允許同一個數據包的寫請求和寫數據之間存在一定的時間間隔。這種特性將引入新的死鎖類型。第2點不同在于,AXI協議有5個通道。蟲洞路由使用通道依賴圖(C h a n n e l Dependency Graph, CDG)判斷NoC是否存在死鎖,但AXI網絡的CDG非常復雜,并且構建過程容易出錯。
因此,當前迫切需要一種針對模塊化SoC的NoC無死鎖設計方法學。這種方法需要滿足模塊化SoC架構靈活的特點,需要充分利用拓撲信息,需要簡單便捷的快速建構,能夠以較少的時間和人力成本檢測當前結構中潛在死鎖,并有對應的解決方案。
本文主要創新點包含以下3個方面:
(1) 構建了一個模擬系統模塊化片上系統MSoC,本系統包含多種異構組件和多個子網絡,用于研究實際系統可能遇到的死鎖類型;
(2) 研究了基于AXI的NoC中的3種死鎖,并分別從拓撲和路由的角度提出了解決方案;
(3) 提出自動化的死鎖定位算法“先拓撲后路由”(First Topology Last Routing, FTLR),大幅降低了硅前死鎖檢測的難度。將本方法應用于真實模塊化SoC的構建中,成功發現了多處潛在死鎖,大幅縮短了驗證時間。
本文包含以下部分:第1節介紹本文的研究背景和主要貢獻;第2節介紹互連網絡死鎖避免的相關工作,以及它們在模塊化SoC上的擴展;第3節介紹本文構建的模塊化SoC系統結構和實驗方法;第4節介紹3種基于AXI的互連網絡的死鎖,提出了對應的解決方案;第5節介紹自動化死鎖定位方法和實驗結果;第6節總結。
針對模塊化SoC片上網絡的無死鎖方案大多從單個NoC的無死鎖機制擴展而來,主要的理論依據是Dally理論:片上網絡無死鎖的充分必要條件是其通道依賴圖中無環。下面介紹4種避免死鎖的方法,以及如何擴展到模塊化SoC。
基于日期線(Dateline)[17]的方法。該方法將跨過Dateline的數據包切換到額外的虛通道(Virtual Channel, VC)中,環形依賴被轉換為兩倍長度的線性依賴,從而避免死鎖。VC可以提高NoC的路徑多樣性,但會增加CDG復雜度,導致建模和分析困難。
基于轉彎限制(Turn Restriction, TR)[18]的方法。該方法主要用于2D Mesh,限制數據包的轉彎方向,避免形成環路。該方法可以與負載均衡、網絡容錯、功耗控制、近似計算[19–22]等技術結合,提供魯棒的片上通信服務。但該方法靈活性較差,不適用于不規則結構的網絡。
基于流量控制(Flow Control, FC)[23]的方法。該方法在鏈路中只有1個空閑緩沖區時禁止新數據包的注入,而擁有空閑緩沖區的通道不依賴于其他通道,從而避免死鎖。流量控制需要額外的控制邏輯,增加了復雜度。
基于偏轉路由(Deflection Routing, DR)[22,24]的方法。該方法消除了NoC中的緩沖區,因此通道之間也不存在依賴關系,從而避免死鎖。該方法將收到的數據包轉發到輸出端口,即使是非生產路徑,導致高負載時性能下降等問題。
上述4種方案主要解決單個NoC的無死鎖問題。由于無死鎖的不可組合性,上述方案需要一定的修改才能擴展到模塊化SoC中。針對3D Mesh,已經提出了電梯優先(Elevator-First, EF)[24]方法。該方法在每個2D Mesh平面上使用維度優先路由,而在平面間使用額外的虛通道保證無死鎖。針對2.5D集成的芯片,模塊化轉彎限制(Modular Turn Restriction, MTR)[15]將每個Die的外部抽象成一個虛擬節點,并施加轉彎限制;遠程控制(Remote Control, RC)[16]通過FC機制避免邊界緩沖區被跨Die請求擁塞,從而消除通道間的依賴。文獻[25]擴展了DR方法,設計專門的交換模塊處理跨Die的請求。
然而,這些方法與如今的模塊化SoC有一些差別。
拓撲方面,由于良率和散熱等因素的影響,目前只有高帶寬存儲(High Bandwidth Memory,HBM)設備仍在使用3D集成技術[26],模塊化SoC更傾向于與2.5D集成。另外,異構IP通常僅提供唯一的訪問接口,不存在多個邊界路由器。最后,模塊化SoC結構靈活,很少使用Mesh結構[8,10,24,25]。因此需要一種針對實際模塊化SoC拓撲結構的無死鎖機制。
路由方面,大多數IP使用AXI協議。上述方法都基于蟲洞路由假設,而AXI協議與蟲洞路由存在一些差別。其次,AXI協議具有5個通道,這極大增加了構建CDG的復雜度。因此,研究基于AXI協議的無死鎖NoC具有實際意義。
表2比較了上述4種機制和本文所提出方法的適用拓撲、是否需要CDG、是否支持模塊化SoC以及實現開銷。本文所提方法適用于模塊化SoC,面向靈活易擴展的Crossbar或者點對點結構的NoC,并且也不需要構建復雜的CDG。

表2 死鎖避免機制比較
基于死鎖恢復的方法[27–31]允許死鎖的發生,同時檢測死鎖并實施恢復。該方法需要對模塊內部做侵入性的修改,這違反了模塊化SoC的設計原則。并且根據本文實際觀察到的死鎖來看,沒有必要為其設計復雜又昂貴的檢測和處理機制。通過簡單的硬件或軟件修改避免死鎖的出現是最有效的措施。
本節首先介紹實驗系統MSoC的結構。該系統符合當前微處理器的主流架構,并且基于AXI協議構建其互連網絡。本節還將介紹針對互連網絡的實驗配置和測試方法。
本文構建的模塊化SoC,稱為MSoC,如圖1所示。MSoC包含1個CPU Die、1個GPU Die和1個IO Die,這種結構能夠準確概括當前主流微處理器的基本結構。

圖1 MSoC芯片架構圖
MSoC集成的3個Die由不同的團隊獨立設計。其中CPU Die包含2個處理器核(Core)、2個最后一級高速緩存(Last-Level Cache, LLC)、1個內存控制器接口(Double Data Rate , DDR)。CPU Die包含兩級互連網絡NoC-0和NoC-1。 IO Die包含高速IO接口如 高速串行計算機擴展總線標準(Peripheral Component Interconnect Express, PCIE)接口(圖1中有4個)以及低速IO接口如USB和GMAC等。高速IO接口連接到NoC-2上,低速IO接口連接到NoC-3上。GPU Die包含1個GPU、1個視頻處理單元(Video Processing Unit, VPU)和顯存(GPU MEMory, GMEM)。
下面介紹MSoC中的Die-to-Die互連。CPU Die通過NoC-0訪問IO Die和GPU Die,訪問GPU Die的通道是用于訪問GMEM的快速通道。IO Die通過NoC-2訪問CPU Die,此時為保持Cache一致性,需要經過DMA模塊。IO Die不能質檢訪問GPU Die,只能轉發CPU Die訪問GPU Die的請求。GPU Die一方面通過直連通路快速訪問DDR,另一方面復用IO Die的DMA模塊進行一致性訪問。
MSoC還具有Chip-to-Chip互連的能力。兩片MSoC可以通過PCIE進行跨片的內存訪問。
圖1中所有IP核均通過AXI協議連接到NoC上,其中箭頭的方向即代表AXI Master到Slave的方向。兩個Core只有Master接口沒有Slave接口,而DDR剛好相反,只有Slave接口沒有Master接口。其他設備均包含Master接口和Slave接口。每個Master端口有唯一的ID號,用于標明數據包的發送者。
MSoC中的NoC均為Crossbar結構,并通過計算地址窗口命中的方式確定請求的轉發方向。互連網絡為提供標準的AXI接口用于對接IP核,包含AW, W, B, AR, R 5個通道。AXI協議是安謀(Advanced RISC Machines, ARM)公司提出的高級微控制器總線協議(Advanced Microcontroller Bus Architecture, AMBA)中的高速片內總線。相比于蟲洞路由將請求頭(Header)信息附在數據前發送,AXI使用獨立的通道發送請求和數據,即AW通道負責攜帶路由信息,而W用于傳輸數據。每個寫事務包含1個AW通道的請求,以及1個或多個W通道的數據。同一個數據包的AW和W不一定緊鄰,二者之間可能間隔數個時鐘周期。這是AXI協議與蟲洞路由協議的重要區別。
為了保持結構盡可能簡單,以及保證數據盡可能快地交付,MSoC使用死鎖避免機制。由于MSoC的異構 IP核之間幾乎都是點對點鏈接,因此現有的死鎖避免方法無法直接使用。因此需要全面檢查MSoC中可能出現的死鎖,并給出針對性的避免方案。
本文使用寄存器轉換級電路(Register Transfer Level, RTL)構建了整個MSoC的片NoC。Core包含私有的一級Cache,包括32 kB的指令Cache和32 KB的數據Cache。私有Cache主要用于模擬Cache一致訪問請求。LLC的大小共2 MB,分為兩個Bank,采用地址位交錯的方式訪問。對于接收到的命中的Cache訪問,LLC將直接回復數據;而對于非Cache訪問和未命中訪問,LLC將進一步向DDR請求數據。除此之外不會主動發起對其他設備的訪問。LLC使用MSI目錄維護Cache一致性。互連網絡運行在1 GHz,其他模塊通過同步或異步FIFO連接到片NoC上,并采用Round-Robin的方式滿足服務質量(QoS)。
Core, GPU和PCIE等模塊的AXI Master接口連接一個隨機數據包生成器,可以生成全類型全地址空間的訪問。GMEM, PCIE和DDR的每個AXI Slave接口解析數據包,并提供隨機數據。每個數據包綁定一個計時器,延遲超過0負載延遲的100倍則認為網絡發生了死鎖。
除了驗證單片MSoC無死鎖,本文還假設可能通過PCIE接口連接兩片MSoC,并研究這種情況下可能出現的新的死鎖模式。
MSoC最大限度地還原了真實模塊化SoC中主要的異構組件,以及真實模塊化SoC構建時可能出現的一些問題。MSoC進行一定程度的簡化以降低設計難度、提高仿真效率,但足以模擬所有可能的潛在死鎖。在MSoC中,本文發現了3種類型的死鎖。下一節介紹這些死鎖。
本節將介紹發現的3種死鎖,即雙重路徑死鎖、環形通道死鎖和橋接死鎖。對每一種死鎖類型,本節分析了死鎖發生的拓撲特征和路由特征。最后,本節給出了硬件和軟件上的死鎖避免方法。
在基于蟲洞路由的NoC中,邏輯上的環形依賴體現為拓撲上的環形通道。而在基于AXI的互連網絡中,死鎖也可能發生在具有雙重路徑的拓撲結構中。雙重路徑死鎖是本文對Dally理論的重要補充。在兩個節點間維持路徑多樣性是增加帶寬、降低平均延遲的常用方法,但在基于AXI的互連網絡中反而可能是導致死鎖的原因。
4.1.1 寫通道雙重路徑
考慮圖2中GPU與DDR之間的通路,如圖2(a)所示。GPU與DDR之間存在兩條通路,根據請求的Cache屬性進行選擇。左側是Cache類型請求的訪問通道,需要經過LLC;右側是Uncache類型請求的專用通道,不經過LLC。圖2中n×m代表AXI交叉開關,n為交叉開關輸入通道的數量,m為輸出通道的數量。

圖2 雙重路徑死鎖圖示
GPU依次發送3個寫請求,前兩個是Cache屬性的AW1, W1和AW2, W2,后一個是Uncache屬性的AW3, W3。AW3通過專用通道先于AW1到達DDR,于是AW1被擋在AW3后面,需要等待W2傳輸完成。而此時,根據協議,不包含路由信息的W1無法越過AW1,同一通道的W2不能越過W1。于是W3被堵住無法進入右側的專用通道,即使右側通道沒有其他數據包。因此,形成了AW1→W3→W2→W1→AW1的循環依賴,導致死鎖。
從拓撲結構上看,此時存在寫通道的雙重路徑(double write path)。造成這種死鎖需要同時滿足:
拓撲:兩條路徑上都包含獨立的AW和W通道;
4.1.2 讀通道雙重路徑
寫通道可能出現雙重路徑死鎖,因為AW通道和W通道分離。那么讀通道是否有可能引發類似的死鎖呢?由于AR和R通道方向不一致,因此這種情況下不會發生死鎖。但如果其中一條路徑涉及拆包模塊,就可能觸發另一種死鎖。
如圖2(b)所示,GPU向DDR發送兩個連續的讀請求AR0和AR1,這兩個請求通過不同的路徑路由。處于某種原因,拆包模塊將AR1拆分成兩個請求,即AR1-0和AR1-1。DDR按AR1-0, AR0,AR1-1的順序接收到3個讀請求,并依次回復R1-0,R0, R1-1,這將導致死鎖,如圖2(c)所示。R0在返回GPU時被R1-0阻擋,必須等到R1-1也傳回GPU后才能繼續傳遞。但R1-1被R0堵在DDR控制器中無法繼續傳遞,形成了R0→R1-1→R0的循環依賴,導致死鎖。需要注意的是,該問題不能通過簡單地增加緩沖區來避免,因為死鎖發生的原因是緩沖區之間存在依賴關系。
出現雙重讀路徑死鎖的條件包括:
拓撲:請求端與接收端之間存在至少兩條讀通路(double read path);其中一條通路存在拆包模塊;
路由: Master可以同時發出兩種類型的讀請求,并且請求可能被拆分。
環形通路死鎖是符合Dally理論的死鎖類型,但實際中很少有互連網絡在設計時就存在環形通路。環形通路的引入往往是缺乏全局信息的改動造成的。
考慮下面一種情況。出于某些原因,需要將原本屬于GPU的一部分地址空間映射到DDR中。NoC-2作為GPU直接相連的子網絡在其中增加了一處回環通道,將對這部分地址的訪問請求轉發回NoC-0,如圖3(a)所示。圖3中的數字標號代表了對應的通道。此時的訪問路徑為①→②→③→④→⑤。而NoC-0中恰好也存在一條回環通道,用于提供PCIE對GPU的訪問,即圖3(b)中的⑤→④→⑦→②→⑧。這兩種類型的流量如果不加區分地使用同一物理通道,將構成④→⑦→②→③→④的環形依賴,導致死鎖。只有一種流量也可能導致死鎖,即圖3(c)所示的⑥→④→⑦→②→③→④→⑤。
(1)存貨信息不容易跟蹤,難以獲取。該模式常見商業場景包含三類:靜態貨物、動態貨物、倉單類。這些信息都很難及時的傳遞到商業銀行端。并且對于存貨有可能被調換的情況,存貨質量監督難度大的問題。并且在存貨的監管過程中,監管的權責分析也沒有那么明確,這也是存貨類融資面臨的問題。

圖3 環形通路死鎖圖示
出現環形通路死鎖的條件包括:
拓撲:存在環形通路。
路由:環路的各個通道被同時占滿。
模塊化SoC面向未來市場開發,其組件在設計時并不完全清楚所有可能的場景。本文使用兩片MSoC互連來模擬可能的2.5D封裝,并研究可能導致的死鎖。本文使用PCIE連接兩個芯片,但結論適用于其他非AXI協議。
橋接死鎖發生在協議級[32]。Dally理論并不適用于協議級死鎖,因為這種類型的死鎖往往涉及模塊的內部實現細節。AXI協議為請求和響應使用獨立的物理通道,但PCIE協議并不區分這兩者。當不同類型的數據包使用了同一通道時,就會導致協議級死鎖。這類死鎖只有在跨片互聯時才會暴露出來;其他時候控制器可以正常工作,十分隱秘。
本文的AXI-PCIE轉換器如圖4所示。PCIE收集需要跨片的AXI數據包,將其轉換成PCIE格式的信號傳遞給接收端。接收端將其還原為AXI數據包,發送到網絡上。在當前時刻,由于AW1占據轉換器中的緩沖區,B2無法跨片,而只有等到B1返回,AW1才會從緩沖區中離開。在另一側PCIE中,情況類似。占據緩沖區的AW2阻擋了B1跨片,等到B2返回才能讓出緩沖區。這就構成了AW1→B1→AW2→B2→AW1的循環,導致死鎖。

圖4 橋接死鎖圖示
橋接死鎖發生的拓撲條件和路由條件包括:
拓撲:存在協議轉換的通路,并且協議轉換模塊為請求和響應提供統一的緩沖區。
路由:存在大量而跨片請求。
本節討論死鎖避免的方法。
寫通道雙重路徑死鎖可以通過軟件的方式避免。軟件編程人員需要控制數據包的類型,保證任何時間內都只有Cache的訪問或Uncache的訪問。兩種模式切換時需要保證所有已經發出去的請求都已完成。也可以通過硬件的方式避免,例如控制每個寫請求都只包含一個寫數據。但這會影響協議的性能。
讀通道雙重路徑死鎖可以通過軟件或硬件的方式避免。軟件上可以將控制請求的長度,用多個短請求代替單個長請求。硬件上可以在模塊接入互連網絡之前增加拆包模塊,提前拆分數據包。
環形通道死鎖需要硬件上的解決方案,單純軟件的方案可能過于復雜。各個模塊單獨設計時保證其內部無死鎖,死鎖是在模塊集成和修改時引入的,這說明需要重新設計集成方案。在上述案例中,解決方法是去掉在NoC-2處的回環設計,在NoC-1中處理相關的地址路由。也可以在環中加入流控機制,避免通道中所有緩沖區被占滿。
橋接死鎖也需要硬件上的解決方案。PCIE控制器需要為AXI的請求和響應準備不同的緩沖區,并賦予響應更高的優先級。該方法適應與所有涉及跨片連接兩個AXI網絡的接口。
對于上述死鎖,單純增加緩沖區的數量并不能解決死鎖,這是Dally定理已經說明的。問題不在于緩沖區的數量,而在于緩沖區之間的依賴關系。
基于CDG的死鎖定位方法需要同時考慮AXI的5個通道之間的依賴關系,基于UVM隨機驗證的方法則需要大量的人力和時間。因此迫切需要一種NoC中潛在死鎖的定位方法,并要求該方法可以根據設計進度隨時反饋。
本節基于上述3類死鎖的拓撲特征和路由特征,提出一種輕量級的檢測方式,用于快速發現模塊化SoC中這3種類型的死鎖。
本文所提死鎖定位算法,名為先拓撲后路由(FTLR)算法。本算法將死鎖的定位過程分為兩個階段。第1階段該算法進行拓撲分析,標識可能造成死鎖的數據通路。第2階段該算法進行路由分析,并與拓撲路由進行匹配。如果匹配成功則說明存在潛在死鎖。下面介紹本算法的細節。
第1階段,FTLR將有向圖G作為輸入,輸出中間結果集M。G中的點是NoC中模塊或接口,從模塊A直接連接到模塊B的通道表示為從點A到點B的有向邊。中間結果集M中記錄著從任一Master接口到任一Slave接口的所有數據通路,并且特殊標記其中的拆包模塊和橋接模塊。在這一階段,FTLR使用廣度優先算法處理圖G。
第2階段,FTLR處理路由規則集F和中間結果集M。F通常以表格的形式提供,規定了不同地址空間、不同類型請求的終點設備和訪問路徑。FTLR在F和M中進行匹配,檢查M中路由能否被同時激活,或滿足其他死鎖發生條件。如果匹配成功,則定位到死鎖。FTLR算法的流程整理在算法1中。
圖G可以很容易地在NoC的設計文檔中找到,并且可以隨設計改動而迅速調整。FTLR第1階段的算法復雜度為O(N2),第2階段的路由表F規模也為O(N2),其中N為圖G的頂點數。在實際場景中,由于設計階段復雜性限制和制造階段成本限制,芯片中的組件數不會很大,N通常會被控制在30以內。這一點也可以從表1中得到體現。因此盡管FTLR算法的復雜度為O(N2),也完全可以在幾秒鐘的時間內完成,這在以年計算的芯片設計周期中占比微乎其微。
將本文所提檢測方法應用于MSoC的互連網絡無死鎖驗證中,并與CDG和UVM的方法做對比。UVM采用全系統隨機驗證,分批進行4 500輪測試,每輪測試攻擊發送125 000數據包,數據包總量超過 5.6×109次。最終發現雙重路徑死鎖3處、環形通路型死鎖1處以及橋接型死鎖2處。測試結果整理在表3中。

表3 互連網絡死鎖檢測方法對比
在死鎖覆蓋率方面,UVM和FTLR方法可以檢測出所有的死鎖類型,CDG方法無法覆蓋雙重通道死鎖和橋接死鎖。在檢測效率方面,CDG和FTLR方法可以同時報告所有死鎖,而UVM需要逐個報告,并且需要人工調試波形才能發現死鎖。在建模難度方面,CDG方法最為復雜,并且很容易出錯;UVM難度一般,只需要RTL代碼即可;而FTLR只需要根據MSoC的芯片架構圖就可以完成建模,最為簡單。在檢測時間方面,UVM方法需要長時間的運行測試并且需要人工調試波形,因此可能需要幾周的時間;CDG方法需要復雜的建模,因此可能需要幾天的時間用于建模;而FTLR方法只需要幾個小時就可以完成建模到檢測的全過程。本文方法大幅減少了驗證時間和人力投入,并且可以隨時根據網絡結構進行調整,具有一定的靈活性。
FTLR算法可以有效地發現基于AXI的互連網絡中潛在的死鎖。相比傳統的驗證方法,基于拓撲特征和路由特征的FTLR算法發現死鎖的速度更快、成本更低、結果更全,可以提高互連網絡的魯棒性,并且可以在SoC構建過程中反復執行,隨時發現問題。

算法1 FTLR算法
模塊化SoC的設計理念正在被越來越多的處理器廠商使用,這給基于AXI的互連網絡帶來了新的無死鎖挑戰。首先,AXI協議不同于傳統的蟲洞路由,需要對原有理論的擴展。其次,多種功能的組件在集成時經常會發生改動和調整,這可能在原本無死鎖的互連子網絡之間引入新的死鎖,為此需要全程的、增量的、靈活的監控方案。最后,為了避免在多芯片跨片互連或2.5D集成時引入協議級死鎖,協議轉換、拆包模塊等特殊組件需要預留足夠的資源。
本文基于真實異構SoC構建了死鎖分析模型MSoC,系統性地研究了基于AXI的互連網絡在模塊化集成過程中可能引入的潛在死鎖。本文提出了3種死鎖,即雙重通道死鎖、環形通道死鎖和橋接死鎖,研究了它們的拓撲特征和路由特征,并提出了對應的死鎖避免方案。本文進一步構建了自動化的定位工具全面排查和監控互連網絡潛在的死鎖問題,極大地縮短了驗證時間、提高了驗證效率。本文擴展了傳統的Dally理論,填補了AXI互連無死鎖理論的空白,為模塊化SoC的設計提供了幫助。