- ARC EM處理器嵌入式系統(tǒng)開發(fā)與編程
- 雷鑑銘 鄭朝霞 吳丹 程松波
- 724字
- 2018-12-31 21:24:01
2.3 ARC EM處理器結構
ARC EM的設計采取了在保證面積小的前提下最大可能地提高性能的結構,其處理器結構非常精簡,使得ARC EM的內核非常小,器件的功耗也隨之降低。
本節(jié)主要介紹ARC EM微處理器的接口信號、內核結構、存儲系統(tǒng)、存儲保護機制以及調試。
2.3.1 接口信號
ARC EM處理器的接口信號主要有:時鐘與復位信號、總線接口、中斷接口、測試和調試接口、Halt&Run控制接口、代碼保護Code Protect以及Actionpoint接口信號。
下面主要介紹總線接口、中斷接口和測試/調試接口,其他接口以及相關接口的具體信號描述可參考文獻9。
1.總線接口
ARC EM系列微處理器使用標準協(xié)議的總線接口,具體如圖2-3所示。

圖2-3 ARC EM的總線接口信號示意圖
圖2-3表明了ARC EM的總線接口信號,主要包括DMP存儲器接口單元、IFQ/Instr Cache指令總線接口單元、DATACache數(shù)據(jù)總線接口單元以及APEX擴展總線接口單元、ICCM和DCCM直接存儲器接口(Direct Memory Interface,DMI)。對于這些接口信號,ARC EM提供了基于AHB/AHB-Lite和BVCI總線接口信號。
對于主端接口,具體可配置的類型如下。
1)AHB總線接口:ARC EM處理器支持配置兩個AHB主端接口,一個用于處理指令訪存,另一個用于處理數(shù)據(jù)訪存(Load/Store)。
2)AHB_Lite single接口:處理器可配置成單一的AHB_Lite主端接口,用于處理指令和數(shù)據(jù)訪存操作。
3)AHB_Lite dual接口:處理器可配置成兩個獨立的AHB_Lite主端接口,一個用于處理指令訪存,一個用于處理數(shù)據(jù)訪存。
4)BVCI接口:處理器可配置成兩個獨立的BVCI主端接口,一個用于處理指令訪存,一個用于處理數(shù)據(jù)訪存。
對于從端接口,即ICCM和DCCM的DMI接口,支持可配置成AHB_Lite或者BVCI總線類型。
2.中斷接口
ARC EM處理器內核可以配置多達240個外部中斷。外部中斷的引腳名稱反映了每個中斷的向量號,范圍從16到255。當配置了內部計時器后,中斷16和17會保留為內部計時器。在這種情況下,對應的中斷信號不顯示為外部中斷輸入。
3.測試和調試接口
ARC EM提供的測試接口符合IEEE 1149.1-2001 JTAG規(guī)范。此接口也可以使用2線JTAG IEEE 1149.7系統(tǒng)測試邏輯(STL)規(guī)范。4線JTAG接口可以通過使用IEEE 1149.7分接控制器轉換成雙線JTAG。4線JTAG接口信號如表2-2所示。除了可以通過JTAG串行接口進行調試,還支持通過BVCI調試接口進行高速調試。
表2-2 JTAG接口

2.3.2 內核結構
ARC EM采用三級流水線,可以有效地減少每個指令花費的平均周期數(shù)。從結構圖2-4可以看出,EM的三級流水線結構依次為:取指級FA、執(zhí)行級XA、完成級CA。其每一級的功能描述如下。
1.FA:Fetch,Decode 1取指
Fetch(FA)階段的作用是獲取并對齊最多32位的指令,并送往執(zhí)行(XA)級。指令的來源主要有以下幾種:
(1)ICCM
包含單周期訪問的ICCM0和雙周期訪問的ICCM1。
(2)IFQ/ICACHE
兩者都可從外存獲取指令。IFQ是一個取指隊列,可以配置隊列深度和總線突發(fā)訪問長度。
(3)Debug unit
用來注入debugger指令,支持debugger訪問處理器資源。
(4)Micro-Code Sequencer(Code Density option)
用來發(fā)射需要由多條微指令完成的復雜指令和操作。

