CN116670644A - 通用计算核上的交错处理的方法 - Google Patents

通用计算核上的交错处理的方法 Download PDF

Info

Publication number
CN116670644A
CN116670644A CN202080107152.5A CN202080107152A CN116670644A CN 116670644 A CN116670644 A CN 116670644A CN 202080107152 A CN202080107152 A CN 202080107152A CN 116670644 A CN116670644 A CN 116670644A
Authority
CN
China
Prior art keywords
data
memory
pipeline
instruction
processing
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
Application number
CN202080107152.5A
Other languages
English (en)
Inventor
K·金辛格
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.)
Kinzinger Automation GmbH
Original Assignee
Kinzinger Automation GmbH
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 Kinzinger Automation GmbH filed Critical Kinzinger Automation GmbH
Publication of CN116670644A publication Critical patent/CN116670644A/zh
Pending legal-status Critical Current

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/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
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or 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
    • 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
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8007Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors single instruction multiple data [SIMD] multiprocessors
    • 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
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7839Architectures of general purpose stored program computers comprising a single central processing unit with memory
    • G06F15/7842Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers)
    • G06F15/7857Architectures of general purpose stored program computers comprising a single central processing unit with memory on one IC chip (single chip microcontrollers) using interleaved 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/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/355Indexed addressing
    • G06F9/3552Indexed addressing using wraparound, e.g. modulo or circular addressing
    • 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/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/3888Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple threads [SIMT] in parallel

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)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)

Abstract

提出了一种“交错处理”(IP)的方法,所述方法通过将交错存储系统扩展到处理器芯片中并通过数据转换运算预先对扩展的交错存储体之一进行每次写入访问来概括存储器交错的功能原理。所述方法开辟了大规模软件并行化的新维度,并在称为“并行处理通道”(PPC)的自主处理单元中实施,所述自主处理单元以非常低的机器平衡集成处理器和存储器——这解决了存储器墙问题——并且以1Flop/cycle吞吐量执行片上机器事务。IP计算系统是性能可线性扩展的,并且能够以流水线方式执行非常大且复杂的HPC工作负载。它们在跨步矢量、张量和数据集合运算方面具有独特的性能优势;对于相关的HPC工作负载类型,与当今的技术相比,预期有高达10倍至100倍的每瓦特单处理器性能增益。

Description

