Nazomi Communications, Inc. v. Nokia Corporation

739 F.3d 1339, 109 U.S.P.Q. 2d (BNA) 1258, 2014 WL 92223, 2014 U.S. App. LEXIS 491
CourtCourt of Appeals for the Federal Circuit
DecidedJanuary 10, 2014
Docket18-1012
StatusPublished
Cited by19 cases

This text of 739 F.3d 1339 (Nazomi Communications, Inc. v. Nokia Corporation) 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
Nazomi Communications, Inc. v. Nokia Corporation, 739 F.3d 1339, 109 U.S.P.Q. 2d (BNA) 1258, 2014 WL 92223, 2014 U.S. App. LEXIS 491 (Fed. Cir. 2014).

Opinions

Concurring opinion filed by Circuit Judge LOURIE.

DYK, Circuit Judge.

Plaintiff Nazomi Communications, Inc. (“Nazomi”) appeals from a decision of the United States District Court for the Northern District of California construing disputed claim language and granting summary judgment of non-infringement in favor of defendants Western Digital Corporation and Western Digital Technologies, Inc. (collectively, “Western”), and Sling Media, Inc. (“Sling”). We affirm.

Background

To function, a computing device requires both hardware and software. Processors are hardware components embedded in computing devices. The central processing unit (“CPU”) enables a computing device to carry out instructions contained in a computer program. Software refers to instructions that tell the device hardware what to do. The hardware then follows these instructions (“executes” the software).

For a software program to run on the CPU of a computing device, the program must be compiled or translated from a high-level programming language that is written in a human-readable syntax (“source code”), into a machine-readable form (“machine code”) that the processor can understand. Machine code is processor-specific. As a result, particular compilers can only translate programs into machine code for particular types of processors. For example, Intel-based processors use one set of native instructions, Macintosh PowerPC-based processors use a different set of native instructions, and ARM Limited processors use another still. Therefore, to run the same source code or software on a different system or platform, it must be recompiled for the new system.

Java is a high-level programming language that addresses this problem by allowing developers to write programs that can run on different processors without being recompiled for each new system. Instead, the Java language uses a single compiler that translates Java programs into “bytecodes” instead of processor-specific machine code. Java bytecodes do not run directly on the CPU, but on a Java Virtual Machine (“JVM”) which translates them into processor-specific machine code. Therefore, programs written in Java can run on any platform and any operating system, providing one of the principal advantages of Java programs — their “portability.”

Computing devices also vary in how they store data in memory, which affects the characteristics of the machine code. Processors using stack-based memory systems “store information on a last-in, first-out basis ..., analogous to a stack of papers in an inbox.” JA 2709. Therefore, “[t]o access a paper at the bottom of the stack, the reader must remove all of the papers above it.” JA 2709. In contrast, register-[1341]*1341based memory “stores and retrieves data according to the exact location of each data item, much like an arrangement of post office boxes.” JA 2709. As a result, processors that use different memory storage systems must also use different types of machine code or “instruction sets,” namely, “stack-based” instructions and “register-based” instructions. Although most modern processors use a register-based approach, Java bytecodes are stack-based instructions.

Therefore, a device using a register-based processor can run programs written in Java using a JVM that translates the stack-based Java bytecodes into register-based instructions. But executing Java bytecodes using a typical software-based JVM takes longer than executing programs that can run directly on the device’s hardware without translation. One solution to this problem is processing certain Java bytecodes in hardware where the appropriate software is present to “accelerate” the execution of Java programs. However, such hardware-based JVMs may be unable to process legacy applications that are not programmed in Java.

Nazomi’s two patents asserted here aim to address this issue. They describe a hardware-based JVM capable of processing stack-based instructions, that also retains the ability to run legacy (ie., register-based) applications without utilizing the JVM. At issue are four apparatus claims from two related patents, independent claims 48 and 74 of U.S. Patent No. 7,080,362 (“the '362 patent”) and independent claims 1 and 5 of U.S. Patent No. 7,225,436 (“the '436 patent”). Representative claim 48 of the '362 patent reads:

