电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

多核/多处理器

来源:开心麻花作者:开心麻花2025-09-231

多核/多处理器(精选7篇)

多核/多处理器 第1篇

随着并行技术的不断发展,如何更好地提高处理器的并行处理性能成为处理器设计者们急需解决的热点问题。 传统处理器通过开发指令级并行(Instruction Level Parallelism , ILP )[1]来提高处理器的性能,但由于应用程序自身的ILP很低、 硬件的复杂度及功耗等众多因素的影响导致处理器的性能不高。 因此设计者们把目光纷纷投向更高层次的并行- 线程级并行( Thread Level Parallelism , 简称TLP )[1,2]。

同时多线程最先由美国加州大学的Tullsen等人在1995 年开始研究, 并提出了基本的SMT[3,4]处理器模型。主要原理是通过资源竞争和资源动态共享的方式使所有的执行单元同时活跃,充分利用TLP和ILP来提高处理器的资源利用率。

目前的商用处理器采用的技术主要是同时多线程和片上多处理器技术, 例如Intel的P4 处理器[5]的Hyper - thread技术实现同时执行两个线程, IBM的Power5处理器[6]每个芯片有两个内核, 每个内核可以同时执行两个线程。 SUN的Niagara处理器[7]每个芯片有8 个内核,每个内核可以同时执行4 个线程。 我国的龙芯2 号处理器[8]也采用了超标量与同时多线程技术来设计。

本文在多核处理器[9,10,11]的基础上提出了一种采用同时多线程技术[3,4]的线程调度器[12]设计。 与Niagara处理器相比,本文中的多线程处理器拥有16 个核,每个内核一共具有8 个线程,最大可以同时执行4 个线程,并且可以在高低线程之间快速切换,减少了因为线程中遇到长周期指令所造成的资源浪费,同时也提高了处理器的利用效率。

1 整体硬件结构

时钟共享多线程处理器是一种适用于图形和图像处理的并行阵列机。 该阵列机支持MIMD(Multiple Instruction Stream Multiple Data Stream ) 运行模式、 分布式指令并行模式和流处理运行模式这三种工作模式,同时还具有异步执行、核间通信以及线程间通信的机制。

这种结构的阵列机由16 个处理单元(Processing Element , PE ) 互连构成一个4 × 4 的二维阵列, 还包括1 个前端处理器、4 个协处理器、2 个调度器及2 个存储管理。系统的整体结构如图1 所示。

2 线程调度器功能描述

线程调度器完成的功能描述如下:

( 1 ) 监测预处理模块, 当外部需要给线程加载指令或数据时响应预处理模块;

( 2 ) 当线程发生阻塞时负责切换线程, 并产生PE某一个线程的启动信息, 其中包括启动有效信号、 起始PC值、 启动的线程号;

( 3 ) 线程之间的同步处理, 负责监视需要同步的线程是否同步结束;

( 4 ) 当外部需要重新配置某一个线程的指令或数据时负责停止该线程,产生pe_stop信号;

(5) 给外部提供三个8 位的寄存器, 分别为线程启动信息寄存器、线程结束信息寄存器、线程断点信息寄存器。

3 同时多线程设计方案

同时多线程技术最大的优点在于增加很少的面积,就能够获得很高的资源利用率,即用较小的成本换取较大的并行性能,充分地挖掘了线程级的并行。

本文基于时钟共享多线程处理器提出的线程调度器支持八个线程,最多可以同时执行四个线程。 这四个线程同时执行各自的程序。 每个线程拥有各自独立的取指单元、 译码单元、 指令存储和数据存储。 而其他的资源,如各个执行单元和地址流水线,则是八个线程共享。

在每一个时钟周期的上升沿, 每个PE最多有八条流水线在执行, 且最多可输出四条流水线结果, 这四条流水线产生的结果属于不同的线程组,每个线程组都拥有高低两个线程。 因此在某一组中若有一个线程陷入阻塞状态, 则可以切换至组内的另一线程来执行程序,可以有效隐藏线程由于等待过程所造成的延迟,提高处理器整体的工作效率。

4 线程调度器详细设计

4 . 1 线程管理器的总体结构

该调度器由信息处理模块、 状态控制模块、 寄存器模块、PE控制模块四大部分构成,各模块的连接关系如图2 所示。

线程调度器的工作流程为: 信息处理模块接收来自预处理模块的配置信息、指令、数据及加载结束信号,判断是否需要启动该线程。 线程启动之后状态控制模块中对应的线程状态机发生跳转,同时寄存器模块实时记录该线程的PC值。 当接收到译码模块的阻塞信息时停止当前运行的线程且切换线程,PE控制模块负责产生新线程的启动信息。 当线程运行结束后,信息处理模块负责记录线程的结束信息。

4 . 2 线程调度器的工作模式

线程调度器拥有五种工作模式: 启动模式、 阻塞工作模式、同步模式、断点模式和重配置模式。

启动模式线程接收来自预处理模块的线程启动信息配置要启动的线程,将对应的线程ID号和PC值发送给PE来执行。

阻塞工作模式表示当某一线程遇到阻塞, 则切换到其线程组内的另一线程上来执行。 若是两个都阻塞,则先解除阻塞的线程先执行。

同步模式下对需要同步的几个线程进行等待处理,并判断是否达到同步。 若达到,则解除同步模式,开始正常执行;若没有达到,则继续等待。

断点模式是用来方便处理器进行调试错误的一种工作模式。 当程序计数器PC遇到断点时, 该线程停止工作,保存工作信息以待调试检查。

重配置模式是对线程进行重新配置, 根据上层的需要对线程要执行的程序内容进行添加或更改。

4 . 3 线程状态转移关系

如图3 所示,为线程调度器中线程的状态转移图。

其中各个状态说明如下:

( 1 ) IDLE : 空闲状态。 当线程启动信号有效时( th_start = 1 ) , 则状态跳转到RUN运行状态;

( 2 ) RUN : 运行状态。 当线程位于此状态时, 表示线程正在执行,遇到阻塞或等待跳转到WAIT状态;

( 3 ) BREAK : 断点状态。 当线程的断点数据收集结束( th_break_end = 1 ) 时, 状态跳转到RUN运行状态;

