欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

模擬裝置、模擬方法及程序的制作方法

文檔序號(hào):6421133閱讀:192來(lái)源:國(guó)知局
專(zhuān)利名稱(chēng):模擬裝置、模擬方法及程序的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種通過(guò)模擬VLIW(Very Long Instruction Word)處理器用程序(執(zhí)行)來(lái)支援軟件開(kāi)發(fā)者的程序開(kāi)發(fā)的模擬裝置。
背景技術(shù)
模仿處理器的執(zhí)行狀態(tài)的模擬裝置用于程序開(kāi)發(fā)。在將進(jìn)行流水線(pipeline)控制的處理器作為對(duì)象的模擬裝置中,為了正確進(jìn)行流水線的模擬,以周期為單位進(jìn)行模擬。作為涉及此的現(xiàn)有技術(shù)文獻(xiàn),有專(zhuān)利文獻(xiàn)1。
專(zhuān)利文獻(xiàn)1中公開(kāi)的流水線計(jì)算機(jī)模擬器邊進(jìn)行流水線的模擬,邊以1命令單位進(jìn)行步驟動(dòng)作的模擬。由此,用于調(diào)試動(dòng)作的1命令的步驟動(dòng)作直覺(jué)地正確動(dòng)作。
另外,專(zhuān)利文獻(xiàn)2中公開(kāi)的失速(stall)檢測(cè)顯示裝置通過(guò)分析匯編源程序,檢測(cè)匯編源程序中發(fā)生的失速,將失速發(fā)生原因強(qiáng)調(diào)顯示于匯編源程序及作為匯編源程序的分析結(jié)果的流水線消息的對(duì)應(yīng)部位。從而,程序師識(shí)別流水線的失速發(fā)生原因。
專(zhuān)利文獻(xiàn)1特開(kāi)平8-272612專(zhuān)利文獻(xiàn)2特開(kāi)平11-65845但是,在上述現(xiàn)有技術(shù)中,在以同時(shí)執(zhí)行多個(gè)命令的處理器為對(duì)象的情況下,模擬多個(gè)命令的同時(shí)執(zhí)行,另外,盡管強(qiáng)調(diào)顯示失速發(fā)生原因,軟件開(kāi)發(fā)者在命令單位的執(zhí)行過(guò)程之前也不能細(xì)致確認(rèn)。

發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種模擬裝置,以同時(shí)執(zhí)行多個(gè)命令的處理器為對(duì)象,并進(jìn)行模擬,以便知道命令單位的執(zhí)行過(guò)程。
為了實(shí)現(xiàn)上述目的,本發(fā)明的模擬裝置是模擬VLIW處理器的模擬裝置,其中,具備第1模擬單元,模擬應(yīng)同時(shí)執(zhí)行的多個(gè)命令構(gòu)成的命令群;和第2模擬單元,根據(jù)第1模擬單元的模擬結(jié)果,生成所述命令群中每個(gè)命令的模擬結(jié)果。
根據(jù)該結(jié)構(gòu),利用命令群的模擬結(jié)果,對(duì)命令群中的各個(gè)命令生成模擬結(jié)果,所以可向軟件開(kāi)發(fā)者呈現(xiàn)如同對(duì)命令單位依次進(jìn)行模擬,可容易進(jìn)行單獨(dú)命令的調(diào)試及驗(yàn)證。例如,可在挨個(gè)單獨(dú)執(zhí)行應(yīng)同時(shí)執(zhí)行的命令過(guò)程之前,具體地進(jìn)行確認(rèn)。
這里,所述第2模擬單元也可生成將由第1模擬單元在緊前面模擬的命令群中包含的命令從模擬完成返回到未模擬的模擬結(jié)果。
根據(jù)該結(jié)構(gòu),可有效應(yīng)用由第1模擬單元在緊前面模擬的命令群的模擬結(jié)果,簡(jiǎn)單生成命令單位的模擬結(jié)果。
另外,所述模擬裝置還具備顯示控制單元,使第2模擬單元的命令單位的模擬結(jié)果顯示于顯示部。
這里,所述第2模擬單元具備判斷單元,判斷滿(mǎn)足中斷條件的命令是否包含于第1模擬單元模擬的命令群中;指示單元,在判斷為不包含的情況下,指示第1模擬單元下一命令群的模擬;決定單元,在判斷為包含的情況下,將滿(mǎn)足所述中斷條件的命令決定為停止命令;和生成單元,生成將命令群中的停止命令之后的命令從模擬完成返回到未模擬的模擬結(jié)果。
另外,所述第1模擬單元模擬同時(shí)執(zhí)行多個(gè)命令的流水線處理器,所述模擬裝置還具備顯示圖像生成單元,根據(jù)第1模擬單元及第2模擬單元的執(zhí)行結(jié)果,生成表示流水線中存在的命令的顯示圖像。
這里,所述顯示圖像包含流水線的每個(gè)階段中存在的命令的標(biāo)記。
根據(jù)該結(jié)構(gòu),用戶(hù)可一起調(diào)試及驗(yàn)證命令單位的模擬結(jié)果與流水線中前后命令的狀態(tài)。
這里,所述第1模擬單元模擬同時(shí)執(zhí)行多個(gè)命令的流水線處理器的周期單位的動(dòng)作,所述模擬裝置還具備接收單元,接收指示命令單位的步驟執(zhí)行及所述周期單位的步驟執(zhí)行之一的用戶(hù)操作;和顯示圖像生成單元,當(dāng)接收指示命令單位的步驟執(zhí)行的用戶(hù)操作時(shí),生成表示第2模擬單元的命令單位的模擬結(jié)果的顯示圖像,當(dāng)接收指示周期單位的步驟執(zhí)行的用戶(hù)操作時(shí),生成表示第1模擬單元的周期單位的模擬結(jié)果的顯示圖像。
根據(jù)該結(jié)構(gòu),用戶(hù)可任意選擇命令群的周期單位的模擬與命令單位的模擬。
并且,所述第1模擬單元具備存儲(chǔ)部,將VLIW處理器的當(dāng)前資源存儲(chǔ)為第1數(shù)據(jù);保存單元,將第1數(shù)據(jù)的復(fù)制作為第2數(shù)據(jù)保存在存儲(chǔ)單元中;和第1模擬器,在保存后,通過(guò)模擬所述命令群的執(zhí)行來(lái)更新第1數(shù)據(jù),所述第2模擬單元根據(jù)第1數(shù)據(jù)及第2數(shù)據(jù),得到所述命令群中的命令單位的模擬結(jié)果。
根據(jù)該結(jié)構(gòu),基于表示1個(gè)命令群模擬前的資源的第2數(shù)據(jù)與表示模擬后的資源的第1數(shù)據(jù),得到命令單位的模擬結(jié)果。
另外,所述第2模擬單元具備判斷單元,判斷滿(mǎn)足中斷條件的命令是否包含于第1模擬單元模擬的命令群中;指示單元,在判斷為不包含的情況下,指示第1模擬單元下一命令群的模擬;和決定單元,在判斷為包含的情況下,將滿(mǎn)足所述中斷條件的命令決定為停止命令。
根據(jù)該結(jié)構(gòu),可針對(duì)同時(shí)執(zhí)行的多個(gè)命令使命令分別中斷,軟件開(kāi)發(fā)者可容易確認(rèn)同時(shí)執(zhí)行的多個(gè)命令中的命令的相互關(guān)系。另外,因?yàn)橐阅M完的命令群中包含的命令為對(duì)象判斷中斷條件,所以可在處理器的實(shí)際執(zhí)行路徑中中斷。例如,在命令群中有被取消的命令的情況下,不會(huì)錯(cuò)誤中斷未執(zhí)行的命令。
這里,所述第1模擬器以進(jìn)行流水線處理的VLIW處理器為對(duì)象,以流水線處理的周期單位進(jìn)行命令群的模擬,所述模擬裝置還計(jì)數(shù)命令群?jiǎn)挝坏哪M中的執(zhí)行周期數(shù)。
根據(jù)該結(jié)構(gòu),以進(jìn)行流水線處理的處理器為對(duì)象,生成命令單位的模擬結(jié)果,同時(shí)還可正確模擬處理器的流水線周期數(shù)。
另外,所述第1模擬器對(duì)所述命令群中的各命令生成表示由該命令變更的資源的更新信息,所述復(fù)原單元按照第1數(shù)據(jù)、第2數(shù)據(jù)及更新信息,對(duì)該命令群中的每個(gè)命令復(fù)原在該命令之前依次執(zhí)行的結(jié)果所對(duì)應(yīng)的資源數(shù)據(jù)。
根據(jù)該結(jié)構(gòu),可通過(guò)利用更新信息來(lái)容易復(fù)原資源數(shù)據(jù)。
這里,所述第1模擬器還對(duì)以VLIW處理器的執(zhí)行階段發(fā)生延遲周期的延遲命令模擬延遲周期,所述復(fù)原單元按照延遲命令的更新信息來(lái)生成延遲命令的執(zhí)行結(jié)果所對(duì)應(yīng)的資源數(shù)據(jù)。
根據(jù)該結(jié)構(gòu),處理器延遲執(zhí)行同時(shí)執(zhí)行的多個(gè)命令中的延遲命令,所以所述多個(gè)命令在周期水平下不同時(shí)交替執(zhí)行順序,可生成對(duì)命令單位的模擬挨個(gè)順序執(zhí)行的模擬結(jié)果。
并且,所述復(fù)原單元在與由模擬對(duì)象的VLIW處理器的執(zhí)行階段發(fā)生延遲周期的延遲命令之間,對(duì)相同命令群內(nèi)具有輸出依賴(lài)關(guān)系的輸出依賴(lài)命令,按照延遲命令的更新信息與輸出依賴(lài)命令的更新信息,生成輸出依賴(lài)命令的執(zhí)行結(jié)果所對(duì)應(yīng)的資源數(shù)據(jù)。
根據(jù)該結(jié)構(gòu),處理器中存在于同時(shí)執(zhí)行的輸出依賴(lài)關(guān)系中的命令一方的執(zhí)行結(jié)果變?yōu)榕c取消相同的結(jié)果,但在命令單位的模擬中,因?yàn)榧词箤?duì)通過(guò)輸出依賴(lài)關(guān)系而取消的命令也生成模擬結(jié)果,所以軟件開(kāi)發(fā)者可知道取消輸出依賴(lài)命令的結(jié)果的過(guò)程。
如上所述,根據(jù)本發(fā)明的模擬裝置,將同時(shí)執(zhí)行多個(gè)命令的處理器作為目標(biāo),可對(duì)命令單位進(jìn)行模擬。因此,不是中斷命令群?jiǎn)挝?,而是中斷同時(shí)執(zhí)行的命令單位。另外,向軟件開(kāi)發(fā)者呈現(xiàn)如同挨個(gè)依次模擬命令。
并且,模擬裝置進(jìn)行由命令群的周期單位的模擬與命令單位的模擬構(gòu)成的2階段模擬,所以可正確模擬目標(biāo)處理器的周期數(shù)。
另外,在目標(biāo)處理器具有發(fā)送(forwarding)機(jī)構(gòu)的情況或通過(guò)延遲命令發(fā)生互鎖的情況下,即使在具有取消機(jī)構(gòu)的情況下,也可正確模擬目標(biāo)處理器的周期數(shù)。


