專利名稱:相對地址產(chǎn)生的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及電子設(shè)備,且更具體地說涉及用于產(chǎn)生相對地址的技術(shù)。
背景技術(shù):
處理器廣泛用于例如通信、計算、數(shù)據(jù)聯(lián)網(wǎng)等各種應(yīng)用。處理器可對存儲在存儲單 元中的數(shù)據(jù)執(zhí)行各種操作,所述存儲單元可以是寄存器堆、隨機存取存儲器(RAM)等。 可通過絕對地址或相對地址來指定用于操作的數(shù)據(jù)。絕對地址指向存儲單元中存儲所述 數(shù)據(jù)的特定位置。相對地址由基址和偏移給出。基址指向存儲單元中的參考位置。偏移 指示參考位置與存儲數(shù)據(jù)的實際位置之間的距離。相對地址通常轉(zhuǎn)換為絕對地址,接著 使用絕對地址從存儲單元中取得所需數(shù)據(jù)。
作為一實例,將兩個運算數(shù)相加的指令可給出為
aiWr0, x0[rl + 15], r2。
第一運算數(shù)存儲在寄存器/位置r2中。第二運算數(shù)存儲在由存儲在寄存器rl中的基 值和偏移15確定的位置處。兩個運算數(shù)求和的結(jié)果存儲在寄存器/位置rO中。 以上指令通常轉(zhuǎn)換為兩個指令,如下 flf(i(i a0, rl, 15 flflWr0, x0[a0〗,r2。
第一指令通過將寄存器rl中的基值與偏移15求和且接著將絕對地址存儲在寄存器 a0中來計算第二運算數(shù)的絕對地址。第二指令計算兩個運算數(shù)的和,其中第二運算數(shù)由 通過第一指令計算的絕對地址確定。算術(shù)邏輯單元(ALU)可針對第一和第二指令兩者 執(zhí)行計算。
將使用相對尋址的單個指令轉(zhuǎn)換為兩個指令出于若干原因可能不合乎需要。第一, 通過第--指令計算絕對地址消耗ALU資源。第二,按照連續(xù)次序完成兩個指令可能會 經(jīng)歷較長延遲,因為第二指令依賴于第一指令的結(jié)果。此延遲損失在ALU具有多個級 吋更加嚴重。因多個ALU級引起的較長延遲可能會對性能造成不利影響。
因此,此項技術(shù)中需要有效地處置相對尋址的技術(shù)。
發(fā)明內(nèi)容
本文描述有效地處置相對尋址的技術(shù)。在一實施例中,處理器包含地址產(chǎn)生器和存 儲單元。所述地址產(chǎn)生器接收包括基址和偏移的相對地址,獲得所述基址的基值,將所 述基值與所述偏移求和,并提供對應(yīng)于所述相對地址的絕對地址。所述存儲單元接收所 述基址并將所述基值提供到所述地址產(chǎn)生器。所述存儲單元還接收所述絕對地址并在此 地址處提供數(shù)據(jù)。所述地址產(chǎn)生器可在存儲器存取的第一時鐘循環(huán)中導(dǎo)出所述絕對地 址。所述存儲單元可在所述存儲器存取的第二時鐘循環(huán)中提供所述數(shù)據(jù)。所述存儲單元 可具有多個(例如,兩個)讀取端口以支持同時的地址產(chǎn)生和數(shù)據(jù)檢索。
在另一實施例中,處理器包含多個地址產(chǎn)生器和多個寄存器庫(register bank)。所 述地址產(chǎn)生器接收相對地址并提供絕對地址。寄存器庫接收絕對地址并在這些地址處提 供數(shù)據(jù)。寄存器庫還可接收相對地址的基址并提供基值。產(chǎn)生器可將相對地址的偏移與 基值求和以獲得絕對地址。處理器可進一步包含地址交叉開關(guān)(address crossbar)、數(shù)據(jù) 交叉開關(guān)和多個ALU。地址交叉開關(guān)將地址產(chǎn)生器的輸出耦合到寄存器庫。數(shù)據(jù)交叉開 關(guān)將來自寄存器庫的數(shù)據(jù)提供到ALU。 ALU同時對來自寄存器庫的數(shù)據(jù)(例如,用于 多個像素)進行運算。
下文進一步詳細描述本發(fā)明的各個方面和實施例。
通過結(jié)合附圖考慮下文陳述的詳細描述,將更加明白本發(fā)明的各方面和實施例,附 圖中相同參考符號始終相應(yīng)地標示。
圖1A和1B分別展示絕對尋址和相對尋址。
圖2展示支持相對尋址的存儲結(jié)構(gòu)。
圖3展示支持使用相對尋址的讀取和寫入的存儲結(jié)構(gòu)。
圖4展示支持相對尋址的雙端口存儲結(jié)構(gòu)。
圖5展示圖形處理器。
圖6展示圖形處理器內(nèi)的ALU核心和寄存器庫。
圖7展示圖形數(shù)據(jù)在寄存器庫中的存儲。
圖8展示將寄存器庫耦合到ALU核心的數(shù)據(jù)交叉開關(guān)。
圖9展示無線裝置的框圖。
具體實施例方式
本文使用詞匯"示范性"來表示"充當實例、例子或說明"。本文中描述為"示范 性"的任何實施例或設(shè)計均不一定解釋為比其它實施例或設(shè)計優(yōu)選或有利。
圖1A展示使用絕對尋址的讀取操作。絕對地址指向存儲單元中的一位置,所述存 儲單元可以是存儲器、寄存器庫等。提供存儲在此位置的數(shù)據(jù)作為輸出數(shù)據(jù)。
圖1B展示使用相對尋址的讀取操作。相對地址由基址和偏移組成?;分赶虼鎯?單元中存儲基值的位置。將基值與偏移求和以產(chǎn)生對應(yīng)于相對地址的絕對地址?;祷?偏移可以是負值,但絕對地址通常為正值。提供存儲在由絕對地址指向的位置的數(shù)據(jù)作 為輸出數(shù)據(jù)。
圖2展示有效地支持使用相對尋址的存儲器存取的存儲結(jié)構(gòu)200的實施例的框圖。 存儲結(jié)構(gòu)200包含地址產(chǎn)生器210和存儲單元230。存儲結(jié)構(gòu)200接收絕對地址或相對 地址,并在由所接收地址指示的位置處提供數(shù)據(jù)(例如,運算數(shù))。
地址產(chǎn)生器210接收地址信息,其可包括源識別符(ID)和偏移。源ID可以是指 令的一部分或可來自某一其它源(例如,緩沖器)。源ID可含有絕對地址或基址。對于 相對地址,加法器220接收來自存儲單元230的輸出和偏移,將兩個輸入求和,并將結(jié) 果提供到鎖存器222。多路復(fù)用器(Mux) 224接收鎖存器222的輸出和關(guān)于兩個輸入的 地址信息,并將兩個輸入中的一者提供到存儲單元230。
如果地址信息包括絕對地址,那么多路復(fù)用器224將絕對地址直接提供到存儲單元 230,存儲單元230接著在由絕對地址指示的位置處提供數(shù)據(jù)。如果地址信息包括相對 地址,那么在兩個時鐘循環(huán)中計算并提供相應(yīng)的絕對地址。在第一時鐘循環(huán)中,多路復(fù) 用器224將地址信息中的基址(例如,源ID)提供到存儲單元230,存儲單元230接著 將基值提供到加法器220。加法器220接著將地址信息中的偏移與來自存儲單元230的 基值求和并將基址提供到鎖存器222。在第二時鐘循環(huán)中,多路復(fù)用器224將來自鎖存 器222的絕對地址提供到存儲單元230,存儲單元230接著在由絕對地址指示的位置處 提供數(shù)據(jù)。
加法器220可以是可將兩個整數(shù)值求和并提供整數(shù)結(jié)果的簡單加法器。加法器220 可利用此項技術(shù)中已知的任何設(shè)計實施且通常遠比ALU簡單。存儲單元230可以是被 指派得到不同唯一地址的寄存器的庫或陣列。存儲單元230還可以是例如RAM、同步 RAM (SRAM)、同步動態(tài)RAM (SDRAM)、快閃存儲器等其它類型的存儲裝置。
在圖2所示的實施例中,在兩個時鐘循環(huán)中執(zhí)行使用相對尋址的讀取操作。在第一時鐘循環(huán)中計算絕對地址,且在第二時鐘循環(huán)中檢索數(shù)據(jù)。此實施例分解了讀取操作的 總延遲并允許較.高吋鐘速度用于存儲結(jié)構(gòu)200。鎖存器(圖2中未展示)可接收地址信 息并將其輸出提供到多路復(fù)用器224的第二輸入。此鎖存器將延遲絕對地址以與相對地 址的延遲匹配?;蛘?,可在存儲單元230的輸出端處添加寄存器(圖2中也未展示)以 使相對地址的輸出數(shù)據(jù)與絕對地址的輸出數(shù)據(jù)在時間上對準。
在另一實施例中,不存在鎖存器222,且在一個時鐘循環(huán)中執(zhí)行絕對地址計算和數(shù) 據(jù)檢索。在又一實施例中,可插入一個以上鎖存器以進一步分解總延遲并支持更高的時 鐘速度。
存儲結(jié)構(gòu)200可提供某些優(yōu)點。第一,可基于地址信息(例如,指令中包含的源ID) 在運行中計算絕對地址。此特征可消除針對每一執(zhí)行線程具有一地址寄存器的需要,這 可為多線程處理器提供、顯著節(jié)省。第二,不消耗ALU資源來計算絕對地址。所節(jié)省的 ALU資源可用于其它操作。第三,不將使用相對尋址的指令轉(zhuǎn)換為兩個指令。這可減少 延遲并改進處理量。通過使用存儲結(jié)構(gòu)200可能還有其它益處。
圖3展示有效地支持使用相對尋址的讀取和寫入的存儲結(jié)構(gòu)300的實施例的框圖。 存儲結(jié)構(gòu)300包含地址產(chǎn)生器310和存儲單元330。地址產(chǎn)生器310接收源地址信息和 目的地地址信息。源地址信息指示用于讀取操作的讀取地址且可包括源ID和偏移。源 ID可包含絕對地址或基址。冃的地地址信息指示用于寫入操作的寫入地址且可包括冃的 地ID和偏移。冃的地ID可包含絕對地址或基址。源ID和冃的地ID可以是指令的一部 分或可來自其它源。
在地址產(chǎn)生器310內(nèi),多路復(fù)用器318在兩個輸入處接收源地址信息和目的地地址 信息并將所述兩個輸入中的一者提供到加法器320。加法器320還接收來自存儲單元330 的輸出,將兩個輸入求和,并將結(jié)果提供到鎖存器322。多路復(fù)用器324在三個輸入上 接收鎖存器322的輸出、源地址信息和目的地地址信息,并將所述三個輸入中的一者提 供到存儲單元330。多路復(fù)用器326在兩個輸入上接收鎖存器322的輸出和目的地地址 信息,并將所述兩個輸入中的一者提供到延遲單元328。單元328提供與對來自存儲單 元330的運算數(shù)進行運算的ALU (圖3中未展示)的延遲匹配的延遲。舉例來說,如果 ALU具有四個時鐘循環(huán)的延遲,那么單元328提供四個時鐘循環(huán)的延遲。單元328將寫 入地址提供到存儲單元330。
可如下從源地址信息計算讀取地址。如果源地址信息包括絕對地址,那么多路復(fù)用 器324將絕對地址作為讀取地址提供到存儲單元330。如果源地址信息包括相對地址, 那么在第一時鐘循環(huán)中,多路復(fù)用器318將源地址信息中的偏移提供到加法器320,多路復(fù)用器324將源地址信息中的基址(例如,源ID)提供到存儲單元330,且加法器320 將來自多路復(fù)用器318的偏移與來自存儲單元330的基值求和,并將絕對地址提供到鎖 存器322。在第二時鐘循環(huán)中,多路復(fù)用器324將來自鎖存器322的絕對地址作為讀取 地址提供到存儲單元330。
可如下從目的地地址信息計算寫入地址。如果目的地地址信息包括絕對地址,那么 多路復(fù)用器326將絕對地址作為寫入地址提供到存儲單元330。如果冃的地地址信息包 括相對地址,那么在第一時鐘循環(huán)中,多路復(fù)用器318將冃的地地址信息中的偏移提供 到加法器320,多路復(fù)用器324將目的地地址信息中的基址(例如,冃的地ID)提供到 存儲單元330,且加法器320將來自多路復(fù)用器318的偏移與來自存儲單元330的基值 求和,并將絕對地址提供到鎖存器322。在第二時鐘循環(huán)中,多路復(fù)用器326將來自鎖 存器322的絕對地址作為寫入地址提供到存儲單元330。
圖4展示有效地支持相對尋址的雙端口存儲結(jié)構(gòu)400的實施例的框圖。存儲結(jié)構(gòu)400 包含地址產(chǎn)生器410和存儲單元430。存儲單元430具有可在一個時鐘循環(huán)中在兩個位 置處提供數(shù)據(jù)的兩個讀取端口。地址產(chǎn)生器410包含加法器420、鎖存器422和多路復(fù) 用器424,其以與圖2中的加法器220、鎖存器222和多路復(fù)用器224相同的方式耦合。 地址產(chǎn)生器410進一步包含多路復(fù)用器428,其具有耦合到兩個讀取端口的兩個輸入和 耦合到加法器420的一輸出??刂破骰蛸Y源管理器(圖4中未展示)可基于所執(zhí)行指令 中的地址信息產(chǎn)生用于:多路復(fù)用器424和428的控制信號。
兩個讀取端口支持以交錯方式針對兩個存儲器存取(例如,通過兩個指令)檢索數(shù) 據(jù)。舉例來說,可在第一時鐘循環(huán)中通過經(jīng)由多路復(fù)用器424將基址提供到存儲單元430
并經(jīng)由端口 O獲得基值來計算第一指令的絕對地址。在第二時鐘循環(huán)中,可通過將來自 鎖存器422的絕對地址提供到存儲單元430并經(jīng)由端口 0獲得數(shù)據(jù)來檢索第一指令的數(shù) 據(jù)。同樣在第二時鐘循環(huán)中,可通過將基址經(jīng)由多路復(fù)用器424提供到存儲單元430并 經(jīng)由端口 1獲得基值來計算第二指令的絕對地址。在第三時鐘循環(huán)中,可通過將來自鎖 存器422的絕對地址提供到存儲單元430并經(jīng)由端口 l獲得數(shù)據(jù)來檢索第二指令的數(shù)據(jù)。
在另一實施例中,指定一個端口 (例如,端口 0)提供相對地址的基值,且指定另 一端口 (例如,端口 1)提供數(shù)據(jù)。在此實施例中,可省略多路復(fù)用器428,且存儲單 元430的端口 0可直接耦合到加法器420。交叉開關(guān)可將鎖存器422和多路復(fù)用器424 的輸出耦合到存儲單元430的兩個地址輸入。
兩個讀取端口支持每時鐘循環(huán)一個讀取操作,其中每一讀取操作具有兩個時鐘循環(huán) 的延遲。在圖4所示的實施例中,單個加法器420可在每一時鐘循環(huán)中計算一絕對地址。
10兩個讀取端口可支持同時的地址產(chǎn)生和數(shù)據(jù)檢索。
存儲單元430還可包含兩個寫入端口 (圖4中未展示)以支持以交錯方式針對兩個 存儲器存取^入數(shù)據(jù)。
本文描述的技術(shù)可用—F支持相對尋址的各種類型的處理器。舉例來說,所述技術(shù)可 用于圖形處理器、圖形處理爭元(GPU)、數(shù)字信號處理器(DSP)、精簡指令集計算機 (RISC)、高級RISC機器(ARM)、控制器、微處理器等。下文描述用于圖形處理器的 技術(shù)的示范性用途。
圖5展示支持L個圖形應(yīng)用程序/程序的圖形處理器500的實施例的框圖,其中通 常L2 1。所述L個圖形應(yīng)用程序可用于視頻游戲、圖形等,且可同時運行。圖形處理 器500包含著色器核心502、紋理引擎504和高速緩沖存儲器系統(tǒng)506。術(shù)語"核心"、 "引擎"、"機器"、"處理器"和"處理單元"??苫Q使用。著色器核心502可執(zhí)行例 如著色等圖形操作,著色是涉及照明、陰影等的高度復(fù)雜的操作。紋理引擎504可執(zhí)行 例如紋理映射等圖形操作,紋理映射涉及以紋理表的顏色修改圖像的像素的顏色。高速 緩沖存儲器系統(tǒng)506可包含一個或一個以上高速緩沖存儲器,其是可存儲用于著色器核 心502和紋理引擎504的數(shù)據(jù)和指令的快速存儲器。
在著色器核心502內(nèi),多路復(fù)用器510接收來自L個圖形應(yīng)用程序的線程并將這些 線程提供到線程調(diào)度器/指令解碼器512。線程調(diào)度器512執(zhí)行各種功能以調(diào)度并管理線 程的執(zhí)行。指令高速緩沖存儲器516存儲用于線程的指令。這些指令指示待針對每一線 程執(zhí)行的特定操作,且可從高速緩沖存儲器系統(tǒng)506和/或主存儲器載入。ALU核心520 執(zhí)行算術(shù)運算、邏輯運算、格式轉(zhuǎn)換等。常數(shù)緩沖器522存儲由ALU核心520使用的 常數(shù)值。載入控制單元514控制用于著色器核心502和紋理引擎504內(nèi)的各種單元的數(shù) 據(jù)和指令流。寄存器庫530存儲來自ALU核心520和ALU 544的中間和最終結(jié)果。解 多路復(fù)用器(Demux) 532從寄存器庫530接收所執(zhí)行線程的最終結(jié)果,并將這些結(jié)果 提供到圖形應(yīng)用程序。
在紋理引擎504內(nèi),紋理地址產(chǎn)生器540計算待由紋理引擎504操作的每一像素的 位置。紋理高速緩沖存儲器542存儲用于紋理引擎504的像素。ALU 544對所述像素執(zhí) 行計算并提供中間結(jié)果,中間結(jié)果可被存儲回寄存器庫530中。
圖6展示圖5中的著色器核心502內(nèi)的ALU核心520和寄存器庫530的實施例。 在此實施例中,ALU核心520包含四個標暈ALU 620a、 620b、 620c和620d。每一 ALU 620可從數(shù)據(jù)交叉開關(guān)640接收多達三個輸入運算數(shù),對輸入運算數(shù)執(zhí)行算術(shù)或邏輯運 算,并將結(jié)果提供回到數(shù)據(jù)交叉開關(guān)640。在圖6所示的實施例中,寄存器庫530包含四個寄存器庫630a、630b、630c和630d, 其可如下文所描述存儲圖形數(shù)據(jù)。三個地址產(chǎn)生器610a、 610b和610c接收三個運算數(shù) 的源地址信息并產(chǎn)生這些運算數(shù)的讀取地址。地址產(chǎn)生器610d接收目的地地址信息并 產(chǎn)生結(jié)果的寫入地址。線程調(diào)度器512內(nèi)的指令解碼器可將地址信息提供到每一地址產(chǎn) 生器610。每一地址產(chǎn)生器610可用圖2中的地址產(chǎn)生器200或圖4中的地址產(chǎn)生器400 實施。地址交叉開關(guān)612將所述三個讀取地址和所述寫入地址提供到適當?shù)募拇嫫鲙?30 和常數(shù)緩沖器522。
每一寄存器庫630可從三個地址產(chǎn)生器610a到610c中的一者接收讀取地址并針對 讀取操作,將由讀取地址指示的位置處的數(shù)據(jù)提供到數(shù)據(jù)交叉開關(guān)640。每一寄存器庫 630還可從地址產(chǎn)生器610d接收寫入地址并針對寫入操作,將來自數(shù)據(jù)交叉開關(guān)640的 數(shù)據(jù)存儲在由寫入地址指示的位置處。
在一實施例中,可同時存取(從其讀取和/或向其寫入)所有四個寄存器庫630a到 630d。 一般來說,每一寄存器庫630可包含任何數(shù)目的讀取端口和任何數(shù)目的寫入端口 。 在一實施例中,每一寄存器庫630包含兩個讀取端口和兩個寫入端口。兩個讀取端口允 許以交錯方式針對兩個讀取操作檢索數(shù)據(jù)。兩個寫入端口允許以交錯方式針對兩個寫入 操作寫入數(shù)據(jù)。
數(shù)據(jù)交叉開關(guān)640從寄存器庫630a到630d和常數(shù)緩沖器522接收數(shù)據(jù)并將多達三 個運算數(shù)提供到每一 ALU 620。 一般來說,用于每一 ALU 620的輸入運算數(shù)可來自四個 寄存器庫630a到630d禾卩/或常數(shù)緩沖器522中的任一者。來自每一ALU 620的結(jié)果也 可存儲在四個寄存器庫630a到630d中的任一者中。
寄存器庫530可存儲待由著色器核心502禾n/或紋理引擎504操作的像素的數(shù)據(jù)。2 維(2-D)或3維(3-D)圖像可用多邊形(通常為三角形)來表示。每一三角形可由像 素組成。每一像素可具有例如空間坐標、色值、紋理坐標等各種屬性。每一屬性可具有 多達四個分量。舉例來說,空間坐標可由三個分量x、 y和z或四個分量x、 y、 z和w 給出,其中x和y是水平和垂直坐標,z是深度,且w是齊次坐標。色值可由三個分量 r、 g和b或四個分量r、 g、 b和a給出,其中r是紅、g是綠、b是藍,且a是確定像素 的透明度的透明度因數(shù)。紋理坐標通常由水平坐標和垂直坐標(u和v)給出。像素還 可與其它屬性相關(guān)聯(lián)。
圖7展示在圖6中的寄存器庫630a到630d中存儲像素的圖形數(shù)據(jù)的實施例。在此 實施例中,每 -寄存器庫630存儲空間坐標的不同分量、色值的不同分量,和紋理坐標 的一個分量。明確地說,寄存器庫630a存儲水平(x)空間坐標、紅(r)色值和水平(u)紋理坐標。寄存器庫630b存儲垂直(y)空間坐標、綠(g)色值和垂直(v)紋理坐標。 寄存器庫630c存儲深度(z)空間坐標、藍(b)色值和水平(u)紋理坐標。寄存器庫 630d存儲齊次(w)空間坐標、透明度(a)色值和垂直(v)紋理坐標。此實施例可允 許有效地檢索用于ALU 620a到620d的數(shù)據(jù)以及有效地存儲來自ALU的結(jié)果。 一般來 說,可以任何方式存儲像素的數(shù)據(jù),例如每一寄存器庫可存儲像素的屬性的所有分量。
可向待執(zhí)行的每一線程分配四個寄存器庫630a到630d中的足夠數(shù)冃的寄存器。在 圖7所示的實例中,每一線程包含用于四個像素的數(shù)據(jù),所述像素表示為PO、 Pl、 P2 和P3。對于線程0,四個像素的水平空間坐標(PO.X、 P1.X、 P2.X和P3.X)存儲在寄 存器庫630a的寄存器0中,四個像素的紅色值(PO.R、 P1.R、 P2.R禾PP3.R)存儲在寄 存器庫630a中的寄存器1中,四個像素的水平紋理坐標(PO.uO、 Pl.uO、 P2.u0和P3.uO) 存儲在寄存器庫630a中的寄存器2中,且四個像素的水平紋理坐標(P0.u2、Pl.u2、P2.u2 和P3.u2)存儲在寄存器庫630a的寄存器3中。u0和v0、 ul和vl、 u2和v2以及u3和 W是可用于紋理化的四個紋理映射的紋理坐標。線程0的四個像素的其它分量存儲在寄 存器庫630b、 630c和630d中的寄存器0到3中,如圖7所示。線程l、 2和3的像素 的分量也存儲在四個寄存器庫630a到630d中,如圖7所示。
圖8展示圖6中的數(shù)據(jù)交叉開關(guān)640的實施例。在此實施例中,數(shù)據(jù)交叉開關(guān)640 包含分別用于四個ALU 620a到620d的四個多路復(fù)用器組840a到840d。多路復(fù)用器組 840a包含用于ALU 620a的三個輸入運算數(shù)的三個多路復(fù)用器842a、 842b和842c。每 一多路復(fù)用器842在六個輸入處接收來自四個寄存器庫620a到620d的數(shù)據(jù)、來自常數(shù) 緩沖器522的數(shù)據(jù),和來自ALU 620a的結(jié)果。每一多路復(fù)用器842提供六個輸入中的 一者作為用于ALU 620a的一個輸入運算數(shù)。如圖8所示,每一寄存器庫620可提供用 于ALU 620a的三個輸入運算數(shù)中的任一者。多路復(fù)用器組840b、 840c和840d可每一 者以與多路復(fù)用器組840a相同的方式實施。多路復(fù)用器組840a到840d可接收不同的 控制信號,其可由所執(zhí)行的指令確定。'
一般來說,指令可以是基于向暈或基于像素的,且ALU也可以是基于向量或基于 像素的?;谙蛄渴侵敢淮尾⑿写嫒』蛱幚硪粋€像素的多達四個分量?;谙袼厥侵敢?次并行存取或處理多達四個像素的一個分量。在一實施例中,指令是基于向量的,且 ALU是基于像素的?;谙蛄康闹噶钤试S省略對無效像素的計算。基于像素的ALU允 許僅計算所關(guān)注的分量。舉例來說,為了將兩個空間分暈x與y求和,四個ALU可在 同一時鐘循環(huán)中對四個像素有效地執(zhí)行此計算。基于向量的指令和基于像素的ALU因 此可改進總體性能。圖6到8所示的實施例支持從四個寄存器庫630a到63bd有效地檢索數(shù)據(jù)以及通過 四個ALU 620a到620d對所檢索數(shù)據(jù)進行有效的運算。作為一實例,可將四個像素的兩 個空間分量x與y求和。地址產(chǎn)生器610a和610b可產(chǎn)生用于寄存器庫630a和630b的 讀取地址,且地址產(chǎn)生器610d可產(chǎn)生結(jié)果的寫入地址。在一個讀取循環(huán)中,寄存器庫 630a提供四個像素的x空間分量,且寄存器庫630b提供四個像素的y空間分量。數(shù)據(jù) 交叉開關(guān)640分別將第一、第二、第三和第四像素的x和y分量提供到ALU 620a、 620b、 620c和620d。每-一 ALU 620對一個像素的x和y分量進行運算。數(shù)據(jù)交叉開關(guān)640接 著將來自四個ALU 620a和620d的結(jié)果提供到指定的寄存器庫,所述指定的寄存器庫將 結(jié)果存儲在由地址產(chǎn)生器610d計算的寫入地址處。未由ALU 620存取的寄存器庫可由 圖形處理器500內(nèi)的其它單元(例如,載入控制單元514)存取。
本文描述的技術(shù)可用于無線通信、計算、聯(lián)網(wǎng)、個人電子設(shè)備等。下文描述用于無 線通信的技術(shù)的示范性用途。
圖9展示無線通信系統(tǒng)中的無線裝置900的實施例的框圖。無線裝置900可以是蜂 窩式電話、終端、手持機、個人數(shù)字助理(PDA),或某一其它裝置。無線通信系統(tǒng)可 以是碼分多址(CDMA)系統(tǒng)、全球移動通信系統(tǒng)(GSM)系統(tǒng),或某一其它系統(tǒng)。
無線裝置卯O能夠經(jīng)由接收路徑和傳輸路徑提供雙向通信。在接收路徑上,由基站 傳輸?shù)男盘柋惶炀€912接收且提供到接收器(RCVR) 914。接收器914調(diào)節(jié)并數(shù)字化所 接收信號并將樣本提供到數(shù)字區(qū)段920以供進一步處理。在傳輸路徑上,傳輸器(TMTR) 916接收待從數(shù)字區(qū)段920傳輸?shù)臄?shù)據(jù),處理并調(diào)節(jié)所述數(shù)據(jù),并產(chǎn)生經(jīng)調(diào)制信號,所 述經(jīng)調(diào)制信號經(jīng)由天線912傳輸?shù)交尽?br>
數(shù)字區(qū)段920包含各種處理、接口和存儲器單元,例如調(diào)制解調(diào)器處理器922、視 頻處理器924、控制器/處理器926、顯示器處理器928、 ARM/DSP 932、圖形處理器934、 內(nèi)部存儲器936,和外部總線接口 (EBI) 938。調(diào)制解調(diào)器處理器922對數(shù)據(jù)傳輸和接 收執(zhí)行處理U列如,編碼、調(diào)制、解調(diào)和解碼)。視頻處理器924對用于例如攝像機、 視頻重放和視頻會議等視頻應(yīng)用的視頻內(nèi)容(例如,靜態(tài)圖像、運動視頻和運動文本) 執(zhí)行處理。控制器/處理器926可引導(dǎo)數(shù)字區(qū)段920內(nèi)的各種處理和接口單元的操作。顯 示器處理器928執(zhí)行處理以促進視頻、圖形和文本在顯示器單元930上的顯示。ARM/DSP 932可為無線裝置900執(zhí)行各種類型的處理。圖形處理器934執(zhí)行圖形處理且可如圖5 所示而實施。本文描述的技術(shù)可用于數(shù)字區(qū)段920中的處理器中的任一者,例如圖形處 理器934。內(nèi)部存儲器936存儲用于數(shù)字區(qū)段920內(nèi)各種單元的數(shù)據(jù)和/或指令。EBI 938 促進數(shù)字區(qū)段920 (例如,內(nèi)部存儲器936)與主存儲器940之間的數(shù)據(jù)傳遞。
14數(shù)字區(qū)段920可用一個或一個以上DSP、微處理器、RISC等實施。數(shù)字區(qū)段920 還可制造于一個或一個以上專用集成電路(ASIC)或某一其它類型的集成電路(IC)上。
本文描述的技術(shù)可在各種硬件單元中實施。舉例來說,所述技術(shù)可在ASIC、 DSP、 RISC、 ARM、數(shù)字信號處理裝置(DSPD)、可編程邏輯裝置(PLD)、場可編程門陣列 (FPGA)、處理器、控制器、微控制器、微處理器和其它電子單元中實施。
提供對所揭示的實施例的先前描述以使所屬領(lǐng)域的技術(shù)人員能夠制造或使用本發(fā) 明。所屬領(lǐng)域的技術(shù)人員將容易明白對于這些實施例的各種修改,且本文定義的一般原 理可在不偏離本發(fā)明的精神或范圍的情況下應(yīng)用于其它實施例。因此,不希望本發(fā)明限 于本文展示的實施例,而是本發(fā)明應(yīng)被賦予與本文揭示的原理和新穎特征一致的最廣泛 范圍。
權(quán)利要求
1. 一種處理器,其包括地址產(chǎn)生器,其操作以接收包括基址和偏移的相對地址,獲得所述基址的基值,將所述基值與所述偏移求和,并提供對應(yīng)于所述相對地址的絕對地址;以及存儲單元,其操作以接收所述基址并將所述基值提供到所述地址產(chǎn)生器。
2. 根據(jù)權(quán)利要求1所述的處理器,其中所述地址產(chǎn)生器在存儲器存取的第一時鐘循環(huán) 中導(dǎo)出所述絕對地址,且其中在所述存儲器存取的第二時鐘循環(huán)中在所述絕對地址 處存取所述存儲單元。
3. 根據(jù)權(quán)利要求1所述的處理器,其中所述地址產(chǎn)生器包括加法器,所述加法器操作 以將所述基值與所述偏移求和。
4. 根據(jù)權(quán)利要求3所述的處理器,其中所述地址產(chǎn)生器進一步包括鎖存器,其耦合到所述加法器且操作以存儲所述加法器的輸出并提供所述絕對地址。
5. 根據(jù)權(quán)利要求4所述的處理器,其中所述地址產(chǎn)生器進一步包括多路復(fù)用器,其耦合到所述鎖存器且操作以將來自所述鎖存器的所述絕對地址或 所述基址提供到所述存儲單元。
6. 根據(jù)權(quán)利要求5所述的處理器,其中所述多路復(fù)用器操作以在存儲器存取的第一時 鐘循環(huán)中將所述基址提供到所述存儲單元,并在所述存儲器存取的第二時鐘循環(huán)中 將所述絕對地址提供到所述存儲單元。
7. 根據(jù)權(quán)利要求4所述的處理器,其中所述地址產(chǎn)生器進一步包括第一多路復(fù)用器,其操作以接收源地址信息和目的地地址信息并將所述偏移提供 到所述加法器;以及第二多路復(fù)用器,其操作以接收所述源地址信息和所述鎖存器的輸出,在讀取操 作的第一時鐘循環(huán)中提供來自所述源地址信息的所述基址,并在所述讀取操作的第 二時鐘循環(huán)中提供所述鎖存器的所述輸出。
8. 根據(jù)權(quán)利要求7所述的處理器,其中所述地址產(chǎn)生器進一步包括第三多路復(fù)用器,其操作以接收所述目的地地址信息和所述鎖存器的所述輸出并 為寫入操作提供所述絕對地址。
9. 根據(jù)權(quán)利要求8所述的處理器,其中所述地址產(chǎn)生器進一步包括延遲單元,其操作以接收所述第三多路復(fù)用器的輸出并為所述寫入操作提供寫入 地址。
10. 根據(jù)權(quán)利要求3所述的處理器,其中所述存儲單元包括第一端口和第二端口,且其 中所述地址產(chǎn)生器操作以從所述第一端口或所述第二端口接收所述基值。
11. 根據(jù)權(quán)利要求1所述的處理器,其中所述存儲單元是寄存器庫。
12. 根據(jù)權(quán)利要求1所述的處理器,其中所述存儲單元是隨機存取存儲器(RAM)、同 步RAM (SRAM)或同步動態(tài)RAM (SDRAM)。
13. —種集成電路,其包括地址產(chǎn)生器,其操作以接收包括基址和偏移的相對地址,獲得所述基址的基值, 將所述基值與所述偏移求和,并提供對應(yīng)于所述相對地址的絕對地址;以及 存儲單元,其操作以接收所述基址并將所述基值提供到所述地址產(chǎn)生器。
14. 根據(jù)權(quán)利要求13所述的集成電路,其中所述地址產(chǎn)生器在存儲器存取的第一時鐘 循環(huán)中導(dǎo)出所述絕對地址,且其中在所述存儲器存取的第二時鐘循環(huán)中在所述絕對 地址處存取所述存儲單元。
15. 根據(jù)權(quán)利要求13所述的集成電路,其中所述地址產(chǎn)生器包括加法器,其操作以將所述基值與所述偏移求和,以及鎖存器,其耦合到所述加法器且操作以存儲所述加法器的輸出并提供所述絕對地 址。
16.根據(jù)權(quán)利要求15所述的集成電路,'其中所述地址產(chǎn)生器進一步包括多路復(fù)用器,其耦合到所述鎖存器且操作以在存儲器存取的第一時鐘循環(huán)中將所述基址提供到所述存儲單元,并在所述存儲器存取的第二時鐘循環(huán)中將所述絕對地 址提供到所述存儲單元。
17. —種處理器,其包括多個地址產(chǎn)生器,其操作以接收相對地址并提供絕對地址;以及 多個寄存器庫,其耦合到所述多個地址產(chǎn)生器并操作以接收所述絕對地址且在所 述絕對地址處提供數(shù)據(jù)。
18. 根據(jù)權(quán)利要求17所述的處理器,其中所述多個地址產(chǎn)生器包括至少兩個地址產(chǎn)生器,其操作以提供用于至少兩個運算數(shù)的至少兩個絕對地址, 以及--地址產(chǎn)生器,其操作以提供用于結(jié)果的絕對地址。
19. 根據(jù)權(quán)利要求17所述的處理器,其中所述多個寄存器庫操作以接收基址并提供基 值,且其中所述多個地址產(chǎn)生器操作以將所述相對地址的偏移與所述基值求和以獲 得所述絕對地址。
20. 根據(jù)權(quán)利要求17所述的處理器,其進一步包括交叉開關(guān),其操作以將所述多個地址產(chǎn)生器的輸出耦合到所述多個寄存器庫。
21. 根據(jù)權(quán)利要求17所述的處理器,其進一步包括多個算術(shù)邏輯單元(ALU),其經(jīng)配置以對來自所述多個寄存器庫的所述數(shù)據(jù)進行運算。
22. 根據(jù)權(quán)利要求21所述的處理器,其中所述多個ALU經(jīng)配置以同時對用于多個像素 的數(shù)據(jù)進行運算。
23. 根據(jù)權(quán)利要求21所述的處理器,其進一步包括交叉開關(guān),其操作以將來自所述多個寄存器庫的所述數(shù)據(jù)提供到所述多個ALU。
24. 根據(jù)權(quán)利要求17所述的處理器,其中每一寄存器庫包括至少兩個讀取端口, 一個 讀取端口操作以提供用于一個存儲器存取的基值且另一讀取端口操作以提供用于另一存儲器存取的數(shù)據(jù)。
25.根據(jù)權(quán)利要求17所述的處理器,其中所述多個寄存器庫包括操作以存儲像素的屬 性的四個分量的四個寄存器庫,每一寄存器庫存儲所述四個分量中的一個不同分
26. —種圖形處理器,其包括多個地址產(chǎn)生器,其操作以接收相對地址并提供絕對地址;多個寄存器庫,其耦合到所述多個地址產(chǎn)生器并操作以接收所述絕對地址且在所 述絕對地址處提供圖形數(shù)據(jù);以及多個算術(shù)邏輯單元(ALU),其經(jīng)配置以對來自所述多個寄存器庫的所述圖形數(shù) 據(jù)進行運算。
27.根據(jù)權(quán)利要求26所述的圖形處理器,其中所述多個地址產(chǎn)生器包括至少兩個地址產(chǎn)生器,其操作以提供用于所述多個ALU的至少兩個運算數(shù)的至 少兩個絕對地址,以及--地址產(chǎn)生器,其操作以提供用于來自所述多個ALU的結(jié)果的絕對地址。
28. —種無線裝置,其包括圖形處理器,其包括多個地址產(chǎn)生器和多個寄存器庫,所述多個地址產(chǎn)生器操作 以接收相對地址并提供絕對地址,且所述多個寄存器庫操作以接收所述絕對地址且 在所述絕對地址處提供圖形數(shù)據(jù);以及存儲器,其耦合到所述圖形處理器。
全文摘要
本發(fā)明描述有效地處置相對尋址的技術(shù)。在一種設(shè)計中,處理器包含地址產(chǎn)生器和存儲單元。所述地址產(chǎn)生器接收包括基址和偏移的相對地址,獲得所述基址的基值,將所述基值與所述偏移求和,并提供對應(yīng)于所述相對地址的絕對地址。所述存儲單元接收所述基址并將所述基值提供到所述地址產(chǎn)生器。所述存儲單元還接收所述絕對地址并在此地址處提供數(shù)據(jù)。所述地址產(chǎn)生器可在存儲器存取的第一時鐘循環(huán)中導(dǎo)出所述絕對地址。所述存儲單元可在所述存儲器存取的第二時鐘循環(huán)中提供所述數(shù)據(jù)。所述存儲單元可具有多個(例如,兩個)讀取端口以支持同時的地址產(chǎn)生和數(shù)據(jù)檢索。
文檔編號G06F9/38GK101512499SQ200780031938
公開日2009年8月19日 申請日期2007年8月29日 優(yōu)先權(quán)日2006年8月31日
發(fā)明者春 于, 戈爾夫·焦, 云 杜 申請人:高通股份有限公司