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