科技观察:神威·太湖之光超级计算机

【ZD Research】神威·太湖之光(Sunway TaihuLight)是一套由40960个申威SW26010处理器组成的超级计算机,申威SW26010看起来则是一种AMP不对称多处理、NUMA不一致内存访问架构的处理器。

【ZD Research】日前,在德国法兰克福宣布了最新版的全球超级计算机TOP500排行榜,榜首的是一台新机器——神威·太湖之光(英文名Sunway TaihuLight),这是一台由NRCPC(National Research Center of Parallel Computer Engineering & Technology,中国国家并行计算机工程与技术研究中心)负责研发,安装在江苏无锡的国家超级计算机中心的超级计算机系统。

科技观察:神威·太湖之光超级计算机
神威·太湖之光超级计算机(The Sunway TaihuLight Supercomputer System)

  太湖之光在很多方面吸引了我们的注意,但最主要的原因是,由于各方面资料的缺乏,国内外对其解读都有不少的误会。本文若无特别注释,所有关于神威·太湖之光(Sunway TaihuLight)的资料均来自于Jack Dongarra(后面还会详细提到此人)的《Report on the Sunway TaihuLight System》。

科技观察:神威·太湖之光超级计算机
神威·太湖之光超级计算机规格表,内存总容量为1.25PiB

  神威·太湖之光一共由40960个节点组成,每个节点就是一个CPU组成的一台独立主机,这个CPU由国家高性能集成电路(上海)设计中心提供,每个CPU由260个核心组成,系统一共具有10,649,600个核心,每个CPU搭配32GiB的内存,总内存数量就是1310720GiB,参数表里面写的是1.31PB——然而,这个写法并不精确,区别在于“GiB”与“GB”、“PiB”与“PB”。

  在容量单位的运用上,一直存在着两种不同的方式:硬盘厂商一直使用的是标准的SI国际单位制,也就是十进制,1KB = 1000B,1MB = 1000KB;在操作系统中使用的则是接近我们教科书的记法,也就是用2的10次方递进,如1KB = 1024B,1MB = 1024KB(基于后面解释的原因,这里只是一个不准确的运用)。这两个记法的不同导致了各种软盘U盘硬盘容量的“缩减”,为了澄清类似的大量误会,IEC(International Electrotechnical Commission,国际电工委员会) 在1998 年提出了新的二进制词头——在通常的SI十进制词头后面增加了一个字母i,这个i表示的是binary,例如,1KiB = 1024B,1MiB = 1024KiB,依次类推,这套记法被称为IEC 60027-2单位制,并演变成后来的ISO/IEC IEC 80000-13:2008。

  可以肯定的是,内存厂商尽管一般都用的是SI单位制标识,但其实际容量遵循的是IEC 60027-2单位制,也就是说,神威·太湖之光每个节点的内存容量肯定是32GiB而不是32GB,总容量是1310720GiB = 1280TiB = 1.25PiB。基于保持精确的原因,笔者所有的文章中都会尽量应用二进制的IEC 60027-2单位制。

科技观察:神威·太湖之光超级计算机国家高性能集成电路(上海)设计中心的申威SW26010处理器,一种被称为many-core众核的处理器

  在整套系统当中,处理器占据了重要的一部分内容。提供了申威SW26010处理器的国家高性能集成电路(上海)设计中心在之前也设计过一系列的处理器,它们基于如雷贯耳的DEC Alpha指令集(DEC,Digital Equipment Corporation,后被COMPAQ收购,COMPAQ又被HP收购,HP现在拆分为了HP Company和HP Enterprise,等等),但基于某些不为人知的原因,申威SW26010处理器特别声明其使用的Shenwei-64指令集并非基于DEC Aplha指令集,这种声明很难说具有什么作用,就笔者来看,重复制造轮子并非不可以,但要造出比现有更好的轮子是很难的,并且配套的应用是个大问题,这点在后面还会详谈。

科技观察:神威·太湖之光超级计算机
申威SW26010的Core Group,上图和后面的图略微不太一致

  按照资料,申威SW26010(Shenwei SW26010)是一个异构的处理器,内部包含了4个CG(Core Group,核心组),每个CG分为两个部分:Master Core(主核心)和Slave Cores(从核心),Master Core(主核心)包含一个MPE(Management Processing Element,管理处理单元),内容就是一个CPU核心;Slave Cores(从核心)包含一个CPE Cluster(CPE:文档写的是Computer Processing Element,计算处理单元,但从我的角度看,用“Compute Processing Element”更好,CPE Cluster就是计算处理单元簇,这里Cluster不是宏观意义上的“集群”的意思),这个簇包含了64个CPE核心。

