Danny's Tech: Where West and East Intersect

Sunday, March 18, 2007

Multi-Core Debug

I was looking through JavaOne conference program and noticed Groovy language and was intrigued by it. But what really got my attention was "Java Platform Performance on Multicore: Better Performance or Bigger Headache?"

AMD is touting their AMD CodeAnalystâ„¢ Performance Analyzer which is proposed as a tool to improve performance of multi-threaded Java program. But based on the above abstract, it seems to be a step closer to using such tools to help debug code.

Copyright 2007, DannyHSDad, All Rights Reserved.

Labels: , ,

Tuesday, January 30, 2007

Where's the Beef for multicore

"Where's The Software To Catch Up To Multicore Computing?" Here's a great intro (and summary):
IBM's chief architect for next-generation systems software wonders how far we'll be able to push the software required to take advantage of supercomputer-class machines.
They obviously haven't figured out how to program for multi-processor systems. [Not that I have any better solutions myself...]

Copyright 2007, DannyHSDad, All Rights Reserved.

Labels: ,

Wednesday, January 17, 2007

Micro-Programs and cooperative scheduling

It used to be that OS used to time share several programs running on a CPU by forcing a context switch over microseconds (or other small time intervals). But the problem with a timed context switch is that there is an overhead of setting and handling an interrupt and then resuming after that interrupt.

What if programs could be compiled into "micro" units (a spin-off of the micro-kernel idea) so that there is no need to interrupt any program: Each micro-program will run at most xyz time units/cycles so that it will let go of the CPU in a fair way. The beauty of this is multi-fold:
  1. OS only does context switch: no need to force a stop and try to recover by restarting the interrupted process
  2. Easier to distribute the program across multiple cores.
  3. Easier to synchronize with other micro-programs -- because a micro-program ends ready to switch (give up its CPU slice), it can be stopped and synchronized with other micro-programs waiting on the same event, etc.
  4. Easier to distribute the micro-program on non-uniform multi-processor systems since each micro-program are self contained.
Obviously the standard code to force timesharing still has to be around to deal with non-conformant programs but the scheduler can be biased to give higher priority to well behaved micro-programs so that there is disincentive(s) for status quo.

Copyright 2007, DannyHSDad, All Rights Reserved.

Labels: , ,