本發明實施例涉及計算機技術領域,尤其涉及一種基于模型建立CPU的方法及裝置。
背景技術:
中央處理器(Central Processing Unit,簡稱CPU)是計算機系統的引擎和核心,操作系統、應用軟件的可靠性都建立在CPU功能正確性的基礎上。
現有技術中,CPU設計方法是將數據通路畫在圖上,且所有指令的數據通路畫在一張圖上,使得各指令的數據通路相關性較高,導致數據通路設計十分復雜,設計難度大,且錯誤率較高。
技術實現要素:
本發明實施例提供一種基于模型建立CPU的方法及裝置,以簡化建立CPU的方法,降低建立CPU過程中的錯誤率。
本發明實施例的一個方面是提供一種基于模型建立CPU的方法,包括:
根據指令集中每個指令的結構和功能,生成每個指令對應的指令數據通路;
在每個指令數據通路的源端和目的端之間插入多路選擇器,生成多路選擇器的控制信號表達式和寄存器使能信號的邏輯表達式,所述控制信號表達式包括指令執行的階段信號、指令操作碼、指令控制碼字段;
合并相同的指令數據通路中的項,同時對所述控制信號表達式做邏輯合并操作,得到CPU數據通路;
根據所述CPU數據通路,確定所述CPU的結構信息;
根據所述控制信號表達式,確定所述CPU的控制單元的結構信息。
本發明實施例的另一個方面是提供一種基于模型建立CPU的裝置,包括:
生成模塊,用于根據指令集中每個指令的結構和功能,生成每個指令對應的指令數據通路;
插入模塊,用于在每個指令數據通路的源端和目的端之間插入多路選擇器,生成多路選擇器的控制信號表達式和寄存器使能信號的邏輯表達式,所述控制信號表達式包括指令執行的階段信號、指令操作碼、指令控制碼字段;
合并模塊,用于合并相同的指令數據通路中的項,同時對所述控制信號表達式做邏輯合并操作,得到CPU數據通路;
確定模塊,用于根據所述CPU數據通路,確定所述CPU的結構信息;根據所述控制信號表達式,確定所述CPU的控制單元的結構信息。
本發明實施例提供的基于模型建立CPU的方法及裝置,根據每條指令的數據通路,然后通過工程綜合方法,自動生成CPU的數據通路和控制信號,使得指令集中的不同指令的設計是相互獨立的,一個指令的設計并不影響其他指令,也不受其他指令的影響,使得各指令的數據通路相關性較低,簡化了建立CPU的方法,降低了建立CPU過程中的錯誤率。
附圖說明
圖1為本發明實施例提供的基于模型建立CPU的方法流程圖;
圖2為CPU數據通路綜合、代碼自動生成的流程圖;
圖3為基于模型和形式方法的符合DO-178C開發流程的CPU建模設計流程;
圖4為本發明另一實施例提供的基于模型建立CPU的方法流程圖;
圖5為CPU代碼生成方法的結構圖;
圖6為本發明實施例提供的基于模型建立CPU的裝置的結構圖;
圖7為本發明另一實施例提供的基于模型建立CPU的裝置的結構圖。
具體實施方式
圖1為本發明實施例提供的基于模型建立CPU的方法流程圖。本發明實施例針對現有技術中CPU設計方法是將數據通路畫在圖上,且所有指令的數據通路畫在一張圖上,使得各指令的數據通路相關性較高,導致數據通路設計十分復雜,設計難度大,且錯誤率較高,提供了基于模型建立CPU的方法,具體的基于模型建立CPU的方法步驟如下:
步驟S101、根據指令集中每個指令的結構和功能,生成每個指令對應的指令數據通路。
所述CPU的結構模型包括:數字邏輯部件、數字邏輯部件功能及控制信號邏輯公式、數據通路和時鐘周期。
本實施例將CPU的結構模型表示為:<S,F,R,C>,其中,S表示數字邏輯部件(含多路選擇器和控制單元),F表示數字邏輯部件功能及控制信號邏輯公式,R表示數據通路,C表示時鐘周期。
數字邏輯部件是指完成某具體功能的電路部件,例如程序計數器PC、存儲器Mem、指令寄存器IR、通用寄存器堆GPRegs和算術邏輯單元ALU等。數字邏輯部件對外只有若干輸入輸出的數據端口和控制端口,但是內部結構相對比較復雜,包含寄存器元件、復雜的邏輯電路等。一般來說,數字邏輯部件完成針對某數據的一套完整功能,例如程序計數器可以完成針對當前指令地址的輸出、保持、寫入和自增等功能。在任意階段(一個時鐘周期內)數字邏輯部件只執行一個具體功能,其通過控制單元給控制端口的控制信號是否有效來選擇此時要完成的功能具體是輸出、保持、寫入和自增中的哪一個。
多路選擇器Mux是數字邏輯部件的一種,但由于有特殊作用,在此模型中單獨討論。Mux是針對多輸入一輸出的數據流結點而存在的數據選擇部件,根據控制信號,一時刻只有一個輸入數據傳遞到輸出端。按輸入端口的數量分,Mux分為二路選擇器、三路選擇器等。
控制單元(Control Unit,簡稱CU)也是數字邏輯部件的一種,CU用來控制CPU中例如多路選擇器、程序計數器PC、存儲器Mem、指令寄存器IR、通用寄存器堆GPRegs和算術邏輯單元ALU等數字邏輯部件,CU對外連接到所有需要控制信號的數字邏輯部件,此處,需要控制信號的數字邏輯部件可以是多路選擇器、程序計數器PC、存儲器Mem、指令寄存器IR、通用寄存器堆GPRegs和算術邏輯單元ALU中的任意一個或多個。控制單元可對指令集中的指令進行譯碼獲得該指令的操作碼和功能碼,并根據該指令的操作碼和功能碼,生成該指令對應的控制信號,以便控制單元根據該控制信號控制數字邏輯部件。
數字邏輯部件中例如寄存器和多路選擇器有控制信號接收端口,該控制信號接收端口用于接收控制單元發送的控制信號,在不同指令的不同階段,控制單元執行的操作是不同的,因此,可用控制信號表達式來表示控制單元執行的操作,例如,在某指令的某階段,若該控制信號表達式為真,則向寄存器或多路選擇器的控制信號接收端口發送有效信號,否則發送無效信號。
數據通路是指CPU執行指令所需的操作子句的序列,分為指令通路和CPU通路。指令通路是在已經確定當前執行指令的前提下,執行指令的操作,不需要多路選擇器參與,只需連接數字邏輯部件的數據端口以及給予寄存器控制信號即可。CPU通路是綜合了所有指令得到的數據通路,包含多路選擇器,控制信號在綜合之后形成表達式。
圖2為CPU數據通路綜合、代碼自動生成的流程圖。CPU結構模型將時鐘周期抽象成五個階段,即取指階段IF、譯碼階段ID、執行階段EX、訪存階段MEM和回寫階段WB,每個階段分為數據準備階段和數據寫入階段兩個部分。在CPU結構模型中將CPU指令周期分為五個階段,因此,每個指令均可以按照該五個階段生成對應的指令數據通路。
在本實施例中,指令數據通路是操作子句組成的集合,每個子句實現連接端口或者給予寄存器控制信號的功能。指令數據通路的模型為三元組<Stage,Source,Target>。其中,Stage表示指令的執行階段,Source表示源,Target表示宿。處于數據準備階段的子句是連接端口類型,Source表示源端口,Target表示目的端口;處于數據寫入階段的子句是控制信號類型,Source表示寄存器,Target表示信號符號。
步驟S102、在每個指令數據通路的源端和目的端之間插入多路選擇器,生成多路選擇器的控制信號表達式和寄存器使能信號的邏輯表達式,所述控制信號表達式包括指令執行的階段信號、指令操作碼、指令控制碼字段。
在本實施例中,程序計數器PC、存儲器Mem、指令寄存器IR、通用寄存器堆GPRegs和算術邏輯單元ALU等數字邏輯部件的每個輸出端口配置一個多路選擇器,并給多路選擇器編號,得到多路選擇器對照表,該多路選擇器對照表包括哪個數字邏輯部件的哪個輸出端口和多路選擇器編號的對應關系。
按照該多路選擇器對照表,在每個指令數據通路的源端和目的端之間插入多路選擇器,得到<Stage,Source,Mux_In,Mux_Out,Target>,其中,Mux_In表示多路選擇器的輸入端口、Mux_Out表示多路選擇器的輸出端口。
在<Stage,Source,Mux_In,Mux_Out,Target>中加入指令名稱,得到<Instruction,Stage,Source,Mux_In,Mux_Out,Target>,其中,Instruction表示指令名稱。
步驟S103、合并相同的指令數據通路中的項,同時對所述控制信號表達式做邏輯合并操作,得到CPU數據通路。
對于<Instruction,Stage,Source,Mux_In,Mux_Out,Target>,將相同的<Source,Mux_In,Mux_Out,Target>合并,同時生成控制信號表達式。合并時,先將不同的Instruction和Stage項均用或符號“|”連接,然后將Instruction和Stage用與符號“&”合并成Ctrl_Signal,最后去掉Instruction和Stage項。這樣,指令名稱和執行階段都集中在控制信號表達式Ctrl_Signal中了,當在某指令的某階段時,Ctrl_Signal表達式必然為1,而此指令的其它階段,表達式均為0。最后生成的CPU數據通路是由五元組<Source,Mux_In,Mux_Out,Target,Ctrl_Signal>組成的集合。
然后將相同的目的端口合并成同一個多路選擇器輸出端口,而相同目的端口對應的不同源端口合并成同一個多路選擇器下不同的輸入端口。
步驟S104、根據所述CPU數據通路,確定所述CPU的結構信息。
具體的,根據CPU數據通路的五元組模型<Source,Mux_In,Mux_Out,Target,Ctrl_Signal>,確定構成CPU的多路選擇器,由于多路選擇器是用于連接其他數字邏輯部件的部件,則根據多路選擇器的輸入和輸出可確定其他數字邏輯部件之間的連接關系,該其他數字邏輯部件之間的連接關系即可作為CPU的結構信息。
步驟S105、根據所述控制信號表達式,確定所述CPU的控制單元的結構信息。
CPU的控制單元根據控制信號表達式Ctrl_Signal生成控制信號,因此,根據上述步驟得出的控制信號表達式,可確定CPU的控制信號,同時還可以確定CPU的控制單元的結構信息。
圖3為基于模型和形式方法的符合DO-178C開發流程的CPU建模設計流程。CPU結構形式建模技術首先提出了一個CPU結構模型。其次,形式設計方法認為指令的設計是互相獨立的,一條指令的設計不影響另一條指令。形式設計方法只需按照指令集的規范,單獨設計每條指令的數據通路,然后通過工程綜合方法,自動生成CPU的數據通路和控制信號。
本發明實施例根據每條指令的數據通路,然后通過工程綜合方法,自動生成CPU的數據通路和控制信號,使得指令集中的不同指令的設計是相互獨立的,一個指令的設計并不影響其他指令,也不受其他指令的影響,使得各指令的數據通路相關性較低,簡化了建立CPU的方法,降低了建立CPU過程中的錯誤率。
圖4為本發明另一實施例提供的基于模型建立CPU的方法流程圖。在上述實施例的基礎上,本實施例提供的基于模型建立CPU的方法步驟如下:
步驟S201、根據指令集中每個指令的結構和功能,將所述指令的執行過程依次分配在取指階段、譯碼階段、執行階段、存儲階段、寫回階段。
在本實施例中,將時鐘周期抽象成五個階段,即取指階段IF、譯碼階段ID、執行階段EX、訪存階段MEM和回寫階段WB,相應的,將每個指令的執行過程依次分配在取指階段、譯碼階段、執行階段、存儲階段、寫回階段。
下面以加法指令即add指令為例介紹指令在該五個階段的完整執行流程。IF階段,控制單元將進程號和指令地址發送給指令存儲器,并從指令存儲器中讀出指令,將該指令發送給指令寄存器。ID階段,控制單元從指令寄存器讀出指令,并對指令進行譯碼得到該指令的操作碼和功能碼,將數據存儲的地址發送給寄存器堆,寄存器堆根據數據存儲的地址讀出加法操作的兩個數據后,將兩個數據分別發送給A寄存器和B寄存器。EX階段,控制單元將A寄存器中的數據和B寄存器中的數據發送給ALU,并將加法指令的功能碼發送給ALU,ALU根據A寄存器中的數據、B寄存器中的數據以及加法指令的功能碼,進行加法計算得到計算結果,并將計算結果發送給ALUOut寄存器。MEM階段,無操作。WB階段,控制單元將ALUOut寄存器中的計算結果寫到寄存器堆中。Stage,Source,Target
在本實施例中,指令通路如下表1所示:
表1
由于指令之間要共用某些數字邏輯部件,因此在傳統的設計方法中,指令的設計必然影響其它指令或受其它指令影響。在CPU結構的形式設計方法中,多個指令通路可以通過工程綜合方法合并成CPU通路。使用多路選擇器連接共用數字邏輯部件的端口,根據譯碼得到的指令操作碼和功能碼,可以控制多路選擇器來切換到對應個指令通路,從而完成指令功能。
步驟S202、根據所述指令的取指階段、譯碼階段、執行階段、存儲階段、寫回階段,生成所述指令對應的指令數據通路。
在CPU結構模型中將CPU指令周期分為五個階段,因此,每個指令均可以按照該五個階段生成對應的指令數據通路。
步驟S203、在每個指令數據通路的源端和目的端之間插入多路選擇器,生成多路選擇器的控制信號表達式和寄存器使能信號的邏輯表達式,所述控制信號表達式包括指令執行的階段信號、指令操作碼、指令控制碼字段。
指令數據通路的模型為三元組<Stage,Source,Target>。其中,Stage表示指令的執行階段,Source表示源,Target表示宿。處于數據準備階段的子句是連接端口類型,Source表示源端口,Target表示目的端口;處于數據寫入階段的子句是控制信號類型,Source表示寄存器,Target表示信號符號。
根據指令集中的指令規范和操作語義,設計指令在五個階段分別需要完成的操作子句。注意到指令通路是操作子句的無序集,同一階段內子句的順序對指令的執行沒有影響。
在每個指令數據通路的源端和目的端之間插入多路選擇器,得到<Stage,Source,Mux_In,Mux_Out,Target>,其中,Mux_In表示多路選擇器的輸入端口、Mux_Out表示多路選擇器的輸出端口。
在<Stage,Source,Mux_In,Mux_Out,Target>中加入指令名稱,得到<Instruction,Stage,Source,Mux_In,Mux_Out,Target>,其中,Instruction表示指令名稱。
步驟S204、以多路選擇器為關鍵字,對所述指令數據通路中的項做排序。
對于<Instruction,Stage,Source,Mux_In,Mux_Out,Target>,Instruction,Stage,Source,Mux_In,Mux_Out,Target分別為指令數據通路中的項,在本實施例,以多路選擇器為關鍵字,對所述指令數據通路中的項做排序。
步驟S205、以數據源端和多路選擇器為關鍵字,合并相同的指令數據通路中的項,同時對所述控制信號表達式做邏輯合并操作,得到CPU數據通路。
在本實施例中,以<Source,Mux_In,Mux_Out,Target>為關鍵字,合并相同的指令數據通路中的項,同時對所述控制信號表達式做邏輯合并操作,得到CPU數據通路<Source,Mux_In,Mux_Out,Target,Ctrl_Signal>。
步驟S206、根據所述CPU數據通路,確定所述CPU的結構信息。
步驟S207、根據所述控制信號表達式,確定所述CPU的控制單元的結構信息。
根據DO-178C標準中的A級軟件要求,CPU代碼需根據CPU軟件框架(軟件架構)和CPU模型(低層需求)實現。根據研究需要,選擇Verilog HDL作為CPU代碼的設計語言。本節以PPC為例,分別從CPU軟件框架和代碼轉換方法兩個方面進行詳細說明。圖5為CPU代碼生成方法的結構圖。
CPU軟件框架是根據CPU代碼的結構和CPU結構的特點設計的一種Verilog代碼框架,其中集成了CPU頂層框架、控制單元模塊和數字邏輯部件模塊。CPU頂層框架和控制單元模塊是不完整的代碼框架,頂層框架中待實現具體的通路結構,控制單元模塊中待實現具體的控制信號。而數字邏輯部件模塊是所有CPU需要用到的數字邏輯部件的完整實現。根據CPU結構,通過代碼轉換方法分別生成通路結構代碼和控制信號代碼,然后分別嵌入到頂層框架模塊和控制單元模塊中,形成完整的CPU代碼。
本發明實施例根據每條指令的數據通路,然后通過工程綜合方法,自動生成CPU的數據通路和控制信號,使得指令集中的不同指令的設計是相互獨立的,一個指令的設計并不影響其他指令,也不受其他指令的影響,使得各指令的數據通路相關性較低,簡化了建立CPU的方法,降低了建立CPU過程中的錯誤率。
圖6為本發明實施例提供的基于模型建立CPU的裝置的結構圖。本發明實施例提供的基于模型建立CPU的裝置可以執行基于模型建立CPU的方法實施例提供的處理流程,如圖6所示,基于模型建立CPU的裝置60包括生成模塊61、插入模塊62、合并模塊63和確定模塊64,其中,生成模塊61用于根據指令集中每個指令的結構和功能,生成每個指令對應的指令數據通路;插入模塊62用于在每個指令數據通路的源端和目的端之間插入多路選擇器,生成多路選擇器的控制信號表達式和寄存器使能信號的邏輯表達式,所述控制信號表達式包括指令執行的階段信號、指令操作碼、指令控制碼字段;合并模塊63用于合并相同的指令數據通路中的項,同時對所述控制信號表達式做邏輯合并操作,得到CPU數據通路;確定模塊64用于根據所述CPU數據通路,確定所述CPU的結構信息;根據所述控制信號表達式,確定所述CPU的控制單元的結構信息。
本發明實施例根據每條指令的數據通路,然后通過工程綜合方法,自動生成CPU的數據通路和控制信號,使得指令集中的不同指令的設計是相互獨立的,一個指令的設計并不影響其他指令,也不受其他指令的影響,使得各指令的數據通路相關性較低,簡化了建立CPU的方法,降低了建立CPU過程中的錯誤率。
圖7為本發明另一實施例提供的基于模型建立CPU的裝置的結構圖。在上述實施例的基礎上,基于模型建立CPU的裝置60還包括:排序模塊65,排序模塊65用于以多路選擇器為關鍵字,對所述指令數據通路中的項做排序。
合并模塊63具體用于以數據源端和多路選擇器為關鍵字,合并相同的指令數據通路中的項。
生成模塊61包括分配單元611和生成單元612,其中,分配單元611用于將所述指令的執行過程依次分配在取指階段、譯碼階段、執行階段、存儲階段、寫回階段;生成單元612用于根據所述指令的取指階段、譯碼階段、執行階段、存儲階段、寫回階段,生成所述指令對應的指令數據通路。
所述CPU的結構模型包括:數字邏輯部件、數字邏輯部件功能及控制信號邏輯公式、數據通路和時鐘周期。
本發明實施例提供的基于模型建立CPU的裝置可以具體用于執行上述圖1所提供的方法實施例,具體功能此處不再贅述。
本發明實施例根據每條指令的數據通路,然后通過工程綜合方法,自動生成CPU的數據通路和控制信號,使得指令集中的不同指令的設計是相互獨立的,一個指令的設計并不影響其他指令,也不受其他指令的影響,使得各指令的數據通路相關性較低,簡化了建立CPU的方法,降低了建立CPU過程中的錯誤率。
綜上所述,本發明實施例根據每條指令的數據通路,然后通過工程綜合方法,自動生成CPU的數據通路和控制信號,使得指令集中的不同指令的設計是相互獨立的,一個指令的設計并不影響其他指令,也不受其他指令的影響,使得各指令的數據通路相關性較低,簡化了建立CPU的方法,降低了建立CPU過程中的錯誤率。
在本發明所提供的幾個實施例中,應該理解到,所揭露的裝置和方法,可以通過其它的方式實現。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統,或一些特征可以忽略,或不執行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。
所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其中的部分或者全部單元來實現本實施例方案的目的。
另外,在本發明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現,也可以采用硬件加軟件功能單元的形式實現。
上述以軟件功能單元的形式實現的集成的單元,可以存儲在一個計算機可讀取存儲介質中。上述軟件功能單元存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)或處理器(processor)執行本發明各個實施例所述方法的部分步驟。而前述的存儲介質包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,ROM)、隨機存取存儲器(Random Access Memory,RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質。
本領域技術人員可以清楚地了解到,為描述的方便和簡潔,僅以上述各功能模塊的劃分進行舉例說明,實際應用中,可以根據需要而將上述功能分配由不同的功能模塊完成,即將裝置的內部結構劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。上述描述的裝置的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。
最后應說明的是:以上各實施例僅用以說明本發明的技術方案,而非對其限制;盡管參照前述各實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分或者全部技術特征進行等同替換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的范圍。