Understanding The Hardware

I used to build all my PCs, but these days I only use laptops. Bulding my own desktops was fun when I was a kid, but now I’m just too lazy to bother.

As for CPU speed I never notice much difference unless I play games (and then, bus speed and graphics card is just as important). I honestly can’t say I have noticed any significant difference in compile times between my old Pentium 4 2.4GHz and either of the newer Core 2 Duo laptops I use now. My old system couldn’t play HD-quality video very well though. In my experience, CPU power is less significant if you have plenty of RAM, a fast hard drive and a fast graphics card.

Personally I think CPU upgrading is much overrated. Of all the PCs I have buildt over the years, I only once upgraded the CPU (from a Pentium 2 350MHz to Pentium 3 600MHz, since I got the CPU for free from my brother). I also know very few other people who actually did upgrade their CPU, ever (they upgraded plenty of other stuff, just not the CPU). Nine out of ten times when upgrading a system I have to get a new motherboard (and RAM) as well, because the CPU socket has changed in the meantime, or the motherboard is not compatible with the current bus architecture.

When it comes to hard drives I always prefer to have two. One for the OS and one for my data. It can give a nice performance boost in addition to making life a lot easier when reinstalling your OS.

I guess all of this really depends on how often you upgrade or replace your PC. For me, every three years has proven to be an adequate rate.

That being said, your setup looks rather sweet :slight_smile:

What about using ECC for a reliable memory system? 4 GB of DRAM stores your info on 32 billion minuscule capacitors (~5 femtoFarads each) all of which are refreshed (read then written) several times per second. It is a miracle of modern technology that over the course of a month only a few soft errors (randomly flipped bits) will occur in a properly functioning system.

Without Error Correction Coding, it is not clear how those soft errors will affect the software running on your computer. With ECC, those soft errors are usually corrected or at least detected. Servers overwhelmingly use ECC memory systems.

Now Intel’s X38 and X48 chipsets support ECC when used with ECC DDR2 DRAM. You still need to make sure that your X38/X48 motherboard also supports ECC and the BIOS is set to enable it.

If you use your computer to make a living, it should support ECC.

The 3870 X2 from ATI supports four monitors.

I’ll be darned; you’re right:


Usually these X2 two GPUs on one card devices tend to have the standard 2.5 outputs (DVI, DVI, s-video) so this is an interesting deviation. Still, the X2 is awfully inefficient – as are most SLI rigs, to be fair.

If cool and quiet are your goals, the 3870 X2 is not a good answer.


Personally, I’d go with a powerful primary card and a fanless secondary card from the same family. Or even two 3850s!


I built a very similar pc a couple of weeks ago. I went with the quad core for the little bit of extra speed editting the family videos in HD.

I disagree with your graphics card selection - unless rob plans to be doing any gaming. I opted for two ATI HD3650’s for $56 each. I also, opted for the slightly cheaper ASUS p5Q-e motherboard. It handles dual montors and is $85 less than the P5E.

As for the raptor… for my money there is better value in 4 x 300 GB barracuddas in raid 1, raid 5, or raid 10.

Your ultimate dev rig posts with ScottHa were a great starting point when I was researching for the new pc.

When Jeff alluded to the importance of a thorough hardware comprehension, I think he was referring to the functionality of every fundamental aspect from an electronic/electric/mechanical standpoint (e.g. CPU instruction execution, memory allocation, finding a location on disc, et al) – i.e. he was not just denoting the act of putting a computer together.

I agree with Anders on this one: this setup kicks ass! (I wish I had the money to piece it together). :slight_smile:

Now Intel’s X38 and X48 chipsets support ECC when used with ECC DDR2 DRAM. You still need to make sure that your X38/X48 motherboard also supports ECC and the BIOS is set to enable it.

That’s cool… I haven’t seen a DESKTOP chipset or motherboard that supports parity^H^H^H^H^H^H ECC memory in about a decade. It’s great that Intel is finally recognizing that some people value the parity advantage.

… And I’m so very excited about my purchase! I should point out that the machine I’m building is my own - Microsoft isn’t paying for me to go off and build my own. The Boss I was referring to Jeff was my wife :). Just details but it may keep me out of trouble :).

Thanks again for your help!

Yeah, that Norvig quote seems really out of context - he’s talking about a totally different context w/r/t understanding hardware. Physically putting together a box has very little to do with understanding the fundamental components of software execution.

Matrox makes some quad display video cards as well. They are quite expensive and will not run any modern video games, but they are low power and would be great for a development machine I would think.

Here is one that can do quad DVI-D:

Make that DVI-I actually (analog or digital)

oh, freedom zero.
Let me know when your first processor is finished.


That is with only 1 of the 3 regular VM’s open that I use. With VMs it is easy to chew through 8GB.

64bit OS shouldn’t have any driver issues if you are building a new machine.

I like to have dual DVI cards (shame not to drive nice big panels in digital), unfortunately video card manufacturors tend not to put these in the low end cards.

nice article! But I wonder whether you could write a similar post about Laptops… Is it possible/feasible/reasonable to assemble your own power laptop (fast, quiet, energy efficient)?

