跳至內容

Mizar32/CPU

來自華夏公益教科書,開放的書籍,開放的世界

中央處理單元是AT32UC3A晶片的一部分,它控制著其他硬體的操作。它透過遵循儲存在RAM或快閃記憶體中的程式來實現這一點。

硬體檢視

[編輯 | 編輯原始碼]

Mizar32的CPU是Atmel AVR32A UC3A RISC處理器,以66MHz執行,具有

  • 15個通用32位暫存器
  • 一個32位堆疊指標、程式計數器、連結暫存器和狀態暫存器
  • 187條不同的指令,其中大多數指令需要一個時鐘週期來完成
  • 異常和中斷
  • 使用者和監管模式(在eLua中未使用)
  • 除錯模式

處理器實現了一種載入-儲存體系結構,其中值從記憶體中取出到暫存器中,並在那裡進行處理,然後結果被儲存回記憶體。它有187條不同的指令,這些指令是

  • MOVE指令用於在暫存器之間複製值或用常數值載入它們
  • 載入/儲存指令用於在暫存器和主記憶體之間複製8位、16位、32位或64位資料
  • 載入/儲存多個指令用於一次將多個暫存器從主記憶體複製到主記憶體或複製到堆疊
  • 算術指令用於在暫存器中新增、減去、取反、測試和比較值,以及最大值和最小值用於查詢兩個暫存器中值的最高值或最低值
  • 乘法:16x16位和32x32位乘法,產生32位或64位結果
  • DSP指令:乘加指令和飽和或舍入運算
  • 邏輯運算:AND、OR、異或、取反
  • 位操作:位域提取和賦值、位設定/清除/測試、位反轉、交換位元組/半字、計數前導零
  • 移位和旋轉
  • 分支和子程式呼叫和返回
  • 系統控制指令

由於其三級流水線,處理器通常每時鐘週期執行一條指令,每秒最大可執行6600萬條指令。

CPU連線到高速匯流排矩陣,該矩陣又與RAM和快閃記憶體、USB和乙太網硬體以及HSB橋通訊。HSB橋然後以16.5MHz的較低速度與晶片上其他外圍裝置通訊。

軟體檢視

[編輯 | 編輯原始碼]

CPU執行的程式通常是eLua直譯器,它要麼響應你在Mizar32控制檯上鍵入的命令,執行它們並列印結果,要麼從SD卡讀取一個Lua程式,並按照程式的說明進行操作。

在eLua中,有一些函式可以訪問CPU的底層功能

  • cpu.clock() 返回CPU的時鐘頻率 (66,000,000Hz)
  • cpu.r32/w32/r16/w16/r8/w8() 用於從記憶體或外圍裝置的暫存器中讀取/寫入32位、16位和8位資料
  • cpu.sei/cli() 用於啟用/停用中斷
  • cpu.set_int_handler/get_int_handler/get_int_flag() 用於管理中斷的處理方式

有關如何從Lua使用中斷的示例,請參閱PIO、計時器和UART部分中的示例。

在PicoLisp中,

  • (cpu-clock) 返回CPU的時鐘頻率 (66,000,000Hz)
  • (cpu-r32)/(cpu-w32), (cpu-r16)/(cpu-w16), (cpu-r8)/(cpu-w8) 用於從記憶體或外圍裝置的暫存器中讀取/寫入32位、16位和8位資料。

請注意:目前PicoLisp不支援中斷處理。請參閱問題#12.

進一步閱讀

[編輯 | 編輯原始碼]
華夏公益教科書