專利名稱:用于執(zhí)行交叉積指令的處理器和方法
技術(shù)領(lǐng)域:
本發(fā)明一般涉及圖像處理的領(lǐng)域,特別是涉及支持圖像處理的矢 量單元。
背景技術(shù):
從三維場景呈現(xiàn)二維圖像的處理一般被稱為圖像處理。圖像處理 的特定目標(biāo)是要盡可能逼真地進行二維模擬或呈現(xiàn)三維場景。這種對 呈現(xiàn)更逼真的場景的追求導(dǎo)致了更加復(fù)雜的圖像和新型的復(fù)雜圖像處 理方法。
代表三維場景的二維圖像一般顯示于監(jiān)視器或一些類型的顯示屏 上。當(dāng)代的監(jiān)視器通過使用像素顯示圖像。像素是監(jiān)視器上可被照亮 的最小空間區(qū)域。最新的計算機監(jiān)視器使用幾十萬或幾百萬像素的組 合以構(gòu)成整個顯示或呈現(xiàn)的場景。各單個像素被配置在網(wǎng)格圖案中, 并共同覆蓋監(jiān)視器的整個觀看區(qū)域。各單個像素可被照亮以呈現(xiàn)最終 的觀看用圖片。
一種使用像素將真實世界三維場景呈現(xiàn)到二維監(jiān)視器上的方法被 稱為光柵化。光柵化是采取以矢量格式(場景內(nèi)的幾何對象的數(shù)學(xué)表 示法)表現(xiàn)的二維圖像并將圖像轉(zhuǎn)換成單個像素用于在監(jiān)視器上顯示 的過程。光柵化在迅速呈現(xiàn)圖形和使用相對較低的量的計算能力方面
是有效的;但是,光柵化存在一些缺點。例如,由于光柵化不是基于 光的物理性能,而是基于投影到二維平面上的場景中的三維幾何對象 的形狀,因此它常缺少真實感.并且,用光柵化呈現(xiàn)場景所需要的計 算能力直接隨要被呈現(xiàn)的場景中的對象的復(fù)雜性增加按比例增加.隨 著圖像處理變得更逼真,呈現(xiàn)的場景變得更復(fù)雜。因此,由于光柵化 直接隨復(fù)雜性按比例增加,因此隨著圖像處理發(fā)展光柵化處于不利地位。另一種使用像素將真實世界三維場景呈現(xiàn)到二維監(jiān)視器上的方法 被稱為射線跟蹤。射線跟蹤技術(shù)將呈現(xiàn)與光線類似的假想的射線的傳 播描繪到要被呈現(xiàn)到計算機屏幕上的三維場景中.射線源自坐在計算 機屏幕后的觀看者的眼睛并通過構(gòu)成計算機屏幕的像素向三維場景行 進。各被跟蹤的射線進入場景中并且會與場景內(nèi)的對象相交。如果射 線與場景內(nèi)的對象相交,那么對象的性能和幾種其它的起作用的因素, 例如,光源的影響,被用于計算暴露于射線的顏色和光的量或它們的 缺乏。這些計算然后被用于確定跟蹤的射線穿過的像素的最后顏色。跟蹤射線的過程對于單一場景被實施許多次。例如,單一射線可 對于顯示中的各個像素被跟蹤。 一旦足夠數(shù)量的射線已被跟蹤以確定 構(gòu)成計算機屏幕的二維顯示的全部像素中的顏色,三維場景的二維合 成就可在計算機屏幕上顯示給觀看者。射線跟蹤一般比光柵化更真實地呈現(xiàn)真實世界三維場景。這部分由于這樣一種事實射線跟蹤模擬光在真實世界環(huán)境中如何行進和表 現(xiàn),而不是如光柵化那樣簡單地將三維形狀投影到二維平面上。因此, 使用射線跟蹤呈現(xiàn)的圖形更精確地在監(jiān)視器上描繪我們的眼睛在真實 世界中習(xí)慣看到的。并且,射線跟蹤還比光柵化更好地處理增加的場景復(fù)雜性。射線 跟蹤隨著場景復(fù)雜性以對數(shù)增加。這是由于,即使場景變得更復(fù)雜, 相同數(shù)量的射線也會投射到場景中。因此,射線跟蹤不象光柵化那樣 隨著場景變得更復(fù)雜在計算能力需要方面處于不利地位。但是,射線跟蹤的一個主要缺點是大量的浮點計算,并由此增加 呈現(xiàn)場景所需要的處理能力。當(dāng)需要快速呈現(xiàn)時,例如,當(dāng)圖像處理 系統(tǒng)要在諸如游戲控制臺中呈現(xiàn)動畫目的的圖形時,這導(dǎo)致出現(xiàn)問題。 由于射線跟蹤的增加的計算要求,因此難以呈現(xiàn)快到足以看起來逼真 的動畫(逼真的動畫大致為二十到二十四幀每秒).使用例如射線跟蹤的圖像處理可涉及執(zhí)行矢量數(shù)學(xué)和標(biāo)量數(shù)學(xué)兩 方面.因此,對圖像處理的硬件支持可包含被配置為執(zhí)行各種計算的
矢量單元和標(biāo)量單元。矢量和標(biāo)量運算例如可跟蹤穿過場景的光的路 徑或移動三維場景內(nèi)的對象。矢量單元可對與場景中的對象相關(guān)的矢
量執(zhí)行例如點積和交叉積(cross product)的運算。標(biāo)量單元可對標(biāo) 量值執(zhí)行例如加減乘除等的算術(shù)運算。
矢量單元和標(biāo)量單元可被管線化(pipeline)以提高性能。但是, 執(zhí)行矢量運算會涉及執(zhí)行可相互依賴的多個指令的多次迭代。這種指 令之間的依賴性會降低管線化單元的效率。例如,為了使得第一指令 在第二指令的執(zhí)行之前完成,幾個管線級會被置于不用狀態(tài)。
并且,圖像處理計算會涉及矢量單元和標(biāo)量單元之間的較強的相 互作用。由于現(xiàn)有技術(shù)實現(xiàn)可被獨立發(fā)出并具有其各自的寄存器堆 (register file)的矢量單元和標(biāo)量單元,因此在這些單元之間傳送數(shù) 據(jù)通常是十分低效的。例如,標(biāo)量單元會將來自存儲器的數(shù)據(jù)加栽到 其相關(guān)的寄存器堆中以執(zhí)行標(biāo)量運算。計算的結(jié)果然后被存回存儲器 中。隨后,來自標(biāo)量計算的結(jié)果可被加載到與矢量單元相關(guān)分開的寄 存器堆中以執(zhí)行矢量運算。
用于在標(biāo)量單元和矢量單元之間傳送數(shù)據(jù)的送往和來自存儲器的 數(shù)據(jù)的傳送以及指令之間的依賴性會引入顯著的使圖像處理慢下來的 延遲,由此對呈現(xiàn)逼真圖像和動畫的能力造成不利影響。
因此,需要更有效的用于執(zhí)行射線跟蹤的方法、系統(tǒng)和制造的物
發(fā)明內(nèi)容
本發(fā)明一般涉及圖像處理的領(lǐng)域,特別是涉及支持圖像處理的矢 量單元。
本發(fā)明的一個實施例提供一種一般包括第一矢量單元和第二矢量 單元的處理器.第一矢量單元和第二矢量單元一般分別包含多個被配
置為執(zhí)行指令的處理通路,其中,第二矢量單元的一個或更多個處理 通路中的一個或更多個資源被第一矢量單元共享,以執(zhí)行交叉積指令。
本發(fā)明的另一實施例提供一種用于執(zhí)行交叉積指令的方法。該 法一般包括將表示矢量的操作數(shù)從寄存器堆傳送到第一矢量單元的 第一組一個或更多個處理通路和第二矢量單元的一個或更多個處理通 路中;在第一矢量單元的第一組一個或更多個處理通路和第二矢量單 元一個或更多個處理通路這兩者的每一個中,執(zhí)行將一對操作數(shù)相乘 的乘法運算。該方法還包括將在第二矢量單元的一個或更多個處理 通路中計算的乘積傳送到第一矢量單元的第二組一個或更多個處理通路中;和在第一矢量單元的第二組一個或更多個處理通路中完成交叉 積指令的執(zhí)行。本發(fā)明的另一方面提供一種一般包括以可通信的方式相互耦合的 多個處理器的系統(tǒng)。各個處理器可一般包含第一矢量單元和第二矢量 單元。第一矢量單元和第二矢量單元一般可分別包含多個被配置為執(zhí) 行指令的處理通路,其中,第二矢量單元的一個或更多個處理通路中 的一個或更多個資源被第一矢量單元共享,以執(zhí)行交叉積指令。
因此,通過參照在附圖中示出的本發(fā)明的實施例,可以具有獲得并可詳細(xì)理解本發(fā)明的上述特征、優(yōu)點和目標(biāo)的方式、以上簡要概述的本發(fā)明的更特定的說明。但應(yīng)注意,由于本發(fā)明可允許其它等同有效的實施例,因此附圖只是示出本發(fā)明的典型實施例,并因此不被認(rèn)為是對其范圍的限制。 圖1示出根據(jù)本發(fā)明的一個實施例的多核心處理元件。 圖2示出根據(jù)本發(fā)明的實施例的多核心處理元件網(wǎng)絡(luò)。 圖3是根據(jù)本發(fā)明的一個實施例的通過圖像處理系統(tǒng)呈現(xiàn)的示例性三維場景。圖4示出根據(jù)本發(fā)明的實施例的要在屏幕上呈現(xiàn)的對象的詳細(xì)視圖.圖5示出交叉積運算.圖6示出根據(jù)本發(fā)明的實施例的寄存器.圖7示出根據(jù)本發(fā)明的實施例的矢量單元和寄存器堆。
圖8示出根據(jù)本發(fā)明的實施例的矢量單元的詳細(xì)視圖。 圖9A示出根據(jù)本發(fā)明的實施例的用于執(zhí)行交叉積運算的示例性 代碼。
圖9B示出執(zhí)行圖9A中的代碼時的管線的延遲(stalling)。 圖IO示出根據(jù)本發(fā)明的實施例的雙矢量處理單元。 圖11 (作為圖11A和圖11B在兩頁上示出)示出根據(jù)本發(fā)明的 實施例的被配置為執(zhí)行交叉積運算的雙矢量處理單元。
具體實施例方式
本發(fā)明一般涉及圖像處理的領(lǐng)域,特別是涉及支持圖像處理的矢 量單元。雙矢量單元實現(xiàn)被說明,其中,兩個矢量單元被配置為從共 用的寄存器堆接收數(shù)據(jù)。矢量單元可獨立、同時處理指令。并且,矢 量單元可適于執(zhí)行標(biāo)量運算,由此在一個單元中集成矢量處理和標(biāo)量 處理。對于一些實施例,矢量單元還可被配置為共享資源以執(zhí)行例如 交叉積運算的單一運算。
以下參照本發(fā)明的實施例。但是,應(yīng)當(dāng)理解,本發(fā)明不限于特定 的說明的實施例。而是,以下特征和要素的任意組合,不管是否涉及 不同的實施例,都被設(shè)想為實現(xiàn)和實踐本發(fā)明。并且,在各種實施例 中,本發(fā)明提供大量優(yōu)于現(xiàn)有技術(shù)的優(yōu)點。但是,雖然本發(fā)明的實施 例可實現(xiàn)優(yōu)于其它可能的方案和/或優(yōu)于現(xiàn)有技術(shù)的優(yōu)點,但特定的優(yōu) 點是否由給定的實施例實現(xiàn)不是對本發(fā)明的限制。因此,以下的方面、 特征、實施例和優(yōu)點僅是解釋性的,并且,除非在權(quán)利要求中明確說 明,不被認(rèn)為是所附的權(quán)利要求的要素或限制。類似地,提到的"本發(fā) 明,,不應(yīng)被解釋為這里公開的任何發(fā)明主題的概括,并且,除非在權(quán)利 要求中明確說明,不應(yīng)被認(rèn)為是所附的權(quán)利要求的要素或限制。
示例性的處理器布局和通信網(wǎng)絡(luò)
圖1示出可實現(xiàn)本發(fā)明的實施例的示例性多核心(core)處理元 件100.多核心處理元件100包含多個基本吞吐量引擎(throughput engine) 105 (BTE) . BTE 105可包含多個處理線程和核心高速緩存 (例如,Ll高速緩存)。位于各BTE內(nèi)的處理線程可以訪問共享的 多核心處理元件高速緩存110 (例如,L2高速緩存)。BTE 105還可訪問多個進入箱(inbox) 115.進入箱115可以是 存儲器映射的地址空間。進入箱115可被映射到位于BTE 105中的每 一個內(nèi)的處理線程。位于BTE內(nèi)的各個線程可具有存儲器映射的進入 箱并可訪問所有的其它的存儲器映射的進入箱115。進入箱115構(gòu)成 由BTE105使用的低延遲和高帶寬通信網(wǎng)絡(luò)。BTE可使用進入箱115作為網(wǎng)絡(luò)以相互通信并在BTE中重新分 配數(shù)據(jù)處理工作。對于一些實施例,各單獨的發(fā)出箱可被用于通信網(wǎng) 絡(luò)中,以例如接收BTE105的處理結(jié)果。對于其它的實施例,進入箱 115也可用作發(fā)出箱,例如,使得一個BTE 105將處理功能的結(jié)果直 接寫入將使用這些結(jié)果的另一BTE 105的進入箱。圖像處理系統(tǒng)的聚合性能可與BTE分割和重新分配工作的性能 好壞相關(guān)。進入箱115的網(wǎng)絡(luò)可被用于在不破壞具有沒有幀間相干性 的BTE通信數(shù)據(jù)包的共享的多核心處理元件高速緩存110的情況下收 集工作并將其分配給其它BTE??擅繋尸F(xiàn)幾百萬個三角形的圖像處 理系統(tǒng)可包含許多以這種方式連接的BTE 105。在本發(fā)明的一個實施例中, 一個BTE 105的線程可被分配給工作 負(fù)荷管理器。圖像處理系統(tǒng)可使用各種軟件和硬件部件以從三維場景 呈現(xiàn)二維圖像。根據(jù)本發(fā)明的一個實施例,圖像處理系統(tǒng)可使用工作 負(fù)荷管理器以用由圖像處理系統(tǒng)發(fā)出的射線穿過空間索引??臻g索引 可被實現(xiàn)為用于將相對較大的三維場景分割成較小的限界體積 (bounding volume )的樹型數(shù)據(jù)結(jié)構(gòu)。使用圖像處理的射線跟蹤技術(shù) 的圖像處理系統(tǒng)可使用空間索引以迅速確定射線-限界體積交點。在 本發(fā)明的一個實施例中,工作負(fù)荷管理器可通過使用空間索引執(zhí)行射 線-限界體積相交試驗。在本發(fā)明的一個實施例中,多核心處理元件IOO上的多核心處理 元件BTE 105的其它線程可以是矢量吞吐量引擎.在工作負(fù)荷管理器 確定射線—限界體積交點后,工作負(fù)荷管理器可通過進入箱115向多
個矢量呑吐量引擎中的一個發(fā)出(發(fā)送)射線。矢量吞吐量引擎可然 后確定射線是否與包含于限界體積內(nèi)的基元相交。矢量呑吐量引擎還 可執(zhí)行與確定射線穿過的像素的顏色有關(guān)的運算。
圖2示出根據(jù)本發(fā)明的一個實施例的多核心處理元件200的網(wǎng)絡(luò)。 圖2還示出本發(fā)明的多核心處理元件100的BTE中的一個的線程是工 作負(fù)荷管理器205的實施例。根據(jù)本發(fā)明的一個實施例,多核心處理 元件200的網(wǎng)絡(luò)中的各多核心處理元件22(h-n可包含一個工作負(fù)荷管 理器205^。根據(jù)本發(fā)明的一個實施例,多核心處理元件200的網(wǎng)絡(luò) 中的各處理器220還可包含多個矢量吞吐量引擎210。
根據(jù)本發(fā)明的一個實施例,工作負(fù)荷管理器220ln可使用高速急 線225以與其它工作負(fù)荷管理器22(h-n和/或其它多核心處理元件220 的矢量吞吐量引擎210通信。矢量吞吐量引擎210中的每一個可使用 高速總線225以與其它矢量吞吐量引擎210或工作負(fù)荷管理器205通 信。工作負(fù)荷管理器處理器205可使用高速總線225以收集圖像處理 相關(guān)的任務(wù)并將其分配給其它的工作負(fù)荷管理器處理器205,并/或?qū)?任務(wù)分配給其它矢量呑吐量引擎210。高速總線225的使用可允許工 作負(fù)荷管理器205^在不影響高速緩存230的情況下與與工作負(fù)荷管 理器205通信有關(guān)的數(shù)據(jù)包通信。
示例性三維場景
圖3是要通過圖像處理系統(tǒng)呈現(xiàn)的示例性三維場景305。在三維 場景305內(nèi)可以是對象320。圖3中的對象320具有不同的幾何形狀。 雖然在圖3中只示出四個對象320,但典型的三維場景中的對象的數(shù) 量可以更多或更少。 一般地,三維場景將具有比圖3中示出的多的對 象。
從圖3可以看出,對象具有不同的幾何形狀和尺寸。例如,圖3 中的一個對象是角錐320A.圖3中的其它對象是箱體320B-D.在許多 當(dāng)代的圖像處理系統(tǒng)中,對象常分成更小的幾何形狀(例如,正方形、 圃形、三角形等),較大的對象從而由大量的較小的簡單幾何形狀表 示。這些較小的幾何形狀常被稱為基元。
在場景305中還示出光源325A_B。光源可照亮位于場景305內(nèi)的 對象320。并且,根據(jù)場景305內(nèi)的光源325和對象320的位置,光 源可導(dǎo)致陰影被投射到場景305內(nèi)的對象上。三維場景305可通過圖像處理系統(tǒng)呈現(xiàn)為二維圖片。圖像處理系 統(tǒng)還可導(dǎo)致二維圖片顯示于監(jiān)視器310上。監(jiān)視器310可使用不同顏 色的許多像素330以呈現(xiàn)最終的二維圖片 一種由圖像處理系統(tǒng)使用、用于將三維場景320呈現(xiàn)為二維圖片 的方法被稱為射線跟蹤。射線跟蹤由圖像處理系統(tǒng)從觀看者315的角 度將射線"發(fā)出"或"射出,,到三維場景320中實現(xiàn)。射線具有與光線類 似的性能和表現(xiàn)。在圖3中可看出源自觀看者315的位置并穿過三維場景305的一 個射線340。隨著射線340從觀看者315向三維場景305行進,射線 340穿過將由圖像處理系統(tǒng)呈現(xiàn)的最終的二維圖片的平面。在圖3中, 該平面由監(jiān)視器310表示。射線340穿過平面或監(jiān)視器310的點由像 素335表示。如上面簡要討論的那樣,大多數(shù)圖像處理系統(tǒng)使用像素的數(shù)以千 計(如果不是以百萬計的話)的網(wǎng)格330以在監(jiān)視器310上呈現(xiàn)最終 的場景。各單個像素可顯示不同的顏色以在監(jiān)視器310上呈現(xiàn)最終的 合成的二維圖片。使用射線跟蹤圖像處理方法以從三維場景呈現(xiàn)二維 圖片的圖像處理系統(tǒng)將計算發(fā)出的射線或多個射線在三維場景中遇到 的顏色。圖像處理場景然后將射線遇到的顏色分配給射線在其從觀看 者到三維場景的路徑上穿過的像素。每個像素發(fā)出的射線的數(shù)量可以變化。 一些像素可使得對于要被 呈現(xiàn)的特定場景發(fā)出許多射線。在這種情況下,像素的最終顏色由來 自為該像素發(fā)出的所有射線的各顏色貢獻確定。其它像素可僅具有為 確定二維圖片中的得到的像素顏色發(fā)出的單一射線. 一些像素可能沒 有任何由圖像處理系統(tǒng)發(fā)出的射線,在這種情況下,它們的顏色可通 過圖像處理系統(tǒng)內(nèi)的算法被確定、近似或分配。為了確定二維圖片中的像素335的最終顏色,圖像處理系統(tǒng)必須
確定射線340是否與場景內(nèi)的對象相交。如果射線不與場景內(nèi)的對象 相交,那么它會被分配缺省背景顏色(例如,代表白天或夜空的藍色 或黑色)。相反,隨著射線340穿過三維場景,射線340可照射到對 象上。如果射線照射到場景內(nèi)的對象上,那么對象的顏色會被分配射 線穿過的像素。但是,對象的顏色必須在其被分配給像素之前被確定。
許多因素會對由原始射線340照射的對象的顏色有貢獻。例如, 三維場景內(nèi)的光源可照亮對象。并且,對象的物理性能會對對象的顏 色有貢獻。例如,如果對象是反射性的或透明的,那么其它非光源對 象從而會對對象的顏色有貢獻。
為了確定來自三維場景內(nèi)的其它對象的影響,可以從原始射線 340與對象相交的點發(fā)出二次射線。例如, 一種類型的二次射線可以 是陰影射線。陰影射線可被用于確定光對原始射線340與對象相交的 點的貢獻。另一種類型的二次射線可以是透射射線。透射射線可被用 于確定什么顏色或光可透過對象的本體。并且,第三種類型的二次射 線可以是反射射線。反射射線可被用于確定什么顏色或光被反射到對 象上。
如上所述, 一種類型的二次射線可以是陰影射線。各陰影射線可 從原始射線和對象的交點被跟蹤到三維場景305內(nèi)的光源.如果射線 在在射線到達光源之前沒有遇到另 一對象的情況下到達光源,那么光 源將在原始射線照射到對象上的點上照亮由原始射線照射的對象。
例如,陰影射線34U可從原始射線340與對象320a相交的點上 被發(fā)出,并可沿向著光源325a的方向行迸。陰影射線34lA在沒有遇 到場景305內(nèi)的任何其它對象320的情況下到達光源325A。因此,光 源325A將在原始射線340與對象320A相交的點上照亮對象320A。
其它陰影射線可在原始射線照射對象的點和被三維場景內(nèi)的另一 對象阻擋的光源之間具有它們的路徑.如果阻擋原始射線照射的對象 上的點和光源之間的路徑的對象是不透明的,那么光源將不在原始射 線照射對象的點上照亮對象.因此,光源不會對原始射線的顏色有貢 獻,因此也不對要在二維圖片中呈現(xiàn)的像素的顏色有貢獻.但是,如
果對象是半透明或透明的,那么光源可在原始射線照射對象的點上照 亮對象。例如,陰影射線34lB可從原始射線340與對象320a相交的點上 被發(fā)出,并可沿向著光源325b的方向行迸。在本例子中,陰影射線 34lB的路徑被對象320d阻檔。如果對象320d是不透明的,那么光源 325b將不在原始射幾340與對象320A相交的點上照亮對象320A。但 是,如果陰影射線照射的對象320D是半透明或透明的,那么光源325B 可在原始射線340與對象32(U相交的點上照亮對象320A。另一種類型的二次射線是透射射線。如果與原始射線相交的對象 具有透明或半透鏡性能(例如,玻璃),那么透射射線可由圖像處理 系統(tǒng)發(fā)出。透射射線相對于原始射線照射對象的角度以某一角度穿過 對象。例如,透射射線344被觀察到穿過與原始射線340相交的對象 320A。另一種類型的二次射線是反射射線。如果與原始射線相交的對象 具有反射性能(例如,金屬拋光面),那么反射射線將由圖像處理系 統(tǒng)發(fā)出以確定什么顏色或光可被對象反射。反射射線相對于原始射線 與對象相交的角度以某一角度遠(yuǎn)離對象。例如,反射射線343可由圖 像處理系統(tǒng)發(fā)出以確定什么顏色或光可被與原始射線340相交的對象 320a反射。所有二次射線(例如,陰影射線、透射射線、反射射線等)的顏 色和光的總貢獻將導(dǎo)致原始射線穿過的像素的最終顏色。 矢量運算處理圖像可涉及執(zhí)行一個或更多個矢量運算以確定例如射線和對 象的相交、陰影射線和反射射線等的產(chǎn)生。 一種在圖像處理中執(zhí)行的 常用(common)的運算是兩個矢量之間的交叉積運算。交叉積可被 執(zhí)行以確定例如三維場景中的對象的基元的表面的表面的法向矢量. 法向矢量可指示對象的表面對于觀看者是否是可見的。如上所述,場景中的各對象可由相互連接以形成對象的形狀的多 個基元表示。例如,在一個實施例中,各對象可由多個互連的三角形
構(gòu)成。圖4示出由多個三角形410構(gòu)成的示例性對象400。對象400 可以是由圖4中的多個三角形410形成的球形對象。出于解釋目的, 粗糙的球形對象被示出。本領(lǐng)域技術(shù)人員可以認(rèn)識到,對象400的表 面可由更多數(shù)量的更小的三角形410形成以更好地近似曲面對象。
在本發(fā)明的一個實施例中,各三角形410的表面法線可被計算以 確定三角形的表面對于觀看者450是否是可見的。為了確定各三角形 的表面法線,可在代表三角形的兩個邊的兩個矢量之間執(zhí)行交叉積運 算。例如,三角形410a的表面法線413可通過在矢量411a和411b 之間執(zhí)行交叉積被算出。
法向矢量可確定表面,例如基元的表面,是否面對觀看者。參照 圖4,法向矢量413指向觀看者450。因此,三角形410可被顯示給用 戶。另一方面,三角形410b的法向矢量415指向背離觀看者450。因 此,三角形410b不會被顯示給用戶。
圖5示出兩個矢量A和B之間的交叉積運算。如圖所示,矢量A 可由坐標(biāo)[Xa, ya, Zal表示,矢量B可由坐標(biāo)[Xb, yb, Zbl表示。交叉積AXB 導(dǎo)致與包含矢量A和B的平面垂直(正交)的矢量N。法向矢量的坐 標(biāo)如示出的那樣為[(yaZb-ybZa), (xbza-xazb), (xayb-xbya)。本領(lǐng)域技術(shù)人 可以認(rèn)識到,矢量A可與圖4中的矢量411a對應(yīng),矢量B可與矢量 411b對應(yīng),而矢量N可與法向矢量413對應(yīng)。
另 一種在圖像處理中執(zhí)行的常用的矢量運算是點積運算。點積運 算可被執(zhí)行以確定場景中的對象的旋轉(zhuǎn)、移動、定位等。點積運算產(chǎn) 生不依賴于坐標(biāo)系統(tǒng)的標(biāo)量值并表示歐幾里得空間的內(nèi)積。下式說明 在前面說明的矢量A和B之間執(zhí)行的點積運算
執(zhí)行矢量運算的硬件支持
如上所述,矢量吞吐量引擎(VTE),例如圖2中的VTE210, 可執(zhí)行運算以確定射線是否與基元相交,并確定射線穿過的像素的顏 色.執(zhí)行的運算可包含多個矢量和標(biāo)量運算,因此,VTE210可被配 置為向矢量單元發(fā)出指令執(zhí)行矢量運算。
矢量處理可涉及發(fā)出一個或更多個矢量指令。矢量指令可被配置 為執(zhí)行涉及第一寄存器中的一個或更多個操作數(shù)和第二寄存器中的一 個或更多個操作數(shù)的運算。第一寄存器和第二寄存器可以是與矢量單元相關(guān)的寄存器堆的一部分。圖6示出包含一個或更多個操作數(shù)的示 例性寄存器600。如圖6所示,寄存器堆中的各寄存器可包含多個部 分,其中各個部分包含操作數(shù)。在圖6示出的實施例中,寄存器600被示為128位寄存器。如圖 所示,寄存器600可被分成四個32位字(word)部分字0、字1、 字2和字3。如圖所示,字0可包含位0~31,字1可包含位32 63, 字,2可包含位64~97,字3可包含位98~127。但是,本領(lǐng)域技術(shù)人 員可以認(rèn)識到,寄存器600可以具有任意合理的長度,并可包含任意 數(shù)量的任意合理長度的部分。寄存器600中的各個部分可包含矢量運算的操作數(shù)。例如,寄存 器600可包含例如圖5的矢量A的矢量的坐標(biāo)和數(shù)據(jù)。因此,字O可包含坐標(biāo)Xa,字l可包含坐標(biāo)ya,字2可包含坐標(biāo)Za。字3可包含與與矢量有關(guān)的基元有關(guān)的數(shù)據(jù),例如,顏色和透明度等。在一個實施 例中,字3可被用于存儲標(biāo)量值。標(biāo)量值可以與包含于字0~2中的矢 量坐標(biāo)有關(guān)或無關(guān)。圖7示出示例性的矢量單元700和相關(guān)的寄存器堆710。矢量單 元700可被配置為執(zhí)行單一指令多數(shù)據(jù)(SIMD)指令。換句話說, 矢量單元700可對一個或更多個矢量執(zhí)行運算以產(chǎn)生單一標(biāo)量或矢量 結(jié)果。例如,矢量單元700可對包含一個或更多個矢量的數(shù)據(jù)元素執(zhí) 行并行運算,以產(chǎn)生標(biāo)量或矢量結(jié)果。在矢量單元上或通過矢量單元運算的多個矢量可被存儲在寄存器 堆710中。例如,在圖7中,寄存器堆710提供32個128位寄存器 711 (R0~R31) 每一個寄存器711中可以以與圖6的寄存器600類 似的方式被組建.因此,各寄存器711可包含矢量數(shù)據(jù),例如,矢量 坐標(biāo)、像素數(shù)據(jù)和透明度等。通過使用加栽和存儲指令,數(shù)據(jù)可在寄 存器堆710和例如高速緩存存儲器的存儲器之間被交換,因此,寄存
器堆710可以以可通信的方式與例如動態(tài)隨機存取存儲器(DRAM ) 裝置的存儲器裝置耦合。多個通路(lane)可將寄存器堆710連接到矢量單元700上。各 通路可被配置為從寄存器堆向矢量單元提供輸入。例如,在圖7中, 三個128位通路將寄存器堆連接到矢量單元700上。因此,來自寄存 器堆710的任意3個寄存器的內(nèi)容可在某一時刻被提供給矢量單元。由矢量單元計算的運算的結(jié)果可被回寫到寄存器堆710中。例如, 128位通路721提供將由矢量單元700計算的結(jié)果回寫到寄存器堆710 的寄存器711中的任一個中的回寫路徑。圖8示出矢量單元800的詳細(xì)示圖。矢量單元800是在圖7中示 出的矢量單元700的實施例。如圖8所示,矢量單元800可包含多個 處理通路。例如,在圖8中示出三個處理通路810、 820和830。各處 理通路可被配置為與一個或更多個其它處理通路并行執(zhí)行運算。例如, 各處理通路可將一對操作數(shù)相乘以執(zhí)行交叉積或點積運算。通過在矢 量單元的不同處理通路中將各對不同的操作數(shù)相乘,可以更快、更有 效地執(zhí)行矢量運算。各處理通路可被管線化以進一步提高性能。因此,各處理通路可 包含用于對操作數(shù)執(zhí)行一個或更多個運算的多個管線級。例如,各個 矢量通路可包含用于將一對操作數(shù)830和831相乘的乘法器851。操 作數(shù)830和831可從將寄存器堆與矢量單元耦合的通路中的一個、例 如圖7中的通路720得出。在本發(fā)明的一個實施例中,可在圖8中所 示的管線的第一級中執(zhí)行操作數(shù)的乘法。各處理通路還可包含用于對由乘法器851計算的乘積調(diào)對align ) 的調(diào)整器(aligner)。例如,調(diào)整器852可被設(shè)置在每一處理通路中。 調(diào)整器852可被配置為在結(jié)果中將由乘法器851計算的乘積的小數(shù)點 調(diào)整到希望的位置.例如,調(diào)整器852可被配置為將由乘法器851計 算的乘積的位移動一個或更多個位置,由此使乘積處于希望的格式。 雖然調(diào)整在圖8中被示為單獨的管線級,但本領(lǐng)域技術(shù)人員可以認(rèn)識 到,乘法和調(diào)整可在同一管線級中被執(zhí)行.
各個處理通路還可包含用于加上兩個或更多個操作數(shù)的加法器
853。在一個實施例中(在圖8中示出),各加法器853被配置為接收 由乘法器計算的乘積,并將乘積加到另一操作數(shù)832上。操作數(shù)832, 與操作數(shù)830和831類似,可從將寄存器堆連接到矢量單元上的通路 中的一個得到。因此,各處理通路可被配置為執(zhí)行乘法-加法指令。 本領(lǐng)域技術(shù)人員可以認(rèn)識到,乘法-加法指令在矢量運算中被頻繁執(zhí) 行。因此,通過在并行的通路中執(zhí)行幾個乘法加法指令,可以大大提 高矢量處理的效率。
如圖8所示,各矢量處理通路還可包含規(guī)范化級和舍入級。因此, 規(guī)范器854可在各處理通路中被設(shè)置。規(guī)范器854可被配置為以方便 的指數(shù)格式表示計算的值。例如,規(guī)范器可接收作為運算的結(jié)果的值 0.0000063。規(guī)范器854可將該值轉(zhuǎn)換成更合適的指數(shù)格式,例如 6.3xl(T6。舍入級可涉及將計算的值舍入到希望的小數(shù)點位數(shù)。例如, 如果只希望在結(jié)果中有三個小數(shù)位,那么計算的值10.5682349可被舍 入為10.568。在本發(fā)明的一個實施例中,舍入器可對舍入器被設(shè)計對 其使用的特定精度浮點數(shù)的低位進行舍入。
本領(lǐng)域技術(shù)人員將認(rèn)識到,本發(fā)明的實施例不限于上面以及在圖 8中說明的特定的管線級、部件和部件的配置。例如,在一些實施例 中,調(diào)整器852可被配置為對操作數(shù)832、由乘法器計算的乘積或這 兩者進行調(diào)整。并且,本發(fā)明的實施例不限于在圖8中說明的特定部 件。在各處理通路中可包含示出的部件和諸如但不限于前導(dǎo)零加法器、 除法器等的附加部件的任意組合。
用單一矢量單元執(zhí)行交叉積
通過使用例如矢量單元800的矢量單元執(zhí)行交叉積運算可涉及多 個指令。例如,重新參照圖5,交叉積運算需要六個乘法運算和三個 減法運算.由于矢量單元800包含具有三個乘法器的三個處理通路, 因此執(zhí)行交叉積運算可涉及多個指令.
圖9A示出用于通過向矢量單元發(fā)出多個指令執(zhí)行交叉積運算的 示例性指令.執(zhí)行交叉積運算可涉及發(fā)出多個改序(permute)指令200710127188.6
說明書第15/19頁
901.改序指令可被配置為將用于執(zhí)行交叉積運算的操作數(shù)移動到寄存 器堆的希望的寄存器中的希望的位置中。例如,改序運算可將數(shù)據(jù)從
第一寄存器傳送到第二寄存器。改序指令還可選擇用于將數(shù)據(jù)從一個 寄存器傳送到另一個寄存器的特定的位置,例如,特定的字位置(參 見圖6)。在一個實施例中,改序指令可重新配置同一寄存器內(nèi)的數(shù) 據(jù)元素的位置。
一旦操作數(shù)處于希望的寄存器中的希望的位置中,第一指令902 就可被發(fā)出以執(zhí)行第一組乘法運算。第一組乘法運算可執(zhí)行執(zhí)行交叉 積運算所需要的6個乘法運算中的一個或更多個。例如,在一個實施 例中,第一組乘法運算可執(zhí)行六個乘法運算中的三個。乘法運算可在 矢量單元的三個處理通路中的每一個中被執(zhí)行。第一組乘法運算的結(jié) 果可被存回寄存器堆的一個或更多個寄存器中。
隨后,第二指令903可被發(fā)出,以執(zhí)行第二組乘法運算。第二組 乘法運算可執(zhí)行沒有在第一組乘法運算中執(zhí)行的交叉積的剩余的乘法 運算。在一個實施例中,第二指令可涉及同時執(zhí)行第二組乘法運算和 用于完成交叉積運算的減法運算。
例如,重新參照圖8,操作數(shù)830和831可與用于執(zhí)行第二組乘 法運算的操作數(shù)相關(guān)??蓮牡谝唤M乘法運算的結(jié)果減去第二組乘法運 算的結(jié)果,或者反之亦然。第一組乘法運算的結(jié)果可例如通過圖8的 操作數(shù)832作為加法器853的輸入被提供以執(zhí)行減法運算。
如上所述,由矢量單元執(zhí)行的指令可被管線化。由于在改序指令 901、第一乘法指令902和笫二乘法指令903之間會存在依賴性,因此 一個或更多個管線級可被延遲。例如,第一乘法指令在操作數(shù)被傳送 到適當(dāng)?shù)募拇嫫髦械倪m當(dāng)?shù)奈恢弥安粫粓?zhí)行。因此,第一乘法指 令在改序指令完成之前不會被執(zhí)行,由此需要管線延遲。類似地,由 于第二乘法指令會利用第一乘法指令的結(jié)果,因此第二乘法指令在第 一乘法指令完成之前不會被執(zhí)行,由此在第一乘法指令和第二乘法指 令之間需要管線延遲.
圖9B示出圖9A中示出的交叉積指令之間的管線的延遲.如圖9B所示,執(zhí)行交叉積可從執(zhí)行改序指令901開始,如圖所示,執(zhí)行改 序指令901可涉及第一乘法指令902的延遲執(zhí)行。延遲的級在圖9B 中以虛線框被示出。第一乘法指令的延遲可被執(zhí)行以允許用于第一乘 法運算的操作數(shù)被適當(dāng)?shù)匚挥谶m當(dāng)?shù)募拇嫫髦?。圖9B還示出第一乘法指令902和第二乘法指令903之間的管線 的延遲。第一乘法指令和第二乘法指令之間的管線的延遲可被執(zhí)行以 允許第一乘法指令的結(jié)果對第二乘法指令可用。因此,如圖9B所示, 第二乘法指令在第一乘法指令的舍入級完成之前不會進入管線中。雙矢量單元實現(xiàn)在本發(fā)明的一個實施例中,雙矢量單元可被實現(xiàn)以改進矢量指令 的處理。因此,兩個獨立的矢量單元可被提供,兩個矢量單元可訪問 同一寄存器堆。并且,雙矢量單元可包含標(biāo)量處理通路,由此集成矢 量和標(biāo)量指令的處理。圖IO示出根據(jù)本發(fā)明的實施例的雙矢量單元。如圖10所示,雙 矢量單元可包含第一矢量單元1010和第二矢量單元1020。各矢量單 元可被配置為通過將寄存器堆1030耦合到矢量單元1010和1020上的 一個或更多個通路從同一寄存器堆1030的一個或更多個寄存器接收 數(shù)據(jù)。例如,三個通路1011將寄存器堆與矢量單元1011耦合,并且 三個通路1021將寄存器堆與矢量單元1020耦合。通路1011和1021可與圖7中的將寄存器堆710與矢量單元700 耦合的通路720類似。在本發(fā)明的一個實施例中,通路1011和1021 可以為128位寬,以從寄存器堆1030中的128位寬寄存器分別向矢量 單元1010和1020提供數(shù)據(jù),本領(lǐng)域技術(shù)人員將認(rèn)識到,將矢量單元 耦合到寄存器堆上的通路的數(shù)量不是對本發(fā)明的限制。任何合理的數(shù) 量的通路可被提供以將各矢量單元與寄存器堆耦合。并且, 一個矢量 單元不需要具有與其它矢量單元數(shù)量相同的通路.圖10所示的實施例的一個優(yōu)點在于,多個矢量單元可在不復(fù)雜并 且不用于為各個矢量單元增加更多個的寄存器堆消耗附加空間的情況 下被實現(xiàn)。寄存器堆1030可以以與圖7中的寄存器堆710類似的方式
被配置,并可具有被配置為存儲矢量和標(biāo)量數(shù)據(jù)的多個寄存器.另外,寄存器堆1030可被配置為同時通過例如通路1011和1021 向矢量單元1010和1020發(fā)出指令.例如,笫一指令可被發(fā)給矢量單 元IOIO,并且第二指令可被獨立地發(fā)給矢量單元1020,由此允許兩個 單獨的指令被并行處理。通過并行處理指令,可以大大提高性能。寄存器堆還可包含一個或更多個寫入端口 1031。寫入端口 1031 可被配置從矢量單元1010和1020中的每一個接收結(jié)果,并將結(jié)果存 儲在寄存器堆中的寄存器中。在本發(fā)明的一個實施例中,寫入端口可 同時將數(shù)據(jù)寫入寄存器堆中的不同寄存器中。但是,兩個或更多個寫 入端口不會同時將數(shù)據(jù)寫入寄存器堆中的同一寄存器中。寄存器堆1030還可包含用于與存儲器交換數(shù)據(jù)的讀取端口 1032 和寫入端口 1033。例如,來自寄存器堆1030中的寄存器的數(shù)據(jù)可通 過加載和存儲指令通過端口 1032和1033與存儲器交換。圖10中所示的雙矢量單元的另一優(yōu)點在于,除了矢量處理通路以 外,各矢量單元還包含標(biāo)量處理通路。例如,矢量單元1010包含三個 矢量處理通路1013和覆蓋標(biāo)量處理通路1012。類似地,矢量單元1020 包含三個矢量處理通路1023和覆蓋標(biāo)量處理通路1022。各標(biāo)量通路 1012和1022可被配置為執(zhí)行標(biāo)量運算。因此,矢量和標(biāo)量運算可被 并行執(zhí)行。例如,標(biāo)量指令可被發(fā)給矢量單元1010,并且矢量指令可被發(fā)給 矢量單元1020。假如在這些指令之間不存在依賴性,那么矢量和標(biāo)量 運算可被并行執(zhí)行。標(biāo)量運算可在矢量單元1010的標(biāo)量通路1012中 被執(zhí)行,并且,矢量運算可在矢量單元1020的矢量處理通路1023中 被執(zhí)行。但是,更一般地,矢量和標(biāo)量指令的任意組合可被獨立地發(fā) 給矢量單元1010和1020,由此提高性能。并且,通過允許矢量單元執(zhí)行標(biāo)量運算,在矢量單元和標(biāo)量單元 之間傳送數(shù)據(jù)的低效率被避免.如上所述,現(xiàn)有技術(shù)需要使用存儲器 作為用于在矢量單元和標(biāo)量單元之間交換數(shù)據(jù)的介質(zhì).與存儲器的數(shù) 據(jù)交換可能是非常低效的.通過允許標(biāo)量數(shù)據(jù)和矢量數(shù)據(jù)在寄存器堆 中對被配置為處理標(biāo)量指令的矢量單元可用,實現(xiàn)單獨的標(biāo)量和矢量 單元的低效率被避免。用雙矢量單元執(zhí)行交叉積在本發(fā)明的一個實施例中, 一個矢量單元的一個或更多個資源可 與執(zhí)行例如交叉積或點積運算的矢量運算的第二矢量單元共享。因此, 來自 一個矢量單元的一個或更多個處理通路或元素可被另 一矢量單元 利用以執(zhí)行運算。如上所述,用單一矢量單元執(zhí)行交叉積運算會需要多個改序和乘 法指令。并且在執(zhí)行多個指令的管線中會出現(xiàn)多個延遲,由此影響性 能。雙矢量單元的一個優(yōu)點在于,通過在兩個矢量單元之間共享資源, 可以允許單一指令執(zhí)行例如交叉積運算的矢量運算。因此可大大減少 指令的數(shù)量和相關(guān)的指令之間浪費的延遲周期。例如,圖9A中的第一乘法指令902和第二乘法指令卯3可由單 一交叉積指令代替。由于在雙矢量單元八個乘法器是可用的,因此八 個乘法器中的六個可被用于在單一的周期中執(zhí)行交叉積運算的所有乘 法。來自乘法器的結(jié)果可被發(fā)送到三個加法器用于執(zhí)行減法運算。因 此,可以用單一的指令執(zhí)行交叉積。圖11 (作為圖11A和圖11B在兩頁中示出)示出執(zhí)行交叉積運 算的雙矢量單元之間的資源的共享。如圖11所示,交叉積運算可在矢 量單元1110的處理通路1111 ~ 1114和矢量單元1120的處理通路 1121 ~ 1122中被執(zhí)行。在本發(fā)明的一個實施例中,由于兩個矢量單元 均被用于執(zhí)行交叉積運算,因此寄存器堆可被配置為發(fā)出單一指令(而 不是成雙和獨立的指令)。在本發(fā)明的一個實施例中,由于標(biāo)量通路 是在矢量單元1120中可用的,因此交叉積運算和標(biāo)量運算可被同時執(zhí) 行,由此允許在執(zhí)行交叉積運算時發(fā)出成雙的獨立的指令。在本發(fā)明的一個實施例中,為了減少改序指令的數(shù)量和由改序指 令導(dǎo)致的延遲周期, 一個或更多個操作數(shù)復(fù)用器(mux) 1130可在乘 法器的輸入上被提供.操作數(shù)復(fù)用器1130可被配置為選擇通過將寄存 器堆連接到矢量單元1110和1120上的通路中的一個可用的操作數(shù), 并將操作數(shù)提供給各乘法器的輸入。如圖11所示,矢量單元1110和1120中的乘法器可計算執(zhí)行交叉 積運算必需的乘積。例如,矢量單元110的乘法器1141 ~ 1144和矢量 單元1120的乘法器1151 ~ 1152,分別計算乘積。由乘法器計算的乘 積可被發(fā)送給對乘積進行調(diào)整的三個調(diào)整器。例如,如圖所示,來自 乘法器1141和1144的乘積被發(fā)送給調(diào)整器1161,來自乘法器1142 和1151的乘積被發(fā)送給調(diào)整器1162,并且來自乘法器1143和1152 的乘積被發(fā)送給調(diào)整器1163。例如多路復(fù)用器1171的多路復(fù)用器可 在各調(diào)整器的輸入上被提供,以選擇從不同處理通路中的乘法器接收 的乘積和在調(diào)整器的處理通路中接收的輸入中的一個。然后可減去被調(diào)整的乘積。例如,加法器1181可減去通過調(diào)整器 1161調(diào)整的乘積,加法器1182可減去通過調(diào)整器1162調(diào)整的乘積, 加法器1163可減去通過調(diào)整器1163調(diào)整的乘積。由加法器1161 ~ 1163計算的差可被規(guī)范化并被舍入以提供交叉 積運算的結(jié)果(法向矢量)。例如,在一個實施例中,處理通路llll 可產(chǎn)生法向矢量的x坐標(biāo),處理通路1112可產(chǎn)生法向矢量的y結(jié)果, 處理通路1113可產(chǎn)生法向矢量的z結(jié)果。法向矢量可通過使用與矢量 單元1110相關(guān)的回寫路徑被存回寄存器堆中。本領(lǐng)域技術(shù)人員將認(rèn)識到,圖11中示出和上面說明的特定處理方 法不是對本發(fā)明的限制。更一般地,矢量單元110和1120中的可用乘 法器的任一個可被選擇以對交叉積運算執(zhí)行乘法。并且,由乘法器計 算的乘積可被發(fā)送給任何可用的調(diào)整器和加法器執(zhí)行減法。因此,可 從矢量單元中的任何可用的處理通路得到交叉積的結(jié)果。結(jié)論通過實現(xiàn)被配置為在一些情況下獨立地并行執(zhí)行指令或者在另一 些情況下共享資源以執(zhí)行諸如"大規(guī)模,,交叉積和點積的運算的雙矢量 單元,圖像處理變得效率更高,由此允許顯示更逼真的圖像和動畫.雖然以上說明針對本發(fā)明的實施例,但在不背離本發(fā)明的基本范 圍的情況下,可以設(shè)想本發(fā)明的其它和另外的實施例,并且其范圍由 下面的權(quán)利要求確定.
權(quán)利要求
1.一種處理器,包括第一矢量單元;和第二矢量單元,其中,第一矢量單元和第二矢量單元分別包含多個被配置為執(zhí)行指令的處理通路,并且,第二矢量單元的一個或更多個處理通路中的一個或更多個資源被第一矢量單元共享,以執(zhí)行交叉積指令。
2. 根據(jù)權(quán)利要求1的處理器,還包括包含多個寄存器的寄存器堆, 所述多個寄存器被配置為存儲矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)。
3. 根據(jù)權(quán)利要求2的處理器,其中,第一矢量單元和第二矢量單 元以可通信的方式與寄存器堆耦合,并被配置為從寄存器堆中的多個 寄存器接收數(shù)據(jù)。
4. 根據(jù)權(quán)利要求3的處理器,其中,處理器還包含與處理通路中 的每一個相關(guān)的多路復(fù)用器,所述多路復(fù)用器被配置為從多個寄存器選擇一個或更多個矢量操作數(shù),并將選擇的矢量操作數(shù)傳送到相應(yīng)處 理通路。
5. 根據(jù)權(quán)利要求2的處理器,其中,第一矢量單元和第二矢量單 元中的每一個包含被配置為將結(jié)果從矢量單元回寫到寄存器堆中的回 寫路徑。
6. 根據(jù)權(quán)利要求l的處理器,其中,各矢量單元的多個處理通路 被配置為對多個矢量操作數(shù)并行執(zhí)行多個運算以執(zhí)行交叉積指令。
7. 根據(jù)權(quán)利要求6的處理器,其中,各處理通路包含一個或更多 個功能單元,每個功能單元被配置為執(zhí)行所述多個運算中的一個運算。
8. 根據(jù)權(quán)利要求7的處理器,其中,功能單元包含乘法器、調(diào)整 器和加法器。
9. 根據(jù)權(quán)利要求8的處理器,其中, 一個或更多個共享的資源包 含第二矢量單元中的一個或更多個處理通路中的一個或更多個乘法 器。
10. 根據(jù)權(quán)利要求9的處理器,其中,來自一個或更多個乘法器 的乘積被傳送到第一矢量單元的一個或更多個處理通路,所述第一矢 量的一個或更多個處理通路被配置為完成交叉積指令的執(zhí)行。
11. 一種用于執(zhí)行交叉積指令的方法,包括將表示矢量的多個操作數(shù)從寄存器堆傳送到第 一矢量單元的第一 組一個或更多個處理通路和第二矢量單元的一個或更多個處理通路中;在第一矢量單元的第一組一個或更多個處理通路和第二矢量單元 一個或更多個處理通路這兩者的每一個中,執(zhí)行將一對操作數(shù)相乘的乘法運算;將在第二矢量單元的一個或更多個處理通路中計算的乘積傳送到 第一矢量單元的第二組一個或更多個處理通路中;和在第一矢量單元的第二組一個或更多個處理通路中完成交叉積指 令的執(zhí)行。
12. 根據(jù)權(quán)利要求ll的方法,其中,完成交叉積的執(zhí)行包含在第 一矢量單元的第二組一個或更多個處理通路中執(zhí)行一個或更多個減法 運算。
13. —種包括以可通信的方式相互耦合的多個處理器的系統(tǒng),其 中,各個處理器包含第一矢量單元;和 第二矢量單元,其中,第一矢量單元和第二矢量單元分別包含多個被配置為執(zhí)行 指令的處理通路,并且,笫二矢量單元的一個或更多個處理通路中的 一個或更多個資源被第一矢量單元共享,以執(zhí)行交叉積指令。
14. 根據(jù)權(quán)利要求13的系統(tǒng),還包括包含多個寄存器的寄存器堆, 所述多個寄存器被配置為存儲矢量數(shù)據(jù)和標(biāo)量數(shù)據(jù)。
15. 根據(jù)權(quán)利要求14的系統(tǒng),其中,第一矢量單元和第二矢量單 元以可通信的方式與寄存器堆耦合,并被配置為從寄存器堆中的多個 寄存器接收數(shù)據(jù)。
16. 根據(jù)權(quán)利要求15的系統(tǒng),其中,處理器還包含與處理通路中 的每一個相關(guān)的多路復(fù)用器,所述多路復(fù)用器被配置為從多個寄存器 選擇一個或更多個矢量搮作數(shù),并將選擇的矢量操作數(shù)傳送到相應(yīng)處 理通路。
17. 根據(jù)權(quán)利要求14的系統(tǒng),其中,笫一矢量單元和第二矢量單 元中的每一個包含被配置為將結(jié)果從矢量單元回寫到寄存器堆中的回寫路徑。
18. 根據(jù)權(quán)利要求13的系統(tǒng),其中,各矢量單元的多個處理通路 被配置為對多個矢量操作數(shù)并行執(zhí)行多個運算以執(zhí)行交叉積指令。
19. 根據(jù)權(quán)利要求18的系統(tǒng),其中,各處理通路包含一個或更多 個功能單元,每個功能單元被配置為執(zhí)行所述多個運算中的一個運算。
20. 根據(jù)權(quán)利要求19的系統(tǒng),其中,功能單元包含乘法器、調(diào)整器和加法器o
21. 根據(jù)權(quán)利要求20的系統(tǒng),其中, 一個或更多個共享的資源包 含第二矢量單元中的一個或更多個處理通路中的一個或更多個乘法 器。
22. 根據(jù)權(quán)利要求21的系統(tǒng),其中,來自一個或更多個乘法器的 乘積被傳送到第一矢量單元的一個或更多個處理通路,所述第一矢量 的一個或更多個處理通路被配置為完成交叉積指令的執(zhí)行。
全文摘要
本發(fā)明一般涉及圖像處理的領(lǐng)域,特別是涉及支持圖像處理的矢量單元。雙矢量單元實現(xiàn)被說明,其中,兩個矢量單元被配置為從共用的寄存器堆接收數(shù)據(jù)。矢量單元可獨立、同時處理指令。并且,矢量單元可適于執(zhí)行標(biāo)量運算,由此集成矢量處理和標(biāo)量處理。矢量單元還可被配置為共享資源以執(zhí)行例如交叉積運算的運算。
文檔編號G06T1/20GK101154288SQ200710127188
公開日2008年4月2日 申請日期2007年7月4日 優(yōu)先權(quán)日2006年9月28日
發(fā)明者亞當(dāng)·J.·穆夫, 埃里克·O.·梅耶德里奇, 馬修·R.·圖布斯 申請人:國際商業(yè)機器公司