跳轉到內容

Hempl/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 指令:乘累加指令和飽和或舍入運算
  • 邏輯運算:與、或、異或、反碼
  • 位運算:位欄位提取和賦值、位設定/清除/測試、位反轉、交換位元組/半字、計數前導零
  • 移位和旋轉
  • 分支和子例程呼叫和返回
  • 系統控制指令

由於其 3 級流水線,處理器通常在每個時鐘週期執行一條指令,從而實現每秒最高 6600 萬條指令的執行速度。

CPU 連線到高速匯流排矩陣,該矩陣反過來與 RAM 和快閃記憶體、USB 和乙太網硬體以及 HSB 橋通訊。HSB 橋然後以 16.5MHz 的較低速度與晶片上的其餘外設進行通訊。

軟體檢視

[編輯 | 編輯原始碼]

CPU 執行的程式通常是 PicoLisp 直譯器,它要麼響應你在 Mizar32 控制檯上鍵入的命令,執行它們並列印結果,要麼從 SD 卡讀取 PicoLisp 程式,並執行程式中所述的操作。

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

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

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

進一步閱讀

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