官术网_书友最值得收藏!

2.3 ARC EM處理器結構

ARC EM的設計采取了在保證面積小的前提下最大可能地提高性能的結構,其處理器結構非常精簡,使得ARC EM的內核非常小,器件的功耗也隨之降低。

本節主要介紹ARC EM微處理器的接口信號、內核結構、存儲系統、存儲保護機制以及調試。

2.3.1 接口信號

ARC EM處理器的接口信號主要有:時鐘與復位信號、總線接口、中斷接口、測試和調試接口、Halt&Run控制接口、代碼保護Code Protect以及Actionpoint接口信號。

下面主要介紹總線接口、中斷接口和測試/調試接口,其他接口以及相關接口的具體信號描述可參考文獻9。

1.總線接口

ARC EM系列微處理器使用標準協議的總線接口,具體如圖2-3所示。

圖2-3 ARC EM的總線接口信號示意圖

圖2-3表明了ARC EM的總線接口信號,主要包括DMP存儲器接口單元、IFQ/Instr Cache指令總線接口單元、DATACache數據總線接口單元以及APEX擴展總線接口單元、ICCM和DCCM直接存儲器接口(Direct Memory Interface,DMI)。對于這些接口信號,ARC EM提供了基于AHB/AHB-Lite和BVCI總線接口信號。

對于主端接口,具體可配置的類型如下。

1)AHB總線接口:ARC EM處理器支持配置兩個AHB主端接口,一個用于處理指令訪存,另一個用于處理數據訪存(Load/Store)。

2)AHB_Lite single接口:處理器可配置成單一的AHB_Lite主端接口,用于處理指令和數據訪存操作。

3)AHB_Lite dual接口:處理器可配置成兩個獨立的AHB_Lite主端接口,一個用于處理指令訪存,一個用于處理數據訪存。

4)BVCI接口:處理器可配置成兩個獨立的BVCI主端接口,一個用于處理指令訪存,一個用于處理數據訪存。

對于從端接口,即ICCM和DCCM的DMI接口,支持可配置成AHB_Lite或者BVCI總線類型。

2.中斷接口

ARC EM處理器內核可以配置多達240個外部中斷。外部中斷的引腳名稱反映了每個中斷的向量號,范圍從16到255。當配置了內部計時器后,中斷16和17會保留為內部計時器。在這種情況下,對應的中斷信號不顯示為外部中斷輸入。

3.測試和調試接口

ARC EM提供的測試接口符合IEEE 1149.1-2001 JTAG規范。此接口也可以使用2線JTAG IEEE 1149.7系統測試邏輯(STL)規范。4線JTAG接口可以通過使用IEEE 1149.7分接控制器轉換成雙線JTAG。4線JTAG接口信號如表2-2所示。除了可以通過JTAG串行接口進行調試,還支持通過BVCI調試接口進行高速調試。

表2-2 JTAG接口

2.3.2 內核結構

ARC EM采用三級流水線,可以有效地減少每個指令花費的平均周期數。從結構圖2-4可以看出,EM的三級流水線結構依次為:取指級FA、執行級XA、完成級CA。其每一級的功能描述如下。

1.FA:Fetch,Decode 1取指

Fetch(FA)階段的作用是獲取并對齊最多32位的指令,并送往執行(XA)級。指令的來源主要有以下幾種:

(1)ICCM

包含單周期訪問的ICCM0和雙周期訪問的ICCM1。

(2)IFQ/ICACHE

兩者都可從外存獲取指令。IFQ是一個取指隊列,可以配置隊列深度和總線突發訪問長度。

(3)Debug unit

用來注入debugger指令,支持debugger訪問處理器資源。

(4)Micro-Code Sequencer(Code Density option)

用來發射需要由多條微指令完成的復雜指令和操作。

圖2-4 ARC EM內核結構框圖

此外,FA級還負責執行分支并選取下一個時鐘的取指P C地址。為了支持可變長度指令執行,FA級需要預解碼出當前取出的指令長度,并緩沖最多1 6位的當前取出的數據。如果寄存器文件是由后端工具Memory Compiler生成的宏單元,FA還需要解碼出寄存器的讀地址編號。

2.XA:Decode 2,Execute譯碼和執行

這一部分的主要功能如下:

㊣ 執行指令解碼操作的其余部分。

㊣ 讀取寄存器組并獲取操作數。

