具有可擴(kuò)展寄存器尋址的用于指令集架構(gòu)的制作方法
【專(zhuān)利摘要】本發(fā)明涉及具有可擴(kuò)展寄存器尋址的用于指令集架構(gòu)。一種方法和電路布置至少部分基于指令的操作數(shù)地址是否引用主寄存器文件的主寄存器從/向擴(kuò)展寄存器文件的擴(kuò)展寄存器有選擇地獲取和/或?qū)懭霐?shù)據(jù),該主寄存器被配置為存儲(chǔ)指向擴(kuò)展寄存器的指針。連接到主寄存器文件和擴(kuò)展寄存器文件的控制邏輯確定操作數(shù)地址是否引用被配置為存儲(chǔ)指針的主寄存器,并且響應(yīng)于確定,控制邏輯使執(zhí)行邏輯從/向由存儲(chǔ)在引用的主寄存器中的指針?biāo)赶虻臄U(kuò)展寄存器有選擇地獲取和/或?qū)懭霐?shù)據(jù)。
【專(zhuān)利說(shuō)明】具有可擴(kuò)展寄存器尋址的用于指令集架構(gòu)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明主要地涉及數(shù)據(jù)處理并且具體地涉及用于處理器的指令集架構(gòu)和并入這 些指令集架構(gòu)的計(jì)算機(jī)。
【背景技術(shù)】
[0002] 每個(gè)計(jì)算機(jī)處理器的基本任務(wù)是執(zhí)行計(jì)算機(jī)程序。處理器如何處置這一任務(wù)和 計(jì)算機(jī)程序必須如何向處理器呈現(xiàn)它們本身以用于執(zhí)行由處理器的微架構(gòu)和指令集架構(gòu) (ISA)這二者支配。ISA與編程模型類(lèi)似并且主要地涉及計(jì)算機(jī)程序中的指令應(yīng)當(dāng)如何被 格式化以便被處理器恰當(dāng)解碼和執(zhí)行,但是ISA也可以規(guī)定處理器的其它方面、比如本機(jī) 數(shù)據(jù)類(lèi)型、寄存器、尋址模式、存儲(chǔ)器架構(gòu)、中斷和例外處理以及外部I/O。微架構(gòu)主要支 配關(guān)于指令如何被解碼和執(zhí)行的更低級(jí)細(xì)節(jié)、包括處理器的構(gòu)成部分(例如執(zhí)行單元的類(lèi) 型、比如定點(diǎn)和浮點(diǎn)執(zhí)行單元)和這些構(gòu)成部分如何相互連接和相互操作以實(shí)施處理器的 架構(gòu)規(guī)范。
[0003]ISA通常包括能夠被特定處理器設(shè)計(jì)執(zhí)行的每個(gè)指令類(lèi)型的格式的規(guī)范。通常, 指令將被編碼為包括標(biāo)識(shí)指令類(lèi)型(即在執(zhí)行指令時(shí)將執(zhí)行的操作類(lèi)型)的操作代碼或者 操作碼以及標(biāo)識(shí)/引用將被指令處理的輸入和/或輸出(即源和目標(biāo))數(shù)據(jù)的一個(gè)或者多 個(gè)操作數(shù)地址(即操作數(shù))。在許多處理器設(shè)計(jì)、例如精簡(jiǎn)指令集計(jì)算機(jī)(RISC)和其它加 載-存儲(chǔ)設(shè)計(jì)中,主要在通用寄存器(GPR)(常稱(chēng)為"寄存器文件")的集合內(nèi)操縱數(shù)據(jù)而加 載和存儲(chǔ)指令用來(lái)分別從存儲(chǔ)器向GPR中取回輸入數(shù)據(jù)和從GPR并且向存儲(chǔ)器中存儲(chǔ)回結(jié) 果或者輸出數(shù)據(jù)。因此,對(duì)于操縱數(shù)據(jù)的指令的大多數(shù)而言,指令指定從其取回輸入數(shù)據(jù)的 一個(gè)或者多個(gè)輸入或者源寄存器以及向其寫(xiě)入結(jié)果數(shù)據(jù)的輸出或者目的地寄存器。
[0004] 通常在ISA中定義指令為固定大小、例如寬度為32位或者64位。盡管多個(gè)32或 者64位的值可以用來(lái)指定指令,但是使用多個(gè)值是不希望的,因?yàn)槎鄠€(gè)值經(jīng)過(guò)處理器傳播 需要更多時(shí)間并且顯著增加設(shè)計(jì)復(fù)雜性。有了這些固定指令帶寬,僅有限數(shù)目的位可用于 用作操作碼和操作數(shù)。
[0005]每個(gè)唯一指令類(lèi)型常規(guī)地需要唯一操作碼,因此為了支持更大數(shù)目的指令類(lèi)型 (業(yè)內(nèi)的一貫需要),經(jīng)常必須向指令架構(gòu)的操作碼部分分配附加位。在一些實(shí)例中,操作 碼可以被分解成主操作碼和輔操作碼,而主操作碼定義指令類(lèi)型并且輔操作碼定義用于特 定指令類(lèi)型的子類(lèi)型;然而即使在使用主操作碼和輔操作碼時(shí),兩種操作碼占用每個(gè)指令 中的位位置。
[0006]類(lèi)似地,存在對(duì)于擴(kuò)展ISA支持的寄存器數(shù)目的一貫需要,因?yàn)橹谱骷夹g(shù)的進(jìn)步 持續(xù)使更大數(shù)目的寄存器被架構(gòu)到集成電路中,并且一般而言,性能隨著寄存器數(shù)目增加 而提商。
[0007]每個(gè)寄存器也需要唯一標(biāo)識(shí)符(例如地址),因此隨著寄存器數(shù)目增加,為了標(biāo)識(shí) /引用所有支持的寄存器而需要的在每個(gè)指令的操作數(shù)中的位位置數(shù)目類(lèi)似地增加。
[0008]作為示例,考慮處理器架構(gòu),該處理器架構(gòu)支持具有6位主操作碼字段的32位指 令,因此支持共計(jì)64個(gè)類(lèi)型或者指令類(lèi)。例如如果希望在這一架構(gòu)內(nèi)實(shí)施標(biāo)識(shí)來(lái)自64個(gè) 寄存器的寄存器文件中的多至三個(gè)源寄存器和一個(gè)分離目的地寄存器的指令類(lèi),則每個(gè)操 作數(shù)需要6位操作數(shù)字段。這樣,對(duì)于主操作碼需要6位,對(duì)于源寄存器地址需要18位,并 且對(duì)于目標(biāo)寄存器地址需要6位,從而僅留下2位用于擴(kuò)展操作碼并且在這一指令類(lèi)中僅 允許四個(gè)可能指令。
[0009] 使用32位指令來(lái)實(shí)施128個(gè)寄存器的寄存器文件甚至更有問(wèn)題。例如如果在指 令集架構(gòu)的類(lèi)中的指令中的一些指令需要三個(gè)源寄存器和一個(gè)目標(biāo)寄存器,則操作數(shù)將需 要28位(每操作數(shù)為7位),僅四位將可用于任何主操作碼和/或輔操作碼。因此,例如如 果對(duì)于主操作碼需要四位以標(biāo)識(shí)特定指令集,則該指令類(lèi)將限于單個(gè)指令,因?yàn)閷o(wú)用于 任何輔操作碼或者擴(kuò)展操作碼的空間。
[0010] 然而在多數(shù)實(shí)例中,為了架構(gòu)有用而需要更多指令類(lèi)型。例如用于執(zhí)行浮點(diǎn)運(yùn)算 的指令類(lèi)可能需要指令類(lèi)型,這些指令類(lèi)型執(zhí)行加法、減法、乘法、融合的乘法-加法運(yùn)算、 除法、求冪、三角運(yùn)算、比較運(yùn)算和其它運(yùn)算。
[0011] 已經(jīng)進(jìn)行常規(guī)嘗試以解決這些限制。例如可以使三源運(yùn)算有破壞性 (destructive),這意味著目標(biāo)和一個(gè)源地址將隱含地相等,從而將無(wú)需上例中的一個(gè)地址 字段從而釋放空間用于附加擴(kuò)展操作碼。然而有破壞性的運(yùn)算經(jīng)常讓編譯員和軟件工程師 感覺(jué)不便,因?yàn)榻?jīng)常需要在暫時(shí)寄存器中分開(kāi)保存將被由破壞性的運(yùn)算改寫(xiě)的源數(shù)據(jù)的額 外副本,這除了使用寶貴暫時(shí)寄存器空間之外還可能具有潛在性能問(wèn)題。
[0012]因此,在本領(lǐng)域中持續(xù)存在對(duì)于一種增加由指令集架構(gòu)支持的指令數(shù)目和復(fù)雜性 的方式的顯著需要。
【發(fā)明內(nèi)容】
[0013]本發(fā)明通過(guò)提供一種支持在固定長(zhǎng)度指令架構(gòu)中的擴(kuò)展寄存器尋址(即更大寄 存器文件)而限制專(zhuān)用于操作數(shù)地址的指令的位的方法和電路布置,來(lái)解決與現(xiàn)有技術(shù)關(guān) 聯(lián)的這些和其它問(wèn)題。與本發(fā)明的實(shí)施例一致,包括多個(gè)擴(kuò)展寄存器的擴(kuò)展寄存器文件和 包括多個(gè)寄存器的主寄存器可以耦合到包括用于執(zhí)行指令的執(zhí)行邏輯的執(zhí)行流水線(xiàn)。主寄 存器文件的多個(gè)寄存器可以包括第一子集和第二子集。第一寄存器子集可以被配置為存儲(chǔ) 指向擴(kuò)展寄存器文件的擴(kuò)展寄存器的數(shù)據(jù)、即第一寄存器子集可以存儲(chǔ)指向擴(kuò)展寄存器文 件的擴(kuò)展寄存器的指針。第二寄存器子集可以被配置為存儲(chǔ)可以用作用于利用指令執(zhí)行的 源操作數(shù)/目標(biāo)操作數(shù)的數(shù)據(jù)??刂七壿嬁梢择詈系街骷拇嫫魑募蛿U(kuò)展寄存器文件并且 被配置為基于指令是否引用主寄存器的第一寄存器子集使數(shù)據(jù)被向/從擴(kuò)展寄存器文件 有選擇地獲?。╯ource) /寫(xiě)入。
[0014]與本發(fā)明的實(shí)施例一致,在執(zhí)行流水線(xiàn)中對(duì)指令解碼時(shí),控制邏輯確定指令的任 何操作數(shù)地址是否引用主寄存器文件的第一寄存器子集的寄存器。對(duì)于引用第一子集的寄 存器的任何操作數(shù),控制邏輯使數(shù)據(jù)被從和/或向擴(kuò)展寄存器文件的擴(kuò)展寄存器獲取和/ 或?qū)懭搿>唧w而言,可以訪(fǎng)問(wèn)操作數(shù)地址引用的第一子集的寄存器,并且其中存儲(chǔ)的數(shù)據(jù)作 為指針用來(lái)確定從/向其獲取/寫(xiě)入數(shù)據(jù)的特定擴(kuò)展寄存器。因此,控制邏輯可以基于指 令的操作數(shù)地址是否引用主寄存器文件的寄存器一該寄存器被配置為存儲(chǔ)指向擴(kuò)展寄 存器文件的擴(kuò)展寄存器的指針一從擴(kuò)展寄存器有選擇地獲取用于指令的數(shù)據(jù)。
[0015] 作為本發(fā)明的特征的這些和其它優(yōu)點(diǎn)以及特征在所附權(quán)利要求中被闡述并且形 成其又一部分。然而為了更好地理解本發(fā)明以及通過(guò)使用本發(fā)明而獲得的優(yōu)點(diǎn)和目的,應(yīng) 當(dāng)參照其中描述本發(fā)明的示例實(shí)施例的附圖和所附描述內(nèi)容。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0016] 圖1是包括在與本發(fā)明的實(shí)施例一致的數(shù)據(jù)處理中有用的示例計(jì)算機(jī)的示例自 動(dòng)化計(jì)算機(jī)器的框圖。
[0017] 圖2是在圖1的計(jì)算機(jī)中實(shí)施的示例N0C的框圖。
[0018] 圖3是更具體圖示來(lái)自圖2的N0C的節(jié)點(diǎn)的示例實(shí)現(xiàn)方式的框圖。
[0019] 圖4是圖示來(lái)自圖2的N0C的IP塊的示例實(shí)現(xiàn)方式的框圖。
[0020] 圖5是圖示數(shù)據(jù)處理系統(tǒng)的示例實(shí)現(xiàn)方式的框圖,該數(shù)據(jù)處理系統(tǒng)并入連接到執(zhí) 行邏輯的與本發(fā)明的實(shí)施例一致的擴(kuò)展寄存器文件和控制邏輯。
[0021] 圖6是圖示可以被圖5的數(shù)據(jù)處理系統(tǒng)執(zhí)行的用于從擴(kuò)展寄存器文件有選擇地獲 取數(shù)據(jù)的操作序列的流程圖。
[0022] 圖7是用于存儲(chǔ)的指令的指令格式的框圖。
[0023] 圖8是可以被圖5的數(shù)據(jù)處理系統(tǒng)執(zhí)行的存儲(chǔ)的指令的指令格式的示例框圖。
[0024] 圖9是圖示可以被圖5的數(shù)據(jù)處理系統(tǒng)處理的示例指令的框圖,其中處理可以包 括使用擴(kuò)展寄存器文件和控制邏輯對(duì)數(shù)據(jù)的有選擇獲取/寫(xiě)入。
【具體實(shí)施方式】
[0025] 與本發(fā)明一致的實(shí)施例提供一種至少部分基于指令是否引用主寄存器文件的、被 配置為存儲(chǔ)指向擴(kuò)展寄存器文件的擴(kuò)展寄存器的指針的寄存器,來(lái)向擴(kuò)展寄存器文件有選 擇地獲取和/或?qū)懭胗糜趫?zhí)行指令的數(shù)據(jù)的電路布置和方法。與本發(fā)明的實(shí)施例一致,指 令可以在執(zhí)行流水線(xiàn)中被處理用于由執(zhí)行流水線(xiàn)的執(zhí)行邏輯執(zhí)行。執(zhí)行流水線(xiàn)的控制邏輯 基于指令的操作數(shù)地址使執(zhí)行邏輯向主寄存器文件或者擴(kuò)展寄存器文件獲取和/或?qū)懭?數(shù)據(jù)。一般而言,主寄存器文件包括多個(gè)寄存器。主寄存器文件的寄存器的第一子集可以 被配置為存儲(chǔ)指向擴(kuò)展寄存器文件的擴(kuò)展寄存器的數(shù)據(jù)。寄存器的第二子集可以被配置為 用作為用于在執(zhí)行流水線(xiàn)中執(zhí)行的指令的源操作數(shù)和/或目標(biāo)操作數(shù)。
[0026] 因此,在指令被執(zhí)行流水線(xiàn)的指令解碼邏輯解碼時(shí),控制邏輯可以確定指令是否 引用主寄存器文件的第一寄存器子集、即操作數(shù)地址是否對(duì)應(yīng)于主寄存器文件的第一寄存 器子集中的寄存器。如果操作數(shù)地址對(duì)應(yīng)于第一寄存器子集,則控制邏輯可以訪(fǎng)問(wèn)引用的 寄存器并且使用引用的寄存器的數(shù)據(jù)作為指向擴(kuò)展寄存器文件的擴(kuò)展寄存器的指針。換而 言之,引用的寄存器存儲(chǔ)數(shù)據(jù)值,該數(shù)據(jù)值是與擴(kuò)展寄存器對(duì)應(yīng)的地址??梢栽谟脠?zhí)行邏輯 執(zhí)行指令時(shí)使用與指針對(duì)應(yīng)的擴(kuò)展寄存器。
[0027] 其它變化和修改將為本領(lǐng)域普通技術(shù)人員所清楚。因此,本發(fā)明不限于這里公開(kāi) 的具體實(shí)現(xiàn)方式。
[0028] 硬件和軟件環(huán)塏
[0029] 現(xiàn)在轉(zhuǎn)向附圖,其中相似標(biāo)號(hào)貫穿若干視圖表示相似部分,圖1圖示包括在與本 發(fā)明的實(shí)施例一致的數(shù)據(jù)處理中有用的示例計(jì)算機(jī)10的示例自動(dòng)化計(jì)算機(jī)器。圖1的計(jì) 算機(jī)包括至少一個(gè)計(jì)算機(jī)處理器12或者'CPU'以及通過(guò)高速存儲(chǔ)器總線(xiàn)16和總線(xiàn)適配器 18連接到處理器12和計(jì)算機(jī)10的其它部件的隨機(jī)存取存儲(chǔ)器14( 'RAM')。
[0030] 在RAM14中存儲(chǔ)應(yīng)用程序20,該應(yīng)用程序是用于執(zhí)行特定數(shù)據(jù)處理任務(wù)、如比如 字處理、電子表格、數(shù)據(jù)庫(kù)操作、視頻游戲、股市仿真、自動(dòng)量子過(guò)程仿真或者其它用戶(hù)級(jí)應(yīng) 用的用戶(hù)級(jí)計(jì)算機(jī)程序指令模塊。在RAM14中也存儲(chǔ)操作系統(tǒng)22。與本發(fā)明的實(shí)施例結(jié)合 有用的操作系統(tǒng)包括UNIX?、Linux?、MicrosoftWindowsXP?、AIX?、IBM的i5/0S? 和如 本領(lǐng)域技術(shù)人員將想到的其它操作系統(tǒng)。在RAM14中示出在圖1的示例中的操作系統(tǒng)22 和應(yīng)用20,但是這樣的軟件的許多部件通常被存儲(chǔ)于也例如在盤(pán)驅(qū)動(dòng)24上的非易失性存 儲(chǔ)器中。
[0031] 如以下將變得更清楚的那樣,可以在片上網(wǎng)絡(luò)(N0C)集成電路設(shè)備或者芯片內(nèi)實(shí) 施與本發(fā)明一致的實(shí)施例,并且這樣圖示計(jì)算機(jī)10包括兩個(gè)示例N0C:視頻適配器26和協(xié) 同處理器28??梢詡溥x地稱(chēng)為圖形適配器的N0C視頻適配器26是被具體設(shè)計(jì)用于向顯示 器設(shè)備30、比如顯示器屏幕或者計(jì)算機(jī)監(jiān)視器的圖形輸出的I/O適配器的示例。N0C視頻 適配器26通過(guò)高速視頻總線(xiàn)32、總線(xiàn)適配器18和前側(cè)總線(xiàn)34連接到處理器12,該前側(cè)總 線(xiàn)也是高速總線(xiàn)。N0C協(xié)同處理器28通過(guò)總線(xiàn)適配器18以及前側(cè)總線(xiàn)34和36連接到處 理器12,這些前側(cè)總線(xiàn)也是高速總線(xiàn)。圖1的N0C協(xié)同處理器可以例如被優(yōu)化為按照主處 理器12的要求來(lái)加速特定數(shù)據(jù)處理任務(wù)。
[0032] 圖1的示例N0C視頻適配器26和N0C協(xié)同處理器28各自包括N0C,該N0C包括集 成處理器('IP')塊、路由器、存儲(chǔ)器通信控制器和網(wǎng)絡(luò)接口控制器,以下將與圖2-3結(jié)合 更具體討論該N0C的細(xì)節(jié)。N0C視頻適配器和N0C協(xié)同處理器各自被優(yōu)化用于程序,這些程 序使用并行處理并且也需要對(duì)共享存儲(chǔ)器的快速隨機(jī)訪(fǎng)問(wèn)。然而受益于本公開(kāi)內(nèi)容的本領(lǐng) 域普通技術(shù)人員將理解,可以在除了N0C設(shè)備和設(shè)備架構(gòu)之外的設(shè)備和設(shè)備架構(gòu)中實(shí)施 本發(fā)明。本發(fā)明因此不限于在N0C設(shè)備內(nèi)實(shí)施。
[0033] 圖1的計(jì)算機(jī)10包括通過(guò)擴(kuò)展總線(xiàn)40和總線(xiàn)適配器18耦合到處理器12和計(jì)算 機(jī)10的其它部件的盤(pán)驅(qū)動(dòng)適配器38。盤(pán)驅(qū)動(dòng)適配器38以盤(pán)驅(qū)動(dòng)24的形式將非易失性數(shù) 據(jù)存儲(chǔ)裝置連接到計(jì)算機(jī)10并且可以例如使用集成驅(qū)動(dòng)電子裝置('IDE')適配器、小型 計(jì)算機(jī)系統(tǒng)接口('SCSI')適配器和如本領(lǐng)域技術(shù)人員將想到的其它適配器來(lái)實(shí)施。非易 失性計(jì)算機(jī)存儲(chǔ)器也可以被實(shí)施用于作為如本領(lǐng)域技術(shù)人員將想到的光盤(pán)驅(qū)動(dòng)、電可擦除 可編程只讀存儲(chǔ)器(所謂'EEPR0M'或者'閃'存)、RAM驅(qū)動(dòng)等。
[0034] 計(jì)算機(jī)10也包括一個(gè)或者多個(gè)輸入/輸出('I/O')適配器42,該一個(gè)或者多個(gè) I/O適配器例如通過(guò)用于控制向顯示器設(shè)備、比如計(jì)算機(jī)顯示器屏幕的輸出的軟件驅(qū)動(dòng)器 和計(jì)算機(jī)硬件實(shí)施面向用戶(hù)的輸入/輸出以及實(shí)施來(lái)來(lái)自用戶(hù)輸入設(shè)備44、比如鍵盤(pán)和鼠 標(biāo)的用戶(hù)輸入。此外,計(jì)算機(jī)10包括用于與其它計(jì)算機(jī)48進(jìn)行數(shù)據(jù)通信和用于與數(shù)據(jù)通 信網(wǎng)絡(luò)50進(jìn)行數(shù)據(jù)通信的通信適配器46??梢酝ㄟ^(guò)RS-232連接、通過(guò)外部總線(xiàn)、比如通用 串行總線(xiàn)('USB')、通過(guò)數(shù)據(jù)通信網(wǎng)絡(luò)、比如IP數(shù)據(jù)通信網(wǎng)絡(luò)和以如本領(lǐng)域技術(shù)人員將想 到的其它方式串行執(zhí)行這樣的數(shù)據(jù)通信。通信適配器實(shí)施硬件級(jí)數(shù)據(jù)通信,通過(guò)這些數(shù)據(jù) 通信,一個(gè)計(jì)算機(jī)直接或者通過(guò)數(shù)據(jù)通信網(wǎng)絡(luò)向另一計(jì)算機(jī)發(fā)送數(shù)據(jù)通信。適合用于在計(jì) 算機(jī)10中使用的通信適配器的示例包括用于有線(xiàn)撥號(hào)通信的調(diào)制解調(diào)器、用于有線(xiàn)數(shù)據(jù) 通信網(wǎng)絡(luò)通信的以太網(wǎng)(IEEE802. 3)適配器和用于無(wú)線(xiàn)數(shù)據(jù)通信網(wǎng)絡(luò)通信的802. 11適配 器。
[0035] 為了進(jìn)一步說(shuō)明,圖2闡述根據(jù)本發(fā)明的實(shí)施例的示例N0C102的功能框圖。在'芯 片' 100上、也就是在集成電路上實(shí)施圖2中的NOC。N0C102包括被分組成互連節(jié)點(diǎn)的集成 處理器('IP')塊104、路由器110、存儲(chǔ)器通信控制器106和網(wǎng)絡(luò)接口控制器108。每個(gè) IP塊104通過(guò)存儲(chǔ)器通信控制器106和網(wǎng)絡(luò)接口控制器108來(lái)向路由器110適配。每個(gè) 存儲(chǔ)器通信控制器控制在IP塊與存儲(chǔ)器之間的通信,并且每個(gè)網(wǎng)絡(luò)接口控制器108控制通 過(guò)路由器110的IP塊間通信。
[0036] 在N0C102中,每個(gè)IP塊代表作為用于在N0C內(nèi)的數(shù)據(jù)處理的構(gòu)建塊使用的同步 或者異步邏輯設(shè)計(jì)可重用單位。有時(shí)擴(kuò)展術(shù)語(yǔ)'IP塊'為'知識(shí)產(chǎn)權(quán)塊'從而有效指明IP塊 為將向半導(dǎo)體電路的其他用戶(hù)或者設(shè)計(jì)者許可的、被一方擁有的設(shè)計(jì)、也就是一方的知識(shí) 產(chǎn)權(quán)。然而在本發(fā)明的范圍內(nèi),未要求IP塊受制于任何特定所有權(quán),因此總是在本說(shuō)明書(shū) 中擴(kuò)展該術(shù)語(yǔ)為'集成處理器塊'。如這里規(guī)定的IP塊是可以是或者可以不是知識(shí)產(chǎn)權(quán)主 體的邏輯、單元或者芯片布局設(shè)計(jì)的可重用單位IP塊可以形成為ASIC芯片設(shè)計(jì)或者FPGA 邏輯設(shè)計(jì)的邏輯核。
[0037] -種用于類(lèi)似地描述IP塊的方式是:IP塊是針對(duì)N0C設(shè)計(jì)何種庫(kù)用于計(jì)算機(jī)編 程或者何種分立集成電路部件用于印刷電路板設(shè)計(jì)。在與本發(fā)明的實(shí)施例一致的N0C中, 可以實(shí)施IP塊為通用門(mén)網(wǎng)表、為完整專(zhuān)用或者通用微處理器或者以如本領(lǐng)域技術(shù)人員可 以想到的其它方式。網(wǎng)表是IP塊的邏輯功能的布爾代數(shù)表示(門(mén)、標(biāo)準(zhǔn)單元),這類(lèi)似于 用于高級(jí)程序應(yīng)用的匯編代碼表。也可以例如以在硬件描述語(yǔ)言、比如Verilog或者VHDL 中描述的可合成形式實(shí)施N0C。除了網(wǎng)表和可合成實(shí)現(xiàn)方式之外,也可以在更低級(jí)物理描 述中交付N0C??梢杂镁w管布局格式、比如⑶SII分發(fā)模擬IP塊元件、比如SERDES、PLL、 DAC、ADC等。有時(shí)也以布局格式賦予IP塊的數(shù)字元件。也將理解可以用計(jì)算機(jī)數(shù)據(jù)文件、 例如邏輯定義程序代碼的形式分發(fā)IP塊以及與本發(fā)明一致實(shí)施的其它邏輯電路裝置,這 些計(jì)算機(jī)數(shù)據(jù)文件在各種細(xì)節(jié)水平定義實(shí)施這樣的邏輯的電路布置的功能和/或布局。因 此,盡管已經(jīng)并且下文將在全功能集成電路器件、利用這樣的器件的數(shù)據(jù)處理系統(tǒng)和其它 有形物理硬件電路中實(shí)施的電路布置的上下文中描述本發(fā)明,但是受益于本公開(kāi)內(nèi)容的本 領(lǐng)域普通技術(shù)人員將理解也可以在程序產(chǎn)品內(nèi)實(shí)施本發(fā)明并且本發(fā)明無(wú)論用來(lái)分發(fā)程序 產(chǎn)品的特定計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)類(lèi)型如何都同樣適用。計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)的示例包括 但不限于物理、可記錄型介質(zhì)、比如易失性和非易失性存儲(chǔ)器設(shè)備、軟盤(pán)、硬盤(pán)驅(qū)動(dòng)、⑶-ROM 和DVD(以及其它示例)。
[0038] 在圖2的示例中的每個(gè)IP塊104通過(guò)存儲(chǔ)器通信控制器106適配到路由器110。 每個(gè)存儲(chǔ)器通信控制器是適于提供在IP塊與存儲(chǔ)器之間的數(shù)據(jù)通信的同步和異步邏輯電 路的聚合。在IP塊與存儲(chǔ)器之間的這樣的通信的示例包括存儲(chǔ)器加載指令和存儲(chǔ)器存儲(chǔ) 指令。以下參照?qǐng)D3更具體描述存儲(chǔ)器通信控制器106。每個(gè)IP塊104也通過(guò)網(wǎng)絡(luò)接口控 制器108適配到路由器110,該網(wǎng)絡(luò)接口控制器控制在IP塊104之間通過(guò)路由器110的通 信。在IP塊之間的通信的示例包括攜帶數(shù)據(jù)和指令的消息,這些指令用于在并行應(yīng)用中和 在流水線(xiàn)化的應(yīng)用中在IP塊之中處理該數(shù)據(jù)。以下也參照?qǐng)D3更具體描述網(wǎng)絡(luò)接口控制 器 108。
[0039] 路由器110和在它們之間的對(duì)應(yīng)鏈路118實(shí)施N0C的網(wǎng)絡(luò)操作。鏈路118可以是 在連接所有路由器的物理、并行接口總線(xiàn)上實(shí)施的分組結(jié)構(gòu)。也就是說(shuō),可以在寬到足以同 時(shí)容納包括所有首部信息和凈荷數(shù)據(jù)的整個(gè)數(shù)據(jù)交換分組的接線(xiàn)總線(xiàn)上實(shí)施每個(gè)鏈路。如 果分組數(shù)據(jù)結(jié)構(gòu)包括64字節(jié),這些字節(jié)例如包括八字節(jié)首部和56字節(jié)的凈荷數(shù)據(jù),則襯托 每個(gè)鏈路的接線(xiàn)總線(xiàn)是64字節(jié)寬的512線(xiàn)。此外,每個(gè)鏈路可以是雙向,從而如果鏈路分 組結(jié)構(gòu)包括64字節(jié),則接線(xiàn)總線(xiàn)實(shí)際包含在每個(gè)路由器與它的在網(wǎng)絡(luò)中的鄰居中的每個(gè) 鄰居之間的1024線(xiàn)。在這樣的實(shí)現(xiàn)方式中,消息可以包括多于一個(gè)分組,但是每個(gè)分組將 精確地相配到接線(xiàn)總線(xiàn)的寬度上。在該可選方案中,可以在接線(xiàn)總線(xiàn)上實(shí)施鏈路,該接線(xiàn) 總線(xiàn)僅寬到足以容納分組的部分,從而分組將被分解成多個(gè)取字時(shí)間(beat),例如從而如 果實(shí)施鏈路為寬度為16字節(jié)或者128個(gè)接線(xiàn),則64字節(jié)分組可以被分解成四個(gè)取字時(shí)間 (beat)。將理解不同實(shí)現(xiàn)方式可以基于實(shí)際物理限制以及希望的性能特性使用不同總線(xiàn)寬 度。如果在路由器與每個(gè)接線(xiàn)總線(xiàn)段之間的連接稱(chēng)為端口,則每個(gè)路由器包括五個(gè)端口,一 個(gè)用于在網(wǎng)絡(luò)上的數(shù)據(jù)傳輸?shù)乃膫€(gè)方向中的每個(gè)相應(yīng)方向而第五端口用于通過(guò)存儲(chǔ)器通 信控制器和網(wǎng)絡(luò)接口控制器將路由器適配到特定IP塊。
[0040] 每個(gè)存儲(chǔ)器通信控制器106控制在IP塊與存儲(chǔ)器之間的通信。存儲(chǔ)器可以包括 片外主RAM112、通過(guò)存儲(chǔ)器通信控制器106直接連接到IP塊的存儲(chǔ)器114、作為IP塊116 啟用的片上存儲(chǔ)器和片上高速緩存。在N0C102中,片上存儲(chǔ)器114、116中的任一片上存儲(chǔ) 器例如可以被實(shí)施為片上高速緩存存儲(chǔ)器。所有這些存儲(chǔ)器形式可以被設(shè)置于物理地址或 者虛擬地址的相同地址空間中,這即使對(duì)于直接附著到IP塊的存儲(chǔ)器也成立。存儲(chǔ)器尋址 的消息因此相對(duì)于IP塊可以完全雙向,因?yàn)榭梢詮脑诰W(wǎng)絡(luò)上別處的任何IP塊對(duì)這樣的存 儲(chǔ)器尋址。在IP塊上的存儲(chǔ)器116可以從該IP塊或者從在N0C中的任何其它IP塊被尋 址。直接附著到存儲(chǔ)器通信控制器的存儲(chǔ)器114可以由該IP塊尋址,該IP塊被該存儲(chǔ)器 通信控制器適配到網(wǎng)絡(luò),并且通信控制器的存儲(chǔ)器114也可以由在N0C中別處的任何其它 IP塊尋址。
[0041]N0C102包括兩個(gè)存儲(chǔ)器管理單元('MMU')120、122,這舉例說(shuō)明用于與本發(fā)明 的實(shí)施例一致的N0C的兩個(gè)備選存儲(chǔ)器架構(gòu)。在IP塊內(nèi)實(shí)施MMU120從而允許在IP塊內(nèi) 的處理器在虛擬存儲(chǔ)器中操作而允許N0C的整個(gè)其余架構(gòu)在物理存儲(chǔ)器地址空間中操作。 MMU122被片外實(shí)施、通過(guò)數(shù)據(jù)通信端口 124連接到N0C。端口 124包括管腳和為了進(jìn)行在 N0C與MMU之間的信號(hào)而需要的其它互連以及用于將消息分組從N0C分組格式轉(zhuǎn)換成外部 MMU1212所需總線(xiàn)格式的充分智能。MMU的外部位置意味著在N0C的所有IP塊中的所有 處理器可以在虛擬存儲(chǔ)器地址空間中操作而向片外存儲(chǔ)器的物理地址的所有轉(zhuǎn)換被片外 MMU122 處置。
[0042] 除了通過(guò)使用MMU120U22來(lái)舉例說(shuō)明的兩個(gè)存儲(chǔ)器架構(gòu)之外,數(shù)據(jù)通信端口 126 示出了在能夠在本發(fā)明的實(shí)施例中利用的N0C中有用的第三存儲(chǔ)器架構(gòu)。端口 126提供在 N0C102的IP塊104與片外存儲(chǔ)器112之間的直接連接。在處理路徑中無(wú)MMU時(shí),這一架構(gòu) 提供N0C的所有IP塊利用物理地址空間。在雙向共享地址空間時(shí),N0C的所有IP塊可以 通過(guò)包括加載和存儲(chǔ)的存儲(chǔ)器尋址的消息來(lái)訪(fǎng)問(wèn)地址空間中的存儲(chǔ)器,存儲(chǔ)器尋址的消息 是通過(guò)直接連接到端口 126的IP塊指引的。端口 126包括管腳和為了進(jìn)行在N0C與片外 存儲(chǔ)器112之間的信號(hào)而需要的其它互連以及用于將消息分組從N0C分組格式轉(zhuǎn)換成片外 存儲(chǔ)器112所需總線(xiàn)格式的充分智能。
[0043] 在圖2的示例中,指明IP塊之一為主機(jī)接口處理器128。主機(jī)接口處理器128提 供在N0C與其中可以安裝N0C的主機(jī)計(jì)算機(jī)10之間的接口并且也向在N0C上的其它IP塊 提供數(shù)據(jù)處理服務(wù)、例如包括接收和在N0C的IP塊之間派發(fā)來(lái)自主機(jī)計(jì)算機(jī)的數(shù)據(jù)處理請(qǐng) 求。N0C可以例如如以上參照?qǐng)D1描述的那樣在更大計(jì)算機(jī)10上實(shí)施視頻圖形適配器26 或者協(xié)同處理器28。在圖2的示例中,主機(jī)接口處理器128通過(guò)數(shù)據(jù)通信端口 130連接到 更大主機(jī)計(jì)算機(jī)。端口 130包括管腳和為了進(jìn)行在N0C與主機(jī)計(jì)算機(jī)之間的信號(hào)而需要的 其它互連以及用于將來(lái)自N0C的消息分組轉(zhuǎn)換成主機(jī)計(jì)算機(jī)10所需總線(xiàn)格式的充分智能。 在圖1的計(jì)算機(jī)中的N0C協(xié)同處理器的示例中,這樣的端口將提供在N0C協(xié)同處理器28的 鏈路結(jié)構(gòu)與在N0C協(xié)同處理器28與總線(xiàn)適配器18之間的前側(cè)總線(xiàn)36所需要的協(xié)議之間 的數(shù)據(jù)通信格式翻譯。
[0044] 圖3接著圖示功能框圖,該功能框圖更具體圖示在132共同圖示的在N0C102內(nèi)的 IP塊104、存儲(chǔ)器通信控制器106、網(wǎng)絡(luò)接口控制器108和路由器110內(nèi)實(shí)施的部件。IP塊 104包括計(jì)算機(jī)處理器134和I/O功能136。在本例中,計(jì)算機(jī)存儲(chǔ)器由在IP塊104中的 隨機(jī)存取存儲(chǔ)器('RAM')段138代表。存儲(chǔ)器如以上參照?qǐng)D2描述的那樣可以占用物理 地址空間的段,這些段在每個(gè)IP塊上的內(nèi)容從在N0C中的任何IP塊可尋址和可訪(fǎng)問(wèn)。在 每個(gè)IP塊中對(duì)處理器134、I/O能力136和存儲(chǔ)器138有效地實(shí)施IP塊為一般可編程微處 理器。然而如以上說(shuō)明的那樣,在本發(fā)明的范圍內(nèi),IP塊一般代表作為用于在N0C內(nèi)的數(shù) 據(jù)處理的構(gòu)建塊使用的同步或者異步邏輯的可重用單位。雖然出于說(shuō)明的目的而有用的一 個(gè)常見(jiàn)實(shí)施例中,實(shí)施IP塊為一般可編程微計(jì)算器,但是這并非本發(fā)明的限制。
[0045] 在圖3的N0C102中,每個(gè)存儲(chǔ)器通信控制器106包括多個(gè)存儲(chǔ)器通信執(zhí)行引擎 140。每個(gè)存儲(chǔ)器通信執(zhí)行引擎140被啟用為執(zhí)行來(lái)自IP塊104的存儲(chǔ)器通信指令、包括 在網(wǎng)絡(luò)與IP塊104之間的雙向存儲(chǔ)器通信指令流141、142、144。存儲(chǔ)器通信控制器執(zhí)行的 存儲(chǔ)器通信指令不僅可以始發(fā)于通過(guò)特定存儲(chǔ)器通信控制器被適配到路由器的IP塊,而 且可以始發(fā)于在N0C102中別處的任何IP塊104。也就是說(shuō),在N0C中的任何IP塊可以生 成存儲(chǔ)器通信指令并且通過(guò)N0C的路由器向與另一IP塊關(guān)聯(lián)的另一存儲(chǔ)器通信控制器傳 輸該該存儲(chǔ)器通信指令用于執(zhí)行該存儲(chǔ)器通信指令。這樣的存儲(chǔ)器通信指令可以例如包括 翻譯后備緩沖控制指令(translationlookasidebuffercontrolinstruction)、高速緩 存控制指令、屏障指令以及存儲(chǔ)器加載和存儲(chǔ)指令。
[0046] 每個(gè)存儲(chǔ)器通信執(zhí)行引擎140被啟用以與其它存儲(chǔ)器通信執(zhí)行引擎分離和并行 地執(zhí)行完整存儲(chǔ)器通信指令。存儲(chǔ)器通信執(zhí)行引擎實(shí)施被優(yōu)化用于存儲(chǔ)器通信指令并發(fā)吞 吐量的可縮放存儲(chǔ)器事務(wù)處理器。存儲(chǔ)器通信控制器106支持多個(gè)存儲(chǔ)器通信執(zhí)行引擎 140,所有這些存儲(chǔ)器通信執(zhí)行引擎并發(fā)運(yùn)行用于同時(shí)執(zhí)行多個(gè)存儲(chǔ)器通信指令。新存儲(chǔ)器 通信指令被存儲(chǔ)器通信控制器106分配給存儲(chǔ)器通信引擎140,并且存儲(chǔ)器通信執(zhí)行引擎 140可以同時(shí)接受多個(gè)響應(yīng)事件。在本例中,所有存儲(chǔ)器通信執(zhí)行引擎140相同。因此通過(guò) 縮放存儲(chǔ)器通信執(zhí)行引擎140的數(shù)目,來(lái)實(shí)施對(duì)于可以被存儲(chǔ)器通信控制器106同時(shí)處置 的存儲(chǔ)器通信指令數(shù)目的縮放。
[0047] 在圖3的N0C102中,每個(gè)網(wǎng)絡(luò)接口控制器108被啟用為將通信指令從命令格式轉(zhuǎn) 換成用于通過(guò)路由器110在IP塊104之間傳輸?shù)木W(wǎng)絡(luò)分組格式。通信指令可以在命令格 式中被IP塊104制定或者被存儲(chǔ)器通信控制器106制定并且在命令格式中提供給網(wǎng)絡(luò)接 口控制器108。命令格式可以是本機(jī)格式,該本機(jī)格式符合IP塊104和存儲(chǔ)器通信控制器 106的架構(gòu)寄存器文件。網(wǎng)絡(luò)分組格式通常是通過(guò)網(wǎng)絡(luò)的路由器110傳輸而需要的格式。 每個(gè)這樣的消息由一個(gè)或者多個(gè)網(wǎng)絡(luò)分組組成。在網(wǎng)絡(luò)接口控制器中從命令格式轉(zhuǎn)換成分 組格式的這樣的通信指令的示例包括在IP塊與存儲(chǔ)器之間的存儲(chǔ)器加載指令和存儲(chǔ)器存 儲(chǔ)指令。這樣的通信指令也可以包括如下通信指令,這些通信指令在IP塊之中發(fā)送攜帶數(shù) 據(jù)和指令的消息,這些指令用于在并行應(yīng)用中和在流水線(xiàn)化的應(yīng)用中在IP塊之中處理該 數(shù)據(jù)。
[0048]在圖的N0C102中,每個(gè)IP塊被啟用為通過(guò)IP塊的存儲(chǔ)器通信控制器向和從存儲(chǔ) 器發(fā)送基于存儲(chǔ)器地址的通信,然后也通過(guò)它的網(wǎng)絡(luò)接口控制器向網(wǎng)絡(luò)發(fā)送基于存儲(chǔ)器地 址的通信。基于存儲(chǔ)器地址的通信是IP塊的存儲(chǔ)器通信控制器的存儲(chǔ)器通信執(zhí)行引擎執(zhí) 行的存儲(chǔ)器訪(fǎng)問(wèn)指令、比如加載指令或者存儲(chǔ)指令。這樣的基于存儲(chǔ)器地址的通信通常始 發(fā)于IP塊、在命令格式中被制定并且被交接到存儲(chǔ)器通信控制器以用于執(zhí)行。
[0049]用消息流量執(zhí)行許多基于存儲(chǔ)器地址的通信,因?yàn)槿魏未L(fǎng)問(wèn)的存儲(chǔ)器可以位于 物理存儲(chǔ)器地址空間中別處、片上或者片外、直接附著到在N0C中的任何存儲(chǔ)器通信控制 器或者最終通過(guò)N0C的任何塊來(lái)訪(fǎng)問(wèn)--無(wú)論任何特定的基于存儲(chǔ)器地址的通信始發(fā)于哪 個(gè)IP塊。因此,在N0C102中,用消息流量執(zhí)行的所有基于存儲(chǔ)器地址的通信從存儲(chǔ)器通信 控制器向關(guān)聯(lián)網(wǎng)絡(luò)接口控制器傳遞,以用于從命令格式轉(zhuǎn)換成分組格式并且在消息中通過(guò) 網(wǎng)絡(luò)傳輸。在轉(zhuǎn)換成分組格式時(shí),網(wǎng)絡(luò)接口控制器也根據(jù)基于存儲(chǔ)器地址的通信將訪(fǎng)問(wèn)的 一個(gè)或者多個(gè)存儲(chǔ)器地址標(biāo)識(shí)用于分組的網(wǎng)絡(luò)地址。用存儲(chǔ)器地址對(duì)基于存儲(chǔ)器地址的消 息尋址。每個(gè)存儲(chǔ)器地址被網(wǎng)絡(luò)接口控制器映射到網(wǎng)絡(luò)地址、通常為負(fù)責(zé)某個(gè)物理存儲(chǔ)器 地址范圍的存儲(chǔ)器通信控制器的網(wǎng)絡(luò)位置。存儲(chǔ)器通信控制器106的網(wǎng)絡(luò)位置自然地也是 該存儲(chǔ)器通信控制器的關(guān)聯(lián)路由器110、網(wǎng)絡(luò)接口控制器108和IP塊104的網(wǎng)絡(luò)位置。在 每個(gè)網(wǎng)絡(luò)接口控制器內(nèi)的指令轉(zhuǎn)換邏輯150能夠?qū)⒋鎯?chǔ)器地址轉(zhuǎn)換成網(wǎng)絡(luò)地址,以用于通 過(guò)N0C的路由器傳輸基于存儲(chǔ)器地址的通信。
[0050] 在從網(wǎng)絡(luò)的路由器110接收消息流量時(shí),每個(gè)網(wǎng)絡(luò)接口控制器108針對(duì)存儲(chǔ)器指 令檢查每個(gè)分組。包含存儲(chǔ)器指令的每個(gè)分組被交給與接收網(wǎng)絡(luò)接口控制器關(guān)聯(lián)的存儲(chǔ)器 通信控制器106,該存儲(chǔ)器通信控制器在向IP塊發(fā)送分組的其余凈荷用于進(jìn)一步處理之前 執(zhí)行存儲(chǔ)器指令。以這一方式,存儲(chǔ)器內(nèi)容總是在IP塊開(kāi)始執(zhí)行依賴(lài)于特定存儲(chǔ)器內(nèi)容的 來(lái)自消息的指令之前被預(yù)備為支持IP塊的數(shù)據(jù)處理。
[0051] 在圖3的N0C102中,每個(gè)IP塊104被啟用為繞過(guò)它的存儲(chǔ)器通信控制器106并 且通過(guò)IP塊的網(wǎng)絡(luò)接口控制器108向網(wǎng)絡(luò)直接發(fā)送IP塊間、網(wǎng)絡(luò)尋址的通信146。網(wǎng)絡(luò) 尋址的通信是被網(wǎng)絡(luò)地址引向另一IP塊的消息。如本領(lǐng)域技術(shù)人員將想到的那樣,這樣的 消息在流水線(xiàn)化的應(yīng)用中傳輸工作數(shù)據(jù)、在SIMD應(yīng)用中在IP塊之中傳輸用于單個(gè)程序處 理的多個(gè)數(shù)據(jù)、以此類(lèi)推。這樣的消息與基于存儲(chǔ)器地址的通信不同在于它們從開(kāi)始就是 被始發(fā)IP塊進(jìn)行網(wǎng)絡(luò)尋址的,該始發(fā)IP塊知道消息將通過(guò)N0C的路由器被引向的網(wǎng)絡(luò)地 址。這樣的網(wǎng)絡(luò)尋址的通信在命令格式中被IP塊通過(guò)I/O功能136直接傳遞到IP塊的 網(wǎng)絡(luò)接口控制器、然后被網(wǎng)絡(luò)接口控制器轉(zhuǎn)換成分組格式并且通過(guò)N0C的路由器傳輸?shù)搅?一IP塊。這樣的網(wǎng)絡(luò)尋址的通信146是雙向的,從而根據(jù)它們?cè)谌魏翁囟☉?yīng)用中的使用潛 在地向以及從N0C的每個(gè)IP塊繼續(xù)。然而每個(gè)網(wǎng)絡(luò)接口控制器被啟用為既向關(guān)聯(lián)路由器 發(fā)送又從關(guān)聯(lián)路由器接收這樣的通信,并且每個(gè)網(wǎng)絡(luò)接口控制器被啟用為直接既向關(guān)聯(lián)IP塊發(fā)送又向關(guān)聯(lián)IP塊接收這樣的通信從而繞過(guò)關(guān)聯(lián)存儲(chǔ)器通信控制器106。
[0052] 在圖3的示例中的每個(gè)網(wǎng)絡(luò)接口控制器108也被啟用為在網(wǎng)絡(luò)上實(shí)施虛擬信道從 而按照類(lèi)型表征網(wǎng)絡(luò)分組。每個(gè)網(wǎng)絡(luò)接口控制器108包括虛擬信道實(shí)施邏輯148,該虛擬 信道實(shí)施邏輯按照類(lèi)型對(duì)每個(gè)通信指令分類(lèi),并且在以分組形式向路由器110轉(zhuǎn)交指令以 用于在N0C上傳輸之前,在網(wǎng)絡(luò)分組格式的字段中記錄指令的類(lèi)型。通信指令類(lèi)型的示例 包括IP塊間、基于網(wǎng)絡(luò)地址的消息、請(qǐng)求消息、對(duì)請(qǐng)求消息的響應(yīng)、引向高速緩存的無(wú)效消 息;存儲(chǔ)器加載和存儲(chǔ)消息;以及對(duì)存儲(chǔ)器加載消息的響應(yīng)等。
[0053] 在圖3的示例中的每個(gè)路由器110包括路由邏輯152、虛擬信道控制邏輯154和虛 擬信道緩沖器156。通常實(shí)施路由邏輯為同步和異步邏輯的網(wǎng)絡(luò),該同步和異步邏輯網(wǎng)絡(luò) 實(shí)施用于在路由器110、鏈路118和在路由器之中的總線(xiàn)接線(xiàn)形成的網(wǎng)絡(luò)中的數(shù)據(jù)通信的 數(shù)據(jù)通信協(xié)議棧。路由邏輯152包括本領(lǐng)域技術(shù)人員可以在片外網(wǎng)絡(luò)中與路由表關(guān)聯(lián)的功 能,路由表在至少一些實(shí)施例中視為對(duì)于在N0C中使用而言太緩慢和繁瑣。實(shí)施為同步和 異步邏輯網(wǎng)絡(luò)的路由邏輯可以被配置為使路由判決如單個(gè)時(shí)鐘周期一樣快。在本例中的路 由邏輯通過(guò)選擇用于轉(zhuǎn)發(fā)在路由器中接收的每個(gè)分組來(lái)路由分組。每個(gè)分組包含分組將被 路由到的網(wǎng)絡(luò)地址。
[0054] 在以上描述基于存儲(chǔ)器地址的通信時(shí),每個(gè)存儲(chǔ)器地址被描述為被網(wǎng)絡(luò)控制器映 射到網(wǎng)絡(luò)地址、存儲(chǔ)器通信控制器的網(wǎng)絡(luò)位置。存儲(chǔ)器通信控制器106的網(wǎng)絡(luò)位置自然地 也是該存儲(chǔ)器通信控制器的關(guān)聯(lián)路由器110、網(wǎng)絡(luò)接口控制器108和IP塊104的網(wǎng)絡(luò)位置。 因此在IP塊間或者基于網(wǎng)絡(luò)地址的通信中,應(yīng)用級(jí)數(shù)據(jù)處理通常也將網(wǎng)絡(luò)地址視為IP塊 在N0C的路由器、鏈路和總線(xiàn)接線(xiàn)形成的網(wǎng)絡(luò)內(nèi)的位置。圖2圖示這樣的網(wǎng)絡(luò)的一個(gè)阻止 是行和列的網(wǎng)格,其中每個(gè)網(wǎng)絡(luò)地址可以例如被實(shí)施為用于網(wǎng)格的關(guān)聯(lián)路由器、IP塊、存儲(chǔ) 器通信控制器和網(wǎng)絡(luò)接口控制器的每個(gè)集合的唯一標(biāo)識(shí)符或者每個(gè)這樣的集合在網(wǎng)格中 的x、y坐標(biāo)。
[0055] 在圖3的N0C102中,每個(gè)路由器110實(shí)施兩個(gè)或者更多虛擬通信信道,其中每個(gè) 虛擬通信信道按照通信類(lèi)型來(lái)表征。通信指令類(lèi)型、因此虛擬信道類(lèi)型包括以上提到的那 些類(lèi)型:IP塊間、基于網(wǎng)絡(luò)地址的消息、請(qǐng)求消息、對(duì)請(qǐng)求消息的響應(yīng)、引向高速緩存的無(wú) 效消息;存儲(chǔ)器加載和存儲(chǔ)消息;對(duì)存儲(chǔ)器加載消息的響應(yīng)等。在支持虛擬信道時(shí),在圖3 的示例中的每個(gè)路由器110也包括虛擬信道控制邏輯154和虛擬信道緩沖器156。虛擬信 道控制邏輯154針對(duì)它的指派的通信類(lèi)型檢查每個(gè)接收的分組,并且將每個(gè)分組放置于用 于該通信類(lèi)型的外傳虛擬信道緩沖器中用于通過(guò)端口向在N0C上的鄰近路由器傳輸。
[0056] 每個(gè)虛擬信道緩沖器156具有有限存儲(chǔ)空間。在短時(shí)間段內(nèi)接收許多分組時(shí),虛 擬信道緩沖器可能填滿(mǎn)--從而不能在緩沖器中放入更多分組。在其它協(xié)議中,將丟棄在 緩沖器充滿(mǎn)的虛擬信道上到達(dá)的分組。然而在本例軸桿的每個(gè)虛擬信道緩沖器156用總線(xiàn) 接線(xiàn)的控制信號(hào)被啟用為通過(guò)虛擬信道控制邏輯建議周?chē)酚善髦兄乖谔摂M信道中的傳 輸、也就是中止傳輸特定通信類(lèi)型的分組。在這樣中止一個(gè)虛擬信道時(shí),所有其它虛擬信道 未受影響--并且可以繼續(xù)以完全容量進(jìn)行操作??刂破餍盘?hào)通過(guò)每個(gè)路由器一直被接線(xiàn) 回到每個(gè)路由器的關(guān)聯(lián)網(wǎng)絡(luò)接口控制器108。每個(gè)網(wǎng)絡(luò)接口控制器被配置為在接收這樣的 信號(hào)時(shí)拒絕從她的關(guān)聯(lián)存儲(chǔ)器通信控制器106或者從它的關(guān)聯(lián)IP塊104接受用于中止的 虛擬信道的通信指令。以這一方式,虛擬信道的中止影響實(shí)施虛擬信道的所有硬件一直回 到始發(fā)IP塊。
[0057] 中止在虛擬信道中的分組傳輸?shù)囊粋€(gè)效果是從未丟棄分組。在路由器遇到其中可 能在某個(gè)不可靠協(xié)議、如比如網(wǎng)際協(xié)議中丟棄分組的情形時(shí),在圖3的示例中的路由器可 以通過(guò)它們的虛擬信道緩沖器156和它們的虛擬信道控制邏輯154中止分組在虛擬信道中 的所有傳輸直至緩沖器空間再次可用從而消除對(duì)丟棄分組的任何需要。圖3的N0C因此可 以用極為精簡(jiǎn)的硬件層實(shí)施高度地可靠的網(wǎng)絡(luò)通信協(xié)議。
[0058] 圖3的示例N0C也可以被配置為維護(hù)在片上與片外存儲(chǔ)器高速緩存之間的高速緩 存相干性(coherency)。每個(gè)N0C可以支持各自按照相同下層存儲(chǔ)器地址空間操作的多個(gè) 高速緩存。例如高速緩存可以被IP塊、存儲(chǔ)器通信控制器或者在N0C外部的高速緩存控制 器控制。在圖2的示例中的片上存儲(chǔ)器114、116中的任一片上存儲(chǔ)器也可以被實(shí)施為片上 高速緩存,并且在本發(fā)明的范圍內(nèi),也可以片外實(shí)施高速緩存存儲(chǔ)器。
[0059] 圖3中所示每個(gè)路由器110包括五個(gè)端口、即通過(guò)總線(xiàn)接線(xiàn)118連接到其它路由 器的四個(gè)端口 158A-D以及通過(guò)網(wǎng)絡(luò)接口控制器108和存儲(chǔ)器通信控制器106將每個(gè)路由 器連接到它的關(guān)聯(lián)IP塊104的第五端口 160。如從圖2和3中的示例可見(jiàn),N0C102的路 由器110和鏈路118形成具有垂直和水平鏈路的網(wǎng)格網(wǎng)絡(luò),這些鏈路連接每個(gè)路由器中的 垂直和水平端口。例如在圖3的示例中,端口 158AU58C和160稱(chēng)為垂直端口,并且端口 158B和158D稱(chēng)為水平端口。
[0060] 圖4接著用另一方式圖示實(shí)施為處理單元的與本發(fā)明一致的IP塊104的一個(gè)示 例實(shí)現(xiàn)方式,該處理單元被分割成發(fā)布或者指令單元(IU) 162、執(zhí)行單元(XU) 164和輔助執(zhí) 行單元(AXU) 166。在所示實(shí)現(xiàn)方式中,IU162包括從L1指令高速緩存(iCACHE) 170接收指 令的多個(gè)指令緩沖器168。每個(gè)指令緩沖器168專(zhuān)用于多個(gè)、例如四個(gè)對(duì)稱(chēng)多線(xiàn)程(SMT)化 的硬件線(xiàn)程之一。有效到實(shí)際翻譯單元(iERAT)172耦合到iCACHE170,并且用來(lái)將來(lái)自多 個(gè)線(xiàn)程取讀定序器174的指令取讀請(qǐng)求翻譯成用于從更低級(jí)存儲(chǔ)器取讀指令的實(shí)際地址。 每個(gè)線(xiàn)程取讀定序器174專(zhuān)用于特定硬件線(xiàn)程并且用來(lái)保證將被關(guān)聯(lián)線(xiàn)程執(zhí)行的指令被 取讀到iCACHE中用于向適當(dāng)執(zhí)行單元派發(fā)。也如圖4中所示,被取讀到指令緩沖器168中 的指令也可以被分支(branch)預(yù)測(cè)邏輯176監(jiān)視,該分支預(yù)測(cè)邏輯向每個(gè)線(xiàn)程取讀定序器 174提供提示以最小化在執(zhí)行線(xiàn)程時(shí)的分支所產(chǎn)生的指令高速緩存未命中。
[0061]IU162也包括依賴(lài)性/發(fā)布邏輯塊178,該依賴(lài)性/發(fā)布邏輯塊專(zhuān)用于每個(gè)硬件線(xiàn) 程,并且被配置為解析依賴(lài)性并且控制從指令緩沖器168向XU164發(fā)布指令。此外,在所示 實(shí)施例中,在AXU166中提供分離依賴(lài)性/發(fā)布邏輯180,因此使分離指令能夠被不同線(xiàn)程并 發(fā)發(fā)布到XU164和AXU166。在一個(gè)可選實(shí)施例中,邏輯180可以被設(shè)置于IU162中或者可 以被完全省略,從而邏輯178向AXU166發(fā)布指令。
[0062] 實(shí)施XU164為定點(diǎn)執(zhí)行單元,該定點(diǎn)執(zhí)行單元包括耦合到定點(diǎn)邏輯184、分支邏輯 186和加載/存儲(chǔ)邏輯188的通用寄存器(GPR) 182的集合。加載/存儲(chǔ)邏輯188耦合到 L1數(shù)據(jù)高速緩存(dCACHE) 190,而作用于dERAT邏輯192提供的實(shí)際翻譯。XU164可以被配 置為實(shí)施實(shí)際上任何指令集、例如32b或者64bPowerPC指令集的全部或者部分。
[0063]AXU166作為與一個(gè)或者多個(gè)執(zhí)行塊194 一起包括專(zhuān)用依賴(lài)性/發(fā)布邏輯180的 輔助執(zhí)行單元操作。AXU166可以包括任何數(shù)目的執(zhí)行塊并且可以實(shí)施實(shí)際上任何類(lèi)型的 執(zhí)行單元、例如浮點(diǎn)單元或者一個(gè)或者多個(gè)專(zhuān)用的執(zhí)行單元,比如加密/解密單元、協(xié)同處 理器、矢量處理單元、圖形處理單元、XML處理單元等。在所示實(shí)施例中,AXU166包括對(duì)于 XU164的高速輔助接口,以例如支持在AXU架構(gòu)化的狀態(tài)與XU架構(gòu)化的狀態(tài)之間的直接移 動(dòng)。
[0064]可以經(jīng)由耦合到N0C102的網(wǎng)絡(luò)接口控制器108用以上與圖2結(jié)合討論的方式管 理與IP塊104的通信。可以與基于消息的通信一起提供例如用于訪(fǎng)問(wèn)L2高速緩存存儲(chǔ)器 的基于地址的通信。例如每個(gè)IP塊104可以包括專(zhuān)用輸入框和/或輸出框以便處置在IP 塊之間的節(jié)點(diǎn)間通信。
[0065]可以在以上與圖1-4結(jié)合描述的硬件和軟件環(huán)境內(nèi)實(shí)施本發(fā)明的實(shí)施例。然而受 益于本公開(kāi)內(nèi)容的本領(lǐng)域普通技術(shù)人員將理解可以在多個(gè)不同環(huán)境中實(shí)施本發(fā)明并且可 以對(duì)前述硬件和軟件實(shí)施例進(jìn)行其它修改而未脫離本發(fā)明的精神實(shí)質(zhì)和范圍。這樣,本發(fā) 明不限于這里公開(kāi)的特定硬件和軟件環(huán)境。
[0066]擴(kuò)展寄存器尋址
[0067]處理器指令具有由組成指令的數(shù)據(jù)中的唯一位模式代表的用于每個(gè)操作類(lèi)型的 操作碼。由于現(xiàn)代處理器芯中的寄存器數(shù)目不斷擴(kuò)展,在指令編碼中存在的地址寬度繼續(xù) 變寬從而占用寶貴指令編碼空間用于添加新指令解碼。此外,通常希望所有指令在微處理 器架構(gòu)中具有相同固定寬度。引入可變寬度的指令經(jīng)常引起將對(duì)性能有負(fù)面影響的大量設(shè) 計(jì)復(fù)雜性。
[0068]例如如果希望向指令集架構(gòu)、比如現(xiàn)有POWER(增強(qiáng)RISC性能優(yōu)化)指令集架構(gòu) 添加新指令類(lèi)以支持128個(gè)寄存器,則在新指令中的每個(gè)地址寬度將等于7。此外,如果新 指令中的一些新指令需要對(duì)三個(gè)源寄存器(VA,VB,VC)和一個(gè)目標(biāo)寄存器(VT)尋址,則將 需要28位、即用于源操作數(shù)地址的21位和用于目標(biāo)操作數(shù)地址的7位。這樣,將僅存在可 用于任何主操作碼和/或輔操作碼的共計(jì)四位。相似地,例如如果操作數(shù)地址寬度等于5 位,每位用于共計(jì)20位,使得12位可以用于主操作碼和輔操作碼,則僅32 (即25)個(gè)寄存 器將是可尋址的。
[0069]例如可能希望新指令類(lèi)包括執(zhí)行加法、減法、乘法、融合的乘法-加法運(yùn)算、除法、 求冪、三角運(yùn)算、比較運(yùn)算和其它運(yùn)算的浮點(diǎn)指令類(lèi)型。一種用于解決這一情形的常規(guī)方式 將是使三源運(yùn)算有破壞性,這意味著目標(biāo)和一個(gè)源地址將隱含地相等,從而將無(wú)需上例中 的一個(gè)地址字段從而釋放空間用于附加擴(kuò)展操作碼。然而這些經(jīng)常讓編譯員和軟件工程師 感覺(jué)不便,因?yàn)榻?jīng)常需要在暫時(shí)寄存器中分開(kāi)保存將被有破壞性的運(yùn)算改寫(xiě)的源數(shù)據(jù)的額 外副本,這除了使用寶貴暫時(shí)寄存器空間之外還可能具有潛在性能問(wèn)題。
[0070] 指令集架構(gòu)為何力求大量寄存器的一個(gè)主要原因是使得循環(huán)可以被"展開(kāi)",以最 小化分支誤預(yù)測(cè)性能懲罰并且也可以在某些情況下用來(lái)最小化依賴(lài)指令的性能影響。需要 大量寄存器以完成數(shù)據(jù)的"溢出和填充"而不在循環(huán)中重用相同寄存器。考慮以下示例等 式(1),其中用許多迭代為sin(x)計(jì)算長(zhǎng)泰勒級(jí)數(shù)近似:
[0071]
【權(quán)利要求】
1. 一種用于執(zhí)行指令的方法,包括: 響應(yīng)于對(duì)引用操作數(shù)地址的指令解碼,確定所述操作數(shù)地址是否引用在主寄存器文件 中的寄存器子集之中的寄存器; 響應(yīng)于確定所述操作數(shù)地址引用了在所述主寄存器文件中的所述寄存器子集之中的 寄存器,使用在對(duì)擴(kuò)展寄存器文件的擴(kuò)展寄存器進(jìn)行引用的所述引用的寄存器中存儲(chǔ)的指 針來(lái)從所述擴(kuò)展寄存器有選擇地獲取數(shù)據(jù);以及 使用所述有選擇地獲取的數(shù)據(jù)來(lái)執(zhí)行所述指令。
2. 根據(jù)權(quán)利要求1所述的方法,其中確定所述操作數(shù)地址引用在主寄存器文件中的寄 存器子集之中的寄存器包括: 確定所述操作數(shù)地址是否在定義的地址范圍內(nèi)。
3. 根據(jù)權(quán)利要求2所述的方法,其中最小地址寄存器存儲(chǔ)指示所述定義的地址范圍的 最小地址的值,并且最大地址寄存器存儲(chǔ)指示所述定義的地址范圍的最大地址的值。
4. 根據(jù)權(quán)利要求1所述的方法,其中使用在所述引用的寄存器中存儲(chǔ)的所述指針來(lái)從 所述擴(kuò)展寄存器文件的所述擴(kuò)展寄存器有選擇地獲取數(shù)據(jù)包括: 從所述引用的寄存器取回第一數(shù)據(jù)值;以及 基于所述第一數(shù)據(jù)值從所述擴(kuò)展寄存器取回第二數(shù)據(jù)值;以及 向執(zhí)行邏輯傳達(dá)所述第二數(shù)據(jù)值作為源數(shù)據(jù)。
5. 根據(jù)權(quán)利要求1所述的方法,還包括: 響應(yīng)于確定所述操作數(shù)地址引用未在所述主寄存器文件中的所述寄存器子集之中的 寄存器,從所述引用的寄存器有選擇地獲取數(shù)據(jù)。
6. 根據(jù)權(quán)利要求1所述的方法,還包括: 在所述操作數(shù)地址對(duì)應(yīng)于目標(biāo)操作數(shù)地址并且所述引用的寄存器在所述主寄存器文 件中的所述寄存器子集之中時(shí),使用在對(duì)所述擴(kuò)展寄存器文件的目標(biāo)擴(kuò)展寄存器進(jìn)行引 用的所述引用的寄存器中存儲(chǔ)的所述指針來(lái)向所述目標(biāo)擴(kuò)展寄存器有選擇地寫(xiě)入數(shù)據(jù)。
7. 根據(jù)權(quán)利要求1所述的方法,其中所述指令包括n位的操作數(shù)地址,并且所述主寄存 器文件包括2n個(gè)寄存器。
8. 根據(jù)權(quán)利要求7所述的方法,其中每個(gè)主寄存器存儲(chǔ)m位數(shù)據(jù),并且所述擴(kuò)展寄存器 文件包括2m個(gè)擴(kuò)展寄存器。
9. 根據(jù)權(quán)利要求1所述的方法,其中所述指令是32位指令并且包括三個(gè)5位源操作數(shù) 地址和一個(gè)5位目標(biāo)操作數(shù)地址,其中所述主寄存器文件包括各自為10位的32個(gè)寄存器, 并且所述擴(kuò)展寄存器文件包括1024個(gè)擴(kuò)展寄存器。
10. 根據(jù)權(quán)利要求1所述的方法,其中確定所述操作數(shù)地址是否引用在主寄存器文件 中的寄存器子集之中的寄存器包括: 訪(fǎng)問(wèn)在寄存器中存儲(chǔ)的位圖,所述位圖指示所述主寄存器文件的每個(gè)寄存器是否為所 述子集的寄存器。
11. 根據(jù)權(quán)利要求1所述的方法,其中確定所述操作數(shù)地址是否引用在所述主寄存器 文件中的所述寄存器子集之中的寄存器包括: 分析所述指令的操作碼以確定所述指令是否為特定類(lèi)型,其中確定所述操作數(shù)地址是 否引用在所述主寄存器文件中的所述寄存器子集之中的寄存器是基于所述指令是否為所 述特定類(lèi)型。
12. -種電路布置,包括: 執(zhí)行邏輯,被配置為執(zhí)行指令; 擴(kuò)展寄存器文件,包括多個(gè)擴(kuò)展寄存器; 主寄存器文件,包括多個(gè)寄存器,其中所述多個(gè)寄存器包括第一子集和第二子集;以及 控制邏輯,被配置為: 響應(yīng)于引用在所述第一子集中的第一寄存器的第一指令,使所述執(zhí)行邏輯在執(zhí)行所述 第一指令時(shí),使用在由存儲(chǔ)在所述第一寄存器中的指針?biāo)玫臄U(kuò)展寄存器中存儲(chǔ)的數(shù)據(jù) 作為源數(shù)據(jù)。
13. 根據(jù)權(quán)利要求12所述的電路布置,其中所述控制邏輯還被配置為: 響應(yīng)于引用在所述第二子集中的第二寄存器的第二指令,使所述執(zhí)行邏輯在執(zhí)行所述 第二指令時(shí)使用在所述第二子集中存儲(chǔ)的數(shù)據(jù)作為源數(shù)據(jù)。
14. 根據(jù)權(quán)利要求12所述的電路布置,其中所述控制邏輯還被配置為: 至少部分基于引用所述第一寄存器的所述指令的操作數(shù)地址是否在預(yù)定義的地址范 圍內(nèi)來(lái)確定所述第一寄存器是否在所述第一子集中。
15. 根據(jù)權(quán)利要求14所述的電路布置,還包括: 最小地址寄存器,被配置為存儲(chǔ)指示所述定義的地址范圍的最小地址的值;以及 最大地址寄存器,被配置為存儲(chǔ)指示所述定義的地址范圍的最大地址的值。
16. 根據(jù)權(quán)利要求12所述的電路布置,其中所述控制邏輯還被配置為: 從所述第一寄存器取回第一數(shù)據(jù)值; 基于所述第一數(shù)據(jù)值從所述擴(kuò)展寄存器取回第二數(shù)據(jù)值;以及 向所述執(zhí)行邏輯傳達(dá)所述第二數(shù)據(jù)值作為源數(shù)據(jù)。
17. 根據(jù)權(quán)利要求12所述的電路布置,其中所述控制邏輯被配置為: 響應(yīng)于引用所述第一子集中的第三寄存器作為目標(biāo)操作數(shù)地址的第三指令,使所述執(zhí) 行邏輯將執(zhí)行所述第三指令所生成的數(shù)據(jù)寫(xiě)入到由所述第三寄存器中存儲(chǔ)的指針?biāo)?的目標(biāo)擴(kuò)展寄存器中。
18. 根據(jù)權(quán)利要求12所述的電路布置,其中所述第一指令包括n位的操作數(shù)地址,并且 所述主寄存器文件包括2n個(gè)寄存器。
19. 根據(jù)權(quán)利要求18所述的電路布置,其中所述主寄存器文件的每個(gè)寄存器存儲(chǔ)m位 的數(shù)據(jù),并且所述擴(kuò)展寄存器文件包括2m個(gè)擴(kuò)展寄存器。
20. 根據(jù)權(quán)利要求12所述的電路布置,其中所述第一指令是32位指令并且包括三個(gè)5 位源操作數(shù)地址和一個(gè)5位目標(biāo)操作數(shù)地址,其中所述主寄存器文件包括各自為10位的32 個(gè)寄存器,并且所述擴(kuò)展寄存器文件包括1024個(gè)擴(kuò)展寄存器。
21. 根據(jù)權(quán)利要求12所述的電路布置,還包括: 寄存器,被配置為存儲(chǔ)指示所述主寄存器文件的每個(gè)寄存器是否屬于第一子集的位 圖, 其中所述控制邏輯還被配置為至少部分基于所述位圖確定所述第一寄存器是否屬于 所述第一子集。
22. 根據(jù)權(quán)利要求12所述的電路布置,其中所述控制邏輯還被配置為通過(guò)至少部分基 于所述指令的操作碼確定所述指令是否為特定類(lèi)型,來(lái)確定所述第一寄存器是否屬于所述 第一子集,并且其中確定所述第一寄存器是否屬于所述第一子集至少部分基于所述指令是 否為所述特定類(lèi)型。
23. -種程序產(chǎn)品,包括計(jì)算機(jī)可讀介質(zhì)和在所述計(jì)算機(jī)可讀介質(zhì)上存儲(chǔ)的邏輯定義 程序代碼,并且所述邏輯定義程序代碼在執(zhí)行第二指令時(shí)定義根據(jù)權(quán)利要求12所述的電 路布置的第二子集作為源數(shù)據(jù)。
【文檔編號(hào)】G06F9/30GK104331267SQ201410347829
【公開(kāi)日】2015年2月4日 申請(qǐng)日期:2014年7月21日 優(yōu)先權(quán)日:2013年7月22日
【發(fā)明者】A·J·穆夫, P·E·沙德特, R·A·希勒, M·R·塔布斯 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司