Friday, May 29, 2009

The Need for Speed

If computers get faster and faster every year, why do we seem to spend more and more time waiting for them to do things?

The problem is software. People have an insatiable need for more and more features - bells and whistles. Software companies are driven to add more and more features, more and more cool things. Each new software application, or each new version of the same application tends to get bigger and bigger, and bloated with more features the slow down the computer.

For example, web browsers! When the web first started the first web browser, Mosaic, was fairly simple, it could display text and pictures and it didn't require a lot of computer power to do that. Over time people have added other multimedia such as videos (i.e. You Tube) and scripts. These take up more and more computer power. Now that there are tabbed browsers it is common to have many tabs open, and these may all be running scripts or playing media. Increasingly more and more web sites use scripts and media to add the cool factor, or get people's attention (i.e. advertising). When I start up my web browser now, it puts an awful load on my computer slowing it down. All those tabs, media and scripts cause the browser to use more and more threads and processes - so you need a computer that can run a lot of threads and processes at one time.

Another thing people tend to do, especially me, is have lots of applications running and windows open. The more windows you have open, the more memory is used and the more load there is on the computer. The more software you install the more chance there is that the software starts up automatically at boot time, so whenever you reboot your computer it can take longer to finish booting. My current computer takes about 15 to 20 minutes to actually finish booting. Sure I can login a minute after booting, but everything runs incredibly slow until it's finished booting. Finally, a sad fact about Microsoft Windows is that for some reason we seem to always have to be rebooting it.

The bottom line is when the computer gets too slow it becomes more frustrating to use it. The only way to reduce the frustration is to get a faster more powerful computer. In my case my home computer is for my own personal enjoyment - that's the worst time to be frustrated.

Thursday, May 28, 2009

A Tapestry of Threads

In the early days computers could only execute one instruction after another, there was a single CPU and a single Thread of execution. Computers give the illusion of doing many things at once by a technique called Time-Sharing: the work is divided up into many Processes, and the Operating System runs each process for a few thousandths of a second, switching from one process to another. Several people could be using a computer at the same time, each working under the illusion that they had the computer all to themselves - except the more users and processes there were the slower the computer seems to get.

For a long time computers have gotten faster and faster, but at every moment in time computers were just as fast as they could go. The only way to make a more powerful computer was to tie two or more Central Processing Units (CPUs) together in one system. In most cases all CPUs shared the same memory, and the Operating System could take any process and run it on any CPU, making the whole system more powerful because now more than one process could be running at the same time. This was especially useful on systems with lots of users. These were the haydays of mainframe computers.

When personal computers became popular there was never a big need for more than one CPU because each person had the whole system to themselves. For a long time CPUs just got faster and faster every year and were able to do more work, keeping up with increasingly sophisticated and demanding software. About 5 years ago a terrible thing started happening, CPUs stopped getting fasters, primarly because we reached certain limits in the laws of physics. For at least 5 years the fastest CPUs are about 3 to 4 GHz and that's just not likely to change with current electronic computer circuits. The fastest a computer has run to date is just over 7 GHz, but that requires liquid helium and is very expensive and fragile.

But people still demand ever more powerful computers every year. They only way computer makers have been able to make systems more powerful is by adding more CPUs. Now the terminology gets a little crazy. In a single chip computer hardware people refer to the chip as the CPU. Chip makers actually put two or more CPUs on one chip, but they call them Cores. If a CPU has 4 cores the operating system views this as 4 separate CPUs, and software people call them logical CPUs. Some CPUs use a technique called Hyperthreading where each CPU or core is able to run two or more separate threads of execution at the same time. Hyperthreading is not as powerful as adding more cores, but it is an economical way to run more than one process at a time. So if you have a chip like Intel's Core i7 or Xeon 5500, Intel calls this a Hyperthreaded 4-core CPU - but to Windows this looks like 8 separate CPUs. In fact if you open Windows Task Manager you will see 8 CPUs.

