專利名稱:用于矢量處理的可擴(kuò)展并行流水線浮點(diǎn)單元的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及微處理器領(lǐng)域,尤其涉及浮點(diǎn)單元。
背景技術(shù):
浮點(diǎn)(FP)運(yùn)算的使用在諸如三維(3-D)計(jì)算機(jī)圖形、圖像處理、數(shù)字信號(hào)處理、天氣預(yù)報(bào)、空間探測(cè)、地震處理和數(shù)值分析的許多計(jì)算機(jī)領(lǐng)域里逐漸變得普及。已經(jīng)開發(fā)了專門設(shè)計(jì)的浮點(diǎn)單元來增強(qiáng)計(jì)算機(jī)系統(tǒng)里的FP計(jì)算能力。許多FP應(yīng)用程序涉及矢量處理。設(shè)計(jì)用于矢量處理的浮點(diǎn)處理器(FPP)通常使用流水線結(jié)構(gòu)。
用于流水線FPP的現(xiàn)有技術(shù)通常使用單深度流水線(deep pipeline)來進(jìn)行矢量處理。雖然這個(gè)方法對(duì)一些應(yīng)用程序可能是簡單和充分的,但它對(duì)于高強(qiáng)度的矢量處理而言具有許多缺點(diǎn)。當(dāng)問題大小改變時(shí)一不管是增加還是減少—很難改變?cè)擉w系結(jié)構(gòu)。也可能存在死鎖,從而導(dǎo)致低的流水線利用率。簡單的指令可能具有與復(fù)雜指令相同的等待時(shí)間,從而導(dǎo)致流水線的低效使用。其它缺點(diǎn)包括低的吞吐量、吞吐量取決于矢量總數(shù)等。
通過參考下述描述和用來示例說明本發(fā)明實(shí)施例的附圖可以最好的理解本發(fā)明的實(shí)施例,在附圖里圖1A是示例說明可以實(shí)施本發(fā)明的一個(gè)實(shí)施例的處理系統(tǒng)的圖。
圖1B是示例說明可以實(shí)施本發(fā)明一個(gè)實(shí)施例的圖形系統(tǒng)的圖。
圖2是示例說明根據(jù)本發(fā)明一個(gè)實(shí)施例的FPU的圖。
圖3是示例說明根據(jù)本發(fā)明一個(gè)實(shí)施例的調(diào)度器的圖。
圖4是示例說明根據(jù)本發(fā)明一個(gè)實(shí)施例的FP流水線的圖。
圖5是示例說明根據(jù)本發(fā)明一個(gè)實(shí)施例的仲裁器和組裝單元的圖。
圖6是示例說明根據(jù)本發(fā)明一個(gè)實(shí)施例的為矢量處理執(zhí)行FP運(yùn)算的過程的流程圖。
圖7是示例說明根據(jù)本發(fā)明一個(gè)實(shí)施例的分派矢量輸入的過程的流程圖。
圖8是示例說明根據(jù)本發(fā)明一個(gè)實(shí)施例的仲裁和組裝的過程的流程圖。
具體實(shí)施例方式
本發(fā)明的實(shí)施例是為矢量處理執(zhí)行浮點(diǎn)運(yùn)算的技術(shù)。輸入隊(duì)列捕獲多個(gè)矢量輸入。調(diào)度器分派所述矢量輸入。多個(gè)浮點(diǎn)(FP)流水線根據(jù)對(duì)由調(diào)度器分派的矢量輸入的標(biāo)量分量的運(yùn)算而產(chǎn)生FP結(jié)果。仲裁器和組裝單元仲裁輸出部件的使用并組裝FP結(jié)果以寫入到輸出部件。
在以下說明中描述了大量細(xì)節(jié)。然而,應(yīng)當(dāng)理解本發(fā)明的實(shí)施例可以脫離這些細(xì)節(jié)而實(shí)現(xiàn)。在其它情況里,沒有示出公知電路、結(jié)構(gòu)和技術(shù)以避免混淆對(duì)該說明的理解。
本發(fā)明的一個(gè)實(shí)施例可描述為一個(gè)過程,其通常被描述為流程圖、程序框圖、結(jié)構(gòu)圖或塊圖。盡管流程圖可將運(yùn)算描述為按照時(shí)間順序的過程,但許多運(yùn)算可并行或同時(shí)執(zhí)行。此外運(yùn)算的順序也可重新安排。當(dāng)過程的運(yùn)算完成時(shí)該過程也就結(jié)束了。過程可對(duì)應(yīng)于方法、程序、工序、制造或裝配方法等。
本發(fā)明的一個(gè)實(shí)施例是為矢量處理有效地執(zhí)行FP運(yùn)算的技術(shù)。該技術(shù)使用FP單元(FPU)體系結(jié)構(gòu),該體系結(jié)構(gòu)使用多個(gè)淺流水線而不是單深度流水線。這在計(jì)算能力和緩沖深度方面提供了高度的可擴(kuò)展性。通過改變流水線的數(shù)量,該體系結(jié)構(gòu)就可以適應(yīng)任何計(jì)算需求。將進(jìn)入的矢量輸入分解或者拆解為一組獨(dú)立的標(biāo)量分量,將這些標(biāo)量分量轉(zhuǎn)發(fā)到多個(gè)FP流水線以并行處理。一個(gè)簡單的仲裁模式以異步方式將FP結(jié)果分配到輸出緩沖器并重新組裝該整個(gè)矢量結(jié)果。這種無次序的完成可允許在長的等待時(shí)間和復(fù)雜指令之前完成短的等待時(shí)間和簡單指令,導(dǎo)致高的吞吐量。通過在命令完成時(shí)而不是在分派的時(shí)候分配輸出緩沖器空間,該仲裁模式也提供改進(jìn)的死鎖阻止,產(chǎn)生高的流水線利用率。
圖1A是可以實(shí)現(xiàn)本發(fā)明一個(gè)實(shí)施例的處理系統(tǒng)10的圖。系統(tǒng)10包括處理器單元15,浮點(diǎn)單元(FPU)20,存儲(chǔ)器控制器集線器(MCH)25,主存儲(chǔ)器30,輸入/輸出控制器集線器(ICH)40,互連45,海量存儲(chǔ)設(shè)備50,及輸入/輸出(I/O)設(shè)備471到47k。
處理器單元15表示任何類型體系結(jié)構(gòu)的中央處理單元,諸如使用超線程、安全、網(wǎng)絡(luò)、數(shù)字媒體技術(shù)的處理器、單核心處理器、多核心處理器、嵌入處理器、移動(dòng)處理器、微控制器、數(shù)字信號(hào)處理器、超標(biāo)量計(jì)算機(jī)、矢量處理器、單指令多數(shù)據(jù)(SIMD)計(jì)算機(jī)、復(fù)雜指令集計(jì)算機(jī)(CISC)、精簡指令集計(jì)算機(jī)(RISC)、超長指令字(VLIW)或混合結(jié)構(gòu)。
FPU20是為矢量處理執(zhí)行浮點(diǎn)運(yùn)算的協(xié)處理器。它可具有與處理器單元15的直接接口,并可與處理器單元15共享系統(tǒng)資源,諸如存儲(chǔ)空間。處理器單元15和FPU20可交換指令和數(shù)據(jù),包括矢量數(shù)據(jù)及FP指令。FPU20也可看作占有處理器單元15的地址空間的輸入/輸出(I/O)處理器。它也可連接到MCH25而不是直接連接到處理器單元15。它使用具有用于高效矢量處理的多個(gè)FP流水線的高度可擴(kuò)展體系結(jié)構(gòu)。
MCH25提供諸如主存儲(chǔ)器30和ICH40的存儲(chǔ)器和輸入/輸出設(shè)備的控制和配置。MCH25可集成到芯片組,該芯片組集成了諸如圖形、媒體、孤立執(zhí)行模式、主到外圍總線接口、存儲(chǔ)器控制、電源管理等多個(gè)功能。MCH25或MCH25里的存儲(chǔ)控制功能可集成在處理器單元15里。在一些實(shí)施例里,不管存儲(chǔ)器控制器是在處理器單元15的內(nèi)部還是外部,都可為處理器單元15的所有核心或處理器工作。在其它實(shí)施例里,存儲(chǔ)器控制器可以包括可分別為處理器單元15里的不同核心或處理器工作的不同部件。
主存儲(chǔ)器30存儲(chǔ)系統(tǒng)代碼和數(shù)據(jù)。所述主存儲(chǔ)器30通??捎蓜?dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)或包括不需要刷新的存儲(chǔ)器的任何其它存儲(chǔ)器類型來實(shí)現(xiàn)。所述主存儲(chǔ)器30可由處理器單元15訪問或由處理器單元15和FPU20訪問。
ICH40具有設(shè)計(jì)為支持I/O功能的多個(gè)功能??蓪⑺鯥CH40與MCH20一起集成到芯片組或與MCH20分離地執(zhí)行I/O功能。ICH40可包括多個(gè)接口和I/O功能,如外設(shè)部件互連(PCI)總線接口、處理器接口、中斷控制器、直接存儲(chǔ)器存取(DMA)控制器、電源管理邏輯、計(jì)時(shí)器、系統(tǒng)管理總線(SMBus)、通用串行總線(USB)接口、海量存儲(chǔ)器接口、低管腳數(shù)(LPC)接口等。
互連45提供與外部設(shè)備的接口?;ミB45可是點(diǎn)對(duì)點(diǎn)或連接到多個(gè)設(shè)備。為清楚起見沒有示出所有的互連??梢灶A(yù)期的是,互連45可包括任何互連或總線如外設(shè)部件互連(PCI)、PCI快速、通用串行總線(USB)和直接媒體接口(DMI)等。
海量存儲(chǔ)設(shè)備50存儲(chǔ)存檔信息,諸如代碼、程序、文件、數(shù)據(jù)和應(yīng)用程序。所述海量存儲(chǔ)設(shè)備50可包括致密盤(CD)、只讀存儲(chǔ)器(ROM)52、數(shù)字化視頻/多用盤(DVD)53、軟盤驅(qū)動(dòng)器54和硬盤驅(qū)動(dòng)器56,及任何其它磁性或光學(xué)存儲(chǔ)設(shè)備。該海量存儲(chǔ)設(shè)備50提供讀取機(jī)器可訪問介質(zhì)的機(jī)制。I/O設(shè)備471到47k可包括任何I/O設(shè)備來執(zhí)行I/O功能。I/O設(shè)備471到47k的示例包括用于輸入設(shè)備(例如鍵盤,鼠標(biāo),跟蹤球,指向設(shè)備)、媒體卡(例如音頻、視頻、圖形)、網(wǎng)卡的控制器,及任何其它外設(shè)控制器。
圖1B是可實(shí)現(xiàn)本發(fā)明一個(gè)實(shí)施例的圖形系統(tǒng)60的圖。圖形系統(tǒng)60包括圖形控制器65、浮點(diǎn)單元(FPU)70、存儲(chǔ)器控制器75、存儲(chǔ)器80、像素處理器85、顯示處理器90、數(shù)模轉(zhuǎn)換器(DAC)95和顯示監(jiān)視器。
圖形控制器65是任何具有用于執(zhí)行圖形操作的圖形能力的處理器,所述圖形操作例如是快速線條繪制、二維(2-D)和三維(3-D)圖形著色功能、明暗處理、反鋸齒、多邊形著色、透明效果、色彩空間轉(zhuǎn)換、α混合、色度調(diào)節(jié)等。FPU70基本上與圖1A示出的FPU20相類似。它對(duì)圖形數(shù)據(jù)執(zhí)行浮點(diǎn)運(yùn)算。FPU70可從FP圖形控制器65接收FP指令和FP矢量輸入并向圖形控制器65返回FP結(jié)果。存儲(chǔ)器控制器75執(zhí)行與圖1A里的MCH25相類似的存儲(chǔ)器控制功能。存儲(chǔ)器80包括SRAM或DRAM存儲(chǔ)設(shè)備來存儲(chǔ)器由圖形控制器60和FPU70處理的指令和圖形數(shù)據(jù)。
像素處理器85是專門的圖形引擎,可執(zhí)行特定和復(fù)雜的圖形功能,諸如幾何計(jì)算、仿射變換、模型視圖投影、3-D剪輯等。像素處理器85也可連接到存儲(chǔ)器控制器70來訪問存儲(chǔ)器80和/或圖形控制器65。顯示處理器90處理圖形數(shù)據(jù)的顯示并執(zhí)行與顯示有關(guān)的功能,如調(diào)色板表查找、同步、逆光控制器、視頻處理等。DAC95將數(shù)字顯示數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換成模擬視頻信號(hào)到顯示監(jiān)視器97。顯示監(jiān)視器97是任何可在屏幕上顯示圖形信息以觀看的顯示監(jiān)視器。顯示監(jiān)視器可是陰極射線管(CRT)監(jiān)視器、電視(TV)設(shè)備、液晶顯示屏(LCD)、平板或數(shù)字CRT。
圖2是示例說明根據(jù)本發(fā)明一個(gè)實(shí)施例的FPU20/70的圖。FPU20/70包括輸入隊(duì)列210、矢量輸入選擇器220、調(diào)度器230、FP部件240、仲裁器和組裝單元240及輸出部件260。
輸入隊(duì)列210從處理器單元15(圖1)、圖形控制器60(圖2)或存儲(chǔ)矢量輸入的數(shù)據(jù)存儲(chǔ)器獲取或存儲(chǔ)將被處理的矢量輸入。每個(gè)矢量輸入包括FP指令和與該指令關(guān)聯(lián)的矢量數(shù)據(jù)。所述FP指令可是任何FP運(yùn)算,諸如FP加法、FP減法、FP乘法、FP除法、FP三角函數(shù)等。所述矢量數(shù)據(jù)可包括多個(gè)標(biāo)量分量。矢量寬度可是任何寬度(例如64位、128位)。輸入隊(duì)列210可由具有合適深度和寬度的先進(jìn)先出(FIFO)存儲(chǔ)器實(shí)現(xiàn),或者是平面的,實(shí)際上同時(shí)顯露所有條目,或者是它們的組合。在其它實(shí)施例里,輸入隊(duì)列210可以是沒有順序限制的緩沖存儲(chǔ)器。
矢量輸入選擇器220從輸入隊(duì)列210選擇矢量輸入來發(fā)送到調(diào)度器230。它包括K個(gè)多路復(fù)用器2251到225k。每個(gè)多路復(fù)用器具有連接到輸入隊(duì)列210的一個(gè)或多個(gè)輸出的多個(gè)輸入。矢量輸入的選擇可基于合適的準(zhǔn)則。
調(diào)度器230接收由矢量輸入選擇器220選擇的矢量輸入,并依據(jù)FP指令、FP部件240的可用性和該實(shí)現(xiàn)方式特定的可選其它準(zhǔn)則將包含在所述矢量輸入內(nèi)的浮點(diǎn)運(yùn)算分派到FP部件240以進(jìn)行處理。調(diào)度器230將唯一標(biāo)識(shí)符(ID)或序列號(hào)分配給每個(gè)矢量輸入,并將所述矢量輸入的唯一ID轉(zhuǎn)發(fā)到仲裁器和組裝單元250,并將分派給FP部件240的每個(gè)運(yùn)算和此ID包括在一起。
FP部件240根據(jù)FP指令對(duì)分派的矢量輸入執(zhí)行FP運(yùn)算。FP部件240可包括并行并且相互獨(dú)立運(yùn)行的P個(gè)FP流水線2451到245P。數(shù)字P可是任何適用于應(yīng)用程序的數(shù)。P個(gè)FP流水線2451到245P可以相同也可以不同。它們包括設(shè)計(jì)用來執(zhí)行特定FP運(yùn)算的獨(dú)立的FP流水線,諸如FP加法器、FP減法器、FP除法器、FP乘法器、FP復(fù)雜數(shù)學(xué)運(yùn)算函數(shù)(例如三角函數(shù))等。所述P個(gè)FP流水線2451到245P可具有導(dǎo)致相同或不同等待時(shí)間的相同或不同深度。調(diào)度器230根據(jù)與所述矢量輸入相關(guān)聯(lián)的FP指令及所述FP流水線是否是可用或者空閑,將運(yùn)算分派給P個(gè)FP流水線2451到245P的一個(gè)。P個(gè)FP流水線2451到245P的每一個(gè)產(chǎn)生狀態(tài)信號(hào)給調(diào)度器230,以表明該FP流水線是否能夠接收額外的FP運(yùn)算或是否不可用。如果FP流水線不可用,并且所述FP指令需要使用該流水線,則所述調(diào)度器230將相應(yīng)的矢量輸入保持在等待隊(duì)列里直到所述FP流水線或另一個(gè)合適的FP流水線可用為止。P個(gè)FP流水線2451到245P的每一個(gè)在輸出端產(chǎn)生FP結(jié)果。
仲裁器和組裝單元250將FP結(jié)果從FP部件240寫入到輸出部件260。仲裁器和組裝單元250在FP部件240的輸出端有多個(gè)FP結(jié)果可用的時(shí)候,仲裁輸出部件的使用。當(dāng)FP結(jié)果之間有一個(gè)優(yōu)勝者時(shí),仲裁器和組裝單元250將所述FP結(jié)果寫入輸出部件的分配在合適位置上的輸出緩沖器。實(shí)際上,仲裁器和組裝單元250在矢量輸入的所有標(biāo)量分量處理完畢之后,為每個(gè)結(jié)果矢量組裝所述FP結(jié)果。
輸出部件260存儲(chǔ)由仲裁器和組裝單元250寫入的FP結(jié)果。所述FP結(jié)果可被清空、讀取或由另一單元如處理器單元15、圖形控制器60或任何其它進(jìn)一步處理的消費(fèi)實(shí)體使用。輸出部件260包括Q個(gè)輸出緩沖器2651到265Q。每個(gè)輸出緩沖器具有足夠的存儲(chǔ)容量來存儲(chǔ)結(jié)果矢量。輸出緩沖器可實(shí)現(xiàn)為寄存器或存儲(chǔ)器。Q個(gè)輸出緩沖器2651到265Q的每一個(gè)具有狀態(tài)信號(hào)來表明它是否獲得了矢量結(jié)果的所有標(biāo)量分量,及它的內(nèi)容是否已被清空、讀取或被系統(tǒng)里的其它消費(fèi)實(shí)體使用。仲裁器和組裝單元250監(jiān)視這些狀態(tài)信號(hào),以確定輸出緩沖器是否可用或空閑以用于寫入。
圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例示例說明圖2示出的調(diào)度器230的圖。調(diào)度器230包括ID產(chǎn)生器310、矢量分解器320和分派器330。
所述ID產(chǎn)生器310為調(diào)度要加以分派的矢量輸入產(chǎn)生唯一ID。所述唯一ID可根據(jù)矢量輸入到達(dá)輸入隊(duì)列210的順序或由矢量輸入選擇器220選擇的順序來順序地或遞增地產(chǎn)生。所述ID可以在零到K內(nèi),其中K大于可以包含在圖2示出的P個(gè)FP流水線2451到245P中的唯一矢量指令的個(gè)數(shù)。唯一ID與標(biāo)量分量一起被分派到FP部件240的FP流水線,并通過相關(guān)聯(lián)的FP流水線與FP結(jié)果一起傳送到該FP流水線的輸出端。也可由仲裁器和組裝單元250使用來將FP結(jié)果分配到輸出緩沖器并將屬于相同ID的所有FP結(jié)果組裝到輸出部件260里分配的輸出緩沖器。
矢量分解器320將矢量輸入分解成多個(gè)標(biāo)量分量。每個(gè)標(biāo)量分量具有表明其在關(guān)聯(lián)的輸入矢量中的位置的標(biāo)量位置標(biāo)記。矢量分解器320將分解的標(biāo)量分量及其的位置標(biāo)記轉(zhuǎn)送到分派器330。
分派器330接收FP部件240里的FP流水線2451到245P的狀態(tài)信號(hào),以確定它們的可用性并將標(biāo)量分量發(fā)送給FP部件240中可用的FP流水線。分派器330也將矢量輸入的ID和位置標(biāo)記及該矢量輸入的標(biāo)量分量發(fā)送給仲裁器和組裝單元250。
圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例示例說明圖2示出的FP流水線245K的圖。所述FP流水線245K包括選擇器410和流水線(PL)單元420。
選擇器410選擇從調(diào)度器230發(fā)送的標(biāo)量分量及在PL單元420的輸出端的FP結(jié)果。當(dāng)FP結(jié)果的ID與仲裁器和組裝單元250分配的ID不匹配時(shí),重新循環(huán)該FP結(jié)果。所述重新循環(huán)的FP結(jié)果被標(biāo)上空操作標(biāo)記,以致于使得它可通過PL單元無修改地傳播,由此保持了其值。選擇器410可實(shí)現(xiàn)為在PL單元420的輸入端的多路復(fù)用器。
PL單元420對(duì)標(biāo)量分量執(zhí)行浮點(diǎn)運(yùn)算。它具有M個(gè)PL級(jí)4251到425M。深度M可以是任何適合于可擴(kuò)展性和/或吞吐量需求的深度。PL單元420在輸出端產(chǎn)生FP PL結(jié)果到仲裁器和組裝單元250。此外,所述標(biāo)量分量所屬于的矢量輸入的ID及在該矢量內(nèi)部的位置標(biāo)記也沿著M個(gè)PL級(jí)4251到425M傳播。將這個(gè)FP PL ID與仲裁器和組裝單元250分配的ID進(jìn)行匹配以確定所關(guān)聯(lián)的FP PL結(jié)果是否可寫入輸出緩沖器,或是否需要重新循環(huán)回選擇器410。如果該運(yùn)算未完成,諸如為計(jì)算目的需要額外通過,或完成了運(yùn)算但沒有匹配,則重新循環(huán)所述FP PL結(jié)果以等待輸出緩沖器變得可用。如果運(yùn)算完成并且匹配,則利用對(duì)應(yīng)的位置標(biāo)記將所述FP PL結(jié)果寫入所分配的輸出緩沖器的合適位置。PL單元420也產(chǎn)生狀態(tài)信號(hào)到調(diào)度器230以表明該P(yáng)L單元是繁忙還是可用于處理標(biāo)量分量。
圖5是示例說明根據(jù)本發(fā)明一個(gè)實(shí)施例的仲裁器和組裝單元250的圖。仲裁器和組裝單元250包括ID隊(duì)列510、仲裁器520、匹配電路530和組裝器540。
所述ID隊(duì)列510存儲(chǔ)從調(diào)度器230發(fā)送的ID。該ID隊(duì)列可由FIFO或任何其它合適的存儲(chǔ)機(jī)制來實(shí)現(xiàn)。它的深度取決于并行FP流水線的數(shù)量P、可擴(kuò)展性和/或吞吐量需要。此外,可以讓多個(gè)ID為仲裁器520所用。
仲裁器520從ID隊(duì)列510接收ID,并從輸出部件260接收狀態(tài)信號(hào)。該狀態(tài)信號(hào)由輸出緩沖器提供以表明該輸出緩沖器是否可用。如果輸出部件260中的輸出緩沖器可用,貝仲裁器520將ID分配給這個(gè)輸出緩沖器。仲裁器520可利用循環(huán)復(fù)用、先進(jìn)先出或任何其它合適的分配模式來將ID分配給輸出緩沖器。一旦輸出緩沖器被分配了ID,其使用該分配的ID直到所有的標(biāo)量分量都被寫入到該輸出緩沖器為止。然后仲裁器520將所有分配的ID傳送到匹配電路530。通過在仲裁器520中推遲緩沖器分配可改進(jìn)死鎖阻止,導(dǎo)致高的流水線利用率。
匹配電路530將與在輸出部件260里的FP流水線2451到245P的輸出端的FP PL結(jié)果相關(guān)的ID與分配的ID進(jìn)行匹配。如果存在任何匹配,則匹配電路530將匹配結(jié)果發(fā)送到組裝器530。對(duì)于沒有匹配的任何FP PL ID,對(duì)應(yīng)的FP流水線將它的FP PL結(jié)果重新循環(huán)到它的輸入端。匹配電路530可將FP PL ID與單個(gè)分配的ID或多個(gè)分配的ID進(jìn)行匹配。由于匹配多個(gè)分配的ID能夠使與較短等待時(shí)間流水線相關(guān)的指令通過長等待時(shí)間流水線相關(guān)的指令,因此匹配多個(gè)分配的ID可提供更高的吞吐量。匹配電路530可通過多個(gè)并行執(zhí)行比較的比較器來實(shí)現(xiàn)。比較器可用L個(gè)異或門構(gòu)成來執(zhí)行逐位比較,后面連接了一個(gè)L個(gè)輸入的或門,其中L是ID的字大小,或用等價(jià)的邏輯電路來構(gòu)成。
組裝器540接收匹配電路530的結(jié)果、從調(diào)度器230接收位置標(biāo)記及從FP部件240接收FP PL結(jié)果。它將具有與分配的ID相匹配的ID的FP結(jié)果寫入到輸出緩沖器里通過對(duì)應(yīng)標(biāo)量位置標(biāo)記指示的位置。
圖6是根據(jù)本發(fā)明一個(gè)實(shí)施例示例說明為矢量處理執(zhí)行FP運(yùn)算的過程600的流程圖。
在開始之后,過程600獲得矢量輸入(塊610)。每個(gè)矢量輸入具有N個(gè)標(biāo)量分量。然后,過程600根據(jù)FP指令和FP流水線的可用性將矢量輸入分派給所述FP流水線(塊620)。接著,過程600通過對(duì)矢量輸入執(zhí)行FP運(yùn)算產(chǎn)生FP結(jié)果(塊630)。然后,過程600仲裁輸出部件的使用并將所述FP結(jié)果組裝到輸出部件(塊640),然后結(jié)束。
圖7是根據(jù)本發(fā)明一個(gè)實(shí)施例示例說明圖6示出的分派矢量輸入的過程620的流程圖。
在開始之后,過程620為矢量輸入產(chǎn)生ID(塊710)。所述ID對(duì)每個(gè)矢量輸入是唯一的。然后過程620將所述ID傳送到仲裁器和組裝單元(塊720)。接著,過程620將所述矢量輸入分解成標(biāo)量分量,并將每個(gè)標(biāo)量分量與一個(gè)標(biāo)量位置標(biāo)記關(guān)聯(lián)以表明該標(biāo)量分量在矢量輸入里的位置(塊730)。然后,過程620確定用于標(biāo)量分量的FP流水線是否可用(塊740)。如果不可用,則過程620返回到塊740以等待可用的FP流水線。否則過程620將該標(biāo)量分量、ID和位置標(biāo)記發(fā)送到可用的FP流水線(塊750)。
然后,過程620確定是否還有針對(duì)這個(gè)矢量的標(biāo)量分量(塊760)。如果還有,則過程620返回塊740以繼續(xù)等待可用的FP流水線。否則結(jié)束過程620。
圖8是根據(jù)本發(fā)明一個(gè)實(shí)施例示例說明圖6示出的仲裁和裝配的過程640的流程圖。
在開始之后,過程640確定輸出緩沖器是否可用(塊810)。如果不可用則結(jié)束過程640。否則,過程640將來自ID隊(duì)列的ID分配到可用的輸出緩沖器(塊820)??衫醚h(huán)復(fù)用、先進(jìn)先出和任何其它合適的分配原則來實(shí)施該分配。然后,過程640確定在FP流水線的輸出端的已完成操作的FP ID是否與分配的ID相匹配(塊830)。如果不匹配,則過程640返回到塊830以繼續(xù)檢查。由于FP流水線彼此獨(dú)立和并行地運(yùn)行,最終將會(huì)有一個(gè)與分配的ID相匹配的FP ID。如果存在匹配,那么過程640將該FP結(jié)果與匹配的ID一起寫入輸出緩沖器中由與該FP結(jié)果關(guān)聯(lián)的位置標(biāo)記指示的位置(塊840)。
然后,過程640確定在輸出緩沖器里的該矢量是否已完成(塊850)。當(dāng)該輸出緩沖器里的矢量的所有標(biāo)量分量都被寫入所述輸出緩沖器時(shí),該輸出緩沖器里的矢量已經(jīng)完成。如果沒有完成,則過程640返回塊830以檢查后來的匹配。否則,過程640將所述輸出緩沖器標(biāo)記為完成并將結(jié)果數(shù)據(jù)位就緒的信息通知給消費(fèi)實(shí)體(塊860)。消費(fèi)實(shí)體可以是圖1A和圖1B示出的處理器15或圖形控制器65。然后,過程640確定結(jié)果數(shù)據(jù)是否已經(jīng)被消費(fèi)實(shí)體使用(塊70)。如果沒有,則過程640返回塊870以繼續(xù)檢查。否則,過程640將可用狀態(tài)發(fā)送到仲裁器單元以表明所述輸出緩沖器現(xiàn)在可用來接收新的結(jié)果數(shù)據(jù)(塊880)。過程640然后結(jié)束并在所述輸出緩沖器被清空之后,將可用狀態(tài)發(fā)送給仲裁器和組裝單元(塊860),然后結(jié)束。
雖然已經(jīng)根據(jù)幾個(gè)實(shí)施例描述了本發(fā)明,本領(lǐng)域的普通技術(shù)人員將認(rèn)識(shí)到本發(fā)明并不限于所描述的實(shí)施例,而是可以通過在所附權(quán)利要求的精神和范圍里修改和變化來實(shí)現(xiàn)。因此說明書只是用來示例說明而不是限制。
權(quán)利要求
1.一種設(shè)備,包括輸入隊(duì)列,用于捕獲多個(gè)矢量輸入;耦合到所述輸入隊(duì)列的調(diào)度器,用于分派所述矢量輸入中的運(yùn)算;耦合到所述調(diào)度器的多個(gè)浮點(diǎn)(FP)流水線,用于根據(jù)對(duì)所述調(diào)度器分配的矢量輸入的標(biāo)量分量的運(yùn)算來產(chǎn)生FP結(jié)果;及耦合到所述多個(gè)FP流水線的仲裁器和組裝單元,用于仲裁輸出部件的使用和組裝所述FP結(jié)果以寫入到所述輸出部件。
2.如權(quán)利要求1所述的設(shè)備,其中所述調(diào)度器包括標(biāo)識(shí)符產(chǎn)生器,用于為多個(gè)矢量輸入里的矢量輸入產(chǎn)生標(biāo)識(shí)(ID);用于將所述矢量輸入分解成標(biāo)量分量的矢量分解器,其中每個(gè)標(biāo)量分量具有表明該標(biāo)量分量在關(guān)聯(lián)的輸入矢量里的位置的位置標(biāo)記;及耦合到所述標(biāo)識(shí)符和所述矢量分解器的分派器,用于將標(biāo)量分量和位置標(biāo)記發(fā)送到FP流水線,所述分派器將所述ID轉(zhuǎn)發(fā)到仲裁器和組裝單元。
3.如權(quán)利要求2所述的設(shè)備,其中所述仲裁器和組裝單元包括仲裁器,用于將所述ID分配到輸出部件里的輸出緩沖器;匹配電路,用于將所述FP結(jié)果的ID和分配的ID相匹配;及組裝器,用于將具有與分配的ID相匹配的ID的FP結(jié)果寫入輸出緩沖器里由標(biāo)量位置標(biāo)記指示的位置。
4.如權(quán)利要求3所述的設(shè)備,其中每個(gè)FP流水線包括輸入選擇器,用于選擇從調(diào)度器發(fā)送的標(biāo)量分量之一和在需要額外通過或當(dāng)所述ID與分配的ID不匹配時(shí)被重新循環(huán)的FP結(jié)果。
5.如權(quán)利要求3所述的設(shè)備,其中所述仲裁器和組裝單元還包括ID隊(duì)列,用于存儲(chǔ)從調(diào)度器分派的ID。
6.如權(quán)利要求5所述的設(shè)備,其中所述仲裁器根據(jù)循環(huán)復(fù)用和先進(jìn)先出模式中的一個(gè)分配來自ID隊(duì)列的ID。
7.如權(quán)利要求3所述的設(shè)備,其中所述仲裁器將ID分配到可用的輸出緩沖器。
8.一種方法,包括把多個(gè)矢量輸入捕獲到輸入隊(duì)列里;利用調(diào)度器來分派矢量輸入中的運(yùn)算;利用多個(gè)浮點(diǎn)(FP)流水線,根據(jù)對(duì)調(diào)度器分派的矢量輸入的標(biāo)量分量的運(yùn)算來產(chǎn)生FP結(jié)果;利用仲裁器和組裝單元來仲裁存儲(chǔ)所述FP結(jié)果的輸出部件的使用;將所述FP結(jié)果組裝到輸出部件。
9.如權(quán)利要求8所述的方法,其中所述分派步驟包括為多個(gè)矢量輸入中的矢量輸入產(chǎn)生標(biāo)識(shí)(ID);將所述矢量輸入分解成標(biāo)量分量,其中每個(gè)標(biāo)量分量具有表明該標(biāo)量分量在關(guān)聯(lián)的輸入矢量里的位置的位置標(biāo)記;及將標(biāo)量分量和位置標(biāo)記發(fā)送到FP流水線;及將所述ID轉(zhuǎn)發(fā)到仲裁器和組裝單元。
10.如權(quán)利要求9所述的方法,其中所述仲裁器和組裝單元包括將ID分配到輸出部件里的輸出緩沖器;將FP結(jié)果的ID和分配的ID進(jìn)行匹配;及將具有與分配的ID相匹配的ID的FP結(jié)果寫入輸出緩沖器里由標(biāo)量位置標(biāo)記指示的位置。
11.如權(quán)利要求10所述的方法,還包括選擇從調(diào)度器發(fā)送的標(biāo)量分量之一和在需要額外通過或當(dāng)所述ID與分配給多個(gè)FP流水線之一的ID不匹配時(shí)被重新循環(huán)的FP結(jié)果。
12.如權(quán)利要求10所述的方法,其中所述仲裁步驟包括將從調(diào)度器分派的ID存儲(chǔ)到ID隊(duì)列里。
13.如權(quán)利要求12所述的方法,其中仲裁包括根據(jù)循環(huán)復(fù)用和先進(jìn)先出模式中的一個(gè)來分配來自ID隊(duì)列的ID。
14.如權(quán)利要求10所述的方法,其中仲裁包括將ID分配給可用的輸出緩沖器。
15.一種系統(tǒng),包括用于處理圖形數(shù)據(jù)的圖形控制器;存儲(chǔ)器,耦合到所述圖形控制器以存儲(chǔ)所述圖形數(shù)據(jù);浮點(diǎn)單元(FPU),耦合到所述圖形控制器用于對(duì)所述圖形數(shù)據(jù)執(zhí)行浮點(diǎn)運(yùn)算,所述FPU包括用于捕獲多個(gè)矢量輸入的輸入隊(duì)列,耦合到所述輸入隊(duì)列的調(diào)度器,用于分派矢量輸入里的運(yùn)算,耦合到所述調(diào)度器的多個(gè)浮點(diǎn)(FP)流水線,用于根據(jù)對(duì)調(diào)度器分派的矢量輸入的標(biāo)量分量的運(yùn)算產(chǎn)生FP結(jié)果,及耦合到所述多個(gè)FP流水線的仲裁器和組裝單元,用于仲裁輸出部件的使用和組裝所述FP結(jié)果以寫入所述輸出部件。
16.如權(quán)利要求15所述的系統(tǒng),其中所述調(diào)度器包括標(biāo)識(shí)符產(chǎn)生器,用于為多個(gè)矢量輸入里的矢量輸入產(chǎn)生標(biāo)識(shí)(ID);用于將所述矢量輸入分解成標(biāo)量分量的矢量分解器,其中每個(gè)標(biāo)量分量具有表明該標(biāo)量分量在關(guān)聯(lián)的輸入矢量里的位置的位置標(biāo)記;及耦合到所述標(biāo)識(shí)符產(chǎn)生器和所述矢量分解器的分派器,用于將標(biāo)量分量和位置標(biāo)記發(fā)送到FP流水線,所述分派器將所述ID轉(zhuǎn)發(fā)到仲裁器和組裝單元。
17.如權(quán)利要求16所述的系統(tǒng),其中所述仲裁器和組裝單元包括仲裁器,用于將ID分配到輸出部件里的輸出緩沖器;匹配電路,用于將FP結(jié)果的ID和分配的ID進(jìn)行匹配;及組裝器,用于將具有與分配的ID相匹配的ID的FP結(jié)果寫入輸出緩沖器里由標(biāo)量位置標(biāo)記指示的位置。
18.如權(quán)利要求17所述的系統(tǒng),其中每個(gè)FP流水線包括輸入選擇器,用于選擇從調(diào)度器發(fā)送的標(biāo)量分量之一和在需要額外通過或當(dāng)所述ID與分配的ID不匹配時(shí)被重新循環(huán)的FP結(jié)果。
19.如權(quán)利17所述的系統(tǒng),其中仲裁器和組裝單元還包括ID隊(duì)列,用于存儲(chǔ)從所述調(diào)度器分派的ID。
20.如權(quán)利要求19所述的系統(tǒng),其中所述仲裁根據(jù)循環(huán)復(fù)用和先進(jìn)先出模式中的一個(gè)來分配來自ID隊(duì)列的ID。
全文摘要
本發(fā)明涉及一種為矢量處理執(zhí)行浮點(diǎn)運(yùn)算的技術(shù)。輸入隊(duì)列捕獲多個(gè)矢量輸入。調(diào)度器分配所述矢量輸入。多個(gè)浮點(diǎn)(FP)流水線根據(jù)對(duì)所述調(diào)度器分配的矢量輸入的標(biāo)量分量的運(yùn)算來產(chǎn)生FP結(jié)果。仲裁器和組裝單元仲裁輸出部件的使用并組裝所述FP結(jié)果以寫入所述輸出部件。
文檔編號(hào)G06T1/20GK1983164SQ20061006392
公開日2007年6月20日 申請(qǐng)日期2006年9月27日 優(yōu)先權(quán)日2005年9月28日
發(fā)明者D·多諾夫里奧, M·德懷爾 申請(qǐng)人:英特爾公司