一、NoC前世今生
NoC是相對(duì)于SoC的新一代片上互連技術(shù),從計(jì)算機(jī)發(fā)展的歷史可以看到NoC 必將是SoC 之后的下一代主流技術(shù),SoC 通常指在單一芯片上實(shí)現(xiàn)的數(shù)字計(jì)算機(jī)系統(tǒng),總線結(jié)構(gòu)是該系統(tǒng)的主要特征,由于其可以提供高性能的互連而被廣泛運(yùn)用。然而隨著半導(dǎo)體工藝技術(shù)的持續(xù)發(fā)展,出現(xiàn)了一些與總線相關(guān)的問題:總線地址空間有限,由于使用單一時(shí)鐘整個(gè)芯片均同步的限制。一個(gè)典型的SoC系統(tǒng)主要包含以下結(jié)構(gòu):
A.?至少一個(gè)微控制器(MCU)或微處理器(MPU)或數(shù)字信號(hào)處理器(DSP),但是也可以有多個(gè)處理器內(nèi)核;
B.?存儲(chǔ)器可以是RAM、ROM、EEPROM和閃存中的一種或多種;
C.?用于提供時(shí)間脈沖信號(hào)的振蕩器和鎖相環(huán)電路;
D.?由計(jì)數(shù)器和計(jì)時(shí)器、電源電路組成的外設(shè);
E.?不同標(biāo)準(zhǔn)的連線接口,如USB、火線、以太網(wǎng)、通用異步收發(fā)和序列周邊接口等;
F.?用于在數(shù)字信號(hào)和模擬信號(hào)之間轉(zhuǎn)換的ADC/DAC;
G.?電壓調(diào)理電路及穩(wěn)壓器;
目前的SOC架構(gòu)各個(gè)組件之間的通訊還是以AMBA總線為主,AMBA包含AHB/ASB/APB/AXI這四種主要的總線協(xié)議,而這些協(xié)議無一例外的都是基于中斷和仲裁機(jī)制的。然而,隨著商業(yè)應(yīng)用開始不斷追求指令運(yùn)行并存性和預(yù)測(cè)性,芯片中集成的核數(shù)目將不斷增多,基于總線架構(gòu)的SoC將逐漸難以滿足不斷增長(zhǎng)的計(jì)算需求。其主要表現(xiàn)為:
A.?可擴(kuò)展性差:SoC系統(tǒng)設(shè)計(jì)是從系統(tǒng)需求分析開始,確定硬件系統(tǒng)中的模塊。為了使系統(tǒng)能夠正確工作,SoC中各物理模塊在芯片上的位置是相對(duì)固定的;一旦在物理設(shè)計(jì)完畢后,要進(jìn)行修改,實(shí)際上就有可能是一次重新設(shè)計(jì)的過程;另一方面,基于總線架構(gòu)的SoC,由于總線架構(gòu)固有的仲裁通信機(jī)制,即同一時(shí)刻只能有一對(duì)處理器核心進(jìn)行通信,限制了可以在其上擴(kuò)展的處理器核心的數(shù)量;
B.?平均通信效率低:SoC中采用基于獨(dú)占機(jī)制的總線架構(gòu),其各個(gè)功能模塊只有在獲得總線控制權(quán)后才能和系統(tǒng)中其他模塊進(jìn)行通信;從整體來看,一個(gè)模塊取得總線仲裁權(quán)進(jìn)行通信時(shí),系統(tǒng)中的其他模塊必須等待,直到總線空閑;
C.?單一時(shí)鐘同步問題:總線結(jié)構(gòu)要求全局同步,然而隨著工藝特征尺寸越來越小,工作頻率迅速上升,達(dá)到10GHz以后,連線延時(shí)造成的影響將嚴(yán)重到無法設(shè)計(jì)全局時(shí)鐘樹的程度,而且由于時(shí)鐘網(wǎng)絡(luò)龐大,其功耗將占據(jù)芯片總功耗的大部分; 二、AMD Versal器件NoC介紹
AMD Versal系列器件上的NoC網(wǎng)絡(luò)主要架構(gòu)如下圖所示:
AMD Versal可編程芯片網(wǎng)絡(luò)(NoC)是使用的互連網(wǎng)絡(luò),用于在可編程邏輯(PL)、處理系統(tǒng)(PS)中的IP端點(diǎn)之間共享數(shù)據(jù)。這種設(shè)備范圍的基礎(chǔ)設(shè)施是高速、集成化并帶有專用開關(guān)的數(shù)據(jù)路徑。可以對(duì)NoC進(jìn)行邏輯配置以表示復(fù)雜的拓?fù)?,使用一系列水平和垂直路徑以及一組可定制的體系結(jié)構(gòu)。
NoC是為可擴(kuò)展性而設(shè)計(jì)的。它是由一系列相互連接的水平(HNoC)和垂直(VNoC)路徑,由一組可定制的硬件實(shí)現(xiàn)支持??梢砸圆煌绞脚渲玫慕M件,以滿足設(shè)計(jì)時(shí)間,速度和邏輯利用需求。HNoC和VNoC是連接集成塊的專用高帶寬路徑,在處理器系統(tǒng)和可編程邏輯(PL)之間不需要消耗大量可編程邏輯的數(shù)量。
NoC支持端到端服務(wù)質(zhì)量(QoS),以有效地管理事務(wù)和平衡每個(gè)流量流的競(jìng)爭(zhēng)延遲和帶寬需求。NoC組件包括NoC主單元(NMU)、NoC從單元(NSU)和NoC包交換機(jī)(NPS)和NoC模間橋(NIDB)。NMU為交通入口點(diǎn),而NSU是交通出口點(diǎn)。所有ip都有一定數(shù)量的主連接和從連接。NIDB將兩個(gè)超級(jí)邏輯區(qū)域(slr)連接在一起,提供芯片之間的高帶寬。NPS是橫條交換機(jī),用于完全形成網(wǎng)絡(luò)。
AMD Versal系列器件的NoC支持如下特性:
A.?PL對(duì)PL通信;
B.?PL到CIPS的通信;
C.?CIPS到PL通信;
D.?CIPS到DDR內(nèi)存通信;
E.?CIPS到AI引擎的通信;
F.?高帶寬數(shù)據(jù)傳輸;
G.?支持標(biāo)準(zhǔn)的AXI4接口到NoC,支持AXI4-Lite需要軟橋;
H.?支持時(shí)鐘域交叉;
I.?內(nèi)部寄存器編程互連編程N(yùn)oC寄存器;
J.?多種路由選擇:基于物理地址;根據(jù)目的接口設(shè)置;虛擬地址支持;
K.?通過強(qiáng)化SSIT橋接實(shí)現(xiàn)芯片間連接;
L.?在SSIT配置中,從源芯片PMC傳輸比特流到目標(biāo)芯片PMC;
M.?可編程路由表的負(fù)載平衡和死鎖避免;
N.?調(diào)試和性能分析功能;
O.?端到端數(shù)據(jù)保護(hù)的可靠性,可用性,可服務(wù)性(RAS);
P.?在整個(gè)NoC中有效地支持虛擬通道和服務(wù)質(zhì)量(QoS),管理事務(wù)并平衡每個(gè)事務(wù)的競(jìng)爭(zhēng)延遲和帶寬需求;
Q.?NoC連接硬件(或接入點(diǎn))使用主從,內(nèi)存映射配置。NoC上最基本的連接由一個(gè)主連接組成到使用單個(gè)分組交換機(jī)的單個(gè)從機(jī)。使用這種方法,主機(jī)獲得AXI信息并將其打包,以便通過分組交換機(jī)在NoC上傳輸?shù)綇臋C(jī)的slave將數(shù)據(jù)包分解為傳遞給連接后的AXI信息。為了實(shí)現(xiàn)這一點(diǎn),一個(gè)NoC接入點(diǎn)管理所有的時(shí)鐘域交叉、交換和AXI和NoC端之間的數(shù)據(jù)緩沖,反之亦然;
R.?支持內(nèi)存映射事務(wù)的糾錯(cuò)碼(ECC),不支持流;
NoC功能模塊如下:
A.?NoC Master Unit (NMU):用于連接主控節(jié)點(diǎn)和NoC;
B.?NoC Slave Unit (NSU):用于連接從設(shè)備到NoC;
C.?NoC分組交換機(jī)(NPS):用于沿NoC和執(zhí)行傳輸和分組交換設(shè)置和使用虛擬通道NMU和NSU組件通過標(biāo)準(zhǔn)從可編程邏輯端訪問;
NoC的AXI4使用以下基本的AXI特性:
A.?支持AXI4和AXI4- stream;
B.?可配置AXI接口寬度:32、64、128、256或512位接口;
C.?64位尋址;
D.?AXI排他訪問的處理;
在AMD Versal系列器件中將NoC整合到了專用的硬化DDR/HBM控制器中,可以更為方便的對(duì)存儲(chǔ)器數(shù)據(jù)流進(jìn)行分配。其中HBM NoC結(jié)構(gòu)可以參見下圖:
三、AMD Versal NoC IP功能介紹
AMD Versal NoC IP主要包括AXI/DDR Memory Controller/HBM Memory Controller/AXI Stream幾種基礎(chǔ)模式,可以根據(jù)速率/帶寬的需求進(jìn)行自由組合和選擇。本文主要基于AXI接口的NoC IP進(jìn)行簡(jiǎn)要介紹,基本界面如下圖所示:
對(duì)界面上幾個(gè)主要選項(xiàng)做如下說明:
AXI接口:
A. AXI Slave接口數(shù)量:NMU (NoCingress)接口的數(shù); B. AXI Master Interface數(shù)量:NSU (NoC出口)端口數(shù)量; C. AXI時(shí)鐘的數(shù)量:這是將被跨使用的獨(dú)立AXI時(shí)鐘的數(shù)量,NMU和NSU端口的集合,基于接口輸入相關(guān)時(shí)鐘的工具將推斷每個(gè)接口的時(shí)鐘關(guān)聯(lián);
Inter-NoC接口:
A. Inter-NoC SlaveInterface的數(shù)量:表示Inter-NoC Interface ingress (INI)的數(shù)量;
B. Inter-NoC MasterInterface數(shù)量:Inter-NoC Interface出接口數(shù)量(INI)端口;
內(nèi)存控制器-DDR4/LPDDR4:
A. 內(nèi)存控制器數(shù)量:已連接的集成內(nèi)存控制器數(shù)量這個(gè)axi_noc實(shí)例,必須為0、1、2或4,2或4表示內(nèi)存控制器交錯(cuò);
B. Memory ControllerPorts數(shù)量:內(nèi)存控制器中可連接的MC端口數(shù)量連接選項(xiàng)卡,必須是0-4,這對(duì)應(yīng)于已啟用的NSU連接數(shù);
C.交錯(cuò)大?。寒?dāng)內(nèi)存控制器交錯(cuò)時(shí),設(shè)置每個(gè)字節(jié)的數(shù)量交錯(cuò),必須是{128,256,512,1024,2048,4096}中的一個(gè);
D. DDR地址區(qū)域0/1:將DDRMC地址與統(tǒng)一的系統(tǒng)地址進(jìn)行映射通用設(shè)備的地圖,有關(guān)更多信息,請(qǐng)參閱系統(tǒng)地址映射;
對(duì)于input和output頁(yè)面的功能主要是配置NoC的互聯(lián)信息,整體界面如下圖所示:
A. AXI輸入:設(shè)置該實(shí)例的AXI輸入的數(shù)量,并配置每個(gè)輸入的配置選項(xiàng)有如下連接對(duì)象:
? AIE:來自AI引擎陣列;
? PS非相干:來自PS的非相干接口之一;
? PS PMC:來自PS的平臺(tái)管理控制器;
? PS LPD:來自低功耗域;
? PL:來自可編程邏輯結(jié)構(gòu);
? PS Cache Coherent:從PS的一個(gè)Cache Coherent接口;
? PS PCIe:從PS的PCIe接口;
B. 奇偶校驗(yàn):?jiǎn)⒂脧腁XI主機(jī)到NMU的連接的奇偶校驗(yàn),可用的奇偶校驗(yàn)選項(xiàng)有:
? None:不校驗(yàn);
? 地址:AXI地址奇偶校驗(yàn)啟用;
? 數(shù)據(jù):AXI數(shù)據(jù)奇偶校驗(yàn)啟用;
? 地址和數(shù)據(jù):?jiǎn)⒂昧薃XI地址和數(shù)據(jù)檢查;
奇偶校驗(yàn)位的對(duì)應(yīng)關(guān)系如下表所示:
注意:奇偶校驗(yàn)只對(duì)連接到PL的輸入有效,從PS或AI引擎不支持奇偶校驗(yàn)。
C. Inter-NoC輸入:使用Inter-NoC接口指定來自其他axi_noc實(shí)例的輸入(INI);
您可以選擇設(shè)置INI連接策略如下:
? 自動(dòng):IP集成商決定正確的策略。這是默認(rèn)設(shè)置;
? 單驅(qū)動(dòng):只有一個(gè)驅(qū)動(dòng),可能有多個(gè)負(fù)載;
? 單負(fù)載:有一個(gè)負(fù)載和可能的多個(gè)驅(qū)動(dòng)程序;
D. AXI輸出:設(shè)置該實(shí)例的AXI輸出數(shù)量并配置每個(gè)輸出,配置選項(xiàng)有:
? 連接對(duì)象;
? PL:到可編程邏輯結(jié)構(gòu);
? AIE:連接到AI引擎陣列;
? PS Cache CoherentVirtual:到PS的一個(gè)Cache Coherent接口,路由到此NSU端主機(jī)使用固定目的地地址路由所有從NMU到NSU的事務(wù),此設(shè)置適用于使用功能在SMMU-400和/或CCI-500;
? PS Cache CoherentPhysical:到PS的Cache Coherent接口之一,All PL路由到該NSU端口的主機(jī)使用地址解碼尋址來路由事務(wù),此設(shè)置適用于以PS中的端點(diǎn)從機(jī)為目標(biāo)的端點(diǎn)主機(jī)并不適用于使用CCI-500中的特性的端點(diǎn)主機(jī);
? PS Non-CoherentVirtual:指向PS上的一個(gè)非相干接口路由到此NSU端口的主機(jī)使用固定目的地地址路由所有從NMU到NSU的事務(wù);
? PS Non-CoherentPhysical:到PS的一個(gè)非相干接口路由到該NSU端口的主機(jī)使用地址解碼尋址來路由事務(wù),此設(shè)置適用于以PS中的端點(diǎn)從服務(wù)器為目標(biāo)的端點(diǎn)主服務(wù)器;
? PS PCIe:連接到PS的PCIe接口;
? PS PMC:到PS的平臺(tái)管理控制器;
? 奇偶校驗(yàn):?jiǎn)⒂脧腘SU到AXI slave的連接的奇偶校驗(yàn)使用奇偶校驗(yàn),奇偶校驗(yàn)選項(xiàng)與輸入選項(xiàng)卡中描述的選項(xiàng)相同;
奇偶校驗(yàn)位的映射說明如下表所示:
注意:奇偶校驗(yàn)只對(duì)連接到PL的輸出有效,對(duì)于PS或AI引擎無效;
E. Inter-NoC輸出:使用Inter-NoC接口指定輸出到其他axi_noc實(shí)例(INI);
您可以選擇設(shè)置INI連接策略如下:
? 自動(dòng):允許IP集成商確定正確的策略;
? 單驅(qū)動(dòng)(NMU):負(fù)載(NSU/MC)擁有PR路徑并具有QoS;
? 單負(fù)載(NSU/MC):NMU (Driver)擁有PR路徑和QoS;
對(duì)于Connectivity頁(yè)面來說主要是用于配置AXI接口的Slave和Master的連接關(guān)系,就不再詳述了,頁(yè)面布局如下圖所示:
對(duì)于QoS頁(yè)面來說主要是配置NoC的QoS特性,分為基礎(chǔ)QOS和高級(jí)QOS配置兩種,整體界面如下圖所示:
A. QoS選項(xiàng)卡的第一列顯示了定義的連接的樹形結(jié)構(gòu)連接選項(xiàng)卡;每個(gè)樹的頂部(左對(duì)齊的端口名稱)是NoC入口端口;每個(gè)入口端口下面顯示的是相關(guān)行對(duì)于每個(gè)連接的出口端口。
B. 第二列定義讀流量的分類:?取值為L(zhǎng)OW_LATENCY和BEST_EFFORT(默認(rèn)),流量類適用于所有連接源自給定的入口端口;
C. 第三列定義寫流量類別,取值包括ISOCHRONOUS和BEST_EFFORT,寫流量不支持LOW_LATENCY,寫流量類適用于從給定入口端口發(fā)起的所有連接;
D. 第四列表示該NoC實(shí)例是否擁有給定路徑的QoS設(shè)置:NoC路徑可以使用INI遍歷多個(gè)NoC實(shí)例,QoS設(shè)置取自擁有QoS和路徑的NoC實(shí)例,當(dāng)NoC實(shí)例不擁有QoS時(shí),QoS將被忽略的路徑,所有權(quán)正處于從NMU或strategy=Driver者到NSU, MC,或strategy=Load,如果值為“pending”,則表示在此期間將計(jì)算所有權(quán)驗(yàn)證,或單擊上面的Run NoC drc按鈕,對(duì)于值“error”,請(qǐng)驗(yàn)證或單擊單擊上面的Run NoC drc按鈕,在Tcl控制臺(tái)和消息窗口中查看錯(cuò)誤詳細(xì)信息;
E. 第五列為讀帶寬,單位為MB/s,允許取值范圍為0 (不接受讀流量)到NoC物理通道的最大數(shù)據(jù)帶寬;
F. 第六列為寫帶寬,單位為MB/s,允許的值范圍從0(不接受寫流量)到NoC物理通道的最大數(shù)據(jù)帶寬;
擁有QoS和路徑:
NoC路徑可以使用INI遍歷多個(gè)NoC實(shí)例,QoS設(shè)置取自擁有QoS和Path的NoC實(shí)例,當(dāng)NoC不擁有QoS時(shí),將忽略QoS路徑;所有權(quán)處于從NMU或strategy=Driver程序到NSU, MC或的過渡階段strategy=Load,值“pending”意味著所有權(quán)將在驗(yàn)證期間計(jì)算,或者通過單擊運(yùn)行上面的NoC DRCs按鈕,若值為“error”,請(qǐng)驗(yàn)證或單擊“Run NoC drc”按鈕在Tcl控制臺(tái)和消息窗口中查看錯(cuò)誤詳細(xì)信息。
注意:如果“擁有QoS”和“路徑”為“否”,則所有設(shè)置BW和流量分類將被忽略。
運(yùn)行NoC drc:
在整個(gè)設(shè)計(jì)中運(yùn)行NoC drc,錯(cuò)誤會(huì)在Tcl控制臺(tái)和消息窗口中列出,通過計(jì)算所有權(quán)來更新'Owns QoS'列中的'pending'條目設(shè)計(jì),NoC路徑可以使用INI遍歷多個(gè)NoC實(shí)例,采取QoS設(shè)置從擁有QoS和Path的NoC實(shí)例獲取,當(dāng)NoC沒有忽略QoS時(shí),QoS將被忽略擁有這條路徑;所有權(quán)正處于從NMU或strategy=Driver者到NSU, MC,或strategy=Load。
對(duì)于Address Remap頁(yè)面來說主要是配置輸入輸出的地址映射關(guān)系,有一些地址規(guī)則會(huì)詳細(xì)說明,Address Remap頁(yè)面如下圖所示:
A. IncomingSlave Interface:從下拉菜單中選擇從端口(NMU)存在需要重新映射的傳入地址;
B. 出主接口:從下拉菜單中選擇主接口(NSU)輸出重新映射的地址;
C. 入站地址:從站發(fā)送的起始地址,需要重新映射;
D. 發(fā)送地址:發(fā)送地址為映射后的地址,這是第一個(gè)地址在重新映射開始的地方;
E. 范圍:要訪問的地址空間的總范圍;
F. 重新映射規(guī)則:
? 范圍必須最小為64K,必須為2的整數(shù)次方;
? 范圍內(nèi)的入地址位必須為零:incoming_address& (range-1)?== 0;
? 示例:對(duì)于由主控機(jī)尋址的32位4G范圍;
? 輸出地址范圍內(nèi)的位必須為零:output_address& (range-1) == 0;
四、DDR4/LPDDR4 NoC IP實(shí)戰(zhàn)
在 Versal新一代ACAP器件上,除了延續(xù)之前Ultrascale/Ultrascale+系列器件上已有的DDR4IP之外,還配置了最新的DDR4/LPDDR4 硬核控制器(NoC IP)。它的性能更高,并且不額外占用其他的可編程邏輯資源(PL),使用它的時(shí)候,在硬件設(shè)計(jì)方面和設(shè)計(jì)流程上,和之前的軟核控制器(DDR4 IP)也有著很大的不同。今天我們來介紹一下I/O planning方面的設(shè)計(jì)考慮和實(shí)現(xiàn)流程。
我們首先要新建一個(gè)工程并添加CISP IP core,這樣我們才能順利的開始block design的設(shè)計(jì)工作。
新建如圖基于VMK180的vivado工程'edt_versal_noc':
新建一個(gè)BlockDesign,這里我們添加CISP ip core (系統(tǒng)默認(rèn)為versal_cips_0),并且run design automation讓vivado對(duì)ip核做自動(dòng)初始化。這里我們使用CISP IP的默認(rèn)配置,不進(jìn)行更改。
自動(dòng)化后雙擊versal_cips_0框圖,進(jìn)入Re-customize IP向?qū)?,將Board Interface設(shè)置成Custom, 如圖所示:
雙擊CIPS打開配置向?qū)д业絇S PMC配置NoC頁(yè), 啟動(dòng)PS Master Interfaces如圖所示:
最后點(diǎn)擊Finish更新CIPS的配置。
接著添加另外一個(gè)IP核 AXI NoC,RunBlock Automation, 配置如下:
在block design中添加NoC IP。
在IP wizard中,根據(jù)memory 容量,位寬,帶寬等要求完成相關(guān)配置。
總體上來講,DDR4/LPDDR4的管腳有2種分配模式—Flipped和Non-flipped,模式的選擇可以通過使能或者關(guān)閉NoC IP中 “Flipped pinout”的選項(xiàng)來實(shí)現(xiàn)。
Versal器件上每個(gè)NoC IP對(duì)應(yīng)3個(gè)IO bank的管腳,它們都位于同一個(gè)triplet之中。一個(gè)NoC IP對(duì)應(yīng)的所有DDR4/LPDDR4接口管腳都必須放置在這3個(gè)IO bank之中。在對(duì)block design進(jìn)行綜合之后,打開synthesized design,在I/O ports窗口中點(diǎn)擊 “Open advanced I/O planner” ,按照bank或者nibble為單位指定所有管腳的位置。
在此之后,地址、控制和時(shí)鐘管腳的位置就被固定了下來。數(shù)據(jù)管腳在Byte以內(nèi)和Byte之間可以進(jìn)行微調(diào),這樣一個(gè)NoC的block design實(shí)例工程就搭建完成了。
審核編輯:劉清
評(píng)論
查看更多