# US 8,392,893 B2 · Emulation method and computer system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,392,893 B2
- Document ID: US8392893B2
- Status: Granted
- Kind: B2
- Application number: 11/798,223
- Filed: 2007-05-11
- Published: 2007-11-22
- Granted: 2013-03-05
- Earliest claimed: 2006-05-17
- Assignees: NEC Computertechno, Ltd.
- Applicants: Tsutomu Fujihara
- Inventors: Tsutomu Fujihara
- Web page: https://patentgrep.com/patent/US8392893B2

## CPC

- G06F 9/45504: {Abstract machines for program code execution, e.g. Java virtual machine [JVM], interpreters or emulators}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The computer system of the present invention emulates target instructions. The computer system includes a processing unit for branching to collective emulation coding for emulating plural of target instructions created beforehand collectively, thereby processing those instructions collectively according to the coding when those target instructions are combined so as to be processed collectively and a memory for storing the collective emulation coding.

## Claims

### Claim 1

An emulation method, comprising the steps of:
creating beforehand an individual emulation coding, a collective emulation coding, and an instruction combination history table for denoting a relationship between a combination of a plurality of target instructions processed collectively and information denoting a branch destination of said collective emulation coding;
fetching, via a programmed processor, from a memory and decoding a plurality of target instructions which are called as current instructions hereafter; and
prior to the fetching from a memory the next target instruction to said current instructions, determining via a programmed processor whether or not it is possible to execute collective emulation for said current instructions based on the combination of said current instructions, and upon said determination being affirmative, branching to coding which is created in a memory beforehand, thereby executing said collective processing emulation according to said coding.

### Claim 2 (depends on 1)

The emulation method according to claim 1, wherein the individual emulation coding is for emulating said plurality of target instructions individually, the collective emulation coding is for emulating said plurality of target instructions collectively, and the instruction combination history table denoting whether or not it is possible to execute said collective emulation processing for each combination of said target instructions,
and the method further comprises:
fetching and decoding said plurality of target instructions, then determining whether or not it is possible to execute said collective emulation for said plurality of target instructions by referring to said instruction combination table;
branching to said collective emulation coding when those instructions are combined so as to be processed collectively, then emulating those target instructions collectively according to said coding; and
And branching to said individual emulation coding when those instructions are not combined so as to be processed collectively, then emulating one target instruction according to said coding.

### Claim 3 (depends on 1)

The emulation method according to claim 1, further comprising:
reading said identifying information and branching to said collective emulation coding when it is determined by referring to said process branch table that said identifying information is registered in said table, then executing said collective emulation according to said coding; and
fetching and decoding one target instruction when said identifying information is not registered in said table, then branching to said individual emulation coding to process said one target instruction according to said coding.

### Claim 4 (depends on 3)

The emulation method according to claim 3, wherein said method further comprises executing simultaneously both of a processing for reading said identifying information, as well as a processing for fetching and decoding said one target instruction.

### Claim 5 (depends on 1)

The emulation method according to claim 1, further comprising:
fetching and decoding a plurality of target instructions and branching to said collective emulation coding when said combination of said plurality of target instructions processed collectively is registered in said instruction combination history table, then processing those instructions collectively according to said coding; and
branching to said individual emulation coding when said combination is not registered in said table, then emulating said one target instruction according to said coding.

### Claim 6 (depends on 5)

The emulation method according to claim 5, wherein the instruction combination history table further denotes whether or not it is possible to execute collective emulation for each combination of target instructions,
and the method further comprises:
determining whether or not it is possible to process said plurality of target instructions by referring to said instruction combination table when said combination is not registered in said table; and
branching to said collective emulation coding when said combination can be subjected to said collective emulation, then processing those instructions collectively according to said coding.

### Claim 7 (depends on 6)

The emulation method according to claim 6, wherein said method further comprises:
executing simultaneously both of a processing for fetching and decoding a plurality of target instructions to be executed next and a processing for determining whether or not it is possible to process said plurality of target instructions collectively by referring to said instruction combination history table when a combination of said decoded plurality of target instructions is not registered in said table while said plurality of target instructions are processed according to said collective emulation coding or said individual emulation coding.

### Claim 8 (depends on 7)

The emulation method according to claim 7, wherein said method uses different processors for executing the different steps of:
branching to said collective emulation coding or said individual emulation coding; and
fetching and decoding a plurality of target instructions to be executed next, then determining whether or not it is possible to process said plurality of target instructions collectively by referring to said instruction combination table when said combination of said decoded target instructions is not registered in said instruction combination history table.

