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