㊣ 對可用功能單元發射指令。

㊣ 計算每條指令的結果。

這一級用以確定指令是否可以派遣到功能單元并開始執行。需要等待功能單元的可用性(結構冒險)和所需的數據是否可用(數據冒險RAW,WAW)。如果當前指令存在冒險,指令將會被延遲并在下個時鐘繼續調度。

一旦分支指令的結果已知,則分支單元可以決定是否重新啟動該流水線。

“延遲槽”用以在指令轉移到目標分支的位置之前,指示成功執行分支或跳轉指令。

3.CA:Memory,Writeback存儲器訪問和回寫寄存器

1)用來更新機器狀態。

2)用來捕獲從所有流水線返回的數據并將其寫入寄存器文件。

3)用以訪問輔助地址空間狀態并處理異常事件(異常和中斷)。

4)訪問CCM、Dcache和外部數據/外設總線。

ARC EM處理器還采用了動態流水線發射技術。主流水線與其他流水線可同時運行不同的指令,處理器能動態管理流水線資源。

如圖2-5所示為ARC EM的不同流水線結構。可以看出,處理器中除主流水線(Core pipeline)以外還存在訪存流水線(DMP)、可配置的變長乘法流水線、APEX流水線以及除法流水線等。

圖2-5 ARC EM流水線結構

如果一條指令經過CA級,則稱為指令完成。完成的指令必將立即或者在后續某個時間點更新處理器狀態。如果指令完成但仍需要繼續執行,則只將PC等必要的處理器狀態更新,其他處理器狀態暫時不更新。指令在相應的流水線繼續運行,直到執行結果回寫寄存器文件和標志寄存器等處理器狀態,稱之為指令結束。如果已經完成但未結束的指令與當前XA待發射的指令存在讀或寫等數據相關性,指令調度就會暫停。

動態指令執行在一定程度上允許亂序,并能確保流水線進程的正確運行,從而提升了處理器性能。

2.3.3 存儲系統

存儲系統由多種存儲器組件組合而成,其中每個組件均可根據動態存儲器映射的需求進行配置。ARC EM處理器的存儲器空間被分為16個相等的部分,如圖2-6所示。存儲器地址的高4位用來編碼(區分)每個區域。存儲器區域主要用于映射不同類型的存儲器。

ARC EM處理器包含以下可用存儲組件:

CCMs緊耦合存儲器、ICCM 指令緊耦合存儲器(ICCM0、ICCM1)、DCCM數據緊耦合存儲器

IFQ指令預取緩沖

DMI數據存儲啟動器

外設數據總線

Cache高速緩存:指令緩存(IC)、數據緩存DC

如圖2-7所示為對存儲組件的取址訪問。通過BVCI/AHB總線訪問IFQ、IC和ICCM內部的指令。

如圖2-8所示為對存儲組件內部的數據操作。通過BVCI/AHB/AHB-lite總線對DC和DCCM內部的數據進行讀、寫操作。

下面詳細介紹CCM緊耦合存儲器、IFQ指令預取緩沖以及DMI數據存儲器等主要存儲組件。

1.CCM緊耦合存儲器

ARC EM處理器支持兩種類型的CCM:指令緊耦合存儲器(ICCM0,ICCM1)及數據緊耦合存儲器(數據通路DCCM)。ICCM和DCCM是根據應用可選擇進行配置的,CCM可以與其他的存儲器組件(如取指隊列和DMI)共存。

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

圖2-7 指令訪問通道

圖2-8 數據訪問通道

EM處理器和其他功能模塊均可直接訪問CCM模塊。作為處理器內核私有的局部存儲器,處理器對CCM訪問不產生任何總線通信,其訪問時間是確定的,可大大提高性能并保證實時性;并且,對CCM進行操作,比操作外部總線上的存儲器或高速緩存的功耗低。CCM可用于鎖定對性能較關鍵的代碼或數據。這非常合適于關鍵的系統級程序(如中斷處理和其他對時間敏感的任務)。

與高速緩存不同,ICCM和DCCM需要啟動代碼,以編程方式進行初始化。每種類型CCM都分配有與之對應的4位基地址輔助寄存器,CCM映射的存儲器空間區域由基地址輔助寄存器指定。其中ICCM只能被分配在0~7區域,DCCM只能被分配在8~15區域。一個CCM將占據整個存儲區域空間,在32位地址的情況下,區域大小為256MB。當CCM的容量小于區域大小時,CCM的內容將重復并填充整個256MB區域。

