Since computers were first built in the 1940s and 1950s, their basic architecture hasn't changed much, the entire processor with the accompanied instruction set was implemented in hardware and then the software was written specifically to make use of that instruction set. As a result, even the fastest processors will perform poorly if the code isn’t written properly or isn’t optimized for the processor’s specific features. For example, just look at the Pentium 4, its performance relies heavily on code optimizations for its advanced features.
Recent attempts such as Transmeta's Crusoe partially circumvent this problem by implementing a very fast hardware engine surrounded by a software layer that contains the desired instruction set of the processor in software which is translated to the processor's native instruction set. Due to its programmable nature, the software layer can adapt and optimize the code that has to be executed. Thus offering some advantages over the current x86 CPUs as used in most desktop processors.
However, for some applications this basic feature of processor architecture is changing, as re-programmable CPU's, such as FPGA CPUs, are used more often to actually create a processor that offers a far greater level of performance than before. The performance benefit comes from reprogramming the processor’s hardware prior to running the application. The hardware of an FPGA-based computer is reconfigured for each application, and thus fits the application like a glove. In this way, the structure of the processor can be made to match the structure of the computation, and an FPGA-based computer can achieve supercomputer performance on a range of applications at a fraction of the cost.
But most Importantly, the reconfiguration of the processor structure is not done by designing new computer hardware but by programming the FPGA-based computer in a standard high-level language. This offers a far greater level of flexibility than having a set standard such as x86 and then having to ‘morph’ a software layer around it, we can now really program our CPU to do one specific task and do it really well. Unfortunately that rules out any application in a desktop PC as their range of applications is simply too broad, for scientific or computationally intensive tasks these computers might offer a huge increase in performance and productivity though.