專利名稱:用于利用多個計算機處理器進行卷積計算的系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總的來說涉及用于算術(shù)處理和計算的電子計算機,更具體地說, 涉及以數(shù)字方式評估巻積積分的電子計算機。
背景技術(shù):
許多已有的和正在出現(xiàn)的系統(tǒng)可以使用現(xiàn)代信號處理器來分析,所述現(xiàn) 代信號處理器被基于描述底層系統(tǒng)的數(shù)學(xué)進行了適當(dāng)?shù)鼐幊?。例如,今天這 樣的分析越來越有助于分析諸如電子線路、光學(xué)設(shè)備、機械機構(gòu)和許多其他 系統(tǒng)的線性時不變系統(tǒng)。
在數(shù)學(xué)和許多廣泛使用數(shù)學(xué)的領(lǐng)域中,例如在今天的科學(xué)和工程學(xué)的大 多數(shù)分支中,術(shù)語"變換(transform)"用來指代一類等式分析(equation analysis)技術(shù)。變換的概念追溯到數(shù)學(xué)的函數(shù)分析分支,該分支主要進行 對函數(shù)空間的研究,在該空間中,特定的函數(shù)將另一函數(shù)作為其自變量。這 樣就可以以單個或整個等式組等式來使用變換,其中變換過程是從在一個域 內(nèi)表示的一個以上原始等式到在分離的域內(nèi)表示的另夕l、一個以上等式的一 對一映射。
進行變換的動機通常很直接。有許多以其原始表達(dá)式很難求解的等式, 但是以一個以上其他表達(dá)式可以更容易地求解。這樣,可以進行變換,找到 解,然后進行反變換來將該解映射回原始的域。積分變換的一般形式被定義 為
(1 )洲=_[/(,)雖,,其中K ( a,t)通常稱為變換的"積分核"。
拉普拉斯變換是由等式(1)所定義的一類變換的子集,并且通常尤其 有用。給定對系統(tǒng)輸入或輸出的簡單的數(shù)學(xué)或函數(shù)描述,拉普拉斯變換可以 提供可能會簡化系統(tǒng)行為分析的作為替換的函數(shù)描述。拉普拉斯變換的 一般
形式被定義為
0
其中積分限和積分核是從等式(1 )重新定義為a= O,b被w替換,并且K(oc,t) =e—st。只有在s足夠大并且滿足特定條件時,才能對f (t)進行拉普拉斯變 換,但是這些條件通常足夠靈活以便允許f (t)采取實踐中所發(fā)現(xiàn)的幾乎所 有函數(shù)的函數(shù)形式。
通常發(fā)生的是,特定的函數(shù),例如F (s)不是單個已知函數(shù)的變換, 但是可以被表示為兩個函數(shù)的積,這兩個函數(shù)中的各函數(shù)分別為已知函數(shù)f (t)或g (t)的變換結(jié)果。即
(3) ,=》"W,
其中g(shù) (t)必須滿足同f (t)相同的條件。根據(jù)F (s) 、 f(t)和g(t)之 間的這種聯(lián)系,以下關(guān)系成立
(4) ns) =
0
這通常稱為"巻積定理"。
可以觀察到,巻積定理的結(jié)果是只對一個變量進行積分變換。因這樣就 可以應(yīng)用只對一個變量進行積分的數(shù)值逼近技術(shù)。
積分表達(dá)式與黎曼和表達(dá)式之間,以下等號成立
(5 ) j/(")g(# = limt/(c")g")Ar
其中各ct,k和Ck均是在第k子區(qū)間任意地選擇出的。在實踐中,等式(5) 的等號右手側(cè)是通過使用非常小的A t ,并意識到存在若干階的誤差項來逼近的,所述誤差項取決于所選^r的數(shù)值技術(shù)和A T的值。這樣
其中m是準(zhǔn)度的階數(shù),其可以由總和(以及可以期望的精度的位數(shù))來表 示,O是傳統(tǒng)數(shù)學(xué)場合中的大寫O符號。
如同以上順便暗示的,變換在重要的應(yīng)用中存在已有的或潛在的使用, 其可以受益于巻積的使用。例如, 一個這樣的應(yīng)用是將巻積與數(shù)字信號處理 (DSP)中進行的數(shù)字濾波一起使用。
任何可以被表達(dá)為數(shù)學(xué)函數(shù)的濾波都可以通過使用數(shù)字濾波器來實現(xiàn), 這是現(xiàn)代DSP實踐的絕對基礎(chǔ)之一。例如,對從信號采樣的數(shù)據(jù)值進行數(shù) 字濾波允許移除信號的有害部分或者提取信號的有用部分。有限脈沖響應(yīng) (FIR)和無限脈沖響應(yīng)(IIR)是今天的DSP應(yīng)用中所用到的數(shù)字濾波器 兩種主要類型,更常用的是FIR濾波器。
通常認(rèn)為使用FIR濾波器更有優(yōu)勢,因為該濾波器不需要內(nèi)部反饋,所 述內(nèi)部反饋可以例如導(dǎo)致IIR濾波器對脈沖的無限響應(yīng)。"有限,,這個詞本 身也暗示了 FIR濾波器的另一優(yōu)勢。來自這種濾波器的脈沖最終歸于零,并 且在所使用的迭代和計算中的誤差不會傳播。也就是說,誤差項在整個計算 過程中保持恒定。這是區(qū)別于IIR濾波器的優(yōu)勢,例如,在IIR濾波器中, 針對各附加迭代輸出和,誤差可能增長。
不幸的是,對于很多應(yīng)用來說,數(shù)字濾波器的主要局限性在于其速度受 到用于進行數(shù)值計算的一個以上處理器的速度的約束。例如,如果需要高濾 波速度,這可能使得實施數(shù)字濾波器所需的硬件非常昂貴或者簡直無法獲 得。對于幾乎所用應(yīng)用,并且對于大多數(shù)基于電子技術(shù)的系統(tǒng)也通常成立, 所采用的速度越高,就越難于處理并發(fā)效應(yīng)(coincidental effect),例如難 以抑制電磁噪聲和散熱。
因此,改進我們用來進行數(shù)值巻積計算的系統(tǒng)將允許我們以更高的速 度、更加經(jīng)濟地進行當(dāng)前的和正在出現(xiàn)的與信號處理有關(guān)的任務(wù),并且降低底層系統(tǒng)和外圍系統(tǒng)中的有害效應(yīng)。
發(fā)明內(nèi)容
相應(yīng)地,本發(fā)明的目的在于提供利用多個計算機處理器進行巻積計算的 系統(tǒng)。
簡言之,本發(fā)明的一個優(yōu)選實施例是一種用于對數(shù)據(jù)函數(shù)與濾波器函數(shù) 的巻積進行計算的系統(tǒng)。提供處理器陣列,其包括第 一 處理器和最末處理器, 所述各處理器均包括用于對系數(shù)值和數(shù)據(jù)值進行乘法以產(chǎn)生當(dāng)前中間值的 邏輯,所述系數(shù)值基于所述濾波器函數(shù)的導(dǎo)數(shù),所述數(shù)據(jù)值表示所述數(shù)據(jù)函 數(shù)。在除了第一處理器的處理器中,提供用于接收在先中間值并且將所述在 先中間值加到所述當(dāng)前中間值的邏輯,所述在先中間值表示在另 一所述處理 器中先前進行的計算。在除了最末處理器的處理器中,提供向另一所述處理 器發(fā)送所述數(shù)據(jù)值和所述當(dāng)前中間值的邏輯。進一步提供保持來自所述最末 處理器的在先中間值,如果有的話,作為在先部分值并且將所述在先部分值 加到來自所述最末處理器的所述當(dāng)前中間值以產(chǎn)生結(jié)果值的邏輯。這樣,所 述處理器陣列接收一連串所述數(shù)據(jù)值,并且產(chǎn)生一連串所述結(jié)果值,所述結(jié) 果值共同地表示所述數(shù)據(jù)函數(shù)與所述濾波器函數(shù)的巻積。
筒言之,本發(fā)明的另 一 優(yōu)選實施例是 一 種用于計算數(shù)據(jù)函數(shù)與濾波器函
數(shù)的巻積結(jié)果值的方法。獲得以該濾波器函數(shù)的導(dǎo)數(shù)為基礎(chǔ)的系數(shù)值的序
列。對于表示所述數(shù)據(jù)函數(shù)的數(shù)據(jù)值在包括第一和最末所述處理器的計算 機化處理器的流水線中使用所述系數(shù)值,以便將所述系數(shù)值之一與所述數(shù)據(jù) 值相乘以產(chǎn)生當(dāng)前中間值。除了在所述第一處理器中,將一在先中間值加到 所述當(dāng)前中間值,所述在先中間值表示在另一所述處理器中先前進行的計 算。除了在所述最末處理器中,將所述數(shù)據(jù)值和所述當(dāng)前中間值發(fā)送到后續(xù) 的所述處理器中。將在先部分值,如果有的話,加到來自所述最末處理器的 所述當(dāng)前中間值以產(chǎn)生結(jié)果值,其中在先部分值是來自所述最末處理器的先 前中間值。并且將所述結(jié)果值輸出到采用該方法的數(shù)字信號處理器。簡言之,本發(fā)明的又一優(yōu)選實施例是一種用于計算數(shù)據(jù)函數(shù)與濾波器函 數(shù)的巻積的方法。獲得以該濾波器函數(shù)的導(dǎo)數(shù)為基礎(chǔ)的系數(shù)值的序列,并獲 得表示該數(shù)據(jù)函數(shù)的數(shù)據(jù)值的序列。針對各所述數(shù)據(jù)值,對各所述系數(shù)值, 在包括第 一和最末所述處理器的計算機化的處理器的流水線中,將所述系數(shù) 值與所述數(shù)據(jù)值相乘以產(chǎn)生當(dāng)前中間值。除了在所述第一處理器中,將一在 先中間值加到所述當(dāng)前中間值,所述在先中間值表示在另 一所述處理器中先 前進行的計算。除了在所述最末處理器中,將所述數(shù)據(jù)值和所述當(dāng)前中間值 發(fā)送到后續(xù)處理器中。將在先部分值,如果有的話,加到來自最末處理器的 當(dāng)前中間值以產(chǎn)生結(jié)果值,其中所述在先部分值是來自所述最末處理器的先 前中間值。累加所述結(jié)果值作為巻積,并且將所述巻積輸出到采用該方法的 數(shù)字信號處理器。
簡言之,本發(fā)明的再一優(yōu)選實施例是一種用于計算巻積的改進系統(tǒng),其 中至少 一個處理器將表示濾波器函數(shù)的系數(shù)值與表示數(shù)據(jù)函數(shù)的數(shù)據(jù)值相 乘,所述改進包括采用以所述濾波器函數(shù)的導(dǎo)數(shù)為基礎(chǔ)的系數(shù)值。
簡言之,本發(fā)明的又一優(yōu)選實施例是一種用于在計算機化的處理器中計 算巻積的改進方法,其中系數(shù)值表示濾波器函數(shù),數(shù)據(jù)值表示數(shù)據(jù)函數(shù),系 數(shù)值與數(shù)據(jù)值相乘產(chǎn)生共同表示巻積的結(jié)果值。所述改進包括采用以所述濾 波器函數(shù)的導(dǎo)數(shù)為基礎(chǔ)的系數(shù)值。
考慮到對當(dāng)前已知的實現(xiàn)本發(fā)明的最優(yōu)模式的描述和此處描述的以及 附圖所圖示的優(yōu)選實施例的工業(yè)適用性,本發(fā)明的這些和其他目標(biāo)和優(yōu)點將 對于本領(lǐng)域技術(shù)人員變得清晰。
本發(fā)明的目的和優(yōu)勢將從以下結(jié)合附圖的詳細(xì)描述中變得顯而易見,在
附圖中
圖1是描繪在計算機處理器陣列中采用的創(chuàng)造性巻積系統(tǒng)的示意圖; 圖2(背景技術(shù))是圖1中的處理器之一的主要內(nèi)部特征的示意圖,特別是此處許多例子中所使用的SEAforth-24A處理器的核心,該處理器由加 利福尼亞州庫珀蒂諾的IntellaSys公司生產(chǎn);
圖3a-c是圖1的局部視圖,描繪使用圖1的處理器進行的向內(nèi) (inbound)、向外(outbound)和內(nèi)部通信,其中圖3a示出凄t據(jù)如何在輸 入設(shè)備和第一處理器間,以及第一處理器和第二處理器間傳遞,圖3b示出 數(shù)據(jù)如何在第二到最末處理器和最末處理器間,以及在最末處理器和輸出設(shè) 備間傳遞,圖3c示出數(shù)據(jù)如何在處于該陣列中心的正在被使用的兩個示例 性處理器間傳遞;
圖4a-f是示意性地描繪在諸如圖1的處理器陣列中的巻積計算階段的 方框圖5a-f是示意性地描繪基于新算法的巻積計算階段的方框圖,再次在 諸如圖l的處理器陣列中給出。
圖6a - c是描繪使用圖4a - f和5a - f給出的方法進行的春積的曲線圖, 其中圖6a示出表示使用傳統(tǒng)巻積系數(shù)的第一跡線和表示使用導(dǎo)數(shù)巻積系數(shù) 的第二跡線,圖6b示出表示被進行巻積的輸入數(shù)據(jù)的第一跡線和表示使用 導(dǎo)數(shù)信號數(shù)據(jù)的第二跡線,圖6c示出表示所討論的方法的結(jié)果的單條跡線。
圖7是適合于在直接濾波器中使用的代碼清單;并且
圖8a-b是適合于在導(dǎo)數(shù)濾波器中使用的代碼清單,其中圖8a示出進 行在概念上類似于圖7的功能的代碼,圖8b示出有基于導(dǎo)數(shù)的算法使用的 附加代碼。
在多幅附圖中,使用相同的附圖標(biāo)記來代表相同或相似的元件或步驟。
具體實施例方式
本發(fā)明的優(yōu)選實施例是用于以多個計算機處理器進行巻積計算的系統(tǒng)。 如此處的不同附圖所示,特別是在圖1的視圖中,本發(fā)明的優(yōu)選實施例由一 般的附圖標(biāo)記10示出。
簡而言之,本發(fā)明是用于對濾波器函數(shù)與數(shù)據(jù)函數(shù)的巻積的解進行數(shù)值逼近的改進巻積系統(tǒng)10。使用數(shù)值技術(shù)進行巻積計算本身趨向于包括大量 的乘法和加法操作。本發(fā)明以兩種特別的方式允許顯著地減少進行這些計算 所需的整體時間。首先,本發(fā)明允許并行地而不是串行地完成大部分必需的 計算。其次,本發(fā)明允許采用新的算法種類,其使用可以以更少的數(shù)據(jù)位來 表達(dá)的濾波值和數(shù)據(jù)值,從而可以在考慮到處理器中的固有局限性的情況下 更快地進行。
圖1是描繪計算機處理器14的陣列12所采用的創(chuàng)造性巻積系統(tǒng)10的 示意圖。為了集中在巻積系統(tǒng)IO本身,支持該陣列12的外部元件被省略或 者大概地表示。然而,本領(lǐng)域技術(shù)人員將認(rèn)知,這些元件存在于實際的操作 實施例中,并且這些元件通常在本質(zhì)上可以是傳統(tǒng)的。例如,圖l省略了所 有與向陣列12供電有關(guān)的細(xì)節(jié),并且包括外部輸入設(shè)備16、輸入總線18、 輸出總線20和外部輸出設(shè)備22的大概形式。為了簡化介紹, 一般的計算初 始化和終結(jié)事項也不在最初討論,并且程序指令和巻積系數(shù)值被認(rèn)為已經(jīng)載 入處理器14。這里的輸入設(shè)備16被認(rèn)為僅僅關(guān)于提供要進行巻積的輸入數(shù) 據(jù)值,這里的輸出設(shè)備22被認(rèn)為僅僅關(guān)于接收已經(jīng)進行過巻積的輸出數(shù)據(jù) 值。
圖1還在形式上示出開始于輸入設(shè)備16并結(jié)束于輸出設(shè)備22的流徑 (flowpath)24。然而,應(yīng)該認(rèn)知,無疑也可能存在除此之外的其他布置。 例如,還可能存在其他開始位置和結(jié)束位置,還可能存在除了所描繪的流徑 24以外的不同路徑(甚至在作為替換的實施例中更加可能),并且作為替 換也可以采用單個組合式I/O設(shè)備(未示出),例如, 一個具有與陣列12 通信的輸入和輸出信道的設(shè)備。
對于巻積系統(tǒng)10,發(fā)明人當(dāng)前優(yōu)選在單個半導(dǎo)體電路小片(die)中擁 有處理器14的陣列12的硬件平臺,例如加利福尼亞州庫珀蒂諾的IntellaSys 公司的SEAforth - 24A或SEAforth - 40A 。這里在大多數(shù)示例中使用 SEAforth - 24A(這些例子中的處理器14可以恰當(dāng)?shù)乇环Q為"核"或"節(jié)點")。 為了進一步便于討論,處理器14集合的成員分別稱為處理器14a-x,如圖所示,各處理器14a-x均具有允許與所存在的其他處理器14相互通信的總線 28。
雖然圖1所示的各處理器14具有將其互連到其所有相鄰處理器14的總 線28,但是從流徑24的路線可以看出,并非所有的總線28都必然要使用。 實際上,此處示出的巻積系統(tǒng)10的實施例也可以作為替換地在串行通信的 處理器的一維陣列中實現(xiàn)(我們稱之為處理器的"流水線")。
圖2 (背景技術(shù))是圖1中處理器14之一,即SEAforth-24A處理器 核的主要內(nèi)部特征的示意圖。各處理器14a-x通常是獨立運行的計算機, 包括算術(shù)邏輯單元(ALU 30)、若干只讀存儲器(ROM 32)、若干隨機訪 問存儲器(RAM 34)、指令解碼邏輯段36、指令區(qū)38、數(shù)據(jù)堆棧40和返 回堆棧42。還包括18位的"A"寄存器(A-寄存器44) , 9位的"B"寄 存器(B-寄存器46) 、 9位的程序計數(shù)器寄存器(P-寄存器48)和18位 的1/0控制和狀態(tài)寄存器(IOCS-寄存器50)。進一步包括四個通信端口 (統(tǒng)稱為端口 52,分別是端口 52a-d)。除了邊緣節(jié)點和角落節(jié)點的情況 之外,各端口 52與相應(yīng)的總線28相連(具有18條數(shù)據(jù)線、 一條讀線、一 條寫線一一未分別示出)。
SEAforth - 24A器件中的節(jié)點處理以特定的合適而有效的方式操作通 信和處理,都是異步的,使得該設(shè)備非常適用于與創(chuàng)造性的巻積系統(tǒng)10的 實施例結(jié)合使用。然而,應(yīng)該記住,使用該特定的設(shè)備或者甚至接近其能力 的硬件不是必需的。同樣,可能需要提防關(guān)于數(shù)據(jù)如何在陣列12中的處理 器14之間實際傳送的誤解。例如,在考慮設(shè)備間的通信時,可能采用"推" 和"拉"的比喻,但是應(yīng)該留心通信實際上是設(shè)備之間的協(xié)同行動。
圖3a-c是圖1的局部視圖,描繪出使用處理器14的向內(nèi)、向外和內(nèi) 部通信。圖3a示出數(shù)據(jù)如何在輸入設(shè)備16和處理器14a間,以及處理器14a 和處理器14b間傳遞,圖3b示出^:據(jù)如^T在處理器14w和處理器14x間, 以及在處理器14x和輸出設(shè)備22間傳遞,圖3c示出數(shù)據(jù)如何在處理器14i 和處理器14j間傳遞。圖3a-c中的每個處理器14均被表示為具有普通的關(guān)鍵信息保持元件。 SEAforth-24A器件的特征在于RAM、 ROM、寄存器和端口均可以用于可 編程地進行計算。這在這里特別地意味著將要討論的普通信息保持元件可以 是RAM、 ROM、寄存器和端口中的任意一種。在處理器14a的情況下,信 號數(shù)據(jù)元件60是重要的信息保持元件。在處理器14b-w的情況下,信號 數(shù)據(jù)元件60、積分核濾波元件62和計算后元件64均為相應(yīng)的重要信息保 持元件。在處理器14x的情況下,結(jié)果元件66是重要的信息保持元件。
現(xiàn)在繼續(xù)進行描述圖3a,其示出數(shù)據(jù)如何進入陣列12。在巻積系統(tǒng)IO 的該示例性實施例中,處理器14a專用于從輸入設(shè)備16接收數(shù)據(jù)并且將其 提供給處理器14b。同樣,處理器14a可以接收并存儲來自輸入設(shè)備16的數(shù) 據(jù)字,并且然后使用其信號數(shù)據(jù)元件60來向處理器14b提供這些數(shù)據(jù)字的 實例,僅僅受限于其RAM 34的容量及其是否被合適地編程。
SEAforth-24A器件中的通信和處理都是異步的,因此,一旦處理器14a 使得數(shù)據(jù)可以被處理器14b獲得,對當(dāng)前任務(wù)的處理在概念上可以"流"過 陣列12的其余部分。 u
圖3b示出如何從陣列12提取數(shù)據(jù)。處理器14x在這里專用于從處理器 14w接收數(shù)據(jù)并將其提供給輸出設(shè)備22。同樣,處理器14x接收并存儲來 自處理器14w的數(shù)據(jù)字,然后使用其結(jié)果元件66向輸出設(shè)備22提供數(shù)據(jù) 字,再次,所有都只受限于其RAM34的容量及其是否被合適地編程。
圖3c示出在巻積計算期間,信號數(shù)據(jù)元件60和計算后元件64的內(nèi)容 在處理器14b-w之間如何流動,以及該和可以以何種方式存儲在各處理器 14中作為累加然后一起被傳遞。如當(dāng)前所詳細(xì)描述的,這里的各處理器14b -w可以進行對整個計算做出貢獻(xiàn)的操作。在處理器14b的情況下,該操作 使用新的輸入數(shù)據(jù)值(在其信號數(shù)據(jù)元件60中)和之前存儲的巻積系數(shù)值 (在其積分核濾波元件62中)。在本特定實例中,處理器14b不需要計算 后元件64,因為還沒有來自早先計算階段的"部分"。然而,為了使程序 簡單,處理器14b可以具有被裝載以零的計算后元件64。另外,針對在各節(jié)點處理多個巻積系數(shù)的應(yīng)用(當(dāng)前所討論的),處理器14b可以具有并且
使用計算后元件64。
接下來,在處理器14c-w的情況下,各處理器通過使用預(yù)先存儲的巻 積系數(shù)值、從相應(yīng)的前一處理器14沿著流徑24而來的輸入數(shù)據(jù)值和同樣來 自前一處理器14的中間值來進行對整個巻積計算做出貢獻(xiàn)的操作。巻積系 數(shù)值保持在相應(yīng)的積分核濾波元件62中,輸入數(shù)據(jù)暫時保持在相應(yīng)的信號 數(shù)據(jù)元件60中,中間值暫時保持在相應(yīng)的計算后元件64中。
組合起來,圖2和圖3a-c可以用來更一il殳地查看如何如上所述地4吏用 SEAforth-24A器件中的處理器14a-x的端口和寄存器。例如,處理器14a 使用其端口 52d來將輸入數(shù)據(jù)值向右傳遞到處理器14b,處理器14b可以將 該數(shù)據(jù)值放入其數(shù)據(jù)堆棧40中。為了實際地完成以上過程,處理器14b將 讀取到達(dá)其端口 52c的輸入數(shù)據(jù)值并且將該輸入數(shù)據(jù)值放入其數(shù)據(jù)堆棧40。 然后處理器14b進行對巻積做出貢獻(xiàn)的操作,使用現(xiàn)在在其數(shù)據(jù)堆棧40中 的輸入數(shù)據(jù)值和已經(jīng)在其數(shù)據(jù)堆棧40中的巻積系數(shù)值,然后處理器14b將 由此而來的中間數(shù)據(jù)值放在其端口 52d。
然后可以在處理器14b-w中沿著流徑24發(fā)生類似的操作。雖然 SEAforth-24A器件中的節(jié)點異步地運行,但是此處處理器14b-w中的操 作都可以在相克念上看作并行地發(fā)生。相應(yīng)地,基本上與之前針對處理器14b 所描述的同時地,類似的操作可以在處理器14i和14j中發(fā)生,例如,只有 這些將會使用相應(yīng)的巻積系數(shù)值,處理中間數(shù)據(jù)值,并且使用其沿著流徑 24的端口52。同樣基本上同時地,處理器14w使得輸出數(shù)據(jù)值可以在其端 口 52c由處理器14x獲得,以便進行上述的處理。然而,再一次,應(yīng)該注意 RAM、 ROM、寄存器和端口均可以在SEAforth-24A器件中被可編程地使 用,前述的例子僅僅是處理器14可以被編程以達(dá)到相同結(jié)果的許多方式中 的一種。
圖4a-f是描繪諸如圖1的處理器14的.陣列12中的巻積計算階段的方 框圖。 一般地,此處所述階段需要(1 ) 并行地對數(shù)據(jù)采樣值和巻積系數(shù)值進行相乘; (2) 計算來自階段(l)的乘積之和;
(3 ) 將數(shù)據(jù)采樣值通過陣列12 (即通過流水線)移位,接收下一數(shù) 據(jù)采樣值到第 一 節(jié)點并且丟棄來自最末節(jié)點的數(shù)據(jù)采樣值;和 (4) 按需要重復(fù)(例如,如現(xiàn)在更加詳細(xì)地描述的)。
由于SEAforth - 24A器件的特征在于RAM、 ROM、寄存器和端口都可 以用來可編程地進行計算,并且由于可以以其他具有更少、更多或者其他能 力和結(jié)構(gòu)的器件來使用創(chuàng)造性的春積系統(tǒng)10,因此圖4a-f的數(shù)據(jù)存儲元件 在此被一般地稱為"存儲箱"。為了簡化以下的討論,這里的例子使用相等 數(shù)目(具體各為22個)的巻積系數(shù)值、采樣數(shù)據(jù)值,并且處理器14用在實 際的巻積計算中。在許多"現(xiàn)實世界"應(yīng)用中,這些量可能是不常見的,因 此現(xiàn)在討論對替換事例的考慮,無論如何,使用其他量對于完全理解以下內(nèi) 容的本領(lǐng)域技術(shù)人員來說是簡單明了的。
圖4a示出正式計算準(zhǔn)備開始的階段。巻積系數(shù)值(co ... cn;總共n+l 個值,其中在圖1和3a-c中的SEAforth-24A器件中,n = 21 )已經(jīng)被載 入存儲箱(統(tǒng)稱為c-存儲箱72,具體是c-存儲箱72(Q..n,),零被載入其 他存儲箱(統(tǒng)稱為d -存儲箱74,具體是d -存儲箱74 ),°其他存儲箱 (統(tǒng)稱為r-存儲箱76,具體是r-存儲箱76(0..^))具有初始不重要的內(nèi) 容。在圖4a-f和以下的討論中,索引從零開始,"c"代表"系數(shù),,,"d" 代表"數(shù)據(jù),,,"a"是"累加后的"中間值,"r"代表"結(jié)果"。
圖4b示出下一階段,其中第一數(shù)據(jù)采樣值(d0)已經(jīng)被接收到d-存儲 箱74(0)。計算如圖所示繼續(xù)進行,在流水線的長度上始終幾乎同時和并行, 第一結(jié)果值(r。)被存儲到r-存儲箱76(0)。
圖4c示出下一階段,其中先前的數(shù)據(jù)采樣值(do)已經(jīng)被移動到d-存 儲箱74(1)。計算再次如圖所示繼續(xù)進行,在流水線的長度上始終幾乎同時 和并行,第二結(jié)果值(n)現(xiàn)在被存儲到r-存儲箱76(1)。
在圖4c和圖4d之間是概念上非常類似于上述階段的n-2個階段。圖4d示出的階段中,最后的數(shù)據(jù)采樣值(dn)已經(jīng)被接收到d-存儲箱
74,Q)。再次,計算如圖所示繼續(xù)進行,結(jié)果值(rn)現(xiàn)在存儲到r-存儲箱 76 (n)。
圖4e示出下一階段?,F(xiàn)在已經(jīng)部分地處理了所有n+1個數(shù)據(jù)采樣值 (d0 ... dn),最后的數(shù)據(jù)采樣值(dn)已經(jīng)移動到d-存儲箱74(1),并且 零值被放入d-存儲箱74(Q)。計算繼續(xù)進行并且結(jié)果值(rn+1)被存儲到r -存儲箱76 (n+l)。
在圖4e和圖4f之間是概念上非常類似于上述階段的另外n-2個階段。
圖4f示出最終完成對最后的采樣值(dn)的處理的階段。在這里的計 算之后,第(n+n-l)個結(jié)果值存儲在r-存儲箱76(2n_P中,并且處理完成。 r-存儲箱76uD-n現(xiàn)在保持此處基于n+l個采樣數(shù)據(jù)值(d(, ... dn)和n+l 個巻積系數(shù)值(c。...Cll)進行的巻積計算的完整結(jié)果。
圖5a-f是示意性地描繪基于新算法的巻積計算的方框圖,再次在諸如 圖1所示的處理器14的陣列12中給出。筒而言之,新算法采用濾波器函數(shù) 的導(dǎo)數(shù)。為了予以強調(diào),此處使用的巻積系數(shù)被不同地表示為C,Q…C,m(其 中在圖1和3a - c中的SEAforth - 24A器件中m = 21;注意,目前討-淪在此 處使用不同的附圖標(biāo)記來進行索引時的使用原因)。
圖5a示出正式計算準(zhǔn)備開始的階段。導(dǎo)數(shù)巻積系數(shù)值(c,0 ... c,m)已 經(jīng)被載入存儲箱(統(tǒng)稱為c'-存儲箱82,具體是c,-存儲箱82(o..m)),零 被載入其他存儲箱(統(tǒng)稱為d-存儲箱84,具體是d-存儲箱84(Q..m)), 單個的p-存儲箱86和一組結(jié)果存儲箱(統(tǒng)稱為r-存儲箱88,具體是r-存儲箱88(。..2m.n )具有初始不重要的內(nèi)容。 一定程度上類似于先前的例子, 索引從零開始,"c,"代表"系數(shù)"的導(dǎo)數(shù),"d"再次代表"數(shù)據(jù)","a" 再次是"累加后的"中間值,p代表或"部分"(如同對結(jié)果有"部分"的 貢獻(xiàn)),"r"代表"結(jié)果"。
圖5b示出下一階段,其中第一數(shù)據(jù)采樣值(do)已經(jīng)被接收到d-存儲 箱84(())。計算如圖所示繼續(xù)進行,在流水線的長度上始終幾乎同時和并行,第一部分值(po)被提供給p-存儲箱86。然而,不同于使用圖4a-f中所 示的傳統(tǒng)巻積算法的變形,"先前"部分值在這里被加到當(dāng)前的部分值,然 后被存儲到r-存儲箱88(o,中。然而,由于在本早期階段沒有"先前',部 分值,因此零被加入第一部分值(po)以計算第一結(jié)果值(r。),該第一結(jié) 果值被存儲到r -存儲箱88 (o)中。
圖5c示出下一階段,其中先前的數(shù)據(jù)采樣值(do)已經(jīng)被移動到d-存 儲箱84(1,,第二數(shù)據(jù)采樣值(d,)被接收到d-存儲箱84,q,。計算再次如 圖所示繼續(xù)進行,在流水線的長度上始終幾乎同時和并行,第二部分值(p!) 現(xiàn)在被提供給p-存儲箱86。先前部分值(p。)被加到當(dāng)前部分值(Pl), 這被當(dāng)作第二結(jié)果值(r,)存儲到r-存儲箱88m中。
在圖5c和圖5d之間是概念上非常類似于上述的階段的m-2個階段。
圖5d示出的階段中,最后的數(shù)據(jù)采樣值(dm)已經(jīng)被接收到d-存儲 箱84(。)。再次,計算如圖所示繼續(xù)進行,第m個結(jié)果值(rm)現(xiàn)在存儲到 r-存儲箱88 (m)中。
圖5e示出下一階段?,F(xiàn)在已經(jīng)部分地處理了所有m+l個數(shù)據(jù)采樣值 (d0...dm),最后的數(shù)據(jù)采樣值(dm)已經(jīng)移動到d-存儲箱84m ,并且 零值被放入d-存儲箱84(Q,。計算繼續(xù)進行并且結(jié)果值(rm+1)被存儲到r -存儲箱88(m+1)中。
在圖5e和圖5f之間是概念上非常類似于上述階段的另外m-2個階段。
圖5f示出最終完成對最后的采樣值(dm)的處理的階段。在這里的計 算之后,第(m+m-1 )個結(jié)果值存儲到r-存儲箱88(2m-P中,并且處理完成。 r-存儲箱88(。..2m.n現(xiàn)在保持此處基于m+l個采樣數(shù)據(jù)值(d。 ... dm )和m+l 個導(dǎo)數(shù)巻積系數(shù)值(c,Q...c,m)進行的巻積計算的完整結(jié)果。
總的來說,從上面可以看出,創(chuàng)造性巻積系統(tǒng)10允許并行地而不是串 行地完成必需計算的實質(zhì)部分。例如,在上述的簡化例子中,22個處理器 14并行地進行計算。注意,可以利用SEAforth-24A器件中的所有24個處 理器,但是這不會更快,因為處理器14a和處理器14x將用來進行覆蓋計算和I/O的雙重任務(wù)。
如同在本節(jié)開始處所指出的,創(chuàng)造性巻積系統(tǒng)IO也允許采用新的算法
種類,現(xiàn)在討論其這些方面。圖6a-c是描繪使用上面給出的兩種方法進行 的巻積的曲線圖。這樣,這些圖提供了對圖4a-f和圖5a_ f所給出的方法 的概念性概覽。
圖6a示出表示使用傳統(tǒng)巻積系數(shù)的第一跡線92,和表示使用導(dǎo)數(shù)巻積 系數(shù)的第二跡線92,,所述導(dǎo)數(shù)巻積系數(shù)即新的算法種類可用的系數(shù),也 可以用在本發(fā)明中。圖6b示出表示使用目前給出的兩種方法對其進行巻積 的輸入數(shù)據(jù)的單條跡線94 (目前討論此處的另一條跡線94,)。圖6c示出 表示目前所討論的兩種方法的結(jié)果的單條跡線96。在圖6a - c所示的特定例 子中,跡線92由下式表示
跡線94,由v, (t)表示。這里t被定義在從-i到1的區(qū)間上,步長為 0.01, i的范圍是以步長1從1取到q, q是經(jīng)過濾波器函數(shù)的數(shù)據(jù)點數(shù)目(在 本例中為2000)。作為整體,圖6a-c示出如何使用當(dāng)前討論的任何一種方 法可以達(dá)到完全相同的結(jié)果,該結(jié)果在此處如跡線96所示。
也可能存在使用新的算法種類的其他方法。例如,再次參見圖6a-c, 可以使用導(dǎo)數(shù)數(shù)據(jù)函數(shù),即跡線94,所表示的,和傳統(tǒng)濾波器函數(shù),即跡線 92所表示的,并且跡線96中的結(jié)果再次相同。在文獻(xiàn)中存在其他人也在考 慮這種方法的某種暗示,雖然不是以此處公開的新穎方式來實施。從邏輯上 說還可以進一步進行函數(shù)導(dǎo)數(shù)的使用。例如,使用數(shù)據(jù)和濾波器函數(shù)的導(dǎo)數(shù) 在理論上也是可能的。進一步,使用數(shù)據(jù)和濾波器函數(shù)中至少一個的更高階 的導(dǎo)數(shù)在理論上也是可能的。作為實際問題,這些方法具有有限的真實世界
跡線92,由u' ( t)表示
跡線94由下式表示:
(8 ) v(/0 = ft^o '用途,但是仍然被本發(fā)明的精神所包圍。在圖6a-c中,數(shù)據(jù)和濾波器函數(shù)的導(dǎo)凄t方法由跡線92'和跡線94,表示,仍然具有跡線96的結(jié)果。
在這些方法中的任意 一種方法中,在使用導(dǎo)數(shù)時某些重要的考慮來自獲得函數(shù)導(dǎo)數(shù)所需要的努力。在巻積計算中,所使用的數(shù)據(jù)采樣值的數(shù)目通常超出所使用的系數(shù)值的數(shù)目。相應(yīng)地,獲得濾波器函數(shù)的導(dǎo)數(shù)通常比獲得數(shù)據(jù)函數(shù)的導(dǎo)數(shù)所需的努力小。當(dāng)然,可能存在獲得數(shù)據(jù)函數(shù)的導(dǎo)數(shù)需要很少或者不需要額外的努力的特定情形,但是這很可能是罕見的。進一步,由于在對通常是不同的數(shù)據(jù)采樣值進行多次巻積計算時濾波器系數(shù)經(jīng)常是相同的,因此獲取濾波器系數(shù)值所投入的努力是可重用的或"被攤薄"的努力。實際上,在許多應(yīng)用中,這種努力將消耗在設(shè)計中,濾波器值可以作為程序常數(shù)輸入(例如,即使存儲在像SEAforth - 24A的器件的ROM 32中)。
再次繼續(xù)圖6a-c,可以看出跡線92和跡線94具有大的幅度范圍而跡線92,和跡線94'具有明顯更小的幅度范圍。作為實際問題,這意味著跡線92,和跡線94,可以使用更少的位來表達(dá),其重要性可以在考慮可用工具的特性即數(shù)字處理器的固有局限性時就會領(lǐng)會到。雖然SEAforth-24A器件實際上比其他合適的候選者更加出眾,但是我們?nèi)匀豢梢圆⑶掖_實在這里繼續(xù)使用它來示出關(guān)于創(chuàng)造性的巻積系統(tǒng)10如何幫助一般地克服現(xiàn)代數(shù)字處理器中的固有局限性的點。
例如,跡線92中的巻積濾波器值必須使用18位的值來表達(dá),而用于跡線92,中的創(chuàng)造性方法的值可以使用9位的或更少位的值來表達(dá)。類似地,可以i人為跡線94中使用的數(shù)據(jù)采樣值必須由18位的值來表達(dá),而用于跡線94,中的創(chuàng)造性方法的值可以使用9位的或更少位的值來表達(dá)。本發(fā)明人已經(jīng)觀察到,在創(chuàng)造性巻積系統(tǒng)10中,使用所有9位的值可以提供大約4倍(4X)的速度提高。
數(shù)字處理器可能固有地受限于其可以直接進行操作的值的大小。例如,英特爾公司在1971年推出的4004處理器處理4位的值,大多數(shù)當(dāng)代個人計算機中的處理器直接處理32或64位值。此外,大取值的乘法通常是當(dāng)今大部分處理器中可以得到的最慢的操作。本發(fā)明人已經(jīng)觀察到,乘法操作可能占用巻積算法的執(zhí)行時間的60 _ 90 % 。SEAforth-24A器件并不是數(shù)字處理器的這些一般原則的例外。它采用 Forth語言,并且依賴于對無符號值來說以18位所表示的數(shù)值(或者對于有 符號值來說是17位),或者對無符號值來說以9位所表示的值(或者對于 有符號值來說是8位)。例如,如果某個值需要10位,其有效地必須被當(dāng) 作其需要18位。簡要地參見圖2,可以再次看出SEAforth-24A器件中的 各處理器14具有一個18位A -寄存器44, 一個9位B -寄存器46、在ROM 32和RAM 34中具有18位寬的字,還具有18位寬的端口 52。與在處理器14中用Forth語言對兩個18位的值作乘法的等價物需要以 下36個操作碼的序列(其中" ,,表示nop或無操作指令,"+*',表示加-星或逐位乘法指令)(9 ) +承+氺+氺+水+氺+承+氺+氺+承+氺+承+氺+氺+氺+承+氺+承 +承相反,與在處理器14中用Forth語言對一個18位的值和一個9位的值 作乘法的等價物需要以下1.8個操作碼的序列(10) +承+承+承+氺+氺+承+承+氺與在處理器14中用Forth語言對兩個9位的值作乘法的等價物需要以下9個#:作碼的序列(11) +承+承+承十氺+水+氺+氺+氺顯然,從計算負(fù)擔(dān)和所達(dá)到的速度的觀點來看,計算式(9)是最劣的 任務(wù),計算式(11)是最佳的任務(wù)。這些可以分別被稱為以lx、 2x和4x的 速度運行?,F(xiàn)在給出以上概念性基礎(chǔ)的更加嚴(yán)密的"證據(jù)"。創(chuàng)造性的巻積系統(tǒng) 10可以采用的新的算法種類使用積分核(一般地,例如見等式(1)和背景 技術(shù)部分)的導(dǎo)數(shù)表達(dá)式而不是直接表達(dá)式。下式基本上是等式(5)的重 中0 "o其中f(t- T )表示積分核。然而,假設(shè)作為替換積分核由f (t- T )表示。
這產(chǎn)生下式
<formula>formula see original document page 22</formula>
現(xiàn)在假定積分核是特定的低通濾波器或者可以由低通濾波器表示,那么
以下的近似是合理的
(14) U = /(c,—,,)-/(c,一)并且有
<formula>formula see original document page 22</formula>
在該點,容易看出,等式(14)的等號右邊的第一和就是r(t)。不那么明顯的是等號右邊的第二項就是來自 一個時間步長Ar之前的先前巻積值,這可以以以下方式表示
因此,在使用直接積分核的巻積關(guān)系和使用直接積分核的導(dǎo)數(shù)的巻積關(guān)
系之間,以下關(guān)系成立
<formula>formula see original document page 22</formula>
這里一個重要的發(fā)現(xiàn)在于意識到,使用核的導(dǎo)數(shù)的巻積與之前計算出的巻積,兩者的和與使用直接表示的巻積完全一樣。這說明新的和等于舊的和加上已經(jīng)計算出的任何結(jié)果。
將此應(yīng)用于創(chuàng)造性巻積系統(tǒng)10中可以使用的新算法種類的場合,直接濾波器系數(shù)值(Co ... Cn)可以用來以以下的方式計算導(dǎo)數(shù)系數(shù)值(C,0 ...
c,n+1 ) : c,0 =c0-0; c,, 二c廣c0; c,2=c2-c;..,;c,n=cn-cn—i; c,ll+1 =0-cn。'秀求而,如果Co的值非零,那么我們只要讓C,Q=CQ-0 = CQ。類似地,如果C。為零,
那么我們只要讓c,o =0-0 = 0,沒理由讓導(dǎo)數(shù)濾波器值與零值相關(guān)聯(lián),因為這不會對被累加的中間值(a())做出貢獻(xiàn)。以上推理可以擴展到任何直接濾波器值或任何為零的直接濾波器值的導(dǎo)數(shù),因為如果濾波器系數(shù)值不會對在該節(jié)點計算的被累加的中間值做出貢獻(xiàn),沒有必要將其與特定的節(jié)點相關(guān)聯(lián)。雖然如此,除了第一節(jié)點以外,各節(jié)點處的部分和仍然必須被考慮到。
現(xiàn)在轉(zhuǎn)向為什么圖4a-f使用索引n而圖4a-f使用索引m,這是為了強調(diào)使用基于直接的算法和基于導(dǎo)數(shù)的算法之間的關(guān)鍵區(qū)別。如同可以從上一段看出來的,在可以使用n個直接濾波器系數(shù)值(c0...cn)的情況下,需要n+l個導(dǎo)數(shù)系數(shù)值(c、 ... c,n+l )。這樣,例如,如果要將21個處理器應(yīng)用于使用基于直接的算法的應(yīng)用,則需要22個處理器來用于使用基于導(dǎo)數(shù)的算法的同一應(yīng)用。或者說,如果要將22個處理器應(yīng)用于使用基于直接的算法的應(yīng)用,則需要23個處理器來用于使用基于導(dǎo)數(shù)的算法的同一應(yīng)用。在圖l和3a-c中的SEAforth-24A器件的情況下,這需要讓一個處理器未使用或者將I/O功能組合到一個處理器中,因此基于導(dǎo)數(shù)的算法采用23個處理器。這在使用24個處理器的器件(例如SEAforth-24A器件)時可能帶來小問題,但是在使用40個處理器的器件(中的SEAforth - 40A器件)時帶來的問題更小,并且在采用80-、 96-、 128-的器件時迅速變得微不足道。
還要注意,通過使用相等數(shù)目的巻積系數(shù)值和采樣數(shù)據(jù)值簡fe了此處的討論。如果在使用基于直接的算法時有22個采樣數(shù)據(jù)值要處理,則在使用基于導(dǎo)數(shù)的算法時需要23個采樣數(shù)據(jù)值來處理。當(dāng)然,將使用22個實際的數(shù)據(jù)值,第23個值用零"填補"。然而,更典型地,這不會是問題,因為在最真實世界的應(yīng)用中將使用大量的、潛在地接近無窮量的采樣數(shù)據(jù)值。
總之,使用導(dǎo)數(shù)表示代替直接表示的好處在于表示導(dǎo)數(shù)幅度所需的值在幅度上通常遠(yuǎn)小于用于表示直接濾波器的幅度所用的值。在SEAforth-24A器件方面,再次用其作為例子,已經(jīng)發(fā)現(xiàn)通常是9位的數(shù)據(jù)字就足夠的情況,而不是全部18位數(shù)據(jù)字來表示幅度值。允許認(rèn)為9位的表示就足夠有兩個要求。第一是系數(shù)值用9位無符號(或8位有符號)表示。第二個條件是連 續(xù)直接濾波器系數(shù)值由9位無符號(或8位有符號)表示。在典型的低通濾 波器的條件下,例如圖6a-c中給出的例子中所使用的低通濾波器,導(dǎo)數(shù)值 將只由8位表示,因為最高有效位在左邊作為符號位。作為一般的規(guī)則,如 果所討論的值是無符號的,或者可以當(dāng)作無符號,則如果連續(xù)直接系數(shù)值之 間的差小于512個單位,則導(dǎo)數(shù)逼近是恰當(dāng)?shù)姆椒?。否則,連續(xù)直接系數(shù)值 之間的差必須小于256個單位。圖7是示例性直接濾波器700的代碼清單。此處使用的編程語言是 Forth,目標(biāo)石更件處理器14是S E A forth - 24 A器件。項目702是將"10"與IOCS -寄存器50等同的編譯器指令。該項目指 定數(shù)據(jù)從哪里讀取和向哪里寫入。注意,SEAforth-24A器件中的IOCS-寄存器可以并發(fā)地指定從不同的端口 52讀取和寫入。為了避免混淆,熟悉 不那么復(fù)雜的器件的人在閱讀以下內(nèi)容時應(yīng)該記住上述說明。項目704時將"H"與系數(shù)值等同的編譯器指令。此處"123"僅僅是 用于示例的值。這是該處理器14的c-存儲箱72中的內(nèi)容。項目706是Forth i吾言的注壽奪。項目708是Forth語言中的位置標(biāo)簽。項目710是Forth指令序列,其對處理器14進行初始化,用于緊隨的 巻積計算。具體而言,10被載入數(shù)據(jù)堆棧頂部;然而從該處彈出到B-寄 存器46以便其指向IOCS -寄存器50;然后H被載入數(shù)據(jù)堆棧頂部;然后 nop填補此處使用的18位的指令字以包含該指令序列。項目712指定循環(huán)的開始,在該循環(huán)中用條件編譯對三種情況進行處 理。這根據(jù)某處理器是流水線中的第一個(處理器14b)、中間(處理器14c -v中的任意一個)還是最后一個(處理器14w)來對處理器14進行編程。 也參見圖3a_ c。這里的項目714指定針對大多數(shù)典型情況而言的指令編譯的開始。所述大多數(shù)情況即目標(biāo)處理器14是處理器14c-v中的一個。
項目716是另一 Forth指令序列。具體而言,數(shù)據(jù)采樣值從B-寄存器46所指向的地址讀出,并且被壓入數(shù)據(jù)堆棧(h--sh);然后累加值(a)也被讀出然后壓入數(shù)據(jù)堆棧(sh—ash);然后數(shù)據(jù)堆棧的頂部元素被彈出然后壓入返回堆棧的頂部(D: ash--sh R: —a);然后數(shù)據(jù)堆棧的頂部元素被復(fù)制然后壓入數(shù)據(jù)堆棧(D: sh—sshR: a—a)。
的頂部(D: ssh—shR: a—sa);然后進行大乘法("MULT",在SEAforth-24A器件的BIOS中提供的定義)。數(shù)據(jù)堆棧頂部的兩個元素在這里用作乘數(shù)和被乘數(shù),該頂部元件被替換為結(jié)果(a')而被乘數(shù)作為數(shù)據(jù)堆棧中的第二個元素被留下(D:sh——a' h R: sa—sa )。
接下來是項目720,其中返回堆棧的頂部元素被彈出并且壓入數(shù)據(jù)堆棧(D: a,h—sa,h R: sa-_a );數(shù)據(jù)堆棧的頂部元素被彈出然后寫入B -寄存器46指向的地址(D: sa'h—a,h R: a—a);返回堆棧的頂部元素^皮彈出然后壓入凄t據(jù)堆棧(D: a,h—aa,h R: a—);然后nop填補所使用的18位的指令字。
4妻下來是項目722,其中數(shù)據(jù)堆棧的兩個頂部元素被加在一起,頂部祐:新的累加后的和(a,,)替換,第二個元素被第三個元素替代(D: aa'h—a"hR:—)。
接下來是項目724,結(jié)束針對目標(biāo)處理器14是處理器Mc-v之一的情況的代碼條件編譯。
現(xiàn)在,對于圖7所示的另外兩個條件編譯選項的理解是簡單明了的。對針對處理器14b的情況更加簡單,因為不需要讀取和加上"之前"的累加值。針對處理器14v的情況某種程度上也更加簡單,因為當(dāng)前數(shù)據(jù)采樣值不需要被寫入"后續(xù)的"處理器。最后,項目726是對于所有的處理器14b-w都要編譯的指令序列,其 中數(shù)據(jù)堆棧的頂部元素被彈出然后寫入B-寄存器46所指向的地址(D: a,,h—h R:—);并且循環(huán)返回項目712。圖8a-b是示例性導(dǎo)數(shù)濾波器800的代碼清單,其中圖8a示出執(zhí)行概 念上類似圖7的功能的代碼(除了 9位計算對18位計算),圖8b示出基于 導(dǎo)數(shù)的算法所使用的附加代碼。如圖8a所示,這里的許多代碼基本上與以上討論的直接濾波器700中 的代碼相同。然而, 一個例外是項目802,其中使用了9個加星("+*,,) 操作來進行小乘法(而不是使用MULT定義進行的大乘法)。項目804是將返回堆棧中的部分值(p )初始化為零的Forth指令序列。 具體而言,這里,文字(literal)被放在數(shù)據(jù)堆棧上(:D: h—ph R: — ); 然后從那里被壓入返回堆棧的頂部(D: ph--h R: --p );然后用兩個nop 來填充指令字。[注意,選擇該特定方法以便于與直接濾波器700進行概念 上的比較,熟練的程序員很容易理解有更多更加有效和恰當(dāng)?shù)姆椒▉磉M行處 理。]然后項目806處理采用部分值(p)的額外加法。當(dāng)前部分值(p)從返 回堆棧彈出,并且壓入數(shù)據(jù)堆棧(D: a"h—pa"h R: p--);第一個nop 增加下一指令之前的時間;數(shù)據(jù)堆棧的兩個頂部元素被加在一起,其中最頂 部的元素被和替換,該和既是下一部分值(p,)又是累加后的和(a"),第 二個元素被第三個元素替換(D: pa"h—p,h R: — );第二個nop填補18 位的指令字。然后項目808將累加后的總和(a")保存在返回堆棧中作為下一個部分 值(p,)。累加后的和(a")被復(fù)制(D: a"h--p,a"h R: —);下一個 部分值(p,)從數(shù)據(jù)堆棧中彈出并且壓入返回堆棧(D: a"h—a"h R: —p,);兩個填補填充18位指令字?,F(xiàn)在轉(zhuǎn)向圖8b,其示出在采用基于導(dǎo)數(shù)的算法時用于"積分器"步驟 的附加代碼。注意,在本特定例子中,該代碼將在附加處理器14中運4亍。項目810是Forth語言的注釋,項目812是Forth語言的位置標(biāo)簽。通 過向圖8a中的代碼添加恰當(dāng)?shù)木幾g指示,該代碼將被條件編譯,或者該代 碼可以一皮單獨編i,。項目814是Forth指令序列,其首先將10的值取回到B -寄存器46, 然后將值S3F (端口地址)取回到A-寄存器44。項目816是另一 Forth指令序列。具體而言,其將數(shù)據(jù)堆棧清零。數(shù)據(jù) 堆棧的頂部元素被復(fù)制然后壓入數(shù)據(jù)堆棧,然后再進行一次(這與頂部元素 是什么無關(guān))。然后最頂部的兩個元素從數(shù)據(jù)堆棧中彈出,然后進行異或, 然后將結(jié)果(零)壓入回數(shù)據(jù)堆棧。項目818指定循環(huán)的開始。項目820是另一 Forth指令序列。具體而言,從B-寄存器46所指向的 地址讀取值,然后壓入數(shù)據(jù)堆棧;然后數(shù)據(jù)堆棧頂部的兩個元素相加,然后 替換頂部元素(第二個元素被第三個元素替代);然后數(shù)據(jù)堆棧的頂部元素 被復(fù)制然后壓入數(shù)據(jù)堆棧;然后頂部元素從數(shù)據(jù)堆棧中彈出并寫入A -寄存 器44所指向的地址。凈結(jié)果是和被輸出而其備份被保留(累加)來用作循 環(huán)的下一次執(zhí)行。項目822是4盾環(huán)-返回項目818的i也址??梢?,本創(chuàng)造性巻積系統(tǒng)10所使用的基于導(dǎo)數(shù)的算法需要非常少的附 加代碼。雖然以上描述了不同的實施例,應(yīng)該理解,它們僅僅以示例的方式給出, 本發(fā)明的廣度和范圍不應(yīng)該受限于以上描述的示例性實施例,而應(yīng)該僅僅根' 據(jù)下列權(quán)利要求及其等同替換來限定。
權(quán)利要求
1、一種用于計算數(shù)據(jù)函數(shù)與濾波器函數(shù)的卷積的系統(tǒng),包括處理器陣列,包括第一處理器和最末處理器,其中所述處理器包括對系數(shù)值和數(shù)據(jù)值進行乘法以產(chǎn)生當(dāng)前中間值的邏輯,所述系數(shù)值基于所述濾波器函數(shù)的導(dǎo)數(shù),所述數(shù)據(jù)值表示所述數(shù)據(jù)函數(shù);在除了所述第一處理器的處理器中,接收在先中間值并且將所述在先中間值加到所述當(dāng)前中間值的邏輯,所述在先中間值表示在另一處理器中先前進行的計算;和在除了所述最末處理器的處理器中,向另一處理器發(fā)送所述數(shù)據(jù)值和所述當(dāng)前中間值的邏輯;和保持來自所述最末處理器的在先中間值,如果有的話,作為在先部分值并且將所述在先部分值加到來自所述最末處理器的所述當(dāng)前中間值以產(chǎn)生結(jié)果值的邏輯;并且其中,所述處理器陣列接收一連串所述數(shù)據(jù)值,并且產(chǎn)生一連串所述結(jié)果值,所述結(jié)果值共同地表示所述數(shù)據(jù)函數(shù)與所述濾波器函數(shù)的卷積。
2、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述處理器并行地進行處理。
3、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述處理器異步地進行處理。
4、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述處理器異步地互相通信。
5、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中多個所述處理器占用單個半導(dǎo)體電路小片。
6、 根據(jù)權(quán)利要求5所述的系統(tǒng),其中整個所述處理器陣列占用所述半導(dǎo)體電路小片。
7、 根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述處理器進一步均包括濾波器存儲元件來保持所述系數(shù)值。
8、 根據(jù)權(quán)利要求1所述的系統(tǒng),進一步包括從所述系統(tǒng)外部接收所述
9、 根據(jù)權(quán)利要求1所述的系統(tǒng),進一步包括將來自所述最末處理器的所述結(jié)果值發(fā)送到所述系統(tǒng)外部的邏輯。
10、 根據(jù)前權(quán)利要求1所述的系統(tǒng),其中所述保持在先中間值的邏輯位于所述最末處理器中。
11 、 一種用于對數(shù)據(jù)函數(shù)與濾波器函數(shù)的巻積中的結(jié)果值進行計算的方法,該方法包4舌(a )獲得以所述濾波器函數(shù)的導(dǎo)數(shù)為基礎(chǔ)的系數(shù)值的序列;(b)對于表示所述數(shù)據(jù)函數(shù)的數(shù)據(jù)值(i) 對于所述各系數(shù)值,在包括第一處理器和最末處理器的計算機化的處理器的流水線中(A )將所述系數(shù)值與所述數(shù)據(jù)值相乘以產(chǎn)生當(dāng)前中間值;(B) 除了在所述第一處理器中,將一在先中間值加到所述當(dāng)前中間值,所述在先中間值表示在另 一 處理器中先前進行的計算;和(C) 除了在所述最末處理器中,將所述數(shù)據(jù)值和所述當(dāng)前中間值發(fā)送到后續(xù)的處理器;和(ii) 將在先部分值,如果有的話,加到來自所述最末處理器的所述當(dāng)前中間值以產(chǎn)生結(jié)果值,其中所述在先部分值是來自所述最末處理器的在先中間值;和(iii) 將所述結(jié)果值輸出到采用該方法的數(shù)字信號處理器。
12、 一種用于對數(shù)據(jù)函數(shù)與濾波器函數(shù)的巻積進行計算的方法,該方法包括(a) 獲得以該濾波器函數(shù)的導(dǎo)數(shù)為基礎(chǔ)的系數(shù)值的序列;(b) 獲得表示該數(shù)據(jù)函數(shù)的數(shù)據(jù)值的序列;(c) 對于所述各數(shù)據(jù)值(i)對于所述各系數(shù)值,在包括第一處理器和最末處理器的計,機化的處理器的流水線中(A) 將所述系數(shù)值與所述數(shù)據(jù)值相乘以產(chǎn)生當(dāng)前中間值;(B) 除了在所述第一處理器中,將一在先中間值加到所述當(dāng)前中間值,所述在先中間值表示在另 一 處理器中先前進行的計算;并且(C) 除了在所述最末處理器中,將所述數(shù)據(jù)值和所述當(dāng)前中間值發(fā)送到后續(xù)的處理器;和(ii)將在先部分值,如果有的話,加到來自所述最末處理器的所述當(dāng)前中間值以產(chǎn)生結(jié)果值,其中所述在先部分值是來自所述最末處理器的先前中間值;(d)累加所述(c)的所述結(jié)果值作為巻積;并且(e )將該巻積輸出到采用該方法的數(shù)字信號處理器。
13、 根據(jù)權(quán)利要求12所述的方法,其中所述(c) (i) (A)在多個所述處理器中針對多個所述數(shù)據(jù)值并發(fā)地進行。
14、 根據(jù)權(quán)利要求12所述的方法,其中所述(c) (i) (A)在多個所述處理器中針對所述系數(shù)值序列并發(fā)地進行。
15、 一種用于計算巻積的改進系統(tǒng),其中至少 一 個處理器將表示濾波器函數(shù)的系數(shù)值與表示數(shù)據(jù)函數(shù)的數(shù)據(jù)值相乘;所述改進包括所述系數(shù)伍以該濾波器函數(shù)的導(dǎo)數(shù)為基礎(chǔ)。
16、 才艮據(jù)權(quán)利要求15所述的系統(tǒng),所述改進進一步包括多個所述處理器,所述處理器并行地將多個所述系數(shù)值與多個所述數(shù)據(jù)值相乘。
17、 一種用于在計算機化的處理器中計算巻積的改進方法,其中系數(shù)值表示濾波器函數(shù);數(shù)據(jù)值表示數(shù)據(jù)函數(shù);并且將所述系改值與所述數(shù)據(jù)值相乘以產(chǎn)生共同地表示所述巻積的結(jié)果值;所述改進包括采用以該濾波器函數(shù)的導(dǎo)數(shù)為基礎(chǔ)的所述系數(shù)值。
18、根據(jù)權(quán)利要求17所述的方法,所述改進進一步包括在多個所述處理器中針對多個所述數(shù)據(jù)值并發(fā)地進行所述相乘。
全文摘要
用于利用包括第一和最末處理器的處理器陣列來計算數(shù)據(jù)函數(shù)與濾波器函數(shù)的卷積的系統(tǒng)。以該濾波器函數(shù)的導(dǎo)數(shù)為基礎(chǔ)的系數(shù)值和表示該數(shù)據(jù)函數(shù)的數(shù)據(jù)值相乘以產(chǎn)生當(dāng)前中間值。除了在第一處理器中,將在先中間值加到當(dāng)前中間值。除了在最末處理器中,數(shù)據(jù)和當(dāng)前中間值發(fā)送到下一處理器。然后將最末處理器的在先中間值,如果有的話,加到其當(dāng)前中間值以產(chǎn)生結(jié)果值,其中該結(jié)果值共同地表示該數(shù)據(jù)函數(shù)與該濾波器函數(shù)的卷積。
文檔編號G06F17/10GK101652770SQ200880011407
公開日2010年2月17日 申請日期2008年4月4日 優(yōu)先權(quán)日2007年4月6日
發(fā)明者邁克爾·B·蒙特維利什斯凱 申請人:Vns組合有限責(zé)任公司