專利名稱:一種片上多核處理器功能驗證方法
技術(shù)領(lǐng)域:
本發(fā)明屬于片上多核處理器的功能驗證領(lǐng)域,尤其是一種片上多核處理器功能驗證方法。
背景技術(shù):
隨著處理器的發(fā)展,單核處理器已經(jīng)遭遇到頻率、性能和功耗等瓶頸。因此,處理器生產(chǎn)廠商已經(jīng)將目光轉(zhuǎn)移到“橫向發(fā)展”的片上多核處理器上來。片上多核處理器可以再無需提高頻率、無需大幅度提高功耗的前提下,提高處理器的性能。片上多核處理器的誕生給計算機體系結(jié)構(gòu)、操作系統(tǒng)、軟件設(shè)計都帶來了極大的挑戰(zhàn)。同時,如何驗證片上多核處理器的功能正確性也已經(jīng)成為片上多核處理器生產(chǎn)過程中的重中之重。用軟件(參考模型)來模擬片上多核處理器的行為,進行功能驗證,是片上多核處 理器驗證的重要方法。片上多核處理器驗證的重點和難點在于高速緩存的一致性問題,所以在驗證片上多核處理器時,應(yīng)當將主要的工作量放在這個問題上面。
發(fā)明內(nèi)容
為了克服已有片上多核處理器的功能驗證技術(shù)的無法解決串行仿真器(參考模型)模擬并行的片上多核處理器的調(diào)度問題的不足,本發(fā)明提供一種有效解決串行仿真器(參考模型)模擬并行的片上多核處理器的調(diào)度問題的片上多核處理器功能驗證方法。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種片上多核處理器功能驗證方法,建立一個參考模型以及參考模型與待驗證多核處理器的接口,所述參考模型接受設(shè)定格式的文件輸入,并根據(jù)輸入進行取指、譯碼和執(zhí)行等操作,在此過程中輸出相應(yīng)值;參考模型會將自身的輸出值和待驗證多核處理器的輸出值進行對比,以完成功能驗證。進一步,所述驗證方法的流程如下第一步,生成或者編寫一些針對片上多核處理器的程序文件,這些程序文件作為系統(tǒng)激勵被片上多核處理器載入,每個處理器核同時開始進行仿真,在仿真的過程中,片上多核處理器會記錄仿真中的運行狀態(tài)并輸出文件,其中的一些文件作為片上多核處理器參考模型的激勵輸入,另外的一些文件作為結(jié)果的對比的文件;第二步,片上多核處理器仿真結(jié)束后,程序文件會被轉(zhuǎn)化為片上多核處理器參考模型所需要的格式的程序文件,并且被參考模型讀入;同時參考模型也會讀入片上多核處理器仿真之后生成的文件;第三步,參考模型按照指令序列文件和讀寫指令序列文件中的指令順序開始仿真;其中,每條指令也分為取值,譯碼和執(zhí)行等階段;參考模型對多核處理器各個核的調(diào)度方法,就是根據(jù)指令序列文件和讀寫指令序列文件進行的;參考模型和片上多核處理器執(zhí)行相同的指令流,并且在執(zhí)行的過程中,參考模型會將自身產(chǎn)生的對比信息與片上多核處理器產(chǎn)生的信息進行對比,如若出錯則及時停止仿真;第四步,仿真正常停止之后,參考模型會將自己產(chǎn)生的寄存器狀態(tài)文件和片上多核處理器產(chǎn)生的寄存器狀態(tài)文件相比較;若比較通過,則本次仿真順利結(jié)束。所述第三步中,在指令執(zhí)行階段實現(xiàn)了切換中央處理器機制,按照指令序列文件中來自各個處理器核的指令的順序,參考模型切換到相應(yīng)指令所對應(yīng)的處理器來執(zhí)行這條指令。更進一步,所述驗證方法還包括軟硬件協(xié)同仿真過程,具體如下首先,生成一段指令流,這段指令流作為片上多核處理器的激勵,進行硬件仿真;硬件仿真完成過后,會輸出一些文件,這些文件會在參考模型仿真之前被參考模型讀入;這些文件有包括含有中斷信息的中斷歷史文件,含有在DMA傳輸過程中完成指令信息的DMA 傳輸文件以及含有TLB條目信息的寫TLB歷史文件,內(nèi)存初始化文件;接著,片上多核處理器仿真完畢后,生成的指令流被翻譯成參考模型支持的格式,作為參考模型的激勵;同時,參考模型會讀入片上多核處理器的輸出文件作為激勵,進行軟硬件協(xié)同仿真;在參考模型仿真過程中,參考模型會用自己產(chǎn)生的信息,和讀寫指令序列文件中的片上多核處理器仿真過程中產(chǎn)生的高速緩存命中或缺失信息,原子操作成功或失敗信息,高速緩存行狀態(tài)信息,訪問的其他中央處理器的編號信息,讀數(shù)據(jù)信息和被替換出來的高速緩存行信息進行對比;如果發(fā)現(xiàn)錯誤,及時停止仿真;如果仿真正常結(jié)束,參考模型會將自己的寄存器狀態(tài)文件與片上多核處理器產(chǎn)生的寄存器狀態(tài)文件進行對比,以完成功能驗證。所述參考模型接受的設(shè)定格式的讀寫序列信息輸入,所述讀寫序列信息包含中央處理器的編號信息,是否為對稱多核處理器信息,指令類型信息,原子操作信息,地址信息,寫數(shù)據(jù)信息和PC信息;參考模型的輸出信息包括高速緩存命中或缺失信息,原子操作成功或失敗信息,高速緩存行狀態(tài)信息,訪問的其他中央處理器的編號信息,讀數(shù)據(jù)信息和被替換出來的高速緩存行息。所述第二步中,讀寫指令的讀寫序列文件中,讀寫指令的順序是由本條指令訪問高速緩存或者主存儲器的時間來決定的,一些較晚發(fā)射但較早訪問高速緩存或者主存儲器的讀指令會排在其他的較早發(fā)射但是較晚訪問高速緩存或主存儲器的讀寫指令之前,基于片上多核處理器的程序中,排在較后面位置但先訪問高速緩存或主存儲器的指令在讀寫序列文件中排在靠前的位置,因而仿真模型會按照讀寫指令的讀寫序列文件的順序,先執(zhí)行較早訪問高速緩存或者內(nèi)存但實際處在片上多核處理器程序中靠后位置的指令。當一條指令被亂序執(zhí)行,則在指令執(zhí)行過程中需要使用讀寫序列文件中的地址和數(shù)據(jù);對于被亂序執(zhí)行的讀指令,由于通用寄存器的數(shù)值不是最新的,從讀寫序列文件中取得最新的寄存器數(shù)值,得到讀指令的真實地址;對于被亂序執(zhí)行的寫指令,由于通用寄存器的數(shù)值不是最新的,從讀寫序列文件中取得最新的寄存器數(shù)值,以得到寫指令的真實地址;這條亂序執(zhí)行的指令執(zhí)行完畢后,寄存器的相關(guān)信息會保存在亂序堆棧中,并不更新寄存器的數(shù)值,等到這條指令之前所有的指令都運行完畢之后更新寄存器的數(shù)值。所述第一步中,作為片上多核處理器參考模型激勵的文件有中斷歷史文件、DMA傳輸文件、寫TLB歷史文件、內(nèi)存初始化文件、指令序列文件和讀寫指令序列文件;作為片上多核處理器參考模型結(jié)果的對比文件有寄存器狀態(tài)文件和讀寫指令序列文件。所述第四步中,采用了分段式的結(jié)果檢查方法片上多核處理器每執(zhí)行設(shè)定定數(shù)量的指令之后,就將產(chǎn)生的文件和結(jié)果給參考模型,并使參考模型開始仿真并進行這些指令的結(jié)果比較。本發(fā)明的技術(shù)構(gòu)思為利用單核處理器和多核處理器仿真模型的相同之處,復用單核處理器的仿真模型,使之適應(yīng)多核處理器仿真模型的架構(gòu),使用這種方法來建立片上多核仿真模型可以節(jié)省大量的驗證時間,從而可以將驗證的重點轉(zhuǎn)移到高速緩存一致性的問題上。此外,為了降低復雜度,本發(fā)明采用了軟硬件結(jié)合仿真的機制,這種方法可以有效避開我們不需要詳細驗證之處而專注于高速緩存一致性問題。由于功能級(指令級)的片上多核處理器仿真模型無法模擬片上多核處理器實際在并行運行的每條指令的關(guān)系,所以參考模型的指令執(zhí)行順序是由片上多核處理器指令訪問高速緩存或者主存儲器的順序決定的。此外,本發(fā)明的片上多處理器仿真模型在實現(xiàn)的過程中加入了指令的亂序執(zhí)行機制和中央處理器切換機制,以保證片上多核處理器及其仿真模型在功能(指令)上的一致?!榱颂岣唑炞C效率,在仿真模型執(zhí)行的過程中,仿真模型會將自身執(zhí)行的結(jié)果與片上多核處理器的執(zhí)行結(jié)果進行實時比對,而不是傳統(tǒng)方法中的等待仿真結(jié)束之后再統(tǒng)一比較。本發(fā)明的有益效果主要表現(xiàn)在有效解決串行仿真器(參考模型)模擬并行的片上多核處理器的調(diào)度問題。
圖I為本發(fā)明的整體使用環(huán)境圖。圖2為本發(fā)明的片上多核處理器參考模型的整體流程。圖3為本發(fā)明的亂序執(zhí)行實現(xiàn)機制舉例。圖4為本發(fā)明的高效率分段式結(jié)果檢查方法示例。圖5為本發(fā)明的讀寫序列文件的條目。
具體實施例方式下面結(jié)合附圖對本發(fā)明作進一步描述。參照圖f圖5,一種片上多核處理器功能驗證方法,包括一個參考模型以及參考模型與待驗證多核處理器的接口。參考模型用軟件的方法模擬了多核處理器的功能,包括了取指、譯碼和執(zhí)行等操作,并且重點維護了高速緩存的一致性。參考模型接受一定格式的文件輸入,并根據(jù)輸入進行取指、譯碼和執(zhí)行等操作,在此過程中輸出相應(yīng)值;參考模型會將自身的輸出值和待驗證多核處理器的輸出值進行對比,以完成功能驗證。具體驗證流程如下第一步,生成或者編寫一些針對片上多核處理器的程序文件(指令流)。這些程序文件作為系統(tǒng)激勵被片上多核處理器載入,每個處理器核同時開始進行仿真。在仿真的過程中,片上多核處理器會記錄仿真中的運行狀態(tài)并輸出這些文件,其中的一些文件作為片上多核處理器參考模型的激勵輸入,另外的一些文件作為結(jié)果的對比的文件。作為片上多核處理器參考模型激勵的文件有中斷歷史文件、DMA傳輸文件、寫TLB歷史文件、內(nèi)存初始化文件、指令序列文件和讀寫指令序列文件。需要這些文件作為片上多核處理器參考模型的原因,在于有些事件(外部中斷,DMA傳輸,對TLB的寫操作以及內(nèi)存初始化)是參考模型無法模擬的。而參考模型需要指令序列文件和讀寫序列文件作為激勵的原因在于,片上多核處理器的每個處理器核中的指令是并行執(zhí)行的,而參考模型中的指令必須是串行執(zhí)行的。因而,我們需要根據(jù)每個處理器核中的指令訪問高速緩存或主存儲器的順序,將這些指令串行化,以便這些指令可以被仿真模型執(zhí)行。作為片上多核處理器參考模型結(jié)果的對比文件有寄存器狀態(tài)文件和讀與指令序列文件。第二步,片上多核處理器仿真結(jié)束后,程序文件會被轉(zhuǎn)化為片上多核處理器參考模型所需要的格式的程序文件,并且被參考模型讀入,這保證了參考模型完全了解片上多核處理器的各個處理器核所執(zhí)行的指令的詳細信息;同時參考模型也會讀入片上多核處理器仿真之后生成的文件,這些文件提供了參考模型需要的,但是又無法模擬的事件。第三步,參考模型按照指令序列文件和讀寫指令序列文件中的指令順序開始仿真。其中,每條指令也分為取值,譯碼和執(zhí)行等階段,這與單核處理器的行為相同,因而這里 復用了單核處理器參考模型中的響應(yīng)功能。參考模型對多核處理器各個核的調(diào)度方法,就是根據(jù)指令序列文件和讀寫指令序列文件進行的。具體的說,就是按照指令序列文件和讀寫指令序列文件中每條指令對應(yīng)的處理器編號,來調(diào)度相應(yīng)的處理器來執(zhí)行相應(yīng)指令的。由于片上多核處理器的每條指令都存在流水線結(jié)構(gòu),也就是一條指令可能處于不同的流水線級,但是參考模型是以指令為最小單元的,也就是不存在流水線結(jié)構(gòu);這就可能導致程序中后發(fā)射的指令搶先訪問高速緩存(或主存儲器)。由于參考模型是按照讀寫序列文件中的順序,也就是訪問高速緩存(或主存儲器)的順序執(zhí)行的,所以參考模型會先執(zhí)行在程序中后發(fā)射的那條指令,也就是亂序執(zhí)行現(xiàn)象。為了解決這個問題,我發(fā)明了亂序堆棧來解決這個問題。參考模型和片上多核處理器執(zhí)行相同的指令流,并且在執(zhí)行的過程中,參考模型會將自身產(chǎn)生的對比信息與片上多核處理器產(chǎn)生的信息進行對比,如若出錯則及時停止仿真。第四步,仿真正常停止之后,參考模型會將自己產(chǎn)生的寄存器狀態(tài)文件和片上多核處理器產(chǎn)生的寄存器狀態(tài)文件相比較;若比較通過,則本次仿真順利結(jié)束。為了高效率地進行結(jié)果檢查,我們采用了分段式的結(jié)果檢查方法片上多核處理器每執(zhí)行一定數(shù)量的指令之后,就將產(chǎn)生的文件和結(jié)果給參考模型,這樣可以在有錯誤的時候及時停止仿真,節(jié)省了大量的時間。由單核處理器仿真模型到多核處理器仿真模型,需要增加的部分在于高速緩存一致性的監(jiān)聽設(shè)備和指令執(zhí)行的仲裁設(shè)備,其他部分可以在仿真模型中繼續(xù)使用。高速緩存一致性的監(jiān)聽設(shè)備采用了當下很流行的高速緩存監(jiān)聽一致性協(xié)議,通過這個設(shè)備維護了各個處理器之間高速緩存的一致性。指令的仲裁設(shè)備則會根據(jù)讀寫指令序列的順序,給不同處理器以執(zhí)行的權(quán)限,采用了一種片上多核處理器仿真模型串行化模擬片上多核處理器指令并行執(zhí)行的方法。由于參考模型的順序執(zhí)行性,為了用順序的方法來驗證并行的片上多核處理器,在指令執(zhí)行階段實現(xiàn)了切換中央處理器機制,當前指令為非讀寫指令時,在當前的中央處理器執(zhí)行本條指令;而當前指令為讀寫指令時,則切換到相應(yīng)的處理器中執(zhí)行這條指令。這使得并行化的硬件仿真可以用串行化的軟件仿真來模擬,以保證仿真結(jié)果真實地反映實際待驗證多核處理器的行為。一種軟硬件協(xié)同仿真機制及其工作流程,首先生成(或編寫)一段指令流,這段指令流作為片上多核處理器的激勵,進行硬件仿真。硬件仿真完成過后,會輸出一些文件,這些文件會在參考模型仿真之前被參考模型讀入;這些文件有包括含有中斷信息的中斷歷史文件,含有在DMA傳輸過程中完成指令信息的DMA傳輸文件以及含有TLB條目信息的寫TLB歷史文件,內(nèi)存初始化文件。其中中斷歷史文件、DMA傳輸文件和寫TLB歷史文件是仿真模型無法模擬的,所以需要作為仿真模型的激勵。內(nèi)存初始化文件是為了使得仿真模型和片上多核處理器主存儲器的初始狀態(tài)相同。片上多核處理器仿真完畢后,生成(或編寫)的指令流被翻譯成參考模型支持的格式,作為參考模型的激勵;同時,參考模型會讀入片上多核處理器的輸出文件作為激勵,進行軟硬件協(xié)同仿真。在參考模型仿真過程中,參考模型會用自己產(chǎn)生的信息,和讀寫指令序列文件中的片上多核處理器仿真過程中產(chǎn)生的高速緩存命中或缺失信息,原子操作成功或失敗信息,高速緩存行狀態(tài)信息,訪問的其他中央處理器的編號信息,讀數(shù)據(jù)信息和被替換出來的高速緩存行信息進行對比;如果發(fā)現(xiàn)錯誤,及時停止仿真。如果仿真正常結(jié)束,參考模型會將自己的寄存器狀態(tài)文件與片上多核處理器產(chǎn)生的寄存器狀態(tài)文件進行對比,以完成功能驗證。 參考模型接受的一定格式的讀寫序列輸入,包含中央處理器的編號信息,是否為對稱多核處理器信息,指令類型信息,原子操作信息,地址信息,寫數(shù)據(jù)信息和PC信息。這些信息就是參考模型的激勵,這些激勵的指令信息會影響高速緩存的一致性,是我們驗證的重點。參考模型的輸出信息,包括高速緩存命中或缺失信息,原子操作成功或失敗信息,高速緩存行狀態(tài)信息,訪問的其他中央處理器的編號信息,讀數(shù)據(jù)信息和被替換出來的高速緩存行信息。這些輸出信息用于和片上多核處理器輸出的信息做對比,以完成功能驗證。讀與指令的讀與序列文件,讀與指令的順序是由本條指令訪問聞速緩存或者主存儲器的時間來決定的。所以一些較早訪問高速緩存或者內(nèi)存的讀指令會排在其他的較早完成的讀寫指令之前,也就是說編程者寫入的基于片上多核處理器的程序中,排在較后面位置的指令可能會先訪問高速緩存或者主存儲器,這時在仿真模型看來,這條本來應(yīng)該排在后面的指令是被優(yōu)先執(zhí)行的。這也就導致了編程順序和參考模型的執(zhí)行順序不一致。仿真模型會按照讀寫指令的讀寫序列文件的順序,先執(zhí)行較早訪問高速緩存或者內(nèi)存的指令,也就是亂序執(zhí)行的機制。亂序執(zhí)行機制由于片上多核處理器的每條指令都存在流水線結(jié)構(gòu),也就是一條指令可能處于不同的流水線級,但是參考模型是以指令為最小單元的,也就是不存在流水線結(jié)構(gòu);這就可能導致程序中后發(fā)射的指令搶先訪問高速緩存(或主存儲器)。由于參考模型是按照讀寫序列文件中的順序,也就是訪問高速緩存(或主存儲器)的順序執(zhí)行的,所以參考模型會先執(zhí)行在程序中后發(fā)射的那條指令,也就是亂序執(zhí)行現(xiàn)象。為了解決這個問題,我發(fā)明了亂序堆棧來解決這個問題。如果一條指令被亂序執(zhí)行,則在指令執(zhí)行過程中需要使用讀寫序列文件中的地址和數(shù)據(jù)。這樣規(guī)定是因為指令在亂序執(zhí)行的過程中,通用寄存器中的數(shù)值可能別改變,此時只有讀寫序列文件中的地址和數(shù)據(jù)才是仿真中真正需要的數(shù)值。對于被亂序執(zhí)行的讀指令,由于通用寄存器的數(shù)值不是最新的,所以需要從讀寫序列文件中取得最新的寄存器數(shù)值,以得到讀指令的真實地址。對于被亂序執(zhí)行的寫指令,由于通用寄存器的數(shù)值不是最新的,所以需要從讀寫序列文件中取得最新的寄存器數(shù)值,以得到寫指令的真實地址;此時,并不更新寄存器的數(shù)值,必須等到這條指令之前所有的指令都運行完畢之后,才能將更新寄存器的數(shù)值。當作為激勵的程序文件很大型的時候,片上多核處理器并不運行完整個程序文件,再進行結(jié)果檢查;而是執(zhí)行了一定數(shù)量的指令之后,就將輸出的文件傳送給參考模型,此時參考模型執(zhí)行這些指令,并進行結(jié)果比對。這種結(jié)果檢查方法可以大幅度提高早期驗證的效率。本實施例中,片上多核處理器參考模型的實現(xiàn)本實施例子是用C++語言編寫的片上多核處理器參考模型,整體的使用環(huán)境如圖I所示。首先,生成或者編寫一些針對片上多核處理器的程序文件(指令流)。這些程序文件隨后被片上多核處理器載入,并開始進行仿真。在仿真的過程中,片上多核處理器會記錄仿真中的運行狀態(tài)并輸出這些文件,其中的一些文件作為片上多核處理器參考模型的激勵輸 入,另外的一些文件作為結(jié)果的對比的文件。作為片上多核處理器參考模型激勵的文件有中斷歷史文件、DMA傳輸文件、寫TLB歷史文件、內(nèi)存初始化文件、指令序列文件和讀寫指令序列文件。作為片上多核處理器參考模型結(jié)果的對比文件有寄存器狀態(tài)文件和讀寫指令序列文件。片上多核處理器仿真結(jié)束后,程序文件會被轉(zhuǎn)化為片上多核處理器參考模型所需要的格式的程序文件,并且被參考模型讀入;同時參考模型也會讀入片上多核處理器仿真之后生成的文件,隨后開始參考模型仿真。參考模型和片上多核處理器執(zhí)行相同的指令流,在執(zhí)行的過程中,參考模型會將自身產(chǎn)生的對比信息與片上多核處理器產(chǎn)生的信息進行對比,如若出錯則及時停止仿真。仿真正常停止之后,參考模型會將自己產(chǎn)生的寄存器狀態(tài)文件和片上多核處理器產(chǎn)生的寄存器狀態(tài)文件相比較;若比較通過,則本次仿真順利結(jié)束。圖2為本發(fā)明的片上多核處理器參考模型的整體流程。在整個流程中,最重要的發(fā)明在于串行仿真器(參考模型)模擬并行的片上多核處理器的調(diào)度方法,復用單核處理器參考模型構(gòu)建多核處理器參考模型的方法,指令的亂序執(zhí)行機制,高效率的分段式結(jié)果檢查方法。為了在轉(zhuǎn)型的參考模型上模擬并行化的片上多核處理器的行為,需要將片上多核處理器的行為串行化。本發(fā)明采用了指令級的串行化,依據(jù)每條指令訪問高速緩存或者主存儲器的時間,來將各個片上處理器的指令排序。參考模型就按照這個順序執(zhí)行各條指令。本發(fā)明中將指令分為兩類讀寫指令和非讀寫指令。本發(fā)明提出的調(diào)度機制是當下一條指令為非讀寫指令時,由當前處理器執(zhí)行該條指令;當下一條指令為讀寫指令時,參考模型會切換到這條指令在片上多核處理器中被執(zhí)行的那個處理器中運行。這種機制保證了片上多核處理器與參考模型訪問高速緩存和主存儲器的順序一致。其中,下一條指令是否為讀寫指令的信息保存在指令序列文件中,下一條指令的處理器編號信息保存在讀寫指令序列文件中。參考模型在仿真過程中需要依據(jù)這兩個文件的信息進行仿真。復用單核處理器的參考模型構(gòu)建多核處理器參考模型,對于縮短項目周期有很大幫助。本發(fā)明采用的復用辦法主要是在單核處理器的參考模型的基礎(chǔ)之上,加入高速緩存狀態(tài)管理裝置和片上多核處理器的調(diào)度裝置。多核處理器與單核處理器最大的不同之處在于多核處理器需要維護高速緩存的一致性。本實例中采用的是當下最流行的高速緩存一致性的監(jiān)聽協(xié)議。通過以上的改進,單核處理器的參考模型就成功被改造成片上多核處理器的參考模型。其中,加入了高速緩存一致性監(jiān)聽協(xié)議的狀態(tài)位Exclusive,用來維護高速緩存的
一致性。高速緩存狀態(tài)管理裝置,在參考模型執(zhí)行讀寫指令的時候,對高速緩存進行監(jiān)聽,以保證高速緩存的一致性。由于讀寫指令的順序是由本條指令訪問高速緩存或者主存儲器的時間來決定的。所以一些較早訪問高速緩存或者內(nèi)存的讀指令會排在其他的較早完成的讀寫指令之前,也就是說編程者寫入的基于片上多核處理器的程序中,排在較后面位置的指令可能會先訪問高速緩存或者主存儲器,這時在參考模型看來,這條本來應(yīng)該排在后面的指令是被優(yōu)先執(zhí)行的。這也就導致了編程順序和參考模型的執(zhí)行順序不一致。所以仿真模型會按照讀寫指令的讀寫序列文件的順序,先執(zhí)行較早訪問高速緩存或者內(nèi)存的指令,也就是亂序執(zhí)行的·機制。為了保證指令的亂序執(zhí)行結(jié)果不出現(xiàn)人為的錯誤和死鎖,本發(fā)明實現(xiàn)了亂序堆棧來解決這個問題。亂序堆棧實現(xiàn)的例子如圖3所示。處理器O按順序執(zhí)行①st r3, addrl②Idr3, addr2這兩條指令,處理器I按順序執(zhí)行③st r4, addr2④Id r4, addrl這兩條指令。其中②和④為高速緩存命中的讀指令。處理器O的寄存器r3,處理器2的寄存器r4,地址addrl,地址addr2的初始值分別為A, B, C,D。按照高速緩存或者主存的訪問順序來講,指令執(zhí)行的順序為②④①③。在執(zhí)行完指令②之后,本條指令讀回來的數(shù)據(jù)并不直接寫入處理器O的寄存器r3中,而是被放入處理器O的亂序堆棧中,提前執(zhí)行位賦值為真,寄存器項被賦值為r3,數(shù)據(jù)項被賦值為D。在執(zhí)行完指令④之后,本條指令讀回來的數(shù)據(jù)并不直接寫入處理器I的寄存器r4中,而是被放入處理器I的亂序堆棧中,提前執(zhí)行位賦值為真,寄存器項被賦值為r4,數(shù)據(jù)項被賦值為C。在執(zhí)行完指令①之后,A被寫入地址為addrl的位置。由于在②之前所有的指令都已經(jīng)執(zhí)行完畢,處理器O的亂序堆棧釋放了指令②讀回來的數(shù)據(jù),將D寫入到處理器O的寄存器r3中。在執(zhí)行完指令③之后,A被寫入地址為addr2的位置。由于在④之前所有的指令都已經(jīng)執(zhí)行完畢,處理器I的亂序堆棧釋放了指令④讀回來的數(shù)據(jù),將C寫入到處理器I的寄存器r4中。高效率的分段式結(jié)果檢查方法如圖4所示。當作為激勵的程序文件很大型時,片上多核處理器將這些指令全部執(zhí)行完畢,之后才才把輸出文件傳送給仿真模型的話,如果在仿真前期出錯的話,那么后面花費的大量仿真時間將會被浪費。因此我們提出了分段式的結(jié)果檢查方法。如圖4中的舉例所述,片上多核處理器每執(zhí)行200條指令,則會將輸出文件傳送給仿真模型,仿真模型則會開始執(zhí)行這200條指令,并進行結(jié)果比對。若這200條指令沒有出錯,則仿真繼續(xù);若這200條指令中有出錯的指令,則會在仿真的前期就停止仿真,進行排錯操作。這種做法大大提高了前期的驗證效率。由于一條指令在被寫入到輸出文件中的時候,其運行結(jié)果可能尚未產(chǎn)生。因而,在劃分結(jié)果檢查文件的過程中,最后幾條指令可能還沒有仿真結(jié)果。針對這種情況,我們采用了如下措施若第一個結(jié)果對比文件中包含了 200條指令,則參考模型在第一次仿真過程中會執(zhí)行前150條指令(前150條指令的執(zhí)行結(jié)果肯定已經(jīng)產(chǎn)生了),第一個結(jié)果對比文件中的其余的指令,在下一次仿真的時候執(zhí)行。值得說明的是,例子中的200條指令這一數(shù)值可以根據(jù)實際情況靈活設(shè)置,而150條指令這一數(shù)值可以根據(jù)實際情況靈活設(shè)置,也可以通過在片上多核處理器中設(shè)置觀察點,用來觀測每個輸出文件中最后一條執(zhí)行完畢的指令條目數(shù),來確定這個數(shù)值。本發(fā)明的讀寫序列條目如圖5所示。每個條目代表的信息分別為Idst number:讀寫指令的編號;CPU ID:當前指令的處理器編號;LD/ST:當前指令是讀指令還是寫指令.O代表讀指令,I代表寫指令;
Type:當前指令的訪問范圍O代表一個字,I代表一個字節(jié),2代表半個字;Hit/Miss:當前指令是否命中高速緩存O代表命中,I代表缺失;E:高速緩存一致性監(jiān)聽協(xié)議狀態(tài)位DZXY/DCI ID: DZXY/DCI 操作的處理器編號;Address:當前指令的地址;Data:當前寫指令的數(shù)據(jù),若當前為讀指令,這一項為被踢出的高速緩存行的tag ;PC:當前指令的PC;Exclusive:原子操作信息;Success:原子操作成功信息;Merge Number:本條讀指令所融合的指令個數(shù);Merge PC[8]:被融合指令的 PC。
權(quán)利要求
1.一種片上多核處理器功能驗證方法,其特征在于建立一個參考模型以及參考模型與待驗證多核處理器的接口,所述參考模型接受設(shè)定格式的文件輸入,并根據(jù)輸入進行取指、譯碼和執(zhí)行等操作,在此過程中輸出相應(yīng)值;參考模型會將自身的輸出值和待驗證多核處理器的輸出值進行對比,以完成功能驗證。
2.如權(quán)利要求I所述的一種片上多核處理器功能驗證方法,其特征在于所述驗證方法的流程如下 第一步,生成或者編寫一些針對片上多核處理器的程序文件,這些程序文件作為系統(tǒng)激勵被片上多核處理器載入,每個處理器核同時開始進行仿真,在仿真的過程中,片上多核處理器會記錄仿真中的運行狀態(tài)并輸出文件,其中的一些文件作為片上多核處理器參考模型的激勵輸入,另外的一些文件作為結(jié)果的對比的文件; 第二步,片上多核處理器仿真結(jié)束后,程序文件會被轉(zhuǎn)化為片上多核處理器參考模型所需要的格式的程序文件,并且被參考模型讀入;同時參考模型也會讀入片上多核處理器仿真之后生成的文件; 第三步,參考模型按照指令序列文件和讀寫指令序列文件中的指令順序開始仿真;其中,每條指令也分為取值,譯碼和執(zhí)行等階段;參考模型對多核處理器各個核的調(diào)度方法,就是根據(jù)指令序列文件和讀寫指令序列文件進行的;參考模型和片上多核處理器執(zhí)行相同的指令流,并且在執(zhí)行的過程中,參考模型會將自身產(chǎn)生的對比信息與片上多核處理器產(chǎn)生的信息進行對比,如若出錯則及時停止仿真; 第四步,仿真正常停止之后,參考模型會將自己產(chǎn)生的寄存器狀態(tài)文件和片上多核處理器產(chǎn)生的寄存器狀態(tài)文件相比較;若比較通過,則本次仿真順利結(jié)束。
3.如權(quán)利要求2所述的一種片上多核處理器功能驗證方法,其特征在于所述第三步中,在指令執(zhí)行階段實現(xiàn)了切換中央處理器機制,按照指令序列文件中來自各個處理器核的指令的順序,參考模型切換到相應(yīng)指令所對應(yīng)的處理器來執(zhí)行這條指令。
4.如權(quán)利要求I所述的一種片上多核處理器功能驗證方法,其特征在于所述驗證方法還包括軟硬件協(xié)同仿真過程,具體如下 首先生成一段指令流,這段指令流作為片上多核處理器的激勵,進行硬件仿真;硬件仿真完成過后,會輸出一些文件,這些文件會在參考模型仿真之前被參考模型讀入;這些文件有包括含有中斷信息的中斷歷史文件,含有在DMA傳輸過程中完成指令信息的DMA傳輸文件以及含有TLB條目信息的寫TLB歷史文件,內(nèi)存初始化文件; 接著,片上多核處理器仿真完畢后,生成的指令流被翻譯成參考模型支持的格式,作為參考模型的激勵;同時,參考模型會讀入片上多核處理器的輸出文件作為激勵,進行軟硬件協(xié)同仿真;在參考模型仿真過程中,參考模型會用自己產(chǎn)生的信息,和讀寫指令序列文件中的片上多核處理器仿真過程中產(chǎn)生的高速緩存命中或缺失信息,原子操作成功或失敗信息,高速緩存行狀態(tài)信息,訪問的其他中央處理器的編號信息,讀數(shù)據(jù)信息和被替換出來的高速緩存行信息進行對比;如果發(fā)現(xiàn)錯誤,及時停止仿真;如果仿真正常結(jié)束,參考模型會將自己的寄存器狀態(tài)文件與片上多核處理器產(chǎn)生的寄存器狀態(tài)文件進行對比,以完成功能驗證。
5.如權(quán)利要求f4之一所述的一種片上多核處理器功能驗證方法,其特征在于所述參考模型接受的設(shè)定格式的讀寫序列信息輸入,所述讀寫序列信息包含中央處理器的編號信息,是否為對稱多核處理器信息,指令類型信息,原子操作信息,地址信息,寫數(shù)據(jù)信息和PC fg 息; 參考模型的輸出信息包括高速緩存命中或缺失信息,原子操作成功或失敗信息,高速緩存行狀態(tài)信息,訪問的其他中央處理器的編號信息,讀數(shù)據(jù)信息和被替換出來的高速緩存行信息。
6.如權(quán)利要求2所述的一種片上多核處理器功能驗證方法,其特征在于所述第二步中,讀與指令的讀與序列文件中,讀與指令的順序是由本條指令訪問聞速緩存或者主存儲器的時間來決定的,一些較晚發(fā)射但較早訪問高速緩存或者主存儲器的讀指令會排在其他的較早發(fā)射但是較晚訪問高速緩存或主存儲器的讀寫指令之前,基于片上多核處理器的程序中,排在較后面位置但先訪問高速緩存或主存儲器的指令在讀寫序列文件中排在靠前的位置,因而仿真模型會按照讀寫指令的讀寫序列文件的順序,先執(zhí)行較早訪問高速緩存或者內(nèi)存但實際處在片上多核處理器程序中靠后位置的指令。
7.如權(quán)利要求6所述的一種片上多核處理器功能驗證方法,其特征在于當一條指令被亂序執(zhí)行,則在指令執(zhí)行過程中需要使用讀寫序列文件中的地址和數(shù)據(jù);對于被亂序執(zhí)行的讀指令,由于通用寄存器的數(shù)值不是最新的,從讀寫序列文件中取得最新的寄存器數(shù)值,得到讀指令的真實地址;對于被亂序執(zhí)行的寫指令,由于通用寄存器的數(shù)值不是最新的,從讀寫序列文件中取得最新的寄存器數(shù)值,以得到寫指令的真實地址;這條亂序執(zhí)行的指令執(zhí)行完畢后,寄存器的相關(guān)信息會保存在亂序堆棧中,并不更新寄存器的數(shù)值,等到這條指令之前所有的指令都運行完畢之后更新寄存器的數(shù)值。
8.如權(quán)利要求2所述的一種片上多核處理器功能驗證方法,其特征在于所述第一步中,作為片上多核處理器參考模型激勵的文件有中斷歷史文件、DMA傳輸文件、寫TLB歷史文件、內(nèi)存初始化文件、指令序列文件和讀寫指令序列文件;作為片上多核處理器參考模型結(jié)果的對比文件有寄存器狀態(tài)文件和讀寫指令序列文件。
9.如權(quán)利要求2所述的一種片上多核處理器功能驗證方法,其特征在于所述第四步中,采用了分段式的結(jié)果檢查方法片上多核處理器每執(zhí)行設(shè)定定數(shù)量的指令之后,就將產(chǎn)生的文件和結(jié)果給參考模型,并使參考模型開始仿真并進行這些指令的結(jié)果比較。
全文摘要
一種片上多核處理器功能驗證方法,建立一個參考模型以及參考模型與待驗證多核處理器的接口,所述參考模型接受設(shè)定格式的文件輸入,并根據(jù)輸入進行取指、譯碼和執(zhí)行等操作,在此過程中輸出相應(yīng)值;參考模型會將自身的輸出值和待驗證多核處理器的輸出值進行對比,以完成功能驗證。本發(fā)明能有效解決串行仿真器(參考模型)模擬并行的片上多核處理器的調(diào)度問題。
文檔編號G06F9/50GK102929686SQ20121037202
公開日2013年2月13日 申請日期2012年9月28日 優(yōu)先權(quán)日2012年9月28日
發(fā)明者南楊明, 王軻, 黃凱, 葛海通 申請人:杭州中天微系統(tǒng)有限公司