国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于RISC-V 的APLIC 的設(shè)計(jì)

2024-09-18 00:00:00向德鋼石雪倩王鎮(zhèn)道
消費(fèi)電子 2024年8期

【關(guān)鍵詞】中斷系統(tǒng);RISC-V;APLIC

RISC-V作為RISC系列指令集的第五代產(chǎn)品,因其模塊化,可擴(kuò)展,免費(fèi)開(kāi)源,適應(yīng)新時(shí)代智能互聯(lián)的要求等原因,在近10年里不斷成為芯片指令集架構(gòu)的第三極,與x86,ARM共同組成當(dāng)今世界主流的指令集系統(tǒng)[1]。

當(dāng)前RISC-V的中斷系統(tǒng)會(huì)在核外存在一個(gè)PLIC或IMSIC(Incoming MSI Controller)模塊對(duì)中斷進(jìn)行預(yù)處理[2-3]。但PLIC無(wú)法對(duì)MSI中斷做出處理,IMSIC也僅能夠處理MSI中斷。APLIC中將線(xiàn)中斷轉(zhuǎn)化為MSI的功能使得IMSIC僅需接收MSI中斷就可以額外處理線(xiàn)中斷。當(dāng)系統(tǒng)中無(wú)需處理MSI中斷時(shí),僅靠APLIC也可以處理線(xiàn)中斷。對(duì)于操作系統(tǒng)來(lái)說(shuō),這種切換僅需使用軟件改變對(duì)寄存器的配置便可以實(shí)現(xiàn),這將極大提高系統(tǒng)的靈活性[4]。

由于APLIC的中斷域的存在,在滿(mǎn)足了大型系統(tǒng)所需求的SMP(Symmetric Multiprocessing)的基礎(chǔ)上,S級(jí)中斷域允許多個(gè)HART以S模式運(yùn)行操作系統(tǒng)直接控制它接收到的中斷,從而避免了調(diào)用M模式來(lái)執(zhí)行,這極大提高了CPU的工作效率[5]。同時(shí)因?yàn)閷?duì)每個(gè)HART都劃分在不同級(jí)別的中斷域里,也能更好配合對(duì)相應(yīng)中斷域的PMP(Physical MemoryProtection)物理內(nèi)存保護(hù)。因此APLIC的設(shè)計(jì)將極大提高整個(gè)RISC-V系統(tǒng)的性能和穩(wěn)定性。

此外APLIC相比現(xiàn)在使用的PLIC,具有更多的可配置性,比如寄存器的大端小端,中斷源的觸發(fā)方式,提供用于軟件測(cè)試中斷傳輸延遲的IFORCE和GENMSI寄存器等。

一、AIA中的APLIC

SOC的外設(shè)通過(guò)外部中斷線(xiàn)wire將中斷發(fā)送給APLIC。APLIC內(nèi)的內(nèi)存映射寄存器都可以通過(guò)對(duì)SOC內(nèi)存特定地址的寫(xiě)入來(lái)實(shí)現(xiàn)配置。

圖1 APLIC中的三個(gè)中斷域

在配置完成后,如果是直接傳送模式,APLIC將判斷外設(shè)輸入的中斷線(xiàn)上是否有中斷信號(hào),中斷信號(hào)應(yīng)該發(fā)送給哪一個(gè)RISC-V的HART,然后將對(duì)應(yīng)HART的線(xiàn)中斷拉高,通知HART來(lái)特定內(nèi)存映射寄存器讀取相應(yīng)的中斷ID和中斷優(yōu)先級(jí)。

如果是MSI模式,在收到外設(shè)的線(xiàn)中斷后會(huì)將該信號(hào)轉(zhuǎn)換成一次寫(xiě)操作,寫(xiě)在對(duì)應(yīng)的內(nèi)存空間中。對(duì)該內(nèi)存空間的寫(xiě)會(huì)產(chǎn)生一個(gè)信號(hào)通知IMSIC有中斷傳入。

二、APLIC架構(gòu)的設(shè)計(jì)

