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

基于arm構(gòu)架的納秒級(jí)計(jì)時(shí)方法和系統(tǒng)的制作方法

文檔序號(hào):9646468閱讀:842來(lái)源:國(guó)知局
基于arm構(gòu)架的納秒級(jí)計(jì)時(shí)方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及計(jì)時(shí)技術(shù)領(lǐng)域,具體而言,涉及一種基于ARM構(gòu)架的納秒級(jí)計(jì)時(shí)方法 和一種基于ARM構(gòu)架的納秒級(jí)計(jì)時(shí)系統(tǒng)。
【背景技術(shù)】
[0002] 高精度精確計(jì)時(shí)在信息處理、物聯(lián)網(wǎng)、航天軍工、北斗授時(shí)等領(lǐng)域發(fā)揮著重要作 用,在軟件系統(tǒng)領(lǐng)域能夠用于評(píng)估代碼執(zhí)行的性能,在信息安全旁路計(jì)時(shí)攻擊領(lǐng)域是關(guān)鍵 核心技術(shù)。同時(shí)隨著手機(jī)、平板等移動(dòng)智能終端的普及和廣泛使用,也迫切需要一種ARM架 構(gòu)下的高精度計(jì)時(shí)方法,以適應(yīng)技術(shù)發(fā)展的需要。
[0003] 當(dāng)前在x86架構(gòu)下主要是利用CPU時(shí)間戳計(jì)數(shù)器實(shí)現(xiàn)精確計(jì)時(shí)的方法,時(shí)間戳計(jì) 數(shù)器是Intel處理器中的一個(gè)計(jì)數(shù)器,它記錄處理器自啟動(dòng)以來(lái)所消耗的時(shí)鐘周期數(shù)。由 于時(shí)間戳計(jì)數(shù)器(TSC)隨著處理器周期速率比例的變化而變化,因此能提供非常高的計(jì)時(shí) 精度,主頻足夠的話能夠達(dá)到納秒級(jí)的計(jì)時(shí)精度?;赥SC的計(jì)時(shí)方法通常被用于剖析和 監(jiān)測(cè)代碼,使用rdtsc指令可測(cè)量某段代碼的執(zhí)行時(shí)間,TSC的時(shí)鐘周期數(shù)可以被轉(zhuǎn)化為以 秒為單位,其精度可達(dá)到微秒級(jí)甚至納秒級(jí),方法是將獲取的時(shí)鐘周期數(shù)除以CPU主頻(在 1inux中,CPU主頻可以從內(nèi)核變量cpu_khz讀?。?br>[0004] 而ARM架構(gòu)的處理器是基于精簡(jiǎn)指令集(RISC)的,不支持TSC和rdtsc指令,因 此要達(dá)到高精度計(jì)時(shí)需采取其它方法?,F(xiàn)有的ARM系統(tǒng)下的精確計(jì)時(shí)方法有:直接調(diào)用C 函數(shù),如gettimeO函數(shù);運(yùn)用其內(nèi)置的以系統(tǒng)時(shí)鐘驅(qū)動(dòng)的WatchDog系統(tǒng),編寫(xiě)自己的計(jì)時(shí) 函數(shù)。
[0005] 以下對(duì)于上述兩種現(xiàn)有技術(shù)中的計(jì)時(shí)方式進(jìn)行簡(jiǎn)單介紹:
[0006] 1、采用C計(jì)時(shí)函數(shù)
[0007] 在ARM系統(tǒng)中,有時(shí)需要精確的時(shí)間測(cè)量。通常,取時(shí)間的C函數(shù)(如gettimeO 等)不僅通用性差(必須包含頭文件DOS.H,且不支持Unix、Linux和標(biāo)準(zhǔn)C),明顯不適用 于ARM系統(tǒng);而且主要的問(wèn)題在于,該技術(shù)的計(jì)時(shí)精度只能到10 2秒級(jí),不能提供更為精確 的時(shí)間分度。其根本原因在于:這類函數(shù)是基于系統(tǒng)實(shí)時(shí)時(shí)鐘(RTC)的,而RTC通常采用 標(biāo)準(zhǔn)化鐘表晶振,頻率只有32. 768kHz而已。因此在很多應(yīng)用涉及μs級(jí)的時(shí)間計(jì)量,標(biāo)準(zhǔn) 化的RTC及基于它的時(shí)間函數(shù)則無(wú)能為力。結(jié)合定量評(píng)估ARM系統(tǒng)下某加密算法的耗時(shí)測(cè) 試,發(fā)現(xiàn)無(wú)法采用C計(jì)時(shí)函數(shù)解決。
[0008] 2、采用ARM芯片內(nèi)置的看門(mén)狗(WatchDog)系統(tǒng)
[0009] 在ARM芯片結(jié)構(gòu)中,有內(nèi)置的WatchDog系統(tǒng),是以系統(tǒng)時(shí)鐘驅(qū)動(dòng)的,包括一個(gè)4分 頻的預(yù)分頻器和一個(gè)32位的計(jì)數(shù)器,時(shí)鐘通過(guò)預(yù)分頻器輸入定時(shí)器,定時(shí)器遞減(區(qū)別于 其它定時(shí)器)。ARM芯片中的看門(mén)狗,其原始功能是監(jiān)視CPU核心運(yùn)行的某些超時(shí)。這些超 時(shí)的發(fā)生,通常是因?yàn)楦蓴_和系統(tǒng)錯(cuò)誤等造成的程序運(yùn)行混亂。一旦發(fā)生這類情形,看門(mén)狗 便請(qǐng)求中斷服務(wù)或發(fā)出復(fù)位脈沖重啟系統(tǒng)。為了達(dá)到這樣的目的,其計(jì)時(shí)原理必須獨(dú)立于 系統(tǒng)中的任何進(jìn)程。實(shí)際上,WatchDog是獨(dú)立的硬件邏輯,其計(jì)時(shí)脈沖直接取自系統(tǒng)主時(shí) 鐘,因此它與RTC-樣具備實(shí)時(shí)性和獨(dú)立性,借用看門(mén)狗的計(jì)時(shí)體系可實(shí)現(xiàn)高精度時(shí)間測(cè) 量。
[0010] ARM內(nèi)置看門(mén)狗用作時(shí)間度量的適用范圍,大體以ys數(shù)量級(jí)為界。比如,從 S3C44B0X的器件特性說(shuō)明中可知,MCLK在看門(mén)狗計(jì)時(shí)器里的分頻比至少是1/16。典型情況 下,MCLK= 60MHz,則看門(mén)狗能夠分辨的最短時(shí)間單元t=V(60MHz/16) = 0. 27μs。統(tǒng) 計(jì)誤差約為t/2,即0. 1μs數(shù)量級(jí)。就μs級(jí)的時(shí)間測(cè)量精度而言,相對(duì)誤差有可能達(dá)到 1%~10% ;不過(guò),這對(duì)很多速度估算的場(chǎng)合來(lái)說(shuō)還是可以接受的。如果被測(cè)時(shí)間在10μs 以上,那就沒(méi)有任何問(wèn)題,可以認(rèn)為是相當(dāng)精確的了;如果要求的時(shí)間測(cè)量精度比這還高, 例如要達(dá)到納秒級(jí),則該方法就不適用了。
[0011] 上述兩種方法分別存在缺陷,第一種方法利用的是TSC計(jì)數(shù)器,該計(jì)數(shù)器只存在 于x86平臺(tái)的處理器中,在ARM平臺(tái)無(wú)法使用,因此其不能適應(yīng)目前越來(lái)越普及的ARM處理 器。第二種方法利用的是看門(mén)狗程序進(jìn)行計(jì)時(shí),但是其精度只能達(dá)到微秒級(jí),不能適應(yīng)目前 在ARM平臺(tái)需要的計(jì)時(shí)精度。

