新四季網

對處理圖像的指令進行處理的方法、控制器和系統的製作方法

2023-05-12 17:04:16

專利名稱:對處理圖像的指令進行處理的方法、控制器和系統的製作方法
技術領域:
本發明通常涉及圖像處理領域,且更具體地,涉及用於處理圖 像的指令集合。
背景技術:
從三維場景來呈現二維圖像的處理通常稱作圖像處理。圖像呈 現的一個特殊目的是使二維仿真或者三維場景的呈現儘可能逼真。 這種為了使得場景呈現更為逼真的需求導致了越來越高的圖像複雜 性以及用於處理複雜圖像的創新方法。
通常在監視器或者某種類型的顯示屏上顯示表示三維場景的二 維圖像。現代監視器通過使用像素來顯示圖像。像素是在監視器上 示出的最小空間區域。多數現代計算機監視器使用數十萬或者數百 萬的像素組合來構成整個顯示或者呈現的場景。單獨的像素以柵格 形式設置並且共同覆蓋監視器的整個觀察區域。可以示出每個單獨 的像素以呈現用於觀察的最終畫面。
一種方法稱為光柵化,用於使用像素在二維監視器上呈現真實
世界的三維場景。光柵化是如下過程採用以矢量格式(場景之內 幾何物體的數學表示)表示的二維圖像,並且將該圖像轉換成為用 於在監視器上顯示的獨立像素。在快速呈現圖形以及使用相對較低 數量的計算能力方面,光柵化是有效的;然而,光柵化受到某些負 面影響。例如,因為光柵化並不是基於光的物理屬性而是基於在投 影到二維平面之上的場景中的三維幾何物體的形狀,所以光柵化通 常受到缺少真實性的影響。此外,由光柵化呈現場景所需的計算能 力直接隨著待呈現場景中物體複雜性的增加而按比例變化。隨著圖 像處理變得更為真實,呈現的場景也變得更加複雜。因而,因為光
柵化直接隨複雜性而按比例變化,使得光柵化隨著圖像處理的發展 受到影響。
另 一種方法稱作射線跟蹤,其用於使用像素將真實世界的三維 場景呈現在二維監視器之上。射線跟蹤技術跟蹤將要在計算機屏幕 上呈現的三維場景之中的其行為類似於光線的假想射線的傳播。射 線源於坐在計算機屏幕後的觀察者的眼睛,並且穿過構成計算機屏 幕的像素而通過,朝向三維場景。每個跟蹤的射線行進到場景之中 並且可以與場景以內的物體相交。如果射線與場景以內的物體相交, 則使用該物體的屬性以及多個其他起作用的因素,例如光源的影響, 來計算射線暴露處的顏色和光的量、或者其中的缺乏。然後,使用 這些計算來確定跟蹤的射線所通過的像素的最終顏色。
對單一場景多次執行射線跟蹤過程。例如,可以為顯示器中的
每個像素跟蹤單一射線。 一旦為了確定構成計算機屏幕的二維顯示 的所有像素的顏色已經跟蹤了足夠數量的射線,則可以在計算機屏 幕上向觀察者顯示三維場景的二維合成。
通常,射線跟蹤比光柵化更為真實地呈現現實世界的三維場景。 這部分地是由於射線跟蹤模擬了真實世界環境中光的傳播和行為, 而不像光柵化所執行的那樣,將三維形狀簡單地投影到二維平面之 上。因而,使用射線跟蹤呈現的圖形在監視器上更精確地描述了我 們的眼睛所習慣看到的真實世界中的景物。
此外,相對於光柵化,射線跟蹤還可以處理越來越複雜的場景。 射線跟蹤隨場景複雜性而成對數比例變化。這是由於以下事實,即 使場景變得更為複雜,也只有相同數量的射線投射到場景之中。因 而,與光柵化不同的是,隨著場景變得更為複雜,在計算機能力需 求方面射線跟蹤並未受到影響。
然而,射線跟蹤的一個主要缺點是大量浮點計算,並且由此增 加的呈現場景所需的處理能力。當需要快速呈現時導致出現問題, 例如,當圖像處理系統例如在遊戲控制臺中針對動畫目的而呈現圖 形的時候。由於對於射線跟蹤所增加的計算需求,難以快速呈現看
起來足夠真實的動畫(真實的動畫大約是每秒二十至二十四幀)。
使用例如射線跟蹤的圖像處理可以包括執行矢量和標量數學運 算兩者。因而,用於圖像處理的硬體支持可以包括配置為執行多種 計算的矢量和標量單元。矢量和標量運算例如可以是跟蹤通過場景 的光的路徑、或者移動三維場景以內的物體。矢量單元可以對場景 中關於物體的矢量執行例如點乘、叉乘的運算。標量單元可以對標 量值執行算術運算,例如加、減、乘、除等。
可以將矢量和標量單元管線化(pipeline)以改進性能。然而, 執行矢量運算可以包括執行相互依賴的多個指令的多個迭代。指令 之間的這種依賴可以降低管線化單元的效率。例如,為了在執行第 二指令之前完成第一指令,可能不曾使用多個管線化階段。
此外,每個矢量單元可以與寄存器文件耦合,所述寄存器文件 包括由矢量單元處理的矢量數據。矢量數據可以包含在一個或者多 個寄存器中的一個或者多個位置中。因而,可以發布一個或者多個 指令來將所述矢量數據在目標寄存器之內的期望位置中重新設置。 重新設置矢量數據的多個指令可能通過消耗發布帶寬的重要部分而 限制矢量處理的效率。另外,重新設置矢量數據的一個或者多個指 令可能彼此依賴,由此引入了進一步限制效率的進一步的管線化遲 延(stall)和未使用的管線化階段。
此外,重新設置矢量數據可能要求使用多個臨時寄存器。因為 需要構造大的寄存器文件,這消耗寶貴的空間並且根據寄存器的可 用性而限制了矢量數據的處理,因而大量臨時寄存器的使用又引入 了另外一種效率低下。
由此,針對處理矢量數據需要更為有效的方法、系統和產品。

