Thank you for your ideas Mrs Beanbag.
With regards to FPGAs, you are correct that currently they are often used for rapid prototyping. However, they are occassionally used in commercial products,
I should have said rapid prototyping and low-volume production. But in either case, the problem is to "make some hardware", to put it simply. They are not yet thinking outside of the box. Once the design is put on the chip (by some external device or circuit), it is a constant, so as to behave just like any other special-purpose chip.
Use of RAM for reconfigurable computers is an interesting idea, but I'm not quite sure how it would work. Could you explain more?
Basically, I'm suggesting that instead of the Look Up Tables (LUTs) being initialised once by some external device, it can configure and reconfigure itself on the fly. Currently (as I understand it at least) the device has to be turned off, loaded with a design, and then turned on again. But rather it could load its own design through a DMA channel or suchlike as it goes along.
In fact the Amiga already has an FPGA in it. It is called the Blitter. The blitter has three sources which it can combine using any combinatorial logic supplied to it in the Minterms field of its control registers. This Minterms field then is exactly the same as the LUT in an FPGA's logic cell. It applies the same LUT to every bit in a 16-bit word at once and then sequentially on word after word, which it pulls in through DMA and writes out again. Now imagine if it could pull the Minterms in through DMA as well, it would open up all kinds of possibilities. Then if you could connect lots of blitters together so that they could pipe their outputs to each other, many things become possible.
I've never seen anyone mention this, but you can configure the blitter to do arithmetic addition. Presumably this is why the fill operation works in descending mode only - it is to propagate the carry bit.
So really using FPGAs isn't so different from the Amiga afterall!
Yes, I intended the CPU to be programmable in the way you suggest. When you say we could go further than an FPGA design here, what do you have in mind?
What I have in mind is a pipelined scheme where not only the data can be passed down the pipeline, but the functionality as well! Say for instance you want a processing unit that can perform several different kinds of pipelined operation. So instead of having a pipeline for each different operation, you can pull the circuits themselves from memory and actually pass the functionality down the one pipeline.