CN106030517B - 用于仿真共享内存架构中的长延迟操作的架构 - Google Patents

用于仿真共享内存架构中的长延迟操作的架构 Download PDF

Info

Publication number
CN106030517B
CN106030517B CN201480070278.4A CN201480070278A CN106030517B CN 106030517 B CN106030517 B CN 106030517B CN 201480070278 A CN201480070278 A CN 201480070278A CN 106030517 B CN106030517 B CN 106030517B
Authority
CN
China
Prior art keywords
pipeline
memory access
memory
processor architecture
long delay
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201480070278.4A
Other languages
English (en)
Other versions
CN106030517A (zh
Inventor
马尔蒂·佛塞尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Valtion Teknillinen Tutkimuskeskus
Original Assignee
Valtion Teknillinen Tutkimuskeskus
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Valtion Teknillinen Tutkimuskeskus filed Critical Valtion Teknillinen Tutkimuskeskus
Publication of CN106030517A publication Critical patent/CN106030517A/zh
Application granted granted Critical
Publication of CN106030517B publication Critical patent/CN106030517B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30029Logical and Boolean instructions, e.g. XOR, NOT
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
    • G06F9/3873Variable length pipelines, e.g. elastic pipeline
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros

Abstract

用于仿真共享内存(ESM)架构的处理器架构布置,包括若干多线程处理器,优选地多个多线程处理器,每个多线程处理器设置有交错的线程间流水线,其中流水线包括多个串联布置的用于对数据执行算数、逻辑以及可选地其它操作的多个功能单元,其中较低延迟的一个或多个功能单元被放置在所述流水线中位于内存访问区段之前,并且用于执行与较长延迟相关联的较复杂操作的一个或多个长延迟单元(LLU)被放置成操作上与内存访问区段并行。在一些实施方案中,流水线可以包含与内存访问区段并行的多个分支,每个分支包含至少一个长延迟单元。

Description

用于仿真共享内存架构中的长延迟操作的架构
技术领域
本发明总体上涉及计算机科学和计算机架构。具体而言,本发明涉及与仿真共享内存架构有关的长延迟操作的执行。
背景技术
在SMA(共享内存架构)中,数据和程序分区通常通过将需要多线程处理的数据放进共享内存并且将程序更加独立地划分给处理器来实现,由此使得与消息传递(MPA)架构相比而言编程更容易,在消息传递架构中,处理始终在本地发生并且程序员相应地负责将数据四处移动。遗憾地是,大多数SMA使用由多个互联的处理器-缓存器对组成的分布式共享内存架构,这使得缓存器一致性(以及延时容许度)和同步性维护非常昂贵。这甚至可能破坏它们在通信密集型问题方面的表现。
为解决例如上述问题,已经引入了仿真共享内存(ESM)或共享内存仿真、架构。它们包括经由高吞吐互通网络连接到通常一致且同步可访问的共享内存的一组多线程处理器。通过重叠的正在进行的内存引用隐藏了内存系统延时,并且建立了保证机器指令级的同步性的特殊的低成本同步机制。虽然实际的硬件架构包括物理分布式内存,但是ESM系统为用户提供了理想的共享内存感知。从理论的角度看,这些架构试图模拟抽象的并行随机存取机(PRAM),该并行随机存取机由于它的简单性和表现力而通常被用作用于描述和分析计算问题的内在并行性以及执行并行算数的性能和成本的模型。PRAM模型通常指的是一组在相同时钟下工作的处理器以及与处理器连接的统一单步可访问的共享内存。
因此,ESM是一种解决关于片上多处理器(CMP)的可编程性和性能可扩展性问题的可行技术,因为ESM产生了在机器指令的执行中隐含的同步性、有效的延时隐藏技术以及足够的带宽来路由即使具有大量随机和并发访问的工作负荷的所有内存引用。同步执行被认为使编程更加容易,因为程序员不需要在每次全局内存访问后明确地同步执行的线程,而是能够依靠硬件来自动地处理此事,然而例如在消息传递架构(MPA)中,程序员负责明确地定义通信、同步子任务以及描述线程之间数据和程序化分,这使得MPA编程困难。在共享内存仿真中使用的延时隐藏使用高吞吐计算方案,其中当线程引用全局共享内存时执行其他线程。由于吞吐量计算方案采用从可用线程级并行中读取的并行宽松度,该吞吐量计算方案被认为与传统的对称多处理器和非统一内存访问(NUMA)系统而言提供了增强的可扩展性,所述传统的对称多处理器和非统一内存访问(NUMA)系统依靠窥探或基于目录的缓存器一致性机制并且因此遭受到有限带宽或目录访问延时以及繁重的一致性通信维护的问题。
最近,已经提出可扩展的ESM架构包含步骤缓存器(step caches)来实现PRAM的并行读并行写(CRCW)内存访问变型,这进一步地简化了编程并且在某些情况下通过对数因子增强了性能。在附着至步骤缓存器以约束步骤缓存器的关联性的暂存器的帮助下还实现了一种支持常量执行时间多(-前置)操作的机制,该机制实现PRAM模型的更强大的多操作并行读并行写(MCRCW)变型。例如,出版物1:M.Forsell,Step Caches—a Novel Approach toConcurrent Memory Access on Shared Memory MP-SOCs(步骤缓存器——一种在共享内存多处理器-片上系统上并行内存访问的新方法),第23次IEEE NORCHIP会议记录,2005年11月21-22日,Oulu,芬兰,74-77;2:M.Forsell,Reducing the associativity and sizeof step caches in CRCW operation(减少CRCW操作中步骤缓存器的关联性和大小),第8届并行分布式计算模型研究进展研讨会(联合第20届IEEE国际并行分布式处理专题研讨会,IPDPS’06),2006年4月25日,Rhodes,希腊;3:M.Forsell,Realizing Multioperationsfor Step Cached MP-SOCs(实现用于步骤缓存多处理器-片上系统的多操作),2006年片上系统(SOC'06)国际研讨会会议记录,2006年11月14-16日,Tampere,芬兰,77-82.;4:M.Forsell,TOTAL ECLIPSE—An Efficient Architectural Realization of theParallel Random Access Machine(TOTAL ECLIPSE—一种高效的并行随机存取机的结构实现),由Alberto Ros主编的Parallel and Distributed Computing(并行与分布式计算),INTECH,维也纳,2010,39-64;以及5:M.Forsell和J.Roivainen,Supporting OrderedMultiprefix Operations in Emulated Shared Memory CMPs(在仿真共享内存CMP中支持有序多前置操作),2011年并行和分布式处理技术与应用国际会议(PDPTA'11)的会议记录,2011年7月18-21日,洛杉矶,美国,506-512,上述出版物考虑了这样的解决方案的不同方面并且它们的全部内容通过引用方式纳入本文。多(-前置)操作能够被定义为用于许多基础操作(例如ADD、SUB、MAX等),并且由于能够表达并行算法,多(-前置)操作被认为是并行主类型(primitives)。多(-前置)操作能够用于被多个处理器同时访问的同步和并行数据结构,而没有竞争情况和异步执行线程的架构的其他异常情况。
图1中,示出了在硅平台上仿真共享内存的可扩展架构100的高级例示图。该架构包括经由物理可扩展高带宽互联网络108连接到物理上分布式但是逻辑上共享的(数据)内存M1、M2、M3、…、Mp112的一组处理器(核)P1、P2、P3、…、Pp102。与数据内存112连接的主动内存单元110能够被认为是用于处理内存引用的内存控制逻辑单元。例如,主动内存单元110被布置用于管理在例如多(-前置)操作期间涉及其中多个内存引用指向相同内存位置的情况的计算。指令内存模块I1、I2、I3、…、Ip 104被配置用于为每个处理器102存储程序代码。为了通过基于分布式内存的实现方式有效地仿真共享内存,处理器102是利用Tp-阶段循环的、交错的线程间的流水线(Tp≥网络平均延时)变成多线程的。PRAM模型与架构链接,使得流水线中完整的周期通常对应于单个PRAM步骤。在多线程执行的步骤中(关于流水线整体,即包括实际执行阶段的所有流水线阶段),CMP的每个处理器的每个线程执行包括至多一个共享内存引用子指令的指令。因此步骤持续多个、至少Tp+1个时钟周期。
在所描述的架构中,步骤缓存器是其中数据仅持续有效到正在进行的多线程执行步骤结束的总体关联式内存缓冲区。步骤缓存器对并发访问的主要贡献在于它们对于每个引用内存位置步进式地过滤掉除了首次引用之外的所有东西。这将每个位置的请求数量从P Tp减少到P,假定Tp≥P,允许在单端口内存模块上顺序处理所述请求。暂存器是如下的可寻址内存缓冲区,其在处理用于多操作的实际的处理器内部和处理器间的计算的步骤缓存器以及最少的核上与核外ALU(算数逻辑单元)的帮助下,用于存储内存访问数据以保持在实现多操作中受限制的步骤缓存器的关联性。暂存器可以与步骤缓存器联合以建立所谓的暂存器步骤缓存器单元S1、S2、S3、…、Sp106。
上述方案的一个基础的想法实际是为每个处理器核102分配一组以交错的方式高效执行的线程并且隐藏网络延时。随着一个线程产生内存引用,所执行的线程被改变并且下一个线程能够产生其内存请求依次类推。只要线程的内存引用的应答在线程返回执行前到达处理器核,将不发生内存延迟。这需要网络带宽足够高并且在流水线内存访问通信中能够避开热点。例如,通过使用在步骤间的弹性同步波能够保证接连指令间的同步。
图2以200示出了ESM CMP架构的一个实例,该架构包含例如与数据内存模块112和暂存器206B连接的上述主动内存单元112B(具有ALU以及指令读取器)。网络108可以是充当作为具有开关108B的高带宽流水线内存系统的网格状互联网络。当线程经由网络108引用相同的可访问的分布式共享内存时,通过执行其他线程来隐藏内存访问延时。通过有效死锁自由互通架构来避免通信中引用和热点的堵塞,该架构的特征在于具有高带宽(对分带宽≥P/4)以及在分布式内存模块上内存位置随机哈希(hashing)。对应于其中每个线程执行单个指令的单个PRAM步骤,指令执行逐步发生。
尽管具有上述许多优点,ESM系统已经显现出难于以真正最佳方式实现。利用步骤缓存器和暂存器技术支持猛烈并发的内存访问和多(前置)操作的物理可行内存单元(MU)很容易理解为强大的仿真共享内存架构如REPLICE(消除片上多处理器的性能和可编程性局限的架构)的一个关键组成部分,所述REPLICA本质上是一种可配置的ESM。例如,这样的MU可以被配置成将传出的内存引用发送到共享内存系统,并且等待和接收来自该共享内存系统的可能的应答。
图3以300示出了利用例如步骤缓存器的典型MCRCW ESM处理器的高级方框图和流水线。在基于步骤缓存器的MCRCW(C)ESM CMP中的处理器包括A ALU、M内存单元(MU)、分布式或统一寄存器块、序列发生器和一些胶合逻辑。图中,Ax 302指的是ALU x,IF 308指的是指令读取逻辑,MEM 304指的是内存单元级数,OS 306指的是操作数选择逻辑,以及SEQ 310指的是序列器。如图中所示,ALU 302逻辑上位于内存单元等待段之前和之后。
一般而言,在现代处理器架构中由ALU负责的基于整数的算术运算包括加、减、乘以及除。而且,ALU通常负责执行逻辑运算,该逻辑运算可以包括将例如两个数据元素互相比较以区分哪个更小/更大或它们是否相等,以及根据这种比较的结果做出相关的决定。
然而,可以分配专用功能单元用于执行例如涉及特别复杂性的计算的某些具体任务和操作。这种复杂或者其他方面特殊的操作的执行可能要求额外的逻辑或硬件,并且例如与基础ALU操作相比,需要更多数量的时钟周期或大体上只是需要更长时间完成,即,导致较长延迟。
在处理器架构中,可以设置数个并列处理路径,每个路径潜在地设置有利用在该具体路径上布置的硬件实施的特殊目的或专门任务。然而,由相关联元件和路径中发生的相关处理导致的延迟通常会增加处理器流水线结构中指令进程的总体执行时间。
发明内容
本发明的目的在于至少缓解通过已知的ESM布置还未完全满意解决的一个或多个上述问题,并且提供用于为此有效地执行长延迟操作诸如除法或应用专用操作的可行解决方案。
所述目的通过根据本发明的处理器架构的实施方案来实现。
因此,在本发明的一个方面,一种用于仿真共享内存(ESM)架构的处理器架构布置,包括:
若干多线程处理器,优选地多个多线程处理器,每个多线程处理器设置有交错的线程间流水线,
其中流水线包括多个串联布置的用于对数据执行算数、逻辑以及可选地其它操作的多个功能单元,其中较低延迟的一个或多个功能单元被放置在所述流水线中位于内存访问区段之前,并且用于执行与较长延迟相关联的较复杂操作的一个或多个长延迟单元被放置成操作上与内存访问区段并行。
可选地,还存在多个功能单元中的一个或多个功能单元功能上被定位在内存访问区段之后,这些一个或多个功能单元优选至少大体上具有较低延迟,即关于至少大部分所述单元。
在一个实施方案中,多个功能单元包括若干ALU。
在另一个补充或替代实施方案中,包括至少一个单元的另外若干个长延迟单元被放置成操作上与上述一个或多个长延迟单元并行。可选地,流水线从而至少在内存访问区段(与其并行)期间可以包含两个或更多个分支或分支部分,其中,每个分支包括被配置成在内存访问期间操作的至少一个专用长延迟单元。逻辑上,这些相互并行的分支可以被定位成与内存访问区段之前和之后的剩余功能单元串联。
在另外一个实施方案中,所包括的长延迟单元中的至少两个或更多个链接在一起成为至少一个链,其中数据可以从一个单元传递至另一个单元。链接的功能单元可被配置成例如对输入数据(操作数)执行相互不同的操作。
然而,在另外一个实施方案中,通过预定(子)指令操作字段和指令或“指令字”中设置的关联值控制至少部分功能单元。
在又一个实施方案中,用于功能单元的操作数是在流水线的操作数选择阶段中根据指令(字)中给定的操作数选择字段(数值)确定的。用于功能单元的操作数还可以从同一链中连接至该功能单元的前一个功能单元继承。功能单元之间的连接可以通过经由指令字控制的若干多路复用器实现。
在另外一个实施方案中,至少一个长延迟单元被配置成执行除法、平方根或应用专用操作。长延迟单元可以补充(更传统的)ALU,带来各种各样的算数或大体上带来对流水线和讨论的整个处理器架构的操作支持。
在另外一个实施方案中,至少一个长延迟单元内部有流水线。
本发明的用途是根据实施方案从各种特性中显露出来的。本发明基本上允许在仿真共享内存计算机中单个步骤的多线程内执行长延迟操作(诸如除法),即便这些操作通常需要多个执行步骤。因为流水线的内存等待区段可以实际上与实现长延迟操作的逻辑融合,程序员领会在单个步骤中执行的长延迟操作,并且在任何情况下,由执行所引起的延迟隐藏在由内存访问所引起的延迟内。所获取的性能增加方面的益处在例如基于多核处理器计算机和它们的编程的背景下是明显的。
短语“若干(a number of)”在本文中指从一(1)开始的任何正整数,例如一、二或三。
短语“多个(a plurality of)”在文中指从二(2)开始的任何正整数,例如二、三或四。
术语“操作上(operatively)”、“逻辑上(logically)”以及“功能上(functionally)”在本文中可替换地使用,尤其是与“并行(parallelism)”、“并行元件(parallel elements)”或“并行功能(parallel functionalities)”相关的短语连用时,以区分于物理的或者仅物理的并行,即单元的仅物理并行布局。
附图说明
接下来,将参照附图详细地描述本发明,在附图中:
图1为在硅平台上仿真共享内存的可行的可扩展架构的方框图。
图2为可行的ESM架构(本质上是CMP ESM架构)的另一个示意图。
图3为MCRCW ESM处理器的一个实施方案的高级方框图和流水线图示。
图4示出了根据本发明的流水线架构的一个实施方案。
图5示出了根据本发明的流水线架构的另一个实施方案。
具体实施方式
在上文中已结合与本发明的由来相关的背景技术和历史数据两者的描述考虑了图1至图3。
图4示出了本发明的一个实施方案,包括ESM流水线架构400,该ESM流水线架构400具有多个(N个)长延迟单元(LLU)402b以及其他功能单元(FU)诸如(普通或较低延迟)ALU402、402c。这些其他功能单元诸如ALU可以放置在402之前和402c之后的内存访问区段412,从而在LLU 402b处。
图中功能单元402、402b、402c的布局仅仅是示例性的,并且在其他实施方案中,其放置位置、数量和性质/延迟可以不同于所示出的放置位置、数量和性质/延迟。功能单元402、402b、402c已设置有与通用标识符A(LU)和LLU相关的唯一标识符,以表明下述事实:单元402、402b、402c可以也在相同通用类型(A/LLU)内在结构和/或功能方面相互不同。然而,单元402、402b、402c中的至少一些可以在结构和/或操作方面相互类似。
IF 408指的是指令读取逻辑,MEM 412a指通常持续一时钟周期的单个内存单元阶段,以及OS 406指具有寄存器文件读/写访问动作的操作数选择逻辑。SEQ 410指序列发生器。
一般而言,操作数是由流水线开始处的负责逻辑406根据指令字中对应的操作数选择字段被选择的。可以将操作数经由若干寄存器管道传递至功能单元。
如上所述,长延迟单元402b已被设计用于执行较复杂操作,例如除法和应用专用操作,并且潜在地被组织为一个或多个单元链驻留在与内存单元等待区段并行并且连接在整个ALU链或流水线结构的中间。
通过将至少一些长延迟单元402b布置为功能上且临时地与包括多个内存(等待)阶段412a的内存访问区段412并行,如图所示,长延迟操作的执行时间可以减少到单个ESM步骤。LLU 402b可以有利地与内存访问操作同时执行它们的任务。
更加详细地考虑涉及LLU的指令的执行过程,正如ESM中剩余功能单元一样,LLU402b优选地通过指令字中的专用字段被控制。用于这些操作的操作数可以在流水线的操作数选择(OS)阶段406中被选择,或者它们可以替代地从由驻留在内存等待区段412之前的链中的ALU 402产生的结果继承。
然后按照LLU 402b的放置和/或LLU 402b之间的连接所指定的顺序,执行长延迟操作。
一般而言,两个或更多个功能单元402、402b、402c(相互相似或相互不同)诸如LLU或例如ALU 402、402c与LLU 402b的组合,可以链接在一起,使得数据可以从一个单元传递至另一个单元。链接的功能单元可以被配置成对输入数据(操作数)执行相互不同的操作。
长延迟操作的结果可以例如用作用于剩余ALU 402c或序列发生器410的操作数。为了具有整个吞吐量,LLU 402b应当内部有流水线。
因此,程序员可以在单个执行步骤期间应用最多达N个长延迟操作。如果这些操作被相应地放置到单元链中,它们可以甚至相互依赖。值得注意的是,提议的解决方案一般不会增加处理器流水线的长度。本质上,执行的内存操作应当独立于在执行步骤期间所执行的长延迟操作。
所描述的代表功能单元诸如LLU 402b以及ALU 402、402c的实体的不同物理尺寸表明下述事实:所应用的LLU 402b和/或其他功能单元402、402c的复杂性或延迟也可以相互不同。矩形所覆盖的区域/矩形在竖直方向的长度暗示了对应单元的执行时间或延迟,即与较短延迟相关联的ALU402、402c被描述成较短/较小矩形,和LLU 402b一样。
在一些实施方案中,若干功能单元诸如LLU 402b可被引入流水线,使得较大复杂性/导致较大延迟的单元在流水线中位于较少复杂性/延迟的单元后面(考虑到执行流程)。特别是参照内存访问区段412,例如,较大复杂单元可以布置为基本上与较简单单元之后的区段的端部部分并行。
图5示出了根据本发明的流水线架构500的另一个实施方案。
同样在该实施方案中,IF 408指的是指令读取逻辑,MEM 412a指通常持续一时钟周期的单个内存单元阶段,OS 406指具有寄存器文件读/写访问动作的操作数选择逻辑,以及SEQ 410指序列发生器。
在该实施方案中,流水线分别包括长延迟单元(LLU)502a、502b的分立的、功能上和逻辑上并行的分支500a、500b,以实施相关长延迟操作。分支502a、502b可以包括仅一个LLU或多个LLU和可选地一个或多个其他功能单元(FU)诸如多个ALU,以对提供至其的数据执行操作诸如预定算数和逻辑操作。分支可以具有限制的长度并且之前和/或之后可以具有公共共享流水线区段。
流水线的并行分支500a、500b可以仅与内存访问区段412并行(所看到的情况),或延伸超过内存访问区段412,从而还潜在地在内存访问区段412之前或之后。在一些实施方案中,另一方面分支可以限定比内存访问区段412短的流水线区段。因此,位于并行分支500a中的实际功能单元诸如LLU还可以被配置成如附图所示的基本上相互(功能上/临时地)并行,其中LLU 502a、502b已被描述成相对于流水线完全并行。
通过示例,在图中通过对应块的尺寸或长度再次描述了每个具体功能单元的延迟或复杂性。在所示出的实施方案中,分支包括相等数量的相等复杂(导致相同或相似延迟)LLU 502,但是本领域技术人员当然意识到在各种其他可行实施方案中,分支内和/或分支之间的若干LLU可以具有相互不同复杂性/延迟。在一些实施方案中,放置在分支中的LLU被选择,使得并行分支所造成的延迟基本上相等和/或保留在内存访问区段412的整个持续时间内。在一些实施方案中,具有较长延迟的LLU被布置在流水线中晚于具有较短延迟的LLU。
布置在每个分支500a、500b中的两个或更多个(可选地所有)LLU502a、502b可以根据上文阐述的原则被链接以在其间传递数据等。链接可以通过利用可用虚拟指令层面的并行而增加所获取的性能。
一般而言,可以通过例如VLIW样式的子指令操作字段对功能单元402、402b、402c、502a、502b进行控制。在已通过功能单元执行目标操作之后,其结果可以经由如下元件提供给在相应链中位于该单元之后的功能单元,所述元件包括例如通过当前指令字被控制的多路复用器。
最终,根据本公开文本和常用知识,本领域技术人员可以应用所提供的教导以在每个具体的使用情况下通过必要的修改、删除以及添加(如果有的话),实现由所附的权利要求限定的本发明的范围。大体上,正如本领域技术人员容易理解的,本文中阐述的各项原则也可以至少选择性地用在未落在本文采用的ESM定义下的处理器架构中。

Claims (13)

1.一种用于仿真共享内存架构的处理器架构,包括:
多个多线程处理器,每个多线程处理器设置有交错的线程间流水线(400、500),所述多线程处理器是利用Tp阶段循环的、交错的线程间流水线(400、500)变成多线程的,Tp≥网络平均延时,其中在多线程执行的步骤中,每个处理器的每个线程执行包括至多一个共享内存引用子指令的指令,因此步骤持续多个、至少Tp+1个时钟周期,并且其中一组线程以交错的方式执行,随着一个线程产生对所述仿真共享内存架构的物理上分布式的且逻辑上共享的数据内存的内存引用,所执行的线程被改变并且下一个线程能够产生其内存请求,
其中所述流水线(400、500)包括内存访问区段和包括多个串联布置的用于对数据执行算数、逻辑以及其它操作的多个功能单元(402、402b、402c、502a、502b)的处理路径,其中属于所述多个功能单元的较低延迟的一个或多个功能单元(402)被放置在所述流水线中位于内存访问区段(412)之前,并且属于所述多个功能单元的用于执行与较长延迟相关联的较复杂操作的一个或多个长延迟单元(402b、502a)被放置为操作上与所述内存访问区段(412)并行,使得与较长延迟相关联的较复杂操作与内存访问操作同时执行,并且其中执行的所述内存访问操作独立于在执行步骤期间所执行的所述与较长延迟相关联的较复杂操作。
2.根据权利要求1所述的处理器架构,其中,若干功能单元(402c)功能上被放置在所述流水线中位于所述内存访问区段(412)之后。
3.根据前述权利要求1或2所述的处理器架构,其中,至少两个长延迟单元链接在一起,其中,一长延迟单元被配置成将操作结果作为操作数传递至链中的后续单元。
4.根据前述权利要求1或2所述的处理器架构,其中,较低延迟的一个或多个功能单元包括至少一个ALU用于整数算数。
5.根据前述权利要求1或2所述的处理器架构,其中,所述流水线包括至少两个并行分支(500a、500b),每个分支包括与所述内存访问区段(412)并行的至少一个长延迟单元(502a、502b)。
6.根据权利要求5所述的处理器架构,其中,至少两个分支相对于所述流水线延伸超过所述内存访问区段,延伸在所述内存访问区段之前和/或之后。
7.根据权利要求6所述的处理器架构,其中,分支中的若干功能单元功能上被放置在所述内存访问区段之前和/或之后。
8.根据前述权利要求1或2所述的处理器架构,包括在操作执行延迟方面具有相互不同复杂性的与所述内存访问区段并行的至少两个长延迟单元(402b)。
9.根据权利要求8所述的处理器架构,其中,与较长延迟相关联的长延迟单元逻辑上被定位为与内存存储区段的端部部分并行并且在与较短延迟相关联的长延迟单元之后。
10.根据前述权利要求1或2所述的处理器架构,其中,一个或多个功能单元通过指令字的若干操作选择字段(408)被控制。
11.根据前述权利要求1或2所述的处理器架构,其中,用于功能单元的若干操作数是根据指令字中给定的若干操作数选择字段在所述流水线的操作数选择阶段(406)中被确定的。
12.根据前述权利要求1或2所述的处理器架构,其中,至少一个长延迟单元被设计用于除法、根计算或应用专用目的。
13.根据前述权利要求1或2所述的处理器架构,包括被配置用于对输入数据执行一个或多个操作的至少一个长延迟单元和被配置用于对输入数据执行一个或多个其他操作的至少一个其他长延迟单元。
CN201480070278.4A 2013-12-19 2014-12-16 用于仿真共享内存架构中的长延迟操作的架构 Active CN106030517B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP13198516.0A EP2887207B1 (en) 2013-12-19 2013-12-19 Architecture for long latency operations in emulated shared memory architectures
EP13198516.0 2013-12-19
PCT/FI2014/051002 WO2015092131A1 (en) 2013-12-19 2014-12-16 Architecture for long latency operations in emulated shared memory architectures

Publications (2)

Publication Number Publication Date
CN106030517A CN106030517A (zh) 2016-10-12
CN106030517B true CN106030517B (zh) 2020-02-28

Family

ID=49916857

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480070278.4A Active CN106030517B (zh) 2013-12-19 2014-12-16 用于仿真共享内存架构中的长延迟操作的架构

Country Status (6)

Country Link
US (1) US10127048B2 (zh)
EP (1) EP2887207B1 (zh)
JP (1) JP6568859B2 (zh)
KR (1) KR102269157B1 (zh)
CN (1) CN106030517B (zh)
WO (1) WO2015092131A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3188025A1 (en) * 2015-12-29 2017-07-05 Teknologian Tutkimuskeskus VTT Oy Memory node with cache for emulated shared memory computers
CN111797107B (zh) * 2020-07-08 2024-02-09 贵州易鲸捷信息技术有限公司 混合乐观锁和悲观锁的数据库事务并发控制方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US506512A (en) 1893-10-10 Territory
US5867649A (en) * 1996-01-23 1999-02-02 Multitude Corporation Dance/multitude concurrent computation
AU6586898A (en) * 1997-03-21 1998-10-20 University Of Maryland Spawn-join instruction set architecture for providing explicit multithreading
WO2000008555A1 (en) * 1998-08-06 2000-02-17 Koninklijke Philips Electronics N.V. Data processing device
US6279100B1 (en) * 1998-12-03 2001-08-21 Sun Microsystems, Inc. Local stall control method and structure in a microprocessor
US6895479B2 (en) * 2000-11-15 2005-05-17 Texas Instruments Incorporated Multicore DSP device having shared program memory with conditional write protection
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
US7131114B2 (en) 2001-07-16 2006-10-31 Texas Instruments Incorporated Debugger breakpoint management in a multicore DSP device having shared program memory
EP1367485B1 (en) * 2002-05-31 2012-10-31 STMicroelectronics Limited Pipelined processing
CN101359284B (zh) * 2006-02-06 2011-05-11 威盛电子股份有限公司 处理数个不同数据格式的乘法累加单元及其方法
US8756404B2 (en) * 2006-12-11 2014-06-17 International Business Machines Corporation Cascaded delayed float/vector execution pipeline
CN101021832A (zh) * 2007-03-19 2007-08-22 中国人民解放军国防科学技术大学 支持局部寄存和条件执行的64位浮点整数融合运算群
US20080313438A1 (en) * 2007-06-14 2008-12-18 David Arnold Luick Unified Cascaded Delayed Execution Pipeline for Fixed and Floating Point Instructions
CN103150146B (zh) * 2013-01-31 2015-11-25 西安电子科技大学 基于可扩展处理器架构的专用指令集处理器及其实现方法
US9535488B2 (en) * 2013-08-28 2017-01-03 Via Technologies, Inc. Multi-core microprocessor that dynamically designates one of its processing cores as the bootstrap processor

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
TOTAL ECLIPSE-An efficient architectural realization of the parallel random access machine;Martti Forsell等;《URL:http://cdn.intechopen.com/pdfs/10755/InTech-Total_eclipse_an_efficient_architectural_realization_of_the_parallel_random_access_machine.pdf》;20100101;第39-64页 *

Also Published As

Publication number Publication date
CN106030517A (zh) 2016-10-12
KR20170013196A (ko) 2017-02-06
EP2887207A1 (en) 2015-06-24
JP6568859B2 (ja) 2019-08-28
US10127048B2 (en) 2018-11-13
WO2015092131A1 (en) 2015-06-25
KR102269157B1 (ko) 2021-06-24
JP2017500657A (ja) 2017-01-05
EP2887207B1 (en) 2019-10-16
US20160314001A1 (en) 2016-10-27

Similar Documents

Publication Publication Date Title
EP3449359B1 (en) Out-of-order block-based processors and instruction schedulers
Volkov Understanding latency hiding on GPUs
Brodtkorb et al. Graphics processing unit (GPU) programming strategies and trends in GPU computing
Zaruba et al. Snitch: A tiny pseudo dual-issue processor for area and energy efficient execution of floating-point intensive workloads
US20240004666A1 (en) Floating-point supportive pipeline for emulated shared memory architectures
Kim et al. Using intra-core loop-task accelerators to improve the productivity and performance of task-based parallel programs
CN106030517B (zh) 用于仿真共享内存架构中的长延迟操作的架构
Fang et al. Understanding performance gains of accelerator-rich architectures
US11061817B2 (en) Memory node with cache for emulated shared memory computers
Leback et al. Tesla vs. xeon phi vs. radeon a compiler writer’s perspective
Lilja A multiprocessor architecture combining fine-grained and coarse-grained parallelism strategies
Nicolau et al. ROPE: a statically scheduled supercomputer architecture
Wong et al. PUMICE: Processing-using-Memory Integration with a Scalar Pipeline for Symbiotic Execution
VIANELLO Development of a multi-GPU Navier-Stokes solver
Fung Dynamic warp formation: exploiting thread scheduling for efficient MIMD control flow on SIMD graphics hardware
Torng et al. Using Intra-Core Loop-Task Accelerators to Improve the Productivity and Performance of Task-Based Parallel Programs
Byun Effective data parallel computing on multicore processors
BRODTKORB et al. The full paper can be found in Journal of Parallel and Distributed Computing 73 (1): 4–13
Georg Designing a Dual Core Processor
Tullsen et al. Compiling Issues for the Simultaneous Multithreading Processor
Kim et al. GPU Design, Programming, and Trends
Koranne et al. The Synergistic Processing Element
CA2751388A1 (en) Method and system for mutli-mode instruction-level streaming

Legal Events

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