关于多核的一些概念和区别

http://blog.csdn.net/yueyinwanchuan/article/details/17994121


多核处理器(CMP)就是将多个计算内核集成在一个处理器芯片中,从而提高计算能力。按计算内核的对等与否,CMP可分为同构多核和异构多核。计算内核相同,地位对等的称为同构多核。反之称为异构多核。

多处理器

多处理器指多个CPU,每个CPU可以是单核或多核的。虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样。对称多处理器(SMP)结构是近来最流行的多处理器结构,系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力,而非对称结构已比较少见。

多核开发和多线程开发的区别

在本质上,多核开发也就是利用多线程进行程序开发,让不同功能的进程在不同的核上运行,或者让同一进程中不同功能的线程在不同的核上运行。以往我们学习的算法都是面向单线程的,而多核开发时要将这些算法改造成支持多线程的算法,然后系统运行时会将多线程分配到多核处理器上,以实现运行的加速。

不过和传统的多线程编程方式有所不同, 多核开发对于同步锁定等问题较简单,但是需要仔细分析出可并行计算的代码块来,让多线程能够在一个任务中并行。多线程开发的时候,你并不知道有几个物理CPU,而进行多核开发时,你肯定知道有多少个物理CPU了。

 

提起CPU的诞生,人们一定会联想起奔腾处理器,然后回忆起当时用286,386等的情况。奔腾几乎就是处理器的代名词,因为当时只有因特尔一家设计这种高科技的玩意。随着社会的发展,奔腾逐渐成为了历史,慢慢我们开始接纳了一个新词,双核处理器。

酷睿双核是一个划时代的产品,他打破了传统CPU的运算模式,变成同步运算执行,大大的增加了计算效率。随着双核概念慢慢被人们接受,后来由发展到四核,直到最近因特尔发布的原生四核Core i7有八个逻辑内核的处理器。让我们感受到高科技血液在高速流动,IT产品更新非常快,周期非常短。只有不断的开发更好性能的产品,才能一直保持市场的领先地位。

 

因特尔曾表示,公司将不遗余力地继续发展其tick-tock的发展战略,每隔一年即推出一款全新的芯片产品。每隔一年退出一款新产品,这个说起来容易,但是做到其实非常困难的。但因特尔竟然放出如此的豪言壮语,一方面是和自己对自己实力的自信,另一方面也表现了对处理器市场的重视。

 

Tick-Tock生动地描绘出Intel公司这位现时全球半导体行业霸主于中央处理器领域的飞速前进态势。“Tick”表示奇数年份导入具有改良型微架构的新一代硅晶片制程工艺;“Tock”则表示偶数年份导入全新的微架构,一组“Tick-Tock”的运转周期为两年时间。最近一次的“Tick-Tock”更替发生在65纳米Core微架构与45纳米Penryn家族之间,Intel公司准时兑现了每年更新具有改良型微架构的硅晶片制程工艺或是全新微架构的承诺。

 

要保持行业的领先地位,不仅仅要在运算速度保持领先,而且在发热量,耗电量等性能上,也要处于领先的优势。产品主频的不断提高,发热量也在逐渐提升,系统稳定性下降的同时,更加不利于环保,这也是英特尔采用全新酷睿架构的目的之一,英特尔亚太区副总裁兼总经理杨旭表示,与之前最好的奔腾处理器相比,酷睿2产品性能提升了40%,而能耗降低了40%。

 

产品做优秀了,还有看市场占有率。联想、惠普、戴尔、神舟等知名的厂商也已经开始全面采用英特尔酷睿系列的产品,相信未来英特尔还会推出更多的重磅产品来满足市场和用户的需求,多核技术也将得到不断发展。

 

对于只关心数据转发的应用,例如IDS系统只需关心数据的解析,告警,然后进行转发。可以让所有的core都作为Simple Executive进行数据处理,每个core都运行的是同一个程序的副本,核间通过共享数据结构,共享内存以及硬件提供的通信机制进行通信。充分发挥出多核的优势,实现高性能的数据处理。

