Originally posted by: justinburton
Blazer7,
I guess you didn't read the inquirer article: "We learned that the affected CPUs are the Core 2 Duo E4000/E6000, Core 2 Quad Q6600, Core 2 Xtreme QX6800, QX6700 and QX6800"
Also I believe the patch fixes the microcode. But I am not even sure what microcode is. Maybe really small code at the CPU level?
A microcode update is an update the the actual CPU instructions and how they operate. Things like ADDSUBPD (Add Subtract Packaged Double), or HADDPS (Horizontal Add Packaged Single). These are the CPU instructions themselves that all programs are converted (compiled), into which inform the CPU what tasks to perform. A microcode update is an update the the process that the CPU performs when it is told to perform one of these instructions.
If you still don't understand what I am saying, continue reading.
A brief overview of how computers work. The CPU is now a mix of hardware and software which understands how to perform a fixed set of instructions. These instructions are the "CPU Instruction Set". For an Intel Core 2 processor, these are include the x86 instruction set, the EM64T instruction set, SSE, SSE2, SSE3, SSSE3, and others. The motherboard BIOS directly interfaces with all the hardware on the motherboard like the different system buses and CPU. This BIOS has a set of defined functions for checking the hardware exists and is working properly as well as knowing how to boot and load an operating system onto the system from different devices and modes that is has access to (i.e. boot off floppy, CD/DVD, USB, network, IDE, SATA, etc., etc.). The operating system has a kernel which know how to interface with the hardware architecture that it was designed to run on (i.e. 32 bit x86, 64 bit, SPARC, SPARC64, etc., etc.). The operating system kernel knows uses only the basics of the know instruction set to be most compatible with different CPUs. But it also can then load drivers for access to more complex functionality. The programs then run on top of the operating system kernel and have access to the computer hardware through the operating system kernel. Most applications are programmed in a higher order computer language like C, C++, C#, VB, JAVA, etc., etc., etc... Most of these languages are then compiled using a compiler into the machine code for the specific CPU architecture it is designed to run on. The compiler is told what CPU you want to compile the program for, and it knows of the different instruction sets that CPU is aware of and then converts the higher level language in to a fairly optimized machine level code (much like translating something from Spanish to English). The CPU only knows how to work with machine code, not the higher level language we prefer to program in nowadays. With the translation having been made, the code can be run by the CPU.
Now on top of all this, modern day CPUs being a mix of hardware and software, have many higher level instructions which are really a grouping of other instructions. These are to help make the people who write the compilers have easier jobs by taking a group of things that are commonly done and make them a single instruction to the CPU instead of having to send the full combination. This is where the microcode updates come into play. The microcode update changes how the CPU executes these grouped instructions. However, the CPUs can not be permanently updated since you can not write to the section in the CPU where these instructions are stored. However, we can override the instructions by placing the override information into a special section in the CPU, however this is not permanent memory, and will be lost when the CPU loses power. A BIOS update is the ideal way to apply a microcode update as it will send the update to the CPU each and every time the system gets turned on. However, you can also send a microcode update from the OS kernel. But, the problem with this method is that it is a different patch that would be needed to be written for each and every operating systems that may exist. For instance, Windows 2000, 2003, XP, XP Pro, XP Business, OS X, Sun Solaris 9 x86, Solaris 10 x86, Red Hat Enterprise Linux 3, RHEL 4, etc., etc., etc. In other words, hundreds of different operating systems exist which can run on the x86 platform which this CPU is a member. Which means it is best to have the motherboard manufactures issue a BIOS which contains the microcode update.