半导体行业观察@这篇说得最详细,关于CPU科普

来源:内容由半导体行业观察(icbank)编译自「techspot」 , 谢谢 。
CPU通常被称为计算机的大脑 , 就像人的大脑一样 , 它由几个部分组成 , 其中包括接收信息的部分 , 存储信息的部分 , 处理信息的部分 , 帮助输出信息的部分等等 。 这些部分协同工作以处理信息 。
在今天的解文章中 , 我们将介绍构成CPU的关键元素以及它们如何共同为计算机提供动能 。
半导体行业观察@这篇说得最详细,关于CPU科普
文章图片
CPU蓝图:ISA
分析任何CPU时 , 您首先遇到的就是指令集体系结构(ISA) 。 这是有关CPU如何运行以及所有内部系统如何交互的图形化蓝图 。 就像同一物种中有许多品种的狗一样 , 可以在CPU上构建许多不同类型的ISA 。 两种最常见的类型是x86(在台式机和笔记本电脑中找到)和ARM(在嵌入式和移动设备中找到) 。
还有其他一些像MIPS , RISC-V和PowerPC这样的小众应用程序 。 ISA将指定CPU可以处理哪些指令 , 如何与内存和缓存交互 , 如何在多个处理阶段划分工作等等 。
为了覆盖CPU的主要部分 , 我们将遵循一条指令在执行时所采用的路径 。 不同类型的指令可能遵循不同的路径 , 并使用CPU的不同部分 , 但在这里我们将进行概括以涵盖最大部分 。 我们将从单核处理器的最基本设计开始 , 并随着我们朝着更现代的设计逐步增加复杂性 。
控制单元和数据路径
CPU可以分为两部分:控制单元和数据路径 。 想象一辆火车 。 引擎是火车的动力来源 , 但指挥员却在幕后拉动操纵杆并控制引擎的各个方面 。 CPU是相同的方式 。
数据路径就像引擎一样 , 顾名思义 , 是数据在处理过程中流动的路径 。 数据路径接收输入 , 处理它们 , 并在完成后将它们发送到正确的位置 。 控制单元告诉数据路径如何工作 。 根据指令 , 数据路径会将信号路由到不同的组件 , 打开和关闭数据路径的不同部分 , 并监视CPU的状态 。
半导体行业观察@这篇说得最详细,关于CPU科普
文章图片
指令周期-获取
我们的CPU必须做的第一件事是弄清楚下一步要执行什么指令 , 然后将它们从内存转移到CPU中 。 指令由编译器产生 , 并且特定于CPU的ISA 。 ISA将共享最常见的指令类型 , 例如加载 , 存储 , 加法 , 减法等 , 但是每个特定ISA都有许多其他特殊类型的指令 。 对于每种类型的指令 , 控制单元将知道需要将哪些信号路由到何处 。
例如 , 当您在Windows上运行.exe时 , 该程序的代码将移入内存 , 并且告诉CPU第一条指令的起始地址 。 CPU始终维护一个内部寄存器 , 该寄存器保存要执行的下一条指令的存储器位置 。 这称为程序计数器(PC) 。
一旦知道从哪里开始 , 指令周期的第一步就是获取该指令 。 这会将指令从存储器移到CPU的指令寄存器中 , 这称为提取阶段 。 实际上 , 指令可能已经在CPU的高速缓存中 , 这个我们在后续再介绍 。
指令周期-解码
当CPU有一条指令时 , 它需要专门弄清楚它是什么类型的指令 。 这称为解码阶段 。 每个指令将具有一组称为操作码的特定位 , 该“位”告诉CPU如何解释它 。 这类似于如何使用不同的文件扩展名告诉计算机如何解释文件 。 例如 , .jpg和.png都是图像文件 , 但是它们以不同的方式组织数据 , 因此计算机需要知道类型才能正确解释它们 。
根据ISA的复杂程度 , CPU的指令解码部分可能会变得复杂 。 像RISC-V这样的ISA可能只有几十条指令 , 而x86有数千条指令 。 在典型的Intelx86CPU上 , 解码过程是最具挑战性的过程之一 , 并且占用大量空间 。 CPU将解码的最常见的指令类型是存储器 , 算术或分支指令 。
3种主要指令类型
存储指令可能类似于“将值从存储地址1234读入值A”或“将值B写入存储地址5678” 。 算术指令可能类似于“将值A添加到值B并将结果存储到值C” 。 分支指令可能类似于“如果C值为正 , 则执行此代码;如果C值为负 , 则执行彼代码” 。 一个典型的程序可能将它们链接在一起 , 以产生类似“将结果为肯定的内存地址1234的值添加到内存地址5678的值 , 并将其存储在内存地址4321的结果 , 如果结果为负的则存储在地址8765的东西” 。


推荐阅读