并行多核体系结构基础知识

news2024/11/15 8:53:23

目录

    • 分类
      • MIMD计算机分类
    • 并行编程
      • 并行编程模型
      • 共享存储并行模型
      • 针对LDS的并行编程
    • 存储层次结构
    • 缓存一致性和同步原语
      • 缓存一致性基础
      • 对同步的硬件支持
    • 存储一致性模型和缓存一致性解决方案
      • 存储一致性模型
      • 高级缓存一致性设计
    • 互连网络体系结构
      • 分布式操作系统
    • SIMT体系结构

分类

根据Flynn分类法

Flynn分类法根据指令流和数据流的数量定义了并行计算机的分类。

数据流数量
指令流数量SISDSIMD
MISDMIMD

SISD:单指令流单数据流。上古架构。

SIMD:单指令流多数据流。一般在GPU中,如Intel MMX/SSEAMD 3DNow!等。

MISD:多指令流单数据流。很难应用,如iWarp

MIMD:多指令流多数据流。

MIMD计算机分类

根据处理器数量,将共享式存储器的处理器分为两类:SMP/UMADSM/NUMA

SMP/UMA:共享存储器多处理器,或集中式共享存储器多处理器或一致性存储器访问多处理器(一般核心数量不超过8个)。共享缓存和主存储器。

DSM/NUMA:多处理器采用物理分布式存储器,称为分布式共享存储器,也称为非一致性存储器访问。

并行编程

从根本上来讲,以并行方式执行算法或代码的期望是获得比串行算法或代码更短的执行时间,一种分析并行程序执行时间的有用工具是Amdahl定律

并行编程模型

共享存储和消息传递模型。

共享存储模型:不同线程或进行执行的并行任务能够访问内存的任何位置,它们可以通过写入和读取内存位置实现相互间的隐式通信(类似于同属一个进程的多个线程间共享地址空间)

消息传递模型:线程拥有各自的本地内存,一个线程不能访问另一个线程的内存。当线程间为了交换数据,就需要通过显式的传递包含数据值的消息彼此通信(类似于 多个进程互不共享地址空间)

模型对比

共享存储模型消息传递模型
通信隐式显式消息
同步显式隐式消息
硬件支持通常需要不需要
编程工作量较低较高
调优工作量较高较低
通信粒度较细较粗

共享存储器一般需要专门的硬件支持,在类似多核处理器上,处理器核间可能已经共享最后一级高速缓存。然而,在多节点情况下。每个节点拥有自己的处理器和内存,节点间互连形成一个共享存储系统,这时需要硬件支持来实现一种映像,即所有节点的内存构成一个可被所有处理器寻址的单一处理器。
当处理器个数很多时,以较低代价实现共享存储抽象将变得很困难。

其他编程模型:

  • 分区化全局地址空间PGAS:允许所有线程透明的共享单一地址空间
  • 数据并行编程模型:类似于SIMD
  • MapReduce:集群
  • 事务内存TM:将一段代码定义为一个事务

共享存储并行模型

OpenMP为例,它是支持共享存储编程的应用编程接口,由一组编译器指令组成,程序员可以使用指令来向支持OpenMP的编译器表达并行。编译器将指令替换为调用库函数的代码或读取影响程序运行时行为的环境变量。

OpenMP官网:OpenMP官网链接

设计OpenMP的最初目的是在循环结构中表达DOALL并行,使用fork-join执行模型,其中在串行部分由一个线程(主线程)执行计算机。当遇到并行段时,主线程产生子线程来一起执行,直到并行段结束,子线程合并回主线程。

一般使用

#pragma omp directive-name [clause[[,] clause] ... ] new-line
// when for is the directive-name, what clause? 
// private(variable-list)
// firstprivate(variable-list) 
// lastprivate(variable-list)
// reduction(operator: variable-list)
// ordered
// schedule(kind[, chunk_size])
// nowait

要表示一个并行段#pragma omp parallel

#pragma omp parallel 
{ // begin
	// parallel content
} // end

