999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

門鈴響應函數中數據讀取優化方法

2021-10-15 08:38:26韓向清
雷達與對抗 2021年3期
關鍵詞:結構方法

許 菁,黃 震,韓向清,付 林

(中國船舶集團有限公司第八研究院,南京 211153)

0 引 言

在雷達信號處理或數據處理中,當使用PPC的RapidIO進行數據傳輸時,通常采用門鈴來實現數據傳輸完成后的消息中斷。對于這樣的門鈴中斷函數,需要盡可能快地完成數據轉移,以避免多次傳輸導致來不及處理的數據丟失。一般在進行大量不確定數量數據傳輸時,會在數據頭中設計一個字段來描述當次傳輸的數量。現有處理方法會通過內存復制函數(memcpy)將數據頭復制一個副本,然后對副本中的長度字段進行讀取。

本文對現有處理方法進行優化,以減少使用內存復制函數(memcpy)的應用,提高輸出讀取的效率。

1 原 理

在PowerPC的RapidIO數據傳輸時,需要進行內存地址映射,讀取傳輸的數據是通過直接訪問內存地址實現的。

編譯器實現直接(或間接)地址訪問讀取數據,可以表達為

MOV AX,[Address]

(1)

而對結構體的字段訪問表達為

MOV AX,[Address + offset]

(2)

式中,Address為結構體的首地址;offset為字段相對首地址的偏移量。

采用內存復制函數(memcpy)復制數據頭的副本,實際上是對式(1)、跳轉語句(jnz)以及計數器的多次調用,它主體的匯編表達將如下所示:

10:MOV CX,Count

20:MOVEAX,[Address]

30:MOV [DST],EAX

40:INC Address

(3)

50:INC DST

60:DEC CX

70:JNZ 20

同時,采用內存復制函數(memcpy)還將帶來函數開銷,如寄存器保存、函數堆棧等操作,這將涉及ESP、EBP等棧寄存器和EAX、ECX、EDX等調用者寄存器及EBX、ESI、EDI等被調用者寄存器的操作和保存。

首先,調用內存復制函數(memcpy)時,需要先將EAX、ECX、EDX等調用者寄存器進行保存:

10:PUSH EAX

20:PUSH EBX

30:PUSH ECX

其次,需要將輸入給內存復制函數(memcpy)的參數,入棧后推送給內存復制函數(memcpy):

10:MOV EAX,[Address1]

20:PUSH EAX

30:MOV EAX,[Address2]

40:PUSH EAX

然后,內存復制函數(memcpy)執行式(3)所示的函數主體;

再者,內存復制函數(memcpy)將執行結果入棧:

10:MOV EAX,[Address3]

20:PUSH EAX

最后,調用函數將棧中結果出棧,并還原保存的寄存器:

10:POP EAX

20:MOV[Address4],EAX

30:POP EAX

40:POP EAX

50:PUSH ECX

60:PUSH EBX

70:PUSH EAX

上述開銷將占用大量的CPU時間,對于門鈴響應來說會造成較長時間的延遲,如果在此時間內有新的接口操作和門鈴響應,就會造成數據的丟失。

2 設 計

從式(1)、(2)的描述可以看出,盡管C語言程序的寫法不一致,但是實際上對內存的訪問方法是統一的。因此,只要通過強制類型的轉換實現對應數據字段的訪問,就可以達到同樣的目的。方法如下式所示:

int datalen=(([datastruct]*)address)->[lenfield]

(4)

式中,[datastruct]為待轉換結構體類型描述字;[datastruct]*為該類型的指針;address為數據首地址;[lenfield]為描述數據長度的字段名。

式(4)實現了一個地址描述變量到結構體類型指針的轉換以及對結構體字段的訪問,從表達上看,是一個相對復雜的過程,可能也將占用一定的CPU開銷。但是從編譯器的表達上看,則恰恰相反,由于這個類型指針的轉換過程及對結構體字段的訪問的表達將在編譯階段完成,實際的有效運行指令將極為簡單,示意如下式所示:

10:MOV EAX,[Address + offset]

20:MOV [DST],EAX

(5)