And what about the case?
A good developer must have a flaming computer case
(People will think your PC is faster) :wink:

Yes, it’s exciting to see those four graphs in Task Manager (and even
I get a little giddy when I see thirty-two of 'em)

In that task manager picture in the article you linked to, there are actually 64 graphs - 4x16.

Excellent article. I really enjoy your hardware posts.

And, in my experience, all that work doesn’t really get repaid much, as I’ve never exceeded more than 3 GB of physical memory use.

Address-space limitations aside for a moment, the reason having gobs of RAM is important isn’t that applications directly need it, but that your OS’s virtual memory subsystem should be trying it’s damnedest to use ALL of it, ALL the time, for something.

This is something I have to explain all the time to people when I see them using these memory freeing utilities that allege better performance by giving you more free RAM. If your VMM is doing it’s job, then only the processes that are actively running or have recently run using should be resident (and then, only those pages that are being actively/recently used). The rest of RAM should be filled with writeback buffers and cached files from the disk.

Free physical memory is simply wasted, period. Memory-freeing utilities do nothing but head-fake the VM into freeing physical RAM, sabotaging performance.

This is important, I think, because a lot of desktopy applications such as most people tend to use are unscheduled for IO-waits (I’d guess mostly page faults, but sometimes explicit IO) more often than they are waiting to run/running on the CPU. Filling an IO request from RAM is orders of magnitude faster than hitting the disk, just as filling a memory read from L1/L2 is orders of magnitude faster than hitting RAM, and may mean the avoidance of getting unscheduled for IO-wait. What’s more, these cached pages cost you nothing: if the system gets hard up for physical RAM, it can just delete them.

I think this is so important to system performance that on most of my Linux machines, I configure the VMM to actually swap out excessively-idle application pages to make room for caching disk contents that get used more often. All those tray applications and idle processes that seem to haunt Windows users, simply find themselves swapped to disk after while instead of loitering in RAM, and on the occasion they actually wake up: oh well, enduring that page fault probably saved me hundreds more page faults on some other app that I use more heavily.

(By the way, NT-based VMMs are by all accounts equally good at doing this dance, but I think your average Windows user is so deeply scarred from prior Windows’ pathological VMM behavior that they will never be able to look at a lengthy process list without getting edgy and uncomfortable :slight_smile:

I think it’s this kind of thing that goes to the heart of Jeff’s argument: what the VMM does and how it works deeply affects how things perform, yet it’s mostly misunderstood and frequently sabotaged, even by programmers. And although the virtual memory subsystem of an OS is in fact software, it’s inextricably entangled with, and indeed mostly responsible for mediating, the performance of the hardware.

First, I always like Jeff’s hardware postings as they give me something to think about.

For those who keep pointing at 8GB, I have to say I see only 4GB of RAM (2x2GB) listed. Maybe someone would kindly point out the 8GB, please.


I am curious about the option of a Q9300 Quad when the Q9450 Quad appears to be a better choice.

I am also curious as to why the X38 board instead of a newer board?

Thank you.

hassle of using a 64-bit clean OS and all the driver complications

Vista 64 here, on more than 1 computer. There is no hassle, and no driver complication. Do pay attention to the hardware you purchase, but I haven’t yet encountered new hardware without 64-bit drivers. And applications, they just work. In either 32 or 64-bit versions.

Why 8GB? Why not?! It costs as much as 2GB did a couple of years ago. If you can’t use more memory, you lack imagination or are using an outdated OS (like XP):

  • Vista can cache more files in memory resulting in more performance
  • You can run multiple Virtual Machines with multiple OSs
  • You can compile while transcoding video
  • You can game while your bittorrent client is busy downloading the latest Fedora
  • You can dedicate a core and a couple of gigs to soving hard computational problems
  • You can run distributed client/server or p2p servers developing the future killer app…

That was a thrill to read. I need to work on my hardware chops, so sifting through your multitude of links was great exercise. Thanks for all the info!

I do disagree with the quad core selectin though. It’s not the sweet spot. Going from $270 to $330 (another 60 bucks) for twice the cache (and and insignificant .16 GHz) is, IMO, worth it.

Furthermore, the Q9450 price is supposedly set to be cut by Intel in the near future.

Also, I would have gone with a P45 chipset for the MoBo. It’s fabbed in a shrunk-down process, resulting in lower temps and power consumption.

Finally the missing case selection: Antec Solo or P182 (expensive). A GREAT value is the NSK 4480.

Keyboard: Logitech Wave. G15 for gamers
Mouse: Logitech MX/VX Revolution. G9 for gamers.

Display: avoid the TN crapola. Nothing less than Dell 2408WFP. Pick 2 if you want to stare at a black divider in the middle. Pick 3 if you want two of them falling off your desk. Or just move up to the 3008WFP as any sane person should do. As an added benefit, you’ll have the option to game in 1280x800, with the the Dell doing the upscaling for you. That just until the lasted vid cards will make gaming at 2560x1600 with all the eye candy turned on a reality.