针对LDS的并行编程

可以使用TM事务内存,在某种程度上可以简化LDS并行编程,使用TM的方法是将每一个LDS操作封装在一个事务中,如

atomic{Insert(...)}  // insert a factor

atomic{Delete(...)}  // delete a factor

存储层次结构

存储结构产生的原因:均衡处理器速度和主存的速度

缓存一致性和同步原语

要保证并行程序正确高效的运行,共享存储多处理器系统必须提供对缓存一致性、存储一致性和同步原语的硬件支持。

缓存一致性基础

如图

基于总线的多处理器缓存一致性问题

写直达缓存的一致性协议的缺点:对缓存块的写入会存在时间和空间的局部性。写直达每次写触发总线写从而占用总线带宽,在写回缓存机制下,如果同一缓存块中的一个或多个字或字节被多次写入,只需占用一次总线带宽来失效其他缓存拷贝即可,带宽会很快被耗尽。


写回缓存的MSI协议:与写直达缓存相比,使用写回缓存会大幅降低带宽开销(写回缓存有一个状态:脏,用来标记缓存块中的任意位置在被加载以来是否发生改变)

每一个缓存块都有相关的状态:

  • Modified(M):缓存块有效,并且其数据与主存中的原始数据(可能)不同。
  • Shared(S):缓存块是有效的且有可能被其他处理器共享。它也是干净的,即缓存值与主存中的值相同。该状态与“写直达”缓存一致性协议中的V状态相似。
  • Invalid(I):缓存块无效

缺点:不管一个块是否仅存储在一个缓存块上,MSI协议在读写次序请求时都会触发两个总线事务。这个缺陷会影响诸如顺序执行程序等几乎没有数据共享的程序在执行时的性能。


写回缓存的MESI协议:为了解决MSI的问题,MSEI协议加入了一个状态来区分一个缓存块是干净且唯一的,还是干净但是在多个缓存上拥有拷贝的。

每一个缓存块都有相关的状态:

  • Modified(M)
  • Exclusive(E):缓存块是干净有效且唯一的
  • Shared(S)
  • Invalid(I)

可以通过脏共享来减少主存带宽


写回缓存的MOESI协议:该协议一般允许脏共享,MESI一般用于英特尔至强处理器,MOESI一般用于AMD处理器。

每一个缓存块都有相关的状态:

  • Modified(M)
  • Exclusive(E)
  • Owned(O):缓存块是有效的,可能是脏的,也可能有多份拷贝。但是,当存在多份拷贝时,只能有一个是O状态,其他拷贝都为S状态
  • Shared(S)
  • Invalid(I)

写回缓存基于更新的协议

对同步的硬件支持


锁的实现类型:

  • TS
  • TTSL
  • LL/SC
  • Ticket
  • ABQL
标准test&setTTSLLL/SCTicketABQL
无竞争延迟最低较低较低较高较高
单个锁释放操作的最大通信量O(1)
等待通信量
存储O(1)O(1)O(1)O(1)
保证公平性?

栅障

栅障的实现类型:

  • 翻转感应集中式栅障
  • 组合树栅障
  • 硬件栅障实现

事务内存

存储一致性模型和缓存一致性解决方案

存储一致性模型

与缓存一致性协议分开,缓存一致性协议仅能解决对单个存储器块地址的访问之间如何排序的问题,而对于不同地址的访问并不是缓存一致性协议所要参考的问题。

高级缓存一致性设计

目录式一致性协议Snooping

作为缓存一致性的最早的主流实现方式,依赖于两个事实:

  • 其一,总线作为广播介质,能够把请求变为全局可见,即所有缓存都能同时看到总线上出现了哪个请求
  • 其二,所有的一级缓存和二级缓存都同时密切地监视(嗅探)总线上出现的请求,各自独立并且正确地改变对应缓存行的状态

当处理器个数的增加,可用的互连网络带宽会很快被广播流量占满

监听式一致性协议Directory

是缓存一致性的另一种常用的实现方式,依赖于二级缓存来记录缓存行在一级缓存中的分享情况。

