处理器基础知识

简介: 先描述下一般处理器的概念,维基百科的定义是 “In computing, a processor is an electronic circuit which performs operations on some external data source, usually memory or some other data stream”。最为常见的处理器有 CPU(可以运行任何程序)、GPU(图形图像处理)和 DSP(处理数字信号),还有专门用来做 DNN 应用神经网络处理器。
本文的知识点比较零散,主要是关于处理器的一些基本知识,大部分内容来源于参考资料并给出了自己的理解和整理。

一,什么是处理器

先描述下一般处理器的概念,维基百科)的定义是 “In computing, a processor is an electronic circuit which performs operations on some external data source, usually memory or some other data stream”。最为常见的处理器有 CPU(可以运行任何程序)、GPU(图形图像处理)和 DSP(处理数字信号),还有专门用来做 DNN 应用神经网络处理器。

处理器或处理单元是对外部数据源(通常是内存或其他数据流)执行操作的电子组件(数字电路)。

CPU 的主要运作原理,不论其外观,都是执行储存于被称为程序里的一系列指令。在此讨论的是遵循普遍的冯·诺伊曼结构(von Neumann architecture)设计的设备。程序以一系列数字储存在计算机存储器中。差不多所有的冯·诺伊曼 CPU 的运作原理可分为四个阶段:提取、解码、执行和写回

而专用处理器就是针对特定应用或者领域的处理器,类似于是我们经常说的 Domain Specific Architecture 的概念。

二,指令集基础

什么是 ISA

指令集(Instruction Set Architecture, ISA)是计算机抽象模型的一部分,它定义了软件如何控制 CPUISA 充当硬件和软件的接口,指示了处理器能够实现什么功能以及如何实现。简单来说,ISA 就是传统上软件和硬件的分界线,是用户和硬件交互的唯一方式。

ISA 定义了硬件支持的数据类型、寄存器、硬件如何管理内存、关键特性(如虚拟内存)、微处理器可以执行哪些指令,以及多个 ISA 实现的输入输出模型。ISA 可以通过添加指令或其他功能或通过添加对更大地址和数据值的支持来扩展。

来源 What is Instruction Set Architecture (ISA)? - Arm

ISA 功能

大多数 ISA(典型如 x86-Intel CPU 的指令集),将程序的行为描述成每条指令都是顺序执行的,一条指令结束后,下一条在开始。

ISA 提供的主要指令可以分为四大类功能:

  1. 执行运算或处理的功能,比如算术操作指令;
  2. 控制程序流,比如循环、判断分支和跳转指令;
  3. 实现数据搬移,如内存到寄存器,寄存器之间数据搬移等指令;
  4. 最后就是一些辅助指令,如 debug、中断和 cache 之类的指令。

三,CPU 设计与实现

整数范围

CPU 数字表示方法是一个设计上的选择,这个选择影响了设备的工作方式。一些早期的数字计算机内部使用电气模型来表示通用的十进制(基于 10进位)记数系统数字。还有一些罕见的计算机使用三进制表示数字。几乎所有的现代的 CPU 使用二进制系统来表示数字,这样数字可以用具有两个值的物理量来表示,例如高低电平等等。

时钟频率

主频=外频×倍频。大部分的 CPU,甚至大部分的时序逻辑设备,本质上都是同步的,即它们被设计和使用的前题是假设都在同一个同步信号中工作。

指令周期(Instruction cycle)

指令周期是指 CPU 要执行一条机器指令经过的步骤,由若干机器周期组成。一般会经历“取指”,“译码”,“发射/执行”和“写回”这些操作。处理器执行程序的过程就是不断重复这几个操作。

指令流水线(Instruction pipeline)

在1978年的 Intel 8086 处理器都只能一次执行单指令。 Intel首次在486芯片中开始使用,原理是:当指令之间不存在相关时,它们在流水线中是可以重叠起来并行执行。

当一条指令,完成了“取指”操作,开始进行“译码”的时候,取指模块就可以取程序的下一条指令了,这样可以让这些模块不至于闲着没用,即指令流水线可以两个以上的指令同时执行(类似车间流水线)。一般的四层流水线架构如下图所示,不同的颜色格表示不同的指令

指令并行(Instruction-level parallelism)

同时执行多条指令。比如,一边从 memory 读数据,一边进行 fft 处理。我们经常听到的超标量(Superscalar),超长指令字(VLIW),乱序执行( Out-of-order execution)等等技术都是发掘指令级并行的技术。

数据并行(Data parallelism):

一个人指令同时处理多个数据。我们常听到的向量处理器(vector procesor),张量处理器(Tensor processor)多数都是利用了 SIMD一条指令可以处理多个数据,比如一个向量乘法)技术。

并发与并行

并发与并行的通俗理解参考知乎问答-指令级并行,线程级并行,数据级并行区别?线程的概念是什么?如下:

线程级并行(Thread-Lever Parallelism)

线程级并行主要由下面两种技术的支撑:

  1. 超线程技术:2004年,奔腾4实现了Hyper-Threading.(单核心双线程)
  2. 多核技术-物理核心: 2005年,英特尔宣布他的第一个双核心 EM64T 处理器,和 Pentium D840
