跳转到内容

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.

进一步阅读

[编辑 | 编辑源代码]
华夏公益教科书