專利名稱:一種處理器地址緩沖管理的實現(xiàn)裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及處理器設(shè)計領(lǐng)域,尤其涉及ー種處理器讀取數(shù)據(jù)(load)或保存數(shù)據(jù)(store)時地址緩存管理的實現(xiàn)裝置及方法。
背景技術(shù):
對于現(xiàn)有大部分處理器,其地址寄存器文件包含多個地址寄存器,基于算法需求,每個地址寄存器還需要一個地址増量寄存器,每次執(zhí)行l(wèi)oad/store指令后,地址寄存器自動增加或減小aa_inc。這里,aa_inc為地址增量寄存器的自增值或自減值。有了 aa_inc,這樣就可以連續(xù)地使用load和store指令,實現(xiàn)對不同地址數(shù)據(jù)的讀取和保存,而不需要再寫ー個地址運算指令。除此之外,在LTE等通信算法中還需要實現(xiàn)地址緩沖管理功能,即為可以設(shè)置一個地址寄存器的首、尾邊界值,地址在這個首、尾邊界值范圍內(nèi)自增或自減,當跨越邊界吋,自動跳回邊界內(nèi)。 針對實現(xiàn)地址緩沖管理功能而言,目前常見的解決方案的運算邏輯為給每個地址寄存器設(shè)置兩個邊界寄存器,ー個為首邊界寄存器,另ー個為尾邊界寄存器,并通過指令設(shè)置這兩個寄存器的值,當執(zhí)行ー個load或store指令吋,當前地址加上自增值與邊界進行比較,如果越界,則跳回。該運算邏輯對應的編碼分自增或自減兩種情況,如下所示(I)地址自增的情況下的編碼if(aa_inc> = 0&&aa+aa_inc>aa_end)aa = aa+aa_inc-(aa_end-aa_start+l);elseaa = aa+aa_inc。(2)地址自減的情況下的編碼if(aa_inc<0&&aa+aa_mc<aa_start)aa = aa+aa_inc+、aa_end_aa_start+l);elseaa = aa+aa_inc。其中,aa_inc為地址增量寄存器的自增值或自減值(地址自增的情況下aa_inc為地址増量寄存器的自增值,地址自減的情況下aa_inc為地址増量寄存器的自減值);aa_start為地址緩沖首邊界的值;aa_end為地址緩沖尾邊界的值;aa為當前地址寄存器的值;(aa_end-aa_start+l)為緩存器的緩存大小值。然而,上述目前解決方案的缺陷為該運算邏輯都是在處理器中完成的,也就是說,對于 aa+aa_inc>aa_end、aa+aa_inc<aa_start、aa+aa_inc+(aa_end_aa_start+l)和aa+aa_inc-(aa_end_aa_start+l)這四個運算來說,為了實現(xiàn)地址緩沖管理,需要在處理器的硬件實現(xiàn)上采用兩個加法器串聯(lián),再加上兩級ニ選ー數(shù)據(jù)選擇器(MUX)電路選擇輸出,如圖I中粗實線所示的四條關(guān)鍵路徑,可見對應處理器的邏輯電路是比較復雜的。具體的,圖I中, 表示加法器(執(zhí)行上述編碼的加法運算表示MUX,也可稱為判斷分支的選擇器(執(zhí)行上述編碼的if/else分支選擇運算),buffsize = aa_end-aa_start+l,圖I這種處理方式是采用兩個加法器串聯(lián)處理的方式,比如加法器11和加法器12串聯(lián),加法器11和加法器13串聯(lián);而且采用了ニ級MUX電路,如圖I所示的選擇器21 (選擇器22)與選擇器23構(gòu)成了ニ級MUX,也就是說最終實現(xiàn)選擇輸出需采用ニ級MUX電路。綜上所述,由于處理器的邏輯電路是串行處理(需兩個加法器串聯(lián)),為了最終實現(xiàn)選擇輸出(需兩級MUX電路選擇輸出),因此,邏輯運算復雜導致采用的處理器的邏輯電路復雜,勢必増加硬件成本,而且邏輯運算復雜還能導致拉低整個處理器的頻率、產(chǎn)生時序的問題,從而,為了實現(xiàn)地址緩沖管理,采用現(xiàn)有的處理器,既增加了硬件成本,又無法滿足處理器時序設(shè)計、高效節(jié)能的設(shè)計需求。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種處理器地址緩沖管理的實現(xiàn)裝置及方 法,既降低了處理器的硬件成本,又能滿足處理器時序設(shè)計、高效節(jié)能的設(shè)計需求。為達到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的一種處理器地址緩沖管理的實現(xiàn)裝置,該裝置包括匯編器和處理器;其中,所述匯編器,用于對地址自增值及邊界設(shè)置指令進行編碼時,運算得到中間值并將中間值封裝到地址自增值及邊界設(shè)置指令中;所述中間值為用于實現(xiàn)地址緩沖管理的地址自增或自減運算的數(shù)值;處理器,用于對地址自增值及邊界設(shè)置指令譯碼時獲得所述中間值;執(zhí)行l(wèi)oad或store指令時,根據(jù)中間值進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。其中,所述匯編器包括指令編碼單元和指令封裝単元;其中,所述指令編碼單元,用于在匯編器獲得地址自增值及邊界設(shè)置指令為
inc>, [aa_start, aa_end]的情況下,根據(jù)地址增量寄存器的自增值或自減值aa_inc、地址緩沖尾邊界的值aa_end和地址緩沖首邊界的值aa_start進行運算,運算得到第一中間值aa_wrap 和第二中間值 aa_test ;所述指令封裝單元,用于封裝包含所述aa_inc、所述aa_wrap和所述aa_test的所述地址自增值及邊界設(shè)置指令為ニ進制的指令機器碼。其中,所述處理器包括指令譯碼單元和自增或自減運算單元;其中,所述指令譯碼單元,用于對所述地址自增值及邊界設(shè)置指令譯碼時,從指令機器碼中取出所述aa_inc、所述aa_wrap和所述aa_test ;所述自增或自減運算單元,用于執(zhí)行l(wèi)oad或store指令時,根據(jù)aa_inc、aa_wrap和aa_test進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。其中,所述指令編碼單元,進ー步用于在aa_inc>0時為地址自增的情況下,aa_inc具體為地址增量寄存器的自增值;根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值aa_wrap和負I ニ11I、日」1 a已—testaa_wrap = aa_inc- (aa_end-aa_start+l) ;aa_test = aa_inc-aa_end_l ;或者,所述指令編碼單元,進ー步用于在aa_inc〈0時為地址自減的情況下,
aa_inc具體為地址增量寄存器的自減值;根據(jù)所述aa—inc、所述aa—end和所述aa—start運算得到第一中間值aa—wrap和弟 ニ 中丨、日」值 aa—test 具體為aa_wrap = aa—inc+(aa—end-aa—start+1) ;aa—test = aa—inc—aa—starto其中,所述自增或自減運算單元,進ー步用于獲得所述aa_wrap和所述aa_test情況下,通過判斷aa_inc和aa+aa_test值的符號位是否相等實現(xiàn)地址緩沖管理,相等時,aa=aa+aa_wrap ;不相等時,aa = aa+aa_inc ;其中,所述aa為當前地址寄存器的值。一種處理器地址緩沖管理的實現(xiàn)方法,該方法包括匯編器對地址自增值及邊界設(shè)置指令進行編碼時,運算得到中間值并將中間值封裝到地址自增值及邊界設(shè)置指令中;所述中間值為用于實現(xiàn)地址緩沖管理的地址自增或自減運算的數(shù)值;
處理器對地址自增值及邊界設(shè)置指令譯碼時獲得所述中間值;執(zhí)行l(wèi)oad或store指令時,根據(jù)中間值進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。其中,所述運算得到中間值具體包括在匯編器獲得地址自增值及邊界設(shè)置指令為 set aa, <aa_incン,[aa_start, aa_end]的情況卜,根據(jù) aa_inc、aa_end 和 aa_start 進行運算,運算得到第一中間值aa_wrap和第二中間值aa_test。其中,所述實現(xiàn)地址緩沖管理具體包括對所述地址自增值及邊界設(shè)置指令譯碼時獲得所述aa_inc、所述aa_wrap和所述aa_test情況下,執(zhí)行l(wèi)oad或store指令時,根據(jù)所述aa_inc、aa_wrap和aa_test進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。其中,在aa_inc>0時為地址自增的情況下,aa_inc具體為地址增量寄存器的自增值;根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值aa_wrap和負I ニ11I、日」1 a已—testaa_wrap = aa_inc- (aa_end-aa_start+l) ;aa_test = aa_inc-aa_end_l ;或者,在aa_inc〈0時為地址自減的情況下,aa_inc具體為地址增量寄存器的自減值;根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值aa_wrap和負I ニ11I、日」1 a已—testaa_wrap = aa_inc+ (aa_end-aa_start+l) ;aa_test = aa_inc-aa_starto其中,所述根據(jù)aa_wrap和aa_test進行地址自增或自減判斷,實現(xiàn)地址緩沖管理具體包括獲得所述aa_wrap和所述aa_test情況下,通過判斷aa_inc和aa+aa_test值的符號位是否相等實現(xiàn)地址緩沖管理,相等時,aa = aa+aa_wrap ;不相等時,aa = aa+aa_inc ;其中,所述aa為當前地址寄存器的值。本發(fā)明匯編器對地址自增值及邊界設(shè)置指令進行編碼時,運算得到中間值并將中間值封裝到地址自增值及邊界設(shè)置指令中;處理器對地址自增值及邊界設(shè)置指令譯碼時獲得中間值;執(zhí)行l(wèi)oad或store指令時,根據(jù)中間值進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。由于本發(fā)明區(qū)別于現(xiàn)有技術(shù),并不是將所有運算邏輯都通過處理器實現(xiàn),而是通過匯編器分擔了現(xiàn)有處理器的部分運算邏輯以獲得中間值,僅在處理器采用中間值進行地址自增或自減判斷的核心運算,以實現(xiàn)地址緩沖管理,因此,簡化了處理器的運算邏輯,避免了邏輯運算復雜導致的硬件成本増加,及拉低整個處理器的頻率、產(chǎn)生時序的問題,從而既降低了處理器的硬件成本,又能滿足處理器時序設(shè)計、高效節(jié)能的設(shè)計需求。
圖I為現(xiàn)有處理器的邏輯電路示意圖;圖2為本發(fā)明地址緩沖管理的實現(xiàn)裝置的組成結(jié)構(gòu)示意圖;圖3為本發(fā)明處理器的邏輯電路示意圖。
具體實施例方式本發(fā)明的基本思想是運算邏輯分為兩部分,分別在匯編器和處理器中實現(xiàn),由于匯編器分擔了現(xiàn)有處理器的部分運算邏輯以獲得中間值,僅在處理器采用中間值進行地址自增或自減判斷的核心運算,以實現(xiàn)地址緩沖管理,因此,簡化了處理器的運算邏輯,為了 實現(xiàn)地址緩沖管理,既不會増加處理器的硬件成本,又能滿足處理器時序設(shè)計、高效節(jié)能的設(shè)計需求。下面結(jié)合附圖對技術(shù)方案的實施作進ー步的詳細描述。一種處理器地址緩沖管理的實現(xiàn)裝置,該裝置主要包括以下內(nèi)容裝置包括匯編器和處理器;其中,匯編器用于對地址自增值及邊界設(shè)置指令進行編碼時,運算得到中間值并將中間值封裝到地址自增值及邊界設(shè)置指令中;中間值為用于實現(xiàn)地址緩沖管理的地址自增或自減運算的數(shù)值。處理器用于對地址自增值及邊界設(shè)置指令譯碼時獲得所述中間值;執(zhí)行l(wèi)oad或store指令時,根據(jù)中間值進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。進ー步的,匯編器包括指令編碼單元和指令封裝単元;其中,指令編碼單元用于在匯編器獲得地址自增值及邊界設(shè)置指令為setaa, <aa_inc>, [aa_start, aa_end]的情況下,根據(jù)地址増量寄存器的自增值或自減值aa_inc、地址緩沖尾邊界的值aa_end和地址緩沖首邊界的值aa_start進行運算,運算得到第一中間值aa_wrap和第二中間值aa_test。指令封裝單元用于封裝包含所述aa_inc、所述aa_wrap和所述aa_test的地址自增值及邊界設(shè)置指令為ニ進制的指令機器碼。進ー步的,處理器包括指令譯碼單元和自增或自減運算單元;其中,指令譯碼單元用于對地址自增值及邊界設(shè)置指令譯碼吋,從指令機器碼獲得所述aa_inc、所述aa_wrap和所述aa_test。自增或自減運算單元用于執(zhí)行l(wèi)oad或store指令時,根據(jù)所述aa_inc、aa_wrap和aa_test進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。進ー步的,指令編碼單元進ー步用于在aa_inc>0時為地址自增的情況下,aa_inc具體為地址增量寄存器的自增值;根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值 aa_wrap 和第二中間值 aa_test 具體為aa_wrap = aa_inc_(aa_end_aa_start+1) ;aa_test = aa_mc-aa_end-l指令編碼單元進ー步用于在aa_inc〈0時為地址自減的情況下,aa_inc具體為地址增量寄存器的自減值;根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值 aa_wrap 和第二中間值 aa_test 具體為aa_wrap = aa_inc+(aa_end_aa_start+l);aa_test = aa_inc_aa_start0
進ー步的,自增或自減運算單元進ー步用于獲得所述aa_wrap和所述aa_test情況下,通過判斷aa_inc和aa+aa_test值的符號位是否相等實現(xiàn)地址緩沖管理,相等時,aa=aa+aa_wrap ;不相等時,aa = aa+aa_inc ;其中,所述aa為當前地址寄存器的值。一種處理器地址緩沖管理的實現(xiàn)方法,該方法主要包括以下內(nèi)容一、匯編器對地址自增值及邊界設(shè)置指令進行編碼時,運算得到中間值并將中間值封裝到地址自增值及邊界設(shè)置指令中;所述中間值為用于實現(xiàn)地址緩沖管理的地址自增或自減運算的數(shù)值。ニ、處理器對地址自增值及邊界設(shè)置指令譯碼時獲得所述中間值;執(zhí)行l(wèi)oad或store指令時,根據(jù)中間值進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。進ー步的,所述運算得到中間值具體包括在匯編器獲得地址自增值及邊界設(shè)置指令為 set aa,<aa_inc>, [aa_start, aa_end]的情況下,根據(jù) aa_inc、aa_end 和 aa_start 進行運算,運算得到第一中間值aa_wrap和第二中間值aa_test。進ー步的,所述實現(xiàn)地址緩沖管理具體包括對所述編碼的load或store指令譯碼并獲得所述aa_inc、所述aa_wrap和所述aa_test情況下,執(zhí)行l(wèi)oad或store指令時,根據(jù)所述aa_inc、aa_wrap和aa_test進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。進ー步的,在aa_inc>0時為地址自增的情況下,aa_inc具體為地址增量寄存器的自增值;根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值aa_wrap和^ ^ Φ I、日」1 a已—testaa_wrap = aa_inc- (aa_end-aa_start+l) ;aa_test = aa_inc-aa_end_l ;或者,在aa_inc〈0時為地址自減的情況下,aa_inc具體為地址增量寄存器的自減值;根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值aa_wrap和第二中間值aa_test 具體為aa_wrap = aa_inc+Laa_end_aa_start+1) ;aa_test = aa_inc_aa_start0進ー步的,所述根據(jù)aa_wrap和aa_test進行地址自增或自減判斷,實現(xiàn)地址緩沖管理具體包括獲得所述aa_wrap和所述aa_test情況下,通過判斷aa_inc和aa+aa_test值的符號位是否相等實現(xiàn)地址緩沖管理,相等時,aa = aa+aa_wrap ;不相等時,aa = aa+aa_inc ;其中,所述aa為當前地址寄存器的值。綜上所述,本發(fā)明能實現(xiàn)處理器中l(wèi)oad/store時的地址緩沖管理,同時還能在降低處理器硬件成本的基礎(chǔ)上滿足處理器的性能設(shè)計和時序要求。本發(fā)明簡化了處理器的運算邏輯,從而避免了現(xiàn)有處理器設(shè)計中存在的復雜邏輯導致的時序問題,即引入?yún)R編器,將一部分運算邏輯放到匯編器中運行,而處理器的運算邏輯只處理由匯編器處理得到的中間值。其中,針對運算邏輯放到匯編器中運行而言,匯編器在對load或store指令進行編碼時,會對地址緩沖的首、尾邊界值和地址增量寄存器的自增值或自減值進行運算,得出兩個中間值,編碼在指令中,生成ニ進制機器碼;針對處理器只處理中間值的運算邏輯而言,當處理器在對指令譯碼時,直接對中間值進行處理,可以簡化處理器的運算邏輯,由于運算邏輯的簡化會導致對應處理器的邏輯電路簡單,從而避免出現(xiàn)現(xiàn)有處理器中由兩個加法器串聯(lián)及ニ級MUX電路構(gòu)成關(guān)鍵路徑的復雜邏輯電路,保證滿足處理器的頻率設(shè)計要求。以下對本發(fā)明進行舉例闡述。裝置實施例如圖2所示為本發(fā)明地址緩沖管理的實現(xiàn)裝置的組成結(jié)構(gòu)示意圖,由匯編器和處理器構(gòu)成。其中,匯編器是針對地址自增值及邊界設(shè)置指令set aa, <aa_inc>, [aa_start, aa_end]處理的,在匯編器獲得地址自增值及邊界設(shè)置指令為set aa,<aa_inc>, [aa_start,aa_end]的情況下,匯編器中的指令編碼單元用于對地址自增值及邊界設(shè)置指令進行編碼時,根據(jù)地址増量寄存器的自增值或自減值aa_inc、地址緩沖尾邊界的值aa_end和地址緩沖首邊界的值aa_start進行運算,運算得到第一中間值aa_wrap和第二中間值aa_test ;匯編器中的指令封裝單元用于按照指令封裝格式,封裝包含aa_inc、及aa_wrap和aa_test這兩個中間值的地址自增值及邊界設(shè)置指令為ニ進制的指令機器 馬,即為<aa_inc>> <aa_wrap>> <aa_test夕圭至Ij set aa, <aa_inc>, [aa_start, aa_end]指令的機器碼中。處理器中的指令譯碼單元(具體為由圖2中的load/store指令譯碼單元和地址自增值及邊界設(shè)置指令譯碼單元組成),地址自增值及邊界設(shè)置指令譯碼單元用于對地址自增值及邊界設(shè)置指令譯碼并獲得aa_inc、及aa_wrap和aa_test這兩個中間值,將aa_inc、及aa_wrap和aa_test這兩個中間值保存在寄存器(即圖2中的自增值及中間值寄存器)中,即為當對set aa, <aa_inc>, [aa_start, aa_end]指令進行譯碼時,是直接取出機器碼中的<aa_inc>、<aa_wrap>> <aa_test>并保存在對應寄存器中,而不進行任何運算(姆個地址寄存器分別對應上述<aa_inc>、〈aa_wrap>、〈aa_test>的一組值);load/store指令譯碼單元用于對load/store指令譯碼;處理器中的自增或自減運算單元用于執(zhí)行l(wèi)oad或store指令時,根據(jù)aa_wrap和aa_test這兩個中間值及aa_inc進行地 址自增或自減判斷運算,以實現(xiàn)地址緩沖管理,即為當處理load或store指令時,會取出對應地址寄存器的中的<aa_inc>、<aa_wrap>、<aa_test>值,并進行判斷,加法,選擇輸出等操作。本實施例的運算邏輯分兩部分邏輯運算,分別在匯編器和處理器中實現(xiàn),其中一部分較復雜的邏輯運算放在匯編器中進行,剩下的一部分簡單的邏輯運算放在處理器中進行?,F(xiàn)有技術(shù)運算邏輯為給每個地址寄存器設(shè)置兩個邊界寄存器,ー個為首邊界寄存器,另ー個為尾邊界寄存器,并通過指令設(shè)置這兩個寄存器的值,當執(zhí)行ー個load或store指令時,當前地址加上自增值與邊界進行比較,如果越界,則跳回。但是,本實施例的運算邏輯與現(xiàn)有技術(shù)的區(qū)別是,引入了匯編器中的aa_wrap和aa_test這兩個中間值。以下將本實施例引入了 aa_wrap和aa_test這兩個中間值的運算邏輯與現(xiàn)有技術(shù)運算邏輯的轉(zhuǎn)化進行對比描述,對應的編碼也分為自增或自減兩種情況,如下所示(I)地址自增的情況下的編碼if(aa_inc>0&&aa+aa_inc>aa_end)(1-1)aa = aa+aa_inc_、aa_end_aa_start+l);elseaa — £i£i+£i£i—inc ;若設(shè)置aa_test= aa_inc-aa_end_l ; (1-2)aa_wrap = aa_inc-(aa_end_aa_start+l);(ト3)則上述公式(1-1)所示的if/else分支選擇運算編碼轉(zhuǎn)化為如下公式(1_4)所示的if/else分支選擇運算編碼if(aa_inc>0&&aa+aa_test>-l) ; (1-4)aa = aa+aa_wrap ;
elseaa = aa+aa_inc ;等價于if(aa_inc>0&&aa+aa_test> = 0)(1-4,)aa = aa+aa_wrap ;elseaa = aa+aa_inc ;(2)地址自減的情況下的編碼if(aa_inc<0&&aa+aa_inc<aa_start)(2-1)aa = aa+aa_inc+(aa_end-aa_start+l);elseaa = aa+aa_inc ;若設(shè)置aa_test= aa_inc_aa_start ; (2-2)aa_wrap = aa_inc+(aa_end-aa_start+l) ; (2-3)則上述公式(2-1)所示的if/else分支選擇運算編碼轉(zhuǎn)化為如下公式(2_4)所示的if/else分支選擇運算編碼if(aa_inc<0&&aa+aa_test<0)(2-4)aa = aa+aa_wrap ;elseBcl — ΒΒ+ΒΒ—inc ;(3) aa_inc為0時,aa不需要更新,即地址既不自增也不自減的情況下的編碼if (aa_inc = = O) (3-1)aa_wrap = O ;這種情況下,aa_wrap = O ;aa_test的值不用考慮,aa_test可以是ー個任意值,因為無論aa+aa_test的值為多少,aa+aa_wrap和aa+aa_inc的結(jié)果都是aa,因此,后續(xù)處理器不需要關(guān)心aa_inc是否等于0,這種地址既不自增也不自減的特殊情況。(4)通過以上的邏輯轉(zhuǎn)化可知在處理器中直接采用匯編器中引入的aa_wrap和aa_test這兩個中間值,由公式(1_4)或(1_4’)以及(2_4)式可以得到如下公式(4_1)所示的if/else分支選擇運算編碼,實現(xiàn)自增或自減判斷運算。if (,sign (aa_inc) = = sign (aa+aa_test)) (4-1)aa = aa+aa_wrap ;else
Bcl — ΒΒ+ΒΒ—inc ;綜上所述,通過本實施例匯編器中引入的aa_wrap和aa_test這兩個中間值,以及處理器中直接采用這兩個中間值,采用公式(4-1)所示的if/else分支選擇運算編碼,也能實現(xiàn)地址緩沖管理,即為地址在設(shè)置的一個地址寄存器的首、尾邊界值范圍內(nèi)自增或自減,當跨越邊界吋,自動跳回邊界內(nèi)。由于通過引入?yún)R編器中編碼的中間值,對上述運算邏輯進行轉(zhuǎn)化,從而在最終處理器執(zhí)行l(wèi)oad或store指令時只需要公式(4_1)所示的if/else分支選擇運算,簡化了處理器中的運算邏輯,在處理器中只需比較aa_inc和aa+aa_test的最高位(符號位)是否相等,上述if (sign(aa_inc) == sign (aa+aa_test))表示該符號位比較,而不需要ー個加法器來判斷,這樣也就規(guī)避了現(xiàn)有處理器運算邏輯對應的邏輯電路中兩個加法器串聯(lián)及ニ級MUX電路的復雜邏輯,與現(xiàn)有處理器相比,硬件邏輯電路得到大大簡化。應用實例如圖3所示為本發(fā)明處理器的邏輯電路示意圖,上述圖2所示的處理器是針對其軟件功能模塊而言的,本實例是針對處理器的硬件電路結(jié)構(gòu)而言的,只需要知道3個變量,aa_inc, aa_wrap和aa_test就可以實現(xiàn)執(zhí)行l(wèi)oad或store指令時的if/else分支選擇運算,以最終實現(xiàn)地址緩沖管理。圖3這種處理方式是采用加法器并行處理的方式,カロ法器31、加法器32和加法器33并聯(lián),且最終實現(xiàn)由選擇器41選擇輸出僅僅采用ー級MUX電路??梢姳景l(fā)明能由匯編器和處理器中兩部分運算邏輯組成,相對復雜的運算邏輯,基于上述公式α-2),(1-3), (2-2),(2-3),(3-1)運算得到中間值由匯編器完成(其中由公式(3-1)運算的這種特殊情況一般不關(guān)心),當匯編器對指令set aa, <aa_inc>, [aa_ start,aa_end]進行編碼時,會根據(jù)aa_inc的值的正、負,由式(ト2), (1-3), (2-2), (2-3),計算得出aa_test和aa_wrap這兩個中間值,并編碼在load或store指令中。當處理器對這條load或store指令進行譯碼時,取出aa_inc, aa_test和aa_wrap的值并保存在寄存器中。簡單的運算邏輯由處理器執(zhí)行,當處理器執(zhí)行一條load或store指令時,會對相應的aa_inc和aa+aa_test的符號位進行比較判斷。進而更新aa的值,保證其在aa_start和aa_end中間進行跳動。對應處理器的邏輯電路,只需3個并聯(lián)的加法器以及ー個MUX電路組成,就能在實現(xiàn)地址緩沖管理的基礎(chǔ)上,用最少的硬件成本,完全可以滿足處理器的頻率和時序要求。以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。
權(quán)利要求
1.一種處理器地址緩沖管理的實現(xiàn)裝置,其特征在于,該裝置包括匯編器和處理器;其中, 所述匯編器,用于對地址自增值及邊界設(shè)置指令進行編碼時,運算得到中間值并將中間值封裝到地址自增值及邊界設(shè)置指令中;所述中間值為用于實現(xiàn)地址緩沖管理的地址自增或自減運算的數(shù)值; 處理器,用于對地址自增值及邊界設(shè)置指令譯碼時獲得所述中間值;執(zhí)行l(wèi)oad或store指令時,根據(jù)中間值進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。
2.根據(jù)權(quán)利要求I所述的裝置,其特征在于,所述匯編器包括指令編碼單元和指令封裝單元;其中, 所述指令編碼單元,用于在匯編器獲得地址自增值及邊界設(shè)置指令為setaa,<aa_inc>, [aa_start, aa_end]的情況下,根據(jù)地址增量寄存器的自增值或自減值aa_inc、地址緩沖尾邊界的值aa_end和地址緩沖首邊界的值aa_start進行運算,運算得到第一中間值aa_wrap 和第二中間值 aa_test ; 所述指令封裝單元,用于封裝包含所述aa_inc、所述aa_wrap和所述aa_test的所述地址自增值及邊界設(shè)置指令為二進制的指令機器碼。
3.根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述處理器包括指令譯碼單元和自增或自減運算單元;其中, 所述指令譯碼單元,用于對所述地址自增值及邊界設(shè)置指令譯碼時,從指令機器碼中取出所述aa_inc、所述aa_wrap和所述aa_test ; 所述自增或自減運算單元,用于執(zhí)行l(wèi)oad或store指令時,根據(jù)aa_inc、aa_wrap和aa_test進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。
4.根據(jù)權(quán)利要求3所述的裝置,其特征在于,所述指令編碼單元,進一步用于在aa_inc>0時為地址自增的情況下, aa_inc具體為地址增量寄存器的自增值; 根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值aa_wrap和第二中間值 aa_test 具體為aa_wrap = aa_inc_ (aa_end_aa_start+l) ;aa_test = aa_inc_aa_end-1 ;或者, 所述指令編碼單元,進一步用于在aa_inc〈0時為地址自減的情況下, aa_inc具體為地址增量寄存器的自減值; 根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值aa_wrap和第二中間值 aa_test 具體為aa_wrap = aa_inc+(aa_end_aa_start+l) ;aa_test = aa_inc_aa_start。
5.根據(jù)權(quán)利要求4所述的裝置,其特征在于,所述自增或自減運算單元,進一步用于獲得所述aa_wrap和所述aa_test情況下,通過判斷aa_inc和aa+aa_test值的符號位是否相等實現(xiàn)地址緩沖管理,相等時,aa = aa+aa_wrap ;不相等時,aa = aa+aa_inc ;其中,所述aa為當前地址寄存器的值。
6.一種處理器地址緩沖管理的實現(xiàn)方法,其特征在于,該方法包括 匯編器對地址自增值及邊界設(shè)置指令進行編碼時,運算得到中間值并將中間值封裝到地址自增值及邊界設(shè)置指令中;所述中間值為用于實現(xiàn)地址緩沖管理的地址自增或自減運算的數(shù)值; 處理器對地址自增值及邊界設(shè)置指令譯碼時獲得所述中間值;執(zhí)行l(wèi)oad或store指令時,根據(jù)中間值進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,所述運算得到中間值具體包括在匯編器獲得地址自增值及邊界設(shè)置指令為set aa, <aa_inc>, [aa_start, aa_end]的情況下,根據(jù)aa_inc、aa_end和aa_start進行運算,運算得到第一中間值aa_wrap和第二中間值aa_test。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述實現(xiàn)地址緩沖管理具體包括對所述地址自增值及邊界設(shè)置指令譯碼時獲得所述aa_inc、所述aa_wrap和所述aa_test情況下,執(zhí)行l(wèi)oad或store指令時,根據(jù)所述aa_inc、aa_wrap和aa_test進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。
9.根據(jù)權(quán)利要求7或8所述的方法,其特征在于,在aa_inc>0時為地址自增的情況下,aa_inc具體為地址增量寄存器的自增值; 根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值aa_wrap和第二中間值 aa_test 具體為aa_wrap = aa_inc_ (aa_end_aa_start+l) ;aa_test = aa_inc_aa_end-1 ;或者, 在aa_inc〈0時為地址自減的情況下,aa_inc具體為地址增量寄存器的自減值; 根據(jù)所述aa_inc、所述aa_end和所述aa_start運算得到第一中間值aa_wrap和第二中間值 aa_test 具體為aa_wrap = aa_inc+(aa_end_aa_start+l) ;aa_test = aa_inc_aa_start。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述根據(jù)aa_wrap和aa_test進行地址自增或自減判斷,實現(xiàn)地址緩沖管理具體包括獲得所述aa_wrap和所述aa_test情況下,通過判斷aa_inc和aa+aa_test值的符號位是否相等實現(xiàn)地址緩沖管理,相等時,aa =aa+aa_wrap ;不相等時,aa = aa+aa_inc ;其中,所述aa為當前地址寄存器的值。
全文摘要
本發(fā)明公開了一種處理器地址緩沖管理的實現(xiàn)裝置,裝置中的匯編器用于對地址自增值及邊界設(shè)置指令進行編碼時,運算得到中間值并將中間值封裝到地址自增值及邊界設(shè)置指令中;處理器用于根據(jù)中間值進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。本發(fā)明還公開了一種處理器地址緩沖管理的實現(xiàn)方法,該方法包括處理器對地址自增值及邊界設(shè)置指令譯碼時獲得所述中間值;執(zhí)行l(wèi)oad或store指令時,根據(jù)中間值進行地址自增或自減判斷,實現(xiàn)地址緩沖管理。采用本發(fā)明的裝置及方法,既降低了處理器的硬件成本,又能滿足處理器速度和時序設(shè)計、高效節(jié)能的設(shè)計需求。
文檔編號G06F9/34GK102681822SQ201110065349
公開日2012年9月19日 申請日期2011年3月17日 優(yōu)先權(quán)日2011年3月17日
發(fā)明者任暉, 田春雨, 黎立煌 申請人:中興通訊股份有限公司