A custom PC configuration guide. © 2000,2001,2002,2004 by Jef Poskanzer.
The essence of a computer system is moving data around. If you don't have enough bandwidth at some point along the path you need to move your data, you'll have a bottleneck, a limit on your system's performance. To avoid such bottlenecks you have to understand your system's bandwidth capabilities.
The following table shows the maximum bandwidths for a bunch of different interfaces that might be in your system, sorted by speed. These bandwidths are theoretical - the actual data transfer rates will be somewhat lower. In particular, memory typically transfers at maybe half its interface speed, and disk drives generally don't even come close to their interface bandwidth. To get the actual transfer rates you have to do benchmarking, which is hard. Still, the theoretical numbers are useful for rough estimates.
Key: |
|
Interface | Width | Frequency | Bytes/Sec | Bits/Sec |
---|---|---|---|---|
4-way interleaved PC1600 (DDR200) SDRAM | 4 x 64bits | 100 MHz DDR | 6.4 GB/s | 51 Gbps |
Opteron HyperTransport memory bus | 128bits | 200 MHz DDR | 6.4 GB/s | 51 Gbps |
Pentium 4 "800 MHz" FSB | 64bits | 200 MHz QDR | 6.4 GB/s | 51 Gbps |
PC2 6400 (DDR-II 800) SDRAM | 64bits | 400 MHz DDR | 6.4 GB/s | 51 Gbps |
PC2 5300 (DDR-II 667) SDRAM | 64bits | 333 MHz DDR | 5.3 GB/s | 43 Gbps |
Pentium 4 "533 MHz" FSB | 64bits | 133 MHz QDR | 4.3 GB/s | 34 Gbps |
PC2 4300 (DDR-II 533) SDRAM | 64bits | 266 MHz DDR | 4.3 GB/s | 34 Gbps |
2-channel PC1066 RDRAM | 2 x 16bits | 533 MHz DDR | 4.3 GB/s | 34 Gbps |
PCI-X 533 | 64bits | 533 MHz | 4.3 GB/s | 34 Gbps |
PCI-Express x16 | serial/16lanes | 2.5 GHz | 4 GB/s | 32 Gbps |
Pentium 4 "400 MHz" FSB | 64bits | 100 MHz QDR | 3.2 GB/s | 25.6 Gbps |
2-channel PC800 RDRAM | 2 x 16bits | 400 MHz DDR | 3.2 GB/s | 25.6 Gbps |
2-way interleaved PC1600 (DDR200) SDRAM | 2 x 64bits | 100 MHz DDR | 3.2 GB/s | 25.6 Gbps |
PC2 3200 (DDR-II 400) SDRAM | 64bits | 200 MHz DDR | 3.2 GB/s | 25.6 Gbps |
PC3200 (DDR400) SDRAM | 64bits | 200 MHz DDR | 3.2 GB/s | 25.6 Gbps |
PC2700 (DDR333) SDRAM | 64bits | 167 MHz DDR | 2.7 GB/s | 21 Gbps |
PC2100 (DDR266) SDRAM | 64bits | 133 MHz DDR | 2.1 GB/s | 17 Gbps |
AGP 8x | 32bits | 533 MHz | 2.1 GB/s | 17 Gbps |
PCI-X 266 | 64bits | 266 MHz | 2.1 GB/s | 17 Gbps |
PCI-Express x8 | serial/8lanes | 2.5 GHz | 2 GB/s | 16 Gbps |
EV6 bus (Athlon/Duron FSB) | 64bits | 100 MHz DDR | 1.6 GB/s | 13 Gbps |
PC1600 (DDR200) SDRAM | 64bits | 100 MHz DDR | 1.6 GB/s | 13 Gbps |
PC800 RDRAM | 16bits | 400 MHz DDR | 1.6 GB/s | 13 Gbps |
PC150 SDRAM | 64bits | 150 MHz | 1.3 GB/s | 10.2 Gbps |
10 gigabit ethernet | serial | 10 GHz | 1.25 GB/s | 10 Gbps |
OC-192 | serial | 9.953 GHz | 1.24 GB/s | 9.953 Gbps |
133 MHz FSB | 64bits | 133 MHz | 1.06 GB/s | 8.5 Gbps |
PC133 SDRAM | 64bits | 133 MHz | 1.06 GB/s | 8.5 Gbps |
AGP 4x | 32bits | 266 MHz | 1.06 GB/s | 8.5 Gbps |
PCI-X | 64bits | 133 MHz | 1.06 GB/s | 8.5 Gbps |
PCI-Express x4 | serial/4lanes | 2.5 GHz | 1 GB/s | 8 Gbps |
100 MHz FSB | 64bits | 100 MHz | 800 MB/s | 6.4 Gbps |
PC100 SDRAM | 64bits | 100 MHz | 800 MB/s | 6.4 Gbps |
PC66 SDRAM | 64bits | 66 MHz | 533 MB/s | 4.3 Gbps |
fast/wide PCI | 64bits | 66 MHz | 533 MB/s | 4.3 Gbps |
AGP 2x | 32bits | 133 MHz | 533 MB/s | 4.3 Gbps |
single-link DVI | 12bits | 165 MHz DDR | 495 MB/s | 3.96 Gbps |
Ultra-320 SCSI | 16bits | 160 MHz | 320 MB/s | 2.6 Gbps |
OC-48 network | serial | 2.488 GHz | 311 MB/s | 2.488 Gbps |
AGP | 32bits | 66 MHz | 266 MB/s | 2.1 Gbps |
PCI-Express x1 | serial | 2.5 GHz | 250 MB/s | 2 Gbps |
Serial ATA/1500 disk | serial | 1.5 GHz | 187 MB/s | 1.5 Gbps |
Ultra-160 SCSI | 16bits | 80 MHz | 160 MB/s | 1.3 Gbps |
OC-24 network | serial | 1.244 GHz | 155 MB/s | 1.244 Gbps |
PCI | 32bits | 33 MHz | 133 MB/s | 1.06 Gbps |
ATA/133 disk | 8bits | 66 MHz DDR | 133 MB/s | 1.06 Gbps |
gigabit ethernet | serial | 1 GHz | 125 MB/s | 1 Gbps |
ATA/100 disk | 8bits | 50 MHz DDR | 100 MB/s | 800 Mbps |
IEEE 1394b | serial | 800 MHz | 100 MB/s | 800 Mbps |
Ultra-2 Wide SCSI | 16bits | 40 MHz | 80 MB/s | 640 Mbps |
OC-12 network | serial | 622.08 MHz | 77.7 MB/s | 622.08 Mbps |
ATA/66 disk | 8bits | 33 MHz DDR | 66 MB/s | 533 Mbps |
USB-2 | serial | 480 MHz | 60 MB/s | 480 Mbps |
IEEE 1394 | serial | 400 MHz | 50 MB/s | 400 Mbps |
Ultra Wide SCSI | 16bits | 20 MHz | 40 MB/s | 320 Mbps |
ATA/33 disk | 8bits | 16.6 MHz DDR | 33 MB/s | 266 Mbps |
Fast Wide SCSI | 16bits | 10 MHz | 20 MB/s | 160 Mbps |
OC-3 network | serial | 155.52 MHz | 19.4 MB/s | 155.52 Mbps |
100baseT ethernet | serial | 100 MHz | 12.5 MB/s | 100 Mbps |
OC-1 network | serial | 51.84 MHz | 6.5 MB/s | 51.84 Mbps |
T-3 network | serial | 45 MHz | 5.6 MB/s | 44.736 Mbps |
USB | serial | 12 MHz | 1.5 MB/s | 12 Mbps |
10baseT ethernet | serial | 10 MHz | 1.25 MB/s | 10 Mbps |
IrDA-2 | serial | 4 MHz | 500 KB/s | 4 Mbps |
T-1 network | serial | 1.5 MHz | 193 KB/s | 1.544 Mbps |
Key: |
|
Data transfers are mostly between memory and CPU or peripheral devices, so I've colored the table accordingly. You can use this table to spot possible bandwidth bottlenecks. For instance, if you're planning a high-end web server with a gigabit ethernet interface, your transfers will be from disk through PCI to memory, and from memory through PCI to ethernet. If you give the system enough memory, the disk to memory transfers will be minimized, so most of your data will be going memory->PCI->ethernet. You can easily see that memory bandwidth will not be a bottleneck; however, regular PCI has just barely more bandwidth than gigabit ethernet, so that could be a problem. If possible, you should configure your system with 64-bit 66 MHz PCI, and be sure your gigabit NIC supports it too.
The number of bits of an interface is relevant because the cost of manufacture goes up with the number of pins or wires. Also on crowded motherboards it's easier to fit narrower interfaces. This is why at first there were dual-channel RDRAM boards but few dual-channel SDRAM boards. Of course these days we're starting to see quad-channel DDR boards.
The frequency of an interface is relevant because chip and signalling technology imposes an upper limit. For signals on a circuit board, the 400 MHz of PC800 RDRAM is probably the maximum. For cables from a motherboard to a peripheral, the 80 MHz of Ultra-160 SCSI is probably the maximum. DDR (double data rate) is a hack that sends bits on both the rising and falling transitions of the clock, and can be used to increase the data rate without increasing the clock frequency. I've heard QDR - quad data rate - mentioned, but I don't see how that could work!