對(duì)于一個(gè)APLIC來(lái)說(shuō),一般包含多個(gè)域,對(duì)于APLIC支持的每個(gè)中斷域,都有一個(gè)專(zhuān)用的內(nèi)存映射控制區(qū)域。中斷域的控制區(qū)域由一組32位寄存器填充,用來(lái)控制APLIC的功能。每個(gè)中斷域的內(nèi)存映射控制區(qū)域有自己獨(dú)立的物理控制接口,HART可以通過(guò)基于頁(yè)表的地址轉(zhuǎn)換輕松地調(diào)節(jié)對(duì)每個(gè)域的訪(fǎng)問(wèn)。該接口在系統(tǒng)的地址空間中進(jìn)行內(nèi)存映射,這樣就方便PMP對(duì)每個(gè)中斷域進(jìn)行保護(hù)。

因此本文設(shè)計(jì)了如圖1所示的三個(gè)域,兩個(gè)M域和一個(gè)S域。每個(gè)域根據(jù)軟件的控制可以對(duì)應(yīng)一些特定的HART。在根域中的管理HART 0是僅限根域的HART,它基本上控制著根域所有中斷源的委托情況。

APLIC的每個(gè)中斷域劃分成5個(gè)組成部分:APLIC_REGS,IP_IE, MSI_CTRL, DIRECT_CTRL, DELEG_CTRL。

三、APLIC子模塊設(shè)計(jì)

(一)REG_CTRL模塊

該模塊確定了每個(gè)中斷源的中斷觸發(fā)模式(邊沿觸發(fā)還是電平觸發(fā)還是分離模式還是不活躍模式),中斷源的委托情況及委托子域的Idex,域的全局中斷,寄存器的大端小端,域的工作模式,中斷源的優(yōu)先級(jí),中斷源的EIID,目標(biāo)HART的HART_IDEX,軟件控制掛起使能,MSI地址配置,強(qiáng)制MSI產(chǎn)生,IDC(interrupt delivery control)功能的實(shí)現(xiàn)包括每個(gè)源的中斷傳遞使能,中斷閾值,強(qiáng)制中斷,最高優(yōu)先級(jí)寄存器的賦值和清除等。

(二)IP_IE模塊

該模塊主要是對(duì)中斷源和軟件配置的掛起和使能進(jìn)行管理。該模塊包含以下幾種模式:

1.分離模式

僅通過(guò)對(duì)setip或setipnum寄存器的相關(guān)寫(xiě)入將掛起位設(shè)置為1。

當(dāng)在APLIC處claim中斷或由MSI轉(zhuǎn)發(fā)中斷,或通過(guò)對(duì)in_clrip寄存器或clripnum的相關(guān)寫(xiě)入則會(huì)清除掛起位。

2.邊沿觸發(fā)模式

通過(guò)整流輸入值的低到高轉(zhuǎn)換,或通過(guò)對(duì)seti p或setipnum寄存器的相關(guān)寫(xiě)入,將掛起位設(shè)置為1。

當(dāng)在APLIC處claim中斷或由MSI轉(zhuǎn)發(fā)中斷,或通過(guò)對(duì)in_clrip寄存器或clripnum的相關(guān)寫(xiě)入則會(huì)清除掛起位。

3.電平觸發(fā)模式,工作在直傳模式

每當(dāng)整流輸入值為高時(shí),掛起位被設(shè)置為1。無(wú)法通過(guò)寫(xiě)入setip或setipnum寄存器來(lái)設(shè)置掛起位。

每當(dāng)整流輸入值為低時(shí),將清除掛起位。掛起位不能通過(guò)APLIC處的中斷claim清除,也不能通過(guò)寫(xiě)入in_clrip寄存器或clripnum清除。

4.電平觸發(fā)模式,工作在MSI模式

通過(guò)整流輸入值中的低到高轉(zhuǎn)變將掛起位設(shè)置為1。當(dāng)整流輸入值為高時(shí),掛起位也可以通過(guò)對(duì)setip或setipnum寄存器的相關(guān)寫(xiě)入來(lái)設(shè)置,但當(dāng)整流輸入數(shù)值為低時(shí)則不設(shè)置。

整流輸入值為低,或者發(fā)送了MSI,或者對(duì)in_clrip,clripnum寫(xiě)入時(shí)都會(huì)清除對(duì)應(yīng)的掛起位。

5.不活躍模式

對(duì)于中斷源的掛起位一直為低電平不會(huì)發(fā)生變化。

