CN104731560B - 支持多线程处理的功能单元、处理器及其操作方法 - Google Patents
支持多线程处理的功能单元、处理器及其操作方法 Download PDFInfo
- Publication number
- CN104731560B CN104731560B CN201410715544.6A CN201410715544A CN104731560B CN 104731560 B CN104731560 B CN 104731560B CN 201410715544 A CN201410715544 A CN 201410715544A CN 104731560 B CN104731560 B CN 104731560B
- Authority
- CN
- China
- Prior art keywords
- operator
- operators
- thread
- functional unit
- resource conflict
- 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.)
- Active
Links
- 238000012545 processing Methods 0.000 title claims abstract description 43
- 238000000034 method Methods 0.000 title description 31
- 238000001514 detection method Methods 0.000 claims description 18
- 230000015654 memory Effects 0.000 claims description 13
- 230000004044 response Effects 0.000 claims description 12
- 238000011017 operating method Methods 0.000 abstract 1
- 230000008569 process Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 230000003111 delayed effect Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013475 authorization Methods 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000000593 degrading effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
-
- 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
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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/466—Transaction processing
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)
- Input From Keyboards Or The Like (AREA)
Abstract
一种支持多线程处理的功能单元、处理器及其操作方法。所述支持多线程处理的功能单元包括:多个输入端口,被配置为接收多个线程的多个操作码和多个操作数,其中,所述多个输入端口中的每个输入端口被配置为接收不同的线程的操作码和操作数;多个运算器,被配置为使用接收的所述多个操作码执行运算;运算器选择器,被配置为基于每个操作码从所述多个运算器中选择一运算器来使用接收到的所述多个操作数中的一操作数执行特定运算;多个输出端口,被配置为输出每个线程的运算的运算结果。
Description
本申请要求于2013年12月20日提交到韩国知识产权局的第10-2013-0160231号韩国专利申请的优先权,该申请的公开全部合并于此以资参考。
技术领域
与示例性实施例一致的设备和方法涉及一种多线程处理处理器,更具体地,涉及一种支持多线程处理的功能单元、包括该功能单元的处理器及其操作方法。
背景技术
随着计算机技术的发展,存在很多情况是,不是仅有一个任务而是多个任务需要被同时执行。可通过多重处理、多任务处理、多重编程和/或多线程处理来实现多个任务的同时执行。
通过多任务处理或多重复用等来执行多重处理,其中,多任务处理可指的是在多个处理器(或多个线程)中处理多个任务,多重复用可指的是在一个处理器中处理多个任务。
例如,当同时对多个操作(即,多个任务)进行多任务处理时,操作系统(OS)可使用通过使用多个处理器(多重处理)的执行方法,或使用执行多个线程(多线程处理)的方法。
多重处理和多线程处理在同时的多个任务流程的特征方面具有共同之处。然而,多重处理和多线程处理之间的差别在于:在多重处理中,多个处理彼此独立地运行,并且每个处理具有其自己的内存,而多线程处理共享一个处理中的内存;线程之间的转换速度比处理之间的转换速度更快;线程的调度执行得比处理的调度更快。
发明内容
根据示例性实施例的一方面,提供了一种用于支持多线程处理的功能单元,所述功能单元包括:多个输入端口,被配置为接收多个线程的操作码和操作数,其中,所述多个输入端口中的每个输入端口被配置为接收不同的线程的操作码和操作数;多个运算器,被配置为使用接收的操作码执行运算;运算器选择器,被配置为基于每个操作码从所述多个运算器中选择一运算器来使用接收到的操作数中的一操作数执行特定运算;多个输出端口,被配置为输出每个线程的运算的运算结果。
所述多个输出端口中的每个输出端口可被配置为输出不同的线程的运算结果。
所述多个运算器可包括多个寄存器,所述多个寄存器被配置为沿着数据通路被分配给每个线程以存储运算的运算结果。
所述多个运算器中的每个运算器可被配置为执行与所述多个运算器中的其它运算器所执行的运算不同的特定运算。
所述多个运算器中的至少两个运算器可被配置为执行相同的运算。
所述至少两个运算器可被配置为执行在功能单元中被频繁执行的运算。
所述至少两个运算器可被配置为产生指示当前状态的信号,并将产生的信号发送到运算器选择器。
根据另一示例性实施例的一方面,提供了一种处理器,包括:处理元件,被配置为包括用于同时执行多个线程的至少一个功能单元;资源冲突检测器,被配置为通过确定所述多个线程中是否有至少两个线程同时尝试在同一功能单元中执行相同运算来检测资源冲突;资源调度器,被配置为响应于检测到资源冲突,根据预定标准确定冲突的所述至少两个线程的处理顺序。
资源冲突检测器可包括:资源信息存储器,被配置为存储关于所述至少一个功能单元的运算器信息;操作码比较器,被配置为在所述至少一个功能单元中的每个功能单元中比较所述多个线程的操作码;资源冲突确定器,被配置为基于操作码比较器的比较结果和资源信息存储器存储的运算器信息来确定资源冲突。
运算器信息可包括以下项中的至少一个信息:运算器的类型、运算器的数量和每个运算器的状态信息。
资源调度器还可被配置为针对冲突的所述至少两个线程中具有低优先级的线程,产生延迟信号。
处理器还可包括:队列,被配置为存储从资源冲突检测器接收的资源冲突检测结果。
处理器还可包括:刷新器,被配置为响应于存储在队列中的资源冲突检测结果由于包括在所述多个线程中的某些线程中的控制声明的执行无效而刷新队列。
根据另一示例性实施例,提供了一种操作处理器的方法,所述处理器包括被配置为同时处理多个线程的至少一个功能单元,所述方法包括:通过确定所述多个线程中是否有至少两个线程同时尝试在同一功能单元中执行相同运算来检测资源冲突;响应于检测到资源冲突,根据预定标准确定冲突的所述至少两个线程的处理顺序。
检测资源冲突的步骤可包括:针对所述至少一个功能单元中的每个功能单元对所述多个线程的操作码进行比较;基于比较的结果和存储的运算器信息确定资源冲突。
运算器信息可包括以下项中的至少一个信息:运算器的类型、运算器的数量和每个运算器的状态信息。
所述方法还可包括:将冲突的所述至少两个线程中具有低优先级的线程延迟。
所述方法还可包括:将资源冲突检测结果存储在队列中。
所述方法还可包括:响应于存储在队列中的资源冲突检测结果由于包括在所述多个线程中的某些线程中的控制声明的执行无效而刷新队列。
附图说明
通过结合附图对示例性实施例的以下描述,以上和/或其它方面将会变得清楚和更容易理解,其中:
图1是示意性地示出根据示例性实施例的用于支持多线程处理的功能单元的框图;
图2是示出根据示例性实施例的用于支持多线程处理的功能单元的示例的框图;
图3是示出根据示例性实施例的处理器的示例的框图;
图4是示出根据示例性实施例的图3中的资源冲突检测器的示例的详细示图;
图5是示出根据另一示例性实施例的处理器的示例的框图;
图6是示出根据示例性实施例的操作处理器的示例方法的流程图;
图7是示出根据示例性实施例的图6中检测资源冲突的示例的详细流程图。
具体实施方式
提供以下描述以帮助读者获得对于在此描述的方法、设备和/或系统的全面理解。因此,将会为本领域的普通技术人员建议在此描述的方法、设备和/或系统的各种改变、修改和等同物。另外,为了更加清楚和简明,可省略公知的功能和结构的描述。
贯穿附图和具体实施方式,除非另外说明,否则相同的附图标号将被理解为表示相同的元件、特征和结构。为了清楚、示意和方便,可夸大这些元件的相对大小和描绘。
以下,将参照附图详细描述示例性实施例。
根据一个或更多个示例性实施例,本领域的普通技术人员应理解,功能单元(也可被称为执行单元)可以是中央处理器(CPU)或处理器的一部分,并且可执行正在CPU上运行或者准备在CPU上运行的计算机程序所调用的操作和计算。功能单元可具有其自己的内部控制序列单元,内部控制序列单元也可被称为运算器选择器,并且与CPU主控制单元分离。功能单元也可具有一个或更多个寄存器、其它内部单元(诸如子算术逻辑单元(ALU)或浮点运算单元(FPU))和/或某些其它的更小的部件。根据一个或更多个示例性实施例,CPU可具有按照标量或超标量设计排列的多个并行功能单元。此外,CPU的功能单元可形成流水线,并且/或者CPU的功能单元可被布置,从而使一个功能单元用作总线管理器以管理存储器接口,其它功能单元被配置为执行正由CPU运行的计算机程序的计算。
图1是示意性地示出根据示例性实施例的用于支持多线程处理的功能单元的框图。
参照图1,功能单元(FU)100可包括输入端口110a、110b和110c,运算器120a、120b和120c,运算器选择器130以及输出端口140a、140b和140c。
输入端口110a、110b和110c可接收每个线程的操作码和操作数。例如,输入端口#1110a接收线程1的操作码和操作数,输入端口#2 110b接收线程2的操作码和操作数,输入端口#n 110c接收线程n的操作码和操作数,其中,输入端口的数量可以与将被同时执行的线程的数量相同,但是不限于此。
运算器120a、120b和120c可执行操作数的特定运算。运算器可被实现为加法器、乘法器、除法器、比较器等,但是不限于此。
根据示例性实施例,沿着用于多线程处理的运算器120a、120b和120c中的每一个的数据通路,可包括分配给每个线程并存储运算结果的寄存器#1和寄存器#n,其中,寄存器#1可分配给线程1,寄存器#n可分配给线程n。
运算器选择器130可基于从输入端口110a、110b和110c中的每一个接收的操作码选择用于执行每个操作数的运算器。例如,假设运算器120a是加法器,运算器120b是乘法器,运算器120c是比较器,如果线程1的操作码是加法指令,线程2的操作码是乘法指令,则运算器选择器130可选择运算器120a作为用于处理线程1的操作数的运算器,并且可选择运算器120b作为用于处理线程2的操作数的运算器。在这种情况下,运算器120a执行线程1的操作数的加法运算,并且同时运算器120b执行线程2的操作数的乘法运算。
输出端口140a、140b和140c可输出每个线程的运算结果。例如,输出端口#1 140a可输出线程1的运算结果,输出端口#2 140b可输出线程2的运算结果,输出端口#n 140c可输出线程n的运算结果,其中,输出端口的数量可以与将被同时处理的线程的数量相同,但不限于此。
如上所述,功能单元100可同时处理多个线程,从而使线程级并行处理(TLP)最大化。
根据示例性实施例,运算器120a、120b和120c可被配置为执行彼此不同的运算。在这种情况下,功能单元100可同时处理多个线程的不同操作码。
然而,在运算器120a、120b和120c被配置为执行彼此不同的运算,并且两个或更多个线程被配置为使用同一功能单元100执行相同运算的情况下,发生资源冲突,并且低优先级的线程被延迟,从而会降低系统性能。
为了解决延迟的线程和性能降低,根据示例性实施例,运算器120a、120b和120c中的两个或更多个运算器可被配置为执行相同运算。具体地,为了在没有资源冲突的情况下执行在功能单元100中频繁执行的运算,可在功能单元100中布置多于一个的频繁使用的运算器。为了知道要何时布置运算器、布置多少运算器,可预先分析各种线程运算的概况以确定和分析哪些运算被频繁执行。因此,基于分析概况的运算,功能单元可布置多个频繁使用的运算器。例如,在分析概况时,如果频繁执行加法运算的线程频繁造成资源冲突且降低系统性能,则用作加法器的运算器可被进一步添加到功能单元100,每个加法器产生用于指示关于其自己的当前状态的信息(即,关于每个加法器是否处于将被使用的条件的信息)的信号。相应地,信号被发送到运算器选择器130以使运算器选择器130能够基于可用性来做出适当的选择。
特别地,根据示例性实施例,被配置为执行相同运算的两个或更多个运算器中的每一个可产生用于指示其自己的当前状态的信号,并可将信号输出到运算器选择器130。指示当前状态的信号指的是指示每个运算器是否可被使用的信号。例如,当两个或更多个运算器中的每一个正在执行运算并且因此不可以执行其它线程的运算时,每个运算器可产生忙信号以将产生的信号发送到运算器选择器130。在这种情况下,运算器选择器130在排除了发送忙信号的运算器的其它运算器中选择运算器。
此外,当完成了在忙信号被发送时已经在执行的运算的时候,已将忙信号发送到运算器选择器130的运算器可产生和输出完成信号,从而使另一线程可使用该运算器。
图2是示出根据示例性实施例的用于支持多线程处理的功能单元的框图。图2中的功能单元200是用于同时处理两个线程的功能单元的示例,功能单元200包括两个运算器(加法器和比较器)。为了方便,图2示出了包括两个运算器的功能单元,但是根据本发明的使用和性能,功能单元也可包括各种运算器。
参照图2,功能单元200接收线程1和线程2的操作数和操作码。功能单元200选择用于执行每个线程的操作数的运算的运算器,为每个线程选择的运算器用于执行每个线程的操作数的运算。例如,如果线程1的操作码是加法指令,线程2的操作码是比较指令,则功能单元200使用加法器来执行线程1的操作数的加法运算,并且同时使用比较器来执行线程2的操作数的比较运算。
沿着每个运算器的数据通路,包括用于每个线程的寄存器。例如,寄存器#1是线程1的寄存器,寄存器#2是线程2的寄存器。也就是说,线程1的操作数的运算结果存储在寄存器#1中,线程2的操作数的运算结果存储在寄存器#2中。
然后,功能单元200通过两个输出端子输出每个线程的运算结果。
图3是示出根据示例性实施例的处理器的示例的框图。
参照图3,处理器300包括处理元件310、资源冲突检测器320和资源调度器330。
处理元件310可同时处理多个线程。为此,处理元件310可包括一个或更多个功能单元(FU #0到FU #n)。功能单元中的每一个功能单元或者至少一个功能单元可按照相似的方式并用与参照图1描述的功能单元相似的配置同时执行多个线程的多个运算,因此将省略其详细描述。
资源冲突检测器320可在同一的功能单元中检测两个或更多个线程是否同时执行相同的运算,从而检测资源冲突。例如,在线程1在FU #0中执行加法运算,线程2在FU #0中执行乘法运算的情况下,由于FU #0可同时执行加法运算和乘法运算,因此不会发生资源冲突。然而,在线程1和线程2在FU #1中同样地执行比较运算而其中仅有一个用于执行比较运算的比较器的情况下,发生资源冲突。在这种情况下,资源冲突检测器320可在FU #1中检测到资源冲突。
资源调度器330可根据预定标准来确定冲突线程的处理顺序。例如,资源调度器330可通过直接确定是否发生高速缓存未命中来确定冲突线程的处理顺序,或者通过接收资源调度器330的外部信息来确定冲突线程的处理顺序。在另一示例中,资源调度器330可根据用户或系统设置的优先级顺序来确定冲突资源的处理顺序,但是处理顺序的确定不限于此。例如,根据另一示例性实施例,当没有检测到高速缓存未命中,没有提供外部信息并且冲突线程之间不存在线程优先级差异时,资源调度器330可基于线程的特定属性以及线程与其它冲突线程的比较情况来确定处理顺序,然后相应地组织冲突线程。例如,特定属性可包括这样的值:诸如线程的处理时间、存储时间、从线程请求的内存调用信息的时间量、运算复杂度和周期以及其它已知的值。此外,根据另一示例性实施例,这些值可在考虑与冲突线程相关的所有接收的和确定的信息的加权判决算法中使用。
资源调度器330可基于确定的处理顺序,产生延迟信号以延迟低优先级的线程的数据通路。此外,资源调度器330可产生关于是否授权使用被延迟的线程的资源的许可的授权信号。
在接收到延迟信号之后,处理元件310延迟低优先级的线程的数据通路,并在接收到响应于使用被延迟的线程的资源的许可被授权而产生的授权信号之后,延迟的线程被取消延迟,并且重新开始线程的处理。
图4是示出根据示例性实施例的图3中的资源冲突检测器的示例的详细示图。
参照图4,资源冲突检测器320包括资源信息存储器410、操作码比较器420和资源冲突确定器430。
资源信息存储器410将线程信息、功能单元信息、运算器信息等存储为资源表。线程信息可包括将被同时处理的线程、正在被处理的线程等的标识。功能单元信息可包括处理元件310中所包括的功能单元的数量、功能单元的标识等。运算器信息可包括运算器的类型、运算器的数量、运算器的状态信息等,其中,状态信息指的是关于每个运算器是否正在执行运算的信息。
此外,在功能单元100中所包括的两个或更多个运算器120a、120b和120c被配置为处理相同操作码的情况下,将忙信号发送到运算器选择器130的运算器响应于处理操作码的完成发送完成信号(所述操作码在忙信号被发送时正被处理),资源信息存储器410接收完成信号以更新功能单元中的运算器的状态信息。可通过各种方法来管理运算器的表。
操作码比较器420可在每个功能单元中比较每个线程的操作码。例如,通过对每个线程的指令进行解码,可通过操作码识别每个功能单元中将被执行的运算的类型。在这种情况下,通过在每个功能单元中比较每个线程的操作码,操作码比较器420可确定每个功能单元是否执行相同的运算。
资源冲突确定器430可基于存储在资源信息存储器410中的信息并基于操作码比较器420的比较结果,确定资源冲突。例如,假设在FU #0中,线程1和线程2同样地执行加法运算,如果基于存储在资源信息存储器410中的FU #0的运算器信息,在FU #0中包括有两个加法器,则由于FU #0可同时使用两个加法器而不会发生资源冲突。然而,如果在FU #0中仅包括一个加法器,则由于不可以在FU #0中用仅有的一个加法器同时执行两个加法运算,因此不可以同时处理线程1和线程2的操作码。在这种情况下,资源冲突确定器430可确定资源冲突。
处理器采用流水线方法。软件流水线作业通常包括读取、解码、执行和写回的操作。
在示例性实施例中,资源冲突检测器320可通过在软件流水线作业的对指令解码的操作中比较每个线程的操作码来检测资源冲突。
图5是示出根据另一示例性实施例的处理器的示例的框图。
参照图5,除了资源冲突检测器320、资源调度器330和处理元件310之外,处理器500还可包括队列510和刷新器520。
在处理器500中被同时处理的某些线程中包括控制声明(诸如分支等)的情况下,由于控制声明的执行,资源冲突检测器320在对指令解码的操作中检测到的结果可能不是有效的。因此,除了图3中的处理器300的配置之外,处理器500还可包括队列510和刷新器520。
队列510可存储资源冲突检测器320的检测结果。
在存储在队列510中的检测结果由于控制声明的执行而无效的情况下,刷新器520可刷新队列510。
在线程中不包括控制声明的情况下,或者在即使控制声明被执行时队列510中存储的检测结果仍然有效的情况下,队列510将检测结果发送到资源调度器330,资源调度器330可基于检测结果延迟冲突线程的数据通路。在这种情况下,可基于根据资源调度器330预设的标准确定的处理顺序来延迟线程。
图6是示出根据示例性实施例的操作处理器的示例方法的流程图。
参照图6,操作处理器的方法包括检查多个线程是否同时在同一功能单元中执行相同的运算以检测资源冲突(操作610)。
然后,资源冲突检查结果被存储在队列510中(操作620)。
接下来,在执行包括在多个线程中的某些线程中的控制声明时,确定存储在队列510中的检测结果是否有效(操作630)。
响应于确定存储在队列510中的检测结果有效(操作630-是),根据预定标准确定冲突线程的处理顺序(操作640),然后延迟冲突线程中的低优先级的线程(操作650)。
响应于确定存储在队列510中的检测结果无效(操作630-否),刷新队列510(操作660),然后返回到操作610。
图7是示出图6中检测资源冲突(操作610)的示例的详细流程图。
参照图7,检测资源冲突包括:对每个功能单元中将被同时处理的多个线程的操作码进行比较(操作710)。例如,通过对每个线程的指令进行解码,可根据操作码来识别在每个功能单元中将被执行的运算的类型。因此,通过在指令流水线作业中的对指令解码的操作中对每个功能单元中的每个线程的操作码进行比较,可确定每个功能单元是否同时执行相同的运算。
然后,基于比较结果和预先存储的运算器信息确定是否存在资源冲突(操作720),其中,运算器信息可包括每个功能单元中包括的运算器的类型和运算器的数量以及每个运算器的状态信息。
以上描述的方法和/或操作可记录、存储或固定在包括程序指令的一个或更多个非暂时性计算机可读存储介质中,其中,所述程序指令将被计算机或处理器运行以运行或执行所述程序指令。介质还可包括单独的程序指令、数据文件、数据结构等或者包括以上项的组合。计算机可读存储介质的示例包括磁性介质(诸如硬盘、软盘和磁带)、光学介质(诸如CD ROM盘和DVD)、磁光介质(诸如光盘)和被特别配置为存储和执行程序指令的硬件装置,诸如只读存储器(ROM)、随机存取存储器(RAM)、闪存等。程序指令的示例包括机器码(诸如由编译器生成的机器码)以及文件,其中,文件包含可由计算机使用解释器执行的更高级代码。上述的硬件装置可被配置为用作一个或更多个软件模块以执行上述的操作和方法,反之亦然。另外,计算机可读存储介质可分布在联网的计算机系统中,并且可按照分散的方式存储和执行计算机可读代码或程序指令。
以上已经描述了多个示例。然而,应理解可进行各种修改。例如,如果按照不同顺序执行描述的技术并且/或者如果描述的系统、架构、装置或电路中的部件按照不同的方式被组合和/或由其它部件或它们的等同物取代或补充,则可实现合适的结果。因此,其它实现方式在权利要求的范围之内。
Claims (13)
1.一种用于支持多线程处理的功能单元,所述功能单元包括:
多个输入端口,被配置为接收多个线程的多个操作码和多个操作数,其中,所述多个输入端口中的每个输入端口被配置为接收不同的线程的操作码和操作数;
多个运算器,被配置为使用接收的所述多个操作数执行运算;
运算器选择器,被配置为基于每个操作码从所述多个运算器之中选择一运算器来使用接收到的所述多个操作数之中的一操作数执行对应运算;
多个输出端口,被配置为输出每个线程的运算的运算结果,
其中,所述多个运算器中的至少两个运算器被配置为执行相同的运算,
其中,所述至少两个运算器被配置为产生指示当前状态的信号,并将产生的信号发送到运算器选择器,使运算器选择器基于所述信号在所述至少两个运算器中排除了发送了指示当前不可被使用的忙信号的运算器的其他运算器中选择运算器。
2.如权利要求1所述的功能单元,其中,所述多个输出端口中的每个输出端口被配置为输出不同的线程的运算结果。
3.如权利要求1所述的功能单元,其中,所述多个运算器包括多个寄存器,其中,所述多个寄存器被配置为沿着数据通路被分配给每个线程以存储运算的运算结果。
4.如权利要求1所述的功能单元,其中,所述至少两个运算器被配置为执行在功能单元中被频繁执行的运算。
5.一种处理器,包括:
处理元件,被配置为包括用于同时执行多个线程的至少一个功能单元;
资源冲突检测器,被配置为通过确定所述多个线程中是否有至少两个线程同时尝试在同一功能单元中执行相同运算来检测资源冲突;
资源调度器,被配置为响应于检测到资源冲突,根据预定标准确定冲突的所述至少两个线程的处理顺序,
其中,功能单元包括:
多个输入端口,被配置为接收多个线程的多个操作码和多个操作数,其中,所述多个输入端口中的每个输入端口被配置为接收不同的线程的操作码和操作数,
多个运算器,被配置为使用接收的所述多个操作数执行运算,
运算器选择器,被配置为基于每个操作码从所述多个运算器之中选择一运算器来使用接收到的所述多个操作数之中的一操作数执行对应运算,
多个输出端口,被配置为输出每个线程的运算的运算结果,
其中,所述多个运算器中的至少两个运算器被配置为执行相同的运算,
其中,所述至少两个运算器被配置为产生指示当前状态的信号,并将产生的信号发送到运算器选择器,使运算器选择器基于所述信号在所述至少两个运算器中排除了发送了指示当前不可被使用的忙信号的运算器的其他运算器中选择运算器。
6.如权利要求5所述的处理器,其中,资源冲突检测器包括:
资源信息存储器,被配置为存储关于所述至少一个功能单元的运算器信息;
操作码比较器,被配置为在所述至少一个功能单元中的每个功能单元中比较所述多个线程的操作码;
资源冲突确定器,被配置为基于操作码比较器的比较结果和资源信息存储器存储的运算器信息来确定资源冲突。
7.如权利要求6所述的处理器,其中,运算器信息包括以下信息中的至少一条信息:运算器的类型、运算器的数量和每个运算器的状态信息。
8.如权利要求5所述的处理器,其中,资源调度器还被配置为针对冲突的所述至少两个线程之中具有低优先级的线程,产生延迟信号。
9.如权利要求5所述的处理器,还包括:队列,被配置为存储从资源冲突检测器接收的资源冲突检测结果。
10.如权利要求9所述的处理器,还包括:刷新器,被配置为响应于存储在队列中的资源冲突检测结果来刷新队列,其中,所述资源冲突检测结果由于包括在所述多个线程中的某些线程中的控制声明的执行而是无效的。
11.一种处理器,包括:
功能单元,包括:
第一运算器,被配置为执行第一运算,并产生和发送第一当前状态信号;
第二运算器,被配置为执行第二运算,并产生和发送第二当前状态信号;
运算器选择器,被配置为基于第一当前状态信号、第二当前状态信号和使用第一线程的第一操作数的第一操作码来选择第一运算器和第二运算器中的一个运算器,并基于第一当前状态信号、第二当前状态信号和使用第二线程的第二操作数的第二操作码来选择第一运算器和第二运算器中的一个运算器;
资源冲突检测器,被配置为响应于同一运算器被选择用于第一线程和第二线程两者,检测资源冲突;
资源调度器,被配置为通过将第一线程和第二线程中被确定为具有较低优先级的线程延迟来确定第一线程和第二线程的处理顺序,其中,资源冲突检测器通过在软件流水线作业的对指令解码的操作中比较每个线程的操作码来检测资源冲突。
12.如权利要求11所述的处理器,其中,资源冲突检测器包括:
资源信息存储器,被配置为存储关于功能单元的运算器信息,其中,运算器信息包括以下信息中的至少一个信息:运算器的类型、运算器的数量和每个运算器的状态信息;
操作码比较器,被配置为对第一操作码与第二操作码进行比较;
资源冲突确定器,被配置为基于操作码比较结果和运算器信息来确定资源冲突。
13.如权利要求11所述的处理器,还包括:
队列,被配置为存储从资源冲突检测器接收的资源冲突检测结果;
刷新器,被配置为响应于存储在队列中的资源冲突检测结果来刷新队列,其中,所述资源冲突检测结果由于包括在第一线程和第二线程中的至少一个线程中的控制声明的执行而是无效的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020130160231A KR102177871B1 (ko) | 2013-12-20 | 2013-12-20 | 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법 |
KR10-2013-0160231 | 2013-12-20 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104731560A CN104731560A (zh) | 2015-06-24 |
CN104731560B true CN104731560B (zh) | 2020-02-07 |
Family
ID=52102544
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410715544.6A Active CN104731560B (zh) | 2013-12-20 | 2014-12-01 | 支持多线程处理的功能单元、处理器及其操作方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9858116B2 (zh) |
EP (1) | EP2887209B1 (zh) |
JP (1) | JP6434791B2 (zh) |
KR (1) | KR102177871B1 (zh) |
CN (1) | CN104731560B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102177871B1 (ko) * | 2013-12-20 | 2020-11-12 | 삼성전자주식회사 | 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법 |
US20170132003A1 (en) * | 2015-11-10 | 2017-05-11 | Futurewei Technologies, Inc. | System and Method for Hardware Multithreading to Improve VLIW DSP Performance and Efficiency |
US10565017B2 (en) | 2016-09-23 | 2020-02-18 | Samsung Electronics Co., Ltd. | Multi-thread processor and controlling method thereof |
KR102593320B1 (ko) * | 2016-09-26 | 2023-10-25 | 삼성전자주식회사 | 전자 장치, 프로세서 및 그 제어 방법 |
CN108255587B (zh) * | 2016-12-29 | 2021-08-24 | 展讯通信(上海)有限公司 | 一种同步多线程处理器 |
US10269088B2 (en) * | 2017-04-21 | 2019-04-23 | Intel Corporation | Dynamic thread execution arbitration |
US10325341B2 (en) | 2017-04-21 | 2019-06-18 | Intel Corporation | Handling pipeline submissions across many compute units |
GB2563588B (en) | 2017-06-16 | 2019-06-26 | Imagination Tech Ltd | Scheduling tasks |
GB2563587B (en) * | 2017-06-16 | 2021-01-06 | Imagination Tech Ltd | Scheduling tasks |
GB2565338B (en) * | 2017-08-10 | 2020-06-03 | Mips Tech Llc | Fault detecting and fault tolerant multi-threaded processors |
CN108874523A (zh) * | 2018-06-21 | 2018-11-23 | 深圳点猫科技有限公司 | 一种基于AI和儿童教育的promise控制异步函数序列的编程方法 |
US11023273B2 (en) | 2019-03-21 | 2021-06-01 | International Business Machines Corporation | Multi-threaded programming |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1148414A2 (en) * | 2000-03-30 | 2001-10-24 | Agere Systems Guardian Corporation | Method and apparatus for allocating functional units in a multithreated VLIW processor |
CN101027635A (zh) * | 2004-09-22 | 2007-08-29 | 皇家飞利浦电子股份有限公司 | 其中功能单元共用读取端口的数据处理电路 |
Family Cites Families (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO1994027216A1 (en) | 1993-05-14 | 1994-11-24 | Massachusetts Institute Of Technology | Multiprocessor coupling system with integrated compile and run time scheduling for parallelism |
JP3547482B2 (ja) * | 1994-04-15 | 2004-07-28 | 株式会社日立製作所 | 情報処理装置 |
JP3760035B2 (ja) * | 1996-08-27 | 2006-03-29 | 松下電器産業株式会社 | 複数の命令流を独立に処理し、命令流単位に処理性能を柔軟に制御するマルチスレッドプロセッサ |
US7207040B2 (en) * | 2002-08-15 | 2007-04-17 | Sun Microsystems, Inc. | Multi-CPUs support with thread priority control |
EP1546868B1 (en) * | 2002-09-17 | 2008-11-19 | Nxp B.V. | Superpipelined vliw processor addressing bypass-loop speed limitation |
US7954102B2 (en) * | 2002-11-13 | 2011-05-31 | Fujitsu Limited | Scheduling method in multithreading processor, and multithreading processor |
US7472258B2 (en) * | 2003-04-21 | 2008-12-30 | International Business Machines Corporation | Dynamically shared group completion table between multiple threads |
US7350060B2 (en) * | 2003-04-24 | 2008-03-25 | International Business Machines Corporation | Method and apparatus for sending thread-execution-state-sensitive supervisory commands to a simultaneous multi-threaded (SMT) processor |
JP2006099336A (ja) * | 2004-09-29 | 2006-04-13 | Seiko Epson Corp | 演算処理装置 |
US8756605B2 (en) * | 2004-12-17 | 2014-06-17 | Oracle America, Inc. | Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline |
US7266674B2 (en) * | 2005-02-24 | 2007-09-04 | Microsoft Corporation | Programmable delayed dispatch in a multi-threaded pipeline |
JP4276201B2 (ja) * | 2005-03-31 | 2009-06-10 | 富士通株式会社 | Smtプロセッサ用課金処理装置,課金処理方法,および課金処理プログラム |
GB2444455A (en) | 2005-08-29 | 2008-06-04 | Searete Llc | Scheduling mechanism of a hierarchical processor including multiple parallel clusters |
US8495649B2 (en) | 2006-07-19 | 2013-07-23 | International Business Machines Corporation | Scheduling threads having complementary functional unit usage on SMT processors |
US7725296B1 (en) * | 2007-09-24 | 2010-05-25 | United Services Automobile Association (Usaa) | Estimating processor usage |
JP2009110209A (ja) * | 2007-10-29 | 2009-05-21 | Panasonic Corp | 演算処理装置、プロセッサ、プログラム変換装置およびプログラム |
US20090138890A1 (en) * | 2007-11-21 | 2009-05-28 | Arm Limited | Contention management for a hardware transactional memory |
US8302098B2 (en) * | 2007-12-06 | 2012-10-30 | Oracle America, Inc. | Hardware utilization-aware thread management in multithreaded computer systems |
US8156495B2 (en) * | 2008-01-17 | 2012-04-10 | Oracle America, Inc. | Scheduling threads on processors |
CN101685408B (zh) * | 2008-09-24 | 2013-10-09 | 国际商业机器公司 | 多个线程并行访问共享数据结构的方法及装置 |
US8332854B2 (en) * | 2009-05-19 | 2012-12-11 | Microsoft Corporation | Virtualized thread scheduling for hardware thread optimization based on hardware resource parameter summaries of instruction blocks in execution groups |
GB2471067B (en) | 2009-06-12 | 2011-11-30 | Graeme Roy Smith | Shared resource multi-thread array processor |
US8539486B2 (en) * | 2009-07-17 | 2013-09-17 | International Business Machines Corporation | Transactional block conflict resolution based on the determination of executing threads in parallel or in serial mode |
US8631415B1 (en) * | 2009-08-25 | 2014-01-14 | Netapp, Inc. | Adjustment of threads for execution based on over-utilization of a domain in a multi-processor system by sub-dividing parallizable group of threads to sub-domains |
US20110055838A1 (en) * | 2009-08-28 | 2011-03-03 | Moyes William A | Optimized thread scheduling via hardware performance monitoring |
JP5321748B2 (ja) * | 2010-07-30 | 2013-10-23 | 富士通株式会社 | マルチコアプロセッサシステム、スレッド制御方法、およびスレッド制御プログラム |
US8719828B2 (en) * | 2011-10-14 | 2014-05-06 | Intel Corporation | Method, apparatus, and system for adaptive thread scheduling in transactional memory systems |
US10289418B2 (en) | 2012-12-27 | 2019-05-14 | Nvidia Corporation | Cooperative thread array granularity context switch during trap handling |
US9582321B2 (en) * | 2013-11-08 | 2017-02-28 | Swarm64 As | System and method of data processing |
US9250953B2 (en) * | 2013-11-12 | 2016-02-02 | Oxide Interactive Llc | Organizing tasks by a hierarchical task scheduler for execution in a multi-threaded processing system |
KR102177871B1 (ko) * | 2013-12-20 | 2020-11-12 | 삼성전자주식회사 | 멀티 쓰레딩을 지원하기 위한 연산 유닛, 이를 포함하는 프로세서 및 프로세서의 동작 방법 |
-
2013
- 2013-12-20 KR KR1020130160231A patent/KR102177871B1/ko active IP Right Grant
-
2014
- 2014-11-17 US US14/542,827 patent/US9858116B2/en active Active
- 2014-12-01 CN CN201410715544.6A patent/CN104731560B/zh active Active
- 2014-12-01 JP JP2014243216A patent/JP6434791B2/ja active Active
- 2014-12-12 EP EP14197626.6A patent/EP2887209B1/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1148414A2 (en) * | 2000-03-30 | 2001-10-24 | Agere Systems Guardian Corporation | Method and apparatus for allocating functional units in a multithreated VLIW processor |
CN101027635A (zh) * | 2004-09-22 | 2007-08-29 | 皇家飞利浦电子股份有限公司 | 其中功能单元共用读取端口的数据处理电路 |
Also Published As
Publication number | Publication date |
---|---|
US9858116B2 (en) | 2018-01-02 |
EP2887209A2 (en) | 2015-06-24 |
JP6434791B2 (ja) | 2018-12-05 |
US20150178132A1 (en) | 2015-06-25 |
JP2015122063A (ja) | 2015-07-02 |
CN104731560A (zh) | 2015-06-24 |
KR20150072734A (ko) | 2015-06-30 |
EP2887209A3 (en) | 2017-02-15 |
EP2887209B1 (en) | 2023-03-22 |
KR102177871B1 (ko) | 2020-11-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104731560B (zh) | 支持多线程处理的功能单元、处理器及其操作方法 | |
KR100880470B1 (ko) | 스레드 라이브록 유닛 | |
US8595744B2 (en) | Anticipatory helper thread based code execution | |
US20130198499A1 (en) | System and Method for Mitigating the Impact of Branch Misprediction When Exiting Spin Loops | |
US9424105B2 (en) | Preempting tasks at a preemption point of a kernel service routine based on current execution mode | |
JP2006040142A (ja) | プロセッサシステムおよびスレッド切り替え制御方法 | |
US10884749B2 (en) | Control of speculative demand loads | |
TW201610854A (zh) | 在電腦中分派多執行緒 | |
US10545763B2 (en) | Detecting data dependencies of instructions associated with threads in a simultaneous multithreading scheme | |
US20190347102A1 (en) | Arithmetic processing apparatus and control method for arithmetic processing apparatus | |
US10102003B2 (en) | Intelligent context management | |
US20190354368A1 (en) | Arithmetic processing apparatus and control method for arithmetic processing apparatus | |
JP4420055B2 (ja) | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 | |
KR100837400B1 (ko) | 멀티스레딩/비순차 병합 기법에 따라 처리하는 방법 및장치 | |
US10740102B2 (en) | Hardware mechanism to mitigate stalling of a processor core | |
CN111936968A (zh) | 一种指令执行方法及装置 | |
US11436013B2 (en) | Method and system for detection of thread stall | |
CN109522048B (zh) | 一种同步多线程中断验证方法及系统 | |
US11068274B2 (en) | Prioritized instructions in an instruction completion table of a simultaneous multithreading processor | |
US20220075624A1 (en) | Alternate path for branch prediction redirect | |
Kaeli et al. | Data Speculation Yiannakis Sazeides, 1 Pedro Marcuello, 2 James E. Smith, 3 and An-tonio Gonza´ lez2, 4 1University of Cyprus; 2Intel-UPC Barcelona Research Center; 3University of Wisconsin-Madison; 4Universitat Politecnica de | |
Sazeides et al. | Data Speculation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |