Tuesday, February 17, 2009

Multi-Core Software Management

I've noticed how great it is to have multiple cores. When a program get carried away, it only takes out 1 core. The OS and other applications simply run on the remaining core(s). However, as multi threading becomes more prevalent, this advantage could potentially disappear. The application could spam the cpu on multiple threads and take out multiple cores.

I propose we add a feature that reserves a core for a specific purpose (OS, window manager, services, networking, etc.). A runaway application would not have access to the reserved core, so the owner process will remain unaffected. At the moment, the amount sacrificed by reserving 1 core is great(1/4 = 25% cpu power). This cost will go down as the number of cores continue to increase.

This also brings up the idea of specialized cores. Distribute CPUs with different combinations of cores that specialize in different tasks.

Example Core Specializations
  • Networking
  • Graphics
  • Audio encoding, decoding, and playback
  • Video/DTV encoding, decoding, and playback
  • Advanced Mathematics
  • General Purpose
Currently, we only have 4 "General Purpose" cores. We supplement the lack of specialization by buying pci/agp/pcie adapters that provide the necessary utility. By combining the utilities, we can reduce cost, increase performance, and provide more flexible upgrade paths.

Cost is reduced for three reasons. One, there is less to create. Since the core is embedded inside the CPU, there is no need to create interfaces to the machine(power, PCIe, etc.) and the need to create a board is removed. Also, all the cores can share fabrication processes and be constructed in the same factories. Factories cost billions of dollars, so reducing their number can significantly cut costs. Finally, the need to provide memory is removed. The cores share memory installed on the motherboard.

This system has performance benefits because the data has a much shorter distance to travel. The "General Purpose" core can send graphics tasks to the "Graphics" core without talking to the system bus.

Users will be able to pick and choose the composition of their processors. If their CPU gets dated, or the computer changes roles (business to gaming), the user should be able to find a faster CPU as long as the manufacturer doesn't change socket specs.

Example Gaming Machine (8-core)
  1. Networking
  2. Graphics
  3. Graphics
  4. Audio encoding, decoding, and playback
  5. Video encoding, decoding, and playback
  6. Advanced Mathematics (for physics, calculus, weather prediction, etc.)
  7. General Purpose
  8. General Purpose
Example Business Machine (8-core)
  1. Networking
  2. Graphics
  3. Audio encoding, decoding, and playback
  4. Video encoding, decoding, and playback
  5. General Purpose
  6. General Purpose
  7. General Purpose
  8. General Purpose