Hello,
We use IDE flash-based storage in our embedded systems. For several years, our supplier has provided us with PQI DiskOnModules:
I find their performance rather lacking.
Media transfer rate write 1.2 MB/sec (typ.) read 4.1 MB/sec (typ.)
Interface burst transfer rate PIO mode 2 - 8.3 MB/sec (max)
The data sheet also mentions a pair of DMA signals, but I can't figure out how to enable DMA.
Do modern flash-based IDE-compatible storage solutions offer more features, like DMA bus mastering, multi-word DMA, Ultra DMA, higher PIO modes and better throughput (both interface and sustained)?
Or are the DOMs I have typical of what is available today?
# hdparm -v /dev/hda
/dev/hda: multcount = 0 (off) IO_support = 1 (32-bit) unmaskirq = 1 (on) using_dma = 0 (off) keepsettings = 0 (off) readonly = 0 (off) readahead = 256 (on) geometry = 500/8/32, sectors = 128000, start = 0
# hdparm -I /dev/hda
/dev/hda:
ATA device, with non-removable media Model Number: PQI IDE DiskOnModule Serial Number: DOM6B00011677 Firmware Revision: ra03.00e Standards: Likely used: 1 Configuration: hard sectored not MFM encoded head switch time > 15us fixed drive disk xfer rate > 5Mbs Logical max current cylinders 500 500 heads 8 8 sectors/track 32 32 -- bytes/track: 0 bytes/sector: 528 CHS current addressable sectors: 128000 LBA user addressable sectors: 128000 device size with M = 1024*1024: 62 MBytes device size with M = 1000*1000: 65 MBytes Capabilities: LBA, IORDY not likely Buffer type: 0002: dual port, multi-sector Buffer size: 1.0kB bytes avail on r/w long: 4 Cannot perform double-word IO R/W multiple sector transfer: Max = 1 Current = 0 DMA: not supported PIO: pio0 pio1 pio2
# hdparm -i /dev/hda
/dev/hda:
Model=PQI IDE DiskOnModule, FwRev=ra03.00e, SerialNo=DOM6B00011677 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs } RawCHS=500/8/32, TrkSize=0, SectSize=528, ECCbytes=4 BuffType=DualPort, BuffSize=1kB, MaxMultSect=1, MultSect=off CurCHS=500/8/32, CurSects=128000, LBA=yes, LBAsects=128000 IORDY=no PIO modes: pio0 pio1 pio2 AdvancedPM=no
- signifies the current active mode
# hdparm -t /dev/hda
/dev/hda: Timing buffered disk reads: 18 MB in 3.00 seconds = 5.99 MB/sec
# hdparm -t --direct /dev/hda
/dev/hda: Timing O_DIRECT disk reads: 20 MB in 3.30 seconds = 6.06 MB/sec
Regards.