上述的寄存器皆是內(nèi)存映射寄存器,在REG_CTRL模塊中進(jìn)行賦值,整流輸入值 = (輸入線(xiàn)中斷的值) XOR (源是否反轉(zhuǎn))。當(dāng)源的觸發(fā)條件為下降沿觸發(fā)或者低電平觸發(fā)時(shí),該源被稱(chēng)為反轉(zhuǎn)源。

(三)DIRECT_CTRL模塊

本文采用二叉樹(shù)法實(shí)現(xiàn)優(yōu)先級(jí)比較的模塊priority_arb。按照從上到下的順序,中斷標(biāo)識(shí)從大到小排序,輸入中斷源的優(yōu)先級(jí)編號(hào)。中斷源的輸入數(shù)量最大為1023個(gè),因此一級(jí)采用512個(gè)比較器進(jìn)行兩兩比較,二級(jí)采用256個(gè)比較器,以此類(lèi)推一共分十級(jí)。第一級(jí)比較器的輸入前還會(huì)有一個(gè)0值比較器,與輸入的中斷源優(yōu)先級(jí)編號(hào)相比,如果相等輸出優(yōu)先級(jí)編號(hào)1,如果不同,輸出原優(yōu)先級(jí)編號(hào)。

比較器的上端輸入如果大于等于下端輸入,則比較器的輸出max_prio為下端輸入的優(yōu)先級(jí)編號(hào),flag輸出0;反之,如果上端輸入小于下端輸入,則比較器的max_prio為上端輸入的優(yōu)先級(jí)編號(hào),flag輸出為1。flag是用來(lái)最終確定最大優(yōu)先級(jí)的源在哪個(gè)端口輸入的。后續(xù)用每一級(jí)的flag最終確定中斷源ID。

如果寫(xiě)入的 IPRIO為0,則優(yōu)先級(jí)為1。優(yōu)先級(jí)號(hào)越小,優(yōu)先級(jí)越高。當(dāng)中斷源具有相同的優(yōu)先級(jí)時(shí),標(biāo)識(shí)號(hào)較低的源具有最高的優(yōu)先級(jí)。

排序完成后要將最大優(yōu)先級(jí)編號(hào)和中斷標(biāo)識(shí)回寫(xiě)給在REG_CTRL的IDC.topi寄存器,拉高irq,方便hart后續(xù)讀取IDC.claimi寄存器。當(dāng)Hart讀取完成后清除該源的中斷掛起位然后繼續(xù)排序,開(kāi)始新的一輪循環(huán)。

(四)MSI_CTRL模塊

模塊內(nèi),最重要的功能分為兩塊,分別為計(jì)算不同級(jí)中斷域的MSI地址和發(fā)送MSI兩個(gè)功能。

因?yàn)锳PLIC發(fā)送的MSI是發(fā)送給IMSIC的中斷文件的,因此地址的計(jì)算應(yīng)該滿(mǎn)足IMSIC的設(shè)計(jì)要求。由于S級(jí)的地址比M級(jí)域僅僅多出了Guest Idex的影響, M級(jí)的過(guò)程只需省略Guest Idex即可。

為滿(mǎn)足實(shí)際的應(yīng)用需求,默認(rèn)發(fā)送順序是根域先于其他M級(jí)域先于S域。對(duì)于M級(jí)域,計(jì)算完該域的地址后,需要按中斷標(biāo)識(shí)號(hào)最低源優(yōu)先發(fā)送MSI的規(guī)則,選擇出該源的MSI地址。

(五)DELEG_CTRL模塊

根域的M級(jí)REG_CTRL可以委托給子域,子域可以是M級(jí),也可以是S級(jí)的中斷域。非根域的M級(jí)域也可以委托給不同的S級(jí)域,但S級(jí)域不能繼續(xù)委托給S級(jí)域。

其中包含的譯碼模塊類(lèi)似于加了使能位的譯碼器。當(dāng)譯碼器選擇一個(gè)中斷域后,被選中的域才將對(duì)應(yīng)的輸入源實(shí)現(xiàn),否則將該域的該源設(shè)置為Inactive模式。

四、仿真結(jié)果

(一)MSI傳遞仿真

測(cè)試了地址計(jì)算的正確性及不同中斷域從APB接口將中斷發(fā)送的過(guò)程。

由于仿真中,將源1設(shè)置根域,源2,3在S域因此會(huì)先發(fā)送根域的中斷,圖2表示的是經(jīng)過(guò)計(jì)算后的發(fā)送地址。由發(fā)送結(jié)果可知,最終滿(mǎn)足APB的時(shí)序規(guī)范,也能正確地計(jì)算出MSI的地址。

