專利名稱:多個HT總線到單個PCIe總線的橋接裝置及其方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機領(lǐng)域,尤其涉及多個HT總線到單個PCIe總線的橋接裝置及其 方法。
背景技術(shù):
PCI Express總線技術(shù)簡稱PCIe,是當前主流的總線和接口標準,它原來的名稱 為“3GI0”,是由Intel提出,后交由PCI-SIG(PCI特殊興趣組織)認證發(fā)布后才改名為 “PCI-Express”。這個新標準將全面取代原來的PCI和AGP總線,成為新一代計算機設(shè)備的 標準接口。PCIe總線采用目前業(yè)內(nèi)流行的點對點串行通信方式,基于包進行數(shù)據(jù)傳輸,從根 本上解決了原來PCI并行總線的帶寬和擴展性問題,在保證對PCI的兼容性的同時,還增加 了很多新的特性,如完善的流控機制,鏈路可靠性,電源管理,多虛通道支持和復雜而靈活 的錯誤管理。以PCIe Genl為例,Xl帶寬為2. 5Gbps (雙向5Gbps),去掉8b/10b編碼的開 銷,實際帶寬達到了 2Gbps,對應(yīng)X8的鏈路總帶寬為16Gbps,最大支持擴展到X32,在新的 PCIeGen2協(xié)議中,Xl帶寬更是達到了 5Gbps,其提供的帶寬完全能夠滿足當前計算的絕大 多數(shù)需求。而Hyper Transport總線技術(shù)(簡稱HT),是由AMD公司提出的新一代總線技術(shù)。 從技術(shù)層面講,HT與PCIe都采用了點對點串行通信方式,也是基于包的數(shù)據(jù)傳輸,很多新 特性,隨著標準的不斷演化,HT和PCIe都有相應(yīng)的支持。但是HT與PCIe協(xié)議上也有很多 大的區(qū)別,HT采用小包傳輸方式,最大支持傳輸64字節(jié)數(shù)據(jù),而PCIe支持最大4K字節(jié)數(shù) 據(jù),另外,HT的回復包支持亂序,而PCIe規(guī)范要求回復包嚴格保序??紤]到PCIe作為intel主推的新一代標準,采用PCIe作為接口的計算設(shè)備越來 越多,有網(wǎng)卡,交換機,顯卡(包括CUDA節(jié)點),各種數(shù)據(jù)采集卡等等。現(xiàn)在主流的計算機主 板都提供了 PCIe總線接口,可以通過主板上的南北橋芯片來配置和訪問PCIe設(shè)備。在高 性能計算環(huán)境下,單個節(jié)點內(nèi)就會包含多個處理器,在這種情況下,需要一個更加靈活的裝 置使得多個處理器能夠共享訪問PCIe外設(shè),充分發(fā)揮外設(shè)能力,并降低系統(tǒng)成本。這樣,如何高效的利用PCIe的高帶寬低延遲特性,讓多個HT接口總線處理器訪問 單個PCIe設(shè)備成為需要解決的技術(shù)問題。
發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明提供了多個HT總線到單個PCIe總線的橋接裝置及其 方法,能夠?qū)崿F(xiàn)多個處理器能夠共享訪問PCIe外設(shè)裝置。本發(fā)明公開了一種多個HT總線到單個PCIe總線的橋接裝置,所述橋接裝置包括多個連接HT總線的HT端口和一個連接PCIe總線的PCIe端 Π ;所述橋接裝置,用于均分PCIe請求序號,使用全局地址映射表和均分的請求序號實現(xiàn)HT端口和PCIe端口之間數(shù)據(jù)的傳送;所述全局地址映射表記錄每個HT端口和PCIe端口所占用的地址范圍;所述均分PCIe請求序號為對于各HT端口,分配用于所述HT端口使用的PCIe請 求序號數(shù)目相同,并且分配的PCIe請求序號不重疊。所述HT端口包括一個主HT端口和多個從HT端口;主HT端口相連的處理器使用PCIe設(shè)備并配置全局地址映射表中PCIe端口對應(yīng) 的地址空間和主HT端口對應(yīng)的地址空間;從HT端口相連的處理器使用PCIe設(shè)備并配置全 局地址映射表中從HT端口對應(yīng)的地址空間;PCIe端口連接PCIe總線的根設(shè)備。所述橋接裝置包括HT控制器模塊,所述HT控制器模塊分為主HT控制器模塊和從HT控制器模塊,主HT控制器模塊同主HT端口連接,用于實現(xiàn)HT終端設(shè)備功能;從HT控制器模塊同從HT端口連接,用于實現(xiàn)HT終端設(shè)備功能。所述橋接裝置包括HT控制器模塊、PCIe控制器模塊、HT2PCIE轉(zhuǎn)換模塊、PCIE2HT 轉(zhuǎn)換模塊、PCIE樹形交換模塊、以及全局地址映射表模塊;每個HT控制器模塊連接對應(yīng)的 HT2PCIE轉(zhuǎn)換模塊和PCIE2HT轉(zhuǎn)換模塊;HT控制器模塊,同HT端口連接,用于從所述HT端口接收數(shù)據(jù)包,將數(shù)據(jù)包發(fā)送給 HT2PCIE轉(zhuǎn)換模塊,并將接收的由PCIE2HT轉(zhuǎn)換模塊發(fā)送的數(shù)據(jù)包從連接的HT端口發(fā)送到 HT總線;HT2PCIE轉(zhuǎn)換模塊,用于從HT控制器模塊接收數(shù)據(jù)包,在接收的數(shù)據(jù)包為需要請 求序號的請求時,從為連接的HT端口分配的PCIe請求序號中為所述請求分配PCIe請求序 號,存儲所述請求的HT請求序號,在PCIE2HT轉(zhuǎn)換模塊接收的數(shù)據(jù)包為Non-post請求時, 從PCIE2HT轉(zhuǎn)換模塊獲得并記錄Non-post請求的包含PCIe請求序號的包頭參數(shù);然后完 成所述數(shù)據(jù)包從HT協(xié)議到PCIe協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給PCIE樹形交換模 塊;PCIE2HT轉(zhuǎn)換模塊,用于從PCIE樹形交換模塊接收數(shù)據(jù)包,在接收的數(shù)據(jù)包為請 求響應(yīng)時,讀取所述數(shù)據(jù)包的PCIe請求序號對應(yīng)的HT請求序號,在接收的數(shù)據(jù)包為需要請 求序號的請求時,為所述請求分配HT請求序號,通知HT2PCIE轉(zhuǎn)換模塊記錄包頭信息;然后 完成所述數(shù)據(jù)包從PCIe協(xié)議到HT協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給所述HT控制器模 塊;PCIE樹形交換模塊,用于將多個HT端口轉(zhuǎn)換后的PCIe格式數(shù)據(jù)包進行仲裁,發(fā)送 給PCIe控制器模塊,并依據(jù)全局地址映射表將接收的PCIe控制器模塊發(fā)送的數(shù)據(jù)包轉(zhuǎn)發(fā) 給對應(yīng)HT端口的PCIE2HT轉(zhuǎn)換模塊;PCIe控制器模塊,用于將接收的數(shù)據(jù)包在PCIE樹形交換模塊和PCIe總線間交 換;全局地址映射表模塊,用于存儲所述全局地址映射表。HT2PCIE轉(zhuǎn)換模塊進一步包括HT2PCIE完成包拼接存儲模塊、HT2PCIE完成包拼接 控制模塊、HT2PCIE完成包傳輸模塊、HT2PCIE Post包生成模塊、下行HT Srctag管理模塊、 PCIe Srctag管理模塊、以及HT2PCIE Non-post包生成模塊,
8
HT2PCIE完成包拼接存儲模塊,用于在接收的數(shù)據(jù)包為請求響應(yīng)時,依據(jù)HT2PCIE 完成包拼接控制模塊記錄的請求響應(yīng)對應(yīng)的原始請求的信息將請求響應(yīng)的數(shù)據(jù)包拼合為 一個完整的PCIe完成包的數(shù)據(jù);HT2PCIE完成包拼接控制模塊,用于在PCIE2HT轉(zhuǎn)換模塊接收的數(shù)據(jù)包為讀請求 響應(yīng)時,從PCIE2HT轉(zhuǎn)換模塊獲得并記錄讀請求的包含PCIe請求序號的包頭參數(shù);HT2PCIE完成包傳輸模塊,用于從HT2PCIE完成包拼接存儲模塊中讀取PCIe完成 包的數(shù)據(jù),從HT2PCIE完成包拼接控制模塊中讀取PCIe完成包頭,生成PCIe完成數(shù)據(jù)包, 發(fā)送給PCIE樹形交換模塊;HT2PCIE Post包生成模塊,用于將接收的HT總線的Post寫請求轉(zhuǎn)換為PCIe總線 的Post寫請求,并將PCIe總線的Post寫請求發(fā)送給PCIE樹形交換模塊;下行HT Srctag管理模塊,用于在接收到HT Non-post請求時,存儲所述請求攜帶 的HT請求序號;PCIe Srctag管理模塊,用于分配需要的PCIe請求序號,回收使用完的PCIe請求 序號;HT2PCIE Non-post包生成模塊,用于依據(jù)分配的PCIe請求序號,將HTNon-post讀 或?qū)懻埱筠D(zhuǎn)換為PCIe Non-post讀或?qū)懻埱?,發(fā)送給PCIE樹形交換模塊。所述HT2PCIE完成包拼接存儲模塊包含PCIe完成包拼攢緩沖區(qū),所述PCIe完成 包拼攢緩沖區(qū)被劃分為多個區(qū)域,區(qū)域的數(shù)目與PCIe請求序號數(shù)目相同,每個區(qū)域的大小 為PCIe總線最大包長。所述HT2PCIE完成包拼接控制模塊包含拼接控制緩沖區(qū)和計數(shù)器堆,拼接控制緩沖區(qū)由HT請求響應(yīng)包的HT請求序號索引,記錄該HT請求響應(yīng)包對應(yīng) 的PCIe讀請求序號,對應(yīng)PCIe讀請求被拆分成的HT讀請求數(shù)目,對應(yīng)的PCIe完成包頭和 所述HT請求響應(yīng)包數(shù)據(jù)在PCIe完成包拼攢緩沖區(qū)中的存儲位置;計數(shù)器堆包括多個接收計數(shù)器,每個PCIe讀請求序號對應(yīng)一個接收計數(shù)器,接收 計數(shù)器用于統(tǒng)計收到對應(yīng)PCIe讀請求序號的HT請求響應(yīng)包的數(shù)目;HT2PCIE完成包傳輸模塊,還用于通知HT2PCIE完成包拼接控制模塊對生成的 PCIe完成數(shù)據(jù)包的PCIe讀請求序號對應(yīng)的接收計數(shù)器復位。PCIE2HT轉(zhuǎn)換模塊進一步包括PCIE2HT響應(yīng)包傳輸模塊,PCIE2HT Post包生成模 塊,上行HT Srctag管理模塊,以及PCIE2HT Non-post包生成模塊,PCIE2HT響應(yīng)包傳輸模塊,用于將PCI e完成包轉(zhuǎn)換為HT請求響應(yīng)包,發(fā)送給HT 控制器模塊;PCIE2HT Post包生成模塊,用于將PCIe Post寫包轉(zhuǎn)換為HT Post寫包,發(fā)送給 HT控制器模塊;上行HT Srctag管理模塊,用于從HT2PCIE完成包拼接控制模塊中回收HT請求序 號,并提供可用的HT請求序號給PCIE2HT Non-post包生成模塊;PCIE2HT Non-post包生成模塊,用于依據(jù)上行HT Srctag管理模塊提供的HT請 求序號,將PCIe Non-post讀包轉(zhuǎn)換為HT Non-post讀包,發(fā)送給HT控制器模塊,并通知 HT2PCIE完成包拼接控制模塊記錄包頭信息。PCIE2HT響應(yīng)包傳輸模塊進一步用于使用下行HT Srctag管理模塊存儲的HT請求
9序號替換PCIe完成包中的PCIe請求序號,并通知PCIe Srctag管理模塊記錄PCIe完成包 中的PCIe請求序號,將轉(zhuǎn)換后的HT響應(yīng)包傳送給HT控制器模塊。PCIE2HT Post包生成模塊進一步用于按HT協(xié)議最大包長和邊界對齊要求,將 PCIe Post寫包分拆為多個HT Post寫包,發(fā)送至HT控制器模塊。本發(fā)明還公開了一種多個HT總線到單個PCIe總線的橋接方法,橋接裝置包括多個連接HT總線的HT端口和一個連接PCIe總線的PCIe端口 ;所述橋接裝置均分PCIe請求序號,通過全局地址映射表和均分的請求序號實現(xiàn) HT端口和PCIe端口之間數(shù)據(jù)的傳送;所述全局地址映射表記錄每個HT端口和PCIe端口所占用的地址范圍; 所述均分PCIe請求序號為對于各HT端口,分配用于所述HT端口使用的PCIe請 求序號數(shù)目相同,并且分配的PCIe請求序號不重疊。所述HT端口包括一個主HT端口和多個從HT端口;主HT端口相連的處理器使用PCIe設(shè)備并配置全局地址映射表中PCIe端口對應(yīng) 的地址空間和主HT端口對應(yīng)的地址空間;從HT端口相連的處理器使用PCIe設(shè)備并配置全 局地址映射表中從HT端口對應(yīng)的地址空間;PCIe端口連接PCIe總線的根設(shè)備。所述橋接裝置包括HT控制器模塊,所述HT控制器模塊分為主HT控制器模塊和從HT控制器模塊,主HT控制器模塊同主HT端口連接,用于實現(xiàn)HT終端設(shè)備功能;從HT控制器模塊同從HT端口連接,用于實現(xiàn)HT終端設(shè)備功能。所述橋接裝置包括HT控制器模塊、PCIe控制器模塊、HT2PCIE轉(zhuǎn)換模塊、PCIE2HT 轉(zhuǎn)換模塊、PCIE樹形交換模塊、以及存儲所述全局地址映射表的全局地址映射表模塊;每 個HT控制器模塊連接對應(yīng)的HT2PCIE轉(zhuǎn)換模塊和PCIE2HT轉(zhuǎn)換模塊;所述方法進一步為,步驟1,HT控制器模塊從所述HT端口接收數(shù)據(jù)包,將數(shù)據(jù)包發(fā)送給HT2PCIE轉(zhuǎn) 換模塊;HT2PCIE轉(zhuǎn)換模塊從HT控制器模塊接收數(shù)據(jù)包,在接收的數(shù)據(jù)包為需要請求序號 的請求時,從為連接的HT端口分配的PCIe請求序號中為所述請求分配PCIe請求序號, 存儲所述請求的HT請求序號,在PCIE2HT轉(zhuǎn)換模塊接收的數(shù)據(jù)包為Non-post請求時,從 PCIE2HT轉(zhuǎn)換模塊獲得并記錄Non-post請求的包含PCIe請求序號的包頭參數(shù);然后完成 所述數(shù)據(jù)包從HT協(xié)議到PCIe協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給PCIE樹形交換模塊; PCIE樹形交換模塊將多個HT端口轉(zhuǎn)換后的PCIe格式數(shù)據(jù)包進行仲裁,發(fā)送給PCIe控制器 模塊;PCIe控制器模塊將接收的數(shù)據(jù)包發(fā)送到PCIe總線;步驟2,PCIe控制器模塊將接收的數(shù)據(jù)包發(fā)送到PCIE樹形交換模塊;PCIE樹形交 換模塊依據(jù)全局地址映射表將接收的PCIe控制器模塊發(fā)送的數(shù)據(jù)包轉(zhuǎn)發(fā)給對應(yīng)HT端口的 PCIE2HT轉(zhuǎn)換模塊;PCIE2HT轉(zhuǎn)換模塊從PCIE樹形交換模塊接收數(shù)據(jù)包,在接收的數(shù)據(jù)包為 請求響應(yīng)時,讀取所述數(shù)據(jù)包的PCIe請求序號對應(yīng)的HT請求序號,在接收的數(shù)據(jù)包為需要 請求序號的請求時,為所述請求分配HT請求序號,通知HT2PCIE轉(zhuǎn)換模塊記錄包頭信息 ’然 后完成所述數(shù)據(jù)包從PCIe協(xié)議到HT協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給所述HT控制器 模塊;HT控制器模塊將接收的由PCIE2HT轉(zhuǎn)換模塊發(fā)送的數(shù)據(jù)包從連接的HT端口發(fā)送到HT總線。HT2PCIE轉(zhuǎn)換模塊進一步包括HT2PCIE完成包拼接存儲模塊、HT2PCIE完成包拼接 控制模塊、HT2PCIE完成包傳輸模塊、HT2PCIE Post包生成模塊、下行HT Srctag管理模塊、 PCIe Srctag管理模塊、以及HT2PCIE Non-post包生成模塊,所述步驟1中HT控制器模塊接收到請求響應(yīng)包時,HT2PCIE完成包拼接存儲模塊 依據(jù)HT2PCIE完成包拼接控制模塊記錄的請求響應(yīng)對應(yīng)的請求的信息將請求響應(yīng)的數(shù)據(jù) 包拼合為一個完整的PCIe完成包的數(shù)據(jù);HT2PCIE完成包傳輸模塊從HT2PCIE完成包拼接 存儲模塊中讀取PCIe完成包的數(shù)據(jù),從HT2PCIE完成包拼接控制模塊中讀取PCIe完成包 頭,生成PCIe完成數(shù)據(jù)包,發(fā)送給PCIE樹形交換模塊;所述步驟1中HT控制器模塊接收到HT Post包時,HT2PCIE Post包生成模塊將 接收的HT總線的Post寫請求轉(zhuǎn)換為PCIe總線的Post寫請求,并將PCIe總線的Post寫 請求發(fā)送給PCIE樹形交換模塊;所述步驟1中HT控制器模塊接收到HT Non-Post包時,下行HT Srctag管理模塊 存儲HT Non-post讀或?qū)懻埱髷y帶的HT請求序號;PCIe Srctag管理模塊分配需要的PCIe 請求序號;HT2PCIE Non-post包生成模塊依據(jù)分配的PCIe請求序號,將HT Non-post讀或 寫請求轉(zhuǎn)換為PCIe Non-post讀或?qū)懻埱螅l(fā)送給PCIE樹形交換模塊;所述步驟2中在接收的數(shù)據(jù)包為請求響應(yīng)時,PCIe Srctag管理模塊回收使用完 的PCIe請求序號。PCIE2HT轉(zhuǎn)換模塊進一步包括PCIE2HT響應(yīng)包傳輸模塊,PCIE2HT Post包生成模 塊,上行HT Srctag管理模塊,以及PCIE2HT Non-post包生成模塊,所述步驟2中接收到PCIe完成包時,PCIE2HT響應(yīng)包傳輸模塊將PCIe完成包轉(zhuǎn) 換為HT請求響應(yīng)包,發(fā)送給HT控制器模塊;所述步驟2中接收到PCIe Post包時,PCIE2HT Post包生成模塊將PCIe Post寫 包轉(zhuǎn)換為HT Post寫包,發(fā)送給HT控制器模塊;所述步驟2中接收到PCIe Non-post包時,PCIE2HT Non-post包生成模塊依據(jù)上 行HT Srctag管理模塊提供的HT請求序號,將PCIe Non-post讀包轉(zhuǎn)換為HT Non-post讀 包,發(fā)送給HT控制器模塊,并通知HT2PCIE完成包拼接控制模塊記錄包頭信息;所述步驟1中接收到請求響應(yīng)包時,上行HT Srctag管理模塊從HT2PCIE完成包 拼接控制模塊中回收HT請求序號。所述步驟2中接收到PCIe完成包時,PCIE2HT響應(yīng)包傳輸模塊進一步使用下行 HT Srctag管理模塊存儲的HT請求序號替換PCIe完成包中的PCIe請求序號,并通知PCIe Srctag管理模塊記錄PCIe完成包中的PCIe請求序號,將轉(zhuǎn)換后的HT響應(yīng)包傳送給HT控 制器模塊。所述步驟2中接收到PCIe Post包時,PCIE2HT Post包生成模塊進一步按HT協(xié) 議最大包長和邊界對齊要求,將PCIe Post寫包分拆為多個HT Post寫包,發(fā)送至HT控制 器模塊。本發(fā)明的有益效果在于,能夠?qū)崿F(xiàn)多個與主設(shè)備(如處理器)相連的HT總線到 PCIe總線的橋接,在多HT總線與PCIe總線間提供高效的數(shù)據(jù)傳輸;通過全局地址映射表 和均分PCIe總線Srctag (請求序號),實現(xiàn)多個主動設(shè)備(如處理器)對PCIe總線設(shè)備的直接訪問;通過內(nèi)部交換PCIe格式數(shù)據(jù)包,支持長包,因而有較低的包頭開銷,實現(xiàn)低帶寬 損耗的HT到PCIe數(shù)據(jù)傳輸。
圖1是本發(fā)明多HT總線到單PCIe總線的橋接裝置結(jié)構(gòu)圖;圖2是本發(fā)明具體實施方式
中橋接裝置內(nèi)部HT2PCIE轉(zhuǎn)換模塊結(jié)構(gòu)圖;圖3是本發(fā)明具體實施方式
中橋接裝置內(nèi)部PCIE2HT轉(zhuǎn)換模塊結(jié)構(gòu)圖;圖4是所述橋接裝置內(nèi)部PCIE樹形交換模塊結(jié)構(gòu)圖;圖5是本發(fā)明的橋接裝置發(fā)現(xiàn)配置示意圖;圖6是PCIe請求拆分HT請求示意圖,圖6 (a)是PCIe讀請求拆分的示意圖,圖 6(b)是PCIe寫請求拆分的示意圖;圖7是HT端口訪問PCIe總線流程圖,圖7 (a)為HT端口對PCIe總線的讀操作流 程圖,圖7(b)為HT端口對PCIe總線的寫操作流程圖;圖8是PCIe總線訪問HT端口流程圖,圖8(a)PCIe總線讀取HT端口的流程圖,圖 8(b)是PCIe總線寫入HT端口的流程圖。
具體實施例方式下面結(jié)合附圖對本發(fā)明的方法做進一步的說明。本發(fā)明涉及的概念說明如下所述。一次讀操作指的是端口設(shè)備發(fā)起讀操作,經(jīng)過轉(zhuǎn)換路由到目標設(shè)備,目標設(shè)備將 讀取數(shù)據(jù)段打包為回復包,再經(jīng)過轉(zhuǎn)換路由返回給端口設(shè)備的過程。一次寫操作指的是端口設(shè)備發(fā)起寫操作,經(jīng)過轉(zhuǎn)換路由到達目標設(shè)備,并將包中 數(shù)據(jù)寫入目標設(shè)備中指定存儲地址的過程。HT總線中的“亂序”指的是HT規(guī)范中,對于讀請求的回復不一定需要嚴格保序,可 能讀請求A比讀請求B先收到,但是設(shè)備可以選擇先回復讀請求B,相應(yīng)的,PCIe規(guī)范中要 求回復必須嚴格保序,即按照讀請求到達順序進行回復?!?4-byte邊界”指的是處理器的緩存線邊界(cache line boundary),HT總線協(xié)議 要求讀寫操作都不能跨越64-byte邊界,而PCIe總線則要求回復包不能跨64-byte邊界。本發(fā)明一種多個HT總線到單個PCIe總線的橋接裝置如下所述。所述橋接裝置包括多個連接HT總線的HT端口和一個連接PCIe總線的PCIe端 Π ;所述橋接裝置,用于均分PCIe請求序號,通過全局地址映射表和均分的請求序號 實現(xiàn)HT端口和PCIe端口之間數(shù)據(jù)的傳送;所述全局地址映射表記錄每個HT端口和PCIe端口所占用的地址范圍;所述均分PCIe請求序號為對于各HT端口,分配用于所述HT端口使用的PCIe請 求序號數(shù)目相同,并且分配的PCIe請求序號不重疊。PCIe規(guī)范中約定Non-Post請求需要用Srctag區(qū)分,體現(xiàn)在包格式中的Srctag 域。在本發(fā)明中,把PCIe端的Srctag均分給了多個HT端口,這樣,通過對PCIe端發(fā)出的 Non-Post請求包中的Srctag區(qū)間進行仲裁分發(fā)到對應(yīng)HT端口,相應(yīng)的從各HT端口發(fā)出的Non-Post請求所攜帶的PCIe Srctag也不會發(fā)生重疊。一具體實施方式
中,HT端口包括一個主HT端口和多個從HT端口 ;主HT端口相連的處理器使用PCIe設(shè)備并配置全局地址映射表中PCIe端口對應(yīng) 的地址空間和主HT端口對應(yīng)的地址空間;從HT端口相連的處理器使用PCIe設(shè)備并配置全 局地址映射表中從HT端口對應(yīng)的地址空間;PCIe端口連接PCIe總線的根設(shè)備。進一步的,橋接裝置包括HT控制器模塊,所述HT控制器模塊分為主HT控制器模塊和從HT控制器模塊,主HT控制器模塊同主HT端口連接,用于實現(xiàn)HT終端設(shè)備功能;從HT控制器模塊同從HT端口連接,用于實現(xiàn)HT終端設(shè)備功能。具體的,橋接設(shè)備包括多個連接HT總線的HT端口和一個連接PCIe總線的PCIe 端口。HT端口在邏輯功能上分為兩類,一類稱為主HT端口,主HT端口相連的處理器使用 PCIe設(shè)備,并且負責對PCIe設(shè)備的發(fā)現(xiàn)和初始化過程,該類端口在具體實施方式
的橋接設(shè) 備中只有一個;一類稱為從HT端口,從HT端口相連的處理器僅使用PCIe設(shè)備。橋接設(shè)備 的 PCIe 端口是 PCIe 總線的根設(shè)備(PCI-Express Root Complex)。本發(fā)明的一具體實施方式
中,橋接裝置結(jié)構(gòu)如圖1所示。橋接裝置包括HT控制器模塊100、HT2PCIE轉(zhuǎn)換模塊200、PCIE2HT轉(zhuǎn)換模塊300、 PCIE樹形交換模塊400、PCIe控制器模塊500、以及全局地址映射表模塊600。其中,HT控制器模塊100分為主HT控制器模塊和從HT控制器模塊,主HT控制器 模塊同主HT端口連接,用于實現(xiàn)HT終端設(shè)備功能;從HT控制器模塊同從HT端口連接,用 于實現(xiàn)HT終端設(shè)備功能。具體的,從HT控制器模塊,實現(xiàn)HT總線數(shù)據(jù)的收發(fā),實現(xiàn)HT終端設(shè)備(HT Endpoint)功能。主HT控制器模塊,實現(xiàn)HT總線數(shù)據(jù)的收發(fā),還負責將主HT端口處理器發(fā) 出的Typel的配置包轉(zhuǎn)發(fā)至HT2PCIE轉(zhuǎn)換模塊200。在x86系統(tǒng)的配置過程中,會有兩種 配置包,一種是typeO,另外一種是typeO,對于橋設(shè)備,當收到typeO的配置包,說明是對橋 的配置,進入自身配置空間進行處理,而對于typel的配置包則需要進行轉(zhuǎn)發(fā),轉(zhuǎn)發(fā)的時查 看下方設(shè)備是否為目的配置設(shè)備,如果是,則轉(zhuǎn)成typeO配置包,如果不是,則保持typel格 式。PCIe控制器模塊500,實現(xiàn)PCIe根設(shè)備(PCIe Root Complex)的功能。每個HT控制器模塊100連接對應(yīng)的HT2PCIE轉(zhuǎn)換模塊200和PCIE2HT轉(zhuǎn)換模塊 300。HT控制器模塊100,同HT端口連接,用于從所述HT端口接收數(shù)據(jù)包,將數(shù)據(jù)包發(fā) 送給HT2PCIE轉(zhuǎn)換模塊200,并將接收的由PCIE2HT轉(zhuǎn)換模塊300發(fā)送的數(shù)據(jù)包從連接的 HT端口發(fā)送到HT總線。HT2PCIE轉(zhuǎn)換模塊200,用于從HT控制器模塊100接收數(shù)據(jù)包,在接收的數(shù)據(jù)包 為需要請求序號的請求時,從為連接的HT端口分配的PCIe請求序號中為所述請求分配 PCIe請求序號,存儲所述請求的HT請求序號,在PCIE2HT轉(zhuǎn)換模塊300接收的數(shù)據(jù)包為 Non-post請求時,從PCIE2HT轉(zhuǎn)換模塊300獲得并記錄Non-post請求的包含PCIe請求序 號的包頭參數(shù);然后完成所述數(shù)據(jù)包從HT協(xié)議到PCIe協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送
13給PCIE樹形交換模塊400。PCIE2HT轉(zhuǎn)換模塊300,用于從PCIE樹形交換模塊400接收數(shù)據(jù)包,在接收的數(shù)據(jù) 包為請求響應(yīng)時,讀取所述數(shù)據(jù)包的PCIe請求序號對應(yīng)的HT請求序號,在接收的數(shù)據(jù)包為 需要請求序號的請求時,為所述請求分配HT請求序號,通知HT2PCIE轉(zhuǎn)換模塊200記錄包 頭信息;然后完成所述數(shù)據(jù)包從PCIe協(xié)議到HT協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給所述 HT控制器模塊100。PCIE樹形交換模塊400,用于將多個HT端口轉(zhuǎn)換后的PCIe格式數(shù)據(jù)包進行仲裁, 發(fā)送給PCIe控制器模塊500,并依據(jù)全局地址映射表將接收的PCIe控制器模塊500發(fā)送的 數(shù)據(jù)包轉(zhuǎn)發(fā)給對應(yīng)HT端口的PCIE2HT轉(zhuǎn)換模塊300。PCIe控制器模塊500,用于將接收的數(shù)據(jù)包在PCIE樹形交換模塊400和PCIe總 線間轉(zhuǎn)換。全局地址映射表模塊600,用于存儲所述全局地址映射表。進一步的具體實施方式
中,HT2PCIE轉(zhuǎn)換模塊的結(jié)構(gòu)如圖2所示。HT2PCIE轉(zhuǎn)換模塊200進一步包括HT2PCIE完成包拼接存儲模塊211、HT2PCIE完 成包拼接控制模塊212、HT2PCIE完成包傳輸模塊213、HT2PCIE Post包生成模塊221、下行 HT Srctag管理模塊231、PCIe Srctag管理模塊232、以及HT2PCIE Non-post包生成模塊 233。HT2PCIE完成包拼接存儲模塊211、HT2PCIE完成包拼接控制模塊212、和HT2PCIE 完成包傳輸模塊213用于處理HT響應(yīng)包;HT2PCIE Post包生成模塊221用于處理HT Post 包,下行HT Srctag管理模塊231、PCIe Srctag管理模塊232、以及HT2PCIE Non-post包 生成模塊233共用用于處理HT Non-post包。HT2PCIE完成包拼接存儲模塊211,用于在接收的數(shù)據(jù)包為請求響應(yīng)時,依據(jù) HT2PCIE完成包拼接控制模塊212記錄的請求響應(yīng)對應(yīng)的原始請求的信息將請求響應(yīng)的數(shù) 據(jù)包拼合為一個完整的PCIe完成包的數(shù)據(jù)。進一步的,HT2PCIE完成包拼接存儲模塊211包含PCIe完成包拼攢緩沖區(qū),PCIe 完成包拼攢緩沖區(qū)被劃分為多個區(qū)域,區(qū)域的數(shù)目與PCIe總線請求序號數(shù)目相同,每個區(qū) 域的大小為PCIe總線最大包長。PCIe完成包拼攢緩沖區(qū)——拼接RAM,該緩沖區(qū)被靜態(tài)劃分為多個區(qū)域,區(qū)域的數(shù) 目與PCIe總線請求序號數(shù)目相同,每個區(qū)域的大小為PCIe總線協(xié)商的最大包長MTU,因此 每個區(qū)域的起始地址高位為PCIe請求序號,地址低位的數(shù)目為Iogfu。HT2PCIE完成包拼接控制模塊212,用于在PCIE2HT轉(zhuǎn)換模塊300接收的數(shù)據(jù)包為 讀請求響應(yīng)時,從PCIE2HT轉(zhuǎn)換模塊300獲得并記錄讀請求的包含PCIe請求序號的包頭參 數(shù)。HT2PCIE完成包拼接控制模塊212,包含拼接控制緩沖區(qū)和計數(shù)器堆。拼接控制緩沖區(qū)由HT請求響應(yīng)包的HT請求序號索引,記錄該HT請求響應(yīng)包對應(yīng) 的PCIe讀請求序號,對應(yīng)PCIe讀請求被拆分成的HT讀請求數(shù)目,對應(yīng)的PCIe完成包頭和 所述HT請求響應(yīng)包數(shù)據(jù)在PCIe完成包拼攢緩沖區(qū)中的存儲位置,計數(shù)器堆包括多個接收計數(shù)器,每個PCIe讀請求序號對應(yīng)一個接收計數(shù)器,接收 計數(shù)器用于統(tǒng)計收到對應(yīng)PCIe讀請求序號的HT請求響應(yīng)包的數(shù)目。
HT2PCIE完成包傳輸模塊213,還用于通知HT2PCIE完成包拼接控制模塊212對生 成的PCIe完成數(shù)據(jù)包的PCIe讀請求序號對應(yīng)的接收計數(shù)器復位。HT2PCIE完成包傳輸模塊213,用于從HT2PCIE完成包拼接存儲模塊211中讀取 PCIe完成包的數(shù)據(jù),從HT2PCIE完成包拼接控制模塊212中讀取PCIe完成包頭,生成PCIe 完成數(shù)據(jù)包,發(fā)送給PCIE樹形交換模塊400。具體的,轉(zhuǎn)后的PCIe完成包進入HT2PCIE完成包接收FIFO中等待發(fā)送。HT2PCIE Post包生成模塊221,用于將接收的HT總線的Post寫請求轉(zhuǎn)換為PCIe 總線的Post寫請求,并將PCIe總線的Post寫請求發(fā)送給PCIE樹形交換模塊400。具體的,轉(zhuǎn)后的PCIe Post包進入HT2PCIE Post包接收FIFO中等待發(fā)送。HT2PCIE Post包生成模塊221,將HT總線的Post寫請求轉(zhuǎn)換為PCIe的Post寫 請求.具體的,對于HT字節(jié)寫(Byte Write)包根據(jù)HT包中的mask(字節(jié)掩碼)信息, 對每8位mask對應(yīng)的寫數(shù)據(jù)進行判斷并轉(zhuǎn)化為相應(yīng)長度為1個雙字或2個雙字的PCIe寫 包,若8位mask均為0,則轉(zhuǎn)換后的PCIe寫包丟棄。下行HT Srctag管理模塊231,用于在接收到HT Non-post讀請求或?qū)懻埱髸r,存 儲該請求攜帶的HT請求序號。下行HT Srctag管理模塊231存儲HT Non-post讀寫請求所攜帶的請求序號,存 儲地址為PCIe Srctag管理模塊提供的PCIe讀寫請求序號。PCIe Srctag管理模塊232,用于分配需要的PCIe請求序號,回收使用完的PCIe 請求序號,還用于記錄接收的PCIe請求的PCIe請求序號。PCIe srctag管理模塊232用于管理訪問PCIe總線所需的PCIe請求序號。從 PCIE2HT轉(zhuǎn)換模塊的PCIE2HT響應(yīng)包傳輸模塊回收PCIe請求序號,將回收的PCIe請求序 號寫入PCIe Srctag管理模塊232,向HT2PCIE Non-post包生成模塊提供PCIe請求序號。 PCIe srctag管理模塊232管理的PCIe請求序號數(shù)目=PCIe總線最大請求序號/HT端口 數(shù)目。HT2PCIE Non-post包生成模塊233,用于依據(jù)分配的PCIe請求序號,將HT Non-post讀或?qū)懻埱筠D(zhuǎn)換為PCIe Non-post讀或?qū)懻埱?,發(fā)送給PCIE樹形交換模塊。具體的,轉(zhuǎn)后的PCIe Non-post包進入HT2PCIE Non-post包接收FIFO中等待發(fā)送。一具體實施方式
,PCIE2HT轉(zhuǎn)換模塊300進一步包括PCIE2HT響應(yīng)包傳輸模塊 311,PCIE2HT Post 包生成模塊 321,上行 HT Srctag 管理模塊 331,以及 PCIE2HT Non-post 包生成模塊332。PCIE2HT響應(yīng)包傳輸模塊311用于處理PCIe完成包,PCIE2HT Post包生成模塊 321用于處理PCIe Post包,上行HT Srctag管理模塊331和PCIE2HT Non-post包生成模 土夬332用于處理PCIe Non-post包。PCIE2HT響應(yīng)包傳輸模塊311,用于將PCIe完成包轉(zhuǎn)換為HT請求響應(yīng)包,發(fā)送給 HT控制器模塊100。PCIE2HT響應(yīng)包傳輸模塊311進一步用于使用下行HT Srctag管理模塊231存儲 的HT請求序號替換PCIe完成包中的PCIe請求序號,并通知PCIe Srctag管理模塊232記 錄PCIe完成包中的PCIe請求序號,將轉(zhuǎn)換后的HT響應(yīng)包傳送給HT控制器模塊100。
15
具體實施例中,通知PCIe Srctag管理模塊232記錄PCIe完成包中的PCIe請求 序號為將PCIe完成包中的請求序號寫入到PCIe Srctag管理模塊232中。PCIE2HT Post包生成模塊321,用于將PCIe Post寫包轉(zhuǎn)換為HT Post寫包,發(fā)送 給HT控制器模塊100。PCIE2HT Post包生成模塊進一步用于按HT協(xié)議最大包長和邊界對齊要求,將 PCIe Post寫包分拆為多個HT Post寫包,發(fā)送至HT控制器模塊。上行HT Srctag管理模塊331,用于從HT2PCIE完成包拼接控制模塊212中回收 HT請求序號,并提供可用的HT請求序號給PCIE2HT Non-post包生成模塊332。PCIE2HT Non-post包生成模塊332,用于依據(jù)上行HT Srctag管理模塊331提供的 HT請求序號,將PCIe Non-post讀包轉(zhuǎn)換為HT Non-post讀包,發(fā)送給HT控制器模塊100, 并通知HT2PCIE完成包拼接控制模塊記錄包頭信息。PCIE2HT Non-post包生成模塊332進一步用于按HT協(xié)議最大包長和邊界對齊要 求,將PCIe Non-post讀包分拆為多個HT Non-post讀包,發(fā)送至HT控制器模塊100。HT Non-post讀包所需的HT請求序號由上行HT Srctag管理模塊331提供。PCIE2HT Non-post包生成模塊332還用于通知HT2PCIE完成包拼接控制模塊212 記錄拆包信息。PCIE樹形交換模塊400的結(jié)構(gòu)如圖4所示,它負責將多個HT端口轉(zhuǎn)換后的PCIe包 進行仲裁后,發(fā)送給PCIe總線,同時根據(jù)全局地址映射關(guān)系及PCIe總線序號分配,將PCIe 總線獲得的PCIe包分發(fā)給各HT端口。它包含PCIE完成包樹形子模塊、PCIE Post包樹 形子模塊和PCIE Non-post包樹形子模塊,分別對應(yīng)于PCIe完成包、PCIE Post包和PCIE Non-post包的仲裁和分發(fā)。每個子模塊包括分發(fā)模塊和仲裁模塊。PCIE樹形交換模塊400中的完成包樹形仲裁模塊,Post包樹形仲裁模塊和 Non-post包樹形仲裁模塊分別輪詢各HT端口的相應(yīng)輸出緩沖區(qū),讀入PCIe包,轉(zhuǎn)發(fā)給 PCIe控制器相應(yīng)的接收緩沖區(qū)。PCIE樹形交換模塊400中的Post包樹形分發(fā)模塊和Non-post包樹形分發(fā)模塊從 PCIE控制器端對應(yīng)緩沖區(qū)讀入PCIe包,根據(jù)全局地址映射關(guān)系,判斷高位地址所對應(yīng)HT端 口號,將該PCIe包分發(fā)給相應(yīng)HT端口接收緩沖區(qū),而PCIE完成包樹形分發(fā)模塊,根據(jù)讀入 PCIe完成包所攜帶PCIe Srctag所在區(qū)間進行判斷,確定目標HT端口號,完成分發(fā)操作。本發(fā)明的一種多個HT總線到單個PCIe總線的橋接方法如下所述。橋接裝置包括多個連接HT總線的HT端口和一個連接PCIe總線的PCIe端口。所述橋接設(shè)備均分PCIe總線請求序號,通過全局地址映射表和均分的請求序號 實現(xiàn)HT端口和PCIe端口之間數(shù)據(jù)的傳送;所述全局地址映射表記錄每個HT端口和PCIe端口所占用的地址范圍;所述均分PCIe總線請求序號為對于各HT端口,分配用于所述HT端口使用的PCIe 總線請求序號數(shù)目相同,并且分配的PCIe總線請求序號不重疊。在一個較佳的實施方式中,所述HT端口包括一個主HT端口和多個從HT端口;主 HT端口相連的處理器使用PCIe設(shè)備并配置全局地址映射表中PCIe端口對應(yīng)的地址空間和 主HT端口對應(yīng)的地址空間;從HT端口相連的處理器使用PCIe設(shè)備并配置全局地址映射表 中從HT端口對應(yīng)的地址空間;PCIe端口連接PCIe總線的根設(shè)備。
在一個較佳的實施方式中,所述橋接裝置包括HT控制器模塊,所述HT控制器模塊分為主HT控制器模塊和從HT控制器模塊,主HT控制器模塊同主HT端口連接,用于實現(xiàn)HT終端設(shè)備功能;從HT控制器模塊同從HT端口連接,用于實現(xiàn)HT終端設(shè)備功能。在一個較佳的實施方式中,所述橋接裝置包括HT控制器模塊、PCIe控制器模塊、 HT2PCIE轉(zhuǎn)換模塊、PCIE2HT轉(zhuǎn)換模塊、PCIE樹形交換模塊、以及存儲所述全局地址映射表 的全局地址映射表模塊;每個HT控制器模塊連接對應(yīng)的HT2PCIE轉(zhuǎn)換模塊和PCIE2HT轉(zhuǎn)換 模塊;所述方法進一步為,步驟S100,HT控制器模塊從所述HT端口接收數(shù)據(jù)包,將數(shù)據(jù)包發(fā)送給HT2PCIE 轉(zhuǎn)換模塊;HT2PCIE轉(zhuǎn)換模塊從HT控制器模塊接收數(shù)據(jù)包,在接收的數(shù)據(jù)包為需要請求序 號的請求時,從為連接的HT端口分配的PCIe請求序號中為所述請求分配PCIe請求序號, 存儲所述請求的HT請求序號,在PCIE2HT轉(zhuǎn)換模塊接收的數(shù)據(jù)包為Non-post請求時,從 PCIE2HT轉(zhuǎn)換模塊獲得并記錄Non-post請求的包含PCIe請求序號的包頭參數(shù);然后完成 所述數(shù)據(jù)包從HT協(xié)議到PCIe協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給PCIE樹形交換模塊; PCIE樹形交換模塊將多個HT端口轉(zhuǎn)換后的PCIe格式數(shù)據(jù)包進行仲裁,發(fā)送給PCIe控制器 模塊;PCIe控制器模塊將接收的數(shù)據(jù)包發(fā)送到PCIe總線;步驟S200,PCIe控制器模塊將接收的數(shù)據(jù)包發(fā)送到PCIE樹形交換模塊;PCIE樹 形交換模塊依據(jù)全局地址映射表將接收的PCIe控制器模塊發(fā)送的數(shù)據(jù)包轉(zhuǎn)發(fā)給對應(yīng)HT端 口的PCIE2HT轉(zhuǎn)換模塊;PCIE2HT轉(zhuǎn)換模塊從PCIE樹形交換模塊接收數(shù)據(jù)包,在接收的數(shù) 據(jù)包為請求響應(yīng)時,讀取所述數(shù)據(jù)包的PCIe請求序號對應(yīng)的HT請求序號,在接收的數(shù)據(jù)包 為需要請求序號的請求時,為所述請求分配HT請求序號,通知HT2PCIE轉(zhuǎn)換模塊記錄包頭 信息;然后完成所述數(shù)據(jù)包從PCIe協(xié)議到HT協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給所述 HT控制器模塊;HT控制器模塊將接收的由PCIE2HT轉(zhuǎn)換模塊發(fā)送的數(shù)據(jù)包從連接的HT端 口發(fā)送到HT總線。進一步較佳的實施方式中,HT2PCIE轉(zhuǎn)換模塊進一步包括HT2PCIE完成包拼接存 儲模塊、HT2PCIE完成包拼接控制模塊、HT2PCIE完成包傳輸模塊、HT2PCIE Post包生成模 塊、下行HT Srctag管理模塊、PCIe Srctag管理模塊、以及HT2PCIE Non-post包生成模塊,所述步驟S100中HT控制器模塊接收到請求響應(yīng)包時,HT2PCIE完成包拼接存儲 模塊依據(jù)HT2PCIE完成包拼接控制模塊記錄的請求響應(yīng)對應(yīng)的請求的信息將請求響應(yīng)的 數(shù)據(jù)包拼合為一個完整的PCIe完成包的數(shù)據(jù);HT2PCIE完成包傳輸模塊從HT2PCIE完成包 拼接存儲模塊中讀取PCIe完成包的數(shù)據(jù),從HT2PCIE完成包拼接控制模塊中讀取PCIe完 成包頭,生成PCIe完成數(shù)據(jù)包,發(fā)送給PCIE樹形交換模塊;所述步驟S100中HT控制器模塊接收到HT Post包時,HT2PCIE Post包生成模塊 將接收的HT總線的Post寫請求轉(zhuǎn)換為PCIe總線的Post寫請求,并將PCIe總線的Post 寫請求發(fā)送給PCIE樹形交換模塊;所述步驟S100中HT控制器模塊接收到HT Non-Post包時,下行HT Srctag管理 模塊存儲Non-post讀請求或?qū)懻埱髷y帶的HT請求序號;PCIe Srctag管理模塊分配需要的 PCIe請求序號;HT2PCIE Non-post包生成模塊依據(jù)分配的PCIe請求序號,將HT Non-post讀或?qū)懻埱筠D(zhuǎn)換為PCIe Non-post讀或?qū)懻埱?,發(fā)送給PCIE樹形交換模塊;所述步驟S200中在接收的數(shù)據(jù)包為請求響應(yīng)時,PCIe Srctag管理模塊回收使用 完的PCIe請求序號。在進一步較佳的實施方式中,PCIE2HT轉(zhuǎn)換模塊進一步包括PCIE2HT響應(yīng)包傳輸 模塊,PCIE2HT Post包生成模塊,上行HT Srctag管理模塊,以及PCIE2HT Non-post包生 成模塊,所述步驟S200中接收到PCIe完成包時,PCIE2HT響應(yīng)包傳輸模塊將PCIe完成包 轉(zhuǎn)換為HT請求響應(yīng)包,發(fā)送給HT控制器模塊;所述步驟S200中接收到PCIe Post包時,PCIE2HT Post包生成模塊將PCIe Post 寫包轉(zhuǎn)換為HT Post寫包,發(fā)送給HT控制器模塊;所述步驟S200中接收到PCIe Non-post包時,PCIE2HT Non-post包生成模塊依據(jù) 上行HT Srctag管理模塊提供的HT請求序號,將PCIe Non-post讀包轉(zhuǎn)換為HT Non-post 讀包,發(fā)送給HT控制器模塊,并通知HT2PCIE完成包拼接控制模塊記錄包頭信息;所述步驟S100中接收到請求響應(yīng)包時,上行HT Srctag管理模塊從HT2PCIE完成 包拼接控制模塊中回收HT請求序號。在進一步較佳的實施方式中,所述步驟S200中接收到PCIe完成包時,PCIE2HT響 應(yīng)包傳輸模塊進一步使用下行HT Srctag管理模塊存儲的HT請求序號替換PCIe完成包中 的PCIe請求序號,并通知PCIe Srctag管理模塊記錄PCIe完成包中的PCIe請求序號,將 轉(zhuǎn)換后的HT響應(yīng)包傳送給HT控制器模塊。在進一步較佳的實施方式中,所述步驟S200中接收到PCIe Post包時,PCIE2HT Post包生成模塊進一步按HT協(xié)議最大包長和邊界對齊要求,將PCIe Post寫包分拆為多個 HT Post寫包,發(fā)送至HT控制器模塊。在進一步較佳的實施方式中,所述步驟S200中接收到PCIe Non-post包時, PCIE2HT Non-post包生成模塊進一步按HT協(xié)議最大包長和邊界對齊要求,將PCIe Non-post讀包分拆為多個HT Non-post讀包,發(fā)送至HT控制器模塊;HT Non-post讀包所需的HT請求序號由上行HT Srctag管理模塊提供。
在進一步較佳的實施方式中,所述步驟S100中,PCIE樹形交換模塊進一步分別輪詢各HT端口的相應(yīng)輸出緩沖 區(qū),讀入PCIe包,轉(zhuǎn)發(fā)給PCIe控制器模塊相應(yīng)的接收緩沖區(qū);所述步驟S200中,PCIE樹形交換模塊進一步對于PCIe Post完成包和PCIe Non-post包,從PCIE控制器模塊對應(yīng)緩沖區(qū)讀入PCIe包,根據(jù)全局地址映射關(guān)系,判斷高 位地址所對應(yīng)HT端口號,將該PCIe包分發(fā)給相應(yīng)HT端口接收緩沖區(qū);對于PCIe完成包, 根據(jù)所述PCIe完成包的PCIe請求序號,確定目標HT端口號,完成分發(fā)。本發(fā)明的具體實施例如下所述。橋接裝置包括HT控制器模塊、PCIe控制器模塊、HT2PCIE轉(zhuǎn)換模塊、PCIE2HT轉(zhuǎn)換 模塊、PCIE樹形交換模塊、以及存儲所述全局地址映射表的全局地址映射表模塊;每個HT 控制器模塊連接對應(yīng)的HT2PCIE轉(zhuǎn)換模塊和PCIE2HT轉(zhuǎn)換模塊。HT2PCIE轉(zhuǎn)換模塊進一步包括HT2PCIE完成包拼接存儲模塊、HT2PCIE完成包拼接 控制模塊、HT2PCIE完成包傳輸模塊、HT2PCIE Post包生成模塊、下行HT Srctag管理模塊、PCIe Srctag管理模塊、以及HT2PCIE Non-post包生成模塊。PCIE2HT轉(zhuǎn)換模塊進一步包括PCIE2HT響應(yīng)包傳輸模塊,PCIE2HT Post包生成模 塊,上行HT Srctag管理模塊,以及PCIE2HT Non-post包生成模塊。PCIE樹形交換模塊包含PCIE完成包樹形子模塊、PCIE Post包樹形子模塊和PCIE Non-post包樹形子模塊,分別對應(yīng)于PCIe完成包、PCIE Post包和PCIE Non-post包的仲 裁和分發(fā)。每個子模塊包括分發(fā)模塊和仲裁模塊。本發(fā)明方法的具體實施例中包括三個實施過程設(shè)備發(fā)現(xiàn)配置過程,HT端口訪問 PCIe總線過程和PCIe總線訪問HT端口過程。設(shè)備發(fā)現(xiàn)配置過程如如圖5所示。HT端口均掛接在各自處理器的總線0(Bus 0)上,從HT端口均作為總線0上的HT 終端設(shè)備,而主HT端口則作為總線0上的HT橋設(shè)備。PCIe端口實現(xiàn)的PCIe根設(shè)備掛接在 主HT端口 HT橋設(shè)備的總線l(Bus 1)上,后續(xù)的其他PCIe設(shè)備掛接在PCIe根設(shè)備之后的 PCIe 總線(Bus 2)上。具體發(fā)現(xiàn)和配置過程如下所述。主HT端口對應(yīng)的主設(shè)備,如處理器,掃描到HT總線上是一個HT橋設(shè)備,然后再由 橋設(shè)備向下枚舉到PCIe根設(shè)備,最后通過PCIe根設(shè)備枚舉到后續(xù)的PCIe設(shè)備,完成主HT 端口的設(shè)備枚舉。從HT端口對應(yīng)的主設(shè)備,如處理器,掃描到HT總線上是一個HT終端設(shè)備,完成從 HT端口的設(shè)備枚舉。主HT端口對應(yīng)的主設(shè)備根據(jù)所有PCIe設(shè)備申請的空間,配置全局地址映射表中 有關(guān)PCIe端口的地址空間;主HT端口對應(yīng)的主設(shè)備根據(jù)其掛接的本地內(nèi)存大小,配置全局地址映射表中有 關(guān)主HT端口的地址空間;從HT端口對應(yīng)的主設(shè)備根據(jù)其掛接的本地內(nèi)存大小,配置全局地址映射表中有 關(guān)從HT端口的地址空間。HT端口對PCIe總線的訪問過程如圖7所示。HT端口對PCIe總線的讀操作過程如圖7 (a)所示。步驟S71101,HT端口的HT端口控制器接收到HT讀請求。步驟S71102,PCIe Srctag管理模塊提供讀取可用的PCIe請求序號為ptag。HT端口 i(l n,n為HT端口數(shù)目)可用的ptag范圍是(i_l) XPCIe總線請求 序號數(shù)目/n (i XPCIe總線請求序號數(shù)目/n)-l。步驟S71103,下行HT Srctag模塊使用ptag為地址,存儲該HT讀請求的HT請求 序號,表示為htag。步驟S71104,HT2PCIE Non-post包生成模塊使用ptag將HT讀請求轉(zhuǎn)為PCIe讀 請求。若HT讀為字節(jié)讀(Byte Read),則按照雙字讀(Double Word Read)處理,讀取整 個的雙字。步驟S71105,PCIE Non-post包樹形子模塊將生成的PCIe讀請求轉(zhuǎn)給PCIe控制 器模塊,再由PCIe控制器模塊通過PCIe總線發(fā)出。
19
步驟S71106,PCIe控制器模塊接收到PCIe總線返回的PCIe完成包,發(fā)送到PCIE 完成包樹形子模塊。步驟S71107,PCIE完成包樹形子模塊根據(jù)PCIe完成包的ptag所在區(qū)間將該完成 包轉(zhuǎn)發(fā)至目標HT端口的PCIE2HT轉(zhuǎn)換模塊。步驟S71108,PCIE2HT響應(yīng)包傳輸模塊使用ptag從下行HT Srctag模塊讀取存儲 以ptag為地址的htag。步驟S71109,PCIE2HT響應(yīng)包傳輸模塊將ptag回寫到PCIe Srctag管理模塊。步驟S71110,PCIE2HT響應(yīng)包傳輸模塊使用htag將PCIe完成包轉(zhuǎn)換為HT響應(yīng) 包,發(fā)送至HT控制器模塊,讀取操作完成。HT端口對PCIe總線的寫操作過程如圖7 (b)所示。步驟S7201,HT端口的HT控制器模塊接收到HT寫請求。步驟S7202,HT2PCIE轉(zhuǎn)換模塊判斷該HT寫請求是否為HT Non-post寫請求,如果 是則跳轉(zhuǎn)至步驟S7205,否則跳轉(zhuǎn)至步驟S7203。步驟S7203,HT2PCIE Post包生成模塊將HT寫請求轉(zhuǎn)換為PCIe寫請求,發(fā)送給 PCIE Post包樹形子模塊。對于HT字節(jié)寫(Byte Write)包根據(jù)HT包中的mask (字節(jié)掩碼)信息,對每8 位mask對應(yīng)的寫數(shù)據(jù)進行判斷并轉(zhuǎn)化為相應(yīng)長度為1個雙字或2個雙字的PCIe寫包,若 8位mask均為0,則轉(zhuǎn)換后的PCIe寫包丟棄。步驟S7204,PCIE Post包樹形子模塊轉(zhuǎn)發(fā)至PCIe總線,完成HTPost寫操作。步驟S7205,PCIe Srctag管理模塊讀取可用的PCIe請求序號,表示為ptag。HT端口 i(l n,n為HT端口數(shù)目)可用的ptag范圍是(i_l) XPCIe總線請求 序號數(shù)目/n (i XPCIe總線請求序號數(shù)目/n)-l。步驟S7206,下行HT Srctag模塊使用ptag為地址,存儲HT讀請求的HT請求序 號,表不為htag。步驟S7207,HT2PCIE Non-post包生成模塊使用ptag將HT寫請求轉(zhuǎn)為PCIe配置 寫請求,將該PCIe配置寫請求發(fā)送給PCIE Non-post包樹形子模塊。步驟S7208,PCIE Non-post包樹形子模塊將生成的PCIe配置寫請求經(jīng)PCIE控制 器模塊轉(zhuǎn)發(fā)至PCIe總線。步驟S7209,PCIe控制器模塊接收到PCIe總線返回的PCIe完成包。步驟S7210,PCIE完成包樹形子模塊根據(jù)PCIe完成包的ptag所在區(qū)間將該完成 包轉(zhuǎn)發(fā)至目標HT端口的PCIE2HT轉(zhuǎn)換模塊。步驟S7211,PCIE2HT響應(yīng)包傳輸模塊使用ptag從下行HT Srctag模塊讀取以該 ptag為地址存儲的htag。步驟S7212,PCIE2HT響應(yīng)包傳輸模塊將ptag回寫到PCIe Srctag管理模塊。步驟S7213,PCIE2HT響應(yīng)包傳輸模塊使用htag將PCI e完成包轉(zhuǎn)換為HT目標完 成包,發(fā)送至HT控制器模塊,HT Non-post寫操作完成。PCIe總線對HT端口的訪問過程如下所述。PCIe總線對HT端口的訪問過程如圖8所示,由于PCIe支持的最大包長為4K字 節(jié),而HT最大僅為64字節(jié),因此PCIe總線對HT端口的訪問過程需要將一個PCIe請求拆
20分成多個HT請求。其中,PCIe讀請求的拆分策略如圖6(a)所示,拆分遵循如下規(guī)則。當讀取長度小于64字節(jié)時,將PCIe讀請求轉(zhuǎn)換為一個HT雙字讀請求;當讀取的長度大于64字節(jié)時,按照HT請求地址64字節(jié)邊界對齊要求,將讀請求 地址按64字節(jié)進行邊界劃分,相應(yīng)的,PCIe讀請求被拆分為多個HT讀請求。對于劃分后 長度不是雙字整數(shù)倍的,仍然使用HT雙字讀請求進行讀取。其中,PCIe寫請求的拆分策略如圖6(b)所示,拆分遵循如下步驟。步驟S611,若PCIe寫請求中的FirstBE不為全1,把FirstBE作為HT字節(jié)寫包中 的count域,按照HT字節(jié)寫包格式打包為一個字節(jié)寫包;步驟S612,若PCIe寫請求中的FirstBE為全1,則按照HT請求地址64字節(jié)邊界 對齊要求,根據(jù)寫請求起始地址,計算第一次拆分的寫包數(shù)據(jù)長度,并按照HT雙字寫包格 式打包為一個HT雙字寫包;步驟S613,根據(jù)寫請求長度判斷是否步驟S611或步驟S612是否完成拆分,若未完 成,且不為剩余寫包長度大于一個雙字,則根據(jù)HT請求地址64字節(jié)邊界對齊要求,計算下 一個拆分的寫包數(shù)據(jù)長度,按照HT雙字寫包格式繼續(xù)發(fā)送HT雙字寫包;若剩余寫包長度小 于等于一個雙字,則跳轉(zhuǎn)至步驟S614 ;步驟S614,判斷LastBE是否為全1,如果為全1,則跟隨之前在同一個64字節(jié)邊界 內(nèi)數(shù)據(jù)一起打包為一個HT雙字寫包,如果不為1,則要單獨拆分為一個HT字節(jié)寫包,HT字 節(jié)寫包的mask為LastBE值,至此,寫請求拆分處理完成。使用圖6(a)的拆分策略,PCIe總線讀取HT端口的流程如圖8 (a)所示。步驟S8101,PCIe總線發(fā)出Srctag為ptag的讀請求,請求的數(shù)據(jù)長度為plen, PCIe控制器模塊接收到該讀請求。步驟S8102,PCIE Non-post包樹形子模塊根據(jù)讀地址查詢?nèi)值刂酚成浔恚@取 目標HT端口號i。步驟S8103,PCIE Non-post包樹形子模塊將該讀請求轉(zhuǎn)發(fā)至目標HT端口 i的 PCIE2HT轉(zhuǎn)換模塊。步驟S8104,上行HT Srctag管理模塊獲取一系列可用的HT請求序號htag_0 htag_n。步驟S8105,按前述讀請求的拆分策略,PCIE2HT Non-post包生成模塊使用 htag_0 htag_n將PCIe讀請求拆分成一系列HT讀請求,并發(fā)送至HT端口。步驟S8106,PCIE2HT Non-post包生成模塊向HT2PCIE完成包拼接控制模塊提供 拆包信息,HT2PCIE完成包拼接控制模塊根據(jù)所述拆包信息計算出每個HT包在拼接RAM的 起始存儲地址haddr_i,并構(gòu)造ptag對應(yīng)的PCIe完成包包頭phead。步驟S8107,HT2PCIE完成包拼接控制模塊使用htag_i為地址,存儲拆包信息和包 頭。將口{&8邛161^1^^(1,拆出的1^包數(shù)目pent,以及haddr_i,寫入HT2PCIE完成包 拼接控制模塊中的拼接控制緩沖區(qū)。步驟S8108,HT控制器模塊接收對應(yīng)的HT響應(yīng)包,獲取其請求序號htag_i。步驟S8109,HT2PCIE完成拼接控制模塊使用htag_i為地址,在HT2PCIE完成拼接控制模塊的拼接控制緩沖區(qū)中,讀取該HT響應(yīng)包對應(yīng)的phead,plen, pent和haddr_i。步驟S8110,將HT響應(yīng)包攜帶的數(shù)據(jù)負載寫入拼接RAM。以haddr_i為起始地址的存儲區(qū)中,HT2PCIE完成拼接控制模塊中對應(yīng)ptag的接 收計數(shù)器incnt加一。步驟S8111,若incnt等于pent,則跳轉(zhuǎn)至步驟S8112,否則跳轉(zhuǎn)至步驟S8108。步驟S8112,HT2PCIE完成包傳輸模塊以{ptag,0(>"0}為地址在拼接RAM中讀取 plen長度的數(shù)據(jù)。步驟S8113,HT2PCIE完成包傳輸模塊從HT2PCIE完成包拼接控制模塊中讀取 phead,作為PCIe完成包頭拼接在步驟S8112獲取的數(shù)據(jù)之前,構(gòu)成完整的PCIe完成包。步驟S8114,PCIE完成包樹形子模塊將PCIe完成包轉(zhuǎn)發(fā)至PCIE端口,經(jīng)PCIE控 制器模塊發(fā)送至PCIe總線,完成整個讀取過程。使用前述寫請求的拆分策略,PCIe總線寫HT端口的流程如圖8(b)所示,其中, PCIe設(shè)備發(fā)起的MSI-X中斷,在本發(fā)明的橋接設(shè)備中視為PCIe Post寫,因此與寫操作處理 流程類似,只是MSI-X中斷包格式到HT中斷包格式的轉(zhuǎn)換,與普通的寫請求格式轉(zhuǎn)換不同, 具體格式轉(zhuǎn)換遵照HT規(guī)范。PCIe總線寫HT端口的流成具體描述如下。步驟S8201,PCIe總線發(fā)出寫請求,請求長度為plen,PCIe控制器模塊接收寫請 求。PCIe設(shè)備發(fā)起寫請求,由PCIe設(shè)備上的PCIe控制器模塊發(fā)出PCIe寫包,經(jīng)過 PCIe總線,該橋接裝置上的PCIe控制器收到該寫請求。步驟S8202,PCIE Post包樹形子模塊根據(jù)寫操作地址查詢?nèi)值刂酚成浔恚@取 目標HT端口號i。步驟S8203,PCIE Post包樹形子模塊將該PCIe寫請求轉(zhuǎn)發(fā)至目標HT端口 i的 PCIE2HT轉(zhuǎn)換模塊。步驟S8204,PCIE2HT Post包生成模塊根據(jù)圖6 (b)所示的拆分策略,將PCIe寫請 求拆分為一系列的HT寫請求。步驟S8205,HT控制器模塊將一系列HT寫請求發(fā)送至目的HT總線,寫操作完成。本領(lǐng)域的技術(shù)人員在不脫離權(quán)利要求書確定的本發(fā)明的精神和范圍的條件下,還 可以對以上內(nèi)容進行各種各樣的修改。因此本發(fā)明的范圍并不僅限于以上的說明,而是由 權(quán)利要求書的范圍來確定的。
權(quán)利要求
一種多個HT總線到單個PCIe總線的橋接裝置,其特征在于,所述橋接裝置包括多個連接HT總線的HT端口和一個連接PCIe總線的PCIe端口;所述橋接裝置,用于均分PCIe請求序號,使用全局地址映射表和均分的請求序號實現(xiàn)HT端口和PCIe端口之間數(shù)據(jù)的傳送;所述全局地址映射表記錄每個HT端口和PCIe端口所占用的地址范圍;所述均分PCIe請求序號為對于各HT端口,分配用于所述HT端口使用的PCIe請求序號數(shù)目相同,并且分配的PCIe請求序號不重疊。
2.如權(quán)利要求1所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, 所述HT端口包括一個主HT端口和多個從HT端口;主HT端口相連的處理器使用PCIe設(shè)備并配置全局地址映射表中PCIe端口對應(yīng)的地 址空間和主HT端口對應(yīng)的地址空間;從HT端口相連的處理器使用PCIe設(shè)備并配置全局地 址映射表中從HT端口對應(yīng)的地址空間; PCIe端口連接PCIe總線的根設(shè)備。
3.如權(quán)利要求2所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, 所述橋接裝置包括HT控制器模塊,所述HT控制器模塊分為主HT控制器模塊和從HT控制器模塊, 主HT控制器模塊同主HT端口連接,用于實現(xiàn)HT終端設(shè)備功能; 從HT控制器模塊同從HT端口連接,用于實現(xiàn)HT終端設(shè)備功能。
4.如權(quán)利要求1所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, 所述橋接裝置包括HT控制器模塊、PCIe控制器模塊、HT2PCIE轉(zhuǎn)換模塊、PCIE2HT轉(zhuǎn)換模塊、PCIE樹形交換模塊、以及全局地址映射表模塊;每個HT控制器模塊連接對應(yīng)的 HT2PCIE轉(zhuǎn)換模塊和PCIE2HT轉(zhuǎn)換模塊;HT控制器模塊,同HT端口連接,用于從所述HT端口接收數(shù)據(jù)包,將數(shù)據(jù)包發(fā)送給 HT2PCIE轉(zhuǎn)換模塊,并將接收的由PCIE2HT轉(zhuǎn)換模塊發(fā)送的數(shù)據(jù)包從連接的HT端口發(fā)送到 HT總線;HT2PCIE轉(zhuǎn)換模塊,用于從HT控制器模塊接收數(shù)據(jù)包,在接收的數(shù)據(jù)包為需要請求序 號的請求時,從為連接的HT端口分配的PCIe請求序號中為所述請求分配PCIe請求序號, 存儲所述請求的HT請求序號,在PCIE2HT轉(zhuǎn)換模塊接收的數(shù)據(jù)包為Non-post請求時,從 PCIE2HT轉(zhuǎn)換模塊獲得并記錄Non-post請求的包含PCIe請求序號的包頭參數(shù);然后完成 所述數(shù)據(jù)包從HT協(xié)議到PCIe協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給PCIE樹形交換模塊; PCIE2HT轉(zhuǎn)換模塊,用于從PCIE樹形交換模塊接收數(shù)據(jù)包,在接收的數(shù)據(jù)包為請求響 應(yīng)時,讀取所述數(shù)據(jù)包的PCIe請求序號對應(yīng)的HT請求序號,在接收的數(shù)據(jù)包為需要請求序 號的請求時,為所述請求分配HT請求序號,通知HT2PCIE轉(zhuǎn)換模塊記錄包頭信息;然后完成 所述數(shù)據(jù)包從PCI e協(xié)議到HT協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給所述HT控制器模塊; PCIE樹形交換模塊,用于將多個HT端口轉(zhuǎn)換后的PCIe格式數(shù)據(jù)包進行仲裁,發(fā)送給 PCIe控制器模塊,并依據(jù)全局地址映射表將接收的PCIe控制器模塊發(fā)送的數(shù)據(jù)包轉(zhuǎn)發(fā)給 對應(yīng)HT端口的PCIE2HT轉(zhuǎn)換模塊;PCIe控制器模塊,用于將接收的數(shù)據(jù)包在PCIE樹形交換模塊和PCIe總線間交換; 全局地址映射表模塊,用于存儲所述全局地址映射表。
5.如權(quán)利要求4所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, HT2PCIE轉(zhuǎn)換模塊進一步包括HT2PCIE完成包拼接存儲模塊、HT2PCIE完成包拼接控制模塊、HT2PCIE完成包傳輸模塊、HT2PCIE Post包生成模塊、下行HT Srctag管理模塊、PCIe Srctag管理模塊、以及HT2PCIE Non-post包生成模塊,HT2PCIE完成包拼接存儲模塊,用于在接收的數(shù)據(jù)包為請求響應(yīng)時,依據(jù)HT2PCIE完成 包拼接控制模塊記錄的請求響應(yīng)對應(yīng)的原始請求的信息將請求響應(yīng)的數(shù)據(jù)包拼合為一個 完整的PCIe完成包的數(shù)據(jù);HT2PCIE完成包拼接控制模塊,用于在PCIE2HT轉(zhuǎn)換模塊接收的數(shù)據(jù)包為讀請求響應(yīng) 時,從PCIE2HT轉(zhuǎn)換模塊獲得并記錄讀請求的包含PCIe請求序號的包頭參數(shù);HT2PCIE完成包傳輸模塊,用于從HT2PCIE完成包拼接存儲模塊中讀取PCIe完成包的 數(shù)據(jù),從HT2PCIE完成包拼接控制模塊中讀取PCIe完成包頭,生成PCIe完成數(shù)據(jù)包,發(fā)送 給PCIE樹形交換模塊;HT2PCIE Post包生成模塊,用于將接收的HT總線的Post寫請求轉(zhuǎn)換為PCIe總線的 Post寫請求,并將PCIe總線的Post寫請求發(fā)送給PCIE樹形交換模塊;下行HT Srctag管理模塊,用于在接收到HT Non-post請求時,存儲所述請求攜帶的HT 請求序號;PCIe Srctag管理模塊,用于分配需要的PCIe請求序號,回收使用完的PCIe請求序號;HT2PCIE Non-post包生成模塊,用于依據(jù)分配的PCIe請求序號,將HTNon-post讀或?qū)?請求轉(zhuǎn)換為PCIe Non-post讀或?qū)懻埱?,發(fā)送給PCIE樹形交換模塊。
6.如權(quán)利要求5所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, 所述HT2PCIE完成包拼接存儲模塊包含PCIe完成包拼攢緩沖區(qū),所述PCIe完成包拼攢緩沖區(qū)被劃分為多個區(qū)域,區(qū)域的數(shù)目與PCIe請求序號數(shù)目相同,每個區(qū)域的大小為 PCIe總線最大包長。
7.如權(quán)利要求6所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, 所述HT2PCIE完成包拼接控制模塊包含拼接控制緩沖區(qū)和計數(shù)器堆,拼接控制緩沖區(qū)由HT請求響應(yīng)包的HT請求序號索引,記錄該HT請求響應(yīng)包對應(yīng)的 PCIe讀請求序號,對應(yīng)PCIe讀請求被拆分成的HT讀請求數(shù)目,對應(yīng)的PCIe完成包頭和所 述HT請求響應(yīng)包數(shù)據(jù)在PCIe完成包拼攢緩沖區(qū)中的存儲位置;計數(shù)器堆包括多個接收計數(shù)器,每個PCIe讀請求序號對應(yīng)一個接收計數(shù)器,接收計數(shù) 器用于統(tǒng)計收到對應(yīng)PCIe讀請求序號的HT請求響應(yīng)包的數(shù)目;HT2PCIE完成包傳輸模塊,還用于通知HT2PCIE完成包拼接控制模塊對生成的PCIe完 成數(shù)據(jù)包的PCIe讀請求序號對應(yīng)的接收計數(shù)器復位。
8.如權(quán)利要求5所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, PCIE2HT轉(zhuǎn)換模塊進一步包括PCIE2HT響應(yīng)包傳輸模塊,PCIE2HT Post包生成模塊,上行HT Srctag管理模塊,以及PCIE2HT Non-post包生成模塊,PCIE2HT響應(yīng)包傳輸模塊,用于將PCIe完成包轉(zhuǎn)換為HT請求響應(yīng)包,發(fā)送給HT控制器 模塊;PCIE2HT Post包生成模塊,用于將PCIe Post寫包轉(zhuǎn)換為HT Post寫包,發(fā)送給HT控制器模塊;上行HT Srctag管理模塊,用于從HT2PCIE完成包拼接控制模塊中回收HT請求序號, 并提供可用的HT請求序號給PCIE2HT Non-post包生成模塊;PCIE2HT Non-post包生成模塊,用于依據(jù)上行HT Srctag管理模塊提供的HT請求序 號,將PCIe Non-post讀包轉(zhuǎn)換為HT Non-post讀包,發(fā)送給HT控制器模塊,并通知HT2PCIE 完成包拼接控制模塊記錄包頭信息。
9.如權(quán)利要求8所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, PCIE2HT響應(yīng)包傳輸模塊進一步用于使用下行HT Srctag管理模塊存儲的HT請求序號替換PCIe完成包中的PCIe請求序號,并通知PCIe Srctag管理模塊記錄PCIe完成包中的 PCIe請求序號,將轉(zhuǎn)換后的HT響應(yīng)包傳送給HT控制器模塊。
10.如權(quán)利要求8所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, PCIE2HT Post包生成模塊進一步用于按HT協(xié)議最大包長和邊界對齊要求,將PCIePost寫包分拆為多個HT Post寫包,發(fā)送至HT控制器模塊。
11.如權(quán)利要求8所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, PCIE2HT Non-post包生成模塊進一步用于按HT協(xié)議最大包長和邊界對齊要求,將PCIe Non-post讀包分拆為多個HT Non-post讀包,發(fā)送至HT控制器模塊; HT Non-post讀包所需的HT請求序號由上行HT Srctag管理模塊提供。
12.如權(quán)利要求4所述的多個HT總線到單個PCIe總線的橋接裝置,其特征在于, 所述PCIE樹形交換模塊進一步用于在仲裁時分別輪詢各HT端口的相應(yīng)輸出緩沖區(qū),讀入PCIe包,轉(zhuǎn)發(fā)給PCIe控制器模塊相應(yīng)的接收緩沖區(qū);在分發(fā)時,對于Post完成包和 Non-post包,從PCIE控制器模塊對應(yīng)緩沖區(qū)讀入PCIe包,根據(jù)全局地址映射關(guān)系,判斷高 位地址所對應(yīng)HT端口號,將該PCIe包分發(fā)給相應(yīng)HT端口接收緩沖區(qū);對于PCIe完成包, 根據(jù)所述PCIe完成包的PCIe請求序號,確定目標HT端口號,完成分發(fā)。
13.一種多個HT總線到單個PCIe總線的橋接方法,其特征在于,橋接裝置包括多個連接HT總線的HT端口和一個連接PCIe總線的PCIe端口 ; 所述橋接裝置均分PCIe請求序號,通過全局地址映射表和均分的請求序號實現(xiàn)HT端 口和PCIe端口之間數(shù)據(jù)的傳送;所述全局地址映射表記錄每個HT端口和PCIe端口所占用的地址范圍; 所述均分PCIe請求序號為對于各HT端口,分配用于所述HT端口使用的PCIe請求序 號數(shù)目相同,并且分配的PCIe請求序號不重疊。
14.如權(quán)利要求13所述的多個HT總線到單個PCIe總線的橋接方法,其特征在于, 所述HT端口包括一個主HT端口和多個從HT端口;主HT端口相連的處理器使用PCIe設(shè)備并配置全局地址映射表中PCIe端口對應(yīng)的地 址空間和主HT端口對應(yīng)的地址空間;從HT端口相連的處理器使用PCIe設(shè)備并配置全局地 址映射表中從HT端口對應(yīng)的地址空間; PCIe端口連接PCIe總線的根設(shè)備。
15.如權(quán)利要求14所述的多個HT總線到單個PCIe總線的橋接方法,其特征在于, 所述橋接裝置包括HT控制器模塊,所述HT控制器模塊分為主HT控制器模塊和從HT控制器模塊,主HT控制器模塊同主HT端口連接,用于實現(xiàn)HT終端設(shè)備功能; 從HT控制器模塊同從HT端口連接,用于實現(xiàn)HT終端設(shè)備功能。
16.如權(quán)利要求13所述的多個HT總線到單個PCIe總線的橋接方法,其特征在于, 所述橋接裝置包括HT控制器模塊、PCIe控制器模塊、HT2PCIE轉(zhuǎn)換模塊、PCIE2HT轉(zhuǎn)換模塊、PCIE樹形交換模塊、以及存儲所述全局地址映射表的全局地址映射表模塊;每個HT 控制器模塊連接對應(yīng)的HT2PCIE轉(zhuǎn)換模塊和PCIE2HT轉(zhuǎn)換模塊; 所述方法進一步為,步驟1,HT控制器模塊從所述HT端口接收數(shù)據(jù)包,將數(shù)據(jù)包發(fā)送給HT2PCIE轉(zhuǎn)換模塊; HT2PCIE轉(zhuǎn)換模塊從HT控制器模塊接收數(shù)據(jù)包,在接收的數(shù)據(jù)包為需要請求序號的請求 時,從為連接的HT端口分配的PCIe請求序號中為所述請求分配PCIe請求序號,存儲所述 請求的HT請求序號,在PCIE2HT轉(zhuǎn)換模塊接收的數(shù)據(jù)包為Non-post請求時,從PCIE2HT轉(zhuǎn) 換模塊獲得并記錄Non-post請求的包含PCIe請求序號的包頭參數(shù);然后完成所述數(shù)據(jù)包 從HT協(xié)議到PCIe協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給PCIE樹形交換模塊;PCIE樹形交 換模塊將多個HT端口轉(zhuǎn)換后的PCIe格式數(shù)據(jù)包進行仲裁,發(fā)送給PCIe控制器模塊;PCIe 控制器模塊將接收的數(shù)據(jù)包發(fā)送到PCIe總線;步驟2,PCIe控制器模塊將接收的數(shù)據(jù)包發(fā)送到PCIE樹形交換模塊;PCIE樹形交換 模塊依據(jù)全局地址映射表將接收的PCIe控制器模塊發(fā)送的數(shù)據(jù)包轉(zhuǎn)發(fā)給對應(yīng)HT端口的 PCIE2HT轉(zhuǎn)換模塊;PCIE2HT轉(zhuǎn)換模塊從PCIE樹形交換模塊接收數(shù)據(jù)包,在接收的數(shù)據(jù)包為 請求響應(yīng)時,讀取所述數(shù)據(jù)包的PCIe請求序號對應(yīng)的HT請求序號,在接收的數(shù)據(jù)包為需要 請求序號的請求時,為所述請求分配HT請求序號,通知HT2PCIE轉(zhuǎn)換模塊記錄包頭信息;然 后完成所述數(shù)據(jù)包從PCIe協(xié)議到HT協(xié)議的轉(zhuǎn)換,將轉(zhuǎn)換后的數(shù)據(jù)包發(fā)送給所述HT控制器 模塊;HT控制器模塊將接收的由PCIE2HT轉(zhuǎn)換模塊發(fā)送的數(shù)據(jù)包從連接的HT端口發(fā)送到 HT總線。
17.如權(quán)利要求16所述的多個HT總線到單個PCIe總線的橋接方法,其特征在于, HT2PCIE轉(zhuǎn)換模塊進一步包括HT2PCIE完成包拼接存儲模塊、HT2PCIE完成包拼接控制模塊、HT2PCIE完成包傳輸模塊、HT2PCIE Post包生成模塊、下行HT Srctag管理模塊、PCIe Srctag管理模塊、以及HT2PCIE Non-post包生成模塊,所述步驟1中HT控制器模塊接收到請求響應(yīng)包時,HT2PCIE完成包拼接存儲模塊依據(jù) HT2PCIE完成包拼接控制模塊記錄的請求響應(yīng)對應(yīng)的請求的信息將請求響應(yīng)的數(shù)據(jù)包拼合 為一個完整的PCIe完成包的數(shù)據(jù);HT2PCIE完成包傳輸模塊從HT2PCIE完成包拼接存儲模 塊中讀取PCIe完成包的數(shù)據(jù),從HT2PCIE完成包拼接控制模塊中讀取PCIe完成包頭,生成 PCIe完成數(shù)據(jù)包,發(fā)送給PCIE樹形交換模塊;所述步驟1中HT控制器模塊接收到HT Post包時,HT2PCIE Post包生成模塊將接收 的HT總線的Post寫請求轉(zhuǎn)換為PCIe總線的Post寫請求,并將PCIe總線的Post寫請求 發(fā)送給PCIE樹形交換模塊;所述步驟1中HT控制器模塊接收到HT Non-Post包時,下行HT Srctag管理模塊存儲 HT Non-post讀或?qū)懻埱髷y帶的HT請求序號;PCIe Srctag管理模塊分配需要的PCIe請求 序號;HT2PCIE Non-post包生成模塊依據(jù)分配的PCIe請求序號,將HT Non-post讀或?qū)懻?求轉(zhuǎn)換為PCIe Non-post讀或?qū)懻埱?,發(fā)送給PCIE樹形交換模塊;所述步驟2中在接收的數(shù)據(jù)包為請求響應(yīng)時,PCIe Srctag管理模塊回收使用完的 PCIe請求序號。
18.如權(quán)利要求17所述的多個HT總線到單個PCIe總線的橋接方法,其特征在于, PCIE2HT轉(zhuǎn)換模塊進一步包括PCIE2HT響應(yīng)包傳輸模塊,PCIE2HT Post包生成模塊,上行HT Srctag管理模塊,以及PCIE2HT Non-post包生成模塊,所述步驟2中接收到PCIe完成包時,PCIE2HT響應(yīng)包傳輸模塊將PCIe完成包轉(zhuǎn)換為 HT請求響應(yīng)包,發(fā)送給HT控制器模塊;所述步驟2中接收到PCIe Post包時,PCIE2HT Post包生成模塊將PCIePost寫包轉(zhuǎn) 換為HT Post寫包,發(fā)送給HT控制器模塊;所述步驟2中接收到PCIe Non-post包時,PCIE2HT Non-post包生成模塊依據(jù)上行HT Srctag管理模塊提供的HT請求序號,將PCIe Non-post讀包轉(zhuǎn)換為HT Non-post讀包,發(fā) 送給HT控制器模塊,并通知HT2PCIE完成包拼接控制模塊記錄包頭信息;所述步驟1中接收到請求響應(yīng)包時,上行HT Srctag管理模塊從HT2PCIE完成包拼接 控制模塊中回收HT請求序號。
19.如權(quán)利要求18所述的多個HT總線到單個PCIe總線的橋接方法,其特征在于,所述步驟2中接收到PCIe完成包時,PCIE2HT響應(yīng)包傳輸模塊進一步使用下行HT Srctag管理模塊存儲的HT請求序號替換PCIe完成包中的PCIe請求序號,并通知PCIe Srctag管理模塊記錄PCIe完成包中的PCIe請求序號,將轉(zhuǎn)換后的HT響應(yīng)包傳送給HT控 制器模塊。
20.如權(quán)利要求18所述的多個HT總線到單個PCIe總線的橋接方法,其特征在于,所述步驟2中接收到PCIe Post包時,PCIE2HT Post包生成模塊進一步按HT協(xié)議最 大包長和邊界對齊要求,將PCIe Post寫包分拆為多個HT Post寫包,發(fā)送至HT控制器模 塊。
21.如權(quán)利要求18所述的多個HT總線到單個PCIe總線的橋接方法,其特征在于,所述步驟2中接收到PCIe Non-post包時,PCIE2HT Non-post包生成模塊進一步按HT 協(xié)議最大包長和邊界對齊要求,將PCIe Non-post讀包分拆為多個HT Non-post讀包,發(fā)送 至HT控制器模塊;HT Non-post讀包所需的HT請求序號由上行HT Srctag管理模塊提供。
22.如權(quán)利要求16所述的多個HT總線到單個PCIe總線的橋接方法,其特征在于,所述步驟1中,PCIE樹形交換模塊進一步分別輪詢各HT端口的相應(yīng)輸出緩沖區(qū),讀入 PCIe包,轉(zhuǎn)發(fā)給PCIe控制器模塊相應(yīng)的接收緩沖區(qū);所述步驟2中,PCIE樹形交換模塊進一步對于PCIe Post完成包和PCIeNon-post包, 從PCIE控制器模塊對應(yīng)緩沖區(qū)讀入PCIe包,根據(jù)全局地址映射關(guān)系,判斷高位地址所對應(yīng) HT端口號,將該PCIe包分發(fā)給相應(yīng)HT端口接收緩沖區(qū);對于PCIe完成包,根據(jù)所述PCIe 完成包的PCIe請求序號,確定目標HT端口號,完成分發(fā)。
全文摘要
本發(fā)明多個HT總線到單個PCIe總線的橋接裝置和方法,所述橋接裝置包括多個連接HT總線的HT端口和一個連接PCIe總線的PCIe端口;所述橋接裝置,用于均分PCIe請求序號,使用全局地址映射表和均分的請求序號實現(xiàn)HT端口和PCIe端口之間數(shù)據(jù)的傳送;所述全局地址映射表記錄每個HT端口和PCIe端口所占用的地址范圍;所述均分PCIe請求序號為對于各HT端口,分配用于所述HT端口使用的PCIe請求序號數(shù)目相同,并且分配的PCIe請求序號不重疊。本發(fā)明能夠?qū)崿F(xiàn)多個處理器能夠共享訪問PCIe外設(shè)裝置。
文檔編號G06F13/40GK101882126SQ20101023071
公開日2010年11月10日 申請日期2010年7月13日 優(yōu)先權(quán)日2010年7月13日
發(fā)明者劉銳, 孫凝暉, 安學軍, 曹政, 王凱, 胡濤, 陳飛 申請人:中國科學院計算技術(shù)研究所