又被老外冲击了

来源:互联网 发布:贪吃蛇大作战 源码 编辑:程序博客网 时间:2024/04/28 15:14
不经意间看到网上一篇文章,介绍一个老外Bill Buzbee使用200多块74系列的TTL集成电路自己DIY出来的CPU,基于此CPU搭建了一个自己的微机,并且移植了许多软件(包括c编译器、OS、web server、telnet程序等),真是强悍。

在他的主页上还发现了好多他自己小制作,不由得感叹老外的实际动手能力。

更让我震撼的是这个老外本科竟然是新闻专业。。。

在国外,这样的例子太多了,感觉好多老外都是性情中人,他们不带有功利色彩,完全沉醉在自己的兴趣中,将那份爱好发挥到极致。反观国内,太急功近利了。为了DIY这个CPU,Bill Buzbee用了将近五年的时间,试问我们自己又有多少人可以做到这样呢?

好好反思一下,加油吧!



附上Bill Buzbee在自己主页上的介绍:

Magic

In the summer of 1980 I celebrated my freshly minted B.S. in Journalism by blowing most of the cash I collected in graduation gifts on a TRS-80 Model 1 computer.  Sitting on the floor of my apartment I fired it up, typed in the sample BASIC program and then "RUN".

WHAT IS YOUR NAME?

"BILL", I responded.

HI BILL

Wow!  I was blown away.  This was just a machine, but I could interact with it using language that we both understood.  As a Liberal Arts graduate with next to no technical background, I found this completely astonishing.  Over the next year, I continued to play with my TRS-80 Model 1 while working as a journalist on a small-town Kansas newspaper.  I decided that I really wanted to learn more about how computers worked, so I went back to college and picked up a M.S. in Computer Science.

More than 20 years later, I found myself with an urge to touch that magic again by building my own computer from scratch.  By "scratch", I meant designing my own instruction set, wire-wrapping a CPU out of a pile of 74 series TTL devices and writing (or porting) my own assembler, compiler, linker, text editor and operating system.

I'm calling this computer the "Magic-1", or M-1 for short.  It's a one-address, microprogrammed machine with  one-byte opcodes.  It features 8/16-bit data operations, functioning on an 8-bit wide data bus with 16-bit addresses (mapped via 2K-byte pages into a 22-bit physical address space).   Code and data address spaces can be shared or disjoint, giving each process up to 128K bytes of addressing.   User and supervisor modes exist, along with hardware address translation, memory-mapped IO, and support for DMA and externally-generated interrupts.  As far as components go, it is built entirely out of 74LS and 74F-series TTL devices plus modern SRAM and EPROMs for the microcode store.   After redesigning the memory access mechanism several years into the project, Magic-1 runs at 4.09 Mhz.

Goals

OK, so I understand wanting to do your own CPU, buy why on earth are you doing it this way?  I mean, why TTL - why not FPGA?  And really, 16-bit virtual addresses in a 22-bit physical address space!  What's the deal with that?

I guess any project should start off with some notion what of what you're trying to achieve. My high-level project goals were:

bullet Touch the magic.  By this I meant to gain a deeper understanding of how computers work, and specifically computers similar to those of the late 70's and early 80's that first fired my interest.  For this reason, the Z80 loomed large in my mind throughout the design process, and running with an 8-bit data bus and 16-bit addresses just seemed right.  Although I was largely trying to use parts that would have been current in that time, I wasn't shooting for historical accuracy.  My choice of 74xx is a nod to the past, and my choice of 74Fxx had more to do with availability. bullet TTL rather than FPGA. My reasons here pretty much boil down to "because that's what I want to do."  FPGAs do sound fun, but I really am drawn towards using technology that is similar to that which was current when I first became introduced to computers.  Perhaps for Magic-2.... bullet Learn more about computing areas in which I have interest, but much ignorance.   From my years as a software developer, I've gained a passing familiarity with language tools.  However, I really wanted to better understand hardware and operating systems.  To this end, I pushed the hardware complexity to what I consider the limits of my hobbyist abilities, and included support for preemptive multitasking and paging to enable me to support a "real"  operating system for my machine. bullet Build something real.  I'm proud of some of the software I've written, but I thought it would be nice if I could have something physical to show for all my work.  That's part of the reason I went with wire-wrap.  My wife and kids may not be impressed by my instruction set design, but all those wires ought to at least get some sort of reaction from them ("Geez Dad, you're such a nerd.  Would you please put that thing away before my friends come over and you embarrass me to death?"). bullet Functionality over Speed.  I don't really need this machine to be as fast as possible.  Efficient, yes - but wherever possible I traded off speed for simpler circuits.   bullet Compactness.  One of my pet peeves is how bloated modern software is.  I think there's a lot you can do with 128K bytes of addressing, and I liked the idea of keeping things compact and utilitarian.  I've tried to construct an expressively dense set of 1-byte opcodes. 

At the end of the day, I wanted a working, and useful, machine that I understood completely.  Oh, and it had to have a real front panel with lots and lots of cool blinky lights.

原创粉丝点击