CN102334102A - 处理器装置、多线程处理器装置 - Google Patents
处理器装置、多线程处理器装置 Download PDFInfo
- Publication number
- CN102334102A CN102334102A CN2009801575253A CN200980157525A CN102334102A CN 102334102 A CN102334102 A CN 102334102A CN 2009801575253 A CN2009801575253 A CN 2009801575253A CN 200980157525 A CN200980157525 A CN 200980157525A CN 102334102 A CN102334102 A CN 102334102A
- Authority
- CN
- China
- Prior art keywords
- processor
- hardware resource
- context data
- instruction
- extended context
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012546 transfer Methods 0.000 claims abstract description 37
- 230000015654 memory Effects 0.000 claims description 62
- 238000000034 method Methods 0.000 claims description 62
- 238000012545 processing Methods 0.000 claims description 58
- 238000002360 preparation method Methods 0.000 claims description 49
- 230000033228 biological regulation Effects 0.000 claims description 48
- 230000008569 process Effects 0.000 claims description 33
- 238000011084 recovery Methods 0.000 claims description 31
- 238000004321 preservation Methods 0.000 claims description 25
- 230000006870 function Effects 0.000 claims description 9
- 238000013508 migration Methods 0.000 claims description 4
- 230000005012 migration Effects 0.000 claims description 4
- 230000006872 improvement Effects 0.000 claims description 2
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 description 38
- 238000007726 management method Methods 0.000 description 26
- 230000004224 protection Effects 0.000 description 22
- 230000005055 memory storage Effects 0.000 description 20
- 238000003860 storage Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 12
- 238000009826 distribution Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 10
- 241001269238 Data Species 0.000 description 8
- 238000007667 floating Methods 0.000 description 7
- 238000013507 mapping Methods 0.000 description 6
- 239000012467 final product Substances 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 238000005457 optimization Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 208000026940 Microvillus inclusion disease Diseases 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000004069 differentiation Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011002 quantification Methods 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 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
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
本发明的处理器装置是在多个处理器之间共享硬件资源(260、270)的处理器装置,包括:第一判断部(215),判断目前正在执行中的某一个程序的扩展上下文数据,是否被保持在所述硬件资源内的寄存器中;第二判断部(216),判断是否与所述硬件资源内的扩展上下文数据等的处理器相对应;第一转移部(251),在处理器内的程序间进行扩展上下文数据的保持与恢复;以及第二转移部(252),在处理器间的程序之间进行扩展上下文数据的保持与恢复。
Description
技术领域
本发明涉及具有一边切换处理器装置的程序一边执行的多个处理器的处理器装置以及多线程处理器装置,尤其涉及使硬件资源在多个处理器中共享的处理器装置以及多线程处理器装置。
背景技术
近些年随着数字技术、运动图像以及声音的压缩扩展技术的急速进展,被搭载于数字电视、数字录像机(DVD记录器等)、便携式电话、以及影像声音设备(摄像机等)的处理器被要求具有更高的性能。
例如,作为实现高性能化的处理器有周知的多线程处理器(例如,参照专利文献1)。该多线程处理器通过同时执行多个线程,来提高处理效率。并且,多线程处理器在多个线程的执行过程中,由于能够共享资源,因此与将多个处理器独立设置相比,能够提高处理器的面积优化(area-efficient)。
另外,在这样的处理器中所进行的处理有:没有被要求实时性的与控制相关的主处理、和被要求了实时性的运动图像的压缩与扩展处理等媒体处理。
例如,专利文献2所记载的影像声音处理用集成电路包括:进行主处理的微电脑块以及进行媒体处理的媒体处理块。
并且,作为使FPU(浮点处理单元:Floating Point number processingUnit)的上下文切换的必要性成为最小的技术,提出了延迟上下文切换(Lazy context switch)这种技术。根据这种方法,以执行上下文,直到需要执行FPU指令为止,使FPU上下文的保存与恢复延迟。即,在通常的处理器的上下文的保存以及恢复为不同步的状态,进行FPU的上下文切换,并将这一机会抑制成需要的最小限度。
从FPU具有多个寄存器、以及在被时分多路复用的程序中存在不使用FPU程序上来看,上述的方法试图降低FPU上下文的保存以及恢复的额外开销量。
(现有技术文献)
专利文献
专利文献1日本特开2006-302261号公报
专利文献2国际公开第2005/096168号
专利文献3日本特开2003-271399号公报
专利文献4日本特开2008-123045号公报
专利文献5日本特开2004-246862号公报
然而,在多处理器中利用FPU等硬件资源的情况下,具有以下的问题。
在按每个处理器具备FPU,并按每个处理器适用延迟上下文切换的情况下,则电路规模增大。而且,在每个处理器之间产生FPU有效性的不均匀,不能提高使用效率。
发明内容
本发明的目的在于提供一种能够使FPU等硬件资源在多个处理器共享,并能够使使用效率提高的处理器装置以及多线程处理器装置。
为了解决上述的课题,本发明的处理器装置包括:多个处理器,对多个程序一边进行切换一边执行;一个以上的硬件资源,具有保持数据的寄存器,补充所述多个处理器的指令执行;存储器,按照所述多个程序中的包含利用所述硬件资源的规定指令的每个程序,记忆扩展上下文数据,该扩展上下文数据是所述硬件资源内的寄存器数据的复制;控制部,在所述硬件资源与所述存储器之间,控制扩展上下文数据的保存与恢复;第一判断部,判断目前正在执行中的程序的扩展上下文数据是否有被保持在所述硬件资源内的可能性;以及第二判断部,判断所述硬件资源内的扩展上下文数据,是否属于将要执行所述规定指令的处理器;在由所述第一判断部判断出有所述可能性、且由所述第二判断部判断出所述硬件资源内的扩展上下文数据属于将要执行所述规定指令的处理器的情况下,所述控制部不进行扩展上下文数据的保存以及恢复,所述硬件资源执行该规定指令。
根据此构成,能够在多个处理器共享各个硬件资源。即,不论哪个处理器都能够使用各个硬件资源。因此,能够使硬件资源的使用效率提高。由于不需要按照每个处理器来具备硬件资源,因此只需要按照所需的处理性能来具备最小限度的硬件资源即可,从而能够减小电路规模或能够进行最佳化。
在此,也可以是,所述控制部包括:第一转移部,按照所述第一判断部以及所述第二判断部的判断结果,将扩展上下文数据从硬件资源保存到存储器,将与保存了的扩展上下文数据属于同一个处理器的上下文数据恢复;以及第二转移部,按照所述第一判断部以及所述第二判断部的判断结果,将扩展上下文数据从硬件资源保存到存储器,将与保存了的扩展上下文数据属于不同的处理器的扩展上下文数据恢复。
在此,也可以是,所述硬件资源是扩展运算单元,执行所述多个处理器所不能执行的扩展指令,所述规定指令是所述扩展指令。
根据此构成,能够高效率地在多个处理器共享FPU以及硬件加速器等扩展运算单元,从而能够使扩展上下文数据的保存以及恢复成为最小限。
在此,也可以是,所述第一判断部包括被设置在多个处理器的每一个的数据判断部;各个数据判断部,在该数据判断部所对应的处理器将要执行程序中的所述规定指令之时,判断在与该数据判断部相对应的处理器目前正在执行中的程序的扩展上下文数据,是否有被保持在所述硬件资源内的可能性;所述第二判断部包括被设置在多个处理器的每一个的处理器判断部;各个处理器判断部判断所述硬件资源内的扩展上下文数据是否属于将要执行所述规定指令的处理器。
根据此构成,由于按照每个处理器具备了数据判断部以及处理器判断部,在硬件资源保持了目前正在执行中的程序(即发出规定指令的程序)的扩展上下文数据的情况下,能够不会给其他的处理器带来任何影响,来使用硬件资源。
在此,也可以是,所述多个处理器的每一个具有状态寄存器;各个状态寄存器的数据的复制被包含在每个程序的上下文数据中;各个状态寄存器保持第一状态信息和第二状态信息,所述第一状态信息按照每个所述硬件资源示出,目前正在执行中的程序的扩展上下文数据是否有被保持在该硬件资源内的可能性,所述第二状态信息按照每个所述硬件资源示出,被保持在该硬件资源内的扩展上下文数据所对应的处理器;所述各个数据判断部包括第一判断电路,该第一判断电路在对应的处理器将要执行程序中的所述规定指令之时,判断所述第一状态信息是真还是假,在判断为是假之时,产生第一例外中断信号;所述各个处理器判断部包括第二判断电路,该第二判断电路在对应的所述第一判断电路判断为假之时,判断对应的处理器与所述第二状态信息所示的处理器是否一致,在判断为是假之时,产生第二例外中断信号;>所述硬件资源,在所述第二判断电路判断为一致之时,不等待扩展上下文数据的保存以及恢复,而按照该规定指令立即工作。
根据此构成,由于数据判断部以及处理器判断部由硬件(第一判断电路以及第二判断电路)构成,因此在硬件资源保持了目前正在执行中的程序(即发出规定指令的程序)的扩展上下文数据的情况下,既不会给其他的处理器带来任何影响,又能够高速地使用硬件资源。
在此,也可以是,所述第一转移部包括被设置在每个处理器的保存恢复部;各个保存恢复部,在产生了所述第一例外中断信号的情况下,将扩展上下文数据从所述硬件资源保存到所述存储器,将将要执行所述规定指令的处理器的扩展上下文数据,从所述存储器恢复到所述硬件资源;所述多个处理器包括第一处理器和第二处理器;所述第一处理器通过执行第一操作***,从而以时分多路复用来执行多个程序;所述第二处理器通过执行与第一操作***不同的第二操作***,从而以时分多路复用来执行多个程序;所述第一处理器内的所述保存恢复部,在所述第一处理器内的所述第一判断电路产生了所述第一例外中断信号之时,由所述第一操作***启动;所述第二处理器内的所述保存恢复部,在所述第二处理器内的所述第一判断电路产生了所述第一例外中断信号之时,由所述第二操作***启动。
根据此构成,能够在执行不同的操作***(以下简称为OS)的处理器之间,共享硬件资源。在处理器的程序之间需要进行硬件资源的扩展上下文数据的切换的情况下,能够在不会给其他的OS带来影响的情况下,在OS内高效率地切换扩展上下文数据。
在此,也可以是,所述多个处理器的至少一个执行第三操作***,该第三操作***管理所述第一操作***和所述第二操作***;所述第二转移部,在任一个所述第二判断电路产生了所述第二例外中断信号之时,由第三操作***启动。
根据此构成,能够在执行不同的操作***(以下简略成为OS)的处理器之间共享硬件资源。在执行不同的OS的处理器之间需要进行硬件资源的扩展上下文数据的切换的情况下,在第三OS的管理下,对扩展上下文数据进行切换。据此,由于不论针对哪个处理器上的程序,扩展上下文数据的切换都能够被隐蔽,因此能够容易地使以往的程序流通。
在此,也可以是,所述第三操作***,在任一个所述第二判断电路产生了所述第二例外中断信号之时,在该硬件资源正在执行其他的处理器的规定指令的情况下,等待该硬件资源的释放,在确保了该硬件资源之后,启动所述第二转移部。
根据此构成,即使在不同的OS的处理器之间发生了规定指令的竞争的情况下(硬件资源的使用发生了竞争的情况下),也能够在第三OS的管理下容易地进行调停。
在此,也可以是,所述第二转移部,从所述其他的处理器所对应的扩展上下文数据从所述硬件资源保存到所述存储器的工作开始,直到将要执行所述规定指令的处理器的扩展上下文数据从所述存储器恢复到所述硬件资源的工作的改善为止,连续地进行处理。
根据此构成,由于第二转移部从上述的保存开始直到恢复结束为止连续地进行处理,因此不会在每个程序的上下文数据(尤其是第一状态信息以及第二状态信息)中产生矛盾,并且不会受到其他的处理器的干涉,能够在不同的处理器之间共享硬件资源。
在此,也可以是,各个处理器进一步包括清除电路,该清除电路在该处理器迁移到停止状态、等待状态、或停顿状态之时,清除该处理器所对应的第二状态信息。
根据此构成,在一个处理器迁移到停止状态、等待状态或停顿状态之时,通过清除电路能够释放该处理器正在使用的硬件资源,从而能够提高在多个处理器之间共享的硬件资源的使用效率。
在此,也可以是,所述各个状态寄存器保持第三状态信息,该第三状态信息示出是否锁定第二状态信息;所述第三操作***,在第三状态信息示出锁定第二状态信息之时,禁止由所述清除电路清除第二状态信息。
根据此构成,在使用硬件资源的处理器为固定的情况下,以及在硬件资源优先被某个处理器使用的情况下,程序员通过将第三状态信息设定为“锁定”,从而该处理器能够持续占有硬件资源,从而能够减少不不要的扩展上下文数据的保存以及恢复。
并且,本发明的处理器装置的构成也可以是,包括:多线程处理器,该多线程处理器包括,通过同时执行多个线程来切换多个程序的多个虚拟处理器;一个以上的硬件资源,具有保持数据的寄存器,辅助具有保持数据的寄存器的所述多个虚拟处理器的指令执行;存储器,按照所述多个程序中的包含利用所述硬件资源的规定指令的每个程序,记忆扩展上下文数据,该扩展上下文数据是所述硬件资源内的寄存器数据的复制;控制部,在所述硬件资源与所述存储器之间,控制扩展上下文数据的保存与恢复;第一判断部,判断目前正在执行中的程序的扩展上下文数据是否有被保持在所述硬件资源内的可能性;以及第二判断部,判断所述硬件资源内的扩展上下文数据,是否属于将要执行所述规定指令的处理器;在由所述第一判断部判断出有所述可能性、且由所述第二判断部判断出所述硬件资源内的扩展上下文数据属于将要执行所述规定指令的处理器的情况下,所述控制部不进行扩展上下文数据的保存以及恢复,所述硬件资源执行该规定指令。
根据此构成,具有与上述同样的效果。
在此,也可以是,所述控制部包括:第一转移部,按照所述第一判断部以及所述第二判断部的判断结果,将扩展上下文数据从硬件资源保存到存储器,将与保存了的扩展上下文数据属于同一个处理器的上下文数据恢复;以及第二转移部,按照所述第一判断部以及所述第二判断部的判断结果,将扩展上下文数据从硬件资源保存到存储器,将与保存了的扩展上下文数据属于不同的处理器的扩展上下文数据恢复。
在此,也可以是,所述多个虚拟处理器的每一个至少与一个线程相对应;所述多线程处理器具有:多个指令准备部,取线程的指令并进行译码;执行部,同时执行与一个以上的线程相对应的一个以上的指令,并且这些指令是由所述多个指令准备部译码的指令;以及状态寄存器,被设置在每个指令准备部;所述控制部,通过按照每个指令准备部,将目前的线程替换为其他的线程,从而对所述多个虚拟处理器中的正在执行中的虚拟处理器与不是正在执行中的虚拟处理器进行替换;各个状态寄存器的数据的复制被包含在每个虚拟处理器的上下文数据中;各个状态寄存器保持第一状态信息和第二状态信息,所述第一状态信息,按照每个所述硬件资源示出,目前正在执行中的虚拟处理器的扩展上下文数据是否有被保持在该硬件资源内的可能性;所述第二状态信息,按照每个所述硬件资源示出,与被保持在该硬件资源内的扩展上下文数据相对应的虚拟处理器;所述多线程处理器还包括清除电路,该清除电路在由于线程的替换而正在执行中的虚拟处理器成为不是正在执行中之时,对进行了线程的替换的指令准备部内的状态寄存器的第二状态信息进行清除。
在此,也可以是,所述第一判断部包括被设置在所述多个指令准备部的每一个的数据判断部;所述各个数据判断部,在对应的指令准备部的线程将要执行所述规定指令之时,通过判断所述第一状态信息是真还是假,来判断目前正在执行中的程序的扩展上下文数据是否有被保持在所述硬件资源内的可能性;所述第二判断部包括被设置在多个指令准备部的每一个的处理器判断部;所述各个处理器判断部,在对应的指令准备部内的所述数据判断部判断为是假之时,判断对应的指令准备部的虚拟处理器是否与所述第二状态信息所示的虚拟处理器一致,在判断为是假之时,产生第二例外中断信号;所述多线程处理器还包括清除电路,将由来自所述处理器判断部的第二例外中断信号而被启动的第二例外中断处理,作为操作***的一部分的功能来执行;所述操作***包括所述硬件资源的获得处理和等待所述硬件资源的释放的等待处理;所述操作***进行以下工作:在属于使所述第二例外中断信号产生的虚拟处理器所属的指令准备部以外的指令准备部的虚拟处理器中,在该硬件资源不是正在使用中的情况下,作为获得处理,将示出为真的第一状态信息和示出使所述第二例外中断信号产生的虚拟处理器的第二状态信息,设定到使所述第二例外中断信号产生的指令准备部内的状态寄存器;在使所述第二例外中断信号产生的虚拟处理器所属的指令准备部以外的指令准备部,在虚拟处理器中该硬件资源为正在使用中的情况下,进行所述等待处理。
通过这种构成,能够将硬件资源(例如FPU以及硬件加速器等扩展运算单元)在多个处理器中效率良好地共享。即不论哪个处理器都能够使用各个硬件资源。因此,能够提高硬件资源的使用效率。由于无需使每个处理器都具备硬件资源,因此,只需要应对所需要的处理性能的数量最少的硬件资源即可,因此能够减小电路规模或者对电路规模进行最佳化。
附图说明
图1是示出实施例1中的处理器装置的构成的方框图。
图2是实施例1中的状态寄存器部内的第一至第三状态信息的一个例子的图。
图3是有关实施例1中的处理器装置中的操作***的说明图。
图4是示出实施例1中的硬件资源切换工作的流程图。
图5示出了实施例1中的第三操作***所管理的数据的一个例子。
图6是示出实施例1中的硬件资源切换工作的详细流程图。
图7是实施例2所涉及的处理器***的构成的方框图。
图8是实施例2所涉及的处理器块的构成的方框图。
图9示出了实施例2所涉及的上下文的构成。
图10示出了实施例2所涉及的逻辑地址空间的管理。
图11示出了实施例2所涉及的地址管理表的构成。
图12示出了实施例2中的逻辑地址的对应关系。
图13示出了实施例2所涉及的条目指定寄存器的构成。
图14示出了实施例2所涉及的TLB(旁路转换缓冲)所进行的条目的分配处理。
图15是实施例2所涉及的TLB所进行的处理的流程图。
图16示出了实施例2所涉及的物理保护寄存器的构成。
图17示出了在实施例2中,由PVID保护的物理地址空间。
图18示出了实施例2所涉及的保护违反寄存器的构成。
图19示出了实施例2所涉及的错误地址寄存器的构成。
图20示出了实施例2所涉及的FPU分配寄存器的构成。
图21示出了实施例2所涉及的FPU分配部所进行的FPU的分配处理。
图22A示出了实施例2所涉及的路(way)指定寄存器的构成。
图22B示出了实施例2所涉及的路指定寄存器的构成。
图23在模式上示出了实施例2所涉及的高速缓冲存储器所进行的路(way)的分配处理。
图24是实施例2所涉及高速缓冲存储器所进行的处理的流程图。
图25示出了实施例2所涉及的中断控制寄存器的构成。
图26示出了实施例2所涉及的处理器***中的存储器存取管理。
图27示出了实施例2所涉及的存储器IF块所进行的总线带宽的分配。
图28是实施例2所涉及的处理器***中的资源分割处理的流程图。
具体实施方式
(实施例1)
在本实施例中的处理器装置中,在多个处理器之间共享硬件资源,该处理器装置包括:第一判断部,判断在硬件资源内的寄存器中,是否保持有目前正在执行中的某个程序的扩展上下文数据;第二判断部,判断所述硬件资源内的扩展上下文数据与哪个处理器相对应;第一转移部,在处理器内的程序之间进行扩展上下文数据的保存与恢复;以及第二转移部,在处理器之间的程序之间进行扩展上下文数据的保存与恢复。
图1是示出本发明的实施例1中的处理器装置的构成的方框图。该处理器装置包括:指令准备部210、220和230、执行流水线部240、控制部250、硬件资源260和270、以及存储器310、320、330。
指令准备部210、220、230以及执行流水线部240构成多线程处理器。指令准备部210、220、230分别独立地从线程(程序)中取指令并译码,并将译码结果发行到执行流水线部240。
执行流水线部240包括多个功能单元(ALU、加载/存储单元、分支处理单元、乘法器、除法器等),在多个功能单元中同时执行多个指令译码结果中的能够执行的指令。由于一个指令准备部与执行流水线部240所组成的组实际上作为一个处理器来发挥功能,因此称为虚拟处理器或逻辑处理器。即,指令准备部210、220、230以及执行流水线部240相当于三个虚拟处理器0~2。各个虚拟处理器一边切换程序一边执行。另外,也可以取代指令准备部210、220、230以及执行流水线部240,而具备独立工作的多个物理处理器。以下,在没有特别需要区分三个虚拟处理器0~2(逻辑处理器)和三个物理处理器的情况下,简单称为处理器0~2。
存储器310、320和330具有与三个处理器相对应的地址空间。存储器310记忆程序、程序的通常的上下文数据311、硬件资源的扩展上下文数据312等。存储器320和330也是同样。三个存储器310、320和330的物理地址空间为一个,而具有三个独立的虚拟地址空间。另外,三个存储器310、320和330也可以具有三个独立的物理地址空间。并且,也可以将上下文数据311、321和331存储到其他的上下文数据专用的存储器。
指令准备部210包括:从存储器310中取指令的指令取出部211、译码被取出的指令的指令译码部212、状态寄存器部213、寄存器部214、第一判断部215以及第二判断部216。
指令准备部220包括:从存储器320中取指令的指令取出部221、译码被取出的指令的指令译码部222、状态寄存器部223、寄存器部224、第一判断部225、以及第二判断部226。
指令准备部230包括:从存储器330中取指令的指令取出部231、译码被取出的指令的指令译码部232、状态寄存器部233、寄存器部234、第一判断部235、以及第二判断部236。
状态寄存器部213以及寄存器部214的各个数据构成正在执行中的程序的上下文数据。状态寄存器部223以及寄存器部224也是同样。状态寄存器部233以及寄存器部234也是同样。
控制部250具有第一转移部251和第二转移部252,在硬件资源260和270以及存储器310、320和330之间控制扩展上下文数据的保存和恢复。
硬件资源260和270分别具有保持数据的寄存器群261和271,辅助多个处理器。各个硬件资源例如可以是FPU(浮点处理单元:Floating Pointnumber processing Unit)、硬件加速器、扩展运算单元等。FPU执行程序中的浮点运算指令(以下称为FPU指令)。硬件加速器从处理器中接受指令,针对被指定的数据高速执行乘累加运算、蝶形运算、数据块的量化或逆量化等。扩展运算单元执行处理器所不能直接执行的扩展指令(乘法指令、除法指令、扩展运算单元所专用的指令等)。
寄存器群261、271分别保持对应的硬件资源的上下文(以下称为扩展上下文数据)。各个硬件资源由多个处理器共享。在此,扩展上下文数据在各个处理器的程序的上下文数据的保存与恢复中是非同步进行的。即,处理器实际上执行利用硬件资源的规定指令(上述的FPU指令、命令、扩展指令),只有在需要该扩展上下文数据时才被保存以及恢复。
存储器310记忆上下文数据311和扩展上下文数据312,所述上下文数据311是由多个处理器进行了时分多路复用的各个程序的上下文数据,所述扩展上下文数据312是按照多个程序中的、利用硬件资源的、包含规定指令的程序的每一个的,所述硬件资源内的寄存器数据的复制。同样,存储器320记忆上下文数据321和扩展上下文数据322。存储器330记忆上下文数据331和扩展上下文数据332。
第一判断部215,在对应于指令准备部210的处理器将要执行程序中的规定指令时,判断硬件资源内的寄存器中是否保持有目前正在执行的程序的扩展上下文数据。
第二判断部216判断硬件资源内的扩展上下文数据,是否属于将要执行该规定指令的处理器。
第一转移部251按照第一判断部215以及第二判断部216的判断结果,从硬件资源中将扩展上下文数据保存到存储器310、320、330的某一个,并将属于与保存的扩展上下文数据相同的处理器(或相同的存储器)的上下文数据恢复。恢复后,硬件资源260或270执行该规定指令。
第二转移部252按照第一判断部215以及第二判断部216的判断结果,从硬件资源将扩展上下文数据保存到存储器310、320、330的某一个,将属于与保存的扩展上下文数据不同的处理器(或不同的存储器)的上下文数据恢复。恢复后,硬件资源260或270执行该规定指令。
硬件资源260或270,在由第一判断部215判断出目前正在执行的程序的扩展上下文数据被保持在硬件资源内的寄存器中,并且在由第二判断部216判断出硬件资源内的扩展上下文数据属于将要执行该规定指令的处理器的情况下,不等待扩展上下文数据的保存以及恢复,而立即执行该规定指令。
通过以上的构成,各个硬件资源260或270能够在多个处理器中共享。即,不论哪个处理器都能够使用各个硬件资源。因此,能够提高硬件资源的使用效率。并且,由于无需按每个处理器来具备硬件资源,因此,只要具备与所需的处理性能相对应的所需数量最小限的硬件资源就可以,从而能够减小电路规模或能够进行最佳化。
图2示出了本发明的实施例1中的状态寄存器部内的第一至第三状态信息的一个例子。
该图示出了状态寄存器部213、223、或233的一部分。在此,以状态寄存器部213为例进行说明。状态寄存器部213包括:被称为PSR(ProcessorStatus Register:处理机状态寄存器)的寄存器、和被称为LPFOSR(LogicalProcessor FPU Operation Status Register)的寄存器。其中,PSR(ProcessorStatus Register:处理机状态寄存器)被包含在程序的上下文数据311中。LPFOSR或者被包含在程序的上下文数据311中,或者不被包含在程序的上下文数据311中而由另外的OS(操作***)来管理。
PSR中包含作为第一状态信息的FE(FPU Enable)位,所述第一状态信息示出了,目前正在执行的程序的扩展上下文数据有被保持在硬件资源内的可能性。
LPFOSR包含作为第二状态信息的LPFE0(Logical Processor FPUEnable 0)和LPFE1位,所述第二状态信息示出与被保持在硬件资源内的扩展上下文数据相对应的处理器。LPFE0、LPFE1位,仅在排他性地某一个为1比特时成为“1”,或者是全部成为“0”。在该例子中,LPFE0位与处理器0相对应,LPFE1位与处理器1以及2相对应。LPFOSR还包括第三状态信息(FL位),该第三状态信息示出是否锁定第二状态信息。
即,正在执行的程序的PSR的FE位示出了,扩展上下文数据有被保持在硬件资源内的可能性,而且,在由LPFE0或LPFE1示出了,正在执行该程序的处理器与被保持在硬件资源内的扩展上下文数据相对应的情况下,该处理器则能够使用由LPFE0或LPFE1所示的某一个硬件资源。
第一判断部215包括第一判断电路(数据判断部),该第一判断电路在对应的处理器将要执行程序中的所述规定指令之时,判断所述第一状态信息是真还是假,在判断为是假之时,产生第一例外中断信号。
第二判断部216包括第二判断电路(处理器判断部),该第二判断电路在对应的第一判断电路判断为假的情况下,判断对应的处理器与所述第二状态信息所表示的处理器是否一致,在判断为假之时,生成第二例外中断信号。第一以及第二判断电路由硬件构成。这样,尤其在不需要替换扩展上下文数据的情况下,能够使处理高速化。
图3是本发明的实施例1中的处理器装置中的操作***的说明图。
在该图中,处理器0~2与三个虚拟处理器或三个物理处理器相对应。
处理器0通过执行第一操作***(以下略称为OS),从而以时分多路复用来执行多个程序。
处理器1以及2通过执行与第一OS不同的第二OS,从而以时分多路复用来执行多个程序。第一OS例如是Linux,第二OS例如是实时OS。
第一转移部251包括按照每个处理器而被设置的保存恢复部251a、251b、251c。各个保存恢复部,在第一例外中断信号产生的情况下,将扩展上下文数据从所述硬件资源中保存到所述存储器,并从所述存储器中将将要执行所述规定指令的处理器的扩展上下文数据恢复到所述硬件资源,在处理器0内的第一判断部215产生了第一例外中断信号之时,处理器0内的所述保存恢复部251a由第一OS启动。
在处理器1以及2的第一判断部225、235产生了第一例外中断信号之时,处理器1以及2的保存恢复部251b、251c由第二OS启动。
处理器0~2之中的至少一个,通过执行管理第一OS和第二OS的第三OS,来控制第二转移部252。也就是说,在某一个第二判断部产生了第二例外中断信号之时,第二转移部252由第三操作***启动。在属于其他的处理器的扩展上下文数据,从硬件资源保存到存储器310、320、330的某一个的工作开始之时,直到将要执行所述规定指令的处理器的扩展上下文数据从所述存储器恢复到所述硬件资源的工作结束为止,被启动的第二转移部252连续地进行处理。据此,在每个程序的上下文数据(尤其是第一状态信息以及第二状态信息)中不会产生矛盾,也不会受到其他的处理器的干扰,并且能够在不同的处理器之间共享硬件资源。
而且,第三OS控制清除部253。清除部253是每个处理器所具备的清除电路的总称。各个清除电路在与该清除电路相对应的处理器迁移到停止状态、等待状态或停顿状态之时,清除与该处理器相对应的第二状态信息(LPFE0以及LPFE1位)。据此,能够释放该处理器所使用的硬件资源,并能够提高在多个处理器被共享的硬件资源的使用效率。但是,在第三状态信息(FL位)被设定(FL=1)的情况下,清除电路的工作被禁止。据此,在使用硬件资源的处理器为固定的情况下,以及硬件资源由某个处理器优先使用的情况下,程序员通过将第三状态信息设定为“锁定”,从而硬件资源能够由该处理器持续占有,从而能够减少不必要的扩展上下文数据的保存以及恢复。
图4是示出本发明的实施例1中的硬件资源切换工作的概略的流程图。在该图中示出了,处理器0~2之中的某一个处理器的工作。在此,以该图示出处理器0的工作,以及硬件资源是FPU为例进行说明。
在处理器0将要执行FPU指令之时(FPU指令的执行请求由处理器0通过硬件来检测出之时)(S30),判断FPU寄存器是否为不能使用(S31)。“FPU寄存器不能使用”的意思是,FE=1、且LPFE0=1(或者LPFE1=1)的情况,在FPU寄存器中保持有属于发出FPU指令的执行请求的处理器0的程序的扩展上下文数据。该判断是由第一判断电路以及第二判断电路在几乎没有延迟时间的情况下被执行的。在这种情况下,FPU指令立即由LPFE0或LPFE1中示出1的一方所对应的FPU来执行(S34)。
而且,在“FPU寄存器不能使用”的情况下,判断FPU寄存器中是否保持有属于其他的处理器的扩展上下文数据(S32)。该判断由第一判断电路以及第二判断电路执行。
在FPU寄存器保持有属于相同处理器0的扩展上下文数据,但不是当前处理器0正在执行中的程序的扩展上下文数据的情况下,也就是说,该处理器的PSR的FE位为1,LPFOSR的LPFE1或LPFE0的某一个为1的情况下,进行LP内的上下文切换(S36)。LP(Logical Processor:逻辑处理器)内的上下文切换由第一转移部251执行。
在FPU寄存器中保存有属于不同的处理器1或2的扩展上下文数据的情况下,即该处理器的LPFOSR的LPFE1和LPFE0均为0的情况下,进行LP间的上下文切换(S41)。LP(Logical Processor:逻辑处理器)间的上下文切换由第二转移部252执行。
在LP内或LP间上下文切换之后,FPU指令立即由FPU执行(S34)。
上述的步骤中,S30、S31、S32由处理器内的硬件执行。S34由FPU执行。S36在第一OS的控制下,由第一转移部251执行。S41在第一OS的控制下,由第二转移部252执行。
图5示出了本发明的实施例1中的第三OS所管理的数据的一个例子。
该图的表T1是,将处理器的ID(在此为LPID)与将要使用的硬件资源(在此为FPU0和FPU1)对应起来的表。表T2是,将FPU编号、占有目前FPU的处理器ID(LPID)、以及锁定属性(FL比特)对应起来的表。第三OS不停地分别将表T1、T2更新为最新状态,在软件上管理FPU。
第三OS参考这样的表,进行(1)FPU0、1与LPID的相关联(应该重新分配给LP的FPU的选择),(2)使用当前的FPU0、1的LPID,(3)目前正在使用FPUn的LP的锁定属性的管理。
更具体而言,(1)第三OS管理各个LP准备使用哪个FPUn(在软件上管理各个LP准备使用的FPUn),决定将图2所示的LPFOSR内的LPFE0、LPFE1设定为哪个比特。即,能够管理在各个LP使用哪个FPUn的上下文。
(2)第三OS通过管理目前正在使用FPU0、1的LPID,从而管理现状的FPU0、1是由哪个处理器使用,以及是否马上要被使用,并将LP间的上下文恢复和保存作为连续的操作来管理。
(3)第三OS能够通过软件来进行使用FPUn的LP的锁定管理,并能够通过软件来管理FPUn的锁定属性。据此,关于FPU的占有状态,能够由自身LP来锁定,也可以从其他的LP中解除。
图6是示出本发明的实施例1中的硬件资源切换工作的详细流程图。在该图中分别示出了,由处理器的硬件执行的步骤、由第一OS或第二OS执行的步骤、以及由第三OS执行的步骤。在该图中示出了处理器0~3中的某一个处理器的工作。在此,以该图表示处理器0的工作、硬件资源是FPU为例进行说明。
处理器0在将要执行FPU之时(在处理器0通过硬件检测出FPU指令的执行请求之时)(S30),第一判断部215通过判断PSR内的FE位(第一状态信息)是真还是假,来判断FPU寄存器是是否能够使用(S31),而且,第二判断部216判断LPFE0和1位(第二状态信息)的某一个位是否为真(S32)。据此,在FE=1且LOFE0=1的情况下,意味着在FPU寄存器保持有,属于发出了FPU执行的执行请求的寄存器0的程序的扩展上下文数据。该判断是由第一判断电路以及第二判断电路在几乎没有延迟时间的状态下进行的。在这种情况下,FPU指令立即由FPU执行(S33)。
并且,第一判断部215在FE=0的情况下(FPU寄存器为不能使用的情况下),产生第一例外中断信号(S34)。据此,控制移向第一OS或第二OS(在此为第一OS)。第一OS为了确保FPU(在此为FPU0)而设定FE=1(S35),并按照需要进行OS内的FPU的上下文的保存与恢复。在第二判断部216判断为FPU0内的扩展上下文数据属于同一个处理器的情况下,将扩展上下文数据从FPU0保存到存储器310,并恢复将要执行目前正在执行中的FPU指令的程序的扩展上下文数据(S36),从中断处理开始返回(S37)。据此,将要执行FPU指令的程序就像什么都没有发生那样,经过S31(True:真)、S32(True:真)的判断。据此,FPU0执行FPU指令。
另外,虽然第一OS设定为FE=1(S36),将要保存FPU0内的扩展上下文数据,但是在由第二判断部216判断为FPU0内的扩展上下文数据属于其他的处理器的情况下,产生第二例外中断信号(S38)。据此,控制迁移到第三OS。
接受了第二例外中断信号的第三OS,为了确保FPU0的使用权而设定LPFE0=1(S38a),判断是否确保了FPU0的使用权(S38b),在能够确保的情况下,参照表T2,判断目前占有FPU0的处理器(FPU0-LPID)与将要执行FPU指令的处理器是否为同一个(S40),如果不相同进行不同的处理器间的上下文替换(S41),退出中断处理(S42)。
在S38b不能确保FPU0的情况下(不管是否将1写入到LPFE0,在LPFE0=0的情况下,即在由其他的物理处理器确保了FPU0的情况下),第三OS直到FPU0被释放为止进入等待处理(S39)。在该等待处理中,可以通过轮询、事件等待等来检查是否被释放。
并且,在S40,在目前占有FPU0的处理器(FPU0-LPID)与将要执行FPU指令的处理器相同的情况下,由于不需要上下文替换,因此直接退出中断处理。该例子是在处理器执行的程序在一旦成为间歇状态、停止状态的情况下,因FE位被清除而引起的。
以下,对上述的处理中的接受了第二例外中断信号的第三OS处理进行进一步地详细说明。
图3所示的第三OS,将由来自第二判断部216、226、236的各个第二例外中断信号启动的第二例外中断处理,作为操作***的一部分功能来执行。第三OS为了支持第二例外中断处理,而包括所述硬件资源的获得处理和所述硬件资源的释放等待处理等。
第三OS在获得处理中,在属于产生了第二例外中断信号的虚拟处理器所属的指令准备部以外的指令准备部的虚拟处理器中,在该硬件资源不是正在被使用的情况下(情况1),将表示真的第一状态信息和表示产生了所述第二例外中断信号的处理器的第二状态信息,设定到产生了第二例外中断信号的指令准备部内的状态寄存器。表示真的第一状态信息示出了,目前正在执行的程序的扩展上下文数据有被保持在硬件资源内的可能性。在上述步骤S38b中,被判断为FPU0的使用权已被确保的情况为情况1。
并且,第三OS在与产生了第二例外中断信号的虚拟处理器所属的指令准备部以外的指令准备部相对应的虚拟处理器中,在该硬件资源为正在被使用的情况下(情况2),执行等待所述硬件资源的释放的等待处理。在上述步骤S38b中,被判断为FPU0的使用权没有被确保,且进入到步骤S39(等待处理)的情况为情况2。
在步骤S38b,获得硬件资源的处理例如具有用于对资源进行排他控制的MUTEX等的管理对象,并且可以利用这样的管理对象。
如以上说明,通过本实施例的处理器装置,能够在多个处理器共享各个硬件资源。即,不论在哪个处理器都能够使用各个硬件资源。因此,能够提高硬件资源的使用效率。由于无需使每个处理器都具备硬件资源,因此只需要按照所需的处理性能具备所需最小限的数量的硬件资源即可,从而能够减小电路规模或能够进行最佳化。能够在多个处理器高效率地共享FPU以及硬件资源加速器等扩展运算单元,并能够使扩展上下文数据的保存以及恢复成为最小限度。
(实施例2)
在本实施例中,对将在实施例1说明的处理器装置适用于媒体处理器的情况的构成进行说明。
本实施例所涉及的处理器***包括单一的处理器块,该单一的处理器块共享资源,进行主处理和媒体处理。处理器块具有与实施例1的处理器装置相同的功能,并且,由单一的处理器装置进行,该单一的处理器装置共享资源,进行主处理和媒体处理。本发明的实施例所涉及的处理器***在针对主处理的线程和媒体处理的线程给予不同的标签信息的同时,将处理器***所具有的资源与该标签信息对应起来分割。据此,本发明的实施例所涉及的处理器***不仅能够提高面积优化,而且能够保证性能以及提高坚固性。
首先,对本发明的实施例所涉及的处理器***的构成进行说明。
图7是示出实施例2所涉及的处理器***10的基本构成的功能方框图。
该处理器***10是进行与影像声音流有关的各种信号处理的***LSI,利用外部存储器15来执行多个线程。例如,处理器***10被搭载于数字电视***、DVD记录器、数字相机以及便携式电话等。该处理器***10包括:处理器块11、流I/O(输入/输出)块12、AVIO(Audio Visual InputOutput:音频视频输入输出)块13、以及存储器IF(接口)块14。
处理器块11与实施例1中所说明的处理器装置相同。以下,省略相同之处,以不同之处为中心进行说明。
处理器块11是控制整个处理器***10的处理器,通过控制总线16来控制流I/O块12、AVIO块13、以及存储器IF块14,并通过数据总线17以及存储器IF块14来针对外部存储器15进行存取。并且,处理器块11是一电路块,通过数据总线17以及存储器IF块14,从外部存储器15读出压缩图像声音流等图像声音数据,在进行了压缩或扩展等媒体处理之后,再次通过数据总线17以及存储器IF块14,将处理后的图像数据或声音数据存储到外部存储器15。
即,处理器块11进行主处理和媒体处理,所述主处理是指,不依存于影像声音的输出周期(帧率等)的非实时的通用(与控制相关联的)处理,所述媒体处理是指,依存于影像声音的输出周期的实时的通用(与媒体相关联的)处理。
例如,处理器***10搭载于数字电视***的情况下,主处理进行该数字电视***的控制,媒体处理进行数字影像的扩展。
流I/O块12是一电路块,在由处理器块11所进行的控制下,从蓄积媒体以及网络等周边设备中,读取压缩图像声音流等流数据,通过数据总线18以及存储器IF块14,存储到外部存储器15,或进行相反方向的流传送。这样,流I/O块12进行不依存于影像声音的输出周期的非实时的IO处理。
AVIO块13是一电路块,在由处理器块11所进行的控制下,通过数据总线19以及存储器IF块14从外部存储器15中读出图像数据以及声音数据等,在施行了各种图形处理等之后,作为图像信号以及声音信号输出到外部的显示装置以及扬声器等,或进行相反方向的数据传送。这样,AVIO块13进行依存于影像声音的输出周期的实时的IO(输入输出)处理。
存储器IF块14是一电路块,在由处理器块11所进行的控制下,进行控制,以使得在处理器块11、流I/O块12、AVIO块13、以及存储器IF块14和外部存储器15之间,并行地进行数据请求。并且,存储器IF块14按照来自处理器块11的请求,在确保处理器块11、流I/O块12、AVIO块13、以及存储器IF块14和外部存储器15之间的传输频带的状态下,保证等待时间。
接着,对处理器块11的详细构成进行说明。
图8是示出处理器块11的构成的功能方框图。
该处理器块11包括:执行部101、VMPC(虚拟多处理器控制部)102、TLB(Translation Lookaside Buffer:旁路转换缓冲)104、物理地址管理部105、FPU(Floating Point number processing Unit:浮点处理单元)107、FPU分配部108、高速缓冲存储器109、BCU110、以及中断控制部111。
在此,处理器块11作为虚拟多处理器(VMP:Virtual Multi Processor)发挥作用。虚拟多处理器一般是指指令并行处理器的一种,其将多个逻辑处理器(LP:Logical Processor)的功能以时间分割来表现。在此,一个LP实质上与被设定在物理处理器(PP:Physical Processor)的寄存器群的一个上下文相对应。通过管理分配到各个LP的时间单位(时隙:Time Slot)的频度,从而能够保证由各个LP执行的应用程序间的负载平衡。另外,至于VMP的构成以及工作,其中具有代表性的一个例子已经由日本特开2003-271399号公报(专利文献3)详细公开,因此在此省略详细说明。
并且,处理器块11作为多线程流水线型处理器(多线程处理器)发挥作用。多线程流水线型处理器通过同时处理多个线程,并且为了不使执行流水线空闲而处理多个线程,从而能够提高处理效率。另外,至于多线程流水线型处理器的构成以及工作,作为一个代表例子由于已经由日本特开2008-123045号公报(专利文献4)详细公开,因此在此省略详细说明。
执行部101同时执行多个线程。该执行部101包括:多个物理处理器121、运算控制部122、以及运算部123。
多个物理处理器121分别包括寄存器。每个寄存器保持一个以上的上下文124。在此,上下文124是指,与多个线程(LP)的每一个对应,为了执行对应的线程而所需的控制信息以及数据信息等。各个物理处理器121取线程(程序)中的指令并译码,将译码结果发行到运算控制部122。
运算部123具有多个运算器,同时执行多个线程。
运算控制部122进行多线程流水线型处理器中的流水线控制。具体而言,运算控制部122为了不使执行流水线空闲,而将多个线程分配给具有运算部123的运算器之后执行。
VMPC102控制虚拟多线程处理。该VMPC102包括:排程器126、上下文存储器127、以及上下文控制部128。
排程器126是硬件排程器,按照多个线程的优先级,进行决定多个线程的执行顺序以及执行线程的PP的调度。具体而言,排程器126通过将LP分配到PP或取消该分配,来切换执行部101所执行的线程。
上下文存储器127记忆分别与多个LP对应的多个上下文124。另外,该上下文存储器127或多个物理处理器121所具备的寄存器相当于本发明的保持单元。
上下文控制部128进行所谓的上下文的恢复以及保存。具体而言,上下文控制部128将执行结束了的物理处理器121所保持的上下文124写入到上下文存储器127。并且,上下文控制部128从上下文存储器127中读出今后将要执行的线程的上下文124,并将读出的上下文124转送到与该线程相对应的LP所指派的物理处理器121。
图9是示出一个上下文124的构成的图。并且,图9中没有示出用于执行线程的所需的通常的控制信息以及通常的数据信息等,仅示出了新被附加到上下文124的信息。
如图9所示,上下文124包括:TVID(TLB存取虚拟标识符)140、PVID(物理存储器保护虚拟标识符)141、以及MVID(存储器存取虚拟标识符)142。
该TVID140、PVID141以及MVID142是表示,多个线程(LP)的每一个是属于主处理的线程还是属于媒体处理的线程的标签信息。
TVID140用于设定多个虚拟存储器保护组。例如,对主处理的线程和媒体处理的线程分别赋予不同的TVID140。执行部101利用此TVID140,能够制作分别独立的逻辑地址空间的页面管理信息。
PVID141用于限制物理存储器区域的存取。
MVID142用于设定向存储器IF块14的存取方式。存储器IF块14利用此MVID142来决定是优先等待时间(重视响应度),还是优先总线带宽(保证性能)。
图10在模式上示出了处理器***10中的逻辑地址空间的管理。如图10所示,处理器***10由用户级、管理程序级以及虚拟监视器级这三个层次来控制。
用户级是进行每个线程(LP)的控制的层次。管理程序级是与进行多个线程的控制的操作***(OS)相对应的层次。例如,图10所示的管理程序级中包括:作为主处理的OS的Linux内核程序,和作为媒体处理的OS的***管理(System Manager)。
虚拟监视器级是控制管理程序级的多个OS。具体而言,由虚拟监视器级的OS(监视器程序)来进行利用了TVID140的逻辑地址空间的区分。即,处理器***10为了不使多个OS所使用的逻辑地址空间相互干扰,而管理逻辑地址空间。例如,各个上下文的TVID140、PVID141以及MVID142使设定只能在虚拟监视器级进行。
并且,虚拟监视器级的OS是本发明的分离单元,将处理器***10所具有的多个资源分割为,与属于主处理的线程相对应的第一资源和与属于媒体处理的线程相对应的第二资源。在此,资源具体是指,外部存储器15的存储器区域(逻辑地址空间以及物理地址空间)、高速缓冲存储器109的存储区域、TLB104的存储区域以及FPU107。
这样,通过在虚拟监视器级分割资源,从而设计者能够以与由处理器独立地执行主处理和媒体处理相同的情况,来设计主处理以及媒体处理的OS。
TLB104是一种高速缓冲存储器,保持地址变换表130,该地址变换表130是示出逻辑地址与物理地址的对应关系的页表的一部分。该TLB104利用地址变换表130,进行逻辑地址与物理地址之间的变换。
图11示出了地址变换表130的构成。
如图11所示,地址变换表130包括多个条目150。各个条目150包括:用于识别逻辑地址的TLB标签部151、以及与该TLB标签部151相对应的TLB数据部152。TLB标签部151包括:VPN153、TVID140、以及PID154。TLB数据部152包括:PPN155和Attribute156。
VPN153是用户级的逻辑地址,具体而言是逻辑地址空间的页编号。
PID154是用于识别使用了该数据的处理的ID。
PPN155是与该TLB标签151相对应的物理地址,具体而言是物理地址空间的页编号。
Attribute156示出了与该TLB标签部151相对应的数据的属性。具体而言,Attribute156示出了:是否能够针对该数据进行存取、是将该数据存储到高速缓冲存储器109还是不存储、以及该数据是否具有特权等。
并且,TLB104对多个线程(LP)所使用的逻辑地址空间进行管理。
图12在模式上示出了处理器***10中的逻辑地址的对应关系。如以上所述,TLB104针对每个处理的逻辑地址(VPN153)和PID154以及TVID140的组,使一个物理地址(PPN155)与其对应。这样,在具有相同TVID的LP上的管理程序级中,通过将一个物理地址与每个处理的逻辑地址(VPN153)和PID154组成的组相对应,从而能够在管理程序级中,在区分了各个处理的逻辑地址的基础上,使该逻辑地址与物理地址相对应。
在此,在TLB104的更新时,被更新的条目TVID由被设定到进行更新的LP的TVID来设定。
并且,TLB104针对将TVID140附加到每个处理的逻辑地址(VPN153)和PID154的组,使一个物理地址(PPN155)与其对应。据此,TLB104在虚拟监视器级中,通过对主处理和媒体处理分别设定不同的TVID,从而能够给予独立地逻辑地址空间。
并且,该TLB104具备条目指定寄存器135。条目指定寄存器135保持用于指定分配给TVID140的条目150的信息。
图13示出了条目指定寄存器135中所存储的数据的一个例子。如图13所示,条目指定寄存器135保持TVID140与条目150的对应关系。并且,条目指定寄存器135由虚拟监视器级的OS(监视器程序)设定并被更新。
TLB104利用被设定在条目指定寄存器135的信息,按照各个TVID140来决定使用的条目150。具体而言,TLB104在TLB失败(TLB miss)(从LP输入的逻辑地址(TLB标签部151)没有被保持在地址变换表130中)的情况下,置换与该LP的TVID140相对应的条目150的数据。
图14在模式上示出了在TLB104的条目150的分配状态。
如图14所示,多个条目150由多个LP共享。并且,TLB104利用TVID140,与具有相同的TVID140的LP之间共享条目150。例如,在具有TVID0的LP0中被分配有条目0-条目2,在具有TVID1的LP1以及LP2中被分配有条目3-条目7。据此,TLB104能够针对属于主处理的线程使用条目0-条目2,针对属于媒体处理的线程使用条目3-条目7。
图15是示出TLB104所进行的处理的流程的流程图。
如图15所示,在发生从LP向外部存储器15的存取的情况下,首先,TLB104判断是否存储了与从进行存取的LP输入的逻辑地址(VPN153、TVID140以及PID154)相同的逻辑地址(S101)。
在没有存储的情况下,即TLB失败的情况下(S101的“是”),TLB104更新被分配在进行存取的LP的TVID140的条目150。换而言之,TLB104更新进行存取的LP的TVID140和同一个TVID140的条目150(S102)。具体而言,TLB104从被存储在外部存储器15等的页表中,读出TLB失败后的逻辑地址与物理地址的对应关系,并将读出的对应关系存储到被分配在进行存取的LPTVID140的条目150中。
接着,TLB104利用更新的对应关系,将逻辑地址变换为物理地址(S103)。
另外,在步骤S101,在存储了与从LP输入的逻辑地址相同的逻辑地址的情况下,即TLB命中的情况下(S101的“否”),TLB104利用TLB命中后的对应关系,将逻辑地址变换为物理地址(S103)。
在此,被存储在外部存储器15等的页表是按照每个TVID140或每个PVID141而被事先制作的,以便分配外部存储器15的物理地址。该页表例如由管理程序级或虚拟监视器级OS制作以及更新。
物理地址管理部105利用PVID141来进行物理地址空间的地址保护。该物理地址管理部105包括:多个物理存储器保护寄存器131、保护违反寄存器132、错误地址寄存器133。
各个物理存储器保护寄存器131按照各个物理地址范围,保持示出能够针对该物理地址范围进行存取的LP的信息。
图16示出了被保持在一个物理存储器保护寄存器131中的信息的构成。如图16所示,物理存储器保护寄存器所保持的信息中包含:BASEADDR161、PS162、PN163、PVID0WE-PVID3WE164、PVID0RE-PVID3WE165。
BASEADDR161、PS162、以及PN163是指定物理地址范围的信息。具体而言,BASEADDR161是指定的物理地址范围的开头的地址的上位16位。PS162表示页面大小。例如,作为页面大小被设定有1KB、64KB、1MB或64MB。PN163示出被设定到PS162的页面大小的页面数。
PVID0WE-PVID3WE164以及PVID0RE-PVID3RE165示出,能够在以BASEADDR161、PS162以及PN163指定的物理地址范围内进行存取的LP的PVID141。
具体而言,PVID0WE-PVID3WE164分别按照PVID141设置1位。并且,PVID0WE-PVID3WE164示出,被赋予了对应的PVID141的LP能否将数据写入到被指定的物理地址范围。
PVID0RE-PVID3RE165分别按照每个PVID141设置1位。并且,PVID0RE-PVID3RE165示出,被赋予了对应的PVID141的LP能否读出被指定的物理地址范围的数据。
并且,在此虽然是4种PVID141被赋予在多个LP,不过只要是2种以上的PVID141被赋予在多个LP即可。
图17示出了由PVID141保护的物理地址空间的一个例子。并且,在此,物理地址管理部105具有4个物理存储器保护寄存器131(PMG0PR-PMG3PR)。并且,PVID0被赋予在Linux(主处理)的LP群,PVID1被赋予在媒体处理的LP中的图像处理的LP群,PVID2被赋予在媒体处理的LP中的声音处理的LP群,PVID3被赋予在System Manager(***信息管理,媒体处理的OS)的LP群。
并且,物理地址管理部105,在LP对没有被该LP的PVID141许可的物理地址进行了存取的情况下,在发生例外中断的同时,将发生了错误的存取信息写入到保护违反寄存器132,并且,将成为错误的原因的存取的被存取的物理地址写入到错误地址寄存器133。
图18示出了保护违反寄存器132中所保持的存取信息的构成。如图18所示,保护违反寄存器132中所保持的存取信息包括PVERR167和PVID141。PVERR167示出,该错误是否为物理存储器空间保护违反(LP对没有被该LP的PVID141许可的物理地址进行存取的错误)。PVID141被设定有发生了物理存储器空间保护违反的PVID141。
图19示出了错误地址寄存器133中所保持的信息的构成。如图16所示,错误地址寄存器133保持成为错误原因的存取的被存取的物理地址(BEA[31:0])。
如以上所述,通过利用PVID141保护物理地址,从而能够提高***的坚固性。具体而言,在错误排除时,设计者能够容易地从发生了错误的物理地址以及PVID中,判别图像处理以及声音处理中的哪个处理发生了错误。并且,在主处理的错误排除时,对于在不能写入图像处理等地址发生的误工作,能够毫不迟疑地对图像处理的误工作进行错误排除。
FPU分配部108将多个FPU107分配给LP。该FPU分配部108具备FPU分配寄存器137。
图20示出了FPU分配寄存器137中所存储的数据的一个数据的例子。如图20所示,按照每个TVID140FPU107对应于FPU分配寄存器137。并且,FPU分配寄存器137由虚拟监视器级的OS(监视器程序)来设定以及更新。
图21在模式上示出了由FPU分配部108进行的FPU107的分配处理。
如图21所示,多个FPU107由多个LP共享。并且,FPU分配部108利用TVID140,在具有相同TVID140的LP之间共享FPU107。例如,FPU分配部108将FPU0分配给具有TVID0的LP0,将FPU1分配给具有TVID1的LP1以及LP2。
并且,LP利用由FPU分配部108分配的FPU107来执行线程。
高速缓冲存储器109是对在处理器块11所使用的数据进行暂时存储的存储器。并且,高速缓冲存储器109针对具有不同的TVID140的LP,使用独立的不同的数据区域(Way168:路168)。该高速缓冲存储器109具有路指定寄存器136。
图22A以及图22B示出了路指定寄存器136中所存储的数据的一个例子。
如图22A所示,按照每个TVID140,路168对应于路指定寄存器136。并且,路指定寄存器136由虚拟监视器级的OS(监视器程序)设定以及更新。
并且,如图22B所示,也可以按照每个LP来与路168对应。在这种情况下,例如上下文124内包含该LP所使用的路的信息,虚拟监视器级的OS或管理程序级的OS参考上下文124,设定并更新路指定寄存器136。
图23在模式上示出了由高速缓冲存储器109进行的路168的分配处理。
如图23所示,高速缓冲存储器109具有多个路168(way0-way7),以作为数据存储单位。该高速缓冲存储器109利用TVID140,在具有相同TVID140的LP之间共享路168。例如,在具有TVID0的LP0被分配有way0-way1,具有TVID1的LP1以及LP2被分配有way2-way7。据此,高速缓冲存储器109将属于主处理的线程的数据高速缓存到way0-way1,将属于媒体处理的线程的数据高速缓存到way2-way7。
这样,高速缓冲存储器109能够在具有不同的TVID140的LP之间,不相互驱逐高速缓存数据。
图24是由高速缓冲存储器进行的处理的流程的流程图。
如图24所示,在由LP向外部存储器15进行了存取的情况下,首先,高速缓冲存储器109判断是否存储了与从进行存取的LP输入的地址(物理地址)相同的地址(S111)。
在没有存储的情况下,即高速缓存失败的情况下(S111的“是”),高速缓冲存储器109将从进行存取的LP输入的地址以及数据,高速缓存到由路指定寄存器136指定的路168(S112)。具体而言,在读操作(read-access)的情况下,高速缓冲存储器109从外部存储器15等读出数据,并将读出的数据存储到由路指定寄存器136指定的路168。并且,在写操作(write-access)的情况下,高速缓冲存储器109将从进行存取的LP输入的数据存储到由路指定寄存器136指定的路168。
另外,在步骤S111,在存储了与从进行存取的LP输入的地址相同的地址的情况下,即在高速缓存命中的情况下(S111的“否”),高速缓冲存储器109将高速缓存命中的数据更新(写操作时)或输出到进行存取的LP(读操作时)(S113)。
BCU110用于控制处理器块11与存储器IF块14之间的数据传送。
中断控制部111进行中断的检测、请求以及许可等。该中断控制部111具备多个中断控制寄存器134。例如,中断控制部111具备128个中断控制寄存器134。中断控制部111参考中断控制寄存器134,将发生了中断之事通知给与发生了中断的中断因素对应的线程(LP)。
在中断控制寄存器134中被设定有与中断因素相对应的将要被中断的线程。
图25示出了一个中断控制寄存器134的构成。图25所示的中断控制寄存器134包括与中断因素相对应的、***中断171(SYSINT)、LP标识符172(LPID)、LP中断173(LPINT)、HW事件174(HWEVT)。
***中断171示出该中断是否为***中断(全局中断)。LP标识符172示出将要被中断的LP。LP中断173示出该中断是否为LP中断(局部中断)。HW事件174示出是否由于该中断因素而产生硬件事件。
在***中断的情况下,中断控制部111将发生了中断之事通知给正在执行当前线程的LP。并且,在LP中断的情况下,中断控制部111针对LP标识符所表示的LP进行中断。并且,在硬件事件的情况下,针对LP标识符172所表示的LP发送硬件事件。由该硬件事件而该LP被唤起。
并且,***中断171以及LP标识符172只有虚拟监视器级的OS(监视器程序)能够改写,LP中断173以及HW事件174只有虚拟监视器级以及管理程序级的OS能够改写。
以下对处理器***10内的存储器存取管理进行说明。
图26在模式上示出了处理器***10中的存储器存取管理的状态。如图26所示,MVID142从处理器块11被发送到存储器IF块14。存储器IF块14利用该MVID142,按照每个MVID142,在对总线带宽进行了分配的基础上,利用被分配到请求存取一方的线程的MVID142的总线带宽,向外部存储器15进行存取。
并且,存储器IF块14具备总线带宽指定寄存器138。
图27示出了存储器IF块14中的总线带宽指定寄存器138所保持的数据的一个例子。另外,在图27中,在作为主处理的Linux、媒体处理中所包含的声音处理(Audio)、以及媒体处理中所包含的图像处理(Video)中分别被赋予了不同的MVID142。
如图27所示,存储器IF块14按照每个MVID142来分配总线带宽。并且,按照每个MVID142来决定优先顺序,根据该优先顺序来进行向外部存储器15的存取。
据此,在按照每个MVID142确保了所需的总线带宽的同时,请求的存取等待时间也得到了保证。因此,处理器***10能够实现多个应用程序的性能保证以及实时性的保证。
并且,通过利用MVID142来分割总线带宽,从而即使在存储器IF块14与处理器块11仅通过一个数据总线17来连接的情况下,也能够进行与通过多个数据总线来连接的存储器IF块14和处理器块11的情况相同的控制。即,能够进行与针对多个块分割总线的情况相同的控制。
并且,由于用于针对来自多个块的存取请求,确保总线带宽以及保证等待时间的技术,其中具有代表性的例子由日本特开2004-246862号公报(专利文献5)详细公开,因此在此省略详细说明。
并且,在处理器***10,能够利用TVID140以及以往的MVP的功能,来任意地设定媒体处理和主处理的处理时间的分配。具体而言,例如,通过虚拟监视器级的OS,针对各个TVID140的处理时间的分配(媒体处理和主处理的处理时间的分配)被设定到VMPC102所具备的寄存器(图中未示出)。VMPC102参考像以上这样被设定的处理时间的分配和各个线程的TVID140,来切换执行部101所执行的线程,以便满足该处理时间的分配。
接着,对虚拟监视器级的OS(监视器程序)所进行的资源分割处理进行说明。
图28是示出由监视器程序进行的资源分割处理的流程的流程图。
首先,监视器程序通过设定多个上下文124的TVID140、PVID141以及MVID142,从而将多个线程分割为多个组(S121、S122、S123)。
接着,监视器程序通过将TVID140与条目150的对应关系设定到条目指定寄存器135,从而将TLB104所具有的多个条目150分割到与主处理相对应的第一条目和与媒体处理相对应的第二条目(S124)。
参照被设定到该条目指定寄存器135的对应关系和进行存取的线程的TVID140,TLB104将条目150分配到属于主处理的线程和属于媒体处理的线程。
并且,监视器程序通过将TVID140(或LP)和路168的对应关系设定到路指定寄存器136,从而将高速缓冲存储器109所具有的多个路168分割为与主处理相对应的第一路和与媒体处理相对应的第二路(S125)。
参考被设定到该路指定寄存器136的对应关系和进行存取的线程的TVID140,TLB104将路168分配到属于主处理的线程和属于媒体处理的线程。
并且,监视器程序通过将TVID140与FPU107的对应关系设定到FPU分配寄存器,从而将多个FPU107分割为与主处理相对应的第一FPU和与媒体处理相对应的第二FPU(S126)。
参考被设定到该FPU分配寄存器137的对应关系和线程的TVID140,FPU分配部108将FPU107分配到属于主处理的线程和属于媒体处理的线程。
并且,监视器程序通过将MVID142与总线带宽的对应关系设定到总线带宽指定寄存器138,从而将外部存储器15与存储器IF块14之间的总线带宽,分割为与主处理对应的第一总线带宽和与媒体处理相对应的第二总线带宽(S127)。
参考被设定在该总线带宽指定寄存器138的对应关系和进行存取的线程的MVID142,存储器IF块14将总线带宽分配给属于主处理的线程和属于媒体处理的线程。
并且,监视器程序制作示出物理地址和逻辑地址的对应关系的页表。此时,监视器程序通过设定PVID141与物理地址的对应关系,从而在将外部存储器15的物理地址空间,分割为与主处理对应的第一物理地址范围和与媒体处理对应的第二物理地址范围的同时,将第一物理地址范围分配给主处理的线程,将第二物理地址范围分配给第二物理地址范围(S128)。并且,监视器程序通过将PVID141与物理地址的对应关系设定到物理存储器保护寄存器131,从而进行物理地址的保护。
并且,监视器程序与各个中断因素相对应,将将要被中断的LP等设定到中断控制寄存器134(S129)。据此,监视器程序能够对主处理和媒体处理分别进行独立地中断控制。
参考被设定到该中断控制寄存器134的对应关系和中断因素,中断控制部111使与该中断因素对应的线程中断。
并且,通过监视器程序的各个设定的顺序,并非受图28所示的顺序所限。
并且,可以不以监视器程序来制作页表,由被分配了TVID140的管理程序级的OS来决定,分别被分配的与物理地址对应的逻辑地址,能够分别制作页表,不过,本发明并非受这些所限制。
通过以上所述,本实施例所涉及的处理器***10由于具备,共享资源并进行主处理和媒体处理的单一的处理器块11,因此能够提高面积优化。并且,处理器***10在将不同的标签信息(TVID140、PVID141以及MVID142)给予到主处理的线程和媒体处理的线程的同时,将处理器***10所具有的资源与该标签信息对应起来进行分割。据此,处理器***10能够将资源分别独立地分配给主处理和媒体处理。因此,由于在主处理与媒体处理之间不会产生资源的竞争,所以处理器***10能够提高性能的保障以及坚固性。
并且,物理地址管理部105利用PVID141,在各个线程将要存取被指定的物理地址范围以外的情况下,发生中断。据此,处理器***10能够提高***的坚固性。
以上,对本实施例所涉及的处理器***10进行了说明,不过本发明并非受这些实施例所限。
例如,在以上的说明中,以处理器块11进行主处理和媒体处理这两种处理为例进行了说明,不过也可以进行包括除此之外的处理的三种以上的处理。在这种情况下,分别与该三种以上的处理相对应的三种以上的TVID140被赋予到多个线程。
同样,PVID141以及MVID142的种类也不受上述的数量所限,只要是多个即可。
并且,在上述的说明中,作为对多个线程进行分组的标签信息,在此说明了TVID140、PVID141以及MVID142这三种,不过,处理器***10也可以仅利用一个标签信息(例如,TVID140)。即,处理器***10也可以不利用PVID141以及MVID142,物理地址的管理以及总线带宽的控制也可以利用TVID140。并且,处理器***10也可以利用两种标签信息,也可以利用四种以上的标签信息。
并且,在上述的说明中,虽然说明了中断控制寄存器134、条目指定寄存器135、路指定寄存器136、FPU分配寄存器137以及页表,是由虚拟监视器级的OS(监视器程序)设定以及更新的,不过也可以是,通过虚拟监视器级的OS的指示,管理程序级的OS也可以对中断控制寄存器134、条目指定寄存器135、路指定寄存器136、FPU分配寄存器137以及页表进行设定以及更新。即,也可以是,通过虚拟监视器级的OS,管理程序级OS中被通知有被分配到该管理程序级的OS的资源,该管理程序级的OS为了利用被通知来的资源,而对中断控制寄存器134、条目指定寄存器135、路指定寄存器136、FPU分配寄存器137以及页表进行设定以及更新。
并且,以上实施例所涉及的处理器***10中所包含的各个处理部典型地可以作为集成电路的LSI来实现。这些可以被单独地制为一个芯片,也可以将其中的一部分或全部制成一个芯片。
在此,虽然称作了LSI,不过根据集成度的不同,也可以被称作IC、***LSI、超级LSI、以及极超级LSI。
并且,集成电路化不仅限于LSI,也可以以专用电路或通用处理器来实现。在LSI制造后,也可以利用可编程的FPGA(现场可编程门阵列)或利用能够将LSI内部的电路单元的连接以及设定重新构建的可重装处理器。
而且,随着半导体技术的进步或派生出的其他的技术,若出现了能够取代LSI的集成电路化的技术,当然也可以利用这些技术来对使用了这种技术的各个处理部进行集成化。生物技术的适用等也将成为可能。
并且,本发明的实施例所涉及的处理器***10的功能的一部分或全部,也可以通过执行部101等执行程序来实现。
并且,本发明可以作为上述的程序,也可以作为记录了上述程序的记录介质。并且,上述的程序可以通过互联网等传送介质来流通也是不言而喻的。
并且,上述实施例所涉及的处理器***10以及其变形例的功能中至少一部分也可以被组合。
本发明能够适用于处理器装置以及多线程处理器装置,尤其能够适用于数字电视、DVD记录器、数字摄像机以及便携式电话等中所搭载的媒体处理用的处理器装置以及多线程处理器装置。
符号说明
10 处理器***
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 路(way)指定寄存器
137 FPU分配寄存器
138 总线带宽指定寄存器
150 条目
151 TLB标签部
152 TLB数据部
168 路(way)
171 ***中断
172 LP标识符
173 LP中断
174 HW事件
210 指令准备部
213,223,233 状态寄存器部
214 寄存器部
215,225,235 第一判断部
216,226,236 第二判断部
220 指令准备部
230 指令准备部
240 执行流水线部
250 控制部
251 第一转移部
251a,251b,251c 保存恢复部
252 第二转移部
253 清除部
260,270 硬件资源
261,271 寄存器群
310,320,330 存储器
311 上下文数据
312 扩展上下文数据
Claims (16)
1.一种处理器装置,包括:
多个处理器,对多个程序一边进行切换一边执行;
一个以上的硬件资源,具有保持数据的寄存器,辅助所述多个处理器的指令执行;
存储器,按照所述多个程序中的包含利用所述硬件资源的规定指令的每个程序,记忆扩展上下文数据,该扩展上下文数据是所述硬件资源内的寄存器数据的复制;
控制部,在所述硬件资源与所述存储器之间,控制扩展上下文数据的保存与恢复;
第一判断部,判断目前正在执行中的程序的扩展上下文数据是否有被保持在所述硬件资源内的可能性;以及
第二判断部,判断所述硬件资源内的扩展上下文数据,是否属于将要执行所述规定指令的处理器;
在由所述第一判断部判断出有所述可能性、且由所述第二判断部判断出所述硬件资源内的扩展上下文数据属于将要执行所述规定指令的处理器的情况下,所述控制部不进行扩展上下文数据的保存以及恢复,所述硬件资源执行该规定指令。
2.如权利要求1所述的处理器装置,
所述控制部包括:
第一转移部,按照所述第一判断部以及所述第二判断部的判断结果,将扩展上下文数据从硬件资源保存到存储器,将与保存了的扩展上下文数据属于同一个处理器的上下文数据恢复;以及
第二转移部,按照所述第一判断部以及所述第二判断部的判断结果,将扩展上下文数据从硬件资源保存到存储器,将与保存了的扩展上下文数据属于不同的处理器的扩展上下文数据恢复。
3.如权利要求1所述的处理器装置,
所述硬件资源是扩展运算单元,执行所述多个处理器所不能执行的扩展指令,所述规定指令是所述扩展指令。
4.如权利要求1所述的处理器装置,
所述第一判断部包括被设置在多个处理器的每一个的数据判断部;
各个数据判断部,在该数据判断部所对应的处理器将要执行程序中的所述规定指令之时,判断在与该数据判断部相对应的处理器目前正在执行中的程序的扩展上下文数据,是否有被保持在所述硬件资源内的可能性;
所述第二判断部包括被设置在多个处理器的每一个的处理器判断部;
各个处理器判断部判断所述硬件资源内的扩展上下文数据是否属于将要执行所述规定指令的处理器。
5.如权利要求4所述的处理器装置,
所述多个处理器的每一个具有状态寄存器;
各个状态寄存器的数据的复制被包含在每个程序的上下文数据中;
各个状态寄存器保持第一状态信息和第二状态信息,所述第一状态信息按照每个所述硬件资源示出,目前正在执行中的程序的扩展上下文数据是否有被保持在该硬件资源内的可能性,所述第二状态信息按照每个所述硬件资源示出,被保持在该硬件资源内的扩展上下文数据所对应的处理器;
所述各个数据判断部包括第一判断电路,该第一判断电路在对应的处理器将要执行程序中的所述规定指令之时,判断所述第一状态信息是真还是假,在判断为是假之时,产生第一例外中断信号;
所述各个处理器判断部包括第二判断电路,该第二判断电路在对应的所述第一判断电路判断为假之时,判断对应的处理器与所述第二状态信息所示的处理器是否一致,在判断为是假之时,产生第二例外中断信号;
所述硬件资源,在所述第二判断电路判断为一致之时,不等待扩展上下文数据的保存以及恢复,而按照该规定指令立即工作。
6.如权利要求5所述的处理器装置,
所述控制部包括:
第一转移部,按照所述第一判断部以及所述第二判断部的判断结果,将扩展上下文数据从硬件资源保存到存储器,将与保存了的扩展上下文数据属于同一个处理器的上下文数据恢复;以及
第二转移部,按照所述第一判断部以及所述第二判断部的判断结果,将扩展上下文数据从硬件资源保存到存储器,将与保存了的扩展上下文数据属于不同的处理器的扩展上下文数据恢复。
7.如权利要求6所述的处理器装置,
所述第一转移部包括被设置在每个处理器的保存恢复部;
各个保存恢复部,在产生了所述第一例外中断信号的情况下,将扩展上下文数据从所述硬件资源保存到所述存储器,将将要执行所述规定指令的处理器的扩展上下文数据,从所述存储器恢复到所述硬件资源;
所述多个处理器包括第一处理器和第二处理器;
所述第一处理器通过执行第一操作***,从而以时分多路复用来执行多个程序;
所述第二处理器通过执行与第一操作***不同的第二操作***,从而以时分多路复用来执行多个程序;
所述第一处理器内的所述保存恢复部,在所述第一处理器内的所述第一判断电路产生了所述第一例外中断信号之时,由所述第一操作***启动;
所述第二处理器内的所述保存恢复部,在所述第二处理器内的所述第一判断电路产生了所述第一例外中断信号之时,由所述第二操作***启动。
8.如权利要求7所述的处理器装置,
所述多个处理器的至少一个执行第三操作***,该第三操作***管理所述第一操作***和所述第二操作***;
所述第二转移部,在任一个所述第二判断电路产生了所述第二例外中断信号之时,由第三操作***启动。
9.如权利要求8所述的处理器装置,
所述第三操作***,在任一个所述第二判断电路产生了所述第二例外中断信号之时,在该硬件资源正在执行其他的处理器的规定指令的情况下,等待该硬件资源的释放,在确保了该硬件资源之后,启动所述第二转移部。
10.如权利要求8所述的处理器装置,
所述第二转移部,从所述其他的处理器所对应的扩展上下文数据从所述硬件资源保存到所述存储器的工作开始,直到将要执行所述规定指令的处理器的扩展上下文数据从所述存储器恢复到所述硬件资源的工作的改善为止,连续地进行处理。
11.如权利要求8所述的处理器装置,
各个处理器进一步包括清除电路,该清除电路在该处理器迁移到停止状态、等待状态、或停顿状态之时,清除该处理器所对应的第二状态信息。
12.如权利要求11所述的处理器装置,
所述各个状态寄存器保持第三状态信息,该第三状态信息示出是否锁定第二状态信息;
所述第三操作***,在第三状态信息示出锁定第二状态信息之时,禁止由所述清除电路清除第二状态信息。
13.一种多线程处理器装置,包括:
多线程处理器,该多线程处理器包括,通过同时执行多个线程来切换多个程序的多个虚拟处理器,
一个以上的硬件资源,具有保持数据的寄存器,辅助所述多个虚拟处理器的指令执行;
存储器,按照所述多个程序中的包含利用所述硬件资源的规定指令的每个程序,记忆扩展上下文数据,该扩展上下文数据是所述硬件资源内的寄存器数据的复制;
控制部,在所述硬件资源与所述存储器之间,控制扩展上下文数据的保存与恢复;
第一判断部,判断目前正在执行中的程序的扩展上下文数据是否有被保持在所述硬件资源内的可能性;以及
第二判断部,判断所述硬件资源内的扩展上下文数据,是否属于将要执行所述规定指令的处理器;
在由所述第一判断部判断出有所述可能性、且由所述第二判断部判断出所述硬件资源内的扩展上下文数据属于将要执行所述规定指令的处理器的情况下,所述控制部不进行扩展上下文数据的保存以及恢复,所述硬件资源执行该规定指令。
14.如权利要求13所述的多线程处理器装置,
所述控制部包括:
第一转移部,按照所述第一判断部以及所述第二判断部的判断结果,将扩展上下文数据从硬件资源保存到存储器,将与保存了的扩展上下文数据属于同一个处理器的上下文数据恢复;以及
第二转移部,按照所述第一判断部以及所述第二判断部的判断结果,将扩展上下文数据从硬件资源保存到存储器,将与保存了的扩展上下文数据属于不同的处理器的扩展上下文数据恢复。
15.如权利要求14所述的多线程处理器装置,
所述多个虚拟处理器的每一个至少与一个线程相对应;
所述多线程处理器具有:
多个指令准备部,取线程的指令并进行译码;
执行部,同时执行与一个以上的线程相对应的一个以上的指令,并且这些指令是由所述多个指令准备部译码的指令;以及
状态寄存器,被设置在每个指令准备部;
所述控制部,通过按照每个指令准备部,将目前的线程替换为其他的线程,从而对所述多个虚拟处理器中的正在执行中的虚拟处理器与不是正在执行中的虚拟处理器进行替换;
各个状态寄存器的数据的复制被包含在每个虚拟处理器的上下文数据中;
各个状态寄存器保持第一状态信息和第二状态信息,
所述第一状态信息,按照每个所述硬件资源示出,目前正在执行中的虚拟处理器的扩展上下文数据是否有被保持在该硬件资源内的可能性;
所述第二状态信息,按照每个所述硬件资源示出,与被保持在该硬件资源内的扩展上下文数据相对应的虚拟处理器;
所述多线程处理器还包括清除电路,
该清除电路在由于线程的替换而正在执行中的虚拟处理器成为不是正在执行中之时,对进行了线程的替换的指令准备部内的状态寄存器的第二状态信息进行清除。
16.如权利要求15所述的多线程处理器装置,
所述第一判断部包括被设置在所述多个指令准备部的每一个的数据判断部;
各个所述数据判断部,在对应的指令准备部的线程将要执行所述规定指令之时,通过判断所述第一状态信息是真还是假,来判断目前正在执行中的程序的扩展上下文数据是否有被保持在所述硬件资源内的可能性;
所述第二判断部包括被设置在多个指令准备部的每一个的处理器判断部;
各个所述处理器判断部,在对应的指令准备部内的所述数据判断部判断为是假之时,判断对应的指令准备部的虚拟处理器是否与所述第二状态信息所示的虚拟处理器一致,在判断为是假之时,产生第二例外中断信号;
所述多线程处理器进一步,
将由来自所述处理器判断部的第二例外中断信号而被启动的第二例外中断处理,作为操作***的一部分的功能来执行;
所述操作***包括所述硬件资源的获得处理和等待所述硬件资源的释放的等待处理;
所述操作***进行以下工作:
在属于使所述第二例外中断信号产生的虚拟处理器所属的指令准备部以外的指令准备部的虚拟处理器中,在该硬件资源不是正在使用中的情况下,作为所述获得处理,将示出为真的第一状态信息和示出使所述第二例外中断信号产生的虚拟处理器的第二状态信息,设定到使所述第二例外中断信号产生的指令准备部内的状态寄存器;
在使所述第二例外中断信号产生的虚拟处理器所属的指令准备部以外的指令准备部,在虚拟处理器中该硬件资源为正在使用中的情况下,进行所述等待处理。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009-041568 | 2009-02-24 | ||
JP2009041568 | 2009-02-24 | ||
PCT/JP2009/003857 WO2010097847A1 (ja) | 2009-02-24 | 2009-08-11 | プロセッサ装置、マルチスレッドプロセッサ装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102334102A true CN102334102A (zh) | 2012-01-25 |
CN102334102B CN102334102B (zh) | 2013-11-20 |
Family
ID=42665075
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009801575253A Active CN102334102B (zh) | 2009-02-24 | 2009-08-11 | 处理器装置、多线程处理器装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8850168B2 (zh) |
JP (1) | JP5433676B2 (zh) |
CN (1) | CN102334102B (zh) |
WO (1) | WO2010097847A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104995608A (zh) * | 2013-03-15 | 2015-10-21 | 高通股份有限公司 | 保存及存储***存储器管理单元上下文的方法、设备及程序产品 |
WO2016149895A1 (en) * | 2015-03-23 | 2016-09-29 | Intel Corporation | Execution context migration method and apparatus |
CN108009007A (zh) * | 2016-10-27 | 2018-05-08 | 华为技术有限公司 | 轻量级线程的调度方法及协同管理器、vCPU调度器 |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPWO2013008326A1 (ja) * | 2011-07-13 | 2015-02-23 | 富士通株式会社 | ソフトウェア検証方法、およびソフトウェア検証システム |
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 |
JP6214142B2 (ja) * | 2012-10-09 | 2017-10-18 | キヤノン株式会社 | 情報処理装置、情報処理方法およびプログラム |
US9483185B2 (en) * | 2014-12-16 | 2016-11-01 | Intel Corporation | Gradual context saving in a data storage device |
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 |
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 | 仮想計算機制御方式 |
JPH05165652A (ja) * | 1991-12-16 | 1993-07-02 | Fujitsu Ltd | タスク切替え制御方法 |
US20060020776A1 (en) * | 2004-07-26 | 2006-01-26 | Fujitsu Limited | Multithread processor and register control method |
CN101027642A (zh) * | 2004-09-17 | 2007-08-29 | 松下电器产业株式会社 | 处理器 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH01217635A (ja) * | 1988-02-26 | 1989-08-31 | Fujitsu Ltd | レジスタ退避方式 |
JPH05127926A (ja) * | 1991-10-31 | 1993-05-25 | Nec Corp | タスク制御装置 |
US5481719A (en) | 1994-09-09 | 1996-01-02 | International Business Machines Corporation | Exception handling method and apparatus for a microkernel data processing system |
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 | 株式会社日立製作所 | 計算機システム及びその資源割当て方法 |
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 | 仮想計算機制御方式 |
JPH05165652A (ja) * | 1991-12-16 | 1993-07-02 | Fujitsu Ltd | タスク切替え制御方法 |
US20060020776A1 (en) * | 2004-07-26 | 2006-01-26 | Fujitsu Limited | Multithread processor and register control method |
CN101027642A (zh) * | 2004-09-17 | 2007-08-29 | 松下电器产业株式会社 | 处理器 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104995608A (zh) * | 2013-03-15 | 2015-10-21 | 高通股份有限公司 | 保存及存储***存储器管理单元上下文的方法、设备及程序产品 |
CN104995608B (zh) * | 2013-03-15 | 2018-08-31 | 高通股份有限公司 | 保存及存储***存储器管理单元上下文的方法、设备及程序产品 |
WO2016149895A1 (en) * | 2015-03-23 | 2016-09-29 | Intel Corporation | Execution context migration method and apparatus |
US10372491B2 (en) | 2015-03-23 | 2019-08-06 | Intel Corporation | Execution context migration method and apparatus |
CN108009007A (zh) * | 2016-10-27 | 2018-05-08 | 华为技术有限公司 | 轻量级线程的调度方法及协同管理器、vCPU调度器 |
CN108009007B (zh) * | 2016-10-27 | 2021-01-15 | 华为技术有限公司 | 轻量级线程的调度方法及协同管理器、vCPU调度器 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2010097847A1 (ja) | 2012-08-30 |
US20120023311A1 (en) | 2012-01-26 |
WO2010097847A1 (ja) | 2010-09-02 |
CN102334102B (zh) | 2013-11-20 |
JP5433676B2 (ja) | 2014-03-05 |
US8850168B2 (en) | 2014-09-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102334102B (zh) | 处理器装置、多线程处理器装置 | |
CN102317912A (zh) | 多线程处理器和数字电视*** | |
CN100578456C (zh) | 信息处理装置、进程控制方法 | |
US7676808B2 (en) | System and method for CPI load balancing in SMT processors | |
KR100436675B1 (ko) | 멀티쓰레드 프로세서에서 공유 파이프라인 및 다른파이프라인 스테이지의 선택적인 플러쉬 | |
US9244883B2 (en) | Reconfigurable processor and method of reconfiguring the same | |
US6871264B2 (en) | System and method for dynamic processor core and cache partitioning on large-scale multithreaded, multiprocessor integrated circuits | |
US7360218B2 (en) | System and method for scheduling compatible threads in a simultaneous multi-threading processor using cycle per instruction value occurred during identified time interval | |
CN100361083C (zh) | 信息处理***、信息处理方法 | |
KR100996753B1 (ko) | 시퀀서 어드레스를 관리하기 위한 방법, 맵핑 관리자 및 멀티 시퀀서 멀티스레딩 시스템 | |
EP3048527B1 (en) | Sharing idled processor execution resources | |
US6108766A (en) | Structure of processor having a plurality of main processors and sub processors, and a method for sharing the sub processors | |
CN101452423B (zh) | 控制硬件加速器内数据值的清除 | |
US20070124568A1 (en) | Digital data processing apparatus having asymmetric hardware multithreading support for different threads | |
US20090100249A1 (en) | Method and apparatus for allocating architectural register resources among threads in a multi-threaded microprocessor core | |
CN1936847A (zh) | 上下文状态管理技术 | |
EP1760580B1 (en) | Processing operation information transfer control system and method | |
US20170139757A1 (en) | A data processing apparatus and method for performing lock-protected processing operations for multiple threads | |
CN104272277A (zh) | 用于快速缓存断电的设备和方法 | |
US20070055852A1 (en) | Processing operation management systems and methods | |
US7509511B1 (en) | Reducing register file leakage current within a processor | |
CN102597972A (zh) | 虚拟计算机***、区域管理方法及程序 | |
CN101847128A (zh) | 管理tlb的方法和装置 | |
US20130135327A1 (en) | Saving and Restoring Non-Shader State Using a Command Processor | |
US9038077B1 (en) | Data transfer protection in a multi-tasking modeling environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |