Reimplementing Alto

Home

Transputers >>
<< Forth processors

Usenet Postings
  By Subject
  By Date

FPGA CPUs
  Why FPGA CPUs?
  Homebuilt processors
  Altera, Xilinx Announce
  Soft cores
  Porting lcc
  32-bit RISC CPU
  Superscalar FPGA CPUs
  Java processors
  Forth processors
  Reimplementing Alto
  Transputers
  FPGA CPU Speeds
  Synthesized CPUs
  Register files
  Register files (2)
  Floating point
  Using block RAM
  Flex10K CPUs
  Flex10KE CPUs

Multiprocessors
  Multis and fast unis
  Inner loop datapaths
  Supercomputers

Systems-on-a-Chip
  SoC On-Chip Buses
  On-chip Memory
  VGA controller
  Small footprints

CNets
  CNets and Datapaths
  Generators vs. synthesis

FPGAs vs. Processors
  CPUs vs. FPGAs
  Emulating FPGAs
  FPGAs as coprocessors
  Regexps in FPGAs
  Life in an FPGA
  Maximum element

Miscellaneous
  Floorplanning
  Pushing on a rope
  Virtex speculation
  Rambus for FPGAs
  3-D rendering
  LFSR Design
 

Google SiteSearch
Newsgroups: alt.folklore.computers,comp.arch,comp.arch.fpga
Subject: Alto in an FPGA (was CPU's directly executing HLL's)
Date: Wed, 7 Jul 1999 10:22:19 -0700

Paul Wallich wrote in message ...
>It's a little amusing to note that the emulator, the thread executing the
user's
>program, was actually the lowest-priority thread. (Also amusing to
>think that Alto micromachine was something like 1600 gates -- you
>could build dozens of them on a single FPGA).

Perhaps, but if you count the register files and constant and microcode
memory it was much larger than 1600 gates.

A while back (around Alto's 25th anniversary) I briefly considered
implementing an Alto in a Xilinx XC4000 FPGA.  A 1979 era Alto processor,
*excluding microcode memory*, requires approximately 400 configurable logic
blocks (CLBs):

CLBs  What
----  ----
16    32x16-bit R registers
128   8x32x16-bit S registers  (1979 Alto)
(16    32x16-bit S registers (1974 Alto))
128   256x16-bit constant memory
64?   rest of datapath
64?   control
(4096  4096x32-bit microcode control memory)
----
~400 CLBs + lots of TBUFs (the 16-bit "processor bus" is driven by 9+
sources)

This would probably fill a 24x24 CLB Xilinx XCS30XL.  Perhaps you could
include processor and equivalent I/O controllers in an XCS40XL.

Now Xilinx has introduced their Virtex device family, which features 8+
256x16 dual port embedded SRAM blocks.  You could implement the S registers
in one block ram, the constant memory in another.  A 2KW subset of the 4KW
control memory would require 16 more, but would still fit in one of the
larger Virtex devices.

ref: Thacker et al, Alto: A Personal Computer, chapter 33 in Siewiorek et
al, Computer Structures: Principles and Examples, McGraw-Hill, 1982

BTW, you can theoretically build dozens of simple CPUs in a single FPGA: see
discussion thread at http://deja.com/getdoc.xp?AN=277216882 (XC4085XL) and
also http://deja.com/getdoc.xp?AN=444640841 (Virtex).

Jan Gray

Copyright © 2000, Gray Research LLC. All rights reserved.
Last updated: Feb 03 2001