結(jié)合說(shuō)明本發(fā)明一特定實(shí)施例的附圖,本發(fā)明的這些和其它目的、優(yōu)點(diǎn)和特征將從下述描述中變得明顯。
圖1是表示本發(fā)明實(shí)施形態(tài)的模擬系統(tǒng)1的外觀圖。
圖2表示模擬裝置2中模擬軟件啟動(dòng)后的顯示內(nèi)容的一例。
圖3表示調(diào)試裝置3中調(diào)試軟件執(zhí)行中的顯示內(nèi)容的一例。
圖4是表示成為模擬裝置對(duì)象的目標(biāo)處理器的結(jié)構(gòu)圖。
圖5是表示目標(biāo)處理器的流水線階段的動(dòng)作定時(shí)圖。
圖6是表示流水線處理的命令群的一例的圖。
圖7是說(shuō)明流水線的周期數(shù)的圖。
圖8是表示伴隨發(fā)送的流水線階段的動(dòng)作定時(shí)圖。
圖9是表示取消命令的情況下的其它實(shí)例的圖。
圖10是表示伴隨發(fā)送的流水線處理的說(shuō)明圖。
圖11是表示成為模擬裝置對(duì)象的其它目標(biāo)處理器的結(jié)構(gòu)圖。
圖12是表示模擬系統(tǒng)的結(jié)構(gòu)功能框圖。
圖13是表示行程(fetch)信息一例的圖。
圖14是表示解碼信息一例的圖。
圖15是表示執(zhí)行信息一例的圖。
圖16是表示完成信息一例的圖。
圖17是表示基于調(diào)度模塊的命令群的模擬處理的流程圖。
圖18表示示出基于模擬控制部的命令單位的模擬控制的流程圖。
圖19是表示資源信息變更部的結(jié)構(gòu)框圖。
圖20是表示通常命令結(jié)果生成部的詳細(xì)結(jié)構(gòu)的框圖。
圖21是表示存儲(chǔ)器值保存部的詳細(xì)結(jié)構(gòu)的框圖。
圖22是表示模擬對(duì)象的第1程序例的圖。
圖23是表示模擬對(duì)象的第2程序例的圖。
圖24是表示模擬對(duì)象的第3程序例的圖。
圖25是表示模擬對(duì)象的第4程序例的圖。
圖26表示指定命令群的周期單位的模擬的指令一例。
圖27表示指定命令單位的模擬的指令一例。
圖28是表示流水線狀態(tài)的顯示例的圖。
圖29是表示流水線狀態(tài)的顯示例的圖。
圖30是表示流水線狀態(tài)的顯示例的圖。
圖31是表示流水線狀態(tài)的顯示例的圖。
圖32是表示流水線狀態(tài)的顯示例的圖。
圖33是表示流水線狀態(tài)的顯示例的圖。
具體實(shí)施例方式
模擬系統(tǒng)的概述圖1是表示本發(fā)明實(shí)施形態(tài)的模擬系統(tǒng)1的外觀圖。圖中的模擬系統(tǒng)1由模擬裝置2和調(diào)試裝置3構(gòu)成。
模擬裝置2具備主體裝置2a、顯示裝置2b、輸入裝置2c,是模擬同時(shí)執(zhí)行多個(gè)命令的處理器的動(dòng)作的裝置,就由處理器同時(shí)執(zhí)行的多個(gè)命令而言,將按照順序執(zhí)行命令情況下得到的執(zhí)行結(jié)果經(jīng)LAN電纜通知給調(diào)試裝置3。即模擬裝置2經(jīng)調(diào)試裝置3從用戶(hù)接收命令單位的步驟動(dòng)作指示或命令單位的斷點(diǎn)(breakpoint)指定,經(jīng)調(diào)試裝置3向用戶(hù)顯示命令單位的執(zhí)行結(jié)果。主體裝置2a通過(guò)執(zhí)行模擬軟件進(jìn)行上述模擬。顯示裝置2b、輸入裝置2c用于模擬軟件的執(zhí)行開(kāi)始和終止。
調(diào)試裝置3具備主體裝置3a、顯示裝置3b、輸入裝置3c,用作對(duì)模擬裝置2的用戶(hù)界面,從用戶(hù)接收命令單位的步驟動(dòng)作或命令單位的斷點(diǎn)指定等操作,通知模擬裝置2,并接收和顯示來(lái)自模擬裝置2的命令單位的模擬結(jié)果。主體裝置3a通過(guò)執(zhí)行調(diào)試軟件,提供用戶(hù)界面功能,向模擬裝置2收發(fā)信模擬執(zhí)行指示或其響應(yīng)。顯示裝置3b顯示命令單位的模擬執(zhí)行結(jié)果等。輸入裝置3c接收各種用戶(hù)操作。
圖2表示模擬裝置2中模擬軟件啟動(dòng)后的顯示內(nèi)容的一例。圖中,W0是控制臺(tái)窗口,表示模擬軟件啟動(dòng)后執(zhí)行中的狀態(tài)。在該狀態(tài)下,軟件開(kāi)發(fā)者可經(jīng)調(diào)試裝置3利用該模擬裝置2。
圖3表示調(diào)試裝置3中調(diào)試軟件模擬中的顯示內(nèi)容的一例。圖中,W1是顯示調(diào)試對(duì)象的程序的代碼(code)顯示窗口,W2是顯示調(diào)試對(duì)象的源程序的源程序顯示窗口,W3是由用戶(hù)操作來(lái)輸入各種模擬用指令的指令輸入窗口,W4是顯示目標(biāo)處理器執(zhí)行情況下的周期數(shù)與表示模擬的命令數(shù)的步驟數(shù)等狀態(tài)顯示窗口,W5是顯示寄存器數(shù)據(jù)的寄存器內(nèi)容顯示窗口,W6是顯示存儲(chǔ)器數(shù)據(jù)的存儲(chǔ)器內(nèi)容顯示窗口。M1是表示命令單位模擬中的模擬未執(zhí)行開(kāi)頭命令(下面稱(chēng)為停止命令)的停止命令標(biāo)志,M2是表示對(duì)應(yīng)于停止命令的源程序中的程序行的停止行標(biāo)志。
代碼顯示窗口W1顯示調(diào)試對(duì)象的程序中表示命令地址的程序計(jì)數(shù)值(圖中的PC欄)、行編號(hào)(LINE欄)、標(biāo)記(FLAG欄)、助記符(MNEMONIC欄)等,同時(shí)顯示停止命令標(biāo)志M1。這里,標(biāo)記[F0]用VLIW處理器200中具備的狀態(tài)標(biāo)志寄存器中的標(biāo)記F0的值來(lái)表示命令是否有效,對(duì)應(yīng)于緊前面的比較命令(cmp命令)的比較結(jié)果來(lái)復(fù)位得到。該標(biāo)記F0通過(guò)使條件分支命令中的條件是否成立反映到標(biāo)記F0的值中,被用于例如依賴(lài)于源程序顯示窗口W2中的if語(yǔ)句的條件的執(zhí)行語(yǔ)句等。例如,圖中第104行的mov命令是將標(biāo)志[F0]的值設(shè)為執(zhí)行條件的附帶執(zhí)行條件命令,若[F0]=1,則作為有效命令執(zhí)行,若[F0]=0,則作為無(wú)效命令,不執(zhí)行。另外,代碼顯示窗口W1中的;(兩個(gè)分號(hào))表示目標(biāo)處理器中同時(shí)執(zhí)行的命令的段落,例如用于將具有數(shù)據(jù)依賴(lài)關(guān)系的兩個(gè)命令等不能同時(shí)執(zhí)行的緊后面的命令劃分到下一命令群。
另外,圖1所示模擬系統(tǒng)1由執(zhí)行模擬軟件的計(jì)算機(jī)(模擬裝置2)和執(zhí)行調(diào)試軟件的計(jì)算機(jī)(調(diào)試器3)兩臺(tái)計(jì)算機(jī)構(gòu)成,但也可由一臺(tái)計(jì)算機(jī)來(lái)執(zhí)行模擬軟件與調(diào)試軟件兩者。
目標(biāo)處理器下面,用圖4-圖11來(lái)說(shuō)明模塊系統(tǒng)1的目標(biāo)處理器的規(guī)格。
圖4是表示模擬對(duì)象的VLIW處理器的結(jié)構(gòu)框圖。如圖所示,處理器200是由IF(命令取得)步驟、DC(解碼)步驟、EX/MEM(執(zhí)行/存儲(chǔ)器訪問(wèn))步驟、WB(回寫(xiě))步驟構(gòu)成的4階段流水線結(jié)構(gòu),包括在IF步驟中取得由多個(gè)命令構(gòu)成的命令群的命令取得控制部201、在DC步驟中同時(shí)解碼取得的最大3個(gè)命令的命令解碼器202-204、在EX步驟中按照解碼結(jié)果來(lái)同時(shí)執(zhí)行最大3個(gè)命令的ALU(Arithmetic LogicUnit)205-207、在解碼的命令是存儲(chǔ)器訪問(wèn)命令的情況下、在MEM步驟中執(zhí)行該命令的存儲(chǔ)器訪問(wèn)控制部209、取消命令的執(zhí)行內(nèi)容或部分執(zhí)行內(nèi)容的命令取消部220、向下一級(jí)步驟傳遞關(guān)于命令的信息的流水線寄存器221-223、在解碼的命令是存儲(chǔ)器訪問(wèn)命令的情況下選擇該解碼信息的多路復(fù)用器230、在解碼的命令是分支命令的情況下選擇該解碼信息的多路復(fù)用器231、由多個(gè)通用寄存器構(gòu)成的寄存器文件251、存儲(chǔ)程序及數(shù)據(jù)的存儲(chǔ)器252、和發(fā)送單元253。
這里,命令取得控制部201向命令解碼器202-204發(fā)出按命令地址從小到大的順序配置命令的命令。這是因?yàn)榕c命令取消部220互相配合,對(duì)于同時(shí)執(zhí)行的多個(gè)命令,得到與按命令解碼器202-204的順序執(zhí)行命令的情況相同的結(jié)果。
圖5是表示VLIW處理器200的流水線處理的流程圖。圖中,縱軸(向下)表示應(yīng)執(zhí)行程序中配置的命令的配置順序,橫軸表示周期數(shù)。圖中,DC1-DC3表示在命令解碼器202-204進(jìn)行處理,EX1-EX3表示在ALU205-207進(jìn)行處理,MEM表示在存儲(chǔ)器訪問(wèn)控制部209進(jìn)行處理。wait意味著發(fā)生互鎖。T1、T2··是將步驟時(shí)間設(shè)為單位的周期。另外,將經(jīng)命令解碼器202及ALU205處理命令的路徑(在流水線步驟中為 IF1→DC1→EX1→WB1)稱(chēng)為時(shí)間段(slot)x。同樣,將IF2→DC2→EX2→WB2的路徑稱(chēng)為時(shí)間段y,將IF3→DC3→EX3→WB3的路徑稱(chēng)為時(shí)間段z。將時(shí)間段x中的命令稱(chēng)為命令x。對(duì)時(shí)間段y、z也一樣稱(chēng)為命令y、z。
圖6表示圖5所示命令1~5的一例。圖中,對(duì)各命令記載命令的地址助記符標(biāo)記、命令的執(zhí)行內(nèi)容、通過(guò)命令執(zhí)行來(lái)更新的資源。這里,資源包含寄存器或存儲(chǔ)器。圖中僅示出相關(guān)的資源。助記符標(biāo)記的sub、add、Id、st、or分別意味著減法命令、加法命令、將數(shù)據(jù)從存儲(chǔ)器寫(xiě)入寄存器中的裝入命令、將寄存器數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中的存儲(chǔ)命令、邏輯或命令。R0-R6意味著寄存器0-6,(R4+)的+(正號(hào))意味著在命令執(zhí)行最后加上4的算后增量(post increment)。另外,就命令的執(zhí)行內(nèi)容標(biāo)記而言,=意味著代入,mem(R4)意味著將R4的內(nèi)容設(shè)為地址的存儲(chǔ)器的數(shù)據(jù),|意味著邏輯或。
另外,存儲(chǔ)命令的MEM步驟占兩個(gè)周期,裝入命令的MEM步驟及其他命令的EX步驟由一個(gè)周期結(jié)束。下面,將如存儲(chǔ)命令那樣需要比流水線級(jí)數(shù)(VLIW處理器200中為4個(gè))還多的周期的命令稱(chēng)為延遲命令,將以與流水線級(jí)數(shù)相同數(shù)量的周期處理的命令稱(chēng)為通常命令。
另外,為了簡(jiǎn)化說(shuō)明,設(shè)存儲(chǔ)命令的MEM步驟由兩個(gè)周期結(jié)束,裝入命令的MEM步驟由一個(gè)周期結(jié)束,但即使在裝入命令及存儲(chǔ)命令的MEM步驟的周期數(shù)動(dòng)態(tài)變化的情況下,也不成問(wèn)題。即,在目標(biāo)處理器中,在MEM步驟中,在每個(gè)周期都等待來(lái)自地址端(存儲(chǔ)器元件或i/o)的響應(yīng)(ACK),在有響應(yīng)的周期來(lái)結(jié)束存儲(chǔ)器訪問(wèn)。
命令群1由作為通常命令的命令1-3構(gòu)成,如圖5所示,在T1-T4等四個(gè)周期中處理。命令群2包含作為通常命令的命令5和作為延遲命令的命令4,所以由于發(fā)生互鎖而需要5個(gè)周期的處理時(shí)間。
圖7是表示圖6的命令串的周期與更新的資源的關(guān)系圖。在周期N+1,命令群1的命令1-3由4個(gè)周期完成,所以通過(guò)命令1-3來(lái)更新指定為目的的寄存器R0、R2-R4。在周期N+2,由于互鎖命令群2還未完成,所以不存在更新的資源。在周期N+3,因?yàn)槊钊?完成,所以通過(guò)命令4、5來(lái)更新指定為目標(biāo)的mem(R4)、R4、R5。
圖8是表示由命令取消部220來(lái)取消命令的情況下的命令例實(shí)例圖。圖中,命令6、7是同時(shí)執(zhí)行的,命令8是單獨(dú)執(zhí)行的命令。命令6的比較命令(cmp命令)對(duì)應(yīng)于比較結(jié)果來(lái)復(fù)位(無(wú)效化)標(biāo)記F0。命令7的加法命令(add命令)在標(biāo)記F0為1時(shí)執(zhí)行,在標(biāo)記F0為0時(shí)不執(zhí)行。
命令取消部220對(duì)于同時(shí)執(zhí)行的命令6、7,對(duì)應(yīng)于命令6的結(jié)果,取消命令7。即,命令取消部220在由命令6來(lái)將標(biāo)記F0復(fù)位為0的情況下,通過(guò)禁止將命令7的執(zhí)行結(jié)果寫(xiě)入寄存器或存儲(chǔ)器中,取消命令7。
換言之,命令取消部220可在同時(shí)執(zhí)行的多個(gè)命令中有條件分支命令的情況下,對(duì)應(yīng)于條件是否成立來(lái)取消后續(xù)于條件分支命令的命令。從而,取消部220可從同時(shí)執(zhí)行的多個(gè)命令中的任意命令開(kāi)始進(jìn)行條件分支。例如,具有圖3所示停止行標(biāo)志的條件語(yǔ)句(if語(yǔ)句)被作為具有停止命令標(biāo)志的cmp命令和附帶標(biāo)記F0的mov命令來(lái)執(zhí)行(這兩個(gè)命令與命令6、7相同)。
因?yàn)樯鲜雒?、7是同時(shí)執(zhí)行的命令,所以本來(lái)沒(méi)有先后關(guān)系,但命令取消部220處理成邏輯上先執(zhí)行命令6。
另外,命令取消部220在多個(gè)命令中存在無(wú)條件的單純分支命令,并同時(shí)發(fā)出未因分支而執(zhí)行的命令的情況下,取消該命令。
通過(guò)具備命令取消部220,VLIW處理器200是同時(shí)執(zhí)行多個(gè)命令的處理器,同時(shí)可從同時(shí)執(zhí)行的多個(gè)命令中的任意命令開(kāi)始進(jìn)行條件分支,所以構(gòu)成為在同時(shí)執(zhí)行的多個(gè)命令之間的關(guān)系中得到與按命令地址的順序執(zhí)行命令的情況相同的結(jié)果。
圖9是表示命令取消部220取消命令情況下的命令串的其它實(shí)例的圖。圖中,命令12-14是同時(shí)執(zhí)行的命令。可是,命令13的裝入命令(1d命令)和命令14的傳送命令(mov命令)都指定寄存器R1作為目的,兩個(gè)命令向寄存器R1的寫(xiě)入存在競(jìng)爭(zhēng)關(guān)系(將該關(guān)系稱(chēng)為輸出依賴(lài))。在檢測(cè)輸出依賴(lài)關(guān)系的情況下,命令取消部220取消命令地址小的命令13向寄存器R1的寫(xiě)入。結(jié)果,命令14的執(zhí)行結(jié)果被反映到寄存器R1。該執(zhí)行的結(jié)果與VLIW處理器200采用的下述結(jié)構(gòu)相關(guān),該結(jié)構(gòu)為在同時(shí)執(zhí)行的多個(gè)命令之間的關(guān)系中得到與按命令地址的順序執(zhí)行命令的情況相同結(jié)果的結(jié)構(gòu)。
圖10是表示伴隨發(fā)送單元253的發(fā)送的流水線處理的說(shuō)明圖。圖中,設(shè)同時(shí)發(fā)出裝入命令(Id R2,(R3+))及加法命令(add R4,8),單獨(dú)發(fā)出分支命令(br R)。另外,設(shè)裝入命令的MEM步驟需要兩個(gè)周期。
因?yàn)橥ㄟ^(guò)分支命令(br R4)來(lái)使用加法命令(add R4,8)的執(zhí)行結(jié)果R4,所以這兩個(gè)命令具有數(shù)據(jù)依賴(lài)關(guān)系。并且,若等待加法命令的WB步驟完成后開(kāi)始分支命令,則由于數(shù)據(jù)依賴(lài)關(guān)系而發(fā)生兩周期的補(bǔ)充(DC1步驟以T6的周期開(kāi)始)。
為了避免這種情況,發(fā)送單元253在當(dāng)前執(zhí)行中的命令群中的任一命令(稱(chēng)為被依賴(lài)命令)與下一命令群中的任一命令(稱(chēng)為依賴(lài)命令)之間存在數(shù)據(jù)依賴(lài)關(guān)系的情況下,取入并暫時(shí)保持作為被依賴(lài)命令的EX步驟中的執(zhí)行結(jié)果所得到的數(shù)據(jù),在依賴(lài)命令的EX步驟或MEM步驟開(kāi)始時(shí)將該數(shù)據(jù)作為操作數(shù)數(shù)據(jù)直接輸出(將這稱(chēng)為發(fā)送)。
并且,通過(guò)將WB步驟中寫(xiě)入的內(nèi)容形成在相同周期的DC步驟中讀出的結(jié)構(gòu)(Read After Write),可不等待WB步驟完成就無(wú)補(bǔ)充地執(zhí)行存在有數(shù)據(jù)依賴(lài)的后續(xù)命令。
在圖10的情況下,作為被依賴(lài)命令(add R4,8)的EX2步驟中的執(zhí)行結(jié)果得到的R4的數(shù)據(jù)“8“由發(fā)送單元253在DC1步驟中作為通過(guò)依賴(lài)命令(br R4)的操作數(shù)指定的地址(8),經(jīng)多路復(fù)用器231輸出到命令取得控制部201。這里,在DC1步驟中輸出數(shù)據(jù)是因?yàn)槿鐖D4所示從DC步驟中途將解碼信息(DC信息)輸出到IF步驟的結(jié)構(gòu)。這樣,通過(guò)具備發(fā)送單元253,VLIW處理器200消除了源于數(shù)據(jù)依賴(lài)關(guān)系的補(bǔ)充。
另外,圖10中,因?yàn)檠b入命令(Id R2,(R3+))的MEM步驟為2周期,所以在周期T4中,完成存儲(chǔ)器訪問(wèn)。另外,加法命令(add R4,8)在T3完成加法。在這點(diǎn)上,兩個(gè)命令按與命令地址的順序不同的順序執(zhí)行。并且,若在周期T4執(zhí)行EX3步驟,則按命令地址的順序執(zhí)行該兩個(gè)命令,但在存在依賴(lài)關(guān)系的情況下,依賴(lài)命令(br R4)中產(chǎn)生補(bǔ)充,進(jìn)行延遲。因此,VLIW處理器200例外地按與命令地址的順序不同的順序執(zhí)行。即便這種情況下,執(zhí)行結(jié)果也可得到與按命令地址的順序執(zhí)行的情況相同的結(jié)果。
另外,目標(biāo)處理器不限于圖4,也可同時(shí)執(zhí)行多個(gè)命令。例如,也可以是圖11所示的VLIW處理器。圖11的VLIW處理器是從圖4所示VLIW處理器中刪除命令取消部220的結(jié)構(gòu)。
模擬系統(tǒng)1的結(jié)構(gòu)以圖4-圖11所示目標(biāo)處理器為前提,繼續(xù)說(shuō)明本發(fā)明實(shí)施形態(tài)的模擬系統(tǒng)1。
圖12是表示模擬系統(tǒng)1的結(jié)構(gòu)功能框圖。圖中,模擬系統(tǒng)1由用戶(hù)界面4、調(diào)試器3a、模擬裝置2構(gòu)成。
用戶(hù)界面4相當(dāng)于圖1所示顯示裝置3b及輸入裝置3c,從用戶(hù)接收指示命令單位的模擬執(zhí)行或命令單位的步驟執(zhí)行的操作,顯示模擬結(jié)果。當(dāng)然,用戶(hù)界面4在接收不是命令單位而是被同時(shí)執(zhí)行的同時(shí)執(zhí)行多個(gè)命令的周期單位的模擬執(zhí)行操作的情況下,也顯示模擬結(jié)果。
調(diào)試器3a相當(dāng)于圖1所示的主體裝置3a,經(jīng)用戶(hù)界面4接收命令單位的步驟執(zhí)行指示或斷點(diǎn)的指定等各種控制指令128,經(jīng)顯示裝置3b顯示經(jīng)用戶(hù)界面4反映命令單位的模擬結(jié)果來(lái)作為對(duì)各種控制指令的響應(yīng)的寄存器文件的內(nèi)容129或存儲(chǔ)器的內(nèi)容130。另外,調(diào)試器3a向模擬裝置2發(fā)送命令單位的模擬執(zhí)行指示131,或?qū)⒋鎯?chǔ)器地址及大小134發(fā)送到模擬裝置2,并從模擬裝置2接收停止命令通知132、寄存器數(shù)據(jù)133、存儲(chǔ)器內(nèi)容135,作為對(duì)模擬執(zhí)行指示131或存儲(chǔ)器地址及大小134的響應(yīng)。并且,調(diào)試器3a具備流水線狀態(tài)顯示部24,生成表示模擬結(jié)果的顯示圖像。流水線狀態(tài)顯示部24當(dāng)從用戶(hù)經(jīng)用戶(hù)界面4指示命令單位的步驟執(zhí)行時(shí),生成表示命令單位的模擬結(jié)果的顯示圖像,當(dāng)指示周期單位的步驟執(zhí)行時(shí),生成表示周期單位的模擬結(jié)果的顯示圖像。用戶(hù)可任意選擇命令單位的步驟執(zhí)行的模擬結(jié)果和周期單位的步驟執(zhí)行的模擬結(jié)果。
模擬裝置2相當(dāng)于圖1所示主體裝置2a,具備流水線模擬部10,以圖4所示目標(biāo)處理器的動(dòng)作為周期單位來(lái)模擬多個(gè)命令(命令群)的同時(shí)執(zhí)行;和命令模擬部30,根據(jù)模擬結(jié)果來(lái)生成命令群中的命令單位的模擬結(jié)果。通過(guò)命令模擬部30根據(jù)流水線模擬部10的命令群?jiǎn)挝坏哪M結(jié)果生成每個(gè)命令的執(zhí)行前后狀態(tài)的所謂二階段模擬,模擬裝置2就象是否對(duì)命令單位進(jìn)行模擬那樣對(duì)調(diào)試器3a生成命令單位的模擬結(jié)果。
流水線模擬部10具備第1寄存器文件模塊11、存儲(chǔ)器模塊12、共同信息存儲(chǔ)部13、取得模塊14、取得信息存儲(chǔ)部15、解碼模塊16、解碼信息存儲(chǔ)部17、執(zhí)行模塊18、執(zhí)行信息存儲(chǔ)部19、完成處理模塊20、完成信息存儲(chǔ)部21、過(guò)去狀態(tài)更新控制部22和調(diào)度模塊23。
命令模擬部30包括第2寄存器文件模塊31、存儲(chǔ)器值保存部32、資源信息變更部33、模擬控制部34、命令執(zhí)行狀態(tài)保持部25。
首先,在說(shuō)明流水線模擬部10及命令模擬部30的各構(gòu)成要素之前,先說(shuō)明圖中各箭頭線的含義。
101是從模擬控制部34向調(diào)度模塊23輸出1周期大小命令群的模擬執(zhí)行指示,102是對(duì)該模擬執(zhí)行指示的響應(yīng)。103是作為命令群的模擬執(zhí)行前狀態(tài)的一部分從第1寄存器文件11復(fù)制到第2寄存器文件模塊31的寄存器數(shù)據(jù)。
104是存儲(chǔ)器地址及大小,105是地址指定到104的存儲(chǔ)器數(shù)據(jù),并且,若104是存儲(chǔ)命令的存儲(chǔ)端地址,則是該存儲(chǔ)命令的存儲(chǔ)前的存儲(chǔ)器內(nèi)容。106是提供給存儲(chǔ)器模塊12的存儲(chǔ)器地址及大小,107是地址指定到106的存儲(chǔ)器數(shù)據(jù)。108、109是與104、105相同內(nèi)容的數(shù)據(jù),從執(zhí)行模塊18提供給調(diào)度模塊23。110是第2寄存器文件模塊的寄存器文件的內(nèi)容,111是第1寄存器文件11的內(nèi)容。
112是從執(zhí)行模塊18通知執(zhí)行1周期EX步驟的模擬的命令執(zhí)行通知。113是寄存器編號(hào)及R/W的區(qū)別,114是由113指定的寄存器數(shù)據(jù)。115是詢(xún)問(wèn)是否更新第2寄存器文件模塊31的查詢(xún),116是表示是否禁止第2寄存器文件模塊31的更新的更新禁止通知。117是對(duì)存儲(chǔ)器模塊12的地址、大小、R/W的區(qū)別,118是存儲(chǔ)器內(nèi)容、由117指定的存儲(chǔ)器數(shù)據(jù)。119是取得信息,120是解碼信息,121是執(zhí)行信息,122是完成信息。
123-126是分別向完成處理模塊、執(zhí)行模塊、解碼模塊、取得模塊輸出的執(zhí)行指示,按該順序輸出(正確調(diào)用各模塊)。127表示各模塊共同使用的共同信息中包含的互鎖標(biāo)志值?;ユi標(biāo)志意味著發(fā)生互鎖。共同信息中,除互鎖標(biāo)志外,還包含意味著發(fā)生流水線失速(スト-ル)的失速標(biāo)志或由分支命令指定的分支端地址等。128是各種控制指令,129是顯示用寄存器數(shù)據(jù),130是顯示用存儲(chǔ)器數(shù)據(jù)。131是命令單位的模擬執(zhí)行指示或步驟執(zhí)行指示,132是作為對(duì)131的響應(yīng)而通知的停止命令通知,133是表示該停止命令執(zhí)行前的狀態(tài)的寄存器數(shù)據(jù),134是存儲(chǔ)器地址及大小,135是由134進(jìn)行地址指定的存儲(chǔ)器內(nèi)容,表示該停止命令執(zhí)行前的狀態(tài)。
下面,說(shuō)明流水線模擬部10及命令模擬部30的各構(gòu)成要素。
流水線模擬部10第1寄存器文件模塊11具有與目標(biāo)處理器的寄存器文件相同的寄存器結(jié)構(gòu)。
存儲(chǔ)器模塊12具有目標(biāo)處理器的存儲(chǔ)器結(jié)構(gòu),存儲(chǔ)調(diào)試對(duì)象的程序。
共同信息存儲(chǔ)部13存儲(chǔ)由表示發(fā)生互鎖的互鎖標(biāo)志、或表示由于特定命令的數(shù)據(jù)依賴(lài)而發(fā)生流水線失速的失速標(biāo)志等構(gòu)成的共同信息。通過(guò)使互鎖發(fā)生的模塊來(lái)設(shè)置/復(fù)位互鎖標(biāo)志,由各模塊參照。具體而言,互鎖標(biāo)志被執(zhí)行模塊18設(shè)置在存儲(chǔ)命令等延遲命令中的第1周期,在第2周期被各復(fù)位。各模塊在從調(diào)度模塊23接收1周期的執(zhí)行指示123-126時(shí),在設(shè)置互鎖標(biāo)志的情況下,進(jìn)行待機(jī)動(dòng)作。
取得模塊取得模塊14在從調(diào)度模塊23接收?qǐng)?zhí)行指示126時(shí),模擬目標(biāo)處理器的IF步驟的1周期的動(dòng)作。即,取得模塊14從存儲(chǔ)器模塊12取得應(yīng)同時(shí)執(zhí)行的多個(gè)命令(這里設(shè)最大3個(gè)命令),作為取得信息存儲(chǔ)在取得信息存儲(chǔ)部15中。并且,若取得信息存儲(chǔ)部15的命令全部有效,則不將取得信息存儲(chǔ)在取得信息存儲(chǔ)部15中。這是為了不更新存儲(chǔ)在取得信息存儲(chǔ)部15中的未解碼的取得信息。
圖13示出取得信息的一例。圖中,取得信息包含命令X-Z、和對(duì)應(yīng)于命令X-Z的命令發(fā)出標(biāo)志、有效標(biāo)志及命令PC。這里,[命令X]是目標(biāo)處理器發(fā)給命令解碼器202的命令、發(fā)給時(shí)間段x的命令x的命令代碼。同樣,[命令Y]、[命令Z]分別是發(fā)給命令解碼器203、204的命令y、z的命令代碼。命令X、Y、Z為命令地址從小到大的順序。[命令發(fā)出標(biāo)志]表示是否從取得模塊14經(jīng)取得信息存儲(chǔ)部15向解碼模塊16發(fā)出對(duì)應(yīng)的命令。[有效標(biāo)志]表示對(duì)應(yīng)的命令是否有效。在應(yīng)同時(shí)執(zhí)行的命令為3個(gè)的情況下,命令X-Z的3個(gè)有效標(biāo)志變?yōu)?(有效),在兩個(gè)的情況下,命令X和Y的兩個(gè)有效標(biāo)志變?yōu)?(有效),在應(yīng)單獨(dú)執(zhí)行命令的情況下,命令X的有效標(biāo)志變?yōu)?(有效)。[命令PC]意味著相當(dāng)于目標(biāo)處理器中取得程序計(jì)數(shù)器的內(nèi)容的命令地址。
取得信息存儲(chǔ)部15是存儲(chǔ)圖13所示取得信息的存儲(chǔ)器區(qū)域。取得信息由取得模塊14和解碼模塊16參照及變更。
解碼模塊解碼模塊16當(dāng)從調(diào)度模塊23接收?qǐng)?zhí)行指示125時(shí),若互鎖標(biāo)志127不是1,則模擬目標(biāo)處理器的DC步驟的1周期的動(dòng)作。即,解碼模塊16從取得信息存儲(chǔ)部15中讀出取得信息并解碼,將解碼結(jié)果作為解碼信息120存儲(chǔ)在解碼信息存儲(chǔ)部17中。此時(shí),對(duì)于取得信息存儲(chǔ)部15內(nèi)的取得信息,將解碼完命令的有效標(biāo)志變?yōu)?(無(wú)效)。其中,有效標(biāo)志為0的命令,將取得信息中的該命令的信息不變地包含在解碼信息中。另外,解碼模塊16將讀出的取得信息中的命令發(fā)出標(biāo)志不變(不變更值)地存儲(chǔ)在信息存儲(chǔ)部17中。并且,若互鎖標(biāo)志為1,則不更新解碼信息存儲(chǔ)部17的解碼信息。
圖14示出解碼信息的一例。如圖所示,解碼信息與取得信息相比,主要的不同之處在于新追加了分別對(duì)應(yīng)于命令X-Y的寄存器更新信息、存儲(chǔ)器訪問(wèn)命令、有效標(biāo)志、PC、寄存器更新信息、存儲(chǔ)器訪問(wèn)地址、存儲(chǔ)器訪問(wèn)數(shù)據(jù)、和R/W信息。下面,省略與取得信息相同點(diǎn)的說(shuō)明,主要說(shuō)明不同點(diǎn)。
意味著相當(dāng)于解碼程序計(jì)數(shù)器而非目標(biāo)處理器中的取得程序計(jì)數(shù)器的內(nèi)容的命令地址。[命令X的寄存器更新信息]表示由命令X更新的寄存器(目的寄存器)。命令Y、Z的寄存器更新信息也分別一樣。該信息被用于檢測(cè)輸出依賴(lài)。
圖中存儲(chǔ)器訪問(wèn)命令以下列舉的各信息僅在命令X-Z之一為存儲(chǔ)器訪問(wèn)命令的情況下有效。在命令X-Z之一不為存儲(chǔ)器訪問(wèn)命令的情況下無(wú)效。[存儲(chǔ)器訪問(wèn)命令]是與命令X-Z之一相同的命令,是目標(biāo)處理器從命令解碼器202-204之一經(jīng)多路復(fù)用器230、231發(fā)給存儲(chǔ)器訪問(wèn)控制部209的命令。[有效標(biāo)志]表示存儲(chǔ)器訪問(wèn)命令是否有效,由解碼模塊16設(shè)置為1(有效),作為初始值。[命令PC]意味著相當(dāng)于目標(biāo)處理器中解碼程序計(jì)數(shù)器的內(nèi)容的命令地址。[寄存器更新信息]表示由該存儲(chǔ)器訪問(wèn)命令更新的寄存器。[存儲(chǔ)器訪問(wèn)地址]表示地址端的存儲(chǔ)器地址。[R/W信息]在裝入命令的情況下表示讀,在存儲(chǔ)命令的情況下表示寫(xiě),在不存在存儲(chǔ)器訪問(wèn)命令的情況下表示NOP。例如,在命令Z為裝入命令(Id R0,(R1+))的情況下,命令Z的命令PC與存儲(chǔ)器訪問(wèn)命令的命令PC為相同值,但對(duì)解碼信息中的命令Z設(shè)定意味著(R1=R1+4)的操作代碼,對(duì)存儲(chǔ)器訪問(wèn)命令設(shè)定意味著(R0=mem(r1))的操作代碼。命令Z的寄存器更新信息變?yōu)镽1,存儲(chǔ)器訪問(wèn)命令的寄存器更新信息變?yōu)镽0。在此情況下,命令Z的操作代碼與存儲(chǔ)器訪問(wèn)命令的操作代碼分擔(dān)運(yùn)算功能,對(duì)應(yīng)于目標(biāo)處理器的ALU207與存儲(chǔ)器訪問(wèn)控制部209的運(yùn)算功能的分擔(dān)。
解碼信息存儲(chǔ)部17是存儲(chǔ)圖14所示解碼信息的存儲(chǔ)器區(qū)域。解碼信息由解碼模塊16寫(xiě)入,由執(zhí)行模塊18讀出。
執(zhí)行模塊18掃描模塊18在從調(diào)度模塊23接收?qǐng)?zhí)行指示124時(shí),模擬目標(biāo)處理器的EX/MEM步驟的1周期的動(dòng)作。即,執(zhí)行模塊18從解碼信息存儲(chǔ)部17中讀出解碼信息120,對(duì)有效標(biāo)志為1(有效)的命令,進(jìn)行該命令的運(yùn)算內(nèi)容的模塊(具體而言,調(diào)用對(duì)應(yīng)于該命令的命令執(zhí)行函數(shù)),更新第1寄存器文件模塊11。這里,按順序模擬命令X、Y、Z,每當(dāng)各命令的模擬結(jié)束時(shí),執(zhí)行模塊18就輸出通知是否執(zhí)行了命令X、Y、Z之一命令的命令執(zhí)行通知112。
在解碼信息中有效存在延遲命令(例如需要2周期的MEM步驟的存儲(chǔ)器訪問(wèn)命令)的情況下,若剩余延遲命令的延遲(即第1周期),則執(zhí)行模塊18對(duì)多個(gè)命令中該存儲(chǔ)器訪問(wèn)命令以外的命令X-Z進(jìn)行模擬,對(duì)存儲(chǔ)器訪問(wèn)命令不進(jìn)行模擬,將共同信息存儲(chǔ)部13中的互鎖標(biāo)志設(shè)置為1,結(jié)束該周期的模塊。另外,若未剩余延遲命令的延遲(即第2周期),則對(duì)存儲(chǔ)器模塊12進(jìn)行該存儲(chǔ)器訪問(wèn)的模擬,復(fù)位互鎖標(biāo)志。此時(shí),在存儲(chǔ)器訪問(wèn)命令是存儲(chǔ)器寫(xiě)命令的情況下,因?yàn)樾纬蓤?zhí)行信息的一部分,所以讀出寫(xiě)前的數(shù)據(jù)。
這種模擬的結(jié)果,執(zhí)行模塊18將執(zhí)行信息存儲(chǔ)在執(zhí)行信息存儲(chǔ)部19中。另外,對(duì)解碼信息存儲(chǔ)部17內(nèi)的解碼信息,將模擬完的命令的有效標(biāo)志設(shè)為0(無(wú)效)。
圖15示出執(zhí)行信息的一例。圖中的執(zhí)行信息與圖14所示解碼信息相比,主要的不同之處在于追加存儲(chǔ)前的存儲(chǔ)器內(nèi)容。下面,省略與解碼信息相同點(diǎn)的說(shuō)明,主要說(shuō)明不同點(diǎn)。
命令X-Y的[命令PC]及存儲(chǔ)器訪問(wèn)命令的[命令PC]意味著相當(dāng)于目標(biāo)處理器中的執(zhí)行程序計(jì)數(shù)器內(nèi)容的命令地址。[存儲(chǔ)前數(shù)據(jù)]在存儲(chǔ)器訪問(wèn)命令為存儲(chǔ)命令的情況下是存儲(chǔ)器寫(xiě)前的存儲(chǔ)器數(shù)據(jù),輸出到存儲(chǔ)器值保存部32,用于復(fù)原存儲(chǔ)器訪問(wèn)命令執(zhí)行前的狀態(tài)。
執(zhí)行信息存儲(chǔ)部19是存儲(chǔ)圖15所示執(zhí)行信息的存儲(chǔ)器區(qū)域。執(zhí)行信息由執(zhí)行模塊18及完成處理模塊20參照及更新。
完成處理模塊完成處理模塊20在從調(diào)度模塊23接收?qǐng)?zhí)行指示123時(shí),若互鎖標(biāo)志127不為1,則模擬目標(biāo)處理器的WB步驟的1周期的動(dòng)作。即,完成處理模塊20從執(zhí)行信息存儲(chǔ)部19中讀出執(zhí)行信息,對(duì)有效標(biāo)志為1(有效)的命令,進(jìn)行WB(回寫(xiě))動(dòng)作,將完成信息存儲(chǔ)在完成信息存儲(chǔ)部21中。另外,對(duì)執(zhí)行信息存儲(chǔ)部19內(nèi)的執(zhí)行信息,將完成的命令的有效標(biāo)志設(shè)為0(無(wú)效)。
其中,在本實(shí)施例中,因?yàn)榇鎯?chǔ)器訪問(wèn)命令以外的命令中向寄存器的回寫(xiě)在執(zhí)行步驟中完成,所以幾乎所有命令不需要完成處理。
圖16示出完成信息的一例。圖中,完成信息與圖15所示執(zhí)行信息一樣,所以省略說(shuō)明。其中,[命令PC]意味著相當(dāng)于目標(biāo)處理器中的完成程序計(jì)數(shù)器內(nèi)容的命令地址。
完成信息存儲(chǔ)部21是存儲(chǔ)圖16所示[完成]信息的存儲(chǔ)器區(qū)域。
過(guò)去狀態(tài)更新控制部22對(duì)于來(lái)自調(diào)度模塊23的查詢(xún)115,在共同信息存儲(chǔ)部13中存儲(chǔ)的互鎖標(biāo)志為1的情況下,響應(yīng)禁止從第1寄存器文件模塊11向第2寄存器文件模塊31復(fù)制寄存器文件的數(shù)據(jù)的更新禁止通知116,在互鎖標(biāo)志為0的情況下,響應(yīng)不禁止復(fù)制的更新禁止通知16。這里,第2寄存器文件模塊31通常保存1周期前的第1寄存器文件模塊11的內(nèi)容。過(guò)去狀態(tài)更新控制部22通知禁止是因?yàn)樵谟捎诎l(fā)生互鎖而使EX/MEM步驟占2周期的情況下,在第2寄存器文件模塊31中保存EX/MEM步驟開(kāi)始前的狀態(tài)的寄存器數(shù)據(jù)。
調(diào)度(scheduling)模塊調(diào)度模塊23在接收模擬執(zhí)行指示101時(shí),進(jìn)行調(diào)度,以模擬同時(shí)執(zhí)行多個(gè)命令的1周期大小的流水線處理,在完成1周期的模擬后,將響應(yīng)102輸出到命令模擬部30。
圖17是表示基于調(diào)度模塊23的調(diào)度命令群的模擬處理的流程圖。
如圖所示,調(diào)度模塊23在從模擬控制部34接收模擬執(zhí)行指示101時(shí)(S11是),通過(guò)調(diào)用過(guò)去狀態(tài)更新控制部22,附加查詢(xún)115(S12),若作為響應(yīng),更新禁止通知116不禁止更新第2寄存器文件模塊31(S13是),則將第1寄存器文件模塊11的內(nèi)容復(fù)制到第2寄存器文件模塊31(S14),若禁止(S13否),則不復(fù)制,由此順序輸出執(zhí)行指示123、124、125、126(S15-18)。執(zhí)行指示123-126在模擬程序中以函數(shù)調(diào)用的形式實(shí)現(xiàn)。因此,通過(guò)按完成處理模塊20、執(zhí)行模塊18、解碼模塊16、取得模塊14的順序執(zhí)行,由此進(jìn)行命令群的1周期大小的流水線處理。并且,調(diào)度模塊23將通知1周期的流水線處理完成的響應(yīng)102輸出到模擬控制部34。
命令模擬部30命令執(zhí)行狀態(tài)保持部25保持取得信息存儲(chǔ)部15、解碼信息120、執(zhí)行信息121、完成信息存儲(chǔ)部21中分別保持的取得信息119、解碼信息120、執(zhí)行信息121、完成信息122的復(fù)制,并按照來(lái)自模擬控制部34的命令單位或周期單位的模擬執(zhí)行通知,將取得信息119、解碼信息120、執(zhí)行信息121及完成信息122作為當(dāng)前流水線中的命令執(zhí)行狀態(tài)輸出到流水線狀態(tài)顯示部24。
第2寄存器文件模塊31保持第1寄存器文件模塊11的1周期以上之前(即一命令群執(zhí)行前)的寄存器數(shù)據(jù)的復(fù)制。該保持內(nèi)容被用于復(fù)原一命令群執(zhí)行后該命令群中包含的各命令的執(zhí)行前的寄存器數(shù)據(jù)。
存儲(chǔ)器值保存部32在執(zhí)行模塊18中執(zhí)行存儲(chǔ)命令的模擬的情況下,將該存儲(chǔ)器命令的寫(xiě)入端地址的存儲(chǔ)前的存儲(chǔ)器值保留后進(jìn)行保持。
資源(resource)信息變更部33當(dāng)從模擬控制部34接收停止命令的通知時(shí),復(fù)原該停止命令的模擬執(zhí)行前的資源狀態(tài)。該停止命令指定流水線模擬部10的模擬執(zhí)行完的最后命令群中包含的任一命令。資源信息變更部33根據(jù)流水線模擬部10的命令群的模擬執(zhí)行后的資源與執(zhí)行前的資源,復(fù)原通知的停止命令還未被模擬時(shí)的資源(存儲(chǔ)器數(shù)據(jù)及寄存器數(shù)據(jù))狀態(tài)。換言之,復(fù)原對(duì)應(yīng)于直到停止命令之前的命令為止進(jìn)行模擬的情況。這里,將命令群的模塊執(zhí)行后的資源保持在第1寄存器文件模塊11及存儲(chǔ)器模塊12中。另外,將該命令群的模擬執(zhí)行前的資源保持在第2寄存器文件模塊31、存儲(chǔ)器值保存部32中。
具體而言,當(dāng)停止命令為命令X時(shí),資源信息變更部33復(fù)原命令群中的命令X、Y及Z的模擬前的狀態(tài)。當(dāng)停止命令為命令Y時(shí),資源信息變更部33復(fù)原命令群中的命令Y及Z的模擬前的狀態(tài),當(dāng)停止命令為命令Z時(shí),復(fù)原命令群中的命令Z的模擬前的狀態(tài)。復(fù)原時(shí),資源信息變更部33參照?qǐng)D14所示執(zhí)行信息121,判斷由命令X、Y、Z、存儲(chǔ)器訪問(wèn)命令中有效命令更新的資源,取得命令X、Y、Z、存儲(chǔ)器訪問(wèn)命令各自模擬前的資源。將取得數(shù)據(jù)中表示停止命令之前的狀態(tài)作為寄存器數(shù)據(jù)133或存儲(chǔ)器內(nèi)容135輸出到調(diào)試器3a。
模擬控制部34對(duì)應(yīng)于模擬執(zhí)行指示進(jìn)行命令單位的模擬控制與周期單位的模擬控制。作為命令單位的模擬執(zhí)行,模擬控制部34保持表示停止命令是哪個(gè)的停止命令指針,按照來(lái)自調(diào)試器3a的模擬執(zhí)行指示131,控制命令單位的模擬執(zhí)行,作為結(jié)果,將停止命令通知改善到調(diào)試器3a。即,模擬控制部34在流水線模擬部10的命令群模擬中將之前執(zhí)行完的多個(gè)命令的任一個(gè)作為停止命令來(lái)管理,當(dāng)接收模擬執(zhí)行指示131時(shí),在符合中斷條件的命令存在于流水線模擬部10的之前模擬完的命令群中的情況下,將停止命令指針更新為符合中斷條件的命令,將停止命令通知132輸出到調(diào)試器3a及資源信息變更部33。另一方面,在符合中斷條件的命令不存在于流水線模擬部10的之前模擬完的命令群中的情況下,向流水線模擬部10輸出模擬執(zhí)行指示101,使命令群的模擬前進(jìn)一周期。這樣,輸出模擬執(zhí)行指示101,直到符合中斷條件的命令存在于之前的命令群的模擬結(jié)果中。另外,作為周期單位的模擬,模擬控制部34將停止命令設(shè)為命令群的開(kāi)頭命令(時(shí)間段X的命令),控制成將流水線模擬部10在周期單位下的模擬結(jié)果輸出到調(diào)試器3a。
圖18表示示出基于模擬控制部34的命令單位的模擬控制的流程圖。
圖中,模擬控制部34若從調(diào)試器3a接收斷點(diǎn)的指定或執(zhí)行指示、步驟執(zhí)行指示等(S21),則如果該指示131是步驟執(zhí)行指示(如果進(jìn)行中斷條件的指定),則將中斷條件設(shè)定為下一[執(zhí)行完的命令](S23)。之后,模擬控制部34在當(dāng)前的停止命令相當(dāng)于命令Z的情況下(S24是),向調(diào)度模塊23輸出模擬執(zhí)行指示101,待機(jī),直到接收響應(yīng)102(S30),在接收響應(yīng)后,將周期數(shù)增加+1。由此,在流水線模擬部10中重新進(jìn)行下一命令群的模擬。另外,周期數(shù)不是命令單位的模擬周期數(shù),而是命令群?jiǎn)挝坏哪M周期數(shù)。從而,模擬控制部34正確計(jì)數(shù)目標(biāo)處理器的周期數(shù)。
并且,模擬控制部34判斷模擬的新的命令群中的命令X是否執(zhí)行完且符合中斷條件(S32)。就命令X是否執(zhí)行完的判斷而言,若存儲(chǔ)在執(zhí)行信息存儲(chǔ)部19中的執(zhí)行信息中的命令X的有效標(biāo)志為1(有效)且存儲(chǔ)在共同信息存儲(chǔ)部13中的互鎖標(biāo)志為0(不在互鎖中),則模擬控制部34判斷為執(zhí)行完。這是因?yàn)槿粲行?biāo)志為0(無(wú)效),則該命令群中不存在有效命令X,若互鎖標(biāo)志為1(互鎖中),則即使存在命令X,命令群的模擬也未完成。命令Y、Z是否執(zhí)行完的判斷也一樣。
S32的判斷結(jié)果,在命令X執(zhí)行完且符合中斷條件的情況下,將停止命令指針更新為命令X(S33),模擬控制部34將更新后的停止命令作為停止命令通知132通知給資源信息變更部33及調(diào)試器3a(S34)。S32的判斷結(jié)果,在命令X未執(zhí)行完或不符合中斷條件的情況下,前進(jìn)到S26。
另外,當(dāng)前的停止命令是命令Y(S25是),則模擬控制部34判斷命令Z是否執(zhí)行完且符合中斷條件(S28)。S28的判斷結(jié)果,在命令Z執(zhí)行完且符合中斷條件的情況下,將停止命令指針更新為命令Z(S29),將更新后的停止命令作為停止命令通知132通知給資源信息變更部33及調(diào)試器3a(S34)。S28的判斷結(jié)果,在命令Z未執(zhí)行完或不符合中斷條件的情況下,前進(jìn)到S30。
另外,模擬控制部34在當(dāng)前的停止命令是命令X時(shí)(S25中判斷為不是命令Y時(shí)),判斷命令Y是否執(zhí)行完且符合中斷條件(S26)。S26的判斷結(jié)果,在命令Y執(zhí)行完且符合中斷條件的情況下,將停止命令指針更新為命令Y(S27),將更新后的停止命令作為停止命令通知132通知給資源信息變更部33及調(diào)試器3a(S34)。S26的判斷結(jié)果,在命令Y未執(zhí)行完或不符合中斷條件的情況下,前進(jìn)到S38。
這樣,模擬控制部34依次將命令群的1周期的模擬執(zhí)行指示101輸出到流水線模擬部10,直到在命令群的模擬結(jié)果中發(fā)現(xiàn)符合中斷條件的命令。因此,在發(fā)現(xiàn)停止命令的時(shí)刻,必需保存該停止命令所屬命令群的模塊后與模擬前的狀態(tài)(資源)。從而可對(duì)命令單位進(jìn)行模擬執(zhí)行前后的狀態(tài)復(fù)原。
圖19是表示資源信息變更部33的結(jié)構(gòu)框圖。如圖所示,資源信息變更部33具備通常命令結(jié)果生成部35、第1補(bǔ)全部36、第2補(bǔ)全部37、存儲(chǔ)器內(nèi)容選擇部38,復(fù)原從模擬控制部34通知的停止命令的模擬執(zhí)行前的狀態(tài)。
通常命令結(jié)果生成部35當(dāng)從模擬控制部34接收停止命令通知132時(shí),根據(jù)第1寄存器文件模塊11、存儲(chǔ)器模塊12、第2寄存器文件模塊31、存儲(chǔ)器值保存部32的內(nèi)容,復(fù)原該停止命令執(zhí)行前的寄存器文件。通常命令結(jié)果生成部35無(wú)論通知的命令是通常命令還是延遲命令都復(fù)原寄存器文件,但在延遲命令的情況或存在輸出依賴(lài)的情況下,由第1補(bǔ)全部36、第2補(bǔ)全部37來(lái)補(bǔ)充復(fù)原。
圖20示出通常命令結(jié)果生成部35的詳細(xì)結(jié)構(gòu)的框圖。如圖所示,通常命令結(jié)果生成部35具備每個(gè)命令寄存器文件保留部39、保持命令X的模擬執(zhí)行結(jié)果的第3寄存器文件模塊40、保持命令Y的模擬執(zhí)行結(jié)果的第4寄存器文件模塊41。
每個(gè)命令寄存器文件保留部39接收從執(zhí)行模塊18輸出的命令X的命令執(zhí)行通知,復(fù)制第1寄存器文件模塊11的內(nèi)容,作為在第3寄存器文件模塊40中執(zhí)行到命令X之前的情況下的模擬執(zhí)行結(jié)果,同樣接收命令Y的命令執(zhí)行通知,復(fù)制第1寄存器文件模塊11的內(nèi)容,作為在第4寄存器文件模塊41中執(zhí)行到命令Y之前的情況下的模擬執(zhí)行結(jié)果,從而,將依次執(zhí)行命令X、Y、Z的情況下各寄存器數(shù)據(jù)存儲(chǔ)在第3、第4、第1寄存器文件模塊中。此時(shí),第2寄存器文件模塊31存儲(chǔ)之前的命令群的執(zhí)行結(jié)果。另外,每個(gè)命令寄存器文件保留部39當(dāng)從模擬控制部34接收停止命令的通知時(shí),若停止命令是命令X,則輸出表示其前命令群的執(zhí)行結(jié)果的第2寄存器文件模塊31的內(nèi)容。同樣,若停止命令是命令Y,則輸出第3寄存器文件模塊40的內(nèi)容,若停止命令是命令Z,則將第4寄存器文件模塊41的內(nèi)容經(jīng)第1補(bǔ)全部36、第2補(bǔ)全部37輸出到調(diào)試器3a。該輸出在命令X-Z是通常命令(不產(chǎn)生延遲的命令)的情況下,不必接收第1補(bǔ)全部36、第2補(bǔ)全部37的補(bǔ)充,原樣輸出到調(diào)試器3a。
這樣,通常命令結(jié)果生成部35在命令群中不包含延遲命令的情況下,即使停止命令是命令X、Y、Z之一,也生成該停止命令之前的命令執(zhí)行完的時(shí)刻的寄存器文件的內(nèi)容。另外,在目標(biāo)處理器構(gòu)成為不允許相同命令群中的輸出依賴(lài)的情況下,可省略第3、第4寄存器文件模塊40、41。在省略的情況下,參照?qǐng)?zhí)行信息存儲(chǔ)部19內(nèi)的寄存器更新信息,通過(guò)從第1寄存器文件模塊11讀出命令X、Y、Z各命令更新后的寄存器的內(nèi)容、從第2寄存器文件模塊12讀出此外的寄存器的內(nèi)容,通常命令結(jié)果生成部35生成應(yīng)輸出的內(nèi)容。
第1補(bǔ)全部36在EX步驟中延遲命令(存儲(chǔ)器訪問(wèn)命令)包含于命令群中的情況下,從執(zhí)行信息存儲(chǔ)部19參照該延遲命令更新的寄存器編號(hào)與更新內(nèi)容(存儲(chǔ)器訪問(wèn)數(shù)據(jù)),補(bǔ)充表示由通常命令結(jié)果生成部35生成的停止命令執(zhí)行前的狀態(tài)的寄存器文件內(nèi)容。
例如,若設(shè)裝入命令(Id R0,(R1+))占2周期,則必需在第1周期完成寄存器R1的更新,在第2周期完成寄存器R0的更新。原因在于,目標(biāo)處理器中R1的更新由在1周期中執(zhí)行的3個(gè)ALU之一分擔(dān),R0的更新由需要2周期的存儲(chǔ)器訪問(wèn)控制部209分擔(dān)。因此,執(zhí)行信息存儲(chǔ)部19保持存儲(chǔ)器訪問(wèn)命令的更新寄存器編碼和作為更新內(nèi)容的存儲(chǔ)器訪問(wèn)數(shù)據(jù)。第1補(bǔ)全部36在停止命令是比相同命令群的裝入命令靠后的命令的情況下,從執(zhí)行信息存儲(chǔ)部19中讀出存儲(chǔ)器訪問(wèn)命令的寄存器更新信息與作為更新后內(nèi)容的存儲(chǔ)器訪問(wèn)數(shù)據(jù),將更新后的寄存器作為延遲寄存器,將存儲(chǔ)器訪問(wèn)數(shù)據(jù)識(shí)別為延遲數(shù)據(jù)。
并且,第1補(bǔ)全部36通過(guò)用延遲數(shù)據(jù)來(lái)更新從通常命令結(jié)果生成部35輸出的寄存器文件內(nèi)容的延遲寄存器所對(duì)應(yīng)的部位,復(fù)原延遲命令存在情況下的寄存器文件。其中,由裝入命令更新的寄存器在由相同命令群中更靠后的命令更新的情況下(有輸出依賴(lài)的情況下),因?yàn)檠b入命令的寄存器寫(xiě)入被取消,所以不進(jìn)行補(bǔ)充。另外,在延遲命令是未更新寄存器的命令(失速命令等)的情況下,當(dāng)然也不進(jìn)行補(bǔ)充。從而,在指示命令單位的模擬的情況下,用命令單位來(lái)正確復(fù)原資源。
第2補(bǔ)全部37在MEM步驟中需要2周期以上的延遲命令、和比延遲命令靠后配置的與延遲命令存在輸出依賴(lài)關(guān)系的其它命令(下面稱(chēng)為輸出依賴(lài)命令)包含于相同命令群中的情況下,在停止命令之前有延遲命令,在停止命令之后有輸出依賴(lài)命令的情況下,與第1補(bǔ)全部36一樣用延遲數(shù)據(jù)來(lái)更新延遲寄存器,補(bǔ)充從第1補(bǔ)全部36輸出的寄存器文件的內(nèi)容。
例如,設(shè)命令Y是裝入命令(Id R1,(R2+)),命令Z是傳送命令(mov R1,3),裝入命令的EX步驟需要2周期。此時(shí),命令Y與命令Z都具有將寄存器R1設(shè)為目的的輸出依賴(lài)關(guān)系,但命令Z的寄存器R1必需進(jìn)行更新。這是因?yàn)槟繕?biāo)處理器在EX步驟的第1周期中進(jìn)行裝入命令的寄存器R2的增加與mov命令的寄存器R1的更新,在第2周期中通過(guò)命令取消部220取消裝入命令的寄存器R1的更新。但是,在命令單位的模擬中,由還未執(zhí)行的命令Z來(lái)取消命令Y的執(zhí)行結(jié)果是不自然的。與其這樣不如由命令Z通過(guò)改寫(xiě)寄存器R1來(lái)取消。因此,第2補(bǔ)全部37生成與挨個(gè)順序執(zhí)行命令Y、Z的情況相同的結(jié)果,所以即使是通過(guò)輸出依賴(lài)來(lái)取消的執(zhí)行內(nèi)容,也可補(bǔ)充其執(zhí)行結(jié)果。
圖21是表示存儲(chǔ)器值保存部32的詳細(xì)結(jié)構(gòu)的框圖。如圖所示,存儲(chǔ)器值保存部32具備保持由存儲(chǔ)命令寫(xiě)入前的寄存器數(shù)據(jù)的存儲(chǔ)前數(shù)據(jù)存儲(chǔ)部42、保持由該存儲(chǔ)命令指定的地址的存儲(chǔ)地址存儲(chǔ)部43、和存儲(chǔ)器內(nèi)容變更部44。
存儲(chǔ)器內(nèi)容變更部44當(dāng)從資源信息變更部33接收停止命令有知時(shí),在命令群中的停止命令之后包含存儲(chǔ)命令的情況下,復(fù)原該存儲(chǔ)命令執(zhí)行前的存儲(chǔ)器內(nèi)容。在從資源信息變更部33指定讀出的存儲(chǔ)器地址及大小104中包含該存儲(chǔ)命令的地址端的地址的情況下,使存儲(chǔ)前數(shù)據(jù)存儲(chǔ)部42的數(shù)據(jù)代替存儲(chǔ)器模塊12的數(shù)據(jù)包含于存儲(chǔ)器內(nèi)容105中,輸出到資源信息變更部33。
例舉程序?qū)嵗齺?lái)說(shuō)明上述構(gòu)成的實(shí)施形態(tài)中的模擬系統(tǒng)1。
第1程序例圖22是表示模擬對(duì)象的第1程序例的圖。圖的程序例僅表示由同時(shí)執(zhí)行的命令6、7構(gòu)成的命令群1和由命令8構(gòu)成的命令群2。向各命令標(biāo)記表示命令地址的[PC]、[助記符]、[模擬結(jié)果]、[顯示結(jié)果]和[停止]。設(shè)命令群1的模擬之前的狀態(tài)為{R0、R1、R2、R3、F0}={1、0、0、0、1}。
表示命令模擬部30以命令單位來(lái)模擬該命令后的狀態(tài)(圖中僅標(biāo)記R0-R3,F(xiàn)0)。[顯示結(jié)果]表示當(dāng)該命令是停止命令時(shí)顯示在調(diào)試器3中的狀態(tài),表示該停止命令執(zhí)行前的狀態(tài)。[停止]表示在將該命令設(shè)為中斷條件的情況下是否中斷(停止),即該命令是否為停止命令。
該程序例的情況下,命令6、8變?yōu)橥V姑?,但命?未變?yōu)橥V姑?。這是因?yàn)槊?因標(biāo)記F0無(wú)效,所以即使進(jìn)行將命令7設(shè)為中斷條件的模擬,也不能中斷。此時(shí),模擬系統(tǒng)1在停止命令的檢測(cè)中,在命令的模擬執(zhí)行前不判斷中斷條件,在命令群的模擬執(zhí)行后,判斷中斷條件。從而,得到模擬與目標(biāo)處理器的程序的執(zhí)行路徑(或分支路徑)相同的執(zhí)行路徑(或分支路徑)的結(jié)果。
具體而言,在流水線模擬部10的命令群1的模擬中,執(zhí)行模塊18通過(guò)命令6的模擬來(lái)復(fù)位標(biāo)記F0,所以取消命令7的模擬,將復(fù)位命令7的有效標(biāo)記的執(zhí)行信息122存儲(chǔ)在執(zhí)行信息存儲(chǔ)部19中。模擬控制部34當(dāng)命令群1的模擬結(jié)果中有效標(biāo)記為0時(shí)判斷為還未執(zhí)行命令(或不存在命令),所以不對(duì)命令7進(jìn)行是否符合中斷條件的判斷。因此,命令7未變?yōu)橥V姑睢?br> 這樣,模擬系統(tǒng)1不對(duì)命令群?jiǎn)挝煌V鼓M,而對(duì)命令單位停止模擬。并且,在目標(biāo)處理器具備取消機(jī)構(gòu)的情況下,也可正確模擬命令群中的命令取消。
第2程序例圖23是表示模擬對(duì)象的第2程序例的圖。圖的程序例表示由同時(shí)執(zhí)行的命令1-3構(gòu)成的命令群1和由命令4、5構(gòu)成的命令群2。各命令的[PC]、[助記符]、[顯示結(jié)果]、[停止]與圖22一樣。其中,設(shè)命令群1的模擬之前的狀態(tài)為{R0、R1、R2、R3、R4、R5、R6}={10、5、0、0、0、1、2},mem(0)=100、mem(4)=200。
該程序例中的命令3是指示將寄存器R4的內(nèi)容設(shè)為地址,讀出存儲(chǔ)器數(shù)據(jù),裝入到寄存器R3上,還將寄存器R4增加+4的命令。命令4是指示將寄存器R2的數(shù)據(jù)、寄存器R4的內(nèi)容作為地址存儲(chǔ)在存儲(chǔ)器中,還將寄存器R4增加+4的命令。命令3與命令4存在數(shù)據(jù)依賴(lài)關(guān)系。即,命令4使用命令3將寄存器R4增加+4的結(jié)果,所以若命令3未執(zhí)行完,則命令4不能正確執(zhí)行。
這點(diǎn)在目標(biāo)處理器中通過(guò)圖10中說(shuō)明的發(fā)送來(lái)防止發(fā)生互鎖。即,在命令3的執(zhí)行步驟中,由發(fā)送單元253將增加+4的寄存器R4的數(shù)據(jù)在下一周期提供給命令4的執(zhí)行步驟。圖10中以裝入命令的執(zhí)行步驟占2周期的情況為前提,所以盡管發(fā)生1周期的互鎖,該互鎖不會(huì)導(dǎo)致數(shù)據(jù)依賴(lài)關(guān)系,而導(dǎo)致2周期的執(zhí)行步驟。在裝入命令的執(zhí)行步驟僅為1周期的情況下,即便圖10也不發(fā)生互鎖。
對(duì)于與之對(duì)應(yīng)的模擬系統(tǒng)1的模擬而言,區(qū)分(1)命令3的裝入命令在1周期結(jié)束的情況、(2)命令3的裝入命令需要2周期的情況來(lái)說(shuō)明。
(1)命令3(裝入命令)的執(zhí)行步驟在1周期結(jié)束的情況執(zhí)行模塊18在命令3的執(zhí)行步驟的模擬中存儲(chǔ)第1寄存器文件模塊11的寄存器R4的數(shù)據(jù)。并且,執(zhí)行模塊18在下一周期中將第1寄存器文件模塊11的寄存器R4用作命令4的執(zhí)行步驟的模擬來(lái)進(jìn)行命令4的模擬。此時(shí),模擬系統(tǒng)1使用第1寄存器文件模塊11來(lái)實(shí)現(xiàn)相當(dāng)于目標(biāo)處理器的發(fā)送的功能。
另一方面,在通過(guò)中斷條件或步驟執(zhí)行將命令4作為停止命令的情況下,模擬控制部34如圖18所示流程那樣,由于就流水線模擬部10的命令群2的模擬結(jié)果而言命令X與命令4一致,所以將停止命令更新為命令X,通知調(diào)試器3a及資源信息變更部33。資源信息變更部33復(fù)原命令X的執(zhí)行前的狀態(tài),將寄存器數(shù)據(jù)133及存儲(chǔ)器內(nèi)容135通知調(diào)試器3a。這樣,命令X(命令4)之前的命令3的模擬結(jié)果變?yōu)閳D23的命令4的顯示結(jié)果欄。
另外,在該狀態(tài)下調(diào)試器3a參照mem(4)的情況下,因?yàn)轱@示命令4(存儲(chǔ)命令)執(zhí)行前的mem(4),所以資源信息變更部33顯示保存到存儲(chǔ)器值保存部32中的值200。
(2)命令3(裝入(load)命令)的執(zhí)行步驟需要2周期的情況該情況下,也與(1)一樣,得到圖23所示的顯示結(jié)果,但與(1)的不同之處在于模擬系統(tǒng)1進(jìn)行2周期的模擬。這是因?yàn)閷?duì)目標(biāo)處理器的周期數(shù)也正確進(jìn)行模擬。
具體而言,命令3被設(shè)定為指示將解碼信息存儲(chǔ)部17中的解碼信息120中對(duì)寄存器R4的+4的增加的[命令Z]及R4作為地址,讀出存儲(chǔ)器數(shù)據(jù)并存儲(chǔ)在R3中的[存儲(chǔ)器訪問(wèn)命令]。執(zhí)行模塊18在命令3的執(zhí)行步驟的第1周期的模擬中,將第1寄存器文件模塊11的寄存器R4更新為該[命令Z](寄存器R4的+4增加)的模擬,同時(shí),設(shè)置互鎖標(biāo)記。在第2周期模擬該[存儲(chǔ)器訪問(wèn)命令]。
并且,命令3的第1周期的下一周期中,命令4可利用命令Z的模擬結(jié)果(第1寄存器文件模塊11的更新完的寄存器R4)。由此可實(shí)現(xiàn)與發(fā)送一樣的功能。
另一方面,在通過(guò)中斷條件或步驟執(zhí)行將命令4作為停止命令的情況下,模擬控制部34按照?qǐng)D18所示流程,與(1)一樣,復(fù)原命令X的執(zhí)行前的狀態(tài),向調(diào)試器3a通知寄存器數(shù)據(jù)133及存儲(chǔ)器內(nèi)容135。
上述(1)(2)由模擬控制部34來(lái)對(duì)命令單位決定停止命令,由資源信息變更部33決定的停止命令未執(zhí)行、復(fù)原之前命令的模擬完的狀態(tài),所以變?yōu)橄嗤Y(jié)果。另外,流水線模擬部10對(duì)周期單位進(jìn)行命令群的模擬,所以模擬控制部34中計(jì)數(shù)的周期數(shù)可比(1)的情況和(2)的情況都更正確地計(jì)數(shù)目標(biāo)處理器的周期數(shù)。
另外,圖23中的命令4(存儲(chǔ)命令)的執(zhí)行步驟為1周期的情況與(1)一樣,為2周期的情況與(2)一樣,模擬控制部34可正確計(jì)數(shù)周期數(shù)。
第3程序例圖24是表示延遲命令具有輸出依賴(lài)關(guān)系的情況下的模擬對(duì)象的第3程序例的圖。該圖的程序例中,除屬于命令群5的命令12-14外,記述流水線模擬部10的命令群5的模擬后的第1寄存器文件模塊11、第2寄存器文件模塊31、第3寄存器文件模塊40、第4寄存器文件模塊41的各內(nèi)容(圖中僅為R0-R2)、和執(zhí)行信息存儲(chǔ)部19內(nèi)的存儲(chǔ)器訪問(wèn)數(shù)據(jù)的內(nèi)容。
在該程序例中,命令13是延遲命令,且命令13與命令14具有輸出依賴(lài)關(guān)系。設(shè)命令群5的模擬之前的狀態(tài)為{R0、R1、R2}={0、0、0}mem(0)=200。另外,設(shè)命令13的寄存器訪問(wèn)需要2周期。
流水線模擬部10及模擬控制部34的動(dòng)作與第2程序例的(2)一樣。即,模擬延遲命令的2周期的執(zhí)行步驟。資源信息變更部33對(duì)存儲(chǔ)輸出依賴(lài)關(guān)系的命令13、14生成恰好順序執(zhí)行的結(jié)果。即,資源信息變更部33如圖中命令14的顯示結(jié)果欄那樣生成緊前面的命令13的模擬結(jié)果。
這點(diǎn)上,目標(biāo)處理器取消命令13的寄存器R1的更新,僅執(zhí)行命令14的寄存器R1的更新。這是為了得到按命令12、13的順序執(zhí)行的結(jié)果。
相反,資源信息變更部33若命令13的下一命令(命令14)為停止命令,則生成命令13的模擬結(jié)果,若命令14的下一命令是停止命令,則生成命令14的模擬結(jié)果。資源信息變更部33得到按命令12、13的順序執(zhí)行的結(jié)果這點(diǎn)上與目標(biāo)處理器相同,但不同之處在于資源信息變更部33對(duì)取消的命令13也生成模擬結(jié)果。在調(diào)試器3a的用戶(hù)得知存在數(shù)據(jù)依賴(lài)關(guān)系的命令結(jié)果被取消的過(guò)程這一點(diǎn)上,更便利。
具體而言,流水線模擬部10通過(guò)命令群5的模擬來(lái)更新第1、第2寄存器文件模塊11、31。此時(shí),每個(gè)命令寄存器文件保留部39從執(zhí)行模塊18接收命令執(zhí)行通知,更新第3、第4寄存器文件模塊40、41。
結(jié)果,第1寄存器文件模塊11保持命令群5的模擬之后的數(shù)據(jù)。這是命令Z(即命令14)的模擬之后的數(shù)據(jù)。第2寄存器文件模塊31保持命令群5的模擬之前的數(shù)據(jù)。第3寄存器文件模塊40保持命令X(命令12)的模擬后的數(shù)據(jù),第4寄存器文件模塊41保持命令Y(即命令13)模擬后的數(shù)據(jù)。執(zhí)行信息存儲(chǔ)部19內(nèi)的存儲(chǔ)器訪問(wèn)數(shù)據(jù)保持由命令13裝入的存儲(chǔ)器內(nèi)容。
當(dāng)指示命令14作為停止命令時(shí),資源信息變更部33將第2補(bǔ)全部37對(duì)第4寄存器文件模塊41的數(shù)據(jù)補(bǔ)充了存儲(chǔ)器訪問(wèn)數(shù)據(jù)后的數(shù)據(jù)作為寄存器數(shù)據(jù)133輸出到調(diào)試器3a。
這樣,根據(jù)模擬系統(tǒng)1,在延遲命令與其它命令存在輸出依賴(lài)關(guān)系的情況下,可得到順序執(zhí)行這些命令的命令單位的模擬結(jié)果,并且,還可正確計(jì)數(shù)命令群?jiǎn)挝坏闹芷跀?shù)。
指令及顯示動(dòng)作圖26表示在指令輸入窗口W3輸入的指令的一例,作為指定命令群的周期單位的模擬的用戶(hù)操作。圖中,[set stepmode,cycle]是將步驟執(zhí)行模式指定為周期單位而非命令單位的模擬(周期步驟模式)的指令。該指令從用戶(hù)界面4經(jīng)調(diào)試器3a輸入模擬控制部34。在該指令之后,模擬控制部34作為步驟執(zhí)行模式的默認(rèn)值,進(jìn)行周期單位的模擬,將模擬結(jié)果輸出到調(diào)試器3a。
圖27表示在指令輸入窗口W3輸入的指令的一例,作為指定命令單位的模擬的用戶(hù)操作。圖中,[set stepmode,Inst]是將步驟執(zhí)行模式指定為命令單位模擬(命令步驟模式)的指令。該指令從用戶(hù)界面4經(jīng)調(diào)試器3a輸入模擬控制部34。在該指令之后,模擬控制部34作為步驟執(zhí)行模式的默認(rèn)值,進(jìn)行命令單位的模擬,將結(jié)果輸出到調(diào)試器3a。通過(guò)這些指令,用戶(hù)可選擇地切換命令單位的模擬結(jié)果與命令群?jiǎn)挝坏哪M或命令群的周期單位的模擬。
下面,用圖28-圖33來(lái)說(shuō)明對(duì)應(yīng)于用戶(hù)的上述指令輸入進(jìn)行顯示的顯示例。
圖28是表示流水線狀態(tài)的顯示例的圖。在圖中的指令輸入窗口W3中,[display pipeline]指令是指示顯示流水線狀態(tài)窗口W7的指令。該指令從用戶(hù)界面4經(jīng)調(diào)試器3a輸入模擬控制部34。通過(guò)該指令,模擬控制部34將命令單位或周期單位的模擬執(zhí)行通知輸出到命令執(zhí)行狀態(tài)保持部。按照該模擬執(zhí)行通知,命令執(zhí)行狀態(tài)保持部25將其保持內(nèi)容(取得信息、解碼信息、執(zhí)行信息、完成信息)輸出到流水線狀態(tài)顯示部24。流水線狀態(tài)顯示部24按照取得信息、解碼信息、執(zhí)行信息、完成信息,生成圖中流水線狀態(tài)窗口W7中所示的表示流水線的命令執(zhí)行狀態(tài)的顯示圖像。
在圖中的流水線狀態(tài)窗口W7的顯示例中,在IF、DC、EX、WB的每個(gè)步驟中,表示PC、與時(shí)間段X、Y、Z的各命令和其狀態(tài)。PC將時(shí)間段X、Y、Z中時(shí)間段X的命令地址作為代表進(jìn)行表示。每個(gè)步驟、每個(gè)時(shí)間段的命令由助記符標(biāo)記顯示,同時(shí),通過(guò)實(shí)線框、虛線框、粗線框、網(wǎng)線框或顏色區(qū)分等修飾顯示來(lái)表示狀態(tài)。
圖中,實(shí)線框表示有效命令。虛線框表示無(wú)效命令或命令不存在。例如,DC步驟的時(shí)間段X中存在1個(gè)有效命令(cmp命令),時(shí)間段Y、Z中不存在命令。在Ex步驟的時(shí)間段X、Y中存在兩個(gè)命令(add命令、Id命令),在時(shí)間段Z中存在無(wú)效化(取消)的命令(帶執(zhí)行條件的命令等)。在DC步驟中,僅時(shí)間段X中單獨(dú)存在cmp命令,這是因?yàn)橄乱籲ot命令是將cmp命令的比較結(jié)果設(shè)為執(zhí)行條件的帶執(zhí)行條件的命令。即,因?yàn)樵赾mp命令與not命令之間存在數(shù)據(jù)依賴(lài)關(guān)系。
粗線框的強(qiáng)調(diào)顯示表示示意停止命令(圖中add命令)的停止命令標(biāo)志M3。網(wǎng)線表示命令執(zhí)行完。圖中,通過(guò)EX步驟中的執(zhí)行來(lái)執(zhí)行完。
圖29是表示在圖28的流水線執(zhí)行狀態(tài)下再通過(guò)命令單位的模擬來(lái)步驟執(zhí)行1命令時(shí)的顯示例的圖。圖中的指令輸入窗口W1中,[s]指令是指示步驟執(zhí)行的指令。圖中,設(shè)定在命令步驟模式。
通過(guò)該步驟執(zhí)行指令,模擬控制部34通過(guò)命令單位的模擬來(lái)模擬1命令。從而,如圖中的流水線狀態(tài)窗口W7那樣,add命令變?yōu)楸硎緢?zhí)行完的網(wǎng)線顯示,停止命令標(biāo)志M3移動(dòng)到add命令的下一Id命令。
圖30是表示在圖29的流水線執(zhí)行狀態(tài)下還通過(guò)[s]指令來(lái)由命令單位的模擬步驟執(zhí)行1命令時(shí)的顯示例的圖。
通過(guò)該步驟執(zhí)行指令,模擬控制部34通過(guò)命令單位的模擬來(lái)模擬1命令。從而,模擬圖29中帶停止命令標(biāo)志M3的Id命令,下一命令變?yōu)橥V姑?。此時(shí),因?yàn)橄乱籵r命令如虛線所示為無(wú)效化的命令(取消的命令),所以Id命令的下一有效命令(這里為cmp命令)為停止命令。結(jié)果,如圖中流水線狀態(tài)窗口W7那樣,停止命令標(biāo)志M3移動(dòng)到Id命令的下一有效的cmp命令。另外,因?yàn)镮F步驟中時(shí)間段X的jmp命令必需單獨(dú)執(zhí)行,所以時(shí)間段Y、Z中不存在命令。
圖31是表示在圖30的流水線執(zhí)行狀態(tài)下還通過(guò)[s]指令來(lái)由命令單位的模擬步驟執(zhí)行1命令時(shí)的顯示例的圖。
通過(guò)該步驟執(zhí)行指令,模擬控制部34通過(guò)命令單位的模擬來(lái)模擬1命令。從而,模擬圖29中帶停止命令標(biāo)志M3的cmp命令,下一命令變?yōu)橥V姑?。此時(shí),因?yàn)橄乱粠?zhí)行條件not的命令因cmp命令的模擬結(jié)果而無(wú)效化(取消)。結(jié)果,cmp命令的下一有效命令(mov命令)為停止命令。如圖中流水線狀態(tài)窗口W7那樣,停止命令標(biāo)志M3移動(dòng)到cmp命令的下一有效的mov命令。另外,IF步驟的各時(shí)間段中都不存在命令是因?yàn)橛捎贒C步驟的jmp命令的解碼結(jié)果,流水線被瞬態(tài)干擾(flash)。這樣,在命令單位的模擬中,命令單位的流水線狀態(tài)正確顯示于流水線狀態(tài)窗口W7中。
圖32是表示在圖31的流水線執(zhí)行狀態(tài)下還通過(guò)[s/c]指令來(lái)由周期單位而非命令單位的模擬步驟執(zhí)行1周期時(shí)的顯示例的圖。
圖中的指令輸入窗口W1中的[s/c]指令是附加了指示周期單位的步驟執(zhí)行的選項(xiàng)參數(shù)[/c]的步驟執(zhí)行指令。通過(guò)該指令,流水線狀態(tài)窗口W7表示命令群?jiǎn)挝荒M中的下一周期的狀態(tài)。結(jié)果如圖所示,停止命令標(biāo)志M3向圖31的停止命令(mov命令)的下一命令群的最初有效命令(jmp命令)移動(dòng)。DC步驟的各時(shí)間段中不存在命令。在IF步驟中取得jmp命令的jmp端的命令(兩個(gè)mov命令)。
圖33是表示在圖32的流水線執(zhí)行狀態(tài)下還通過(guò)[s/c]指令來(lái)由周期單位而非命令單位的模擬步驟執(zhí)行1周期時(shí)的顯示例的圖。圖32中,在DC步驟的各時(shí)間段中不存在命令,所以周期單位的模擬結(jié)果如圖33所示,變?yōu)镋x步驟的各時(shí)間段中不存在命令的狀態(tài)。這樣,在周期單位的模擬中,每個(gè)周期的流水線狀態(tài)被正確顯示在流水線狀態(tài)窗口W7中。
如上所述,根據(jù)本發(fā)明的實(shí)施形態(tài)的模擬系統(tǒng)1,將同時(shí)執(zhí)行多個(gè)命令的處理器設(shè)為目標(biāo),但可對(duì)命令單位進(jìn)行模擬。因此,可對(duì)同時(shí)執(zhí)行的命令單位進(jìn)行中斷,而非命令群?jiǎn)挝坏闹袛唷?br> 并且,模擬系統(tǒng)1進(jìn)行由命令群的周期單位的模擬與命令單位的模擬構(gòu)成的兩階段模擬,所以可正確模擬目標(biāo)處理器的周期數(shù)。
另外,即便在目標(biāo)處理器具有發(fā)送功能的情況、由延遲命令發(fā)生互鎖的情況及具有取消功能的情況下,也可正確模擬目標(biāo)處理器的周期數(shù)。
另外,在上述實(shí)施形態(tài)中,模擬控制部34對(duì)命令單位在進(jìn)行命令模擬后判斷是否符合中斷條件,但也可代之以在模擬之前判斷中斷條件。此時(shí),圖25中示出對(duì)圖22的第1程序例的模擬結(jié)果及顯示結(jié)果。與圖22相比,僅[顯示結(jié)果]欄不同。即,圖25的[顯示結(jié)果]欄表示與[模擬結(jié)果]欄相同的該命令的模擬結(jié)果。圖25中,在將取消的命令7設(shè)為中斷條件的情況下,成為停止。此時(shí),軟件開(kāi)發(fā)者可確認(rèn)是否取消命令7。
另外,在上述實(shí)施形態(tài)中,存儲(chǔ)器訪問(wèn)命令的MEM步驟所需周期數(shù)也可以是1周期以上的任意周期數(shù),另外,在動(dòng)態(tài)變化的情況下,適用本發(fā)明的模擬裝置可正確模擬目標(biāo)處理器的周期數(shù)。此時(shí),也可模擬存儲(chǔ)器模塊中在哪個(gè)周期來(lái)返回對(duì)存儲(chǔ)器訪問(wèn)的響應(yīng)(ACK)。
第3寄存器文件模塊40不保持全部寄存器的數(shù)據(jù),而僅保持由命令更新的寄存器的數(shù)據(jù)。第4寄存器文件模塊41也一樣。
雖然參照附圖、通過(guò)實(shí)施例來(lái)詳細(xì)描述了本發(fā)明,但值得注意的是,對(duì)本領(lǐng)域的技術(shù)人員而言,不同的改變或變更是顯而易見(jiàn)的。因此,除非這些改變或變更脫離本發(fā)明的范圍,否則應(yīng)認(rèn)為其包含在內(nèi)。
權(quán)利要求
1.一種模擬裝置,以VLIW處理器為對(duì)象,其特征在于具備第1模擬單元,模擬應(yīng)同時(shí)執(zhí)行的多個(gè)命令構(gòu)成的命令群;和第2模擬單元,根據(jù)第1模擬單元的模擬結(jié)果,生成所述命令群中每個(gè)命令的模擬結(jié)果。
2.根據(jù)權(quán)利要求1所述的模擬裝置,其特征在于所述第2模擬單元生成以下模擬結(jié)果將由第1模擬單元在緊前面模擬的命令群中包含的命令,從模擬完成返回到未模擬。
3.根據(jù)權(quán)利要求2所述的模擬裝置,其特征在于所述模擬裝置還具備顯示控制單元,使第2模擬單元的命令單位的模擬結(jié)果顯示于顯示部。
4.根據(jù)權(quán)利要求2所述的模擬裝置,其特征在于所述第2模擬單元具備判斷單元,判斷滿(mǎn)足中斷條件的命令是否包含于第1模擬單元模擬的命令群中;指示單元,在判斷為不包含的情況下,指示第1模擬單元進(jìn)行下一命令群的模擬;決定單元,在判斷為包含的情況下,將滿(mǎn)足所述中斷條件的命令決定為停止命令;和生成單元,生成將命令群中的停止命令之后的命令從模擬完成返回到未模擬的模擬結(jié)果。
5.根據(jù)權(quán)利要求1所述的模擬裝置,其特征在于所述第1模擬單元將同時(shí)執(zhí)行多個(gè)命令的流水線處理器作為對(duì)象,所述模擬裝置還具備顯示圖像生成單元,根據(jù)第1模擬單元及第2模擬單元的模擬結(jié)果,生成表示流水線中存在的命令的顯示圖像。
6.根據(jù)權(quán)利要求5所述的模擬裝置,其特征在于所述顯示圖像包含流水線的每個(gè)階段中存在的命令的標(biāo)記。
7.根據(jù)權(quán)利要求1所述的模擬裝置,其特征在于所述第1模擬單元模擬同時(shí)執(zhí)行多個(gè)命令的流水線處理器的周期單位的動(dòng)作,所述模擬裝置還具備接收單元,接收對(duì)命令單位的步驟執(zhí)行及所述周期單位的步驟執(zhí)行之一進(jìn)行指示的用戶(hù)操作;和顯示圖像生成單元,當(dāng)接收到對(duì)命令單位的步驟執(zhí)行進(jìn)行指示的用戶(hù)操作時(shí),生成表示第2模擬單元的命令單位的模擬結(jié)果的顯示圖像,當(dāng)接收到對(duì)周期單位的步驟執(zhí)行進(jìn)行指示的用戶(hù)操作時(shí),生成表示第1模擬單元的周期單位的模擬結(jié)果的顯示圖像。
8.根據(jù)權(quán)利要求7所述的模擬裝置,其特征在于所述顯示圖像包含流水線中存在的各命令的標(biāo)記。
9.根據(jù)權(quán)利要求7所述的模擬裝置,其特征在于所述顯示圖像包含流水線的每個(gè)階段中存在的命令的標(biāo)記。
10.根據(jù)權(quán)利要求1所述的模擬裝置,其特征在于所述第1模擬單元具備存儲(chǔ)部,存儲(chǔ)表示VLIW處理器的資源的第1數(shù)據(jù);保存單元,將第1數(shù)據(jù)的復(fù)制作為第2數(shù)據(jù)保存在存儲(chǔ)單元中;和第1模擬器,在保存后,通過(guò)模擬所述命令群的執(zhí)行來(lái)更新第1數(shù)據(jù),所述第2模擬單元根據(jù)第1數(shù)據(jù)及第2數(shù)據(jù),得到所述命令群中的命令單位的模擬結(jié)果。
11.根據(jù)權(quán)利要求10所述的模擬裝置,其特征在于所述保存單元將寄存器組的數(shù)據(jù)作為第2數(shù)據(jù)保存在存儲(chǔ)單元中,所述第2模擬單元將該命令在模擬執(zhí)行前的資源的數(shù)據(jù)復(fù)原為所述命令群中的命令單位。
12.根據(jù)權(quán)利要求11所述的模擬裝置,其特征在于所述保存單元還在所述命令群中存在存儲(chǔ)器寫(xiě)命令的情況下,使寫(xiě)前的存儲(chǔ)器數(shù)據(jù)包含于第2數(shù)據(jù)中,保存在存儲(chǔ)單元中。
13.根據(jù)權(quán)利要求10所述的模擬裝置,其特征在于所述第2模擬單元具備判斷單元,判斷滿(mǎn)足中斷條件的命令是否包含于第1模擬單元模擬的命令群中;指示單元,在判斷為不包含的情況下,指示第1模擬單元進(jìn)行下一命令群的模擬;和決定單元,在判斷為包含的情況下,將滿(mǎn)足所述中斷條件的命令決定為停止命令。
14.根據(jù)權(quán)利要求13所述的模擬裝置,其特征在于所述判斷單元在命令單位的模擬步驟分行中,將當(dāng)前停止命令的下一命令設(shè)為中斷條件。
15.根據(jù)權(quán)利要求13所述的模擬裝置,其特征在于所述第2模擬單元還具備復(fù)原單元,根據(jù)所述第1數(shù)據(jù)及第2數(shù)據(jù),復(fù)原在決定單元決定的停止命令的緊前面的命令之前進(jìn)行了模擬情況下的資源的數(shù)據(jù)。
16.根據(jù)權(quán)利要求13所述的模擬裝置,其特征在于所述第2模擬單元還具備復(fù)原單元,根據(jù)所述第1數(shù)據(jù)及第2數(shù)據(jù),復(fù)原在決定單元決定的停止命令之前進(jìn)行了模擬的情況下的資源的數(shù)據(jù)。
17.根據(jù)權(quán)利要求16所述的模擬裝置,其特征在于所述第1模擬器對(duì)所述命令群中的各命令生成表示由該命令變更的資源的更新信息,所述復(fù)原單元按照第1數(shù)據(jù)、第2數(shù)據(jù)及更新信息,對(duì)該命令群中的每個(gè)命令復(fù)原在該命令之前依次執(zhí)行的結(jié)果所對(duì)應(yīng)的資源數(shù)據(jù)。
18.根據(jù)權(quán)利要求10所述的模擬裝置,其特征在于所述第1模擬器以進(jìn)行流水線處理的VLIW處理器為對(duì)象,以流水線處理的周期單位進(jìn)行命令群的模擬,所述模擬裝置還計(jì)數(shù)命令群?jiǎn)挝坏哪M中的執(zhí)行周期數(shù)。
19.根據(jù)權(quán)利要求18所述的模擬裝置,其特征在于所述VLIW處理器具有取消應(yīng)同時(shí)執(zhí)行的多個(gè)命令中的命令執(zhí)行的取消機(jī)構(gòu),所述第1模擬器模擬取消機(jī)構(gòu)。
20.根據(jù)權(quán)利要求18所述的模擬裝置,其特征在于所述第1模擬器還對(duì)以模擬對(duì)象的VLIW處理器的執(zhí)行階段發(fā)生延遲周期的延遲命令,模擬延遲周期,所述復(fù)原單元按照延遲命令的更新信息來(lái)生成延遲命令的模擬結(jié)果所對(duì)應(yīng)的資源數(shù)據(jù)。
21.根據(jù)權(quán)利要求20所述的模擬裝置,其特征在于所述復(fù)原單元在模擬對(duì)象的VLIW處理器的執(zhí)行階段發(fā)生延遲周期的延遲命令之間,對(duì)相同命令群內(nèi)具有輸出依賴(lài)關(guān)系的輸出依賴(lài)命令,按照延遲命令的更新信息與輸出依賴(lài)命令的更新信息,生成輸出依賴(lài)命令的模擬結(jié)果所對(duì)應(yīng)的資源數(shù)據(jù)。
22.一種模擬方法,以VLIW處理器為對(duì)象,其特征在于具有第1步驟,模擬應(yīng)同時(shí)執(zhí)行的多個(gè)命令構(gòu)成的命令群;和第2步驟,根據(jù)第1步驟的模擬結(jié)果,生成所述命令群中每個(gè)命令的模擬結(jié)果。
23.一種程序,使計(jì)算機(jī)執(zhí)行VLIW處理器的模擬,其特征在于使計(jì)算機(jī)執(zhí)行第1步驟,模擬應(yīng)同時(shí)執(zhí)行的多個(gè)命令構(gòu)成的命令群;和第2步驟,根據(jù)第1步驟的模擬結(jié)果,生成所述命令群中每個(gè)命令的模擬結(jié)果。
全文摘要
本發(fā)明的模擬裝置是以同時(shí)執(zhí)行多個(gè)命令的流水線處理器為對(duì)象的模擬裝置,其中,具備流水線模擬部,模擬應(yīng)同時(shí)執(zhí)行的多個(gè)命令構(gòu)成的命令群;和命令模擬部,根據(jù)流水線模擬部的模擬結(jié)果,生成所述命令群中每個(gè)命令的模擬結(jié)果,命令模擬部生成將流水線模擬部在緊前面模擬的命令群中包含的命令從模擬完成返回到未模擬的模擬結(jié)果。
文檔編號(hào)G06F9/38GK1506809SQ20031012055
公開(kāi)日2004年6月23日 申請(qǐng)日期2003年12月12日 優(yōu)先權(quán)日2002年12月12日
發(fā)明者柴田耕作 申請(qǐng)人:松下電器產(chǎn)業(yè)株式會(huì)社
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
商都县| 乡宁县| 林周县| 大名县| 扶沟县| 长宁县| 邵东县| 弥勒县| 小金县| 忻州市| 竹北市| 绥宁县| 天津市| 延庆县| 茌平县| 屯门区| 扎兰屯市| 土默特右旗| 扎囊县| 惠来县| 垦利县| 青神县| 牡丹江市| 蒲城县| 嘉义市| 甘孜县| 肥乡县| 清水县| 苍溪县| 建宁县| 栾城县| 永德县| 夹江县| 靖边县| 罗城| 山东| 林甸县| 磐石市| 长岭县| 广宁县| 扎赉特旗|