在以目录方式实现的一致性协议中,任何缓存一致性请求都需要先造访二级缓存中的目录。目录的好处是以点对点的数据传输,取代了嗅探中的全局广播:这一性质在系统的计算核心数量较多时尤为重要.

互连网络体系结构

分布式操作系统

SIMT体系结构

单指令流多线程SMIT Single-Instruction Multiple-Thread体系结构,一般用在图形处理器GPU中,类似于SIMD

SMIDSMIT的区别:

  • 从线程的角度来看:SMID一般是一个线程处理一条指令,这条指令是向量化处理的,一般需要一个cycle,而SIMT一般是创建多个线程,需要多个cycle
  • 从逻辑单元角度来看:SMIT相对于SMID需要4倍的逻辑单元

从硬件体系结构来看,SIMT体系结构一般将标量指令转换为向量化风格的SIMD处理,以获得更高的性能。

参阅文章:

  • SIMD简介
  • 《计算机体系结构:量化研究方法》:线程级并行(TLP)简述
  • 并行编程——OpenMP
  • 【操作系统】SMP vs NUMA vs MPP 架构简介
  • 浅谈多核系统的缓存一致性协议与非均一缓存访问
  • 从现代GPU编程角度看SIMD与SIMT

参考书籍:

  • 《计算机体系结构:量化研究方法》
  • 《深入Linux内核架构》
  • 《分布式操作系统》
  • 《Multicore Processors and Systems》

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MCE | 磁珠 VS 琼脂糖珠

琼脂糖珠 长久以来,多孔的琼脂糖珠 (也称琼脂糖树脂) 作为免疫沉淀实验中的固相支持物常用的材料。琼脂糖珠海绵状的结构 (直径 50-150 μm) 可以结合抗体 (继而结合靶蛋白),它能够直接高效、快速结合抗体,而不需借助特殊的专业设备。 图 1.…

【.Net Core】上传文件-IFormFile

文章目录安全注意事项存储方案文件上传方案.NET Core Web APi FormData多文件上传,IFormFile强类型文件灵活绑定验证内容验证文件扩展名验证文件签名验证文件名安全大小验证使名称属性值与 POST 方法的参数名称匹配来源安全注意事项 向用户提供向服务器上传文件的功…

openfeign调用文件服务的文件上传接口报错:Current request is not a multipart request

今天在用Swagger测试项目中文件服务的文件上传接口时发现接口调用异常。 异常展示 笔者这里罗列下Swagger上的错误显示、文件服务的异常以及服务调用方的异常。 【Swagger的异常】 【服务调用方的控制台异常】 【文件服务的控制台异常】 代码展示 【服务调用方的Controller…

KMP算法(求解字符串匹配)

提示:可搭配B站比特大博哥视频学习:传送门 (点击) 目录 前言 图解 代码 前言 KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特一莫里斯―…

如何实现办公自动化?

办公自动化(OA)允许数据在没有人工干预的情况下流动。由于人工操作被排除在外,所以没有人为错误的风险。如今,办公自动化已经发展成无数的自动化和电子工具,改变了人们的工作方式。 办公自动化的好处 企业或多或少依…

jar包的一些事儿

在咱们日常的搬砖过程中,只要你涉及到Java的项目,就不可避免地接触到jar包。而实际开发中,maven等项目管理工具为我们自动地管理jar包以及相关的依赖,让jar包的调用看起来如黑盒一般"密不透风"。今天,让我们…

做音视频开发要掌握哪些知识?

最近有读者留言,说“想转行音视频开发,怎么做”,正巧,前几天我还在某乎上,看到有人在问音视频的学习资料,还是个大一的学生。 想说一句:真有眼光。 如今这个时代,想赚钱,…

前端开发——HTML5新增加的表单属性

1.formactiom属性 对于<input type"submit">、<button type"submit"></button>、<input type"image">元素&#xff0c;都可以指定formcation属性&#xff0c;该属性可以提交到不同的URL。 代码如下&#xff1a; <f…

