多核处理器也称片上多核处理器(Chip Multi-Processor,CMP)。

多核处理器的流行

多核出现前,商业化处理器都致力于单核处理器的发展,其性能已经发挥到极致,仅仅提高单核芯片的速度会产生过多热量且无法带来相应性能改善,但CPU性能需求大于CPU发展速度。尽管增加流水线提高频率,但缓存增加和漏电流控制不力造成功率大幅增加,性能反而不如之前低频率的CPU。功率增加,散热问题也严重了,风冷已经不能解决问题了。

那么新技术必须出现-多核处理器。早在1996年就有第一款多核CPU原型Hydra。2001年IBM推出第一个商用多核处理器POWER4,2005年Intal和AMD多核处理器大规模应用。

多核处理器越来越流行,无论在服务器、桌面、上网本、平板、手机还是医疗设备、国防、航天等方面。

我们来了解一下基础知识。

多核处理器分类-同构、异构

从硬件的角度来看,多核设计分为两类。

  • 如果所有的核心或CPU具有相同的构架,那么定义为同构多核(homogeneous);
  • 如果架构不同,那么称为异构(heterogeneous)多核。

从应用来看,同构多核处理器中大多数由通用处理器核构成,每个核可以独立运行,类似单核处理器。而异构多核处理器往往同时继承了通用处理器、DSP、FPGA、媒体处理器、网络处理器等。每个内核针对不同的需求设定的,从而提高应用的计算性能或实时性能。

目前的异构多处理器有:TI的达芬奇平台DM6000系列(ARM9+DSP)、Xilinx的Zynq7000系列(双核Cortex-A9+FPGA)、Cell处理器(1个64位POWERPC+8个32位协处理器)等等。

同构多处理器就比较多了,Exynos4412,freescale i.mx6 dual和quad系列、TI的OMAP4460等,Intel的Core Duo、Core2 Duo等。

多核处理器运行模式-SMP、AMP、BMP

从软件的角度来看,多核处理器的运行模式有三种:

  • SMP:对称多处理,symmetric multi-processing
  • AMP:非对称多处理,asymmetric multi-processing
  • BMP:混合多处理,bound multi-processing
运行模式 名称 意义 特点
SMP Symmetric Multi-Processing 对称多处理器结构 每个CPU内核运行一个独立的操作系统或同一操作系统的独立实例(instantiation)
AMP Asymmetric Multi-Processing 非对称多处理器结构 一个操作系统的实例可以同时管理所有CPU内核,且应用并不绑定某一个内核。
BMP Bound Multi-Processing 混合多处理器结构 一个操作系统的实例可以同时管理所有CPU内核,但每个应用被锁定于某个指定的核心(具有明确的边界)

简单的解释一下:

  • AMP-多个核心相对独立的运行不同的任务,每个核心可能运行不同的操作系统或裸机程序,或者不同版本的操作系统。但是有一个主要核心,用来控制整个系统以及其它从核心。具有主从模式。

举个例子,比如一个主要核心控制用户界面UI,从核心控制数据采集以及输出。还有POS机,一个负责UI,一个负责交易。也就是两者负责不同的任务。每个核心有自己的内存空间(同时会有共享的内存空间),另外两者之间还有一定的通信机制。从硬件上来说,这种多处理模式可能是同构的,也可能是异构的,但大多情况是异构多处理器。如MCU+DSP,MCU+FPGA等。同构的当然也有。比如Xilinx就提供了案例,Sun公司的Solari4.1.3系统也支持AMP模式(从主从角度来看,而不是多个操作系统)。Mars Board也可以运行AMP模式。

  • SMP-对称多处理,这个是目前用的最多的,一个OS同等的管理各个内核,为各个内核分配工作负载。目前,大多数的系统都支持SMP模式,如Linux,Vxworks,windows。这种模式就是简单提高运行性能。比如PC机上双核、四核运行windows,linux等。所有的核心共享内存。另外,这种模式的通常都是同构多核处理器,因为异构的结构不同,实现比较复杂。

  • BMP-边界多处理,和SMP类似,也是一个OS管理所有内核,但是不同的是,BMP中,开发者可以指定将某个任务仅在某个指定内核上执行。

