專利名稱:用于處理向量指令的數(shù)據(jù)處理設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及ー種用于處理向量指令的數(shù)據(jù)處理設(shè)備和方法。
背景技術(shù):
向量處理是在數(shù)據(jù)處理系統(tǒng)中變得越來越平常的處理技術(shù)。向量處理單元已被開發(fā)用于執(zhí)行這樣的向量處理運(yùn)算,并且允許同時(shí)對(duì)多個(gè)數(shù)據(jù)元素執(zhí)行運(yùn)算。向量處理單元提供多個(gè)并行處理通道(lane)以使得當(dāng)數(shù)據(jù)元素被輸入這些并行處理通道時(shí),可以在這些并行處理通道內(nèi)并行地執(zhí)行數(shù)據(jù)處理運(yùn)算。這使得相比于標(biāo)量處理技術(shù)能夠?qū)崿F(xiàn)明顯的性能益處,標(biāo)量處理技術(shù)需要順序地執(zhí)行數(shù)據(jù)處理運(yùn)算多次,其中通常對(duì)于每次迭代使用不同的數(shù)據(jù)元素。US 2007/0250681描述了這樣的向量處理單元,在在此所描述的系統(tǒng)中,該向量處理單元采取執(zhí)行主處理器需要的向量處理運(yùn)算的協(xié)同處理器的形式。作為提供作為協(xié)同處理器的向量處理單元的替代方法,可以通過復(fù)制標(biāo)準(zhǔn)處理器的基礎(chǔ)架構(gòu)的核心處理元件中的一部分并增加允許在這些單元中同時(shí)處理多個(gè)數(shù)據(jù)元素的特殊指令來擴(kuò)展標(biāo)準(zhǔn)處理器的基礎(chǔ)架構(gòu)。存在可以從向量處理的使用中受益的許多種數(shù)據(jù)處理運(yùn)算。例如,計(jì)算機(jī)圖形硬件和視頻游戲控制臺(tái)主要依賴于它們的架構(gòu)中的向量處理器以提供高性能的圖形處理功倉^:。將由向量處理單元處理的數(shù)據(jù)元素通常被排列成數(shù)據(jù)元素的向量,每個(gè)向量包括多個(gè)數(shù)據(jù)元素,并且每個(gè)向量中的每個(gè)數(shù)據(jù)元素形成不同并行處理通道的輸入數(shù)據(jù)元素。盡管以上討論的向量處理方法在輸入向量中的全部數(shù)據(jù)元素都需要經(jīng)過特定數(shù)據(jù)處理運(yùn)算的情形中可以產(chǎn)生非常顯著的性能益處,但是出現(xiàn)了這樣的情形,其中期望使得特定運(yùn)算的執(zhí)行在不同并行處理通道中是有條件的。根據(jù)這樣的方法,輸入數(shù)據(jù)元素的向量將仍然被提供給向量處理單元,但是由特定向量指令指定的運(yùn)算將不一定在全部并行處理通道中被執(zhí)行。然而,將這樣的條件性編碼在定義將對(duì)輸入數(shù)據(jù)元素執(zhí)行的向量運(yùn)算的向量指令中是個(gè)復(fù)雜的問題,并且很有可能導(dǎo)致明顯增大這樣的指令的大小。因此,通常的情況是,當(dāng)需要這樣的條件性吋,不使用向量處理單元,而是在標(biāo)量處理單元內(nèi)執(zhí)行一系列標(biāo)量運(yùn)算來對(duì)需要執(zhí)行該運(yùn)算的數(shù)據(jù)元素子集執(zhí)行所需運(yùn)算。然而,這對(duì)性能的影響很大,并且期望即使在要求每個(gè)并行處理通道內(nèi)的條件運(yùn)行的情形中也允許實(shí)現(xiàn)使用向量處理單元的性能益處。
發(fā)明內(nèi)容
從第一方面來看,本發(fā)明提供ー種數(shù)據(jù)處理設(shè)備,包括寄存器數(shù)據(jù)儲(chǔ)存庫,該寄存器數(shù)據(jù)儲(chǔ)存庫具有被布置為存儲(chǔ)數(shù)據(jù)元素的多個(gè)寄存器;向量處理單元,該向量處理單元用于運(yùn)行向量指令序列,向量處理單元具有多個(gè)并行處理通道,并且能夠訪問寄存器數(shù)據(jù)儲(chǔ)存庫,以便在所述向量指令序列的運(yùn)行期間從寄存器數(shù)據(jù)儲(chǔ)存庫讀出數(shù)據(jù)元素和向寄存器數(shù)據(jù)儲(chǔ)存庫寫入數(shù)據(jù)元素;跳過指示存儲(chǔ)裝置,該跳過指示存儲(chǔ)裝置用于維護(hù)所述并行處理通道的每個(gè)通道的跳過指示符;該向量處理單元,響應(yīng)于所述向量指令序列內(nèi)的向量跳過指令,執(zhí)行更新操作,以在跳過指示存儲(chǔ)裝置內(nèi)設(shè)置用于多個(gè)通道中的確定的ー個(gè)或多個(gè)通道的跳過指示符;并且該向量處理單元響應(yīng)于所述向量指令序列內(nèi)的向量運(yùn)算指令,對(duì)輸入到所述多個(gè)并行處理通道的數(shù)據(jù)元素并行地執(zhí)行運(yùn)算,但是從所述運(yùn)算的執(zhí)行中排除其相關(guān)聯(lián)的跳過指示符已被設(shè)置的任何通道。根據(jù)本發(fā)明,針對(duì)每個(gè)并行處理通道維護(hù)跳過指示符。跳過指示符隨后被用來在被向量處理單元運(yùn)行時(shí)導(dǎo)致更新操作被執(zhí)行,結(jié)果,用于確定的一個(gè)或多個(gè)并行處理通道的跳過指示符被設(shè)置。當(dāng)運(yùn)行向量運(yùn)算指令時(shí),向量處理單元被布置為參考每個(gè)并行處理通道的跳過指示符,并且從由向量運(yùn)算指令指定的運(yùn)算的執(zhí)行中排除其相關(guān)聯(lián)的跳過指示符已被設(shè)置的任何通道。
因此,通過針對(duì)每個(gè)并行處理通道使用這樣的跳過指示符,并且使用向量跳過指令來設(shè)置這些跳過指示符,可以在每個(gè)并行處理通道內(nèi)提供對(duì)向量運(yùn)算指令的有條件的運(yùn)行,而不需要修改向量運(yùn)算指令本身。因此,這使得能夠?qū)崿F(xiàn)向量處理單元的利用率的提升,這是因?yàn)榻o定從這些運(yùn)算的執(zhí)行中有選擇地排除一個(gè)或多個(gè)并行處理通道的能力,可能不得不另外以串行方式執(zhí)行的運(yùn)算現(xiàn)在可以使用向量處理單元被并行地處理。雖然在一個(gè)實(shí)施例中,向量跳過指令的運(yùn)行可以促使所有通道都經(jīng)歷更新操作,而不論用于那些通道的跳過指示符是否已經(jīng)被設(shè)置,但是,在一個(gè)實(shí)施例中,當(dāng)運(yùn)行向量跳過指令時(shí),向量處理單元從更新操作中排除當(dāng)該向量跳過指令被運(yùn)行時(shí)已經(jīng)被設(shè)置了的任何跳過指示符。因此,在此實(shí)施例中,當(dāng)向量跳過指令被運(yùn)行時(shí)已經(jīng)被設(shè)置了的任何跳過指示符被從更新操作中排除,并且因此,向量跳過指令本身的應(yīng)用可以被使得是有條件的。跳過指示符可以采取各種形式。然而,在一個(gè)實(shí)施例中,每個(gè)跳過指示符包括跳過計(jì)數(shù)值,跳過計(jì)數(shù)值當(dāng)具有非零值時(shí)被認(rèn)為是已被設(shè)置的,并且當(dāng)具有零值時(shí)被認(rèn)為是未被設(shè)置的。在這樣的實(shí)施例中,向量處理單元響應(yīng)于向量跳過指令來將所述確定的ー個(gè)或多個(gè)通道的跳過計(jì)數(shù)值設(shè)置為預(yù)定非零值,并且,對(duì)于序列內(nèi)的每個(gè)向量指令,如果所述跳過計(jì)數(shù)值在向量指令被運(yùn)行時(shí)是已被設(shè)置的,則向量處理單元被布置為遞減跳過計(jì)數(shù)值而不是執(zhí)行由該向量指令指定的運(yùn)算。結(jié)果,將被跳過的后續(xù)向量指令的數(shù)目可以根據(jù)跳過計(jì)數(shù)值被初始設(shè)置成的預(yù)定非零值而不同。此外,在其中向量跳過指令本身僅僅針對(duì)還未被設(shè)置的跳過指示符而被執(zhí)行的實(shí)施例中,將明白,隨著時(shí)間過去,各個(gè)跳過計(jì)數(shù)值將采用不同的值,并且因此,各個(gè)跳過計(jì)數(shù)值通過上述遞減處理被清除的時(shí)間點(diǎn)將不同。這允許向量跳過指令的嵌套,允許復(fù)雜的條件操作序列在向量處理單元內(nèi)被執(zhí)行,而不必對(duì)向量運(yùn)算指令本身做任何修改。而是,經(jīng)過任何特定向量運(yùn)算的并行處理通道通過相關(guān)聯(lián)的向量運(yùn)算指令被運(yùn)行時(shí)的各種跳過計(jì)數(shù)值的狀態(tài)而被確定。在一個(gè)實(shí)施例中,跳過計(jì)數(shù)值可以是僅允許單個(gè)后續(xù)向量指令被跳過的單比特值,但是在可替換實(shí)施例中,可以提供多比特跳過計(jì)數(shù)值。通過提供多比特跳過計(jì)數(shù)值,可以實(shí)現(xiàn)跳過功能的復(fù)雜嵌套。跳過計(jì)數(shù)值通過向量跳過指令被設(shè)置成的預(yù)定非零值可以是固定的。然而,在一個(gè)實(shí)施例中,預(yù)定非零值被指定為向量跳過指令的操作數(shù)(operand)。如之前所提及的,對(duì)于每個(gè)運(yùn)行的向量指令,如果跳過計(jì)數(shù)值在該指令被運(yùn)行時(shí)是已被設(shè)置的,則跳過計(jì)數(shù)值被遞減而不是執(zhí)行由向量指令指定的預(yù)算。在一個(gè)實(shí)施例中,這不僅適用于向量元素指令也適用于向量跳過指令本身。在一個(gè)實(shí)施例中,當(dāng)運(yùn)行向量跳過指令時(shí),將僅針對(duì)在跳過指令被運(yùn)行時(shí)還未被設(shè)置(即還不是零值)的那些跳過指示符執(zhí)行更新操作。在一個(gè)這樣的實(shí)施例中,向量跳過指令的運(yùn)行將只會(huì)促使相關(guān)的跳過指令被設(shè)置,并且針對(duì)那些“剛設(shè)置”的跳過指示符不通過向量跳過指令的運(yùn)行采取任何進(jìn)ー步的動(dòng)作。然而,在可替換實(shí)施例中,向量跳過指令可以被布置為遞減所有設(shè)置的跳過計(jì)數(shù)值,不論那些設(shè)置的跳過計(jì)數(shù)值是在向量跳過指令被執(zhí)行之前被設(shè)置的,還是由于向量跳過指令的執(zhí)行而剛剛被設(shè)置的。在這樣的實(shí)施例中,將明白,預(yù)定的非零值通常將至少為2,以確保向量跳過指令后的至少ー個(gè)指令被跳過。作為將跳過指示符布置為經(jīng)由向量跳過指令被設(shè)置井隨后在每個(gè)后續(xù)向量指令的執(zhí)行時(shí)被遞減直到返回到零的跳過計(jì)數(shù)值的替換,在一個(gè)實(shí)施例中,每個(gè)跳過指示符保 持設(shè)置,直到向量處理單元運(yùn)行向量跳過結(jié)束指令來清除設(shè)置的跳過指示符為止。給定特定大小的跳過指示存儲(chǔ)裝置,相比于經(jīng)由跳過指示存儲(chǔ)裝置內(nèi)的跳過計(jì)數(shù)值來進(jìn)行指定,這樣的方法將允許在所識(shí)別的通道中跳過更長(zhǎng)的指令序列。在其中跳過指示符保持設(shè)置直到向量處理單元運(yùn)行跳過結(jié)束指令來清除設(shè)置的跳過指示符為止的實(shí)施例中,設(shè)置的跳過指示符可以被實(shí)現(xiàn)為単比特值。按照跳過指示符的設(shè)置,當(dāng)在運(yùn)行期間遇到每個(gè)后續(xù)的向量指令時(shí),在跳過指示符已被設(shè)置的通道中不采取動(dòng)作,并且因此,在該通道內(nèi)不執(zhí)行由這些隨后的向量指令指定的運(yùn)算。當(dāng)遇到跳過結(jié)束指令時(shí),跳過指示符隨后被清除,以使得在該通道內(nèi)將不運(yùn)行后續(xù)指令。在又一實(shí)施例中,跳過指示符可以是給定的多比特值,其中僅跳過結(jié)束指令導(dǎo)致該多比特值被遞減。這允許執(zhí)行嵌套以使得跳過結(jié)束指令的具體實(shí)例可以促使某些通道的跳過指示符被清除(因?yàn)樘^值被遞減為零),而對(duì)于其他通道,遞減步驟將仍然使跳過指示符可設(shè)置(因?yàn)檫f減仍然使計(jì)數(shù)值是非零的)。在一個(gè)實(shí)施例中,可以結(jié)合使用如下兩種形式的跳過指示符在毎次隨后運(yùn)行的向量指令的發(fā)生時(shí)被遞減的跳過計(jì)數(shù)值形式的跳過指示符,以及保持設(shè)置直到跳過結(jié)束指令的運(yùn)行為止的跳過指示符。以下,如果為了清楚有必要,保持設(shè)置直到跳過結(jié)束指令的運(yùn)行為止的后ー類型的跳過指示符將被稱為“短跳過”指示符。具體地,在一個(gè)實(shí)施例中,除了短跳過計(jì)數(shù)值以外,所述跳過指示存儲(chǔ)裝置還包括用于所述并行處理通道的每個(gè)的長(zhǎng)跳過指示符。另一向量跳過指令隨后被提供,該另一向量跳過指令當(dāng)被向量處理單元執(zhí)行時(shí)導(dǎo)致用于確定的一個(gè)或多個(gè)通道的每個(gè)通道的長(zhǎng)跳過指示符被設(shè)置,而不是那些通道的跳過計(jì)數(shù)值被設(shè)置,長(zhǎng)跳過指示符在每個(gè)向量指令被執(zhí)行時(shí)保持設(shè)置。如以上所討論的,長(zhǎng)跳過指示符可以是單比特值,在該情況中,向量處理單元響應(yīng)于跳過結(jié)束指令來清除每個(gè)設(shè)置的長(zhǎng)跳過指示符??商鎿Q地,每個(gè)長(zhǎng)跳過指示符包括長(zhǎng)跳過計(jì)數(shù)值,該長(zhǎng)跳過計(jì)數(shù)值當(dāng)具有非零值時(shí)被認(rèn)為是已被設(shè)置的,并且當(dāng)具有零值時(shí)是未被設(shè)置的。響應(yīng)于另一向量跳過指令,該向量處理單元導(dǎo)致用于所述確定的ー個(gè)或多個(gè)通道的每個(gè)通道的長(zhǎng)跳過計(jì)數(shù)值被遞增,并且向量處理單元響應(yīng)于向量跳過結(jié)束指令來遞減每個(gè)設(shè)置的長(zhǎng)跳過計(jì)數(shù)值。
因此,在這樣的實(shí)施例中,雖然短跳過計(jì)數(shù)值在它們已被設(shè)置之后在每個(gè)向量指令發(fā)生時(shí)被遞減,但是長(zhǎng)跳過計(jì)數(shù)值僅因?yàn)樘^結(jié)束指令而被遞減,并且其他類型的向量指令將不會(huì)導(dǎo)致那些長(zhǎng)跳過計(jì)數(shù)值被遞減。跳過指示存儲(chǔ)裝置可以以各種方式布置。在一個(gè)實(shí)施例中,跳過指示存儲(chǔ)裝置可以包括用于存儲(chǔ)用于每個(gè)并行處理通道的短跳過指示符的第一寄存器和用于存儲(chǔ)用于每個(gè)并行處理通道的長(zhǎng)跳過指示符的第二寄存器。然而,在可替換實(shí)施例中,跳過指示存儲(chǔ)裝置可以包括以如下方式用于存儲(chǔ)用于每個(gè)并行處理通道的跳過指示符的單個(gè)寄存器跳過指示符針對(duì)每個(gè)通道被編碼,從而標(biāo)識(shí)其是短跳過指示符還是長(zhǎng)跳過指示符。具體地,在一個(gè)實(shí)施例中,每個(gè)跳過指示符可被向量處理單元設(shè)置成第一組多個(gè)非零值中的任一個(gè)來標(biāo)識(shí)設(shè)置的短跳過計(jì)數(shù)值,并且可被設(shè)置成不在所述第一組多個(gè)非零值中的至少ー個(gè)預(yù)定非零值來標(biāo)識(shí)設(shè)置的長(zhǎng)跳過指示符。作為具體示例,考慮其中跳過指示存儲(chǔ)裝置為每個(gè)跳過指示符提供4比特的值的情形,至少值“1111”可以被保留來標(biāo)識(shí)設(shè)置的長(zhǎng)跳過指示符。在ー個(gè)特定實(shí)施例中,允許I和13之間的短跳過計(jì)數(shù)值被指定。因此,在這樣的實(shí)施例中,如果在向量指令后需要長(zhǎng)于13的跳 過,則將需要使用長(zhǎng)跳過指示符而不是短跳過指示符。在一個(gè)實(shí)施例中,向量跳過指令將確定的一個(gè)或多個(gè)通道的跳過指示符將被設(shè)置成的預(yù)定非零值指定為跳過指示符操作數(shù)。雖然另一向量跳過指令可以是與該向量跳過指令完全不同的指令,但在ー個(gè)實(shí)施例中,向量跳過指令和該另一向量跳過指令二者具有相同的形式,但是該另一向量跳過指令將空值指定為跳過指示符操作數(shù),從而將另一向量跳過指令與向量跳過指令區(qū)分開。存在向量處理單元可以用來確定哪些通道的跳過指示符將在向量跳過指令運(yùn)行時(shí)被設(shè)置的許多方式。在一個(gè)實(shí)施例中,向量跳過指令直接地標(biāo)識(shí)其跳過指示符將被設(shè)置的ー個(gè)或多個(gè)通道。因此,作為示例,向量跳過指令的具體形式可以指定所有奇數(shù)通道的跳過指示符應(yīng)被設(shè)置,另ー形式的向量跳過指令可以指定所有偶數(shù)通道的跳過指示符應(yīng)當(dāng)被設(shè)置,或者更一般地,向量跳過指令可以標(biāo)識(shí)某一形式的比特掩碼,從而標(biāo)識(shí)哪些通道的跳過指示符應(yīng)被設(shè)置。然而,在可替換實(shí)施例中,向量跳過指令不直接標(biāo)識(shí)其跳過指示符將被設(shè)置的通道,而是響應(yīng)于向量跳過指令,向量處理單元針對(duì)每個(gè)通道是否滿足評(píng)估ー個(gè)或多個(gè)預(yù)定條件,并且根據(jù)所述評(píng)估來標(biāo)識(shí)其跳過指示符將被設(shè)置的所述確定的ー個(gè)或多個(gè)通道。在一個(gè)實(shí)施例中,其跳過指示符被設(shè)置的通道是滿足一個(gè)或多個(gè)預(yù)定條件的通道。然而,將明白,在可替換實(shí)施例中,其跳過指示符被設(shè)置的通道可以被選成不滿足ー個(gè)或多個(gè)預(yù)定條件的那些通道。存在可以促使向量處理單元在運(yùn)行向量跳過指令時(shí)評(píng)估是否滿足ー個(gè)或多個(gè)預(yù)定條件的許多方式。在一個(gè)實(shí)施例中,向量處理單元在向量跳過指令的運(yùn)行期間可以執(zhí)行所需測(cè)試來檢查是否滿足預(yù)定條件。然而,在可替換實(shí)施例中,數(shù)據(jù)處理設(shè)備還包括用于存儲(chǔ)所述并行處理通道的每個(gè)通道的至少ー個(gè)條件代碼的條件代碼存儲(chǔ)裝置以及被布置為針對(duì)每個(gè)通道通過檢查所述至少ー個(gè)條件代碼是否被設(shè)置來所述ー個(gè)或多個(gè)預(yù)定條件是否滿足。條件代碼通常被在數(shù)據(jù)處理系統(tǒng)內(nèi),其中諸如比較指令之類的各種指令被用來評(píng)估當(dāng)程序運(yùn)行時(shí)的特定條件,并且相應(yīng)地設(shè)置條件代碼。條件代碼的ー些示例是等于(EQ)、不等于(NEQ)、大于(GT)、小于(LT)代碼等。對(duì)于具有多個(gè)并行處理通道的向量處理單元,這些條件代碼可以針對(duì)每個(gè)并行處理通道被指定。在這樣的實(shí)施例中,向量跳過指令可以指定需要設(shè)置的ー個(gè)或多個(gè)條件代碼以便觸發(fā)對(duì)用于相關(guān)通道的跳過指示符的設(shè)置。作為示例,向量跳過指令可以標(biāo)識(shí)出應(yīng)當(dāng)為被設(shè)置了 “大干”條件代碼的那些通道設(shè)置跳過指示符。 存在針對(duì)其跳過指示符被設(shè)置的通道將該通道從由向量指令指定的運(yùn)算的執(zhí)行中排除的許多方式。在一個(gè)實(shí)施例中,可以在ー開始就防止在通道內(nèi)執(zhí)行用于實(shí)現(xiàn)運(yùn)算的實(shí)際計(jì)算。然而,在可替換實(shí)施例中,實(shí)際上允許那些計(jì)算在通道內(nèi)發(fā)生,但是所產(chǎn)生的結(jié)果值隨后被丟棄,從而就系統(tǒng)的其余部分而言,實(shí)際上將該通道從運(yùn)算的執(zhí)行中排除出去。從控制的角度來看,相比于實(shí)際地防止在通道內(nèi)發(fā)生計(jì)算,基于跳過指示符的值有選擇地丟棄結(jié)果這種方式常常更容易實(shí)現(xiàn)。用于存儲(chǔ)向量處理單元能夠利用的數(shù)據(jù)元素的寄存器數(shù)據(jù)儲(chǔ)存庫可以采用各種形式。然而,在一個(gè)實(shí)施例中,寄存器數(shù)據(jù)儲(chǔ)存庫包括向量寄存器組,向量寄存器組包括多個(gè)向量寄存器,每個(gè)向量寄存器存儲(chǔ)將被提供給所述向量處理單元內(nèi)的不同并行處理通道的多個(gè)數(shù)據(jù)元素。在一個(gè)實(shí)施例中,單個(gè)向量寄存器可以存儲(chǔ)對(duì)于將被提供給向量處理單 元內(nèi)的每個(gè)并行處理通道的一個(gè)數(shù)據(jù)元素足夠的數(shù)據(jù)元素。在一個(gè)實(shí)施例中,向量處理單元和相關(guān)聯(lián)的寄存器數(shù)據(jù)儲(chǔ)存庫可以被形成為單獨(dú)的、專門的向量處理器。這樣的處理器可以利用用作更大系統(tǒng)內(nèi)的協(xié)同處理器來代表主處理器執(zhí)行處理操作。在可替換實(shí)施例中,向量處理單元可以形成在ー個(gè)或多個(gè)不同分支中支持標(biāo)量運(yùn)算的處理器內(nèi)的相鄰處理分支。因此,在這樣的實(shí)施例中,數(shù)據(jù)處理設(shè)備還包括標(biāo)量處理單元以及與標(biāo)量處理單元相關(guān)聯(lián)的標(biāo)量寄存器組。在一個(gè)實(shí)施例中,標(biāo)量處理単元和向量處理單元可以具有単獨(dú)的指令取出和指令譯碼單元,但是在一個(gè)可替換實(shí)施例中,指令取出和指令譯碼單元在標(biāo)量處理單元和向量處理單元之間被共享。在一個(gè)實(shí)施例中,向量處理單元是允許在任何一次的運(yùn)行過程中具有多個(gè)向量指令的流水線處理単元。維護(hù)用于每個(gè)并行處理通道的跳過指示符的跳過指示存儲(chǔ)裝置可以以各種方式實(shí)現(xiàn)。例如,跳過指示存儲(chǔ)裝置可以由寄存器數(shù)據(jù)儲(chǔ)存庫中的寄存器之一提供。然而,在可替換實(shí)施例中,跳過指示存儲(chǔ)裝置由向量處理單元內(nèi)的內(nèi)部存儲(chǔ)裝置形成,在ー個(gè)具體實(shí)施例中,跳過指示存儲(chǔ)裝置由與流水線向量處理單元的運(yùn)行級(jí)相關(guān)聯(lián)的內(nèi)部狀態(tài)寄存器提供。從第二個(gè)方面來看,本發(fā)明提供一種用于在數(shù)據(jù)處理設(shè)備內(nèi)處理向量指令的方法,數(shù)據(jù)處理設(shè)備包括具有被布置為存儲(chǔ)數(shù)據(jù)元素的多個(gè)寄存器的寄存器數(shù)據(jù)儲(chǔ)存庫,以及用于運(yùn)行向量指令序列的向量處理單元,向量處理單元具有多個(gè)并行處理通道,并且能夠訪問寄存器數(shù)據(jù)儲(chǔ)存庫,以便在所述向量指令序列的運(yùn)行期間從寄存器數(shù)據(jù)儲(chǔ)存庫讀出數(shù)據(jù)元素和向寄存器數(shù)據(jù)儲(chǔ)存庫寫入數(shù)據(jù)元素,方法包括以下步驟在跳過指示存儲(chǔ)裝置內(nèi)維護(hù)所述并行處理通道的每個(gè)通道的跳過指示符;響應(yīng)于所述向量指令序列內(nèi)的向量跳過指令,執(zhí)行更新操作,以在跳過指示存儲(chǔ)裝置內(nèi)設(shè)置所述多個(gè)通道中的確定的一個(gè)或多個(gè)通道的跳過指示符;以及響應(yīng)于所述向量指令序列內(nèi)的向量運(yùn)算指令,對(duì)輸入到多個(gè)并行處理通道的數(shù)據(jù)元素并行地執(zhí)行運(yùn)算,但是從所述運(yùn)算的執(zhí)行中排除其相關(guān)聯(lián)的跳過指示符已被設(shè)置的任何通道。從第三個(gè)方面來看,本發(fā)明提供ー種包括計(jì)算機(jī)可讀指令的計(jì)算機(jī)程序產(chǎn)品,計(jì)算機(jī)可讀指令當(dāng)在計(jì)算機(jī)上運(yùn)行時(shí)促使該計(jì)算機(jī)執(zhí)行如本發(fā)明的第二個(gè)方面的處理向量指令的方法。從第四個(gè)方面來看,本發(fā)明提供ー種數(shù)據(jù)處理設(shè)備,包括寄存器數(shù)據(jù)儲(chǔ)存庫裝置,寄存器數(shù)據(jù)儲(chǔ)存庫裝置具有用于存儲(chǔ)數(shù)據(jù)元素的多個(gè)寄存器裝置;向量處理裝置,該向量處理裝置用于運(yùn)行向量指令序列,所向量處理裝置用于提供多個(gè)并行處理通道,并且用于能夠訪問所述寄存器數(shù)據(jù)儲(chǔ)存庫裝置,以便在所述向量指令序列的運(yùn)行期間從寄存器數(shù)據(jù)儲(chǔ)存庫裝置讀出數(shù)據(jù)元素和向寄存器數(shù)據(jù)儲(chǔ)存庫裝置寫入數(shù)據(jù)元素;跳過指示存儲(chǔ)裝置,該跳過指示存儲(chǔ)裝置用于維護(hù)所述并行處理通道的每個(gè)通道的跳過指示符;向量處理裝置,響應(yīng)于所述向量指令序列內(nèi)的向量跳過指令,用于執(zhí)行更新操作,以在跳過指示存儲(chǔ)裝置內(nèi)設(shè)置所述多個(gè)通道中的確定的一個(gè)或多個(gè)通道的跳過指示符;并且該向量處理裝置響應(yīng)于所述向量指令序列內(nèi)的向量運(yùn)算指令,用于對(duì)輸入到所述多個(gè)并行處理通道的數(shù)據(jù)元素并行地執(zhí)行運(yùn)算,但是從所述運(yùn)算的執(zhí)行中排除其相關(guān)聯(lián)的跳過指示符已被設(shè)置的任何通道。
將參考附圖中所示的本發(fā)明的實(shí)施例僅以示例方式來進(jìn)ー步描述本發(fā)明,其中
圖I示意性地圖示出根據(jù)實(shí)施例的處理器的至少一部分;圖2示意性地圖示出根據(jù)實(shí)施例的處理器;圖3示意性地圖示出根據(jù)實(shí)施例的向量寄存器組;圖4是圖示出根據(jù)實(shí)施例的方法的流程圖;圖5更詳細(xì)地圖示出根據(jù)ー個(gè)實(shí)施例的圖2的向量運(yùn)行路徑的運(yùn)行級(jí)內(nèi)設(shè)置的元件;圖6是示意性地圖示出根據(jù)ー個(gè)實(shí)施例的向量指令的運(yùn)行的流程圖;圖7是更詳細(xì)地圖示出根據(jù)ー個(gè)實(shí)施例的當(dāng)運(yùn)行向量指令時(shí)在每個(gè)通道內(nèi)執(zhí)行的處理的流程圖;圖8A至圖SC示意性地圖示出根據(jù)不同實(shí)施例所使用的跳過計(jì)數(shù)器寄存器的不同格式;圖9是圖示出根據(jù)ー個(gè)實(shí)施例的當(dāng)使用圖SC的跳過計(jì)數(shù)器寄存器時(shí)可以使用的組合編碼的表格;以及圖10是示意性地圖示出根據(jù)ー個(gè)實(shí)施例的跳過計(jì)數(shù)器的使用的示圖。
具體實(shí)施例方式圖I示意性地圖示出根據(jù)實(shí)施例的處理器100的至少一部分。處理器100包括專用向量處理單元(在此也稱為向量運(yùn)行單元)102,其中來自己譯碼指令的控制信號(hào)被饋送到該專用向量處理單元102。處理器100優(yōu)選是流水線處理器,專用向量運(yùn)行單元102可以包括用于算術(shù)邏輯運(yùn)算104、數(shù)據(jù)存儲(chǔ)器存取106和寄存器寫回108的各級(jí)。與專用向量運(yùn)行単元102相關(guān)聯(lián)地,提供向量寄存器組110,向量寄存器組110包括第一數(shù)目k個(gè)向量寄存器,每個(gè)向量寄存器包括第二數(shù)目I個(gè)數(shù)據(jù)元素,其中,每個(gè)數(shù)據(jù)元素具有第三數(shù)目m個(gè)比特,例如如圖3中所示。向量處理單元包括多個(gè)并行處理通道,并且在一個(gè)實(shí)施例中,當(dāng)運(yùn)行指定一個(gè)或多個(gè)輸入向量計(jì)算器的向量指令時(shí),每個(gè)通道接收來自每個(gè)指定的輸入向量寄存器的數(shù)據(jù)元素中的ー個(gè)。因此,如圖3中所示意地示出的,在此實(shí)施例中,每個(gè)向量寄存器可以被視為存儲(chǔ)了用于I個(gè)并行處理通道的數(shù)據(jù)元素。在接收到來自己譯碼向量指令的控制信號(hào)時(shí),專用向量運(yùn)行單元102從向量寄存器組110讀取必要的值,并且當(dāng)已譯碼向量指令是通過流水線被運(yùn)行的時(shí),寫回級(jí)將任意新的寄存器值饋送給寄存器組以供寫入。在一些實(shí)施例中,還將提供轉(zhuǎn)發(fā)路徑以允許ー個(gè)運(yùn)算的結(jié)果值作為輸入被直接反饋給后續(xù)運(yùn)算,而不需要再從向 量寄存器組110讀取這些值。如稍后將更詳細(xì)討論的,在接收到并運(yùn)行跳過指令吋,專用向量運(yùn)行單元102控制與每個(gè)并行處理通道相關(guān)聯(lián)的跳過指示符,即跳過計(jì)數(shù)器,跳過指示符的值指示由跟隨在該跳過指令之后的一個(gè)或多個(gè)后續(xù)向量指令指定的運(yùn)算是否應(yīng)當(dāng)在對(duì)應(yīng)的并行處理通道中被執(zhí)行。如上所述,在一個(gè)實(shí)施例中,跳過指示符包括在跳過指令執(zhí)行時(shí)被指派一值的跳過計(jì)數(shù)器。具體地,跳過計(jì)數(shù)器被設(shè)置非零值來標(biāo)識(shí)ー個(gè)或多個(gè)后續(xù)向量指令將在相關(guān)聯(lián)的通道中被跳過,并且當(dāng)為零值時(shí)認(rèn)為是未被設(shè)置的,從而指示在相關(guān)聯(lián)的通道中應(yīng)當(dāng)不發(fā)生跳過。因此,在這樣的實(shí)施例中,只要跳過計(jì)數(shù)器為零,則在通道上執(zhí)行下一個(gè)向量指令的運(yùn)算。跳過計(jì)數(shù)器的非零值在ー個(gè)實(shí)施例中被用來指示相關(guān)聯(lián)的運(yùn)算將不在通道上被執(zhí)行的隨后指令的數(shù)目,并且當(dāng)每個(gè)向量指令在跳過指令之后被執(zhí)行時(shí),對(duì)于具有已被設(shè)置的跳過計(jì)數(shù)器的每個(gè)通道而言,向量運(yùn)行單元遞減相關(guān)跳過計(jì)數(shù)器而不是在那個(gè)通道中執(zhí)行運(yùn)算。當(dāng)已經(jīng)過去了所指示的指令數(shù)目時(shí),跳過計(jì)數(shù)器被設(shè)置回零值,并且再隨后的指令可以在通道上被執(zhí)行。作為使用被設(shè)置成某一非零值并且隨后在每ー后續(xù)向量指令被運(yùn)行時(shí)遞減的跳過計(jì)算器的替換,跳過指示符可以通過跳過指令被設(shè)置,并且隨后保持設(shè)置直到運(yùn)行跳過結(jié)束指令位置。在一個(gè)實(shí)施例中,跳過結(jié)束指令的運(yùn)行將任何已設(shè)置跳過指示符清除(clear),以使得任何隨后的指令的運(yùn)算之后在相關(guān)聯(lián)的通道中被執(zhí)行。可替換的跳過指令可以被布置為遞增跳過計(jì)算器,并且跳過結(jié)束指令被布置為遞減跳過計(jì)數(shù)器,以使得跳過指令和相關(guān)聯(lián)的跳過結(jié)束指令的嵌套組合可以被使用。跳過計(jì)數(shù)器可以以各種方式實(shí)現(xiàn)。例如,除了用零作為清除(無跳過)值以外的表示也是可以的。在一個(gè)實(shí)施例中,跳過計(jì)數(shù)器對(duì)于每個(gè)通道是4比特字段,但是其他數(shù)目的比特也可以被分配給每個(gè)跳過計(jì)數(shù)器。如稍后將更詳細(xì)地討論的,在一個(gè)實(shí)施例中,可以使用如下兩種跳過指示符采取因每個(gè)后續(xù)向量指令(在此稱為短跳過指示符)的運(yùn)行而被遞減的跳過計(jì)數(shù)器的形式的跳過指示符和在跳過結(jié)束指令被執(zhí)行之前一直保持設(shè)置的跳過指示符(在此稱為長(zhǎng)跳過指示符)。專用向量運(yùn)行單元102的算術(shù)邏輯運(yùn)算104可以被布置為執(zhí)行各種算術(shù)邏輯運(yùn)算(諸如邏輯與(AND)、邏輯或(0R)、異或(XOR)和邏輯非(NOT))、偏移運(yùn)算(諸如LSR、LSL、ASR和R0T)、相加、相減和相乘運(yùn)算以及最小值和最大值運(yùn)算(即找到每個(gè)通道內(nèi)的最小值和最大值)。除了在每個(gè)通道上獨(dú)立執(zhí)行的這些運(yùn)算以外,通道間的運(yùn)算也是可能的,即,在通道之間交換或復(fù)制數(shù)據(jù)的運(yùn)算。因此,可以有選擇地進(jìn)行對(duì)任意通道上的任意這些運(yùn)算的排除。圖2示意性地示出根據(jù)ー個(gè)實(shí)施例的處理器200。處理器具有一般運(yùn)行單元202 (在此也稱為一般運(yùn)行路徑)和與一般運(yùn)行單元202相關(guān)聯(lián)的一般寄存器組204。處理器200還具有向量運(yùn)行單元206 (在此也稱為向量運(yùn)行路徑)和相關(guān)聯(lián)的向量寄存器組208,與參考圖I所示的布置類似。該處理器還包括一般運(yùn)行單元202和向量運(yùn)行單元206常用的指令取出和指令譯碼單元。在一個(gè)實(shí)施例中,指令取出和指令譯碼單元包括指令取出級(jí)210,指令取出級(jí)210被布置為例如通過向程序存儲(chǔ)器(諸如指令緩存)發(fā)送程序計(jì)數(shù)器值以便讀出下一指令來取出指令。在一個(gè)實(shí)施例中,指令取出和指令譯碼單元還包括指令譯碼級(jí)212,指令譯碼級(jí)212被布置為從指令比特產(chǎn)生用于運(yùn)行的控制信號(hào)。指令譯碼級(jí)212還被布置為區(qū)分向量指令和一般指令,其中在一般指令的情況中,則控制信號(hào)被提供給一般運(yùn)行單元202,并且在向量指令的情況中,則控制信號(hào)被提供給向量運(yùn)行單元206。控制信號(hào)可以被視作“已譯碼指令”。在向量跳過指令的情況中,適當(dāng)?shù)目刂菩盘?hào)被提供給向量運(yùn)行單元206,其中跳過指令如之前參考圖I所概述的那樣被運(yùn)行。 圖3示意性地圖示出根據(jù)實(shí)施例的向量寄存器組300。向量寄存器組300包括第一數(shù)目k個(gè)向量寄存器。每個(gè)向量寄存器包括第二數(shù)目I個(gè)數(shù)據(jù)元素(針對(duì)I個(gè)并行處理通道中的每ー個(gè)通道有一個(gè)數(shù)據(jù)元素),其中每個(gè)數(shù)據(jù)元素包括第三數(shù)目m個(gè)比持,S卩,毎個(gè)寄存器包括I Xm個(gè)比特。根據(jù)ー個(gè)實(shí)施例,存在16個(gè)向量寄存器,每個(gè)向量寄存器具有128個(gè)比持,每128個(gè)比特被分割成8個(gè)數(shù)據(jù)元素,每個(gè)數(shù)據(jù)元素具有16個(gè)比持,即k = 16,l = 8,m=16。k、l、m的其他值當(dāng)然也同樣是可以的。圖4是圖示出根據(jù)實(shí)施例的方法的流程圖。在向量跳過指令的接收即指令取出時(shí),指令被識(shí)別為向量指令并且在向量跳過指令譯碼步驟400中被譯碼,其中,用于運(yùn)行的控制信號(hào)隨后被提供給如上所述的向量運(yùn)行單元206以用于在跳過指令運(yùn)行步驟402中運(yùn)行。存在向量運(yùn)行單元206可以用于確定哪些通道的跳過指示符將在向量跳過指令的運(yùn)行時(shí)被設(shè)置的方式。在一個(gè)實(shí)施例中,向量跳過指令直接標(biāo)識(shí)其跳過指示符將被設(shè)置的ー個(gè)或多個(gè)通道。因此,作為ー個(gè)示例,特定形式的向量跳過指令可以指定所有的奇數(shù)通道的跳過指示符應(yīng)當(dāng)被設(shè)置,另ー形式的向量跳過指令可以指定所有偶數(shù)通道的跳過指示符應(yīng)當(dāng)被設(shè)置,或者更一般地,向量跳過指令可以識(shí)別標(biāo)識(shí)哪些通道的跳過指示符應(yīng)當(dāng)被設(shè)置的任意形式的比特掩碼。然而,在可替換實(shí)施例中,向量跳過指令并不直接標(biāo)識(shí)其跳過指示符將被設(shè)置的通道,而是,響應(yīng)于向量跳過指令,向量運(yùn)行單元206針對(duì)每個(gè)通道評(píng)估是否滿足ー個(gè)或多個(gè)預(yù)定條件,并且根據(jù)所述評(píng)估來識(shí)別出其跳過指示符將被設(shè)置的ー個(gè)或多個(gè)通道。不論使用以上何種方法,對(duì)于被判定為其跳過指示符將被設(shè)置的每個(gè)通道,用于該通道的跳過指示符隨后在跳過指示符設(shè)置步驟404中被設(shè)置,以使得在運(yùn)算禁用步驟406中,基于那些通道的跳過指示符來針對(duì)那些通道禁用ー個(gè)或多個(gè)隨后向量指令的運(yùn)算。圖5示意性地圖示出根據(jù)ー個(gè)實(shí)施例的向量運(yùn)行單元206的運(yùn)行級(jí)220內(nèi)所設(shè)置的某些元素。內(nèi)部狀態(tài)寄存器500被用于存儲(chǔ)運(yùn)行級(jí)220所需的數(shù)據(jù)元素以便執(zhí)行其所要求的運(yùn)算。因此,對(duì)于將ー個(gè)或多個(gè)向量寄存器指定為源操作數(shù)的向量運(yùn)算指令,所需要的來自那些向量寄存器的數(shù)據(jù)元素將被存儲(chǔ)在內(nèi)部狀態(tài)寄存器500內(nèi)以用于由ALU電路502在執(zhí)行由該指令指定的算術(shù)邏輯運(yùn)算時(shí)存取。另外,內(nèi)部狀態(tài)寄存器500包括被用作跳過計(jì)數(shù)器寄存器506的一個(gè)或多個(gè)寄存器,它們被用來為每個(gè)并行處理通道維護(hù)跳過計(jì)數(shù)值。當(dāng)向量跳過指令被運(yùn)行時(shí),對(duì)應(yīng)的控制信號(hào)被從指令譯碼級(jí)212傳遞給運(yùn)行級(jí)220,跳過計(jì)數(shù)器更新電路504執(zhí)行更新操作以便使用前述技術(shù)來設(shè)置一個(gè)或多個(gè)跳過計(jì)數(shù)器寄存器506內(nèi)的ー個(gè)或多個(gè)跳過計(jì)數(shù)器。通常,對(duì)于其中相關(guān)聯(lián)的跳過計(jì)數(shù)器已經(jīng)是非零的任意通道而言,更新操作被省略,并且因此,更新操作只影響當(dāng)前跳過計(jì)數(shù)器值為零的那些通道的跳過計(jì)數(shù)器的值。這允許向量跳過指令的嵌套,允許復(fù)雜的條件運(yùn)算序列在向量處理內(nèi)被執(zhí)行,而不必對(duì)向量運(yùn)算指令本身做任何修改。而是,經(jīng)歷任何特定向量運(yùn)算的并行處理通道由相關(guān)聯(lián)的向量運(yùn)算指令被運(yùn)行時(shí)的各個(gè)跳過計(jì)數(shù)值的狀態(tài)確定。在跳過指示符是為每個(gè)通道設(shè)置的實(shí)施例中,向量運(yùn)算的運(yùn)行可以用以下偽代碼表示,其中假定存在8個(gè)并行處理通道(通道0至7)
Vop:
For f=0:7 do in parau^l
If SKIP COUNTER[l]=0 THEN Executeoponlanei
Else
SKIPjCOWrER[l]=SKIP_COlJKrER[l3 一 I
Endif
Endfor這里,skip_C0Unter[I]是指用于通道I的跳過計(jì)數(shù)器。從上述偽代碼可見,運(yùn)算被施加于具有為零的跳過計(jì)數(shù)器的任何通道,但是對(duì)于具有非零跳過計(jì)數(shù)器的那些通道,運(yùn)算不被執(zhí)行而是跳過計(jì)數(shù)值被遞減I。每當(dāng)遇到向量跳過指令(S卩,可以設(shè)置跳過計(jì)數(shù)器的指令)時(shí),與遇到普通指令一樣,僅其跳過計(jì)數(shù)器被清除(即為零)的通道受到影響。對(duì)于每個(gè)這樣的通道,與跳過指令相關(guān)聯(lián)的條件在該通道上被測(cè)試,并且如果條件滿足,則用于該通道的跳過計(jì)數(shù)器被設(shè)置為將被跳過的指令數(shù)。這一般被指定為跳過指令的操作數(shù),并且因此作為自變量“new_skip_valUe”被傳遞。對(duì)于每個(gè)隨后被運(yùn)行的向量指令,跳過計(jì)數(shù)器原本為非零的通道將它們的跳過計(jì)數(shù)器的值遞減I。以上實(shí)施例的向量跳過指令可以用以下偽代碼表示Vscc
FOR I=07 DO IN PARALLEL IF SKlPjCOUNTER[l]=0 THEM IFCCOMtANEITHEN
SKIPCOlMrER[l]££NEW_SK]P_VALUE
ENDJF
HLSE
SKIP__COUNTER[l]=SKJP_OOUNTER[l]-l
ENDIF
END FOH其中,條件代碼CC例如可以eq = equal (等于)、ne = not equal (不等于)、gt=greater tnan (大于)、ge = greater or equal than (大于等于)、It = less than (小于)、Ie = less or equal than (小于等于)。有時(shí),優(yōu)選使用這樣的結(jié)構(gòu),其中許多指令被跳過,但是跳過計(jì)數(shù)器只能計(jì)數(shù)到由跳過計(jì)數(shù)器字段限定的某ー值,例如對(duì)于4比特計(jì)數(shù)器是15。然而,在一個(gè)實(shí)施例中,也有可能編碼長(zhǎng)跳過,該長(zhǎng)跳過僅當(dāng)遇到用于結(jié)束跳過特征的向量跳過結(jié)束指令時(shí)才被終止。這可以通過如下方式來實(shí)現(xiàn)通過提供用于存儲(chǔ)長(zhǎng)跳過指示符的完全単獨(dú)的跳過計(jì)數(shù)器寄存器,或通過將每通道的單個(gè)跳計(jì)數(shù)器的ー個(gè)或多個(gè)確定的值(例如,數(shù)字14和15)預(yù)留為特殊長(zhǎng)度的跳過代碼,并且隨后修改上述偽代碼運(yùn)算。具體而言,用于VOP(—般向量指令)、VSCC (向量跳過指令)和VEND (向量跳過結(jié)束指令)的適當(dāng)偽代碼運(yùn)算如下
Vop:.
FOR 1=0:7 DO IN PARALLELIF SKlPjCOUNTER[l3=^ THENEXECUTE OP ON LANE IELSE IF (SKirjCOUNTERC^l^
SKIP_COUNTER[l]=SiCI COUNTER[lJ-l
ENDIF
ENDFDRVscc:
FOR 1=0:7 DO IN PARALLEL IF SKIPjCOUNTCR[!]=<) THEN IF CC ON LANE I THEN
IF LONG_SKll> THEN
Skip_cx>unter[i]* 15
ELSE
SKIP_OOUNTER[l]^fEW_SKIP_¥ALUE
Endif
EMJiF
ELSE
W LONG_SKIP OR Siai jCOUNTER[l]<14 THEN SKIP__COUNTER[l]^SK[P_COUNTER[l]-l
ENDIF
ENDIF
ENDFOR
Vend
FOR I=07 DO IN PARALLEL if skip_counter[i]>=14 then
SKrF_COUNTER[l]=<SKIPCOUNTER[l3+l) MOD 16 ELSE IF SKIPJCOUNTER[I]>0 THEN
SKIPmCOUN*reR[l]=SKIP_COUNTERClI-I
EMDIF
ENDFOR因此,在以上示例中,可見用于一般向量指令VOP的偽代碼一般如前所述,但是現(xiàn)在跳過計(jì)數(shù)器僅針對(duì)具有非零跳過計(jì)數(shù)器的那些通道被遞減,如果跳過計(jì)數(shù)值小于14的話。因此,如果跳過計(jì)數(shù)值是14或15,則在相關(guān)聯(lián)的通道中不執(zhí)行運(yùn)算,并且也不發(fā)生跳過計(jì)數(shù)器的遞減。考慮向量跳過指令VSCC,則對(duì)于具有零跳過計(jì)數(shù)值的每個(gè)通道,如果用于該通道的條件代碼被滿足,則現(xiàn)在存在可以更新跳過計(jì)數(shù)值的兩種方式,如果向量跳過指令編碼長(zhǎng)跳過(這通常通過將該指令的跳過指示符操作數(shù)設(shè)置成空值來進(jìn)行),則跳過計(jì)數(shù)器被設(shè)置為15,在該實(shí)施例中,15的值編碼ー個(gè)長(zhǎng)跳過。否則,跳過計(jì)數(shù)器被設(shè)置為將通常由向量跳過指令的跳過指示符操作數(shù)指定的跳過值??紤]VSCC指令的跳過計(jì)數(shù)器遞減功能,如果用于任何特定通道的跳過計(jì)數(shù)器在向量跳過指令被運(yùn)行時(shí)少于14 ( S卩,跳過計(jì)數(shù)器編碼短跳過),則跳過計(jì)數(shù)器被遞減。另外,即使用于任何特定通道的跳過計(jì)數(shù)器不少于14,如果向量跳過指令編碼長(zhǎng)跳過,則跳過計(jì)數(shù)器仍然被遞減。后ー遞減操作允許兩個(gè)長(zhǎng)跳過的嵌套,其中第一長(zhǎng)跳過指令將跳過計(jì)數(shù)器設(shè)置為15 (意味著ー個(gè)長(zhǎng)跳過),并且第二被嵌套的長(zhǎng)跳過指令隨后針對(duì)已經(jīng)受到第一長(zhǎng)跳過指令的影響的通道將跳過計(jì)數(shù)器減小為14 (意味著兩個(gè)長(zhǎng)跳過)。因此,該遞減操作實(shí)際上標(biāo)識(shí)了由于以上編碼引起的長(zhǎng)跳過數(shù)目的有效遞増。 關(guān)于向量跳過結(jié)束指令VEND,對(duì)于每個(gè)通道,測(cè)試跳過計(jì)數(shù)器是否大于或等于14(即,用于該通道的跳過計(jì)數(shù)器是否編碼了長(zhǎng)跳過),并且如果是,則該跳過計(jì)數(shù)器被如圖所示地修改。由于該實(shí)施例的編碼,其中14的值指示兩個(gè)長(zhǎng)跳過,并且15的值指示ー個(gè)長(zhǎng)跳過,這給出了長(zhǎng)跳過計(jì)數(shù)的有效遞減。具體地,如果當(dāng)前跳過計(jì)數(shù)值是14,則其上升為15,并且如果當(dāng)前計(jì)數(shù)值為15,則由于遞增的模16特征,其被重置為零。如果跳過計(jì)數(shù)器不大于等于14但是大于零,則VEND指令的發(fā)生僅僅促使跳過計(jì)數(shù)器被遞減1,就像對(duì)于任何其它向量指令ー樣。圖6是圖示出根據(jù)本發(fā)明的實(shí)施例如何處理向量指令的流程圖。在步驟600,等待接收向量指令,并且一旦向量指令已被接收到(即已被指令取出級(jí)210取出),其隨后在步驟605處被指令譯碼級(jí)212譯碼成隨后被發(fā)送至向量運(yùn)行路徑206的控制信號(hào)。如框610所示,這隨后導(dǎo)致特定系列的步驟在每個(gè)并行處理通道中被并行地執(zhí)行,該處理由步驟615,620和625示出。一旦該系列步驟已經(jīng)在每個(gè)通道中被并行地執(zhí)行,則如框630中所示,并行的處理步驟結(jié)束,并且處理返回到步驟600來等待下一向量指令的運(yùn)行。在每個(gè)通道中被執(zhí)行來實(shí)現(xiàn)根據(jù)ー個(gè)實(shí)施例的步驟615、620和625的處理在圖7中被示意性地示出。該處理開始于步驟700,并且在步驟705處,判斷用于該通道的短跳過計(jì)數(shù)值(即短跳過指示符)是否為零。如果短跳過計(jì)數(shù)值是非零的,則處理分支到步驟710,其中針對(duì)該通道確定跳過計(jì)數(shù)值。之后,處理繼續(xù)進(jìn)行到步驟760,其中,處理結(jié)束,因?yàn)椴恍枰M(jìn)ー步的處理。值得注意的是,在步驟705,被評(píng)估來判斷是否非零的僅僅是短跳過計(jì)數(shù)值。在一些實(shí)施例中,僅短跳過計(jì)數(shù)值將被利用,但是在一些實(shí)施例中,長(zhǎng)跳過計(jì)數(shù)值也被使用,在該情況中,則需要附加步驟715、720和725。具體地,在步驟705處對(duì)短跳過計(jì)數(shù)值的分析之后,隨后可以在步驟715處判斷用于通道的長(zhǎng)跳過計(jì)數(shù)值是否為零。如前所述,短跳過計(jì)數(shù)值和長(zhǎng)跳過計(jì)數(shù)值可以被存儲(chǔ)在単獨(dú)的跳過寄存器中,或者可替換地,在一個(gè)實(shí)施例中,可以通過將ー個(gè)或多個(gè)跳過計(jì)數(shù)值保留為長(zhǎng)跳過計(jì)數(shù)值而被編碼在單個(gè)寄存器內(nèi)。如果長(zhǎng)跳過計(jì)數(shù)值是非零的,則在步驟720處判斷正被運(yùn)行的指令是否是向量跳過結(jié)束指令。如果是,則用于通道的長(zhǎng)跳過計(jì)數(shù)值在步驟725處被遞減并且處理隨后結(jié)束于步驟760。從之前的討論,將明白,在以上實(shí)施例中,跳過計(jì)數(shù)值14指示2個(gè)長(zhǎng)跳過,跳過計(jì)數(shù)值15指示I個(gè)長(zhǎng)跳過,并且跳過計(jì)數(shù)值O指示無長(zhǎng)跳過,步驟725處的遞減實(shí)際上涉及跳過計(jì)數(shù)值的遞增(或者從14遞增為15或者從15遞增為0)。如果指令不是向量跳過結(jié)束指令,則在步驟727處判斷該指令是否是長(zhǎng)向量跳過指令(即編碼長(zhǎng)跳過的向量跳過指令)。如果是,則用于通道的長(zhǎng)跳過計(jì)數(shù)在步驟728處被遞增。從之前的討論中,將明白,在以上實(shí)施例中,跳過計(jì)數(shù)值14指示兩個(gè)長(zhǎng)跳過并且跳過計(jì)數(shù)值15指示I個(gè)長(zhǎng)跳過,步驟728處的遞增實(shí)際上涉及跳過計(jì)數(shù)值從15到14的遞減。因此,經(jīng)由步驟727和728,任何長(zhǎng)向量跳過指令無條件地將具有非零長(zhǎng)跳過計(jì)數(shù)的任何通道的長(zhǎng)跳過計(jì)數(shù)遞增1,這是因?yàn)檫@些長(zhǎng)跳過技計(jì)數(shù)將由于長(zhǎng)向量跳過指令的對(duì)應(yīng)向量跳過結(jié)束指令而被遞減I。如果在步驟727處判定指令不是長(zhǎng)向量跳過指令,則不需要任何動(dòng)作,并且處理僅僅結(jié)束于步驟760。如果為通道設(shè)置的短跳過計(jì)數(shù)值和任何長(zhǎng)跳過計(jì)數(shù)值是零,則處理繼續(xù)進(jìn)行到步 驟730。在步驟730,判斷當(dāng)前指令是否是向量跳過指令。如果不是,則由指令指定的所需運(yùn)算在步驟735處被執(zhí)行,之后,處理結(jié)束于步驟760。因此,可見,僅在通道的跳過計(jì)數(shù)值(如果使用短跳過計(jì)數(shù)值和長(zhǎng)跳過計(jì)數(shù)值二者,則這二者都)未被設(shè)置即為零吋,由任何向量運(yùn)算指令指定的運(yùn)算才在通道中被執(zhí)行。如果在步驟730判定當(dāng)前指令是向量跳過指令,則在步驟740中評(píng)估是否滿足通道的條件代碼。作為示例,向量跳過指令可以指定僅在由向量處理單元為通道維護(hù)的特定條件代碼被設(shè)置的情況下,跳過指示符才應(yīng)當(dāng)被設(shè)置。如果條件代碼不滿足,則不需要進(jìn)ー步的動(dòng)作,并且處理結(jié)束于760。然而,如果條件代碼滿足,則處理繼續(xù)進(jìn)行到步驟745。在步驟745,是否已經(jīng)通過向量跳過指令指定了值域操作數(shù)(range operand)(該值域操作數(shù)在此也稱為跳過指示符操作數(shù))。如果這樣的值域操作數(shù)被指定,則這指示該向量跳過指令意圖設(shè)置短跳過計(jì)數(shù)器,并且因此,在這種情況下,處理繼續(xù)進(jìn)行到步驟750,其中用于通道的短跳過計(jì)數(shù)被設(shè)置成指定的值域操作數(shù)。之后,處理結(jié)束于步驟760。然而,如果在步驟745處判定空的值域操作數(shù)被指定,則這意味著該向量跳過指令意圖為通道設(shè)置長(zhǎng)跳過指令,并且因此,處理分支到步驟744,其中用于通道的長(zhǎng)跳過計(jì)數(shù)值被遞增,之后,處理結(jié)束于步驟760。從之前的討論,將明白,在以上實(shí)施例中,跳過計(jì)數(shù)值15指示I個(gè)長(zhǎng)跳過,并且跳過計(jì)數(shù)值0指示無長(zhǎng)跳過。步驟755處的遞增實(shí)際上涉及將跳過計(jì)數(shù)值設(shè)置為15來標(biāo)識(shí)ー個(gè)長(zhǎng)跳過。存在許多布置跳過計(jì)數(shù)器寄存器506的方式。在一個(gè)實(shí)施例中,僅短跳過計(jì)數(shù)器被使用,并且如圖8A中所示,單個(gè)跳過計(jì)數(shù)器寄存器800可以被設(shè)置來存儲(chǔ)用于每個(gè)通道的短跳過計(jì)數(shù)值。在一個(gè)實(shí)施例中,每個(gè)跳過計(jì)數(shù)值是4比特,并且因此,在其中存在8個(gè)并行處理通道的示例中,跳過計(jì)數(shù)器寄存器將是32比特的寄存器。在可替換實(shí)施例中,長(zhǎng)跳過計(jì)數(shù)值也可以針對(duì)每個(gè)并行處理通道被提供,并且可以在單獨(dú)的寄存器內(nèi)被編碼。相應(yīng)地,如圖8B中所示,第一寄存器85可以用于存儲(chǔ)用于每個(gè)通道的跳過計(jì)數(shù)值(即短跳過指示符),而第二寄存器810可以用于存儲(chǔ)用于每個(gè)通道的長(zhǎng)計(jì)數(shù)值(即長(zhǎng)跳過指示符)。還將明白,在某些實(shí)施例中,可以布置為僅使用長(zhǎng)跳過指示符,并且不提供短跳過計(jì)數(shù)值。在該示例中,可以提供諸如圖8A的寄存器800之類的單個(gè)寄存器。在此情況中,寄存器為每個(gè)通道提供長(zhǎng)跳過計(jì)數(shù)值。在該示例實(shí)施例中,向量跳過指令將設(shè)置長(zhǎng)跳過計(jì)數(shù)值,并且僅向量跳過結(jié)束指令的發(fā)生將促使這些值被遞減。隨后將對(duì)其長(zhǎng)跳過計(jì)數(shù)值為零的標(biāo)準(zhǔn)向量指令運(yùn)行標(biāo)準(zhǔn)向量指令,并且對(duì)于其長(zhǎng)跳過計(jì)數(shù)值被設(shè)置了(即非零)的任何通道,僅僅忽略標(biāo)準(zhǔn)向量指令。如圖SC中所示,對(duì)于其中短跳過計(jì)數(shù)值和長(zhǎng)跳過計(jì)數(shù)值都被使用的實(shí)施例,則可以仍然使用單個(gè)跳過計(jì)數(shù)器寄存器815來編碼用于每個(gè)通道的跳過計(jì)數(shù)值。在這樣的實(shí)施例中,可以通過使用具體的跳過計(jì)數(shù)值來編碼任何長(zhǎng)跳過計(jì)數(shù)值。在ー個(gè)特定示例中,值14和15被保留以用于長(zhǎng)跳過計(jì)數(shù),如圖9的表中示意性地示出的。 如圖9中所示,對(duì)于每個(gè)并行處理通道,跳過計(jì)數(shù)值可以被設(shè)置為組合編碼值0至15中的任ー個(gè)。值0指示既不設(shè)置短跳過計(jì)數(shù)器也不設(shè)置長(zhǎng)跳過計(jì)數(shù)器,并且相應(yīng)地參考圖7,對(duì)于其跳過計(jì)數(shù)器具有組合編碼0的任何通道,隨后是通過步驟705和715的“是”路徑。I和13之間的值可以被設(shè)置為組合編碼以便指定所設(shè)置的短跳過計(jì)數(shù)。當(dāng)每個(gè)后續(xù)的向量指令被運(yùn)行時(shí),這將促使用于該通道的所設(shè)置的短跳過值被遞減(而不是由向量指令指定的運(yùn)算被執(zhí)行),直到該值最終達(dá)到零為止,當(dāng)該值為0時(shí),后續(xù)的向量指令將在該通 道中被執(zhí)行。因此,考慮圖7的示例,如果在步驟705被評(píng)估時(shí)組合編碼具有I和13之間的值,則處理將分支到步驟710,其中,短跳過計(jì)數(shù)值將被遞減。如圖9中所示,組合編碼值14和15被保留以用于長(zhǎng)跳過計(jì)數(shù),并且因此,如果對(duì)于特定通道,組合編碼是14或15,則隨后是從步驟705開始的“是”路徑將并且在步驟715,隨后將沒有路徑。如果在步驟720處,VEND指令正被運(yùn)行,則長(zhǎng)跳過計(jì)數(shù)將被遞減。如圖9中所示,這將意味著如果當(dāng)前組合編碼是14 (標(biāo)識(shí)長(zhǎng)跳過計(jì)數(shù)2),則其現(xiàn)在將被設(shè)置成15 (標(biāo)識(shí)長(zhǎng)跳過計(jì)數(shù)I),并且如果當(dāng)前組合編碼是15,則其現(xiàn)在將被清除為O。圖10示意性地圖示出例如其中提供4個(gè)并行處理通道的短跳過計(jì)數(shù)器的使用。在該示例中,假定當(dāng)VMUL指令(乘法指令)被運(yùn)行時(shí),通道I和3具有跳過計(jì)數(shù)值0并且通道0和2分別具有跳過計(jì)數(shù)值I和4。這意味著,乘法指令僅在通道I和3中被執(zhí)行。雖然在一個(gè)實(shí)施例中,通道0和2內(nèi)的相關(guān)組件仍然可以照樣執(zhí)行乘法運(yùn)算,但是在通道0和2的任一者中都不發(fā)生目的地寄存器va的更新。這意味著,數(shù)據(jù)元素Vatl和va2保持不變而數(shù)據(jù)元素Va1和va3被更新以反映乘法運(yùn)算的結(jié)果。對(duì)于通道0和2,跳過計(jì)數(shù)器隨后被遞減以使得在乘法運(yùn)算已被運(yùn)行之后,用于通道I和3的跳過計(jì)數(shù)器保持為0,并且用于通道0和2的跳過計(jì)數(shù)器現(xiàn)在分別是I和3。圖10僅僅敘述了非常簡(jiǎn)單的示例,但是通常將是這樣的情況會(huì)存在更多通道。此外,向量跳過指令可以按照需要被嵌套以允許復(fù)雜的指令序列在各個(gè)通道內(nèi)被有條件地運(yùn)行。以下是可以使用嵌套的向量跳過指令序列來運(yùn)行的指令序列的示例。具體地,在該示例中,三個(gè)值的中值被輸出作為向量v3。因此,通過這些指令的運(yùn)行,將輸入寄存器中用于相同通道的三個(gè)值的中值針對(duì)每個(gè)通道而輸出vmov v3,v2//針對(duì)每個(gè)通道,v2被復(fù)制到v3中。這里,“推測(cè)”中值是v2中的值(如果不是,則其將被如下覆寫)vsgt v0, vl,4//針對(duì)姆個(gè)通道,比較v0和vl,并且如果v0 > vl,則將跳過值設(shè)置為4
vsgt vl, v2,1//現(xiàn)在已知vO < = vl (針對(duì)姆個(gè)通道,比較vl和v2,并且如果vl
>v2,則將跳過值設(shè)置為I)vmov v3, vl//現(xiàn)在已知 vl < = v2,中值是 vlvsgt v2, vO, I//現(xiàn)在已知vO < = vl (針對(duì)姆個(gè)通道,比較v2和vO,并且如果v2
>vO,則將跳過值設(shè)置為I)vmov v3, vO//現(xiàn)在已知 v2 < = vO,中值為 vOvsle vO, vl,4//針對(duì)姆個(gè)通道,比較vO和vl,并且如果vO <= vl,則將跳過值設(shè)置為4vsle vl, v2,1//現(xiàn)在已知vO > vl (針對(duì)姆個(gè)通道比較vl和v2,并且如果vl < = v2,則將跳過值設(shè)置為I)vmov v3, vl// 現(xiàn)在已知 vl > v2,中值是 vlvsle v2, vO, I//現(xiàn)在已知vO > vl (針對(duì)姆個(gè)通道,比較v2和vO,并且如果v2<=vO,則將跳過值設(shè)置為I)vmov v3, vO// 現(xiàn)在已知 v2 > vO,中值是 vO通過向量跳過指令的序列(vsgt和vsle),可以在每個(gè)通道中獨(dú)立地執(zhí)行復(fù)雜的測(cè)試樹,以便找到每個(gè)通道中的中值數(shù)據(jù)元素值。將明白,在第一移動(dòng)指令之后,所有后續(xù)移動(dòng)指令將依賴于遇到這些移動(dòng)指令時(shí)用于那些通道的跳過計(jì)數(shù)器的值而在每個(gè)通道中被有條件地執(zhí)行。通過以上對(duì)實(shí)施例的描述,將明白,這樣的實(shí)施例提供在向量處理單元內(nèi)處理向量運(yùn)算的一種特別靈活和有效的方式。具體地,可以有條件地執(zhí)行由向量處理單元提供的每個(gè)并行處理通道內(nèi)的運(yùn)算,而不需要修改制定那些向量運(yùn)算的向量指令。而是,向量跳過指令被用來設(shè)置用于每個(gè)并行處理通道的跳過指示符,其中后續(xù)向量指令僅在其跳過指示符已被設(shè)置的通道中被執(zhí)行。在其中跳過指示符采取跳過計(jì)數(shù)器的形式的實(shí)施例中,可以嵌套跳過指令以使得復(fù)雜的條件運(yùn)算序列可以在每個(gè)并行處理通道中被獨(dú)立地執(zhí)行。這因此使得能夠?qū)崿F(xiàn)向量處理單元的利用率的増加,因?yàn)榻o定從這些運(yùn)算的執(zhí)行中有選擇地排除一個(gè)或多個(gè)并行處理通道的能力,可能不得不另外以串行方式執(zhí)行的運(yùn)算現(xiàn)在可以使用向量處理單元被并行地處理。雖然上述技術(shù)可以由運(yùn)行包括上述指令的本地指令序列的硬件執(zhí)行,但是將明白,在可替換實(shí)施例中,這樣的指令可以在虛擬機(jī)環(huán)境中被執(zhí)行,其中,這些指令對(duì)于虛擬機(jī)是本地的,但是虛擬機(jī)是通過在具有不同本地指令集的硬件上運(yùn)行的軟件來實(shí)現(xiàn)的。虛擬機(jī)環(huán)境可以提供仿真完整指令集的運(yùn)行的完整虛擬機(jī)環(huán)境或者可以是部分的虛擬機(jī)環(huán)境,例如僅包括本技術(shù)的指令的ー些指令被硬件捕獲并由部分虛擬機(jī)進(jìn)行仿真。更具體地,上述向量跳過、向量運(yùn)算和向量跳過結(jié)束指令可以作為完整或部分虛擬機(jī)的本地指令被執(zhí)行,其中虛擬機(jī)與其底層的硬件平臺(tái)相結(jié)合操作來提供上述向量處理。雖然已經(jīng)在此描述了具體實(shí)施例,但是,將明白,本發(fā)明不限于此,并且在本發(fā)明的范圍內(nèi)可以對(duì)其進(jìn)行許多修改和添加。例如,在不偏離本發(fā)明的范圍的情況下,可以利用從屬權(quán)利要求的特征對(duì)以下獨(dú)立權(quán)利要求的特征進(jìn)行各種組合。
權(quán)利要求
1.一種數(shù)據(jù)處理設(shè)備,包括 寄存器數(shù)據(jù)儲(chǔ)存庫,所述寄存器數(shù)據(jù)儲(chǔ)存庫具有被布置為存儲(chǔ)數(shù)據(jù)元素的多個(gè)寄存器; 向量處理單元,所述向量處理單元用于運(yùn)行向量指令序列,所述向量處理單元具有多個(gè)并行處理通道,并且能夠訪問所述寄存器數(shù)據(jù)儲(chǔ)存庫,以便在所述向量指令序列的運(yùn)行期間從所述寄存器數(shù)據(jù)儲(chǔ)存庫讀出數(shù)據(jù)元素和向所述寄存器數(shù)據(jù)儲(chǔ)存庫寫入數(shù)據(jù)元素; 跳過指示存儲(chǔ)裝置,所述跳過指示存儲(chǔ)裝置用于維護(hù)所述并行處理通道的每個(gè)通道的跳過指不符; 所述向量處理單元響應(yīng)于所述向量指令序列內(nèi)的向量跳過指令,執(zhí)行更新操作,以在所述跳過指示存儲(chǔ)裝置內(nèi)設(shè)置所述多個(gè)通道中的確定的一個(gè)或多個(gè)通道的跳過指示符;并且 所述向量處理單元響應(yīng)于所述向量指令序列內(nèi)的向量運(yùn)算指令,對(duì)輸入到所述多個(gè)并行處理通道的數(shù)據(jù)元素并行地執(zhí)行運(yùn)算,但是從所述運(yùn)算的執(zhí)行中排除其相關(guān)聯(lián)的跳過指示符已被設(shè)置的任何通道。
2.如權(quán)利要求I所述的數(shù)據(jù)處理設(shè)備,其中,當(dāng)運(yùn)行所述向量跳過指令時(shí),所述向量處理單元從所述更新操作中排除當(dāng)所述向量跳過指令被運(yùn)行時(shí)已被設(shè)置的任何跳過指示符。
3.如權(quán)利要求I或2所述的數(shù)據(jù)處理設(shè)備,其中 每個(gè)所述跳過指示符包括跳過計(jì)數(shù)值,所述跳過計(jì)數(shù)值當(dāng)具有非零值時(shí)被認(rèn)為是已被設(shè)置的,并且當(dāng)具有零值時(shí)被認(rèn)為是未被設(shè)置的; 所述向量處理單元響應(yīng)于所述向量跳過指令來將所述確定的一個(gè)或多個(gè)通道的跳過計(jì)數(shù)值設(shè)置為預(yù)定非零值;并且 對(duì)于所述序列內(nèi)的每個(gè)向量指令,如果所述跳過計(jì)數(shù)值在所述向量指令被運(yùn)行時(shí)是已被設(shè)置的,則所述向量處理單元被布置為遞減所述跳過計(jì)數(shù)值,而不是執(zhí)行由該向量指令指定的運(yùn)算。
4.如權(quán)利要求3所述的數(shù)據(jù)處理設(shè)備,其中,所述預(yù)定非零值被指定為所述向量跳過指令的操作數(shù)。
5.如權(quán)利要求3或4所述的數(shù)據(jù)處理設(shè)備,其中,當(dāng)運(yùn)行所述向量跳過指令時(shí),所述向量處理單元被布置為遞減所有設(shè)置的跳過計(jì)數(shù)值。
6.如權(quán)利要求I或2所述的數(shù)據(jù)處理設(shè)備,其中,每個(gè)設(shè)置的跳過指示符保持被設(shè)置,直到所述向量處理單元運(yùn)行向量跳過結(jié)束指令來清除設(shè)置的跳過指示符為止。
7.如權(quán)利要求3至5中任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備,其中 所述跳過指示存儲(chǔ)裝置還維護(hù)所述并行處理通道的每個(gè)通道的長(zhǎng)跳過指示符; 另一向量跳過指令被提供,所述另一向量跳過指令當(dāng)被所述向量處理單元運(yùn)行時(shí),導(dǎo)致所述確定的一個(gè)或多個(gè)通道的每個(gè)通道的長(zhǎng)跳過指示符被設(shè)置,而不是那些通道的跳過計(jì)數(shù)值被設(shè)置; 所述長(zhǎng)跳過指示符在每個(gè)向量指令被運(yùn)行時(shí)保持被設(shè)置。
8.如權(quán)利要求7所述的數(shù)據(jù)處理設(shè)備,其中 所述向量處理單元響應(yīng)于向量跳過結(jié)束指令來清除每個(gè)設(shè)置的長(zhǎng)跳過指示符。
9.如權(quán)利要求7所述的數(shù)據(jù)處理設(shè)備,其中每個(gè)長(zhǎng)跳過指示符包括長(zhǎng)跳過計(jì)數(shù)值,所述長(zhǎng)跳過計(jì)數(shù)值當(dāng)具有非零值時(shí)被認(rèn)為是已被設(shè)置的,并且當(dāng)具有零值時(shí)被認(rèn)為是未被設(shè)置的; 響應(yīng)于所述另一向量跳過指令,所述向量處理單元導(dǎo)致所述確定的一個(gè)或多個(gè)通道的每個(gè)通道的長(zhǎng)跳過計(jì)數(shù)值被遞增;并且 所述向量處理單元響應(yīng)于向量跳過結(jié)束指令來遞減每個(gè)設(shè)置的長(zhǎng)跳過計(jì)數(shù)值。
10.如權(quán)利要求7至9中任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備,其中 所述跳過指示存儲(chǔ)裝置包括用于存儲(chǔ)所述并行處理通道的每個(gè)通道的跳過指示符的第一寄存器和用于存儲(chǔ)所述并行處理通道的每個(gè)通道的長(zhǎng)跳過指示符的第二寄存器。
11.如權(quán)利要求7至9中任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備,其中, 所述跳過指示存儲(chǔ)裝置包括用于存儲(chǔ)所述并行處理通道的每個(gè)通道的跳過指示符的寄存器,每個(gè)跳過指示符能被所述向量處理單元設(shè)置成第一組多個(gè)非零值中的任一個(gè)來標(biāo)識(shí)設(shè)置的跳過計(jì)數(shù)值,并且能被設(shè)置成不在所述第一組多個(gè)非零值中的至少一個(gè)預(yù)定非零值來標(biāo)識(shí)設(shè)置的長(zhǎng)跳過指示符。
12.如權(quán)利要求7至11中任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備,其中,所述向量跳過指令將所述確定的一個(gè)或多個(gè)通道的跳過指示符將被設(shè)置成的預(yù)定非零值指定為跳過指示符操作數(shù),并且所述另一向量跳過指令將空值指定為所述跳過指示符操作數(shù),從而將所述另一向量跳過指令與所述向量跳過指令區(qū)分開。
13.如之前任一項(xiàng)權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中,所述向量跳過指令直接地標(biāo)識(shí)其跳過指示符將被設(shè)置的一個(gè)或多個(gè)通道。
14.如權(quán)利要求I至12中任一項(xiàng)所述的數(shù)據(jù)處理設(shè)備,其中,響應(yīng)于所述向量跳過指令,所述向量處理單元針對(duì)每個(gè)通道評(píng)估一個(gè)或多個(gè)預(yù)定條件是否滿足,并且根據(jù)所述評(píng)估來標(biāo)識(shí)其跳過指示符將被設(shè)置的所述確定的一個(gè)或多個(gè)通道。
15.如權(quán)利要求14所述的數(shù)據(jù)處理設(shè)備,其中,所述確定的一個(gè)或多個(gè)通道是滿足所述一個(gè)或多個(gè)預(yù)定條件的那些通道。
16.如權(quán)利要求14或15所述的數(shù)據(jù)處理設(shè)備,還包括 條件代碼存儲(chǔ)裝置,所述條件代碼存儲(chǔ)裝置用于存儲(chǔ)所述并行處理通道的每個(gè)通道的至少一個(gè)條件代碼; 所述向量處理單元被布置為針對(duì)每個(gè)通道通過檢查所述至少一個(gè)條件代碼是否被設(shè)置來評(píng)估是否滿足所述一個(gè)或多個(gè)預(yù)定條件。
17.如之前任一項(xiàng)權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中,對(duì)于從所述運(yùn)算的執(zhí)行中排除的任何通道,所述運(yùn)算在該通道內(nèi)被執(zhí)行,但是通過在該通道內(nèi)執(zhí)行該運(yùn)算所產(chǎn)生的結(jié)果值被丟棄。
18.如之前任一項(xiàng)權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中 所述寄存器數(shù)據(jù)儲(chǔ)存庫包括向量寄存器組,所述向量寄存器組包括多個(gè)向量寄存器,每個(gè)向量寄存器存儲(chǔ)將被提供給所述向量處理單元內(nèi)的不同并行處理通道的多個(gè)數(shù)據(jù)元素。
19.如之前任一項(xiàng)權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,還包括 標(biāo)量處理單元; 與所述標(biāo)量處理單元相關(guān)聯(lián)的標(biāo)量寄存器組;以及在所述標(biāo)量處理單元和所述向量處理單元之間共享的指令取出和指令譯碼單元。
20.如之前任一項(xiàng)權(quán)利要求所述的數(shù)據(jù)處理設(shè)備,其中,所述向量處理單元是在任何一次的運(yùn)行過程中允許多個(gè)向量指令的流水線處理單元。
21.一種用于在數(shù)據(jù)處理設(shè)備內(nèi)處理向量指令的方法,所述數(shù)據(jù)處理設(shè)備包括具有被布置為存儲(chǔ)數(shù)據(jù)元素的多個(gè)寄存器的寄存器數(shù)據(jù)儲(chǔ)存庫,以及用于運(yùn)行向量指令序列的向量處理單元,所述向量處理單元具有多個(gè)并行處理通道,并且能夠訪問所述寄存器數(shù)據(jù)儲(chǔ)存庫,以便在所述向量指令序列的運(yùn)行期間從所述寄存器數(shù)據(jù)儲(chǔ)存庫讀出數(shù)據(jù)元素和向所述寄存器數(shù)據(jù)儲(chǔ)存庫寫入數(shù)據(jù)元素,所述方法包括以下步驟 在跳過指示存儲(chǔ)裝置內(nèi)維護(hù)所述并行處理通道的每個(gè)通道的跳過指示符; 響應(yīng)于所述向量指令序列內(nèi)的向量跳過指令,執(zhí)行更新操作,以在所述跳過指示存儲(chǔ)裝置內(nèi)設(shè)置所述多個(gè)通道中的確定的一個(gè)或多個(gè)通道的跳過指示符; 響應(yīng)于所述向量指令序列內(nèi)的向量運(yùn)算指令,對(duì)輸入到所述多個(gè)并行處理通道的數(shù)據(jù)元素并行地執(zhí)行運(yùn)算,但是從所述運(yùn)算的執(zhí)行中排除其相關(guān)聯(lián)的跳過指示符已被設(shè)置的任何通道。
22.—種包括計(jì)算機(jī)可讀指令的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)可讀指令當(dāng)在計(jì)算機(jī)上運(yùn)行時(shí)導(dǎo)致該計(jì)算機(jī)執(zhí)行如權(quán)利要求21所述的處理向量指令的方法。
23.一種數(shù)據(jù)處理設(shè)備,包括 寄存器數(shù)據(jù)儲(chǔ)存庫裝置,所述寄存器數(shù)據(jù)儲(chǔ)存庫裝置具有用于存儲(chǔ)數(shù)據(jù)元素的多個(gè)寄存器裝置; 向量處理裝置,所述向量處理裝置用于運(yùn)行向量指令序列,所述向量處理裝置用于提供多個(gè)并行處理通道,并且用于能夠訪問所述寄存器數(shù)據(jù)儲(chǔ)存庫裝置以便在所述向量指令序列的運(yùn)行期間從所述寄存器數(shù)據(jù)儲(chǔ)存庫裝置讀出數(shù)據(jù)元素和向所述寄存器數(shù)據(jù)儲(chǔ)存庫裝置寫入數(shù)據(jù)元素; 跳過指示存儲(chǔ)裝置,所述跳過指示存儲(chǔ)裝置用于維護(hù)所述并行處理通道的每個(gè)通道的跳過指不符; 所述向量處理裝置,響應(yīng)于所述向量指令序列內(nèi)的向量跳過指令,用于執(zhí)行更新操作,以在所述跳過指示存儲(chǔ)裝置內(nèi)設(shè)置所述多個(gè)通道中的確定的一個(gè)或多個(gè)通道的跳過指示符;并且 所述向量處理裝置,響應(yīng)于所述向量指令序列內(nèi)的向量運(yùn)算指令,用于對(duì)輸入到所述多個(gè)并行處理通道的數(shù)據(jù)元素并行地執(zhí)行運(yùn)算,但是從所述運(yùn)算的執(zhí)行中排除其相關(guān)聯(lián)的跳過指示符已被設(shè)置的任何通道。
全文摘要
提供了用于處理向量指令的數(shù)據(jù)處理設(shè)備和方法。該數(shù)據(jù)處理設(shè)備具有具備被布置為存儲(chǔ)數(shù)據(jù)元素的多個(gè)寄存器的寄存器數(shù)據(jù)儲(chǔ)存庫。向量處理單元隨后被用于運(yùn)行向量指令序列,該向量處理單元具有多個(gè)并行處理通道,并且能夠訪問寄存器數(shù)據(jù)儲(chǔ)存庫,以便在向量指令序列的運(yùn)行期間從寄存器數(shù)據(jù)儲(chǔ)存庫讀出數(shù)據(jù)元素和向寄存器數(shù)據(jù)儲(chǔ)存庫寫入數(shù)據(jù)元素。跳過指示存儲(chǔ)裝置維護(hù)并行處理通道的每個(gè)通道的跳過指示符。向量處理單元響應(yīng)于向量跳過指令來執(zhí)行更新操作,以在跳過指示存儲(chǔ)裝置內(nèi)設(shè)置用于確定的一個(gè)或多個(gè)通道的跳過指示符。向量處理單元響應(yīng)于向量運(yùn)算指令來對(duì)輸入到多個(gè)并行處理通道的數(shù)據(jù)元素并行地執(zhí)行運(yùn)算,但是從運(yùn)算的執(zhí)行中排除其相關(guān)聯(lián)的跳過指示符已被設(shè)置的任何通道。這允許在每個(gè)并行處理通道內(nèi)有條件地執(zhí)行由向量指令指定的運(yùn)算,而不必對(duì)指定這些運(yùn)算的向量指令做任何修改。
文檔編號(hào)G06F9/38GK102804135SQ201080025004
公開日2012年11月28日 申請(qǐng)日期2010年5月28日 優(yōu)先權(quán)日2009年6月5日
發(fā)明者安德里亞斯·比約克倫, 埃里克·佩爾松, 歐拉·休格森 申請(qǐng)人:Arm有限公司