总线与地址、指令集与微架构

总线与地址

CPU 如果想访问内存,或控制外部设备的运行,该如何操作?通过地址访问即可。在一个计算机系统中,CPU 内部的寄存器没有地址,直接通过寄存器名访问。而内存和外部设备控制器中的寄存器都需要有一个地址,然后 CPU 才能通过地址去读写这些外部设备控制器的寄存器,控制外部设备的运行,或者根据地址去读写指定的内存单元。

地址到底是什么?

以译码器这种组合逻辑电路器件为例:一组输入信号,通过译码转换,会选中一个输出信号,输出信号可以是高电平、低电平,甚至是一个脉冲。计算机的内存简单点理解,其实就是一系列存储单元和译码器组装在一起。内存中包含很多存储单元,为了方便管理,我们需要将这些存储单元进行编号管理,每一个存储单元对应一个编号。当 CPU 想访问其中一个存储单元时,可以通过 CPU 管脚发出一组信号,经过译码器译码,选中与这个信号对应的存储单元,然后就可以直接读写这块内存了。CPU 管脚发出的这组信号,也就是存储单元对应的编号,即地址。通过不同的控制信号,能够选中不同的地址,即选中 RAM 中不同的存储单元,实现 CPU 对 RAM 的随机读写。

地址的本质就是由 CPU 管脚发出的一组地址控制信号。因为这些信号是由 CPU 管脚直接发出的,因此也被称为物理地址。地址信号线的位数决定了寻址空间的大小。

在带有 MMU 的 CPU 平台下,程序运行一般使用的是虚拟地址,MMU 会把虚拟地址转换为物理地址,然后通过 CPU 管脚发送出去,地址信号通过译码,选中指定的内存存储单元,再进行读写操作。

现代计算机 CPU 并非直接与 RAM 相连,而是经过北桥芯片。CPU 处理器和北桥通过系统总线连接,内存 RAM 和北桥通过内存总线连接,CPU 和各个设备之间可以通过共享总线的方式进行通信。

总线是什么?

总线其实就是各种数字信号的集合,包括地址信号、数据信号、控制信号等。一个计算机系统中可能会有各种不同的总线,不同的总线读写时许、工作频率不一样,不同的总线之间通过桥来连接。

桥是什么?

桥一般是一个芯片组电路,用来将总线的电子信号翻译成另一种总线的电子信号。以北桥举例,将 CPU 从系统总线发过来的电子信号转换成内存能识别的内存总线信号,或者显卡能识别的 PCI 总线信号,进而完成后续的数据传输和读写过程。

使用总线有很多优点,总线作为一种工业标准,大大促进了计算机生态的发展。大家生产的设备都采用相同的总线接口,都可以很方便地添加到计算机系统中。

指令集与微架构

图灵原型机的基本思想是:任何复杂的运算都可以分解为有限个基本指令的组合来完成。

不同架构的处理器支持的指令类型是不同的。ARM 架构的处理器只支持 ARM 指令,x86 架构的处理器只支持 x86 指令。CPU 支持的有限个指令的集合,我们称之为指令集。

指令集架构是计算机体系结构的一部分,它是一个标准规范。芯片工程师在设计 CPU 时需要将指令转换为不同的译码电路,指令集最终的实现就是微架构,就是 CPU 内部的各种译码和执行电路。

指令集作为 CPU 和编译器的设计规范和参考标准,主要用来定义指令的格式、操作数的类型、寄存器的分配、地址的格式等。

指令集的价值在于大家都遵守同一个标准去开发计算机系统的不同硬件和软件,这非常有利于整个计算机系统生态的构建:IC 工程师在设计 CPU 处理器时,遵守指令集标准,设计出硬件电路,支持标准规定的各种指令的运行;编译器开发者在开发编译器时,也会遵守指令集标准,将程序员编写的高级语言翻译成 CPU 支持运行的指令。从 CPU 到编译器,从编译器到应用程序,一个完整的计算机系统生态就建立起来了。

什么是微架构?

微架构,也就是处理器架构。集成电路工程师在设计处理器时,会按照指令集规定的指令,设计具体的译码和运算电路来支持这些指令的运行,指令集在 CPU 处理器内部的具体硬件电路的实现,就称为微架构。一套相同的指令集,可以由不同形式的电路实现,即有不同的微架构。

在设计一个微架构时,一般需要考虑很多问题:处理器是否支持分支预测?单发射还是多发射?顺序执行还是乱序执行?流水线多少级?主频需要多高?cache 需要多大?需要几级 cache?根据不同的配置选项,我们可以基于一套指令集设计出不同的微架构。

以 ARM v7 指令集为例,基于该指令集,面向高性能、低功耗等不同的市场定位,ARM 公司设计出了 Cortex-A7、Cortex-A8、Cortex-A9、Cortex-A15、Cortex-A17 等不同的微架构。基于一款相同的微架构,通过不同的配置,也可以设计出不同的处理器类型。不同的 SoC 厂商,获得 ARM 公司 Cortex-A9 微架构授权后,基于该内核集成不同的 IP,就可以搭建出不同的 SoC 芯片。

在这里插入图片描述

ARM 公司自己不生产芯片,也不卖芯片,主要靠 IP 授权盈利,主要有以下三种:

  • 指令集授权。一个芯片厂商购买了指令集授权,可以基于该指令集实现自己的微架构,甚至可以对该指令集进行扩展或缩减。苹果公司的 Swift 微架构、高通公司的 Krait 微架构、三星公司的猫鼬微架构、华为和龙芯。
  • 内核授权/微架构授权。其他芯片公司购买 ARM 所设计的微架构,即 CPU 内核,然后使用 AMBA 总线和各种 IP 模块连接,就可以快速搭建出一个 SoC 芯片。国外的公司有三星、飞思卡尔、ST、德州仪器,国内的公司有海思、瑞芯微、全志、联发科等。微架构授权的特点是客户不能对 ARM 的 CPU 内核(微架构)进行修改。
  • 使用授权。客户可以直接使用已经封装好的 SoC,不仅 CPU 内核的硬件电路已经设计好,连工艺制程、芯片生产厂家也帮你选好了。

猜你喜欢

转载自blog.csdn.net/weixin_39541632/article/details/131386238
今日推荐