右邊為AVR 結構的方框圖
為了獲得最高的性能以及並行性, AVR 采用了Harvard 結構,具有獨立的數據和程序總線。程序存儲器裏的指令通過壹級流水線運行。CPU 在執行壹條指令的同時讀取下壹條指令( 在本文稱為預取)。這個概念實現了指令的單時鐘周期運行。程序存儲器是可以在線編程的FLASH。
快速訪問寄存器文件包括32 個8 位通用工作寄存器,訪問時間為壹個時鐘周期。從而實現了單時鐘周期的ALU 操作。在典型的ALU 操作中,兩個位於寄存器文件中的操作數同時被訪問,然後執行運算,結果再被送回到寄存器文件。整個過程僅需壹個時鐘周期。
寄存器文件裏有6 個寄存器可以用作3 個16 位的間接尋址寄存器指針以尋址數據空間,實現高效的地址運算。其中壹個指針還可以作為程序存儲器查詢表的地址指針。這些附加的功能寄存器即為16 位的X、Y、Z 寄存器。
ALU支持寄存器之間以及寄存器和常數之間的算術和邏輯運算。ALU也可以執行單寄存器操作。運算完成之後狀態寄存器的內容得到更新以反映操作結果。
程序流程通過有/ 無條件的跳轉指令和調用指令來控制,從而直接尋址整個地址空間。大多數指令長度為16 位,亦即每個程序存儲器地址都包含壹條16 位或32 位的指令。
程序存儲器空間分為兩個區:引導程序區(Boot 區) 和應用程序區。這兩個區都有專門的鎖定位以實現讀和讀/ 寫保護。用於寫應用程序區的SPM 指令必須位於引導程序區。
在中斷和調用子程序時返回地址的程序計數器(PC) 保存於堆棧之中。堆棧位於通用數據SRAM,因此其深度僅受限於SRAM 的大小。在復位例程裏用戶首先要初始化堆棧指針SP。這個指針位於I/O 空間,可以進行讀寫訪問。數據SRAM 可以通過5 種不同的尋址模
式進行訪問。
AVR 存儲器空間為線性的平面結構。
AVR有壹個靈活的中斷模塊。控制寄存器位於I/O空間。狀態寄存器裏有全局中斷使能位。每個中斷在中斷向量表裏都有獨立的中斷向量。各個中斷的優先級與其在中斷向量表的位置有關,中斷向量地址越低,優先級越高。
I/O 存儲器空間包含64 個可以直接尋址的地址,作為CPU 外設的控制寄存器、SPI,以及其他I/O 功能。映射到數據空間即為寄存器文件之後的地址0x20 - 0x5F。