# US 8,151,167 B2 · Program processing device and program processing method

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

- Number: US 8,151,167 B2
- Document ID: US8151167B2
- Status: Granted
- Kind: B2
- Application number: 12/362,990
- Filed: 2009-01-30
- Published: 2009-08-06
- Granted: 2012-04-03
- Earliest claimed: 2008-02-01
- Assignees: Toshiba Storage Device Corporation
- Inventors: Keiichi Yorimitsu
- Web page: https://patentgrep.com/patent/US8151167B2

## CPC

- G06F 11/141: {for bus or memory accesses}
- G11B 20/1833: {by adding special lists or symbols to the coded information (G11B20/1806, G11B20/1866 take precedence)}
- G11B 20/1883: {Methods for assignment of alternate areas for defective areas}
- G11B 2020/1843: {using a cyclic redundancy check [CRC]}
- G11B 2220/20: Disc-shaped record carriers
- G11B 2220/2516: Hard disks
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G11B: INFORMATION STORAGE BASED ON RELATIVE MOVEMENT BETWEEN RECORD CARRIER AND TRANSDUCER (recording measured values in a way that does not require playback through a transducer G01D9/00; recording or playback apparatus using mechanically marked tape, e.g. punched paper tape, or using unit records, e.g. punched or magnetically marked cards G06K; transferring data from one type of record carrier to another G06K1/18; circuits for coupling output of reproducer to radio receiver H04B1/20; gramophone pick-ups or like acoustic electromechanical transducers or circuits therefor H04R)

## Abstract

A program processing device has a non-volatile storage, a volatile storage and a controller. The controller has a detector that detects a bit flip in the program, the variable data, and the constant data in the volatile storage, a constant recovery unit that, when the detector detects an error in the constant data, writes the constant data in the non-volatile storage into the volatile storage, and then continues the execution of the program from a point at which the program was being executed before the detector detected the error, and a restart that, when the detector detects an error in one of the variable data and the program, writes the program, the initial value of the variable data, and the constant data in the non-volatile storage into the volatile storage, and then executes the program written into the volatile storage from a beginning of the program.

## Claims

### Claim 1

A program processing device comprising:
a non-volatile storage that stores a program, variable data whose value changes in accordance with execution of the program, and constant data whose value is constant regardless of the execution of the program;
a volatile storage; and
a controller that reads the program, the initial value of the variable data, and the constant data stored in the non-volatile storage, writes the read program, initial value of the variable data, and constant data into the volatile storage, and then executes the program written into the volatile storage,
wherein the controller includes
a detector configured to detect a bit flip in the program, the variable data, and the constant data stored in the volatile storage,
a constant recovery unit configured to, when the detector detects an error in the constant data, read the constant data from the non-volatile storage, write the read constant data into the volatile storage, and then continue the execution of the program from a point at which the program was being executed before the detector detected the error, and
a restart unit configured to, when the detector detects an error in one of the variable data and the program, read the program, the initial value of the variable data, and the constant data from the non-volatile storage, write the read program, initial value of the variable data, and constant data into the volatile storage, and then execute the program written into the volatile storage from a beginning of the program.

### Claim 2 (depends on 1)

The program processing device according to claim 1, wherein the controller includes a request processing unit configured to perform a process and a response in accordance with a processing request sent from outside, and
wherein the detector is configured to detect an error after the request processing unit has completely performed a process and a response.

### Claim 3 (depends on 1)

The program processing device according to claim 1, wherein the detector is configured to detect an error by calculating a checksum from each of the program, the variable data, and the constant data stored in the volatile storage.

### Claim 4 (depends on 1)

The program processing device according to claim 1, wherein the volatile storage is configured to store a parity code along with each of the program, the variable data, and the constant data, and
wherein the detector is configured to detect an error by checking states of the parity codes read along with the program, the variable data, and the constant data from the volatile storage.

### Claim 5 (depends on 1)

The program processing device according to claim 1, wherein the detector is configured to store a record of a detected error in the non-volatile storage.

### Claim 6 (depends on 1)

The program processing device according to claim 1, further comprising a watchdog timer configured to generate an initialization request interrupt each time a predetermined period of time has elapsed,
wherein the restart unit is configured to further cause the controller to execute the program written into the volatile storage from the beginning when the watchdog timer generates an initialization request interrupt, and
wherein the controller is configured to, when the program written into the volatile storage is being executed, reset the watchdog timer before the predetermined period of time in the watchdog timer has elapsed.

### Claim 7 (depends on 1)

The program processing device according to claim 1, further comprising:
an information recording medium on which information is recorded; and
an information recording unit configured to record information on the information recording medium,
wherein the controller is configured to control the information recording unit to record information on the information recording medium.

### Claim 8

A program processing method comprising:
writing a program, an initial value of variable data whose value changes in accordance with execution of the program, and constant data whose value is constant regardless of the execution of the program into a volatile storage,
detecting a bit flip in the program, the variable data, and the constant data stored in the volatile storage;
reading the constant data from the non-volatile storage when an error is detected in the constant data;
writing the read constant data into the volatile storage;
continuing the execution of the program from a point at which the program was being executed before the error was detected by a detector;
reading the program, the initial value of the variable data, and the constant data from the non-volatile storage when an error is detected in one of the variable data and the program;
writing the read program, initial value of the variable data, and constant data into the volatile storage; and
executing the program written into the volatile storage from a beginning of the program.

### Claim 9 (depends on 8)

The program processing method according to claim 8, further comprising detecting an error after a response to a processing request sent from outside has been completed.

### Claim 10 (depends on 8)

The program processing method according to claim 8, further comprising detecting an error by calculating a checksum from each of the program, the variable data, and the constant data stored in the volatile storage.

### Claim 11 (depends on 8)

The program processing method according to claim 8, further comprising:
storing a parity code in the volatile storage along with each of the program, the variable data, and the constant data, and
detecting an error by checking states of the parity codes read along with the program, the variable data, and the constant data from the volatile storage.

### Claim 12 (depends on 8)

The program processing method according to claim 8, further comprising storing a record of a detected error in the non-volatile storage.

### Claim 13 (depends on 8)

The program processing method according to claim 8, further comprising generating an initialization request interrupt each time a predetermined period of time has elapsed, and
executing the program written into the volatile storage from the beginning when the initialization request interrupt is generated.

### Claim 14 (depends on 13)

The program processing method according to claim 13, further comprising resetting time counting before the predetermined period of time has elapsed when the program written into the volatile storage is being executed.

### Claim 15

A program processing controller comprising:
a detector detecting a bit flip in a program, a variable data whose value changes in accordance with execution of the program, and a constant data whose value is constant regardless of the execution of the program,
a constant recovery unit, when the detector detects an error in the constant data, reading the constant data from a non-volatile storage, writing the read constant data into a volatile storage, and then continuing the execution of the program from a point at which the program was being executed before the detector detected the error, and
a restart unit, when the detector detects an error in one of the variable data and the program, reading the program, the initial value of the variable data, and the constant data from the non-volatile storage, writing the read program, initial value of the variable data, and constant data into the volatile storage, and then executing the program written into the volatile storage from a beginning of the program.