( 4 ) WAIT : 等待状态。 当线程发生重配置( th_recfg = 1 )时, 则状态跳转到IDLE初始状态; 当线程阻塞解除( th_blk_fns = 1 ) 时状态跳转到RUN运行状态;

( 5 ) SYN : 同步状态。 线程位于该状态下, 遇到同步解除(th_syn_fns=1)信号,跳转到READY状态;

( 6 ) READY : 准备状态。 表示线程处于一个随时可以启动的状态,当线程被选中时(th0_hit=1),则状态跳转到RUN运行状态。

5 仿真结果分析和比较

本文采用Xilinx公司的ISE14.4 工具对硬件电路进行了综合, 选用Xilinx公司型号为XC7V2000t-2fhg1761的FPGA,设计电路的最高频率可以到达431.816 MHz。

在完成功能仿真和综合的同时, 本文还进行了简单的性能分析。 测试在8 个PE上进行, 采用图像处理中的边缘检测算法, 分别对32×32、64×64 以及128×64 的图像进行测试,最后得到的结果如表1 所示。 另外根据性能提升计算公式(1)[12]可以得出整体处理器的性能提升百分比如表2 所示。

可以看出, 对于比较小的图像, 过多的线程会导致整体运算速度变慢。 这是因为此时图像整体运算时间比较短,线程切换所造成的延时会在整体时间中占据比较大的比例。 而对于更大的图像,同时多线程技术则对处理器的性能提升影响比较大。 对于多核同时多线程处理器而言,八个线程的线程调度器设计会使处理器得到更高的性能提升,充分体现了同时多线程技术的优点。

6 总结

本文通过对时钟共享多线程处理器架构的深入研究,采用同时多线程技术设计和实现了处理器的核心部件 ——— 线程调度器。 通过在处理器的多个线程上运行图像处理算法,得到处理器的加速比最大为69.25% , 充分提高了多核处理器的性能。 并对所设计的硬件电路进行了全面仿真验证, 综合和仿真结果表明电路的功能正确,工作频率为431.816 MHz,达到了时钟共享多线程处理器的需求。

参考文献

[1]THEO U,BORUT R,JURIJ S.Multithreaded processors[J].The Computer Journal,2002,45(3):320-348.

[2]BRUNIE N,COLLANGE S,DIAMOS G.Simultaneous branch and warp interweaving for sustained GPU performance[C].Computer Architecture(ISCA),2012:49-60.

[3]刘权胜,杨洪斌,吴悦.同时多线程技术[J].计算机工程与设计,2008,29(4):963-967.

[4]EGGERS S J,EMER J S,LEVY H M,et al.Simultaneous multithreading:A platform fornext-generation processors[J].IEEE Micro,1997,17(5):12-19.

[5]张云.解析超线程技术[J].甘肃联合大学学报,2007,21(4):99-101.

[6]Frank Soltis.Power5对i系列意味着什么[J].中国经济和信息化,2004,20(6):A2-A3.

[7]POONACHA K.Niagara:a 32-way multithreaded sparc processor[J].Mirco,IEEE,2005,25(2):21-29.

[8]李祖松,许先超,胡伟武,等.龙芯2号处理器的同时多线程设计[J].计算机学报,2009,32(11):2266-2273.

[9]黄虎才.多态阵列处理器的并行计算研究[D].西安:西安邮电大学,2014.

[10]李涛,杨婷,易学渊.萤火虫2:一种多态并行机的硬件体系结构[J].计算机工程与科学,2014,12(2):191-200.

[11]李涛,肖灵芝.面向图形和图像处理的轻核阵列机结构[J].西安邮电学院学报,2012,17(3):41-47.

多核/多处理器 第2篇

一直以来,处理器芯片厂商都是通过不断提高主频来提高处理器的性能,随着芯片制程工艺的不断进步,单个芯片上集成的晶体管数已超过数亿,传统处理器体系结构技术面临瓶颈,很难单纯通过提高主频来提升性能。而且在提高主频的同时,带来功耗的迅速提高以及散热等问题非常严重,这些也是直接促使单核转向多核的深层次原因。从应用需求来看,日益复杂的多媒体、科学计算、虚拟化等多个应用领域都呼唤更为强大的计算能力。

在这样的背景下,各主流处理器厂商将产品战略从提高芯片的时钟频率转向多线程和多内核方面。多核处理器是将两个或更多的独立处理器核封装在一个集成电路(IC)芯片中的一种方案。近年来,多核处理器日益普及,这种设计大大增强了处理器的处理能力。

1 多核并行计算

1.1 多核并行计算定义

并行计算是同时使用多种计算资源解决计算问题的过程。多核并行计算是由运行在多个部件上的小任务合作,来求解一个规模很大的复杂计算问题的一种方法。随着多核架构的普及,开发人员把线程技术作为解决方案的核心。并行计算的功能主要有:降低单个问题求解的时间;增加问题求解规模、提高问题求解精度;容错、更高的可用性、提高吞吐率。并行计算面临众多的挑战,包括如何协调、如何控制、如何监视、并行编程、采用多线程解决同一个问题和在并行线程之间的通信与同步机制等。

并行化的主要方法是分而治之,分为任务并行和数据并行。任务并行根据问题的求解过程,把任务分成若干子任务(任务级并行或功能并行)。数据并行根据处理数据的方式,形成多个相对独立的数据区,由不同的处理器分别处理。并行算法的设计步骤可分四步:任务划分、通信、任务组合、处理器映射。首先将给定问题划分成一些小的任务,划分方法可以使用域分解法和功能分解法;其次分析各个任务之间的通信需求,通信可以是局部的和全局的、静态的和动态的、结构化的和非结构化的以及同步的和异步的;然后使用组合方法,在尽可能保持灵活性的同时,减少通信和开发成本;最后将各个任务分配给处理器,使用负载平衡和任务调度技术,力求使用最少的执行时间[1]。

1.2 多核并行计算性能评测

1.2.1 Amdahl定律与Gustafson定律

加速系数定义为:S(p)=使用单处理器执行时间(最佳的顺序算法)/ 使用具有p个处理器所需执行时间。阿姆尔达定律表示为:

