章鳴嬛,葉有祥
隨著微電子技術和計算機技術的迅猛發展,尤其是大規模可編程器件,如現場可編程邏輯陣列FPGA(Field Programmable Gate Array)的出現,在苛刻的實時處理系統的要求下,出現了一種新穎靈活的技術——可重構技術。它采用實時電路重構技術[1],在運行時根據需要,動態改變系統的電路結構,主要通過對系統中的可編程器件進行重配置或部分重配置,從而使系統既有硬件優化所能達到的高速度和高效率,又能像軟件那樣靈活可變,易于升級。可重構體系結構[2]能夠跟據不同的應用需求,靈活、快速地改變自身的結構,以便能為每個特定的應用提供與之相匹配的體系結構。
1.1.1 “實驗CPU”的總體結構框圖
控制器是CPU及整個處理器系統的核心,它負責指揮控制協調處理器系統的所有工作。根據微操作控制信號產生方法的不同,控制器可分為常規邏輯控制器和微程序控制器兩種。
“實驗CPU”采用微程序控制器的方式,其總體邏輯結構,如圖1所示:

圖1 實驗CPU的總體邏輯框圖
1.1.2 系統主要模塊概述
總線:本系統采用單總線,即微處理器的內部總線和外部總線均為一條總線。采用16位地址總線;結合實驗平臺要求,采用兩條數據總線,一條是入32位CPU的數據總線DBin,另外一條是出32位CPU的數據總線DBout。需要讀內存時,連至DBin,要寫內存時,連至DBout。
寄存器組:寄存器模塊寄存器組中共包括R0至R31共32個寄存器。
運算器部件ALU:ALU包括含累加器A和A2、暫存器ACT、狀態寄存器等,可完成各種算術、邏輯運算功能,如加減、與、或及移位等。
指令部件:指令部件模塊包括指令寄存器、程序計數器(PC)及其控制電路等。
微程序控制部件:微程序控制摸塊包括微指令寄存器、微程序計數器及它的控制電路(加 1、接數等)、微指令寄存器、時序控制電路、微操作信號發生電路等。
存儲器:存儲器為外接的RAM存儲器,容量為32K*8b。
外設:為了實現外部輸入信息的處理,系統中使用4*4鍵盤作為外設。對存儲器和外設分別設置獨立的讀/寫信號。
本系統指令集共設計26條常用指令,包括傳送、運算、存取及跳轉、棧操作、移位、子程序調用等類型,尋址方式包括立即尋址、直接尋址,間接尋址及相對尋址等。
1.2.1 指令執行流程
分別對傳送及加法指令在系統邏輯框圖中的執行流程進行列舉,如表1所示:

表1 指令集舉例及指令執行流程
1.2.2 指令編碼
對表1中列舉的指令進行指令編碼,如表2所示:

表2 指令編碼
“實驗CPU”采用微程序控制器。將微程序控制信號以微碼的形式構成微指令,編成多微指令的微程序,存于存儲器中。
1.3.1 微指令編碼及微程序編碼
設計微處理器的微指令寬度為32位。微操作數少于32個,可采用直接表示法每一個微操作信號都由微指令相應的某一位來控制。
根據各指令在系統邏輯框圖中的執行流程和微指令編碼中信號的有效性,得到微程序編碼[3]。以表1中的傳送指令:“MOV A,Ri”為例,說明如下:
為了執行該條指令,首先必須根據表1中的指令執行流程,得到在指令執行的過程中,需要用到哪些控制信號,而后根據這些控制信號的有效與否,對控制信號進行取值。
該指令為單字節指令,因此,共需要兩條微指令來執行,前條執行本條指令的功能,后條為“取指微指令”。即:
001,0111,1110,1000,1110,0011,1010,1101 17E8E3AE
001,1100,1110,1000,1101,0011,1010,0001 1CE8D3A1
1.3.2 時鐘發生選擇器及時鐘分頻器的設計
時鐘發生選擇器的存在是由于需要產生不同的波形,“實驗CPU”連續運行時是連續的方波,單步運行時是兩個脈沖,還需要產生持續的低電平用來暫停CPU。
時鐘分頻器的存在是由于ARM9實驗平臺上提供的時鐘較快,加入該時鐘分頻器保證了在每次內存操作完成之后,實驗CPU才進入下半個時鐘周期。本系統中分頻倍率為16777216倍,可以將60MHz的晶振頻率降到0.25-0.5Hz。
為了利用可重構技術及可編程資源在物理上實現“實驗CPU”,需要將實驗CPU系統進行VHDL(Very high speed integrated circuit Hardware Description Language,VHDL)描述,形成可綜合的代碼[4]。
例如,微程序控制器模塊功能的部分VHDL描述如下[5]:
--MCLK,MPCK,MICK
process(CLK,RESET,RUN)
begin
if(RESET='0')then MCLK<='0';
elsif falling_edge(CLK)then
if(RUN='1')then MCLK<=not MCLK;
end if;
end if;
end process;
--MCLR
process(MCLK,RESET)
begin
if(RESET='0')then MCLR<='0';
elsif rising_edge(MCLK)then MCLR<='1';
end if;
end process;
本開發中所用的綜合工具為Synplicity,它是VHDL/VerilogHDL綜合軟件,生成“.edf”文件后可調入任何PLD開發平臺進行布線、仿真和下載。
將經過綜合而生成網表文件cpu_32.edf文件,下載到目標板的可編程資源FPGA中,從而構成可重構的“實驗CPU”。
論文涉及的雙CPU監控系統,兩個處理器內核均可正常運行指令、執行任務;利用ARM9實驗板平臺的ARMCPU來監視用“實驗CPU”的工作情況,并模擬實驗CPU的內存,以實現機器碼運行;通過串行口發送的指令來完成單步、運行、停止、實驗CPU指令文件傳送、實驗CPU內存修改、內存察看等工作。本系統利用一個已知的CPU來監控可重構的另一CPU,研究雙CPU監控系統,嘗試對新的體系結構的研究。
為了實現數據監控,例如地址線、微指令地址線、數據線的工作狀態,及微指令數據線數值的讀取,需要在對應的輸出部件連上了狀態寄存器(狀態口),從而在程序設計中提供了查看接口;而對于“實驗CPU”的“運行”與“重啟”接口,進行了接上命令寄存器(控制口)的連接,從而可以控制“實驗CPU”的運行與初始化。
雙CPU監控系統的工作內容可以分為兩部分。一部分是初始化工作,其中涉及到中斷服務程序的初始化、對通信口的初始化,對模擬內存的初始化等工作;另一部分是狀態機,主要由4種不同的大狀態組成,分別是:STOP(START),RUNNING,STEP,COM。狀態之間的關系,如圖4所示:

