TWI691898B - 仿真裝置、仿真方法及儲存仿真程式的儲存媒體 - Google Patents
仿真裝置、仿真方法及儲存仿真程式的儲存媒體 Download PDFInfo
- Publication number
- TWI691898B TWI691898B TW106124878A TW106124878A TWI691898B TW I691898 B TWI691898 B TW I691898B TW 106124878 A TW106124878 A TW 106124878A TW 106124878 A TW106124878 A TW 106124878A TW I691898 B TWI691898 B TW I691898B
- Authority
- TW
- Taiwan
- Prior art keywords
- simulation
- instruction
- compiled
- software
- information
- Prior art date
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 261
- 238000003860 storage Methods 0.000 title claims abstract description 37
- 238000000034 method Methods 0.000 title claims description 53
- 230000008569 process Effects 0.000 claims description 40
- 230000010365 information processing Effects 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 16
- 238000005457 optimization Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 239000000470 constituent Substances 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/43—Checking; Contextual analysis
- G06F8/433—Dependency analysis; Data or control flow analysis
- G06F8/434—Pointers; Aliasing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30058—Conditional branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/32—Address formation of the next instruction, e.g. by incrementing the instruction counter
- G06F9/322—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
- G06F9/323—Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45516—Runtime code conversion or optimisation
- G06F9/4552—Involving translation to a different instruction set architecture, e.g. just-in-time translation in a JVM
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
- Stored Programmes (AREA)
- Executing Machine-Instructions (AREA)
Abstract
仿真裝置3包括:記憶部70,其使下列資訊關聯並記憶之:包含於仿真執行對象軟體71中並內含指令種別711和運算數712的指令資訊710、指令資訊710已編譯為可仿真的編譯完成指令資訊72、表示編譯完成指令資訊72的儲存位址的資訊73;產生部80,將指令資訊710轉換為從儲存位址叫出與指令資訊710關聯的編譯完成指令資訊72的副程式讀出指令資訊,藉此,產生已將仿真執行對象軟體71編譯為可仿真的編譯完成軟體81。
Description
本發明係關於編譯作為仿真的執行對象的軟體使其為可仿真的技術。
現代社會中,電腦系統的體系結構急速進步。但是,例如,當新體系結構和舊體系結構沒有互換性的情況下,由該新體系結構構成的電腦系統,無法直接執行舊體系結構用的軟體資產。在此種情況下,由新體系結構構成的電腦系統,可以藉由進行仿真,來執行舊軟體資產。
例如,過去已開發的主機用的軟體資產,能夠藉由仿真,由現在的開放式伺服器執行,因此,能夠有效運用主機用的大量軟體資產。但是,相較於直接執行軟體的情況,藉由仿真執行該軟體的情況下,執行速度降低。因此,極需有使得藉由仿真之軟體的執行高速化的技術。
專利文獻1(Japanese Patent Application Laid-open Publication No.2010-140233)中揭露了具備編譯處理器和仿真處理器的仿真系統,作為與此種技術關聯的技術。此系統中的編譯處理器,從目標碼(target code)讀出指令並解析之,產生用以對於該指令進行仿真的主機碼(host code)。仿真處理器,在藉由編譯處理器產生主機碼的編譯模式中,執行主機碼。而 且,仿真處理器,在未由編譯處理器產生主機碼的翻譯模式中,從下一個目標碼讀出指令並解析之,執行對於該指令的仿真。
另外,專利文獻2(Japanese Patent No.4713820)中揭露了,在程式的執行過程中呼叫方法時,判斷該方法是否為未編譯的程式執行控制裝置。該裝置,當該方法為未編譯的情況下,要求用翻譯處理執行該方法的位元組碼(byte code)並編譯該方法。該裝置,當該方法已編譯的情況下,執行該方法的原生碼(native code)。該裝置,使用與進行用位元組碼的翻譯處理執行或者原生碼的執行之指令執行的任務有別之任務,來進行被要求編譯之方法的編譯。
如專利文獻1及專利文獻2所揭露,對於做為執行對象的軟體併用編譯處理和翻譯處理,藉此,能夠用仿真使該軟體的執行高速化。在此情況下,尤其是編譯處理對高速化造成的影響大,但在專利文獻1及專利文獻2揭露的構成中,由編譯處理的高速化不算充分,而有再提高由編譯處理的高速化的課題。本申請案發明的主要目的為,提供解決該課題的仿真裝置等。
本申請案發明之一態樣的仿真裝置包括:記憶裝置,其使下列資訊關聯並記憶之:包含於仿真執行對象軟體中並內含指令種別和運算數的指令資訊、上述指令資訊已編譯為可仿真的編譯完成指令資訊、表示上述編譯完成指令資訊的儲存位址的資訊;產生裝置,將上述指令資訊轉換為從上述儲存 位址叫出與上述指令資訊關聯的上述編譯完成指令資訊的副程式讀出指令資訊,藉此,產生已將上述仿真執行對象軟體編譯為可仿真的編譯完成軟體。
在達成上述目的的其他觀點中,本申請案發明的一態樣之仿真方法,將包含於仿真執行對象軟體中,內含指令種別和運算數的指令資訊、上述指令資訊已編譯為可仿真的編譯完成指令資訊、表示上述編譯完成指令資訊的儲存位址的資訊關聯並記憶於記憶裝置的情況下,藉由資訊處理裝置,將上述指令資訊轉換為從上述儲存位址叫出與上述指令資訊關聯的上述編譯完成指令資訊的副程式讀出指令資訊,藉此,產生已將上述仿真執行對象軟體編譯為可仿真的編譯完成軟體。
另外,在達成上述目的的另一個觀點中,本申請案發明之一態樣的仿真程式為用以使電腦執行下列處理的仿真程式,該電腦能夠存取使下列資訊關聯並記憶之記憶裝置:包含於仿真執行對象軟體中並內含指令種別和運算數的指令資訊、將上述指令資訊編譯為可仿真的編譯完成指令資訊、表示上述編譯完成指令資訊的儲存位址的資訊;該處理包括:產生處理,將上述指令資訊轉換為從上述儲存位址叫出與上述指令資訊關聯的上述編譯完成指令資訊的副程式讀出指令資訊,藉此,產生已將上述仿真執行對象軟體編譯為可仿真的編譯完成軟體。
再者,本申請案發明亦可藉由儲存了該仿真程式(電腦程式),可用電腦讀取的非揮發性儲存媒體來實現。
本申請案發明能夠藉由仿真使軟體的執行高速 化。
1‧‧‧仿真裝置
3‧‧‧仿真裝置
10‧‧‧編譯處理器
20‧‧‧仿真處理器
30‧‧‧主記憶體
31‧‧‧目標碼空間
32‧‧‧目標資料空間
33‧‧‧主機碼空間
34‧‧‧主機資料空間
40‧‧‧輸出入處理器
41‧‧‧輸出入I/F(介面)
42‧‧‧通信I/F
43‧‧‧硬碟
44‧‧‧讀寫機
45‧‧‧儲存媒體
50‧‧‧系統匯流排
60‧‧‧最適化處理器
70‧‧‧記憶部
71‧‧‧仿真執行對象軟體
72‧‧‧編譯完成指令資訊
73‧‧‧表示儲存位址的資訊
80‧‧‧產生部
310‧‧‧仿真執行對象軟體
320‧‧‧仿真執行對象軟體用資料
330‧‧‧編譯程式
331‧‧‧仿真程式
332‧‧‧仿真程式碼群
333-1‧‧‧編譯完成軟體
333‧‧‧編譯完成軟體群
333-n‧‧‧編譯完成軟體
340‧‧‧編譯程式用資料
341‧‧‧仿真程式用資料
342‧‧‧處理器間I/F(介面)用資料
343‧‧‧編譯完成軟體管理資訊
710‧‧‧指令資訊
711‧‧‧指令種別
712‧‧‧運算數
3100‧‧‧指令資訊
3410‧‧‧指令指標
3420‧‧‧要求緩衝儲存器
3421‧‧‧指令資訊管理表
圖1為表示本申請案發明的第1實施形態之仿真裝置1的構成的方塊圖。
圖2為例示本申請案發明的第1實施形態之仿真裝置1執行仿真的過程中,參照或者產生的資訊之關係的圖。
圖3為例示本申請案發明的第1實施形態之仿真裝置1中的指令資訊3100和仿真程式碼群332之關係的圖。
圖4為例示本申請案發明的第1實施形態之要求緩衝儲存器3420的構成之圖。
圖5為例示本申請案發明的第1實施形態之指令資訊管理表3421的構成之圖。
圖6為例示本申請案發明的第1實施形態之編譯仿真程式碼管理表3422-000到3422-255的構成之圖。
圖7A為表示本申請案發明的第1實施形態之仿真裝置1中的仿真處理器20的動作之流程圖(1/2)。
圖7B為表示本申請案發明的第1實施形態之仿真裝置1中的仿真處理器20的動作的流程圖(2/2)。
圖8A為表示本申請案發明的第1實施形態之仿真裝置1中的編譯處理器10的全體動作的流程圖(1/2)。
圖8B為表示本申請案發明的第1實施形態之仿真裝置1中的編譯處理器10的全體動作的流程圖(2/2)。
圖9A為表示本申請案發明的第1實施形態之仿真裝置1 中的編譯處理器10產生編譯完成軟體的詳細動作的流程圖(1/2)。
圖9B為表示本申請案發明的第1實施形態之仿真裝置1中的編譯處理器10產生編譯完成軟體的詳細動作的流程圖(2/2)。
圖10為例示本申請案發明的第2實施形態之仿真裝置2之構成的方塊圖。
圖11A為表示本申請案發明的第2實施形態之仿真裝置1中的最適化處理器60的動作的流程圖(1/2)。
圖11B為表示本申請案發明的第2實施形態之仿真裝置1中的最適化處理器60的動作的流程圖(2/2)。
圖12為表示本申請案發明的第3實施形態之仿真裝置3的構成之方塊圖。
以下,參照圖式,詳細說明本申請案發明的實施形態。
[第1實施例]
圖1為表示本申請案發明的第1實施形態之仿真裝置1的構成的方塊圖。仿真裝置1為可以執行對軟體的仿真的例如伺服器裝置等的資訊處理裝置。
本實施形態的仿真裝置1具有下列以作為構成要素。
.編譯處理器10、.仿真處理器20、 .主記憶體30、.輸出入處理器40、.系統匯流排50、.輸出入I/F(介面)41、.通信I/F42、.硬碟43、.讀寫機44。
如圖1所示,編譯處理器10、仿真處理器20、及輸出入處理器40,藉由系統匯流排50,以可通訊的方式與主記憶體30連接,讀取並執行記憶於主記憶體30中的電腦程式。編譯處理器10、仿真處理器20、及輸出入處理器40,從主記憶體30讀出執行電腦程式時必要的資料,並將其執行結果寫入主記憶體30。主記憶體30為,例如,由RAM(Random Access Memory)等構成的可讀寫的記憶裝置。
輸出入處理器40,以可通訊的方式,與輸出入I/F41、通信I/F42、硬碟43、及讀寫機44連接。輸出入I/F41為,例如,鍵盤、滑鼠、顯示裝置等的進行資訊的輸出入的裝置。輸出入處理器40,例如,透過讀寫機44,讀取記錄在CD-ROM等的各種儲存媒體45的電腦程式或資料後,將已讀取的電腦程式或資料儲存於主記憶體30。輸出入處理器40,或者,透過與網際網路等的通訊線路連接的通信I/F42,由外部下載儲存在主記憶體30的電腦程式或資料亦可。
本案中,將作為仿真裝置1進行仿真的對象的軟體所包含的指令程式碼(亦即,與仿真裝置1之體系結構相異 的資訊處理裝置可執行的指令程式碼)定義為目標碼。在本案中,另將仿真裝置1可以直接執行的指令程式碼定義為主機碼。
本實施形態的主記憶體30,具有目標碼空間31、目標資料空間32、主機碼空間33、及主機資料空間34,作為位址空間(記憶區域)。
目標碼空間31為,記憶了由目標碼構成的軟體(程式)的主記憶體30的位址空間,記憶了仿真執行對象軟體310。仿真執行對象軟體310為,作為仿真裝置1進行仿真的對象的軟體。
目標資料空間32為,記憶了由目標碼構成的資料的主記憶體30的位址空間,記憶了仿真執行對象軟體用資料320。仿真執行對象軟體用資料320,在仿真執行對象軟體310的執行當中輸入或輸出的資料。
主機碼空間33為,記憶了由主機碼構成的軟體的主記憶體30的位址空間,記憶了編譯程式330、仿真程式331、仿真程式碼群332、及編譯完成軟體群333。編譯程式330為,執行藉由編譯仿真執行對象軟體310,產生作為編譯結果的軟體的處理(產生處理)之程式,由編譯處理器10執行。仿真程式331為,執行對於仿真執行對象軟體310進行仿真的處理(執行處理)之程式,由仿真處理器20執行。
仿真程式碼群332為,針對仿真執行對象軟體310包含的各指令資訊,由主機碼記載之副程式程式群。另外,仿真程式碼群332被使用於,藉由用翻譯方式的處理(翻譯處理)來進行對於仿真執行對象軟體310的仿真的情況下,亦包含由 主機碼記載的程式。編譯完成軟體群333為,作為仿真執行對象軟體310的至少一部分被編譯為可仿真後之結果的程式群。
主機資料空間34為,記憶了由主機碼構成的資料的主記憶體30的位址空間,記憶了編譯程式用資料340、仿真程式用資料341、處理器間I/F(介面)用資料342、及編譯完成軟體管理資訊343。編譯程式用資料340為,在編譯程式330的執行中被輸入或輸出的資料。仿真程式用資料341為,在仿真程式331的執行中被輸入或輸出的資料。
處理器間I/F用資料342為,在編譯處理器10和仿真處理器20協同運作,對於仿真執行對象軟體310進行仿真的情況下,在這些處理器之間被輸出入的資料。編譯完成軟體管理資訊343為,用以管理包含於編譯完成軟體群333中的各個編譯完成軟體的資訊(資料)。
上述之主記憶體30中記憶的各個軟體或資料的細節,係因應需要而在後文敘述之。
以下,詳細說明第1實施形態的仿真處理器20、及編譯處理器10。
(仿真處理器20)
本實施形態的仿真處理器20、從主記憶體30讀取並執行仿真程式331,藉此進行對於仿真執行對象軟體310的仿真。
圖2為例示本實施形態之仿真裝置1執行仿真的過程中,參照或者產生的資訊之關係的圖。仿真處理器20、從仿真執行對象軟體310中,指令指標3410所示之位址,取得 指令資訊,並藉由仿真來執行已取得的指令資訊。指令指標3410為,仿真處理器20對於仿真執行對象軟體310執行仿真時,表示在仿真執行對象軟體310中的現在的執行場所(位址)之指標。指令指標3410為包含於仿真程式用資料341的資料。
本實施形態中,用編譯處理器10編譯包含於仿真執行對象軟體310中的含有1以上的指令的指令列。而且,已被編譯的結果記憶在主記憶體30中作為編譯完成軟體群333。圖2所示之例中,作為包含於仿真執行對象軟體310的連續指令之指令X、指令Y、及指令Z所構成的指令列被編譯後的結果記憶在主記憶體30中作為編譯完成軟體333-1。圖2所示之例中,編譯完成軟體群333包含編譯完成軟體333-1到333-n(n為任意自然數)。
仿真處理器20,在對於圖2中例示的指令X、指令Y、及、指令Z所構成的指令列進行仿真的情況下,從主記憶體30讀取編譯完成軟體333-1,並執行已讀取的編譯完成軟體333-1。
仿真處理器20,能夠藉由依序解析包含於仿真執行對象軟體310的指令的一個個指令而執行的翻譯形式,來執行對於仿真執行對象軟體310的仿真。因此,仿真處理器20,在編譯完成軟體333-1未記憶於主記憶體30的情況下,藉由翻譯形式來執行圖2所例示的對於由指令X、指令Y、及指令Z構成的指令列的仿真。
圖2例示的編譯完成軟體管理資訊343為,對於編譯完成軟體331-1到333-n,使其與其儲存位址、及仿真執 行對象軟體310中的執行開始位址關聯的資訊。圖2所例示的編譯完成軟體管理資訊343表示,例如,儲存與仿真執行對象軟體310中的始於位於位址1的指令X的指令列相關的編譯完成軟體333-1的位址。因此,仿真處理器20,能夠藉由參照編譯完成軟體管理資訊343,確認對於在仿真執行對象軟體310中的始於指令指標3410所示位址的指令列的編譯完成軟體,是否已記憶在主記憶體30中作為編譯完成軟體群333。
圖3為例示本實施形態之仿真裝置1中的指令資訊3100和仿真程式碼群332之關係的圖。指令資訊3100為,表示包含於仿真執行對象軟體310的各個指令(例如,圖2例示的指令X、指令Y、指令Z等)的內容的資訊。指令資訊3100,如圖3所例示的那樣,包含指令程式碼(指令種別)、Reg(暫存器)、及Imm(即值)。例如,指令程式碼、Reg、及Imm依序為8位元、4位元、及4位元的資訊。Reg及Imm為,指令為處理對象的資訊(運算數)。Reg為識別處理器內的暫存器的資訊。
仿真程式碼群332係於仿真處理器20對於仿真執行對象軟體310中包含的指令執行仿真時所使用,由主機碼構成的程式(軟體)群。仿真程式碼群332包含,關於指令程式碼「0x00」的,指令0x00的編譯仿真程式碼332000-000到332000-255、及指令0x00的翻譯仿真程式碼332000-256。不過,「0x」為表示16進數表記的記號。仿真程式碼群332包含,關於指令程式碼「0xFF」的,指令0xFF的編譯仿真程式碼332255-000到332255-255、及指令0xFF的翻譯仿真程式碼332255-256。同樣地,仿真程式碼群332也包含,關於指令程 式碼「0x01」到「0xFE」的編譯仿真程式碼及翻譯仿真程式碼。
指令0x00的編譯仿真程式碼332000-000為,為了對指令程式碼為「0x00」、運算數為「0x00」的指令資訊3100進行仿真的已編譯程式。指令0x00的編譯仿真程式碼332000-255為,為了對指令程式碼「0x00」、運算數「0xFF」的指令資訊3100進行仿真的已編譯程式。指令0x00的翻譯仿真程式碼332000-256為,為了對指令程式碼「0x00」的指令資訊3100,用翻譯形式執行仿真的程式。包含於仿真程式碼群332中的關於指令0x01到0xFF的編譯仿真程式碼及翻譯仿真程式碼,也和上述的指令0x00相關仿真程式碼一樣。
仿真處理器20,在執行圖2例示的編譯完成軟體333-1的情況下,讀取並執行由讀取指令X相關的編譯仿真程式碼的Call指令(副程式讀出指令)所指定的仿真程式碼群332中的任一個編譯仿真程式碼。仿真處理器20,對於指令Y及指令Z也執行相同的處理後,執行指示編譯完成軟體333-1執行結束的ret指令(回復指令)。
仿真處理器20,在仿真執行對象軟體310中,對於始於指令指標3410所示位址的指令列的編譯完成軟體未被記憶於主記憶體30中作為編譯完成軟體群333的情況下,對於編譯處理器10,指示對於該指令列的編譯之執行。仿真處理器20,透過圖1所示的處理器間I/F用資料342所包含的要求緩衝儲存器3420執行該指示。
圖4為例示本實施形態之要求緩衝儲存器3420的構成之圖。要求緩衝儲存器3420具備8個記入項目0到7,針 對各記入項目,關聯地記憶「仿真執行對象軟體310中的編譯開始位址」及「有效旗標」。再者,要求緩衝儲存器3420具備的記入項目的個數不限定於8個。
要求緩衝儲存器3420中的有效旗標為,表示儲存在記入項目中的資訊是否為有效的資訊,「0xFF」的情況下表示有效、「0x00」的情況下表示無效(亦即,未使用記入項目)。仿真處理器20,例如,向編譯處理器10指示圖2例示的始於指令X的指令列的編譯的情況下,在有效旗標為「0x00」的任一個未使用記入項目中,登錄仿真執行對象軟體310中指令X所在的位址,並將該記入項目的有效旗標設定為「0xFF」。要求緩衝儲存器3420中的記入項目都是有效的情況下,仿真處理器20,不向編譯處理器10指示對該指令列編譯。
仿真處理器20,在仿真執行對象軟體310中,對於始於指令指標3410所示位址的指令列的編譯完成軟體,未記憶於主記憶體30中作為編譯完成軟體群333的情況下,藉由翻譯形式執行對於該指令列的仿真。此時,仿真處理器20,參照處理器間I/F用資料342所包含的指令資訊管理表3421。
圖5為例示本實施形態之指令資訊管理表3421的構成之圖。指令資訊管理表3421為使「指令程式碼」、「指令長」、「編譯結束旗標」、「翻譯仿真程式碼位址」、「運算數欄位」、「編譯仿真程式碼管理表位址」關聯的資訊。圖2例示的指令X的指令程式碼為例如「0xXX」的情況下,仿真處理器20,由指令資訊管理表3421表示的指令0xXX之翻譯仿真程式碼332XXX-256的儲存位址,讀取並執行翻譯仿真程 式碼332XXX-256。圖5例示的指令資訊管理表3421表示指令X的指令長為2位元組。因此,仿真處理器20,在指令指標3410所示之值加上2位元組後,對於作為指令X後續的指令之指令Y執行仿真。
(編譯處理器10)
圖1所示的本實施形態之編譯處理器10,按照由仿真處理器20登錄在要求緩衝儲存器3420的資訊,執行對於仿真執行對象軟體310中包含的指令列的編譯。編譯處理器10,例如定期的對於要求緩衝儲存器3420進行輪詢亦可。在此情況下,仿真處理器20,沒有必要對於編譯處理器10執行要求編譯處理的通訊。編譯處理器10,或者,當對於要求緩衝儲存器3420中登錄的編譯要求的編譯處理全部完成後,再轉移到閒置狀態亦可。在此情況下,仿真處理器20,有必要對編譯處理器10進行要求編譯處理的通訊。
編譯處理器10,讀取圖4例示的要求緩衝儲存器3420中,有效旗標為「0xFF」的記入項目中儲存的編譯開始位址所表示的仿真執行對象軟體310中的指令,對該指令執行編譯。此時,編譯處理器10參照圖5例示的指令資訊管理表3421。編譯處理器10,例如對於指令程式碼為「0xXX」的指令X執行編譯的情況下,取得指令資訊管理表3421所示的「指令0xXX相關的編譯仿真程式碼管理表3422-XXX的儲存位址」。
圖6為例示實施形態之編譯仿真程式碼管理表3422-000到3422-255的構成之圖。編譯仿真程式碼管理表 3422-000為,關於指令程式碼為「0x00」的指令的表,編譯仿真程式碼管理表3422-255為,關於指令程式碼為「0xFF」的指令的表。編譯仿真程式碼管理表3422-000到3422-255為,將「運算數」、「編譯仿真程式碼位址」、「編譯仿真程式碼大小」關聯的資訊。
編譯處理器10,對指令X進行編譯的情況下,因應指令X的運算數所示的值,取得由編譯仿真程式碼管理表3422-XXX表示的指令0xXX的編譯仿真程式碼332XXX-i(i為藉由運算數特定的0到255之任何一個整數)之儲存位址。編譯處理器10,產生叫出已取得的該儲存位址的Call指令,作為圖2例示的編譯完成軟體333-1。
編譯處理器10,參照圖5例示的指令資訊管理表3421,確認指令0xXX的「編譯結束旗標」。編譯結束旗標為,表示是否繼續進行對於後續指令之編譯的旗標。編譯結束旗標所示之值為「CONTINUE」的情況下,表示繼續進行對於後續指令的編譯,其值為「END」的情況下,表示於指令結束編譯。一般而言,關於分岐指令的編譯結束旗標設定為「END」,除了分岐指令之外的指令的編譯結束旗標設定為「CONTINUE」。編譯處理器10,確認指令0xXX的「編譯結束旗標」為「CONTINUE」之後,將作為指令0xXX的指令長的2位元組加算於編譯開始位址。藉此,編譯處理器10,讀取仿真執行對象軟體310包含的指令Y,和指令X的時候一樣地進行對於指令Y的編譯處理。
如圖2所例示的,因為指令Y並非分岐指令,編 譯處理器10,讀取指令Y後續的指令Z,並且和指令X及指令Y的時候一樣地進行對於指令Z的編譯處理。如圖2例示的,由於指令Z為分岐指令,編譯處理器10,確認在指令資訊管理表3421中,關於指令Z的「編譯結束旗標」為「END」。編譯處理器10將叫出關於指令Z的編譯仿真程式碼的儲存位址的Call指令追加於編譯完成軟體333-1。編譯處理器10,接著,將ret指令(回復指令)追加於編譯完成軟體333-1,作為關於指令Z的Call指令後續的指令,結束產生編譯完成軟體333-1的處理。
編譯處理器10,將已產生的編譯完成軟體333-1儲存於主記憶體30,將其儲存位址與仿真執行對象軟體310中的指令X的位址關聯,向圖2例示的編譯完成軟體管理資訊343登錄。編譯處理器10,在與仿真裝置1中的其他處理器之間,排他地更新編譯完成軟體管理資訊343。因此,編譯處理器10,將編譯完成軟體管理資訊343鎖住後執行更新處理,當更新處理結束後,將編譯完成軟體管理資訊343解鎖。
繼之,參照圖7到圖9的流程圖,詳細說明第1實施形態之仿真裝置1的動作(處理)。
圖7A及7B為表示本實施形態之仿真處理器20的動作的流程圖。
仿真處理器20,從仿真執行對象軟體310中,指令指標3410所示的位址,取得指令資訊(步驟S101)。在該指令資訊並非表示分岐指令的情況下(步驟S102中[否]),仿真處理器20,使用該指令資訊所特定的翻譯仿真程式碼,藉此執行 仿真(步驟S103)。仿真處理器20,更新指令指標3410(步驟S104),處理回到步驟S101。
在該指令資訊表示分岐指令的情況下(步驟S102中[是]),仿真處理器20執行和步驟S103及步驟S104相同的處理(步驟S105)。仿真處理器20,確認在要求緩衝儲存器3420中是否有空的記入項目(未使用記入項目)(步驟S106)。在沒有空的記入項目的情況下(步驟S107中[否]),處理回到步驟S101。
在有空的記入項目的情況下(步驟S107中[是]),仿真處理器20將編譯完成軟體管理資訊343鎖住(步驟S108)。仿真處理器20,確認在編譯完成軟體管理資訊343中是否有登錄指令指標3410所示的值(步驟S109)。仿真處理器20,將編譯完成軟體管理資訊343解鎖(步驟S110)。
在指令指標3410所示之值已登錄的情況下(步驟S111中[是]),仿真處理器20,執行與指令指標3410所示之值關聯的編譯完成軟體333-i,藉此執行仿真(步驟S112),處理回到步驟S108。
指令指標3410所示之值未登錄的情況下(步驟S111中[否]),仿真處理器20,將指令指標所示之值設定於要求緩衝儲存器3420中的空的記入項目中,作為編譯開始位址,將其有效旗標設定為「0xFF」(步驟S113)。仿真處理器20,向編譯處理器10傳送編譯要求(步驟S114),處理回到步驟S101。
圖8A及8B為表示本實施形態之仿真裝置1中的 編譯處理器10的全體動作的流程圖。
編譯處理器10,從仿真處理器20接收編譯要求(步驟S201)。編譯處理器10,確認要求緩衝儲存器3420的有效旗標(步驟S202)。有效旗標都是「0x00」的情況下(步驟S203中[是]),編譯處理器10轉換為閒置狀態(步驟S213),結束全體的處理。
有效旗標的至少任一者不為「0x00」(亦即,有效旗標的至少任一者為「0xFF」)的情況下(步驟S203中[否]),編譯處理器10將編譯完成軟體管理資訊343鎖住(步驟S204)。編譯處理器10,確認在編譯完成軟體管理資訊343中,是否有和有效旗標為「0xFF」的記入項目中儲存的編譯開始位址相當的位址(步驟S205)。編譯處理器10,將編譯完成軟體管理資訊343解鎖(步驟S206)。
和編譯開始位址相當的位址已登錄於編譯完成軟體管理資訊343的情況下(步驟S207中[是]),編譯處理器10,重設登錄了該位址的要求緩衝儲存器3420的記入項目的有效旗標(步驟S208),處理回到步驟S201。
和編譯開始位址相當的位址未登錄於編譯完成軟體管理資訊343的情況下(步驟S207中[是]),編譯處理器10,產生仿真執行對象軟體310中始於該編譯開始位址的部分編譯後的編譯完成軟體333-i(步驟S209)。編譯處理器10,將編譯完成軟體管理資訊343鎖住(步驟S210)。編譯處理器10,將該編譯開始位址、編譯完成軟體333-i的儲存位址關聯地登錄在編譯完成軟體管理資訊343中(步驟S211)。編譯處理器10, 將編譯完成軟體管理資訊343解鎖(步驟S212),處理回到步驟S208。
圖9A及9B為表示本實施形態之仿真裝置1中的編譯處理器10,產生編譯完成軟體的詳細動作(圖8中的步驟S209)的流程圖。
編譯處理器10,取得仿真執行對象軟體310中的編譯開始位址的指令資訊3100(步驟S301)。編譯處理器10,將指令資訊3100所包含的指令程式碼與指令資訊管理表3421比對,取得編譯仿真程式碼管理表位址(步驟S302)。編譯處理器10,參照儲存在已取得的位址的編譯仿真程式碼管理表(步驟S303)。
編譯處理器10,取得與指令資訊3100所包含的運算數所示之值關聯的編譯仿真程式碼位址(步驟S304)。編譯處理器10,產生包含叫出位於該編譯仿真程式碼位址的編譯仿真程式碼之Call指令的編譯完成軟體333-i(步驟S305)。編譯處理器10,確認指令資訊管理表3421所示的,指令資訊3100所包含之指令程式碼相關的編譯結束旗標(步驟S306)。
編譯結束旗標為「CONTINUE」的情況下(步驟S307中[是]),編譯處理器10,將指令資訊管理表3421表示的指令資訊3100所包含的指令程式碼相關的指令長加算於編譯開始位址(步驟S308),處理回到步驟S301。編譯結束旗標並非「CONTINUE」(亦即,為「END」)的情況下(步驟S307中[否]),編譯處理器10,將ret指令插入已產生的編譯完成軟體的最末行之後,將編譯完成軟體儲存於主記憶體30(步驟S309),步 驟S209的處理結束。
本實施形態之仿真裝置1,能夠藉由仿真使軟體的執行高速化。其係由於主記憶體30和編譯處理器10具有以下的功能之故。亦即,仿真執行對象的指令資訊、仿真程式碼群332、仿真程式碼群332的儲存位址係關聯地記憶在主記憶體30中。而且,編譯處理器10,將該指令資訊轉換為叫出仿真程式碼的副程式讀出指令資訊,藉此,產生將仿真執行對象編譯為可仿真的編譯完成軟體群333。副程式讀出指令資訊為,讀取與指令資訊3100關聯的仿真程式碼的指令資訊。
以下,詳細說明由本實施形態的仿真裝置1實現的效果。
已知有技術藉由併用對於作為仿真執行對象的軟體的編譯處理和翻譯處理,而用仿真使該軟體的執行高速化。在此技術中,針對作為編譯對象的各指令,將事前準備的大小例如為數十位元組左右的仿真程式碼,就個指令進行複製,以執行編譯處理的情況下,複製的資料量變得非常大,因此造成編譯處理需要的時間變長的問題。亦即,執行仿真的情況下,具有要更提高用編譯處理的高速化的課題。
為了解決此種課題,本實施形態的仿真裝置1中,在主記憶體30中,關聯地記憶包含於仿真執行對象軟體310中,內含指令種別和運算數的指令資訊3100、指令資訊3100已編譯為可仿真的仿真程式碼群332、表示仿真程式碼群332的儲存位址的資訊。而且,編譯處理器10,將指令資訊3100轉換為從儲存位址叫出與指令資訊3100關聯的仿真程式碼的 副程式讀出指令資訊,藉此,產生已將仿真執行對象軟體310編譯為可仿真的編譯完成軟體群333。亦即,仿真裝置1,並非針對作為編譯對象的各指令複製仿真程式碼,而是將作為編譯對象的指令轉換為讀取該仿真程式碼的副程式讀出指令,藉此進行編譯處理。因此,本實施形態的仿真裝置1,避免仿真程式碼的複製耗費時間,藉此,能夠使得藉由仿真之軟體的執行高速化。
另外,本實施形態的仿真程式碼群332為,基於指令資訊3100中包含的指令種別所示之值與運算數所示之值而產生的程式碼群。亦即,仿真程式碼群332為,基於指令種別和運算數兩者的值而最適編譯後的程式碼,因此,相較於例如僅基於指令種別所示值而產生的程式碼,能夠高速地被執行。因此,本實施形態的仿真裝置1,能夠使得藉由仿真的軟體之執行高速化。
另外,本實施形態的編譯處理器10,在仿真執行對象軟體310中,以發生分岐指令之前的指令列為單位,產生1個編譯完成軟體333-i。發生分岐指令之前的指令列所包含的指令,在仿真執行對象軟體310中是按照位址順序執行,所以,能夠將這些指令整合為一個編譯完成軟體。因此,本實施形態的仿真裝置1,能夠有效率地產生編譯完成軟體群333。
另外,本實施形態的主記憶體30中的主機資料空間34中,記憶了具有複數個記入項目的要求緩衝儲存器3420,作為處理器間I/F用資料342。仿真處理器20,對於編譯處理器10指示編譯時,將仿真執行對象軟體310中的編譯 開始位址登錄於任一個空的記入項目,並將該記入項目的有效旗標設定為有效。然後,編譯處理器10,從有效旗標表示為有效的記入項目中所登錄的編譯開始位址開始進行編譯處理。亦即,編譯處理器10,能夠與仿真處理器20進行的仿真執行處理非同步且並列地,進行編譯處理。藉此,本實施形態的仿真裝置1,能夠使得藉由仿真的軟體的執行高速化。
再者,本實施形態的仿真裝置1包括:藉由執行編譯程式330而進行產生處理的編譯處理器10、藉由執行仿真程式331而進行執行處理的仿真處理器20,但是,實現仿真裝置1的構成不限定於上述構成。例如,仿真裝置1亦可包括:作為執行產生處理的專用硬體的產生部(產生裝置)、作為進行執行處理的專用硬體之執行部(執行裝置)。
[第2實施例]
圖10為例示本申請案發明的第2實施形態之仿真裝置2之構成的方塊圖。本實施形態的說明中,關於與第1實施形態功能相同的構成要素,對於該構成要素標示與第1實施形態相同的號碼,並省略其詳細說明。
本實施形態的仿真裝置2,除了第1實施形態的仿真裝置1所具備的構成要素之外,還具備最適化處理器60。而且,在本實施形態的主記憶體30中的主機碼空間33中,記憶了對於第1實施形態的主記憶體30所記憶的編譯程式330追加一部分功能的編譯程式335。另外,本實施形態的主機碼空間33中,除了第1實施形態的主記憶體30中記憶的資訊之外,還記憶了最適化程式334。另外,本實施形態的主記憶體30 中的主機資料空間34中,記憶了對於第1實施形態的編譯完成軟體管理資訊343追加表示編譯完成軟體333-1到333-n的各個執行次數的資訊的編譯完成軟體管理資訊344。
編譯程式335為,執行藉由編譯仿真執行對象軟體310以產生作為編譯結果的軟體之處理(產生處理)的程式,其係由編譯處理器10執行。
本實施形態的編譯處理器10,藉由執行編譯程式335,除了第1實施形態的編譯處理器10執行的處理之外,還進行以下的處理。亦即,本實施形態的編譯處理器10,將指令資訊(程式碼)加入編譯完成軟體333-1到333-n中,其表示,在產生圖2例示的編譯完成軟體333-1到333-n時,在每次執行仿真時都更新其執行次數(計數),將已更新的執行次數記憶以作為編譯完成軟體管理資訊344的動作。藉此,本實施形態的仿真處理器20,在對仿真執行對象軟體310執行仿真時,針對編譯完成軟體333-1到333-n的各個更新其已執行的次數,並儲存於主記憶體30作為編譯完成軟體管理資訊344。
最適化程式334為,執行作為用已使仿真裝置2對仿真執行對象軟體310執行仿真的環境最適化(高速化)之處理的判斷處理及更新處理的程式,其係由最適化處理器60執行。
在此,所謂的判斷處理為,針對編譯完成軟體333-1到333-n的各個,判斷已執行仿真的次數是否滿足基準的處理。此基準為,例如,「為閾值以上」等。
上述更新處理為,已藉由判斷處理判斷編譯完成 軟體333-i(i為1到n之任一個整數)已執行的次數滿足基準的情況下,在編譯完成軟體333-i中,將Call指令(副程式讀出指令)更新為由該Call指令叫出的編譯仿真程式碼的處理。例如,更新處理為,圖2所示的編譯完成軟體333-1已執行的次數超過閾值的情況下,對於編譯完成軟體333-1,將叫出指令X、指令Y、及指令Z的編譯仿真程式碼之Call指令,置換為仿真程式碼群332所包含的指令X、指令Y、及指令Z的編譯仿真程式碼本身。
繼之,參照圖11A及11B的流程圖,詳細說明第2實施形態的仿真裝置2中的最適化處理器60的動作(處理)。
最適化處理器60,參照編譯完成軟體管理資訊344,針對編譯完成軟體333-i(i為1到n的任一個整數),確認仿真已執行的次數(步驟S401)。次數未達閾值的情況下(步驟S402中[否]),處理回到步驟S401。
次數為閾值以上的情況下(步驟S402中[是]),最適化處理器60,從編譯完成軟體管理資訊344所示的儲存位址取得編譯完成軟體333-i(步驟S403)。最適化處理器60,檢索編譯完成軟體333-i所包含的Call指令文(步驟S404)。Call指令文存在的情況下(步驟S405中[是]),最適化處理器60將該Call指令文更新為由該Call指令文叫出的編譯仿真程式碼(步驟S406),處理回到步驟S404。
Call指令文不存在的情況下(步驟S405中[否]),最適化處理器60將已更新的編譯完成軟體333-i儲存到主記憶體30(步驟S407)。最適化處理器60,鎖住編譯完成軟體管理 資訊343(步驟S408)。最適化處理器60,更新編譯完成軟體管理資訊343中的編譯完成軟體333-i的儲存位址(步驟S409)。最適化處理器60,將編譯完成軟體管理資訊343解鎖(步驟S410),處理回到步驟S401。
本實施形態的仿真裝置2能夠使得藉由仿真的軟體的執行高速化。其理由係如第1實施形態所說明。
另外,如第1實施形態所說明的,針對作為編譯對象的各指令,轉換為讀取仿真程式碼的副程式讀出指令藉此進行編譯處理的情況下,能夠縮短編譯處理的時間。但是,副程式讀出指令,隨著讀取仿真程式碼的處理,其執行時間變長。因此,具有如後的問題,針對藉由仿真而執行的次數多的指令,藉由編譯處理轉換為副程式讀出指令,成為藉由仿真之軟體的執行變慢的要因。
對於此種問題,第2實施形態的仿真裝置2中,編譯處理器10,產生編譯完成軟體群333,其具有計數藉由執行編譯程式335而由仿真執行次數並記憶於主記憶體30的功能。藉此,藉由仿真處理器20的編譯完成軟體333-1到333-n的各個被執行的次數,被記憶在主記憶體30中。本實施形態的最適化處理器60,當編譯完成軟體333-i已執行的次數為閾值以上的情況下,將編譯完成軟體333-i所包含的Call指令文更新為由該Call指令文叫出的編譯仿真程式碼。
亦即,本實施形態的仿真裝置2,針對執行次數未達閾值的指令加入Call指令文,針對執行次數為閾值以上的指令,產生將關於該指令的仿真程式碼直接加入的編譯完成軟體 群333。因此,本實施形態的仿真裝置2,使得各指令的編譯處理的時間、和該指令的執行時間平衡地縮短,藉此,能夠使得藉由仿真的軟體的執行高速化。
再者,本實施形態的仿真裝置2,具有藉由執行最適化程式334以進行判斷處理及更新處理的最適化處理器60,但實現仿真裝置2的構成不以上述構成為限。例如,仿真裝置2亦可具備作為進行判斷處理的專用硬體之判斷部(判斷裝置)、以及作為進行更新處理的專用硬體的更新部(更新裝置)。
[第3實施例]
圖12為表示本申請案發明的第3實施形態之仿真裝置3的構成之方塊圖。仿真裝置3具有記憶部70、及產生部80。
記憶部70將下列資訊關聯記憶:包含於仿真執行對象軟體71中,內含指令種別711和運算數712的指令資訊710、指令資訊710已編譯為可仿真的編譯完成指令資訊72、表示編譯完成指令資訊72的儲存位址的資訊73。
產生部80,將指令資訊710轉換為,從表示儲存位址的資訊73所示的儲存位址叫出與指令資訊710關聯的編譯完成指令資訊72的副程式讀出指令資訊。藉此,產生部80產生已將仿真執行對象軟體71編譯為可仿真的編譯完成軟體81。
本實施形態的仿真裝置3,能夠使得藉由仿真之軟體的執行高速化。其係由於記憶部70和產生部80具有以下的 功能之故。亦即,記憶部70中,關聯地記憶了仿真執行對象的指令資訊710、編譯完成指令資訊72、表示編譯完成指令資訊的儲存位址的資訊73。而且,產生部80,藉由將指令資訊710轉換為叫出編譯完成指令資訊72的副程式讀出指令資訊,產生已將仿真執行對象編譯為可仿真的編譯完成軟體81。
已基於實施例顯示及說明本發明,但本發明並不限制於上述實施例。以上實施形態所示的構成,係顯示本發明之內容的一例,亦可與其他公知的技術組合,只要不脫離本發明之要旨的範圍內,均可省略、變更構成的一部份。
Claims (9)
- 一種仿真裝置,其包括:記憶裝置,其使下列資訊關聯並記憶之:包含於仿真執行對象軟體中,內含指令種別和運算數的指令資訊、上述指令資訊已編譯為可仿真的編譯完成指令資訊、表示上述編譯完成指令資訊的儲存位址的資訊;產生裝置,將上述指令資訊轉換為從上述儲存位址叫出與上述指令資訊關聯的上述編譯完成指令資訊的副程式讀出指令資訊,藉此,產生已將上述仿真執行對象軟體編譯為可仿真的編譯完成軟體;判斷裝置,針對上述編譯完成軟體,判斷仿真已執行的次數是否到達基準;更新裝置,上述判斷裝置判斷為上述次數已達基準的情況下,在上述編譯完成軟體中,將上述副程式讀出指令資訊更新為、由上述副程式讀出指令資訊所叫出的上述編譯完成指令資訊。
- 如申請專利範圍第1項所記載的仿真裝置,上述記憶裝置中記憶了基於上述指令種別所示之值與上述運算數所示之值而產生的上述編譯完成指令資訊。
- 如申請專利範圍第1項所記載的仿真裝置,上述產生裝置,對於在上述仿真執行對象軟體中,被連續執行的2個上述指令資訊,在先行的上述指令資訊表示分岐指令以外的指令的情況下,接著上述先行的指令資訊,將後續的上述指令資訊轉換為上述副程式讀出指令資訊,上述先行的指令 資訊表示分岐指令的情況下,接著上述先行的指令資訊,插入作為上述編譯完成軟體的執行結束的指令之回復指令,如此以產生上述編譯完成軟體。
- 如申請專利範圍第1項所記載的仿真裝置,更包括執行裝置,其使用上述編譯完成軟體,執行上述仿真執行對象軟體的仿真;上述產生裝置,產生1以上的上述編譯完成軟體之後,將已產生的上述編譯完成軟體與關聯於上述編譯完成軟體的上述仿真執行對象軟體中的表示執行場所的指令指標所示之值相關聯,並記憶於上述記憶裝置,上述執行裝置,與上述指令指標所示之值關聯的上述編譯完成軟體已記憶於上述記憶裝置的情況下,從上述記憶裝置讀出並執行上述編譯完成軟體。
- 如申請專利範圍第4項所記載的仿真裝置,上述執行裝置,在與上述指令指標所示之值關聯的上述編譯完成軟體未記憶於上述記憶裝置的情況下,向上述產生裝置指示要產生上述指令指標所示的上述指令資訊編譯後的上述編譯完成軟體,並且,藉由翻譯方式執行上述指令指標所示的上述指令資訊的仿真;上述產生裝置,依照來自上述執行裝置的指示,產生上述指令指標所示的上述指令資訊編譯後的上述編譯完成軟體。
- 如申請專利範圍第5項所記載的仿真裝置,其中:上述執行裝置為對於上述產生裝置指示產生上述編譯完成 軟體的對象,將表示上述指令資訊的上述指令指標所示之值登錄在上述記憶裝置所包含的1以上的記入項目的任一者;上述產生裝置,產生登錄在上述記入項目的上述指令指標所示之值所特定的上述指令資訊編譯後的上述編譯完成軟體。
- 如申請專利範圍第1項所記載的仿真裝置,其中:上述產生裝置,針對上述編譯完成軟體,每當仿真執行時即更新上述次數,將表示把已更新的上述次數記憶於上述記憶裝置的動作的資訊追加於上述編譯完成軟體;上述判斷裝置參照記憶於上述記憶裝置的上述次數。
- 一種仿真方法,將包含於仿真執行對象軟體中,內含指令種別和運算數的指令資訊、上述指令資訊已編譯為可仿真的編譯完成指令資訊、表示上述編譯完成指令資訊的儲存位址的資訊關聯並記憶於記憶裝置的情況下,藉由資訊處理裝置,將上述指令資訊轉換為從上述儲存位址叫出與上述指令資訊關聯的上述編譯完成指令資訊的副程式讀出指令資訊,藉此,產生已將上述仿真執行對象軟體編譯為可仿真的編譯完成軟體;針對上述編譯完成軟體,判斷仿真已執行的次數是否到達基準;判斷為上述次數已達基準的情況下,在上述編譯完成軟體中,將上述副程式讀出指令資訊更新為、由上述副程式讀出指令資訊所叫出的上述編譯完成指令資訊。
- 一種儲存媒體,儲存用以使電腦執行下列處理的仿真程式,該電腦能夠存取使下列資訊關聯並記憶之記憶裝置:包含於仿真執行對象軟體中並內含指令種別和運算數的指令資訊、將上述指令資訊編譯為可仿真的編譯完成指令資訊、表示上述編譯完成指令資訊的儲存位址的資訊;該處理包括:產生處裡,將上述指令資訊轉換為從上述儲存位址叫出與上述指令資訊關聯的上述編譯完成指令資訊的副程式讀出指令資訊,藉此,產生已將上述仿真執行對象軟體編譯為可仿真的編譯完成軟體;判斷處理,針對上述編譯完成軟體,判斷仿真已執行的次數是否到達基準;更新處理,上述判斷處理判斷為上述次數已達基準的情況下,在上述編譯完成軟體中,將上述副程式讀出指令資訊更新為、由上述副程式讀出指令資訊所叫出的上述編譯完成指令資訊。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016160017A JP2018028777A (ja) | 2016-08-17 | 2016-08-17 | エミュレーション装置、エミュレーション方法、及び、エミュレーションプログラム |
JP2016-160017 | 2016-08-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201818237A TW201818237A (zh) | 2018-05-16 |
TWI691898B true TWI691898B (zh) | 2020-04-21 |
Family
ID=61191662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106124878A TWI691898B (zh) | 2016-08-17 | 2017-07-25 | 仿真裝置、仿真方法及儲存仿真程式的儲存媒體 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10268462B2 (zh) |
JP (1) | JP2018028777A (zh) |
TW (1) | TWI691898B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110717701B (zh) * | 2018-07-13 | 2024-04-12 | 阿里巴巴集团控股有限公司 | 仿真波次生成方法、装置及电子设备 |
US10884720B2 (en) | 2018-10-04 | 2021-01-05 | Microsoft Technology Licensing, Llc | Memory ordering annotations for binary emulation |
US10684835B1 (en) * | 2018-12-11 | 2020-06-16 | Microsoft Technology Licensing, Llc | Improving emulation and tracing performance using compiler-generated emulation optimization metadata |
US11029929B2 (en) * | 2019-01-24 | 2021-06-08 | Red Hat, Inc. | Using emulation to improve startup time for just-in-time compilation |
US11080400B2 (en) * | 2019-08-28 | 2021-08-03 | Palo Alto Networks, Inc. | Analyzing multiple CPU architecture malware samples |
CN113010227A (zh) * | 2021-03-18 | 2021-06-22 | 南京仁谷系统集成有限公司 | 一种基于模型驱动的仿真平台实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768593A (en) * | 1996-03-22 | 1998-06-16 | Connectix Corporation | Dynamic cross-compilation system and method |
US20070226714A1 (en) * | 2003-05-28 | 2007-09-27 | Shigenori Doi | Program execution control device, program execution control method, control program, and recording medium |
US7389500B2 (en) * | 2005-07-08 | 2008-06-17 | Microsoft Corporation | Selective pre-compilation of virtual code to enhance boot time emulator performance |
US20100169072A1 (en) * | 2008-12-29 | 2010-07-01 | Verizon Data Services India Private Limited | Multi-platform software application simulation systems and methods |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH06202877A (ja) * | 1992-12-28 | 1994-07-22 | Fujitsu Ltd | エミュレーション装置 |
JPH07210397A (ja) * | 1994-01-12 | 1995-08-11 | Hitachi Ltd | プログラム変換方法およびそれを用いたプログラム実行方法 |
JPH08123697A (ja) * | 1994-10-24 | 1996-05-17 | Nec Corp | エミュレーション高速化方式 |
US5751982A (en) * | 1995-03-31 | 1998-05-12 | Apple Computer, Inc. | Software emulation system with dynamic translation of emulated instructions for increased processing speed |
JP3339317B2 (ja) * | 1996-07-24 | 2002-10-28 | 日本電気株式会社 | 動的情報利用型プログラム最適化装置 |
JP3495230B2 (ja) * | 1997-06-30 | 2004-02-09 | Necマイクロシステム株式会社 | エミュレーション処理方式 |
JP2000231494A (ja) * | 1999-02-12 | 2000-08-22 | Mitsubishi Electric Corp | ソフトウェア実行システム及びソフトウェア実行方法 |
JP3605327B2 (ja) | 1999-11-18 | 2004-12-22 | 富士通株式会社 | プログラム実行装置 |
US20040003375A1 (en) * | 2002-06-28 | 2004-01-01 | George Jini S. | Method and system for combining dynamic instrumentation and instruction pointer sampling |
JP4701611B2 (ja) * | 2004-01-15 | 2011-06-15 | 株式会社日立製作所 | 動的変換方式のエミュレータ向けメモリ管理方法 |
JP2005346407A (ja) * | 2004-06-03 | 2005-12-15 | Hitachi Ltd | 動的コンパイルにおけるインライン展開実施方法 |
JP2007018254A (ja) * | 2005-07-07 | 2007-01-25 | Toshiba Corp | 言語処理装置 |
US7770163B2 (en) * | 2006-03-24 | 2010-08-03 | International Business Machines Corporation | Method of efficiently performing precise profiling in a multi-threaded dynamic compilation environment |
JP2010140233A (ja) * | 2008-12-11 | 2010-06-24 | Nec Computertechno Ltd | エミュレーションシステム及びエミュレーション方法 |
US10133655B1 (en) * | 2017-06-12 | 2018-11-20 | Sony Interactive Entertainment Inc. | Emulation of target system using JIT compiler and bypassing translation of selected target code blocks |
-
2016
- 2016-08-17 JP JP2016160017A patent/JP2018028777A/ja active Pending
-
2017
- 2017-07-21 US US15/656,108 patent/US10268462B2/en active Active
- 2017-07-25 TW TW106124878A patent/TWI691898B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5768593A (en) * | 1996-03-22 | 1998-06-16 | Connectix Corporation | Dynamic cross-compilation system and method |
US20070226714A1 (en) * | 2003-05-28 | 2007-09-27 | Shigenori Doi | Program execution control device, program execution control method, control program, and recording medium |
US7389500B2 (en) * | 2005-07-08 | 2008-06-17 | Microsoft Corporation | Selective pre-compilation of virtual code to enhance boot time emulator performance |
US20100169072A1 (en) * | 2008-12-29 | 2010-07-01 | Verizon Data Services India Private Limited | Multi-platform software application simulation systems and methods |
Also Published As
Publication number | Publication date |
---|---|
TW201818237A (zh) | 2018-05-16 |
US10268462B2 (en) | 2019-04-23 |
US20180052667A1 (en) | 2018-02-22 |
JP2018028777A (ja) | 2018-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI691898B (zh) | 仿真裝置、仿真方法及儲存仿真程式的儲存媒體 | |
US8381194B2 (en) | Methods and apparatuses for selective code coverage | |
US10459707B2 (en) | Instruction-set simulator and its simulator generation method | |
US20110047531A1 (en) | Methods and apparatuses for selective code coverage | |
JP4041248B2 (ja) | コンパイラ装置、コンパイルプログラムが記録されたコンピュータ読み取り可能な記録媒体及びコンパイル方法 | |
US10013244B2 (en) | Apparatus and method to compile a variadic template function | |
CN112667352A (zh) | 一种多cpu指令交叉编译统一构建方法、设备及介质 | |
CN114610364A (zh) | 应用程序更新、应用程序开发方法、装置及计算机设备 | |
US10545741B2 (en) | Information processing apparatus, method of compiling, and storage medium | |
Letychevskyi et al. | Fuzz Testing Technique and its Use in Cybersecurity Tasks | |
US11635947B2 (en) | Instruction translation support method and information processing apparatus | |
CN114706586A (zh) | 代码编译、代码运行方法、装置、计算机设备及存储介质 | |
US9836289B2 (en) | Executable code generation program and executable code generation device | |
CN114428603A (zh) | 一种基于编译器生成short和int类型指令的方法和系统 | |
Yuan et al. | Automatic enhanced CDFG generation based on runtime instrumentation | |
JP2007018313A (ja) | 回路設計プログラム、回路設計装置、回路設計方法 | |
Ittershagen et al. | A workload extraction framework for software performance model generation | |
JP2018121245A (ja) | 通信装置、通信仕様差分抽出方法及び通信仕様差分抽出プログラム | |
US9830174B2 (en) | Dynamic host code generation from architecture description for fast simulation | |
JP2007114934A (ja) | コンパイラシステム | |
JP2005228047A (ja) | 言語処理装置及び言語処理プログラム | |
CN114579135A (zh) | 一种安装包生成方法及装置 | |
CN114721664A (zh) | 一种编译方法及装置 | |
US8495539B1 (en) | Scheduling processes in simulation of a circuit design | |
WO2018163387A1 (ja) | 解析装置、解析方法及び解析プログラム |