Improvements in or relating to program counters

Abstract: This invention relates to an improved program counter which is capable of both incrementing the program count as well as decrementing the program count. This functionality provides improved implementation of decisions trees in computer logic. The value of a bit is determined and compared to a predetermined constant. For each of, for example, three conditions a different decision is made. One of those decisions enables the program counter to continue on the current program list. A second decision moves the counter to a new list and causes decremental movement of the counter. The final decision enables movement to the same location as the second decision but causes incremental movement of the counter.

Description: This invention relates to an improved program counter for a computer or microprocessor. All microprocessors include a program counter which is designed to enable the microprocessor to read through the program code and execute the instructions contained therein. The program counter of a microprocessor is normally incremented every clock cycle assuming there are no other operations which might modify the effect of the program counter. Incrementing the program counter in this way leads to program execution proceeding from low memory address values to high values. Figure 1a shows a typical prior art system. At the end of a piece of code, indicated as 10, a test is performed the result of which decides where the PC should move to. For example, the test could be a comparison of two registers X and Y. Basic logic identifies whether X≤Y or whether X>Y. If X≤Y the PC moves to instructions A and these are carried out. If X>Y the PC moves to instructions B and these are carried out. Figure 1b shows the decision tree for this mode of operation. This type of operation is obviously somewhat restrictive. It is not possible to effect a decision which has more than two alternatives without having an extra decision making step. This will obviously cause a delay in the decision making processes. The publication c't Magazin für Computertechnik, vol. 4, April 1989, pages 38-39 discusses non-documented commands for processors of the 80x86 family. In particular the command JMPR SHORT (opcode Flh xx) is discussed, that command causing the program counter to operate in a decrement mode until it encounters another JMPR SHORT command whereupon it returns to its normal increment mode. DE-A-36 09 056 discloses a multi-digit counter circuit which performs both successive data production and non-successive data production. Successive data is produced by an increment or decrement operation according to a first carry (borrow) signal. Non-successive data is produced by a control circuit which applies a second carry (borrow) signal independently of the first carry (borrow) signal to an arbitrary selected digit or digits. The arbitrary digit is designated according to the distance between the preceding data and the following data to be produced. An address counter circuit is shown having a program counter and a carry (or borrow) control circuit. The content of the program counter is sequentially incremented (or decremented) by one in response to a clock or other predetermined timing signal. One object of the present invention is to provide an improved system where at least some of the above mentioned delays are minimised, thereby providing a faster processor. According to one aspect of the present invention there is provided a program counting system comprising, a program counter capable of either incrementing or decrementing its address value, characterized in that the program counting system further includes decision making means for making a decision between more than two possible decisions and effecting a decrementing program count when a predetermined one of said possible decisions is achieved. This system has the advantage that the microprocessor can make one decision step, which results in a greater option in possible instructions. This enables more complex decisions to be made whilst no increase in processing time is incurred. According to a second aspect of the present invention there is provided a method of operating a program counter comprising the steps of reading a predetermined variable in a program listing, characterized by making a decision, dependent on the value of the variable, between more than two possible decisions and effecting a decrementing program count when a predetermined one of said possible decisions is achieved. Reference will now be made, by way of example, to the accompanying drawings, in which: Figure 1a is a block diagram of a prior art system; Figure 1b is an assembly code decision table for the figure 1a system; Figure 2a is a block diagram of a system according to one aspect of the present invention; and Figure 2b is an assembly code decision table for the figure 2a system. The present invention provides a program counter shown generally as 20 in figure 2a. The program counter is capable of both incrementing and decrementing. This functionality allows the value of the program counter to be either increased or decreased depending on the processor state or a processor signal. This processor condition is determined by interpretation of a test in the list of code 24. The test may, for example be a comparison of an integer value N, with a predetermined constant M. If N=M instructions A are carried out, if N<M instructions B are carried out and if N>M instructions C are carried out. Instructions A cause the counter to continue down the first list of code. Instructions B cause the program counter to move to bit 26 in list of code 28 and read down the code as shown by arrow 30. Instructions C cause the counter to move to bit 26 and read up the code in the direction of arrow 32. To facilitate the counter being able to read up from bit 26 all the information in bits 34 to 36 are written in reverse order. In other words the higher addresses are in bit 34 and the lower addresses are in bit 36 and the program counter reads from high address values to lower address values. This is obviously the opposite direction to the direction a standard program counter will function. Operating the program counter in this manner allows the decision to be made between one of three options rather than one of two options, without incurring a further decision making step. In other words there is a reduction in the number of cycles used to perform a decision tree This provides an effective increase in the rate of operation of the counter when a decision step with greater than two options is made. Using the invention the first branch of the decision as illustrated in figure 2b is performed as normal. The test in code 24 is used to determine whether the value of N is greater than or equal to M. If this is the case the pointer is moved to bit 26. At bit 26, the destination of the branch, the program counter executes code in either the "up" or "down" direction depending on whether the value of N was greater than or equal to M. For example "up" if N>M and "down" if N<M. In order to read "up" the code it is necessary to reverse the code from the normal direction, as has been previously indicated. This can be accomplished by reversing the memory using for example the assembler or compiler. In the embodiment of the invention above described, there are many possible variations which could be used instead of the specifics already disclosed. For example, the decision making tool may not need to depend on the relative values of N and M. They may instead be designed to depend on another set of logic. Obviously the invention is not restricted to assembly code, but may also be applied to any computer program in which a counter or pointer is present. The above invention has been describe with reference to a microprocessor, however, it may be used on computers and microcomputers and any other type of processors.

Claims: A program counting system comprising, a program counter (20) capable of either incrementing or decrementing its address value, characterized in that the program counting system further includes decision making means for making a decision between more than two possible decisions and effecting a decrementing program count when a predetermined one of said possible decisions is achieved. The system of claim 1, wherein there are three possible decisions and the two possible decisions which are not the said predetermined one possible decision produce an incrementing program count. The system of claim 1 or claim 2, wherein said decision making means comprise identification means for identifying the state or value of variable N and comparison means for comparing the state or value of variable M. The system of claim 3, wherein if N=M one decision is made, if N<M the second decision is made and if N>M the third decision is made. The system of any of claims 1-4, wherein the program counter (20) moves to a new location in a program listing (28) in response to a decision. The system of claim 5, wherein if the decision produces a decrementing program count, the program listing (28) on which said decrementing count is effected is reversed. A system of claim 5, wherein the program listing (28) is reversed. A method of operating a program counter (20) comprising the steps of reading a predetermined variable in a program listing (28), characterized by making a decision, dependent on the value of the variable, between more than two possible decisions and effecting a decrementing program count when a predetermined one of said possible decisions is achieved. The method of claim 7, further comprising making a decision between three possible decisions and wherein a step of causing an incrementing program count comprises causing the program counter (20) to increment for the two possible decisions which are not the said predetermined one possible decision. The method of claim 7 or claim 8, wherein the decision making step comprises comparing the value of the variable with a predetermined constant and producing a different decision for each of a plurality of different conditions associated with the value of the variable and the constant.

Inventors: WILSON DAVID, WILSON, DAVID
Applicants: TEXAS INSTRUMENTS INC, TEXAS INSTRUMENTS LTD, TEXAS INSTRUMENTS INCORPORATED, TEXAS INSTRUMENTS LIMITED
Application year: 1994
Main classification: G06F9
IPC codes: G06F9