Jump to content

历时3年半的超强DIY!纯手工打造CPU


May28

Recommended Posts

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

1876549_952398.jpg

CPU

  2001年12月6日Buzbee开始写项目日志,并为自己制定了一张艰难但还算乐观的日程表

  2001年12月18日完成错误处理和中断机制的基本设计

  2001年12月29日完成微代码的第一轮设计

  2002年1月6日完成了Magic-1模拟器,可以对调用/返回指令序列进行跟踪

  2002年1月8日模拟了Fibonacci函数,并丰富了软件接口约定

  2002年1月13日Magic-1汇编器(qas)成形

  2002年1月18日决定是选择大尾数法还是小尾数法表示整数的字节顺序,最终选择了大尾数法

  2002年2月28日在模拟器中完成了页面错误机制

  2002年3月9日决定使用普通电线来进行连线

  2002年6月3日对指令集架构进行了意义重大的改变

  2002年6月4日用C语言编写了Fabonacci程序并编译为Magic汇编程序

  2002年6月22日改用分立的数据和代码地址空间

  2002年6月25日设计用于多进程的上下文环境切换

  2002年7月12日完成对微代码的重写工作

  2002年8月13日放弃对rotate指令的支持

  2002年9月11日上了Gil Smith的一堂电子电路课程

  2002年9月22日从eBay上买了板材和外壳

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

  2003年3月30日从Jhon Doran的D16/M中得到了灵感,完成了ALU/寄存器板的架构

  2003年4月13日完成控制板的架构

  2003年4月14日思考前面板的架构

  2003年5月3日第一轮架构设计完毕

  2003年5月6日将构建环境从Linux一直到Windows

  2003年5月16日构思新的Magic-1模拟器

  2003年5月27日在新的模拟器上成功运行了Fibonacci程序

  2003年6月3日完成了新的汇编器功能

  2003年6月21日Magic架构验证和测试用例达到了100%覆盖率

  2003年6月23日Alistair Roe通过email提出了Magic-1外壳的构想

  2003年8月3日将LCC(C编译器)一直到了Magic上

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

  2003年8月27日从David Conroy那里学到了信号完整性

  2003年9月18日决定使用普通的带皮电线进行连接(奇怪,前面已经决定一次了)

  2004年1月3日完成了全部的设计工作,开始制作

  2004年1月18日Magic-1有了第一次心跳

  2004年1月26日前面板完成

  2004年2月9日内存板完成

  2004年2月20日EPROM子板完成

  2004年2月26日设备板完成

  2004年3月7日微代码序列成功运转

  2004年3月9日执行了第一条指令

  2004年3月19日控制板完成

  2004年4月8日尝试发布前期的工作

  2004年4月12日ALU/寄存器板完成;同日被告知,发布尝试失败

  2004年4月13日Magic-1成功运行了Fibonacci程序!

  2004年4月25日Dave Conroy的测试会话发现了不真实的内存碎片

  2004年5月3日Magic-1能“说话”了

  2004年5月8日运行“Sieve of Erasthones”基准

  2004年5月16日完成了IDE接口,Alistair Roe完成了外壳设计

  2004年7月23日发布基本架构

  2004年9月12日用户模式程序可以工作

  2004年9月15日运行“Dhrystone”基准

  2004年9月22日使用copy-on-write实现了fork()

  2004年10月23日Magic-1的Dhrystone得分达到了384(0.25MIPS)

  2004年10月31日运行Colossal Cave Adventure

  2005年4月9日Alistair Roe设计的外壳到货

  2005年5月13日Magic-1的硬件设计完毕

怎么样?够强的吧?这还不算什么,这个Buzbee还用这个CPU组装了一台微型计算机,名字就叫Magic-1,这台计算机包括两个串口和一块20M的1.3吋硬盘和另一块30M硬盘。最让人“乍舌”的事,这位朋友还将这台计算机做为一个Web服务器,同时支持Telnet会话(虽然只支持一个会话)。哦,还有,为了让这个系统能够跑起来,Buzbee还为它准备了一个C编译器!

数字逻辑和数字电路的朋友一定知道,通过使用TTL门电路,的确是能够实现一个CPU的;笔者在大学时也曾在软件上使用74系列芯片模拟过功能非常简单的CPU。然而,Buzbee朋友搞得这个家伙却是一个功能完全的CPU。

“家酿”CPU可以支持完整的硬件地址转换、内存影射IO和DMA,并且支持多进程,主频“高达”3MHz;该CPU采用8位地址总线,每个进程拥有128K地址空间,其中包括32个2K的数据页和32个2K的代码页,这些地址影射到22位的物理地址空间中,如果算上外部设备的地址空间就是23位物理地址空间。

1876552_985888.jpg

工作中

1876556_517729.jpg

调试时的照片

1876557_440185.jpg

机箱内部

1876558_993395.jpg

机箱内部

怎么样?够强的吧?这还不算什么,这个Buzbee还用这个CPU组装了一台微型计算机,名字就叫Magic-1,这台计算机包括两个串口和一块20M的1.3吋硬盘和另一块30M硬盘。最让人“乍舌”的事,这位朋友还将这台计算机做为一个Web服务器,同时支持Telnet会话(虽然只支持一个会话)。哦,还有,为了让这个系统能够跑起来,Buzbee还为它准备了一个C编译器!

1876563_171764.jpg

内存板

1876559_633282.jpg

ALU/寄存器连线面

1876560_309067.jpg

控制卡

Link to comment
Share on other sites

  • 3 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

访客
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 创建新的...