用于源同步電路交換片上網(wǎng)絡(luò)(NoC)的方法、裝置和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本公開涉及計(jì)算系統(tǒng),特別(但非排外地)涉及經(jīng)由網(wǎng)絡(luò)來對(duì)信息進(jìn)行通信。
【附圖說明】
[0002] 圖1是包括多核心處理器的計(jì)算系統(tǒng)的框圖。
[0003] 圖2是根據(jù)本發(fā)明的實(shí)施例的NoC的框圖。
[0004] 圖3是根據(jù)本發(fā)明的實(shí)施例的針對(duì)流控制的信用跟蹤的狀態(tài)圖。
[0005] 圖4是根據(jù)本發(fā)明的實(shí)施例的有限狀態(tài)機(jī)的框圖。
[0006] 圖5是根據(jù)本發(fā)明的實(shí)施例的信用跟蹤電路的框圖。
[0007] 圖6是根據(jù)本發(fā)明的實(shí)施例的分組路由器輸入端口的框圖。
[0008] 圖7是根據(jù)本發(fā)明的實(shí)施例的分組路由器輸出端口的框圖。
[0009] 圖8是根據(jù)本發(fā)明的實(shí)施例的方法的流程圖。
[0010] 圖9是根據(jù)本發(fā)明的實(shí)施例的包括多個(gè)路由器的NoC的框圖。
[0011] 圖IOA-D是根據(jù)本發(fā)明的一個(gè)實(shí)施例的路由器的輸入端口和輸出端口的細(xì)節(jié)的 框圖。
[0012] 圖11是根據(jù)本發(fā)明的實(shí)施例的先進(jìn)先出(FIFO)緩沖器的框圖。
[0013] 圖12是根據(jù)本發(fā)明的實(shí)施例的示例NoC的框圖。
[0014] 圖13是根據(jù)本發(fā)明的實(shí)施例的片上系統(tǒng)(SOC)設(shè)計(jì)的實(shí)施例的框圖。
【具體實(shí)施方式】
[0015] 參考圖1,描繪了包括多核心處理器的計(jì)算系統(tǒng)的框圖的實(shí)施例。處理器100包括 任意的處理器或處理設(shè)備,例如微處理器、嵌入式處理器、數(shù)字信號(hào)處理器(DSP)、網(wǎng)絡(luò)處理 器、手持式處理器、應(yīng)用處理器、協(xié)同處理器、片上系統(tǒng)(SOC)、或用于執(zhí)行代碼的其它設(shè)備。 在一個(gè)實(shí)施例中,處理器100包括至少兩個(gè)核心一核心101和102,其可以包括不對(duì)稱核心 或?qū)ΨQ核心(圖示實(shí)施例)。然而,處理器100可以包括可以是對(duì)稱或不對(duì)稱的任意數(shù)量的 處理元件。
[0016] 在一個(gè)實(shí)施例中,處理元件指的是支持軟件線程的硬件或邏輯。硬件處理元件的 示例包括:線程單元、線程槽、線程、處理單元、上下文、上下文單元、邏輯處理器、硬件線程、 核心、和/或能夠保持處理器的狀態(tài)(例如,執(zhí)行狀態(tài)或架構(gòu)狀態(tài))的任意其它元件。換句 話說,在一個(gè)實(shí)施例中,處理元件指的是能夠獨(dú)立地與代碼(例如,軟件線程、操作系統(tǒng)、應(yīng) 用程序或其它代碼)相關(guān)聯(lián)的任意硬件。物理處理器(或處理器插座)通常指的是集成電 路,其可能包括任意數(shù)量的其它處理元件,例如核心或硬件線程。
[0017] 核心通常指的是位于集成電路上的能夠維持獨(dú)立架構(gòu)狀態(tài)的邏輯,其中每一個(gè)被 獨(dú)立維持的架構(gòu)狀態(tài)與至少一些專用執(zhí)行資源相關(guān)聯(lián)。與核心相反,硬件線程通常指的是 位于集成電路上的能夠維持獨(dú)立架構(gòu)狀態(tài)的任意邏輯,其中被獨(dú)立維持的架構(gòu)狀態(tài)共享對(duì) 執(zhí)行資源的訪問。如可以看出的,當(dāng)某些資源被共享并且其它資源專用于架構(gòu)狀態(tài)時(shí),硬件 線程和核心的術(shù)語(yǔ)間的界限重疊。然而通常,操作系統(tǒng)將核心和硬件線程視為單獨(dú)的邏輯 處理器,其中,操作系統(tǒng)能夠單獨(dú)調(diào)度每一個(gè)邏輯處理器上的操作。
[0018] 如圖1所示,物理處理器100包括兩個(gè)核心一核心101和102。這里,核心101和 102被認(rèn)為是對(duì)稱核心,即具有相同的配置、功能單元、和/或邏輯的核心。在另一實(shí)施例 中,核心101包括亂序處理器核心,而核心102包括有序處理器核心。然而,核心101和102 可以單獨(dú)地從任意類型的核心中選出,例如本地核心、軟件管理核心、適于執(zhí)行本地指令集 架構(gòu)(ISA)的核心、適于執(zhí)行轉(zhuǎn)換指令集架構(gòu)(ISA)的核心、協(xié)同設(shè)計(jì)的核心、或者其它已 知的核心。在異構(gòu)核心環(huán)境中(即,不對(duì)稱核心),可以利用某種形式的轉(zhuǎn)換(例如,二進(jìn)制 轉(zhuǎn)換)來調(diào)度或執(zhí)行一個(gè)或兩個(gè)核心上的代碼。然而為進(jìn)一步討論,在下文將更加詳細(xì)地 描述核心101中示出的功能單元,如核心102中的單元在所描繪的實(shí)施例中以類似的方式 進(jìn)行操作。
[0019] 如所描繪的,核心101包括兩個(gè)硬件線程IOla和101b,其還可以稱作硬件線程槽 IOla和101b。因此,在一個(gè)實(shí)施例中,諸如操作系統(tǒng)等軟件實(shí)體可能將處理器100視為四個(gè) 單獨(dú)的處理器,即,能夠并發(fā)執(zhí)行四個(gè)軟件線程的四個(gè)邏輯處理器或處理元件。如上所暗指 的,第一線程與架構(gòu)狀態(tài)寄存器IOla相關(guān)聯(lián),第二線程與架構(gòu)狀態(tài)寄存器IOlb相關(guān)聯(lián),第 三線程可以與架構(gòu)狀態(tài)寄存器102a相關(guān)聯(lián),以及第四線程可以與架構(gòu)狀態(tài)寄存器102b相 關(guān)聯(lián)。這里,架構(gòu)狀態(tài)寄存器(101a、101b、102a和102b)中的每一個(gè)可以如上所述指的是 處理元件、線程槽或線程單元。如圖所示,架構(gòu)狀態(tài)寄存器IOla在架構(gòu)狀態(tài)寄存器IOlb中 被復(fù)制,因此單獨(dú)的架構(gòu)狀態(tài)/上下文能夠存儲(chǔ)用于邏輯處理器IOla和邏輯處理器101b。 在核心101中,例如在分配器和重命名器框130中的指令指針和重命名邏輯之類的其它較 小資源也被復(fù)制用于線程IOla和101b。諸如重排序/引退單元135中的重排序緩沖器、 ILTB120、加載/存儲(chǔ)緩沖器、以及隊(duì)列等的一些資源可以通過分區(qū)被共享。諸如通用內(nèi)部 寄存器、頁(yè)-表基址寄存器、低級(jí)數(shù)據(jù)高速緩存和數(shù)據(jù)-TLB 115、執(zhí)行單元140以及亂序單 元135的一部分等的其它資源可能被完全共享。
[0020] 處理器100通常包括可以被完全共享、通過分區(qū)共享、或者專用于處理元件的其 它資源。在圖1中,示出了具有處理器的說明性邏輯單元/資源的純示例性處理器的實(shí)施 例。注意,處理器可以包括或省略這些功能單元中的任一個(gè),以及包括沒有繪出的任意其它 已知的功能單元、邏輯、或固件。如所示的,核心101包括簡(jiǎn)化的、代表性的亂序(〇〇〇)處 理器核心。但是在不同實(shí)施例中可以使用有序處理器。000核心包括用于預(yù)測(cè)將被執(zhí)行/ 采用的分支的分支目標(biāo)緩沖器102,以及用于存儲(chǔ)指令的地址轉(zhuǎn)換條目的指令轉(zhuǎn)換緩沖器 (I-TLB)120〇
[0021] 核心101還包括解碼模塊125,其被耦合到提取單元120以對(duì)所提取的元件進(jìn)行解 碼。在一個(gè)實(shí)施例中,提取邏輯包括分別與線程槽IOlaUOlb相關(guān)聯(lián)的單獨(dú)的定序器。通 常,核心101與定義/指定能在處理器100上執(zhí)行的指令的第一 ISA相關(guān)聯(lián)。通常,作為第 一 ISA的一部分的機(jī)器代碼指令包括引用/指定將被執(zhí)行的指令或操作的指令的一部分 (稱作操作碼)。解碼邏輯125包括根據(jù)其操作碼識(shí)別這些指令并且將解碼后的指令傳遞 到管線中以用于如由第一 ISA定義的進(jìn)行處理的電路。例如,如下文更詳細(xì)討論的,在一個(gè) 實(shí)施例中,解碼器125包括被設(shè)計(jì)成或適于識(shí)別諸如事務(wù)性指令等的具體指令的邏輯。作 為解碼器125識(shí)別的結(jié)果,架構(gòu)或核心101采取具體的、預(yù)先定義的動(dòng)作來執(zhí)行與適當(dāng)指令 相關(guān)聯(lián)的任務(wù)。重要的是,應(yīng)注意到,本文所描述的任務(wù)、框、操作和方法的任一個(gè)可以響應(yīng) 于單個(gè)指令或多個(gè)指令而被執(zhí)行;這些指令中的一些可以是新的或舊的指令。注意,在一個(gè) 實(shí)施例中,解碼器126識(shí)別同一 ISA(或者其子集)??商鎿Q地,在異構(gòu)核心環(huán)境中,解碼器 126識(shí)別第二ISA (第一 ISA的子集或不同的ISA)。
[0022] 在一個(gè)示例中,分配器和重命名器框130包括用于儲(chǔ)備資源的分配器,所述資源 例如是用于存儲(chǔ)指令處理結(jié)果的寄存器文件。然而,線程IOla和IOlb可能能夠亂序執(zhí)行, 其中分配器和重命名器塊130還儲(chǔ)備其它資源,例如用于跟蹤指令結(jié)果的重排序緩沖器。 單元130還可以包括寄存器重命名器,其用于將程序/指令參考寄存器重命名為處理器100 內(nèi)部的其它寄存器。重排序/引退單元135包括用于支持亂序執(zhí)行以及后來的被亂序執(zhí)行 的指令的有序引退的部件,例如,上述重排序緩沖器、加載緩沖器以及存儲(chǔ)緩沖器。
[0023] 在一個(gè)實(shí)施例中,調(diào)度器和執(zhí)行單元塊140包括用于對(duì)執(zhí)行單元上的指令/操作 進(jìn)行調(diào)度的調(diào)度器單元。例如,在具有可用的浮點(diǎn)執(zhí)行單元的執(zhí)行單元的端口上來對(duì)浮點(diǎn) 指令進(jìn)行調(diào)度。與執(zhí)行單元相關(guān)聯(lián)的寄存器文件也被包含以存儲(chǔ)信息指令處理結(jié)果。示例 性的執(zhí)行單元包括浮點(diǎn)執(zhí)行單元、整數(shù)執(zhí)行單元、跳轉(zhuǎn)執(zhí)行單元、加載執(zhí)行單元、存儲(chǔ)執(zhí)行 單元、以及其它已知的執(zhí)行單元。
[0024] 較低級(jí)別的數(shù)據(jù)高速緩存和數(shù)據(jù)轉(zhuǎn)換緩沖器(D-TLB) 150耦合到執(zhí)行單元140。數(shù) 據(jù)高速緩存用于存儲(chǔ)諸如數(shù)據(jù)操作數(shù)等的近期使用/操作的元素,這些元素可能保持在存 儲(chǔ)器一致性狀態(tài)。D-TLB用于存儲(chǔ)近期的虛擬地址/線性地址到物理地址的轉(zhuǎn)換。作為具 體示例,處理器可以包括頁(yè)表結(jié)構(gòu),其用于將物理存儲(chǔ)器分解為多個(gè)虛擬頁(yè)面。
[0025] 這里,核心101和102共享對(duì)較高級(jí)別或較遠(yuǎn)的高速緩存的訪問,所述較高級(jí)別 或較遠(yuǎn)的高速緩存例如是與片上接口 110相關(guān)聯(lián)的第二級(jí)高速緩存。注意,較高級(jí)別或較 遠(yuǎn)指的是提高的或變得更遠(yuǎn)離執(zhí)行單元的高速緩存級(jí)別。在一個(gè)實(shí)施例中,較高級(jí)別的高 速緩存是最后一級(jí)數(shù)據(jù)高速緩存一在處理器100上的存儲(chǔ)器層次中的最后一級(jí)的高速緩 存一例如,第二或第三級(jí)數(shù)據(jù)高速緩存。然而,較高級(jí)別的高速緩存并不如此受限,因?yàn)樗?可以與指令尚速緩存相關(guān)聯(lián)或包括指令尚速緩存。跟蹤尚速緩存(一種類型的指令尚速 緩存)可以在解碼器125之后被耦合以存儲(chǔ)近期解碼的軌跡。這里,指令可以是指宏指令 (即,解碼器識(shí)別出的通用指令),其可以解碼為多個(gè)微指令(微操作)。
[0026] 在所描繪的配置中,處理器100還包括片上接口模塊110。在歷史上,下文將更詳 細(xì)地描述的存儲(chǔ)器控制器已經(jīng)被包含于處理器100外部的計(jì)算系統(tǒng)。在該場(chǎng)景中,片上接 口 110用于與處理器100外部的設(shè)備進(jìn)行通信,所述設(shè)備例如是系統(tǒng)存儲(chǔ)器175、芯片組 (通常包括用于連接到存儲(chǔ)器175的存儲(chǔ)器控制器中心以及用于連接外圍設(shè)備的I/O控制 器中心)、存儲(chǔ)器控制器中心、北橋、或者其它集成電路。并且在該場(chǎng)景中,總線105可以包 括任意已知的互連,例如多點(diǎn)總線、點(diǎn)對(duì)點(diǎn)互連、串行互連、并行總線、一致性(例如,高速 緩存一致性)總線、分層協(xié)議架構(gòu)、差分總線、以及GTL總線。
[0027] 存儲(chǔ)器175可以專用于處理器100或與系統(tǒng)中其它設(shè)備共享。存儲(chǔ)器175的類型 的普通示例包括DRAM、SRAM、非易失性存儲(chǔ)器(NV存儲(chǔ)器)、以及其它已知的存儲(chǔ)設(shè)備。注 意,設(shè)備180可以包括圖形加速器、處理器或耦合到存儲(chǔ)器控制器中心的卡、耦合到I/O控 制器中心的數(shù)據(jù)存儲(chǔ)設(shè)備、無線收發(fā)器、閃速設(shè)備、音頻控制器、網(wǎng)絡(luò)控制器,或者其它已知 的設(shè)備。
[0028] 然而,最近,隨著更多的邏輯和設(shè)備正在被集成到單個(gè)管芯上(例如S0C),這些設(shè) 備的每一個(gè)可以被合并到處理器100上。例如,在一個(gè)實(shí)施例中,存儲(chǔ)器控制器中心與處理 器100在同一封裝和/或管芯上。這里,核心的一部分(核心上(on-core)部分)110包括一 個(gè)或多個(gè)控制器,其用于與諸如存儲(chǔ)器175或圖形設(shè)備180等的其它設(shè)備進(jìn)行連接。包括互 連和用于與這種設(shè)備進(jìn)行連接的控制器的配置通常被稱作核心上(或者非核心(un-core) 配置)。作為示例,片上接口 110包括用于片上通信的環(huán)形互連以及用于片外通信的高速串 行點(diǎn)對(duì)點(diǎn)鏈接105。但是,在SOC環(huán)境中,甚至更多的設(shè)備(例如,網(wǎng)絡(luò)接口、協(xié)同處理器、存 儲(chǔ)器175、圖形處理器180以及任意其它已知的計(jì)算機(jī)設(shè)備/接口)可以被集成到單個(gè)的管 芯或集成電路上,以提供小形狀因子以及具有高功能和低功率消耗。
[0029] 在一個(gè)實(shí)施例中,處理器100能夠執(zhí)行編譯器、優(yōu)化、和/或轉(zhuǎn)換器代碼177,以對(duì) 應(yīng)用程序代碼176進(jìn)行編譯、轉(zhuǎn)換、和/或優(yōu)化以支持本文描述的裝置和方法或者與其進(jìn)行 連接。編譯器通常包括用于將源文本/代碼轉(zhuǎn)換為目標(biāo)文本/代碼的程序或程序的集合。 通常,利用編譯器的對(duì)程序/應(yīng)用程序代碼的編譯在多個(gè)階段和多遍中完成,以將高級(jí)編 程語(yǔ)言代碼變換為低級(jí)機(jī)器或匯編語(yǔ)言代碼。