CN107567614A - 用于对根据关键度被分组的指令的缕程的执行的多核处理器 - Google Patents
用于对根据关键度被分组的指令的缕程的执行的多核处理器 Download PDFInfo
- Publication number
- CN107567614A CN107567614A CN201580079533.6A CN201580079533A CN107567614A CN 107567614 A CN107567614 A CN 107567614A CN 201580079533 A CN201580079533 A CN 201580079533A CN 107567614 A CN107567614 A CN 107567614A
- Authority
- CN
- China
- Prior art keywords
- instruction
- thread
- processor
- thread journey
- criticality
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 239000000872 buffer Substances 0.000 claims description 64
- 230000015654 memory Effects 0.000 claims description 63
- 238000012545 processing Methods 0.000 claims description 37
- 238000000034 method Methods 0.000 claims description 25
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 claims description 3
- 235000012771 pancakes Nutrition 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 35
- 238000003860 storage Methods 0.000 description 33
- 238000004891 communication Methods 0.000 description 30
- 238000007726 management method Methods 0.000 description 24
- 238000005516 engineering process Methods 0.000 description 10
- 238000000429 assembly Methods 0.000 description 9
- 230000000712 assembly Effects 0.000 description 9
- 230000008878 coupling Effects 0.000 description 8
- 238000010168 coupling process Methods 0.000 description 8
- 238000005859 coupling reaction Methods 0.000 description 8
- 230000006870 function Effects 0.000 description 7
- 239000003795 chemical substances by application Substances 0.000 description 6
- 238000007667 floating Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 239000012536 storage buffer Substances 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000005611 electricity Effects 0.000 description 4
- 239000012160 loading buffer Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 229910002056 binary alloy Inorganic materials 0.000 description 3
- 210000004027 cell Anatomy 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 230000007613 environmental effect Effects 0.000 description 3
- 238000003032 molecular docking Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 239000004065 semiconductor Substances 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000001052 transient effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000000151 deposition Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000014616 translation Effects 0.000 description 2
- 241001062009 Indigofera Species 0.000 description 1
- 230000002159 abnormal effect Effects 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 210000003127 knee Anatomy 0.000 description 1
- 230000002045 lasting effect Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 210000000352 storage cell Anatomy 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/445—Exploiting fine grain parallelism, i.e. parallelism at instruction level
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03F—PHOTOMECHANICAL PRODUCTION OF TEXTURED OR PATTERNED SURFACES, e.g. FOR PRINTING, FOR PROCESSING OF SEMICONDUCTOR DEVICES; MATERIALS THEREFOR; ORIGINALS THEREFOR; APPARATUS SPECIALLY ADAPTED THEREFOR
- G03F1/00—Originals for photomechanical production of textured or patterned surfaces, e.g., masks, photo-masks, reticles; Mask blanks or pellicles therefor; Containers specially adapted therefor; Preparation thereof
- G03F1/36—Masks having proximity correction features; Preparation thereof, e.g. optical proximity correction [OPC] design processes
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03F—PHOTOMECHANICAL PRODUCTION OF TEXTURED OR PATTERNED SURFACES, e.g. FOR PRINTING, FOR PROCESSING OF SEMICONDUCTOR DEVICES; MATERIALS THEREFOR; ORIGINALS THEREFOR; APPARATUS SPECIALLY ADAPTED THEREFOR
- G03F1/00—Originals for photomechanical production of textured or patterned surfaces, e.g., masks, photo-masks, reticles; Mask blanks or pellicles therefor; Containers specially adapted therefor; Preparation thereof
- G03F1/68—Preparation processes not covered by groups G03F1/20 - G03F1/50
- G03F1/70—Adapting basic layout or design of masks to lithographic process requirements, e.g., second iteration correction of mask patterns for imaging
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03F—PHOTOMECHANICAL PRODUCTION OF TEXTURED OR PATTERNED SURFACES, e.g. FOR PRINTING, FOR PROCESSING OF SEMICONDUCTOR DEVICES; MATERIALS THEREFOR; ORIGINALS THEREFOR; APPARATUS SPECIALLY ADAPTED THEREFOR
- G03F7/00—Photomechanical, e.g. photolithographic, production of textured or patterned surfaces, e.g. printing surfaces; Materials therefor, e.g. comprising photoresists; Apparatus specially adapted therefor
- G03F7/0005—Production of optical devices or components in so far as characterised by the lithographic processes or materials used therefor
-
- 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/30003—Arrangements for executing specific machine instructions
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
- G06F9/3814—Implementation provisions of instruction buffers, e.g. prefetch buffer; banks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
-
- 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/3854—Instruction completion, e.g. retiring, committing or graduating
-
- 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/3888—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel
-
- 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
-
- 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/44—Arrangements for executing specific programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Advance Control (AREA)
Abstract
在实施例中,处理器包括多个核。每个核可包括缕程逻辑以用于:对于多个缕程的每个缕程,取出与缕程唯一相关联的指令组,其中指令组是多个指令组中的一个,其中多个指令组通过根据指令关键度划分应用程序的指令而获得。缕程逻辑还可用于按照应用程序的原始顺序引退指令组。描述其他实施例并要求它们的权利。
Description
技术领域
实施例总地涉及对指令的调度以用于在计算机系统中执行。
背景技术
在传统计算机处理器中,处理器执行的每个指令可能涉及各种操作或级。例如,一个操作可以是指令取出以从存储器检索指令以用于附加操作(例如,解码、执行等)。这些操作中的每一个会要求处理器的一些时钟周期,并且因此会限制处理器的性能。一些处理器可以包括用于提高在每个时钟周期期间被处理的指令的数量的技术。例如,这些技术可包括超标量处理、指令流水线操作、推测执行等。
附图说明
图1A是根据一个或多个实施例的示例系统的框图。
图1B-1C是根据一个或多个实施例的处理缕程(strand)的示例。
图1D是根据一个或多个实施例的窗口缓冲器的示例。
图1E-1F是根据一个或多个实施例的窗口缓冲器的示例。
图2是根据一个或多个实施例的序列。
图3是根据一个或多个实施例的处理器核的微架构的框图。
图4A是根据一个或多个实施例的系统的部分的框图。
图4B是根据一个或多个实施例的多域处理器的框图。
图4C是根据一个或多个实施例的处理器的框图。
图5是根据一个或多个实施例的包括多个核的处理器的框图。
图6是根据一个或多个实施例的处理器核的微架构的框图。
图7是根据一个或多个实施例的处理器核的微架构的框图。
图8是根据一个或多个实施例的处理器核的微架构的框图。
图9是根据一个或多个实施例的处理器的框图。
图10是根据一个或多个实施例的代表性SoC的框图。
图11是根据一个或多个实施例的另一示例SoC的框图。
图12是可与一个或多个实施例一起使用的示例系统的框图。
图13是可与一个或多个实施例一起使用的另一示例系统的框图。
图14是根据一个或多个实施例的计算机系统的框图。
图15是根据一个或多个实施例的系统的框图。
具体实施方式
在典型的超标量处理器中,多个指令被同时分派到处理器的不同功能单元。超标量处理器可处理线程中的指令。如本文所使用的,术语“线程”指代彼此数据依赖的一系列相关指令,并且相关指令被执行以实施特定任务。一些超标量处理器可使用有序执行,意味着线程中的每个指令被按照如被编程在源代码中的指令被发现的顺序(即,按照“程序顺序”)执行。相反,使用乱序执行的超标量处理器(被称为“乱序超标量处理器”)可按照由输入数据的可用性确定的顺序而不是由它们的原始程序顺序确定的顺序来执行线程的指令。
此外,在典型的超标量处理器中,指令被按照程序顺序取出。可以在执行窗口期间将与这些指令相关的数据存储在缓冲器中(本文中被称为“窗口缓冲器”)。窗口缓冲器的示例包括加载指令缓冲器、存储指令缓冲器、重排序缓冲器等。可以按程序顺序从窗口缓冲器引退或移除指令。由此,指令流中的在还未完成的最旧指令与已经开始执行的最新指令之间的最大距离(被称为“指令调度窗口”)可与窗口缓冲器中的条目的数量相关。
根据一些实施例,可以将线程分成N个分开的处理缕程。如本文所使用的,术语“缕程”指代线程中的根据指令关键度被分组的指令的子集。N路处理器核可包括N个分开的处理路径或“路”,其中每个路包括分开的硬件组件以用于处理特定水平的关键度的缕程。在一些实施例中,可以将N路核的窗口缓冲器分成N个分区,其中窗口缓冲器的每个分区被分配给特定水平的关键度的缕程。通过根据关键度处理分开的缕程中的指令,一些实施例可以实现更大的指令调度窗口而无需扩展窗口缓冲器的物理尺寸。
尽管参考特定实现描述下列实施例,但实施例不限于此方面。具体而言,构想可以将本文所述的实施例的类似的技术和教导应用到其他类型的电路、半导体器件、处理器、系统等。例如,所公开的实施例可以任一类型的计算机系统实现,包括服务器计算机(例如,塔、机架、刀片、微服务器等等)、通信系统、存储系统、任意配置的台式计算机、膝上型计算机、笔记本和平板计算机(包括2:1平板、平板手机等等)。
此外,所公开的实施例也可用于其它设备,诸如手持式设备、芯片上系统(SOC)以及嵌入式应用。手持式设备的一些示例包括诸如智能电话的蜂窝电话、网际协议设备、数码相机、个人数字助理(PDA)和手持式PC。嵌入式应用通常可以包括微控制器、数字信号处理器(DSP)、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、可穿戴设备,或能够执行以下所教导的功能和操作的任何其他系统。此外,实施例可以在具有标准语音功能的移动终端中实现,诸如移动电话、智能电话和平板电话,和/或在不具有标准无线语音功能通信能力的非移动终端中实现,诸如许多可穿戴设备、平板电脑、笔记本、台式机、微服务器、服务器等等。
现在参考图1A,所示为根据一个或多个实施例的示例系统100的框图。在一些实施例中,系统100可以是电子设备或组件。例如,系统100可以是蜂窝电话、计算机、服务器、网络设备、芯片上系统(SOC)、控制器、无线收发机、电源单元、刀片计算机等。
系统100可包括耦合到存储器130的处理器110。存储器130可以是任何类型的计算机存储器,包括动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、非易失性存储器(NVM)、DRAM和NVM组合等。如所示,在一些实施例中,存储器130可包括应用程序132和缕程编译器136。处理器110可以是诸如中央处理单元(CPU)的通用硬件处理器。处理器110可包括任何数量的处理核120A-120N(共同被称为“核120”)。在一些实施例中,每个核120可包括缕程逻辑125。可以使用硬件、固件、软件和/或其任何组合来实现缕程逻辑125。
处理器110可执行缕程编译器136和应用程序132。在一些实施例中,缕程编译器136可分析和/或编译应用程序132。例如,缕程编译器136可以是在执行期间(即,在程序执行时间)变换应用程序132的二进制代码的二进制编译器或重编译器。此外,缕程编译器136可以分析应用程序132的指令,并且可以确定每个指令的关键度。如本文所使用的,指令的关键度指代对指令的延迟会对程序的总执行时间的影响的度量或指示。例如,在一些实施例中,指令的关键度可被表达为数值分数,其中分数的绝对值等于时钟周期的最大数量,最大数量是指令的分配可以被延迟而不会增加程序的总执行时间的时钟周期的数量。在一些实施例中,缕程编译器136可以基于对指令的先前执行的历史数据、对应用程序132的概况分析运行、对应用程序132的静态分析等来确定每个指令的关键度。
在一些实施例中,缕程编译器136可以确定每个指令的等待时间和指令之间的依赖关系,并且可以使用该信息来估计应用程序132中的每个指令的关键度。例如,缕程编译器136可以将具有长等待时间的指令标识为具有高关键度的指令。此外,缕程编译器136可以将长等待时间的指令所依赖的指令标识为具有高关键度的指令。基于每个指令的估计的关键度,缕程编译器136可以将指令指派给N组中的仅一组,其中N是每个核120中的路的数量。例如,对于具有N=2路的核120,缕程编译器136可以将应用程序132的每个指令指派给具有高关键度的组或具有低关键度的组。在另一示例中,对于N=4,缕程编译器136可以将应用程序132的每个指令指派给四组中的一组,四组对应于非常高关键度、中高关键度、中低关键度和非常低关键度。在一些实施例中,缕程编译器136可以基于每个指令的关键度水平组来编译程序指令以在缕程中执行。此外,缕程编译器136可以将程序编译为包括指示每个指令的所指派的缕程、组和/或关键度水平的信息的二进制代码。例如,缕程编译器136可以设置被编译的指令的字段或其他标识符、可以将与指令相关联的一个或多个标签插入二进制代码、并且/或者可以设置数据结构或寄存器来指示每个指令的缕程、组和/或水平。
在一些实施例中,缕程编译器136可以基于组的关键度将不同数量或百分比的指令指派到每个组。此外,在一些实施例中,随着组的关键度降低,被指派给每个组的指令的数量或百分比变大。例如,对于具有N=2路的核120,高关键度组可以包括指令的10%,而低关键度组可以包括指令的90%。在一些实施例中,可以将指令移动到存储器地址空间中使得每个组的指令被本地地放置,从而促进单独缕程对该缕程内的单个组中的指令按照程序顺序的取出。
在一些实施例中,缕程编译器136可变换应用程序132以处理跨指令组和/或缕程的寄存器和存储器依赖关系。例如,如果第一缕程中的指令将值写入到寄存器,并且第二缕程中的指令要求该值,则第一缕程和/或第二缕程可以被编译使得第二缕程中的指令可以读取被写入寄存器的该值。在一些实施例中,缕程编译器136可以将第一标签插入二进制代码以标识产生会被不同缕程消耗的寄存器值的每个指令。此外,缕程编译器136还可以将第二标签插入不同缕程以标识将消耗寄存器值的指令。
在另一示例中,在指令访问特定存储器位置的情形下,会需要对相同的存储器位置检查对于全部程序(即,跨所有缕程)按照程序顺序较早的并且还未被完成的不同指令。这种检查可能涉及读取存储队列和加载队列以标识任何缕程的访问相同存储器地址的指令。此外,该检查可能涉及比较这些指令的原始程序顺序以确定哪个指令是更旧的。注意,尽管上文讨论了用于处理跨缕程的数据依赖性的技术的示例,但是构想可以使用任何其他合适的技术。
在一些实施例中,缕程编译器136可以变换指令以指示应用程序132的原始程序顺序。为了指示被指派给相同缕程的指令之间的程序顺序,缕程编译器136可以将指令分配到存储器中使得指令在缕程的控制流中出现的相互顺序是程序顺序。在一些实施例中,为了指示被指派给不同缕程的指令之间的程序顺序,缕程编译器138可以向每个指令附加指示原始程序顺序的字段或其他指示符。此外,在一些实施例中,缕程编译器136可以将标记插入二进制代码以指示指令的程序顺序。例如,在两个缕程的情形下,指令之前或之后可以有“翻转”标记以指示切换到另一缕程或切换自另一缕程。此外,可以通过使用任何其他合适的机制来确定或指示指令的原始程序顺序。
在一些实施例中,核120可以通过使用缕程逻辑125来处理应用程序132。例如,缕程逻辑125可包括大量指令指针,其中每个指令指针对应于核120的多个处理路中的一个并且指示要从与对应的处理路相关联的缕程取出的下一指令。可以通过使用对应的指令指针取出每个缕程的指令,对应的指令指针根据缕程的控制流更新。因此,缕程的指令被取出的顺序是原始应用的程序顺序。在一些实施例中,不对取出被指派给不同缕程的指令之间的相互顺序施加限制。此外,在一些实施例中,缕程逻辑125可以部分地与同时多线程(SMT)模式控制逻辑共享。例如,指令指针可以用于以SMT模式同时地取出大量单缕程的线程。可以在核120的N路中的一个中执行每个缕程。
现在参考图1B,所示为根据一个或多个实施例的使用两个处理缕程的示例。如所示,在图1B的示例中,线程140包括一系列指令141-149。在该示例中,假设线程140会被在两个缕程中处理(例如,在两路处理器核中)。进一步假设缕程编译器136(如图1A所示)将指令143、146和148指派给与高关键度相关联的第一缕程和/或组,并且将剩余指令分配给与低关键度相关联的第二缕程和/或组。因此,如图1B所示,缕程逻辑125可以执行包括低关键度指令141、142、144、145、147和149的第一缕程150。此外,缕程逻辑125还可以执行包括高关键度指令143、146和148的第二缕程155。在一些实施例中,可以在核120的分开的路中执行第一缕程150和第二缕程155。此外,在一些实施例中,当相应的路具有处理能力时取出每个缕程中的指令。此外,在一些实施例中,对跨所有缕程的指令的取出可以相对于原始程序顺序乱序地发生。
现在参考图1C,所示为根据一个或多个实施例的使用三个处理缕程的示例。在图1C的示例中,假设线程(未示出)已经被分成对应于低、中和高关键度的三个缕程。如所示,第一缕程160包括三个低关键度指令164、166和169。此外,第二缕程162包括两个中关键度指令165和168。此外,第三缕程163包括一个高关键度指令167。在一些实施例中,缕程逻辑125可在核120的分开的路中执行缕程160、162和163。
在一些实施例中,缕程逻辑125可将任何窗口缓冲器的条目指派或分配给多个分区。每个分区可以被分配给每个核120中的不同的处理路。例如,参考图1D,所示为根据一些实施例的示例窗口缓冲器170。窗口缓冲器170可以是物理缓冲器(例如,重排序缓冲器、加载缓冲器、存储缓冲器等)。在图1D的示例中,假设窗口缓冲器170被包括在具有三个处理路的核120中。相应地,窗口缓冲器170的条目被映射到三个逻辑分区172、174、176。进一步假设第一分区172被分配给低关键度指令、第二分区174被分配给中关键度指令、并且第三分区176被分配给高关键度指令。
在一些实施例中,窗口缓冲器的每个分区可以具有相同数量的条目,但是被分配给每个关键度组的指令的百分比可根据关键度而变化。例如,所分配的指令的比例可以与关键度水平相反地变化,使得随着每个组的关键度增大,被指派给该组的指令的数量或百分比变小。
在一些实施例中,将窗口缓冲器的较大比例分配给较高关键度指令可以扩展有效的指令调度窗口。例如,现在参考图1E,所示为示例窗口缓冲器180。在图1E的示例中,假设窗口缓冲器180不是根据关键度分区的。进一步假设窗口缓冲器180被包括八个指令的重复环路的线程使用,其中环路的每个迭代中的前两个指令被指定为关键的(例如,具有相对高关键度),而环路的每个迭代中的后六个指令被指定为非关键的(例如,具有相对低关键度)。因此,如图1E所示,窗口缓冲器180包括完成第一迭代"A"的八个指令181-188。例如,指令181被标记为"C-A/1"以指示第一迭代("A")的第一指令("1")被指定为关键的("C")。在另一示例中,指令183被标记为"NC-A/3"以指示第一迭代("A")的第三指令("3")被指定为非关键的("NC")。
现在参考图1F,所示为根据关键度被分区的窗口缓冲器180的示例。具体地,图1F示出被同等地分成用于关键指令的第一分区195和用于非关键指令的第二分区197的窗口缓冲器180的八个条目。如所示,第二分区197包括第一迭代"A"的前四个非关键指令183-186。此外,第一分区195包括第一迭代"A"的两个关键指令181-182。然而,因为第一分区195分配有四个条目,所以第一分区195还可以包括第二迭代"B"(即,迭代"A"之后的下一迭代)的两个关键指令191-192。由此,以此方式对窗口缓冲器180进行分区允许指令调度窗口被扩展到第二迭代"B"而无需增加窗口缓冲器180中的条目的数量。
注意,为了说明而提供图1A-1F所示的示例,并且图1A-1F所示的示例不旨在限制任何实施例。例如,构想图1D-1F所示的窗口缓冲器170、180可包括任何数量的分区。在另一示例中,构想被分配给每个关键度组的指令的百分比可以是相等的,并且窗口缓冲器的分区可以根据关键度被调节尺寸。在又一示例中,构想缕程编译器136的任务中的任一个还可以在硬件中(例如,在核120中)实现。在再一示例中,构想缕程逻辑125的任务中的任一个还可以在软件中实现。此外,系统100可包括与图1A所示不同的不同组件、附加组件、组件的不同布置、和/或不同数量的组件。
现在参考图2,所示为根据一个或多个实施例的序列200。在一些实施例中,序列200的全部或一部分可以由图1A所示的缕程逻辑125和/或缕程编译器136实现。在一些实施例中,序列200的一些或全部可以硬件、软件和/或固件来实现。在固件和软件实施例中,它可通过计算机执行的指令来实现,该计算机执行的指令被存储在例如光学、半导体或磁存储设备之类的非瞬态机器可读介质上。机器可读介质可存储数据,数据如果被至少一个机器使用,使该至少一个机器制造至少一个集成电路以执行方法。为了说明,下文参考图1A-1F描述序列200中所涉及的步骤,其示出根据一些实施例的示例。然而,本文所讨论的各实施例的范围不限于此方面。
在框210处,可以接收对要被执行的程序的指示。例如,参考图1A,缕程编译器136接收表示应用程序132要被编译以供执行的指示(例如,信号、命令等)。
在框220处,可以确定程序中的指令的关键度信息。例如,参考图1A,缕程编译器136确定应用程序132中的每个指令的关键度分数或值。在一些实施例中,缕程编译器136是二进制编译器。例如,缕程编译器136可以是重编译器或二进制转换器。
在框230处,可以基于关键度信息将每个指令指派给指令缕程和/或组。每个指令缕程和/或组可以与窗口缓冲器的分区相关联。例如,参考图1A-1D,缕程编译器136可以将应用程序132的指令分成三个不同组,对应于定义的三个关键度水平。具体地,缕程编译器136可以将指令164、166和169指派给低关键度缕程和/或组、可以将指令165和168指派给中关键度缕程和/或组、并且可以将指令167指派给高关键度缕程和/或组。低关键度缕程和/或组可以与窗口缓冲器170的第一分区172相关联。此外,中关键度缕程和/或组可以与第二分区174相关联,并且高关键度缕程和/或组可以与第三分区176相关联。
在框240处,可以确定指令缕程之间的数据依赖关系。例如,参考图1A,缕程编译器136可以确定不同指令缕程中的指令之间的寄存器和存储器依赖关系。
在框250处,可以通过使用关键度信息和跨缕程和/或组的数据依赖关系来编译程序。例如,参考图1A,缕程编译器136将应用程序132编译为二进制形式。经编译的程序可包括指示每个指令的所指派的缕程、组和/或关键度水平的信息(例如,标签、字段、标识符等)。此外,经编译的程序可包括指示跨指令缕程的寄存器和存储器依赖关系的信息。此外,经编译的程序可包括指示指令中的一些或全部的原始程序顺序的信息。
在框260处,可以按照缕程顺序取出并分配每个缕程的指令。如本文所使用的,“缕程顺序”指代被包括在给定缕程中的指令的顺序,但是没有跨缕程进行序列化。因此,可以有序地取出每个单个缕程内的指令,但是可以相对于其他缕程中的指令乱序地取出这些指令。例如,参考图1A和1F,缕程逻辑125可以在取出非关键缕程的第一迭代"A"的指令"NC-A/7"之前取出关键缕程的第二迭代"B"的指令"C-B/1"。
在框270处,可以乱序地执行每个缕程。在一些实施例中,缕程可以相对于缕程顺序和/或程序顺序乱序地执行指令。例如,参考图1A和1F,第一处理路可以在非关键指令"NC-A/7"被第二处理路执行之前执行关键指令"C-B/1"。在一些实施例中,缕程逻辑125可以在指令的执行期间管理跨缕程的数据依赖关系。例如,缕程逻辑125可以使用被包括在二进制代码中的标签来标识产生或消耗寄存器值的指令。此外,缕程逻辑125可以比较经编译的程序中的关于指令的程序顺序的信息来确定哪个指令要访问存储器位置。
在框280处,可以按照原始程序顺序引退所有缕程中的指令。例如,参考图1A,缕程逻辑125可以按照程序顺序引退指令。在一些实施例中,缕程逻辑125可以使用被包括在经编译的程序中的信息(例如,标签、位等)来确定跨所有当前缕程的指令的程序顺序位置。此外,如果指令具有跨当前缕程的所有指令的最早的程序顺序位置,则缕程逻辑125可仅引退该指令。由此,可以按照原始程序顺序引退指令,即使它们在分开的缕程中被执行。在框280之后,完成序列200。
现在参照图3,所示为根据本发明的一个实施例的处理器核的微架构的框图。如图3所示,处理器核500可以是多级流水线类型的乱序处理器。处理器核500的组件中的一些或全部可通常对应于缕程逻辑125(如图1A所示)。在一些实施例中,处理器核500可包括任何同时多线程处理器技术(例如,超线程),并且可包括分立的硬件组件(例如,处理路)以用于同时执行多个线程。此外,处理器核500可同时执行单个线程的多个缕程。
如图3所示,核500包括前端单元510,前端单元510可用于取出将被分开的处理缕程执行的指令。例如,前端单元510可包括取出单元501、指令高速缓存503和指令解码器505。在某些实现中,前端单元510可进一步包括跟踪高速缓存、微代码存储以及微操作存储。取出单元501可取出在核500的分开的路中执行的多个缕程的指令。可以从存储器或指令高速缓存503取出指令并将它们馈送至指令解码器505以将它们解码为原语,即用于通过处理器执行的微操作。
在一些实施例中,取出单元501可按照缕程顺序取出每个缕程的指令。例如,取出单元501可以有序地取出每个单独的缕程内的指令,但是可以乱序地取出跨其他缕程的指令。
乱序(OOO)引擎515耦合在前端单元510与执行单元520之间,乱序引擎515可用于接收微指令并将它们准备好以供执行。OOO引擎515可包括多个缓冲器以重排序微指令流并分配执行所需的多个资源。在一些实施例中,可以将OOO引擎515的缓冲器分成多个分区,其中每个分区被分配给与关键度水平相关联的特定的缕程和/或指令组。
在一些实施例中,OOO引擎515可以提供对多个寄存器堆(例如,寄存器堆530和扩展寄存器堆535)中的存储位置上的逻辑寄存器的重命名。寄存器堆530可包括用于整数和浮点操作的单独的寄存器堆。扩展寄存器堆535可提供向量尺寸单元的存储,例如,每寄存器256或512位。在一些实施例中,可以将寄存器堆530和/或扩展寄存器堆535分成多个分区,其中每个分区被分配给与关键度水平相关联的特定的缕程和/或指令组。
在执行单元520中可存在多种资源,包括例如多种整数、浮点和单指令多数据(SIMD)逻辑单元等其它专门硬件。例如,除了这些执行单元以外,此类执行单元可包括一个或多个算术逻辑单元(ALU)522和一个或多个向量执行单元(VEU)524。
在一些实施例中,OOO引擎515可包括重排序缓冲器(ROB)540。ROB 540可包括多种阵列和逻辑以接收与被执行的指令相关联的信息。在一些实施例中,可以将ROB 540分成多个分区,其中每个分区被分配给与关键度水平相关联的特定的缕程和/或指令组。
在一些实施例中,ROB 540可以确定每个缕程中的指令是否可以有效引退,并且结果数据是否被提交至处理器的架构状态,或阻止指令的正常引退的一个或多个异常是否发生。在一些实施例中,ROB 540可管理跨缕程的数据依赖关系。此外,ROB 540可以按照原始程序顺序引退跨所有缕程的指令。此外,ROB 540可处理与引退相关联的任何其他操作。
如图3所示,ROB 540可以耦合至高速缓存550,在一个实施例中,高速缓存550可以是低层级高速缓存(例如,L1高速缓存),尽管本发明的范围不限于此。而且,执行单元520可直接耦合至高速缓存550。从高速缓存550,可发生与更高层级高速缓存、系统存储器等等的数据通信。虽然图3示出特定示例实现方式,但应理解各实施例的范围不限于该示例。
参考图4,示出了包括多个核的处理器的实施例。处理器400包括任何处理器或处理器件,诸如微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持式处理器、应用处理器、协同处理器、片上系统(SoC)、或用于执行代码的其它器件。在一个实施例中,处理器400包括至少两个核——核401和402,它们可包括非对称核或对称核(所示实施例)。然而,处理器400可包括可以是对称的或非对称的任何数量的处理元件。在一些实施例中,核401和402的各种组件可以实现图1A所示的缕程逻辑125。
在一些实施例中,处理元件指的是用于支持缕程的硬件或逻辑。在一些实施例中,处理元件可包括能够与诸如缕程、线程、操作系统、应用、或其他代码之类的代码独立地相关联的任何硬件。物理处理器通常指的是集成电路,其潜在地包括诸如核之类的任意数量的其他处理元件。
核通常指的是位于集成电路上的能够维持独立架构状态的逻辑,其中每个独立维持的架构状态与至少一些专用执行资源相关联。处理路可以指代被包括在核中的能够维持缕程的独立架构状态的任何逻辑,其中独立维持的架构状态共享对执行资源的访问。在一些实施例中,处理路可包括一组专用硬件组件以用于以同时多线程(SMT)模式同时执行一个线程和其他线程。
在图4所示的示例中,物理处理器400包括两个核,即核401和402。然而,在其他示例中,处理器400可包括任何数量的核。在此,核401和402被认为是对称核,即,这些核具有相同的配置、功能单元和/或逻辑。在一些实施例中,核401和402是乱序处理器核。在一些实施例中,诸如操作系统之类的软件实体潜在地将处理器400视为四个单独的处理路,即能够并发地执行四个缕程的四个逻辑处理器或处理元件。第一缕程可以与架构状态寄存器401a相关联,第二缕程可以与架构状态寄存器401b相关联,第三缕程可以与架构状态寄存器402a相关联,并且第四缕程可以与架构状态寄存器402b相关联。在此,架构状态寄存器(401a、401b、402a和402b)中的每一个可以与不同的处理路相关联。如上所述,架构状态寄存器401a被复制在架构状态寄存器401b中,因此能够为逻辑处理器401a和逻辑处理器401b存储各个架构状态/上下文。在核401中,也可复制用于不同缕程的其他较小资源,诸如,指令指针以及分配器和重命名器块430中的重命名逻辑。在一些实施例中,可以链接核401的架构状态寄存器(401a和401b)以提供缕程之间的通信。此外,可以链接核402的架构状态寄存器(402a和402b)以提供缕程之间的通信。例如,此类通信可以使用经编译的缕程代码中的跨缕程的寄存器数据依赖关系指示。
在一些实施例中,可以将诸如重排序/引退单元435中的重排序缓冲器、ILTB 420、加载/存储缓冲器和队列之类的多个资源分成多个分区,其中每个分区被分配给与关键度水平相关联的特定的缕程和/或指令组。
核401还包括耦合至取出单元420以用于解码所取出的元素的解码模块425。核401可以与指令集架构(ISA)相关联,该指令集架构(ISA)定义/指定能在处理器400上执行的指令。作为ISA的部分的机器代码指令常包括引用/指定要被执行的指令或操作的指令的部分(被称为操作码)。解码逻辑425包括从这些指令的操作码识别出这些指令并在流水线上传递经解码的指令以进行ISA所定义的处理的电路。例如,在一个实施例中,解码器425包括被设计成用于或适于识别诸如事务性指令之类的特定指令的逻辑。作为由解码器425识别的结果,架构或核401采取特定的、预定义的动作以执行与适当指令相关联的任务。重要的是应注意,本文中所描述的任务、块、操作和方法中的任何一个可响应于单条或多条指令来执行;它们中的一些可以是新指令或旧指令。
在一个示例中,分配器和重命名器块430包括用于保留资源的分配器,诸如,用于存储指令处理结果的寄存器堆。在一些实施例中,分配器和重命名器块430可以按照缕程顺序(即,乱序地)分配缕程,并且可以保留诸如重排序缓冲器的其他资源以跟踪指令结果。单元430还可包括寄存器重命名器,其用于将程序/指令引用寄存器重命名为处理器400内部的其他寄存器。重排序/引退单元435包括用于支持按照缕程顺序的执行和用于支持按照程序顺序的引退的组件,诸如上述的重排序缓冲器、加载缓冲器和存储缓冲器。可以将这些缓冲器分成多个分区,其中每个分区被分配给与关键度水平相关联的特定的缕程和/或指令组。
在一个实施例中,调度器和执行单元块440包括调度器单元,其用于调度指令/操作。例如,在具有可用的浮点执行单元的执行单元的端口上调度浮点指令。还包括与执行单元相关联的寄存器堆,其用于存储信息指令处理结果。示例性的执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元以及其他已知的执行单元。
较低层级的数据高速缓存和数据转换缓冲器(D-TLB)450耦合至执行单元440。数据高速缓存用于存储最近使用/操作的元素(诸如,数据操作数),潜在地在存储器一致性状态下保持这些元素。D-TLB用于存储最近的虚拟/线性至物理地址转换。作为特定示例,处理器可包括页表结构,用于将物理存储器分解成多个虚拟页。
在此,核401和402共享对用于对最近被取出元素进行高速缓存的、较高层级或进一步远离的高速缓存410的访问。注意,较高层级或进一步远离指的是高速缓存层级增加或进一步远离执行单元。在一个实施例中,较高层级高速缓存410是末级数据高速缓存(处理器400上的存储器层次结构中的末级高速缓存),诸如,第二或第三级数据高速缓存。然而,较高层级高速缓存410不限于此,因为它可与指令高速缓存相关联或包括指令高速缓存。替代地,跟踪高速缓存(指令高速缓存的类型)可耦合在解码器425之后,用于存储最近经解码的跟踪。
在所描绘的配置中,处理器400还包括总线接口模块405和可执行根据本发明的实施例的功率管理的功率控制器460。在该情形下,总线接口405用于与在处理器400外部的设备(诸如系统存储器和其他组件)通信。
存储器控制器470可以与诸如一个或多个存储器的其他设备对接。在示例中,总线接口405包括环形互连,其与用于对接存储器的存储器控制器和用于对接图形处理器的图形控制器互连。在SoC环境中,诸如网络接口、协同处理器、存储器、图形处理器以及任何其它已知计算机器件/接口之类的甚至更多的器件可被集成到单个管芯或集成电路上,以提供具有高功能性和低功耗的小形状因数。
现在参考图5A,所示为根据本发明的实施例的系统300的框图。如图5A所示,系统300可以包括各种组件,其包括所示为多核处理器的处理器303。处理器303可经由外部电压调节器316耦合至电源317,该外部电压调节器316可执行第一电压转换以将经调节的主电压提供给处理器303。
可以看出,处理器303可以是包括多个核304a-304n的单管芯处理器。另外,每一个核304可以与集成的电压调节器(IVR)308a-308n相关联,这些集成的电压调节器接收经调节的主电压,并生成操作电压,操作电压被提供到与IVR 308相关联的处理器的一个或多个代理。相应地,可提供IVR实现以允许对每一个单个核304的电压进而对功率和性能进行细粒度的控制。由此,每一个核304都可在独立的电压和频率下操作,从而允许极大的灵活性,并提供平衡功耗与性能的广泛机会。在一些实施例中,对多个IVR 308的使用允许将组件分组到不同的功率层中,使得功率被IVR 308调节并且仅被提供给组中的那些组件。在功率管理期间,当处理器被置于某个低功率状态时,一个IVR 308的给定的功率层可以被掉电或断电,而另一IVR 308的另一功率层保持为活动的或完全供电的。
仍参考图5A,附加的组件可存在于处理器内,包括输入/输出接口313、另一接口314以及集成存储器控制器315。可以看出,这些组件中的每一个都可以由另一集成的电压调节器308X来供电。在一个实施例中,接口313可符合英特尔快速路径互连(QPI)协议,该协议在包括多个层的高速缓存一致性协议中提供点对点(PtP)链路,多个层包括物理层、链路层和协议层。接口314转而可符合外围组件互连快速(PCIeTM)规范,例如,PCI快速TM规范基础规范版本2.0(2007年1月17日发布)。
还示出了功率控制单元(PCU)312,其可包括用于针对处理器303执行功率管理操作的硬件、软件和/或固件。可以看出,PCU 312经由数字接口将控制信息提供给外部电压调节器316以使该外部电压调节器316生成合适的经调节的电压。PCU 312也经由另一数字接口将控制信息提供给多个IVR 308以控制所生成的操作电压(或使对应的IVR 308在低功率模式下被禁用)。在一些实施例中,被提供给多个IVR 308的控制信息可包括对应核304的功率状态。
在各实施例中,PCU 312可以包括用于执行基于硬件的功率管理的各种功率管理逻辑单元。此类功率管理可以是完全被处理器控制的(例如,通过各种处理器硬件,并且其可以是被工作负荷和/或功率、热或其他处理器约束触发的),并且/或者功率管理可以响应于外部源(诸如平台或管理功率管理源或系统软件)而被执行。
在一些实施例中,处理器303和/或核304中的任一个可实现如图1A所示的缕程逻辑125的一些或全部。此外,应理解诸如非核(uncore)逻辑和其他组件(诸如,内部存储器(例如,一个或多个层级的高速缓存存储器层次结构等))之类的附加组件可存在于处理器303内。
可在用于各种市场的处理器(包括服务器处理器、台式机处理器、移动处理器等)中实现多个实施例。现在参考图5B,所示为根据一个或多个实施例的多域处理器301的框图。如图5B的实施例中所示,处理器301包括多个域。具体而言,核域321可以包括多个核3200–320n,图形域324可以包括一个或多个图形引擎,并且还可以存在系统代理域330。在一些实施例中,系统代理域330能以独立于核域的独立频率执行,并且可在全部的时刻保持被供电以处理功率控制事件和功率管理,使得可以控制域321和324动态地进入和退出高功率状态和低功率状态。域321和324中的每一个能以不同的电压和/或功率操作。注意,虽然仅以三个域示出,但是应理解,本发明的范围不限于此方面,并且附加的域可存在于其他实施例中。例如,可以存在多个核域,其中每个核域包括至少一个核。
一般而言,除各种执行单元和附加的处理元件之外,每个核320还可包括多个低层级高速缓存。进而,各种核可彼此耦合,并且耦合到共享高速缓存存储器,该共享高速缓存存储器由末级高速缓存(LLC)3220–322n的多个单元形成。在各实施例中,可在多个核与图形引擎以及各种媒体处理电路之间共享LLC 322。如所示,环形互连323由此将多个核耦合到一起,并且在多个核320、图形域324和系统代理域330之间提供互连。在一个实施例中,互连323可以是核域321的部分。然而,在其他实施例中,该环形互连323可以是其自身域中的。
如进一步所示,系统代理域330可包括显示控制器332,该显示控制器332可提供对相关联的显示器的控制以及到它的接口。此外,系统代理域330可包括功率控制单元335以执行功率管理。
如图5B中进一步所示,处理器301还可包括集成存储器控制器(IMC)342,其可提供到诸如动态随机存取存储器(DRAM)之类的系统存储器的接口。可以存在多个接口3400–340n以实现处理器与其他电路之间的互连。例如,在一个实施例中,可提供至少一个直接媒体接口(DMI)接口以及一个或多个PCIeTM接口。更进一步地,为了在诸如附加的处理器或其他电路之类的其他代理之间提供通信,也可提供符合英特尔快速路径互连(QPI)协议的一个或多个接口。尽管在图3B的实施例中在该高层级示出,但是会理解,本发明的范围不限于该方面。
在一些实施例中,处理器301和/或核3200–320n可以实现图1A所示的缕程逻辑125。此外,应理解处理器301内可以存在附加组件。
现在参考图5C,所示为根据本发明的实施例的处理器302的框图。如图5C中所示,处理器302可以是包括多个核370a–370n的多核处理器。在一个实施例中,每一个此类核可以是独立的功率域,并且可配置成基于工作负荷进入和退出活动状态和/或最大性能状态。可经由互连375将各种核耦合到包括各种组件的系统代理或非核380。可以看出,非核380可包括共享高速缓存382,共享高速缓存382可以是末级高速缓存。此外,非核380可以包括集成存储器控制器384,用于例如经由存储器总线与系统存储器(图5C中未示出)通信。非核380还包括各种接口386a-386n和功率控制单元388,功率控制单元388可包括用于执行本文所述的功率管理技术的逻辑。
此外,通过接口386a-386n,可完成向诸如外围设备、大容量存储设备等的各种芯片外组件的连接。在一些实施例中,处理器302和/或核370a-370n中的任一个可以实现图1A所示的缕程逻辑125。
现在参照图6,所示为根据另一实施例的处理器核的微架构的框图。在图6的实施例中,核600可以是具有不同的微架构的低功率核,诸如设计为降低功耗的具有相对受限制的流水线深度的基于凌动TM(AtomTM)的处理器在一些实施例中,核600可以实现图1A所示的缕程逻辑125。
如所示,核600包括耦合以将指令提供到指令解码器615的指令高速缓存610。分支预测器605可以耦合到指令高速缓存610。注意,指令高速缓存610可以进一步耦合到高速缓存存储器的另一层级,诸如L2高速缓存(为了易于说明,图6中未示出)。进而,指令解码器615将经解码的指令提供到发出队列620以供存储和传递到给定的执行流水线。微代码ROM618耦合到指令解码器615。
浮点流水线630包括浮点寄存器堆632,其可包括具有给定位(诸如128、256或512位)的多个架构寄存器。流水线630包括浮点调度器634,用于调度指令以在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括ALU 635、混洗单元636和浮点加法器638。进而,在这些执行单元中生成的结果可以被往回提供到缓冲器和/或寄存器堆632的寄存器。当然,应理解虽然以这几个示例执行单元示出,但是在另一实施例中可以存在附加的或不同的浮点执行单元。
还可以提供整数流水线640。在所示的实施例中,流水线640包括整数寄存器堆642,其可包括具有给定位(诸如128或256位)的多个架构寄存器。流水线640包括整数调度器644,用于调度指令以在流水线的多个执行单元之一上执行。在所示的实施例中,此类执行单元包括ALU 645、移位器单元646和跳转执行单元648。进而,在这些执行单元中生成的结果可以被往回提供到缓冲器和/或寄存器堆642的寄存器。当然,应理解虽然以这几个示例执行单元示出,但是在另一实施例中可以存在附加的或不同的整数执行单元。
存储器执行调度器650可以调度存储器操作以在地址生成单元652中执行,地址生成单元652还耦合到TLB 654。如所示,这些结构可以耦合到数据高速缓存660,数据高速缓存660可以是L0和/或L1数据高速缓存,其进而耦合到高速缓存存储器层次结构的附加层级,包括L2高速缓存存储器。
为了提供对乱序执行的支持,可以提供分配器/重命名器670以作为重排序缓冲器680的附加,重排序缓冲器680配置为对被乱序地执行的指令进行重排序以供有序引退。虽然以图6的图示中的该特定流水线架构示出,但是应理解许多变型和替代是可能的。
注意,在具有非对称核的处理器中,诸如根据图5和6的微架构,由于功率管理的原因,可以在核之间动态地交换工作负荷,因为这些核虽然具有不同的流水线设计和深度,但是可以具有相同或相关的ISA。可以按照对用户应用(并且也可能对内核)透明的方式来执行此类动态核交换。
参照图7,所示为根据又一实施例的处理器核的微架构的框图。如图7所示,核700可以包括多级有序流水线以在非常低的功耗水平处执行。在一些实施例中,核700可以实现图1A所示的缕程逻辑125。
在实现中,核700可以包括配置为执行32位和64位代码的8级流水线。核700包括取出单元710,取出单元710配置为取出指令并将这些指令提供到解码单元715,解码单元715可以解码指令,例如具有给定ISA(诸如ARMv8 ISA)的宏指令。此外,注意队列730可以耦合到解码单元715以存储经解码的指令。经解码的指令被提供到发出逻辑725,其中可以将经解码的指令发出到多个执行单元中的给定的一个。
进一步参考图7,发出逻辑725可以将指令发出到多个执行单元中的一个。在所示的实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/向量单元750、双发出单元760和加载/存储单元770。可以将这些不同的执行单元的结果提供到写回单元780。应理解,虽然为了便于说明示出单个写回单元,但是在一些实现中,分开的多个写回单元可以与执行单元中的每一个相关联。此外,应理解,虽然图7中示出的单元中的每一个和逻辑被表示为在高层级,但是特定实现可以包括多个或不同的结构。可以在许多不同的最终产品(从移动设备扩展到服务器系统)中实现使用一个或多个具有如图7中的流水线的核来设计的处理器。
现在参考图8,所示为根据再一实施例的处理器核的微架构的框图。如图8所示,核800可以包括多级多发出乱序流水线以在非常高性能水平处执行(其可在高于图7的核700的功耗水平处发生)。在一些实施例中,核800可以实现图1A所示的缕程逻辑125。
在实现中,核800可以提供配置为执行32位和64位代码的15(或更大)级流水线。此外,流水线可以提供3路(或更大)宽度和3路(或更大)发出操作。核800包括取出单元810,取出单元810配置为取出指令并将这些指令提供到解码器/重命名器/分派器815,其可以对指令(例如,具有ARMv8指令集架构的宏指令)进行解码、对指令内的寄存器引用进行重命名、并且将指令(最终)分派到所选择的执行单元。经解码的指令可以存储在队列825中。注意,虽然为了便于说明在图8中示出单个队列结构,但是应理解分开的多个队列可以被提供给多个不同类型的执行单元中的每一个。
在图8中还示出发出逻辑830,存储在队列825中的经解码的指令可以被从发出逻辑830发出到所选择的执行单元。在特定实施例中,发出逻辑830还可以实现为与发出逻辑830耦合的多个不同类型的执行单元中的每一个具有单独的发出逻辑。
可以将经解码的指令发出到多个执行单元中的给定的一个。在所示的实施例中,这些执行单元包括一个或多个整数单元835、乘法单元840、浮点/向量单元850、分支单元860和加载/存储单元870。在实施例中,浮点/向量单元850可以配置为处理128或256位的SIMD或向量数据。此外,浮点/向量执行单元850可以执行IEEE-754双精度浮点操作。可以将这些不同的执行单元的结果提供到写回单元880。注意,在一些实现中,分开的写回单元可以与执行单元中的每一个相关联。此外,应理解,虽然图8中示出的单元中的每一个和逻辑被表示为在高层级,但是特定实现可以包括多个或不同的结构。
注意,在具有非对称核的处理器中,诸如根据图7和8的微架构,由于功率管理的原因,可以动态地交换工作负荷,因为这些核虽然具有不同的流水线设计和深度,但是可以具有相同或相关的ISA。可以按照对用户应用(并且也可能对内核)透明的方式来执行此类动态核交换。
可以在许多不同的最终产品(从移动设备扩展到服务器系统)中实现设计为使用一个或多个具有图5-8中的任意一个或多个中的流水线的核的处理器。现在参考图9,所示是根据本发明的另一实施例的处理器的框图。在图9的实施例中,芯片上系统(SoC)900可以包括多个域,可控制其中的每一个域在独立的操作电压和操作频率下进行操作。在一些实施例中,SoC 900可以实现图1A所示的缕程逻辑125。
在图9所示的高层级视图中,处理器900包括多个核单元9100-910n。每一个核单元都可包括一个或多个处理器核、一个或多个高速缓存存储器和其他电路。每一个核单元910都可支持一个或多个指令集(例如,x86指令集(具有与较新版本一起添加的一些扩展);MIPS指令集;ARM指令集(具有诸如NEONe的可选附加扩展))或其他指令集或其组合。注意,核单元中的一些可以是异构资源(例如,具有不同设计)。此外,每一个此类核可耦合到高速缓存存储器(未示出),在实施例中,该高速缓存存储器可以是共享层级(L2)高速缓存存储器。可使用非易失性存储器930来存储各种程序和其他数据。例如,可以使用该存储设备来存储微代码的至少多个部分、诸如BIOS之类的引导信息、其他系统软件等。
每一个核单元910还可包括诸如总线接口单元之类的接口,其用于实现向处理器的附加电路的互连。在实施例中,每一个核单元910都耦合到一致性结构,该一致性结构可充当进而耦合到存储器控制器935的主高速缓存一致性管芯上互连。存储器控制器935转而控制与诸如DRAM之类的存储器(为了易于说明,在图9中未示出)的通信。
除这些核单元之外,附加的处理器引擎也存在于该处理器内,包括至少一个图形单元920,该图形单元920可包括用于执行图形处理以及可能在图形处理器上执行通用操作(所谓的GPGPU操作)的一个或多个图形处理单元(GPU)。此外,可以存在至少一个图像信号处理器925。信号处理器925可配置成用于处理从一个或多个捕捉设备(无论是SoC内部的还是芯片外的)接收到的传入的图像数据。
也可以存在其他加速器。在图9的示图中,视频译码器950可执行译码操作,包括对于视频信息的编码和解码,例如,提供对高清晰度视频内容的硬件加速支持。可进一步提供显示控制器955以加速显示操作,包括提供对系统的内部和外部显示器的支持。此外,可以存在安全处理器945,其用于执行诸如安全引导操作、各种加密操作等的安全操作。
多个单元中的每一个可以经由功率管理器940控制其功耗,功率管理器940可以包括用于执行本文中所描述的各种功率管理技术的控制逻辑。
在一些实施例中,SoC 900还可包括耦合到一致性结构(各种外围设备可耦合到该一致性结构)的非一致性结构。一个或多个接口960a-960d实现与一个或多个芯片外设备的通信。此类通信可以根据各种通信协议,诸如,PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI以及其他类型的通信协议。尽管在图9的实施例中在该高层级示出,但是会理解,本发明的范围不限于该方面。
现在参考图10,所示为代表性SoC的框图。在所示实施例中,SoC 1000可以是针对低功率操作所配置的多核SoC,该多核SoC待优化以便结合进智能电话或诸如平板计算机或其他便携式计算设备之类的其他低功率设备中。在一些实施例中,SoC 1000可以实现图1A所示的缕程逻辑125。
如图10中所示,SoC 1000包括具有多个第一核10120–10123的第一核域1010。在示例中,这些核可以是诸如有序核之类的低功率核。在一个实施例中,可将这些第一核实现为ARM Cortex A53核。这些核转而耦合到核域1010的高速缓存存储器1015。此外,SoC 1000包括第二核域1020。在图10的示图中,第二核域1020具有多个第二核10220–10223。在示例中,这些核可以是比第一核1012消耗更高功耗的核。在实施例中,这些第二核可以是可实现为ARM Cortex A57核的乱序核。这些核转而耦合到核域1020的高速缓存存储器1025。注意,虽然图10中所示的示例在每个域中包括4个核,但是会理解,在其他示例中,更多或更少的核可存在于给定的域中。
进一步参考图10,也提供图形域1030,其可包括一个或多个图形处理单元(GPU),这些图形处理单元配置成用于独立地执行例如由核域1010和1020中的一个或多个核所提供的图形工作负荷。作为示例,除了提供图形和显示渲染操作之外,GPU域1030可以用于提供对各种屏幕尺寸的显示支持。
如所示,各种域耦合至一致性互连1040,在实施例中,该一致性互连可以是进而耦合至集成存储器控制器1050的高速缓存一致性互连结构。一致性互连1040可包括共享高速缓存存储器,诸如,L3高速缓存等一些示例。在实施例中,存储器控制器1050可以是用于提供与芯片外存储器进行的通信的多个通道(诸如,DRAM的多个通道(在图10中为了易于说明,没有示出))的直接存储器控制器。
在不同的示例中,核域的数量可以变化。例如,对于适于结合进移动计算设备的低功率SoC,可以存在诸如图10中所示的有限数量的核域。更进一步地,在此类低功率SoC中,包括较高功率核的核域1020可具有较少数量的此类核。例如,在一个实现中,可提供两个核1022以允许以降低的功耗等级进行的操作。此外,也可将不同的核域耦合到中断控制器以启用在不同域之间的工作负荷的动态交换。
在另一些实施例中,可以存在更大量的核域以及附加可选的IP逻辑,如此,可按比例将SoC放大到更高的性能(和功率)等级,以便结合进诸如台式机、服务器、高性能计算系统、基站等的其他计算设备中。作为一个此类示例,可提供各自具有给定数量的乱序核的4个核域。更进一步地,除了可选的GPU支持(作为示例,其可采取GPGPU的形式)之外,还可提供用于提供对特定功能(例如,web服务、网络处理、交换等)的优化的硬件支持的一个或多个加速器。此外,可以存在用于将此类加速器耦合到多个芯片外组件的输入/输出接口。
现在参考图11,所示为另一示例SoC 1100的框图。在一些实施例中,SoC 1100可以实现图1A所示的缕程逻辑125。
在图11的实施例中,SoC 1100可包括用于允许多媒体应用、通信和其他功能的高性能的各种电路。由此,SoC 1100适于结合进多种便携式和其他设备,诸如,智能电话、平板计算机、智能电视等。在所示示例中,SoC 1100包括中央处理器单元(CPU)域1110。在实施例中,多个单独的处理器核可存在于CPU域1110中。作为一个示例,CPU域1110可以是具有4个多线程核的四核处理器。此类处理器可以是同构或异构处理器,例如,低功率和高功率处理器核的混合。
进而,提供GPU域1120以在一个或多个GPU中执行高级图形处理,从而处理图形并计算API。DSP单元1130可提供一个或多个低功率DSP,这些低功率DSP除了处理可在多媒体指令的执行期间发生的高级计算之外,还处理诸如音乐回放、音频/视频等的低功率多媒体应用。通信单元1140转而可包括用于经由各种无线协议提供连接性的各种组件,各种无线协议诸如蜂窝通信(包括3G/4G LTE)、诸如蓝牙TM之类的无线局域技术、IEEE 802.11等。
更进一步地,可使用多媒体处理器1150来执行对高清晰度视频和音频内容的捕捉和回放,包括对用户姿势的处理。传感器单元1160可包括多个传感器和/或用于对接到存在于给定平台中的各种芯片外传感器的传感器控制器。可向图像信号处理器1170提供一个或多个分开的ISP,其用于参照从平台的一个或多个相机(包括静止相机和视频相机)捕捉到的内容来执行图像处理。
显示处理器1180可提供对向给定像素密度的高清晰度显示器的连接的支持,包括无线地传递内容以在此类显示器上回放的能力。更进一步地,位置单元1190可包括具有对多个GPS星座图的支持的GPS接收机,以便向应用提供使用此类GPS接收机所获取的高精度定位信息。会理解,虽然在图11的示例中以该特定的一组组件示出,但是许多变型和替代是可能的。
现在参考图12,所示为可与多个实施例一起使用的示例系统1200的框图。在一些实施例中,系统1200的组件可以实现图1A所示的缕程逻辑125。
如所见,系统1200可以是智能电话或其他无线通信器。基带处理器1205被配置成执行关于会从该系统传输或由该系统接收的通信信号的各种信号处理。进而,基带处理器1205被耦合到应用处理器1210,该应用处理器1210可以是系统的主CPU,以执行除了诸如许多公知的社交媒体与多媒体应用的用户应用之外的OS以及其他系统软件。应用处理器1210可以进一步被配置成为该设备执行各种其他计算操作。
进而,应用处理器1210可以耦合到用户接口/显示器1220,例如,触摸屏显示器。此外,应用处理器1210可耦合至包括非易失性存储器(即,闪存1230)和系统存储器(即,动态随机存取存储器(DRAM)1235)的存储器系统。如进一步所示,应用处理器1210进一步耦合至诸如可记录视频和/或静止图像的一个或多个图像捕捉设备之类的捕捉设备1240。
仍然参考图12,包括订户身份模块和可能的安全存储设备和加密处理器的通用集成电路卡(UICC)1240也耦合到应用处理器1210。系统1200可以进一步包括可以耦合到应用处理器1210的安全处理器1250。多个传感器1225可以耦合到应用处理器1210以实现各种感测到的信息的输入,诸如加速度计与其他环境信息。音频输出设备1295可提供接口,以便例如以语音通信、播放的或流音频数据等的形式输出声音。
如进一步所示出的,提供近场通信(NFC)非接触式接口1260,其经由NFC天线1265在NFC近场中通信。尽管图12中示出分离的天线,请理解在一些实现中,可以提供一根天线或不同组的天线以实现各种无线功能。
功率管理集成电路(PMIC)1215耦合到应用处理器1210以执行平台级别功率管理。为此,PMIC 1215可以根据需要发出功率管理请求至应用处理器1210以进入某些低功率状态。此外,基于平台约束,PMIC 1215也可以控制系统1200的其他组件的功率级别。
为了实现传送与接收通信,可以在基带处理器1205与天线1290之间耦合各种电路。具体而言,可以存在射频(RF)收发机1270与无线局域网(WLAN)收发机1275。一般而言,可以根据诸如3G或4G无线通信协议(诸如根据码分多址(CDMA)、全球移动通信系统(GSM)、长期演进(LTE)或其他协议)的给定的无线通信协议,使用RF收发机1270接收并传送无线数据和呼叫。此外,可以存在GPS传感器1280。也可以提供诸如无线电信号(例如,AM/FM与其他信号)的接收与传送的其他无线通信。此外,经由WLAN收发机1275,也能够实现诸如根据蓝牙TM标准或IEEE 802.11标准(诸如,IEEE 802.11a/b/g/n)的本地无线通信。
现在参考图13,所示为可与多个实施例一起使用的另一示例系统1300的框图。在图13的示图中,系统1300可以是诸如平板计算机、2:1平板、平板手机或其他转换式或独立式平板系统之类的移动低功率系统。如所示出的那样,存在SoC 1310,并且SoC 1310可配置成作为设备的应用处理器进行操作。在一些实施例中,SoC 1310可以实现图1A所示的缕程逻辑125。
各种设备可耦合至SoC 1310。在所示示图中,存储器子系统包括耦合至SoC 1310的闪存1340和DRAM 1345。此外,触摸面板1320耦合至SoC 1310以提供显示能力和经由触摸的用户输入,包括在触摸面板1320的显示器上提供虚拟键盘。为了提供有线网络连接性,SoC 1310耦合至以太网接口1330。外围中枢1325耦合至SoC 1310以启用与各种外围设备的对接,诸如,可通过各种端口或其他连接器中的任何一个而被耦合到系统1300。
除了SoC 1310中的内部功率管理电路和功能之外,PMIC 1380也耦合至SoC 1310以提供基于平台的功率管理,例如,基于该系统是由电池1390供电还是经由交流适配器1395由交流电供电。除了该基于功率源的功率管理之外,PMIC 1380还可执行基于环境和使用条件的平台功率管理活动。更进一步地,PMIC 1380可将控制和状态信息传递给SoC 1310以引起SoC 1310中的各种功率管理动作。
仍然参考图13,为了提供无线能力,将WLAN单元1350耦合至SoC 1310,并转而耦合至天线1355。在各种实现中,WLAN单元1350可根据一个或多个无线协议(包括IEEE 802.11协议、蓝牙TM协议或任何其他无线协议)提供通信。
如进一步所示出的那样,多个传感器1360可耦合至SoC 1310。这些传感器可包括各种加速度计、环境和其他传感器,包括用户姿势传感器。最后,将音频编解码器1365耦合至SoC 1310以向音频输出设备1370提供接口。当然会理解,虽然以图13中的该特定实现示出,但是许多变型和替代是可能的。
现在参考图14,所示为诸如笔记本、超极本TM或其他小形状因数系统的代表性计算机系统1400的框图。在一个实施例中,处理器1410包括微处理器、多核处理器、多线程处理器、超低电压处理器、嵌入式处理器,或其他已知处理元件。在所示出的实现中,处理器1410充当主处理单元以及用于与系统1400的各种组件中的许多组件进行通信的中央枢纽。作为一个示例,处理器1410被实现为SoC。在一些实施例中,处理器1410可以实现图1A所示的缕程逻辑125。
在一个实施例中,处理器1410与系统存储器1415通信。作为示例性示例,系统存储器1415被实现为经由多个存储器设备或模块来提供给定量的系统存储器。
为提供对诸如数据、应用、一个或多个操作系统等的信息的持续的存储,大容量存储设备1420也可耦合到处理器1410。在各种实施例中,为了实现更薄和更轻的系统设计以及为了改善系统响应,该大容量存储设备可以经由SSD被实现,或者该大容量存储设备可以主要使用具有较小量的SSD存储设备的硬盘驱动器(HDD)来实现,SSD存储设备充当SSD高速缓存,以在掉电事件期间实现对上下文状态和其他此类信息的非易失性存储,从而在系统活动重新启动时,快速上电可以发生。图14还示出,闪存设备1422可以例如经由串行外围接口(SPI)耦合到处理器1410。该闪存设备可以提供对系统软件(包括基本输入/输出软件(BIOS)以及系统的其他固件)的非易失性存储。
系统1400内可以存在各种输入/输出(I/O)设备。图14的实施例中具体示出显示器1424,显示器1424可以是进一步提供触摸屏1425的高清晰度LCD或LED面板。在一个实施例中,显示器1424可以经由显示互连耦合到处理器1410,该显示互连可实现为高性能图形互连。触摸屏1425可以经由另一互连(在实施例中,可以是I2C互连)耦合到处理器1410。如图14中进一步所示,除触摸屏1425之外,经由触摸的用户输入也可以经由触板1430进行,触板1430可以配置在机架内,并且还可以耦合到与触摸屏1425相同的I2C互连。
出于感知计算和其他目的,各种传感器可以存在于系统内,并且能以不同的方式耦合到处理器1410。某些惯性传感器和环境传感器可以通过传感器中枢1440(例如,经由I2C互连)耦合到处理器1410。在图14示出的实施例中,这些传感器可以包括加速度计1441、环境光传感器(ALS)1442、罗盘1443以及陀螺仪1444。其他环境传感器可以包括一个或多个热传感器1446,在一些实施例中,这些热传感器1446经由系统管理总线(SMBus)总线耦合到处理器1410。
图14中还可见,各种外围设备可以经由低引脚计数(LPC)互连耦合到处理器1410。在所示的实施例中,各种组件可以通过嵌入式控制器1435耦合。此类组件可包括键盘1436(例如,经由PS2接口耦合)、风扇1437以及热传感器1439。在一些实施例中,触板1430还可以经由PS2接口耦合到EC 1435。另外,安全处理器(诸如,符合可信计算组(TCG)TPM规范版本1.2(2003年10月2日)的可信平台模块(TPM)1438)也可以经由此LPC互连来耦合到处理器1410。
系统1400能以各种方式(包括以无线方式)与外部设备通信。在图14所示出的实施例中,存在各种无线模块,其中的每一个无线模块都可以对应于针对特定的无线通信协议而配置的无线电装置。用于在短距离(诸如,近场)内进行无线通信的一种方式可以经由NFC单元1445,在一个实施例中,该NFC单元1445可以经由SMBus与处理器1410进行通信。注意,经由该NFC单元1445,彼此紧邻的设备可以进行通信。
如图14中进一步所示,附加的无线单元可包括其他短距离无线引擎,包括WLAN单元1450和蓝牙单元1452。通过使用WLAN单元1450,可以实现符合给定的IEEE 802.11标准的Wi-FiTM通信,而经由蓝牙单元1452,可以进行利用蓝牙协议的短距离通信。这些单元可以经由例如USB链路或通用异步接收发送器(UART)链路来与处理器1410通信。或者,这些单元可以经由根据PCIeTM协议或另一个此类协议(诸如,串行数据输入/输出(SDIO)标准)的互连来耦合到处理器1410。
另外,无线广域通信(例如,根据蜂窝式或其他无线广域协议)可以经由WWAN单元1456进行,该WWAN单元1456进而可以耦合到订户身份模块(SIM)1457。另外,为了允许接收并使用位置信息,还可以存在GPS模块1455。注意,在图14中示出的实施例中,WWAN单元1456和诸如相机模块1454的集成捕捉设备可以经由给定的USB协议(诸如USB 2.0或3.0链路)或UART或I2C协议进行通信。
集成相机模块1454可以被纳入到盖子中。为了提供音频输入和输出,可以经由数字信号处理器(DSP)1460来实现音频处理器,DSP 1460可以经由高清晰度音频(HDA)链路来耦合到处理器1410。类似地,DSP 1460可以与集成的编码器/解码器(编解码器)和放大器1462进行通信,集成的编解码器和放大器1462进而可以耦合到可以在机架内实现的输出扬声器1463。类似地,放大器和编解码器1462可以耦合到话筒1465以从话筒1465接收音频输入,在实施例中,话筒1465可以经由双阵列话筒(诸如数字话筒阵列)被实现,以提供高质量音频输入来实现对系统内的各种操作的语音激活的控制。另外注意,可以将音频输出从放大器/编解码器1462提供到头戴式耳机插孔1464。虽然在图14的实施例中利用这些特定组件示出,但应理解本发明的范围不限于此方面。
可在许多不同的系统类型中实现实施例。现在参考图15,所示为根据本发明的实施例的系统的框图。如图15所示,多处理器系统1500是点对点互连系统,且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。如图15所示,处理器1570和1580中的每一个可以是包括第一和第二处理器核(即处理器核1574a和1574b以及处理器核1584a和1584b)的多核处理器,尽管这些处理器中可能存在更多核。这些处理器核中的每一个可以实现图1A所示的缕程逻辑125。
仍参考图15,第一处理器1570还包括存储器控制器中枢(MCH)1572和点对点(P-P)接口1576和1578。类似地,第二处理器1580包括MCH 1582和P-P接口1586与1588。如图15所示,MCH 1572和1582将多个处理器耦合到相应的存储器(即,存储器1532和存储器1534),这些存储器可以是本地附连到相应处理器的系统存储器(例如,DRAM)的多个部分。第一处理器1570与第二处理器1580可以分别经由P-P互连1562与1564耦合到芯片组1590。如图15中所示,芯片组1590包括P-P接口1594和1598。
此外,芯片组1590包括通过P-P互连1539将芯片组1590与高性能图形引擎1538耦合的接口1592。进而,芯片组1590可以经由接口1596被耦合到第一总线1516。如图15所示,各种输入/输出(I/O)设备1514以及总线桥接器1518可耦合到第一总线1516,总线桥接器1518将第一总线1516耦合到第二总线1520。在一个实施例中,各种设备可耦合到第二总线1520,包括例如,键盘/鼠标1522、通信设备1526以及诸如可包括代码1530的盘驱动器或者其他大容量存储设备之类的数据存储单元1528。此外,音频I/O1524可以被耦合到第二总线1520。可将多个实施例合并到其他类型的系统中,包括诸如智能蜂窝电话、平板计算机、上网本、超极本TM等之类的移动设备。
实施例可以实现在代码中,并且可以存储在非暂态存储介质中,该非暂态存储介质具有存储于其上的指令,该指令可以被用来对系统编程以执行指令。存储介质可以包括但不限于,任何类型的盘,包括软盘、光盘、固态驱动器(SSD)、紧致盘只读存储器(CD-ROM)、紧致盘可重写(CD-RW)以及磁光盘;半导体器件,诸如,只读存储器(ROM)、诸如动态随机存取存储器(DRAM)与静态随机存取存储器(SRAM)的随机存取存储器(RAM)、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM);磁卡或光卡;或适用于存储电子指令的任何其他类型的介质。
以下句子和/或示例涉及进一步的实施例。
在一个示例中,用于处理缕程的处理器包括多个核。每个核可包括缕程逻辑以用于:对于多个缕程的每个缕程,取出与缕程唯一相关联的指令组,其中指令组是多个指令组中的一个,其中多个指令组通过根据指令关键度划分应用程序的指令而获得;以及按照应用程序的原始顺序引退指令组。
在示例中,缕程内的取出顺序被限制为应用程序的原始顺序,并且其中跨多个缕程的取出顺序不限于应用程序的原始顺序。
在示例中,缕程逻辑进一步用于将指令组分配给窗口缓冲器的第一分区,其中窗口缓冲器被分成与多个缕程相关联的多个分区。
在示例中,每个核包括多个处理路,并且其中多个处理路的每个处理路用于执行多个缕程中的唯一一个缕程。
在示例中,多个指令组的每个指令组与不同指令关键度水平相关联。
在示例中,多个指令组由缕程编译器生成,其中缕程编译器估计应用程序中的每个指令的关键度水平。在示例中,缕程编译器将应用程序编译为包括指示应用程序中的每个指令的关键度水平的信息的二进制代码,并且其中缕程逻辑通过使用指示关键度水平的信息取出指令组。
在另一示例中,用于处理缕程的方法包括:取出要在处理器核的多个缕程的第一缕程中执行的第一指令子集,其中第一指令子集是应用的多个指令子集中的一个并且与第一指令关键度水平相关联,其中多个指令子集中的每一个在多个缕程的唯一缕程中执行并且与唯一的指令关键度水平相关联;在多个缕程的第一缕程中执行第一指令子集的指令;以及按照应用的程序顺序引退第一指令子集的指令。
在示例中,方法还包括:取出要在多个缕程的第二缕程中执行的第二指令子集,其中第二指令子集被包括在应用的多个指令子集中并且与第二指令关键度水平相关联;在多个缕程的第二缕程中执行第二指令子集的指令;以及按照应用的程序顺序引退第二指令子集的指令。
在示例中,方法还包括将第一指令子集分配给窗口缓冲器的第一分区,其中窗口缓冲器被分成与多个缕程相关联的多个分区。在示例中,多个分区中的每一个包括相等数量的条目,并且其中被指派给每个指令子集的指令的百分比随着指令子集的指令关键度水平降低而增大。在示例中,窗口缓冲器是从重排序缓冲器、加载缓冲器和存储缓冲器中选择的一个。
在示例中,方法还包括由缕程编译器确定应用的每个指令的关键度信息;以及基于关键度信息将每个指令指派给指令子集。在示例中,方法还包括由缕程编译器通过使用应用的每个指令的关键度信息将应用程序编译为二进制代码。
在另一示例中,机器可读介质具有存储于其上的数据,数据如果被至少一个机器使用,使该至少一个机器制造至少一个集成电路以执行上述示例中的任一项的方法。
在另一示例中,用于处理指令的装置配置为执行上述示例中的任一项的方法。
在另一示例中,用于处理缕程的系统包括处理器和耦合到处理器并存储指令的存储器。指令可由处理器执行以用于:确定应用程序中的每个指令的关键度信息;基于关键度信息将每个指令指派给多个指令组中的一个;确定多个指令组之间的数据依赖关系;以及通过使用关键度信息和数据依赖关系将应用程序变换为经编译的程序。
在示例中,处理器包括窗口缓冲器,其中窗口缓冲器被分成多个分区。在示例中,多个分区中的每一个与多个指令组中的一个唯一相关联。在示例中,多个分区中的每一个包括相等数量的条目,并且其中被指派给每个指令组的指令的百分比随着指令组的关键度水平降低而增大。在示例中,窗口缓冲器是从重排序缓冲器、加载缓冲器和存储缓冲器中选择的一个。
在示例中,经编译的程序为每个指令包括指示指令的原始程序顺序的信息。
在示例中,多个缕程中的每个缕程用于执行多个指令组的唯一指令组。
在示例中,处理器用于:按照缕程顺序取出并分配每个指令;以及跨多个缕程按照程序顺序引退每个指令。
会理解,上述示例的各种组合是可能的。
实施例可以被用于许多不同类型的系统中。例如,在一个实施例中,可以将通信设备布置为用于执行本文所述的各种方法与技术。当然,本发明的范围不限于通信设备,相反,其他实施例可以涉及用于处理指令的其他类型的装置,或一个或多个机器可读介质,该机器可读介质包括指令,响应于在计算设备上执行这些指令,这些指令使该设备执行本文所述的方法与技术中的一个或多个。
在本说明书通篇中对“一个实施例”或“一实施例”的引用意味着结合该实施例描述的特定特征、结构或特性包括在本发明包含的至少一个实现中。因此,短语“一个实施例”或“在一实施例中”的出现不一定指代同一实施例。此外,特定特征、结构或特性可按照与所说明的特定实施例不同的其他适当形式来创立,而且所有此类形式可涵盖在本申请的权利要求中。
虽然已参照有限数量的实施例描述了本发明,但是本领域技术人员将从中领会很多修改和变型。所附权利要求旨在涵盖落入本发明的真实精神与范围的所有此类修改与变型。
Claims (20)
1.一种处理器,包括:
多个核,每个核包括缕程逻辑以用于:
对于多个缕程的每个缕程,取出与所述缕程唯一相关联的指令组,其中所述指令组是多个指令组中的一个,其中所述多个指令组通过根据指令关键度划分应用程序的指令而获得;以及
按照所述应用程序的原始顺序引退所述指令组。
2.如权利要求1所述的处理器,其特征在于,缕程内的取出顺序被限制为所述应用程序的所述原始顺序,并且其中跨多个缕程的取出顺序不限于所述应用程序的所述原始顺序。
3.如权利要求1所述的处理器,其特征在于,所述缕程逻辑进一步用于将所述指令组分配给窗口缓冲器的第一分区,其中所述窗口缓冲器被分成与所述多个缕程相关联的多个分区。
4.如权利要求1所述的处理器,其特征在于,每个核包括多个处理路,并且其中所述多个处理路的每个处理路用于执行所述多个缕程中的唯一一个缕程。
5.如权利要求1所述的处理器,其特征在于,多个指令组的每个指令组与不同的指令关键度水平相关联。
6.如权利要求1所述的处理器,其特征在于,所述多个指令组由缕程编译器生成,其中所述缕程编译器估计所述应用程序中的每个指令的关键度水平。
7.如权利要求6所述的处理器,其特征在于,所述缕程编译器将所述应用程序编译为包括指示所述应用程序中的每个指令的关键度水平的信息的二进制代码,并且其中所述缕程逻辑通过使用指示所述关键度水平的信息取出所述指令组。
8.一种方法,包括:
取出要在处理器核的多个缕程的第一缕程中执行的第一指令子集,其中所述第一指令子集是应用的多个指令子集中的一个并且与第一指令关键度水平相关联,其中所述多个指令子集中的每一个在所述多个缕程的唯一缕程中执行并且与唯一的指令关键度水平相关联;
在所述多个缕程的所述第一缕程中执行所述第一指令子集的指令;以及
按照所述应用的程序顺序引退所述第一指令子集的指令。
9.如权利要求8所述的方法,进一步包括:
取出要在所述多个缕程的第二缕程中执行的第二指令子集,其中所述第二指令子集被包括在所述应用的所述多个指令子集中并且与第二指令关键度水平相关联;
在所述多个缕程的所述第二缕程中执行所述第二指令子集的指令;以及
按照所述应用的所述程序顺序引退所述第二指令子集的指令。
10.如权利要求8所述的方法,进一步包括:
将所述第一指令子集分配给窗口缓冲器的第一分区,其中所述窗口缓冲器被分成与所述多个缕程相关联的多个分区。
11.如权利要求10所述的方法,其特征在于,所述多个分区中的每一个包括相等数量的条目,并且其中被指派给每个指令子集的指令的百分比随着所述指令子集的指令关键度水平降低而增大。
12.如权利要求8所述的方法,进一步包括:
由缕程编译器确定所述应用的每个指令的关键度信息;以及
基于所述关键度信息将每个指令指派给指令子集。
13.如权利要求12所述的方法,进一步包括:
由所述缕程编译器通过使用所述应用的每个指令的所述关键度信息将所述应用程序编译为二进制代码。
14.一种系统,包括:
处理器;以及
存储器,耦合到所述处理器并存储指令,所述指令可由所述处理器执行以用于:
确定应用程序中的每个指令的关键度信息;
基于所述关键度信息将每个指令指派给多个指令组中的一个;
确定所述多个指令组之间的数据依赖关系;以及
通过使用所述关键度信息和所述数据依赖关系将所述应用程序变换为经编译的程序。
15.如权利要求14所述的系统,其特征在于,所述处理器包括窗口缓冲器,其中所述窗口缓冲器被分成多个分区。
16.如权利要求15所述的系统,其特征在于,多个分区中的每一个与所述多个指令组中的一个唯一相关联。
17.如权利要求15所述的系统,其特征在于,所述多个分区中的每一个包括相等数量的条目,并且其中被指派给每个指令组的指令的百分比随着所述指令组的关键度水平降低而增大。
18.如权利要求14所述的系统,其特征在于,所述经编译的程序为每个指令包括指示指令的原始程序顺序的信息。
19.如权利要求14所述的系统,其特征在于,所述多个缕程中的每个缕程用于执行所述多个指令组的唯一指令组。
20.如权利要求14所述的系统,其特征在于,所述处理器用于:
按照缕程顺序取出并分配每个指令;以及
跨所述多个缕程按照程序顺序引退每个指令。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IB2015/001148 WO2016193774A1 (en) | 2015-06-01 | 2015-06-01 | Multi-core processor for execution of strands of instructions grouped according to criticality |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107567614A true CN107567614A (zh) | 2018-01-09 |
CN107567614B CN107567614B (zh) | 2022-05-24 |
Family
ID=53879723
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580079533.6A Expired - Fee Related CN107567614B (zh) | 2015-06-01 | 2015-06-01 | 用于对根据关键度被分组的指令的缕程的执行的多核处理器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20170161075A1 (zh) |
EP (1) | EP3304291A1 (zh) |
CN (1) | CN107567614B (zh) |
WO (1) | WO2016193774A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110806898A (zh) * | 2019-05-22 | 2020-02-18 | 成都海光集成电路设计有限公司 | 处理器及指令操作方法 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US10241794B2 (en) | 2016-12-27 | 2019-03-26 | Intel Corporation | Apparatus and methods to support counted loop exits in a multi-strand loop processor |
US20180181398A1 (en) * | 2016-12-28 | 2018-06-28 | Intel Corporation | Apparatus and methods of decomposing loops to improve performance and power efficiency |
US10055526B1 (en) * | 2017-06-27 | 2018-08-21 | Intel Corporation | Regional design-dependent voltage control and clocking |
US10671147B2 (en) * | 2017-12-18 | 2020-06-02 | Facebook, Inc. | Dynamic power management for artificial intelligence hardware accelerators |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070162723A1 (en) * | 2006-01-11 | 2007-07-12 | Sun Microsystems, Inc. | Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor |
US7962724B1 (en) * | 2007-09-28 | 2011-06-14 | Oracle America, Inc. | Branch loop performance enhancement |
CN102439561A (zh) * | 2009-04-29 | 2012-05-02 | 超威半导体公司 | 在同步多线程机上使用比较和传送指令的可靠执行 |
US20130339679A1 (en) * | 2012-06-15 | 2013-12-19 | Intel Corporation | Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor |
CN103907090A (zh) * | 2011-11-10 | 2014-07-02 | 甲骨文国际公司 | 降低用于支持未命中先行的硬件成本 |
US20150046684A1 (en) * | 2013-08-07 | 2015-02-12 | Nvidia Corporation | Technique for grouping instructions into independent strands |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4847755A (en) * | 1985-10-31 | 1989-07-11 | Mcc Development, Ltd. | Parallel processing method and apparatus for increasing processing throughout by parallel processing low level instructions having natural concurrencies |
US5471593A (en) * | 1989-12-11 | 1995-11-28 | Branigin; Michael H. | Computer processor with an efficient means of executing many instructions simultaneously |
GB0012352D0 (en) * | 2000-05-22 | 2000-07-12 | Northern Telecom Ltd | Reliable hardware support for the use of formal languages in high assurance systems |
GB0215029D0 (en) * | 2002-06-28 | 2002-08-07 | Critical Blue Ltd | Strand based execution |
EP1378824A1 (en) * | 2002-07-02 | 2004-01-07 | STMicroelectronics S.r.l. | A method for executing programs on multiple processors and corresponding processor system |
US20040064678A1 (en) * | 2002-09-30 | 2004-04-01 | Black Bryan P. | Hierarchical scheduling windows |
US20090150890A1 (en) * | 2007-12-10 | 2009-06-11 | Yourst Matt T | Strand-based computing hardware and dynamically optimizing strandware for a high performance microprocessor system |
US7917876B1 (en) * | 2007-03-27 | 2011-03-29 | Xilinx, Inc. | Method and apparatus for designing an embedded system for a programmable logic device |
CN101715576B (zh) * | 2007-06-19 | 2013-04-17 | 富士通株式会社 | 运算处理装置 |
US8578387B1 (en) * | 2007-07-31 | 2013-11-05 | Nvidia Corporation | Dynamic load balancing of instructions for execution by heterogeneous processing engines |
US8789031B2 (en) * | 2007-09-18 | 2014-07-22 | Intel Corporation | Software constructed strands for execution on a multi-core architecture |
US10002019B2 (en) * | 2009-05-11 | 2018-06-19 | International Business Machines Corporation | System and method for assigning a transaction to a serialized execution group based on an execution group limit for parallel processing with other execution groups |
US8539494B2 (en) * | 2011-01-31 | 2013-09-17 | Oracle International Corporation | Method and system for scheduling threads |
US20140208074A1 (en) * | 2012-03-30 | 2014-07-24 | Boris A. Babayan | Instruction scheduling for a multi-strand out-of-order processor |
US9665375B2 (en) * | 2012-04-26 | 2017-05-30 | Oracle International Corporation | Mitigation of thread hogs on a threaded processor and prevention of allocation of resources to one or more instructions following a load miss |
WO2014102563A1 (en) * | 2012-12-26 | 2014-07-03 | Intel Corporation | Select logic using delayed reconstructed program order |
WO2014142704A1 (en) * | 2013-03-15 | 2014-09-18 | Intel Corporation | Methods and apparatus to compile instructions for a vector of instruction pointers processor architecture |
EP3123304B1 (en) * | 2014-03-27 | 2019-08-14 | Intel Corporation | Instruction and logic for sorting and retiring stores |
-
2015
- 2015-06-01 EP EP15751066.0A patent/EP3304291A1/en not_active Withdrawn
- 2015-06-01 WO PCT/IB2015/001148 patent/WO2016193774A1/en active Application Filing
- 2015-06-01 US US15/021,442 patent/US20170161075A1/en not_active Abandoned
- 2015-06-01 CN CN201580079533.6A patent/CN107567614B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070162723A1 (en) * | 2006-01-11 | 2007-07-12 | Sun Microsystems, Inc. | Technique for reducing traffic in an instruction fetch unit of a chip multiprocessor |
US7962724B1 (en) * | 2007-09-28 | 2011-06-14 | Oracle America, Inc. | Branch loop performance enhancement |
CN102439561A (zh) * | 2009-04-29 | 2012-05-02 | 超威半导体公司 | 在同步多线程机上使用比较和传送指令的可靠执行 |
CN103907090A (zh) * | 2011-11-10 | 2014-07-02 | 甲骨文国际公司 | 降低用于支持未命中先行的硬件成本 |
US20130339679A1 (en) * | 2012-06-15 | 2013-12-19 | Intel Corporation | Method and apparatus for reducing area and complexity of instruction wakeup logic in a multi-strand out-of-order processor |
US20150046684A1 (en) * | 2013-08-07 | 2015-02-12 | Nvidia Corporation | Technique for grouping instructions into independent strands |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110806898A (zh) * | 2019-05-22 | 2020-02-18 | 成都海光集成电路设计有限公司 | 处理器及指令操作方法 |
CN110806898B (zh) * | 2019-05-22 | 2021-09-14 | 成都海光集成电路设计有限公司 | 处理器及指令操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20170161075A1 (en) | 2017-06-08 |
WO2016193774A1 (en) | 2016-12-08 |
CN107567614B (zh) | 2022-05-24 |
EP3304291A1 (en) | 2018-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107209545B (zh) | 在多核处理器中执行功率管理 | |
US10146286B2 (en) | Dynamically updating a power management policy of a processor | |
TWI599960B (zh) | 在多核心處理器中執行電源管理 | |
CN107567614A (zh) | 用于对根据关键度被分组的指令的缕程的执行的多核处理器 | |
CN108701040A (zh) | 用户级别线程暂停的方法、设备、和指令 | |
CN107250946A (zh) | 执行对平台装置的动态功率控制 | |
CN105793819A (zh) | 包括混合处理器核的片上系统(soc) | |
TW201702866A (zh) | 用戶等級分叉及會合處理器、方法、系統及指令 | |
CN108351811A (zh) | 调度高度并行的应用 | |
CN109564526B (zh) | 使用封装和线程提示信息的组合来控制处理器的性能状态 | |
CN107924219A (zh) | 遮蔽处理器的核的功率状态 | |
CN110199242A (zh) | 基于使用参数配置处理器的基本时钟频率 | |
CN106537285A (zh) | 处理器温度的平衡控制 | |
CN108028664A (zh) | 使用具有多个搜索引擎的加速器的数据压缩 | |
CN107533354A (zh) | 控制处理器的处理引擎的性能状态 | |
CN108369495A (zh) | 用于浮点操作的硬件消除监视器 | |
CN107077175A (zh) | 提供针对多芯片封装的热参数报告的装置和方法 | |
CN108369517A (zh) | 聚合分散指令 | |
CN108475199A (zh) | 用于执行密钥值查找指令的处理设备 | |
CN110321166A (zh) | 处理器中的基于一致性操作的分支预测 | |
CN108701101A (zh) | 处理器系统管理中断事件的基于仲裁器的串行化 | |
CN108241507A (zh) | 管理压缩加速器中的状态数据 | |
CN108475192A (zh) | 分散减少指令 | |
CN109564460A (zh) | 在处理器中提供用于降级控制信息的接口 | |
CN111381664A (zh) | 控制处理器中的功率状态降级 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20220524 |