Bootloader支持将不同的应用程序加载到不同的core上,core 0做为control core,core 1-15做为service core。Core 0运行linux kernel,做为控制平面,core 1-15运行应用程序,做为数据平面,完成数据处理及报文转发的协议栈。

Linux 2.6 内核对SMP(对称多处理机)提供了很好的支持。引入了新的 O(1) 调度程序,它包含更好的 SMP 系统支持。能在 CPU 之间进行负载平衡,同时维持亲合性以提高缓存效率。

内核为每个处理器维护两个 runqueue(过期的和活动的 runqueue)。每个 runqueue 支持 140 个优先级,前面的 100 个用于实时任务,而后面的 40 个用于用户任务。任务分时间片执行,在使用完它们分配到的时间片时,这些任务被从活动的 runqueue 移至过期的 runqueue。如果活动运行队列中已经没有某个给定优先级的任务了,那么指向活动运行队列和过期运行队列的指针就会交换,这样就可以让过期优先级列表变成活动优先级的列表。这就为所有的任务提供了公平访问 CPU 的机会(仅根据每个 CPU 锁定)。

利用每个 CPU 的任务队列,可以根据系统中所有 CPU 的负载进行负载平衡。每 200 毫秒,调度程序就执行一次负载平衡调节,以便重新分配任务负载,维持处理器之间的平衡。

目前,Linux 2.6 kernel已比较成熟,由Linux kernel进行多核的硬件资源管理,调度,构建在linux下的应用程序。可以大大减小开发的工作量,软件系统也会有很高的稳定性。

 

目前,多核技术已经成为最受关注的话题和研究方向。多核体系结构为性能提高和节能计算等领域开辟了新的方向。然而,现在的多核处理器还没有统一的标准,基本上处于探索阶段。核与核之间的连接方式、通讯协调方式、同一处理器中核与核间结构的差异、器件资源分配策略、任务调度策略、节能策略、软硬件协同设计策略等方面都处于研究探索之中。多核必将带来影响整个计算机行业方方面面的巨大变革,包括体系结构研究、嵌入式系统设计和解决方案设计、编译技术、操作系统核心算法、应用软件设计等计算机系统的各个领域。

在单核处理器研究中,主要集中在提高频率,提高指令级并行度等方面。而在多核体系中,更加关注核与核之间的协作、共享资源的分配、提高线程级并行度等方面。

多核处理器必然带来一个问题是,需要提高程序的并行度,因为单线程程序是无法发挥多核处理器的优势的。通过编译优化可以把原先单线程的代码编译成多线程的形式。OpenMP提供了一种方法,程序员根据需要把可以并行处理的代码加上合适的标记,编译器根据这些标记把相应代码编译成多线程的程序段。多线程程序开发涉及到多线程调试的难题,这在多核处理器上会变得更加困难,所以多核体系导致程序开发模式发生巨大变化。

多核处理器上的任务调度也是个新问题,常用的调度算法有全局队列调度和局部队列调度。前者是指操作系统维护一个全局的任务等待队列,当系统中有一个CPU核心空闲时,操作系统就从全局任务等待队列中选取就绪任务开始在此核心上执行。这种方法的优点是CPU核心利用率较高。后者是指操作系统为每个CPU内核维护一个局部的任务等待队列,当系统中有一个CPU内核空闲时,便从该核心的任务等待队列中选取恰当的任务执行,这种方法的优点是任务基本上无需在多个CPU核心间切换,有利于提高CPU核心局部Cache命中率,从而提高系统的性能。目前多数CMP操作系统采用的是基于全局队列的任务调度算法。

如何有效地利用多核技术,对于多核平台上的应用程序员来说是个首要问题。多核时代的到来需要软件开发者必须找出新的开发软件的方法,选择程序执行模型。在多核系统中,核心是通过内存共享数据和通讯。为了充分利用多核,程序需要同时做很多事情。并行程序执行指令的速度将比传统的串行程序要快很多,因为它能将工作负载按照不同需求分配给处理器的不同核心


原文地址:http://blog.csdn.net/alphayi/article/details/4529277


