專利名稱:一種面向調(diào)試的處理器驗(yàn)證方法及驗(yàn)證設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器驗(yàn)證領(lǐng)域,特別涉及一種面向調(diào)試的處理器驗(yàn)證方法及驗(yàn)證設(shè)備。
背景技術(shù):
隨著處理器流水線技術(shù)的發(fā)展,處理器復(fù)雜度的提高,處理器的驗(yàn)證逐漸成為處理器設(shè)計(jì)中耗時(shí)最多的環(huán)節(jié),用于驗(yàn)證的時(shí)間可以占到處理器設(shè)計(jì)周期的70%以上。如何提高驗(yàn)證的效率,縮短驗(yàn)證周期是一個(gè)巨大的挑戰(zhàn)。在現(xiàn)有技術(shù)的處理器驗(yàn)證中,在發(fā)現(xiàn)錯(cuò)誤而后進(jìn)行調(diào)試時(shí),因?yàn)殄e(cuò)誤只能在指令的最后一個(gè)階段-即在處理器流水線的最后一級(jí)體現(xiàn)出來,所以驗(yàn)證人員不得不從發(fā)現(xiàn)錯(cuò)誤的地點(diǎn)-即流水線最后一級(jí)逐級(jí)往前尋找錯(cuò)誤,這導(dǎo)致調(diào)試過程機(jī)械性很高,且耗費(fèi)時(shí)間長(zhǎng)。此外,超標(biāo)量亂序執(zhí)行等技術(shù)的應(yīng)用更加劇了處理器調(diào)試工作的難度。因此,需要一種自動(dòng)化的處理器驗(yàn)證環(huán)境來代替驗(yàn)證人員機(jī)械且耗時(shí)的驗(yàn)證工作,使得能夠快速定位在驗(yàn)證過程中出現(xiàn)的錯(cuò)誤、找到錯(cuò)誤原因并協(xié)助驗(yàn)證人員修正錯(cuò)誤。
發(fā)明內(nèi)容
為了解決上述問題,本發(fā)明提供了面向調(diào)試的處理器驗(yàn)證方法及驗(yàn)證設(shè)備,其中所述處理器采用流水線技術(shù)。根據(jù)本發(fā)明的一個(gè)方面,提供了一種面向調(diào)試的處理器驗(yàn)證方法,包括抓取指令通過處理器的流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息,其中所述特征信息能夠表征流水線每一級(jí)的功能執(zhí)行情況;根據(jù)處理器的預(yù)期模型,模擬出所述指令通過處理器流水線中每一級(jí)時(shí)應(yīng)產(chǎn)生的特征信息;以及將所抓取的特征信息與所模擬的特征信息進(jìn)行比較,如果發(fā)生不一致,則報(bào)出錯(cuò)誤和錯(cuò)誤原因。在所述方法的一個(gè)實(shí)施例中,還包括為進(jìn)入處理器的指令設(shè)定編號(hào),所述編號(hào)隨著指令進(jìn)入處理器流水線并且在流水線的每一級(jí)保存;其中在抓取特征信息的同時(shí)抓取編號(hào);并且其中所述模擬和比較步驟都針對(duì)與所述編號(hào)相對(duì)應(yīng)的指令而執(zhí)行。根據(jù)本發(fā)明的另一方面,提供了一種面向調(diào)試的處理器驗(yàn)證設(shè)備,包括抓取裝置,用于抓取指令通過處理器的流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息,其中所述特征信息能夠表征流水線每一級(jí)的功能執(zhí)行情況;模擬裝置,用于根據(jù)處理器的預(yù)期模型,模擬出所述指令通過處理器流水線中每一級(jí)時(shí)應(yīng)產(chǎn)生的特征信息;比較裝置,用于將所抓取的特征信息與所模擬的特征信息進(jìn)行比較,如果發(fā)生不一致,則報(bào)出錯(cuò)誤和錯(cuò)誤原因。在所述方法的一個(gè)實(shí)施例中,還包括編號(hào)裝置,用于為進(jìn)入處理器的指令設(shè)置編號(hào),所述編號(hào)隨著指令進(jìn)入處理器流水線并且在流水線的每一級(jí)保存;其中所述抓取裝置在抓取特征信息的同時(shí)抓取編號(hào);并且其中所述模擬裝置和所述比較裝置都針對(duì)與所述編號(hào)相對(duì)應(yīng)的指令進(jìn)行操作。本發(fā)明具有以下優(yōu)點(diǎn)。
1、可以顯著降低處理器調(diào)試難度。2、可以顯著降低處理器錯(cuò)誤調(diào)試時(shí)間。3、可以縮減處理器研發(fā)周期。
圖1示出本發(fā)明可應(yīng)用于其中的示例性處理器。圖2示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的面向調(diào)試的處理器驗(yàn)證方法。圖3示出根據(jù)本發(fā)明的另一個(gè)實(shí)施例的面向調(diào)試的處理器驗(yàn)證方法。圖4示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的面向調(diào)試的處理器驗(yàn)證設(shè)備和被驗(yàn)證的處理器。圖5示出根據(jù)本發(fā)明的另一個(gè)實(shí)施例的面向調(diào)試的處理器驗(yàn)證設(shè)備和被驗(yàn)證的處理器。
具體實(shí)施例方式在對(duì)本發(fā)明進(jìn)行進(jìn)一步描述之前,發(fā)明人希望對(duì)本文所出現(xiàn)的一些概念進(jìn)行解釋。本發(fā)明所提及的處理器流水線,是指以下技術(shù)將處理器的指令處理過程拆分為若干個(gè)子過程,每個(gè)子過程都可有效地在其專用功能段上與其他子過程并行執(zhí)行,從而加快了指令執(zhí)行速度,這里整個(gè)處理器指令處理過程稱為流水線,而其中所包含的每個(gè)子過程稱為流水線級(jí)。下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)描述。圖1示出本發(fā)明可應(yīng)用于其中的示例性處理器。在圖1中,處理器100采用流水線技術(shù),其流水線分為五級(jí),包括取指、譯碼、發(fā)射、 寫回、提交。取指即取指令,例如從存儲(chǔ)器(未示出)取指令以供執(zhí)行。譯碼也稱為解碼,是把所取的指令“翻譯”成期望類型的指令,例如運(yùn)算指令、控制指令(分支跳轉(zhuǎn))、訪存指令、特權(quán)指令等等。發(fā)射即將指令發(fā)射到功能部件。指令在被發(fā)射時(shí),不同類型的指令被發(fā)射到不同的功能部件中進(jìn)行操作,比如定點(diǎn)指令被發(fā)射到定點(diǎn)功能部件中,浮點(diǎn)指令被發(fā)射到浮點(diǎn)功能部件中,訪存指令被發(fā)射到訪存功能部件中。寫回以特定格式將執(zhí)行完成的結(jié)果寫回特定位置。例如如果是運(yùn)算指令,則需要返回運(yùn)算結(jié)果,如rd=ra+rb,在寫回時(shí)要返回的是寫回有效信號(hào)和運(yùn)算結(jié)果rd;如果是訪存指令,如要返回訪存結(jié)果,如load rd,imm (rb),則返回的是寫回有效信號(hào)和訪存結(jié)果 rd。如果是順序執(zhí)行的處理器,則直接寫回到寄存器堆(沒有提交階段)。如果是亂序執(zhí)行的處理器,則需要先寫回到重定序緩沖區(qū),在提交階段寫回到寄存器堆。提交提交需要修改的處理器內(nèi)容。這里的“需要修改的處理器內(nèi)容”與寫回中的 “執(zhí)行完成的結(jié)果”在一般情況下是相同的,除了對(duì)于一些指令,例如控制類指令,寫回的結(jié)果不一定需要提交。對(duì)于本領(lǐng)域技術(shù)人員而言,應(yīng)該理解的是,這里給出的處理器流水線分級(jí)的方式和流水線級(jí)的數(shù)目?jī)H僅是示例性的,根據(jù)不同應(yīng)用的需要,不同方式的處理器流水線分級(jí)以及不同數(shù)目的流水線級(jí)是可能的,例如“取指-譯碼-執(zhí)行”三級(jí)流水線、“取指-譯碼-執(zhí)行-訪存-回寫”五級(jí)流水線、“取指-譯碼-計(jì)算操作數(shù)地址-取操作數(shù)-執(zhí)行指令-寫操作數(shù)”六級(jí)流水線等等。本發(fā)明同樣適用于這樣的不同的處理器流水線分級(jí)。根據(jù)本發(fā)明的面向調(diào)試的處理器驗(yàn)證方法和驗(yàn)證設(shè)備依賴于以下原理指令在通過流水線每一級(jí)時(shí)會(huì)產(chǎn)生信息,通過采集該信息中的特定信息可以判斷指令通過該級(jí)時(shí)是否發(fā)生錯(cuò)誤。這樣的特定信息在此稱為特征信息,并且特征信息是由驗(yàn)證人員根據(jù)需要來選取的。每一級(jí)都可以有自己相應(yīng)的特征信息,例如,對(duì)于圖1所示的處理器的流水線,取指的特征信息是指令本身,即所取的指令;譯碼的特征信息是翻譯后的指令類型;發(fā)射的特征信息是將指令發(fā)射到的功能部件以及指令的操作數(shù),指令的操作數(shù)是指需要參與操作的數(shù)據(jù),比如一個(gè)加法add rd, ra, rb操作,ra和rb是需要在發(fā)射時(shí)相加的兩個(gè)源操作數(shù); 寫回的特征信息是執(zhí)行完成的指令結(jié)果;提交的特征信息是需要修改的處理器內(nèi)容。以下針對(duì)圖2-5來描述根據(jù)本發(fā)明的面向調(diào)試的處理器驗(yàn)證方法和驗(yàn)證設(shè)備。圖2示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的面向調(diào)試的處理器驗(yàn)證方法200。以下結(jié)合處理器100對(duì)該方法200進(jìn)行說明。該方法始于步驟201,抓取指令通過處理器的流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息。在步驟202,根據(jù)處理器的預(yù)期模型,模擬出所述指令通過處理器流水線中每一級(jí)時(shí)應(yīng)產(chǎn)生的特征信息。這里的預(yù)期模型是處理器設(shè)計(jì)者事先為待驗(yàn)證處理器建立的模型,旨在用于模擬出正確的比對(duì)信息。然后在步驟203, 將所抓取的特征信息與所模擬的特征信息進(jìn)行比較,如果發(fā)生不一致,則報(bào)出錯(cuò)誤和錯(cuò)誤原因,這里錯(cuò)誤原因指的是處理器流水線哪一級(jí)發(fā)生錯(cuò)誤,例如對(duì)于處理器100,如果在比較時(shí)得知在寫回級(jí)發(fā)生不一致,則停止仿真,報(bào)出錯(cuò)誤且錯(cuò)誤原因是寫回結(jié)果不正確。以上所描述的指令包括需要提交的指令和在猜測(cè)執(zhí)行模式下需要分支取消的指令。對(duì)于前者,對(duì)其依次執(zhí)行以上各個(gè)步驟;對(duì)于后者,不進(jìn)行比較,指令會(huì)一直執(zhí)行下去, 直到被取消。相比于傳統(tǒng)的驗(yàn)證方法,該方法可以幫助驗(yàn)證人員找到更具體的錯(cuò)誤地點(diǎn),使得驗(yàn)證人員能夠從更具體的地點(diǎn)-即具體流水線級(jí)來開始調(diào)試,甚至可以不用調(diào)試直接給出錯(cuò)誤地點(diǎn)。圖3示出根據(jù)本發(fā)明的另一個(gè)實(shí)施例的面向調(diào)試的處理器驗(yàn)證方法300。同樣結(jié)合處理器100對(duì)該方法300進(jìn)行說明。所述方法開始于步驟301,為進(jìn)入處理器的指令設(shè)定編號(hào),例如1000,該編號(hào)會(huì)隨著指令進(jìn)入流水線,在流水線的每一級(jí)保存。然后在步驟302,抓取指令通過處理器的流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息并且同時(shí)抓取編號(hào),在此抓取的編號(hào)例如為1000。在步驟303,根據(jù)處理器的預(yù)期模型,針對(duì)與編號(hào)1000對(duì)應(yīng)的指令,模擬出所述指令通過處理器流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息。這里的預(yù)期模型是處理器設(shè)計(jì)者事先為處理器建立的模型,旨在用于模擬出正確的比對(duì)信息。然后在步驟304,針對(duì)編碼為1000的指令,將所抓取的特征信息與所模擬的特征信息進(jìn)行比較,如果發(fā)生不一致,則報(bào)出錯(cuò)誤和錯(cuò)誤原因,類似于方法200,這里錯(cuò)誤原因同樣指的是處理器流水線哪一級(jí)發(fā)生錯(cuò)誤。類似于方法200,以上所描述的指令包括需要提交的指令和在猜測(cè)執(zhí)行模式下需要分支取消的指令。對(duì)于前者,對(duì)其依次執(zhí)行以上各個(gè)步驟;對(duì)于后者,不進(jìn)行比較,而是任由指令一直執(zhí)行下去,直到被取消。該方法300對(duì)于驗(yàn)證亂序執(zhí)行指令的處理器尤其有益。這是因?yàn)闉檫M(jìn)入處理器的指令設(shè)定了編號(hào),而所述編號(hào)能夠在亂序執(zhí)行指令的處理器中識(shí)別特定指令的執(zhí)行流程, 從而有助于快速定位亂序執(zhí)行處理器中發(fā)生的錯(cuò)誤。圖4示出根據(jù)本發(fā)明的面向調(diào)試的處理器驗(yàn)證設(shè)備400和被驗(yàn)證的處理器100。圖4中的處理器驗(yàn)證設(shè)備400包括抓取裝置401、模擬裝置402、比較裝置403。抓取裝置401耦合到處理器100的流水線的每一級(jí),從而跟蹤指令在流水線中的執(zhí)行,抓取指令通過處理器的流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息。抓取裝置401還耦合到比較裝置 403以將所抓取的信息提供到比較裝置403。模擬裝置402根據(jù)處理器的預(yù)期模型,模擬出所述指令通過處理器流水線中每一級(jí)時(shí)應(yīng)產(chǎn)生的特征信息。這里的預(yù)期模型是處理器設(shè)計(jì)者事先為待驗(yàn)證處理器建立的模型,旨在用于模擬出正確的比對(duì)信息。模擬裝置402也耦合到比較裝置403以將所模擬的特征信息提供到比較裝置403。比較裝置403將所抓取的特征信息與所模擬的特征信息進(jìn)行比較,如果發(fā)生不一致,則報(bào)出錯(cuò)誤和錯(cuò)誤原因,這里錯(cuò)誤原因指的是處理器流水線哪一級(jí)發(fā)生錯(cuò)誤,例如對(duì)于處理器100,如果在比較時(shí)得知在寫回級(jí)發(fā)生不一致,則停止仿真,報(bào)出錯(cuò)誤且錯(cuò)誤原因是寫回結(jié)果不正確。以上所描述的指令包括需要提交的指令和在猜測(cè)執(zhí)行模式下需要分支取消的指令。對(duì)于前者,上述裝置401-403對(duì)其執(zhí)行相應(yīng)操作;對(duì)于后者,比較裝置403對(duì)其不進(jìn)行比較,而是任由其一直執(zhí)行下去,直到被取消。使用該處理器驗(yàn)證設(shè)備400能夠獲得與方法200類似的益處,在此不再贅述。圖5中的處理器驗(yàn)證設(shè)備500包括編號(hào)裝置501、抓取裝置502、模擬裝置503、比較裝置504。編號(hào)裝置501耦合到處理器,指令在進(jìn)入處理器時(shí)通過編號(hào)裝置501而被設(shè)定編號(hào),例如1000,該編號(hào)會(huì)隨著指令進(jìn)入流水線,在流水線的每一級(jí)保存。這里編號(hào)裝置 501例如可以用重定序計(jì)數(shù)器來實(shí)現(xiàn),而編號(hào)可以被實(shí)現(xiàn)為計(jì)數(shù)器的計(jì)數(shù)值。抓取裝置502 耦合到處理器100的流水線的每一級(jí),從而跟蹤指令在流水線中的執(zhí)行,其抓取指令通過處理器的流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息并且同時(shí)抓取編號(hào),在此抓取的編號(hào)例如為 1000。抓取裝置502還耦合到比較裝置504以將所抓取的信息提供到比較裝置并且耦合到模擬裝置503以將所抓取的編號(hào)提供給模擬裝置503。模擬裝置503根據(jù)處理器的預(yù)期模型,針對(duì)與編號(hào)1000對(duì)應(yīng)的指令,模擬出所述指令通過處理器流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息。這里的預(yù)期模型是處理器設(shè)計(jì)者事先為處理器建立的模型,旨在用于模擬出正確的比對(duì)信息。模擬裝置503也耦合到比較裝置504以將所模擬的信息提供到比較裝置 504。比較裝置504針對(duì)編號(hào)為1000的指令,將所抓取的特征信息與所模擬的特征信息進(jìn)行比較,如果發(fā)生不一致,則報(bào)出錯(cuò)誤和錯(cuò)誤原因,類似于設(shè)備400,這里錯(cuò)誤原因同樣指的是處理器流水線哪一級(jí)發(fā)生錯(cuò)誤。類似于設(shè)備400,以上所描述的指令包括需要提交的指令和在猜測(cè)執(zhí)行模式下需要分支取消的指令。對(duì)于前者,上述裝置501-504對(duì)其執(zhí)行相應(yīng)操作;對(duì)于后者,比較裝置 504對(duì)其不進(jìn)行比較,而是任由其一直執(zhí)行下去,直到被取消。使用該處理器驗(yàn)證設(shè)備500能夠獲得與方法300類似的益處,在此不再贅述。通過上述實(shí)施例的描述,本發(fā)明的優(yōu)點(diǎn)是明顯的。本發(fā)明可以降低處理器驗(yàn)證的復(fù)雜度,減少處理器驗(yàn)證時(shí)間,準(zhǔn)確定位處理器設(shè)計(jì)中的錯(cuò)誤,縮短處理器驗(yàn)證周期和研發(fā)周期。應(yīng)該理解的是,本發(fā)明的實(shí)施例可以由軟件、硬件或由軟件和硬件的組合來實(shí)施。 就這一點(diǎn)來說,應(yīng)該注意,圖中的邏輯流程的任何塊可以表示程序步驟或互連的邏輯電路、 塊和函數(shù)、或者程序步驟和邏輯電路、塊和函數(shù)的組合。最后應(yīng)說明的是以上實(shí)施例僅用以說明而非限制本發(fā)明的技術(shù)方案,盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解依然可以對(duì)本發(fā)明進(jìn)行修改或者等同替換,而不脫離本發(fā)明的精神和范圍,而所附權(quán)利要求意在涵蓋落入本發(fā)明精神和范圍中的這些修改或者等同替換。
權(quán)利要求
1.一種面向調(diào)試的處理器驗(yàn)證方法,其中所述處理器采用流水線技術(shù),所述方法包括如下步驟抓取指令通過處理器的流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息,其中所述特征信息能夠表征流水線每一級(jí)的功能執(zhí)行情況;根據(jù)處理器的預(yù)期模型,模擬出所述指令通過處理器流水線中每一級(jí)時(shí)應(yīng)產(chǎn)生的特征信息;以及將所抓取的特征信息與所模擬的特征信息進(jìn)行比較,如果發(fā)生不一致,則報(bào)出錯(cuò)誤和錯(cuò)誤原因。
2.根據(jù)權(quán)利要求1所述的面向調(diào)試的處理器驗(yàn)證方法,還包括為進(jìn)入處理器的指令設(shè)定編號(hào),所述編號(hào)隨著指令進(jìn)入處理器流水線并且在流水線的每一級(jí)保存;其中在抓取特征信息的同時(shí)還抓取編號(hào);并且其中所述模擬和比較步驟都針對(duì)與所述編號(hào)相對(duì)應(yīng)的指令而執(zhí)行。
3.根據(jù)權(quán)利要求1或2所述的面向調(diào)試的處理器驗(yàn)證方法,其中,對(duì)于在猜測(cè)執(zhí)行模式下需要進(jìn)行分支取消的指令,不進(jìn)行比較步驟。
4.根據(jù)權(quán)利要求1或2所述的面向調(diào)試的處理器驗(yàn)證方法,其中所述錯(cuò)誤原因歸類于處理器流水線的位置。
5.一種面向調(diào)試的處理器驗(yàn)證設(shè)備,其中所述處理器采用流水線技術(shù),所述設(shè)備包括抓取裝置,用于抓取指令通過處理器的流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息,其中所述特征信息能夠表征流水線每一級(jí)的功能執(zhí)行情況;模擬裝置,用于根據(jù)處理器的預(yù)期模型,模擬出所述指令通過處理器流水線中每一級(jí)時(shí)應(yīng)產(chǎn)生的特征信息;比較裝置,用于將所抓取的特征信息與所模擬的特征信息進(jìn)行比較,如果發(fā)生不一致, 則報(bào)出錯(cuò)誤和錯(cuò)誤原因。
6.根據(jù)權(quán)利要求5所述的面向調(diào)試的處理器驗(yàn)證設(shè)備,還包括編號(hào)裝置,用于為進(jìn)入處理器的指令設(shè)置編號(hào),所述編號(hào)隨著指令進(jìn)入處理器流水線并且在流水線的每一級(jí)保存;其中所述抓取裝置在抓取特征信息的同時(shí)抓取編號(hào);并且其中所述模擬裝置和所述比較裝置都針對(duì)與所述編號(hào)相對(duì)應(yīng)的指令進(jìn)行操作。
7.根據(jù)權(quán)利要求5或6所述的面向調(diào)試的處理器驗(yàn)證設(shè)備,其中所述編號(hào)裝置是指令重定序計(jì)數(shù)器。
8.根據(jù)權(quán)利要求5或6所述的面向調(diào)試的處理器驗(yàn)證設(shè)備,其中,對(duì)于在猜測(cè)執(zhí)行模式下需要進(jìn)行分支取消的指令,所述比較裝置不對(duì)其進(jìn)行操作。
9.根據(jù)權(quán)利要求5或6所述的面向調(diào)試的處理器驗(yàn)證設(shè)備,其中所述錯(cuò)誤原因歸類于處理器流水線的位置。
全文摘要
本發(fā)明涉及面向調(diào)試的處理器驗(yàn)證方法及驗(yàn)證設(shè)備,其中所述處理器采用流水線技術(shù)。所述面向調(diào)試的處理器驗(yàn)證方法包括如下步驟抓取指令通過處理器的流水線中每一級(jí)時(shí)所產(chǎn)生的特征信息,其中所述特征信息能夠表征流水線每一級(jí)的功能執(zhí)行情況;根據(jù)處理器的預(yù)期模型,模擬出所述指令通過處理器流水線中每一級(jí)時(shí)應(yīng)產(chǎn)生的特征信息;以及將所抓取的特征信息與所模擬的特征信息進(jìn)行比較,如果發(fā)生不一致,則報(bào)出錯(cuò)誤和錯(cuò)誤原因。
文檔編號(hào)G06F17/50GK102567556SQ20101060723
公開日2012年7月11日 申請(qǐng)日期2010年12月27日 優(yōu)先權(quán)日2010年12月27日
發(fā)明者馮睿鑫 申請(qǐng)人:北京國睿中數(shù)科技股份有限公司