S(p) = p / (1 + (p-1)f)

其中S(p)表示加速系数;

p表示处理器的个数;

f表示串行部分所占整个程序执行时间的比例。

阿姆尔达定律认为计算负载固定不变,根据阿姆尔达定律,并行系统所能达到的加速比上限为1/f

Gustafson提出了和阿姆尔达定律不同的假设来证实加速系数是能超越阿姆尔达定律的限制的,Gustafson认为软件中的串行部分是固定的,不会随规模的增大而增大,并假设并行处理部分的执行时间是固定的。Gustafson定律用公式描述为:

S(p) = p + (1-p)fts

其中fts表示串行执行所占的比例;

Gustafson定律中的加速系数几乎跟处理器个数成正比,软件的性能将随着处理个数的增加而增加。

1.2.2 内存受限模型并行计算加速比

内存受限模型[2,3]是Amdahl模型和Gustafson模型的一般形式,进一步放宽了对计算时间不变的限定,认为只要存储空间许可就可以增加问题规模并允许延长执行时间,从而获得了更有实际意义的加速比描述。参数G(p)表示当可利用的内存空间和计算节点都扩大p倍时,程序中并行工作负载增加的倍数。

S(p) =(f+G(p)(1-f))/ (f+G(p)(1-f)/p)

在加速比模型中考虑了cache与主存之间的调度开销,对加速比的分析更加准确,在一定程度上可以解释实验中出现的超线性加速现象,并有助于优化并行系统中cache的使用。

1.2.3 多核并行计算加速比

多核系统中,加速比还受并行开销、锁竞争、负载平衡三个方面因素的影响。加速比与CPU核数成正比,并行计算开销不会影响加速比随CPU核数增加而线性增长的特性。锁竞争导致代码的串行化,其比例取决于程序设计,若采用集中式锁竞争模式,加速比有一个极限值,加速比符合Amdahl定律;若采用分布式锁竞争模式,加速比可以随CPU的增加而线性增长,符合Gustafson定律。

负载均匀度是衡量负载平衡的指标,表示为:

b(p)=各CPU平均使用时间/最大CPU使用时间

设实际并行代码运行时间为tm,串行代码运行时间为ts,

b(p)=ts/(ptm)

S(p)=ts/tm=nb(p)

可见,加速比与负载均匀度成正比,理想情况下,b(p)=1,此时,加速比等于CPU核心数。

2 Visual C# .NET多核编程

比较流行的并行编程环境主要有三类:消息传递、共享存储和数据并行。如MPI、PVM为消息传递类,OpenMP为共享存储类。.NET 4.0引入了若干并行编程新技术,使多核编程更为便捷。主要包括TPL、PLINQ(并行LINQ)和用于并行编程的若干数据结构。并行编程架构如图1所示。

在TPL中,基本的抽象是任务,而不是线程。任务是Task类的实例,可以被取消和等待、可以返回值、可以在其完成时调用另一个任务。当使用Parallel.For和Parallel.ForEach时,甚至Task对象本身也是隐式的。在代码中,只需简单地提供完成所期望工作的委托,其余的都由TPL来负责处理。在默认情况下,TPL使用它自己的任务调度程序,该程序是与.NET ThreadPool集成在一起的。也可以提供自己定制的任务调度程序,使用另外的线程调度机制。在任务和线程之间不存在固定的关系,一个线程可以在任何给定的并行代码块中接连运行几个任务,一个任务也可以定义一个在同一线程或不同线程上运行的子任务。一个任务也可以调用在别处被定义的另一个任务。

TPL可动态调整并发度,以最有效地利用所有可用的处理器。基于TPL的并行代码不仅可以在今天的双核和四核计算机上运行,而且不需要重新编译,就可以自动扩展到即将成为桌面标准的更多核的计算机。

3 并行处理实例

求两个字符串的公共子串算法可以求出两个字符串的最长公共子串。算法的基本思路是:对于长度为m的字符串string1和长度为n的字符串string2,建立n行m列数组mat[n][m]存储串的对应矩阵,若行数对应的字符和列数对应的字符相同,即string2[i]=dtring1[j], 则mat[i][j]=1,否则mat[i][j]=0。沿着平行于主对角线的方向扫描,连续为1 的数组元素对应的子串为两个字符串的公共子串。算法的时间复杂度为O(mn),所需的二维数组为辅助空间,故空间复杂度也为O(mn)。

下面实例通过对不同数目文档进行检测,在双核和四核CPU的计算机上,对任务串行处理需要的时间和并行处理需要的时间进行比较,计算加速比。软件环境为VS 2010。

(1) 求两个字符串公共子串的算法

下面算法求得两个字符串string1和string2中最长公共子串的长度。

算法对不同数目的文档进行检测,检测具有最长公共子串的两个文档。算法串行与并行处理多任务的时间及加速比如表1所示,由加速比可以看出,在任务数目较少的情况下,加速比较低,随着任务数目的增加,加速比有所提升,但达到峰值后,随着任务数目的增加,加速比略有下降。如图2所示。

(2) 改进算法

对于较长的字符串而言,算法所需的额外空间过大,需要进行改进。实际应用中,可以建立m+n长度的一维数组vec取代二维数组mat,记录mat中各对角线的值连续为1的个数。以string2为主序,逐次扫描string1,若对应字符相等,即sriing2[i]=string1[j], 数组元素vec[i-j+m-1]加1,否则vec[i-j+m-1]清0,vec数组的元素值动态地记录了公共子串的长度。改进后,算法的空间复杂度为O(m+n),时间复杂度不变,串的对应矩阵与一维数组的关系如图3所示。

算法描述如下:

改进的求最长公共子串算法表现如表2所示。由执行时间可以看出,在多任务情况下,无论是串行执行,还是并行执行,时间效率均有较大提升。并行加速,加速比能够达到3.8以上,如图4所示。

与原算法相比较,改进后的算法使用辅助空间大大减少,空间效率提高了一个数量级,减少了任务并发调度的锁竞争,更适合多任务并行处理数据。

4 结 语