多核处理器(CMP)就是将多个计算内核集成在一个处理器芯片中,从而提高计算能力。按计算内核的对等与否,CMP可分为同构多核和异构多核。计算内核相同,地位对等的称为同构多核。反之称为异构多核。

多处理器

多处理器指多个CPU,每个CPU可以是单核或多核的。虽然同时使用多个CPU,但是从管理的角度来看,它们的表现就像一台单机一样。对称多处理器(SMP)结构是近来最流行的多处理器结构,系统将任务队列对称地分布于多个CPU之上,从而极大地提高了整个系统的数据处理能力,而非对称结构已比较少见。

多核开发和多线程开发的区别

在本质上,多核开发也就是利用多线程进行程序开发,让不同功能的进程在不同的核上运行,或者让同一进程中不同功能的线程在不同的核上运行。以往我们学习的算法都是面向单线程的,而多核开发时要将这些算法改造成支持多线程的算法,然后系统运行时会将多线程分配到多核处理器上,以实现运行的加速。

不过和传统的多线程编程方式有所不同, 多核开发对于同步锁定等问题较简单,但是需要仔细分析出可并行计算的代码块来,让多线程能够在一个任务中并行。多线程开发的时候,你并不知道有几个物理CPU,而进行多核开发时,你肯定知道有多少个物理CPU了。

 

提起CPU的诞生,人们一定会联想起奔腾处理器,然后回忆起当时用286,386等的情况。奔腾几乎就是处理器的代名词,因为当时只有因特尔一家设计这种高科技的玩意。随着社会的发展,奔腾逐渐成为了历史,慢慢我们开始接纳了一个新词,双核处理器。

酷睿双核是一个划时代的产品,他打破了传统CPU的运算模式,变成同步运算执行,大大的增加了计算效率。随着双核概念慢慢被人们接受,后来由发展到四核,直到最近因特尔发布的原生四核Core i7有八个逻辑内核的处理器。让我们感受到高科技血液在高速流动,IT产品更新非常快,周期非常短。只有不断的开发更好性能的产品,才能一直保持市场的领先地位。

 

因特尔曾表示,公司将不遗余力地继续发展其tick-tock的发展战略,每隔一年即推出一款全新的芯片产品。每隔一年退出一款新产品,这个说起来容易,但是做到其实非常困难的。但因特尔竟然放出如此的豪言壮语,一方面是和自己对自己实力的自信,另一方面也表现了对处理器市场的重视。

 

Tick-Tock生动地描绘出Intel公司这位现时全球半导体行业霸主于中央处理器领域的飞速前进态势。“Tick”表示奇数年份导入具有改良型微架构的新一代硅晶片制程工艺;“Tock”则表示偶数年份导入全新的微架构,一组“Tick-Tock”的运转周期为两年时间。最近一次的“Tick-Tock”更替发生在65纳米Core微架构与45纳米Penryn家族之间,Intel公司准时兑现了每年更新具有改良型微架构的硅晶片制程工艺或是全新微架构的承诺。

 

要保持行业的领先地位,不仅仅要在运算速度保持领先,而且在发热量,耗电量等性能上,也要处于领先的优势。产品主频的不断提高,发热量也在逐渐提升,系统稳定性下降的同时,更加不利于环保,这也是英特尔采用全新酷睿架构的目的之一,英特尔亚太区副总裁兼总经理杨旭表示,与之前最好的奔腾处理器相比,酷睿2产品性能提升了40%,而能耗降低了40%。

 

产品做优秀了,还有看市场占有率。联想、惠普、戴尔、神舟等知名的厂商也已经开始全面采用英特尔酷睿系列的产品,相信未来英特尔还会推出更多的重磅产品来满足市场和用户的需求,多核技术也将得到不断发展。

 

对于只关心数据转发的应用,例如IDS系统只需关心数据的解析,告警,然后进行转发。可以让所有的core都作为Simple Executive进行数据处理,每个core都运行的是同一个程序的副本,核间通过共享数据结构,共享内存以及硬件提供的通信机制进行通信。充分发挥出多核的优势,实现高性能的数据处理。

