專利名稱:多級計數裝置的制作方法
技術領域:
本發明涉及一種在通常所指的流水線裝置中,與多級設備一起使用的時鐘分配電路。
背景技術:
在處理業務時,各用戶之間電子存儲文件的交換,例如通過分布式信息網絡,如全球互聯的因特網(萬維網)進行的交換,變得越來越普遍。因特網的一個普遍的問題在于其缺乏安全的通訊信道。而為了確保醫院、政府、銀行、股票經紀、以及信用卡公司等能使用因特網,必須有隱私和安全方面的保證。解決上述問題的一種方案是在數據傳送之向前行加密處理。在現有技術中,主機系統一般裝有一個加密單元,例如一個加密處理器,該加密處理器可與至少一個用于存儲一個以上私人加密密鑰的存儲器電路進行電通信。當需要保密的信息由主機通過互聯網傳送到接收者時,該信息首先被傳送到所述加密處理器用所保存的私人密鑰進行加密處理。典型的情況是每一次數據加密處理均使用同一私人密鑰。相應地,加密密鑰是從存儲在所述至少一個與加密處理器有電通信的存儲電路中的一組有限的私人加密密鑰中選擇出來的。
當然,由加密處理器所執行的數據加密處理是一種數學算法,其中的輸入數值,例如電子文件的混編版本,是唯一的可變量。因此有可能對加密處理器進行最優化,使其可用最少的處理資源來執行所需的加密功能。另外,在現有技術的加密單元中,優化后的加密處理器與主機系統的微處理器之間一般是分離的,因為采用這種方式能達到最優化的效果。
目前有好幾個在因特網上通過加密/解密處理以實現保密和強認證的標準。典型的加密/解密處理是基于可讓數據通過公開信道在用戶之間進行傳送,而同時能維持信息內容保密性的運算法則來執行。這一過程是通過由發送者用加密密鑰對數據進行加密、再由接收方用解密密鑰對其進行解密來完成的。在對稱密鑰的密碼術中,加密密鑰和解密密鑰是相同的。
加密算法一般分為公開密鑰算法和秘密密鑰算法。秘密密鑰算法中的密鑰是隱秘的,而公開密鑰算法中的其中一個密鑰是公眾所知的。分組密碼是目前使用的秘密密鑰密碼系統中的一種代表,它一般以一組32-128位的數據作為輸入數據,并生出同樣位數的輸出數據。加密處理和解密處理的執行采用的是典型長度在56-128位之間的密鑰。加密算法的設計就是要使得如果不知道密鑰、則對信息的解密會非常困難。
除分組密碼之外,互聯網安全協議還依賴于以公開密鑰為基礎的算法。公開密鑰密碼系統中一般使用兩個密鑰,其中一個是隱秘/私人的,另一個公共可用的,例如在授權給Pogue及Rivest的專利號為5,144,667的美國專利中所公開的Rivest,Shamir,Adelman(RSA)的密碼體制即為此例。一旦有人公布一個公開密鑰,則任何人均可向其發送用該公開密鑰進行加密處理后的保密信息,然而,如要對該信息進行解碼則只有使用私人密鑰才可以完成。公開密鑰加密處理的優點在于私人密鑰沒有在交流前預先分配給所有用戶。反之,當使用對稱加密處理時,將產生多個秘密密鑰,其中一個分配給要接收信息的各用戶,并且每一個秘密密鑰都是私下傳送的。如果想用安全的模式分配秘密密鑰,就會存在與信息傳送中只用一個秘密密鑰進行加密處理時所面對的相同的問題,也就是通常所講的密鑰分配問題。
密鑰交換是公開密鑰技術的另一種應用方式。在密鑰交換協議中,兩用戶可協議共用一個密鑰,即使他們的會話被第三方中途截取。在專利號為4,200,770的美國專利中所公開的Diffie-Hellman指數密鑰交換方法就是此協議的一個例證。
大多數公開密鑰算法,比如RSA及Diffie-Hellman密鑰交換,都是基于模數求冪,也就是計算式αx mod p,該算式表示“α的x次方的結果,再除以p后所得余數”。要執行這一計算的運算消耗是非常大的,因為執行這一運算需要重復多次乘法運算及多次除法運算。刊登在《計算數學》1985年4月第170期44冊里的蒙哥馬利方法,即“ModularMultiplication Without Trial Division(不需試除的模數乘法)"中所公開的一種技術可減少所需除法運算的次數,但仍不能完全克服運算消耗大的問題。另外,目前的密碼系統中所使用數據非常大(一般為1024位或更多),因此不能直接采用普通CPU中的乘法及除法命令。而是采用特殊的算法將這些大型的乘法運算及除法運算分解成多個足夠小的運算,以便能在所用的CPU運行。這些算法所需的運行時間通常與機器語言中所含字節數的平方成比例增長。這些因素使得大數字乘法運算的運算速度很低。例如,一個奔騰處理器可在10個時鐘周期內執行一次32×32位乘法運算。而一個2048位的數字可由64個32位數來表示,則2048×2048位的乘法運算需要64×64次32×32位乘法運算,也就需要占用奔騰處理器40960個時鐘周期。如果按上述方式,則一個2048位指數的求冪運算需要4096次乘法運算,也就需要約167,000,000個時鐘周期。如果奔騰處理器以166MHz的速度運算,則整個過程大約需要一秒鐘才能完成。當然,其中的除法運算還會增加整個運算的時間。可見,一個普通的CPU,例如上述的奔騰處理器,是不能以極高的速度來完成密鑰生成及交換動作的。
流水線處理器含有多個按串接陣列排列的處理單元,其中的多數處理單元是現有的公知技術,并特別適合于執行數據加密算法。目前所知有兩種流水線處理器其中一種是一端進另一端出的類型,只有一個處理方向;另一種是同一端進出型的雙向處理器,包含一個向前處理路徑及一個返回處理路徑。以一個特定的雙向流水線處理器為例,第一數據塊從存儲緩沖器中讀取到所述串接陣列的第一處理單元中,執行第一級處理;然后將該第一數據塊送到第二處理單,執行第二級處理,同時第一處理單元從所述存儲緩沖器中讀取第二數據塊,并對第二數據塊執行同樣的第一級處理。依次順序,每一個數據塊沿著串接陣列的向前處理路徑一步一步地從一個處理單元傳送到下一個處理單元。每一步包括一個對輸入的各數據塊執行相同的數學處理的處理級。同時,每一個處理單元的計算結果按返回處理路徑提供給所述串接陣列中的前一個處理單元,其結果是將加密處理器所反饋的處理數據包含在一個集合中。這種使用大量的處理單元組成數據處理流水線的方法,對于執行前面所述計算量較大的數據加密算法,是非常有效的。當然,用于執行計算量較大處理操作的流水線處理器的用途,并不是嚴格限于上面的詳細例子中所描述的數據加密算法。
現有雙向流水線處理器技術的一個缺點是同一串接陣列中的每一個處理單元必須與其它各個處理單元時間同步。為了控制數據塊在向前方向時從一個處理單元到下一個處理單元時的定時門控、以及處理后的數據在返回方向時從一個處理單元到前一處理單元的定時門控,處理單元之間的時間同步是必須的。一般采用一個時鐘來控制數據塊沿著流水線的向前方向和返回方向的進程。然而,當時鐘信號沿著流水線前進時,如果沒有較好的時鐘分配設計,在各級之間將會出現遞增的延遲,例如由于時鐘電路內的電阻和電容而產生的延遲。在早期相對較慢的流水線處理器中,這種延遲并不重要,對整體的運行或計算也無不利影響。隨著處理速度的加快,這種延遲變得明顯起來,因而需要更準確和精密的時鐘分配方法。
此外,為了從存儲緩沖器中讀取數據,例如供流水線處理器處理的數據,串接陣列的中第一處理級必須與存儲緩沖器時間同步。因而進一步要求流水線處理器內時鐘分配的同步性。
最好能提供一種在流水線處理器中用于數據處理的系統和方法,可以不需要將提供給流水線處理器中各個處理單元的時鐘值同步。這種系統可用相對簡單的電路設計來實現,其中大型的處理單元是由一系列次級小處理單元所構成的。
發明目的本發明的目的在于,提供一種不需要將各處理單元的時鐘信號同步的流水線處理器。發明概要本發明的整體概念在于,提供一種具有擴展流水線陣列的多級計算裝置,包括邊靠邊串接排列的多個子陣列、以及一個沿所述陣列彎曲設置并與每一級連接的時鐘導體。所述陣列可以是多個段組成,其中每一段有輸入端和輸出端,而整個陣列或所有的段都能處理數據。該裝置中的向前及返回路徑可安排得讓一級中最短的計算在返回路徑中進行。
根據本發明的另一實施例,提供一種數據處理裝置,包括以串接陣列排列的多個獨立處理單元,其中,第一處理單元先于第二處理單元,第二處理單元先于第n處理單元;以及,與所述串接陣列中的多個獨立處理單元中每一個處理單元電通信的時鐘分配電路,使得在使用中,沿時鐘分配電路傳播的時鐘信號以相對于時鐘信號到達前一處理單元的延遲到達每一個處理單元,
其中,從數據寫入處理單元到該數據被后一處理單元讀出的時間等于時鐘周期準確個數k,這里k大于0,不足以從該處理單元產生出準確的輸出數據,但如果有額外的延遲則上述時間就足以產生出準確的輸出數據,在所述時鐘周期準確個數k后,待處理的新數據被讀入同一處理單元。
根據本發明的另一實施例,提供一種可切換處理單元,包括用于接收第一時鐘信號的第一端口;用于接收第二其它時鐘信號的第二端口;可在選擇第一時鐘信號和第二其它時鐘信號中的一個的兩種模式之間進行切換的開關;其中,從所述第一時鐘信號和第二其它時鐘信號中所選出之一被提供給所述處理單元。
根據本發明的另一方面,還提供一種數據處理方法,包括以下步驟(a)提供一個流水線處理器,所述流水線處理器包括按串接陣列排列的多個獨立的處理單元,以使第一處理單元先于第二處理單元處理,第二處理單元先于第n處理單元處理;(b)為所述按串接陣列排列的多個獨立處理單元中的每一個處理單元提供一個時鐘信號,使得到達第一處理單元之外的每個獨立處理單元的時鐘信號,相對于到達其在先處理單元的時鐘信號要延遲;(c)提供數據給所述第一處理單元進行處理;(d)將所述數據傳播到至少下一個處理單元以進行進一步處理;其中,提供給所述多個獨立處理單元中的某一單元的時鐘信號,相對于提供給該多個獨立處理單元中另一個單元的時鐘信號,有以時鐘周期為基準的相當量的延遲。
根據本發明的另一實施例,還提供一種在流水線處理器中數據處理方法,包括以下步驟(a)為有n個處理單元的流水線處理器提供一個沿第一部分第一方向的時鐘信號,使得到達所述第一部分中第一處理單元之外的每個獨立處理單元的時鐘信號,比起到達同在第一部分的其在先處理單元的時鐘信號要延遲;
(b)為同樣有n個處理單元的流水線處理器提供一個沿第二其它部分的第二相反方向的時鐘信號,使得到達所述第二其它部分中第一處理單元之外的每一個獨立處理單元的時鐘信號,比起到達同在第二其它部分的其在先處理單元的時鐘信號要延遲;(c)提供數據給流水線處理器第一部分的第一處理單元以進行處理;其中,到第一部分最后處理單元的延遲與到第二部分的最后處理單元的延遲大致相同,使得在流水線處理器的中心所述兩個相鄰處理單元是同步的。
根據本發明的另一方面,還提供一種在數據處理設備的布置中使用的宏,包括串接排列并有一個時鐘輸入導體和一個時鐘輸出導體的多個獨立處理單元,與所述時鐘輸入導體電通信的時鐘導體增加了從時鐘輸入導體到所述多個獨立處理單元中每一個后繼單元的長度,同時該時鐘導體減小了從時鐘輸入導體到所述多個獨立處理單元中每一個后繼單元的長度;其中,所述時鐘輸入導體和輸出導體被排列得使一個布局內相鄰放置的宏形成空間足夠的組,并使一個宏的輸入時鐘導體與相鄰宏的輸出時鐘導體在耦合時,有與宏被設置在一個預定的空間足夠位置時同一宏內的兩個相鄰單元之間的導體路徑長度大致相同的導體路徑長度。
通過以下與附圖結合的多個優選實施例,可增加對本發明的理解,其中圖1是本發明的第一實施例中流水線處理器的結構簡圖;圖2本發明中與時鐘分配電通信的處理單元陣列的結構簡圖;圖3現有技術的流水線處理器中用于多個處理單元的門控信息時序圖;圖4是本發明的流水線處理器中用于多個處理單元的門控信息時序圖;圖5是本發明中分別用于同一處理器內的三個相鄰處理單元的時序圖;圖6是本發明的第二實施例中流水線處理器的結構簡圖;圖7是本發明的第三實施例中流水線處理器的結構簡圖;圖8a是本發明中含有一個時鐘切換電路并按第一模式運行的一個處理器單元的結構簡圖;
圖8b是本發明中含有一個時鐘切換電路并按第二模式運行的一個處理器單元的結構簡圖;圖9是被安排用于在單元與單元之間提供蛇形時鐘信號的處理單元宏塊的結構簡圖;圖10是用于在流水線處理器中執行加密處理功能的一個資源足夠的處理單元的設計結構圖;圖11是用于模數乘法的一個Systolic陣列的結構圖;圖12是一個示出其輸入路徑的單個單元的結構圖;圖13是一個DP RAM Z單元的結構圖;圖14是一個Exp RAM單元的結構圖;圖15是一個Pree RAM單元的結構圖;圖16是用于在流水線處理器中執行加密處理功能的一個速度足夠的處理單元的結構圖;圖17是用于模數乘法的一個Systolic陣列的結構圖;圖18是一個示出其輸入路徑的單個單元的結構圖;圖19是一個DP RAM Z單元的結構圖。
具體實施例方式
本發明是關于如何減小級間的時間延遲。該結果是通過在不同級的附近設置一個時鐘導體,并使其沿各級蛇行來實現的。這樣一來相近單元之間的時鐘遲延會變得充分地小,從而不再需要適當的級間同步。除了直接相鄰之可能外,如能給相互聯絡的級間相鄰單元之間提供一個一致的時間延遲,則可以實現更進一步的優勢。
如果想取得更進一步的優點,除了現有用于大型計算的各級整個陣列外,可以將陣列進行劃分,例如分對半分或分成四份,以便在同一時間進行一個以上的計算。
參考圖1,示出了本發明的第一實施例中通過硬件連接2與實時時鐘1連接的流水線處理器7的結構簡圖;其中流水線處理器7包含多個處理單元陣列4a,4b和5(處理單元未在圖中畫出),陣列4a與每個4b各有256個處理單元,陣列5有512個處理單元。輸入/輸出端口9分別與陣列4a,4b和5中的第一處理單元連接,用于接收供流水線處理器7處理的數據,例如從一個與端口9連接的客戶機(未在圖中畫出)輸入的數據。還有一個通過硬件連接2與時鐘源1連接的時鐘導體3,該時鐘導體在每個陣列4a,4b和5旁以時鐘分配電路的形式蜿蜒分布。該時鐘導體3還單獨與每一陣列4a,4b和5中的每一個處理單元電通信。
參考圖2,示出了由處理器單元81、82、83、…8n-1和8n的組成的串接陣列的結構簡圖;其中的獨立處理器單元8包含在圖1所示流水線處理器7的陣列4a的集合中。每個處理器單元8分別通過連接10與時鐘導體3電通信。時鐘導體3又經硬件連接2與時鐘發生器電路、即時鐘源連接。其中與陣列4a的第一處理器單元連接的輸入/輸出端口9用于接收客戶站(未在圖中畫出)送來的數據,該客戶站也與輸入/輸出端口9連接,以輸入供陣列4a處理的數據。
在操作時,數據是由客戶站經端口9處提供的,例如,包含在一個完整文件中的多個數據塊形成的數據流。陣列4a中的第一處理器單元81經端口9接收第一數據塊,并執行預定的第一級處理。當然,第一處理器單元81與端口9的存儲緩沖器(未在圖中畫出)應是時間同步的,這樣才能使數據流同步進入處理器單元81。例如,時鐘導體3從實時時鐘1提供一個時間信號,該時間信號在與存儲緩沖器的時鐘信號相關的預定時間內,到達第一處理器單元81。在第一處理周期結束時,第一處理器單元81經端口9收到第二個數據塊。同時,第一處理器單元81根據第一數據塊得到一個輸出、沿著向前處理途徑傳送到第二處理器單元82。另外,第一處理器單元81還沿返回處理路徑向端口9的緩沖器提供一個第二計算結果。
在第二個處理周期內,第一處理器單元81對第二數據塊同樣執行一次與第一處理操作、而第二處理器單元82對所述的第一個數據塊執行一次第二處理操作。在第二個處理周期結束時,對所述第一數據塊進行處理的結果會沿著向前處理路徑分別在第二和第三處理器單元82和83之間傳播。同樣的,對所述第二數據塊進行處理的結果會沿著向前處理路徑分別在第一和第二處理器單元81和82之間傳播。此外,第二處理器單元82沿著返回處理路徑將其計算結果傳輸到第一處理器單元81。當然,沿著向前處理路徑和返回處理路徑在相鄰處理器單元之間的數據傳輸需要有一個同步時序。沿兩種處理方向所執行的處理操作都必須在數據向任一方向傳送之前完成。
參考圖3,示出了現有流水線處理器中的多個處理器單元的門控信息時序圖。圖中畫出了分別與前五個處理器單元1,2,3,4,和5對應的時序圖。其中每一時鐘周期由一對字母表示,例如AB、CD、EF等。為了描述方便,假設所述門控信息在時鐘周期的“上升沿”選通每一個處理器單元的輸入及輸出。例如,沿著向前處理路徑,處理器單元1在AB的上升沿輸入第一數據塊,并在一個周期內對該第一數據塊進行處理。同樣,處理器單元2在CD的上升沿從處理器單元1輸入所述第一數據塊,并在一個周期內對該第一數據塊進行處理。另外,沿著返回處理路徑,處理器單元1在EF的上升沿從第二處理器單元輸入已處理的第一數據塊。
當然,現有系統的時鐘周期比率至少應與沿向前和返回之一的處理方向上每一級中所需的最長處理時間一樣長。如數據流沿著串接陣列以步進式傳播,每一步處理必須在數據再次被傳播前完成。因此,如果沿返回處理路徑的處理與沿向前處理路徑的處理相比需要較短的時間,則在每一級反向處理路徑中需引入一個延遲,以便向前處理路徑上的處理能順利完成。
另外,從圖3中可以看出,每一處理器單元必須與同一陣列中的其它處理器單元同步。也就要圖1中的時鐘必須沿陣列的每一段分配。這是一個典型的代價高而且難以解決的問題。其解決需要復雜的硬件設計以及集成電路拓撲設計和分析。
在解決這種時鐘分配問題的一個方法中,第一處理器為第二處理器提供時鐘信號、第二處理器又為第三處理器提供時鐘信號,依此類推。這種方法中,相鄰單元之間存在同步,但對于距離較遠的單元,則不能保證同步。然而這種消除時間同步的方法是在沒有全局時鐘的情況下執行的,從而使時鐘在每兩個需要數據通信的單元之間傳遞,這樣就導致了不同時鐘分配的問題。
參考圖4,其中示出了本發明中流水線處理器中用于多個處理器單元的門控信息的時序圖。該圖例中示出了包含前十個處理器單元、也即第1、2、3、4、5、6、7、8、9及10個處理器單元的串接陣列子集的獨立時序圖。每一時鐘周期用一對字母表示,例如AB、CD、EF等等。為了討論方便,假設所述門控信息在時鐘周期的“上升沿”選通每一個處理器的輸入及輸出。例如,沿著向前處理路徑,處理器單元1在AB的上升沿輸入第一數據塊,并在一個周期內對該第一數據塊進行處理。同樣,處理器單元2在CD的上升沿從處理器單元1輸入所述第一數據塊,并在一個周期內對該第一數據塊進行處理。另外,沿著返回處理路徑,處理器單元1在EF的上升沿從第二處理器單元輸入已處理的第一數據塊。為了討論方便,還假設在任一處理器需要最多時間來完成的處理操作是沿著向前處理路徑方向的。當然,如圖4中所示,對于不同的處理單元,所述上升沿發生在不同的時間。
再參考圖4,每一時序圖與其前一處理器單元的時序圖相比有一個微小的偏移δ,其中的δ等于到達該處理器的時鐘信號的增量延遲。因為時鐘導體中所含電路的電容及電阻特性,所述有限的時間段δ等于時間信號到達第一處理器單元與時間信號到達第二處理器單元之間的間隙。而設備與不同處理器單元之間的時鐘信號有一個故意的延遲,因此,處理器單元1與處理器單元2之間的時間同步有一個偏移量δ。同樣,每一對相鄰處理器單元之間的時間同步也有一個偏移量,例如δ。也就是說,偏移量雖然不同,但仍在可知范圍內。
再參考圖4,對于同一處理操作,本發明的單個時鐘周期比圖3所示現有技術時序圖中的時鐘周期要短。這似乎意味著處理器單元在輸入新的數據之前沒有足夠的時間沿向前處理路徑完成其處理操作。例如,在圖3中的時鐘周期至少與沿向前路徑上的最長的處理操作的時間一樣長。而在本實施例中,到達處理器單元1之外的各個處理器單元的時鐘信號有一個逐漸增大的延遲。在效果上,這種延遲為處理的完成提供了更多的時間,例如,在下一數據塊輸入由處理器單元2進入處理器單元3之前,處理器單元2有更多的時間沿向前處理路徑完成其操作。其有利點在于,單個時鐘周期的最小長度可被減小到等于一個時間長度,該時間長度等于完成最長處理操作所需的時間,并小于需要較長處理時間的路徑、此處為向前路徑上的單元之間的時間延遲。因此,在向前處理路徑上,從某一處理器單元輸入一數據塊到下一處理器單元從該單元中輸入已處理的該數據塊之間,有一個大于一個完整時鐘周期的時間間隙。另外,在返回路徑上,從某一處理器單元輸入一數據塊到下一處理器單元(按向前路徑則是前一單元)從該單元中輸入已處理的該數據塊之間,有一個小于一個完整時鐘周期的時間間隙。本發明在返回路徑上提供了一個所謂的“趕回”動作,從而使總的周期時間小于其中一個處理方向的時間,但至少是兩個方向處理時間的平均值。
參考圖5,示出了本發明中三個相鄰處理器單元3,4和5的時序圖。第一數據塊在100時刻輸入處理器單元4,并由處理器單元4在時鐘周期FG內進行處理。其中,處理器單元4由處理器單元3的輸出端讀出所述第一數據塊,而該第一數據塊是在時刻101輸入到處理器單元3中的。處理器單元4同時使第一數據塊對于處理器單元5是可獲取的,其中處理器單元4將第一數據塊提供到其一個輸出端,使該第一數據塊在時刻104被讀取到處理器單元5。顯然,步驟101、100和104包含向前處理路徑的一部分。從圖5中可清楚看出,在向前處理路徑上,從某一處理器單元輸入一個數據塊到下一處理器單元從該單元中輸入已處理的該數據塊結果之間,有一個大于一個完整時鐘周期的時間間隙。
同樣,步驟102、100和103包含相反處理路徑的一部分,其中含有由某一處理器單元所處理的數據的一個數據塊被提供給該陣列中的前一處理器單元。從圖5中可清楚看出,在返回路徑上,從某一處理器單元輸入一個已處理數據塊到下一處理器單元從該單元中輸入已進一步處理的該數據塊之間,有一個小于一個完整時鐘周期的時間間隙。可見,在向前處理路徑上積累的處理延遲可在返回路徑上被“趕回”來。這就是一般所說的“雙向平均”現象。另外,因為本發明中減小了時鐘周期的長度,其總的優點在于增中了現有雙向流水線處理器的處理速度。
本發明的一個優點在于每一個處理器單元只需要與相鄰的兩個單元之間通信,這時一個總能確定一個準確的延遲并將其維持在預定范圍內。本發明的另一優點在于可將電路設計成n個相鄰的處理器單元,此時整個流水線處理器是由一系列的n單元“宏”所構成。當然,每當需要將一個宏塊與另一宏塊連接時,還需要一個電路來解決不同宏的處理器單元之間的額外延遲。宏的設計應易于相互聯絡,這樣才能使其首端和尾端能與另一相鄰的宏兼容、以繼續執行同樣的操作。在圖9示出了本發明中兩個宏塊91和92的示意圖。這兩個宏塊可按任一種串接方式排列,并在處理單元之間提供基本一致的路徑延遲。
參考圖6,示出了本發明的第二實施例中流水線處理器12的結構簡圖。流水線處理器12包括多個處理器單元陣列4a,4b和5(處理器單元未在圖中畫出),其中陣列4a和4b各有256個處理單元,陣列5有512個處理單元。圖中的虛線6a和6b分別代表可選擇的電連接,用于在陣列4a的第256個處理單元與陣列4b的第256個處理單元之間、以及在陣列4b的第1個處理單元與陣列5的第1個處理單元之間提供電通信。時鐘分配電路3分別與陣列4a,4b和5中的各個處理器單元電通信。圖6中還有一個經硬件連接2與流水線處理器12電通信的時鐘發生器1。圖中還有一個分別與陣列4a,4b和5的第一處理單元連接的輸入/輸出端口9,用于接收客戶站(未在圖中畫出)送來的數據,該客戶站也與輸入/輸出端口9連接,以輸入供陣列4a,4b和5中指定的一個串接排列進行處理的數據。
參考圖7,示出了本發明的第三實施例中流水線處理器13的結構簡圖。流水線處理器13包括多個處理器單元陣列4a,4b和5(處理器單元未在圖中畫出),其中陣列4a和4b各有256個處理單元,陣列5有512個處理單元。陣列4a的第256個處理單元與陣列4b的第256個處理單元之間通過硬件連接11a電通信,陣列4b的第1個處理單元與陣列5的第1個處理單元之間也通過硬件連接11a電通信。時鐘分配電路3分別與陣列4a,4b和5中的各個處理器單元電通信。圖7中還有一個經硬件連接2與流水線處理器13電通信的實時時鐘1。圖中還有一個分別與陣列4a,4b和5的第一處理單元連接的輸入/輸出端口9,用于接收客戶站(未在圖中畫出)送來的數據,該客戶站也與輸入/輸出端口9連接,以輸入供陣列4a,4b和5的串接排列進行處理的數據。另外,還可選擇單獨設置一個至少向陣列4a的第一處理器單元之外的處理器單元直接輸入數據的輸入端口。
圖6和圖7中所示的流水線處理器12和13可按分別以下模式操作,其中輸入陣列4a的第256個處理器單元的數據可被陣列4b的第256個處理器單元得到。當某一特殊操作需要多于256個處理器單元時,可通過將所述處理操作轉到第二個不同陣列執行、以增加處理器陣列的有效長度。當然,當某一特殊操作需要多于512個處理器單元時,可通過將所述處理操作轉到第三個不同陣列執行、以增加處理器陣列的有效長度。對于圖6和圖7中所示的任一流水線處理器當需要執行256位加密處理時,采用單個陣列;當需要執行512位加密處理時,采用兩個不同陣列;而當需要執行1024位加密處理時,采用全部三個陣列。當然,可將陣列4a的第256個處理器單元與陣列4b的第一處理器單元連接起來,但此時需保證陣列4a的第256個處理器單元和陣列4b的第一處理器單元能彼此同步并與緩沖器同步。這種同步需求由于需要嚴格統一的分配時鐘,會增加電路設計的復雜性。同時,大多數流水線處理器的排布都要求每一單元必須在每一周期內完成處理操作,而時鐘同步通常會增加一個等待狀態,使得陣列中的第257個單元將比其前面的單元晚一個時鐘周期處理數據。
不管采用圖6中的可選擇形式還是圖7中的固定形式,當陣列4a的第256個處理器單元與陣列4b的第256個處理器單元連接時,將喪失前面所述的“雙向平均”優勢。然而其優點在于,能夠對多個處理器單元陣列、其中每一陣列包含相同數目的處理器單元,采用這種首尾連接的方式。此時的時鐘信號沿每下一個陣列遞增延遲,但又能在其間再次趕回。
當然,因為時鐘分配并不特別重要,而且時鐘分配的延遲有較好的支持,時鐘信號可從兩個時鐘源中選擇一個輸入每一處理單元。按與圖7中所示處理器類似的結構,時鐘可通過連接11a與第二處理器陣列連接。如此一來就可以保持“趕回”的優點,并實現相鄰陣列之間的同步。另外,這種結構使得各種不同長度的陣列可彼此連接以組成更長的陣列,而不需要在其間保持時鐘同步。這里在第二陣列中的每一處理單元需要兩個時鐘,一個由第一方向的在前處理單元提供、另一個由第二其它方向的在前處理單元提供。由于時鐘在處理單元之間日延遲,所以切換電路的作用僅是將所需延遲的一部分或全部提供給時鐘信號。
參考圖8,示出了本實施例中一個具有時鐘切換電路的處理單元。端口81提供第一時鐘信號。端口82提供第二時鐘信號。因在使用時時鐘只沿其中一個方向傳播,所以端口81和82都可以是雙向端口。每一端口分別與時鐘驅動器84和83連接。這兩個端口還與一個開關85連接,以選擇其中一個時鐘并沿時鐘導體86提供到處理單元87。該時鐘同時還提供給兩個驅動器,其中只有一個工作。此時,每一單元從兩個可選擇的傳播方向中選擇一個傳播方向的時鐘信號進行傳播。
因為可以知道處理器將在何時完成其處理,所以使得指定該處理器處理另一處理器的順流數據成為可能。例如,假設處理器4a的處理單元可處理256位操作,并開始處理一個256位操作,再假設4b是一個類似的處理器,當處理單元4a開始一個處理之后并在其結束之前,傳來一個512位的處理請求,由于知道在該數據傳播到處理陣列4a的最后單元時,該單元將已經完成其對現有處理的操作,所以512位操作可在處理陣列4b中進行。通過減小處理器在等待其它處理器能支持鏈接陣列處理所需的待機時間,可以大大提高整個系統的性能。以蒙哥馬利為基礎的加密數據流水線處理采用蒙哥馬利算法,模數求冪的成本可降低為一系列長整數的加法運算。在乘法和加法結構中,目前有好幾種避免傳播的方法。這些方法中都采用蒙哥馬利算法與冗余基數系統、或余數系統結合。
在IEEE計算機會刊(42(6)693-699,1993年7月),由S.E.Eldridge and C.D.Walter所寫的“Hardware implementation of Montgomery’s modular multiplication algorithm(蒙哥馬利模數乘法算法的硬件實現)中,蒙哥馬利模數乘法算法被改編得適于硬件實現。因為采用了簡單的結合邏輯,可從較高的時鐘頻率取得速度的增加。與先前以Brickell算法為基礎的技術相比,報告了兩個取得高速度的因素。
數字設備公司(DEC)研究實驗室在IEEE VLSL系統會刊(4(1)56-69,1996年3月)中,報告了由J.E.Vuillemin,P.Bertin,D.Roncin,M.Shand,H.H.Touati,以及P.Boucard所寫的“Programmable active memoriesReconfigurable systems come of age”(可編程有源存儲器可重構系統時代的到來),并在IEEE計算機算法會議紀(第252-259頁,1993)的第11期論文集中,報告了由M.Shand和J.Vuillemin所寫的“Fastimplementationsof RSA cryptography”(RSA密碼系統的快速實現),由16 XILINX 3090 FPGA組成的陣列采用了包括中國余數定理在內的好幾種快速方法,異步加法器,以及一個窗口求冪方法來實現模數求冪。其中以185kb/s(每一次970位解密處理需5.2ms)的速度執行一個970位RSA解密運算,并以超過300kb/s(每一次512解密處理需1.7ms)速度執行512位RSA解密運算。本方案的缺點在于其模件的二進制表示是以硬布線方式置入到邏輯表示中的,所以對于每一個新的模件需要一次結構調整。
在蒙哥馬利模數乘法算法中采用高基數的一個問題在于需要更復雜決定的商。這一行動在直接方式之外還需要一個流水線處理執行。在計算機算法會議紀要(第193-199頁,1995年)的第12期論文簽訂中,報告了由In H.Orup所寫的“Simplifying quotientdetermination in high-radix modular multiplication(高基數模數乘法中的簡單商決定法)”,其中采用算法重寫以避免在商決定過程中的任何操作。每一給定商只執行所需的一次預先計算。
在IEEE國際電路與系統會議紀要(第2040-3頁,1995年)論文集第3卷中,報告了由P.A.Wang所寫的“New VLSI architectures of RSA public key crypto systems”,其中建議在蒙哥馬利模數乘法算法中采用一種新的VLSI結構。決定時鐘速度的關鍵路徑是流水線型的,這可通過算法的每一反復交叉處理來實現。與前面所述建議相比,報告了兩個提高時間區域的乘積因素。
J.Bajard,L.Didier和P.Kornerup在其發表于IEEE計算機匯刊(47(7)766-76,1998年7月)上的文章“An RNS Montgomery modular multiplication algorithm(一種RNS蒙哥馬利模數乘法算法)”中描述了一種使用余數系統(RNS)的新方法。在n個適度簡單的處理器上,用n個模件實現了該算法。其結果處理時間為·O(n)。
當然,以上引用的大部分文件與處理器的硬件實現是相關的,而處理器幾乎沒有或有很小靈活性。
對模數算法,已有若干個關于Systolic陣列結構的建議。它們有不同的復雜度和靈活性。
在E.F.Brickell于1990年,在Springer-Verlag舉行的CRYPTO’1989年度的密碼學進展的年會上發表的“A survey of hardware implementations of RSA(RSA硬件實現概觀)“中,E.F.Brickell總結了90年代可用于進行RSA加密的芯片。
在1991年舉行的關于計算機體系結構的第10次IEEE學術會論文集的第35-42頁中,N.Takagi提出了對迭代模數乘法有效率的基4模數乘法的硬件算法,作者建議采用基4硬件算法。其中采用冗余數表示,從而避免了附加的進位的傳遞。報告中說與以前的工作相比,處理速度提高了大約6倍。
基于J.Yong-Yin和W.P.Burleson的迭代Horner法則,最近提出了提前計算模件余數的方法。在IEEE關于VLSI系統的匯刊(5(2)211-17,1997年6月)上揭示了VLSI陣列算法和RSA模數乘法的體系結構。與蒙哥馬利算法相比較,這種方法使用了中間結果中最重要的位來決定減去模件的哪一倍數。此解決方案的不足是它們要么需要大量存儲空間,要么需要很多時鐘周期來完成模數乘法。
T模數求冪最通用的算法是平方&乘法運算。公開密鑰加密系統通常是基于模數求冪或重復點加法。兩種運算都是由平方和乘法算法完成的最基本形式。方法1.1計算Z=XEmod M,其中E=Σi=0n-1ei2i,ei∈{0,1}]]>1.Z=X2.FOR i=n-2 down to 0 DO3.Z=Z2mod M4.IF ei=1 THEN Z=Z·X mod M5.END FOR方法1.1在最壞情況下要進行2(n-1)次運算,而平均次數為1.5(n-1)。為了并行計算平方和乘法,可采用以下方式計算平方及乘法方法1.2計算P=XEmod M,其中E=Σi=0n-1ei2i,ei∈{0,1}]]>1.P0=1,Z0=X2.FOR i=0 to n-1 DO3.ZI+1=Zi2mod M4.IF ei=1THEN Pi+1=Pi·Zimod MELSEPi+1=Pi5.END FOR方法1.2在最壞情況下要進行2n次運算,而平均次數為1.5n。可利用一元方法實現速度加快,例如采用由D.E.Knuth在其“The Art of Computer Programming(程序設計技術)”第2卷半數字算法(Addison-Wesley,Reading,Massachusetts,1981年,第2版)中公開的一種由方法1.1廣義化的方法。該一元方法一次處理1個指數位。其缺點是必須預先計算并存儲X的(21-2)倍。有可能減小到21-1次預計算。結果是形成復雜性大致為n/l次乘法運算和n次平方運算。
如上所示,用蒙哥馬利方法可將模數求冪簡化為一連串模數乘法操作和平方步驟。以下所述模數乘法方法是由P.L.蒙哥馬利在“Modular multiplication without trial division(無須試除的模數乘法)”中提出的,該論文發表于1985年4月出版的《計算數學》雜志(44(170)519-21)上。這是一種用于將兩個整數以M模件進行乘法運算的方法,同時避免了除以M。該想法是用m余數對整數進行轉換并用這些m余數計算乘法。最后,將該表示轉換為其正常表示。該方法只有在計算轉換域內一連串乘法運算時才是有益的(例如,模數求冪)。
為計算蒙哥馬利乘法,基數R>M,選擇gcd(M,R)=1。如能被R除則最經濟,如果M=Σi=0m-1mi2i]]>,這樣理想的選擇是R=2m。x的m余數是xR mod M。也可計算M’=M-1mod R。其中提供了一個函數MRED(T)來計算TR-1mod M假設T是一個m余數,則該函數計算T的標準表示。方法1.3 MRED(T)計算蒙哥馬利T的減少T<RM,R=2m,M=Σi=0m-1mi2i,gcd(M,R)=1]]>1.U=TM’mod R2.t=(T+UM)/R3.IF t≥M RETURN t-MELSE RETURN tMRED(T)的結果是t=TR-1mod M.
在轉換域中,將兩個整數a和b相乘,其中,它們分別表示(aR mod M)和(bR mod M),兩者的乘積提供給MRED(T)MRED((aR mod M)·(bR mod M))=abR2R-1=abR mod M對模數求冪,按照方法1.1或1.2重復該步驟若干遍以得到最后結果ZR mod M或PnR mod M。這些數值中的一個提供給MRED(T),以得到結果Z mod Mo或Pnmod M。
初始轉換步驟仍然需要昂貴的模件約簡。為避免涉及除法,用除法計算R2mod M。對給定的密碼系統,該步驟只需要進行一次。為在轉換域中得到a和b,執行MRED(a·R2mod M)和MRED(b·R2modM)以得到aR mod M和bR mod M。顯然,以這種方式中可轉換任何變量。
對方法1.3的硬件實現,使用m×m位的乘法和2m位的加法以計算步驟2。中間結果可多達2m位。替代一次U的計算,計算r基表示的一個數字。選擇基數r,使得優選gcd(M,r)=1。被r的除法最好也是廉價的,這樣,理想的選擇是r=2k。全部變量可用r基表示。另一改進是在該算法中包括乘法A×B。方法1.4用于計算A·B mod M的蒙哥馬利模數乘法,其中Σi=0m-1(2k)imi,mi∈{0,1…2k-1;B=Σi=0m-1(2k)ibi,bi∈{0,1…2k-1};]]>A=Σi=0m-1(2k)iai,ai∈{0,1…2k-1;A,B<M;M<R=2km;M′=-M-1mod2k;gcd(2k,M)=1]]>1.S0=02.FOR i=0 to m-1 DO3.qi=(((Si+aiB)mod 2k)M’)mod 2k4.Si+1=(Si+qiM+aiB)/2k5.END FOR6.IF Sm≥M RETURN Sm-MELSERETURN Sm應用方法1.4的結果是Sm=ABR-1mod M。對基2k,至多需要兩次k×k位乘法運算和一次k位加法來計算步驟3。對步驟4,需要兩次k×m位乘法運算和兩次m+k位加法運算。與方法1.3的2m位相比,將S的最大位長度減到m+k+2。
方法1.5是基r=2時對方法1.4的簡化。對基r=2,方法1.4的步驟3的運算是以2為模完成的。由于條件gcd(M,2k)=1,模件M是偶數。下面立即有M=1 mod 2。這樣,M’=-M-1mod 2也退化為M’=1。而且,在步驟3,與M’mod 2的乘法可隨意忽略。方法1.5蒙哥馬利模數乘法(基r=2)計算用于計算A·B mod M的蒙哥馬利模數乘法,其中M=Σi=0m-1(2k)imi,mi∈{0,1};]]>B=Σi=0m-1(2k)ibi,bi∈{0,1};A=Σi=0m-1(2k)iai,ai∈{0,1};A,B<M;M<R=2m;gcd(2,M)=1]]>1.S0=02.FOR i=0 to m-1 DO3.qi=(Si+aiB)mod 24.Si+1=(Si+qiM+aiB)/25.END FOR6.IF Sm≥M RETURN Sm-MELSE RETURN Sm方法1.5的步驟6的最后的比較和減法實現成本高,由于m位的比較非常慢,資源使用上很昂貴。這也會使得該算法不可能流水線執行。如果A,B<M,很容易證明Si+1<2M始終成立。但是,Sm不能再用為下一次模數乘法的輸入A或B。如果am+1=0以及輸入A,B<2M,將循環執行2次多,就滿足不等式Sm+2<2M。這樣,Sm+2c可用作下一次模數乘法的輸入B。
為進一步減低方法1.5的復雜性,將B上移一個位置,即乘以2。其結果是ai·B mod 2=0,且可避免步驟3中的加法。在刷新Si+1(Si+qiM+aiB)/2時,可用(Si+qiM)/2+aiB代替。這種簡化的代價是要多執行一次am+2=0的循環。以下方法包括了這些優化。方法1.6用于計算A·B mod M的蒙哥馬利模數乘法(基r=2),其中M=Σi=0m-1(2k)imi,mi∈{0,1};B=Σi=0m-1(2k)ibi,bi∈{0,1};A=Σi=0m-1(2k)iai,ai∈{0,1};]]>A,B<2M;M<R=2m+2;gcd(2,M)=11.S0=02.FOR i=0 to m+2 DO3.qi=(Si)mod 24.Si+1=(Si+qiM)/2+aiB5.END FOR
以上算法計算Sm+3=(2-(m+2)AB)mod M。為得到正確的結果,以22(m+2)mod M執行額外的蒙哥馬利模數乘法。但是,如果在求冪運算中需要進一步的乘法操作,最好將全部輸入預乘因數22(m+2)mod M。這樣,每個中間結果帶有一個因數2m+2。用“1”與將該結果進行蒙哥馬利乘法,可消除該因數。
最后的蒙哥馬利乘法帶有“1”,可保證最后結果小于M。高基數的蒙哥馬利算法通過避免步驟6中昂貴的比較和減法操作以及將條件改為4M<2km和A,B<2M,在用硬件實現方法1.4會產生一些優化。其代價是將循環多執行2次。最終方法如下方法1.7用于計算A·B mod M的蒙哥馬模數乘法,其中M=Σi=0m-3(2k)imi,mi∈{0,1…2k-1M~=(M′mod2k)M,M~=Σi=0m-2(2k)im~i,m~i∈{0,1…2k-1};]]>B=Σi=0m-1(2k)ibi,bi∈{0,1…2k-1};---A=Σi=0m-1(2k)iai,ai∈{0,1…2k-1;]]>A,B<2M~;4M~<2km;M′=-M-1mod2k]]>1.S0=02.FOR i=0 to m-1 DO3.qi=(Si+aiB)mod 2k4.Si+1=(Si+qiM~+aiB)/2k]]>5.END FOR因為aiB mod 2k=0,步驟3簡化為qi=Simod 2k,所以可以通過用B·2k代替B來降低商qi的確定復雜性。為補償B中的額外的因數2k,可以循環的額外迭代的代價來避免步驟3的加法。以下示出了蒙哥馬利方法硬件實現的優化。方法1.8用于計算A·B mod M的蒙哥馬利模數乘法,其中M=Σi=0m-3(2k)imi,mi∈{0,1…2k-1M~=(M′mod2k)M,M~=Σi=0m-2(2k)im~i,m~i∈{0,1…2k-1};]]>B=Σi=0m-1(2k)ibi,bi∈{0,1…2k-1};---A=Σi=0m(2k)iai,ai∈{0,1…2k-1},am=0;]]>A,B<2M~;4M~<2km;M′=-M-1mod2k]]>1.S0=02.FOR i=0 to m-1 DO3.qi=Simod 2k4.Si+1=(Si+qiM~)/2k+aiB]]>5.END FOR然后將最后的結果與1進行蒙哥馬利相乘以消除以上討論的因素。
在由Thomas Blum于1999年4月8日提交給Worcester工學院、題目為“ModularExponentiation on Reconfigurable Hardware(在可重構硬件上模數求冪)”的論文在此結合作為參考,Thomas Blum提出兩種不同的流水線體系結構,以便用模數乘法和蒙哥馬利空間執行加密函數基于方法1.6的區域效率的體系結構以及快速高效體系結構。作為目標裝置,使用了Xilinx XC4000系列的裝置。
通用的基2 Systolic陣列使用m×m個處理單元,其中m是模件的位數,每個單元只處理一個位。可同時進行2m個模數乘法運算,其特點是,每個時鐘周期一次模數乘法的吞吐量以及2m的等待時間。這種方法對在現代公開密匙方案中所要求的典型位長度產生不切實際大的CLB計數,只實現了處理單元中的一列。用此方法,可同時對兩個模數乘法運算進行處理,并且效能降低為每2m個周期進行兩次模數乘法運算的吞吐量以及等待時間保持為2m周期。
第二個考慮是基的選擇r=2k。增加k可減少方法1.8執行的步驟個數。但這種方法需要更多的資源。主要的開銷在于M和B的2k倍的計算。它們或者被預先計算并存儲在RAM中,或者由多路復用網絡計算。顯然,對r=2,CLB計數達到最小,因為無須對M或B的倍數進行計算或預計算。
使用基r=2,可計算方法1.6中的等式。為進一步減小所需要的CLB數量,可有選擇地采取以下措施每個單位處理大于1個位,單個加法器用于預計算B+M,以及在正常處理期間進行其他加法運算,并行計算平方和乘法運算。該方法從結構上可劃分為3個級別。處理單元計算u位模數乘法。模數乘法一個處理單元陣列用于計算模數乘法。模數求冪將模數乘法運算與模數求冪按照方法12進行結合處理單元圖10示出了處理單元的實現。
在處理單元中有以下寄存器·M-Reg(u位)存儲模件·B-Reg(u位)存儲B乘數·B+M-Reg(u位)存儲中間結果B+M·S-Reg(u+1位)存儲中間結果(包括陣列)·S-Reg-2(u-1位)存儲中間結果·Control-Reg(3位)控制乘法器和時鐘使能·ai,qi(2位)乘數A,商Q·Result-Reg(u位)存儲乘法結束時的結果寄存器總共需要(6u+5)/2個CLBs,加法器需要u/2+2個CLBs,乘法器需要4·u/2個CLBs,譯碼器需要2個CLBs。組合邏輯的復用寄存器有可能允許節省一些CLBs。用B-Reg和Result-Reg的CLBs實現MuxB和MuxRes,用部分M-Reg和B+M-Reg的CLBs實現Mux1and Mux2。結果的代價近似為每個位的處理單元為3u+4 CLBs。即,每個位3-4個CLBs,這取決于單元大小u。
在一個單元計算模數乘法之前,必須加載系統參數。將M存儲到該單元的M-Reg。在開始模數乘法時,按照多路復用器B-Mux的選擇線,從B-in或S-Reg加載操作數B。下一步是再計算一次M+B并將結果存儲到B+M-Reg。該操作需要2個時鐘周期,先將計算結果被送入S-Reg。Mux1和Mux2的選擇線分別由ai或控制字控制。
在以下2(m+2)周期內,按照方法1.6計算模數乘法。多路復用器Mux1按照二進制變量ai和qi的數值,選擇其輸入0,M,B,B+M中的一個,送到加法器中。Mux2將前面結果S-Reg2的u-1最大位加上下一單元(除以2/右移)最低結果位,送到該加法器的第二輸入端。在一個周期內將該結果存儲在S-Reg中。該最低位進到該單元到右側(除以2/右移),該單元的進位到左側。在該周期內,在加法器中,用S-Reg2,ai和qi的刷新數值計算第二模數乘法。除了不同的運算數A,第二乘法使用相同的運算數B。
在模數乘法結束時,在一個周期內,Sm+3在加法器輸出端是有效的。該數值被存儲在Result-Reg,并通過S-Reg送到B-Reg。第二乘法的結果在一個周期后送到Result-Reg。
圖11示出處理單元如何連接成一個陣列,以計算m位模數乘法。以每個Unit處理u位,對m位執行該方法,要使用m/u+1個Unit。其中Unit0只有u-1個B輸入,作為B0的輸入,加到移位的數值Si+qiM上。按照蒙哥哥馬利算法原理,結果位S-Reg0始終為0。Unitm/u處理B的最高位和中間結果Si+1的臨時溢出,沒有M輸入到該Unit。
該單位(Unit)的輸入和輸出按以下方式彼此連接。控制字qi和ai抽吸從右到左通過該單位。該結果從左抽吸到右。進位出信號送到右邊的進位入。輸出S_0_Out始終連接到該單位的輸入S_0_In到右側。這表示公式中被2除。
首先,將模件M送到單位。為有足夠時間將信號傳遞到全部單位,M在兩個時鐘周期內是有效的。我們使用兩個M總線,將M-偶數-總線連接到所有所有偶數編號的單位,將M-奇數-總線連接到所有奇數編號的單位,這種方法可在每個時鐘周期內將u位送到該單位。這樣,裝載全部模件M需要花費m/u個周期。
同樣方式裝載運算數B。這些信號在2個時鐘周期內也是有效的。在裝載運算數B后,方法1.6步驟開始作用。
在最右單位unit0t開始,控制字ai,和qi送到其寄存器。按照ai和qi,加法器在一個讀時鐘周期內計算S-Reg-2加B,M,或B+M。結果的最低位在下次計算中作為qi+1讀回。結果的進位、控制字ai和qi被抽吸到該單位左,在下一個時鐘周期進行同樣計算。
用這種中心收縮方式,可將控制字ai,qi和進位從右到左抽吸通過全部單位進位。方法1.6中的被2除,也可導出右移操作。單位加法的最低位(S0)始終送到單位右。在完成模數乘法后,將結果從右抽吸到左通過該單位,連續存儲在RAM中作進一步處理。
單個處理單元計算u位的Si+1=(Si+qi·M)/2+ai·B。在時鐘周期i,單位0計算Si的0...u-1位。在i+1時間周期,單位1使用產生的進位并計算Si的u...2u-1位。在i+2時間周期,單位0使用Si(S0)右移(除2)的位u計算Si+1的0...u-1位。時鐘周期i+1在單位只是等待單元1結果而無操作。按照方法1.2,通過并行計算平方和乘法運算可避免該低效率。pi+1和zi+1取決于zi。這樣,中間結果zi存儲在B寄存器中,將pi送到單元的ai輸入以進行平方和乘法運算。
圖12示出如何使用單位陣列進行模數求冪。該結構的中心是一個有17個狀態的有限狀態機(FSM)。在空閑狀態,4個狀態用于加載系統參數,3×4個狀態用于模數求冪。在四個主狀態“預計算1”、“預計算2”、“計算”和“計算后”中執行實際的模數求冪。這些主狀態中的每一個被劃分為三個子狀態load-B,B+M,和計算乘法。按照狀態對送到控制入的控制字進行編碼。該FSM以1/2的時鐘速率為時鐘信號。對裝載和讀入RAM和DPRAM單元也同樣如此。這種措施可保證最大傳播時間處在這些單位內。這樣,模數求冪的最小時鐘周期時間和產生結果的速度與單位中的有效計算時間關聯,而與計算的開銷無關。
在模數求冪之前,裝載系統參數。在該時刻將該模件M的2u位從I/O讀到M-Reg。
從低階位到高階位開始,時間交替地將從M-Reg讀出低階位到高階位的u位到M-奇數-總線和M-偶數-總線。這些信號在兩個時間周期內是有效的。指數E是從I/O讀出并存儲在Exp-RAM中的16位。來自I/O的第一個16位寬的字用各個位規定了指數的長度。多達64的以下的字包含實際的指數。該時刻從I/O讀出2u位的預計算因子22(m+2)mod M。它被存儲到Prec-RAM。
在預計算狀態,每個周期u位,我們從I/O讀出X數值,將之存儲在DP RAM Z。同時,從Prec RAM讀出預計算因子22(m+2)mod M,每個時鐘周期u位,通過M-奇數-總線和M-偶數總線交替地將其送到單位的B寄存器中。在以下的兩個時鐘周期內,在單位中計算B+M。
方法1.2的初始數值是存在的。并行地將兩個數值乘以2,兩個乘法運算使用公共的操作數22(m+2)mod M,該運算數已經存儲在B中。時分多工(TDM)單位從DP RAM Z讀出X,將之乘以X和1。在2(m+3)時鐘周期后,結果的低階位出現在Result-Out,將之存儲在DP RAM Z。一個周期后,下一個結果的低階位出現在Result-Out,將之存儲在DP RAMP。該過程重復2m個周期,直到兩個結果中所有數字存儲在DP RAM Z和DP RAM P中。結果的X·2m+2mod M也存儲在單位的B寄存器中。
在預計算2狀態下,啟動方法1.2的實際步驟。對Z和P1的計算,將Z0用作操作數。該數值存儲在B寄存器中。分別從DP RAM Z和DP RAM P讀出第二操作數Z0或P0,并通過TDM“抽吸”ai到各單位。在另外的2(m+3)個時鐘周期后,在Result-Out出現Z1和P1結果的低階位。將Z1存儲在DP RAM中。只有在指數e0的第一位等于“1”時,才需要P1。根據e0,可將P1存儲在DP RAM P中或丟棄。
在計算狀態,將方法1.2的循環執行n-1次。每個周期后,刷新DP RAM Z中的Zi,并作為ai“抽吸”回各個單位。DP RAM P中的Pi只有在指數ei相關位等于“1”時才刷新。用這種方法,始終可將最后存儲的P抽吸回各個單位。
在處理en-1以后,FSM進入后計算狀態。為從結果Pn消除因子2m+2,計算最后的與1的Montgomery乘法。將第一矢量0,0,...0,1通過M-奇數-總線和M-偶數總線交替送到單位的B寄存器。從DP RAMP抽吸Pn作為ai送到各個單位。在執行后計算狀態后,在I/O端口,u位的結果Pn=XE mod M是有效的。每兩個時鐘周期,在I/O出現另外的u位。可立即重新進入預計算狀態,以計算另一個X數值。
在2(n+2)(m+4)個時鐘周期內計算完全的模數求冪。這有一個延遲,從將X的前u位插入該裝置開始,直到在輸出出現前u個結果位。在此觀點看,另一個X數值可輸入到該裝置。利用m/u時鐘周期的附加的潛伏性,在輸出總線出現最后的u位。
下文解釋圖12中的功能模數。圖13示出DP RAM Z的結構。m/u×u位的DP RAM處于該單元中心。它有分離的寫(A)和讀(DPRA)地址輸入。計數到m/u的寫計數器計算寫地址(A)。當Zi的前u位出現在數據入(data in)時,寫計數器啟動子狀態B-load的計數(時鐘使能)。同時,DP RAM的使能信號是有效的,將數據存儲在DP RAM。當達到m/u時,端子計數復位DP RAM的計數使能和寫使能。在計算子狀態中,使能該讀出計數器。在讀出計數器達到其上限m+2,端子-計數觸發FSM躍遷到B-load子狀態。讀出計數器數值(q out)的log2(m/u)個最高位選址DP RAM的DPRA。每u個周期,讀出DP RAM中存儲的另一數值。當q的log2(u)個最低位達到0,將該數值裝載到移位寄存器中。在下u個周期,該u位將逐位出現在移位寄存器的串行輸出上。將zi的最后數值存儲在一個u位寄存器中。這種安排使得我們能夠選擇m/u×u位的DP RAM來代替2m/u×u-位的DP RAM(m=2x,x=8,9,10)。
DP RAM P幾乎以同樣方式工作。它有一個額外的輸入ei,在ei=1時,可以激活DPRAM的寫使能(write-enable)信號工作。
圖17示出Exp RAM的結構。在裝載指數狀態的第一個周期內,從I/O讀出第一個字,將之存儲在10位寄存器中。該數值規定了以位表示的指數的長度。在以后的周期,讀出16位的指數,并存儲在RAM中。由一個6位寫計數器計算存儲地址。在每個計算狀態的開始,該10位讀出計數器被使能。它6個最高位計算該存儲地址。這樣。每16次激活,從RAM中讀出新的數值。在讀出計數器4個最低位等于0的同時,將該數值存儲在16位的移位寄存器中。當讀出計數器達到10位寄存器中規定的數值時,端子信號觸發FSM進入后計算狀態。
圖15示出Prec RAM的結構。在load-pre-factor狀態,從I/O讀出2u位的預計算因子并存儲在RAM中。計數達到m/2u的計數器選址該RAM。當讀出全部m/2u個數值,端子計數信號觸發FSM離開load-pre-factor狀態。
在狀態預計算1中,從RAM中讀出預計算因子并送到帶單元的B寄存器。每個時鐘周期該計數器遞增,將2u位裝入2u位寄存器。在每個時鐘的正向邊沿,從中將u位送到B-偶數-總線上。在負時鐘邊沿,將u位送到B-奇數-總線。一種快速高效的體系結構上述結構可優化其資源的使用。使用基數r=2k,k>1,可用因數k.減少方法1.6的步驟數。方法1.8的計算執行m+3次(i=0 to m+2)。
很容易將一種快速高效的體系結構按級劃分為三層。處理單元計算模數乘法的4位模數乘法一個處理單元陣列計算模數乘法模數求冪將模數乘法運算與模數求冪按照方法12進行結合圖16示出處理單元的實現。
配置了以下單元·B-Reg(4位)存儲B乘數·B-Adder-Reg(5位)存儲B被乘數·S-Reg(4位)存儲中間結果Si
·Control-Reg(3位)控制乘法器和時鐘使能·ai-Reg(4位)乘數A·qi-Reg(4位)商Q·Result-Reg(4位)存儲乘法結束時的結果·B-Adder(4位)將B加到以前計算出的B的倍數上·B+M~-Adder(4位)將M~的倍數加到B的倍數上·S+B+M~-加法器(5位)加中間結果M~SitoB+·B-RAM(16x4位)存儲B的16倍·M~-RAM(16x4位)存儲M~的16倍該單元的運算很容易從前面引用的T.Blum,T的論文和附圖的闡述中導出。
圖17示出處理單元如何連接到陣列,進行全部大小的模數乘法。
圖18示出如何使用單元陣列進行模數求冪。
圖19示出DP RAM Z的結構。m×4位的DP RAM處于該單元的中心。它有分離的寫(A)和讀(DPRA)地址輸入。兩個計數器遞增計數到m+2,計算這些地址。當數據入出現Zi的第一個數字時,寫計數器啟動子狀態B-負載中的計數(時鐘使能)。同時,激活DP RAM的使能信號,將數據存儲在DP RAM中。當達到m+2時,寫計數器的端子計數信號復位兩個使能信號。在子狀態計算時,使能該讀計數器。DP RAM的數據被讀計數器輸出的q選通,并立即出現于DPO。當讀計數器達到m+2,端子-計數觸發FSM變換到子狀態B負載。將zi最后兩個數值存儲在各個4位的寄存器中。
該方法允許我們選擇100%利用的m×4位的DP RAM,來代替只有50%利用的2m×4位的DP RAM。該DP RAM P以幾乎相同的方式工作。它有一個附加的輸入ei,,在ei=“1.”時,激活DP RAM的寫使能信號工作。
由于上述流水線處理器結構中體現了許多流水線處理單元,因此將每一單元同步到同一集成電路中的時鐘源常常困難而費用高昂,所以,本發明通過克服時鐘分配問題來減少總的資源需求。同樣,既然在一個方向需要加法,在其它方向需要乘法,顯然沿一條路徑需要花費比其他路徑更多的時間,所以,按照本發明的實施例,有可能使路徑時間平均化。
當然,還會有許多不偏離本發明精神或范圍的其他實施例。
權利要求
1.一種數據處理設備,包括以串接陣列排列的多個獨立處理單元,其中,第一處理單元先于第二處理單元,第二處理單元先于第n處理單元;以及,與所述串接陣列中的多個獨立處理單元中每一個處理單元電通信的時鐘分配電路,使得在使用中,沿時鐘分配電路傳播的時鐘信號以相對于時鐘信號到達前一處理單元的延遲到達每一個處理單元,其中,從數據寫入處理單元到該數據被后一處理單元讀出的時間等于時鐘周期準確個數k,這里k大于0,不足以從該處理單元產生出準確的輸出數據,但如果有額外的延遲則上述時間就足以產生出準確的輸出數據,在所述時鐘周期準確個數k后,待處理的新數據被讀入同一處理單元。
2.根據權利要求1所述設備,所述串接陣列有一個沿第一方向的第一路徑以及一個沿第二其它方向的第二路徑,所述第二路徑在每一級的處理時間比第一路徑在每一級的處理時間要短。
3.根據權利要求2所述設備,所述時鐘信號是獨立地分配到各處理單元的。
4.根據權利要求3所述設備,任何兩個相鄰處理單元之間的延遲大致相同。
5.根據權利要求4所述設備,所述時鐘信號的傳播方向是可切換的。
6.根據權利要求4所述設備,所述時鐘周期準確個數k是一個時鐘周期。
7.根據權利要求2所述設備,所述時鐘信號是從在前的處理單元選通到下一個處理單元的。
8.根據權利要求7所述設備,所述時鐘信號的傳播方向是可切換的。
9.根據權利要求2所述設備,所述串接陣列中至少有一個處理單元與一個外部電路時間同步。
10.根據權利要求9所述設備,所述外部電路包括一個存儲緩沖器。
11.根據權利要求10所述設備,所述外部電路包括一個用于接收外部數據、并提供所述數據給存儲緩沖器的輸入/輸出端口。
12.根據權利要求11所述設備,所述串接陣列包括具有第一預定個數n個處理單元的第一流水線陣列;以及,具有第二預定個數m個處理單元的第二流水線陣列。
13.根據權利要求12所述設備,所述第一流水線陣列中至少有一個處理單元通過硬件連接與存儲緩沖器電通信,該第一流水線陣列中的所述至少一個處理單元與存儲緩沖器時間同步以進行數據檢索。
14.根據權利要求13所述設備,所述第一流水線陣列的所述至少一個處理單元是該第一流水線陣列中的第一處理單元。
15.根據權利要求13所述設備,所述第一流水線陣列的第n單元與第二流水線陣列的第m單元通過硬件連接進行電通信,使得輸入第一流水線陣列的第一處理單元并傳送到該陣列的第n處理單元的數據,可進一步傳送到第二流水線陣列的第m處理單元,以作進一步處理。
16.根據權利要求15所述設備,所述第一預定個數處理單元的個數n,以及第二預定個數處理單的個數m,是一個相同的預定個數,以便在使用中,到第n單元和到第m單元的延遲基本相同,使得第一流水線陣列的第n單元與第二流水線陣列的第m單元的尾-頭數據傳送基本上是時間同步的。
17.根據權利要求13所述設備,所述第二流水線陣列中至少有一個處理單元通過硬件連接與存儲緩沖器電通信,該第二流水線陣列的所述至少一個處理單元與存儲緩沖器時間同步以進行數據檢索。
18.根據權利要求17所述設備,所述第二流水線陣列的所述至少一個處理單元是該第二流水線陣列中的第一處理單元。
19.根據權利要求17所述設備,所述第一流水線陣列的第n單元與第二流水線陣列的第m單元通過硬件連接進行電通信,使得輸入第一流水線陣列的第一處理單元并傳送到該陣列的第n處理單元的數據,可進一步傳送到第二流水線陣列的第m處理單元,以作進一步處理。
20.根據權利要求17所述設備,還包括一個第三流水線陣列,它具有第三預定個數的q個處理單元。
21.根據權利要求20所述設備,所述第三流水線陣列中至少有一個處理單元通過硬件連接與存儲緩沖器電通信,該第二流水線陣列的所述至少一個處理單元與存儲緩沖器時間同步以進行數據檢索。
22.根據權利要求21所述設備,所述第三流水線陣列的所述至少一個處理單元是該第在流水線陣列中的第一處理單元。
23.根據權利要求21所述設備,所述第一流水線陣列的第n單元與第二流水線陣列的第m單元通過第一硬件連接進行電通信,同時第二流水線陣列的第一單元與第三流水線陣列的第一單元通過第二硬件連接進行電通信,使得在第一流水線陣列的第n個單元與第二流水線陣列的第m單元之間的尾-頭數據傳送基本上是時間同步的,同時在第二流水線陣列的第一單元與第三流水線陣列的第一單元之間的頭-尾數據傳送也基本上是時間同步的。
24.根據權利要求12所述設備,還包括一個第三流水線陣列,它具有第三預定個數的q個處理單元。
25.根據權利要求24所述設備,所述第一流水線陣列的第n單元與第二流水線陣列的第m單元通過第一硬件連接進行電通信,同時第二流水線陣列的第一單元與第三流水線陣列的第一單元通過第二硬件連接進行電通信。
26.一種可切換處理單元,包括用于接收第一時鐘信號的第一端口;用于接收第二其它時鐘信號的第二端口;可在選擇第一時鐘信號和第二其它時鐘信號中的一個的兩種模式之間進行切換的開關;其中,從所述第一時鐘信號和第二其它時鐘信號中所選出之一被提供給所述處理單元。
27.一種處理數據的方法,包括以下步驟(a)提供一個流水線處理器,所述流水線處理器包括按串接陣列排列的多個獨立的處理單元,以使第一處理單元先于第二處理單元處理,第二處理單元先于第n處理單元處理;(b)為所述按串接陣列排列的多個獨立處理單元中的每一個處理單元提供一個時鐘信號,使得到達第一處理單元之外的每個獨立處理單元的時鐘信號,相對于到達其在先處理單元的時鐘信號要延遲;(c)提供數據給所述第一處理單元進行處理;(d)將所述數據傳播到至少下一個處理單元以進行進一步處理;其中,提供給所述多個獨立處理單元中的某一單元的時鐘信號,相對于提供給該多個獨立處理單元中另一個單元的時鐘信號,延遲以時鐘周期為基準相當大的量。
28.根據權利要求27所述方法,從數據寫入處理單元到該數據傳送給至少下一個處理單元的時間等于時鐘周期準確個數n,這里n大于0,不足以從該處理單元產生出準確的輸出數據,但如果有額外的延遲則上述時間就足以產生出準確的輸出數據,在所述時鐘周期準確個數n后,待處理的新數據被讀入同一處理單元。
29.根據權利要求27所述方法,所述至少下一個處理單元按離開第一處理單元的第二其它處理方向傳送需要進一步處理的數據。
30.根據權利要求29所述方法,按發下步驟提供數據將第一處理單元與一個外部電路同步,所述外部電路用于從外部資源接收供所述第一處理單元處理的數據;以及,從所述外部電路讀取供所述第一處理單元處理的數據。
31.根據權利要求30所述方法,所述外部電路是一個存儲緩沖器,用于接收供第一處理單元處理的數據。
32.根據權利要求29所述方法,所述第一和第二方向中其中一個相對于其中另一個需要較短的處理時間。
33.根據權利要求32所述方法,所述時鐘信號是獨立地分配到各處理單元的。
34.根據權利要求33所述方法,所述時鐘周期準確個數k是一個時鐘周期。
35.根據權利要求33所述方法,任何兩個相鄰處理單元之間的延遲大致相同。
36.根據權利要求33所述方法,所述延遲加上準確個數的時鐘周期之后所得的時間段,比延遲方向上的處理時間要長。
37.根據權利要求36所述方法,所述準確個數的時鐘周期減去所述延遲后所得的時間段,比該延遲方向以外其它方向的處理時間要較長,但比較該延遲方向的處理時間要短。
38.根據權利要求37所述方法,所述時鐘周期至少是每個方向處理時間的平均數。
39.根據權利要求32所述方法,所述時鐘信號是從在前的處理單元選通到下一個處理單元的,每個處理單元有一個用于在該時鐘信號中產生已知延遲的電路。
40.根據權利要求32方法,所述數據被提供給所述流水線處理器進行加密處理。
41.一種在流水線處理器中處理數據的方法,包括以下步驟(a)為有n個處理單元的流水線處理器提供一個沿第一部分第一方向的時鐘信號,使得到達所述第一部分中第一處理單元之外的每個獨立處理單元的時鐘信號,比起到達同在第一部分的其在先處理單元的時鐘信號要延遲;(b)為同樣有n個處理單元的流水線處理器提供一個沿第二其它部分的第二相反方向的時鐘信號,使得到達所述第二其它部分中第一處理單元之外的每一個獨立處理單元的時鐘信號,比起到達同在第二其它部分的其在先處理單元的時鐘信號要延遲;(c)提供數據給流水線處理器第一部分的第一處理單元以進行處理;其中,到第一部分最后處理單元的延遲與到第二部分的最后處理單元的延遲大致相同,使得在流水線處理器的中心所述兩個相鄰處理單元是同步的。
42.根據權利要求41所述方法,所述數據被提供給所述流水線處理器進行加密處理。
43.一種在數據處理設備的布置中使用的宏,包括串接排列并有一個時鐘輸入導體和一個時鐘輸出導體的多個獨立處理單元,與所述時鐘輸入導體電通信的時鐘導體增加了從時鐘輸入導體到所述多個獨立處理單元中每一個后繼單元的長度,同時該時鐘導體減小了從時鐘輸入導體到所述多個獨立處理單元中每一個后繼單元的長度;其中,所述時鐘輸入導體和輸出導體被排列得使一個布局內相鄰放置的宏形成空間足夠的組,并使一個宏的輸入時鐘導體與相鄰宏的輸出時鐘導體在耦合時,有與宏被設置在一個預定的空間足夠位置時同一宏內的兩個相鄰單元之間的導體路徑長度大致相同的導體路徑長度。
全文摘要
一種采用例如流水線排列方式、有多個分級的計算設備或系統,沿各分級設置有時鐘線或時鐘導體。用較大數字、例如數以百計的分級按并聯子陣列方式排列,而計時導體沿所述子陣列蛇行。在各個分級中,可以將分級內兩個計算中的最短的一個安排在返回路徑中發生。一個陣列可分成分離的部分以進行獨立的處理。
文檔編號G06F1/10GK1387340SQ02119138
公開日2002年12月25日 申請日期2002年5月9日 優先權日2001年5月9日
發明者特倫斯·N·托馬斯, 斯蒂芬·J·戴維斯 申請人:莫賽德技術公司