Browse over 10,000 Electronics Projects

Reverse Engineering the ARM1 Processor’s Microinstructions

Reverse Engineering the ARM1 Processor’s Microinstructions

Microcode in RISC?

Everyone “knows” that RISC processors don’t use microcode.[3] So does the ARM1 have “real microcode”?One of the ARM1 architects explains microcode: “A microcode address is formed from some or all of the contents of the instruction register, together with some state values which are internal to the micro-control unit. This address is decoded to drive a unique row of a matrix, the columns of which are the control signals for the datapath.”[4] This description is a perfect fit for how the ARM1’s control works, so it seems reasonable to consider the ARM1 to have microcode.

I think it’s easiest to understand the ARM1’s control logic by viewing it as microcode. However, there are couple reasons to consider it not “real microcode”. One reason is that the ARM1 microcode is only a small part of the chip’s control, as you can see in the die photo and floorplan earlier. The control signals are heavily modified by the instruction skip component and conditionals are handled by the conditional unit. This goes beyond vertical microcode, where logic expands the microcode’s control signals; in the ARM1, this other circuitry can entirely override the control signals. In addition, the ARM1 uses separate circuitry (the priority encoder) to control the block data transfer instructions; the microcode just sits in a loop. (The ARM2 is similar with multiplication — a separate circuit controls multiplication.)



Advertisement1


The ARM1’s microcode is an order of magnitude smaller than other microcoded processors. The ARM1’s microcode has a 42×36 microcode, for 1512 bits in total. The 8086 used a 504×21 microcode (over 10,000 bits) while the 68000 has a 544×17 microcode and 366×68 nanocode (over 34,000 bits).

Probably the biggest objection to calling the ARM1 microcoded is that the designers of the ARM chip didn’t consider it that way.[4] Furber mentions that some commercial RISC processors use microcode, but doesn’t apply that term to the ARM1. He describes ARM1’s instruction decode as two-level structure. In the first level, the instruction decoder PLA differentiates instructions into classes with similar characteristics. The secondary decoding uses the information from the first level along with hardware to cope with all the possible operations. The first level is described as providing “broad hints” about which functions to choose, and the second level fills in the details with bits from the instruction.

Pages: 1 2 3 4 5 6 7

 


Top