Now the system I am building is a Dual Xeon 5580, to Intel that means two CPUs, 8 cores, and 16 threads. To Windows that means 16 CPUs.

Saturday, May 23, 2009

Motherboard and Apple Pie...

Probably the most important part of any computer system is the motherboard, often called the mainboard in today's politically correct climate. The motherboard is like the skeleton in a body, it connects everything together - the CPUs, the memory, the expansion cards, the back-plate connectors, the internal connectors (i.e. disk, USB, firewire, fans, etc.).

Years ago I had my heart set on a dual-CPU AMD system, and Asus made pretty much the perfect motherboard for this. This was the basis of the AMD 4 x 4 I mentioned before. Performance with the Opteron CPUs of the day was pretty good for a 4 core system. Mind you this was no gamer system - most games in those days could not handle more than one core. Even today, most games cannot utilize more than 3 cores. But this system was targeted at the extreme enthusiast consumer. You could be ripping CDs, video editing, web surfing, playing a computer game, etc. - all at the same time. Also, the board has some great overclocking capabilities. Overclocking means running the CPU and other parts faster than factory specifications. So far the world record for overclocking is running an AMD Phemon II at 7.127 GHz - but that requires liquid helium or liquid nitrogen - and a lot of hassles.

Intel must have felt threatened or something, probably because AMD had the hearts and minds of most of the computer enthusiasts. Anyway, Intel released a motherboard called Skulltrail that was a dual-CPU enthusiast board. It was popular with a few people, but the board was sort of an abomination - Intel took parts from some of its server products, and threw them together (badly). It even ran faster than AMD's board - but will no elegance, and less performance than had they taken the time to do it properly.

About this time AMD's quad-core Phenom was out, but it's performance was much less than AMD had promoted. Intel had quad-core CPUs too, but they were the last gasp of a dying Front Side Bus (FSB) architecture. Finally, word was already out about Intel's Nehalem - almost an exact copy of the AMD architecture I respected so much. So I decided to wait.

Nehalem, or Core i7 parts started shipping in the last half of 2008, and while Nehalem was designed for dual and quad CPU systems, the Core i7 could not run dual-CPU. In the first half of 2009 Intel finally released the Xeon 5500 series - finally a Nehalem that could run dual-CPU.

There has long been rumored a Skulltrail II that would be a dual-CPU Nehalem enthusiast-class motherboard. It was even hoped that Intel might even do it properly this time. But we're in the deepest recession of our generation and there is even less incentive for Intel to come out with something so exotic for a niche market.

For weeks I checked the internet for dual-CPU Xeon 5500 motherboards. There were a lot of them out there, but nothing seemed to have the right combination of features I was looking for. Finally I stumbled on the Intel S5520SC workstation motherboard. This was probably the closest I was going to get to a Skulltrail II - and it's only real downside is that it does not support overclocking

S55520SC Features
  • Dual CPU Mother Board.
  • Extended ATX - larger than a standard motherboard but still fits in to a desktop case.
  • 12 memory slots, capable of holding 24 GB of RAM.
  • 2 16-lane PCI Express (v2) slots - for Crossfire dual-video cards.
  • 1 4-lane PCI Express slot (in an 8-lane connector) capable of handling a FusionIO SSD board.
  • ICH10 RAID controller
  • Extensible Firmware Interface - the successor to the ancient BIOS.
There are many other features, but these are the ones I care about most. It's not the perfect motherboard, but I'm not going to hold out hope that anyone, even Intel, will come out with a better one.

eHarmony.com...

Most of us choose consumer electronics the way we choose mates - we stumble upon something/someone - there are sparks - and we're hooked! How many of us actually write down a list of everything we want and then go out and shop for it? Whether or not you are in Futureshop or a singles bar we tend to act on impulse.

Years ago when I decided that I was going to spoil myself with the best computer system I could find I realized that here was a relationship I could create on my own terms - the relationship between me and my computer. I mean - how many of us just sit at the computers we have - at work - at home - and just curse and swear because out computer is too slow, doesn't do what we want, doesn't live up to our expectations, etc.

