專利名稱::一種多核或眾核處理器功能驗證設備及方法
技術領域:
:本發明涉及微處理器,特別涉及微處理器的功能驗證。技術背景在處理器的設計過程中,在對所設計的處理器進行流片前,需要對處理器進行驗證,以避免由于設計問題而在流片過程中造成重大損失。對處理器的驗證可以包括功能驗證和后仿真,其中的功能驗證通常在FPGA(Field-ProgrammableGateArray,現場可編程門陣列)芯片上實現。FPGA通常由可編程邏輯資源、片上存儲等部分構成。采用FPGA對處理器進行功能驗證的傳統方法中,整個處理器的所有邏輯單元都會通過FPGA中的可編程邏輯資源實現,而對FPGA的片上存儲資源的使用則相對較少。隨著處理器的發展,采用FPGA對處理器進行功能驗證的此類傳統方法遇到了一系列新的問題。首先,單片FPGA的容量已經無法趕上處理器硬件資源的增長速度,這一問題在多核/眾核處理器驗證領域尤為突出。當前的主流通用處理器均已經由單核過渡到了雙核、四核或者更多,而某些高性能處理器、向量處理器、多媒體處理器,更是有著向眾核發展的趨勢。但在市面上,即使是高端的FPGA也難以在一個芯片上游刃有余地容納多個處理器核。其次,搭建硬件資源較大的FPGA驗證平臺需要巨大的花費,且高端的FPGA價格十分昂貴。上述問題都對基于FPGA技術的驗證工作提出了很大的挑戰,在這種情況下,設計出一種能有效節省FPGA硬件資源的設備和方法顯得十分必要和迫切。
發明內容本發明的目的是克服現有方法和設備不適合采用FPGA對多核或眾核處理器進行功能驗證的缺陷,從而提供一種能夠有效地實現多核或眾核處理器的功能驗證的設備及方法。為了實現上述目的,本發明提供了一種多核或眾核處理器功能驗證設備,包括重復邏輯電路、片上存儲以及其它邏輯電路;所述的重復邏輯電路包括用于模擬所述多核或眾核處理器中的各個結點的復用結點、用于對所述復用結點的功能驗證過程進行控制的控制模塊和用于存儲與所述復用結點的功能驗證過程相關數據的存儲模塊;其中,所述的片上存儲和所述的存儲模塊在所述FPGA的片上存儲資源上實現;所述的其它邏輯電路、控制模塊和復用結點在所述的FPGA的可編程邏輯資源上實現。上述技術方案中,所述的復用結點在所述處理器中的同構結點的基礎上,為所述同構結點中每一個寄存器增加一條由外部輸入輸出數據的數據通路,并為所述數據通路設置一個使能信號,還要為所述同構結點增加用于控制結點運行與否的結點運行使能信號。上述技術方案中,所述的復用結點在所述處理器中的相似結點的基礎上,將各個所述相似結點的相同部分以及各個相似結點的不同部分整合在一起,為所述不同部分分別設置一個使能信號;為整合后的結點中的每一個寄存器增加一條由外部輸入輸出數據的數據通路,并為所述數據通路設置一個使能信號;增加用于控制結點運行與否的結點運行使能信號。上述技術方案中,所述的控制模塊利用用于記錄存儲地址分配的表結構和用于記錄特定功能邏輯電路塊端口互連關系的表結構對所述復用結點的功能驗證過程進行控制。上述技術方案中,所述的用于記錄存儲地址分配的表結構包括所述多核或眾核處理器中所有結點的輸入端口、輸出端口、內部寄存器的值,以及所述輸入端口、輸出端口和內部寄存器的存儲器號、首地址、長度和有效位數。上述技術方案中,所述的用于記錄特定功能邏輯電路塊端口互連關系的表結構記錄了所述多核或眾核處理器中一個結點中的一個輸入信號是否由其它某個結點的輸出產生,包括用于判斷輸入是否由某一個結點的輸出產生的VA有效位,用于記錄產生輸出的結點的編號的CID,擁有記錄輸出的編號OID。本發明還提供了一種采用所述的任一多核或眾核處理器功能驗證設備進行功能驗證的功能-險證方法,包括步驟l)、對存儲模塊、用于記錄存儲地址分配的表結構、以及用于記錄特定功能邏輯電路塊端口互連關系的表結構進行初始化;步驟2)、在一輪全局時鐘內,在所述的復用結點上對所述多核或眾核處理器中的結點依次進行功能驗證;步驟3)、輸出功能驗證的結果。上述技術方案中,所述的步驟2)包括步驟2-l)、將全局輸入信號中包括數據、地址和控制信號的信號輸入到所述的存儲模塊;步驟2-2)、所述的控制模塊從所述的存儲模塊讀取端口和寄存器信息,并寫入到所述的復用結點;步驟2-3)、運行所述的復用結點,進行功能驗證;步驟2-4)、將所述的復用結點的寄存器和端口信息保存到所述的存儲模塊中;步驟2-5)、在本輪全局時鐘內,若所述多核或眾核處理器中的每一個結點都已經在所述復用結點上運行一次,則轉入步驟3);否則,從所述存儲模塊中的用于記錄特定功能邏輯電路塊端口互連關系的表結構讀取下一個待驗證的結點的輸入端口信號,并更新,然后重新執行步驟2-2)。上述技術方案中,所述的寄存器和端口信息在所述的用于記錄存儲地址分配的表結構的作用下進行讀取和保存。本發明的優點在于突破了FPGA芯片可編程邏輯容量大小對多核或眾核處理器功能驗證的限制,通過采用復用結點來對處理器中的多個相似或同構的結點進行功能驗證,以增加運行時間來減小硬件資源的開銷,提供了一種通用的對多核或眾核處理器功能驗證的方法,具有良好的靈活性和擴展性。以下,結合附圖來詳細說明本發明的實施例,其中圖1為在本發明的一個實施例中所涉及的一個多核處理器的結構示意圖;圖2為采用傳統的方法用FPGA對圖1所示處理器進行功能驗證的相應設備的結構示意圖;圖3為采用本發明的方法對圖1所示處理器進行功能驗證的相應設備的結枸示意圖;圖4為圖3所示設備的具體結構圖;圖5為將圖1所示多核處理器中的同構結點轉換為本發明中的復用結點的示意圖;圖6為本發明的功能驗證方法的流程圖;圖7為將多核處理器中的相似結點轉換為本發明中的復用結點的示意圖。具體實施方式在多核或眾核處理器結構中,內部的邏輯電路塊在結構上具有相同或相似性,因而具有重復性的特點。本發明中就是利用現有處理器的這一特點,在FPGA上用一個邏輯電路塊代替相同或相似的多個邏輯電路塊,從而達到用較'J、的FPGA資源完成相對大規模的多核或眾核處理器的功能驗i正的目的。下面結合附圖和具體實施方式對本發明做進一步說明。在本發明的一個實施例中,如圖1所示,以一個具有16個結點的SMP(symmetricmultiprocessing)微處理器1為例,對該處理器進行功能-瞼證的設備進行相應的說明。在該處理器中,除了16個結點4夕卜,還包括處理器中所必需的片上存儲3以及其它邏輯電路2。如果采用傳統的方法用FPGA對處理器進行功能驗證,則如圖2所示,需要將所有的結點4、其它邏輯電路2都實例化到FPGA芯片的可編程邏輯資源,而將片上存儲3實例化到FPGA芯片的片上存儲。但由于FPGA中的可編程邏輯資源有限,這種方式對FPGA的要求很高,且會隨著同構結點數目的增多而變得難以實現。考慮到FPGA中的片上存儲資源易于擴展,因此,在本發明的功能驗證設備中,通過對片上存儲資源的更多利用,降低了對可編程邏輯資源的依賴。在FPGA的基礎上所實現的本發明的功能驗證設備的一個實施例如圖3、圖4所示,它包括重復邏輯電路5、片上存儲3以及其它邏輯電路2。其中的重復邏輯電路塊5可包括存儲模塊6、控制模塊7和復用結點8。控制模塊7和復用結點8在FPGA的可編程邏輯資源上實現,而存儲模塊6則在FPGA的片上存儲資源上實現。至于片上存儲3和其它邏輯電路2,與現有技術的實現相比沒有發生。上述的復用結點8由前述的結點4轉換得到,在一個實施例中,結點4為功能完全相同的同構結點,由于各個結點4的功能一致,因此,在本發明中可以用一個復用結點8在不同的時刻分別完成各個結點4的功能,從而實現對所有結點4的功能驗證。將結點4轉換成復用結點8的操作如圖5所示,在一個結點4中包括有寄存器堆以及輸入端口、輸出端口。在轉換過程中,為結點4的每一個寄存器增加一條可由外部打入數據的數據通路,以實現寄存器的數據輸入和輸出,并為每一個寄存器的數據通路設置一個使能信號,增加一個用于控制結點運行與否的結點運行使能信號。控制模塊7用于對復用結點8的功能驗證過程進行控制。控制模塊7控制分時復用的整個過程、存儲模塊的讀寫以及初始化。如前所述,由于復用結點8需要在不同的時刻完成不同結點的功能,因此,如何對結點的功能驗證順序進行安排,如何控制功能驗證過程,如何處理結點功能驗證的結果都要由控制模塊7實現。在控制模塊7的控制過程中,涉及到了兩個數據表結構,分別為用于記錄存儲地址分配的表結構9和用于記錄特定功能邏輯電路塊端口互連關系的表結構10。在表1中給出了用于記錄存儲地址分配的表結構9所記錄的具體信息,它包括所有結點的輸入端口、輸出端口、內部寄存器的值,對于每一個輸入端口、輸出端口或寄存器,都要記錄相應的存儲器號、首地址、長度和有效位數。在表中,為結點的每一個非全局輸入(input)進行編號,為Input0,Input1,Input2,……;為結點的車lr出(output)進4亍編號,為Output0,Output1,Output2,...…;為結點的寄存器進行編號,為RegisterO,Register1,Register2,……。為了^更于尋址,才安Input0,Input1,……,Output0,Output1,……,RegisterO,Register1,……的序列分配統一的編號。結點中的上述輸入、輸出和寄存器之間并不存在——對應關系,例如,通過Input0輸入的信息可以存在Registerl中,并可由Output2輸出。<table>tableseeoriginaldocumentpage8</column></row><table><table>tableseeoriginaldocumentpage9</column></row><table>存儲模塊6專用于存儲與復用結點8的功能驗證過程相關的數據,如前述的表結構9和表結構10。本實施例中的功能驗證設備在控制模塊7的控制下,實現對處理器的功能驗證,參考圖6,具體實現過程如下步驟l)、分別對存儲模塊6、用于記錄存儲地址分配的表結構9、以及用于記錄特定功能邏輯電路塊端口互連關系的表結構10進行初始化;在本步驟中,對用于記錄存儲地址分配的表結構9的初始化包括指定每一個結點的輸入端口、輸出端口、內部寄存器的值在存儲模塊中的存儲地址,在后續的步驟中,當要讀取與寫入與端口、寄存器相關的信息時,都要用到表結構9中的相關內容。對用于記錄特定功能邏輯電路塊端口互連關系的表結構10的初始化包括指定每一個結點的端口信號和其他結點的端口信號的互聯關系。步驟2)、在一輪全局時鐘的開始端,將全局輸入信號中不包括時鐘和復位信號的其它信號11在控制模塊7的控制下輸入至存儲模塊6。由于在本發明中,用一個復用結點實現對處理器中的多個核進行功能驗證,因此在功能驗證過程中,需要用時間開銷來彌補硬件資源的不足,即處理器在一個時鐘節拍中所要完成的操作,在本發明中需要在多個時鐘節拍內在復用結點上依次完成。因此,本步驟中所提到的一輪全局時鐘就是指在復用結點上完成對處理器中所有結點的一次功能驗證所要耗費的時間。本步驟中所提到的其它信號包括數據、地址和控制信號等。其它信號中的具體值會隨著全局時鐘的變化而發生改變。步驟3)、控制模塊7讀取存儲模塊6所存儲的端口信息和寄存器信息,然后寫入到復用結點8,為后續的運行做好數據準備;步驟4)、運行復用結點8,進行功能驗證;步驟5)、將復用結點8的寄存器信息和端口信息保存到存儲模塊6中;步驟6)、若對于全局時鐘輸入的一拍,每一個結點都已經在復用結點上運行一次,則轉入步驟7);否則,從存儲模塊6中的用于記錄特定功能邏輯電路塊端口互連關系的表結構10讀取下一個待驗證的結點的輸入端口信號,并更新,轉入步驟3);在本步驟中,下一個待驗證的結點可由用戶設定的規則得到。步驟7)、控制模塊7從存儲模塊6讀取輸入端口、輸出端口以及內部寄存器中的信息,產生全局輸出信號12,并轉入步驟2),開始下一個全局時鐘輸入的下一輪復用驗證。在上述實施例中,結點4之間是同構結點,因此,上述設備能夠對具有同構結點的處理器進行功能驗證,在實際應用中,結點4也可以是相似結點,本發明的設備同樣可以用于具有結點結構不完全相同但存在相似性的多核/眾核處理器。在某些多核/眾核處理器中,為了達到較好的性能并節省硬件消耗,各結點除具有共同的取指、譯碼、定點功能部件等,有些結點增加浮點處理部件,有些增加向量運算部件。這類處理器稱為異構的多核/眾核處理器。這樣,在這些處理器中,各個結點之間的大部分是相同的,只有其中的一小部分存在差異,稱這些結點彼此相似。針對這種情況,如圖7所示,在復用結點8中,可以將相似結點的相同部分,以及各個相似結點的不同部分整合在一起,并為每一個不同的部分設置一個使能信號,再對經上述異構整合后的復用結點的每一個寄存器增加一條可由外部打入數據的數據通路,為每一個寄存器的數據通路設置一個使能信號;并且,在控制模塊7內,對這些使能信號進行控制。將具有上述結構的復用結點8與前述實施例中的設備其它部分相結合,即可實現對具有相似結點的處理器的功能驗證。本發明并不局限于上述實施例中所描述的內容,如CPU中的結點數目、結點類型等都可以根據需要做相應的改變。以上實施例僅用以說明本發明的技術方案而非限制。盡管參照實施例對本發明進行了詳細說明,本領域的普通技術人員應當理解,對本發明的技術方案進行修改或者等同替換,都不脫離本發明技術方案的精神和范圍,其均應涵蓋在本發明的權利要求范圍當中。ii權利要求1、一種多核或眾核處理器功能驗證設備,其特征在于,包括重復邏輯電路(5)、片上存儲(3)以及其它邏輯電路(2);所述的重復邏輯電路(5)包括用于模擬所述多核或眾核處理器中的各個結點的復用結點(8)、用于對所述復用結點(8)的功能驗證過程進行控制的控制模塊(7)和用于存儲與所述復用結點(8)的功能驗證過程相關數據的存儲模塊(6);其中,所述的片上存儲(3)和所述的存儲模塊(6)在所述FPGA的片上存儲資源上實現;所述的其它邏輯電路(2)、控制模塊(7)和復用結點(8)在所述的FPGA的可編程邏輯資源上實現。2、根據權利要求1所述的多核或眾核處理器功能驗證設備,其特征在于,所述的復用結點(8)在所述處理器中的同構結點的基礎上,為所述同構結點中每一個寄存器增加一條由外部輸入輸出數據的數據通路,并為所述數據通路設置一個使能信號,還要為所述同構結點增加用于控制結點運行與否的結點運行使能信號。3、根據權利要求1所述的多核或眾核處理器功能驗證設備,其特征在于,所述的復用結點(8)在所述處理器中的相似結點的基礎上,將各個所述相似結點的相同部分以及各個相似結點的不同部分整合在一起,為所述不同部分分別設置一個使能信號;為整合后的結點中的每一個寄存器增加一條由外部輸入輸出數據的數據通路,并為所述數據通路設置一個使能信號;增加用于控制結點運行與否的結點運行使能信號。4、根據權利要求1所述的多核或眾核處理器功能驗證設備,其特征在于,所述的控制模塊(7)利用用于記錄存儲地址分配的表結構(9)和用于記錄特定功能邏輯電路塊端口互連關系的表結構(10)對所述復用結點(8)的功能驗證過程進行控制。5、根據權利要求4所述的多核或眾核處理器功能驗證設備,其特征在于,所述的用于記錄存儲地址分配的表結構(9)包括所述多核或眾核處理器中所有結點的輸入端口、輸出端口、內部寄存器的值,以及所述輸入端口、輸出端口和內部寄存器的存儲器號、首地址、長度和有效位數。6、根據權利要求4所述的多核或眾核處理器功能驗證設備,其特征在于,所述的用于記錄特定功能邏輯電路塊端口互連關系的表結構(10)記錄了所述多核或眾核處理器中一個結點中的一個輸入信號是否由其它某個結點的輸出產生,包括用于判斷輸入是否由某一個結點的輸出產生的VA有效位,用于記錄產生輸出的結點的編號的CID,擁有記錄輸出的編號OID。7、一種采用權利要求l-6所述的任一多核或眾核處理器功能驗證設備進行功能驗證的功能驗證方法,包括步驟l)、對存儲模塊(6)、用于記錄存儲地址分配的表結構(9)、以及用于記錄特定功能邏輯電路塊端口互連關系的表結構(10)進行初始化;步驟2)、在一輪全局時鐘內,在所述的復用結點(8)上對所述多核或眾核處理器中的結點依次進行功能驗證;步驟3)、輸出功能驗證的結果。8、根據權利要求7所述的功能驗證方法,其特征在于,所述的步驟2)包括步驟2-l)、將全局輸入信號中包括數據、地址和控制信號的信號輸入到所述的存儲模塊(6);步驟2-2)、所述的控制模塊(7)從所述的存儲模塊(6)讀取端口和寄存器信息,并寫入到所述的復用結點(8);步驟2-3)、運行所述的復用結點(8),進行功能驗證;步驟2-4)、將所述的復用結點(8)的寄存器和端口信息保存到所述的存儲模塊(6)中;步驟2-5)、在本輪全局時鐘內,若所述多核或眾核處理器中的每一個結點都已經在所述復用結點(8)上運行一次,則轉入步驟3);否則,從所述存儲模塊(6)中的用于記錄特定功能邏輯電路塊端口互連關系的表結構(10)讀取下一個待驗證的結點的輸入端口信號,并更新,然后重新執行步驟2-2)。9、根據權利要求8所述的功能驗證方法,其特征在于,所述的寄存器和端口信息在所述的用于記錄存儲地址分配的表結構(9)的作用下進行讀取和保存。全文摘要本發明提供一種多核或眾核處理器功能驗證設備,包括重復邏輯電路、片上存儲以及其它邏輯電路;重復邏輯電路包括用于模擬多核或眾核處理器中的各個結點的復用結點、用于對復用結點的功能驗證過程進行控制的控制模塊和用于存儲與所述復用結點的功能驗證過程相關數據的存儲模塊;其中,片上存儲和存儲模塊在所述FPGA的片上存儲資源上實現;其它邏輯電路、控制模塊和復用結點在FPGA的可編程邏輯資源上實現。本發明突破了FPGA芯片可編程邏輯容量大小對多核或眾核處理器功能驗證的限制,以增加運行時間為代價,減小硬件資源的開銷,提供了一種通用的對多核或眾核處理器功能驗證的方法,具有良好的靈活性和擴展性。文檔編號G06F11/26GK101320344SQ20081011624公開日2008年12月10日申請日期2008年7月7日優先權日2008年7月7日發明者包爾固德,張輪凱,范東睿,馬嘯宇申請人:中國科學院計算技術研究所