Back to results
US 10,705,844 B2Granted
Method and device for register management
AssigneeSamsung Electronics Co., Ltd.
InventorChoonki Jang
Life of this patent
Estimating the term…
Abstract
In a data processing method, a method and device for adjusting the number of registers used in a running thread according to a situation are disclosed.
Claims12
A method of processing data, the method comprising:
- executing a first code block, comprising one or more execution codes, using a first number of registers allocated to the first code block;
- acquiring a second number, wherein the second number is a number of registers for executing a second code block, comprising one or more execution codes, executed after the first code block, and allocating a number of registers used for executing the first code block to the second code block based on a difference between the first number and the second number;
- and
- executing the second code block using at least the registers used for executing the first code block that were allocated to the second code block,
- wherein the allocating of the number of the registers used for executing the first code block to the second code block comprises:
- updating a register occupancy table (ROT), wherein the ROT comprises information related to a number of registers corresponding to each of the first code block and the second code block;
- and
- updating a register hash (RH), wherein the RH comprises information related to a number of registers corresponding to the second code block,
- wherein,
- each of the first code block, the second code block and at least one third code block is included in one thread of threads managed by a warp, wherein a warp is an independent data processor,
- the ROT comprises information related to a maximum number of registers, which is a greatest number among numbers of registers for executing respective code blocks of the second code block and the at least one third code block of the one thread to be executed after the first code block, wherein at least one code block among the second code block and the at least one third code block is allocated the maximum number of registers and at least one other code block among the second code block and the at least one third code block is allocated less than the maximum number of registers, and
- the method further comprises using the information related to the maximum number of registers to adjust a register allocation point in time.
9 more elements
A device for processing data, the device comprising:
- a receiver configured to receive code blocks comprising one or more execution codes;
- and
- a controller configured to execute a first code block received from the receiver using a first number of registers allocated to the first code block, acquire a second number, wherein the second number is a number of registers for executing a second code executed after the first code block and received from the receiver, allocate a number of registers used for executing the first code block to the second code block based on a difference between the first number and the second number, and execute the second code block using at least the registers used for executing the first code block that were allocated to the second code block,
- wherein the controller updates a register occupancy table (ROT), the ROT comprising information related to a number of registers corresponding to each of the first and second code blocks,
- wherein the controller updates a register hash (RH), the RH comprising information related to a total number of registers corresponding to the second code block,
- wherein,
- each of the first code block, the second code block and at least one third code block is included in one thread of threads managed by a warp, wherein a warp is an independent data processor,
- the ROT comprises information related to a maximum number of registers, which is greatest number among numbers of registers for executing respective code blocks of the second code block and the at least one third code block of the one thread to be executed after the first code block, wherein at least one code block among the second code block and the at least one third code block is allocated the maximum number of registers and at least one other code block among the second code block and the at least one third code block is allocated less than the maximum number of registers, and
- the controller further uses the information related to the maximum number of registers to adjust a register allocation point in time.
6 more elements
A non-transitory computer-readable storage medium storing instructions for causing computing hardware to perform a method of processing data, wherein the method comprises:
- executing a first code block, comprising one or more execution codes, using a first number of registers allocated to the first code block;
- acquiring a second number, wherein the second number is a number of registers for executing a second code block, comprising one or more execution codes, executed after the first code block, and allocating a number of the registers used for executing the first code block to the second code block based on a difference between the first number and the second number;
- and
- executing the second code block using the registers allocated to the second code block,
- wherein the allocating of the number of the registers used for executing the first code block to the second code block comprises:
- updating a register occupancy table (ROT), wherein the ROT comprises information related to a number of registers corresponding to each of the first code block and the second code block;
- and
- updating a register hash (RH), wherein the RH comprises information related to information on a number of registers corresponding to the second code block,
- wherein,
- each of the first code block, the second code bloack and at least one third code block is included in one thread of threads managed by a warp, wherein in a warp is an independent data processor,
- the ROT comprises information related to a maximum number of registers, which is as greatest number among numbers of registers for executing respective code blocks of the second code block and the at least one third code block of the one thread to be executed after the first code block, wherein at least one code block among the second code block and the at least one third code block is allocated the maximum number of registers and at least one other code block among the second code block and the at least one third code block is allocated less than the maximum number of registers, and
- the method further comprises using the information related to the maximum number of registers to adjust a register allocation point in time.
9 more elements
Dependencies are inferred from the claim text.