I mean with people you can't just go out and order - nice face, nice body, good conversationalist, good sense of humor, great in bed ;-) outgoing/adventurous, likes porn, happy/cheerful, great cook, loves to do dishes and housework, lets you control the TV remote, hates chick flicks, blah, blah, blah.

But --- with a computer you can get almost whatever you want on your own terms - you just have to think about it! Resist the temptation to drop by the nearest bordello (i.e. Futureshop) and pick up the the hottest turn-on of the moment.

I've thought long and hard about what I do with my computer, and realized I should really want what I do most:
  • Surf the web. Increasingly web pages are more complicated - have animation, sound, videos, scripts, etc. This all puts a toll on the computer. And each tab an window in your web browser does all these this - sometimes when you are not even looking at it. Sometimes my Firefox uses 50% or more of my CPU. Modern web browsers launch a new process for every tab/window you have open.
  • Download Media. If you have ever tried Vuze you will realize there is an increadible world of media out there to expore - mostly video - and I don't mean You Tube! The worst thing about rich media is waiting for it. Rich media puts a huge load on the computer - and waiting for it is bad.
  • Run Security Software. A sad fact of running Windows is that 99% of all malware is targeted at Windows. This requires sophisticated security software that is often worse than the problem it tries to address. Fortunately modern security software works well on systems with lots of threads/cores - so the more threads/cores you have the better.
  • Playing Games. I'm not a hard core gamer - but I do enjoy my game time. My first eye-opening experience was when the love of my life bought me a game for Christmas - and it wouldn't run on my computer. I solved that problem by going out and buying the best video card my computer could handle. Sadly even that video card can no longer keep up with modern games. I haven't played a computer game in almost two years now because my computer is too slow.
  • Second Life. If you don't know Second Life you can't know what I'm talking about. SL is a 3D virtual reality environment which puts just as much load on your computer as any modern computer game. Now in SL I'm also a Disc Jockey - which means I have to stream music and search for song requests on the network, in addition to running SL. This puts a huge load on your computer - not to mention the stupid security software always running in the background. Of course you often need to run a web browser at the same time to look up links you find in SL. Second Life taxes human capabilities of multi-tasking, and the environment of Second Life taxes the computer's capabilities of multi-taking.
  • Software Developer. I create software for a living and for a life's purpose. I spend a lot of time experimenting with work related stuff and personal diversions. I want a computer that can let me play with ideas with minimal constraints. NUMA, OpenCL, Concurrent Programming, tec., are all research pet projects of mine I would like to be able to enjoy my explorations at home - cause heaven knows my employer can afford to give me such stuff.
So what am I? I'm not a gamer, I'm not a surfer - I'm a hard core computer enthusiast with particular needs I want to satisfy, and I've taken the time to think about what I really want most and define them in a computer system I really want most.

If you were to go out and find a life partner the same way as finding a computer you might go somewhere like eHarmony and create a profile and wait for a match. But, you never know if someone else is completely truthful about their profile as you are (or not). At least with computer technology it's harder to lie about your profile, but you have to take more responsibility for what you choose.

When Inspirations Strikes...

Early on I became a big fan of AMD (Adanced Micro Devices) for a number of reasons: they were the underdog and Intel needs competition; for a long time they were way more innovative than Intel (and may still be); their computers ran faster than Intel's on less GHz (which was really cool); they were the golden child of overclocking (sort of like a hot rod car).

My first dream system was what AMD called the 4 x 4 - it was two dual-core CPUs (4 cores) and two dual-GPU graphics cards (4 GPUs). This was pretty much the maximum you could pack in a desktop box.

There were a lot of different things I wanted to do with this system - but mostly I wanted to build it because it could be built.

