What is Microcode?
Thanks Jan and Grant I have a bit better Idea of microcode now. Although it seems like microcode may give me slightly better system performance (if I transfer the microcode to the processor that is) I seriously doubt anything is going to speed up this old box 🙂 She’s been good, but with this recent upgrade to Mandrake 9.0 I’m starting to discover her limitations. Its funny how not long ago her 160megs of physical memory would have been top of the line but now 150 of that is consumed before I get a chance to do anything with the system. I’m not discovering an error message i haven’t seen before in syslog….”killed
Microcode is a set of instructions that are not program accessible. The instructions are typically written on read only memory chips used by hardware for specific instructions. A video card or other add-on card used in a computer may contain microcode to aid it in completing its tasks. Many microprocessors use microcode to handle machine instructions and assist the chips or CPU in operations. The updates to this code can be contained in firmware, which replaces the existing microcode with updates. Since this code is not accessible while the hardware is running, there is typically a specific way that the new microcode needs to be loaded, depending on the device. Some routers or hardware firewalls store their operating systems in EPROM, and have no hard disks in them to store programming. The configurations for these devices are stored in both read only memory, so the device can lose power without losing its configuration, and in random access memory, in which the configuration is stored
Posted Nov 11, 2005 19:33 UTC (Fri) by giraffedata (subscriber, #1954) In reply to: On binary drivers and stable interfaces by Ross Parent article: On binary drivers and stable interfaces Thanks for making a point that needed to be made. We should clarify though, that people (IBM engineers are the only ones I’ve heard do it) do often use the term “microcode” to refer to any software built into a device. They’re all wrong. Also for the sake of precision, microcode isn’t just for CPUs. Any machine can be driven by microcode — it’s really just a style of software; a class of instruction set. In days when CPUs were expensive, many machines were implemented with microcode. I don’t know how much microcode is in use today, but I imagine communication processors (e.g. inside a network switch or TCP Offload Engine) get some use out of it go faster than any conventional CPU could go. I found a pretty good definition at http://www.webopedia.com/TERM/M/microcode.html . “firmware,” unfortunately,
microcode is one level away from the digital logic level of a CPU. In Assembler, the programmer uses a mnemonic representation for instructions, such as move.b bpb(PC),D0 cmpi.b #1,D0 ;1 or lower value ble.s endbpb ;means no emphasis addq.b #1,D2 cmp.b D0,D2 beq.s adjustbpb lea dlyav(PC),A0 move.w #10,(A0) lea dlybv(PC),A0 move.w #390,(A0) rts These instructions actually represent an address in a kind of CPU ROM that contains (you guessed it), microcode. The value that each mnemonic represents is used to manipulate a Micro Program Counter [MPC]. For example. The rts (return from subroutine) instruction would need micro- instructions to enable certain registers to recieve data off an internal CPU bus, copy the contents of the Stack Pointer [SP] into a Memory Address Register [MAR], assert a memory read signal, update the SP, copy the contents of the Memory Buffer Register [MBR] into the Program Counter [PC], then fetch the instruction pointed to by the PC. Each of these micro-instructio