CN105814538A - 用于仿真共享内存架构的支持浮点的流水线 - Google Patents

用于仿真共享内存架构的支持浮点的流水线 Download PDF

Info

Publication number
CN105814538A
CN105814538A CN201480066972.9A CN201480066972A CN105814538A CN 105814538 A CN105814538 A CN 105814538A CN 201480066972 A CN201480066972 A CN 201480066972A CN 105814538 A CN105814538 A CN 105814538A
Authority
CN
China
Prior art keywords
floating
functional unit
subgroup
unit
internal storage
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
Application number
CN201480066972.9A
Other languages
English (en)
Other versions
CN105814538B (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.)
Finnish National Technical Research Center Joint-Stock Co
Valtion Teknillinen Tutkimuskeskus
Original Assignee
Finnish National Technical Research Center Joint-Stock Co
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 Finnish National Technical Research Center Joint-Stock Co filed Critical Finnish National Technical Research Center Joint-Stock Co
Publication of CN105814538A publication Critical patent/CN105814538A/zh
Application granted granted Critical
Publication of CN105814538B publication Critical patent/CN105814538B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3875Pipelining a single stage, e.g. superpipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or 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 or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

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)
  • Computer Hardware Design (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种用于仿真共享内存(ESM)架构的处理器架构布置,包括多个多线程处理器,每个处理器设置有交错的线程间的流水线(400)以及用于执行数据的算数和逻辑运算的多个功能单元(402、402b、402c、404、404b、404c),其中,该流水线(400)包括至少两个操作性并行的流水线分支(414、416),第一流水线分支(414)包括被布置用于执行整数运算的所述多个功能单元的第一子组(420、402b、402c),第一子组的功能单元诸如ALU(算数逻辑单元),且第二流水线分支(416)包括被布置用于执行浮点运算的所述多个功能单元的第二、非重叠子组(404、404b、404c),第二子组的功能单元诸如FPU(浮点单元),并且进一步地,其中被布置用于浮点运算的至少所述第二子组的一个或多个功能单元(404b)与流水线(400)的内存访问段(412、412a)操作性地并行设置。

Description

用于仿真共享内存架构的支持浮点的流水线
技术领域
本发明总体上涉及计算机科学与计算机体系结构。具体地,本发明涉及与仿真共享内存架构有关的流水线架构的优化。
背景技术
在SMA(共享内存架构)中,数据和程序分区通常通过将需要多线程处理的数据放进共享内存并且将程序更加独立地划分给处理器来实现,由此使得与消息传递(MPA)架构相比而言编程更容易,在消息传递架构中,处理始终在本地发生并且程序员相应地负责将数据四处移动。遗憾地是,大多数SMA使用由多个互联的处理器-缓存器对组成的分布式共享内存架构,这使得缓存器一致性(以及延时容许度)和同步性维护非常昂贵。这甚至可能破坏它们在通信密集型问题方面的表现。
为解决例如如上问题,已经引入了仿真共享内存(ESM)或共享内存仿真、架构。它们包括经由高吞吐互通网络连接到通常一致且同步可访问的共享内存的一组多线程处理器。通过重叠的正在进行的内存引用隐藏了内存系统延时,并且建立了保证机器指令级的同步性的特殊的低成本同步机制。虽然实际的硬件架构包括物理分布式内存,但是ESM系统为用户提供了理想的共享内存感知。从理论的角度看,这些架构试图模拟抽象的并行随机存取机(PRAM),该并行随机存取机由于它的简单性和表现力而通常被用作用于描述和分析计算问题的内在并行性以及执行并行算法的性能和成本的模型。PRAM模型通常指的是一组在相同时钟下工作的处理器以及与处理器连接的统一单步可访问的共享内存。
因此,ESM是一种解决关于片上多处理器(CMP)的可编程性和性能可扩展性问题的可行技术,因为ESM产生了在机器指令的执行中隐含的同步性、有效的延时隐藏技术以及足够的带宽来路由即使具有大量随机和并发访问的工作负荷的所有内存引用。同步执行被认为使编程更加容易,因为程序员不需要在每次全局内存访问后明确地同步执行的线程,而是能够依靠硬件来自动地处理此事,然而例如在消息传递架构(MPA)中,程序员负责明确地定义通信、同步子任务以及描述线程之间数据和程序化分,这使得MPA编程困难。在共享内存仿真中使用的延时隐藏使用高吞吐计算方案,其中当线程引用全局共享内存时执行其他线程。由于吞吐量计算方案采用从可用线程级并行中提取的并行宽松度,该吞吐量计算方案被认为与传统的对称多处理器和非统一内存访问(NUMA)系统而言提供了增强的可扩展性,所述传统的对称多处理器和非统一内存访问(NUMA)系统依靠窥探或基于目录的缓存器一致性机制并且因此遭受到有限带宽或目录访问延时以及繁重的一致性通信维护的问题。
最近,已经提出可扩展的ESM架构包含步骤缓存器(stepcaches)来实现PRAM的并行读并行写(CRCW)内存访问变型,这进一步地简化了编程并且在某些情况下通过对数因子增强了性能。在附着至步骤缓存器以约束步骤缓存器的关联性的暂存器的帮助下还实现了一种支持常量执行时间多(-前置)操作的机制,该机制实现PRAM模型的更强大的多操作并行读并行写(MCRCW)变型。例如,出版物1:M.Forsell,StepCaches—aNovelApproachtoConcurrentMemoryAccessonSharedMemoryMP-SOCs(步骤缓存器——一种在共享内存多处理器-片上系统上并行内存访问的新方法),第23次IEEENORCHIP会议记录,2005年11月21-22日,Oulu,芬兰,74-77;2:M.Forsell,ReducingtheassociativityandsizeofstepcachesinCRCWoperation(减少CRCW操作中步骤缓存器的关联性和大小),第8届并行分布式计算模型研究进展研讨会(联合第20届IEEE国际并行分布式处理专题研讨会,IPDPS’06),2006年4月25日,Rhodes,希腊;3:M.Forsell,RealizingMultioperationsforStepCachedMP-SOCs(实现用于步骤缓存多处理器-片上系统的多操作),2006年片上系统(SOC'06)国际研讨会会议记录,2006年11月14-16日,Tampere,芬兰,77-82.;4:M.Forsell,TOTALECLIPSE—AnEfficientArchitecturalRealizationoftheParallelRandomAccessMachine(TOTALECLIPSE—一种高效的并行随机存取机的结构实现),由AlbertoRos主编的ParallelandDistributedComputing(并行与分布式计算),INTECH,维也纳,2010,39-64;以及5:M.Forsell和J.Roivainen,SupportingOrderedMultiprefixOperationsinEmulatedSharedMemoryCMPs(在仿真共享内存CMP中支持有序多前置操作),2011年并行和分布式处理技术与应用国际会议(PDPTA'11)的会议记录,2011年7月18-21日,洛杉矶,美国,506-512,上述出版物考虑了这样的解决方案的不同方面并且它们的全部内容通过引用方式纳入本文。多(-前置)操作能够被定义为用于许多基础操作(例如ADD、SUB、MAX等),并且由于能够表达并行算法,多(-前置)操作被认为是并行主类型(primitives)。多(-前置)操作能够用于被多个处理器同时访问的同步和并行数据结构,而没有竞争情况和异步执行线程的架构的其他异常情况。
在图1中,示出了用于仿真硅平台上的共享内存的可扩展架构的高级例示图。该架构包括经由物理可扩展高带宽互联网络108连接到物理上分布式但是逻辑上共享的(数据)内存M1、M2、M3、…、Mp112的一组处理器(核)P1、P2、P3、…、Pp102。与数据内存112连接的主动内存单元110能够被认为是用于处理内存引用的内存控制逻辑单元。例如,主动内存单元110被布置用于管理在例如多(-前置)操作期间涉及其中多个内存引用指向相同内存位置的情况的计算。指令内存模块I1、I2、I3、…、Ip104被配置用于为每个处理器102存储程序代码。为了通过基于分布式内存的实现方式有效地仿真共享内存,处理器102是利用Tp-阶段循环的、交错的线程间的流水线(Tp≥网络平均延时)变成多线程的。PRAM模型与架构链接,使得流水线中完整的周期通常对应于单个PRAM步骤。在多线程执行的步骤中(关于流水线整体,即包括实际执行阶段的所有流水线阶段),CMP的每个处理器的每个线程执行包括至多一个共享内存引用子指令的指令。因此步骤持续多个、至少Tp+1个时钟周期。
在所描述的架构中,步骤缓存器是其中数据仅持续有效到正在进行的多线程执行步骤结束的总体关联式内存缓冲区。步骤缓存器对并发访问的主要贡献在于它们对于每个引用内存位置步进式地过滤掉除了首次引用之外的所有东西。这将每个位置的请求数量从PTp减少到P,假定Tp≥P,允许在单端口内存模块上顺序处理所述请求。暂存器是如下的可寻址内存缓冲区,其在处理用于多操作的实际的处理器内部和处理器间的计算的步骤缓存器以及最少的核上与核外ALU(算数逻辑单元)的帮助下,用于存储内存访问数据以保持在实现多操作中受限制的步骤缓存器的关联性。暂存器可以与步骤缓存器联合以建立所谓的暂存器步骤缓存器单元S1、S2、S3、…、Sp106。
上述方案的一个基础的想法实际是为每个处理器核102分配一组以交错的方式高效执行的线程并且隐藏网络延时。随着一个线程产生内存引用,所执行的线程被改变并且下一个线程能够产生其内存请求依次类推。只要线程的内存引用的应答在线程返回执行前到达处理器核,将不发生内存延迟。这需要网络带宽足够高并且在流水线内存访问通信中能够避开热点。例如,通过使用在步骤间的弹性同步波能够保证接连指令间的同步。
图2以200示出了ESMCMP架构的一个示例图,该架构包含例如与数据内存模块112和暂存器206B连接的上述主动内存单元112B(具有ALU以及指令读取器)。网络108可以是充当作为具有开关108B的高带宽流水线内存系统的网格状互联网络。当线程经由网络108引用相同的可访问的分布式共享内存时,通过执行其他线程来隐藏内存访问延时。通过有效死锁自由互通架构来避免通信中引用和热点的堵塞,该架构的特征在于具有高带宽(对分带宽≥P/4)以及在分布式内存模块上内存位置随机哈希(hashing)。对应于其中每个线程执行单个指令的单个PRAM步骤,指令执行逐步发生。
尽管有许多上述优点,ESM系统已经显现出难以用真正最佳方式实现。利用步骤缓存器和暂存器技术来支持猛烈并发的内存访问和多(前置)操作的物理上可行的内存单元(MU)容易理解为强大的仿真共享内存架构例如REPLICA(消除片上多处理器的性能和可编程性局限的架构)的一个关键组成部分,所述REPLICA本质上是一种可配置的ESM。这种MU将正进行的内存引用发送到共享内存系统,并且等待和接收来自共享内存系统的可能的应答。遗憾的是,在如下详细描述的现有技术MU解决方案中,底层实施细节是不存在的并且建议的布置需要相对复杂的多端口步骤缓存器和暂存器或者复杂的分类阵列和大的节点式的缓冲区。另外,现有解决方案的接收逻辑在单个时钟周期期间访问步骤缓存器和暂存器二者,并且对于所有的内存操作方面暂存器的性能受到最少两个步骤延时的影响。所有这些决定了目前可用的MU解决方案十分不切实际。
图3以300呈现了使用步骤缓存器的典型MCRCWESM处理器的高级方框图和流水线。基于MCRCW(C)ESMCMP的步骤缓存器中的处理器包括A个ALU、M个内存单元(MU)、分布的或统一的寄存器块、序列器以及某些胶合逻辑。图中Ax302指的是ALUx,IF308指的是指令读取逻辑,MEM304指的是内存单元级数,OS306指的是操作数选择逻辑,以及SEQ310指的是序列器。如图中所示,ALU302逻辑上位于内存单元等待段之前和之后。
在现代处理器架构中由ALU负责的典型的基于整数的算术运算包括加、减、乘以及除。而且,ALU通常负责执行逻辑运算,该逻辑运算可以包括将例如两个数据元素互相比较以区分哪个更小/更大或它们是否相等,以及根据这种比较的结果做出相关的决定。
然而,在许多情况下包括也能够对小数执行算术运算的SMA是必要的或至少是有益的。为了这样的目的,过去通常引入作用于浮点数的被称为浮点单元(FPU)的专用组件。可是,仅仅是将多个FPU增加到任何具体的处理器架构和相关的流水线结构细看起来,如果要仔细并高效地完成不是一件简单的任务。没有细致的考虑就在现有的架构和流水线中采用FPU很容易增加其他操作的延时(有些相当大)并且非常不必要地增加整个电路布局的复杂性。
发明内容
本发明的目的在于至少缓解通过已知的ESM布置尚未完全满意解决的一个或多个上述问题,并且因此提供一种用于高效地执行浮点运算的可行的解决方案。
本发明的目标通过根据本发明的处理器架构的实施方案来实现。
因此,在本发明的一个方面,一种用于仿真共享内存(ESM)架构的处理器架构布置,包括:
若干(优选地多个)多线程处理器,每个多线程处理器设置有交错的线程间的流水线和多个用于执行数据的算术和逻辑运算的功能单元,
其中,该流水线包括至少两个操作性并行的流水线分支,第一流水线分支包括被布置用于执行整数运算的所述多个功能单元的第一子组,第一子组中的功能单元诸如ALU,以及第二流水线分支包括被布置用于执行浮点运算的所述多个功能单元的第二、非重叠子组,第二子组中的功能单元诸如FPU,以及
进一步地其中,被布置用于浮点运算的至少所述第二子组的一个或多个功能单元与流水线的内存访问段操作性地并行设置。
还优选地,第一子组的一个或多个功能单元与流水线的内存访问段操作性地并行设置。
在一个实施方案中,第二子组的至少两个或更多个功能单元链接在一起。形成了两条或更多条功能单元链,其中,可以将数据从一个单元传递到另一个单元。链接的功能单元可以被配置为对输入数据(操作数)执行相互不同的操作。
在另一个实施方案中,在分支(诸如第一和/或第二流水线分支)中的若干功能单元功能性地位于内存之前,一些功能单元与内存访问段并行,以及一些功能单元可选地位于内存访问段之后。
在另一个实施方案中,所述第二子组的至少两个单元在关于例如时钟周期中确定的执行时间、或者延时方面具有相互不同的长度。具有较长延时的单元可以被配置用于执行较复杂的操作,反之亦然。类似的布置也可以应用于第一子组的单元。
在再一个实施方案中,至少部分功能单元是通过预定的(子-)指令操作字段和指令(或“指令字”)中提供的关联值控制的。
在又一个实施方案中,用于功能单元的操作数是根据指令(字)中给出的操作数选择字段(数值)在流水线的操作数选择阶段确定的。用于一个功能单元的操作数还可以从链中连接至该功能单元的先前功能单元继承。功能单元之间的连接可以通过由指令字控制的若干多路复用器实现。
在另一个实施方案中,功能单元的第二子组包括被配置为执行至少一个浮点运算(例如算数运算和/或逻辑运算)的至少一个单元,该浮点运算优选地选自由以下各项组成的组:加法、减法、乘法、除法、比较、从整数到浮点的转换、从浮点到整数的转换、平方根、对数或对数运算、幂以及对数的整数部分。
在一些实施方案中,所述第二子组的第一功能单元可以被配置为执行多个运算。可选地,所述第二子组的第二功能单元可以被配置为仅执行某些运算。所述某些运算可以指的是比可能由单个单元诸如前述第一单元执行的许多其他运算(诸如加法或者减法)更复杂的并且因此通常更多延时引入的运算(诸如除法或者平方根)。可选地,所述第二子组的第三功能单元可以被配置为执行相同类型(例如根)和/或复杂性(延时)的多个操作。
本发明的用途是根据其每个具体实施方案从各种特性中显露出来的。首先,通过引入并行的浮点和整数流水线或者高效流水线部分,二者可以在具有交错的线程间的流水线的多线程处理器中并且也在内存访问段期间同时起作用以及执行操作。功能单元可以巧妙地组织成若干链以进一步提高吞吐量并且使能各种各样的操作。然而,假定讨论的应用包含足够的线程级并行,即使按期执行的浮点运算是完全依赖的,仍可以捕获与仿真共享内存执行相关的指令级并行。可以在建议的解决方案中成功地使用可用的虚拟指令级并行,因此浮点运算最终可以比已知的替代方案总体执行得更快。
在一些实施方案中,所提出的流水线架构类型可以与在ESM处理器和架构的背景下尤其是设计用于处理数据内存访问的内存单元的实施方案结合起来使用。通常,对单个内存地址的同步内存引用可以通过所谓的步骤缓存器的方式实现,使得在多线程执行的单个步骤期间将每个处理器的引用有利地减到一个。可以巧妙地利用以下将更详细描述的暂存器内存来存储多-(前置)操作的中间数据。通过使用内存单元,可以获得用于高效数据内存访问的非常简单的硬件实现,同时通过在不同时钟周期期间访问改进的步骤缓存器和暂存器来减少时钟周期的长度(持续时间)。
短语“若干(anumberof)”在此指的是从一(1)开始的任何正整数,例如指的是一、二或者三。
短语“多个(apluralityof)”在此指的是从二(2)开始的任何正整数,例如指的是二、三或者四。
术语“操作性地(operatively)”、“逻辑性地(logically)”以及“功能性地(functionally)”在此可替换地使用,尤其是与“并行(parallelism)”、“并行元件(parallelelements)”或者“并行功能(parallelfunctionalities)”相关的短语连用时,以区分于物理的或者仅物理的并行,即单元的仅物理并行布局。
术语“多操作(multioperation)”在此可总体上指的是相关的累积操作,诸如实际的多前置或者别的其他方面对应的但与多前置相比没有向处理器发送返回值(即仅目标内存位置的内容因此被改变)的操作。
本发明的不同实施方案被公开在从属权利要求中。
附图说明
接着将参考所附附图更详细地描述本发明,在附图中:
图1是硅平台上的仿真共享内存的可行的可扩展架构的方框图;
图2是可行的ESM架构(本质上CMPESM架构)的另一个示意图;
图3是MCRCWESM处理器的实施方案的高级框图以及流水线示意图;
图4例示了根据本发明的流水线架构的实施方案;
图5例示了根据本发明的用于ESM处理器和流水线架构的内存单元的实施方案。
具体实施方式
上文已经结合与本发明的由来相关的背景技术和历史数据的描述考虑了图1-3。
图4例示了本发明的一种实施方案,该实施方案包括浮点感知的ESM流水线架构400。
流水线包括分别用于整数运算和浮点运算的分开的、功能性地以及逻辑性地并行的分支414、416。分支414、416包括多个功能单元(FU)诸如多个ALU402、402b、402c以及多个FPU404、404b、404c,该功能单元用于对提供给其的数据执行运算,诸如预定的算数运算和逻辑运算。功能单元的延时或者复杂性通过对应模块的大小或者长度来描述。
在图中和在其他实施方案中功能单元402、402b、402c、404、404b、404c的布局仅是示例性的,在分支414、416中布置的功能单元的位置、数字以及本质/延时可能与例示的布置不同。整数414和浮点416分支的功能单元402、402b、402c、404、404b、404c已经设置有与通用标识符A和F相关联的唯一标识符,以表明也在分支414、416中的单元402、402b、402c、404、404b、404c在结构和/或功能方面可以相互区别的事实。然而,单元402、402b、402c、404、404b、404c中的至少一些在结构和/或操作方面可以相互类似。
IF408指的是指令读取逻辑,MEM412a指的是通常持续一个时钟周期的单个内存单元阶段,OS406指的是现在具有整数和浮点寄存器文件读/写访问动作的操作数选择逻辑。浮点寄存器文件可以包括多个单精度和/或双精度FP寄存器并且配置为与整数流水线并行操作。SEQ410指的是序列器。
通常,操作数是由流水线开始处的负责逻辑406根据指令字中对应的操作数选择字段被选择的。这包括浮点寄存器文件访问以及浮点和整数部分之间的数据交换。操作数可以经由若干寄存器管道传递到功能单元。
流水线的整数分支414可以包含专用于包括算数和/或逻辑运算的整数操作的若干功能单元诸如ALU402、402b、402c,然而浮点分支416可以包含专用于包括带有小数的算数和/或逻辑运算的浮点操作的若干功能单元诸如FPU404、404b、404c。在不同分支414、416中的单元可以配置为同时执行运算。
可选地在例如浮点416或者分支414和416中的至少一些功能单元被布置为与流水线的内存访问段412的内存访问阶段412a并行操作。因此,有关的功能单元可以有利地与内存访问操作同时执行它们的任务。
在例示的实施方案中,整数分支414包括功能单元的第一子组。进一步地,功能单元的第一子组可以划分成多个段诸如三段,每段优选地包括若干功能单元,可选地为ALU。段可以相对于流水线连续设置,使得第一段优选地包括逻辑性地位于内存访问段412之前的至少一个功能单元402,第二段优选地包括逻辑性地与内存访问段412并行放置的至少一个功能单元402b,这意味着第二段的功能单元402b可以在待定数据内存访问期间执行操作,以及第三段优选地包括逻辑性地位于内存访问段412之后的至少一个功能单元402c。
进一步地,浮点分支416包括功能单元的第二子组。可以将功能单元的第二子组划分为多个段,诸如三段,每段优选地包括若干功能单元,可选地包括FPU。段可以相对于流水线连续放置,使得第一段优选地包括逻辑性地位于内存访问段412之前的至少一个功能单元404,第二段优选地包括逻辑性地与内存访问段412并行放置的至少一个功能单元404b,以及第三段优选地包括逻辑性地位于内存访问段412之后的至少一个功能单元404c。
本领域技术人员应该认识到根据使用场景具有不同分段(考虑例如段的位置、编号以及组成)的其他实施方案也是可行的选择。可选地,在功能单元诸如ALU和/或FPU方面的空段也可以位于流水线架构中,例如与内存访问段412并行放置。
可选地,与更复杂的任务诸如除或(平方)根计算相关的若干功能单元402b、404b可以在对应的流水线分支414、416中与内存访问段412的末端部分并行放置。优选地,这种功能单元402b、404b的延时仍然比内存访问段412的延时小,因此更多的单元可以与段412的第一内存访问阶段412a并行放置而不增加流水线的总延时。
优选地,第一子组414和/或第二子组416的至少两个或更多个功能单元402、402b、402c、404、404b、404c是链接在一起的。例如,由于在MTAC和MBTAC处理器中具有整数FU,因此通常是可以实现链接的。可以因此形成功能单元的两条或更多条链,其中可以将数据从一个单元传递到另一个单元,可选地每个或两个分支414、416上形成若干条链。这样的链接可以通过可用的虚拟指令级并行的开发来提高所获得的性能。功能单元402、402b、402c、404、404b、404c可以通过VLIW式样的子指令操作字段来控制。在例如已经在对应的功能单元404、404b、404c中执行了浮点运算之后,位于各自链中该单元之后的功能单元能够经由包括例如由当前指令字控制的多路复用器的单元得到结果。
由于执行浮点运算通常比执行整数运算花费更多时间,浮点功能单元的数量可以被选择得比少于整数单元的数量。由于一些浮点功能单元的确可能与内存访问段412并行放置以便临时地执行它们的运算,这可能复杂化或者阻止浮点运算与内存操作的链接,但仍然比在大多数流行的架构中使用的功能单元的标准并行组织取得较好的总体性能。
根据本发明的一些实施方案的内存单元(MU)可以与ESM计算机架构以及优选地前述流水线布置相关地使用以实现例如CMP(芯片多处理器)或者MP-SOC(片上多处理器系统)系统,该系统包括具有专用指令内存的多个处理器(核)、关联的步骤缓存器(保留插入其中的数据,直到由步骤感知的替换策略管理的多线程执行的正在进行的步骤结束)和附着到处理器的非关联的(线程寻址)暂存器缓冲区,以及经由高带宽网络诸如多网互联网络与处理器(核)联接的物理上分布式但逻辑上共享的数据内存。网络将处理器连接到分布式内存模块使得对于具有足够高概率的随机通信模式可以实现充足的吞吐量和可容忍的延时。
为了对于代码的读取密集部分将吞吐量最大化,可以有用于从处理器到内存的引用和用于从内存到处理器的应答的分开队列。内存位置可以通过随机或伪随机选择的多项式分布在整个数据模块。优选地架构实现用于高级并行算法的并发内存访问、用于计算前置的多操作以及可选地减少常量时间。
多操作可以实现为多个——可选地两个——连续指令的序列。在多操作(诸如多前置)执行期间,首先确定第一内处理器多前置,因此可以将处理器方面的结果传输到分布式共享内存单元的主动内存模块以确定在那里处理器间的多前置(每个处理器一个结果),根据该结果可以在处理器内部再次确定最终的多前置。
参照图5,更详细地公开了内存单元500的一种实施方案。内存单元500可以包括步骤缓存器504以及暂存器506,该内存单元用于在仿真共享内存(ESM)架构中处理具有交错的线程间流水线的多线程处理器的数据内存引用,该步骤缓存器504限定关联的缓存器存储器阵列,在该存储器阵列中数据保持有效直到正在进行的多线程执行步骤的结束,所述存储器阵列包括具有数据字段的多个缓存行,优选排他地,每行包括用于地址标签的数据字段和用于第一线程的线程标识符的数据字段,所述线程标识符指的是由地址标签表明的数据内存位置,所述暂存器506限定用于存储多操作的内部数据(诸如中间结果)的内存缓冲区,优选排他地,所述缓冲区包括处理器的每个线程的单个数据字段,其中内存单元500有利地配置成在用处理器的涉及数据内存引用的多操作执行期间,在不同的时钟周期和不同的处理器流水线阶段访问步骤缓存器504以进行缓存器搜索并且访问暂存器506以检索或存取所述内部数据。
可选地,内存单元500被配置成响应于处理器线程的任何数据内存引用而访问步骤缓存器504以确定是否基于其中存储的地址标签找到了与引用的内存地址匹配的地址,并且如果是这样的话,即在缓存器命中的情况下,从匹配地址的步骤缓存器行的线程标识符数据字段中检索线程标识符。然后当通过从缓存器访问初始数据并且从应答接收缓冲区检索结果来完成读操作时忽略写操作(没有理由发送引用到共享内存,因为这已经通过初始线程完成)。
相反地,在缓存器缺失的情况下,过程包括使用预定的数据替代策略将当前线程的线程标识符以及与引用的内存地址对应的地址标签存储在步骤缓存器504中。因此线程标识符被存储到缓存器504的启动字段。同时通过将引用信息存储到缓存器行,引用本身被发送到共享内存系统508并且设置待定位。一旦从共享内存508接收到读操作的应答,就将数据放到应答接收缓冲区512的数据字段并且清除对应的待定位。优选地使用预定的缓存器衰减逻辑来无效在多线程执行步骤之间的行。
与处理器相关的步骤缓存器504中的每个行可以因此仅包括启动程序和地址标签。由于MU500仅需要从单个阶段访问步骤缓存器504,因此单个缓存器阵列和一个访问端口是足够的。
可选地,内存单元500还包括用于为线程存储已接收的内存引用数据的应答接收缓冲区512。缓冲区512被配置成接收从共享内存系统508进来的(应答)消息。
应答接收缓冲区512可以是多端口缓冲区并且包括例如用于容纳数据的两个数据阵列和两个端口以及例如关于两个接连步骤的‘待定’字段,因此缓冲区是至少隐含地步骤感知的或步骤可寻址的。进一步地,优选地将线程标识符用于访问数据。
在一些实施方案中,可以使用例如线程专用数据字段或寄存器来存储步骤数据。内存引用消息也优选地包括用于步骤数据的字段。
可选地,在与内存写或读操作有关的步骤缓存器缺失的情况下,内存单元500被配置成分别地发送内存引用到共享内存系统508以用于存储在其中或者经由应答接收缓冲区512检索所引用的数据;在与写操作有关的步骤缓存器命中的情况下,内存单元500被配置成忽略写操作;以及在与读操作有关的步骤缓存器命中的情况下,内存单元500被配置成从具有检索的或存储的线程标识符的应答接收缓冲区512中提取结果。
可选地,关于多操作,内存单元500被配置用于访问暂存器506(即将数据存储到暂存器以及从暂存器检索数据)使用检索的或存储的线程标识符来计算处理器内的多操作结果,并且将结果发送到共享内存系统508,其中内存单元可以进一步被配置成使用在应答接收缓冲区512中接收的来自共享内存系统508的数据和所述处理器内的结果,以确定最终多操作结果(多前置)。
可选地,内存单元设置有散列和组合单元(HCU)502,该散列和组合单元被配置成访问本文所述的步骤缓存器。散列和组合单元502优选地经由访问端口(优选地是潜在地被配置为散列和组合单元专用的单个访问端口)与步骤缓存器504联接。散列和组合单元502可以被配置为基于选自如下群组的至少一个要素构建内存引用消息,该群组包括:由处理器指示的内存操作(例如在操作寄存器中)、给出的内存地址(例如在MAR寄存器中)、给出的内存数据(例如在MDR寄存器中)、线程标识符、步进计数器的最低有效位(LSB)、以及步骤缓存器访问的结果(即缓存器搜索的结果的性质,取决于它是否为命中或缺失)。
HCU502除了可以访问步骤缓存器504来确定内存引用的状态(在多线程执行的当前步骤期间已经引用或者未被任何线程引用)之外,的确可以基于MDR寄存器中给出的内存数据、MAR寄存器中给出的内存地址、线程标识符、操作寄存器中的内存操作以及步进计数器的预定数目的LSB来计算内存引用的哈希地址以及构建外发的内存引用消息。
在一些实施方案中,可以将步骤缓存器504实施为多方式设置的关联步骤缓存器。
例如,步骤缓存器504中的地址可以可选地使用随机选择的哈希函数来散列。然后使用HCU502来计算内存引用的哈希地址。
可选地,内存单元500设置有内存请求发送逻辑实体510,该内存请求发送逻辑实体被配置成访问本文所述的暂存器。暂存器可以经由访问端口来访问,优选地经由潜在配置为由发送逻辑实体专用的单个访问端口来访问。
发送逻辑实体510可以被配置为根据散列和组合单元502提供的内存消息将内存引用发送到共享内存系统。基于内存操作,发送逻辑510可以被配置为确定多操作的中间结果或者处理器内的结果,并且提供内部数据诸如内部存储器(多)操作的结果,作为优选地经由内存应答等待队列512b对应答接收缓冲区512的(快速)应答。
在相关的实施方案中,内存单元500进一步包括与若干流水线阶段关联的应答等待队列512b,该队列将内存请求发送逻辑实体510和应答接收缓冲区512连接,使得例如可以以合适的顺序将来自发送逻辑的快速应答汇集朝向应答接收缓冲区,从而及时地检索从共享内存接收的相关内存引用结果并且随后使用接收ALU512c得出最终结果。基于操作,内存引用发送逻辑510可以访问暂存器506并且将正在进行的引用发送到共享内存系统508,或者使用暂存器506中的数据计算内部存储器操作结果并且得到作为对内存应答等待队列512b的(快速)应答的结果。多阶段应答等待队列512b的最后阶段可以访问应答接收缓冲区512以确定具有相同启动程序(线程标识符)的应答是否已经到达。在消极情况下,可以暂停流水线直到应答到达。否则,根据操作将在接收ALU512c中进一步处理应答。应答缓冲区512可以包括专用的数据阵列和数据端口或者至少两个数据阵列和两个端口,因为其存储来自多线程执行的两个接连步骤的待定位和数据。
优选地通过使用两个指令序列来实现多操作,以便将内部数据写入到暂存器506、将启动程序存储到步骤缓存器504和所谓的启动程序寄存器(用于关联其余的引用,在图中未示出),然而用于多操作的待定位被保持在应答接收缓冲区512中而不是在暂存器506中,应答数据被存储到应答接收缓冲区512而不是步骤缓存器504或者暂存器506,以及从应答接收缓冲区512中而不是从步骤缓存器504或者暂存器506中检索用于多操作的结束操作的应答数据(参见关于多操作实现的一个实例的表1)。
表1:根据本发明的MU的实施方案中的两步MPADD多操作的实现
因此,根据本公开文本和常用知识,本领域技术人员可以应用所提供的教导以在每个具体的使用情况下通过必要的修改、删除以及添加(如果有的话),实现由所附的权利要求限定的本发明的范围。大体上,正如本领域技术人员容易理解的,在此阐述的各项原则也可以用在与已详细描述的ESM架构不同的处理器架构中。

Claims (10)

1.一种用于仿真共享内存(ESM)架构的处理器架构布置,包括:
多个多线程处理器,每个多线程处理器设置有交错的线程间的流水线(400)以及用于执行数据的算数与逻辑运算的多个功能单元(402、402b、402c、404、404b、404c),
其中,所述流水线(400)包括至少两个操作性并行的流水线分支(414、416),第一流水线分支(414)包括被布置用于执行整数运算的所述多个功能单元的第一子组(402、402b、402c),第一子组的功能单元诸如ALU(算数逻辑单元),且第二流水线分支(416)包括被布置用于执行浮点运算的所述多个功能单元的第二、非重叠子组(404、404b、404c),第二子组的功能单元诸如FPU(浮点单元),并且,
进一步地其中,布置用于浮点运算的至少所述第二子组的一个或多个功能单元(404b)与所述流水线(400)的内存访问段(412、412a)操作性地并行设置。
2.根据权利要求1所述的处理器架构布置,其中,所述第一子组的一个或多个功能单元(402b)与所述流水线(400)的内存访问段(412、412a)操作性地并行设置。
3.根据任一前述权利要求所述的处理器架构布置,其中,所述第二分支(416)中的所述第二子组的至少两个或更多个功能单元链接在一起,其中一个功能单元能够将运算结果作为操作数传递到链中的后续单元。
4.根据任一前述权利要求所述的处理器架构布置,其中,所述第一分支和/或第二分支(414、416)中的若干功能单元(402、404)功能性地位于内存之前,一些功能单元(402b、404b)与内存访问段并行,以及一些功能单元(402c、404c)可选地位于内存访问段(412、412a)之后。
5.根据任一前述权利要求所述的处理器架构布置,其中,所述第二子组的至少两个单元(404b、404c)在操作执行延时方面具有相互不同的复杂性。
6.根据权利要求5所述的处理器架构布置,其中,与较长延时相关的单元(404b)与内存访问段(412、412a)的末端部分逻辑性地并行设置。
7.根据任一前述权利要求所述的处理器架构布置,其中,通过指令字(408)的多个操作选择字段来控制一个或多个功能单元。
8.根据任一前述权利要求所述的处理器架构布置,其中,用于功能单元的若干操作数是根据指令字中给定的多个操作数选择字段而在流水线的操作数选择阶段(406)中确定的。
9.根据任一前述权利要求所述的处理器架构布置,其中,所述第二分支(416)中的所述第二子组的功能单元包括被配置为执行至少一个浮点运算的至少一个单元(404、404b、404c),所述至少一个浮点运算选自由以下各项组成的组:加法、减法、乘法、除法、比较、从整数到浮点的转换、从浮点到整数的转换、平方根、对数以及幂。
10.根据任一前述权利要求所述的处理器架构布置,其中,所述第二子组的第一功能单元(404)被配置为执行多个浮点运算,并且所述第二子组的第二功能单元(404b)被配置为执行一个或多个其他浮点运算。
CN201480066972.9A 2013-10-23 2014-10-23 用于仿真共享内存架构的支持浮点的流水线 Active CN105814538B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP13189861.1 2013-10-23
EP13189861.1A EP2866138B1 (en) 2013-10-23 2013-10-23 Floating-point supportive pipeline for emulated shared memory architectures
PCT/FI2014/050804 WO2015059362A1 (en) 2013-10-23 2014-10-23 Floating-point supportive pipeline for emulated shared memory architectures

Publications (2)

Publication Number Publication Date
CN105814538A true CN105814538A (zh) 2016-07-27
CN105814538B CN105814538B (zh) 2020-04-14

Family

ID=49513730

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480066972.9A Active CN105814538B (zh) 2013-10-23 2014-10-23 用于仿真共享内存架构的支持浮点的流水线

Country Status (6)

Country Link
US (2) US11797310B2 (zh)
EP (1) EP2866138B1 (zh)
JP (1) JP6469674B2 (zh)
KR (1) KR102279200B1 (zh)
CN (1) CN105814538B (zh)
WO (1) WO2015059362A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114528101A (zh) * 2022-02-14 2022-05-24 贵州电网有限责任公司 一种应用于电力边缘计算的神经网络的结构化动态量化方法

Families Citing this family (6)

* 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
JP7010129B2 (ja) 2018-04-19 2022-01-26 富士通株式会社 プロセッサ及び情報処理装置
US11106494B2 (en) * 2018-09-28 2021-08-31 Intel Corporation Memory system architecture for multi-threaded processors
EP3671457A1 (en) * 2018-12-21 2020-06-24 Teknologian tutkimuskeskus VTT Oy Method and arrangement for handling memory access for a tcf-aware processor
US11803391B2 (en) * 2020-10-20 2023-10-31 Micron Technology, Inc. Self-scheduling threads in a programmable atomic unit
US20240061650A1 (en) * 2022-08-18 2024-02-22 Apple Inc. Floating-Point Execution Circuitry for Subset of Binary Logarithm Input Range

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0380099A2 (en) * 1989-01-27 1990-08-01 Hughes Aircraft Company Register and arithmetic logic unit
CN101021832A (zh) * 2007-03-19 2007-08-22 中国人民解放军国防科学技术大学 支持局部寄存和条件执行的64位浮点整数融合运算群
CN101160562A (zh) * 2005-03-03 2008-04-09 高通股份有限公司 用于异质多管线处理器中的功率减小的方法和设备
US20080141253A1 (en) * 2006-12-11 2008-06-12 Luick David A Cascaded Delayed Float/Vector Execution Pipeline
CN103150146A (zh) * 2013-01-31 2013-06-12 西安电子科技大学 基于可扩展处理器架构的专用指令集处理器及其实现方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69435278D1 (de) * 1993-12-15 2010-04-22 Toshiba Kk Superskalare microprozessor-befehls pipeline mit absendung von befehlen und freisetzung
US5600810A (en) * 1994-12-09 1997-02-04 Mitsubishi Electric Information Technology Center America, Inc. Scaleable very long instruction word processor with parallelism matching
US5887160A (en) * 1996-12-10 1999-03-23 Fujitsu Limited Method and apparatus for communicating integer and floating point data over a shared data path in a single instruction pipeline processor
US5864692A (en) * 1996-12-16 1999-01-26 Hewlett-Packard Company Method and apparatus for protecting memory-mapped devices from side effects of speculative instructions
US5922065A (en) * 1997-10-13 1999-07-13 Institute For The Development Of Emerging Architectures, L.L.C. Processor utilizing a template field for encoding instruction sequences in a wide-word format
WO2000008555A1 (en) * 1998-08-06 2000-02-17 Koninklijke Philips Electronics N.V. Data processing device
JP2002333978A (ja) * 2001-05-08 2002-11-22 Nec Corp Vliw型プロセッサ
JP3770836B2 (ja) * 2002-01-23 2006-04-26 株式会社ルネサステクノロジ 高速に電源スイッチのオンオフが可能な論理回路及び同論理回路における電流低減方法
US20030154227A1 (en) * 2002-02-08 2003-08-14 Intel Corporation Multi-threaded multiply accumulator
EP1367485B1 (en) * 2002-05-31 2012-10-31 STMicroelectronics Limited Pipelined processing
US20080160496A1 (en) 2005-02-22 2008-07-03 Victor Rzepakovsky Preserved Viable Cartilage, Method for Its Preservation, and System and Devices Used Therefor
US8135941B2 (en) * 2008-09-19 2012-03-13 International Business Machines Corporation Vector morphing mechanism for multiple processor cores

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0380099A2 (en) * 1989-01-27 1990-08-01 Hughes Aircraft Company Register and arithmetic logic unit
CN101160562A (zh) * 2005-03-03 2008-04-09 高通股份有限公司 用于异质多管线处理器中的功率减小的方法和设备
US20080141253A1 (en) * 2006-12-11 2008-06-12 Luick David A Cascaded Delayed Float/Vector Execution Pipeline
CN101021832A (zh) * 2007-03-19 2007-08-22 中国人民解放军国防科学技术大学 支持局部寄存和条件执行的64位浮点整数融合运算群
CN103150146A (zh) * 2013-01-31 2013-06-12 西安电子科技大学 基于可扩展处理器架构的专用指令集处理器及其实现方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
MARTTI FORSELL等: "TOTAL ECLIPSE-An efficient architectural realization of the parallel random access machine", 《HTTP://CDN.INTECHOPEN.COM/PDFS/10755/INTECH-TOTAL_ECLIPSE_AN_EFFICIENT_ARCHITECTURAL_REALIZATION_OF_THE_PARALLEL_RANDOM_ACCESS_MACHINE.PDF》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114528101A (zh) * 2022-02-14 2022-05-24 贵州电网有限责任公司 一种应用于电力边缘计算的神经网络的结构化动态量化方法

Also Published As

Publication number Publication date
EP2866138B1 (en) 2019-08-07
WO2015059362A1 (en) 2015-04-30
US20240004666A1 (en) 2024-01-04
KR20160074638A (ko) 2016-06-28
CN105814538B (zh) 2020-04-14
EP2866138A1 (en) 2015-04-29
US11797310B2 (en) 2023-10-24
US20160283249A1 (en) 2016-09-29
KR102279200B1 (ko) 2021-07-19
JP2016534433A (ja) 2016-11-04
JP6469674B2 (ja) 2019-02-13

Similar Documents

Publication Publication Date Title
CN105814538A (zh) 用于仿真共享内存架构的支持浮点的流水线
Narasiman et al. Improving GPU performance via large warps and two-level warp scheduling
Gedik et al. CellSort: High performance sorting on the Cell processor
US8176265B2 (en) Shared single-access memory with management of multiple parallel requests
CN104077107B (zh) 利用经掩码的全寄存器访问实现部分寄存器访问的处理器、方法和系统
TWI525537B (zh) 具有為向量衝突指令與置換指令所共享的全連接互連的處理器
US10073782B2 (en) Memory unit for data memory references of multi-threaded processor with interleaved inter-thread pipeline in emulated shared memory architectures
Tumeo et al. Aho-Corasick string matching on shared and distributed-memory parallel architectures
CN108885586A (zh) 用于以有保证的完成将数据取出到所指示的高速缓存层级的处理器、方法、系统和指令
CN110968345A (zh) 用于数据并行单程序多数据(spmd)执行的架构和方法
CN104364755B (zh) 用于通过中间阶层运算的并行计算来加速计算的方法和装置
CN109313607A (zh) 用于利用所指示的检查位值来检查位的位检查处理器、方法、系统和指令
Aberdeen et al. Emmerald: a fast matrix–matrix multiply using Intel's SSE instructions
US11061817B2 (en) Memory node with cache for emulated shared memory computers
CN106030517A (zh) 用于仿真共享内存架构中的长延迟操作的架构
Makino et al. Analysis of past and present processors
Kieu-Do-Nguyen et al. Heterogeneous Hardware-assisted Parallel Processing for BWA-MEM DNA Alignment
CN113348446A (zh) 用于处理tcf感知处理器的存储器访问的方法和装置
Tseng et al. An FPGA Memory Hierarchy for High-level Synthesized OpenCL Kernels
Dorojevets et al. Memory Latency Reduction with Fine-grain Migrating Threads in Numa Shared-memory Multiprocessors.

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