July 26, 2005
When it comes to performance, there's always a bottleneck. The question is, which bottleneck? That's why one of the more interesting back of the envelope calculations is to ask, "what if it was infinitely fast?"
One way to make something infinitely fast is to make it a no-op. Instead of doing work, it does nothing. This is also known as "null driver" in hardware circles. It shows how fast your hardware could be given the limits of the underlying operating system infrastructure. Standard 2D graphics operations in Windows have been equal to null driver performance since about 1999:
Modern graphics companies concerned about 2D performance take something called a NULL driver -- a graphics driver than accepts the low level rendering commands but does no rendering work whatsoever -- and see how close they can come to its performance. Companies like Matrox are basically almost at the NULL driver performance in all situations.
This probably says more about Windows overhead than it does about actual 2D performance.
Gary Tarolli was the CTO of 3dfx Interactive. Their Voodoo series of add-on video cards pioneered real time 3D graphics on the PC. Gary had this to say about infinitely fast 3D hardware in 1998:
I just want to put in a few cents here. I know Voodoo2 relieves the CPU of triangle setup processing, however, that is all it relieves the CPU of. If a game is taking up 80% of the CPU time, which is not that uncommon, then even if we replaced our hardware with INFINITELY fast hardware, you only get a small increase in performance (1.25x). Voodoo2 isn't infintely fast, so the results are even smaller. Each game takes up a different amount of the CPU, so you will see different results for different games.
It's hard to imagine the CTO of a hardware startup actually answering questions about the product he designed in the newsgroups. Only in 1998, I guess.
AnandTech's review of the first affordable solid state hard drive offers a tantalizing glimpse of infinitely fast storage devices-- and some new bottlenecks we couldn't see before:
|Content Creation Winstone||1.03x
|Windows XP Boot Time||1.5x
|Battlefield 2 level load time||1.3x
|Photoshop CS load time||1.7x
|MS Outlook 2003 load time||1.0x
|693mb file copy||3.8x
It's an interesting experiment. Kudos to Gigabyte for making a 4gb solid state hard drive affordable. All you need is $70 for the i-RAM device itself, and 4gb of PC3200 DDR RAM (at current pricing, $90 x 4). Sure, "under $500" isn't exactly cheap, but relative to other solid state hard drives, it's an incredible bargain.
Unfortunately, Having an infinitely fast solid state hard drive doesn't do a whole lot to improve raw performance. It's probably best used as a device to reveal where all the other performance bottlenecks are.
Posted by Jeff Atwood
Matt: "But isn't this just because it is being limited by the maximum transfer rate of the SATA interface?"
I think that was rather the point of the first paragraph of the post: "the question is, which bottleneck".
I agree with Jeff: let the OS manage memory. However, the solid state drive does have one big advantage over disk caching: it's persistent, so you get the benefit of it on the first read. Disk caching gets you benefits on second and subsequent reads -- unless the OS gets very smart about precaching for anticipated requests.
But isn't this just because it is being limited by the maximum transfer rate of the SATA interface? I am assuming that if we were to really want to get the benefits of solid state hard drives that we would want to create a new interface standard that allowed the drives to be accessed at rates close to what standard memory can achieve.
Matt: Yes, it is limited to 150 MB/s by SATA. For a best-case current "RAM-speed" machine you can at least get rid of hard drives altogether.
With *nix you can boot from the network on a machine with gigs and gigs of RAM and then set up a software RAMdrive (virtual drive stored in system RAM that disappears on power down) to store your apps and swap space. I don't know that this is possible in Windows, so a "fastest" Windows box could use this 150 MB/s iRam drive to store Windows on and then use a software ramdrive for other stuff.
Anand points out that Windows has a 4GB combined limit on RAM and swap space currently, so you run into a ceiling pretty quickly.
I found this project a very neat idea that could be useful for certain situations, but when I read that it only outperformed a $175 74GB Raptor by a few percent in some cases (up to several hundred percent in others) it really dampened my enthusiasm.
I agree that it is pretty disappointing to hear that the performance increase is fairly low. However, I believe that solid state hard drives will be the wave of the future and will bring huge performance increases only after we stop treating them like regular hard drives. The fact that they can be accessed randomly instead of only in "sector chunks" will allow Windows to optimize access to them using a new "disk" access paradigm. Only then will we see the huge performance gains that we expect. Until then, it seems that they won't live up to expectation. :(
I am assuming that if we were to really want to get the benefits of solid state hard drives that we would want to create a new interface standard that allowed the drives to be accessed at rates close to what standard memory can achieve.
Or we could just add +4gb of memory to our systems. There are also hybrid solutions, such as a traditional drive with 1gb of cache memory. But in general, adding memory and letting the OS exercise its disk caching algorithm is the best way to go for most users.
I was very surprised and disapointed after reading the results of the benchmarking yesterday.
It makes me wonder if the bottleneck is on the i-RAM, so that future revisions will speed things up.
As it stands, the performance of the drive does not justify the price and pitfalls of using such a device.
Although it does remind me of when the Quake 3 demo was realised, some hard core players installed the demo onto a RAM drive, so that they could get faster load times and score those few extra frags! So maybe some people will buy one :)
This device uses the PCI Bus for power. I wonder what kind of performance increases could be gained if the method of accessing the data where modified to take advantage of PCI Express and therefore could provide a theoreticaly significant increase in preformance. In fact the theoretical bandwidth of PCI Express is 8GB/second where SATA is 150MB/second.
While one of the nice features of this drive are that theres no software to be installed (beyond a minimal 'I'm a hard drive here's my model' type driver) the extra bandwidth would be very well worth the cost of running a little bit of drive emulation software.
matt2: if it's not using the hard drive interface that the BIOS recognizes then it's not really the same thing at all. Why not just make a PCI RAM expander?
Have iram and can't get Winxp installed on it.
Can anyone help?
matt2 has an interesting point. when will we see pce interfacing storage? instead of Gigabyte's I-RAM which just uses the legacy pci slot for power, then interfaces with the system via the slow SATA connection.. Unfortunately, at the moment, to the best of my knowledge, a pci express solid state / flash / hard drive type device (at least on the retail level) does not exist