### Claim 9 (depends on 7)

The emulation method according to claim 7, further comprising:
rewriting said plurality of target instructions to non-used instruction codes when a plurality of target instructions to be executed next can be processed collectively.

### Claim 10 (depends on 1)

The emulation method according to claim 1, wherein the instruction combination history table further denoting whether or not it is possible to execute collective emulation for each combination of target instructions, and
wherein a first target instructions are described in rows of said instruction combination table and said next target instructions of said current instructions are described in columns of said instruction combination history table.

### Claim 11

A computer system, comprising:
a processing unit configured to fetch from a memory and to decode a plurality of target instructions which are called as current instructions hereafter,
wherein, prior to a fetching from a memory the next target instruction to said current instructions, the processing unit determines whether or not it is possible to execute collective emulation for said current instructions based on the combination of said current instructions, and upon said determination being affirmative, branches to coding which are created in memory beforehand, then processes said instructions collectively according to said coding; and
a memory for storing said collective emulation coding, said memory storing an instruction combination history table for denoting said individual emulation coding, said collective emulation coding, and a relationship between each combination of a plurality of target instructions processed collectively and information denoting a branch destination to said collective emulation coding.

### Claim 12 (depends on 11)

The computer system according to claim 11,
wherein said memory further stores individual emulation coding for emulating target instructions created beforehand individually, collective emulation coding for emulating said plurality of target instructions collectively, and the instruction combination history table further denoting whether or not it is possible to execute said collective emulation for each combination of said target instructions, and
wherein said processing unit is configured to execute the processing for:
fetching and decoding a plurality of target instructions and determining whether or not it is possible process those instructions collectively by referring to said instruction combination table;
branching to said collective emulation coding when those target instructions are combined so as to be processed collectively, then processing those instructions collectively according to said coding; and
branching to said individual emulation coding when said instructions are not combined so as to be processed collectively, then processing one target instruction according to said coding.

### Claim 13 (depends on 11)

The computer system according to claim 11,
wherein said processing unit reads said identifying information and branches to said collective emulation coding when it is determined by referring to said process branch table that said identifying information is registered in said table, then branching to said collective emulation coding to process those instructions collectively according to said coding or fetches and decodes one target instruction when said identifying information is not stored in said table, then branching to said individual emulation coding to process said one target instruction according to said coding.

### Claim 14 (depends on 13)

The computer system according to claim 13,
wherein said processing unit executes both of a processing for reading said identifying information and a processing for fetching and decoding said one target instruction simultaneously.

### Claim 15 (depends on 11)

The computer system according to claim 11,
wherein said processing unit fetches and decodes a plurality of target instructions, then branches to said collective emulation coding when said combination of said plurality of target instructions is registered in said instruction combination history table, then processes those instructions collectively according to said coding, and
branches to said individual emulation coding when said combination is not registered in said table, then processes one target instruction according to said coding.

### Claim 16 (depends on 15)

The computer system according to claim 15,
wherein an the instruction combination history table further denoting whether or not it is possible to execute said collective emulation for each combination of said target instructions created beforehand, and
wherein said processing unit refers to said instruction combination table to determine whether or not it is possible to process said plurality of target instructions collectively when said combination of said plurality of decoded target instructions is not registered in said instruction combination history table; and branches to said collective emulation coding when those instructions are combined so as to be processed collectively, then processing those instructions collectively according to said coding.

### Claim 17 (depends on 16)

The computer system according to claim 16,
wherein said processing units executes simultaneously both of a processing for fetching and decoding a plurality of target instructions to be processed next and a processing for referring to said instruction combination table to determine whether or not it is possible to process those instructions collectively when said combination of said decoded target instructions is not registered in said table while said plurality of target instructions are processed according to said collective emulation coding or said individual emulation coding.

### Claim 18 (depends on 17)

The computer system according to claim 17,
wherein said processing unit further includes:
a first processor for executing a processing according to said collective emulation coding or said individual emulation coding; and
a second processor for fetching and decoding a plurality of target instructions to be processed next, then referring to said instruction combination table to determine whether or not it is possible to process said plurality of target instructions collectively when said combination of said plurality of decoded target instructions is not registered in said instruction combination history table.

### Claim 19 (depends on 17)

The computer system according to claim 17,
wherein said processing unit rewrites said plurality of target instructions to non-used instruction codes when said combination of said plurality of target instructions to be processed next can be subjected to said collective emulation.

