System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術屬于計算機,尤其涉及一種能夠快速處理內存拷貝指令的cpu及其方法。
技術介紹
1、內存拷貝(memcpy)是一種簡單而多樣的操作,一般分為軟件方法和硬件方法兩種實現方式。
2、軟件方式:有很多種代碼可以實現,但是均需要運行一個循環體程序,需重復取指令,功耗更大;同時總體拷貝性能受到指令總線latency的影響;cpu的分支指令預測失敗,會在流水線中引入氣泡,降低執行效率;需要在源地址對齊字節數、目標地址對齊字節數及cpu寄存器寬度中選取最小的值作為單次拷貝最大字節數(n),對于任意地址的內存拷貝,其延遲波動較大;由于單次拷貝受限于cpu寄存器的最大寬度,無法最大化利用存儲器帶寬,導致內存拷貝效率較低。
3、硬件方式:依賴dma實現,但是dma普遍不支持源/目標地址任意對齊的方式;此外,軟件需等待上次dma完成才可以進行下次dma操作,無法在中斷/線程切換等場景中實現dma掛起,此外,dma屬于非標準類硬件資源,各設計廠商設計的dma使用方式、寄存器地址各不相同,需要保證兼容性的應用程序往往都采用軟件方式進行內存拷貝,例如操作系統、協議棧、系統庫等。
技術實現思路
1、專利技術目的:為了解決現有技術中內存拷貝效率低的問題,本專利技術提供一種能夠快速處理內存拷貝指令的cpu及其方法。
2、技術方案:一種能夠快速處理內存拷貝指令的cpu,包括:
3、指令譯碼器,輸入端輸入cpu指令,輸出端連接通用寄存器的讀端口及內存拷貝控制器,用
4、通用寄存器,連接內存拷貝控制器,用于存儲源地址、目標地址、拷貝結束信息;
5、內存拷貝控制器,包含狀態機,所述狀態機包括空閑狀態、讀狀態、寫狀態,在空閑狀態下,等待接收有效的內存拷貝指令;在讀狀態下,控制總線接口讀取源地址的數據并將數據暫存至緩沖器中;在寫狀態下,控制總線接口將緩沖器中暫存的數據寫至目標地址處;
6、總線接口,連接內存拷貝控制器及緩沖器,且外接外部存儲器;
7、緩沖器,連接內存拷貝控制器;
8、加法器,輸入端連接通用寄存器的讀端口及內存拷貝控制器,輸出端連接通用寄存器的寫端口,用于更新源地址、目標地址;
9、比較器,輸入端連接通用寄存器的讀端口,輸出端連接內存拷貝控制器,用于根據拷貝結束信息判斷拷貝是否完成。
10、進一步地,緩沖器空間為m*2n字節,其中m為正整數,2n為總線接口寬度。
11、進一步地,所述拷貝結束信息為源地址的結束地址、目標地址的結束地址、拷貝總長度中的一種或多種。
12、進一步地,所述狀態機、加法器、總線接口均有一個;占用通用寄存器一個寫端口,用于分時寫入更新后的源地址或目標地址;占用兩個通用寄存器的讀端口,第一讀端口用于讀取拷貝結束信息,第二讀端口用于分時讀取當前的源地址和目標地址;還包括第一選擇器,第一選擇器的兩個輸入端分別輸入源地址寄存器標號、目標地址寄存器標號,控制端連接內存拷貝控制器,輸出端連接通用寄存器的第二讀端口和寫端口;在讀狀態下,第一選擇器輸出源地址寄存器標號;在寫狀態下,第一選擇器輸出目標地址寄存器標號。
13、進一步地,所述狀態機、加法器、總線接口均有兩個,包括用于讀操作的讀狀態機、讀加法器、讀總線接口,用于寫操作的寫狀態機、寫加法器、寫總線接口,讀狀態機包含空閑狀態和讀狀態,寫狀態機包含空閑狀態和寫狀態;占用通用寄存器兩個寫端口,分別用于寫入更新后的源地址、目標地址;占用通用寄存器的三個讀端口,第一讀端口、第二讀端口、第三讀端口分別用于讀取拷貝結束信息、源地址、目標地址。
14、一種使用上述能夠快速處理內存拷貝指令的cpu的快速處理內存拷貝指令的方法,包括以下步驟:
15、內存拷貝控制器的狀態機初始處于空閑狀態;
16、當指令譯碼器接收到有效的內存拷貝指令時,從有效的內存拷貝指令中讀取源地址寄存器標號、目標地址寄存器標號、拷貝結束信息寄存器標號至通用寄存器,同時向內存拷貝控制器發送啟動信號,通用寄存器通過源地址寄存器標號、目標地址寄存器標號、拷貝結束信息寄存器標號得到并輸出源地址、目標地址的初始值及拷貝結束信息;
17、內存拷貝控制器接收到啟動信號時,狀態機跳轉至讀狀態,通過總線接口從源地址讀取數據暫存至緩沖器中,至少讀取一次數據后跳轉至寫狀態;在寫狀態下,通過總線接口按照先入先出的原則,將緩沖器中的數據依次寫入目標地址處,并清除緩沖器中的已寫數據,至少寫一次數據后跳轉至讀狀態;不斷在讀狀態和寫狀態間進行切換,利用加法器更新源地址、目標地址,利用比較器根據拷貝結束信息判斷拷貝是否完成,若拷貝完成則回到空閑狀態。
18、進一步地,在讀狀態下,每次讀取1~2n字節數據;在寫狀態下,每次寫1~2n字節數據,2n為總線接口寬度。
19、進一步地,在讀狀態下,若緩沖器空位小于2n字節,則跳轉至寫狀態,否則保持在讀狀態;在寫狀態下,若緩沖器有效位小于2n字節,則跳轉至讀狀態,否則保持在寫狀態。
20、進一步地,根據拷貝結束信息判斷拷貝是否完成的方法為:
21、在讀狀態下,利用比較器根據源地址、拷貝結束信息預判讀操作是否即將完成,若讀操作即將完成,在讀之后進入清空狀態而不是寫狀態,否則正常執行讀操作并跳轉至寫操作;
22、在清空狀態下,將緩沖器中的數據寫至目標地址處,并將已寫數據清除,直到緩沖器清空,內存拷貝完成。
23、進一步地,若狀態機處于非空閑狀態,內存拷貝控制器接收到指令譯碼器的中斷請求信號或調試信號時,狀態機先跳轉至清空狀態,待狀態機回到空閑狀態后,處理器正常響應中斷或調試請求;若狀態機處于空閑狀態,內存拷貝控制器接收到指令譯碼器的中斷請求信號或調試信號時,處理器正常響應中斷或調試請求;中斷或調試響應過程中,返回程序指針保存為當前內存拷貝指令的程序指針,通用寄存器按照應用程序二進制接口進行軟硬件保存及恢復;中斷或調試退出后,程序指針恢復為返回程序指針,處理器重新執行該內存拷貝指令,并從內存拷貝斷點處繼續執行,完成剩余拷貝。
24、一種使用上述能夠快速處理內存拷貝指令的cpu的快速處理內存拷貝指令的方法,包括以下步驟:
25、內存拷貝控制器的讀狀態機及寫狀態機初始均處于空閑狀態;
26、當指令譯碼器接收到有效的內存拷貝指令時,從有效的內存拷貝指令中讀取源地址寄存器標號、目標地址寄存器標號、拷貝結束信息寄存器標號至通用寄存器,同時向內存拷貝控制器發送啟動信號;通用寄存器通過源地址寄存器標號、目標地址寄存器標號、拷貝結束信息寄存器標號得到并輸出源地址、目標地址的初始值及拷貝結束信息;
27、內存拷貝控制器接收到啟動信號后,讀狀態機跳轉至讀狀態,通過讀總線接口不斷從源地址讀取數據暫存至緩沖器中,利用本文檔來自技高網...
【技術保護點】
1.一種能夠快速處理內存拷貝指令的CPU,其特征在于,包括:
2.根據權利要求1所述的能夠快速處理內存拷貝指令的CPU,其特征在于,緩沖器空間為M*2N字節,其中M為正整數,2N為總線接口寬度。
3.根據權利要求1所述的能夠快速處理內存拷貝指令的CPU,其特征在于,所述拷貝結束信息為源地址的結束地址、目標地址的結束地址、拷貝總長度中的一種或多種。
4.根據權利要求1至3任一所述的能夠快速處理內存拷貝指令的CPU,其特征在于,所述狀態機、加法器、總線接口均有一個;占用通用寄存器一個寫端口,用于分時寫入更新后的源地址或目標地址;占用兩個通用寄存器的讀端口,第一讀端口用于讀取拷貝結束信息,第二讀端口用于分時讀取當前的源地址和目標地址;還包括第一選擇器,第一選擇器的兩個輸入端分別輸入源地址寄存器標號、目標地址寄存器標號,控制端連接內存拷貝控制器,輸出端連接通用寄存器的第二讀端口和寫端口;在讀狀態下,第一選擇器輸出源地址寄存器標號;在寫狀態下,第一選擇器輸出目標地址寄存器標號。
5.根據權利要求1至3任一所述的能夠快速處理內存拷貝指令的CPU
6.一種使用如權利要求1-4任一所述的能夠快速處理內存拷貝指令的CPU的快速處理內存拷貝指令的方法,其特征在于,包括以下步驟:
7.根據權利要求6所述的快速處理內存拷貝指令的方法,其特征在于,在讀狀態下,每次讀取1~2N字節數據;在寫狀態下,每次寫1~2N字節數據,2N為總線接口寬度。
8.根據權利要求7所述的快速處理內存拷貝指令的方法,其特征在于,在讀狀態下,若緩沖器空位小于2N字節,則跳轉至寫狀態,否則保持在讀狀態;在寫狀態下,若緩沖器有效位小于2N字節,則跳轉至讀狀態,否則保持在寫狀態。
9.根據權利要求6至8任一所述的快速處理內存拷貝指令的方法,其特征在于,根據拷貝結束信息判斷拷貝是否完成的方法為:
10.根據權利要求9所述的快速處理內存拷貝指令的方法,其特征在于,若狀態機處于非空閑狀態,內存拷貝控制器接收到指令譯碼器的中斷請求信號或調試信號時,狀態機先跳轉至清空狀態,待狀態機回到空閑狀態后,處理器正常響應中斷或調試請求;若狀態機處于空閑狀態,內存拷貝控制器接收到指令譯碼器的中斷請求信號或調試信號時,處理器正常響應中斷或調試請求;中斷或調試響應過程中,返回程序指針保存為當前內存拷貝指令的程序指針,通用寄存器按照應用程序二進制接口進行軟硬件保存及恢復;中斷或調試退出后,程序指針恢復為返回程序指針,處理器重新執行該內存拷貝指令,并從內存拷貝斷點處繼續執行,完成剩余拷貝。
11.一種使用如權利要求5所述的能夠快速處理內存拷貝指令的CPU的快速處理內存拷貝指令的方法,其特征在于,包括以下步驟:
12.根據權利要求11所述的快速處理內存拷貝指令的方法,其特征在于,在讀狀態下,每次讀取1~2N字節數據;在寫狀態下,每次寫1~2N字節數據,2N為總線接口寬度。
13.根據權利要求11或12所述的快速處理內存拷貝指令的方法,其特征在于,判斷讀操作結束的方法為:利用比較器根據源地址、拷貝結束信息判斷讀操作是否完成;
14.根據權利要求13所述的快速處理內存拷貝指令的方法,其特征在于,若讀狀態機、寫狀態機中至少一個處于非空閑狀態,內存拷貝控制器接收到指令譯碼器的中斷請求信號或調試信號時,讀狀態機先跳轉至空閑狀態,待寫狀態機也跳轉至空閑狀態后,處理器正常響應中斷或調試請求;若讀狀態機、寫狀態機均處于空閑狀態,內存拷貝控制器接收到指令譯碼器的中斷請求信號或調試信號時,處理器正常響應中斷或調試請求;中斷或調試響應過程中,返回程序指針保存為當前內存拷貝指令的程序指針,通用寄存器按照應用程序二進制接口進行軟硬件保存及恢復;中斷或調試退出后,程序指針恢復為返回程序指針,處理器重新執行該內存拷貝指令,并從內存拷貝斷點處繼續執行,完成剩余拷貝。
...【技術特征摘要】
1.一種能夠快速處理內存拷貝指令的cpu,其特征在于,包括:
2.根據權利要求1所述的能夠快速處理內存拷貝指令的cpu,其特征在于,緩沖器空間為m*2n字節,其中m為正整數,2n為總線接口寬度。
3.根據權利要求1所述的能夠快速處理內存拷貝指令的cpu,其特征在于,所述拷貝結束信息為源地址的結束地址、目標地址的結束地址、拷貝總長度中的一種或多種。
4.根據權利要求1至3任一所述的能夠快速處理內存拷貝指令的cpu,其特征在于,所述狀態機、加法器、總線接口均有一個;占用通用寄存器一個寫端口,用于分時寫入更新后的源地址或目標地址;占用兩個通用寄存器的讀端口,第一讀端口用于讀取拷貝結束信息,第二讀端口用于分時讀取當前的源地址和目標地址;還包括第一選擇器,第一選擇器的兩個輸入端分別輸入源地址寄存器標號、目標地址寄存器標號,控制端連接內存拷貝控制器,輸出端連接通用寄存器的第二讀端口和寫端口;在讀狀態下,第一選擇器輸出源地址寄存器標號;在寫狀態下,第一選擇器輸出目標地址寄存器標號。
5.根據權利要求1至3任一所述的能夠快速處理內存拷貝指令的cpu,其特征在于,所述狀態機、加法器、總線接口均有兩個,包括用于讀操作的讀狀態機、讀加法器、讀總線接口,用于寫操作的寫狀態機、寫加法器、寫總線接口,讀狀態機包含空閑狀態和讀狀態,寫狀態機包含空閑狀態和寫狀態;占用通用寄存器兩個寫端口,分別用于寫入更新后的源地址、目標地址;占用通用寄存器的三個讀端口,第一讀端口、第二讀端口、第三讀端口分別用于讀取拷貝結束信息、源地址、目標地址。
6.一種使用如權利要求1-4任一所述的能夠快速處理內存拷貝指令的cpu的快速處理內存拷貝指令的方法,其特征在于,包括以下步驟:
7.根據權利要求6所述的快速處理內存拷貝指令的方法,其特征在于,在讀狀態下,每次讀取1~2n字節數據;在寫狀態下,每次寫1~2n字節數據,2n為總線接口寬度。
8.根據權利要求7所述的快速處理內存拷貝指令的方法,其特征在于,在讀狀態下,若緩沖器空位小于2n字節,則跳轉至寫狀態,否則保持在讀狀態;在寫狀態下,若緩沖器有效位小于2n字節...
【專利技術屬性】
技術研發人員:闕慶河,楊勇,
申請(專利權)人:南京沁恒微電子股份有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。