最近要找个高性能的服务器 ,为了不被坑 搜集了些资料补习了一下cpu多核架构的知识。
从有多核概念以来, amd 和 intel 都在抢着定义实现这些标准 ,各种新的多核技术和术语层出不穷, 这让用户无从是从。
以下从出现过的术语慢慢捋:
1 单核结构
CPU 状态
中断 逻辑
执行单元 | 一级Cache
所有的多核结构都是以此为蓝本进行各种改变的
单核结构 就如 一个厨师(CPU 状态&中断 逻辑)在用一个锅(执行单元 )和一个炉子(一级Cache) 在炒菜 并由一个副手(总线接口)在上菜
2 多CPU结构
CPU 状态 CPU 状态
中断 逻辑 中断 逻辑
执行单元 | 一级Cache 执行单元 | 一级Cache
多CPU 如同多个厨师在不同的厨房用自己的一套工具在炒菜并且各自都由自己的副手在上菜,厨师之间的沟通成本高, 且厨师多了比较 占地方
3 多核CPU结构
CPU 状态 |||| CPU 状态
中断 逻辑 |||| 中断 逻辑
执行单元 | 一级Cache|||| 执行单元 | 一级Cache
多核CPU结构 是对单核CPU的改进,伴随生产工艺提高在同等体积下的CPU内部增加了计算所需核心部件(浮点计算器,中断,寄存器,cache等),对于其他外部部件来看依旧只有一个CPU在进行访问, 简单看多核CPU计算能力是单核CPU的 倍数,但由受总线接口的影响(intel的多核技术为双芯使用同一个总线接口,amd的多核可用多个总线接口),实际运行并不能和多CPU能力等效,但其并行运算的能力已经足以满足个人用户的需求了
多核CPU如同多个厨师在挤在了同一个厨房内用自己的工具炒菜,而且很有可能他们还只由一个副手上菜
4 超线程结构(HT)
CPU 状态 CPU 状态
中断 逻辑 中断 逻辑
执行单元 | 一级Cache
Intel 在P4时代主推的一个技术,并不是如同多核一样拥有多个计算核心部件, 而是针对流水线特定指令的部件优化,由此让浮点计算器,继承器,cache等部件都能在同一时间进行工作而无需像单核样等待流水线特定部件的指令对特定部件的操作, 此技术以提高了核心计算部件的利用率来提升并行能力,当然对外看还是只有一个CPU核心在运算超线程结构CPU 如同一个会用两只手炒菜的厨师,虽然受锅灶的限制,但任然能提高做菜的效率
5 共享Cahe的多核结构
CPU 状态 CPU 状态
中断 逻辑 中断 逻辑
执行单元 执行单元
一级Cache
类似多核结构,由于代码又空间的相关性,当多核用各自的Cache来执行同一个程序的并行任务时,Cache之间无疑存在很大的相似性, 考虑到Cache的成本和避免多个Cache对同一段内存进行未命中时加载,这个结构共享了Cache。 可以预期此结构在执行多线程任务时的效率不低于多核CPU
共享Cahe的多核结构好比 多个厨师用各自的工具在一个灶上炒菜, 合理利用灶的余温也避免频繁熄火和开火时的消耗
6 超线程的多核架构
CPU 状态 CPU 状态 |||| CPU 状态 CPU 状态
中断 逻辑 中断 逻辑 |||| 中断 逻辑 中断 逻辑
执行单元 | 一级Cache |||| 执行单元 | 一级Cache
只有Intel推进的HT不算太成功的技术,与时俱进的加入到多核里面也算是intel不甘心失败的一个措施,同多核结构一样,只是每个核的流水线能更高效的使用计算单元