多任务并行处理技术能充分发挥多核处理器的数据处理能力。传统的算法设计没有考虑到多核处理器结构特点,不能充分发挥多核并行处理能力。本文针对求两个字符串的公共子串算法,提出了一种改进算法。改进后的算法能够有效地提高加速比,提升多核处理器的数据处理能力。

摘要:目前,多核处理器已经越来越普及,但是现有算法并不能有效地并行处理数据,造成硬件资源的浪费。为了提高多核处理器的数据处理能力,针对求两个字符串的公共子串算法,提出一种改进方法,在VS.NET环境使用TPL(任务并行库),调度改进的算法处理数据。实验结果表明,改进后的算法可以充分利用多核处理器并行处理数据的特点,提高并行加速比,大大提高数据处理效率。

关键词:多核,多任务,并行算法,任务并行库,VS.NET

参考文献

[1]陈国良.并行计算的设计与分析[M].2版.北京:高等教育出版社,2002.

[2]Xua X H,Rao L M.Another View on Parallel Speedup[C]//Proc,Su-percomputing,1990:324-333

[3]薛一波,韩承德.Cache对加速比的影响[J].计算机学报,1997,20(1):27-36.

[4]Fullman J D.NP-complete scheduling problrm[J].Journal of Comput-er and Systen,1975,10(3):384-393.

[5]刘轶,张昕.一种面向多核处理器并行系统的启发式任务分配算法[I].计算机研究与发展,2009(6).

[6]袁云,邵时.基于多核处理器并行系统的任务调度算法[J].计算机应用,2008,28(12):280-283.

[7]王顺绪.多核计算机上并行计算的实现与分析[J].淮海工学院学报,2009,18(3):30-32

[8]王文义,王兴启.基于多核处理器的有锁编程与非阻塞算法研究[J].中原工学院学报,2010.

[9]MSDNMSDN Library.NET DevelopmentBeta Versions and Previews.NET Framework Advanced DevelopmentParallel ProgrammingTask Parallel Library Overview[EB].

[10]Amdahl G M.Validity of the single-processor approach to achieving large scale computing capabilities[C]//AFIPS Conference Proceed-ings vol.30(Atlantic City,N.J.,Apr.18-20).AFIPS Press,Re-ston,Va.,1967:483-485.

[11]Gustafson J L.Reevaluating Amdahl's Law[J].CACM,1988,31(5):532-533.

多核/多处理器 第3篇

飞思卡尔半导体[NYSE:FSL]日前推出了其下一代QorIQ多核平台。高级多处理 (AMP) 系列采用新的多线程64位Power Architecture®内核、28纳米生产工艺、多达24个虚拟内核、突破性加速引擎和先进的电源管理, 将性能和功率效率提高到一个新的水平。

新的QorIQ AMP系列的一大特点就是采用了飞思卡尔独有的智能集成技术, 性能可以达到上一代飞思卡尔旗舰产品8核QorIQ P4080器件的4倍。AMP系列将包含广泛的下一代控制和数据平面处理器, 包括经济高效的、超低功率单核产品, 针对要求最苛刻的网络、工业和军事/航天应用的高级SoC等。

AMP系列的目标是帮助网络设备OEM和服务器提供商满足全球网络端点和IP流量爆炸式增长带来的功率和性能要求。飞思卡尔的新AMP系列处理器通过交付出色的性能、超低功率和智能集成应对了这些网络挑战, 并且满足了包括军事/航天、工业、机器人技术、存储、医疗、视频系统和印刷在内的其他市场的严格要求。

飞思卡尔率先为通信处理器领域生产45纳米器件, 提供45纳米器件规范。借助这一领先优势, 飞思卡尔期望通过AMP系列驱动嵌入式市场采用28纳米处理技术。

支持AltiVec技术的新的多线程e6500内核

飞思卡尔Q o r I Q A M P系列采用新的多线程6 4位Pow e r Architecture e6500内核, 运行频率高达2.5GHz。e6500是高端控制平面和高性能数据平面应用的理想选择, 是所有AMP系列产品的核心部分。e6500包含增强的AltiVec向量处理单元, 它具有可靠、高性能和采用广泛等特性。AltiVec技术解决了高带宽数据处理和算法密集型计算的需求, 为飞思卡尔客户交付了DSP级性能和其他优点。

增强的性能加速技术

除了可编程的e6500内核外, 还提供了一系列广泛的高级加速引擎和协同处理技术, 包括增强的安全性、模式匹配、压缩/解压引擎, 以及飞思卡尔的公认的数据路径加速 (DPAA) 和QUICC引擎技术。AMP系列的压缩/解压技术实现了20Gbps性能, 而新的SEC 5.0密码加速器以高达40Gbps的速率分担了协议处理任务, 包括LTE、IPSec和SSL, 同时为当前的和新兴的无线和有线算法提供接近140Gbps的原始加密硬件加速。另外, 还有其他新的加速/分流技术, 支持regex加速、128位SIMD数据预取、线上解析和分类, 及服务质量功能等。

AMP系列还包含许多上一代QorIQ的突破性技术, 包括CoreNet互联结构、附带缓存的内存架构、基于硬件的虚拟化 (用于优化性能) , 以及帮助深入了解复杂软件流程的动态片上调试技术。

Linley Group创始人兼首席分析师Linley Gwennap表示, “新的Qor IQ AMP系列显示出飞思卡尔针对全球顶级网络设备制造商在高级多核处理技术方面的长期投资。飞思卡尔此前成功地将第一代45纳米QorIQ产品推向市场, 这为飞思卡尔继续成功推出28纳米处理技术以及在新的Qor IQ AMP系列中集成先进的新内核和加速器提供了有利优势。”

高级电源管理系统

为了满足OEM严苛的包络功率的需求, AMP系列产品采用高级电源管理方法, 通过一种可变模式的电源开关降低能耗, 允许客户分别对内核和其他处理单元精确地调整电源。

三层AMP产品

AMP系列在一个可扩展的产品组合内提供了三个层次的产品, 从支持24个虚拟内核的超高性能处理器到单核产品不一而足。

●控制平面处理器 (服务提供商路由器、存储网络)

○最多支持6个内核, 2.5GHz频率