圖2-4 ARC EM內核結構框圖
此外,F(xiàn)A級還負責執(zhí)行分支并選取下一個時鐘的取指P C地址。為了支持可變長度指令執(zhí)行,F(xiàn)A級需要預解碼出當前取出的指令長度,并緩沖最多1 6位的當前取出的數(shù)據(jù)。如果寄存器文件是由后端工具Memory Compiler生成的宏單元,F(xiàn)A還需要解碼出寄存器的讀地址編號。
2.XA:Decode 2,Execute譯碼和執(zhí)行
這一部分的主要功能如下:
㊣ 執(zhí)行指令解碼操作的其余部分。
㊣ 讀取寄存器組并獲取操作數(shù)。
㊣ 對可用功能單元發(fā)射指令。
㊣ 計算每條指令的結果。
這一級用以確定指令是否可以派遣到功能單元并開始執(zhí)行。需要等待功能單元的可用性(結構冒險)和所需的數(shù)據(jù)是否可用(數(shù)據(jù)冒險RAW,WAW)。如果當前指令存在冒險,指令將會被延遲并在下個時鐘繼續(xù)調度。
一旦分支指令的結果已知,則分支單元可以決定是否重新啟動該流水線。
“延遲槽”用以在指令轉移到目標分支的位置之前,指示成功執(zhí)行分支或跳轉指令。
3.CA:Memory,Writeback存儲器訪問和回寫寄存器
1)用來更新機器狀態(tài)。
2)用來捕獲從所有流水線返回的數(shù)據(jù)并將其寫入寄存器文件。
3)用以訪問輔助地址空間狀態(tài)并處理異常事件(異常和中斷)。
4)訪問CCM、Dcache和外部數(shù)據(jù)/外設總線。
ARC EM處理器還采用了動態(tài)流水線發(fā)射技術。主流水線與其他流水線可同時運行不同的指令,處理器能動態(tài)管理流水線資源。
如圖2-5所示為ARC EM的不同流水線結構。可以看出,處理器中除主流水線(Core pipeline)以外還存在訪存流水線(DMP)、可配置的變長乘法流水線、APEX流水線以及除法流水線等。

圖2-5 ARC EM流水線結構
如果一條指令經(jīng)過CA級,則稱為指令完成。完成的指令必將立即或者在后續(xù)某個時間點更新處理器狀態(tài)。如果指令完成但仍需要繼續(xù)執(zhí)行,則只將PC等必要的處理器狀態(tài)更新,其他處理器狀態(tài)暫時不更新。指令在相應的流水線繼續(xù)運行,直到執(zhí)行結果回寫寄存器文件和標志寄存器等處理器狀態(tài),稱之為指令結束。如果已經(jīng)完成但未結束的指令與當前XA待發(fā)射的指令存在讀或寫等數(shù)據(jù)相關性,指令調度就會暫停。
動態(tài)指令執(zhí)行在一定程度上允許亂序,并能確保流水線進程的正確運行,從而提升了處理器性能。
2.3.3 存儲系統(tǒng)
存儲系統(tǒng)由多種存儲器組件組合而成,其中每個組件均可根據(jù)動態(tài)存儲器映射的需求進行配置。ARC EM處理器的存儲器空間被分為16個相等的部分,如圖2-6所示。存儲器地址的高4位用來編碼(區(qū)分)每個區(qū)域。存儲器區(qū)域主要用于映射不同類型的存儲器。
ARC EM處理器包含以下可用存儲組件:
CCMs緊耦合存儲器、ICCM 指令緊耦合存儲器(ICCM0、ICCM1)、DCCM數(shù)據(jù)緊耦合存儲器
IFQ指令預取緩沖
DMI數(shù)據(jù)存儲啟動器
外設數(shù)據(jù)總線
Cache高速緩存:指令緩存(IC)、數(shù)據(jù)緩存DC
如圖2-7所示為對存儲組件的取址訪問。通過BVCI/AHB總線訪問IFQ、IC和ICCM內部的指令。
如圖2-8所示為對存儲組件內部的數(shù)據(jù)操作。通過BVCI/AHB/AHB-lite總線對DC和DCCM內部的數(shù)據(jù)進行讀、寫操作。
下面詳細介紹CCM緊耦合存儲器、IFQ指令預取緩沖以及DMI數(shù)據(jù)存儲器等主要存儲組件。
1.CCM緊耦合存儲器
ARC EM處理器支持兩種類型的CCM:指令緊耦合存儲器(ICCM0,ICCM1)及數(shù)據(jù)緊耦合存儲器(數(shù)據(jù)通路DCCM)。ICCM和DCCM是根據(jù)應用可選擇進行配置的,CCM可以與其他的存儲器組件(如取指隊列和DMI)共存。

圖2-6 ARC EM存儲器空間劃分

圖2-7 指令訪問通道

