超强全手工DIY 制作的 CPU:Magic-1 Homebrew [图文]


日期: 2005-09-15 14:00 | 联系我
关注我: Telegram, Twitter

看了上面这张图片, 你也许觉得奇怪, 这不是一张 TELNET 终端的图片么? 有什么奇怪的?

那么, 请你再看看下面这张图片:

这是什么东西? 你也许以为只是一个普通的设备. 如果你细心点, 你会发现这东西的底部印着 Magic-1 Homebrew CPU 的字样. 没错, 这确实是一块 CPU, 是一个叫Bill Buzbee人全手工焊出来的 CPU! Buzbee 举四年之力, 以个人之力, 做出了这么一台全手工造的 CPU, 功能齐全, 实在是不简单. 这台全手工的 CPU 可以支持完整的硬件地址转换、内存影射IO和DMA,并且支持多进程,主频“高达”3MHz;该CPU采用8位地址总线,每个进程拥有128K地址空间,其中包括32个2K的数据页和32个2K的代码页,这些地址影射到22位的物理地址空间中,如果算上外部设备的地址空间就是23位物理地址空间。

更厉害的是, 他用这台 CPU 组装了一台电脑,名字也就叫 Magic-1。这台计算机包括两个串口和一块20M的1.3吋硬盘和另一块30M硬盘。为了让这个系统跑起来, Buzbee 将 LLC 编译器移植到了它上面. 更另人吃惊的是, 他还将这台电脑做为一个 WEB 服务器, 同时支持 TELNET 会话! 第一张图就是我在美国山地时间 2005.09.15 04:15 TELNET 登录到这台服务器上时, 收到的回馈信息.

感兴趣的朋友,可以用如下地址 TELNET 到 MAGIC-1 上面去看看:

telnet magic-1.org

作者的网站 http://www.homebrewcpu.com/首页第一段是这样说的:

Magic-1 is a homebuilt minicomputer. It doesn't use an off-the-shelf microprocessor, but rather has a custom CPU made out of 74 Series TTL chips. Altogether there are more than 200 chips in Magic-1 connected together with thousands of individually wrapped wires. And, it works. Not only the hardware, but there's also a full ANSI C compiler for Magic-1 (retargeted LCC), and a rudimentary homebrew operating system.

“制作Magic-1的念头是在一次午餐中冒出来的”,Buzbee说。Buzbee是一位编译器作者,但他为自己不熟悉CPU的实际工作而感到郁闷,因此想到动手来亲自作一个CPU。Buzbee在大学时候没有学过任何电子类的课程,而且对于晶体管、电阻、电容等也只是一知半解。他的朋友Ken想到有一本老杂志曾经介绍过如何使用TTL集成电路来制作极其简单的CPU,并推荐他去看一看。一周后,Buzbee找到了这些文章,并全部读了一遍。然后在下一次午餐上,Buzbee对Ken说起决定自己打造一个CPU,Ken说:为什么不呢?于是,Bill Buzbee的Magic-1项目拉开了序幕。