○2级缓存超过6MB

●高端数据平面处理器 (路由器、交换机、接入网关、军事/航天应用)

○最多支持24个虚拟内核, 2.0GHz频率

○50 Gbps IP转发容量

○高级应用加速

●低端数据平面处理器 (媒体网关、网络接入存储、集成的服务路由器)

○最多支持8个虚拟内核, 1.6GHz频率

○高级应用加速

○功率不足10W

飞思卡尔QorIQ AMP系列中的第一款产品是T4240器件, 它集成了大量硬件加速器和12个双线程e6500内核, 线程数达到24个, 满足了高端数据平面处理应用的需求。双线程效率、改进的每线程DMIP和更高的频率使T4240器件的性能比上一代QorIQ P4080器件提高了4倍, 而功率效率也增加了2倍多。高级功能允许在多个线程之间智能共享和复制资源, 每个内核还具备大容量片上缓存。T4240器件的目标应用包括城域运营商边缘路由器、接入网关和航天/军用产品。飞思卡尔今年晚些时候将提供有关T4240产品的更多细节。该器件预计将在2012年初开始供货。

供货情况和开发支持

飞思卡尔预计将在此后推出更多AMP产品来充实该系列, 范围涵盖三个层次的产品。产品将满足各种高性能应用的需求。

多核/多处理器 第4篇

飞思卡尔半导体[NYSE:FSL]日前推出了其下一代QorIQ多核平台。高级多处理 (AMP) 系列采用新的多线程64位Power Architecture誖内核、28 nm生产工艺、多达24个虚拟内核、突破性加速引擎和先进的电源管理, 将性能和功率效率提高到一个新的水平。

新的QorIQ AMP系列的一大特点就是采用了飞思卡尔独有的智能集成, 性能可以达到上一代飞思卡尔旗舰产品8核QorIQ P4080器件的4倍。AMP系列将包含广泛的下一代控制和数据平面处理器, 包括经济高效的、超低功率单核产品, 针对要求最苛刻的网络、工业和军事/航天应用的高级SoC等。

AMP系列的目标是帮助网络设备OEM和服务器提供商满足全球网络端点和IP流量爆炸式增长带来的功率和性能要求。飞思卡尔的新AMP系列处理器通过交付出色的性能、超低功率和智能集成解决了这些网络挑战, 并且满足了包括军事/航天、工业、机器人技术、存储、医疗、视频系统和印刷在内的其他市场的严格要求。

飞思卡尔率先为通信处理器领域生产45 nm器件, 提供45 nm器件规范。借助这一领先优势, 飞思卡尔期望通过AMP系列驱动嵌入式市场采用28 nm处理技术。

支持AltiVec技术的新的多线程e6500内核

飞思卡尔QorIQ AMP系列采用新的多线程64位Power Architecture e6500内核, 运行频率高达2.5 GHz。e6500是高端控制平面和高性能数据平面应用的理想选择, 是所有AMP系列产品的核心部分。e6500包含增强的AltiVec向量处理单元, 它具有可靠、高性能和应用广泛等特性。AltiVec技术解决了高带宽数据处理和算法密集型计算的需求, 为飞思卡尔客户交付了DSP级性能和其他优点。

增强的性能加速技术

除了可编程的e6500内核外, 还提供了一系列广泛的高级加速引擎和协同处理技术, 包括增强的安全性、模式匹配、压缩/解压引擎, 以及飞思卡尔的公认的数据路径加速 (DPAA) 和QUICC引擎技术。AMP系列的压缩解压技术实现了20 Gb/s性能, 而新的SEC 5.0密码加速器以高达40 Gb/s的速率分担了协议处理任务, 包括LTE、IPSec和SSL, 同时为当前新兴的无线和有线算法提供接近140 Gb/s的原始加密硬件加速。另外, 还有其他新的加速/分流技术, 支持regex加速、128位SIMD数据预取、线上解析和分类, 以及服务质量功能等。

AMP系列还包含许多上一代QorIQ的突破性技术, 包括CoreNet互联结构、附带缓存的内存架构、基于硬件的虚拟化 (用于优化性能) , 以及帮助深入了解复杂软件流程的动态片上调试技术。

Linley Group创始人兼首席分析师Linley Gwennap表示, “新的QorIQ AMP系列显示出飞思卡尔针对全球顶级网络设备制造商在高级多核处理技术方面的长期投资。飞思卡尔此前成功地将第一代45 nm QorIQ产品推向市场, 为飞思卡尔继续成功推出28 nm处理技术以及在新的QorIQ AMP系列中集成先进的新内核和加速器提供了有利优势。”

高级电源管理系统

为了满足OEM严苛的包络功率的需求, AMP系列产品采用高级电源管理方法, 通过一种可变模式的电源开关降低能耗, 允许客户分别对内核和其他处理单元精确地调整电源。

三层AMP产品

AMP系列在一个可扩展的产品组合内提供了三个层次的产品, 从支持24个虚拟内核的超高性能处理器到单核产品不一而足。

誗控制平面处理器 (服务提供商路由器、存储网络)

最多支持6个内核, 2.5 GHz频率;

2级缓存超过6 MB。

誗高端数据平面处理器 (路由器、交换机、接入网关、军事/航天应用)

最多支持24个虚拟内核, 2.0 GHz频率;

50 Gb/s IP转发容量;

高级应用加速。

誗低端数据平面处理器 (媒体网关、网络接入存储、集成的服务路由器)

最多支持8个虚拟内核, 1.6 GHz频率;

高级应用加速;

功率不足10 W。

飞思卡尔QorIQ AMP系列中的第一款产品是T4240器件, 它集成了大量硬件加速器和12个双线程e6500内核, 线程数达到24个, 满足了高端数据平面处理应用的需求。双线程效率、改进的每线程DMIP和更高的频率使T4240器件的性能比上一代QorIQ P4080器件提高了4倍, 而功率效率也增加了2倍多。高级功能允许在多个线程之间智能共享和复制资源, 每个内核还具备大容量片上缓存。T4240器件的目标应用包括城域运营商边缘路由器、接入网关和航天/军用产品。飞思卡尔今年晚些时候将提供有关T4240产品的更多细节。该器件预计将在2012年初开始供货。