ARC EM處理器允許系統中的其他主端設備通過一個標準的目標接口(BVCI或AHB-Lite)訪問其CCMs,如圖2-9所示。

ICCM和DCCM都支持。

所有CCM提供單個端目標總線接口,處理外部訪問具有最高優先級。

接下來具體介紹ICCMs和DCCM。

(1)ICCM特性

ARC EM處理器有ICCM0和ICCM1,如圖2-10所示。ICCM具有以下特點:

1)ICCM可以用于指令訪問以及加載/存儲數據。

2)ICCM0的工作頻率與處理器內核頻率一致,在發出請求的下個時鐘周期返回數據。

3)ICCM1的工作頻率為處理器內核時鐘的二分頻,在發出請求的兩個時鐘周期之后返回數據。ICCM1可以利用雙組(Bank)存儲器來彌補緩慢的訪問時間。

圖2-9 CCMs目標端口

圖2-10 ICCM

4)ICCM1可以與IFQ指令預取緩沖配合使用。此時,從ICCM1中讀取的指令將緩存到IFQ中。

5)ICCM支持通過指令LD/ST訪問。

ICCM允許自修改代碼,但是過多使用這種方式將導致系統性能下降。

(2)DCCM特性

ARC EM處理器可通過加載/存儲訪問DCCM存儲器。DCCM的工作頻率與處理器內核頻率一致,在一個時鐘發出請求之后可返回數據。DCCM可以單獨使用,也可與一個數據緩存或數據存儲器主端接口同時使用。

2.IFQ指令預取緩沖

IFQ是一個可選組件,可通過外部總線的突發模式預取即將執行的指令。IFQ可作為一個低成本的替代指令緩存。IFQ支持的配置選項包括隊列大小選項(1、2、4、8或16個32位)和突發長度大小(1、2、4或8個32位)。突發長度大小不能超過隊列大小。IFQ的結構如圖2-11所示。

3.DMI數據存儲啟動器

DMI(Data Memory Initiator)主端接口是一個可選組件,在沒有數據高速緩存的配置下,可以容許處理非突發式外部總線請求。

4.外設數據總線

外設數據總線是一個可選組件,允許處理器內核使用專用的總線連接外設。運行期間可通過AUX_DMP_PER輔助寄存器更改映射的地址范圍。

5.Cache高速緩存

ARC EM處理器支持可選擇配置數據和指令高速緩存。

圖2-11 IFQ結構

ARC EM處理器的存儲器訪問指令提供數據Cache使能和直通(direct)操作:存儲器訪問指令后綴為.di(ld.di和st.di)將在進行相應的Load/Store操作時旁通數據Cache。另外,ARC EM處理器的數據Cache,通過設置數據緩存訪問寄存器DC_DATA、數據緩存控制寄存器DC_CTRL等,還能提供高級調試功能,允許程序員對相應數據Cache RAM里的數據內容進行查看和修改。

具體設置操作見參考文獻9的第5章。

2.3.4 存儲保護機制

ARC EM處理器的存儲器保護單元(MPU)為各個存儲器組件提供了保護。通過指定基地址和大小,將地址空間劃分成關聯特定屬性的區域(例如讀、寫和執行),如果試圖訪問某區域,但是其關聯的屬性并不允許該訪問,則ARC EM處理器將產生保護沖突異常,并執行對應的異常處理程序。注意,MPU區域和16個存儲器映射區域有本質的區別。MPU區域可通過編程對每個區域的基地址和大小動態調整,數量也可以配置,而儲存器映射區域為固定的16個等分。

ARC EM系列處理器為用戶模式和內核模式提供獨立的讀、寫和執行權限。存儲器保護使得操作系統能夠保護其代碼不受非法或意外訪問進程的數據的影響。用戶還可以定義默認內核和用戶訪問權限之外的所有存儲器區域的權限。多個MPU區域允許重疊并且根據區域編號,優先采用編號較小的區域中的屬性。

ARC EM處理器的存儲器保護單元關鍵特性如下:

支持對特定存儲器區域代碼屬性編程,如允許或禁止執行該區域代碼。

支持對特定存儲器區域數據的讀寫屬性編程。

單獨的內核和用戶模式的讀、寫和執行權限。