通用计算核上的交错处理的方法
技术领域
本发明涉及一种数据处理设备中的数据处理和数据存储的方法、计算机程序、数据载体和数据结构。
背景技术
高性能计算(HPC:High Performance Computing)任务通常被组织为并行执行线程集合。在独立运算的计算核的集合上同时执行这样的线程集合的方法(称为“多进程”(MP:Multiprocessing))是最先进的HPC的一个特征,并且是具有高达数百万个核和非常高性能的超级计算机演变背后的主要驱动力(图1,摘自超级计算500强列表,2020年6月,www.top500.org)。
MP可以在HPC中非常成功地应用,因为MP在全局HPC系统级上是性能可线性缩放的(LPS:Linearly Performance-Scalable),因为每个额外的处理器都会线性地增加数据处理和数据传输带宽。相反,只要多核处理器的核共享公共存储器系统,那么MP在该多核处理器上就不是LPS—向这样的多核处理器添加核只会增加处理带宽,但不会改变共享的存储器带宽。并行线程执行的核级方法—“多线程”(MT:Multithreading)—相对于LPS计算甚至更受限制,因为不仅存储器而且处理资源在线程之间被共享。
“指令级并行”(ILP:Instruction Level Parallelism)也可以提高HPC性能。有许多ILP方法可用,例如超标量执行,这些方法都有其优点,但不是LPS。在这一类别中,本发明提出了一种LPS计算方法,其在指令级联合并行化处理和存储器访问,并解决存储器带宽问题。所提出的方法具有高ILP水平和“非常高的吞吐量计算”(VHTC:Very High ThroughputComputing)模式。
在JASON,MITRE Corporation,“Technical Challenges of ExascaleComputing”,JSR-12-310,2013年4月(此后被引用为“JASON”)中描述了对未来HPC系统的要求。JASON第2.1章定义的20MW百亿亿级功率包络将每个双精度浮点运算的能量消耗限制为最大20pJ/Flop。
图1列出了当今排名前25位的HPC系统的能量消耗。列表中的第一名Fugaku在HPL(高性能UNPACK基准测试,评估B)和HPCG(高性能共轭梯度基准测试,评估C)中分别以3.4倍和106倍的差距未达到20pJ/Flop的目标。
从这些数据来看,Fugaku与百亿亿级要求的偏差似乎非常强烈地依赖于所执行的工作负载的类型。该发现被图1中列出的所有系统证实,并且可以如下理解:
在相等功耗方面比较尖端处理器架构的性能屋顶线,图2示出了通用CPU(AMDEpyc 7H12)、专用GPU(Nvidia V100)和通用Fujitsu A64FX,所有这些都与根据本发明起草的通用CPU形成对比(最上面的图)。通过相应地调整对应的HPC集群的核计数,所有屋顶线都被缩放到20MW的总功率预算(参见图2的图例)。
屋顶线(Roofline)在JASON第4.4章和Samuel Williams(在“PerformanceModeling and Analysis”,University Of California At Berkeley,February 2019,CS267 Lecture)中进行了解释:屋顶线表示工作负载的性能上限(对数垂直轴)相对于其算术强度AI(对数水平轴)。每个屋顶线都具有“脊点”RP(圆圈);所述RP的AI坐标是该系统的“机器平衡”MB。MB的右边是其“计算绑定”工作负载的域,左边是其“存储绑定”工作负载的域;工作负载的AI的到MB的存储绑定侧的任何偏离被系统以性能惩罚来惩罚。
关于工作负载AI要求,JASON在第4.4章中指出:“DOE或NNSA感兴趣的科学应用在算术强度上跨越了一个范围,但很少有强度超过1”。通过对1,162个科学计算内核的评估证实了这一点,这些内核的AI中位值为1Flop/B(H.Pabst等人,“LIBXSMM library targetingIntel Architecture(x86)”,Intel High Performance and Throughput Computing,Switzerland,2017年3月)。
根据这样的经验性工作负载AI数据(图2、图3),“有能力的”HPC系统的MB应当被设计为l Flop/B或更小。HPC前25的系统中没有一个能够稍微符合该品质因数,这指示经验性工作负载要求与当今领先的HPC技术之间的严重不匹配(图1,评估D,用于比较目的(!)根据测得的HPL和HPCG数据估算,对于HPCG,AI=0.24Flop/B,V.Marjanovic等人,“Performancemodeling of the HPCG benchmark”,2014Lecture Notes in Computer Science,vol.8966.Springer,Cham)。
所述不匹配的影响(称为“存储器墙”)意味着典型HPC系统上的典型HPC工作负载将远远超过其运行时间的80%花费在等待存储器访问的空闲状态,浪费了系统运行时间和执行所花费的大部分电力。
对于图2的系统,图3展示了对诸如模板运算(用于求解微分方程)、计算流体动力学(CFD)、数值天气预报(NWP)以及模拟固态、液体和分子系统的CP2K的工作负荷的存储器墙效应。
减轻存储器墙效应的一种标准方法包括使用在基于单位步幅数据包的方案上工作的已经包括在图3的AI数据中的高速缓存层级,提取和存储所谓的“高速缓存行”。某些工作负载受益于这种严格的存储器访问方案,其它工作负载则没有。非单位步幅和/或非基于数据包的访问对存储器带宽的不利影响(称为“存储器山”)是所有基于高速缓存的处理器架构(CPU、GPU)的缺点。
本发明概括了以下现有技术方法:
“模调度”的方法由B.R.Rau等人在“Code Generation Schema for ModuloScheduled Loops”,Proceedings of the 25th annual international symposium onMicroarchitecture,Portland,Oregon,USA,December 01-04,1992,IEEE ComputerSociety Press Los Alamitos,CA,USA(此后被引用为:“Rau”)描述为产生高度优化的循环调度的调度技术。根据Rau,模调度可以由处理器的硬件支持,即尤其是通过“旋转寄存器文件”,其借助于循环的“寄存器重命名”在模调度循环的“级”之间提供无冲突的数据传递机制。将后一种机制与本发明的“流水线存储器”概念区分开的特征是:
1.范围-限于小的基本循环(Rau)相对于包括内部控制结构和可以嵌套到任意深度的子例程调用的任意大的循环(本发明);
2.映射-限于一个单个核和控制流(Rau)相对于可扩展到多个核、线程和控制流(本发明);
3.实施-寄存器(Rau)相对于存储器(本发明)。
“收缩数据处理(systolic data processing)”的方法由H.T.Kung在“WhySystolic Architectures”,Journal Computer,第15卷第1期,1982年1月,IEEE ComputerSociety Press Los Alamitos,CA,USA(此后被引用为:“Kung”)中描述为适用于高吞吐量和高度专业化的硬件。本质上,收缩硬件的设计方式使得所有数据处理单元以锁步方式-“收缩性地”-运算,这产生最大的数据吞吐率。
“显式并行指令计算”(EPIC:Explicitly Parallel Instruction Computing)的方法由M.Schlansker,B.R.Rau在“EPIC:An Architecture for Instruction-LevelParallel Processors”,HP Laboratories Technical Report,1999(此后被引用为“Schlansker/Rau”)中描述。
“传输触发架构”(TTA:Transport Triggered Architectures)由H.Corporaal等人在“Using Transport Triggered Architectures for Embedded Processor Design”,DOI:10.3233/ICA-1998-5103(此后被引用为“Corporaal”)中描述,并且被本发明概括为“事务触发架构”。
本发明所使用的具有高效多线程机制的通用栈机的运算方法在专利申请“Methodof allocating a virtual register stack in a stack machine”(KinzingerAutomation GmbH,US20190065198A1,…korrekt zitieren,此后被引用为“PAT1”)中被描述。
提出与本发明一起使用的类型安全、指针安全和网络安全多态数据处理的方法在PCT申请“Method of secure memory addressing”(Kinzinger Automation GmbH,EP3420446A1,…korrekt zitieren,此后被引用为“PAT2”)中被描述。
素数编号的交错存储器系统和在这样的系统上将存储器地址高效地分解成存储体号和本地地址的方法由J.Diamond等人在“Arbitrary Modulus Indexing”,Proceedingsof2014 47th Annual IEEE/ACM International Symposium on Microarchitecture(MICRO),2014年12月(此后被引用为“Diamond”)中被描述。
由本发明用于在被称为“IP超流水线”的网络内并发地执行“交错处理”(IP:Interleaved Processing)流水线的“通信顺序进程”(CSP:Communicating SequentialProcesses)的方法由A.W.Roscoe,“The Theory and Practice of Concurrency”,Prentice Hall,2005(以下被引用为“Roscoe”)描述。
由本发明使用的基于CSP的软件概念在“occam参考手册”(SGS ThomsonMicroelectronics Ltd.,1995)中描述,并且例如在由INMOS,Bristol设计的T800晶片机芯片系列中实施(此后两个参考文献均被引用为“Occam”)。
发明内容
先进的3D芯片堆叠和芯片互连技术允许处理器到存储器通道的数量和带宽的显著增加。这为HPC技术的突破性革命铺平了道路,HPC技术由创新的“交错处理”(IP:Interleaved Processing)方法和基于此的适用于广泛的通用工作负载的“非常高的吞吐量计算”(VHTC)方法驱动。
VHTC成倍地结合了以下两种加速效果:
·通用IP核上的指令级并行(ILP),其具有支持基于每个指令的LPS“指令交错”的可自由缩放的并行处理单元集合;
·隐藏指令延迟的软件流水化。
图8、图9中示出了各种IP核的预期的每核VHTC性能屋顶线与前沿通用HPC核的最佳情况性能屋顶线的比较,通用HPC核利用其内部矢量单元处理良好对齐的单位步幅矢量(虚线)—当核利用跨步矢量(strided vector)(“存储器山”)或流水线循环,而该核没有用于流水线循环的集成“加速器”硬件时,所述屋顶线低得多。VHTC涵盖了后两种处理模式,它在整个HPC工作负载范围内提供了计算绑定的峰值性能。
为了实现这样的VHTC性能,提出了一系列具有创造性的方面,通过逐步扩展当今的技术范围,每个方案都建立在其前身的优势之上,从而有效地创建了一种激进的非冯-诺依曼方法来计算其本身:
本发明的第一方面提出了一种称为“并行处理通道”(PPC:Parallel ProcessingChannel)的分布式处理元件,其具有将数据处理链接到数据存储容量的单向数据流设计;该单向数据流设计从快速片上SRAM暂存器延伸到大型片外存储器,用于无缝工作集合存储器集成(图4-图8)。所述PPC方法消除了PPC级的存储器墙问题,其中每核MB值低于0.3Flop/B,这满足百亿亿级要求(MB≤1Flop/B,JASON),并且解决了现有技术HPC的处理器利用率问题。
在PPC中,由存储器层次结构(42)的M1级发挥作为快速存取数据处理缓冲区的通用寄存器的通常作用,该M1级紧邻本地ALU(41)和控制单元(71)。M1用作暂存存储器(SPM),其被优化用于以最小访问延迟获得最大存储容量,并且由采用存储器虚拟化技术的软件透明地使用,所述存储器虚拟化技术取代了当今高速缓存中的能量和芯片面积密集型数据查找电路(本发明的第9方面)。
本发明的第二方面提出了将存储器交错技术推广到使用由中央控制单元(71)控制的PPC集合(72)的交错处理IP的方法,PPC集合(72)通过m重周期性数据传输、处理和存储方案(图7)连接到中央控制单元(71),该方案在指令级联合了并行化处理和存储器访问并实现了上述“指令交错”。
所述方案不仅允许并行访问核的交错M1(其包括存储器系统(74)的所有本地M1(51)缓冲区),而且允许并行访问整个交错的片外DRAM工作集合存储器M4,包括交错的并行片上M2和M3缓冲区以及经由m个本地端口(50-52)并行执行所有数据传输的m个独立的“直接存储器访问”(DMA:Direct Memory Access)机器的集合,包括但不限于:
·高带宽后台通道传输,其将工作集合数据流式传输到核并传输回DRAM存储器M4;
·PAT1中指定的内部后台栈传输的自动管理,在下述栈机模式GPP中,内部后台栈传输不断地将频繁访问的最顶层栈段保持在快速访问交错M1数据处理缓冲区中(这用硬件自动并行机制代替了寄存器机的顺序编译器管理的“寄存器溢出/填充”,该机制消除了现有技术的“寄存器/高速缓存瓶颈”)。
·当将下面描述的“流水线存储器”缓冲区从其M2..M4备份分配预加载到M1并在线程被解除调度之后卸载它们时,对时间多线程(TMT)调度器的支持,这种预加载和卸载也被应用于M1栈段(参考PAT1)。
所述方案支持具有“超长指令字”(VLIW:Very Long Instruction Words)的“显式并行指令计算”(EPIC:Explicitly Parallel Instruction Computing)。由于指令读取端口(76)的数量与PPC计数m成比例,所以具有极宽VLIW的高吞吐量EPIC是可能的。这些VLIW由CU(71)解码并部分执行(例如用于指针解引用、数据加载/存储、比较、分支等),并且只要涉及ALU运算,就以“超长事务字”(VLTW:Very Long Transaction Words)的形式经由专用并行写入端口集合(75)分发到PPC集合(72)。利用这样的VLTW,在每个周期,m个ALU(73)中的每一个都可以同时被提供有其自己的特定机器指令、运算数和结果目的地地址。Schlansker/Rau讨论了EPIC在ISA和编译器方面的实施。
IP核(70)具有以下运算模式(图29):
GPP在其通用处理(GPP)模式中,IP机作为栈机工作,如PAT1所指定的和本发明的第9方面所公开的。GPP是具有顺序VLIW的延迟限制冯诺依曼处理,并且被用作其中可以嵌入SIMD和VHTC步骤的确定性实时数据处理框架。
SIMD在SIMD模式中,由相同指令组成的VLTW由CU经由“数据集合机器指令”内部地生成。在该专用模式中,IP机本质上像GPU或矢量处理器那样起作用。(在第3方面中公开,参考图28)。
VHTC在这种非冯诺依曼模式中,收缩性流水线循环以接近(如果就实施的ALU数量进行同等条件比较)几乎是裸机ASIC实施方式的水平的吞吐量和能源效率进行处理。非冯诺依曼并行控制流以所谓的“控制/数据流”的形式嵌入到数据流中。
图7的方案提供了VLTW中的每个指令由CU(71)发布到PPC集合(72),不仅发布到PPC集合的专用且独立的指令路径(43)和处理资源(41),而且还发布到PPC集合的对专用独立存储器(42)的专用独立写入访问(47)。因此,一旦VLTW的指令被发布到PPC集合(72),就保证了以完全确定性的方式同时进行结果的执行和存储,而没有仲裁冲突。
对于存储器读取(77、78),由编译器强制解耦,所述编译器(尽可能地)将指令聚集到已知相对于其存储器读取端口(77、78)无冲突的VLIW中。在这是不可能的情况下,编译“有缺陷的”VLIW,其可能会使控制单元(71)停顿一定数量的周期,但将永远不会使PPC集合(72)停顿,因为VLTW仅在所有运算数数据被提取时由CU发布。只要所述CU停顿持续,CU(71)就发布其它线程的VLIW(细粒度时间多线程,TMT)。在这种情况下,存在执行时间的上限,因此可以保持确定性的实时执行。
在概念上,图7将(由ALU(73)的集合表示的)“指令级并行”ILP链接到由分布式存储器系统(74)的集合表示的“交错存储器并行”。有效地,这将“指令”的概念扩展为计算的基本单元,以包括到存储器的数据传输,从而将“事务”(指令加数据传输)定义为基本计算单元。“事务级并行”概括了ILP;这是本发明的一个独特特征。
PPC执行经由(75)由事务代码(运算码、运算数据、地址)触发。因此,图7示出了“事务触发架构”,其可以被理解为“传输触发架构”(TTA:Transfer Triggered Architecture)的概括,其中执行由纯运算数据移动触发(Corporaal)。
CU(71)的存储器读取和写入运算符合标准字交错存储器寻址方案(图10),但是作为本设计的新的和创新的元件,必须执行给定指令的特定ALU由指令的结果的交错存储器地址隐式地选择。作为事务概念的结果,这种情况简化了硬件电路和编译器设计,并提出了相应的IP方法。
本发明的第3方面提出了以抽象机器运算和运算码的形式实施SIMD处理(矢量、矩阵、张量、通用数据库)的方案。这样的运算可在IP核(70)的通用基础设施上直接执行,并且既不需要额外的“加速器”硬件也不需要外部数据路径,而仅需要CU控制逻辑来本地地生成用于SIMD执行的内部VLTW。
SIMD运算码处理由描述符定义的数据集合运算数(图15)。如果满足以下条件,则始终以m Flop/cycle吞吐量的满PPC容量处理具有常规的(但是跨步的)存储器访问模式的运算数和结果:
·IP核具有素数个PPC计数m(这是核硬件设计的问题),且
·步幅都不是m的整数倍(图11-14)(这是数据集合存储器布局的问题)。
这种独特性能特性解决了传统基于缓存的架构(CPU、GPU)的“存储器山”问题。
值得注意的是,在所提出的SIMD处理概念中,当对跨步矢量或数据集合进行运算时,不需要附加的“聚集”或“分散”运算,即不需要附加的数据传输。IP核直接对这样的数据工作(参见图12),这是该架构的另一独特的性能特征,使其非常适合于一般性数据集合处理。
此外,SIMD方法允许为“基本线性代数子程序”(BLAS:Basic Linear AlgebraSubprograms)和“结构化查询语言”(SQL:Structured Query Language)定义标准化数据集合机器原语的集合。这样的原语可以被硬编码在CU中,但是也可以被模拟(每个异常处理程序),从而将它们的使用扩展到广泛的核设计(图9)和用于数据集合密集型应用的“域特定语言”(DSL:Domain Specific Languages),尤其是神经处理和人工智能领域。
利用PAT2中公开的多态数据处理方法,标量运算码还可以用于对跨步矢量、矩阵和张量的标准数据集合运算(加、乘等),这允许以干净的方式在基本ISA机器指令级直接实施高级Fortran样式多态数组处理语句。
最后,CU控制逻辑通过展开它们的牛顿-拉夫森循环表示而生成用于更复杂的运算(例如“除法”或“平方根”)的VLTW,这保证了所需的1Flop/cycle吞吐量(参考IntelItanium架构中实施的解决方案)。例如,可以采取相同的方法用于计算多项式、数字滤波器等,它们可以通过合适的描述符来参数化(参考图15)。
本发明第4方面将VHTC计算在IP核上的应用范围扩展到基本循环的收缩流水化,
·“基本”意味着循环体由基本块组成;
·“流水化”是根据Rau的软件流水化的方法,
·“收缩”是如Kung描述的专用硬件中的高吞吐量执行模式,根据本发明,其被应用于通用计算机上的循环流水化。
“数据流图”(DFG:Data Flow Graph)(如图16中所例示的)是“静态单赋值形式”(SSA:Static Single Assignment form)的“中间表示”(IR:IntermediateRepresentation)的图形可视化,例如由“低级虚拟机”(LLVM:Low Level VirtualMachine)编译器从高级语言源编译。DFG通过将代码简化为运算之间的数据依赖的有向图,以抽象的非顺序的(非冯诺依曼)方式描述代码。
因此,第4方面提出了一种从收缩流水线基本循环的高级语言源导出用于收缩流水线基本循环的IP代码的方法,所述方法使用循环体的LLVM编译的DFG作为起点,即:
·将DFG读取为低级虚拟数据流机器设计,可以说是“虚拟ASIC”的低级虚拟数据流机器设计,其中每个运算由独立的并行“虚拟运算器”(VO)执行。
·以1波前/迭代的速率构造在DFG的输入VO中进入DFG的“数据波前”。每个波前沿着DFG的数据路径传播并且在到达输出VO处结束。在稳态期间,然后用传播波前的自复制模式填充DFG,其中每个这样的波前表示原始循环的一次迭代,原始循环由流水线循环体(“Kernel”)的迭代顺序地处理。
·考虑到VO延迟(参见图18),构建如图17中例示的DFG的收缩时序图,其中数据波前呈现为垂直线。尽管所述时序图最好是“密集的”(即它保证了每个单个数据波前的延迟最小,因为每个VO在其输入数据可用时就立即执行),但是VO之间的数据传输具有非零延迟,对于收缩运算,必须如第5方面中提出的那样进行FIFO缓冲(先进先出)。
·利用这样的FIFO,虚拟ASIC的处理任务可以由“虚拟VLIW”来描述,“虚拟VLIW”包括所有VO指令(包括FIFO和存储器读/写)以及关于连接所述VO的DFG定义的缓冲数据路径的信息。
·如果将DFG的所述“虚拟VLIW”映射到一个“机器VLIW”超过可用PPC资源,则虚拟VLIW被拆分成构成内核的q个机器VLIW的组;循环每周期执行1/q次迭代;每次迭代花费q个周期。
本发明的第5方面通过提出一种“存储器流水化”的方法将上面介绍的FIFO概念(流水线缓冲区)转换成IP,所述“存储器流水线”的方法由一种新的存储器寻址方法促进,所述新的存储器寻址方法与Inter Itanium架构的已知“旋转寄存器文件”方法相似,但应用于存储器而不是寄存器(图19、20)。利用存储器流水化,可以从非常大的交错SRAM资源(74)中以大的数量和大小来实施FIFO。因此,如以下方面所阐明地,将全部HPC工作负载设计成“流水线”变得可行:
本发明的第6方面提出将线程执行控制流信息嵌入到由IP核(70)处理和存储的所有数据字中,从而有效地创建如图22中所示的组合的“控制/数据字”。因此,IP核(70)的所有元件适于处理和存储这样的控制/数据字(为简洁起见其还继续被称为“数据”字)。第6方面的方法可以与由PAT2提出的类型安全、指针安全和网络安全多态数据处理的方法兼容和组合,这是本发明的一个独特的特征。
使用所述方法来创建其数据由“NULL”位标记的“空闲”波前(图22),可以消除根据Rau在稳态内核循环代码之前和之后的“prolog”和“epilog”代码(流水线填充/排空);这导致仅由内核组成的密集型流水线循环表示(参考Inter Itanium解决方案)。
所述流水线循环内核可以被预加载到控制单元(71)中并且在不引起另外的指令业务的情况下被执行,这减少了能量消耗并且提高了计算性能,因此缩小了通用CPU上的软件定义的循环执行与专用裸机ASIC处理之间的传统性能差距(至少如果所有FIFO数据被保持在M1 SPM中,参考本发明的第9方面)。
使用空闲波前允许运行图21(b-d)所示的高级循环运算模式,其中循环可以开始新的数据包,同时清除旧的数据包(b);处理比循环的级计数短的数据包(c);或者处理长度变化的数据包的任意序列(d)。内核运算模式(b-d)需要多个不能在冯诺依曼架构上执行的并行控制流。因此,在冯诺依曼域中被称为“收缩流水线循环”的东西在与控制/数据一起运算时转换成非冯诺依曼类型的基本数据流运算器,该非冯诺依曼类型的基本数据流运算器是VHTC的特征并且此后被称为“IP流水线”。
现在,尽管N次算法循环迭代采用对应IP流水线的N+S-1次迭代来计算所有结果,S表示流水线线循环级的数量(在图17的情况下S=57),如果流水线的时序图是“密集的”,则第一算法循环迭代的VHTC执行需要与其延迟绑定的GPP模式等效物相同的周期数量S,这意味着,如前所述,保证每个单个数据波前的延迟最小。
因此,对于N>1,相对于数据包延迟,VHTC远远优于GPP(或者,就此而言,现代CPU上的超标量执行)(在图17的DFG中,渐近地达到因子56×)。因此,VHTC不仅对高吞吐量“数字处理”有用,而且取决于流水线利用率(包大小和重复率,参考图21(b-d))以及关于能量/存储器消耗、线程切换开销等的问题,在某些情况下至少部分地可用于实时数据处理、硬件在环、关键延迟和交互式应用。
本发明的第7方面阐明了具有多个并行控制流的条件循环(for,while)如何可以由IP流水线执行(图24)。
第8方面公开了EPIC预测方法如何可以被转换到非冯诺依曼控制/数据流处理的领域中,使得任意复杂度和嵌套深度的条件语句(if-else,switch)都可以由IP流水线处理(图25)。
本发明的第9方面解释了多个IP流水线如何由可位于相同的或远程的IP核上的并行线程执行,以及这样的IP流水线如何以数据驱动的方式通信控制/数据,从而形成所谓的“IP超流水线”。此外,还解释了GPP栈和流水线存储器两者的存储器虚拟化(图19)如何可以用于代替在当今的高速缓存中存在的能量和芯片面积密集型数据查找电路。
本发明的第10方面例示了其中一个运算器被对第二基本循环的子例程调用代替的基本循环如何可以解构成由三个通信IP流水线的网络组成的IP超流水线(图26)。
本发明的第11方面解释了具有内部控制结构(if-else、switch、循环等)的任何算法循环和嵌套子例程调用的任何层级深度如何可以递归地解构为能够分布在多个线程和核之上的IP超流水线。原则上,所述递归解构方法通过分解所谓的“超顶点(supervertice)”实现了任何有向图都可以被转换为无环有向图(即IP流水线)的图论事实。
由于大多数工作负载执行组织在循环中的重复性工作,因此该最后的创造性方面公开了如何使用IP超流水线,使得VHTC可以应用于几乎普遍范围的工作负载。
由于上述递归循环解构方法在每个方面中创建新的并行线程,因此对于每个这样的线程,可以做出是以GPP/SIMD还是以VHTC模式处理它的新决定。这种选择的自由度允许编译器根据工作负载的特性在吞吐量、延迟、能耗和存储器需求之间进行权衡来微调代码:因此,预期本发明的应用在实践中包括GPP、SIMD和VHTC的良好平衡的混合。
总之,所提出的IP方法:
·解决了存储器访问问题
(“存储器墙”、“存储器山”),
·简化了处理器设计(无寄存器、无寄存器文件、无寄存器“重命名”、无具有推测执行的分支预测、无乱序执行、无高速缓存),并且,
·通过将指令级耦合到交错存储器并行(“事务”),允许系统编译器方法利用先前隐藏的并行化资源(“超流水化”)。
技术问题
要解决的问题是寻求已知的并行数据处理概念的替代方案,该替代方案能够提供相同或相似的效果或更具成本效益。
问题的解决方案
为了阐明解决方案,参考独立权利要求的特征部分。
本发明的有益效果
本发明产生了高效的数据处理。
工业适用性
本发明尤其可以应用于整个半导体工业。
附图说明
在附图的以下图中以示例的方式而非限制的方式呈现本发明:
图1:现有技术—当今前25的超级计算机和评估,
图2:现有技术—领先的数据处理架构的屋顶线,
图3:现有技术—针对相关HPC工作负载的来自图2的读出,
图4:并行处理通道(PPC)的设计,
图5:一个PPC的分布式分层存储器系统,
图6:用单个PPC构建的简单处理核,
图7:从m个PPC构建的交错处理(IP)核,
图8:性能可缩放性-各种IP核的屋顶线,
图9:图8的IP核:预期数据,
图10:交错处理基于存储器字交错,
图11:单位步幅矢量的添加-密集型PPC端口使用,
图12:跨步矢量的添加-密集型PPC端口使用,
图13:由非素数PPC计数m引起的混叠效应,
图14:由素数PPC计数m引起的混叠效应,
图15:矢量加法中涉及的描述符的类型,
图16:基本循环体的数据流图(DFG),
图17:用于图16的DFG的收缩时序图,
图18:现有技术—图17中的数值运算的数据,
图19:存储器抽象层,
图20:流水线存储器—一个缓冲区流水线的功能,
图21:流水线循环的高级运算模式,
图22:“控制/数据”字的二进制布局,
图23:ESC编码方案的初步草案,
图24:流水线条件循环的调度,
图25:条件fork运算器和join运算器,
图26:并行子例程调用的IP超流水线,
图27:并行if-else语句的IP超流水线,
图28:根据Flynn分类法的技术分类,
图29:IP运算模式,
图30:IP核上的同时多线程(SMT),
图31:IP核(83)上的SMT—按优先级排列的每个PPC的VLTW组合,
图32:调度-必要的ALU抖动,
图33:图16的编译DFG—VLIW汇编代码。
具体实施方式
通过存储器交错的已知方法,存储器被组织为DRAM模块上的并行且独立的存储体的集合,参考该已知方法,每个这样的交错的DRAM体(56)如图5所示被扩展成形成分布式分层存储器系统(42),该分布式分层存储器系统(42)经由专用芯片到芯片互连(52)从DRAM体(56)到达处理器芯片中;相同的“保密原则”还适用于每个分布式分层存储器系统(42)的片上SRAM体(53-55)及其内部互连(50、51)。
因此,每个存储器系统(42)是一个独立运行的单元,其仅通过独立的端口(44-47)与处理器芯片的其它单元交互。
如图4中所示,每个存储器系统(42)由专用本地数据处理单元ALU(41)扩充,该专用本地数据处理单元ALU(41)由流水线基本处理元件(加法器、乘法器等)组成,并且对于它能够根据处理器的指令集合架构(ISA)执行的所有类型的数据变换维持1Flop/cycle的吞吐量(为了与现有文献兼容,在本申请中使用的术语“Flop”-浮点运算-总是包括任何类型的数据变换运算“op”)。此外,所述类型的数据变换中的每一种的延迟都需要具有可靠保证的下限和上限,在所述上限之上,保证ALU向CU(71)发送停顿请求的信号。
组件(40)是独立运行的分布式处理元件,其仅经由独立的端口(43-46)与其片上环境交互。这种元件(40)被称为“并行处理通道”(PPC)。
当创建具有3D芯片封装和差分串行处理器到存储器互连(52)的处理器-存储器系统时,可以构建低MB PPC。这在图9的行(87)中例示,其中假设ALU(41)2GHz时钟、l Flop/cycle以及因此的2GFlop/s吞吐量,并且对于互连(52),假设2×25Gb/s带宽的双向差分位链路,这产生MB=(2GFlop/s)/(6.25GB/s),即(示例性)机器平衡MB=0.32Flop/B。
在图7中示出了交错处理(IP)的方法,从图7中可以清楚地看出,当构建具有m个PPC(72)的核(70)时,累积的处理和数据传输带宽都随m线性地缩放。因此,核级IP是性能可线性缩放的(LPS)。利用这样的核(70),可以构建具有数千个PPC的LPS多核/DRAM封装体,通过与现代GPU设计(Nvidia Tesla V100中的80×32个FP64ALU)的比较给出上限的粗略数量级。
此外,高带宽并行存储器映射的I/O可以直接集成在存储器系统(74)中,这使得该设计非常适合于HPC信号处理和未来的高速HPC互连。
IP的性能可线性缩放性在图8中针对核(80、81和83-87)示出(在图9中标注了PPC计数m)并且通过改变核的PPC计数m使其脊点RP垂直移位(即不改变核的MB)的情况来可视化。
性能缩放的第二维度与位分道(bit lane)的数量n和互连(52)的传输速率的选择相关联,其水平地移位RP,如图8中的圆形光栅所示出的。通过这样的缩放,MB可以适应于工作负载AI要求。
IP核(70)使用存储器交错:由软件访问的每个逻辑存储器地址adr由CU(71)分解为商a=adr/m和余数b=adr mod m。后者b选择PPC(40),经由其本地端口(44-46)从PPC(40)读取数据或经由本地端口(43)向PPC(40)发出指令;前者商a选择所述所选PPC(40)的存储器(42)中数据物理上所处的本地存储器地址。这由图10示出,图10例示了adr=0~154的逻辑地址范围在用于PPC计数m=31的IP核(83)的所有本地PPC存储器之上的分布。
如图7所示,对存储器(42)的所有读取访问和写入访问都是未经仲裁的。写入访问作为数据写入指令被间接地发布到当前PPC(40)的ALU(41),该当前PPC(40)的ALU(41)经由到存储器(42)的本地写入端口(47)而再次无仲裁地执行后续写入运算。
后一原则也适用于计算结果的所有机器指令,因为编译器然后将必须指定将所述结果写入哪个逻辑地址。如根据图7,在后的逻辑地址只能由其本地ALU(41)访问,在读取和写入数据时管理存储器交错的CU(71)的相同地址分解也选择将指令发送到哪个PPC以供执行。这就是“交错处理”IP的方法。
根据本发明,核(70)的基本运算模式是由PAT1描述的栈机(SM)的通用处理(GPP)。图19示出了第二存储器抽象层(191)如何在上面解释的交错存储器抽象层(190)的顶部上实施PAT1的特定“虚拟寄存器栈”寻址方法,这意味着SM继承核的VLIW处理容量。
现在,PAT1的SM的“虚拟寄存器栈”可由CU(71)寻址和处理;因此,它可以用于经由快速并行接口(77、78)将信息从软件向下传递到硬件。
因此,本发明提出了在IP核的ISA中定义SIMD机器指令,所述SIMD机器指令由位于栈上的描述符参数化。在图15中针对矢量加法x=y+z例示了这样的描述符的一般结构:利用指向所述示例性矢量加法的描述符(150)的指针,CU可以读取其运算类型选择器(153)即“矢量加法”以及指向必须要处理的矢量数据的描述符(151)的指针(154)。在给定的示例中,这些分别通过指向存储器(159)的指针(156)、矢量长度(157)和步幅(158)来描述矢量x、y、z。经由指针(156),CU可以访问矢量x、y、z的分量以供执行。
图11例示了具有31个PPC的核(83)上的SIMD矢量加法x=y+z;矢量x、y、z分别具有100个分量和单位步幅。加法的数据访问1-3完全利用所有的2×31个读取端口(77、78)和2×31个写入端口(75、79)。因此,核以全m=31Flop/cycle的吞吐量执行第一加法步骤,而不管“对齐”如何。
图12示出了在一个下面解释的数学条件下,单位步幅矢量加法的所有特征在跨步矢量加法的情况下被保留。唯一改变的是m重交错存储器访问的模式,但是所有端口仍然完全被利用;所示的跨步矢量加法的前三个步骤仍然以全m=Flop/cycle的吞吐量执行,而不管“对齐”如何:
所述数学条件是指由存储器访问步幅s和交错步幅m之间的周期性冲突引起的混叠现象,如果步幅s和m都相对是素数,则不会发生混叠现象,如图13中针对m=32PPC和变化的矢量步幅s所示。
另一方面,如果m是素数,例如m=31,则除了所涉及的矢量步幅之一是m的整数倍的情况之外,性能都是恒定的(图14)。在这种情况下,矢量的所有分量仅驻留在存储器(74)中的一个中,并且相应地,性能下降到标量m=1核(87)的水平。在所有其它情况下,在数学上保证对x、y、z的矢量分量的任何m个后续访问都均匀地分布在存储器集合(74)之上,使得所有四个端口集合(77、78、75、79)的数据传输带宽被完全利用。
因此,为了尽可能避免混叠,m应该被选择为素数。Diamond描述了素数m的高效地址解码机制(参见图10),图8和图9显示了具有此类素数编号的PPC计数m的IP核的选择。
作为使用显式机器运算描述符(150,其旨在用于在机器级实施特定程序)的替代方案,指向数据描述符(151)的指针也可以直接传递到标量机器指令。在这种情况下,所述指令被执行为SIMD运算(例如,矢量点积、矢量标量积、矩阵矢量乘法、张量压缩等)。
向CU发送提供给指令的值表示的是标量值还是指向数据描述符(151)的指针的信号的一种方式是使用类型化数据,例如PAT2中所公开的。所述方法附加地允许多态数据处理以及指针安全、类型安全和网络安全存储器寻址。
利用SIMD指令,可以定义Fortran阵列、BLAS和SQL原语,从而产生精简但功能强大的ISA,其允许在隐藏(并内部管理)硬件细节(如目标IP核的PPC计数m)的抽象级上进行编程。换句话说,IP SIMD处理是“矢量长度无关的”,因为矢量作为整个对象被处理,并且不需要在SW级上被显式地分解成适合(依赖硬件的)“矢量单元”的数据块;该工作由CU(71)在后台透明地执行。
为了进一步确保各种IP核(图9)之间关于SIMD处理的软件可移植性,不必在每个单个IP核上的CU硬件中实施全范围的SIMD指令;CU可替代性地通过异常处理程序例程来仿真这样的指令。这样的方法可以被递归地调用,从而赋予其广泛的适用性。
图16以数据流图(DFG)的形式示出了针对矢量a、b、c计算二次方程a*x^2+b*x+c=0的根x1、x2的示例性算法;图17示出了所述DFG的时序图,该时序图示出了当在收缩流水线循环中迭代时DFG的软件定义的算法是如何能够在具有足够PPC资源的IP核上以11Flop/cycle的吞吐量执行的。
这意味着在稳态下,流水线循环的每次迭代同时发出三个输入读取(a、b、c)、四个乘法、一个取反、两个减法、一个平方根计算、一个加法、两个除法和两个输出写数(x1,x2)。在核(83)上,这些运算被编码在VLIW中,该VLIW在单个并行超指令内实现整个DFG(包括数据路径)(图33)(这是一个简单的示例;如上所述,平方根和除法被扩展为1Flop/cycle FMA(融合乘加)运算的序列,例如在Intel Itanium架构中,它增加了图16的流水线循环实施方式图33的Flop和吞吐量,即ILP)。
在开始循环之前,所述VLIW由CU经由指令端口(44)提取并解码。在循环执行期间,CU迭代所述VLIW而无需另外的指令加载或解码。数据读/写是流水线的。
如上所述,DFG的并行指令被解释为虚拟运算器(VO),并且为了直观地理解收缩循环流水化,图17的时序图可以被想象为并行“组装分道”(分道0-3)的方案,该方案包括通过“传送带”(“缓冲区流水线”)互连的“生产机器”(输入运算器、数值运算器、输出运算器)以及在并行组装分道之间传递对象的机制(箭头)。箭头指示同步数据传输。
显然,缓冲区流水线在收缩周期到周期的基础上同步DFG的(内部流水线的)VO之间的所有数据传输。在图17的ASIC实施中,所述缓冲区流水线将被构建为FIFO,其确保每个读取的输入a、b、c被及时正确地处理,而不干扰其它读取的任何输入a'、b'、c'或从这样的a'、b'、c'导出的任何中间结果。
将所述FIFO同步概念转换为通用IP,根据本发明,缓冲区流水线被实施为被称为“锁存器”的“流水线存储器”地址的链式集合。在图17中,示出了缓冲区流水线中枚举的所述锁存器。
在流水线存储器中,每次循环迭代开始时,数据从一个锁存器移动到另一个锁存器;但不是物理地移动所述数据,而是通过如下的存储器地址映射方法虚拟地创建该行为:
根据图19,流水线存储器从交错存储器(190)以2^n个逻辑字的块(194)分配(n是正整数,并且在64位机器上,一个逻辑字包括8B)。如果流水线存储器块(194)被分配在逻辑偏移off处,则指向所述存储器块中的逻辑字的任何相对逻辑地址rel对应于绝对逻辑地址adr=rel+off。
在执行循环时,CU(71)使用硬件循环计数器i,该硬件循环计数器i在进入时被设置为0,并且在迭代循环时被递增。流水线存储器块(194)的每个锁存器被动态地映射到相对逻辑存储器地址rel per rel=(latch+i)^(2^n-1);换句话说,锁存器的相对逻辑地址rel包括依赖于循环的和latch+i的更低的n位。
图20示出了用于从i=1000开始循环迭代i的锁存器44的动态关系,该锁存器44在图17中位于乘法之后的分道1。根据n=7的动态映射,在i=1000时,乘法结果被写入rel=20,如在“乘写入”下所述,其中示出了在随后的循环迭代期间,对锁存器44的后续写入被定向到后续的逻辑地址rel=21、22、23、24、...
换句话说,锁存器44顺序地写入存储器,而不重写如缓冲区流水线的功能所需的旧数据。它至少在2^n=2^7=128次迭代中这样做,这足以不干扰图17的时序图所需的任何其它锁存器0~80。
接下来,在“乘输出流水线”中在i=1000时计算的结果之后,随着每次循环迭代,所述结果看起来从一个锁存器移动到另一个锁存器,其中它可以在锁存器=44、43、42、41、40、…处被访问。这模仿了缓冲区流水线的期望FIFO数据传输行为。
在迭代1004中,即在i=1000的写入运算之后的四个周期,存储在rel=20中的值可以由减法运算器从锁存器40中读取(“减读取”)以用于另外的处理。在时间上回溯,在i=1000的第一次迭代中,由减法的输入锁存器40读取已经通过在i=996的乘法计算并且(在那时)存储在相对逻辑地址rel=16下的数据。这就是乘法和减法如何同时工作,而不会通过它们的数据依赖产生干扰:这两个运算器被解耦,因为它们同时处理不同的循环级(即原始循环的迭代)。
从LLVM编译器的角度来看,图16的DFG的每个边缘是被实施为缓冲区流水线的完全SSA兼容的数据传输。编译器必须确保缓冲区流水线不重叠,并且在一个流水线存储器块内分配缓冲区流水线时使用选择的自由度来解决关于给定PPC集合的ALU和读/写端口的资源冲突。
缓冲区流水线还可以实施“循环承载的依赖”。在流水线循环中,后者的效果在“波前表示法”中被最好地理解,通过“波前表示法”,每个行进的波前由通过波前k进入流水线0级所在的循环迭代索引i指定的索引k编号。波前和流水线循环索引通过k=i-s(s=级)相互关联。每个波前k表示软件定义的“算法循环”的一次迭代k。由于“循环承载的依赖”意味着算法循环迭代k访问由某个较早迭代k-△k计算的数据,因此在某级s,波前k访问波前k-△k。这种访问通过从位于所述波前k右侧的△k级的锁存器读取来实施。
此外,在扩展复杂运算(如除法、平方根、正弦、余弦、多项式、数字滤波器等)时使用缓冲区流水线。
最后,缓冲区流水线可以补偿运算延迟中的运行时变化。如上所述,ALU运算需要具有保证的最小延迟和延迟上限,在该延迟上限以上,运算在未完成时使CU停顿,直到ALU已经递送了其结果。当计划运算器A的缓冲区写运算时,编译器必须计划其锁存器分配以使A的延迟最小;当计划稍后由消耗A的结果的某个运算器B读取缓冲区时,编译器则必须改为假设A的延迟最大。锁存器到地址的转换由CU执行,并相应地通信到A。因此,A将始终将其结果写入相同的逻辑存储器地址,而不管A的延迟;B的读取访问的完整性由上述规则保护。
需要ALU运算的延迟的上述运行时变化(称为“抖动”)来解决由ALU运算类型之间的延迟差异引起的存储器访问冲突。以图18为例,在一个周期n中发出的乘法将在周期n+5中写出其结果。如果无人看管,在同一周期n+5中,在周期n+2中发出的加法也将需要对存储器的写入访问。该资源冲突可通过将稍后运算(加法)的写出延迟到下一周期或甚至更晚来解决,如图32中所例示,图32示出了ALU如何在先来先服务基础上调度局部总线访问。对于无停顿运算,ALU的每个子单元(加法器、乘法器等)都必须由硬件输出FIFO缓冲;每个这样的FIFO必须至少提供足够的容量,以在必要时将子单元的延迟延长到子单元中的最大延迟(在图18中:21个周期的sqrt延迟)。
对于非ALU运算也是如此,例如如图33所例示的存储器读和写,在图33中,图17的收缩时序图被编译成汇编代码。这里假设指向循环的输入变量和输出变量a、b、c、x1、x2的指针位于可寻址GPP栈(PAT1)上的在逻辑地址空间中是固定的栈顶相对位置0s~4s。由于在相同的地址空间中,锁存器随着每次迭代“虚拟地移动”(参见图20,“乘写入”),存储器端口(77-79)和事务端口(75)上的访问冲突是不可避免的;这不仅适用于指针a、b、c、x1、x2,而且适用于这些指针的解引用值。
除了上述硬件缓冲(在这种情况下:在CU中而不是在ALU中)之外并且忽略增加端口数量的昂贵选项,以下减轻存储器访问冲突的解决方案是可行的,其必须得到ISA、编译器和CU硬件的支持:
·消除冗余存储器读取访问——例如在图33中:运算码#5、#6、#10、#11、#12、#13所需的对45p、48p、38p、0p的多次读取访问,其中CU可以在内部分布读入值以构造所述运算码;
·通过将运算码#0和#3收缩到mult[0s]++,2h,31p等等来消除存储器读取访问;
·使用用于指针(例如mult[0r]++,2h,31p)的可预加载的专用I/O寄存器和表示这样的I/O寄存器的0r;
·使用指令读取端口(76)用于数据读取——如上所述,在循环执行期间,CU迭代预加载的VLIW而没有另外的指令加载/解码,因此这些端口是“空闲的”(该方法在评估多项式等时也是有用的);
·通过每次循环迭代使用更多的VLIW来增加端口容量;
·允许流水线停顿——如上所述和如下所述,TMT调度器能够进行周期到周期的线程切换,因此,只要这种停顿持续,一些其它线程就可以利用PPC集合。
值得注意的是,在该上下文中,图17的时序图将关于M1存储器访问和CU延迟的问题过度简化为例如在分道2、锁存器34中,两个乘法之间的数据必须从ALU(41)经由本地端口(47)传输到M1存储器(51),并且从M1存储器(51)经由端口(45、46)之一通过CU(71)和指令端口(43)传输到另一ALU(41)。
但是只要所有涉及的运算都是完全流水线化的,这个总的延迟就可以相应地通过以下方式来平衡:
·利用包括存储器读取和写入访问延迟的总体运算器延迟进行规划;
·部分地重叠运算,因为第二运算必须在第一运算的结果可用之前发出,必须以存储器握手匹配的方式调整时序;
·通过为其分配第二锁存器来解耦存储器握手,从而在任何情况下数据都不会在被消耗之前被重写。
实际上,存储器流水化提供了存储器和吞吐量之间的权衡。原则上,流水线存储器可以具有任意大的访问延迟;这释放了关于交错的M1存储器块的大小的所有限制(所述交错的M1存储器块主要旨在用作流水线存储器库),除了数据传输能量限制。
但是,虽然这对于面向吞吐量的工作负载是正确的,但对于实时应用可能不是,在这种情况下,必须就M1延迟与吞吐量进行第二次权衡。
总结如下:使用锁存器而不是逻辑地址,可以编译循环不变的机器码(参见图33),其虚拟地执行实施图17中所描绘的收缩数据流所需的所有数据传输而不必物理地移动专用硬件缓冲区中的数据。在功能上,该方法类似于“旋转寄存器文件”(Rau;Itanium)的“寄存器重命名”方案,但是在这里,该方法被应用于交错存储器的潜在的许多和大的分配,即标准SRAM,而不是少量专用寄存器(Itanium:96),并且因此可以用作下文描述的VHTC方法的基础。
一个一般性注解是,上述存储器流水化的方法不限于处理字长(在64位机器上:8B)数据项,但也可以应用于更广泛的数据类型,例如四进制浮点数或64位复数。然后,必须分配第二流水线存储器块(194),其“旋转”速度是标准块的两倍,即将锁存器转换为具有双倍步长的相对逻辑地址:rel=(latch+2*i)^(2^n-1)。然后,在汇编代码中,锁存器类型需要通过后缀来区分,例如‘21p’表示单步锁存器,‘13p2’表示双步锁存器。
图21示出了通常流水线循环需要动态循环控制。表(a)示出了算法迭代的数目N大于流水线循环级的数目S的情况。在这种情况下,“prolog”(循环填充)阶段、“Kernel”(稳定状态)阶段和“epilog”(循环排出)阶段可以被清楚地区分,并且静态编译器方法(Rau)将组装S prolog VLIW、一个内核VLIW加控制结构和S epilog VLIW;这种静态编译的众所周知的缺点是:
·循环具有的级S越多,就代码大小而言,该循环的与内核相关的prolog/epilog开销越大;
·epilog延迟是“死时间”,因为如图21(b)所示在epilog期间循环不能重新启动,在图21(b)中,“旧”数据包被排出(epilog,右侧),而“新”数据包已经填充流水线(prolog,左侧);
·场景(c)——数据包比流水线短——以及多尺寸的多包场景(d)不能被实施,因为这两者都需要多个控制流的并行执行。
图22公开了如何能够通过嵌入式控制标签(221)来处理所有上述场景(a-d),该嵌入式控制标签(221)扩充每个数据字(222),从而创建作为整体处理原子信息项的控制/数据字(220)。因此,IP核(70)的每个部件都必须支持这样的控制/数据字(220)(其在下文中有时也简称为“数据”)。
控制标签(221)由三个控制位组成,即:
·TERM(223),用于在条件流水线循环中流式传输用于算法循环终止的并行控制流信息;
·NULL(224),其不仅用于在预测的条件语句内流式传输并行控制流信息,而且还用于图21的场景;
·ESC(225),其用于将各种类型的信息嵌入到数据流中。在图23中示出了这种信息的编码的草案。通常,数值运算器忽略ESC数据并将其传递。如果数值运算器在其输入处接收到冲突的类型,则ESC数据优先于标准(ESC=0)数据。运算器输入处的冲突的ESC数据构成错误。
利用控制/数据,通过引入读取(RD)运算器的“非阻塞”运算模式来管理图21的动态循环控制的场景,其中,如果读取成功,则RD运算器将“有效数据”(NULL=0)写入流水线,如果读取不成功,则RD运算器将“空闲数据”(NULL=1)写入流水线(如果读取操作停顿,则可能是这种情况)。随后的运算器以其预定义的方式处理数据(情况:有效)或将空闲数据发送到下一个运算器(情况:空闲)。相应地,写入(WR)运算器仅作用于有效数据,但跳过空闲数据。
由于所述非阻塞模式在从具有抖动延迟的数据源读取时避免了流水线停顿并且尽可能快地排空流水线,因此它可以例如被用于实时信号处理。在非阻塞模式中,流水线总是“活动的”,从而尽可能快地清除波前,但是具有也要处理空闲波前的缺点,这会消耗沿着路径(75、77-79)的数据传输能量和总体性能(因为流水线从不解除调度,因此会阻塞所有其它线程)。
为了使能量成本和处理开销最小化,当流水线完全排空时,该流水线自动切换到下面解释的“阻塞”模式。在阻塞模式中,当停顿时,线程由临时多线程(TMT)调度器解除调度,并且仅在新数据到达并且流水线恢复其先前的非阻塞模式时被重新调度。
用于减少空闲数据的数据传输能量的附加硬件支持可以考虑在空闲情况下仅NULL位需要被存储并经由内部总线进行通信。
在纯数据处理工作负载中,感兴趣的不是延迟,而是最佳资源利用率。对于这样的工作负载,“阻塞”运算模式是合适的,其中当没有输入可用时,流水线被解除调度;流水线仅处理有效波前。此后,阻塞模式被假定为默认的IP流水线运算模式。
流水线可以通过“传输结束”(EOT)波前(即仅包括EOT数据的波前)排空(图23)。在通过流水线的RD运算器集合检测到(并传递)EOT波前之后,流水线从阻塞模式切换到上述非阻塞模式,在该非阻塞模式中流水线被排空(即填充空闲波前)直到“开始传输”(SOT)波前被接收到(在这种情况下,IP流水线返回到如图21(b)所示的阻塞模式)或者EOT波前已经到达传递EOT波前的WR运算器集合。然后,所有有效波前都被写出;流水线循环相应地终止;执行控制被传递到其周围的算法(即,传递到执行流水线循环的GPP栈机,该流水线循环在EOT时终止,使得可以执行下一个随后的顺序栈机指令)。
所有RD运算器和WR运算器的同步(当涉及通道或物理I/O时,其可能是必要的)通过以下事实来实现:VLIW执行可以被它包括的每个机器指令(这里:RD或WR)停顿;所述同步也在一个流水线循环迭代由VLIW的序列组成的上述情况下工作。
值得注意的是,所有I/O运算器如RD和WR都由CU(71)执行,CU(71)作为中央单元协调上述同步。CU还保存流水线状态信息,例如“阻塞模式与非阻塞模式”(上文讨论)、“SOT可中断排空与总是完全排空”等。
因此,数据包处理可以用“数据包的开始/结束”(SOP/EOP)波前来实施,包括在每个数据包之后排空流水线或保持流水线以阻塞模式填充的选项,这两种模式相对于延迟绑定的实时数据处理与吞吐量绑定的标准数据处理均具有优势和缺点,如上所述。
TERM在流水线条件循环中如下被使用:比较运算器确定是否满足退出算法循环的条件,并相应地设置通向“条件写入”(CWR)运算器和/或“条件读取”(CRD)运算器的数据路径上的TERM位。
在CWR运算器之上,条件算法循环可以递送结果。CWR仅写出TERM=1数据。结果是清除了TERM位。
CRD运算器是一个“双向选择器开关”,如果TERM=0,则其将波前反馈到流水线中以进行另外的迭代,或者通过读入波前替换流水线以开始下一个算法循环迭代(TERM=1)。
图24展示了如何在使用CRD运算器和CWR运算器的情况下使得流水线条件循环可以无间隙地处理波前但将倾向于重新排序波前的序列。这个问题通过将“波前分道”(WL)添加到DFG来解决(参见图17),在WL上,在读入时,每个波前都由序列WAVE号标记(图23)。当CWR运算器在其输出缓冲区中恢复原始波前序列时,由CWR运算器评估所述WAVE号。输出缓冲区溢出保护请求(用于临时阻止CRD输入并且替代地插入空闲波前)经由NULL位在WL之上通信。上面讨论的TERM位也经由WL作为信号被发送,并且可选地,可以使用附加WL写出中间循环结果。简单地说,WL被用作流水线循环的并行控制流的物理载体。
如图24中例示的许多控制流的并行执行不能在冯诺依曼架构上实施。因此,流水线循环构成了上面宣称的称为“IP流水线”的基本数据处理结构的新的通用类型。
在预期下面解释的“超流水化”的概念时,应注意,将IP流水线的内部控制流嵌入到专用WL控制/数据流中允许将任何IP流水线“拆分”成可以由并行线程执行的级联IP流水线的序列,然后所述并行线程可以分布在不同的核或甚至处理器的网络之上(如果认为适合)。“控制流分布”和“流水化流水线”的该选项是本发明的独特特征,并且预期在流水化大型复杂工作负时有用载(如下所述的工作负载平衡)。
在IP流水线中,可以应用最先进的预测方法来将算法条件if-else语句转换成“预测指令”的基本块,如果某个条件成立,则执行这些基本块,否则跳过。这样的预测指令在没有分支的情况下被执行/跳过,并且因此可以在IP流水线概念内使用。
现在,在本发明的上下文中,控制/数据承载的预测(即条件运算器执行)可用于每个NULL位(图22)。因此,算法分支指令“if”和“else”被转换成“fork”运算器和“join”运算器,所述“fork”运算器和“join”运算器构成DFG的控制/数据流元件并由CU执行(图25):
·fork运算器(250)有条件地重写缓冲区流水线(253)中的数据(fork运算器(250)在图25中表现为fork的输入和输出两者)并且向第二缓冲区流水线(254)馈送数据。为此,从(253)读取数据字W。如果W是空闲的,则fork运算器将空闲字写入(253)和(254)。另一方面,如果W是有效的,则(取决于控制字(252)的内容)fork有条件地保持(253)不变但将空闲字写入(254),或者替代性地将空闲字写入(253)并将有效字W复制到(254)。(253、254)可以被视为fork运算器的“if”和“else”分支流水线。
·join运算器(251)通过丢弃所有空闲数据并且仅提取有效数据(无论哪个分支提供该有效数据)来将“if”和“else”分支流水线(253、254)联合到一个结果流水线(255)。
·选择“分支”(253、254)中的哪一个来处理数据的决定由fork运算器(250)根据“控制数据”(252)做出,这取决于如IP流水线的算法所指定的fork的比较结果类型(“等于零”、“小于零”等)。替代性地,fork也可以基于ESC控制数据(252)做决定;该附加选项允许使用控制流(CALL、LINK、RET、TRAP)、协议(SOT、EOT、SOP、EOT)或用于所有类型的数据流状态的条件处理的管理信息(如系统状态消息等)(图23)。
·根据生成算法if-else语句,成对的“if”和“else”分支(253、254)可以由成对的“条件”DFG(CDFG)代替,所述成对的CDFG彼此不连接,但是经由多通道版本的fork运算器(250)与周围的全局DFG交换控制/数据,所述多通道版本的fork运算器(250)仅具有一个控制输入(252),但具有n个“if分支”(253)和n个“else分支”(254)、递送m个输出(255)的m个join(251)的集合(m不一定等于n)以及可选的可用于两个CDFG的k个附加无条件输入的集合。
·最后注意,在上面讨论的结构的上下文中,“推测执行”可以通过使fork运算器成为无条件的(即,移除它)来实施,而不是使用“条件join”或上述join加上在某个点有条件地“作废”“if”和“else”数据流的中间运算器(条件NULL运算器)。
现在如下面所公开的,所述CDFG中的每一个都可以被编译成将由并行线程执行的独立的新IP流水线。发送方与两个接收方IP流水线中的每一个之间的通道通信由“多通道fork”运算器保护,该运算器通过仅发送有效数据并跳过空闲数据来表现得像多通道版本的写入运算器WR。在这样的并行设置中,join运算器必须被仅接受来自两个并行IP流水线的有效输入数据并忽略空闲数据的“多通道连接”运算器替换。
由于CDFG流水线、通信和多线程/多处理抖动的延迟差异,这种并行设置将倾向于重新排序原始波前序列,因此通过“多通道join”进行“重新序列化”将是必要的。溢出保护由CSP(“通信顺序进程”,Roscoe)数据流执行模型自动提供,根据本发明,并行线程在该模型下运行。多通道fork运算器和join运算器由接受通道列表作为参数的IP SIMD机器指令实施(参见上文并参考Occam)。
与预测执行相比,受保护IP流水线节省能量。然而,有时可能需要将预测执行与受保护执行混合,例如在复杂开关或其它嵌套条件语句中。
受保护IP流水线的替代方案是对子例程的条件顺序调用。这种顺序调用的一个用例可能是处理程序例程,当在(252)上接收到ESC字时,该处理程序例程由fork运算器调用。这样的顺序处理程序调用通过调用GPP栈机模式来临时挂起并行IP流水线运算,但是为偶发系统响应提供了灵活性,当在预测代码或并行流水线中实施时,偶发系统响应消耗太多能量和性能。
原则上,IP栈机可以顺序地运行任何数量的IP流水线,但是根据本发明,每个IP栈机仅使用一个IP流水线。这简化了图19的存储器分配方案,因为流水线存储器(194)的每个块被链接到栈存储器(192)的一个块。因此,所述块(194)的逻辑存储器地址偏移及其大小是存储在其专用寄存器(SPR)集合中的栈机的固有属性。因此,为了访问所述流水线存储器块的锁存器,机器指令仅需要指定其(相对)锁存器地址(该地址例如在图33中仅包括7位)。
其次,根据PAT1,栈存储器经由TOS相对(TOS=栈顶)地址被访问,这些地址通常是“小的”。因此,可以定义ISA,其中栈和流水线存储器访问可以自由地混合,而不会产生非常宽的指令大小;地址类型可以通过机器代码中的后缀字母‘s’和‘p’(图33)以及通过相应地址字段中的类型位来区分。
第三,使用PAT2中公开的“安全指针”方法,可以经由位于栈上(并且因此经由“小的”栈地址被访问)的“安全指针”对象间接访问原始交错存储器块(190)中的分配。后一种方法可用于将对(190)中的存储器分配的读取访问和写入访问与对VLIW中的流水线存储器的访问如图17的执行所需要的那样混合。
根据PAT1,线程切换需要切换专用寄存器(SPR)集合,其保有由指令指针、线程和其它ID、存储器分配和其它信息组成的线程上下文。CU为当前活动的线程和一定数量的当前等待的线程维护SPR集合队列。所述SPR集合队列通过TMT调度器管理,TMT调度器部分地在硬件中实施以确保CSP数据流模型的软件配置的但在运行时主要是软件独立的执行(Roscoe,Occam)。任意数量的SPR集合(每个线程一个)被保存在原始交错存储器(190)中的备份SPR块中;在CU的并行端口之上,SPR集合可以被保存到所述SPR备份块和从所述SPR备份块恢复。
与SPR集合队列一起,TMT调度器还通过将等待线程的流水线存储器块(194)从等待线程的备份位置分配/预加载到快速访问/低延迟M1 SPM中来准备等待线程,从而相应地调整等待线程的SPR集合中的相关指针。类似地,分配并预加载M1栈段。
现在,当在运行时期间分配这样的临时M1存储器块时,所述块可以被对齐,使得仅需要本地DMA运算的内部存储器端口(图5)用于M1预加载和卸载。在这种情况下,后面的TMT活动不与软件M1栈和流水线存储器访问(其使用不同的端口集合(图5))竞争,并且因此可以作为并行后台硬件活动来执行(假设有足够的M1容量可用并且线程切换频率不是“太高”)。
相应地,TMT调度器可以总是保持一定数量的线程以“准备好以M1模式运行”状态等待,在该状态中,线程的M1块被预加载。M1块可根据性能需求进行配置。原则上,线程也可以完全地(或临时地)在M2、M2或M4(DRAM)之外执行,而不受M1预加载/卸载的影响。
在运行时,线程切换仅需要改变选择SPR集合队列的哪个元件(即哪个线程)将在下一个周期中被执行的线程指针(TP)。因此,在“低线程切换频率”的预期标准使用情况下,TMT以零周期线程切换运算,这允许在CU停顿的情况下通过线程切换隐藏上述细粒度延迟,在CU停顿中,只要停顿持续,CU(71)就向PPC集合(72)发出其它线程的VLIW。
在该上下文中,如CSP实施中通常的那样(Roscoe、Occam),由停顿线程间通道引起的CU停顿使TMT调度器对停顿线程解除调度。然后,由所述线程占用的SPR集合和M1存储器块可以(但不需要)被卸载,即被写回到它们的原始备份分配,在那里等待直到线程被重新加载并准备好用于其下一个执行轮。
因此,TMT调度器将M1管理为用于它根据CSP数据流执行方案通过所通信的数据包的可用性和优先级选择的活动线程和等待线程的流水线存储器块和最顶层栈段的队列。该活动由附加地址解码机制支持,该机制将M1 SPM作为(虚拟)无限存储器呈现给软件,该(虚拟)无限存储器通过模运算被映射到有限的M1存储器卷,从而允许临时M1存储器分配块在M1边界处“包装”,从而最佳地利用可用的M1存储器空间。
由于所有栈和流水线存储器访问由虚拟化层(191、193)管理,所以TMT调度器的上述物理M1存储器分配和加载/卸载活动对于运算系统、中间件和所有软件层是不可见的,所有软件层访问每个相对地址(即(在每个线程的运行时)总是指向相同物理数据而不管实际的物理数据位置的栈地址和锁存器)的所述存储器类型。当要求“存储器虚拟化技术,其取代在当今的高速缓存中存在的能量和芯片面积密集型数据查找电路”时,上面暗示了这种机制。在此上下文中,需要由软件执行的唯一显式活动是将常用堆数据(190)加载到栈(194)上并在使用后将其卸载,在栈(194)上,常用堆数据(190)仍然可以经由强大的指针运算器(PAT2)被访问,但延迟最小(PAT1)。原则上,可以通过重新引入高速缓存型存储器元件来消除所述活动,如果需要,则该重新引入需要考虑关于面积/能量开销与依赖于应用的性能改进。
在上述TMT的顶部上,如图30所示,“同时多线程”(SMT)可以由控制单元(71)的集合(311)执行,所述控制单元(71)并行地处理p个线程,但是经由“控制分发单元”(CDU)(312)共享读取端口(76-78)和写入端口(75)。根据线程优先级,所述CDU授予p个CU(71)读取访问,并将由p个CU(71)发出的p个VLTW的指令组合成单个VLTW。它通过如图31中例示的“填充间隙”在每个PPC的基础上以优先化的方式这样做。值得注意的是:
·所示的SMT方法保证最高优先级非空VLTW将总是完全执行。
·(延迟绑定)GPP线程的Flop/VLTW密度受可用ILP的限制,并且预期较低(实际上,超标量冯诺依曼处理器很少达到2以上的ILP)。GPP ILP可以通过经由条件构造的预测处理增加块长度来增加(这是已知的技术)。
·可存在GPP线程不发出VLTW(“空VLTW”,在图30中以优先级2的VLTW例示)的周期。这可以通过图17的示例来理解:在GPP模式中,对于sqrt计算的持续时间,不能发出指令。此外,条件分支将产生空VLTW(注意,本发明提出的架构不需要依赖于分支预测:条件分支是“等待”的)。
·对于VHTC线程,SMT不与存储器流水化冲突,因为每个VHTC线程维持独立的流水线存储器块和循环计数器i,循环计数器i在完成循环迭代时递增,而不管所述迭代花费多少周期。
根据本发明,软件被理解为顺序线程的并行网络,即顺序地执行VLIW的进程,其遵守“通信顺序进程”(CSP)范例(Roscoe)。与晶片机技术(Occam)一样,CSP是ISA的基本构建原则。这意味着通道通信和与并行处理相关的其它OS原语被实施为根据本发明符合当代消息传递接口(MPI)技术的机器指令。
现在,大多数相关的计算机工作负载执行通常以循环的形式组织的重复性工作。有时,这样的循环可以包括复杂的控制结构和嵌套子例程调用的分层级别,其在较低级别可能会进入中间件和运算系统领域。本发明的下一方面示出了任何循环如何能够以一种方式被解构,使得它能够由称为“IP超流水线”的IP流水线分布式网络执行。
首先再次重新考虑图17的示例,其平方根(“sqrt”)运算器原则上可以由通过迭代执行平方根计算的子例程来实施;根据本发明,这种迭代可以由条件IP流水线执行。
图26示出了用于所述“sqrt流水线”的运算的通道布局。为了避免死锁,图17中所示的IP流水线被拆分成sqrt调用的“调用者”(260,级0-15)和“收件人”(262,级37-56)。通道(263-265)被缓冲。对于收缩运算,分道3的缓冲区流水线被缩短到锁存器24-31,分道0的缓冲区流水线被缩短到锁存器69-80。两个分道都经由通道(265)从调用者(260)发送到收件人(262)。此外,调用者经由通道(262)将其分道1数据发送到被调用者(261),被调用者(261)在其方面将计算的sqrt结果发送到收件人(262)。
调用者-被调用者通道(263)是固定的,但是由于被调用者是子例程(其原则上也可以由其它调用者调用),其输出通道必须被动态矢量化,因为它可能必须将结果递送给在编译时未知的收件人。为此,操作调用者的IP流水线的SM经由发送到被调用者的CALL打开调用,并且发送关于每个LINK的目标收件人的动态通道(264)配置(图23)。在被调用者已经相应地与收件人建立了所需的动态通道配置之后,所述被调用者向调用者发送ACK,这确保开始其IP流水线。
被调用者的流水线在响应调用者的连接请求时触发动态配置其输出通道所需的异常处理程序,然后处理调用者的数据,从而将其sqrt结果递送给收件人。在调用执行期间,被调用者在其WL中将调用者的ID和调用号码进行编码(参见图23)。被调用者的CWR运算器相应地将其输出矢量化到所配置的适当收件人通道(264)。
最后,调用者关闭由ACK应答的每个RET的调用。
上面讨论的图26示出了简单的IP超流水化示例,其概述了如何递归地解构具有分层控制结构的非基本算法循环的方法,所述分层控制结构由嵌套的子例程调用组成,但没有条件构造(for或while循环、if-e/se或switch语句等)。所得到的IP超流水线是经由CSP通道进行通信的IP流水线的网络;每个IP流水线由以并行线程运行的GPP栈机操作。
上述递归方法也可以应用于非基本循环的内循环。再次关于图17,替代上面讨论的子例程调用,sqrt运算器可以替代性地已经由包括在图16的DFG中的while循环在算法上指定。在这种情况下分解出所述while循环并将其外化为“专用”子例程,该分解原则上将再次导致图26的图示,唯一的区别在于以下事实:对于所述“专用”子例程,不需要动态通道配置(CALL、LINK、RET、ACK),因为现在被调用者到收件人通道在编译时是已知的,因此可以被配置为固定的CSP通道。
图27示出了当将上述CDFG编译为用作“专用”子例程的IP流水线(271、271)时图25所示的条件if-else结构如何转换。该方案可以被推广以覆盖嵌套条件结构和切换语句;如已经提到的,可以应用于后面的情况的一种可能的方法是将语句拆分成计算执行索引的(预测的)前序和由对索引条件分支流水线(271、272、...)的集合的矢量化调用组成的后续。
通过该最后的方面,递归解构方法完成并且可以应用于能够分布在IP核的网络之上的被组织为IP超流水线的任何外循环,从而均衡和优化核和处理器负载以实现最佳可能的VHTC性能。在软件层面上,各个流水线在核和处理器上的“放置”是不可见的;它在软件开始时被配置,但是可以在运行时被改变,这对于动态工作负载平衡是有用的。
在最高级处,任务将始终以顺序冯诺依曼GPP栈机模式作为一个初始线程开始。上述递归循环解构方法是可选的,并且根据本发明,其可以应用于包括在所述初始线程中的至多一个外循环;这种对“仅一个循环”的限制不是必需的,而是一种简化存储器管理的设计选择(每个线程最多一个流水线存储器分配)。如果在所述初始线程中选择多个外循环用于解构,则初始线程需要被分解成多个通信线程(参见图26、图27的调用者-收件人设置),每个通信线程包括被选择用于解构的至多一个循环。
值得注意的是,在每个方面中,上面解释的递归解构方法创建了新线程,对于每个新线程,可以做出是以顺序GPP还是以并行VHTC流水线模式处理其输入控制/数据的独立决定(回头参考,对于图16中所述的示例也是如此)。这种选择的自由度允许编译器根据工作负载的特性在吞吐量、延迟、能量消耗和存储器要求之间进行权衡来调整每个这样的线程的代码。
因此,预期本发明的应用在实践中由GPP、SIMD和VHTC的平衡混合组成,这还具有关于IP核硬件设计的以下含义:
·为面向吞吐量的“数字运算”应用(其中延迟不太重要)设计的IP核预期具有大的M1以适应维持VHTC的大的(和许多的)流水线存储器块。由于大的M1延迟,当在GPP模式中的实时条件下运算时,这样的核将表现不佳,特别是如果与传统的寄存器机核相比(因为寄存器具有非常低的延迟)。
·另一方面,为实时处理工作负载设计的IP核将具有非常小的M1 SPM,可能达到乃至典型寄存器文件的大小。在这样的核中,TMT将在M2 SPM中分配其临时流水线存储器块,而不是如上所述地在M1中分配。由于流水线VHTC处理对缓冲区延迟几乎不敏感,因此该措施将仅略微降低VHTC,同时产生良好的GPP实时性能。
后一种IP核类型预期将出现在人工智能方面的工业应用中,而前一种IP核类型则出现在数据中心中。

