hpca ยป


Students - add anything you want to this page. The course developer (Catherine) will make sure it is placed in the correct Wiki page for the course.


  1. Usually, a compiler generates a computer program consisting of two pieces, the processor instructions and the data.  We can consider PC calculation a separate (third) component of a program.  The compiler can produce code for PC calculations (and register assignments.) E.g. the loop from 1 to N may generate an exact code for PC changes suitable for N iterations and an exit. 
  2. I would also expect considerable support from the compiler for branch predictions. The compile can see the high level source code, and make better decisions on how the flow will go for the majority of cases.  This calls for various assembly/machine language jump instruction variants like "conditional jump probably taken," "conditional jump probably non-taken," "conditional jump 50/50," etc.


  1. An additional set of heads operating on the same disk will allow to process two disk requests simultaneously, and thus to improve the performance.


  1. We can run most of the programs in a not shared memory, and use the shared memory only when needed for process communication.
  2. If the OS decides to move a thread to a different core it may explicitly invalidate the old cache.
  3. If we add a invalid bit to each memory block, the memory and the caches will behave the same way.