一種提高store指令執(zhí)行效率的流水線結(jié)構(gòu)及方法
【專利摘要】本發(fā)明公開(kāi)了一種提高store指令執(zhí)行效率的流水線結(jié)構(gòu)及方法,該流水線結(jié)構(gòu)由譯碼模塊、執(zhí)行模塊、訪存模塊、提交模塊及四端口寄存器文件組成,其中各模塊通過(guò)流水級(jí)間寄存器依次相連接,所有的流水級(jí)間寄存器有統(tǒng)一的使能信號(hào),使能信號(hào)控制流水線的阻塞和推進(jìn),其中譯碼模塊可以在單周期內(nèi)同時(shí)請(qǐng)求store指令執(zhí)行所需的三個(gè)操作數(shù),提高了store指令讀取操作數(shù)的并行性,最終使雙周期store指令作為單周期指令執(zhí)行,將store指令的執(zhí)行效率提高了一倍。該流水線結(jié)構(gòu)控制簡(jiǎn)單可靠、適用于標(biāo)量和超標(biāo)量處理器的設(shè)計(jì),可以顯著提高處理器性能。
【專利說(shuō)明】一種提高store指令執(zhí)行效率的流水線結(jié)構(gòu)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于微處理器流水線結(jié)構(gòu)【技術(shù)領(lǐng)域】,涉及一種提高store類(lèi)指令執(zhí)行效率的流水線結(jié)構(gòu)及方法。
【背景技術(shù)】
[0002]store指令是指對(duì)數(shù)據(jù)執(zhí)行寫(xiě)操作的一類(lèi)指令。基于RISC架構(gòu)的處理器僅能通過(guò)store指令將數(shù)據(jù)輸出到存儲(chǔ)器,即通過(guò)store指令將指令指定的數(shù)據(jù)寫(xiě)入到指令指定的存儲(chǔ)器單元,其執(zhí)行主要分為兩個(gè)階段:一、計(jì)算存儲(chǔ)器單元地址;二、取出執(zhí)行寫(xiě)操作的操作數(shù),并將其寫(xiě)入到第一步計(jì)算得出的存儲(chǔ)器單元中。ARM、PowerPC, SPARC等典型的RISC架構(gòu)均支持store指令的寄存器尋址,即計(jì)算存儲(chǔ)器地址的兩個(gè)操作數(shù)和被寫(xiě)的操作數(shù)均保存在寄存器文件內(nèi)。
[0003]據(jù)文獻(xiàn)“UT699Micro-Processor Functional Manual ”、“Rad_Hard32bit SPARCVSPr0cess0r: AT697E”及“龍芯2號(hào)處理器設(shè)計(jì)和性能分析”可知,在標(biāo)量和超標(biāo)量處理器中僅為訪存操作(load/store)流水線分配兩讀一寫(xiě)三個(gè)寄存器文件端口,這種機(jī)制導(dǎo)致store類(lèi)指令執(zhí)行所需的三個(gè)操作數(shù)無(wú)法在一個(gè)時(shí)鐘周期內(nèi)完成,因此,store (寫(xiě)單字)指令都被作為雙周期指令處理,即store指令的執(zhí)行時(shí)間開(kāi)銷(xiāo)相當(dāng)于兩條單周期指令。具體如圖1所示,流水級(jí)的上標(biāo)表示第幾條指令,下標(biāo)表示該流水級(jí)的第幾個(gè)周期,無(wú)下標(biāo)的則代表單周期指令,圖1的時(shí)空?qǐng)D給出了 store單字指令在一個(gè)七級(jí)流水線處理器中的執(zhí)行情況,一條雙周期的store指令被當(dāng)作兩條單周期指令來(lái)處理,其中e級(jí)的00周期用于計(jì)算訪存地址,01周期用于取出待存儲(chǔ)的字。
[0004]上述文獻(xiàn)中store類(lèi)指令的多周期實(shí)現(xiàn)方式使store類(lèi)指令的執(zhí)行兼容其它的單周期指令,保證其它流水線結(jié)構(gòu)的完整復(fù)用性;但其控制復(fù)雜,需要設(shè)計(jì)狀態(tài)機(jī)嚴(yán)格控制其執(zhí)行狀態(tài),并且會(huì)處理器的指令并行度,嚴(yán)重影響處理器性能。
【發(fā)明內(nèi)容】
[0005]本發(fā)明解決的問(wèn)題在于提供一種提高store指令執(zhí)行效率的流水線結(jié)構(gòu)及方法,通過(guò)對(duì)指令譯碼邏輯和寄存器文件的優(yōu)化,提高store指令讀取操作數(shù)的并行性,將store指令作為單周期指令執(zhí)行,使其執(zhí)行效率提高了 一倍。
[0006]本發(fā)明是通過(guò)以下技術(shù)方案來(lái)實(shí)現(xiàn):
[0007]—種提高store指令執(zhí)行效率的流水線結(jié)構(gòu),包括通過(guò)流水級(jí)間寄存器依次相連接的譯碼模塊、執(zhí)行模塊、訪存模塊和提交模塊,提交模塊、譯碼模塊還分別與四端口寄存器文件相連接,提交模塊向四端口寄存器文件寫(xiě)入操作數(shù),譯碼模塊向四端口寄存器文件同時(shí)請(qǐng)求store指令所需的三個(gè)操作數(shù);
[0008]所述的譯碼模塊與四端口寄存器文件之間設(shè)有三套請(qǐng)求/返回操作數(shù)的數(shù)據(jù)線,每套請(qǐng)求/返回操作數(shù)的數(shù)據(jù)線進(jìn)行一個(gè)操作數(shù)的傳輸;譯碼模塊中還設(shè)有三套相同的相關(guān)判斷邏輯,分別對(duì)三個(gè)操作數(shù)進(jìn)行相關(guān)性判斷;[0009]所述的四端口寄存器文件包括一個(gè)與提交模塊相連接的寫(xiě)端口和與譯碼模塊相連接的三個(gè)讀端口,寫(xiě)端口中的寫(xiě)地址、寫(xiě)使能分別與寫(xiě)地址譯碼模塊相連接,寫(xiě)端口中的寫(xiě)數(shù)據(jù)與寄存器陣列相連接;寄存器陣列與數(shù)據(jù)選擇模塊相連接,數(shù)據(jù)選擇模塊還通過(guò)讀地址譯碼模塊分別與三個(gè)讀端口相連接,數(shù)據(jù)選擇模塊根據(jù)讀端口發(fā)出的讀控制信號(hào)讀取寄存器陣列中的操作數(shù)。
[0010]所有的流水級(jí)間寄存器設(shè)有統(tǒng)一的使能信號(hào),使能信號(hào)控制流水線的阻塞和推進(jìn);st0re類(lèi)指令在進(jìn)入該流水線結(jié)構(gòu)后經(jīng)過(guò)四級(jí)執(zhí)行完畢。
[0011]所述的譯碼模塊分別接收來(lái)自提交模塊、訪存模塊和執(zhí)行模塊的執(zhí)行信息,執(zhí)行信息包括各模塊中的指令執(zhí)行狀態(tài)及執(zhí)行結(jié)果;譯碼模塊收到執(zhí)行信息后利用相關(guān)判斷邏輯進(jìn)行計(jì)算地址所需的兩個(gè)操作數(shù)與待寫(xiě)操作數(shù)是否相關(guān)的判斷;若相關(guān)則通過(guò)旁路進(jìn)行執(zhí)行結(jié)果的傳輸,若不相關(guān)則同時(shí)向四端口寄存器文件請(qǐng)求數(shù)據(jù),四端口寄存器文件將所請(qǐng)求的操作數(shù)通過(guò)寄存器文件讀數(shù)據(jù)總線單向傳遞給譯碼模塊。
[0012]所述的四端口寄存器文件中,當(dāng)提交模塊發(fā)出的寫(xiě)控制信號(hào)中的寫(xiě)使能有效時(shí),寫(xiě)地址譯碼模塊產(chǎn)生與寫(xiě)地址對(duì)應(yīng)的寄存器的寫(xiě)使能,寫(xiě)地址譯碼模塊將產(chǎn)生的寫(xiě)實(shí)能連接至寄存器陣列中對(duì)應(yīng)的寄存器,進(jìn)行寫(xiě)操作,將寫(xiě)控制信號(hào)中的32位寫(xiě)數(shù)據(jù)寫(xiě)入寄存器陣列;
[0013]當(dāng)譯碼模塊發(fā)出的讀控制信號(hào)的讀使能有效時(shí),讀地址譯碼模塊產(chǎn)生與讀地址對(duì)應(yīng)的寄存器的讀使能,連接至數(shù)據(jù)選擇模塊,數(shù)據(jù)選擇模塊選擇對(duì)應(yīng)的數(shù)據(jù)驅(qū)動(dòng)32位讀數(shù)據(jù)總線,將操作數(shù)發(fā)送給譯碼模塊。
[0014]一種提高store指令執(zhí)行效率的流水線控制方法,包括以下操作:
[0015]Stepl:將來(lái)自指令分發(fā)單元或取指模塊的指令送入譯碼模塊進(jìn)行譯碼;
[0016]Step2:譯碼模塊對(duì)指令類(lèi)型進(jìn)行甄別,如果當(dāng)前指令為store類(lèi)指令,譯碼模塊根據(jù)其接收來(lái)自提交模塊、訪存模塊和執(zhí)行模塊的執(zhí)行信息,利用相關(guān)判斷邏輯進(jìn)行計(jì)算地址所需的兩個(gè)操作數(shù)與待寫(xiě)操作數(shù)是否相關(guān)的判斷;
[0017]若相關(guān)則通過(guò)旁路進(jìn)行執(zhí)行結(jié)果的傳輸,若不相關(guān)則根據(jù)store類(lèi)指令的編碼格式,同時(shí)向四端口寄存器文件請(qǐng)求三個(gè)操作數(shù),其中兩個(gè)操作數(shù)用于計(jì)算寫(xiě)地址,一個(gè)操作數(shù)為待寫(xiě)的數(shù)據(jù);四端口寄存器文件則將提交模塊寫(xiě)入的與store類(lèi)指令相對(duì)應(yīng)的操作數(shù)通過(guò)寄存器文件讀數(shù)據(jù)總線返回給譯碼模塊,譯碼模塊將獲取的操作數(shù)通過(guò)流水級(jí)間寄存器傳遞給執(zhí)行模塊;
[0018]如果當(dāng)前指令為非store類(lèi)指令,則保持原有譯碼邏輯不變;
[0019]Step3:執(zhí)行模塊根據(jù)用于計(jì)算寫(xiě)地址的操作數(shù)計(jì)算訪存操作的地址,并將訪存操作的地址和待寫(xiě)的數(shù)據(jù)繼續(xù)通過(guò)流水級(jí)間寄存器向訪存模塊傳遞;
[0020]Step4:訪存模塊首先檢查訪存操作的地址是否對(duì)齊,如果地址對(duì)齊,則發(fā)起寫(xiě)存儲(chǔ)器的操作;如果地址不對(duì)齊則放棄訪存,置異常標(biāo)志位有效并通過(guò)流水級(jí)間寄存器向提交模塊傳遞;
[0021]St印5:提交模塊檢查異常標(biāo)志位,若收到異常標(biāo)志位有效,則進(jìn)行異常處理;或者提交模塊將異常信息提交到重排序單元進(jìn)行相關(guān)的異常處理;否則不進(jìn)行任何操作。
[0022]所述若store指令所需要的三個(gè)操作數(shù)的讀地址與所接收的執(zhí)行信息所包含的寫(xiě)地址一致時(shí),則為相關(guān),通過(guò)旁路將所標(biāo)注的執(zhí)行結(jié)果分別傳遞給信號(hào)rsl、rs2和rd ;否則為不相關(guān),則通過(guò)寄存器文件讀控制信號(hào)向四端口寄存器文件請(qǐng)求數(shù)據(jù),四端口寄存器文件的輸出通過(guò)寄存器文件讀數(shù)據(jù)總線單向傳遞給譯碼模塊。
[0023]所述當(dāng)提交模塊發(fā)出的寫(xiě)控制信號(hào)中的寫(xiě)使能有效時(shí),寫(xiě)地址譯碼模塊產(chǎn)生與寫(xiě)地址對(duì)應(yīng)的寄存器的寫(xiě)使能,寫(xiě)地址譯碼模塊將產(chǎn)生的寫(xiě)實(shí)能連接至寄存器陣列中對(duì)應(yīng)的寄存器,進(jìn)行寫(xiě)操作,將寫(xiě)控制信號(hào)中的32位寫(xiě)數(shù)據(jù)寫(xiě)入寄存器陣列;
[0024]當(dāng)讀控制信號(hào)的讀使能有效時(shí),讀地址譯碼模塊產(chǎn)生與讀地址對(duì)應(yīng)的寄存器的讀使能,連接至數(shù)據(jù)選擇模塊,數(shù)據(jù)選擇模塊選擇對(duì)應(yīng)的數(shù)據(jù)驅(qū)動(dòng)32位讀數(shù)據(jù)總線,將操作數(shù)發(fā)送給譯碼模塊。
[0025]與現(xiàn)有技術(shù)相比,本發(fā)明具有以下有益的技術(shù)效果:
[0026](I)本發(fā)明提出的一種提高store指令執(zhí)行效率的流水線結(jié)構(gòu),可單周期完成公知的雙周期store指令,提高了處理器的性能;適用于標(biāo)量和超標(biāo)量的store指令的執(zhí)行優(yōu)化。
[0027](2)本發(fā)明提出的流水線結(jié)構(gòu)適用于單發(fā)射和超標(biāo)量處理器的訪存流水線設(shè)計(jì),為自主可控高性能處理器的開(kāi)發(fā)提供了一種設(shè)計(jì)參考;
[0028](3)本發(fā)明采用寄存器陣列構(gòu)建三讀一寫(xiě)的四端口寄存器文件,方法簡(jiǎn)單,易于實(shí)現(xiàn),并且支持EDA工具自動(dòng)插入門(mén)控時(shí)鐘,可降低功耗;
[0029](4)譯碼模塊中額外使用的相關(guān)判斷電路,可以復(fù)用原有的相關(guān)判斷電路,無(wú)設(shè)計(jì)風(fēng)險(xiǎn),即通過(guò)極小的代價(jià)即可換取處理器性能的提升。
[0030]本發(fā)明提出的store流水線結(jié)構(gòu),保持load指令原有的執(zhí)行邏輯不變,優(yōu)化了store指令的執(zhí)行過(guò)程。在請(qǐng)求操作數(shù)的過(guò)程中,必須先對(duì)三個(gè)操作數(shù)分別進(jìn)行相關(guān)判斷,之后決定是否向寄存器堆請(qǐng)求數(shù)據(jù);三讀一寫(xiě)四端口的寄存器文件通過(guò)寄存器陣列進(jìn)行構(gòu)建,基于寄存器陣列的寄存器文件設(shè)計(jì)過(guò)程中,端口的增加不會(huì)帶來(lái)設(shè)計(jì)難度的提升。
[0031]本發(fā)明保持load指令原有的執(zhí)行邏輯不變,通過(guò)同時(shí)請(qǐng)求store指令所需的三個(gè)操作數(shù),將雙周期的store指令轉(zhuǎn)變?yōu)閱沃芷谥噶?,該方法可適用于優(yōu)化store類(lèi)指令的執(zhí)行,store類(lèi)指令指對(duì)數(shù)據(jù)執(zhí)行寫(xiě)操作的指令,具體如store單字、store半字、store字節(jié)、store多字及原子交換指令等。
【專利附圖】
【附圖說(shuō)明】
[0032]圖1為現(xiàn)有的store雙周期指令時(shí)空?qǐng)D;
[0033]圖2為本發(fā)明的訪存流水線結(jié)構(gòu);
[0034]圖3為寄存器文件存儲(chǔ)陣列的組成和基本單元示意圖;
[0035]圖4為四端口寄存器文件的邏輯原理圖。
【具體實(shí)施方式】
[0036]下面結(jié)合附圖對(duì)本發(fā)明專利做進(jìn)一步詳細(xì)描述,所述是對(duì)本發(fā)明的解釋而不是限定。
[0037]在SPARC V8兼容型處理器中采用了本發(fā)明提出的提高store指令執(zhí)行效率的流水線結(jié)構(gòu),其訪存流水線結(jié)構(gòu)如圖2所示,該流水結(jié)構(gòu)由譯碼模塊、執(zhí)行模塊、訪存模塊、提交模塊及四端口寄存器文件組成,其中各模塊通過(guò)流水級(jí)間寄存器依次相連接,所有的流水級(jí)間寄存器有統(tǒng)一的使能信號(hào)hold,使能信號(hào)hold決定流水線的阻塞和推進(jìn);重排序單元不屬于本流水結(jié)構(gòu),為了結(jié)構(gòu)的完整性,圖中以虛線給出。
[0038]所述的譯碼模塊用以同時(shí)請(qǐng)求store指令所需的三個(gè)操作數(shù),其接收來(lái)自提交模塊、訪存模塊和執(zhí)行模塊的執(zhí)行信息,執(zhí)行信息包括各模塊中的指令執(zhí)行狀態(tài)及執(zhí)行結(jié)果;譯碼模塊收到執(zhí)行信息后利用相關(guān)判斷邏輯進(jìn)行計(jì)算地址所需的兩個(gè)用于計(jì)算地址的操作數(shù)與待寫(xiě)操作數(shù)是否相關(guān)的判斷:
[0039]store指令所需要的三個(gè)操作數(shù)(兩個(gè)用于計(jì)算地址的操作數(shù)與待寫(xiě)操作數(shù))的讀地址與執(zhí)行信息112、111、110所包含的寫(xiě)地址一致時(shí),則為相關(guān);否則為不相關(guān)
[0040]具體的,當(dāng)輸入的指令為store類(lèi)型時(shí),根據(jù)執(zhí)行模塊、訪存模塊、提交模塊輸入的執(zhí)行信息112、111、110和store指令對(duì)應(yīng)計(jì)算地址所需的兩個(gè)操作數(shù)(分別包含于信號(hào)rsl, rs2中)和一個(gè)待寫(xiě)操作數(shù)(包含于信號(hào)rd中)進(jìn)行相關(guān)判斷,若相關(guān),則通過(guò)旁路將110、111、和112所標(biāo)注的執(zhí)行結(jié)果分別傳遞給信號(hào)rsl、rs2和rd;如若不相關(guān),則通過(guò)寄存器文件讀控制信號(hào)104、105和106向四端口寄存器文件請(qǐng)求數(shù)據(jù),四端口寄存器文件的輸出通過(guò)寄存器文件讀數(shù)據(jù)總線107、108和109單向傳遞給譯碼模塊。
[0041]譯碼功能完成后,將rsl、rs2、rd和其它控制信息oth向流水級(jí)間寄存器傳遞。
[0042]110、111、和112分別來(lái)自提交模塊、訪存模塊和執(zhí)行模塊,包括各模塊的指令執(zhí)行狀態(tài)及執(zhí)行結(jié)果,用于譯碼模塊的相關(guān)判斷。讀控制信號(hào)104、105和106分別為rsl、rs2和rd對(duì)應(yīng)的寄存器文件的讀使能和讀地址,其讀出的數(shù)據(jù)分別由數(shù)據(jù)總線107、108和109返回。
[0043]所述的執(zhí)行模塊,對(duì)來(lái)自譯碼模塊的rsl和rs2執(zhí)行加法運(yùn)算,得到寫(xiě)操作的地址addr,同時(shí)將addr、rd和其它控制信息oth向流水級(jí)間寄存器傳遞。
[0044]所述的訪存模塊,檢查addr是否符合對(duì)齊模式,如果地址對(duì)齊,則將rd寫(xiě)入到addr指定的存儲(chǔ)單元中;否則,放棄訪存,置異常標(biāo)志位有效并向流水級(jí)間寄存器傳遞。
[0045]所述的提交模塊,檢查異常標(biāo)志位,如果異常標(biāo)志位有效,則進(jìn)行異常處理,保存必要的處理器信息、指令PC等,否則不進(jìn)行任何操作。
[0046]所述的四端口寄存器文件,包括三個(gè)讀端口和一個(gè)寫(xiě)端口,其存儲(chǔ)陣列由寄存器構(gòu)成,陣列中的寄存器有各自的寫(xiě)使能,當(dāng)某寄存器寫(xiě)使能有效時(shí),數(shù)據(jù)在時(shí)鐘上升沿寫(xiě)入該寄存器,陣列中寄存器的輸出恒有效,陣列中的寄存器實(shí)行O?167的線性編址,寄存器陣列及組成單元如圖3所示。
[0047]寄存器文件的邏輯原理如圖4所示,包括寫(xiě)地址譯碼模塊、讀地址譯碼模塊、數(shù)據(jù)選擇模塊和寄存器陣列組成。
[0048]當(dāng)提交模塊發(fā)出的寫(xiě)控制信號(hào)103中的寫(xiě)使能有效時(shí),寫(xiě)地址譯碼模塊產(chǎn)生與寫(xiě)地址對(duì)應(yīng)的寄存器的寫(xiě)使能,寫(xiě)地址譯碼模塊將產(chǎn)生的寫(xiě)使能連接至寄存器陣列中對(duì)應(yīng)的寄存器,進(jìn)行寫(xiě)操作(將寫(xiě)控制信號(hào)103中的32位寫(xiě)數(shù)據(jù)datai寫(xiě)入寄存器陣列,寫(xiě)數(shù)據(jù)datai是由前級(jí)流水發(fā)送給提交模塊的);
[0049]當(dāng)讀控制信號(hào)104、105和106的讀使能有效時(shí),讀地址譯碼模塊產(chǎn)生與讀地址對(duì)應(yīng)的寄存器的讀使能,連接至數(shù)據(jù)選擇模塊,數(shù)據(jù)選擇模塊選擇對(duì)應(yīng)的數(shù)據(jù)驅(qū)動(dòng)32位讀數(shù)據(jù)總線107、108和109,將操作數(shù)發(fā)送給譯碼模塊。
[0050]一種提高store指令執(zhí)行效率的流水線控制方法,包括以下操作:[0051]Stepl:將來(lái)自指令分發(fā)單元或取指模塊的指令送入譯碼模塊進(jìn)行譯碼;
[0052]St印2:譯碼模塊對(duì)指令類(lèi)型進(jìn)行甄別,如果當(dāng)前指令為store類(lèi)指令,譯碼模塊根據(jù)其接收來(lái)自提交模塊、訪存模塊和執(zhí)行模塊的執(zhí)行信息,利用相關(guān)判斷邏輯進(jìn)行計(jì)算地址所需的兩個(gè)操作數(shù)與待寫(xiě)操作數(shù)是否相關(guān)的判斷;
[0053]若相關(guān)則通過(guò)旁路進(jìn)行執(zhí)行結(jié)果的傳輸,若不相關(guān)則根據(jù)store類(lèi)指令的編碼格式,同時(shí)向四端口寄存器文件請(qǐng)求三個(gè)操作數(shù),其中兩個(gè)操作數(shù)用于計(jì)算寫(xiě)地址,一個(gè)操作數(shù)為待寫(xiě)的數(shù)據(jù);四端口寄存器文件則將提交模塊寫(xiě)入的與store類(lèi)指令相對(duì)應(yīng)的操作數(shù)通過(guò)寄存器文件讀數(shù)據(jù)總線返回給譯碼模塊,譯碼模塊將獲取的操作數(shù)通過(guò)流水級(jí)間寄存器傳遞給執(zhí)行模塊;
[0054]如果當(dāng)前指令為非store類(lèi)指令,則保持原有譯碼邏輯不變;
[0055]Step3:執(zhí)行模塊根據(jù)用于計(jì)算寫(xiě)地址的操作數(shù)計(jì)算訪存操作的地址,并將訪存操作的地址和待寫(xiě)的數(shù)據(jù)繼續(xù)通過(guò)流水級(jí)間寄存器向訪存模塊傳遞;
[0056]Step4:訪存模塊首先檢查訪存操作的地址是否對(duì)齊,如果地址對(duì)齊,則發(fā)起寫(xiě)存儲(chǔ)器的操作;如果地址不對(duì)齊則放棄訪存,置異常標(biāo)志位有效并通過(guò)流水級(jí)間寄存器向提交模塊傳遞;
[0057]St印5:提交模塊檢查異常標(biāo)志位,若收到異常標(biāo)志位有效,則進(jìn)行異常處理;或者提交模塊將異常信息提交到重排序單元進(jìn)行相關(guān)的異常處理;否則不進(jìn)行任何操作。
[0058]所述若store指令所需要的三個(gè)操作數(shù)的讀地址與所接收的執(zhí)行信息所包含的寫(xiě)地址一致時(shí),則為相關(guān),通過(guò)旁路將所標(biāo)注的執(zhí)行結(jié)果分別傳遞給信號(hào)rsl、rs2和rd ;否則為不相關(guān),則通過(guò)寄存器文件讀控制信號(hào)向四端口寄存器文件請(qǐng)求數(shù)據(jù),四端口寄存器文件的輸出通過(guò)寄存器文件讀數(shù)據(jù)總線單向傳遞給譯碼模塊。
[0059]本發(fā)明提出的一種提高store指令執(zhí)行效率的流水線結(jié)構(gòu),可單周期完成公知的雙周期store指令,提高了處理器的性能;適用于標(biāo)量和超標(biāo)量的store指令的執(zhí)行優(yōu)化。
【權(quán)利要求】
1.一種提高Store指令執(zhí)行效率的流水線結(jié)構(gòu),其特征在于,包括通過(guò)流水級(jí)間寄存器依次相連接的譯碼模塊、執(zhí)行模塊、訪存模塊和提交模塊,提交模塊、譯碼模塊還分別與四端口寄存器文件相連接,提交模塊向四端口寄存器文件寫(xiě)入操作數(shù),譯碼模塊向四端口寄存器文件同時(shí)請(qǐng)求store指令所需的三個(gè)操作數(shù); 所述的譯碼模塊與四端口寄存器文件之間設(shè)有三套請(qǐng)求/返回操作數(shù)的數(shù)據(jù)線,每套請(qǐng)求/返回操作數(shù)的數(shù)據(jù)線進(jìn)行一個(gè)操作數(shù)的傳輸;譯碼模塊中還設(shè)有三套相同的相關(guān)判斷邏輯,分別對(duì)三個(gè)操作數(shù)進(jìn)行相關(guān)性判斷; 所述的四端口寄存器文件包括一個(gè)與提交模塊相連接的寫(xiě)端口和與譯碼模塊相連接的三個(gè)讀端口,寫(xiě)端口中的寫(xiě)地址、寫(xiě)使能分別與寫(xiě)地址譯碼模塊相連接,寫(xiě)端口中的寫(xiě)數(shù)據(jù)與寄存器陣列相連接;寄存器陣列與數(shù)據(jù)選擇模塊相連接,數(shù)據(jù)選擇模塊還通過(guò)讀地址譯碼模塊分別與三個(gè)讀端口相連接,數(shù)據(jù)選擇模塊根據(jù)讀端口發(fā)出的讀控制信號(hào)讀取寄存器陣列中的操作數(shù)。
2.如權(quán)利要求1所述的提高store指令執(zhí)行效率的流水線結(jié)構(gòu),其特征在于,所有的流水級(jí)間寄存器設(shè)有統(tǒng)一的使能信號(hào),使能信號(hào)控制流水線的阻塞和推進(jìn);st0re類(lèi)指令在進(jìn)入該流水線結(jié)構(gòu)后經(jīng)過(guò)四級(jí)執(zhí)行完畢。
3.如權(quán)利要求1所述的提高store指令執(zhí)行效率的流水線結(jié)構(gòu),其特征在于,所述的譯碼模塊分別接收來(lái)自提交模塊、訪存模塊和執(zhí)行模塊的執(zhí)行信息,執(zhí)行信息包括各模塊中的指令執(zhí)行狀態(tài)及執(zhí)行結(jié)果;譯碼模塊收到執(zhí)行信息后利用相關(guān)判斷邏輯進(jìn)行計(jì)算地址所需的兩個(gè)操作數(shù)與待寫(xiě)操作數(shù)是否相關(guān)的判斷;若相關(guān)則通過(guò)旁路進(jìn)行執(zhí)行結(jié)果的傳輸,若不相關(guān)則同時(shí)向四端口寄存器文件請(qǐng)求所需的三個(gè)操作數(shù),四端口寄存器文件將所請(qǐng)求的操作數(shù)通過(guò)寄存器文件讀數(shù)據(jù)總線單向傳遞給譯碼模塊。
4.如權(quán)利要求1所述的提高store指令執(zhí)行效率的流水線結(jié)構(gòu),其特征在于,所述的四端口寄存器文件中,當(dāng)提交模塊發(fā)出的寫(xiě)控制信號(hào)中的寫(xiě)使能有效時(shí),寫(xiě)地址譯碼模塊產(chǎn)生與寫(xiě)地址對(duì)應(yīng)的寄存器的寫(xiě)使能,寫(xiě)地址譯碼模塊將產(chǎn)生的寫(xiě)實(shí)能連接至寄存器陣列中對(duì)應(yīng)的寄存器,進(jìn)行寫(xiě)操作,將寫(xiě)控制信號(hào)中的32位寫(xiě)數(shù)據(jù)寫(xiě)入寄存器陣列; 當(dāng)譯碼模塊發(fā)出的讀控制信號(hào)的讀使能有效時(shí),讀地址譯碼模塊產(chǎn)生與讀地址對(duì)應(yīng)的寄存器的讀使能,連接至數(shù)據(jù)選擇模塊,數(shù)據(jù)選擇模塊選擇對(duì)應(yīng)的數(shù)據(jù)驅(qū)動(dòng)32位讀數(shù)據(jù)總線,將操作數(shù)發(fā)送給譯碼模塊。
5.一種提高store指令執(zhí)行效率的流水線控制方法,其特征在于,包括以下操作: Stepl:將來(lái)自指令分發(fā)單元或取指模塊的指令送入譯碼模塊進(jìn)行譯碼; Step2:譯碼模塊對(duì)指令類(lèi)型進(jìn)行甄別,如果當(dāng)前指令為store類(lèi)指令,譯碼模塊根據(jù)其接收來(lái)自提交模塊、訪存模塊和執(zhí)行模塊的執(zhí)行信息,利用相關(guān)判斷邏輯進(jìn)行計(jì)算地址所需的兩個(gè)操作數(shù)與待寫(xiě)操作數(shù)是否相關(guān)的判斷; 若相關(guān)則通過(guò)旁路進(jìn)行執(zhí)行結(jié)果的傳輸,若不相關(guān)則根據(jù)store類(lèi)指令的編碼格式,同時(shí)向四端口寄存器文件請(qǐng)求三個(gè)操作數(shù),其中兩個(gè)操作數(shù)用于計(jì)算寫(xiě)地址,一個(gè)操作數(shù)為待寫(xiě)的數(shù)據(jù);四端口寄存器文件則將提交模塊寫(xiě)入的與store類(lèi)指令相對(duì)應(yīng)的操作數(shù)通過(guò)寄存器文件讀數(shù)據(jù)總線返回給譯碼模塊,譯碼模塊將獲取的操作數(shù)通過(guò)流水級(jí)間寄存器傳遞給執(zhí)行模塊; 如果當(dāng)前指令為非store類(lèi)指令,則保持原有譯碼邏輯不變;Step3:執(zhí)行模塊根據(jù)用于計(jì)算寫(xiě)地址的操作數(shù)計(jì)算訪存操作的地址,并將訪存操作的地址和待寫(xiě)的數(shù)據(jù)繼續(xù)通過(guò)流水級(jí)間寄存器向訪存模塊傳遞; Step4:訪存模塊首先檢查訪存操作的地址是否對(duì)齊,如果地址對(duì)齊,則發(fā)起寫(xiě)存儲(chǔ)器的操作;如果地址不對(duì)齊則放棄訪存,置異常標(biāo)志位有效并通過(guò)流水級(jí)間寄存器向提交模塊傳遞; St印5:提交模塊檢查異常標(biāo)志位,若收到異常標(biāo)志位有效,則進(jìn)行異常處理;或者提交模塊將異常信息提交到重排序單元進(jìn)行相關(guān)的異常處理;否則不進(jìn)行任何操作。
6.如權(quán)利要求5所述的提高store指令執(zhí)行效率的流水線控制方法,其特征在于,若store指令所需要的三個(gè)操作數(shù)的讀地址與所接收的執(zhí)行信息所包含的寫(xiě)地址一致時(shí),則為相關(guān),通過(guò)旁路將所標(biāo)注的執(zhí)行結(jié)果分別傳遞給信號(hào)rsl、rs2和rd ;否則為不相關(guān),通過(guò)寄存器文件讀控制信號(hào)向四端口寄存器文件請(qǐng)求操作數(shù),四端口寄存器文件的輸出通過(guò)寄存器文件讀數(shù)據(jù)總線單向傳遞給譯碼模塊。
7.如權(quán)利要求5所述的提高store指令執(zhí)行效率的流水線控制方法,其特征在于,當(dāng)提交模塊發(fā)出的寫(xiě)控制信號(hào)中的寫(xiě)使能有效時(shí),寫(xiě)地址譯碼模塊產(chǎn)生與寫(xiě)地址對(duì)應(yīng)的寄存器的寫(xiě)使能,寫(xiě)地址譯碼模塊將產(chǎn)生的寫(xiě)實(shí)能連接至寄存器陣列中對(duì)應(yīng)的寄存器,進(jìn)行寫(xiě)操作,將寫(xiě)控制信號(hào)中的32位寫(xiě)數(shù)據(jù)寫(xiě)入寄存器陣列; 當(dāng)讀控制信號(hào)的讀使能有效時(shí),讀地址譯碼模塊產(chǎn)生與讀地址對(duì)應(yīng)的寄存器的讀使能,連接至數(shù)據(jù)選擇模塊,數(shù)據(jù)選擇模塊選擇對(duì)應(yīng)的數(shù)據(jù)驅(qū)動(dòng)32位讀數(shù)據(jù)總線,將操作數(shù)發(fā)送給譯碼模塊。
【文檔編號(hào)】G06F9/38GK103984530SQ201410206731
【公開(kāi)日】2014年8月13日 申請(qǐng)日期:2014年5月15日 優(yōu)先權(quán)日:2014年5月15日
【發(fā)明者】陳慶宇, 吳龍勝 申請(qǐng)人:中國(guó)航天科技集團(tuán)公司第九研究院第七七一研究所