Building A Fast PC – CPU and Memory
This article deals with the hardware aspects of building a fast computer. It is aimed at fast data processing rather than fast graphics for applications such as a fast WordPress web server or a fast processing machine for web software defined radios.
From a standpoint of CPU resources, applications can be divided into two classes, those which are multi-threaded and lend themselves well to distributed processing over a large number of active cores and those which are a single thread and do not benefit significantly from additional cores.
A web server is really a mixture of these two classes. A single customer bringing up a web page is going to be most effected by how fast the single thread servicing his request can execute. However, more cores will allow more simultaneous tasks to execute without slowing down.
If you are building a game machine, I do not recommend using a CPU with more than four cores. Few games will effectively even use four cores and more cores will slow down the maximum speed you can obtain.
For a web server six cores is good for up to about 100 hits/second. Beyond that you can go with more cores or multiple machines and a load balancer. For tasks that can use many cores such as ray tracing or video rendering, a higher number of cores with a slightly lower clock speed may be a worthwhile trade off.
Then there is the question Intel or AMD? I used to go with AMD chips, for a given clock speed and number of cores they are always much less expensive than Intel, but I’ve run into two issues with AMD. First, clock speed is deceptive, for a given clock speed, Intel will get a lot more work done than an AMD of the same clock speed. Second, with AMD chips I’ve experienced that, as they age, the maximum obtainable clock speed decreases. I have never seen this behavior with an Intel chip. I’ll admit the Ryzan chips do look promising for workloads benefiting from a large number of cores where budget is limited.
There is usually a trade off between the number of cores a CPU has and the maximum speed they can execute at. This is because the limiting factor in modern CPUs is heat. When you put 12 cores in a processor they can’t operate as fast as cores in a 6 core can without generating too much heat.
Given a motherboard with the ability to adjust all the various parameters, the primary factor in determining how fast you can clock a processor, particularly one with many cores, is how effectively can you remove heat from the processor chip.
In my view, only two manufacturers are worth considering, Asus and Gigabit. Both of these manufacturers make high quality boards and have a BIOS that allows extensive adjustment of parameters. Intel makes a good high quality board but they do not give you the freedom of tweaking things in the BIOS that these other two brands do. I’ve build exactly one MSI based computer, it died within a month. I’ve yet to have an Asus board die. Alienware boards have issues in that some are tied to Windows 10 only. I don’t know about you but I do not want my motherboard dictating what I can run on my computer. Power stability is one important factor and the more phases the motherboards voltage regulator has, the less ripple will be presented to the CPU. For overclocking it is also good to have plenty of overhead in your power supply, both to handle peak demands from the CPU and to have adequate filtering to minimize ripple and noise from the power supply.
I am personally not a fan of water cooling because one leak and you can be out several thousand dollars of hardware. I prefer to go with extreme air cooling solutions and my favorite is the Evo Hyper 212 cooler. This cooler supports dual fans and has copper heat tubes which are flattened on the side facing the CPU so that there is continuous contact. I use this in conjunction with two high CFM fans. With two fans these coolers are rated to dissipate up to 240 watts so this gives you a large amount of thermal overhead for overclocking. I run Intel I7-6850 CPUs, a 6 core 12 thread processor rated at 3.6 Ghz with one core able to turbo to 3.8 Ghz with all cores at 4.3 Ghz indefinitely without exceeding the terminal limits of the CPU or even coming close.
When you attach this cooler to the CPU, there is something very important that can easily make a 40F difference in CPU temperatures under load and this is the quality and thickness of the heat sink compound between the chip and the cooler. All heat sink compound has some thermal resistance. It is important to keep this resistance as low as possible. I’ve had very good results with the Arctic Silver brand of heat sink compound.
No matter which brand you use, the thicker the layer between the cooler and the CPU, the higher the thermal resistance. For this reason it is very important to get this layer as thin as possible while still not permitting any air gaps. I use a thin plastic card, about the size of a credit card but more flexible, apply a very small line of thermal compound on the CPU lid, and then spread it repeatedly in both directions until I have a very thin uniform layer and then I bolt down the cooler. Arctic Silver is about $15 for a small tube but if you use it sparingly this will suffice for quite a few machine builds.
The Evo Hyper 212A cooler helps in this area because the flattened heat tubes do not leave significant spaces between them that do not contact the CPU case surface. Most other heat tube type coolers either have an additional plate between the heat tubes and the CPU case surface which adds thermal resistance, or they have non-flattened heat tubes so there are gaps at many points between the CPU case surface and the heat tubes. The best thermal paste has significantly more thermal resistance than direct contact with a copper surface so these coolers are undesirable. The mounting hardware that comes with the Evo Hyper 212A is very sturdy and helps you keep the force on the CPU case vertical resulting in even cooling across the entire case. Some inferior brands of coolers have really crap mounting that just locks into the holes on the motherboard with no back plate, avoid these!
Case cooling is important beyond just keeping the interior of the case at a comfortable temperature. There are reasons behind this that may not seem so obvious on the surface. Most CPUs have an internal voltage regulator and the difference between the core voltage and the input voltage to this regulator is dissipated as heat. So it is optimal to minimize this difference but it has to be enough to take up any ripple in the power supply. High end motherboards will give you an option of maintaining the most stable voltage or equalizing the thermal loading between the phases. The former provides superior voltage regulation and minimizes ripple, but heats up the motherboard regulator more. For this reason it is good to have as much air movement in the case as possible, far beyond what is required just to keep the internal temperature reasonable.
Choose a case with room to mount many fans. Have them suck in through a filter. The power supply fan should exhaust. Even though putting an additional exhaust fan would increase air flow, I do not recommend it. The reason for this is that having the case positively pressurized with filtered air will prevent dust coming in through cracks and crevices.
On your motherboard when you setup the BIOS, set the fan control for all the fans to be at minimum speed at around 20C and maximum by 35C. Your machine will be noisy when it is working hard but reasonably quite otherwise.
CPU and Memory Tweaking
I do not recommend using any CPU that requires registered buffered memory if you are going for performance. The reason being this memory has low throughput and will not keep up with a fast CPU. This is one reason so many commercial Xeon based servers are slow as snails on quaaludes in molasses. A high end CPU with non-buffered non-registered memory can achieve between 20-40 Gbit/s memory I/O throughput. But a similar CPU with registered buffered memory will typically be limited to 1-3 Gbit/s.
Intel makes CPUs with no letter after the numbers, like i7-6700 and they make versions with letters like HQ, X, and K. No numbers means the multiplier is locked. You can only overclock these by increasing the base clock rate and that overclocks all components which imposes a rather drastic limit on how much you can get away with. HQ is a low powered version for applications like laptops, with a reduced clock rate, not what you want in a performance machine. K means the processor has an unlocked multiplier and X is supposed to be an extreme version but I’ve not found anything extreme about X models except their price. I recommend going with the newest generation you can afford. The reason is newer generations have smaller transistors. Smaller transistors have less capacitance which means electrically they can go faster and because heat is created every time that capacitance is charged or discharged, smaller transistors generate less heat for a given clock speed because lower capacitance means lower current to charge or discharge the capacitance.
For example given the same cooling, as described here, EVO Hyper 212A coolers, an i7-6700K will usually clock at 4.4 Ghz (there is quite a lot of variation, some will clock as high as 5.2 Ghz air cooled but these are few and far between), and an i7-6850 will reliably clock at 4.3 Ghz however, at that speed when you work the i7-6850 hard it will get up to around 150F where the i7-6700K will be closer to 200F which is the point where it will start to reduce it’s clock speed to prevent melt down. The i7-6850K will see far less variation in quality chip to chip than earlier generations. And you get this speed with two more cores. You can also get eight and ten core versions (i7-6900K and i7-6950K respectively).
There are many things you can do to tweak memory but under normal circumstances it will have only a minimal impact on the CPU performance. This is because modern memory bandwidth with modern CPU memory controllers combined with the larger caches of modern CPUs is sufficient to prevent the processor from having to frequently wait on memory. Memory becomes more of an issue with a very large number of cores.
Memory often has a normal profile and an XMP “extreme” profile. Good quality RAM will run at the XMP settings, lesser quality won’t. What I recommend is that you first determine if your memory can run with XMP settings by setting XMP on your motherboard (some chips have two, one moderate and one more extreme profile). I suggest starting with the most extreme setting but set your CPU to stock speeds. This way you’ll know any instability is related to the memory. You will need a copy of memtest86, and you will want a bootable disk. You can download an ISO image and then burn the image to disk. The reason for this is so all of the memory can be tested. Once booted you have some options, single or multi-core, use multi-core so it gives the memory the hardest workout possible. With the setting on the most extreme XMP profile, let it run for several days or until it takes an error, whichever comes first. If it takes no errors after several days you can feel confident your memory is solid. If it takes errors, bring it down to the less extreme profile or to standard speed if there is only one XMP profile and run the test again. If you still get errors, try reseating the memory. It is not uncommon to have issues with the memory not being fully seated or not making good connection. If that does not fix it, not whether it is always the same address or same DIMM, if so you have a bad DIMM, get a replacement. If not you likely have junk memory, get something better to replace it. It is not impossible motherboard or CPU problems could also cause this but memory is a common problem. I’ve gotten some that was so poorly soldered chips fell off the DIMMs.
Once your memory is solid you can begin tweaking your CPU. Something to know is a CPU will run stable at a higher clock frequency with a higher core voltage but higher core voltages will result in more heat. Heat is ultimately what limits the highest speed you can clock your machine at and have it remain stable. Two things further complicate this, some CPUs have built in GPUs and those GPUs generate heat, and most modern CPUs have voltage regulators built in. There is a voltage that is the input voltage to the chip, the chip itself then uses an internal regulator to drop this voltage to the core voltage. The regulator can dissipate a substantial amount of heat and whatever heat it generates subtracts from your total heat budget that which is available to the CPU doing actual work.
You want the input voltage to be as low as possible but still high enough that it can account for any input ripple and provide the core a rock steady operating voltage. Typically the input voltage for an eight generation chip may be around 1.8v and the core voltage around 1.2 volts stock and anywhere from 1.25 to 1.35 volts overclocked. Do not under any circumstances save for liquid nitrogen cooling, exceed 1.45 volts. If you have to go above 1.35 volts you are most likely so much into the territory of diminishing returns that to continue to increase the voltage only risks destroying your CPU. The gates of modern transistors in a CPU are only a few nanometers wide, so 1 volt can represent 500,000 volts/meter, and you are getting dangerously close to break down when you increase to 1.45 and higher. You are more likely to need the higher voltages in the 1.35-1.45 range with seventh generation 22nm chips and older. Toms Hardware is often a good site to find information specific to CPUs, Intels site is rather vague.
Motherboards come with voltage regulators that have different numbers of phases. The more phases the voltage regulator has, the lower the ripple. Get what you can afford but know that a cheap six phase regulator will produce more ripple than a more expensive motherboard with more phases. This lower ripple of the more expensive motherboard will allow you to lower the input voltage to the CPUs internal regulator thus reducing heat. I suggest initially you start out with stock settings. Set the BIOS to lock all cores to the same frequency and start at stock. You will need some torture test software and some software to monitor the CPU core temperatures. For Linux, use mprime, for Windows prime95. For Linux sensors will read out the various sensors. I suggest putting a terminal window with a shell loop like this:
while true do sensors -f sleep 1 clear done
Then, in a different terminal start prime95 or mprime. Assuming mprime select 15 which is the torture test, and then select the number of threads (usually 2x the number of cores) and select option #1, this is the option that will generate the most heat. Let it run for an hour or two and if it does not generate any errors bump the multiplier up 1x and repeat, say you started at 36 (x 100 Mhz base clock = 3.6 Ghz), bump that up to 37, repeat. Keep doing this until you get an occasional error or crash. If the CPU temperatures are still reasonable, say below 150F, increase the CPU core voltage by .05 volts and repeat. Continue raising the voltage until one of three things happens, 1) Your CPU temperature becomes too high in which case back off on the multiplier to your previous settings and put the voltage back to the previous setting. 2) The system becomes stable again in which case increase the clock and repeat. 3) You reach 1.35 volts in which case I advise that you stop, set the clock multiplier back one, set the voltage back to where it was stable at that speed and call it good.
Now if temperature became the limiting factor, and most often this will be the case, you can try reducing the input voltage to the CPUs voltage regulator. This will reduce heat some what and give you just a touch more thermal head room to play with. Also, if the CPU is one with an internal GPU, you can reduce the GPU multiplier at the expense of graphics performance and gain some thermal head room there. When you decrease this you reduce the amount of headroom the regulator has to work with so any instabilities in the power supply or motherboard regulator can cause the machine to become unstable so test with mprime for a long time after you do this. When you believe you’ve reached the optimal settings, let mprime run for several days, if it produces errors go back and re-adjust, either increase the CPU voltage slightly or reduce the clock rate. Once it remains stable for several days, you’re done!
The Silicon Lottery
CPUs are manufactured using a photolithography process. A large number of CPUs are created on one die. A die is a slice from a silicon ingot. A mask is created with the pattern that is desired to be etched into the silicon, and his pattern is repeated over and over again in the mask for each CPU to be etched into the die. This is actually requires many exposures and several processes to lay down interconnections and such but the bottom line is at each step, light is shown through a mask on the die that may have some etch resist photo sensitive coating or other photosensitive process. Because of the geometry of the mask, light source and die, those CPUs near the very center of the mask have the sharpest defined features, those near the edge get somewhat fuzzy. The fuzziness impairs the electrical properties. As a result the CPUs cut from the center of the die are the highest performance CPUs. They will generally operate at the highest clock speeds, the lowest voltage, and the lowest temperatures. After manufacturer of CPUs are completed, the manufacturer tests each one, a process called binning, and then certain CPUs that operate at the lowest voltage will become the HQ models for portable devices, the rest that are within advertised specs are then sold. This means the worst positioned ones on the die will operate at advertised speed at relatively high input voltages and just on the threshold of becoming slag, while those close to the center of the die might operate at much faster than advertised speed with reasonable voltages and temperatures. Some very good i7-6700Ks will run at 5.2 Ghz air cooled, others can barely make the rated 4 Ghz with 4.2 Ghz turbo. The only way you can find out if you’ve won or lost the silicon lottery is to go through the process I’ve outlined and see what your chip will run at.