Claims (19)

1.一种可编程数据处理设备(70),包括:
组合的数据处理和存储单元(72),所述处理和存储单元(72)包括至少一个算术逻辑单元(41),所述算术逻辑单元(41)能够根据设备(70)的指令集合架构对设备(70)所支持的所有数据类型的数据执行由设备(70)的指令集合架构指定的数据变换运算,诸如算术运算、逻辑运算或其它基础数据变换运算;以及至少一个存储器系统(42),用于存储与所述运算有关的数据和代码,以及
可编程控制单元(71),用于执行除数据变换运算之外的由指令集合架构指定的另外的运算、例如控制相关的运算,诸如指针解引用、数据提取、数据存储、比较、指令提取、解码、分发或分支,
所述控制单元(71)适于在通过数据传输装置(76)从处理和存储单元(72)提取出的代码的控制下,通过运算数数据传输装置(77、78)从处理和存储单元(72)获得运算数数据,并通过相互独立的并行指令传输装置(75)的集合,使用指定要执行的数据转换运算的事务控制字、要被所述数据变换运算处理的运算数数据以及用于所述数据变换运算的结果的目的地位置或地址控制处理和存储单元(72),
其特征在于,
所述设备(70)被配置为能够在至少一个运算模式中将数据变换运算的结果直接写入存储器系统(42)内的目的地地址,以及
处理和存储单元(72)具有相互独立的算术逻辑单元(41)的集合(73),用于并行地执行数据变换运算,具有相互独立的存储器系统(42)的集合(74),用于并行地存储所述并行数据变换运算的结果,并且具有相互独立的并行数据传输装置(47)的集合(79),用于在所述设备(70)的至少一个运算模式中将所述并行数据变换运算的结果从相互独立的算术逻辑单元(41)的集合(73)直接传输到相互独立的存储器系统(42)的集合(74),所述处理和存储单元(72)的任何设置适于执行至少一个超长事务字,所述超长事务字包括由控制单元(71)经由指令传输装置(75)的集合发送到处理和存储单元(72)的相互独立的算术逻辑单元(41)的集合(73)的并行事务的集合,所述事务字包括至少一个事务,所述至少一个事务在其指令类型方面不同于相同事务字内的至少一个第二事务。
2.根据权利要求1所述的设备(70),其中,所述至少一个事务字包括使所述算术逻辑单元(41)将一个运算数的值直接写入存储器系统的集合(74)中的一个存储器系统(42)的至少一个事务。
3.根据权利要求1或2所述的设备(70),其中,相互独立的算术逻辑单元的集合(73)中的每个算术逻辑单元(41)都连接到相互独立的并行指令传输装置(75)的集合(75)中的一个指令传输装置(43),并且所述指令传输装置(43)排他性地连接到所述算术逻辑单元(41)。
4.根据前述权利要求中任一项所述的设备(70),其中,存储器系统的集合(74)中的每个存储器系统(42)都经由相互独立的并行数据传输装置(75)的集合(79)中的一个数据传输装置(47)连接到相互独立的算术逻辑单元的集合(73)中的一个算术逻辑单元(41),并且所述算术逻辑单元(41)经由所述数据传输装置(47)排他性地连接到所述存储器系统(42),所述设备(70)优选地包括素数个算术逻辑单元(41)。
5.根据前述权利要求中任一项所述的设备(70),其中,所述存储器系统(42)中的至少一个存储器系统被分解成通过数据传输装置(50、51)互连的相互独立的存储器子系统(53)的集合。
6.根据权利要求4或5所述的设备(70),其中,所述存储器子系统(53)中的至少一个具有另外的独立数据传输装置(44、45),用于与所述设备(70)的除了连接的算术逻辑单元之外的单元交换数据,例如另外的控制单元(71)或诸如到另外的设备(70)、文件系统、处理器互连、用户控制台或其它外部实时数据源或接收器的I/O接口。
7.根据前述权利要求中任一项所述的设备(70),其中,所述控制单元(71)还适于经由相互独立的并行数据传输装置(44、45)的集合从存储器系统的集合(74)中的至少一个存储器系统(42)读取数据和代码。
8.根据权利要求4-7中任一项所述的设备(70),其中,所述控制单元(71)借助于交错存储器抽象层(190)而适于作为交错逻辑存储器的单个统一的块访问存储器系统的集合(74)中的相互独立的存储器系统(42),使得任何逻辑存储器地址唯一地指定存储器系统的集合(74)中的存储器系统(42)和所述存储器系统(42)内的物理地保存数据的目的地地址。
9.根据权利要求8所述的设备(70),其中,所述控制单元(71)包括实施所述交错存储器抽象层(190)的地址解码器。
10.一种使用可编程数据处理设备(70)的方法,所述可编程数据处理设备例如前述权利要求中任一项所述的可编程数据处理设备(70),其中,例如借助于流水线存储器抽象层(193),生成虚拟数据流,所述虚拟数据流由在形成流水线(194)的一致存储器块内定义的索引和地址变换控制,使得所述索引从位于流水线(194)内的相对地址中被减去或被加到位于流水线(194)内的相对地址,从而所述变换产生锁存器地址。
11.根据权利要求10所述的方法,其中,通过例如借助于模变换的另外的地址变换,所述流水线(194)被组织为环形缓冲区。
12.根据权利要求11所述的方法,其中,根据所述设备(70)的指令集合架构,例如借助于适于根据与所述流水线(194)相关联的索引将所述锁存器地址转换成逻辑地址的地址解码器硬件,将锁存器地址用作指令源和目的地地址。
13.根据权利要求12所述的方法,其中,所述流水线(194)与至少一个软件循环相关联,所述至少一个软件循环用于递增或递减与流水线(194)相关联的索引。
14.根据权利要求13所述的方法,其中,所述软件循环由专用线程执行。
15.根据权利要求11-14中任一项所述的方法,其中,流水线(194)优选地经由通道进行通信。
16.根据权利要求15所述的方法,其中,通信的流水线(194)形成网络。
17.根据权利要求11-16中任一项所述的方法,其中,控制流信息被嵌入到由流水线处理或在流水线之间通信的数据流中。
18.根据权利要求17所述的方法,其中,通过控制标签(221)扩充所述流的每个数据字(222)来将控制流信息嵌入到数据流中,扩充的数据字(220)作为一个整体被存储、处理和通信,并且控制标签(221)包括用于控制执行的位(223、224、225)的组合,例如至少一个位(223)控制循环终止,一个位(224)控制对数据字(222)的运算的有条件执行,或者一个位(225)指示数据字(222)包含另外的控制信息。
19.根据权利要求10-18中任一项所述的方法,其中,例如借助于栈存储器抽象层(191),存储器块(192)被分配为相对于所述栈的顶部引用的可寻址数据栈。
CN202080107152.5A 2020-09-12 2020-09-12 通用计算核上的交错处理的方法 Pending CN116670644A (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/EP2020/075579 WO2022053152A1 (en) 2020-09-12 2020-09-12 Method of interleaved processing on a general-purpose computing core

Publications (1)

Publication Number Publication Date
CN116670644A true CN116670644A (zh) 2023-08-29

Family

ID=72474324

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080107152.5A Pending CN116670644A (zh) 2020-09-12 2020-09-12 通用计算核上的交错处理的方法

Country Status (4)

Country Link
US (1) US20230367604A1 (zh)
EP (1) EP4211553A1 (zh)
CN (1) CN116670644A (zh)
WO (1) WO2022053152A1 (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117633914B (zh) * 2024-01-25 2024-05-10 深圳市纽创信安科技开发有限公司 基于芯片的密码资源调度方法、设备和存储介质
CN117909907B (zh) * 2024-03-14 2024-07-30 宁德时代新能源科技股份有限公司 高通量计算平台及其异常排除方法、装置及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040078608A1 (en) * 2001-04-02 2004-04-22 Ruban Kanapathippillai Method and apparatus for power reduction in a digital signal processor integrated circuit
GB2419006B (en) * 2002-04-22 2006-06-07 Micron Technology Inc Providing a register file memory with local addressing in a SIMD parallel processor
TWI246023B (en) * 2003-11-26 2005-12-21 Admtek Inc Very long instruction word architecture
EP2996035A1 (en) * 2008-10-15 2016-03-16 Hyperion Core, Inc. Data processing device
GB2471067B (en) * 2009-06-12 2011-11-30 Graeme Roy Smith Shared resource multi-thread array processor
MA44821A (fr) 2016-02-27 2019-01-02 Kinzinger Automation Gmbh Procédé d'allocation d'une pile de registres virtuels dans une machine à pile

Also Published As

Publication number Publication date
US20230367604A1 (en) 2023-11-16
WO2022053152A1 (en) 2022-03-17
EP4211553A1 (en) 2023-07-19

Similar Documents

Publication Publication Date Title
US11055103B2 (en) Method and apparatus for a multi-core system for implementing stream-based computations having inputs from multiple streams
CN109213723B (zh) 一种用于数据流图处理的处理器、方法、设备、及一种非暂时性机器可读介质
US20210406027A1 (en) Advanced processor architecture
US8782645B2 (en) Automatic load balancing for heterogeneous cores
RU2427895C2 (ru) Оптимизированная для потоков многопроцессорная архитектура
US20220100680A1 (en) Apparatuses, methods, and systems for a configurable accelerator having dataflow execution circuits
CN111527485B (zh) 存储器网络处理器
US20080155197A1 (en) Locality optimization in multiprocessor systems
Voitsechov et al. Inter-thread communication in multithreaded, reconfigurable coarse-grain arrays
US20050278720A1 (en) Distribution of operating system functions for increased data processing performance in a multi-processor architecture
CN116670644A (zh) 通用计算核上的交错处理的方法
Amamiya et al. Datarol: A massively parallel architecture for functional languages
Matheou et al. Architectural support for data-driven execution
US9984037B1 (en) Scheduler for a fine grained graph processor
JP7495030B2 (ja) プロセッサ、処理方法、および関連デバイス
WO2022036690A1 (zh) 一种图计算装置、处理方法及相关设备
Niederhagen Parallel cryptanalysis
Ginosar The plural many-core architecture-high performance at low power
Schuele Efficient parallel execution of streaming applications on multi-core processors
Dai et al. A basic architecture supporting LGDG computation
Yeh Accelerating Parallel Tasks by Optimizing GPU Hardware Utilization
Haubelt et al. Using stream rewriting for mapping and scheduling data flow graphs onto many-core architectures
Mistry et al. Computer Organization
Rutzig Multicore platforms: Processors, communication and memories
CN116685964A (zh) 运算加速的处理方法、运算加速器的使用方法及运算加速器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination