專利名稱::具有自驅動功能的指令仿真解析系統(tǒng)及其實現(xiàn)方法
技術領域:
:本發(fā)明涉及一種仿真解析系統(tǒng),特別是一種具有自驅動功能的指令仿真解析系統(tǒng)及其解析方法。
背景技術:
:在完成嵌入式系統(tǒng)設計中,軟、硬件工作通常是同步進行的。但在硬件系統(tǒng)還未完成之前,非常需要一個虛擬的硬件環(huán)境來支持軟件系統(tǒng)工作,因此近年來對硬件環(huán)境的虛擬仿真技術得到了快速發(fā)展。我們所完成的指令仿真解析裝置屬于此范疇的工作。對嵌入式系統(tǒng)的硬件仿真模擬,首先是要對指定處理器的模擬,而對專用處理器的模擬沒有現(xiàn)成技術可借用,對處理器的模擬重要的是對處理器指令集動作的模擬,對專用的嵌入式處理器的指令集進行高效、靈活的指令解析。目前大部分虛擬機使用的指令解析模型是首先將二進制的指令流分解為單條指令,然后再對每條指令的指令碼進行檢索查詢,當查找到與指令碼相對應指令函數(shù)后,提交解析執(zhí)行。同時為了提高指令的查詢效率,還會采用對指令列表按指令的使用頻率排序的方法,即越常用的指令放置順序越靠前,以減少查詢時間。指令列表中的指令碼和解析函數(shù)間通常是采用映射(Mapping)的方式建立關聯(lián),其中絕大部分指令與解析函數(shù)采用一對一映射方式實現(xiàn)。這種指令解析模型中主要存在以下幾個問題1)查詢過程的時間復雜度高為了提高仿真效率可以通過數(shù)學統(tǒng)計和經(jīng)驗分析等方式,將常用指令(例如傳送指令、加法指令等)優(yōu)先放置。但程序鏡像對指令的實際訪問頻率是變化的,指令的使用頻率往往與程序要完成的具體任務有很大關系。從時間復雜度來看,查詢過程的時間復雜度是O(n)。當對較大規(guī)模的指令程序鏡像進行虛擬仿真時,仿真平臺的執(zhí)行效率將明顯下降。2)解析函數(shù)間的冗余程度高為了解析所有指令,通常需要建立解析函數(shù)陣列,分別完成不同的動作。但由于指令動作間存在關聯(lián),解析函數(shù)間往往存在冗余,主要體現(xiàn)在兩方面一是解析函數(shù)間存在著直接或間接的函數(shù)調用(Functioncall),二是解析函數(shù)間彼此存在很多重復性的代碼段(Codesegment)。冗余將直接導致指令解析的執(zhí)行效率下降,維護代價上升。因此在指令解析過程中存在著兩個瓶頸,一是查詢過程中,指令碼定位效率低,影響對指令流的快速解析;另一個是,指令解析幾乎完全依賴于人工編寫指令驅動函數(shù),解析方法的不靈活造成對指令集的維護代價大幅上升,同時對指令集的擴展能力較差,而且完成相關指令集的移植代價也非常高。
發(fā)明內容本發(fā)明的目的是解決現(xiàn)有傳統(tǒng)指令解析模型中存在的上述問題,提供一種全新的指令仿真解析方法,并以此為基礎建立仿真執(zhí)行系統(tǒng)中具有自驅動功能的指令仿真解析系統(tǒng),以便提高虛擬仿真器的指令仿真解析效率,提高系統(tǒng)的可適應性。本發(fā)明提供的具有自驅動功能的指令仿真解析系統(tǒng),包括指令邏輯控制器、硬件虛擬部件、指令預處理器及指令表,其中1)指令預處理器包括分別與預取控制單元雙向連接的通信單元、預處理單元和指令預取隊列;指令預處理器的預取控制單元通過其通信單元訪問硬件虛擬部件中的總線控制單元,并從硬件虛擬部件中的存儲器模擬單元中讀取一段指令流;然后預取控制單元再通過通信單元訪問指令表,讀取到已設定好的指令格式,并在預處理單元中進行指令流分解;分解后的指令流通過預取控制單元存放在指令預取隊列中,作為指令邏輯控制器的輸入信息;2)指令邏輯控制器包括分別與通信單元雙向連接的數(shù)字控制單元和邏輯控制單元,以及腳本解析單元和腳本語義定義單元;指令邏輯控制器通過其通信單元從指令預處理器的指令預取隊列中獲得經(jīng)過預處理的指令信息,通過指令邏輯控制器中的腳本解析單元進行解析;在腳本解析過程中需要不斷的通過指令表的通信單元獲取所需的指令描述信息;指令中的運算過程需要通過數(shù)字控制單元和邏輯控制單元完成;解析后的指令動作通過其通信單元提交出去,傳遞到硬件虛擬部件中做進一步的處理;3)硬件虛擬部件包括總線控制單元、硬件工作方式定義單元,以及分別與之雙向連接的存儲器模擬單元、寄存器模擬單元、堆棧模擬單元;總線控制單元對從指令預處理器中接收到的指令進行傳遞,根據(jù)指令內容完成對存儲器、寄存器、堆棧的模擬操作;為了準確地模擬硬件工作方式,對各硬件組件的訪問采用總線控制單元進行統(tǒng)一調度,并將模擬仿真結果反饋給上層的用戶程序負責完成對硬件模式及驅動方式的仿真工作;4)指令表包括相互連接的指令集定義單元和指令集存儲區(qū),以及與指令集存儲區(qū)雙向連接的通信單元;指令表主要用于保存指令描述信息,包括指令的格式、指令屬性、驅動方式,指令表是指令解析運行的規(guī)則性文件,不同的目標機系統(tǒng)將會有不同的指令表內容。一種具有自驅動功能的指令仿真解析系統(tǒng)的實現(xiàn)方法,該方法包括以下步驟(1)構建指令預處理器由指令預處理器完成指令處理前的讀取和分解工作;其中,通過通信單元、預取控制單元訪問到硬件虛擬部件的總線控制單元,從存儲器模擬單元中的指定位置讀取指令流;或通過預取控制單元訪問指令表,從中讀取目標機的指令格式;對獲得的信息在預處理單元中完成指令流分解;對分解后的指令流做簡單的解析,由預取控制單元存放在指令預取隊列中,為指令仿真解析系統(tǒng)提供輸入;(2)建立處理器級的內存管理機制為使指令仿真解析系統(tǒng)不受數(shù)據(jù)存儲方式的限制,在虛擬硬件仿真部件中須設計存儲器模擬單元,該單元在裝載字節(jié)碼的時候,根據(jù)配置信息將多字節(jié)數(shù)據(jù)轉換為目標機上的存儲格式;(3)構建處理器工作模式切換機制即建立目標機的硬件虛擬部件;為了增加系統(tǒng)靈活性,在該部件中需要建立處理器工作模式切換機制;即為使系統(tǒng)同時支持基于寄存器和基于堆棧兩種工作模式,需要在硬件虛擬中分別對兩種工作模式進行模擬,通過歸納兩種處理器工作模式的特性,定義處理器的描述語言(ProcessorDefinitionLanguage)并通過硬件虛擬部件中的總線控制單元供給其它模塊使用;(4)構建相應的虛擬指令集格式即在完成了對目標機硬件的虛擬部件后,以此為基礎建立指令表描述,指令表描述的作用是通過指令集定義規(guī)則實現(xiàn)對不同指令表的統(tǒng)一描述,當指令系統(tǒng)的指令條數(shù)大于28時,通過建立Hash索引結構在保證性能的同時不占用過多索引存儲結構;(5)構建指令邏輯控制器即指令在指令表中存儲的特征字段是腳本序列生成的基礎,屬于同一指令系下的指令,其腳本序列采用同一模板生成;腳本模板描述了與硬件驅動直接相關的關鍵動作,包括操作數(shù)的讀寫規(guī)則、尋址方式、數(shù)據(jù)源、使用的總線、及運算規(guī)則,在指令邏輯控制器中包括腳本語義定義單元和腳本解析單元,分步實現(xiàn)指令的邏輯控制。本發(fā)明的優(yōu)點及效果本發(fā)明的效果是從完成指令解析性能看,這種指令解析裝置消除了傳統(tǒng)指令解析過程中的瓶頸問題,其優(yōu)點是第一、指令碼查詢過程的時間復雜度降低至O(1);第二、解決了解析函數(shù)間彼此關聯(lián)性強的矛盾;第三、腳本方式的靈活性使對指令系統(tǒng)的維護變得非常容易;第四、提供更加安全的訪問機制,如對指令系統(tǒng)的統(tǒng)一訪問、腳本認證等。事實上,安全機制不僅體現(xiàn)在指令解析模式中,在仿真系統(tǒng)中要設計一套完整的安全機制保證模擬系統(tǒng)的正常運行。從結構設計角度看,新的指令解析器提出了指令表驅動的模型。為軟、硬件開發(fā)人員溝通建立了良好的媒介,指令表是實現(xiàn)指令解析系統(tǒng)自驅動的核心數(shù)據(jù)結構?;谥噶畋淼尿寗幽J?,使系統(tǒng)的執(zhí)行流程更為清晰。從實現(xiàn)功能角度看,新的指令解析模式具有易實現(xiàn)、易維護、易修訂、易擴展等優(yōu)點。圖1為本發(fā)明的指令解析系統(tǒng)結構示意圖;圖2為本發(fā)明的指令解析系統(tǒng)的設計層次示意圖;圖3為本發(fā)明的硬件仿真的內部工作方式示意圖;圖4為本發(fā)明的一種實現(xiàn)基于指令表自驅動的指令解析模型示意圖。具體實施方式實施例1解析系統(tǒng)本發(fā)明提供的具有自驅動功能的指令仿真解析系統(tǒng)包括指令邏輯控制器、硬件虛擬部件、指令表和指令預處理器。本系統(tǒng)可以完成多種指令集的仿真解析,并可適應多種處理器內部機制的改變,為目標機代碼的虛擬運行提供保證,是嵌入式系統(tǒng)設計中的一個核心工具。其中(參見圖1)1)指令預處理器包括分別與預取控制單元雙向連接的通信單元、預處理單元和指令預取隊列;指令預處理器的預取控制單元通過其通信單元訪問硬件虛擬部件中的總線控制單元,并從硬件虛擬部件中的存儲器模擬單元中讀取一段指令流;然后預取控制單元再通過通信單元訪問指令表,讀取到已設定好的指令格式,并在預處理單元中進行指令流分解;分解后的指令流通過預取控制單元存放在指令預取隊列中,作為指令邏輯控制器的輸入信息;2)指令邏輯控制器包括分別與通信單元雙向連接的數(shù)字控制單元和邏輯控制單元,以及腳本解析單元和腳本語義定義單元;指令邏輯控制器通過其通信單元從指令預處理器的指令預取隊列中獲得經(jīng)過預處理的指令信息,通過指令邏輯控制器中的腳本解析單元進行解析;在腳本解析過程中需要不斷的通過指令表的通信單元獲取所需的指令描述信息;指令中的運算過程需要通過數(shù)字控制單元和邏輯控制單元完成;解析后的指令動作通過其通信單元提交出去,傳遞到硬件虛擬部件中做進一步的處理;3)硬件虛擬部件包括總線控制單元、硬件工作方式定義單元,以及分別與之雙向連接的存儲器模擬單元、寄存器模擬單元、堆棧模擬單元;總線控制單元對從指令預處理器中接收到的指令進行傳遞,根據(jù)指令內容完成對存儲器、寄存器、堆棧的模擬操作;為了準確地模擬硬件工作方式,對各硬件組件的訪問采用總線控制單元進行統(tǒng)一調度,并將模擬仿真結果反饋給上層的用戶程序負責完成對硬件模式及驅動方式的仿真工作;4)指令表包括相互連接的指令集定義單元和指令集存儲區(qū),以及與指令集存儲區(qū)雙向連接的通信單元;指令表主要用于保存指令描述信息,包括指令的格式、指令屬性、驅動方式,指令表是指令解析運行的規(guī)則性文件,不同的目標機系統(tǒng)將會有不同的指令表內容。在本系統(tǒng)中,對指令流的解析分三個階段完成,即系統(tǒng)初始化、指令解析及指令仿真。對單條指令的解析過程可以直接由圖1中給出的四個部件協(xié)作完成,其中指令預處理過程和指令解析過程可實現(xiàn)并行工作。系統(tǒng)中對指令的處理過程及信息流描述如下在系統(tǒng)運行時首先進行系統(tǒng)初始化,在初始化階段主要完成對硬件虛擬部件、指令表及指令邏輯控制器的初始配置和指令處理規(guī)則裝載;初始化后硬件虛擬部件中包含了目標處理器的工作方式、總線結構,以及存儲器、寄存器、堆棧的工作方式及結構;指令表中包括目標機指令集的格式、指令屬性、驅動方式等描述;指令邏輯控制器中包括通用指令的工作腳本、自定義指令的工作腳本等內容。系統(tǒng)初始化完成后指令預處理器開始工作,它通過預取控制單元的通信單元訪問硬件虛擬部件中的總線控制單元,從存儲器模擬單元中讀取一段指令流,然后再通過訪問指令表讀取指令格式,并由預處理單元將指令流分解,分解后的指令由預取控制單元存放在指令預取隊列中,供指令邏輯控制器使用。指令邏輯控制器從指令預處理器獲得經(jīng)過預處理的指令信息,通過腳本解析單元進行解析;腳本解析中所需的指令信息通過指令表的通信單元獲取。指令的運算過程通過數(shù)字控制單元和邏輯控制單元完成;解析后的指令動作通過通信單元提交到硬件虛擬部件的總線控制單元中,總線控制單元可以驅動硬件虛擬部件中的其他處理單元實現(xiàn)對存儲器、寄存器、堆棧等硬件的仿真操作。在硬件虛擬部件中為了準確地模擬硬件工作方式,對各硬件組件的訪問采用總線控制單元進行統(tǒng)一調度,并將模擬仿真結果反饋給上層的用戶程序。在實現(xiàn)中采用控制類動作由控制總線調度,讀寫類動作由數(shù)據(jù)總線調度的方法實現(xiàn)。在系統(tǒng)構建與實施中,主要工作是實現(xiàn)將與硬件相關的部分及指令解析與仿真執(zhí)行驅動機制封裝到一個完整的系統(tǒng)中(如圖1所示)。為實現(xiàn)指令解析的自驅動過程,本發(fā)明內部包含一個自控制機制,它協(xié)助系統(tǒng)完成調度與運行。每執(zhí)行一條指令時,系統(tǒng)從指令預處理器中讀取一條待解析的指令單元,當完成指令的解析與處理后向上層輸出指令解析與執(zhí)行結果,接著準備開始下一條指令的執(zhí)行。為提高指令讀取的效率,我們將指令預處理器放在指令流提交前,對指令流進行初步的處理。預處理的意義在于一方面,采用指令流水線的思想,使指令的預取和處理過程能夠并行處理;另一方面,將指令語義解析的部分動作交付給預處理單元完成,這樣可以平衡指令讀取和指令處理操作之間的時間不匹配問題,進一步提高仿真并行處理的效率。這個過程在圖3中給出了說明。圖中標出的“虛擬機控制機”是與本系統(tǒng)相關聯(lián)的上層部件,本系統(tǒng)與其有輸入和輸出連接端口,在系統(tǒng)內部指令解析請求與指令預取請求可以并行發(fā)送,而目在系統(tǒng)中也可以獨立完成。在本發(fā)明技術方案的設計中,我們將嵌入式系統(tǒng)中的常用指令分為三類1)運算型指令以計算、傳送為目的的指令,約占六至七成。例如算術指令、傳送指令、測試指令,等等。運算型指令的解析過程大致包括取值、運算、寫值幾個步驟。2)跳轉類指令以判斷轉移為目的的指令,約占一至兩成。例如條件轉移、判零轉移,等等。跳轉型指令的解析過程大致包括取值、生成判定條件、判定結果幾個步驟。3)其他指令與特定處理器密切相關的指令,約占一至兩成。例如中斷處理、堆棧指令、組合指令,等等。在系統(tǒng)中設計基本腳本動作庫,系統(tǒng)中的絕大部分規(guī)則指令,都可以使用庫中的一個相關腳本動作組合來實現(xiàn)。腳本庫中的基本腳本動作包括1)讀取值過程,從仿真硬件設備中讀,這些仿真設備可能是存儲器、寄存器或者外部設備;2)計算運算過程,將已經(jīng)讀取到的數(shù)據(jù)按照指令事先約定的方式運算;3)寫寫值過程,將結果寫回到仿真硬件設備中;4)配置配置特殊寄存器,可能是標志寄存器、控制寄存器等;5)判定僅用于跳轉型指令,生成判定條件并判定結果。根據(jù)指令的這些特征,本發(fā)明提出一種新的指令仿真解析系統(tǒng),即依據(jù)“基于指令表的指令自驅動解析模型”(Instructiontablebasedauto-driveparsemodel)完成系統(tǒng)設計。在本指令解析系統(tǒng)中,除指令系統(tǒng)特有的屬性外,絕大部分對指令集的描述可以通過調整配置信息的方式進行定義。當指令通過腳本動作的方式配置完成后,即可以實現(xiàn)動態(tài)模式的自解析過程。本系統(tǒng)可以解決傳統(tǒng)指令解析中的瓶頸問題,大幅提升指令解析的實現(xiàn)性能。實施例2解析系統(tǒng)的實現(xiàn)方法在實現(xiàn)指令仿真自驅動解析系統(tǒng)時,應采用分層體系結構完成設計,系統(tǒng)可分成三個層面,即解析驅動層、指令系統(tǒng)層及硬件抽象層,如圖2中的右側所示。在硬件抽象層中主要包括針對目標機硬件的管理內容,如內存存儲方式的管理、處理器執(zhí)行模式的管理;這一層可以起到硬件仿真與具體硬件相分離的作用,為系統(tǒng)以適應不同的硬件執(zhí)行環(huán)境打下良好基礎。在指令系統(tǒng)層中包含有指令系統(tǒng)定義、腳本語義定義、指令表定義等功能,它們給出了與指令描述規(guī)則、指令執(zhí)行規(guī)則有關的控制和說明信息。在解析驅動層包括了腳本定義、腳本驅動、腳本管理等功能,這些功能構成了指令解析中的邏輯控制方式與規(guī)則,是指令解析、指令運算的實體。按照本發(fā)明中給出的設計方案可以實現(xiàn)根據(jù)不同的用戶程序在一套虛擬仿真運行平臺上實現(xiàn)對不同指令集、不同處理器的存儲方式、不同處理器的工作方式的指令解析與虛擬仿真運行。這種處理機制的結構如圖2中左側部分所表示。本發(fā)明技術方案的實現(xiàn),具體完成以下的設計步驟1.構建指令預處理器;指令預處理器的功能是在指令處理之前首先對指令進行讀取和分解操作。在指令預處理器中可以通過通信單元、預取控制單元訪問到硬件虛擬部件的總線控制單元;還可以從存儲器模擬單元中的指定位置上讀取指令流;同時還可以通過預取控制單元訪問指令表,從中讀取目標機的指令格式;對獲得的信息在預處理單元中完成指令流分解;對分解后的指令流做簡單的解析,由預取控制單元存放在指令預取隊列中,為指令仿真解析系統(tǒng)提供輸入,如圖1所示。2.建立處理器級的內存管理機制;因為多字節(jié)數(shù)據(jù)值在內存中通常有兩種存放方式Big-endian(譯作大結尾,或降序)方式和Little-endian(譯作小結尾,或升序)方式。多字節(jié)數(shù)據(jù)的存儲方式取決于所使用的硬件平臺。例如,Intel公司的32位處理器家族使用的都是Little-endian存儲方式。Big-endian則被一些嵌入式處理器選用,另外,TCP/IP等網(wǎng)絡協(xié)議也要求傳輸信息必須符合Big-endian格式。為使仿真系統(tǒng)不受數(shù)據(jù)存儲方式的限制,在虛擬硬件仿真部件中須設計存儲器模擬單元。該模塊在裝載字節(jié)碼的時候,根據(jù)目標機的配置信息實現(xiàn)將多字節(jié)數(shù)據(jù)轉換為目標機上的存儲格式。3.構建處理器工作模式切換機制;CPU通常可以分為基于寄存器和基于堆棧兩種工作模式?;诩拇嫫鞯腃PU,如Intel公司的Pentium芯片,有8個用來完成基本運算的32位寄存器?;诙褩5腃PU,如Harris半導體公司的RTX32P芯片,有兩個用來完成基本運算的片上堆棧。兩種處理器工作模式各有特點,基本特點如表1所述。表1、基于寄存器和基于堆棧的CPU工作模式為使指令仿真解析系統(tǒng)可以同時支持處理器的多種工作模式,在硬件抽象層分別就兩種工作模式進行了模擬。通過歸納兩種處理器工作模式的特性,定義專用的處理器描述語言(ProcessorDefinitionLanguage)并通過接口的方式為上層提供服務。這樣做的優(yōu)勢在于,采用統(tǒng)一接口的方式使處理器與內存之間的數(shù)據(jù)訪問差異被消除,當面對不同的處理器模式時,可通過預留的接口完成對處理器工作模式的配置。4.構建相應的虛擬指令集格式;即在完成了對目標機硬件的抽象后,以此為基礎建立指令表描述,指令表描述的作用是可以通過指令集定義規(guī)則實現(xiàn)對不同指令表的統(tǒng)一描述。對指令集的描述又分為對格式的定義和對語義的定義。指令格式的描述信息存儲在指令表中。指令表由指令碼、指令長、操作數(shù)格式(長度、尋址方式等)、訪問模式、指令系等與指令格式和指令解析相關的核心數(shù)據(jù)結構組成。系統(tǒng)初始化時,將讀取指令表的信息以初始化指令系統(tǒng),同時建立索引結構加快訪問速度。一張經(jīng)過定義后的指令表主要包含表2中描述的內容。表2、定義后的指令表基本項這種指令系統(tǒng)構建方法有以下特點在指令數(shù)較少(不超過28)時,直接建立以指令碼為關鍵碼的線性索引結構可以保證系統(tǒng)能夠以O(1)的時間復雜度快速定位指令碼。當指令系統(tǒng)的指令條數(shù)較多(超過28)時,可以通過建立Hash索引結構在保證性能的同時不占用過多索引存儲結構。5.構建指令邏輯控制器;即指令在指令表中存儲的特征字段是腳本序列生成的基礎,屬于同一指令系下的指令,其腳本序列采用同一模板生成。腳本模板描述了操作數(shù)的讀寫規(guī)則、尋址方式、數(shù)據(jù)源、使用的總線、運算規(guī)則等與硬件驅動直接相關的關鍵動作,在指令邏輯控制器中包括腳本語義定義單元和腳本解析單元分步實現(xiàn)指令的邏輯控制。在圖3中還給出了指令解析中的并行處理方法,其中“虛擬機控制機”是調用本系統(tǒng)的上層部件,它與本系統(tǒng)有標準的輸入和輸出端口;圖中表示的指令解析過程說明在系統(tǒng)內部指令解析請求與指令預取請求可以并行發(fā)送,這些操作在系統(tǒng)中也是獨立完成的。當指令的含義由腳本序列完成定義后,便可以通過硬件虛擬部件完成指令動作的仿真了。下面以具體執(zhí)行步驟說明本系統(tǒng)的工作方式。在完成嵌入式系統(tǒng)設計中,軟、硬件工作通常是同步進行的。但在硬件系統(tǒng)還未完成之前,非常需要一個虛擬的硬件環(huán)境來支持軟件系統(tǒng)設計工作。為了實現(xiàn)目標機的功能,首先要在宿主機中進行大量的工作,如程序編寫、編譯、鏈接,這些需要在宿主機的交叉編譯環(huán)境中完成(不屬于本專利所闡述內容)。當完成交叉編譯鏈接后,生成目標機的可執(zhí)行碼。這些代碼還不能直接送入目標機中運行,因為也許這時目標機的硬件還未完成,或者是硬件系統(tǒng)還未經(jīng)過驗證,無法保證程序的正確執(zhí)行。這時需要在宿主機上仿真調試,祛除掉所有的邏輯錯誤和大部分的執(zhí)行錯誤,然后再通過通信端口傳遞到目標機中運行,這個執(zhí)行過程如圖4所示。指令解析過程的自驅動工作流程包含如下步驟1)系統(tǒng)初始化當用戶程序啟動后,系統(tǒng)從指令表中讀取與指令解析相關的字段信息,完成對硬件虛擬部件、指令表及指令邏輯控制器的初始配置和指令處理規(guī)則裝載,做好指令解析的前期準備;2)指令預處理從指令存儲區(qū)中讀取指令,并進行初步的分析和分解;3)指令解析及腳本序列生成根據(jù)預處理的結果對選中的指令系進行腳本序列生成,參照類型模板和操作方式完成此項工作;腳本序列是用來描述指令動作的,它可以作為輸入提交給虛擬硬件部件完成對二進制指令流的仿真。4)指令動作腳本仿真執(zhí)行指令動作腳本序列根據(jù)指令在指令表中的描述自動生成,腳本序列的執(zhí)行結果傳遞給上層調用系統(tǒng),通過系統(tǒng)判斷得到執(zhí)行效果,由執(zhí)行效果決定下一步完成什么工作。圖4中所描述的宿主機是指令解析及虛擬運行的基礎硬件,在其上構建了虛擬仿真調試環(huán)境,其中包括建立目標機指令解析及硬件仿真執(zhí)行系統(tǒng);其中標注的多個目標機說明本系統(tǒng)可支持多種嵌入式系統(tǒng),通過將目標機的指令傳遞給指令仿真解析系統(tǒng),完成目標機的指令解析和重構過程,然后再將解析后的指令傳遞給虛擬硬件模塊,由它完成目標機的仿真調試。當程序的大部分錯誤都被修正后,再將正確的目標機代碼通過通信口傳遞給目標機運行。這樣可以達到縮短嵌入式系統(tǒng)設計周期,在設計中采用軟硬件協(xié)同設計方法快速調整設計方案,有效地提高系統(tǒng)設計質量。權利要求1.一種具有自驅動功能的指令仿真解析系統(tǒng),其特征是該系統(tǒng)包括指令邏輯控制器、硬件虛擬部件、指令預處理器及指令表,其中1)指令預處理器包括分別與預取控制單元雙向連接的通信單元、預處理單元和指令預取隊列;指令預處理器的預取控制單元通過其通信單元訪問硬件虛擬部件中的總線控制單元,并從硬件虛擬部件中的存儲器模擬單元中讀取一段指令流;然后預取控制單元再通過通信單元訪問指令表,讀取到已設定好的指令格式,并在預處理單元中進行指令流分解;分解后的指令流通過預取控制單元存放在指令預取隊列中,作為指令邏輯控制器的輸入信息;2)指令邏輯控制器包括分別與通信單元雙向連接的數(shù)字控制單元和邏輯控制單元,以及腳本解析單元和腳本語義定義單元;指令邏輯控制器通過其通信單元從指令預處理器的指令預取隊列中獲得經(jīng)過預處理的指令信息,通過指令邏輯控制器中的腳本解析單元進行解析;在腳本解析過程中需要不斷的通過指令表的通信單元獲取所需的指令描述信息;指令中的運算過程需要通過數(shù)字控制單元和邏輯控制單元完成;解析后的指令動作通過其通信單元提交出去,傳遞到硬件虛擬部件中做進一步的處理;3)硬件虛擬部件包括總線控制單元、硬件工作方式定義單元,以及分別與之雙向連接的存儲器模擬單元、寄存器模擬單元、堆棧模擬單元;總線控制單元對從指令預處理器中接收到的指令進行傳遞,根據(jù)指令內容完成對存儲器、寄存器、堆棧的模擬操作;為了準確地模擬硬件工作方式,對各硬件組件的訪問采用總線控制單元進行統(tǒng)一調度,并將模擬仿真結果反饋給上層的用戶程序負責完成對硬件模式及驅動方式的仿真工作;4)指令表包括相互連接的指令集定義單元和指令集存儲區(qū),以及與指令集存儲區(qū)雙向連接的通信單元;指令表主要用于保存指令描述信息,包括指令的格式、指令屬性、驅動方式,指令表是指令解析運行的規(guī)則性文件,不同的目標機系統(tǒng)將會有不同的指令表內容。2.一種權利要求1所述的具有自驅動功能的指令仿真解析系統(tǒng)的實現(xiàn)方法,其特征是該方法包括以下步驟(1)構建指令預處理器由指令預處理器完成指令處理前的讀取和分解工作;其中,通過通信單元、預取控制單元訪問到硬件虛擬部件的總線控制單元,從存儲器模擬單元中的指定位置讀取指令流;或通過預取控制單元訪問指令表,從中讀取目標機的指令格式;對獲得的信息在預處理單元中完成指令流分解;對分解后的指令流做簡單的解析,由預取控制單元存放在指令預取隊列中,為指令仿真解析系統(tǒng)提供輸入;(2)建立處理器級的內存管理機制為使指令仿真解析系統(tǒng)不受數(shù)據(jù)存儲方式的限制,在虛擬硬件仿真部件中須設計存儲器模擬單元,該單元在裝載字節(jié)碼的時候,根據(jù)配置信息將多字節(jié)數(shù)據(jù)轉換為目標機上的存儲格式;(3)構建處理器工作模式切換機制即建立目標機的硬件虛擬部件;為了增加系統(tǒng)靈活性,在該部件中需要建立處理器工作模式切換機制;即為使系統(tǒng)同時支持基于寄存器和基于堆棧兩種工作模式,需要在硬件虛擬中分別對兩種工作模式進行模擬,通過歸納兩種處理器工作模式的特性,定義處理器的描述語言(ProcessorDefinitionLanguage)并通過硬件虛擬部件中的總線控制單元供給其它模塊使用;(4)構建相應的虛擬指令集格式即在完成了對目標機硬件的虛擬部件后,以此為基礎建立指令表描述,指令表描述的作用是通過指令集定義規(guī)則實現(xiàn)對不同指令表的統(tǒng)一描述,當指令系統(tǒng)的指令條數(shù)大于28時,通過建立Hash索引結構在保證性能的同時不占用過多索引存儲結構;(5)構建指令邏輯控制器即指令在指令表中存儲的特征字段是腳本序列生成的基礎,屬于同一指令系下的指令,其腳本序列采用同一模板生成;腳本模板描述了與硬件驅動直接相關的關鍵動作,包括操作數(shù)的讀寫規(guī)則、尋址方式、數(shù)據(jù)源、使用的總線、及運算規(guī)則,在指令邏輯控制器中包括腳本語義定義單元和腳本解析單元,分步實現(xiàn)指令的邏輯控制。全文摘要具有自驅動功能的指令仿真解析系統(tǒng)及實現(xiàn)方法。該系統(tǒng)包括指令邏輯控制器,完成指令解析、生成腳本序列信息等控制;硬件虛擬部件,完成對硬件模式及驅動方式的仿真工作;指令預處理器,完成指令處理前的讀取和分解,將分解后的指令放在指令預取隊列中,供指令邏輯控制器使用;指令表,保存目標機指令集的格式、屬性、驅動方式等描述信息。其實現(xiàn)方法包括構建指令預處理器、建立處理器級的內存管理機制、構建處理器工作模式切換機制、構建相應的虛擬指令集格式和構建指令邏輯控制器。本發(fā)明指令碼查詢過程的時間復雜度降低至O(1);解決了解析函數(shù)間彼此關聯(lián)性強的矛盾;腳本方式的靈活性使對指令系統(tǒng)的維護變得非常容易;提供了更加安全的訪問機制。文檔編號G06F9/30GK1975693SQ20061013010公開日2007年6月6日申請日期2006年12月13日優(yōu)先權日2006年12月13日發(fā)明者張紅光,宋錚,李福才,陳正申請人:南開大學