專利名稱:基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式CPU的協(xié)處理器擴(kuò)展機(jī)制,尤其是一種基于主從架構(gòu)的協(xié)處理 器高效執(zhí)行的裝置。
背景技術(shù):
在嵌入式領(lǐng)域中,協(xié)處理器多用來協(xié)助主處理器進(jìn)行對(duì)其無法執(zhí)行或執(zhí)行效率低 下的處理工作而研究開發(fā)使用的,以此加速程序的執(zhí)行。在使用協(xié)處理器加速主處理器中最主要的問題是解決主處理器與協(xié)處理器并行 執(zhí)行,最大程度的發(fā)揮主處理器和協(xié)處理器的性能。在現(xiàn)有的技術(shù)中,通常的實(shí)現(xiàn)協(xié)處理器的方法是在協(xié)處理器可以接受協(xié)處理器指 令后將協(xié)處理器指令在主處理器重排序緩存中創(chuàng)建表項(xiàng),并且當(dāng)協(xié)處理器指令在主處理器 中處于提交狀態(tài)后才將協(xié)處理器指令送入?yún)f(xié)處理器中執(zhí)行,當(dāng)協(xié)處理器指令在協(xié)處理器中 完成后才將主處理器重排序緩存中的協(xié)處理器指令更新為完成狀態(tài),然后在主處理器重排 序緩存中按序退休。這類傳統(tǒng)實(shí)現(xiàn)方法由于協(xié)處理器指令在協(xié)處理器中執(zhí)行可能需要許多個(gè)周期,所 以這條協(xié)處理器指令需要許多個(gè)周期才能夠在主處理器重排序緩存中退休。在這種情況下 該協(xié)處理器指令的其他后續(xù)指令可能早已經(jīng)執(zhí)行完成但是由于此協(xié)處理器指令無法退休 導(dǎo)致后續(xù)的指令也無法退休,極端的情況下會(huì)出現(xiàn)指令塞滿主處理器重排序緩存但是卻沒 有指令退休的狀況,造成主處理器流水線中出現(xiàn)很大的空洞,影響主處理器和協(xié)處理器的 整體性能,極大的限制了流水線的優(yōu)勢(shì)。
發(fā)明內(nèi)容
為了克服已有的嵌入式處理器的協(xié)處理器執(zhí)行裝置的存在流水線空洞、影響主處 理器和協(xié)處理器性能的不足,本發(fā)明提供一種減少流水線空洞、提升主處理器和協(xié)處理器 性能的基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置。本發(fā)明解決其技術(shù)問題所采用的技術(shù)方案是一種基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置,包括主處理器和協(xié)處理器,所述 主處理器包括流水線寄存器,用于儲(chǔ)存譯碼后的主處理器指令和協(xié)處理器指令;主處理 器執(zhí)行單元,用以主動(dòng)運(yùn)行主處理器指令;重排序緩存單元,用于對(duì)主處理器指令和協(xié)處理 器指令創(chuàng)建表項(xiàng);所述協(xié)處理器包括協(xié)處理器指令緩沖區(qū),用于緩存協(xié)處理器指令;協(xié)處 理器執(zhí)行單元,用于接受協(xié)處理器指令緩沖區(qū)提供的協(xié)處理器指令,完成指令運(yùn)行并返回 結(jié)果;協(xié)處理器指令在所述重排序緩存單元中創(chuàng)建表項(xiàng)時(shí),直接將其標(biāo)記為已完成運(yùn)行 狀態(tài),此時(shí),協(xié)處理器指令被發(fā)送至協(xié)處理器指令緩沖區(qū),在協(xié)處理器指令緩沖區(qū)中臨時(shí)等 待,由協(xié)處理器指令緩沖區(qū)實(shí)時(shí)監(jiān)控主處理器重排序緩存單元中的該協(xié)處理器指令是否在 主處理器中進(jìn)入提交狀態(tài),當(dāng)且僅當(dāng)協(xié)處理器指令被主處理器提交時(shí),協(xié)處理器指令從協(xié)
3處理器指令緩沖區(qū)發(fā)射至協(xié)處理器執(zhí)行單元;主處理器指令在重排序緩存中創(chuàng)建表項(xiàng)時(shí)標(biāo)記為未完成運(yùn)行狀態(tài),需等到對(duì)應(yīng)指 令在主處理器執(zhí)行單元中完成運(yùn)行后才將其標(biāo)記為已完成狀態(tài)。作為優(yōu)選的一種方案主處理器指令和協(xié)處理器指令在重排序緩存單元中創(chuàng)建相 應(yīng)的表項(xiàng)后,主處理器指令在主處理器執(zhí)行單元中執(zhí)行,協(xié)處理器指令在協(xié)處理器執(zhí)行單 元中執(zhí)行,兩者并行執(zhí)行。進(jìn)一步,主處理器指令與協(xié)處理器指令在重排序緩存中創(chuàng)建表項(xiàng)時(shí)按序創(chuàng)建,退 休時(shí)按序退休。
再進(jìn)一步,所述提交狀態(tài)是指所述協(xié)處理器指令已經(jīng)成為主處理器中最長歷史的 指令,并已經(jīng)被確認(rèn)進(jìn)入等待退休的狀態(tài)。更進(jìn)一步,協(xié)處理器指令緩沖區(qū)中緩存的協(xié)處理器指令分為已提交指令和未提交 指令,所述已提交的協(xié)處理器指令被送入?yún)f(xié)處理器執(zhí)行單元執(zhí)行,未提交的協(xié)處理器指令 將在緩沖區(qū)中等待主處理器對(duì)其進(jìn)行提交狀態(tài)確認(rèn)。本發(fā)明的有益效果主要表現(xiàn)在(1)、使得協(xié)處理器指令和協(xié)處理器指令后的主處 理器指令能夠盡可能早的送入?yún)f(xié)處理器執(zhí)行單元和主處理器執(zhí)行單元中執(zhí)行并在主處理 器重排序緩存中退休,減少流水線的空洞,提高處理器的整體性能。(2)、本發(fā)明硬件開銷 小,實(shí)現(xiàn)簡單。僅需要增加一個(gè)協(xié)處理器指令緩沖區(qū)和少量的控制邏輯。
圖1是一種基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置的結(jié)構(gòu)示意圖。圖2是主處理器重排序緩存及其表項(xiàng)內(nèi)容的結(jié)構(gòu)示意圖。圖3是主處理器重排序緩存創(chuàng)建表項(xiàng)時(shí)的表項(xiàng)狀態(tài)示意圖。圖4是主處理器重排序緩存表項(xiàng)退休的結(jié)構(gòu)示意圖。圖5是協(xié)處理器指令緩沖區(qū)及其表項(xiàng)內(nèi)容的結(jié)構(gòu)示意圖。圖6是協(xié)處理器指令緩沖區(qū)中已提交指令與未提交指令的表項(xiàng)狀態(tài)示意圖。圖7是協(xié)處理器指令緩沖區(qū)更新指令提交狀態(tài)的結(jié)構(gòu)示意圖。圖8是協(xié)處理器指令緩沖區(qū)表項(xiàng)退休的結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。參照?qǐng)D1 圖8,一種基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置,包括主處理器10 和協(xié)處理器20,所述主處理器10包括流水線寄存器30,用于儲(chǔ)存譯碼后的主處理器指令 和協(xié)處理器指令;主處理器執(zhí)行單元50,用以主動(dòng)運(yùn)行主處理器指令;重排序緩存單元40, 用于對(duì)主處理器指令和協(xié)處理器指令創(chuàng)建表項(xiàng);所述協(xié)處理器20包括協(xié)處理器指令緩沖 區(qū)60,用于緩存協(xié)處理器指令;協(xié)處理器執(zhí)行單元70,用于接受協(xié)處理器指令緩沖區(qū)提供 的協(xié)處理器指令,完成指令運(yùn)行并返回結(jié)果;協(xié)處理器指令在所述重排序緩存單元中創(chuàng)建表項(xiàng)時(shí),直接將其標(biāo)記為已完成運(yùn)行 狀態(tài),此時(shí),協(xié)處理器指令被發(fā)送至協(xié)處理器指令緩沖區(qū),在協(xié)處理器指令緩沖區(qū)中臨時(shí)等 待,由協(xié)處理器指令緩沖區(qū)實(shí)時(shí)監(jiān)控主處理器重排序緩存單元中的該協(xié)處理器指令是否在主處理器中進(jìn)入提交狀態(tài),當(dāng)且僅當(dāng)協(xié)處理器指令被主處理器提交時(shí),協(xié)處理器指令從協(xié) 處理器指令緩沖區(qū)發(fā)射至協(xié)處理器執(zhí)行單元;主處理器指令在重排序緩存中創(chuàng)建表項(xiàng)時(shí)標(biāo)記為未完成運(yùn)行狀態(tài),需等到對(duì)應(yīng)指 令在主處理器執(zhí)行單元中完成運(yùn)行后才將其標(biāo)記為已完成狀態(tài)。本實(shí)施例中,包括主處理器10,協(xié)處理器20,流水線寄存器30,主處理器重排序緩 存40,主處理器執(zhí)行單元50,協(xié)處理器指令緩沖區(qū)60,協(xié)處理器執(zhí)行單元70。其中主處理 器10采取5級(jí)經(jīng)典流水線,其處理主處理器指令,并發(fā)射協(xié)處理器指令給協(xié)處理器。協(xié)處 理器20處理協(xié)處理器指令。流水線寄存器30儲(chǔ)存譯碼后的有關(guān)主處理器指令和協(xié)處理器 指令的信息。主處理器重排序緩存40儲(chǔ)存主處理器指令和協(xié)處理器指令的提交,完成,退 休等信息。主處理器執(zhí)行單元50執(zhí)行主處理器的指令。協(xié)處理器指令緩沖區(qū)60儲(chǔ)存和管 理協(xié)處理器指令。協(xié)處理器執(zhí)行單元70執(zhí)行協(xié)處理器指令。以下介紹本發(fā)明實(shí)施例的運(yùn)行過程。在介紹具體的實(shí)施例之前,先對(duì)提交,完成,退休這幾個(gè)術(shù)語進(jìn)行說明。指令的提 交是指此指令已經(jīng)成為主處理器中歷史最長的指令且在后續(xù)運(yùn)行過程中將最先實(shí)施退休, 其位于主處理器重排序緩存的頂端。指令的完成是指此指令已執(zhí)行完成,獲得運(yùn)行結(jié)果。指 令的退休是指此指令更新處理器的狀態(tài)(如回寫寄存器堆等),并將指令從重排序緩存中 清除。高端嵌入式CPU目前采用亂序執(zhí)行,按序提交和按序退休的運(yùn)行機(jī)制。主處理器指令與協(xié)處理器指令通過主處理器10的取指、譯碼階段后送入流水線 寄存器30中儲(chǔ)存。當(dāng)主處理器執(zhí)行單元50可以接收主處理器指令時(shí),將主處理器指令送 入主處理器執(zhí)行單元50中;當(dāng)協(xié)處理器20可以接收協(xié)處理器指令時(shí),將協(xié)處理器指令送入 協(xié)處理器20中。在主處理器指令或協(xié)處理器指令被送往各自的目標(biāo)單元的同時(shí),主處理器 指令和協(xié)處理器指令都將在主處理器重排序緩存40中創(chuàng)建相應(yīng)的表項(xiàng)。當(dāng)主處理器指令 或協(xié)處理器指令在主處理器10中完成時(shí),則在主處理器重排序緩存40中按序退休。當(dāng)協(xié) 處理器20接收協(xié)處理器指令后將其送入?yún)f(xié)處理器指令緩沖區(qū)60中,如果協(xié)處理器指令緩 沖區(qū)60中的指令是已提交的,則將其送入?yún)f(xié)處理器執(zhí)行單元70中執(zhí)行,如果是未提交的, 則繼續(xù)在協(xié)處理器指令緩沖區(qū)60中等待提交。當(dāng)協(xié)處理器指令在協(xié)處理器20中完成時(shí), 則在協(xié)處理器指令緩沖區(qū)60中按序退休。主處理器重排序緩存是先進(jìn)先出的緩存隊(duì)列(First In First Out,F(xiàn)IFO),本實(shí) 施例將以4個(gè)表項(xiàng)的FIFO隊(duì)列為例進(jìn)行說明。表項(xiàng)的內(nèi)容包括表項(xiàng)的有效信息,指令的完 成信息,以及其它相關(guān)的指令信息,具體參考圖2。當(dāng)主處理器指令可以送入主處理器執(zhí)行 單元中或者協(xié)處理器指令可以送入?yún)f(xié)處理器中時(shí),主處理器指令或協(xié)處理器指令在重排序 緩存中創(chuàng)建表項(xiàng)。但協(xié)處理器指令在主處理器重排序緩存中創(chuàng)建表項(xiàng)時(shí),同時(shí)將其標(biāo)記為 已完成運(yùn)行狀態(tài)(complete位為1),而主處理器指令在主處理器重排序緩存中創(chuàng)建表項(xiàng)時(shí) 將其標(biāo)記為未完成運(yùn)行狀態(tài)(complete位為0),具體參考圖3。當(dāng)指令在重排序緩存中處 于最頂部時(shí),則表示此指令處于已提交的狀態(tài),并將此信息發(fā)送給協(xié)處理器,由協(xié)處理器指 令緩沖區(qū)判斷此已提交的指令是否是協(xié)處理器指令,并由此做出相應(yīng)的操作。當(dāng)主處理器 指令或協(xié)處理器指令處于重排序緩存中的頂部且已處于已完成運(yùn)行狀態(tài)(即complete位 為1)后,則將主處理器指令和協(xié)處理器指令按序退休,具體參考圖4,圖4中指令1-4在四 個(gè)周期中按序退休(假設(shè)在周期1時(shí)四條指令都已處于已完成運(yùn)行狀態(tài),并且指令1是最早在重排序緩存中創(chuàng)建表項(xiàng)的指令,指令4是最晚的)。主處理器指令在退休時(shí)既要將指令 從主處理器重排序緩存中清除,也要更新主處理器的狀態(tài)。而協(xié)處理器指令由于在主處理 器重排序緩存中創(chuàng)建時(shí)即已標(biāo)記為已完成狀態(tài)而沒有實(shí)際的指令執(zhí)行結(jié)果信息,所以當(dāng)其 在主處理器中退休時(shí)僅將指令從主處理器重排序緩存中清除,而并不更新主處理器和協(xié)處 理器的狀態(tài),只有當(dāng)協(xié)處理器指令在協(xié)處理器中退休時(shí)才更新協(xié)處理器的狀態(tài)。
協(xié)處理器指令緩沖區(qū)緩存主處理器發(fā)送給協(xié)處理器的協(xié)處理器指令,并將已提交 的指令發(fā)送給協(xié)處理器執(zhí)行單元執(zhí)行。它是一個(gè)有4個(gè)表項(xiàng)的FIFO,其表項(xiàng)的內(nèi)容包括表 項(xiàng)的有效信息,指令的完成信息,指令的提交信息,以及其它相關(guān)的指令信息,具體參考圖 5。當(dāng)協(xié)處理器指令緩沖區(qū)非滿時(shí),則其接收主處理器發(fā)送的協(xié)處理器指令,并在協(xié)處理器 指令緩沖區(qū)中創(chuàng)建表項(xiàng),將協(xié)處理器指令的相關(guān)信息放入創(chuàng)建的表項(xiàng)中。協(xié)處理器指令在 協(xié)處理器指令緩沖區(qū)中存在已提交(commit位為1)和未提交(commit位為0)的兩種狀 態(tài),具體可參考圖6。協(xié)處理器指令緩沖區(qū)需要實(shí)時(shí)監(jiān)測(cè)主處理器發(fā)送的指令提交信息,當(dāng) 檢測(cè)到協(xié)處理器指令緩沖區(qū)中表項(xiàng)所對(duì)應(yīng)的指令與重排序緩存中已提交的指令相同,則立 即更新相應(yīng)表項(xiàng)中的提交信息,具體參考圖7,在圖7中提交指針(COmmit_ptr)總是指向 協(xié)處理器指令緩沖區(qū)中歷史最長的未提交的指令,當(dāng)協(xié)處理器指令緩沖區(qū)在當(dāng)前周期檢測(cè) 到提交指針?biāo)赶虻奈刺峤坏闹噶钆c主處理器重排序緩存中的提交指令相同時(shí),則在下一 個(gè)周期更新此未提交指令的提交域,即將其狀態(tài)變成已提交,并在此同時(shí),提交指針加1指 向下一條未提交的指令。當(dāng)位于協(xié)處理器指令緩沖區(qū)頂部的指令已提交且協(xié)處理器執(zhí)行單 元可接收協(xié)處理器指令時(shí),則將其送入到協(xié)處理器執(zhí)行單元中執(zhí)行。當(dāng)協(xié)處理器指令已完 成并位于協(xié)處理器指令緩沖區(qū)的頂部時(shí),則將此協(xié)處理器指令在協(xié)處理器指令緩沖區(qū)中退 休,更新協(xié)處理器的狀態(tài),并將相應(yīng)的表項(xiàng)清除,具體參考圖8,在圖8中退休指針(retire Ptr)總是指向協(xié)處理器指令緩沖區(qū)中歷史最長的指令,在周期1協(xié)處理器指令緩沖區(qū)接受 到協(xié)處理器執(zhí)行單元的提交指令1的完成信息,則在周期2將已提交指令的complete位置 為1,表示此指令已完成,于是在周期3將已提交指令1的結(jié)果回寫到協(xié)處理器的寄存器堆 中(即為更新協(xié)處理器的狀態(tài)),同時(shí)將其相應(yīng)的表項(xiàng)內(nèi)容清空,然后將退休指針指向下一 提交指令?;谏鲜鲋魈幚砥髦嘏判蚓彺婧蛥f(xié)處理器指令緩沖區(qū)的設(shè)計(jì),由于協(xié)處理器指令 在主處理器中直接標(biāo)記為已完成狀態(tài),使得其在主處理器重排序緩存中可以盡可能早的退 休。因此在此協(xié)處理器指令后的其他已完成的主處理器指令也可以實(shí)現(xiàn)快速退休,該執(zhí)行 裝置使得協(xié)處理器指令的運(yùn)行過程不影響后續(xù)主處理器指令的執(zhí)行,極大的提高了處理器 的流水線并行性。這種運(yùn)行機(jī)制特別是在協(xié)處理器指令需要多個(gè)周期才能完成的情況對(duì)處 理器性能的提升效果尤為明顯。由于主處理器不再負(fù)責(zé)協(xié)處理器指令的結(jié)果回寫,協(xié)處理 器將獨(dú)立負(fù)責(zé)協(xié)處理器指令的結(jié)果回寫與在協(xié)處理器中的退休,由此保證了整個(gè)指令流的 正確性。
權(quán)利要求
一種基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置,包括主處理器和協(xié)處理器,所述主處理器包括流水線寄存器,用于儲(chǔ)存譯碼后的主處理器指令和協(xié)處理器指令;主處理器執(zhí)行單元,用以主動(dòng)運(yùn)行主處理器指令;重排序緩存單元,用于對(duì)主處理器指令和協(xié)處理器指令創(chuàng)建表項(xiàng);所述協(xié)處理器包括協(xié)處理器指令緩沖區(qū),用于緩存協(xié)處理器指令;協(xié)處理器執(zhí)行單元,用于接受協(xié)處理器指令緩沖區(qū)提供的協(xié)處理器指令,完成指令運(yùn)行并返回結(jié)果;其特征在于協(xié)處理器指令在所述重排序緩存單元中創(chuàng)建表項(xiàng)時(shí),直接將其標(biāo)記為已完成運(yùn)行狀態(tài),此時(shí),協(xié)處理器指令被發(fā)送至協(xié)處理器指令緩沖區(qū),在協(xié)處理器指令緩沖區(qū)中臨時(shí)等待,由協(xié)處理器指令緩沖區(qū)實(shí)時(shí)監(jiān)控主處理器重排序緩存單元中的該協(xié)處理器指令是否在主處理器中進(jìn)入提交狀態(tài),當(dāng)且僅當(dāng)協(xié)處理器指令被主處理器提交時(shí),協(xié)處理器指令從協(xié)處理器指令緩沖區(qū)發(fā)射至協(xié)處理器執(zhí)行單元;主處理器指令在重排序緩存中創(chuàng)建表項(xiàng)時(shí)標(biāo)記為未完成運(yùn)行狀態(tài),需等到對(duì)應(yīng)指令在主處理器執(zhí)行單元中完成運(yùn)行后才將其標(biāo)記為已完成狀態(tài)。
2.如權(quán)利要求書1所述的基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置,其特征在于主 處理器指令和協(xié)處理器指令在重排序緩存單元中創(chuàng)建相應(yīng)的表項(xiàng)后,主處理器指令在主處 理器執(zhí)行單元中執(zhí)行,協(xié)處理器指令在協(xié)處理器執(zhí)行單元中執(zhí)行,兩者并行執(zhí)行。
3.如權(quán)利要求書1或2所述的基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置,其特征在于 主處理器指令與協(xié)處理器指令在重排序緩存中創(chuàng)建表項(xiàng)時(shí)按序創(chuàng)建,退休時(shí)按序退休。
4.如權(quán)利要求書1或2所述的基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置,其特征在于 所述提交狀態(tài)是指所述協(xié)處理器指令已經(jīng)成為主處理器中最長歷史的指令,并已經(jīng)被確認(rèn) 進(jìn)入等待退休的狀態(tài)。
5.如權(quán)利要求書1或2所述的基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置,其特征在于 協(xié)處理器指令緩沖區(qū)中緩存的協(xié)處理器指令分為已提交指令和未提交指令,所述已提交的 協(xié)處理器指令被送入?yún)f(xié)處理器執(zhí)行單元執(zhí)行,未提交的協(xié)處理器指令將在緩沖區(qū)中等待主 處理器對(duì)其進(jìn)行提交狀態(tài)確認(rèn)。
全文摘要
一種基于主從架構(gòu)的協(xié)處理器高效執(zhí)行的裝置,包括主處理器和協(xié)處理器,協(xié)處理器指令在主處理器的重排序緩存單元中創(chuàng)建表項(xiàng)時(shí),直接將其標(biāo)記為已完成運(yùn)行狀態(tài),此時(shí),協(xié)處理器指令被發(fā)送至協(xié)處理器指令緩沖區(qū),在協(xié)處理器指令緩沖區(qū)中臨時(shí)等待,由協(xié)處理器指令緩沖區(qū)實(shí)時(shí)監(jiān)控主處理器重排序緩存單元中的該協(xié)處理器指令是否在主處理器中進(jìn)入提交狀態(tài),當(dāng)且僅當(dāng)協(xié)處理器指令被主處理器提交時(shí),協(xié)處理器指令從協(xié)處理器指令緩沖區(qū)發(fā)射至協(xié)處理器執(zhí)行單元;主處理器指令在重排序緩存中創(chuàng)建表項(xiàng)時(shí)標(biāo)記為未完成運(yùn)行狀態(tài),需等到對(duì)應(yīng)指令在主處理器執(zhí)行單元中完成運(yùn)行后才將其標(biāo)記為已完成狀態(tài)。本發(fā)明減少流水線空洞、提升主處理和和協(xié)處理器性能。
文檔編號(hào)G06F9/38GK101872336SQ20101018615
公開日2010年10月27日 申請(qǐng)日期2010年5月31日 優(yōu)先權(quán)日2010年5月31日
發(fā)明者嚴(yán)曉浪, 孟建熠, 王榮華, 葛海通 申請(qǐng)人:浙江大學(xué)