【發(fā)明內(nèi)容】

[0012] 本發(fā)明所要解決的技術(shù)問(wèn)題是,如何在ARM構(gòu)架下實(shí)現(xiàn)納秒級(jí)的精確計(jì)時(shí)。
[0013] 為此目的,本發(fā)明提出了一種基于ARM構(gòu)架的納秒級(jí)計(jì)時(shí)方法,包括:
[0014]S1,根據(jù)目標(biāo)設(shè)備的操作系統(tǒng)內(nèi)核版本,對(duì)該內(nèi)核版本對(duì)應(yīng)的操作系統(tǒng)內(nèi)核源碼 進(jìn)行編譯,加載CCNT內(nèi)核模塊,以生成CCNT驅(qū)動(dòng)模塊,將CCNT驅(qū)動(dòng)模塊加載到目標(biāo)設(shè)備 中;
[0015]S2,目標(biāo)設(shè)備初始化ARM處理器中的CCNT寄存器,讀取CCNT寄存器的第一次時(shí)鐘 周期數(shù),執(zhí)行被測(cè)試代碼,讀取CCNT寄存器的第二次時(shí)鐘周期數(shù),根據(jù)所述第二次時(shí)鐘周 期數(shù)和第一次時(shí)鐘周期數(shù)的差值計(jì)算被測(cè)試代碼的執(zhí)行時(shí)間長(zhǎng)度。
[0016] 優(yōu)選地,所述步驟S1包括:
[0017]S11,確定目標(biāo)設(shè)備的內(nèi)核版本,下載所述內(nèi)核版本對(duì)應(yīng)的操作系統(tǒng)內(nèi)核源碼;
[0018]S12,獲取目標(biāo)設(shè)備的內(nèi)核配置信息;
[0019]S13,根據(jù)所述配置信息,對(duì)所述內(nèi)核源碼進(jìn)行編譯,編譯成功后在內(nèi)核源碼中添 加CCNT內(nèi)核驅(qū)動(dòng)模塊;
[0020] S14,對(duì)添加CCNT內(nèi)核驅(qū)動(dòng)模塊后的內(nèi)核源碼再次進(jìn)行編譯,生成內(nèi)核驅(qū)動(dòng)模塊;
[0021] S15,獲取目標(biāo)設(shè)備的最高權(quán)限,將所述內(nèi)核驅(qū)動(dòng)模塊加載到目標(biāo)設(shè)備中。
[0022] 優(yōu)選地,在所述步驟S12之前還包括:
[0023]配置adb,建立與目標(biāo)設(shè)備的連接;
[0024] 搭建x86平臺(tái)下的交叉編譯環(huán)境。
[0025] 優(yōu)選地,所述步驟S2包括:
[0026]S21,目標(biāo)設(shè)備初始化ARM處理器中的CCNT寄存器;
[0027]S22,設(shè)置禁止CCNT寄存器因溢出而中斷;
[0028]S23,設(shè)置允許所有CCNT寄存器進(jìn)行計(jì)數(shù);
[0029]S24,重置所有CCNT寄存器的初始值為0 ;
[0030]S25,讀取CCNT寄存器的計(jì)數(shù)值,返回第一次時(shí)鐘周期數(shù);
[0031] S26,執(zhí)行被測(cè)試代碼,讀取CCNT寄存器的計(jì)數(shù)值,返回第二次時(shí)鐘周期數(shù);
[0032]S27,計(jì)算第二次時(shí)鐘周期數(shù)和第一次時(shí)鐘周期數(shù)的第一差值,計(jì)算所述第一次差 值與所述CCNT寄存器計(jì)數(shù)函數(shù)的執(zhí)行周期數(shù)的第二差值;
[0033] S28,獲取ARM處理器的主頻,根據(jù)所述主頻將所述第二差值換算為時(shí)間,作為所 述測(cè)試代碼的執(zhí)行時(shí)間長(zhǎng)度。
[0034] 優(yōu)選地,在所述步驟S25之前還包括:
[0035] 控制CCNT寄存器以每個(gè)周期為單位進(jìn)行計(jì)數(shù)。
[0036] 本發(fā)明還提出了一種基于ARM構(gòu)架的納秒級(jí)計(jì)時(shí)系統(tǒng),包括處理器和目標(biāo)設(shè)備,
[0037] 所述處理器用于根據(jù)目標(biāo)設(shè)備的操作系統(tǒng)內(nèi)核版本,對(duì)該內(nèi)核版本對(duì)應(yīng)的操作系 統(tǒng)內(nèi)核源碼進(jìn)行編譯,加載CCNT內(nèi)核模塊,以生成CCNT驅(qū)動(dòng)模塊,將CCNT驅(qū)動(dòng)模塊加載到 目標(biāo)設(shè)備中;
[0038] 所述目標(biāo)設(shè)備用于初始化ARM處理器中的CCNT寄存器,讀取CCNT寄存器的第一 次時(shí)鐘周期數(shù),執(zhí)行被測(cè)試代碼,讀取CCNT寄存器的第二次時(shí)鐘周期數(shù),根據(jù)所述第二次 時(shí)鐘周期數(shù)和第一次時(shí)鐘周期數(shù)的差值計(jì)算被測(cè)試代碼的執(zhí)行時(shí)間長(zhǎng)度。
[0039] 優(yōu)選地,所述處理器包括:
[0040] 下載單元,用于確定目標(biāo)設(shè)備的內(nèi)核版本,下載所述內(nèi)核版本對(duì)應(yīng)的操作系統(tǒng)內(nèi) 核源碼;
[0041] 獲取單元,用于獲取目標(biāo)設(shè)備的內(nèi)核配置信息;
[0042] 編譯單元,用于根據(jù)所述配置信息,對(duì)所述內(nèi)核源碼進(jìn)行編譯,編譯成功后在內(nèi)核 源碼中添加CCNT內(nèi)核
當(dāng)前第1頁(yè)1 2 3 4 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1