标题：HTMT
HTMT简介
一种基于全新技术的超级计算机实现--HTMT项目 
1. 引言 
从上个世纪90年代早期开始，美国展开了针对实现petaflops级超级计算机途径的讨论。其中，分析了很多需要peta级处理能力的各种大规模应用的需求，如内存容量、内存带宽、访存延迟等；也讨论了实现peta级计算的使能技术，如超导逻辑、PIM(把处理器集成到RAM中)、光全息存储等。这些讨论的最终结论是设计一种创新性的体系结构来构造peta级别的超级计算机系统， HTMT项目便诞生了。 
在计算机发展史上，先进的器件技术与计算机体系结构革新理念结合都会带来计算机系统的跨越发展，计算机性能以及性价比得到巨大提高。普通的大型机，向量超级计算机以及MPP超级计算机，它们的每一次成功问世都是当时先进的器件技术、系统结构和程序模型独特结合的典范。伴随着一些器件技术发展和新的体系结构理念的形成，一个新的构造petaflops级超级计算机的机会正慢慢来临。新的器件技术如超导体技术、PIM技术、光交换网络以及光全息存储技术正在成熟。而建立在多线程执行模型基础上的任务和延迟管理体系结构理念则成为组织这些新技术的一种有效方式。于是HTMT项目便应运而生了。现在可以对HTMT有个较清楚的认识：HT(Hybrid Technology)-各种新技术，MT(Multi-Threaded) -多线程体系结构。正是这两个方面的结合，有可能很快的构造出更高性能并达到peta级别的超级计算机系统。 
HTMT的目标是比采用传统CMOS技术提前4-5年，即于2006年左右实现petaflops级别的超级计算机。实现这样一个高性能的计算机系统要面临诸多挑战，如峰值性能、足够的存储容量以及内存带宽、制造成本、系统能耗、内存延迟、高效性、可编程性等。HTMT在设计上很好的解决了这些挑战性问题，是一个结合新技术和新的体系结构理念的产物。仔细分析并理解HTMT项目的体系结构、关键技术、程序执行模型等方面对我们在设计、构造一台超级计算机时具有很好的借鉴意义。
HTMT体系结构及关键技术
HTMT体系结构从处理器和内存的关系角度看，HTMT也是一种分布式NUMA体系结构。但是传统的处理器和内存的主从关系发生了根本改变。由于采用了PIM技术，HTMT中的处理器由内存驱动。内存主动向处理器提供连续的工作流和数据流，处理器和内存之间的主从关系发生转变。 
（1）HTMT的系统结构由4096个多线程的处理器SPELL构成。SPELL主要由低功耗的带有1M缓存的超导设备构成，然后放在一个液氢冷却的低温保持器里。主频能达到100GHz或更高。处理器的高速缓存CRAM可以看成本地内存，通过处理器内部超导逻辑实现的自路由的多级包交换网络--CNet与下一级的SRAM（也称智能cache）相联。SRAM通过光通信网络与下一级的DRAM相联。SRAM和DRAM都采用了PIM技术，其中实现的一种逻辑是Move Engine，它允许在不同的内存层次之间自动的传输数据。DRAM下一级是光全息内存HRAM，作为高密度、可并行访问的快速在线备用存储器。
（2）内存层次结构。通过采用层次结构，一方面保证了对内存容量和带宽要求，另一方面通过采用渗透算法和多线程技术有效地解决了延迟问题。 
HTMT物理内存层次结构由五部分组成：CRAM、SRAM、DRAM、HRAM、以及磁盘或磁带。在程序执行期间，频繁使用的数据会分布在较快的内存单元（如SPELL内），而一些较少使用的数据会分布在辅助内存（如HRAM）。每一级内存层次都有一个独立的地址空间。高性能处理器SPELLHTMT中采用超导技术实现的处理器称为SPELL，它的主频能达到100GHz。 
每个SPELL有16个MSU单元，每个MSU可以执行一个线程，每一个线程中可以有多个strands。处理器内部的自路由交换网络（PNet）连接MSUs、FPUs和CRAM。CRAMCRAM是SPELL的低温RAM，所有RAM单元被组织成矩阵形式。它能达到和SPELL同样的主频速度。 
每个SPELL由4个本地的CRAM芯片服务，容量为1M。在有4096个处理器的系统中CRAM的总容量是4GB。 
所有CRAM组成一个逻辑地址空间由所有处理器共享，形成NUMA结构。CNetCNet（Cryo-Network）是一个自路由、多阶段包交换的低温超导RSFQ（Rapid Single Flux Quantum）网络，用于SPELL模块和远端SRAM模块之间的通信。CNet一端连接局部内存CRAM，另一端连接到SRAM的接口。 
对局部内存负载的预测表明，CNet能提供7PB/s网络带宽，可充分满足petaflops级别的计算。SRAMSRAM也称智能cache，采用了PIM技术。SPIM(SRAM内的处理器)主频能达到1GHz。每个SRAM芯片容量为64MB，总的容量是1TB。在SPIM上运行实时系统，以支持Parcel的传递。 
智能cache作为和处理器紧密相连的CRAM的备用高速缓冲，另外也作为数据页的高速临时缓存。SRAM有两个接口。一个接口和CNet相连；另一接口和光通信网络相连。DRAM主存DRAM当作HTMT系统的主存，也采用了PIM技术。DPIM(DRAM内的处理器)主频能达到500MHz。每个芯片的容量是512MB，总的容量能达到16TB。同SPIM一样，DPIM上也要运行实时系统来支持Parcel的传递。 
DRAM主存也支持两个接口。一个接口和光通信网络相连；另一个接口和全息存储模块相连。Data Vortex光通信网络在将来的高性能计算机系统当中，将需要几百Tbps的数据传输带宽。采用电信号的电缆在数量和能耗上受到限制，因而大多会采用光通信网络。 
HTMT中的光通信网络Data Vortex是一种细粒度的包交换光通信网络，位于SRAM和DRAM之间，总的传输带宽能达到5Pbps。DataVortex采用了带有路由拓扑的多节点层次结构。每个节点使用最小的逻辑实现路由功能。这种结构可减少多个端口转发的时间，并且可以扩展到很大的规模。 
Data Vortex网络连接N个输入缓冲区和N个输出缓冲区，可以看作是同心的互联的圆柱面集合。光全息内存HRAM光全息存储是依据全息学的原理，将信息以全息照相的方法存储起来。全息存储（HRAM）具有容量大，数据读取速率高及可并行读取等优点。 
HTMT中HRAM位于主存DRAM和辅存（磁盘、磁带）之间。HRAM的访问延迟比磁盘低一个数量级，比访问主存高两个数量级。由于每次读取的数据量大，每个存储模块的带宽能达到100Gbps，适合访存密集型应用。 
每个HRAM模块包含10GB的存储，由一个PIM芯片控制并作为它的临时缓存。总的容量能达到1PB，总的I/O带宽能达到320TB/s。实时自适应资源管理在HTMT中，为了隐藏高效处理器的访存延迟，开发了两级多线程技术。一种是处理器之间及处理器和SPIM之间的多线程技术，但是这种机制不能有效处理通过Data Vortex网络到DRAM或者HRAM的延迟。因而提出了另一种革新的渗透方法，即把程序将用到的数据预先取到智能cache中，从而达到延迟隐藏的目的。其中提出了Parcel的概念，在后面程序执行模型中介绍。
关键技术
简介HTMT中采用了超导技术、PIM技术、光通信网络、光全息存储等关键技术。光通信网络和光全息存储技术在前面已有说明，下面主要介绍超导技术和PIM技术。超导技术在HTMT中，SPELL处理器、CNet网络都是采用超导RSFQ技术实现的。超导技术实现的电子设备有两个特性，一个是主频高，另一个是能耗低。 
采用超导技术来制作小的电子电路，主频能达到750G左右，而制造处理器芯片能达到100G甚至更高的时钟频率。目前，中等大小的超导电子设备（每个片子上有几千个门）主要是被军方和工业应用所采用。 
能耗低也是超导逻辑的一个主要特性。包括对超导逻辑进行冷却所需的能耗，超导逻辑实际能耗是CMOS逻辑的百分之一。 
虽然超导技术具有主频高和能耗低两个特性，但在高性能计算领域中并没有被广泛研究和采用。PIM技术PIM（Processor In Memory），也叫做智能RAM或IRAM，是一种很有前途的超大规模集成电路技术，它在一个单一的CMOS内存芯片上把高密度的逻辑和高密度的内存结合在一起。这种简单的技巧（trick）对计算机的体系结构具有深远的影响。如果逻辑单元用来构造类似CPU的设备，这些CPU将会非常接近包含指令和数据的内存阵列，会有效解决访存延迟问题，同时也会降低能耗、提高访存带宽。 
第一个PIM部件是EXECUBE芯片，于1993年制造。M32R/D是第一款商用的PIM芯片，于1996年制造，具有2MB的内存和一个32bit的CPU。DIVA（Data Intensive Architecture）项目正在研究针对DRAM PIMs的地址空间映射以及动态地址翻译问题。这种PIMs可以在内存中执行“不规则数据结构”，并且能够对传统的微处理器芯片在编译器级别进行支持。 
目前比较有影响的采用PIM技术的项目有Gilgamesh，它研究支持高性能计算的基于多线程的PIM体系结构MIND(Memory, Intelligence, and Networking Device)，如果MIND具有很好的性价比及高效性，将会被美国HPCS（High Productivity Computing Systems）计划支持的Cray Cascade项目采用作为主存系统的一部分；IBM Blue Gene/C中也将采用PIM技术以解决访存带宽和延迟问题。 
可以看出，在高性能计算机领域采用PIM技术已经是一种趋势。
程序执行模型与程序设计
程序执行模型HTMT程序执行模型包括两部分：渗透模型和通信机制。在渗透模型当中，数据在内存层次中自动传输，装载到SPELL上运行的程序从不需要等待数据。通信机制提供对渗透模型的数据传输支持，由运行在DPIM、SPIM和SPELL中的实时系统实现。 
 术语理解。在设计HTMT程序执行模型时，使用了多个术语。对这些术语的理解有助于对模型的充分理解。 
