US2006080661A1PendingUtilityA1

System and method for hiding memory latency

Assignee: IBMPriority: Oct 7, 2004Filed: Oct 7, 2004Published: Apr 13, 2006
Est. expiryOct 7, 2024(expired)· nominal 20-yr term from priority
G06F 9/323G06F 9/3851G06F 9/322G06F 8/41
48
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A System and method for 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.

Claims

exact text as granted — not AI-modified
1 . A computer-implemented method comprising: 
 loading a plurality of threads on a processor, whereby the plurality of threads includes a first thread and a second thread;    detecting a prolonged instruction included in the second thread; and    branching to the first thread using a first return address that corresponds to the first thread in response to the detecting.    
   
   
       2 . The method of  claim 1  further comprising: 
 assigning a plurality of registers included in the processor to the first thread and the second thread, wherein a first register from the plurality of registers for the first thread includes the first return address; and    in response to the branching, storing a second return address in a second register from the plurality of registers that corresponds to the second thread.    
   
   
       3 . The method of  claim 2  further comprising: 
 retrieving the second return address; and    returning to the second thread from the first thread at the second return address.    
   
   
       4 . The method of  claim 2  further comprising: 
 determining whether the prolonged instruction for the second thread is complete; and    branching back to the first thread in response to the determination.    
   
   
       5 . The method of  claim 2  further comprising: 
 storing the first return address in the first register; and    branching to the second thread.    
   
   
       6 . The method of  claim 1  wherein a branch instruction corresponding to the branching is selected from the group consisting of a branch indirect and set link instruction and a branch indirect and set link if external data instruction.  
   
   
       7 . The method of  claim 1  wherein the prolonged instruction is a direct memory access instruction.  
   
   
       8 . A program product comprising: 
 computer operable medium having computer program code, the computer program code being effective to: 
 load a plurality of threads on a processor, whereby the plurality of threads includes a first thread and a second thread;  
 perform a prolonged instruction included in the second thread; and  
 branch to the first thread using a first return address that corresponds to the first thread in response to the detecting.  
   
   
   
       9 . The program product of  claim 8  wherein the computer program code is further effective to: 
 assign a plurality of registers included in the processor to the first thread and the second thread, wherein a first register from the plurality of registers for the first thread includes the first return address; and    in response to the branch, store a second return address in a second register from the plurality of registers that corresponds to the second thread.    
   
   
       10 . The program product of  claim 9  wherein the computer program code is further effective to: 
 retrieve the second return address; and    return to the second thread from the first thread at the second return address.    
   
   
       11 . The program product of  claim 9  wherein the computer program code is further effective to: 
 determine whether the prolonged instruction for the second thread is complete; and    branch back to the first thread in response to the determination.    
   
   
       12 . The program product of  claim 9  wherein the computer program code is further effective to: 
 store the first return address in the first register; and    branch to the second thread.    
   
   
       13 . The program product of  claim 8  wherein a branch instruction corresponding to the branch is selected from the group consisting of a branch indirect and set link instruction and a branch indirect and set link if external data instruction.  
   
   
       14 . The program product of  claim 8  wherein the prolonged instruction is a direct memory access instruction.  
   
   
       15 . An information handling system comprising: 
 a display;    one or more processors;    a local memory area;    a main memory area accessible by one or more of the processors; and    a thread control management tool for managing thread control, the thread control management tool comprising software code effective to: 
 load a plurality of threads on one of the processors, whereby the plurality of threads includes a first thread and a second thread;  
 perform a prolonged instruction included in the second thread; and  
 branch to the first thread using a first return address that corresponds to the first thread in response to the detecting.  
   
   
   
       16 . The information handling system of  claim 15  wherein the software code is further effective to: 
 assign a plurality of registers included in the processor to the first thread and the second thread, wherein a first register from the plurality of registers for the first thread includes the first return address; and    in response to the branching, store a second return address in a second register from the plurality of registers that corresponds to the second thread.    
   
   
       17 . The information handling system of  claim 16  wherein the software code is further effective to: 
 retrieve the second return address from the second register; and    return to the second thread from the first thread at the second return address.    
   
   
       18 . The information handling system of  claim 16  wherein the software code is further effective to: 
 determine whether the prolonged instruction for the second thread is complete; and    branch back to the first thread in response to the determination.    
   
   
       19 . The information handling system of  claim 16  wherein the software code is further effective to: 
 store the first return address in the first register; and    branch to the second thread.    
   
   
       20 . The information handling system of  claim 15  wherein a branch instruction corresponding to the branch is selected from the group consisting of a branch indirect and set link instruction and a branch indirect and set link if external data instruction.

Join the waitlist — get patent alerts

Track US2006080661A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.