GARTHWILSON wrote:
If you're talking about the processor actually pausing to give more time for slow parts on buffered buses, how about doing that in the clock signal feeding the whole system including the processor?
I've thought of this solution, but I'm not too happy with it, as it's not guaranteed to work across all microprocessors. E.g., if I also want to slap in a 68000 or even a homebrew processor integrated into an FPGA, I can't guarantee success with this.
Quote:
This all brings me back to some of the reasons why, for my next computer (which has been on the drawing board for years now, evolving slowly, but not becoming reality so far), I decided not to bring any bus signals-- even buffered-- out to a backplane.
The reason I'm not particularly happy with this solution is that it doesn't give me the ultimate freedom to make any kind of card I want. For example, I could make an IEEE-488 bus using DB25 connectors for cards to plug into. IEEE-488 allows for pretty zippy data transfers in a pure hardware-oriented interface. But, there are several problems with it:
* EVERY plug-in card requires local intelligence of some kind. Not every expansion device requires local intelligence. For example, it's highly unlikely that a programmer for a PIC or AVR microcontroller, or even an EEPROM, requires local intelligence.
* Bit-banged I/O is slow, plain and simple. This throws away any hope at all of me making a video card for the computer. Yeah, I suppose I could just build a video card with local intelligence, and have it pass graphics via the GPIB bus, BUT, doing so is grievously slow. You can kiss any hope of full 60fps animation out the window with that.
* Bit-banged I/O requires the aid of the computer's CPU. Unless I use a dedicated microcontroller just for the expansion backplane, there is no hope of me getting any kind of reasonable computation speed if it's constantly babysitting the bus. For example, let's pretend that we can drive our GPIB at at least 12.6MBps throughput somehow. That means, for a 320x480 display, I'd be using a solid 75% of the CPU's resources just to manually blast data to the screen.
* If I do use a dedicated microcontroller to control access over the I/O bus, I require some means of interfacing the host processor to it. This will be like using the USB host controllers, where you never can address a device by address and just twiddle some bits. No, you have to send a *packet* to the device asking it for some status, make your adjustment, then send a packet back to the device with the updated value. That's a lot of I/O overhead for something a 6502 can do in a single RMW cycle.
Quote:
make fast memory transfers for something like streaming video. You could still construct a whole card cage of equipment for running a factory
My goal isn't to run a factory. My goal is to make a usable desktop computer.
Quote:
own intelligence onboard, and not need high-speed babysitting by the processor.
They still would need fast interconnects to the processor. Nothing is more aggrevating to a user than an 8MHz microprocessor driving the video display at only four frames per second. Even a Macintosh Classic could do a whole lot better than that.