ken@jose.uucp (Ken MacLeod) (11/16/89)
I've just read yet another review on Mac accelerators, and how they've "attached directly to the CPU, to bypass the 10MHz NuBus access to the devices," and therefore disabling any use whatsoever of the original CPU. Hasn't it occurred to any accelerator developer that the Mac needs a DMA controller, as well as a faster processor? Don't their mice drop dead any time the floppy turns on? Don't they run Spinning Globe in the background all the time :-)? Don't their systems use the CPU to read in stuff off the hard disk, like my Mac does? Why isn't there an accelerator that is _just_ a processor and memory on a card, and passes I/O commands (at quickdraw, file manager, etc. levels) on to the motherboard? For bulk transfers, the motherboard can either read/write directly into the card's memory instruction at a time, or the card can include a simple memory-to-memory DMA that the motherboard CPU sets up. For control structures, two CPU RAM regions would be logically mapped so that pointers could point to one from the other. The M-to-M DMA unit could also be used for reads/writes into video card RAM (if you know how QuickDraw or PostScript handles rasterizing, you should drop your jaw in awe of what that means, CPU handles start/end, DMA handles between while CPU...). It seems to me that the CPU/NuBus technology is already there, and from enough programming on the Mac it seems simple enough to copy the ROMs into the card and patch in interfaces that send the relevant commands to the motherboard, and let the ROMs on the motherboard take it from there. A second step, a little more difficult, is putting some structures on card RAM, others in motherboard RAM, handled by the resource manager and placed in the RAM closer to the routines that access them most, like offscreen bitmap on the motherboard, but port/window structure in card RAM. With 030s or a PMMU for 020 machines, interlocking could be implemented easily using the page permission mechanism, as well as mirroring some often accessed common addresses in both RAMs using "write-through" to get it to the other RAM. Comments? Job offers? :-) -- Ken, ken@jose.UUCP, caeco!jose!ken@cs.utah.edu
chewy@apple.com (Paul Snively) (11/17/89)
In article <1989Nov15.214527.1212@jose.uucp> ken@jose.uucp (Ken MacLeod) writes: > Why isn't there an accelerator that is _just_ a processor and memory > on a card, and passes I/O commands (at quickdraw, file manager, etc. levels) > on to the motherboard? For bulk transfers, the motherboard can either > read/write directly into the card's memory instruction at a time, or the > card can include a simple memory-to-memory DMA that the motherboard CPU > sets up. For control structures, two CPU RAM regions would be logically > mapped so that pointers could point to one from the other. The M-to-M > DMA unit could also be used for reads/writes into video card RAM (if you > know how QuickDraw or PostScript handles rasterizing, you should drop > your jaw in awe of what that means, CPU handles start/end, DMA handles > between while CPU...). > > It seems to me that the CPU/NuBus technology is already there, and from > enough programming on the Mac it seems simple enough to copy the ROMs into > the card and patch in interfaces that send the relevant commands to the > motherboard, and let the ROMs on the motherboard take it from there. Uh... I honestly don't believe you could possibly have looked at much of our ROM code and still be saying that with a straight face. :-) I'm not the hardware guru here, though, so let me pass it on to them to comment on... At least one DMA SCSI card has been done, but certainly nothing of the scope that you're suggesting. It's a great idea, but I think it'd take pretty much a total rewrite of everything that we have. Not that that'd a bad idea; it's just expensive. __________________________________________________________________________ Just because I work for Apple Computer, Inc. doesn't mean that they believe what I believe or vice-versa. __________________________________________________________________________ C++ -- The language in which only friends can access your private members. __________________________________________________________________________