CN112540796B - 一种指令处理装置、处理器及其处理方法 - Google Patents
一种指令处理装置、处理器及其处理方法 Download PDFInfo
- Publication number
- CN112540796B CN112540796B CN201910900982.2A CN201910900982A CN112540796B CN 112540796 B CN112540796 B CN 112540796B CN 201910900982 A CN201910900982 A CN 201910900982A CN 112540796 B CN112540796 B CN 112540796B
- Authority
- CN
- China
- Prior art keywords
- instruction
- decoded
- unit
- instructions
- execution unit
- 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 68
- 238000003672 processing method Methods 0.000 title claims abstract description 7
- 238000000034 method Methods 0.000 claims abstract description 36
- 108010001267 Protein Subunits Proteins 0.000 claims description 4
- 230000008859 change Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 6
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 206010063385 Intellectualisation Diseases 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- 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/3017—Runtime instruction translation, e.g. macros
-
- 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/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Advance Control (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种指令处理装置,包括指令译码单元、多个指令执行单元、耦接到译码单元和指令执行单元的指令调度单元。指令退休单元。指令译码单元适于对指令进行译码。每个指令执行单元适于执行相应指令类型的译码后指令。指令调度单元适于接收指令译码单元译码后的指令,根据指令类型确定多个指令执行单元中、要执行译码后指令的指令执行单元,以及将译码指令分配给所确定的指令执行单元,以便将译码指令发射到所分配的指令执行单元来执行;其中指令调度单元还适于根据已经为指令执行单元分配的指令数量,来确定要执行译码后指令的指令执行单元。本发明还公开了在指令处理装置中执行的指令调度方法、指令处理方法以及包括这个指令处理装置的片上系统。
Description
技术领域
本发明涉及处理器领域,尤其涉及包括指令调度单元的处理器核心和处理器。
背景技术
现代的处理器或者处理器核心以流水线的方式来处理指令。典型的流水线通常包括取指令、指令译码、指令调度、指令执行和指令退休等各个流水线阶段。在现在多发射的高性能处理器中,在指令译码阶段,可以在同一个时钟周期内对多条指令进行顺序译码,然后在指令调度阶段,对顺序译码的指令根据指令类型和流水线下游的指令执行状态,将指令乱序发射到各个指令执行阶段,从而在指令执行阶段同时执行多条指令。
在现有的处理器或者处理器核心中,在为译码指令确定进行指令执行的流水线时,一般只根据待分发指令的类型和数量分配执行流水线。当指令可以被分配至多条流水线来处理时,处理器或者处理器核心一般按照固定优先级来选择其中一条流水线。这种方式会导致部分流水线上具有等待执行的指令,而另一些流水上并没有指令执行,从而导致流水线的负载不均衡,引起部分流水线停顿进而造成处理器性能损失。
因此,如何为各个指令分配适当的流水线,以便尽量减少由于流水线由于负载不均衡而限于停顿而导致的处理器性能损失,是是本领域一直要解决的问题之一。为此,需要一种新的处理器指令调度方案,能够解决或者缓解上述问题,减少流水线的负载不均衡,从而提高处理器的性能。
发明内容
为此,本发明提供了一种新的指令处理装置、处理器和指令处理方法,以力图解决或者至少缓解上面存在的至少一个问题。
根据本发明的一个方面,提供了一种指令处理设备,包括指令译码单元、多个指令执行单元、耦接到译码单元和指令执行单元的指令调度单元。指令退休单元。指令译码单元适于对指令进行译码。每个指令执行单元适于执行相应指令类型的译码后指令。指令调度单元适于接收指令译码单元译码后的指令,根据指令类型确定多个指令执行单元中、要执行译码后指令的指令执行单元,以及将译码指令分配给所确定的指令执行单元,以便将译码指令发射到所分配的指令执行单元来执行;其中指令调度单元还适于根据已经为指令执行单元分配的指令数量,来确定要执行译码后指令的指令执行单元。
可选地,在根据本发明的指令处理装置中,多个指令执行单元包括至少两个指令执行单元,这至少两个指令执行单元适于执行相同指令类型的译码后指令。指令调度单元适于根据已经为至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行相同指令类型的译码指令的指令执行单元。
可选地,在根据本发明的指令处理装置中,至少两个指令执行单元包括具有第一优先级的第一指令执行单元和第二优先级的第二指令执行单元,所述第一优先级高于第二优先级。指令调度单元适于在分配给第一指令执行单元的指令数量和分配给第二指令执行单元的指令数量之差小于预定阈值时,将译码指令分配给所述第一指令执行单元;并在指令数量之差不小于预定阈值时,将译码指令分配给所述第二指令执行单元。
可选地,在根据本发明的指令处理装置中,指令调度单元包括:至少两个第一指令调度子单元,每个第一指令调度子单元耦接到至少两个指令执行单元中的一个对应的指令执行单元,以便接收为对应的指令执行单元分配的译码指令,并将译码指令发射到对应的指令执行单元来执行;以及第一调度逻辑子单元,耦接到至少两个第一指令调度子单元,并适于根据已经为述至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行译码指令的指令执行单元,并将译码指令分配给与所确定的指令执行单元相对应的第一指令调度子单元。
可选地,在根据本发明的指令处理装置中,指令调度单元包括第二指令调度子单元,耦接到至少两个指令执行单元。第二调度子单元包括:第二调度逻辑子单元,适于根据已经为至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行译码指令的指令执行单元,并将译码指令发射到所确定的指令执行单元以便执行译码指令。
可选地,在根据本发明的指令处理装置中,已经为指令执行单元分配的指令包括当前在指令调度单元中、已经分配并还未执行的指令以及在指令执行单元中执行的指令。
可选地,在根据本发明的指令处理装置中,指令调度单元包括指令计数器,该指令计数器适于存储为每个指令执行单元分配的译码指令数量。
可选地,在根据本发明的指令处理装置中,译码指令包括指示指令执行状态的指令标识;以及指令调度单元适于统计为每个指令执行单元分配的译码指令中、指令标识指示未完成执行的译码指令的数量来确定为每个指令执行单元分配的译码指令数量。
根据本发明的另一个方面,提供了一种指令调度方法,包括步骤:接收译码后的指令;根据指令类型以及已经为多个指令执行单元中的各指令执行单元分配的指令数量,来确定要执行译码后指令的指令执行单元,并将该译码指令分配给所确定的指令执行单元;以及将译码指令发射到所分配的指令执行单元来执行。
根据本发明的一个方面,提供了一种指令处理方法,包括步骤:对指令进行译码;根据本发明所述的指令调度方法,将所译码的指令发射到相应的指令执行单元;以及执行该译码指令。
根据本发明的另一个方面,提供了一种片上系统,包括根据本发明的指令处理装置或者处理器。
根据本发明的还有一个方面,提供了一种智能设备,包括根据本发明的片上系统。
根据本发明的方案,根据已经分配给各个指令执行单元的译码指令数量,来确定将下一个指令的执行单元,可以有效避免高优先级的指令执行单元由于要执行的指令太多而让指令排队等待、同时低优先级的指令执行单元处于空闲状态从而导致的流水线性能损失,并有效促进了在各个指令执行单元之间的负载均衡。
另外,根据本发明的方案,除了考虑在指令调度单元中已经分配给指令执行单元的指令数量之外,还考虑已经在各个指令执行单元中执行的指令数量,从而可以让各个指令执行单元的负载更加均衡。
另外,根据本发明的方案,考虑到不同的指令类型和指令执行单元的特点,设计了两种不同的指令调度结构设计。在一种设计中,为每个指令执行单元分配一个专门的指令调度子单元,并首先根据负载均衡为译码指令确定了指令执行单元之后,将指令发送到专门的指令调度子单元,从而使得在指令调度子单元中关注于指令的排序和发射,简化了负载均衡调度的结构设计。而在另一种方案中,一个指令调度子单元对应于多个指令执行单元,因此,将负载均衡逻辑嵌入到指令调度子单元中,并集中管理到指令执行单元的指令发射。通过提供两种设计,可以很好地为各种类型的指令和指令执行单元提供负载均衡调度。
附图说明
为了实现上述以及相关目的,本文结合下面的描述和附图来描述某些说明性方面,这些方面指示了可以实践本文所公开的原理的各种方式,并且所有方面及其等效方面旨在落入所要求保护的主题的范围内。通过结合附图阅读下面的详细描述,本公开的上述以及其它目的、特征和优势将变得更加明显。遍及本公开,相同的附图标记通常指代相同的部件或元素。
图1示出了根据本发明一个实施例的指令处理装置的示意图;
图2示出了根据本发明另一个实施例的指令处理装置的示意图;
图3示出了根据本发明一个实施例的指令调度方法的流程示意图;
图4示出了根据本发明一个实施例的处理器的示意图;
图5示出了根据本发明一个实施例的计算机系统的示意图;以及
图6示出了根据本发明的一个实施例的片上系统(SoC)的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1是根据本发明一个实施例的指令处理装置100的示意图。在一些实施例中,指令处理装置100可以是处理器、多核处理器的处理器核、或者电子系统中的处理元件。
如图1所示,指令处理装置100包括取指令单元130。取指令单元130可以从高速缓存110、存储器120或其他源获取要处理的指令,并发送给译码单元140。取指令单元130所取出的指令包括但不限于高级机器指令或者宏指令等。处理装置100通过执行这些指令来完成特定功能。
译码单元140接收从取指令单元130传入的指令,并且译码这些指令以生成低级微操作、微代码进入点、微指令或其他低级指令或控制信号,它们反映了所接收的指令或者从所接收的指令导出。低级指令或控制信号可通过低级(例如,电路级或硬件级)操作来实现高级指令的操作。可使用各种不同的机制来实现译码单元140。合适机制的示例包括但不限于,微代码、查找表、硬件实现、可编程逻辑阵列(PLA)。本发明不受限于实现译码单元140的各种机制,任何可以实现译码单元140的机制都在本发明的保护范围之内。
译码单元140将经过译码的指令发送到指令调度单元160。调度单元160将译码单元140译码后的指令根据其指令类型而发射到不同的指令执行单元150。根据一种实施方式,调度单元160将译码指令乱序发射到不同的指令执行单元150来执行。在调度单元160中,维护指令发射队列,其中存储到了发射到指令执行单元150的指令。在调度单元中,可以为所有的执行单元150维护统一的发射队列,也可以为每个执行单元150维护一个专门的发射队列,甚至也可以为同一类型的指令维护专门的发射队列以便将指令发射到可以执行相同类型指令的不同执行单元150。本发明不受限于发射队列的具体形式,所有可以在调度单元160中为译码单元140所译码的指令维护发射队列的方式都在本发明的保护范围之内。
执行单元150包括可操作用于执行指令的电路。执行单元150在执行这些指令时,从寄存器组170、高速缓存110和/或存储器120接收数据输入并向它们生成数据输出。
在一个实施例中,寄存器组170包括架构寄存器,架构寄存器也被称为寄存器。除非另外予以规定或清楚明显可知,在本文中,短语架构寄存器、寄存器组、以及寄存器用于表示对软件和/或编程器可见(例如,软件可见的)和/或由宏指令指定来标识操作数的寄存器。这些寄存器不同于给定微架构中的其他非架构式寄存器(例如,临时寄存器、重排序缓冲器、引退寄存器等)。根据一个实施例,寄存器组170可以包括一组矢量寄存器175,其中的每个矢量寄存器175可以是512位、256位、或128位宽,或者可以使用不同的向量宽度。可选地,寄存器组170还可以包括一组通用寄存器176。通用寄存器176可以在执行单元执行指令时使用,例如存储跳转条件等。
应当理解,在指令处理装置100中,可以具有超过一个执行单元。例如,指令执行装置100可包括多个不同类型的执行单元,诸如例如算术单元、算术逻辑单元(ALU)、整数单元、浮点单元、跳转执行单元等。根据从指令调度单元160乱序发射过来的指令的特征(例如,指令为算术运算指令、条浮点数计算指令、条件跳转或者无条件跳转指令等),由不同的执行单元150分别执行这些指令。
执行单元150在完成指令执行之后,由指令退休单元180对执行完成的指令进行退休处理,即根据指令执行的结果来修改各个寄存器或者存储器的内容、进行中断或者异常处理等,从而最终完成指令处理。
为了避免混淆描述,已示出和描述了相对简单的指令处理装置100。指令处理装置或处理器的其他实施例可具有多个核、逻辑处理器或执行引擎。
图2示出了根据本发明另一个实施例的指令处理装置200的示意图。图2所示的指令处理装置200示出了与本发明相关的、图1所示的指令处理装置100相应部分的具体说明,即图2所示的指令处理装置200针对在指令处理中与指令调度单元160相关的部分进行了具体描述,因此,与图1所示的指令处理装置100中相同或者相关的部件用相同或者相似的标记来指示。另外,对于各个单元中的各个部件件的划分是功能性的,并且为了物理实现可以进行重新布置和组合而没有脱离本发明的保护范围。
如图2所示,指令译码单元140对由取指令单元130读取的指令进行译码,以获得译码后的指令。每条译码后的指令包括指令PC值等可以对该指令进行标识的信息。根据一种实施方式,指令译码单元140可以在一个时钟周期内译码多条指令,如图2所示,指令译码单元140可以在一个时钟周期内译码A1到A4共4条指令,每条指令具有相应的程序计数器PC值(即,PC1到PC4)。
指令译码单元140将译码后的指令发送到指令调度单元160。指令调度单元160根据指令类型来确定能够执行译码指令的指令执行单元150,以便将指令分配给所确定的指令执行单元150。根据一种实施方式,指令根据其类型可以包括算术运算指令、矢量浮点数计算指令、条件跳转或者无条件跳转指令、数据存储和加载指令等。指令调度单元160根据每条指令的类型将指令发射到不同的执行单元150来执行。如果图2所示,执行单元150具有多个执行单元,例如包括2个算术运算单元(ALU)152A和152B,分支跳转单元154,加载存储单元156和2个矢量运算单元158A和158B。ALU 152A和152B适于执行算术运算指令,分支跳转单元154适于执行条件跳转或者无条件跳转指令,加载存储单元156适于执行数据存储和加载指令,以及矢量运算单元158A和158B适于执行矢量浮点数计算指令。例如,指令A1-A4为算术运算指令,因此要分配给ALU 152A和152B来执行。本发明不受限于指令类型和相应的指令执行单元的类型,所有可以在指令处理装置中执行的指令类型和指令执行单元都在本发明的保护范围之内。
指令调度单元160要将译码后的指令乱序发射到各个执行单元150,因此,指令调度单元160需要调度逻辑来确定应当将译码后的指令发射到哪个执行单元150。
如图2所示,调度单元160包括第一调度逻辑子单元162和第一调度子单元164。每个第一调度子单元耦接到一个对应的执行单元150。在图2所示的示例中,第一调度子单元164A耦接到算术运算单元(ALU)152A,而第一调度子单元164B耦接到ALU 152B。每个第一调度子单元164仅仅将指令发射到对应的执行单元,即第一调度子单元164A仅仅将指令发射到ALU 152A,而第一调度子单元164B仅仅将指令发射到ALU 152B。第一调度子单元164A和164B耦接到第一调度逻辑子单元162。当第一调度逻辑子单元162接收译码指令,并确定译码指令要发射到ALU 152A和152B中哪个来执行,则将译码指令发送给相应的第一调度子单元164A或者164B,以便由这些第一调度子单元发射到对应的执行单元来执行。
另外,如图2所示,可选地,调度单元160还包括第二调度子单元166。第二调度子单元166耦接到多个执行单元150。在图2所示的示例中,第二调度子单元166耦接到分支跳转单元154,加载存储单元156和2个矢量运算单元158A和158B,以便将相应类型的指令发射到相应的执行单元。第二调度子单元166还包括第二调度逻辑子单元168。第二调度逻辑子单元168对特定类型的指令进行调度。例如,对第二调度子单元166接收的矢量浮点数计算指令,第二调度逻辑子单元168确定要将该指令发射到两个矢量运算单元158A和158B中的哪一个。这样第二调度子单元166将所指令发射到所确定的矢量运算单元158A或者158B来执行。
上面在图2中描述了在指令调度单元160中为了进行指令调度而采用的两种结构,即包括第一调度子单元164和第一调度逻辑子单元162的第一指令调度结构,以及包括第二调度子单元166及其中的第二调度逻辑子单元168的第二指令调度结构。本发明不受限于此,可以在指令调度单元160中仅仅采用第一指令调度结构,也可以在指令调度单元160中仅仅采用第二指令调度结构,或者针对一些类型指令采用第一指令调度结构,而针对其它类型指令采用第二指令调度结构。所有这些方式都在本发明的保护范围之内。
应当注意的是,上面虽然以ALU 152A和ALU 165B具有第一指令调度结构,而2个矢量运算单元158A和158B具有第二指令调度结构进行了描述,但是本发明不受限于此,矢量运算单元158A和158B也可以具有第一指令调度结构,即具有分别对应的第一调度子单元。同样的,ALU 152A和ALU 165B也可以具有第二指令调度结构,即由对应的第二调度子单元来管理。所有这样的方式,都在本发明的保护范围之内。
无论是第一指令调度结构还是第二指令调度结构,两个结构的不同之处包括在第一种结构中,调度子单元仅仅维护与相对应的一个执行单元相关联的已调度指令列表(例如,维护相应的指令发射队列),而在第二种结构中,调度子单元需要为所有相应的执行单元维护已调度指令列表。本发明通过提供两种结构,以便更好地适配更多类型的执行单元。但是,这两个结构都需要在第一调度逻辑子单元162或者第二调度逻辑子单元168中实现指令调度逻辑169。指令调度逻辑169用于为特定类型的指令确定要执行该指令的执行单元150,因此这个指令调度逻辑169是基本相同的,下面将详细描述这个指令调度逻辑169所要实现的功能。
对于同类型的指令,指令调度逻辑169根据已经为用于执行该类型指令的各个指令执行单元150分配的指令数量,来确定要执行该指令的指令执行单元150。应当主要的是,在本发明中,根据指令是否由相同类型的执行单元150来执行来确定指令是否为相同类型。一些不属于相同类型指令,但是由同一种类型的执行单元150执行的指令在本发明中被认为是相同类型的指令,并且没有超出本发明的保护范围。
根据一种实施方式,对于多个指令执行单元150中的至少两个执行相同类型指令的指令执行单元。例如上面参考图2描述的ALU 152A和152B,或者矢量运算单元158A和158B。调度逻辑169根据已经为这至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行的译码指令的指令执行单元。
例如,对于要分配给ALU执行的算术运算指令,可以根据目前已经分配给ALU 152A和ALU 152B的算术运算指令之差,来确定将新译码的算术运算指令分配给ALU 152A和ALU152B中的哪个来执行。
具体而言,可以将新译码的算术运算指令分配给已经被分配了较少要执行的指令的执行单元。例如,如果当前已经为ALU 152A分配了3条待执行的指令,而为ALU 152B分配了1条待执行的指令,则可以考虑将新的译码指令分配给ALU 152B以便后续执行。
不同的执行单元150可以具有不同的优先级。一般而言,具有较高优先级的执行单元150可以优先占用处理资源,因此具有较快的指令执行速度。基于此,可以为高优先级的执行单元150分配较多的指令来执行能够充分利用处理器资源。但是如果给高优先级的执行单元150分配的指令过多,也会导致该执行单元150处于忙碌状态,而低优先级的执行单元150处于空闲状态,从而减低了处理效率。
根据进一步的实施例,可以进一步考虑执行单元优先级对指令分配的影响。具体而言,在调度逻辑169中,对于高优先级的指令执行单元和低优先级的指令执行单元,如果已经分配给高优先级的指令执行单元的指令数量和已经分配给低优先级的指令执行单元的指令数量之差小于预定阈值时,即分配给高优先级的指令执行单元的指令数量没有超过分配给低优先级的指令执行单元的指令数量太多时,则将新的译码指令分配给高优先级的指令执行单元,而相应地,如果已经分配给高优先级的指令执行单元的指令数量和已经分配给低优先级的指令执行单元的指令数量之差不小于预定阈值时,即分配给高优先级的指令执行单元的指令数量比分配给低优先级的指令执行单元的指令数量多比较多时,则将新的译码指令分配给低指令执行单元。
利用这种方式,可以为高优先级的指令执行单元分配较多的指令来执行,同时又不会导致两个不同优先级的指令执行单元的负载相差太多,从而可以保持二者的负载均衡。
例如,以上面的ALU 152A和152B为例,假定ALU 152A的优先级高于ALU 152B的优先级,则在调度逻辑169中,首先计算已经为两个执行单元分配的指令数量,即:Schedule_Inst_Num(ALU 152A)和Schedule_Inst_Num(ALU 152B)。随后计算二者之差:
X=Schedule_Inst_Num(ALU 152A)-Schedule_Inst_Num(ALU 152B)
将X和阈值Xth进行比较,如果X<Xth,则说明分配给高优先级ALU 152A来执行的指令数量并不比分配给低优先级ALU 152B来执行的指令数量多很多,因此,将新的译码指令分配给高优先级的ALU 152A。相应的,如果X>=Xth,则说明已经分配给高优先级ALU 152A的要执行指令较多,因此,将新的译码指令分配给低优先级的ALU 152B。
在上面的实施例中,在调度逻辑169中,根据在指令调度单元160中已经分配给各个指令执行单元150的指令数量来确定要将新的译码指令分配给哪个指令执行单元,这样可以有效避免高优先级的指令执行单元由于要执行的指令太多而让指令排队等待、同时低优先级的指令执行单元处于空闲状态从而导致的流水线性能损失,并有效促进了在各个指令执行单元之间的负载均衡。
在根据本发明的另一个实施例中,在调度逻辑169中,在考虑已经分配给各个指令执行单元150的指令数量时,除了考虑在指令调度单元160中已经分配给指令执行单元150的数量之外,还可以考虑在每个指令执行单元150中正在执行的指令数量。例如,根据一个实施例,可以将之前描述的实施例中所采用的指令数量替换为在指令调度单元160中已经分配给执行单元150的指令数量和在该执行单元150中执行的指令数量之和。
具体而言,就上面描述的ALU 152A和152B来说,在ALU 152A中执行的指令数量可以表述为Execute_Inst_Num(ALU 152A),在ALU 152B中执行的指令数量可以表述为Execute_Inst_Num(ALU 152B)。因此,X的值可以表示为:
X=(Execute_Inst_Num(ALU 152A)+Schedule_Inst_Num(ALU 152A))-(Execute_Inst_Num(ALU 152B)+Schedule_Inst_Num(ALU 152B))
并利用这样的X值和阈值Xth进行比较以便确定可以将新的译码指令分配给哪个指令执行单元150。
根据这样的方案,通过进一步考虑在各个指令执行单元150中正在执行的指令数量,可以使得调度逻辑169对指令负载的考虑更加全面,从而可以让各个执行单元150上的负载更加均衡。
另外,在指令调度单元160中,可以有多种方式来获得已经分配给各个指令执行单元150的指令数量。根据一种实施方式,例如对于图2所示的第一指令调度子单元164A和164B,可以在这些调度子单元中设置计数器(例如以寄存器的形式),在这些计数器中存储已经分配给对应的指令执行单元150的指令数量。因此可以从这些计数器获取已经分配给各个指令执行单元的指令数量。同样的,也可以在指令调度单元160中设置专门的计数器来为每个指令执行单元150存储已经分配的指令数量。
根据另一个实施例,针对每条译码的指令,可以在指令调度单元160为该条指令添加一个有效标识位,用于指示该指令的执行状态。例如当该标识位的值为1时,说明该指令已经被分配了并且还没有执行完成。而标识位的值为0时,说明指令已经执行完成了或者还没有进行分配。这样,通过对在指令调度单元160和/或指令执行单元150中对所有指令的有效标识位进行统计,就可以获得为每个指令执行单元150分配和/或已经在其中执行的指令数量。
根据本发明的另一个实施例,可以通过动态修改各个指令执行单元的优先级来确定将新译码的指令分配给哪个指令执行单元。例如,对于某种类型的指令来说,将新译码的指令分配给具有最高优先级的指令来执行。因此,在调度逻辑169中,在确定了要将指令分配给哪个指令执行单元150之后,可以通过修改所确定的指令执行单元150的优先级,从而将指令分配给该指令执行单元来执行。这种方式不用对现有的流水线处理方式进行重新设计,因此可以方便地将本发明的方案应用于现有的处理器流水线中。
下面将结合图3描述的指令调度方法300来进一步描述在指令处理装置100,特别是在指令处理装置200中的指令调度单元160进行的操作。
指令调度方法300适于步骤S310,在步骤S310中,接收译码后的指令。指令可以由例如指令处理流水线上游的指令译码单元来进行译码。每条译码后的指令包括指令PC值等可以对该指令进行标识的信息。
随后,在步骤S320中,根据指令类型以及已经为多个指令执行单元中的各指令执行单元分配的指令数量,来确定要执行该译码后指令的指令执行单元,并将译码指令分配给所确定的指令执行单元。根据一种实施方式,指令根据其类型可以包括算术运算指令、矢量浮点数计算指令、条件跳转或者无条件跳转指令、数据存储和加载指令等。执行单元150具有多个执行单元,例如包括2个算术运算单元(ALU)152A和152B,分支跳转单元154,加载存储单元156和2个矢量运算单元158A和158B。ALU 152A和152B适于执行算术运算指令,分支跳转单元154适于执行条件跳转或者无条件跳转指令,加载存储单元156适于执行数据存储和加载指令,以及矢量运算单元158A和158B适于执行矢量浮点数计算指令。
在本发明中,根据指令是否由相同类型的执行单元150来执行来确定指令是否为相同类型。一些不属于相同类型指令,但是由同一种类型的执行单元150执行的指令在本发明中被认为是相同类型的指令,并且没有超出本发明的保护范围。
根据一种实施方式,对于多个指令执行单元150中的至少两个执行相同类型指令的指令执行单元,在步骤S320中,根据已经为这至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行的译码指令的指令执行单元。
例如,对于要分配给ALU执行的算术运算指令,可以根据目前已经分配给ALU 152A和ALU 152B的算术运算指令之差,来确定将新译码的算术运算指令分配给ALU 152A和ALU152B中的哪个来执行。
具体而言,可以将新译码的算术运算指令分配给已经被分配了较少要执行的指令的执行单元。例如,如果当前已经为ALU 152A分配了3条待执行的指令,而为ALU 152B分配了1条待执行的指令,则可以考虑将新的译码指令分配给ALU 152B以便后续执行。
不同的执行单元150可以具有不同的优先级。一般而言,具有较高优先级的执行单元150可以优先占用处理资源,因此具有较快的指令执行速度。基于此,可以为高优先级的执行单元150分配较多的指令来执行能够充分利用处理器资源。但是如果给高优先级的执行单元150分配的指令过多,也会导致该执行单元150处于忙碌状态,而低优先级的执行单元150处于空闲状态,从而减低了处理效率。
根据进一步的实施例,可以进一步考虑执行单元优先级对指令分配的影响。具体而言,在步骤S320中,对于高优先级的指令执行单元和低优先级的指令执行单元,如果已经分配给高优先级的指令执行单元的指令数量和已经分配给低优先级的指令执行单元的指令数量之差小于预定阈值时,即分配给高优先级的指令执行单元的指令数量没有超过分配给低优先级的指令执行单元的指令数量太多时,则将新的译码指令分配给高优先级的指令执行单元,而相应地,如果已经分配给高优先级的指令执行单元的指令数量和已经分配给低优先级的指令执行单元的指令数量之差不小于预定阈值时,即分配给高优先级的指令执行单元的指令数量比分配给低优先级的指令执行单元的指令数量多比较多时,则将新的译码指令分配给低指令执行单元。
利用这种方式,可以为高优先级的指令执行单元分配较多的指令来执行,同时又不会导致两个不同优先级的指令执行单元的负载相差太多,从而可以保持二者的负载均衡。
随后,在步骤S330中,将译码指令发射到所分配的指令执行单元来执行该指令。指令在执行完成之后退出。指令通过方法300所描述的指令调度方法乱序发射到各个指令执行单元来执行,并且在执行完成之后顺序退出,从而完成指令在指令处理装置中的处理。
在上面的实施例中,根据已经分配给各个指令执行单元150的指令数量来确定要将新的译码指令分配给哪个指令执行单元,这样可以有效避免高优先级的指令执行单元由于要执行的指令太多而让指令排队等待、同时低优先级的指令执行单元处于空闲状态从而导致的流水线性能损失,并有效促进了在各个指令执行单元之间的负载均衡。
在根据本发明的另一个实施例中,在步骤S320中,在考虑已经分配给各个指令执行单元150的指令数量时,除了考虑已经分配给指令执行单元150的数量之外,还可以考虑在每个指令执行单元150中正在执行的指令数量。例如,根据一个实施例,可以将之前描述的实施例中所采用的指令数量替换为在指令调度单元160中已经分配给执行单元150的指令数量和在该执行单元150中执行的指令数量之和。
根据这样的方案,通过进一步考虑在各个指令执行单元150中正在执行的指令数量,可以使得对指令负载的考虑更加全面,从而可以让各个执行单元150上的负载更加均衡。
另外,如图2所示,指令调度单元160包括两种调度架构,无论是第一指令调度结构还是第二指令调度结构,两个结构的不同之处在于,在第一种结构中,调度子单元仅仅维护与相对应的一个执行单元相关联的已调度指令列表(例如,维护相应的指令发射队列),而在第二种结构中,调度子单元需要为所有相应的执行单元维护已调度指令列表。本发明通过提供两种结构,以便更好地适配更多类型的执行单元。
相应的,方法300中的相应步骤也在不同的子单元中来执行。例如,根据一种实施方式,对于第一指令调度架构,在步骤S320中确定指令执行单元的处理可以在第一调度逻辑子单元162中执行,其中根据已经为至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行译码指令的指令执行单元,并将译码指令分配给与所确定的指令执行单元相对应的第一指令调度子单元164A或者164B。另外,步骤S330的处理在在每个第一指令调度子单元164A或者164B中执行,其中接收为对应的指令执行单元分配的译码指令,并将译码指令发射到对应的指令执行单元来执行。
另外,对于第二指令调度架构,在步骤S320中确定指令执行单元的处理可以在第二调度逻辑子单元168中执行,其中根据已经为至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行译码指令的指令执行单元。随后,在步骤S330中,通过第二指令调度子单元将译码指令发射到所确定的指令执行单元以便执行译码指令。
如上所述,根据本发明的指令处理装置可以实现为处理器核,且指令处理方法可以在处理器核中执行。处理器核可以不同的方式在不同的处理器中实现。例如,处理器核可以实现为用于通用计算的通用有序核、用于通用计算的高性能通用无序核、以及用于图形和/或科学(吞吐量)计算的专用核。而处理器可以实现为CPU(中央处理器)和/或协处理器,其中CPU可以包括一个或多个通用有序核和/或一个或多个通用无序核,而协处理器可以包括一个或多个专用核。这样的不同处理器的组合可以导致不同的计算机系统架构。在一种计算机系统架构中,协处理器在与CPU分开的芯片上。在另一种计算机系统架构中,协处理器在与CPU相同的封装中但处于分开的管芯上。在还有一种计算机系统架构中,协处理器与CPU在相同管芯上(在该情况下,这样的协处理器有时被称为诸如集成图形和/或科学(吞吐量)逻辑等专用逻辑,或被称为专用核)。在还有一种称为片上系统的计算机系统架构中,可以将所描述的CPU(有时被称为应用核或应用处理器)、以上描述的协处理器和附加功能包括在同一管芯上。
图4示出了根据本发明一个实施例的处理器1100的示意图。如图4中的实线框所示,根据一种实施方式,处理器1110包括单个核1102A、系统代理单元1110、总线控制器单元1116。如图4中的虚线框所示,根据本发明的另一个实施方式,处理器1100还可以包括多个核1102A-N、处于系统代理单元1110中的集成存储器控制器单元1114以及专用逻辑1108。
根据一种实施方式,处理器1100可以实现为中央处理器(CPU),其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可包括一个或多个核),且核1102A-N是一个或多个通用核(例如,通用有序核、通用无序核、这两者的组合)。根据另一种实施方式,处理器1100可以实现为协处理器,其中核1102A-N是用于图形和/或科学(吞吐量)的多个专用核。根据还有一种实施方式,处理器1100可以实现为协处理器,其中核1102A-N是多个通用有序核。因此,处理器1100可以是通用处理器、协处理器或专用处理器,诸如例如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量的集成众核(MIC)协处理器(包括30个或更多核)、或嵌入式处理器等。该处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个衬底的一部分,和/或可以使用诸如例如BiCMOS、CMOS或NMOS等的多个加工技术中的任何一个技术将其实现在一个或多个衬底上。
存储器层次结构包括在各核内的一个或多个级别的高速缓存、一个或多个共享高速缓存单元1106、以及耦接到集成存储器控制器单元1114的外部存储器(未示出)。该共享高速缓存单元1106可以包括一个或多个中间级高速缓存,诸如二级(L2)、三级(L3)、四级(L4)或其他级别的高速缓存、末级高速缓存(LLC)、和/或其组合。尽管在一个实施例中,基于环的互连单元1112将集成图形逻辑1108、共享高速缓存单元1106以及系统代理单元1110/集成存储器控制器单元1114互连,本发明不受限于此,并且可使用任何数量的公知技术来将这些单元互连。
系统代理1110包括协调和操作核1102A-N的那些组件。系统代理单元1110可包括例如功率控制单元(PCU)和显示单元。PCU可以包括调整核1102A-N和集成图形逻辑1108的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核1102A-N可以具有上面参考图1描述的核架构,并且在架构指令集方面可以是同构的或异构的。即,这些核1102A-N中的两个或更多个核可能能够执行相同的指令集,而其他核可能能够执行该指令集的仅仅子集或不同的指令集。
图5示出了根据本发明一个实施例的计算机系统1200的示意图。图5所示的计算机系统1200可以应用于膝上型设备、台式机、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备以及各种其他电子设备。本发明不受限于此,所有可以纳入本说明书中所公开的处理器和/或其它执行逻辑的系统都在本发明的保护范围之内。
如图5所示,系统1200可以包括一个或多个处理器1210、1215。这些处理器耦接到控制器中枢1220。在一个实施例中,控制器中枢1220包括图形存储器控制器中枢(GMCH)1290和输入/输出中枢(IOH)1250(其可以在分开的芯片上)。GMCH 1290包括与存储器1240和协处理器1245相耦接的存储器控制器和图形控制器。IOH 1250将输入/输出(I/O)设备1260耦接到GMCH 1290。做为选择,存储器控制器和图形控制器集成在处理器中,这样存储器1240和协处理器1245就直接耦接到处理器1210,此时控制器中枢1220仅仅包括IOH1250。
附加处理器1215的任选性质用虚线表示在图5中。每一处理器1210、1215可包括本文中描述的处理核中的一个或多个,并且可以是图4所示的处理器1100的某一版本。
存储器1240可以是例如动态随机访问存储器(DRAM)、相变存储器(PCM)或这两者的组合。对于至少一个实施例,控制器中枢1220经由诸如前侧总线(FSB)之类的多分支总线(multi-drop bus)、诸如快速通道互连(QPI)之类的点对点接口、或者类似的连接1295与处理器1210、1215进行通信。
在一个实施例中,协处理器1245是专用处理器,诸如例如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、或嵌入式处理器等等。在一个实施例中,控制器中枢1220可以包括集成图形加速器。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令中的可以是协处理器指令。处理器1210识别如具有应当由附连的协处理器1245执行的类型的这些协处理器指令。因此,处理器1210在协处理器总线或者其他互连上将这些协处理器指令(或者表示协处理器指令的控制信号)发布到协处理器1245。协处理器1245接受并执行所接收的协处理器指令。
图6示出了根据本发明的一个实施例的片上系统(SoC)1500的示意图。图6所示的片上系统包含了图4所示的处理器1100,因此与图4中相似的部件具有同样的附图标记。如图6所示,互连单元1502耦接到应用处理器1510、系统代理单元1110、总线控制器单元1116、集成存储器控制器单元1114、一个或多个协处理器1520、静态随机存取存储器(SRAM)单元1530、直接存储器存取(DMA)单元1532以及用于耦合至一个或多个外部显示器的显示单元1540。应用处理器1510包括一个或多个核1102A-N的集合以及共享高速缓存单元110。协处理器1520包括集成图形逻辑、图像处理器、音频处理器和视频处理器。在一个实施例中,协处理器1520包括专用处理器,诸如例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、或嵌入式处理器等等。
另外,上面描述的片上系统可以包含在智能设备中,以便在智能设备中实现相应的功能,包括但不限于执行相关控制程序、进行数据分析、运算和处理、网络通信、控制智能设备中的外设等。
这样的智能设备包括专门的智能设备,如移动终端和个人数字终端等,这些设备中包括根据本发明的一个或者多个片上系统来进行数据处理,或者对设备中的外设进行控制。
这样的智能设备还包括为了实现特定功能而构造的专门设备,例如智能音箱、和智能显示设备等。这些设备中包括根据本发明的片上系统来对音箱和显示设备进行控制,从而赋予音箱和显示设备额外的通信、感知和数据处理等功能。
这样的智能设备还包括各种IoT和AIoT设备。这些设备中包括根据本发明的片上系统进行数据处理,例如进行AI运算、数据通信和传输等,从而实现了更加密集且更加智能的设备分布。
这样的智能设备还可以在车辆中使用,例如可以实现为车载设备、或者可以嵌入到车辆中,从而为车辆的智能驾驶提供数据处理能力。
这样的智能设备还可以用于家庭和娱乐领域,例如可以实现为智能音箱、智能空调、智能冰箱、智能显示设备等。这些设备包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了家庭和娱乐设备的智能化。
另外,这样的智能设备还可以用于工业领域,例如可以实现为工控设备、感测设备、IoT设备,AIoT设备和制动设备等。这些设备中包括根据本发明的片上系统来进行数据处理和外设控制,从而实现了工业设备的智能化。
本文公开的机制的各实施例可以被实现在硬件、软件、固件或这些实现方法的组合中。本发明的实施例可实现为在可编程系统上执行的计算机程序或程序代码,该可编程系统包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备以及至少一个输出设备。
应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员应当理解在本文所公开的示例中的设备的模块或单元或组件可以布置在如该实施例中所描述的设备中,或者可替换地可以定位在与该示例中的设备不同的一个或多个设备中。前述示例中的模块可以组合为一个模块或者此外可以分成多个子模块。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
此外,所述实施例中的一些在此被描述成可以由计算机系统的处理器或者由执行所述功能的其它装置实施的方法或方法元素的组合。因此,具有用于实施所述方法或方法元素的必要指令的处理器形成用于实施该方法或方法元素的装置。此外,装置实施例的在此所述的元素是如下装置的例子:该装置用于实施由为了实施该发明的目的的元素所执行的功能。
如在此所使用的那样,除非另行规定,使用序数词“第一”、“第二”、“第三”等等来描述普通对象仅仅表示涉及类似对象的不同实例,并且并不意图暗示这样被描述的对象必须具有时间上、空间上、排序方面或者以任意其它方式的给定顺序。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (17)
1.一种指令处理装置,包括:
指令译码单元,适于对指令进行译码;
多个指令执行单元,其中每个指令执行单元适于执行相应指令类型的译码后指令,以及
指令调度单元,耦接到所述指令译码单元和所述多个指令执行单元,适于接收所述指令译码单元译码后的指令,根据指令类型确定所述多个指令执行单元中、要执行所述译码后指令的指令执行单元,以及将所述译码指令分配给所确定的指令执行单元,以便将所述译码指令发射到所分配的指令执行单元来执行;
其中所述指令调度单元还适于根据已经为指令执行单元分配的指令数量,来确定要执行所述译码后指令的指令执行单元;
以及,所述译码后指令包括指示指令执行状态的指令标识,指令执行状态包括指令已被分配但尚未被执行完成的第一状态和指令已被执行完成或尚未被分配的第二状态,所述指令调度单元还适于在被分配的指令执行完成后将指令标识从所述第一状态改变为所述第二状态,以及统计为每个指令执行单元分配的译码后指令中、具有所述第一状态的指令标识的指令的数量来确定为每个指令执行单元分配的译码后指令数量。
2.如权利要求1所述的指令处理装置,所述多个指令执行单元包括至少两个指令执行单元,所述至少两个指令执行单元适于执行相同指令类型的译码后指令;以及
所述指令调度单元适于根据已经为所述至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行所述相同指令类型的译码指令的指令执行单元。
3.如权利要求2所述的指令处理装置,其中所述至少两个指令执行单元包括具有第一优先级的第一指令执行单元和第二优先级的第二指令执行单元,所述第一优先级高于第二优先级;以及
所述指令调度单元适于在分配给所述第一指令执行单元的指令数量和分配给第二指令执行单元的指令数量之差小于预定阈值时,将所述译码指令分配给所述第一指令执行单元;并在所述指令数量之差不小于预定阈值时,将所述译码指令分配给所述第二指令执行单元。
4.如权利要求2或者3所述的指令处理装置,所述指令调度单元包括:
至少两个第一指令调度子单元,每个第一指令调度子单元耦接到所述至少两个指令执行单元中的一个对应的指令执行单元,以便接收为所述对应的指令执行单元分配的译码指令,并将所述译码指令发射到所述对应的指令执行单元来执行;以及
第一调度逻辑子单元,耦接到所述至少两个第一指令调度子单元,并适于根据已经为所述至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行所述译码指令的指令执行单元,并将所述译码指令分配给与所确定的指令执行单元相对应的第一指令调度子单元。
5.如权利要求2-3中任一个所述的指令处理装置,所述指令调度单元包括第二指令调度子单元,耦接到所述至少两个指令执行单元,所述第二指令调度子单元包括:
第二调度逻辑子单元,适于根据已经为所述至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行所述译码指令的指令执行单元,并将所述译码指令发射到所确定的指令执行单元以便执行所述译码指令。
6.如权利要求1-3中任一个所述的指令处理装置,其中所述已经为指令执行单元分配的指令包括当前在所述指令调度单元中、已经分配并还未执行的指令以及在所述指令执行单元中执行的指令。
7.如权利要求1-3中任一个所述的指令处理装置,所述指令调度单元包括指令计数器,所述指令计数器适于存储为每个指令执行单元分配的译码指令数量。
8.一种指令调度方法,包括步骤:
接收译码后的指令;
根据指令类型以及已经为多个指令执行单元中的各指令执行单元分配的指令数量,来确定要执行所述译码后指令的指令执行单元,并将所述译码指令分配给所确定的指令执行单元;以及
将所述译码指令发射到所分配的指令执行单元来执行;
其中,所述译码后指令包括指示指令执行状态的指令标识,指令执行状态包括指令已被分配但尚未被执行完成的第一状态和指令已被执行完成或尚未被分配的第二状态,所述指令调度方法还包括:在被分配的指令执行完成后将指令标识从所述第一状态改变为所述第二状态,以及统计为每个指令执行单元分配的译码后指令中、具有所述第一状态的指令标识的指令的数量来确定为每个指令执行单元分配的译码后指令数量。
9.如权利要求8所述的指令调度方法,其中所述多个指令执行单元包括至少两个指令执行单元,所述至少两个指令执行单元适于执行相同指令类型的译码后指令;以及
所述确定指令执行单元的步骤包括:根据已经为所述至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行所述相同指令类型的译码指令的指令执行单元。
10.如权利要求8所述的指令调度方法,其中所述至少两个指令执行单元包括具有第一优先级的第一指令执行单元和第二优先级的第二指令执行单元,所述第一优先级高于第二优先级;以及
所述确定指令执行单元的步骤包括:在分配给所述第一指令执行单元的指令数量和分配给第二指令执行单元的指令数量之差小于预定阈值时,将所述译码指令分配给所述第一指令执行单元;并在所述指令数量之差不小于预定阈值时,将所述译码指令分配给所述第二指令执行单元。
11.如权利要求9或者10所述的指令调度方法,其中所述方法适于在指令调度单元中执行,以及所述指令调度单元包括:
至少两个第一指令调度子单元,每个第一指令调度子单元耦接到所述至少两个指令执行单元中的一个对应的指令执行单元;以及
第一调度逻辑子单元,耦接到所述多至少两个第一指令调度子单元;
所述确定指令执行单元的步骤包括:在所述第一调度逻辑子单元中,根据已经为所述至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行所述译码指令的指令执行单元,并将所述译码指令分配给与所确定的指令执行单元相对应的第一指令调度子单元;以及
所述发射译码指令的步骤包括:在每个第一指令调度子单元中,接收为所述对应的指令执行单元分配的译码指令,并将所述译码指令发射到所述对应的指令执行单元来执行。
12.如权利要求9-10中任一个所述的指令调度方法,其中所述方法适于在指令调度单元中执行,以及所述指令调度单元包括耦接到所述至少两个指令执行单元的第二指令调度子单元,所述第二指令调度子单元包括第二调度逻辑子单元;
所述确定指令执行单元的步骤包括:在所述第二调度逻辑子单元中,根据已经为所述至少两个指令执行单元中的每个指令执行单元分配的译码指令数量之差,来确定要执行所述译码指令的指令执行单元,并通过所述第二指令调度子单元将所述译码指令发射到所确定的指令执行单元以便执行所述译码指令。
13.如权利要求8-10中任一个所述的指令调度方法,其中所述已经为指令执行单元分配的指令包括当前已经分配并还未执行的指令以及在所述指令执行单元中执行的指令。
14.如权利要求8-10中任一个所述的指令调度方法,还包括步骤:从指令计数器获取为每个指令执行单元分配的译码指令数量。
15.一种指令处理方法,包括步骤:
对指令进行译码;
如权利要求8-14中任一个所述的指令调度方法,将所译码的指令发射到相应的指令执行单元;以及
执行所述译码指令。
16.一种片上系统,包括如权利要求1-7中任一个所述的指令处理装置。
17.一种智能设备,包括如权利要求16所述的片上系统。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910900982.2A CN112540796B (zh) | 2019-09-23 | 2019-09-23 | 一种指令处理装置、处理器及其处理方法 |
US16/986,781 US11327765B2 (en) | 2019-09-23 | 2020-08-06 | Instruction processing apparatuses, processors, and processing methods |
PCT/US2020/045152 WO2021061287A1 (en) | 2019-09-23 | 2020-08-06 | Instruction processing apparatuses, processors, and processing methods |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910900982.2A CN112540796B (zh) | 2019-09-23 | 2019-09-23 | 一种指令处理装置、处理器及其处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112540796A CN112540796A (zh) | 2021-03-23 |
CN112540796B true CN112540796B (zh) | 2024-05-07 |
Family
ID=74880842
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910900982.2A Active CN112540796B (zh) | 2019-09-23 | 2019-09-23 | 一种指令处理装置、处理器及其处理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11327765B2 (zh) |
CN (1) | CN112540796B (zh) |
WO (1) | WO2021061287A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220100569A1 (en) * | 2020-09-26 | 2022-03-31 | Intel Corporation | Methods, systems, and apparatuses for scalable port-binding for asymmetric execution ports and allocation widths of a processor |
US11775303B2 (en) * | 2020-11-12 | 2023-10-03 | Electronics And Telecommunications Research Institute | Computing accelerator for processing multiple-type instruction and operation method thereof |
US20220413911A1 (en) * | 2021-06-29 | 2022-12-29 | International Business Machines Corporation | Routing instructions in a microprocessor |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101981543A (zh) * | 2007-12-21 | 2011-02-23 | 格罗方德半导体公司 | 用于处理一般及图形工作量的统一处理器 |
CN103154846A (zh) * | 2010-09-24 | 2013-06-12 | 英特尔公司 | 基于指令的类型和内容的处理器功率管理 |
CN108052347A (zh) * | 2017-12-06 | 2018-05-18 | 北京中科睿芯智能计算产业研究院有限公司 | 一种执行指令选择的装置、方法及指令映射方法 |
CN108696554A (zh) * | 2017-04-10 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 负载均衡方法和装置 |
CN108885586A (zh) * | 2016-04-01 | 2018-11-23 | 英特尔公司 | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 |
US10324726B1 (en) * | 2017-02-10 | 2019-06-18 | Apple Inc. | Providing instruction characteristics to graphics scheduling circuitry based on decoded instructions |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8275976B2 (en) | 2005-08-29 | 2012-09-25 | The Invention Science Fund I, Llc | Hierarchical instruction scheduler facilitating instruction replay |
US7725657B2 (en) * | 2007-03-21 | 2010-05-25 | Intel Corporation | Dynamic quality of service (QoS) for a shared cache |
US20110047357A1 (en) * | 2009-08-19 | 2011-02-24 | Qualcomm Incorporated | Methods and Apparatus to Predict Non-Execution of Conditional Non-branching Instructions |
US8412971B2 (en) * | 2010-05-11 | 2013-04-02 | Advanced Micro Devices, Inc. | Method and apparatus for cache control |
US10209995B2 (en) * | 2014-10-24 | 2019-02-19 | International Business Machines Corporation | Processor core including pre-issue load-hit-store (LHS) hazard prediction to reduce rejection of load instructions |
US10387159B2 (en) * | 2015-02-04 | 2019-08-20 | Intel Corporation | Apparatus and method for architectural performance monitoring in binary translation systems |
US20170083318A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Configuring modes of processor operation |
US11681531B2 (en) * | 2015-09-19 | 2023-06-20 | Microsoft Technology Licensing, Llc | Generation and use of memory access instruction order encodings |
US10079773B2 (en) * | 2015-09-29 | 2018-09-18 | International Business Machines Corporation | Hierarchical fairshare of multi-dimensional resources |
KR102276718B1 (ko) * | 2015-11-25 | 2021-07-13 | 삼성전자주식회사 | Vliw 인터페이스 장치 및 제어 방법 |
US11106467B2 (en) * | 2016-04-28 | 2021-08-31 | Microsoft Technology Licensing, Llc | Incremental scheduler for out-of-order block ISA processors |
US10884753B2 (en) * | 2017-11-30 | 2021-01-05 | International Business Machines Corporation | Issue queue with dynamic shifting between ports |
-
2019
- 2019-09-23 CN CN201910900982.2A patent/CN112540796B/zh active Active
-
2020
- 2020-08-06 US US16/986,781 patent/US11327765B2/en active Active
- 2020-08-06 WO PCT/US2020/045152 patent/WO2021061287A1/en active Application Filing
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101981543A (zh) * | 2007-12-21 | 2011-02-23 | 格罗方德半导体公司 | 用于处理一般及图形工作量的统一处理器 |
CN103154846A (zh) * | 2010-09-24 | 2013-06-12 | 英特尔公司 | 基于指令的类型和内容的处理器功率管理 |
CN108885586A (zh) * | 2016-04-01 | 2018-11-23 | 英特尔公司 | 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令 |
US10324726B1 (en) * | 2017-02-10 | 2019-06-18 | Apple Inc. | Providing instruction characteristics to graphics scheduling circuitry based on decoded instructions |
CN108696554A (zh) * | 2017-04-10 | 2018-10-23 | 北京京东尚科信息技术有限公司 | 负载均衡方法和装置 |
CN108052347A (zh) * | 2017-12-06 | 2018-05-18 | 北京中科睿芯智能计算产业研究院有限公司 | 一种执行指令选择的装置、方法及指令映射方法 |
Non-Patent Citations (1)
Title |
---|
性能非对称多核处理器下异构感知调度技术;赵姗;杨秋松;李明树;;软件学报;20190122(04);全文 * |
Also Published As
Publication number | Publication date |
---|---|
WO2021061287A1 (en) | 2021-04-01 |
US11327765B2 (en) | 2022-05-10 |
CN112540796A (zh) | 2021-03-23 |
US20210089317A1 (en) | 2021-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101486025B1 (ko) | 프로세서에서의 쓰레드 스케쥴링 | |
CA2676184C (en) | On-demand multi-thread multimedia processor | |
CN112540796B (zh) | 一种指令处理装置、处理器及其处理方法 | |
US7263604B2 (en) | Heterogeneous parallel multithread processor (HPMT) with local context memory sets for respective processor type groups and global context memory | |
KR20100053593A (ko) | 컴퓨터 시스템에서 다른 프로세서들에 대한 시스템 관리 인터럽트들을 방송하기 위한 메커니즘 | |
US20140160138A1 (en) | Memory based semaphores | |
US9286125B2 (en) | Processing engine implementing job arbitration with ordering status | |
WO2021050414A2 (en) | Processing method and apparatus for translation lookaside buffer flush instruction | |
US20130138930A1 (en) | Computer systems and methods for register-based message passing | |
KR101501181B1 (ko) | 인터페이스 프로세서 | |
WO2020132841A1 (zh) | 一种基于多线程的指令处理方法及装置 | |
CN112559403B (zh) | 一种处理器及其中的中断控制器 | |
US20120110594A1 (en) | Load balancing when assigning operations in a processor | |
CN112540792A (zh) | 指令处理方法及装置 | |
US11467844B2 (en) | Storing multiple instructions in a single reordering buffer entry | |
US20050257224A1 (en) | Processor with instruction-based interrupt handling | |
CN108628639B (zh) | 处理器和指令调度方法 | |
US20210089305A1 (en) | Instruction executing method and apparatus | |
US20210089319A1 (en) | Instruction processing apparatus, processor, and processing method | |
US20220197696A1 (en) | Condensed command packet for high throughput and low overhead kernel launch | |
US11886910B2 (en) | Dynamic prioritization of system-on-chip interconnect traffic using information from an operating system and hardware | |
JP2022151572A (ja) | メタデータ要求をスケジューリングするためのシステム、装置、および方法 | |
CN113703841A (zh) | 一种寄存器数据读取的优化方法、装置及介质 | |
US20160378497A1 (en) | Systems, Methods, and Apparatuses for Thread Selection and Reservation Station Binding |
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 |