Skip to main content
Home Documents Game Manuals SCSI Accelerator 2.1
SCSI Accelerator 2.1

SCSI Accelerator 2.1

Game Manuals · PDF
FilenameSCSI_Accelerator_2.1.pdf
Size0.01 MB
Subsection SCSI Accelerator 2.1
Downloads0
Enjoying MacTrove? Anonymous downloads are free and unlimited. Create a free account to track favorites, contribute metadata corrections, and join the community chat.
Reader
SCSI Accelerator 2.1
/
Loading…
OCR / Text contents
WHAT SCSI-ACCELERATOR IS ALL ABOUT. The accelerator works only on a MacPlus! It enhances the throughput of I/O operations for so called blind read and write operations. Nothing else is affected. The reason that the performance of these operations can be enhanced is that Apple's code to do these operations is (and must be) suited to handle a variety of disk types. Some of these are slower than others. In the following discussion we will talk about read operations only, but the discussion applies just as well to write operations. When transfering data to or from a SCSI device, there is no support for hardware handshake on the MacPlus (there is some on the other Macintoshes). Because of this, the only really safe way to do the I/O is to poll the SCSI chip for the arrival of a new byte each time you need one. Of course this is slow. Therefore Apple introduced the "blind" operations. For blind operations, the system only waits for the arrival of the first byte, the rest of them are read in a small loop which looks like this: @1 move.b (a1),(a2)+ dbra d6,@1 This means that after every transfer of a single byte, the Macintosh waits at least the time to execute the DBRA (about 10 cycles) before fetching the next byte. This is long enough for even the slowest hard disk that Apple anticipated to have the next byte ready. In fact, most hard disk can deal with a lot less! Reduction of this "dead" time can be achieved by unfolding the loop, i.e. reducing the loop trip count and putting more than a single move.b instruction in the loop body. Of course, if we put two moves right next to each other, we get the fastest transfer that is possible (knowing that we do not have a DMA controller). This might be too fast for some hard disks, so it may well be that we have to put one or more NOP instructions between each two move.b instructions. The execution time of a NOP is only 4 cycles however, much less than for the DBRA and thus, throughput can be increased even if we need 2 NOPs per move.b. By increasing the number of move.b instructions in the loop body, we further decrease the looping overhead, leading to increased performance, but of course, also to more use of memory for the code. Since the loop illustrated is 6 code bytes long, there is just enough place to replace the loop with a JSR instruction to a patched version of the loop that applies these techniques. This is exactly what the SCSI-Accelerator does. The reason that this does not improve performance on the Mac SE or II/IIx is that those machines support a sort of pseudo DMA transfer mode that already takes care of getting in the bytes as soon as they arrive. For this reason, the accelerator init refuses to install itself on anything other than a Mac Plus. HOW TO USE IT. As said before, if you do not operate a Mac Plus, forget it, it will not install! If you are using a MacPlus, the thing to do is to find out what kind of unfolded loop will still work for your configurati…

Showing first 3,000 characters of 6,850 total. Open the full document →

mp.ls