在网页 http://www.homebrewcpu.com/construction.htm 中, 我们可以看到他开发这块 CPU 的进度表:

    12-6-2001: I begin a running development diary, and start off with an embarrassingly optimistic schedule.

    12-18-2001: Do basic design of fault/interrupt mechanism, and make mistake that eventually becomes the last bug to fix before Magic-1 comes alive two-and-a-half years later.

    12-29-2001: Complete first rev. of the microcode.

    1-6-2002: Magic-1 simulator complete enough to trace call/return sequence.

    1-8-2002: Simulate Fibonacci function and flesh out software conventions

    1-13-2002: Magic-1 assembler (qas) takes shape

    1-18-2002: Big-endian vs. little-endian

    2-28-2002: Page fault mechanism works in simulator

    3-9-2002: Decide on construction technique: wire-wrap prototype boards

    6-3-2002: During LCC retargeting, decide to significantly change Magic instruction set architecture

    6-4-2002: Compile Fibonacci program in C to Magic assembly

    6-22-2002: Move to split code and data spaces

    6-25-2002: Design context switch to work well with Minix operating system

    7-12-2002: Complete microcode rewrite

    8-13-2002: Drop support for rotate instructions

    9-11-2002: Gil Smith give me basic electronics lesson, as well as a wire-wrap gun & supplies

    9-22-2002: Buy card cage on eBay and begin construction [pictures]

    Fall 2002: During a Vito's lunch, I ask Ken Sumrall how to know what value resistors to use. He introduces me to Ohm's Law.

    3-30-2003: Inspired by John Doran's D16/M, complete ALU/Register card schematics

    4-13-2003: Complete control card schematics

    4-14-2003: Thoughts on front panel

    5-3-2003: First rev of schematics complete

    5-6-2003: Move build environment from Linux to Windows

    5-16-2003: Thoughts on new Magic-1 simulator

    5-27-2003: Fibonacci runs on new simulator

    6-3-2003: New assembler functional

    6-21-2003: Hit 100% coverage on Magic architectural validation test suite

    6-23-2003: Alistair Roe emails with thoughts on an enclosure for Magic-1

    8-3-2003: Retarget LCC C compiler to Magic & create retargeting notes

    8-10-2003: On my birthday, C version of Fibonacci runs in simulator

    8-27-2003: David Conroy teaches me about signal integrity

    9-18-2003: Decide to use cut-strip-wrap wire-wrapping technique

    1-3-2004: Design complete, construction begins

    1-18-2004: Magic-1's heart beats for the first time [pictures]

    1-26-2004: Front panel logic card complete, [pictures]

    2-9-2004: Memory card complete, [pictures]

    2-20-2004: EPROM daughter card complete, [pictures]

    2-26-2004: Device card complete, [pictures]

    3-7-2004: Microcode sequencer comes to life

    3-9-2004: First instruction executed

    3-19-2004: Control card complete, [pictures]

    4-8-2004: Premature bringup attempt

    4-12-2004: ALU/Register card complete, [pictures]

    4-12-2004: Bring-up attempt - failure!

    4-13-2004: Success! Magic-1 runs Fibonacci, [video]

    4-25-2004: Dave Conroy debugging session finds ungrounded memory chip

    5-3-2005: Magic-1 talks

    5-8-2004: Sieve of Erasthones benchmark runs

    5-16-2004: IDE interface comes alive; Alistair Roe's enclosure concept

    7-23-2004: Basic bringup complete

    9-12-2004: User-mode programs work; telnet access to Magic-1

    9-15-2004: Dhrystone benchmark runs

    9-22-2004: fork() implemented using copy-on-write

    10-23-2004: Magic-1's Dhrystone score hits 384 (0.25 MIPS)

    10-31-2004: Colossal Cave Adventure runs

    4-9-2005: Alistair Roe's enclosure and front panel arrives on doorstep

    5-13-2005: Magic-1 is hardware complete.

    2001.12.06: Buzbee开始写项目:志,并为自己制定了一张艰难但还算乐观的:程表

    2001.12.18: 完成错误处理和中断机制的基本设计

    2001.12.29: 完成微代码的第一轮设计

    2002.01.06: 完成了Magic-1模拟器,可以对调用/返回指令序列进行跟踪

    2002.01.08: 模拟了Fibonacci函数,并丰富了软件接口约定

    2002.01.13: Magic-1汇编器(qas)成形

    2002.01.18: 决定是选择大尾数法还是小尾数法表示整数的字节顺序,最终选择了大尾数法

    2002.02.28: 在模拟器中完成了页面错误机制

    2002.03.09: 决定使用普通电线来进行连线

    2002.06.03: 对指令集架构进行了意义重大的改变

    2002.06.04: 用C语言编写了Fabonacci程序并编译为Magic汇编程序

    2002.06.22: 改用分立的数据和代码地址空间

    2002.06.25: 设计用于多进程的上下文环境切换

    2002.07.12: 完成对微代码的重写工作

    2002.08.13: 放弃对rotate指令的支持

    2002.09.11: 上了Gil Smith的一堂电子电路课程

    2002.09.22: 从eBay上买了板材和外壳

    2002 的其他日子 向Ken Sumrall请教如何使用寄存器,从他那里学到了Ohm规则

    2003.03.30: 从Jhon Doran的D16/M中得到了灵感,完成了ALU/寄存器板的架构

    2003.04.13: 完成控制板的架构

    2003.04.14: 思考前面板的架构

    2003.05.03: 第一轮架构设计完毕

    2003.05.06: 将构建环境从Linux一直到Windows

    2003.05.16: 构思新的Magic-1模拟器

    2003.05.27: 在新的模拟器上成功运行了Fibonacci程序

    2003.06.03: 完成了新的汇编器功能

    2003.06.21: Magic架构验证和测试用例达到了100%覆盖率

    2003.06.23: Alistair Roe通过email提出了Magic-1外壳的构想

    2003.08.03: 将LCC(C编译器)移植到了Magic上

    2003.08.10: 在模拟器上成功地实现了Fibonacci程序的C语言版本 (这一天是Buzbee的生日)

    2003.08.27: 从David Conroy那里学到了信号完整性

    2003.09.18: 决定使用普通的带皮电线进行连接

    2004.01.03: 完成了全部的设计工作,开始制作

    2004.01.18: Magic-1有了第一次心跳

    2004.01.26: 前面板完成

    2004.02.09: 内存板完成

    2004.02.20: EPROM子板完成

    2004.02.26: 设备板完成

    2004.03.07: 微代码序列成功运转

    2004.03.09: 执行了第一条指令

    2004.03.19: 控制板完成

    2004.04.08: 尝试发布前期的工作

    2004.04.12: ALU/寄存器板完成;同:被告知,发布尝试失败

    2004.04.13: Magic-1成功运行了Fibonacci程序!

    2004.04.25: Dave Conroy的测试会话发现了不真实的内存碎片

    2004.05.03: Magic-1能“说话”了

    2004.05.08: 运行“Sieve of Erasthones”基准

    2004.05.16: 完成了IDE接口,Alistair Roe完成了外壳设计

    2004.07.23: 发布基本架构

    2004.09.12: 用户模式程序可以工作

    2004.09.15: 运行“Dhrystone”基准

    2004.09.22: 使用copy-on-write实现了fork()

    2004.10.23: Magic-1的Dhrystone得分达到了384(0.25MIPS)

    2004.10.31: 运行Colossal Cave Adventure

    2005.04.09: Alistair Roe设计的外壳到货

    2005.05.13: Magic-1的硬件设计完毕

