專利名稱:一種自相關(guān)運(yùn)算單元及處理器的制作方法
一種自相關(guān)運(yùn)算單元及處理器
技術(shù)領(lǐng)域:
本發(fā)明涉及集成電路設(shè)計(jì)領(lǐng)域,尤其涉及一種處理器及一種自相關(guān)運(yùn) 算單元。背景技術(shù):
在通信領(lǐng)域,經(jīng)常需要對一序列數(shù)據(jù)元素進(jìn)行各種運(yùn)算,例如自相關(guān)
運(yùn)算,圖1為自相關(guān)操作的原理示意圖。數(shù)據(jù)流100每個(gè)采樣周期沿?cái)?shù)據(jù) 流向移動(dòng)一位,箭頭所指為數(shù)據(jù)流向。數(shù)據(jù)流100包括若干個(gè)數(shù)據(jù)元素101, 102和103分別是最新進(jìn)入和即將移出窗口 A 106的數(shù)據(jù)元素。104和105 分別是最新進(jìn)入和即將移出窗口B 107的數(shù)據(jù)元素。自相關(guān)操作結(jié)果是進(jìn) 入窗口 A中的多個(gè)數(shù)據(jù)元素與對應(yīng)的進(jìn)入窗口 B中的多個(gè)數(shù)據(jù)元素的共軛 值的乘積之和。當(dāng)數(shù)據(jù)元素102和104為同一數(shù)據(jù)時(shí),變?yōu)樽韵嚓P(guān)運(yùn)算的 一種特殊方式,即求數(shù)據(jù)元素的平均功率運(yùn)算?,F(xiàn)有的處理器在處理自相 關(guān)運(yùn)算時(shí)需要每次取兩個(gè)源操作數(shù),然后把乘積執(zhí)行結(jié)果存入存儲器,之 后再于前次自相關(guān)結(jié)果相加/減,因而操作復(fù)雜,還有待改進(jìn)。
發(fā)明內(nèi)容
本發(fā)明要解決的主要技術(shù)問題是,提供一種處理器及一種自相關(guān)運(yùn)算 單元,簡化自相關(guān)運(yùn)算的復(fù)雜程度。
為解決上述技術(shù)問題,本發(fā)明提供一種自相關(guān)運(yùn)算單元,包括相關(guān) 數(shù)處理單元、乘法器、加法器、第二移位寄存器和寄存器,所述相關(guān)數(shù)處 理單元的輸入端用于輸入源操作數(shù)的數(shù)據(jù)元素,所述乘法器的輸入端分別 用于輸入源操作數(shù)的數(shù)據(jù)元素和相關(guān)數(shù)處理單元輸出的結(jié)果,所述乘法器 的輸出端分別連接加法器和第二移位寄存器,所述加法器的輸入端還分別 連接第二移位寄存器的輸出端和寄存器的輸出端,所述加法器的輸出端分 別連接寄存器的輸入端和用于輸出目的操作數(shù)的數(shù)據(jù)元素。
根據(jù)本發(fā)明的另一方面,還提供一種處理器,包括算法數(shù)據(jù)控制部件、 配置寄存器和至少一個(gè)算術(shù)邏輯運(yùn)算單元,所述算術(shù)邏輯運(yùn)算單元至少包 括上述所述的用于執(zhí)行自相關(guān)運(yùn)算的自相關(guān)運(yùn)算單元,所述算法數(shù)據(jù)控制 部件與配置寄存器相連,配置寄存器與自相關(guān)運(yùn)算單元相連,所述算法數(shù)據(jù)控制部件執(zhí)行自相關(guān)操作指令,向所述配置寄存器發(fā)送第一配置信息, 所述自相關(guān)運(yùn)算單元根據(jù)第一配置信息對其自身的功能進(jìn)行配置。
本發(fā)明的有益效果是處理器通過執(zhí)行自相關(guān)操作指令,對自相關(guān)運(yùn) 算單元的功能進(jìn)行配置,按照源操作數(shù)中的數(shù)據(jù)元素的順序?qū)υ床僮鲾?shù)依 次進(jìn)行讀取,并通過自相關(guān)運(yùn)算單元依次將源操作數(shù)中最新讀取的一個(gè)數(shù) 據(jù)元素與第一源操作數(shù)中先前讀取的一個(gè)數(shù)據(jù)元素的共軛值進(jìn)行復(fù)數(shù)相 乘,得到一個(gè)復(fù)數(shù)的或?qū)崝?shù)的乘積結(jié)果;將這一乘積結(jié)果與源操作數(shù)中先
前讀取的一個(gè)數(shù)據(jù)元素所對應(yīng)的乘積結(jié)果相減,并和源操作數(shù)中最新讀取 的一個(gè)數(shù)據(jù)元素的前一個(gè)數(shù)據(jù)元素所對應(yīng)的自相關(guān)結(jié)果相加,得到源操作 數(shù)中最新讀取的一個(gè)數(shù)據(jù)元素所對應(yīng)的目的操作數(shù)的一個(gè)自相關(guān)結(jié)果。并 且依次將目的操作數(shù)的若干個(gè)數(shù)據(jù)元素輸出,從而對自相關(guān)操作指令可只 進(jìn)行一次讀取、譯碼和執(zhí)行,簡化自相關(guān)運(yùn)算的復(fù)雜程度,同時(shí)可以縮小 指令存儲器大小,降低指令譯碼和配置操作的功耗。
圖l為自相關(guān)運(yùn)算的原理圖2A為本發(fā)明一種實(shí)施例的結(jié)構(gòu)圖2B為本發(fā)明另一種實(shí)施例的結(jié)構(gòu)圖3A為本發(fā)明中自相關(guān)運(yùn)算單元的一種實(shí)施例的結(jié)構(gòu)圖; 圖3B為本發(fā)明中自相關(guān)運(yùn)算單元的另一種實(shí)施例的結(jié)構(gòu)圖; 圖3C為本發(fā)明中自相關(guān)運(yùn)算單元的又一種實(shí)施例的結(jié)構(gòu)圖。
具體實(shí)施方式
下面通過具體實(shí)施方式
結(jié)合附圖對本發(fā)明作進(jìn)一步詳細(xì)說明。 以下說明描述在處理裝置、計(jì)算機(jī)或軟件程序中執(zhí)行自相關(guān)或求平均 功率操作的一種技術(shù)的實(shí)施例。在以下描述中,闡述諸如處理器類型、微 體系結(jié)構(gòu)、啟動(dòng)機(jī)制等的大量具體細(xì)節(jié),以提供對本發(fā)明的透徹理解。然 而,本領(lǐng)域的技術(shù)人員會理解,沒有這類具體描述細(xì)節(jié),也可實(shí)施本發(fā)明。 雖然參照數(shù)字信號處理器來描述以下實(shí)施例,但是,其它實(shí)施例適用于其 它類型的集成電路和邏輯裝置。
數(shù)據(jù)的處理如果按照數(shù)據(jù)信號處理的算法特征來進(jìn)行無疑可以提高 處理器的整體性能。例如在寬帶通信領(lǐng)域,系統(tǒng)的基帶處理部分普遍具有 流水線或流處理的結(jié)構(gòu)特征。每個(gè)處理模塊接收若干具有同質(zhì)數(shù)據(jù)元素的 數(shù)據(jù)流,經(jīng)過若干次重復(fù)的操作,生成若干具有同質(zhì)數(shù)據(jù)元素的新的數(shù)據(jù) 流。對于這種具有較高規(guī)律性數(shù)據(jù)的處理,采用較大粒度的執(zhí)行單元對數(shù)據(jù)的快速處理是有利的。例如可以將進(jìn)行上述一次重復(fù)的操作由處理器中 的一個(gè)執(zhí)行單元來處理。由于這個(gè)執(zhí)行單元每次進(jìn)行相同的處理,而存儲 源操作數(shù)的位置和尋址方法是相對固定的,因此每次重復(fù)的操作不需要重 復(fù)讀取和對指令進(jìn)行譯碼。通過在數(shù)據(jù)流處理之前或者開始處理之時(shí)執(zhí)行 一次指令操作(可以通過一條指令或多條指令來完成)完成對執(zhí)行單元的 配置。執(zhí)行單元最好是數(shù)據(jù)驅(qū)動(dòng)的。這樣,執(zhí)行單元每接收一個(gè)數(shù)據(jù)就執(zhí) 行一次操作。可以在指令中指出完成一次任務(wù)需要的接收的數(shù)據(jù)個(gè)數(shù),即 源操作數(shù)包括的數(shù)據(jù)單元的數(shù)目。如果源操作數(shù)中的所有數(shù)據(jù)單元均處理 完畢并完成結(jié)果輸出,執(zhí)行單元立即停止工作,等待下一次配置和任務(wù)。 本發(fā)明的實(shí)施例包括用于實(shí)現(xiàn)自相關(guān)運(yùn)算的單元。圖l為自相關(guān)操作
的原理示意圖。自相關(guān)操作結(jié)果是進(jìn)入窗口 A中的多個(gè)數(shù)據(jù)元素與對應(yīng)的 進(jìn)入窗口 B中的多個(gè)數(shù)據(jù)元素的共軛值的復(fù)數(shù)乘積之和,而前一次操作的 自相關(guān)結(jié)果總是已知的,因此當(dāng)前自相關(guān)操作實(shí)際上是前一次操作的自相 關(guān)結(jié)果加上最新進(jìn)入窗口 A的數(shù)據(jù)元素102與最新進(jìn)入窗口 B的數(shù)據(jù)元素 104的共軛值的復(fù)數(shù)乘積結(jié)果并減去即將移出窗口 A的數(shù)據(jù)元素103和即 將移出窗口 B的數(shù)據(jù)元素105的共軛值的復(fù)數(shù)乘積結(jié)果。根據(jù)數(shù)據(jù)流的流 向,數(shù)據(jù)流首先進(jìn)入窗口A。當(dāng)窗口 B接收到數(shù)據(jù)流的第一個(gè)數(shù)據(jù)元素之 前,可以將窗口B中的數(shù)據(jù)元素理解為零值,因此自相關(guān)值為零。當(dāng)窗口 B接收到數(shù)據(jù)流的第一個(gè)數(shù)據(jù)元素時(shí),自相關(guān)值開始存在實(shí)際意義。而當(dāng) 數(shù)據(jù)流的第一個(gè)數(shù)據(jù)元素成為105時(shí),自相關(guān)結(jié)果開始輸出。因此,當(dāng)數(shù) 據(jù)流的數(shù)據(jù)元素進(jìn)入窗口 A而沒有進(jìn)入窗口 B時(shí),不需要執(zhí)行自相關(guān)運(yùn)算; 當(dāng)?shù)谝粋€(gè)數(shù)據(jù)元素進(jìn)入窗口B時(shí),即開始自相關(guān)運(yùn)算,但保留自相關(guān)結(jié)果, 不向外輸出;當(dāng)?shù)谝粋€(gè)數(shù)據(jù)元素移出窗口B之前,進(jìn)行自相關(guān)操作,保留 并輸出自相關(guān)結(jié)果。之后,數(shù)據(jù)流每移動(dòng)一個(gè)數(shù)據(jù)元素位,輸出一個(gè)自相 關(guān)結(jié)果。直到數(shù)據(jù)流的最后一個(gè)數(shù)據(jù)元素進(jìn)入窗口 A,此時(shí)輸出最后一個(gè) 自相關(guān)結(jié)果。
連續(xù)自相關(guān)操作的源操作數(shù)即是上述的數(shù)據(jù)流,其包括若干個(gè)數(shù)據(jù)元 素。本發(fā)明的實(shí)施例即是用于對具有確定數(shù)據(jù)元素個(gè)數(shù)的源操作數(shù)進(jìn)行自 相關(guān)運(yùn)算。
請參考圖2A,在一種實(shí)施例中,完成自相關(guān)運(yùn)算的處理器200包括算 法數(shù)據(jù)控制部件(簡稱ADU) 203、配置寄存器205和至少一個(gè)算術(shù)邏輯運(yùn) 算單元,算術(shù)邏輯運(yùn)算單元至少包括一個(gè)用于執(zhí)行自相關(guān)運(yùn)算的自相關(guān)遙算單元201,算法數(shù)據(jù)控制部件203與配置寄存器205相連,配置寄存器 205與自相關(guān)運(yùn)算單元201相連,自相關(guān)運(yùn)算單元201還分別與源操作數(shù) 輸入源和目的操作數(shù)輸出源相連,算法數(shù)據(jù)控制部件203執(zhí)行配置指令, 本實(shí)施例中是執(zhí)行自相關(guān)操作指令,向配置寄存器205發(fā)送第一配置信息, 自相關(guān)運(yùn)算單元201根據(jù)第一配置信息對其自身的功能進(jìn)行配置。
在本實(shí)施例中算法數(shù)據(jù)控制部件203包括用于存儲指令或數(shù)據(jù)的存儲 單元204和用于對指令進(jìn)行譯碼的譯碼單元214,在其它實(shí)施例中,算法 數(shù)據(jù)控制部件還可以是包括其它單元。本實(shí)施例中,算法數(shù)據(jù)控制部件所 執(zhí)行的配置指令包括操作碼、配置信息和配置目的,操作碼為規(guī)定指令所 執(zhí)行操作的命令碼,配置信息為指令操作的對象,配置目的用于指定寫入 配置信息的配置寄存器,對于自相關(guān)操作指令,配置信息包括源操作數(shù)的 數(shù)據(jù)元素個(gè)數(shù)、自相關(guān)運(yùn)算的窗口長度和兩個(gè)窗口之間的距離,在其它實(shí) 施例中,配置信息還可以包括其它信息。算法數(shù)據(jù)控制部件203讀取存儲 單元204中的自相關(guān)操作指令,通過譯碼單元214對指令進(jìn)行譯碼,將譯 碼得到的第一配置信息寫入配置寄存器205,自相關(guān)運(yùn)算單元201根據(jù)第 一配置信息來進(jìn)行功能配置,實(shí)現(xiàn)對自相關(guān)操作具體參數(shù)的設(shè)置,如源操 作數(shù)包含的數(shù)據(jù)單元數(shù)目、自相關(guān)運(yùn)算的窗口長度和自相關(guān)運(yùn)算中兩個(gè)窗 口之間的距離。源操作數(shù)的數(shù)據(jù)元素可以直接來自于數(shù)字信號處理器的端 口,也可以來自于數(shù)字信號處理器內(nèi)部的寄存器或者數(shù)據(jù)存儲器,即源操 作數(shù)輸入源可以是處理器的端口、內(nèi)部寄存器或者數(shù)據(jù)存儲器。類似地, 目的操作數(shù)的數(shù)據(jù)元素可以存儲到數(shù)字信號處理器的端口 、內(nèi)部寄存器或 數(shù)據(jù)存儲器中,即目的操作數(shù)輸出源也可以是處理器的端口、內(nèi)部寄存器 或者數(shù)據(jù)存儲器。
處理器對源操作數(shù)執(zhí)行單指令多數(shù)據(jù)輸入多數(shù)據(jù)輸出的自相關(guān)指令, 對自相關(guān)運(yùn)算單元的功能進(jìn)行配置,按照源操作數(shù)中的數(shù)據(jù)元素的順序?qū)?源操作數(shù)依次進(jìn)行讀取和執(zhí)行,并且依次將目的操作數(shù)的若干個(gè)數(shù)據(jù)元素 輸出,從而對自相關(guān)操作指令可只進(jìn)行一次讀取、譯碼和執(zhí)行,簡化自相 關(guān)運(yùn)算的復(fù)雜程度。
請參考圖2B,在另一種實(shí)施例中,完成自相關(guān)運(yùn)算的處理器200與上 述實(shí)施例的主要區(qū)別是還包括互聯(lián)邏輯單元206,配置寄存器205還與互 聯(lián)邏輯單元206相連,算法數(shù)據(jù)控制部件203還執(zhí)行其他配置指令,向配 置寄存器205發(fā)送第二配置信息,互聯(lián)邏輯單元206根據(jù)第二配置信息對
7源操作數(shù)據(jù)的輸入和目的操作數(shù)據(jù)的輸出路徑進(jìn)行配置。
本實(shí)施例中,處理器200包括多個(gè)執(zhí)行數(shù)字信號處理的算術(shù)邏輯運(yùn)算 單元(ALU) 202,對指令進(jìn)行讀取和譯碼、以產(chǎn)生功能和連接關(guān)系的配置 信息的算法數(shù)據(jù)控制部件(ADU) 203,存儲經(jīng)指令譯碼得到的配置和控制 信息的配置寄存器(Config) 205,負(fù)責(zé)對ALU和端口 (Ports)連接關(guān)系、 多個(gè)ALU之間連接關(guān)系和多個(gè)端口之間連接關(guān)系進(jìn)行配置的互連邏輯單元 206,以及負(fù)責(zé)與外部處理器單元間的總線209連接的端口 208。 ALU能完 成的功能,包括但不限于加法、減法、乘法、乘法累加、與、或、異或、 左算術(shù)/邏輯移位、右算術(shù)/邏輯移位、比較、傳送等算術(shù)運(yùn)算和邏輯運(yùn)算。 例如執(zhí)行自相關(guān)運(yùn)算的ALU 201能夠完成較復(fù)雜的運(yùn)算任務(wù),可以經(jīng)過配 置實(shí)現(xiàn)一個(gè)包括多個(gè)數(shù)據(jù)元素的數(shù)據(jù)流的自相關(guān)運(yùn)算處理。互連邏輯單元 206包括用于多個(gè)ALU之間數(shù)據(jù)交換的寄存器(Reg) 207。 211和212分別 為配置ALU功能和配置ALU與端口間連接關(guān)系的控制總線。210是ALU與 互連邏輯單元206間的數(shù)據(jù)總線。213是端口 208與互連邏輯206間的數(shù) 據(jù)總線。
在本實(shí)施例中,自相關(guān)操作的流程是ADU203讀取并譯碼存儲單元 MEM204中的自相關(guān)指令,將譯碼得到的功能和連接關(guān)系的配置信息寫入配 置寄存器205;自相關(guān)ALU201和互連邏輯單元206根據(jù)配置寄存器205中 的信息完成對功能和連接關(guān)系的配置,功能配置實(shí)現(xiàn)了對自相關(guān)操作具體 參數(shù)的設(shè)置,如源操作數(shù)包含的數(shù)據(jù)單元數(shù)目、自相關(guān)運(yùn)算的窗口長度和 自相關(guān)運(yùn)算中兩個(gè)窗口之間的距離,連接關(guān)系配置實(shí)現(xiàn)了對自相關(guān)操作的 源操作數(shù)和目的操作數(shù)的位置進(jìn)行了設(shè)定。源操作數(shù)輸入源可以是處理器 的端口 208、內(nèi)部寄存器207和數(shù)據(jù)存儲器中的至少一個(gè),目的操作數(shù)輸 出源也可以是處理器的端口 208、內(nèi)部寄存器207和數(shù)據(jù)存儲器中的至少 一個(gè),也可以是與源操作數(shù)輸入源不同的端口或者寄存器?;ヂ?lián)邏輯單元 206根據(jù)第二配置信息對輸入和輸出路徑進(jìn)行選擇。例如完成配置后,自 相關(guān)ALU201就可以讀取端口 208或寄存器(Reg) 207中的數(shù)據(jù)開始連續(xù) 的自相關(guān)操作,并將自相關(guān)操作后的結(jié)果輸出到端口 208或寄存器(Reg) 207中。
上述實(shí)施例中,處理器采用數(shù)據(jù)驅(qū)動(dòng)模式,有數(shù)據(jù)就進(jìn)行處理,并輸 出處理結(jié)果存入相應(yīng)的端口或寄存器,沒有則等待;等源操作數(shù)中的數(shù)據(jù) 元素都被處理并且目的操作數(shù)中的數(shù)據(jù)元素都輸出后,停止處理,并等待下次配置。
根據(jù)上述實(shí)施例的用于執(zhí)行自相關(guān)運(yùn)算的自相關(guān)運(yùn)算單元包括相關(guān)數(shù) 處理單元、乘法器、加法器、第二移位寄存器和寄存器。相關(guān)數(shù)處理單元 的輸入端用于輸入源操作數(shù)的數(shù)據(jù)元素,乘法器的輸入端分別用于輸入源 操作數(shù)的數(shù)據(jù)元素和相關(guān)數(shù)處理單元輸出的結(jié)果,乘法器的輸出端分別連 接加法器和第二移位寄存器,加法器的輸入端還分別連接第二移位寄存器 的輸出端和寄存器的輸出端,加法器的輸出端分別連接寄存器的輸入端和 用于輸出目的操作數(shù)的數(shù)據(jù)元素。
相關(guān)數(shù)處理單元用于確定與輸入源操作數(shù)的數(shù)據(jù)元素進(jìn)行相乘的相關(guān)
數(shù),輸入源操作數(shù)的數(shù)據(jù)元素即為進(jìn)入窗口A的第一個(gè)數(shù)據(jù)元素,當(dāng)源操 作數(shù)中的數(shù)據(jù)元素為實(shí)數(shù)時(shí),與輸入源操作數(shù)的數(shù)據(jù)元素進(jìn)行相乘的相關(guān) 數(shù)即為進(jìn)入窗口 B的第一個(gè)數(shù)據(jù)元素。當(dāng)源操作數(shù)中的數(shù)據(jù)元素為復(fù)數(shù)時(shí), 與輸入源操作數(shù)的數(shù)據(jù)元素進(jìn)行相乘的相關(guān)數(shù)即為進(jìn)入窗口 B的第一個(gè)數(shù) 據(jù)元素的共軛值。
下面以源操作數(shù)中的數(shù)據(jù)元素為復(fù)數(shù)為例進(jìn)行說明。 圖3A為根據(jù)上述實(shí)施例的自相關(guān)運(yùn)算單元的一種實(shí)施例的邏輯框圖。 源操作數(shù)中的數(shù)據(jù)元素為復(fù)數(shù),相關(guān)數(shù)處理單元包括第一移位寄存器(即 源操作數(shù)數(shù)據(jù)元素移位寄存器)300和求共軛單元306,源操作數(shù)數(shù)據(jù)元素 移位寄存器300的輸入端用于輸入源操作數(shù)的數(shù)據(jù)元素,其輸出端連接求 共軛單元306的輸入端,求共軛單元306的輸出端連接乘法器,本實(shí)施例 中,乘法器為復(fù)數(shù)乘法器307,加法器為復(fù)數(shù)加法器308,具體包括兩個(gè)復(fù) 數(shù)加法器和一個(gè)復(fù)數(shù)減法器,第二移位寄存器為復(fù)數(shù)乘法結(jié)果移位寄存器 301,寄存器為自相關(guān)結(jié)果寄存器309。輸入源操作數(shù)數(shù)據(jù)元素一路送復(fù)數(shù) 乘法器307, —路送源操作數(shù)數(shù)據(jù)元素移位寄存器300的左側(cè)第一個(gè)寄存 器位303。源操作數(shù)數(shù)據(jù)元素移位寄存器300存儲源操作數(shù)或其中部分?jǐn)?shù) 據(jù)元素,每新接收源操作數(shù)的一個(gè)數(shù)據(jù)元素,源操作數(shù)數(shù)據(jù)元素移位寄存 器300中的數(shù)據(jù)向某個(gè)方向移動(dòng)一位,丟棄一個(gè)先前存儲的源操作數(shù)的數(shù) 據(jù)元素,同時(shí)將新接收的數(shù)據(jù)元素存入源操作數(shù)數(shù)據(jù)元素移位寄存器300 中因移位而產(chǎn)生的空位寄存器單元。移位寄存器300的最后一個(gè)寄存器位 302對應(yīng)于圖1中最新進(jìn)入窗口 B的數(shù)據(jù)元素104。因此移位寄存器300 的有效長度為圖1中分別進(jìn)入兩個(gè)窗口的第一個(gè)數(shù)據(jù)元素之間的距離,也 就是窗口 A和窗口 B之間的距離。將源操作數(shù)移位寄存器中因移位而即將丟棄的一個(gè)源操作數(shù)的數(shù)據(jù)元素(即寄存器中的數(shù)據(jù)元素302)經(jīng)求共軛 單元306,并將其結(jié)果與最新接收的源操作數(shù)的一個(gè)數(shù)據(jù)元素進(jìn)行復(fù)數(shù)乘 法。復(fù)數(shù)乘法器307的輸出結(jié)果一路送復(fù)數(shù)加法器308, 一路送復(fù)數(shù)乘法 結(jié)果移位寄存器301的左側(cè)第一個(gè)寄存器位304。復(fù)數(shù)乘法結(jié)果移位寄存 器301存儲源操作數(shù)的部分?jǐn)?shù)據(jù)元素所對應(yīng)的復(fù)數(shù)乘積結(jié)果,每新產(chǎn)生一 個(gè)復(fù)數(shù)乘積結(jié)果,復(fù)數(shù)乘法結(jié)果移位寄存器301中的數(shù)據(jù)向某個(gè)方向移動(dòng) 一位,丟棄一個(gè)先前存儲的源操作數(shù)的數(shù)據(jù)元素所對應(yīng)的復(fù)數(shù)乘積結(jié)果, 同時(shí)將新產(chǎn)生一個(gè)復(fù)數(shù)乘積結(jié)果存入復(fù)數(shù)乘法結(jié)果移位寄存器301中因移 位而產(chǎn)生的空位寄存器單元;復(fù)數(shù)乘法結(jié)果移位寄存器301的長度即為自 相關(guān)操作的窗口長度,即窗口A或窗口B的長度,窗口A和窗口B的長度 相等,305為最后一個(gè)寄存器位,其存儲值對應(yīng)于圖1中數(shù)據(jù)流數(shù)據(jù)元素 103與105的共軛值的乘積結(jié)果。復(fù)數(shù)加法器308接收三路輸入數(shù)據(jù),分 別為前一次自相關(guān)值、當(dāng)前復(fù)數(shù)乘法器結(jié)果和存儲在寄存器305中的值。 其中輸入的存儲在寄存器305中的值是經(jīng)復(fù)數(shù)加法器308中的減法器做減 法運(yùn)算。復(fù)數(shù)加法器的輸出結(jié)果一路存入相關(guān)值寄存器309, 一路作為目 的操作數(shù)的數(shù)據(jù)元素輸出。相關(guān)值寄存器309存儲源操作數(shù)中最新讀取的 一個(gè)數(shù)據(jù)元素的前一個(gè)數(shù)據(jù)元素所對應(yīng)的自相關(guān)結(jié)果。
兩個(gè)移位寄存器每接收一個(gè)數(shù)據(jù)自動(dòng)向指定方向移動(dòng)一個(gè)寄存器位, 本實(shí)施例中,兩個(gè)移位寄存器每接收一個(gè)數(shù)據(jù)自動(dòng)向右移動(dòng)一個(gè)寄存器位。 在其它實(shí)施例中,也可以定義兩個(gè)移位寄存器每接收一個(gè)數(shù)據(jù)自動(dòng)向左移 動(dòng)一個(gè)寄存器位。
本實(shí)施例的自相關(guān)操作運(yùn)算的過程為將源操作數(shù)中最新讀取的一個(gè) 數(shù)據(jù)元素與源操作數(shù)中先前讀取的一個(gè)數(shù)據(jù)元素的共軛值進(jìn)行復(fù)數(shù)相乘,
得到一個(gè)復(fù)數(shù)的或?qū)崝?shù)的乘積結(jié)果;將這一乘積結(jié)果與源操作數(shù)中先前讀 取的一個(gè)數(shù)據(jù)元素所對應(yīng)的乘積結(jié)果相減,并和源操作數(shù)中最新讀取的一 個(gè)數(shù)據(jù)元素的前一個(gè)數(shù)據(jù)元素所對應(yīng)的自相關(guān)結(jié)果相加,得到源操作數(shù)中 最新讀取的一個(gè)數(shù)據(jù)元素所對應(yīng)的目的操作數(shù)的一個(gè)自相關(guān)結(jié)果。
圖3B為根據(jù)上述實(shí)施例的自相關(guān)運(yùn)算單元的另一種實(shí)施例的邏輯框 圖。源操作數(shù)中的數(shù)據(jù)元素仍然為復(fù)數(shù),與圖3A實(shí)施例不同在于,求共軛 單元306的位置和源操作數(shù)數(shù)據(jù)元素移位寄存器300的更換。第一移位寄 存器為源操作數(shù)數(shù)據(jù)元素共軛值移位寄存器310,輸入源操作數(shù)直接進(jìn)行 求共軛,然后存入源操作數(shù)數(shù)據(jù)元素共軛值移位寄存器310。移位寄存器310的第一個(gè)寄存器位和最后一個(gè)寄存器位分別是311和312。
當(dāng)源操作數(shù)中的數(shù)據(jù)元素為實(shí)數(shù)時(shí),相關(guān)數(shù)處理單元可以不需要求共 軛,所以相關(guān)數(shù)處理單元包括第一移位寄存器,第一移位寄存器的長度與 圖3A和圖3B中的第一移位寄存器的長度相同,第一移位寄存器的輸入端 輸入源操作數(shù)的數(shù)據(jù)元素,其輸出端連接乘法器,將輸入的數(shù)據(jù)元素進(jìn)行 移位后和當(dāng)前輸入的數(shù)據(jù)元素進(jìn)行相乘。相應(yīng)的,乘法器和加法器也分別 為實(shí)數(shù)乘法器和實(shí)數(shù)加法器。
對于上述實(shí)施例中的移位寄存器,其有效長度由指令譯碼得到的功能 配置信息來確定。也就是說,自相關(guān)運(yùn)算單元包括兩個(gè)相對較長的移位寄 存器,而在實(shí)際進(jìn)行自相關(guān)操作時(shí),根據(jù)功能配置信息分別確定源操作數(shù) 數(shù)據(jù)元素移位寄存器300 (或源操作數(shù)數(shù)據(jù)元素共軛值移位寄存器310)和 復(fù)數(shù)乘法結(jié)果移位寄存器301的有效長度。如前面所述移位寄存器300 (或 310)的有效長度為自相關(guān)運(yùn)算的兩個(gè)窗口之間的距離,即圖1中分別進(jìn)入 兩個(gè)窗口的第一個(gè)數(shù)據(jù)元素之間的距離,移位寄存器301的長度即為自相 關(guān)操作的窗口長度。
當(dāng)移位寄存器300 (或310)的有效長度為零時(shí),表明兩個(gè)窗口重疊, 相應(yīng)操作也從自相關(guān)操作變?yōu)榍蠊β什僮鳌?br>
圖3C為求平均功率操作的算術(shù)邏輯單元的邏輯框圖。當(dāng)源操作數(shù)數(shù)據(jù) 元素移位寄存器300或源操作數(shù)數(shù)據(jù)元素共軛值移位寄存器310的有效長 度為零時(shí),自相關(guān)運(yùn)算單元可以用來求一定數(shù)目的數(shù)據(jù)元素的平均功率, 假設(shè)是求窗口 A中的數(shù)據(jù)元素的平均功率,每個(gè)元素的功率實(shí)際指其絕對 值的平方,因此算法是對窗口A中的每個(gè)元素求絕對值的平方(可以通過 數(shù)據(jù)本身和它的共軛值相乘而得到),然后根據(jù)窗口中的元素個(gè)數(shù)求平均 值)。當(dāng)求一定數(shù)目的數(shù)據(jù)元素的平均功率,在上述實(shí)施例的基礎(chǔ)上需要添 加求平均邏輯單元313。另外,求共軛單元306直接對源操作數(shù)最新讀取 的一個(gè)數(shù)據(jù)元素求共軛值,復(fù)數(shù)乘法器307將源操作數(shù)最新讀取的一個(gè)數(shù) 據(jù)元素及其共軛值進(jìn)行復(fù)數(shù)乘法操作,得出一個(gè)實(shí)數(shù)值;復(fù)數(shù)乘法結(jié)果移 位寄存器301存儲源操作數(shù)的部分?jǐn)?shù)據(jù)元素所對應(yīng)的實(shí)數(shù)乘積結(jié)果,每新 產(chǎn)生一個(gè)實(shí)數(shù)乘積結(jié)果,復(fù)數(shù)乘法結(jié)果移位寄存器中的數(shù)據(jù)向某個(gè)方向移 動(dòng)一位,丟棄一個(gè)先前存儲的源操作數(shù)的數(shù)據(jù)元素所對應(yīng)的實(shí)數(shù)乘積結(jié)果, 同時(shí)將新產(chǎn)生一個(gè)實(shí)數(shù)乘積結(jié)果存入復(fù)數(shù)乘法結(jié)果移位寄存器中因移位而 產(chǎn)生的空位寄存器單元。相關(guān)值寄存器309改為了功率值寄存器314,功
ii率值寄存器314存儲源操作數(shù)中最新讀取的一個(gè)數(shù)據(jù)元素的前一個(gè)數(shù)據(jù)元 素所對應(yīng)的功率之和。復(fù)數(shù)加法器309改為了實(shí)數(shù)加法器315。實(shí)數(shù)加法 器315將新產(chǎn)生的一個(gè)實(shí)數(shù)乘法結(jié)果與復(fù)數(shù)乘法結(jié)果移位寄存器中因移位 而即將丟棄的一個(gè)實(shí)數(shù)乘積結(jié)果進(jìn)行減法操作,并與功率值寄存器中存儲 的前一個(gè)數(shù)據(jù)元素所對應(yīng)的功率值結(jié)果進(jìn)行加法操作,得到源操作數(shù)最新 讀取的一個(gè)數(shù)據(jù)元素所對應(yīng)的功率之和。求平均邏輯單元313對實(shí)數(shù)加法 器求出的功率之和求平均,得到源操作數(shù)的部分?jǐn)?shù)據(jù)元素的平均功率。由 于實(shí)數(shù)加法器315輸出為多個(gè)數(shù)據(jù)元素的功率之和,因此求平均邏輯單元 313的功能是求出一定窗口長度內(nèi)的數(shù)據(jù)元素的平均功率。最簡單的做法 是通過向右移位來實(shí)現(xiàn)。
本實(shí)施例的操作過程是將源操作數(shù)中最新讀取的一個(gè)數(shù)據(jù)元素與源 操作數(shù)中最新讀取的一個(gè)數(shù)據(jù)元素的共軛值進(jìn)行復(fù)數(shù)相乘,得到一個(gè)實(shí)數(shù) 的乘積結(jié)果;將這一乘積結(jié)果與源操作數(shù)中先前讀取的一個(gè)數(shù)據(jù)元素所對 應(yīng)的乘積結(jié)果相減,并和源操作數(shù)中最新讀取的一個(gè)數(shù)據(jù)元素的前一個(gè)數(shù) 據(jù)元素所對應(yīng)的功率之和相加,并求平均,得到源操作數(shù)中最新讀取的一 個(gè)數(shù)據(jù)元素所對應(yīng)的目的操作數(shù)的一個(gè)平均功率。
本發(fā)明的相同技術(shù)和理論可容易地應(yīng)用到可獲益于較高流水線吞吐量 和改進(jìn)性能的其它類型的電路或半導(dǎo)體裝置。本發(fā)明的理論適用于執(zhí)行數(shù) 據(jù)操作的任何處理器和機(jī)器。但是,本發(fā)明不限于執(zhí)行64位、32位或16 位數(shù)據(jù)操作的處理器或機(jī)器。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種已在其中存儲了指令的機(jī)器可讀 介質(zhì),所述指令在由機(jī)器執(zhí)行時(shí),使所述機(jī)器執(zhí)行包括以下步驟的方法-連續(xù)讀取具有多個(gè)復(fù)數(shù)或?qū)崝?shù)特性數(shù)據(jù)值的源操作數(shù)的數(shù)據(jù)元素;確定源 操作數(shù)中新讀取的多個(gè)數(shù)據(jù)元素與源操作數(shù)中先前或者新讀取的多個(gè)數(shù)據(jù) 元素之間的相關(guān)結(jié)果;存儲所述相關(guān)結(jié)果,即連續(xù)存儲多個(gè)具有復(fù)數(shù)特性 或?qū)崝?shù)特性數(shù)據(jù)值的目的操作數(shù)的數(shù)據(jù)元素。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說 明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對于本發(fā)明所屬技術(shù) 領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若 干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。
權(quán)利要求
1. 一種自相關(guān)運(yùn)算單元,其特征在于包括相關(guān)數(shù)處理單元、乘法器、加法器、第二移位寄存器和寄存器,所述相關(guān)數(shù)處理單元的輸入端用于輸入源操作數(shù)的數(shù)據(jù)元素,所述乘法器的輸入端分別用于輸入源操作數(shù)的數(shù)據(jù)元素和相關(guān)數(shù)處理單元輸出的結(jié)果,所述乘法器的輸出端分別連接加法器和第二移位寄存器,所述加法器的輸入端還分別連接第二移位寄存器的輸出端和寄存器的輸出端,所述加法器的輸出端分別連接寄存器的輸入端和用于輸出目的操作數(shù)的數(shù)據(jù)元素。
2. 如權(quán)利要求1所述的自相關(guān)運(yùn)算單元,其特征在于所述相關(guān)數(shù) 處理單元包括第一移位寄存器和求共軛單元,所述第一移位寄存器的輸入 端用于輸入源操作數(shù)的數(shù)據(jù)元素,其輸出端連接求共軛單元的輸入端,所 述求共軛單元的輸出端連接乘法器;或者所述共軛單元的輸入端用于輸入 源操作數(shù)的數(shù)據(jù)元素,其輸出端連接第一移位寄存器的輸入端,所述第一 移位寄存器的輸出端連接乘法器。
3. 如權(quán)利要求1所述的自相關(guān)運(yùn)算單元,其特征在于所述相關(guān)數(shù) 處理單元包括第一移位寄存器,所述第一移位寄存器的輸入端用于輸入源 操作數(shù)的數(shù)據(jù)元素,其輸出端連接乘法器。
4. 如權(quán)利要求2或3所述的自相關(guān)運(yùn)算單元,其特征在于所述第 一移位寄存器的長度為自相關(guān)運(yùn)算的兩個(gè)窗口之間的距離,所述第二移 位寄存器的長度為自相關(guān)運(yùn)算的窗口長度。
5. 如權(quán)利要求4所述的自相關(guān)運(yùn)算單元,其特征在于所述第一移 位寄存器和第二移位寄存器每接收一個(gè)數(shù)據(jù)自動(dòng)向指定方向移動(dòng)一個(gè)寄 存器位。
6. 如權(quán)利要求2或3所述的自相關(guān)運(yùn)算單元,其特征在于所述第 一移位寄存器的長度為0,所述自相關(guān)運(yùn)算單元還包括求平均邏輯單元, 所述求平均邏輯單元的輸入端連接加法器的輸出端,輸出端用于輸出目的 操作數(shù)數(shù)據(jù)元素。
7. —種處理器,包括算法數(shù)據(jù)控制部件,其特征在于還包括配置 寄存器和至少一個(gè)算術(shù)邏輯運(yùn)算單元,所述算術(shù)邏輯運(yùn)算單元至少包括一 個(gè)如權(quán)利要求1至6中任一項(xiàng)所述的用于執(zhí)行自相關(guān)運(yùn)算的自相關(guān)運(yùn)算單 元,所述算法數(shù)據(jù)控制部件與配置寄存器相連,配置寄存器與自相關(guān)運(yùn)算單元相連,所述算法數(shù)據(jù)控制部件執(zhí)行自相關(guān)操作指令,向所述配置寄存 器發(fā)送第一配置信息,所述自相關(guān)運(yùn)算單元根據(jù)第一配置信息對其自身的 功能進(jìn)行配置。
8. 如權(quán)利要求7所述的處理器,其特征在于所述第一配置信息包 括源操作數(shù)的數(shù)據(jù)元素個(gè)數(shù)、自相關(guān)運(yùn)算的窗口長度和兩個(gè)窗口之間的距 離。
9. 如權(quán)利要求7或8所述的處理器,其特征在于還包括互聯(lián)邏輯單元,所述配置寄存器還與互聯(lián)邏輯單元相連,所述算法數(shù)據(jù)控制部件還 執(zhí)行配置指令,向所述配置寄存器發(fā)送第二配置信息,所述互聯(lián)邏輯單元 根據(jù)第二配置信息對源操作數(shù)據(jù)的輸入和目的操作數(shù)據(jù)的輸出路徑進(jìn)行 配置。
10. 如權(quán)利要求7所述的處理器,其特征在于所述算法數(shù)據(jù)控制部件包括用于存儲指令或數(shù)據(jù)的存儲單元和用于對指令進(jìn)行譯碼的譯碼單元。
全文摘要
本發(fā)明公開了一種自相關(guān)運(yùn)算單元和處理器,自相關(guān)運(yùn)算單元包括相關(guān)數(shù)處理單元、乘法器、加法器、第二移位寄存器和寄存器,處理器通過執(zhí)行自相關(guān)操作指令,對自相關(guān)運(yùn)算單元的功能進(jìn)行配置,按照源操作數(shù)中的數(shù)據(jù)元素的順序?qū)υ床僮鲾?shù)依次進(jìn)行讀取和執(zhí)行自相關(guān)運(yùn)算,并且依次將目的操作數(shù)的若干個(gè)數(shù)據(jù)元素輸出,從而對自相關(guān)操作指令可只進(jìn)行一次讀取、譯碼和執(zhí)行,簡化自相關(guān)運(yùn)算的復(fù)雜程度。
文檔編號G06F9/38GK101477456SQ200910105058
公開日2009年7月8日 申請日期2009年1月14日 優(yōu)先權(quán)日2009年1月14日
發(fā)明者倪學(xué)文, 劉雪嬌, 焦玉中, 王新安 申請人:北京大學(xué)深圳研究生院