圖4 雙CPU監控系統的工作狀態轉換
(1)START狀態下,32位“實驗CPU”未處于運行狀態。因此相關的狀態是設置CPU的“重啟”及“運行”均為無效狀態(低電平0)。
(2)RUNNING(連續運行)狀態下,32位“實驗CPU”全速運行,CPU的“重啟”及運行均處于有效狀態。時鐘發生選擇器需要產生連續的方波。系統還特別設置了直接進入STOP(START)狀態的快捷鍵。
(3)STEP(單步運行)狀態下,32位“實驗CPU”單步運行,時鐘發生選擇器產生兩個脈沖。之后每按一次“單步運行”快捷鍵T,“實驗CPU“完成一個工作周期,并打印出幾個監控接口的觀察值。在STEP中的工作狀態,如圖5所示:

圖5 系統進入STEP模式
(4)COM狀態下,將有3個功能菜單可供選擇:0選擇文件(機器指令文件,即S19文件)傳輸,1、選擇模擬內存修改,2、選擇模擬內存察看,3、選擇退回到執行(START)模式。在這個狀態下,文件傳輸就是將機器指令文件通過串行口傳至ARM CPU,解碼后放在指定內存地址中,然后可以退回到執行模式下運行即可;內存察看的方法是,選擇2即可輸入地址,按回車可以查看;內存修改則輸入地址和需要修改的內容即可。如圖6所示:

圖6 COM模式下內存查看
通過上述分析,可以看出雙CPU監控系統具有以下特點:
(1)該系統在工作時能夠正常穩定的運行指令和執行任務,可實現處理器資源的并行處理,提高處理器的實時工作性能。
(2)在工作時,ARM-CPU能夠監視“實驗CPU”的工作狀態,提高實驗CPU工作的穩定性。
(3)本系統采用可重構資源實現,實現硬件系統的軟件化,便于系統升級。
本系統的另一特點是,32位的“實驗CPU”具有較快的系統時鐘,大約僅需要0.01秒即可完成一個周期,有較高的工作效率,并引入了鍵盤作為外設,進行內存與外設的交互。
為了節省可重構的資源,也采用了模擬內存的方式,但結果顯示,速度立刻會下降。這是因為內存是模擬的,因此很多操作就會占用時間。以內存讀取為例,首先,由于地址是通過放在內存中的一個變量實現的,對其讀取意味著是對內存操作;其次,要讀取指定地址的模擬內存的值,這又需要一次內存操作;最后將結果放置于數據總線DBin上,這也是一次內存操作。綜合多方面的因素,大約需要4秒鐘才能完成一個工作周期。
本文論述采用可重構技術,利用實驗平臺的可編程資源,設計出簡單靈活的微處理器系統,該微處理器擁有指令集和控制單元,能夠正確執行所有指令;并利用該平臺上的另一處理器ARM-CPU,可與已有的微處理器構成雙CPU監控系統,從而獲得更高可靠性和實用性系統。并可以根據根據需要添加適當的外部設備,如在擴展實驗中,本研究還將外部的模擬信號引入并進行數模轉換,再對得到的數字信號分析處理。
[1]章鳴嬛.基于可重構技術的雙核微處理器系統的設計[J].微型電腦應用,2011,27(7):12-14.
[2]徐佳慶,鄔貴明,竇勇.二維DCT在粗粒度可重構處理器上的實現[J].計算機工程,2008,34(20):257.
[3]徐允文,蔡敏.基于微程序技術的存儲控制器的研究和設計[J].半導體技術,2007,32(11):997.
[4]黃潔.可編程邏輯器件及其應用前景[J].中國科技信息,2005,13:38.
[5]陳耀和.VHDL語言設計技術[M].北京:電子工業出版社,2004:7-8.