Bootloader支持将不同的应用程序加载到不同的core上,core 0做为control core,core 1-15做为service core。Core 0运行linux kernel,做为控制平面,core 1-15运行应用程序,做为数据平面,完成数据处理及报文转发的协议栈。

Linux 2.6 内核对SMP(对称多处理机)提供了很好的支持。引入了新的 O(1) 调度程序,它包含更好的 SMP 系统支持。能在 CPU 之间进行负载平衡,同时维持亲合性以提高缓存效率。

内核为每个处理器维护两个 runqueue(过期的和活动的 runqueue)。每个 runqueue 支持 140 个优先级,前面的 100 个用于实时任务,而后面的 40 个用于用户任务。任务分时间片执行,在使用完它们分配到的时间片时,这些任务被从活动的 runqueue 移至过期的 runqueue。如果活动运行队列中已经没有某个给定优先级的任务了,那么指向活动运行队列和过期运行队列的指针就会交换,这样就可以让过期优先级列表变成活动优先级的列表。这就为所有的任务提供了公平访问 CPU 的机会(仅根据每个 CPU 锁定)。

利用每个 CPU 的任务队列,可以根据系统中所有 CPU 的负载进行负载平衡。每 200 毫秒,调度程序就执行一次负载平衡调节,以便重新分配任务负载,维持处理器之间的平衡。

目前,Linux 2.6 kernel已比较成熟,由Linux kernel进行多核的硬件资源管理,调度,构建在linux下的应用程序。可以大大减小开发的工作量,软件系统也会有很高的稳定性。

 

目前,多核技术已经成为最受关注的话题和研究方向。多核体系结构为性能提高和节能计算等领域开辟了新的方向。然而,现在的多核处理器还没有统一的标准,基本上处于探索阶段。核与核之间的连接方式、通讯协调方式、同一处理器中核与核间结构的差异、器件资源分配策略、任务调度策略、节能策略、软硬件协同设计策略等方面都处于研究探索之中。多核必将带来影响整个计算机行业方方面面的巨大变革,包括体系结构研究、嵌入式系统设计和解决方案设计、编译技术、操作系统核心算法、应用软件设计等计算机系统的各个领域。

在单核处理器研究中,主要集中在提高频率,提高指令级并行度等方面。而在多核体系中,更加关注核与核之间的协作、共享资源的分配、提高线程级并行度等方面。

多核处理器必然带来一个问题是,需要提高程序的并行度,因为单线程程序是无法发挥多核处理器的优势的。通过编译优化可以把原先单线程的代码编译成多线程的形式。OpenMP提供了一种方法,程序员根据需要把可以并行处理的代码加上合适的标记,编译器根据这些标记把相应代码编译成多线程的程序段。多线程程序开发涉及到多线程调试的难题,这在多核处理器上会变得更加困难,所以多核体系导致程序开发模式发生巨大变化。

多核处理器上的任务调度也是个新问题,常用的调度算法有全局队列调度和局部队列调度。前者是指操作系统维护一个全局的任务等待队列,当系统中有一个CPU核心空闲时,操作系统就从全局任务等待队列中选取就绪任务开始在此核心上执行。这种方法的优点是CPU核心利用率较高。后者是指操作系统为每个CPU内核维护一个局部的任务等待队列,当系统中有一个CPU内核空闲时,便从该核心的任务等待队列中选取恰当的任务执行,这种方法的优点是任务基本上无需在多个CPU核心间切换,有利于提高CPU核心局部Cache命中率,从而提高系统的性能。目前多数CMP操作系统采用的是基于全局队列的任务调度算法。

如何有效地利用多核技术,对于多核平台上的应用程序员来说是个首要问题。多核时代的到来需要软件开发者必须找出新的开发软件的方法,选择程序执行模型。在多核系统中,核心是通过内存共享数据和通讯。为了充分利用多核,程序需要同时做很多事情。并行程序执行指令的速度将比传统的串行程序要快很多,因为它能将工作负载按照不同需求分配给处理器的不同核心


原文地址:http://blog.csdn.net/alphayi/article/details/4529277

猜你喜欢

转载自blog.csdn.net/sunjing_/article/details/79433319
今日推荐