AMD were the first to have an Intel compatible NUMA architecture. That stands for Non-Uniform Memory Architecture. What it means is that each CPU had it's own bank of memory. This was dramatically different than Intel's conservative FSB (Front Side Bus) where each CPU had to fight the others for access to memory. In a nutshell this doubles the bits-per-second you could access memory. The hitch is that the Operating System needs to know how to schedule the work most efficiently amongst all the CPUs, but newer operating systems, like Windows 7, are getting better at that. I have no direct experience with NUMA systems and I wanted to get some more experience which was my biggest inspiration. Note: to create a NUMA system you need at least two separate CPUs - which is why I plan to call my new computer system Gemini.

AMD invented HyperTransport. This is basically how the CPUs talk to each other and to the other devices like disk, network, etc. In Intel's FSB each CPU had to share the FSB with all the other CPUs, the memory, and all the devices. Basically the FSB becomes a bottle neck for transmitting data - sort of like the weakest chain in the link - or like when there is only one cashier on duty at the bank. With HyperTransport each CPU has it's own dedicated path to every other CPU and to the other devices.

AMD developed a brand new CPU called the Phenom - it was 4 cores on one chip - or a quad-processor. Intel had quad-processors too, but they did this by sticking two separate dual-core chips together. Less elegant, but it worked. Unfortunately for some reason AMD's new star-child, the Phenom, did not perform as well as Intel's quad-cores - mostly because Intel had better 45nm chip technology, whereas AMD were still using 90 nm.

For many years AMD had faster processors than Intel, that cost less money to buy. At first this didn't affect Intel because people just bought Intel because of the brand recognition - sort of like why people buy PCs rather than Macs. Eventually enough businesses clued into the fact they could save more money and get more work done using AMD processors, and AMD's market share began to increase - especially in the server market. To add insult to injury everyone just knew AMD just had better more innovative technology than Intel.

For a while Intel also had an advantage because they offered many computer manufacturers deep discounts if they didn't use or delayed using AMD parts. Consequently AMD is suing Intel successfully for breaking anti-competition laws.

Now Intel are no dummies and they are 10 times larger than AMD - their pride was seriously hurt. Intel used its substantial resources to create a completely new computer architecture - well new for Intel. Actually what they did was copy most of the design of AMD's technology, but they were able to do a better job of it. The result is called the Nehalem - or Core i7 which is still faster than AMD's second generation Phenom - or Phenom II.

While I still root mostly for AMD, I'm as selfish as the next person, so I waited until Intel finally had what I wanted - the AMD Phenom architecture - only faster. Recently Intel have finally released the Xeon 5500 series of computers - which lets you run dual-CPUs, utilize NUMA, and otherwise create a two-CPU computer that I was dreaming of.

AMD have unquestionably proved that competition helps the consumer - because if it wasn't for AMD Intel would still be making the same mediocre computers they did years ago.

So my bottom line inspiration for Gemini is that it has to have two CPUs.

In the Beginning...


I've been programming computers since I was 12 years old, back in 1970, so I've been at it a long time. Most of that time I wasn't really big on hardware, I knew how the technology worked and all the theory, but I wasn't really a nuts and bolts hands-on type.

For much of my life people always ask me computer questions, but it was embarrassing how little I knew about hardware, PC hardware details in particular. About 5 years ago I decided I was going to make it a hobby to learn as much as I could about personal computer hardware - how everything went together and what it all means. It has been a satisfying hobby as there is so much easily accessible information on the internet.

My current computer is about 7 or 8 years old now - a Sony PCV-RX660 - and it's barely able to keep up with today's software because everything is designed now for much more powerful computers. About 3 years ago I decided I wanted to have my next computer custom made rather than buying something off the shelf. One of the interesting things about personal computers now is that there are multifarious options to custom designing and building a system. This would be the next phase of my hobby, and I had promised myself that on my 50th birthday I would splurge and get myself the best system I could think of. Well that ship has sailed, but I am getting close to getting what I want, so I thought I would create this blog to document the process I've been through and how everything turns out.