科技观察:神威·太湖之光超级计算机
100核心Tilera Tile-Gx处理器

  在Core Group内部,CPE Cluster由8x8的Mesh网络(也就是二维网格网络)组成,内部采用Mesh架构的处理器典型的例子有Tilera(现已被Mellanox收购)的可以达到100核心的Tile-Gx处理器,以及Intel的可以达到72核心的KNL(Knight Landing)协处理器,这种拓扑结构的优点就是易于扩展,缺点是不同的核心间延迟不太均衡,某些路径会形成热点,并且如果要考虑亲和性的话还需要做额外的工作,总的来说,这是一个考虑扩展性多于效率的架构。

科技观察:神威·太湖之光超级计算机
申威SW26010处理器的外部接口只有两种:4个128bit数据宽度的DDR3内存接口和1个x8规格的PCI Express 3.0

  每一个Core Group内部都由一个总线负责连接Master Core、Slave Cores和MC(Memory Controller,内存控制器),而4个Core Group的连接比较简单,NoC(Network on Chip)只是一种统称,而并不代表具体的架构,按照笔者猜测,应该是一种共享总线,这个总线通过SI(System Interface,系统界面)连接CPU外部,SI应该也是一个统称,它实际上就是一个PCI Express界面,按照文档,规格是PCI Express 3.0 x8,单向速率8GiB/s,双向速率16GiB/s,文档中还提到了其延迟为1us,这点后面会继续讨论。整个申威SW26010具有4个Core Group,每个Core Group具有一个MPE Core和64个CPE Core,因此每个CPU具有260个物理核心,这应该是“SW26010”当中的“260”的由来,后面的“10”应该是代数序号。

  申威SW26010处理器是一个64位、支持SIMD单指令多数据流的乱序架构RISC处理器,64位是Master Core——也就是MPE Core的规格,而Slave Core——CPE Core则是奇葩的62位,如下图所示。由于文档中仅出现了一次“62-bit”,因此这有可能是typo(输入错误)。如果CPE Core真是62位,那么主处理器和从处理器的指令集很可能是不完全一致的,但这并没有太大的必要,因为从另一方面来看,主从处理器都同样提供了264位的“向量指令集”,它们应该是一致的,不然真是雪上又加霜。最新的消息表明,Jack Dongarra的2016-06-20日的《Report on the Sunway TaihuLight System》的62-bit和264-bit都属于拼写错误,现在2016-06-24日(美国时间)的新版本文档已经修正该错误。

 科技观察:神威·太湖之光超级计算机
注意里面出现了64-bit、264-bit和62-bit三个特征字符;文中“Each CPE Cluster is composed of a MPE...”这样的句式是错误的

  如果主处理器和从处理器位宽不同,从而指令集有差异,那么申威SW26010处理器就是一种异构处理器,并且,它还是一种AMP(Asymmetric Multi-Processing,不对称多处理)架构的多核处理器,其中,按照文档,主处理器可以运行用户模式和系统模式(注意这和正规说法的user mode和kernel mode有些差异),从处理器仅能运行用户模式。从逻辑上说,主处理器和从处理器都是完整的处理器,而不是和一些人所想的那样,从处理器仅处理浮点运算。

  主处理器和从处理器的主频都是1.45GHz,按照文档,主处理器核心具有两条流水线,具有32KiB的L1-I Cache和32KiB的L1-D Cache,以及256KiB的L2 Cache,从处理器核心则具有16KiB的L1-I Cache,没有L1-D Cache和L2 Cache,取而代之的是每个核心都配置了64KiB的SRAM(静态内存,使用6到8个晶体管保存一个bit数据的双稳态开关),称为SPM(Scratch Pad Memory,暂存内存),SPM和Cache是两种不同的策略,通常来说,Cache是全自动硬件管理的,而SPM是一种内存,由应用程序进行管理。Cache的全自动硬件管理一般来说具有自动同步的优点,但相应电路会比较复杂,SPM则将复杂性抛给了应用程序,避免了大量核心环境下的同步问题。几乎所有的处理器都基于Cache机制,而SPM一般应用于嵌入式处理器,面向固定的、具有确定性行为的应用程序,进一步地,SPM的大小一般也比较固定的,难以增大或缩小。Intel Knight Landing协处理器采用的是Cache机制,但其架构中包含的MCDRAM有些类似于SPM。

2016-06-25更新:

科技观察:神威·太湖之光超级计算机
最新版本的 《Report on the Sunway TaihuLight System》报告,对比上一个图可以看到264-bit没有了,变成了256-bit,62-bit变成了64-bit

最新的消息表明,Jack Dongarra的2016-06-20日的《Report on the Sunway TaihuLight System》的62-bit和264-bit都属于拼写错误,现在2016-06-24日(美国时间)的新版本文档已经修正该错误。正确的应该是64-bit和256-bit,因此,按照更新的消息,Master Core和Slave Core都是完全一致的指令集:64位通用+256位向量。因而,申威SW26010不是异构处理器,神威·太湖之光也不是异构计算机。

来源:ZDNetCBSi企业方案解决中心频道

0赞

好文章,需要你的鼓励

2016

06/22

13:22

分享

点赞

邮件订阅
白皮书