计算机组成结构—多处理器

目录

一、SISD、SIMD、MIMD 和向量处理器

1. 费林分类法

2. SIMD 和向量处理器

二、硬件多线程

三、多核处理器和 SMP

1. 多核处理器

2. 共享内存多处理器(SMP)

3. MPP 和集群


一、SISD、SIMD、MIMD 和向量处理器

        通过改进系统结构,可以有效地提升计算机的性能,一个方向就是 并行处理。指令流水线就是一种典型的并行处理技术,它提供的是 指令 的并行;而另一种思路则是考虑让 数据 的处理并行起来。

1. 费林分类法

        美国计算机科学家迈克尔 · 费林(Michael Flynn)根据指令和数据是否并行,将计算机体系结构分为四类:

  • SISD(Single Instruction stream, Single Data stream)单指令流单数据流。普通的串行执行结构,CPU 同时只能执行一条指令,处理一条数据;

  • SIMD(Single Instruction stream, Multiple Data streams)单指令流多数据流。单条指令可以同时对应处理多个数据,从而实现了数据的并行处理;

  • MISD(Multiple Instruction streams, Single Data stream)多指令流单数据流。多条指令同时执行,但只处理一条数据,这种架构非常罕见,只是作为一种理论模型;

  • MIMD(Multiple Instruction streams, Multiple Data streams)多指令流多数据流。同时执行多条不同的指令,它们分别处理不同的数据;这种方式实现了线程、指令和数据的全方位并行处理。

2. SIMD 和向量处理器

        SIMD 的特点是,设置了多个并行的执行单元,而所有的执行单元都是同步的,执行的指令从同一个 PC 中取出,由同一个控制单元来进行调度管理。SIMD 对应的程序设计风格可以跟 SISD 非常相近,但要求程序中必须存在大量同构的数据,以便实现 数据级并行

        向量处理器是 SIMD 架构的一种具体实现,可以并行执行一组数据(向量)的计算任务。

        向量处理器的基本原理是,从主存中收集数据,将它们按照顺序放到一组 向量寄存器 中,使用流水线式的执行单元在寄存器中依次进行操作,然后将结果写回主存。

二、硬件多线程

        相比 SIMD,MIMD 提高了更高的并行程度。MIMD 需要同时执行不同的指令流,这就要依赖多个 进程(process) 或者 线程(thread) 同时执行,让处理器时刻保持忙碌状态。

        对于一个处理器,可以允许多个线程以重叠的方式,共享处理器的功能部件;当一个线程停顿时,就切换到另一个线程,从而更加充分地利用了硬件资源。这种技术就称为 硬件多线程(hardware multithreading)。

        在支持硬件多线程的 CPU 中,需要为每个线程提供单独的寄存器堆和 PC 等资源,这样就可以在共享资源的同时保持线程的独立状态。

        硬件多线程主要有两种实现方法。

  • 细粒度多线程

        每条指令执行后就进行线程切换,从而实现多线程在时间上的交叉执行。这种交叉执行是轮转进行的,并且会跳过停顿的任何线程。

  • 粗粒度多线程

        仅在发生高开销的停顿时(例如末级 cache 失效),才进行线程切换。对于流水线中的停顿,需要清空或者冻结流水线,因此流水线的重启开销比较大。

        除此之外,硬件多线程还可以结合流水线多发技术,进一步降低成本、提高并行效率,这就是 同时多线程(Simultaneous Multithreading,SMT)。同时多线程是硬件多线程的一种变体,它结合使用多发射、动态调度流水线的处理器资源,来实现 线程级指令级 并行。

        英特尔(Intel)公司的 “ 超线程 “(Hyper-Threading)技术,就是一种在单个 CPU 上实现硬件多线程的方式。

三、多核处理器和 SMP

1. 多核处理器

        另一种实现线程级并行的方式,就是在一个处理器芯片上,集成多个处理单元。为了区分不同的概念,每个处理单元就称为一个 ” “(core),有多个核的处理器就被称为 多核处理器

        要想充分利用多核处理器的性能,应该采用多线程的方式执行程序。这样,多个线程可以在不同的核上并行执行,大大提升运行效率。

        多核处理器一般也采用硬件多线程技术,为了进行区分,有时会将单个核心上同时运行多个线程称为有多个 ”逻辑内核“,而对应的真正的核心则称为 ”物理内核“。

        在多核处理器中,一般所有内核会有自己独立的寄存器和 L1、L2 缓存,而共享更低级的 cache(L3)和主存。  

        如果不对处理单元进行集成,也可以用同样的架构将多个处理器联合在一起,这就是所谓的 多处理器。广义上讲,多核处理器也是一种多处理器。

