Multi-threaded processor architecture
AssigneeFreescale Semiconductor, Inc.
InventorMichael Andrew Fischer
Life of this patent
Estimating the term…
Abstract
A multi-threaded processor that is capable of responding to, and processing, multiple low-latency-tolerant events concurrently and while using relatively slow, low-power memories is disclosed. The illustrative embodiment comprises a multi-threaded processor, which itself comprises a context controller and a plurality of hardware contexts. Each hardware context is capable of storing the current state of one thread in a form that enables the processor to quickly switch to or from the execution of that thread. To enable the processor to be capable of responding to low-latency-tolerant events quickly, each thread—and, therefore, each hardware context is prioritized—depending on the latency tolerance of the thread responding to the event.
Claims17
An apparatus, comprising:
- (a) H hardware contexts, each of which is capable of storing the execution state of one thread in a multi-threaded processor;
- (b) a context controller for:
- (i) activating each of A hardware contexts, wherein each of said A active hardware contexts has a priority,
- (ii) maintaining the E highest priority of said A active hardware contexts as executing hardware contexts, wherein E equals the lesser of A and C, and wherein C equals the maximum number of concurrently executing hardware contexts in said multi-threaded processor,
- (iii) initiating a context switch in said multi-threaded processor among said E executing hardware contexts on a time-sequenced basis, and
- (iv) maintaining a table for each of said H hardware contexts that indicates whether each said hardware context is vacant or populated, active or inactive, and executing or not executing;
- wherein C and H are positive integers and 2<C<H;
- and
- wherein A and E are non-negative integers and E≦A≦H;
- and
- (c) a memory configured as C memory banks, wherein the access time of said memory is less than or equal to the time required by said multi-threaded processor to execute C instructions, and the instructions and data for each thread are stored in a different one of the C memory banks so that there is no contention between threads for data in the same bank.
An apparatus, comprising:
- H hardware contexts, each of which is capable of storing the execution state of one thread in a multi-threaded processor;
- a context controller for switching the context in said multi-threaded processor among the E highest priority of A active hardware contexts after each instruction, wherein E equals the lesser of A and C, and wherein C equals the maximum number of concurrently executing hardware contexts in said multi-threaded processor, wherein the context controller maintains a table for each of said H hardware contexts that indicates whether each said H hardware context is vacant or populated, active or inactive, and executing or not executing;
- and
- a memory configured as C memory banks, wherein the access time of said memory is less than or equal to the time required by said multi-threaded processor to execute C instructions, and the instructions and data for each thread are stored in a different one of the C memory banks so that there is no contention between threads for data in the same bank;
- wherein C and H are positive integers and 2<C<H;
- and
- wherein A and E are non-negative integers and E≦A≦H.
An apparatus, comprising:
- H hardware contexts, each of which is capable of storing the execution state of one thread in a multi-threaded processor;
- a context controller for switching the context in said multi-threaded processor among the E executing hardware contexts a time-sequenced basis, wherein the context controller maintains a table for each of said H hardware contexts that indicates whether each said H hardware context is vacant or populated, active or inactive, and executing or not executing;
- and
- a memory configured as C memory banks, wherein the access time of said memory is less than or equal to the time required by said multi-threaded processor to execute C instructions, and the instructions and data for each thread are stored in a different one of the C memory banks so that there is no contention between threads for data in the same bank;
- wherein each of said E executing hardware contexts receives 1/Cth of the processing capability of said multi-threaded processor;
- wherein (C−E)/C of the processing capability of said multi-threaded processor is not used by any of said E executing hardware contexts;
- wherein E equals the lesser of A and C, and wherein C equals the maximum number of concurrently executing hardware contexts in said multi-threaded processor;
- and
- wherein E is a non-negative integer, C and H are positive integers, and 2≦E<C<H.
Dependencies are inferred from the claim text.