Hempl/CPU
外观
< Hempl
中央处理单元是 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.
- Atmel AT32UC3A 数据手册 第 9 章:处理器和架构
- AVR32 架构手册,其中详细描述了指令