[this was from an long discussion, rest snipped] ###### From: hnsngr@sirius.com (Ron Hunsinger) Newsgroups: alt.folklore.computers Subject: Re: Non-von Neumann Machines? Date: Mon, 16 Nov 1998 16:19:16 -0800 Organization: ErsteSoft Lines: 64 Message-ID: References: <72ltht$be5@srvr1.engin.umich.edu> <911146422.25027.0.nnrp-09.9e9878e0@news.demon.co.uk> <72p68h$d0l$1@news.igs.net> <3650A7D3.26D9@gazonk.del> NNTP-Posting-Host: ppp-asft07--212.sirius.net Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Newsreader: Yet Another NewsWatcher 2.3.1 Path: chonsp.franklin.ch!pfaff.ethz.ch!news-zh.switch.ch!news-ge.switch.ch!news.maxwell.syr.edu!news1.best.com!newshub.sirius.com!newsfiler.sirius.com!hnsngr In article <3650A7D3.26D9@gazonk.del>, "Foobar T. Clown" wrote: > Does anybody know of any other cases where a non Von Neumann CPU could > write its own program? I'm pretty sure the PERQ was not the world's > only Writeable Control Store machine, and how 'bout some of those "DSP" > microprocessors? The Intel 4004 fetched instructions from a ROM that consisted of up to 16 pages of 256 8-bit bytes each. Data, on the other hand, was measured in 4-bit digits, consisting of 16 4-bit registers, plus whatever you had available in RAM chips. RAM was made up of registers, each of which contained 4 directly-addressabe 4-bit digits, plus 8 indexable 4-bit digits (the whole 12 digits being meant to hold one floating point number with an 8-digit mantissa). Each RAM chip held four such registers, and also had two 8-bit I/O ports. Fully loaded, you could have up to 8 such RAM chips, although it took a godawful amount of external circuitry to support more than three. So, maxed to the hilt, a 4004 could have 4096 bytes of instruction memory, and up to 32 floating-point registers (or 384 digits total, but in a non-linear address space). But 12 floating point registers (144 digits, or 72 bytes) was a more typical upper limit on RAM. No stack. Instead there were 4 program counters. A subroutine call made the next PC in sequence the active one, and then behaved like a jump instruction to load a new value into the new PC. Return from subroutine just made the previous PC the active one. There was nothing else you could do with these registers. You couldn't even read them. Nest your subroutine calls more than three deep, and you can't go back. Instructions could not be fetched from RAM -- not only was addressing entirely different, but RAM contained 4-bit data, and instructions were 8-bit data. Nor could you modify the instructions -- they were in ROM, and because it was ROM the instruction set did not contain any instructions to write to that address space. You could fetch data from ROM, loading one byte into a pair of 4-bit registers, but only if the data was being fetched from the same bank of memory as the instruction doing the fetch. (That's because the instruction only had room for an 8-bit address. The 4 high-order bits were taken from the high-order bits of the program counter.) But in our school lab (UC Berkeley), we had a 4004 system that had been fixed up so that 2048 bytes of the ROM was actually RAM. Since there were still no instructions to write to it, you had to sneak around the back way. You could load an address into the I/O ports, and then write data through another port, 4 bits at a time. It took two such writes to accumulate one byte to be written. The external circuitry kept track of whether you had made an even or odd number of writes since power up, and lord help you if you lost count, because there was no way to sense the state programatically. I think that qualifies as a non-Von Neumann architecture that neverthless permitted the program to modify itself. (In fact, as our class project, four of us managed to squeeze a decent monitor (we called it an OS) into 1024 bytes of that ROM/RAM, including drivers for keboard, LED, thermal printer, and magnetic tape. We could write programs out to a slightly-modified Radio Shack casette tape at ~1400 bits per inch, and read them back. We even supported a rudimentary file system on the tape. Those were the days, when men were men because computers were wimps. I'm glad they're over.) -Ron Hunsinger