People erroneously think that upgrading a firmware's set of microcodes will make the computer support newer processors. This is false. Microcodes are errata. No processor sold should need microcodes to boot. Besides, the operating system loads a newer version of microcodes anyway.
Experience shows that adding microcodes to Mac firmware will make the system less likely to boot.
New processors models for any socket are always made fully compatible with older hardware. Features are added, not deleted. Processor compatibility is limited by badly written firmware. In some cases (
Dell) this is intentional.
When a firmware starts running one of the first things it does is calls
CPUID (op code 0F A2). Good firmware checks the processor family, and if it actually has specific code for multiple families, chooses the appropriate branch. Bad firmware checks for a specific processor model number and halts if it is not an exact match.
To fix the firmware you should do the same kind of disassembly and analysis as I have done for the Mac Pro 2,1 firmware. Start reading from this post:
In the seven years the DELL Precision 690 microcode update thread has been up on the bios-mods.com site no one has figured out how to run Harpertowns or even to boot with quad-core Clovertowns on the wrong motherboard revision. User DeathBringer has however posted this insightful piece of code...
forums.macrumors.com
The Mac Pro 2,1 firmware accepts Clovertowns (CPUID 06F0h), but rejects Harpertowns (CPUID 0670h).
The processor-specific parts of the firmware are in the Pre-EFI Initialization section. It contains the PEI modules. The most important is the SEC core module, as it is the first one to be executed.
The EFI drivers in the .DXE modules are not processor specific. They do not need to be changed, unless you want to add new functionality to your Mac, like support for NVMe and APFS booting.
Upgrading a 2011 iMac with a Ivy Bridge CPU would be a great idea. The 2011 iMac is far more upgradable than the slim 2012 models. There is another thread on processor upgrades.
This is a Wiki post with information collected from the entire thread. Before you post, read this first. The difference between Mid 2011 21.5" and 27" concerning CPU upgradability is mainly caused by the available power from the power supply. --- The 21.5" has 210W power supply, the 27" has...
forums.macrumors.com
The GPU also needs to be upgraded to run modern versions of macOS.
iMac 2009 to 2011 MXM3 graphics card upgrade (Lastest update 10/13/2023 - this is the official documentation page - you found it finally!) This is the single and only documentation post. During the last years we constantly updated this post to reflect the lastet development of vBIOS and OCLP...
forums.macrumors.com
Update September 14, 2021:
I extracted the SEC-core module from the 27 inch firmware file provided by
@StephN999 using UEFITool. I then opened it using Hopper Disassembler V4. I found three places where the code looks at the CPUID. Two of these are at the start of the module, where the code loads the microcode.
In the first case the code loads the
CPUID into the EAX registers and scans the section of memory containing the microcodes for a match. If it finds a match, it does another check to see if the CPU is an Arrandale (0x20650), or an "Auburndale" (0x106F0). If so, it does some additional processing.
The last part of the code (wrmsr) writes the start address of the microcode into Model Specific Register 0x79, causing the processor to load the microcode from memory.
View attachment 1830886
I cannot see why the firmware code would reject an Ivy Bridge processor, not even when no microcode is present.