打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
高性能处理器体系结构最新研究综述(Survey of high

国际上正积极开展新型体系结构的研究,涌现出Imagine、RAW、Viram、TRIPS、CELL、Score等多种面向10亿只以上晶体管的新型体系结构,由于这些体系结构拥有面向计算密集型应用、处理大量数据流的共同特点,因此将它们统归为计算密集型并行微体系结构。其应用背景最早来自媒体处理,现在已经扩展到信号处理、科学计算、事务处理等领域。

新型体系结构符合这些特征,能够较好的解决现有高性能处理器体系结构面临的难题,是极具发展前景的体系结构。下面介绍国际上具有代表性的几种新兴并行微体系结构。




基于片上存储的VIRAM体系结构

2003年6月投片成功的VIRAM是U.C.Berkeley分校的Dave Patterson等开发的一种用于媒体处理的向量型芯片。VIRAM主要针对处理器性能不断增强,对存储系统的带宽和延迟要求提高,而目前片外访存通信代价大、速度慢,使得存储系统成为瓶颈的问题。其目标是要充分利用现有VLSI的集成能力,通过向量和片上DRAM技术的结合,获得更高的带宽、更短的延迟和更低的功耗。

VIRAM的主要思想是将向量处理器和DRAM存储器(13M)都做到片上,从而避免片外访存并减少访问层次。对于大多数面向10亿只晶体管级的体系结构来说,其片上的大部分晶体管用作了Cache,Cache仅仅是保存了一份数据的冗余拷贝。与此不同的是VIRAM可以像使用主存一样使用片上DRAM存储器,因此可以取代Cache,这是一个更高效的、某种程度上来说更精明的解决方案。当然片内DRAM的访问延迟比SRAM长,VIRAM通过使用延迟流线(delayed pipeline)隐藏了全部延迟。单片VIRAM系统的体系结构如图1.2所示。



 


图1.2单片VIRAM体系结构


VIRAM的向量功能部件由4个相同的LANE组成(可以扩展更多的LANE,增强计算能力),每个LANE可以看作一条完整的64位向量流水线,存储管理部件从DRAM中取256位的数据送到LANE中,以SIMD方式执行。




片内多处理机体系结构的代表:RAW和TRIPS

MIT大学的RAW体系结构是Tile体系结构的典型代表,一个RAW 处理器由16个可编程的Tile组成。每个Tile都有其单独的微处理器、数据Cache、存储器以及连接各个Tiles的互连网络接口,其结构如图1.3。



  

 

图1.3 RAW处理器结构及其互连模块
 

RAW适合于线程级并行,各线程可分空间并行执行。RAW把底层的物理资源如门、线、引脚等作为体系结构的实体暴露给程序员,这使得程序员面对线延迟可以更好的安排程序执行从而获得最佳性能,较好的解决线延迟的问题。

Tile64处理器:Tilera公司基于RAW的研究基础开发,于2007年发布,它具有64个处理核,采用45 nm工艺,主频达900MHz。Tile64使用iMesh片上网络连接64个独立的处理核(称为Tile),具有4个DDR2控制器、2个网络接口、两个PCIE接口。每个Tile都是一个全功能通用处理核,包含一个寄存器文件和三个功能单元(一个load-store单元和两个算术逻辑单元),L1和L2级cache,使用非阻塞交叉开关将Tile连入iMesh。每个Tile可以独立运行一个操作系统,或者多个Tile共同运行一个多处理操作系统(如SMP)。Tile64具有灵活的特点,多个Tile可以组成Lane,为特定应用提供足够的计算性能。Tile64 Tile64的易用性和高性能适合多个领域的计算密集型应用,如网络、数字视频和通信领域,可以获得30 fps的H.264(720p)视频编码性能。

Texas大学提出的万亿次运算可靠智能自适应的处理系统TRIPS,如图1.4所示,是一种面向2010年的通用型体系结构,采用网格并行处理、片内的传感系统实现多态系统,相比RAW来说,它的处理核粒度较粗。每个处理核具有16个同构的执行节点和相应的存储系统,而且它具有片内传感系统,硬件可以根据不同应用软件和不同负载对自身进行重构,实现数据级并行、指令级并行和线程级并行,称为多态系统。TRIPS实质还是一种可重构的Tile阵列,其编译和操作系统的任务是全新的,非常复杂,目前还未有原型芯片问世。


 


图1.4 TRIPS处理器结构及其互连模块



对流应用,Tile体系结构通过采用线程级并行静态分配任务给片内Tile来获得高的运算性能。它们既能采用SIMD开发任务内并行,也可以通过直接将一个任务的结果送给另外一个任务来挖掘生产者-消费者局域性。




Imagine、Merrimac和SPI流处理器

2002年4月投片成功的Imagine是斯坦福大学的W.J.Dally教授领导开发的流体系结构(streamarchitecture)原型芯片,其体系结构如图1.5。它主要针对现代VLSI工艺条件下,片外通信昂贵、片内运算单元相对廉价、大部分片上面积被通信管理等单元占据使得计算能力未被充分利用等问题,目标是通过开发符合流应用特点的流式处理程序和三级带宽的存储层次来减少对片外存储器的访问,充分利用片内运算能力,并且在一定程度上避免长线延迟问题。

流处理的主要思想就是顺序处理有序数据记录。所谓记录(record)由相关数据的集合组成,例如:一个三角形的顶点、法线、颜色信息,或者是一幅图像的8?8的像素区域,或者是一个简单的整数等。有序的记录构成流,流的长度无需固定,流记录可以是任意数据类型,但同一个流中的记录必须同类型。而具体应用则被分解表示成一连串对大量数据流进行操作的计算核心(computation kernel)。所谓计算核心是运行在运算簇(arithmetic clusters)里的小程序,对输入流中连续的数据重复执行并输出流给下一个核心作为其输入流。一片Imagine同一时刻只能执行一个核心,即所有核心分时执行。在Imagine中实现了数据级并行(运算簇组以SIMD方式执行)、指令并行性(核心微代码是VLIW指令序列)、任务级并行(在执行核心时,可执行在流寄存器文件SRF与片外存储间的数据传输指令)。其性能指标相当不错,在250MHz下,Imagine原型系统在典型应用上可达到10GFLOPS、20GOPS的运算能力,功耗仅为6W。

 


图1.5流处理器Imagine的体系结构



在Imagine的基础上,面向科学计算应用领域,Stanford大学William Dally教授领导的研究小组目前正在进行Merrimac超级流计算机的研制,整个设计目标是采用90nm CMOS工艺达到频率1GHz,具有16384个处理器,性能为2PFLOPS。单片处理器结构类似Imagine,但结合应用目标进行了少量改进,例如标量处理器核集成在片上、支持64位数据运算、采用全对等功能单元、增加Cache存储层次,增加运算簇数目等,使单节点性能大幅提升,在1GHz频率下处理能力可以达到128GFLOPS(双精度浮点)的峰值性能。

Storm-1流数字信号处理器:由SPI(Stream Processor Inc)公司于2007年推出的一系列完全商业化的流DSP处理器,其目的是在部分领域替代现有DSP,如图1.3所示。目前已有有SP8LP,SP8,SP16,SP16HP等多个型号,其中SP16拥有16个计算簇,每个计算簇 5个32位乘加运算部件,频率500MHz,每秒可进行80GOPS 32位乘加操作或者320GOPS 8位乘加操作。芯片还有256KB的片上存储器和2个64位250MHz的MIPS标量核以及各种IO接口,是一款相当强大的SOC




CELL处理器 

IBM、索尼、东芝三家公司在2005年联合推出的第一代CELL处理器,具有典型流体系结构的特征,主要针对游戏、多媒体等应用领域开发,希望能挑战存储延迟和带宽、功耗、芯片大小等对性能带来的不利影响,以及传统的依靠提高频率和增加流水线深度来提高性能的做法,目标是能够达到PlayStation2性能的100倍。

CELL结构如图1.6所示,包含一个通用64位处理单元PPE(与Power体系结构兼容),负责运行操作系统和进行协处理单元SPE的线程调度,也可以不加修改的运行Power和PowerPC应用,8个协处理单元SPE用来加速媒体等计算密集的流应用,以获得高性能。在每个SPE内部以SIMD方式运行,同时支持4路32b整数/浮点操作,具有本地数据和指令存储。SPE通过DMA与片上高速总线互联,SPE之间独立运行。CELL采用了XDR内存控制器和FlexIO前端总线,一方面可以提高带宽,另一方面可以提高多片CELL的片间扩展性。




图1.6 第一代CELL处理器结构

 



CELL作为一款商业芯片,所宣称的性能是惊人的,频率3.2GHz,200Gops,并且频率还可以提高,实际上它也不仅仅局限于在游戏机中使用,下一步目标是作为替代传统通用微处理器的下一代微处理器。
 


 

流计算模型Score


 

图1.7 设想的单片Score系统
 

Score(Stream Computations Organized for Reconfigurable Execution)是U.C.Berkeley分校BRASS小组的Eylon Caspi等于2000年提出的一种可重构执行的流计算模型,如图1.7所示。主要解决由于目前芯片硬件规模扩大,产品生产、设计时间缩短而引起的软件可重用问题。其目标是保护软件投资,使得软件无需重新编译就能随硬件自动升级。

Score的关键思想是利用硬件分页来对编程者和程序执行隐藏硬件大小。具体方法是将应用程序和硬件切分成固定大小的计算页(分别称为页线程和计算页,页线程在计算页上执行),由操作系统支持在运行时将页线程自动切换到可用的计算页上执行,类似虚存页的使用。这样,一个被分页的应用可以运行在任意数量的物理计算页上,而且无需重新编译就可运行在更多物理计算页上。这些计算页以数据流方式链接,数据到达后点火执行。




FireStream 

FireStream 9250:AMD在08年的国际超级计算大会(ISC)上发布了专业流处理器FireStream 9250,单精度浮点性能超越1TFlops,功耗不高于150W,因此每瓦特效率可达8GFlops/W。该流处理器基于尚未发布的RV770核心,集成第二代双精度浮点(FP64)硬件计算单元,浮点性能超过200GFlops。AMD FireStream 9250可为高性能计算、主流和消费应用中的关键运算提供加速,能高速处理金融分析、地震研究、工程分析、渲染、计算化学、基因研究、物理学、视频编辑、工业安全等专业工作。




程序设计语言

流编程语言有很多种,如SPUR、Cg、Baker、Spidle、StreamIt、StreamC/KernelC、Brook、Sequoia等。本节主要介绍几种经典的编程语言:

StreamIt :面向RAW 开发的一种编程语言,它是是Java 语法的一个子集扩充。它将流处理器的处理过程看作一个一个的单输入输出流计算模块filter,而流则看作连接filter 之间的数据通路。多个filter 通过pipeline、splitjoin 和feedbackloop 三种结构组成一个通信网络,该通信网络被映射到各个Tile 上并行执行。StreamIt的编译器实现了一些基于状态空间表述的程序变换技术,如相邻filter 合并,冗余状态空间消除等。

StreamC/KernelC:是面向Imagine 开发的一种两级编程语言,StreamC 和KernelC 都是C 语言的一个子集,分别用于编写流级和核心级程序。StreamC 语言在C++的基础上扩充了少量的类库和函数,主要完成流的传输和拷贝等操作。KernelC 编程语言是一种类C 的编程语言,一方面它只支持C 语言很小的一个子集,它不允许全局变量、指针、函数调用以及控制流结构的语句,另一方面,它也扩充了一些新的数据类型和语句类型。StreamC的编译器Istream采用了profile 指导的编译技术,集成了流调度、存储访问调度等编译优化技术。KernelC的编译器ISCD采用基于分布式寄存器文件的VLIW调度,并引入通信调度技术。StreamC/KernelC也是本文的研究平台的主要编程语言。

Brook:最初是为GPU图形处理器设计,被改进后为Merrimac 所使用。Brook 类似于StreamC/KernelC,是一个对C语言子集进行扩展的流编程语言。它允许用户定义两种不同作用的同构数据集:输入流(input stream)和聚集流(gather stream)。前者允许Kernel 以规则顺序读入但不可重用,而后者可以随机读写并能够重用。其次,对流和向量数据的编程方式不同,主要体现在不同的计算操作和临时存储空间等方面。此外,还有一些Brook的扩展语言,包括BrookGPU、BrookC 和BrookTran。

Sequoia:是面向新体系结构中软件管理数据在存储层次之间移动而设计。该模型将程序中的计算和访存划分为多个Task 结构,对同一Task 可以提供多种实现版本,能够根据程序的环境来调用Task 的不同版本,从而提高编程的灵活性。同时,Sequoia 通过配置文件描述数据在多级存储层次中的位置,将流体系结构中的所有存储层次完全暴露给程序员,适用于任何层次存储体系结构,目的在于通过显式的数据放置和通信控制来提高程序的局部性和并行性。

 

http://masa.nudt.edu.cn/otherweb/newarch.htm

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
“留学”计算所
数据库系统的体系结构知识笔记
智能车辆--智能交通系统的关键技术
Hadoop与数据仓库之间有什么关系?
计算机体系结构知识笔记(CISC复杂指令强调完善中断控制设计复杂 RISC精简指令ARM处理器属于RISC型)
CH09 可选择的体系结构
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服