圖2-8 數(shù)據(jù)訪問通道
EM處理器和其他功能模塊均可直接訪問CCM模塊。作為處理器內核私有的局部存儲器,處理器對CCM訪問不產生任何總線通信,其訪問時間是確定的,可大大提高性能并保證實時性;并且,對CCM進行操作,比操作外部總線上的存儲器或高速緩存的功耗低。CCM可用于鎖定對性能較關鍵的代碼或數(shù)據(jù)。這非常合適于關鍵的系統(tǒng)級程序(如中斷處理和其他對時間敏感的任務)。
與高速緩存不同,ICCM和DCCM需要啟動代碼,以編程方式進行初始化。每種類型CCM都分配有與之對應的4位基地址輔助寄存器,CCM映射的存儲器空間區(qū)域由基地址輔助寄存器指定。其中ICCM只能被分配在0~7區(qū)域,DCCM只能被分配在8~15區(qū)域。一個CCM將占據(jù)整個存儲區(qū)域空間,在32位地址的情況下,區(qū)域大小為256MB。當CCM的容量小于區(qū)域大小時,CCM的內容將重復并填充整個256MB區(qū)域。
ARC EM處理器允許系統(tǒng)中的其他主端設備通過一個標準的目標接口(BVCI或AHB-Lite)訪問其CCMs,如圖2-9所示。
ICCM和DCCM都支持。
所有CCM提供單個端目標總線接口,處理外部訪問具有最高優(yōu)先級。
接下來具體介紹ICCMs和DCCM。
(1)ICCM特性
ARC EM處理器有ICCM0和ICCM1,如圖2-10所示。ICCM具有以下特點:
1)ICCM可以用于指令訪問以及加載/存儲數(shù)據(jù)。
2)ICCM0的工作頻率與處理器內核頻率一致,在發(fā)出請求的下個時鐘周期返回數(shù)據(jù)。
3)ICCM1的工作頻率為處理器內核時鐘的二分頻,在發(fā)出請求的兩個時鐘周期之后返回數(shù)據(jù)。ICCM1可以利用雙組(Bank)存儲器來彌補緩慢的訪問時間。

圖2-9 CCMs目標端口

圖2-10 ICCM
4)ICCM1可以與IFQ指令預取緩沖配合使用。此時,從ICCM1中讀取的指令將緩存到IFQ中。
5)ICCM支持通過指令LD/ST訪問。
ICCM允許自修改代碼,但是過多使用這種方式將導致系統(tǒng)性能下降。
(2)DCCM特性
ARC EM處理器可通過加載/存儲訪問DCCM存儲器。DCCM的工作頻率與處理器內核頻率一致,在一個時鐘發(fā)出請求之后可返回數(shù)據(jù)。DCCM可以單獨使用,也可與一個數(shù)據(jù)緩存或數(shù)據(jù)存儲器主端接口同時使用。
2.IFQ指令預取緩沖
IFQ是一個可選組件,可通過外部總線的突發(fā)模式預取即將執(zhí)行的指令。IFQ可作為一個低成本的替代指令緩存。IFQ支持的配置選項包括隊列大小選項(1、2、4、8或16個32位)和突發(fā)長度大?。?、2、4或8個32位)。突發(fā)長度大小不能超過隊列大小。IFQ的結構如圖2-11所示。
3.DMI數(shù)據(jù)存儲啟動器
DMI(Data Memory Initiator)主端接口是一個可選組件,在沒有數(shù)據(jù)高速緩存的配置下,可以容許處理非突發(fā)式外部總線請求。
4.外設數(shù)據(jù)總線
外設數(shù)據(jù)總線是一個可選組件,允許處理器內核使用專用的總線連接外設。運行期間可通過AUX_DMP_PER輔助寄存器更改映射的地址范圍。
5.Cache高速緩存
ARC EM處理器支持可選擇配置數(shù)據(jù)和指令高速緩存。

圖2-11 IFQ結構
ARC EM處理器的存儲器訪問指令提供數(shù)據(jù)Cache使能和直通(direct)操作:存儲器訪問指令后綴為.di(ld.di和st.di)將在進行相應的Load/Store操作時旁通數(shù)據(jù)Cache。另外,ARC EM處理器的數(shù)據(jù)Cache,通過設置數(shù)據(jù)緩存訪問寄存器DC_DATA、數(shù)據(jù)緩存控制寄存器DC_CTRL等,還能提供高級調試功能,允許程序員對相應數(shù)據(jù)Cache RAM里的數(shù)據(jù)內容進行查看和修改。
具體設置操作見參考文獻9的第5章。
2.3.4 存儲保護機制
ARC EM處理器的存儲器保護單元(MPU)為各個存儲器組件提供了保護。通過指定基地址和大小,將地址空間劃分成關聯(lián)特定屬性的區(qū)域(例如讀、寫和執(zhí)行),如果試圖訪問某區(qū)域,但是其關聯(lián)的屬性并不允許該訪問,則ARC EM處理器將產生保護沖突異常,并執(zhí)行對應的異常處理程序。注意,MPU區(qū)域和16個存儲器映射區(qū)域有本質的區(qū)別。MPU區(qū)域可通過編程對每個區(qū)域的基地址和大小動態(tài)調整,數(shù)量也可以配置,而儲存器映射區(qū)域為固定的16個等分。
ARC EM系列處理器為用戶模式和內核模式提供獨立的讀、寫和執(zhí)行權限。存儲器保護使得操作系統(tǒng)能夠保護其代碼不受非法或意外訪問進程的數(shù)據(jù)的影響。用戶還可以定義默認內核和用戶訪問權限之外的所有存儲器區(qū)域的權限。多個MPU區(qū)域允許重疊并且根據(jù)區(qū)域編號,優(yōu)先采用編號較小的區(qū)域中的屬性。
ARC EM處理器的存儲器保護單元關鍵特性如下:
支持對特定存儲器區(qū)域代碼屬性編程,如允許或禁止執(zhí)行該區(qū)域代碼。
支持對特定存儲器區(qū)域數(shù)據(jù)的讀寫屬性編程。
單獨的內核和用戶模式的讀、寫和執(zhí)行權限。
可配置1、2、4、8或16個存儲器區(qū)域。
各區(qū)域可以單獨或獨立編程。
能夠設置默認權限,它適用于在所有編程保護以外區(qū)域訪問。
例如,連續(xù)區(qū)域如圖2-12所示。