2. 共享内存多处理器(SMP)

        编写运行在多处理器上的并行程序会更加复杂。在架构上,一个很重要的影响因素是,是否为所有处理器提供一个共享的统一物理地址空间;换句话说,所有处理器(核心)是否可以访问同一个主存储器。于是多处理器又可以划分为两种架构。

        共享内存多处理器(Shared Memory Processor,SMP)为所有处理器提供统一的物理地址空间。处理器通过存储器中的 共享变量 进行通信,所有处理器都能通过加载(Load)和存储(Store)指令访问任意的主存位置。

        尽管物理地址空间是统一的、共享的,但如果存储器本身也采取了并行架构(例如多模块存储器),不同的处理器对存储器不同部分的访问可能就会有区分。因此 SMP 又可以有两种类型。

  • 统一内存访问(Unified Memory Access,UMA)多处理器

        不管是来自哪个处理器的访存指令,延迟都是一致的。这样,每个处理器对所有存储单元的访问时间都大致相同,是对称的系统架构。

  • 非统一内存访问(Non-Unified Memory Access,NUMA)多处理器

        访存指令的延迟不一致,取决于哪个处理器去访问哪个存储单元。一般架构中,每个处理器(CPU)会单独直接连接一部分主存,称为 本地内存;其它主存部分则通过总线进行访问,称为 远程内存

3. MPP 和集群

        如果不采用共享内存的方式,而是让每个处理器都拥有私有的地址空间,这样就可以让各个处理器更加独立、获得更好的并行性和可扩展性。这种架构被称为 大规模并行处理(Massive Parallel Processing,MPP)。

        采用 MPP 架构的多处理器,必须通过显式的 消息传递 进行通信,因此传统上也把这种类型的计算机称为 显式消息传递计算机

        更进一步,我们可以通过标准网络交换机上的 I/O 接口进行连接,用一组计算机的集合来构建出消息传递多处理器,这种形式就被称为 集群Cluster)。集群是一种分布式系统,已经成为如今并行处理计算机最典型的架构,也是大数据领域的技术基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/685024.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

31|HTTP3:甩掉TCP、TLS 的包袱,构建高效网络

前面两篇文章我们分析了HTTP/1和HTTP/2,在HTTP/2出现之前,开发者需要采取很多变通的方式来解决HTTP/1所存在的问题,不过HTTP/2在2018年就开始得到了大规模的应用,HTTP/1中存在的一大堆缺陷都得到了解决。 HTTP/2的一个核心特性是…

carbondata入库数据查询异常排查

1,背景:carbondata的入库segments对应的状态都是success,但是查询的时候报错, 2,排查内容 1,segments的状态 success 2,任务执行记录日志 正常 3,找到对应查询的天,指定对…