可配置1、2、4、8或16個存儲器區域。

各區域可以單獨或獨立編程。

能夠設置默認權限,它適用于在所有編程保護以外區域訪問。

例如,連續區域如圖2-12所示。

圖2-12 保護單元存儲分布

在這個例子中,存儲空間具有以下特點:

1)存儲器的0到2GB部分區域是用戶可執行區域。

2)接下來的2GB到3GB區域是用戶的讀、寫操作區。

3)3GB到4GB部分為用戶的外設讀、寫操作區。

2.3.5 調試

ARC EM處理器擁有豐富的調試接口以方便用戶開發調試,包括:JTAG、Actionpoints、SmaRT。主機處理器可以通過使用特殊的調試功能來控制EM處理器。調試功能確保主機執行以下操作:

通過狀態和調試寄存器啟動和停止處理器。

通過控制寄存器單步調試處理器。

查看和修改寄存器文件和存儲器中的值。

通過讀取追蹤堆棧中的數據,分析代碼執行。

通過使用BRK指令設置軟件斷點。

有了這些功能,主機可以提供軟件斷點、單步執行和程序的跟蹤處理器。處理器也可以停止自己與標志指示。

1.標準JTAG接口

ARC EM處理器提供標準的4線JTAG調試接口,通過它將MetaWare調試器與用戶應用程序連接,進行調試。

2.2線JTAG接口

另外,ARC EM處理器還提供兩線JTAG調試接口,如圖2-13所示。這是一個額外的模塊,可用來調試主機和現有的5線JTAG端口之間的連接。

圖2-13 2線JTAG

3.Actionpoints

ARC EM系列處理器提供可選的斷點調試系統Actionpoints。

Actionpoints支持斷點和觀察點。在執行特定的一條或一系列指令時,將會觸發斷點調試。當檢測到特定執行地址或數據訪問的存儲器地址值、輔助寄存器讀(LR)和寫(SR)時,以及特定的數據值讀寫到存儲器或者輔助寄存器時,將會觸發觀察點。斷點和檢查點都可以被編程。某些Actionpoints在觸發指令完成之前生效,而有的則在觸發指令完成后生效。所有斷點寄存器只能在內核模式下進行操作;在用戶模式下訪問這些寄存器時會引發權限沖突異常。

注意Actionpoints和軟件斷點的區別。軟件斷點一般是將某個地址的指令替換成BRK指令,當處理器執行到BRK指令時,進入暫停狀態以供調試器訪問。Actionpoints是一個硬件邏輯,其斷點和觀察點數量都是有限的,并取決于處理器配置。并且Actionpoints觸發條件不限于執行的PC地址一種。

4.SmaRT

ARC EM系列處理器還提供可選的小型實時跟蹤模塊(SmaRT)。

小型實時跟蹤(SmaRT)是一個可選片上調試硬件組件,進行指令跟蹤。智能存儲最近的、非順序執行的指令的地址。MetaWare確保SmaRT調試器的使用,并且顯示指令跟蹤的歷史記錄。當處理器停止時,MetaWare調試器通過JTAG端口讀取指令跟蹤信息并保存。

小型實時跟蹤結構如圖2-14所示。其特征如下:

用不同的堆棧大小(從8到4096)記錄程序流的變化。

任何非順序執行的指令都將被存儲,包括直接跳轉、分支跳轉、中斷和異常以及循環。多個分支到相同的位置(內環)存儲為單個條目,以最大化堆棧的使用。

節能功能包括關閉模塊時鐘和當不在跟蹤模式時清空所有的信號輸入。MetaWare調試器顯示跟蹤信息,不需要單獨的專用跟蹤端口。

圖2-14 SmaRT結構

主站蜘蛛池模板: 松阳县| 合山市| 易门县| 乐都县| 溆浦县| 和平区| 即墨市| 呼和浩特市| 韩城市| 咸阳市| 巴林左旗| 卢龙县| 康平县| 大港区| 商水县| 江都市| 郎溪县| 齐河县| 石林| 两当县| 昆明市| 玛纳斯县| 启东市| 监利县| 苏州市| 灵丘县| 南陵县| 阿拉善盟| 剑河县| 赣榆县| 札达县| 阳山县| 中西区| 海安县| 黄梅县| 垫江县| 凌云县| 习水县| 娄底市| 新晃| 静海县|