Intel AVX kills AMD SSE5

By: Agner (www.agner.org.delete@this.nospam.no), June 17, 2008 7:14 am
Room: Moderated Discussions
When AMD published their new ISA extension named SSE5 in late August 2007, they also introduced a new instruction code format for instructions with 3 or 4 operands. When Intel presented their AVX extension in April this year they introduced another code format that also supports 3 or 4 operands. These two formats are very different. We are now in a position where AMD and Intel are using completely different coding schemes for the same instructions. This is every programmer's nightmare! I cannot imagine any significant number of programmers making three versions of their code: one for AMD, one for Intel, and one for compatibility with older processors.

The forking of instruction sets and coding schemes is one of the less desirable consequences of free competition. We would all prefer some kind of international standardization committee that could approve new instruction codes. Such a committee would be reluctant to accept new shortsighted patches that add just another complication to instruction decoding. They would have weeded out the bizarre undocumented instructions from the old 8086 days that are still supported. And they might not accept the addition of new instructions to the already bulging instruction set mainly for marketing reasons with little technical benefit. Unfortunately, there is little hope that such a committee will be formed.

I have looked into the details of the two competing instruction formats and made a comparison:

* Both ISA extensions are compatible with all existing code.

* SSE5 supports 3 operands for new instructions only. AVX extends existing instructions to 3 operands as well. Almost all existing instructions on XMM registers are extended to 3 operands, and the code format makes room for also extending general-purpose register instructions to 3 operands.

* SSE5 supports instructions with 4 operands, but only if two of the operands are the same register. AVX supports any combination of 4 registers by adding an extra code byte. Future extension to 5 operands is possible.

* SSE5 makes instructions longer. AVX makes some instructions longer and some instructions shorter, but most instructions keep the same length as before despite containing one more register operand and other new information.

* SSE5 adds yet another complication to the already very complicated instruction decoding procedure. AVX makes instruction decoding simpler by sanitizing a lot of old patches. The many prefixes and escape bytes that pester the current instruction set are joined together into a single "VEX" prefix that is 2 or 3 bytes long.

* AVX supports the extension of the 128-bit vector registers (XMM registers) to 256 bits (YMM registers) with room for further extensions in the future. SSE5 has no room for new extensions.

* AVX has 3 unused bits for future extensions to the now overloaded opcode map. This means no new shortsighted patches for a foreseeable future.

Before I saw the AVX documentation, I would have denied that it was possible to add so much new information without making instructions longer. The trick is that it makes one long prefix instead of many short prefixes. One or a few bits in the new VEX prefix contains the same information as a whole 8-bit or even 16-bit prefix or escape code in the current coding scheme. The two VEX prefixes are made out of two obsolete instructions, LDS and LES, which are valid in 16- and 32-bit mode but invalid in 64-bit mode. Certain bits in the VEX prefix that indicate register extensions available only in 64-bit mode are placed in such a way in the VEX prefix that the only values valid in 32-bit mode form an invalid register operand if interpreted as a legacy LDS or LES instruction. This is a solution no less ingenious than the x64 extension invented by AMD.

Looking at the advantages of AVX over SSE5 there can be no doubt that AMD has no choice but to adopt AVX. There is no way AMD can stay in competition without supporting the new 256-bit vectors and the 3-operand version of all existing XMM instructions. And, incidentally, it will be easier to implement the new 3-operand instructions for AMD than it is for Intel because the current Intel microarchitecture does not allow micro-operations with more than two inputs, while the AMD microarchitecture has no such limitation.

Let me explain the advantage of 3-operand instructions to those who don't know what this is about. Most of the current instructions place the result of a calculation in the same register as one of the input operands, e.g.:
A = A * B.
With a 3-operand version, you can do:
C = A * B.
This gives the programmer the freedom to reuse the original value of A in other calculations without having to copy it to another register. The result is fewer register-to-register moves and hence more efficient and compact code.

