展示HN:一个运行在RISC-V上的Project Oberon系统版本,而不是RISC-5
这是一个从Oberon 07迁移到更常用的Oberon 90的Project Oberon系统版本,使用了一种带有RISC-V (RV32)后端的最新版本OP2编译器;该代码库还包括一个与Wirth在他的Project Oberon书中描述的机器(虚拟机)非常相似的仿真,基于著名的RV32仿真器;后者是一个简化版和稍作修改的版本,只有解释器,结合我自己实现的机器和外围设备;Wirth机器的内存映射1:1再现,因此Kernel.Mod、Display.Mod和Input.Mod没有变化。以下是系统在RISC-V虚拟机上本地运行的屏幕截图:2013年Project Oberon系统是什么?正如你可能知道的,从1986年到1989年,Niklaus Wirth和Jürg Gutknecht在苏黎世联邦理工学院设计并实现了整个计算机系统,包括操作系统、编译器、编程语言、文本和图形编辑器,基本上是他们自己完成的,然后在书籍《Project Oberon - 操作系统和编译器的设计》(1992)中记录了所有内容。Wirth在退休后继续这段旅程。在projectoberon.net上发布的源代码是用Oberon-07编写的,这是Wirth对该语言的最后一次和最激进的简化版本。2013年的Project Oberon书籍也有免费修订本可用。2013项目的宣称目标与1992年没有变化:提供一本作为已存在系统的示例的单本书,该系统正在实际使用,并且所有细节都有解释。1992年的书籍和项目使用了National Semiconductor NS32032处理器,该处理器“现在既不可用,其架构也不推荐”。Wirth没有将编译器重新定向到其他商业架构,而是决定设计自己的处理器,称之为RISC-5,“以便将对简单性和规律性的渴望扩展到硬件中”。他甚至还用可编程门阵列(FPGA)实现了它,并将他的设计变成了“一个单芯片上的真实、功能处理器”。整个系统运行在一块低成本开发板上(由Digilent生产的Xilinx Spartan-3,带有1 MB静态RAM),“很容易容纳整个Oberon系统,包括它的编译器”。因此,第一次不仅以软件而且以硬件形式完全和严格地描述了Oberon系统。硬件模块用Verilog实现,也可以在projectoberon.net上获得。由于语言和处理器的简化,1992年用汇编语言写的所有部分(书中没有)现在也用Oberon表达,从设备驱动程序到光栅操作。Wirth直接基于原始Ceres版本构建了他的系统,舍弃了后来的Oberon系列的特征。“我希望尽量如实呈现系统,就像25年前存在的一样,没有任何修饰”。最终是一个小而足够完整的系统,文档齐全,易于迁移到其他架构。Project Oberon的整个硬件/软件契约由内存映射加上指令集构成。迁移的原因与RISC-V名称冲突很滑稽,但在RISC设计哲学层面上的亲缘关系是真实的:RISC-V于2010年在伯克利大学开发,是伯克利系列的第五个RISC架构(RISC-I、RISC-II、SOAR、SPUR),伯克利和Wirth都共享共同设计目标和特征:例如,常规的32位加载/存储、友好的编译器ISA,固定的32位基本指令编码。将Project Oberon系统从RISC-5迁移到RISC-V是一种务实的方式,可以使系统转向广泛可用的现代硬件,同时保留Oberon的价值原则。Espressif提供多种ESP32系列的低成本、易得的微控制器,Olimex等主板制造商围绕它们构建实用开发板,例如ESP32-P4-PC,它以极具吸引力的价格提供Oberon系统所需的所有资源。由于Oberon系统不需要内存管理单元(MMU),因此非常适合这种类型的微控制器。到目前为止,该迁移在一个仿真RISC-V机器上运行,这有助于调试并保持代码与书籍接近。未来的版本将把此(以及System 3)迁移到上面提到的Olimex板。Wirth自己的编译器(OR)针对他的RISC-5架构,编译Oberon-07。我本可以为其添加一个RV32后端;相反,这个项目重复使用了我在将Oberon System 3迁移到树莓派时已经使用的OP2编译器。OP2本身是ETH Oberon遗产的一部分;它的前端/后端分离正是为此设计的:同一个前端为SPARC、MIPS、i386以及最近的ARMv7和RV32生成代码。我的OP2修改、ARMv7后端和启动链接器在System 3迁移中证明了自己的价值。扩展OR意味着维护另一个编译器。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