计算机体系结构与CPU工作原理

《嵌入式C语言自我修养:从芯片、编译器到操作系统》读书笔记。

目录

CPU的内部结构

存储器

易失性存储器:

非易失性存储器:

计算机架构

冯.诺伊曼架构

哈弗架构

混合架构

CPU性能提升:Cache

为何有些处理器没有Cache?

CPU性能提升:流水线

超流水线技术

流水线冒险:

多核CPU

异构计算机

地址与总线

总线

总线编址方式

指令集与微架构

微架构


CPU的内部结构

ALU(算术逻辑单元)、控制单元、寄存器、Cache(缓存)

存储器

易失性存储器:

  • SRAM、DDR SDRAM等
  • 一般用作计算机内部存储所以被称为内存
  • 特点:1,支持随机访问;2,掉电数据会丢失

非易失性存储器:

  • 磁盘、flash等
  • 一般用作计算机外部存储所以被称为外存
  • 特点:1,不支持随机访问;2,掉电数据不丢失;3,读写速度不如内存。

计算机系统一般会采用内存+外存的存储结构:程序指令保存外存,当程序运行时,相应的程序会首先加载到内存,然后CPU从内存一条一条地取指令、翻译指令和运行指令。

计算机架构

冯.诺伊曼架构

 指令和数据存放到同一个存储器的不同的物理地址上。结构简单,工程容易实现。

典型:x86、ARM7、MIPS等

哈弗架构

指令和数据被分开独立存储,它们分别被存放到程序存储器和数据存储器。每个存储器都独立编址,独立访问,而且指令和数据可以在一个时钟周期内并行访问。使用哈弗架构的处理器运行效率更高,但缺点是CPU实现会更加复杂。

典型:8051系列的单片机。

混合架构

CPU工作频率越来越高RAM跟不上CPU运行速度,为提高计算机的整体效率引入Cache机制:指令Cache和数据Cache。

RAM一次将向Cache传送一批数据,CPU到Cache中在取指令和数据,如果CPU发现Cache中没有在去RAM中读取。

CPU写数据时会先写入Cache中,等待时机将Cache中数据刷新到RAM中。

CPU性能提升:Cache

Cache本质时是SRAM。Cache运行速度介于CPU和DRAM之间,插入在CPU和内存之间,用于解决两者速度不匹配问题。

Cahce里存储的内存地址,一般经过地址映射转化为已存储和检索的形式。

CPU为进一步提高性能大多数采取多级Cache:一级Cache、二级Cache、甚至三级Cache。

为何有些处理器没有Cache?

C51、Corttex-M0等MCU的处理器没有Cache。

原因:

1,处理器是低功耗、低成本。增加cache会增加功耗和成本。

2,处理器自身的工作频率不高。

3,Cache无法保证实时性。嵌入式实时控制场景无法接受。

CPU性能提升:流水线

一条指令执行分为三个步骤:取指令、翻译指令、执行指令

CPU内部三个单元:取指单元、译码单元、执行单元

流水线:

第一个时钟周期取指单元工作,取指令1,其余空闲状态。

第二个时钟周期取指单元工作取指令2,译码单元也开始工作,开始翻译指令1。

第三个时钟周期取值单元工作取指令3,译码单元开始工作,翻译指令2,执行单元开始执行指令1.

超流水线技术

五级以上的流水线被称为超流水线。高性能处理器一般采用这种流水线。

Intel的i7处理器采用16级流水线,AMD的速龙64采用20级流水线,Intel的第三代奔腾四处理器有31级,被称为史上最长的流水线。

执行的程序指令如果是顺序结构的,没有中断或跳转,流水线确实可以提高执行效率。但是当程序指令中存在跳转、分支结构时,下面预取的指令可能就要全部丢掉了,需要到跳转的地方重新取指令执行。

流水线冒险:

流水线越深,一旦预取指令失败,浪费和损失就会越严重,因为流水线中预取的几十条指令可能都要丢弃掉,此时流水线就发生了停顿,无法按照预期继续执行,这种情况我们一般称为流水线冒险(hazard)。

结构冒险:所需要的硬件正在为前面的指令工作。

数据冒险:当前指令需要前面指令的运算数据才能执行。

控制冒险:需根据之前指令的执行结果决定下一步的行为。

多核CPU

单核的瓶颈:

在相同的半导体工艺制程下,芯片的面积越大,芯片的良品率就越低,芯片的成本就会越高,功耗也会越大。CPU性能提升受限。

单核处理器主频每升1GHz,平均就要增加25W的功率。通过增加处理器核数,将大量繁重的计算任务分配到更多的Core上,可以提高处理器的整体性能。而根据阿姆达尔定律,程序中并行代码的比例又决定了增加处理器核数所能带来的性能提升上限,CPU的核数不一定越多越好,任务分配不当就可能造成“一核有难,八核围观”的尴尬场面。

异构计算机

异构计算机:在SoC芯片内部集成不同的架构Core,如DSP、GPU、NPU、TPU等不同的架构处理单元。

GPU(Graphic Process Unit,图形处理单元)主要用来处理图像数据。

GPU在浮点运算、大数据处理、密码破解、人工智能等领域都是一把好手,比CPU更适合做大规模并行的数据运算

DSP(Digital Signal Processing,数字信号处理器),主要用在音频信号处理和通信领域。如手机的基带信号处理

FPGA(Field Programmable Gate Array,现场可编程门阵列)在专用集成电路(Application Specific Integrated Circuit,ASIC)领域中是以一种半定制电路的形式出现的。FPGA与DSP相比,开发更具有灵活性,但成本也随之上升,上手也比较难,因此主要用在一些军事设备、高端电子设备、高速信号采集和图像处理领域。

TPU(Tensor Processing Unit,张量处理器)是Google公司为提高深层网络的运算能力而专门研发的一款ASIC芯片。

NPU(Neural Network Processing Unit,神经网络处理器)是面向人工智能领域,基于神经网络算法,进行硬件加速的处理器统称。NPU使用电路来模拟人类的神经元和突触结构,用自己指令集中的专有指令直接处理大规模的神经元和突触。

地址与总线

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

总线

总线是各种数字信号的集合,包括地址信号、数据信号、控制信号等。CPU通过总线与内存RAM、外部设备相连。

总线编址方式

计算机如何给设备分配地址的?

两种编址方式:

统一编址:内存RAM和外部设备共享CPU的寻址空间。 ARM、MIPS架构采用这种方式编址。

独立编址:内存RAM和外部设备分别占用不同的地址空间。例如,X86架构CPU。

指令集与微架构

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

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

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

● 指令的分发、预取、解码、执行、写回。

● 操作数的类型、存储、存取、旁路转移。

● Load/Store架构。

● 寄存器。

● 地址的格式、大端模式、小端模式。

● 字节对齐、边界对齐等。

微架构

微架构,对应的英文是Microarchitecture,也就是处理器架构。集成电路工程师在设计处理器时,会按照指令集规定的指令,设计具体的译码和运算电路来支持这些指令的运行;指令集在CPU处理器内部的具体硬件电路的实现,我们就称为微架构。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星期天电子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值