可按我自己的理解,Linux(操作系统)可以将线程(任务)绑定到某个CPU执行(这种特性叫做:“CPU亲和性”),这是否是一种BMP-SMP转换呢?

上述三种模式都有其各自的优点和缺点。每一个模式适合于解决某方面的特定问题,而且对操作系统的要求也各不相同。

相关术语

CPU和处理器(Processor)在一般的计算机技术文档中是同义词,但是在SMP硬件平台上对两者进行区分有助于准确描述问题,同时我们还定义了其它几个术语:

CPU:特指一个硅处理单元,该单元可以执行程序指令和处理数据,和多核(Multi-Core)中的核(Core)是同义词,本文对Core和CPU不加区分;

  • 处理器(Processor):指一个物理硅片,里面可能会包含一个或者多个CPU;

  • 单核处理器(Uniprocessor):指的是一个物理硅片,该硅片中仅仅含有一个CPU;

  • 多处理器(Multiprocessor):指的是一个硬件系统,其中可以包含有多个处理器(Processor);

SMP硬件平台:指的是包含SMP处理器的硬件系统,SMP处理器可以是一个对称多核处理器,也可以是多个对等的单核处理器构成。CPU之间、或者单核处理器之间的地位平等,即它们平等的访问内存和外设资源,硬件系统的内存结构必须是UMA(一致内存访问)体系结构。

在嵌入式业内多核处理器更多的是指对称多核处理器,例如:

A:以ZedBoard 开发板是一个SMP硬件平台,该平台使用的双核处理器是一个多核处理器(Multicore Processor),在该处理器中集成了两个CPU(即Core),这两个Core都是Core-A9架构的。

B:以ZC106 开发板 是一个 AMP硬件平台,该平台使用的双核处理器是一个多核处理器(Multicore Processor),在该处理器中集成了两个CPU(即Core),一个 是 Cortex-A9架构的核,另外一个Cortex-R5 的核。

AP:Application Processor,应用处理器

BP:Baseband Processor,基带处理器

GPU:图像处理单元,Graphic Processor Unit,

有的PC芯片会将CPU和GPU集成起来,在手机中将AP和BP集成在一个硅片中。

Soc-System On Chip,片上系统;将CPU和一些外围器件集成到一个硅片中。

参考

多核处理器基础SMP&AMP&BMP

SMP与AMP体系结构

