亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法和裝置的制作方法

文檔序號(hào):1852506閱讀:403來源:國知局
專利名稱:一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及密碼學(xué)領(lǐng)域,尤其涉及一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法和裝置。
背景技術(shù)
許多已知的計(jì)算機(jī)算法都需要進(jìn)行乘法運(yùn)算,如公鑰加密等算法?,F(xiàn)有技術(shù)中可以通過中央處理器(Central Processing Unit,CPU)實(shí)現(xiàn)乘法運(yùn)算。但是當(dāng)乘法運(yùn)算中的數(shù)據(jù)為大數(shù)時(shí),CPU執(zhí)行乘法運(yùn)算時(shí)的運(yùn)算速度比較低。發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法和裝置,能夠提高乘法運(yùn)算的運(yùn)算速度。
一方面,提供一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法,包括
(1).接收到乘法運(yùn)算指令時(shí),獲取所述乘法運(yùn)算指令中第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù);
(2).判斷所述第一待處理數(shù)據(jù)的比特位位數(shù)與所述第二待處理數(shù)據(jù)的比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù);
如果是,返回錯(cuò)誤信息;如果否,執(zhí)行(3);
(3).對所述第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第三待處理數(shù)據(jù),對所述第二待處理數(shù)據(jù)的進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第四待處理數(shù)據(jù);
(4).根據(jù)所述運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù);
(5).將所述第三待處理數(shù)據(jù)的最低位、所述第四待處理數(shù)據(jù)的最低位分別與所述第一參數(shù)的最低位對齊;
(6).將所述第三待處理數(shù)據(jù)按預(yù)設(shè)位長由最低位到最高位進(jìn)行劃分;
(J).根據(jù)所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),并根據(jù)所述第一參數(shù)和所述第二參數(shù)生成第三參數(shù);
(8).將當(dāng)前偏移單元中的數(shù)據(jù)和所述第四待處理數(shù)據(jù)的乘積與當(dāng)前迭代數(shù)據(jù)相加,得到第一數(shù)據(jù);
偏移單元的初始單元為對所述第三待處理數(shù)據(jù)進(jìn)行劃分得到的第一個(gè)單元,迭代數(shù)據(jù)的初始值為0 ;
(9).將所述第二參數(shù)作為模數(shù),對所述第一數(shù)據(jù)與所述第三參數(shù)進(jìn)行模乘運(yùn)算, 得到第二數(shù)據(jù);
(10).將所述第一參數(shù)和所述第二數(shù)據(jù)的乘積與所述第一數(shù)據(jù)進(jìn)行加法運(yùn)算,得到第三數(shù)據(jù);
(11).將所述第三數(shù)據(jù)右移所述預(yù)設(shè)位長,并將移位后得到的數(shù)據(jù)替換當(dāng)前迭代5數(shù)據(jù);
(12).判斷當(dāng)前偏移單元是否為最后一個(gè)單元;
如果是,執(zhí)行(14);如果否,執(zhí)行(13);
(13).將偏移單元指向當(dāng)前偏移單元的下一個(gè)單元,返回(8);
(14).判斷當(dāng)前迭代數(shù)據(jù)是否小于所述第一參數(shù);
如果是,執(zhí)行(16);如果否,執(zhí)行(15);
(15).將當(dāng)前迭代數(shù)據(jù)自減所述第一參數(shù);
(16).存儲(chǔ)或輸出指示所述第一待處理數(shù)據(jù)與所述第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。
其中,所述對所述第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第三待處理數(shù)據(jù),對所述第二待處理數(shù)據(jù)的進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第四待處理數(shù)據(jù),包括
在所述第一待處理數(shù)據(jù)的最高位前補(bǔ)零生成第三待處理數(shù)據(jù),在所述第二待處理數(shù)據(jù)的最高位前補(bǔ)零生成第四待處理數(shù)據(jù),所述第三待處理數(shù)據(jù)與所述第四待處理數(shù)據(jù)的比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同。
其中,所述根據(jù)所述運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù),包括
生成各個(gè)比特位均置1的第一參數(shù),所述第一參數(shù)的比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同。
其中,所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù),具體為
能整除所述運(yùn)算裝置支持的比特位位數(shù)的整數(shù)。
其中,所述根據(jù)所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),包括
以2為底數(shù),以所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù)為冪數(shù)生成所述第二參數(shù)。
其中,所述根據(jù)所述第一參數(shù)和所述第二參數(shù)生成第三參數(shù),包括
生成所述第二參數(shù)的值減去所述第一參數(shù)關(guān)于所述第二參數(shù)的乘法逆元的差值;
生成值與所述差值相同的第三參數(shù)。另一方面,提供一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的裝置,包括
待處理數(shù)據(jù)獲取模塊,用于接收到乘法運(yùn)算指令時(shí),獲取所述乘法運(yùn)算指令中第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù);
第一判斷模塊,用于判斷所述第一待處理數(shù)據(jù)的比特位位數(shù)與所述第二待處理數(shù)據(jù)的比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù);
所述補(bǔ)位模塊,用于在所述第一判斷模塊判斷結(jié)果為是時(shí)對所述第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第三待處理數(shù)據(jù),對所述第二待處理數(shù)據(jù)的進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第四待處理數(shù)據(jù);
第一參數(shù)生成模塊,用于根據(jù)所述運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù);
對齊模塊,用于將所述第三待處理數(shù)據(jù)的最低位、所述第四待處理數(shù)據(jù)的最低位分別與所述第一參數(shù)的最低位對齊;
劃分模塊,用于將所述第三待處理數(shù)據(jù)按預(yù)設(shè)位長由最低位到最高位進(jìn)行劃分;6
第二參數(shù)生成模塊,用于根據(jù)所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),并根據(jù)所述第一參數(shù)和所述第二參數(shù)生成第三參數(shù);
第一數(shù)據(jù)生成模塊,用于將當(dāng)前偏移單元中的數(shù)據(jù)和所述第四待處理數(shù)據(jù)的乘積與當(dāng)前迭代數(shù)據(jù)相加,得到第一數(shù)據(jù);
所述偏移單元的初始單元為所述第一單元,所述迭代數(shù)據(jù)的初始值為0 ;
第二數(shù)據(jù)生成模塊,用于將所述第二參數(shù)作為模數(shù),對所述第一數(shù)據(jù)與所述第三參數(shù)進(jìn)行模乘運(yùn)算,得到第二數(shù)據(jù);
第三數(shù)據(jù)處理模塊,用于將所述第一參數(shù)和所述第二數(shù)據(jù)的乘積與所述第一數(shù)據(jù)進(jìn)行加法運(yùn)算,得到第三數(shù)據(jù);
數(shù)據(jù)替換模塊,用于將所述第三數(shù)據(jù)右移所述預(yù)設(shè)位長后得到的數(shù)據(jù)替換當(dāng)前迭代數(shù)據(jù);
第二判斷模塊,用于判斷當(dāng)前偏移單元是否為最后一個(gè)單元;
所述移位模塊,用于在所述第二判斷模塊判斷結(jié)果為否時(shí)將偏移單元指向當(dāng)前偏移單元的下一個(gè)單元,返回第一數(shù)據(jù)生成模塊;
所述第三判斷模塊,用于在所述第二判斷模塊判斷結(jié)果為是時(shí)判斷當(dāng)前迭代數(shù)據(jù)是否小于所述第一參數(shù);
所述自減模塊,用于在所述第三判斷模塊判斷結(jié)果為否時(shí)將當(dāng)前迭代數(shù)據(jù)自減所述第一參數(shù);
所述輸出模塊,用于在所述第三判斷模塊判斷結(jié)果為是時(shí)存儲(chǔ)或輸出指示所述第一待處理數(shù)據(jù)與所述第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。
其中,所述補(bǔ)位模塊,包括
補(bǔ)位子模塊,用于在所述第一待處理數(shù)據(jù)的最高位前補(bǔ)零生成第三待處理數(shù)據(jù), 在所述第二待處理數(shù)據(jù)的最高位前補(bǔ)零生成第四待處理數(shù)據(jù),所述第三待處理數(shù)據(jù)與所述第四待處理數(shù)據(jù)的比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同。
其中,所述第一參數(shù)生成模塊,包括
第一生成子模塊,用于生成各個(gè)比特位均置1的第一參數(shù),所述第一參數(shù)的比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同。
其中,所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù),具體為
能整除所述運(yùn)算裝置支持的比特位位數(shù)的整數(shù)。
其中,所述第二參數(shù)生成模塊,包括
第二生成子模塊,以2為底數(shù),以所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù)為冪數(shù)生成第二參數(shù)的值。
其中,所述第二參數(shù)生成模塊,包括
第三生成子模塊,用于生成所述第二參數(shù)的值減去所述第一參數(shù)關(guān)于所述第二參數(shù)的乘法逆元的差值;
第四生成子模塊,用于生成值與所述差值相同的第三參數(shù)。
本發(fā)明實(shí)施例提供的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法和裝置,在乘法運(yùn)算指令中第一待處理數(shù)據(jù)比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和小于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以首先將該第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)進(jìn)行補(bǔ)位,得到第三待處理數(shù)據(jù)和第四待處理數(shù)據(jù);然后在第三待處理數(shù)據(jù)的最低位、第四待處理數(shù)據(jù)的最低位分別與第一參數(shù)的最低位對齊時(shí),將第三待處理數(shù)據(jù)按預(yù)設(shè)位長進(jìn)行劃分,并分別生成第一參數(shù)、第二參數(shù)和第三參數(shù);最后通過該第一參數(shù)、第二參數(shù)和第三參數(shù)對當(dāng)前偏移單元中的數(shù)據(jù)和第四待處理數(shù)據(jù)進(jìn)行處理,直到當(dāng)前偏移單元為最后一個(gè)單元時(shí),根據(jù)當(dāng)前迭代數(shù)據(jù)與第一參數(shù)的大小關(guān)系,對當(dāng)前迭代數(shù)據(jù)進(jìn)行處理,得到指示第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。本發(fā)明實(shí)施例提供的技術(shù)方案,由于通過模乘算法實(shí)現(xiàn)相乘的運(yùn)算,使得乘法運(yùn)算的速度得到提高,解決了現(xiàn)有技術(shù)中CPU執(zhí)行乘法運(yùn)算時(shí)的運(yùn)算速度比較低的問題。


