| Style over substance|
“”There is in fact a "Megahertz Myth" and it exists in the minds of those who think that the only factor that matters is raw chip speed, as defined in megahertz ratings. Especially true in the case of different CPU designs, even among products in the same family. When you start to compare different classes of chips, the mythological 1:1 relationship of MHz to "speed" becomes even more difficult to cling to.
|—Aphelion, ArsTechnica forums|
The megahertz myth is a name for the widely held misconception that the computing power of a CPU is strictly a function of its clock speed. In reality, clock speed is only one of many factors that determine the speed at which a CPU can execute instructions. The myth is largely a creation of computer and hardware manufacturers' marketing departments, who for a while highlighted clock speed as one of the primary features in their advertising, playing up the innate assumption that big numbers = MOAR POWER!!!11
What affects speed
“”For many years, the number of times a computer's clock — PC's "heart" to its processor's "brain" — ticked each second was a direct indication of how many calculations a processor could perform. One clock tick, one instruction, was how the design rule ran.
|—Tony Smith, The Guardian|
Although CPU clock speeds have not significantly changed in the last decade, many improvements to hardware efficiency and software optimization have kept actual performance steadily growing.
Modern CPUs include multiple execution units, or cores, within the same chip. Each one of these cores has all of the capabilities of a CPU, which are able to work together on the same piece of software. This is known as parallel processing. While modern multi-core CPUs may run at a lower megahertz speed than past processors, their multiple cores allow them to process more workloads simultaneously. Therefore, the same amount of work can be achieved at lower speeds. Fewer megahertz equals less power, so multi-core CPUs are not only more powerful, they are also significantly more energy efficient. The multi-core CPUs in modern smartphones are able to achieve greater performance with fewer than five watts of power than the the hundreds of watts needed by desktop computers from even less than a decade earlier. Desktop and laptop computers sold today typically have two- or four-core CPUs; enthusiast, academic and professional computers can have CPUs with dozens, if not hundreds, of cores (in the case of corporate mainframes).
To take advantage of parallel processing, developers must write their code accordingly in order to distribute the software's workload among the available cores. Some algorithms, especially those with many interdependencies between intermediate results, can be hard or impossible to parallelize.
In the same way that a single CPU with multiple cores can distribute its workload, multiple CPUs, each with multiple cores, can further parallelize the task at hand. These multiple CPUs may all be housed in the same case on a common motherboard, or they may be spread out across multiple racks of cases that then communicate with each other over high-speed network links. Supercomputers use this technique, having sometimes hundreds of thousands of CPUs (and GPUs) working together on one task to achieve their huge processing power. Similarly, the vast server and render "farms", employed by companies like Google and Industrial Light and Magic, utilize hundreds of thousands of cooperating CPUs.
Because of these techniques, making many CPUs act as one, the only theoretical limit to a supercomputer's processing power is the physical space it can occupy. The real-world limits are energy usage and heat dissipation. At its peak, the Oak Ridge National Laboratory Titan's 37,376 CPUs and GPUs require 8.2 megawatts of power (or, enough to power about 8000 homes). The Titan's cooling system has 6600 tons of capacity (a large house has about 3 tons).
Distributed computing projects, like Folding@home and BOINC, allow home PC users to volunteer their unused processing power, through the internet, to globally networked projects. With distributed computing software, a home PC downloads and then calculates a small chunk of a much more massive shared data set. Once work on that small chunk has been completed, it is uploaded into the global data set, and a new small chunk is downloaded to be worked on. In this manner, the unused power of millions of home PCs can be leveraged into solving extremely complex problems, like genome folding and the cataloguing of astronomical data. Bitcoin also works similar to this.
Graphics processing units (GPUs) are specialized processors that can quickly perform a limited set of operations on a large series of values at the same time (for example, pixels on a screen). This differs from the CPU, which is able to preform a much broader array of functions, but at a slower rate. As their name implies, GPUs are usually used for rendering graphic elements or video game graphic elements efficiently, but can also be used for machine learning or other data-driven tasks that are hugely parallelizable. GPUs currently account for a vast majority of the processing power in nearly all of the world's supercomputers. Two of the fastest supercomputers, China's Tianhe-2 and the US's Titan, both utilize tens of thousands of GPUs, most of which are little more than scaled-up versions of the same add-in cards used in home PCs.
Miniaturization of components makes it possible to have more components in the same chip, which in turn can be used to parallelize more tasks. There are some physical limits on miniaturization, because as the size of components decreases, quantum effects such as tunneling become more apparent.
Instructions connect computer software to hardware and are information sent to the processor to be interpreted. The types of processors include:
|Vector processors||Scalar processors||Superscalar processors|
|One fixed-length instruction is interpreted per clock cycle, one after another. Unlike scalar it excels at manipulating large blocks of data.||Similar to vector, scalar interprets one instruction at a time and manipulates one data item at a time.||Executes multiple instructions at a time because it has multiple pipelines and can manipulate multiple data items at a time.|
It is clear that superscalar is superior to scalar because more instructions can be interpreted at a time. Being able to process more instructions per machine cycle means that processes are performed relatively more quickly.
Bus and memory speed
RAM is orders of magnitude slower than the CPU, and peripherals like drives and networking adapters are slower still. In modern computers, the CPU spends a good deal of time waiting for data to be read from or written to other components. Faster memories, more and bigger CPU caches, and faster buses are used to try to chip away at this delay.
Other techniques that have been employed to improve computing performance are:
- Register renaming, to overcome the difficult instruction-level parallelism due to the scarceness of registers in some instruction sets (like those of the x86 architecture).
- Out-of-order execution, to avoid wasting cycles by executing instructions in a different order while making sure the semantics of the program remain the same.
- Addition of specialized instructions that are optimized for performing some tasks more quickly than they would if these operations were manually performed by the binary code. Compilers can recognize these patterns in programs and generate machine code that makes use of these specialized instructions. For example, POPCNT in SSE4 counts the number of 1 bits in a numeric value. Other instructions can speed up common cryptographic or media encoding/decoding operations.
- The Guardian writes: "For years, that frequency - measured in megahertz and more recently gigahertz - has been a key factor for millions of consumers when buying PCs. The higher the number the better, goes the rule of thumb."
- The Guardian writes: ""while AMD's engineers may be happy with the balance they have struck, the company's business brains aren't so keen. They know that while their top-of-the-range processor runs at 1.67GHz, Intel's runs at 2.2GHz - and too many buyers assume it is much faster. [...] To stay within the law, the comparison AMD makes is with the previous generation of Athlon, but make no mistake. It wants buyers to have Intel's figures in mind. Moorhead is convinced they are doing so and that without that performance comparison, the Athlon XP's first three months would not have proved as successful. Certainly AMD's market share dipped a fraction in the last quarter of 2001, but not enough to say whether it has struck a chord with the "victims" of the megahertz myth - consumers. Ultimately, it may not matter. Moorhead admits that the naming scheme is a "bridge metric" to fill the gap until the company can come up with something more meaningful."