供货情况和开发支持

飞思卡尔预计将在此后推出更多AMP产品来充实该系列, 范围涵盖三个层次的产品。产品将满足各种高性能应用的需求。

多核/多处理器 第5篇

多核和虚拟化如何帮助客户快速、低成本地进行开发?据风河公司CTO (首席技术官) Tomas Evensen介绍, 其实这是充满诡辩的问题, 如果你要想用多核来提高效率, 可能就需要多功能处理, 因此复杂性提高, 需要承担更多的风险, 所以这是机遇与风险并存的状况。过去人们只是通过多任务处理或者并行处理, 然而在开放资源系统中, 可能就会遇到像风河Vx Works、Moblin (注:Intel力推的开源组织) 等体系, 更加复杂, 这时可以采用虚拟化和中间软件等。当然, 这样运行时对于客户可能更加高效, 但也更加复杂化。

在未来三到五年中, 多核虚拟化在嵌入式方面的应用主要还是面向计算量比较高的多核客户。是否采用多核虚拟化关乎整合还是分开的问题, 如果你不想用单核, 你当然可以不用, 但多核也更加复杂, 即便说用两核也可能会涉及到整合问题。所以你可以选用单CPU的Hypervisor (如图1, 是由少量代码组成特种OS, 是在现有操作系统之下称为hypervisor的一层, 这层实现对多操作系统和虚拟化的支持。例如对于风河来说, 这层可以是Vxworks或风河Linux) 或多核的Supervisor (在多核和多操作系统中间有虚拟化的一层配置Supervisor, 它比Hypervisor的功能低一些, 因为它不需要虚拟CPU) , 也可以两者兼用, 用的时候你可以把它们整合在一起, 也可以把两者分开。

从多处理器到多核

为了更清楚地理解多操作系统、多核与虚拟化趋势, 需回到多处理器系统和多核的关系上。多处理器离多核的应用只有一步之遥。不过, 多核与多处理器也有不少区别, 其中有一些挑战你必须面对。首先, 多处理器系统中的软件并不能直接拿到多核系统中运行。

将原本分散的多处理器系统整合为单一多核系统并不能通过简单地将多个系统简单地压缩在一个多核系统中来实现。系统架构的变化使多个系统之间的并行运行和通信协调方式发生了不小的变化。

在采用多核技术的时候, 操作系统管理内核的基本方式有两种:第一种是对称多处理 (SMP) , 这是由一个操作系统来控制多个内核。只要有一个内核空闲可用, 操作系统就在线程等待队列中分配下一个线程给这个空闲内核来运行。第二种是非对称多处理 (AMP) , 每个内核上都运行各自的操作系统。

因此, 多核系统并不是直接把多个芯片的多处理器浓缩到单一芯片之中这么简单。实际上, 多核系统和多处理器系统之间存在着许多重要的区别, 导致不能把多处理器系统上的软件直接移植到多核系统上来。

多处理器系统和多核系统的主要区别之一就是, 在多处理器系统中, CPU之间的界线是比较清晰的。在典型的多处理器情况下, 多个CPU通过总线连接起来, 即便是共享外部存储器, 这些CPU基本上都是独立运行的。在多核系统中, 情况就有所不同。不论采用何种架构, 在多核系统中, 被共享的东西非常多, 例如中断控制器、外设以及Cache (高速缓存) 等。

多操作系统下的Supervisor或Hypervisor

当你希望运行SMP (同构核) 环境时, 多核系统的这种特征通常表现为一种优势, 因为所有的内核都由同一个操作系统来管理。但是, 当你要在多核系统中同时运行两种以上的操作系统时, 例如同时运行一套RTOS (嵌入式实时操作系统) 和一套通用操作系统, 就会遇到较多的困难。在这种情况下, 会有两种选择:第一, 在两个操作系统之间进行频繁的沟通, 例如在它们之间建立主、从关系;第二, 更简便的方法是采用Supervisor或者Hypervisor, 这是一些少量的代码, 负责管理协调多个操作系统。显然, 第二种方式是更彻底、灵活、具有扩展性的多核软件架构。

Hypervisor之所以能够有效地管理运行在其上的多个操作系统, 得益于分区和虚拟化的方法。总的来说, 系统中有三类资源可以被虚拟化:执行单元 (CPU) 、内存和设备。执行单元虚拟化是基于时间片来进行。内存虚拟化是把物理内存划分成许多区域。设备虚拟化则是通过给设备定义接口和API调用来提高使用灵活性和利用率。

Hypervisor并不是一个全新的概念, 在服务器中早已得到广泛而且成功的应用。不过, 嵌入式系统中经常用到的Hypervisor主要是对内存和设备进行虚拟化, 以便在操作系统之间的资源共享得到完全的保证, 而不是对执行单元进行虚拟化。这种专用的Hypervisor比较小, 而且直接运行在硬件上, 不像服务器中用到的Hypervisor主要运行在完整的操作系统之上并且使用宿主操作系统的资源。

在嵌入式Hypervisor中, 性能和独立性是两大最重要的需求, 而后向兼容性 (可以让从属操作系统不经修改即可运行在宿主操作系统之上) 是服务器Hypervisor中非常重要的需求。为了满足嵌入式系统的特殊需求, 这类Hypervisor应当采用以下特殊设计:

设备尽可能直接映射给从属操作系统, 以便获得最高的性能, 以及实现最佳的隔离性。

应当具有更强的可伸缩性, 可以自主选择对哪些部分进行虚拟化, 也可以自主选择虚拟化的目的是提高性能还是提高隔离性。

因此, 嵌入式Hypervisore的实现会依照硬件支持的程度存在非常大的差异。即便是在没有任何硬件支持的情况下, Hypervisor也可以运行得非常快, 关键是要做到适当水平的准虚拟化 (Paravirtualization) 。

多核与多操作系统的组合配置

综上所述, 多核与多操作系统的组合配置非常多样, 这就会给软件工程方法带来很多变化和挑战。不过, 我们还是可以总结归纳出几种最典型、最常见的情形, 并针对这些情形找到最适当的解决方案。

