Search code examples
x8632bit-64bitsseprocessor

Questions about X86 processors


I have two questions about X86 processors.

First: What is SSE? What is it for? Is it CISC architecture? Should a programmer that does not program in Assembly and does not program compilers learn SSE?

Second: 64-bits processors support 32-bits processors. If 64-bits processors replace 32-bits processors, should programmers compile app that uses less than 2 GB of RAM for 32-bits? 32-bits app uses smaller amount of memory and its binaries are smaller. The OS have to store shared libraries for both 32 and 64 bits, and it may be a problem.

Thanks


Solution

  • [Heh, while answering this question, it was migrated to superuser, then deleted, and now it seems to be magically back here. Third try is the charm!]

    I'm not well-versed in SSE, but it is a mechanism to operate on multiple datasets in parallel per clock cycle. (Older chips left a surprising amount of silicon idle per cycle; the chips got better at executing multiple instructions per cycle on their own, but it involved a fair amount of guesswork, and failed completely at some data-heavy algorithms.) So SSE takes a page from older SIMD systems, which allowed executing the same commands on multiple pieces of data. The setup time might have taken longer, but it got a lot done in the long term.

    Depending upon what you're trying to get done, it can make a huge difference, but most programmers will probably never need the sorts of tools that SSE can provide.

    As for executing 32 bit processes on 64 bit processes to save memory, that's a real possibility. But when AMD were first introducing the x86-64 instruction set, they were very careful to point out the new instructions and additional registers that could improve performance on tasks that weren't running out of address space or performing many 64-bit arithmetic operations. They mentioned that most people would probably want most code to be executing in 64-bit mode, but that the performance speedups would be subtle most of the time.

    So, with the exception of Firefox and Flash, 64-bit is ubiquitous, and the memory expansion due to larger pointers doesn't seem to be a big issue.