發明內容
本發明 一 般涉及圖像處理領域,並且尤其涉及用於處理圖像的 指令集合。
本發明的一個實施方式提供了一種^^行指令的方法。該方法一
般包括設置與寄存器文件和矢量單元耦合的一個或者多個多路選 擇器的控制,其中多路選擇器控制的設置配置為確定對矢量單元提 供輸入的一個或者多個寄存器中內容的設置。所述方法進一步包括 發布算術指令,其中根據多路選擇器控制的設置,在從寄存器文件 向矢量單元傳送期間,由 一個或者多個多路選擇器重新設置與算術 指令相關聯的寄存器的內容。
本發明的另 一 實施方式提供了 一種控制器,所述控制器一般配 置為接收一般包括swizzle指令(順序調整指令)和算術指令的指令。 每個swizzle指令可以與一個算術指令相關聯,其中如果指令是 swizzle指令,則控制器配置為設置與寄存器文件和矢量單元耦合的 一個或者多個多路選擇器的控制,其中該多路選擇器控制的設置配 置為確定對矢量單元提供輸入的一個或者多個寄存器中的內容的設 置。如果指令是算術指令,則控制器配置為允許向矢量單元傳送與 算術指令相關聯的寄存器的內容,其中根據多路選擇器控制的設置, 在從寄存器文件向矢量單元傳送內容期間,由一個或者多個多路選 擇器重新設置內容。
本發明的又 一 個實施方式提供了 一種系統,所述系統 一 般包括 彼此通信地耦合的多個處理器,其中每個處理器一般包括寄存器 文件,所述寄存器文件包括多個寄存器;至少一個矢量單元,用於 執行算術指令; 一個或者多個多路選擇器,其與寄存器文件和至少 一個矢量單元耦合,其中多路選擇器配置為將寄存器文件中的一個 或者多個寄存器的內容傳送到至少一個矢量單元;以及控制器配置 為接收swizzle指令和算術指令。每個swizzle指令可以與算術指令 相關聯,其中如果指令是swizzle指令,則控制器配置為設置一個或 者多個多路選擇器的控制,其中所述多路選擇器控制的設置配置為 確定對矢量單元提供輸入的一個或者多個寄存器中的內容的設置。 如果指令是算術指令,則控制器配置為允許向矢量單元傳送與算術 指令相關聯的寄存器的內容,其中根據多路選擇器控制的設置,在 從寄存器文件向矢量單元傳送內容期間,由一個或者多個多路選擇
器重新設置內容。


