US5471597A
Expired / Lapsed
US
⏱️ 0.0 years remaining
System and method for executing branch instructions wherein branch target addresses are dynamically selectable under programmer control from writable branch address tables
Assignee: Unisys Corp
•
Filing: 1994-12-08
•
Granted: 1995-11-28
•
Expires: 2014-12-08
Abstract
Abstract A system and method for executing conditional branch instructions by a processor using dynamic branch address tables containing branch target addresses. The branch target addresses are selected by the result of a computation of fields in the branch instruction and an index generated during the execution of previous instructions. The relevant fields include the base address of a branch address table and a mask value. The contents, size, and location of the branch address tables in a random-access-memory local store may be changed during run-time by program control.
Inventors
- 👤 Larry L. Byers
- 👤 Joseba M. De Subijana
- 👤 Wayne A. Michaelson
Bibliographic Details
Application Number
—
Jurisdiction
US
Data Source
google_patents
Last Synchronized
2026-11-06 01:41
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/22; G06F9/26; G06F9/262; G06F9/30; G06F9/30003; G06F9/3005; G06F9/30058; G06F9/32; G06F9/322; G06F9/323
Claims Analysis
Total Claims: 4
Claim 1
Independent Claim
417 words
A microsequencer bus controller for executing branch program instructions fetched from a read-only-memory control store comprising: a random-access-memory local store, said random-access-memory local store including: one or more branch address tables, each of said branch address tables including a plurality of branch target addresses pointing to instructions in the read-only-memory control store, wherein the size, location, and contents of said branch address tables may be changed by the execution of instructions fetched from the read-only-memory control store; a base address table, wherein said base address table has one or more entries, each one of said entries corresponding to one of said branch address tables, each one of said entries containing a base address of one of said branch address tables; and a mask/merge table, wherein said mask/merge table has one or more mask/merge entries, each one of said mask/merge entries containing a plurality of mask/merge flags; instruction decode means, coupled to the read-only-memory control store, for determining if an instruction fetched from the read-only-memory control store is a branch program instruction, and for extracting parameters specified by said branch program instruction, said parameters including a base pointer addressing one of said entries in said base address table and a mask/merge pointer addressing one of said mask/merge entries in said mask/merge table; a base address register to store said base address fetched from said entry in said base address table addressed by said base pointer; a mask/merge register to store said mask/merge flags fetched from said mask/merge entry in said mask/merge table addressed by said mask/merge pointer; an index register for receiving an index resulting from the execution of the previous instruction; mask logic, coupled to said instruction decode means, said base address register, and said mask/merge register, for masking selected bit pairs of said base address register according to the even-numbered bits of said mask/merge register to produce an intermediate indicator; merge logic, coupled to said mask logic, said index register, and said mask/merge register, for merging selected bit pairs of said intermediate indicator with selected bits of said index register according to the odd-numbered bits of said mask/merge register to produce an indicator into said selected branch address table where a selected branch target address is stored; and branch control logic, coupled to said merge logic, and said instruction decode means, for conditionally selecting the instruction addressed by either a next sequential address or said selected branch target address pointed to by said indicator as a next instruction to be fetched from the read-only-memory control store.
Claim 2
Dependent Claim
417 words
A microsequencer bus controller for executing branch program instructions fetched from a read-only-memory control store comprising: a random-access-memory local store, said random-access-memory local store including: one or more branch address tables, each of said branch address tables including a plurality of branch target addresses pointing to instructions in the read-only-memory control store, wherein the size, location, and contents of said branch address tables may be changed by the execution of instructions fetched from the read-only-memory control store; a base address table, wherein said base address table has one or more entries, each one of said entries corresponding to one of said branch address tables, each one of said entries containing a base address of one of said branch address tables; and a mask/merge table, wherein said mask/merge table has one or more mask/merge entries, each one of said mask/merge entries containing a plurality of mask/merge flags; instruction decode means, coupled to the read-only-memory control store, for determining if an instruction fetched from the read-only-memory control store is a branch program instruction, and for extracting parameters specified by said branch program instruction, said parameters including a base pointer addressing one of said entries in said base address table and a mask/merge pointer addressing one of said mask/merge entries in said mask/merge table; a base address register to store said base address fetched from said entry in said base address table addressed by said base pointer; a mask/merge register to store said mask/merge flags fetched from said mask/merge entry in said mask/merge table addressed by said mask/merge pointer; an index register for receiving an index resulting from the execution of the previous instruction; mask logic, coupled to said instruction decode means, said base address register, and said mask/merge register, for masking selected bit pairs of said base address register according to the even-numbered bits of said mask/merge register to produce an intermediate indicator; merge logic, coupled to said mask logic, said index register, and said mask/merge register, for merging selected bit pairs of said intermediate indicator with selected bits of said index register according to the odd-numbered bits of said mask/merge register to produce an indicator into said selected branch address table where a selected branch target address is stored; and branch control logic, coupled to said merge logic, and said instruction decode means, for conditionally selecting the instruction addressed by either a next sequential address or said selected branch target address pointed to by said indicator as a next instruction to be fetched from the read-only-memory control store.
Claim 3
Independent Claim
408 words
A method of transferring program control in a processor by executing a conditional branch program instruction fetched from a read-only-memory control store addressed by a program counter, the conditional branch program instruction having fields for storing a base pointer and a mask/merge pointer, the processor having loaded a register with an index during execution of the immediately preceding program instruction, the processor including a base address table for storing base addresses, a base register for holding a selected base address, a mask/merge table for storing a plurality of mask/merge flags, a mask/merge register for holding a selected plurality of mask/merge flags, and a plurality of branch address tables for storing branch target addresses, the base address table, mask/merge table and branch address tables being able to be modified by the processor executing program instructions programmed by a computer programmer, comprising the steps of: (a) determining if an instruction fetched from the read-only-memory control store is a conditional branch program instruction; (b) evaluating a branch condition specified by the instruction, when the instruction is a conditional branch program instruction; (c) selecting whether or not a branch is to be taken depending on the branch condition evaluation; (d) incrementing the program counter to address a next sequential instruction when the branch is not to be taken; (e) performing the following steps when the branch is to be taken: (e1) extracting the base pointer and the mask/merge pointer from the conditional branch program instruction, the base pointer addressing an entry in the base address table, the mask/merge pointer addressing a mask/merge entry in the mask/merge table; (e2) loading the base register with a base address of a branch address table containing branch target addresses, said base address being fetched from said entry in the base address table addressed by said base pointer; (e3) loading the mask/merge register with a plurality of mask/merge flags, said mask/merge flags being fetched from said mask/merge entry in the mask/merge table addressed by the mask/merge pointer; (e4) masking selected bits of said base address according to the even-numbered bits of said mask/merge flags to produce an intermediate indicator; (e5) merging selected bits of said intermediate indicator with selected bits of the index according to the odd-numbered bits of said mask/merge flags to produce an address of a branch address entry into said branch address table; and (e6) loading the program counter with a branch target address from said branch address entry into said branch address table.
Claim 4
Independent Claim
408 words
A method of transferring program control in a processor by executing a conditional branch program instruction fetched from a read-only-memory control store addressed by a program counter, the conditional branch program instruction having fields for storing a base pointer and a mask/merge pointer, the processor having loaded a register with an index during execution of the immediately preceding program instruction, the processor including a base address table for storing base addresses, a base register for holding a selected base address, a mask/merge table for storing a plurality of mask/merge flags, a mask/merge register for holding a selected plurality of mask/merge flags, and a plurality of branch address tables for storing branch target addresses, the base address table, mask/merge table and branch address tables being able to be modified by the processor executing program instructions programmed by a computer programmer, comprising the steps of: (a) determining if an instruction fetched from the read-only-memory control store is a conditional branch program instruction; (b) evaluating a branch condition specified by the instruction, when the instruction is a conditional branch program instruction; (c) selecting whether or not a branch is to be taken depending on the branch condition evaluation; (d) incrementing the program counter to address a next sequential instruction when the branch is not to be taken; (e) performing the following steps when the branch is to be taken: (e1) extracting the base pointer and the mask/merge pointer from the conditional branch program instruction, the base pointer addressing an entry in the base address table, the mask/merge pointer addressing a mask/merge entry in the mask/merge table; (e2) loading the base register with a base address of a branch address table containing branch target addresses, said base address being fetched from said entry in the base address table addressed by said base pointer; (e3) loading the mask/merge register with a plurality of mask/merge flags, said mask/merge flags being fetched from said mask/merge entry in the mask/merge table addressed by the mask/merge pointer; (e4) masking selected bits of said base address according to the even-numbered bits of said mask/merge flags to produce an intermediate indicator; (e5) merging selected bits of said intermediate indicator with selected bits of the index according to the odd-numbered bits of said mask/merge flags to produce an address of a branch address entry into said branch address table; and (e6) loading the program counter with a branch target address from said branch address entry into said branch address table.
References Cited (Backward Citations)
US3634883A
Cited
US3786434A
Cited
US4156925A
Cited
US4124893A
Cited
US4240139A
Cited
US4394735A
Cited
US4635188A
Cited
US4868735A
Cited
US4691277A
Cited
US4754393A
Cited
US4984151A
Cited
US5210833A
Cited
US4907192A
Cited
US4864535A
Cited
US5235686A
Cited
US4831573A
Cited
US5032983A
Cited
US5197131A
Cited
US5203006A
Cited
US5144551A
Cited
US5197137A
Cited
US5230068A
Cited
US5297264A
Cited
USPTO Annuity & Maintenance Windows
| Annuity Stage | Window Opens | Payment Deadline | Surcharge Period Until | Estimated Fee | Status |
|---|---|---|---|---|---|
| 3.5 Years (Year 4) | 1998-11-27 | 1999-05-29 | 1999-11-28 | $2000.00 | Window Closed / Lapsed |
| 7.5 Years (Year 8) | 2002-11-27 | 2003-05-29 | 2003-11-28 | $3760.00 | Window Closed / Lapsed |
| 11.5 Years (Year 12) | 2006-11-27 | 2007-05-29 | 2007-11-28 | $7700.00 | Window Closed / Lapsed |