Browse Prior Art Database

Live/ Dead Tags on Computer Registers

IP.com Disclosure Number: IPCOM000050040D
Original Publication Date: 1982-Aug-01
Included in the Prior Art Database: 2005-Feb-09
Document File: 3 page(s) / 18K

Publishing Venue

IBM

Related People

Schlaeppi, HP: AUTHOR [+2]

Abstract

A computer hardware/software technique is described herein that may be used to increase the throughput of a processor, to detect certain program logic errors, and to improve main storage utilization.

This text was extracted from a PDF file.
This is the abbreviated version, containing approximately 32% of the total text.

Page 1 of 3

Live/ Dead Tags on Computer Registers

A computer hardware/software technique is described herein that may be used to increase the throughput of a processor, to detect certain program logic errors, and to improve main storage utilization.

The registers discussed subsequently are the primary computational registers of the processor, such as the accumulator, the general registers, the index registers, and the floating point registers.

The technique is to associate a tag bit with each register to which it is desired to apply this invention. The value of the tag bit is zero or one at each point in time, to denote whether the associated register is "live" or dead". By "dead" at a particular point in time, we mean that as execution of the program continues from that point, the next thing that will happen to the register is a "load" of the entire register. By "live" at a particular point in time, it is meant that the next thing that will happen to the register is a use of the contents of the register or some portion of the register, or that it is unknown what will happen to the register next.

When a register is "dead", its contents are not significant. When it is "live", its contents are significant, or may be, depending on program flow.

A processor that employs these tag bits will require some means of setting and making use of them. A convenient way to set them to the "live" state is to have this done (unconditionally) by those instructions that initialize a register or a portion of a register, for example, "load", "insert character", and "clear register". The tag bits could be set to the "dead" state either by a special instruction for this purpose, or by an additional bit associated with each register field of those instructions that "use" (but do not set) the registers.

The special instructions or additional bits in the register fields of instructions would be supplied by the programmer or compiler that prepares the computer program, to indicate the "last use" of each register. In other words, the program provides the processor with explicit indications of those points at which the contents of a register are no longer significant. If a compiler provides the "last use" indications, it would do so by means of "live/dead" analysis of the program, which is a well-known compiler optimization technique [*]. Four uses for the tag bits will now be described.

Application 1: Lookahead Architecture: Consider a processor that is capable of executing instructions out of sequence to gain speed, by means of "looking ahead" in the instruction stream, and executing instructions ahead of time if logically permissible (i.e., if the operands are available and the registers that the instruction modifies are not currently in use). Suppose the processor handles conditional branch instructions by somehow predicting whether they will fall through or branch, and suppose it pre-executes the instructions on the predicted path as far as speed and logical constra...