Microprocessor systems
First Claim
1. A method of operating a microprocessor system that includes a plurality of functional units arranged in a pipelined fashion and in which at least one stage in the pipeline can process a thread for execution at the same time as other stages in the pipeline are processing other threads for execution, one or more of the functional units each including or having associated with it a cache memory for data to be used by the functional unit when processing a thread, the method comprising:
- detecting whether the system is in a livelock state; and
if a livelock state is detected, preventing one or more of the threads in the pipeline from being able to change the contents of one or more of the caches.
1 Assignment
0 Petitions
Accused Products
Abstract
A microprocessor pipeline arrangement 1 includes a plurality of functional units P1, P2, P3, . . . , PN. A number of the functional units P1, P3, PN have access to a respective cache memory C1, C3, CN from which it can retrieve data needed to process threads that pass through the pipeline. The pipeline arrangement 1 also includes a number of monitors to determine when the system enters a state of livelock (e.g. inter-cache livelocks, intra-cache livelocks and/or “near-livelock” situations): a top-level monitor MT to detect livelock situations in the pipeline as a whole; and second-level (“local”) monitors M1 and M3 associated with individual caches C1 and C3.
If the system is determined to have entered a livelock state, e.g. by the top-level monitor MT, the number of threads able to change the contents of one or more of the caches C1, C3, CN is reduced.
-
Citations
26 Claims
-
1. A method of operating a microprocessor system that includes a plurality of functional units arranged in a pipelined fashion and in which at least one stage in the pipeline can process a thread for execution at the same time as other stages in the pipeline are processing other threads for execution, one or more of the functional units each including or having associated with it a cache memory for data to be used by the functional unit when processing a thread, the method comprising:
-
detecting whether the system is in a livelock state; and if a livelock state is detected, preventing one or more of the threads in the pipeline from being able to change the contents of one or more of the caches. - View Dependent Claims (2, 3, 6, 8, 26)
-
-
4. A method of operating a microprocessor system that includes a plurality of functional units arranged in a pipelined fashion and in which at least one stage in the pipeline can process a thread for execution at the same time as other stages in the pipeline are processing other threads for execution, the method comprising:
-
monitoring the progress of threads through the pipeline as a whole so as to determine whether the system is in a livelock state; and simultaneously, monitoring the progress of threads in one or more particular portions of the pipeline so as to determine whether one or more portions of the system are in a livelock state. - View Dependent Claims (5)
-
-
7. A method of operating a microprocessor system that includes a plurality of functional units arranged in a pipelined fashion and in which one or more of the functional units can process a thread for execution at the same time as other functional units in the pipeline are processing other threads for execution, one or more of the functional units including or having associated with it a cache for data to be used by the functional unit, the method comprising at least one of:
-
determining whether a thread is either permitted or prevented from changing the contents of one or more caches; and changing information associated with one or more of the threads that are passed down the pipeline for execution indicating whether the thread is either permitted or prevented from changing the contents of one or more caches.
-
-
9. A method of operating a microprocessor system that includes a plurality of functional units arranged in a pipelined fashion and in which at least one stage in the pipeline can process a thread for execution at the same time as other stages in the pipeline are processing other threads for execution, one or more of the functional units each including or having associated with it a cache memory for data to be used by the functional unit when processing a thread, the method comprising:
-
detecting whether the system is in a livelock state; and if a livelock state is detected, reducing the number of threads in the pipeline that are allowed to change the contents of one or more of the caches. - View Dependent Claims (10, 11, 12)
-
-
13. A method of operating a microprocessor system that includes a plurality of functional units arranged in a pipelined fashion and in which at least one stage in the pipeline can process a thread for execution at the same time as other stages in the pipeline are processing other threads for execution, one or more of the functional units each including or having associated with it a cache for data to be used by the functional unit when processing a thread, the method comprising:
selectively decreasing or increasing the number of threads of the threads in the pipeline that are able to change the contents of one or more of the caches.
-
14. A microprocessor system for processing a plurality of threads, the system comprising:
-
a plurality of functional units arranged in a pipelined fashion, one or more of the functional units being operable to receive and process a thread received from the preceding functional unit in the pipeline and to pass a thread after processing to the next functional unit in the pipeline, and one or more of the functional units each including or having associated with it a cache memory for data to be used by the functional unit when processing a thread; at least one livelock monitor for detecting whether the system is in a livelock state; and progressing logic operable to prevent one or more of the threads in the pipeline from being able to change the contents of one or more of the caches if a livelock state is detected. - View Dependent Claims (15, 16, 19, 21)
-
-
17. A microprocessor system comprising:
-
a plurality of functional units arranged in a pipelined fashion, one or more of the functional units being operable to receive and process a thread received from the preceding functional unit in the pipeline and to pass a thread after processing to the next functional unit in the pipeline; a first livelock monitor for monitoring the progress of threads through the pipeline as a whole so as to determine whether the system is in a livelock state; and one or more second livelock monitors for monitoring the progress of threads in a particular portion of the pipeline so as to determine whether one or more portions of the system are in a livelock state. - View Dependent Claims (18)
-
-
20. A functional unit for use in a microprocessor system that includes a plurality of functional units arranged in a pipelined fashion and in which one or more of the functional units can process a thread for execution at the same time as other functional units in the pipeline are processing other threads for execution, one or more of the functional units including or having associated with it a cache for data to be used by the functional unit, the functional unit comprising at least one of:
-
processing logic operable to determine whether a thread is either permitted or prevented from changing the contents of one or more caches; and processing logic operable to change information associated with one or more of the threads that are passed down the pipeline for execution indicating whether the thread is either permitted or prevented from changing data in one or more of the caches.
-
-
22. A microprocessor system for processing a plurality of threads, the system comprising:
-
a plurality of functional units arranged in a pipelined fashion, one or more of the functional units being operable to receive and process a thread received from the preceding functional unit in the pipeline and to pass a thread after processing to the next functional unit in the pipeline, and one or more of the functional units each including or having associated with it a cache memory for data to be used by the functional unit when processing a thread; at least one livelock monitor for detecting whether the system is in a livelock state; and processing logic operable to reduce the number of threads in the pipeline that are allowed to change the contents of one or more of the caches if a livelock state is detected. - View Dependent Claims (23, 24)
-
-
25. A microprocessor system for processing a plurality of threads, the system comprising:
-
a plurality of functional units arranged in a pipelined fashion, one or more of the functional units being operable to receive and process a thread received from the preceding functional unit in the pipeline and to pass a thread after processing to the next functional unit in the pipeline, and one or more of the functional units each including or having associated with it a cache memory for data to be used by the functional unit when processing a thread; processing logic operable to decrease the number of threads of the threads in the pipeline that are able to change the contents of one or more of the caches; and processing logic operable to increase the number of threads of the threads in the pipeline that are able to change the contents of one or more of the caches.
-
Specification