与多处理器系统的软件开发一样, 你首先会面临的挑战是对软件代码进行分隔以便可以并行运行。除此之外, 在多核系统中, 还会遇到另外一些挑战, 例如:1) 获得适当的操作系统配置、资源共享和系统引导的Run-time支持;2) 处理好内核以及资源分区之间的通信;3) 拥有能够支持多核产品配置、原型化、分析、诊断和测试的开发工具。对于上述每个方面的问题与挑战, 用户都必须得到适当的答案, 才能在市场允许的时间范围内开发出像样的产品。

值得注意的是, 虽然开放源码社区也有多核开发工具, 但是多核软件开放所遇到的挑战显然更为复杂, 仅仅靠自己去探索未必有效。更重要的是, 当你在高度竞争的商业环境中从事设备软件开发, 必然会在时间、成本和产品可靠性等诸多方面受到更严苛的要求。因此, 用户不仅需要拥有高效率的工具, 而且需要有专业人员在最短的时间内指导和帮助你解决问题, 这些相关的技术支持与服务都是商业化开发工具的组成部分。可见, 不仅包括软件开发工具, 而且包括配套的技术支持与服务, 这样的商业化解决方案才是整体效率最高、整体成本最低的方法。

嵌入式软件的制高点:平台

嵌入式软件的制高点是在操作系统之上的平台, 并非操作系统本身。过去的用户可能会先选硬件, 再选操作系统, 选桌面软件, 最后选工具, 对平台软件考虑得还不太多。但是随着用户对平台的进一步认识, 以及平台的进一步发展, 用户在做决定的时候可能会考虑平台方面来做出最终的决定。

风河的发展方向是平台化, 并满足不同的芯片制造商。风河方案可支持市场上所有的主流芯片架构和多样化的操作系统平台, 已经预先置入了虚拟化机制, 并且针对SMP、AMP和Supervised AMP等多种多核配置的硬件平台和应用领域做了优化。客户可以在三个层次上自由地选择: (1) 自由选择操作系统; (2) 自由选择SMP、AMP、Supervised AMP和虚拟化等多核配置; (3) 在基于风河Workbench开发环境中选择自己需要的配置。相应地, 风河Hypervisor可以针对航空航天国防、汽车、消费电子、工业控制和网络通信等多种应用领域实现设备的虚拟化。风河下一步的重点是工业领域和医疗领域应用。

在操作系统层面, 风河Linux正蓬勃发展, 但风河Linux不会完全取代Vx Works, 一些传统的应用例如国防、航空航天和一些工业领域, Vx Works的销售额还在稳步上升。

参考文献

[1]迎九.多核编程与设备管理成嵌入式软件热点[J].电子产品世界, 2008 (1) :139

[2]Knoth M.在嵌入式多核集群中利用OCP处理高速缓冲器一致流量[J].电子产品世界, 2008 (8) :97-99

[3]Evensen T.From multi to many, through virtualization[R/OL].http://www.embedded-computing.com/articles/id/4348

[4]风河为多核软件赋予全新虚拟化能力[R/OL]. (2009-6-24) .http://www.eepw.com.cn/article/95606.htm

多核/多处理器 第6篇

1 单例模式的性能提升

单例模式应用很多,线程池,数据库连接池等,为了性能的提升既要保持单一对象的数据同步,又要实现多线程无锁访问。

1.1 方法一内部类延迟加载

代码中因为内部类Singleton Holder和内部变量instance同为static达到同步无锁化的目的,而不必实例化Inner Class For Singleton

1.2 方法二单例对象的原子化:利用volatile实现多线程对单例实例的共享

Volatile总是得到修改最后的值,相当于原子操作,即当对象锁定被实例化后即通知所有线程实例修改,达到无锁化访问。此方法性能略低于方法一,性能等级一样。

这里也希望将来java的原子化对象更加丰富,提升模式性能

2 代理模式的性能提升

代理模式在开源框架中应用非常频繁,例如spring的aop,hibernate的O/R mapping等都是代理模式的核心功能应用,此模式一方面提倡即插即用的灵活性,另一方面屏蔽网络或IO的各种开销达到性能优化。JDK的Proxy原生代理类和CGLIB都能实现代理模式,尽管代理模式可以易于实现延迟加载,但最终实例化对象最终决定性能的优略,这里推荐使用CGLIB,但若实现接口则仍然需用Proxy。

也希望JDK以后的版本提高Proxy的执行效率。

3 享元模式

此模式的核心思想是对于多个相同的对象,只需共享一份拷贝。从而减少对象的创建和减小GC的压力。例如spring中Factory Bean<Object>,对可singleton的对象利用get Object()取得共享对象,同时更好的管理对象内部方法和属性。模式code举例如下:

Report Manager Factory工厂将内部Report类分离共享,采用参数tenant Id作为单条记录共享。实现了共享的灵活性

4 装饰者模式

其核心思想利用动态添加对象或Handler,对系统解耦或动态叠加加载,多线程下有效的细粒度调用从而不过多产生无效对象或垃圾资源,例如spring中定义<aop:scoped-proxy/>,则会触发Aop Namespace Handler类调用Scoped Proxy Bean Definition Decorator类的decorate方法解析scope对象,Aop Namespace Handler则起到了用时加载和动态增加的目的。示例代码如下:

Packet HTTPHeader Creator,Packet HTMLHeader Creator,Packet Body Creator都实现了handle Content方法,且Packet HTMLHeader Creator和Packet HTTPHeaderCreator都有着super的引用关系,对粒度的伸缩性管理。

5 结束语

Java性能提升模式不仅仅只有如上提及,更多模式优化可参看https://github.com/skyscreen/java/tree/master/resume/java/optimzation,总之充分利用服务端CPU资源并行并发的处理能力,努力有效减少GC回收开销,以及粒度引用,池,缓存的有效使用,充分体现设计模式在应用中优化特性才会得到一个性能提升的系统。

摘要:现代大型系统中多核多线程下的应用越来越多,java语言发展至今对于并行机制有了很大改善,架构中的设计模式从性能的角度也在发生着变化,文章着重介绍几个典型设计模式进行探讨,以便在系统重构或开发中得到性能改进。以及JDK在设计模式上改进的期待。

