CN101178646B - 多线程处理器 - Google Patents
多线程处理器 Download PDFInfo
- Publication number
- CN101178646B CN101178646B CN2007101850944A CN200710185094A CN101178646B CN 101178646 B CN101178646 B CN 101178646B CN 2007101850944 A CN2007101850944 A CN 2007101850944A CN 200710185094 A CN200710185094 A CN 200710185094A CN 101178646 B CN101178646 B CN 101178646B
- Authority
- CN
- China
- Prior art keywords
- instruction
- priority
- unit
- performance
- instruction stream
- 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.)
- Expired - Fee Related
Links
- 239000000872 buffer Substances 0.000 claims abstract description 116
- 238000009826 distribution Methods 0.000 claims description 149
- 238000000034 method Methods 0.000 claims description 137
- 238000005259 measurement Methods 0.000 claims description 23
- 238000003860 storage Methods 0.000 claims description 17
- 238000003825 pressing Methods 0.000 claims description 8
- 230000015572 biosynthetic process Effects 0.000 description 74
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000007704 transition 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/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
-
- 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/3802—Instruction prefetching
-
- 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/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- 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
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)
Abstract
一种多线程处理器,可以准确地估算对线程需要的处理时间,并且同时执行多个指令流,该多线程处理器包括:运算器群组,执行多个指令;指令调度器,按每个所述指令流,对在该指令流中包含的指令进行分组,从而分为由可以向所述运算器群组同时发行的指令组成的组;指令缓冲器,以由所述指令调度器分成的组为单位,并按每个所述指令流保存在该指令流中包含的指令;以及发行指令决定部,按多线程处理器的每个执行周期,以组为单位从所述指令缓冲器读出指令,并向所述运算器群组发行读出后的所述指令。
Description
技术领域
本发明涉及多线程处理器,通过并联地发行多个指令流的指令,从而高效率地使用多个运算单元。
背景技术
对被数字化的影像数据、声音数据等进行压缩、扩展等的媒体处理的运算量极大。因此,用于进行媒体处理的专用硬件、高性能DSP(Digital Signal Processor:数字信号处理器)等正在普及。
在这些媒体处理中MPEG(Moving Picture Experts Group:运动图像专家组)2、MPEG4、H.263、H.264等许多标准已经被实用化。因此,需要数字AV(Audio-Visual:视频音频)机器对应多个标准的媒体处理。再者,呈现出了如下趋向,即,各个媒体处理应用程序越来越复杂,图像大小、声音频道数等不断增多,并且大运算量不断增大。
针对这些状况采用的方法是,如上所述向数字AV机器搭载用于进行媒体处理的专用硬件的方法,以及通过使用软件来实现灵活的处理的方法等。
搭载专用硬件的方法中存在的问题是,虽然可以实现高性能的处理,但是若需要实现的功能变多,就会使电路规模变大。并且,还存在的问题是,在追加新的功能时还需要追加硬件。
另外,若根据通过使用软件实现的媒体处理的方法,可以对应多个功能的实现、追加。另一方面,通过使用软件实现的媒体处理的方法中存在的问题是,其性能低于搭载专用硬件的方法。
于是,通过使用高性能多线程处理器来试图提高性能,在该多线程处理器中通过同时执行多个程序来大幅度地提高了运算效率(例如参照,(例如参照,″A Multithreaded Processor Architecture withSimultaneous Instruction Issuing,″In SUPERCOMPUTER,49,volumeIX,number3,May 1992)。
然而,对于通过使用多线程处理器来实现的媒体处理的方法,在向多个程序分配性能的方面存在问题。
具体而言,存在的问题是,由于向影像处理用线程、声音处理用线程分配的时间不够,因此影像处理、声音处理跟不上,从而产生影像的空帧、声音的跳音等。
如此,对于需要实时性的线程,应该保证在一定期间内结束一定处理。为此,必要准确地估算对各个线程需要的处理时间。
发明内容
鉴于这些状况,本发明的目的在于提供一种多线程处理器,可以准确地估算对各个线程需要的处理时间。
并且,本发明的目的在于提供一种多线程处理器,对于需要实时性的线程,可以保证在一定的期间内结束一定的处理。
为了实现上述目的,本发明涉及的多线程处理器,同时执行多个指令流,其特征在于,包括:多个运算器,执行多个指令;分组单元,按每个所述指令流,对在该指令流中包含的指令进行分组,从而分为由可以向所述多个运算器同时发行的指令组成的组;指令缓冲器,按每个所述指令流,并以由所述分组单元分成的组为单位,保存该指令流中包含的指令;以及指令发行单元,按多线程处理器的每个执行周期,以组为单位从所述指令缓冲器读出指令,并向所述多个运算器发行读出后的所述指令。
按照每个指令,对在该指令流中包含的指令进行分组。据此,按照每个指令流,可以计数组数。于是,即可以准确地估算对各个线程需要的处理时间,各个线程即是各个指令流。
优选的是,如上所述的多线程处理器,其特征在于,还包括:第一优先级队列,存储多个指令流标识符;以及优先级决定单元,按所述多线程处理器的每个执行周期,对所述第一优先级队列中的至少一个以上的所述指令流标识符进行切换的同时还进行顺序排列,之后选择至少一个以上的所述指令流标识符,将所选择的所述至少一个以上的所述指令流标识符决定为优先级信息,所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息决定指令流,从所述指令缓冲器读出该指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
优先级决定单元,按每个执行周期变更优先级信息。并且,指令发行单元,根据按每个执行周期变更的优先级信息,决定指令流,发行该指令流的指令。据此,可以向由优先级信息确定的指令流分配一定的性能,并且对于需要实时性的线程(指令流),可以保证在一定的期间内结束一定的处理。
另外,优选地,所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,从所述指令缓冲器读出可以向所述多个运算器发行的、存在于所述指令缓冲器的指令流之中优先级最高的指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
优选地,还包括第二优先级队列,存储多个指令流标识符,所述优先级决定单元,使在所述第一优先级队列中包含的指令流标识符的优先级高于所述第二优先级队列中包含的指令流标识符的优先级,对所述第一优先级队列以及所述第二优先级队列中的至少一个以上的所述指令流标识符,按多线程处理器的每个执行周期进行切换的同时还进行顺序排列,之后选择至少一个以上的所述指令流标识符,将所选择的所述至少一个以上的所述指令流标识符决定为优先级信息。
优选地,所述优先级决定单元,使在所述第一优先级队列中包含的指令流标识符的优先级高于所述第二优先级队列中包含的指令流标识符的优先级,对在所述第一优先级队列中包含的所有指令流标识符以及在所述第二优先级队列中包含的所有指令流标识符,按多线程处理器的每个执行周期进行切换的同时还进行顺序排列,之后选择指令流标识符,将所选择的指令流标识符决定为优先级信息,所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,从所述指令缓冲器读出可以向所述多个运算器发行的、存在于所述指令缓冲器的指令流之中优先级最高的指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
优选地,所述优先级决定单元,使在所述第一优先级队列中包含的指令流标识符的优先级高于所述第二优先级队列中包含的指令流标识符的优先级,对在所述第一优先级队列中包含的一个指令流标识符以及在所述第二优先级队列中包含的所有指令流标识符,按多线程处理器的每个执行周期进行切换的同时还进行顺序排列,并从所述第一优先级队列以及所述第二优先级队列中选择指令流标识符,将所选择的指令流标识符决定为优先级信息,所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,从所述指令缓冲器读出可以向所述多个运算器发行的、存在于所述指令缓冲器的指令流之中优先级最高的指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
优选地,所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,在所述指令缓冲器存在可以向所述多个运算器发行的、优先级最高的指令流中的一组指令的情况下,发行该指令,并且,发行剩余的指令流中的、与所发行的指令同时可以向所述多个运算器发行的、且优先级最高的指令流中的一组指令。
优选地,所述指令发行单元,进一步,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,在所述指令缓冲器不存在可以向所述多个运算器发行的、优先级最高的指令流中的一组指令的情况下,从所述指令缓冲器读出指令流中、可以向所述多个运算器发行的、存在于所述指令缓冲器的指令流之中优先级其次高的指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
优选地,所述指令发行单元,进一步,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,在所述指令缓冲器不存在可以向所述多个运算器发行的、优先级最高的指令流中的一组指令的情况下,在该执行周期内停止发行指令。
优选地,所述优先级决定单元包括:保证性能决定单元,示出针对所述多个指令流应该保证的性能;以及性能测量单元,测量针对所述多个指令流执行了的性能,所述优先级决定单元或所述指令发行单元,在所述性能测量单元测量出的性能达到由所述保证性能决定单元所示的应该保证的性能时,变更向所述多个运算器的指令发行方法,所述性能测量单元,对由所述指令发行单元所发行的该指令流的指令的次数进行计数,并将该计数的次数作为针对指令流执行了的性能。
优选地,所述优先级决定单元,在所述性能测量单元测量出的性能达到由所述保证性能决定单元所示的应该保证的性能时,变更所述优先级信息。
优选地,所述优先级决定单元,在所述性能测量单元测量出的性能达到由所述保证性能决定单元所示的应该保证的性能时,不考虑达到性能的指令流的指令流标识符,而决定下一个执行周期以后的所述优先级信息。
优选地,所述优先级决定单元,在所述性能测量单元测量出的性能达到由所述保证性能决定单元所示的应该保证的性能时,使达到性能的指令流的优先级为最低,决定下一个执行周期以后的所述优先级信息。
优选地,所述指令发行单元,在所述性能测量单元测量出的性能达到由所述保证性能决定单元所示的应该保证的性能时,视为不存在达到性能的指令流的指令,向所述多个运算器发行其它指令流的指令。
优选地,所述优先级决定单元还包括:基本周期决定单元,决定预定的基本周期;基本周期计数单元,计数执行周期数;以及复位单元,在由所述基本周期计数单元计数的执行周期数达到由所述基本周期决定单元决定的基本周期时,将由所述基本周期计数单元计数的执行周期数以及由所述性能测量单元测量的性能复位到初始状态。
根据本发明,可以提供一种多线程处理器,可以准确地估算对各个线程需要的处理时间。
并且,也可以提供一种处理器,对于需要实时性的线程(指令流),可以保证在一定的期间内结束一定的处理。
另外,本发明提供一种实时处理系统,包括同时执行多个指令流的多线程处理器,其特征在于,包括:多个运算器,执行多个指令;分组单元,按每个所述指令流,对在该指令流中包含的指令进行分组,从而分为由可以向所述多个运算器同时发行的指令组成的组;指令缓冲器,以由所述分组单元分成的组为单位,并按每个所述指令流保存该指令流中包含的指令;指令发行单元,按多线程处理器的每个执行周期,以组为单位从所述指令缓冲器读出指令,并向所述多个运算器发行读出后的所述指令;第一优先级队列,存储需要实时处理的指令流的多个指令流标识符;第二优先级队列,存储不需要实时处理的指令流的多个指令流标识符;以及优先级决定单元,按所述多线程处理器的每个执行周期,对所述第一优先级队列中的至少一个以上的所述指令流标识符进行切换的同时还进行顺序排列,之后选择至少一个以上的所述指令流标识符,将所选择的所述至少一个以上的所述指令流标识符决定为优先级信息,所述优先级决定单元,使在所述第一优先级队列中包含的指令流标识符的优先级高于所述第二优先级队列中包含的指令流标识符的优先级,对所述第一优先级队列以及所述第二优先级队列中的至少一个以上的指令流标识符,按多线程处理器的每个执行周期进行切换的同时还进行顺序排列,并从所述第一优先级队列以及所述第二优先级队列中选择至少一个以上的所述指令流标识符,将所选择的所述至少一个以上的所述指令流标识符决定为优先级信息,所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息决定指令流,从所述指令缓冲器读出该指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
优选地,所述需要实时处理的指令流,是用于实现影像信号或声音信号的解码处理或编码处理的指令流。
另外,本发明提供了一种指令发行方法,由同时执行多个指令流的多线程处理器进行,其特征在于,包括:分组步骤,按每个所述指令流,对在该指令流中包含的指令进行分组,从而分为由可以向执行多个指令的多个运算器同时发行的指令组成的组;存储步骤,以由所述分组单元分成的组为单位,并按每个所述指令流,使该指令流中包含的指令存储在指令缓冲器中;以及指令发行步骤,按多线程处理器的每个执行周期,以组为单位从所述指令缓冲器读出指令,并向所述多个运算器发行读出后的所述指令。
附图说明
图1是实施例1涉及的多线程处理器的硬件的结构方框图。
图2是用于说明实施例1涉及的指令存储器、指令解码器、指令调度器、第一指令缓冲器~第N指令缓冲器的工作的图。
图3A及图3B是用于说明实施例1涉及的指令调度器对单一指令流的指令进行的调度处理的图。
图4是用于说明使用实施例1涉及的第一指令缓冲器~第N指令缓冲器、第一寄存器文件~第N寄存器文件、运算器群组以及回写总线的细粒度多线程处理的图。
图5是用于说明实施例1涉及的优先级决定部以及发行指令决定部的工作的图。
图6是用于说明实施例1涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
图7是用于说明实施例2涉及的优先级决定部以及发行指令决定部的结构以及工作的图。
图8是用于说明实施例2涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
图9是用于说明实施例3涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
图10是用于说明使用实施例4涉及的第一指令缓冲器~第N指令缓冲器、第一寄存器文件~第N寄存器文件、运算器群组以及回写总线的细粒度多线程处理的图。
图11是用于说明实施例4涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
图12是用于说明实施例5涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
图13是用于说明实施例6涉及的优先级决定部以及发行指令决定部的结构以及工作的图。
图14是用于说明实施例6涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
图15是实施例7涉及的实时处理系统的结构方框图。
具体实施方式
以下,参照附图说明本实施方式。
(实施例1)
图1是示出本发明的实施例1的多线程处理器结构的方框图。
多线程处理器是一种处理器,同时独立地执行N个(N是2以上的整数)的指令流(N个线程),包括:指令存储器101;指令解码器102;指令调度器103;N个指令缓冲器(第一指令缓冲器104,第二指令缓冲器105,……,第N指令缓冲器106);N个寄存器文件(第一寄存器文件107,第二寄存器文件108,……,第N寄存器文件109);优先级决定部110;发行指令决定部111;运算器群组112;以及回写总线113。
指令存储器101是一种存储器,保存在多线程处理器执行的指令,并保存独立执行的N条指令流(线程)。
指令解码器102是一种处理部,从指令存储器101读出属于各个指令流的指令,并进行解码。对于指令解码器102的工作在后面进行详细说明。
指令调度器103是一种处理部,从指令解码器102读出指令,并进行指令调度。对于指令调度器103的工作在后面进行详细说明
第一指令缓冲器104是一种存储部,从指令调度器103接受所调度的、属于第一个指令流(以下,第i个指令流称为第i指令流)的指令,并保存。
第二指令缓冲器105是一种存储部,从指令调度器103接受所调度的、属于第二指令流的指令,并保存。
第N指令缓冲器106是一种存储部,从指令调度器103接受所调度的、属于第N指令流的指令,并保存。
第一寄存器文件107是一种寄存器群组,保存数据,通过执行保存在第一指令缓冲器104的第一指令流,从而该数据成为读出以及写入的对象。
第二寄存器文件108是一种寄存器群组,保存数据,通过执行保存在第二指令缓冲器105的第二指令流,从而该数据成为读出以及写入的对象。
第N寄存器文件109是一种寄存器群组,保存数据,通过执行保存在第N指令缓冲器106的第N指令流,从而该数据成为读出以及写入的对象。
优先级决定部110是一种处理部,决定N条指令流的优先级。对于优先级决定部110执行的工作以后说明。
发行指令决定部111是实现虚拟处理器的处理部。即,发行指令决定部111,从优先级决定部110接受优先级,并且,从第一指令缓冲器104~第N指令缓冲器106的各个指令缓冲器接受指令缓冲信息,该指令缓冲信息表示是否可以执行指令。并且,发行指令决定部111,根据接受到的优先级以及指令缓冲信息,选择指令缓冲器和寄存器群组,该指令缓冲器保存应该发行的指令流的指令,该寄存器文件是对该指令流所需要的。
运算器群组112是一种处理部,包括加法器、乘法器等多个运算器。回写总线113是一种总线,用于将来自运算器群组112的输出结果回写到第一寄存器文件107~第N寄存器文件109。
其次,对于指令存储器101、指令解码器102、指令调度器103、第一指令缓冲器104~第N指令缓冲器106的工作进行详细说明。
图2是用于说明指令存储器101、指令解码器102、指令调度器103、第一指令缓冲器~第N指令缓冲器的工作的图。
在指令存储器101存储从第一指令流201到第N指令流203的N条指令流。
指令解码器102从存储在指令存储器101的第一指令流201~第N指令流203中一一选择指令流,并对指令进行解码。而且,指令解码器102也可以监视在第一指令缓冲器104~第N指令缓冲器106的指令的填充状况,从填充数少的指令流开始依次进行选择,并对指令进行解码。
指令调度器103从指令解码器102接受解码后的指令,对该指令进行分组,从而将可以同时发行的多个指令组成一组。即,指令调度器103按照从指令存储器101读出的每个指令流,对该指令流中的指令进行分组,从而将可以在同一周期内发行的指令组成一组。指令调度器103,将组成后的指令存储到第一指令缓冲器104~第N指令缓冲器106中与该指令所属的指令流相对应的任意指令缓冲器。
在第一指令缓冲器104~第N指令缓冲器106的各个指令缓冲器保存处于由指令解码器102解码的、且由指令调度器103组成的状态的指令。在此,对于表示指令组的方法,可以向各个指令附加用于识别组的标识符,也可以向位于组和组之间的边界的指令附加标识符,以表示边界。
图3A及图3B是用于说明由指令调度器103对单一指令流进行指令调度处理的图。
例如,如图3A所示,说明对在某个指令流301包含的、任意的连续八个指令进行的调度。
指令调度器103,通过根据存在于指令之间的数据依赖关系等将可以同时执行的指令组成一组,从而对指令进行调度。
此结果是,例如,如图3B所示,指令流301中的开头两个指令被组成第一组302。下面的三个指令被组成第二组303。下面的一个指令被组成第三组304。下面的两个指令被组成第四组305。
在第一组302包含的两个指令是可以在第一周期内发行的。在第二组303包含的三个指令是可以在第二周期内发行的。在第三组304包含的一个指令是可以在第三周期内发行的。在第四组305包含的两个指令是可以在第四周期内发行的。而且,各个组表示可以在同一周期内发行的指令组。因此,不需要在按第一组302、第二组303、第三组304、第四组305的顺序的连续周期内发行指令,而可以在间隔的周期内发行指令,就可以要发行的指令组的顺序与所述顺序不同。
而且,对于具有多个运算器的多线程处理器中将可以同时发行的指令组成一组的方法,可以存在多种方法。例如存在如下方法等,即,在维持指令的发行顺序的状态下,只根据可以同时发行的指令数以及运算资源数,组成可以同时发行的指令组。并且,也可以是,在编译器等预先进行该方法。在此情况下,指令调度器103,根据在指令流中的指令包含的规定的标识符或指令数等来识别每一组之间的边界,从而进行分组。
本发明的特点是,为了实现软件开发员预测的性能,不进行组合多个指令流的指令的最佳化。这是因为,为了防止在某个指令流的指令在执行时会受到其它指令流的指令的影响。此结果是,软件开发员通过计数每个指令流的组的数量,从而可以容易地算出对各个指令流需要的性能,即容易地算出应该分配给该指令流的虚拟处理器的执行时间。
图4是用于说明使用第一指令缓冲器104~第N指令缓冲器106、第一寄存器文件107~第N寄存器文件109、运算器群组112以及回写总线113的细粒度多线程处理的图。
如上所述,发行指令决定部111,根据从优先级决定部110接受到的优先级信息以及从各个指令缓冲器接受到的指令缓冲信息,选择保存应该发行的指令流的指令的指令缓冲器以及对该指令流需要的寄存器文件,从而实现虚拟处理器。
在此,多线程处理器使用运算器群组112执行流水线处理。假设,例如流水线的段数有六段,包括:第一运算段406、第二运算段407、第三运算段408、第四运算段409、第五运算段410以及回写段411。
在第一运算段406~第五运算段410的各个段执行在N条指令流中的任意指令流包含的指令。
并且,在回写段411执行如下处理,即,将在第一运算段406~第五运算段410进行的运算的结果,通过回写总线113回写到第一寄存器文件107~第N寄存器文件109中的任意寄存器文件。
如上所述,发行指令决定部111对指令流进行切换,并且向被流水线化的运算段发行该指令流,从而可以实现多个虚拟处理器。例如,在第一运算段406被分配执行第二指令流的第二虚拟处理器。
通过使用这些多线程流水线,可以大幅度地减少因数据依赖性而引起的对指令发行的限制。
其次,说明优先级决定方法。图5是用于说明优先级决定部110以及发行指令决定部111的工作的图。
优先级决定部110包括最优先对象优先级队列503,该最优先对象优先级队列503登录虚拟处理器的号码(线程、指令流的号码),该虚拟处理器最优先地被发行指令。最优先对象优先级指针504是一种指针,指出在最优先对象优先级队列503中最优先的项目。
优先级决定部110,根据最优先对象优先级队列503以及最优先对象优先级指针504所指出的项目,求出并输出优先级信息505,该优先级信息505表示在某一个工作周期的虚拟处理器的优先级。
以下,参照具体例子说明优先级信息505的求出方法。优先级决定部110,根据登录在最优先对象优先级队列503的虚拟处理器号码决定每个周期的优先级。假设,例如在最优先对象优先级队列503以“1·2·3……N·End”的顺序登录虚拟处理器号码。在此,“End”是一种标识符,表示最优先对象优先级队列503的最后项目。
在某个周期内,在最优先对象优先级指针504指出最优先对象优先级队列503的第二项目的情况下,在该周期内优先级信息505成为“2·3……N·1”。即,在最优先对象优先级队列503中,以从最优先对象优先级指针504指出的项目到最后项目的前一个项目为止的顺序决定虚拟处理器号码的优先级,从而求出优先级信息505的前半部分“2·3……N”。再者,在最优先对象优先级队列503中,以从开头项目到最优先对象优先级指针504指出的项目的前一个项目为止的顺序决定虚拟处理器号码的优先级,从而求出优先级信息505的后半部分“1”。通过合并优先级信息505的前半部分部和后半部分,从而求出优先级信息505“2·3……N·1”。即,在该周期内,以第二虚拟处理器、第三虚拟处理器、……、第N虚拟处理器、第一虚拟处理器的优先顺序发行指令。
在下一个周期内,最优先对象优先级指针504指出下一个项目,即指出最优先对象优先级队列503的第三项目。而且,对于最优先对象优先级指针504的转移,不管是否向最优先对象的虚拟处理器发行了指令都按周期来进行。因此,该周期的优先级信息505成为“3……N·1·2”。
以下,反复进行相同工作,在最优先对象优先级指针504指出存储标识符“End”的最后项目时,最优先对象优先级指针504转移到第一项目。虽然在本实施例中假设,在最优先对象优先级队列503的各个项目分别登录N个虚拟处理器的每一个虚拟处理器号码,但是也可以登录多个相同虚拟处理器号码。
发行指令决定部111接收从第一指令缓冲器104~第N指令缓冲器106输出的指令缓冲信息506。指令缓冲信息506是一种信息,表示在各个指令缓冲器保存的被组成的指令中是否存在该周期内可以发行的指令。例如存在如下原因,即,存在由于各个指令缓冲器是空白因此不能发行指令等原因,或存在即使各个指令缓冲器不是空白也由于与以前发行过的指令之间存在数据依赖性、且未结束该指令的运算因此不能发行指令等原因,则在指令缓冲信息506包含信号,该信号表示在对应的指令缓冲器不存在可以发行的、被组成的指令。
发行指令决定部111输出发行指令选择信号507,该发行指令选择信号507用于选择在某一个工作周期内要发行的虚拟处理器。
即,发行指令决定部111按照优先级信息505检验指令缓冲信息506,并确认是否存在可以向最优先发行对象的虚拟处理器发行的、被组成的指令。在存在可以发行的、被组成的指令的情况下,发行指令决定部111作为用于选择最优先发行对象的虚拟处理器的信号输出发行指令选择信号507。
在不存在可以发行的、被组成的指令的情况下,发行指令决定部111作为表示不存在应该发行的指令的信号输出发行指令选择信号507。在此,在本实施例中,在不具有应该向最优先发行对象的虚拟处理器发行的指令的情况下,与是否具有应该向其它虚拟处理器发行的指令无关,发行指令决定部111不发行指令。然而,在具有可以向其它虚拟处理器发行的指令的情况下,发行指令决定部111可以发行指令。但是,在该情况下,最优先对象优先级指针504的转移规则也不变。
图6是示出在本实施例涉及的多线程处理器中各个虚拟处理器被分配的性能的图。
如图6所示,分配到第一虚拟处理器的性能601、分配到第二虚拟处理器的性能602、分配到第三虚拟处理器的性能603、……、分配到第N虚拟处理器的性能604的各个性能是全工作周期的N分之一。
而且,在周期单位虚拟处理器工作605中表示以周期为单位被分配的虚拟处理器的号码,以从第一虚拟处理器到第N虚拟处理器的顺序且以周期为单位决定最高优先级。但是,在图6中表示,在向以虚线所示的第二虚拟处理器、第五虚拟处理器以及第一虚拟处理器发行指令时,因如上所述的不存在应该发行的指令等理由而未发行指令。
如上所述,根据本实施例,可以向第一虚拟处理器~第N虚拟处理器都分配均等的性能601~604。而且,虽然在周期单位虚拟处理器工作605表示的各个周期中以虚线所示的周期内未发行指令,但是视为在未发行指令的周期内也向成为对象的处理器分配了性能。
并且,指令调度器103按每个指令流对指令进行分组。因此,可以按每个指令流(按每个线程)计数可以同时执行的指令组的数量。据此,可以准确地估算每个线程的执行周期数,即可以准确地估算对线程需要的处理时间。
据此,对于需要实时性的线程,通过按照对各个线程需要的处理时间的比率使登录在最优先对象优先级队列503的虚拟处理器号码的数量变化,从而可以分配线程以使在一定的期间内结束一定的处理。
(实施例2)
其次,说明本发明的实施例2涉及的多线程处理器。
实施例2涉及的多线程处理器具有与图1所示的实施例1涉及的多线程处理器相同的结构,但是优先级决定部110以及发行指令决定部111不同。以下,以优先级决定部以及发行指令决定部为中心说明实施例2涉及的多线程处理器。
图7是用于说明实施例2涉及的优先级决定部701以及发行指令决定部702的结构以及工作的图。
优先级决定部701是取代图1所示的多线程处理器中的优先级决定部110而设置的,并且,优先级决定部701是一种处理部,按每个工作周期决定对N条指令流的优先级,并输出表示每个虚拟处理器的优先级的优先级信息707。
发行指令决定部702是取代图1所示的多线程处理器中的发行指令决定部111而设置的、用于实现虚拟处理器的处理部。即,发行指令决定部702,从优先级决定部701接受优先级信息707,并且,从第一指令缓冲器104~第N指令缓冲器106的各个指令缓冲器接受指令缓冲信息506,该指令缓冲信息表示是否可以执行指令。并且,发行指令决定部702,根据接受到的优先级信息707以及指令缓冲信息506,选择指令缓冲器和寄存器文件,该指令缓冲器保存应该发行的指令流的指令,该寄存器文件是对该指令流所需要的。
优先级决定部701包括最优先对象优先级队列703以及非最优先对象优先级队列705,该最优先对象优先级队列703登录最优先地被发行指令的虚拟处理器的号码(线程的号码、指令流的号码),该非最优先对象优先级队列705登录非最优先地被发行指令的虚拟处理器的号码。
最优先对象优先级指针704是一种指针,指出在最优先对象优先级队列703中最优先的项目。非最优先对象优先级指针706是一种指针,指出在非最优先对象优先级队列705中的项目,该项目中存储成为指令发行对象的虚拟处理器的号码。
以下,参照具体例子说明优先级信息707的求出方法。优先级决定部701,根据登录在最优先对象优先级队列703的虚拟处理器号码以及登录在非最优先对象优先级队列705的虚拟处理器号码,决定每个周期的优先级。假设,例如在最优先对象优先级队列703以“1·2·3·4·5·End”的顺序登录虚拟处理器号码。并且假设,在非最优先对象优先级队列705以“6·7·End”的顺序登录虚拟处理器号码。在此,“End”是一种标识符,表示最优先对象优先级队列703以及非最优先对象优先级队列705的最后项目。
假设,在某个周期内,最优先对象优先级指针704指出最优先对象优先级队列703的第二项目、非最优先对象优先级指针706指出非最优先对象优先级队列705的第二项目。此时,在该周期内优先级信息707成为“2·3·4·5·1·7·6”。即,优先级决定部701,根据最优先对象优先级队列703以及最优先对象优先级指针704求出优先级信息707的前半部分“2·3·4·5·1”。并且,优先级决定部701,根据非最优先对象优先级队列705以及非最优先对象优先级指针706求出优先级信息707的后半部分“7·6”。对于优先级信息707的前半部分以及后半部分的求出方法,与参照图5说明的由优先级决定部101的优先级信息505的求出方法相同。因此,不反复进行详细说明。
在下一个周期内,最优先对象优先级指针704指出下一个项目,即指出最优先对象优先级队列703的第三项目,并且,非最优先对象优先级指针706指出下一个项目,即指出非最优先对象优先级队列705的第一项目。对于最优先对象优先级指针704的转移,不管是否向最优先对象的虚拟处理器发行了指令都按周期来进行。另一方面,对于非最优先对象优先级指针706的转移,可以不管是否向非最优先对象的虚拟处理器发行了指令都按周期来进行,也可以只在发行了指令的情况下进行。该周期的优先级信息707成为“3·4·5·1·2·6·7”。以下,反复进行相同工作,在最优先对象优先级指针704指出存储标识符“End”的最后项目时,最优先对象优先级指针704转移到第一项目,在非最优先对象优先级指针706指出存储标识符“End”的最后项目时,非最优先对象优先级指针706转移到第一项目。虽然在本实施例中假设,在最优先对象优先级队列703的各个项目分别登录到第五虚拟处理器为止的五个虚拟处理器的每一个虚拟处理器号码,但是也可以登录多个相同虚拟处理器号码。并且,虽然在非最优先对象优先级队列705的各个项目分别登录在最优先对象优先级队列703不登录的、第六虚拟处理器以及第七虚拟处理器的每一个虚拟处理器号码,但是也可以登录多个相同虚拟处理器号码。
发行指令决定部702输出发行指令选择信号507,该发行指令选择信号507用于选择在某一个工作周期内要发行的虚拟处理器。
即,发行指令决定部702按照优先级信息707的优先级检验指令缓冲信息506,并确认是否存在可以向最优先发行对象的虚拟处理器发行的、被组成的指令。在存在可以发行的、被组成的指令的情况下,发行指令决定部702作为用于选择最优先发行对象的虚拟处理器的信号输出发行指令选择信号507。
在不存在可以发行的、被组成的指令的情况下,发行指令决定部702确认是否存在可以向优先级其次高的发行对象的虚拟处理器发行的、被组成的指令,并且,在存在可以发行的、被组成的指令的情况下,作为用于选择该虚拟处理器的信号输出发行指令选择信号507。发行指令决定部702,反复进行如上所述的工作,在最后完全不存在可以发行的指令组的情况下,作为表示不存在应该发行的指令的信号输出发行指令选择信号507。
图8是用于说明实施例2涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
如图8所示,向第一虚拟处理器~第五虚拟处理器都分配均等的、所保证的性能801~805,向第六虚拟处理器以及第七虚拟处理器分别分配不保证的性能806以及807。
在周期单位虚拟处理器工作808中表示以周期为单位被分配的虚拟处理器的号码,以从第一虚拟处理器到第五虚拟处理器的顺序且以周期为单位决定最高优先级,该第一虚拟处理器到第五虚拟处理器与登录在最优先对象优先级队列703的虚拟处理器号码相对应。但是,在向以虚线所示的第二虚拟处理器、第五虚拟处理器以及第三虚拟处理器发行指令时,因如上所述的不存在应该发行的指令等理由而不可发行指令。据此,在该周期内,执行可发行的指令的虚拟处理器中优先级最高的虚拟处理器被分配。例如,第三虚拟处理器、第七虚拟处理器以及第五虚拟处理器被分配,而取代以虚线所示的第二虚拟处理器、第五虚拟处理器以及第三虚拟处理器。而且,即使在其它虚拟处理器被分配的情况下,也在下一个周期内在该周期内优先级最高的虚拟处理器被选择。因此,可以保证在软件开发员预测的、考虑到延迟时间(latency)的最坏周期内执行指令。
(实施方式3)
其次,说明本发明的实施例3涉及的多线程处理器。
实施例3涉及的多线程处理器具有与实施例2涉及的多线程处理器相同的结构,但是优先级决定部701的工作不同。因此,以与实施例2不同的部分为中心进行说明。
参照图7说明优先级决定部701及发行指令决定部702的工作。
以下,参照具体例子说明由优先级决定部701的优先级信息707的求出方法。
优先级决定部701,根据登录在最优先对象优先级队列703的虚拟处理器号码以及登录在非最优先对象优先级队列705的虚拟处理器号码,决定每个周期的优先级。假设,登录在最优先对象优先级队列703以及非最优先对象优先级队列705的虚拟处理器号码与实施例2相同。
假设,在某个周期内,最优先对象优先级指针704指出最优先对象优先级队列703的第二项目、非最优先对象优先级指针706指出非最优先对象优先级队列705的第二项目。此时,在该周期内优先级信息707成为“2·7·6”。即,优先级决定部701,根据最优先对象优先级队列703以及最优先对象优先级指针704求出优先级信息707的前半部分“2”。并且,优先级决定部701,根据非最优先对象优先级队列705以及非最优先对象优先级指针706求出优先级信息707的后半部分“7·6”。优先级信息707的后半部分的求出方法与实施例2相同,但是前半部分的求出方法与实施例2不同。即,优先级信息707的前半部分只有最优先对象优先级指针704指出的非最优先对象优先级队列705存储的虚拟处理器号码。
在下一个周期内,最优先对象优先级指针704指出下一个项目,即指出最优先对象优先级队列703的第三项目,并且,非最优先对象优先级指针706指出下一个项目,即指出非最优先对象优先级队列705的第一项目。对于最优先对象优先级指针704的转移,不管是否向最优先对象的虚拟处理器发行了指令都按周期来进行。另一方面,对于非最优先对象优先级指针706的转移,不管是否向非最优先对象的虚拟处理器发行了指令都按周期来进行,也可以只在发行了指令的情况下进行。该周期的优先级信息707成为“3·6·7”。如此设定优先级,即,以基于最优先对象优先级队列703的虚拟处理器号码的优先级为最高,其次以基于非最优先对象优先级队列705的虚拟处理器号码的优先级为高。以下,反复进行相同工作,在最优先对象优先级指针704指出存储标识符“End”的最后项目时,最优先对象优先级指针704转移到第一项目,在非最优先对象优先级指针706指出存储标识符“End”的最后项目时,非最优先对象优先级指针706转移到第一项目。虽然在本实施例中假设,在最优先对象优先级队列703的各个项目分别登录到第五虚拟处理器为止的五个虚拟处理器的每一个虚拟处理器号码,但是也可以登录多个相同虚拟处理器号码。并且,虽然在非最优先对象优先级队列705的各个项目分别登录在最优先对象优先级队列703不登录的、第六虚拟处理器以及第七虚拟处理器的每一个虚拟处理器号码,但是也可以登录多个相同虚拟处理器号码。
发行指令决定部702输出发行指令选择信号507,该发行指令选择信号507用于选择在某一个工作周期内要发行的虚拟处理器。由于发行指令决定部702的工作与实施例2相同,因此不反复进行详细说明。
图9是用于说明实施例3涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
如图9所示,向第一虚拟处理器~第五虚拟处理器都分配均等的、所保证的性能901~905,向第六虚拟处理器以及第七虚拟处理器分别分配不保证的性能906以及907。
在周期单位虚拟处理器工作908中表示以周期为单位被分配的虚拟处理器的号码。并且,以从第一虚拟处理器到第五虚拟处理器的顺序且以周期为单位决定最高优先级,该第一虚拟处理器到第五虚拟处理器与登录在最优先对象优先级队列703的虚拟处理器号码相对应。但是,在向以虚线所示的第二虚拟处理器、第五虚拟处理器以及第三虚拟处理器发行指令时,因如上所述的不存在应该发行的指令等理由而不可发行指令。据此,在该周期内,虚拟处理器号码被登录在非最优先对象优先级队列705的虚拟处理器中优先级最高的虚拟处理器被分配。例如,非最优先对象的虚拟处理器即第六虚拟处理器、第七虚拟处理器以及第六虚拟处理器被分配,而取代以虚线所示的第二虚拟处理器、第五虚拟处理器以及第三虚拟处理器。而且,即使在发行指令决定部702选择其它虚拟处理器的情况下,也在下一个周期内在该周期内优先级最高的虚拟处理器被选择。因此,可以保证在软件开发员预测的、考虑到延迟时间(latency)的最坏周期内执行指令。
根据所述工作,可以向登录在最优先对象优先级队列703的虚拟处理器充分地提供软件开发员预测的性能,并且可以向登录在非最优先对象优先级队列705的、被分配不保证的性能的虚拟处理器积极地分配性能。
(实施例4)
其次,说明本发明的实施例4涉及的多线程处理器。
实施例4涉及的多线程处理器如下构成,即,针对图1所示的实施例1涉及的多线程处理器,使用实施例2或实施例3中说明的优先级决定部701而取代优先级决定部110,使用发行指令决定部1005而取代发行指令决定部111。并且,细粒度多线程处理与实施例1~3不同。以下,以与所述实施例不同的部分为中心说明本实施例。
图10是用于说明使用第一指令缓冲器104~第N指令缓冲器106、第一寄存器文件107~第N寄存器文件109、运算器群组112以及回写总线113的细粒度多线程处理的图。
优先级决定部701是一种处理部,决定N条指令流的优先级,并输出优先级信息。优先级决定部701的结构以及工作与实施例2或实施例3中的说明相同,因此可以使用任何结构以及工作。因此,在此不反复进行详细说明。
发行指令决定部1005,根据从优先级决定部701接受到的优先级信息指令缓冲信息,选择保存应该发行的指令流的指令的指令缓冲器以及对该指令流需要的寄存器文件,从而实现虚拟处理器,所述指令缓冲信息表示是否可以向第一指令缓冲器104~第N指令缓冲器106发行指令。
此时,发行指令决定部1005按照优先级信息707的优先级检验指令缓冲信息506,并确认是否存在可以向最优先发行对象的虚拟处理器发行的、被组成的指令。在存在可以发行的、被组成的指令的情况下,发行指令决定部1005作为用于选择最优先发行对象的虚拟处理器的信号输出发行指令选择信号507。再者,发行指令决定部1005,根据指令缓冲信息506从优先级高的虚拟处理器依次确认是否存在可以发行的、被组成的指令,并且检验是否存在可以同时发行的、被组成的指令。在存在可以同时发行的、被组成的指令的情况下,发行指令决定部1005同时发行该被组成的指令。如下进行这些是否同时发行的检验。即,检验假设为同时发行的多个线程的指令总数是否要使用的运算资源的数量以下,并且,若满足该条件,则判断为可以同时发行。
在不存在可以向最优先发行对象的虚拟处理器发行的、被组成的指令的情况下,发行指令决定部1005确认是否存在可以向优先级其次高的发行对象的虚拟处理器发行的、被组成的指令。在存在该可以发行的、被组成的指令的情况下,发行指令决定部1005,作为用于选择优先级其次高的虚拟处理器的信号输出发行指令选择信号507。此时同样,发行指令决定部1005,根据指令缓冲信息506从优先级高的虚拟处理器依次确认是否存在可以发行的、被组成的指令,并且检验是否存在可以同时发行的、被组成的指令。在存在可以同时发行的、被组成的指令的情况下,发行指令决定部1005同时发行该被组成的指令。
发行指令决定部1005,反复进行如上所述的工作,在最后完全不存在可以发行的指令组的情况下,作为表示不存在应该发行的指令的信号输出发行指令选择信号507。
在此,多线程处理器使用运算器群组112执行流水线处理。假设,例如流水线的段数有六段,流水线包括:第一运算段1006、第二运算段1007、第三运算段1008、第四运算段1009、第五运算段1010以及回写段1011。
在第一运算段1006~第五运算段1010的各个段执行在N条指令流中包含的指令。
并且,在回写段1011执行如下处理,即,将在第一运算段1006~第五运算段1010进行的运算的结果,通过回写总线113回写到第一寄存器文件107~第N寄存器文件109中的任意寄存器文件。
如上所述,发行指令决定部1005对指令流进行切换,并且向被流水线化的运算段发行该指令流,从而可以实现多个虚拟处理器。例如,在第一运算段1006被分配执行第一指令流的第一虚拟处理器。并且,在第二运算段1007被分配执行第五指令流的第五虚拟处理器以及执行第七指令流的第七虚拟处理器。
通过使用这些多线程流水线,可以大幅度地减少因数据依赖性而引起的对指令发行的限制。
而且,实施例4与实施例1~3的不同之处是,像第二运算段1007、第五运算段1010那样,在同一段上存在多个虚拟处理器的指令。这是发行指令决定部1005同时发行多个虚拟处理器的指令的结果。这些技术,一般被称为同时多线程技术(SMT:Simultaneous MultiThreading),本专利的特点是以被组成的指令为单位同时发行指令。
图11是用于说明本实施例涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
如图11所示,向第一虚拟处理器~第五虚拟处理器都分配均等的、所保证的性能1101~1105,向第六虚拟处理器以及第七虚拟处理器分别分配不保证的性能1106以及1107。
在周期单位虚拟处理器工作1108中表示以周期为单位被分配的虚拟处理器的号码,以从第一虚拟处理器到第五虚拟处理器的顺序且以周期为单位决定最高优先级,该第一虚拟处理器到第五虚拟处理器与登录在最优先对象优先级队列703的虚拟处理器号码相对应。但是,向第三虚拟处理器以及第七虚拟处理器同时发行了指令。同样,向第四虚拟处理器以及第五虚拟处理器也同时发行了指令。并且,在向以虚线所示的第二虚拟处理器、第五虚拟处理器以及第三虚拟处理器发行指令时,因如上所述的不存在应该发行的指令等理由而不可发行指令。据此,在该周期内,执行可发行的指令的虚拟处理器中优先级最高的虚拟处理器被分配。例如,第三虚拟处理器、第六虚拟处理器以及第七虚拟处理器被分配,而取代以虚线所示的第二虚拟处理器、第五虚拟处理器以及第三虚拟处理器。
而且,即使在其它虚拟处理器被分配的情况下,也在下一个周期内在该周期内优先级最高的虚拟处理器被选择。因此,可以保证在软件开发员预测的、考虑到延迟时间的最坏周期内执行指令。
根据所述工作,可以向登录在最优先对象优先级队列703的虚拟处理器充分地提供软件开发员预测的性能,并且可以向登录在非最优先对象优先级队列705的、被分配不保证的性能的虚拟处理器积极地分配性能。
而且,在上述说明中,在各个运算段同时发行最多两个虚拟处理器的指令,但不仅限于此,若可以使用运算资源,则可以在一个运算段同时发行三个以上的虚拟处理器的指令。
(实施例5)
其次,说明本发明的实施例5涉及的多线程处理器。
实施例5涉及的多线程处理器具有与图10所示的实施例4涉及的多线程处理器相同的结构。但是,发行指令决定部1005的工作不同。
实施例4涉及的发行指令决定部1005,在各个执行周期内不存在可以向最优先发行对象的虚拟处理器发行的、被组成的指令的情况下,若存在可以向其它虚拟处理器发行的、被组成的指令,则向该虚拟处理器发行被组成的指令。
与此相对,本实施例涉及的发行指令决定部1005,在各个执行周期内不存在可以向最优先发行对象的虚拟处理器发行的、被组成的指令的情况下,即使存在可以向其它虚拟处理器发行的、被组成的指令,也不进行所有指令的发行。即,发行指令决定部1005作为表示不存在应该发行的指令的信号输出发行指令选择信号507。
通过进行这些工作,在不进行指令的发行的执行周期内,完全停止第一指令缓冲器104~第N指令缓冲器106、第一寄存器文件107~第N寄存器文件109、对应该执行周期的运算段的工作。据此,可以减少由多线程处理器使用的电力。
图12是用于说明本实施例涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
如图12所示,向第一虚拟处理器~第五虚拟处理器都分配均等的、所保证的性能1201~1205,向第六虚拟处理器以及第七虚拟处理器分别分配不保证的性能1206以及1207。
在周期单位虚拟处理器工作1208中表示以周期为单位被分配的虚拟处理器的号码,以从第一虚拟处理器到第五虚拟处理器的顺序且以周期为单位决定最高优先级,该第一虚拟处理器到第五虚拟处理器与登录在最优先对象优先级队列703的虚拟处理器号码相对应。但是,向第三虚拟处理器以及第七虚拟处理器同时发行了指令。同样,向第四虚拟处理器以及第五虚拟处理器,并且向第一虚拟处理器以及第六虚拟处理器,也同时发行了指令。
并且,在向以虚线所示的第二虚拟处理器、第五虚拟处理器以及第三虚拟处理器发行指令时,因如上所述的不存在应该发行的指令等理由而不可发行指令。因此,不发行指令。
而且,即使在其它虚拟处理器被分配的情况下、或在虚拟处理器未被分配的情况下,也在下一个周期内在该周期内优先级最高的虚拟处理器被选择。因此,可以保证在软件开发员预测的、考虑到延迟时间的最坏周期内执行指令。
根据所述工作,可以向登录在最优先对象优先级队列703的虚拟处理器充分地提供软件开发员预测的性能,并且可以向登录在非最优先对象优先级队列705的、被分配不保证的性能的虚拟处理器积极地分配性能。
(实施例6)
其次,说明本发明的实施例6涉及的多线程处理器。
本实施例涉及的多线程处理器如下构成,即,针对图1所示的实施例1涉及的多线程处理器,使用优先级决定部1301而取代优先级决定部110,使用发行指令决定部1302而取代发行指令决定部111。以下,以与所述实施例不同的部分为中心说明本实施例。
图13是用于说明优先级决定部1301以及发行指令决定部1302的结构以及工作的图。
优先级决定部1301是一种处理部,决定N条指令流的优先级,并输出表示每个虚拟处理器的优先级的优先级信息1312。
发行指令决定部1302是取代图1所示的多线程处理器中的发行指令决定部111而设置的、用于实现虚拟处理器的处理部。即,发行指令决定部1302,从优先级决定部1301接受优先级信息1312,并且,从第一指令缓冲器104~第N指令缓冲器106的各个指令缓冲器接受指令缓冲信息506,该指令缓冲信息表示是否可以执行指令。并且,发行指令决定部1302,根据接受到的优先级信息1312以及指令缓冲信息506,选择指令缓冲器和寄存器文件,该指令缓冲器保存应该发行的指令流的指令,该寄存器文件是对该指令流所需要的。
优先级决定部1301包括:最优先对象优先级队列1303,保证性能决定部1305,保证性能测量部1306,非最优先对象优先级队列1307,基本周期决定部1309,基本周期计数部1310以及复位信号生成部1311。
最优先对象优先级队列1303是存储部,登录虚拟处理器的号码(线程的号码、指令流的号码),该虚拟处理器最优先地被发行指令。最优先对象优先级指针1304指出在最优先对象优先级队列1303中的最优先的项目。
保证性能决定部1305是一种存储部,与最优先对象优先级队列1303相对应,表示按每个虚拟处理器应该执行的性能。
保证性能测量部1306是一种存储部,与最优先对象优先级队列1303相对应,表示按每个虚拟处理器已经实现的性能。
非最优先对象优先级队列1307是存储部,登录虚拟处理器的号码,该虚拟处理器最优先地被发行指令。非最优先对象优先级指针1308指出在非最优先对象优先级队列1307中的、存储成为指令发行对象的虚拟处理器的号码的项目。
基本周期决定部1309是一种处理部,决定用于进行性能计数的一定的周期。
基本周期计数部1310是一种处理部,计数用于进行性能计数的一定的周期的执行周期数。
复位信号生成部1311是一种处理部,在基本周期计数部1310计数的执行周期数达到由基本周期决定部1309设定的基本周期的情况下,向保证性能测量部1306和基本周期计数部1310通知复位信号。保证性能测量部1306和基本周期计数部1310接受复位信号后,将各自保存的执行周期数复位到0。
以下详细说明各个处理部的工作。保证性能决定部1305是一种寄存器,可以由软件设定,按每个虚拟处理器具有项目,在与该虚拟处理器相对应的项目设定对每个虚拟处理器需要的工作周期数,并且,该工作周期数是在某个系统状态下开始工作时与虚拟处理器相对应而预先被设定的。
保证性能测量部1306,按每个虚拟处理器具有项目,在各个项目以0为初始状态,若最优先的周期被分配到对应的虚拟处理器,则开始加计数。在每次加计数时,对各个项目的值与存储在保证性能决定部1305的、对应的工作周期数进行比较,在不一致时继续进行相同工作。在一致时,停止下面的计数工作,并且输出信号,该信号表示实现了与保存所一致的值的项目相对应的虚拟处理器的预定性能。
该信号成为对所述对应的虚拟处理器的控制信号,用于以下控制(1.~3.)。
1.将该虚拟处理器从由最优先对象优先级队列1303决定的优先级的决定对象中取消,不将该虚拟处理器作为指令发行对象的候补。即,在优先级信息1312不包含该虚拟处理器的信息。
2.将该虚拟处理器作为由最优先对象优先级队列1303以及非最优先对象优先级队列1307决定的优先级中优先级最低的虚拟处理器,从而输出优先级信息1312。
3.控制信号,不被使用于优先级的控制,而作为优先级信息1312的一部分被输出到发行指令决定部1302,发行指令决定部1302接受该信号后视为所述对应的虚拟处理器不保存指令,从而输出发行指令选择信号1314。
基本周期决定部1309是一种寄存器,可以由软件设定,在某个系统状态下开始工作时预先设定周期的值,在该周期内可以期待保证由保证性能决定部1305、保证性能测量部1306设定的应该保证的性能。
基本周期计数部1310,以0为初始状态,按每个工作周期开始加计数。并且,在每次加计数时,由复位信号生成部1311对保存在基本周期计数部1310的值与存储在基本周期决定部1309的值进行比较,在两个值不一致时继续进行相同工作。在两个值一致时,复位信号生成部1311停止下面的计数工作,并且输出信号,该信号表示实现了由基本周期决定部1309所定的基本周期。
表示基本周期的结束的信号具有的作用是,将保证性能测量部1306以及基本周期计数部1310初始化,即,从初始状态再开始应该保证的性能的计数和基本周期的计数。
虽然除了决定上述控制以外,还决定优先级信息1312,但优先级信息1312的决定方法与实施例2~5中的任意实施例中所述的方法相同。
并且,在发行指令决定部1302中的发行指令选择信号1314的决定处理也与所述实施例中的任意实施例相同。因此,在此不反复这些详细说明。
图14是用于说明本实施例涉及的多线程处理器中向各个虚拟处理器分配的性能的图。
如图14所示,向第一虚拟处理器~第五虚拟处理器分配与由保证性能决定部1305设定的第一保证性能~第五保证性能相同的、性能1401~1405,向第六虚拟处理器以及第七虚拟处理器分别分配不保证的性能1406以及1407,。
本实施例的特点是,如上所述、虚拟处理器1401~1405被分配由保证性能决定部1305所定的性能,该性能是对各个虚拟处理器应该保证的、不均等的性能。据此,可以向登录在最优先对象优先级队列1303的虚拟处理器充分地提供软件开发员预测的性能,并且可以向登录在非最优先对象优先级队列1307的、被分配不保证的性能的虚拟处理器积极地分配性能。
(实施例7)
其次,说明本发明的实施例7涉及的实时处理系统。
图15是示出实时处理系统的简单结构的方框图。本实施例涉及的实时处理系统是例如进行图像以及声音的再生的系统,也是使用所述实施例1~6中的任意实施例所述的多线程处理器的系统。
多线程处理器1501包括虚拟处理器1502、1503以及1504。虚拟处理器1502以及1503是一种处理器,可以保证充分地提供软件开发员预测的性能,并且,虚拟处理器1504是一种处理器,不成为保证性能的对象而被分配不保证的性能。
可保证性能的虚拟处理器1502以及1503分别使影像处理软件程序1505以及声音处理软件程序1506(即,时间上的限制严格的软件处理)执行,该影像处理软件程序1505进行运动图像的解码,该声音处理软件程序1506进行声音的解码。并且,被分配不保证的性能的虚拟处理器1504使其它的普通处理软件程序1507(即,时间上的限制不严格的软件处理)执行。
例如,作为普通处理软件程序1507执行的处理,若考虑到对数字电视机或DVD刻录器使用多线程处理器1501的情况,则可以考虑到OSD(On Screen Display:屏幕显示)的显示或频道切换处理等。
通过采用如上结构,向需要保证性能的软件程序准确地分配需要的性能,向不需要保证性能的软件程序尽量分配此外的性能,从而可以提高多线程处理器整体的吞吐率(throughput),也可以实现高速度且具有灵活性的处理。
此次,在所公开的所有实施例中举例进行了说明,但不仅限于此例子。对于本发明的范围,不是在所述说明中所示,而是在权利要求书中所示,因此本发明的范围与权利要求书均等,以及本发明的范围包含权利要求书中的所有变更。
由于本发明涉及的多线程处理器具有实现灵活且高性能的功能,因此可以适用于DVD刻录机或数字TV等、进行影像或声音的媒体处理的多线程处理器等。
Claims (18)
1.一种多线程处理器,同时执行多个指令流,其特征在于,包括:
多个运算器,执行多个指令;
分组单元,按每个所述指令流,对在该指令流中包含的指令进行分组,从而分为由可以向所述多个运算器同时发行的指令组成的组;
指令缓冲器,按每个所述指令流,并以由所述分组单元分成的组为单位,保存该指令流中包含的指令;以及
指令发行单元,按多线程处理器的每个执行周期,以组为单位从所述指令缓冲器读出指令,并向所述多个运算器发行读出后的所述指令。
2.如权利要求1所述的多线程处理器,其特征在于,还包括:
第一优先级队列,存储多个指令流标识符;以及
优先级决定单元,按所述多线程处理器的每个执行周期,对所述第一优先级队列中的至少一个以上的所述指令流标识符进行切换的同时还进行顺序排列,之后选择至少一个以上的所述指令流标识符,将所选择的所述至少一个以上的所述指令流标识符决定为优先级信息,
所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息决定指令流,从所述指令缓冲器读出该指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
3.如权利要求2所述的多线程处理器,其特征在于,
所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,从所述指令缓冲器读出可以向所述多个运算器发行的、存在于所述指令缓冲器的指令流之中优先级最高的指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
4.如权利要求2所述的多线程理器,其特征在于,还包括:
第二优先级队列,存储多个指令流标识符,
所述优先级决定单元,使在所述第一优先级队列中包含的指令流标识符的优先级高于所述第二优先级队列中包含的指令流标识符的优先级,对所述第一优先级队列以及所述第二优先级队列中的至少一个以上的所述指令流标识符,按多线程处理器的每个执行周期进行切换的同时还进行顺序排列,之后选择至少一个以上的所述指令流标识符,将所选择的所述至少一个以上的所述指令流标识符决定为优先级信息。
5.如权利要求4所述的多线程处理器,其特征在于,
所述优先级决定单元,使在所述第一优先级队列中包含的指令流标识符的优先级高于所述第二优先级队列中包含的指令流标识符的优先级,对在所述第一优先级队列中包含的所有指令流标识符以及在所述第二优先级队列中包含的所有指令流标识符,按多线程处理器的每个执行周期进行切换的同时还进行顺序排列,之后选择指令流标识符,将所选择的指令流标识符决定为优先级信息,
所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,从所述指令缓冲器读出可以向所述多个运算器发行的、存在于所述指令缓冲器的指令流之中优先级最高的指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
6.如权利要求4所述的多线程处理器,其特征在于,
所述优先级决定单元,使在所述第一优先级队列中包含的指令流标识符的优先级高于所述第二优先级队列中包含的指令流标识符的优先级,对在所述第一优先级队列中包含的一个指令流标识符以及在所述第二优先级队列中包含的所有指令流标识符,按多线程处理器的每个执行周期进行切换的同时还进行顺序排列,并从所述第一优先级队列以及所述第二优先级队列中选择指令流标识符,将所选择的指令流标识符决定为优先级信息,
所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,从所述指令缓冲器读出可以向所述多个运算器发行的、存在于所述指令缓冲器的指令流之中优先级最高的指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
7.如权利要求4所述的多线程处理器,其特征在于,
所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,在所述指令缓冲器存在可以向所述多个运算器发行的、优先级最高的指令流中的一组指令的情况下,发行该指令,并且,发行剩余的指令流中的、与所发行的指令同时可以向所述多个运算器发行的、且优先级最高的指令流中的一组指令。
8.如权利要求7所述的多线程处理器,其特征在于,
所述指令发行单元,进一步,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,在所述指令缓冲器不存在可以向所述多个运算器发行的、优先级最高的指令流中的一组指令的情况下,从所述指令缓冲器读出指令流中、可以向所述多个运算器发行的、存在于所述指令缓冲器的指令流之中优先级其次高的指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
9.如权利要求7所述的多线程处理器,其特征在于,
所述指令发行单元,进一步,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息,在所述指令缓冲器不存在可以向所述多个运算器发行的、优先级最高的指令流中的一组指令的情况下,在该执行周期内停止发行指令。
10.如权利要求2所述的多线程处理器,其特征在于,
所述优先级决定单元包括:
保证性能决定单元,示出针对所述多个指令流应该保证的性能;以及
性能测量单元,测量针对所述多个指令流执行了的性能,
所述优先级决定单元或所述指令发行单元,在所述性能测量单元测量出的性能达到由所述保证性能决定单元所示的应该保证的性能时,变更向所述多个运算器的指令发行方法,
所述性能测量单元,对由所述指令发行单元所发行的该指令流的指令的次数进行计数,并将该计数的次数作为针对指令流执行了的性能。
11.如权利要求10所述的多线程处理器,其特征在于,
所述优先级决定单元,在所述性能测量单元测量出的性能达到由所述保证性能决定单元所示的应该保证的性能时,变更所述优先级信息。
12.如权利要求11所述的多线程处理器,其特征在于,
所述优先级决定单元,在所述性能测量单元测量出的性能达到由所述保证性能决定单元所示的应该保证的性能时,不考虑达到性能的指令流的指令流标识符,而决定下一个执行周期以后的所述优先级信息。
13.如权利要求11所述的多线程处理器,其特征在于,
所述优先级决定单元,在所述性能测量单元测量出的性能达到由所述保证性能决定单元所示的应该保证的性能时,使达到性能的指令流的优先级为最低,决定下一个执行周期以后的所述优先级信息。
14.如权利要求10所述的多线程处理器,其特征在于,
所述指令发行单元,在所述性能测量单元测量出的性能达到由所述保证性能决定单元所示的应该保证的性能时,视为不存在达到性能的指令流的指令,向所述多个运算器发行其它指令流的指令。
15.如权利要求10所述的多线程处理器,其特征在于,
所述优先级决定单元还包括:
基本周期决定单元,决定预定的基本周期;
基本周期计数单元,计数执行周期数;以及
复位单元,在由所述基本周期计数单元计数的执行周期数达到由所述基本周期决定单元决定的基本周期时,将由所述基本周期计数单元计数的执行周期数以及由所述性能测量单元测量的性能复位到初始状态。
16.一种实时处理系统,包括同时执行多个指令流的多线程处理器,其特征在于,包括:
多个运算器,执行多个指令;
分组单元,按每个所述指令流,对在该指令流中包含的指令进行分组,从而分为由可以向所述多个运算器同时发行的指令组成的组;
指令缓冲器,以由所述分组单元分成的组为单位,并按每个所述指令流保存该指令流中包含的指令;
指令发行单元,按多线程处理器的每个执行周期,以组为单位从所述指令缓冲器读出指令,并向所述多个运算器发行读出后的所述指令;
第一优先级队列,存储需要实时处理的指令流的多个指令流标识符;
第二优先级队列,存储不需要实时处理的指令流的多个指令流标识符;以及
优先级决定单元,按所述多线程处理器的每个执行周期,对所述第一优先级队列中的至少一个以上的所述指令流标识符进行切换的同时还进行顺序排列,之后选择至少一个以上的所述指令流标识符,将所选择的所述至少一个以上的所述指令流标识符决定为优先级信息,
所述优先级决定单元,使在所述第一优先级队列中包含的指令流标识符的优先级高于所述第二优先级队列中包含的指令流标识符的优先级,对所述第一优先级队列以及所述第二优先级队列中的至少一个以上的指令流标识符,按多线程处理器的每个执行周期进行切换的同时还进行顺序排列,并从所述第一优先级队列以及所述第二优先级队列中选择至少一个以上的所述指令流标识符,将所选择的所述至少一个以上的所述指令流标识符决定为优先级信息,
所述指令发行单元,按多线程处理器的每个执行周期,根据由所述优先级决定单元决定的所述优先级信息决定指令流,从所述指令缓冲器读出该指令流中的一组指令,向所述多个运算器发行读出后的所述指令。
17.如权利要求16所述的实时处理系统,其特征在于,
所述需要实时处理的指令流,是用于实现影像信号或声音信号的解码处理或编码处理的指令流。
18.一种指令发行方法,由同时执行多个指令流的多线程处理器进行,其特征在于,包括:
分组步骤,按每个所述指令流,对在该指令流中包含的指令进行分组,从而分为由可以向执行多个指令的多个运算器同时发行的指令组成的组;
存储步骤,以由所述分组单元分成的组为单位,并按每个所述指令流,使该指令流中包含的指令存储在指令缓冲器中;以及
指令发行步骤,按多线程处理器的每个执行周期,以组为单位从所述指令缓冲器读出指令,并向所述多个运算器发行读出后的所述指令。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP303115/2006 | 2006-11-08 | ||
JP2006303115A JP2008123045A (ja) | 2006-11-08 | 2006-11-08 | プロセッサ |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101178646A CN101178646A (zh) | 2008-05-14 |
CN101178646B true CN101178646B (zh) | 2012-06-20 |
Family
ID=39361136
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101850944A Expired - Fee Related CN101178646B (zh) | 2006-11-08 | 2007-11-08 | 多线程处理器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8141088B2 (zh) |
JP (1) | JP2008123045A (zh) |
CN (1) | CN101178646B (zh) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1962181A4 (en) * | 2005-12-02 | 2010-05-26 | Panasonic Corp | BUFFER CONTROL UNIT AND BUFFER MEMORY |
US20100174884A1 (en) * | 2005-12-27 | 2010-07-08 | Matsushita Electric Industrial Co., Ltd. | Processor having reconfigurable arithmetic element |
US20080270658A1 (en) * | 2007-04-27 | 2008-10-30 | Matsushita Electric Industrial Co., Ltd. | Processor system, bus controlling method, and semiconductor device |
US20100332690A1 (en) * | 2008-01-29 | 2010-12-30 | Panasonic Corporation | Processor performance analysis device, method, and simulator |
JP5379122B2 (ja) * | 2008-06-19 | 2013-12-25 | パナソニック株式会社 | マルチプロセッサ |
JP5173711B2 (ja) | 2008-09-30 | 2013-04-03 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法 |
JP5173712B2 (ja) | 2008-09-30 | 2013-04-03 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ |
WO2010095182A1 (ja) * | 2009-02-17 | 2010-08-26 | パナソニック株式会社 | マルチスレッドプロセッサ及びデジタルテレビシステム |
JP5433676B2 (ja) | 2009-02-24 | 2014-03-05 | パナソニック株式会社 | プロセッサ装置、マルチスレッドプロセッサ装置 |
EP2434392B1 (en) * | 2009-05-18 | 2014-08-13 | Panasonic Corporation | Processor |
JP5548037B2 (ja) * | 2010-06-11 | 2014-07-16 | パナソニック株式会社 | 命令発行制御装置及び方法 |
US8724696B2 (en) * | 2010-09-23 | 2014-05-13 | Vmware, Inc. | System and method for transmitting video and user interface elements |
CN101980147B (zh) * | 2010-11-04 | 2013-11-27 | 威盛电子股份有限公司 | 多线程处理器及其指令执行与同步方法 |
WO2012066620A1 (ja) * | 2010-11-15 | 2012-05-24 | 富士通株式会社 | 情報処理装置、情報処理プログラム、および情報処理方法 |
US9830158B2 (en) * | 2011-11-04 | 2017-11-28 | Nvidia Corporation | Speculative execution and rollback |
CN102662629B (zh) * | 2012-04-20 | 2015-09-30 | 西安电子科技大学 | 一种减少处理器寄存器文件的写端口数目的方法 |
US10416935B2 (en) * | 2012-05-24 | 2019-09-17 | Hewlett-Packard Development Company, L.P. | Method and apparatus to process a print job |
JP5654643B2 (ja) * | 2013-07-22 | 2015-01-14 | パナソニック株式会社 | マルチスレッドプロセッサ |
JP5770333B2 (ja) * | 2014-04-24 | 2015-08-26 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ |
JP5838237B2 (ja) * | 2014-04-24 | 2016-01-06 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサ |
US9665372B2 (en) | 2014-05-12 | 2017-05-30 | International Business Machines Corporation | Parallel slice processor with dynamic instruction stream mapping |
US9672043B2 (en) | 2014-05-12 | 2017-06-06 | International Business Machines Corporation | Processing of multiple instruction streams in a parallel slice processor |
US9760375B2 (en) | 2014-09-09 | 2017-09-12 | International Business Machines Corporation | Register files for storing data operated on by instructions of multiple widths |
US9720696B2 (en) | 2014-09-30 | 2017-08-01 | International Business Machines Corporation | Independent mapping of threads |
US9977678B2 (en) | 2015-01-12 | 2018-05-22 | International Business Machines Corporation | Reconfigurable parallel execution and load-store slice processor |
US10133576B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries |
US10133581B2 (en) | 2015-01-13 | 2018-11-20 | International Business Machines Corporation | Linkable issue queue parallel execution slice for a processor |
JP5946566B2 (ja) * | 2015-06-24 | 2016-07-06 | ルネサスエレクトロニクス株式会社 | マルチスレッドプロセッサにおけるハードウェアスレッドのスケジュール方法 |
CN106502767B (zh) * | 2015-09-08 | 2019-11-19 | 大唐移动通信设备有限公司 | 一种进程管理方法及其装置 |
US9983875B2 (en) | 2016-03-04 | 2018-05-29 | International Business Machines Corporation | Operation of a multi-slice processor preventing early dependent instruction wakeup |
US10037211B2 (en) | 2016-03-22 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor with an expanded merge fetching queue |
US10346174B2 (en) | 2016-03-24 | 2019-07-09 | International Business Machines Corporation | Operation of a multi-slice processor with dynamic canceling of partial loads |
US10761854B2 (en) | 2016-04-19 | 2020-09-01 | International Business Machines Corporation | Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor |
US10037229B2 (en) | 2016-05-11 | 2018-07-31 | International Business Machines Corporation | Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions |
US9934033B2 (en) | 2016-06-13 | 2018-04-03 | International Business Machines Corporation | Operation of a multi-slice processor implementing simultaneous two-target loads and stores |
US10042647B2 (en) | 2016-06-27 | 2018-08-07 | International Business Machines Corporation | Managing a divided load reorder queue |
US10318419B2 (en) | 2016-08-08 | 2019-06-11 | International Business Machines Corporation | Flush avoidance in a load store unit |
US11513838B2 (en) * | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread state monitoring in a system having a multi-threaded, self-scheduling processor |
US11513837B2 (en) * | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread commencement and completion using work descriptor packets in a system having a self-scheduling processor and a hybrid threading fabric |
US11513839B2 (en) * | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Memory request size management in a multi-threaded, self-scheduling processor |
US11513840B2 (en) * | 2018-05-07 | 2022-11-29 | Micron Technology, Inc. | Thread creation on local or remote compute elements by a multi-threaded, self-scheduling processor |
EP3818440A4 (en) * | 2018-07-02 | 2021-08-18 | Drivenets Ltd. | SYSTEM FOR IMPLEMENTATION OF MULTIPLE APPLICATIONS |
US10754689B1 (en) * | 2019-02-13 | 2020-08-25 | GM Global Technology Operations LLC | Architecture and device for multi-stream vision processing on shared devices |
US11544062B2 (en) * | 2019-09-27 | 2023-01-03 | Intel Corporation | Apparatus and method for store pairing with reduced hardware requirements |
US11954518B2 (en) * | 2019-12-20 | 2024-04-09 | Nvidia Corporation | User-defined metered priority queues |
CN114816652A (zh) * | 2021-01-29 | 2022-07-29 | 上海阵量智能科技有限公司 | 命令处理装置以及方法、电子设备、以及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
CN1109967C (zh) * | 1996-12-27 | 2003-05-28 | 国际商业机器公司 | 多线程处理器中指令和关联读取请求的后台完成 |
CN1716183A (zh) * | 2004-06-30 | 2006-01-04 | 中国科学院计算技术研究所 | 一种应用于同时多线程处理器的取指控制装置及其方法 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2908598B2 (ja) * | 1991-06-06 | 1999-06-21 | 松下電器産業株式会社 | 情報処理装置 |
JPH07200315A (ja) * | 1994-01-07 | 1995-08-04 | Fuji Facom Corp | 計算機システムにおけるプロセスのスケジューリング装置 |
JP3760035B2 (ja) * | 1996-08-27 | 2006-03-29 | 松下電器産業株式会社 | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ |
US5987492A (en) * | 1997-10-31 | 1999-11-16 | Sun Microsystems, Inc. | Method and apparatus for processor sharing |
EP1247195A4 (en) * | 1999-12-22 | 2005-01-05 | Ubicom Inc | SYSTEM AND METHOD FOR MULTITHREADING WORKING ON COMMAND LEVEL IN AN EMBEDDED PROCESSOR WITH ZERO-TIME CONTEXT SWITCHING |
US6658551B1 (en) * | 2000-03-30 | 2003-12-02 | Agere Systems Inc. | Method and apparatus for identifying splittable packets in a multithreaded VLIW processor |
JP2001356904A (ja) * | 2000-06-13 | 2001-12-26 | Fujitsu Ltd | プロセッサ |
US7536689B2 (en) * | 2003-01-10 | 2009-05-19 | Tricerat, Inc. | Method and system for optimizing thread scheduling using quality objectives |
US7469407B2 (en) * | 2003-04-24 | 2008-12-23 | International Business Machines Corporation | Method for resource balancing using dispatch flush in a simultaneous multithread processor |
JP2004326486A (ja) * | 2003-04-25 | 2004-11-18 | Matsushita Electric Ind Co Ltd | タスク管理装置 |
US7401207B2 (en) | 2003-04-25 | 2008-07-15 | International Business Machines Corporation | Apparatus and method for adjusting instruction thread priority in a multi-thread processor |
US7802255B2 (en) * | 2003-12-19 | 2010-09-21 | Stmicroelectronics, Inc. | Thread execution scheduler for multi-processing system and method |
JP2005209105A (ja) * | 2004-01-26 | 2005-08-04 | Matsushita Electric Ind Co Ltd | マルチスレッドプロセッサ |
US7681014B2 (en) * | 2005-02-04 | 2010-03-16 | Mips Technologies, Inc. | Multithreading instruction scheduler employing thread group priorities |
-
2006
- 2006-11-08 JP JP2006303115A patent/JP2008123045A/ja active Pending
-
2007
- 2007-11-07 US US11/936,296 patent/US8141088B2/en active Active
- 2007-11-08 CN CN2007101850944A patent/CN101178646B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1109967C (zh) * | 1996-12-27 | 2003-05-28 | 国际商业机器公司 | 多线程处理器中指令和关联读取请求的后台完成 |
US6212544B1 (en) * | 1997-10-23 | 2001-04-03 | International Business Machines Corporation | Altering thread priorities in a multithreaded processor |
CN1716183A (zh) * | 2004-06-30 | 2006-01-04 | 中国科学院计算技术研究所 | 一种应用于同时多线程处理器的取指控制装置及其方法 |
Also Published As
Publication number | Publication date |
---|---|
JP2008123045A (ja) | 2008-05-29 |
US20080109809A1 (en) | 2008-05-08 |
CN101178646A (zh) | 2008-05-14 |
US8141088B2 (en) | 2012-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101178646B (zh) | 多线程处理器 | |
US7269712B2 (en) | Thread selection for fetching instructions for pipeline multi-threaded processor | |
JP5173714B2 (ja) | マルチスレッドプロセッサ及びその割り込み処理方法 | |
CN101681261B (zh) | 运算处理装置及其控制方法 | |
US20170235578A1 (en) | Method and Apparatus for Scheduling of Instructions in a Multi-Strand Out-Of-Order Processor | |
US6557095B1 (en) | Scheduling operations using a dependency matrix | |
US9323530B2 (en) | Caching optimized internal instructions in loop buffer | |
CN101957744B (zh) | 一种用于微处理器的硬件多线程控制方法及其装置 | |
JPH04360234A (ja) | 情報処理装置 | |
US10013290B2 (en) | System and method for synchronizing threads in a divergent region of code | |
CN101763251A (zh) | 多线程微处理器的指令译码缓冲装置 | |
WO2013144733A2 (en) | Instruction merging optimization | |
US8560813B2 (en) | Multithreaded processor with fast and slow paths pipeline issuing instructions of differing complexity of different instruction set and avoiding collision | |
US11366669B2 (en) | Apparatus for preventing rescheduling of a paused thread based on instruction classification | |
JP2011519100A (ja) | パイプライン型アーキテクチャを有するデータプロセッサ内のトレースデータを与えるシステム | |
CN102109979A (zh) | 处理器、协处理器、信息处理系统及其方法 | |
KR100483463B1 (ko) | 사전-스케쥴링 명령어 캐시를 구성하기 위한 방법 및 장치 | |
US10877763B2 (en) | Dispatching, allocating, and deallocating instructions with real/virtual and region tags in a queue in a processor | |
KR100837400B1 (ko) | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 | |
Roitzsch et al. | Atlas: Look-ahead scheduling using workload metrics | |
US9928068B2 (en) | Hardware managed dynamic thread fetch rate control | |
JPWO2008155799A1 (ja) | 命令実行制御装置及び命令実行制御方法 | |
CN107003859A (zh) | 通过连续监控重复指令序列的运行时代码并行化 | |
US20120060017A1 (en) | Processor | |
JP2000081982A (ja) | コンパイラ、プロセッサおよび記録媒体 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120620 Termination date: 20181108 |