IP Library Granted Patent US 8,365,179
Granted Patent B2
US 8,365,179 · App. 12/585,879 · Granted Jan 29, 2013

Multi-thread processor and its hardware thread scheduling method

Inventors: Koji Adachi (Kanagawa, JP); Teppei Oomoto (Kanagawa, JP)
Assignee: Renesas Electronics Corporation
View Patent ↗
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 8,365,179
App. No.
12/585,879
Granted
Jan 29, 2013
Kind
B2
Abstract

A multi-thread processor in accordance with an exemplary aspect of the present invention includes a plurality of hardware threads each of which generates an independent instruction flow, a first thread scheduler that outputs a first thread selection signal designating a hardware thread to be executed in the next execution cycle, a first selector that outputs an instruction generated by the selected hardware thread according to the first thread selection signal, and an execution pipeline that executes an instruction output from the first selector, wherein whenever a hardware thread is executed in the execution pipeline, the first thread scheduler updates the priority rank of the executed hardware thread and outputs the first thread selection signal in accordance with the updated priority rank.

Claims (54)

1. A multi-thread processor comprising:

a plurality of hardware threads each of which generates an independent instruction flow;

a first thread scheduler that outputs a first thread selection signal, the first thread selection signal designating a hardware thread to be executed in a next execution cycle among the plurality of hardware threads according to a priority rank, the priority rank being established in advance for each of the plurality of hardware threads;

a first selector that selects one of the plurality of hardware threads according to the first thread selection signal and outputs an instruction generated by the selected hardware thread;

an execution pipeline that executes an instruction output from the first selector,

wherein whenever the hardware thread is executed in the execution pipeline, the first scheduler updates the priority rank for the executed hardware thread and outputs the first thread selection signal in accordance with the updated priority rank;

a second scheduler that specifies execution of at least one hardware thread selected in a fixed manner among the plurality of hardware threads in a predetermined first execution period, and outputs a second thread selection signal specifying execution of an arbitrary hardware thread in a second execution period other than the first execution period and a real-time bit signal indicating one of the first execution period and the second execution period; and

a second selector that receives the real-time bit signal, and when the real-time bit signal indicates the first execution period, provides the second thread selection signal to the first selector, and when the real-time bit signal indicates the second execution period, provides the first thread selection signal to the first selector.

2. A multi-thread processor comprising:

a plurality of hardware threads each of which generates an independent instruction flow;

a first thread scheduler that outputs a first thread selection signal, the first thread selection signal designating a hardware thread to be executed in a next execution cycle among the plurality of hardware threads according to a priority rank, the priority rank being established in advance for each of the plurality of hardware threads;

a first selector that selects one of the plurality of hardware threads according to the first thread selection signal and outputs an instruction generated by the selected hardware thread;

an execution pipeline that executes an instruction output from the first selector,

wherein whenever the hardware thread is executed in the execution pipeline, the first scheduler updates the priority rank for the executed hardware thread and outputs the first thread selection signal in accordance with the updated priority rank,

wherein the first thread scheduler comprises:

a plurality of dispatch counters each of which retains a dispatch count value corresponding to a priority rank for the corresponding hardware thread;

a priority rank decision unit that refers dispatch count values retained in the plurality of dispatch counters and determines the hardware thread having a highest priority rank; and

a thread number selection unit that outputs the first thread selection signal designating the hardware thread determined to have the highest priority rank in the priority rank decision unit,

wherein the plurality of dispatch counters receive a dispatch signal, and when the dispatch signal indicates a hardware thread corresponding to one of the dispatch counters, update the dispatch count value output from that dispatch counter, the dispatch signal being output whenever the hardware thread is executed in the execution pipeline and used to notify of the executed hardware thread, and

wherein each of the plurality of dispatch counters comprises:

a counter initialization value storage unit that stores a counter initialization value corresponding to a priority rank of the corresponding hardware thread;

a count value storage unit that stores the count initialization value as a initial value of a count value;

a decrementer that receives the dispatch signal and updates the count value stored in the count value storage unit; and

a third selector that receives a mask signal, selects one of the counter value and a mask value corresponding to the count value having a minimum priority rank according to the mask signal, and outputs the selected value as the dispatch count value, the mask signal being output from a pipeline control circuit for the hardware thread containing an instruction having a high dependency relation, the pipeline control circuit being configured to monitor a dependency relation between the instruction being executed in the execution pipeline and the instruction prepared in the plurality of hardware threads.

3. A multi-thread processor comprising:

a plurality of hardware threads each of which generates an independent instruction flow;