关键词:Java性能,设计模式,多线程,多核

参考文献

[1]Spring Framework[EB/OL].http://projects.spring.io/spring-frame work/.

[2]Hibernate[EB/OL].http://hibernate.org/orm/.

基于多核网络处理器的编程与设计 第7篇

网络技术的发展经历了不同阶段的演变。分类技术使得基于软件的系统和多路分解技术不能满足正在建立的新网络的需求。而多核SOC结构网络处理器的产生将高速度、低成本和易于维护升级的优点集合在一起, 其突出优势就是在具有接近ASIC硬件的处理速度的同时, 具有高度的灵活性。

目前, 解决网络中包处理问题都与网络处理器的灵活性有关。网络处理器按照用户期望的规则实现输入数据包的组装, 然后根据用户期望的算法校正输入的数据。在转发过程中, 网络处理器应能够根据不同的调度算法调度数据包的传输。网络处理器在快速通道中工作, 为了保持线速度, 要求较少地引入时延。其核心思想在于提升处理软件的性能, 主要依赖于对处理器软件的开发。

基于IXP1200多核处理器结构的并行编程模型设计

IXP1200网络处理器提供对多级并发线程的支持。在Strong ARM内核处理器中, 并发性由操作系统支持;在没有操作系统的微引擎中, 并发性由硬件提供支持, 开发者创建1~4个执行线程, 并将它们各自的信息通知给硬件, 然后由硬件自动在这些线程间进行切换。

IP包在IXP1200网络处理器的内部以微包为单元被处理, 任务包括接收MAC帧、缓存与队列、包分类、过滤与验证、分组丢弃、IP路由查找、分组转发和分组发送。

通过以上对多核网络处理器的并行性分析、IP包处理过程的任务划分及其线程分配策略的讨论, 提出3种编程模型。

1. 高吞吐率编程模型

当线速度达到OC-48甚至更高的网络应用中, 大量分组需要在短时间内完成处理, 所以需要较多的处理器资源。高吞吐率编程模型分配更多的微引擎线程用于分组的接收和处理操作。如图1所示, 高吞吐率编程模型将4个微引擎用于接收和处理分组, 2个微引擎用于发送分组。0~3号微引擎中的4个线程运行相同的代码, 以多体交叉方式或者各自独立地接收和缓存微包, 对到达的分组进行处理, 完成分组的接收、分组验证过滤、分组分类、分组缓存、路由查找以及分组转发等操作。独立处理的线程之间的通信比较少, 可以避免同步等待的延迟, 所以该方式适合简单高速分组处理的场合。0~3号微引擎通过发送队列将待发送的分组送到4、5号微引擎, 4、5号微引擎负责将分组发送到输出端口。

每个微引擎的控制存储器被其4个线程共享, 4个线程面对相同的代码。开发者需要在程序中根据线程号进行分支, 使得各个线程实现不同功能。0~3号微引擎中的代码包含了分组的接收、分组验证过滤、分组分类、分组缓存、路由表查找以及分组转发等较多指令。分组处理功能越复杂, 微引擎中的代码量就越大, 需要考虑微引擎中控制存储器存储空间的占用情况。

2. 流水线编程模型

对于Qo S或者防火墙的网络应用开发, 网络处理器需要较多的资源用于分组的分类、过滤验证、路由查询以及转发等操作, 高吞吐率编程模型使得微引擎的代码量过多。流水线编程模型将包处理过程按照流水线的方式分为接收模块、处理模块以及发送模块。如图2所示, 流水线编程模型分配0、1号微引擎用于分组的接收;2、3号微引擎用于分组处理;4、5号微引擎用于分组发送, 两个微引擎都分配其0号线程用于发送调度、1~3号线程用于执行发送任务。

接收模块的微引擎线程将微包传输给处理模块, 分组处理完成后, 再将分组交给发送模块, 接收模块与处理模块中微引擎线程之间可以通过共享寄存器变量或者采用信箱进行通信。相对于高吞吐率编程模型, 流水线编程模型将接收功能和分组处理功能分开, 简化了微引擎的功能。由于接收代码中不包含分组头处理和路由表查找的代码, 每个微引擎的程序代码将相对较少。

3. 细化的流水线编程模型

网络的Qo S应用要求区分不同的业务流, 从而对不同业务流的分组按Qo S要求进行不同的处理。当分组的处理比较复杂时, 流水线编程模型的处理模块线程的负荷最重, 线程间的工作负载可能仍然不平衡。如图3所示, 细化的流水线编程模型为处理模块分配了更多微引擎, 0号微引擎的线程用于分组的接收与缓存;1~4号微引擎同属于处理模块, 1、2号微引擎实现分组的过滤验证和分类, 3、4号微引擎负责查询路由表以及转发任务;5号微引擎执行分组的发送任务, 包括0号发送调度线程和1~3号发送执行线程。

细化的流水线编程模型支持对复杂数据分组的处理, 可以更好地实现线程间的负载平衡。但是由于处理模块占用了较多的微引擎资源, 细化的流水线编程模型以降低网络处理器的吞吐率为代价, 换取网络应用对Qo S的高要求。

编程模型性能评估

实验采用了IXP1200网络处理器的FIDS12MC2评估板, 用不同的编程模型, 实现对以太网中IP包的处理。使用Smart Bits200测试设备, 对FIDS12MC2评估板进行以太网IP包处理性能测试。如图4所示, 是对采用高吞吐率编程模型, 基于IXP1200网络处理器平台实现的100M以太网IP包转发的测试拓扑图。数据包由Smart Bits200的一个百兆接口发出, 通过百兆网线到达与该端口相连接的评估板的一个百兆端口, 评估板接收到数据包后, 按照配置在IXP1200中的应用软件对包进行高速处理, 由其另一个百兆端口输出数据包, 最后由Smart Bits200另一百兆接口接收到。

多核/多处理器

多核/多处理器(精选7篇)多核/多处理器 第1篇随着并行技术的不断发展,如何更好地提高处理器的并行处理性能成为处理器设计者们急需解决的...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部