本技術(shù)涉及數(shù)據(jù)處理的領(lǐng)域。更具體地,本技術(shù)涉及向量處理。一些數(shù)據(jù)處理裝置可以支持如下向量處理,其中包括多個數(shù)據(jù)元素的至少一個操作數(shù)向量響應(yīng)于向量指令而被處理以生成包括多個數(shù)據(jù)元素的結(jié)果向量。例如,這可以通過允許多個數(shù)據(jù)值響應(yīng)于單一指令而被處理來幫助提升性能。從一方面來看,提供了一種裝置,該裝置包括:響應(yīng)于向量指令而對至少一個操作數(shù)向量的各個數(shù)據(jù)元素執(zhí)行多個處理線路以生成結(jié)果向量的相應(yīng)的結(jié)果數(shù)據(jù)元素的處理電路;其中該處理電路支持以不同舍入模式執(zhí)行所述多個處理線路中的至少兩個處理線路,以生成結(jié)果向量的相應(yīng)的結(jié)果數(shù)據(jù)元素的舍入值。從另一方面來看,提供了一種設(shè)備,該設(shè)備包括:用于響應(yīng)于向量指令而對至少一個操作數(shù)向量的各個數(shù)據(jù)元素執(zhí)行多個處理線路以生成結(jié)果向量的相應(yīng)的結(jié)果數(shù)據(jù)元素的處理裝置;其中該處理裝置支持以不同舍入模式執(zhí)行所述多個處理線路中的至少兩個處理線路,以生成結(jié)果向量的相應(yīng)的結(jié)果數(shù)據(jù)元素的舍入值。從另一方面來看,提供了一種數(shù)據(jù)處理方法,該方法包括:響應(yīng)于向量指令而對至少一個操作數(shù)向量的各個數(shù)據(jù)元素執(zhí)行多個處理線路以生成結(jié)果向量的相應(yīng)的結(jié)果數(shù)據(jù)元素;其中所述多個處理線路中的至少兩個處理線路以不同舍入模式被執(zhí)行,以生成結(jié)果向量的相應(yīng)的結(jié)果數(shù)據(jù)元素的舍入值。從另一方面來看,提供了一種裝置,該裝置包括:響應(yīng)于算術(shù)指令而執(zhí)行多個處理線路的處理電路,每個處理線路用于通過對至少一個操作數(shù)向量的相應(yīng)的數(shù)據(jù)元素執(zhí)行算術(shù)運算來生成結(jié)果向量的結(jié)果數(shù)據(jù)元素;以及存儲控制信息的存儲位置,該控制信息分別針對響應(yīng)于所述算術(shù)指令而被執(zhí)行的所述處理線路中的至少兩個處理線路中的每個處理線路指定將被執(zhí)行以生成該線路的結(jié)果數(shù)據(jù)元素的算術(shù)運算的類型。從另一方面來看,提供了一種設(shè)備,該設(shè)備包括:用于響應(yīng)于算術(shù)指令而執(zhí)行多個處理線路的處理裝置,每個處理線路用于通過對至少一個操作數(shù)向量的相應(yīng)的數(shù)據(jù)元素執(zhí)行算術(shù)運算來生成結(jié)果向量的結(jié)果數(shù)據(jù)元素;以及用于存儲控制信息的存儲裝置,該控制信息分別針對響應(yīng)于所述算術(shù)指令而被執(zhí)行的所述處理線路中的至少兩個處理線路中的每個處理線路指定將被執(zhí)行以生成該線路的結(jié)果數(shù)據(jù)元素的算術(shù)運算的類型。從另一方面來看,提供了一種數(shù)據(jù)處理方法,該方法包括:響應(yīng)于算術(shù)指令而讀取控制信息,該控制信息分別針對響應(yīng)于該算術(shù)指令而被執(zhí)行的多個處理線路中的至少兩個處理線路中的每個處理線路指定將針對每個線路被執(zhí)行的算術(shù)運算的類型;以及利用所述線路中的所述至少兩個線路來執(zhí)行所述多個處理線路,以通過執(zhí)行由控制信息針對該線路指定的算術(shù)運算的類型來根據(jù)至少一個操作數(shù)向量的相應(yīng)的數(shù)據(jù)元素生成結(jié)果向量的結(jié)果數(shù)據(jù)元素。從以下對示例的描述中可以看出本技術(shù)的其他方面、特征和優(yōu)點,將結(jié)合附圖來閱讀對示例的描述。圖1概要地示出了支持向量處理的數(shù)據(jù)處理裝置的示例;圖2示出了向量處理的示例,其中不同處理線路(lane)使用不同舍入模式來生成相應(yīng)的結(jié)果數(shù)據(jù)元素的舍入值;圖3示出了指令序列的比較示例;圖4示出了用于使用圖2中的技術(shù)來生成與圖3中相同的結(jié)果的指令序列的示例;以及圖5示出了獲得處理線路的結(jié)果數(shù)據(jù)元素的方法。一種裝置可以包括處理電路,該處理電路響應(yīng)于向量指令而對至少一個操作數(shù)向量的各個數(shù)據(jù)元素執(zhí)行多個處理線路以生成結(jié)果向量的相應(yīng)的結(jié)果數(shù)據(jù)元素。該處理電路可以支持以不同的舍入模式針對結(jié)果向量的相應(yīng)的結(jié)果數(shù)據(jù)元素的所生成的舍入值執(zhí)行至少兩個處理線路??梢愿鶕?jù)若干不同的舍入模式來生成舍入結(jié)果值。通常,已經(jīng)使用向量處理(也稱作單指令多數(shù)據(jù)或simd處理)來使用不同數(shù)據(jù)執(zhí)行若干相等的處理運算,所以可能期望為作為整體的向量處理指定單一舍入模式將是足夠的。針對響應(yīng)于向量指令而執(zhí)行的不同線路的處理使用多個舍入模式將會是有用的或令人滿意的,這可能看起來是違反常理的。然而,發(fā)明人認(rèn)識到存在以下情況,在這樣的情況下,需要具有不同舍入模式的多個處理運算,其中每舍入模式相對少的處理運算。例如,軟件庫可能需要使用若干不同的舍入模式來以給定輸入值的集合執(zhí)行相同計算(例如,來研究處理結(jié)果的真實值,如果該真實值比以該結(jié)果格式所表示的更為精確的話)。通過提供能夠以兩個或更多個不同的舍入模式來針對不同線路的向量處理執(zhí)行向量指令的處理電路,可以利用單一向量指令來執(zhí)行這樣的計算。并且,使用單一舍入模式所需要的計算的數(shù)量有時可以相遇向量的數(shù)據(jù)元素的總數(shù)。如果僅有單一舍入模式能夠被用于全部線路,則這可能導(dǎo)致一些處理線路是空閑的。通過允許不同舍入模式響應(yīng)于同一向量指令而被用于不同的處理線路,未被用于以一個舍入模式進(jìn)行計算的線路能夠被用于以不同的舍入模式來執(zhí)行計算,這反而將需要單獨的指令。因此,該技術(shù)允許以較少的指令來執(zhí)行所要求的處理運算的集合,以提升性能、減小代碼大小并降低功耗。不必針對全部指令支持以每線路不同舍入模式(下面稱為“每線路舍入(per-lanerounding)”)的向量處理。在一些情形下,可以僅針對指令的子集支持每線路舍入。例如,處理電路可以支持針對浮點向量質(zhì)量執(zhí)行每線路舍入,而不必針對整數(shù)或定點向量指令支持每線路舍入。浮點向量指令可被看作是如下的任意指令,對該指令而言,(一個或多個)操作數(shù)向量或結(jié)果向量具有表示浮點值的數(shù)據(jù)元素,這樣的指令包括在浮點格式和另一數(shù)字格式之間進(jìn)行轉(zhuǎn)換的指令。對于浮點向量指令而言針對不同處理線路執(zhí)行不同舍入模式是特別有用的,因為針對浮點數(shù)的ieee-754標(biāo)準(zhǔn)可能需要針對大部分浮點運算執(zhí)行舍入。雖然如此,每線路舍入也可被用于其他類型的向量指令,比如,定點或證書指令。例如,當(dāng)從一種定點格式轉(zhuǎn)換到另一定點格式時,以第一格式表示的數(shù)字可能無法使用第二格式來精確地表示,在此情形下,即使第二格式是定點或整數(shù)格式可能也需要進(jìn)行舍入。在一個示例中,處理電路可以對指定將用于每個線路的舍入模式的控制信息作出響應(yīng),從而根據(jù)控制信息所指定的舍入模式來生成每個線路的響應(yīng)的結(jié)果數(shù)據(jù)元素的舍入值??刂菩畔⒖梢允强删幊痰?,以使得程序員可以指定將用于每個線路的舍入模式。處理電路可以具有舍入電路,該舍入電路基于每個線路正在處理的數(shù)據(jù)值以及控制信息為該線路指定的舍入模式來生成針對該線路的舍入增量。舍入電路能夠在用于處理每個線路的每個處理單元內(nèi)被單獨地提供,或者能夠作為在線路間共享的通用控制塊被提供,該通用控制塊輸出針對每個線路的舍入增量??梢砸远喾N不同的方式來表示控制信息。例如,在一些情形下,控制信息可以作為立即值被編碼在指令內(nèi)。然而,為節(jié)省指令集架構(gòu)內(nèi)的編碼空間,控制信息可被存儲在控制存儲位置中。例如,控制存儲位置可以是寄存器。用于存儲控制信息的寄存器可以是默認(rèn)用于每個指令(針對這樣的指令支持每線路舍入)的預(yù)定寄存器,或者是能夠使用向量指令的編碼內(nèi)的寄存器指定符來指定的寄存器,從而針對不同的指令可以選擇不同的控制寄存器。因此,當(dāng)執(zhí)行對其而言支持每線路舍入的向量指令時,處理電路可以查閱控制存儲位置以讀取指定針對每個線路的舍入模式的控制信息,每個處理線路然后可以對控制信息的相應(yīng)部分作出響應(yīng)以標(biāo)識針對該線纜的舍入模式。在控制信息內(nèi)可以有多種方式來表示將由每個線路使用的舍入模式。例如,如果預(yù)期針對每個線路的選定舍入模式的某些樣式將被頻繁使用,則這樣的樣式能夠由預(yù)定標(biāo)識符來標(biāo)識。然而,更一般的途徑可能是提供具有多個控制字段的控制存儲位置,其中每個控制字段存儲用于控制相應(yīng)的處理線路的控制信息。針對至少一種類型的向量指令,用于處理向量處理的給定線路的處理電路可以查閱相應(yīng)的控制字段以確定如何處理操作數(shù)向量的相應(yīng)的數(shù)據(jù)元素來生成結(jié)果數(shù)據(jù)元素,針對給定處理線路的相應(yīng)的數(shù)據(jù)元素可以包括制定將針對該線路使用的舍入模式的舍入模式值。以此方式,每個處理線路可以通過調(diào)整對應(yīng)于該線路的控制字段內(nèi)的舍入模式值來使得其舍入模式獨立于其他線路地被設(shè)置。在一些示例中,處理電路所支持的每個舍入模式可以對應(yīng)于針對給定處理線路的控制字段中的舍入模式值的具體編碼。在其他示例中,并非硬件中所支持的全部舍入模式都可通過舍入模式值來表示(即,并非全部可用舍入模式都可在逐線路的基礎(chǔ)上供選擇)。處在控制存儲位置內(nèi)的逐線路表示外,還可以有其他指定舍入模式的方式。例如,舍入模式值的可能的編碼之一可以被指定為默認(rèn)值,以使得當(dāng)路由模式值具有默認(rèn)值時處理電路可以是喲和你默認(rèn)舍入模式來執(zhí)行相應(yīng)的處理線路。另外的控制存儲位置可以存儲指示默認(rèn)舍入模式的信息。以此方式,即使舍入模式值字段中沒有足夠的空間來表示全部可用舍入模式,仍可通過以下方式來選擇不具有舍入模式值的相應(yīng)編碼的其他舍入模式:通過將另外的控制存儲位置設(shè)置為將這些舍入模式之一指示為默認(rèn)舍入模式并且將一些處理線路的舍入模式值設(shè)置為指示默認(rèn)舍入模式。在控制計算器空間有限的情況下,這能夠有助于減小舍入模式值的大小。并且,該途徑對于與舊有編碼的兼容性是有益的,它可以使用另外的控制存儲位置來設(shè)置用于全部向量的舍入模式。舍入模式值不必針對全部指令以相同的方式進(jìn)行解釋。如上面所提到的,并非全部指令可以支持逐線路舍入。因此,控制字段中用來指示舍入模式的舍入字段可以針對不同類型的指令指示不同的信息。針對至少一種類型的指令(例如,浮點向量指令),舍入字段可以指示將被用于相應(yīng)線路的舍入模式,但是針對至少一種其他類型的指令(例如,整數(shù)或定點向量指令),舍入字段可以指定其他信息。例如,其他信息可以指示相應(yīng)的處理線路將以非飽和算法還是飽和算法來生成結(jié)果數(shù)據(jù),或者可以指示由該處理線路生成的結(jié)構(gòu)的哪部分將由相應(yīng)的結(jié)果數(shù)據(jù)元素來表示,或者可以指示針對該線路應(yīng)當(dāng)執(zhí)行那種類型的算術(shù)或邏輯運算。以此方式,可以在逐線路的基礎(chǔ)上制定信息來以不同方式控制不同處理線路,而無需在指令編碼本身中指定該信息。并且,通過針對不需要每線路舍入的指令將舍入字段重用于其他目的,而不必為該目的提供控制存儲位置的第二字段,來例如節(jié)省寄存器空間。在一個示例中,除舍入模式值外,控制存儲位置還可以包括用于標(biāo)識至少一個操作數(shù)向量的一個或多個選定元素的元素選擇信息,以使得處理電路生成針對至少與元素選擇信息所指示的選定元素相對應(yīng)的處理線路的響應(yīng)結(jié)果數(shù)據(jù)元素。例如,不可能總有足夠的數(shù)據(jù)來填充完整的向量,因此在一些情況下可能僅需要處理輸入向量的元素中的一些元素。通過使用元素選擇信息標(biāo)識選定元素,與未選定元件相對應(yīng)的不活動處理線路不需要被執(zhí)行,或者與不活動線路相對應(yīng)的處理單元可以是功率選通的、被置于固定狀態(tài)、或者被通過零輸入,以減少處理單元的內(nèi)部組件的狀態(tài)的反復(fù)(toggling)來降低功耗。在一個示例中,元素選擇信息能夠包括指示向量的有效部分的長度的向量長度指示,向量長度所指示的若干元件作為選定數(shù)據(jù)元素被處理(例如,向量的若干最低有效元素)。替代地,為允許選擇離散的元素,元素選擇信息可以包括針對每個元素標(biāo)識該元素是有效元素還是無效元素的屏蔽信息。例如,控制存儲位置可以包括如上所討論的多個控制字段,每個控制字段可以包括如下信息,該信息標(biāo)識相應(yīng)的處理線路是將基于至少一個操作數(shù)向量的相應(yīng)的數(shù)據(jù)元素生成相應(yīng)的結(jié)果數(shù)據(jù)元素的活動線路還是對其而言相應(yīng)的結(jié)果數(shù)據(jù)元素與至少一個操作數(shù)向量的相應(yīng)的數(shù)據(jù)元素?zé)o關(guān)的不活動線路。針對那些不活動線路,可以利用默認(rèn)值(比如,零)、或假設(shè)輸入元素值為零而計算得出的值來生成結(jié)果數(shù)據(jù)元素,或者將用結(jié)果值寫入的目的地寄存器的相應(yīng)部分可以保持不變。用于存儲活動/不活動線路信息的控制存儲位置可被重用來還指示針對每個線路的舍入模式值。因為在一些實現(xiàn)方式中在該控制存儲位置中可能存在尚未使用的比特空間,所以這能夠是有用的。例如,活動/不活動線路信息可以僅需要每數(shù)據(jù)元素一比特,但是如果某種固定大小的寄存器被用作控制存儲位置,則可能沒有足夠的屏蔽位來填充整個寄存器。向量指令可以是控制處理電路對至少一個操作數(shù)向量的各個數(shù)據(jù)元素執(zhí)行多個處理線路的任意指令??梢砸圆煌绞絹硖幚硐蛄恐噶睢R恍┫到y(tǒng)可以使用處理電路來處理向量指令,該處理電路依次執(zhí)行每個處理線路以使得一個線路在另一線路之后被執(zhí)行。然而,其他實現(xiàn)方式可以提供用于至少并行地執(zhí)行多個向量處理的線路中的至少一些線路的多個處理單元,以提升性能。有時,向量的全部元素可被并行地處理。然而,也有可能支持具有比硬件所能夠并行處理的數(shù)據(jù)元素多的數(shù)目的數(shù)據(jù)元素的向量。例如,處理電路可以具有m個處理單元(m>1),并且如果向量指令需要多于m個處理電路,則可以幾次通過處理單元來執(zhí)行這些處理線路。因此,向量大小可以與處理電路中所提供的硬件無關(guān),從而可能處理大于所提供的硬件的向量。在另一示例中,裝置可以具有響應(yīng)于算術(shù)指令而執(zhí)行多個處理線路的處理電路,其中每個處理線路通過對至少一個操作數(shù)向量的相應(yīng)的數(shù)據(jù)元素執(zhí)行算術(shù)運算來生成結(jié)果向量的結(jié)果數(shù)據(jù)元素。該裝置還可以具有存儲控制信息的存儲位置,該控制信息響應(yīng)于所述算術(shù)指令而分別針對至少兩個線路中的每個線路指定將被執(zhí)行以生成針對該線路的結(jié)果數(shù)據(jù)元素的算術(shù)運算的類型。在向量(simd)處理中,將被執(zhí)行的運算的類型經(jīng)常由指令編碼來指定,并且針對每個線路將是相同的。通過替代地使用存儲位置來存儲分別針對至少兩個線路指定將被執(zhí)行以生成針對該線路的結(jié)果數(shù)據(jù)元素的算術(shù)運算的類型的控制信息,這允許多個不同類型的算術(shù)運算在更少的指令中被執(zhí)行而不會浪費指令編碼空間來在指令本身中編碼每個線路的算術(shù)運算的類型(在許多指令集架構(gòu)中指令編碼空間通常是稀缺的)。因此,響應(yīng)于單一算術(shù)指令,可以通過在每個線路中使用不同類型的算術(shù)運算來并行地執(zhí)行至少一個操作數(shù)向量的數(shù)據(jù)元素的多個不同的操作。存儲位置中的控制信息不必針對全部算術(shù)指令表示相同的事情。例如,針對第一算術(shù)指令,控制信息可以指定算術(shù)運算的一個性質(zhì),而針對第二算術(shù)指令,控制信息可以指定不同性質(zhì)。以此方式,控制信息的含義可以逐指令而變化。一般而言,控制信息所指示的算術(shù)運算的不同“類型”可以以任何方式有所不同,這使得將對至少一個操作數(shù)向量的(一個或多個)數(shù)據(jù)元素執(zhí)行不同操作以生成針對至少兩個線路的結(jié)果數(shù)據(jù)元素??梢杂煽刂菩畔⑨槍o定線路指定的算術(shù)運算的性質(zhì)的示例可以包括:哪個特定算術(shù)運算將被執(zhí)行以生成針對該線路的結(jié)果數(shù)據(jù)元素(例如,加或減);將用來在該算術(shù)運算中生成針對該線路的結(jié)果數(shù)據(jù)元素的舍入值的舍入模式;以及該算術(shù)運算使用飽和算法還是非飽和算法來生成針對該線路的結(jié)果數(shù)據(jù)元素。在一些示例中,控制信息可以分別針對多個線路中的僅一些線路指定算術(shù)運算的類型。例如,線路可以被劃分為若干線路的子集或組(bank),每個線路的子集或組具有指定針對該子集或排內(nèi)的線路將執(zhí)行的算術(shù)運算的類型的控制信息的相應(yīng)參數(shù)。因此,對于每個線路而言具有關(guān)于算術(shù)運算的單獨的指示并非是必要的。然而,在其他示例中控制信息可以分別針對多個線路中的每個線路指定算術(shù)運算的類型。這可以提供更大的自由來選擇將被應(yīng)用于每個元素的不同運算,這有助于降低實現(xiàn)一系列運算所需的處理的量。這不僅允許更大數(shù)目的不同類型的運算響應(yīng)于單一指令而被執(zhí)行,而且即使當(dāng)需要相對較少的運算的類型時分別針對每個線路指定算術(shù)運算的類型的能力也能夠有助于較少所需的處理的量。這是因為分別針對每個線路指定運算意味著將使用特定類型的算術(shù)運算處理的數(shù)據(jù)元素可以位于(一個或多個)操作數(shù)向量內(nèi)的任意位置,從而不必執(zhí)行額外的元素重新排列運算,以確保將使用同一算術(shù)運算進(jìn)行處理的數(shù)據(jù)元素被放置在與線路的同一子集相對應(yīng)的位置處。浮點型浮點型(fp)是使用少量比特來逼近實數(shù)的有用的方式。ieee754-2008fp標(biāo)準(zhǔn)處理針對fp數(shù)的多種不同格式,但是其中三個為二進(jìn)制64(也稱作雙精度,或dp)、二進(jìn)制32(也稱作單精度,或sp)、以及二進(jìn)制16(也稱作半精度,或hp)。數(shù)字64、32和16指的是每種格式所需的比特數(shù)。表示fp數(shù)十分類似于科學(xué)課上所教導(dǎo)的“科學(xué)記數(shù)法”,其中不寫負(fù)二百萬而是寫作-2.0×106。該數(shù)的各部分為:符號(在此情形下為負(fù)號)、有效數(shù)字(2.0)、指數(shù)的基數(shù)(10)、以及指數(shù)(6)。全部這些部分在fp數(shù)中有類似物,但是存在差異,最主要的差異是這些組成部分被存儲為二進(jìn)制數(shù),并且指數(shù)的基數(shù)總是2。更確切地說,fp數(shù)包括符號位、一些有偏倚的指數(shù)位、以及一些小數(shù)位。具體地,dp、sp和hp格式包含以下位:表1:格式符號指數(shù)小數(shù)指數(shù)偏倚dp[63:0]6362:52(11位)51:0(52位)1023sp[31:0]3130:23(8位)22:0(23位)127hp[15:0]1514:10(5位)9:0(10位)15對于負(fù)數(shù)符號是1,對于正數(shù)符號是0。每個數(shù)包括零在內(nèi)都有符號。指數(shù)是偏倚的,這表示真正的指數(shù)不同于該數(shù)字中所存儲的指數(shù)。例如,偏倚的sp指數(shù)位8比特長且范圍為從0到255。指數(shù)0和255是特殊情形,但是全部其他指數(shù)具有偏倚127,這表示真正的指數(shù)比偏倚的指數(shù)小127。最小的偏倚的指數(shù)是1,其對應(yīng)于真正的指數(shù)-126。最大的偏倚的指數(shù)是254,其對應(yīng)于真正的指數(shù)127。hp和dp指數(shù)利用上表中所指示的偏倚以相同的方式起作用。sp指數(shù)255(或dp指數(shù)2047或hp指數(shù)31)被預(yù)留用于無窮大一級稱作nan的特殊符號(不是數(shù)字)。無窮大(可以是正的或負(fù)的)具有零小數(shù)。具有指數(shù)255和非零小數(shù)的任意數(shù)字是nan。無窮大提供了飽和值,所以它實際上表示類似于“該計算生成了大于以此格式能夠表示的最大數(shù)字的數(shù)字”的事情。對于并非用數(shù)學(xué)方法在實數(shù)上定義的運算(例如,除以零或取負(fù)數(shù)的平方根)返回nan。在任意格式中,指數(shù)零被預(yù)留用于次正規(guī)數(shù)和零。正規(guī)數(shù)表示如下值:-1符號×1.小數(shù)×2e其中e是從偏移的指數(shù)計算得出的真實指數(shù)。項1.小數(shù)被稱作有效數(shù)字,并且1不被存儲為fp數(shù)的一部分,而是從指數(shù)推導(dǎo)出的。除零和最大指數(shù)之外的全部指數(shù)指示1.小數(shù)形式的有效數(shù)字。指數(shù)零指示0形式的有效數(shù)字,并且真正的指數(shù)等于1-給定格式的偏倚。這樣的數(shù)字被稱為次正規(guī)數(shù)(歷史上這些數(shù)字被稱為非正規(guī)數(shù),但是現(xiàn)代用法偏好術(shù)語次正規(guī)數(shù))。具有等于零的指數(shù)部分和小數(shù)部分的數(shù)字是零。表2具有hp格式的一些示例數(shù)字。這些條目是二進(jìn)制的,其中添加了字符“_”以增加可讀性。注意,次正規(guī)條目(該表的低第4行,具有零指數(shù))與上一行中的正規(guī)條目相比產(chǎn)生了不同的有效數(shù)字。表2:符號5位指數(shù)10位小數(shù)11位有效數(shù)字值00111100_0000_0000100_0000_00001.0×2010111010_0000_0000110_0000_0000-1.1×2-100000110_0000_0000110_0000_00001.1×2-1400000010_0000_0000010_0000_00000.1×2-1411111100_0000_0000-無窮大01111100_1111_0011nanfp實現(xiàn)方式的大部分復(fù)雜度是由次正規(guī)數(shù)帶來的,因此經(jīng)常通過微代碼或軟件來處理次正規(guī)數(shù)。一些實現(xiàn)方式在硬件中處理次正規(guī)數(shù),與軟件或微代碼實現(xiàn)方式相比使這些運算加速了10到100倍。整數(shù)、定點型、浮點型處理符號的fp方式被稱為符號數(shù)值,并且它不同于整數(shù)被存儲在計算機(jī)中的常規(guī)方式(二進(jìn)制補碼)。在符號數(shù)值表示中,同一數(shù)字的正版本和負(fù)版本的不同之處僅在于符號位。由符號位和3個有效數(shù)字位構(gòu)成的4位符號數(shù)值整數(shù)將如下來表示正一或負(fù)一:+1=0001-1=1001在二進(jìn)制補碼表示中,n位整數(shù)i由二進(jìn)制n+1-位值2n+i的低階n位來表示,所以4位二進(jìn)制補碼整數(shù)將如下來表示正一或負(fù)一:+1=0001-1=1111二進(jìn)制補碼格式在實踐中通用于有符號整數(shù),因為它簡化了計算機(jī)算法。定點數(shù)看起來與整數(shù)一模一樣,但事實上表示具有某些小數(shù)位的值。傳感器數(shù)據(jù)經(jīng)常是定點格式的,并且在廣泛采用fp之前編寫有大量定點軟件。以定點數(shù)進(jìn)行工作是十分冗長乏味的,因為程序員不得不跟蹤“二進(jìn)制點”(即,數(shù)字的整數(shù)部分和小數(shù)部分的分隔符),并且還不得不不斷地對數(shù)字進(jìn)行移位以保持這些位在正確的地方。fp數(shù)不具有這種困難,因此能夠在定點數(shù)和fp數(shù)之間轉(zhuǎn)換是可取的。能夠進(jìn)行這種轉(zhuǎn)換還意味著我們能夠繼續(xù)使用定點軟件和數(shù)據(jù),但是在編寫新軟件時不再限于定點型。舍入fp數(shù)ieee-754標(biāo)準(zhǔn)要求大部分fp運算就像該運算是以未舍入的范圍和精度實現(xiàn)的那樣被計算,然后進(jìn)行舍入以適應(yīng)于fp數(shù)。如果計算嚴(yán)格匹配fp數(shù),則該值總是被返回,但是計算結(jié)果經(jīng)常是介于兩個連續(xù)浮點數(shù)之間的值。舍入是選取兩個連續(xù)數(shù)字中哪個數(shù)字應(yīng)當(dāng)被返回的過程。存在多種舍入方式,稱為舍入模式;表3中示出了其中的六個。表3:該定義并沒有告訴我們?nèi)绾我匀魏吻袑嵖尚械姆绞竭M(jìn)行舍入。一種常用的實現(xiàn)方式是進(jìn)行運算,關(guān)注截斷值(即,滿足fp格式的值)以及全部剩余位,并且如果某些條件成立則調(diào)整截斷值。這些計算全部都基于:l-(最低)截斷值的最低有效位g-(防護(hù))下一個最高有效位(即,第一位未被包括在截斷中)s-(粘滯)對并非截斷的一部分的全部剩余位的邏輯或在給定這三個值以及截斷值時,我們總能根據(jù)表4計算出正確舍入的值。表4:模式改變到截斷值rne如果(l&g)|(g&s)則增大rna如果g則增大rz無rp如果正的&(g|s)則增大rm如果負(fù)的&(g|s)則增大rx如果g|s則設(shè)置l例如,考慮使兩個4為有效數(shù)字相乘,然后舍入到4位有效數(shù)字。sig1=1011(十進(jìn)制11)sig2=0111(十進(jìn)制7)相乘產(chǎn)生sig1×sig2=1001_101(十進(jìn)制77)l_gss截斷的4位結(jié)果的最低有效位被標(biāo)注為l,下一位是g,并且s是被標(biāo)注為s的剩余位的邏輯或(即,s=0|1=1)。為進(jìn)行舍入,我們根據(jù)舍入模式以及上表的計算來調(diào)整4位結(jié)果(1001)。所以。例如,在rna舍入中,g被設(shè)置為使得我們得到1001+1=1010。對于rx舍入,g|s為真,所以我們將l設(shè)置為1(因為它已經(jīng)是1了,所以在此情形下沒有改變)并返回1001。舍入整數(shù)和定點數(shù)如果我們將fp數(shù)轉(zhuǎn)換為整數(shù)或定點型,我們也不得不進(jìn)行舍入。該概念與fp舍入基本相同。恰好為整數(shù)的fp數(shù)總是舍入到該整數(shù)。全部其他fp數(shù)位于兩個連續(xù)整數(shù)之間,并且舍入決定返回哪個整數(shù)。不幸地是,用于整數(shù)的輸入邏輯有點難,這是因為二進(jìn)制補碼和符號數(shù)值形式之間的差異。增大符號數(shù)值形式的數(shù)總是增大數(shù)值,所以增大的數(shù)離零更遠(yuǎn)。對于正的二進(jìn)制補碼形式的數(shù)會發(fā)生相同的事情,但是負(fù)的二進(jìn)制補碼形式的數(shù)在增大時變得更接近零。這意味著舍入邏輯不得不基于整數(shù)是正的還是負(fù)的而改變。這還意味著我們不得不仔細(xì)選取基值(將增大或不增大的值)。對于正整數(shù),該值僅是截斷的fp有效數(shù)字,所以1.37將具有基值1以及1或2的結(jié)果。對于負(fù)整數(shù),我們同樣截斷有效數(shù)字并且取該結(jié)果的二進(jìn)制反碼(二進(jìn)制反碼是全部位被反相的原始數(shù)字),-1.37被截斷到1并然后反相,給出基值-2。那么一切都解決了,因為我們希望我們的結(jié)果為-2或(當(dāng)增大時)為-1。為使事情更復(fù)雜,我們的轉(zhuǎn)換方法需要一些計算來找到針對負(fù)整數(shù)的l、g和s。正確的舍入將需要我們完成二進(jìn)制補碼處理(反相并加1)并且然后計算l、g和s,但是與僅進(jìn)行反相相比加1是慢的。理想地,我們想要從原始移位的輸入來計算實際的l、g和s(即,從我們關(guān)于符號做任何事情之前的輸入。所以浮點數(shù)1.37或-1.37都將右移到整數(shù)1)。設(shè)l0、g0和s0為反相前的最低有效位(lsb)、防護(hù)以及粘滯,并且設(shè)li、gi和si為反相后的lsb、防護(hù)以及粘滯,最后設(shè)l、g和s為反相且加1后的lsb防護(hù)以及粘滯。如果s0是零,則對si有影響的位全是一,因此(通過向那些si位加1獲得的)s也是零。如果s0非零,則si不全是一,因此s非零。所以在所有情形下s0=s。如果g0是零,則gi是1,且除了存在來自s位的進(jìn)位的情形(僅當(dāng)s0是零時才會發(fā)生這種情形)外g也是一。如果g0是一,則gi是零,且除了存在來自s位的進(jìn)位的情形(僅當(dāng)s0是零時才會發(fā)生這種情形)外g也是一。所以g=g0^s0。通過非常類似的邏輯,l=l0^(g0|s0)。現(xiàn)在有了針對正整數(shù)和負(fù)整數(shù)的l、g和s,我們能夠給出表5中所示的舍入規(guī)則。表5:定點數(shù)舍入的方式與整數(shù)一模一樣。針對(到整數(shù)或定點型)無符號轉(zhuǎn)換的規(guī)則與針對正轉(zhuǎn)換的規(guī)則相同。注入舍入進(jìn)行舍入的更快速的方式是注入舍入常數(shù)作為有效數(shù)字加法的一部分,有效數(shù)字加法幾乎是每個fp運算的一部分。為看看這是如果起作用的,考慮將以美元和美分計的數(shù)字相加,然后舍入到美元。如果我們加$1.27+$2.35$3.62我們看到和$3.62更接近$4而不是$3,所以無論哪個舍入到最近模式都應(yīng)返回$4。如果我們用二進(jìn)制來表示該數(shù),則我們能夠使用上一節(jié)的l、g、s方法獲得相同的結(jié)果。但是,假設(shè)我們僅加五十美分,然后截斷結(jié)果?$1.27+$2.35+$0.50(舍入注入)$4.12如果我們僅返回來自我們的和($4.12)的美元量($4),則我們已經(jīng)使用rna舍入模式正確地進(jìn)行舍入。如果我們添加$0.99而不是$0.50,則我們將使用rp舍入來正確的進(jìn)行舍入。rne略微復(fù)雜些:我們添加$0.50,截斷,然后查看剩余的美分。如果美分余數(shù)非零,則截斷的結(jié)果是正確的。如果剩余的為零美分,則我們在注入之前恰好在兩個美元量之間,所以我們選取偶數(shù)美元量。對于二進(jìn)制fp,這相當(dāng)于將美元量的最低有效位設(shè)置為零。使三個數(shù)相加僅比使兩個數(shù)相加略微慢點,因此與我們使兩個有效數(shù)字相加、檢查l、g和s、然后根據(jù)舍入模式來增大我們的結(jié)果相比,我們通過使用注入舍入更快地獲得了舍入結(jié)果。實現(xiàn)注入舍入對于fp,舍入注入是三個不同值之一,這些值取決于舍入模式和(有時)結(jié)果的符號?!駌na和rne都要求我們在g位置注入1(這就像在美元和美分的示例中加$0.50)?!駌p和rm舍入取決于符號以及模式。rp向上舍入正結(jié)果(朝正無窮增大有效數(shù)字的大小)但截斷負(fù)結(jié)果(選取更接近正無窮的有效數(shù)字)。類似地,rm向上舍入負(fù)結(jié)果(朝負(fù)無窮增大有效數(shù)字的大小)但截斷正結(jié)果(選取更接近負(fù)無窮的有效數(shù)字)。因此,我們將rm和rp拆分為兩種情形:當(dāng)符號匹配舍入方向時向上舍入(ru),并且當(dāng)符號與舍入方向不同時截斷(rz)。對于ru情形,我們在g位位置處以及邏輯上對s有影響的每個位置處注入1(這就像在美元和美分的示例中加$0.99)?!駥τ趓z和rx模式,以及對于精簡為rz模式的rp和rm模式,我們注入零。對于大多數(shù)舍入模式,添加舍入注入并然后截斷給出了正確舍入的結(jié)果。兩個例外是rne和rx,它們要求在添加之后檢查g和s。對于rne,如果g和s都為零,則我們將l設(shè)置為0。對于rx,如果g或s非零,則我們將l設(shè)置為1。fp數(shù)不是實數(shù)很容易認(rèn)為fp數(shù)就像實數(shù)一樣,但是它們是根本不同的,即使是對于最基本的屬性:1.它們是不結(jié)合的。例如,在sp中,我們使3和數(shù)相加并返回1百萬或零,可能不會有什么人看作是舍入誤差:(245+-245)+220=220245+(-245+220)=02.它們不服從分配率。同樣是在sp中:3,000,001*(4.00001+5.00001)=0x4bcdfe83(3,000,001*4.00001)+(3,000,001*5.00001)=0x4bcdfe82并且在存在溢出時情況更為糟糕:250*(278-277)=2127(250*278)-(250*277)=無窮大3.在一些實現(xiàn)方式中,它們甚至不可交換,除非是默認(rèn)nan模式(將全部nan轉(zhuǎn)換為單一nan的模式),因為一般而言,nana+nanb?。絥anb+nana。數(shù)值加和乘是可交換的。4.因為ieeenan規(guī)則,不存在乘法單位元和加法單位元。一和零作為針對數(shù)值值的單位元。考慮fp數(shù)的一種有用的方式是將它們看作非常長的定點數(shù),其中至多有若干(對于dp是53個)連續(xù)位能夠是非零的。例如,非無窮dp數(shù)可以使得有效數(shù)字的第一位在2046個位置中的任意位置,并且第一位后面跟著52個其他有效數(shù)字位,并且由符號位,所以有限的dp數(shù)可以被表示為2046+52+1=2099-位定點數(shù)。以此方式來看,這變得非常明顯,使兩個fp數(shù)相加一般不會得出另一fp數(shù),不得不對加法的結(jié)果進(jìn)行舍入以使得它成為fp數(shù)。圖1概要地示出了數(shù)據(jù)處理裝置2的示例,數(shù)據(jù)處理裝置2包括處理器核4和存儲器6。在一些情形下,存儲器6可以包括緩存或?qū)蛹壗Y(jié)構(gòu)中若干級緩存。核4包括用于使用寄存器10中所存儲的數(shù)據(jù)值執(zhí)行數(shù)據(jù)處理運算的處理電路8。處理電路8可以包括用于使用寄存器14中所存儲的數(shù)據(jù)值執(zhí)行標(biāo)量處理運算的標(biāo)量處理電路12,以及用于使用寄存器18中所存儲的向量數(shù)據(jù)值執(zhí)行向量處理運算的向量處理電路(也被稱作單指令多數(shù)據(jù)(simd)電路)16。寄存器10還可以包括用于存儲用于控制處理電路8的處理運算的各種控制參數(shù)的寄存器20。標(biāo)量寄存器中所存儲的每個值包括單一數(shù)值值,其可以是例如浮點值、定點值或整數(shù)值,相反地,向量寄存器18存儲向量值,向量值可以支持在同一操作數(shù)內(nèi)的多個元素,其中每個數(shù)據(jù)元素被單獨處理以生成結(jié)果向量的單獨的結(jié)果數(shù)據(jù)元素。向量處理電路16可以支持具有不同大小的數(shù)據(jù)元素的向量。例如,64位向量中的值可以例如被看作是一個64位元素、兩個32位元素、四個16位元素或八個8位元素的向量。下面將參考圖2來討論向量處理的示例。將認(rèn)識到,在一些情形下,一些電路能夠在標(biāo)量處理電路12和向量處理電路16之間共享。類似地,在一些情形下,向量寄存器18可以與標(biāo)量寄存器14的一部分重疊。標(biāo)量處理電路12和向量處理電路16可以包括諸如加法器、乘法器、移位器以及其他處理元件之類的元件,這些元件用于對寄存器中所存儲的數(shù)據(jù)值執(zhí)行算術(shù)運算、邏輯運算以及其他操縱以生成將被寫回到寄存器10的結(jié)果值。核4還具有指令提取單元30、指令管線32、指令解碼器34以及加載存儲單元36。在操作中,程序指令可由指令提取單元30從存儲器6中提取并提供給指令管線32。管線32可以具有各種管線級,包括例如解碼級、寄存器重命名級、以及發(fā)布級。管線32可以支持亂序執(zhí)行,其中程序指令可由處理電路8以不同于指令被存儲在存儲器中的程序順序的順序來執(zhí)行。在管線的恰當(dāng)?shù)募壧帲噶畋恢噶罱獯a器34解碼以生成用于控制寄存器10、處理電路8和加載存儲單元36的操作的控制信號。例如,響應(yīng)于加載/存儲指令,加載/存儲單元36可以從存儲器6加載數(shù)據(jù)并將數(shù)據(jù)放在存儲器10中,或者將數(shù)據(jù)從寄存器10存儲到存儲器6。響應(yīng)于數(shù)據(jù)處理指令,處理電路8可以被控制以對從寄存器10讀取的一個或多個值執(zhí)行數(shù)據(jù)處理運算以生成結(jié)果值,該結(jié)果值然后將被寫回到目的地計算器。將認(rèn)識到,裝置2可以包括許多另外的元件,圖1的表示為簡潔起見而進(jìn)行了簡化。圖2示出了執(zhí)行向量處理的示例。向量處理電路16包括多個處理單元40,它們用于提供的對向量的各個部分進(jìn)行運算以生成結(jié)果值的相應(yīng)部分的并行處理線路。在操作中,解碼器34解碼向量指令,該向量指令指定存儲一個或多個操作數(shù)向量v1、v2的寄存器和將向其中寫入結(jié)果向量vr的目的地寄存器。一些指令可以僅指定一個操作數(shù)向量而不是兩個。針對一些指令,操作數(shù)向量之一可以是先前存儲于目的地寄存器中的值。響應(yīng)于向量指令,每個處理線路的處理單元40處理操作數(shù)向量v1、v2的相應(yīng)的數(shù)據(jù)元素以生成結(jié)果向量vr的相應(yīng)的結(jié)果元素。例如,每個處理線路可以對操作數(shù)向量的數(shù)據(jù)元素進(jìn)行加、減、乘,或者執(zhí)行任意其他操縱以生成結(jié)果(包括在不同數(shù)字格式之間的可能轉(zhuǎn)化)。如圖2中所示,針對給定向量運算并不需要全部處理線路都是活動的。控制信息可以在用于控制每個線路的操作的謂詞寄存器vp中被提供。在一些情形下,謂詞寄存器可以由向量指令來指定,或者替代地,謂詞寄存器可以是用于全部向量指令的默認(rèn)寄存器或者以某種其他方式來指定。如圖2中所示,謂詞寄存器可以包括各自對應(yīng)于處理線路之一的控制字段45。每個控制字段包括屏蔽位m,其指示相應(yīng)的處理線路是活動線路還是不活動線路。對于活動線路,根據(jù)操作數(shù)向量v1、v2的相應(yīng)的數(shù)據(jù)元素生成相應(yīng)的結(jié)果數(shù)據(jù)元素。對于不活動線路。該線路的向量vr的結(jié)果數(shù)據(jù)元素與操作數(shù)v1、v2的相應(yīng)的元素?zé)o關(guān)。例如,在圖2中所示的示例中,線路1的屏蔽位被設(shè)置為0,以指示線路1是不活動線路,而線路0、2和3是活動線路,它們的屏蔽位被設(shè)置為1??梢砸圆煌姆绞絹砩刹换顒泳€路的結(jié)構(gòu)數(shù)據(jù)元素。例如,不活動線路的結(jié)構(gòu)數(shù)據(jù)元素可被設(shè)置為預(yù)定值(例如,零),或者能夠保持目的地寄存器的相應(yīng)的數(shù)據(jù)元素在向量指令被執(zhí)行之前所具有的值。對于將多個不同向量指令的結(jié)果裝進(jìn)單一值內(nèi)以使得特定向量指令可以僅填充目的地寄存器的一些元素并且可以使其他元素保持不變,指定活動/不活動線路可能是有用的。謂詞設(shè)置指令可被用于在執(zhí)行相應(yīng)的向量指令前設(shè)置謂詞寄存器vp的屏蔽位m[0]-m[3]。將認(rèn)識到,對屏蔽位的使用僅是示例,并且存在表示那些線路是活動線路以及哪些線路不活動的其他方式。例如,謂詞寄存器可以存儲指示有效元素的數(shù)目的向量長度參數(shù),其中處理電路將最低有限線路向上到所指示的長度內(nèi)的數(shù)據(jù)元素作為活動線路進(jìn)行處理。例如,向量長度2可以指示2個最低有效元素應(yīng)當(dāng)被處理。如上面所解釋的,對于一些處理運算,需要將結(jié)果舍入到可以結(jié)果格式表示的值。在浮點運算的情形下尤其如此,但是對于一些整數(shù)或定點運算也會發(fā)生,尤其是當(dāng)存在從一種格式到另一格式的轉(zhuǎn)換時,當(dāng)可以第一格式表示的值無法以第二格式精確地表示時。因此,針對一些指令,每個向量處理的線路中可能都需要舍入??梢杂胁煌姆绞絹碇甘緦⒈皇褂玫纳崛肽J健R恍┲噶羁梢栽谥噶罹幋a中指定具體的舍入模式。然而,這占用編碼空間來指示舍入模式,這可能減少可被包括在指令集中的其他類型的指令的數(shù)目。并且,控制寄存器20之一可以是用于存儲控制浮點處理的信息的浮點控制寄存器(fpcr)42,其包括設(shè)置將由每個向量處理的線路使用的默認(rèn)舍入模式的舍入模式值44。然而,設(shè)置浮點控制寄存器可能是相對較慢的,尤其是需要以不同舍入模式計算多個值時。例如,一些庫可能希望以若干不同的舍入模式來計算同一算術(shù)運算以研究該算術(shù)運算的結(jié)果的真值。如圖3中所示,為了使用四種不同的舍入模式來計算使標(biāo)量操作數(shù)r1、r2相加的結(jié)果,這將需要四個控制設(shè)置指令(set)來將浮點控制寄存器42中的舍入模式參數(shù)44設(shè)置為針對每個舍入模式(fadd)的恰當(dāng)值,并且需要四個加指令以在每個控制設(shè)置指令后使用所指定的舍入模式來執(zhí)行加法。通過提供向量處理電路16可以避免這些問題,向量處理電路16支持以針對兩個或更多個處理線路40中的各個線路的不同舍入模式來執(zhí)行這些線路以使得每個線路可以使用不同的舍入模式來生成相應(yīng)的結(jié)果數(shù)據(jù)元素的舍入值。謂語寄存器vp的每個控制字段可以包括舍入模式字段46,舍入模式字段46可以指定標(biāo)識將被用于線路的舍入模式的線路舍入模式值lrm。每個線路中的處理單元40可以具有舍入電路48,舍入電路48響應(yīng)于線路舍入模式值lrm而根據(jù)指定的舍入模式來生成舍入增量。例如,線路舍入模式值lrm可以控制在浮點運算中計算出的l、g和s位被映射到舍入增量的方式,如上面在表4和表5中所示。舍入增量可以被添加到線路的結(jié)果或者被用于注入舍入,以使用針對該線路指定的舍入模式來生成結(jié)果值。因此,如在圖2中所示,針對每個活動線路,根據(jù)相應(yīng)的舍入模式值lrm來執(zhí)行舍入,從而每個線路中的舍入模式可以被獨立地控制。線路舍入模式值lrm的位到相應(yīng)舍入模式的映射是任意的,并且能夠基于給定電路實現(xiàn)方式的特定需求進(jìn)行選擇。并不需要支持上面在圖3中討論的所有舍入模式,并且可以指示某些其他舍入模式。指定默認(rèn)舍入模式值44的浮點控制寄存器可以是可選的,并且在一些情形下將由每個線路使用的舍入模式可以完全由謂詞寄存器vp中相應(yīng)的線路舍入模式值lrm指定。其他實施例仍可以在浮點控制寄存器42中提供默認(rèn)舍入模式值44。當(dāng)針對特定向量線路的線路舍入模式值lrm具有默認(rèn)值(例如為零)時,浮點控制寄存器42中指示的舍入模式可被用于該線路。如果線路舍入模式具有不同于默認(rèn)值的值,則可以為該線路選擇可以不同于其他線路的特定舍入模式。針對與舊有程序的兼容性該途徑可能是有用的,這些舊有程序可以是已經(jīng)在假設(shè)浮點控制寄存器42將指定每個線路的舍入模式的情況下編寫而成的。這樣的程序仍可被正常執(zhí)行,然而考慮到特定于線路的舍入而編寫的程序能夠開發(fā)在謂詞寄存器中分別針對每個線路指示舍入模式的新功能。如果謂詞寄存器中可用于編碼線路舍入模式值lrm的位空間具有比表示硬件中所支持的全部可能舍入模式將需要的位少的位,則在浮點控制寄存器中提供默認(rèn)舍入模式項也可能是有用的。在此情形下,線路舍入模式編碼可被分配給預(yù)期在逐線路的基礎(chǔ)上最頻繁使用的舍入模式的子集,而其他舍入模式僅可用于使用浮點控制寄存器42中的舍入模式指定值44將向量作為整體進(jìn)行選擇。如圖4中所示,通過支持針對每個線路的不同舍入模式,則可以使用更少的指令來執(zhí)行圖3中所示的操作。第一指令(set)可以設(shè)置謂詞寄存器vp,以使得字段46中的線路舍入模式值指示針對每個線路的不同舍入模式。向量加指令(vfadd)然后可以使兩個向量相加,其中每個線路使用謂詞寄存器的相應(yīng)字段所指示的舍入模式。在此示例中,兩個指令足以計算與圖3中的八個指令相同的結(jié)果。因此,可以實現(xiàn)大的性能提升、功率節(jié)省以及代碼存儲量的減少,而不需要額外的編碼空間來明確地在指令中指示每個舍入模式。這能夠通過相對少量的硬件增加來提供,因為每個線路可能已經(jīng)具有用于基于上面所解釋的使用不同舍入模式的l、g、s生成舍入增量的電路,但是可以提供一些額外的控制電路來獨立于其他線路地配置每個線路內(nèi)的舍入電路以根據(jù)針對該線路指定的舍入模式來生成舍入增量。因此,可以利用少量額外的電路來實現(xiàn)性能和功耗的顯著改進(jìn)。雖然圖2示出了在同一謂詞寄存器中示出線路舍入模式控制信息和屏蔽信息的示例,但是其他示例可以以不同方式來表示舍入控制信息,例如,與屏蔽信息在不同控制器中。然而,一些向量處理系統(tǒng)可能已經(jīng)具有指定這樣的屏蔽信息的謂詞寄存器,該謂詞寄存器在一些情形下可以具有尚未使用的閑置位。例如,這可能是因為屏蔽信息被存儲在寄存器中或者具有固定大小,但是向量中具有比寄存器中的位少的數(shù)據(jù)元素。在此情形下,謂詞寄存器中的閑置位可被重用于指示線路舍入模式信息,從而不需要任何額外的寄存器空間。在這種類型的系統(tǒng)中,可以預(yù)期謂詞寄存器的尚未使用的位應(yīng)當(dāng)是0,從而線路舍入模式的0值可被選擇作為默認(rèn)值,該默認(rèn)值使得線路根據(jù)浮點控制寄存器42中所指定的默認(rèn)舍入模式進(jìn)行操作。這使得系統(tǒng)以與現(xiàn)有系統(tǒng)相同的功能來處理舊有代碼,同時新代碼可以開發(fā)為每個線路提供不同舍入模式的額外功能。并非全部指令都可能需要每線路舍入。對于一些指令,可能完全沒有任何對于任何舍入的需求,或者使用相同的輸入模式來執(zhí)行對每個數(shù)據(jù)元素的輸入可能就足夠了。對于這些指令,線路舍入模式字段46可被重用于指示其他類型的信息。例如,雖然針對浮點向量指令字段46可以指示線路舍入模式值lrm,但是針對整數(shù)指令這些字段46可以提供在每線路的基礎(chǔ)上有所區(qū)分的其他信息。例如,針對一些算術(shù)指令,控制字段46可以指示每個線路應(yīng)當(dāng)根據(jù)飽和算法還是非飽和算法來生成結(jié)果。針對被指示為使用飽和算法的線路,如果處理結(jié)果具有大于結(jié)果數(shù)據(jù)元素所表示的最大值的值或者小于結(jié)果數(shù)據(jù)元素所表示的最小值的值,則結(jié)果數(shù)據(jù)元素分別可被設(shè)置為該最大值或最小值。針對非飽和算法,如果結(jié)果超過結(jié)果數(shù)據(jù)元素的最大值則它可以繞回并被設(shè)置為該結(jié)果數(shù)據(jù)元素所表示的有效性的較低端的值,并且上溢標(biāo)志被設(shè)置。類似地,針對使用非飽和算法的下溢,可以生成實際上表示較大值的值,但是會設(shè)置下溢標(biāo)志。通過提供在每線路的基礎(chǔ)上選擇這些不同類型的運算的能力,這可以允許以與圖3和圖4的示例類似的方式使用單一向量指令比先前的系統(tǒng)更快地執(zhí)行給定運算集。控制字段46還可被用于指示哪部分處理結(jié)果應(yīng)當(dāng)由相應(yīng)的結(jié)果數(shù)據(jù)元素來表示的一些指令。例如,乘法指令可以生成大于能夠滿足給定線路的結(jié)果數(shù)據(jù)元素的值的乘積。雖然一些指令可能會將該乘積舍入到可在結(jié)果數(shù)據(jù)元素中表示的值,但是其他指令可以僅在結(jié)果數(shù)據(jù)元素中指示該結(jié)果的一部分??刂谱侄?6能夠被用于指示應(yīng)當(dāng)由結(jié)果數(shù)據(jù)元素來表示哪部分。例如,乘積通常將是輸入元素的兩倍寬,所以控制字段46中的位可以選擇該線路生成該乘積的上半部分還是下半部分。如果相鄰線路被提供相同的一對輸入和指定乘積的相對的半部分的控制信息,則這能夠使得相鄰線路生成兩個數(shù)據(jù)元素,它們一起表示整個乘積(上面的元素表示乘積的上半部分并且下面的元素表示乘積的下半部分)。這對于數(shù)據(jù)元素大小轉(zhuǎn)換可能是有用的,從而結(jié)果向量可以實際上具有是輸入向量的兩倍大小的數(shù)據(jù)元素。而且,控制字段可被用于指示針對給定算術(shù)指令向每個線路應(yīng)用哪種具體的算術(shù)運算。例如,控制字段能夠包括指示輸入向量v1、v2的相應(yīng)元素是將被加還是被減的標(biāo)志,從而響應(yīng)于單一指令一些線路可以執(zhí)行加法而其他線路可以執(zhí)行減法。對于執(zhí)行減法的那些線路,輸入向量之一(例如,v2)的數(shù)據(jù)元素可以被反相,然后被與另一向量(例如,v1)的數(shù)據(jù)元素相加,同時對進(jìn)位輸入進(jìn)行斷言,以給出與減法相同的結(jié)果,而對于執(zhí)行加法的線纜,相應(yīng)數(shù)據(jù)元素可以僅被相加而無需反相也無需斷言進(jìn)位輸入。雖然圖2示出了每個處理線路具有指定針對該線路將被執(zhí)行的算術(shù)預(yù)算的類型的獨立的控制字段,但是將認(rèn)識到這并不是必須的,并且其他示例可以僅針對一些線路執(zhí)行獨立的算術(shù)運算的類型。例如,圖2中所示的四個線路能夠被劃分為兩個子集,從而線路0和1執(zhí)行謂詞寄存器vp的第一控制字段所指示的一種類型的運算,并且線路2和3執(zhí)行謂詞寄存器vp的第二控制字段所指示的另一類型的運算。雖然圖2示出了向量各自包括四個數(shù)據(jù)元素并且有四個處理單元40從而每個元素可被并行處理的示例,但這不是必要的。一些系統(tǒng)可以支持大于硬件中所提供的線路的數(shù)目的向量。例如,如果輸入向量具有多于四個元素,它們可通過若干次經(jīng)過處理單元40而被處理,每個經(jīng)過處理這些數(shù)據(jù)元素中的四個數(shù)據(jù)元素。然后可以從每次經(jīng)過中所生成的結(jié)果數(shù)據(jù)元素來裝配最終結(jié)果向量。在一些情形下,當(dāng)向量大小比硬件中所提供的線路的數(shù)目長時,可以跨寄存器組10的多個寄存器存儲這些向量。一些系統(tǒng)還可以支持具有不同大小的數(shù)據(jù)元素的向量。例如,64位向量可被劃分為單一64位數(shù)據(jù)元素、兩個32位數(shù)據(jù)元素,四個16位數(shù)據(jù)元素、或八個8位護(hù)具元素。在此情形下,謂詞寄存器vp還可以指示當(dāng)前運算的數(shù)據(jù)元素大小。處理單元可以具有多個固定大小的處理單元,其中圖2中所指示的每個向量線路40根據(jù)當(dāng)前所選擇的數(shù)據(jù)元素大小而包括這些處理單元中的一個或多個處理單元。對于處理電路而言具有用于并行地處理多個處理線路的并行處理單元也不是必要的。在一些系統(tǒng)中,向量處理電路16可以包括單一處理單元,該處理單元一次執(zhí)行一個線路,每個線路具有不同的舍入模式。圖5示出了生成針對特定處理線路的結(jié)果元素的方法的示例。將認(rèn)識到,可以針對每個線路執(zhí)行這些步驟,無論順序地還是并行地,一次處理若干個線路。在步驟100,確定當(dāng)前線路(以索引x來指代)是否具有有效數(shù)據(jù)。如果該線路的屏蔽位m[x]是1,則該線路具有有效數(shù)據(jù),而如果m[x]是0,則該線路不具有有效數(shù)據(jù)。如果線路x的數(shù)據(jù)是無效的,則在步驟102,與相應(yīng)的數(shù)據(jù)元素v1[x]、v2[x]無關(guān)地生成該線路的結(jié)果數(shù)據(jù)元素vr[x]。例如,vr[x]可以被設(shè)置為默認(rèn)值,或者可以簡單地保持已經(jīng)被存儲在目的寄存器的相應(yīng)部分中的相同值。對于活動線路,在步驟104,確定當(dāng)前向量指令是否是支持每線路舍入的指令類型。如果不是,則在步驟106,根據(jù)輸入向量v1[x]、v2[x]的相應(yīng)元素生成該線路的結(jié)果數(shù)據(jù)元素vr[x]。如果當(dāng)前操作需要某種舍入,則這可以根據(jù)浮點控制寄存器42中所指示的舍入模式來執(zhí)行。線路舍入模式字段46可以提供以某種方式來影響該線路的處理的其他信息,比如,指示是否使用飽和算法的信息、指示將被生成的結(jié)果的有效性的信息、或者指示將被執(zhí)行的算術(shù)運算的類型的信息。如果當(dāng)前指令不支持每線路舍入,則在步驟108,確定針對該線路的線路舍入模式值lrm[x]是否具有默認(rèn)值。如果是,則在步驟110,使用浮點控制寄存器42所指定的舍入模式基于相應(yīng)的數(shù)據(jù)元素v1[x]、v2[x]來生成結(jié)果數(shù)據(jù)元素vr[x]。然而,與步驟106不同,在步驟110中,該舍入模式有可能可以與其他線路所使用的舍入模式不同。另一方面,如果線路舍入模式值lrm[x]不具有默認(rèn)值,則在步驟112,使用線路舍入模式值lrm[x]所指定的舍入模式基于相應(yīng)的數(shù)據(jù)元素v1[x]、v2[x]來生成該線路的結(jié)果數(shù)據(jù)元素vr[x]。在本申請中,使用詞語“被配置為……”來表示裝置的元件具有能夠執(zhí)行所定義的操作的配置。在該上下文中,“配置”表示硬件或軟件的布局或互連方式。例如,該裝置可以具有提供所定義的操作的專用硬件,或者處理器或其他處理設(shè)備可被編程以執(zhí)行該功能?!氨慌渲脼椤辈话凳緸榱颂峁┧x的操作該裝置元件需要以任何方式進(jìn)行改變。雖然這里已經(jīng)參考附圖描述了本發(fā)明的說明性實施例,但是應(yīng)理解本發(fā)明不限于那些精確的實施例,并且可以由本領(lǐng)域技術(shù)人員在不背離由所附權(quán)利要求限定的本發(fā)明的范圍和精神的情況下引起各種變化和修改。當(dāng)前第1頁12