Slashdot Mirror


A History of PowerPC

A reader writes: "There's a article about chipmaking at IBM up at DeveloperWorks. While IBM-centric, it talks a lot about the PowerPC, but really dwells on the common ancestory of IBM 801" Interesting article, especially for people interested in chips and chip design.

4 of 193 comments (clear)

  1. Guide to the PowerPC architecture by Anonymous Coward · · Score: 5, Informative

    They also have a very good article about the PowerPC's three instruction levels and how to use implementation-specific deviations, while code stays compatible. This introduction to the PowerPC application-level programming model will give you an overview of the instruction set, important registers, and other details necessary for developing reliable, high performing PowerPC applications and maintaining code compatibility among processors.

  2. Re:Big Endian by Mattintosh · · Score: 5, Informative

    PPC is big endian, which is normal.

    X86 is little endian, which is chunked-up and backwards.

    Example:
    View the stored number 0x12345678.

    Big endian: 12 34 56 78
    Little endian: 78 56 34 12

    Clear as mud?

  3. Re:For those who want PPC970 without getting a Mac by Morologous · · Score: 5, Informative

    Or, you could always settle for an RS/6000.

    RS/6000

    Or, a Power-based IBM workstation,

    Workstation

  4. Re:Big Endian by Anonymous Coward · · Score: 5, Informative

    Big-endian appeals to people because they learned to do their base-10 arithmetic in big-endian fashion. The most significant digit is the first one encountered. It's habit.

    Little-endian has some nice hardware properties, because it isn't necessary to change the address due to the size of the operand.

    Big Endian:
    uint32 src = 0x00001234; // at address 1000, say
    uint32 dst1 = src; // fetch from 1000 to get 00001234
    uint16 dst2 = src; // fetch from 1000 + 2 to get 1234

    Little Endian:
    uint32 src = 0x00001234; // at address 1000, say
    uint32 dst1 = src; // fetch from 1000
    uint16 dst2 = src; // fetch from 1000

    The processor doesn't have to modify register values and funk around with shifting the data bus to perform different read and write sizes with a little-endian design. Expanding the data to 64 bits has no effect on existing code, whereas the big-endian case will have to change all the pointer values.

    To me, this seems less "chunked up" than big endian storage, where you have to jump back and forth to pick out pieces.

    In any event, it seems unnecessary to use prejudicial language like "normal" and "chunked up". It's just another way of writing digits in an integer. Any competent programmer should be able to deal with both representations with equal facility.

    Being unable to deal with little-endian representation is like being unable to read hexadecimal and insisting all numbers be in base-10 only. (Dotted-decimal IP numbers, anyone?)

    Big-endian has one big practical advantage other than casual programmer convenience. Many major network protocols (TCP/IP, Ethernet) define the network byte order as big-endian.