CN114356417B 實行16位浮點矩陣點積指令的系統(tǒng)和方法 (英特爾公司)_第1頁
CN114356417B 實行16位浮點矩陣點積指令的系統(tǒng)和方法 (英特爾公司)_第2頁
CN114356417B 實行16位浮點矩陣點積指令的系統(tǒng)和方法 (英特爾公司)_第3頁
CN114356417B 實行16位浮點矩陣點積指令的系統(tǒng)和方法 (英特爾公司)_第4頁
CN114356417B 實行16位浮點矩陣點積指令的系統(tǒng)和方法 (英特爾公司)_第5頁
已閱讀5頁,還剩143頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

(19)國家知識產(chǎn)權(quán)局(12)發(fā)明專利地址美國加利福尼亞州R.薩德M.阿德爾曼Z.斯珀伯司31100artificialintelligencedatatyhigher-precisioncomputations.226thsymposiumonc(ARITH).2019,第69-76頁.本申請公開了實行16位浮點矩陣點積指令過將指定的第一源矩陣的雙字元素(M,K)的每個1國1國m中AX2解碼電路,用于對所述指令解碼,所述指令具有操作碼、第一字段、第二字段和第三字段,所述第一字段用于指定與具有M行乘N列的32位單精度浮點數(shù)據(jù)元素的第一矩陣對應(yīng)的多個數(shù)據(jù)元素的第一存儲位置,所述第二字段用于指定與具有M行乘K列的、具有bfloat16格式的16位浮點數(shù)據(jù)元素的第二矩陣對應(yīng)的多個數(shù)據(jù)元素的第二存儲位置,所述第三字段用于指定與具有K行乘N列的、具有bfloat16格式的16位浮點數(shù)據(jù)元素的第三矩陣對應(yīng)的多個數(shù)據(jù)元素的第三存儲位置;以及執(zhí)行電路,與所述解碼電路耦合,所述執(zhí)行電路用于針對所述第二矩陣的M行中的每個行m且針對所述第三矩陣的N列中的每個列n執(zhí)行與所述指令對應(yīng)的操作,以:從與所述第二矩陣的行m對應(yīng)的K個16位浮點數(shù)據(jù)元素和與所述第三矩陣的列n對應(yīng)的K個16位浮點數(shù)據(jù)元素生成點積;將所述點積與對應(yīng)于所述第一矩陣的M行中的行m且對應(yīng)于N列中的列n的32位單精度浮點數(shù)據(jù)元素累加,以生成結(jié)果32位單精度浮點數(shù)據(jù)元素;以及將所述結(jié)果32位單精度浮點數(shù)據(jù)元素存儲在所述第一存儲位置的、與所述第一矩陣的其中,所述執(zhí)行電路用于執(zhí)行與所述指令對應(yīng)的操作,以將所述第二矩陣和所述第三矩陣的非正常值處理為零。2.如權(quán)利要求1所述的處理單元,進一步包括用于指定舍入模式的控制寄存器,其中,生成所述點積和累加所述點積各自都包括:無論由所述控制寄存器指定的所述舍入模式如3.如權(quán)利要求2所述的處理單元,其中,所述處理單元由于所述指令將不咨詢所述控制4.如權(quán)利要求1至3中的任一項所述的處理單元,其中,所述處理單元由于所述指令將不更新控制寄存器。5.如權(quán)利要求1至3中的任一項所述的處理單元,其中,所述處理單元由于所述指令將不表示例外。6.如權(quán)利要求1至3中的任一項所述的處理單元,其中,所述執(zhí)行電路用于執(zhí)行與所述指令對應(yīng)的操作,以將非正常值轉(zhuǎn)儲清除為零。7.如權(quán)利要求1至3中的任一項所述的處理單元,其中,所述第二矩陣的M行和所述第三矩陣的N列在數(shù)量上相等。8.如權(quán)利要求1至3中的任一項所述的處理單元,其中,所述第一存儲位置、所述第二存儲位置和所述第三存儲位置在128位向量寄存器中。9.如權(quán)利要求1至3中的任一項所述的處理單元,其中,每個點積都是32位單精度浮點點積。10.如權(quán)利要求1至3中的任一項所述的處理單元,進一步包括:分支預(yù)測電路;調(diào)度器電路,用于調(diào)度經(jīng)解碼的指令以供執(zhí)行。311.如權(quán)利要求1至3中的任一項所述的處理單元,其中,所述處理單元是通用中央處理單元核。12.如權(quán)利要求1至3中的任一項所述的處理單元,其中,所述處理單元是精簡指令集計13.如權(quán)利要求2所述的處理單元,其中,所述單個舍入模式針對所述指令是固定的。通用中央處理單元核,與所述存儲器控制器耦合,所述通用中央處理單元核是如權(quán)利要求1至13中的任一項所述的處理單元。15.如權(quán)利要求14所述的片上系統(tǒng),進一步包括以下一個或多個:與所述通用中央處理單元核耦合的網(wǎng)絡(luò)處理器、與所述通用中央處理單元核耦合的協(xié)處理器、以及與所述通用中央處理單元核耦合的圖像處理器。通用中央處理單元核,與所述存儲器耦合,所述通用中央處理單元核是如權(quán)利要求1至13中的任一項所述的處理單元。17.如權(quán)利要求16所述的系統(tǒng),進一步包括以下一個或多個:耦合至所述通用中央處理單元核的大容量存儲設(shè)備、耦合至所述通用中央處理單元核的外圍部件互連PCI快速總線、耦合至所述通用中央處理單元核的通信設(shè)備。18.一種用于在處理單元中處理數(shù)據(jù)的方法,包括:獲取指令;對所述指令解碼,所述指令具有操作碼、第一字段、第二字段和第三字段,所述第一字段指定與具有M行乘N列的32位單精度浮點數(shù)據(jù)元素的第一矩陣對應(yīng)的多個數(shù)據(jù)元素的第一存儲位置,所述第二字段指定與具有M行乘K列的、具有bfloat16格式的16位浮點數(shù)據(jù)元素的第二矩陣對應(yīng)的多個數(shù)據(jù)元素的第二存儲位置,所述第三字段指定與具有K行乘N列的、具有bfloat16格式的16位浮點數(shù)據(jù)元素的第三矩陣對應(yīng)的多個數(shù)據(jù)元素的第三存儲位針對所述第二矩陣的M行中的每個行m且針對所述第三矩陣中的N列中的每個列n,執(zhí)行與所述指令對應(yīng)的操作:從與所述第二矩陣的行m對應(yīng)的K個16位浮點數(shù)據(jù)元素和與所述第三矩陣的列n對應(yīng)的K個16位浮點數(shù)據(jù)元素生成點積;將所述點積與對應(yīng)于所述第一矩陣的M行中的行m且對應(yīng)于N列中的列n的32位單精度浮點數(shù)據(jù)元素累加,以生成結(jié)果32位單精度浮點數(shù)據(jù)元素;以及將所述結(jié)果32位單精度浮點數(shù)據(jù)元素存儲在所述第一存儲位置的、與所述第一矩陣的行m和列n對應(yīng)的位置中,其中,執(zhí)行操作包括:執(zhí)行與所述指令對應(yīng)的操作以將所述第二矩陣和所述第三矩陣的非正常值處理為零。19.一種計算機可讀介質(zhì),具有存儲于其上的指令,所述指令當由處理器執(zhí)行時使所述處理器執(zhí)行如權(quán)利要求18所述的方法。4實行16位浮點矩陣點積指令的系統(tǒng)和方法[0001]本申請是2019年10月9日提交的優(yōu)先權(quán)日為2018年11月9日、申請?zhí)枮楸尘凹夹g(shù)理。深度學(xué)習(xí)是一類機器學(xué)習(xí)算法。深度學(xué)習(xí)架構(gòu)(諸如深[0005]矩陣-矩陣乘法(又名GEMM或通用矩陣乘法)是現(xiàn)代處理器上常見的計算繁重的運[0006]只要輸出元素具有足夠的位(即,多于輸入),附圖說明5法器的輸入的輸入大??;[0019]圖12圖示了利用矩陣運算電路的系統(tǒng)的實施例;[0020]圖13圖示了支持使用圖塊的矩陣運算的處理器核心流水線的實施例;[0021]圖14圖示了支持使用圖塊的矩陣運算的處理器核心流水線的實施例;[0022]圖15圖示了以行主要格式和列主要格式表達的矩陣的示例;[0023]圖16圖示了矩陣(圖塊)的使用示例;[0024]圖17圖示了矩陣(圖塊)的使用方法的實施例;[0025]圖18圖示了根據(jù)實施例的對圖塊使用的配置的支持;[0026]圖19圖示了要支持的矩陣(圖塊)的描述的實施例;[0027]圖20(A)-(D)圖示了(一個或多個)寄存器的示例;[0028]圖21是圖示了根據(jù)一些實施例的使用TILE16BDP指令來加速矩陣乘法的框圖;[0029]圖22A是圖示了根據(jù)一些實施例的TILE16BDP指令的執(zhí)行的偽代碼;[0030]圖22B是圖示了根據(jù)一些實施例的TILE16BDP指令的執(zhí)行的偽代碼;[0031]圖22C是圖示了根據(jù)一些實施例的用于由圖22A和22B的偽代碼使用的輔助函數(shù)的偽代碼;[0032]圖23圖示了處理器執(zhí)行流程以處理TILE16BDP指令的實施例;[0033]圖24是圖示了根據(jù)一些實施例的TILE16BDP指令的格式的框圖;[0034]圖25A-25B是圖示了根據(jù)實施例的通用矢量友好指令格式及其指令模板的框圖;[0035]圖25A是圖示了根據(jù)實施例的通用矢量友好指令格式及其類別A指令模板的框圖;[0036]圖25B是圖示了根據(jù)實施例的通用矢量友好指令格式以及其類別B指令模板的框[0037]圖26A是圖示了根據(jù)實施例的示例性特定矢量友好指令格式的框圖;[0038]圖26B是圖示了根據(jù)一個實施例的構(gòu)成完整操作碼字段的特定矢量友好指令格式的字段的框圖;[0039]圖26C是圖示了根據(jù)一個實施例的構(gòu)成寄存器索引字段的特定矢量友好指令格式的字段的框圖;[0040]圖26D是圖示了根據(jù)一個實施例的構(gòu)成擴充操作字段的特定矢量友好指令格式的字段的框圖;[0041]圖27是根據(jù)一個實施例的寄存器架構(gòu)的框圖;[0042]圖28A是圖示了根據(jù)實施例的示例性有序流水線和示例性寄存器重命名、無序發(fā)布/執(zhí)行流水線二者的框圖;[0043]圖28B是圖示了根據(jù)實施例的要被包括在處理器中的有序架構(gòu)核心的示例性實施例和示例性寄存器重命名、無序發(fā)布/執(zhí)行架構(gòu)核心二者的框圖;[0044]圖29A-B圖示了更特定的示例性有序核心架構(gòu)的框圖,該核心將是芯片中的若干個邏輯塊(包括相同類型和/或不同類型的其他核心)中的一個;[0045]圖29A是根據(jù)實施例的單個處理器核心,以及其到管芯上互連網(wǎng)絡(luò)的連接并且與其2級(L2)高速緩存本地子集的連接的框圖;[0046]圖29B是根據(jù)實施例的圖29A中的處理器核心的一部分的展開圖;[0047]圖30是根據(jù)實施例的可以具有多于一個核心、可以具有集成存儲器控制器以及可6以具有集成圖形部件(integratedgraphics)的處理器的框圖;[0048]圖31-34是示例性計算機架構(gòu)的框圖;[0049]圖31示出了根據(jù)本發(fā)明的一個實施例的系統(tǒng)的框圖;[0050]圖32是根據(jù)本發(fā)明的實施例的第一更加具體的示例性系統(tǒng)的框圖;[0051]圖33是根據(jù)本發(fā)明的實施例的第二更加具體的示例性系統(tǒng)的框圖;[0052]圖34是根據(jù)本發(fā)明的實施例的片上系統(tǒng)(SoC)的框圖;以及[0053]圖35是根據(jù)實施例的對比使用軟件指令轉(zhuǎn)換器來將源指令集中的二進制指令轉(zhuǎn)換成目標指令集中的二進制指令的框圖。具體實施方式[0054]在以下描述中闡述了眾多具體細節(jié)。然而,理解的是可以在沒有這些具體細節(jié)的情況下實踐實施例。在其它實例中,沒有詳細地示出公知的電路、結(jié)構(gòu)和技術(shù),以免使本描述的理解晦澀難懂。施例可以包括特定特征、結(jié)構(gòu)或特性,但是可能不是每個實施例都一定包括該特定特征、結(jié)構(gòu)或特性。此外,這樣的短語不一定指代同一實施例。另外,當與實施例相結(jié)合地來描述特定的特征、結(jié)構(gòu)或特性時,主張的是,結(jié)合其它實施例影否明確地描述了)是在本領(lǐng)域技術(shù)人員的知識范圍內(nèi)的。[0056]在許多主流處理器中,處理矩陣是一項困難和/或指令密集型任務(wù)。例如,矩陣的行可以被放入多個打包數(shù)據(jù)(例如,SIMD或矢量)寄存器中,然后單獨地對它們進行操作。例如,取決于數(shù)據(jù)大小,添加兩個8×2矩陣可能需要加載或聚集到四個打包數(shù)據(jù)寄存器中。然后,實行與來自每個矩陣的第一行相對應(yīng)的打包數(shù)據(jù)寄存器的第一添加,并且實行與來自每個矩陣的第二行相對應(yīng)的打包數(shù)據(jù)寄存器的第二添加。然后,所得到的打包數(shù)據(jù)寄存器被往回分散到存儲器。雖然對于小矩陣,這種情境可能是可接受的,但對于較大的矩陣,這通常是不可接受的。[0057]討論[0058]本文中描述的是支持諸如中央處理單元(CPU)、圖形處理單元(GPU)和加速器之類的計算機硬件中的矩陣運算的機制。矩陣運算利用表示存儲器(諸如寄存器)的一個或多個打包區(qū)域的二維(2-D)數(shù)據(jù)結(jié)構(gòu)。遍及該說明書,這些2-D數(shù)據(jù)結(jié)構(gòu)被稱為圖塊(tile)。注意的是,矩陣可以小于圖塊(使用少于圖塊的全部)或者利用多個圖塊(矩陣大于任何一個圖塊的大小)。遍及說明書,矩陣(圖塊)語言被用來指示使用影響矩陣的圖塊所實行的運算;該矩陣是否大于任何一個圖塊通常并不相關(guān)。[0059]每個圖塊可以通過不同的運算(諸如本文中詳述的那些)來起作用,并且包括但不加地,對諸如使用縮放(scale)和/或偏差的運算符(operator)的支持可以與這些運算一起還描述了用于實行矩陣(圖塊)16位圖塊點積(TILE16BDP)指令的指令。[0060]存儲裝置的部分(諸如存儲器(非易失性和易失性的)、寄存器、高速緩存等)被布7置成具有不同水平和垂直尺寸的圖塊。例如,圖塊的水平尺寸可以是4(例如,矩陣的四行),[0061]配置的圖塊的示例性使用[0062]在一些實施例中,可以配置圖塊參數(shù)。例如,給定的圖塊可以被配置成提供圖塊選項。示例性圖塊選項包括但不限于:圖塊的多個行、圖塊的多個列,圖塊是否是有效的(VALID),以及圖塊是否由相等大小的圖塊的對(PAIR)組成。[0063]圖1A圖示了配置的圖塊的實施例。如所示的,應(yīng)用存儲器102的4kB具有存儲在其圖塊不由對組成,并且每個圖塊具有按行和列布置的元素。圖塊t0104和圖塊t1106具有K行和N列的4字節(jié)元素(例如,單精度數(shù)據(jù)),其中K等于8且N=32。圖塊t2108和圖塊t3110具有K行和N/2列的8字節(jié)元素(例如,雙精度數(shù)據(jù))。由于雙精度操作數(shù)是單精度寬度的兩倍,因此該配置與調(diào)色板(palette)一致,被用來提供圖塊選項,從而為至少4kB的總存儲提供至少4個名稱。在操作中,可以使用加載和存儲操作從存儲器加載圖塊以及將圖塊存儲到存儲器。取決于所使用的指令編碼方案,可用應(yīng)用存儲器的量以及可用圖塊的大小、數(shù)量和配置會有所不同。[0064]圖1B圖示了配置的圖塊的實施例。如所示的,4kB的應(yīng)用存儲器122具有存儲于其上的2對1kB標題,第一對是圖塊t4L124和圖塊t4R126,并且第二對是圖塊t5L128和圖塊圖塊和奇圖塊。在該示例中,4個圖塊均具有按行和列布置的元素。圖塊t4L124和圖塊t4R126具有K行和N列的4字節(jié)元素(例如,單精度浮點數(shù)據(jù)),其中K等于8且N等于32。圖塊t5L128和圖塊t5R130具有K行和N/2列的8字節(jié)元素(例如,雙精度浮點數(shù)據(jù))。由于雙精度操作數(shù)是單精度寬度的兩倍,因此該配置與調(diào)色板一致,被用來提供圖塊選項,從而為至少4kB的總存儲提供至少2個名稱。圖1A的四個圖塊使用4個名稱,每個名稱命名1kB圖塊,而圖1B中的2對圖塊可以使用2個名稱來指定配對圖塊。在一些實施例中,圖塊指令接受配對圖塊的名稱作為操作數(shù)。在操作中,可以使用加載和存儲操作從存儲器加載圖塊以及將圖塊存儲到存儲器。取決于所使用的指令編碼方案,可用應(yīng)用存儲器的量以及可用圖塊的大小、數(shù)量和配置會有所不同。例性選項包括但不限于:圖塊名稱的數(shù)量、存儲的行中的字節(jié)數(shù)、圖塊中的行數(shù)和列數(shù)等。[0066]圖塊最大行=所架構(gòu)的存儲/(調(diào)色板名稱數(shù)*每行的字節(jié)數(shù))。[0067]照此,可以編寫應(yīng)用程序,使得名稱的固定使用將能夠跨實現(xiàn)方式而利用不同的存儲大小。[0068]使用矩陣(圖塊)配置(“TILECONFIG”)指令來完成圖塊的配置,其中在選定的調(diào)色板中定義特定的圖塊使用。該聲明包括:要使用的圖塊名稱的數(shù)量、每個名稱(圖塊)所請求的行數(shù)和列數(shù),以及在一些實施例中,每個圖塊所請求的數(shù)據(jù)類型。在一些實施例中,在執(zhí)行TILECONFIG指令期間實行一致性檢查以確定其匹配調(diào)色板條目的限制。8[0069]示例性圖塊存儲類型[0070]圖2圖示了矩陣存儲的若干個示例。在(A)中,圖塊被存儲在存儲器中。如所示的,續(xù)存儲在存儲器中。當圖塊存儲并不映射底層存儲器陣列行寬時,跨步式存儲器訪問允許訪問一個行至然后下一個行。[0071]從存儲器加載圖塊和將圖塊存儲到存儲器通常是從應(yīng)用存儲器到打包的數(shù)據(jù)行指令引用(作為加載操作指令中的TILE操作數(shù))是可重新啟動的,以處理(至多)2*頁面錯誤[0072]在(B)中,矩陣被存儲在由多個寄存器組成的圖塊中,該寄存器諸如打包數(shù)據(jù)寄存器(單指令、多數(shù)據(jù)(SIMD)或矢量寄存器)。在此示例中,圖塊覆蓋在三個物理寄存器上。通[0073]在(C)中,矩陣被存儲在非寄存器存儲中的圖塊中,該存儲可用于圖塊操作中所使一些實施例中,存儲可以針對數(shù)據(jù)元素而非整個行或圖塊。高度和最大SIMD尺寸。配置TMMA架構(gòu)需要指定每個圖塊的尺寸、每個圖塊的元素大小和調(diào)[0075]TILECONFIG指令的成功執(zhí)行啟用了后續(xù)TILE運算符。位對應(yīng)于實際的圖塊有效載荷數(shù)據(jù)。[0077]TILECONFIG不僅配置圖塊使用,還設(shè)置了狀態(tài)變量,其指示了該程序處于具有已配置圖塊的代碼區(qū)域中。實現(xiàn)方式可以列舉對可以與圖塊區(qū)域一起使用的其他指令的限[0078]退出圖塊區(qū)域通常利用TILERELEASEALL指令來完成。它不需要任何參數(shù),并且可以迅速使全部圖塊無效(指示的是數(shù)據(jù)不再需要任何保存或恢復(fù)),并且清除與處于圖塊區(qū)域中相對應(yīng)的內(nèi)部狀態(tài)。[0079]在一些實施例中,圖塊操作將使超出由圖塊配置所指定的尺寸的任何行和任何列置零。例如,在寫入每個行時,圖塊操作將使超出配置的列數(shù)(將元素的大小計算在內(nèi))的數(shù)據(jù)置零。例如,在64字節(jié)行和被配置有10行和12列的圖塊的情況下,寫入FP32元素的操作將利用輸出/結(jié)果數(shù)據(jù)來寫入具有12*4字節(jié)的前10行中的每一行,并且將每一行中的剩余4*4字節(jié)置零。圖塊操作也將前10個配置的行之后的任何行完全置零。當使用具有64字節(jié)的行[0080]在一些實施例中,上下文恢復(fù)指令(例如,XRSTOR)在加載數(shù)據(jù)時強制的是,超出為圖塊所配置的行的數(shù)據(jù)將被維持為零。如果沒有有效配置,則全部行都被置零。圖塊數(shù)據(jù)的XRSTOR可以在超出所配置的列的列中加載垃圾。XRSTOR應(yīng)當沒有可能超出所配置的列數(shù)來進行清除,因為沒有與圖塊配置相關(guān)聯(lián)的元素寬度。9[0081]上下文保存(例如,XSAVE)在將整個TILE存儲區(qū)寫入存儲器時公開該整個TILE存將為超出為每個圖塊所指定的數(shù)量的行寫入零。[0082]在一些實施例中,圖塊指令是可重新啟動的。訪問存儲器的操作允許在頁面發(fā)生故障之后重新啟動。處理浮點運算的計算指令還允許未屏蔽的浮點異常,其中屏蔽了由控制和/或狀態(tài)寄存器控制的異常。[0083]為了支持在這些事件之后重新啟動指令,指令將信息存儲在下面詳述的啟動寄存器中。[0084]矩陣(圖塊)操作系統(tǒng)[0085]示例性硬件支持[0086]圖3圖示了利用矩陣(圖塊)運算加速器的系統(tǒng)的實施例。在該圖示中,主處理器/處理系統(tǒng)301將命令311(例如,諸如算術(shù)或矩陣操縱操作之類的矩陣操縱操作,或者加載和存儲操作)傳送到矩陣運算加速器307。然而,這僅出于討論目的而以這種方式示出。如之后詳述的,該加速器307可以是處理核心的一部分。通常,作為圖塊操縱運算符指令的命令311將作為寄存器-寄存器(“reg-reg”)或寄存器-存儲器("reg-mem”)格式來指代圖塊。其他命的指令(例如,微操作)或宏指令以供加速器307來處理。[0087]在該示例中,一致存儲器接口303耦合到主處理器/處理系統(tǒng)301和矩陣運算加速器307,使得它們可以共享存儲器。圖4和5示出了如何使用矩陣運算加速器來共享存儲器的不同實施例。如圖4所示,主處理器401和矩陣運算加速器電路405共享同一存儲器403。圖5圖示了其中主處理器501和矩陣運算加速器505不共享存儲器但可以訪問彼此的存儲器的實施例。例如,處理器501可以訪問圖塊存儲器507并且照常陣運算加速器505可以訪問主存儲器503,但更典型地使用其自己的存儲器507。注意,這些存儲器可以是屬于不同類型的。[0088]在一些實施例中,使用物理寄存器上的覆蓋(overlay)來支持圖塊。例如,取決于實現(xiàn)方式,圖塊可以利用16個1,024位寄存器、32個512位寄存器等。在一些實施例中,矩陣運算利用表示存儲器(諸如寄存器)的一個或多個打包區(qū)域的2維(2-D)數(shù)據(jù)結(jié)構(gòu)。遍及該說明書,這些2-D數(shù)據(jù)結(jié)構(gòu)被稱為圖塊或圖塊寄[0089]在一些實施例中,矩陣運算加速器307包括耦合到數(shù)據(jù)緩沖器305的多個FMA309據(jù)緩沖器305緩沖了從存儲器加載的圖塊和/或要存儲到存儲器的圖塊(例如,使用圖塊加和T2來實行矩陣乘法運算。至少一個圖塊被容納在FMA網(wǎng)格309中。在一些實施例中,運算中或可以不占據(jù)圖塊的整個空間。[0090]圖6圖示了使用圖塊(“TMMA”)的矩陣乘法累加運算的實施例。[0091]矩陣(圖塊A601)中的行數(shù)與包括計算的等待時間的串行(鏈式)FMA的數(shù)量相匹配。一種實現(xiàn)方式可以在具有較小高度的網(wǎng)格上自由再循環(huán),而計算保持不變。[0092]源/目的地矢量來自于具有N行的圖塊(圖塊C605),并且FMA的網(wǎng)格611實行N個矢量矩陣運算,從而導(dǎo)致了實行圖塊的矩陣乘法的完整指令。圖塊B603是另一個矢量源,并尺寸相配。在網(wǎng)格中的每個FMA處,將A和B的元素相乘并且添加于傳入的被加數(shù)(在圖中從上面),并且傳出的和被傳遞到FMA的下一行(或最終輸出)。[0094]單個步驟的等待時間與K(矩陣B的行高度)成比例,并且從屬的TMMA通常具有足夠的源-目的地行(在單個圖塊中或者跨圖塊)以隱藏該等待時間。一種實現(xiàn)方式還可以跨時間步驟來拆分SIMD(打包數(shù)據(jù)元素)尺寸M(矩陣A的行高),但是這僅僅改變了K乘以的常數(shù)。當程序指定的K小于由TMACC列舉的最大值時,一種實現(xiàn)方式就利用“屏蔽”或“早期輸出 (earlyouts)”來自由實現(xiàn)這一點。N*K*M。[0096]圖7圖示了鏈式融合乘法累加指令的迭代執(zhí)行的子集的實施例。特別地,這圖示了目的地的一個打包數(shù)據(jù)元素方位的迭代的執(zhí)行電路。在該實施例中,鏈式融合乘法累加在有符號(signed)源上操作,其中累加器是輸入數(shù)據(jù)大小的2倍。[0097]第一有符號源(源1701)和第二有符號源(源2703)均具有四個打包數(shù)據(jù)元素。這些打包數(shù)據(jù)元素中的每一個都存儲諸如浮點數(shù)據(jù)之類的有符號數(shù)據(jù)。第三有符號源(源3709)具有兩個打包數(shù)據(jù)元素,每個元素都存儲有符號數(shù)據(jù)。第一和第二有符號源701和703的大小是第三有符號源(初始值或先前結(jié)果)709的大小的一半。例如,第一有符號源701和第二有符號源703可以具有32位打包數(shù)據(jù)元素(例如,單精度浮點數(shù)),而第三有符號源709可以具有64位打包數(shù)據(jù)元素(例如,雙精度浮點數(shù))。[0098]在該圖示中,僅示出了第一有符號源701和第二有符號源703的兩個最高有效打包數(shù)據(jù)元素方位以及第三有符號源709的最高有效打包數(shù)據(jù)元素方位。當然,還將處理其他打包數(shù)據(jù)元素方位。[0099]如圖示的,成對處理打包數(shù)據(jù)元素。例如,使用乘法器電路705將第一有符號源701和第二有符號源703的最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘,并且使用乘法器電路707將來自第一有符號源701和第二有符號源703的第二最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘。在一些實施例中,這些乘法器電路705和707被重新用于其他打包數(shù)據(jù)元素方位。在其他實施例中,使用附加的乘法器電路,以使得并行處理打包數(shù)據(jù)元素。在一些上下文中,使用具有有符號第三源709的大小的通道來完成并行執(zhí)行。使用加法電路711來將每一個乘法的結(jié)果加起來。[0100]將乘法結(jié)果的加法結(jié)果加到來自有符號源3709的最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)中(使用不同的加法器713或相同的加法器711)。[0101]最后,第二加法的結(jié)果被存儲到打包數(shù)據(jù)元素方位中的有符號目的地715中,該打包數(shù)據(jù)元素方位對應(yīng)于來自有符號第三源709的所使用的打包數(shù)據(jù)元素方位,或者如果存在下一次迭代的話,被傳遞給下一次迭代。在一些實施例中,將寫掩碼應(yīng)用于該存儲,使得11如果設(shè)置了對應(yīng)的寫掩碼(位),則發(fā)生存儲,而如果未設(shè)置,則不發(fā)生存儲。[0102]圖8圖示了鏈式融合乘法累加指令的迭代執(zhí)行的子集的實施例。特別地,這圖示了目的地的一個打包數(shù)據(jù)元素方位的迭代的執(zhí)行電路。在該實施例中,鏈式融合乘法累加在有符號源上操作,其中累加器是輸入數(shù)據(jù)大小的2倍。[0103]第一有符號源(源1801)和第二有符號源(源2803)均具有四個打包數(shù)據(jù)元素。這些打包數(shù)據(jù)元素中的每一個都存儲諸如整數(shù)數(shù)據(jù)之類的有符號數(shù)據(jù)。第三有符號源(源3809)具有兩個打包數(shù)據(jù)元素,每個元素都存儲有符號數(shù)據(jù)。第一有符號源801和第二有符號源803的大小是第三有符號源809的大小的一半。例如,第一有符號源801和第二有符號源803可以具有32位打包數(shù)據(jù)元素(例如,單精度浮點數(shù)),并且第三有符號源809可以具有64位打包數(shù)據(jù)元素(例如,雙精度浮點數(shù))。[0104]在該圖示中,僅示出了第一有符號源801和第二有符號源803的兩個最高有效打包數(shù)據(jù)元素方位以及第三有符號源809的最高有效打包數(shù)據(jù)元素方位。當然,還將處理其他打包數(shù)據(jù)元素方位。[0105]如圖示的,成對處理打包數(shù)據(jù)元素。例如,使用乘法器電路805將第一有符號源801和第二有符號源803的最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘,并且使用乘法器電路807將來自第一有符號源801和第二有符號源803的第二最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘。在一些實施例中,乘法器電路805和807在沒有飽和的情況下以無限精度實行乘法,并且使用加法器/飽和電路813來將累加的結(jié)果:在溢出的情況下飽和至正或負無窮大,以及在任何下溢的情況下飽和至零。在其他實施例中,乘法器電路805和807自身實行飽和。在一些實施例中,這些乘法器電路805和807被重新用于其他打包數(shù)據(jù)元素方位。在其他實施例中,使用附加的乘法器電路,以使得并行處理打包數(shù)據(jù)元素。在一些上下文中,使用具有有符號第三源(初始值或先前迭代結(jié)果)809的大小的通道來完成并行執(zhí)行。使用加法/飽和電路813將每一個乘法的結(jié)果添加到有符號第三源809。[0106]當加法導(dǎo)致過大的值時,加法/飽和(累加器)電路813保留操作數(shù)的符號。特別地,飽和度評估發(fā)生在多路添加與寫入目的地或下一次迭代之間的無限精度結(jié)果上。當累加器813是浮點的并且輸入項是整數(shù)時,乘積之和以及浮點累加器輸入值被變?yōu)闊o限精度值(數(shù)百個位的固定點數(shù)量),實行乘法結(jié)果與第三輸入的加法,并且實行到實際累加器類型的單個舍入。[0107]無符號飽和意味著輸出值被限制成該元素寬度的最大無符號數(shù)量(全為1)。有符號飽和意味著一個值被限制成處于針對該元素寬度的最小負數(shù)與最大正數(shù)之間的范圍內(nèi)(例如,對于字節(jié),該范圍是從-128(=-2^7)到127(=2^7-1))。[0108]加法和飽和檢查的結(jié)果被存儲到打包數(shù)據(jù)元素方位中的有符號結(jié)果815中,其對應(yīng)于來自有符號第三源809的所使用的或者如果有下一次迭代的話被傳遞到下一次迭代的打包數(shù)據(jù)元素方位。在一些實施例中,將寫掩碼應(yīng)用于該存儲,使得如果設(shè)置了對應(yīng)的寫掩[0109]圖9圖示了鏈式融合乘法累加指令的迭代執(zhí)行的子集的實施例。特別地,這圖示了目的地的一個打包數(shù)據(jù)元素方位的迭代的執(zhí)行電路。在該實施例中,鏈式融合乘法累加在有符號源和無符號源上操作,其中累加器是輸入數(shù)據(jù)大小的4倍。[0110]第一有符號源(源1901)和第二無符號源(源2903)均具有四個打包數(shù)據(jù)元素。這些打包數(shù)據(jù)元素中的每一個都具有諸如浮點數(shù)或整數(shù)數(shù)據(jù)之類的數(shù)據(jù)。第三有符號源(初始值或結(jié)果915)具有存儲有符號數(shù)據(jù)的打包數(shù)據(jù)元素。第一源901和和第二源903的大小是第三有符號源915的四分之一。例如,第一源901和第二源903可以具有16位打包數(shù)據(jù)元素(例如,字),并且第三有符號源915可以具有64位打包數(shù)據(jù)元素(例如,雙精度浮點數(shù)或64位整數(shù))。[0111]在該圖示中,示出了第一源901和第二源903的四個最高有效打包數(shù)據(jù)元素方位和第三有符號源915的最高有效打包數(shù)據(jù)元素方位。當然,如果存在任何其他打包數(shù)據(jù)元素方[0112]如圖示的,按四元組來處理打包數(shù)據(jù)元素。例如,使用乘法器電路905將第一源901和第二源903的最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘,使用乘法器電路907將來自第一源901和第二源903的第二最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘,使用乘法器電路909將來自第一源901和第二源903的第三最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘,并且使用乘法器電路911將來自第一源901和第二源903的最低有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘。在一些實施例中,第一源901的有符號打包數(shù)據(jù)元素被符號擴展,并且第二源903的無符號打包數(shù)據(jù)元素在乘法之前被零擴展(zeroextended)。[0113]在一些實施例中,這些乘法器電路905-911被重新用于其他打包數(shù)據(jù)元素方位。在其他實施例中,使用附加的乘法器電路,使得并行處理打包數(shù)據(jù)元素。在一些上下文中,使用具有有符號第三源915的大小的通道來完成并行執(zhí)行。使用加法電路913來將每一個乘法的結(jié)果加起來。[0114]將乘法結(jié)果的加法結(jié)果加到來自有符號源3915的最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)中(使用不同的加法器917或相同的加法器913)。[0115]最后,第二加法的結(jié)果919或者被存儲到打包數(shù)據(jù)元素方位中的有符號目的地中,該打包數(shù)據(jù)元素方位對應(yīng)于來自有符號第三源915的所使用的打包數(shù)據(jù)元素方位,或者被傳遞給下一次迭代。在一些實施例中,將寫掩碼應(yīng)用于該存儲,使得如果設(shè)置了對應(yīng)的寫掩[0116]圖10圖示了鏈式融合乘法累加指令的迭代執(zhí)行的子集的實施例。特別地,這圖示了目的地的一個打包數(shù)據(jù)元素方位的迭代的執(zhí)行電路。在該實施例中,鏈式融合乘法累加在有符號源和無符號源上操作,其中累加器是輸入數(shù)據(jù)大小的4倍。[0117]第一有符號源1001和第二無符號源1003均具有四個打包數(shù)據(jù)元素。這些打包數(shù)據(jù)元素中的每一個都存儲諸如浮點數(shù)或整數(shù)數(shù)據(jù)之類的數(shù)據(jù)。第三有符號源1015(初始的或先前結(jié)果)具有存儲有符號數(shù)據(jù)的打包數(shù)據(jù)元素。第一源和第二源的大小是第三有符號源1015的四分之一(初始的或先前結(jié)果)。例如,第一源和第二源可以具有16位打包數(shù)據(jù)元素(例如,字),并且第三有符號源1015(初始的或先前結(jié)果)可以具有64位打包數(shù)據(jù)元素(例[0118]在該圖示中,示出了第一有符號源1001和第二無符號源1003的四個最高有效打包數(shù)據(jù)元素方位和第三有符號源1015的最高有效打包數(shù)據(jù)元素方位。當然,如果存在任何其他打包數(shù)據(jù)元素方位,則也將處理它們。[0119]如圖示的,按四元組來處理打包數(shù)據(jù)元素。例如,使用乘法器電路1005將第一有符號源1001和第二無符號源1003的最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘,使用乘法器電路1007將來自第一有符號源1001和第二無符號源1003的第二最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘,使用乘法器電路1009將來自第一有符號源1001和第二無符號源1003的第三最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘,并且使用乘法器電路1011將來自第一有符號源1001和第二無符號源1003的最低有效打包數(shù)據(jù)元素方位的數(shù)據(jù)相乘。在一些實施例中,第一有符號源1001的有符號打包數(shù)據(jù)元素被符號擴展,并且第二無符號源1003的無符號打包數(shù)據(jù)元素在乘法之前被零擴展。[0120]在一些實施例中,這些乘法器電路1005-1011被重新用于其他打包數(shù)據(jù)元素方位。在其他實施例中,使用附加的乘法器電路,以使得并行處理打包數(shù)據(jù)元素。在一些上下文中,使用具有第三有符號源1015(初始的或先前結(jié)果)的大小的通道來完成并行執(zhí)行。使用加法器/飽和1013電路將乘法結(jié)果的加法結(jié)果加到來自第三有符號源1015(初始的或先前結(jié)果)的最高有效打包數(shù)據(jù)元素方位的數(shù)據(jù)中。[0121]當加法導(dǎo)致對于有符號飽和而言過大或過小的值時,加法/飽和(累加器)電路1013保留操作數(shù)的符號。特別地,飽和評估發(fā)生在多路添加與寫入目的地之間的無限精度結(jié)果上。當累加器1013是浮點的并且輸入項是整數(shù)時,乘積之和以及浮點累加器輸入值被變?yōu)闊o限精度值(數(shù)百個位的固定點數(shù)量),實行乘法結(jié)果與第三輸入的加法,并且實行到實際累加器類型的單個舍入。[0122]加法和飽和檢查的結(jié)果1019被存儲到打包數(shù)據(jù)元素方位中的有符號目的地,其對應(yīng)于來自第三有符號源1015(初始的或先前結(jié)果)的所使用的或被傳遞到下一次迭代的打包數(shù)據(jù)元素方位。在一些實施例中,將寫掩碼應(yīng)用于該存儲,使得如果設(shè)置了對應(yīng)的寫掩碼[0123]圖11圖示了根據(jù)實施例的兩次冪大小的SIMD實現(xiàn)方式,其中累加器使用大于對乘法器的輸入的輸入大小。注意,源(對于乘法器)和累加器值可以是有符號值或無符號值。對于具有2倍輸入大小的累加器(換言之,累加器輸入值的大小是源的打包數(shù)據(jù)元素大小的兩倍),表1101圖示了不同的配置。對于字節(jié)大小的源,累加器使用16位大小的字或半精度浮點(HPFP)值。對于字大小的源,累加器使用32位整數(shù)或32位大小的單精度浮點(SPFP)值。對于SPFP或32位整數(shù)大小的源,累加器使用64位整數(shù)或64位大小的雙精度浮點(DPFP)值。[0124]對于具有4倍輸入大小的累加器(換言之,累加器輸入值的大小是源的打包數(shù)據(jù)元素大小的四倍),表1103圖示了不同的配置。對于字節(jié)大小的源,累加器使用32位整數(shù)或32位大小的單精度浮點(SPFP)值。對于字大小的源,在一些實施例中,累加器使用64位整數(shù)或64位大小的雙精度浮點(DPFP)值。[0125]對于具有8倍輸入大小的累加器(換言之,累加器輸入值的大小是源的打包數(shù)據(jù)元素大小的八倍),表1105圖示了一種配置。對于字節(jié)大小的源,累加器使用64位整數(shù)。[0126]如先前暗示的,矩陣運算電路可以被包括在核心中,或者作為外部加速器。圖12圖示了利用矩陣運算電路的系統(tǒng)的實施例。在該圖示中,多個實體與環(huán)形互連1245耦合。[0127]多個核心——核心01201、核心11203、核心21205和核心N1207——提供非基于圖塊的指令支持。在一些實施例中,矩陣運算電路1251在核心1203中提供,并且在其他實施例中,矩陣運算電路1211和1213可在環(huán)形互連1245上訪問。[0128]附加地,提供一個或多個存儲器控制器1223-1225以代表核心和/或矩陣運算電路來與存儲器1233和1231通信。[0129]圖13圖示了支持使用圖塊的矩陣運算的處理器核心流水線的實施例。分支預(yù)測和解碼電路1303根據(jù)存儲在指令存儲1301中的指令來實行指令的分支預(yù)測、指令的解碼和/或兩者。例如,本文中詳述的指令可以被存儲在指令存儲中。在一些實現(xiàn)方式中,單獨的電路被用于分支預(yù)測,并且在一些實施例中,使用微代碼1305將至少一些指令解碼成一個或多個微操作、微代碼入口點、微指令、其他指令或其他控制信號??梢允褂酶鞣N不同的機制來實現(xiàn)分支預(yù)測和解碼電路1303。適合的機制的示例包括但不限于查找表、硬件實現(xiàn)方式、[0130]分支預(yù)測和解碼電路1303耦合到分配/重命名1307電路,在一些實施例中,該分配/重命名1307電路耦合到調(diào)度器電路1309。在一些實施例中,這些電路通過實行下述各項中的一個或多個來提供寄存器重命名、寄存器分配和/或調(diào)度功能:1)將邏輯操作數(shù)值重命名為物理操作數(shù)值(例如,在一些實施例中為寄存器別名表),2)將狀態(tài)位和標記分配給經(jīng)解碼的指令,以及3)(例如,在一些實施例中,使用保留站)從指令池中調(diào)度出經(jīng)解碼的指令以供在執(zhí)行電路上執(zhí)行。[0131]調(diào)度器電路1309表示任何數(shù)量的不同調(diào)度器,包括保留站、中央指令窗口等。調(diào)度器電路1309耦合到或包括(一個或多個)物理寄存器堆1315.該(一個或多個)物理寄存器堆1315中的每一個表示一個或多個物理寄存器堆,其中不同的物理寄存器堆存儲一個或多個個)物理寄存器堆1315包括矢量寄存器電路、寫掩碼寄存器電路以及標量寄存器電路。這些寄存器硬件可以提供架構(gòu)矢量寄存器、矢量掩碼寄存器以及通用寄存器。(一個或多個)物理寄存器堆1315被退休電路1317重疊以圖示可以實現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用(一個或多個)重新排序緩沖器和(一個或多個)退休寄存器堆;使用(一個或多個)未來堆、(一個或多個)歷史緩沖器以及(一個或多個)退休寄存器堆;使用寄存器圖和寄存器池等)。退休電路1317和(一個或多個)物理寄存器堆1315耦合到執(zhí)行電路1311[0132]雖然在無序執(zhí)行的上下文中描述了寄存器重命名,但是應(yīng)當理解的是,可以在有序架構(gòu)中使用寄存器重命名。雖然所圖示的處理器的實施例也可以包括單獨的指令和數(shù)據(jù)高速緩存單元以及共享L2高速緩存單元,但是替換的實施例可以具有用于指令和數(shù)據(jù)兩者的單個內(nèi)部高速緩存,諸如例如1級(L1)內(nèi)部高速緩存,或多級內(nèi)部高速緩存。在一些實施例中,系統(tǒng)可以包括內(nèi)部高速緩存和在核心和/或處理器外部的外部高速緩存的組合。替換地,全部的高速緩存都可以在核心和/或處理器外部。[0133]執(zhí)行電路1311是一組一個或多個執(zhí)行電路,包括標量電路1321、矢量/SIMD電路1323和矩陣運算電路1327,以及用以訪問高速緩存1313的存儲器訪問電路1325.執(zhí)行電路能集的許多執(zhí)行單元,但是其他實施例可以包括僅一個執(zhí)行單元或全部都實行所有功能的多個執(zhí)行單元。標量電路1321實行標量運算,矢量/SIMD電路1323實行矢量/SIMD運算,并且矩陣運算電路1327實行本文中詳述的矩陣(圖塊)運算。[0134]作為示例,示例性寄存器重命名無序發(fā)布/執(zhí)行核心架構(gòu)可以實現(xiàn)流水線如下:1)指令獲取電路實行獲取和長度解碼階段;2)分支和解碼電路1303實行解碼階段;3)分配/重命名1307電路實行分配階段和重命名階段;4)調(diào)度器電路1309實行調(diào)度階段;5)(一個或多個)物理寄存器堆(耦合到或被包括在調(diào)度器電路1309和分配/重命名1307電路中)和存儲器單元實行寄存器讀取/存儲器讀取階段;執(zhí)行電路1311實行執(zhí)行階段;6)存儲器單元和(一個或多個)物理寄存器堆(一個或多個)單元實行寫回/存儲器寫入階段;7)各個單元可能涉及異常處理階段;以及8)退休單元和(一個或多個)物理寄存器堆(一個或多個)單元實行提交階段。[0135]核心可以支持一個或多個指令集(例如,x86指令集(具有已經(jīng)被添加有更新版本的一些擴展);加利福尼亞州森尼維爾市的MIPS科技的MIPS指令集;加利福尼亞州森尼維爾市的ARM控股的ARM指令集(具有諸如NEON之類的可選的附加擴展),包括本文中描述的(一個或多個)指令。在一個實施例中,核心1390包括用以支持打包數(shù)據(jù)指令集擴展(例如AVX1、AVX2)的邏輯,由此允許使用打包數(shù)據(jù)來實行被許多多媒體應(yīng)用使用的操作。[0136]應(yīng)當理解的是,核心可以支持多線程(執(zhí)行操作或線程的兩個或更多個并行集合),并且可以用各種各樣的方式這么做,該方式包括時間分片多線程、同時多線程(在單個物理核心為線程中的每一個提供邏輯核心的情況下,該物理核心是同時多線程的)或它們的組合(例如,時間分片獲取和解碼,以及其后諸如在英特爾⑧超線程技術(shù)中的同時多線程)。[0137]圖14圖示了支持使用圖塊的矩陣運算的處理器核心流水線的實施例。分支預(yù)測和解碼電路1403根據(jù)存儲在指令存儲1401中的指令來實行指令的分支預(yù)測、指令的解碼和/或兩者。例如,本文中詳述的指令可以存儲在指令存儲中。在一些實現(xiàn)方式中,單獨的電路被用于分支預(yù)測,并且在一些實施例中,使用微代碼1405將至少一些指令解碼成一個或多個微操作、微代碼入口點、微指令、其他指令或其他控制信號。分支預(yù)測和解碼電路1403可以使用各種不同的機制來實現(xiàn)。適合的機制的示例包括但不限于查找表、硬件實現(xiàn)方式、可[0138]分支預(yù)測和解碼電路1403耦合到分配/重命名1407電路,在一些實施例中,該分配/重命名1407電路耦合到調(diào)度器電路1409。在一些實施例中,這些電路通過實行下述各項中的一個或多個來提供寄存器重命名、寄存器分配和/或調(diào)度功能:1)將邏輯操作數(shù)值重命名為物理操作數(shù)值(例如,在一些實施例中是寄存器別名表),2)將狀態(tài)位和標記分配給經(jīng)解碼的指令,以及3)(例如,在一些實施例中,使用保留站)從指令池中調(diào)度出經(jīng)解碼的指令以供在執(zhí)行電路上執(zhí)行。[0139]調(diào)度器電路1409表示任何數(shù)量的不同調(diào)度器,包括保留站、中央指令窗口等。(一個或多個)調(diào)度器單元調(diào)度器電路1409耦合到或包括(一個或多個)物理寄存器堆1415。(一個或多個)物理寄存器堆1415中的每一個表示一個或多個物理寄存器堆,其中不同的物理寄存器堆存儲一個或多個不同的數(shù)據(jù)類型,諸如標量整數(shù)一個實施例中,(一個或多個)物理寄存器堆1415包括矢量寄存器電路、寫掩碼寄存器電路以及標量寄存器電路。這些寄存器硬件可以提供架構(gòu)矢量寄存器、矢量掩碼寄存器以及通用寄存器。(一個或多個)物理寄存器堆1415被退休電路1417重疊以圖示可以實現(xiàn)寄存器重命名和無序執(zhí)行的各種方式(例如,使用(一個或多個)重新排序緩沖器和(一個或多個)退休寄存器堆;使用(一個或多個)未來堆、(一個或多個)歷史緩沖器以及(一個或多個)退休寄存器堆;使用寄存器圖和寄存器池等)。退休電路1417和(一個或多個)物理寄存器堆1415耦合到執(zhí)行電路1411。[0140]雖然在無序執(zhí)行的上下文中描述了寄存器重命名,但是應(yīng)當理解的是,可以在有序架構(gòu)中使用寄存器重命名。雖然所圖示的處理器的實施例也可以包括單獨的指令和數(shù)據(jù)高速緩存單元以及共享L2高速緩存單元,但是替換的實施例可以具有用于指令和數(shù)據(jù)兩者的單個內(nèi)部高速緩存,諸如例如1級(L1)內(nèi)部高速緩存,或多級內(nèi)部高速緩存。在一些實施例中,系統(tǒng)可以包括內(nèi)部高速緩存和在核心和/或處理器外部的外部高速緩存的組合。替換地,全部的高速緩存都可以在核心和/或處理器外部。[0141]執(zhí)行電路1411包括一組一個或多個執(zhí)行電路1427和一組一個或多個存儲器訪問電路以訪問高速緩存1413.執(zhí)行電路1427實行本文中詳述的矩陣(圖塊)運算。[0142]作為示例,示例性寄存器重命名無序發(fā)布/執(zhí)行核心架構(gòu)可以實現(xiàn)流水線如下:1)指令獲取電路實行獲取和長度解碼階段;2)分支和解碼電路1403實行解碼階段;3)分配/重命名1407電路實行分配階段和重命名階段;4)調(diào)度器電路1409實行調(diào)度階段;5)(一個或多個)物理寄存器堆(耦合到或被包括在調(diào)度器電路1409和分配/重命名1407電路中)和存儲器單元實行寄存器讀取/存儲器讀取階段;執(zhí)行電路1411實行執(zhí)行階段;6)存儲器單元和(一個或多個)物理寄存器堆(一個或多個)單元實行寫回/存儲器寫入階段;7)各個單元可能涉及異常處理階段;以及8)退休單元和(一個或多個)物理寄存器堆(一個或多個)單元實行提交階段。[0143]核心可以支持一個或多個指令集(例如,x86指令集(具有已經(jīng)被添加有更新版本的一些擴展);加利福尼亞州森尼維爾市的MIPS科技的MIPS指令集;加利福尼亞州森尼維爾市的ARM控股的ARM指令集(具有諸如NEON之類的可選的附加擴展),包括本文中描述的(一個或多個)指令。在一個實施例中,核心1490包括用以支持打包數(shù)據(jù)指令集擴展(例如AVX1、AVX2)的邏輯,由此允許使用打包數(shù)據(jù)來實行被許多多媒體應(yīng)用使用的操作。[0144]應(yīng)當理解的是,核心可以支持多線程(執(zhí)行操作或線程的兩個或更多個并行集合),并且可以用各種各樣的方式這么做,該方式包括時間分片多線程、同時多線程(在單個物理核心為線程中的每一個提供邏輯核心的情況下,該物理核心是同時多線程的)或它們的組合(例如,時間分片獲取和解碼,以及其后諸如在英特爾超線程技術(shù)中的同時多線程)。[0145]布局[0146]遍及該說明書,使用行主要數(shù)據(jù)布局來表達數(shù)據(jù)。列主要用戶應(yīng)當根據(jù)其取向來轉(zhuǎn)換各項。圖15圖示了以行主要格式和列主要格式表達的矩陣的示例。如所示的,矩陣A是2×3矩陣。當該矩陣以行主要格式存儲時,行的數(shù)據(jù)元素是連續(xù)的。當此矩陣以列主要格式存儲時,列的數(shù)據(jù)元素是連續(xù)的。矩陣的一個眾所周知的屬性是A*B1=(BA),其中上標T意指變換。作為行主要數(shù)據(jù)來讀取列主要數(shù)據(jù)導(dǎo)致了矩陣看起來像變換矩陣。[0147]在一些實施例中,在硬件中利用行主要語義,并且列主要數(shù)據(jù)要交換操作數(shù)次序,其具有的結(jié)果是矩陣的變換,但是對于后續(xù)的來自存儲器的列主要讀取來說,它是正確的非變換矩陣。CN114356417B說明書14/38頁1707處,將至少一個矩陣(圖塊)向外存儲到存儲器中,并且可以在1709處發(fā)生上下文切換。[0166]示例性配置[0167]圖塊配置硬件支持[0168]如上面討論的,通常需要在使用之前配置圖塊使用。例如,可能不需要完全使用所有行和列。在一些實施例中,不僅不配置這些行和列節(jié)省電力,而且該配置可以被用來確定操作是否將生成錯誤。例如,如果M和L不相同,則形式為(N×M)*(L×N)的矩陣乘法通常不起作用。[0169]在使用利用了圖塊的矩陣之前,在一些實施例中,要配置圖塊支持。例如,配置每個圖塊的行數(shù)和列數(shù)、要使用的圖塊等。TILECONFIG指令是對計算機本身的改進,因為它提供了對配置計算機以使用矩陣加速器(作為處理器核心的一部分,或者作為外部設(shè)備)的支持。特別地,TILECONFIG指令的執(zhí)行使得要從存儲器中檢索配置并且將其應(yīng)用于矩陣加速器內(nèi)的矩陣(圖塊)設(shè)置。[0170]圖塊使用配置[0171]圖18圖示了根據(jù)實施例的對圖塊使用的配置的支持。存儲器1801包含要支持的矩陣(圖塊)的圖塊描述1803。[0172]處理器/核心1805的指令執(zhí)行資源1811將圖塊描述1803的各方面存儲到圖塊配置1817中。圖塊配置1817包括調(diào)色板表1813以詳述針對調(diào)色板的什么圖塊被配置(每個圖塊中的行數(shù)和列數(shù))以及矩陣支持正在使用的標記。特別地,指令執(zhí)行資源1811被配置成如由圖塊配置1817所指定的那樣來使用圖塊。指令執(zhí)行資源1811還可以包括機器專用寄存器或配置寄存器以指示圖塊使用。還設(shè)置了附加的值,諸如使用中和起初始值。圖塊配置1817利用(一個或多個)寄存器1819來存儲圖塊使用和配置信息。[0173]圖19圖示了要支持的矩陣(圖塊)的描述的實施例。這是在執(zhí)行STTILECFG指令時調(diào)色板ID被用來索引調(diào)色板表1813,該調(diào)色板表1813按照調(diào)色板ID存儲了圖塊中的字節(jié)數(shù),以及與由該配置所定義的該ID相關(guān)聯(lián)的圖塊的每行字節(jié)數(shù)。[0174]字節(jié)1存儲要存儲在“startRow”寄存器1903中的值,并且字節(jié)2存儲要存儲在寄存器startP1905中的值。為了支持在這些事件之后重新啟動指令,指令存儲這些寄存器的信息。為了支持在諸如上面詳述的中斷事件之后重新啟動指令,指令將信息存儲在這些寄存器中。startRow值指示了應(yīng)該被用于重新啟動的行。startP值指示了當使儲操作的行內(nèi)的方位,并且在一些實施例中,指示了行的下半部分(在一對的下部圖塊中)或行的較高一半(在一對中的較高圖塊中)。通常,不需要行(列)中的方位。二者都設(shè)置為零。[0176]在任何時候沒有重新啟動中斷的矩陣(圖塊)指令,軟件都有責任將startRow和startP值置零。例如,未屏蔽的浮點異常處理程序可能決定在軟件中完成操作,并且將程序計數(shù)器值改到另一指令,通常是下一條指令。在這種情況下,軟件異常處理程序必須將操作系統(tǒng)呈現(xiàn)給它的異常中的startRow和startP值置零,然后使用恢復(fù)指令來重新加載這些值。[0177]字節(jié)3存儲了圖塊1907的對(每個圖塊1b)的指示。[0178]字節(jié)16-17存儲了針對圖塊0的行1913數(shù)和列1915數(shù),字節(jié)18-19存儲了針對圖塊1的行數(shù)和列數(shù)等。換言之,每個2字節(jié)組指定了針對圖塊的行數(shù)和列數(shù)。如果不將2字節(jié)的組用來指定圖塊參數(shù),則它們的值應(yīng)當為零。為比實現(xiàn)限制或調(diào)色板限制更多的圖塊指定圖塊參數(shù)會導(dǎo)致故障。未配置的圖塊被設(shè)置成具有0行0列的初始狀態(tài)。[0179]最后,存儲器中的配置通常以結(jié)束描繪來結(jié)束,諸如若干個連續(xù)字節(jié)全部為零。[0180]示例性圖塊和圖塊配置存儲[0181]圖20(A)-(D)圖示了(一個或多個)寄存器1819的示例。圖20(A)圖示了多個寄存器1819.如所示的,每個圖塊(TMMO2001...TMMN2003)具有單獨的寄存器,其中每個寄存器存儲該特定圖塊的行和列大小。StartP2011和StartRow2013被存儲在單獨的寄存器中。設(shè)置一個或多個狀態(tài)寄存器2015(例如,TILES_CONFIGURED=1)以指示圖塊被配置以供使[0182]圖20(B)圖示了多個寄存器1819.如所示的,每個圖塊的行和列都具有單獨的寄存的寄存器中。設(shè)置一個或多個狀態(tài)寄存器20配置以供使用。[0183]圖20(C)圖示了單個寄存器1819.如所示的,該寄存器存儲了圖塊配置(每個圖塊的行和列)2031,StartP2011和StartRow2013被存儲在作為打包數(shù)據(jù)寄存器的單個寄存器中。設(shè)置一個或多個狀態(tài)寄存器2015(例如,TILES_CO供使用。[0184]圖20(D)圖示了多個寄存器1819.如所示的,單個寄存器存儲了圖塊配置(每個圖塊的行和列)2031.StartP和StartRow被存儲在單獨的寄存器2011和2013中。設(shè)置一個或多[0185]可以考慮其他組合,諸如將初始寄存器組合成單個寄存器,其中它們被分別示出,[0187]如上面提到的,通用矩陣乘法(又稱GEMM)的特殊硬件是改進某些應(yīng)用(諸如,深度學(xué)習(xí))的峰值計算性能(和能量效率)的好選項。只要輸出元素具有足夠的位(即,多于輸入),這些應(yīng)用中的一些(包括深度學(xué)習(xí))可以對具有相對較少位的輸入數(shù)據(jù)元素進行操作而不會損失精確度。[0188]因此,所公開的方法和系統(tǒng)實行16位浮點矩陣點積運算(TILE16BDP),其采用具有16位浮點元素的源矩陣(圖塊),實行點積乘法,并且將所得到的乘積與32位單精度目的地進行累加。[0189]所公開的TILE16BDP指令要由處理器執(zhí)行,該處理器包括獲取電路以獲取具有字段的指令,該字段用以指定操作碼和具有單精度元素的M×N目的地矩陣(圖塊)、M×K第一源矩陣(圖塊)和K×N第二源矩陣(圖塊)的位置,指定的第一和第二源矩陣的元素包括一對偶數(shù)和奇數(shù)16位浮點值,其中該操作碼要指示執(zhí)行電路對于指定的目的地矩陣(圖塊)的每個元素(M,N)而言,將來自指定的第一源矩陣(圖塊)的行M的K對元素和來自指定的第二源矩陣(圖塊)的列N的對應(yīng)的K對元素轉(zhuǎn)換成單精度值,將來自兩個指定的源矩陣(圖塊)的經(jīng)轉(zhuǎn)換的偶數(shù)元素相乘,并且將來自指定的源矩陣(圖塊)的經(jīng)轉(zhuǎn)換的奇數(shù)元素分別相乘,并且然后將那些乘積與元素(M,N)的先前內(nèi)容分別累加成偶數(shù)乘積的一個和以及奇數(shù)乘積的一個和。處理器還將包括其他支持硬件,諸如用以解碼所獲取的指令的解碼電路,以及用以如由操作碼指定的那樣響應(yīng)于經(jīng)解碼的指令的執(zhí)行電路。[0190]圖21是圖示了根據(jù)一些實施例的使用TILE16BDP指令來加速矩陣乘法的框圖。如所示的,指令2101包括下述字段,該字段用以指定操作碼2102(例如,TILE16BDP)和具有單精度元素的M×N目的地矩陣(圖塊)2104、M×K第一源矩陣(圖塊)2106以及K×N第二源矩陣(圖塊)2108的位置,指定的源矩陣具有包括一對16位浮點值的元素。根據(jù)一些實施例,至少[0191]此處,指定的第一源矩陣(圖塊)2112A具有M=4乘K=3的尺寸。指定的第二源矩陣在其他實施例中,它們可以是相等的。[0192]在操作中,處理器2100要響應(yīng)于操作碼2102(TILE16BDP),對于指定的目的地矩陣(圖塊)2122的每個元素(M,N),該響應(yīng)通過使用轉(zhuǎn)換電路2116A將來自指定的第一源矩陣(圖塊)2112A的行M的K對元素,以及使用轉(zhuǎn)換電路2116B將來自指定的第二源矩陣(圖塊)然后,處理器2100要使用乘法電路2118將K個經(jīng)轉(zhuǎn)換的偶數(shù)值相乘在一起,并且將K個經(jīng)轉(zhuǎn)換的奇數(shù)值相乘在一起,并且使用累加電路2120將K個乘積與元素(M,N)的先前內(nèi)容進行累[0193]在這里說明了TILE16BDP指令的性能,以用于在矩陣(圖塊)位置(1,0)處設(shè)置目的地元素。因此,處理器2100要使用轉(zhuǎn)換電路2116A和2116B來將來自指定的第一源矩陣(圖塊)2112A的行M(=1)的K(=3)對元素和來自指定的第二源矩陣(圖塊)2112B的列N(=0)的K(=3)對元素轉(zhuǎn)換成單精度的。然后,處理器2100要使用乘法電路2118將來自兩個指定的源矩陣(圖塊)的經(jīng)轉(zhuǎn)換的偶數(shù)元素相乘,并且將來自指定的源矩陣(圖塊)的經(jīng)轉(zhuǎn)換的奇數(shù)元素分別相乘,并且然后使用累加電路2120來將這些乘積與元素(M,N)的先前內(nèi)容分別累加成偶數(shù)乘積的一個和以及奇數(shù)乘積的一個和,該元素(M,N)在這里是元素C(1,0)。[0194]如所示的,三個箭頭從指定的第一和第二源矩陣(圖塊)中的每一個行進,以指示轉(zhuǎn)換和乘法并行發(fā)生。在一些實施例中,處理器通過并行地生成結(jié)果并將結(jié)果存儲到指定的目的地矩陣(圖塊)的每個元素中來響應(yīng)于經(jīng)解碼的指令。在一些實施例中,生成新值并將其一次一行或一次一列地存儲到目的地中。[0195]所公開的實施例通過允許軟件來實行具有減小的源元素大小的TILE16BDP指令來改進替換的方法,這允許使用更少的存儲器空間和更少的存儲器帶寬,并且改進了某些應(yīng)用的峰值計算性能(和能量效率)。在一些應(yīng)用中(諸如深度學(xué)習(xí)),只要輸出元素具有足夠的位(即,多于輸入),就可以對具有相對較少位的輸入數(shù)據(jù)元素進行操作而不會損失精確[0196]至少參照圖22A-C、23和28A-B來進一步說明和描述用以執(zhí)行TILE16BDP指令的系統(tǒng)和方法。[0197]示例性執(zhí)行[0198]圖22A是圖示了根據(jù)一些實施例的TILE16BDP指令的示例性執(zhí)行的偽代碼。如所示的,指令2201包括操作碼2202(例如,TILE16BDP)和具有單精度元素的M×N目的地矩陣2204、M×K第一源矩陣2206以及K乘N第二源矩陣2208的位置,指定的源矩陣具有包括一對16位浮點值的元素。操作碼2202(TILE16BDP)指示處理器要如偽代碼2200所示的那樣,對于指定的目的地矩陣(圖塊)的每個元素(M,N),將來自指定的第一源矩陣(圖塊)的行M的K對元素以及來自指定的第二源矩陣(圖塊)的列N的K對元素轉(zhuǎn)換成單精度的,將來自兩個指定的源矩陣(圖塊)的經(jīng)轉(zhuǎn)換的偶數(shù)元素相乘,并且將來自兩個指定的源矩陣(圖塊)的經(jīng)轉(zhuǎn)換的奇數(shù)元素分別相乘,并且然后將這些乘積與元素(M,N)的先前內(nèi)容分別累加成偶數(shù)乘積的一個和以及奇數(shù)乘積的一個和。在未示出的其他實施例中,乘法發(fā)生在轉(zhuǎn)換之前。的操作數(shù)(如此處),作為對指定的操作碼的后綴或前綴(星號在本文中被用作指代那些可選的后綴和前綴的縮寫),作為被提供有指令的立即數(shù)的部分(例如,K、M和N均要被指定為32位立即數(shù)中的不同的8位),作為由軟件進行編程的控制寄存器的部分(例如,XTILECONFIG是由任一矩陣配置指令(諸如TILECFG或XRSTORE*指令)加載的寄存器,并且通過矩陣保存指令(諸如XSAVE*)存儲),或者甚至作為架構(gòu)默認值。[0200]指令2201進一步指定目的地矩陣(圖塊)位置2204、第一源矩陣(圖塊)位置2206和第二源矩陣(圖塊)位置2208。每個指定的矩陣(圖塊)位置可以指向存儲器位置、矢量寄存器的集合和圖塊寄存器的集合中的任何一個。[0201]圖22B是圖示了根據(jù)一些實施例的TILE16BDP指令的示例性執(zhí)行的偽代碼。如所示的,指令2211包括操作碼2212(例如,TILE16BDP)和具有單精度元素的M×N目的地矩陣2214、M×K第一源矩陣2216和K×N第二源矩陣2218的位置,指定的源矩陣具有包括一對16位浮點值的元素。偽代碼2210類似于偽代碼2200(圖22A),除了奇數(shù)源元素的乘積在偶數(shù)源元素的乘積之前與目的地元素一起累加之外。照圖24-26進一步說明和描述了TILE16BDP指令的格式。[0203]圖22C是根據(jù)一些實施例的用于與TILE16BDP指令一起使用的示例性輔助函數(shù)的偽代碼。如所示的,偽代碼2220定義了make_fp32()函數(shù)、write_row_and_zero()函數(shù)、zero_upper_rows()函數(shù)和zero_tileconfig_start()函數(shù),全部的這些函數(shù)都由圖22A的TILE16BDP偽代碼使用。照圖24-26進一步說明和描述了TILE16BDP指令的格式。[0205]示例性(一個或多個)執(zhí)行方法[0206]圖23是圖示了響應(yīng)于TILE16BDP指令的處理器的方框流程圖。如流程圖2300所示,在2301處,處理器要使用獲取電路來獲取具有字段的指令,該字段用以指定操作碼和具有單精度元素的M×N目的地矩陣、M×K第一源矩陣和K×N第二源矩陣的位置,指定的源矩陣具有包括一對16位浮點值的元素。[0207]在使用處理器的物理寄存器堆來存儲矩陣(圖塊)的實施例中,由于目的地元素是源元素寬度的兩倍,因此在源中具有一對16位浮點格式允許進行有效使用,當矩陣(圖塊)是矢量寄存器的集合,具有相同類型的矢量寄存器,其是128位xmm寄存器、256位ymm寄存器或512位zmm寄存器。當矩陣被存儲在圖塊寄存器中時出的其他實施例中,具有16位浮點元素的單個源矢量被轉(zhuǎn)換為存儲在寬度為源矢量寬度的一半的目的地矢量中的32位元素。[0208]指定的操作碼要指示執(zhí)行電路對于指定的目的地矩陣的每個元素(M,N),將來自指定的第一源矩陣的行M的k對元素和來自指定的第二源矩陣的列n的k對元素轉(zhuǎn)換成單精度的,將來自兩個指定的源矩陣(圖塊)的經(jīng)轉(zhuǎn)換的偶數(shù)元素相乘,并且將來自兩個指定的源矩陣(圖塊)的經(jīng)轉(zhuǎn)換的奇數(shù)元素分別相乘,并且然后將那些乘積與元素(m,n)的先前內(nèi)容分別累加成偶數(shù)乘積的一個和以及奇數(shù)乘積的一個和。[0209]在2303處,處理器要使用解碼電路來解碼所獲取的指令。例如,由諸如在本文中詳述的解碼電路之類的解碼電路來解碼所獲取的TILE16BDP指令。在圖示系統(tǒng)的上下文中,解碼電路類似于至少參照圖13、14和28A-B所說明和描述的解碼電路。[0210]在2305處,(按照需要)對經(jīng)解碼的指令的執(zhí)行進行調(diào)度,在它可以在不同時間發(fā)生或者根本不發(fā)生的范圍內(nèi),這是可選的(如其虛線邊界指示的)。在2307處,處理器要使用執(zhí)行電路如由操作碼所指定的那樣來響應(yīng)于經(jīng)解碼的指令。[0211]在一些實施例中,指令在2309處被提交或退出,在它可以在不同時間發(fā)生或者根本不發(fā)生的范圍內(nèi),這是可選的(如其虛線邊界指示的)。[0212]參照圖3-14進一步說明和描述了執(zhí)行電路。在一些實施例中,執(zhí)行電路是矩陣運算加速器,諸如被圖示和描述為加速器307(圖3)的加速器。在一些實施例中,執(zhí)行電路是矩陣運算電路,諸如矩陣運算電路405(圖4)、505(圖5)或1213(圖12)以及1327(圖13)。[0213]示例性(一個或多個)指令格式[0214]圖24是圖示了根據(jù)一些實施例的TILE16BDP指令的格式的框圖。如所示的,TILE16BDP指令2400包括字段,該字段用以指定操作碼2402(TILE16BDP*),其指示處理器要對于指定的目的地矩陣的每個元素(M,N)將來自指定的第一源矩陣的行M的K對元素和來自指定的第二源矩陣的列N的K對元素轉(zhuǎn)換成單精度的,將來自兩個指定的源矩陣(圖塊)的經(jīng)轉(zhuǎn)換的偶數(shù)元素相乘,并且將來自兩個指定的源矩陣(圖塊)的經(jīng)轉(zhuǎn)換的奇數(shù)元素分別相乘,并且然后將這些乘積與元素(m,n)的先前內(nèi)容分別累加成偶數(shù)乘積的一個和以及奇數(shù)乘積的一個和。[0215]指令2400進一步包括目的地矩陣(圖塊)位置2404、第一源矩陣(圖塊)位置2406和第二源矩陣(圖塊)位置2408。指定的源矩陣位置和目的地矩陣位置中的每一個可以處于存儲器位置、矢量寄存器的集合和圖塊寄存器的集合中的任一個中。[0216]TILE16BDP指令2400進一步包括若干個可選參數(shù)以控制處理器的行為,該參數(shù)包均是大于或等于4的整數(shù)。[0217]操作碼2402被示出為包括星號,其要傳達的是可以添加附加的前綴和/或后綴以指定指令行為。可以使用對操作碼2402的前綴或后綴來指定指令修飾符2410、2412、2414和2416中的一個或多個。[0218]在一些實施例中,可選指令修飾符2410、2412、2414和2416中的一個或多個被編碼在被可選地包括在指令2400中的立即數(shù)字段(未示出)中。在一些實施例中,經(jīng)由配置/狀態(tài)寄存器(例如,XTILECONFIG)來指定可選指令修飾符2410、2412、2414和2416中的一個或多[0219]當指令沒有指定任何一個或多個可選修飾符2410、2412、2414和2416時,它們有時使用從圖塊架構(gòu)的其他部分繼承的默認值或隱式參數(shù)。[0220]詳細的示例性系統(tǒng)、處理器和仿真[0221]本文中詳述的是用以執(zhí)行上述指令的硬件、軟件等的示例。例如.下面描述的內(nèi)容[0222]指令集[0223]指令集可以包括一個或多個指令格式。給定的指令格式可以定義各種字段(例如,位的數(shù)量、位的位置)以除了其他之外指定了要被實行的操作(例如,操作碼)和要在其上實行操作的(一個或多個)操作數(shù)和/或(一個或多個)其他數(shù)據(jù)字段(例如,掩碼)。一些指令格式通過指令模板(或子格式)的定義而被進一步分解。例如,具有給定指令格式的指令模板可以被定義為具有指令格式的字段的不同子集(所包括的字段通常以相同的次序,但是至少一些具有不同的位方位,因為所包括的字段較少)和/或被定義為具有被不同地解釋的給定字段。因此,ISA的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論