專利名稱:密碼處理單元以及乘法器的制作方法
相關(guān)申請參考
本發(fā)明涉及與本申請同一天申請、代理人檔案號為42390.P23349、名稱為“CRYPTOGRAPHIC SYSTEM COMPONENT(密碼系統(tǒng)組件)”、申請?zhí)枮镹o._______的共同待決的US專利申請。
本發(fā)明涉及與本申請同一天申請、代理人檔案號為42390.P22797、名稱為“MULTIPLEXER(乘法器)”、申請?zhí)枮镹o._______的共同待決的US專利申請。
背景技術(shù):
密碼術(shù)(cryptography)可以保護數(shù)據(jù)免受不希望的訪問。密碼術(shù)通常涉及數(shù)據(jù)上的數(shù)學(xué)運算(加密)使得原始數(shù)據(jù)(明文)難以理解(密文)。相反的數(shù)學(xué)運算(解密)從密文中恢復(fù)原始數(shù)據(jù)。典型地,解密依賴于額外的數(shù)據(jù),例如密鑰。密鑰是控制密碼算法如何處理明文的數(shù)據(jù)。換句話說,對于同一明文,不同的密鑰通常使得相同的算法輸出不同的密文。在缺少所需的密鑰的情況下,恢復(fù)原始數(shù)據(jù)至多是一種極端耗時間的數(shù)學(xué)挑戰(zhàn)。
密碼術(shù)用于各種情況中。例如,計算機上的文檔可以被加密,使得只有文檔的授權(quán)用戶可以解密并訪問文檔的內(nèi)容。同樣地,密碼術(shù)通常用于加密在公共網(wǎng)絡(luò)上傳播的信息包的內(nèi)容。盡管惡意的用戶可以攔截這些信息包,但是這些惡意的用戶只能訪問密文而不是被保護的明文。
密碼術(shù)覆蓋了除了加密和解密數(shù)據(jù)之外的各種廣泛應(yīng)用。例如,密碼術(shù)通常用于鑒別(即可靠地確定通信代理的身份)、數(shù)字簽名的生成等等。
當(dāng)今的密碼技術(shù)主要依賴于精確的數(shù)學(xué)運算。例如,多種方案涉及非常大的數(shù)字的相乘。例如,多種方案利用被稱為模冪的模運算類型,該模運算涉及將一個大數(shù)乘方為某個冪,然后相對于一個模數(shù)來約化它(即,當(dāng)被給定的模數(shù)除時的余數(shù))。密碼術(shù)方案所需的數(shù)學(xué)運算可能消耗相當(dāng)多的處理器資源。例如,參與一個安全連接的網(wǎng)絡(luò)計算機的處理器可能將其計算能力的主要部分致力于加密和解密任務(wù),保留較少的處理器資源用于其它操作。
圖1是密碼組件的圖表; 圖2是說明密碼組件的操作的流程圖; 圖3是包括密碼組件的處理器的圖表; 圖4是說明處理單元結(jié)構(gòu)的圖表; 圖5是邏輯相互連接的共享存儲器和處理單元的圖表; 圖6是與乘法器耦合的一組處理單元的圖表; 圖7是可編程處理單元的圖表; 圖8是說明指令運算的圖表,所述指令使得數(shù)據(jù)從輸入緩沖器傳遞到數(shù)據(jù)庫(data bank); 圖9-11是說明指令運算的圖表,所述指令使得算術(shù)邏輯單元運行; 圖12是說明數(shù)據(jù)通道指令的并行運算的圖表; 圖13是一個圖表,示例了對應(yīng)于程序運行的不同分級范圍的多組不同變量; 圖14是說明指數(shù)加窗的圖表; 圖15是加窗邏輯的圖表; 圖16是說明硬件乘法器的運行的圖表; 圖17是硬件乘法器的圖表; 圖18-20是不同類型的處理單元的圖表; 圖21是具有多個處理器內(nèi)核的處理器的圖表; 圖22是處理器內(nèi)核的圖表; 圖23是網(wǎng)絡(luò)轉(zhuǎn)發(fā)設(shè)備的圖表。
具體實施例方式 圖1描述了運行密碼運算的系統(tǒng)組件100的示例設(shè)備。組件100可集成到多種系統(tǒng)中。例如,組件100可集成到處理器的晶粒(die)中或可在處理器芯片組中構(gòu)造。該系統(tǒng)組件100可以從其它的系統(tǒng)處理器卸載多種密碼運算。組件100在相對適度的時鐘速度下提供高性能,并且組件100是面積有效的。
如所示的,示例組件100可集成在單個的晶粒上,該晶粒包括耦接到共享存儲器邏輯104的多個處理單元106-112。共享的存儲器邏輯104包括存儲器,該存儲器充當(dāng)了由不同處理單元106-112影響的數(shù)據(jù)和控制結(jié)構(gòu)的集結(jié)區(qū)域(staging area)。例如,數(shù)據(jù)可存儲在存儲器中,然后依次傳送到不同的處理單元106-112,每一個處理單元運行密碼運算所涉及的一些任務(wù),并將(可能)被變換的數(shù)據(jù)返回到共享的存儲器邏輯104中。
處理單元106-112被構(gòu)造為運行涉及例如加密、解密、鑒別(authentication)以及密鑰生成的密碼術(shù)的不同運算。例如,當(dāng)處理單元110運行加密運算時(例如,DES(數(shù)據(jù)加密標(biāo)準(zhǔn))、3DES(三重DES)、AES(高級加密標(biāo)準(zhǔn))、RC4(ARCFOUR)和/或Kasumi),處理單元106可以運行散列算法(例如,MD5(報文摘要5)和/或SHA(安全散列算法))。
如所示的,共享的存儲器邏輯104還與RAM 114(隨機訪問存儲器)相耦合。運行時,數(shù)據(jù)可以從RAM 114傳送,以便由處理單元106-112處理。可能地,被變換的數(shù)據(jù)(例如加密或解密數(shù)據(jù))被送回到RAM 114。因此,RAM114可以表示為組件100和其它系統(tǒng)組件(例如請求對RAM 114中的數(shù)據(jù)進行加密運算的處理器內(nèi)核)之間的連接點(nexus)。RAM 114可以位于容納該組件100的晶粒外部。
所示的示例實施方式包括控制組件100運行的可編程處理器內(nèi)核102。如所示的,內(nèi)核102接收命令以對數(shù)據(jù)運行加密運算。該命令可以識別請求代理(例如內(nèi)核)、用以運行(例如加密協(xié)議)的特定操作集合、要對其操作的數(shù)據(jù)(例如信息包有效載荷的位置),以及諸如密鑰、初始向量和/或來自于前一加密運算的余數(shù)的額外加密環(huán)境(context)數(shù)據(jù)。響應(yīng)某一命令,內(nèi)核102可以運行在RAM 114、共享存儲器和處理單元106-112之間傳送數(shù)據(jù)的程序指令。
由內(nèi)核102運行的程序可以通過程序代碼在單遍處理中運行所請求的密碼運算。作為一個示例,圖2示出了由內(nèi)核102運行的程序處理加密存儲在RAM114中的信息包“A”的命令的處理。例如,另一處理器內(nèi)核(未示出)可以將命令傳送到組件100,以準(zhǔn)備在公共網(wǎng)絡(luò)上傳送信息包“A”。如所示的,示例程序(1)將信息包和任何相關(guān)的密碼環(huán)境(例如密鑰、初始向量或余數(shù))從RAM 114讀入到共享存儲器中;(2)將數(shù)據(jù)傳送到定位(aligning)處理單元106,定位處理單元將數(shù)據(jù)寫回到共享的存儲器114中,與一個指定的字節(jié)界限對齊;(3)將數(shù)據(jù)傳送到密碼處理單元108,在將變換的數(shù)據(jù)傳送到存儲器104之前該密碼處理單元對數(shù)據(jù)執(zhí)行變換加密運算;以及(4)將變換了的數(shù)據(jù)傳送到RAM 114。然后內(nèi)核102生成一個信號或消息,告知發(fā)布該命令的處理器內(nèi)核,加密已經(jīng)完成。
處理器內(nèi)核102可以是多線程處理器內(nèi)核,其包括多個程序計數(shù)器和與多個相應(yīng)程序運行線程相關(guān)的環(huán)境數(shù)據(jù)的存儲器。即,在圖2中,線程130可以是多線程中的一個。內(nèi)核102可在多線程環(huán)境之間切換,以屏蔽與處理單元106-112操作相關(guān)的等待時間。例如,線程130可以包括一個指令,在發(fā)送數(shù)據(jù)到加密處理單元108的指令之后明確放棄線程130的執(zhí)行,直到接收到指示變換后的數(shù)據(jù)已經(jīng)寫入到共享存儲器104中。可替換地,內(nèi)核102可使用優(yōu)先環(huán)境切換,其在特定事件之后(例如請求處理單元106-112的運行或特定量的運行時間之后)切換環(huán)境。線程切換能使不同的線程運行其它操作,例如不同信息包的處理,否則不同的信息包將浪費內(nèi)核102的周期。通過增加內(nèi)核102的額外的環(huán)境可以潛在地增加吞吐量。在多線程實施方式中,可以用多種方式將線程分配給命令,例如,通過為命令分配線程的調(diào)度線程,或通過當(dāng)線程可用時出列命令的線程。
圖3示出包括密碼系統(tǒng)組件100的處理器124的示例實施方式。如所示的,組件100接收來自于處理器內(nèi)核118-122的命令。在該示例實施方式中,內(nèi)核102被集成到系統(tǒng)組件100中并服務(wù)來自于其它內(nèi)核118-122的命令。在一可替換的實施方式中,處理內(nèi)核102可以不被集成到該組件中。而是內(nèi)核118-122對于組件100的操作運行可以進行直接控制。可替換地,內(nèi)核118-122之一可被指定為控制密碼組件100并服務(wù)從其它內(nèi)核118-122接收的請求。后面的方法可以減少組件100的費用以及晶粒覆蓋區(qū)。
如圖4所示,不同的處理單元106-112與共享存儲器邏輯104具有相同一致接口結(jié)構(gòu)。這種一致性通過使與各個處理單元的相互作用非常類似而減輕了編程的任務(wù)。該接口結(jié)構(gòu)也使得易于配置包括在組件100中的一組處理單元106-112。例如,為了增加吞吐量,組件100可配置為包括多個相同的處理單元的復(fù)制品。例如,如果組件100可能被包括在一個運行大量鑒別操作的系統(tǒng)中,組件100可配置為具有多個散列處理單元。此外,該結(jié)構(gòu)使得新的處理單元能容易地集成到組件100中。例如,當(dāng)新的密碼算法出現(xiàn)時,完成該算法的處理單元是可用的。
在圖4所示的特定實施方式中,各個處理單元包括從共享存儲器邏輯104接收數(shù)據(jù)的輸入緩沖器142以及存儲數(shù)據(jù)以傳送到共享存儲器邏輯104的輸出緩沖器140。處理單元106還包括處理邏輯144,例如可編程或?qū)S糜布?例如專用集成電路(ASIC)),以作用于輸入緩沖器142接收的數(shù)據(jù)以及將運行的結(jié)果寫入緩沖器140。在所示的示例中,緩沖器140、142可包括存儲器和邏輯電路(未示出),該存儲器和邏輯電路基于數(shù)據(jù)接收的順序在緩沖器中對數(shù)據(jù)排隊。例如,邏輯電路可以具有到存儲器的頭和尾指針,并且可將新接收到的數(shù)據(jù)添加到尾部。
在所示的示例實施方式中,輸入緩沖器142通過總線146連接于共享存儲器邏輯104,總線146不同于連接輸出緩沖器140到共享存儲器邏輯104的總線148。這些總線146、148可相對于其它系統(tǒng)時鐘被單獨地定時。此外,總線146、148可以專用于組件100以保護組件100的內(nèi)部操作。潛在地,多個處理單元的輸入緩沖器140可共享同一總線146;對于輸出緩沖器140、148也一樣。當(dāng)然,也可以實現(xiàn)各種其它的通信方案,例如單個共享總線,而不是雙總線,或共享存儲器邏輯104和處理單元106-112之間的專用連接。
通常,各個處理單元受到共享存儲器邏輯104接收的至少兩個命令的影響(1)處理單元讀取(READ)命令,將來自于共享存儲器邏輯104的數(shù)據(jù)傳送到處理單元輸入緩沖器142;以及(2)處理單元寫入(WRITE)命令,將來自于處理單元的輸出緩沖器140的數(shù)據(jù)傳送到共享存儲器邏輯104。兩個命令可識別目標(biāo)處理單元和要傳送的數(shù)據(jù)。不同處理單元之間的這些指令的一致性可以使得組件100的編程更容易。在所示的特定的設(shè)備中,處理單元讀取指令使得數(shù)據(jù)從共享存儲器通過總線146壓入(push)到各個目標(biāo)處理單元106-112的輸入緩沖器142中,而處理單元寫入指令使得數(shù)據(jù)從目標(biāo)處理單元106-112的輸出緩沖器140通過總線148拉出(pull)到共享存儲器中。因此,為了處理數(shù)據(jù),內(nèi)核102程序可發(fā)布命令,首先將數(shù)據(jù)壓入到處理單元,然后發(fā)布命令,將寫入到處理單元輸出緩沖器144中的結(jié)果拉出。當(dāng)然,可以使用各種其它的組件100間通信方案。
圖5描述了示例實施方式的共享存儲器邏輯104。如所示的,邏輯電路104包括各個處理單元(標(biāo)記為“PU”)的讀取隊列和寫入隊列。在入口隊列1 80處接收那些傳送數(shù)據(jù)到共享存儲器的庫(庫a-n)/從共享存儲器的庫(庫a-n)傳送數(shù)據(jù)的命令并基于目標(biāo)處理單元和命令的類型(例如讀取或?qū)懭?而分類到隊列170-171中。除了命令目標(biāo)處理單元之外,邏輯電路104還允許組件外部的內(nèi)核(例如內(nèi)核118-122)讀取(例如拉出)或?qū)懭?壓入)自/到存儲庫中,并具有一對附加的隊列(標(biāo)記為“內(nèi)核”),用于這些命令。判定器(arbiter)182-184從隊列170-171的隊列中出列命令。例如,各個判定器182-184可利用循環(huán)法或其它處理方案。判定器182-184基于命令的類型將命令發(fā)送到另一隊列172-178。例如,將數(shù)據(jù)壓入到外部內(nèi)核的命令在隊列176中排隊,而從外部內(nèi)核拉出數(shù)據(jù)的命令在隊列172中排隊。同樣地,將數(shù)據(jù)壓入到處理單元中的命令在隊列178中排隊,而從處理單元拉出數(shù)據(jù)的命令在隊列174中排隊。當(dāng)一命令到達隊列的頭時,邏輯電路104適當(dāng)?shù)貑永每偩€146或148從存儲器庫到處理單元的數(shù)據(jù)傳送,或通過耦合組件100至內(nèi)核118-122的總線來傳送/接收數(shù)據(jù)。邏輯電路104還包括允許在存儲器庫和外部RAM 114之間傳送(壓入和拉出)數(shù)據(jù)的電路。
圖5中所示的邏輯電路104僅是一個示例,也可使用各種其它結(jié)構(gòu)。例如,一種實施方式不需要將命令分類到各個處理單元隊列中,盡管這種排隊可保證請求之間的公平性。此外,圖5中反映的結(jié)構(gòu)可以開啟其頭部。也就是,替代邏輯電路104接收發(fā)送到存儲器庫以及從存儲器庫取回數(shù)據(jù)的命令,命令可以被路由到該處理單元,所述處理單元依次發(fā)布請求以訪問共享存儲器庫。
多種密碼協(xié)議(例如公共密鑰交換協(xié)議)需要模乘(例如[A×B]mod m)和/或十分大的數(shù)字的模冪(例如A^exponent(指數(shù))mod m)。盡管計算起來比較耗時,但是這些運算對于多種安全協(xié)議是關(guān)鍵的,例如Diffie-Helman交換、DSA簽名、RSA簽名以及RSA加密/解密。圖6描述了耦接到多個處理單元150-154的專用硬件乘法器156。處理單元150-154可將數(shù)據(jù)(例如一對可變長度多字向量操作數(shù))傳送到乘法器156,并能夠使用該結(jié)果。為了與很大的數(shù)字相乘,處理單元150-154可將乘法分解為一組更小的部分乘積,其能夠更有效地由乘法器156執(zhí)行。例如,兩個1024位操作數(shù)的乘法可計算為四組512位×512位的乘法或十六組256位×256位的乘法。
乘法器156的最有效的使用可根據(jù)當(dāng)前的問題(例如操作數(shù)的大小)不同而不同。為了提供處理單元150-154使用乘法器156時的靈活性,圖6中所示的處理單元150-154是可編程的。程序通過接口158可動態(tài)地從共享存儲器邏輯104隨同運行的數(shù)據(jù)一起下載到處理單元150-154中。被選擇下載到給定處理單元150-154的程序根據(jù)分配到處理單元150-154的問題(例如特定的協(xié)議和/或操作數(shù)尺寸)而改變。單元150-154的可編程性允許組件100操作在引入新的安全協(xié)議、算法和設(shè)備時改變。此外,程序員可基于特定的算法以及協(xié)議所需的操作數(shù)大小仔細(xì)地修正處理單元150-154的運算。由于處理單元150-154可以在運行時被動態(tài)地編程(在組件100運行期間),相同的處理單元150-154通過簡單地下載適當(dāng)?shù)能浖噶羁捎糜谶\行不同的協(xié)議/協(xié)議選擇的操作。
如上所述,各處理單元150-154可具有輸入緩沖器和輸出緩沖器(參見圖4)以與共享存儲器邏輯104通信。乘法器156和處理單元150-154可利用這些緩沖器進行通信。例如,處理單元150-154可存儲操作數(shù)以在供乘法器156使用的輸出緩沖器中的一對輸出隊列中進行相乘。在完成后,乘法器156的結(jié)果可被傳送到處理單元150-154中。同一處理單元150-154的輸入和輸出緩沖器還可用于與共享存儲器邏輯104通信。例如,處理單元150-154的輸入緩沖器可接收來自于共享存儲器邏輯104的程序指令和操作數(shù)。在程序執(zhí)行完成時,處理單元150-154可類似地將程序運行的結(jié)果存儲在輸出緩沖器中,以便傳送到共享存儲器邏輯104。
為了協(xié)調(diào)處理單元的輸入/輸出緩沖器的不同用途,處理單元150-154提供由處理單元運行的程序指令選擇的多種操作模式。例如,在“I/O”模式中,程序單元150-154獨占地通過接口158與共享存儲器邏輯單元104交換數(shù)據(jù)。在“運行”模式中,單元150-154的緩沖器獨占地與乘法器156交換數(shù)據(jù)。額外的處理單元邏輯(未示出)可以與接口158和乘法器156相互作用,以指示處理單元的當(dāng)前模式。
作為一個示例,在運行中,內(nèi)核可以發(fā)布一命令到共享存儲器邏輯104,指定下載到目標(biāo)處理單元的程序和要處理的數(shù)據(jù)。該共享存儲器邏輯104依次通過接口158傳送信號,將給定的處理單元從“睡眠”模式喚醒到I/O模式。然后處理單元的輸入緩沖器從共享存儲器邏輯104接收一命令,以區(qū)分,例如,被下載的程序的大小、初始狀態(tài)、共享存儲器中程序指令的起始地址、以及程序的變量值。為了避免程序代碼不必要的下載,如果程序大小被指定為零,則運行先前下載的程序。當(dāng)被請求連續(xù)地運行同一操作時,這一點優(yōu)化了處理單元的初始化。
在下載了程序指令之后,將變量和初始狀態(tài)設(shè)定為特定值,下載程序中的指令將處理單元的模式從I/O模式轉(zhuǎn)變?yōu)檫\行模式。然后處理單元能將要相乘的操作數(shù)寫入到其輸出緩沖器,并將乘法器156發(fā)送的結(jié)果接收到其輸入緩沖器中。最后,程序指令將最終結(jié)果寫入到處理單元的輸出緩沖器中并將處理模式變回到I/O模式。然后最終的結(jié)果從單元的輸出緩沖器傳送到共享存儲器邏輯104,且該單元回到睡眠模式。
圖7描述了可編程處理單元150的示例設(shè)備。如所示的,處理單元150包括算術(shù)邏輯單元216,該算術(shù)邏輯單元運行例如加、減的運算以及例如向量的布爾“與”(AND)和“或”(OR)的邏輯運算。算術(shù)邏輯單元216與存儲在集成于處理單元150內(nèi)的不同存儲器資源220、212、214中的操作數(shù)相耦合并可以對其進行操作。例如,如所示的,算術(shù)邏輯單元216可作用于存儲器所提供的操作數(shù),該存儲器被分為一對數(shù)據(jù)庫212、214,各個數(shù)據(jù)庫212、214獨立耦合到算術(shù)邏輯單元216。如上所述,算術(shù)邏輯單元216還與存儲在輸入隊列220中的操作數(shù)(例如,從例如乘法器或共享存儲邏輯104傳送到處理單元150的數(shù)據(jù))相耦合并且可以對其進行操作。為了運行給定的運算,算術(shù)邏輯單元216所用的操作數(shù)的大小可以改變,并且可以由程序指令指定。
如所示的,算術(shù)邏輯單元216可與移位器218耦合,后者可以對算術(shù)邏輯單元216的輸出進行編程移位。算術(shù)邏輯單元216/移位器218輸出的結(jié)果可被“再循環(huán)”回到數(shù)據(jù)庫212、214中。可替換地,或此外,算術(shù)邏輯單元216/移位器218的結(jié)果可被寫入到一個被分為兩個并行隊列的輸出緩沖器222中。此外,輸出隊列222可存儲被傳送到乘法器156的各組乘法操作數(shù),或者可以存儲要傳送到共享存儲器的程序運行的最終結(jié)果。
上述組件形成一個循環(huán)的數(shù)據(jù)通道。也就是,操作數(shù)從輸入緩沖器220、數(shù)據(jù)庫212、214通過算術(shù)邏輯單元216,或者回到數(shù)據(jù)庫212、214或者到輸出緩沖器222。該數(shù)據(jù)通道的操作由存儲在控制存儲器204中的程序指令控制并由控制邏輯206運行。該控制邏輯206具有全局變量208和一組變量參考202(例如指針到存儲在數(shù)據(jù)庫212、214中數(shù)據(jù))的存儲器。
可由控制邏輯206完成的示例指令描述在所附附錄A中。其它實施方式可在指令操作和語法方面作出改變。
通常,控制邏輯206包括分配變量值的指令(“配置”指令)、運行數(shù)學(xué)和邏輯運算的指令(“exec”指令和“fexec”指令)以及諸如過程調(diào)用和條件轉(zhuǎn)移指令的控制流指令。該條件轉(zhuǎn)移指令可作用于由算術(shù)邏輯單元216/移位器218生成的多個條件代碼,例如進位、msb(如果最重要的位=1)、lsb(如果最不重要的位=1)、負(fù)值、零(如果最后的四倍字長(quadword)=0)以及零向量(如果整個操作數(shù)=0)。此外,處理單元150提供能用作條件指令之條件的一組用戶可用的位。
控制邏輯206包括使得數(shù)據(jù)沿著處理單元150的數(shù)據(jù)通道移動的指令。例如,圖8描述了“FIFO”指令的示例運算,當(dāng)處理單元處于“運行”模式時,將來自于輸入隊列220中的數(shù)據(jù)堆棧存儲到指定的數(shù)據(jù)庫212、214中。在“I/O”模式中,取而代之的是FIFO指令能將來自于輸入隊列220的數(shù)據(jù)和指令傳送到控制存儲器204。
圖9描述了將操作數(shù)提供給算術(shù)邏輯單元216的“EXEC”指令的示例運算。在所示的示例中,源操作數(shù)由數(shù)據(jù)庫212、214提供,且輸出被寫入到輸出隊列222中。如圖10所示,EXEC指令可備選地將結(jié)果存儲回數(shù)據(jù)庫212、214之一中(在所述的情況中,為數(shù)據(jù)庫B214)。
圖11描述了組合有FIFO和EXEC指令的“FEXEC”(FIFO EXEC)指令的示例運算。與EXEC指令類似,F(xiàn)EXEC指令將操作數(shù)提供給算術(shù)邏輯單元216。然而,取代數(shù)據(jù)庫212、214專門提供的操作數(shù),操作數(shù)可從輸入隊列222中提供。
潛在地,數(shù)據(jù)通道指令中的一些不同指令可以在數(shù)據(jù)通道上同時操作。例如,如圖12所示,在程序運行期間EXEC指令可跟隨在一個FIFO指令之后。然而這些指令可采用多個周期完成,假定這些指令沒有訪問數(shù)據(jù)庫212,214的重疊部分,控制邏輯206可以在FIFO指令完成之前發(fā)布EXEC指令。為了保證同時的運算不會偏離順序運算的結(jié)果,控制邏輯206可判斷同時的運算是否會破壞數(shù)據(jù)的一致性。例如,如果前面的FIFO指令將數(shù)據(jù)寫入數(shù)據(jù)庫A(數(shù)據(jù)庫A為接下來的EXEC指令提供操作數(shù))的一部分中,在數(shù)據(jù)通道上啟動EXEC指令的運算之前,控制邏輯206等待由FIFO指令將數(shù)據(jù)寫入到重疊的數(shù)據(jù)庫部分中。
除了多個數(shù)據(jù)通道指令同時的運算之外,控制邏輯206可以與數(shù)據(jù)通道指令導(dǎo)致的運算并行地執(zhí)行其它指令。例如,控制邏輯206在先前的初始數(shù)據(jù)通道運算完成之前可運行控制流邏輯指令(例如條件轉(zhuǎn)移)和變量分配指令。更具體地,在所示的實施方式中,F(xiàn)IFO指令可與除模式指令之外的任意轉(zhuǎn)移指令或任意配置指令同時發(fā)布。FIFO指令可與任意的運行指令同時發(fā)布,假定二者的目標(biāo)庫都是互斥的。FEXEC和EXEC指令可與任意的模式指令以及不依賴于特定條件狀態(tài)存在的指令同時發(fā)布。然而EXEC指令不可與FEXEC指令同時發(fā)布。
處理單元150提供了多種特征來簡化編程密碼操作的任務(wù)。例如,完成多個算法的程序能從子程序或函數(shù)的遞歸或其它嵌套運行中獲益。如圖13所示,處理單元可保持變量和條件不同的作用域(scope)250-256,對應(yīng)于嵌套的子程序/函數(shù)運行不同的深度??刂七壿媽⒁粋€作用域250-256用作當(dāng)前作用域。例如,圖13中當(dāng)前作用域是作用域252。當(dāng)運行程序時,該作用域指定的變量和條件值由控制邏輯206使用。例如,一個指令對變量“A0”的引用將與當(dāng)前的作用域252的A0相關(guān)??刂七壿?06可分別響應(yīng)過程調(diào)用(例如子程序調(diào)用、函數(shù)調(diào)用或方法調(diào)用)和過程出口(例如返回),自動地增加或減少作用域索引。例如,對于一個程序調(diào)用,當(dāng)前作用域可在程序返回之后在回到作用域252之前進入到作用域254。
如所示的,各個作用域250-256具有一組到數(shù)據(jù)庫A和B212、214的指針。因此,基于當(dāng)前的作用域,由程序訪問的A變量和B變量被解除引用(de-reference)。此外,各個作用域250-256存儲程序計數(shù)器,該程序計數(shù)器能將程序運行設(shè)置到一個調(diào)用程序停止的位置上。各個作用域還存儲識別基本操作數(shù)大小的操作數(shù)范圍值。指令訪問該范圍值以確定要提供給算術(shù)邏輯單元或乘法器的操作數(shù)的大小。例如,EXEC指令可指定N×當(dāng)前作用域范圍尺寸的操作數(shù)。各作用域進一步包括索引和索引比較值。當(dāng)兩個值相等時,這些值用于生成能用于條件轉(zhuǎn)移指令中的索引比較條件。一個作用域包括能用作條件指令的條件的一組用戶位。
除了對當(dāng)前作用域中的數(shù)據(jù)提供訪問之外,處理單元指令集還提供指令(例如“設(shè)置作用域<目標(biāo)作用域>”(set scope<target scope>)),所述指令在不同于當(dāng)前作用域的目標(biāo)作用域中對作用域變量提供顯式訪問。例如,程序可預(yù)先最初配置與返回/嵌入的子程序調(diào)用的確認(rèn)集合相關(guān)的遞減范圍。通常,指令集合包括設(shè)置各個作用域字段的指令。此外,指令集合包括把作用域值的集合從當(dāng)前作用域復(fù)制到目標(biāo)作用域的指令(例如“copy_scope”)。此外,指令集合包括允許基于包括在不同的作用域內(nèi)的值來計算作用域值的指令(例如“設(shè)置相對變量”)。
除了上述的作用域支持之外,處理單元150還可包括減小求冪負(fù)擔(dān)的邏輯。如上所述,許多密碼運算需要大數(shù)的求冪。例如,圖14描述冪254把數(shù)g乘方到第6,015,455,113次方。為了把一個數(shù)乘方到該較大的指數(shù)254,多種算法將該運算消減為一系列更簡單的數(shù)學(xué)運算。例如,算法可把指數(shù)254作為位串處理,并從左到右逐位前進(最高有效位到最低有效位)。例如,以初始值“1”開始,對于位串中遇到的每一個“0”該算法可平方該值。對于位串中遇到的各個“1”,算法可平方該值并乘以g。例如,為了確定2^9的值,算法將按如下方法對1001b的二進制指數(shù)進行操作值 初始化 1 指數(shù)位1-11^2*2=2 位2-02^2=4 位3-04^2=16 位4-116^2*2=512 為了減小該算法的計算需求,對于對應(yīng)預(yù)先計算值的位的窗口可查詢指數(shù)。例如,在2^9的一般示例中,“10”的位圖案對應(yīng)于g^2(4)。因此,在指數(shù)“1001”中識別窗口值“10”使得該算法在該窗口內(nèi)對于每一位簡單地平方該值并乘以預(yù)先計算的值。因此,使用窗口的算法可以如下進行 值 初始化 1 指數(shù)位1-1 1^2=1 位2-0 1^2=1 窗口“10”的值 1*4=4 位3-0 4^2=16 位4-1 16^2*2=512 通常,該技術(shù)減小了執(zhí)行求冪所需的數(shù)字相乘(盡管不是在這種簡單的小例子中)。此外,相同的窗口可在指數(shù)254的位串中出現(xiàn)多次,因此可以使用同一預(yù)先計算的值。
潛在地,指數(shù)254可在N位常規(guī)定位的窗口段中處理。例如,第一窗口可能是指數(shù)254的四個最高有效位(例如“0001”),第二窗口可以是下面四個最高有效位(例如“0110”)等等。然而,取代常規(guī)出現(xiàn)的窗口,圖14描述了使用滑動窗口的方案。即,N位的一些任意大小的窗口可能在指數(shù)中的任何點處,而不是與N位邊界對齊。例如,圖14示出識別在指數(shù)254內(nèi)發(fā)現(xiàn)的4位窗口的位置的位串256。例如,“1011”的指數(shù)窗口在位置256a處,指數(shù)窗口“1101”在位置256b處發(fā)現(xiàn)。一旦發(fā)現(xiàn)一個窗口,在該窗口位被賦零。例如,如所示的,“0011”的窗口在位置256c處發(fā)現(xiàn)。對指數(shù)位賦零使得“0001”的窗口在位置256d處發(fā)現(xiàn)。
圖15示出用于完成滑動窗口方案的邏輯電路210。如所示的,邏輯電路210包括運行向左移位操作的一組M寄存器位(標(biāo)記為C4到C-4),使得窗口邏輯250在指數(shù)位流通過邏輯電路210的某一時間訪問指數(shù)字符串的M位。基于寄存器位和窗口大小252的識別,窗口邏輯250可確認(rèn)具有指數(shù)的非零位的窗口大小圖案的位置。通過在大于窗口尺寸的一組位中查詢,邏輯250可確認(rèn)窗口,而不考慮在指數(shù)位串中的位置。此外,包括在查詢中位的較大行(swath)允許邏輯250從M位中發(fā)現(xiàn)的不同的可能窗口中進行選擇(例如具有最多“1”位的窗口)。例如,在圖14中,指數(shù)254以“0001”位開始,然而利用“向前看”位(C-1-C-4),由于窗口“1011”而不選擇所述潛在的窗口。
一旦發(fā)現(xiàn)非零位的窗口,邏輯210能輸出“發(fā)現(xiàn)窗口”信號以確定指數(shù)字符串中窗口的索引。邏輯210還能輸出所發(fā)現(xiàn)的非零位的圖案。該圖案能用作預(yù)計算窗口值的表中的查詢關(guān)鍵字。最后,邏輯210在該窗口中賦零這些位,并繼續(xù)查詢窗口大小的位圖案。
示出的邏輯210可包括在處理單元中。例如,圖7描述接收移位器218的輸出的邏輯210,該移位器218通過邏輯210循環(huán)指數(shù)的位。邏輯210還被耦合到控制邏輯206。控制邏輯206具有指令,來控制窗口邏輯的運行(例如設(shè)置窗口尺寸和/或選擇固定的或滑動窗口操作)并響應(yīng)邏輯210的輸出。例如,控制邏輯206能包括條件轉(zhuǎn)移指令,其對控制邏輯的“發(fā)現(xiàn)窗口”輸出進行操作。例如,程序能按發(fā)現(xiàn)窗口的條件轉(zhuǎn)移并利用輸出索引查詢該窗口的預(yù)計算的值。
如上所述,處理單元可訪問專用的硬件乘法器156。在轉(zhuǎn)到示例實施方式之前(圖17),圖16示出了乘法器實施方式的示例運行。圖16中乘法器156在多個時鐘周期上對兩個操作數(shù)A 256、B 256進行運算。如所示的,該操作數(shù)由乘法器處理為一組片段,盡管每個操作數(shù)的片段的數(shù)目和/或片段大小不同。例如,在所示的示例中,操作數(shù)A的N位被分為8個片段(0-7),而操作數(shù)B被分為2個片段(0-1)。
如所示的,通過操作數(shù)A的片段和操作數(shù)B的片段的連續(xù)相乘而運行乘法器,直到產(chǎn)生所述片段的部分乘積的所有組合。例如,在周期2中,乘法器將操作數(shù)B的片段0(B0)乘以操作數(shù)A的片段0(A0)262a,而在周期17中2621,乘法器將操作數(shù)B的片段1(B1)乘以操作數(shù)A的片段7(A7)。在圖16中部分乘積被示為位的總集合。如所示的,基于片段在操作數(shù)內(nèi)各自的位置,位的集合相對于彼此進行移位。例如,A和B的最不重要的片段(B0×A0)的乘積262a得到結(jié)果位的最不重要的集合,A和B的最重要的片段(B1×A7)的乘積2621得到結(jié)果位的最重要的集合。一系列部分乘積的結(jié)果相加表示操作數(shù)A256和B258的乘積。
一系列部分乘積的順序計算在最后一個周期之前能遞進生成最終乘積結(jié)果得到的位。例如,圖16確定給定重要性的位何時能被退出(retire),如箭頭標(biāo)識線跨越的位。例如,在完成周期2中的B0×A0之后,由于下一部分乘積的結(jié)果不影響這些位,因此已知該最終結(jié)果的最不重要的位。類似地,在完成周期3中的B0×A1之后,由于只有262a和262b的部分乘積影響這些最不重要的位的總和,因此這些位可以被退出。如所示的,各周期也許不會產(chǎn)生要退出的位。例如,不同片段的乘積能產(chǎn)生具有相同的重要性的位。例如,周期6中B0×A4和周期7中B1×A0的結(jié)果正好重疊。因此沒有位在周期6中被退出。
圖17詳細(xì)示出乘法器156的示例實施方式。乘法器156能如16中所示地處理操作數(shù)。如所示的,乘法器156具有并行配置的一組乘法器306-312。乘法器可以是N位×N位乘法器,但是N位可以不是2的因數(shù)。例如,對于512位×512位乘法器156,各個乘法器可以是67位×67位乘法器。此外,乘法器156本身不限于2的冪的操作數(shù)。
乘法器156順序地提供操作數(shù)的片段,例如,如圖16中所示。例如,在第一周期中,操作數(shù)A的片段0被提供到各個乘法器306-312,而操作數(shù)B的片段0的子片段d-a分別被提供到各個乘法器306-312。也就是,在一給定的周期中,乘法器312可接收操作數(shù)A的片段0以及操作數(shù)B的片段0的子片段a,而乘法器310接收操作數(shù)A的片段0以及操作數(shù)B的片段0的子片段b。
乘法器306-312的輸出基于各個片段在操作數(shù)內(nèi)的重要性而被移位314-318。例如,移位器318針對Bna×An 312的結(jié)果移位Bnb×An314的結(jié)果,以反映子片段b相對于子片段a的重要性。
移位后的結(jié)果被傳送到累加器320。在所示的示例中,乘法器156利用進位/保存結(jié)構(gòu),在那里操作產(chǎn)生一個表示缺少到任何更高有效位位置的進位的結(jié)果向量以及一個存儲該進位的向量。這兩個向量的相加可以被推遲,直到需要最后的結(jié)果。在圖17描述的乘法器156具有進位/保存結(jié)構(gòu),但是其它實施方式可利用其它方案(例如進位/傳遞加法器),盡管進位/保存結(jié)構(gòu)的面積和功率效率會高數(shù)倍。
如所示的,在圖16中,對片段相乘的排序可獲得乘法器306-312的輸出位,它們不會受到乘法器306-312后續(xù)輸出的影響。例如,在圖16中,在周期2中,乘法器306-312的最低有效位輸出可被傳送到累加器320中。累加器320在位產(chǎn)生的過程中能退出這些位。例如,累加器320可將退出的位輸出到分別存儲累加的進位/保存向量的一對FIFO 322、324中。乘法器156包括邏輯326、328、336、338,其對乘法器中剩余的進位/保存向量進行移位,所移位的位數(shù)目對應(yīng)于被退出的位數(shù)目。例如,如果累加器320將最不重要64位傳送到FIFO322、324,其余的累加器320向量可向右移位64位。如所示的,邏輯以一個變化的量來移位累加器320。
如上所述,F(xiàn)IFO 322、324存儲由累加器320退出的進位/保存向量的位。FIFO 322、324依次饋送到加法器330,加法器330對進位/保存向量的被退出部分求和。FIFO 322、324能操作以平滑地將位饋送給累加器330,使得在各個連續(xù)的周期中連續(xù)地饋送被退出的部分給累加器330,直到輸出最終乘法器結(jié)果。換句話說,如圖16所示,不是所有的周期(例如周期6)都導(dǎo)致退出位。在沒有FIFO 322、324的情況下,當(dāng)這些沒有退出的周期通過乘法器156過濾掉時,加法器330將停止。替代地,通過用退出的位填充FIFO 322、324并推遲FIFO 322、324中位的出列,直到有足夠的位被退出,F(xiàn)IFO 322、324能保證加法器330的連續(xù)運行。然而,F(xiàn)IFO 322、324不必與最終的乘法器156結(jié)果中的位數(shù)目一樣多。替代地,F(xiàn)IFO 322、324僅要大得足夠存儲足夠數(shù)目的被退出的位即可,從而“被跳過的”退出周期不停止加法器330,并且FIFO 322、324足夠大使得在最終的周期中能容納退出位的猝發(fā)。
乘法器156用作在一系列周期中通過乘法器級傳遞數(shù)據(jù)的流水線。如所示的,乘法器具有存儲要相乘的操作數(shù)的兩個隊列302、304。為了支持上述的部分乘積乘法的方案,隊列302、304的寬度可根據(jù)各個隊列不同而不同,各個隊列是1-操作數(shù)-片段的寬度。隊列302、304防止了流水線斷源。也就是,隨著乘法器完成一對操作數(shù)的相乘,另一對操作數(shù)的相乘隨即開始。例如,在B1×A7的結(jié)果被輸出到FIFO 322、324之后,邏輯電路326、328能給累加器320向量賦零,以啟動兩個新出列的操作數(shù)的相乘。此外,由于流水線結(jié)構(gòu),兩個操作數(shù)的相乘可以在乘法器接收到操作數(shù)中整個片段集合之前開始。例如,一接收到部分A0和B0,乘法器就開始A×B。在該運算中,F(xiàn)IFO 322、324不僅對于給定的操作數(shù)對平滑加法器330的輸出,而且對于不同組的操作數(shù)平滑加法器330的輸出。例如,在流水線填充的初始延遲之后,乘法器156在各個連續(xù)周期可以輸出所述多個乘法問題的部分最終乘法結(jié)果。即,在輸出A×B的最重要的位的周期之后,C×D的最不重要的位被輸出。
例如,通過從處理單元輸出緩沖器中接收數(shù)據(jù),乘法器156能獲得操作數(shù)。為了確定要服務(wù)的處理單元,乘法器可具有判定器(未示出)。例如,判定器可依次輪詢各個處理單元以確定給定的處理單元是否具有要運行的乘法。為了保證不浪費乘法器156周期,判定器可確定給定的處理單元是否已排列了足夠數(shù)量的操作數(shù),以及處理單元的輸入緩沖器是否具有足夠的空間以在選擇要使用的處理單元之前容納該結(jié)果。
乘法器156由狀態(tài)機(未示出)控制,該狀態(tài)機對提供給乘法器的片段進行選擇、控制移位、初始化FIFO出列等等。
潛在地,給定的處理單元可將給定的算法分解為一系列乘法。為了使處理單元快速地完成一系列運算而不受到競爭使用乘法器156的其它處理單元的打斷,判定器可檢測處理單元提供的信號,該處理單元給判定器發(fā)信號,以繼續(xù)處理由乘法器當(dāng)前服務(wù)的處理單元提供的其它組操作數(shù)。如果沒有該信號,判定器例如通過恢復(fù)處理單元的循環(huán)輪詢,恢復(fù)成為其它處理單元提供服務(wù)。
盡管上述說明描述了多個處理單元,多個處理單元可包括在組件100中。例如,圖18描述了一個“塊(bulk)”處理單元的示例。如所示的,該單元包括字節(jié)順序交換器(endian swapper)以在大尾和小尾表示之間改變數(shù)據(jù)。塊處理單元還包括邏輯,用于按照可編程生成器多項式的規(guī)定對數(shù)據(jù)執(zhí)行CRC(循環(huán)冗余檢驗)運算。
圖19示出鑒別/散列處理單元的示例。如所示該單元存儲用于信息鑒別的數(shù)據(jù)(“通常的鑒別數(shù)據(jù)結(jié)構(gòu)”),該信息鑒別在不同的鑒別算法之間共享(例如結(jié)構(gòu)和狀態(tài)寄存器)。對于各個支持的算法,該單元還包括對數(shù)據(jù)處理負(fù)責(zé)的專用硬件邏輯(例如,MD5邏輯、SHA邏輯、AES邏輯和Kasumi邏輯)。該單元的整個運行由控制邏輯和有限狀態(tài)機(FSM)控制。FSM控制鑒別數(shù)據(jù)緩沖器中的數(shù)據(jù)的裝載和卸載,追蹤數(shù)據(jù)緩沖器中的數(shù)據(jù)量,將開始信號傳送到適當(dāng)?shù)蔫b別內(nèi)核,控制被載入到數(shù)據(jù)緩沖器中的數(shù)據(jù)源,并傳送信息給填充邏輯以幫助確定填充數(shù)據(jù)。
圖20示出密碼處理單元的示例。該單元對于大量不同的密碼算法能在其它任務(wù)之間運行加密和解密。如所示的,該單元包括存儲狀態(tài)信息的寄存器,該狀態(tài)信息包括結(jié)構(gòu)寄存器(標(biāo)記為“config”)、計數(shù)寄存器(標(biāo)記為“ctr”)、密鑰寄存器、參數(shù)寄存器、RC4狀態(tài)寄存器和IV(初始向量)寄存器。該單元還包括多路復(fù)用器和XOR門以支持CBC(密碼字組鏈接)、F8和CTR(計數(shù)器)模式。該單元還包括多個密碼的專用硬件,該密碼包括負(fù)責(zé)所支持的算法的邏輯(例如AES邏輯、3DES邏輯、Kasumi邏輯和RC4邏輯)。該單元還包括控制邏輯和狀態(tài)機。邏輯塊負(fù)責(zé)控制密碼單元的整個行為,包括根據(jù)密碼單元處于的模式啟用適當(dāng)?shù)臄?shù)據(jù)通道(例如在加密CBC模式中,當(dāng)解密IV被設(shè)置為0時,適當(dāng)?shù)腎V被選擇以生成加密IV),在整個密碼處理期間選擇到密碼內(nèi)核中的適當(dāng)輸入(例如要使用的IV、計數(shù)器和密鑰),并基于內(nèi)核102發(fā)布的命令產(chǎn)生控制信號以確定傳送到輸出數(shù)據(jù)通道上的數(shù)據(jù)。該塊還激活并產(chǎn)生用于RC4密鑰擴充和AES密鑰轉(zhuǎn)換所需的控制信號。
圖18-20示出的處理單元僅僅是不同類型的處理單元的示例,該組件具有與所示的那些不同類型的單元。例如,該組件可包括運行偽隨機數(shù)生成的單元、以及運行Reed-Solomon編碼的單元等等。
上述技術(shù)能夠通過不同方式以及在不同的環(huán)境中實現(xiàn)。例如,該技術(shù)可集成在網(wǎng)絡(luò)處理器中。作為一個示例,圖21描述了網(wǎng)絡(luò)處理器400的示例,其可被編程用于處理信息包。所示的網(wǎng)絡(luò)處理器400是Intel的互連網(wǎng)交換網(wǎng)絡(luò)處理器(IXP)。其它處理器具有不同的設(shè)計。
所示的網(wǎng)絡(luò)處理器400具有在單個的集成半導(dǎo)體晶粒400上的可編程處理內(nèi)核402的集合。各個內(nèi)核402可以是適于信息包處理的精簡指令集計算機(RISC)。例如,內(nèi)核402不能提供浮點或通常由通用處理器的指令集提供的整數(shù)除法指令。單個的內(nèi)核402可提供多線程運行。例如,內(nèi)核402對于不同線程能存儲多個程序計數(shù)器及其它環(huán)境數(shù)據(jù)。
如所示的,網(wǎng)絡(luò)處理器400還具有在處理器400和其它網(wǎng)絡(luò)組件之間運載信息包的接口420。例如,處理器400具有轉(zhuǎn)換結(jié)構(gòu)接口420(例如常用的轉(zhuǎn)換接口(CSIX)),該接口使處理器400能將信息包傳送到與轉(zhuǎn)換結(jié)構(gòu)相連的其它處理器或電路。該處理器400還能具有接口420(例如系統(tǒng)信息包接口(SPI)接口),該接口使處理器400能與物理層(PHY)和/或鏈路層設(shè)備(例如MAC或成幀器設(shè)備)進行通信。處理器400還可包括與例如主機或其它網(wǎng)絡(luò)處理器通信的接口404(例如外設(shè)部件互連(PCI)總線接口)。
如所示的,處理器400包括由內(nèi)核402共享的其它資源,例如密碼組件100、內(nèi)部中間結(jié)果暫存器以及對外部存儲器提供訪問的存儲器控制器416、418。網(wǎng)絡(luò)處理器400還包括通用目的處理器406(例如StrongARMXScale或Intel結(jié)構(gòu)內(nèi)核),其通常被編程以運行網(wǎng)絡(luò)操作中所涉及的“控制面”或“慢速通道”任務(wù),而內(nèi)核402通常被編程以運行“數(shù)據(jù)面”或“快速通道”任務(wù)。
內(nèi)核402可通過共享的資源(例如通過將數(shù)據(jù)寫入外部存儲器或中間結(jié)果暫存器408)與其它內(nèi)核402通信。內(nèi)核402還可通過直接連接到鄰近內(nèi)核402的鄰近寄存器與鄰近的內(nèi)核之間相互通信。內(nèi)核402還通過CAP(CSR(控制狀態(tài)寄存器)訪問代理)410單元通信,CAP 410單元在內(nèi)核402之間路由數(shù)據(jù)。
圖22詳細(xì)描述示例內(nèi)核402。圖22中所示的內(nèi)核402的結(jié)構(gòu)還可用于實現(xiàn)圖1所示的內(nèi)核102。如所示的,內(nèi)核402包括存儲程序指令的指令存儲器512。內(nèi)核402還包括ALU(算術(shù)邏輯單元)、內(nèi)容可尋址存儲器(CAM)、移位器和/或用于執(zhí)行其它操作的其它硬件。內(nèi)核402還包括多個存儲器資源,例如局部存儲器502和通用目的寄存器504。所示的內(nèi)核402還包括讀和寫傳送寄存器508、510,其存儲要傳送到內(nèi)核之外的目標(biāo)/從內(nèi)核之外的目標(biāo)接收的信息。內(nèi)核402還包括下一相鄰的寄存器506、516,其存儲直接傳送到其它內(nèi)核402/從其它內(nèi)核402直接接收的信息。存儲在不同的存儲器資源中的數(shù)據(jù)可用作指令中的操作數(shù)。如所示的,內(nèi)核402還包括命令隊列524,該命令隊列524緩存要傳送到內(nèi)核之外的目標(biāo)的命令(例如存儲器訪問命令)。
為了與密碼組件100作用,在內(nèi)核402上運行的線程可通過命令隊列524傳送命令。這些命令可將內(nèi)核402內(nèi)的傳送寄存器確認(rèn)為命令結(jié)果的目的地(例如存儲器中加密數(shù)據(jù)的完整消息和/或位置)。此外,內(nèi)核402可具有一個指令集,用于在等待時減小空閑內(nèi)核周期,例如對于實現(xiàn)密碼組件100的請求。例如,內(nèi)核402可提供ctx_arb(環(huán)境判定)指令,該指令使線程從運行中換出,直到接收到與組件100完成操作相關(guān)的信號。
圖23示出一種網(wǎng)絡(luò)設(shè)備,該設(shè)備能利用密碼組件處理信息包。如所示的,該設(shè)備具有多個刀片(blade)608~620的集合,該設(shè)備通過轉(zhuǎn)換結(jié)構(gòu)610保持集成電路的相互連接。如所示的,該設(shè)備具有運行不同操作的多個刀片,例如I/O刀片608a-608n、數(shù)據(jù)面轉(zhuǎn)換刀片618a-618b、干線刀片612a-612b、控制面刀片614a-614n和服務(wù)刀片。例如,轉(zhuǎn)換結(jié)構(gòu)可與CSIX或例如HyperTransport、Infiniband、PCI、Packet-Over-SONET、PapidIO和/或UTOPIA(ATM的通用測試和運算PHY接口)的其它結(jié)構(gòu)技術(shù)一致。
各個刀片(例如608a)可包括一個或多個物理層(PHY)設(shè)備(未示出)(例如光的、有線的、無線的PHY),其處理網(wǎng)絡(luò)連接上的通信。PHY在不同網(wǎng)絡(luò)媒介運載的物理信號和數(shù)字系統(tǒng)所用的位(例如“0”和“1”)之間進行翻譯。線卡(line card)608-620還可包括成幀器設(shè)備(例如以太網(wǎng)、同步光學(xué)網(wǎng)絡(luò)(SONET)、高級數(shù)據(jù)鏈路(HDLC)成幀器或其它的“層2”設(shè)備)602,該成幀器設(shè)備可在幀上運行諸如誤差檢測和/或校正運算。所示的刀片608a還可包括一個或多個網(wǎng)絡(luò)處理器604、606,其對通過PHY 602接收到的信息包運行信息包處理操作,并通過轉(zhuǎn)換結(jié)構(gòu)610將該信息包導(dǎo)向到一個將出口接口轉(zhuǎn)發(fā)到信息包的刀片。潛在地,網(wǎng)絡(luò)處理器606運行“層2”任務(wù),而不是成幀器設(shè)備602。網(wǎng)絡(luò)處理器604、606可具有上述技術(shù)。
盡管圖21-23描述了網(wǎng)絡(luò)處理器的具體示例、以及加入到網(wǎng)絡(luò)處理器的設(shè)備,該技術(shù)可通過不同的結(jié)構(gòu)實現(xiàn),該結(jié)構(gòu)包括通用處理器、網(wǎng)絡(luò)處理器和具有不同于所示設(shè)計的網(wǎng)絡(luò)設(shè)備。此外,該技術(shù)可用于多種網(wǎng)絡(luò)設(shè)備中(例如路由器、轉(zhuǎn)換器、電橋、網(wǎng)絡(luò)集線器、通信量發(fā)生器等等)。此外,上述多種技術(shù)可以提供給除執(zhí)行密碼操作的組件之外的組件。
這里所用的術(shù)語電路包括硬連線電路、數(shù)字電路、模擬電路、可編程電路等等??删幊痰碾娐房梢詫ξ挥谟嬎銠C可讀介質(zhì)上的計算機程序進行操作。
其它實施例包括在下述權(quán)利要求的范圍中。
附錄A可編程處理單元的示例指令集 本附錄包括受到版權(quán)保護的材料。
權(quán)利要求
1、一種數(shù)值相乘的可編程系統(tǒng),其包括
多個可編程處理單元;
專用硬件乘法器,以及
連接多個處理單元和乘法器的至少一條總線。
2、權(quán)利要求1的系統(tǒng),
其中多個可編程處理單元動態(tài)地接收程序指令,用于由多個可編程處理單元運行;以及
其中該系統(tǒng)還包括用于選擇的電路,在下述之間進行選擇
在乘法器和多個可編程處理單元中的至少一個之間傳送數(shù)據(jù);以及
將程序指令傳送到多個可編程處理單元中的至少一個。
3、權(quán)利要求2的系統(tǒng),其中用于選擇的電路包括由被傳送到多個可編程處理單元中的至少一個的程序指令中的指令控制的電路。
4、權(quán)利要求1的系統(tǒng),
其中多個可編程處理單元中的每一個包括可編程處理單元,該可編程處理單元具有存儲由總線接收到的數(shù)據(jù)的輸入緩沖器以及存儲在總線上傳送的數(shù)據(jù)的至少一個輸出緩沖器;以及
其中多個可編程處理單元中的每一個包括
基于數(shù)據(jù)到達的順序,按順序把數(shù)據(jù)存儲到輸入緩沖器中的電路;以及
基于輸出到輸出緩沖器的數(shù)據(jù)的順序,按順序把數(shù)據(jù)存儲到至少一個輸出緩沖器中的電路。
5、權(quán)利要求4的系統(tǒng),
其中至少一個輸出緩沖器包括至少兩個輸出隊列,輸出隊列中的第一個存儲第一乘法操作數(shù),輸出隊列中的第二個存儲第二乘法操作數(shù);以及
其中乘法器從第一輸出隊列中出列第一操作數(shù),從第二輸出隊列中出列第二操作數(shù)。
6、權(quán)利要求1的系統(tǒng),
其中乘法器包括
存儲從多個可編程處理單元的至少一個中接收的數(shù)據(jù)的至少一個輸入緩沖器,所述數(shù)據(jù)包括要進行相乘的操作數(shù);以及
存儲傳送到多個可編程單元的至少一個中的數(shù)據(jù)的至少一個輸出緩沖器,該數(shù)據(jù)包括要進行相乘的操作數(shù)的相乘的結(jié)果。
7、權(quán)利要求1的系統(tǒng),其中乘法器訪問多個可編程處理單元之一中的數(shù)據(jù),只要多個可編程處理單元的這一個在輸入緩沖器中具有可用的存儲器,該輸入緩沖器大于基于乘法器的輸出尺寸的數(shù)量。
8、權(quán)利要求1的系統(tǒng),還包括選擇該乘法器所要服務(wù)的多個可編程處理單元的電路。
9、權(quán)利要求8的系統(tǒng),其中選擇該乘法器所要服務(wù)的多個可編程處理單元的電路包括基于由多個可編程處理單元之一輸出的信號連續(xù)地處理多個可編程處理單元中的同一個的電路。
10、一種用于數(shù)值相乘的可編程方法,其包括
在多個可編程處理單元的第一個中,提供兩個相乘的操作數(shù);
在與多個可編程處理單元相耦合的專用硬件乘法器中,使多個可編程處理單元中的第一個提供的兩個操作數(shù)相乘并將相乘的結(jié)果回饋到該多個可編程處理單元中的第一個。
11、權(quán)利要求10的方法,還包括
在以下兩者之間選擇
在乘法器和多個可編程處理單元中的至少一個之間傳送數(shù)據(jù);以及
將程序指令傳送到多個可編程處理單元中的至少一個。
12、權(quán)利要求11的方法,還包括在多個處理單元的一個中運行程序指令以控制上述選擇。
13、權(quán)利要求10的方法,還包括
在該多個可編程處理單元組的第一個中,運行程序指令,通過將操作數(shù)的子組的多個組提供給乘法器來運行兩個操作數(shù)的乘法。
全文摘要
通常,在一方面,本發(fā)明描述了一種系統(tǒng),其包括多個可編程處理單元、專用硬件乘法器以及連接多個處理單元和乘法器的至少一條總線。
文檔編號H04L9/32GK101083525SQ20061013093
公開日2007年12月5日 申請日期2006年12月30日 優(yōu)先權(quán)日2005年12月30日
發(fā)明者W·K·費格哈利, W·C·哈森普洛夫, G·M·沃爾里希, D·F·卡特, V·戈帕爾, G·高巴茨 申請人:英特爾公司