圖2-12 保護單元存儲分布
在這個例子中,存儲空間具有以下特點:
1)存儲器的0到2GB部分區(qū)域是用戶可執(zhí)行區(qū)域。
2)接下來的2GB到3GB區(qū)域是用戶的讀、寫操作區(qū)。
3)3GB到4GB部分為用戶的外設讀、寫操作區(qū)。
2.3.5 調試
ARC EM處理器擁有豐富的調試接口以方便用戶開發(fā)調試,包括:JTAG、Actionpoints、SmaRT。主機處理器可以通過使用特殊的調試功能來控制EM處理器。調試功能確保主機執(zhí)行以下操作:
通過狀態(tài)和調試寄存器啟動和停止處理器。
通過控制寄存器單步調試處理器。
查看和修改寄存器文件和存儲器中的值。
通過讀取追蹤堆棧中的數(shù)據(jù),分析代碼執(zhí)行。
通過使用BRK指令設置軟件斷點。
有了這些功能,主機可以提供軟件斷點、單步執(zhí)行和程序的跟蹤處理器。處理器也可以停止自己與標志指示。
1.標準JTAG接口
ARC EM處理器提供標準的4線JTAG調試接口,通過它將MetaWare調試器與用戶應用程序連接,進行調試。
2.2線JTAG接口
另外,ARC EM處理器還提供兩線JTAG調試接口,如圖2-13所示。這是一個額外的模塊,可用來調試主機和現(xiàn)有的5線JTAG端口之間的連接。

圖2-13 2線JTAG
3.Actionpoints
ARC EM系列處理器提供可選的斷點調試系統(tǒng)Actionpoints。
Actionpoints支持斷點和觀察點。在執(zhí)行特定的一條或一系列指令時,將會觸發(fā)斷點調試。當檢測到特定執(zhí)行地址或數(shù)據(jù)訪問的存儲器地址值、輔助寄存器讀(LR)和寫(SR)時,以及特定的數(shù)據(jù)值讀寫到存儲器或者輔助寄存器時,將會觸發(fā)觀察點。斷點和檢查點都可以被編程。某些Actionpoints在觸發(fā)指令完成之前生效,而有的則在觸發(fā)指令完成后生效。所有斷點寄存器只能在內核模式下進行操作;在用戶模式下訪問這些寄存器時會引發(fā)權限沖突異常。
注意Actionpoints和軟件斷點的區(qū)別。軟件斷點一般是將某個地址的指令替換成BRK指令,當處理器執(zhí)行到BRK指令時,進入暫停狀態(tài)以供調試器訪問。Actionpoints是一個硬件邏輯,其斷點和觀察點數(shù)量都是有限的,并取決于處理器配置。并且Actionpoints觸發(fā)條件不限于執(zhí)行的PC地址一種。
4.SmaRT
ARC EM系列處理器還提供可選的小型實時跟蹤模塊(SmaRT)。
小型實時跟蹤(SmaRT)是一個可選片上調試硬件組件,進行指令跟蹤。智能存儲最近的、非順序執(zhí)行的指令的地址。MetaWare確保SmaRT調試器的使用,并且顯示指令跟蹤的歷史記錄。當處理器停止時,MetaWare調試器通過JTAG端口讀取指令跟蹤信息并保存。
小型實時跟蹤結構如圖2-14所示。其特征如下:
用不同的堆棧大?。◤?到4096)記錄程序流的變化。
任何非順序執(zhí)行的指令都將被存儲,包括直接跳轉、分支跳轉、中斷和異常以及循環(huán)。多個分支到相同的位置(內環(huán))存儲為單個條目,以最大化堆棧的使用。
節(jié)能功能包括關閉模塊時鐘和當不在跟蹤模式時清空所有的信號輸入。MetaWare調試器顯示跟蹤信息,不需要單獨的專用跟蹤端口。

圖2-14 SmaRT結構