英特尔刚刚推出了一款新的48核CPU.对于我们的程序员来说,这会转移到许多核心意味着什么呢?

sta*_*tti 7 parallel-processing cpu cpu-architecture

英特尔刚刚推出了新的48核CPU("Intel显示48核x86处理器作为单芯片云计算机",作者Ryan Shrout,2009年12月2日;芯片是"单芯片云计算机",也称班加罗尔).这个新架构不仅仅是内核的数量,似乎还引入了许多有趣的功能,例如:

事情变得有趣 - 英特尔表示他们已经删除了硬件缓存一致性,这实际上意味着每个"磁贴"将完全独立于它存储在本地L2缓存中的内容.因此,核心和瓦片之间的所有高速缓存通信将由网格数据通信系统和每个瓦片上的专用"消息缓冲器"处理.

这些新架构对我们程序员意味着什么?我们如何解决tomorow CPU的复杂性?

luv*_*ere 8

删除了硬件缓存一致性,这实际上意味着每个"磁贴"将在它存储在本地L2缓存中的内容中完全分离.

这很好,这可能意味着具有低耦合系统的程序(主要是独立工作)将各自拥有自己的处理器和缓存,从而导致更高的缓存命中率和更好的个人性能.瓶颈将转移到这些模块之间的通信,因此可能必须专门编写高效的低级工具来优化它,以便大多数程序员从架构中获得真正的好处.

编程必须专注于编写具有非常低耦合的模块,这将揭示其功能并将其作为服务提供.随着编译器将意识到可扩展的处理器体系结构,他们将"知道"将每个模块分配给自己的处理器,并且可以在处理器之间实现模块冗余 - 在自己的处理器上运行同一模块的多个副本,动态数量的这种重复,以便扩展到每个模块具有的每个时间单位的请求数.

基本上,负载平衡也将成为桌面的一个选项,特别是对于必须在同一时间由大量进程频繁调用的核心OS功能 - 拥有内核的冗余副本将确保更多进程将在不必等待操作系统的情况下同时完成更多工作.

此外,虚拟化将成为更多的交易工具,并集成在编译器中.为不同平台本地编写的代码将能够在同一程序单元内协作,因为不同的位将在不同的处理器上运行,并且通信架构将无缝地集成它们.同一应用程序的不同部分将以不同的编程语言编写,因为它们将被单独编译并作为服务进行部署.

  • 我非常不同意,如果你正在设计硬件,那么缓存高速缓存一致性只是"很好".它给程序员带来了巨大的麻烦.低耦合系统应该在高速缓存一致系统上运行良好,就像在非cc系统上一样,给定合理的调度器.非CC不是一个功能,它是其他东西的权衡(例如同一总线上的许多内核).我想不出一个商业上成功的非CC共享内存机器(但我愿意被证明是错误的). (5认同)

Wed*_*dge 5

这意味着我们都应该学习Erlang或其他一些为并发而设计的函数语言.

通过使用互斥锁和其他技术手动协调多个线程的创建和交互来进行并发编程与在本机上不支持OO的语言中尝试OO设计一样麻烦且容易出错.不可变数据和函数式编程风格自然适用于并发(由专门为并发设计的众多函数语言证明).我怀疑随着处理器性能的提升,并行性的改进超过了时钟速度,开发人员将越来越多地使用函数式语言来利用这种处理能力,直到最终功能语言占据主导地位.