Weird It took me 15 mins to DOD wipe a 20 gig harddisk
The wipe probably failed.
DBAN will abort when it tries to write the last sector of the first pass on some small SCSI disks, which can happen near the 15 minute mark.
This problem is often caused by the hardware returning bogus sector counts.
In theory, DBAN should be able to approach the physical limits of the drive spec,
In practice, DBAN does indeed reach the physical limits of disk hardware because the CPU and memory subsystems in a modern computer are orders of magnitude faster than physical storage.
However, the actual sustained disk performance tends to be much less than the interface specification or the rate that is advertised by the vendor. Maximum transfer rates only happen with "cache hits", which is when the disk returns data that is already in its internal buffer.
DBAN defeats caches by doing big I/O because caches can mask small I/O, which is a bad thing. Compare versus Vier's wipe and other products that do I/O repeatedly on a small region and assume that things like fdatasync() are honest.
Conversely, DBAN assumes that fdatasync() lies and that the cache flags lie and that the world is out to get you, and it is, so the best strategy is to pummel the hardware into behaving in the desired fashion.
you're not actually transferring data over the bus except in the "verify" pass
Incorrect. Both write passes and read passes use the system bus.
Offboard ATA controllers require a slot -- whether PCI, VESA, ISA, MCA, Nubus, whatever -- so they're on the system bus. Onboard ATA controllers usually live on the southbridge, but they're on the system bus too.
Either way, the storage devices in a typical computer will be limited by bus bandwidth.
I haven't poked in the source, and this is pure speculation - but shouldn't it be able to source it's random data from the HD's cache?
First, caches are transparent. You can sometimes enable or disable caches, but you cannot access them as independent storage devices. (Well, not without deep voodoo, and certainly not with anything that would appear in DBAN.)
[link http://www.google.com/search?q=%22hard+ ... e+glossary
Second, a cache isn't an entropy source. It does not produce random data unless it is defective.