亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

程序運行時間的測量方法及仿真器的制作方法

文檔序號:6362857閱讀:285來源:國知局
專利名稱:程序運行時間的測量方法及仿真器的制作方法
技術領域
本發(fā)明涉及一種程序運行時間的測量方法及仿真器,屬于芯片設計技術領域。
背景技術
秒表(StopWatch)仿真器是一種用于測量仿真芯片的程序運行時間的軟件。程序是由仿真芯片支持的不同指令所組成,而程序運行時間則是由這些指令的機器周期及當前的時鐘頻率所決定的。在現(xiàn)有的指令中,部分程序跳轉(zhuǎn)指令及寄存器間尋址指令的運行時間為兩個機器周期,其余指令的運行時間均為一個機器周期,一個機器周期為η個主時鐘周期,η為整數(shù),由仿真芯片的特性決定。假設η = 4,當仿真器運行完一段程序時,該程序的運行時間的計算公式如下:程序運行時間=程序執(zhí)行的所有機器周期數(shù)* 一個機器周期的時間其中,一個機器周期的時間=1/(時鐘頻率/4),當時鐘頻率=4MHz時,則一個機器周期的時間為I μ S?,F(xiàn)有實現(xiàn)方式一:仿真器由硬件計數(shù)器記錄仿真芯片在運行時輸出時鐘信號的時鐘數(shù);當程序停止運行時,仿真器的主控芯片在讀寄存器的時候同時讀出所述時鐘數(shù),再上傳至界面軟件,由界面軟件根據(jù)所述時鐘數(shù)和已知的時鐘頻率計算出所述程序的運行時間。這種方式的缺陷在于:硬件計數(shù)器的計時長度是固定的,當實際的時鐘數(shù)超出硬件的計時長度時,便會發(fā)生計數(shù)溢出,使硬件計數(shù)器被強制清零,從而造成計算結(jié)果不準確?,F(xiàn)有實現(xiàn)方式二:在程序開始運行后,在被測量程序片斷的開始地址的位置和結(jié)束地址的位置分別設置斷點;當程序運行到上述斷點時,記錄開始時間戳和結(jié)束時間戳;將上述結(jié)束時間戳與開始時間戳之差作為程序運行時間的測量結(jié)果。這種方式的缺陷在于:程序的執(zhí)行是由硬件完成的,而時間戳的記錄是由軟件執(zhí)行的,由于軟硬件之間的交互還存在額外的通信時間,并且仿真器固件的處理過程也需要額外的處理時間,使得上述時間戳差值中包含這兩種時間,因此造成測量結(jié)果不準確。

發(fā)明內(nèi)容
本發(fā)明提供一種程序運行時間的測量方法及仿真器,用以提高程序運行時間的測
量準確度。本發(fā)明一方面提供一種程序運行時間的測量方法,其中包括:步驟110,將軟件計數(shù)器清零,并將程序計數(shù)器的值設定為被測程序的待執(zhí)行的指令碼的地址;步驟120,根據(jù)所述程序計數(shù)器的值確定相應的指令碼的機器周期;步驟130,匯編單步執(zhí)行所述指令碼,結(jié)束后,通過所述軟件計數(shù)器累計所述機器周期,當匯編單步執(zhí)行的所述指令碼為中斷指令碼,或者當所述收到用戶輸入的暫停命令時,執(zhí)行步驟150,否則執(zhí)行步驟140 ;步驟140,將所述程序計數(shù)器的值更新為所述被測程序的下一個待執(zhí)行的指令碼的地址,并返回執(zhí)行步驟120;步驟150,停止所述累計得到累計值,并根據(jù)所述累計值和預設的時鐘頻率計算得到所述被測程序的程序運行時間。本發(fā)明另一方面提供一種測量芯片的仿真器,其中包括:軟件部分和硬件部分,其中,所述硬件部分包括:程序計數(shù)器和微控制單元;所述軟件部分包括:執(zhí)行控制模塊,用于將軟件計數(shù)器清零,并將程序計數(shù)器的值設定為被測程序的待執(zhí)行的指令碼的地址,并指示所述微控制單元匯編單步執(zhí)行所述指令碼;在所述匯編單步執(zhí)行結(jié)束后,將所述程序計數(shù)器的值更新為所述被測程序的下一個待執(zhí)行的指令碼的地址;周期確定模塊,用于根據(jù)所述程序計數(shù)器的值確定相應的指令碼的機器周期;軟件計數(shù)器,用于在每個所述匯編單步執(zhí)行結(jié)束后,累計由周期確定模塊確定的所述機器周期,當匯編單步執(zhí)行的所述指令碼為中斷指令碼,或者當收到用戶輸入的暫停命令時,停止所述累計得到累計值;時間運算模塊,用于根據(jù)軟件計數(shù)器得到的所述累計值和預設的時鐘頻率計算得到所述被測程序的程序運行時間。本發(fā)明采用軟件計數(shù)器對機器周期進行計數(shù)累計,從而克服了計數(shù)溢出的問題;并且測量結(jié)果中不包含額外的通信時間和處理時間,因此測量的準確度更高。


