IP Library Patent Application 12546672
Patent Application
App. No. 12/546,672

DATA PROCESSOR AND DATA PROCESSING SYSTEM

Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US None
App. No.
12/546,672
Abstract

The present invention provides a data processor capable of automatically discriminating a loop program and performing a reduction in power by size-variable lock control on an instruction buffer. The instruction buffer of the data processor includes a buffer controller for controlling a memory unit that stores each fetched instruction therein. When an execution history of a fetched condition branch instruction suggests condition establishment, and in the case that the branch direction of the fetched condition branch instruction is a direction opposite to the order of an instruction execution and the difference of instruction addresses from the branch source to the branch target based on the condition branch instruction is a range held in the storage capacity of the instruction buffer, the buffer controller retains an instruction sequence from a branch source to a branch target based on the condition branch instruction in the instruction buffer. While the instruction execution of the instruction sequence retained therein is repeated, the buffer controller supplies the corresponding instruction of the instruction sequence from the instruction buffer to the instruction decoder and releases retention of the instruction sequence when the instruction execution is exited from the instruction sequence.

Claims (26)

1 . A data processor comprising:

an instruction fetch section for fetching an instruction;

an instruction decoder for decoding the instruction fetched by the instruction fetch section; and

an executor for executing the instruction, based on a result of decoding by the instruction decoder,

wherein the instruction fetch section comprises an instruction buffer and a branch prediction unit,

wherein the instruction buffer comprises a memory unit for storing each instruction fetched from outside and a buffer controller for controlling the memory unit, and

wherein when an execution history of a fetched condition branch instruction suggests condition establishment, and in the case that a branch direction of the fetched condition branch instruction corresponds to a direction opposite to the order of an instruction execution and a difference of instruction addresses from the branch source to the branch target based on the condition branch instruction is a range held in a storage capacity of the memory unit, the buffer controller retains, in the memory unit, an instruction sequence from a branch source to a branch target based on the condition branch instruction, supplies each instruction of the instruction sequence from the memory unit to the instruction decoder while an instruction execution of the instruction sequence retained therein is repeated, and releases retention of the instruction sequence when the instruction execution is exited from the instruction sequence.

2 . The data processor according to claim 1 , wherein the buffer controller performs control of a read pointer and a write pointer based on an FIFO (first-in first-out) form on the memory unit, specifies the instruction sequence retained in the memory unit by a lock start pointer and a lock end pointer, and changes the read pointer in a range designated by the lock start pointer and the lock end pointer while the instruction execution of the instruction sequence is repeated.

3 . The data processor according to claim 2 , wherein the buffer controller performs pointer control using a branch control table in which an instruction address for the condition branch instruction and in-buffer addresses of the memory unit holding the condition branch instruction and a branch target instruction based thereon respectively are registered.

4 . The data processor according to claim 3 , wherein when each of condition branch instructions is contained in the instruction fetched into the memory unit, the buffer controller registers information about the instruction sequence of the condition branch instructions in the branch control table.

5 . The data processor according to claim 1 , wherein the condition branch instruction is a PC relative condition branch instruction.

6 . The data processor according to claim 1 ,

wherein the instruction fetch section comprises a branch prediction unit for performing a branch prediction, based on the execution history of the condition branch instruction,

wherein the branch prediction unit performs a branch prediction, based on the instruction address for the condition branch instruction and outputs a result of the prediction therefrom, and

wherein the buffer controller determines based on the result of prediction whether the condition establishment of the condition branch instruction is suggested.

7 . The data processor according to claim 1 , wherein the buffer controller comprises a branch history counter for counting the number of repetitive executions of the instruction sequence from the branch source to the branch target based on the condition branch instruction with a branch direction being placed in a direction opposite to an instruction address layout, and determines that the formation of a short loop is suggested, by a counted value of the branch history counter exceeding a predetermined value.

8 . The data processor according to claim 2 ,

wherein the buffer controller comprises a branch counter indicative of a multiple number of loops each formed by the instruction sequence from the branch source to the branch target based on the condition branch instruction, and

wherein when the loop is a single loop, the buffer controller determines the values of the lock start pointer and the lock end pointer in association with a branch target address and a branch source address of the single loop, and when the loop is multiple loops, the buffer controller determines the values of the lock start pointer and the lock end pointer in association with a branch target and a branch source address of the largest loop.

9 . The data processor according to claim 8 , wherein the buffer controller acquires, every loop, first data corresponding to a difference in address of a read pointer relative to the branch source on the memory unit, second data corresponding to a difference in address of a branch target relative to a read pointer on the memory unit and third data corresponding to the sum of the first data and the second data, determined, by assuming the first and second data to be positive integer values respectively, whether the corresponding read pointer is within its own loop, discriminates comprehensive relationships of the branch sources in the multiple loops, based on the magnitude of the first data for said each loop, and discriminates a relationship between the magnitudes of the loops in the multiple loops, based on the magnitude of the third data for each loop.

10 . The data processor according to claim 1 , further comprising an instruction cache memory,

wherein the instruction fetch section fetches a necessary instruction from the instruction cache memory.

11 . A data processing system comprising:

a data processor according to claim 10 ; and

an external memory coupled to the data processor,

wherein the instruction cache memory holds some of instructions retained in the external memory to perform an associative memory operation.

Assignments (3)
CHANGE OF NAME Recorded Sep 10, 2010
From: NEC ELECTRONICS CORPORATION
To: RENESAS ELECTRONICS CORPORATION
Reel/Frame 024982/0123 →
MERGER - EFFECTIVE DATE 04/01/2010 Recorded Sep 10, 2010
From: RENESAS TECHNOLOGY CORP.
To: NEC ELECTRONICS CORPORATION
Reel/Frame 024982/0198 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 29, 2009
From: YAMADA, TETSUYA; KATO, NAOKI
To: RENESAS TECHNOLOGY CORP.
Reel/Frame 023440/0334 →