CN104011705A - 多形异构性多核架构 - Google Patents
多形异构性多核架构 Download PDFInfo
- Publication number
- CN104011705A CN104011705A CN201280059336.4A CN201280059336A CN104011705A CN 104011705 A CN104011705 A CN 104011705A CN 201280059336 A CN201280059336 A CN 201280059336A CN 104011705 A CN104011705 A CN 104011705A
- Authority
- CN
- China
- Prior art keywords
- core
- processing
- register
- serial
- cluster
- 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.)
- Pending
Links
- 238000012545 processing Methods 0.000 claims abstract description 90
- 238000000034 method Methods 0.000 claims abstract description 47
- 230000008569 process Effects 0.000 claims description 15
- 230000004044 response Effects 0.000 claims description 8
- 230000005540 biological transmission Effects 0.000 claims description 4
- 230000036755 cellular response Effects 0.000 claims 3
- 238000013507 mapping Methods 0.000 description 20
- 239000000284 extract Substances 0.000 description 16
- 238000000605 extraction Methods 0.000 description 11
- 230000007246 mechanism Effects 0.000 description 10
- 238000005265 energy consumption Methods 0.000 description 6
- 238000003860 storage Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000006872 improvement Effects 0.000 description 5
- 230000001771 impaired effect Effects 0.000 description 4
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 229910052710 silicon Inorganic materials 0.000 description 3
- 239000010703 silicon Substances 0.000 description 3
- 230000004913 activation Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000005611 electricity Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005194 fractionation Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000001737 promoting effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- 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
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
- G06F9/3009—Thread control 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/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
-
- 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/3824—Operand accessing
- G06F9/3826—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
- G06F9/3828—Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/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/3838—Dependency mechanisms, e.g. register scoreboarding
- G06F9/384—Register renaming
-
- 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/3853—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound 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/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/3854—Instruction completion, e.g. retiring, committing or graduating
- G06F9/3858—Result writeback, i.e. updating the architectural state or memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5012—Processor sets
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Advance Control (AREA)
Abstract
提供用于动态多形异构性多核处理器操作的方法和架构。用于动态异构性多形处理的方法包括接收包括多个串行线程的处理任务。该方法在包括多个处理核的处理器中执行,多个处理核中的每一个被分配至多个核集群中的一个,并且多个核集群中的每一个能够动态地形成包含两个或更多其处理核的联合。该方法还包括确定锁个串行线程中的每一个是否需要多于一个处理核,并向多个核集群中的多个发送现在进入联合模式指令,用于处置需要多于一个处理核的多个串行线程中的多个。
Description
优先权要求
本申请要求于2011年12月1日提交的美国专利申请第61/565,559号的优先权。
技术领域
本发明大体涉及具有多核的半导体处理器,更具体地涉及用于动态多形异构性多核处理器操作的方法和架构。
背景技术
技术节点的现代发展推动在半导体装置中的临界尺寸越来越小。但是,仅仅降低临界尺寸和晶体管大小不再提供电力、性能以及硅面积方面对应的改进。通过缩小晶体管大小和计算机处理器多核架构能够在硅中执行更多的操作。具体地,多核架构提供用于处理速度提升的并行处理能力。但是,在例如移动装置中的、由于前述缺少在电力使用和电力限制方面对应的改进而引起的电力约束阻止同时给所有电路供电。尤其是在具有多核架构的计算机处理器中。
具有多个简单核的同质性核架构对于具有高线程级并行性的应用是理想的,但是由于在处置复杂应用中的大序列部分而受损于缺乏指令级并行性支持。多核架构能够被设计用于特定应用(例如图像处理器)的高性能处置,但是其不足以适合处置其他操作。
但是,需要计算机处理器做得更多,即使是在电力有限的移动装置中。例如,如今希望智能手机支持非常动态并多样的软件应用范围。这推动在高性能嵌入式架构和通用计算架构之间的差异快速地消失,特别是在消费电子领域中。传统的同质性多核架构具有相同的简单核的集合,其不适合当今的工作负荷。另一方面,具有异构性多核解决方案的嵌入式系统被定制为在性能、电力以及硅面积方面提供显著的优点,但是缺乏以当今的工作负荷(例如,广泛的多种通用应用)例如执行多种应用的适应性,工作负荷对于这些通用应用在先前是未知的。
一些之前建议的架构已经试图使多核适应提高序列应用的速度。建议了一种包括具有不同大小和性能的核的非对称芯片微处理器。该架构的优点是通过动态地将程序从一个核移动至另一个核以到达最优化点所实现的低电力消耗和高性能。但是,该架构缺乏灵活性并引入了对于软件应用的高度不可预测性。另一个传统的架构合并同质性核以改进单一线程性能,但仍然需要导致更高的性能开销的复杂的分布式硬件。另一种方法通过修改内部的管线阶段合并一对标量核以创建2路乱序核。但是,连接有序处理器以形成复杂乱序核引入限制可实现的性能的根本障碍,并由于核不具有最小乱序能量而不提高性能。
在又一种多核架构建议中,能够使多个均质性核适于单一线程和多线程应用,但仍然依赖非常复杂的编译器,该编译器通过将代码划分为小的线程,将指令调度至核以及引导核之间的传送来根据串行代码利用并行性。在一种建议的非对称芯片微处理器替换物中,用于多线程应用的临界部分的串行化效果受损于不同时完成其工作的线程,这导致这样的同步机制,即该机制需要大量的快线程等待慢线程以完成。又一种建议通过利用表现为功能单元的核以乱序方式动态地执行拆分的(forked)任务。不利地,在任务之间的依赖性信息由程序员明确地定义在特别的程序模型中并且复杂的硬件被要求处置解码、建立任务图并将任务调度至核。
因此,需要可重构架构中的多个简单核,该架构能够使其本身适应支持具有明确的线程级并行性的多线程代码和具有指令级并行性序列代码。另外,结合本公开的附图和背景,根据下文的详细描述和所附权利要求,其他期望的特征和特性将会变得明显。
发明内容
根据详细的描述,提出了一种用于在处理器中的动态异构性多形处理的方法,处理器包括多个处理核。多个处理核中的每一个被分配至多个核集群中的一个,多个核集群中的每一个能够动态地形成包括两个或更多处理器的处理核的联合。该方法包括接收包括多个串行线程的处理任务,并将多个串行线程中的每一个分为多个基本块,多个基本块中的每一个包括单一入口点和单一出口点。该方法还包括创建用于多个基本块的控制流,确定多个串行线程中的每一个是否需要多于一个处理核,并向多个核集群中的多个发送现在进入联合模式指令,用于处置需要多于一个处理核的多个串行线程中的多个。另外,该方法包括将多个标记指令中的一个增加至需要多于一个处理核的多个串行线程中的多个的、多个基本块中的每一个,多个标记指令中的每一个包括用于处理多个基本块的信息。最后,该方法包括当需要多于一个处理核的多个串行线程中的多个中的每一个完成时,向多个核集群的对应的多个发送现在退出联合模式指令。
根据本实施方式的另一个方面,提出了动态异构性多形处理器。该处理核包括多个处理核和联合逻辑单元。多个处理核中的每一个被分配至多个核集群中的一个,并且联合逻辑单元与多个核集群中的每一个关联,用于通过多个处理核中的、位于多个核集群中的关联的一个核集群内的两个或更多处理核的联合能够进行动态异构性多形处理。每个逻辑单元响应于多个核集群中的所述一个核集群接收联合请求命令,将多个处理核中的所述两个或更多处理核转换为联合。
附图说明
在各个附图中,相同参考数字符号代表相同或功能上相似的元件,附图与下文详细的描述一起并入说明书并形成说明书的一部分,用于根据本发明示出多种实施方式并解释多种原理和优点。
图1包括图1A和图1B,示出传统的同质性多核架构,其中图1A示出多个简单核架构,图1B示出多个复杂核架构。
图2示出传统的异构性多核架构。
图3示出根据本实施方式的动态多形多核处理器架构。
图4形象地示出通过根据本实施方式的图3的处理器架构的基本块处理。
图5示出根据本发明的标记指令格式。
图6示出根据本实施方式的入口活跃(live-in)寄存器和出口活跃(live-out)寄存器数量低于阈值百分比的基本块的百分比。
图7示出通过根据本实施方式的图3的处理器架构在基本块的处理操作期间重命名全局寄存器和局部寄存器的示例。
图8形象地示出通过根据本实施方式的图3的处理器架构的、用于基本块处理的标记指令信息。
图9包括图9A至图9D,形象地示出根据本实施方式通过图3的处理器架构的并行基本块处理操作,该处理操作利用用于控制基本块处理的入口活跃/出口活跃操作的全局寄存器。
图10包括图10A至图10D,形象地示出根据本实施方式通过图3的处理器架构的并行基本块处理操作,该处理操作利用全局程序计数器。
图11包括图11A至图11H,形象地示出根据本实施方式通过图3的处理器架构的并行基本块处理操作,该处理操作利用服务寄存器和票据寄存器。
图12形象地示出根据本实施方式通过图3的处理器架构的并行基本块处理操作,该处理操作突出用于基本块处理的提取、解码、重命名、执行和提交操作。
图13包括图13A和图13B,示出与传统的SPEC和嵌入式基准对比,被标准化为2路核的图3的处理器架构的、操作的速度提升和能量消耗改进的条形图(图例中称为Bahurupi(多形体),Bahurupi是印度词语,意为具有许多形态和引导的人,多形体)。
本技术领域的技术人员将会理解,为了简化和清楚示出附图中的元件,并不需要按比例示出。例如,为了提高对比实施方式的理解,在框图中的一些元件的尺寸可能相对于其他元件的尺寸是夸大的。
具体实施方式
下文的详细描述本质上仅仅是示例,无意限定发明或发明的应用和使用。另外,无意受到出现在上文的发明背景或下文的详细描述的约束。本发明旨在呈现用于动态多形异构性多核处理器的方法和架构,该方法和架构包括在可重构的多核架构中的多个简单核,该可重构的多核架构能够动态地使其本身适于支持具有明确的线程级并行性的多线程代码和具有指令级并行性的序列代码。
随着多核的出现,计算系统已经向并行架构进行了不可逆的过渡。另外,嵌入式系统中的电力和热量限度要求在芯片上采用许多更简单的核,而并非几个复杂的核。具体地,消费电子设备需要支持不断变化的、具有变化的性能要求的多种应用组。当一些应用能够受益于由多核解决方案提供的线程级并行性时,仍然存在大量具有大量的序列代码的应用,并且序列程序在简单核中而受损于指令级并行性的有限开发。本实施方式提出了可重构的多核架构,其能够成功地调解指令级并行性和线程级并行性的冲突的需求。
本实施方式能够通过动态地形成两个或更多个简单核的结合来加快串行代码的性能以提供增加的指令级并行性。具体地,本实施方式能够有效地合并2至4个简单2路乱序核以到达甚至超过更复杂且高耗电的4路或8路乱序核的性能。与在多组嵌入式基准应用上的8路乱序基线核架构相比,本实施方式的四核实现能够在性能方面提升17%,在能量消耗方面提升43%。
参见图1和图2,示出了传统的多核架构。多核架构能够提供用于处理加速的并行处理能力。但是,由于缺乏便携设备中的电力使用和电力限制的相应改进而引起的电力约束,阻止了同时给所有核供电。
图1A示出16个简单核115的同质性核架构110。该同质性核架构110和多个简单核115对于具有高线程级并行性的应用是理想的,但是由于在处置复杂应用中的大序列部分而受损于缺乏指令级并行性支持。图1B示出包括4个复杂核125的同质性多核架构120,同质性多核架构120被设计为用于复杂应用并轻易地处置具有高指令级并行性的应用。但是,当处置具有高线程级并行性的应用时导致高电力消耗和低核使用。
图2示出包括12个简单核230和1个复杂核250的异构性多核架构215。虽然该架构轻易地处置复杂应用并提供特定应用的高性能处置,但是其不足以适合对除了特定混合的操作外进行处置。这样的异构性多核架构215通常为具体的嵌入式应用域定制,该嵌入式应用域能够在性能、电力以及面积方面提供显著的优点并,对于特定核心程序(例如音频、视频、图像处理)是有益的。但是,高性能嵌入式平台(例如智能手机)需要执行广泛的多种通用应用,工作负荷对于该通用应用在先前是未知的。
参见图3,示出了根据本实施方式的多形异构性多核架构300的高层概况。多核架构300被构建为包含多个相同的简单核的同质性多核系统,并能够在软件指令下在运行时根据工作负荷变为异构性多核架构。构建后,软件能够将原始核310组合到一起以创建定制的多核系统,该多核系统最匹配当前在系统上执行的应用的需要。
每个核310是简单2路乱序处理器。4个这样的简单核形成集群。图3中的示例架构包括两个这样的集群;但是集群的数量能够通过技术被轻易地改变。联合被定义为一组核310,该一组和310一起工作以加快一系列流的指令的执行。为了形成联合,核310需要分享数据和指令缓存。为了这个目的,使用可重构L1指令缓存313和L1数据缓存315。L1指令缓存313和L1数据缓存315都具有4个库。在正常模式下,每个核310均被分配缓存库313、315,该缓存库313、315表现为直接映射的缓存并且缓存映射被相应地配置。在联合模式下,所有4个缓存库一起表现为大的4路成组关联共享缓存。组合的指令和数据L2缓存320在正常模式和联合模式下都在所有核中共享。
在正常模式下,多线程应用在一组同质性核上执行。但是,有时简单核可能不够强大以利用在一些线程中可用的ILP的量。在这种情况下,架构300配置其核310的子集以在联合模式下运行,使得虚拟核能够提取更多的ILP并固有地更快地执行线程。如下文将讨论的,架构300使用在核310之间共享的有限数量的附加硬件、和最小的编译器修改。
联合逻辑单元325与处理核310的每个集群耦合,并且根据本实施方式,通过在核集群内形成核310中的两个或更多个的联合使得能够进行动态异构性多形处理。在正常模式下,多核架构300能够有效地支持多线程执行。简单2路核310也能够支持简单、低指令级并行性330。但是,单个核310不能利用许多在序列应用中的指令级并行性(ILP)。
根据本实施方式,能够使用最小附加硬件在集群中形成两个至4个核310的联合,以使得合并的核310能够大体上提高串行代码执行的速度。能够形成两个核310的联合332用于运行具有中ILP串行线程的处理任务334,并能够形成4个核310的联合336用于处置具有高ILP串行线程的处理任务338。形成这样的联合332、336能够实现与专用的4路和8路乱序执行引擎的性能接近的性能。例如,与2路核相比,根据本实施方式的双核处理能够实现高达3.24倍的速度提升以及2.64倍的平均速度提升。对于嵌入式应用,根据本实施方式的四核操作能够实现高达5.61倍的速度提升以及4.08倍的平均速度提升。更重要地,对于大范围的应用,根据本实施方式的双核和四核操作能够超过显著地更复杂的4路和8路核的性能。根据本实施方式,因为对于超过8路乱序核的核复杂度,速度提升受到限制,因此联合数量限于4个核310。
因此,可以看出本实施方式能够实现复杂的乱序超标量处理器的性能,而无需为复杂的硬件和其关联的能量低效和可靠性问题付出代价。需要的附加硬件最少,其是与关联逻辑总线340耦合的关联逻辑单元325的一部分,并当核310形成关联时被用于在多个核310中处置并行处理。联合逻辑单元325包括用于在核310之间同步的3个专用寄存器(全局程序计数器342、票据(ticket)寄存器344以及服务寄存器346),以及共享的全局寄存器文件348。下文将更详细地解释联合逻辑单元325的操作。
因此,所属技术领域的技术人员可以看出,唯一需要的附加硬件是包括共享的全局寄存器文件348的联合逻辑单元325,以于运行在不同的核310上的基本块420之间传送值。联合总线340也将联合逻辑单元325耦合至在集群中的每个核310。最小数量的附加资源352被加入到核310的内部架构以支持联合。所属技术领域的技术人员可以认出图3示出的核310的剩余结构是传统的核结构,并且核310的主执行引擎355仍然完全没有改变。
本架构300成功地调解具有明确的线程级并行性(TLP)的应用和具有高度的指令级并行性(ILP)的单线程串行应用的冲突的需求。包括多个简单同质性核310的架构300理想地适于利用TLP。但是存在一大类具有大量的序列代码碎片的应用,如果不是不可能,也难以使大量的序列代码碎片并行。Amdahl(阿姆达尔)定律声明这种应用的速度提升受限于串行代码的性能。只有具有高度的超标量(4路或8路)的复杂乱序执行引擎才能够通过ILP的主动利用而明显地增加序列代码碎片的速度。电力和热量限制以及可靠性问题不允许在嵌入式系统中采用这种复杂的核。但是,通过简单分析已经证明如果下层的架构能够在少量利用ILP的复杂核和大量利用TLP的简单核之间能够被动态地重构,则应用如何能够达到超出阿姆达尔定律限制很多的速度提升。架构300通过在运行时形成2核至4核310的联合以创建虚拟的4路或8路超标量核,达到这个在ILP和TLP之间的无缝过渡。
将简单核组合到一起以提高串行代码的速度的思想并不新颖。但是,现有解决方案要么要求大量附加的、共享的硬件资源和对组成的核的内部架构的修改,要么遵循根本上不同的指令集架构(ISA),该指令集架构需要硬件模型的完整重新设计和主动的编译器优化。相反,本实施方式提出了需要硬件和软件的最小改变的硬件-软件协同解决方案。
参见图4,示出了根据架构300的基本块处理400。架构300(图3)遵循在联合模式下的分布式执行模型。用于核的执行单元是基本块420,该基本块420是具有单一入口点和单一出口点的指令的序列。当接收到包含多个串行线程410的处理任务时,多个串行线程410中的每一个被分成多个基本块420(B0至B4)。核310每次提取并执行一个基本块420。根据本实施方式,基本块420在形成联合的核310上被并行执行从而对于串行代码实现速度提升。核310提取基本块420用于执行。核310一完成在基本块420中的所有指令的提取、解码和重命名,其就试图提取下一个可用的基本块420。
当串行线程410需要多于一个处理核310时,“现在进入联合模式”指令被发送至处置串行线程410所需要的核集群中的核310之一(在图4中是中ILP串行线程410,并形成具有核0与核1的联合)。之后基本块420由核310处理。
因此可以看出处于联合模式的本实施方式遵循分布式执行模型,该分布式执行模型避免复杂的集中提取/解码,依赖性解决方案以及之前方法的指令调度。其需要来自编译器的支持以识别基本块420和它们的寄存器依赖性。编译器检测与每个基本块420对应的入口活跃寄存器和出口活跃寄存器。术语入口活跃寄存器表示在基本块420的入口是活跃的并且在基本块420内部被实际地使用的寄存器。术语出口活跃寄存器代表在基本块420的出口是活跃的并且在基本块420内部被实际地更新的寄存器。入口活跃寄存器和出口活跃寄存器与基本块420间依赖性对应,并且对于相同的寄存器可能表现为入口活跃寄存器和出口活跃寄存器两者。根据本实施方式,利用称为标记指令的指令以对这个信息编码,编译器在每个基本块420的开始增加标记指令。也就是说,编译器将程序分成由标记指令定界的基本块420。
参见图5,示出标记指令500的结构。编译器将标记指令500增加到需要多于一个处理核的串行线程的多个基本块420中的每一个,该处理核允许架构300向能够通过标记指令500延长的任何ISA提供处理核的处理优点。标记指令500具有64位指令格式,包括用于处理多个基本块420的信息,该信息包括操纵代码数据510,基本块长度数据520,以分支结束数据530,多达3个入口活跃寄存器540以及多达3个出口活跃寄存器550。基本块长度数据520指定由标记指令500定界的基本块420的长度。通过将基本块长度数据520的字段设定为4位,在基本块420中能够最多支持16条指令。如果基本块420的大小超过16条指令,则其被分成两个或更多个基本块420。以分支结束数据530是1位字段,其指定基本块420是否以分支指令结束。
接下来的6个字段保持用于基本块420的入口活跃寄存器540和出口活跃寄存器550。图6示出入口活跃寄存器和出口活跃寄存器数量低于对于一些SPEC和嵌入式基准的阈值的基本块420的百分比。对于几乎所有基准,90%的基本块420包含小于等于3个入口活跃寄存器和出口活跃寄存器。因此,根据本发明的标记指令500被约束为具有3个或少于3个的入口活跃寄存器和3个或少于3的出口活跃寄存器。如果基本块420包括多于3个的入口活跃寄存器或多于3个的出口活跃寄存器,则编译器将基本块420分成两个或更多个子块以满足该约束。
图7示出使用基本块420重命名的寄存器的示例,该基本块420示出标记指令500和5条指令(I0至I4)。注意r5由指令I2局部地限定,并由指令I3局部地使用。同样地,r4被限定多次(I0和I3);但是在I3中的最后限定被当作出口活跃。基本块420具有一个入口活跃寄存器(r5)和一个出口活跃寄存器(r4)。
当标记指令500被提取时,核访问全局寄存器映射图,在该全局寄存器映射图中r5已经被重命名为全局物理寄存器GR3。因此,在局部寄存器映射图702中,我们也在指令I0至I3将r5映射至GR3。当规律的指令在基本块420中被提取时,像通常一样只使用局部寄存器映射图702对它们重命名。因此,在指令I0、I1、I2中的源寄存器r5被重命名为GR3。但是指令I2重定义寄存器r5。此时,r5被重命名为局部物理寄存器LR9。因此下一条指令I3使用用于源寄存器r5的LR9。因此,相同的寄存器r5最初地被映射至全局物理寄存器并随后被映射至局部物理寄存器。另一方面,由于指令I1中的寄存器r6不属于入口活跃寄存器列表,因此其总是被映射至局部物理寄存器。
核需要重命名出口活跃寄存器。首先,核要求全局寄存器重命名逻辑单元以支持与每个出口活跃寄存器对应的空闲全局物理寄存器。该映射信息被保持在全局寄存器映射图和被称为出口活跃映射图704的特别局部表中。出口活跃映射图704只包含与3个出口活跃寄存器对应的3个入口。每个入口是三元组,包括:(a)架构寄存器索引、(b)全局物理寄存器索引以及(c)最后映射对应的架构寄存器的、指令的重排序缓冲器(ROB)ID。出口活跃映射图704将寄存器r4映射至空闲的全局物理寄存器GR8。ROB入口仍然未知。
注意我们不是立即地将出口活跃映射拷贝至全局寄存器映射图中。这是因为出口活跃寄存器550能够在基本块420中被定义多次,并且只有最后的向寄存器的写入应该被传送至全局寄存器文件348。例如,出口活跃寄存器r4在I0和I3都被定义。但是,只有I3应该向全局寄存器文件写入。
在2路乱序处理器中,我们需要在每个周期重命名4个源寄存器和两个目的寄存器。与之相对,标记指令500需要重命名3个源寄存器和3个目的寄存器。与在其中硬件需要识别在被并行重命名的寄存器之间的可能的依赖性的正常指令不同,对于每个标记指令只需要识别3个空闲的物理寄存器。并且对于标记指令500,容易在1个时钟周期中重命名3个寄存器。
开始在基本块420中提取和重命名规则指令。例如,r4在I0中被重命名为局部物理寄存器LR7,然后在I3中被重命名为LR10。每当r4被重命名时,对应的指令的ROB ID被拷贝至出口活跃映射图704中。起初,ROB ID是与I0对应的ROB6,然后其改变为与I3对应的ROB9。
每当正常指令通过出口活跃寄存器被重命名时,全局寄存器文件索引被拷贝至对应的ROB入口中。随后,如果出口活跃寄存器在基本块420中被再次重命名时,全局寄存器文件索引从之前的ROB移除并被增加到新的ROB入口。例如,最初,用于指令I0的ROB入口ROB6包含全局寄存器索引GR8,并在随后当用于I3的ROB9通过全局寄存器文件索引GR8更新时被移除。当定义出口活跃寄存器550的指令完成执行时,其将值写入局部寄存器文件和全局寄存器文件348。例如,当I3完成执行时,寄存器r4的值将会被写入LR10和GR8。此外,当核310向全局物理寄存器文件348写入时,核310需要在联合总线340(图3)上广播信息以使得其他依赖于该寄存器的核310能够获得值。最后,当这样的指令准备好提交时,值被提交至全局寄存器文件348。
最后定义出口活跃寄存器值(例如,I3)的规则指令甚至在与其基本块420对应的整个指令已经被提取和重命名之前完成执行是可能的。在这种情况下,当指令被执行时,不确保其需要将值写入全局寄存器文件348中。只有当在基本块420中的所有指令都已经被重命名时这个信息才是可知的。为此,来自基本块420的指令不被允许广播和提交出口活跃寄存器,直到来自那个基本块420的所有指令已经被提取和重命名。
虽然在联合中的核310能够并行进行提取、重命名、执行以及寄存器写入,但是只有1个核310能够在每个周期进行提交以满足有序提交。但是,我们没有被限制在每个周期提交最多两条指令。这是因为关于局部寄存器目的所有指令都不需要提交。只有关于出口活跃目的寄存器的指令和存储器指令需要提交至全局寄存器文件348。因此,在提交出口活跃目的和存储器指令时限制在每个周期仅最多提交两条指令。因此,当仿真4路或8路处理器操作时提交状态没有成为瓶颈。
而且,如图7所示的架构300和其基本块处理操作使用对局部和全局寄存器文件重命名的经典寄存器。如上所述,联合逻辑单元325包括共享的全局寄存器文件348,该全局寄存器文件348包括全局寄存器映射图和全局物理寄存器文件。全局寄存器映射图的大小由在处理器ISA中的寄存器的数量决定。但是,全局物理寄存器文件的大小取决于需要全局寄存器文件的寄存器访问的部分。根据本实施方式,对于全局物理寄存器文件分配了40个入口。
当核310提取标记指令500时,其必须处置入口活跃寄存器540和出口活跃寄存器550。对于入口活跃寄存器540,可以有两种方案。在第一种情况下,与全局寄存器对应的值已经由前一个基本块420产生。核310只需要将该值拷贝至全局寄存器文件中。在第二种情况下,值还没有准备好。将逻辑单元重命名的寄存器然后简单地将映射从全局寄存器映射图拷贝至局部寄存器映射图。也就是说,用于入口活跃寄存器540的局部寄存器映射图现在指向全局寄存器文件348入口。
参见图8,示出基本块420B01和基本块420B02以及它们的标记指令500,该标记指令500包括入口活跃寄存器值540和指令I0至I4。以这种方式,在基本块420之间的依赖性被明确地传到程序代码中。核310能够并行提取和执行不同的基本块420,从而实现性能的速度提升。
在架构300中,基础处理核310是使用寄存器映射表将架构寄存器重命名为物理寄存器的2路乱序执行引擎。位于基本块420局部的寄存器能够保留在核-局部寄存器文件中。但是,入口活跃和出口活跃寄存器值必须在核310之间被传送。参见图9A至图9D,示出被所有核310共享的全局寄存器文件348的操作。其包括全局映射表902和全局物理寄存器文件348。入口活跃寄存器540必须从全局寄存器文件348读取,而出口活跃寄存器550必须被写入全局寄存器文件348。因此必须使用全局映射表重命名入口活跃寄存器540和入口活跃寄存器550。如在图9A、图9B、图9C、图9D中渐进示出的,标记指令对全局寄存器重命名。
任何乱序执行核310都应该按程序顺序重命名寄存器以及按程序顺序提交指令。由于全局(基本块之间)依赖性封装在标记指令500中,因此标记指令的执行和全局寄存器的重命名需要按程序顺序进行。被所有核共享的全局程序计数器(GPC)用于确保程序顺序。GPC也附带锁定机构以使得在任何时间点只有1个核能够访问和更新GPC。
参见图10A至图10D,示出在包括核0和核1的联合中的基本块420的处理,该处理在全局程序计数器342的控制下。如图10A所示,最初,GPC342指向在程序的第一个基本块B01中的标记指令。第一基本块B01之后由核0提取。一旦核0提取标记指令并完成全局寄存器重命名,其更新GPC342以指向下一个基本块420(即下一个标记指令500)。如果基本块420以分支指令结束,则GPC342将通过由在核310中的分支预测器产生的预测的目标地址更新。参见图10B,全局程序计数器342移至基本块B1并且核1提取第二个基本块B11(恰当地假设B11是B01的分支)。以这种方式,GPC342增加了基本块的长度(如通过块长度数据520表明)。换言之,GPC342一直指向标记指令500。在更新后,核310释放在GPC342上的锁定,从而允许下一个核(或同一个核)锁定GPC寄存器。
因此核开始从基本块420提取指令,然后每当它们的操作数准备好时乱序地执行它们(即所有的局部和全局依赖性被解决)。参见图10C,由于基本块B11的处理在基本块B01的处理完成后继续,因此全局程序计数器342移至基本块B3并且核0提取基本块B31。并且,参见图10D,在核1完成处理基本块B11之前核0已经完成了处理基本块B31。因此,当全局程序计数器342移至B4时,核0提取基本块B41。
以这种方式,架构300解决在基本块420之间的寄存器和存储器依赖性,以使得在并行执行期间维持正确的处理顺序。代替依靠复杂的硬件机构以在基本块420之间检测互相依赖性,由本实施方式利用硬件-软件协同解决方案以确保按程序顺序提取、重命名并提交基本块420。因此,能够乱序地进行来自不同基本块420的指令的执行,从而主要由来自不同核310上的不同基本块420的指令的这种乱序并行执行导致本实施方式的速度提升。
有序提交约束将处置推测的执行和精确异常,并通过共享的票据锁定机构处置。参见图11A至图11H,通过8个连续的操作示出票据锁定机构的操作。票据锁定机构包含两个寄存器:服务寄存器346和票据寄存器344。两个寄存器都被初始化至0。票据寄存器344被用于记录基本块420由核310提取所按的顺序。当核310锁定GPC342时,其也读取并增加票据寄存器344的当前值。然后其使用这个票据值标识在基本块420中的所有指令的重排序缓冲器(ROB)入口。也就是说,指令的每个基本块均通过唯一的票据值标记并且票据值按程序顺序分配给基本块420。
服务寄存器346指定哪组指令被允许提交。在任何时间点只有1个核310被允许提交指令。对于这个核,指令准备好提交并且它们的关联票据数与由服务器346所保持的值匹配。在来自基本块420的所有指令被提交后,服务寄存器346增加。
参见图11A,票据寄存器344增加1,基本块B01由具有票据寄存器值1的核0提取。服务寄存器346增加1并且基本块B01的处理被提交,服务寄存器值为1。之后票据寄存器344再次增加。参见图11B,基本块B11由具有票据寄存器值2的核1提取。由于来自基本块B01的所有指令还没被提交,所以服务寄存器未增加。接下来参见图11C,票据寄存器344增加1并且基本块B31由具有票据寄存器值3的核0提取。在图11D中,票据寄存器344再次增加1并且基本块B41由具有票据寄存器值4的核0提取。现在提交来自基本块B01的所有指令,因此服务寄存器增加1。
参见图11E,票据寄存器344再次增加1并且基本块B02由具有票据寄存器值5的核1提取。基本块B11的处理被提交,服务寄存器值为2。之后票据寄存器344再次增加。参见图11F,基本块B12由具有票据寄存器值6的核0提取。由于来自基本块B11的所有指令被提交,因此服务寄存器增加1。接下来参见图11G,票据寄存器344增加1并且基本块B32由具有票据寄存器值7的核1提取。现在服务寄存器值是3。在图11H中,票据寄存器344再次增加1并且基本块B42由具有票据寄存器值8的核1提取。现在来自基本块B31的所有指令被提交,因此服务寄存器344增加1。因此,有序的提取和提交通过利用票据寄存器342和服务寄存器344的共享的锁定机构处置了推测的执行和精确异常。
图12使用示例示出架构300及其操作。和之前一样,图的左手边示出与程序对应的简单控制流图(CFG)430。CFG包括5个基本块B0至B4。开始时,全局程序计数器(GPC)342指向基本块B0的标记指令500。核0对GPC342初始锁定,提取基本块B0的标记指令500,并且根据基本块B0的标记指令500的入口活跃和出口活跃信息重命名全局寄存器。标记指令500还指出基本块B0以分支指令结束。因此核0执行分支预测,该分支预测指出B1作为预测的下一个基本块420。因此GPC342被更新以指向基本块B1的标记指令500,并且核0释放其对GPC342的锁定。在此期间由于核1不能获得对GPC342的锁定,因此其保持空闲。
现在核0开始提取、解码、重命名并执行来自基本块B0的规则指令。同时,由于GPC342已经被释放,因此核1锁定GPC342并且重命名与基本块B1对应的全局寄存器。由于B1在最后没有任何分支指令,因此GPC342增加B1的长度并指向B3。核1也释放对GPC342的锁定。此时,核0和核1都在提取、重命名并执行来自它们的对应基本块420的指令。
当核1释放对GPC342的锁定时,核310都仍然忙于从它们各自的基本块420提取指令。因此,没有核试图锁定GPC342。仅当核310完成对所有来自其当前的基本块420的指令的提取时,其才会继续对于下一个基本块310锁定GPC342。这就是为什么在完成B1中的标记指令500的执行和提取B3中的标记指令500之间存在间断的原因。
接着,核0完成提取B0的所有指令并对于B3锁定GPC342。因此当核1完成对来自基本块B1的所有指令的提取时,其需要等待该锁定。尽管在本示例中基本块在两个核之间交替,但是特别是当另一个核310处置大的基本块420并不能要求锁定GPC342时,对于核310来说提取连续的基本块(如图10和图11所示)是可能的。
现在转向提交,起初,服务寄存器346和票据寄存器344的值都是0。因此核0利用“0”标识B0的所有指令并且票据寄存器344增加至1。一旦B0的第一条指令完成执行,核0就能够开始提交指令,这是由于服务寄存器346的值与B0的指令的标识匹配。核1已经利用票据值1标识B1的所有指令。因此,核1不能与核0并行提交。反而,核1应该等到核0完成所有的提交并将服务寄存器增加至1。如图12所示,这在核1的提交阶段引入空闲周期。
当核310检测到分支误预测时,其将对所有核310(包括其自身)发信号以清理提取队列和ROB入口,使用的票据值大于误预测分支指令的票据值。换言之,与在正常的乱序执行中发生的相似,所有继误预测分支之后的指令被从管线清理。核310会要求锁定GPC342的任何其他核310释放GPC342。之后具有误预测分支的核310会锁定GPC342,将全局票据寄存器344恢复为1加上误预测分支指令的票据值,并设定GPC342至正确的地址。之后核310会从指向正确的标记指令的新的GPC地址继续提取。遵循相同的方针以维持精确异常。
由于具有任何乱序架构,根据本实施方式的操作将存储操作限制为在提交阶段更新存储器。因此,能够避免写后写(write-after-write)存储器冒险。但是先读后写(write-after-read)和先写后读(read-after-write)存储器冒险的问题仍然存在。在不同的核310上执行的加载和存储能够访问相同的存储器位置。在这种情况下,根据本实施方式的操作确保加载和存储按原始的程序顺序执行。如果加载指令即将从前一个存储(从另一个核310)必须进行写操作的地址读取时,则加载操作可能读取错误值。
这个问题并不独特。即使在单一核的传统乱序执行引擎中,当前一个存储指令仍然未准备好时,仍可执行加载。随后,结果可能是加载和前一个存储访问相同的地址并且因此由加载操作读取的值不正确。这通过在提交阶段的存储器消歧由乱序处理器处置,根据本实施方式的操作利用相同的机制。该机制强制实施所有加载操作应该执行两次。第一次是当它们的操作数准备好(执行阶段)时,第二次时当它们准备好提交时。当第二次执行加载时,将检查读取的值是否与在第一次尝试时获得的值不同。如果不同,则意味着另一个核310已经在之前提交并写在相同地址。在加载指令之后由所有核310(包括当前的核310)执行的所有指令被毁坏,核310将必须给所有核发信号以清理它们的内部结构并再次为新的提取准备GPC342和票据寄存器344。
总之,根据本实施方式的多核处理器架构和其操作需要:(a)标记指令500的有序提取以使得能够有序地进行全局寄存器重命名,以及(b)指令在所有核310上的有序提交。图12中的虚线强调有序提取和提交操作。它们能够引入空闲周期但是需要保持程序执行的正确性。核310中的规则指令的提取、重命名和执行能够并行地继续进行以创建单一的虚拟乱序引擎的假象。
参见图13,执行根据本实施方式的多核处理器架构和其操作(称为Bahurupi模型,Bahurupi是印度词语,意为具有许多形态和引导的人,多形体)甚至能够胜过真正的乱序执行引擎。例如,对于浮点基准,根据本实施方式的2核架构在速度提升和能量消耗方面都表现好于4路发布乱序处理器(见图13A和13B)。这是因为根据本实施方式的处理能够展望未来。例如,在图12中,核310在并行提取来自基本块B3和B4的指令。但是,在4路发布寄存器中,来自B3和B4的指令必须被顺序地提取。由于利用入口活跃和出口活跃信息的帮助解决了在基本块420之间的依赖性,因此根据本实施方式的处理能够在所有基本块上更轻易地利用ILP。
特别参见图13B,条形图示出相对于基线2路核标准化的Bahurupi的能量消耗。如所期待的,对于SPEC整数基准,由于轻微地增加的执行时间和由联合逻辑单元和标记指令造成的额外的能量消耗,2核Bahurupi与4路基线核相比多消耗5%的能量。但是与8路基线架构相比,4核Bahurupi的能量消耗改进了29%。对于SPEC浮点和嵌入式基准,平均地,与4路核相比,2核Bahurupi的能量消耗分别地改进了26%和11%。这是由于每个核降低的电力和整体上改进的执行时间。
本实施方式提供有益的可重构的异构性架构。在运行时,如果需要执行更高的ILP应用,则可能形成两个至4个核310的联合。另一方面,在非联合模式下,架构表现为与传统的同质性多核架构相似。除了清理管线的迟延,Bahurupi的可重构开销最小。特定该指令被用来要求核加入联合或者从该联合退出。在联合模式下,附加的联合逻辑单元被简单地关闭。当形成或离开联合时,L1高速缓冲存储器313、315必须被重构以在分区的模式(对于单个核)或共享的模式(对于联合核)运行。对于重构我们假定一百个周期迟延。任何最优化的编译器对于基本块420计算入口活跃和出口活跃信息,并且根据本实施方式的编译器也在每个基本块420的开始插入标记指令500,并且如果基本块420超过用于指令数量的阈值或用于入口活跃/出口活跃寄存器数量的阈值则划分基本块。
因此,可以看出已经提供在可重构多核架构中的多个简单核,多个简单核能够动态地使它们自身适于支持具有明确的线程级并行性的多线程代码和具有指令级并行性的序列代码。此外,本文已经公开了这样的架构,该架构通过简单2路核的联合提供有益的可选参数,并能够与4路或8路超标量核有相同的表现并且有时超过4路或8路超标量核的表现。本实施方式提供可重构的异构性多形多核架构,其在运行时能够被配置为通过动态地使自身适于支持具有明确的线程级并行性的多线程代码和具有指令级并行性的序列代码最佳地匹配工作负荷。还进一步提供了硬件-软件协同解决方案,该方案需要最少的附加硬件和用于联合的编译器支持。虽然示例性实施方式已经在本发明的前述详细描述中呈现,但是应该理解,存在大量的变形。
应该进一步理解,示例性的实施方式仅是例子,并不旨在以任何方式限定本发明的范围、应用性、操作或配置。更恰当地,前述详细的说明将为所属技术领域的技术人员提供用于实现本发明的示例性实施方式的便利的路线图,应理解,在示例性实施方式中描述的、操作的方法和元件的布置和功能可以进行多种修改而不背离所附的权利要求和本发明的范围。
Claims (22)
1.一种用于在处理器中的动态异构性多形处理的方法,所述处理器包括多个处理核,所述多个处理核中的每一个被分配至多个核集群中的一个,所述多个核集群中的每一个能够动态地形成包括其处理核中的两个或更多处理核的联合,所述方法包括以下步骤:
接收包括多个串行线程的处理任务;
将所述多个串行线程中的每一个分为多个基本块,所述多个基本块中的每一个包括单一入口点和单一出口点;
创建用于所述多个基本块的控制流;
确定所述多个串行线程中的每一个是否需要多于一个处理核;
向所述多个核集群中的多个发送现在进入联合模式指令,用于处置需要多于一个处理核的所述多个串行线程中的多个;
将多个标记指令中的一个增加至需要多于一个处理核的所述多个串行线程中的所述多个的、所述多个基本块中的每一个,所述多个标记指令中的每一个包括用于处理所述多个基本块的信息;以及
当需要多于一个处理核的所述多个串行线程中的所述多个中的每一个完成时,向所述多个核集群的对应的多个发送现在退出联合模式指令。
2.根据权利要求1所述的方法,其中,确定步骤包括:响应于所述多个串行线程中的每一个的指令级并行性的复杂度,确定所述多个串行线程中的每一个是否需要多于一个处理核。
3.根据权利要求2所述的方法,其中,所述确定步骤包括:响应于确定所述多个串行线程中的一个包括低指令级并行性串行线程,确定所述多个串行线程中的一个只需要一个处理核。
4.根据权利要求2所述的方法,其中,所述确定步骤包括:响应于确定所述多个串行线程中的一个包括中指令级并行性串行线程,确定所述多个串行线程中的一个需要两个处理核的联合。
5.根据权利要求2所述的方法,其中,所述确定步骤包括:响应于确定所述多个串行线程中的一个包括高指令级并行性串行线程,确定所述多个串行线程中的一个需要四个处理核的联合。
6.根据权利要求1所述的方法,其中,所述多个标记指令的中每一个包括以分支结束数据。
7.根据权利要求1所述的方法,其中,所述多个标记指令的中每一个包括基本块长度数据。
8.根据权利要求1所述的方法,其中,所述多个标记指令的中每一个包括入口活跃寄存器和出口活跃寄存器。
9.根据权利要求8所述的方法,其中,所述多个标记指令的中每一个包括三个或少于三个的入口活跃寄存器和三个或少于三个的出口活跃寄存器。
10.一种动态异构性多形处理器,包括:
多个处理核,所述多个处理核中的每一个被分配至多个核集群中的一个;以及
联合逻辑单元,与所述多个核集群中的每一个关联,用于使得通过所述多个处理核中的、位于所述多个核集群中的关联的一个核集群内的两个或更多处理核的联合能够进行动态异构性多形处理,每个逻辑单元响应于所述多个核集群中的所述一个核集群接收联合请求命令,将所述多个处理核中的所述两个或更多处理核转换为联合。
11.根据权利要求10所述的动态异构性多形处理器,其中,所述联合逻辑单元包括全局程序计数器。
12.根据权利要求10所述的动态异构性多形处理器,其中,所述联合逻辑单元包括票据寄存器和服务寄存器。
13.根据权利要求10所述的动态异构性多形处理器,其中,所述联合逻辑单元包括全局寄存器文件。
14.根据权利要求10所述的动态异构性多形处理器,还包括与所述多个核集群中的每一个关联的集群输入控制逻辑单元,所述集群输入控制逻辑单元接收包括多个串行线程的处理任务,将所述多个串行线程中的每一个分为多个基本块,并创建用于所述多个基本块的控制流图,其中,所述多个基本块中的每一个包括单一入口点和单一出口点。
15.根据权利要求14所述的动态异构性多形处理器,其中,与所述多个核集群中的每一个关联的所述集群输入控制逻辑单元还响应于所述多个串行线程中的每一个的指令级并行性的复杂度,确定所述多个串行线程中的每一个的处理需要一个处理核还是需要处理核的联合。
16.根据权利要求15所述的动态异构性多形处理器,其中,所述集群输入控制逻辑单元响应于确定所述多个串行线程中的一个包括低指令级并行性串行线程,确定所述多个串行线程中的一个的处理需要一个处理核,所述集群输入控制逻辑单元将所述多个串行线程中的所述一个传递至所述多个核集群中的所述关联的一个核集群中的、所述多个处理核中的一个。
17.根据权利要求15所述的动态异构性多形处理器,其中,所述集群输入控制逻辑单元响应于确定所述多个串行线程中的一个包括中指令级并行性串行线程,确定所述多个串行线程中的一个的处理需要两个处理核,所述集群输入控制逻辑单元向所述多个核集群中的所述关联的一个核集群发送用于所述多个核集群中的所述关联的一个核集群的现在进入联合模式指令,以形成所述多个核集群中的关联的一个核集群的、所述多个处理核中的两个处理核的联合,并将所述多个串联线程中的所述一个传递至与所述联合关联的联合逻辑单元。
18.根据权利要求15所述的动态异构性多形处理器,其中,所述集群输入控制逻辑单元响应于确定所述多个串行线程中的一个包括高指令级并行性串行线程,确定所述多个串行线程中的一个的处理需要四个处理核,所述集群输入控制逻辑单元向所述多个核集群中的所述关联的一个核集群发送用于所述多个核集群中的所述关联的一个核集群的现在进入联合模式指令,以形成所述多个核集群中的关联的一个核集群的、所述多个处理核中的四个处理核的联合,并将所述多个串联线程中的一个传递至与所述联合关联的联合逻辑单元。
19.根据权利要求14所述的动态异构性多形处理器,其中,所述集群输入控制逻辑单元还将多个标记指令中的一个增加至需要多于一个处理核的所述多个串行线程中的多个的、所述多个基本块中的每一个,所述多个标记指令中的每一个包括用于所述多个基本块的处理的信息。
20.根据权利要求17所述的动态异构性多形处理器,其中,所述多个标记指令中的每一个包括以分支结束数据、基本块长度数据、入口活跃寄存器以及出口活跃寄存器。
21.根据权利要求20所述的动态异构性多形处理器,其中,所述多个标记指令中的每一个包括三个或少于三个的入口活跃寄存器和三个或少于三个的出口活跃寄存器。
22.一种动态异构性多形处理器,包括多个核集群,所述多个核集群中的每一个包括:
多个处理核;以及
联合逻辑单元,用于响应于集群请求命令,将所述多个处理核中的两个或更多转换为联合,所述联合逻辑单元还包括全局程序计数器寄存器、票据寄存器、服务寄存器以及用于通过所述联合使得能够进行动态异构性多形处理的全局寄存器文件。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161565559P | 2011-12-01 | 2011-12-01 | |
US61/565,559 | 2011-12-01 | ||
PCT/SG2012/000454 WO2013081556A1 (en) | 2011-12-01 | 2012-12-03 | Polymorphic heterogeneous multi-core architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104011705A true CN104011705A (zh) | 2014-08-27 |
Family
ID=48535871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280059336.4A Pending CN104011705A (zh) | 2011-12-01 | 2012-12-03 | 多形异构性多核架构 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9690620B2 (zh) |
CN (1) | CN104011705A (zh) |
SG (2) | SG10201604445RA (zh) |
WO (1) | WO2013081556A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045564A (zh) * | 2015-06-26 | 2015-11-11 | 季锦诚 | 图形处理器中的前端动态共享方法 |
CN107291535A (zh) * | 2017-05-18 | 2017-10-24 | 深圳先进技术研究院 | 多核系统的资源管理方法、资源管理设备及电子设备 |
CN107810480A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 根据性能度量的指令块分配 |
CN107810478A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 具有连续块的并行执行的基于块的架构 |
US11048517B2 (en) | 2015-06-26 | 2021-06-29 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
CN113568665A (zh) * | 2020-04-29 | 2021-10-29 | 北京希姆计算科技有限公司 | 一种数据处理装置 |
CN116300503A (zh) * | 2023-03-29 | 2023-06-23 | 广州市平可捷信息科技有限公司 | 一种多线程智能家具控制方法及系统 |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8789065B2 (en) | 2012-06-08 | 2014-07-22 | Throughputer, Inc. | System and method for input data load adaptive parallel processing |
US20130117168A1 (en) | 2011-11-04 | 2013-05-09 | Mark Henrik Sandstrom | Maximizing Throughput of Multi-user Parallel Data Processing Systems |
US8745626B1 (en) * | 2012-12-17 | 2014-06-03 | Throughputer, Inc. | Scheduling application instances to configurable processing cores based on application requirements and resource specification |
US9448847B2 (en) | 2011-07-15 | 2016-09-20 | Throughputer, Inc. | Concurrent program execution optimization |
US9361116B2 (en) | 2012-12-28 | 2016-06-07 | Intel Corporation | Apparatus and method for low-latency invocation of accelerators |
US9417873B2 (en) * | 2012-12-28 | 2016-08-16 | Intel Corporation | Apparatus and method for a hybrid latency-throughput processor |
US10140129B2 (en) | 2012-12-28 | 2018-11-27 | Intel Corporation | Processing core having shared front end unit |
US10346195B2 (en) | 2012-12-29 | 2019-07-09 | Intel Corporation | Apparatus and method for invocation of a multi threaded accelerator |
US9361113B2 (en) * | 2013-04-24 | 2016-06-07 | Globalfoundries Inc. | Simultaneous finish of stores and dependent loads |
GB2514618B (en) * | 2013-05-31 | 2020-11-11 | Advanced Risc Mach Ltd | Data processing systems |
US9792252B2 (en) | 2013-05-31 | 2017-10-17 | Microsoft Technology Licensing, Llc | Incorporating a spatial array into one or more programmable processor cores |
CN104462007B (zh) * | 2013-09-22 | 2018-10-02 | 南京中兴新软件有限责任公司 | 实现多核间缓存一致性的方法及装置 |
US9880953B2 (en) | 2015-01-05 | 2018-01-30 | Tuxera Corporation | Systems and methods for network I/O based interrupt steering |
US10169044B2 (en) | 2015-06-26 | 2019-01-01 | Microsoft Technology Licensing, Llc | Processing an encoding format field to interpret header information regarding a group of instructions |
US9952867B2 (en) | 2015-06-26 | 2018-04-24 | Microsoft Technology Licensing, Llc | Mapping instruction blocks based on block size |
US20160378491A1 (en) * | 2015-06-26 | 2016-12-29 | Microsoft Technology Licensing, Llc | Determination of target location for transfer of processor control |
US9720693B2 (en) * | 2015-06-26 | 2017-08-01 | Microsoft Technology Licensing, Llc | Bulk allocation of instruction blocks to a processor instruction window |
US10175988B2 (en) | 2015-06-26 | 2019-01-08 | Microsoft Technology Licensing, Llc | Explicit instruction scheduler state information for a processor |
US9940136B2 (en) * | 2015-06-26 | 2018-04-10 | Microsoft Technology Licensing, Llc | Reuse of decoded instructions |
US10409606B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Verifying branch targets |
US10191747B2 (en) | 2015-06-26 | 2019-01-29 | Microsoft Technology Licensing, Llc | Locking operand values for groups of instructions executed atomically |
US10409599B2 (en) | 2015-06-26 | 2019-09-10 | Microsoft Technology Licensing, Llc | Decoding information about a group of instructions including a size of the group of instructions |
US9946548B2 (en) * | 2015-06-26 | 2018-04-17 | Microsoft Technology Licensing, Llc | Age-based management of instruction blocks in a processor instruction window |
US10095519B2 (en) | 2015-09-19 | 2018-10-09 | Microsoft Technology Licensing, Llc | Instruction block address register |
US10180840B2 (en) | 2015-09-19 | 2019-01-15 | Microsoft Technology Licensing, Llc | Dynamic generation of null instructions |
US20170083318A1 (en) * | 2015-09-19 | 2017-03-23 | Microsoft Technology Licensing, Llc | Configuring modes of processor operation |
US10198263B2 (en) | 2015-09-19 | 2019-02-05 | Microsoft Technology Licensing, Llc | Write nullification |
JP6167193B1 (ja) * | 2016-01-25 | 2017-07-19 | 株式会社ドワンゴ | プロセッサ |
US11687345B2 (en) | 2016-04-28 | 2023-06-27 | Microsoft Technology Licensing, Llc | Out-of-order block-based processors and instruction schedulers using ready state data indexed by instruction position identifiers |
US20180032335A1 (en) * | 2016-07-31 | 2018-02-01 | Microsoft Technology Licensing, Llc | Transactional register file for a processor |
US11042381B2 (en) * | 2018-12-08 | 2021-06-22 | Microsoft Technology Licensing, Llc | Register renaming-based techniques for block-based processors |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025695A (zh) * | 2005-10-17 | 2007-08-29 | 威盛电子股份有限公司 | 多核计算机系统驱动程序的支持多执行绪指令执行的方法 |
US20090328047A1 (en) * | 2008-06-30 | 2009-12-31 | Wenlong Li | Device, system, and method of executing multithreaded applications |
US20110107060A1 (en) * | 2009-11-04 | 2011-05-05 | International Business Machines Corporation | Transposing array data on simd multi-core processor architectures |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7398374B2 (en) * | 2002-02-27 | 2008-07-08 | Hewlett-Packard Development Company, L.P. | Multi-cluster processor for processing instructions of one or more instruction threads |
US7673295B1 (en) * | 2004-04-27 | 2010-03-02 | Sun Microsystems, Inc. | System and method for compile-time non-concurrency analysis |
US7948500B2 (en) * | 2007-06-07 | 2011-05-24 | Nvidia Corporation | Extrapolation of nonresident mipmap data using resident mipmap data |
CN101566955A (zh) * | 2008-04-21 | 2009-10-28 | 安捷伦科技有限公司 | 多线程化图标编程系统 |
US8261273B2 (en) * | 2008-09-02 | 2012-09-04 | International Business Machines Corporation | Assigning threads and data of computer program within processor having hardware locality groups |
US20110040772A1 (en) * | 2009-08-17 | 2011-02-17 | Chen-Yu Sheu | Capability Based Semantic Search System |
-
2012
- 2012-12-03 WO PCT/SG2012/000454 patent/WO2013081556A1/en active Application Filing
- 2012-12-03 SG SG10201604445RA patent/SG10201604445RA/en unknown
- 2012-12-03 CN CN201280059336.4A patent/CN104011705A/zh active Pending
- 2012-12-03 SG SG11201402727WA patent/SG11201402727WA/en unknown
- 2012-12-03 US US14/360,263 patent/US9690620B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101025695A (zh) * | 2005-10-17 | 2007-08-29 | 威盛电子股份有限公司 | 多核计算机系统驱动程序的支持多执行绪指令执行的方法 |
US20090328047A1 (en) * | 2008-06-30 | 2009-12-31 | Wenlong Li | Device, system, and method of executing multithreaded applications |
US20110107060A1 (en) * | 2009-11-04 | 2011-05-05 | International Business Machines Corporation | Transposing array data on simd multi-core processor architectures |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045564A (zh) * | 2015-06-26 | 2015-11-11 | 季锦诚 | 图形处理器中的前端动态共享方法 |
CN107810480A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 根据性能度量的指令块分配 |
CN107810478A (zh) * | 2015-06-26 | 2018-03-16 | 微软技术许可有限责任公司 | 具有连续块的并行执行的基于块的架构 |
US11048517B2 (en) | 2015-06-26 | 2021-06-29 | Microsoft Technology Licensing, Llc | Decoupled processor instruction window and operand buffer |
CN107810480B (zh) * | 2015-06-26 | 2022-01-25 | 微软技术许可有限责任公司 | 根据性能度量的指令块分配 |
US11755484B2 (en) | 2015-06-26 | 2023-09-12 | Microsoft Technology Licensing, Llc | Instruction block allocation |
CN107291535A (zh) * | 2017-05-18 | 2017-10-24 | 深圳先进技术研究院 | 多核系统的资源管理方法、资源管理设备及电子设备 |
CN107291535B (zh) * | 2017-05-18 | 2020-08-14 | 深圳先进技术研究院 | 多核系统的资源管理方法、资源管理设备及电子设备 |
CN113568665A (zh) * | 2020-04-29 | 2021-10-29 | 北京希姆计算科技有限公司 | 一种数据处理装置 |
CN113568665B (zh) * | 2020-04-29 | 2023-11-17 | 北京希姆计算科技有限公司 | 一种数据处理装置 |
CN116300503A (zh) * | 2023-03-29 | 2023-06-23 | 广州市平可捷信息科技有限公司 | 一种多线程智能家具控制方法及系统 |
CN116300503B (zh) * | 2023-03-29 | 2023-08-18 | 广州市平可捷信息科技有限公司 | 一种多线程智能家具控制方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
SG11201402727WA (en) | 2014-06-27 |
SG10201604445RA (en) | 2016-07-28 |
WO2013081556A1 (en) | 2013-06-06 |
US20140331236A1 (en) | 2014-11-06 |
US9690620B2 (en) | 2017-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104011705A (zh) | 多形异构性多核架构 | |
CN108027769B (zh) | 使用寄存器访问指令发起指令块执行 | |
CN108027772B (zh) | 用于逻辑处理器的不同的系统寄存器 | |
CN108027770B (zh) | 用于数据流isa的密集读取编码 | |
CN108027731B (zh) | 针对基于块的处理器的调试支持 | |
CN108027771B (zh) | 基于块的处理器核复合寄存器 | |
CN108027767B (zh) | 寄存器读取/写入排序 | |
CN110249302B (zh) | 在处理器核上同时执行多个程序 | |
CN108027773B (zh) | 存储器访问指令顺序编码的生成和使用 | |
Ipek et al. | Core fusion: accommodating software diversity in chip multiprocessors | |
US8661449B2 (en) | Transactional computation on clusters | |
US20170083343A1 (en) | Out of order commit | |
US10061584B2 (en) | Store nullification in the target field | |
CN107810477A (zh) | 解码的指令的重复使用 | |
CN102902512A (zh) | 一种基于多线程编程及消息队列的多线程并行处理方法 | |
Geng et al. | Elasticpipe: An efficient and dynamic model-parallel solution to dnn training | |
US20170083330A1 (en) | Multi-nullification | |
WO2017223004A1 (en) | Load-store queue for block-based processor | |
CN104182204A (zh) | 融合if-then指令的微处理器 | |
CN111221575A (zh) | 一种乱序高性能处理器的寄存器重命名方法及系统 | |
Capalija et al. | Microarchitecture of a coarse-grain out-of-order superscalar processor | |
US20180329708A1 (en) | Multi-nullification | |
Chiu et al. | A unitable computing architecture for chip multiprocessors | |
Shah | Single Issue Instruction Dispatcher Based on Tomasulo’s Algorithm | |
Mishra | Parallelize streaming applications on Microgrid CPUs: A novel application on a scalable, multicore architecture. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20140827 |