專利名稱:一種用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換直通通道方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器仿真模型,操作系統(tǒng)系統(tǒng)調(diào)用,目標(biāo)軟件仿真和調(diào)試等 技術(shù)領(lǐng)域,尤其涉及一種用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換的直通通道方法。
背景技術(shù):
在基于微處理器的嵌入式系統(tǒng)開發(fā)中,處理器仿真模型是個(gè)重要的評(píng)估工 具。它能夠模擬目標(biāo)處理器硬件執(zhí)行目標(biāo)程序的過(guò)程,統(tǒng)計(jì)目標(biāo)程序運(yùn)行過(guò)程 中所消耗的時(shí)鐘周期數(shù)、目標(biāo)處理器內(nèi)部寄存器實(shí)時(shí)狀態(tài)、流水線信息、內(nèi)部 各個(gè)執(zhí)行單元的工作負(fù)荷等目標(biāo)處理器運(yùn)行時(shí)的詳細(xì)動(dòng)態(tài)信息。它使得嵌入式 系統(tǒng)架構(gòu)設(shè)計(jì)人員和嵌入式系統(tǒng)軟件設(shè)計(jì)人員在目標(biāo)處理器硬件實(shí)現(xiàn)之前就 可以以較小的工作量,較快的速度,較高的精確度對(duì)嵌入式系統(tǒng)設(shè)計(jì)空間進(jìn)行 有效搜索,快速平衡嵌入式軟件和硬件的任務(wù)劃分,進(jìn)而改進(jìn)系統(tǒng)設(shè)計(jì),縮短 迭代周期,提高設(shè)計(jì)的效率和質(zhì)量。同時(shí),嵌入式處理器硬件設(shè)計(jì)人員依據(jù)時(shí) 鐘精確的處理器仿真模型進(jìn)行硬件處理器的設(shè)計(jì)和修改,和系統(tǒng)軟件人員并行 工作,從而做到了軟硬件協(xié)同設(shè)計(jì),提高了嵌入式系統(tǒng)的開發(fā)效率。具體內(nèi)容 可參見參考文獻(xiàn)1。
處理器仿真模型一般由高級(jí)程序語(yǔ)言編寫而成(一般為c/c十+語(yǔ)言),是
一個(gè)運(yùn)行于主機(jī)上的嵌入式系統(tǒng)評(píng)估平臺(tái)。對(duì)主機(jī)而言,它是一個(gè)普通的應(yīng)用
程序;但是對(duì)用戶而言,它是一個(gè)嵌入式目標(biāo)系統(tǒng)的仿真平臺(tái)。
在處理器仿真模型上運(yùn)行的是各種面向特定應(yīng)用領(lǐng)域的目標(biāo)程序,它們被 用來(lái)評(píng)估、檢測(cè)和統(tǒng)計(jì)目標(biāo)處理器的性能指標(biāo),為嵌入式系統(tǒng)架構(gòu)設(shè)計(jì)和軟硬 件任務(wù)劃分提供可靠的依據(jù)。目標(biāo)程序一般由高級(jí)程序語(yǔ)言編寫而成(一般為
(:化++語(yǔ)言)。在處理器仿真模型上運(yùn)行目標(biāo)代碼,按照傳統(tǒng)的方法,需要一個(gè)
操作系統(tǒng)運(yùn)行于該仿真模型的平臺(tái)之上,在該操作系統(tǒng)平臺(tái)上運(yùn)行目標(biāo)程序。 雖然運(yùn)行操作系統(tǒng)可以使目標(biāo)程序得到完善的支持,提高目標(biāo)程序運(yùn)行的可靠 性和可移植性,但運(yùn)行操作系統(tǒng)不僅帶來(lái)了額外的仿真開銷,增加了目標(biāo)程序
的運(yùn)行時(shí)間;而且其產(chǎn)生的結(jié)果在某些時(shí)候會(huì)影響目標(biāo)程序的評(píng)估結(jié)果,使得 目標(biāo)程序的真實(shí)運(yùn)行信息被掩蓋,失去目標(biāo)程序的意義。而如果擯棄操作系統(tǒng) 在處理器仿真模型上直接運(yùn)行目標(biāo)裸程序,就會(huì)涉及到許多底層操作和修改, 顯然這會(huì)破壞目標(biāo)程序的可靠性和可移植性,影響目標(biāo)程序的快速仿真和嵌入
式系統(tǒng)的高效開發(fā)。因此對(duì)于嵌入式系統(tǒng)開發(fā)人員來(lái)說(shuō),迫切需要找到一種既 不影響目標(biāo)程序的運(yùn)行信息,也不增加額外的仿真開銷,又可以直接進(jìn)行快速
仿真評(píng)估的方法。
在計(jì)算機(jī)系統(tǒng)中,系統(tǒng)調(diào)用是計(jì)算機(jī)操作系統(tǒng)的核心內(nèi)容之一。運(yùn)行在操 作系統(tǒng)之上的目標(biāo)程序發(fā)出的底層操作請(qǐng)求正是通過(guò)它得到實(shí)現(xiàn)的。它不僅可 以將應(yīng)用程序?qū)τ?jì)算機(jī)硬件的訪問(wèn)請(qǐng)求傳達(dá)到計(jì)算機(jī)硬件設(shè)備,控制其完成指
定的操作,并將操作結(jié)果反饋給應(yīng)用程序;而且可以對(duì)系統(tǒng)軟件資源進(jìn)行管理、 調(diào)度和優(yōu)化,提高系統(tǒng)的執(zhí)行效率。具體內(nèi)容可參見參考文獻(xiàn)2。在處理器仿 真模型中,通過(guò)對(duì)系統(tǒng)調(diào)用進(jìn)行轉(zhuǎn)換和映射,可以取代運(yùn)行操作系統(tǒng)而使目標(biāo) 程序獲得良好的支持,從而實(shí)現(xiàn)目標(biāo)程序在處理器仿真模型上快速和準(zhǔn)確的仿 真。目前存在的處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換方法, 一般都采用在處理器 異常服務(wù)子程序中對(duì)目標(biāo)程序的系統(tǒng)調(diào)用進(jìn)行轉(zhuǎn)換的方法,這種方法需要處理 器頻繁地進(jìn)行上下文切換,進(jìn)入異常服務(wù)子程序后才能進(jìn)行系統(tǒng)調(diào)用的轉(zhuǎn)換, 導(dǎo)致系統(tǒng)調(diào)用轉(zhuǎn)換的效率低,代碼復(fù)雜,可移植性和可擴(kuò)展性都比較差。 參考文獻(xiàn)
1. 馬鵬,徐國(guó)強(qiáng).微處理器仿真技術(shù)研究.計(jì)算機(jī)工程,2003年29巻2 期:213-214,260;
2. Abraham Silberschatz,Peter Baer Galvin,Greg Gagne著,鄭扣根譯.操作系 統(tǒng)概念(第六版翻譯版).高等教育出版社,2004年。
發(fā)明內(nèi)容
本發(fā)明的目的是為了提高處理器仿真模型中系統(tǒng)調(diào)用轉(zhuǎn)換的效率,降低其 轉(zhuǎn)換實(shí)現(xiàn)的復(fù)雜度,實(shí)現(xiàn)目標(biāo)程序在模擬平臺(tái)上的快速評(píng)估和調(diào)試,提供一種 用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換直通通道方法。
目標(biāo)程序源代碼經(jīng)過(guò)處理器的軟件工具鏈的處理后,其中的系統(tǒng)調(diào)用請(qǐng)求 最終都體現(xiàn)為系統(tǒng)調(diào)用異常指令的形式,由處理器仿真模型進(jìn)行執(zhí)行,同時(shí)系 統(tǒng)調(diào)用的各個(gè)參數(shù)被存放在處理器的指定的通用寄存器中。本發(fā)明提出的處理 器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換直通通道就是在處理器仿真模型執(zhí)行系統(tǒng)調(diào)用 異常指令的過(guò)程中實(shí)現(xiàn)的。在對(duì)每個(gè)系統(tǒng)調(diào)用進(jìn)行轉(zhuǎn)換和實(shí)現(xiàn)的過(guò)程中,本發(fā) 明提出了轉(zhuǎn)換子通道的方式,每個(gè)轉(zhuǎn)換子通道之間相互獨(dú)立,各自對(duì)對(duì)應(yīng)的系 統(tǒng)調(diào)用進(jìn)行轉(zhuǎn)換,據(jù)此便可獨(dú)立添加和定制不同的系統(tǒng)調(diào)用轉(zhuǎn)換,可擴(kuò)展性很 好。
用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換直通通道方法包括如下步驟
1) 在處理器仿真模型中的系統(tǒng)調(diào)用異常指令執(zhí)行模塊中,建立用于系統(tǒng)
調(diào)用轉(zhuǎn)換的直通通道入口函數(shù);
2) 在步驟1)所建立的直通通道入口函數(shù)中,利用處理器仿真模型中的寄 存器組模塊及其所定義的讀方法,對(duì)系統(tǒng)調(diào)用的參數(shù)進(jìn)行提取和暫存;
3) 根據(jù)步驟2)所提取并暫存的系統(tǒng)調(diào)用參數(shù)對(duì)系統(tǒng)調(diào)用進(jìn)行分類,對(duì)于 每一類系統(tǒng)調(diào)用,建立起一個(gè)對(duì)應(yīng)的系統(tǒng)調(diào)用轉(zhuǎn)換子通道函數(shù),在步驟l)所 建立的直通通道入口函數(shù)中對(duì)其進(jìn)行調(diào)用;
4) 在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線接口 模塊將該類系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指向的數(shù)據(jù)從處理器仿真模型的存儲(chǔ) 器空間傳送到主機(jī)系統(tǒng)的存儲(chǔ)器空間;
5) 在步驟3)所建立的子通道函數(shù)中,把由步驟2)所提取并暫存的仿真 模型的系統(tǒng)調(diào)用的參數(shù)轉(zhuǎn)換為適用于主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的參數(shù),調(diào)用主機(jī)系 統(tǒng)的對(duì)應(yīng)于該類的系統(tǒng)調(diào)用,并接收主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址及返 回值;
6) 在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線接口 模塊,將步驟5)中接收的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址所指向的數(shù)據(jù) 從主機(jī)系統(tǒng)的存儲(chǔ)器空間傳送到處理器仿真模型的存儲(chǔ)器空間;
7) 在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的寄存器組 模塊及其所定義的寫方法,將步驟5)中接收到的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用返回值 寫回處理器仿真模型的寄存器組,標(biāo)志此次系統(tǒng)調(diào)用的結(jié)束。
所述的在步驟l)所建立的直通通道入口函數(shù)中,利用處理器仿真模型中 的寄存器組模塊及其所定義的讀方法,對(duì)系統(tǒng)調(diào)用的參數(shù)進(jìn)行提取和暫存根 據(jù)系統(tǒng)調(diào)用的參數(shù)被全部存放于處理器仿真模型的寄存器組中的Rl至R6寄 存器中這一特征,利用處理器仿真模型中的寄存器組模塊及其所定義的讀寄存 器的方法,從處理器仿真模型的寄存器組中提取出系統(tǒng)調(diào)用異常指令所包含的 全部參數(shù),對(duì)應(yīng)于所提取的全部參數(shù),自定義一組數(shù)據(jù)變量,將提取出來(lái)的每 一個(gè)系統(tǒng)調(diào)用參數(shù)存放在一個(gè)自定義變量中。
所述的根據(jù)步驟2)所提取并暫存的系統(tǒng)調(diào)用參數(shù)對(duì)系統(tǒng)調(diào)用進(jìn)行分類, 對(duì)于每一類系統(tǒng)調(diào)用,建立起一個(gè)對(duì)應(yīng)的系統(tǒng)調(diào)用轉(zhuǎn)換子通道函數(shù),在步驟l) 所建立的直通通道入口函數(shù)中進(jìn)行調(diào)用處理器仿真模型中系統(tǒng)調(diào)用的參數(shù)列 表中的第一個(gè)參數(shù)的值表示該系統(tǒng)調(diào)用所屬的類別編號(hào),根據(jù)這一特征,使用 步驟2)中所存放在自定義變量中的系統(tǒng)調(diào)用的第一個(gè)參數(shù),對(duì)該系統(tǒng)調(diào)用進(jìn)
行所屬類別劃分,對(duì)于每一類系統(tǒng)調(diào)用,建立對(duì)應(yīng)的一個(gè)系統(tǒng)調(diào)用轉(zhuǎn)換子通道 函數(shù),該子通道函數(shù)被用來(lái)對(duì)該類系統(tǒng)調(diào)用實(shí)施具體的轉(zhuǎn)換。
所述的在歩驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線 接口模塊將該類系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指向的數(shù)據(jù)從處理器仿真模型的 存儲(chǔ)器空間傳送到主機(jī)系統(tǒng)的存儲(chǔ)器空間利用處理器仿真模型中的總線接口 模塊,將系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指示的數(shù)據(jù)從處理器仿真模型的存儲(chǔ)器空 間中傳送到主機(jī)系統(tǒng)的存儲(chǔ)器空間中,該傳送的起始地址由處理器仿真模型中 的系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指定,該傳送的目的地址由用戶在主機(jī)存儲(chǔ)器空 間中自定義的數(shù)據(jù)結(jié)構(gòu)的地址變量所指定,該傳送的數(shù)據(jù)塊大小由處理器仿真 模型中的系統(tǒng)調(diào)用的指示數(shù)據(jù)塊大小的參數(shù)所指定。
所述的在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線 接口模塊,將步驟5)中接收的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址所指向的 數(shù)據(jù)從主機(jī)系統(tǒng)的存儲(chǔ)器空間傳送到處理器仿真模型的存儲(chǔ)器空間利用處理 器仿真模型中的總線接口模塊,將步驟5)所接收的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返 回?cái)?shù)據(jù)地址所指向的數(shù)據(jù)從主機(jī)系統(tǒng)的存儲(chǔ)器空間中傳送到處理器仿真模型 的存儲(chǔ)器空間中,該傳送的起始地址由主機(jī)系統(tǒng)系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址參數(shù) 所指定,該傳送的目的地址由處理器仿真模型中系統(tǒng)調(diào)用的指示接收數(shù)據(jù)存放 地址的參數(shù)所指定,該傳送的數(shù)據(jù)塊大小由處理器仿真模型中的系統(tǒng)調(diào)用的指 示數(shù)據(jù)塊大小的參數(shù)所指定。
本發(fā)明具有的有益效果
1) 高效、靈活、快速、可靠地替代操作系統(tǒng)實(shí)現(xiàn)對(duì)目標(biāo)程序中系統(tǒng)調(diào)用
的支持;
2) 可擴(kuò)展性強(qiáng),子通道之間相互獨(dú)立,可以根據(jù)不同目標(biāo)程序的需求靈 活定制系統(tǒng)調(diào)用的轉(zhuǎn)換支持;
3) 擴(kuò)展簡(jiǎn)單,無(wú)需上下文切換開銷,代碼量小(以C語(yǔ)言為例,平均添 加一個(gè)系統(tǒng)調(diào)用支持子通道僅需要約30行左右的代碼);
4) 可移植性好,該方法為通用方法,可支持多種處理器仿真模型,可運(yùn) 行于多種主機(jī)平臺(tái)上;
5) 改動(dòng)代價(jià)低,該方法對(duì)原處理器仿真模型的改動(dòng)很小,可以在不改動(dòng) 原代碼的前提下,整體嵌入本發(fā)明的系統(tǒng)調(diào)用轉(zhuǎn)換直通通道,完成對(duì)目標(biāo)程序 中系統(tǒng)調(diào)用的支持。
圖1是系統(tǒng)調(diào)用轉(zhuǎn)換直通通道在目標(biāo)系統(tǒng)和主機(jī)系統(tǒng)間所處的位置及其功 能示意圖2是系統(tǒng)調(diào)用轉(zhuǎn)換直通通道的整體結(jié)構(gòu)和工作流程示意圖3是系統(tǒng)調(diào)用轉(zhuǎn)換子通道的具體結(jié)構(gòu)和工作流程示意圖4是在系統(tǒng)調(diào)用轉(zhuǎn)換直通通道的支持下,含有系統(tǒng)調(diào)用的目標(biāo)程序的指
令執(zhí)行流程圖。
具體實(shí)施例方式
本發(fā)明中,處理器仿真模型是一個(gè)運(yùn)行于主機(jī)之上的仿真平臺(tái),而且主機(jī) 上已經(jīng)存在完善的系統(tǒng)調(diào)用接口,于是本發(fā)明提出一種方法,在處理器仿真模 型與主機(jī)之間建立直通通道,將運(yùn)行于處理器仿真模型之上的系統(tǒng)調(diào)用請(qǐng)求通 過(guò)這個(gè)直通通道,傳送到主機(jī)上進(jìn)行執(zhí)行,并且將結(jié)果由此通道返回。整個(gè)系 統(tǒng)調(diào)用直通通道完全建立在處理器仿真模型執(zhí)行目標(biāo)指令的單元中實(shí)現(xiàn),避免 了處理器仿真模型頻繁進(jìn)入異常服務(wù)程序和進(jìn)行上下文切換的開銷,高效實(shí)現(xiàn) 了各種系統(tǒng)調(diào)用,全面支持目標(biāo)程序的執(zhí)行。
用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換直通通道方法包括如下步驟
1) 在處理器仿真模型中的系統(tǒng)調(diào)用異常指令執(zhí)行模塊中,建立用于系統(tǒng) 調(diào)用轉(zhuǎn)換的直通通道入口函數(shù),目標(biāo)程序中出現(xiàn)的所有的系統(tǒng)調(diào)用異常指令, 都會(huì)經(jīng)由處理器仿真模型的系統(tǒng)調(diào)用異常指令執(zhí)行模塊進(jìn)入此直通通道入口 函數(shù),進(jìn)而被轉(zhuǎn)換執(zhí)行,參見圖l;
2) 在步驟1)所建立的直通通道入口函數(shù)中,利用處理器仿真模型中的寄 存器組模塊及其所定義的讀方法,對(duì)系統(tǒng)調(diào)用的參數(shù)進(jìn)行提取和暫存,參見圖 2;
3) 根據(jù)步驟2)所提取并暫存的系統(tǒng)調(diào)用參數(shù)對(duì)系統(tǒng)調(diào)用進(jìn)行分類,對(duì)于 每一類系統(tǒng)調(diào)用,建立起一個(gè)對(duì)應(yīng)的系統(tǒng)調(diào)用轉(zhuǎn)換子通道函數(shù),每個(gè)轉(zhuǎn)換子通 道之間相互獨(dú)立,各自對(duì)對(duì)應(yīng)的系統(tǒng)調(diào)用進(jìn)行轉(zhuǎn)換,據(jù)此便可獨(dú)立添加和定制 不同的系統(tǒng)調(diào)用轉(zhuǎn)換。在步驟l)所建立的直通通道入口函數(shù)中進(jìn)行調(diào)用,參
見圖2;
4) 在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線接口 模塊將該類系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指向的數(shù)據(jù)從處理器仿真模型的存儲(chǔ)
器空間傳送到主機(jī)系統(tǒng)的存儲(chǔ)器空間,參見圖3;
5) 在步驟3)所建立的子通道函數(shù)中,把由步驟2)所提取并暫存的仿真 模型的系統(tǒng)調(diào)用的參數(shù)轉(zhuǎn)換為適用于主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的參數(shù),調(diào)用主機(jī)系
統(tǒng)的對(duì)應(yīng)于該類的系統(tǒng)調(diào)用,并接收主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址及返 回值,參見圖3;
6) 在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線接口 模塊,將步驟5)中接收的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址所指向的數(shù)據(jù) 從主機(jī)系統(tǒng)的存儲(chǔ)器空間傳送到處理器仿真模型的存儲(chǔ)器空間,參見圖3;
7) 在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的寄存器組 模塊及其所定義的寫方法,將步驟5)中接收到的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用返回值 寫回處理器仿真模型的寄存器組,標(biāo)志此次系統(tǒng)調(diào)用的結(jié)束,參見圖3。
所述的在步驟l)所建立的直通通道入口函數(shù)中,利用處理器仿真模型中
的寄存器組模塊及其所定義的讀方法,對(duì)系統(tǒng)調(diào)用的參數(shù)進(jìn)行提取和暫存根
據(jù)系統(tǒng)調(diào)用的參數(shù)被全部存放于處理器仿真模型的寄存器組中Rl至R6寄存 器中這一特征,利用處理器仿真模型中的寄存器組模塊及其所定義的讀寄存器 的方法,從處理器仿真模型的寄存器組中提取出系統(tǒng)調(diào)用異常指令所包含的全 部參數(shù),對(duì)應(yīng)于所提取的全部參數(shù),自定義一組數(shù)據(jù)變量,將提取出來(lái)的每一 個(gè)系統(tǒng)調(diào)用參數(shù)存放在一個(gè)自定義變量中。
所述的根據(jù)步驟2)所提取并暫存的系統(tǒng)調(diào)用參數(shù)對(duì)系統(tǒng)調(diào)用進(jìn)行分類, 對(duì)于每一類系統(tǒng)調(diào)用,建立起一個(gè)對(duì)應(yīng)的系統(tǒng)調(diào)用轉(zhuǎn)換子通道函數(shù),在步驟l)
所建立的直通通道入口函數(shù)中進(jìn)行調(diào)用處理器仿真模型中系統(tǒng)調(diào)用的參數(shù)列
表中的第一個(gè)參數(shù)的值表示該系統(tǒng)調(diào)用所屬的類別編號(hào),根據(jù)這一特征,使用
步驟2)中所存放在自定義變量中的系統(tǒng)調(diào)用的第一個(gè)參數(shù),對(duì)該系統(tǒng)調(diào)用進(jìn)
行所屬類別劃分,對(duì)于每一類系統(tǒng)調(diào)用,建立對(duì)應(yīng)的一個(gè)系統(tǒng)調(diào)用轉(zhuǎn)換子通道 函數(shù),該子通道函數(shù)被用來(lái)對(duì)該類系統(tǒng)調(diào)用實(shí)施具體的轉(zhuǎn)換。
所述的在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線
接口模塊將該類系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指向的數(shù)據(jù)從處理器仿真模型的
存儲(chǔ)器空間傳送到主機(jī)系統(tǒng)的存儲(chǔ)器空間利用處理器仿真模型中的總線接口 模塊,將系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指示的數(shù)據(jù)從處理器仿真模型的存儲(chǔ)器空 間中傳送到主機(jī)系統(tǒng)的存儲(chǔ)器空間中,該傳送的起始地址由處理器仿真模型中 的系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指定,該傳送的目的地址由用戶在主機(jī)存儲(chǔ)器空 間中自定義的數(shù)據(jù)結(jié)構(gòu)的地址變量所指定,該傳送的數(shù)據(jù)塊大小由處理器仿真 模型中的系統(tǒng)調(diào)用的指示數(shù)據(jù)塊大小的參數(shù)所指定。
所述的在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線 接口模塊,將步驟5)中接收的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址所指向的
數(shù)據(jù)從主機(jī)系統(tǒng)的存儲(chǔ)器空間傳送到處理器仿真模型的存儲(chǔ)器空間利用處理 器仿真模型中的總線接口模塊,將步驟5)所接收的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返 回?cái)?shù)據(jù)地址所指向的數(shù)據(jù)從主機(jī)系統(tǒng)的存儲(chǔ)器空間中傳送到處理器仿真模型 的存儲(chǔ)器空間中,該傳送的起始地址由主機(jī)系統(tǒng)系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址參數(shù) 所指定,該傳送的目的地址由處理器仿真模型中系統(tǒng)調(diào)用的指示接收數(shù)據(jù)存放 地址的參數(shù)所指定,該傳送的數(shù)據(jù)塊大小由處理器仿真模型中的系統(tǒng)調(diào)用的指 示數(shù)據(jù)塊大小的參數(shù)所指定。 實(shí)施例
實(shí)現(xiàn)處理器仿真模型中的"讀(read)"系統(tǒng)調(diào)用,該系統(tǒng)調(diào)用的分類編號(hào) 是3,該系統(tǒng)調(diào)用的功能是從指定的主機(jī)文件或設(shè)備中讀取數(shù)據(jù)到仿真模型中 指定的地址。實(shí)現(xiàn)本發(fā)明具體所包含的步驟如下
1) 在處理器仿真模型中的系統(tǒng)調(diào)用異常指令執(zhí)行模塊中,建立用于系統(tǒng) 調(diào)用轉(zhuǎn)換的直通通道入口函數(shù);
2) 在步驟1)所建立的直通通道入口函數(shù)中,利用處理器仿真模型中的寄 存器組模塊及其所定義的讀方法,對(duì)系統(tǒng)調(diào)用的參數(shù)進(jìn)行提取和暫存,取得該 系統(tǒng)調(diào)用的各個(gè)參數(shù);
3) 根據(jù)步驟2)所提取并暫存的系統(tǒng)調(diào)用參數(shù)對(duì)系統(tǒng)調(diào)用進(jìn)行分類,對(duì)于 每一類系統(tǒng)調(diào)用,建立起一個(gè)對(duì)應(yīng)的系統(tǒng)調(diào)用轉(zhuǎn)換子通道函數(shù),根據(jù)第一個(gè)參 數(shù)所表示的系統(tǒng)調(diào)用號(hào)來(lái)選擇對(duì)應(yīng)的轉(zhuǎn)換子通道函數(shù),本實(shí)施例中第一個(gè)參數(shù) 值為3,即表示3號(hào)"讀(read)"系統(tǒng)調(diào)用,建立對(duì)應(yīng)的3號(hào)子通道函數(shù),并 將剩余的參數(shù)傳遞給該子通道函數(shù)。系統(tǒng)調(diào)用直通通道的子通道是完成系統(tǒng)調(diào) 用轉(zhuǎn)換的實(shí)體,不同的系統(tǒng)調(diào)用對(duì)應(yīng)著不同的子通道。在步驟l)所建立的直
通通道入口函數(shù)中調(diào)用該3號(hào)子通道函數(shù);
4) 在步驟3)所建立的子通道函數(shù)中,對(duì)3號(hào)子通道函數(shù)中所接收的三個(gè) 參數(shù)進(jìn)行相應(yīng)的轉(zhuǎn)換參數(shù)一表示所要讀取的主機(jī)上的目標(biāo)文件的描述符,直
接傳遞給主機(jī)系統(tǒng),作為主機(jī)"讀(read)"系統(tǒng)調(diào)用的參數(shù)一;參數(shù)三表示所 要讀取的字節(jié)數(shù),直接傳遞給主機(jī)系統(tǒng),作為主機(jī)"讀(read)"系統(tǒng)調(diào)用的參 數(shù)三;根據(jù)該參數(shù)三所規(guī)定的字節(jié)數(shù)運(yùn)用高級(jí)程序語(yǔ)言向主機(jī)的存儲(chǔ)器申請(qǐng)相 同大小的一塊內(nèi)存空間,并將該塊內(nèi)存空間的起始地址作為主機(jī)的"讀(read)" 系統(tǒng)調(diào)用的參數(shù)二;
5) 在步驟3)所建立的子通道函數(shù)中,根據(jù)步驟4)中得到的三個(gè)主機(jī)系 統(tǒng)調(diào)用的參數(shù),調(diào)用主機(jī)系統(tǒng)的"讀(read)"系統(tǒng)調(diào)用,從由參數(shù)一指定的文
件中讀取由參數(shù)三指定的字節(jié)數(shù)的數(shù)據(jù)存放到由參數(shù)二所指定的主機(jī)內(nèi)存中;
6) 在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線接口
模塊,將步驟5)中主機(jī)"讀(read)"系統(tǒng)調(diào)用執(zhí)行后所讀取的數(shù)據(jù)內(nèi)容從主 機(jī)的內(nèi)存中傳遞到處理器仿真模型的存儲(chǔ)器空間中,其中,前者的地址由主機(jī) 的"讀(read)"系統(tǒng)調(diào)用的參數(shù)二所指定,后者的地址由目標(biāo)程序的"讀(read)" 系統(tǒng)調(diào)用的參數(shù)二指示;
7) 在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的寄存器組 模塊及其所定義的寫方法,將步驟5)中主機(jī)"讀(read)"系統(tǒng)調(diào)用的返回值 寫入處理器仿真模型中的指定的通用寄存器,標(biāo)志此次系統(tǒng)調(diào)用的結(jié)束。至此, 完成3號(hào)"讀(read)"系統(tǒng)調(diào)用由處理器仿真模型到主機(jī)系統(tǒng)的轉(zhuǎn)換執(zhí)行。
權(quán)利要求
1.一種用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換直通通道方法,其特征在于包括如下步驟1)在處理器仿真模型中的系統(tǒng)調(diào)用異常指令的執(zhí)行模塊中,建立用于系統(tǒng)調(diào)用轉(zhuǎn)換的直通通道入口函數(shù);2)在步驟1)所建立的直通通道入口函數(shù)中,利用處理器仿真模型中的寄存器組模塊及其所定義的讀方法,對(duì)系統(tǒng)調(diào)用的參數(shù)進(jìn)行提取和暫存;3)根據(jù)步驟2)所提取并暫存的系統(tǒng)調(diào)用參數(shù)對(duì)系統(tǒng)調(diào)用進(jìn)行分類,對(duì)于每一類系統(tǒng)調(diào)用,建立起一個(gè)對(duì)應(yīng)的系統(tǒng)調(diào)用轉(zhuǎn)換子通道函數(shù),在步驟1)所建立的直通通道入口函數(shù)中對(duì)其進(jìn)行調(diào)用;4)在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線接口模塊將該類系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指向的數(shù)據(jù)從處理器仿真模型的存儲(chǔ)器空間傳送到主機(jī)系統(tǒng)的存儲(chǔ)器空間;5)在步驟3)所建立的子通道函數(shù)中,把由步驟2)所提取并暫存的仿真模型的系統(tǒng)調(diào)用的參數(shù)轉(zhuǎn)換為適用于主機(jī)系統(tǒng)系統(tǒng)調(diào)用的參數(shù),調(diào)用主機(jī)系統(tǒng)的對(duì)應(yīng)于該類的系統(tǒng)調(diào)用,并接收主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址及返回值;6)在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的總線接口模塊,將步驟5)中接收的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址所指向的數(shù)據(jù)從主機(jī)系統(tǒng)的存儲(chǔ)器空間傳送到處理器仿真模型的存儲(chǔ)器空間;7)在步驟3)所建立的子通道函數(shù)中,利用處理器仿真模型中的寄存器組模塊及其所定義的寫方法,將步驟5)中接收到的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用返回值寫回處理器仿真模型的寄存器組,標(biāo)志此次系統(tǒng)調(diào)用的結(jié)束。
2. 根據(jù)權(quán)利要求1所述的一種用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換直通 通道方法,其特征在于所述的在步驟l)所建立的直通通道入口函數(shù)中,利用 處理器仿真模型中的寄存器組模塊及其所定義的讀方法,對(duì)系統(tǒng)調(diào)用的參數(shù)進(jìn) 行提取和暫存根據(jù)系統(tǒng)調(diào)用的全部參數(shù)被存放于處理器仿真模型的通用寄存 器組中Rl至R6寄存器中這一特征,利用處理器仿真模型中的寄存器組模塊 及其所定義的讀寄存器的方法,從處理器仿真模型的寄存器組中提取出系統(tǒng)調(diào) 用異常指令所包含的全部參數(shù),對(duì)應(yīng)于所提取的全部參數(shù),自定義一組數(shù)據(jù)變 量,將提取出來(lái)的每一個(gè)系統(tǒng)調(diào)用參數(shù)存放在一個(gè)自定義變量中。
3. 根據(jù)權(quán)利要求1所述的一種用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換直通通道方法,其特征在于所述的根據(jù)步驟2)所提取并暫存的系統(tǒng)調(diào)用參數(shù)對(duì)系 統(tǒng)調(diào)用進(jìn)行分類,對(duì)于每一類系統(tǒng)調(diào)用,建立起一個(gè)對(duì)應(yīng)的系統(tǒng)調(diào)用轉(zhuǎn)換子通 道函數(shù),在步驟l)所建立的直通通道入口函數(shù)中對(duì)其進(jìn)行調(diào)用處理器仿真 模型中系統(tǒng)調(diào)用的參數(shù)列表中的第一個(gè)參數(shù)的值即Rl寄存器的值表示該系統(tǒng) 調(diào)用所屬的類別編號(hào),根據(jù)這一特征,使用步驟2)中所存放在自定義變量中 的系統(tǒng)調(diào)用的第一個(gè)參數(shù)的值,對(duì)該系統(tǒng)調(diào)用進(jìn)行所屬類別的劃分,對(duì)于每一 類系統(tǒng)調(diào)用,建立對(duì)應(yīng)的一個(gè)系統(tǒng)調(diào)用轉(zhuǎn)換子通道函數(shù),該子通道函數(shù)被用來(lái) 對(duì)該類系統(tǒng)調(diào)用實(shí)施具體的轉(zhuǎn)換。
4. 根據(jù)權(quán)利要求1所述的一種用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換直通 通道方法,其特征在于所述的在步驟3)所建立的子通道函數(shù)中,利用處理器 仿真模型中的總線接口模塊將該類系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指向的數(shù)據(jù)從 處理器仿真模型的存儲(chǔ)器空間傳送到主機(jī)系統(tǒng)的存儲(chǔ)器空間利用處理器仿真模型中的總線接口模塊,將系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指示的數(shù)據(jù)從處理器仿 真模型的存儲(chǔ)器空間中傳送到主機(jī)系統(tǒng)的存儲(chǔ)器空間中,該傳送的起始地址由 處理器仿真模型中的系統(tǒng)調(diào)用的數(shù)據(jù)地址參數(shù)所指定,該傳送的目的地址由用 戶在主機(jī)存儲(chǔ)器空間中自定義的指示接收數(shù)據(jù)存放地址的變量所指定,該傳送 的數(shù)據(jù)塊大小由處理器仿真模型中的系統(tǒng)調(diào)用的指示數(shù)據(jù)塊大小的參數(shù)所指 定。
5. 根據(jù)權(quán)利要求1所述的一種用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換直通 通道方法,其特征在于所述的在步驟3)所建立的子通道函數(shù)中,利用處理器 仿真模型中的總線接口模塊,將步驟5)中接收的主機(jī)系統(tǒng)的系統(tǒng)調(diào)用的返回 數(shù)據(jù)地址所指向的數(shù)據(jù)從主機(jī)系統(tǒng)的存儲(chǔ)器空間傳送到處理器仿真模型的存 儲(chǔ)器空間利用處理器仿真模型中的總線接口模塊,將步驟5)所接收的主機(jī) 系統(tǒng)的系統(tǒng)調(diào)用的返回?cái)?shù)據(jù)地址所指向的數(shù)據(jù)從主機(jī)系統(tǒng)的存儲(chǔ)器空間中傳 送到處理器仿真模型的存儲(chǔ)器空間中,該傳送的起始地址由主機(jī)系統(tǒng)系統(tǒng)調(diào)用 的返回?cái)?shù)據(jù)地址參數(shù)所指定,該傳送的目的地址由處理器仿真模型中系統(tǒng)調(diào)用 的指示接收數(shù)據(jù)存放地址的參數(shù)所指定,該傳送的數(shù)據(jù)塊大小由處理器仿真模 型中的系統(tǒng)調(diào)用的指示數(shù)據(jù)塊大小的參數(shù)所指定。
全文摘要
本發(fā)明公開了一種用于處理器仿真模型中的系統(tǒng)調(diào)用轉(zhuǎn)換的直通通道方法。利用處理器仿真模型中的寄存器組模塊對(duì)目標(biāo)程序中的系統(tǒng)調(diào)用參數(shù)進(jìn)行提取和處理,并利用總線接口模塊完成數(shù)據(jù)在不同系統(tǒng)空間之間的搬運(yùn),對(duì)相應(yīng)的目標(biāo)程序中的系統(tǒng)調(diào)用進(jìn)行轉(zhuǎn)換。這一系列過(guò)程是被嵌入在處理器仿真模型執(zhí)行系統(tǒng)調(diào)用異常指令的過(guò)程中實(shí)現(xiàn)的。該方法清晰的劃分了系統(tǒng)調(diào)用轉(zhuǎn)換直通通道的入口,子通道等各個(gè)模塊,定義了整個(gè)流程,使得系統(tǒng)調(diào)用轉(zhuǎn)換直通通道結(jié)構(gòu)明晰,維護(hù)簡(jiǎn)單,升級(jí)方便。該方法具有可擴(kuò)展性強(qiáng),可移植性好,改動(dòng)代價(jià)低等優(yōu)點(diǎn),能夠進(jìn)行高效的系統(tǒng)調(diào)用轉(zhuǎn)換,支持目標(biāo)程序的快速仿真和高效調(diào)試。
文檔編號(hào)G06F9/455GK101187881SQ20071016446
公開日2008年5月28日 申請(qǐng)日期2007年12月3日 優(yōu)先權(quán)日2007年12月3日
發(fā)明者嚴(yán)曉浪, 孟建熠, 燎 殷, 凱 黃 申請(qǐng)人:浙江大學(xué);杭州中天微系統(tǒng)有限公司