An approach to hiding memory latency in a multi-thread environment is
presented. Branch Indirect and Set Link (BISL) and/or Branch Indirect and
Set Link if External Data (BISLED) instructions are placed in thread code
during compilation at instances that correspond to a prolonged
instruction. A prolonged instruction is an instruction that instigates
latency in a computer system, such as a DMA instruction. When a first
thread encounters a BISL or a BISLED instruction, the first thread passes
control to a second thread while the first thread's prolonged instruction
executes. In turn, the computer system masks the latency of the first
thread's prolonged instruction. The system can be optimized based on the
memory latency by creating more threads and further dividing a register
pool amongst the threads to further hide memory latency in operations
that are highly memory bound.