### Claim 20 (depends on 11)

The computer system according to claim 11,
wherein the instruction combination history table further denoting whether or not it is possible to execute collective emulation for each combination of target instructions, and
wherein a first target instructions are described in rows of said instruction combination table and said next target instructions of said current instructions are described in columns of said instruction combination history table.

### Claim 21

A program stored on a computer memory configured to enable a computer to execute emulation, including the steps of:
creating beforehand an individual emulation coding, a collective emulation coding, and an instruction combination history table for denoting a relationship between a combination of a plurality of target instructions processed collectively and information denoting a branch destination of said collective emulation coding;
fetching from a memory and decode a plurality of target instructions which are called as current instructions hereafter,
prior to the fetching from the memory the next target instruction to said current instructions, determining whether or not it is possible to execute collective emulation for said current instructions based on the combination of said current instructions, and upon said determination being affirmative, branches to coding which are created in memory beforehand, then enables said computer to process those emulation instructions collectively according to said coding.

### Claim 22 (depends on 21)

The program stored on a computer memory according to claim 21,
wherein said program further enables said computer to execute the steps of:
fetching and decoding a plurality of target instructions, then referring to the instruction combination history table for denoting whether or not it is possible to execute collective emulation for each combination of said target instructions created beforehand to determine whether or not it is possible to process those instructions collectively;
branching to said collective emulation coding when said plurality of target instructions are combined so as to be processed collectively, then processing those instructions created beforehand collectively according to said coding; and
branching to said individual emulation coding for emulating one target instruction created beforehand when said target instructions are not combined so as to be processed collectively, then processing said one target instruction according to said coding.

### Claim 23 (depends on 21)

The program stored on a computer memory according to claim 21,
wherein said program further enables said computer to execute the steps of:
reading information for identifying said plurality of target instructions;
referring to the instruction combination history table for denoting a relationship between said identifying information and a branch destination of said collective emulation coding;
branching to said collective emulation coding when said read identifying information is registered in said process branch table, then processing those instructions collectively according to said coding; and
fetching and decoding one target instruction according to the instruction combination history table, then branching to said individual emulation coding to process said one target instruction individually.

### Claim 24 (depends on 23)

The program stored on a computer memory according to claim 23,
wherein said program further enables said computer to execute simultaneously both of a processing for reading said identifying information and a processing for fetching and decoding said one target instruction.

### Claim 25 (depends on 21)

The program stored on a computer memory according to claim 21,
wherein said program further enables said computer to execute the steps of:
fetching and decoding a plurality of target instructions;
referring to said instruction combination history table for denoting a relationship between a combination of a plurality of target instructions created beforehand and processed collectively and information for denoting a branch destination of said collective emulation coding;
branching to said collective emulation coding to process those instructions collectively when said combination of said plurality of decoded target instructions is registered in said instruction combination history table; and
branching to said individual emulation coding to process said one target instruction created beforehand when said combination is not registered in said table.

### Claim 26 (depends on 25)

The program stored on a computer memory according to claim 25,
wherein said program further enables said computer to execute the steps of:
referring to said instruction combination table to determine whether or not it is possible to process said plurality of target instructions collectively when said combination of said plurality of decoded target instructions is not registered in said instruction combination history table for denoting whether or not it is possible to execute said collective emulation for each target instruction combination; and
branching to said collective emulation coding to process said target instructions collectively when said combination can be subjected to said collective emulation.

### Claim 27 (depends on 26)

The program stored on a computer memory according to claim 26,
wherein said program enables said computer to execute simultaneously both of a processing for fetching and decoding a plurality of target instructions to be processed next and a processing for referring to said instruction combination table to determine whether or not it is possible to process said plurality of target instructions collectively when said combination of said decoded target instructions is not registered in said instruction combination history table while said plurality of target instructions are processed according to said collective emulation coding or said individual emulation coding.

### Claim 28 (depends on 27)

The program stored on a computer memory according to claim 27,
wherein said program enables said computer to rewrite said plurality of target instructions to non-used instruction codes when a plurality of target instructions to be processed next can be processed collectively.

### Claim 29 (depends on 21)

The program stored on a computer memory according to claim 21,
wherein the instruction combination history table further denoting whether or not it is possible to execute collective emulation for each combination of target instructions, and
wherein a first target instructions are described in rows of said instruction combination table and said next target instructions of said current instructions are described in columns of said instruction combination table.