可以看出:對地址描述變量到結構體類型指針的轉換以及對結構體字段的訪問,通過編譯過程就僅僅表達為首地址和偏移量的表達,兩個過程被濃縮成一條指令,大大減少了實際有效運行指令數,將極大地提高運行效率。

3 仿真分析

在驗證程序中,設計百萬次同樣操作的循環,分別采用內存復制函數(memcpy)和本文設計方法來讀取一個字段,最終得到的數據如表1所示。

表1 運行時間比較

可以看出:本文方法所需的運行時間遠遠優于內存復制函數(memcpy),運行效率提高了一個數量級,將極大節省CPU的運行開銷,減少門鈴響應函數的響應時間,降低由于內存搬移時間過長而導致新一次數據覆蓋上一次有效數據的幾率。

4 結束語

本文研究了采用地址描述變量到結構體類型指針轉換以及對結構體字段訪問替代內存復制函數(memcpy)的方法。經試驗測試,該方法可有效提高運行效率,降低數據傳輸中數據被覆蓋而導致丟失的幾率,可以在基于PowerPC的雷達信號、數據處理軟件中推廣,具有一定的實用價值。

猜你喜歡
結構方法
《形而上學》△卷的結構和位置
哲學評論(2021年2期)2021-08-22 01:53:34
論結構
中華詩詞(2019年7期)2019-11-25 01:43:04
新型平衡塊結構的應用
模具制造(2019年3期)2019-06-06 02:10:54
學習方法
論《日出》的結構
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
捕魚
創新治理結構促進中小企業持續成長
現代企業(2015年9期)2015-02-28 18:56:50
主站蜘蛛池模板: 国产性生交xxxxx免费| 这里只有精品在线播放| 日韩精品一区二区三区免费| 天堂成人在线视频| 日韩欧美在线观看| www.狠狠| 日韩区欧美区| 日韩美一区二区| 看国产一级毛片| 狠狠综合久久| 成人夜夜嗨| 色屁屁一区二区三区视频国产| 一级全黄毛片| 一级毛片在线免费看| 日日噜噜夜夜狠狠视频| 亚欧成人无码AV在线播放| 久久毛片网| 国产超碰一区二区三区| 欧美69视频在线| 精品无码日韩国产不卡av| 91破解版在线亚洲| 欧美性久久久久| 欧美啪啪视频免码| 国产99欧美精品久久精品久久| 日韩无码黄色| 国产一区二区三区精品久久呦| aⅴ免费在线观看| 国产无码网站在线观看| 免费在线成人网| 四虎永久在线视频| 九九视频免费在线观看| 青青草原国产av福利网站| 欧美中出一区二区| 四虎成人免费毛片| 91国内外精品自在线播放| 午夜电影在线观看国产1区| www.国产福利| 成人看片欧美一区二区| 日韩东京热无码人妻| 伊人国产无码高清视频| 一本久道久久综合多人| 日韩福利在线观看| 色久综合在线| 国产内射一区亚洲| 国产精品香蕉| 亚洲VA中文字幕| 国产Av无码精品色午夜| 青青草原国产| 国产成人精品在线| 亚洲日韩精品综合在线一区二区| 国产一级在线播放| 午夜无码一区二区三区| 1024你懂的国产精品| 天天综合网色中文字幕| 精品无码国产自产野外拍在线| 国产精品人成在线播放| 亚洲AV永久无码精品古装片| 18禁色诱爆乳网站| 国产视频大全| 91网站国产| 国产高清不卡视频| 亚洲三级成人| 在线看免费无码av天堂的| 99热这里只有精品国产99| 亚洲天堂在线免费| 青青操视频免费观看| www.99在线观看| 92午夜福利影院一区二区三区| 亚洲欧洲综合| 国产精品亚洲专区一区| 日韩av电影一区二区三区四区| 国产免费羞羞视频| 精品视频福利| 国产欧美另类| 91偷拍一区| 天堂av高清一区二区三区| 爱色欧美亚洲综合图区| 亚洲天堂色色人体| 亚洲日韩精品欧美中文字幕| 中文字幕2区| 波多野结衣中文字幕久久| 国产精品视频猛进猛出|