專利名稱:用于大數(shù)乘法的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及大數(shù)乘法。 一般來(lái)說(shuō),在一個(gè)方面中,本發(fā)明的特色在于一種用于操作 乘法電路來(lái)計(jì)算兩個(gè)操作數(shù)(A與B)的乘積的計(jì)算機(jī)實(shí)施的方法、系統(tǒng)及計(jì)算機(jī)程序產(chǎn)品, 所述兩個(gè)操作數(shù)中的至少一者寬于與所述乘法電路相關(guān)聯(lián)的寬度。所述操作數(shù)中的每一者 包括以特定權(quán)數(shù)j及i為特征的一個(gè)或一個(gè)以上相連的有序字寬操作數(shù)段(Aj及B》,其中 j是從0到k的整數(shù),其中i是從0到m的整數(shù),且字是規(guī)定數(shù)目的位(n)。所述乘法電路 執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算矩陣,所述矩陣包含m+l個(gè)行及k+m+2個(gè)列,每一行具有權(quán)數(shù) x且每一列具有權(quán)數(shù)y。所述乘法電路可存取存儲(chǔ)器。同時(shí)對(duì)一對(duì)行執(zhí)行乘法運(yùn)算。對(duì)于 每一對(duì)行,從所述存儲(chǔ)器讀取一對(duì)對(duì)應(yīng)Bi字寬操作數(shù)段且針對(duì)k+2個(gè)列中的每一者反復(fù)地 執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算(A,Bi),使得對(duì)于所述矩陣中的每一列,需要最多兩個(gè)額外 存儲(chǔ)器讀取操作及一個(gè)存儲(chǔ)器寫(xiě)入操作揭示其它實(shí)施方案。 本發(fā)明的實(shí)施方案可實(shí)現(xiàn)以下優(yōu)點(diǎn)中的一者或一者以上。本文中所描述的乘法電 路可同時(shí)計(jì)算一對(duì)行同時(shí)每列僅需要三個(gè)存儲(chǔ)器存取(2個(gè)讀取與1個(gè)寫(xiě)入)(除了對(duì)應(yīng)于 每一行的字寬操作數(shù)段的初始讀取以外),從而使得將更高效的存儲(chǔ)器接口設(shè)計(jì)為單個(gè)雙 端口RAM或兩個(gè)單端口RAM成為可能。另一優(yōu)點(diǎn)是可不按序列地計(jì)算若干對(duì)行。隨機(jī)化行 計(jì)算的次序可提供對(duì)所述計(jì)算中所正使用的敏感數(shù)據(jù)的經(jīng)改進(jìn)的保護(hù)。由于減少的存儲(chǔ)器 存取,所述乘法電路的功率消耗可低于其它常規(guī)電路。 將在附圖及以下說(shuō)明中闡述本發(fā)明的一個(gè)或一個(gè)以上實(shí)施例的細(xì)節(jié)。依據(jù)說(shuō)明、 圖式并依據(jù)權(quán)利要求書(shū)將明了本發(fā)明的其它特征、目的及優(yōu)點(diǎn)。
圖1是顯示乘法電路的實(shí)例的框圖。 圖2是第一實(shí)例性乘法矩陣的示意性表示。 圖3是顯示用于根據(jù)圖2的乘法矩陣計(jì)算兩個(gè)操作數(shù)的乘積的實(shí)例性過(guò)程的流程 圖。 圖4是第二實(shí)例性乘法矩陣的示意性表示。 在各圖式中,相同的參考符號(hào)指示相同的元件。
具體實(shí)施例方式
某些應(yīng)用需要將大于用于計(jì)算結(jié)果的硬件的機(jī)器大小的數(shù)相乘在一起。舉說(shuō)明性 實(shí)例來(lái)說(shuō),可需要具有32個(gè)位的機(jī)器大小的微處理器計(jì)算具有128位輸入操作數(shù)的乘法的 結(jié)果。由于輸入數(shù)據(jù)大于所述微處理器的機(jī)器大小,因此所述輸入數(shù)據(jù)可存儲(chǔ)于RAM或另 一類似臨時(shí)存儲(chǔ)存儲(chǔ)器中或者可駐留于在所述微處理器內(nèi)部的高速緩沖存儲(chǔ)器或寄存器 中。假定兩個(gè)128位輸入操作數(shù)A及B,其存儲(chǔ)于RAM中且將由32位微處理器對(duì)其進(jìn)行運(yùn) 算,其中A = 0xl 1111111222222223333333344444444 ;且
B = 0x55555555666666667777777788888888 ;
其中0x表示十六進(jìn)制數(shù); 可將計(jì)算分解成機(jī)器大小字,在此實(shí)例中,為32位字寬操作數(shù)段,如下
A = Ao+A^232+A^264+A^296 ;且
B = Bo+B一232+B^264+B3氺296 ;
其中A0 = 0x44444444 ;A丄=0x33333333 ;A2 = 0x22222222 ;A3 = 0x11111111 ;且
B。 = 0x88888888 ;B丄=0x77777777 ;B2 = 0x66666666 ;B3 = 0x55555555。
所述計(jì)算繼續(xù)進(jìn)行,其中使第一操作數(shù)A的每一32位字寬操作數(shù)段乘以另一第二 操作數(shù)B中的字寬操作數(shù)段中的每一者。下文描述乘法電路及用于操作所述乘法電路的過(guò) 程,使得可減少對(duì)包含操作數(shù)A及B的存儲(chǔ)器的讀取及寫(xiě)入存取的數(shù)目,以便提供高效的存 儲(chǔ)器接口。 包含乘法電路的實(shí)例性系統(tǒng) 參照?qǐng)Dl,其顯示包含乘法電路102的系統(tǒng)100。系統(tǒng)100可計(jì)算可寬于乘法電路 102的兩個(gè)操作數(shù)的乘積。舉例來(lái)說(shuō),可使用32位寬硬件來(lái)實(shí)施乘法電路102且所述操作 數(shù)可以是64個(gè)位、12S個(gè)位、1024個(gè)位或?qū)捰?2個(gè)位的其它數(shù)目的位。系統(tǒng)100經(jīng)配置以 通過(guò)減少存儲(chǔ)器操作的數(shù)目同時(shí)使用減小的硬件大小高效地計(jì)算操作數(shù)的乘積。
乘法電路102包含高速緩沖存儲(chǔ)器104、乘法器106及累加器108。乘法器106包 含來(lái)自高速緩沖存儲(chǔ)器104的輸入。舉例來(lái)說(shuō),所述輸入可以是乘法操作數(shù)的字寬操作數(shù) 段。在一些實(shí)施方案中,乘法器106可將兩個(gè)字寬操作數(shù)段相乘以形成至少雙字寬中間乘 積。舉例來(lái)說(shuō),乘法器106可將兩個(gè)32位操作數(shù)段相乘以形成至少64位中間乘積。由字 寬操作數(shù)段對(duì)乘法運(yùn)算產(chǎn)生的中間乘積由累加器108接收。 累加器108接收來(lái)自乘法器106及高速緩沖存儲(chǔ)器104的輸入。舉例來(lái)說(shuō),累加器108可接收來(lái)自乘法器106的中間乘積及來(lái)自高速緩沖存儲(chǔ)器104的中間列結(jié)果。所述 累加器包含累加寄存器110。在某些實(shí)施方案中,累加寄存器110可以是至少2n+2個(gè)位的 臨時(shí)數(shù)據(jù)存儲(chǔ)裝置(其中n是一個(gè)字中位的數(shù)目)。在其它實(shí)施方案中,可以寬于2n+2個(gè) 位的大小來(lái)實(shí)施累加寄存器110。 在一些實(shí)施方案中,累加器108可經(jīng)配置以將所述輸入累加于累加寄存器110中。 舉例來(lái)說(shuō),累加器108可將中間乘積(來(lái)自乘法器106)加到存儲(chǔ)于累加寄存器110中的值 上。接著,累加器108可將累加結(jié)果存儲(chǔ)于累加寄存器110中。累加器108還可經(jīng)配置以 復(fù)位存儲(chǔ)于累加寄存器110中的值。舉例來(lái)說(shuō),累加器108可將累加寄存器110復(fù)位到零。 在另一實(shí)例中,累加器108可將累加寄存器110復(fù)位到所累加值的上部字。
累加器108連接到存儲(chǔ)器元件,例如,隨機(jī)存取存儲(chǔ)器(RAM) 112。在一些實(shí)施方案 中,累加器108可將單字寬數(shù)據(jù)傳輸?shù)絉AM 112。在實(shí)例性操作中,累加器108可提取所累 加值的將要寫(xiě)入到RAM 112的下部字。接下來(lái),累加器108可通過(guò)僅將所累加值的上部字 存儲(chǔ)于累加寄存器110中來(lái)復(fù)位累加寄存器110。 RAM 112可將數(shù)據(jù)傳輸?shù)礁咚倬彌_存儲(chǔ)器104。如圖所示,RAM 112可將兩個(gè)單字 寬操作數(shù)段傳輸?shù)礁咚倬彌_存儲(chǔ)器104。由于乘法循環(huán)(如以下所進(jìn)一步描述)僅需要來(lái) 自RAM 112的兩個(gè)讀取,因此RAM 112可每列包含兩個(gè)存儲(chǔ)器接口 。在一個(gè)實(shí)施方案中, RAM 112是雙端口 RAM,且在另一實(shí)施方案中,RAM 112是具有兩個(gè)單端口 RAM的存儲(chǔ)器模 塊。雖然在此實(shí)例中使用了 RAM,但在其它實(shí)施方案中還可使用例如快閃存儲(chǔ)器、串行存取 存儲(chǔ)器或其它讀寫(xiě)數(shù)據(jù)存儲(chǔ)裝置等其它讀寫(xiě)存儲(chǔ)器。 系統(tǒng)100包含用以控制乘法電路102的操作的狀態(tài)機(jī)114。舉例來(lái)說(shuō),狀態(tài)機(jī)114 可控制從高速緩沖存儲(chǔ)器104到RAM 112的存儲(chǔ)器存取。如圖所示,狀態(tài)機(jī)114從乘法電路 102接收狀態(tài)信號(hào)?;谒鰻顟B(tài)信號(hào),狀態(tài)機(jī)114可確定乘法電路102的當(dāng)前狀態(tài)?;?所述當(dāng)前狀態(tài),狀態(tài)機(jī)114可接著將控制信號(hào)傳輸?shù)絉AM 112及/或乘法電路102。在一個(gè) 實(shí)例中,狀態(tài)機(jī)114可接收所述狀態(tài)信號(hào)以確定高速緩沖存儲(chǔ)器104是否已完成從RAM 112 讀取操作數(shù)段。如果高速緩沖存儲(chǔ)器104已完成讀取操作數(shù)段,那么狀態(tài)機(jī)114可(舉例 來(lái)說(shuō))將控制信號(hào)傳輸?shù)匠朔娐?02以使用乘法器106將所述操作數(shù)段相乘。以下參照 圖3描述狀態(tài)機(jī)114的操作序列的一些實(shí)例。 在一些實(shí)施方案中,狀態(tài)機(jī)114可以是包含用以控制所述乘法電路的硬件狀態(tài)機(jī) 結(jié)構(gòu)的數(shù)字邏輯電路(例如,現(xiàn)場(chǎng)可編程門陣列(FPGA)、專用集成電路(ASIC)、離散數(shù)字電 路組件或其組合)。在其它實(shí)施方案中,狀態(tài)機(jī)114可以是由系統(tǒng)100處理以操作乘法電 路102的計(jì)算機(jī)程序。在另一實(shí)施方案中,狀態(tài)機(jī)114可以是執(zhí)行軟件指令以實(shí)施操作序 列以使用乘法電路102將兩個(gè)操作數(shù)相乘的處理器。 在各種實(shí)例中,狀態(tài)機(jī)114可以是操作定序器,其經(jīng)配置以控制高速緩沖存儲(chǔ)器 104對(duì)RAM 112的存取且控制分別由乘法器106及累加器108執(zhí)行的相乘及累加運(yùn)算的序 列。在另一實(shí)例中,狀態(tài)機(jī)114可指令乘法電路102使用乘法器106將兩個(gè)字寬操作數(shù)相 乘。舉例來(lái)說(shuō),狀態(tài)機(jī)102可規(guī)定來(lái)自高速緩沖存儲(chǔ)器104的將由乘法器106相乘的兩個(gè) 字寬操作數(shù)。在另一實(shí)例中,狀態(tài)機(jī)114可指令乘法電路102將來(lái)自所述乘法器的結(jié)果累 加于累加寄存器110中。舉例來(lái)說(shuō),累加器108可累加雙字寬乘法結(jié)果與累加寄存器110 中的現(xiàn)有值并將累加結(jié)果存儲(chǔ)于累加寄存器110中。在另一實(shí)例中,狀態(tài)機(jī)114可指令乘
8法電路102將來(lái)自累加寄存器110的字(例如,上部字或下部字)存儲(chǔ)到RAM 112。舉例來(lái) 說(shuō),狀態(tài)機(jī)114可致使累加器108從累加寄存器110提取上部字及/或下部字并將所提取 的數(shù)據(jù)字存儲(chǔ)于RAM 112中。在另一實(shí)例中,狀態(tài)機(jī)114可指令乘法電路102復(fù)位累加寄 存器110。舉例來(lái)說(shuō),狀態(tài)機(jī)114可致使累加器108從累加寄存器110提取上部字并將累加 寄存器110復(fù)位到所提取的上部字。
乘法電路操作的說(shuō)明性實(shí)例 參照?qǐng)D2,將使用以上所定義的A及B操作數(shù)借助說(shuō)明性實(shí)例來(lái)描述乘法電路102 的操作。每一操作數(shù)A及B包含相連的有序字寬操作數(shù)段Aj及Bi,舉例來(lái)說(shuō),以上所定義 的A。到^及B。到B3。每一字寬操作數(shù)段以特定權(quán)數(shù)j或i為特征。每一A字寬操作數(shù)段 的權(quán)數(shù)j是從0到k的整數(shù),其中k是最大權(quán)數(shù),在此實(shí)例中為"3"。每一 B字寬操作數(shù)段 的權(quán)數(shù)i是從0到m的整數(shù),其中m是最大權(quán)數(shù),在此實(shí)例中為"3"。 圖2顯示包含m+l個(gè)行及k+m+2個(gè)列的乘法矩陣200的示意性表示。每一行具有 權(quán)數(shù)x且每一列具有權(quán)數(shù)y。在此實(shí)例中,行權(quán)數(shù)介于從0到3的范圍內(nèi)且列權(quán)數(shù)介于從0 到7的范圍內(nèi)。同時(shí)對(duì)一對(duì)行而非在逐單行的基礎(chǔ)上執(zhí)行乘法運(yùn)算。對(duì)于每一對(duì)行,從存 儲(chǔ)器讀取一對(duì)對(duì)應(yīng)Bi字寬操作數(shù)段且針對(duì)包含針對(duì)給定對(duì)行填充的單元的列中的每一者 反復(fù)地執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算(A,Bi)。如此,當(dāng)針對(duì)每一列執(zhí)行乘法運(yùn)算時(shí),需要 最多兩個(gè)額外存儲(chǔ)器讀取操作及一個(gè)存儲(chǔ)器寫(xiě)入操作。有利地,所述系統(tǒng)中由此可使用高 效存儲(chǔ)器接口 ,例如雙端口 RAM或兩個(gè)單端口 RAM。 狀態(tài)機(jī)114可操作乘法電路102以執(zhí)行乘法矩陣200所表示的字寬操作數(shù)段對(duì)乘 法運(yùn)算。狀態(tài)機(jī)114進(jìn)行選擇以一次對(duì)乘法矩陣200中的一對(duì)行執(zhí)行乘法運(yùn)算。在完成 對(duì)所述對(duì)的行的乘法運(yùn)算之后,狀態(tài)機(jī)114選擇另一對(duì)行直到完成所有字寬操作數(shù)段對(duì)乘 法。 在所描繪的實(shí)例中,狀態(tài)機(jī)114進(jìn)行選擇以按圖2中的箭頭所指示的序列執(zhí)行字 寬操作數(shù)段乘法。如圖所示,狀態(tài)機(jī)114可選擇乘法矩陣200中的行202、204。在完成乘法 運(yùn)算之后,狀態(tài)機(jī)114選擇行206、208。在一個(gè)實(shí)施方案中,狀態(tài)機(jī)114根據(jù)每一對(duì)中所包 含的行的權(quán)數(shù)的增加或減小的權(quán)數(shù)值的數(shù)字序列來(lái)選擇一對(duì)行。舉例來(lái)說(shuō),狀態(tài)機(jī)114可 選擇具有權(quán)數(shù)t及t+l的一對(duì)行之后選擇具有權(quán)數(shù)t+2及t+3的一對(duì)行。然而,在另一實(shí) 施方案中,可隨機(jī)化對(duì)行對(duì)的選擇。隨機(jī)化行對(duì)計(jì)算的序列可提供乘法運(yùn)算中所使用的數(shù) 據(jù)的經(jīng)改進(jìn)安全性。 再次參照?qǐng)D2,在選擇行202 、204之后,狀態(tài)機(jī)114可指令乘法電路102讀取一對(duì) 對(duì)應(yīng)B字寬操作數(shù)段。也就是說(shuō),將具有對(duì)應(yīng)權(quán)數(shù)值的B字寬操作數(shù)段讀取到高速緩沖存 儲(chǔ)器104,在此實(shí)例中為B。及B1Q狀態(tài)機(jī)114可通過(guò)針對(duì)從權(quán)數(shù)0到權(quán)數(shù)4的每一列反復(fù) 地執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算來(lái)填充行202、204中的單元。 作為實(shí)例,狀態(tài)機(jī)114首先可指令高速緩沖存儲(chǔ)器104從RAM 112讀取操作數(shù)段 A。。接下來(lái),狀態(tài)機(jī)114可指令乘法電路102計(jì)算中間乘積A。*B。。乘法電路102將中間乘 積存儲(chǔ)于累加寄存器110中。狀態(tài)機(jī)114可指令乘法電路102將來(lái)自累加寄存器110的下 部字(即,最低有效n個(gè)位)寫(xiě)入到RAM 112作為列0的最終列結(jié)果(R。),因?yàn)榱?中不存 在將要計(jì)算的其它值,即,對(duì)于此對(duì)行或任何其它行來(lái)說(shuō)。狀態(tài)機(jī)114可將累加寄存器110 復(fù)位到累加寄存器110中的上部字,其中所述上部字是計(jì)算下一列254的結(jié)果中所使用的
9進(jìn)位值(C。)。因此,為計(jì)算列O,僅需要往來(lái)于RAM 112的一個(gè)讀取操作(讀取A。)及一個(gè) 寫(xiě)入操作(寫(xiě)入R。)。 使用進(jìn)位值C。及從RAM 112讀取的額外操作數(shù)段^,狀態(tài)機(jī)114可使用乘法電路 102來(lái)計(jì)算下一列254的結(jié)果。狀態(tài)機(jī)114指令高速緩沖存儲(chǔ)器104從RAM 112讀取Alt) 接下來(lái),乘法器106可計(jì)算中間乘積A,Bi且累加器108可將A,Bi與進(jìn)位值C。累加于累加 寄存器110中。如此,累加寄存器110存儲(chǔ)進(jìn)位值C。與乘積A,B工的和。乘法器106進(jìn)一 步計(jì)算中間乘積A^B。。將乘法乘積A^B。累加于累加寄存器110中。在累加所述乘法乘積 之后,累加器108可將來(lái)自累加寄存器110的下部字寫(xiě)入到RAM 112作為最終列結(jié)果(R》 且復(fù)位所述累加寄存器,其中累加寄存器110中的上部字作為下一列256的進(jìn)位值&。總 的來(lái)說(shuō),對(duì)于計(jì)算列1的乘法循環(huán) 讀取操作讀取& (先前已讀取A。且其在高速緩沖存儲(chǔ)器中); 寫(xiě)入操作寫(xiě)入R。 & = (C。+A,B一A^B。)的下部字;且 Ci = (C。+A,B一A^B。)的上部字。 字寬操作數(shù)段的權(quán)數(shù)的和等于對(duì)應(yīng)列的權(quán)數(shù)。也就是說(shuō),在以上具有權(quán)數(shù)"l"的 列1 254的實(shí)例中,對(duì)于兩個(gè)乘法運(yùn)算中的每一者,字寬操作數(shù)段的權(quán)數(shù)是0+l = 1及1+0 =1。 對(duì)于列2256,累加器108可累加乘法乘積A2*B。及A^Bi以及來(lái)自列254的進(jìn)位值
Q。由于行202、204并非為針對(duì)列254將要計(jì)算的最終行,因此累加器108寫(xiě)入累加結(jié)果
的上部字作為列2的中間列結(jié)果(Int2)??偟膩?lái)說(shuō),對(duì)于計(jì)算列2的乘法循環(huán) 讀取操作讀取A2 (先前已讀取Al且其在高速緩沖存儲(chǔ)器中); 寫(xiě)入操作寫(xiě)入Int2 ; Int2 = (C,A^B一A^B。)的下部字;且 C2 = (C,A^B一A^B。)的上部字。 類似地,對(duì)于列3 258,累加器108將累加結(jié)果的下部字寫(xiě)入到RAM 112作為中 間列結(jié)果In^,且對(duì)于列4260將累加結(jié)果的下部字寫(xiě)入到RAM 112作為中間列結(jié)果Int4。 此時(shí),由于不存在將從RAM 112讀取的其它A字寬操作數(shù)段,因此狀態(tài)機(jī)114指令累加器 108將累加寄存器110中的上部字寫(xiě)入到RAM 112作為下一列(SP,列5262)的中間結(jié)果 (Int5)。 狀態(tài)機(jī)114可復(fù)位存儲(chǔ)于乘法電路102中的數(shù)據(jù)。舉例來(lái)說(shuō),狀態(tài)機(jī)114可復(fù)位 存儲(chǔ)于累加寄存器110中的值。在某些實(shí)例中,狀態(tài)機(jī)114還可選擇性地清除存儲(chǔ)于高速 緩沖存儲(chǔ)器104中的值。 接下來(lái),狀態(tài)機(jī)114可選擇先前尚未選擇的另一對(duì)行。在此實(shí)例中,狀態(tài)機(jī)114 選擇行206 、208。狀態(tài)機(jī)114指令高速緩沖存儲(chǔ)器104將對(duì)應(yīng)于行206 、208的B操作數(shù)段 (即,B2及B3)讀取到高速緩沖存儲(chǔ)器104。在一個(gè)實(shí)施方案中,B2及B3可替換高速緩沖存 儲(chǔ)器104中的B。及B工以降低對(duì)高速緩沖存儲(chǔ)器104大小的要求。 狀態(tài)機(jī)114將A。值從RAM 112讀取到高速緩沖存儲(chǔ)器104中。A。及B2的權(quán)數(shù)的 和是將要計(jì)算的第一列(即,列2 256)的權(quán)數(shù)。使用所確定的權(quán)數(shù),狀態(tài)機(jī)114可校驗(yàn)在 RAM 112中是否可得到權(quán)數(shù)2的中間結(jié)果(Int2)。如先前所描述,先前已計(jì)算Int2并將其
10存儲(chǔ)于RAM 112中,且將其讀取到高速緩沖存儲(chǔ)器104中。在一個(gè)實(shí)施方案中,狀態(tài)機(jī)114 可指令累加器108將累加寄存器110復(fù)位到Int2。通過(guò)累加Int2與乘法乘積A。*B2,乘法電路102獲得列2256的最終結(jié)果(R2)及計(jì)
算下一列3 258的進(jìn)位值(C2)。也就是說(shuō),在累加之后,狀態(tài)機(jī)114可指令乘法電路102存
儲(chǔ)累加結(jié)果的下部n位字作為R2且將累加寄存器110復(fù)位到累加結(jié)果的上部字作為進(jìn)位
值C"在此實(shí)例中,下部字是最終列結(jié)果,因?yàn)榱?中不存在需要計(jì)算的額外行??偟膩?lái)說(shuō),
對(duì)于針對(duì)行2及3計(jì)算列2的乘法循環(huán) 讀取操作讀取Int2 ;讀取A。; 寫(xiě)入操作寫(xiě)入尺2; R2 = [ (A0*B2)+Int2]的下部字; C2 = [ (A。*B2)+Int2]的上部字。 因此,對(duì)于每列的乘法循環(huán),需要兩個(gè)讀取操作及一個(gè)寫(xiě)入操作。此并不包含讀取 B2及B3,因?yàn)樽畛跗湟驯蛔x取并高速緩存且在與行2及3相關(guān)的計(jì)算中使用。在計(jì)算乘法矩 陣200時(shí)所需的最大數(shù)目的存儲(chǔ)器操作是每列兩個(gè)讀取及一個(gè)寫(xiě)入,如此實(shí)例所展示。如 此,RAM 112可以是雙端口存儲(chǔ)器或兩個(gè)單端口存儲(chǔ)器。 再次參照?qǐng)D2,類似地,狀態(tài)機(jī)114可指令乘法電路102通過(guò)累加進(jìn)位值C^A^By A。*B3及Int3以計(jì)算R3。舉例來(lái)說(shuō),狀態(tài)機(jī)114可指令乘法電路102從RAM 112讀取及 Int3。接下來(lái),狀態(tài)機(jī)114可指令乘法電路102將In^累加到累加寄存器110。在累加Int3 之后,狀態(tài)機(jī)114可依序指令乘法電路102計(jì)算并累加乘法乘積^*82與A。*B3。通過(guò)提取 累加結(jié)果的下部字及上部字,狀態(tài)機(jī)114可指令累加器108寫(xiě)入累加結(jié)果的下部字作為R3 并將累加寄存器110復(fù)位到累加結(jié)果的上部剩余位作為進(jìn)位值C3。 以類似方式,狀態(tài)機(jī)114可操作乘法電路102來(lái)計(jì)算最終列結(jié)果1 4及1 5。舉例來(lái) 說(shuō),乘法電路102可通過(guò)累加來(lái)自列3258的進(jìn)位值C3、Int4、A2*B2及A^Bs來(lái)計(jì)算R4。乘法 電路102可通過(guò)累加來(lái)自列4260的進(jìn)位值C4與Int5、 A3*B2及A2*B3來(lái)計(jì)算R5。
由于對(duì)于列264未得到中間列結(jié)果,因此狀態(tài)機(jī)114可指令乘法電路102累加 ~*83與來(lái)自列5262的進(jìn)位值C"在累加之后,乘法電路102可將累加結(jié)果的下部字寫(xiě)入到 RAM 112作為R6。此時(shí),完成針對(duì)行206、208的字寬操作數(shù)段乘法運(yùn)算且不存在將要計(jì)算的 更多的行。因此,將累加結(jié)果的上部剩余位寫(xiě)入到RAM 112作為列7266的最終結(jié)果(艮卩, 作為R7)。 可通過(guò)計(jì)算下式從RAM 112讀取A與B的乘法結(jié)果
R = Ro+R^232+R^264+R3氺296+R4氺2,+R^2湖+Rg氺2,+R7氺2224。
用以執(zhí)行乘法矩陣的計(jì)算的實(shí)例性過(guò)程 現(xiàn)在參照?qǐng)D3,其顯示可用于使用系統(tǒng)100執(zhí)行乘法矩陣的計(jì)算的過(guò)程300的一個(gè) 實(shí)施方案。出于說(shuō)明性目的,將在以上所論述的實(shí)例及圖2中所示的實(shí)例性乘法矩陣200 的背景下描述過(guò)程300。過(guò)程300以在步驟302中接收具有字寬操作數(shù)段A。、^、A2、…、A, 的第一操作數(shù)開(kāi)始。舉例來(lái)說(shuō),系統(tǒng)100可接收具有操作數(shù)段A。到A3(即,k = 3)的第一 操作數(shù)A。接下來(lái),過(guò)程300在步驟304中接收具有字寬操作數(shù)段B。、BpB2、…、B^的第二 操作數(shù)B。舉例來(lái)說(shuō),系統(tǒng)100可接收具有操作數(shù)段B。到B3(即,m二3)的第二操作數(shù)B。
在步驟306中,過(guò)程300包含選擇先前尚未計(jì)算的一對(duì)行roWi及rowi+1(其中i《m-l)。舉例來(lái)說(shuō),狀態(tài)機(jī)114可選擇行202、204來(lái)使用操作數(shù)段執(zhí)行乘法運(yùn)算。接下 來(lái),過(guò)程300在步驟308中包含從存儲(chǔ)器讀取一對(duì)字寬操作數(shù)Bi及Bi+1。舉例來(lái)說(shuō),高速緩 沖存儲(chǔ)器104可從RAM 112讀取一對(duì)字寬操作數(shù)段。過(guò)程300在步驟310中包含設(shè)定j = 0,也就是說(shuō),狀態(tài)機(jī)114最初可將Aj的權(quán)數(shù)j選擇為零。 過(guò)程300在步驟312中包含從存儲(chǔ)器讀取Aj。舉例來(lái)說(shuō),高速緩沖存儲(chǔ)器104可 從RAM 112讀取操作數(shù)段A。。在步驟314中,過(guò)程300包含確定是否j = 0。如果j = 0, 那么過(guò)程300在步驟316中包含執(zhí)行乘法g = A,Bi。舉例來(lái)說(shuō),當(dāng)選擇行206、208時(shí),乘 法電路102可針對(duì)列2256執(zhí)行乘法A。*B2。如果j # O,那么過(guò)程300在步驟318中包含執(zhí) 行乘法g = A,Bi+Aj—^Bw。舉例來(lái)說(shuō),當(dāng)選擇行202、204時(shí),乘法電路102可執(zhí)行列254處 的乘法A^B。+A,Bi以計(jì)算R1Q 在于步驟316或318處執(zhí)行乘法之后,過(guò)程300在步驟320中包含確定是否存在 Inti+j(具有權(quán)數(shù)=i+j的中間列結(jié)果)。舉例來(lái)說(shuō),狀態(tài)機(jī)114可校驗(yàn)RAM 112中是否存 在Int2。如果存在Inti+j,那么過(guò)程300在步驟322中包含從存儲(chǔ)器讀取Inti+j。在以上所 描述的實(shí)例中,當(dāng)選擇行206、208時(shí),高速緩沖存儲(chǔ)器104可讀取Int2,因?yàn)橄惹耙延?jì)算列 256 (在行202、204中)。如果不存在Inti+j,那么過(guò)程300在步驟324中包含將Inti+j設(shè)定 為零,否則執(zhí)行步驟322以從存儲(chǔ)器讀取Inti+j。 在于步驟322中從存儲(chǔ)器讀取Inti+j或于步驟324中將Inti+j設(shè)定為零之后,過(guò) 程300在步驟326中包含累加g+Inti+j+Ci+j—工(其中Ci+j—工是來(lái)自先前列乘法的進(jìn)位)。舉例 來(lái)說(shuō),累加器108可累力口 Int3、 AA、 A。*B3及來(lái)自歹lj 2256的乘法的進(jìn)位C2以計(jì)算列3258 的列結(jié)果。在累加之后,過(guò)程300在步驟328中包含確定針對(duì)Coli+j將要計(jì)算的更多的行。 舉例來(lái)說(shuō),狀態(tài)機(jī)114可確定是否需要針對(duì)Coli+j來(lái)填充矩陣200中的更多的行。如果針 對(duì)Coli+j將不計(jì)算更多的行,那么過(guò)程300在步驟330中包含寫(xiě)入累加結(jié)果的下部字作為 Coli+j的最終結(jié)果(Ri+j)。舉例來(lái)說(shuō),對(duì)于列1254,累加器108可寫(xiě)入A^B。、A,Bi及來(lái)自列 0252的進(jìn)位Q的累加結(jié)果的下部字作為Rn因?yàn)獒槍?duì)列1254不存在將要計(jì)算的更多的行。 如果針對(duì)Coli+j將要計(jì)算更多的行,那么過(guò)程300在步驟332中包含寫(xiě)入累加結(jié)果的下部 字作為中間結(jié)果(Inti+j)。舉例來(lái)說(shuō),在計(jì)算行202、204時(shí),累加器108可寫(xiě)入A3*B。、 A^B工 及來(lái)自列256的進(jìn)位C2的累加結(jié)果的下部字作為Int3(而非R3),因?yàn)獒槍?duì)列3258仍必須 計(jì)算更多的行。 過(guò)程300在步驟334中包含將累加結(jié)果的上部剩余位設(shè)定為進(jìn)位(Ci+j)。舉例來(lái) 說(shuō),累加器108可將累加寄存器110復(fù)位到當(dāng)前存儲(chǔ)于累加寄存器110中的值的上部字。在 步驟336中,過(guò)程300包含確定是否j > k。如果j《k,那么重復(fù)步驟312。如果j > k, 那么過(guò)程300在步驟340中包含執(zhí)行乘法g = Aj*Bi+1。舉例來(lái)說(shuō),在針對(duì)列6264 (其中j = k = 3)執(zhí)行乘法時(shí),乘法電路102可執(zhí)行A3*B3。 在步驟342中,過(guò)程300包含確定是否將要計(jì)算更多的行。舉例來(lái)說(shuō),狀態(tài)機(jī)114 可校驗(yàn)是否未填充矩陣200中的某一行。如果將要計(jì)算更多的行,那么過(guò)程300在步驟344 中包含寫(xiě)入累加結(jié)果的下部字作為中間結(jié)果(Inti+j)。接下來(lái),過(guò)程300在步驟346中包含 寫(xiě)入累加結(jié)果的上部字作為中間結(jié)果(Inti+,》,且過(guò)程循環(huán)回到步驟306并繼續(xù)。舉例來(lái) 說(shuō),當(dāng)選擇行202、204時(shí),乘法電路102可在針對(duì)列4260執(zhí)行乘法運(yùn)算之后將下部字寫(xiě)入 于累加寄存器110中作為Int4并將上部字寫(xiě)入于累加寄存器110中作為Int5。
在步驟342中,如果將不計(jì)算更多的行,那么過(guò)程300在步驟348中包含寫(xiě)入累加 結(jié)果的下部字作為最終結(jié)果(Ri+j)。接下來(lái),過(guò)程300在步驟350中包含寫(xiě)入累加結(jié)果的上 部字作為最終結(jié)果Ri+j+1且過(guò)程300結(jié)束。舉例來(lái)說(shuō),當(dāng)在完成行202、204之后計(jì)算列264 時(shí),累加器108可將下部字寫(xiě)入于累加寄存器110中作為R6并將上部字寫(xiě)入于累加寄存器 110中作為R7。接著可通過(guò)計(jì)算下式從RAM 112讀取A與B的乘法結(jié)果
R = Ro+R^232+R2氺264+R3氺296+R,2,+R5氺2湖+R,2,+R產(chǎn)2224。 雖然描述了乘法系統(tǒng)及過(guò)程的一些實(shí)施方案,但還可使用其它實(shí)施方案。在各種 實(shí)施方案中,狀態(tài)機(jī)114可從m+l個(gè)行隨機(jī)地選擇一對(duì)行。舉例來(lái)說(shuō),狀態(tài)機(jī)114可包含隨 機(jī)數(shù)產(chǎn)生器。使用所述隨機(jī)數(shù)產(chǎn)生器,狀態(tài)機(jī)114可產(chǎn)生表示矩陣200中先前未選擇的一對(duì) 行的隨機(jī)數(shù)。狀態(tài)機(jī)114接著可繼續(xù)使用隨機(jī)選擇的行來(lái)執(zhí)行乘法運(yùn)算。在一些實(shí)例中, 隨機(jī)選擇可改進(jìn)系統(tǒng)100的安全性。 一對(duì)行不必是一對(duì)鄰近行;任何兩個(gè)行均可作為一對(duì)。
在一些實(shí)施方案中,狀態(tài)機(jī)114可經(jīng)配置以一次針對(duì)多于兩個(gè)行執(zhí)行乘法運(yùn)算。 在此實(shí)施方案中,可需要更大的累加器。在一個(gè)實(shí)例中,系統(tǒng)IOO可選擇一群組三個(gè)或三個(gè) 以上行來(lái)同時(shí)執(zhí)行乘法運(yùn)算。在一些實(shí)施方案中,根據(jù)每一群組中所包含的行的權(quán)數(shù)的增 加或減小的權(quán)數(shù)值的數(shù)字序列來(lái)選擇三個(gè)或三個(gè)以上行。在一些實(shí)例中,選擇較多的行來(lái) 進(jìn)行乘法可進(jìn)一步減少用于使兩個(gè)大數(shù)相乘的存儲(chǔ)器存取。 過(guò)程300中及相對(duì)于圖2所描述的實(shí)例中的步驟可以不同于以上所描述的次序來(lái) 執(zhí)行。本文在說(shuō)明性實(shí)例中所描述的步驟的次序?yàn)檎f(shuō)明性,且可通過(guò)以不同次序來(lái)實(shí)施所 述步驟中的一些或所有步驟實(shí)現(xiàn)所需結(jié)果。 在其它實(shí)施方案中,還可使用以上所描述的技術(shù)來(lái)執(zhí)行一系列數(shù)學(xué)運(yùn)算,舉例來(lái)
說(shuō),A*B+Z或Z-A*B或A*B-Z,但其它運(yùn)算是可能的。舉說(shuō)明性實(shí)例來(lái)說(shuō),圖4顯示可經(jīng)執(zhí)行
以計(jì)算A*B+Z的乘法矩陣400,其中A = Oxl1111111222222223333333344444444 ;B = 0x55555555666666667777777788888888 ;且
24 其中Ox表示十六進(jìn)制數(shù); 可將計(jì)算分解成機(jī)器大小字,在此實(shí)例中為32位字寬操作數(shù)段,如下 A = Ao+A^232+A^264+A^296 ; B = Bo+B^232+B^264+B3氺296 ;且 Z = Zo+Z一232+Z一264+Z3氺296+Z,2,+Z5氺2湖+Z,2工92+Z7氺2224 其中 A0 = 0x44444444 ;A丄=0x33333333 ;A2 = 0x22222222 ;A3 = 0x11111111 ; B。 = 0x88888888 ^ = 0x77777777 ;B2 = 0x66666666 ;B3 = 0x55555555 ;且 Z0 = 0x24242424 ;Z丄=0x20202020 ;Z2 = 0x18181818 ;Z3 = 0x16161616 ; Z4 = 0x14141414 ;Z5 = 0x12121212 ;Z6 = 0x10101010 ;Z7 = 0x99999999。 參照矩陣400, A與B的乘法運(yùn)算與以上參照?qǐng)D2所描述的運(yùn)算大致相同地發(fā)生。 然而,在此實(shí)施方案中,當(dāng)計(jì)算行0(402)及1(404)時(shí),以當(dāng)計(jì)算行2(406)及3(408)時(shí),將 中間值(例如,Int2、 Int3等)與乘法乘積求和類似的方式將Z字寬操作數(shù)段與乘法乘積
13求和。也就是說(shuō),舉例來(lái)說(shuō),當(dāng)針對(duì)行0 (402)及1 (404)計(jì)算列0 (410)時(shí),在讀取值B。及
Bi的初始讀取操作之后,操作如下 讀取操作讀取Z。及A。 寫(xiě)入操作寫(xiě)入R。 其中R。 = (A。*B。+Z。)的下部字;且 進(jìn)位C。二 (A。*B。+Z。)的上部字。 針對(duì)行0 (402)及1 (404)計(jì)算列1 (412)的操作如下:
讀取操作讀取Z工及A
寫(xiě)入操作寫(xiě)入I^ 其中& = (A^B。+A,B一C。+Z》的下部字;且
進(jìn)位Q二 (A^Bo+Ao氺B一Co+Z》的上部字。 可以類似于上文的方式計(jì)算所述矩陣的平衡。因此,可在不針對(duì)一對(duì)行每列進(jìn)行 多于兩個(gè)讀取操作的情況下實(shí)施計(jì)算。 可將本發(fā)明及本說(shuō)明書(shū)中所描述的所有功能操作實(shí)施于數(shù)字電子電路中,或?qū)嵤?于計(jì)算機(jī)硬件、固件、軟件或其組合中??蓪⒈景l(fā)明的設(shè)備實(shí)施于有形地體現(xiàn)于機(jī)器可讀存 儲(chǔ)裝置中以供可編程處理器執(zhí)行的計(jì)算機(jī)程序產(chǎn)品中;且本發(fā)明的方法步驟可由可編程處 理器來(lái)執(zhí)行,所述可編程處理器執(zhí)行指令的程序以通過(guò)對(duì)輸入數(shù)據(jù)進(jìn)行操作及產(chǎn)生輸出來(lái) 執(zhí)行本發(fā)明的功能。 本發(fā)明可有利地實(shí)施于可于可編程系統(tǒng)上執(zhí)行的一個(gè)或一個(gè)以上計(jì)算機(jī)程序中, 所述可編程系統(tǒng)包含至少一個(gè)可編程處理器(其經(jīng)耦合以從數(shù)據(jù)存儲(chǔ)系統(tǒng)接收數(shù)據(jù)及指 令并將數(shù)據(jù)及指令傳輸?shù)剿鰯?shù)據(jù)存儲(chǔ)系統(tǒng))、至少一個(gè)輸入裝置及至少一個(gè)輸出裝置。如 果需要,那么可以高級(jí)程序或面向?qū)ο蟮木幊陶Z(yǔ)言或以組合件或機(jī)器語(yǔ)言實(shí)施每一計(jì)算機(jī) 程序;且在任一情況下,所述語(yǔ)言可以是編譯或解釋語(yǔ)言。 適合處理器包含(舉例來(lái)說(shuō))通用及專用微處理器兩者。 一般來(lái)說(shuō),處理器將從 只讀存儲(chǔ)器及/或隨機(jī)存取存儲(chǔ)器接收指令及數(shù)據(jù)。 一般來(lái)說(shuō),計(jì)算機(jī)將包含用于存儲(chǔ)數(shù) 據(jù)文件的一個(gè)或一個(gè)以上大容量存儲(chǔ)裝置;此類裝置包含磁盤(pán)(例如,內(nèi)部硬磁盤(pán)及可裝 卸磁盤(pán));磁光盤(pán);及光盤(pán)。適合于有形地體現(xiàn)計(jì)算機(jī)程序指令及數(shù)據(jù)的存儲(chǔ)裝置包含所有 形式的非易失性存儲(chǔ)器,包含(舉例來(lái)說(shuō))半導(dǎo)體存儲(chǔ)器裝置(例如,EPR0M、EEPR0M及快 閃存儲(chǔ)器裝置);磁盤(pán)(例如,內(nèi)部硬磁盤(pán)及可裝卸磁盤(pán));磁光盤(pán);及CD-R0M光盤(pán)。前述 任一者均可由ASIC (專用集成電路)進(jìn)行補(bǔ)充或并入于ASIC中。 為提供與用戶的互動(dòng),可將本發(fā)明實(shí)施于計(jì)算機(jī)系統(tǒng)上,所述計(jì)算機(jī)系統(tǒng)具有用 于向用戶顯示信息的顯示裝置(例如,監(jiān)視器或LCD屏幕)以及鍵盤(pán)及指向裝置(例如,鼠 標(biāo)或軌跡球),用戶可通過(guò)其向所述計(jì)算機(jī)系統(tǒng)提供輸入。所述計(jì)算機(jī)系統(tǒng)可經(jīng)編程以提供 圖形用戶接口 ,計(jì)算機(jī)程序通過(guò)所述圖形用戶接口與用戶互動(dòng)。 已描述本發(fā)明的若干實(shí)施例。然而,應(yīng)理解,可在不背離本發(fā)明精神及范圍的情況 下作出各種修改。因此,其它實(shí)施例均歸屬于以上權(quán)利要求書(shū)的范圍內(nèi)。
1權(quán)利要求
一種操作乘法電路以計(jì)算兩個(gè)操作數(shù)(A與B)的乘積的計(jì)算機(jī)實(shí)施的方法,所述兩個(gè)操作數(shù)中的至少一者寬于與所述乘法電路相關(guān)聯(lián)的寬度,其中所述操作數(shù)中的每一者包括以特定權(quán)數(shù)j及i為特征的一個(gè)或一個(gè)以上相連的有序字寬操作數(shù)段(Aj及Bi),其中j是從0到k的整數(shù)且其中i是從0到m的整數(shù),且字是規(guī)定數(shù)目的位(n),且其中所述乘法電路執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算矩陣,所述矩陣包括m+1個(gè)行及k+m+2個(gè)列,每一行具有權(quán)數(shù)x且每一列具有權(quán)數(shù)y,所述乘法電路可存取存儲(chǔ)器,所述方法包括同時(shí)對(duì)一對(duì)行執(zhí)行乘法運(yùn)算,其中對(duì)于每一對(duì)行,從所述存儲(chǔ)器讀取一對(duì)對(duì)應(yīng)Bi字寬操作數(shù)段,且針對(duì)k+2個(gè)列中的每一者反復(fù)地執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算(Aj*Bi),使得對(duì)于所述矩陣中的每一列,需要最多兩個(gè)額外存儲(chǔ)器讀取操作及一個(gè)存儲(chǔ)器寫(xiě)入操作。
2. 根據(jù)權(quán)利要求1所述的方法,其中對(duì)根據(jù)每一對(duì)中所包含的所述行的所述權(quán)數(shù)的增 加或減小的權(quán)數(shù)值的數(shù)字序列而選擇的若干對(duì)行執(zhí)行所述乘法運(yùn)算。
3. 根據(jù)權(quán)利要求1所述的方法,其中對(duì)從所述m+l個(gè)行中隨機(jī)選擇的若干對(duì)行執(zhí)行所 述乘法運(yùn)算。
4. 根據(jù)權(quán)利要求1所述的方法,其中針對(duì)具有權(quán)數(shù)yi的列的字寬操作數(shù)段對(duì)乘法運(yùn)算 包括執(zhí)行Aj字寬操作數(shù)段乘以Bi字寬操作數(shù)段的至少一個(gè)乘法運(yùn)算,其中所述Aj字寬操 作數(shù)的所述權(quán)數(shù)j與所述Bi字寬操作數(shù)段的所述權(quán)數(shù)i的和等于所述列的所述權(quán)數(shù)yi。
5. 根據(jù)權(quán)利要求l所述的方法,其進(jìn)一步包括計(jì)算所述k+m+2個(gè)列中的每一者的n位最終列結(jié)果,其中列的最終列結(jié)果包括相對(duì)于 所述列針對(duì)所述m+l個(gè)行中的所述每一者執(zhí)行的所述字寬操作數(shù)段對(duì)乘法運(yùn)算的累加的 最低有效n位字。
6. 根據(jù)權(quán)利要求5所述的方法,其中計(jì)算列的n位最終列結(jié)果包括對(duì)于針對(duì)所述 列所計(jì)算的最終一對(duì)行,累加所述字寬操作數(shù)段對(duì)乘法運(yùn)算的結(jié)果、所述列的中間列結(jié)果 (如果有)及作為針對(duì)先前所計(jì)算的列而確定的累加結(jié)果的上部字的進(jìn)位值(如果有),以 確定所述列的累加結(jié)果,其中所述n位最終列結(jié)果包括所述列的所述累加結(jié)果的最低有效 n個(gè)位。
7. 根據(jù)權(quán)利要求5所述的方法,其中列的中間列結(jié)果包括對(duì)于并非為針對(duì)所述列將 要計(jì)算的所述最終對(duì)行的一對(duì)行,累加所述字寬操作數(shù)段對(duì)乘法運(yùn)算的結(jié)果、所述列的先 前所計(jì)算的中間列結(jié)果(如果有)及先前所計(jì)算的列的進(jìn)位值(如果有),以確定所述列的 中間累加結(jié)果,其中所述中間列結(jié)果包括所述列的所述中間累加結(jié)果的所述最低有效n個(gè) 位。
8. 根據(jù)權(quán)利要求7所述的方法,其中所述列的所述中間累加結(jié)果的上部字包括所述列 的將要在下一列的累加運(yùn)算中使用的進(jìn)位值。
9. 根據(jù)權(quán)利要求1所述的方法,其中將從存儲(chǔ)器讀取的對(duì)應(yīng)于所述對(duì)行的所述對(duì)Bi字 寬操作數(shù)段存儲(chǔ)于高速緩沖存儲(chǔ)器中,同時(shí)執(zhí)行針對(duì)所述對(duì)行的所述乘法運(yùn)算。
10. —種操作乘法電路以計(jì)算兩個(gè)操作數(shù)(A與B)的乘積的計(jì)算機(jī)實(shí)施的方法,所述 兩個(gè)操作數(shù)中的至少一者寬于所述乘法電路,其中所述操作數(shù)中的每一者包括以特定權(quán)數(shù) j及i為特征的一個(gè)或一個(gè)以上相連的有序字寬操作數(shù)段(Aj及B》,其中j是從0到k的 整數(shù)且其中i是從0到m的整數(shù),且字是規(guī)定數(shù)目的位(n),且其中所述乘法電路執(zhí)行字寬 操作數(shù)段對(duì)乘法運(yùn)算矩陣,所述矩陣包括m+1個(gè)行及k+m+2個(gè)列,每一行具有權(quán)數(shù)x且每一列具有權(quán)數(shù)y,所述乘法電路可存取存儲(chǔ)器,所述方法包括對(duì)于所述矩陣中的每一對(duì)行,所述行具有權(quán)數(shù)Xl及x2,從所述存儲(chǔ)器讀取一對(duì)B操作 數(shù)段,其中第一B操作數(shù)段(Bxl)的權(quán)數(shù)是A且第二B操作數(shù)段(Bx2)的權(quán)數(shù)是X2,且進(jìn)一 步執(zhí)行以下操作(a) 從所述存儲(chǔ)器讀取Aj操作數(shù)段(Aj》;(b) 對(duì)于具有權(quán)數(shù)y的列,如果有中間列結(jié)果(Inty)的話,那么讀取中間列結(jié)果 (Inty),中間列結(jié)果是所述列的對(duì)應(yīng)于一不同對(duì)或若干不同對(duì)行的先前所確定的結(jié)果;(c) 使所述Ajj喿作數(shù)段乘以所述第一B操作數(shù)段(Bj,其中所述Aj操作數(shù)段的權(quán)數(shù) (丄)連同所述第一 B操作數(shù)段的所述權(quán)數(shù)(Xl) —起等于所述列y的所述權(quán)數(shù);(d) 如果j > O,那么使存儲(chǔ)于高速緩沖存儲(chǔ)器中的先前所讀取的Aj操作數(shù)段(Aj。)乘 以所述第二B操作數(shù)段(Bj,其中所述先前所讀取的Aj。操作數(shù)段的權(quán)數(shù)(j。)連同所述第 二B操作數(shù)段的所述權(quán)數(shù)(x2) —起等于所述列的所述權(quán)數(shù)y ;(e) 累加所述一個(gè)或兩個(gè)乘法運(yùn)算的結(jié)果及所述中間列結(jié)果Inty(如果有)以及具有 權(quán)數(shù)y-1的先前所計(jì)算的列的進(jìn)位值Cy—工(如果有)以提供累加結(jié)果;(f) 如果不存在針對(duì)所述列將要計(jì)算的其它行,那么將所述累加結(jié)果的最低有效n個(gè) 位寫(xiě)入到所述存儲(chǔ)器作為最終列結(jié)果Ry,否則將所述累加結(jié)果的所述最低有效n個(gè)位寫(xiě)入 到所述存儲(chǔ)器作為中間列結(jié)果Inty ;及(g) 使j遞增1且反復(fù)進(jìn)行步驟(a)到(g)直到j(luò) > k ; 其中不必以所示次序來(lái)執(zhí)行所述步驟(a)到(g)。
11. 根據(jù)權(quán)利要求io所述的方法,其中對(duì)根據(jù)每一對(duì)中所包含的所述行的所述權(quán)數(shù)的增加或減小的權(quán)數(shù)值的數(shù)字序列而選擇的若干對(duì)行執(zhí)行所述乘法運(yùn)算。
12. 根據(jù)權(quán)利要求10所述的方法,其中對(duì)從所述m+l個(gè)行中隨機(jī)選擇的若干對(duì)行執(zhí)行 所述乘法運(yùn)算。
13. —種計(jì)算機(jī)程序產(chǎn)品,其有形地存儲(chǔ)于計(jì)算機(jī)可讀媒體上,用于操作乘法電路以計(jì) 算兩個(gè)操作數(shù)(A與B)的乘積,所述兩個(gè)操作數(shù)中的至少一者寬于所述乘法電路,其中所述 操作數(shù)中的每一者包括以特定權(quán)數(shù)j及i為特征的一個(gè)或一個(gè)以上相連的有序字寬操作 數(shù)段(Aj及B》,其中j是從0到k的整數(shù)且其中i是從0到m的整數(shù),且字是規(guī)定數(shù)目的 位(n),且其中所述乘法電路執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算矩陣,所述矩陣包括m+1個(gè)行及 k+m+2個(gè)列,每一行具有權(quán)數(shù)x且每一列具有權(quán)數(shù)y,所述乘法電路可存取存儲(chǔ)器,所述計(jì)算 機(jī)程序產(chǎn)品包括可操作以致使可編程處理器執(zhí)行以下操作的指令同時(shí)對(duì)一對(duì)行執(zhí)行乘法運(yùn)算,其中對(duì)于每一對(duì)行,從所述存儲(chǔ)器讀取一對(duì)對(duì)應(yīng)Bi字寬 操作數(shù)段且針對(duì)k+2個(gè)列中的每一者反復(fù)地執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算(A,Bi),使得對(duì) 于所述矩陣中的每一列,需要最多兩個(gè)額外存儲(chǔ)器讀取操作及一個(gè)存儲(chǔ)器寫(xiě)入操作。
14. 根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中所述乘法運(yùn)算是對(duì)根據(jù)每一對(duì)中所 包含的所述行的所述權(quán)數(shù)的增加或減小的權(quán)數(shù)值的數(shù)字序列而選擇的若干對(duì)行執(zhí)行的。
15. 根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中所述乘法運(yùn)算是對(duì)從所述m+l個(gè)行 中隨機(jī)選擇的若干對(duì)行執(zhí)行的。
16. 根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中針對(duì)具有權(quán)數(shù)y工的列的字寬操作數(shù) 段對(duì)乘法運(yùn)算包括執(zhí)行Aj字寬操作數(shù)段乘以Bi字寬操作數(shù)段的至少一個(gè)乘法運(yùn)算,其中所述Aj字寬操作數(shù)的所述權(quán)數(shù)j與所述Bi字寬操作數(shù)段的所述權(quán)數(shù)i的和等于所述列的所 述權(quán)數(shù)
17. 根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其進(jìn)一步包括可操作以致使可編程處理 器執(zhí)行以下操作的指令計(jì)算所述k+m+2個(gè)列中的每一者的n位最終列結(jié)果,其中列的最終列結(jié)果包括相對(duì)于 所述列針對(duì)所述m+l個(gè)行中的所述每一者執(zhí)行的所述字寬操作數(shù)段對(duì)乘法運(yùn)算的累加的 最低有效n位字。
18. 根據(jù)權(quán)利要求17所述的計(jì)算機(jī)程序產(chǎn)品,其中可操作以計(jì)算列的n位最終列結(jié)果 的指令包括可操作以致使可編程處理器執(zhí)行以下操作的指令對(duì)于針對(duì)所述列所計(jì)算的最 終一對(duì)行,累加所述字寬操作數(shù)段對(duì)乘法運(yùn)算的結(jié)果、所述列的中間列結(jié)果(如果有)及作 為針對(duì)先前所計(jì)算的列而確定的累加結(jié)果的上部字的進(jìn)位值(如果有),以確定所述列的 累加結(jié)果,其中所述n位最終列結(jié)果包括所述列的所述累加結(jié)果的最低有效n個(gè)位。
19. 根據(jù)權(quán)利要求18所述的計(jì)算機(jī)程序產(chǎn)品,其進(jìn)一步包括可操作以致使可編程處理 器執(zhí)行以下操作的指令計(jì)算列的n位中間列結(jié)果,其中列的中間列結(jié)果包括對(duì)于并非為針對(duì)所述列將要計(jì) 算的所述最終對(duì)行的一對(duì)行,累加所述字寬操作數(shù)段對(duì)乘法運(yùn)算的結(jié)果、所述列的先前所 計(jì)算的中間列結(jié)果(如果有)及先前所計(jì)算的列的進(jìn)位值(如果有),以確定所述列的中間 累加結(jié)果,其中所述中間列結(jié)果包括所述列的所述中間累加結(jié)果的所述最低有效n個(gè)位。
20. 根據(jù)權(quán)利要求19所述的計(jì)算機(jī)程序產(chǎn)品,其中所述列的所述中間累加結(jié)果的上部 字包括所述列的將要在下一列的累加運(yùn)算中使用的進(jìn)位值。
21. 根據(jù)權(quán)利要求13所述的計(jì)算機(jī)程序產(chǎn)品,其中從存儲(chǔ)器讀取的對(duì)應(yīng)于所述對(duì)行的 所述對(duì)Bi字寬操作數(shù)段被存儲(chǔ)于高速緩沖存儲(chǔ)器中,同時(shí)針對(duì)所述對(duì)行的所述乘法運(yùn)算被 執(zhí)行。
22. —種用于計(jì)算兩個(gè)操作數(shù)(A與B)的乘積的系統(tǒng),所述兩個(gè)操作數(shù)中的至少一者 寬于所述系統(tǒng)中所包含的乘法電路,其中所述操作數(shù)中的每一者包括以特定權(quán)數(shù)j及i為 特征的一個(gè)或一個(gè)以上相連的有序字寬操作數(shù)段(Aj及B》,其中j是從0到k的整數(shù)且其 中i是從0到m的整數(shù),且字是規(guī)定數(shù)目的位(n),且其中所述系統(tǒng)執(zhí)行字寬操作數(shù)段對(duì)乘 法運(yùn)算矩陣,所述矩陣包括m+1個(gè)行及k+m+2個(gè)列,每一行具有權(quán)數(shù)x且每一列具有權(quán)數(shù)y , 所述系統(tǒng)包括乘法器,其包含一個(gè)或一個(gè)以上輸入,所述一個(gè)或一個(gè)以上輸入經(jīng)配置以接收將要 相乘以形成雙字寬中間乘積的字寬操作數(shù)段且經(jīng)配置以執(zhí)行一對(duì)字寬操作數(shù)段的乘法運(yùn) 算;累加器,其包含一個(gè)或一個(gè)以上輸入,其經(jīng)配置以接收來(lái)自所述乘法器的所述雙字寬中間乘積、來(lái)自 高速緩沖存儲(chǔ)器的中間列結(jié)果及來(lái)自所述高速緩沖存儲(chǔ)器的進(jìn)位值;一個(gè)或一個(gè)以上輸出,其經(jīng)配置以將所述雙字寬中間乘積、中間列結(jié)果及進(jìn)位值的累 加的最低有效n個(gè)位提供給所述高速緩沖存儲(chǔ)器作為中間或最終列結(jié)果,且進(jìn)一步經(jīng)配置 以將所述累加的上部位提供給所述高速緩沖存儲(chǔ)器作為進(jìn)位值;其中所述累加器經(jīng)配置以執(zhí)行其中所接收的所述輸入的累加運(yùn)算;高速緩沖存儲(chǔ)器,其經(jīng)配置以從存儲(chǔ)器接收字寬操作數(shù)段及將所述字寬操作數(shù)段傳輸 到所述存儲(chǔ)器,且連接到所述乘法器及所述累加器以向其供應(yīng)輸入及從其接收輸出;及操作定序器,其經(jīng)配置以控制所述高速緩沖存儲(chǔ)器對(duì)所述存儲(chǔ)器的存取且控制分別由 所述乘法器及累加器執(zhí)行的相乘及累加運(yùn)算的序列;其中所述序列經(jīng)定義以同時(shí)對(duì)一對(duì)行執(zhí)行乘法運(yùn)算,其中對(duì)于每一對(duì)行,將一對(duì)對(duì)應(yīng) Bi字寬操作數(shù)段從所述存儲(chǔ)器讀取到所述高速緩沖存儲(chǔ)器中且由所述乘法器針對(duì)k+2個(gè)列 中的每一者反復(fù)地執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算(A,Bi),使得對(duì)于所述矩陣中的每一列, 需要往來(lái)于所述高速緩沖存儲(chǔ)器的最多兩個(gè)額外存儲(chǔ)器讀取操作及一個(gè)存儲(chǔ)器寫(xiě)入操作。
23. 根據(jù)權(quán)利要求22所述的系統(tǒng),其進(jìn)一步包括 所述存儲(chǔ)器,其中所述存儲(chǔ)器需要兩個(gè)存儲(chǔ)器接口 。
24. 根據(jù)權(quán)利要求22所述的系統(tǒng),其進(jìn)一步包括 所述存儲(chǔ)器,其中所述存儲(chǔ)器是單個(gè)雙端口 RAM(隨機(jī)存取存儲(chǔ)器)。
25. 根據(jù)權(quán)利要求22所述的系統(tǒng),其進(jìn)一步包括 所述存儲(chǔ)器,其中所述存儲(chǔ)器包括兩個(gè)單端口 RAM。
26. —種用以計(jì)算兩個(gè)操作數(shù)(A與B)的乘積的計(jì)算機(jī)實(shí)施的方法,所述兩個(gè)操作數(shù)中 的至少一者寬于與執(zhí)行所述乘法的乘法電路相關(guān)聯(lián)的寬度,所述方法包括創(chuàng)建字寬操作數(shù)段對(duì)乘法運(yùn)算矩陣,所述矩陣包括m+l個(gè)行及k+m+2個(gè)列,每一行具有 權(quán)數(shù)x且每一列具有權(quán)數(shù)y,其中所述操作數(shù)中的每一者包括以特定權(quán)數(shù)j及i為特征的一 個(gè)或一個(gè)以上相連的有序字寬操作數(shù)段(Aj及B》,其中j是從0到k的整數(shù)且其中i是從 0到m的整數(shù),且字是規(guī)定數(shù)目的位(n);及同時(shí)對(duì)一對(duì)行執(zhí)行乘法運(yùn)算,其中對(duì)于每一對(duì)行,從存儲(chǔ)器讀取一對(duì)對(duì)應(yīng)Bi字寬操作 數(shù)段且針對(duì)k+2個(gè)列中的每一者反復(fù)地執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算(A,Bi),使得對(duì)于所 述矩陣中的每一列,需要最多兩個(gè)額外存儲(chǔ)器讀取操作及一個(gè)存儲(chǔ)器寫(xiě)入操作。
27. 根據(jù)權(quán)利要求26所述的方法,其中對(duì)根據(jù)每一對(duì)中所包含的所述行的所述權(quán)數(shù)的 增加或減小的權(quán)數(shù)值的數(shù)字序列而選擇的若干對(duì)行執(zhí)行所述乘法運(yùn)算。
28. 根據(jù)權(quán)利要求26所述的方法,其中對(duì)從所述m+l個(gè)行中隨機(jī)選擇的若干對(duì)行執(zhí)行 所述乘法運(yùn)算。
29. —種用于操作乘法電路以計(jì)算兩個(gè)操作數(shù)(A與B)的乘積的系統(tǒng),所述兩個(gè)操作 數(shù)中的至少一者寬于所述乘法電路,其中所述操作數(shù)中的每一者包括以特定權(quán)數(shù)j及i為 特征的一個(gè)或一個(gè)以上相連的有序字寬操作數(shù)段(Aj及B》,其中j是從0到k的整數(shù)且其 中i是從0到m的整數(shù),且字是規(guī)定數(shù)目的位(n),且其中所述乘法電路執(zhí)行字寬操作數(shù)段 對(duì)乘法運(yùn)算矩陣,所述矩陣包括m+l個(gè)行及k+m+2個(gè)列,每一行具有權(quán)數(shù)x且每一列具有權(quán) 數(shù)y,所述乘法電路可存取存儲(chǔ)器,所述系統(tǒng)包括用以同時(shí)對(duì)一對(duì)行執(zhí)行乘法運(yùn)算的構(gòu)件,其中對(duì)于每一對(duì)行,從所述存儲(chǔ)器讀取一對(duì) 對(duì)應(yīng)Bi字寬操作數(shù)段且針對(duì)k+2個(gè)列中的每一者反復(fù)地執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算 (A,Bi),使得對(duì)于所述矩陣中的每一列,需要最多兩個(gè)額外存儲(chǔ)器讀取操作及一個(gè)存儲(chǔ)器 寫(xiě)入操作。
全文摘要
本發(fā)明揭示用于大數(shù)乘法的方法、設(shè)備及系統(tǒng)。提供乘法電路以計(jì)算兩個(gè)操作數(shù)(A與B)的乘積,所述兩個(gè)操作數(shù)中的至少一者寬于與所述乘法電路相關(guān)聯(lián)的寬度。所述操作數(shù)中的每一者包含以特定權(quán)數(shù)j(從0到k的整數(shù))及i(從0到m的整數(shù))為特征的相連的有序字寬操作數(shù)段(Aj及Bi)。所述乘法電路執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算矩陣。同時(shí)對(duì)一對(duì)行執(zhí)行乘法運(yùn)算。對(duì)于每一對(duì)行,從存儲(chǔ)器讀取一對(duì)對(duì)應(yīng)Bi字寬操作數(shù)段且針對(duì)k+2個(gè)列中的每一者反復(fù)地執(zhí)行字寬操作數(shù)段對(duì)乘法運(yùn)算(Aj*Bi)。對(duì)于每一列,需要最多兩個(gè)額外存儲(chǔ)器讀取操作及一個(gè)存儲(chǔ)器寫(xiě)入操作。
文檔編號(hào)G06F7/00GK101790718SQ200880102372
公開(kāi)日2010年7月28日 申請(qǐng)日期2008年8月8日 優(yōu)先權(quán)日2007年8月10日
發(fā)明者拉塞爾·霍布森, 文森特·杜帕丘斯 申請(qǐng)人:愛(ài)特梅爾公司