WO2010097847A1 - プロセッサ装置、マルチスレッドプロセッサ装置 - Google Patents
プロセッサ装置、マルチスレッドプロセッサ装置 Download PDFInfo
- Publication number
- WO2010097847A1 WO2010097847A1 PCT/JP2009/003857 JP2009003857W WO2010097847A1 WO 2010097847 A1 WO2010097847 A1 WO 2010097847A1 JP 2009003857 W JP2009003857 W JP 2009003857W WO 2010097847 A1 WO2010097847 A1 WO 2010097847A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- processor
- context data
- hardware resource
- unit
- determination unit
- Prior art date
Links
- 238000012546 transfer Methods 0.000 claims abstract description 42
- 230000015654 memory Effects 0.000 claims description 145
- 238000000034 method Methods 0.000 claims description 57
- 230000008569 process Effects 0.000 claims description 53
- 238000002360 preparation method Methods 0.000 claims description 48
- 230000006870 function Effects 0.000 claims description 11
- 238000012545 processing Methods 0.000 description 111
- 238000010586 diagram Methods 0.000 description 47
- 238000007726 management method Methods 0.000 description 20
- 238000005516 engineering process Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 230000006837 decompression Effects 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000007257 malfunction Effects 0.000 description 2
- COCAUCFPFHUGAA-MGNBDDOMSA-N n-[3-[(1s,7s)-5-amino-4-thia-6-azabicyclo[5.1.0]oct-5-en-7-yl]-4-fluorophenyl]-5-chloropyridine-2-carboxamide Chemical compound C=1C=C(F)C([C@@]23N=C(SCC[C@@H]2C3)N)=CC=1NC(=O)C1=CC=C(Cl)C=N1 COCAUCFPFHUGAA-MGNBDDOMSA-N 0.000 description 2
- 238000013139 quantization Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 208000026940 Microvillus inclusion disease Diseases 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000005236 sound signal Effects 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000003079 width control Methods 0.000 description 1
Images
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/461—Saving or restoring of program or task context
- G06F9/462—Saving or restoring of program or task context with multiple register sets
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30123—Organisation of register space, e.g. banked or distributed register file according to context, e.g. thread buffers
-
- 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
- the present invention relates to a processor device and a multi-thread processor device having a plurality of processors that execute while switching programs of the processor device, and more particularly to a processor device and a multi-thread processor device that share hardware resources among a plurality of processors.
- a multi-thread processor is known as a processor for realizing high performance (for example, see Patent Document 1).
- This multi-thread processor can improve processing efficiency by simultaneously executing a plurality of threads.
- the multi-thread processor can share resources in the execution of a plurality of threads, the area efficiency of the processor can be improved as compared with the case where a plurality of processors are provided independently.
- such a processor performs control-related host processing that does not require real-time processing and media processing such as moving image compression and expansion processing that requires real-time processing.
- the integrated circuit for video / audio processing described in Patent Document 2 includes a microcomputer block that performs host processing and a media processing block that performs media processing.
- lazy context switch Lazy context switch
- FPU floating point number processing unit
- the above method attempts to reduce the overhead of saving and restoring the FPU context.
- JP 2006-302261 International Publication No. 2005/096168 JP 2003-271399 A JP 2008-123045 A JP 2004-246862 A
- a processor device includes a plurality of processors that execute a plurality of programs while switching, and one or more processors that have a register that holds data and supplement the instruction execution of the plurality of processors.
- a memory that stores extended context data that is a copy of register data in the hardware resource for each program including a hardware resource and a predetermined instruction that uses the hardware resource among the plurality of programs; and the hardware There is a possibility that the extended context data of the program currently being executed may be held in the hardware resource, and a control unit that controls saving and returning of extended context data between the resource and the memory
- a first determination unit for determining whether or not the extended context data in the hardware resource A second determination unit that determines whether or not the processor belongs to a processor that has attempted to execute the predetermined instruction, the first determination unit determines that the possibility exists, and an extension in the hardware resource When the second determination unit determines that the context data belongs to the processor that has attempted to execute the predetermined instruction, the hardware resource does not perform the saving and restoring of
- each hardware resource can be shared by a plurality of processors.
- any hardware resource can be used by any processor. Therefore, the use efficiency of hardware resources can be improved. Since it is not necessary to provide hardware resources for each processor, it is sufficient to provide the minimum necessary number of hardware resources according to the required processing performance, and the circuit scale can be reduced or optimized.
- control unit saves the extended context data from the hardware resource to the memory according to the determination results of the first determination unit and the second determination unit, and the context belonging to the same processor as the saved extended context data
- a second transfer unit that restores the extended context data belonging to.
- the hardware resource may be an extended arithmetic unit that executes an extended instruction that cannot be executed by the plurality of processors, and the predetermined instruction may be the extended instruction.
- an extended arithmetic unit such as an FPU or a hardware accelerator can be efficiently shared by a plurality of processors, and saving and restoring of extended context data can be minimized.
- the first determination unit includes a data determination unit provided in each of the plurality of processors, and each data determination unit attempts to execute the predetermined instruction in the program by the processor corresponding to the data determination unit.
- the second determination unit A processor determination unit provided in each of the plurality of processors, wherein each of the processor determination units determines whether or not the extended context data in the hardware resource belongs to a processor that has attempted to execute the predetermined instruction. May be.
- the hardware resource holds the extended context data of the currently executing program (that is, the program that issued the predetermined instruction). Can use hardware resources without affecting other processors.
- each of the plurality of processors has a status register, and a copy of the data of each status register is included in the context data for each program.
- Each status register is currently being executed for each hardware resource.
- First state information indicating whether or not there is a possibility that the extended context data of the program is held in the hardware resource, and the extended context held in the hardware resource for each hardware resource.
- Second state information indicating a processor corresponding to data, and each data determination unit determines whether the first state information is true or false when the corresponding processor attempts to execute the predetermined instruction in the program.
- Each processor determination unit including a first determination circuit that generates a first exception interrupt signal when it is determined to be false.
- the hardware resource determines that the second determination circuit matches, the hardware resource operates immediately according to the predetermined instruction without waiting for the saving and restoring of the extended context data You may do that.
- the data determination unit and the processor determination unit are configured by hardware (first determination circuit and second determination circuit), a program in which hardware resources are currently being executed (that is, a program that has issued a predetermined instruction) If the extended context data is held, hardware resources can be used at high speed without affecting other processors.
- the first transfer unit includes a save / restore unit provided for each processor, and each save / restore unit extends from the hardware resource to the memory when the first exception interrupt signal is generated. Saving the data, returning the extended context data of the processor that has attempted to execute the predetermined instruction from the memory to the hardware resource, the plurality of processors including a first processor and a second processor; The first processor executes a first operating system to execute a plurality of programs by time division multiplexing, and the second processor executes a second operating system different from the first operating system.
- a plurality of programs are executed by time division multiplexing, and the program in the first processor
- the evacuation / recovery unit is activated by the first operating system when the first determination circuit in the first processor generates the first exception interrupt signal, and the evacuation / recovery unit in the second processor.
- the unit may be activated by a second operating system when the first determination circuit in the second processor generates the first exception interrupt signal.
- hardware resources can be shared between processors that execute different operating systems (hereinafter abbreviated as OS).
- OS operating systems
- the extended context data can be switched efficiently in the OS without affecting other OSs.
- At least one of the plurality of processors executes a third operating system that manages the first operating system and the second operating system
- the second transfer unit is any one of When the second determination circuit generates the second exception interrupt signal, it may be activated by a third operating system.
- hardware resources can be shared between processors that execute different operating systems (hereinafter abbreviated as OS).
- OS operating systems
- the extended context data is switched under the management of the third OS.
- the switching of the extended context data is concealed for the program on any processor, so that the conventional program can be easily used.
- the third operating system when any one of the second determination circuits generates the second exception interrupt signal, the third operating system, when the hardware resource is executing a predetermined instruction of another processor, The second transfer unit may be activated after waiting for the hardware resource to be released and securing the hardware resource.
- the second transfer unit executes the predetermined instruction from the memory to the hardware resource from the start of the operation of saving the extended context data corresponding to the other processor from the hardware resource to the memory. Up to the improvement of the operation for restoring the extended context data of the processor may be performed atomically.
- each processor may further include a clear circuit that clears the second state information corresponding to the processor when the processor transitions to a stopped state, a waiting state, or a sleep state.
- the hardware resources used by the processor can be released by the clear circuit and are shared by a plurality of processors. Improve the efficiency of using hardware resources.
- each state register holds third state information indicating whether or not to lock the second state information, and the third operating system indicates that the third state information locks the second state information.
- clearing clearing of the second state information by the clear circuit may be prohibited.
- the programmer sets the third state information to “locked” when the processor that uses the hardware resource is fixed or when the processor uses the hardware resource with priority.
- the hardware resources can be kept occupied by the processor, and wasteful expansion context data can be saved and restored.
- the processor device of the present invention includes a multi-thread processor including a plurality of virtual processors that switch a plurality of programs by simultaneously executing a plurality of threads, and a register that holds data.
- a multi-thread processor including a plurality of virtual processors that switch a plurality of programs by simultaneously executing a plurality of threads, and a register that holds data.
- extended context data For each program including one or more hardware resources that complement execution and a predetermined instruction that uses the hardware resources among the plurality of programs, extended context data that is a copy of register data in the hardware resources
- a second determination unit that determines whether or not the extended context data in the hardware resource belongs to a processor that has attempted to execute the predetermined instruction. If there is the possibility, the first determination unit And when the second determination unit determines that the extended context data in the hardware resource belongs to the processor that has attempted to execute the predetermined instruction, the control unit saves the extended context data and The hardware resource may be configured to execute the predetermined instruction without performing restoration.
- This configuration has the same effect as described above.
- control unit saves the extended context data from the hardware resource to the memory according to the determination results of the first determination unit and the second determination unit, and the context belonging to the same processor as the saved extended context data
- a first transfer unit that restores data, and a processor different from the saved extended context data that saves the extended context data from the hardware resource to the memory according to the determination results of the first determination unit and the second determination unit It is good also as a structure provided with the 2nd transfer part which resets the extended context data which belong to.
- each of the plurality of virtual processors corresponds to at least one thread
- the multi-thread processor is decoded by a plurality of instruction preparation units that fetch and decode instructions of a thread, and the plurality of instruction preparation units.
- An execution unit that simultaneously executes one or more instructions corresponding to one or more threads, and a status register provided for each instruction preparation unit, wherein the control unit is provided for each instruction preparation unit.
- Each status register is an extension of the currently executing virtual processor for each hardware resource.
- Second state information indicating a virtual processor to be executed
- the multi-thread processor further includes an instruction preparation unit in which the thread has been replaced when the virtual processor being executed is no longer being executed due to the thread replacement. It is good also as a structure provided with the clear circuit which clears the 2nd status information of a status register.
- the first determination unit includes a data determination unit provided in each of the plurality of instruction preparation units, and each of the data determination units attempts to execute the predetermined instruction by a thread of the corresponding instruction preparation unit.
- the second determination unit includes a processor determination unit provided in each of the plurality of instruction preparation units, and each of the processor determination units determines that the data determination unit in the corresponding instruction preparation unit is false Determining whether or not the corresponding virtual processor of the instruction preparation unit and the virtual processor indicated by the second state information match, and generating a second exception interrupt signal when determined to be false
- the multi-thread processor further executes a second exception interrupt process activated by a second exception interrupt signal from the processor determination unit as a function of an operating system, and the operating system includes the hardware
- the operating system belongs to an instruction preparation unit other than an instruction preparation unit to which the virtual processor that generated the second exception interrupt signal belongs.
- the state register in the instruction preparation unit that has generated the second exception interrupt signal has first state information indicating true; Second state information indicating the virtual processor that generated the exception interrupt signal of
- the wait process is executed. It is good also as a structure.
- hardware resources for example, an extended arithmetic unit such as an FPU or a hardware accelerator
- any hardware resource can be used by any processor. Therefore, the use efficiency of hardware resources can be improved. Since it is not necessary to provide hardware resources for each processor, it is sufficient to provide the minimum necessary number of hardware resources according to the required processing performance, and the circuit scale can be reduced or optimized.
- FIG. 1 is a block diagram illustrating a configuration of a processor device according to the first embodiment.
- FIG. 2 is a diagram illustrating an example of first to third state information in the state register unit according to the first embodiment.
- FIG. 3 is an explanatory diagram of an operating system in the processor device according to the first embodiment.
- FIG. 4 is a flowchart illustrating the hardware resource switching operation according to the first embodiment.
- FIG. 5 is a diagram illustrating an example of data managed by the third OS according to the first embodiment.
- FIG. 6 is a detailed flowchart showing the hardware resource switching operation in the first embodiment.
- FIG. 7 is a block diagram illustrating a configuration of a processor system according to the second embodiment.
- FIG. 8 is a block diagram illustrating a configuration of a processor block according to the second embodiment.
- FIG. 1 is a block diagram illustrating a configuration of a processor device according to the first embodiment.
- FIG. 2 is a diagram illustrating an example of first to third state information in the state register unit
- FIG. 9 is a diagram illustrating a configuration of a context according to the second embodiment.
- FIG. 10 is a diagram illustrating management of the logical address space according to the second embodiment.
- FIG. 11 is a diagram illustrating a configuration of an address management table according to the second embodiment.
- FIG. 12 is a diagram illustrating a correspondence relationship of logical addresses in the second embodiment.
- FIG. 13 is a diagram illustrating a configuration of an entry designation register according to the second embodiment.
- FIG. 14 is a diagram showing entry allocation processing by the TLB according to the second embodiment.
- FIG. 15 is a flowchart showing a flow of processing by the TLB according to the second embodiment.
- FIG. 16 is a diagram illustrating a configuration of a physical protection register according to the second embodiment.
- FIG. 17 is a diagram illustrating a physical address space protected by PVID in the second embodiment.
- FIG. 18 is a diagram illustrating a configuration of a protection violation register according to the second embodiment.
- FIG. 19 is a diagram illustrating a configuration of an error address register according to the second embodiment.
- FIG. 20 is a diagram illustrating a configuration of an FPU allocation register according to the second embodiment.
- FIG. 21 is a diagram illustrating FPU allocation processing by the FPU allocation unit according to the second embodiment.
- FIG. 22A is a diagram illustrating a configuration of a way designation register according to the second embodiment.
- FIG. 22B is a diagram illustrating a configuration of a way designation register according to the second embodiment.
- FIG. 23 is a diagram schematically illustrating way allocation processing by the cache memory according to the second embodiment.
- FIG. 24 is a flowchart showing a flow of processing by the cache memory according to the second embodiment.
- FIG. 25 is a diagram illustrating a configuration of an interrupt control register according to the second embodiment.
- FIG. 26 is a diagram illustrating memory access management in the processor system according to the second embodiment.
- FIG. 27 is a diagram showing bus bandwidth allocation by the memory IF block according to the second embodiment.
- FIG. 28 is a flowchart showing the flow of resource division processing in the processor system according to the second embodiment.
- the processor device is a processor device that shares hardware resources among a plurality of processors, and whether or not extended context data of any program currently being executed is held in a register in the hardware resources.
- a first determination unit that determines whether the extended context data in the hardware resource corresponds to which processor, and saving and restoring extended context data between programs in the processor
- a second transfer unit that saves and restores extended context data between programs between processors.
- FIG. 1 is a block diagram showing a configuration of a processor device according to the first embodiment of the present invention.
- the processor device includes instruction preparation units 210, 220 and 230, an execution pipeline unit 240, a control unit 250, hardware resources 260 and 270, and memories 310, 320 and 330.
- the instruction preparation units 210, 220, and 230 and the execution pipeline unit 240 constitute a multi-thread processor.
- the instruction preparation units 210, 220, and 230 each independently fetch and decode an instruction from a thread (program) and issue a decoding result to the execution pipeline unit 240.
- the execution pipeline unit 240 includes a plurality of functional units (ALU, load / store unit, branch processing unit, multiplier, divider, etc.), and executes an executable instruction among a plurality of instruction decoding results. Run at the same time.
- a set of one instruction preparation unit and execution pipeline unit 240 substantially functions as one processor, and is called a virtual processor or a logical processor. That is, the instruction preparation units 210, 220, 230 and the execution pipeline unit 240 correspond to the three virtual processors 0-2. Each virtual processor executes while switching programs.
- a plurality of physical processors that operate independently may be provided.
- processors 0 to 2 when it is not necessary to particularly distinguish the three virtual processors 0 to 2 (logical processors) and the three physical processors, they are simply referred to as processors 0 to 2.
- the memories 310, 320 and 330 have an address space corresponding to three processors.
- the memory 310 stores a program, normal context data 311 of the program, extended context data 312 of hardware resources, and the like. The same applies to the memories 320 and 330.
- the three memories 310, 320, and 330 have one physical address space and three independent virtual address spaces.
- the three memories 310, 320, and 330 may have three independent physical address spaces.
- the context data 311, 321 and 331 may be stored in another memory dedicated to context data.
- the instruction preparation unit 210 includes an instruction fetch unit 211 that fetches an instruction from the memory 310, an instruction decoding unit 212 that decodes the fetched instruction, a status register unit 213, a register unit 214, a first determination unit 215, A second determination unit 216.
- the instruction preparation unit 220 includes an instruction fetch unit 221 that fetches an instruction from the memory 320, an instruction decoding unit 222 that decodes the fetched instruction, a status register unit 223, a register unit 224, a first determination unit 225, A second determination unit 226.
- the instruction preparation unit 230 includes an instruction fetch unit 231 that fetches an instruction from the memory 330, an instruction decoding unit 232 that decodes the fetched instruction, a status register unit 233, a register unit 234, a first determination unit 235, A second determination unit 236.
- Each data of the status register unit 213 and the register unit 214 constitutes context data of the program being executed. The same applies to the status register unit 223 and the register unit 224. The same applies to the status register unit 233 and the register unit 234.
- the control unit 250 includes a first transfer unit 251 and a second transfer unit 252, and controls saving and restoration of extended context data between the hardware resources 260 and 270 and the memories 310, 320, and 330.
- Hardware resources 260 and 270 each have register groups 261 and 271 that hold data, and complement a plurality of processors.
- Each hardware resource may be, for example, an FPU (Floating Point Unit: Floating Point Number number processing unit), a hardware accelerator, an extended arithmetic unit, or the like.
- the FPU executes floating point arithmetic instructions (hereinafter referred to as FPU instructions) in the program.
- the hardware accelerator receives a command from the processor and executes product-sum operation, butterfly operation, quantization of block data, inverse quantization, or the like on specified data at high speed.
- the extended arithmetic unit executes an extended instruction (multiplication instruction, division instruction, instruction dedicated to the extended arithmetic unit, etc.) that cannot be directly executed by the processor.
- Each of the register groups 261 and 271 holds a context of a corresponding hardware resource (hereinafter referred to as extended context data).
- Each hardware resource is shared by a plurality of processors.
- the extended context data is performed asynchronously with saving and returning of the context data of the program in each processor. That is, the processor executes a predetermined instruction (the FPU instruction, the command, and the extended instruction) that uses hardware resources, and is saved and restored only when the extended context data is required.
- the memory 310 stores register data in the hardware resource for each program including context data 311 of each program time-division multiplexed by a plurality of processors and a predetermined instruction using the hardware resource among the plurality of programs.
- the extended context data 312 that is a copy of is stored.
- the memory 320 stores context data 321 and extended context data 322.
- the memory 330 stores context data 331 and extended context data 332.
- the first determination unit 215 determines whether or not the extended context data of the currently executing program is held in the register in the hardware resource. Determine whether.
- the second determination unit 216 determines whether or not the extended context data in the hardware resource belongs to a processor that intends to execute the predetermined instruction.
- the first transfer unit 251 saves the extended context data from the hardware resource to any of the memories 310, 320, and 330 according to the determination results of the first determination unit 215 and the second determination unit 216, and saves the extended context Restore context data belonging to the same processor (or the same memory) as the data. After returning, the hardware resource 260 or 270 executes the predetermined instruction.
- the second transfer unit 252 saves the extended context data from the hardware resource to any of the memories 310, 320, and 330 according to the determination results of the first determination unit 215 and the second determination unit 216, and saves the extended context Restore context data belonging to a different processor (or different memory) than the data. After returning, the hardware resource 260 or 270 executes the predetermined instruction.
- the hardware resource 260 or 270 is determined by the first determination unit 215 that the extended context data of the currently executing program is held in the register in the hardware resource, and the extended context data in the hardware resource is If the second determination unit 216 determines that the predetermined instruction belongs to the processor that is to execute the predetermined instruction, the predetermined instruction is immediately executed without waiting for the extension context data to be saved and restored.
- each hardware resource 260 or 270 can be shared by a plurality of processors.
- any hardware resource can be used by any processor. Therefore, the use efficiency of hardware resources can be improved. Further, since it is not necessary to provide hardware resources for each processor, it is sufficient to provide the minimum necessary number of hardware resources according to the required processing performance, and the circuit scale can be reduced or optimized.
- FIG. 2 is a diagram showing an example of the first to third state information in the state register unit in the first embodiment of the present invention.
- the status register unit 213 includes a register called PSR (Processor Status Register) and a register called LPFOSR (Logical Processor FPU Operation Status Register).
- PSR Processor Status Register
- LPFOSR Logical Processor FPU Operation Status Register
- the LPFOSR is included in the program context data 311 or not included in the program context data 311 and is managed separately by the OS.
- the PSR includes an FE (FPU Enable) bit as first state information indicating that there is a possibility that extended context data of the currently executing program is held in the hardware resource.
- FE FPU Enable
- LPFOSR includes LPFE0 (Logical Processor Processor FPU Enable 0) and LPFE1 bit as the second state information indicating the processor corresponding to the extended context data held in the hardware resource.
- the LPFE0 and LPFE1 bits are exclusively “1” or only “0” for any one bit.
- the LPFE0 bit corresponds to processor 0, and the LPFE1 bit corresponds to processors 1 and 2.
- the LPFOSR further includes third state information (FL bit) indicating whether or not the second state information is locked.
- the FE bit of the PSR of the program being executed indicates that there is a possibility that the extended context data is held in the hardware resource, and the processor executing the program is further notified by the hardware resource. If it is indicated by LPFE0 or LPFE1 that it corresponds to the extended context data held in the processor, the processor uses either hardware resource indicated by LPFE0 or LPFE1. It becomes possible to use.
- the first determination unit 215 determines whether the first state information is true or false when the corresponding processor tries to execute the predetermined instruction in the program. When it is determined to be false, the first exception interrupt A first determination circuit (data determination unit) that generates a signal is included.
- the second determination unit 216 determines whether the corresponding processor and the processor indicated by the second state information match, and is false.
- a second determination circuit (processor determination unit) that generates a second exception interrupt signal when determined.
- the first and second determination circuits are configured by hardware. This speeds up the processing especially when it is not necessary to replace the extended context data.
- FIG. 3 is an explanatory diagram of the operating system in the processor device according to the first embodiment of the present invention.
- processors 0 to 2 correspond to the three virtual processors or three physical processors shown in FIG.
- the processor 0 executes a plurality of programs by time division multiplexing by executing a first operating system (hereinafter abbreviated as OS).
- OS first operating system
- Processors 1 and 2 execute a plurality of programs by time division multiplexing by executing a second OS different from the first OS.
- the first OS is, for example, Linux
- the second OS is, for example, a real-time OS.
- the first transfer unit 251 includes save / return units 251a, 251b, and 251c provided for each processor.
- Each save / restore unit saves the extended context data from the hardware resource to the memory when the first exception interrupt signal is generated, and executes the predetermined instruction from the memory to the hardware resource.
- the extended context data is restored, and the save / restore unit 251a in the processor 0 is activated by the first OS when the first determination unit 215 in the processor 0 generates the first exception interrupt signal.
- the save / restore units 251b and 251c of the processors 1 and 2 are activated by the second OS when the first determination units 225 and 235 of the processors 1 and 2 generate the first exception interrupt signal.
- At least one of the processors 0 to 2 controls the second transfer unit 252 by executing a third OS that manages the first OS and the second OS. That is, the second transfer unit 252 is activated by the third operating system when any of the second determination units generates the second exception interrupt signal.
- the activated second transfer unit 252 starts the operation to save the extended context data belonging to another processor in any of the memories 310, 320, and 330 from the hardware resource, and then starts the operation from the memory to the hardware resource. Perform atomically until the completion of the operation to restore the extended context data of the processor that attempted to execute the instruction.
- the third OS controls the clear unit 253.
- the clear unit 253 is a general term for clear circuits provided for each processor.
- Each clear circuit clears the second state information (LPFE0 and LPFE1 bits) corresponding to the processor when the processor corresponding to the clear circuit transitions to a stop state, a wait state, or a sleep state.
- the hardware resources used by the processor can be released, and the use efficiency of the hardware resources shared by the plurality of processors is improved.
- the programmer sets the third state information to “locked”, so that the hardware It is possible to keep the hardware resource occupied by the processor, and it is possible to reduce unnecessary saving and restoring of extended context data.
- FIG. 4 is a flowchart showing an outline of the hardware resource switching operation in the first embodiment of the present invention.
- the operation in any one of the processors 0 to 2 is shown.
- this figure represents the operation of the processor 0, and the hardware resource is assumed to be the FPU.
- the FPU register cannot be used
- LP context switching is performed by the first transfer unit 251.
- the FPU instruction is immediately executed by the FPU (S34).
- S30, S31, and S32 are performed by hardware in the processor.
- S34 is executed by the FPU.
- S36 is performed by the first transfer unit 251 under the control of the first OS.
- S41 is performed by the second transfer unit 252 under the control of the first OS.
- FIG. 5 is a diagram illustrating an example of data managed by the third OS according to the first embodiment of this invention.
- the table T1 in the figure is a table in which processor IDs (here, LPID) are associated with hardware resources to be used (here, FPU0 and FPU1).
- the table T2 is a table in which an FPU number, a processor ID (LPID) that currently occupies the FPU, and a lock attribute (FL bit) are associated with each other.
- the third OS always updates the tables T1 and T2 to the latest state, and manages the FPU in software.
- the third OS refers to such a table, and uses (1) association of FPUs 0 and 1 with LPID (selection of FPU to be newly assigned to LP), (2) using current FPUs 0 and 1. (3) The lock attribute of the LP that currently uses FPUn is managed.
- the third OS manages which FPUn each LP plans to use (manages FPUn scheduled to be used by each LP by software), and the LPFOSR shown in FIG. Which bits of LPFE0 and LPFE1 are set. That is, it is possible to manage which FPUn context is used in each LP.
- the third OS manages the LPID that is currently using FPU0, 1, thereby managing which processor is using the current FPU0, 1 and is about to use it. Manage context return / evacuation as an atomic operation.
- the third OS can perform LP lock management using FPUn by software, and manage FPUn lock attributes by software. As a result, the own LP can lock the occupancy state of the FPU or can be detached from other LPs.
- FIG. 6 is a detailed flowchart showing the hardware resource switching operation in the first embodiment of the present invention.
- the steps executed by the hardware of the processor, the steps executed by the first OS or the second OS, and the steps executed by the third OS are separated.
- the operation in any one of the processors 0 to 3 is shown.
- this figure represents the operation of the processor 0, and the hardware resource is assumed to be the FPU.
- the first determination unit 215 uses the FE bit (first state information) in the PSR. ) Is true or false to determine whether or not the FPU register is unusable (S31), and the second determination unit 216 further includes LPFE0, 1 bit (second state information) Which bit is true is determined (S32).
- the third OS shown in FIG. 3 executes the second exception interrupt process started by each second exception interrupt signal from the second determination unit 216, 226, 236 as a part of the operating system function. To do.
- the third OS includes the hardware resource acquisition process, the hardware resource release wait process, and the like in order to support the second exception interrupt process.
- the third OS when the hardware resource is not in use in a virtual processor belonging to an instruction preparation unit other than the instruction preparation unit to which the virtual processor that has generated the second exception interrupt signal is used (case 1) )
- the first status information indicating true In the status register in the instruction preparation unit that has generated the second exception interrupt signal, the first status information indicating true and the second status information indicating the processor that has generated the second exception interrupt signal.
- the first state information indicating true indicates that the extended context data of the currently executing program may be held in the hardware resource.
- Case 1 is when it is determined in step S38b that the right to use FPU0 has been secured.
- the third OS may include a management object such as MUTEX for exclusive control of the resource, and this management object may be used.
- each hardware resource can be shared by a plurality of processors.
- any hardware resource can be used by any processor. Therefore, the use efficiency of hardware resources can be improved. Since it is not necessary to provide hardware resources for each processor, it is sufficient to provide the minimum necessary number of hardware resources according to the required processing performance, and the circuit scale can be reduced or optimized.
- An extended arithmetic unit such as an FPU or a hardware accelerator can be efficiently shared by a plurality of processors, and extension context data can be saved and restored to a minimum.
- the processor system according to the present embodiment includes a single processor block that shares resources and performs host processing and media processing.
- the processor block has the same function as that of the processor device of the first embodiment, and is further performed by a single processor device that shares resources and performs host processing and media processing.
- the processor system according to the embodiment of the present invention provides different tag information to the host processing thread and the media processing thread, and divides resources of the processor system in association with the tag information. As a result, the processor system according to the embodiment of the present invention can improve the area efficiency and improve the performance guarantee and robustness.
- FIG. 7 is a functional block diagram showing a basic configuration of the processor system 10 according to the second embodiment.
- the processor system 10 is a system LSI that performs various signal processing related to the video / audio stream, and executes a plurality of threads using the external memory 15.
- the processor system 10 is mounted on a digital television system, a DVD recorder, a digital camera, a mobile phone, and the like.
- the processor system 10 includes a processor block 11, a stream I / O block 12, an AVIO (Audio Visual Input Output) block 13, and a memory IF block 14.
- the processor block 11 is the same as the processor device described in the first embodiment. Hereinafter, the description of the same points will be omitted, and different points will be mainly described.
- the processor block 11 is a processor that controls the entire processor system 10.
- the processor block 11 controls the stream I / O block 12, the AVIO block 13, and the memory IF block 14 through the control bus 16, and the data bus 17 and the memory IF block. 14 to access the external memory 15.
- the processor block 11 reads the image / audio data such as the compressed image / audio stream from the external memory 15 via the data bus 17 and the memory IF block 14, performs media processing such as compression or decompression, and then performs the data bus again. 17 and a circuit block for storing processed image data and audio data in the external memory 15 via the memory IF block 14.
- the processor block 11 performs host processing that is non-real-time general-purpose (control-related) processing that does not depend on the video / audio output cycle (frame rate, etc.) and real-time general-purpose (media-related) that depends on the video / audio output cycle. And media processing that is processing).
- the host processing controls the digital television system, and the media processing decompresses digital video.
- the stream I / O block 12 reads stream data such as a compressed video / audio stream from storage devices and peripheral devices such as a network under the control of the processor block 11, and external memory via the data bus 18 and the memory IF block 14.
- 15 is a circuit block that stores data in the memory 15 and performs stream transfer in the opposite direction. In this way, the stream I / O block 12 performs non-real-time IO processing that does not depend on the video / audio output cycle.
- the AVIO block 13 reads image data, audio data, and the like from the external memory 15 through the data bus 19 and the memory IF block 14 under the control of the processor block 11, performs various graphic processing, etc. It is a circuit block that outputs an audio signal to an external display device, a speaker, or the like, or transfers data in the opposite direction. In this way, the AVIO block 13 performs real-time IO processing depending on the video / audio output cycle.
- the memory IF block 14 requests data in parallel between the processor block 11, the stream I / O block 12, the AVIO block 13, and the memory IF block 14 and the external memory 15.
- the circuit block is controlled as follows.
- the memory IF block 14 secures a transfer band between the processor block 11, the stream I / O block 12, the AVIO block 13, and the memory IF block 14 and the external memory 15 in response to a request from the processor block 11. And guarantee the latency.
- FIG. 8 is a functional block diagram showing the configuration of the processor block 11.
- the processor block 11 includes an execution unit 101, a VMPC (virtual multiprocessor control unit) 102, a TLB (Translation Lookaside Buffer) 104, a physical address management unit 105, and an FPU (Floating Point number processing Unit: floating point arithmetic unit). ) 107, FPU allocation unit 108, cache memory 109, BCU 110, and interrupt control unit 111.
- VMPC virtual multiprocessor control unit
- TLB Translation Lookaside Buffer
- FPU Floating Point number processing Unit: floating point arithmetic unit
- the processor block 11 functions as a virtual multiprocessor (VMP: Virtual Multi Processor).
- VMP Virtual Multi Processor
- the virtual multiprocessor is generally a kind of instruction parallel processor that performs the functions of a plurality of logical processors (LPs) in a time division manner.
- one LP practically corresponds to one context set in a register group of a physical processor (PP).
- PP physical processor
- TS Time Slot
- TS Time Slot
- the processor block 11 functions as a multi-thread pipeline processor (multi-thread processor).
- the multi-thread pipeline processor can improve the processing efficiency by processing a plurality of threads at the same time and further processing the plurality of threads so as to fill a space in the execution pipeline.
- Patent Document 4 a typical example of the configuration and operation of the multi-thread pipeline processor is disclosed in detail in Japanese Patent Application Laid-Open No. 2008-123045 (Patent Document 4), and detailed description thereof is omitted here.
- the execution unit 101 executes a plurality of threads simultaneously.
- the execution unit 101 includes a plurality of physical processors 121, a calculation control unit 122, and a calculation unit 123.
- Each of the plurality of physical processors 121 includes a register. Each of these registers holds one or more contexts 124.
- the context 124 corresponds to each of a plurality of threads (LP) and is control information and data information necessary for executing the corresponding thread.
- Each physical processor 121 fetches and decodes an instruction in a thread (program), and issues a decoding result to the arithmetic control unit 122.
- the computing unit 123 includes a plurality of computing units and executes a plurality of threads simultaneously.
- the operation control unit 122 performs pipeline control in the multi-thread pipeline processor. Specifically, the arithmetic control unit 122 allocates a plurality of threads to the arithmetic unit included in the arithmetic unit 123 so as to fill a space in the execution pipeline, and then executes the thread.
- the VMPC 102 controls virtual multithread processing.
- the VMPC 102 includes a scheduler 126, a context memory 127, and a context control unit 128.
- the scheduler 126 is a hardware scheduler that performs scheduling for determining the execution order of the plurality of threads and the PP for executing the threads according to the priority of the plurality of threads. Specifically, the scheduler 126 switches threads executed by the execution unit 101 by assigning or unassigning LPs to PPs.
- the context memory 127 stores a plurality of contexts 124 respectively corresponding to a plurality of LPs. Note that the registers included in the context memory 127 or the plurality of physical processors 121 correspond to holding means of the present invention.
- the context control unit 128 performs so-called context restoration and saving. Specifically, the context control unit 128 writes the context 124 held by the physical processor 121 that has been executed into the context memory 127. The context control unit 128 reads the context 124 of the thread to be executed from the context memory 127 and transfers the read context 124 to the physical processor 121 to which the LP corresponding to the thread is assigned.
- FIG. 9 is a diagram showing the configuration of one context 124. Note that FIG. 9 does not show normal control information and normal data information necessary for executing a thread, and shows only information newly added to the context 124.
- the context 124 includes a TVID (TLB access virtual identifier) 140, a PVID (physical memory protection virtual identifier) 141, and an MVID (memory access virtual identifier) 142.
- TVID TLB access virtual identifier
- PVID physical memory protection virtual identifier
- MVID memory access virtual identifier
- the TVID 140, PVID 141, and MVID 142 are tag information indicating whether each of a plurality of threads (LP) is a thread belonging to a host process or a thread belonging to a media process.
- TVID 140 is used to set a plurality of virtual memory protection groups. For example, different TVIDs 140 are assigned to the host processing thread and the media processing thread, respectively.
- the execution unit 101 can independently create page management information for the logical address space using the TVID 140.
- PVID 141 is used to restrict access to the physical memory area.
- MVID 142 is used for setting an access form to the memory IF block 14.
- the memory IF block 14 uses this MVID 142 to determine whether to give priority to latency (response-oriented) or to give priority to bus bandwidth (performance guarantee).
- FIG. 10 is a diagram schematically showing management of the logical address space in the processor system 10. As shown in FIG. 10, the processor system 10 is controlled by three layers of a user level, a supervisor level, and a virtual monitor level.
- the user level is a hierarchy that performs control for each thread (LP).
- the supervisor level is a hierarchy corresponding to an operating system (OS) that controls a plurality of threads.
- OS operating system
- the supervisor level includes a Linux kernel that is a host processing OS and a system manager that is a media processing OS.
- the virtual monitor level is a hierarchy that controls a plurality of supervisor level OSs.
- the logical address space using the TVID 140 is distinguished by a virtual monitor level OS (monitor program). That is, the processor system 10 manages the logical address space so that the logical address spaces used by a plurality of OSs do not interfere with each other.
- the TVID 140, PVID 141, and MVID 142 of each context can be set only at this virtual monitor level.
- the virtual monitor level OS divides the plurality of resources of the processor system 10 into a first resource associated with a thread belonging to host processing and a second resource associated with a thread belonging to media processing. It is.
- the resources are a memory area (logical address space and physical address space) of the external memory 15, a memory area of the cache memory 109, a memory area of the TLB 104, and the FPU 107.
- the designer can design an OS for host processing and media processing in the same manner as when host processing and media processing are executed by independent processors. .
- the TLB 104 is a kind of cache memory, and holds an address conversion table 130 that is a part of a page table indicating a correspondence relationship between a logical address and a physical address.
- the TLB 104 converts between a logical address and a physical address using the address conversion table 130.
- FIG. 11 is a diagram showing the configuration of the address conversion table 130.
- the address conversion table 130 includes a plurality of entries 150.
- Each entry 150 includes a TLB tag unit 151 for identifying a logical address, and a TLB data unit 152 associated with the TLB tag unit 151.
- the TLB tag unit 151 includes a VPN 153, a TVID 140, and a PID 154.
- the TLB data unit 152 includes a PPN 155 and an Attribute 156.
- VPN 153 is a user-level logical address, specifically a page number in the logical address space.
- PID 154 is an ID for identifying a process using the data.
- PPN 155 is a physical address associated with the TLB tag unit 151, and specifically, a page number in the physical address space.
- Attribute 156 indicates an attribute of data associated with the TLB tag unit 151. Specifically, Attribute 156 indicates whether the data can be accessed, whether the data is stored in the cache memory 109, whether the data is privileged, and the like.
- the TLB 104 manages a logical address space used by a plurality of threads (LP).
- FIG. 12 is a diagram schematically showing the correspondence relationship of the logical addresses in the processor system 10.
- the TLB 104 associates one physical address (PPN 155) with a set of a logical address (VPN 153), a PID 154, and a TV ID 140 for each process.
- PPN 155 physical address
- VPN 153 logical address
- PID 154 PID 154
- TV ID 140 TV ID 140
- the supervisor level on the LP having the same TVID by associating one physical address with a set of logical address (VPN 153) and PID 154 for each process, the logical level of each process is set at the supervisor level.
- the logical address can be associated with the physical address after distinguishing the addresses.
- the TVID of the entry to be updated is set to the TVID set in the LP to be updated.
- the TLB 104 associates one physical address (PPN155) with a set obtained by adding the TVID 140 to the logical address (VPN 153) and the PID 154 for each process. Accordingly, the TLB 104 can provide independent logical address spaces by setting different TVIDs for the host process and the media process at the virtual monitor level.
- the TLB 104 includes an entry designation register 135.
- the entry designation register 135 holds information for designating an entry 150 to be assigned to the TVID 140.
- FIG. 13 is a diagram illustrating an example of data stored in the entry designation register 135. As illustrated in FIG. 13, the entry designation register 135 holds a correspondence relationship between the TVID 140 and the entry 150. The entry designation register 135 is set and updated by a virtual monitor level OS (monitor program).
- OS monitor level OS
- the TLB 104 determines the entry 150 to be used for each TVID 140 using the information set in the entry designation register 135. Specifically, when the TLB miss (the logical address (TLB tag unit 151) input from the LP does not hold in the address translation table 130), the TLB 104 replaces the data of the entry 150 corresponding to the TVID 140 of the LP. To do.
- TLB miss the logical address (TLB tag unit 151) input from the LP does not hold in the address translation table 130
- the TLB 104 replaces the data of the entry 150 corresponding to the TVID 140 of the LP. To do.
- FIG. 14 is a diagram schematically showing the allocation state of the entry 150 in the TLB 104.
- a plurality of entries 150 are shared by a plurality of LPs. Further, the TLB 104 uses the TVID 140 to share the entry 150 between LPs having the same TVID 140. For example, entry 0 to entry 2 are assigned to LP0 having TVID0, and entry 3 to entry 7 are assigned to LP1 and LP2 having TVID1. As a result, the TLB 104 can use entry 0 to entry 2 for threads belonging to the host process and entry 3 to entry 7 for threads belonging to the media process.
- FIG. 15 is a flowchart showing the flow of processing by the TLB 104.
- the TLB 104 first stores the same logical address as the logical address (VPN 153, TVID 140, and PID 154) input from the access source LP. It is determined whether or not (S101).
- the TLB 104 updates the entry 150 assigned to the TVID 140 of the access source LP.
- the TLB 104 updates the TV ID 140 of the access source LP and the entry 150 of the same TV ID 140 (S102).
- the TLB 104 reads the correspondence relationship between the logical address and the physical address that missed the TLB from the page table stored in the external memory 15 or the like, and assigns the read correspondence relationship to the TVID 140 of the access source LP.
- the stored entry 150 is stored.
- the TLB 104 converts a logical address into a physical address using the updated correspondence relationship (S103).
- the TLB 104 uses the correspondence relationship in which the TLB hit is used to set the logical address. Conversion to a physical address (S103).
- the page table stored in the external memory 15 or the like is created in advance so that the physical address of the external memory 15 is assigned for each TVID 140 or PVID 141.
- This page table is created and updated by, for example, a supervisor level or virtual monitor level OS.
- the physical address management unit 105 uses the PVID 141 to protect access to the physical address space.
- the physical address management unit 105 includes a plurality of physical memory protection registers 131, a protection violation register 132, and an error address register 133.
- Each physical memory protection register 131 holds information indicating an LP that can access the physical address range for each physical address range.
- FIG. 16 is a diagram showing a configuration of information held in one physical memory protection register 131.
- the physical memory protection register 131 holds information including BASEADDR 161, PS 162, PN 163, PVID0WE to PVID3WE164, and PVID0RE to PVID3WE165.
- BaseADDR 161, PS 162, and PN 163 are information for specifying a physical address range. Specifically, BASEADDR 161 is the upper 16 bits of the head address of the designated physical address range. PS162 indicates the page size. For example, 1 KB, 64 KB, 1 MB, or 64 MB is set as the page size. PN163 indicates the number of pages with the page size set in PS162.
- PVID0WE to PVID3WE164 and PVID0RE to PVID3RE165 indicate the PVID 141 of LP that can be accessed in the physical address range specified by BASEADDR161, PS162, and PN163.
- PVID0WE to PVID3WE164 are provided with one bit for each PVID141.
- PVID0WE to PVID3WE164 indicate whether or not the LP to which the corresponding PVID 141 is assigned can write data in the designated physical address range.
- PVID0RE to PVID3RE165 are provided with 1 bit for each PVID141.
- PVID0RE to PVID3RE165 indicate whether or not the LP assigned with the corresponding PVID 141 can read data in the designated physical address range.
- PVID 141 four types are assigned to a plurality of LPs, but two or more types of PVID 141 may be assigned to a plurality of LPs.
- FIG. 17 is a diagram illustrating an example of a physical address space protected by the PVID 141.
- the physical address management unit 105 includes four physical memory protection registers 131 (PMG0PR to PMG3PR).
- PVID0 is assigned to the LP group for Linux (host processing)
- PVID1 is assigned to the LP group for image processing among the LPs for media processing
- PVID2 is assigned to the LP group for audio processing among the LPs for media processing.
- the PVID 3 is assigned to the LP group of the System Manager (OS for media processing).
- the physical address management unit 105 generates an exception interrupt when the LP accesses a physical address that is not permitted by the PVID 141 of the LP, and writes the access information in which an error has occurred in the protection violation register 132. In addition, the physical address of the access destination of the access that caused the error is written in the error address register 133.
- FIG. 18 is a diagram showing a configuration of access information held in the protection violation register 132.
- the access information held in the protection violation register 132 includes PVERR 167 and PVID 141.
- the PVERR 167 indicates whether or not the error is a physical memory space protection violation (an error when the LP accesses a physical address that is not permitted by the PVID 141 of the LP).
- PVID 141 is set to PVID 141 in which a physical memory space protection violation has occurred.
- FIG. 19 is a diagram showing a configuration of information held in the error address register 133.
- the error address register 133 holds the physical address (BEA [31: 0]) of the access destination of the access that caused the error.
- the robustness of the system can be improved by protecting the physical address using the PVID 141. Specifically, at the time of debugging, the designer can easily determine which one of the image processing and the sound processing has caused the error from the physical address or PVID in which the error has occurred. Further, when debugging host processing, it is possible to debug a malfunction occurring at an address where image processing or the like cannot be written without doubting the malfunction of the image processing.
- the FPU allocation unit 108 allocates a plurality of FPUs 107 to LPs.
- the FPU allocation unit 108 includes an FPU allocation register 137.
- FIG. 20 is a diagram illustrating an example of data stored in the FPU allocation register 137. As shown in FIG. 20, the FPU 107 is associated with the FPU allocation register 137 for each TVID 140. The FPU allocation register 137 is set and updated by an OS (monitor program) at the virtual monitor level.
- OS monitoring program
- FIG. 21 is a diagram schematically showing FPU 107 allocation processing by the FPU allocation unit 108.
- a plurality of FPUs 107 are shared by a plurality of LPs. Further, the FPU allocation unit 108 uses the TVID 140 to share the FPU 107 between LPs having the same TVID 140. For example, the FPU allocation unit 108 allocates FPU0 to LP0 having TVID0, and allocates FPU1 to LP1 and LP2 having TVID1.
- the LP executes a thread using the FPU 107 allocated by the FPU allocation unit 108.
- the cache memory 109 is a memory that temporarily stores data used in the processor block 11. Further, the cache memory 109 uses independent and different data areas (way 168) for LPs having different TVIDs 140.
- the cache memory 109 includes a way designation register 136.
- FIG. 22A and 22B are diagrams showing examples of data stored in the way designation register 136.
- FIG. 22A and 22B are diagrams showing examples of data stored in the way designation register 136.
- a way 168 is associated with the way designation register 136 for each TVID 140.
- the way designation register 136 is set and updated by an OS (monitor program) at the virtual monitor level.
- a way 168 may be associated with each LP.
- information on the way used by the LP is included in the context 124, and the virtual monitor level OS or the supervisor level OS refers to the context 124 and sets and updates the way designation register 136. To do.
- FIG. 23 is a diagram schematically showing the way 168 allocation processing by the cache memory 109.
- the cache memory 109 has a plurality of ways 168 (way 0 to way 7) as data storage units.
- the cache memory 109 uses the TVID 140 to share the way 168 between LPs having the same TVID 140.
- way0 to way1 are assigned to LP0 having TVID0
- ways2 to way7 are assigned to LP1 and LP2 having TVID1.
- the cache memory 109 caches thread data belonging to the host process in way0 to way1, and caches thread data belonging to the media process in way2 to way7.
- the cache memory 109 can prevent the cache data from being driven out from each other between LPs having different TVIDs 140.
- FIG. 24 is a flowchart showing the flow of processing by the cache memory 109.
- the cache memory 109 stores the same address as the address (physical address) input from the access source LP. Is determined (S111).
- the cache memory 109 caches the address and data input from the access source LP in the way 168 specified by the way specification register 136 (S112). ). Specifically, in the case of read access, the cache memory 109 reads data from the external memory 15 or the like, and stores the read data in the way 168 designated by the way designation register 136. In the case of write access, the cache memory 109 stores the data input from the access source LP in the way 168 specified by the way specification register 136.
- step S111 when the same address as the address input from the access source LP is stored in step S111, that is, in the case of a cache hit (No in S111), the cache memory 109 updates (writes) the cache hit data. (At the time of access) or output to the access source LP (at the time of read access) (S113).
- the BCU 110 controls data transfer between the processor block 11 and the memory IF block 14.
- the interrupt control unit 111 performs interrupt detection, request, and permission.
- the interrupt control unit 111 includes a plurality of interrupt control registers 134.
- the interrupt control unit 111 includes 128 interrupt control registers 134.
- the interrupt control unit 111 refers to the interrupt control register 134 and sends an interrupt to the thread (LP) corresponding to the interrupt factor of the generated interrupt.
- an interrupt destination thread corresponding to the interrupt factor is set.
- FIG. 25 is a diagram showing the configuration of one interrupt control register 134.
- the interrupt control register 134 shown in FIG. 25 outputs a system interrupt 171 (SYSINT), an LP identifier 172 (LPID), an LP interrupt 173 (LPINT), and an HW event 174 (HWEVT) associated with the interrupt factor. Including.
- SYSINT system interrupt 171
- LPID LP identifier 172
- LPINT LP interrupt 173
- HWEVT HW event 174
- the system interrupt 171 indicates whether or not the interrupt is a system interrupt (global interrupt).
- the LP identifier 172 indicates the LP of the interrupt destination.
- the LP interrupt 173 indicates whether the interrupt is an LP interrupt (local interrupt).
- the HW event 174 indicates whether a hardware event is generated due to the interrupt factor.
- the interrupt control unit 111 sends an interrupt to the LP that is currently executing the thread.
- the interrupt control unit 111 sends an interrupt to the LP indicated by the LP identifier 172.
- a hardware event is sent to the LP indicated by the LP identifier 172. The corresponding LP wakes up by this hardware event.
- the system interrupt 171 and the LP identifier 172 can be rewritten only by a virtual monitor level OS (monitor program), and the LP interrupt 173 and the HW event 174 can be rewritten only by a virtual monitor level and supervisor level OS. is there.
- FIG. 26 is a diagram schematically showing a state of memory access management in the processor system 10.
- the MVID 142 is sent from the processor block 11 to the memory IF block 14.
- the memory IF block 14 uses this MVID 142 to assign a bus bandwidth for each MVID 142 and then accesses the external memory 15 using the bus bandwidth assigned to the MVID 142 of the thread that requested access.
- the memory IF block 14 includes a bus bandwidth specification register 138.
- FIG. 27 is a diagram illustrating an example of data held in the bus bandwidth specification register 138 by the memory IF block 14.
- different MVIDs 142 are assigned to Linux, which is host processing, audio processing (Audio) included in media processing, and image processing (Video) included in media processing.
- the memory IF block 14 allocates a bus bandwidth for each MVID 142. Further, a priority order is determined for each MVID 142, and the external memory 15 is accessed based on the priority order.
- the processor system 10 can achieve performance guarantees and real-time guarantees for a plurality of applications.
- the memory IF is connected via a plurality of data buses.
- the same control as when the block 14 and the processor block 11 are connected can be performed. That is, it is possible to perform the same control as when the bus is divided for a plurality of blocks.
- Patent Document 5 A technique for securing the bus bandwidth and guaranteeing the latency with respect to access requests from a plurality of blocks is disclosed in detail in Japanese Patent Laid-Open No. 2004-246862 (Patent Document 5). Therefore, detailed description is omitted here.
- the ratio of processing time between media processing and host processing can be arbitrarily set by using the functions of the TVID 140 and the conventional VMP.
- the processing time ratio for each TVID 140 (the processing time ratio between media processing and host processing) is set in a register (not shown) included in the VMPC 102 by the OS at the virtual monitor level.
- the VMPC 102 refers to the set processing time ratio and the TVID 140 of each thread, and switches the thread executed by the execution unit 101 so that the processing time ratio is satisfied.
- FIG. 28 is a flowchart showing the flow of resource division processing by the monitor program.
- the monitor program divides a plurality of threads into a plurality of groups by setting TVID 140, PVID 141, and MVID 142 of the plurality of contexts 124 (S121, S122, and S123).
- the monitor program sets a correspondence relationship between the TVID 140 and the entry 150 in the entry designation register 135, whereby the first entry that associates the plurality of entries 150 of the TLB 104 with the host process and the second entry that associates with the media process. (S124).
- the TLB 104 allocates an entry 150 to a thread belonging to the host process and a thread belonging to the media process.
- the monitor program sets a correspondence relationship between the TVID 140 (or LP) and the way 168 in the way designation register 136, whereby the plurality of ways 168 included in the cache memory 109 are associated with the host process and the first way
- the process is divided into second ways to be associated with processing (S125).
- the TLB 104 assigns a way 168 to a thread belonging to the host process and a thread belonging to the media process.
- the monitor program sets a correspondence relationship between the TVID 140 and the FPU 107 in the FPU allocation register 137, thereby dividing the plurality of FPUs 107 into a first FPU associated with the host process and a second FPU associated with the media process (S126). .
- the FPU allocation unit 108 allocates the FPU 107 to the thread belonging to the host process and the thread belonging to the media process.
- the monitor program also associates the bus bandwidth between the external memory 15 and the memory IF block 14 with the host processing by setting the correspondence relationship between the MVID 142 and the bus bandwidth in the bus bandwidth specification register 138.
- the first bus bandwidth is divided into the second bus bandwidth associated with the media processing (S127).
- the memory IF block 14 assigns the bus bandwidth to the thread belonging to the host process and the thread belonging to the media process. assign.
- the monitor program creates a page table indicating the correspondence between physical addresses and logical addresses.
- the monitor program sets a correspondence relationship between the PVID 141 and the physical address, so that the physical address space of the external memory 15 is associated with the host process, and the second physical address range is associated with the media process.
- the first physical address range is assigned to the host processing thread
- the second physical address range is assigned to the media processing thread (S128).
- the monitor program protects the physical address by setting the corresponding relationship between the PVID 141 and the physical address in the physical memory protection register 131.
- the monitor program sets the interrupt destination LP or the like in the interrupt control register 134 in correspondence with each interrupt factor (S129).
- the monitor program can perform interrupt control independent of host processing and media processing.
- the interrupt control unit 111 sends an interrupt to the thread corresponding to the interrupt factor.
- each supervisor-level OS to which TVID 140 is assigned may determine a logical address corresponding to the assigned physical address and create a page table for each OS. This is possible and the present invention is not limited to this.
- the processor system 10 can improve the area efficiency by including the single processor block 11 that shares resources and performs host processing and media processing. Further, the processor system 10 gives different tag information (TVID 140, PVID 141, and MVID 142) to the host processing thread and the media processing thread, and divides the resources of the processor system 10 in association with the tag information. As a result, the processor system 10 can allocate independent resources to the host process and the media process. Therefore, since there is no resource contention between the host process and the media process, the processor system 10 can improve performance guarantee and robustness.
- tag information TVID 140, PVID 141, and MVID 142
- the physical address management unit 105 generates an interrupt when each thread tries to access outside the designated physical address range using the PVID 141. Thereby, the processor system 10 can improve the robustness of the system.
- the processor system 10 according to the present embodiment has been described above, but the present invention is not limited to this embodiment.
- the processor block 11 performs two types of processing, that is, host processing and media processing, has been described, but three or more types of processing including other processing may be performed.
- three or more types of TVIDs 140 respectively corresponding to the three or more types of processing are assigned to a plurality of threads.
- PVID 141 and MVID 142 are not limited to the numbers described above, and may be plural.
- TVID 140 three types of TVID 140, PVID 141, and MVID 142 have been described as tag information for grouping a plurality of threads.
- the processor system 10 uses only one tag information (for example, TVID 140). Also good. That is, the processor system 10 may use the TVID 140 for physical address management and bus width control without using the PVID 141 and the MVID 142.
- the processor system 10 may use two types of tag information, or may use four or more types of tag information.
- the interrupt control register 134, the entry designation register 135, the way designation register 136, the FPU allocation register 137, and the page table are set and updated by the virtual monitor level OS (monitor program).
- the supervisor level OS may set and update the interrupt control register 134, the entry specification register 135, the way specification register 136, the FPU allocation register 137, and the page table in accordance with an instruction from the monitor level OS.
- the resource assigned to the supervisor level OS is notified to the supervisor level OS by the virtual monitor level OS, and the supervisor level OS uses the interrupt control register 134,
- the entry specification register 135, the way specification register 136, the FPU allocation register 137, and the page table may be set and updated.
- each processing unit included in the processor system 10 is typically realized as an LSI which is an integrated circuit. These may be individually made into one chip, or may be made into one chip so as to include a part or all of them.
- LSI is used, but depending on the degree of integration, it may be called IC, system LSI, super LSI, or ultra LSI.
- circuits are not limited to LSI, and may be realized by a dedicated circuit or a general-purpose processor.
- An FPGA Field Programmable Gate Array
- reconfigurable processor that can reconfigure the connection and setting of circuit cells inside the LSI may be used.
- part or all of the functions of the processor system 10 according to the embodiment of the present invention may be realized by the execution unit 101 or the like executing a program.
- the present invention may be the above program or a recording medium on which the above program is recorded.
- the program can be distributed via a transmission medium such as the Internet.
- the present invention can be applied to processor devices and multi-thread processor devices, and is particularly suitable for media processing processor devices and multi-thread processor devices mounted on digital televisions, DVD recorders, digital cameras, mobile phones, and the like.
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
Description
本実施形態におけるプロセッサ装置は、複数のプロセッサ間でハードウェア資源を共有するプロセッサ装置であって、ハードウェア資源内のレジスタに現在実行中の何れかのプログラムの拡張コンテキストデータが保持されているか否かを判定する第1判定部と、前記ハードウェア資源内の拡張コンテキストデータが、どのプロセッサに対応するかを判定する第2判定部と、プロセッサ内のプログラム間で拡張コンテキストデータの退避と復帰とを行う第1転送部と、プロセッサ間のプログラム間で拡張コンテキストデータの退避と復帰とを行う第2転送部とを備える。
本実施の形態では、第1の実施の形態で説明したプロセッサ装置をメディアプロセッサに適用する場合の構成について説明する。
11 プロセッサブロック
12 ストリームI/Oブロック
13 AVIOブロック
14 メモリIFブロック
15 外部メモリ
16 制御バス
17、18、19 データバス
101 実行部
102 VMPC
104 TLB
105 物理アドレス管理部
107 FPU
108 FPU割り当て部
109 キャッシュメモリ
110 BCU
111 割り込み制御部
121 物理プロセッサ
122 演算制御部
123 演算部
124 コンテキスト
126 スケジューラ
127 コンテキストメモリ
128 コンテキスト制御部
130 アドレス変換テーブル
131 物理メモリ保護レジスタ
132 保護違反レジスタ
133 エラーアドレスレジスタ
134 割り込み制御レジスタ
135 エントリ指定レジスタ
136 ウェイ指定レジスタ
137 FPU割り当てレジスタ
138 バスバンド幅指定レジスタ
150 エントリ
151 TLBタグ部
152 TLBデータ部
168 ウェイ
171 システム割り込み
172 LP識別子
173 LP割り込み
174 HWイベント
210 命令準備部
213、223、233 状態レジスタ部
214 レジスタ部
215、225、235 第1判定部
216、226、236 第2判定部
220 命令準備部
230 命令準備部
240 実行パイプライン部
250 制御部
251 第1転送部
251a、251b、251c 退避復帰部
252 第2転送部
253 クリア部
260、270 ハードウェア資源
261、271 レジスタ群
310、320、330 メモリ
311 コンテキストデータ
312 拡張コンテキストデータ
Claims (16)
- 複数のプログラムを切り替えながら実行する複数のプロセッサと、
データを保持するレジスタを有し前記複数のプロセッサの命令実行を補完する1つ以上のハードウェア資源と、
前記複数のプログラムのうち前記ハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータを記憶するメモリと、
前記ハードウェア資源と前記メモリとの間で、拡張コンテキストデータの退避と復帰とを制御する制御部と、
前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されている可能性があるか否かを判定する第1判定部と、
前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを判定する第2判定部と
を備え、
前記可能性があると前記第1判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとしたプロセッサに属すると前記第2判定部によって判定された場合に、前記制御部が拡張コンテキストデータの退避および復帰を行うことなく、前記ハードウェア資源は当該所定命令を実行する
プロセッサ装置。 - 前記制御部は、
前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサに属するコンテキストデータを復帰する第1転送部と、
前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサに属する拡張コンテキストデータを復帰する第2転送部と
を備える
請求項1記載のプロセッサ装置。 - 前記ハードウェア資源は前記複数のプロセッサが実行できない拡張命令を実行する拡張演算ユニットであり、前記所定の命令は前記拡張命令である
請求項1記載のプロセッサ装置。 - 前記第1判定部は、複数のプロセッサのそれぞれに設けられたデータ判定部を含み、
各データ判定部は、当該データ判定部に対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、当該データ判定部に対応するプロセッサで現在実行中のプログラムの拡張コンテキストデータが前記ハードウェア資源内に保持されている可能性があるか否かを判定し、
前記第2判定部は、複数のプロセッサのそれぞれに設けられたプロセッサ判定部を含み、
各プロセッサ判定部は、前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを判定する
請求項1記載のプロセッサ装置。 - 前記複数のプロセッサのそれぞれは、状態レジスタを有し、
各状態レジスタのデータのコピーは、プログラム毎のコンテキストデータに含まれ、
各状態レジスタは、前記ハードウェア資源毎に、現在実行中のプログラムの拡張コンテキストデータが当該ハードウェア資源内に保持されている可能性があるか否かを示す第1状態情報と、前記ハードウェア資源毎に当該ハードウェア資源内に保持されている拡張コンテキストデータに対応するプロセッサを示す第2状態情報とを保持し、
前記各データ判定部は、対応するプロセッサがプログラム中の前記所定命令を実行しようとしたとき、前記第1状態情報が真か偽かを判定し、偽であると判定したとき第1の例外割込み信号を発生する第1判定回路を含み、
前記各プロセッサ判定部は、対応する前記第1判定回路が偽であると判定したとき、対応するプロセッサと前記第2状態情報が示すプロセッサとが一致するか否かを判定し、偽であると判定したとき第2の例外割込み信号を発生する第2判定回路を含み、
前記ハードウェア資源は、前記第2判定回路が一致すると判定したとき、拡張コンテキストデータの退避および復帰を待つことなく、当該所定命令に従って即座に動作する
請求項4記載のプロセッサ装置。 - 前記制御部は、
前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサに属するコンテキストデータを復帰する第1転送部と、
前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサに属する拡張コンテキストデータを復帰する第2転送部と
を備える
請求項5記載のプロセッサ装置。 - 前記第1転送部は、プロセッサ毎に設けられた退避復帰部を含み、
各退避復帰部は、前記第1の例外割り込み信号が発生した場合に前記ハードウェア資源から前記メモリに拡張コンテキストデータを退避し、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰し、
前記複数のプロセッサは、第1のプロセッサと第2のプロセッサとを含み、
前記第1のプロセッサは第1のオペレーティングシステムを実行することによって複数のプログラムを時分割多重で実行し、
前記第2のプロセッサは第1のオペレーティングシステムとは異なる第2のオペレーティングシステムを実行することによって複数のプログラムを時分割多重で実行し、
前記第1のプロセッサ内の前記退避復帰部は、前記第1のプロセッサ内の前記第1判定回路が前記第1の例外割込み信号を発生したとき、前記第1のオペレーティングシステムによって起動され、
前記第2のプロセッサ内の前記退避復帰部は、前記第2のプロセッサ内の前記第1判定回路が前記第1の例外割込み信号を発生したとき、第2のオペレーティングシステムによって起動される
請求項6記載のプロセッサ装置。 - 前記複数のプロセッサの少なくとも1つは、前記第1のオペレーティングシステムと前記第2のオペレーティングシステムとを管理する第3のオペレーティングシステムを実行し、
前記第2の転送部は、何れかの前記第2判定回路が前記第2の例外割込み信号を発生したとき、第3のオペレーティングシステムによって起動される
請求項7記載のプロセッサ装置。 - 前記第3オペレーティングシステムは、何れかの前記第2判定回路が前記第2の例外割込み信号を発生したとき、当該ハードウェア資源が他のプロセッサの所定命令を実行中である場合は、当該ハードウェア資源が解放されるのを待ち、当該ハードウェア資源を確保した後に、前記第2の転送部を起動する
請求項8記載のプロセッサ装置。 - 前記第2転送部は、前記ハードウェア資源から前記メモリに前記他のプロセッサに対応する拡張コンテキストデータを退避する動作の開始から、前記メモリから前記ハードウェア資源に前記所定命令を実行しようとしたプロセッサの拡張コンテキストデータを復帰する動作の改良までをアトミックに行う
請求項8記載のプロセッサ装置。 - 各プロセッサは、さらに、当該プロセッサが停止状態、待ち状態または休眠状態に遷移したとき、当該プロセッサに対応する第2状態情報をクリアするクリア回路を備える
請求項8記載のプロセッサ装置。 - 前記各状態レジスタは、第2状態情報をロックするか否かを示す第3状態情報を保持し、
前記第3オペレーティングシステムは、第3状態情報が第2状態情報をロックすることを示すとき、前記クリア回路による第2状態情報のクリアを禁止する
請求項11記載のプロセッサ装置。 - 複数のスレッドを同時に実行することによって、複数のプログラムを切り替える複数の仮想プロセッサを備えるマルチスレッドプロセッサと、
データを保持するレジスタを有し前記複数の仮想プロセッサの命令実行を補完する1つ以上のハードウェア資源と、
前記複数のプログラムのうち前記ハードウェア資源を利用する所定命令を含むプログラム毎に、前記ハードウェア資源内のレジスタデータのコピーである拡張コンテキストデータを記憶するメモリと、
前記ハードウェア資源と前記メモリとの間で、拡張コンテキストデータの退避と復帰とを制御する制御部と、
前記ハードウェア資源内に現在実行中のプログラムの拡張コンテキストデータが保持されている可能性があるか否かを判定する第1判定部と、
前記ハードウェア資源内の拡張コンテキストデータが前記所定命令を実行しようとしたプロセッサに属するか否かを判定する第2判定部と
を備え、
前記可能性があると前記第1判定部によって判定され、かつ、前記ハードウェア資源内の拡張コンテキストデータが、前記所定命令を実行しようとしたプロセッサに属すると前記第2判定部によって判定された場合に、前記制御部が拡張コンテキストデータの退避および復帰を行うことなく、前記ハードウェア資源は当該所定命令を実行する
マルチスレッドプロセッサ装置。 - 前記制御部は、
前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータと同じプロセッサに属するコンテキストデータを復帰する第1転送部と、
前記第1判定部および前記第2判定部の判定結果に応じて、ハードウェア資源からメモリに拡張コンテキストデータを退避し、退避した拡張コンテキストデータとは異なるプロセッサに属する拡張コンテキストデータを復帰する第2転送部と
を備える
請求項13記載のマルチスレッドプロセッサ装置。 - 前記複数の仮想プロセッサのそれぞれは、少なくとも1つのスレッドに対応し、
前記マルチスレッドプロセッサは、
スレッドの命令をフェッチおよび解読する複数の命令準備部と、
前記複数の命令準備部により解読された命令であって、1以上のスレッドに対応する1以上の命令を同時に実行する実行部と、
命令準備部毎に設けられた状態レジスタと
を有し、
前記制御部は、命令準備部毎に、現在のスレッドを他のスレッドに入れ替えることによって、前記複数の仮想プロセッサのうち実行中の仮想プロセッサと実行中でない仮想プロセッサとを入れ替え、
各状態レジスタのデータのコピーは、仮想プロセッサ毎のコンテキストデータに含まれ、
各状態レジスタは、
前記ハードウェア資源毎に、現在実行中の仮想プロセッサの拡張コンテキストデータが当該ハードウェア資源内に保持されている可能性があるか否かを示す第1状態情報と、
前記ハードウェア資源毎に当該ハードウェア資源内に保持されている拡張コンテキストデータに対応する仮想プロセッサを示す第2状態情報とを保持し、
前記マルチスレッドプロセッサは、さらに、
スレッドの入れ替えによって実行中の仮想プロセッサが実行中でなくなったときに、スレッドの入れ替えがあった命令準備部内の状態レジスタの第2状態情報をクリアするクリア回路を備える
請求項14記載のマルチスレッドプロセッサ装置。 - 前記第1判定部は、前記複数の命令準備部のそれぞれに設けられたデータ判定部を含み、
前記各データ判定部は、対応する命令準備部のスレッドが前記所定命令を実行しようとしたとき、前記第1状態情報が真か偽かを判定することによって、現在実行中のプログラムの拡張コンテキストデータが前記ハードウェア資源内に保持されている可能性があるか否かを判定し、
前記第2判定部は、前記複数の命令準備部のそれぞれに設けられたプロセッサ判定部を含み、
前記各プロセッサ判定部は、対応する命令準備部内の前記データ判定部が偽であると判定したとき、対応する命令準備部の仮想プロセッサと前記第2状態情報が示す仮想プロセッサとが一致するか否かを判定し、偽であると判定したとき第2の例外割込み信号を発生し、
前記マルチスレッドプロセッサは、さらに、
前記プロセッサ判定部からの第2の例外割込み信号によって起動される第2の例外割り込み処理を、オペレーティングシステムの一部の機能として実行し、
前記オペレーティングシステムは、前記ハードウェア資源の獲得処理と、前記ハードウェア資源の解放を待つ待ち処理を含み、
前記オペレーティングシステムは、
前記第2の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部に属する仮想プロセッサおいて当該ハードウェア資源が使用中でない場合に、前記獲得処理として、前記第2の例外割り込み信号を発生させた命令準備部内の状態レジスタに、真を示す第1状態情報と、前記第2の例外割り込み信号を発生させた仮想プロセッサを示す第2状態情報とを設定し、
前記第2の例外割り込み信号を発生させた仮想プロセッサの属する命令準備部以外の命令準備部において仮想プロセッサにおいて当該ハードウェア資源が使用中である場合に、前記待ち処理を実行する
請求項15記載のマルチスレッドプロセッサ装置。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009801575253A CN102334102B (zh) | 2009-02-24 | 2009-08-11 | 处理器装置、多线程处理器装置 |
JP2011501354A JP5433676B2 (ja) | 2009-02-24 | 2009-08-11 | プロセッサ装置、マルチスレッドプロセッサ装置 |
US13/215,623 US8850168B2 (en) | 2009-02-24 | 2011-08-23 | Processor apparatus and multithread processor apparatus |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009-041568 | 2009-02-24 | ||
JP2009041568 | 2009-02-24 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/215,623 Continuation US8850168B2 (en) | 2009-02-24 | 2011-08-23 | Processor apparatus and multithread processor apparatus |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2010097847A1 true WO2010097847A1 (ja) | 2010-09-02 |
Family
ID=42665075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2009/003857 WO2010097847A1 (ja) | 2009-02-24 | 2009-08-11 | プロセッサ装置、マルチスレッドプロセッサ装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8850168B2 (ja) |
JP (1) | JP5433676B2 (ja) |
CN (1) | CN102334102B (ja) |
WO (1) | WO2010097847A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014078072A (ja) * | 2012-10-09 | 2014-05-01 | Canon Inc | 情報処理装置、情報処理方法およびプログラム |
JPWO2013008326A1 (ja) * | 2011-07-13 | 2015-02-23 | 富士通株式会社 | ソフトウェア検証方法、およびソフトウェア検証システム |
JP2016511493A (ja) * | 2013-03-15 | 2016-04-14 | クアルコム,インコーポレイテッド | システムメモリ管理ユニットコンテキストを保存および復元するための方法および装置 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8615766B2 (en) * | 2012-05-01 | 2013-12-24 | Concurix Corporation | Hybrid operating system |
US9191435B2 (en) | 2012-08-23 | 2015-11-17 | TidalScale, Inc. | Selective data migration or remapping of virtual processors to provide required data accessibility to processor cores |
US9483185B2 (en) * | 2014-12-16 | 2016-11-01 | Intel Corporation | Gradual context saving in a data storage device |
US10372491B2 (en) | 2015-03-23 | 2019-08-06 | Intel Corporation | Execution context migration method and apparatus |
US10241706B2 (en) * | 2016-05-20 | 2019-03-26 | Renesas Electronics Corporation | Semiconductor device and its memory access control method |
GB2550903B (en) * | 2016-05-27 | 2019-06-12 | Arm Ip Ltd | Context data control |
US10620992B2 (en) | 2016-08-29 | 2020-04-14 | TidalScale, Inc. | Resource migration negotiation |
CN108009007B (zh) * | 2016-10-27 | 2021-01-15 | 华为技术有限公司 | 轻量级线程的调度方法及协同管理器、vCPU调度器 |
US11023135B2 (en) | 2017-06-27 | 2021-06-01 | TidalScale, Inc. | Handling frequently accessed pages |
US10353826B2 (en) * | 2017-07-14 | 2019-07-16 | Arm Limited | Method and apparatus for fast context cloning in a data processing system |
US10489304B2 (en) | 2017-07-14 | 2019-11-26 | Arm Limited | Memory address translation |
US10467159B2 (en) | 2017-07-14 | 2019-11-05 | Arm Limited | Memory node controller |
US10534719B2 (en) | 2017-07-14 | 2020-01-14 | Arm Limited | Memory system for a data processing network |
US10565126B2 (en) | 2017-07-14 | 2020-02-18 | Arm Limited | Method and apparatus for two-layer copy-on-write |
US10613989B2 (en) | 2017-07-14 | 2020-04-07 | Arm Limited | Fast address translation for virtual machines |
US10592424B2 (en) | 2017-07-14 | 2020-03-17 | Arm Limited | Range-based memory system |
US10545840B1 (en) * | 2017-07-26 | 2020-01-28 | Amazon Technologies, Inc. | Crash tolerant computer system |
US10817347B2 (en) | 2017-08-31 | 2020-10-27 | TidalScale, Inc. | Entanglement of pages and guest threads |
US10884850B2 (en) | 2018-07-24 | 2021-01-05 | Arm Limited | Fault tolerant memory system |
CN113010281B (zh) * | 2021-02-24 | 2024-04-02 | 厦门树冠科技有限公司 | 多相机检测***的线程处理方法、装置、存储介质和终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0484335A (ja) * | 1990-07-27 | 1992-03-17 | Fujitsu Ltd | 仮想計算機制御方式 |
JPH05127926A (ja) * | 1991-10-31 | 1993-05-25 | Nec Corp | タスク制御装置 |
JPH05165652A (ja) * | 1991-12-16 | 1993-07-02 | Fujitsu Ltd | タスク切替え制御方法 |
JPH0887420A (ja) * | 1994-09-09 | 1996-04-02 | Internatl Business Mach Corp <Ibm> | プロセス・スレッドを管理する方法および装置 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01217635A (ja) * | 1988-02-26 | 1989-08-31 | Fujitsu Ltd | レジスタ退避方式 |
US6061711A (en) * | 1996-08-19 | 2000-05-09 | Samsung Electronics, Inc. | Efficient context saving and restoring in a multi-tasking computing system environment |
JP3813930B2 (ja) | 2002-01-09 | 2006-08-23 | 松下電器産業株式会社 | プロセッサ及びプログラム実行方法 |
TW200415476A (en) | 2002-09-30 | 2004-08-16 | Matsushita Electric Ind Co Ltd | Resource management device |
JP2004246862A (ja) | 2002-09-30 | 2004-09-02 | Matsushita Electric Ind Co Ltd | リソース管理装置 |
CN101626475B (zh) | 2004-04-01 | 2011-05-04 | 松下电器产业株式会社 | 影像再现装置、信息记录装置、影像处理设备及摄像装置 |
JP4241921B2 (ja) | 2004-06-10 | 2009-03-18 | 株式会社日立製作所 | 計算機システム及びその資源割当て方法 |
JP4956891B2 (ja) * | 2004-07-26 | 2012-06-20 | 富士通株式会社 | 演算処理装置,情報処理装置および演算処理装置の制御方法 |
JP4170364B2 (ja) * | 2004-09-17 | 2008-10-22 | 松下電器産業株式会社 | プロセッサ |
TWI326428B (en) | 2005-03-18 | 2010-06-21 | Marvell World Trade Ltd | Real-time control apparatus having a multi-thread processor |
US8195922B2 (en) | 2005-03-18 | 2012-06-05 | Marvell World Trade, Ltd. | System for dynamically allocating processing time to multiple threads |
US20060212853A1 (en) | 2005-03-18 | 2006-09-21 | Marvell World Trade Ltd. | Real-time control apparatus having a multi-thread processor |
US7536517B2 (en) * | 2005-07-29 | 2009-05-19 | Microsoft Corporation | Direct-update software transactional memory |
US20070143582A1 (en) | 2005-12-16 | 2007-06-21 | Nvidia Corporation | System and method for grouping execution threads |
US8271994B2 (en) * | 2006-02-11 | 2012-09-18 | International Business Machines Corporation | Reduced data transfer during processor context switching |
JP2008123045A (ja) | 2006-11-08 | 2008-05-29 | Matsushita Electric Ind Co Ltd | プロセッサ |
-
2009
- 2009-08-11 WO PCT/JP2009/003857 patent/WO2010097847A1/ja active Application Filing
- 2009-08-11 JP JP2011501354A patent/JP5433676B2/ja active Active
- 2009-08-11 CN CN2009801575253A patent/CN102334102B/zh active Active
-
2011
- 2011-08-23 US US13/215,623 patent/US8850168B2/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0484335A (ja) * | 1990-07-27 | 1992-03-17 | Fujitsu Ltd | 仮想計算機制御方式 |
JPH05127926A (ja) * | 1991-10-31 | 1993-05-25 | Nec Corp | タスク制御装置 |
JPH05165652A (ja) * | 1991-12-16 | 1993-07-02 | Fujitsu Ltd | タスク切替え制御方法 |
JPH0887420A (ja) * | 1994-09-09 | 1996-04-02 | Internatl Business Mach Corp <Ibm> | プロセス・スレッドを管理する方法および装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2013008326A1 (ja) * | 2011-07-13 | 2015-02-23 | 富士通株式会社 | ソフトウェア検証方法、およびソフトウェア検証システム |
JP2014078072A (ja) * | 2012-10-09 | 2014-05-01 | Canon Inc | 情報処理装置、情報処理方法およびプログラム |
JP2016511493A (ja) * | 2013-03-15 | 2016-04-14 | クアルコム,インコーポレイテッド | システムメモリ管理ユニットコンテキストを保存および復元するための方法および装置 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2010097847A1 (ja) | 2012-08-30 |
CN102334102A (zh) | 2012-01-25 |
US20120023311A1 (en) | 2012-01-26 |
CN102334102B (zh) | 2013-11-20 |
JP5433676B2 (ja) | 2014-03-05 |
US8850168B2 (en) | 2014-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5433676B2 (ja) | プロセッサ装置、マルチスレッドプロセッサ装置 | |
JP5412504B2 (ja) | マルチスレッドプロセッサ及びデジタルテレビシステム | |
US10558580B2 (en) | Methods and apparatus for loading firmware on demand | |
KR100996753B1 (ko) | 시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템 | |
JP4028444B2 (ja) | スケジューリング方法およびリアルタイム処理システム | |
KR100591727B1 (ko) | 스케줄링 방법과 이 방법을 실행하기 위한 프로그램을 기록한 기록매체 및 정보처리시스템 | |
US9747218B2 (en) | CPU security mechanisms employing thread-specific protection domains | |
JP3920818B2 (ja) | スケジューリング方法および情報処理システム | |
US6438671B1 (en) | Generating partition corresponding real address in partitioned mode supporting system | |
US7694304B2 (en) | Mechanisms for dynamic configuration of virtual processor resources | |
JP4057989B2 (ja) | スケジューリング方法および情報処理システム | |
US8386750B2 (en) | Multiprocessor system having processors with different address widths and method for operating the same | |
WO2015169145A1 (zh) | 内存管理方法和设备 | |
US20080235477A1 (en) | Coherent data mover | |
US7873961B2 (en) | Supervisory operating system for running multiple child operating systems simultaneously and optimizing resource usage | |
JP2006318477A (ja) | ロジカルパーティショニングされた処理環境におけるリソース管理のための方法および装置 | |
US20170031729A1 (en) | Generational Thread Scheduler | |
JP2005062956A (ja) | スケジューリング方法および情報処理システム | |
US11256625B2 (en) | Partition identifiers for page table walk memory transactions | |
JP2013161299A (ja) | 情報処理装置、インタフェースアクセス方法 | |
US11009841B2 (en) | Initialising control data for a device | |
TWI831564B (zh) | 可配置的記憶體系統及其記憶體管理方法 | |
JP2011039666A (ja) | バリア同期方法及び計算機 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WWE | Wipo information: entry into national phase |
Ref document number: 200980157525.3 Country of ref document: CN |
|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09840701 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2011501354 Country of ref document: JP |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 09840701 Country of ref document: EP Kind code of ref document: A1 |