背景技術(shù):
本文描述的實(shí)施例總體上涉及處理器。特別地,本文描述的實(shí)施例總體上涉及莫頓(morton)坐標(biāo)在處理器中的使用。
背景信息
計(jì)算機(jī)系統(tǒng)和其他電子裝置經(jīng)常利用按照數(shù)據(jù)結(jié)構(gòu)組織的數(shù)據(jù)。數(shù)據(jù)結(jié)構(gòu)可以表示數(shù)據(jù)的特定安排或組織。通常在計(jì)算機(jī)系統(tǒng)中使用的一種常見類型的數(shù)據(jù)結(jié)構(gòu)是數(shù)組,諸如二維(2d)數(shù)組。
圖1示出了二維(2d)數(shù)組100的示例,其中數(shù)據(jù)項(xiàng)(例如值7、16、24、27等)被安排在兩個(gè)維度上。代表性地,2d數(shù)據(jù)結(jié)構(gòu)可以表示表格、矩陣等。在該圖示中,所述兩個(gè)維度由第一維度或x軸102以及第二維度或y軸104限定。x軸和y軸相互垂直并且限定將所述數(shù)據(jù)項(xiàng)安排在其中的2d網(wǎng)格。2d數(shù)組中的數(shù)據(jù)項(xiàng)可以通過沿著兩個(gè)軸的x和y索引或坐標(biāo)的值來標(biāo)識(shí)。x坐標(biāo)表示從兩軸相交的原點(diǎn)測量的沿著x軸的距離和/或相對位置,而y坐標(biāo)表示從所述原點(diǎn)沿著y軸測量的距離和/或相對位置。在所示示例中,x坐標(biāo)和y坐標(biāo)具有為0、1、2和3的值。代表性地,坐標(biāo)或索引可以表示行數(shù)和列數(shù)。作為示例,具有值14的數(shù)據(jù)項(xiàng)可以由可以指示所述數(shù)據(jù)項(xiàng)位于第2列第3行的x,y坐標(biāo)(1,2)來標(biāo)識(shí)。類似地,具有值24的數(shù)據(jù)項(xiàng)可以通過將y坐標(biāo)遞減一個(gè)單位獲得x,y坐標(biāo)(1,1)來標(biāo)識(shí)??稍O(shè)想其他示例,其中2d數(shù)據(jù)結(jié)構(gòu)表示笛卡爾(cartesian)坐標(biāo)系,并且坐標(biāo)可以表示笛卡爾坐標(biāo)系中的點(diǎn)的位置。
在計(jì)算機(jī)系統(tǒng)和其他電子裝置中,這樣的數(shù)組和其他數(shù)據(jù)結(jié)構(gòu)可以被存儲(chǔ)在存儲(chǔ)器或其他線性存儲(chǔ)裝置中。用于將2d和其他多維數(shù)組存儲(chǔ)在存儲(chǔ)器中的不同方式是可能的。例如,2d數(shù)組能夠以行優(yōu)先次序存儲(chǔ)。以行優(yōu)先次序,在存儲(chǔ)器中數(shù)組的行是連續(xù)的。例如,數(shù)據(jù)項(xiàng)可以按照次序27、3、8、11、9、24、7、1、8、14、16、2、7、16、4和20存儲(chǔ)在存儲(chǔ)器中。可替代地,2d數(shù)組能夠以列優(yōu)先次序存儲(chǔ)。以列優(yōu)先次序,在存儲(chǔ)器中數(shù)組的列是連續(xù)的。例如,數(shù)據(jù)項(xiàng)可以按照次序27、9、8、7、3、24、14、16、8、7、16、4、11、1、2和20存儲(chǔ)在存儲(chǔ)器中。
附圖說明
可以通過參考以下說明和用于展示多個(gè)實(shí)施例的附圖來最佳地理解本發(fā)明。在附圖中:
圖1示出了二維(2d)數(shù)組的示例。
圖2a示出了映射到圖1的2d數(shù)組的莫頓次序曲線的示例。
圖2b是示出示例2d、3d和4d莫頓坐標(biāo)的框圖。
圖3是可操作用于執(zhí)行莫頓坐標(biāo)調(diào)整指令的實(shí)施例的處理器的實(shí)施例的框圖。
圖4是執(zhí)行莫頓坐標(biāo)調(diào)整指令的實(shí)施例的方法的實(shí)施例的方框流程圖。
圖5是將源3d莫頓坐標(biāo)調(diào)整到結(jié)果/經(jīng)調(diào)整3d莫頓坐標(biāo)以反映給定或所指示的維度減一的示例實(shí)施例的框圖。
圖6是示出用于將源緊縮數(shù)據(jù)操作數(shù)中的2d莫頓坐標(biāo)調(diào)整為結(jié)果緊縮數(shù)據(jù)操作數(shù)中的對應(yīng)經(jīng)調(diào)整2d莫頓坐標(biāo)以反映所指示的給定維度減小的2d莫頓坐標(biāo)調(diào)整操作的示例實(shí)施例的框圖。
圖7是示出用于將源緊縮數(shù)據(jù)操作數(shù)中的3d莫頓坐標(biāo)調(diào)整為結(jié)果緊縮數(shù)據(jù)操作數(shù)中的對應(yīng)經(jīng)調(diào)整3d莫頓坐標(biāo)以反映所指示的給定維度減小的3d莫頓坐標(biāo)調(diào)整操作的示例實(shí)施例的框圖。
圖8是適用于莫頓坐標(biāo)調(diào)整指令的一個(gè)或多個(gè)實(shí)施例的立即數(shù)的特定示例實(shí)施例的框圖。
圖9是可操作用于執(zhí)行莫頓坐標(biāo)調(diào)整指令的實(shí)施例的合適處理器的更詳細(xì)的示例實(shí)施例的框圖。
圖10是莫頓坐標(biāo)調(diào)整指令的實(shí)施例的框圖。
圖11a至圖11c是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的通用向量友好指令格式及其指令模板的框圖。
圖12a和圖12b是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的示例特定向量友好指令格式和操作碼字段的框圖。
圖13a至圖13d是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的示例特定向量友好指令格式及其字段的框圖。
圖14是寄存器架構(gòu)的實(shí)施例的框圖。
圖15a是示出有序流水線的實(shí)施例和寄存器重命名亂序發(fā)出/執(zhí)行流水線的實(shí)施例的框圖。
圖15b是處理器核的實(shí)施例的框圖,所述處理器核包括耦合到執(zhí)行引擎單元的前端單元,并且所述前端單元和執(zhí)行引擎單元都耦合到存儲(chǔ)器單元。
圖16a是單個(gè)處理器核的實(shí)施例、和其與管芯上互連網(wǎng)絡(luò)的連接以及其二級(jí)(l2)高速緩存的本地子集的框圖。
圖16b是圖16a的處理器核的一部分的放大視圖的實(shí)施例的框圖。
圖17是可以具有多于一個(gè)核的、可以具有集成存儲(chǔ)器控制器的、以及可以具有集成圖形的處理器的實(shí)施例的框圖。
圖18是計(jì)算機(jī)架構(gòu)的第一實(shí)施例的框圖。
圖19是計(jì)算機(jī)架構(gòu)的第二實(shí)施例的框圖。
圖20是計(jì)算機(jī)架構(gòu)的第三實(shí)施例的框圖。
圖21是計(jì)算機(jī)架構(gòu)的第四實(shí)施例的框圖。
圖22是根據(jù)本發(fā)明的多個(gè)實(shí)施例的用于將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的軟件指令轉(zhuǎn)換器的使用的框圖。
具體實(shí)施方式
本文公開了莫頓坐標(biāo)調(diào)整指令、用于執(zhí)行所述指令的處理器、當(dāng)處理或執(zhí)行所述指令時(shí)由所述處理器執(zhí)行的方法、以及結(jié)合用于處理或執(zhí)行所述指令的一個(gè)或多個(gè)處理器的系統(tǒng)。在下面的描述中,闡述了許多具體細(xì)節(jié)(例如,具體的指令操作、數(shù)據(jù)格式、處理器配置、微架構(gòu)細(xì)節(jié)、操作序列等)。然而,可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐實(shí)施例。在其他情況下,未詳細(xì)示出公知的電路、結(jié)構(gòu)和技術(shù),以避免模糊對本說明書的理解。
一個(gè)挑戰(zhàn)在于,數(shù)據(jù)項(xiàng)存儲(chǔ)在存儲(chǔ)器或線性存儲(chǔ)裝置中的方式可能會(huì)顯著影響使用所述數(shù)據(jù)項(xiàng)的算法的性能。一方面,一般需要將數(shù)據(jù)項(xiàng)從存儲(chǔ)器讀入處理器,但是一次只能從存儲(chǔ)器將有限數(shù)量的位讀入處理器。例如,通常處理器僅能夠一次從存儲(chǔ)器讀取512位的連續(xù)數(shù)據(jù)(例如,在單次讀取操作中)。取決于數(shù)據(jù)項(xiàng)是以行優(yōu)先次序、列優(yōu)先次序、還是其他次序存儲(chǔ)的,將以連續(xù)的次序讀取不同的數(shù)據(jù)項(xiàng)。例如,如果數(shù)據(jù)項(xiàng)是以行優(yōu)先次序存儲(chǔ)的,則可以按照次序27、3、8、11、9、24等讀取數(shù)據(jù)項(xiàng),直到最大的512位。相反,如果數(shù)據(jù)項(xiàng)是以行優(yōu)先次序存儲(chǔ)的,則可以按照次序27、9、8、7、3、24等讀取數(shù)據(jù)項(xiàng),直到最大的512位。一般地,從存儲(chǔ)器的每次讀取操作可能僅能夠從數(shù)組中獲得感興趣的一些數(shù)據(jù)項(xiàng)。作為示例,尤其是當(dāng)數(shù)組大(例如,至少具有多于512位)時(shí),如果數(shù)據(jù)項(xiàng)是以行優(yōu)先次序存儲(chǔ)的話,甚至不可能在同一讀取操作中從所述數(shù)組的第一列獲得在不同行但在相同列中的相鄰數(shù)據(jù)(例如,數(shù)據(jù)項(xiàng)27和9),即使這些數(shù)據(jù)項(xiàng)在數(shù)組中彼此相鄰。當(dāng)數(shù)據(jù)是以列優(yōu)先次序時(shí),以及對于3d和4d數(shù)組的數(shù)據(jù)的存儲(chǔ),可能會(huì)遇到類似的情況。
所述數(shù)據(jù)項(xiàng)被安排在存儲(chǔ)器中的方式通常還影響將數(shù)據(jù)項(xiàng)有效地高速緩存在處理器的一個(gè)或多個(gè)高速緩存中的能力。對所述(多個(gè))高速緩存中的數(shù)據(jù)項(xiàng)的訪問通常比對存儲(chǔ)器中的數(shù)據(jù)項(xiàng)的訪問具有更低的延遲。然而,即使感興趣的數(shù)據(jù)項(xiàng)位于所述(多個(gè))高速緩存中,如果數(shù)據(jù)項(xiàng)被分散在許多不同的高速緩存線之間,則趨向于導(dǎo)致較差的高速緩存利用。通常,每個(gè)高速緩存線存儲(chǔ)已經(jīng)從存儲(chǔ)器讀取的512位的連續(xù)數(shù)據(jù)。如果數(shù)據(jù)項(xiàng)沒有以對于使用所述數(shù)據(jù)的相關(guān)算法有效的方式安排在存儲(chǔ)器中,則數(shù)據(jù)項(xiàng)在所述高速緩存線中可能是稀疏的。在嚴(yán)重的情況下,每個(gè)高速緩存線可以僅保存感興趣的單個(gè)數(shù)據(jù)項(xiàng)。相反,如果所述數(shù)據(jù)項(xiàng)是以對于特定算法高效的方式安排在存儲(chǔ)器中,則感興趣的數(shù)據(jù)項(xiàng)可以被更密集地緊縮到所述高速緩存線中,其中每個(gè)高速緩存線包含多個(gè)到許多感興趣的數(shù)據(jù)項(xiàng)。這可以有助于提高所述(多個(gè))高速緩存的有效性。類似地,如果所述數(shù)據(jù)項(xiàng)是以對于特定算法高效的方式安排在存儲(chǔ)器中,則在每次讀取操作中至少平均地可以將更多的感興趣的數(shù)據(jù)項(xiàng)目讀入處理器。因此,允許以對特定算法有效的方式將數(shù)據(jù)安排在存儲(chǔ)器中的途徑可以有助于提高性能。
存在各種不同類型的趨向于對相對于其他數(shù)據(jù)具有多維局部性或鄰近性的數(shù)據(jù)進(jìn)行處理的算法。作為一個(gè)示例,圖像處理算法(例如,減少紅眼、壓縮等)通常趨向于一起或同時(shí)處理相鄰、附近或鄰近像素組的數(shù)據(jù)。所述算法對于相鄰像素的塊的數(shù)據(jù)而不是對于單行或列中的所有像素的數(shù)據(jù)(例如,可能是行優(yōu)先次序或列優(yōu)先次序安排中的情況)可能相對更為感興趣。類似地,在許多視頻處理算法(例如,壓縮、視頻監(jiān)控分析、機(jī)器人視覺等)中,通常一起或同時(shí)處理用于附近像素組的數(shù)據(jù)和/或連續(xù)視頻幀的對應(yīng)像素中的數(shù)據(jù)。例如,通常通過存儲(chǔ)這樣的像素之間的差異而不是絕對像素值來實(shí)現(xiàn)壓縮。還趨向于利用具有多維局部性的數(shù)據(jù)的其他應(yīng)用或算法的示例包括但不限于:斷層照相分析、地震分析、幾何建模、矩陣運(yùn)算(例如,矩陣相乘和/或轉(zhuǎn)置)、有限元分析、射線跟蹤、傅里葉變換、并行數(shù)據(jù)構(gòu)建應(yīng)用、以及圖形應(yīng)用等。然而,如以上所討論的,尤其是當(dāng)涉及相對較大的數(shù)組時(shí),行優(yōu)先次序、列優(yōu)先次序、以及數(shù)據(jù)的各種其他安排通常不能為大量利用具有多維局部性的數(shù)據(jù)的應(yīng)用提供對所述數(shù)據(jù)的有效安排。其結(jié)果是,保留多維局部性的組織所述數(shù)據(jù)的其他方式將趨向于為某些應(yīng)用程序提供某些優(yōu)勢。
z次序曲線(也稱為莫頓次序曲線)是能夠在保留數(shù)據(jù)的多維局部性或鄰近性的同時(shí)將多維數(shù)據(jù)或空間(例如,笛卡爾坐標(biāo)系數(shù)據(jù)或空間和/或n維數(shù)歐幾里德(euclidian)數(shù)據(jù)或空間)映射到單一維度的連續(xù)空間填充曲線或函數(shù)。也就是說,莫頓次序曲線可以將2d、3d、4d或其他多維空間中的數(shù)據(jù)以保留數(shù)據(jù)的多維局部性的方式映射到數(shù)據(jù)的線性列表或安排上(例如,在多維空間中具有局部性的數(shù)據(jù)在由莫頓曲線提供的線性列表或安排中也具有局部性)。沿莫頓次序曲線的數(shù)據(jù)的次序稱為z曲線次序或莫頓次序。莫頓次序被反映在每個(gè)點(diǎn)的莫頓代碼或莫頓坐標(biāo)或莫頓索引中。z次序曲線具有線性地連接四個(gè)點(diǎn)的作為基本單位的z形曲線。通過將這些z形曲線或單元中的多個(gè)或許多z形曲線或單元連接在一起以填充2d、3d、4d或其他多維空間來形成整個(gè)z次序空間填充曲線。
圖2a示出了映射到圖1的2d數(shù)組100的z次序曲線或莫頓次序曲線206的示例。如圖所示,多個(gè)z形曲線或單元(在該示例中為四個(gè))可以以線性安排的方式連接在一起以遍歷或填充2d數(shù)組中的所有點(diǎn)。在該示例中,由于在2d數(shù)組中存在十六個(gè)數(shù)據(jù)項(xiàng),所以各自具有四個(gè)點(diǎn)的四個(gè)z形單元完全遍歷2d數(shù)組中的十六個(gè)數(shù)據(jù)項(xiàng)。在圖示中,坐標(biāo)是以十進(jìn)制計(jì)數(shù)法示出的(例如,0、1、2、3等)。坐標(biāo)的等價(jià)二進(jìn)制表示207也被顯示十進(jìn)制坐標(biāo)旁邊的括號(hào)中(例如,000、001、010、011等)。作為示例,十進(jìn)制坐標(biāo)值2等價(jià)于二進(jìn)制坐標(biāo)值“010”。
將莫頓次序曲線映射到數(shù)組涉及確定所述數(shù)組的點(diǎn)或數(shù)據(jù)項(xiàng)的莫頓代碼或坐標(biāo)208。可以通過以固定模式使多個(gè)多維坐標(biāo)的二進(jìn)制表示的位交織來計(jì)算沿莫頓次序曲線的單獨(dú)點(diǎn)的莫頓坐標(biāo)。例如,如果將x坐標(biāo)的第一、第二和第三位分別表示為x1、x2和x3,并且如果y坐標(biāo)的第一、第二和第三位分別表示為y1、y2、y3,則可以通過使所述位交織或“混洗”成次序x1y1x2y2x3y3來計(jì)算點(diǎn)的莫頓坐標(biāo)。為了進(jìn)一步說明,可以通過使這些坐標(biāo)的二進(jìn)制表示的位(即,001,000)交織以獲得值為“000001”的莫頓坐標(biāo)208來找到點(diǎn)(x=1,y=0)的莫頓坐標(biāo)。從右到左,第一、第三和第五位對應(yīng)于x坐標(biāo),而第二、第四和第六位對應(yīng)于y坐標(biāo)。在圖示中,最右側(cè)示出最低有效位或最低階位。類似地,在3d和4d中,可以通過分別使用于三個(gè)和四個(gè)坐標(biāo)的二進(jìn)制表示的位交織來找到3d或4d莫頓坐標(biāo)。可以類似地完成更高的維度。在相反方向上,計(jì)算多維坐標(biāo)的二進(jìn)制表示涉及將莫頓坐標(biāo)的位的反向固定解交織或“去混洗”成分開的坐標(biāo)。例如,莫頓坐標(biāo)x1y1x2y2x3y3可以通過對位x1y1x2y2進(jìn)行解交織來轉(zhuǎn)換成x和y坐標(biāo)的二進(jìn)制表示,以生成為x1x2x3的x坐標(biāo)和為y1y2y3的y坐標(biāo)。為了進(jìn)一步說明,莫頓坐標(biāo)“000001”可以被轉(zhuǎn)換成x坐標(biāo)“001”和y坐標(biāo)“000”的二進(jìn)制表示。類似地,在3d和4d中,可以通過對3d或4d莫頓坐標(biāo)的位進(jìn)行解交織或去混洗來找到三個(gè)或四個(gè)不同坐標(biāo)的二進(jìn)制表示。
圖2b是示出示例6位2d莫頓坐標(biāo)208-1、示例9位3d莫頓坐標(biāo)208-2、以及示例12位4d莫頓坐標(biāo)208-3的框圖。在該示例中,x、y和z坐標(biāo)各自僅用三個(gè)位表示。在其他實(shí)施例中,3d莫頓坐標(biāo)中的x、y和z坐標(biāo)各自可以具有其他數(shù)量的位。例如,對于2d莫頓坐標(biāo),x、y和z坐標(biāo)各自可以具有約七至十六位,以允許具有兩倍的位的2d莫頓坐標(biāo)適應(yīng)32位數(shù)據(jù)元素,或者可以具有約七至三十二位,以允許具有兩倍的位的3d莫頓坐標(biāo)適應(yīng)64位數(shù)據(jù)元素。同樣,對于3d莫頓坐標(biāo),x、y和z坐標(biāo)各自可以具有約七至十位,以允許具有三倍的位的3d莫頓坐標(biāo)適應(yīng)32位數(shù)據(jù)元素,或者可以具有約七至二十一位,以允許3d莫頓坐標(biāo)適應(yīng)64位數(shù)據(jù)元素。類似地,對于4d莫頓坐標(biāo),x、y和z坐標(biāo)各自可以具有約六至八位,以允許具有四倍的位的4d莫頓坐標(biāo)適應(yīng)32位數(shù)據(jù)元素,或者可以具有約六至十六位,以允許4d莫頓坐標(biāo)適應(yīng)64位數(shù)據(jù)元素。
部分由于其表示數(shù)據(jù)的多維局部性的能力,2d、3d、4d和/或其他多維數(shù)組可以被重新安排到對應(yīng)的2d、3d、4d和/或其他多維莫頓次序表示,以便幫助提高某些類型的應(yīng)用的性能。例如,在應(yīng)用對數(shù)據(jù)進(jìn)行處理之前,可以在存儲(chǔ)器中將數(shù)據(jù)從2d、3d或4d數(shù)組重新安排到對應(yīng)的2d、3d或4d莫頓次序表示。在所述應(yīng)用使用莫頓次序?qū)?shù)據(jù)進(jìn)行處理之后,在某些情況下,可能希望的是將2d、3d或4d莫頓次序表示轉(zhuǎn)換回2d、3d或4d數(shù)組。在其他情形下,為了提高性能或出于其他原因,數(shù)據(jù)可能最初是以2d、3d或4d莫頓次序表示來組織的、并且被重新安排到2d、3d或4d數(shù)組。在任何情況下,總有時(shí)候在莫頓次序安排與多維數(shù)組和/或多維空間之間進(jìn)行轉(zhuǎn)換是合適的。然而,這樣的轉(zhuǎn)換一般趨向于是計(jì)算密集的(例如,一般趨向于涉及許多不同坐標(biāo)的位的交織或解交織)。
在其他情況下,雖然數(shù)據(jù)是根據(jù)多維莫頓次序安排來排序的,在多維空間坐標(biāo)中來回移動(dòng)時(shí)在多維莫頓坐標(biāo)中來回移動(dòng)可能是適當(dāng)?shù)?。例如,在分別對應(yīng)于具有不同坐標(biāo)的多維空間中的點(diǎn)的一對多維莫頓次序坐標(biāo)之間移動(dòng)可能是適當(dāng)?shù)?。例如,如圖2a所示,在參考號(hào)203處,可能希望的是從分別對應(yīng)于2d數(shù)組中的點(diǎn)的2d莫頓坐標(biāo)“000110”和2d莫頓坐標(biāo)“000011”移動(dòng),其中x坐標(biāo)從x=2減一到x=1,而多維空間中的所有其他坐標(biāo)(在這種情況下只有y坐標(biāo))保持不變。作為另一示例,如圖2a所示,在參考號(hào)205處,可能希望的是從分別對應(yīng)于2d數(shù)組中的點(diǎn)的2d莫頓坐標(biāo)“001101”和2d莫頓坐標(biāo)“000111”移動(dòng),其中y坐標(biāo)從y=2減一到y(tǒng)=1,而多維空間中的所有其他坐標(biāo)(在這種情況下只有x坐標(biāo))保持不變。注意到,在這兩個(gè)示例中,初始和最終的2d莫頓坐標(biāo)在莫頓次序中不是相繼的(例如,它們分別從“6”變?yōu)椤?”和從“13”變?yōu)椤?”),盡管在其他情況下,初始和最終的2d莫頓坐標(biāo)在莫頓次序可以是相繼的。
存在各種各樣的不同原因,其中在多維莫頓坐標(biāo)中以這種方式來回移動(dòng)可能是所希望或適當(dāng)?shù)?。本發(fā)明的范圍不限于任何已知的此類原因。代表性地,作為一個(gè)可能的示例,在特定算法中可能希望的是減小2d矩陣或數(shù)組的行索引和/或列索引,以便在對圖像進(jìn)行處理時(shí)減少2d圖像的給定行或列中的像素?cái)?shù)等。在一些情況下,可能更有用的是(例如,值得計(jì)算開銷和時(shí)間),將多維莫頓次序安排完全轉(zhuǎn)換成多維空間安排,以使得按莫頓次序以這種方式來回移動(dòng)是不需要的。然而,在其他情況下,可能不值得為完全轉(zhuǎn)換成多維莫頓次序安排花費(fèi)計(jì)算開銷和/或時(shí)間,但能夠在與多維空間中的坐標(biāo)之一的差異(例如減小一個(gè)單位)(例如,在4d空間中的x、y、z或t坐標(biāo)之一的減一)相對應(yīng)的莫頓坐標(biāo)之間移動(dòng)仍然可以是有用的。
由于多維莫頓坐標(biāo)是通過使單獨(dú)多維坐標(biāo)的位交織或混洗形成的,一種可能的途徑是使用一個(gè)或多個(gè)指令來將所述位解交織或去混洗到分開的多維坐標(biāo)中,使用一個(gè)或多個(gè)指令使所述多維坐標(biāo)之一遞減(例如,使x坐標(biāo)遞減),并且然后使用一個(gè)或多個(gè)指令使分開的多維坐標(biāo)的位(包括遞減的x坐標(biāo)的位)重新交織或重新混洗以確定新的對應(yīng)多維莫頓坐標(biāo)。然而,這樣的解交織和重新交織和/或這樣的對使用多個(gè)指令的需求可能趨向于花費(fèi)更多的時(shí)間和/或消耗更多的處理資源和/或消耗更多的功率。本文公開的是多個(gè)單一指令,所述指令可以用于當(dāng)改變(例如,遞減)多維空間的坐標(biāo)(例如,使x坐標(biāo)遞減、使y坐標(biāo)遞減、使z坐標(biāo)遞減、或使t坐標(biāo)遞減等)時(shí)來加速確定新的多維莫頓坐標(biāo)。
圖3是可操作用于執(zhí)行莫頓坐標(biāo)調(diào)整指令312的實(shí)施例的處理器310的實(shí)施例的框圖。在一些實(shí)施例中,所述處理器可以是通用處理器(例如,在臺(tái)式機(jī)、膝上型計(jì)算機(jī)或其他計(jì)算機(jī)中使用的類型的通用微處理器或中央處理單元(cpu))??商娲?,所述處理器可以是專用處理器。合適的專用處理器的示例包括但不限于:網(wǎng)絡(luò)處理器、通信處理器、密碼處理器、圖形處理器、協(xié)處理器、嵌入式處理器、數(shù)字信號(hào)處理器(dsp)、以及控制器(例如微控制器)。所述處理器可以具有以下各項(xiàng)中的任一項(xiàng):各種復(fù)雜指令集計(jì)算(cisc)架構(gòu)、精簡指令集計(jì)算(risc)架構(gòu)、超長指令字(vliw)架構(gòu)、混合架構(gòu)、其他類型的架構(gòu),或者具有不同架構(gòu)的組合(例如,不同的核可以具有不同的架構(gòu))。
在操作過程中,處理器310可以接收莫頓坐標(biāo)調(diào)整指令312。例如,可以從互連上的存儲(chǔ)器獲取或以其他方式接收所述指令。所述指令可以表示處理器的指令集的宏指令、匯編語言指令、機(jī)器代碼指令或其他指令或控制信號(hào)。
再次參考圖3,所述處理器包括解碼單元或解碼器314。所述解碼單元可以接收莫頓坐標(biāo)調(diào)整指令并對其進(jìn)行解碼。莫頓坐標(biāo)調(diào)整指令可以是所述處理器的指令集的一部分。所述解碼單元可以輸出反映、表示相對較高級(jí)別的莫頓坐標(biāo)調(diào)整指令的和/或從其導(dǎo)出的一個(gè)或多個(gè)相對較低級(jí)別的指令或控制信號(hào)(例如,一個(gè)或多個(gè)微指令、微操作、微代碼入口點(diǎn)、解碼指令或控制信號(hào)等)。所述解碼單元可以使用各種不同的機(jī)制來實(shí)現(xiàn),包括但不限于:微代碼只讀存儲(chǔ)器(rom)、查找表、硬件實(shí)現(xiàn)、可編程邏輯陣列(pla)、以及適于實(shí)現(xiàn)解碼單元的其他機(jī)制。
在一些實(shí)施例中,代替直接提供給解碼單元的莫頓坐標(biāo)調(diào)整指令,可以可選地使用指令仿真器、翻譯器、變形器、解釋器或其他指令轉(zhuǎn)換模塊。各種類型的合適的指令轉(zhuǎn)換模塊能夠以軟件、硬件、固件或其組合來實(shí)現(xiàn)。在一些實(shí)施例中,指令轉(zhuǎn)換模塊可以被定位在所述處理器外部,例如在分開的管芯上和/或在存儲(chǔ)器(例如,靜態(tài)、動(dòng)態(tài)或運(yùn)行時(shí)仿真模塊)中。作為示例,指令轉(zhuǎn)換模塊可以接收莫頓坐標(biāo)調(diào)整指令(其可以是第一指令集),并且可以對莫頓坐標(biāo)調(diào)整指令進(jìn)行仿真、翻譯、變形、解釋或以其他方式轉(zhuǎn)換成一個(gè)或多個(gè)對應(yīng)中間指令或控制信號(hào)(其可以是不同的第二指令集)。所述第二指令集的一個(gè)或多個(gè)中間指令或控制信號(hào)可以被提供給解碼單元,所述解碼單元可以將它們解碼成可由處理器的本機(jī)硬件(例如,一個(gè)或多個(gè)執(zhí)行單元)執(zhí)行的一個(gè)或多個(gè)低級(jí)指令或控制信號(hào)。
再次參考圖3,處理器還包括一組緊縮數(shù)據(jù)寄存器318。所述緊縮數(shù)據(jù)寄存器各自可以表示可操作用于存儲(chǔ)緊縮數(shù)據(jù)、向量數(shù)據(jù)或單指令多數(shù)據(jù)(simd)數(shù)據(jù)的管芯上存儲(chǔ)位置。在simd架構(gòu)中,緊縮數(shù)據(jù)指令、向量指令或simd指令可以對多個(gè)數(shù)據(jù)元素或多對數(shù)據(jù)元素同時(shí)或并行地進(jìn)行操作。處理器可以具有并行執(zhí)行硬件,該并行執(zhí)行硬件響應(yīng)于緊縮數(shù)據(jù)指令以同時(shí)或并行地執(zhí)行多個(gè)操作。多個(gè)數(shù)據(jù)元素可以作為緊縮數(shù)據(jù)或向量數(shù)據(jù)被緊縮在一個(gè)寄存器或存儲(chǔ)器位置內(nèi)。在緊縮數(shù)據(jù)中,寄存器或其他存儲(chǔ)位置的位可以在邏輯上劃分為數(shù)據(jù)元素序列。例如,256位寬的緊縮數(shù)據(jù)寄存器可以具有四個(gè)64位寬數(shù)據(jù)元素、八個(gè)32位數(shù)據(jù)元素、十六個(gè)16位數(shù)據(jù)元素等。所述數(shù)據(jù)元素各自可以表示分開的單件數(shù)據(jù)(例如,像素顏色、坐標(biāo)等),所述單件數(shù)據(jù)可以分開地和/或獨(dú)立于其他數(shù)據(jù)元素地操作。所述緊縮數(shù)據(jù)寄存器可以表示軟件和/或編程器可見的架構(gòu)可見或架構(gòu)寄存器、和/或由處理器的指令集的用于標(biāo)識(shí)操作數(shù)的指令指示的寄存器。這些架構(gòu)寄存器與給定微架構(gòu)中的其他非架構(gòu)寄存器(例如,臨時(shí)寄存器、重排序緩沖器、引退寄存器等)形成對照。緊縮數(shù)據(jù)寄存器可以使用已知技術(shù)在不同的微體系結(jié)構(gòu)中以不同的方式實(shí)現(xiàn),并且不限于任何特定類型的設(shè)計(jì)。適合類型的寄存器的示例包括但不限于:專用物理寄存器、使用寄存器重命名的動(dòng)態(tài)分配物理寄存器、及其組合。
在一些實(shí)施例中,所述指令可以明確地指定(例如,通過一個(gè)或多個(gè)字段或一組位)、或者以其他方式指示(例如,隱含地指示)源緊縮數(shù)據(jù)操作數(shù)320。所述源緊縮數(shù)據(jù)操作數(shù)可以包括多個(gè)莫頓坐標(biāo)。所述指令還可以明確地指定(例如,通過一個(gè)或多個(gè)字段或一組位)、或者以其他方式指示有待存儲(chǔ)結(jié)果緊縮數(shù)據(jù)操作數(shù)324的目的存儲(chǔ)位置。作為一個(gè)示例,所述指令可以具有多個(gè)操作數(shù)指定字段來指定用于所述源緊縮數(shù)據(jù)操作數(shù)和目的存儲(chǔ)位置中的一者或多者的寄存器、存儲(chǔ)器單元或其他存儲(chǔ)位置。可替代地,所述源緊縮數(shù)據(jù)操作數(shù)和目的存儲(chǔ)位置中的一者或多者可以可選地對所述指令隱含(例如,對所述指令的操作數(shù)隱含)。作為另一選項(xiàng),用于所述源緊縮數(shù)據(jù)操作數(shù)的存儲(chǔ)位置還可以被重新用作結(jié)果緊縮數(shù)據(jù)操作數(shù)的目的存儲(chǔ)位置(例如,初始對于源操作數(shù)和隨后對于結(jié)果操作數(shù)使用相同的存儲(chǔ)位置對于指令可以是隱含的)。如圖所示,在一些實(shí)施例中,源緊縮數(shù)據(jù)操作數(shù)320可以可選地存儲(chǔ)在第一緊縮數(shù)據(jù)寄存器中,并且結(jié)果緊縮數(shù)據(jù)操作數(shù)可以可選地存儲(chǔ)在第二緊縮數(shù)據(jù)寄存器中,然而這不是必需的??商娲?,可以可選地使用存儲(chǔ)器位置或其他存儲(chǔ)位置。
在一些實(shí)施例中,所述指令還可以指定或以其他方式指示具有所述源緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)所映射到的點(diǎn)的多維空間的維數(shù)。在一些實(shí)施例中,所述指令可操作用于將所述多維空間的所述維數(shù)指示為至少兩個(gè)不同維度中的任一者(例如,二維和三維中的任一者)、或者在一個(gè)實(shí)施例中指示為至少三個(gè)不同維度中的任一者(例如,二維、三維和四維中的任一者)。在一些實(shí)施例中,所述指令可以具有用于指示所述維數(shù)的立即數(shù)(例如,1位可以指示至少兩個(gè)不同維度中的任一者,或者2位可以指示至少三個(gè)或至少四個(gè)不同維數(shù)中的任一者)??商娲兀噶?例如,操作碼)可以專用于給定維數(shù),并且所述指令(例如,操作碼)可以隱含地指示所述維數(shù)。例如,指令集可以包括具有用于不同維數(shù)(例如,二維、三維、四維等)的不同操作碼的不同指令。
在一些實(shí)施例中,所述指令還可以指定或以其他方式指示多維空間的給定維度。所述給定維度可以表示在其上坐標(biāo)位置中存在固定變化(例如在給定維度上的坐標(biāo)單位遞減)的維度。例如,2d、3d或4d空間或坐標(biāo)系的x坐標(biāo)(或y坐標(biāo))可以減一。在一些實(shí)施例中,所述指令可以具有用于指示所述給定維度的一個(gè)或多個(gè)位(例如,立即數(shù))。例如,在2d空間中,可以使用1位來將給定維度指示為兩個(gè)維度中的任一者。作為另一示例,在3d或4d空間中,可以使用2位來將所述維度指示為兩個(gè)或三個(gè)相應(yīng)維度中的任一者。
再次參考圖3,執(zhí)行單元316與解碼單元314和緊縮數(shù)據(jù)寄存器318相耦合。所述執(zhí)行單元可以接收表示莫頓坐標(biāo)調(diào)整指令312和/或從其導(dǎo)出的一個(gè)或多個(gè)經(jīng)解碼或轉(zhuǎn)換的指令或控制信號(hào)。所述執(zhí)行單元還可以接收將包括莫頓坐標(biāo)的源緊縮數(shù)據(jù)操作數(shù)320。所述執(zhí)行單元響應(yīng)于和/或作為所述指令的結(jié)果(例如,響應(yīng)于從所述指令解碼的一個(gè)或多個(gè)指令或控制信號(hào))而可操作用于將結(jié)果緊縮數(shù)據(jù)操作數(shù)324存儲(chǔ)在由所述指令指示的目的地存儲(chǔ)位置中。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)可以包括多個(gè)莫頓坐標(biāo),所述莫頓坐標(biāo)各自對應(yīng)于所述源緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)中的一個(gè)不同莫頓坐標(biāo)。在一些實(shí)施例中,所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)可以被映射到所述多維空間中的與所述源緊縮數(shù)據(jù)操作數(shù)的對應(yīng)莫頓坐標(biāo)將被映射到的點(diǎn)相差由所述指令指示的給定維度的固定變化的點(diǎn)。在一些實(shí)施例中,所述固定變化可以是給定維度上的坐標(biāo)的單位遞減(例如,所述點(diǎn)的x坐標(biāo)可以減一(例如,從x=7到x=6))。在一些實(shí)施例中,可以生成所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo),而不會(huì)對源緊縮數(shù)據(jù)操作數(shù)的與不同維度相對應(yīng)的對應(yīng)莫頓坐標(biāo)的位進(jìn)行解交織(例如,不會(huì)對與x和y維或x、y和z維相對應(yīng)的不同交織位進(jìn)行解交織)。也就是說,給定坐標(biāo)可以在莫頓坐標(biāo)中原位或在適當(dāng)位置遞減。在一些實(shí)施例中,結(jié)果緊縮數(shù)據(jù)操作數(shù)中的至少一個(gè)莫頓坐標(biāo)可能不與源緊縮數(shù)據(jù)操作數(shù)的對應(yīng)莫頓坐標(biāo)成相繼莫頓次序(例如,在圖2a中,可以從相對位置13處的莫頓坐標(biāo)變換到相對位置7處的莫頓坐標(biāo),如參考號(hào)205所示)。在一些實(shí)施例中,結(jié)果可以是圖5-7所示出和描述的結(jié)果中的任一者,然而本發(fā)明的范圍不限于此。
所述執(zhí)行單元和/或處理器可以包括可操作用于執(zhí)行所述莫頓坐標(biāo)調(diào)整指令、和/或響應(yīng)于所述莫頓坐標(biāo)調(diào)整指令和/或因其而存儲(chǔ)所述結(jié)果(例如,響應(yīng)于從所述莫頓坐標(biāo)調(diào)整指令解碼的一個(gè)或多個(gè)指令或控制信號(hào))的具體或特定邏輯(例如,晶體管、集成電路或與固件(例如,存儲(chǔ)在非易失性存儲(chǔ)器中的指令)和/或軟件潛在組合的其他硬件)。作為示例,所述執(zhí)行單元可以包括邏輯單元、算術(shù)邏輯單元等。在一些實(shí)施例中,所述執(zhí)行單元可以利用一個(gè)或多個(gè)掩碼、一個(gè)或多個(gè)移位電路、以及一個(gè)或多個(gè)邏輯電路(例如,and、not等)來執(zhí)行所述指令??商娲?,可以可選地使用本領(lǐng)域已知的其他位操控電路。
為了避免模糊描述,已經(jīng)示出和描述了相對簡單的處理器310。然而,處理器可以可選地包括其他組件。這些組件的可能實(shí)例包括但不限于圖9和/或圖16-19中任一者所示出和描述的組件。各種不同的實(shí)施例可以包括這樣的組件的各種不同的組合和配置。這樣的組件可以彼此耦合,以便允許它們根據(jù)其操作進(jìn)行操作。在一些實(shí)施例中,所有組件可以被包含在處理器的至少一個(gè)核、一些核、核的子集或所有核中。在多個(gè)不同實(shí)施例中,處理器可以具有至少一個(gè)、二個(gè)、四個(gè)、八個(gè)、十六個(gè)、三十二個(gè)、或更多個(gè)核。
圖4是執(zhí)行莫頓坐標(biāo)調(diào)整指令的實(shí)施例的方法430的實(shí)施例的方框流程圖。在多個(gè)不同實(shí)施例中,所述方法可以由處理器、指令處理設(shè)備、或其他數(shù)字邏輯裝置執(zhí)行。在一些實(shí)施例中,圖4的方法可以由圖3的處理器執(zhí)行和/或在其內(nèi)執(zhí)行。本文中針對圖3的處理器所描述的組件、特征和特定可選細(xì)節(jié)也可選地適用于圖4的方法??商娲兀瑘D4的方法可以由相似或不同的處理器或設(shè)備和/或在其內(nèi)執(zhí)行。此外,圖3的處理器可以執(zhí)行與圖4的方法相同、相似或不同的方法。
所述方法包括在框432處接收莫頓坐標(biāo)調(diào)整指令。在多個(gè)不同方面,可以在處理器或其一部分(例如,指令獲取單元、解碼單元、總線接口單元等)處接收所述指令。在多個(gè)不同方面,可以從處理器外和/或管芯外的源(例如,從存儲(chǔ)器、互連等)、或者從處理器上和/或管芯上的源(例如,從指令高速緩存、指令隊(duì)列等)接收指令。所述指令可以指定或以其他方式指示包括多個(gè)莫頓坐標(biāo)的源緊縮數(shù)據(jù)操作數(shù),可以指定或以其他方式指示具有所述莫頓坐標(biāo)被映射到的多個(gè)點(diǎn)的多維空間的維數(shù),可以指定或以其他方式指示所述多維空間的給定維度,并且可以指定或以其他方式指示目的地存儲(chǔ)位置。
在框434處,響應(yīng)于所述指令和/或作為其結(jié)果(例如,響應(yīng)于執(zhí)行指令),可以將結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲(chǔ)在所述目的地存儲(chǔ)位置中。在一些實(shí)施例中,所述結(jié)果緊縮數(shù)據(jù)操作數(shù)可以包括多個(gè)莫頓坐標(biāo),所述莫頓坐標(biāo)各自對應(yīng)于所述源緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)中的一個(gè)不同莫頓坐標(biāo)(例如,在在源操作數(shù)和結(jié)果操作數(shù)內(nèi)的相同的位位置或相對位置)。在一些實(shí)施例中,所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)可以被映射到所述多維空間中的可與所述源緊縮數(shù)據(jù)操作數(shù)的對應(yīng)莫頓坐標(biāo)將被映射到的點(diǎn)相差由所述指令指示的給定維度的固定變化的點(diǎn)。
在一些實(shí)施例中,所述固定變化可以是單位遞減(例如,所述點(diǎn)的x坐標(biāo)可以減一)。在一些實(shí)施例中,所述指令操作用于將所述多維空間的所述維數(shù)指示為至少兩個(gè)不同維度(例如,二維和三維)中的任一者、或者在一個(gè)情況下指示為至少三個(gè)不同維度(例如,二維、三維和四維)中的任一者。在一些實(shí)施例中,所述指令可以具有用于指示所述維數(shù)的立即數(shù)(例如,1位可以指示至少兩個(gè)不同維度中的任一者,或者2位可以指示至少三個(gè)不同維數(shù)中的任一者)。在一些實(shí)施例中,所述指令可以具有用于指示給定維度(例如,在多個(gè)不同實(shí)施例中為至少兩個(gè)、三個(gè)或四個(gè)不同的可能維度中的任一者)的一個(gè)或多個(gè)位(例如,立即數(shù))。在一些實(shí)施例中,可以生成所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo),而不會(huì)對源緊縮數(shù)據(jù)操作數(shù)的與不同維度相對應(yīng)的對應(yīng)莫頓坐標(biāo)的位進(jìn)行解交織(例如,不會(huì)對與x和y維或x、y和z維相對應(yīng)的不同交織位進(jìn)行解交織)。在一些實(shí)施例中,所述源緊縮數(shù)據(jù)操作數(shù)和一個(gè)或多個(gè)結(jié)果緊縮數(shù)據(jù)操作數(shù)可以是圖5-7中的任一者,然而本發(fā)明的范圍不限于此。
所示的方法涉及多項(xiàng)架構(gòu)操作(例如,從軟件角度看可見的架構(gòu)操作)。在其他實(shí)施例中,所述方法可以可選地包括一項(xiàng)或多項(xiàng)微架構(gòu)操作。作為示例,所述指令可以被預(yù)取、存儲(chǔ)在指令高速緩存中、由指令獲取單元獲取、解碼、調(diào)度,源操作數(shù)可以被訪問、相對于其他指令亂序地執(zhí)行,執(zhí)行單元可以執(zhí)行用于實(shí)現(xiàn)所述指令的多項(xiàng)微架構(gòu)操作等。
圖5是將源3d莫頓坐標(biāo)508調(diào)整到結(jié)果/經(jīng)調(diào)整3d莫頓坐標(biāo)508*以反映給定或所指示的維度減一的示例實(shí)施例的框圖。源3d莫頓坐標(biāo)具有9位,其中x、y和z坐標(biāo)各自使用3位。如本文所使用的,x和y和z廣泛地用于表示任何期望的坐標(biāo)或維度。它們不限于任何已知的量,例如熟悉的笛卡爾坐標(biāo)系中的空間坐標(biāo),而是可以用于潛在包括空間、時(shí)間、壓力、溫度、強(qiáng)度、電壓等的任何期望的量。具體地,位0中的x1、位3中的x2和位6中的x3對應(yīng)于x坐標(biāo)或維度。同樣地,位1中的y1、位4中的y2和位7中的y3對應(yīng)于y維。類似地,位2中的z1、位5中的z2和位8中的z3對應(yīng)于z維。其他實(shí)施例可以使用其他數(shù)量的位來表示所述坐標(biāo)。例如,如果將3d莫頓坐標(biāo)包含在32位數(shù)據(jù)元素中,則可以使用7位到10位。作為另一示例,如果要將3d莫頓坐標(biāo)包含在64位數(shù)據(jù)元素中,則可以使用7位到21位或12位到21位。
在所示實(shí)施例中,使z維遞減。在其他實(shí)施例中,可以使x維或y維遞減。由于使z維遞減,可以只需要調(diào)整源莫頓坐標(biāo)中與z維相對應(yīng)的位來實(shí)現(xiàn)z維的遞減。y維和z維的位保持不變。
在一些實(shí)施例中,如參考號(hào)540所示,為了調(diào)整所述莫頓坐標(biāo)以實(shí)現(xiàn)給定或所指示維度的遞減(例如,在這種情況下為z維),可以設(shè)置與所述給定或所指示維度相對應(yīng)的所有最低有效歸零位(即,為二進(jìn)制零的位),所述最低有效歸零位比對應(yīng)于所述給定或所指示維度的最低有效設(shè)置位更低有效。換句話說,這些尾隨歸零位可以從最初的二進(jìn)制零改為二進(jìn)制一。另外,如參考號(hào)542所示,對應(yīng)于所述給定或所指示維度的最低有效設(shè)置位可以被清零或歸零(即,從最初的二進(jìn)制一改為二進(jìn)制零)。這有效地調(diào)整了莫頓坐標(biāo),以反映所述給定或所指示維度減一。
考慮到圖示中所示的具體示例位,在源3d莫頓坐標(biāo)508中,位8中的z3是z維上的最低有效設(shè)置位,因?yàn)槲?中的z2和位2中的z1都被清零或歸零。因此,如參考號(hào)542和結(jié)果/經(jīng)調(diào)整3d莫頓坐標(biāo)508*的位8所示,z3可以被清零或歸零。此外,如參考號(hào)540和結(jié)果/經(jīng)調(diào)整3d莫頓坐標(biāo)508*的位5和為2所示,z2和z1可以被設(shè)置成二進(jìn)制一。這只是一個(gè)說明性示例,但類似的改變可以用于其他位串并且表示其他維度(例如,x或y維)上的遞減。
注意到,可以調(diào)整或改變莫頓坐標(biāo),而不需要對各種不同維度或坐標(biāo)的位進(jìn)行解交織、改變和重新交織。相反,這些位可以在莫頓坐標(biāo)中原位或在適當(dāng)位置進(jìn)行操控。有利地,這可以有助于減少所需的計(jì)算量和/或指令量和/或功率消耗。
圖6是示出用于將源緊縮數(shù)據(jù)操作數(shù)620中的2d莫頓坐標(biāo)(m)調(diào)整為結(jié)果緊縮數(shù)據(jù)操作數(shù)中的對應(yīng)經(jīng)調(diào)整2d莫頓坐標(biāo)以反映所指示的給定維度減小的2d莫頓坐標(biāo)調(diào)整操作650的示例實(shí)施例的框圖。可以響應(yīng)于莫頓坐標(biāo)調(diào)整指令的示例實(shí)施例來執(zhí)行所述操作。
所述指令可以指定或以其他方式指示源緊縮數(shù)據(jù)操作數(shù)620。所述源緊縮數(shù)據(jù)操作數(shù)具有多個(gè)2d莫頓坐標(biāo)(m)。在具體示出的實(shí)施例中,源緊縮數(shù)據(jù)操作數(shù)具有數(shù)量n個(gè)2d莫頓坐標(biāo),標(biāo)記為m1到mn。通常,所述莫頓坐標(biāo)各自可以被存儲(chǔ)在源緊縮數(shù)據(jù)操作數(shù)的不同數(shù)據(jù)元素中。在多個(gè)不同實(shí)施例中,源緊縮數(shù)據(jù)操作數(shù)的寬度可以是64位、128位、256位、512位或1024位,然而本發(fā)明的范圍不限于此。在一些實(shí)施例中,源緊縮數(shù)據(jù)操作數(shù)的數(shù)據(jù)元素可以是32位數(shù)據(jù)元素或64位數(shù)據(jù)元素,然而本發(fā)明的范圍不限于此。源緊縮數(shù)據(jù)操作數(shù)中的數(shù)據(jù)元素和/或莫頓坐標(biāo)的數(shù)量可以是源緊縮數(shù)據(jù)操作數(shù)的位寬除以每個(gè)數(shù)據(jù)元素的位寬。在多個(gè)不同實(shí)施例中,源緊縮數(shù)據(jù)操作數(shù)中可以存在至少兩個(gè)、至少四個(gè)、至少八個(gè)、至少十六個(gè)、至少三十二個(gè)、或多于三十二個(gè)的數(shù)據(jù)元素和/或莫頓坐標(biāo)。
在圖示中,示出了6位2d莫頓坐標(biāo)的示例值。具體地,m1具有值為“000100”的6位2d莫頓坐標(biāo),m2具有值為“000110”的6位2d莫頓坐標(biāo),m3具有值為“001100”的6位2d莫頓坐標(biāo),并且mn具有值為“001110”的6位2d莫頓坐標(biāo)。這些值各自以“y3x3y2x2y1x1”的格式寫,其中最低有效位在右側(cè),并且其中x維的最低有效位是右側(cè)的第一位。
在一些實(shí)施例中,所述指令還可以指定或以其他方式指示具有所述源緊縮數(shù)據(jù)操作數(shù)的莫頓坐標(biāo)所映射到的點(diǎn)的多維空間的維數(shù)646。在該示例中,所述指令指示二維(2d)的維數(shù)。換句話說,源緊縮數(shù)據(jù)操作數(shù)的2d莫頓坐標(biāo)被映射到2d空間中的點(diǎn)。其他實(shí)施例可以指示其他維數(shù)(例如,3d、4d等)。在多個(gè)不同實(shí)施例中,所述維數(shù)可以由所述指令的靈活字段或位靈活地指示或指定、或者可以對所述指令是隱含的(例如,對操作碼是隱含的)。
在一些實(shí)施例中,所述指令還可以指定或以其他方式指示旨在遞減或改變的給定維度648。在該示例中,所述指令指示旨在使x維減一。在替代實(shí)施例中,所述指令代替地指示旨在使y維減一。
可以響應(yīng)于所述指令而(例如,由執(zhí)行單元616)生成和存儲(chǔ)結(jié)果緊縮數(shù)據(jù)操作數(shù)624。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)可以被存儲(chǔ)在可由所述指令指定或以其他方式指示的目的地存儲(chǔ)位置。在多個(gè)不同實(shí)施例中,所述目的地存儲(chǔ)位置可以是緊縮數(shù)據(jù)寄存器、存儲(chǔ)器位置或其他存儲(chǔ)位置。
所述結(jié)果緊縮數(shù)據(jù)操作數(shù)可以包括多個(gè)經(jīng)調(diào)整2d莫頓坐標(biāo)(m*)。在具體示出的實(shí)施例中,源緊縮數(shù)據(jù)操作數(shù)具有數(shù)量n個(gè)2d莫頓坐標(biāo),標(biāo)記為m1*到mn*。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的經(jīng)調(diào)整2d莫頓坐標(biāo)(m*)各自對應(yīng)于源緊縮數(shù)據(jù)操作數(shù)的2d莫頓坐標(biāo)(m)中的一個(gè)不同莫頓坐標(biāo)(例如,在操作數(shù)內(nèi)的對應(yīng)位位置和/或相對位置)。在一些實(shí)施例中,所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的經(jīng)調(diào)整2d莫頓坐標(biāo)(m*)可以被映射到所述多維空間中的與所述源緊縮數(shù)據(jù)操作數(shù)的對應(yīng)2d莫頓坐標(biāo)(m)將被映射到的點(diǎn)相差由所述指令指示的給定維度(例如,x維)的固定變化(例如,減一)的點(diǎn)。
如先前所提及的,在一些實(shí)施例中,為了調(diào)整所述莫頓坐標(biāo)以實(shí)現(xiàn)給定或所指示維度的遞減(例如,在這種情況下為x維),可以設(shè)置與所述給定或所指示維度相對應(yīng)的所有最低有效歸零位(即,為二進(jìn)制零的位),所述最低有效歸零位比對應(yīng)于所述給定或所指示維度的最低有效設(shè)置位更低有效。換句話說,這些尾隨歸零位可以從最初的二進(jìn)制零改為二進(jìn)制一。另外,對應(yīng)于所述給定或所指示維度的最低有效設(shè)置位可以被清零或歸零(即,從最初的二進(jìn)制一改為二進(jìn)制零)。這有效地調(diào)整了2d莫頓坐標(biāo),以反映所述給定或所指示維度減一。
在圖示中,示出了經(jīng)調(diào)整6位2d莫頓坐標(biāo)(m*)的對應(yīng)示例值。具體地,m1*具有值為“000001”的6位2d莫頓坐標(biāo),m2*具有值為“000011”的6位2d莫頓坐標(biāo),m3*具有值為“001001”的6位2d莫頓坐標(biāo),并且mn*具有值為“001011”的6位2d莫頓坐標(biāo)。這些值僅是示例,但是示出了如何可以選擇性地調(diào)整對應(yīng)于所指示的給定維度(例如,在該示例中為x維)的位,同時(shí)使與其他非遞減維度相對應(yīng)的位保持不變。
圖7是示出用于將源緊縮數(shù)據(jù)操作數(shù)720中的3d莫頓坐標(biāo)(m)調(diào)整為結(jié)果緊縮數(shù)據(jù)操作數(shù)中的對應(yīng)經(jīng)調(diào)整3d莫頓坐標(biāo)以反映所指示的給定維度減小的3d莫頓坐標(biāo)調(diào)整操作752的示例實(shí)施例的框圖??梢皂憫?yīng)于莫頓坐標(biāo)調(diào)整指令的示例實(shí)施例來執(zhí)行所述操作。
圖7的操作與圖6的操作具有一定的相似之處,并且區(qū)別主要在于坐標(biāo)是3d而不是2d。為了避免模糊描述,將主要描述用于圖7的操作的不同的和/或附加的特征,而不重復(fù)與圖6的操作相關(guān)的所有可選的相似或共同的特征和細(xì)節(jié)。然而,應(yīng)當(dāng)理解的是,除非另有說明或以其他方式清楚地顯示,否則圖6的前述特征和細(xì)節(jié)(包括變型和替代)也可以可選地適用于圖7的操作。
如前所述,所述指令可以指定或以其他方式指示源緊縮數(shù)據(jù)操作數(shù)720。所述源緊縮數(shù)據(jù)操作數(shù)具有多個(gè)3d莫頓坐標(biāo)(m)。除了具有3d莫頓坐標(biāo)而不是2d莫頓坐標(biāo)之外,源緊縮數(shù)據(jù)操作數(shù)可以與圖6的源緊縮數(shù)據(jù)操作數(shù)相似或相同。在圖示中,示出了9位3d莫頓坐標(biāo)的示例值。具體地,m1具有值為“000101000”的9位3d莫頓坐標(biāo),并且mn具有值為“100111010”的9位3d莫頓坐標(biāo)。如前所述,這些值各自以“y3x3y2x2y1x1”的格式被寫。
在一些實(shí)施例中,所述指令還可以指定或以其他方式指示具有所述源緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)所映射到的點(diǎn)的多維空間的維數(shù)746。在該示例中,所述指令指示三維(3d)的維數(shù)。換句話說,源緊縮數(shù)據(jù)操作數(shù)的3d莫頓坐標(biāo)被映射到3d空間(例如,3d笛卡爾坐標(biāo)系和/或3d歐幾里得空間)中的點(diǎn)。其他實(shí)施例可以指示其他維數(shù)(例如,2d、4d、5d等)。在多個(gè)不同實(shí)施例中,所述維數(shù)可以由所述指令的靈活字段或位靈活地指示或指定、或者可以對所述指令是隱含的(例如,對操作碼是隱含的)。
在一些實(shí)施例中,所述指令還可以指定或以其他方式指示將遞減或改變的給定維度748。在該示例中,所述指令指示將使x維減一。在替代實(shí)施例中,所述指令代替地指示將使y維減一。
可以響應(yīng)于所述指令而(例如,由執(zhí)行單元716)生成和存儲(chǔ)結(jié)果緊縮數(shù)據(jù)操作數(shù)724。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)可以包括多個(gè)經(jīng)調(diào)整3d莫頓坐標(biāo)m1*至mn*,所述莫頓坐標(biāo)各自對應(yīng)于所述源緊縮數(shù)據(jù)操作數(shù)的3d莫頓坐標(biāo)(m)中的一個(gè)不同莫頓坐標(biāo)。在一些實(shí)施例中,所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的經(jīng)調(diào)整3d莫頓坐標(biāo)(m*)可以被映射到所述多維空間中的與所述源緊縮數(shù)據(jù)操作數(shù)的對應(yīng)3d莫頓坐標(biāo)(m)將被映射到的點(diǎn)相差所指示的給定維度(例如,x維)的固定變化(例如,減一)的點(diǎn)。
所述莫頓坐標(biāo)可以如前所述地進(jìn)行調(diào)整。在圖示中,示出了經(jīng)調(diào)整9位3d莫頓坐標(biāo)(m*)的對應(yīng)示例值。具體地,m1具有值為“000100001”的9位2d莫頓坐標(biāo),并且mn具有值為“100110011”的9位3d莫頓坐標(biāo)。這些值僅是示例,但是示出了如何可以選擇性地調(diào)整對應(yīng)于所指示的給定維度(例如,在該示例中為x維)的位,同時(shí)使與其他非遞減維度相對應(yīng)的位保持不變。
以下示出了用于實(shí)現(xiàn)名稱為zorderprev的莫頓坐標(biāo)調(diào)整指令的實(shí)施例的偽代碼的一個(gè)可能示例。在一些實(shí)施例中,執(zhí)行單元的硬件或邏輯可以被設(shè)計(jì)為使用移位邏輯、掩碼邏輯、以及用于實(shí)現(xiàn)與所述偽代碼中示出的邏輯操作相似或相同的邏輯操作(例如,and、not等)的邏輯來實(shí)現(xiàn)所述指令??商娲兀绢I(lǐng)域技術(shù)人員將理解基于本公開實(shí)現(xiàn)所述指令的其它設(shè)計(jì)。
zorderprevdst,src1,imm8
dst=src1;
unsignedlongmask=1<<imm8[2:3];
while(mask&&!(mask&dst)){//查找尾隨零
dstλ=mask;//將它們變?yōu)橐?/p>
mask=mask<<imm8[0:1];}//將掩碼移位到下一個(gè)坐標(biāo)值
if(mask)dst&=-mask;//第一個(gè)非零變?yōu)榱?借位)
圖8是適用于莫頓坐標(biāo)調(diào)整指令的一個(gè)或多個(gè)實(shí)施例的立即數(shù)854的特定示例實(shí)施例的框圖。所述立即數(shù)的一個(gè)或多個(gè)位可以表示維數(shù)說明符846。例如,在圖示中,立即數(shù)的兩個(gè)位(例如為[1:0])可以表示維數(shù)說明符846。所述維數(shù)說明符可以指定具有與所述指令相關(guān)聯(lián)的莫頓坐標(biāo)所映射到的點(diǎn)的多維度空間的維數(shù)。在一個(gè)實(shí)施例中,這兩個(gè)位可以具有用于指定或指示2d的維數(shù)的第一二進(jìn)制值(例如,“10”)、用于指定或指示3d的維數(shù)的不同的第二二進(jìn)制值(例如,“11”)。在一些實(shí)施例中,這兩個(gè)位可以可選地具有用于指定或指示4d的仍然不同的第三二進(jìn)制值(例如,“00”)。在一些實(shí)施例中,這兩個(gè)位可以可選地具有用于指定或指示仍然不同的維數(shù)(例如,5d)的仍然不同的第四二進(jìn)制值(例如,“01”)。在其他實(shí)施例中,所述指令可操作用于僅允許一個(gè)維數(shù)、或者僅允許兩個(gè)不同的維數(shù)。所述多維度空間的這些不同維數(shù)還可以被認(rèn)為是莫頓坐標(biāo)的維數(shù)(例如,不論莫頓坐標(biāo)是2d、3d、4d等)。
所述立即數(shù)的一個(gè)或多個(gè)位可以表示維度說明符848。例如,在圖示中,立即數(shù)的兩個(gè)位(例如為[3:2])可以表示維度說明符848。所述維度說明符可以指定或指示有待改變(例如,遞減)的維度。在一個(gè)實(shí)施例中,這兩個(gè)位可以具有用于指定或指示第一維度(例如,x維)的第一二進(jìn)制值(例如,“00”)、可以具有用于指定或指示第二維度(例如,y維)的不同的第二二進(jìn)制值(例如,“01”)、并且可以具有用于指定或指示第三維度(例如,z維)的仍然不同的第三二進(jìn)制值(例如,“10”)??商娲?,如果所述指令僅用于支持兩個(gè)不同的維度,則單個(gè)位可以可選地用于指示這兩個(gè)不同維度中的任一者。在一些實(shí)施例中(例如,在4d的情況下),這兩個(gè)位可以具有用于指定或指示第四維度(例如,t維)的仍然不同的第四二進(jìn)制值(例如,“11”)。
所示的立即數(shù)是8位立即數(shù),然而本發(fā)明的范圍不限于此。替代實(shí)施例可以使用2位、4位、6位、16位或其他立即數(shù)。在其他實(shí)施例中,維數(shù)說明符和/或維度說明符各自可以使用更少或更多的位。此外,可以可選地使用與所示的位不同的位。
圖9是可操作用于執(zhí)行莫頓坐標(biāo)調(diào)整指令的實(shí)施例的合適處理器的更詳細(xì)的示例實(shí)施例的框圖。所述處理器包括核980。所述處理器可以可選地具有多個(gè)核(例如至少兩個(gè)、至少四個(gè)、至少八個(gè)、至少三十個(gè)等)。在一些情況下,所有核都可以與所示的核相同,或者在其他情況下,一些核可以是不同的(例如,具有不同的組件或指令集)。在某些情況下,所有的核都可以執(zhí)行如本文所公開的莫頓坐標(biāo)調(diào)整指令,或者在其他情況下,只有一些核可以。核980包括用于預(yù)測分支程序流的分支預(yù)測單元981。所述分支預(yù)測單元與指令預(yù)取單元982耦合。所述指令預(yù)取單元可以通過與其耦合的存儲(chǔ)器單元989從外部存儲(chǔ)器預(yù)取或以其他方式接收包括所述莫頓坐標(biāo)調(diào)整指令的多個(gè)指令。一級(jí)(l1)指令高速緩存與所述指令預(yù)取單元耦合。l1指令高速緩存可以高速緩存或以其他方式存儲(chǔ)經(jīng)預(yù)取或以其他方式接收的包括所述莫頓坐標(biāo)調(diào)整指令的指令。指令獲取單元984與l1指令高速緩存和解碼單元914耦合。所述指令獲取單元可以從l1指令高速緩存中獲取或以其他方式接收包括莫頓坐標(biāo)標(biāo)調(diào)指令的多個(gè)指令,并且將包括莫頓位調(diào)整指令的所述指令提供給所述解碼單元。所述解碼單元可以與本文所描述的其他解碼單元相同或相似。
所述處理器包括一個(gè)或多個(gè)寄存器堆單元918。通常,所述(多個(gè))寄存器堆單元可以包括各種不同類型的寄存器,例如緊縮數(shù)據(jù)寄存器、通用寄存器、狀態(tài)或標(biāo)志寄存器、控制或配置寄存器等。在使用亂序(ooo)執(zhí)行的實(shí)施例中,所述處理器還可以可選地包括與所述(多個(gè))寄存器堆單元耦合的寄存器重命名和/或分配器單元,所述寄存器重命名和/或分配器單元用于分配資源并且對多個(gè)寄存器(例如,與所述莫頓坐標(biāo)調(diào)整指令相關(guān)聯(lián)的緊縮數(shù)據(jù)寄存器)執(zhí)行寄存器重命名。此外,在ooo執(zhí)行的情況下,所述處理器可以可選地包括與所述解碼單元、重命名/分配單元以及一個(gè)或多個(gè)執(zhí)行單元916耦合的一個(gè)或多個(gè)調(diào)度器單元986。所述(多個(gè))調(diào)度器單元可以對所述執(zhí)行單元的操作進(jìn)行調(diào)度。所述執(zhí)行單元中的至少一者可以與本文所描述的其他執(zhí)行單元相同或相似。通常,所述處理器可以可選地具有多個(gè)不同類型的執(zhí)行單元,例如整數(shù)執(zhí)行單元、浮點(diǎn)執(zhí)行單元、向量執(zhí)行單元、一個(gè)或多個(gè)存儲(chǔ)器存取單元987或總線接口單元等。在使用亂序(ooo)執(zhí)行的實(shí)施例中,所述處理器還可以可選地包括與所述寄存器堆單元和重命名/分配器單元985耦合的用于引退或提交指令的引退或提交單元991。所述處理器可以包括用于緩沖或以其他方式存儲(chǔ)包括多個(gè)數(shù)據(jù)元素和/或操作數(shù)的數(shù)據(jù)的l1數(shù)據(jù)高速緩存單元974,所述數(shù)據(jù)元素和/或操作數(shù)用于包括所述莫頓坐標(biāo)標(biāo)調(diào)指令的多個(gè)指令??梢钥蛇x地包括二級(jí)(l2)高速緩存單元990,并且可以可選地由多個(gè)核共享。所述l2高速緩存單元可以存儲(chǔ)數(shù)據(jù)和包括所述莫頓坐標(biāo)調(diào)整指令的多個(gè)指令。所述處理器還可以可選地包括用于高速緩存地址翻譯數(shù)據(jù)的一個(gè)或多個(gè)翻譯后備緩沖器(translationlookasidebuffer,未示出)。在使用亂序(ooo)執(zhí)行的實(shí)施例中,所述處理器還可以可選地包括用于對多個(gè)執(zhí)行結(jié)果進(jìn)行重新排序的重排序緩沖器(未示出)和/或一個(gè)或多個(gè)預(yù)留站(未示出)。處理器的各種實(shí)施例可以包括這些組件中的一些或全部組件的各種不同的組合和配置。實(shí)施例不限于任何已知的這種組合或配置。
圖10是莫頓坐標(biāo)調(diào)整指令1012的實(shí)施例的框圖。所述指令包括操作代碼或操作碼1080。所述操作碼可以表示可操作用于標(biāo)識(shí)有待執(zhí)行的指令和/或操作(例如,基于多維空間或多維坐標(biāo)系中的給定坐標(biāo)的單位遞減來調(diào)整莫頓坐標(biāo))的多個(gè)位或一個(gè)或多個(gè)字段。
所述指令還包括用于明確地指定用于存儲(chǔ)源緊縮數(shù)據(jù)操作數(shù)的寄存器、存儲(chǔ)器位置或其他存儲(chǔ)位置的源操作數(shù)說明符1082。所述指令還包括用于明確地指定用于存儲(chǔ)結(jié)果緊縮數(shù)據(jù)操作數(shù)的目的地寄存器或其他目的地存儲(chǔ)位置的可選的目的地存儲(chǔ)位置說明符1084。作為示例,這些說明符各自可以包括用于明確地指定寄存器、存儲(chǔ)器位置或其他存儲(chǔ)位置的地址的一組位或一個(gè)或多個(gè)字段??商娲?,代替指令具有用于這些存儲(chǔ)位置中的每一個(gè)的明確說明符,所述指令可以可選地具有用于所述源操作數(shù)和目的地存儲(chǔ)位置中的一者或多者的一個(gè)或多個(gè)隱含存儲(chǔ)位置(例如,對所述指令的操作碼是隱含的)。例如,對所述源操作數(shù)和目的地存儲(chǔ)位置之一使用給定的固定寄存器的操作數(shù)對于所述指令可以是隱含的,從而給定的固定寄存器不需要被明確指定。作為另一示例,將相同寄存器或其他存儲(chǔ)位置(例如,由所述指令一次明確指定)重新使用用于所述源操作數(shù)和目的地存儲(chǔ)位置兩者來存儲(chǔ)所述結(jié)果緊縮數(shù)據(jù)操作數(shù)可以是隱含的(例如,隱式源/目的地寄存器)。
在一些實(shí)施例中,所述指令可以可選地包括坐標(biāo)說明符1086。所述坐標(biāo)說明符可以指定2d、3d、4d或其他多維空間的有待遞減或減小的特定坐標(biāo)。例如,所述坐標(biāo)說明符可以指定將減小x坐標(biāo)、或者將減小y坐標(biāo)。在一些實(shí)施例中,所述指令可以可選地包括維數(shù)說明符1088。所述維數(shù)說明符可以指定莫頓曲線或坐標(biāo)的維數(shù)(例如,源緊縮數(shù)據(jù)操作數(shù)中的莫頓坐標(biāo)是2d、3d、4d還是其他多維度莫頓坐標(biāo))。在一些實(shí)施例中,坐標(biāo)指定符1086和維數(shù)說明符1088可以可選地包括在所述指令的立即數(shù)中(例如,4位、6位或8位立即數(shù))??商娲兀鴺?biāo)指定符和維數(shù)說明符中的一者或多者可以是所述指令的其他非立即數(shù)的位。在又一替代實(shí)施例中,可以可選地為所述指令固定(例如,為操作碼固定)所述坐標(biāo)和/或維數(shù)中的一者或多者。例如,可以為一個(gè)維數(shù)(例如,2d)提供一個(gè)指令(例如,一個(gè)操作碼),可以為另一維數(shù)(例如3d)提供另一個(gè)指令(例如,另一個(gè)操作碼),等等。作為另一示例,可以為一個(gè)坐標(biāo)(例如,x坐標(biāo))提供一個(gè)指令(例如,一個(gè)操作碼),可以為另一坐標(biāo)(例如y坐標(biāo))提供另一個(gè)指令(例如,另一個(gè)操作碼),等等。
應(yīng)當(dāng)理解的是,這僅僅是合適指令的一個(gè)說明性示例。替代實(shí)施例可以包括所示字段/說明符的子集,可以添加附加字段/說明符,可以與某些字段/說明符重疊等。例如,所述指令可以可選地具有其他字段或位,例如,用于指示32位或64位執(zhí)行狀態(tài)或模式的位。此外,不所示的字段/說明符的次序和安排不是必須的。所述字段/說明符可以不同地重新安排。此外,字段/說明符不需要包括連續(xù)的位序列,而是可以包括非連續(xù)或分開的位。在一些實(shí)施例中,指令格式可以具有如本文別處所公開的vex或evex編碼或指令格式和屬性,然而本發(fā)明的范圍不限于此。以下將進(jìn)一步討論有關(guān)vex和evex編碼和格式的進(jìn)一步細(xì)節(jié)。
指令集包括一個(gè)或多個(gè)指令格式。給定指令格式限定各個(gè)字段(位的數(shù)目、位的位置)以便在其他事物中指定有待執(zhí)行的操作(操作碼)以及對其有待執(zhí)行所述操作的所述(多個(gè))操作數(shù)。。通過指令模板(或子格式)的定義,一些指令格式被進(jìn)一步細(xì)分。例如,給定指令格式的指令模板可以被定義為具有指令格式的字段的不同子集(所包含的字段通常是按相同的次序,但是至少有一些具有不同的位位置,因?yàn)榘^少的字段)和/或被定義為具有不同解釋的給定字段。因此,使用給定的指令格式(并且如果定義了就以所述指令格式的指令模板中的給定指令格式)來表示isa的每個(gè)指令,并且所述指令包括用于指定操作和操作數(shù)的多個(gè)字段。例如,示例性add指令具有特定的操作碼和指令格式,所述指令格式包括用于指定用于選擇操作數(shù)(源1/目的地和源2)的操作碼字段和操作數(shù)字段;并且指令流中此add指令的出現(xiàn)將在選擇特定操作數(shù)的操作數(shù)字段中具有特定內(nèi)容。已經(jīng)發(fā)布和/或公布了一組引用高級(jí)向量擴(kuò)展(avx)(avx1和avx2)以及使用向量擴(kuò)展(vex)編碼方案的simd擴(kuò)展(例如,參見英特爾
示例性指令格式
本文描述的所述(多個(gè))指令的實(shí)施例能夠以不同的格式實(shí)現(xiàn)。另外,以下詳述示例性系統(tǒng)、架構(gòu)、以及流水線。所述(多個(gè))指令的實(shí)施例可以在這樣的系統(tǒng)、架構(gòu)、以及流水線上執(zhí)行,但不限于所詳述的實(shí)施例。
vex指令格式
vex編碼允許指令具有多于兩個(gè)的操作數(shù),并且允許simd向量寄存器長于128位。vex前綴的使用提供了三個(gè)操作數(shù)(或更多)的語法。例如,以前的兩個(gè)操作數(shù)指令執(zhí)行諸如a=a+b的操作,這重寫了源操作數(shù)。使用vex前綴允許操作數(shù)執(zhí)行諸如a=b+c的非破壞性操作。
圖11a示出了包括vex前綴1102、實(shí)際操作碼字段1130、modr/m字節(jié)1140、sib字節(jié)1150、移位字段1162以及imm81172的avx指令格式。圖11b示出了圖11a中的哪些字段組成完整的操作碼字段1174和基礎(chǔ)操作字段1142。圖11c示出了圖11a中哪些字段組成寄存器索引字段1144。
vex前綴(字節(jié)0-2)1102以三字節(jié)形式編碼。第一字節(jié)是格式字段1140(vex字節(jié)0,位[7:0]),其包含顯式c4字節(jié)值(用于區(qū)分c4指令格式的唯一值)。第二和第三字節(jié)(vex字節(jié)1-2)包括提供特定能力的多個(gè)位字段。具體地,rex字段1105(vex字節(jié)1,位[7-5])由vex.r位字段(vex字節(jié)1,位[7]-r)、vex.x位字段(vex字節(jié)1,位[6]-x)和vex.b位字段(vex字節(jié)1,位[5]-b)組成。指令的其他字段對如本領(lǐng)域已知的(rrr,xxx和bbb)編碼寄存器索引的低3位進(jìn)行編碼,以便可以通過添加vex.r、vex.x、以及vex.b來形成rrrr、xxxx、以及bbbb。操作碼映射字段1115(vex字節(jié)1,位[4:0]-mmmmm)包括用于對隱含的前導(dǎo)操作碼字節(jié)進(jìn)行編碼的內(nèi)容。w字段1164(vex字節(jié)2,位[7]-w)用符號(hào)vex.w表示,并且根據(jù)指令提供不同的功能。vex.vvvv1120(vex字節(jié)2,位[6:3]-vvvv)的作用可以包括以下內(nèi)容:1)vex.vvvv對第一源寄存器操作數(shù)進(jìn)行編碼,以反向(1s補(bǔ)碼)形式指定,并且對于具有2個(gè)或更多個(gè)源操作數(shù)的指令有效;2)vex.vvvv對目的地寄存器操作數(shù)進(jìn)行編碼,對于某些向量移位以1s補(bǔ)碼形式指定;或者3)vex.vvvv不對任何操作數(shù)進(jìn)行編碼,所述字段被保留并且應(yīng)包含1111b。如果vex.l1168大小字段(vex字節(jié)2,位[2]-l)=0,則vex.l表示128位向量;如果vex.l=1,則vex.l表示256位向量。前綴編碼字段125(vex字節(jié)2,位[l:0]-pp)為所述基礎(chǔ)操作字段提供多個(gè)附加位。
實(shí)際操作碼字段1130(字節(jié)3)也稱為操作碼字節(jié)。在此字段中指定所述操作碼的一部分。
modr/m字段1140(字節(jié)4)包括mod字段1142(位[7-6])、reg字段1144(位[5-3])、以及r/m字段1146(位[2-0])。reg字段1144的作用可以包括如下:對目的地寄存器操作數(shù)或源寄存器操作數(shù)(rrrr的rrr)進(jìn)行編碼,或者被視為操作碼擴(kuò)展并且不用于對任何指令操作數(shù)進(jìn)行編碼。r/m字段1146的作用可以包括如下:對引用存儲(chǔ)器地址的指令操作數(shù)進(jìn)行編碼,或?qū)δ康牡丶拇嫫鞑僮鲾?shù)或源寄存器操作數(shù)進(jìn)行編碼。
比例索引基址(sib)-比例字段1150(字節(jié)5)的內(nèi)容包括用于存儲(chǔ)器地址生成的ss1152(位[7-6])。關(guān)于寄存器索引xxxx和bbbb,先前已經(jīng)參考sib.xxx1154(位[5-3])和sib.bbb1156(位[2-0])的內(nèi)容。
移位字段1162和立即數(shù)字段(imm8)1172包含地址數(shù)據(jù)。
通用向量友好指令格式
向量友好指令格式是適用于向量指令的指令格式(例如,存在某些特定于向量操作的字段)。雖然描述了通過所述向量友好指令格式使向量運(yùn)算和標(biāo)量運(yùn)算均受支持的實(shí)施例,但是替代實(shí)施例僅使用向量運(yùn)算向量友好指令格式。
圖12a和圖12b是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的通用向量友好指令格式及其指令模板的框圖。圖12a是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的通用向量友好指令格式及其a類指令模板的框圖;而圖12b是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的通用向量友好指令格式及其b類指令模板的框圖。具體地,為通用向量友好指令格式1200限定了a類和b類指令模板,所述指令模板都不包括存儲(chǔ)器訪問1205指令模板和存儲(chǔ)器訪問1220指令模板。在向量友好指令格式的上下文中的術(shù)語“通用”是指不綁定到任何特定指令集的指令格式。
雖然將描述本發(fā)明的實(shí)施例,其中向量友好指令格式支持以下各項(xiàng):具有32位(4字節(jié))或64位(8字節(jié))數(shù)據(jù)元素寬度(或大小)的64字節(jié)向量操作數(shù)長度(或大小)(并且因此,64字節(jié)向量由16個(gè)雙字大小元素或者8個(gè)四字大小元素組成);具有16位(2字節(jié))或8位(1字節(jié))數(shù)據(jù)元素寬度(或大小)的64字節(jié)向量操作數(shù)長度(或大小);具有32位(4字節(jié))、64位(8字節(jié))、16位(2字節(jié))或8位(1字節(jié))數(shù)據(jù)元素寬度(或大小)的32字節(jié)向量操作數(shù)長度(或大小);以及具有32位(4字節(jié))、64位(8字節(jié))、16位(2字節(jié))或8位(1字節(jié))數(shù)據(jù)元素寬度(或大小)的16字節(jié)向量操作數(shù)長度(或大小);替代實(shí)施例可以支持具有更多、更少或不同的數(shù)據(jù)元素寬度(例如,128位(16字節(jié))數(shù)據(jù)元素寬度)的更多、更少和/或不同的向量操作數(shù)大小(例如,256字節(jié)向量操作數(shù))。
圖12a中的a類指令模板包括:1)在無存儲(chǔ)器訪問1205指令模板中,示出了無存儲(chǔ)器訪問,完全舍入控制式操作1210指令模板和無存儲(chǔ)器訪問,數(shù)據(jù)變換式操作1215指令模板;以及2)在存儲(chǔ)器訪問1220指令模板中,示出了存儲(chǔ)器訪問,時(shí)效性的1225指令模板和存儲(chǔ)器訪問,非時(shí)效性的1230指令模板。圖12b中的b類指令模板包括:1)在無存儲(chǔ)器訪問1205指令模板中,示出了無存儲(chǔ)器訪問,寫掩碼控制、部分舍入控制式操作1212指令模板和無存儲(chǔ)器訪問、寫掩碼控制、vsize式操作1217指令模板;以及2)在存儲(chǔ)器訪問1220指令模板中,示出了存儲(chǔ)器訪問,寫掩碼控制1227指令模板。
通用向量友好指令格式1200包括以下按照圖12a和圖12b所示的次序列出的以下字段。
格式字段1240-該字段中的特定值(指令格式標(biāo)識(shí)符值)唯一地標(biāo)識(shí)所述向量友好指令格式,并且因此在指令流中出現(xiàn)向量友好指令格式的指令。如此,在僅具有通用向量友好指令格式的指令集不需要該字段的情況下,該字段是任性的。
基礎(chǔ)操作字段1242-其內(nèi)容區(qū)分不同的基礎(chǔ)操作。
寄存器索引字段1244-其內(nèi)容直接或通過地址生成來指定源操作數(shù)和目的地操作數(shù)的位置,無論是在寄存器還是存儲(chǔ)器中。這些包含足夠數(shù)量的位以從pxq(例如32x512、16x128、32x1024、64x1024)寄存器堆中選擇n個(gè)寄存器。雖然在一個(gè)實(shí)施例中,n可以是多達(dá)三個(gè)源和一個(gè)目的地寄存器,但替代實(shí)施例可以支持更多或更少的源和目的地寄存器(例如,可以支持多達(dá)兩個(gè)源(其中這些源之一也用作目的地),可以支持多達(dá)三個(gè)來源(其中一個(gè)源也用作目的地),可以支持多達(dá)兩個(gè)源和一個(gè)目的地)。
修飾符字段1246-其內(nèi)容區(qū)分通用向量指令格式的指令的出現(xiàn),所述指令指定來自不是通用向量指令格式的指令的存儲(chǔ)器訪問;也就是說,在無存儲(chǔ)器訪問1205指令模板語存儲(chǔ)器訪問1220指令模板之間。存儲(chǔ)器訪問操作讀取和/或?qū)懘鎯?chǔ)器層級(jí)(在一些情況下,使用多個(gè)寄存器中的值指定所述源和/或目的地址),而無存儲(chǔ)器訪問操作不讀取和/或?qū)懘鎯?chǔ)器層級(jí)(例如,所述源和目的地是寄存器)。雖然在一個(gè)實(shí)施例中,該字段還選擇三種不同的方式來執(zhí)行存儲(chǔ)器地址計(jì)算,但替代實(shí)施例可以支持更多、更少或不同的方式來執(zhí)行存儲(chǔ)器地址計(jì)算。
擴(kuò)充操作字段1250-其內(nèi)容區(qū)分各種不同操作中除了基礎(chǔ)操作之外的哪一種有待被執(zhí)行。該字段是特定于上下文的。在本發(fā)明的一個(gè)實(shí)施例中,該字段被劃分為類字段1268、阿爾法字段1252、以及貝塔字段1254。擴(kuò)充操作字段1250允許在單個(gè)指令而不是2個(gè)、3個(gè)或4個(gè)指令中執(zhí)行常見的操作組。
比例字段1260-其內(nèi)容允許索引字段的內(nèi)容按比例縮放以用于存儲(chǔ)器地址生成(例如,對于地址生成,使用2比例*索引+基址)。
移位字段1262a-其內(nèi)容作存儲(chǔ)器地址生成的一部分(例如,對于地址生成,使用2比例*索引+基址+移位)。
移位因子字段1262b(注意,移位字段1262a直接并置在移位因子字段1262b上指示使用了一者或另一者)-其內(nèi)容用作地址生成的一部分;所述移位因子字段指定有待由存儲(chǔ)器訪問(n)的大小來縮放的移位因子,其中n是存儲(chǔ)器訪問中的字節(jié)數(shù)(例如,對于地址生成,使用2比例*索引+基址+經(jīng)縮放移位)。冗余的低次序位被忽略,并且因此,移位因子字段的內(nèi)容乘以存儲(chǔ)器操作數(shù)總大小(n),以便產(chǎn)生用于計(jì)算有效地址的最終移位?;谕暾牟僮鞔a字段1274(在本文后面描述)和數(shù)據(jù)操作字段1254c,由運(yùn)行時(shí)的處理器硬件確定n的值。移位字段1262a和移位因子字段1262b從不用于無存儲(chǔ)器訪問1205指令模板和/或不同實(shí)施例可以僅實(shí)現(xiàn)兩者之一或一個(gè)都不實(shí)現(xiàn)的意義上說是可選的。
數(shù)據(jù)元素寬度字段1264-其內(nèi)容區(qū)分多個(gè)數(shù)據(jù)元素寬度中的哪一個(gè)有待被使用(在一些實(shí)施例中,針對所有指令;在其他實(shí)施例中,僅針對一些指令)。該字段從其在如果僅支持一個(gè)數(shù)據(jù)元素寬度和/或使用所述操作碼的一些方面來支持多個(gè)數(shù)據(jù)元素寬度的情況下則不需要的意義上說是可選的。
寫掩碼字段1270-其內(nèi)容基于每個(gè)數(shù)據(jù)元素位置控制目的地向量操作數(shù)中的數(shù)據(jù)元素位置是否反映基礎(chǔ)操作和擴(kuò)充操作的結(jié)果。a類指令模板支持合并寫掩碼,而b類指令模板支持合并和歸零寫掩碼。當(dāng)合并時(shí),向量掩碼允許在執(zhí)行(由所述基礎(chǔ)操作和擴(kuò)充操作指定的)任何操作期間保護(hù)目的地中的任何元素集合免受更新;在另一實(shí)施例中,在對應(yīng)的掩碼位具有0的情況下保留目的地的每個(gè)元素的舊值。相比之下,當(dāng)歸零時(shí),向量掩碼允許在執(zhí)行(由所述基礎(chǔ)操作和擴(kuò)充操作指定的)任何操作期間保護(hù)目的地中的任何元素歸零;在一個(gè)實(shí)施例中,當(dāng)對應(yīng)的掩碼位具有0值時(shí),將目的地的元素設(shè)置為0。該功能的子集是控制正在執(zhí)行的操作的向量長度(即正在修改的元素的跨度,從第一個(gè)到最后一個(gè))的能力;然而,所修改的元素不必是連續(xù)的。因此,寫掩模字段1270允許部分向量操作,包括加載、存儲(chǔ)、算術(shù)、邏輯等。雖然描述了本發(fā)明的多個(gè)實(shí)施例,其中寫掩模字段的1270內(nèi)容選擇多個(gè)寫掩碼寄存器中的包含有待使用的寫掩碼的一個(gè)寫掩碼寄存器(并且因此寫掩碼字段的1270內(nèi)容間接地標(biāo)識(shí)要執(zhí)行的掩碼),替代實(shí)施例代替地或另外允許掩模寫字段的1270內(nèi)容直接指定有待執(zhí)行的掩碼。
立即數(shù)字段1272-其內(nèi)容允許立即數(shù)的指定。該字段從其不存在于不支持立即數(shù)的通用向量友好格式的實(shí)現(xiàn)中并且不存在于不使用立即數(shù)的指令中的意義上說是可選的。
類字段1268-其內(nèi)容區(qū)分不同類別的指令。參考圖12a和圖12b,該字段的內(nèi)容在a類和b類指令之間進(jìn)行選擇。在圖12a和圖12b中,使用圓角方格指示字段(例如,圖12a和圖12b中分別為類字段1268的a類字段1268a和b類字段1268b)中存在特定值。
a類指令模板
在無存儲(chǔ)器訪問1205a類指令模板的情況下,阿爾法字段1252被解釋為rs字段1252a,其內(nèi)容區(qū)分所述不同擴(kuò)充操作類型中的哪一種有待執(zhí)行(例如,舍入1252a.1和數(shù)據(jù)變換1252a.2分別被指定用于無存儲(chǔ)器訪問舍入式操作1210和無存儲(chǔ)器訪問數(shù)據(jù)變換式操作1215指令模板),而貝塔字段1254區(qū)分所指定類型的操作中的哪一個(gè)有待執(zhí)行。在無存儲(chǔ)器訪問1205指令模板中,不存在比例字段1260、移位字段1262a、以及移位比例字段1262b。
無存儲(chǔ)器訪問指令模板-完全舍入控制式操作
在無存儲(chǔ)器訪問完全舍入控制式操作1210指令模板中,貝塔字段1254被解釋為舍入控制字段1254a,其(多項(xiàng))內(nèi)容提供靜態(tài)舍入。雖然在本發(fā)明的所描述的實(shí)施例中,舍入控制字段1254a包括抑制所有浮點(diǎn)異常(sae)字段1256和舍入操作控制字段1258,但替代實(shí)施例可以支持并可以將這兩個(gè)概念編碼到同一個(gè)字段中、或者僅具有這些概念/字段中的一者或另一者(例如,可以只具有舍入操作控制字段1258)。
sae字段1256-其內(nèi)容區(qū)分是否禁用異常事件報(bào)告;當(dāng)sae字段的1256內(nèi)容表示抑制被啟用時(shí),給定指令不會(huì)報(bào)告任何類型的浮點(diǎn)異常標(biāo)志并且不引發(fā)任何浮點(diǎn)異常處理程序。
舍入操作控制字段1258-其內(nèi)容區(qū)分一組舍入操作中的哪一個(gè)要執(zhí)行(例如,上入、下舍、朝向零舍入以及舍入到最近整數(shù))。因此,舍入操作控制字段1258允許基于每個(gè)指令改變舍入模式。在本發(fā)明的其中處理器包括用于指定舍入模式的控制寄存器的一個(gè)實(shí)施例中,舍入操作控制字段的1250內(nèi)容覆蓋所述寄存器的值。
無存儲(chǔ)器訪問指令模板-數(shù)據(jù)變換式操作
在無存儲(chǔ)器訪問數(shù)據(jù)變換式操作1215指令模板中,貝塔字段1254被解釋為數(shù)據(jù)變換字段1254b,其內(nèi)容區(qū)分多項(xiàng)數(shù)據(jù)變換的哪一項(xiàng)有待執(zhí)行(例如,無數(shù)據(jù)變換、混合、廣播)。
在存儲(chǔ)器訪問1220a類指令模板的情況下,阿爾法字段1252被解釋為驅(qū)逐提示字段1252b,其內(nèi)容區(qū)分驅(qū)逐提示中的哪一個(gè)有待使用(在圖12a中,時(shí)效性的1252b.1和非時(shí)效性的1252b.2分別被指定用于存儲(chǔ)器訪問時(shí)效性的1225指令模板和存儲(chǔ)器訪問非時(shí)效性的1230指令模板),而貝塔字段1254被解釋為數(shù)據(jù)操控字段1254c,其內(nèi)容區(qū)分多項(xiàng)數(shù)據(jù)操作操作(也稱為原語)中的哪一些有待執(zhí)行(例如,無操控;廣播;源的向上轉(zhuǎn)換;以及目的地的向下轉(zhuǎn)換)。存儲(chǔ)器訪問1220指令模板包括比例字段1260、以及可選的移位字段1262a或移位比例字段1262b。
向量存儲(chǔ)器指令通過轉(zhuǎn)換支持對來存儲(chǔ)器執(zhí)行向量加載和矢量存儲(chǔ)。與常規(guī)向量指令一樣,向量存儲(chǔ)器指令以數(shù)據(jù)元素方式傳送來自存儲(chǔ)器的數(shù)據(jù)或?qū)?shù)據(jù)傳送到存儲(chǔ)器,實(shí)際傳送的元素由被選擇為寫掩碼的向量掩碼的內(nèi)容決定。
存儲(chǔ)器訪問指令模板-時(shí)效性的
時(shí)效性的數(shù)據(jù)是可能很快重新使用足以從高速緩存中受益的數(shù)據(jù)。然而,這是一個(gè)提示,并且不同的處理器能夠以不同的方式實(shí)現(xiàn)所述時(shí)效性的數(shù)據(jù),包括完全忽略提示。
存儲(chǔ)器訪問指令模板-非時(shí)效性的
非時(shí)效性的數(shù)據(jù)是在一級(jí)高速緩存中不太可能很快重新使用足以從高速緩存中受益的數(shù)據(jù),并且應(yīng)優(yōu)先考慮驅(qū)逐。然而,這是一個(gè)提示,并且不同的處理器能夠以不同的方式實(shí)現(xiàn)所述時(shí)效性的數(shù)據(jù),包括完全忽略提示。
b類指令模板
在b類指令模板的情況下,阿爾法字段1252被解釋為寫掩碼控制(z)字段1252c,其內(nèi)容區(qū)分由寫掩碼字段1270控制的寫掩碼應(yīng)為合并還是歸零。
在無存儲(chǔ)器訪問1205b類指令模板的情況下,貝塔字段1254的一部分被解釋為rl字段1257a,其內(nèi)容區(qū)分所述不同擴(kuò)充操作類型中的哪一種有待執(zhí)行(例如,舍入1257a.1和向量長度(vsize)1252a.2分別被指定用于無存儲(chǔ)器訪問寫掩碼操作部分舍入控制式操作1212指令模塊和無存儲(chǔ)器訪問寫掩碼控制vsize式操作1217指令模板),而貝塔字段1254的其余部分區(qū)分所指定類型的操作中的哪一個(gè)有待執(zhí)行。在無存儲(chǔ)器訪問1205指令模板中,不存在比例字段1260、移位字段1262a、以及移位比例字段1262b。
在無存儲(chǔ)器訪問寫掩碼操作部分舍入控制式操作1210指令模塊中,貝塔字段1254的其余部分被解釋為舍入操作字段1259a,并且異常事件報(bào)告被禁用(給定指令不報(bào)告任何類型的浮點(diǎn)異常標(biāo)志并且不引發(fā)任何浮點(diǎn)異常處理程序)。
舍入操作控制字段1259a(就像舍入操作控制字段1258一樣)-其內(nèi)容區(qū)分一組舍入操作中的哪一個(gè)要執(zhí)行(例如,上入、下舍、朝向零舍入以及舍入到最近整數(shù))。因此,舍入操作控制字段1259a允許基于每個(gè)指令改變舍入模式。在本發(fā)明的其中處理器包括用于指定舍入模式的控制寄存器的一個(gè)實(shí)施例中,舍入操作控制字段的1250內(nèi)容覆蓋所述寄存器的值。
在無存儲(chǔ)器訪問寫掩碼控制vsize式操作1217指令模板中,貝塔字段1254的其余部分被解釋為向量長度字段1259b,其內(nèi)容區(qū)分多個(gè)數(shù)據(jù)向量長度的哪一個(gè)有待執(zhí)行(例如,128、256或512字節(jié))。
在存儲(chǔ)器訪問1220b類指令模板的情況下,貝塔字段1254的一部分被解釋為廣播字段1257b,其內(nèi)容區(qū)分是否要執(zhí)行廣播式數(shù)據(jù)操縱操作,而貝塔字段1254的其余部分被解釋為向量長度字段1259b。存儲(chǔ)器訪問1220指令模板包括比例字段1260、以及可選的移位字段1262a或移位比例字段1262b。
關(guān)于通用向量友好指令格式1200,示出了包括格式字段1240、基礎(chǔ)操作字段1242以及數(shù)據(jù)元素寬度字段1264的完整操作碼字段1274。盡管示出了完整操作碼字段1274包括所有這些字段的一個(gè)實(shí)施例,但在不支持所有這些字段的實(shí)施例中完整操作碼字段1274包括比所有這些字段更少的字段。完整操作碼字段1274提供操作代碼(操作碼)。
擴(kuò)充操作字段1250、數(shù)據(jù)元素寬度字段1264以及寫掩碼字段1270允許基于每個(gè)指令以通用向量友好指令格式指定這些特征。
寫掩碼字段和數(shù)據(jù)元素寬度字段的組合創(chuàng)建了多個(gè)類型化指令,因?yàn)樗鼈冊试S基于不同數(shù)據(jù)元素寬度應(yīng)用掩碼。
在a類和b類中發(fā)現(xiàn)的各種指令模板在不同情況下都是有益的。在本發(fā)明的一些實(shí)施例中,不同處理器或處理器內(nèi)的不同的核僅支持a類、僅支持b類或支持兩類。例如,旨在用于通用計(jì)算的高性能通用亂序核可以僅支持b類,旨在主要用于圖形和/或科學(xué)(吞吐量)計(jì)算的核可以僅支持a類,并且旨在用于支持兩者的核可以支持兩者(當(dāng)然,具有來自兩類的模板和指令的一些混合而不是來自兩類的所有模板和指令的核是在本發(fā)明的范圍內(nèi))。此外,單個(gè)處理器可以包括多個(gè)核,所有這些核都支持相同的類,或者其中不同的核支持不同的類。例如,在具有分開的圖形核和通用核的處理器中,旨在主要用于圖形和/或科學(xué)計(jì)算的圖形核之一可以僅支持a類,而通用核中的一者或多者可以是高性能通用核,其中亂序執(zhí)行和寄存器重命名旨在用于僅支持類b的通用計(jì)算。不具有分開的圖形核的另一處理器可以包括支持a類和b類兩者的更為通用的有序或亂序核。當(dāng)然,在本發(fā)明的不同實(shí)施例中,來自一類的特征也可以在另一類中實(shí)現(xiàn)。以高級(jí)語言寫的程序?qū)⒈环湃?例如,及時(shí)編譯或靜態(tài)編譯)到各種不同的可執(zhí)行形式中,包括:1)僅具有由用于執(zhí)行的目標(biāo)處理器支持的類的指令的形式;或2)具有使用所有類別的指的不同組合寫的替代例程并且具有控制流程代碼的形式,所述控制流程代碼基于當(dāng)前正在執(zhí)行代碼的處理器所支持的指令來選擇要執(zhí)行的例程。
示例性特定向量友好指令格式
圖13是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的示例特定向量友好指令格式的框圖。圖13示出了特定向量友好指令格式1300,所述特定向量友好指令格式從其指定所述字段的位置、大小、解釋和次序以及某些字段的值的意義上說是特定的。可以使用特定向量友好指令格式1300來擴(kuò)展x86指令集,并且因此所述字段中的一些字段與現(xiàn)有的x86指令集及其擴(kuò)展(例如,avx)中使用的字段相似或相同。該格式與現(xiàn)有的帶有擴(kuò)展的x86指令集的前綴編碼字段、實(shí)際操作碼字節(jié)字段、modr/m字段、sib字段、移位字段、以及立即數(shù)字段保持一致。示出了來自圖12的從圖13映射到其中的字段。
應(yīng)當(dāng)理解的是,盡管為了說明的目的地,在通用向量友好指令格式1200的上下文中參考特定向量友好指令格式1300來描述本發(fā)明的實(shí)施例,但是本發(fā)明不限于特定向量友好指令格式1300,除非聲稱。例如,通用向量友好指令格式1200考慮了各種字段的各種可能的大小,而特定向量友好指令格式1300被示出為具有特定大小的字段。作為特定示例,雖然數(shù)據(jù)元素寬度字段1264被示為特定向量友好指令格式1300中的一位字段,但本發(fā)明不限于此(即,通用向量友好指令格式1200考慮了其他大小的數(shù)據(jù)元素寬度字段1264)。
通用向量友好指令格式1200包括以下按照圖13a所示的次序列出的以下字段。
evex前綴(字節(jié)0-3)1302以四字節(jié)形式編碼。
格式字段1240(evex字節(jié)0,位[7:0])-第一字節(jié)(evex字節(jié)0)是格式字段1240,并且所述第一字節(jié)包含0x62(在本發(fā)明的一個(gè)實(shí)施例中,用于區(qū)分向量友好指令格式的唯一值)。
第二至第四字節(jié)(evex字節(jié)1-3)包括提供特定能力的多個(gè)位字段。
rex字段1305(evex字節(jié)1,位[7-5])由evex.r位字段(evex字節(jié)1,位[7]-r)、evex.x位字段(evex字節(jié)1,位[6]-x)和1257bex字節(jié)1,位[5]-b)組成。evex.r、evex.x和evex.b位字段提供與對應(yīng)的vex位字段相同的功能,并且使用1s補(bǔ)碼形式進(jìn)行編碼,即zmm0被編碼為1111b,zmm15被編碼為0000b。指令的其他字段對如本領(lǐng)域已知的(rrr,xxx和bbb)編碼寄存器索引的低3位進(jìn)行編碼,以便可以通過添加evex.r、evex.x、以及evex.b來形成rrrr、xxxx、以及bbbb。
rex’字段1210-這是rex’字段1210的第一部分并且是用于對擴(kuò)展的32寄存器集的較高16或較低16進(jìn)行編碼的evex.r’位字段(evex字節(jié)1,位[4]-r’)。在本發(fā)明的一個(gè)實(shí)施例中,該位以及如下所指示的其他位以位反轉(zhuǎn)格式存儲(chǔ),以(在眾所周知的x8632位模式中)從bound指令區(qū)分誰的實(shí)際操作碼字節(jié)為62,但是在modr/m字段中不接受mod字段中的11的值;本發(fā)明的替代實(shí)施例不以反轉(zhuǎn)格式存儲(chǔ)該位和下面的指示的其他位。使用值1來對較低的16個(gè)寄存器進(jìn)行編碼。換句話說,r’rrrr是通過將evex.r’、evex.r和來自其他字段的另一rrr組合而形成的。
操作碼映射字段1315(evex字節(jié)1,位[3:0]-mmmm)-其內(nèi)容對隱含的前導(dǎo)操作碼字節(jié)(0f、0f38、或0f3)進(jìn)行編碼。
數(shù)據(jù)元素寬度字段1264(evex字節(jié)2,位[7]-w)-用符號(hào)evex.w表示。evex.w用于定義數(shù)據(jù)類型(32位數(shù)據(jù)元素或64位數(shù)據(jù)元素)的粒度(大小)。
evex.vvvv1320(evex字節(jié)2,位[6:3]-vvvv)-evex.vvvv的作用可以包括以下內(nèi)容:1)evex.vvvv對第一源寄存器操作數(shù)進(jìn)行編碼,以反向(1s補(bǔ)碼)形式指定,并且對于具有2個(gè)或更多個(gè)源操作數(shù)的指令有效;2)evex.vvvv對目的地寄存器操作數(shù)進(jìn)行編碼,對于某些向量移位以1s補(bǔ)碼形式指定;或者3)evex.vvvv不對任何操作數(shù)進(jìn)行編碼,所述字段被保留并且應(yīng)包含1111b。因此,evex.vvvv字段1320對以反轉(zhuǎn)(1s補(bǔ)碼)形式存儲(chǔ)的第一源寄存器說明符的4個(gè)低次序位進(jìn)行編碼。取決于指令,使用另外不同的evex位字段將說明符大小擴(kuò)展到32個(gè)寄存器。
evex.u1268類字段(evex字節(jié)2,位[2]-u)-如果evex.u=0,則所述類字段表示a類或evex.u0;如果evex.u=1,則所述類字段表示b類或evex.u1。
前綴編碼字段1325(evex字節(jié)2,位[1:0]-pp)-為所述基礎(chǔ)操作字段提供多個(gè)附加位。除了為evex前綴格式的傳統(tǒng)sse指令提供支持之外,所述前綴編碼字段還具有壓縮simd前綴的優(yōu)點(diǎn)(而不是要求一個(gè)字節(jié)來表示simd前綴,evex前綴只需要2位)。在一個(gè)實(shí)施例中,為了支持使用傳統(tǒng)格式和evex前綴格式的simd前綴(66h、f2h、f3h)的傳統(tǒng)sse指令,這些傳統(tǒng)simd前綴被編碼到simd前綴編碼字段中;并且在運(yùn)行時(shí)在提供給解碼器的pla之前擴(kuò)展到傳統(tǒng)simd前綴中(因此,pla可以同時(shí)執(zhí)行這些傳統(tǒng)指令的傳統(tǒng)格式和evex格式,而無需修改)。雖然較新的指令可以將evex前綴編碼字段的內(nèi)容的直接用作操作碼擴(kuò)展,但是為了一致性,某些實(shí)施例以類似的方式擴(kuò)展但允許由這些傳統(tǒng)simd前綴指定不同的含義。替代實(shí)施例可以重新設(shè)計(jì)pla以支持2位simd前綴編碼,并且因此不需要擴(kuò)展。
阿爾法字段1252(evex字節(jié)3,位[7]-eh;也稱為evex.eh、evex.rs、evex.rl、evex寫掩碼控制和evex.n;也用α表示)-如前所述,該字段是特定于上下文的。
貝塔字段1254(evex字節(jié)3,位[6:4]-sss,也稱為evex.s2-0、evex.r2-0、evex.rr1、evex.ll0、evex.llb;也用βββ表示)-如前所述,該字段是特定于上下文的。
rex’字段1210-這是rex’字段的其余部分并且是可以用于對擴(kuò)展的32寄存器集的較高16或較低16進(jìn)行編碼的evex.v’位字段(evex字節(jié)3,位[3]-v’)。該位是以位反轉(zhuǎn)格式存儲(chǔ)的。使用值1來對較低的16個(gè)寄存器進(jìn)行編碼。換句話說,v’vvvv是通過組合evex.v’、evex.vvvv形成的。
寫掩碼字段1270(evex字節(jié)3,位[2:0]-kkk)-其內(nèi)容指定寫掩碼寄存器中的寄存器的索引,如前所述。在本發(fā)明的一個(gè)實(shí)施例中,特定值evex.kkk=000具有特定的行為,意味著沒有寫掩碼用于特定指令(這能夠以各種方式實(shí)現(xiàn),包括使用硬連線到所有或繞過掩碼硬件的硬件的寫掩碼)。
實(shí)際操作碼字段1330(字節(jié)4)也稱為操作碼字節(jié)。在此字段中指定所述操作碼的一部分。
modr/m字段1340(字節(jié)5)包括mod字段1342、reg字段1344、以及r/m字段1346。如前所述,mod字段的1342內(nèi)容在存儲(chǔ)器訪問和無存儲(chǔ)器訪問操作之間進(jìn)行區(qū)分。reg字段1344的作用可以歸結(jié)為兩種情況:對目的地寄存器操作數(shù)或源寄存器操作數(shù)進(jìn)行編碼,或者被視為操作碼擴(kuò)展并且不用于對任何指令操作數(shù)進(jìn)行編碼。r/m字段1346的作用可以包括如下:對引用存儲(chǔ)器地址的指令操作數(shù)進(jìn)行編碼,或?qū)δ康牡丶拇嫫鞑僮鲾?shù)或源寄存器操作數(shù)進(jìn)行編碼。
比例索引基址(sib)字節(jié)(字節(jié)6)-如前所述,比例字段的1250內(nèi)容用于存儲(chǔ)器地址生成。sib.xxx1354和sib.bbb1356-這些字段的內(nèi)容先前已經(jīng)參考了寄存器索引xxxx和bbbb。
移位字段1262a(字節(jié)7-10)-當(dāng)mod字段1342包含10時(shí),字節(jié)7-10是移位字段1262a,并且所述移位字段與傳統(tǒng)32位移位(disp32)一樣工作并且以字節(jié)粒度工作。
移位因子字段1262b(字節(jié)7)-當(dāng)mod字段1342包含01時(shí),字節(jié)7是移位因子字段1262b。這個(gè)字段的位置與傳統(tǒng)的x86指令集8位移位(disp8)的位置相同,所述字段以字節(jié)粒度工作。由于disp8是擴(kuò)展符號(hào),它只能在-128和127字節(jié)偏移之間尋址;就64字節(jié)高速緩存線而言,disp8使用只能設(shè)置四個(gè)非常有用的值-128、-64、0和64的8位;由于通常需要更大的范圍,因此使用disp32;然而,disp32需要4個(gè)字節(jié)。與disp8和disp32相比,移位因子字段1262b是disp8的重新解釋;當(dāng)使用移位因子字段1262b時(shí),實(shí)際移位由移位因子字段的內(nèi)容乘以存儲(chǔ)器操作數(shù)訪問(n)的大小來確定。這種類型的移位稱為disp8*n。這減少了平均指令長度(用于移位的單個(gè)字節(jié),但具有更大的范圍)。這樣的壓縮移位是基于有效移位是存儲(chǔ)訪問粒度的倍數(shù)的假設(shè),并且因此地址偏移的冗余低次序位不需要進(jìn)行編碼。換句話說,移位因子字段1262b代替?zhèn)鹘y(tǒng)的x86指令集8位移位。因此,移位因子字段1262b以與x86指令集8位移位相同的方式進(jìn)行編碼(因此modrm/sib編碼規(guī)沒有變化),只有disp8超載到disp8*n除外。換句話說,編碼規(guī)則或編碼長度沒有變化,但只有在由硬件解釋移位值(這需要通過按存儲(chǔ)器操作數(shù)的大小來縮放移位來獲得字節(jié)地址偏移)時(shí)如此。
立即數(shù)字段1272如前所述地操作。
完整操作碼字段
圖13b是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的構(gòu)成完整操作碼字段1274的特定向量友好指令格式1300的字段的框圖。具體地,完整操作碼字段1274包括格式字段1240、基礎(chǔ)操作字段1242以及數(shù)據(jù)元素寬度(w)字段1264?;A(chǔ)操作字節(jié)1242包括前綴編碼字段1325、操作數(shù)映射字段1315、以及實(shí)際操作碼字段1330。
寄存器索引字段
圖13c是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的構(gòu)成完整寄存器索引字段1244的特定向量友好指令格式1300的字段的框圖。具體地,寄存器索引字段1244包括rex字段1305、rex’字段1310、modr/m.reg字段1344、modr/m.r/m字段1346、vvvv字段1320、xxx字段1354、以及bbb字段1356。
擴(kuò)充操作字段
圖13d是示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的構(gòu)成完整擴(kuò)充操作字段1250的特定向量友好指令格式1300的字段的框圖。當(dāng)類(u)字段1268包含0時(shí),所述字段表示evex.u0(a類1268a);當(dāng)所述字段包含1時(shí),所述字段表示evex.u1(b類1268b)。當(dāng)u=0并且mod字段1342包含11(表示無存儲(chǔ)器訪問操作)時(shí),阿爾法字段1252(evex字節(jié)3,位[7]-eh)被解釋為rs字段1252a。當(dāng)rs字段1252a包含1(舍入1252a.1)時(shí),貝塔字段1254(evex字節(jié)3,位[6:4]-sss)被解釋為舍入控制字段1254a。舍入控制字段1254a包括一位sae字段1256和兩位舍入操作字段1258。當(dāng)rs字段1252a包含0(數(shù)據(jù)變換1252a.2)時(shí),貝塔字段1254(evex字節(jié)3,位[6:4]-sss)被解釋為三位數(shù)據(jù)變換字段1254b。當(dāng)u=0并且mod字段1342包含00、01或10(表示存儲(chǔ)器訪問操作)時(shí),阿爾法字段1252(evex字節(jié)3,位[7]-eh)被解釋為驅(qū)逐提示(eh)字段1252b,并且貝塔字段1254(evex字節(jié)3,位[6:4]-sss)被解釋為三位數(shù)據(jù)操控字段1254c。
當(dāng)u=1時(shí),阿爾法字段1252(evex字節(jié)3,位[7]-eh)被解釋為寫掩碼控制(z)字段1252c。當(dāng)u=1并且mod字段1342包含11(表示無存儲(chǔ)器訪問操作)時(shí),貝塔字段1254的一部分(evex字節(jié)3,位[4]-s0)被解釋為rl字段1257a;當(dāng)所述rl字段包含1(舍入1257a.1)時(shí),貝塔字段1254的其余部分(evex字節(jié)3,位[6-5]-s2-1)被解釋為舍入操作字段1259a,而當(dāng)rl字段1257a包含0(vsize1257.a2)時(shí),貝塔字段1254的其余部分(evex字節(jié)3,位[6-5]-s2-1)被解釋為向量長度字段1259b(evex字節(jié)3,位[6-5]-l1-0)。當(dāng)u=1并且mod字段1342包含00、01或10(表示存儲(chǔ)器訪問操作)時(shí),貝塔字段1254(evex字節(jié)3,位[6:4]-sss)被解釋為向量長度字段1259b(evex字節(jié)3,位[6-5]-l1-0)和廣播字段1257b(evex字節(jié)3,位[4]-b)。
示例性寄存器架構(gòu)
圖14是根據(jù)本發(fā)明一個(gè)實(shí)施例的方法的寄存器架構(gòu)1400的框圖。在所示的實(shí)施例中,存在512位寬的32個(gè)向量寄存器1410;這些寄存器的參考號(hào)為zmm0到zmm31。較低的16個(gè)zmm寄存器的次序較低的256位疊加在寄存器ymm0-16上。較低的16個(gè)zmm寄存器的次序較低的128位(ymm寄存器的次序較低的128位)疊加在寄存器xmm0-15上。特定向量友好指令格式1300對這些疊加的寄存器堆進(jìn)行操作,如下表所示。
換句話說,向量長度字段1259b在最大長度與一個(gè)或多個(gè)其他較短長度之間進(jìn)行選擇,其中每個(gè)這樣的較短長度是前一長度的一半長度;并且沒有向量長度字段1259b的指令模板對最大向量長度進(jìn)行操作。進(jìn)一步地,在一個(gè)實(shí)施例中,特定向量友好指令格式1300的b類指令模板對緊縮或標(biāo)量單/雙精度浮點(diǎn)數(shù)據(jù)以及緊縮或標(biāo)量整數(shù)數(shù)據(jù)進(jìn)行操作。標(biāo)量操作是對zmm/ymm/xmm寄存器中的最低階的數(shù)據(jù)元素位置執(zhí)行的操作;取決于所述實(shí)施例,次序較高的數(shù)據(jù)元素位置或者在所述指令之前保持不變或者被歸零。
寫掩碼寄存器1415-在所示實(shí)施例中,存在8個(gè)寫掩碼寄存器(k0至k7),每個(gè)寫掩碼寄存器的大小為64位。在替代實(shí)施例中,寫掩碼寄存器1415的大小為16位。如前所述,在本發(fā)明的一個(gè)實(shí)施例中,向量掩模寄存器k0不能用作寫掩碼;當(dāng)通常指示k0的編碼用于寫掩碼時(shí),所述向量掩模寄存器選擇0xffff的硬連線寫掩碼,有效地禁止所述指令的寫掩碼。
通用寄存器1425-在所示實(shí)施例中,存在十六個(gè)64位通用寄存器,所述通用寄存器與現(xiàn)有的x86尋址模式一起使用以對多個(gè)存儲(chǔ)器操作數(shù)進(jìn)行尋址。這些寄存器用名稱rax、rbx、rcx、rdx、rbp、rsi、rdi、rsp、以及r8到r15作為參考標(biāo)記。
標(biāo)量浮點(diǎn)堆棧寄存器堆(x87堆棧)1445,在其上重疊有mmx緊縮整數(shù)平面寄存器堆1450-在所示實(shí)施例中,x87堆棧是用于使用x87指令集擴(kuò)展對32位/64位/80位浮點(diǎn)數(shù)據(jù)字節(jié)執(zhí)行標(biāo)量浮點(diǎn)運(yùn)算的八元素堆棧;而mmx寄存器用于對64位緊縮整數(shù)數(shù)據(jù)執(zhí)行操作,以及為在mmx寄存器與xmm寄存器之間執(zhí)行的某些操作保存操作數(shù)。
本發(fā)明的替代實(shí)施例可以使用更寬或更窄的寄存器。另外,本發(fā)明的替代實(shí)施例可以使用更多、更少或不同的寄存器堆和寄存器。
示例性核架構(gòu)、處理器、以及計(jì)算機(jī)架構(gòu)
處理器核能夠以不同的方式實(shí)現(xiàn),用于不同的目的地以及在不同的處理器中。例如,這樣的核的實(shí)施方式可以包括:1)旨在用于通用計(jì)算的通用有序核;2)旨在用于通用計(jì)算的高性能亂序核;3)旨在主要用于圖形和/或科學(xué)(吞吐量)計(jì)算的專用核。不同處理器的實(shí)施方式可以包括:1)cpu,所述cpu包括旨在用于通用計(jì)算的一個(gè)或多個(gè)通用有序核和/或旨在用于通用計(jì)算的一個(gè)或多個(gè)通用亂序核;以及2)協(xié)處理器,所述協(xié)處理器包括旨在主要用于圖形和/或科學(xué)(吞吐量)的一個(gè)或多個(gè)專用核。這樣的不同處理器導(dǎo)致不同的計(jì)算機(jī)系統(tǒng)架構(gòu),所述計(jì)算機(jī)系統(tǒng)架構(gòu)可以包括:1)位于與cpu分開的芯片上的協(xié)處理器;2)位于與cpu相同的封裝中的分開管芯上的協(xié)處理器;3)位于與cpu相同的管芯上的協(xié)處理器(在這種情況下,這樣的協(xié)處理器有時(shí)被稱為專用邏輯,例如集成圖形和/或科學(xué)(吞吐量)邏輯或?qū)S煤?;以及4)芯片上的系統(tǒng),所述系統(tǒng)可以包括位于相同管芯上的所描述的cpu(有時(shí)稱為(多個(gè))應(yīng)用核或(多個(gè))應(yīng)用處理器)、上述協(xié)處理器、以及附加功能。接下來描述示例性核架構(gòu),之后是示例性處理器和計(jì)算機(jī)架構(gòu)的描述。
示例性核架構(gòu)
有序和亂序核框圖
圖15a是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的示例性有序流水線和示例性寄存器重命名亂序發(fā)出/執(zhí)行流水線兩者的框圖。圖15b是示出根據(jù)本發(fā)明的多個(gè)實(shí)施例的有序架構(gòu)核的實(shí)施例和有待包含在處理器中的示例性寄存器重命名亂序發(fā)出/執(zhí)行架構(gòu)核兩者的框圖。圖15a和圖15b中的實(shí)線框展示了有序流水線和有序核,而虛線框的可選添加展示了寄存器重命名亂序發(fā)出/執(zhí)行流水線和核。假定有序方面是亂序方面的子集,將描述亂序方面。
在圖15a中,處理器流水線1500包括獲取階段1502、長度解碼階段1504、解碼階段1506、分配階段1508、重命名階段1510、調(diào)度(也稱為分派或發(fā)出)階段1512、寄存器讀取/存儲(chǔ)器讀取階段1514、執(zhí)行階段1516、回寫/存儲(chǔ)器寫階段1518、異常處理階段1522以及提交階段1524。
圖15b示出了處理器核1590,所述處理器核包括耦合到執(zhí)行引擎單元1550的前端單元1530,并且所述執(zhí)行引擎單元和前端單元都耦合到存儲(chǔ)器單元1570。核1590可以是精簡指令集計(jì)算(risc)核、復(fù)雜指令集計(jì)算(cisc)核心、超長指令字(vliw)核、或混合或替代核類型。作為又一選項(xiàng),核1590可以是專用核,例如網(wǎng)絡(luò)或通信核、壓縮引擎、協(xié)處理器核、通用計(jì)算圖形處理單元(gpgpu)核、圖形核等。
前端單元1530包括耦合到指令高速緩存單元1534的分支預(yù)測單元1532,所述指令高速緩存單元被耦合到指令翻譯后備緩沖器(tlb)1536,所述指令轉(zhuǎn)換后備緩沖器被耦合到指令獲取單元1538,所述指令獲取單元被耦合到解碼單元1540。解碼單元1540(或解碼器)可以對指令進(jìn)行解碼并且生成從原始指令解碼出的、或以其他方式反映原始指令或從原始指令衍生出的作為輸出的一個(gè)或多個(gè)微操作、微代碼入口點(diǎn)、微指令、其他指令或其他控制信號(hào)。解碼單元1540可以使用各種不同的機(jī)制來實(shí)現(xiàn)。合適機(jī)制的示例包括但不限于:查找表、硬件實(shí)施方式、可編程邏輯數(shù)組(pla)、微代碼只讀存儲(chǔ)器(rom)等。在一個(gè)實(shí)施例中,核1590包括微代碼rom或存儲(chǔ)用于某些宏指令的微碼的其他介質(zhì)(例如,在解碼單元1540中或者在前端單元1530內(nèi))。解碼單元1540被耦合到執(zhí)行引擎單元1550中的重命名/分配器單元1552。
執(zhí)行引擎單元1550包括耦合到引退單元1554的重命名/分配器單元1552和一組一個(gè)或多個(gè)調(diào)度器單元1556。所述(多個(gè))調(diào)度器單元1556表示任何數(shù)量的不同調(diào)度器,包括預(yù)留站、中央指令窗口等。所述(多個(gè))調(diào)度器單元1556被耦合到物理寄存器堆單元1558。所述(多個(gè))物理寄存器堆單元1558各自表示一個(gè)或多個(gè)物理寄存器堆,其中不同的物理寄存器堆存儲(chǔ)一個(gè)或多個(gè)不同的數(shù)據(jù)類型,例如標(biāo)量整數(shù)、標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn)、狀態(tài)(例如,作為有待執(zhí)行的下一指令的地址的指令指針)等。在一個(gè)實(shí)施例中,所述(多個(gè))物理寄存器堆單元1558包括向量寄存器單元、寫掩碼碼寄存器單元、以及標(biāo)量寄存器單元。這些寄存器單元可以提供架構(gòu)向量寄存器、向量掩碼寄存器、以及通用寄存器。所述(多個(gè))物理寄存器堆單元1558被引退單元1554重疊,所述引退單元用于展示可以實(shí)現(xiàn)寄存器重命名和亂序執(zhí)行的各種方式(例如,使用(多個(gè))重排序緩沖器和(多個(gè))引退寄存器堆;使用(多個(gè))未來文件、(多個(gè))歷史緩沖區(qū)、以及(多個(gè))引退寄存器堆;使用寄存器映射和寄存器池等)。引退單元1554和(多個(gè))物理寄存器堆單元1558被耦合到(多個(gè))執(zhí)行群集1560。所述(多個(gè))執(zhí)行群集1560包括一組一個(gè)或多個(gè)執(zhí)行單元1562和一組一個(gè)或多個(gè)存儲(chǔ)器訪問單元1564。執(zhí)行單元1562可以執(zhí)行各種操作(例如,移位、加法、減法、乘法)以及對各種類型的數(shù)據(jù)(例如,標(biāo)量浮點(diǎn)、緊縮整數(shù)、緊縮浮點(diǎn)、向量整數(shù)、向量浮點(diǎn))執(zhí)行。雖然一些實(shí)施例可以包括專用于特定功能或功能集合的多個(gè)執(zhí)行單元,但其他實(shí)施例可以僅包括執(zhí)行所有功能的一個(gè)執(zhí)行單元或多個(gè)執(zhí)行單元。所述(多個(gè))調(diào)度器單元1556、(多個(gè))物理寄存器堆單元1558、以及(多個(gè))執(zhí)行集群1560被示出為可能是復(fù)數(shù)的,因?yàn)槟承?shí)施例為某些類型的數(shù)據(jù)/操作創(chuàng)建分開的流水線(例如,標(biāo)量整數(shù)流水線、標(biāo)量浮點(diǎn)/緊縮整數(shù)/緊縮浮點(diǎn)/向量整數(shù)/向量浮點(diǎn)流水線、和/或存儲(chǔ)器訪問流水線,所述流水線各自具有其本身的調(diào)度器單元、(多個(gè))物理寄存器堆單元、和/或執(zhí)行集群,并且在分開的存儲(chǔ)器訪問流水線的情況下,實(shí)現(xiàn)了其中只有該流水線的執(zhí)行集群具有(多個(gè))存儲(chǔ)器訪問單元1564的某些實(shí)施例)。還應(yīng)當(dāng)理解的是,在使用分開的流水線的情況下,這些流水線中的一者或多者可以是亂序發(fā)出/執(zhí)行流水線,并且其余的是有序流水線。
所述一組存儲(chǔ)器訪問單元1564被耦合到存儲(chǔ)器單元1570,所述存儲(chǔ)器單元包括耦合到數(shù)據(jù)高速緩存單元1574的數(shù)據(jù)tlb單元1572,所述數(shù)據(jù)高速緩存單元被耦合到二級(jí)(l2)高速緩存單元1576。在一個(gè)示例性實(shí)施例中,存儲(chǔ)器訪問單元1564可以包括各自被耦合到存儲(chǔ)器單元1570中的數(shù)據(jù)tlb單元1572的加載單元、存儲(chǔ)地址單元、以及存儲(chǔ)數(shù)據(jù)單元。指令高速緩存單元1534被進(jìn)一步耦合到存儲(chǔ)器單元1570中的二級(jí)(l2)高速緩存單元1576。l2高速緩存單元1576被耦合到一個(gè)或多個(gè)其他級(jí)的高速緩存并且最終被耦合到主存儲(chǔ)器。
作為示例,示例性寄存器重命名亂序發(fā)出/執(zhí)行核架構(gòu)可以如下實(shí)現(xiàn)流水線1500:1)指令獲取單元1538執(zhí)行獲取階段1502和長度解碼階段1504;2)解碼單元1540執(zhí)行解碼階段1506;3)重命名/分配器單元1552執(zhí)行分配階段1508和重命名階段1510;4)所述(多個(gè))調(diào)度器單元1556執(zhí)行調(diào)度階段1512;5)所述(多個(gè))物理寄存器堆單元1558和存儲(chǔ)位置1570執(zhí)行寄存器讀/寫階段1514;執(zhí)行集群1560執(zhí)行執(zhí)行階段1516;6)存儲(chǔ)器單元1570和所述(多個(gè))物理寄存器堆單元1558執(zhí)行回寫/存儲(chǔ)器寫階段1518;7)各種單元可以涉及異常處理階段1522;以及8)引退單元1554和所述(多個(gè))物理寄存器堆單元1558執(zhí)行提交階段1524。
核1590可以支持一個(gè)或多個(gè)指令集(例如,x86指令集(具有已經(jīng)添加了較新版本的一些擴(kuò)展);加利福尼亞州桑尼維爾的mips技術(shù)公司的mips指令集;加利福尼亞州桑尼維爾的arm控股公司的arm指令集(具有可選的附加擴(kuò)展,例如neon)),包括本文所描述的所述(多個(gè))指令。在一個(gè)實(shí)施例中,核1590包括支持緊縮數(shù)據(jù)指令集擴(kuò)展(例如,avx1、avx2)的邏輯,從而允許使用緊縮數(shù)據(jù)來執(zhí)行許多多媒體應(yīng)用所使用的操作。
應(yīng)當(dāng)理解,核可以支持多線程化(執(zhí)行兩個(gè)或更多個(gè)并行的操作或線程集),并且可以以各種方式來完成所述多線程化,此各種方式包括時(shí)分多線程化、同步多線程化(其中,單個(gè)物理核為物理核正同步多線程化的各線程中的每一個(gè)線程提供邏輯核)、或其組合(例如,時(shí)分獲取和解碼以及此后諸如
雖然在亂序執(zhí)行的上下文中描述了寄存器重命名,但應(yīng)當(dāng)理解的是,可以在有序架構(gòu)中使用寄存器重命名。雖然處理器的所示實(shí)施例還包括分開的指令和數(shù)據(jù)高速緩存單元1534/1574和共享的l2高速緩存單元1576,但替代實(shí)施例可以具有用于指令和數(shù)據(jù)兩者的單個(gè)內(nèi)部高速緩存,例如一級(jí)(l1)內(nèi)部高速緩存、或多級(jí)內(nèi)部高速緩存。在一些實(shí)施例中,所述系統(tǒng)可以包括在所述核和/或處理器外部的內(nèi)部高速緩存和外部高速緩存的組合??商娲?,所有高速緩存都可以在所述核和/或處理器的外部。
特定示例性有序核架構(gòu)
圖16a和圖16b示出了更特定的示例性有序核架構(gòu)的框圖,該核是芯片中的若干個(gè)邏輯塊(包括相同類型和/或不同類型的其他核)之一。取決于應(yīng)用,所述邏輯塊通過具有某些固定功能邏輯、存儲(chǔ)器i/o接口和其他必需i/o邏輯的高帶寬互連網(wǎng)絡(luò)(例如,環(huán)形網(wǎng)絡(luò))進(jìn)行通信。
圖16a是根據(jù)本發(fā)明的多個(gè)實(shí)施例的單個(gè)處理器核、和其與管芯上互連網(wǎng)絡(luò)1602的連接以及其二級(jí)(l2)高速緩存1604的本地子集的框圖。在一個(gè)實(shí)施例中,指令解碼器1600支持具有緊縮數(shù)據(jù)指令集擴(kuò)展的x86指令集。l1高速緩存1606允許對高速緩存存儲(chǔ)器的低時(shí)延訪問進(jìn)入標(biāo)量單元和向量單元。雖然在一個(gè)實(shí)施例中(為了簡化設(shè)計(jì)),標(biāo)量單元1608和向量單元1610使用分開的寄存器堆(分別為標(biāo)量寄存器1612和向量寄存器1614),并且在它們之間傳送的數(shù)據(jù)被寫存儲(chǔ)器并且然后從一級(jí)(l1)高速緩存1606中回讀,但本發(fā)明的替代實(shí)施例可以使用不同的途徑(例如,使用單個(gè)寄存器堆或者包括允許數(shù)據(jù)在兩個(gè)寄存器堆之間傳送而未被書寫和回讀的通信路徑)。
l2高速緩存1604的本地子集是全局l2高速緩存的一部分,所述全局l2高速緩存被劃分為多個(gè)分開的本地子集,每個(gè)處理器核一個(gè)。每個(gè)處理器核具有到其本身的l2高速緩存1604的本地子集的直接訪問路徑。由處理器核讀取的數(shù)據(jù)被存儲(chǔ)在其l2高速緩存子集1604中并且可以被快速訪問,與其他處理器核并行地訪問其本地l2的高速緩存子集。由處理器核寫的數(shù)據(jù)被存儲(chǔ)在其本身的l2高速緩存子組1604中,并且如果需要,則從其他子集劃掉。所述環(huán)形網(wǎng)絡(luò)確保共享數(shù)據(jù)的相干性。所述環(huán)形網(wǎng)絡(luò)是雙向的,允許諸如處理器核、l2高速緩存和其他邏輯塊的媒介在芯片內(nèi)彼此通信。每個(gè)環(huán)形數(shù)據(jù)路徑在每個(gè)方向?yàn)?012位寬。
圖16b是根據(jù)本發(fā)明的多個(gè)實(shí)施例的圖16a中的處理器核的一部分的放大視圖。圖16b包括l1高速緩存1604的l1數(shù)據(jù)高速緩存1606a部分、以及關(guān)于向量單元1610和向量寄存器1614的更多細(xì)節(jié)。具體地,向量單元1610是16位寬向量處理單元(vpu)(參見16位寬alu1628),所述向量處理單元執(zhí)行整數(shù)、單精度浮點(diǎn)和雙精度浮點(diǎn)指令中的一者或多者。vpu支持用混合單元1620對寄存器輸入進(jìn)行混合、用轉(zhuǎn)換單元1622a-b進(jìn)行數(shù)字轉(zhuǎn)換、以及用復(fù)制單元1624對存儲(chǔ)器輸入進(jìn)行復(fù)制。寫掩碼寄存器1626允許預(yù)測結(jié)果向量寫。
具有集成存儲(chǔ)器控制器和圖形的處理器
圖17是根據(jù)本發(fā)明的多個(gè)實(shí)施例的可以具有多于一個(gè)核的、可以具有集成存儲(chǔ)器控制器的、以及可以具有集成圖形的處理器1700的框圖。圖17中的實(shí)線框展示了具有單個(gè)核1702a、系統(tǒng)媒介1710、一組一個(gè)或多個(gè)總線控制器單元1716的處理器1700,而虛線框的可選添加展示了具有多個(gè)核1702a-n、系統(tǒng)媒介1710中的一組一個(gè)或多個(gè)集成存儲(chǔ)器控制器單元1714以及專用邏輯1708的替代處理器1700。
因此,處理器1700的不同實(shí)施方式可以包括:1)cpu,其中專用邏輯1708是集成圖形和/或科學(xué)(吞吐量)邏輯(其可以包括一個(gè)或多個(gè)核),并且核1702a-n是一個(gè)或多個(gè)通用核(例如,通用有序核、通用亂序核、兩者的組合);2)協(xié)處理器,其中核1702a-n是旨在主要用于圖形和/或科學(xué)(吞吐量)的大量專用核;以及3)協(xié)處理器,其中核1702a-n是大量通用有序核。因此,處理器1700可以是通用處理器、協(xié)處理器或?qū)S锰幚砥?,例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、gpgpu(通用圖形處理單元)、高吞吐量集成眾核(mic)協(xié)處理器(包括30個(gè)或更多個(gè)核)、嵌入式處理器等。所述處理器可以在一個(gè)或多個(gè)芯片上實(shí)現(xiàn)。處理器1700可以是一個(gè)或多個(gè)襯底的一部分和/或可以使用諸如例如bicmos、cmos或nmos的多種加工技術(shù)中的任何一種技術(shù)在一個(gè)或多個(gè)襯底上被實(shí)現(xiàn)。
存儲(chǔ)器層級(jí)包括所述核內(nèi)的一個(gè)或多個(gè)級(jí)別的高速緩存,一組或一個(gè)或多個(gè)共享高速緩存單元1706、以及外部存儲(chǔ)器(未示出),所述外部存儲(chǔ)器被耦合到所述一組集成存儲(chǔ)器控制器單元1714。所述一組共享高速緩存單元1706可以包括一個(gè)或多個(gè)中級(jí)高速緩存,如二級(jí)(l2)、三級(jí)(l3)、四級(jí)(l4)、或其他級(jí)別的高速緩存、終極高速緩存(llc)、和/或其組合。雖然在一個(gè)實(shí)施例中,基于環(huán)形的互連單元1712將集成圖形邏輯1708、所述一組共享高速緩存單元1706、以及系統(tǒng)媒介單元1710/(多個(gè))集成存儲(chǔ)器控制器單元1714互連,但替代實(shí)施例可以使用任何數(shù)量的用于互連這樣的單元的已知技術(shù)。在一個(gè)實(shí)施例中,維持一個(gè)或多個(gè)高速緩存單元1706與核1702a-n之間的相干性。
在一些實(shí)施例中,所述核1702a-n中的一個(gè)或多個(gè)核能夠進(jìn)行多線程。系統(tǒng)媒介1710包括協(xié)調(diào)和操作核1702a-n的那些組件。系統(tǒng)媒介單元1710可以包括例如功率控制單元(pcu)和顯示單元。pcu可以是或包括用于調(diào)節(jié)核1702a-n和集成圖形邏輯1708的功率狀態(tài)所需的邏輯和組件。顯示單元用于驅(qū)動(dòng)一個(gè)或多個(gè)外部連接的顯示器。
就架構(gòu)指令集而言,核1702a-n可以是同質(zhì)的或異構(gòu)的;也就是說,核1702a-n中的兩個(gè)或更多個(gè)核能夠執(zhí)行相同的指令集,而其他的核能夠僅執(zhí)行所述指令集的子集或不同指令集。
示例性計(jì)算機(jī)架構(gòu)
圖18-21是示例性計(jì)算機(jī)架構(gòu)的框圖。本領(lǐng)域已知的用于膝上型計(jì)算機(jī)、臺(tái)式機(jī),手持pc、個(gè)人數(shù)字助理、工程工作站、服務(wù)器、網(wǎng)絡(luò)裝置、網(wǎng)絡(luò)集線器、交換機(jī)、嵌入式處理器、數(shù)字信號(hào)處理器(dsp)、圖形裝置、視頻游戲裝置、機(jī)頂盒、微控制器、蜂窩電話、便攜式媒體播放器、手持裝置、以及各種其他電子裝置的其他系統(tǒng)設(shè)計(jì)和配置也是合適的。一般,能夠結(jié)合本文所公開的處理器和/或其他執(zhí)行邏輯的各種各樣的系統(tǒng)或電子裝置通常是合適的。
現(xiàn)在參考圖18,示出的是根據(jù)本發(fā)明的一個(gè)實(shí)施例的系統(tǒng)1800的框圖。系統(tǒng)1800可以包括耦合到控制器集線器1820的一個(gè)或多個(gè)處理器1810、1815。在一個(gè)實(shí)施例中,控制器集線器1820包括圖形存儲(chǔ)器控制器集線器(gmch)1890和輸入/輸出集線器(ioh)1850(其可以在分開的芯片上);gmch1890包括存儲(chǔ)器和圖形控制器,存儲(chǔ)器1840和協(xié)處理器1845被耦合到所述圖形控制器;ioh1850將輸入/輸出(i/o)裝置1860耦合到gmch1890。可替代地,存儲(chǔ)器和圖形控制器中的一者或兩者被集成在處理器(如本文所述)內(nèi),存儲(chǔ)器1840和協(xié)處理器1845通過ioh1850直接耦合到單個(gè)芯片中的處理器1810和控制器集線器1820。
圖18中用虛線表示附加處理器1815的可選特性。每個(gè)處理器1810、1815可以包括本文描述的一個(gè)或多個(gè)處理核,并且可以是某一版本的處理器1700。
存儲(chǔ)器1840可以例如是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、相變存儲(chǔ)器(pcm)或兩者的組合。對于至少一個(gè)實(shí)施例,控制器集線器1820經(jīng)由多點(diǎn)總線(例如前端總線(fsb)、諸如快速路徑互連(qpi)的點(diǎn)對點(diǎn)接口或類似連接件1895)與(多個(gè))處理器1810、1815通信。
在一個(gè)實(shí)施例中,協(xié)處理器1845是專用處理器,例如高吞吐量mic處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、gpgpu、嵌入式處理器等。在一個(gè)實(shí)施例中,控制器集線器1820可以包括集成圖形加速器。
就一系列指標(biāo)量度(包括體系結(jié)構(gòu)、微體系結(jié)構(gòu)、熱、功耗特性等)而言,物理資源1810、1815之間存在多種差異。
在一個(gè)實(shí)施例中,處理器1810執(zhí)行控制一般類型的數(shù)據(jù)處理操作的指令。協(xié)處理器指令可以被嵌入在所述指令中。處理器1810將這些協(xié)處理器指令識(shí)別為應(yīng)由附連的協(xié)處理器1845執(zhí)行的類型。相應(yīng)地,處理器1810將協(xié)處理器總線或其他互連上的這些協(xié)處理器指令(或表示協(xié)處理器指令的控制信號(hào))發(fā)出到協(xié)處理器1845。(多個(gè))協(xié)處理器1845接受并執(zhí)行接收到的協(xié)處理器指令。
現(xiàn)在參考圖19,示出了根據(jù)本發(fā)明的實(shí)施例的更具體的第一示例性系統(tǒng)1900的框圖。如圖19所示,多處理器系統(tǒng)1900是點(diǎn)對點(diǎn)互連系統(tǒng),且包括經(jīng)由點(diǎn)對點(diǎn)互連1950耦合的第一處理器1970和第二處理器1980。處理器1970和1980各自可以是某一版本的處理器1700。在本發(fā)明的一個(gè)實(shí)施例中,處理器1970和1980分別是處理器1810和1815,而協(xié)處理器1938是協(xié)處理器1845。在另一實(shí)施例中,處理器1970和1980分別是處理器1810和1845。
處理器1970和1980被示出為分別包括集成存儲(chǔ)器控制器(imc)單元1972和1982。處理器1970還包括作為其總線控制器單元的一部分的點(diǎn)對點(diǎn)(p-p)接口1976和1978;類似地,第二處理器1980包括p-p接口1986和1988。處理器1970、1980可以使用p-p接口電路1978、1988通過點(diǎn)對點(diǎn)(p-p)接口1950交換信息。如圖19所示,imc1972和1982將處理器聯(lián)接到對應(yīng)存儲(chǔ)器、即存儲(chǔ)器1932和存儲(chǔ)器1934上,所述存儲(chǔ)器可以是主存儲(chǔ)器的本地附接到對應(yīng)處理器上的部分。
處理器1970、1980可以各自使用點(diǎn)對點(diǎn)接口電路1976、1994、1986、1998經(jīng)由單獨(dú)的p-p接口1952、1954來與芯片組1990交換信息。芯片組1990可以可選地經(jīng)由高性能接口1939與協(xié)處理器1938交換信息。在一個(gè)實(shí)施例中,協(xié)處理器1938是專用處理器,例如高吞吐量mic處理器、網(wǎng)絡(luò)或通信處理器、壓縮引擎、圖形處理器、gpgpu、嵌入式處理器等。
共享高速緩存(未示出)可以包括在任一處理器中或者在兩個(gè)處理器外部但經(jīng)由p-p互連與所述處理器相連接,使得如果處理器被置于低功耗模式中,則任一或兩個(gè)處理器的本地高速緩存信息可以被存儲(chǔ)在所述共享高速緩存中。
芯片組1990可以經(jīng)由接口1996耦合至第一總線1916。在一個(gè)實(shí)施例中,第一總線1916可以是外圍部件互連(pci)總線,或諸如pciexpress總線或另一種第三代i/o互連總線的總線,盡管本發(fā)明的范圍不限于此。
如圖19所示,不同i/o裝置1914可以連同總線橋接器1918耦合到第一總線1916,所述總線橋接器可以將第一總線1916耦合到第二總線1920。在一個(gè)實(shí)施例中,一個(gè)或多個(gè)附加處理器1915(例如協(xié)處理器、高吞吐量mic處理器、gpgpu、加速器(例如,圖形加速器或數(shù)字信號(hào)處理(dsp)單元)、字段可編程門陣列、或任何其他處理器)被耦合到第一總線1916。在一個(gè)實(shí)施例中,第二總線1920可以是低引腳數(shù)(lpc)總線。在一個(gè)實(shí)施例中,各個(gè)裝置可以耦合至第二總線1920,所述裝置包括例如鍵盤和/或鼠標(biāo)1922、多個(gè)通信裝置1927、以及可以包括指令/代碼數(shù)據(jù)1930的存儲(chǔ)單元1928(如磁盤驅(qū)動(dòng)器或者其他大容量存儲(chǔ)裝置)。進(jìn)一步地,音頻i/o1924可以耦合至第二總線1920。注意到,其他架構(gòu)是可能的。例如,替代圖19的點(diǎn)對點(diǎn)體系結(jié)構(gòu),系統(tǒng)可以實(shí)現(xiàn)多站式總線或其他這樣的架構(gòu)。
現(xiàn)在參考圖20,示出了根據(jù)本發(fā)明的實(shí)施例的更具體的第二示例性系統(tǒng)2000的框圖。圖19和圖20中的相同元件具有相同的參考數(shù)字,并且已經(jīng)從圖20中省略了圖19的某些方面以避免使圖20的其他方面模糊。
圖20展示了處理器1970、1980可以分別包括集成存儲(chǔ)器和i/o控制邏輯(“cl”)1972和1982。因此,cl1972、1982包括集成存儲(chǔ)器控制器單元并且包括i/o控制邏輯。圖20展示了不僅存儲(chǔ)器1932、1934被耦合至cl1972、1982,而且i/o裝置2014也被耦合至控制邏輯1972、1982。傳統(tǒng)i/o裝置2015被耦合至芯片組1990。
現(xiàn)在參考圖21,示出的是根據(jù)本發(fā)明的實(shí)施例的soc2100的框圖。圖17中的相似元件具有相同的附圖標(biāo)記。此外,虛線框是關(guān)于更先進(jìn)的soc的可選特征。在圖21中,(多個(gè))互連單元2102被耦合到:應(yīng)用處理器2110,所述應(yīng)用處理器包括一組一個(gè)或多個(gè)核202a-n和一個(gè)或多個(gè)共享高速緩存單元1706;系統(tǒng)媒介單元1710;(多個(gè))總線控制器單元1716;(多個(gè))集成存儲(chǔ)器控制器單元1714;一組或一個(gè)或多個(gè)協(xié)處理器2120,所述協(xié)處理器可以包括集成圖形邏輯、圖像處理器、音頻處理器、以及視頻處理器;靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)單元2130;直接存儲(chǔ)器訪問(dma)單元2132;以及顯示單元2140,所述顯示單元用于耦合到一個(gè)或多個(gè)外部顯示器。在一個(gè)實(shí)施例中,所述(多個(gè))協(xié)處理器2120是專用處理器,例如網(wǎng)絡(luò)或通信處理器、壓縮引擎、gpgpu、高吞吐量mic處理器、嵌入式處理器等。
本文公開的機(jī)制的實(shí)施例能夠以硬件、軟件、固件或這些實(shí)現(xiàn)途徑的組合來實(shí)現(xiàn)。本發(fā)明的實(shí)施例可以被實(shí)現(xiàn)為在可編程系統(tǒng)上執(zhí)行的計(jì)算機(jī)程序或程序代碼,所述可編程系統(tǒng)包括至少一個(gè)處理器、存儲(chǔ)系統(tǒng)(包括易失性和非易失性存儲(chǔ)器和/或存儲(chǔ)元件)、至少一個(gè)輸入裝置、以及至少一個(gè)輸出裝置。
諸如圖19所示的代碼1930的程序代碼可以被應(yīng)用于輸入指令以執(zhí)行本文所述的功能并且生成輸出信息。輸出信息能夠以已知的方式應(yīng)用于一個(gè)或多個(gè)輸出裝置。出于此應(yīng)用的目的,處理系統(tǒng)包括具有處理器(例如,數(shù)字信號(hào)處理器(dsp)、微控制器、專用集成電路(asic)、或微處理器)的任何系統(tǒng)。
程序代碼能夠以高級(jí)程序或面向?qū)ο蟮木幊陶Z言來實(shí)現(xiàn),以與處理系統(tǒng)通信。如果需要,程序代碼還能夠以匯編或機(jī)器語言實(shí)現(xiàn)。事實(shí)上,本文描述的機(jī)制的范圍不限于任何特定的編程語言。在任何情況下,所述語言可以是編譯或解釋語言。
可以由機(jī)器可讀介質(zhì)上所存儲(chǔ)的表屬性指令實(shí)現(xiàn)至少一個(gè)實(shí)施例的一個(gè)或多個(gè)方面,該指令代表處理器內(nèi)的各種邏輯,當(dāng)被機(jī)器讀取時(shí)該指令使該機(jī)器制作用于執(zhí)行在此所描述的技術(shù)的邏輯。此類表示(稱為“ip核”)可以被存儲(chǔ)在有形的機(jī)器可讀介質(zhì)上并提供給各顧客或制造設(shè)施以加載至實(shí)際制作該邏輯或處理器的制作機(jī)器中。
這樣的機(jī)器可讀存儲(chǔ)介質(zhì)可以包括但不限于:由機(jī)器或裝置制造或形成的物品的非瞬態(tài)有形安排,包括諸如硬盤的存儲(chǔ)介質(zhì);任何其他類型的盤,包括軟盤、光盤、致密盤只讀存儲(chǔ)器(cd-rom)、cd可擦寫光盤(cd-rw)、和磁光盤;半導(dǎo)體器件,例如只讀存儲(chǔ)器(rom);隨機(jī)存取存儲(chǔ)器(ram),例如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram);可擦可編程只讀存儲(chǔ)器(eprom);閃存存儲(chǔ)器;電可擦可編程只讀存儲(chǔ)器(eeprom);相變存儲(chǔ)器(pcm);磁卡或光卡;或者適合于存儲(chǔ)電子指令的任何其他類型的介質(zhì)。
因此,本發(fā)明的實(shí)施例還包括包含指令或包含設(shè)計(jì)數(shù)據(jù)(如硬件描述語言(hdl))的非瞬態(tài)有形機(jī)器可讀介質(zhì),所述非瞬態(tài)有形機(jī)器可讀介質(zhì)限定本文描述的結(jié)構(gòu)、電路、設(shè)備、處理器和/或系統(tǒng)特征。這樣的實(shí)施例也可以被稱為程序產(chǎn)品。
仿真(包括二進(jìn)制翻譯、代碼變形等)
在一些情況下,可以使用指令轉(zhuǎn)換器將指令從源指令集轉(zhuǎn)換為目標(biāo)指令集。例如,所述指令轉(zhuǎn)換器可以將指令翻譯(例如,使用靜態(tài)二進(jìn)制翻譯、包括動(dòng)態(tài)編譯的動(dòng)態(tài)二進(jìn)制翻譯)、變形、仿真、或以其他方式轉(zhuǎn)換為有待由核處理的一個(gè)或多個(gè)其他指令。指令轉(zhuǎn)換器能夠以軟件、硬件、固件或其組合來實(shí)現(xiàn)。指令轉(zhuǎn)換器可以位于處理器上、處理器外、或者部分在處理器上并且部分在處理器外。
圖22是對照根據(jù)本發(fā)明的多個(gè)實(shí)施例的用于將源指令集中的二進(jìn)制指令轉(zhuǎn)換為目標(biāo)指令集中的二進(jìn)制指令的軟件指令轉(zhuǎn)換器的使用的框圖。在所示實(shí)施例中,指令轉(zhuǎn)換器是軟件指令轉(zhuǎn)換器,然而可替代地,指令轉(zhuǎn)換器能夠以軟件、固件、硬件或其各種組合來實(shí)現(xiàn)。圖22示出了可以使用x86編譯器2204來編譯高級(jí)語言2202的程序以生成x86二進(jìn)制代碼2206,所述x86二進(jìn)制代碼可以由具有至少一個(gè)x86指令集核的處理器2216本機(jī)執(zhí)行。具有至少一個(gè)x86指令集核的處理器2216表示可以通過兼容地執(zhí)行或以其他方式處理以下各項(xiàng)來執(zhí)行與具有至少一個(gè)x86指令集核的intel處理器基本相同功能的任何處理器:(1)intelx86指令集核的指令集的實(shí)質(zhì)部分、或(2)目標(biāo)代碼版本的應(yīng)用或目標(biāo)是在具有至少一個(gè)x86指令集核的intel處理器上運(yùn)行的其他軟件,以便實(shí)現(xiàn)與具有至少一個(gè)x86指令集核的intel處理器基本相同的結(jié)果。x86編譯器2204表示可操作用于生成x86二進(jìn)制代碼2206(例如,目標(biāo)代碼)的編譯器,所述x86二進(jìn)制代碼可以在具有或不具有附加鏈接處理的情況下在具有至少一個(gè)x86指令集核的處理器2216上執(zhí)行。類似地,圖22示出了可以使用替代指令集編譯器2208來編譯高級(jí)語言2202的程序以生成替代指令集二進(jìn)制代碼2210,可以由不具有至少一個(gè)x86指令集核的處理器2214(例如,具有執(zhí)行加利福尼亞州桑尼維爾的mips技術(shù)公司的mips指令集和/或執(zhí)行加利福尼亞州桑尼維爾的arm控股公司的arm指令集的多個(gè)核的處理器)本機(jī)執(zhí)行所述替代指令集二進(jìn)制代碼。指令轉(zhuǎn)換器2212用于將x86二進(jìn)制代碼2206轉(zhuǎn)換為可由不具有x86指令集核的處理器2214本機(jī)執(zhí)行的代碼。此經(jīng)轉(zhuǎn)換的代碼不太可能與替代指令集二進(jìn)制代碼2210相同,因?yàn)槟軌驅(qū)崿F(xiàn)這一點(diǎn)的指令轉(zhuǎn)換器很難制作;然而,經(jīng)轉(zhuǎn)換的代碼將完成一般操作,并且由來自所述替代指令集的指令構(gòu)成。因此,指令轉(zhuǎn)換器2212表示通過仿真、模擬或任何其他過程允許不具有x86指令集處理器或核的處理器或其他電子裝置執(zhí)行x86二進(jìn)制代碼2206的軟件、固件、硬件或其組合。
對于圖5-10中任一者描述的組件、特征和細(xì)節(jié)也可以可選地應(yīng)用于圖3-4中的任一者。此外,對于所述設(shè)備中的任一者描述的組件、特征和細(xì)節(jié)也可以可選地應(yīng)用于在多個(gè)實(shí)施例中可由和/或用這樣的設(shè)備執(zhí)行的任何方法。本文描述的任何處理器可以包括在本文所公開的片上系統(tǒng)(soc)和/或計(jì)算機(jī)系統(tǒng)的任一者中和/或在其他計(jì)算機(jī)系統(tǒng)(例如,臺(tái)式機(jī)或蜂窩電話)和/或其他soc中。在一些實(shí)施例中,所述計(jì)算機(jī)系統(tǒng)可以包括互連、與所述互連耦合的處理器、以及與所述互連耦合的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)??商娲?,代替dram,可以使用不需要刷新的其他類型的易失性存儲(chǔ)器,或者可以使用閃存存儲(chǔ)器??梢钥蛇x地與soc中的處理器集成或包括在管芯上或芯片上的其他組件的示例包括但不限于:存儲(chǔ)器控制器、存儲(chǔ)器(例如,只讀存儲(chǔ)器(rom))、隨機(jī)存取存儲(chǔ)器(ram)、和/或閃存存儲(chǔ)器)、圖形裝置(例如,圖形處理單元(gpu)、圖形核、或圖形處理器等)、數(shù)字信號(hào)處理器、圖像信號(hào)處理器、液晶顯示器(lcd)或其他顯示控制器、以及用于為一個(gè)或多個(gè)外部接口(例如通用串行總線(usb)、通用異步接收器/發(fā)射器(uart)、火線、以太網(wǎng)、藍(lán)牙等)提供控制的一個(gè)或多個(gè)輸入和/或輸出(i/o)控制器。用于蜂窩電話的soc還可以可選地包括長期演進(jìn)(lte)調(diào)制解調(diào)器、傳感器引擎、以及衛(wèi)星導(dǎo)航系統(tǒng)控制器(例如,全球定位衛(wèi)星(gps)、伽利略和/或北斗)。在一些實(shí)施例中,所述指令可以具有本文公開的指令格式的特征或細(xì)節(jié),然而這不是必需的。
在說明書和權(quán)利要求書中,可以使用術(shù)語“耦合”和“連接”及其衍生詞。這些術(shù)語并不旨在作為彼此的同義詞。而是,在多個(gè)實(shí)施例中,“連接”可以用于指示兩個(gè)或更多個(gè)元件彼此直接進(jìn)行物理的、和/或電學(xué)的接觸?!榜詈稀笨梢砸庵竷蓚€(gè)或更多個(gè)元件彼此進(jìn)行直接物理和/或電氣接觸。然而,“耦合”還可以意指兩個(gè)或更多個(gè)元件并非彼此直接接觸,但仍彼此合作或交互。例如,執(zhí)行單元可以通過一個(gè)或多個(gè)中間組件與寄存器和/或解碼單元耦合。在附圖中,箭頭用于示出連接和耦合。
術(shù)語“和/或”可能已被使用。如本文所使用的,術(shù)語“和/或”是指一個(gè)或另一個(gè)或兩者(例如,a和/或b表示a或b或a和b兩者)。
在以上說明中,闡述了許多特定細(xì)節(jié)以便提供對這些實(shí)施例的透徹理解。然而,可以在沒有這些具體細(xì)節(jié)的一些具體細(xì)節(jié)的情況下實(shí)踐其他實(shí)施例。本發(fā)明的范圍不是通過上面提供的具體實(shí)施例來確定,而是由下面的權(quán)利要求來確定的。在其他情況下,已知的電路、結(jié)構(gòu)、裝置和操作已經(jīng)以框圖形式和/或沒有細(xì)節(jié)地示出,以避免模糊對說明書的理解。在認(rèn)為適當(dāng)?shù)那闆r下,參考數(shù)字或參考數(shù)字的終端部分已經(jīng)在附圖中重復(fù),以指示對應(yīng)的或類似的元件,所述元件可以具有相似或相同的特性,除非另有說明或清楚地顯現(xiàn)。
某些操作可以由硬件組件執(zhí)行、或者可以體現(xiàn)在機(jī)器可執(zhí)行或電路可執(zhí)行指令中,所述指令可以用于引起和/或?qū)е聶C(jī)器、電路或硬件組件(例如,處理器、處理器的一部分、電路等)編程有執(zhí)行這些操作的指令。還可以通過硬件和軟件的組合來可選地執(zhí)行所述操作。可以包括特定的或具體的電路或其他邏輯(例如,可能與固件和/或軟件組合的硬件)的處理器、機(jī)器、電路或硬件可操作用于執(zhí)行和/或處理所述指令并且響應(yīng)于所述指令而存儲(chǔ)結(jié)果。
一些實(shí)施例包括一種制品(例如,計(jì)算機(jī)程序產(chǎn)品),所述制品包括機(jī)器可讀介質(zhì)。所述介質(zhì)可以包括以機(jī)器可讀的形式提供(例如存儲(chǔ))信息的機(jī)制。機(jī)器可讀介質(zhì)可以提供或已經(jīng)在其上存儲(chǔ)有指令或指令序列,所述指令或指令序列如果和/或當(dāng)被機(jī)器執(zhí)行時(shí)可操作用于使所述機(jī)器執(zhí)行和/或?qū)е滤鰴C(jī)器執(zhí)行本文公開的一個(gè)或多個(gè)操作、方法或技術(shù)。
在一些實(shí)施例中,機(jī)器可讀介質(zhì)可以包括非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì)。例如,所述非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì)可以包括軟盤、光存儲(chǔ)介質(zhì)、光盤、光數(shù)據(jù)存儲(chǔ)裝置、cd-rom、磁盤、磁光盤、只讀存儲(chǔ)器(rom)、可編程rom(prom)、可擦除可編程rom(eprom)、電可擦除可編程rom(eeprom)、隨機(jī)存取存儲(chǔ)器(ram)、靜態(tài)ram(sram)、動(dòng)態(tài)ram(dram)、閃存存儲(chǔ)器、相變存儲(chǔ)器、相變數(shù)據(jù)存儲(chǔ)材料、非易失性存儲(chǔ)器、非易失性數(shù)據(jù)存儲(chǔ)裝置、非瞬態(tài)存儲(chǔ)器、非瞬態(tài)數(shù)據(jù)存儲(chǔ)裝置等。非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì)不由瞬態(tài)傳播信號(hào)組成。在一些實(shí)施例中,存儲(chǔ)介質(zhì)可以包括有形介質(zhì),所述有形介質(zhì)包括固體物質(zhì)。
合適的機(jī)器的示例包括但不限于:通用處理器、專用處理器、數(shù)字邏輯電路、集成電路、片上系統(tǒng)(soc)等。合適的機(jī)器的其他示例包括:計(jì)算機(jī)系統(tǒng)或包括處理器、數(shù)字邏輯電路或集成電路的其他電子裝置。這樣的計(jì)算機(jī)系統(tǒng)或電子裝置的示例包括但不限于:臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、筆記本電腦、平板計(jì)算機(jī)、上網(wǎng)本、蜂窩電話(例如,智能電話)、服務(wù)器、網(wǎng)絡(luò)裝置(例如,路由器和交換機(jī))、移動(dòng)互聯(lián)網(wǎng)裝置(mid)、媒體播放器、智能電視、上網(wǎng)機(jī)、機(jī)頂盒、以及視頻游戲控制器。
在整個(gè)說明書中,引用“一個(gè)實(shí)施例”、“實(shí)施例”,“一個(gè)或多個(gè)實(shí)施例”、“一些實(shí)施例”例如指示特定特征可以在本發(fā)明的實(shí)踐中被包括但未必是必須的。類似地,在描述中,為了簡化本公開并有助于理解各種發(fā)明性方面,各種特征有時(shí)在單個(gè)實(shí)施例、圖或其描述中分組在一起。然而,本公開的方法并不被解釋為反映本發(fā)明要求比每個(gè)權(quán)利要求中明確陳述的更多特征的意圖。相反,正如以下的權(quán)利要求書所反映的,發(fā)明性方面在于少于單個(gè)公開的實(shí)施例的全部特征。因此,據(jù)此明確地將具體實(shí)施方式之后的權(quán)利要求結(jié)合到具體實(shí)施方式中,其中每一項(xiàng)權(quán)利要求獨(dú)立地代表本發(fā)明的一個(gè)單獨(dú)的實(shí)施例。
示例實(shí)施例
以下示例涉及進(jìn)一步的實(shí)施例??稍谝粋€(gè)或多個(gè)實(shí)施例中的任何地方使用示例中的細(xì)節(jié)。
示例1是一種處理器,所述處理器包括多個(gè)緊縮數(shù)據(jù)寄存器、以及解碼單元,所述解碼單元用于對指令進(jìn)行解碼。所述指令用于指示將包括多個(gè)莫頓坐標(biāo)的源緊縮數(shù)據(jù)操作數(shù)、可選地具有所述莫頓坐標(biāo)將被映射到的多個(gè)點(diǎn)的多維空間的維數(shù)、所述多維空間的給定維度、以及目的地存儲(chǔ)位置。所述處理器還包括執(zhí)行單元,所述執(zhí)行單元與所述緊縮數(shù)據(jù)寄存器和所述解碼單元耦合。所述執(zhí)行單元用于響應(yīng)于所述解碼單元對所述指令進(jìn)行解碼而將結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲(chǔ)在所述目的地存儲(chǔ)位置。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)將包括多個(gè)莫頓坐標(biāo),所述莫頓坐標(biāo)各自對應(yīng)于所述源緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)中的一個(gè)不同莫頓坐標(biāo)。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)將被映射到所述多維空間中的與所述源緊縮數(shù)據(jù)操作數(shù)的對應(yīng)莫頓坐標(biāo)將被映射到的點(diǎn)相差由所述指令指示的給定維度的固定變化的點(diǎn)。
示例2包括如示例1所述的處理器,其中,所述執(zhí)行單元用于存儲(chǔ)所述結(jié)果緊縮數(shù)據(jù)操作數(shù),在所述結(jié)果緊縮數(shù)據(jù)操作數(shù)中,所述給定維度的所述固定變化是所述給定維度的單位遞減。
示例3包括如示例1所述的處理器,其中,所述執(zhí)行單元用于通過以下方式生成所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的每個(gè)莫頓坐標(biāo):設(shè)置與所述源緊縮數(shù)據(jù)操作數(shù)的每個(gè)對應(yīng)莫頓坐標(biāo)的給定維度相對應(yīng)的所有最低階(最低有效)歸零位,所述最低階歸零位比與所述源緊縮數(shù)據(jù)操作數(shù)的每個(gè)莫頓坐標(biāo)的給定維度相對應(yīng)的每個(gè)最低階設(shè)置位更低階(低有效)。而且,清除與所述源緊縮數(shù)據(jù)操作數(shù)的每個(gè)莫頓坐標(biāo)的給定維度相對應(yīng)的最低階(或最低有效)設(shè)置位。
示例4包括如示例1至3中任一項(xiàng)所述的處理器,其中,所述解碼單元用于對要將所述多維空間的所述維數(shù)指示為至少二維和三維中的任一者的指令進(jìn)行解碼。
示例5包括如示例4所述的處理器,其中,所述解碼單元用于對要將所述多維空間的所述維數(shù)指示為所述二維、所述三維、以及可選的四維中的任一者的指令進(jìn)行解碼。
示例5包括如示例4所述的處理器,其中,所述解碼單元用于對要將所述多維空間的所述維數(shù)指示為所述二維、所述三維、以及可選的四維中的任一者的指令進(jìn)行解碼。
示例7包括如示例1至3中任一項(xiàng)所述的處理器,其中,所述解碼單元用于對將具有用于指示所述多維空間的所述維數(shù)的操作碼的指令進(jìn)行解碼。
示例8包括如示例1至3中任一項(xiàng)所述的處理器,其中,所述解碼單元用于對將可選地具有立即數(shù)或其他位集的指令進(jìn)行解碼,所述立即數(shù)或其他位集將包括用于將所述給定維度指示為至少兩個(gè)不同維度中的任一者的至少兩個(gè)位。
示例9包括如示例1至3中任一項(xiàng)所述的處理器,其中,所述解碼單元用于對將具有用于將所述給定維度指示為至少三個(gè)不同維度或者在一些情況下可選的四個(gè)不同維度中的任一者的至少兩個(gè)位的指令進(jìn)行解碼。
示例10包括如示例1至9中任一項(xiàng)所述的處理器,其中,所述執(zhí)行單元用于生成所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo),而不對所述源緊縮數(shù)據(jù)操作數(shù)的與不同維度相對應(yīng)的所述莫頓坐標(biāo)的位進(jìn)行解交織。
示例11包括如示例1至10中任一項(xiàng)所述的處理器,其中,所述執(zhí)行單元用于存儲(chǔ)所述結(jié)果緊縮數(shù)據(jù)操作數(shù),所述結(jié)果緊縮數(shù)據(jù)操作數(shù)具有不與所述源緊縮數(shù)據(jù)操作數(shù)的對應(yīng)莫頓坐標(biāo)成連續(xù)莫頓次序的至少一個(gè)莫頓坐標(biāo)。
示例12包括如示例1至11中任一項(xiàng)所述的處理器,進(jìn)一步包括分支預(yù)測單元,所述分支預(yù)測單元用于對多個(gè)分支進(jìn)行預(yù)測??蛇x的指令預(yù)取單元與所述分支預(yù)測單元耦合。所述指令預(yù)取單元用于預(yù)取包括所述指令的多個(gè)指令。可選的一級(jí)(l1)指令高速緩存與所述指令預(yù)取單元耦合。所述l1指令高速緩存用于存儲(chǔ)包括所述指令的多個(gè)指令??蛇x的l1數(shù)據(jù)高速緩存用于存儲(chǔ)數(shù)據(jù)??蛇x的二級(jí)(l2)高速緩存與所述l1指令高速緩存和所述l1數(shù)據(jù)高速緩存耦合。所述l2指令高速緩存用于存儲(chǔ)數(shù)據(jù)和多個(gè)指令。可選的指令獲取單元與所述l1指令高速緩存和所述解碼單元耦合,用于從所述l1指令高速緩存獲取所述指令并且向所述解碼單元提供所述指令??蛇x的寄存器重命名單元與所述緊縮數(shù)據(jù)寄存器耦合,用于對所述緊縮數(shù)據(jù)寄存器進(jìn)行重命名。
示例13是一種用于處理器中的方法,所述方法包括接收指令。所述指令指示包括多個(gè)莫頓坐標(biāo)的源緊縮數(shù)據(jù)操作數(shù)、具有所述莫頓坐標(biāo)被映射到的多個(gè)點(diǎn)的多維空間的維數(shù)、所述多維空間的給定維度、以及目的地存儲(chǔ)位置。所述方法還包括響應(yīng)于執(zhí)行所述指令而將結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲(chǔ)在所述目的地存儲(chǔ)位置中。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)包括多個(gè)莫頓坐標(biāo),所述莫頓坐標(biāo)各自對應(yīng)于所述源緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)中的一個(gè)不同莫頓坐標(biāo)。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)被映射到所述多維空間中的與所述源緊縮數(shù)據(jù)操作數(shù)的對應(yīng)莫頓坐標(biāo)將被映射到的點(diǎn)相差由所述指令指示的給定維度的固定變化的點(diǎn)。
示例14包括如示例13所述的方法,其中,存儲(chǔ)所述結(jié)果緊縮數(shù)據(jù)操作數(shù)包括存儲(chǔ)其中所述固定變化是所述給定維度的單位遞減的所述結(jié)果緊縮數(shù)據(jù)操作數(shù)。
示例15包括如示例13所述的方法,進(jìn)一步包括通過以下方式生成所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的每個(gè)莫頓坐標(biāo):設(shè)置與所述源緊縮數(shù)據(jù)操作數(shù)的每個(gè)對應(yīng)莫頓坐標(biāo)的給定維度相對應(yīng)的所有最低階歸零位,所述最低階歸零位比與所述源緊縮數(shù)據(jù)操作數(shù)的每個(gè)莫頓坐標(biāo)的給定維度相對應(yīng)的每個(gè)最低階設(shè)置位更低階。此外,清除與所述源緊縮數(shù)據(jù)操作數(shù)的每個(gè)莫頓坐標(biāo)的給定維度相對應(yīng)的最低階設(shè)置位。
示例16包括如示例13所述的方法,其中,接收包括接收能夠?qū)⑺龆嗑S空間的所述維數(shù)指示為至少二維和三維中的任一者的指令。
示例17包括如示例13所述的方法,其中,接收包括接收具有指示所述多維空間的所述維數(shù)的立即數(shù)的指令。
示例18包括如示例13所述的方法,其中,接收包括接收具有指示所述多維空間的所述維數(shù)的操作碼的指令。
示例19包括如示例13所述的方法,其中,接收包括接收具有能夠?qū)⑺鼋o定維度指示為至少三個(gè)不同維度中的任一者的至少兩個(gè)位的指令。
示例20包括如示例13至19中任一項(xiàng)所述的方法,進(jìn)一步包括生成所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo),而不對所述源緊縮數(shù)據(jù)操作數(shù)的與不同維度相對應(yīng)的所述莫頓坐標(biāo)的位進(jìn)行解交織。
示例21是一種用于處理多個(gè)指令的系統(tǒng),所述系統(tǒng)包括互連、和與所述互連耦合的處理器。所述處理器用于接收指令,所述指令用于指示將包括多個(gè)莫頓坐標(biāo)的源緊縮數(shù)據(jù)操作數(shù)、具有所述莫頓坐標(biāo)將被映射到的點(diǎn)的多維空間的給定維度、以及目的地緊縮數(shù)據(jù)寄存器。所述處理器用于響應(yīng)于所述指令而將結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲(chǔ)在所述目的地緊縮數(shù)據(jù)寄存器中。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)將包括多個(gè)莫頓坐標(biāo),所述莫頓坐標(biāo)各自對應(yīng)于所述源緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)中的一個(gè)不同莫頓坐標(biāo)。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)將被映射到所述多維空間中的與所述源緊縮數(shù)據(jù)操作數(shù)的對應(yīng)莫頓坐標(biāo)將被映射到的點(diǎn)相差給定維度減一的點(diǎn)。所述系統(tǒng)還包括與互連耦合的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)。
示例22包括如示例19所述的系統(tǒng),其中,所述處理器響應(yīng)于允許多維空間的維數(shù)為多個(gè)不同維數(shù)中的任一者的指令。
示例23是一種制品,所述制品包括非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì)。所述非瞬態(tài)機(jī)器可讀存儲(chǔ)介質(zhì)存儲(chǔ)指令。所述指令用于指示將包括多個(gè)莫頓坐標(biāo)的源緊縮數(shù)據(jù)操作數(shù)。多維空間的給定維度具有所述莫頓坐標(biāo)將被映射到的點(diǎn)。所述指令如果由機(jī)器執(zhí)行則用于使所述機(jī)器執(zhí)行多項(xiàng)操作,所述操作包括將結(jié)果緊縮數(shù)據(jù)操作數(shù)存儲(chǔ)在目的地存儲(chǔ)位置中。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)將包括多個(gè)莫頓坐標(biāo),所述莫頓坐標(biāo)各自對應(yīng)于所述源緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)中的一個(gè)不同莫頓坐標(biāo)。所述結(jié)果緊縮數(shù)據(jù)操作數(shù)的所述莫頓坐標(biāo)將被映射到所述多維空間中的與所述源緊縮數(shù)據(jù)操作數(shù)的對應(yīng)莫頓坐標(biāo)將被映射到的點(diǎn)相差由所述指令指示的所述給定維度減一的點(diǎn)。
示例24包括如示例21所述的制品,其中,所述指令的操作碼允許所述多維空間的多個(gè)不同維數(shù),并且其中所述指令具有用于指示所述多維空間的維數(shù)的一個(gè)或多個(gè)位。
示例25是一種操作用于執(zhí)行如示例13至20中任一項(xiàng)所述的方法的處理器或其他設(shè)備。
示例26是一種包括用于執(zhí)行如示例13至20中任一項(xiàng)所述的方法的裝置的處理器或其他設(shè)備。
示例27是一種包括用于執(zhí)行如示例13至20中任一項(xiàng)所述的方法的模塊和/或單元和/或邏輯和/或電路和/或裝置的任何組合的處理器或其他設(shè)備。
實(shí)施例28是一種制品,所述制品包括可選的非瞬態(tài)機(jī)器可讀介質(zhì),所述非瞬態(tài)機(jī)器可讀介質(zhì)可選地存儲(chǔ)或以其他方式提供指令,所述指令如果和/或當(dāng)由處理器、計(jì)算機(jī)系統(tǒng)、電子設(shè)備或其他機(jī)器執(zhí)行時(shí)操作用于使機(jī)器執(zhí)行如示例13至20中任一項(xiàng)所述的方法。
示例29是一種計(jì)算機(jī)系統(tǒng)或其他電子設(shè)備,所述計(jì)算機(jī)系統(tǒng)或其他電子設(shè)備包括互連、與所述互連耦合的如權(quán)利要求1至12中任一項(xiàng)所述的處理器、與所述互連耦合的可選的動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram),與所述互連耦合的可選的無線收發(fā)器、與所述互連耦合的可選的圖像傳感器、以及與所述互連耦合的可選的觸摸屏控制器。
示例30是一種基本如本文所述的處理器或其他設(shè)備。
示例31是一種操作用于執(zhí)行基本如本文所述的任一方法的處理器或其他設(shè)備。