1). 渗透：HTMT程序执行时，要在内存层次之间以Parcel的形式移动完整的指令语义模块（contexts）。指令语义模块经过各个内存层次自动的向执行处理器传播，SPELLs总是能获得在CRAM缓冲中准备好的可执行指令语义模块，不会有任何不期望的延迟。 
2). 指令语义模块（contexts）：一个指令语义模块是一个内存块，它包含程序运行需要的数据、指令和控制状态。HTMT中每个线程和一个独立的指令语义模块相关。最终在CRAM中为线程分配指令语义模块缓冲才能执行线程。 
3). 帧(frame)：一个指令语义模块通常由若干帧的集合表示。从体系结构的观点看，一个帧是用来保存临时数据的一些寄存器的集合。从程序员的观点看，帧是当前过程的局部变量堆栈。 
4). 指令串（strand）：一个线程最多可以支持8个指令串。一个指令串是一些指令集合，是SPELL上可以被调度执行的基本单元。 
5). 信息包（parcel）：一个信息包是一个信息单位，它在内存层次之间移动。信息包可以激活自身内含有的代码执行，或者激活已经在内存中的代码执行。有几种信息包类型，包括控制 信息包、数据 信息包、代码 信息包、指令语义模块信息包。 
 实时系统，完成作业装载、调度、在内存层次之间传递信息包以支持程序运行。实时系统包括运行在FEC（Front End Computer）、DPIMs、SPIMs、SPELLs上的实时程序，是实现渗透模型和通信机制的基础。 