在网页 http://www.homebrewcpu.com/photo_gallery.htm 中, 我们可以看到这台全手工 CPU 运行状态的各种图片:

1. 工作中

2. 作者在调试时的照片:

3. 机箱内部。绚美的蓝光,异常美丽。

4. 内存板 Component side of the memory board

5. ALU/寄存器连线面 Wire-wrap side of the ALU/Register card

6. 控制卡 Component side of the control card

相关文章: 深圳高交会之神州龙芯 CPU 映象记[图文]

标签: CPU | Homebrew

 文章评论

第 1 楼  发表于 2005-09-16 18:24 | cchxp 的所有评论
连接端口是多少?为什么我不能访问?
回复于 2005-09-17 07:01:
连不上可以多试一会儿.据他的网站说,同一时刻只支持一个 TELNET 连接. 我昨天也是试了两次才成功的.

默认的端口是 23.
这是 http://www.homebrewcpu.com/talk_to_magic-1.htm 上面的一段话:
Note to previous Magic-1 users, I've changed the incoming port from 10001 to the default telnet port

第 2 楼  发表于 2005-09-17 10:08 | shelfson1 的所有评论
bull...cow....

第 3 楼  发表于 2005-09-17 13:33 | 黑客侠 的所有评论
能做出这样的cpu 真是不简单那.

第 4 楼  发表于 2005-09-20 18:19 | julius 的所有评论
真是不敢想象。

要是中国人里面有人手工做个出来,我想我会为他和它感到骄傲的,呵呵。哪怕只有3M的主频。


第 5 楼  发表于 2005-09-21 23:12 | Dahui 的所有评论
厉害厉害,我登录了一下,果然如Xiaohui说的一样,还可以跟它对话,果然是牛!

