
21918B/0—October 1999
AMD-K6
-
III
Processor Data Sheet
Chapter 2
Internal Architecture
13
The AMD-K6-III processor uses a combination of decoders to
convert x86 instructions into RISC86 operations. The hardware
consists of three sets of decoders—two parallel short decoders,
one long decoder, and one vector decoder. The two parallel
short decoders translate the most commonly-used x86
instructions (moves, shifts, branches, ALU, FPU) and the
extensions to the x86 instruction set (including MMX and
3DNow! instructions) into zero, one, or two RISC86 operations
each. The short decoders only operate on x86 instructions that
are up to seven bytes long. In addition, they are designed to
decode up to two x86 instructions per clock. The
commonly-used x86 instructions that are greater than seven
bytes but not more than 11 bytes long, and semi-commonly-used
x86 instructions that are up to seven bytes long are handled by
the long decoder.
The long decoder only performs one decode per clock and
generates up to four RISC86 operations. All other translations
(complex instructions, serializing conditions, interrupts and
exceptions, etc.) are handled by a combination of the vector
decoder and RISC86 operation sequences fetched from an
on-chip ROM. For complex operations, the vector decoder logic
provides the first set of RISC86 operations and a vector (initial
ROM address) to a sequence of further RISC86 operations. The
same types of RISC86 operations are fetched from the ROM as
those that are generated by the hardware decoders.
Note:
Although all three sets of decoders are simultaneously fed a
copy of the instruction buffer contents, only one of the three
types of decoders is used during any one decode clock.
The decoders or the on-chip RISC86 ROM always generate a
group of four RISC86 operations. For decodes that cannot fill
the entire group with four RISC86 operations, RISC86 NOP
operations are placed in the empty locations of the grouping.
For example, a long-decoded x86 instruction that converts to
only three RISC86 operations is padded with a single RISC86
NOP operation and then passed to the scheduler. Up to six
groups or 24 RISC86 operations can be placed in the scheduler
at a time.
All of the common, and a few of the uncommon, floating-point
instructions (also known as ESC instructions) are hardware
decoded as short decodes. This decode generates a RISC86
floating-point operation and, optionally, an associated