48. A central processing unit (CPU) capable of executing a plurality of instruction sets comprising:
an execution unit and associated register file, the execution unit to execute instructions of a plurality of instruction sets, including a stack-based and a register-based instruction set;
a mechanism to maintain at least some data for the plurality of instruction sets in the register file, including maintaining an operand stack for the stack-based instructions in the register file and an indication of a depth of the operand stack;
a stack control mechanism that includes at least one of an overflow and underflow mechanism, wherein at least some of the operands are moved between the register file and memory; and a mechanism to generate an exception in respect of selected stack-based instructions.

'362 patent col. 10 1. 57 to col. 111. 6.1

a decoding mechanism [for a plurality of instruction sets, including stack-based and register-based];
a register file [including an operand stack to store operands for the stack-based instruction set and data associated with the register for register-based instruction set];
at least one of an overflow and underflow mechanism to cause the operands to — be moved between the register file and memory; and
an execution unit that processes the output [of the decoding of the stack-based and register-based instruction sets],

'362 patent col. 12 11. 29-47.

1. A CPU for executing stack and register-based instructions, comprising; execute logic ... for executing the register-based instructions;
[1342]*1342a register file associated with the execute logic; and
a hardware accelerator to process stack-based instructions ..., wherein the hardware accelerator generates a new virtual machine program counter ..., computes the return virtual machine program counter and pushes the return virtual machine program counter.

'426 patent col. 14 11. 30-46.

5. A central processing unit (CPU) comprising: execute logic ...; a hardware accelerator ...; an operand stack ...; an overflow/underflow mechanism ...; a bytecode buffer that receives stack-based instructions ...; and an instruction decode unit ...; and a common program counter....

Defendants Western and Sling are consumer product manufacturers that incorporate various processors into their products. ARM Limited (“ARM”) develops processor designs, which it licenses to third party chip-makers such as Qualcomm and Texas Instruments to build physical processor chips. Although ARM does not make or sell processors, ARM has a suite of processor designs that are used in many computing devices. Chip-makers select a suitable ARM processor design depending on the particular purpose for which the processor will be used. The chips incorporating ARM’s designs are utilized by consumer product manufacturers such as Western and Sling.

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

Related

Golden v. Google LLC
Federal Circuit, 2025
Golden v. Google LLC
N.D. California, 2023
Invt Spe LLC v. Itc
Federal Circuit, 2022
Omega Patents, LLC v. Calamp Corp.
920 F.3d 1337 (Federal Circuit, 2019)
Dell Inc. v. Acceleron, LLC.
818 F.3d 1293 (Federal Circuit, 2016)
Radware, Ltd. v. F5 Networks, Inc.
147 F. Supp. 3d 974 (N.D. California, 2015)
Cameron Lanning Cormack v. United States
122 Fed. Cl. 691 (Federal Claims, 2015)
UCB, Inc. v. Yeda Research & Development Co.
117 F. Supp. 3d 755 (E.D. Virginia, 2015)
Yufa v. Tsi, Incorporated
600 F. App'x 747 (Federal Circuit, 2015)
Smartflash LLC v. Apple Inc.
77 F. Supp. 3d 535 (E.D. Texas, 2014)
Cardsoft, LLC v. Verifone, Inc.
769 F.3d 1114 (Federal Circuit, 2014)
Domtar, Inc. v. Niagara Fire Insurance Co.
563 N.W.2d 724 (Supreme Court of Minnesota, 1997)

Cite This Page — Counsel Stack

Bluebook (online)
739 F.3d 1339, 109 U.S.P.Q. 2d (BNA) 1258, 2014 WL 92223, 2014 U.S. App. LEXIS 491, Counsel Stack Legal Research, https://law.counselstack.com/opinion/nazomi-communications-inc-v-nokia-corporation-cafc-2014.