产品展示

优游彩票ub8登录

CPU卡
  • 业务直线

    0755-29824687
  • 业务直线

    0755-29824683
  • 业务直线

    0755-29824684
  • 业务直线

    0755-29492766
  • 业务直线

    0755-29491366
  • 大客户专线

    0755-29824689

【装机指南】微进阶版:读懂CPU架构图

来源:优游彩票ub8登录    发布时间:2024-02-13 23:17:24

  CPU性能能够最终靠跑分软件评测,可以在实际应用中体验CPU性能水平是不是达到实际的需求。但看着一张CPU架构图,不知你会信手拈来地仔细分析,还是像我一样在字母和矩形组成的海洋上迷失……不过,架构图虽然看似深奥,拥有基础的理解似乎也并不是一件复杂的事。所以在这篇文章里,让我们以一个新的CPU架构作为解读的范例,一同走上探寻处理器架构奥秘的奇妙旅程……

  这是一张Sunny Cove单个核心的架构图。图片清晰地展现出CPU架构的全貌:写着Front End的淡黄色矩形囊括了整个CPU前端部分,绿色矩形Execution Engine是主要承担运算功能的硬件部分,直译过来就是执行引擎。右下角的紫色“J”是CPU核心的独立缓存系统,这套缓存系统与每核心共享L3缓存互联。把这三个部分区分开来,可以更好地理解架构图的每个部分所代表的意义。

  L1 Instruction Cache:一级指令缓存。CPU一级缓存运用了改进型哈佛架构,分为数据缓存和指令缓存以提高数据获取效率。CPU前端包含了一级指令缓存,简写为L1i。L1i通常用SRAM,并且分布位置紧邻CPU的 Prefetch指令预取单元,这些使CPU可以在极少的循环周期之内获取所需的数据。L1i一般是多路的,一次取指过程可以从中取出多组数据,利用其中命中的数据并抛弃不需要的数据,最好能够降低循环等待周期。如图所示,Sunny Cove核心配备了32KB L1i,每个循环周期可以从这些缓存中读取16字节数据。

  Instruction TLB:指令快页表。TLB存放了虚拟地址到物理地址的转换页表。TLB可以被认为是“页表的缓存”,它为一部分最可能被访问到的页表存储了一份副本,来提升CPU查找页表的速度。CPU接收到应用程序发送的虚拟地址之后,从TLB中查找对应的页表,即可确认是否命中,当TLB命中时,CPU可以直接从中获取相应的物理地址。这种设计可以加快虚拟地址到物理地址的转换速度,避免由于CPU在内存中查找页表造成大量循环周期的浪费。

  Fetch & Predecode:取指和预解码。CPU首先从L1i中取出需要执行的指令,并通过Predecoder预解码器对复杂指令进行预解码。经过预解码的CISC X86指令被存放在Instruction Queue指令队列里,等待进一步解码。Sunny Cove的指令队列每周期向解码器发送5条指令,并且支持名称为Macro-Fusion指令融合的技术。这是为了适配Sunny Cove的解码器设计,下一段落将详细解释。

  Decode:解码。负责解码的是Decoder解码器。Sunny Cove核心总共有5个解码器,这中间还包括1个Complex Decoder复杂解码器,可以解码最高4μOPs长度的指令;4个Simple Decoder简单解码器,只能解码长度为1μOP的指令。Macro-Fusion技术能在可行的情况下合并相邻的指令,输送到解码器进行解码,减少占用的指令执行单元数量。因此这个技术能节省资源、降低功耗。

  Branch Predictor:分支预测器。分支预测器位置靠近L1i,通过运用各种分支预测策略猜测分支指令的走向。现代CPU的分支预测器设计比较复杂,可以保证超过95%的预测准确度。分支预测失败时CPU需要清空流水线,重新选择分支路径;分支预测成功时,CPU可以直接继续执行指令。成功的分支预测将20-30个循环周期的分支指令执行时间缩短为一个循环周期,大幅提高性能。

  一、静态策略。这些策略不关注指令本身,只是机械重复一个设定好的分支预测策略。例如:全部指令都预测跳转;部分设定好的指令预测跳转,其他指令不跳转。这种设计结构简单,节省晶体管数量,但预测成功率相对较低。

  二、动态策略。一种经典的动态预测策略是,通过分析以往的指令执行历史记录,当一条分支指令执行多次结果相同,之后遇到这条指令即可直接预测;在两次预测失误的情况下更改预测结果。这种策略可以保证较好的成功率。

  MSROM:微代码定序存储器。部分指令太过复杂,解码后将会生成超过4条μOPs,即使是Sunny Cove的复杂解码器也无力解码。这时微代码定序器MicroCode Sequencer会解析这条复杂指令,MSROM每周期向MUX数据选择器输出4μOPs。因此,MSROM指令将会占用较多的循环周期,造成相对更高的延迟。

  Allocation Queue:分配队列。这一结构将微指令重新融合,发送给执行单元。Micro-Fusion技术可以在合适的情况下将两个μOPs融合为一个μOP,从而节省计算资源。处理完毕的μOP将被全部发送到CPU的执行引擎,也就是绿色矩形区域。Loop Stream Detector循环流检测器可以检测到小循环,将其存放在分配队列里。在循环结束以前,就可以直接从分配队列中获取循环指令。

  Register Alias Table:寄存器别名表。不同的μOPs可能会读写同一个寄存器位置,这些μOPs如果按照原始顺序执行,显然不会产生任何冲突。然而乱序执行技术的运用打乱了原始的执行顺序,可能导致并行处理的的两个μOPs同时读写同一个寄存器位置,造成冲突。RAT将寄存器重新命名,如果μOPs不存在数据依赖,就可以临时调用两个不同的寄存器位置,保证正常执行。

  ReOrder Buffer:重排序缓冲区。指令执行以前,必须先按原有顺序写入ROB,因此ROB记录了指令乱序执行以前的原始顺序。在指令执行完毕后,CPU就会按照指令在ROB上的排列顺序,也就是原有的指令提交顺序写入寄存器。每个ROB Entry存放一个正在执行的μOP。以下列出一些架构的ROBEntries数量。

  Scheduler:调度器。调度器负责将完成全部预处理过程的μOPs分配给CPU的执行单元。Sunny Cove的CPU调度过程支持乱序执行,可以打乱顺序执行指令从而提高效率。Physical Register File物理寄存器文件存储μOP操作数,μOP经过乱序执行单元时只传输寄存器地址而不是其本身,这可以大幅度节省能耗。

  Sunny Cove是一个典型的乱序执行架构。CPU原本按照指令提交的顺序并行执行指令,如果同时执行的两条指令存在依赖关系,或者说一条指令的执行需要另一条相关指令的结果。显然,这种情况导致其中一条指令不得不暂缓执行,CPU部分处理单元空置,浪费循环周期。乱序执行可以将一些无依赖关系的指令进行执行顺序调整,提高处理单元的利用率。

  这种技术并非完美,由于需要增加一些结构,乱序执行需要消耗不少晶体管,并且使CPU能效比下降。许多注重能效比的小核心仍然采用顺序执行架构。如ARM Cortex-A53/A55/A510。不过顺序执行与乱序执行能带来不小的性能差距,随着制程的发展,一些低功耗核心也搭载了这一技术。例如乱序执行的Silvermont相比顺序执行的Saltwell,性能显著增长。

  EUs:执行单元。指令经过所有的处理流程,来到执行单元。执行单元负责执行指令,输出执行结果。

  Load Store Unit:读取存储单元。CPU指令处理流水线和缓存流水线的连接部分。在执行读取或存储指令的时候,调度器会给LSU发送读取或存储的请求。AGU在执行相应指令,计算地址完成后,将寄存器地址传递给LSU。LSU随即将需要读取的数据传输给执行单元,或者将需要写入的数据存储在L1数据缓存中。

  L1 Data Cache:L1数据缓存。缩写为L1i。L1缓存的指令和数据分离存储,虽然降低了存储空间利用率,但是CPU可以同时读取数据缓存和指令缓存,并且两个存储结构不互相冲突。这种改进型哈佛架构非常适合对高速度有很大需求的L1缓存。

  L2 Cache:L2缓存。Sunny Cove的L2缓存每核心容量512KB。早期的CPU可能以L2缓存作为共享缓存而缺少L3缓存。更早的CPU仅有单个核心,部分缓存仍然集成在片外。

  【装机指南】微进阶版:存储分层在组装电脑的过程中,你或许会发现一个问题:计算机的存储设备称得上种类繁多,既有内存,也有SSD和机械硬盘。如果你对电脑部件有更多的了解,或许还会发现CPU内有多级缓存,机械硬盘之外也有速度更慢的存储设备,可供用户选购。早期电脑的存储结构,还不像今天这样繁杂。例如康懋达VIC-20配置的处理器MOS 6502内部只集成了容量极小的寄存器,如变址寄存器和堆栈指针寄存器,没有多级缓存设计也是理所应当。VIC-20配置了容量为5KB的RAM随机存储器以及16KB的ROM只读存储器,其中8KB存储系统,8文章陈chen辉...151214016

  【装机指南】微进阶版:读懂CPU架构图(上)CPU性能可以通过跑分软件评测,可以在实际应用中体验CPU性能水平是否达到实际需求。但看着一张CPU架构图,不知你会信手拈来地仔细分析,还是像我一样在字母和矩形组成的海洋上迷失……不过,架构图虽然看似深奥,拥有基础的理解似乎也并不是一件复杂的事。所以在这篇文章里,让我们以一个新的CPU架构作为解读的范例,一同走上探寻处理器架构奥秘的奇妙旅程……CPU核心架构图这是一张Sunny Cove单个核心的架构图。图片清晰地展现出CPU架构的全貌:写着Front End的淡黄色矩形囊括了整个CPU前端部分文章陈chen辉...248816911

  L3 Cache:三级缓存。每个CPU核心都可以通过互联总线访问共享的三级缓存的数据。三级缓存的速度介于主存和CPU二级缓存之间。一些早期的CPU型号并没有三级缓存。

  Bus Connect:互联总线。互联总线是避不开的话题。CPU的多个核心总是通过某种方式互相联系的。想想计算机集群,再想想网络,计算机之间的互联一直是为了数据共享。CPU之间的互联也不例外,之前在写存储分层的文章时,我已经提到CPU共享L3缓存。除此之外,另一个必不可少的部分——I/O控制器也非常重要。毕竟电脑的正常运行,需要系统内存和各种外围组件的支持。

  星形总线:每个CPU核心都与L3缓存有独立的连接。这一设计思路简单,被许多早期的多核心CPU采用。然而,随着CPU核心数的增加,独立连接数量必然增加,设计复杂度就会越来越高。为了提高缓存一致性,每次带宽提升都需要顾及所有独立连接,也不利于互联带宽的增加。这种设计在Sandy Bridge时期被intel淘汰。取而代之的是下文介绍的环形总线核心的Westmere架构。在此之后的6核LGA2011旗舰平台采用了环形总线,CPU性能有一定幅度的提升

  两个传输方向相反的环形总线连接所有CPU核心以及外围组件,这种设计显著降低了复杂度,一方面能节约芯片面积降低成本,另一方面也可以在同样的芯片面积下提高带宽。缺点是随着环形连接的核心数增加,线路长度增加,访问缓存和内存的延迟将因此增大。intel通过将两个12核环形总线互联将环形总线核的巅峰——Broadwell-EP HCC核心,然而单环形12核延迟已经很大,跨环形总线的缓存访问延迟也非常高。显然环形总线不能适应核心数迅速增长的要求。

  以网格形状的总线连接每个核心。这种设计明显提高了CPU核心片内总线互联的限制,缓存延迟一致性相比EPYC的环形总线Chiplet、基板IF总线互联方案明显更加优秀。缺点是相比环形总线,这种设计更耗费芯片面积,会造成成本增加。由于CPU核心数不断增加,intel从Skylake-SP开始在至强CPU内使用了网状总线的设计,保证较高的缓存性能。

  早期CPU的内存控制器原本集成在主板北桥上,随着内存速度提高和CPU对内存带宽、延迟的要求增加,现在CPU普遍将内存控制器集成在CPU内部。部分CPU通过外置IO核心的方法有效降低了CPU的生产成本。

  包括PCI-E控制器、DMI控制器、内存控制器和显示输出等原本集成在主板北桥的结构。其运行频率和核心电压独立于CPU运算核心之外。DMI总线是intel CPU用于与主板南桥互联的结构。某些AMD高端CPU的整个System Agent结构外置于制程工艺较落后的IO核心,具体结构见下图。

  核显可以提供显示功能,高性能核显性能甚至可以超过中低端独立显卡。对于用得到核显的用户,核显无疑是非常好的成本降低方案,但对于不需要核显的用户,核显只能造成芯片面积的白白浪费。许多旗舰CPU考虑到市场定位,并不集成核显。部分核显还会集成小容量的独立显存,但大多数核显完全依赖系统内存作为显存,对带宽和容量要求较高。

  Core i7-5775C,CPU核心下方的小芯片是128MB eDRAM,核显启用的情况下作为高速显存使用。大部分显存功能仍由内存承担

  一些CPU能够最终靠多路互联提升系统多核性能。intel部分至强CPU配备了QPI/UPI总线,实现多CPU互联。AMD EPYC系列大部分型号能够最终靠IF总线互联两颗CPU。多CPU计算节点内互联延迟一般低于计算节点间的互联,但仍然远大于CPU访问本地缓存和内存控制器。多路系统能运用NUMA配置方式,这样的形式使CPU优先访问本地内存,从而提升某些应用场景下的性能表现。

上一篇:隐藏在壳中的本相!暴力拆解揭开CPU中心隐秘
下一篇:【48812】2024年4月24日15:00:00整点路况信息汇总