多核处理器与MP架构的更多相关文章

  1. 多核处理器基础SMP&AMP&BMP

    多核处理器也称片上多核处理器(Chip Multi-Processor,CMP). 1.多核处理器的流行 多核出现前,商业化处理器都致力于单核处理器的发展,其性能已经发挥到极致,仅仅提高单核芯片的速度 ...

  2. [py]你真的了解多核处理器吗? 了解多线程

    越来越多的人搞爬虫,设计到多线程爬取, 还有一些机器学习的一些模块也需要这玩意, 感觉自己不会逼格不高. 抽时间赶紧玩一玩这东西, 希望提高对软件的认知和归属感,不要太傻. cpu内部架构参考 你知道 ...

  3. [转帖]AMD、英特尔为何争相走向胶水多核处理器?真相在此

    AMD.英特尔为何争相走向胶水多核处理器?真相在此 胶水多核到底好不好?这个事不是简单一句话能说明的,今天的超能课堂里我们就来聊聊MCM胶水多核技术的过去及未来. 作者:孟宪瑞来源:超能网|2018- ...

  4. Linux 的 Spinlock 在 MIPS 多核处理器中的设计与实现

    引言 随着科技的发展,尤其是在嵌入式领域,高性能.低功耗的处理器成为众多厂商追逐的目标,但是由于技术和工艺的瓶颈,试图在单核处理器上达到这样的目标变得越发困难,于是人们提出了多核处理器的概念.多核处理 ...

  5. 225-基于XCVU440T的多核处理器多输入芯片验证板卡

    225-基于XCVU440T的多核处理器多输入芯片验证板卡   基于XCVU440T的多核处理器多输入芯片验证板卡 一.板卡概述 本板卡系我司自主研发的基于6U CPCI处理板,适用于多核处理器多输入 ...

  6. 编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器)

    [目录] 不考虑其他进程,cpu画正弦曲线 获取总体cpu利用率 获取多核处理器单个cpu利用率 考虑其他进程,cpu画正弦曲线 下面的程序针对多核处理器,可以设置让任何一个cpu显示相应的曲线(本文 ...

  7. Python如何利用多核处理器

    Python中,如果想使程序充分利用多核处理器,有以下几个方案: l 使用threading模块,然后将程序运行在IronPython或Jython之上. l 使用Python自带的multiproc ...

  8. 让cpu占用率曲线听你指挥(多核处理器)

    编程之美 1.1 让cpu占用率曲线听你指挥(多核处理器) [版权声明]转载请注明出处 http://www.cnblogs.com/TenosDoIt/p/3242910.html  [目录] 不考 ...

  9. 【DSP开发】硬件信号量在多核处理器核间通信中的应用

    硬件信号量在多核处理器核间通信中的应用 刘德保1,汪安民1,韩道文2 1.同方电子科技有限公司研究所,九江 332009:2.解放军电子工程学院 摘要: 在多核处理器的软件设计中,核间通信机制是关键所 ...

  10. ASM:《X86汇编语言-从实模式到保护模式》第10章:32位x86处理器的编程架构

    ★PART1:32位的x86处理器执行方式和架构 1. 寄存器的拓展(IA-32) 从80386开始,处理器内的寄存器从16位拓展到32位,命名其实就是在前面加上e(Extend)就好了,8个通用寄存 ...

随机推荐

  1. STM32定时器原理

    一.简介 不同的芯片定时器的数量不同,STM32F10x中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器. 基本定时器:TIM6. ...

  2. 题解:ssy的队列

    题目链接 题目描述 SSY是班集体育委员,总喜欢把班级同学排成各种奇怪的队形,现在班级里有 \(N\) 个身高互不相同的同学,请你求出这 \(N\) 个人的所有排列中任意两个相邻同学的身高差均不为给定 ...

  3. ctfshow_web_1(困难题)

    CTFshow web1(困难题) 根据前面做题经验,看见登录框基本都是跑一下爆破,弱口令等等 这里用 dirmap 目录爆破爆出来有一个 www.zip 把他下载下来 看了 login.php 和 ...

  4. JSON返回结果修改null为"";json字段为null时输出空字符串

    简介 (Introduction): 背景 json字符串返回的需要"",但是却是null,怎么处理呢,如下 结构图 1 [ 2 { 3 "1":{ 4 &qu ...

  5. 关于.net Core在华为云的鲲鹏服务器上部署的细节纪要

    由于鲲鹏使用的是ARM的cpu,,非x86的,我们公司买的是Centos,,由于需要在上面部署.net core 3.0/3.1的应用,,在按照官方的文章进行部署之后,会提示 FailFast: Co ...

  6. TypeScript入门介绍

    目录 TypeScript入门介绍 什么是 TypeScript? 发展历史 优缺点 应用场景 开发工具 环境依赖 编程IDE vs调试 构建工具/工程化 步骤汇总 第一个项目 TypeScript入 ...

  7. 构建自定义镜像并优化dockerfile文件

    目录 一.系统环境 二.前言 三.镜像构建步骤 四.dockerfile文件常用指令 4.1 dockerfile文件常用指令 4.2 RUN.CMD.ENTRYPOINT的区别 五.构建centos ...

  8. 阿里巴巴 MySQL 数据库之索引规约 (二)

    索引规约 强制部分 [强制] 业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引. 说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的:另外 ...

  9. Android 12(S) MultiMedia(十四)ESQueue

    之前看到在ATSParser::Pogram::Stream中会创建一个ESQueue,用于存储解析出来的ES data,这个ESQueue到底是用来做什么的呢?这节就来研究研究. 1.构造函数 ES ...

  10. Vue3.0极速入门(一) - 环境安装&新建项目

    Vue介绍 Vue.js 是什么 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只 ...