自动化平台测试开发方案(详解自动化平台开发)

目录&#xff1a;导读 前言 自动化平台开发方案自动化平台开发 功能需求 技术知识点 技术知识点如表所示 自动化平台开发技术栈如图所示。 开发时间计划 投资回报率可视化 后期优化计划 登录功能实现 退出功能实现 使用Django 内置用户认证退出函数logout。 权限功…

Word控件Spire.Doc 【图像形状】教程(4) 用 C# 中的文本替换 Word 中的图像

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

元宇宙|世界人工智能大会之元宇宙论坛:设计篇

Hello&#xff0c;大家好~ 这里是壹脑云科研圈&#xff0c;我是鲤鱼~ 世界人工智能大会&#xff08;WAIC&#xff09;由国家发展和改革委员会、工业和信息化部、科学技术部、国家互联网信息办公室、中国科学院、中国工程院、中国科学技术协会和上海市人民政府共同主办。 大会…

宝宝喝奶粉过敏怎么办?

为了确保喂养过程安全&#xff0c;我们仍然需要首先了解婴儿奶粉过敏的症状&#xff0c;母亲利用这些基本症状来判断婴儿是否对奶粉过敏&#xff0c;以便及时发现婴儿奶粉过敏&#xff0c;找到相应的策略。婴儿奶粉过敏婴儿奶粉过敏&#xff0c;是指婴儿喝配方奶粉后&#xff0…

【STL】string 类

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《吃透西嘎嘎》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;为什么要…

一道面试题:JVM老年代空间担保机制

面试问题 昨天面试的时候&#xff0c;面试官问的问题&#xff1a; 什么是老年代空间担保机制&#xff1f;担保的过程是什么&#xff1f;老年代空间担保机制是谁给谁担保&#xff1f;为什么要有老年代空间担保机制&#xff1f;或者说空间担保机制的目的是什么&#xff1f;如果…

APS高级排产可视化设备任务甘特图

甘特图是评价一个高级计划排程系统的最重要指标之一。一方面企业排程结果数据量规模 大&#xff0c;表格形式显示数据非常不直观&#xff0c;必须借助甘特图进行可视化显示。另一方面&#xff0c;在甘特图上面手动调整排程结果&#xff0c;反馈生产实绩&#xff0c;也可大大简化…

为什么要用 Tair 来服务低延时场景 - 从购物车升级说起

「购物车升级」是今年双十一的重要体验提升项目&#xff0c;体现了大淘宝技术人“用技术突破消费者和商家体验天花板”的态度。这是一种敢于不断重新自我审视&#xff0c;然后做出更好选择的存在主义态度。 「体验提升」通常表现在以前需要降级的功能不降级&#xff0c;以前不…

Web3中文|元宇宙购物的兴起

来源 | techrepublic 近半数消费者接受元宇宙购物 根据UserTesting[1]最近的一项调查&#xff0c;42%的消费者打算在今年的节日季中&#xff08;holiday season&#xff1a;从感恩节到“黑五”&#xff0c;再到圣诞与新年&#xff09;进行元宇宙购物&#xff0c;其中88%的消费…

激光雷达数据的25个重要应用介绍

激光雷达是以发射激光束探测目标的位置、速度等特征量的雷达系统。从工作原理上讲&#xff0c;与微波雷达没有根本的区别: 向目标发射探测信号(激光束), 然后将接收到的从目标反射回来的信号 (目标回波) 与发射信号进行比较, 作适当处理后,就可获得目标的有关信息, 如目标距离、…

基于ALOHA MAC方法的蒙特卡罗模拟(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

ES5+ 和 ES6

一、什么是严格模式 JavaScript 除了提供正常模式外&#xff0c;还提供了严格模式&#xff08;strict mode&#xff09;。ES5 的严格模式是采用具有限制性 JavaScript变体的一种方式&#xff0c;即在严格的条件下运行 JS 代码。严格模式在 IE10 以上版本的浏览器中才会被支持&a…