由此,通過參考在附圖中示出的本發明的實施方式,可以獲得 並且詳細理解本發明的上述特徵、優點和目的的方式以及上文簡要 概括的本發明的更多特定描述。
然而,應該注意,附圖僅示出了本發明的典型實施方式,並且 由此不應認為是對本發明範圍的限制,本發明還包括其他等效的實 施方式。
圖1示出了根據本發明一個實施方式的多核處理元件,
圖2示出了根據本發明的實施方式的多核處理元件網絡, 圖3是根據本發明一個實施方式的由圖像處理系統呈現的示例 性三維場景,
圖4示出了根據本發明一個實施方式的在屏幕上呈現的物體的 詳細4見圖,
圖5示出了叉乘運算,
圖6示出了根據本發明的實施方式的寄存器, 圖7示出了根據本發明的實施方式的矢量單元和存儲器文件, 圖8示出了根據本發明的實施方式的矢量單元的詳細視圖, 圖9根據本發明的實施方式,示出了用於執行叉乘運算的示例 性指令,
圖IO根據本發明的的實施方式,示出了在圖9中的指令的管線 化的執行,
圖11A示出了根據本發明的實施方式的示例性系統, 圖IIB示出了根據本發明的實施方式的潛在的操作數重新設置, 圖12示出了根據本發明的實施方式的swizzle指令, 圖13根據本發明的的實施方式,示出了用於執行叉乘運算的另 一指令流的管線化的執行,
圖14是根據本發明的實施方式的由swizzle控制器所執行的示
例性運算的流程圖,該運算用以重新設置寄存器中的操作數。
具體實施例方式
本發明通常涉及圖像處理領域,並且更具體地涉及用於處理圖 像的指令集合。矢量處理可以包括在執行矢量運算之前將一個或者 多個源寄存器中的矢量操作數進行重新設置。典型地,通過發布多 個序列改變指令來執行源寄存器中操作數的重新設置,這需要使用 額外的臨時寄存器。此外,序列改變指令可以導致在管線中執行的 指令之間的差異,由此不利地影響性能。本發明的實施方式在寄存 器文件和矢量單元之間造成某程度的多路選擇,這允許在向矢量單 元提供操作數之前重新設置源寄存器中的矢量操作數,由此,消除 對序列改變指令的需要。
在下文中,對本發明的實施方式進行參考。然而應該理解,本 發明並不局限於特定描述的實施方式。而是,無論是否涉及不同的 實施方式,認為下文的特徵和元素的任意結合執行並且實踐本發明。 此外,在各種實施方式中,本發明提供了優於現有技術的多個優點。 然而,儘管本發明的實施方式可以實現優於其他可能解決方案和/或 優於現有技術的優點,給定實施方式是否實現特定優點並不限制本 發明。由此,下文的方面、特徵、實施方式和優點僅是示意性的, 而並不認為是所附權利要求書的限制或者元素,除非在一個或多個 權利要求中明確闡明。同樣,"本發明,,的引用並不認為是在此公 開的任何發明性主題的概括,也不認為是所附權利要求書的限制或 者元素,除非在一個或多個權利要求中明確闡明。
示例性處理器布局和通信網絡
圖1示出了其中可以實現本發明實施方式的示例性多核處理元
件100。多核處理元件100包括多個基本吞吐引擎105(BTE) 。 BTE 105可以包含多個處理線程和核心高速緩衝存儲器(例如,Ll高速 緩衝存儲器)。定位在每個BTE之中的處理線程可以訪問共享多核 處理元件高速緩沖存儲器110 (例如,L2高速緩沖存儲器)。
BTE 105還可以訪問多個收件箱115。收件箱115可以是存々者器 映射的地址空間。收件箱115可以映射到定位在每個BTE 105以內 的處理線程。定位在BTE以內的每個線程具有存儲器映射的收件箱 並且訪問所有其他存儲器映射的收件箱115。收件箱115構成由BTE 105所使用的低等待時間和高帶寬的通信網絡。
BTE可以使用收件箱115作為彼此相互通信的網絡,並且在BTE 之中重新分配數據處理工作。對於某些實施方式,在通信網絡中可 以使用分開的發件箱,例如,由BTE 105接收處理結果。對於其他 實施方式,收件箱115還可以用作發件箱,例如,由一個BTE105, 其將處理功能結果直接寫入將要使用該結果的另一BTE 105的收件 箱中。
圖像處理系統的集合性能依賴於BTE劃分和重新分配工作的好 壞。收件箱115的網絡可用以收集並將工作分配給其他BTE,而不 必由不具有幀對幀一致性的BTE通信數據分組來中斷共享的多核處 理元件高速緩衝存儲器110。每幀能夠呈現數百萬個三角形的成像處 理系統可以包括以此方式連^妄的許多BTE105。
在本發明的一個實施方式中,可以向工作量管理器指定一個 BTE 105的線程。圖像處理系統可以使用各種軟體和硬體組件來從 三維場景呈現二維圖像。根據本發明的一個實施方式,圖像處理系 統可以使用工作量管理器來由圖像處理系統所發出的射線來遍歷空 間索引。空間索引可以實現為樹型數據結構,用以將相對較大的三 維場景劃分成為較小的包圍體積。使用用於成像處理的射線跟蹤方 法的成像處理系統可以使用空間索引來快速確定射線包圍體積相 交。在本發明的一個實施方式中,工作量管理器可通過使用空間索 引來執行射線包圍體積相交測試。
在本發明的一個實施方式中,多核處理元件100上的多核處理 元件BTE 105的其他線程可以是矢量吞吐引擎。在工作量管理器確 定射線包圍體積相交之後,工作量管理器可以經由收件箱115向多
個矢量吞吐引擎之一發出(發送)射線。然後,矢量吞吐引擎可以
確定射線與包圍體積以內包含的圖元(primitive)是否相交。矢量吞
吐引擎還可以執行相關運算,用以確定射線穿過經過的像素的顏色。
圖2示出了根據本發明一個實施方式的多核處理元件200的網
絡。圖2還示出了本發明的一個實施方式,其中多核處理元件100
的BTE之一的線程是工作量管理器205。根據本發明的一個實施方
式,在多核處理元件200的網絡中的每個多核處理元件220w可以 包含一個工作量管理器205n根據本發明的一個實施方式,多核處
理元件200的網絡中的每個處理器220還可以包含多個矢量吞吐引 擎210。
根據本發明的一個實施方式,工作量管理器220w可以使用高速 總線225來與其他工作量管理器220bN和/或其他多核處理單元220 的矢量吞吐引擎210進行通信。矢量吞吐引擎210的每個可以使用 高速總線225來與其他矢量吞吐引擎210或者工作量管理器205進 行通信。工作量管理器處理器205可以使用高速總線225,以便收集 並向其他工作量管理器處理器205分配圖像處理相關的任務,和/或 向其他矢量吞吐引擎210分配任務。高速總線225的使用可以允許 工作量管理器205^進行通信,而不會影響具有關於工作量管理器 205通信的數據分組的高速緩沖存儲器230。
示例性三維場景
圖3是將要由圖像處理系統呈現的示例性三維場景305。在三維 場景305以內存在物體320。圖3中的物體320是不同的幾何形狀。 儘管在圖3中僅示出了四個物體320,通常在三維場景中物體的數目 可以更多或者更少。通常,三維場景具有比圖3中示出更多的物體。
如圖3中可見,物體具有各種幾何形狀和大小。例如,在圖3 中的一個物體是金字塔320a。圖3中的其他物體是盒體320b.d。在 許多現代圖像處理系統中,物體通常分開成為較小的幾何形狀(例 如,正方形、圓形、三角形等)。較大的物體則由許多較小的簡單
幾何形狀來表示。這些較小几何形狀通常稱作圖元。
在場景305中還示出了光源325A.B。光源將在場景305中定位的 物體320照亮。此外,#4居場景305以內的光源325和物體320的 位置,光源可以產生投射到場景305以內的物體之上的陰影。
圖像處理系統可以將三維場景305呈現至二維畫面。圖像處理 系統還可以使二維畫面顯示在監視器310上。監視器310可以使用 不同顏色的許多像素330來呈現最終的二維畫面。
一種由圖像處理系統使用的方法稱作射線跟蹤,該方法用以將 三維場景320呈現至二維畫面。由從觀察者315的將射線"發出" 或者"射出"進入三維場景320的圖形處理系統來實現射線跟蹤。 射線具有與光線類似的屬性和行為。
在圖3中可見,從觀察者315的位置發出一條射線340並且經 過三維場景305而通過。隨著射線340從觀察者315穿過直到三維 場景305,射線340通過一個平面,將由圖像處理系統在該平面處呈 現最終二維畫面。在圖3中,由監視器310表示該平面。由像素335 來表示射線340通過平面或者監視器310的點。
如先前概括描述,大多數圖像處理系統使用數千像素(如果不 是百萬的話)的柵格330來在監視器310上呈現最終的場景。每個 獨立的像素可以顯示不同的顏色,以便在監視器310上呈現最終構 成的二維畫面。圖像處理系統使用射線跟蹤圖像處理方法論來從三
維場景呈現二維畫面,該圖像處理系統計算發出的 一條或者多條射 線在三維場景中相遇處的顏色。然後,圖像處理場景將對射線相遇 的像素指定顏色,射線通過該像素而在從觀察者去往三維場景的通 ^各上傳遞。
每個像素所發出射線的數目可以是變化的。針對將要呈現的特 殊場景,某些像素可以發出許多射線。在此情況下,由來自針對該 像素髮出的所有射線的每個顏色的貢獻來確定像素的最終顏色。其 他像素可以僅發出單 一 的射線,用以確定二維畫面中像素的結果顏 色。某些像素可能不具有圖像處理系統發出的任何射線,在此情況
下這些像素的顏色是由圖像處理系統以內的算法來確定的、近似的 或者賦值的。
為了在二維畫面中確定像素335的最終顏色,圖像處理系統必 須確定射線340是否與場景以內的物體相交。在場景以內,如果射 線沒有與物體相交,則可以將其指定為默認的背景顏色(例如,表 示白天或者夜晚天空的藍色或者黑色)。相反,由於射線340通過 三維場景,射線340可能會到達物體。當射線到達場景以內的物體 時,物體的顏色可以由射線通過的像素來賦值。然而,必須在其對 像素賦值之前確定物體的顏色。
許多因素會對由原始射線340到達的物體的顏色有所貢獻。例 如,三維場景以內的光源可以照亮物體。此外,物體的物理屬性對 物體的顏色有所貢獻。例如,如果物體是反射性的或者透明的,則 其他非光源物體可能對物體的顏色有所貢獻。
為了確定來自三維場景以內其他物體的影響,可以從原始射線 340與物體相交的點發出二級射線。例如, 一種類型的二級射線是陰 影射線。陰影射線可用以確定原始射線340與物體相交的點處的光 的貢獻。另一種類型的二級射線是透射射線。透射射線可用以確定 通過物體的體透射的顏色或者光。此外,第三種類型的二級射線是 反射射線。反射射線可用以確定在物體上反射的顏色或者光。
如上所述, 一種類型的二級射線是陰影射線。從原始射線與物 體的相交點到三維場景305以內的光源,可以跟蹤每條陰影射線。 如果射線到達光源,而且在射線到達光源之前沒有遇到另 一物體, 則在原始射線到達物體的點的位置,光源將照亮由原始射線到達的 物體。
例如,從原始射線340與物體32(U相交的點的位置可以發出陰 影射線34U,並且陰影射線34U沿朝向光源325A的方向通過。陰 影射線34U到達光源325A而沒有遇到場景305以內的任何其他物體 320。由此,光源325a將在原始射踐340與物體320a相交的點的位 置照亮物體320A。
其他陰影射線使得由三維場景以內的另 一物體阻擋它們的路 徑,所述路徑位於到達物體的原始射線和光源之間。如果對原始射 線到達的物體以及光源上的點之間的路徑進行阻礙的物體是不透明 的,則光源不會照亮原始射線到達物體的點的位置處的物體。由此, 光源對原始射線的顏色沒有貢獻,並且因而對在二維畫面中呈現的 像素的顏色也沒有貢獻。然而,如果該物體是半透明或者透明的, 貝'J光源在原始射線到達物體的,A的位置可以照亮物體。
例如,可以從原始射線340與物體320A相交的點的位置發出陰 影射線34lB,並且所述陰影射線341b可以沿朝向光源325b的方向穿 過。在此例子中,由物體3200阻斷陰影射線341b的路徑。如果物體 320d是不透明的,則在原始射線340與物體320a相交的點的位置, 光源325b將不會照亮物體320A。然而,如果物體320o的陰影射線 是半透明或者透明的,則光源325e在原始射線340與物體320a相交 的點的位置可以照亮物體320A。
另一種類型的二級射線是透射的射線。如果與原始射線相交的 物體具有透明或者半透明屬性(例如,玻璃),則可以由圖像處理 系統發出透射的射線。透射的射線以與原始射線到達物體的角度相 關的角度穿過物體。例如,可以看到,透射的射線344通過與原始 射線340相交的物體320a而穿近。
另一種類型的二級射線是反射射線。如果與原始射線相交的物 體具有反射屬性(例如,金屬拋光),則將由圖像處理系統發出反 射的射線以確定由該物體所反射的顏色或者光。反射的射線以與原 始射線與該物體相交的角度相關的角度遠離該物體而傳送。例如, 可以由圖像處理系統所發出的反射的射線343來確定與原始射線 340相交的物體320a所反射的顏色或者光。
所有二級射線(例如,陰影射線、透射的射線、反射的射線等) 的顏色和光的總體貢獻將導致原始射線所通過的像素的最終顏色。
矢量運算
處理圖像可以包括執行 一 個或者多個矢量運算以確定例如射線 與物體的相交、陰影射線的生成、反射的射線等。在成像處理期間 執行的一個普通運算是在兩個矢量之間的叉乘運算。可以執行叉乘 運算以確定來自表面的法向矢量,例如,在三維場景中物體的圖元 的表面。法向矢量可以指示該物體的表面對於觀察者是否可見。
如前所述,場景中的每個物體可以表示為彼此連接以形成物體 形狀的多個圖元。例如,在一個實施方式中,每個物體可以包括多
個互聯的三角形。圖4示出了包括多個三角形410的一個示例性物 體400。物體400可以是由圖4中的多個三角形410形成的球形物體。 為了示出的目的而顯示了粗糙的球形物體。本領域技術人員應該認 識到,可以由更多個更小的三角形構成物體400的表面,/人而更近 4以於曲面淨勿體。
在本發明的一個實施方式中,針對每個三角形410計算表面法 線,以便確定該三角形的表面對於觀察者450是否可見。為了確定 每個三角形的表面法線,可以在表示三角形的兩條邊的兩個矢量之 間扭j亍叉乘運算。例如,可以通過在矢量411a和411b之間拭i行叉 乘來計算三角形410a的表面法線413。
法線矢量可以確定表面(例如,圖元的表面)是否面向觀察者, 參考圖4,法線矢量413指向觀察者450的方向。因而,可以向用戶 顯示三角形410。另一方面,三角形410b的法線矢量415指向遠離 觀察者450的方向。因而,不必向》見察者顯示三角形410b。
圖5示出了在兩個矢量A和B之間的叉乘運算。如所示出,矢 量A可以表示為坐標[xa, ya, za],而矢量B可以表示為坐標[xb, yb, zb]。 叉乘AxB生成了矢量N,該矢量N與包含矢量A和矢量B的平面
垂直(法向)。如所示出,法線矢量的坐標是[(yaZb-ybZa),(XbZa-XaZb),
(xayb-xbya)]。本領域技術人員應該認識到,矢量A可以對應於圖4 中的矢量411a,且矢量B可以對應於矢量411b,而矢量N可以對應 於法線矢量413。
在圖像處理期間所執行的另一普通矢量運算是點乘運算。可以
執行點乘運算以便確定場景中物體的旋轉、運動、位置等。點乘運 算產生標量值,該值獨立於坐標系統並且表示歐幾裡德空間中的內
積。下文的等式描述了在先前所述的矢量A和矢量B之間執行的點 乘運算
A B = xa xb + ya ' yb + za . zb
對於執行矢量運算的硬體支持
如前所述,例如圖2中的VTE210的矢量吞吐引擎(VTE)可 以執行運算以確定射線與圖元是否相交,並且確定射線所通過的像 素的顏色。執行的運算可以包括多個矢量運算和標量運算。因而, VTE 210可以配置為向用於執行矢量運算的矢量單元發出指令。
矢量處理可以包括發出一個或者多個矢量指令。矢量指令可以 配置為執行運算,該運算包含在一個或者多個寄存器中的一個或者 多個操作數。 一個或者多個寄存器可以是與矢量單元相關聯的寄存 器文件的一部分。圖6示出了包括一個或者多個操作數的示例性寄 存器600。如圖6中所示,寄存器文件中的每個寄存器可以包括多個 部分,其中每個部分包含一個操作數。
在圖6示出的實施方式中,寄存器600示出為128位寄存器。 寄存器600可以劃分成為四個32位字的部分示出了字O、字l、 字2和字3。如所示出,字0可以包括位0-31,字1可以包括位32 -63,字2可以包括位64 - 97,而字3可以包括位98 - 127。然而, 本領域技術人員應認識到,寄存器600可以是任意合理長度、並且 可以包括任意數目的任意合理長度的部分。
寄存器600中的每個部分可以包括用於矢量運算的操作數。例 如,寄存器600可以包括對於矢量(例如,圖5的矢量A)的坐標 和數據。因而,字0可以包4舌坐標Xa,字l可以包括坐標ya,而字2 可以包括坐標Za。字3可以包括關於與該矢量相關聯的圖元的數據, 例如,顏色、透明度等。在一個實施方式中,圖3可以用以存儲標 量值。標量值與字0-2中包含的矢量坐標相關、或者不相關。 圖7示出了示例性矢量單元700以及相關聯的寄存器文件710。 矢量單元700可以配置為執行單指令多數據(SIMD)指令。換言之, 矢量單元700可以針對一個或者多個矢量運算以產生單一的標量或 者矢量結果。例如,矢量單元700可以在數據元素之上執行並行運 算,該數據元素包括一個或者多個矢量以產生標量或者矢量結果。
在寄存器文件710中可以存儲由矢量單元運算的多個矢量。例 如,在圖7中,矢量文件710提供32個128位寄存器711(R0-R31 )。 可以以類似圖6的寄存器600的方式來組織寄存器711中的每個。 因而,每個寄存器711可以包括矢量數據,例如,矢量坐標、像素 數據、透明度等。使用裝載和存儲指令,可以在寄存器文件710和 例如高速緩衝存儲器存儲器的存儲器之間交換數據。因而,寄存器 文件710與存儲器設備可通信地耦合,所述存儲器設備例如動態隨 機訪問存儲器(DRAM)設備或者高速緩衝存儲器(SRAM)設備。
多個線路(lane )720可以將寄存器文件710連接到矢量單元700。 每個線路可配置為從寄存器文件向矢量單元提供輸入。例如,在圖7 中,三個128位的線路將寄存器文件連接到矢量單元700。以此方式, 可以同時向矢量單元提供來自寄存器文件710的任意三個寄存器的 內容。
由矢量單元執行的運算的結果可以寫回到寄存器文件710。例 如,128位線路721提供了寫迴路徑,用以將由矢量單元700所計算 的結果寫回到寄存器文件710的寄存器711的任意一個。
圖8示出了矢量單元800的詳細視圖。矢量單元800是在圖7 中所述的矢量單元700的一個實施方式。如在圖8中所示,矢量單 元800可以包括多個處理線路。例如,在圖8中示出了三個處理線 3各810、 820和830。每個處理線^^配置為與一個或者多個其他處理 線路並行地執行運算。例如,每個處理線路可以將一對操作數相乘 以便執行叉乘運算或者點乘運算。通過將矢量單元的不同處理線路 中的不同操作數對進行相乘,可以更快、更有效地執行矢量運算。
在本發明的一個實施方式中,矢量單元800的一個或者多個處
理線路配置為執行標量運算。由此,矢量單元800配置為執行標量 和矢量運算兩者。例如在一個實施方式中,矢量單元800可以包括 四個處理線路,其中三個處理線路配置為執行矢量運算,且另一個 處理線路配置為執行標量運算。
將每個處理線路管線化以進一步改進性能。因而,每個處理線 路可以包括多個管線化階段,其中每個階段對操作數執行 一 個或者 多個運算。例如,每個矢量線路可以包括乘法器851,用於將一對操 作數A和操作數C相乘。可以從將寄存器文件與矢量單元進行耦合 的線路之一,例如圖7中的線路720,來獲取操作數A和操作數C。 在本發明的一個實施方式中,可以在圖8所示的管線的第一階段中 執行操作數的相乘。
每個處理線路還可以包括校準器,用於校準由乘法器851計算 的乘積。例如,在每個處理線路中可以提供校準器852。校準器852 配置為在結果中將由乘法器851計算的乘積的十進位小數點調整至 期望位置。例如,校準器852可以配置為將由乘法器851計算的乘 積的位偏移一個或者多個位置,由此使乘積成為期望的格式。在圖8 中,儘管校準示出為獨立的管線階段,本領域技術人員應該認識到, 可以在相同的管線階段中執行乘法和校準。
每個處理線路還可以包括用於將兩個或者多個操作數進行相加 的加法器853。在一個實施方式中(在圖8中所示),每個加法器 853配置為接收由乘法器計算的乘積,並且將該乘積與另一操作數B 相加。與操作數A和操作數C類似,可以從將寄存器文件連接到矢 量單元的線路之一獲取操作數B。由此,每個處理線路可以配置為 執行多加法指令。本領域技術人員應該認識到,在矢量運算中頻繁 執行多加法指令。由此,通過在並行線路中執行多個多加法指令, 可以顯著改進矢量處理的效率。
如圖8中所示,每個矢量處理線路還可以包4舌歸一化階,爻和四 舍五入階段。因而,可以將歸一化器854設置在每個處理線路中。 歸一化器854配置為以傳統指數格式表示計算的值。例如,歸一化
器接收作為運算結果的值0.0000063。歸一化器854可以將該值轉換 成為更適合的指數格式,例如,6.3xi(T6。四捨五入階段包括將計算 的值四捨五入成為期望的十進位小數點位數。例如,如果在結果中 僅期望保留三個十進位位,則10.5682349的計算的值可以四捨五入 成為10.568。在本發明的一個實施方式中,四捨五入器可以將特定 精度浮點數字的最不顯著的位四捨五入,其中四捨五入器設計以與 該特定精度的浮,泉數字協同工作。
本領域技術人員應該認識到,本發明的實施方式並不限制於在 上文和圖8中所述的特殊的管線階段、組件、以及組件的排列。例 如,在某些實施方式中,校準器852可以配置為校準操作數B、由 乘法器計算的乘積、或者兩者。此外,本發明的實施方式並不局限 於在圖8中所描述的特定組件。在每個處理線路中可以包括示出組 件以及附加組件的任意結合,該組件以及附加組件包括但不限於諸 如前導零加法器(leading zero adder )、除法器等。
在本發明的一個實施方式中, 一個或者多個矢量單元可以與寄 存器文件耦合。例如,在一個實施方式中,兩個矢量單元可以與寄 存器文件耦合。每個矢量單元可以配置為獨立、同步地處理矢量和 標量指令。在一個實施方式中,可以與第二矢量單元共享第一矢量 單元中的一個或者多個資源,以便處理例如叉乘指令的指令。
由單一矢量單元執行叉乘
使用矢量單元執行叉乘運算,例如矢量單元800可以包括乘法 指令。例如,返回參考圖5,叉乘運算需要六個乘法運算和三個減法 運算。因為矢量單元800包括具有三個乘法器的三個矢量處理線路, 所以執行叉乘運算可以包括乘法指令。
圖9示出了示例性指令,用於通過向矢量單元發出乘法指令來 執行叉乘運算。執行叉乘運算可以包括發出多個序列改變指令901。 該序列改變指令配置為將用於執行叉乘運算的操作數轉換成為寄存 器文件的期望寄存器中的期望位置。例如,序列改變運算可以將數
據從第一寄存器轉移至第二寄存器。序列改變指令還可以選擇特殊 位置,例如特殊的字的位置(參見圖6),用於將數據從一個寄存器 轉移到另一寄存器。在一個實施方式中,序列改變指令可以在相同 寄存器以內重新設置數據元素的位置。
一旦操作數處於期望寄存器中的期望位置,則可以發出第 一 指
令902來執行第一組乘法運算。第一組乘法運算可以執行用以執行 叉乘運算所需的6個乘法運算的一個或者多個。例如,在一個實施 方式中,第一組乘法運算可以執行六個乘法運算中的三個。可以在 矢量單元的三個處理線路中的每個中執行乘法運算。可以將第一組 乘法運算的結果存回寄存器文件的一個或者多個寄存器中。
接著,可以發出第二指令903以執行第二組乘法運算。第二組 乘法運算可以執行在第一組乘法運算中未執行的叉乘的其餘(三個) 乘法運算。在一個實施方式中,第二指令可以包括執行用於完成叉 乘運算的第二組乘法運算和減法運算兩者。
例如,返回參考圖8,操作數A和操作數C可以與用於執行第 二組乘法運算的操作數相關聯。可以從第一組乘法運算的結果減去 第二組乘法運算的結果,反之亦然。例如,可以經由圖8的操作數B, 作為用於執行減法運算的加法器853的輸入來提供第一組乘法運算 的結果。
如前所述,可以將由矢量單元執行的指令管線化。因為在序列 改變指令901、第一乘法指令902、以及第二乘法指令903之間存在 依賴,所以一個或者多個管線化階段可能會被遲延。例如,可能不 會執行第 一乘法指令,直到將操作數移入適當寄存器中的適當位置。 由此,可能不執行第一乘法指令,直到序列改變指令完成,由此需 要管線化遲延。類似地,因為第二乘法指令可以使用來自第一乘法 指令的結果,第二乘法指令可能不會執行,直到第一乘法指令的完 成,由此在第一乘法指令和第二乘法指令之間需要管線化遲延。
圖10示出了在管線中指令901、指令902和指令903的執行。 為了示出目的,假定每個指令的執行是4個時鐘周期的長度。然而,
本領域技術人員應該認識到,指令的執行可以佔用任意數目的時鐘 周期。此外,用於執行的時鐘周期的數目在指令之間有所不同。
如圖IO所示,第一序列改變指令901a的執行在第一時鐘周期 (CC1)中開始,並且在CC4中結束。類似地,指令901b的執行在 CC2中開始並在CC5中結束,指令901c的執行在CC3中開始並在 CC6中結束,且指令901d的執行在CC4中開始並在CC7中結束。
指令902的執行在CC6而不是CC5中開始,這是因為指令902 依賴於指令901b。例如序列改變指令901b訪問寄存器v3,指令902 也訪問該寄存器V3。由此,在CC5中遲延指令902的執行,以便允 許完成執行指令901b。本領域技術人員應該認識到,指令902依賴 於序列改變指令901a - 901d的任一項。在開始執行指令902之前所 需的遲延的數目依賴於指令902所依賴的特定指令。例如,如果指 令902依賴於指令901d,則在從CC5至CC7遲延指令902的執行。
由此,如圖IO中所示,在最好情況下,叉乘運算的執行在CC6 中開始,這是因為需要序列改變指令來在寄存器中的適當位置中設 置操作數,並且需要遲延管線,以便解決指令之間的依賴性。在最 差情況下,叉乘運算的執行在CC8中開始。
圖IO還示出了在第一乘法指令902和第二乘法指令903之間的 管線化的遲延。在第 一乘法指令和第二乘法指令之間可以執行管線 化的遲延,以便允許第一乘法指令的結果對於第二乘法指令是可用 的。由此,如圖10中所示,第二乘法指令不會進入管線直到完成執 行第一乘法指令902。
重新設置操作數的swizzle指令
在本發明的某些實施方式中,可以在寄存器文件和矢量單元之 間提供一定級別的多路選擇,以便重新設置源寄存器的內容。操作 數多路選擇器(mux )可以將其中向矢量單元的特定線路提供寄存器 的操作數的順序進行重新設置,由此避免對序列改變指令的需求。 可以提供swizzle指令,用以在從寄存器文件向矢量單元轉移寄存器
內容之前來設置多路選擇器控制。
圖IIA示出了一個其中可以實現使用swizzle指令的本發明的實 施方式的示例性系統1100。如所示出,系統1100可以包括寄存器文 件710、矢量單元800、多個多路選擇器(mux) 1110、 swizzle控制 器1130以及發布邏輯1140。發布邏輯1140可以控制向矢量單元800 發出指令。多個多路選擇器1110與每個線路720相關聯,所述線路 720將寄存器內容從寄存器文件710轉移到矢量單元800(參見圖7)。 多路選擇器1110配置為在將寄存器內容轉移到矢量單元800之前重 新設置寄存器中操作數的順序。
例如,如圖11A中所示,可以向每個相關聯的多路選擇器1110 提供來自寄存器1120的每個操作數。每個多路選擇器1110可以選 擇從寄存器1120接收的操作數之一,並且將所選擇的操作數傳送至 矢量管線,由此,允許在寄存器1120中重新設置操作數。例如,寄 存器1120具有操作數X、 Y、 Z、 W的初始順序。可以向每個多路 選擇器1110提供操作數X、 Y、 Z和W中的每個。每個多路選擇器 1110可以選擇操作數之一 ,由此將操作數重新設置為不同的期望順 序X' 、 Y' 、 Z' 、 W'。操作數X' 、 Y' 、 Z'和W'的每個可 以是操作數X、 Y、 Z和W的任一項。圖IIB示出了操作數X、 Y、 W和Z的示例性組合,其可以表示發送到矢量單元的操作數X'、 Y' 、 Z'和W' 。 swizzle控制器1130配置為選擇在圖11B中示出 的操作數X、 Y、 Z和W的組合的任一項。然而,本領域技術人員 應該認識到,操作數的組合併不局限於在圖11B中公開的那些。在 某些實施方式中,swizzle控制器1130可以選擇操作數X、 Y、 Z和 W的一個來表示一個或者多個操作數X' 、 Y' 、 W'和Z'。例如, 在圖11B中的一個可能的組合是X、 X、 X、 Y。
在向矢量單元傳送寄存器內容之前,可以提供swizzle指令來設 置控制多路選擇的鎖存器(在swizzle控制器1130中)。圖12示出 了根據本發明實施方式的示例性swizzle指令1200。如圖12中所示, swizzle指令1200可以包括一個或者多個才乘作碼欄位1210。例如,
在swizzle指令1200中示出了兩個才喿作碼欄位主操作碼和次:操作 碼。操作碼欄位1210配置為將指令標識為swizzle指令。
swizzle指令1200還可以包括一個或者多個操作數選擇字,殳。例 如,示出了三個操作數選擇欄位1231 - 1233。每個操作數選擇欄位 可以與圖11A的多路選擇器1110相關聯,並且設置鎖存器以確定由 多路選擇器1110選擇的操作數。例如,在一個實施方式中,操作數 選擇欄位1231 - 1233的每個可以包括4位。這4位的每個可以與輸 入寄存器的操作數相關聯。例如,第一位可以與寄存器1120的字0 位置中的操作數相關聯,第二位可以與寄存器1120的字l位置相關 聯,第三位可以與寄存器11.20的字2位置相關聯,且第四位可以與 寄存器1120的字3位置相關聯。
在操作數選擇欄位中允許四個位之一 ,這可以設置控制多路選擇 器1110的鎖存器,以便允許選擇與該位相關聯的操作數。可以選擇 一個位,例如,通過將該位設置為邏輯"1"。然而,本領域技術人 員應該認識到,還可以通過將該位設置為邏輯"0"來實現位允許。 例如,在一個實施方式中,在操作數選擇欄位1231中,可以允許第 二位,由此選擇寄存器1120的字1位置中的操作數。由此,多路選 擇器可以向矢量單元傳送輸入寄存器1120的字1位置中的操作數。 swizzle指令的操作數選擇欄位1231 - 1233可以針對每個多路選擇 器1110來設置控制,從而可以在寄存器中實現所期望的操作數的重 新設置,例如,乂人X、 Y、 Z和W到X' 、 Y' 、 Z'和W'。
在本發明的另一實施方式中,每個操作數選擇欄位可以包括兩個 位。這兩個位可以確定選擇了寄存器1120中的哪個字的位置。例如 在寄存器1120中,"00"表示選擇字O的位置,"01"表示選擇字 1的位置,"10"表示選擇字2的位置,而"11"表示選擇字3的位 置。在一個實施方式中,操作數選擇欄位1231 - 1233的每個可以是 8位寬度。對於將寄存器文件710連接到矢量單元800的特定線路 720,每個操作數選擇欄位1231 - 1233可以確定矢量操作數的重新 設置。每個操作數選擇欄位1231 - 1233可以包括四個2位欄位,用
於在寄存器中選擇四個操作數的一個。例如,參考圖12,操作數選 擇字4殳1231包括四個2位欄位,Ax' 、 Ay' 、 Az'和Aw'。例如, Ax'欄位可以確定操作數X' , Ay'可以確定4喿作數Y' , Az'可 以確定操作數Z',且Aw'可以確定操作數W',其中操作數X'、 Y' 、Z'和W'是針對特定線路720而從寄存器傳送至矢量單元的。
本領域技術人員應該認識到,本發明的實施方式並不局限於在此 所述的字選擇方案。更一般地,可以使用用於在寄存器1120中選擇 位置的任何合理的方式。此外,所選擇的位置並不局限於字的位置。 例如,還可以考慮選擇半字和字節位置。
在本發明的一個實施方式中,swizzle指令可以佔用與其他指令 (例如,矢量指令和標量指令)相同數量的指令存儲器。因而,swizzle 指令可以是在指令高速緩衝存儲、緩衝、依賴性遲延、發布等期間 的歸一化指令。
在一個實施方式中,swizzle指令可以設置控制多路選擇器1110 的鎖存器,但是不能繼續沿矢量管線下行或者佔有管線階段,由此 在swizzle指令和隨後的矢量或者標量指令之間避免了任何潛在的依 賴性。由此,可以總是在緊跟著與發布swizzle指令相關聯的時鐘周 期的時鐘周期中發布矢量和標量指令。
返回參考圖IIA,可以提供swizzle控制器1130來控制鎖存器的 設置和清除,所述鎖存器根據swizzle指令的操作數選擇欄位來確定 由多路選擇器1110選擇的操作數。例如,在 一 個實施方式中,swizzle 指令可以位於需要重新設置寄存器操作數的每個矢量指令之前。因
而,發布邏輯1140可以配置為在發出相關聯的矢量或者標量指令之 前發出swizzle指令。swizzle控制器1130可以從發布邏輯1140接收 指令,並且根據在所接收的swizzle指令中的操作數選擇位來設置控 制多路選擇器的鎖存器,以便實現期望的寄存器操作數的重新設置。 在發出相關聯的swizzle指令之後,發布邏輯1140可以發出矢量 或者標量指令。例如,在一個實施方式中,在跟隨swizzle指令的時 鍾周期中,發布邏輯1140可以發出矢量或者標量指令。在一個實施 方式中,在緊跟著發出相關聯的swizzle指令的時鐘周期的時鐘周期 中,發布邏輯1140可以發出矢量或者標量指令。
在每個矢量和標量指令之前,不必發出swizzle指令。例如,期 望的是按照正常順序(例如,X、 Y、 Z、 W)向矢量單元傳送寄存 器內容。如果在發出矢量或者標量指令之前沒有發出swizzle指令, 則多路選擇器1110可以配置為按照正常順序傳送寄存器內容。在一 個實施方式中,swizzle控制器1130可以配置為在發出矢量或者標量 指令之後清除控制多路選擇器的鎖存器。清除鎖存器可以設置每個 多路選擇器以從寄存器中選擇默認操作數。例如,在一個實施方式 中,默認選擇可以在寄存器中選擇正常順序的操作數(X、 Y、 Z、 W)。
在本發明的一個實施方式中,swizzle控制器1130可以配置為在 出現管線清空(flush)時清除控制多路選擇器選擇的鎖存器。由於 異步地中斷或者任何其他原因,例如遇到分支和跳轉指令,而出現 管線的清空。在一個實施方式中,中斷處理器可以處理中斷,並且 將處理返回遇到中斷之前正在執行的代碼。在此實例中,發布邏輯 1140可以在swizzle指令處、或者在swizzle指令之前開始執4亍,其 中在中斷出現的時候正在執行所述swizzle指令。這確保了在執行相 關聯的矢量或者標量指令之前總是執行swizzle指令,由此避免了算 術指令的錯誤執行。
圖13根據本發明的實施方式,示出了在管線中執行點乘運算的 指令的執行。指令可以包括例如在圖9和圖10中示出的指令902和 指令903。如圖13中所示,執行點乘運算可以包括在CC1中發出第 一 swizzle指令1302。 swizzle指令1302可以與指令902相關聯,並 且設置多路選擇器控制,用於將與指令902相關聯的寄存器內容進 行重新設置。例如,在一個實施方式中,swizzle指令1302可以設置 多路選擇器控制以重新設置與指令902相關聯的寄存器Vl和v2的內 容。
接著在CC2中,可以發出指令902,並且可以執行持續四個時鐘
周期(CC2-CC5)。在發出指令902時,swizzle控制器1130允許 根據由swizzle指令1302設置的多路選擇器控制來將寄存器內容傳 送至矢量管線。在傳送寄存器內容之後,多路選擇器控制器1130可 以清除控制多路選擇器選擇的鎖存器。
swizzle指令1303可以與指令903相關聯,並且如圖13中所示 可以在CC3中發出。swizzle指令1303可以設置鎖存器,用於重新
設置與指令903相關聯的寄存器,例如,寄存器Vs、 V9和V7。因為
指令903依賴於指令902,然而,指令903的執行在CC6之前不會 開始。
與圖10和圖13相比,執行swizzle指令的益處變得清楚明了。 如上所述,swizzle指令避免了發出序列改變指令的需要,由此避免 了在指令管線中執行序列改變指令,並且降低了指令之間的潛在依 賴性。例如,參考圖10,在最好情況下,在CC6中開始執行指令902, 且在CC10中開始執行指令903。然而,在圖13中,在CC2中開始 執行指令902,並且在CC6中開始執行指令903。由此,通過降低向 矢量管線發出的指令的數目、並且降低指令之間的依賴性,執行 swizzle指令顯著改進了性能。
此外,如在圖9中由序列改變指令901所指示,使用序列改變指 令可以包括使用臨時寄存器。通過避免序列改變指令,可以降低在 寄存器文件中的寄存器過度使用,由此使得寄存器對其他運算可用 和/或降低寄存器文件的大小。
圖14是由swizzle控制器所執行的示例性運算的流程圖,所述運 算用以設置並清除控制多路選擇器1110的鎖存器。通過從發布邏輯 1140接收指令而在步驟1401中開始運算。在步驟1402中,swizzle 控制器1130可以確定指令是否是swizzle指令。如果確定指令是 swizzle指令,則在步驟1403中,swizzle控制器1130可以根據例如 在swizzle指令中包含的操作數選擇位1231 - 1233來設置控制多路 選擇器1110的鎖存器。
然而,如果確定指令不是swizzle指令,則swizzle控制器可以允
許從寄存器文件710向矢量單元800傳送數據。swizzle控制器可以 根據由swizzle指令先前發出的多路選擇器控制設置來允許通過多路 選擇器傳送數據。在發出指令之後,在步驟1405中,swizzle控制器 1405可以清除控制多路選擇器的鎖存器,由此設置該鎖存器以自然 順序從寄存器傳送數據。
結論
通過允許發出swizzle指令來設置多路選擇器控制,本發明的實 施方式避免了對於序列改變指令的需要,其中所述多路選擇器控制 用於重新設置寄存器中操作數的順序。此外,因為不再需要序列改 變指令,這還顯著降低了在寄存器文件中寄存器的過度使用以及指 令之間的依賴性。因而增強了性能。
儘管上文闡明了本發明的實施方式,然而在不偏離本發明的基本 範圍的情況下,還可以做出本發明的其他以及進 一 步的實施方式, 並且由以下的權利要求書來確定本發明的範圍。
權利要求
1.一種執行指令的方法,包括對耦合到寄存器文件和矢量單元的一個或者多個多路選擇器的控制進行設置,其中所述多路選擇器控制的設置配置為確定對所述矢量單元提供輸入的一個或者多個寄存器中的內容的設置;以及發出算術指令,其中根據所述多路選擇器控制的設置,在從所述寄存器文件向所述矢量單元傳送期間,由所述一個或者多個多路選擇器來重新設置與所述算術指令相關聯的寄存器的內容。
2. 根據權利要求1所述的方法,其中設置所述一個或者多個多 路選擇器的控制包括發出swizzle指令,所述swizzle指令配置為設 置所述多路選擇器的所述控制。
3. 根據權利要求2所述的方法,其中所述swizzle指令包括多個 內容選擇欄位,其中每個內容選擇欄位與所述多路選擇器的一個相 關聯、並且確定用於向所述矢量單元傳送的由所述多路選擇器所選 擇的寄存器的內容。
4. 根據權利要求2所述的方法,進一步包括 如果需要重新設置與所述算術指令相關聯的所述寄存器的內容,則在發出所述算術指令之前發出所述swizzle指令;以及如果不需要重新設置與所述算術指令相關聯的所述寄存器的內 容,則發出所述算術指令而不發出所述swizzle指令。
5. 根據權利要求1所述的方法,其中所述swizzle指令沒有沿與 所述矢量單元相關聯的執行管線下行。
6. 根據權利要求2所述的方法,其中所述swizzle指令與所述算 術指令佔有相同數量的指令存儲器。
7. 根據權利要求1所述的方法,其中所述算術指令包括矢量指 令和標量指令。
8. —種控制器,配置為接收包括swizzle指令和算術指令的指令, 每個swizzle指令與一個算術指令相關聯,其中如果所述指令是swizzle指令,則所述控制器配置為設置與寄存 器文件和矢量單元耦合的一個或者多個多路選擇器的控制,其中所 述多路選擇器控制的設置配置為確定對所述矢量單元提供輸入的一 個或者多個寄存器中內容的設置;以及如果所述指令是算術指令,則所述控制器配置為允許向所述矢量 單元傳送與所述算術指令相關聯的寄存器的內容,其中根據所述多 路選擇器控制的設置,在從所述寄存器文件向所述矢量單元傳送所 述內容期間,由所述一個或者多個多路選擇器來重新設置所述內容。
9. 根據權利要求8所述的控制器,其中所述控制器進一步配置 為在向所述矢量單元傳送與所述算術指令相關聯的所述寄存器的內 容之後,清除所述多路選擇器控制的設置,其中清除所述設置包括 按照在所述寄存器中設置所述內容的順序來設置所述一個或者多個 多路選擇器,以便從所述寄存器文件向所述矢量單元傳送寄存器的 內容。
10. 根據權利要求8所述的控制器,其中所述swizzle指令包括 多個內容選擇欄位,其中每個內容選擇欄位與所述多路選擇器的一 個相關聯、並且確定用於向所述矢量單元傳送的由所述多路選擇器 所選擇的寄存器的所述內容。
11. 根據權利要求8所述的控制器,其中由所述控制器在執行相 關聯的算術指令之前執行所述swizzle指令。
12. 根據權利要求8所述的控制器,其中所述swizzle指令與所 述算術指令佔有相同數量的指令寄存器。
13. 根據權利要求8所述的控制器,其中所述算術指令包括矢量 指令和標量指令。
14. 一種系統,包括彼此通信地耦合的多個處理器,其中每個處 理器包括寄存器文件,包括多個寄存器; 至少一個矢量單元,用於執行算術指令;一個或者多個多路選擇器,與所述寄存器文件和所述至少一個矢量單元耦合,其中所述多路選擇器配置為將所述寄存器文件中的一個或者多個寄存器的內容傳送至所述至少一個矢量單元;以及控制器,配置為接收swizzle指令和算術指令,每個swizzle指令 與算術指令相關聯,其中如果所述指令是swizzle指令,則所述控制器配置為設置所 述一個或者多個多路選擇器的控制,其中所述多路選擇器控制的 設置配置為確定對所述矢量單元提供輸入的一個或者多個寄存 器中的內容的設置;以及如果所述指令是算術指令,則所述控制器配置為允許向所述 矢量單元傳送與所述算術指令相關聯的寄存器的內容,其中根據 所述多路選擇器控制的設置,在從所述寄存器文件向所述矢量單 元傳送所述內容期間,由所述一個或者多個多路選擇器重新設置 所述內容。
15. 根據權利要求14所述的系統,其中所述控制器進一步配置 為在向所述矢量單元傳送與所述算術指令相關聯的所述寄存器的內 容之後,清除所述多路選擇器控制的所述設置,其中清除所述設置 包括按照在所述寄存器中設置所述內容的順序來設置所述一個或 者多個多路選擇器,以便從所述寄存器文件向所述矢量單元傳送寄 存器的內容。
16. 根據權利要求14所述的系統,其中所述swizzle指令包括多 個內容選擇欄位,其中每個內容選擇欄位與所述多路選擇器的一個 相關聯、並且確定用於向所述矢量單元傳送的由所述多路選擇器所 選擇的寄存器的所述內容。
17. 根據權利要求14所述的系統,其中由所述控制器在執行相 關聯的算術指令之前執行所述swizzle指令。
18. 根據權利要求14所述的系統,進一步包括發布邏輯,用於 向所述處理器發出所述swizzle指令和所述算術指令,其中如果需要重新設置與所述算術指令相關聯的所述寄存器的內容, 則在發出所述算術指令之前發出所述swizzle指令;以及如果不需要重新設置與所述算術指令相關聯的所述寄存器的內容,則發出所述算術指令而不必發出所述swizzle指令。
19. 根據權利要求18所述的系統,其中所述發布邏輯進一步配 置為如果與所述處理器相關聯的管線被清空,則在swizzle指令處或 者在swizzle指令之前啟動指令的執行,所述swizzle指令與將由處 理器執行的第一算術指令相關聯。
20. 根據權利要求14所述的系統,其中所述swizzle指令與所述 算術指令佔有相同數量的指令存儲器。
21. 根據權利要求14所述的系統,其中所述算術指令包括矢量 指令和標量指令。
全文摘要
本發明一般涉及圖像處理領域,且具體涉及用於處理圖像的指令集合。矢量處理可以包括在執行矢量運算之前將一個或者多個源寄存器中的矢量操作數重新設置。通常,通過發出多個序列改變指令來在多個源寄存器中執行操作數的重新設置,該序列改變指令需要臨時寄存器的過度使用。此外,序列改變指令可以導致在管線中所執行指令之間的依賴性,由此不利地影響性能。本發明的實施方式在寄存器文件和矢量單元之間提供一定級別的多路選擇,這允許在向矢量單元提供操作數之前在源寄存器中重新設置矢量操作數,由此避免對於序列改變指令的需要。
文檔編號G06T1/20GK101192301SQ20071016802
公開日2008年6月4日 申請日期2007年11月2日 優先權日2006年11月28日
發明者A·J·穆夫, E·O·梅德裡奇, M·R·塔布斯 申請人:國際商業機器公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