The SSE5 instructions will suffer the same fate as AMD's 3DNow instructions. Nobody ever used the 3DNow instructions because they are not supported in Intel processors. They are superseded by the more efficient SSE instructions, but AMD have to keep supporting them in all their future processors for the sake of backwards compatibility. Let's hope that AMD have the guts to drop SSE5 altogether before it's too late. There has been some speculation that they might.

Too bad that AMD haven't seen this coming before they published their SSE5 spec. Intel must have been able to keep their plans secret despite the patent sharing agreement between AMD and Intel. Maybe there is no patent on AVX?

See also my second posting on the software and hardware consequences of extending the size of the vector registers in the thread "Consequences of extending XMM registers to YMM".

My Email address etc. is at http://www.agner.org/optimize
 Next Post in Thread >
TopicPosted ByDate
Intel AVX kills AMD SSE5Agner2008/06/17 07:14 AM
  Intel AVX kills AMD SSE5a reader2008/06/17 08:03 AM
  Bulldozer?David Kanter2008/06/19 03:23 PM
    Bulldozer?EduardoS2008/06/19 05:11 PM
    Bulldozer?Max2008/06/19 05:16 PM
      Bulldozer?Goose2008/06/21 01:23 AM
        Bulldozer?David Kanter2008/06/21 06:37 AM
          Bulldozer?someone2008/06/21 06:55 AM
            Bulldozer?David Kanter2008/06/21 07:07 AM
              Bulldozer?S. Rao2008/06/21 10:08 AM
                RegfilesPeter2008/06/21 10:49 AM
                Bulldozer?Linus Torvalds2008/06/21 11:23 AM
                  Bulldozer?S. Rao2008/06/21 03:50 PM
                  unified physical register file nullifies x86 advantageMichael S2008/06/21 11:24 PM
                    unified physical register file nullifies x86 advantageDavid Kanter2008/06/22 08:35 AM
                      unified physical register file nullifies x86 advantagehobold2008/06/22 12:03 PM
                    Reg file vs. forwarding networkDavid Kanter2008/06/22 09:36 AM
                      Reg file vs. forwarding networkhobold2008/06/22 11:39 AM
                        Reg file vs. forwarding networkPeter2008/06/22 01:48 PM
                          Reg file vs. forwarding networkDavid Kanter2008/06/22 07:54 PM
                            Reg file vs. forwarding networkPeter2008/06/23 02:44 AM
                              Reg file vs. forwarding networksavantu2008/06/23 03:41 AM
                                Reg file vs. forwarding networkPeter2008/06/23 06:35 AM
                        Reg file vs. forwarding networkAnders Jensen2008/06/23 10:05 AM
                        Reg file vs. forwarding networkleft nutz2008/06/27 06:31 AM
  Intel AVX kills AMD SSE5nobat2008/06/21 10:23 AM
    Intel AVX kills AMD SSE5Agner2008/06/21 09:01 PM
      So...Dean Kent2008/06/22 06:35 AM
  SSE5 has a great chance to succeed.mpx2008/06/21 11:25 PM
    SSE5 has a great chance to succeed.Michael S2008/06/22 12:42 AM
      SSE5 has a great chance for fiascoAgner2008/06/22 02:32 AM
        SSE5 has a great chance for fiascoIan Ameline2008/06/22 07:37 AM
        SSE5 has a great chance for fiascoanonymous2008/06/22 08:02 AM
          SSE5 has a great chance for fiascohobold2008/06/22 11:59 AM
            SSE5 has a great chance for fiascoHoward Chu2008/06/22 03:38 PM
      SSE5 has a great chance to succeed.hobold2008/06/22 11:52 AM
        SSE5 has a great chance to succeed.Michael S2008/06/22 12:46 PM
          SSE5 has a great chance to succeed.Hannes2008/06/24 07:49 AM
            SSE5 has a great chance to succeed.anonymous2008/06/24 09:46 AM
          SSE5 has a great chance to succeed.Ian Ollmann2008/06/24 09:12 PM
Reply to this Topic
Name:
Email:
Topic:
Body: No Text
How do you spell green?