圖1為本發(fā)明所述程序運行時間的測量方法實施例的流程圖;圖2為本發(fā)明所述測量芯片的仿真器實施例的結(jié)構(gòu)示意圖。
具體實施例方式圖1為本發(fā)明所述程序運行時間的測量方法實施例的流程圖,該方法可以結(jié)合仿真器的硬件實現(xiàn),也可以通過軟件模擬實現(xiàn),如圖所示,該方法包括如下步驟:步驟100,當收到用戶輸入的運行命令時,識別運行模式,當識別出所述運行模式為測量模式時,繼續(xù)執(zhí)行下述步驟110。其中,當采用仿真器實現(xiàn)本實施例時,所述仿真器可以為秒表仿真器,該仿真器的運行模式可以包括測量模式和仿真模式;所述測量模式是用于對被測程序的執(zhí)行時間進行測量的模式;所述仿真模式是用于對程序在仿真芯片中的運行狀況進行模擬仿真的模式。仿真器在測量模式下接收到運行命令時,繼續(xù)執(zhí)行下述步驟進行測量;仿真器在仿真模式下接收到運行命令時,可以采用現(xiàn)有技術的方式進行處理,與本發(fā)明無關,不再贅述。此處需要說明的是,如果采用現(xiàn)有技術中的其他方式可以確定仿真器已經(jīng)處于測量模式,則可以直接執(zhí)行下述步驟110而省略本步驟。步驟110,將軟件計數(shù)器清零,并將程序計數(shù)器的值設定為被測程序的待執(zhí)行的指令碼的地址。其中,所述軟件計數(shù)器是所述仿真器通過占用緩存空間而構(gòu)建的計數(shù)器,與現(xiàn)有仿真器中的硬件計數(shù)器相比,由于緩存空間的容量相對較大,因此足夠保存機器周期的累計值而不會發(fā)生計數(shù)溢出。其中,所述程序計數(shù)器(Program Counter,簡稱:PC)是用于存放待執(zhí)行的指令碼的地址的存儲空間,仿真器中的微控制單元根據(jù)該地址可以找到相應的指令碼,以便用于執(zhí)行。步驟120,根據(jù)所述程序計數(shù)器的值確定相應的指令碼的機器周期。具體地,可以先根據(jù)所述PC的值確定相應的指令碼,例如根據(jù)PC中存放的地址找到相應的指令碼;然后根據(jù)預設的編譯前的指令碼與編譯后的二進制碼的映射關系確定所述指令碼的機器周期,其中,該映射關系是在定義指令碼時預先保存在編譯器中的信息,用于對指令碼進行編譯。步驟130,匯編單步執(zhí)行所述指令碼,結(jié)束后,通過所述軟件計數(shù)器累計所述機器周期,當匯編單步執(zhí)行的所述指令碼為中斷指令碼,或者當所述仿真器收到用戶輸入的暫停命令時,執(zhí)行步驟150,否則執(zhí)行步驟140。其中,所述匯編單步執(zhí)行可以由所述仿真器實現(xiàn),也可以由軟件模擬實現(xiàn)。與連續(xù)執(zhí)行操作不同的是,匯編單步執(zhí)行操作每執(zhí)行一次指令碼,則返回一次執(zhí)行結(jié)果,使軟件計數(shù)器有機會對機器周期進行累計。這樣做的目的是,指令碼的執(zhí)行是由仿真器中的硬件處理單元實現(xiàn)的,而機器周期的累計是由軟件計數(shù)器實現(xiàn)的,如果讓硬件處理單元連續(xù)執(zhí)行被測程序中的多個指令碼,則軟件計數(shù)器無法得知在該連續(xù)執(zhí)行過程中共執(zhí)行了多少個指令碼,也就無法進行累計,因此,本步驟中需要采用匯編單步執(zhí)行的操作方式。本步驟中設定的計數(shù)的結(jié)束條件:一個條件是當匯編單步執(zhí)行的所述指令碼為中斷指令碼時停止計數(shù)累計,在此之前執(zhí)行的指令碼的運行時間對于用戶而言已經(jīng)具有一定的參考價值,如果用戶還關心該中斷指令碼之后的程序運行時間,可以重復執(zhí)行本實施例所述方法;另一個條件是當仿真器收到用戶輸入的暫停命令時也停止計數(shù)累計,表明在此之前執(zhí)行的指令碼的運行時間是用戶所關心的,因此不用再繼續(xù)累計。步驟140,將所述程序計數(shù)器的值更新為所述被測程序的下一個待執(zhí)行的指令碼的地址,并返回執(zhí)行步驟120;步驟150,停止所述累計得到累計值,并根據(jù)所述累計值和預設的時鐘頻率計算得到所述被測程序的程序運行時間。具體地,可以先根據(jù)所述時鐘頻率計算得到單個機器周期的運行時間;然后將所述單個機器周期的運行時間與所述機器周期的累計值相乘后得到所述被測程序的程序運行時間。步驟160,將計算得到的所述被測程序的程序運行時間進行顯示。本步驟是可選步驟,用于告知用戶最終的測量結(jié)果,采用其他方式進行通知也是可以的。本實施例所述方法采用軟件計數(shù)器對機器周期進行計數(shù)累計,從而克服了計數(shù)溢出的問題;并且測量結(jié)果中不包含額外的通信時間和處理時間,因此測量的準確度更高。圖2為本發(fā)明所述測量芯片的仿真器實施例的結(jié)構(gòu)示意圖,用以實現(xiàn)上述方法,如圖所示,該仿真器包括:軟件部分10和硬件部分20,其中的硬件部分20包括程序計數(shù)器21和微控制單元22。此處需要說明的是,雖然本實施例將仿真器劃分為軟件部分10和硬件部分20,但本領域技術人員應當理解,軟件部分10中的各模塊也必然要通過硬件實現(xiàn),例如在作為緩存的只讀存儲器(Read-Only Memory,簡稱:ROM)中實現(xiàn),只不過這些模塊的具體實現(xiàn)方式并不屬于本發(fā)明要討論的內(nèi)容,因此不做詳細描述。以下說明該仿真器的工作原理:軟件部分10中的模式設定模塊11根據(jù)用戶的選擇設定所述仿真器的運行模式,具體地,該仿真器的運行模式可以包括測量模式和仿真模式;當收到用戶輸入的運行命令時,由模式識別模塊12識別所述運行模式;當識別模塊識別12出所述運行模式為測量模式時,由執(zhí)行控制模塊13將軟件計數(shù)器15清零,并將程序計數(shù)器21的值設定為被測程序的待執(zhí)行的指令碼的地址,并指示所述微控制單元22匯編單步執(zhí)行所述指令碼,所述微控制單元22根據(jù)程序計數(shù)器21中記錄的地址找到相應的指令碼進行執(zhí)行。此處需要說明的是,如果采用現(xiàn)有技術中的其他方式可以設定仿真器的模式并確認仿真器已經(jīng)處于測量模式,則可以省略上述模式設定模塊11和識別模塊識別12。在執(zhí)行指令碼之前,由周期確定模塊14根據(jù)所述程序計數(shù)器21的值確定相應的指令碼的機器周期,具體地,可以先根據(jù)程序計數(shù)器21的值確定相應的指令碼,然后根據(jù)預設的編譯前的指令碼與編譯后的二進制碼的映射關系確定所述指令碼的機器周期。在所述微控制單元22的匯編單步執(zhí)行結(jié)束后,由軟件計數(shù)器15累計由周期確定模塊14確定的所述機器周期,并由執(zhí)行控制模塊13將所述程序計數(shù)器21的值更新為所述被測程序的下一個待執(zhí)行的指令碼的地址,然后重復進行上述過程,直到當匯編單步執(zhí)行的所述指令碼為中斷指令碼,或者當收到用戶輸入的暫停命令時,停止所述軟件計數(shù)器15的累計,并得到累計值。此后,由時間運算模塊16根據(jù)軟件計數(shù)器15得到的所述累計值和預設的時鐘頻率計算得到所述被測程序的程序運行時間。具體地,可以先根據(jù)所述時鐘頻率計算得到單個機器周期的運行時間;然后將所述單個機器周期的運行時間與所述機器周期的累計值相乘后得到所述被測程序的程序運行時間。另外,所述軟件部分10還可以進一步包括結(jié)果顯示模塊17,用于將所述時間運算模塊16計算得到的所述被測程序的程序運行時間進行顯示,使用戶及時得知測量結(jié)果。本實施例所述仿真器采用軟件計數(shù)器對機器周期進行計數(shù)累計,從而克服了計數(shù)溢出的問題;并且測量結(jié)果中不包含額外的通信時間和處理時間,因此測量的準確度更高。本領域普通技術人員可以理解:實現(xiàn)上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。最后應說明的是:以上實施例僅用以說明本發(fā)明的技術方案,而非對其限制;盡管參照前述實施例對本發(fā)明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質(zhì)脫離本發(fā)明各實施例技術方案的精神和范圍。
權利要求
1.一種程序運行時間的測量方法,其特征在于,包括: 步驟110,將軟件計數(shù)器清零,并將程序計數(shù)器的值設定為被測程序的待執(zhí)行的指令碼的地址; 步驟120,根據(jù)所述程序計數(shù)器的值確定相應的指令碼的機器周期; 步驟130,匯編單步執(zhí)行所述指令碼,結(jié)束后,通過所述軟件計數(shù)器累計所述機器周期,當匯編單步執(zhí)行的所述指令碼為中斷指令碼,或者當所述收到用戶輸入的暫停命令時,執(zhí)行步驟150,否則執(zhí)行步驟140 ; 步驟140,將所述程序計數(shù)器的值更新為所述被測程序的下一個待執(zhí)行的指令碼的地址,并返回執(zhí)行步驟120; 步驟150,停止所述累計得到累計值,并根據(jù)所述累計值和預設的時鐘頻率計算得到所述被測程序的程序運行時間。
2.根據(jù)權利要求1所述的方法,其特征在于,所述步驟120包括: 根據(jù)所述程序計數(shù)器的值確定相應的指令碼; 根據(jù)預設的編譯前的指令碼與編譯后的二進制碼的映射關系確定所述指令碼的機器周期。
3.根據(jù)權利要求1所述的方法,其特征在于,所述步驟150包括: 根據(jù)所述時鐘頻率計算得到單個機器周期的運行時間; 將所述單個機器周期的運行 時間與所述機器周期的累計值相乘后得到所述被測程序的程序運行時間。
4.根據(jù)權利要求1所述的方法,其特征在于,所述步驟150之后還包括:步驟160,將計算得到的所述被測程序的程序運行時間進行顯示。
5.根據(jù)權利要求1所述的方法,其特征在于,所述步驟110之前還包括:步驟100,當收到用戶輸入的運行命令時,識別運行模式,當識別出所述運行模式為測量模式時,執(zhí)行所述步驟110,其中,所述測量模式是用于對所述被測程序的執(zhí)行時間進行測量的模式。
6.一種測量芯片的仿真器,其特征在于,包括:軟件部分和硬件部分,其中, 所述硬件部分包括:程序計數(shù)器和微控制單元; 所述軟件部分包括: 執(zhí)行控制模塊,用于將軟件計數(shù)器清零,并將程序計數(shù)器的值設定為被測程序的待執(zhí)行的指令碼的地址,并指示所述微控制單元匯編單步執(zhí)行所述指令碼;在所述匯編單步執(zhí)行結(jié)束后,將所述程序計數(shù)器的值更新為所述被測程序的下一個待執(zhí)行的指令碼的地址;周期確定模塊,用于根據(jù)所述程序計數(shù)器的值確定相應的指令碼的機器周期; 軟件計數(shù)器,用于在每個所述匯編單步執(zhí)行結(jié)束后,累計由周期確定模塊確定的所述機器周期,當匯編單步執(zhí)行的所述指令碼為中斷指令碼,或者當收到用戶輸入的暫停命令時,停止所述累計得到累計值; 時間運算模塊,用于根據(jù)軟件計數(shù)器得到的所述累計值和預設的時鐘頻率計算得到所述被測程序的程序運行時間。
7.根據(jù)權利要求6所述的仿真器,其特征在于,所述軟件部分還包括:結(jié)果顯示模塊,用于將所述時間運算模塊計算得到的所述被測程序的程序運行時間進行顯示。
8.根據(jù)權利要求6所述的仿真器,其特征在于,所述軟件部分還包括:模式設定模塊,用于根據(jù)用戶的選擇設定所述仿真器的運行模式; 模式識別模塊,用于當收到用戶輸入的運行命令時,識別所述運行模式; 所述執(zhí)行控制模塊還用于當識別模塊識別出所述運行模式為測量模式時,將軟件計數(shù)器清零,并將程序計數(shù)器的值設定為被測程序的待執(zhí)行的指令碼的地址,并指示所述微控制單元匯編單步執(zhí)行所述指令碼;其中,所述測量模式是用于對所述被測程序的執(zhí)行時間進行測 量的模式。
全文摘要
本發(fā)明提供一種程序運行時間的測量方法及仿真器,其中仿真器包括軟件部分和硬件部分。所述硬件部分包括程序計數(shù)器和微控制單元;所述軟件部分包括模式設定模塊、模式識別模塊、執(zhí)行控制模塊、周期確定模塊、軟件計數(shù)器和時間運算模塊。本發(fā)明采用軟件計數(shù)器對機器周期進行計數(shù)累計,從而克服了計數(shù)溢出的問題;并且測量結(jié)果中不包含額外的通信時間和處理時間,因此測量的準確度更高。
文檔編號G06F11/26GK103198002SQ201210004989
公開日2013年7月10日 申請日期2012年1月9日 優(yōu)先權日2012年1月9日
發(fā)明者王珊珊 申請人:上海海爾集成電路有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1