多核和多CPU编程——基础硬件说明

一、硬件的发展

CPU的发展在经过了摩尔定律的快速迭代后,有了长足的进步。但俗话说的好,一个好汉三个帮,单体的CPU发展,最终还是遇到了瓶颈。无论是超标量还是流水设计,都无法超越此瓶颈。从实际情况来看,多CPU要比多核出现的早,毕竟多CPU要比多核好设计架构一些。而随后,在单个芯片上集成多个CPU核心(CMP)也就是常说的多核技术开始迅速发展起来。
现代的多核心处理器,是一种内存共享的技术,CPU一般为对称状态,所以叫做共享存储的对称多处理器(SMT,symmetric multi-processor)。多核CPU上,线程是真正的并行执行的,而不是像单核那样时间片轮转的。
而多CPU技术中,如果是同一主板上,则和多核类似,如果是分布式集群中,则相关的分布式技术已经很成熟有展现,此处重点指的是多核心的基础硬件。

二、多核CPU的架构

多核CPU的架构按Flynn的划分主要有四类:
1、单指令流单数据流(SISD)——传统的顺序执行计算机其有一个CPU,它从存储在内存中的程序那里获得指令并串行执行,且只作用于单一的数据流即一个时钟周期内只处理一个数据流。早期的PC都是这种架构。
2、单指令流多数据流(SIMD)——单个的指令流同时处理多个数据流,它在处理数字信号、图形图像等领域应用较多。SIntel的MMX等处理器即是这种情况。
3、多指令流单数据流(MISD)——用多个指令同时处理单个数据流,但这种情况更倾向于一种理论模型,在实际情况中很少见。
4、多指令流多数据流(MIMD)——多个同时执行多个指令流,且这些指令流可以同时处理对应的多个数据流,现在的Intel和AMD的多核即是这种情况。
在PC上,常用的是AMD和Intel的架构设计,而在服务器上,则有Sun和IBM的架构设计。

三、指令集

不同的架构,一定会有不同的指令集来对应。早期的SIMD架构中,Intel从MMX指令集过渡到使用SSE指令集,但随着技术的进步,AMD不断推出兼容的指令集如SSE5,Intel为了保持技术的先发性,推出了AVX(Advanced Vector Extensions:高级向量扩展)指令集。相比起迭代了多年的SSE系列指令集,AVX指令集带来了巨大的革新,其中最为主要的是,它在兼容SSE指令集性的同时,将SSE时代最大宽度为128-bit的寄存器拓宽到了256-bit。而这只是开始,随后,Intel又推出了更新的AVX-512指令集,将寄存器宽度扩展到了512位。
好弓还得有好箭,这就是硬件在发展,指令集也得发展,才能更好的挖掘硬件的潜力。随之而来的,一定是上层的编译器及软件的更新,然后就是软件的进一步迭代。

四、多核的体系结构

多核的体系结构从发展来看分成了三类:
1、早期的HT超线程技术,定义的逻辑处理器而不是真正的物理处理器。
2、最早实现的多CPU处理器,一个芯片只有一颗CPU。
3、现代的多核心处理器,即一个芯片上有多颗CPU,当然这种多核可能也包含HT等技术。
4、混合型多核处理器,即在一个封装里混装了多种类型的处理器。这种典型是IBM的Cell。

五、总结

软件和硬件是相互促进,相互成就的。好的软件可以弥补硬件的不足,好的硬件可以更好的发挥软件的能力。从底层的硬件到上层的软件有着一条长长的链条,从硬件厂商,到编译器厂商,到操作系统,到语言标准,到语言库再到上层的应用,缺少哪一个环节,那么这个多核的优势就不能够完整的展现出来,所以一个技术的迭代发展,不是一朝一夕完成的。
硬件限制软件的空间,软件定义硬件的能力,不分彼此,合作共赢。

多核和多CPU编程——基础硬件说明

来源:fpcc

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月24日
下一篇 2022年2月24日

相关推荐