Page 133 - A Practical Guide from Design Planning to Manufacturing
P. 133

106   Chapter Four

        (SSE) and AMD 3DNow! Professional extensions provide instructions for
        operating on 128-bit vectors. RISC architectures have similar extensions
        including the SPARC VIS, PA-RISC MAX2, and PowerPC AltiVec.
          Integer, floating-point, and vector operands show how much com-
        puter architecture is affected not just by the operations allowed but by
        operands allowed as well.

        Memory addresses. In Gulliver’s Travels by Jonathan Swift, Gulliver
        finds himself in the land of Lilliput where the 6-in tall inhabitants have
        been at war for years over the trivial question of how to eat a hard-boiled
        egg. Should one begin by breaking open the little end or the big end? It
        is unfortunate that Gulliver would find something very familiar about
        one point of contention in computer architecture.
          Computers universally divide their memory into groups of 8 bits called
        bytes. A byte is a convenient unit because it provides just enough bits
        to encode a single keyboard character. Allowing smaller units of memory
        to be addressed would increase the size of memory addresses with
        address bits that would be rarely used. Making the minimum address-
        able unit larger could cause inefficient use of memory by forcing larger
        blocks of memory to be used when a single byte would be sufficient.
        Because processors address memory by bytes but support computation
        on values of more than 1 byte, a question arises: For a number of more
        than 1 byte, is the byte stored at the lowest memory address the least
        significant byte (the little end) or the most significant byte (the big
        end)? The two sides of this debate take their names from the two fac-
        tions of Lilliput: Little Endian and Big Endian. Figure 4-2 shows how
        this choice leads to different results.
          There are a surprising number of arguments as to why little endian
        or big endian is the correct way to store data, but for most people none
        of these arguments are especially convincing. As a result, each archi-
        tecture has made a choice more or less at random, so that today different
        computers answer this question differently. Table 4-11 shows architec-
        tures that support little endian or big endian formats.
          To help the sides of this debate reach mutual understanding, many
        architectures support a byte swap instruction, which reverses the byte



        Address  Data
                           Little endian
          14     1           1,234
          13     2                    Figure 4-2  Little endian vs. big
                                      endian.
          12     3
                           Big endian
          11     4           4,321
   128   129   130   131   132   133   134   135   136   137   138