a first thread scheduler that outputs a first thread selection signal, the first thread selection signal designating a hardware thread to be executed in a next execution cycle among the plurality of hardware threads according to a priority rank, the priority rank being established in advance for each of the plurality of hardware threads;

a first selector that selects one of the plurality of hardware threads according to the first thread selection signal and outputs an instruction generated by the selected hardware thread;

an execution pipeline that executes an instruction output from the first selector,

wherein whenever the hardware thread is executed in the execution pipeline, the first scheduler updates the priority rank for the executed hardware thread and outputs the first thread selection signal in accordance with the updated priority rank; and

a second thread scheduler that specifies execution of at least one hardware thread selected in a fixed manner among the plurality of hardware threads in a predetermined first execution period, and outputs a second thread selection signal specifying execution of an arbitrary hardware thread in a second execution period other than the first execution period and a real-time bit signal indicating one of the first execution period and the second execution period, to provide between the first thread selection signal and the second thread selection signal to the first selector according to the real-time bit signal.

4. A multi-thread processor comprising:

a plurality of hardware threads each of which generates an independent instruction flow;

a first thread scheduler that outputs a first thread selection signal, the first thread selection signal designating a hardware thread to be executed in a next execution cycle among the plurality of hardware threads according to a priority rank, the priority rank being established in advance for each of the plurality of hardware threads;

a first selector that selects one of the plurality of hardware threads according to the first thread selection signal and outputs an instruction generated by the selected hardware thread; and

an execution pipeline that executes an instruction output from the first selector,

wherein whenever the hardware thread is executed in the execution pipeline, the first scheduler updates the priority rank for the executed hardware thread and outputs the first thread selection signal in accordance with the updated priority rank,

wherein the first thread scheduler comprises a plurality of dispatch counters each of which retains a dispatch count value corresponding to a priority rank for the corresponding hardware thread, and

wherein each of the plurality of dispatch counters comprises:

a counter initialization value storage unit that stores a counter initialization value corresponding to a priority rank of the corresponding hardware thread;

a count value storage unit that stores the count initialization value as an initial value of a count value;

a decrementer that receives a dispatch signal and updates the count value stored in the count value storage unit; and

a third selector that receives a mask signal, selects one of a counter value and a mask value corresponding to the count value having a minimum priority rank according to the mask signal, and outputs the selected value as the dispatch count value, the mask signal being output from a pipeline control circuit for the hardware thread containing an instruction having a high dependency relation, the pipeline control circuit being configured to monitor a dependency relation between the instruction being executed in the execution pipeline and the instruction prepared in the plurality of hardware threads.

5. A hardware thread scheduling method in a multi-thread processor, the multi-thread processor comprising a plurality of hardware threads and being configured to execute an instruction flow generated by the hardware thread while switching the hardware thread in accordance with a predefined schedule, the hardware thread scheduling method comprising:

selecting a hardware thread having a highest priority rank among the plurality of hardware threads;

executing an instruction generated by the selected hardware thread;

updating the priority rank of the hardware thread that generated the executed instruction; and

selecting the hardware thread having a highest priority rank among the updated priority ranks as the hardware thread that generates an instruction next;

retaining a dispatch count value corresponding to a priority rank for the corresponding hardware thread;

storing a counter initialization value corresponding to a priority rank of the corresponding hardware thread;

storing the count initialization value as an initial value of a count value;

receiving a dispatch signal and updating the count value stored;

receiving a mask signal to select one of a counter value and a mask value corresponding to the count value having a minimum priority rank according to the mask signal; and

outputting the selected value as the dispatch count value, the mask signal being output from a pipeline control circuit for the hardware thread containing an instruction having a high dependency relation, the pipeline control circuit being configured to monitor a dependency relation between the instruction being executed in the execution pipeline and the instruction prepared in the plurality of hardware threads.

Assignments (3)
CHANGE OF ADDRESS Recorded Nov 29, 2017
From: RENESAS ELECTRONICS CORPORATION
To: RENESAS ELECTRONICS CORPORATION
Reel/Frame 044928/0001 →
CHANGE OF NAME Recorded Oct 26, 2010
From: NEC ELECTRONICS CORPORATION
To: RENESAS ELECTRONICS CORPORATION
Reel/Frame 025193/0147 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2009
From: ADACHI, KOJI; OOMOTO, TEPPEI
To: NEC ELECTRONICS CORPORATION
Reel/Frame 023335/0717 →
Priority Claims (1)
JP 2008-252234 · Sep 30, 2008 · national
Continuity (1)
Related Publication 20100083267A1 · Apr 1, 2010