[發明專利]快速實現SM2密碼算法的協處理系統及方法在審
| 申請號: | 202010945115.3 | 申請日: | 2020-09-10 |
| 公開(公告)號: | CN112099762A | 公開(公告)日: | 2020-12-18 |
| 發明(設計)人: | 谷大武;王騰飛;陸海寧;張海峰 | 申請(專利權)人: | 上海交通大學;北京智芯微電子科技有限公司 |
| 主分類號: | G06F7/72 | 分類號: | G06F7/72;G06F21/60 |
| 代理公司: | 上海交達專利事務所 31201 | 代理人: | 王毓理;王錫麟 |
| 地址: | 200240 *** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 快速 實現 sm2 密碼 算法 處理 系統 方法 | ||
1.一種快速實現SM2密碼算法的協處理系統,其特征在于,包括:依次相連的接口邏輯單元、取指單元、譯碼單元、執行單元、數據存儲單元以及與取指單元相連的程序存儲單元,其中:接口邏輯單元與主處理器進行通信,接收主處理器發送的數據和控制信號決定協處理器的工作狀態,向主處理器返回計算結果、輸出起始地址信息和使能信號至取指單元、輸出參數和操作數信息至數據存儲單元,取指單元在執行算法時使用內部程序計數器記錄的當前指令地址從程序存儲單元中取出指令并輸出至譯碼單元,譯碼單元對指令譯碼并確定當前指令執行內容并分別輸出使能信號和運算類型的選擇信號至執行單元以實現計算任務、輸出地址信息至數據存儲單元,數據存儲單元接收并存儲來自接口邏輯的曲線參數以及來自執行單元的中間數據并根據需要快速輸出至執行單元或接口邏輯;
所述的程序存儲單元內置實現SM2加密、解密、簽名、驗簽的32位指令序列,在FPGA上以寄存器數組的形式實現,地址位寬是16位,數據位寬是32位,讀取一條指令需要耗費一個時鐘周期。
2.根據權利要求1所述的協處理系統,其特征是,所述的執行單元內進一步設有移位運算單元,該移位運算單元①根據模逆控制器的控制信息,將每輪循環中輸入標量進行移位處理,并輸出左移或右移一位后的結果至r_sh端口,或者②作為模逆運算的中間結果暫存于相連的寄存器中。
3.一種基于權利要求1或2所述系統的流水線式控制方法,其特征在于,通過一個時鐘周期的取指、一個時鐘周期的譯碼、若干個時鐘周期的執行以及一個時鐘周期的寫回四級流水方式實現指令的功能,并通過記錄每條指令的當前運行周期和執行該指令所需的延時周期,對運行時序進行優化控制,使協處理器能夠在處理大部分指令執行階段的同時完成上一條指令的寫回操作和下一條指令的取指、譯碼操作。
4.根據權利要求3所述的流水線式控制方法,其特征是,具體包括:
步驟1)取指:程序計數器存放當前指令在程序存儲單元中的地址,其初始值是SM2算法指令的起始地址0x44;當接收到接口邏輯發送的執行算法的命令時,取指單元將程序計數器的值發送至程序存儲單元的地址端口,經過一個時鐘周期后取出指令,并將其存放在指令寄存器中發送至譯碼單元;之后對程序計數器的值進行更新,以便去取下一條指令,即判斷當前指令是否為轉移指令,當為轉移指令,則將程序計數器賦值為指令中要轉移的目的地址,否則令程序計數器=程序計數器+1;當程序計數器增加至算法指令的結束地址時,停止取指操作并不再更新程序計數器,同時給出執行結束的信號;
步驟2)譯碼:譯碼單元從取指單元獲得指令寄存器指令并將32位指令分解成8位操作碼opr+8位源操作數1地址rs+8位源操作數2地址rt+8位目的操作數地址rd的形式,然后對操作碼opr進行判斷,按照操作碼opr對應關系將操作碼轉換為具體的行為,完成對相關寄存器的賦值過程,向執行單元發送使能信號和運算類型的選擇信號、向數據存儲單元發送地址信息;
步驟3)執行:通過執行單元完成256位整數的具體計算任務,包括對模數p和模數n的模加減、模乘和模逆運算以及移位運算;
步驟4)寫回:將執行單元的計算結果寫入數據存儲單元中,寫入地址為譯碼階段輸出的8位目的操作數地址;當讀寫地址相同且寫使能的情況下,數據存儲單元直接提供即將寫入的數據作為輸出,并在下個周期將數據寫入。
5.根據權利要求3或4所述的流水線式控制方法,其特征是,針對不同類型的指令,譯碼單元根據操作碼類型設定延時周期。
6.根據權利要求3或4所述的流水線式控制方法,其特征是,所述的移位運算具體是指:將輸入的256位無符號整數向左或向右移動一位,通過同時輸入的移位選擇信號控制移動方向,以完成移位指令以及模逆運算中的移位操作,移位指令主要用于標量乘算法中對標量在每輪循環當中的處理。
7.根據權利要求3或4所述的流水線式控制方法,其特征是,所述的對運行時序進行優化控制,具體為:在指令流水中,取指、譯碼和寫回都只需要一個時鐘周期,而執行階段所需耗費的延時周期數由譯碼階段給出,設置一個延時計數器來記錄處于執行階段指令的當前運行周期,在該指令的執行階段開始時刻將其置零,然后每個時鐘周期加1,當延時計數器的值與當前指令的延時周期數相差1時,即可進行后續兩條指令的譯碼和取指,再經過一個時鐘周期,可進行前一條指令的寫回。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海交通大學;北京智芯微電子科技有限公司,未經上海交通大學;北京智芯微電子科技有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010945115.3/1.html,轉載請聲明來源鉆瓜專利網。





