Microprocessor Enhancement Corp. v. Texas Instruments Inc.

520 F.3d 1367, 86 U.S.P.Q. 2d (BNA) 1225, 2008 U.S. App. LEXIS 6837, 2008 WL 850332
CourtCourt of Appeals for the Federal Circuit
DecidedApril 1, 2008
Docket2007-1249, 2007-1286
StatusPublished
Cited by103 cases

This text of 520 F.3d 1367 (Microprocessor Enhancement Corp. v. Texas Instruments Inc.) is published on Counsel Stack Legal Research, covering Court of Appeals for the Federal Circuit primary law. Counsel Stack provides free access to over 12 million legal documents including statutes, case law, regulations, and constitutions.

Bluebook
Microprocessor Enhancement Corp. v. Texas Instruments Inc., 520 F.3d 1367, 86 U.S.P.Q. 2d (BNA) 1225, 2008 U.S. App. LEXIS 6837, 2008 WL 850332 (Fed. Cir. 2008).

Opinion

GAJARSA, Circuit Judge.

This is a patent infringement case. Microprocessor Enhancement Corporation and Michael H. Branigin (collectively “MEC”) appeal the judgments of the United States District Court for the Central District of California, Docket Nos. 05-CV-00323 and 05-CV05667, wherein the district court found on summary judgment that Texas Instruments Incorporated (“TI”) and Intel Corporation (“Intel”) did not infringe any claim of U.S. Patent No. 5,471,593 (“the '593 patent”) owned by MEC and that all claims of the patent are invalid for indefiniteness. Because the district court erroneously concluded that the claims are indefinite, we reverse the court’s finding of invalidity. Because the district court correctly construed the term “pipeline stage,” we affirm the court’s judgment of noninfringement.

BACKGROUND

The '593 patent is directed to computer processor architecture and methods for increasing microprocessor efficiency. 1 A computer program is composed of thousands to millions of instructions, which are stored in a computer’s random access memory (“RAM”). Microprocessors implement programs by performing the operations specified by the instructions. To execute an instruction, a microprocessor must perform a series of tasks, and each task is completed on a fixed time interval defined by the system clock — a clock cycle. The tasks necessary to execute an instruction may be described generally as follows: (1) fetch — the processor gets the instruction from RAM; (2) decode — -the processor reads and interprets the instruction; (3) issue — the processor sends the instruction to the appropriate functional unit; (4) execute — the functional unit executes the operation specified by the instruction; and (5) write — the result of the instruction is written to memory. In a most basic architecture, the entire microprocessor can be devoted to the sequential performance of these steps, such that the results of a complete instruction can be written to memory at a rate of one instruction per five clock cycles.

Pipelined processors, however, operate like assembly lines, where the processor is subdivided into segments, each of which simultaneously completes its respective task on a different instruction. Encyclopedia of Computer Science and Engineering 1143 (Anthony Ralston ed., 2d ed.1983); David A. Patterson & John L. Hennessy, Computer Architecture a Quantitative Approach 251 (1990). A pipelined processor is thus analogous to an assembly line de *1370 signed to fetch a new instruction from memory before the previous instruction is completed and written to memory. For a linear set of instructions (i.e., a set of instructions that are neither branched nor conditional, discussed infra), a pipelined processor operates at maximum efficiency where one instruction is completed and one instruction is fetched on every clock cycle once the pipeline is full.

In order to operate in a useful fashion, programs often require the use of nonlinear instructions, i.e., instructions containing a branch or discontinuity in the instructional sequence, that result in “dependencies” among the individual instructions of an instruction set. Control dependencies occur, for example, when an instruction cannot be executed until the result of a prior conditional branch instruction is known. That is, a conditional instruction may specify that subsequent instructions are to be fetched and executed out of sequence, depending on whether a particular condition is satisfied. '593 patent col.2 11.30-35.

The '593 patent labels one prior art method of processing this type of dependency as “conditional issuance.” Id. at col.21 11.42-66. Conditional issuance modifies the architecture of a pipelined processor by including a new segment called the conditional execution decision logic (“CEDL”). When a conditional instruction is detected by the CEDL, the CEDL “locks” the issue segment to prevent the issuance of further instructions into the functional unit, until it can determine if the condition is satisfied. For every clock cycle during which the conditional instruction is held in the issue unit while the condition is determined, a “hole” is inserted into the pipeline at the unit immediately following the issue unit — i.e., one or more subsequent units of the pipeline will be nonoperational while waiting for the next issued instruction. If the condition is satisfied, the CEDL allows the conditional instruction depending on that condition to issue into the functional unit. If the condition is not satisfied, all conditional instructions depending on that condition and currently waiting in the pipeline are discarded, and subsequent instructions are fetched from memory. In the latter scenario, an additional number of holes equal to the number of discarded instructions are inserted into the pipeline.

The '593 patent describes and claims “conditional execution” as an improvement to conditional issuance. Id. at col.20 11.13—18. Rather than controlling the issuance of the conditional instruction to the functional unit, the '593 patent teaches that the CEDL should be moved into the functional unit to control whether the results of a conditional instruction that has been executed will be written to memory. Id. Accordingly, when the CEDL detects a conditional instruction, it locks the execute segment to prevent the results of an executed conditional instruction from being forwarded to the write unit until the CEDL determines whether the condition is satisfied. Id. at cols.21-22. In this fashion, conditional execution may insert fewer holes into the pipeline than conditional issuance while a condition code is being determined. Id. at col. 13ll.46-48.

Independent claim 1 is a method claim and states as follows:

1. A method of executing instructions in a pipelined processor comprising:
a conditional execution decision logic pipeline stage and at least one instruction execution pipeline stage prior to said conditional execution decision logic pipeline stage;
at least one condition code;
said instructions including branch instructions and non-branch instructions and each instruction including opcodes[ 2 ] *1371 specifying operations, operand specifiers specifying operands,[ 3 ] and conditional execution specifiers;
said pipelined processor further including at least one write pipeline stage for writing the result(s) of each instruction to specified destination(s);
at least one of the instructions including a means for specifying writing said condition code with a condition code result; the conditional execution decision logic pipeline stage performing a boolean algebraic evaluation of the condition code and said conditional execution specifier and producing an enable-write with at least two states, true and false; and
said enable-write when true enabling and when those [sic] disabling the writing of instruction results at said write pipeline stage;

Free access — add to your briefcase to read the full text and ask questions with AI

Related

Cite This Page — Counsel Stack

Bluebook (online)
520 F.3d 1367, 86 U.S.P.Q. 2d (BNA) 1225, 2008 U.S. App. LEXIS 6837, 2008 WL 850332, Counsel Stack Legal Research, https://law.counselstack.com/opinion/microprocessor-enhancement-corp-v-texas-instruments-inc-cafc-2008.