第 6 楼  发表于 2005-10-02 22:06 | yjmouse 的所有评论
Why can't I connect it?

第 7 楼  发表于 2005-10-09 02:10 | joeguan2 的所有评论
我连了好多次都没有连上!!

第 8 楼  发表于 2005-10-16 00:11 | guo ke 的所有评论
可以连啊 厉害
太佩服了

第 9 楼  发表于 2005-10-30 21:24 | 跳水自杀的鱼 的所有评论
我连上了,哈哈

第 10 楼  发表于 2005-10-31 22:32 | abc 的所有评论
佩服,佩服

第 11 楼  发表于 2005-11-06 04:17 | huxiaoping 的所有评论
早就想找这相关的东西学习,终于有了,呵呵

第 12 楼  发表于 2005-11-14 17:28 | liuye 的所有评论
看不懂

第 13 楼  发表于 2005-11-22 13:00 | hehe 的所有评论
太猛了

第 14 楼  发表于 2005-11-29 23:45 | guanjuyang 的所有评论
真是太厉害了,不得不佩服作者的毅力和锲而不舍的精神

第 15 楼  发表于 2005-11-30 00:09 | 菜鸟 的所有评论
会不会比普通cpu好啊?
diy 我喜欢

第 16 楼  发表于 2005-12-22 08:22 | 疯子 的所有评论
真难以想象,中国人老是站在别人的肩膀上,就是缺乏这种疯子和傻子精神

第 17 楼  发表于 2005-12-30 18:15 | 阿俊 的所有评论
太牛了,我也想做一个cpu,不过没多少时间啊,很佩服他

第 18 楼  发表于 2006-04-15 21:09 | 阿伟 的所有评论
如果用FPGA来实现,会更容易而且舒服
回复于 2006-04-16 12:13:
说说你的理由?

第 19 楼  发表于 2006-05-02 21:15 | ttk_tanx 的所有评论
我想我若是做成了这部CPU,下一步应该试着设计非传统结构的CPU了,毕竟他丛中学到了很多原理,模仿是创造的起步!

第 20 楼  发表于 2006-05-04 16:39 | alhambra 的所有评论
这个老兄很有毅力,能坚持4年时间,令人佩服.
但这个事上升不到"中国人"的素质问题上.做CPU又不是多难的事情,我上大学时就做过这类的CPU,16位,主频1M,用基本的与非门等搭起来,几个人一个小组一起做,路路续续一学期时间吧.

第 21 楼  发表于 2006-05-15 11:10 | 一般 的所有评论
没啥了不起的,功能还不如一个单片机呢,主频3M,呵呵,8位地址,还不如8086的CPU,什么年代了,还追随这些落后的玩意。

第 22 楼  发表于 2006-11-21 22:37 | rommy 的所有评论
手工搭线方式,一个字就是牛啊!还有一台数字逻辑分析仪啊!那是来分析测试运算逻辑的吗?强人!

第 23 楼  发表于 2007-06-08 09:35 | tomcruise1860 的所有评论
有意义吗?

第 24 楼  发表于 2013-05-27 19:47 | farleyx 的所有评论
可能不实用,但至少他对计算机很懂了。有独立完成大型设计的能力,这是你四年光看书达不到的。我们不喜欢从基础做起,所以站不稳,处处依赖别人。

第 25 楼  发表于 2015-10-08 17:10 | huxingqian 的所有评论
很厉害的人,对于那些说有什么意义的人,我只想说。你这句话本身就没什么意义。
在法拉第表演他的圆盘发电机时,一位贵妇人问道:“法拉第先生,这东西有什么作用呢?”法拉第答道:“夫人,一个刚刚出生的婴儿有什么作用呢?”
关键并不是有没有用,而是人家做出来了。
回复于 2015-10-08 21:37:
说得不错。 :)

第 26 楼  发表于 2019-06-17 16:01 | 百度竞价 的所有评论
写的非常哈啊啊啊

共有评论 26 条, 显示 26 条。

当前页面是本站的 百度 MIP 版本。
欲查看完整版本和发表评论请点击:完整版 »

 

程序员小辉 建站于 1997
Copyright © XiaoHui.com; 保留所有权利。