超线程技术实现了单个物理核心同时两个线程,也就是别人常说的虚拟内核数。比如单物理核心实现的双线程,它同时可以处理两个线程,它的物理核心数其实是是1个,通过Hyperthreading技术实现的线程级并行(Thread Lever Parallelism)。至于技术细节的实现,这涉及到高速缓存的知识。

线程级并行的好处:

  • 当运行多任务时,它减少了之前的操作系统模拟出来的并发,那么用户进行多任务处理时可以运行更多的程序进行并发了。
  • 它可以使单个程序运行更快。(仅当该程序有大量线程可以并行处理时)
虽然在 1960 年代已经通过操作系统已经实现了线程级并发, 但这种频繁的上下文切换意味损失了 CPU 的处理效率。

性能

CPU 的性能和速度取决于时钟频率(一般以赫兹或十亿赫兹计算,即 hzGhz)和每周期可处理的指令IPC),两者合并起来就是每秒可处理的指令(IPS)。IPS 值代表了 CPU 在几种人工指令序列下“高峰期”的执行率,指示和应用。

参考资料

  1. 深入理解计算机系统-第三版
  2. 专用处理器设计
  3. https://www.zhihu.com/question/21823699/answer/111606716
文章首发于我的 github 仓库-cv算法工程师成长之路,欢迎关注我的公众号-嵌入式视觉。
本人水平有限,文章如有问题,欢迎及时指出。如果看完文章有所收获,一定要先点赞后收藏。毕竟,赠人玫瑰,手有余香。
相关文章
|
3月前
|
传感器 安全 网络安全
《边缘安全深耕:零信任落地全维度解析》
本文聚焦制造业边缘设备安全痛点,结合实际项目实践,阐述零信任架构的落地路径与实战经验。制造业边缘环境存在设备身份管理缺失、权限控制粗放、通信安全漏洞等核心问题,传统防护难以适配异构互联、高连续性需求的场景。文章提出“身份锚定-动态授权-通信加密”三位一体方案,通过设备身份治理、权限体系重构、端到端加密筑牢安全基础,搭配“流量基线+行为建模”威胁检测策略及兼容性优化方案,解决老旧设备改造、误报率控制等实操难题。
180 0
|
9月前
|
人工智能 安全 5G
5G网络安全全解析——新机遇与潜在风险
5G网络安全全解析——新机遇与潜在风险
384 4
|
6月前
|
机器学习/深度学习 人工智能 自然语言处理
从五子棋到DeepSeek:揭开模式匹配的奥秘
本文通过五子棋AI与大语言模型DeepSeek的对比,探讨了模式匹配技术在不同领域的应用与相似性。从五子棋的棋局分析到自然语言处理,模式匹配构成了人工智能决策的核心机制。文章揭示了AI如何通过识别数据中的规律进行预测与生成,并展望了该技术在未来医疗、金融、自动驾驶等领域的广泛应用前景,展现了从简单游戏到智能世界的演进路径。
304 2
|
10月前
|
SQL 关系型数据库 MySQL
seatunnel配置mysql2hive
本文介绍了SeaTunnel的安装与使用教程,涵盖从安装、配置到数据同步的全过程。主要内容包括: 1. **SeaTunnel安装**:详细描述了下载、解压及配置连接器等步骤。 2. **模拟数据到Hive (fake2hive)**:通过编辑测试脚本,将模拟数据写入Hive表。 3. **MySQL到控制台 (mysql2console)**:创建配置文件并执行命令,将MySQL数据输出到控制台。 4. **MySQL到Hive (mysql2hive)**:创建Hive表,配置并启动同步任务,支持单表和多表同步。
|
10月前
|
人工智能 运维 云计算
全新无影,来了!
全新无影,来了!
|
缓存 Kubernetes 容灾
如何基于服务网格构建高可用架构
分享如何利用服务网格构建更强更全面的高可用架构
|
Go API 数据库
Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
本文介绍了 Go 语言中常用的 ORM 框架,如 GORM、XORM 和 BeeORM,分析了它们的特点、优势及不足,并从功能特性、性能表现、易用性和社区活跃度等方面进行了比较,旨在帮助开发者根据项目需求选择合适的 ORM 框架。
1288 4
|
安全 前端开发 JavaScript
什么是 CSRF 攻击?如何启用 CSRF 保护来抵御该攻击?
什么是 CSRF 攻击?如何启用 CSRF 保护来抵御该攻击?
1862 5
|
监控 安全 应用服务中间件
如何配置HTTPS协议?
如何配置HTTPS协议?
1760 4
|
存储 缓存 移动开发
别催更啦!手淘全链路性能优化下篇--容器极速之路
历时1年,上百万行代码!首次揭秘手淘全链路性能优化(上)我们重点介绍了手淘在性能优化中的一些实践和思路,主要集中在原生的代码的优化,这次,我们将继续分享在手淘容器化页面如 H5 及 Weex 相关的优化实践。
别催更啦!手淘全链路性能优化下篇--容器极速之路

热门文章

最新文章