Part 1 can be found here.
Part 2 can be found here.
Part 3 can be found here.
It took much longer than I thought, both because I've been busy, and because I extended this review to more than I originally intended.
Background
This part will be dedicated to CompactFlash readers. CompactFlash used to be very popular back in the day, as it had the ability to offer higher read/write speeds that contemporary SecureDigital cards. However, with the improvement of SD technology, CF became less popular, because, with all the irony in its name, it is not compact enough compared to SD.
CF is still used by some high-end cameras, and memory cards are still being produced. However it is far less common now. Previously, many high end monitors, such as the DELL 2408WFP and DELL 3008WFP, offered a CF slot, alongside SD. However, their successors have eliminated the CF, and stuck with SD only.
CF is also much less common than SD on laptops. CF Card slots on Thinkpads have been gone since the X3x series, replaced by SD/multi-card slots, starting from the X4x series and up to modern machines. CF made a brief comeback in the short-lived W70x series, whose 17” chassis was considered large enough to accommodate the slot without sacrificing something else, more important.
CF cards and the CF protocol is by nature far more complicated than the SD card. CF cards can work in one of three modes:
1) PC Card mode, in either memory-mapped or I/O-mapped sub-modes (the sub-mode is chosen by the PCMCIA configuration registers)
2) IDE mode, in which the CF card behaves like an IDE device
In IDE mode, the CF can be accessed either using PIO (programmable IO) or DMA (direct memory access), like typical IDE devices. The DMA mode is much preferred, as it gives far better performance, at far lower CPU utilization compared to the interrupt-driven PIO. Both the card and the host device must support DMA for it to be available, and indeed cards touting DMA (UDMA) support have become commonplace in the past decade.
Host device support for UDMA is far trickier. Physically, the CF pinout allows for passive adapters both to IDE (ATA) and CardBus/PCMCIA controllers, which makes CF slots very easy to implement off either interface. While any semi-modern IDE controller supports UDMA, the situation with CardBus/PCMCIA is very different. For whatever reason, DMA support was not integrated into the majority of said controllers. In fact, only one CardBus CF adapter is known to officially support UDMA – the Delkin CardBus UDMA CF Adapter, which was manufactured during a very short period between 2007 and 2008, probably in small quantities. It is very rare, and no manufacturer seems to be making similar products nowadays. This is probably due to the availability of USB-based solutions, which use memory-mapped mode and do not need UDMA, and the decline in CF popularity in general.
Some more light is shed on this subject in the following links:
CompactFlash cards and DMA/UDMA support in True IDE (tm) mode
CardBus <==> CF adapter - PIO only, CF supports UDMA 5
Thus, to get the full performance of a fast, modern, UDMA-capable CF card, one needs to either use it with an internal ATA/IDE controller (essentially as a hard drive replacement), or in a USB-based card reader.
The Cards
To investigate the performance of some of the different CF readers out there, I ran the CrystalDiskMark tests using two devices:
* Delkin 16GB 1000X UDMA7 CF Card(rated 150MB/s read and 80MB/s write)
* Delkin 32GB UHS-1 SD633X SDHC card (rated 95MB/s read and 80MB/s write), via SDXC-to-CF UDMA-Capable Adapter
The adapter I got on eBay is actually little different in appearance (see picture), but I believe it to be the same device. It sits flush inside any full-depth CF slot, and the SD card, when fully inserted is flush inside the adapter. However, as the orientation of the SD slot is perpendicular to the adapter, the SD card will not be accessible without removing with CF adapter from the slot as well.
CF to SDXC Adapter with SD card partially inserted
The Devices
Built-in CF slot on the Thinkpad X32
The CF slot is wired to the Ricoh dual-slot CardBus controller, which also provides the CardBus slot on the laptop. However, the CF slot works in 16-bit PCMCIA (PC Card) mode only. When a card is plugged in, a PCMCIA IDE/ATAPI Controller appears in the device manager, which is not a PCI device, but a legacy PCMCIA one (enumerator shown as PCMCIA/PNP0600). The controller is only visible when a CF card is inserted, and the disk drive appears as volume under the controller (when “View devices by connection” is used).
Being PCMCIA has one inconvenient side effect of potential interrupt conflicts with other devices sharing the same IRQ. Apparently, while PCI devices are required to “play nice” in shared IRQ scenarios, PCMCIA devices do not always comply to these rules. In some cases when I had a device (such as a USB adapter) inserted into the CardBus slot, and the CF slot was occupied too, the system would freeze completely until the CF device was removed and the PCMCIA/IDE controller went offline, at which point it would function again normally.
The PCMCIA-CF controller operates the slot in native IDE mode, and does not support UDMA, which limits the operation to 16-bit PIO. The performance is really lackluster because of that, but more on that is said below.
Edit: This was shown to be wrong. The correct information is this:
The PCMCIA IDE/ATAPI Controller exposes “Advanced settings” for configuring DMA/PIO modes, but no matter what you try to configure, it will always say “PIO mode”, and you cannot enable DMA/UDMA. Because of that, the performance suffers terribly (more on that later).
It can be misleading (and confused me for a while) that the PCMCIA controller exposes settings similar to a plain IDE channel, and that the CF card shows IDE as the enumerator. But it appears that this is just a logical presentation to the OS. The slot actually operates in PC Card mode, which could be verified by looking at the X3x motherboard schematics and cross-referencing the Compact Flash pinouts (page 35) with the pin nominations in the Compact Flash specification. The fact that PCMCIA appears as the enumerator is also evidence to such (in IDE mode, the channel is enumerated by PCIIDE).
Lexar High Speed 32-bit CardBus CF Reader
Lexar released one of several native 32-bit CardBus adapters for CF cards. Similar adapters exist, such as the Delkin eFilm Pro CF, the ASKA CF32 adapter and a few others. I purchased this one used on eBay, where some of them are still being sold.
CF to SDXC Adapter fully inserted into Lexar 32-bit CardBus Reader
When plugged in, the reader appears as a PCI device behind the CardBus controller. Vendor ID is 0x1145 and Device ID is 0xF021, which comes up as Workbit corporation. The Delkin eFilm Pro exposes the same IDs, which shows that these are just rebadges of the same thing. As such, either the Lexar or the Delkin drivers can be used. Depending on the driver installed, the device appears under IDE ATA/ATAPI Controllers either as Lexar 32-bit CardBus Reader or Delkin CardBus Adapter. I recommend the Delkin driver, as it appears newer (dated 2006 instead of 2004) and yielded somewhat higher performance (see below).
CF Slot on DELL 2408WFP monitor
Back in the day, DELL used to fit CompactFlash slots alongside SecureDigital on their large (24” and up) Ultrasharp monitors. Nowadays, only SD is available, as CF takes premium space and is rarely used. The 2408WFP is one of the last such models with a CF slot.
The CF reader is implemented as a USB mass storage device, attached to the USB hub that is built-in to the monitor. It appears as a standard USB Mass Storage Device with the drive itself showing as Generic Flash HS-CF USB Device (the SD multi-reader slot similarly appears as Generic Flash HS Combo USB Device). The USB IDs are 0424:2228:0539 (Standard Microsystems).
Delkin USB3.0 Multi-Card Reader
The same card reader was tested earlier in the update to the SD reader roundup. It ia a multi-LUN reader by Genesys systems (USB IDs 05E3:0732:0551), and shows 5 separate drives (displayed as Generic STORAGE DEVICE USB Device), one of which is the CF card.
Performance Compared
Because of the different interfaces utilized by the readers, it was impossible to test them all in the same system. As such, the CardBus reader was tested on the Thinkpad X32, while the Delkin USB3 reader was tested on the QX9650 desktop PC. The 2408WFP CF slot was tested on the Thinkpad T410, since that was what I had around. The results are summarized in the table below.
Code: Select all
Reader CF 1000X - Read CF 1000X - Write SD 633X - Read SD 633X - Write CPU Utilization
X32 CF (PCMCIA) 1.4MB/s 1.4MB/s 1.4MB/s 1.4MB/s 90-100%
Lexar (CardBus) 7.9MB/s 5.7MB/s 8.1MB/s 6.1MB/s 25-45%
2408WFP (USB2.0) 10.3MB/s 8.4MB/s 10.2MB/s 7.5MB/s 1-5%
Delkin (USB3.0) 117.0MB/s 69.0MB/s 25.0MB/s 23.9MB/s 1-5%
The PCMCIA-CF slot on the X32 showed abysmal performance (which is not surprising, as it has been well documented). No matter what card is used, 1.4MB/s is the maximum performance one is likely to get out of it, and that comes at a cost of 100% CPU utilization due to constant interrupt handling. This interface is therefore inadequate for any kind of data transfer of more than a few small files, which is a real pity.
The Lexar 32-bit CardBus reader was somewhat better, peaking at about 8MB/s read and 6MB/s write. This performance was measured with the 2006 Delkin driver. The original Lexar driver from 2004 was somewhat slower.
However, despite faring much better than the PCMCIA-based slot, it still uses the slow PIO mode, which limits performance and causes high CPU utilization of 25-45% during the transfer (on the 2GHz Pentium M in the X32). It keeps the the promise of being “6-8 times faster than PCMCIA readers”, but while that may have been impressive 10 years ago, it is still insufficient for modern day transfer tasks.
It was somewhat surprising to me that the USB2.0 reader in the 2408WFP monitor showed lackluster performance, of about 10MB/s read, and 8MB/s write. I actually tried all 3 configurations – CF card in CF slot, SD card (via adapter) in CF slot and SD card in SD slot, and the results were all very similar. I have seen USB2.0-based devices achieve approximately double performance, of around 20MB/s, including some which were reviewed in previous entires, and the built-in reader of the DELL U2410 monitor (which was the successor to the 2408WFP).
Finally, the Delkin USB3.0 reader delivered awesome performance. A read speed of 117MB/s is somewhat short of the promised 150MB/s, but it is still excellent faster than any SD card I’ve ever seen. 69MB/s for writing is also very good, although better results have been obtained with fast SD cards on that same reader. It is theoretically possible that the speeds could be higher with a faster USB3.0 controller, or on a faster CPU (CPU speed greatly affects USB throughput).
Interesting results were seen using the SD 633x in the CF slot of the Delkin reader – the speeds are very clearly capped at 25MB/s. The SD review showed that the same card in the SD slot is capable of speeds upward of 70MB/s). The limitation is thus clearly in the SDXC-to-CF adapter. While it may be UDMA-capable, the speed cap shows it does not support the UHS-1 protocol. I can easily excuse that, since it was probably made before the UHS-1 standardization.
Sadly, I could not obtain the much coveted Delkin CardBus UDMA CF Adapter. I haven’t seen one for sale even once during the past couple of years. It would have been interesting to see whether UDMA in IDE-based CardBus devices can really keep up with today’s ultra-fast CardBus slots. Should I ever obtain such an adapter (which seems highly unlikely), I promise to update this survey with the results.
Conclusions
While SecureDigital clearly won the battle of the memory cards in terms of market share, in the high-end card segment CompactFlash can still pack a punch. The tests showed that in terms of raw speed, there are CF cards that beat even the fastest SDXC out there.
Unfortunately, not many host-based readers are able to utilize even a fraction of that speed. With the only UDMA-capable CardBus reader ever produced not being available, it takes a high-end USB3.0 -based reader to unlock the potential of high-end CF for mass-storage purposes. PCIe-based ExpressCard readers, which were not tested in this review, should also do the job.
However, when connected to an internal ATA/IDE controller, which is natively capable of DMA modes, the modern CF cards should operate at full-speed (or close to it, depending on which UDMA revision the controller supports).