RabbitMQ启动报错:Error during startup: {error, {schema_integrity_check_failed,

报错信息如下: Error during startup: {error,{schema_integrity_check_failed,[{table_attributes_mismatch,rabbit_user,[username,password_hash,tags,hashing_algorithm,limits],[username,password_hash,tags,hashing_algorithm]},{table_attributes_mismatch…

巴拿马太平洋万国博览会学会参加济州论坛 韩国工作会议同期举办

本届论坛以“为更好的世界而合作”为主题,聚焦国际经济、政治、文化等领域的热点问题,寻求合作与发展的新机遇。天狮集团派员参加,将与全球商界领袖、政要名流面对面交流,共同探讨全球合作与发展的新机遇和新挑战。对于中国企业而…

【Vue】普通组件的注册使用-局部注册

文章目录 一、组件注册的两种方式二、使用步骤三、练习 一、组件注册的两种方式 局部注册:只能在注册的组件内使用 ① 创建 .vue 文件 (三个组成部分) 以.vue结尾的组件,一般也叫做 单文件组件,即一个组件就是组件里的全部内容 ② 在使用的组…

Crosslink-NX器件应用连载(9): USB3.0相机

作者:Hello,Panda 大家晚上好,很久没有分享设计案例了,实在是太忙了,精力十分有限,今天分享一个CrosslinkNX系列器件用作USB3.0相机的案例。其实就是分享一下使用CrosslinkNX器件设计USB3.0相机主要有两种…

数值实验的设计与目的,以及算法几种性能指标的含义与区别

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年…

Qt 窗口居中显示

Qt 窗口居中显示 引言一、窗体的setGeometry函数二、计算屏幕中心然后move三、借助QRect计算四、补充知识点 引言 窗口居中可以提供良好的视觉效果、突出重点内容、提升用户导航和操作的便利性,有助于改善用户体验。 Qt一般情况下,其Mainwindow或弹出的…

python调用excel的demo

在本地安装Pycharm之后,新建工程,在main.py中键入如下代码,即可实现Python调用excel: import pandas as pd sheet pd.read_excel(test.xlsx) data sheet.loc[0].values print("读取指定行的数据:\n{0}".format(data)) 第一次编…

传统的老程序员转向人工智能需要准备好这三件事情,你知道吗?

前言 人类文明的进步有时候快的吓人,在我们父辈上街买菜还是以一毛为计量买菜的时代,其实过去了也没有多长时间。现在买菜接近10块为准了,正常在集市上喊着怎么卖?摊主喊着三斤,包含的意思是10块钱三斤。相隔这么多年…

MyEclipse中properties文件中文乱码(Unicode字符)解决办法

程序代码园发文地址:MyEclipse中properties文件中文乱码(Unicode字符)解决办法-程序代码园小说,Java,HTML,Java小工具,程序代码园,http://www.byqws.com/ ,MyEclipse中properties文件中文乱码(Unicode字符)解决办法htt…

TMC5160步进电机驱动芯片

TMC5160步进电机驱动芯片 特点和优势静止态自动降电流stealthChop2 & spreadCycle 驱动stealthChop2 & spreadCycle 驱动1.7 stallGuard2 – 机械负载传感1.8 coolStep –负载自适应电流控制1.9 dcStep –负载相关速度控制1.10 编码器接口 TMC5160工作模式模式 1&#…

【Pytorch】深入Pytorch模型的训练、log、可视化

文章目录 模型训练的模板综合案例-Pytorch 官网demo优化记录日志解析日志增加tensorboard数据记录保存训练曲线模型参数可视化增加wandb数据记录模型训练的模板 综合案例-Pytorch 官网demo pytorch 官网tutorial-quickstart https://blog.csdn.net/weixin_39107270/article/de…

Day30 登录界面设计

​ 本章节,实现了登录界面窗口设计 一.准备登录界面图片素材(透明背景图片) 把准备好的图片放在 Images 文件夹下面,格式分别是 .png和 .icoico 图片,右键属性,生成操作选 内容 png 图片,右键属性,生成操作选 资源 选中 login.png图片鼠标右键,选择属性。生成的操作选…

[学习笔记]知乎文章-PyTorch的Transformer

参考资料: PyTorch的Transformer register_buffer的作用是:登记成员变量,它会自动成为模型中的参数,随着模型移动(gpu/cpu)而移动,但是不会随着梯度进行更新。 参考资料:【Torch API…

Vue3-Vite-ts 前端生成拓扑图vis,复制即用

完整代码&#xff0c;复制即可用&#xff0c;样式自调 试过 jointjs dagre-d3 vis&#xff0c;好用一点&#xff0c;可添加同层的双向箭头 方法1&#xff1a;Vis.js npm install vis-network <template><div id"mynetwork" class"myChart" :st…

C++11:列表初始化 初始化列表initializer_list

前言 2003年C标准委员会曾经提交了一份技术勘误表&#xff08;简称TC1&#xff09;&#xff0c;使得C03这个名字取代了C98成为了C11前最新的C标准名称。不过由于C03主要是对C98标准中的漏洞进行修复&#xff0c;语言的核心部分则没有改动&#xff0c;因此人们习惯性的把两个标准…

HiveQL性能调优-概览

一、铺垫 1、HiveQL 在执行时会转化为各种计算引擎的能够运行的算子&#xff0c;这里以mr引擎为切入点&#xff0c;要想让HiveQL 的效率更高&#xff0c;就要理解HiveQL 是如何转化为MapReduce任务的 2、hive是基于hadoop的&#xff0c;分布式引擎采用mr、spark、tze&#x…

游戏《酒店业领袖》

为快餐连锁店麦当劳&#xff0c;我们创建了一款名为“好客领袖”的游戏。麦当劳的员工可以在网站上注册&#xff0c;并测试自己是否扮演酒店领导的角色&#xff0c;在餐厅可能出现的各种情况下快速做出决定。奖品等待着那些在比赛中表现最好的人。 对于该项目&#xff0c;我们&…

反转链表的三种方法--面试必考(图例超详细解析,小白一看就会!!!)

目录 一、前言 二、题目描述 三、解题方法 ⭐ 头插法 --- 创建新的链表 ⭐ 迭代法 --- 三指针 ⭐ 递归法 四、总结与提炼 五、共勉 一、前言 反转链表这道题&#xff0c;可以说是--链表专题--&#xff0c;最经典的一道题&#xff0c;也是在面试中频率最高的一道题目&…