內,示出存儲器訪問的時效性2225的 指令模板和存儲器訪問的非時效性2230的指令模板。圖8B中的B類指令模板包括:1)在 無存儲器訪問2205的指令模板內,示出無存儲器訪問的寫掩碼控制的部分舍入控制型操 作2212的指令模板以及無存儲器訪問的寫掩碼控制的vsize型操作2217的指令模板;以 及2)在存儲器訪問2220的指令模板內,示出存儲器訪問的寫掩碼控制2227的指令模板。
[0071] 通用向量友好指令格式2200包括以下列出的按照在圖8A和圖8B中示出的順序 的如下字段。格式字段2240 -該字段中的特定值(指令格式標識符值)唯一地標識向量 友好指令格式,并且由此標識指令在指令流中以向量友好指令格式出現。由此,該字段對于 僅具有通用向量友好指令格式的指令集是不需要的,在這個意義上該字段是可選的。基礎 操作字段2242 -其內容區分不同的基礎操作。
[0072] 寄存器索引字段2244-其內容直接或者通過地址生成來指定源或目的地操作數 在寄存器中或者在存儲器中的位置。這些字段包括從PxQ(例如,32x512、16xl28、32xl024、 64x1024)寄存器組中選擇N個寄存器的足夠數量的位。盡管在一個實施例中N可多至三個 源和一個目的地寄存器,但是替代實施例可支持更多或更少的源和目的地寄存器(例如, 可支持多至兩個源(其中,這些源中的一個源還用作目的地),可支持多至三個源(其中,這 些源中的一個源還用作目的地),可支持多至兩個源和一個目的地)。
[0073] 修飾符(modifier)字段2246 -其內容將指定存儲器訪問的以通用向量指令格式 出現的指令與不指定存儲器訪問的以通用向量指令格式出現的指令區分開;也就是說,在 無存儲器訪問2205的指令模板與存儲器訪問2220的指令模板之間進行區分。存儲器訪問 操作讀取和/或寫入到存儲器層次結構(在一些情況下,使用寄存器中的值來指定源和/ 或目的地地址),而非存儲器訪問操作不這樣(例如,源和/或目的地是寄存器)。盡管在 一個實施例中,該字段還在三種不同的方式之間選擇以執行存儲器地址計算,但是替代實 施例可支持更多、更少或不同的方式來執行存儲器地址計算。
[0074] 擴充操作字段2250 -其內容區分除基礎操作以外還要執行各種不同操作中的哪 一個操作。該字段是針對上下文的。在本發明的一個實施例中,該字段被劃分成類字段 2268、a字段2252、以及0字段2254。擴充操作字段2250允許在單條指令而非2、3或4 條指令中執行多組共同的操作。比例字段2260 -其內容允許用于存儲器地址生成(例如, 用于使用2? *索引+基址的地址生成)的索引字段的內容按比例縮放。
[0075] 位移字段2262A -其內容用作存儲器地址生成的部分(例如,用于使用索引 +基址+位移的地址生成)。位移因數字段2262B (注意,位移字段2262A直接在位移因數 字段2262B上的并置指示使用一個或另一個)一其內容用作地址生成的一部分,它指定通 過存儲器訪問的尺寸(N)按比例縮放的位移因數,其中N是存儲器訪問中的字節數量(例 如,用于使用2 tw *索引+基址+按比例縮放的位移的地址生成)。忽略冗余的低階位,并 且因此將位移因數字段的內容乘以存儲器操作數總尺寸(N)以生成在計算有效地址中使 用的最終位移。N的值由處理器硬件在運行時基于完整操作碼字段2274(稍后在本文中描 述)和數據操縱字段2254C確定。位移字段2262A和位移因數字段2262B可以不用于無存 儲器訪問2205的指令模板,并且/或者不同的實施例可實現兩者中的僅一個或不實現兩者 中的任一個,在這個意義上,位移字段2262A和位移因數字段2262B是可選的。
[0076] 數據元素寬度字段2264 -其內容區分將使用多個數據元素寬度中的哪一個(在 一些實施例中用于所有指令,在其他實施例中僅用于指令中的一些)。如果支持僅一個數據 元素寬度,并且/或者使用操作碼的某一方面來支持數據元素寬度,則該字段是不需要的, 在這個意義上該字段是可選的。
[0077] 寫掩碼字段2270 -其內容在每一數據元素位置的基礎上控制目的地向量操作數 中的數據元素位置是否反映基礎操作和擴充操作的結果。A類指令模板支持合并-寫掩碼 操作,而B類指令模板支持合并寫掩碼操作和歸零寫掩碼操作兩者。當合并時,向量掩碼允 許在執行(由基礎操作和擴充操作指定的)任何操作期間保護目的地中的任何元素集免于 更新;在其他實施例中,保持其中對應掩碼位具有〇的目的地的每一元素的舊值。相反,當 歸零時,向量掩碼允許在執行(由基礎操作和擴充操作指定的)任何操作期間,使目的地中 的任何元素集歸零;在一個實施例中,當對應掩碼位具有〇值時,將目的地的元素設置為0。 該功能的子集是控制正在被執行的操作的向量長度的能力(即,從第一個到最后一個被修 改的元素的跨度),然而,被修改的元素不一定要是連續的。由此,寫掩碼字段2270允許部 分向量操作,這包括加載、存儲、算術、邏輯等。盡管描述了其中寫掩碼字段2270的內容選 擇多個寫掩碼寄存器中的、包含要使用的寫掩碼的一個寫掩碼寄存器(并且由此,寫掩碼 字段2270的內容間接地標識要執行的掩碼操作)的本發明的實施例,但是替代實施例相反 或另外允許掩碼寫字段2270的內容直接地指定要執行的掩碼操作。
[0078] 立即數字段2272 -其內容允許對立即數的指定。該字段在不支持立即數的通用 向量友好格式的實現中不存在,并且在不使用立即數的指令中不存在,在這個意義上該字 段是可選的。類字段2268 -其內容在不同類的指令之間進行區分。參考圖8A和圖B,該字 段的內容在A類和B類指令之間進行選擇。在圖8A和圖8B中,圓角方形用于指示專用值 存在于字段中(例如,在圖8A和圖B中分別用于類字段2268的A類2268A和B類2268B)。
[0079]在A類非存儲器訪問2205的指令模板的情況下,a字段2252被解釋為其內容 區分要執行不同擴充操作類型中的哪一種(例如,針對無存儲器訪問的舍入型操作2210 和無存儲器訪問的數據變換型操作2215的指令模板,分別指定舍入2252A. 1和數據變換 2252A. 2)的RS字段2252A,而0字段2254區分要執行指定類型的操作中的哪一種。在無 存儲器訪問2205指令模板中,比例字段2260、位移字段2262A以及位移比例字段2262B不 存在。
[0080] 在無存儲器訪問的完全舍入控制型操作2210的指令模板中,e字段2254被解釋 為其內容提供靜態舍入的舍入控制字段2254A。盡管在本發明的所述實施例中,舍入控制字 段2254A包括抑制所有浮點異常(SAE)字段2256和舍入操作控制字段2258,但是替代實 施例可支持這兩個概念,并且可將這兩個概念都編碼成相同的字段,或者僅具有這些概念/ 字段中的一個或另一個(例如,可僅具有舍入操作控制字段2258)。
[0081] SAE字段2256 -其內容區分是否禁用異常事件報告;當SAE字段2256的內容指 示啟用抑制時,給定的指令不報告任何種類的浮點異常標志,并且不喚起任何浮點異常處 理程序。
[0082] 舍入操作控制字段2258 -其內容區分要執行一組舍入操作中的哪一個(例如,向 上舍入、向下舍入、向零舍入以及就近舍入)。由此,舍入操作控制字段2258允許逐指令地 改變舍入模式。在其中處理器包括用于指定舍入模式的控制寄存器的本發明的一個實施例 中,舍入操作控制字段2250的內容覆蓋該寄存器值。
[0083] 在無存儲器訪問的數據變換型操作2215的指令模板中,0字段2254被解釋為數 據變換字段2254B,其內容區分要執行多個數據變換中的哪一個(例如,無數據變換、混合、 廣播)。
[0084] 在A類存儲器訪問2220的指令模板的情況下,a字段2252被解釋為驅逐提示 字段2252B,其內容區分要使用驅逐提示中的哪一個(在圖8A中,對于存儲器訪問時效性 2225的指令模板和存儲器訪問非時效性2230的指令模板分別指定時效性的2252B. 1和非 時效性的2252B. 2),而0字段2254被解釋為數據操縱字段2254C,其內容區分要執行多個 數據操縱操作(也稱為基元(primitive))中的哪一個(例如,無操縱、廣播、源的向上轉換 以及目的地的向下轉換)。存儲器訪問2220的指令模板包括比例字段2260,并可選地包括 位移字段2262A或位移比例字段2262B。
[0085]向量存儲器指令使用轉換支持來執行來自存儲器的向量加載和去往存儲器的向 量存儲。如同尋常的向量指令,向量存儲器指令以數據元素式的方式往返于存儲器傳輸數 據,其中,實際傳輸的元素由被選為寫掩碼的向量掩碼的內容規定。
[0086] 時效性的數據是可能足夠快地被重新使用以從高速緩存操作中受益的數據。然 而,這是提示,且不同的處理器能以不同的方式實現它,包括完全忽略該提示。非時效性的 數據是不可能被足夠快地重新使用以從第一級高速緩存中的高速緩存操作中受益且應當 被給予驅逐優先級的數據。然而,這是提示,且不同的處理器能以不同的方式實現它,包括 完全忽略該提不。
[0087] 在B類指令模板的情況下,a字段2252被解釋為寫掩碼控制(Z)字段2252C,其 內容區分由寫掩碼字段2270控制的寫掩碼操作應當是合并還是歸零。
[0088] 在B類非存儲器訪問2205的指令模板的情況下,0字段2254的部分被解釋為RL 字段2257A,其內容區分要執行不同擴充操作類型中的哪一種(例如,針對無存儲器訪問的 寫掩碼控制部分舍入控制類型操作2212的指令模板和無存儲器訪問的寫掩碼控制VSIZE 型操作2217的指令模板,分別指定舍入2257A. 1和向量長度(VSIZE)2257A. 2),而0字段 2254的其余部分區分要執行指定類型的操作中的哪一種。在無存儲器訪問2205指令模板 中,比例字段2260、位移字段2262A以及位移比例字段2262B不存在。
[0089] 在無存儲器訪問的寫掩碼控制的部分舍入控制型操作2210的指令模板中,0字 段2254的其余部分被解釋為舍入操作字段2259A,并且禁用異常事件報告(給定的指令不 報告任何種類的浮點異常標志,并且不喚起任何浮點異常處理程序)。
[0090] 舍入操作控制字段2259A -就如同舍入操作控制字段2258,其內容區分一組舍入 操作中的哪一個(例如,向上舍入、向下舍入、向零舍入、以及就近舍入)要執行。由此,舍 入操作控制字段2259A允許逐指令地改變舍入模式。在其中處理器包括用于指定舍入模式 的控制寄存器的本發明的一個實施例中,舍入操作控制字段2250的內容覆蓋該寄存器值。
[0091] 在無存儲器訪問的寫掩碼控制VSIZE型操作2217的指令模板中,0字段2254的 其余部分被解釋為向量長度字段2259B,其內容區分要執行多個數據向量長度中的哪一個 (例如,128字節、256字節或512字節)。
[0092] 在B類存儲器訪問2220的指令模板的情況下,0字段2254的部分被解釋為廣播 字段2257B,其內容區分是否要執行廣播型數據操縱操作,而0字段2254的其余部分被解 釋為向量長度字段2259B。存儲器訪問2220的指令模板包括比例字段2260,并可選地包括 位移字段2262A或位移比例字