|东京大学版一生一芯:自制CPU,成功运行类Unix系统( 四 )
这个漏洞很难在硬件层面上低成本地修复 , 所以为了解决它 , 我们为我们的 Xv6 引入了 Page Coloring 。 这会为每个缓存行引入「颜色」并重新分配页面 , 使得指向同一物理地址的虚拟地址总会有一样的颜色 。 这意味着指向同一物理地址的虚拟地址总是仅有一个缓存 。 这能让 Xv6 确保 GAIA 永远不会让多个缓存共用同一个物理地址 。
三月:Xv6 跑起来!
3 月 1 日 , Xv6 移植工作完成 。 现在 Xv6 已经运行在模拟器上了!
本文插图
娱乐少不了
【|东京大学版一生一芯:自制CPU,成功运行类Unix系统】一开始 , 移植 Xv6 是因为这很有趣 , 现在 Xv6 已经成功运行在模拟器上 , 那我们就要加把劲让它更有趣 。
首先 , Masayoshi 用大约 4 个小时做了一个小火车以及运行在 Xv6 上的 sl 命令 。
本文插图
Shohei 则想做一个扫雷游戏 。
本文插图
在这期间 , Yuichi 完成了 Group X 的 CPU 实现工作 。 真正的 CPU 的运行速度比模拟器快多了 , 这能让我们更轻松地玩耍和开发游戏 。 这时候 , 我们创建了一个非常高质量的应用:2048 。
本文插图
这个 2048 的质量很高 。 Yuichi 老是在玩 。 顺便提一句 , 这个 2048 使用的是 non-line buffering 输入 , 这是 Xv6 原本没有的功能 。 为了支持这一功能 , ioctl 被添加进来作为 read 和 write 之外的另一个 devsw 动作 , 另外还添加了用来控制 ICANON 和 echo 的与 termios 相关的新功能 。 因此 , 唯一能以如此高的完成度玩 2048 的 Xv6 就运行在 GAIA 上 。
另外 , 毕竟 Xv6 是由 Unix v6 启发的 , 因此我猜想 , 添加 gtty 和 stty 系统调用是更像 Unix v6 的方法 。 不过 , 因为 Xv6 没有 tty 的概念 , 所以我采用了 ioctl;而且事实上 Unix v7 就引入了 ioctl , 所以这与历史情况也接近 。
现在 , 更酷的是 , Keiichi 又为 Xv6-GAIA 做了一个小型汇编器 , Shohei 还做了一个 mini vi 。 想想看你能用这两个工具做什么 。
本文插图
本文插图
这就是基于 FPGA 的交互式编程!这是 CPU 实验的一个出色演示 , 因为其中一般不包括任何交互式程序 。
最棒的演示
CPU 实验实践课程的原始任务是「在自制 CPU 上运行给定的光线追踪程序」 。 现在我们的 CPU 上有操作系统了 , 你知道该怎么做了吗?我们决定在我们的 CPU 的 OS 上运行这个光线追踪程序 。 我们遇到了一些问题 , 但我们在最终展示前一个小时里成功解决了它们 。
本文插图
因此 , 我们做了我们这个系的学生开玩笑时说的话:在一个 CPU 上运行一个操作系统 , 然后再在上面运行光线追踪程序 。
来自 2020 年的回顾
这段故事发生在 2015 年 , 本文也是我自己的博文的翻新稿 。 尽管现在读来 , 我看到了当时自身技术经验的不足 , 但我们当时做的事情实在很激动人心 。
另外 , 你现在也可以在你的浏览器中体验我们的 Xv6:https://nullpo-head.github.io/emcc-gaia-simu/xv6.html
推荐阅读
- 收入|全球亿万富豪财富总额达10.2万亿美元;东京市中心二手住宅8月环比上涨1.1%达538.8万元|Do早
- 热点一生活|羡慕!微软现允许员工永久在家工作,需要承担远程办公费用
- 阻力|伦敦大学研究发现鱼类减阻重要线索,或将帮助飞行器阻力减少25%
- 新加坡|新加坡大学生人工智能创新大赛开幕式举行 星环科技提供建模平台
- |大搜车姚军红:格局一错,全盘皆错|湖畔大学
- |世界最快紫外线相机问世
- 北京邮电大学出版|氢燃料为什么会被作为最优燃料?用什么方法才能得到这些氢原料?
- |北京大学侯仰龙教授近年来在磁性纳米材料领域重要工作概览
- 北京邮电大学出版|电子纸张有何优点?原理是?有何实际应用?如何推动互联网发展?
- 科学,黑洞|宇宙的一生都经历了什么?科学家:需要经历这5个纪元