本發(fā)明涉及計(jì)算機(jī),尤其涉及一種用于初始化階段自動(dòng)選擇risc-v或x86指令集的處理器、處理方法及系統(tǒng)。
背景技術(shù):
1、指令集架構(gòu)(instruction?set?architecture,簡(jiǎn)稱isa)是計(jì)算機(jī)體系結(jié)構(gòu)的核心抽象模型,決定了處理器如何被軟件控制。常見的isa包括x86(廣泛用于個(gè)人電腦和服務(wù)器)、risc-v(因其開源性和低功耗特性在嵌入式系統(tǒng)和新興領(lǐng)域中流行)。isa允許同一架構(gòu)的不同實(shí)現(xiàn)方式在性能、尺寸和成本上有所差異,同時(shí)保持二進(jìn)制兼容性。然而,傳統(tǒng)cpu在設(shè)計(jì)時(shí)固定為單一isa(如x86或risc-v),無法在初始化時(shí)適應(yīng)不同的軟件環(huán)境,導(dǎo)致硬件資源浪費(fèi)或需要多個(gè)專用cpu,單一isa的cpu設(shè)計(jì)限制了其在多isa環(huán)境中的應(yīng)用,特別是在需要兼容不同軟件生態(tài)系統(tǒng)的場(chǎng)景中。在現(xiàn)代計(jì)算中,支持多種isa的需求日益增長(zhǎng),例如,在云計(jì)算中,虛擬機(jī)可能需要運(yùn)行x86和risc-v的應(yīng)用程序;在物聯(lián)網(wǎng)設(shè)備中,可能需要根據(jù)任務(wù)需求切換isa以優(yōu)化功耗和性能。因此,開發(fā)能夠靈活支持多種isa的cpu成為一個(gè)重要的技術(shù)挑戰(zhàn)。
2、針對(duì)上述問題,現(xiàn)有技術(shù)中,一種常見的方法是通過軟件仿真在一種isa的cpu上模擬另一種isa的執(zhí)行環(huán)境來實(shí)現(xiàn)兼容性。例如,qemu可以在x86處理器上運(yùn)行risc-v程序,雖然能夠?qū)崿F(xiàn)不同isa的兼容性,但存在顯著的技術(shù)不足,其主要問題包括性能開銷大、資源效率低和實(shí)時(shí)性差;指令翻譯或解釋過程導(dǎo)致執(zhí)行效率低下,難以滿足高性能計(jì)算需求;同時(shí),仿真環(huán)境占用額外資源,降低系統(tǒng)效率;對(duì)于實(shí)時(shí)性要求高的應(yīng)用,仿真的延遲和不確定性進(jìn)一步限制了其適用性。另一方面,現(xiàn)有的支持多isa的處理器在初始化時(shí)通常需要復(fù)雜的硬件設(shè)計(jì)或軟件干預(yù),以確定使用哪種isa,這種方法不僅增加了開發(fā)難度,還可能引入額外的運(yùn)行時(shí)開銷。
3、以上背景技術(shù)內(nèi)容的公開僅用于輔助理解本發(fā)明的發(fā)明構(gòu)思及技術(shù)方案,其并不必然屬于本技術(shù)的現(xiàn)有技術(shù),也不必然會(huì)給出技術(shù)教導(dǎo);在沒有明確的證據(jù)表明上述內(nèi)容在本技術(shù)的申請(qǐng)日之前已經(jīng)公開的情況下,上述背景技術(shù)不應(yīng)當(dāng)用于評(píng)價(jià)本技術(shù)的新穎性和創(chuàng)造性。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明的目的是提供一種用于初始化階段自動(dòng)選擇risc-v或x86指令集的處理器、處理方法及系統(tǒng),能夠自動(dòng)檢測(cè)指令流特征并配置對(duì)應(yīng)的解碼電路,能夠簡(jiǎn)化cpu初始化過程。
2、為達(dá)到上述目的,本發(fā)明采用的技術(shù)方案如下:
3、一種用于初始化階段自動(dòng)選擇risc-v或x86指令集的處理器,包括指令流檢測(cè)模塊和解碼配置模塊,所述解碼配置模塊包括多路選擇器、risc-v解碼電路和x86解碼電路,所述多路選擇器可選擇地與risc-v解碼電路或x86解碼電路電連接,所述指令流檢測(cè)模塊被配置為取出指令流并對(duì)其進(jìn)行檢測(cè)和分析后輸出對(duì)應(yīng)的isa控制信號(hào),所述指令流包括risc-v指令序列和/或x86指令序列;所述多路選擇器被配置為接收指令流檢測(cè)模塊輸出的isa控制信號(hào)并根據(jù)isa控制信號(hào)選擇且連接至對(duì)應(yīng)的解碼電路;
4、所述isa控制信號(hào)包括第一信號(hào)和第二信號(hào),當(dāng)所述指令流檢測(cè)模塊輸出第一信號(hào)時(shí),所述多路選擇器選擇且連接至x86解碼電路;當(dāng)所述指令流檢測(cè)模塊輸出第二信號(hào)時(shí),所述多路選擇器選擇且連接至risc-v解碼電路。
5、本發(fā)明通過指令流檢測(cè)模塊和解碼配置模塊協(xié)同工作,實(shí)現(xiàn)了cpu在初始化階段根據(jù)指令流特征自動(dòng)選擇x86解碼電路或risc-v解碼電路的高效機(jī)制。解碼配置模塊根據(jù)指令流檢測(cè)模塊的檢測(cè)結(jié)果生成isa控制信號(hào),進(jìn)而激活cpu內(nèi)部的x86解碼電路或risc-v解碼電路。這種動(dòng)態(tài)配置的方式能夠確保指令以原生方式執(zhí)行,無需翻譯或仿真,從而能夠顯著提升初始化效率;這種設(shè)計(jì)讓單顆cpu芯片在初始化時(shí)即可根據(jù)真實(shí)指令內(nèi)容自動(dòng)適配對(duì)應(yīng)的指令集,大幅提高了系統(tǒng)的靈活性,降低了硬件資源浪費(fèi)。此外,解碼配置模塊通過硬件的多路選擇器實(shí)現(xiàn)快速切換,有利于優(yōu)化系統(tǒng)性能。
6、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,所述指令流檢測(cè)模塊包括指令寄存器和取值單元,所述指令寄存器與取值單元電連接,所述指令流存儲(chǔ)在指令寄存器中,所述取值單元被配置為取出指令流中的低8位。
7、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,所述指令流檢測(cè)模塊還包括第一比較器和第二比較器,所述第一比較器及第二比較器均與取值單元相連。
8、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,所述第一比較器被配置為對(duì)取值單元中取到的指令流的低8位與預(yù)設(shè)的第一固定位模式進(jìn)行比對(duì)并輸出比對(duì)結(jié)果,所述第二比較器被配置為對(duì)取值單元中取到的指令流的低7位與預(yù)設(shè)的第二固定位模式進(jìn)行比對(duì)并輸出比對(duì)結(jié)果。本發(fā)明的一些實(shí)施例中,第一固定位模式為二進(jìn)制數(shù)11101010,第二固定位模式為二進(jìn)制數(shù)1101111。
9、在cpu啟動(dòng)時(shí),指令流檢測(cè)模塊中從指令寄存器中內(nèi)存的重置向量讀取初始指令流,并利用硬件邏輯(第一比較器和第二比較器)快速分析其特征,特征包括指令長(zhǎng)度和操作碼模式,通過分析這些特征以高效區(qū)分risc-v指令集與x86指令集。
10、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,所述多路選擇器包括一個(gè)控制端口和一個(gè)輸出端口,所述控制端口可選擇地與第一比較器或第二比較器電連接,所述控制端口被配置為接收isa控制信號(hào);所述輸出端口可選擇地與risc-v解碼電路或x86解碼電路電連接,所述輸出端口被配置為根據(jù)isa控制信號(hào)接通對(duì)應(yīng)的解碼電路。
11、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,當(dāng)所述第一比較器的比對(duì)結(jié)果為一致時(shí),第一比較器向多路選擇器輸出所述第一信號(hào);當(dāng)所述第一比較器的比對(duì)結(jié)果為不一致時(shí),所述第二比較器響應(yīng)于該比對(duì)結(jié)果并對(duì)取值單元中取到的指令流的低7位與預(yù)設(shè)的第二固定位模式進(jìn)行比對(duì)。
12、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,當(dāng)所述第二比較器的比對(duì)結(jié)果為一致時(shí),第二比較器向多路選擇器輸出所述第二信號(hào);否則,第二比較器輸出異常信號(hào)。
13、具體地,當(dāng)?shù)谝槐容^器經(jīng)過分析比對(duì)后輸出第一信號(hào)時(shí),此時(shí)的多路選擇器的控制端口與第一比較器電連接,同時(shí),多路選擇器的輸出端口接通x86解碼電路,使得當(dāng)前的指令流能夠被準(zhǔn)確送入x86解碼電路并進(jìn)行后續(xù)的處理。當(dāng)?shù)谝槐容^器經(jīng)過分析比對(duì)后輸出比對(duì)結(jié)果不一致的信號(hào)時(shí),會(huì)進(jìn)一步由第二比較器對(duì)指令流的低7位進(jìn)行比對(duì),當(dāng)?shù)诙容^器經(jīng)過分析比對(duì)后輸出第二信號(hào)時(shí),此時(shí)的多路選擇器的控制端口與第二比較器電連接,同時(shí),多路選擇器的輸出端口接通risc-v解碼電路,使得當(dāng)前的指令流能夠被準(zhǔn)確送入risc-v解碼電路并進(jìn)行后續(xù)的處理。
14、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,還包括異常處理模塊,所述第二比較器還與異常處理模塊相連,所述異常處理模塊被配置為接收所述異常信號(hào)并對(duì)指令流進(jìn)行異常處理。
15、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,所述第一固定位模式存儲(chǔ)在第一比較器中,所述第二固定位模式存儲(chǔ)在第二比較器中。
16、根據(jù)本發(fā)明的另一方面,提供了一種基于上述處理器的用于初始化階段自動(dòng)選擇risc-v或x86指令集的處理方法,包括如下步驟:
17、在cpu初始化階段,通過指令流檢測(cè)模塊取出指令流并對(duì)其進(jìn)行檢測(cè)和分析后向多路選擇器輸出對(duì)應(yīng)的isa控制信號(hào);
18、多路選擇器接收到isa控制信號(hào)后選擇并連接至risc-v解碼電路或x86解碼電路,使得指令流被送入對(duì)應(yīng)的解碼電路。
19、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,所述指令流檢測(cè)模塊取出指令流并對(duì)其進(jìn)行檢測(cè)和分析后向多路選擇器輸出對(duì)應(yīng)的isa控制信號(hào)的方法如下所述:
20、指令流檢測(cè)模塊先對(duì)取到的指令流的低8位與預(yù)設(shè)的第一固定位模式進(jìn)行比對(duì),若比對(duì)結(jié)果一致,則輸出第一信號(hào);
21、若比對(duì)結(jié)果不一致,則將取到的指令流的低7位與預(yù)設(shè)的第二固定位模式進(jìn)行比對(duì),若比對(duì)結(jié)果一致,則輸出第二信號(hào);否則,輸出異常信號(hào)。
22、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,還包括以下步驟:當(dāng)指令流檢測(cè)模塊將取到的指令流的低7位與預(yù)設(shè)的第二固定位模式進(jìn)行比對(duì)且比對(duì)結(jié)果不一致時(shí),所述指令流檢測(cè)模塊向異常處理模塊傳輸所述異常信號(hào),以使得指令流進(jìn)入異常處理流程。當(dāng)?shù)谝槐容^器與第二比較器經(jīng)過比對(duì)后均未能滿足特征條件時(shí),指令流檢測(cè)模塊就會(huì)判定當(dāng)前指令流異常,進(jìn)而使其進(jìn)入異常處理流程。
23、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,所述異常處理流程包括如下步驟:
24、所述異常處理模塊發(fā)現(xiàn)非法指令后進(jìn)入異常處理機(jī)制;
25、保存寄存器信息;
26、跳轉(zhuǎn)到異常處理程序入口并執(zhí)行異常處理程序;
27、若異常處理失敗或長(zhǎng)時(shí)間無響應(yīng),則系統(tǒng)重啟以進(jìn)行復(fù)位。
28、進(jìn)一步地,承前所述的任一技術(shù)方案或多個(gè)技術(shù)方案的組合,所述初始化階段為cpu上電或復(fù)位后的階段。
29、根據(jù)本發(fā)明的另一方面,本發(fā)明提供了一種計(jì)算機(jī)系統(tǒng),包括如上任一技術(shù)方案或多個(gè)技術(shù)方案的組合所述的用于初始化階段自動(dòng)選擇risc-v或x86指令集的處理器,該計(jì)算機(jī)系統(tǒng)基于上述處理器并執(zhí)行上述的處理方法。
30、本發(fā)明提供的技術(shù)方案帶來的有益效果如下:
31、a.?本發(fā)明通過指令流檢測(cè)模塊在cpu初始化時(shí)直接分析指令流特征并配置對(duì)應(yīng)的解碼電路,避免了仿真過程,使初始化階段的指令能夠以原生方式執(zhí)行指令,有利于提升系統(tǒng)的性能且確??焖佟⒏咝У某跏蓟^程,特別適合云計(jì)算和嵌入式系統(tǒng)等場(chǎng)景;
32、b.?本發(fā)明通過單顆cpu支持x86和risc-v指令集架構(gòu),無需為每種指令集架構(gòu)配備獨(dú)立硬件,有利于降低芯片的功耗和制造成本,優(yōu)化了資源利用率;
33、c.?本發(fā)明通過硬件模塊化設(shè)計(jì),能夠自動(dòng)完成指令集架構(gòu)的選擇和解碼配置,簡(jiǎn)化了系統(tǒng)架構(gòu),無需復(fù)雜的初始化機(jī)制或軟件干預(yù),有利于減少設(shè)計(jì)的復(fù)雜性,提高了系統(tǒng)的可維護(hù)性和可擴(kuò)展性,縮短了開發(fā)周期。