Tuesday, April 28, 2009

64-bit and multi-core computing

All software needs to be run on hardware. CPU can be 64 bits and multi-core. In order to fully utilize the upgraded hardware, we will need OS support and some knowledge in high level application coding to take advantage of the new hardware.

64-bit computing
32-bit computing is fine if you don't have any specific needs. In my very simplified view, there are 2 main considerations to move to 64-bit computing.
  • Addressable virtual memory address space. This is my #1 reason. If ~2GB is good enough for your application (after subtracting the memory footprint of the OS and VM from 4GB), stay put until there is another reason.
  • If you need bigger storage or can benefits from faster computation of larger 64-bit registries.
Multi-core computing
  • Performance is the most critical consideration here. Given the slow down of CPU clock speed improvement, and machine language processing efficiency, we have to rely on multi-processing or multi-threading to improve performance.
Another important side note, different processors with different architecture will perform differently with the same clock speed. Mainly due to how many cycles it needs to process different instructions

There are a whole new list of concurrency issues that we need to be aware of when we start to do multi-core concurrent processing. This is very different than using time-slicing to achieve
virtual concurrency in single-core processors. If you are interested, look up more on kernel threads, LWP and the (old) green threads.

No comments:

Post a Comment