WO2002046887A2 - Processeur a fonctionnement multitache - Google Patents
Processeur a fonctionnement multitache Download PDFInfo
- Publication number
- WO2002046887A2 WO2002046887A2 PCT/US2001/051065 US0151065W WO0246887A2 WO 2002046887 A2 WO2002046887 A2 WO 2002046887A2 US 0151065 W US0151065 W US 0151065W WO 0246887 A2 WO0246887 A2 WO 0246887A2
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- task
- instruction
- instructions
- priority
- execution
- Prior art date
Links
- 230000015654 memory Effects 0.000 claims abstract description 44
- 239000000872 buffer Substances 0.000 description 16
- 238000010586 diagram Methods 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000000034 method Methods 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 230000000903 blocking effect Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 230000000977 initiatory effect Effects 0.000 description 2
- 208000003035 Pierre Robin syndrome Diseases 0.000 description 1
- 241001442055 Vipera berus Species 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
- G06F9/4887—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
Definitions
- TECHNICAL FIELD Superscalar microprocessors perform multiple tasks concurrently. When tied to a real-time operating system, such processors must execute multiple tasks simultaneously or nearly simultaneously. This type of architecture provides multiple execution units for executing multiple tasks in parallel. The multiple tasks are defined by coded instruction streams all of which vie for the processor's ability to execute at any given time.
- U.S. Patent No. 5,867,725 to Fung et al discloses concurrent multitasking in a uniprocessor.
- the Fung et al . patent uses the thread number of a task to track a multiplicity of tasks through execution units.
- Fung et al however include no means for allocating tasks to execution units based upon priority of the task, task initiation driven by interrupts or a real-time operating system (RTOS) kernel in its hardware.
- Thread initiation in Fung et al . requires software to split a single task into multiple threads which is too slow and impractical for an RTOS. This mechanism is appropriate only for specially compiled programs.
- superscalar processors issue instructions from a single instruction stream.
- the invention substantially increases the efficiency of processor utilization by issuing instructions from, one or more additional instruction streams on a prioritized basis whenever unused execution capacity is available, thereby increasing throughput by making use of the maximum capability of the processing circuitry. Higher priority tasks are given first choice of resources, thereby assuring proper sequences of task completions .
- Instruction streams can come from one or more tasks or threads or ' from one or more co-routines or otherwise independent instruction streams within a single task or thread.
- the instruction streams are fetched from the instruction memory or cache, either serially for one stream at a time, or in parallel for more than one stream at a time, and sent to one or more instruction queues. If more than one instruction queue is used, each instruction queue typically contains instructions which are independent with respect to all the other instruction queues. Instructions are decoded by one or more attached instruction decoders for each instruction queue. Instructions are issued from the decoders to one or more execution units in order of priority of the instruction streams .
- the highest priority instruction stream gets priority for the use of the available execution units and the next lower-priority instruction stream issues instructions to the remaining available execution units. This process continues until instructions have been issued to all execution units, until there are no execution units available for processing any of the queued instruction functions, or until there are no more instructions available for issue.
- instruction streams When instruction streams are blocked from issuing instructions, they can be removed from their instruction queues and other instruction streams may be assigned to those queues. Blockages can occur when instruction stream addresses are altered by branches, jumps, calls, returns and other control instructions, or by interrupts, resets, exceptions, trap conditions, resource unavailability, or a multitude of other blocking circumstances. Thus when confronted by blockages, the invention permits continuous issuances of instructions to maximize throughput while blocked instruction streams wait for resources.
- the processor In order to process instruction streams in the execution units, the processor is provided with a register memory that holds the contents of the instruction stream register sets. Register locations within the register memory are dynamically assigned to registers in the high-speed register rename cache as necessary for each instruction stream by a priority-based issue controller. Information from the register memory is loaded into the assigned rename cache registers for processing. This allows for high-speed instruction stream processing while lower-speed high-density memory can be used for massive storage of register contents. This process of register assignment prevents register contention between instruction streams. When instruction streams require register allocation and all rename cache registers are currently allocated, least-recently-used rename cache registers are reassigned to the new instruction streams. At this time, rename cache register contents. are exchanged to and from the appropriate locations in register memory.
- the processor uses a hardware-based Real Time Operating System (RTOS) and Zero Overhead Interrupt technology, such as is presented in U.S. Patent No. 5,987,601.
- RTOS Real Time Operating System
- the use of hardware prioritized task controllers in conjunction with variable hardware ramping-priority deadline-timers for each task internal to the processor eliminates instruction overhead for switching tasks and provides a substantial degree of increased efficiency and reduced latency for multithreading and multi-task processing.
- This technology provides for as many as 256 or more tasks to run concurrently and directly from within the processor circuitry without the need to load and unload task control information from external memory. Therefore, high priority task interrupt processing occurs without overhead and executes immediately upon recognition. Multiple task instruction streams of various priority levels may execute simultaneously within the execution units .
- FIG. 1 is a schematic block diagram of the concurrent multitasking processor of the invention.
- FIG. 2 is a flow chart diagram illustrating the operation of the concurrent multitasking processor of
- FIG. 3 is a schematic diagram illustrating the operation of the semaphore circuit with respect to task control storage .
- a task is an independent hardware and software environment containing its own instructions, instruction execution address (program counter) , general-purpose registers, execution control registers, and priority and other control and storage elements that share processing resources with other tasks in this computer system.
- 256 tasks are implemented in hardware with software providing the support for an essentially unlimited plurality of additional tasks. Run, sleep, active, defer, interrupt, suspended, round-robin, and other status and control bits are maintained for each task.
- processor 30 a block diagram of a processor for processing information according to a preferred embodiment of the present invention is illustrated. The diagram comprises a single integrated circuit superscalar microprocessor capable of executing multiple instructions per processor cycle.
- processor 30 includes various execution units, registers, buffers, memories, and other functional units which are all formed by integrated circuitry.
- processor 30 is coupled to system bus 19 via a bus interface unit (BIU) 17 within processor 30.
- BIU 17 controls the transfer of information between processor 30 and other devices coupled to system bus 19, such as a main memory
- Processor 30, system bus 19, and the other devices coupled to system bus 19 together form a host data processing system.
- BIU 17 is connected to instruction cache and MMU 11, data cache and MMU 16, and on-chip memory 12 with L2 Cache 21 within processor 30.
- High speed caches such as instruction cache 11 and data cache 16, enable processor 30 to achieve relatively fast access time to a subset of data or instructions previously transferred from main memory to the high speed caches, thus improving the speed of operation of the host data processing system.
- Instruction cache 11 is further coupled to fetcher 4 which fetches instructions from instruction cache 11 and places them into instruction queues 10 for execution.
- On-chip memory 12 provides high-speed random access memory for general-purpose use and for use by L2 cache 21. Temporary storage of instruction streams and data for the instruction and data caches is provided by L2 cache 21.
- Task control 1 contains storage and control registers for a plurality of tasks. Each task is provided at least one apiece of the following registers: instruction execution address (program counter) , priority, execution control, memory access descriptor, and such additional control and storage elements as are required. Task control 1 transfers the priority, task number, and a copy of the instruction execution address for each task to priority selector 2. 256 priority levels are implemented with a priority level of zero representing the lowest priority. Tasks with priority level of zero are not permitted to execute, and this priority level is also used to represent a non-execution request condition. The priority levels are set to an initial value stored in a lower-limit register for each task and are increased as time elapses to a maximum value stored in an upper-limit register for each task.
- the rate of increase is controlled by a ramp-time register for each task.
- Priority levels can be boosted by semaphore unit 20 to assure that lower priority tasks owning the semaphore are allowed to continue execution at the priority level of the semaphore requesting task, thus preventing higher priority tasks requesting the semaphore from deadlock (waiting for a low priority task that may never get execution time) .
- a boost register is maintained for each task to facilitate the boosting of priority changes. Semaphore number, priority and sequence registers are maintained for each task. These registers are accessed by semaphore unit 20 to process the blocked-on-semaphore queues.
- a semaphore timeout counter is maintained for each task to prevent, upon such options as may be selected or controlled, stalling a task waiting for a semaphore.
- Each task implements an interrupt attachment mechanism which can connect any interrupt source in the processor to the task.
- the interrupt is used to change the instruction execution address of an executing task or to wake up a sleeping task and cause it to execute .
- Each task incorporates a defer counter which may be enabled by program control if desired. Its function is to count interrupts and defer the wake up until a programmed number of interrupts have been received. This mechanism may be used for precise timing, FIFO flow control, and other purposes where additional delay time is desired for repetitive interrupts.
- Priority Selector 2 selects the requesting task with the highest priority by comparing the priorities of the tasks requesting instruction execution. It then transfers the highest-priority task number, its priority level, and its instruction execution address register to task selector 3.
- Task selector 3 receives the current highest- priority requesting task number, priority and instruction execution address from priority selector 2. Task selector 3 saves the task number, priority and instruction execution address for a plurality of the highest-priority tasks. Task selector 3 sends an acknowledge signal to the selected highest-priority task in Task control 1 that disables its request priority. This allows other tasks of equal or lower priority to be selected by priority selector 2. The task selector transfers the saved task number, priority and instruction execution address for a plurality of tasks to fetcher 4. Tasks with equal priority are selected by task selector 3 to execute in a round-robin sequence. Task selector 3 contains a programmable timer which causes the oldest equal-priority task to be replaced by a new equal- priority task.
- task selector 3 sends a signal to Task control 1 in order to set the round-robin flag in the old task, thus causing it to disable its request priority.
- a lower-priority request (or none) is received from priority selector 2 indicating that there are no more tasks requesting with the current priority level
- task selector 3 sends a signal to Task control 1 to clear all the round-robin flags at the current round-robin priority level .
- Fetcher 4 assigns a unique instruction stream number to each task selected by task selector 3. Instruction stream numbers are used to insure the in- order retiring of instructions. Each time a task is deselected and reselected by task selector 3, fetcher 4 assigns a new instruction stream number to the task.
- Fetcher 4 assigns instruction streams to the instruction queues 10. When changing instruction streams for an instruction queue, the instruction queue is flushed. Fetcher 4 receives the selected tasks ' instruction addresses and maintains the current instruction addresses for the selected tasks. When a task is no longer selected by task selector 3, the current instruction execution address for the task is sent from fetcher 4 to Task control 1, updating the task's instruction execution address. Fetcher 4 fills empty or partially empty instruction queues 10 from instruction cache 11 or from branch unit's 5 branch target buffer in highest-priority order. Fetcher 4 updates the current instruction execution address for each instruction stream as instructions are issued or branches are taken.
- Fetcher 4 transmits the task numbers, priorities, memory access descriptors, instruction stream numbers, and the instruction-queue-assignment correlation information on to issue unit 8. Branch instructions are identified and removed from the instruction streams by fetcher 4 prior to being placed into the instruction queues, and are sent to branch unit 5 for execution.
- Branch unit 5 executes branch instructions, which change the sequence in which the instructions in the computer program are performed, and performs static and dynamic branch prediction on unresolved conditional branches to allow speculative instructions to be fetched and executed. Instructions issued beyond a predicted branch do not complete execution until the branch is resolved, preserving the programming model of sequential execution.
- a branch target buffer supplies a plurality of instructions at the predicted branch addresses to fetcher 4 which forwards them to instruction queues 10.
- Instruction queues 10 consists of two or more instruction queues that are used to store two or more instruction streams from which instructions are issued for execution. Each instruction queue holds one or more instructions from a single instruction stream identified by a unique instruction stream number.
- the instruction queues 10 serve as a buffer between the instruction cache 11 and the instruction decoders in decoder 9.
- Issued instructions are removed from the instruction queues 10.
- the instruction queue length is greater than one cache line length to allow for background refill of the instruction queue.
- Each instruction queue provides access to a plurality of instructions by instruction decode 9. All of the instruction queues forward instructions and instruction stream numbers simultaneously to decode 9.
- Instruction decode 9 provides two or more instruction decoders for each instruction queue. The decoded instructions and instruction stream numbers are forwarded simultaneously to instruction issue 8 which uses this information to select instructions for execution by priority and the availability of execution resources.
- Issue unit 8 simultaneously issues instructions from one or more instruction decoders to the integer ALUs 13 and 14, load/store unit 15 and semaphore unit 20. Issued instructions are accompanied by their rename source and destination register numbers and their instruction priorities. Memory access descriptors are also issued to load/store unit 15 for memory access instructions. Task numbers are issued only to semaphore unit 20 along with priority levels for semaphore instruction execution. To support maximum throughput, instructions are issued from a plurality of instruction streams out of program order when no instruction dependencies are violated. Dependency checking is performed by issue 8 and instructions can be issued out of order if there is no dependency conflict. Multiple instructions from the highest-priority task's instruction stream are issued whenever possible.
- Issue unit 8 allocates a storage location in the reorder buffer 18 for each instruction issued.
- the reorder buffer 18 stores the renamed destination register, the instruction stream number and the priority for the instruction issued.
- Semaphores are widely used in software real time operating systems to maintain hardware resources, software resources, task synchronization, mutual exclusion and other uses .
- Software RTOS ' s can spend thousands of cycles maintaining semaphores .
- This invention uses hardware semaphores to reduce or completely eliminate these overhead cycles.
- Semaphore unit 20 executes Give, Take, Create,
- Semaphore unit 20 provides a plurality of hardware semaphores, with software providing the support for an essentially unlimited plurality of additional semaphores. In the preferred embodiment, 256 hardware semaphores are implemented. Semaphore unit 20 contains status, control, count, maximum count, owner task and priority (for binary semaphores) , blocked-queue-priority, blocked-queue-head- pointer, blocked-queue length, and other registers for each semaphore. Binary and counting semaphores are supported. A Give instruction execution increments the count register for a semaphore up to the maximum count .
- a Take execution instruction decrements the count register for a semaphore down to a minimum of zero. If a Take instruction executes when the count is zero, the task associated with the instruction stream executing the Take instruction is either informed that the instruction failed or was blocked, at which time the requesting task is inserted in priority order into a blocked queue for the semaphore as selected by the Take instruction option field.
- priority-inversion safety is selected for a binary semaphore by a flag in the semaphore control register and any Task is blocked on the semaphore
- the priority of the owner task is boosted to the priority of the highest-priority task on the blocked queue if it is higher than the owner task priority. This provides priority-inversion protection by preventing lower- priority • tasks from stalling higher-priority tasks that are blocked while allocating a semaphore.
- Issue unit 8 renames both source and destination registers for all instructions using general- purpose registers, and sends the rename information to register rename cache 7.
- Register rename cache 7 provides a plurality of working registers for temporary, high-speed storage of the integer register contents for the currently executing instruction streams.
- the register rename cache contains fewer registers than register memory 6.
- register rename cache 7 provides 64 registers.
- Register memory 6 provides storage for the general-purpose integer register sets of all tasks, and maintains the architectural state of the registers. Register memory 6 can be implemented as registers for high-speed access or as a RAM array to reduce chip area and power consumption. Register memory 6 is accessed and controlled by register rename cache 7. In the preferred embodiment, register memory 6 provides 256 sets of 32 registers (8192 total) .
- the plurality of integer ALUs 13 and 14 receive instructions with priority tags and renamed register identifiers from issue unit 8. These items are stored in a plurality of reservation stations in the integer ALUs.
- Source register contents are obtained from register rename cache 7 using the renamed register identifiers.
- an instruction is dispatched from the reservation station to execute.
- the instructions in the reservation stations are dispatched in priority order, or oldest-first if they are of equal priority. If the source register contents are already available, an instruction can be dispatched without storage in the reservation stations.
- the integer ALUs performs scalar integer arithmetic and logical operations such as Add, Subtract, Logical And, Logical Or and other scalar instructions.
- the instruction results are transferred to reorder buffer 18 by a separate result bus for each ALU.
- Bypass feedback paths allow integer ALUs 13 and 14 and Load/Store 15 to simultaneously recycle the results for further processing while transferring the results to the reorder buffer.
- the load/store unit 15 receives instructions with priority tags, renamed register identifiers, and memory access descriptors from issue unit 8. These items are stored in a plurality of reservation stations in the load/store unit. Source register contents are obtained from register rename cache 7 using the renamed register identifiers. When the source register contents are available, an instruction is dispatched from the reservation station for execution. The instructions in the reservation stations are dispatched in priority order, or oldest-first if they are of equal priority. If the source register contents are available, an instruction can be dispatched without storage in the reservation stations.
- the integer load/store unit executes Load and Store instructions which provide data memory addresses and memory access descriptors to the data cache 16, requesting that data be loaded from or stored into the data cache. The instruction results are transferred to reorder buffer 18 by a result bus for each load/store unit.
- Reorder buffer 18 provides temporary storage of results from integer ALUs 13 and 14 and load/store unit 15 in a plurality of storage locations and restores the program order of instruction results that had been completed out of order.
- the issue unit 8 allocates a storage location in the reorder buffer for each instruction issued. Several storage locations can be allocated simultaneously to support the simultaneous issue of a plurality of instructions. An instruction stream number is stored in each allocated reorder buffer entry to associate results with the appropriate instruction stream. Instruction are retired in-order when all older instructions in the instruction stream have completed. A plurality of instructions can be retired simultaneously.
- a memory access descriptor is a unique number that describes a set of memory address ranges, access and sharing privileges, and other control and status information not associated with a particular task.
- a memory access descriptor can be used by several tasks. Memory access descriptors are used by instruction cache and MMU 11 and data cache and MMU 16 to provide shared, read-only, execute-only, and other partitions of memory required by real-time operating systems. Instruction cache and MMU 11 provides highspeed temporary storage of instruction streams.
- Data cache and MMU 16 provides high-speed temporary storage of data.
- On-chip memory 12 provides high-speed random access memory for general-purpose use and for use by the L2 cache 21.
- L2 cache 21 provides temporary storage of instruction streams and data for the instruction and data caches .
- Bus interface unit 17 controls the transfer of data between the processor via the instruction and data caches and on-chip memory 12, and system bus 19.
- Issue unit 8 can issue instructions to floating-point, SIMD and other execution units and their results can be transmitted to reorder buffer 18. Additional floating-point registers, SIMD and other registers can be implemented with separate rename register caches and register memories or used with rename register cache 7 and register memory 6.
- an instruction prefetcher can be included in this invention that receives task number and priority information from Task control 1 and that commands the instruction cache and MMU 11 to load from memory and save instructions for a plurality of tasks prior to or during their execution.
- a link register for subroutine call and return a stack-pointer register, a counter register supporting branching and looping of instruction execution, and a timer register for scheduling task execution or other uses can be included in this invention. These registers may be included in Task control 1 or in fetcher 4.
- the semaphore control unit 20 inserts, deletes and sorts blocked semaphores.
- FIG. 3 shows a preferred method that "sorts" the blocked tasks as needed. Whenever an operation on a blocked task is required the circuit in FIG. 3 finds the highest priority blocked task for a specific semaphore. A typical use for this is to enable a task that is waiting for a hardware resource to become available, and this hardware resource has used the specific semaphore to signal that it is busy.
- the FIG. 3 circuit as shown does not enable equal priority tasks blocked on a semaphore to be unblocked in request order, however this could be added with a linked list mechanism. While this is the preferred implementation of the hardware semaphore unit, the semaphore unit can also be arranged as a linked list.
- priority selector 40 determines the highest priority task and it's current priority.
- the semaphore unit 20 (FIG. 1) the semaphore number and a blocked semaphore priority request to all tasks.
- the tasks which are blocked on the specified semaphore number enable their priorities to the priority selector 40. If digital comparator 41 matches the task's blocked semaphore register values to the incoming semaphore number, a non-zero priority is enabled to priority selector 40.
- Priority selector 40 produces the task number and priority of the highest priority task blocked on the specified semaphore. Tasks not blocked on the specified semaphore send zero priority to the priority selector 40.
- Task selector 40 can be the same task selector 2 of FIG. 1 if used in a time shared manner. This would allow the unblocked task to get to the fetcher 4 of FIG. 1 as soon as possible.
- FIG. 2 a flow chart illustrates the operation of the concurrent multitasking processor of FIG. 1.
- task parameters as described in connection with Task control 1 are written to Task control storage by software.
- Task control 1 contains priority control data for each task to be run.
- the priority selector 2 determines if the task is ready to run.
- each task is queried to determine whether it is one of the "n" highest priorities of task ready to run. If the answer is no, its priority is ramped upwards according to a predetermined program.
- the priority level of the task is boosted if it is the owner of a semaphore blocking a higher priority task. Thus, block 47 loops back to block 44 until the task may be one of the "n" highest priorities ready to run.
- Block 46 determines whether any task contains instructions to end. If so, the processor stops for that task. If no, in block 50 the processor assigns a unique stream number to the task. The stream number contains unique priority data and is assigned by fetcher 4. This priority data is, in turn, provided to Task control 1.
- issue unit 8 issues task instructions to execution units such as integer ALU1 13, integer ALUn 14 and load/store unit 15. Task instructions are issued according to the highest priority until all execution units are loaded or until no further instructions are available.
- execution units such as integer ALU1 13, integer ALUn 14 and load/store unit 15. Task instructions are issued according to the highest priority until all execution units are loaded or until no further instructions are available.
- instructions are executed by the relevant execution units.
- Tasks that require a semaphore are provided by the issue unit 8 to semaphore unit 20. If the task is one which may own a semaphore, this information is provided as priority data to Task control 1. After the instructions have been executed at block 54, the results are provided to reorder buffer 18 to maintain the proper sequence of subsequent operations.
- the processor determines through the issue unit 8 and the semaphore unit 20 whether the instructions caused the task to sleep or to block on semaphore. If the answer is no, the processor loops back to block 44 where tasks of the next "n" highest priorities from task selector 3 are examined. If the task is blocked on semaphore, the processor loops back to block 42 where the task is queried in the priority selector to determine whether it is ready to run.
- the processor follows the sequence described above.
- the processor runs in a continuous loop and stops only when all tasks have ended as indicated by the decision node at block 48.
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
AU2002241767A AU2002241767A1 (en) | 2000-10-23 | 2001-10-19 | Concurrent-multitasking processor |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US24258100P | 2000-10-23 | 2000-10-23 | |
US60/242,581 | 2000-10-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
WO2002046887A2 true WO2002046887A2 (fr) | 2002-06-13 |
WO2002046887A3 WO2002046887A3 (fr) | 2002-08-01 |
Family
ID=22915365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2001/051065 WO2002046887A2 (fr) | 2000-10-23 | 2001-10-19 | Processeur a fonctionnement multitache |
Country Status (2)
Country | Link |
---|---|
AU (1) | AU2002241767A1 (fr) |
WO (1) | WO2002046887A2 (fr) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008046716A1 (fr) * | 2006-10-20 | 2008-04-24 | International Business Machines Corporation | Système informatique multiprocesseur et son procédé d'attribution de tâches |
EP1988460A1 (fr) * | 2007-05-02 | 2008-11-05 | MediaTek Inc. | Appareil et procédé pour distribuer des instructions |
US8533716B2 (en) | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US9038076B2 (en) | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
CN106095554A (zh) * | 2016-06-17 | 2016-11-09 | 中国银行股份有限公司 | 在日间联机阶段进行批量数据处理的方法及装置 |
WO2016186602A1 (fr) * | 2015-05-15 | 2016-11-24 | Hewlett Packard Enterprise Development Lp | Priorisation de suppression |
CN110858127A (zh) * | 2018-08-22 | 2020-03-03 | 慧荣科技股份有限公司 | 数据存储装置 |
US10613987B2 (en) | 2016-09-23 | 2020-04-07 | Apple Inc. | Operand cache coherence for SIMD processor supporting predication |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5546593A (en) * | 1992-05-18 | 1996-08-13 | Matsushita Electric Industrial Co., Ltd. | Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream |
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US6105127A (en) * | 1996-08-27 | 2000-08-15 | Matsushita Electric Industrial Co., Ltd. | Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream |
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
EP1148414A2 (fr) * | 2000-03-30 | 2001-10-24 | Agere Systems Guardian Corporation | Méthode et appareil pour l'affectation d'unités fonctionnelles dans un processeur VLIW multifilière |
US20010056456A1 (en) * | 1997-07-08 | 2001-12-27 | Erik Cota-Robles | Priority based simultaneous multi-threading |
-
2001
- 2001-10-19 WO PCT/US2001/051065 patent/WO2002046887A2/fr active Application Filing
- 2001-10-19 AU AU2002241767A patent/AU2002241767A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5546593A (en) * | 1992-05-18 | 1996-08-13 | Matsushita Electric Industrial Co., Ltd. | Multistream instruction processor able to reduce interlocks by having a wait state for an instruction stream |
US6105127A (en) * | 1996-08-27 | 2000-08-15 | Matsushita Electric Industrial Co., Ltd. | Multithreaded processor for processing multiple instruction streams independently of each other by flexibly controlling throughput in each instruction stream |
US6073159A (en) * | 1996-12-31 | 2000-06-06 | Compaq Computer Corporation | Thread properties attribute vector based thread selection in multithreading processor |
US20010056456A1 (en) * | 1997-07-08 | 2001-12-27 | Erik Cota-Robles | Priority based simultaneous multi-threading |
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
EP1148414A2 (fr) * | 2000-03-30 | 2001-10-24 | Agere Systems Guardian Corporation | Méthode et appareil pour l'affectation d'unités fonctionnelles dans un processeur VLIW multifilière |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9779042B2 (en) | 2004-03-31 | 2017-10-03 | Synopsys, Inc. | Resource management in a multicore architecture |
US10268609B2 (en) | 2004-03-31 | 2019-04-23 | Synopsys, Inc. | Resource management in a multicore architecture |
US8533716B2 (en) | 2004-03-31 | 2013-09-10 | Synopsys, Inc. | Resource management in a multicore architecture |
US9830241B2 (en) | 2004-09-14 | 2017-11-28 | Synopsys, Inc. | Debug in a multicore architecture |
US9038070B2 (en) | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
US9129050B2 (en) | 2004-09-14 | 2015-09-08 | Synopys, Inc. | Debug in a multicore architecture |
US9038076B2 (en) | 2004-09-14 | 2015-05-19 | Synopsys, Inc. | Debug in a multicore architecture |
WO2008046716A1 (fr) * | 2006-10-20 | 2008-04-24 | International Business Machines Corporation | Système informatique multiprocesseur et son procédé d'attribution de tâches |
EP1988460A1 (fr) * | 2007-05-02 | 2008-11-05 | MediaTek Inc. | Appareil et procédé pour distribuer des instructions |
WO2016186602A1 (fr) * | 2015-05-15 | 2016-11-24 | Hewlett Packard Enterprise Development Lp | Priorisation de suppression |
CN106095554A (zh) * | 2016-06-17 | 2016-11-09 | 中国银行股份有限公司 | 在日间联机阶段进行批量数据处理的方法及装置 |
CN106095554B (zh) * | 2016-06-17 | 2019-08-23 | 中国银行股份有限公司 | 在日间联机阶段进行批量数据处理的方法及装置 |
US10613987B2 (en) | 2016-09-23 | 2020-04-07 | Apple Inc. | Operand cache coherence for SIMD processor supporting predication |
CN110858127A (zh) * | 2018-08-22 | 2020-03-03 | 慧荣科技股份有限公司 | 数据存储装置 |
CN110858127B (zh) * | 2018-08-22 | 2023-09-12 | 慧荣科技股份有限公司 | 数据存储装置 |
Also Published As
Publication number | Publication date |
---|---|
AU2002241767A1 (en) | 2002-06-18 |
WO2002046887A3 (fr) | 2002-08-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20040172631A1 (en) | Concurrent-multitasking processor | |
EP1027645B1 (fr) | Commande de commutation de filiere dans un systeme de traitement a plusieur filieres | |
US9069605B2 (en) | Mechanism to schedule threads on OS-sequestered sequencers without operating system intervention | |
CA2299348C (fr) | Procede et appareil de selection d'evenements de commutation d'unites d'execution dans un processeur a unites d'execution multiples | |
EP1027650B1 (fr) | Procede et appareil pour modifier l'ordre de priorite des unites d'execution un processeur a unites d'execution multiples | |
US5185868A (en) | Apparatus having hierarchically arranged decoders concurrently decoding instructions and shifting instructions not ready for execution to vacant decoders higher in the hierarchy | |
US6076157A (en) | Method and apparatus to force a thread switch in a multithreaded processor | |
US5452452A (en) | System having integrated dispatcher for self scheduling processors to execute multiple types of processes | |
US6732242B2 (en) | External bus transaction scheduling system | |
US6105051A (en) | Apparatus and method to guarantee forward progress in execution of threads in a multithreaded processor | |
JP3771957B2 (ja) | プロセッサ・アーキテクチャにおける分散制御のための装置および方法 | |
JP4693326B2 (ja) | 組込み型プロセッサにおいてゼロタイムコンテクストスイッチを用いて命令レベルをマルチスレッド化するシステムおよび方法 | |
US8145884B2 (en) | Apparatus, method and instruction for initiation of concurrent instruction streams in a multithreading microprocessor | |
JP2005284749A (ja) | 並列処理コンピュータ | |
US20100205608A1 (en) | Mechanism for Managing Resource Locking in a Multi-Threaded Environment | |
JP2002149424A (ja) | 共有コプロセッサ・リソースに対する複数の論理インタフェース | |
WO2022100372A1 (fr) | Architecture de processeur à commande de traitement microfil par fil noyau à accélération matérielle | |
US8595747B2 (en) | Efficient task scheduling by assigning fixed registers to scheduler | |
US20090138880A1 (en) | Method for organizing a multi-processor computer | |
US20050066149A1 (en) | Method and system for multithreaded processing using errands | |
WO2005022384A1 (fr) | Instruction pour declenchement de flux d'instructions concurrents dans un microprocesseur a traitement multifiliere | |
WO2002046887A2 (fr) | Processeur a fonctionnement multitache | |
WO2006129767A1 (fr) | Dispositif de traitement central multithread et méthode de contrôle de multithreading simultané | |
Shimada et al. | Two Approaches to Parallel Architecture Based on Dataflow Ideas | |
CZ20001437A3 (cs) | Způsob a zařízení pro výběr událostí přepínání vláken ve vícevláknovém procesoru |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AK | Designated states |
Kind code of ref document: A2 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A2 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
AK | Designated states |
Kind code of ref document: A3 Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG US UZ VN YU ZA ZW |
|
AL | Designated countries for regional patents |
Kind code of ref document: A3 Designated state(s): GH GM KE LS MW MZ SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application | ||
DFPE | Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101) | ||
REG | Reference to national code |
Ref country code: DE Ref legal event code: 8642 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 10477806 Country of ref document: US |
|
122 | Ep: pct application non-entry in european phase | ||
NENP | Non-entry into the national phase |
Ref country code: JP |