為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例一提供的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法的流程圖2為本發(fā)明實(shí)施例二提供的另一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法的流程圖3為本發(fā)明實(shí)施例三提供的在一種嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的裝置的結(jié)構(gòu)示意圖4為圖3所示的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的裝置中補(bǔ)位模塊的結(jié)構(gòu)示意圖5為圖3所示的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的裝置中第一參數(shù)生成模塊的結(jié)構(gòu)示意圖6為圖3所示的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的裝置中第二參數(shù)生成模塊的結(jié)構(gòu)示意圖一;
圖7為圖3所示的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的裝置中第二參數(shù)生成模塊的結(jié)構(gòu)示意圖二。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
為了解決現(xiàn)有技術(shù)執(zhí)行乘法運(yùn)算的運(yùn)算速度比較低的問題,本發(fā)明實(shí)施例提供了一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法和裝置。
如圖1所示,本發(fā)明實(shí)施例一提供的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法, 包括
步驟101,接收到乘法運(yùn)算指令時(shí),獲取該乘法運(yùn)算指令中第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)。
在本實(shí)施例中,步驟101中乘法運(yùn)算指令可以為計(jì)算該第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)乘積的指令。具體的,該第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)可以均為大數(shù),可以為其他數(shù)據(jù),在此不作限制。
步驟102,判斷該第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù),是則執(zhí)行步驟103,否則執(zhí)行步驟104。
在本實(shí)施例中,由于運(yùn)算裝置的配置決定其允許支持的比特位位數(shù);而當(dāng)?shù)谝淮幚頂?shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可能產(chǎn)生運(yùn)算錯(cuò)誤;因此在進(jìn)行乘法運(yùn)算之前,需要首先通過步驟102判斷第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù)。
在本實(shí)施例中,當(dāng)通過步驟102確定第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以通過步驟103返回錯(cuò)誤信息;當(dāng)通過步驟102確定第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和不大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以通過步驟104對第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)分別進(jìn)行補(bǔ)位。
步驟103,返回錯(cuò)誤信息。
在本實(shí)施例中,由于當(dāng)?shù)谝淮幚頂?shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和大于運(yùn)算裝置支持的比特位位數(shù)時(shí),對第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)進(jìn)行乘法運(yùn)算的過程中可能產(chǎn)生運(yùn)算錯(cuò)誤,因此當(dāng)?shù)谝淮幚頂?shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以通過步驟103返回錯(cuò)誤信肩、ο
步驟104,對第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位,生成比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同的第三待處理數(shù)據(jù),對第二待處理數(shù)據(jù)進(jìn)行補(bǔ)位,生成比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同的第四待處理數(shù)據(jù)。
在本實(shí)施例中,步驟104中對第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位可以為在該第一待處理數(shù)據(jù)的最高位前補(bǔ)零生成第三待處理數(shù)據(jù);也可以為通過其他方式對第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位,在此不再一一贅述。其中,第三待處理數(shù)據(jù)的比特位位數(shù)和運(yùn)算裝置支持的比特位位數(shù)相同。
在本實(shí)施例中,步驟104中對第二代處理數(shù)據(jù)進(jìn)行補(bǔ)位可以為在該第二待處理數(shù)據(jù)的最高位前補(bǔ)零生成第四待處理數(shù)據(jù);也可以為通過其他方式對第二待處理數(shù)據(jù)進(jìn)行補(bǔ)位,在此不再一一贅述。其中,第四待處理數(shù)據(jù)的比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同。
步驟105,根據(jù)運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù)。
在本實(shí)施例中,步驟105中根據(jù)運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù)可以為生成各個(gè)比特位均置1的第一參數(shù),該第一參數(shù)的比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同;也可以通過其他方式根據(jù)運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù),在此不再一一贅述。
步驟106,將第三待處理數(shù)據(jù)的最低位、第四待處理數(shù)據(jù)的最低位分別與第一參數(shù)的最低位對齊。
步驟107,由最低位到最高位,將第三待處理數(shù)據(jù)按預(yù)設(shè)位長進(jìn)行劃分,依次得到第一單元、第二單元.......
在本實(shí)施例中,步驟107中預(yù)設(shè)位長對應(yīng)的比特位位數(shù)可以為能整除運(yùn)算裝置支持的比特位位數(shù)的整數(shù);也可以為其他整數(shù),在此不再一一贅述。
步驟108,根據(jù)該預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),并根據(jù)第一參數(shù)和第二參數(shù)生成第三參數(shù)。
在本實(shí)施例中,通過步驟108根據(jù)該預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成的第二參數(shù)可以為以2為底數(shù),以預(yù)設(shè)位長對應(yīng)的比特位位數(shù)為冪數(shù)生成第二參數(shù)的值;也可以通過其他方式根據(jù)預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),在此不再一一贅述。
在本實(shí)施例中,通過步驟108根據(jù)第一參數(shù)和第二參數(shù)生成第三參數(shù),可以包括 首先生成第二參數(shù)的值減去第一參數(shù)關(guān)于第二參數(shù)的乘法逆元的差值;然后生成值與該差值相同的第三參數(shù)。也可以通過其他方式根據(jù)第一參數(shù)和第二參數(shù)生成第三參數(shù),在此不再一一贅述。
步驟109,將當(dāng)前偏移單元中的數(shù)據(jù)和第四待處理數(shù)據(jù)的乘積與當(dāng)前迭代數(shù)據(jù)相加,得到第一數(shù)據(jù)。
在本實(shí)施例中,偏移單元的初始單元為第一單元,迭代數(shù)據(jù)的初始值為0。
步驟110,將第二參數(shù)作為模數(shù),對第一數(shù)據(jù)與第三參數(shù)進(jìn)行模乘運(yùn)算,得到第二數(shù)據(jù)。
步驟111,將第一參數(shù)和第二數(shù)據(jù)的乘積與第一數(shù)據(jù)進(jìn)行加法運(yùn)算,得到第三數(shù)據(jù)。
步驟112,將第三數(shù)據(jù)右移預(yù)設(shè)位長,并用移位后得到的數(shù)據(jù)替換當(dāng)前迭代數(shù)據(jù)。
步驟113,判斷當(dāng)前偏移單元是否為最后一個(gè)單元,是則實(shí)行步驟115,否則執(zhí)行步驟114。
在本實(shí)施例中,通過步驟113確定當(dāng)前偏移單元不為最后一個(gè)單元時(shí),可以通過步驟114將偏移單元指向當(dāng)前偏移單元的下一個(gè)單元;通過步驟113確定當(dāng)前偏移單元為最后一個(gè)單元時(shí),可以通過步驟115判斷當(dāng)前迭代數(shù)據(jù)是否小于第一參數(shù)。
步驟114,將偏移單元指向當(dāng)前偏移單元的下一個(gè)單元,返回步驟109。
步驟115,判斷當(dāng)前迭代數(shù)據(jù)是否小于第一參數(shù),是則執(zhí)行步驟117,否則執(zhí)行步驟 116。
在本實(shí)施例中,在本實(shí)施例中,通過步驟115確定當(dāng)前迭代數(shù)據(jù)小于第一參數(shù)時(shí), 可以通過步驟117直接存儲(chǔ)或輸出當(dāng)前迭代數(shù)據(jù);通過步驟115確定當(dāng)前迭代數(shù)據(jù)不小于第一參數(shù)時(shí),可以通過步驟116對當(dāng)前迭代數(shù)據(jù)進(jìn)行處理。
步驟116,將當(dāng)前迭代數(shù)據(jù)自減第一參數(shù),順序執(zhí)行步驟117。
步驟117,存儲(chǔ)或輸出指示第一待處理數(shù)據(jù)與第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。
本發(fā)明實(shí)施例提供的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法,在乘法運(yùn)算指令中第一待處理數(shù)據(jù)比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和小于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以首先將該第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)進(jìn)行補(bǔ)位,得到第三待處理數(shù)據(jù)和第四待處理數(shù)據(jù);然后在第三待處理數(shù)據(jù)的最低位、第四待處理數(shù)據(jù)的最低位分別與第一參數(shù)的最低位對齊時(shí),將第三待處理數(shù)據(jù)按預(yù)設(shè)位長進(jìn)行劃分,并分別生成第一參數(shù)、 第二參數(shù)和第三參數(shù);最后通過該第一參數(shù)、第二參數(shù)和第三參數(shù)對當(dāng)前偏移單元中的數(shù)據(jù)和第四待處理數(shù)據(jù)進(jìn)行處理,直到當(dāng)前偏移單元為最后一個(gè)單元時(shí),根據(jù)當(dāng)前迭代數(shù)據(jù)與第一參數(shù)的大小關(guān)系,對當(dāng)前迭代數(shù)據(jù)進(jìn)行處理,得到指示第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。本發(fā)明實(shí)施例提供的技術(shù)方案,由于通過模乘算法實(shí)現(xiàn)相乘的運(yùn)算,使得乘法運(yùn)算的速度得到提高,解決了現(xiàn)有技術(shù)中CPU執(zhí)行乘法運(yùn)算時(shí)的運(yùn)算速度比較低的問題。
如圖2所示,本發(fā)明實(shí)施例二提供的另一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法,包括
步驟201,接收到乘法運(yùn)算指令時(shí),獲取該乘法運(yùn)算指令中第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)。
在本實(shí)施例中,步驟201中乘法運(yùn)算指令可以為計(jì)算該第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)乘積的指令。具體的,該第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)可以均為大數(shù),可以為其他數(shù)據(jù),在此不作限制。
在本實(shí)施例中,以下以第一待處理數(shù)據(jù)為十六進(jìn)制數(shù)B4050A850C04B3ABF5413256 5044B0B7D7BFD8BA270B39432;355FFB4,第二待處理數(shù)據(jù)為十六進(jìn)制數(shù) B70E0CBD6BB4BF7F32 1390B94A03C1D356C21122343280D6115C1D21 為例進(jìn)行說明。
步驟202,判斷該第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù),是則執(zhí)行步驟203,否則執(zhí)行步驟204。
在本實(shí)施例中,由于運(yùn)算裝置的配置決定其允許支持的比特位位數(shù);而當(dāng)?shù)谝淮幚頂?shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可能產(chǎn)生運(yùn)算錯(cuò)誤;因此在進(jìn)行乘法運(yùn)算之前,需要首先通過步驟202判斷第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù)。
在本實(shí)施例中,當(dāng)通過步驟202確定第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以通過步驟203返回錯(cuò)誤信息;當(dāng)通過步驟202確定第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和不大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以通過步驟204對第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)分別進(jìn)行補(bǔ)位。
在本實(shí)施例中,以運(yùn)算裝置支持的比特位位數(shù)為512為例。通過步驟101可知,第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)均為224比特,因此第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和為448,小于運(yùn)算裝置支持的比特位位數(shù)。
步驟203,返回錯(cuò)誤信息。
在本實(shí)施例中,由于當(dāng)?shù)谝淮幚頂?shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和大于運(yùn)算裝置支持的比特位位數(shù)時(shí),對第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)進(jìn)行乘法運(yùn)算的過程中可能產(chǎn)生運(yùn)算錯(cuò)誤,因此當(dāng)?shù)谝淮幚頂?shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以通過步驟203返回錯(cuò)誤信肩、ο
步驟204,在該第一待處理數(shù)據(jù)的最高位前補(bǔ)零生成第三待處理數(shù)據(jù),在該第二待處理數(shù)據(jù)的最高位前補(bǔ)零生成第四待處理數(shù)據(jù)。
在本實(shí)施例中,第三待處理數(shù)據(jù)與第四待處理數(shù)據(jù)的比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同。
相應(yīng)地,在本實(shí)施例中,通過步驟204在第一待處理數(shù)據(jù)的最高位前補(bǔ)零生成的第三待處理數(shù)據(jù)為十六進(jìn)制數(shù) 000000000000000000000000000000000000000000000000000000000000000000000000B4050 A850C04B3ABF54132565044B0B7D7BFD8BA270B39432355FFB4o
在本實(shí)施例中,通過步驟204在第二待處理數(shù)據(jù)的最高位前補(bǔ)零生成的第四待處理數(shù)據(jù)為十六進(jìn)制數(shù) 000000000000000000000000000000000000000000000000000000000000000000000000B70E0 CBD6BB4BF7F321390B94A03C1D356C21122343280D6115C1D21。
步驟205,生成各個(gè)比特位均置1的第一參數(shù)。
在本實(shí)施例中,步驟205中第一參數(shù)的比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同。
在本實(shí)施例中,運(yùn)算裝置支持的比特位位數(shù)為512時(shí),步驟205中第一參數(shù)為十六進(jìn)制數(shù) FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFo
步驟206,將第三待處理數(shù)據(jù)的最低位、第四待處理數(shù)據(jù)的最低位分別與第一參數(shù)的最低位對齊。
步驟207,由最低位到最高位,將第三待處理數(shù)據(jù)按預(yù)設(shè)位長進(jìn)行劃分,依次得到第一單元、第二單元.......
在本實(shí)施例中,步驟207中預(yù)設(shè)位長對應(yīng)的比特位位數(shù)可以為能整除運(yùn)算裝置支持的比特位位數(shù)的整數(shù);也可以為其他整數(shù),在此不再一一贅述。
在本實(shí)施例中,步驟207中預(yù)設(shè)位長對應(yīng)的比特位位數(shù)以32為例進(jìn)行說明。通過步驟207將第三代處理數(shù)據(jù)按預(yù)設(shè)位長進(jìn)行劃分,得到16個(gè)單元,每個(gè)單元中包含的數(shù)據(jù)為一個(gè),得到的各個(gè)單元中的數(shù)據(jù)分別為00000000、00000000、00000000、00000000、 00000000、00000000、00000000、00000000、00000000、B4050A85、0C04B3AB、F5413256、 5044B0B7, D7BFD8BA,270B3943,2355FFB4 其中,2!355FFB4 為第一單元包含的中的數(shù)據(jù)。
步驟208,根據(jù)該預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),并根據(jù)第一參數(shù)和第二參數(shù)生成第三參數(shù)。
在本實(shí)施例中,通過步驟208根據(jù)該預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成的第二參數(shù)可以為以2為底數(shù),以預(yù)設(shè)位長對應(yīng)的比特位位數(shù)為冪數(shù)生成第二參數(shù)的值;也可以通過其他方式根據(jù)預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),在此不再一一贅述。在本實(shí)施例中,相應(yīng)地,第二參數(shù)的值為2的32次冪,即為十六進(jìn)制數(shù)100000000。
在本實(shí)施例中,通過步驟208根據(jù)第一參數(shù)和第二參數(shù)生成第三參數(shù),可以包括 首先生成第二參數(shù)的值減去第一參數(shù)關(guān)于第二參數(shù)的乘法逆元得到的差值;然后生成值與該差值相同的第三參數(shù)。也可以通過其他方式根據(jù)第一參數(shù)和第二參數(shù)生成第三參數(shù),在此不再一一贅述。相應(yīng)地,在本實(shí)施例中,第三參數(shù)的值為1。
步驟209,將當(dāng)前偏移單元中的數(shù)據(jù)和第四待處理數(shù)據(jù)的乘積與當(dāng)前迭代數(shù)據(jù)相加,得到第一數(shù)據(jù)。
在本實(shí)施例中,步驟209中當(dāng)前偏移單元中的數(shù)據(jù)為當(dāng)前偏移單元包含的數(shù)據(jù), 其中,偏移單元的初始單元為第一單元,迭代數(shù)據(jù)的初始值為0。
步驟210,將第二參數(shù)作為模數(shù),對第一數(shù)據(jù)與第三參數(shù)進(jìn)行模乘運(yùn)算,得到第二數(shù)據(jù)。
步驟211,將第一參數(shù)和當(dāng)前第二數(shù)據(jù)的乘積與第一數(shù)據(jù)進(jìn)行加法運(yùn)算,得到第三數(shù)據(jù)。
步驟212,用第三數(shù)據(jù)右移預(yù)設(shè)位長,并用第三數(shù)據(jù)右移預(yù)設(shè)位長得到的數(shù)據(jù)替換當(dāng)前迭代數(shù)據(jù)。
步驟213,判斷當(dāng)前偏移單元是否為最后一個(gè)單元,是則執(zhí)行步驟214,否則執(zhí)行步驟214。
在本實(shí)施例中,通過步驟213確定當(dāng)前偏移單元不為最后一個(gè)單元時(shí),可以通過步驟214將偏移單元指向當(dāng)前偏移單元的下一個(gè)單元;通過步驟213確定當(dāng)前偏移單元為最后一個(gè)單元時(shí),可以通過步驟215判斷當(dāng)前迭代數(shù)據(jù)是否小于第一參數(shù)。
在本實(shí)施例中,具體的,步驟213中最后一個(gè)單元為第十六單元。
步驟214,將偏移單元指向當(dāng)前偏移單元的下一個(gè)單元,返回步驟209。
步驟215,判斷當(dāng)前迭代數(shù)據(jù)是否小于第一參數(shù),是則執(zhí)行步驟217,否則執(zhí)行步驟 216。
在本實(shí)施例中,在本實(shí)施例中,通過步驟215確定當(dāng)前迭代數(shù)據(jù)小于第一參數(shù)時(shí), 可以通過步驟217直接存儲(chǔ)或輸出當(dāng)前迭代數(shù)據(jù);通過步驟215確定當(dāng)前迭代數(shù)據(jù)不小于第一參數(shù)時(shí),可以通過步驟216對當(dāng)前迭代數(shù)據(jù)進(jìn)行處理。
步驟216,將當(dāng)前迭代數(shù)據(jù)自減第一參數(shù),順序執(zhí)行步驟217。
步驟217,存儲(chǔ)或輸出指示第一待處理數(shù)據(jù)與第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。
在本實(shí)施例中,通過上述計(jì)算過程,存儲(chǔ)或輸出的指示第一待處理數(shù)據(jù)與第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)具體為80B97BC11ED23B160DC05E92^392D7C97ABAF222EF0 D0A74E131B6C1FF0DD2A5EB8FCD20EC90DB9211A392082E285B0624E260324BD5A34。
本發(fā)明實(shí)施例提供的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法,在乘法運(yùn)算指令中第一待處理數(shù)據(jù)比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和小于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以首先將該第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)進(jìn)行補(bǔ)位,得到第三待處理數(shù)據(jù)和第四待處理數(shù)據(jù);然后在第三待處理數(shù)據(jù)的最低位、第四待處理數(shù)據(jù)的最低位分別與第一參數(shù)的最低位對齊時(shí),將第三待處理數(shù)據(jù)按預(yù)設(shè)位長進(jìn)行劃分,并分別生成第一參數(shù)、 第二參數(shù)和第三參數(shù);最后通過該第一參數(shù)、第二參數(shù)和第三參數(shù)對當(dāng)前偏移單元中的數(shù)據(jù)和第四待處理數(shù)據(jù)進(jìn)行處理,直到當(dāng)前偏移單元為最后一個(gè)單元時(shí),根據(jù)當(dāng)前迭代數(shù)據(jù)與第一參數(shù)的大小關(guān)系,對當(dāng)前迭代數(shù)據(jù)進(jìn)行處理,得到指示第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。本發(fā)明實(shí)施例提供的技術(shù)方案,由于通過模乘算法實(shí)現(xiàn)相乘的運(yùn)算,使得乘法運(yùn)算的速度得到提高,解決了現(xiàn)有技術(shù)中CPU執(zhí)行乘法運(yùn)算時(shí)的運(yùn)算速度比較低的問題。
如圖3所示,本發(fā)明實(shí)施例三提供的一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的裝置, 包括
待處理數(shù)據(jù)獲取模塊301,用于接收到乘法運(yùn)算指令時(shí),獲取乘法運(yùn)算指令中第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)。
在本實(shí)施例中,待處理數(shù)據(jù)獲取模塊301中乘法運(yùn)算指令可以為計(jì)算該第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)乘積的指令。具體的,該第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)可以均為大數(shù),可以為其他數(shù)據(jù),在此不作限制。
第一判斷模塊302,用于判斷第一待處理數(shù)據(jù)的比特位位數(shù)與第二待處理數(shù)據(jù)的比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù)。
在本實(shí)施例中,由于運(yùn)算裝置的配置決定其允許支持的比特位位數(shù);而當(dāng)?shù)谝淮幚頂?shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可能產(chǎn)生運(yùn)算錯(cuò)誤;因此在進(jìn)行乘法運(yùn)算之前,需要首先通過第一判斷模塊302判斷第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù)。
在本實(shí)施例中,當(dāng)通過第一判斷模塊302確定第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以返回錯(cuò)誤信息; 當(dāng)通過第一判斷模塊302確定第一待處理數(shù)據(jù)的比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和不大于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以通過補(bǔ)位模塊303對第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)分別進(jìn)行補(bǔ)位。
補(bǔ)位模塊303,用于對第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位,生成比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同的第三待處理數(shù)據(jù),對第二待處理數(shù)據(jù)的進(jìn)行補(bǔ)位,生成比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同的第四待處理數(shù)據(jù)。
在本實(shí)施例中,補(bǔ)位模塊303中對第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位可以為在該第一待處理數(shù)據(jù)的最高位前補(bǔ)零生成第三待處理數(shù)據(jù);也可以為通過其他方式對第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位,在此不再一一贅述。其中,第三待處理數(shù)據(jù)的比特位位數(shù)和運(yùn)算裝置支持的比特位位數(shù)相同。
在本實(shí)施例中,補(bǔ)位模塊303中對第二代處理數(shù)據(jù)進(jìn)行補(bǔ)位可以為在該第二待處理數(shù)據(jù)的最高位前補(bǔ)零生成第四待處理數(shù)據(jù);也可以為通過其他方式對第二待處理數(shù)據(jù)進(jìn)行補(bǔ)位,在此不再一一贅述。其中,第四待處理數(shù)據(jù)的比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同。
第一參數(shù)生成模塊304,用于根據(jù)運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù)。
在本實(shí)施例中,第一參數(shù)生成模塊304中根據(jù)運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù)可以為生成各個(gè)比特位均置1的第一參數(shù),該第一參數(shù)的比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同;也可以通過其他方式根據(jù)運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù),在此不再一一贅述。
對齊模塊305,用于將第三待處理數(shù)據(jù)的最低位、第四待處理數(shù)據(jù)的最低位分別與第一參數(shù)的最低位對齊。
劃分模塊306,用于由最低位到最高位,將第三待處理數(shù)據(jù)按預(yù)設(shè)位長進(jìn)行劃分, 依次得到第一單元、第二單元.......14
在本實(shí)施例中,劃分模塊306中預(yù)設(shè)位長對應(yīng)的比特位位數(shù)可以為能整除運(yùn)算裝置支持的比特位位數(shù)的整數(shù);也可以為其他整數(shù),在此不再一一贅述。
第二參數(shù)生成模塊307,用于根據(jù)預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),并根據(jù)第一參數(shù)和第二參數(shù)生成第三參數(shù)。
在本實(shí)施例中,通過第二參數(shù)生成模塊307根據(jù)該預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成的第二參數(shù)可以為以2為底數(shù),以預(yù)設(shè)位長對應(yīng)的比特位位數(shù)為冪數(shù)生成第二參數(shù)的值;也可以通過其他方式根據(jù)預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),在此不再一一贅述。
在本實(shí)施例中,通過第二參數(shù)生成模塊307根據(jù)第一參數(shù)和第二參數(shù)生成第三參數(shù),包括用第二參數(shù)的值減去第一參數(shù)關(guān)于第二參數(shù)的乘法逆元得到的差值;該差值為第三參數(shù)的值。也可以通過其他方式根據(jù)第一參數(shù)和第二參數(shù)生成第三參數(shù),在此不再一一贅述。
第一數(shù)據(jù)生成模塊308,用于將當(dāng)前偏移單元中的數(shù)據(jù)和第四待處理數(shù)據(jù)的乘積與當(dāng)前迭代數(shù)據(jù)相加,得到第一數(shù)據(jù)。
在本實(shí)施例中,第一數(shù)據(jù)生成模塊308中偏移單元的初始單元為第一單元,迭代數(shù)據(jù)的初始值為0。
第二數(shù)據(jù)生成模塊309,用于將第二參數(shù)作為模數(shù),對所述第一數(shù)據(jù)與第三參數(shù)進(jìn)行模乘運(yùn)算,得到第二數(shù)據(jù)。
第三數(shù)據(jù)處理模塊310,用于將第一參數(shù)和當(dāng)前第二數(shù)據(jù)的乘積與第一數(shù)據(jù)進(jìn)行加法運(yùn)算,得到第三數(shù)據(jù)。
數(shù)據(jù)替換模塊311,用于用第三數(shù)據(jù)右移預(yù)設(shè)位長后得到的數(shù)據(jù)替換當(dāng)前迭代數(shù)據(jù)。
第二判斷模塊312,用于判斷當(dāng)前偏移單元是否為最后一個(gè)單元。
在本實(shí)施例中,通過第二判斷模塊312確定當(dāng)前偏移單元不為最后一個(gè)單元時(shí), 可以通過移位模塊313將偏移單元指向當(dāng)前偏移單元的下一個(gè)單元;通過第二判斷模塊 312確定當(dāng)前偏移單元為最后一個(gè)單元時(shí),可以通過第三判斷模塊314判斷當(dāng)前迭代數(shù)據(jù)是否小于第一參數(shù)。
移位模塊313,用于將偏移單元指向當(dāng)前偏移單元的下一個(gè)單元,返回第一數(shù)據(jù)生成模塊308。
第三判斷模塊314,用于判斷當(dāng)前迭代數(shù)據(jù)是否小于第一參數(shù)。
在本實(shí)施例中,在本實(shí)施例中,通過第三判斷模塊314確定當(dāng)前迭代數(shù)據(jù)小于第一參數(shù)時(shí),可以通過輸出模塊316直接存儲(chǔ)或輸出當(dāng)前迭代數(shù)據(jù);通過第三判斷模塊314確定當(dāng)前迭代數(shù)據(jù)不小于第一參數(shù)時(shí),可以通過自減模塊315對當(dāng)前迭代數(shù)據(jù)進(jìn)行處理。
自減模塊315,用于將當(dāng)前迭代數(shù)據(jù)自減第一參數(shù)。
輸出模塊316,用于存儲(chǔ)或輸出指示第一待處理數(shù)據(jù)與第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。
進(jìn)一步的,如圖4所示,本實(shí)施例中補(bǔ)位模塊303,包括
補(bǔ)位子模塊3031,用于在第一待處理數(shù)據(jù)的最高位前補(bǔ)零生成第三待處理數(shù)據(jù), 在第二待處理數(shù)據(jù)的最高位前補(bǔ)零生成第四待處理數(shù)據(jù),第三待處理數(shù)據(jù)與第四待處理數(shù)據(jù)的比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同。
進(jìn)一步的,如圖5所示,本實(shí)施例中,第一參數(shù)生成模塊304,包括
第一生成子模塊3041,用于生成各個(gè)比特位均置1的第一參數(shù),第一參數(shù)的比特位位數(shù)與運(yùn)算裝置支持的比特位位數(shù)相同。
進(jìn)一步的,如圖6所示,在本實(shí)施例中,第二參數(shù)生成模塊307,包括
第二生成子模塊3071,用于用以2為底數(shù),以預(yù)設(shè)位長對應(yīng)的比特位位數(shù)為冪數(shù)的生成第二參數(shù)的值。
如圖7所示,該第二參數(shù)生成模塊307,還可以包括
第三生成子模塊3072,用于生成第二參數(shù)的值減去第一參數(shù)關(guān)于第二參數(shù)的乘法逆元的差值;
第四生成子模塊3073,用于生成值與差值相同的第三參數(shù)。
本發(fā)明實(shí)施例提供的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的裝置,在乘法運(yùn)算指令中第一待處理數(shù)據(jù)比特位位數(shù)和第二待處理數(shù)據(jù)的比特位位數(shù)之和小于運(yùn)算裝置支持的比特位位數(shù)時(shí),可以首先將該第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)進(jìn)行補(bǔ)位,得到第三待處理數(shù)據(jù)和第四待處理數(shù)據(jù);然后在第三待處理數(shù)據(jù)的最低位、第四待處理數(shù)據(jù)的最低位分別與第一參數(shù)的最低位對齊時(shí),將第三待處理數(shù)據(jù)按預(yù)設(shè)位長進(jìn)行劃分,并分別生成第一參數(shù)、 第二參數(shù)和第三參數(shù);最后通過該第一參數(shù)、第二參數(shù)和第三參數(shù)對當(dāng)前偏移單元中的數(shù)據(jù)和第四待處理數(shù)據(jù)進(jìn)行處理,直到當(dāng)前偏移單元為最后一個(gè)單元時(shí),根據(jù)當(dāng)前迭代數(shù)據(jù)與第一參數(shù)的大小關(guān)系,對當(dāng)前迭代數(shù)據(jù)進(jìn)行處理,得到指示第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。本發(fā)明實(shí)施例提供的技術(shù)方案,由于通過模乘算法實(shí)現(xiàn)相乘的運(yùn)算,使得乘法運(yùn)算的速度得到提高,解決了現(xiàn)有技術(shù)中CPU執(zhí)行乘法運(yùn)算時(shí)的運(yùn)算速度比較低的問題。
本發(fā)明實(shí)施例提供的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法和裝置,可以應(yīng)用在嵌入式系統(tǒng)中。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲(chǔ)器(RAM)、內(nèi)存、只讀存儲(chǔ)器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動(dòng)磁盤、CD-ROM、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲(chǔ)介質(zhì)中。
以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)所述以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法,其特征在于,包括(1).接收到乘法運(yùn)算指令時(shí),獲取所述乘法運(yùn)算指令中第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù);(2).判斷所述第一待處理數(shù)據(jù)的比特位位數(shù)與所述第二待處理數(shù)據(jù)的比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù);如果是,返回錯(cuò)誤信息;如果否,執(zhí)行(3);(3).對所述第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第三待處理數(shù)據(jù),對所述第二待處理數(shù)據(jù)的進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第四待處理數(shù)據(jù);(4).根據(jù)所述運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù);(5).將所述第三待處理數(shù)據(jù)的最低位、所述第四待處理數(shù)據(jù)的最低位分別與所述第一參數(shù)的最低位對齊;(6).將所述第三待處理數(shù)據(jù)按預(yù)設(shè)位長由最低位到最高位進(jìn)行劃分;(J).根據(jù)所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),并根據(jù)所述第一參數(shù)和所述第二參數(shù)生成第三參數(shù);(8).將當(dāng)前偏移單元中的數(shù)據(jù)和所述第四待處理數(shù)據(jù)的乘積與當(dāng)前迭代數(shù)據(jù)相加,得到第一數(shù)據(jù);偏移單元的初始單元為對所述第三待處理數(shù)據(jù)進(jìn)行劃分得到的第一個(gè)單元,迭代數(shù)據(jù)的初始值為0 ;(9).將所述第二參數(shù)作為模數(shù),對所述第一數(shù)據(jù)與所述第三參數(shù)進(jìn)行模乘運(yùn)算,得到第二數(shù)據(jù);(10).將所述第一參數(shù)和所述第二數(shù)據(jù)的乘積與所述第一數(shù)據(jù)進(jìn)行加法運(yùn)算,得到第三數(shù)據(jù);(11).將所述第三數(shù)據(jù)右移所述預(yù)設(shè)位長,并將移位后得到的數(shù)據(jù)替換當(dāng)前迭代數(shù)據(jù);(12).判斷當(dāng)前偏移單元是否為最后一個(gè)單元; 如果是,執(zhí)行(14);如果否,執(zhí)行(13);(13).將偏移單元指向當(dāng)前偏移單元的下一個(gè)單元,返回(8);(14).判斷當(dāng)前迭代數(shù)據(jù)是否小于所述第一參數(shù); 如果是,執(zhí)行(16);如果否,執(zhí)行(15);(15).將當(dāng)前迭代數(shù)據(jù)自減所述第一參數(shù);(16).存儲(chǔ)或輸出指示所述第一待處理數(shù)據(jù)與所述第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法,其特征在于,所述對所述第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第三待處理數(shù)據(jù),對所述第二待處理數(shù)據(jù)的進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第四待處理數(shù)據(jù),包括在所述第一待處理數(shù)據(jù)的最高位前補(bǔ)零生成第三待處理數(shù)據(jù),在所述第二待處理數(shù)據(jù)的最高位前補(bǔ)零生成第四待處理數(shù)據(jù),所述第三待處理數(shù)據(jù)與所述第四待處理數(shù)據(jù)的比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同。
3.根據(jù)權(quán)利要求1所述的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法,其特征在于,所述根據(jù)所述運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù),包括生成各個(gè)比特位均置1的第一參數(shù),所述第一參數(shù)的比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同。
4.根據(jù)權(quán)利要求1所述的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法,其特征在于,所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù),具體為能整除所述運(yùn)算裝置支持的比特位位數(shù)的整數(shù)。
5.根據(jù)權(quán)利要求1所述的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法,其特征在于,所述根據(jù)所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),包括以2為底數(shù),以所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù)為冪數(shù)生成所述第二參數(shù)。
6.根據(jù)權(quán)利要求1所述的在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法,其特征在于,所述根據(jù)所述第一參數(shù)和所述第二參數(shù)生成第三參數(shù),包括生成所述第二參數(shù)的值減去所述第一參數(shù)關(guān)于所述第二參數(shù)的乘法逆元的差值; 生成值與所述差值相同的第三參數(shù)。
7.—種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的裝置,其特征在于,包括待處理數(shù)據(jù)獲取模塊,用于接收到乘法運(yùn)算指令時(shí),獲取所述乘法運(yùn)算指令中第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù);第一判斷模塊,用于判斷所述第一待處理數(shù)據(jù)的比特位位數(shù)與所述第二待處理數(shù)據(jù)的比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù);所述補(bǔ)位模塊,用于在所述第一判斷模塊判斷結(jié)果為是時(shí)對所述第一待處理數(shù)據(jù)進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第三待處理數(shù)據(jù),對所述第二待處理數(shù)據(jù)的進(jìn)行補(bǔ)位,生成比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同的第四待處理數(shù)據(jù);第一參數(shù)生成模塊,用于根據(jù)所述運(yùn)算裝置支持的比特位位數(shù)生成第一參數(shù); 對齊模塊,用于將所述第三待處理數(shù)據(jù)的最低位、所述第四待處理數(shù)據(jù)的最低位分別與所述第一參數(shù)的最低位對齊;劃分模塊,用于將所述第三待處理數(shù)據(jù)按預(yù)設(shè)位長由最低位到最高位進(jìn)行劃分; 第二參數(shù)生成模塊,用于根據(jù)所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù)生成第二參數(shù),并根據(jù)所述第一參數(shù)和所述第二參數(shù)生成第三參數(shù);第一數(shù)據(jù)生成模塊,用于將當(dāng)前偏移單元中的數(shù)據(jù)和所述第四待處理數(shù)據(jù)的乘積與當(dāng)前迭代數(shù)據(jù)相加,得到第一數(shù)據(jù);所述偏移單元的初始單元為所述第一單元,所述迭代數(shù)據(jù)的初始值為0 ; 第二數(shù)據(jù)生成模塊,用于將所述第二參數(shù)作為模數(shù),對所述第一數(shù)據(jù)與所述第三參數(shù)進(jìn)行模乘運(yùn)算,得到第二數(shù)據(jù);第三數(shù)據(jù)處理模塊,用于將所述第一參數(shù)和所述第二數(shù)據(jù)的乘積與所述第一數(shù)據(jù)進(jìn)行加法運(yùn)算,得到第三數(shù)據(jù);數(shù)據(jù)替換模塊,用于將所述第三數(shù)據(jù)右移所述預(yù)設(shè)位長后得到的數(shù)據(jù)替換當(dāng)前迭代數(shù)據(jù);第二判斷模塊,用于判斷當(dāng)前偏移單元是否為最后一個(gè)單元;所述移位模塊,用于在所述第二判斷模塊判斷結(jié)果為否時(shí)將偏移單元指向當(dāng)前偏移單元的下一個(gè)單元,返回第一數(shù)據(jù)生成模塊;所述第三判斷模塊,用于在所述第二判斷模塊判斷結(jié)果為是時(shí)判斷當(dāng)前迭代數(shù)據(jù)是否小于所述第一參數(shù);所述自減模塊,用于在所述第三判斷模塊判斷結(jié)果為否時(shí)將當(dāng)前迭代數(shù)據(jù)自減所述第一參數(shù);所述輸出模塊,用于在所述第三判斷模塊判斷結(jié)果為是時(shí)存儲(chǔ)或輸出指示所述第一待處理數(shù)據(jù)與所述第二待處理數(shù)據(jù)乘積的當(dāng)前迭代數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)乘法運(yùn)算的裝置,其特征在于,所述補(bǔ)位模塊,包括補(bǔ)位子模塊,用于在所述第一待處理數(shù)據(jù)的最高位前補(bǔ)零生成第三待處理數(shù)據(jù),在所述第二待處理數(shù)據(jù)的最高位前補(bǔ)零生成第四待處理數(shù)據(jù),所述第三待處理數(shù)據(jù)與所述第四待處理數(shù)據(jù)的比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同。
9.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)乘法運(yùn)算的裝置,其特征在于,所述第一參數(shù)生成模塊, 包括第一生成子模塊,用于生成各個(gè)比特位均置1的第一參數(shù),所述第一參數(shù)的比特位位數(shù)與所述運(yùn)算裝置支持的比特位位數(shù)相同。
10.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)乘法運(yùn)算的裝置,其特征在于,所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù),具體為能整除所述運(yùn)算裝置支持的比特位位數(shù)的整數(shù)。
11.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)乘法運(yùn)算的裝置,其特征在于,所述第二參數(shù)生成模塊,包括第二生成子模塊,以2為底數(shù),以所述預(yù)設(shè)位長對應(yīng)的比特位位數(shù)為冪數(shù)生成第二參數(shù)的值。
12.根據(jù)權(quán)利要求7所述的實(shí)現(xiàn)乘法運(yùn)算的裝置,其特征在于,所述第二參數(shù)生成模塊,包括第三生成子模塊,用于生成所述第二參數(shù)的值減去所述第一參數(shù)關(guān)于所述第二參數(shù)的乘法逆元的差值;第四生成子模塊,用于生成值與所述差值相同的第三參數(shù)。
全文摘要
本發(fā)明公開了一種在嵌入式系統(tǒng)中實(shí)現(xiàn)乘法運(yùn)算的方法和裝置,涉及密碼學(xué)領(lǐng)域。解決了現(xiàn)有技術(shù)執(zhí)行乘法運(yùn)算的運(yùn)算速度比較低的問題。所述方法包括(1)獲取第一待處理數(shù)據(jù)和第二待處理數(shù)據(jù);(2)判斷比特位位數(shù)之和是否大于運(yùn)算裝置支持的比特位位數(shù);(3)生成第三待處理數(shù)據(jù),生成第四待處理數(shù)據(jù);(4)生成第一參數(shù);(5)將最低位對齊;(6)將第三待處理數(shù)據(jù)進(jìn)行劃分;(7)生成第二參數(shù),并生成第三參數(shù);(8)得到第一數(shù)據(jù);(9)得到第二數(shù)據(jù);(10)得到第三數(shù)據(jù);(11)替換當(dāng)前迭代數(shù)據(jù);(12)判斷當(dāng)前偏移單元是否為最后一個(gè)單元;(13)將偏移單元指向下一個(gè)單元,返回(8);(14)判斷當(dāng)前迭代數(shù)據(jù)是否小于第一參數(shù);(15)將當(dāng)前迭代數(shù)據(jù)自減第一參數(shù);(16)存儲(chǔ)或輸出當(dāng)前迭代數(shù)據(jù)。
文檔編號(hào)G06F7/53GK102508632SQ20111030202
公開日2012年6月20日 申請日期2011年9月30日 優(yōu)先權(quán)日2011年9月30日
發(fā)明者于華章, 陸舟 申請人:飛天誠信科技股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1