CN109445851B - 多线程处理器 - Google Patents

多线程处理器 Download PDF

Info

Publication number
CN109445851B
CN109445851B CN201811024294.6A CN201811024294A CN109445851B CN 109445851 B CN109445851 B CN 109445851B CN 201811024294 A CN201811024294 A CN 201811024294A CN 109445851 B CN109445851 B CN 109445851B
Authority
CN
China
Prior art keywords
thread
hardware
hardware thread
scheduler
group
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
Application number
CN201811024294.6A
Other languages
English (en)
Other versions
CN109445851A (zh
Inventor
佐藤纯一
安达浩次
中村阳介
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Renesas Electronics Corp filed Critical Renesas Electronics Corp
Priority to CN201811024294.6A priority Critical patent/CN109445851B/zh
Publication of CN109445851A publication Critical patent/CN109445851A/zh
Application granted granted Critical
Publication of CN109445851B publication Critical patent/CN109445851B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • G06F9/3814Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • G06F9/4887Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues involving deadlines, e.g. rate based, periodic
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

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)
  • Memory System Of A Hierarchy Structure (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明涉及多线程处理器。调度器执行用于重复下述处理的线程调度,所述处理是指:以对包含在多个硬件线程当中的第一组之中的每个硬件线程所预先设置的次数来指定该每个硬件线程,并且以对包括其它硬件线程的第二组所预先设置的次数来指定第二组中的硬件线程中的任何一个。此外,当线程调度所指定的第一组中的硬件线程是不可分派的时,所述调度器执行用于重新指定第二组中的硬件线程以代替第一组中的硬件线程的再调度。

Description

多线程处理器
本申请是申请日为2013年10月17日、申请人为“瑞萨电子株式会社”、申请号为201310487399.6、发明名称为“多线程处理器”的发明专利申请的分案申请。
相关申请的交叉引用
于2012年10月17日提交的包括说明书、附图、以及摘要的日本专利申请No.2012-230234的公开完整地通过引用包含在此。
技术领域
本发明涉及一种例如在具有多个硬件线程的多线程处理器中对多个硬件线程进行调度的技术。
背景技术
已提出了用于提高处理器的吞吐量的硬件多线程技术。支持硬件多线程的处理器(在下文中称作多线程处理器)具有分别生成相互独立的指令流的多个硬件线程,并且在执行指令的算术运算电路与流水线之间切换以对硬件线程所生成的指令流进行处理的同时执行算术处理。
在多线程处理器中,需要调度多个硬件线程。作为调度技术,轮询系统和优先级系统是已知的。在轮询系统中,在每个固定时间依次选择放置在队列中的硬件线程并执行。因此,在轮询系统中,在每个固定时间将队列中的线程公平地分配给CPU并执行。此外,优先级系统按照硬件线程的优先级执行硬件线程。具体地说,在优先级系统中,每个优先级的硬件线程排队到为每个优先级所提供的队列中,并且从高优先级的队列顺序地选择硬件线程并将其分配给CPU以执行。
然而,作为轮询系统和优先级系统共有的问题,存在不可能在确保硬件线程的最小执行时间的同时灵活地设置硬件线程的执行时间这样的问题。例如,在轮询系统中,当存在多个硬件线程时,存在每个线程的执行时间同等地降低并且无法将足够的执行时间分配给高优先级硬件线程这样的问题。此外,在优先级系统中,存在当继续对高优先级硬件线程的处理时无法对低优先级硬件线程进行处理这样的问题。
在日本特许专利公开No.2010-86128中公开了用于解决该问题的技术。该技术将调度的一个循环时段划分成第一执行时段和第二执行时段,指定在第一执行时段中执行从多线程处理器的多个硬件线程当中固定选择的一个或多个硬件线程,并且指定在第二执行时段中执行任意硬件线程。多线程处理器中的调度器通过重复这种循环时段来执行调度。
对于应用该技术的多线程处理器,例如在第一执行时段中,定义想要确保其最小执行时间的硬件线程,并且在第二执行时段中,根据当时的处理状况来定义任意硬件线程。通过这样做,执行将在第一执行时段中执行的硬件线程而不管其它硬件线程的优先级。此外,可在第二执行时段中执行任意硬件线程。
发明内容
在诸如汽车控制这样的领域中,必须执行调度使得多个硬件线程当中的一些硬件线程(在下文中称作“第一组”)的执行时间与其它硬件线程(在下文中称作“第二组”)的执行时间的比率可以是恒定的并且包含在上述第一组之中的硬件线程之间的执行时间的比率可以是恒定的。
例如,假如存在A1、A2、B1、B2、以及B3这五个硬件线程,A1和A2属于组A,并且B1、B2、以及B3属于组B。此外,考虑下述情况,即执行调度使得组A与组B的执行时间的比率可以是“1:1”并且组A中的各自硬件线程(A1,A2)之间的执行时间的比率可以变为“1:1”。也就是说,A1的执行时间、A2的执行时间、以及执行组B中的任何一个(B1,B2,B3)的时间的比率是“1:1:2”。
为了实现这种调度,可以想得到在日本特许专利申请公开No.2010-86128中所公开的技术的申请。例如,将A1和A2定义到第一执行时段,并且将B1、B2、以及B3定义到第二执行时段。其结果是,重复执行“对A1的指定、对A2的指定、以及对组B的硬件线程中的任何一个的指定”这样的调度,使得以设计者所设计的比率来执行对硬件线程的执行。
然而,由于诸如等待其速度低于CPU的I/O读取(在下文中简称为“I/O等待")这样的各种危险,因此硬件线程不必总是处于可分派状态。另一方面,通过上述技术,在第一执行时段中确定地指定在第一执行时段中所定义的硬件线程。因此,存在当在第一执行时间中所定义的硬件是不可分派时将指定它这样的可能性。例如,当A1是不可分派时可能指定A1。
该状况引起了在流水线上出现了没有东西处理的步骤并且CPU的处理效率将降低这样的问题。附带地,还将流水线上的一步称为一个执行时隙,并且在下文中还将流水线上出现没有东西处理的步骤这样的状况称作在执行时隙中出现的空闲。
此外,还存在由于这种事情的累积而使以所设计的比率执行这些硬件线程变得不可能这样的问题。
从对该说明书的描述以及附图可显而易见地得知其它问题和新特征。
根据一个实施例,多线程处理器具有:多个硬件线程,用于分别生成相互独立的指令流;以及调度器,用于指定多个硬件线程当中的接下来将要执行的硬件线程。
所述调度器执行线程调度和再调度。在线程调度中,调度器重复下述处理,所述处理是指:以对包含在多个硬件线程当中的第一组之中的每个硬件线程所预先设置的次数来指定该每个硬件线程,并且以对包括其它硬件线程的第二组所预先设置的次数来指定第二组中的硬件线程中的任何一个。
当线程调度所指定的第一组中的硬件线程是不可分派的时,所述调度器执行再调度。再调度是指定第二组中的硬件线程以代替不可分派执行的上述硬件线程这样的处理。
附带地,通过由方法、系统等等来替代根据上述实施例的装置所表示的也是有效的以作为本发明的模式。
根据一个实施例,可以以所设计的比率来执行多线程处理器中的多个硬件线程并且可防止多线程处理器的性能衰减。
附图说明
图1是示出了根据第一实施例的处理器系统的示意图;
图2是示出了图1所示的处理器系统中的多线程处理器的调度器的电路配置的一个示例的示意图;
图3是示出了图2所示的调度器中的线程控制寄存器的时隙的配置的一个示例的示意图;
图4是示出了图2所示的调度器中的再调度器的电路配置的一个示例的示意图;
图5是示出了当假定不存在再调度器时图2所示的调度器的电路配置的一个示例的示意图;
图6是图5所示的调度器进行的调度的一个示例的示意图;
图7是示出了图2所示的调度器进行的调度的一个示例的示意图;
图8是示出了根据第二实施例的处理器系统中的调度器的示意图;
图9是示出了图8所示的调度器中的第一恢复调度器的电路配置的一个示例的示意图;
图10是示出了图8所示的调度器进行的调度的一个示例的示意图;
图11是示出了根据第三实施例的处理器系统中的调度器的示意图;
图12是示出了图11所示的调度器中的第二恢复调度器的电路配置的一个示例的示意图;
图13是示出了图11所示的调度器进行的调度的一个示例的示意图;
图14是为了对第四实施例进行说明而示出了图8所示的调度器进行的调度的另一个示例的示意图;以及
图15是示出了第四实施例的调度器进行的调度的一个示例的示意图。
具体实施方式
为了使说明易懂,以下描述和附图将受到适当地简缩和简化。此外,在附图中被描述为用于执行各种处理的功能块的每个部件就硬件而言可是由CPU、存储器、以及其它电路配置而成的并且就软件而言是通过加载到存储器之中的程序来实现的。因此,所属技术领域的专业人员明白这些功能块可是由仅硬件、仅软件、或者其组合的各种形式来实现的,并且不局限于它们中的任何一个,除非存在特别说明。附带地,在每个附图中,将相同符号给予相同部件并且根据需要省略重复说明。
此外,可利用各种形式的非暂时性计算机可读介质来存储上述程序,并且可将其提供给计算机。非暂时性计算机可读介质包括各种形式的有形存储介质。非暂时性计算机可读介质的示例包括磁记录介质(例如软磁盘、磁带、硬盘驱动器)、光磁记录介质(例如磁光盘)、CD-ROM(只读存储器)、CD-R、CD-R/W、以及半导体存储器(例如掩模ROM、PROM(可编程ROM)、EPROM(可擦PROM)、闪存ROM、RAM(随机存取存储器))。此外,可以通过各种形式的暂时性计算机可读介质将该程序提供给计算机。暂时性计算机可读介质的示例包括电信号、光信号、以及电磁波。暂时性计算机可读介质可通过电线、光纤等等的有线通信路径或者无线电通信路径将程序提供给计算机。
第一实施例
图1是示出了根据第一实施例的处理器系统100的示意图。处理器系统100具有通过系统总线120耦合的存储器110和多线程处理器130。附带地,虽然未说明,但是诸如输入/输出接口这样的其它电路与系统总线120相耦合。
多线程处理器130具有多个硬件线程。硬件线程是用于根据内置在多线程处理器130中的线程程序计数器所输出的取指地址来生成包括从指令存储器所读取的一系列指令组的指令流的系统,并且包括诸如线程程序计数器、指令存储器、通用寄存器、以及控制寄存器这样的电路组(在该实施例中6应内置在流水线控制电路160中)。在该实施例中,多线程处理器130具有多个线程程序计数器,并且实现了其数目与线程程序计数器的数目相同的硬件线程。
如在附图中所说明的,多线程处理器130具有算术运算电路140、中断控制器150、PC生成电路152、线程程序计数器TPC0至TPC4、选择器154、指令存储器156、指令缓冲器158、流水线控制电路160、取指控制器162、选择器164、以及调度器200。
算术运算电路140根据选择器164所选的硬件线程所生成的指令来执行数据处理。更具体地说,算术运算电路140具有指令解码器142、执行单元144、以及数据寄存器146。
指令解码器142对所接收到的指令进行解码并且将算术运算控制信号SC输出到执行单元144。此外,指令解码器142输出用于根据指令的解码结果来表示数据的存储位置的数据寄存器地址Radd和数据寄存器地址Wadd。
执行单元144响应算术运算控制信号SC而执行各种类型的运算。附带地,执行单元144具有多个执行阶段,并且通过流水线处理来执行算术运算。此外,根据运算结果的类型将在执行单元144中所执行的运算结果传送到PC生成电路152、存储器110、以及数据寄存器146。
数据寄存器146存储将在执行单元144中所使用的数据并且输出数据寄存器地址Radd所指定的地址的数据。在图1所示的示例中,数据寄存器146根据数据寄存器地址Radd而输出数据a和数据b。此外,数据寄存器146将执行单元144输出的运算结果存储到数据寄存器地址Wadd所指定的地址上。
中断控制器150响应中断请求信号将用于指示执行中断处理的中断指示信号输出到多线程处理器130之中。更具体地说,当接收到中断请求信号时,中断控制器150确定中断因素、中断处理的优先级等等,并且指示PC生成电路152和流水线控制电路160执行中断处理使得它们可以执行与该中断因素相关的处理。除了多线程处理器130所输出的之外,还从除多线程处理器130之外的电路输出中断请求。
PC生成电路152生成程序计数器的更新值(在下文中称作“程序计数更新值”)。它接收通过系统总线120所输入的新程序指令信号、中断控制器150所输出的中断指示信号、以及基于执行单元144中的处理所输出的分支指示信号,并且生成程序计数更新值。PC生成电路152将所生成的程序计数更新值给予线程程序计数器TPC0至TPC4中的任何一个。附带地,PC生成电路152还具有判断所生成的程序计数更新值应给予哪个线程程序计数器这样的功能。
线程程序计数器TPC0至TPC4分别生成指令存储器156的地址(每一个被称作“取指地址IMadd”),其中存储要处理的指令。具体地说,当从PC生成电路152给出程序计数更新值时,线程程序计数器TPC0至TPC4根据程序计数更新值来更新取指地址IMadd。另一方面,当没有输入程序计数更新值时,线程程序计数器TPC0至TPC4按照升序来计算地址并且找到连续的下一取指地址IMadd。
附带地,作为示例,在图1中,假定线程程序计数器的数目为五个(TPC0至TPC4),并且还将多线程处理器130中的硬件线程的数目设置为五个。线程程序计数器和硬件线程的数目不局限于五个。
选择器154根据取指控制器162所输出的线程指定信号来选择线程程序计数器TPC0至TPC4中的任何一个并且输出所选程序计数器输出的取指地址IMadd。附带地,在图1中,给予选择器154的输入端的数字0至4分别表示硬件线程编号。
附带地,假定硬件线程A1、A2、以及B1至B3分别给定编号0、1、2、3和4。
指令存储器156是多线程处理器130的全部硬件线程(在该实施例中五个)共享的存储器区域,并且将在多线程处理器130中所执行的算术运算中所使用的各种指令存储在其中。
还将取指控制器162输出的线程指定信号输入到指令存储器156中。指令存储器156根据取指控制器162输出的线程指定信号来分配通过选择器154输入的取指地址IMadd所指定的指令的输出目的地。
在该实施例中,指令缓冲器158具有与线程程序计数器TPC0至TPC4相对应的指令缓冲器区域BUF0至BUF4。指令存储器156将指令输出到指令缓冲器区域BUF0至BUF4当中的与取指控制器162输出的线程指定信号相对应的区域。附带地,指令存储器156可以是包含在存储器110之中的预定存储器区域。
指令缓冲器区域BUF0至BUF4是FIFO(先进先出)形式的缓冲器电路。此外,指令缓冲器区域BUF0至BUF4可以分别是其每一个是单个缓冲器中的区域的划分部分的一个或者可以形成于不同缓冲器中。
流水线控制电路160对存储在指令缓冲器158的头部中的指令以及当前在执行单元144中执行的指令进行监控。此后,当将中断指示信号从中断控制器150输入到流水线控制电路160中时,它向指令缓冲器158和执行单元144发出丢弃属于与中断处理有关的硬件线程的指令这样的指示。
取指控制器162根据存储在指令缓冲器158中的指令编号来判断属于应取出的任何硬件线程的指令,并且根据其判断结果将线程指定信号输出到选择器154。例如,当存储在指令缓冲器区域BUF0中的指令队列的数目小于存储在其它指令缓冲器区域中的指令队列的数目时,取指控制器162判断出应取出属于No.0的硬件线程的指令并且输出表示No.0的硬件线程的线程指定信号。由此,选择器154选择线程程序计数器TPC0。附带地,取指控制器162可以通过利用诸如轮询系统这样的传统已知的任何系统的过程来决定要选择的硬件线程。
选择器164根据调度器200输出的线程选择信号TSEL来选择指令缓冲器区域BUF0至BUF4中的任何一个并且将从所选的指令缓冲器区域所读取的指令输出到算术运算电路140。也就是说,选择器164根据线程选择信号TSEL从多个硬件线程当中选择一个硬件线程并且将所选硬件线程输出的指令输出到算术运算电路140。附带地,给予选择器164的输入端的数字0至4分别表示硬件线程编号。
调度器200基于预先设置的调度来输出用于指定五个硬件线程当中的要在下一执行周期中执行的一个硬件线程的线程选择信号TSEL。在多线程处理器130中,该调度由多线程处理器130的用户,即在多线程处理器130上运算的程序的设计者来设计,并且例如由在多线程处理器130开始之后立即执行的管理程序来建立。
为了便于下面的说明,将多线程处理器130中的五个硬件线程(编号:0至4)分别指定为A1、A2、B1、B2、B3。A1和A2例如是实时线程并且形成了第一组。B1至B3是除了实时线程之外的线程(非实时线程)并且形成了第二组。
附带地,在下面的说明和每个附图中,诸如“A1”和“B2”这样的A或B后面是数字的标号表示相关硬件线程,并且诸如“A”和“B”这样的后面没有数字的标号表示相关组中的任何一个硬件线程。例如,“A1”和“B2”分别表示硬件线程A1和硬件线程B2,并且“A”和“B”分别表示第一组中的任何一个硬件线程(硬件线程A1或硬件线程A2)以及第二组中的任何一个硬件线程(硬件线程B1或硬件线程B2)。
将上述调度设置使得A1的执行时间、A2的执行时间、以及B的执行时间的比率可以变为固定。举例来说,假定将该比率设置为“1:1:2”。
在该实施例中调度器200执行的调度包括线程调度和再调度。在这里,将对线程调度和再调度进行具体说明。
线程调度
线程调度是反复地执行预先设置的调度这样的调度。在线程调度中,调度器200指定硬件线程使得可以进行一次“对A1的指定”,可以进行一次“对A2的指定”,并且可以进行两次“对B的指定(B1、B2、以及B3中的任何一个)”。
再调度
当虽然通过上述线程调度将A(A1或A2)指定为接下来要执行的硬件线程,但是所指定的硬件线程是不可分派时,执行再调度。使硬件线程不可分派的因素包括例如I/O等待等等。
在再调度中,调度器200重新指定第二组中的硬件线程中的任何一个(硬件线程B)以代替线程调度所指定的硬件线程A。
也就是说,调度器200执行原则上重复预先设置的调度这样的调度(线程调度)。此后,当虽然线程调度指定了硬件线程A,但是硬件线程A是不可分派时,调度器200指定硬件线程B以代替硬件线程A。因此,即使当线程调度所指定的硬件线程A是不可分派时,可避免在执行时隙中出现空闲。
也就是说,调度器200实现了根据预先设置的调度通过调度确保了每个线程的执行时间并且避免了多线程处理器130的性能衰减这两个最好效果。
在这里,应该注意到当在再调度中时所指定的代替硬件线程A(例如A1)的硬件线程不是其它硬件线程A(例如A2)而是硬件线程B。
多线程处理器130的设计者期望实现硬件线程A1、A2和B的执行次数的比率是“1:1:2”。也就是说,在四次执行中,一次指定A1,一次指定A2,并且两次指定B。
在当线程调度所指定的硬件线程A1是不可分派时重新指定硬件线程A2以代替硬件线程A1的情况下,在循环时段中将零次指定A1,将两次指定A2,并且将两次指定B。现在,在这种情况下,硬件线程A2的执行比率将变化。
另一方面,根据该实施例中的调度器200,当线程调度所指定的硬件线程A1是不可分派时,因为重新指定硬件线程B以代替硬件线程A1,因此将零次指定A1,将一次指定A2,并且将三次指定B。
包含在第一组之中的硬件线程A1和硬件线程A2是这样的硬件线程,该硬件线程的执行比率被有意地确保为大于第二组的所述每个硬件线程。附带地,“确保执行比率”不但包括“不降低执行时间”而且还包括“不过度地增加执行时间”。因此,用于当线程调度所指定的硬件线程A1是不可分派时重新指定硬件线程B以代替硬件线程A1的调度器200可执行下述硬件线程,所述硬件线程的执行比率被有意地尤其确保为是更接近于设计者首先有意设计的硬件线程的执行比率的比率。
参考图2,将对调度器200的特定电路配置的一个示例进行说明。在图2所示的示例中,调度器200具有第一调度器210、再调度器220、选择器222、线程状态管理单元230、第二调度器240、以及选择器250。第一调度器210、第二调度器240、以及选择器250承担上述线程调度,并且再调度器220和线程状态管理单元230承担上述再调度。
第一调度器210输出用于对第一组和第二组进行切换的选择信号REAL0并且输出硬件线程编号。在下面,将第一调度器210输出的编号称作“第一编号SN1”。
如上所述,作为示例,第一组中的每个硬件线程是实时线程,并且第二组中的每个硬件线程是非实时线程。因此,在下面还将选择信号REAL0称作“实时位信号”。此外,实时位信号REAL0分别通过“1”和“0”来表示第一组和第二组。
如在附图中所说明的,第一调度器210具有线程控制寄存器211、计数器212、计数最大值存储部分213、比较器电路214、以及选择器215。
线程控制寄存器211具有其计数等于或大于在一个循环时段中所指定的硬件线程的总数目(在这里四个)的时隙(在所说明的示例中八个时隙SLT0至SLT7)。如图3所示,每个时隙具有用于存储硬件线程编号的编号存储部分以及用于当选择了该时隙时存储表示实时位信号的逻辑电平的标志(即实时位信号REAL0的值)的实时位存储部分。
在该实施例中,分别在时隙SLT0和时隙SLT2中存储“1”以作为表示实时位信号REAL0的逻辑电平的标志,并且将“0”(A1)和“1”(A2)存储在其中以分别表示硬件线程编号。
此外,分别在时隙SLT1和时隙SLT3中存储“0”以作为表示实时位信号REAL0的逻辑电平的标志。如将通过随后说明所知,当选择了用于存储“0”以作为标志的时隙时,还输出在该时隙中所存储的硬件线程编号以作为第一编号SN1,但是此时不使用第一编号SN1。因此,在时隙SLT1和时隙SLT3中可以存储任意值以作为硬件线程编号。
此外,在该示例的情况下,因为不使用时隙SLT4至时隙LT7,因此将任意值存储在其中。
计数器212以预定间隔更新计数值CNT。具体地说,该实施例中的计数器212与多线程处理器130的运算时钟(未说明)相同步地对计数值CNT计数。
计数最大值存储部分213存储用于定义计数器212的计数值CNT的上限的计数最大值CNTM。该计数最大值CNTM是调度器200在一个循环时段中所指定的硬件线程数目,并且在这里将其设置为“4”。
比较器电路214对计数值CNT与计数最大值CNTM进行比较,并且当计数值CNT和计数最大值CNTM相同时,它输出用于对计数器212的计数值进行重置的重置信号RST。也就是说,计数器212输出通过在以预定周期对计数值CNT进行初始化的同时重复递增计数运算来循环更新其值的计数值CNT。
选择器215根据该计数值CNT来选择线程控制寄存器211中的时隙中的一个并且基于存储在所选时隙中的值来输出实时位信号REAL0和第一编号SN1。具体地说,当计数值CNT是0时,选择器215选择时隙SLT0,指定存储在时隙SLT0的编号存储部分中的硬件线程编号以作为第一编号SN1,并且指定存储在时隙SLT0的实时位存储部分中的标志的值以作为实时位信号REAL0的逻辑电平。
附带地,通过在多线程处理器130开始时所执行的管理程序来设置存储在线程控制寄存器211的时隙中的值、计数器212的计数值CNT的初始值、以及存储在计数最大值存储部分213中的计数最大值CNTM。此外,管理程序将从存储器110读取这些设置值。
将来自第一调度器210的实时位信号REAL0以及来自选择器222的信号(随后所述的状态信号STA)输入到用于输出实时位信号REAL1的再调度器220之中。
线程状态管理单元230监控多线程处理器130的每个硬件线程是处于可分派还是不可分派状态,并且将监控结果输出到选择器222。例如,当硬件线程A1、A2、以及B1至B3分别是“可执行分派”、“不可分派”、“可分派”、“可分派”、以及“可分派”时,线程状态管理单元230将信号“10111”输出到选择器222。
将来自线程状态管理单元230的信号以及来自第一调度器210的第一编号SN1输入到选择器222之中。选择器222从来自线程状态管理单元230的信号的位当中选择用于表示第一编号SN1所表示的硬件线程的状态的位,并且将它输出到再调度器220作为状态信号STA。
当来自第一调度器210的实时位信号REAL0是“0”时,再调度器220输出“0”作为实时位信号REAL1。
另一方面,当实时位信号REAL0是“1”时,再调度器220根据来自选择器222的状态信号STA而输出“0”或“1”中的一个以作为实时位信号REAL1。具体地说,当状态信号STA是“1”时它输出“1”并且当状态信号STA是"0"时它输出"0"以作为实时位信号REAL1。
例如,假定从第一调度器210输出即就是“1”的实时位信号REAL0以及即就是“0”的第一编号SN1。在这种情况下,因为当第一编号SN1所表示的硬件线程A1是可分派时从选择器222输出“1”以作为状态信号STA,因此再调度器220输出“1”以作为实时位信号REAL1。另一方面,因为当硬件线程A1是不可分派时从选择器222输出“0”以作为状态信号STA,因此再调度器220输出"0"以作为实时位信号REAL1。
图4示出了再调度器220的电路配置的一个示例。在该示例中,再调度器220包括AND电路。也就是说,将来自选择器222的状态信号STA以及来自第一调度器210的实时位信号REAL1输入到再调度器220之中,再调度器220输出它们的逻辑积以作为实时位信号REAL1。
返回到图2,给出其说明。再调度器220基于来自第一调度器210的实时位信号REAL0以及来自选择器222的状态信号STA生成实时位信号REAL1并且将它输出到如上所述的选择器250。该实时位信号REAL1用作选择器250的控制信号。
基于来自再调度器220的实时位信号REAL1,选择器250选择第一调度器210输出的第一编号SN1或者第二调度器240输出的第二编号SN2中的一个。
第二调度器240执行对多线程处理器130的五个硬件线程当中的第二组的每个硬件线程(B1至B3)的调度。具体地说,第二调度器240从硬件线程B1至B3当中选择任意一个,并且将所选的硬件线程编号输出到选择器250。从第二调度器240输出到选择器250的编号是第二编号SN2。
附带地,第二调度器240的调度技术可以是诸如传统已知的轮询系统和优先级系统这样的任意技术。
当实时位信号REAL1是“1”时选择器250选择第一编号SN1,并且当实时位信号REAL1是"0"时选择器250选择第二编号SN2。将选择器250所选的编号输出到多线程处理器130的选择器164以作为线程选择信号TSEL。
如上所述,选择器164选择五个硬件线程当中的接下来要执行的硬件线程所生成的指令并且将它输出到算术运算电路140。也就是说,通过线程选择信号TSEL来决定多线程处理器130接下来执行的硬件线程。
对第一调度器210、再调度器220、以及第二调度器240的运算进行概述。
第一调度器210在每个循环时段(每当四次指定硬件线程时)顺序地输出“1”和“0”(硬件线程A1)、“1和1”(硬件线程A2)、“0”、以及任意数以作为表示第一组或第二组以及第一编号SN1的实时位信号REAL0。
当来自第一调度器210的实时位信号REAL0是“0”时,再调度器220将与实时位信号REAL0相同的实时位信号REAL1(即“0”)输出到选择器250。另一方面,在实时位信号REAL0是“1”的情况下,当第一编号SN1所表示的硬件线程是可分派时,再调度器220输出与实时位信号REAL1相同的实时位信号REAL1,即“1”,但是当第一编号SN1所表示的硬件线程是不可分派时,它输出即就是“0”的实时位信号REAL1。
第二调度器240将第二组中的硬件线程(B1至B3)当中的任意硬件线程编号输出到选择器250以作为第二编号SN2。
当来自再调度器220的实时位信号REAL1是“1”时选择器250从第一调度器210选择第一编号SN1或者当来自再调度器220的实时位信号REAL1是"0"时选择器250从第一调度器240选择第二编号SN2以作为线程选择信号TSEL,并且将它输出到选择器164。
在这里,当假定在调度器200中不存在再调度器220时,考虑调度器200进行的调度的一个示例。图5示出了在该假定的情况下调度器200的电路配置示例。
在图5中,用点所描出的表示假定不存在的功能块。如在图中所说明的,在这种情况下,不存在再调度器220、选择器222、以及线程状态管理单元230。因此,将来自第一调度器210的实时位信号REAL0直接输入到选择器250之中。
图6示出了在图5所示的电路配置的情况下调度器200进行的调度的一个示例。在图6的每个图以及随后图中,“可能”和“不可能”分别表示相关硬件线程是“可分派”和“不可分派”,并且“空闲”表示什么也不执行。此外,“B”表示第二组的硬件线程(B1至B3)中的任何一个。
此外,"ID"、"EX"、"WB"、"MEM"、以及"MEM WB"分别表示阶段“指令解码”、“指令执行”、“寄存器写回”、“存储器访问”、以及“存储器写回”。附带地,这些阶段是例示,并且流水线的阶段根据处理器的规范而变。
如图6所示,因为在时钟的第一周期(T1)中选择了时隙SLT0,因此将“1”和“0”(A1)输出到选择器250以作为实时位信号REAL0和第一编号SN1。因此,从选择器250输出A1的编号“0”以作为接下来要执行的硬件线程。其结果是,执行硬件线程A1生成的指令。具体地说,开始对硬件线程A1生成的指令的“ID”阶段的处理。
因为在时钟的第二周期(T2)中选择了时隙SLT1,因此将“0”和“*”(任意数)作为实时位信号REAL0和第一编号SN1输出到选择器250,并且将3至5中(硬件线程B)的任何一个作为第二编号SN2输出到此。因此,从选择器250输出硬件线程B中的编号(3至5中的任何一个)以作为接下来要执行的硬件线程。其结果是,执行硬件线程B生成的指令。
类似地,在时钟的第三周期(T3)中,选择硬件线程A2的编号(1)并且执行硬件线程A2生成的指令。接下来,在第四周期(T4)中,选择硬件线程B的编号并且执行硬件线程B生成的指令。
附带地,在周期T3中,虽然执行硬件线程A1的“MEM”阶段的处理,但是由于I/O等待而使该流无法进到下一阶段,并且指令变得不可分派。在图6的示例中,硬件线程A1的“不可分派”状态持续直至周期T9。
周期T1至T4是调度的一个循环时段。如在图中所说明的,在循环时段中,根据预先设置的调度,分配给A1、A2、以及B的执行时间的比率是“1:1:2”。
随后,执行下一循环时段(周期T5至T8)的调度。与周期T1至T4的循环时段相类似,从选择器250顺序地输出A1、B、A2、以及B的编号。
然而,在周期T5中,虽然将硬件线程A1指定为接下来要执行的硬件线程,但是硬件线程A1是不可分派的。因此,在周期T5中,在“ID”阶段将什么也不执行。其结果是,在周期T6中的“EX”阶段以及周期T7中的“WB”阶段也什么也不执行。
在周期T9至周期T12的循环时段中也出现了相同事情。附带地,在周期T10中,硬件线程A1完成I/O访问并且返回到“可分派”状态。因此,在从周期T12的下一周期开始的循环时段(未说明)中,流水线处理变得与周期T1至周期T4的循环时段相同。
如从图6可清楚地得知,通过使硬件线程A1变为“不可分派”状态,将在执行时隙中出现空闲并且处理器的性能将下降。
在假定不存在再调度器220的情况下,参考图6对调度器200进行的调度的一个示例进行说明。
图7是示出了在没有上述假定的情况下(即在该实施例中)调度器200进行调度的示例的示意图。
如图7所示,在周期T1至T4的循环时段中,与图6所示的示例相似,按照硬件线程A1、硬件线程B、硬件线程A2、以及硬件线程B的顺序指定并执行每个硬件线程。
在周期T5中,选择时隙SLT0并且从第一调度器210输出“1”和“0”(A1)以分别作为实时位信号REAL0和第一编号SN1。然而,因为硬件线程A1是不可分派,因此对于实时位信号REAL1再调度器220输出“0”。其结果是,在该周期中,从选择器250输出用于表示硬件线程B的第二编号SN2以作为线程选择信号TSEL。
也就是说,虽然线程调度指定了硬件线程A1一次,但是再调度指定了硬件线程B而不是硬件线程A1。
在图7和随后附图中,关于线程选择信号TSEL,实线的细线框示出了线程调度的结果,并且实线的粗线框示出了再调度的结果。
如图7所示,还在周期T9中,执行再调度,由此指定硬件线程B以代替线程调度所指定的硬件线程A1。
其结果是,即使当硬件线程A1进入到“不可分派”状态时,在执行时隙中也不会出现空闲。其结果是,避免了处理器的性能衰减。
第二实施例
第二实施例也是处理器系统。附带地,除向第一实施例的处理器系统100提供调度器300以代替调度器200这点之外,根据第二实施例的处理器系统与处理器系统100相同。因此,仅对根据第二实施例的处理器系统说明调度器300。此外,在给出说明的过程中,将使用与处理器系统100中的多个硬件线程相同的示例。
除了上述线程调度和再调度之外,调度器300进一步执行随后所述的对浪费次数的计数以及恢复调度。
每当对第一组的每个硬件线程(A1,A2)进行再调度时,调度器300对每个浪费的次数进行递增计数。
如上所述,再调度是当线程调度指定了第一组的硬件线程但是该硬件线程是不可分派时重新指定第二组的硬件线程(B)以代替该硬件线程的处理。也就是说,对硬件线程A1或硬件线程A2递增计数的浪费次数变为当硬件线程是不可分派时线程调度所指定的并且通过再调度代之以指定第二组的硬件线程(B)的次数。
调度器300基于第一组的每个硬件线程的浪费次数来执行恢复调度。具体地说,当线程调度指定了第二组的硬件线程时,调度器300检查其浪费次数等于或大于“1”的硬件线程是否存在于第一组中。
当在第一组中存在相应硬件线程并且该硬件线程是可分派时,调度器300重新指定第一组中的有关硬件线程(恢复调度)以代替线程调度所指定的硬件线程B。同时,对硬件线程的浪费次数进行递减计数。
另一方面,当第一组中不存在相应硬件线程时或者当虽然存在相应硬件线程但该硬件线程是不可分派时,调度器300不执行恢复调度。也就是说,在这种情况下,调度器300指定线程调度所指定的硬件线程B。
也就是说,调度器300执行原则上重复预先设置的调度这样的线程调度。此后,当虽然线程调度指定了硬件线程A但是硬件线程A是不可分派时,调度器300执行重新指定硬件线程B以代替硬件线程A这样的再调度,并且对硬件线程A的浪费次数进行递增计数。
此外,在线程调度指定了硬件线程B的情况下,当存在其浪费次数是一次或多次的硬件线程A并且硬件线程A是可分派时,调度器300执行重新指定硬件线程A以代替线程调度所指定的硬件线程B这样的恢复调度,并且对硬件线程A的浪费次数进行递减计数。
从而,在根据预先设置的调度来进行调度并且避免多线程处理器130的性能衰减这两者中,与第一实施例的调度器200一样,调度器300实现了最好效果。
此外,通过对第一组的每个硬件线程的浪费次数进行计数并且基于浪费次数来执行恢复调度,调度器300在遍及多个循环时段期间可使第一组的硬件线程的执行比率更接近设计者的设置,即使在各个循环时段中无法以设计者设计的准确比来执行第一组的硬件线程。
图8示出了调度器300的电路配置的一个示例。如图8所示,除了向调度器200提供了第一恢复调度器320这点之外,调度器300与调度器200相同。在这里,重点给出对第一恢复调度器320的说明。附带地,在调度器300中,将第一恢复调度器320输出的第三编号SN3和实时位信号REAL3输入到选择器250中以代替图2所示的调度器200中的第一调度器210输出的第一编号SN1以及其中的再调度器220输出的实时位信号REAL0。
图9示出了第一恢复调度器320的电路配置的一个示例。如图中所说明的,在该示例中,第一恢复调度器320具有反相器321、AND电路322、计数器更新部323、线程浪费计数器WCN1、线程浪费计数器WCN2、恢复调度器核324、以及OR电路325。
还将选择器222输出的状态信号STA输入到第一恢复调度器320的反相器321之中,通过反相器321使其反相,并且将其输出到AND电路322。此外,还将来自第一调度器210的实时位信号REAL0输入到AND电路322之中。
AND电路322将状态信号STA的反相信号与实时位信号REAL0的逻辑积(信号UP)输出到计数器更新部323。
因此,仅当实时位信号REAL0是“1”并且状态信号STA是“不可分派”时信号UP变为“1”。换句话说,仅当调度器300执行再调度时信号UP变为“1”。
计数器更新部323控制线程浪费计数器WCN1和线程浪费计数器WCN2的计数运算。线程浪费计数器WCN1和线程浪费计数器WCN2分别与第一组中的两个硬件线程(A1,A2)相对应,并且每一个根据计数器更新部323的控制来对硬件线程的浪费次数进行计数。
计数器更新部323通过将控制信号分别输出到线程浪费计数器WCN1和线程浪费计数器WCN2来对这两个线程浪费计数器的计数运算进行控制。
就对递增计数的控制而言,仅当信号UP是“1”时,计数器更新部323基于来自AND电路322的信号UP以及来自第一调度器210的第一编号SN1使与第一编号SN1所表示的硬件线程A相对应的线程浪费计数器递增计数。
具体地说,例如,当信号UP是“1”并且第一编号SN1是表示硬件线程A1的“0”时,计数器更新部323将控制信号分别输出到线程浪费计数器WCN1和线程浪费计数器WCN2,使得可以使线程浪费计数器WCN1递增计数并且可以使线程浪费计数器WCN2不递增计数。
类似地,当信号UP是“1”并且第一编号SN1是表示硬件线程A2的“1”时,计数器更新部323将控制信号分别输出到线程浪费计数器WCN1和线程浪费计数器WCN2,使得可以使线程浪费计数器WCN1不递增计数并且可以使线程浪费计数器WCN2递增计数。
附带地,当信号UP是“0”时,计数器更新部323将不使线程浪费计数器WCN1和线程浪费计数器WCN2递增计数的控制信号输出到这两者。随后将对递减计数的控制进行描述。
恢复调度器核324将线程浪费计数器WCN1的计数值、线程浪费计数器WCN2的计数值、来自第一调度器210的实时位信号REAL0和第一编号SN1、以及来自线程状态管理单元230的表示各自线程的状态的信号输入到其中,并且输出实时位信号REAL2和第三编号SN3。
具体地说,仅当实时位信号REAL0是“0”时,线程浪费计数器WCN1和线程浪费计数器WCN2中的至少一个的计数值(浪费次数)是一或更大,并且与一个浪费计数器相对应的硬件线程A是可分派的,恢复调度器核324使第一编号SN1变为用于表示与上述一个浪费计数器相对应的硬件线程A的编号并且输出它以作为第三编号SN3,并且同时对于实时位信号REAL2输出“1”。在除了上述之外的情况下,恢复调度器核324按照原状输出来自第一调度器210的第一编号SN1,并且对于实时位信号REAL2输出“0”。
附带地,当线程浪费计数器WCN1和线程浪费计数器WCN2两者的计数值的每一个是一或更大并且这两者是可分派时,对于恢复调度器核324而言例如必需输出用于表示与具有较大计数值的线程浪费计数器相对应的硬件线程A的编号或者输出用于表示与为该情况所预先设置的线程浪费计数器中的一个相对应的硬件线程A的编号等等。
将从恢复调度器核324输出的实时位信号REAL2输入到计数器更新部323和OR电路325中。此外,将第三编号SN3输入到选择器250和计数器更新部323中。
计数器更新部323使用实时位信号REAL2以用于对递减计数进行控制。因此,还将实时位信号REAL2称为信号DOWN。
就对递减计数的控制而言,具体地说,仅当实时位信号REAL2(即信号DOWN)是“1”时,计数器更新部323使与第三编号SN3所表示的硬件线程A相对应的线程浪费计数器递减计数。
具体地说,例如,当信号DOWN是“1”并且第三编号SN3是用于表示硬件线程A1的“0”时,计数器更新部323分别将控制信号输出到线程浪费计数器WCN1和线程浪费计数器WCN2,使得可以使线程浪费计数器WCN1递减计数并且可以使线程浪费计数器WCN2不递减计数。
类似地,当信号DOWN是“1”并且第三编号SN3是用于表示硬件线程A2的“1”时,计数器更新部323分别将控制信号输出到线程浪费计数器WCN1和线程浪费计数器WCN2,使得可以使线程浪费计数器WCN1不递减计数并且可以使线程浪费计数器WCN2递减计数。
附带地,当信号DOWN是“0”时,计数器更新部323输出用于使线程浪费计数器WCN1和线程浪费计数器WCN2这两者不递减计数的控制信号。
OR电路325将来自再调度器220的实时位信号REAL1与来自恢复调度器核324的实时位信号REAL2的逻辑加法(实时位信号REAL3)输出到选择器250。
作为线程选择信号TSEL,当实时位信号REAL3是“1”时选择器250选择第三编号SN3并且当实时位信号REAL3是“0”时选择来自第二调度器240的第二编号SN2。
参考图10,对根据该实施例的调度器300进行的调度的示例进行说明。附带地,在图10中,像图7一样,就线程选择信号TSEL而言,实线的细线框表示调度的结果,并且实线的粗线框表示再调度的结果。此外,虚线的粗线框表示恢复调度的结果。
如图10所示,在第一循环时段(周期T1至T4)中,线程调度按照硬件线程A1、硬件线程B、硬件线程A2、以及硬件线程B的顺序来指定并执行硬件线程。
在周期T5中,选择时隙SLT0,并且从第一调度器210输出“1”和“0”(A1)以作为实时位信号REAL0和第一编号SN1。然而,因为硬件线程A1是不可分派,因此执行再调度并且从选择器250输出用于表示硬件线程B的第二编号SN2以作为线程选择信号TSEL。
此外,在该周期中,因为对硬件线程A1执行再调度,因此信号UP变为“1”并且与硬件线程A1相对应的线程浪费计数器WCN1的计数值通过递增计数而从零变为一。
在第二循环时段的周期T6至T8中,线程调度顺序地指定硬件线程B、硬件线程A2、以及硬件线程B。
附带地,在周期T6和T8中,线程调度指定了硬件线程B并且线程浪费计数器WCN1的计数值是一。然而,因为如前所述硬件线程A1仍是不可分派,因此不执行恢复调度。
在进入第三循环时段之后,在周期T9中线程调度指定硬件线程A1。然而,因为如前所述硬件线程A1仍是不可分派,因此执行再调度,执行从硬件线程A1指定为硬件线程B的改变,信号UP再次变为“1”,并且线程浪费计数器WCN1的计数值通过递增计数而从一变为二。
在周期T10中线程调度指定硬件线程B。然而,因为线程浪费计数器WCN1的计数值是“2”并且硬件线程A1变为可分派,因此执行恢复调度并且执行从硬件线程B指定为硬件线程A1的改变。同时,实时位信号REAL2(DOWN)变为“1”,并且线程浪费计数器WCN1的计数值通过递减计数从二变为一。
类似地,还在周期T12中,执行恢复调度并且执行从硬件线程B指定为硬件线程A1的改变。同时,实时位信号REAL2(DOWN)再次变为“1”,并且线程浪费计数器WCN1的计数值通过递减计数从一变为零。
如图10所示,在出现再调度或恢复调度的循环时段中硬件线程A1、A2、以及B的执行次数的比率不是“1:1:2”。然而,明白在具有周期T1至T12的三个循环时段期间,硬件线程A1、A2、以及B的执行次数的比率下降到所设计的“1:1:2”。
第三实施例
第三实施例也是处理器系统。附带地,除了向处理器系统100提供调度器400以代替调度器200这点之外,根据第三实施例的处理器系统与根据第一实施例的处理器系统100相同。因此,对第三实施例中的处理器系统而言仅说明调度器400。此外,在给出说明的过程中,将使用与处理器系统100中的多个硬件线程相同的示例。
像第二实施例的调度器300一样,除了线程调度和再调度之外,调度器400进一步执行对浪费次数的计数以及恢复调度。然而,调度器300对每个硬件线程A的浪费次数进行计数,而调度器400对整个第一组的浪费次数进行计数。因此,调度器400执行的恢复调度也与调度器300执行的恢复调度不同。在下面,将调度器400计数的浪费次数称作“组浪费的次数”。
当已对第一组中的硬件线程的任何一个进行了再调度时,调度器400对组浪费的次数进行递增计数。
如上所述,再调度是当虽然通过线程调度指定了第一组的硬件线程但是该硬件线程是不可分派时重新指定第二组的硬件线程(B)以代替该硬件线程的处理。也就是说,当第一组的硬件线程的任何一个是不可分派时组浪费的次数变为其中线程调度指定硬件线程的次数。
调度器400基于组浪费的次数来执行恢复调度。具体地说,当线程调度指定了第二组的硬件线程时,调度器400检查组浪费的次数是否是“0”。
当组浪费的次数是一或更大并且在第一组中存在可分派的硬件线程时,调度器400重新指定第一组中的可分派硬件线程以代替线程调度所指定的硬件线程B。同时,对组浪费的次数进行递减计数。
另一方面,当组浪费的次数是零时或者当虽然组浪费的次数是一或更大但是不存在可分派的硬件线程A时,调度器400不执行恢复调度。也就是说,在这种情况下,调度器400指定由线程调度所指定的硬件线程B。
也就是说,调度器400执行原则上重复预先设置的调度这样的线程调度。此后,当虽然线程调度指定了硬件线程A但是硬件线程A是不可分派时,调度器400执行重新指定硬件线程B以代替硬件线程A的再调度,并且对组浪费的次数进行递增计数。
此外,在线程调度指定了硬件线程B的情况下,当组浪费的次数是一或更大并且存在可分派的硬件线程A时,调度器400执行重新指定可分派的硬件线程A以代替线程调度所指定的硬件线程B这样的恢复调度,并且对组浪费的次数进行递减计数。
从而,与第一实施例的调度器200相似,在根据预先设置的调度来进行调度以及避免多线程处理器130的性能衰减这两者中,调度器400实现了最好效果。
此外,通过对第一组计数组浪费的次数并且基于组浪费的次数来执行恢复调度,当看到在遍及多个循环时段期间时,对于调度器400来说可使第一组与第二组之间的硬件线程的执行比率更接近设计者的设置。
图11示出了调度器400的电路配置的一个示例。除了向调度器200进一步提供了第二恢复调度器420这点之外,调度器400与图2所示的调度器200相同。在这里,重点给出对第二恢复调度器420的说明。附带地,在调度器400中,将第二恢复调度器420输出的第四编号SN4和实时位信号REAL4输入到选择器250中以代替图2所示的调度器200中的第一调度器210输出的第一编号SN1以及其中的再调度器220输出的实时位信号REAL0。
图12示出了第二恢复调度器420的电路配置的一个示例。如图中所说明的,在该示例中,第二恢复调度器420具有反相器321、AND电路322、OR电路325、计数器更新部421、组浪费计数器422、以及恢复调度器核424。
反相器321、AND电路322、以及OR电路325分别与包含在第一恢复调度器320之中的那些相同并且具有相同符号。
计数器更新部421控制组浪费计数器422的计数运算。组浪费计数器422根据计数器更新部421的控制对第一组计数组浪费的次数。
就对递增计数的控制而言,当来自AND电路322信号UP是“1”时,计数器更新部421输出使组浪费计数器422递增计数的控制信号。另一方面,当信号UP是“0”时,组浪费计数器422使计数器更新部421不递增计数。随后对递减计数的控制进行描述。
恢复调度器核424将组浪费计数器422的计数值、来自第一调度器210的实时位信号REAL0和第一编号SN1、来自线程状态管理单元230的表示各自线程的状态的信号输入到其中,并且输出实时位信号REAL2以及第四编号SN4。
具体地说,仅当实时位信号REAL0是“0”,组浪费计数器422的计数值(组浪费次数)是一或更大,并且在第一组中存在可分派的硬件线程时,恢复调度器核424输出第一组中的可分派硬件线程的编号以作为第四编号SN4,并且对于实时位信号REAL2输出“1”。在除了上述之外的情况下,恢复调度器核424按照原状输出第一编号SN1以作为第四编号SN4,并且对于实时位信号REAL2输出“0”。
附带地,当第一组中存在多个可分派的硬件线程时,对于恢复调度器核424而言例如必需按照为第一组中的硬件线程所预先设置的优先级来选择与第四编号SN4相对应的硬件线程。当然,这种情况下的硬件线程的选择技术并不局限于该示例。
将从恢复调度器核424输出的实时位信号REAL2输入到计数器更新部421和OR电路325之中。此外,将第四编号SN4输入到选择器250和计数器更新部421之中。
计数器更新部421使用实时位信号REAL2以用于对递减计数进行控制。就对递减计数的控制而言,仅当实时位信号REAL2(即信号DOWN)是“1”时,计数器更新部421使组浪费计数器422递减计数。
OR电路325将来自再调度器220的实时位信号REAL1与来自恢复调度器核424的实时位信号REAL2的逻辑加法(实时位信号REAL4)输出到选择器250。
作为线程选择信号TSEL,当实时位信号REAL4是“1”时选择器250选择实时位信号REAL4并且当实时位信号REAL4是“0”时选择来自第二调度器240的第二编号SN2。
参考图13,对在该实施例中的调度器400进行的调度的示例进行说明。附带地,在图13中,像图7一样,就线程选择信号TSEL而言,实线的细线框示出了线程调度的结果,并且实线的粗线框示出了再调度的结果。此外,虚线的粗线框示出了恢复调度的结果。附带地,在调度器400中,虽然对每个硬件线程A的浪费次数不计数,但是为了与调度器400所计数的组浪费的次数进行比较,图13用虚线的细线框示出了每个硬件线程A的浪费次数。
如图13所示,在第一循环时段(周期T1至T4)中,线程调度按照硬件线程A1、硬件线程B、硬件线程A2、以及硬件线程B的顺序来指定并执行硬件线程。
在周期T5中,选择时隙SLT0,并且从第一调度器210输出“1”和“0”(A1)以作为实时位信号REAL0和第一编号SN1。然而,因为硬件线程A1是不可分派,因此执行再调度并且从选择器250输出用于表示硬件线程B的第二编号SN2以作为线程选择信号TSEL。
此外,在该周期中,因为执行再调度,因此信号UP变为“1”并且组浪费计数器422的计数值(组浪费的次数)通过递增计数而从零变为一。
在第二循环时段的周期T6至T8中,线程调度顺序地指定硬件线程B、硬件线程A2、以及硬件线程B。
在周期T6中,线程调度指定硬件线程B并且组浪费的次数是一。然而,因为硬件线程A1和硬件线程A2两者是不可分派,因此不执行恢复调度。
在周期T7中,虽然选择了时隙SLT2并且第一编号SN1表示硬件线程A2,但是因为硬件线程A2是不可分派,因此执行再调度。其结果是,从选择器250输出用于表示硬件线程B的第二编号SN2以作为线程选择信号TSEL,信号UP再次变为“1”,并且组浪费的次数从一变为二。
附带地,在周期T8中,线程调度指定了硬件线程B并且组浪费的次数为二。然而,因为如硬件线程A1和硬件线程A2这两者是不可分派,因此不执行恢复调度。
在进入第三循环时段之后,在周期T9中,线程调度指定硬件线程A1。然而,因为如前所述硬件线程A1仍是不可分派,因此执行再调度,执行从硬件线程A1指定为硬件线程B的改变,信号UP再次变为“1”,并且组浪费的次数从二变为三。
在周期T10中线程调度指定硬件线程B。然而,因为组浪费的次数是“3”并且硬件线程A1已变为可分派,因此执行恢复调度并且执行从硬件线程B指定为硬件线程A1的改变。同时,实时位信号REAL2(DOWN)变为“1”并且组浪费的次数从三变为二。
在周期T11中线程调度指定硬件线程A2。然而,因为如前所述硬件线程A2仍是不可分派,因此执行再调度,执行从硬件线程A2指定为硬件线程B的改变,信号UP再次变为“1”,并且组浪费的次数从二变为三。
在周期T12中线程调度指定硬件线程B。然而,因为组浪费的次数是“3”并且硬件线程A1已变为可分派,因此执行恢复调度并且执行从硬件线程B指定为硬件线程A1的改变。同时,实时位信号REAL2(DOWN)再次变为“1”并且组浪费的次数从三变为二。
从而,根据调度器400,在其中出现再调度或恢复调度的循环时段中执行硬件线程A、B的次数的比率不是所设计的“2:2”。然而,当看到在遍及多个循环时段时,执行硬件线程A、B的次数的比率变为所设计的“2:2”。
第四实施例
在对第四实施例进行描述之前,首先参考图14示出了图8所示的调度器300进行的调度的另一个示例。
图14所示的示例与图10所示的示例不同点在于在周期T9至T12中硬件线程A2的执行变为不可分派,并且在周期T11至T12中不存在可分派的硬件线程B。
从周期T1至周期T9,由图8所示的调度器300来执行与图10所示的示例相同的调度。
在周期T10中,线程调度指定了硬件线程B。然而,因为硬件线程A1的浪费次数是二并且硬件线程A1是可分派,因此通过恢复调度指定硬件线程A1以代替硬件线程B。同时,硬件线程A1的浪费次数从二变为一。
在周期T11中,虽然线程调度指定了硬件线程A2,但是因为硬件线程A2是不可分派的,因此再调度指定硬件线程B。同时,硬件线程A2的浪费次数从零变为一。
然而,在该周期中不存在可分派的硬件线程B。因此,“ID”阶段的执行时隙将变为空闲。
在周期T12中,虽然线程调度指定了硬件线程B,但是因为可分派的硬件线程A1的浪费次数是一,因此恢复调度指定硬件线程A1。同时,硬件线程A1的浪费次数从一变为零。
如图14所示,当不存在可分派的硬件线程B时,由于执行再调度而在执行时隙中出现了空闲。
第四实施例的调度器是修改的图8所示的调度器300使得当恢复调度和执行时间可以在第一组中的硬件线程之间互换时,可以向第一组中的硬件线程给出第二组中的硬件线程的执行时间。
也就是说,第四实施例的调度器执行原则上重复预先设置的调度这样的线程调度。此后,虽然它通过线程调度指定了硬件线程A,但是当硬件线程A是不可分派时,它根据浪费的次数以及其它硬件线程A的状态来执行再调度或者恢复调度。
例如,假定通过线程调度指定了不可分派的硬件线程A1。在这种情况下,当硬件线程A2的浪费次数是零时,第四实施例的调度器执行再调度并且指定硬件线程B。另一方面,当硬件线程A2的浪费次数是一或更大并且硬件线程A2是可分派时,第四实施例的调度器对硬件线程A2执行恢复调度,并且指定硬件线程A2。
附带地,在线程调度指定了硬件线程B的情况下,与调度器300相类似。当存在其浪费的次数是一或更大的硬件线程A并且硬件线程A是可分派时,执行恢复调度并且指定硬件线程A以代替线程调度所指定的硬件线程B。
附带地,因为通过修改调度器300的电路配置可很容易实现第四实施例的调度器,因此在这里省略对第四实施例的调度器的具体电路配置示例的说明。
图15示出了第四实施例的调度器进行的调度的示例,用于对此与调度器300进行的调度的示例进行比较。
如图15所示,直到周期T10,第四实施例的调度器进行的调度的结果与调度器300进行的调度的结果相同。
在周期T11中,调度器300执行再调度并且指定硬件线程B以代替硬件线程A2。与此相反,在第四实施例的调度器中,因为硬件线程A1的浪费次数是一并且硬件线程A1是可分派,因此第四实施例的调度器执行恢复调度以代替再调度并且指定硬件线程A1以代替硬件线程A2。
其结果是,第四实施例的调度器可比调度器300更早地对其浪费次数是一或更大的硬件线程A执行恢复调度。
如上所述,虽然基于实施例对本发明人所做出的发明进行了具体说明,但是本发明并不局限于已描述的实施例并且很显然在不脱离其精神的范围之内各种增加/减少以及变化是可能的。
线程调度是设计者所设计的调度。因此,其中再调度的次数很大的状况是指调度频繁地脱离设计。因此,例如期望的是将下述功能添加到图8所示的调度器300,所述功能即就是当硬件线程的任何一个的浪费次数(线程浪费计数器WCN1的计数值或线程浪费计数器WCN2的计数值)或者全部硬件线程的浪费次数的总和达到阀值时向外部发出警告。通过发出这种警告,对于设计者来说可通知异常并且执行重新检查设计等。附带地,就警告而言,例如可以想得到向CPU生成中断的技术。
自然地,类似地可以向图11所示的调度器400添加下述功能,即当组浪费的次数(组浪费计数器422的计数值)到达阀值时向外部发出警告。
此外,在由于I/O等待等等而使硬件线程在期望时间之内未完成阶段的处理的情况下出现了需要再调度的状况,即线程调度所指定的第一组的硬件线程是不可分派这样的状况。在多线程处理器中的硬件线程数目很少或者类似情况时,在某种程度上可料到这种状况。因此,当设计用作线程调度基础的调度时,还可料到生成这种状况并且设计考虑到I/O等待的时间等等的调度。为了能够支持这种情况,期望的是例如配置调度器300的线程浪费计数器WCN1和线程浪费计数器WCN2以及调度器400的组浪费计数器422,以便在目标程序运算之前关于计数运算的允许和禁止是动态可变的。
通过执行此,可降低运算电路,并且因此使处理速度加速并且降低功耗。
附带地,为了使能用于上述告警功能的阀值的设置以及与是否禁止浪费计数器或组浪费计数器的运算有关的设置,所必需的是只是例如根据那些使用提供寄存器。
此外,在上述每个实施例中,作为示例,虽然根据它是否是实时线程来执行对线程的分组,但是很自然的是对线程分组的技术并不局限于该示例。

Claims (7)

1. 一种多线程处理器,所述多线程处理器包括:
多个硬件线程,所述多个硬件线程用于分别生成多个相互独立的指令流;以及
调度器,所述调度器用于调度所述多个硬件线程,
其中,所述调度器执行线程调度以使得:
所述多个硬件线程被划分为第一组和第二组,所述第一组具有第一硬件线程和第二硬件线程,所述第二组具有第三硬件线程和第四硬件线程,
所述第一硬件线程和所述第二硬件线程中的每个硬件线程被选择预定次数,以及
所述第三硬件线程和所述第四硬件线程中的一个硬件线程被选择预定次数,
其中,当所述第一硬件线程被所述调度器所选择并且所述第一硬件线程是不可分派的时,所述调度器执行再调度以使得所述第三硬件线程和所述第四硬件线程中的一个硬件线程被选择以代替所述第一硬件线程,即便所述第二硬件线程是可分派的,并且
其中,所述第一硬件线程和所述第二硬件线程中的每个硬件线程是实时线程,并且所述第三硬件线程和所述第四硬件线程中的每个硬件线程是非实时线程。
2.根据权利要求1所述的多线程处理器,其中:
所述第一硬件线程和所述第二硬件线程中的每个硬件线程是实时线程,并且
所述第三硬件线程和所述第四硬件线程中的每个硬件线程是非实时线程。
3.根据权利要求1所述的多线程处理器,其中,
当所述第一组和所述第二组的选择比率是N:M时,所述第一硬件线程、所述第二硬件线程、以及在所述第三硬件线程和所述第四硬件线程之中的一个硬件线程这三者的被选择比率为N:N:M,其中,N和M是整数。
4.根据权利要求1所述的多线程处理器,所述调度器还包括:
第一调度器,被配置为在所述第一组与所述第二组之间切换调度;
第二调度器,被配置为调度所述第二组;以及
线程状态管理单元,被配置为监控每个硬件线程是可分派的还是不可分派的,
其中,当所述第一调度器选择所述第一硬件线程并且所述线程状态管理单元指示所述第一硬件线程是不可分派的时,所述第一调度器将调度所述第一组切换到调度所述第二组,并且所述第二调度器调度所述第二组以代替所述第一硬件线程。
5.一种多线程处理器的调度方法,所述多线程处理器具有多个硬件线程,所述方法包括:
通过以下操作来执行线程调度:
将所述多个硬件线程划分为第一组和第二组,所述第一组具有第一硬件线程和第二硬件线程,所述第二组具有第三硬件线程和第四硬件线程;
将所述第一硬件线程和所述第二硬件线程中的每个硬件线程选择预定次数;以及
将所述第三硬件线程和所述第四硬件线程中的一个硬件线程选择预定次数,
其中,当所述第一硬件线程被选择并且所述第一硬件线程是不可分派的时,执行再调度以使得所述第三硬件线程和所述第四硬件线程中的一个硬件线程被选择以代替所述第一硬件线程,即便所述第二硬件线程是可分派的,并且
其中,所述第一硬件线程和所述第二硬件线程中的每个硬件线程是实时线程,并且所述第三硬件线程和所述第四硬件线程中的每个硬件线程是非实时线程。
6.根据权利要求5所述的调度方法,其中,
当所述第一组和所述第二组的选择比率是N:M时,所述第一硬件线程、所述第二硬件线程、以及在所述第三硬件线程和所述第四硬件线程之中的一个硬件线程这三者的被选择比率为N:N:M,其中,N和M是整数。
7.根据权利要求5所述的调度方法,其中,当所述第一硬件线程被选择并且所述第一硬件线程是不可分派的时,执行再调度以将调度所述第一组切换到调度所述第二组,使得所述实时线程被选择以代替所述第一硬件线程。
CN201811024294.6A 2012-10-17 2013-10-17 多线程处理器 Active CN109445851B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811024294.6A CN109445851B (zh) 2012-10-17 2013-10-17 多线程处理器

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2012230234A JP6017260B2 (ja) 2012-10-17 2012-10-17 マルチスレッドプロセッサ
JP2012-230234 2012-10-17
CN201811024294.6A CN109445851B (zh) 2012-10-17 2013-10-17 多线程处理器
CN201310487399.6A CN103778016B (zh) 2012-10-17 2013-10-17 多线程处理器

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201310487399.6A Division CN103778016B (zh) 2012-10-17 2013-10-17 多线程处理器

Publications (2)

Publication Number Publication Date
CN109445851A CN109445851A (zh) 2019-03-08
CN109445851B true CN109445851B (zh) 2023-08-15

Family

ID=49447948

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201811024294.6A Active CN109445851B (zh) 2012-10-17 2013-10-17 多线程处理器
CN201310487399.6A Active CN103778016B (zh) 2012-10-17 2013-10-17 多线程处理器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201310487399.6A Active CN103778016B (zh) 2012-10-17 2013-10-17 多线程处理器

Country Status (4)

Country Link
US (3) US9569261B2 (zh)
EP (1) EP2722757A3 (zh)
JP (1) JP6017260B2 (zh)
CN (2) CN109445851B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5894496B2 (ja) * 2012-05-01 2016-03-30 ルネサスエレクトロニクス株式会社 半導体装置
GB2521155B (en) 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configuring thread scheduling on a multi-threaded data processing apparatus
GB2521151B (en) * 2013-12-10 2021-06-02 Advanced Risc Mach Ltd Configurable thread ordering for a data processing apparatus
US11200058B2 (en) * 2014-05-07 2021-12-14 Qualcomm Incorporated Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media
CN105007213B (zh) * 2015-06-02 2019-04-16 贵阳语玩科技有限公司 一种实现网络聊天室的方法及服务器
US10430342B2 (en) * 2015-11-18 2019-10-01 Oracle International Corporation Optimizing thread selection at fetch, select, and commit stages of processor core pipeline
US10089114B2 (en) * 2016-03-30 2018-10-02 Qualcomm Incorporated Multiple instruction issuance with parallel inter-group and intra-group picking
US10628320B2 (en) 2016-06-03 2020-04-21 Synopsys, Inc. Modulization of cache structure utilizing independent tag array and data array in microprocessor
US10558463B2 (en) * 2016-06-03 2020-02-11 Synopsys, Inc. Communication between threads of multi-thread processor
US10318302B2 (en) 2016-06-03 2019-06-11 Synopsys, Inc. Thread switching in microprocessor without full save and restore of register file
US10613859B2 (en) 2016-08-18 2020-04-07 Synopsys, Inc. Triple-pass execution using a retire queue having a functional unit to independently execute long latency instructions and dependent instructions
US10552158B2 (en) 2016-08-18 2020-02-04 Synopsys, Inc. Reorder buffer scoreboard having multiple valid bits to indicate a location of data
US10489206B2 (en) * 2016-12-30 2019-11-26 Texas Instruments Incorporated Scheduling of concurrent block based data processing tasks on a hardware thread scheduler
US10719350B2 (en) * 2017-10-10 2020-07-21 Sap Se Worker thread manager
CN110647357B (zh) * 2018-06-27 2021-12-03 展讯通信(上海)有限公司 同步多线程处理器
US10754689B1 (en) * 2019-02-13 2020-08-25 GM Global Technology Operations LLC Architecture and device for multi-stream vision processing on shared devices
TWI748513B (zh) * 2020-06-12 2021-12-01 鴻海精密工業股份有限公司 資料處理方法、系統、電子裝置及存儲介質
WO2023281766A1 (ja) * 2021-07-09 2023-01-12 株式会社デンソー 自動車用コンピュータの制御方法、及び車両用電子制御装置
US11966726B2 (en) * 2022-02-25 2024-04-23 International Business Machines Corporation Operating system (OS) scheduler and compiler for code generation optimization in a (simultaneous multi-threading) SMT enabled CPU
US11983537B1 (en) * 2022-12-21 2024-05-14 Ceremorphic, Inc. Multi-threaded processor with power granularity and thread granularity

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101957744A (zh) * 2010-10-13 2011-01-26 北京科技大学 一种用于微处理器的硬件多线程控制方法及其装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5745778A (en) * 1994-01-26 1998-04-28 Data General Corporation Apparatus and method for improved CPU affinity in a multiprocessor system
US20050198475A1 (en) * 2004-02-06 2005-09-08 Infineon Technologies, Inc. Thread selection unit and method to fairly allocate processor cycles in a block multithreaded processor
US8136111B2 (en) * 2006-06-27 2012-03-13 International Business Machines Corporation Managing execution of mixed workloads in a simultaneous multi-threaded (SMT) enabled system
US8621459B2 (en) * 2006-12-22 2013-12-31 Intel Corporation Method and apparatus for multithreaded guest operating system execution through a multithreaded host virtual machine monitor
US8650570B2 (en) * 2008-06-02 2014-02-11 Microsoft Corporation Method of assigning instructions in a process to a plurality of scheduler instances based on the instruction, in which each scheduler instance is allocated a set of negoitaited processor resources
JP5173713B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
JP5173711B2 (ja) * 2008-09-30 2013-04-03 ルネサスエレクトロニクス株式会社 マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
US8126642B2 (en) * 2008-10-24 2012-02-28 Gray & Company, Inc. Control and systems for autonomously driven vehicles
US8402466B2 (en) * 2009-02-17 2013-03-19 International Business Machines Corporation Practical contention-free distributed weighted fair-share scheduler
US9207943B2 (en) * 2009-03-17 2015-12-08 Qualcomm Incorporated Real time multithreaded scheduler and scheduling method
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

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101957744A (zh) * 2010-10-13 2011-01-26 北京科技大学 一种用于微处理器的硬件多线程控制方法及其装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
《IPC Control for Multiple Real-Time Treads on a In-Order SMT Processor》;Jorg Mische;《FOURTH INTERNATIONAL CONFERENCE ON HIGH-PERFORMANCE EMBEDDED ARCHITECTURES AND COMPILERS》;20090125;摘要,第3.3、4、4.1、4.2节 *

Also Published As

Publication number Publication date
JP6017260B2 (ja) 2016-10-26
US9569261B2 (en) 2017-02-14
JP2014081847A (ja) 2014-05-08
US9841996B2 (en) 2017-12-12
EP2722757A3 (en) 2016-03-30
CN109445851A (zh) 2019-03-08
US10467053B2 (en) 2019-11-05
CN103778016B (zh) 2018-10-02
US20180067766A1 (en) 2018-03-08
US20140109098A1 (en) 2014-04-17
EP2722757A2 (en) 2014-04-23
US20170109202A1 (en) 2017-04-20
CN103778016A (zh) 2014-05-07

Similar Documents

Publication Publication Date Title
CN109445851B (zh) 多线程处理器
JP5173711B2 (ja) マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
JP5173713B2 (ja) マルチスレッドプロセッサ及びそのハードウェアスレッドのスケジュール方法
JP5173712B2 (ja) マルチスレッドプロセッサ
JP5173714B2 (ja) マルチスレッドプロセッサ及びその割り込み処理方法
JP5536862B2 (ja) マルチスレッドプロセッサ
JP5770334B2 (ja) マルチスレッドプロセッサ
JP5838237B2 (ja) マルチスレッドプロセッサ
JP5946566B2 (ja) マルチスレッドプロセッサにおけるハードウェアスレッドのスケジュール方法
JP5536863B2 (ja) マルチスレッドプロセッサ
JP5536864B2 (ja) マルチスレッドプロセッサ
JP5770333B2 (ja) マルチスレッドプロセッサ
JP2014067248A (ja) プロセッサ、割り込み処理方法及び割り込み制御装置
JP2013058265A (ja) マルチスレッドプロセッサ及びその割り込み処理方法
JP2014211890A (ja) マルチスレッドプロセッサ及びその割り込み処理方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant