一種基于可編程微代碼的內存共享處理器及其重構方法
【專利摘要】本發明公開了一種基于可編程微代碼的內存共享處理器,該處理器包括寄存器(ROM)、可讀寫內存(RAM)及用于內存管理配置的譯碼器,該處理器的寄存器(ROM)中儲存通用微代碼指令,處理器的可讀寫內存(RAM)中共享儲存應用程序和定制化的微代碼指令,且應用程序和定制化的微代碼指令在可讀寫內存(ROM)中所占空間大小根據需要分配和調整。利用該處理器進行內存重構步驟主要是利用譯碼器對RAM進行重新管理分配單元,對其進行配置后將微代碼指令組合加載至RAM中。本發明通過微代碼內存與應用程序的內存共享,按需分配微代碼所需的內存大小與程序內存大小,大大提高了RAM的應用效率。
【專利說明】
一種基于可編程微代碼的內存共享處理器及其重構方法
技術領域
[0001]本發明屬于處理器設計技術領域,特別是針對存儲有可編程微代碼的處理器如何實現內存分配和高效運行上的設計和優化,準確來說是一種基于可編程微代碼的內存共享處理器及其重構方法。
【背景技術】
[0002]微代碼是指處理器的硬件結構的一抽象層,它一般駐留在處理器的高速存儲器中,能夠直接對處理器邏輯資源進行控制,保證處理器初始啟動狀態的正常運轉。由于微代碼通常設計在嵌入式處理器及片上系統(SoC)中并存駐于內核邏輯中,因而具有能直接控制處理器邏輯操作、高能效、低功耗、高代碼密度的優點。內嵌有微代碼的處理器已經廣泛的運用于物聯網、傳感網、以及工業控制等對能耗、成本、性能有著苛刻要求智能產品中。微代碼指令一般存儲在處理器的ROM(只讀內存)中,也就是芯片在設計制作生成時,微碼指令就被固化在處理器中開機運行中;也有部分微代碼指令存儲在處理器的RAM里(可讀寫內存),但這些微代碼指令通常是一些可定制的操作命令,或微代碼升級更新指令集,其更多是存儲一些勘誤指令以實現對ROM里的代碼錯誤糾正。
[0003]現有的物聯網、移動互聯網絡在智能控制應用正朝著專業化與定制化的方向演進,其智能網絡處理器面臨著越來越短的研發上市周期(time-to-market ),越來越多的嵌入式處理器利用可編程微代碼對傳統的通用處理器進行底層的邏輯重構,根據應用的特殊性進行專用微代碼定制,即成為基于可編程微代碼的可重構處理器設計。處理器通過對應用程序與資源消耗的分析加載不同的微代碼程序組合,從而提高處理器對不同任務進行處理的效率與性能。為了實現處理器的可重構性,處理器內部需要根據不同的微代碼程序(微程序)的情況進行內存分配,依據處理器運行在差情況下執行最多數量的微碼指令集組合來為其預留處理器的RAM空間。以頂3000/FC3180嵌入式處理器為例,該處理器預留給可重構微代碼程序內存占芯片儲存量30%以上。然而,在處理器面向不同應用或者任務工作時,微代碼程序內存的需求差異巨大,當只需要較少的內存容量即可容納外代碼程序時,固定預留30%的內存將導致處理器寶貴內存的浪費,而且也造成了微代碼程序內存利用率的降低。圖1是現有的微代碼程序在處理器內存中的分配示意圖。如圖所示,在該芯片處理器中,內存RAM中始終留出了40K的空間用于可配置微代碼的存儲。實際上,當需要配置的微代碼命令較少時,40KB就存在空間的浪費,而這些內存單元又無法被應用程序所使用;當應用程序復雜時,40KB的空間又顯得較為緊張。如何設計一種新的處理器內存重構,減少對內存的浪費,提高內存使用效率就處理器設計急需解決的問題。
【發明內容】
[0004]本發明的目的就是為了解決基于可編程微代碼的可重構處理器的微碼內存利用效率較低的缺陷,通過采用微代碼內存與應用程序內存共享的方法,按需分配微代碼所需的內存大小與應用程序內存大小。
[0005]為達到上述的技術目的,本發明采用的技術方案為:一種基于可編程微代碼的內存共享處理器,包括只讀內存(R0M)、可讀寫內存(RAM)及用于內存管理配置的譯碼器及I/O管理單元,該處理器的只讀內存(ROM)中儲存通用微代碼指令,處理器的可讀寫內存(RAM)中共享儲存應用程序和定制化的微代碼指令,且應用程序和定制化的微代碼指令在可讀寫內存(RAM)中所占空間大小根據需要分配和調整。
[0006]上述譯碼器和I/O管理單元為可配置模塊,通過專門設計的存儲管理器(sharememory manager)配置其參數,其配置參數包含用于應用程序或微代碼的內存大小以及其各自的地址范圍(以block為單位),譯碼器通過區分微碼地址與程序地址,進行相應的譯碼工作,I/O管理單元負責讀取儲存在RAM里的微代碼及應用程序。
[0007]上述RAM的輸入/輸出接口通過I/O管理單元將讀取的數據正確連接在控制總線和數據總線上。控制總線和數據總線連接芯片的邏輯單元,總線上傳遞的指令數據對芯片邏輯單元實現控制。
[0008]上述基于可編程微代碼的處理器中,使用可讀寫存儲單元存儲可編程微代碼指令集,系統可以根據不同應用,加載不同的微代碼指令集;處理器根據不同的應用場景,靜態或動態分配微代碼內存大小與程序內存大小;處理器上電后或在運行中,根據外圍指令或應用場景進行自我分析,分配用于微代碼與應用程序的內存空間;所分配的空間大小與塊地址,利用內存分配寄存器配置內存分配管理單元。內存分配管理單元對微代碼地址與程序地址進行地址譯碼,以適應可重配置的內存功能單元,內存輸出接口,正確地將對應數據輸出微代碼的控制字或程序。
[0009]利用上述基于可編程微代碼的內存共享處理器進行內存重構的方法為:(I)開機后或在運行中自檢當前的通用微代碼是否滿足需求;(2)如果滿足需求則不進行內存重構;如果不滿足需求,則保存當前狀態后開始重新微代碼指令初始化;(3)選擇新的微代碼指令組合;(4)利用譯碼器對RAM進行重新管理分配單元,對其進行配置;(5)將微代碼指令組合加載至RAM中;(6)重新啟動運行。步驟(4)中的譯碼器按需對應用程序及微代碼進行內存大小以及地址范圍(以block為單位)的分配,再通過區分微碼地址與程序地址,進行相應的譯碼工作,讀取儲存在RAM里的微代碼與應用程序。
[0010]本申請的技術方案的主要效果在于:(I)通過可編程微代碼對處理器實現重構,實現對不同應用場景與業務的有優化,提高運行效率;(2)通過對不同微碼指令組合的選擇,實現動態的按需優化;(3)核心優勢在于,通過對可讀寫內存RAM的動態管理,實現微碼內存空間與程序內存空間的動態分配,大大的提高了 RAM的應用效率。
【附圖說明】
[0011]圖1是現有的微代碼程序在處理器內存中的分配示意圖(以IM3000/FC3180為例);
[0012]圖2是本申請技術方案的微代碼程序在處理器內存中的分配示意圖;
[0013]圖3是譯碼器對處理器內存中的微代碼/應用程序進行管理過程;
[0014]圖4本申請技術方案的處理器內存重構流程圖;
[0015]圖5是采用本申請技術方案后的FC3180AM3000處理器的內存占用示意圖;
[0016]圖6是加入本申請技術方案后的FC3180AM3000處理器的內存地址分配示意圖:
【具體實施方式】
[0017]為更清楚的對本申請技術方案予以闡述,下面結合附圖和具體實施例進行闡述:如圖1所示,本申請的基于可編程微代碼的內存共享處理器,包括只讀內存(ROM)、可讀寫內存(RAM)及用于內存管理配置的譯碼器及I/O管理單元,該處理器的只讀內存(ROM)中儲存通用微代碼指令,處理器的可讀寫內存(RAM)中共享儲存應用程序和定制化的微代碼指令,且應用程序和定制化的微代碼指令在可讀寫內存(RAM)中所占空間大小根據需要分配和調整。圖中可以看出應用程序與定制化微碼共享了 128K的內存空間,它們所占用內存的比例根據需要進行調整和變化,從而提高了內存的使用效率。圖3是譯碼器對處理器內存中的微代碼/應用程序進行管理過程,如圖3所示,譯碼器為可配置模塊,其配置參數包含用于應用程序或微代碼的內存大小以及其各自的地址范圍(以block為單位),譯碼器通過區分微碼地址與程序地址,進行相應的譯碼工作,讀取儲存在RAM里的微代碼及應用程序。再通過管理單元將讀取的數據正確連接在控制總線和數據總線上。圖4是處理器的內存重構流程圖,其過程步驟為:(I)開機后或運行中自檢當前的通用微代碼是否滿足需求;(2)如果滿足需求則不進行內存重構;如果不滿足需求,則保存當前狀態后開始重新微代碼指令初始化;
(3)選擇新的微代碼指令組合;(4)利用譯碼器對RAM進行重新管理分配單元,對其進行配置;(5)將微代碼指令組合加載至RAM中;(6)重新啟動運行。圖5和圖6是以加入內存共享功能的FC3180AM3000處理器為例,圖示了內存占用和地址分配狀態。使用80-bit(10Bytes)微代碼控制字以及8-bit(lbyte)的程序總線,并以128kB SRAM作為共享的內存。128kBSRAM以16kB為一塊,共計8塊,每塊的寬度為16-byte(128bits)/word(即每塊內存為Ik X16bytes)。每塊內存的使用由內存分配管理單元的配置寄存器MCMR[0:7]定義。圖5的左圖中,當其中一塊內存用于微代碼的時候,前10bytes = 80bits用于存放微碼,后6bytes空白(根據處理器控制總線不同,微碼可任意寬度),右圖是所有內存均用于存放微碼的情況。圖6是中的三列分別對應了:]\?1?[0:8]=0所有內容用于應用程序、]\0?[0:8] = 16塊0-3(0-3Block)用于微代碼,其他用于應用程序及MCMR[0:8] = 256內存全部用于微代碼的內存和地址分配。
[0018]以上所述僅為本發明技術方案的較佳實施例而已,并不用以限制本發明申請,凡在本技術方案實質內容上所作的任何修改、等同替換和簡單改進等,均應包含在本發明的保護范圍之內。
【主權項】
1.一種基于可編程微代碼的內存共享處理器,包括只讀內存(ROM)、可讀寫內存(RAM)及用于內存管理配置的譯碼器和I/O管理單元,其特征在于,該處理器的只讀內存(ROM)中儲存通用微代碼指令,處理器的可讀寫內存(RAM)中共享儲存應用程序和定制化的微代碼指令,且應用程序和定制化的微代碼指令在可讀寫內存(RAM)中所占空間大小可根據需要分配和調整。2.根據權利要求1所述的基于可編程微代碼的內存共享處理器,其特征在于,譯碼器與I/O管理單元為可配置模塊,通過專門設計的存儲管理器(share memory manager)配置其參數,包含用于應用程序或微代碼的內存大小以及其各自的地址范圍(以block為單位),譯碼器通過區分微碼地址與程序地址,進行相應的譯碼工作,I/O管理單元負責讀取儲存在RAM里的微代碼及應用程序。3.根據權利要求1所述的基于可編程微代碼的內存共享處理器,其特征在于,RAM的輸入/輸出接口通過I/O管理單元將讀取的數據正確連接在控制總線和數據總線上。4.根據權利要求3所述的基于可編程微代碼的內存共享處理器,其特征在于,控制總線和數據總線連接芯片的邏輯單元,總線上傳遞的指令數據對芯片邏輯單元實現控制。5.利用權利要求1所述的基于可編程微代碼的內存共享處理器進行內存重構的方法,其特征在于,該內存重構步驟為:(I)開機后或收到相關指令后,自檢當前的通用微代碼是否滿足需求;(2)如果滿足需求則不進行內存重構;如果不滿足需求,則保存當前狀態后開始重新微代碼指令初始化;(3)選擇新的微代碼指令組合;(4)利用譯碼器對RAM進行重新管理分配單元,對其進行配置;(5)將微代碼指令組合加載至RAM中;(6)重新啟動運行。6.根據權利要求5所述的內存重構的方法,其特征在于,步驟(4)中的譯碼器按需對應用程序及微代碼進行內存大小以及地址范圍(以block為單位)的分配,再通過區分微碼地址與程序地址,進行相應的譯碼工作,讀取儲存在RAM里的微代碼與應用程序。
【文檔編號】G06F9/50GK106055405SQ201610340406
【公開日】2016年10月26日
【申請日】2016年5月23日
【發明人】鄒卓, 馬寧, 環宇翔, 鄭立榮
【申請人】矽魅信息科技(上海)有限公司