一文聊聊近些年 CPU 在微架构、IO 速率上的演进过程

在上一篇《一文深入了解 CPU 的型号、代际架构与微架构》 中我们介绍了我手头的一颗 Intel(R) Core(TM) i5 的型号规则,以及它的物理硬件的 Die 图结构。以及它对应的 Skylake 核的微架构实现。

不少同学开始问我其它型号的 CPU 和它比有什么区别呢。考虑到了市场上各种新老 CPU 型号太多了,咱们没办法一一介绍。所以我想了一个办法,咱们把这些年 CPU 进化的几个关键点讲一讲。这样将来大家再看其它的 CPU 的时候,也能做到懂得历史,也能展望未来了。最重要的微内核 sunny cove的 介绍在文章的最后。

一、制程工艺的变化

CPU 的生产过程大概是需要经过如下几步:第一步是晶圆的生产。具体过程是将包含有大量硅的石英沙放到一个巨大的石英熔炉中加热融化,然后向熔炉中加入一个小的晶种以便于硅晶体围着这颗晶种生长。直到生成一个单晶硅硅锭。这个硅锭是一个圆柱体,直径大概在 200 mm 或 300 mm。然后对硅锭进行切割,将圆柱体的硅锭切割成圆形的晶圆。

第二步是 CPU 硬件电路的制作。晶圆表面会被涂上一层光阻物质,这种光阻物质后面被紫外线照到的地方会融化。接着使用固定波长的紫外线通过印着 CPU 复杂电路结构图样的模版照射晶圆。用光来对晶圆进行蚀刻。然后再通过沉积的方式加一层硅,涂光阻物质,再次影印,蚀刻重复多遍形成一个多层结构。而且每层中间都要填充金属导体。最终在一个非常小的面积上形成一个比一座城市还要复杂的 3D 结构。

第三步是进行封装和测试。晶圆上的电路被封装起来,然后进行测试合格后就会推向市场销售。

在上面的制作步骤中,最重要的是第二步。在这个过程中追求的是不断底在单位面积的芯片上布局更多的晶体管。每个晶体管的结构大概如下。

晶体管的尺寸越小,单位面积上的电路就越丰富,生产出来的 CPU 的性能就越好。另外还有就是晶体管越小的话,单个晶体管的能耗也会越低,整颗 CPU 也会越省电。

衡量晶体管尺寸大小的标准是晶体管中源极和栅极之间(沟道长度)的距离。在 Intel 历年的 CPU 中,在 2013 年的 Haswell 采用的是 22 nm 的工艺。到了 2014 年的 Broadwell 开始采用 14 nm 工艺。到了 2019 年的 Ice Lake 开始引入 10 nm 工艺。到了 2022 年的 Raptor Lake,已经开始采用 7 nm 工艺了。

一般来说,制程工艺越短,生产出来的 CPU 也就越先进。

二、集成度的变化

CPU 虽然是最精密的设备,但是它也是无法自己完成工作的。需要和计算机中的内存、显卡、硬盘、网卡、USB设备、鼠标键盘等组件配合才行。所以,CPU 需要通过硬件线路来和这些设备相连。

在这些设备中,所有硬件的工作频率都比 CPU 要慢。只不过有的设备虽然速度比不上 CPU,但是还是比较快的。另外一些设备比如硬盘、键盘鼠标相比更慢一些。在老式 Intel CPU 中。

在大约 2000 年前后的老式电脑体系结构中,CPU 在主板上设计了南桥和北桥两个硬件。北桥负责与CPU通信,并且连接高速设备内存和显卡,并且与南桥通信;南桥负责与低速设备硬盘、网卡、键盘鼠标、USB设备通信,并且与北桥通信。

其中北桥芯片是存储控制器(Memory Controller Hub, MCH)。功能包括了 PCIe(Peripheral Component Interconnect Express,是一种高速串行计算机扩展总线标准)总线功能用来连接显卡。也包括了内存控制器,用来连接内存。

