專利名稱:向星形拓?fù)浯锌偩€接口委托網(wǎng)絡(luò)處理器操作的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)和電信領(lǐng)域,更具體而言,本發(fā)明涉及用于計(jì)算機(jī)和電信應(yīng)用 中的高級(jí)處理器。
背景技術(shù):
現(xiàn)代計(jì)算機(jī)和電信系統(tǒng)具有極大的優(yōu)點(diǎn),包括能夠在全世界范圍內(nèi)進(jìn)行信息通 信。計(jì)算機(jī)和電信設(shè)備的常規(guī)架構(gòu)包括大量的分立電路,這導(dǎo)致處理能力和通信速度二者 的效率低。例如,圖1示出了這種采用大量分立芯片和技術(shù)的常規(guī)線卡。在圖1中,常規(guī)線 卡100包括以下分立部件分類部件102、業(yè)務(wù)管理器104、緩沖存儲(chǔ)器106、安全協(xié)處理 器108、傳輸控制協(xié)議(TCP)/網(wǎng)際協(xié)議(IP)卸載引擎110、L3+協(xié)處理器112、物理層設(shè)備 (PHY) 114、媒體存取控制(MAC) 116、分組轉(zhuǎn)發(fā)引擎118、結(jié)構(gòu)接口芯片120、控制處理器122、 動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM) 124、存取控制表(ACL)三重內(nèi)容可尋址存儲(chǔ)器(TCAM) 126和多 協(xié)議標(biāo)簽交換(MPLS)靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM) 128。該卡還包括交換結(jié)構(gòu)130,該交換 結(jié)構(gòu)130可以與其他卡和/或數(shù)據(jù)連接。處理器和其他部件的進(jìn)步已經(jīng)提高了電信設(shè)備處理、操作、存儲(chǔ)、檢索和傳送信息 的能力。近來(lái),工程師們已經(jīng)開始將多種功能組合到集成電路中,以便減少分立集成電路的 總數(shù)量,同時(shí)仍然以同樣或更好水平的性能執(zhí)行必要的功能。利用新技術(shù)增大芯片上的晶 體管數(shù)量的能力以及降低成本的愿望已經(jīng)對(duì)這種組合起了促進(jìn)作用。這些組合的集成電路 中的一些的功能已經(jīng)變得如此強(qiáng)大,以致于它們經(jīng)常被稱為芯片上系統(tǒng)(SOC)。然而,在芯 片上組合電路和系統(tǒng)可能會(huì)變得非常復(fù)雜并提出了很多工程難題。例如,硬件工程師希望 確保將來(lái)設(shè)計(jì)的靈活性,而軟件工程師希望確保他們的軟件也能運(yùn)行在芯片上和將來(lái)的設(shè) 計(jì)上。在高級(jí)交換和路由領(lǐng)域中,對(duì)新型尖端組網(wǎng)和通信應(yīng)用的需求一直在持續(xù)增長(zhǎng)。 此外,諸如內(nèi)容感知組網(wǎng)(content-aware networking)、高集成性安全和新形式的存儲(chǔ)管 理之類的方案正開始移植到靈活的多業(yè)務(wù)系統(tǒng)中。用于實(shí)現(xiàn)這些和其他下一代方案的技術(shù) 必須提供智能和高性能,并且具有靈活性,以迅速適應(yīng)新的協(xié)議和業(yè)務(wù)。為了利用這種高性能組網(wǎng)和數(shù)據(jù)處理能力,重要的是這樣的系統(tǒng)能夠優(yōu)選利用 標(biāo)準(zhǔn)化高帶寬總線與各種高帶寬外圍設(shè)備通信。盡管很多有專利權(quán)的高帶寬總線是可能 的,但是利用標(biāo)準(zhǔn)化總線允許系統(tǒng)與更寬范圍的各種外圍設(shè)備進(jìn)行接口,從而提高了系統(tǒng) 的總體價(jià)值和實(shí)用性。近年來(lái)流行的一種高帶寬標(biāo)準(zhǔn)化總線是PCI Express (PCI-E或PCIe)接口。PCIe 接口最初由Intel提出,作為非常普及但帶寬有限的個(gè)人計(jì)算機(jī)PCI接口的替代,PCIe接 口的帶寬大,而且由于PCIe接口現(xiàn)在已經(jīng)成為個(gè)人計(jì)算機(jī)主板上的標(biāo)準(zhǔn)部件,因此它也得 到了廣泛使用。目前有數(shù)百或數(shù)千不同的外圍設(shè)備可與PCIe接口 一起工作,使得這種接口 對(duì)于當(dāng)前的高級(jí)處理系統(tǒng)而言尤其有用。
較早的并行PCI系統(tǒng)遭遇了帶寬瓶頸,該帶寬瓶頸是由于保持大量的以高時(shí)鐘速 度彼此同步的并行電路線引起的,與該較早的并行PCI系統(tǒng)相反,PCIe系統(tǒng)是非??焖俚?串行系統(tǒng)。串行系統(tǒng)僅使用非常少數(shù)量的電路線,通常是使用兩根電路線來(lái)發(fā)送,使用兩根 電路線來(lái)接收,這種更簡(jiǎn)單的方案在高時(shí)鐘速度和高數(shù)據(jù)率下支持得更好。PCIe通過(guò)允許 多個(gè)串行電路而進(jìn)一步提高了帶寬。根據(jù)PCIe的結(jié)構(gòu),可以有少到1個(gè)雙向電路,或者多 到32個(gè)雙向串行電路。盡管在硬件層級(jí)上串行PCIe系統(tǒng)根本不同于較早的并行PCI系統(tǒng),但較早的PCI 系統(tǒng)極其成功,并且計(jì)算機(jī)行業(yè)已經(jīng)在較早代的PCI硬件和軟件中做了大量投資。為了幫 助帶寬高得多的PCIe系統(tǒng)與先前存在的PCI硬件和軟件基礎(chǔ)設(shè)施兼容,將PCIe設(shè)計(jì)成模 擬較早并行PCI數(shù)據(jù)傳輸協(xié)定中的很多協(xié)定。這樣,較早代的軟件能夠繼續(xù)對(duì)PCIe設(shè)備尋 址,如同它們是PCI設(shè)備一樣,并且PCIe電路將PCI數(shù)據(jù)發(fā)送和接收請(qǐng)求轉(zhuǎn)換成串行PCIe 數(shù)據(jù)分組,發(fā)送或接收這些數(shù)據(jù)分組,然后將串行PCIe數(shù)據(jù)分組重新組裝成可由最初為 PCI格式設(shè)計(jì)的軟件(和硬件)處理的格式。這種保持向后兼容同時(shí)又提供高得多帶寬的 PCIe設(shè)計(jì)意圖已經(jīng)成功了,并且PCIe現(xiàn)在已經(jīng)在計(jì)算機(jī)行業(yè)標(biāo)準(zhǔn)中得到廣泛使用。盡管其他工作人員,例 如Stufflebeam (美國(guó)專利7058738)已經(jīng)看到了將多個(gè)CPU 通過(guò)單個(gè)交換器(例如PCIe交換器)接口到多個(gè)I/O設(shè)備的某些問(wèn)題,但之前的這種工作 一直集中在復(fù)雜性較低且性能通常較低的多個(gè)CPU配置上,而這種配置不必應(yīng)對(duì)當(dāng)多個(gè)內(nèi) 核必須經(jīng)由其他高速(常常是芯片上的)通信環(huán)和互連來(lái)協(xié)調(diào)它們活動(dòng)時(shí)所造成的問(wèn)題。因此,需要的是一種能夠利用新技術(shù)并且同時(shí)還能夠提供高性能功能性的高級(jí)處 理器。此外,這種技術(shù)將是尤其有幫助的,它包含靈活的改造能力,例如包含利用諸如PCIe 總線等高帶寬星形拓?fù)淇偩€與多個(gè)高帶寬外圍設(shè)備進(jìn)行接口的能力。
發(fā)明內(nèi)容
本發(fā)明提供了用于克服所述局限的有用新結(jié)構(gòu)和技術(shù),并提供了一種高級(jí)處理 器,該高級(jí)處理器能夠利用新技術(shù),同時(shí)還能夠提供具有靈活修改能力的高性能功能性。本 發(fā)明采用了包括模塊化部件和通信結(jié)構(gòu)的高級(jí)架構(gòu)芯片上系統(tǒng)(SoC)以提供高性能的設(shè)備。這種高級(jí)處理器包括多個(gè)多線程處理器內(nèi)核,每個(gè)多線程處理器內(nèi)核都具有數(shù)據(jù) 高速緩沖存儲(chǔ)器和指令高速緩沖存儲(chǔ)器。數(shù)據(jù)交換互連(DSI)通過(guò)其相應(yīng)的數(shù)據(jù)高速緩沖 存儲(chǔ)器耦合到每個(gè)處理器內(nèi)核,并且數(shù)據(jù)交換互連(DSI)被配置為在處理器內(nèi)核之間傳遞 信息。還可以將2級(jí)(L2)高速緩沖存儲(chǔ)器、存儲(chǔ)器橋和/或超級(jí)存儲(chǔ)器橋耦合到數(shù)據(jù)交換 互連(DSI)并且2級(jí)(L2)高速緩沖存儲(chǔ)器、存儲(chǔ)器橋和/或超級(jí)存儲(chǔ)器橋用于存儲(chǔ)可由處 理器內(nèi)核訪問(wèn)的信息。消息收發(fā)網(wǎng)絡(luò)通過(guò)內(nèi)核的相應(yīng)指令高速緩沖存儲(chǔ)器(消息站)耦合到每個(gè)處理器 內(nèi)核。多個(gè)通信端口連接到消息收發(fā)網(wǎng)絡(luò)。在本發(fā)明的一個(gè)方面中,高級(jí)電信處理器還包 括耦合到消息收發(fā)網(wǎng)絡(luò)和多個(gè)通信端口的接口切換互連(ISI),所述接口切換互連(ISI) 用于在消息收發(fā)網(wǎng)絡(luò)和通信端口之間傳遞信息。這個(gè)接口切換互連也可以與超級(jí)存儲(chǔ)器橋 通信。超級(jí)存儲(chǔ)器橋也可以與一個(gè)或多個(gè)通信端口和前述DSI通信。在這里披露的本發(fā)明的實(shí)施例中,消息收發(fā)網(wǎng)絡(luò)和ISI連接到PCIexpress (PCIe)接口,使處理器能夠與很寬范圍的各種高帶寬PCIe外圍設(shè)備進(jìn)行接口。本發(fā)明的PCIe實(shí)施例的優(yōu)點(diǎn)包括能夠以高效、靈活和高成本效益的方式在計(jì)算 機(jī)系統(tǒng)和大量外圍設(shè)備之間提供高帶寬通信。
參考附圖來(lái)描述本發(fā)明,附圖中圖1示出了常規(guī)的線卡;圖2A示出了根據(jù)本發(fā)明實(shí)施例的示例性高級(jí)處理器,示出了 PCIe接口如何連接 到處理器;圖2B示出了根據(jù)本發(fā)明備選實(shí)施例的示例性高級(jí)處理器,再次示出了 PCIe接口 如何連接到處理器;圖3A示出了常規(guī)的單線程單發(fā)射處理;
圖3B示出了常規(guī)的簡(jiǎn)單多線程調(diào)度;圖3C示出了常規(guī)的具有停頓線程(stalled thread)的簡(jiǎn)單多線程調(diào)度;圖3D示出了根據(jù)本發(fā)明實(shí)施例的渴望輪詢(eager round-robin)調(diào)度;圖3E示出了根據(jù)本發(fā)明實(shí)施例的多線程固定周期調(diào)度;圖3F示出了根據(jù)本發(fā)明實(shí)施例的采用渴望輪詢調(diào)度的多線程固定周期;圖3G示出了根據(jù)本發(fā)明實(shí)施例的具有關(guān)聯(lián)接口單元的內(nèi)核;圖3H示出了根據(jù)本發(fā)明實(shí)施例的處理器的示例性流水線;圖31示出了根據(jù)本發(fā)明實(shí)施例的處理器內(nèi)的內(nèi)核中斷流水操作;圖3J示出了根據(jù)本發(fā)明實(shí)施例的可編程中斷控制器(PIC)操作;圖3K示出了根據(jù)本發(fā)明實(shí)施例的用于多個(gè)線程分配的返回地址堆棧(RAS);圖4A示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)交換互連(DSI)環(huán)裝置 (ringarrangement);圖4B示出了根據(jù)本發(fā)明實(shí)施例的DSI環(huán)部件;圖4C示出了根據(jù)本發(fā)明實(shí)施例的DSI中的示例性數(shù)據(jù)檢索的流程圖;圖5A示出了根據(jù)本發(fā)明實(shí)施例的快速消息收發(fā)環(huán)部件;圖5B示出了圖5A的系統(tǒng)所用的消息數(shù)據(jù)結(jié)構(gòu);圖5C示出了根據(jù)本發(fā)明實(shí)施例的連接到快速消息收發(fā)網(wǎng)絡(luò)(FMN)的各種主體 (agent)的概念圖;圖5D示出了常規(guī)處理系統(tǒng)中的的網(wǎng)絡(luò)業(yè)務(wù);圖5E示出了根據(jù)本發(fā)明實(shí)施例的分組流;圖5F示出了 PCIe接口如何連接到FMN/ISI和PCIeI/0總線的詳細(xì)視圖;圖5G示出了在FMN/ISI和PCIe接口之間發(fā)送的64比特字消息的數(shù)據(jù)字段概述;圖5H示出了 PCIe接口 DMA如何將來(lái)自處理器的消息轉(zhuǎn)換成PCIeTLP請(qǐng)求以及 PCIe接口 DMA如何重新組裝這些各種PCIe TLP分組的;圖51示出了一個(gè)流程圖,該流程圖示出了 PCIe讀請(qǐng)求和寫請(qǐng)求之間的確認(rèn)消息 的不對(duì)稱性;圖6A示出了根據(jù)本發(fā)明實(shí)施例的在四個(gè)線程上均勻分配分組的分組分配引擎
9(PDE);圖6B示出了根據(jù)本發(fā)明實(shí)施例的利用輪詢方案進(jìn)行分組分配的PDE ;圖6C示出了根據(jù)本發(fā)明實(shí)施例的在分組生命周期期間的分組排序設(shè)備(POD)布 置;以及圖6D示出了根據(jù)本發(fā)明實(shí)施例的POD輸出分配(outbounddistribution)。
具體實(shí)施例方式參考具體架構(gòu)和協(xié)議來(lái)描述本發(fā)明。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,說(shuō)明書用于例示 并提供了實(shí)施本發(fā)明的最佳模式。說(shuō)明書并非要進(jìn)行限制,所提到的電信和其他應(yīng)用可以 同樣適用于通用計(jì)算機(jī)應(yīng)用,例如服務(wù)器應(yīng)用、分布式共享存儲(chǔ)器應(yīng)用等。如本文所述,提 到了以太網(wǎng)協(xié)議、網(wǎng)際協(xié)議、超傳輸協(xié)議和其他協(xié)議,但本發(fā)明也可以適用于其他協(xié)議。此 外,提到了包含集成電路的芯片,同時(shí)可以想到以芯片形式組合這些所述集成電路的其他 混合電路或元電路。此外,提到了示例性MIPS架構(gòu)和指令集,但在本發(fā)明中可以使用其他 架構(gòu)和指令集。其他架構(gòu)和指令集例如包括x86、PowerPC, ARM等。A.架構(gòu)架構(gòu)是針對(duì)系統(tǒng)的,將系統(tǒng)設(shè)計(jì)成對(duì)在常規(guī)線卡上執(zhí)行的許多功能進(jìn)行合并且增 強(qiáng)線卡功能性。在一個(gè)實(shí)施例中,本發(fā)明是一種包括用于執(zhí)行很多分立功能的電路的集成 電路。對(duì)集成電路設(shè)計(jì)進(jìn)行調(diào)節(jié),以使其適應(yīng)通信處理。因此,處理器設(shè)計(jì)強(qiáng)調(diào)存儲(chǔ)器密集 型操作而不是計(jì)算密集型操作。處理器設(shè)計(jì)包括用于減輕處理器繁重的存儲(chǔ)器存取過(guò)程的 內(nèi)部網(wǎng)絡(luò),將存儲(chǔ)器存取過(guò)程委托給其他實(shí)體以進(jìn)行單獨(dú)處理。結(jié)果是高效率的存儲(chǔ)器存 取和線程處理。此外,本發(fā)明的一個(gè)實(shí)施例被設(shè)計(jì)成對(duì)在圖1的常規(guī)線卡上執(zhí)行的許多功能進(jìn)行 合并,且增強(qiáng)線卡功能性。在一個(gè)實(shí)施例中,本發(fā)明是一種包括用于執(zhí)行很多分立功能的電 路的集成電路。對(duì)集成電路設(shè)計(jì)進(jìn)行調(diào)節(jié),以使其適應(yīng)通信處理。因此,處理器設(shè)計(jì)強(qiáng)調(diào)存 儲(chǔ)器密集型操作而不是計(jì)算密集型操作。處理器設(shè)計(jì)包括用于如下所述的高效率存儲(chǔ)器存 取和線程處理的內(nèi)部網(wǎng)絡(luò)。圖2A示出了根據(jù)本發(fā)明實(shí)施例的示例性高級(jí)處理器(200)。高級(jí)處理器是一種能 夠執(zhí)行先前分派給特定集成電路的很多功能的集成電路。例如,高級(jí)處理器包括分組轉(zhuǎn)發(fā) 引擎、3層協(xié)處理器和控制處理器。根據(jù)需要,處理器可以包括其他部件。如這里所示,給定 示例性功能部件的數(shù)量,在示例性實(shí)施例中,功率消耗大約為20瓦。當(dāng)然,在本發(fā)明的其他 實(shí)施例中,功率消耗可以多于或少于大約20瓦。示例性處理器被設(shè)計(jì)為芯片上的網(wǎng)絡(luò)。分布式處理架構(gòu)允許部件彼此通信且不必 共享公共時(shí)鐘速率。例如,以較高速率對(duì)一個(gè)處理器部件進(jìn)行時(shí)鐘控制,而以較低速率對(duì)另 一個(gè)處理器部件進(jìn)行時(shí)鐘控制。網(wǎng)絡(luò)架構(gòu)還支持通過(guò)簡(jiǎn)單向網(wǎng)絡(luò)增加部件來(lái)在將來(lái)的設(shè)計(jì) 中增加其他部件的能力。例如,如果期望將來(lái)的通信接口,則可以將該接口布置于處理器芯 片上并將其耦合到處理器網(wǎng)絡(luò)。然后,可以把將來(lái)的處理器與新通信接口制造在一起。設(shè)計(jì)原則是創(chuàng)造一種能夠利用通用軟件工具和可重復(fù)使用的部件編程的處理器。 幾個(gè)支持這種設(shè)計(jì)原則的示例性特征包括靜態(tài)門設(shè)計(jì);低風(fēng)險(xiǎn)定制存儲(chǔ)器設(shè)計(jì);基于觸 發(fā)器的設(shè)計(jì);可測(cè)試性設(shè)計(jì),包括全掃描、存儲(chǔ)器內(nèi)置自我測(cè)試(BIST)、架構(gòu)冗余和測(cè)試儀器支持特征;功耗更低,包括門控時(shí)鐘;門控邏輯和存儲(chǔ)器換頁(yè);數(shù)據(jù)通路和控制分離,包 括智能引導(dǎo)布置;以及物理實(shí)現(xiàn)的快速反饋。軟件原則是能夠利用行業(yè)標(biāo)準(zhǔn)開發(fā)工具和環(huán)境。希望利用通用軟件工具和可重復(fù) 使用的部件來(lái)對(duì)處理進(jìn)行編程。行業(yè)標(biāo)準(zhǔn)工具和環(huán)境包括常見工具,例如gcc/gdb以及在 客戶或程序設(shè)計(jì)者選擇的環(huán)境中開發(fā)的能力。還希望通過(guò)提供硬件抽象層(HAL)定義來(lái)保護(hù)現(xiàn)有的和將來(lái)的代碼投資。這樣能 夠較容易地使現(xiàn)有的應(yīng)用和代碼與未來(lái)代的芯片兼容。談到CPU內(nèi)核,內(nèi)核被設(shè)計(jì)成適應(yīng)MIPS64,并具有在大約1. 5GHz+范圍內(nèi)的頻率目 標(biāo)。支持該架構(gòu)的另外示例性特征包括4路多線程單發(fā)射10級(jí)流水線;實(shí)時(shí)處理支持,包 括高速緩沖存儲(chǔ)器行同步(cache linelocking)和向量中斷支持;32 KB 4路組關(guān)聯(lián)的指 令高速緩沖存儲(chǔ)器;32KB4路組關(guān)聯(lián)的數(shù)據(jù)高速緩沖存儲(chǔ)器;以及128條目的翻譯旁視緩沖 器(TLB)。示例性實(shí)施例的一個(gè)重要方面是高速 處理器輸入/輸出(I/O),其由如下部件 支持兩個(gè)XGMII/SPI-4(例如圖2A的框228a和228b);三個(gè)IGbMAC ;—個(gè)能夠適應(yīng) 800/1600MHZ存儲(chǔ)器的16比特超傳輸(例如框232),該800/1600MHz存儲(chǔ)器包括一個(gè)閃存 部分(例如圖2A的框226)和兩個(gè)四倍數(shù)據(jù)率(QDR2)/雙倍數(shù)據(jù)率(DDR2) SRAM部分;能夠 適應(yīng)400/800MHZ的兩個(gè)64比特DDR2通道;以及包括PCIe (PCI擴(kuò)展或擴(kuò)展外圍部件互連) 端口(例如圖2A的框234)、聯(lián)合測(cè)試存取組(JTAG)和通用異步接收機(jī)/發(fā)射機(jī)(UART) (例如框226)的通信端口。PCIe 通信端口使用諸如PCIe總線之類的高帶寬星形拓?fù)浯型ㄐ趴偩€是有益的,這是因?yàn)樗?有助于擴(kuò)展處理器的能力和實(shí)用性。在討論如何能夠?qū)CIe技術(shù)集成到這種處理器中之 前,有必要對(duì)PCIe技術(shù)做更詳細(xì)的回顧。如前所述,PCIe總線由一個(gè)或更多個(gè)(通常是多個(gè))高帶寬雙向串行連接構(gòu)成。 每個(gè)雙向串行連接被稱為“通道”。這些串行連接輪流受到PCIe交換器的控制,PCIe交換 器能夠以星形拓?fù)渑渲迷诟鞣NPCIe外圍設(shè)備(器件)與PCIe交換器之間創(chuàng)建多個(gè)點(diǎn)到點(diǎn) 串行連接。結(jié)果,每個(gè)設(shè)備自身都直接串聯(lián)連接到交換器,而不必與其他設(shè)備共享該連接。 這種拓?fù)?,連同串行連接的更高固有速度,有助于提高PCIe總線的帶寬。為了進(jìn)一步增加 帶寬,PCIe設(shè)備能夠以1和32個(gè)通道連接到交換器。于是,需要更高帶寬的PCIe設(shè)備可 以采用更多個(gè)PCIe通道,而需要較低帶寬的PCIe設(shè)備可以采用較少的PCIe通道。注意,將串行總線接口到這種高級(jí)處理器的有效手段的當(dāng)前教導(dǎo)不限于PCIe協(xié) 議自身。如將要論述的,這些技術(shù)和方法適應(yīng)于與廣泛的各種不同星形拓?fù)涓咚俅锌偩€ 協(xié)議一起工作,各種不同星形拓?fù)涓咚俅锌偩€協(xié)議包括HyperTransport、InfiniBand, RapidIO和StarFabric。然而,為了簡(jiǎn)化論述,在本公開中將始終使用PCIe作為具體示例。如前所述,為了最大化地向后兼容先前存在的PCI并行總線,PCIe的設(shè)計(jì)人員選 擇了使PCIe總線的新串行方面對(duì)于系統(tǒng)硬件和軟件而言盡可能地透明(不容易覺察到)。 他們通過(guò)如下方式來(lái)實(shí)現(xiàn)這一點(diǎn)使PCIe總線的高級(jí)接口類似于較早的PCI總線,并且將 串行數(shù)據(jù)管理功能放在較低層上,從而先前存在的硬件和軟件將不必應(yīng)對(duì)非常不同的基于 PCIe分組的串行數(shù)據(jù)交換格式。這樣,PCIe數(shù)據(jù)分組發(fā)送廣泛的各種不同信號(hào),包括控制信號(hào)和中斷信號(hào)。可以在 Budruk> Anderson 禾口 Shanley, Mindeshare, Inc. (2004), Addisonffesley 的 “PCI express system architecture” 一書中找到關(guān)于 PCI express 的詳細(xì)信息。簡(jiǎn)而言之,PCIe協(xié)議由物理層(包含邏輯子層和電氣子層)、事務(wù)層和數(shù)據(jù)鏈路層 構(gòu)成。
物理層(有時(shí)稱為PIPE或PHY)控制著連接各PCIe設(shè)備的實(shí)際串行線。它允許設(shè) 備與中央PCIe交換器形成一個(gè)或多個(gè)串行雙向“通道”,并利用每個(gè)設(shè)備具體的硬件和帶 寬需求來(lái)精確確定應(yīng)當(dāng)給設(shè)備分配多少通道。由于所有通信都是通過(guò)串行鏈路進(jìn)行的,因 此其他消息,例如中斷和控制信號(hào)也是通過(guò)這些通道由串行數(shù)據(jù)分組發(fā)送的。不是使用時(shí) 鐘脈沖來(lái)同步數(shù)據(jù)(這樣使用大量的帶寬),而是利用順序的8比特/10比特編碼方案來(lái)發(fā) 送數(shù)據(jù)分組,該8比特/10比特編碼方案自身攜帶有充足的時(shí)鐘信息,以確保設(shè)備不會(huì)失去 一個(gè)字節(jié)在哪里開始,另一個(gè)字節(jié)在哪里結(jié)束的線索。如果通過(guò)多個(gè)通道向設(shè)備發(fā)送數(shù)據(jù), 通常會(huì)對(duì)這種數(shù)據(jù)進(jìn)行交織,在不同通道上發(fā)送順序的字節(jié),這進(jìn)一步提高了速度。PCIe的 速度通常在2. 5吉比特/秒的范圍內(nèi),不遠(yuǎn)的將來(lái)要設(shè)計(jì)更快的設(shè)備。事務(wù)層嚴(yán)格管理在任何給定時(shí)刻串行通道上進(jìn)行的是什么類別的業(yè)務(wù)。它采用的 是基于信用的流控制。PCIe設(shè)備向它們具有的任何額外接收緩沖器發(fā)信號(hào)(獲得信用)。 無(wú)論何時(shí)只要發(fā)送設(shè)備向接收設(shè)備發(fā)送事務(wù)層分組(在這里稱為PCIe-TLP,以將其與不同 的“線程級(jí)并行性”(縮寫TLP)區(qū)分開),發(fā)送設(shè)備都利用該帳戶推斷出信用,從而確保未 超過(guò)接收設(shè)備的緩沖能力。在接收設(shè)備已經(jīng)處理過(guò)數(shù)據(jù)時(shí),它向發(fā)送設(shè)備發(fā)回信號(hào),用信號(hào) 通知其再次具有空閑緩沖器了。通過(guò)這種方式,可以可靠地發(fā)送相當(dāng)多的PCIe-TLP,而不會(huì) 因?yàn)獒槍?duì)各個(gè)PCIe-TLP的大量返回握手信號(hào)而使帶寬擁堵。數(shù)據(jù)鏈路層處理事務(wù)層分組。為了檢測(cè)任何PCIe-TLP發(fā)送或接收錯(cuò)誤,數(shù)據(jù)鏈路 層為PCIe-TLP捆綁32比特的CRC校驗(yàn)和。如果因?yàn)橐恍┰蚪o定的PCIe-TLP未通過(guò)校 驗(yàn)和校驗(yàn),則利用獨(dú)立式數(shù)據(jù)鏈路層分組(DLLP)將這種失敗作為NAK發(fā)回發(fā)端設(shè)備。發(fā)端 設(shè)備然后可以重新發(fā)送PCIe-TLP。將在本論述的后面給出如何將PCIe總線與高級(jí)處理器集成的更多細(xì)節(jié)。除了 PCIe總線之外,接口可以包含很多其他類型的設(shè)備。作為接口的一部分,還 包括兩個(gè)簡(jiǎn)化的GMII (RGMII)(例如圖2A的框230a和230b)端口。此外,安全加速引擎 (SAE)(例如圖2A的框238)可以將基于硬件的加速應(yīng)用于諸如加密、解密、鑒別和密鑰生成 等安全功能。這樣的特征能夠幫助軟件提供高性能安全應(yīng)用,例如IPSec和SSL。CPU的架構(gòu)原則是優(yōu)化線程級(jí)并行性(TLP)而不是指令級(jí)并行性(ILP),包括受益 于TLP架構(gòu)的組網(wǎng)工作負(fù)荷,并保持工作負(fù)荷小。該架構(gòu)允許在單個(gè)芯片上實(shí)現(xiàn)多個(gè)CPU實(shí)例化,這又支持可擴(kuò)縮性。通常,超標(biāo)量 設(shè)計(jì)在受存儲(chǔ)器限制的問(wèn)題上具有最小的性能收益。主動(dòng)分支預(yù)測(cè)對(duì)于這種處理器應(yīng)用而 言通常是多余的,甚至可能是浪費(fèi)的。示例性實(shí)施例采用窄流水線,這是因?yàn)樗鼈兺ǔ>哂懈玫念l率可擴(kuò)縮性。因此, 存儲(chǔ)器延遲不像在其他種類處理器中那樣成為一個(gè)大問(wèn)題,事實(shí)上,如下所述,可以通過(guò)多 線程方式有效地隱藏任何存儲(chǔ)器延遲。本發(fā)明的實(shí)施例可以利用無(wú)阻塞式加載、在CPU接口處進(jìn)行存儲(chǔ)器重新排序以及用于信號(hào)量和存儲(chǔ)器屏障的專用指令來(lái)優(yōu)化存儲(chǔ)器子系統(tǒng)。在本發(fā)明的一個(gè)方面中,處理器可以獲取和發(fā)出被增加到加載/存儲(chǔ)的語(yǔ)義。在 本發(fā)明實(shí)施例的另一方面中,處理器能夠?yàn)槎〞r(shí)器支持采用特殊的原子遞增。如上所述,多線程CPU相對(duì)于常規(guī)技術(shù)提供了多個(gè)優(yōu)點(diǎn)。本發(fā)明的示例性實(shí)施例 采用了細(xì)粒度多線程操作,其能夠每個(gè)時(shí)鐘切換線程并且具有4個(gè)線程可用于發(fā)射。多線程方面提供了如下優(yōu)點(diǎn)利用了由長(zhǎng)延遲操作導(dǎo)致的空閑周期;針對(duì)面積與 性能矛盾進(jìn)行了優(yōu)化;對(duì)于受存儲(chǔ)器限制的應(yīng)用而言是理想的;實(shí)現(xiàn)了存儲(chǔ)器帶寬的最佳 利用;存儲(chǔ)器子系統(tǒng);利用M0SI (修改、自有、共享、無(wú)效)協(xié)議的高速緩沖存儲(chǔ)器一致性; 全圖高速緩沖存儲(chǔ)器目錄,包括相對(duì)于廣播監(jiān)聽方式減少了監(jiān)聽?zhēng)挷⒃黾恿丝蓴U(kuò)縮性; 大的芯片上共享雙存儲(chǔ)體2MB L2高速緩沖存儲(chǔ)器;錯(cuò)誤檢查和糾正(ECC)保護(hù)的高速緩沖 存儲(chǔ)器和存儲(chǔ)器;2個(gè)64比特的400/800 DDR2通道(例如12. 8GByte/s峰值帶寬)安全 流水線;支持芯片上標(biāo)準(zhǔn)安全功能(例如AES、DES/3DES、SHA-1、MD5和RSA);允許功能級(jí) 聯(lián)(例如加密_ >簽名)以減少存儲(chǔ)器存??;每個(gè)安全流水線4Gb帶寬,RSA除外;芯片上 的交換互連;用于芯片內(nèi)通信的消息傳遞機(jī)制;超級(jí)塊之間的點(diǎn)到點(diǎn)連接,以相對(duì)于共享 總線方式提供更大的可擴(kuò)縮性;用于數(shù)據(jù)消息收發(fā)的16字節(jié)全雙工鏈路(例如,在1GHz下 每個(gè)鏈路32GB/S的帶寬);以及基于信用的流控制機(jī)制。用于多個(gè)處理器內(nèi)核的多線程技術(shù)的一些優(yōu)點(diǎn)包括存儲(chǔ)器時(shí)延容許和故障容許。圖2B示出了根據(jù)本發(fā)明備選實(shí)施例的示例性高級(jí)處理器。提供本實(shí)施例是為了 展示可以修改該架構(gòu)以容納其他部件,例如視頻處理器215。在這種情況下,視頻處理器可 以與處理器內(nèi)核、通信網(wǎng)絡(luò)(例如DSI和消息收發(fā)網(wǎng)絡(luò))以及其他部件通信。B.處理器內(nèi)核和多線程圖2A的示例性高級(jí)處理器200包括多個(gè)多線程處理器內(nèi)核210a_h。每個(gè)示例性內(nèi) 核包括相關(guān)聯(lián)的數(shù)據(jù)高速緩沖存儲(chǔ)器212a_h以及指令高速緩沖存儲(chǔ)器214a_h。數(shù)據(jù)交換 互連(DSI)216可以耦合到處理器內(nèi)核210a-h中的每一個(gè),并且數(shù)據(jù)交換互連(DSI)216用 于在處理器內(nèi)核之間以及在L2高速緩沖存儲(chǔ)器208和用于主存儲(chǔ)器存取的存儲(chǔ)器橋206、 208之間傳遞數(shù)據(jù)。此外,消息收發(fā)網(wǎng)絡(luò)222可以耦合到處理器內(nèi)核210a-h和多個(gè)通信端 口 240a-f中的每一個(gè)。盡管圖2A中示出了八個(gè)內(nèi)核,但在本發(fā)明中可以使用更少或更多 數(shù)量的內(nèi)核。類似地,在本發(fā)明的各方面中,內(nèi)核可以執(zhí)行不同的軟件程序和例程,甚至運(yùn) 行不同的操作系統(tǒng)。在希望在較老的操作系統(tǒng)下在一個(gè)或多個(gè)內(nèi)核上運(yùn)行舊式軟件、以及 希望在一不同操作系統(tǒng)(多個(gè)操作系統(tǒng))下在一個(gè)或多個(gè)其他內(nèi)核上運(yùn)行更新的軟件的情 況下,在單個(gè)統(tǒng)一平臺(tái)之內(nèi)的不同內(nèi)核上運(yùn)行不同軟件程序和操作系統(tǒng)的能力可能尤其有 用。類似地,由于示例性處理器允許在統(tǒng)一平臺(tái)之內(nèi)組合多個(gè)獨(dú)立功能,因此在內(nèi)核上運(yùn)行 多個(gè)不同軟件和操作系統(tǒng)的能力意味著可以繼續(xù)使用與被組合的獨(dú)立功能相關(guān)聯(lián)的異類 軟件(disparate software)。示例性處理器包括能夠進(jìn)行多線程操作的多個(gè)CPU內(nèi)核210a_h。在示例性實(shí)施例 中,有八個(gè)4路多線程兼容MIPS64的CPU,常常將其稱為處理器內(nèi)核。本發(fā)明的實(shí)施例可以 包括32個(gè)硬件上下文(hardware context),CPU內(nèi)核可以工作在大約1. 5GHz。本發(fā)明的 一個(gè)方面是多個(gè)CPU內(nèi)核的冗余性和容錯(cuò)性質(zhì)。因此,例如,如果內(nèi)核之一發(fā)生故障,則其 他內(nèi)核會(huì)繼續(xù)工作,并且系統(tǒng)的總體性能僅會(huì)稍微下降。在一個(gè)實(shí)施例中,可以將第九處理器內(nèi)核增加到架構(gòu)上,從而用高可靠性確保有八個(gè)內(nèi)核是起作用的。多線程內(nèi)核方案可以允許軟件更有效地使用在很多分組處理應(yīng)用中固有的并行 性。大多數(shù)常規(guī)處理器使用單發(fā)射、單線程架構(gòu),但這在典型的組網(wǎng)應(yīng)用中具有性能限制。 在本發(fā)明的各方面中,多個(gè)線程 可以執(zhí)行不同的軟件程序和例程,甚至運(yùn)行不同的操作系 統(tǒng)。類似于上文針對(duì)內(nèi)核所述,在希望在老的操作系統(tǒng)下在一個(gè)或多個(gè)線程上運(yùn)行舊式軟 件、以及希望在一不同操作系統(tǒng)(多個(gè)操作系統(tǒng))下在一個(gè)或多個(gè)其他線程上運(yùn)行更新的 軟件的情況下,這種在單個(gè)統(tǒng)一平臺(tái)之內(nèi)的不同線程上運(yùn)行不同軟件程序和操作系統(tǒng)的能 力可能尤其有用。類似地,由于示例性處理器允許在統(tǒng)一平臺(tái)之內(nèi)組合多個(gè)獨(dú)立功能,因此 在線程上運(yùn)行多個(gè)不同軟件和操作系統(tǒng)的能力意味著可以繼續(xù)使用與被組合的獨(dú)立功能 相關(guān)聯(lián)的異類軟件。下文論述的是本發(fā)明對(duì)單線程和多線程應(yīng)用的性能進(jìn)行改善所采用的 一些技術(shù)。現(xiàn)在參考圖3A,示出了常規(guī)的單線程單發(fā)射處理,并且該常規(guī)的單線程單發(fā)射處 理由總附圖標(biāo)記300A表示。在方框的頂部示出了周期序號(hào)。方框之內(nèi)的“A”可以代表第 一分組,方框之內(nèi)的“B”可以代表下一個(gè)分組。方框之內(nèi)的下標(biāo)數(shù)字可以代表分組指令和/ 或段。如圖所示,高速緩沖存儲(chǔ)器未命中(cache miss)之后的浪費(fèi)周期5_10是由于未為 執(zhí)行準(zhǔn)備好其他指令造成的。系統(tǒng)必須實(shí)質(zhì)性停止以適應(yīng)固有的存儲(chǔ)器延時(shí),并且這是不 希望出現(xiàn)的。對(duì)于很多處理器而言,通過(guò)每個(gè)周期執(zhí)行更多指令來(lái)改善性能,從而提供指令級(jí) 并行性(ILP)。在這種方式中,向架構(gòu)增加更多功能單元,以便每個(gè)周期執(zhí)行多個(gè)指令。這 種方式也被稱為單線程多發(fā)射處理器設(shè)計(jì)。盡管與單發(fā)射設(shè)計(jì)相比提供了一些改進(jìn),但由 于分組處理應(yīng)用通常具有高延遲性質(zhì),因此性能一般仍然受到影響。具體而言,長(zhǎng)延時(shí)存儲(chǔ) 器參考通常導(dǎo)致類似的低效率和更大的總能力損失。作為備選方式,可以使用多線程單發(fā)射架構(gòu)。這種方式利用并更充分利用了通常 會(huì)在組網(wǎng)應(yīng)用中發(fā)現(xiàn)的分組級(jí)并行性。簡(jiǎn)而言之,適當(dāng)設(shè)計(jì)的多線程處理器可以有效隱藏 存儲(chǔ)器延時(shí)。因此,在這種線程化設(shè)計(jì)中,當(dāng)一個(gè)線程變得不活動(dòng)而等待存儲(chǔ)器數(shù)據(jù)返回 時(shí),其他線程仍然能夠處理指令。這可以通過(guò)使其他簡(jiǎn)單的多發(fā)射處理器經(jīng)受的浪費(fèi)周期 最小化來(lái)使處理器利用率最大化。現(xiàn)在參考圖3B,示出了常規(guī)的簡(jiǎn)單多線程調(diào)度,并且該常規(guī)的簡(jiǎn)單多線程調(diào)度由 總附圖標(biāo)記300B表示。指令調(diào)度器(IS)302B能夠接收四個(gè)線程A,B,C和D,如IS 302B 左側(cè)的框中所示。每個(gè)周期可以簡(jiǎn)單地以“輪詢”方式從每個(gè)線程中選擇不同的分組指令, 如圖所示。只要每個(gè)線程具有可用于發(fā)射的指令,這種方式通常就能夠工作得很好。然而, 這種“規(guī)則的”指令發(fā)射模式通常不能在實(shí)際組網(wǎng)應(yīng)用中持續(xù)。諸如指令高速緩沖存儲(chǔ)器 未命中、數(shù)據(jù)高速緩沖存儲(chǔ)器未命中、數(shù)據(jù)使用互鎖和硬件資源不可用之類的常見因素可 能會(huì)使流水線停頓。現(xiàn)在參考圖3C,示出了常規(guī)的具有停頓線程的簡(jiǎn)單多線程調(diào)度,其由總附圖標(biāo)記 300C表示。指令調(diào)度器(IS) 302C能夠接收四個(gè)線程A,B和C,以及空的“D”線程。如圖 所示,常規(guī)的輪詢調(diào)度導(dǎo)致浪費(fèi)周期4、8和12,如果D線程可用的話,來(lái)自D線程的指令會(huì) 落在這些位置。在本示例中,在圖示的時(shí)間段內(nèi),流水線效率損失為25%。這種方案的改進(jìn) 是“渴望”輪詢調(diào)度方案,其被設(shè)計(jì)成用于克服這種效率損失。
現(xiàn)在參考圖3D,示出了根據(jù)本發(fā)明實(shí)施例的渴望輪詢調(diào)度,并且該渴望輪詢調(diào)度 由總附圖標(biāo)記300D表示。圖示的線程和可用指令與圖3C中所示的線程和可用指令相同。 然而,在圖3D中,線程可以由渴望輪詢調(diào)度器(ERRS)302D來(lái)接收。只要有指令需要處理, 則渴望輪詢方案就順次發(fā)出來(lái)自每個(gè)線程的指令,從而能夠保持流水線是充滿的。當(dāng)一個(gè) 線程正在“休眠”而未發(fā)出指令時(shí),調(diào)度器能夠例如以每三個(gè)時(shí)鐘周期一個(gè)的速率發(fā)出來(lái)自 其余三個(gè)線程的指令。類似地,如果兩個(gè)線程不活動(dòng),則調(diào)度器能夠以每其他時(shí)鐘周期一個(gè) 的速率發(fā)出來(lái)自兩個(gè)活動(dòng)線程的指令。這種方式的重大優(yōu)點(diǎn)是能夠以全速運(yùn)行一般應(yīng)用, 例如不能充分利用4路多線程的那些應(yīng)用。其他適當(dāng)?shù)姆绞桨ǘ嗑€程固定周期調(diào)度?,F(xiàn)在參考圖3E,示出了示例性多線程固定周期調(diào)度,并且該示例性多線程固定周 期調(diào)度由總附圖標(biāo)記300E表示。指令調(diào)度器(IS) 302E能夠從四個(gè)活動(dòng)線程接收指令,該 四個(gè)活動(dòng)線程是A,B,C和D,如圖所示。在這種可編程固定周期調(diào)度中,在切換到另一線程 之前,可以為給定線程提供固定數(shù)量的周期。在圖示的示例中,在從線程B發(fā)出任何指令之 前,線程A發(fā)出256條指令,這可以是系統(tǒng)中允許的最大數(shù)量。一旦線程B開始,它可以在 將流水線交接到線程C之前發(fā)出200條指令,等等。現(xiàn)在參考圖3F,示出了采用渴望輪詢調(diào)度的示例性多線程固定周期,并且該示例 性多線程固定周期由總附圖標(biāo)記300F表示。指令調(diào)度器(IS)302F能夠從四個(gè)活動(dòng)線程接收指令,該四個(gè)活動(dòng)線程是A,B,C和 D,如圖所示??梢允褂眠@種方式以便在遇到停頓狀況時(shí)使流水線效率最大化。例如,如果 線程A在發(fā)出256條指令之前遇到停頓(例如高速緩沖存儲(chǔ)器未命中),則可以通過(guò)輪詢 方式使用其他線程來(lái)“填充”可能會(huì)浪費(fèi)的周期。在圖3F中所示的示例中,在周期7之后, 在訪問(wèn)線程A的指令時(shí)發(fā)生了停頓狀況,在這一點(diǎn)調(diào)度器可以在周期8切換到線程B。類 似地,在周期13之后,在訪問(wèn)線程B的指令時(shí)發(fā)生了另一個(gè)停頓狀況,因此調(diào)度器然后可以 在周期14切換到線程C。在本示例中,在訪問(wèn)線程C的指令期間沒有發(fā)生停頓,因此線程C 的調(diào)度可以繼續(xù),一直持續(xù)到為該線程編程的限制(例如200),從而可以在周期214將最后 的C線程指令放在流水線中?,F(xiàn)在參考圖3G,示出了根據(jù)本發(fā)明實(shí)施例的具有關(guān)聯(lián)接口單元的內(nèi)核,并且 該具有關(guān)聯(lián)接口單元的內(nèi)核由總附圖標(biāo)記300G表示。內(nèi)核302G可以包括取指令單 元(IFU)304G、指令高速緩沖存儲(chǔ)器單元(I⑶)306G、解耦緩沖器308G、存儲(chǔ)器管理單元 (MMU)310G、指令執(zhí)行單元(IEU)312G和加載/存儲(chǔ)單元(LSU)314。IFU 304G能夠與ICU 306G接口,IEU 312G能夠與LSU 314接口。ICU 306G也能夠與交換塊(SWB)/ 二級(jí)(L2) 高速緩沖存儲(chǔ)器塊316G接口。LSU 314G可以是一級(jí)(L1)數(shù)據(jù)高速緩沖存儲(chǔ)器,也可以與 SWB/L2316G接口。IEU 312G可以與消息(MSG)塊318G接口,并且消息(MSG)塊318G也可 以與SWB 320G接口。此外,根據(jù)實(shí)施例使用的寄存器322G可以包括線程ID(TID)、程序計(jì) 數(shù)器(PC)和數(shù)據(jù)字段。根據(jù)本發(fā)明的實(shí)施例,每個(gè)MIPS架構(gòu)內(nèi)核具有單個(gè)物理流水線,但是每個(gè)MIPS架 構(gòu)內(nèi)核可以被配置為支持多線程功能(即四個(gè)“虛擬”內(nèi)核)。在組網(wǎng)應(yīng)用中,與常規(guī)計(jì)算 型指令方案不同,線程更可能在存儲(chǔ)器存取或其他長(zhǎng)延時(shí)操作時(shí)等待。這樣,可以使用本文 論述的調(diào)度方法來(lái)改善系統(tǒng)的總效率?,F(xiàn)在參考圖3H,示出了示例性10級(jí)(即周期)處理器流水線,并且該處理器流水線由總附圖標(biāo)記300H表示。在一般操作中,每條指令可以沿流水線進(jìn)行并花費(fèi)10個(gè)周期 或10級(jí)來(lái)執(zhí)行。然而,在任何給定時(shí)間點(diǎn),可以有多達(dá)10個(gè)占據(jù)每一級(jí)的不同指令。因此, 該示例性流水線的吞吐量可以是每個(gè)周期完成1條指令。將圖3G和圖3H—起來(lái)看,周期1_4例如可以代表IFU 304G的操作。在圖3H中, 級(jí)或周期1(IPG級(jí))可以包括調(diào)度來(lái)自不同線程的指令(線程調(diào)度302H)。這種線程調(diào)度例 如可以包括輪詢、加權(quán)輪詢(WRR)或渴望輪詢。此外,可以在IPG級(jí)中產(chǎn)生指令指針(IP)。 從ICU 306G取出指令可以發(fā)生在級(jí)2(FET)和3 (FE2)中,并且從ICU 306G取出指令可以 在級(jí)2中的指令取出開始304H中發(fā)起。在級(jí)3中,可以開始分支預(yù)測(cè)306H和/或返回地 址堆棧(RAS)(跳轉(zhuǎn)寄存器)310H,并且分支預(yù)測(cè)306H和/或返回地址堆棧(RAS)(跳轉(zhuǎn)寄 存器)310H可以在級(jí)4(DEC)中完成。在級(jí)4中,還可以返回取出的指令(指令返回308H)。 接下來(lái),可以將指令以及其他相關(guān)信息傳遞到級(jí)5并還可以將指令以及其他相關(guān)信息置于 解耦緩沖器308G中。圖3H的示例性流水線操作的級(jí)5-10可以表示IEU 312G的操作。在級(jí)5(REG) 中,可以對(duì)指令解碼,并可以完成任何所需要的寄存器查找(寄存器查找314H)。同樣在級(jí) 5中,冒險(xiǎn)檢測(cè)邏輯(LD-使用冒險(xiǎn)316H)可以判斷是否需要停頓。如果需要停頓,則冒險(xiǎn) 檢測(cè)邏輯可以向解耦緩沖器308G發(fā)送信號(hào),以重放指令(例如解耦/重放312H)。然而, 如果未發(fā)出信號(hào)通知這種重放,則可以改為從解耦緩沖器308G取出指令。此外,在一些情 況下,例如在冒險(xiǎn)/相關(guān)性是由未決的長(zhǎng)延時(shí)操作(例如數(shù)據(jù)高速緩沖存儲(chǔ)器未命中)造 成的情況下,可以不重放線程而是將其置于休眠。在級(jí)6(EXE)中,可以“執(zhí)行”指令,其例 如包括ALU/移位和/或其他操作(例如ALU/移位/OP 318H)。在級(jí)7 (MEM)中,可以開始 數(shù)據(jù)存儲(chǔ)操作,并可以解析分支的結(jié)果(分支解析320H)。此外,數(shù)據(jù)存儲(chǔ)器查找可以延續(xù) 到擴(kuò)展級(jí)7、8(RTN)和9(RT2),并可以由級(jí)9(RT2)返回加載數(shù)據(jù)(加載返回322H)。在級(jí) 10(WRB),可以提交或收回指令,并可以針對(duì)特定指令最終更新所有關(guān)聯(lián)的寄存器。通常,如此設(shè)計(jì)架構(gòu),使得在流水線中沒有停頓。采取這種方式既為了實(shí)現(xiàn)的簡(jiǎn)易 性也為了增大工作頻率。然而,有一些情況需要流水線停頓或停止。在這樣的情況下,解耦 緩沖器308G(可以將其視為IFU 304G的功能部分)可以允許從停止點(diǎn)重新開始或“重放”, 從而代替必須清洗整個(gè)流水線并重新開始線程以實(shí)現(xiàn)停頓。例如,可以由IFU 304G向解耦 緩沖器308G提供信號(hào)來(lái)指示需要停頓。在一個(gè)實(shí)施例中,解耦緩沖器308G可以充當(dāng)指令 的隊(duì)列,由此IFU 304G獲得的每個(gè)指令也進(jìn)入解耦緩沖器308G。在這種隊(duì)列中,可以基于 如上所述的特定線程調(diào)度來(lái)亂序調(diào)度指令。如果向解耦緩沖器308G發(fā)送信號(hào)以請(qǐng)求停頓, 則可以對(duì)“停止”點(diǎn)之后的那些指令重新線程化。另一方面,如果未請(qǐng)求停頓,則可以簡(jiǎn)單 地從解耦緩沖器取出指令并繼續(xù)流水線。因此,在沒有停頓的情況下,解耦緩沖器308G可 以基本像先入先出(FIFO)緩沖器一樣。然而,如果幾個(gè)線程之一請(qǐng)求停頓,則其余線程可 以通過(guò)緩沖器繼續(xù)進(jìn)行,并且不對(duì)它們進(jìn)行阻擋。作為本發(fā)明實(shí)施例的另一方面,可以將翻譯旁視緩沖器(TLB)作為諸如圖3G的 MMU 310G之類的存儲(chǔ)器管理單元(MMU)的一部分來(lái)管理。這可以包括在多個(gè)線程之間進(jìn) 行獨(dú)立的以及公共的TLB分配。128條目的TLB可以包括64條目的共用主TLB和兩個(gè)32 條目的微TLB,兩個(gè)32條目的微TLB各用于指令和數(shù)據(jù)側(cè)。在不能通過(guò)訪問(wèn)相關(guān)的微TLB 來(lái)滿足翻譯時(shí),可以向主TLB發(fā)送請(qǐng)求。如果主TLB也不包含期望的條目,則發(fā)生中斷或陷
16阱。為了保持符合MIPS架構(gòu),主TLB可以支持成對(duì)條目(例如映射到不同物理頁(yè)的一 對(duì)連續(xù)虛擬頁(yè))、可變頁(yè)面大小(例如4K到256M)和經(jīng)由TLB讀取/寫入指令的軟件管理。 為了支持多個(gè)線程,可以利用安裝了微TLB和主TLB中的條目的線程的線程ID(TID)對(duì)微 TLB和主TLB中的條目進(jìn)行標(biāo)記。此外,主TLB可以在至少兩種模式下操作。在“分區(qū)”模 式(partitioned mode)下,可以為每個(gè)活動(dòng)線程分配主TLB的唯一子集或部分,以安裝條 目,并且在翻譯期間,每個(gè)線程僅看到屬于自己的條目。在“全局”模式下,任何線程可以分 配主TLB任何部分中的條目,并且所有條目對(duì)所有線程都是可見的。在主TLB寫入期間可 以使用“去映射”機(jī)制以確保不會(huì)由不同的線程引入交迭的翻譯。作為一個(gè)示例,可以使用最近不用(NRU)算法來(lái)分配每個(gè)微TLB中的條目。不論 是什么模式,線程都可以分配微TLB的任何部分中的條目。然而,微TLB中的翻譯可能受模 式影響。在全局模式下,所有的微TLB條目對(duì)所有線程都是可見的,但在分區(qū)模式下,每個(gè) 線程僅可以看到其自己的條目。此外,由于主TLB能夠支持每個(gè)周期最多一次翻譯,因此可 以使用仲裁機(jī)制來(lái)確保為來(lái)自所有線程的微TLB “未命中”請(qǐng)求提供公平服務(wù)。在標(biāo)準(zhǔn)的MIPS架構(gòu)中,地址空間的未映射區(qū)域遵循以下協(xié)定物理地址等于虛擬 地址。然而,根據(jù)本發(fā)明的實(shí)施例,消除了這種限制,并且未映射區(qū)域可以通過(guò)微TLB/主 TLB等級(jí)體系而進(jìn)行虛擬到物理映射,同時(shí)工作在“虛擬MIPS”模式下。這種方式允許用戶 將不同線程的未映射區(qū)域彼此隔離。然而,作為這種方法的副產(chǎn)品,違反了正常的MIPS協(xié) 定,即可以將在它們的虛擬頁(yè)號(hào)(VPN2)字段中包含未映射地址的主TLB條目視為無(wú)效。在 本發(fā)明的一個(gè)實(shí)施例中,可以將這種能力交還給用戶,由此主TLB中的每個(gè)條目可以包括 特殊的“主有效”位,該“主有效”位僅在虛擬MIPS模式下對(duì)用戶是可見的。例如,可以由 主有效位值“0”表示無(wú)效條目,并且可以由主有效位值“ 1,,表示有效條目。作為本發(fā)明的另一方面,系統(tǒng)可以支持有序流水線中的亂序加載/存儲(chǔ)調(diào)度。作 為示例性實(shí)施方式,可以存在用戶可編程的寬松存儲(chǔ)器排序模型,以便使總體性能最大化。 在一個(gè)實(shí)施例中,可以通過(guò)用戶編程將排序從強(qiáng)有序模型變?yōu)槿跤行蚰P?。系統(tǒng)可以支持 四種類型(i)加載-加載重排序;(ii)加載-存儲(chǔ)重排序;(iii)存儲(chǔ)-存儲(chǔ)重排序和(iv) 存儲(chǔ)-加載重排序??梢越柚诩拇嫫髦械奈皇噶縼?lái)獨(dú)立地使每種排序放松。如果將每種 類型設(shè)置成寬松狀態(tài),則可以實(shí)現(xiàn)弱排序模型。現(xiàn)在參考圖31,示出了根據(jù)本發(fā)明實(shí)施例的處理器內(nèi)的內(nèi)核中斷流水操作,并且 該內(nèi)核中斷流水操作由總附圖標(biāo)記3001表示。如將要在下文參考圖3J更詳細(xì)論述的,可 編程中斷控制器(PIC)向累加器3021提供中斷,該中斷包括中斷計(jì)數(shù)器和MSG塊。因此, 操作3001可以發(fā)生在整個(gè)系統(tǒng)的任何處理器或內(nèi)核之內(nèi)。功能塊調(diào)度線程3041可以從塊 3021接收控制接口??梢酝ㄟ^(guò)陰影映射實(shí)現(xiàn)到MIPS架構(gòu)的擴(kuò)展,陰影映射可以包括原因 3061到EIRR 3081以及狀態(tài)3101到EIMR 3121。MIPS架構(gòu)通常針對(duì)指定狀態(tài)和原因寄存 器中的每一個(gè)僅提供2個(gè)位用于軟件中斷和6個(gè)位用于硬件中斷。根據(jù)本發(fā)明的實(shí)施例, 可以保持這種MIPS指令架構(gòu)的兼容性,同時(shí)提供擴(kuò)展。如圖31中更詳細(xì)所示,針對(duì)中斷未決(interrupt pending)的原因3061到EIRR 3081的陰影映射可以包括將原因3061寄存器的位8-15映射到EIRR308I的位0_7。而且, 軟件中斷可以保持在內(nèi)核之中,而不是通過(guò)PIC,且可以通過(guò)向原因3061的位8和/或9寫入來(lái)執(zhí)行軟件中斷。原因3061的剩余6個(gè)位可以用于硬件中斷。類似地,針對(duì)屏蔽 (mask) 的狀態(tài)3101到EIMR312I的陰影映射可以包括將狀態(tài)3101寄存器的位8_15映射到EIMR 3121的位0-7。此外,可以通過(guò)向狀態(tài)3101的位8和/或9寫入來(lái)進(jìn)行軟件中斷,而剩余6 個(gè)位可以用于硬件中斷。通過(guò)這種方式,根據(jù)本發(fā)明實(shí)施例的寄存器擴(kuò)展在處理中斷方面 提供了更加多的靈活性。在一個(gè)實(shí)施例中,還可以經(jīng)由EIRR 3081的未陰影化位8-63和/ 或EIMR 3121的位8-63來(lái)傳達(dá)中斷?,F(xiàn)在參考圖3J,示出了根據(jù)本發(fā)明實(shí)施例的PIC操作,并且該P(yáng)IC操作由總附圖標(biāo) 記300J表示。例如,可以在圖2A的框226的實(shí)施中包括流程300J。在圖3J中,同步302J 可以接收中斷指示并向未決304J控制塊提供控制輸入。未決304J可以有效充當(dāng)中斷通 路,并且未決304J也可以接收系統(tǒng)定時(shí)器和看門狗定時(shí)器指示。調(diào)度中斷306J可以從未 決304J接收輸入。中斷重定向表(IRT)308J可以從調(diào)度中斷306J接收輸入。IRT 308J的每個(gè)中斷和/或條目可以包括中斷的關(guān)聯(lián)屬性(例如屬性314J),如 圖所示。屬性314J例如可以包括CPU屏蔽316-1J、中斷矢量316-2J、以及字段316-3J和 316-4J。中斷矢量316-2J可以是指定中斷優(yōu)先級(jí)的6位字段。在一個(gè)實(shí)施例中,如上文參 考圖31所述,中斷矢量316-2J中的較低數(shù)可以經(jīng)由映射到EPR 3081來(lái)表示關(guān)聯(lián)中斷的 較高優(yōu)先級(jí)。在圖3J中,CPU&線程調(diào)度310J可以從塊308J接收輸入,例如來(lái)自屬性314J 的信息。具體而言,CPU屏蔽316-1J可以用于指示要將中斷遞交到哪個(gè)CPU或內(nèi)核。遞交 312J塊可以從塊310J接收輸入。除了 PIC之外,32個(gè)線程中的每一個(gè)例如可以包含64位的中斷矢量。PIC可以從 主體接收中斷或請(qǐng)求,然后將它們遞交給適當(dāng)?shù)木€程。作為一個(gè)示例性實(shí)施方式,這種控制 可以是軟件可編程的。因此,軟件控制可以選擇通過(guò)對(duì)適當(dāng)PIC控制寄存器編程來(lái)將所有 外部類型的中斷重定向到一個(gè)或多個(gè)線程。類似地,Pic可以從PCI-X接口(例如圖2A的 PCI-X 234)接收中斷事件或指示,接著可以將其重定向到處理器內(nèi)核的特定線程。此外,中 斷重定向表(例如圖3J的IRT 308J)可以描述由PIC接收的事件的標(biāo)識(shí)(例如中斷指示) 以及與它相對(duì)于一個(gè)或多個(gè)“主體”的方向有關(guān)的信息。可以利用內(nèi)核屏蔽將事件重定向 到特定內(nèi)核,可以由軟件設(shè)置內(nèi)核屏蔽以指定可用于向指定接收方遞交事件的矢量號(hào)。這 種方式的優(yōu)點(diǎn)是它允許軟件識(shí)別中斷的源而無(wú)需詢問(wèn)。在將多個(gè)接收方編程為用于給定事件或中斷的情況下,可以將PIC調(diào)度器編程為 使用全局“輪詢”方案或基于每個(gè)中斷的局部輪詢方案來(lái)遞交事件。例如,如果將線程5、14 和27編程為用于接收外部中斷,則PIC調(diào)度器可以向線程5遞交第一個(gè)外部中斷,向線程 14遞交下一個(gè)外部中斷,向線程27遞交下一個(gè)外部中斷,然后返回到線程5遞交下一個(gè)中 斷,等等。此外,PIC還可以允許任何線程中斷任何其他線程(S卩,線程間中斷)。這可以通 過(guò)向PIC地址空間進(jìn)行存儲(chǔ)(即寫入操作)來(lái)得到支持。能夠用于這種寫入操作的值可以 指定中斷矢量和PIC用于線程間中斷的目標(biāo)線程。軟件控制然后可以使用標(biāo)準(zhǔn)協(xié)定來(lái)標(biāo)識(shí) 線程間中斷。作為一個(gè)示例,可以為此目的保留矢量范圍。如上文參考圖3G和圖3H所述,每個(gè)內(nèi)核可以包括流水線解耦緩沖器(例如圖3G 的解耦308G)。在本發(fā)明實(shí)施例的一個(gè)方面中,可以使得具有多線程的有序流水線中的資源 使用率最大化。因此,解耦緩沖器是“線程感知的”,這是因?yàn)榭梢栽试S未請(qǐng)求停頓的線程繼續(xù)而無(wú)需停止。通過(guò)這種方式,流水線解耦緩沖器可以對(duì)先前調(diào)度的線程重新排序。如上 所述,線程調(diào)度可以僅在流水線開始時(shí)發(fā)生。當(dāng)然,對(duì)給定線程內(nèi)的指令的重新排序通常不 是由解耦緩沖器執(zhí)行的,而是獨(dú)立的線程可以不承受任何代價(jià),原因在于可以允許它們?cè)?掛起停頓的線程的同時(shí)有效繞過(guò)解耦緩沖器。在本發(fā)明的一個(gè)實(shí)施例中,可以在內(nèi)核實(shí)施方式中使用3周期高速緩沖存儲(chǔ)器。 與專門設(shè)計(jì)的高速緩沖存儲(chǔ)器相反,這種3周期高速緩沖存儲(chǔ)器是“現(xiàn)成的”單元庫(kù)高速緩 沖存儲(chǔ)器(cell library cache),以便降低系統(tǒng)成本。結(jié)果,在加載與使用一條數(shù)據(jù)和/或 指令之間可能有三個(gè)周期的間隙。解耦緩沖器可以在這3周期延遲期間中有效工作并利用 這3個(gè)周期的延遲。例如,如果僅有單個(gè)線程,則會(huì)導(dǎo)致3周期的延時(shí)。然而,在提供四個(gè) 線程的情況下,可以由其他線程占據(jù)中間時(shí)隙。此外,還可以支持分支預(yù)測(cè)。對(duì)于正確預(yù)測(cè) 但未采用的分支,沒有代價(jià)。對(duì)于正確預(yù)測(cè)且采用的分支,有一個(gè)周期的“泡沫”或代價(jià)。對(duì) 于未命中的預(yù)測(cè),有5個(gè)周期的泡沫,但在有四個(gè)線程工作時(shí)可以大大減少這種代價(jià),這是 因?yàn)榕菽梢院?jiǎn)單地被其他線程占據(jù)。例如,不是有5個(gè)周期的泡沫,四個(gè)線程中的每一個(gè) 線程可以占據(jù)一個(gè),從而僅有單個(gè)泡沫代價(jià)實(shí)際保留下來(lái)。如上文參考圖3D、圖3E和圖3F所述,根據(jù)本發(fā)明實(shí)施例的指令調(diào)度方案可以包括 渴望輪詢調(diào)度(ERRS)、每線程固定周期數(shù)、以及采用ERRS的多線程固定周期。此外,在有沖 突時(shí),激活線程的特定機(jī)制可以包括使用記分板機(jī)制,記分板機(jī)制可以跟蹤長(zhǎng)延遲操作,例 如存儲(chǔ)器存取、乘法和/或除法操作?,F(xiàn)在參考圖3K,示出了用于多線程分配的返回地址堆棧(RAS)操作,并且該返回 地址堆棧(RAS)操作由總附圖標(biāo)記300K表示。該操作可以在圖3G的IFU 304G中實(shí)施, 并且該操作還可以如例如圖3H的操作310H表示。在本發(fā)明的實(shí)施例中支持的指令中有 (i)分支指令,其中預(yù)測(cè)是否采用且目標(biāo)是已知的;(ii)跳轉(zhuǎn)指令,其中始終采用且目標(biāo)是 已知的;以及(iii)跳轉(zhuǎn)寄存器,其中始終采用且從寄存器和/或具有未知內(nèi)容的堆棧中檢 索目標(biāo)。在圖3K的示例性操作中,能夠遇到跳轉(zhuǎn)并鏈接(JAL)指令(302K)以啟動(dòng)操作。響 應(yīng)于JAL,可以將程序計(jì)數(shù)器(PC)放置在返回地址堆棧(RAS)上(304K)。示例性RAS被顯 示為堆棧312K,并且在一個(gè)實(shí)施例中,堆棧312K是先進(jìn)后出(FIL0)型堆棧以適應(yīng)嵌套子 例程調(diào)用。可以基本上與將PC放置在堆棧312K上并行地進(jìn)行子例程調(diào)用(306K)。然后 可以發(fā)生與子例程指令相關(guān)聯(lián)的各種操作(308K)。一旦完成子例程流程,可以從堆棧312K 檢索返回地址(310K),并且主程序可以在任何分支延遲(314K)之后繼續(xù)進(jìn)行(316K)。對(duì)于多線程操作,可以劃分堆棧312K,使得在若干線程上動(dòng)態(tài)配置條目。劃分可以 變化,以適應(yīng)活動(dòng)線程的數(shù)量。因此,如果僅有一個(gè)線程在使用中,則可以將為堆棧312K分 配的整組條目用于該線程。然而,如果多個(gè)線程是活動(dòng)的,則可以動(dòng)態(tài)配置堆棧312K的條 目以適應(yīng)線程,以便高效地利用堆棧312K的可用空間。在常規(guī)多處理器環(huán)境中,通常按照輪詢?cè)瓌t將中斷給予不同的CPU來(lái)處理或通過(guò) 指定特定CPU來(lái)處理中斷。然而,根據(jù)本發(fā)明的實(shí)施例,圖2A的PIC 226(圖3J更詳細(xì)地 示出了其操作)具有在多線程機(jī)器中的多個(gè)CPU/內(nèi)核和線程之間保持負(fù)載平衡和重定向 中斷的能力。如上文參考圖3J所述,IRT 308J可以包括每個(gè)中斷的屬性,如屬性314J中 所示??梢允褂肅PU屏蔽316-1J來(lái)促進(jìn)負(fù)載平衡,這是通過(guò)允許將特定CPU和/或線程屏
19蔽在中斷處理之外而實(shí)現(xiàn)的。在一個(gè)實(shí)施例中,CPU屏蔽可以是32位寬,以允許屏蔽8個(gè) 內(nèi)核(均具有4個(gè)線程)的任意組合。例如,圖2A的內(nèi)核-2 210c和內(nèi)核-7 210h是高利 用率處理器,從而圖3J的CPU屏蔽316-1J可以針對(duì)IRT 308J中的每個(gè)中斷將它的相應(yīng)位 設(shè)置為“1”,從而不允許內(nèi)核_2或內(nèi)核-7上的任何中斷處理。此外,對(duì)于CPU/內(nèi)核以及線程而言,可以在那些對(duì)于特定中斷而言未被屏蔽的內(nèi) 核和/或線程之間采用輪詢方案(例如,借助于指針)。通過(guò)這種方式,為中斷負(fù)載平衡實(shí) 現(xiàn)了最大的可編程靈活性。因此,圖3J的操作300J允許兩級(jí)中斷調(diào)度(i)如上所述的 306J的調(diào)度;以及(ii)包括CPU/內(nèi)核和線程屏蔽的負(fù)載平衡方法。作為本發(fā)明實(shí)施例的另一方面,允許線程到線程的中斷,由此一個(gè)線程可以中斷 另一個(gè)線程??梢詫⑦@種線程到線程中斷用于對(duì)不同線程進(jìn)行同步,如電信應(yīng)用中普遍使 用的那樣。而且,根據(jù)本發(fā)明的實(shí)施例,這種線程到線程中斷可以不經(jīng)過(guò)任何 調(diào)度。C.數(shù)據(jù)交換和L2高速緩沖存儲(chǔ)器現(xiàn)在回到圖2A,示例性處理器還可以包括若干增進(jìn)高性能的部件,包括8路 組關(guān)聯(lián)的芯片上2級(jí)(L2)高速緩沖存儲(chǔ)器(2MB);高速緩沖存儲(chǔ)器一致性超傳輸接口 (768Gbps);硬件加速的服務(wù)質(zhì)量(Q0S)和分類;安全硬件加速一AES,DES/3DES,SHA-1,MDS 和RSA;分組排序支持;串處理支持;TOE硬件(TCP卸載引擎);以及許多10信號(hào)。在本發(fā) 明實(shí)施例的一個(gè)方面中,數(shù)據(jù)交換互連216可以通過(guò)其相應(yīng)的數(shù)據(jù)高速緩沖存儲(chǔ)器212a-h 耦合到處理器內(nèi)核210a-h中的每一個(gè)。而且,消息收發(fā)網(wǎng)絡(luò)222可以通過(guò)其相應(yīng)的指令高 速緩沖存儲(chǔ)器214a_h耦合到處理器內(nèi)核210a_h中的每一個(gè)。此外,在本發(fā)明實(shí)施例的一 個(gè)方面中,高級(jí)電信處理器還可以包括耦合到數(shù)據(jù)交換互連的L2高速緩沖存儲(chǔ)器208,并 且該L2高速緩沖存儲(chǔ)器208用于存儲(chǔ)處理器內(nèi)核210a-h可訪問(wèn)的信息。在示例性實(shí)施例 中,L2高速緩沖存儲(chǔ)器包括與處理器內(nèi)核數(shù)量相同數(shù)量的區(qū)段(有時(shí)稱為存儲(chǔ)體)。該示 例是參考圖4A描述的,但該示例也可以使用更多或更少的L2高速緩沖存儲(chǔ)器區(qū)段。如前所述,本發(fā)明的實(shí)施例包括利用M0SI(修改、自有、共享、無(wú)效)協(xié)議來(lái)保持高 速緩沖存儲(chǔ)器一致性。增加“自有”狀態(tài)通過(guò)允許在處理內(nèi)核之間共享臟高速緩沖存儲(chǔ)器 線而增強(qiáng)了 “MSI”協(xié)議。具體而言,本發(fā)明的示例性實(shí)施例可以向運(yùn)行于8個(gè)處理器內(nèi)核 以及I/O設(shè)備的多達(dá)32個(gè)硬件上下文上的軟件提供存儲(chǔ)器的完全一致圖??梢栽谡麄€(gè)L1 和L2高速緩沖存儲(chǔ)器(例如,分別是圖2A中的212a-h和208)分層體系中使用M0SI協(xié)議。 此外,所有外部訪問(wèn)(external reference)(例如由I/O設(shè)備發(fā)起的那些引用)可以監(jiān)聽 L1和L2高速緩沖存儲(chǔ)器,以確保數(shù)據(jù)的一致性和連貫性。在一個(gè)實(shí)施例中,如下文將要更 詳細(xì)論述的,可以使用基于環(huán)的方法來(lái)在多處理系統(tǒng)中實(shí)現(xiàn)高速緩沖存儲(chǔ)器一致性。通常, 僅有一個(gè)“節(jié)點(diǎn)”可以是一條數(shù)據(jù)的所有者,以便保持一致性。根據(jù)本發(fā)明實(shí)施例的一個(gè)方面,L2高速緩沖存儲(chǔ)器(例如圖2A的高速緩沖存儲(chǔ)器 208)可以是2MB、具有32B線大小的8路組關(guān)聯(lián)統(tǒng)一(即指令和數(shù)據(jù))高速緩沖存儲(chǔ)器。此 外,L2高速緩沖存儲(chǔ)器每個(gè)周期可以接受多達(dá)8個(gè)同時(shí)的訪問(wèn)。L2陣列以內(nèi)核時(shí)鐘大約一 半的速率運(yùn)行,但可以對(duì)該陣列進(jìn)行流水線處理以允許每個(gè)內(nèi)核時(shí)鐘所有存儲(chǔ)體都接受請(qǐng) 求,整個(gè)陣列大約有2個(gè)內(nèi)核時(shí)鐘的延時(shí)。而且,L2高速緩沖存儲(chǔ)器設(shè)計(jì)可以“不考慮” L1 高速緩沖存儲(chǔ)器,從而可以有效增大總的存儲(chǔ)器容量。對(duì)L2高速緩沖存儲(chǔ)器實(shí)現(xiàn)方式的ECC保護(hù),高速緩沖存儲(chǔ)器數(shù)據(jù)和高速緩沖存儲(chǔ)器標(biāo)記陣列都可以由SECDED(單糾錯(cuò)雙檢錯(cuò))防差錯(cuò)碼進(jìn)行保護(hù)。因此,校正了所有單比 特錯(cuò)誤而無(wú)需軟件介入。而且,在檢測(cè)到不可校正的錯(cuò)誤時(shí),無(wú)論何時(shí)修改了高速緩沖存儲(chǔ) 器線,就可以將所述不可校正的錯(cuò)誤作為碼錯(cuò)誤異常傳遞到軟件。在一個(gè)實(shí)施例中,如下文 將要更詳細(xì)論述的,每個(gè)L2高速緩沖存儲(chǔ)器可以像部件環(huán)上的任何其他“主體”那樣工作。根據(jù)本發(fā)明實(shí)施例的另一方面,可以將數(shù)據(jù)移動(dòng)環(huán)上的“橋”用于存儲(chǔ)器和I/O業(yè) 務(wù)的最佳重定向。圖2A的超級(jí)存儲(chǔ)器I/O橋206和存儲(chǔ)器橋218可以是獨(dú)立的物理結(jié)構(gòu), 但它們可以在概念上是相同的。橋可以是例如主存儲(chǔ)器和I/O訪問(wèn)的主要守護(hù)者。此外, 在一個(gè)實(shí)施例中,I/O可以是存儲(chǔ)器映射的?,F(xiàn)在參考圖4A,示出了根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)交換互連(DSI)環(huán)裝置,并且該 數(shù)據(jù)交換互連(DSI)環(huán)裝置由總附圖標(biāo)記400A表示。這種環(huán)裝置可以是圖2A的DSI 216 連同超級(jí)存儲(chǔ)器I/O橋206和存儲(chǔ)器橋218的實(shí)施方式。在圖4A中,橋206可以允許存儲(chǔ) 器&I/0與環(huán)的其余部分之間的接口。環(huán)元件402a-j每個(gè)都與圖2A的內(nèi)核210a_h和存儲(chǔ) 器橋中的一個(gè)相對(duì)應(yīng)。相應(yīng)地,元件402a接口到L2高速緩沖存儲(chǔ)器L2a和內(nèi)核-0210a,元 件402b接口到L2b和內(nèi)核210b,等等,直到元件402h接口到L2h和內(nèi)核210h。橋206包 括環(huán)上的元件402i,橋218包括環(huán)上的元件402 j。如圖4A所示,四個(gè)環(huán)可以構(gòu)成示例性實(shí)施例中的環(huán)狀結(jié)構(gòu)請(qǐng)求環(huán)(RQ)、數(shù)據(jù)環(huán) (DT)、監(jiān)聽環(huán)(SNP)和響應(yīng)環(huán)(RSP)。環(huán)上的通信是基于分組的通信。示例性的RQ環(huán)分組 例如包括目的地ID、事務(wù)ID、地址、請(qǐng)求類型(例如RD,RD13EX,WR,UPG)、有效位、可高速緩沖 存儲(chǔ)器化指示(cacheable indication)和字節(jié)使能。示例性的DT環(huán)分組例如包括目的地 ID、事務(wù)ID、數(shù)據(jù)、狀態(tài)(例如錯(cuò)誤指示)和有效位。示例性的SNP環(huán)分組例如包括目的地 ID、有效位、CPU監(jiān)聽響應(yīng)(例如清潔、共享或臟指示)、L2監(jiān)聽響應(yīng)、橋監(jiān)聽響應(yīng)、重試(針 對(duì)CPU、橋和L2中的每一個(gè))、AERR(例如非法請(qǐng)求、請(qǐng)求奇偶性)和事務(wù)ID。示例性的RSP 環(huán)分組包括SNP的所有字段,但與RSP環(huán)的“進(jìn)行中”狀態(tài)相比,RSP環(huán)分組表示“最終”狀 態(tài)。現(xiàn)在參考圖4B,示出了根據(jù)本發(fā)明實(shí)施例的DSI環(huán)部件,并且該DSI環(huán)部件由總 附圖標(biāo)記400B表示。在一個(gè)實(shí)施例中,環(huán)部件402b-0對(duì)應(yīng)于四個(gè)環(huán)RQ、DT、SNP或RSP之 一。類似地,環(huán)部件402b-l、402b-2和402b-3均對(duì)應(yīng)于四個(gè)環(huán)之一。例如,可以通過(guò)將環(huán) 部件402b-0、402b-l、402b-2和402b_3加在一起形成“節(jié)點(diǎn)”??梢栽谟|發(fā)器404B中接收輸入數(shù)據(jù)或“入環(huán)”(Ring In)。觸發(fā)器404B的輸出可 以連接到觸發(fā)器406B和408B以及多路復(fù)用器416B。觸發(fā)器406B和408B的輸出可以用于 局部數(shù)據(jù)使用。觸發(fā)器410B可以從相關(guān)聯(lián)的L2高速緩沖存儲(chǔ)器接收輸入,而觸發(fā)器412B 可以從相關(guān)聯(lián)的CPU接收輸入。觸發(fā)器410B和412B的輸出可以連接到多路復(fù)用器414B。 多路復(fù)用器414B的輸出可以連接到多路復(fù)用器416B,多路復(fù)用器416B的輸出可以連接到 輸出數(shù)據(jù)或“出環(huán)”(Ring Out)。而且,環(huán)部件402b-0可以接收有效位信號(hào)。通常,如果數(shù)據(jù)是有效的(例如有效位=“1”),則多路復(fù)用器416B選擇在入環(huán)上 接收的較高優(yōu)先級(jí)數(shù)據(jù)。否則,可以經(jīng)由多路復(fù)用器414B從L2或CPU選擇數(shù)據(jù)。此外,在 該示例中,如果入環(huán)上接收的數(shù)據(jù)是去往本地節(jié)點(diǎn)的,則觸發(fā)器406B和/或408B可以將數(shù) 據(jù)傳遞到本地內(nèi)核上而不是在再次接收數(shù)據(jù)之前允許數(shù)據(jù)在環(huán)周圍一直傳遞。現(xiàn)在參考圖4C,示出了根據(jù)本發(fā)明實(shí)施例的DSI中的示例性數(shù)據(jù)檢索的流程圖,并且該流程圖由總附圖標(biāo)記400C表示。流程可以起始于“開始” 452處,并可以在請(qǐng)求環(huán) (RQ)上放置請(qǐng)求(454)。環(huán)狀結(jié)構(gòu)中的每個(gè)CPU和L2都可以檢查被請(qǐng)求的數(shù)據(jù)(456)。而 且,可以在每個(gè)連接到環(huán)的存儲(chǔ)器橋中接收請(qǐng)求(458)。如果任何CPU或L2具有被請(qǐng)求的 數(shù)據(jù)(460),則可以由具有該數(shù)據(jù)的節(jié)點(diǎn)將該數(shù)據(jù)放到數(shù)據(jù)環(huán)(DT)上(462)。如果沒有CPU 或L2發(fā)現(xiàn)被請(qǐng)求的數(shù)據(jù)(460),則可以由存儲(chǔ)器橋之一檢索該數(shù)據(jù)(464)??梢杂烧业綌?shù)據(jù) 的節(jié)點(diǎn)或存儲(chǔ)器橋在監(jiān)聽環(huán)(SNP)和/或響應(yīng)環(huán)(RSP)上放置確認(rèn)(466),流程可以在“結(jié) 束”處完成(468)。在一個(gè)實(shí)施例中,可以包含由存儲(chǔ)器橋向SNP和/或RSP環(huán)進(jìn)行確認(rèn)。在備選實(shí)施例中,存儲(chǔ)器橋不必等待未在任何L2高速緩沖存儲(chǔ)器中發(fā)現(xiàn)數(shù)據(jù)的 指示來(lái)發(fā)起存儲(chǔ)器請(qǐng)求。相反,可以投機(jī)性地(例如向DRAM)發(fā)出存儲(chǔ)器請(qǐng)求。在這種方 法中,如果在來(lái)自DRAM的響應(yīng)之前找到數(shù)據(jù),則可以丟棄稍后的響應(yīng)。投機(jī)性DRAM訪問(wèn)可 以幫助減輕較長(zhǎng)存儲(chǔ)器延時(shí)的影響。D.消息傳遞網(wǎng)絡(luò)同樣在圖2A中,在本發(fā)明實(shí)施例的一個(gè)方面中,高級(jí)電信處理器可以包括接口切 換互連(ISI) 224,接口切換互連224耦合到消息收發(fā)網(wǎng)絡(luò)222和一組通信端口 240a_f,并 用于在消息收發(fā)網(wǎng)絡(luò)222和通信端口 240a-f之間傳遞信息?,F(xiàn)在參考圖5A,示出了根據(jù)本發(fā)明實(shí)施例的快速消息收發(fā)環(huán)部件或站,并且該快 速消息收發(fā)環(huán)部件或站由總附圖標(biāo)記500A表示。關(guān)聯(lián)的環(huán)狀結(jié)構(gòu)可以提供點(diǎn)到點(diǎn)消息,以 作為例如MIPS架構(gòu)的擴(kuò)展。“入環(huán)”信號(hào)可以連接到插入隊(duì)列502A和接收隊(duì)列(RCVQ)506A 兩者。插入隊(duì)列也可以連接到多路復(fù)用器504A,多路復(fù)用器504A的輸出可以是“出環(huán)”。插 入隊(duì)列始終得到優(yōu)先級(jí),因此該環(huán)不會(huì)發(fā)生堵塞。在虛線框520A和522A中示出了 CPU內(nèi) 核的關(guān)聯(lián)寄存器。在框520A之內(nèi),緩沖器RCV緩沖器510A-0到RCV緩沖器510-N可以與 RCVQ 506A接口。多路復(fù)用器504A的第二輸入可以連接到發(fā)送隊(duì)列(XMTQ)508A。同樣在 框520A內(nèi),緩沖器XMT緩沖器512A-0到XMT緩沖器512A-N可以與XMTQ 508A接口。還可 以在框520A中發(fā)現(xiàn)狀態(tài)514A寄存器。在虛線框522A之內(nèi),可以發(fā)現(xiàn)存儲(chǔ)器映射配置寄存 器516A和基于信用的流控制518A?,F(xiàn)在參考圖5B,示出了圖5A的系統(tǒng)所用的消息數(shù)據(jù)結(jié)構(gòu),并且該消息數(shù)據(jù)結(jié)構(gòu)由 總附圖標(biāo)記500B表示。標(biāo)識(shí)字段可以包括線程502B、源504B和目的地508B。還可以有消息 大小指示符“大小”508B。標(biāo)識(shí)字段和消息大小指示符可以形成側(cè)板(sideboard) 514B。要 發(fā)送的消息或數(shù)據(jù)自身(例如MSG 512B)可以包括若干部分,例如510B-0、510B-l、510B-2 和510B-3。根據(jù)實(shí)施例,消息是最小的單元,因此不能中斷完整的消息。基于信用的流控制能夠提供例如用于管理消息發(fā)送的機(jī)制。在一個(gè)實(shí)施例中,針 對(duì)目標(biāo)/接收機(jī)而分配給所有發(fā)射機(jī)的信用總數(shù)不能超過(guò)其接收隊(duì)列(例如圖5A的RCVQ 506A)中的條目的數(shù)量之和。例如,在一個(gè)實(shí)施例中,256是信用總數(shù),這是因?yàn)槊總€(gè)目標(biāo)/ 接收機(jī)的RCVQ大小是256個(gè)條目。通常,軟件可以控制信用的分配。例如,在引導(dǎo)時(shí),每個(gè) 發(fā)送機(jī)/發(fā)射機(jī)或參與的主體可以被分配一些默認(rèn)數(shù)量的信用。然后軟件可以自由按每個(gè) 發(fā)射機(jī)分配信用。例如,針對(duì)系統(tǒng)中的其他目標(biāo)/接收機(jī)中的每一個(gè),每個(gè)發(fā)送機(jī)/發(fā)射機(jī) 可以具有由軟件設(shè)置的可編程數(shù)量的信用。然而,并非要求系統(tǒng)中的所有主體都作為目標(biāo)
/接收機(jī)來(lái)參與發(fā)射信用的分配。在一個(gè)實(shí)施例中,可以針對(duì)內(nèi)核-1、內(nèi)核_2........內(nèi)
核-7、RGMII130> RGMII131、XGMIISPI-4. 2__q、XGMII/SPI-4. 2—” P0D0、P0D1、.......P0D4 等中的每一個(gè)對(duì)內(nèi)核-0的信用進(jìn)行編程。下面的表1示出了針對(duì)作為接收機(jī)的內(nèi)核-o的示 例性信用分配。表 1在本示例中,當(dāng)內(nèi)核-1向內(nèi)核-0發(fā)送大小為2(例如2個(gè)64比特的數(shù)據(jù)元)的 消息時(shí),可以將內(nèi)核-0中的內(nèi)核-1的信用遞減2(例如從32遞減到30)。在內(nèi)核-0接收 消息時(shí),消息可以進(jìn)入內(nèi)核-0的RCVQ。一旦從內(nèi)核-0的RCVQ取走消息,實(shí)質(zhì)上釋放了那 個(gè)消息存儲(chǔ)空間或那個(gè)消息存儲(chǔ)空間變得可用。內(nèi)核-o然后可以向發(fā)送機(jī)發(fā)送信號(hào)(例 如向內(nèi)核-1發(fā)送自由信用信號(hào)),指示還有空間量(例如2)可用。如果在沒有收到來(lái)自內(nèi) 核-o的相應(yīng)自由信用信號(hào)的情況下內(nèi)核-1繼續(xù)向內(nèi)核-0發(fā)送消息,最終內(nèi)核-1的信用 數(shù)量可以變?yōu)榱悖⑶覂?nèi)核-1不能向內(nèi)核-o發(fā)送任何更多消息。例如,僅在內(nèi)核-0利用 自由信用信號(hào)做出響應(yīng)時(shí),內(nèi)核-1才能夠向內(nèi)核-o發(fā)送另外的消息?,F(xiàn)在參考圖5C,示出了根據(jù)本發(fā)明實(shí)施例的如何可以將各種主體連接到快速消 息收發(fā)網(wǎng)絡(luò)(FMN)的概念圖,并且該概念圖由總附圖標(biāo)記500C表示。8個(gè)內(nèi)核(內(nèi)核-0 502C-0到內(nèi)核-7 502C-7)連同相關(guān)聯(lián)的數(shù)據(jù)高速緩沖存儲(chǔ)器(D-高速緩沖存儲(chǔ)器504C-0 到504C-7)和指令高速緩沖存儲(chǔ)器(I-高速緩沖存儲(chǔ)器506C-0到506C-7)能夠與FMN接 口。此外,網(wǎng)絡(luò)I/O接口組也能夠接口到FMN。與端口 A相關(guān)聯(lián),DMA 508C-A、分析器/分 類器512C-A和XGMII/SPI-4. 2端口 A 514C-A可以通過(guò)分組分配引擎(PDE) 510C-A接口到 FMN。類似地,對(duì)于端口 B,DMA 508C-B、分析器/分類器512C-B和XGMII/SPI 4. 2端口 B 514C-B可以通過(guò)PDE 510C-B接口到FMN。而且,DMA 516C、分析器/分類器520C、RGMII端 口 A 522C-A、RGMII 端口 B 522C-B、RGMII 端口 C 522C-C、RGMII 端口 D 522C-D 能夠通過(guò) PDE 518C接口到FMN。而且,包括DMA 526C和DMA引擎528C的安全加速引擎524C可以接 口到FMN。PCIe總線534也可以接口到FMN和/或接口切換互連(ISI)。在圖5F到圖51
發(fā)射主體 內(nèi)核-0 內(nèi)核-1 內(nèi)核-2 內(nèi)核-3 內(nèi)核-4 內(nèi)核-5 內(nèi)核-6 內(nèi)核-7 PODO RGMII0 其他全部
允許的信用(總數(shù)為256)
0
32 32 32 0
32 32 32 32 32 0
23中更詳細(xì)示出了這種接口。作為本發(fā)明實(shí)施例的一方面,F(xiàn)MN上的所有主體(例如內(nèi)核/線程或組網(wǎng)接口,如 圖5C中所示的)可以向FMN上的任何其他主體發(fā)送消息。這種結(jié)構(gòu)可以允許在主體之間 進(jìn)行快速的分組移動(dòng),但軟件可以通過(guò)這樣定義消息容器的句法和語(yǔ)義來(lái)將消息收發(fā)系統(tǒng) 的使用改變?yōu)檫m合于任何其他適當(dāng)目的。在任何情況下,F(xiàn)MN上的每個(gè)主體都包括發(fā)送隊(duì) 列(例如508A)和接收隊(duì)列(例如506A),如上文參考圖5A所述。因此,可以將去往特定主 體的消息放入相關(guān)聯(lián)的接收隊(duì)列中。所有源自特定主體的消息都可以被輸入關(guān)聯(lián)的發(fā)送隊(duì) 列中,并隨后推送到FMN上以遞交給預(yù)定接收方。在本發(fā)明實(shí)施例的另一方面中,內(nèi)核(例如圖5C的內(nèi)核-0 502C-0到內(nèi)核-7 502C-7)的所有線程可以共享隊(duì)列資源。為了確保發(fā)出消息的公平性,可以實(shí)施“輪詢”方 案來(lái)將消息接受到發(fā)送隊(duì)列中。這可以確保所有線程都能夠發(fā)出消息,即便在它們之一正 在以更快速率發(fā)出消息時(shí)也是如此。相應(yīng)地,可能的是在發(fā)出消息時(shí)給定發(fā)送隊(duì)列是滿 的。在這種情況下,可以允許所有線程排隊(duì)等待一個(gè)消息(每個(gè)線程都在內(nèi)核內(nèi)部),直到 發(fā)送隊(duì)列有空間接受更多消息為止。如圖5C所示,組網(wǎng)接口使用PDE來(lái)將輸入的分組分配 給指定線程。此外,可以通過(guò)分組排序軟件對(duì)去往組網(wǎng)接口的輸出分組進(jìn)行路由?,F(xiàn)在參考圖5D,示出了常規(guī)處理系統(tǒng)中的網(wǎng)絡(luò)業(yè)務(wù),并且該網(wǎng)絡(luò)業(yè)務(wù)由總附圖 標(biāo)記500D表示。分組輸入可以由分組分配502D接收并被發(fā)送到分組處理(504D-0到 504D-3)。分組分類/排序506D能夠從分組處理接收輸出并能夠提供分組輸出。盡管這種 分組級(jí)并行處理架構(gòu)固有地適于組網(wǎng)應(yīng)用,但有效的架構(gòu)必須為輸入分組分配和輸出分組 分類/排序提供高效支持,以使并行分組處理的優(yōu)點(diǎn)最大化。如圖5D所示,每個(gè)分組必須 經(jīng)過(guò)單次分配(例如502D)和單次分類/排序(例如506D)。這些操作都對(duì)分組流具有串 行化影響,從而系統(tǒng)的總體性能由這兩種功能的較慢者決定?,F(xiàn)在參考圖5E,示出了根據(jù)本發(fā)明實(shí)施例的分組流,并且該分組流由總附圖標(biāo)記 500E表示。這種方式提供了擴(kuò)展(即可升級(jí))的高性能架構(gòu),從而使得分組能夠流過(guò)系統(tǒng)。 組網(wǎng)輸入502E可以包括RGMII、XGMII和/或SPI-4. 2和/或PCIe接口配置的端口。在接 收到分組之后,可以利用快速消息收發(fā)網(wǎng)絡(luò)(FMN)經(jīng)由分組分配引擎(PDE)504E將它們分
配給分組處理506E的線程之一例如線程0、1、2........31。選定的線程可以執(zhí)行例如由
分組頭或凈荷設(shè)定的一個(gè)或多個(gè)功能,然后將分組發(fā)送到分組排序軟件508E。作為備選實(shí) 施例,可以使用如圖2A的框236中所示的分組排序設(shè)備(POD)來(lái)代替圖5E的508E。在任 一種實(shí)施方式中,這種功能建立了分組排序,然后經(jīng)由FMN將其傳遞到輸出網(wǎng)絡(luò)(例如組網(wǎng) 輸出510E)。類似于組網(wǎng)輸入,輸出端口可以是例如配置的RGMII、XGMII或SPI-4. 2接口 或PCIe總線中的任一個(gè)。E.接口切換在本發(fā)明實(shí)施例的一個(gè)方面中,F(xiàn)MN可以與每個(gè)CPU/內(nèi)核接口,如圖2A所示。這 種FMN到內(nèi)核的接口可以包括壓入/彈出指令、等待消息指令和在消息到達(dá)時(shí)中斷。在常 規(guī)MIPS架構(gòu)中,分配了協(xié)處理器或“ C0P2 ”空間。然而,根據(jù)本發(fā)明的實(shí)施例,為了經(jīng)由FMN 進(jìn)行消息收發(fā)用途而保留了為C0P2指定的空間。在一個(gè)實(shí)施例中,軟件可執(zhí)行指令可以包 括消息發(fā)送(MsgSnd)、消息加載(MsgLd)、到C0P2的消息(MTC2)、來(lái)自C0P2的消息(MFC2) 和消息等待(Msg Wait)。MsgSnd和MsgLd指令可以包括目標(biāo)信息以及消息大小指示。MTC2和MFC2指令可以包括來(lái)自/指向本地配置寄存器的數(shù)據(jù)傳輸,本地配置寄存器例如是圖5A 的狀態(tài)514A和寄存器522A。Msg Wait指令可以包括基本進(jìn)入“休眠”狀態(tài)直到有消息為 止的操作(例如在消息到達(dá)時(shí)中斷)。作為本發(fā)明的實(shí)施例的另一方面,可以將快速消息收發(fā)(FMN)環(huán)部件組織成 “桶”(bucket)。例如,可以通過(guò)類似于上述線程概念的方式在多個(gè)桶之間劃分圖5A的RCVQ 506A和XMTQ 508A中的每一個(gè)。在本發(fā)明實(shí)施例的一個(gè)方面中,分組分配引擎(PDE)可以包括XGMII/SPI-4. 2接 口以及四個(gè)RGMII接口和PCIe接口中的每一個(gè),以便能夠以高效和負(fù)載平衡的方式將輸入 的分組分配給處理線程。硬件加速的分組分配對(duì)于高吞吐量組網(wǎng)應(yīng)用而言是重要的。在沒 有PDE的情況下,分組分配例如可以由軟件處理。然而,對(duì)于64B的分組而言,在XGMII型接 口上僅有大約20ns可用于執(zhí)行這種功能。此外,由于單生產(chǎn)者多消費(fèi)者(single-producer multiple-consumer)的情況,因此必須運(yùn)用隊(duì)列指針管理。這種僅有軟件的方案只是不能 跟上所需的分組傳送速度,而不會(huì)影響整個(gè)系統(tǒng)的性能。根據(jù)本發(fā)明的實(shí)施例,PDE可以利用快速消息收發(fā)網(wǎng)絡(luò)(FMN)來(lái)將分組迅速分配 給由軟件指定為處理線程的線程。在一個(gè)實(shí)施例中,PDE可以實(shí)施加權(quán)的輪詢方案,以便在 預(yù)定接收方之間分配分組。在一種實(shí)施方式中,實(shí)際上不移動(dòng)分組,而是在組網(wǎng)接口接收它 時(shí)將其寫入存儲(chǔ)器中。PDE能夠在消息中插入“分組描述符”并隨后將它發(fā)送到由軟件指定 的接收方之一。這也能夠表示并非所有線程都必需參與從任何給定接口接收分組。PCIe 接口現(xiàn)在參考圖5F,圖5F示出了在快速消息收發(fā)網(wǎng)絡(luò)(FMN)和接口切換互連(ISI) (540)與PCIe接口 (534)之間的接口的放大圖,PCIe接口先前在圖2A(234)和圖5C(534) 中示出過(guò)了??焖傧⑹瞻l(fā)網(wǎng)絡(luò)和/或接口切換互連(540)向PCIe接口發(fā)送各種信號(hào),用 于控制接口以及向接口發(fā)送數(shù)據(jù)和從接口接收數(shù)據(jù)。為了加快開發(fā)這樣的設(shè)備,盡可能依靠以前設(shè)計(jì)的PCIe部件通常是有利的??梢?從不同供應(yīng)商獲得適合的PCIe數(shù)字內(nèi)核、物理層(PHY)和驗(yàn)證部件。通常,購(gòu)買的這些部件 是知識(shí)產(chǎn)權(quán)和集成電路設(shè)計(jì)組件,并結(jié)合定制的DMA設(shè)計(jì)軟件來(lái)使用這些設(shè)計(jì)組件,以設(shè) 計(jì)能夠接口到高級(jí)處理器的快速消息總線并進(jìn)而與PCIe總線硬件接口的集成電路芯片。一個(gè)重要的設(shè)計(jì)考慮是盡可能地精簡(jiǎn)(簡(jiǎn)化)PCIe接口和命令。這種精簡(jiǎn)過(guò)程使 接口保持既較簡(jiǎn)單又較快速,并允許例如本發(fā)明的單芯片多內(nèi)核處理器以較少量的軟件和 硬件開銷來(lái)控制PCIe設(shè)備。如將要論述的,本設(shè)計(jì)將快速消息收發(fā)網(wǎng)絡(luò)(FMN) /接口切換互連與定制的DMA引 擎(541)結(jié)合在一起加以利用,該定制的DMA引擎(541)是作為PCIe接口單元(534)的一 部分而被嵌入的。DMA引擎本質(zhì)上充當(dāng)著處理器內(nèi)核和各種PCIe設(shè)備所使用的非常不同的 存儲(chǔ)器存儲(chǔ)協(xié)議之間的轉(zhuǎn)換器。將轉(zhuǎn)換過(guò)程交給定制的DMA引擎極大地減少了對(duì)內(nèi)核處理 器的計(jì)算需求,從而將內(nèi)核處理器解放出來(lái)做其他工作。簡(jiǎn)而言之,DMA(直接存儲(chǔ)器存取)電路允許硬件以獨(dú)立于處理器內(nèi)核CPU的方式 訪問(wèn)存儲(chǔ)器。DMA用于在設(shè)備之間拷貝存儲(chǔ)塊(memorychunk)。盡管CPU利用適當(dāng)?shù)腄MA 命令發(fā)起該過(guò)程,但是CPU然后可以做其他事情,而DMA執(zhí)行存儲(chǔ)器拷貝命令。在本實(shí)施例中,構(gòu)造定制的DMA引擎,使其接受作為輸入的短的、高度優(yōu)化的處理器FMN和ISI消息。DMA然后將FMN/ISI消息轉(zhuǎn)換成適當(dāng)?shù)腜CIe-TLP分組(然后由接口中 的其他PCIe電路對(duì)其進(jìn)行處理),然后自動(dòng)處理內(nèi)核處理器請(qǐng)求的原始存儲(chǔ)器拷貝命令。
這樣,DMA將存儲(chǔ)器拷貝請(qǐng)求轉(zhuǎn)換成PCIe-TLP分組,并經(jīng)由PCIe-TLP分組將它發(fā) 送到其他PCIe電路,所述其他PCIe電路向PCIe總線上的適當(dāng)PCIe設(shè)備發(fā)送適當(dāng)?shù)拿睢?在這些分組已經(jīng)被PCIe電路發(fā)送之后,指定的PCIe設(shè)備完成該任務(wù)。在指定的PCIe總線 設(shè)備已經(jīng)完成它的分配任務(wù)之后,PCIe總線設(shè)備然后會(huì)向PCIe接口返回適當(dāng)?shù)腜CIe-TLP 分組。PCIe接口 DMA接受這些PCIe-TLP分組,并將它們轉(zhuǎn)換成適當(dāng)?shù)拇鎯?chǔ)器拷貝命令,并 以其他方式管理處理器內(nèi)核最初分配的任務(wù),而無(wú)需來(lái)自處理器內(nèi)核的進(jìn)一步關(guān)注。結(jié)果, 處理器和處理器內(nèi)核現(xiàn)在能夠以最小的處理器內(nèi)核計(jì)算開銷與廣泛的各種不同的PCIe設(shè) 備進(jìn)行通信。處理器內(nèi)核經(jīng)由通過(guò)FMN/ISI發(fā)送的短(1_2個(gè)64比特字)消息與PCIe接口通 信。PCIe接口被設(shè)計(jì)成接受被分配給四個(gè)不同桶的輸入消息。每個(gè)桶可以具有每桶多達(dá) 64個(gè)條目的隊(duì)列,最大的隊(duì)列深度為256個(gè)消息。PCIe接口還被設(shè)計(jì)成輸出4種不同類別的消息。這些輸出消息都可以存儲(chǔ)在隊(duì)列 中,在隊(duì)列中,每一類最多4條消息,最大輸出隊(duì)列深度為16條輸出消息。從FMN/ISI向PCIe接口發(fā)送的命令如下桶中的消息
桶ι描述 從處理器內(nèi)核到PCIe接口的大部分通信是簡(jiǎn)單且簡(jiǎn)潔的2個(gè)64比特字存儲(chǔ)器讀 取/寫命令形式。處理器內(nèi)核將通常假設(shè)這些命令已經(jīng)被成功完成。結(jié)果,PCIe接口僅 以非常簡(jiǎn)潔的單個(gè)64比特字的形式返回簡(jiǎn)潔的“0K”、“Not OK”狀態(tài)消息。各種發(fā)出消息 類別如下所示發(fā)出消息類別 圖5G示出了由處理器內(nèi)核經(jīng)由FMN/ISI發(fā)送到PCIe接口設(shè)備上的DMA引擎的兩 個(gè)簡(jiǎn)潔的64比特字中的數(shù)據(jù)字段的概況,并且圖5G還示出了從PCIe接口設(shè)備上的DMA引 擎經(jīng)由FMN/ISI發(fā)回處理器內(nèi)核的單個(gè)簡(jiǎn)潔的64比特字的概況。如圖所示,大部分字空間 被DMA源地址、DMA目的地地址和存儲(chǔ)數(shù)據(jù)字節(jié)計(jì)數(shù)信息占據(jù)。兩個(gè)字的其余部分包括如 下所示的各種控制信息比特和字段發(fā)送到PCIe接口 DMA引擎的FMN/ISI消息的字段如下
71] 在這里,可以將COHERENT、RDX、RETEN、TD、EP、ATTR字段認(rèn)為是星形拓?fù)浯锌偩€控制字段,或者更具體地,可以將COHERENT、RDX、RETEN、TD、EP、ATTR字段認(rèn)為是PCIe總線 控制字段。發(fā)出的返回消息實(shí)質(zhì)上是有名的ACK或OK或問(wèn)題消息。它由單個(gè)64比特字構(gòu)成。
它的字段如下所示 為了簡(jiǎn)化該論述,將不詳細(xì)論述這些返回消息的運(yùn)動(dòng),不過(guò)在圖5F中示出了這種 返回路徑中的一些(555)。返回到圖5F,在消息框(542)電路中存儲(chǔ)來(lái)自處理器的輸入消息,該電路可以保 持4桶(不同類型)的消息,每種類型64個(gè)消息緩沖器。然后,消息通過(guò)輪詢調(diào)度器和消息總線仲裁器而得到處理,然后到達(dá)DMA引擎 (541)。存儲(chǔ)器加載(寫入)指令由DMA引擎的DMA加載郵遞式請(qǐng)求器部分(DMA load posted requestor portion) (543)來(lái)處理,被轉(zhuǎn)換成適當(dāng)?shù)腜CIe-TCP數(shù)據(jù)分組,然后被發(fā) 送到1/0總線從屬電路(545)。然后將其發(fā)送到1/0總線仲裁器電路(546),該電路利用 輪詢調(diào)度器處理各種PCI 1/0總線請(qǐng)求。1/0總線仲裁器然后將分組發(fā)送到其他PCIe電 路,例如1/0總線請(qǐng)求器(547)和PCIe鏈路完成器(548)。這些部件與PCIe控制仲裁器 (549) 一起工作來(lái)管理實(shí)際的PCIe物理層電路(550),該實(shí)際的PCIe物理層電路(550)進(jìn) 行實(shí)際的硬件PCIe分組發(fā)送和接收。然后,將PCIe-TCP分組置于PCIe總線(551)上并將 PCIe-TCP分組發(fā)送到各種PCIe設(shè)備(未示出)。寫標(biāo)記跟蹤器跟蹤讀出和寫入內(nèi)容的狀 態(tài)。在本實(shí)施例中,所有的寫命令都不期望得到響應(yīng),并且一旦接受到命令,所有寫命 令都會(huì)完成,然而,所有讀和只讀命令期望得到返回響應(yīng)。在本實(shí)施例中,為了簡(jiǎn)化設(shè)計(jì),假設(shè)可以亂序返回所有1/0總線主讀請(qǐng)求完成。在 本實(shí)施例中,還假設(shè)所有請(qǐng)求都是針對(duì)相連字節(jié)的,并且對(duì)于1/0、配置和寄存器地址空間 而言,命令中請(qǐng)求的最大字節(jié)數(shù)為4,且字節(jié)不會(huì)越過(guò)雙字地址界。圖5H示出了消息從處理器內(nèi)核經(jīng)由FMN到達(dá)PCIe接口設(shè)備的硬件流圖。消息 一般源于處理器內(nèi)核(560)(前面在圖5C中示出(502C-0到502C-7)),并且該消息被處理 (561),以便發(fā)送到FMN快速消息收發(fā)網(wǎng)絡(luò)/接口切換互連ISI (562)上,然后被PCIe接口 的初始級(jí)(未示出)接收和處理。最后,在經(jīng)過(guò)處理和適當(dāng)?shù)妮喸冋{(diào)度以及仲裁之后,將寫消息發(fā)送到DMA引擎的DMA加載請(qǐng)求器部分(563)。DMA加載請(qǐng)求器然后經(jīng)由I/O互連 (559)讀取DRAM或高速緩沖存儲(chǔ)器(558),從DRAM或高速緩沖存儲(chǔ)器(558)檢索適當(dāng)數(shù)據(jù), 然后進(jìn)行將數(shù)據(jù)和請(qǐng)求從原始DMA請(qǐng)求格式(圖5G所示)轉(zhuǎn)換到適當(dāng)?shù)?通常為多個(gè))
PCI-TLPO,PCI-TLPl........PCI-TLPn(564)請(qǐng)求所需的適當(dāng)轉(zhuǎn)換和計(jì)算,其中適當(dāng)?shù)?通
常為多個(gè))PCI-TLP0、PCI-TLP1、.......PCI-TLPn (564)請(qǐng)求是訪問(wèn)相關(guān)PCIe設(shè)備上的被
請(qǐng)求存儲(chǔ)位置所需 要的。然后將這些請(qǐng)求通過(guò)其他PCIe電路路由到PCIe物理層(565),然 后在PCIe物理層上,將它們?cè)赑CIe總線上發(fā)送。如前所述,為了簡(jiǎn)化系統(tǒng)并使處理時(shí)間更短,在本實(shí)施例中,寫數(shù)據(jù)的長(zhǎng)度加上目 的地地址雙字偏移(double word offset)不能超過(guò)PCIe-TLP的最大凈荷長(zhǎng)度。此外,寫請(qǐng) 求不能越過(guò)4K字節(jié)的地址界。進(jìn)一步將PCIe-TLP劃分成32字節(jié)的源地址返回PCIe-TLP 數(shù)據(jù)分組存儲(chǔ)器讀(存儲(chǔ))請(qǐng)求(再次為圖5G中所示的兩個(gè)64比特字)也通過(guò)FMN移 動(dòng)到PCIe接口,在此將它們傳遞到DMA引擎中的DMA存儲(chǔ)請(qǐng)求器。讀請(qǐng)求的最大長(zhǎng)度取決 于配置的最大凈荷大小。當(dāng)DMA存儲(chǔ)消息的源地址不是雙字對(duì)準(zhǔn)時(shí),第一返回PCIe-TLP分 組的長(zhǎng)度為1、2或3(566)。如前所述,在本實(shí)施例中,讀請(qǐng)求PCIe-TLP分組不能越過(guò)4K字 節(jié)源地址界。DMA存儲(chǔ)請(qǐng)求器返回分組處理器(567)將經(jīng)由1/0(559)對(duì)高速緩沖存儲(chǔ)器或 DRAM(558)進(jìn)行適當(dāng)寫入、協(xié)商初始DMA指令、以及PCIe-TLP分組的內(nèi)容,或者產(chǎn)生額外的 PCIe-TLP分組以將數(shù)據(jù)轉(zhuǎn)發(fā)到適當(dāng)?shù)腜CIe設(shè)備上。在完成對(duì)DRAM的讀或?qū)憰r(shí),它然后將 通知處理器內(nèi)核(CPU)。PCIe物理層接收機(jī)(566)從各種PCIe設(shè)備接收PCIe-TLP分組(567)。DMA存儲(chǔ)請(qǐng) 求器引擎判斷響應(yīng)初始DMA命令的適當(dāng)方式是否向其他PCIe設(shè)備發(fā)出額外的PCIe-TLP 分組。如果是這樣的話,它再次發(fā)出適當(dāng)?shù)腜CIe-TMP命令。如果對(duì)接收的PCIe-TLP分組 和初始DMA命令的適當(dāng)響應(yīng)是向L2高速緩沖存儲(chǔ)器寫入數(shù)據(jù)或?qū)⑺呕谾MN/ISI總線上, 則DMA將再次做出適當(dāng)決定并按照需要將它路由到FMN/ISI。圖51示出了消息如何從處理器內(nèi)核流到PCIe接口的流程圖,并且圖51還示出了 PCIe寫請(qǐng)求和讀請(qǐng)求之間的返回消息產(chǎn)生上的不對(duì)稱性。盡管寫請(qǐng)求不產(chǎn)生返回確認(rèn)消 息,但讀消息會(huì)產(chǎn)生。在處理器(570)發(fā)送PCIe消息(571)之后,該消息被PCIe接口分析 (571)并被發(fā)送到DMA引擎(572)。DMA引擎經(jīng)由互連I/O對(duì)DRAM或高速緩沖存儲(chǔ)器進(jìn)行 適當(dāng)讀寫(572A),并檢索需要的數(shù)據(jù),其中所需要的數(shù)據(jù)是以PCIe-TMP分組的形式被重發(fā) 的。如果被請(qǐng)求的操作(573)為寫(574),那么默默地完成該操作。如果被請(qǐng)求的操作為讀 (575),那么系統(tǒng)產(chǎn)生接收完成確認(rèn)(576),接收讀數(shù)據(jù)(577),并再次經(jīng)由互連I/O進(jìn)行適 當(dāng)?shù)腄RAM或高速緩沖存儲(chǔ)器寫入(577A),判斷哪個(gè)處理器或設(shè)備請(qǐng)求數(shù)據(jù)(578),并將數(shù) 據(jù)放到適當(dāng)?shù)腎/O互連(579),以向請(qǐng)求設(shè)備或處理器返回?cái)?shù)據(jù)。一旦完成這種操作(580), PCIe將會(huì)對(duì)監(jiān)測(cè)事務(wù)進(jìn)度并指示完成的跟蹤標(biāo)記進(jìn)行清除(581)?,F(xiàn)在參考圖6A,示出了根據(jù)本發(fā)明實(shí)施例的在四個(gè)線程上均勻分配分組的PDE, 并且該分配過(guò)程由總附圖標(biāo)記600A表示。在本示例中,軟件可以選擇線程4到7來(lái)進(jìn)行可 能的分組接收。然后,PDE能夠例如順次選擇這些線程之一來(lái)分配每個(gè)分組。在圖6A中, 可以由分組分配引擎(PDE)602A來(lái)接收組網(wǎng)輸入,PDE可以選擇線程4、5、6或7之一來(lái)進(jìn) 行分組分配。在該特定示例中,線程4可以在時(shí)間、接收分組1,在時(shí)間t5接收分組5,線程5可以在時(shí)間t2接收分組2,在時(shí)間t6接收分組6,線程6可以在時(shí)間t3接收分組3,在 時(shí)間t7接收分組7,線程7可以在時(shí)間t4接收分組4,在時(shí)間t8接收分組8?,F(xiàn)在參考圖6B,示出了根據(jù)本發(fā)明實(shí)施例的利用輪詢方案來(lái)分配分組的PDE,并 且該分配過(guò)程由總附圖標(biāo)記600B表示。如上文參考FMN所述,軟件可以對(duì)所有接收機(jī)從每 個(gè)發(fā)射機(jī)獲得的允許信用的數(shù)量進(jìn)行編程。由于PDE實(shí)質(zhì)上是發(fā)射機(jī),因此它也可以使用 信用信息來(lái)以“輪詢”方式分配分組。在圖6B中,PDE 602B能夠接收組網(wǎng)輸入并向指定線 程(例如線程0到線程3)提供分組,如圖所示。在本示例中,線程2(例如接收機(jī))比其他 線程更慢地處理分組。PDE 602B能夠檢測(cè)到來(lái)自該接收機(jī)的信用可用性的步調(diào)慢,并通過(guò) 將分組引導(dǎo)到更高效的處理線 程來(lái)加以調(diào)節(jié)。具體而言,線程2在周期tn在PDE內(nèi)具有最 小數(shù)量的可用信用。盡管周期tn處的分組11的下一個(gè)邏輯接收機(jī)可能已經(jīng)是線程2,但 是PDE能夠識(shí)別該線程中的處理延遲,并因此選擇線程3作為分配分組11的最佳目標(biāo)。在 該特定示例中,線程2可以繼續(xù)相對(duì)于其他線程表現(xiàn)出處理延遲,因此PDE可以避免向該線 程分配。而且,在沒有任何接收機(jī)有空間接受新分組的情況下,PDE可以將分組隊(duì)列擴(kuò)展到 存儲(chǔ)器。因?yàn)榇蠖鄶?shù)組網(wǎng)應(yīng)用都不是非常能容忍分組的隨機(jī)到達(dá)次序,因此希望按次序遞 交分組。此外,在系統(tǒng)中并入并行處理和分組排序的特征是困難的。一種方式是將排序任 務(wù)留給軟件,但這樣會(huì)變得難以保持線路速率。另一個(gè)選擇是在單個(gè)流中向同一處理線程 發(fā)送所有分組,使得排序基本是自動(dòng)的。然而,這種方式要求在分組分配之前進(jìn)行流鑒別 (即分類),并且這降低了系統(tǒng)性能。另一個(gè)缺點(diǎn)是最大流的吞吐量是由單線程的性能決 定的。這妨礙了單個(gè)大流在它們經(jīng)過(guò)系統(tǒng)時(shí)維持其吞吐量。根據(jù)本發(fā)明的實(shí)施例,可以使用被稱為分組排序設(shè)備(POD)的高級(jí)硬件加速結(jié) 構(gòu)。POD的目的是通過(guò)在將分組發(fā)送到組網(wǎng)輸出接口之前對(duì)它們重新排序以提供并行處理 線程的不受限使用?,F(xiàn)在參考圖6C,示出了根據(jù)本發(fā)明實(shí)施例的在分組生命周期期間的 POD布置,并且該布置由總附圖標(biāo)記600C表示。該圖基本示出了在分組通過(guò)處理器的生命 周期期間的POD的邏輯布置。在該特定示例中,PDE 602C可以向線程發(fā)送分組,如圖所示。 線程0可以在時(shí)間、接收分組1,在時(shí)間、接收分組5,等等,直到周期tN_3。線程1可以在 時(shí)間t2接收分組2,在時(shí)間t6接收分組6,等等,直到周期tN_2。線程2可以在時(shí)間t3接收 分組3,在時(shí)間t7接收分組7,等等,直到周期tN_i。最后,線程3可以在時(shí)間t4接收分組4, 在時(shí)間t8接收分組8,等等,直到周期tN。在從不同線程接收分組并隨后將分組發(fā)送到組網(wǎng)輸出期間,可以將分組排序設(shè)備 (POD)604C看作是分組排序器??梢詾榻o定組網(wǎng)接口接收的所有分組分配序號(hào)。然后,可以 由PDE將該序號(hào)連同其余分組信息轉(zhuǎn)發(fā)到工作線程。一旦線程已經(jīng)完成了分組處理,它可 以將分組描述符連同初始序號(hào)轉(zhuǎn)發(fā)到POD。POD可以例如按照由接收接口分配的初始序號(hào) 嚴(yán)格確定的次序向輸出接口釋放這些分組。在大部分應(yīng)用中,POD將按照隨機(jī)次序接收分組,這是因?yàn)榉纸M通常是由線程按隨 機(jī)次序處理的。POD能夠基于接收接口分配的序號(hào)建立隊(duì)列,并繼續(xù)按照接收的那樣對(duì)分組 排序。POD可以按照接收接口分配的次序向給定輸出接口發(fā)出分組。現(xiàn)在參考圖6D,示出 了根據(jù)本發(fā)明實(shí)施例的POD輸出分配,并且該P(yáng)OD輸出分配由總附圖標(biāo)記600D表示。如在 分組排序設(shè)備(P0D)602D中所看到的那樣,最初可以通過(guò)執(zhí)行線程向POD發(fā)送分組2和4。在幾個(gè)周期之后,線程可以完成分組3的工作并將其放在POD中。分組可能尚未被排序,這 是因?yàn)榉纸M1尚未就位。最后,在周期t7完成分組1并將其相應(yīng)地放在POD中。現(xiàn)在可以 對(duì)分組進(jìn)行排序,并且POD能夠按照1、2、3、4的次序發(fā)出分組。如果接下來(lái)接收分組5,則 在分組4之后的輸出中發(fā)出分組5。在接收其余分組時(shí),可以將每個(gè)分組存儲(chǔ)在隊(duì)列(例 如512-深結(jié)構(gòu))中,直到接收到下一個(gè)更高序號(hào)的分組為止。在該時(shí)間,可以將分組添加 到輸出流(例如組網(wǎng)輸出)。最老的分組可能永遠(yuǎn)到達(dá)不了 P0D,從而造成瞬時(shí)的線頭阻塞情況。如果處理不適當(dāng),這種錯(cuò)誤狀況會(huì)導(dǎo)致系統(tǒng)死鎖。然而,根據(jù)實(shí)施例的一方面,POD裝備有超時(shí)機(jī)制,該 超時(shí)機(jī)制被設(shè)計(jì)為一旦超時(shí)計(jì)數(shù)器已經(jīng)到期,該超時(shí)機(jī)制就丟掉列表頭部的未到達(dá)分組。 以超時(shí)計(jì)數(shù)器到期之前就填滿隊(duì)列容量(例如512個(gè)位置)的速率向POD輸入分組也是可 能的。根據(jù)實(shí)施例的一方面,在POD達(dá)到隊(duì)列容量時(shí),可以丟掉列表頭部的分組并可以接受 新的分組。這個(gè)動(dòng)作也可以消除任何線頭阻塞情況。而且,軟件可以知道由于壞分組、控 制分組或一些其他適當(dāng)原因,將不會(huì)向POD中輸入某一序號(hào)。在這種情況下,軟件控制可以 在POD中插入“空”描述符,以在允許POD自動(dòng)反應(yīng)之前消除瞬時(shí)的線頭阻塞情況。根據(jù)本發(fā)明的實(shí)施例,五個(gè)可編程的POD是可用的(例如芯片上),并可以將這五 個(gè)可編程的POD看作是一般性“排序”結(jié)構(gòu)。在一個(gè)示例性配置中,軟件控制(即經(jīng)由用戶) 可以向四個(gè)組網(wǎng)接口分配POD中的四個(gè),同時(shí)保留一個(gè)POD用于一般排序目的。此外,如果 對(duì)于僅有軟件的控制就足夠的應(yīng)用希望這樣做的話,可以簡(jiǎn)單地繞過(guò)POD。F.存儲(chǔ)器接口和訪問(wèn)在本發(fā)明實(shí)施例的一個(gè)方面中,高級(jí)電信處理器還可以包括存儲(chǔ)器橋218,存儲(chǔ)器 橋218耦合到數(shù)據(jù)交換互連和至少一個(gè)通信端口(例如框220),并且該存儲(chǔ)器橋218被配 置為與數(shù)據(jù)交換互連和通信端口通信。在本發(fā)明的一個(gè)方面中,高級(jí)電信處理器還可以包括超級(jí)存儲(chǔ)器橋206,超級(jí)存儲(chǔ) 器橋206耦合到數(shù)據(jù)交換互連(DSI)、接口切換互連和至少一個(gè)通信端口(例如框202、框 204),并且該超級(jí)存儲(chǔ)器橋206被配置為與數(shù)據(jù)交換互連、接口切換互連和通信端口通信。在本發(fā)明實(shí)施例的另一方面中,如上文參考圖4A、圖4B和圖4C所述,可以在基于 環(huán)的數(shù)據(jù)移動(dòng)網(wǎng)絡(luò)上實(shí)現(xiàn)存儲(chǔ)器排序。G.結(jié)論本發(fā)明的優(yōu)點(diǎn)包括能夠以高效且成本效益高的方式在計(jì)算機(jī)系統(tǒng)與存儲(chǔ)器之間 提供高帶寬通信。具體而言,本發(fā)明的本實(shí)施例集中于一種新型PCIe接口,這種PCIe接口 通過(guò)使處理器能夠與各種不同PCIe設(shè)備一起工作而增強(qiáng)了高級(jí)處理器的能力。已經(jīng)公開了示例性實(shí)施例和最佳模式,可以對(duì)公開的實(shí)施例進(jìn)行各種修改和變 形,同時(shí)保持在由以下權(quán)利要求界定的本發(fā)明的主題和精神之內(nèi)。
權(quán)利要求
一種用于多內(nèi)核處理器的星形拓?fù)浯锌偩€接口系統(tǒng),所述處理器內(nèi)核中的至少一些能夠支持多個(gè)軟件產(chǎn)生的讀或?qū)懼噶?,用于與所述星形拓?fù)浯锌偩€接口系統(tǒng)接口;所述多內(nèi)核處理器具有能夠?qū)⒏鲀?nèi)核處理器鏈接在一起的內(nèi)部快速消息收發(fā)網(wǎng)絡(luò)或接口切換互連;其中所述星形拓?fù)浯锌偩€接口系統(tǒng)連接到所述快速消息收發(fā)網(wǎng)絡(luò)或接口切換互連,并且其中所述星形拓?fù)浯锌偩€接口系統(tǒng)被配置為從所述內(nèi)核處理器接收存儲(chǔ)器讀或?qū)懓l(fā)送請(qǐng)求;并且其中所述星形拓?fù)浯锌偩€接口系統(tǒng)包括DMA,所述DMA被配置為響應(yīng)于所述讀或?qū)懻?qǐng)求中的至少一個(gè)而允許將所述內(nèi)部快速消息收發(fā)網(wǎng)絡(luò)或接口切換互連存儲(chǔ)器讀或?qū)懻?qǐng)求實(shí)現(xiàn)為星形拓?fù)浯锌偩€事務(wù)層分組(TLP)。
2.根據(jù)權(quán)利要求1所述的星形拓?fù)浯锌偩€接口系統(tǒng),其中所述星形拓?fù)浯锌偩€遵 守從一組協(xié)議中選擇的協(xié)議,該組協(xié)議包括PCIe、HyperTransport、InfiniBand、RapidIO 和 StarFabric 協(xié)議。
3.根據(jù)權(quán)利要求1所述的星形拓?fù)浯锌偩€接口系統(tǒng),其中所述快速消息收發(fā)網(wǎng)絡(luò) 或接口切換互連承載與存儲(chǔ)器相關(guān)的消息分組,所述消息分組包括從一組字段中選擇的字 段,該組字段包括DMA源地址字段、DMA目的地地址字段、DMA數(shù)據(jù)字節(jié)計(jì)數(shù)字段和星形拓?fù)?串行總線控制字段,并且其中所述星形拓?fù)浯锌偩€接口能夠讀取和理解這些字段。
4.根據(jù)權(quán)利要求1所述的星形拓?fù)浯锌偩€接口系統(tǒng),其中所述快速消息收發(fā)網(wǎng)絡(luò)或 接口切換互連采用基于信用的流控制來(lái)管理消息發(fā)送,其中為給定發(fā)射機(jī)分配固定數(shù)量的 發(fā)送信用,以用于向特定接收機(jī)發(fā)送消息,所述給定發(fā)射機(jī)經(jīng)由所述快速消息收發(fā)網(wǎng)絡(luò)向 所述特定接收機(jī)進(jìn)行的發(fā)送用完了這些信用的一部分,并且其中在用完針對(duì)所述特定接收 機(jī)的所述發(fā)送信用時(shí),不能再?gòu)乃鼋o定發(fā)射機(jī)向所述特定接收機(jī)進(jìn)行發(fā)送,直到所述特 定接收機(jī)經(jīng)由所述快速消息收發(fā)網(wǎng)絡(luò)或接口切換互連將補(bǔ)充了所述發(fā)送信用的至少一部 分的消息發(fā)回所述特定發(fā)射機(jī)為止,并且其中所述星形拓?fù)浯锌偩€接口采用所述基于信 用的流控制系統(tǒng)。
5.根據(jù)權(quán)利要求1所述的星形拓?fù)浯锌偩€接口系統(tǒng),其中所述快速消息收發(fā)網(wǎng)絡(luò)或 接口切換互連從分組分配引擎(PDE)發(fā)送隊(duì)列向處理器內(nèi)核發(fā)送線程消息,所述分組分配 引擎發(fā)送隊(duì)列采用輪詢分配方案、加權(quán)輪詢分配方案或渴望輪詢分配方案,并且其中所述 星形拓?fù)浯锌偩€接口利用內(nèi)部隊(duì)列來(lái)處理來(lái)自所述快速消息收發(fā)網(wǎng)絡(luò)或接口切換互連 的消息,所述內(nèi)部隊(duì)列采用輪詢分配方案、加權(quán)輪詢分配方案或渴望輪詢分配方案。
6.根據(jù)權(quán)利要求1所述的星形拓?fù)浯锌偩€接口系統(tǒng),其中所述快速消息收發(fā)網(wǎng)絡(luò)或 接口切換互連具有環(huán)形結(jié)構(gòu)。
7.根據(jù)權(quán)利要求1所述的星形拓?fù)浯锌偩€接口系統(tǒng),其中所述快速消息收發(fā)網(wǎng)絡(luò)至 少通過(guò)所述內(nèi)核的指令高速緩沖存儲(chǔ)器耦合到所述處理器內(nèi)核,所述接口切換互連經(jīng)由超 級(jí)存儲(chǔ)器橋耦合到所述快速消息收發(fā)網(wǎng)絡(luò)和數(shù)據(jù)交換互連兩者,并且所述數(shù)據(jù)交換互連至 少通過(guò)所述內(nèi)核的數(shù)據(jù)高速緩沖存儲(chǔ)器耦合到所述處理器內(nèi)核。
8.根據(jù)權(quán)利要求1所述的星形拓?fù)浯锌偩€接口,其中所述處理器內(nèi)核具有從由MIPS、x86、PowerPC和ARM架構(gòu)和指令集構(gòu)成的組中選擇的架構(gòu)和指令集。
9.一種用于高級(jí)多內(nèi)核處理器的星形拓?fù)浯锌偩€接口,所述高級(jí)內(nèi)核處理器包括多個(gè)處理器內(nèi)核,每個(gè)處理器內(nèi)核具有數(shù)據(jù)高速緩沖存儲(chǔ)器和指令高速緩沖存儲(chǔ)器;耦合到所述內(nèi)核的快速消息收發(fā)網(wǎng)絡(luò)(FMN)或接口切換互連(ISI),所述快速消息收 發(fā)網(wǎng)絡(luò)或接口切換互連被配置為在所述多個(gè)處理器內(nèi)核、所述星形拓?fù)浯锌偩€接口和任 選設(shè)備中的任意設(shè)備之間提供與存儲(chǔ)器相關(guān)或不與存儲(chǔ)器相關(guān)的消息傳輸,所述任選設(shè)備 是從由L2高速緩沖存儲(chǔ)器、通信端口、網(wǎng)絡(luò)I/O接口組、DMA設(shè)備、分析器/分類器設(shè)備、 XGMII/SPI-4.2端口、分組分配引擎(PDE)和安全加速引擎構(gòu)成的組中選擇的;其中所述星形拓?fù)浯锌偩€接口包括至少一個(gè)DMA和關(guān)聯(lián)的星形拓?fù)浯锌偩€支持 電路,用于將所述快速消息收發(fā)網(wǎng)絡(luò)或接口切換互連上的存儲(chǔ)器讀或?qū)懴⑥D(zhuǎn)換成適于通 過(guò)星形拓?fù)浯锌偩€傳送到一個(gè)或多個(gè)星形拓?fù)浯锌偩€外圍設(shè)備的星形拓?fù)浯锌偩€ 事務(wù)層分組。
10.根據(jù)權(quán)利要求9所述的星形拓?fù)浯锌偩€接口,其中所述星形拓?fù)浯锌偩€遵守 從一組協(xié)議中選擇的協(xié)議,該組協(xié)議包括PCIe、HyperTransport、InfiniBand、RapidIO和 StarFabric 協(xié)議。
11.根據(jù)權(quán)利要求9所述的星形拓?fù)浯锌偩€接口,其中所述快速消息收發(fā)網(wǎng)絡(luò)或接 口切換互連承載與存儲(chǔ)器相關(guān)的消息分組,所述消息分組包括從一組字段中選擇的字段, 該組字段包括DMA源地址字段、DMA目的地地址字段、DMA數(shù)據(jù)字節(jié)計(jì)數(shù)字段和星形拓?fù)浯?行總線控制字段,并且其中所述星形拓?fù)浯锌偩€接口能夠讀取和理解這些字段。
12.根據(jù)權(quán)利要求9所述的星形拓?fù)浯锌偩€接口,其中所述快速消息收發(fā)網(wǎng)絡(luò)或接 口切換互連采用基于信用的流控制來(lái)管理消息發(fā)送,其中為給定發(fā)射機(jī)分配固定數(shù)量的發(fā) 送信用,以用于向特定接收機(jī)發(fā)送消息,所述給定發(fā)射機(jī)經(jīng)由所述快速消息收發(fā)網(wǎng)絡(luò)或接 口切換互連向所述特定接收機(jī)進(jìn)行的發(fā)送用完了這些信用的一部分,并且其中在用完針對(duì) 所述特定接收機(jī)的所述發(fā)送信用時(shí),不能再?gòu)乃鼋o定發(fā)射機(jī)向所述特定接收機(jī)進(jìn)行發(fā) 送,直到所述特定接收機(jī)經(jīng)由所述快速消息收發(fā)網(wǎng)絡(luò)或接口切換互連將補(bǔ)充了所述發(fā)送信 用的至少一部分的消息發(fā)回所述特定發(fā)射機(jī)為止,并且其中所述星形拓?fù)浯锌偩€接口采 用所述基于信用的流控制系統(tǒng)。
13.根據(jù)權(quán)利要求9所述的星形拓?fù)浯锌偩€接口,其中所述快速消息收發(fā)網(wǎng)絡(luò)或接 口切換互連從分組分配引擎(PDE)發(fā)送隊(duì)列向處理器內(nèi)核發(fā)送線程消息,所述分組分配引 擎發(fā)送隊(duì)列采用輪詢分配方案、加權(quán)輪詢分配方案或渴望輪詢分配方案,并且其中所述星 形拓?fù)浯锌偩€接口利用內(nèi)部隊(duì)列來(lái)處理來(lái)自所述快速消息收發(fā)網(wǎng)絡(luò)或接口切換互連的 消息,所述內(nèi)部隊(duì)列采用輪詢分配方案、加權(quán)輪詢分配方案或渴望輪詢分配方案。
14.根據(jù)權(quán)利要求9所述的星形拓?fù)浯锌偩€接口,其中所述快速消息收發(fā)網(wǎng)絡(luò)或接 口切換互連具有環(huán)形結(jié)構(gòu)。
15.根據(jù)權(quán)利要求9所述的星形拓?fù)浯锌偩€接口,其中所述快速消息收發(fā)網(wǎng)絡(luò)至少 通過(guò)所述內(nèi)核的指令高速緩沖存儲(chǔ)器耦合到所述處理器內(nèi)核,所述接口切換互連經(jīng)由超級(jí) 存儲(chǔ)器橋耦合到所述快速消息收發(fā)網(wǎng)絡(luò)和數(shù)據(jù)交換互連兩者,并且所述數(shù)據(jù)交換互連至少 通過(guò)所述內(nèi)核的數(shù)據(jù)高速緩沖存儲(chǔ)器耦合到所述處理器內(nèi)核。
16.根據(jù)權(quán)利要求9所述的星形拓?fù)浯锌偩€接口,其中所述處理器內(nèi)核具有從由 MIPS、x86、PowerPC和ARM架構(gòu)和指令集構(gòu)成的組中選擇的架構(gòu)和指令集。
17.一種用于高級(jí)多內(nèi)核處理器的PCIe接口系統(tǒng),所述高級(jí)內(nèi)核處理器包括多個(gè)處理器內(nèi)核,每個(gè)處理器內(nèi)核具有數(shù)據(jù)高速緩沖存儲(chǔ)器和指令高速緩沖存儲(chǔ)器;數(shù)據(jù)交換互連環(huán)裝置,所述數(shù)據(jù)交換互連環(huán)裝置直接與所述多個(gè)處理器內(nèi)核中的每一 個(gè)處理器內(nèi)核的所述數(shù)據(jù)高速緩沖存儲(chǔ)器耦合,所述數(shù)據(jù)交換互連環(huán)裝置被配置為在所述 多個(gè)處理器內(nèi)核之間傳遞與存儲(chǔ)器相關(guān)的信息;以及與所述數(shù)據(jù)交換互連環(huán)裝置分開的快速消息收發(fā)網(wǎng)絡(luò)(FMN),所述快速消息收發(fā)網(wǎng)絡(luò) 直接與所述多個(gè)處理器內(nèi)核中的每一個(gè)處理器內(nèi)核的所述指令高速緩沖存儲(chǔ)器耦合;接口切換互連,所述接口切換互連經(jīng)由超級(jí)存儲(chǔ)器橋連接到所述快速消息收發(fā)網(wǎng)絡(luò)和 數(shù)據(jù)交換互連;所述快速消息收發(fā)網(wǎng)絡(luò)和接口切換互連被配置為在所述多個(gè)處理器內(nèi)核中的任意處 理器內(nèi)核之間以及在PCIe接口和任選設(shè)備之間提供與存儲(chǔ)器相關(guān)或不與存儲(chǔ)器相關(guān)的消 息傳輸,所述任選設(shè)備是從由L2高速緩沖存儲(chǔ)器、通信端口、網(wǎng)絡(luò)I/O接口組、DMA設(shè)備、分 析器/分類器設(shè)備、XGMII/SPI-4.2端口、分組分配引擎(PDE)和安全加速引擎構(gòu)成的組中 選擇的;其中任何所述處理器內(nèi)核和任何所述任選設(shè)備利用所述快速消息收發(fā)網(wǎng)絡(luò)或接口切 換互連向任何其他所述處理器內(nèi)核和任何其他所述任選設(shè)備發(fā)送消息;其中所述PCIe接口包括至少一個(gè)DMA和關(guān)聯(lián)的PCIe支持電路,用于將來(lái)自所述快速 消息收發(fā)網(wǎng)絡(luò)或接口切換互連的存儲(chǔ)器讀或?qū)懴⑥D(zhuǎn)換成適于通過(guò)PCIe串行總線傳送到 一個(gè)或多個(gè)PCIe外圍設(shè)備的PCIe事務(wù)層分組。
18.根據(jù)權(quán)利要求17所述的PCIe接口系統(tǒng),其中所述快速消息收發(fā)網(wǎng)絡(luò)承載與存儲(chǔ) 器相關(guān)的消息分組,所述消息分組包括從一組字段中選擇的字段,該組字段包括DMA源地 址字段、DMA目的地地址字段、DMA數(shù)據(jù)字節(jié)計(jì)數(shù)字段和PCIe總線控制字段,并且其中所述 PCIe接口能夠讀取和理解這些字段。
19.根據(jù)權(quán)利要求17所述的PCIe接口系統(tǒng),其中所述快速消息收發(fā)網(wǎng)絡(luò)采用基于信用 的流控制來(lái)管理消息發(fā)送,其中為給定發(fā)射機(jī)分配固定數(shù)量的發(fā)送信用,以用于向特定接 收機(jī)發(fā)送消息,所述給定發(fā)射機(jī)經(jīng)由所述快速消息收發(fā)網(wǎng)絡(luò)向所述特定接收機(jī)進(jìn)行的發(fā)送 用完了這些信用的一部分,并且其中在用完針對(duì)所述特定接收機(jī)的所述發(fā)送信用時(shí),不能 再?gòu)乃鼋o定發(fā)射機(jī)向所述特定接收機(jī)進(jìn)行發(fā)送,直到所述特定接收機(jī)經(jīng)由所述快速消息 收發(fā)網(wǎng)絡(luò)將補(bǔ)充了所述發(fā)送信用的至少一部分的消息發(fā)回所述特定發(fā)射機(jī)為止,并且其中 所述PCIe接口采用所述基于信用的流控制系統(tǒng)。
20.根據(jù)權(quán)利要求17所述的PCIe接口系統(tǒng),其中所述快速消息收發(fā)網(wǎng)絡(luò)從分組分配引 擎(PDE)發(fā)送隊(duì)列向處理器內(nèi)核發(fā)送線程消息,所述分組分配引擎發(fā)送隊(duì)列采用輪詢分配 方案、加權(quán)輪詢分配方案或渴望輪詢分配方案,并且其中所述PCIe接口利用內(nèi)部隊(duì)列來(lái)處 理來(lái)自所述快速消息收發(fā)網(wǎng)絡(luò)的消息,所述內(nèi)部隊(duì)列采用輪詢分配方案、加權(quán)輪詢分配方 案或渴望輪詢分配方案。
21.根據(jù)權(quán)利要求17所述的PCIe接口系統(tǒng),其中所述快速消息收發(fā)網(wǎng)絡(luò)或接口切換互連具有環(huán)形結(jié)構(gòu)。
22.根據(jù)權(quán)利要求17所述的星形拓?fù)浯锌偩€接口,其中所述處理器內(nèi)核具有從由 MIPS、x86、PowerPC和ARM架構(gòu)和指令集構(gòu)成的組中選擇的架構(gòu)和指令集。
23.—種系統(tǒng),包括多內(nèi)核處理器,所述多內(nèi)核處理器包括多個(gè)處理器內(nèi)核,所述多個(gè)處理器內(nèi)核能夠支 持多個(gè)軟件產(chǎn)生的讀或?qū)懼噶?,以與PCIe總線接口進(jìn)行接口 ;所述多內(nèi)核處理器具有能夠?qū)⒍鄠€(gè)處理器內(nèi)核鏈接在一起的內(nèi)部快速消息收發(fā)網(wǎng)絡(luò) 或接口切換互連。
24.根據(jù)權(quán)利要求23所述的系統(tǒng),其中所述PCIe總線接口包括用于對(duì)從所述快速消息 收發(fā)網(wǎng)絡(luò)或所述接口切換互連接收的讀或?qū)懴⑦M(jìn)行轉(zhuǎn)換的電路。
25.根據(jù)權(quán)利要求23所述的系統(tǒng),其中所述PCIe總線接口包括用于將從所述快速消 息收發(fā)網(wǎng)絡(luò)或所述接口切換互連接收的讀或?qū)懴⑥D(zhuǎn)換成適于通過(guò)PCIe總線傳送的PCIe 事務(wù)層分組的電路。
26.根據(jù)權(quán)利要求25所述的系統(tǒng),其中所述電路包括至少一個(gè)直接存儲(chǔ)器存取和關(guān)聯(lián) 的PCIe電路。
27.根據(jù)權(quán)利要求23所述的系統(tǒng),其中所述多內(nèi)核處理器具有能夠?qū)⒍鄠€(gè)處理器內(nèi)核 鏈接在一起的接口切換互連。
28.根據(jù)權(quán)利要求23所述的系統(tǒng),其中所述多內(nèi)核處理器具有能夠?qū)⒍鄠€(gè)處理器內(nèi)核 鏈接在一起的內(nèi)部快速消息收發(fā)網(wǎng)絡(luò)。
29.根據(jù)權(quán)利要求28所述的系統(tǒng),其中所述PCIe總線接口處理來(lái)自所述快速消息收發(fā) 網(wǎng)絡(luò)的消息。
30.根據(jù)權(quán)利要求29所述的系統(tǒng),其中所述PCIe總線接口利用內(nèi)部隊(duì)列來(lái)處理來(lái)自所 述快速消息收發(fā)網(wǎng)絡(luò)的消息。
31.根據(jù)權(quán)利要求29所述的系統(tǒng),其中所述PCIe總線接口利用輪詢分配方案來(lái)處理來(lái) 自所述快速消息收發(fā)網(wǎng)絡(luò)的消息。
32.根據(jù)權(quán)利要求29所述的系統(tǒng),其中所述PCIe總線接口利用加權(quán)輪詢分配方案來(lái)處 理來(lái)自所述快速消息收發(fā)網(wǎng)絡(luò)的消息。
33.根據(jù)權(quán)利要求29所述的系統(tǒng),其中所述PCIe總線接口利用渴望輪詢分配方案來(lái)處 理來(lái)自所述快速消息收發(fā)網(wǎng)絡(luò)的消息。
34.根據(jù)權(quán)利要求23所述的系統(tǒng),其中所述PCIe總線接口采用基于信用的流控制系統(tǒng)。
35.一種方法,包括提供多內(nèi)核處理器,所述多內(nèi)核處理器包括多個(gè)處理器內(nèi)核,所述多個(gè)處理器內(nèi)核能 夠支持多個(gè)軟件產(chǎn)生的讀或?qū)懼噶?,以與PCIe總線接口進(jìn)行接口 ;所述多內(nèi)核處理器具有能夠?qū)⒍鄠€(gè)處理器內(nèi)核鏈接在一起的內(nèi)部快速消息收發(fā)網(wǎng)絡(luò) 或接口切換互連。
36.根據(jù)權(quán)利要求35所述的方法,其中所述PCIe總線接口包括用于對(duì)從所述快速消息 收發(fā)網(wǎng)絡(luò)或所述接口切換互連接收的讀或?qū)懴⑦M(jìn)行轉(zhuǎn)換的電路。
37.根據(jù)權(quán)利要求35所述的方法,其中所述PCIe總線接口包括用于將從所述快速消息收發(fā)網(wǎng)絡(luò)或所述接口切換互連接收的讀或?qū)懴⑥D(zhuǎn)換成適于通過(guò)PCIe總線傳送的PCIe 事務(wù)層分組的電路。
38.根據(jù)權(quán)利要求35所述的方法,其中所述電路包括至少一個(gè)直接存儲(chǔ)器存取和關(guān)聯(lián) 的PCIe電路。
39.根據(jù)權(quán)利要求35所述的方法,其中所述多內(nèi)核處理器具有能夠?qū)⒍鄠€(gè)處理器內(nèi)核 鏈接在一起的接口切換互連。
40.根據(jù)權(quán)利要求35所述的方法,其中所述多內(nèi)核處理器具有能夠?qū)⒍鄠€(gè)處理器內(nèi)核 鏈接在一起的內(nèi)部快速消息收發(fā)網(wǎng)絡(luò)。
41.根據(jù)權(quán)利要求40所述的方法,其中所述PCIe總線接口處理來(lái)自所述快速消息收發(fā) 網(wǎng)絡(luò)的消息。
42.根據(jù)權(quán)利要求41所述的方法,其中所述PCIe總線接口利用內(nèi)部隊(duì)列來(lái)處理來(lái)自所 述快速消息收發(fā)網(wǎng)絡(luò)的消息。
43.根據(jù)權(quán)利要求41所述的方法,其中所述PCIe總線接口利用輪詢分配方案來(lái)處理來(lái) 自所述快速消息收發(fā)網(wǎng)絡(luò)的消息。
44.根據(jù)權(quán)利要求41所述的方法,其中所述PCIe總線接口利用加權(quán)輪詢分配方案來(lái)處 理來(lái)自所述快速消息收發(fā)網(wǎng)絡(luò)的消息。
45.根據(jù)權(quán)利要求41所述的方法,其中所述PCIe總線接口利用渴望輪詢分配方案來(lái)處 理來(lái)自所述快速消息收發(fā)網(wǎng)絡(luò)的消息。
46.一種系統(tǒng),包括 PCIe總線接口部件;以及多內(nèi)核處理器,所述多內(nèi)核處理器包括多個(gè)處理器內(nèi)核,所述多個(gè)處理器內(nèi)核能夠支 持多個(gè)軟件產(chǎn)生的讀或?qū)懼噶睿越?jīng)由所述PCIe總線接口部件與PCIe總線進(jìn)行接口 ;所述多內(nèi)核處理器具有能夠?qū)⒍鄠€(gè)處理器內(nèi)核鏈接在一起的內(nèi)部快速消息收發(fā)網(wǎng)絡(luò) 或接口切換互連。
47.根據(jù)權(quán)利要求46所述的系統(tǒng),其中所述PCIe總線接口部件與所述多內(nèi)核處理器集成在一起。
全文摘要
一種高級(jí)處理器包括多個(gè)多線程處理器內(nèi)核,每個(gè)多線程處理器內(nèi)核均具有數(shù)據(jù)高速緩沖存儲(chǔ)器和指令高速緩沖存儲(chǔ)器。數(shù)據(jù)交換互連耦合到每個(gè)處理器內(nèi)核并用于在處理器內(nèi)核之間傳遞信息。消息收發(fā)網(wǎng)絡(luò)耦合到每個(gè)處理器內(nèi)核和多個(gè)通信端口。數(shù)據(jù)交換互連通過(guò)其相應(yīng)的數(shù)據(jù)高速緩沖存儲(chǔ)器耦合到每個(gè)處理器內(nèi)核,并且消息收發(fā)網(wǎng)絡(luò)通過(guò)其相應(yīng)的消息站耦合到每個(gè)處理器內(nèi)核。在本發(fā)明實(shí)施例的一個(gè)方面中,消息收發(fā)網(wǎng)絡(luò)連接到高帶寬星形拓?fù)浯锌偩€,例如能夠支持多個(gè)高帶寬PCIe通道的PCIexpress(PCIe)接口。本發(fā)明的優(yōu)點(diǎn)包括能夠以高效且成本效益高的方式在計(jì)算機(jī)系統(tǒng)和存儲(chǔ)器之間提供高帶寬通信。
文檔編號(hào)G06F15/16GK101878475SQ200880100883
公開日2010年11月3日 申請(qǐng)日期2008年7月25日 優(yōu)先權(quán)日2007年7月31日
發(fā)明者D·T.·哈斯, J·J·朱 申請(qǐng)人:Netlogic微系統(tǒng)公司