Why can a SD card be faster on an external USB reader rather than on a builtin SD reader

card-readerperformancesd cardusb

I have a Sandisk SDHC 4GB Class 2 memory card, and I have benchmarked its reading speed with Palimpsest Disk Utility, under Linux and with my Acer Travelmate 5720G laptop.

These are the speeds when it is inserted in the builtin card reader of my laptop:

enter image description here

While these instead are the values obtained while using an external USB reader (similar to the one in the image at the bottom of this question):

enter image description here

As you can see, in comparison with the USB reader, the speed is basically halved when using the builtin reader, and this behaviour sounds strange to me.
Shouldn't be the builtin reader be faster, or at least of equal speed? After all, with the external USB reader there is at least one extra step if compared with the builtin one.
I thought that the bottleneck was caused by the USB reader, but apparently it is not the case.


EDIT
Here are the specs of the SD reader

product: PCIxx12 SDA Standard Compliant SD Host Controller [104C:803C]
vendor: Texas Instruments [104C]
bus info: pci@0000:0f:06.3
version: 00
width: 32 bits
clock: 33MHz
capabilities: Power Management, bus mastering, PCI capabilities listing
configuration: driver: sdhci-pci latency: 57 maxlatency: 4 mingnt: 7
resources: irq: 22 memory: fc006800-fc0068ff

and it is attached to this PCI bridge

product: 82801 Mobile PCI Bridge [8086:2448]
vendor: Intel Corporation [8086]
bus info: pci@0000:00:1e.0
version: f3
width: 32 bits
clock: 33MHz
capabilities: pci, subtractive_decode, bus mastering, PCI capabilities listing
resources: ioport: 6000(size=4096) memory: fc000000-fc0fffff ioport: c4000000(size=67108864)

The USB controller interface instead should be this one:

product: 82801H (ICH8 Family) USB2 EHCI Controller #1 [8086:2836]
vendor: Intel Corporation [8086]
bus info: pci@0000:00:1d.7
version: 03
width: 32 bits
clock: 33MHz
capabilities: Power Management, Debug port, Enhanced Host Controller Interface (USB2), bus mastering, PCI capabilities listing
configuration: driver: ehci_hcd latency: 0
resources: irq: 23 memory: fc304400-fc3047ff


Sample USB card reader

enter image description here

Best Answer

Firstly, I'd like to make a note that only speculation can be done on the basis of the slightly vague question of yours.

On the first hunch, such a problem would be attributed to the fact that an internal SD-card reader is just another device; to you, such a device may seem as an integrated part of the system, but only in the sense that it's a part of the casing/tower/notebook.

The data link between the motherboard and the actual SD-card reader could be the culprit, but so could the SD-card reader itself be. This meaning that if the data link is slower than the data link between the USB-device, then you're going to get a slower performance. Other factors could depend on features such as write-cache, but such elements would usually be bypassed by benchmarking software.

Related Question