ARM7TDMI
是從最早實現了32位地址空間編程模式的ARM6核發展而來的,可穩定地在低於5V的電源電壓下可靠地工作。增加了64位乘法指令(帶M後綴)、支持片上調試(帶D後綴)、Thumb指令集(帶T後綴)和EmbeddedICE片上斷點和觀察點(帶I後綴)。ARM7TDMI是ARM公司最早為業界普遍認可且得到了廣泛套用的核,特別是在手機和PDA套用中。隨著ARM技術的發展,它已是目前最低端的ARM核。
ARM7TDMI處理器區別於其他ARM7處理器的一個重要特徵是其獨有的稱之為Thumb的架構策略。該策略為基本ARM架構的擴展,由36種基於標準32位ARM指令集、但重新採用16位寬度最佳化編碼的指令格式構成。由於Thumb指令的寬度只為ARM指令的一半,因此能獲得非常高的代碼密度。當Thumb指令被執行時,其16位的操作碼被處理器解碼為等效的32位標準ARM指令,然後ARM處理器核就如同執行32位的標準ARM指令一樣執行16位的Thumb指令。也即是Thumb架構為16位的系統提供了一條獲得32位性能的途徑。 ARM7TDMI核心既能執行32位的ARM指令集,又能執行16位的Thumb指令集,因此允許用戶以子程式段為單位,在同一個地址空間使用Thumb指令集和ARM指令集混合編程,採用這種方式,用戶可以在代碼大小和系統性能上進行權衡,從而為特定的套用系統找到一個最佳的編程解決方案。
1)4類分支指令用於控制程式的執行流程、指令的特權等級可在ARM代碼與Thumb代碼之間進行切換。
2)3類數據處理指令用於操作片上的ALU、桶型移位器和乘法器,以完成在31個32位的通用暫存器之間的高速數據處理。
3)3類載入/存儲指令用於控制在存儲器和暫存器之間的數據傳輸。一類為方便定址進行了最佳化,另一類用於快速的上下文切換,第三類用於數據交換。
4)3類協處理器指令用於控制外部的協處理器,這些指令以開放統一的方式擴展用於片外功能指令集。
幾乎所有的32位ARM指令都可以條件執行。
ARM7TDMI主要由三部分構成:調試部分、匯流排分割和ARM7TDMI的處理器核。
1.調試部分
調試部分這裡主要說明幾個信號的功能。
SCREG(scan chain register)[3:0]:確定當前掃描鏈的ID編號,即當前使用的是哪一條掃描鏈。
IR(TAP controller instruction register)[3:0]:表明載入到TAP控制器指令暫存器的當前指令。指令暫存器共有4位,在Capture-IR時裝入指令、在Shift-IR時作為TI和TO之間的串列通路、在Update-IR時指令暫存器的值成為當前指令。用於載入到TAP指令暫存器中的指令共10條,如表2.5所示。
表2.5 TAP指令
指 令 | 二進制代碼 | 功 能 |
EXTEST | 0000 | 使被選中的掃描鏈進入測試模式,用於內部部件測試 |
SCAN_N | 0010 | 在TDI和TDO之間連線掃描鏈路徑選擇暫存器 |
INTEST | 1100 | 使被選中的掃描鏈進入測試模式,用於核測試 |
IDCODE | 1110 | 在TDI和TDO之間連線設備標識暫存器 |
BYPASS | 1111 | 在TDI和TDO之間連線旁路暫存器,掃描鏈進入系統操作模式 |
CLAMP | 0101 | 在TDI和TDO之間連線旁路暫存器,輸出信號的值是當前裝入掃描鏈的值 |
HIGHZ | 0111 | 在TDI和TDO之間連線旁路暫存器,使相應的信號進入高阻狀態 |
CLAMPZ | 1001 | 在TDI和TDO之間連線旁路暫存器,確保測試時非0、1的信號無效 |
SAMPLE/PRELOAD | 0011 | 在AMR7TDMI中僅可用於產品測試,掃描鏈上未用。在AMR9TDMI中選中的掃描鏈進入正常操作模式 |
RESTART | 0100 | 在TDI和TDO之間連線旁路暫存器,從調試狀態重新啟動處理器 |
TAPSM(TAP controller state machine)[3:0]:表明TAP控制器狀態機的當前狀態。
2. 匯流排分割
ARM7TDMI和存儲器之間的兩種數據匯流排形式――單向匯流排輸入DIN[31:0]、單向匯流排輸出DOUT[31:0]和雙向匯流排D[31:0]。匯流排分割在調試情況下經常用來進行狀態的切換。
3. ARM7TDMI的處理器核
ARM7TDMI的處理器核的框圖如圖2.8所示。我們首先看看它完成的功能和工作過程。對於ARM7的3級流水線工作模式,它實際完成取指、解碼和執行的整個過程。左上部分實際主要完成指令執行,指令執行主要是由算術邏輯單元ALU完成,其上部的通道主要完成數據的供給,並能根據執行指令的不同進行適當的調整,如進行移位等操作。右上部分主要是完成指令解碼和整個處理器邏輯的控制。下邊的兩部分主要分別完成指令和數據的讀取、數據存儲操作。從圖2.8中可以看出指令解碼和控制邏輯同數據通道是分離的,這樣有利於流水線的實現。