论文部分内容阅读
不可否认,多核(四核及以上)是未来发展方向。然而当前,厂商们热衷于桌面多核的态度却总让人们心生疑惑:真的有必要么?
Intel Core2 Quad系列产品被很多人认为是目前最强大的四核桌面处理器。
在英特尔、AMD等厂商的推波助澜下,我们成功地跨入了多核时代。
一些激进的桌面用户,迫不及待地升级到最新的多核系统。然而,他们却很快发现,多核系统对于桌面应用的改善非常有限。付出昂贵的代价,换来不尽如人意的结果,用户不禁要问:对于桌面系统而言,多核真的有必要吗?
操作系统是关键
其实,问题首先出在操作系统上。如果操作系统对于多核的支持不够好,那么即便有更多的处理器核心也无济于事。
以微软最新的操作系统Windows Vista为例,从目前来看,Vista并没有对双核以及多核处理器进行专门的优化。这也不能怪微软,毕竟在多年前开始Vista的开发时,英特尔和AMD的多核处理器还没影呢!不过,没有进行专门的优化,并不代表Vista就不支持多核,其实甚至连Windows系列的早期产品Windows XP、Windows 98等操作系统也支持多核,只有目前仅存于人们记忆中的DOS不支持多核。换而言之,只要操作系统支持多任务操作,那么多核就能发挥作用,尽管这种作用可能会因为没有经过优化而在当前显得微不足道。
很多人会感到奇怪,他们认为,从结构上来说,多核的芯片和以前的SMP(Symmetrical Multi-Processing,对称多处理器,通常用于工作站和服务器)差不多,只不过多核是将多个CPU集成到一块芯片上而已。那么,既然以前的操作系统都能够对SMP做出完美的支持,为什么还要有经过优化的多核操作系统呢?
实际上,多核与SMP还是有很大不同的。虽然二者都具备易于使用、内置缓存、共享内存的特性,但是在SMP下,开发人员面对的是单一的抽象化硬件平台,由SMP操作系统来决定具体由哪一个内核来运行相应的任务。而多核环境显著增加了系统的复杂度,尽管很多人都认为多核就是指在同一个芯片中放入多个内核,但是在实际开发工作中所遇到的多处理问题并不仅仅局限于在单一芯片中的多个内核。另外,在操作系统层面,当一个任务到来时,会剥离成为多个并行的线程(线程数量视CPU核心数量而定),又因为线程之间需要交流以及操作系统的监管,其效率损失要比硬件层面大得多。
这里再说句题外话,对于操作系统来说,大家耳熟能详的各种补丁包不仅能改善系统的安全性能等,也可能在短期间内为多核提供强有力的支持。譬如,微软在7月23日就发布了一个支持多核心显卡的补丁,原因是在Windows Vista下,一些诸如GeForce 7950 GX2这样的双核心显卡的第2个GPU(图形处理器单元)可能无法获得正确的指令,导致其仅能发挥一半的火力。多核处理器虽然与多核显卡有极大的不同,但是二者的实现原理是基本相同的,因此我们也不能排除微软在某个时刻为多核桌面系统提供相应的Windows补丁包的可能性。
软件支持成软肋
有了完美支持多核的桌面操作系统,并不意味着桌面多核就已经水到渠成,软件的支持也必须跟上。
目前,多数桌面软件并没有充分考虑到多核的运行情况,导致线程的平均分配时间以及线程之间的沟通时间都会大大增加,尤其是当线程需要反复访问内存的时候,就会造成软件运行效率的低下。另外,一些桌面软件的测试也明白无误地告诉我们,如果没有针对多核进行软件开发,不仅多核提供的强大计算能力得不到利用,甚至还有可能出现“多核不如单核CPU好用”的现象。
在目前的可视化开发环境下,开发软件似乎很简单:只需在IDE(集成开发环境)中新建一个工具,再建几个Form,然后拖上去一些控件,就可完成一个看似非常强大的程序。这些程序可能具有非常复杂的功能,而且可以在单核CPU上运行得非常好。然而一旦将之在多核系统上运行,其表现往往令人失望。
原因何在呢?传统的程序都是由一个Main函数开始执行程序,然后按顺序执行相应的代码,即所谓的串行,因此同一程序在同一时间只能运行在一个CPU核心上,哪怕该系统上有很多CPU核心,也只能有一个核心发挥作用。
目前几乎所有的桌面软件都是串行的,采用Visual Basic等语言编写,如何为这类开发商提供更好的并发编程模型和开发环境,以帮助他们开发有效的桌面并行应用程序,将是多核在未来几年里面临的一大挑战。当然,这些问题也存在于企业级软件开发过程中,不过由于本文谈及的是桌面系统,因此不再赘言。
为了改善这种局面,据悉英特尔已经与一些软件开发商、操作系统厂商和高校制订了合作伙伴计划,并加快了在相关工具方面的研发力度,推出了一系列的产品,包括编译器、VTun性能分析器、多线程工具等。另外,Intel在全球还有1万多名软件工程师帮助用户完成相关软件的并行化工作。
应用缺乏是短板
目前看来,桌面系统的应用一般不外乎是文档处理、表格制作、网页浏览、即时通信、游戏娱乐等领域,往复杂里说,还可能包括一些非专业的视频、音频等多媒体处理应用。
对于当前的主流桌面系统来说,应对以上的应用完全不成问题,譬如微软最新的Office 2007办公系统、IE 7.0浏览器、MSN 8.1等软件,甚至可以在早几年的桌面系统上流畅运行,完全无需昂贵的多核处理器。只有在音、视频处理方面,多核才能发挥出一些优势,不过如果相应的音、视频处理软件没有针对多核进行优化的话,多核系统的效果也会大打折扣。
业内曾经认为,多核在可视化领域具有远大前途,渲染速度可以加倍,矩阵运算容量可以大大增加,然而现在的OpenGL(这是一种3D程序接口,在图形工作站和游戏中应用颇多)很难拆分数据封装,这也让多核难有用武之地。更糟糕的是,目前的绝大多数游戏都采用了微软的DirectX,而不是曾经辉煌一时的OpenGL。要让DirectX在多核下表现优异,仍要微软在操作系统或补丁包中加以支持。
游戏是桌面系统(尤其是家庭和个人用户)的一大应用,然而目前能够支持多核(哪怕是双核)的游戏可谓凤毛麟角、少之又少。由于多核下的游戏开发将在很大程度上颠覆原有的思路、理念乃至流程,因此现在仍少有大型游戏公司宣称向多核开发转移,这也意味着短期间内我们不会看到重量级的游戏产品支持多核。
另外,一些业内人士认为,多核桌面的春天要寄希望于家庭服务器(这是微软最近一段时间力捧的一种产品,微软已经表示将在年内推出Windows家庭服务器正式版)。他们认为,只有电脑转变成为数字家庭的数据存储和运算中心,多核的意义才会凸显。不过,这也只是一种美好的期望,毕竟类似家庭服务器这样的应用距离我们仍非常遥远,更况且家庭服务器恐怕也不应再归类于“桌面”了吧?
观点:多核优点不容回避
虽然说了一大堆多核的“坏话”,但是我必须承认,多核的优点很多,而且我也很看好多核
在服务器和工作站上的前景。
与单核相比,多核的优点在于单芯片多处理器结构的控制逻辑复杂性要明显低很多;其次,由于单芯片多处理器结构的控制逻辑相对简单,包含极少的全局信号,因此线延迟对其影响比较小,在同等工艺条件下,单芯片多处理器可以获得更高的工作频率;再次,由于多个处理器集成在一块芯片上,并且采用共享Cache或者内存的方式,因此多线程的通信延迟会明显降低;另外,在IT业界广泛崇尚绿色环保的今天,多核通过动态调节电压/频率、负载优化分布等,加之生产工艺的极大改进,能更有效地降低处理器的功耗。
至于多核桌面,我个人认为在2010年前不会成为市场主流。(刘波)
Intel Core2 Quad系列产品被很多人认为是目前最强大的四核桌面处理器。
在英特尔、AMD等厂商的推波助澜下,我们成功地跨入了多核时代。
一些激进的桌面用户,迫不及待地升级到最新的多核系统。然而,他们却很快发现,多核系统对于桌面应用的改善非常有限。付出昂贵的代价,换来不尽如人意的结果,用户不禁要问:对于桌面系统而言,多核真的有必要吗?
操作系统是关键
其实,问题首先出在操作系统上。如果操作系统对于多核的支持不够好,那么即便有更多的处理器核心也无济于事。
以微软最新的操作系统Windows Vista为例,从目前来看,Vista并没有对双核以及多核处理器进行专门的优化。这也不能怪微软,毕竟在多年前开始Vista的开发时,英特尔和AMD的多核处理器还没影呢!不过,没有进行专门的优化,并不代表Vista就不支持多核,其实甚至连Windows系列的早期产品Windows XP、Windows 98等操作系统也支持多核,只有目前仅存于人们记忆中的DOS不支持多核。换而言之,只要操作系统支持多任务操作,那么多核就能发挥作用,尽管这种作用可能会因为没有经过优化而在当前显得微不足道。
很多人会感到奇怪,他们认为,从结构上来说,多核的芯片和以前的SMP(Symmetrical Multi-Processing,对称多处理器,通常用于工作站和服务器)差不多,只不过多核是将多个CPU集成到一块芯片上而已。那么,既然以前的操作系统都能够对SMP做出完美的支持,为什么还要有经过优化的多核操作系统呢?
实际上,多核与SMP还是有很大不同的。虽然二者都具备易于使用、内置缓存、共享内存的特性,但是在SMP下,开发人员面对的是单一的抽象化硬件平台,由SMP操作系统来决定具体由哪一个内核来运行相应的任务。而多核环境显著增加了系统的复杂度,尽管很多人都认为多核就是指在同一个芯片中放入多个内核,但是在实际开发工作中所遇到的多处理问题并不仅仅局限于在单一芯片中的多个内核。另外,在操作系统层面,当一个任务到来时,会剥离成为多个并行的线程(线程数量视CPU核心数量而定),又因为线程之间需要交流以及操作系统的监管,其效率损失要比硬件层面大得多。
这里再说句题外话,对于操作系统来说,大家耳熟能详的各种补丁包不仅能改善系统的安全性能等,也可能在短期间内为多核提供强有力的支持。譬如,微软在7月23日就发布了一个支持多核心显卡的补丁,原因是在Windows Vista下,一些诸如GeForce 7950 GX2这样的双核心显卡的第2个GPU(图形处理器单元)可能无法获得正确的指令,导致其仅能发挥一半的火力。多核处理器虽然与多核显卡有极大的不同,但是二者的实现原理是基本相同的,因此我们也不能排除微软在某个时刻为多核桌面系统提供相应的Windows补丁包的可能性。
软件支持成软肋
有了完美支持多核的桌面操作系统,并不意味着桌面多核就已经水到渠成,软件的支持也必须跟上。
目前,多数桌面软件并没有充分考虑到多核的运行情况,导致线程的平均分配时间以及线程之间的沟通时间都会大大增加,尤其是当线程需要反复访问内存的时候,就会造成软件运行效率的低下。另外,一些桌面软件的测试也明白无误地告诉我们,如果没有针对多核进行软件开发,不仅多核提供的强大计算能力得不到利用,甚至还有可能出现“多核不如单核CPU好用”的现象。
在目前的可视化开发环境下,开发软件似乎很简单:只需在IDE(集成开发环境)中新建一个工具,再建几个Form,然后拖上去一些控件,就可完成一个看似非常强大的程序。这些程序可能具有非常复杂的功能,而且可以在单核CPU上运行得非常好。然而一旦将之在多核系统上运行,其表现往往令人失望。
原因何在呢?传统的程序都是由一个Main函数开始执行程序,然后按顺序执行相应的代码,即所谓的串行,因此同一程序在同一时间只能运行在一个CPU核心上,哪怕该系统上有很多CPU核心,也只能有一个核心发挥作用。
目前几乎所有的桌面软件都是串行的,采用Visual Basic等语言编写,如何为这类开发商提供更好的并发编程模型和开发环境,以帮助他们开发有效的桌面并行应用程序,将是多核在未来几年里面临的一大挑战。当然,这些问题也存在于企业级软件开发过程中,不过由于本文谈及的是桌面系统,因此不再赘言。
为了改善这种局面,据悉英特尔已经与一些软件开发商、操作系统厂商和高校制订了合作伙伴计划,并加快了在相关工具方面的研发力度,推出了一系列的产品,包括编译器、VTun性能分析器、多线程工具等。另外,Intel在全球还有1万多名软件工程师帮助用户完成相关软件的并行化工作。
应用缺乏是短板
目前看来,桌面系统的应用一般不外乎是文档处理、表格制作、网页浏览、即时通信、游戏娱乐等领域,往复杂里说,还可能包括一些非专业的视频、音频等多媒体处理应用。
对于当前的主流桌面系统来说,应对以上的应用完全不成问题,譬如微软最新的Office 2007办公系统、IE 7.0浏览器、MSN 8.1等软件,甚至可以在早几年的桌面系统上流畅运行,完全无需昂贵的多核处理器。只有在音、视频处理方面,多核才能发挥出一些优势,不过如果相应的音、视频处理软件没有针对多核进行优化的话,多核系统的效果也会大打折扣。
业内曾经认为,多核在可视化领域具有远大前途,渲染速度可以加倍,矩阵运算容量可以大大增加,然而现在的OpenGL(这是一种3D程序接口,在图形工作站和游戏中应用颇多)很难拆分数据封装,这也让多核难有用武之地。更糟糕的是,目前的绝大多数游戏都采用了微软的DirectX,而不是曾经辉煌一时的OpenGL。要让DirectX在多核下表现优异,仍要微软在操作系统或补丁包中加以支持。
游戏是桌面系统(尤其是家庭和个人用户)的一大应用,然而目前能够支持多核(哪怕是双核)的游戏可谓凤毛麟角、少之又少。由于多核下的游戏开发将在很大程度上颠覆原有的思路、理念乃至流程,因此现在仍少有大型游戏公司宣称向多核开发转移,这也意味着短期间内我们不会看到重量级的游戏产品支持多核。
另外,一些业内人士认为,多核桌面的春天要寄希望于家庭服务器(这是微软最近一段时间力捧的一种产品,微软已经表示将在年内推出Windows家庭服务器正式版)。他们认为,只有电脑转变成为数字家庭的数据存储和运算中心,多核的意义才会凸显。不过,这也只是一种美好的期望,毕竟类似家庭服务器这样的应用距离我们仍非常遥远,更况且家庭服务器恐怕也不应再归类于“桌面”了吧?
观点:多核优点不容回避
虽然说了一大堆多核的“坏话”,但是我必须承认,多核的优点很多,而且我也很看好多核
在服务器和工作站上的前景。
与单核相比,多核的优点在于单芯片多处理器结构的控制逻辑复杂性要明显低很多;其次,由于单芯片多处理器结构的控制逻辑相对简单,包含极少的全局信号,因此线延迟对其影响比较小,在同等工艺条件下,单芯片多处理器可以获得更高的工作频率;再次,由于多个处理器集成在一块芯片上,并且采用共享Cache或者内存的方式,因此多线程的通信延迟会明显降低;另外,在IT业界广泛崇尚绿色环保的今天,多核通过动态调节电压/频率、负载优化分布等,加之生产工艺的极大改进,能更有效地降低处理器的功耗。
至于多核桌面,我个人认为在2010年前不会成为市场主流。(刘波)