跳至内容

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.

进一步阅读

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