圖2 MSI發(fā)送及地址計(jì)算

(二)直接傳遞仿真

驗(yàn)證了對(duì)掛起位的影響,優(yōu)先級(jí)排序是否正確,以及HART能否正確讀到最高優(yōu)先級(jí)的優(yōu)先級(jí)編號(hào)和中斷ID。

圖3表示將源2,3委托到S域,并且兩個(gè)源同時(shí)被外部中斷現(xiàn)拉高發(fā)給同一個(gè)HART 1,這時(shí)會(huì)根據(jù)優(yōu)先級(jí)仲裁,將優(yōu)先級(jí)標(biāo)識(shí)號(hào)小的中斷源先處理,然后清除該源的掛起位,之后再處理剩余的中斷源。這里源2的優(yōu)先級(jí)為2,源3的優(yōu)先級(jí)編號(hào)為3,因此拉高irq后優(yōu)先清除源2的掛起位。

圖3 拉高irq及掛起位后清除

在計(jì)算優(yōu)先級(jí)的同時(shí),會(huì)返回中斷的最大優(yōu)先級(jí)和中斷源ID用來(lái)賦值topi寄存器,方便HART快速獲取中斷的信息并進(jìn)入中斷處理程序。

結(jié)論

本文首次根據(jù)AIA規(guī)范,完整地設(shè)計(jì)了一款用于RISC-V處理器核的APLIC,可直接接收處理外部線(xiàn)中斷,也可將外部線(xiàn)中斷轉(zhuǎn)化成MSI,配合IMSIC讓系統(tǒng)能同時(shí)處理線(xiàn)中斷和MSI中斷。相比現(xiàn)在使用的PLIC增加了供軟件測(cè)試中斷延遲的寄存器,使APLIC的功能更加豐富;通過(guò)劃分中斷域,免去HART切換特權(quán)級(jí)的步驟,有效提高CPU處理中斷的速度;通過(guò)直接對(duì)寄存器寫(xiě)入,確定需要路由的目標(biāo)HART,降低了軟件的復(fù)雜度;配合HART的PMP提高系統(tǒng)穩(wěn)定性。設(shè)計(jì)符合AIA高級(jí)中斷架構(gòu)的要求。

參考文獻(xiàn):

[1] 倪光南. 聚焦開(kāi)源RISC-V 發(fā)展中國(guó)芯片產(chǎn)業(yè)[J]. 前瞻科技,2022,1(3):84-89.

[2] 任強(qiáng). 基于RISC--V 處理器的虛擬內(nèi)存管理的研究與實(shí)現(xiàn)[D]. 中國(guó)科學(xué)院大學(xué),2022.

[3] 徐可凡. 基于RISC-V 的中斷系統(tǒng)的研究與設(shè)計(jì)[D]. 西安電子科技大學(xué),2020.

[4] 馮建文. 基于RISC-V 架構(gòu)的中斷實(shí)驗(yàn)設(shè)計(jì)[J]. 實(shí)驗(yàn)室研究與探索,2022,41(12):34-38.

[5] 任宇浩, 喬?hào)|海. 基于FPGA 的PLIC 中斷控制器設(shè)計(jì)[C]// 四川省聲學(xué)學(xué)會(huì), 上海聲學(xué)學(xué)會(huì), 山東聲學(xué)學(xué)會(huì), 北京聲學(xué)學(xué)會(huì), 西安聲學(xué)學(xué)會(huì).2022’年中國(guó)西部聲學(xué)學(xué)術(shù)交流會(huì)論文集. 蘇州大學(xué)電子信息學(xué)院;,2022:4.

潮安县| 化德县| 左贡县| 松阳县| 大理市| 新丰县| 阳泉市| 安乡县| 深州市| 陇西县| 光山县| 察雅县| 视频| 谷城县| 新津县| 攀枝花市| 中超| 新乐市| 马公市| 时尚| 阳高县| 肃北| 长治县| 青龙| 黔江区| 内乡县| 沽源县| 双桥区| 长泰县| 达孜县| 顺平县| 绍兴县| 南涧| 阳高县| 蚌埠市| 吴旗县| 海门市| 三明市| 九江市| 淮阳县| 松阳县|