1). FEC核心程序，功能包括初始化SPIMs和DPIMs，为新的数据对象分配空间，通过发送控制信息包来启动DPIMs，接收来自DPIMs的结果。 
2). DPIMs实时程序，装载应用程序代码和数据，向SPIMs发送控制信息包来初始化SPIMs并开始它们的工作，向SRAM装载代码信息包，负责和DPIMs、SPELL的其它类型的信息包通信。 
3). SPIMs实时程序，负责从DPIMs请求数据信息包，把代码和数据信息包发送到SPELLs，并负责和SPELLs、DPIMs的其他类型的信息包通信。 
4). SPELLs实时程序，接收来自SPIMs的指令语义模块信息包执行，当执行完向SPIMs发送控制信息包通知处理完成。 
 程序模型处理流程细节 
1). DPIM传输数据对象到SRAM当中的指令语义缓冲。 
2). SPIM识别空闲的CRAM缓冲，初始化从SRAM到CRAM缓冲的DMA(Direct Memory Access)传输，把数据移动到准备好的队列当中。 
3). 通知SPELL当前的缓冲满，SPELL上的计算进程在一个新的指令语义模块上执行。 
4). SPELL声明一个CRAM缓冲已经被处理完，相应的SPIM能够识别。 
5). SPIM启动DMA把处理完的CRAM缓冲中的结果移到一个空闲的SRAM缓冲。 
6). 当一个DMA结束，SPIM把来自SRAM缓冲的结果移动到另一个SRAM缓冲，或者执行第7步。当一个SRAM缓冲的所有结果都被扫描完，SPIM把它标志成空闲，使SRAM缓冲可以被重新使用。 
7). 把来自SRAM缓冲的结果移动到DRAM。DPIM能够识别出处理完的指令语义模块的结果已经移到DRAM，DPIM进一步处理。程序设计HTMT具有很好的可编程性。具体采用以下几种措施： 
1). 全局共享内存名空间：在HTMT程序设计中，对所有的内存统一编址，简化了对内存的使用。 
2). 线程控制模型：这种模型能使线程自动加载到合适的处理器上执行，不用显示指明处理器位置，避免用户在程序设计时考虑对处理器的分配和使用。 
3). 自动延迟管理：实现了处理器自动负载均衡以及执行线程所需数据的自动渗透。矩阵乘法举例假设在运行A、B两个80x80的矩阵乘法，结果放在矩阵C中，如下。开始，矩阵以内存块的形式放在DPIM的内存中。Aik和Bkj表示16x16的块大小。DPIM把这些块当作新的指令语义模块信息包发送到SPIM的输入队列。
计算矩阵C的一个块的程序如下： 
C[1,1] = 0; 
for (i=1; i<=n; i++) { 
P = A[1,i] * B[i,1]; 
C[1,1] = C[1,1]+P; 
} 
主要计算量是间接矩阵P的计算，在SPELL中实现以充分发挥超导处理器的性能。结果矩阵C的每个块的值在SPIM中计算，在DPIM中多个Cij被组合起来生成最后的结果矩阵C。其间，SPIMs、DPIMs和SPELLs之间根据程序执行模型交互Parcels，以协调计算。 
可见，多个PIMs和SPELLs可以同时执行不同的计算任务，实现了多个处理器之间的并行工作，有效的隐藏了延迟并能充分发挥超导处理器性能。
实现与当前进展
HTMT项目分五个阶段实施，最终完成估计将耗资2亿美元。由于项目采用几项全新技术，一些技术的指标还是预期的，因而风险大，对项目的资助分阶段进行。 
目前正处于第三阶段，工作包括：全系统功能模拟以取得定量的测试数据，RSFQ器件的制造、PIM体系结构设计。 
计划在第四阶段用实际器件构造一个实验原型，并在实际的负载下运行以获得对整个系统更准确的参数。第五阶段则是最终完成整个系统构造。 
根据可获得的资料看，HTMT项目由于资金问题现在实际上处于停顿状态。相反，美国对其他高性能计算机项目正大力资助，包括Cray的Cascade，IBM的PERCS以及Sun的Hero项目。这几个项目属于美国HPCS计划，另外还有BlueGene项目，Streaming SuperComputer项目。 
下面介绍第三阶段相关工作的进展情况。模拟原型实现及性能分析Notre Dame大学使用Java语言实现了一个模拟系统原型，实现了HTMT系统中超导处理器、各个内存层次及相关的网络。 
通过在模拟原型上执行矩阵乘法运算，并对测试数据进行分析，得到如下结论： SPIM/SPELL之间的Parcel交互负载最高，表明对于矩阵运算等计算密集型应用，寄存器负载要比内存负载高很多。 
另外ARGONNE实验室也对HTMT系统结构进行了模拟并运行多个应用进行了性能分析。超导芯片进展目前已经研制出了FLUX-1超导芯片。它具有5K个门，主频能达到20GHz，是一款8位通用的微处理器芯片。目前对该芯片正进行测试。根据FLUX-1的复杂性及主频，可以预测超导处理器主频能达到100G或更高。 
另外正在设计FLUX-2 MCM。它是带有向量寄存器堆的乘法器。在这个芯片上，有两个32位浮点乘法器。这个芯片作为多处理器芯片的演示芯片。 
PIM体系结构研究已经提出了满足HTMT需求的PIM体系结构并进行了软件模拟。其他项目对PIM体系结构的研究也有了实质进展，如前面提到的Gilgamesh项目。已经成功完成了基于FPGA和SRAM实现的PIM体系结构原型。其他项目对PIM技术的研究对HTMT项目中PIM的研究具有很好的推动作用。
评价与展望
HTMT项目在设计之初结合当时的最新技术和革新的体系结构理念，有效地解决了构造一台高性能计算机系统要面临的诸多挑战性问题，如峰值性能、存储容量、内存带宽、成本、能耗、高效性、可编程性等。设想通过如下一些方法解决： 
1). 峰值性能：计算密集型应用通过超导逻辑实现，数据密集型应用通过PIM技术实现； 
2). 存储容量：通过增大DRAM以及光全息存储技术实现； 
3). 内存带宽：通过PIM技术、光全息内存、光交换网络保证系统所需的带宽； 
4). 制造成本：通过使用高吞吐率和较强能力的设备以减少部件数量来降低成本； 
5). 能耗：通过采用超导技术、PIM技术、光全息内存、光交换网络技术等低能耗技术降低能耗； 
6). 高效性：通过分布式实时任务管理策略以及在高速处理器和PIM处理器当中的多线程机制实现延迟隐藏而实现高效性； 
7). 可编程性：通过提供自适应的实时资源管理，引入了单一全局内存名空间手段，以及引入的渗透算法来减轻程序员的负担； 
基于HTMT的设计理念完全有可能实现一台Petaflops级别的超级计算机，但目前却遇到了一定的困难。最直接的原因是没有资金，另外背后的原因可能有某些创新的技术太过复杂而不易实现或太过昂贵而离实用目标很远，或者性价比不占优势而遭放弃。 
从中我们可以得到正反两方面的启发：正的方面是HTMT体现的敢于创新的精神，敢于采用全新的技术及体系结构，不墨守常规；反的方面可以看作是走向极端，如采用的新技术在预计的时间内不可能实现。当前采用传统商业部件构造Cluster系统来实现高性能计算确实具有很多优势，但是如果一直采用这个路线则会走入了另一个极端。正确的做法应该是在原有技术基础上的有限创新。 
应该承认，HTMT在新技术和体系结构模型上已经取得了一定进展。如超导芯片主频到目前可达到20GHz；PIM早已有商用芯片，目前已经提出满足HTMT需求的PIM体系结构；光互连网络目前已经很成熟；HRAM技术进展迅速。在体系结构模型上，超导处理器硬件可以实现细粒度多线程；在程序执行模型上提出了基于Parcel的“渗透模型”，较好地解决了处理器访问内存的延迟问题。可见，HTMT项目在资金允许的情况下有可能实现预期目标。