后来由于 CPU 对内存和显卡的数据带宽需求越来越大。Intel 从 2011 年正式发布的 SandyBridge 开始,CPU 整合内存控制器和 PCIe 控制器,相当于是把原来北桥的功能集成在 CPU 内部了,北桥从那时开始就消失了(参考https://en.wikichip.org/wiki/intel/microarchitectures/sandy_bridge_(client))。

随着时间的推移,CPU 硬件整合度越来越高。在手机芯片中,已经由于只剩下一个芯片了,也没有“芯片组”的说法了,只剩下孤零零的PCH (Platform Controller Hub)。

未来随着集成度的进一步提高,未来在台式机中南桥也可能会消失。在手机中由于体积的特殊性,已经实现了最高的集成度。通过系统级芯片(System on Chip,SOC)已经把 CPU、GPU、内存、导航定位模块、多媒体模块等全部集成到了一起。

 资料直通车:Linux内核源码技术学习路线+视频教程内核源码

学习直通车:Linuxc/c++高级开发【直播公开课】

零声白金VIP体验卡:零声白金VIP体验卡(含基础架构/高性能存储/golang/QT/音视频/Linux内核)

三、内存控制器的变化

每代 CPU 的一大变化就是内存控制器的提升,一般来说,越新的 CPU 所支持的内存代际越来越新、支持的内存频率越来越高。

先看 2011 年第 3 代的 Ivy Bridge。该代际下的的 CPU 支持的还是 DDR3 代的内存。Celeron、Pentium 等系列的 CPU 支持的内存频率大部分都是 DDR3-1333。只有 Core i3 和 Core i5 系列的内存频率支持到了 DDR3-1600。

到了 2014 年第 5 代 Broadwell 开始,Intel 开始在多数的 Core 系列开始大规模地支持 DDR4-2400 内存。2015 年的第 6 代 Skylake,其代际下高端的 Core i9 支持到了 DDR4-2666。到了 2016 年的 Kaby Lake,普通的 Core i5 和 Core i7 也都支持了 DDR4-2666。2019 年的 Ice Lake 的 Core 系列支持了 DDR4 3200。

到了 2021 年的 Alder Lake S 开始,开始支持 DDR5 的新内存。而且还是同时支持 DDR4-3200 和 DDR5-4800。

上面说的是台式机的内存规格。对于笔记本电脑来说,还有对应的低电压规格的内存条代际。低电压标准的内存相对比较省电,但性能会差10%左右。在具体的内存标准上,包括 DDRxL 和 LPDDRx 两个系列标准。其中其中 L 是低电压 Low Voltage 的简写,LP 是 Low Power 的简写。

拿第 4 代内存来举例, DDR4 的工作电压虽然相比 DDR3 的 1.5 v 下降到了 1.2 v,更加省电。但是相比用在笔记本中的话,功耗仍然是比较高的。而 DDR4L 可以同时除了兼容 DDR4 的 1.2 v 电压模式外,还支持 1.05 v 的低电压模式。LPDDR4 的工作电压是 1.1 v,DDR4L 和 LPDDR4 所以更适用于用在笔记本电脑等移动设备上。

CPU支持的内存除了以上指标外,还有另外一个就是通道数。直观理解,就是 CPU 上可以支持几条内存插槽。家用 PC 电脑一般都 2 个或 4 个内存插槽。在英文中对应的叫 channel 数。越多内存插槽的电脑支持的最大内存数量也就越大,整体带宽也就更高。

四、PCIe 插槽变化

前面我们提到 PCIe 总线。它是一种用于连接高速组件的高速串行计算机扩展总线标准,它取代了历史上出现的 AGP、PCI 和 PCI- X 总线标准,并经过了多次调整改进。

最早在 2003 年的时候,PCIe 1.0标准首次发布。后来因为带宽需求增长越来越快,已经陆续出现了 PCIe 1.0、PCIe 2.0、PCIe 3.0、PCIe 4.0 和 PCIe 5.0 等 5 代标准,PCIe 6.0也将在不久后发布。传输速率每过一代就会增加很多。

Intel 的 CPU 发展过程中,在 2015 年的 Skylake 中支持了 PCIe 3.0 标准。在 2020 年的 Tiger Lake 的 CPU 中,开始支持了 PCIe 4.0 标准。在 2021 年的 Alder Lake S 中,提供了 16 通道的 PCIe 5.0 用于连接显卡,同时还支持 4 通道的 PCIe 4.0 通道用于连接固态硬盘。

五、微架构(核)的变化

在每代的 CPU 中,单个物理核的设计结构也是非常不同的。所以隔代的 CPU 性能差异也不尽相同。

在 2013 年和 2014 年,Haswell、Haswell Refresh、Broadwell 等代际采用的核的微架构设计都是一样的,都采用的是 Haswell 微架构。

在 2015 年的 SkyLake、KabyLake、Coffee Lake 等代际中,采用的都是 Skylake 微架构。

到了 2019 年发布的 Ice Lake 代际中,开始引入了 Sunny Cove 微架构。该架构下的单核性能大约比上一代提升了有 18% - 20%(参考 https://en.wikichip.org/wiki/intel/microarchitectures/sunny_cove)

每一种不同的 CPU 微架构,在核的内部实现细节上都会有一些不同。就拿 Ice Lake 中使用的 Sunny Cove 微架构来举例,它相比上一代的 Skylake,具体的改进有如下。

对于负责指令解析的前端部分

  • µOP cache提升到了 2.3 k(上一代是 1536)
  • 改进的分支预测
  • iTLB 缓存翻倍

对于负责指令执行的后端部分

  • 顺序重排缓存器(ReOrder Buffer,ROB)提升到了 352 条目(上一代是224条目)
  • 调度器(Scheduler)提升到支持 10 路超标量(上一代是 8 路超标量),每个时钟周期最多可以支持 10 个微操作

对于执行引擎部分

  • 存储操作端口提升到了 2 个(上一代是 1 个)
  • 地址生成端口提升到了 2 个(上一代是 1 个)

对于缓存子系统

  • L1 缓存提升到了 48 KiB(上一代是 32 KiB)
  • L2 缓存提升到了 512 Kib(上一代是 256 KiB)
  • STLB(Shared TLB)缓存提升了到了 2048 条目(上一代是 1536 条目),DTLB也有较大改进

另外 Sunny Cove 还引入了一些新的指令,比如 AVX-512 向量指令。所有这些核设计细节中的提升,铸就了 Sunny Cove 比上一代更强的单核性能。

到了 2020 年之后的 Tiger Lake 中,开始采用 Willow Cove 新微架构中 L2 又进一步提升到了 1.25 MB,L3 提升到了 12 MB。(参考https://en.wikichip.org/wiki/intel/microarchitectures/willow_cove)

后面到了 2021 年的 Alder Lake S 时为了平衡性能和功耗, 又开启了一个新的 CPU 设计趋势。就是借鉴手机 CPU 设计,引入了大核小核的设计区分。

在 CPU 的设计中,在性能核功耗上一直无法兼顾。内置更多的晶体管虽然可以提升性能,但会让发热功耗问题更严重。虽然制程不断提升到了 22nm、14nm、10nm、7nm、...,但是由于芯片功能的增加和性能的提升,功耗上取得的效果一直不能令人满意。

在传统的 CPU 中,不管是什么样的任务,都采用一样的核来调度和使用。但其实很多场景中,并不需要这些性能和能耗都较高的核。在新的设计趋势中,“大核”叫做“Performance Cores”,小核”叫“Efficiency cores”。

当运行各种低负载应用时,可以使用“Efficiency cores”来满足用户需求的同时来节约电量,这种核的性能一般,但优势在于省电。当真正需要有更多性能的时候,才会启动更高性能的“Performance Cores”。

总结

由于市场上各种新老 CPU 型号太多了,咱们没办法一一去了解。我们只要掌握 CPU 发展中的几个关键点的进步,就能够做到对所有 CPU 有个基本的了解了。

其中最重要的进步点是 CPU 制程工艺的变化。衡量 CPU 制程工艺的尺寸的标准是晶体管中源极和栅极之间(沟道长度)的距离。在这些年中,制程一直在进步。从 65 nm、45nm、22nm、...、10nm、7nm一直在进步。但总体上来说,已经快到物理的极限,制程的进步速度在变缓。

另外一个就是集成度的变化。早年的 CPU 中,硬件架构上设计的比较细。在新的 CPU 中,由于对带宽的要求变得越来越高。所以 CPU 硬件开发者们倾向于把更多的模块都集成到 CPU 硬件中。比如历史上的北桥,绝大部分功能都被 CPU 硬件实现了。在手机芯片中,一个 SoC 更是集成了 CPU、RAM、导航定位模块、多媒体模块等众多功能模块。

还有就是 IO 支持上的提升。对于内存控制器部分来说,支持的内存代际越来越高,从 DDR3、DDR4,一直到了今天的 DDR5。另外就是内存的频率,即使是同一代际的内存,频率支持的也是越来越高。还有就是连接显卡和固态硬盘的 PCIe 总线,也是从 1.0 逐步支持到了 5.0。

还有更重要的变化是单核微架构的设计。在新的单核架构中,CPU 中的各种缓存如 TLB、L1、L2变的越来越大,支持的超变量路数也再变多。还有就是一个新的发展趋势,CPU 厂商们引入了一些更省电的“Efficiency cores”,俗称小核。用来在系统计算任务不重的时候,使用小核来调度,节约更多的能耗。

CPU硬件一直在进步,在过去的很多年中,服务器端计算性能的提升都是靠硬件来提升的。但我觉得近些年来,这个提升趋势有变缓的迹象。因此未来更好地理解硬件内部原理,好好设计和调优服务的软件部分,让硬件性能最大程度地发挥,这件事情会变得越来越重要。

原文作者:开发内功修炼

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/211124.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

24路电磁锁控板的特点和主要参数

智能快递柜、智能生鲜柜、电子存储柜、超市寄存柜、智能送餐柜、电子更衣柜、档案柜等物联网终端设备,都是采用电磁锁控制,这种电磁锁控制板俗称锁控板。锁控板可以远程控制储物柜的开关以及远程监控并提供锁的反馈信号。沐渥开发的24路电磁锁控板可以控…

项目管理套路:看这一篇绝对够用❤️

写论文必不可少的,就是创建代码并进行实验。好的项目管理可以让实验进行得更加顺利。本篇博客以一次项目实践为例,介绍项目管理的方法,以及可能遇到的问题,并提供一些可行的解决方案。 目录 项目管理工具开始第一步版本管理十分关…

实战JVM高CPU、内存问题分析定位

背景: 业务中台组件MOSC开展压测工作,并发场景下发现CPU使用率达到100%,虽然程序没有报错,但是这种情况显然已经达到性能瓶颈,对服务带来了验证的效能影响,所以针对该CPU问题必须进行详细的根因分析处理。…

redis实现分布式锁

实现分布式锁时需要实现的两个基本方法: 获取锁: 互斥:确保只能有一个线程获取锁非阻塞:尝试一次,成功返回true,失败返回false 释放锁: 手动释放超时释放:获取锁时添加一个超时时间…

unordered_map 与 unordered_set 的使用

unordered_map unordered_map 的介绍文档 unordered_map 的介绍文档&#xff1a;来自cpluscplus.com 的中文翻译 unordered_map是存储<key, value>键值对的关联式容器&#xff0c;其允许通过keys快速的索引到与 其对应的value。在unordered_map中&#xff0c;键值通常用…

OpenWRT软路由web界面如何远程访问

文章目录 1.openWRT安装cpolar2.配置远程访问地址3.固定公网地址 简单几步实现在公网环境下远程访问openWRT web 管理界面&#xff0c;使用cpolar内网穿透创建安全隧道映射openWRT web 界面面板443端口&#xff0c;无需公网IP&#xff0c;无需设置路由器。 1.openWRT安装cpola…

解决:前端js下载文件流出现“未知文件格式”错误

第一中情况&#xff1a; 出现的问题&#xff0c;前端已经设置了responseType: blob,下载下来还是格式不对。 最后经过排查&#xff0c;后端缺少charsetutf-8&#xff0c;所以前端可以设置编码&#xff1a; 第二中情况&#xff1a; 后端已经设置了charsetutf-8&#xff0c;前…

【Java】认识String类

文章目录 一、String类的重要性二、String类中的常用方法1.字符串构造2.String对象的比较3.字符串查找4.转换5.字符串替换6.字符串拆分7.字符串截取8.其他操作方法9.字符串的不可变性10.字符串修改 三、StringBuilder和StringBuffer 一、String类的重要性 在C语言中已经涉及到…

leetcode (力扣) 97. 交错字符串(动态规划)

文章目录 题目描述思路分析完整代码 题目描述 给定三个字符串 s1、s2、s3&#xff0c;请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。 两个字符串 s 和 t 交错 的定义与过程如下&#xff0c;其中每个字符串都会被分割成若干 非空 子字符串&#xff1a; s s1 s2 … sn t …

tp8 使用rabbitMQ(1)简单队列

php8.0 使用 rabbitmq 要使用 3.6版本以上的&#xff0c; 并且还要开启 php.ini中的 socket 扩展 php think make:command SimpleMQProduce //创建一个生产者命令行 php think make:command SimpleMQConsumer //创建一个消费者命令行 代码中的消息持久化的说明 RabbitMQ 消息持…

登陆页面模板

简单好看的登陆页面 vue项目代码 可忽略js部分 先来个效果图 <template><div class"login"><div class"content"><p >账户密码登录</p><div class"unit"><label class"label">用户名</…

Linux-权限

1.Shell命令以及运行原理 Linux 严格意义上说的是一个操作系统&#xff0c;我们称之为 “ 核心&#xff08; kernel &#xff09; “ &#xff0c;但我们一般用户&#xff0c;不能直接使用 kernel 。而是通过kernel 的 “ 外壳 ” 程序&#xff0c;也就是所谓的 shell &#x…