IPC분류정보
국가/구분 |
United States(US) Patent
등록
|
국제특허분류(IPC7판) |
|
출원번호 |
US-0717042
(2010-03-03)
|
등록번호 |
US-8555267
(2013-10-08)
|
발명자
/ 주소 |
|
출원인 / 주소 |
|
대리인 / 주소 |
|
인용정보 |
피인용 횟수 :
2 인용 특허 :
17 |
초록
▼
A mechanism for performing register allocation based on priority spills and assignments is disclosed. A method of embodiments of the invention includes repetitively detecting fat points during a compilation process of a software program running on a virtual machine of a computer system, each fat poi
A mechanism for performing register allocation based on priority spills and assignments is disclosed. A method of embodiments of the invention includes repetitively detecting fat points during a compilation process of a software program running on a virtual machine of a computer system, each fat point representing a program point having a high register pressure, the high register pressure occurs when a number of live program variables of the software program living at a given program point of the software program is greater than a number of available processor registers of the computer system. The method further includes choosing a fat point with a highest register pressure, selecting a live program variable having a lowest priority at the chosen fat point, and spilling the lowest priority live program variable to memory of the computer system.
대표청구항
▼
1. A computer-implemented method comprising: detecting fat points during a compilation process of a software program running on a virtual machine of a computer system, each detected fat point representing a program point having a high register pressure, the high register pressure to occur when a num
1. A computer-implemented method comprising: detecting fat points during a compilation process of a software program running on a virtual machine of a computer system, each detected fat point representing a program point having a high register pressure, the high register pressure to occur when a number of live program variables of the software program existing at a given program point of the software program is greater than a number of available processor registers of the computer system, wherein a live program variable comprises a program variable that maintains a value that can be used at least one of currently or later during compilation;choosing the fat point with a highest register pressure;within the chosen fat point, selecting the live program variable having a lowest priority, wherein the lowest priority is determined in view of a live program variable cost comprising a difference between a cost of assigning the live programing variable to a processor register and a cost of sending the live program variable to memory of the computer system and in view of a sum of live program variable costs of each of other live program variables at the chosen fat point; andsending the lowest priority live program variable to the memory of the computer system. 2. The computer-implemented method of claim 1, further comprising: selecting the live program variable having a highest priority at the chosen fat point; andassigning the selected live program variable having the highest priority to one of the available processor registers. 3. The computer-implemented method of claim 2, wherein the highest priority comprises a highest assign priority or a lowest spill priority. 4. The computer-implemented method of claim 1, further comprising unspilling already-spilled live program variables from the memory when no fat points are detected in the compilation process. 5. The computer-implemented method of claim 4, further comprising removing the unspilled live program variables from the memory, and assigning unspilled live program variables to available processor registers. 6. The computer-implemented method of claim 5, wherein removing and assigning are performed according to an assign priority associated with each unspilled live program variable. 7. The computer-implemented method of claim 1, wherein the lowest priority comprises a lowest assign priority or a highest spill priority. 8. A system comprising: a processor communicably coupled to a memory; anda virtual machine being executed by the processor from the memory, the virtual machine to run a software program, the virtual machine comprising a register allocation component to: detect fat points during a compilation process of the software program, each detected fat point representing a program point having a high register pressure, the high register pressure to occur when a number of live program variables of the software program existing at a given program point of the software program is greater than a number of available processor registers of the computer system, wherein a live program variable comprises a program variable that maintains a value that can be used at least one of currently or later during compilation;choose the fat point with a highest register pressure;within the chosen fat point, select the live program variable having a lowest priority, wherein the lowest priority is determined in view of a live program variable cost comprising a difference between a cost of assigning the live programing variable to a processor register and a cost of sending the live program variable to memory of the computer system and in view of a sum of live program variable costs of each of other live program variables at the chosen fat point; andsend the lowest priority live program variable to the memory. 9. The system of claim 8, wherein the register allocation component is further to: select the live program variable having a highest priority at the chosen fat point; andassign the selected live program variable having the highest priority to one of the available processor registers. 10. The system of claim 8, wherein the highest priority comprises a highest assign priority or a lowest spill priority. 11. The system of claim 8, wherein the virtual machine further having a compiler to execute the compilation process of the software program, the compiler comprising the register allocation component. 12. The system of claim 8, wherein the register allocation component is further to unspill already-spilled live program variables from the memory when no fat points are detected in the compilation process. 13. The system of claim 12, wherein the register allocation component is further to remove the unspilled live program variables from the memory, and assign unspilled live program variables to available processor registers. 14. The system of claim 13, wherein the removing and assigning are performed according to an assign priority associated with each unspilled live program variable. 15. A non-transitory machine-readable storage medium having instructions that, when executed by a processing device, cause the processing device to perform operations comprising: detecting fat points during a compilation process of a software program running on a virtual machine (VM) of a computer system comprising the processing device, each detected fat point representing a program point having a high register pressure, the high register pressure to occur when a number of live program variables of the software program existing at a given program point of the software program is greater than a number of available processor registers of the computer system, wherein a live program variable comprises a program variable that maintains a value that can be used at least one of currently or later during compilation;choosing the fat point with a highest register pressure;within the chosen fat point, selecting the live program variable having a lowest priority, wherein the lowest priority in view of a live program variable cost comprising a difference between a cost of assigning the live programing variable to a processor register and a cost of sending the live program variable to memory of the computer system and in view of a sum of live program variable costs of each of other live program variables at the chosen fat point; andsending the lowest priority live program variable to the memory of the computer system. 16. The non-transitory machine-readable storage medium of claim 15, having further instructions that, when executed, cause the processing device to perform further operations comprising: selecting the live program variable having a highest priority at the chosen fat point; andassigning the selected live program variable having the highest priority to one of the available processor registers. 17. The non-transitory machine-readable storage medium of claim 15, wherein the highest priority comprises a highest assign priority or a lowest spill priority. 18. The non-transitory machine-readable storage medium of claim 15, having further instructions that, when executed, cause the processing device to perform further operations comprising: unspill already-spilled live program variables from the memory according if no fat points are detected in the compilation process;remove the unspilled live program variables from the memory; andassign the unspilled live program variables to available processor registers. 19. The non-transitory machine-readable storage medium of claim 15, wherein the lowest priority comprises a lowest assign priority or a highest spill priority. 20. The non-transitory machine-readable storage medium of claim 18, wherein the removing and assigning are performed according to an assign priority associated with each unspilled active live program variable.
※ AI-Helper는 부적절한 답변을 할 수 있습니다.