体系结构30_同步性能问题

news2025/7/9 17:16:18

栅栏(barrier)同步

   栅栏强制所有到达该栅栏的进程进行等待,直到全部的进程到达栅栏,然后释放全部的进程,从而形成同步。

   栅栏的典型实现是要用两个旋转锁:一个用来记录到达栅栏的进程数,另一个用来封锁进程直至最后一个进程到达栅栏。栅栏的实现中要不停的探测指定的变量,直到它满足规定的条件。

栅栏的使用会有些特殊情况,比如操作系统大量的进程要进行同步,要反复使用一个栅栏进行同步,这时候就有可能两次同步之间时间很少,当前面释放栅栏慢的还没有离开这个栅栏时,下面栅栏快的有可能已经来了,这时候两个进程就在这里交错,么有办法区分这种状态。

当多进程之间竞争激烈时,同步会成为瓶颈。当竞争不激烈且同步操作较少时,我们主要关心的是一个同步原语操作的延迟,即单个进程要花多长时间才完成一个同步操作。

 同步操作最严重的问题的是进程的串行性。当出现竞争时,就会出现串行性问题。它极大地增加了同步操作时间。比如,在无竞争的条件下,10个处理器加解锁的同步操作仅需20个总线事务。总线的使用是这个问题关键所在。在基于目录的Cache一致性机器中,串行性问题也同样严重

大规模机器的同步

1.软件实现

2.硬件原语支持

1)排队锁(queuing lock)

        在基于目录的机器上,通过硬件向量等方式来进行排队和同步控制。在基于总线的机器中要将锁从一个进程显式地传给另一个进程

2)硬件同步原语

程序同步意味着对共享数据的访问被同步操作有序化。实际中希望大多数程序是同步的。这是因为如果访问不同步,就很难决定程序的行为。程序员可通过构造自己的同步机制来保证有序性,但这需要很大地技巧性,并可能在体系结构上得不到支持,从而不能保证它们在大规模并行的机器上高效运行。因此,几乎所有的程序员都选择使用同步库。这不但保证了正确性,而且保证了同步的优化。

同时多线程

1.将线程级并行转换为指令级并行

同时多线程技术是一种在多流出、动态调度处理器上开发线程级并行和指令级并行的改进的多线程技术

同时多线程使多个线程以重叠的方式共享单个处理器的功能单元。为实现这种共享,处理器必须保存各个线程的独立状态。例如,需要复制每个线程的独立的寄存器文件,独立的程序计数器(PC),以及独立的页表等等。对于线程访问的存储器,可以通过支持多道程序技术的虚拟存储机制来实现共享。另外,硬件必须能够较快地完成线程间地切换。

同时多线程(SMT)开发的基础是使用动态调度技术的处理器已经具有了开发线程级并行所需的硬件设置。具体来说,动态调度超标量处理器有大量的虚拟寄存器组,可以用来保存每个独立线程的寄存器状态(假设每个线程都有一个独立的重命名表)

由于寄存器重命名机制提供了唯一的寄存器标识符,多个线程的指令可以在数据路径上混合执行,而不会导致各线程间源操作数和目的操作数的混乱。这表明多线程技术可以通过在一个乱序执行的处理器上为每个线程设置重命名表、保留各自的PC值、提供

多个线程的指令结果提交的能力来实现。

同时多线程处理器的设计

1.细粒度调度方式下对单个线程的性能的影响

       设置优先线程

2.其它主要问题

  •     设置用来保存多个上下文所需的庞大的寄存器文件
  •     必须保持每个时钟周期的低开销,特别是在关键步骤上,如指令流出和指令完成。前者有更多的候选指令需要考虑,后者要选择提交哪些指令的结果
  •     需要保证由于并发执行多个线程带来的Cache冲突不会导致显著的性能下降。

由于同时多线程在多流出超标量处理器上开发线程级并行,所以更适合于应用到面向服务器市场的高端处理器上。

同时多线程的性能

HP公司在Alpha 21464处理器上支持了同时多线程

Intel Pentium 4 Xeon处理器也支持了同时多线程

图7.17表明了在超标量处理器上增添8个线程的同时多线程能力时获得的性能提高,单位是没拍的指令数。这里假设增添同时多线程不会导致时钟周期的开销恶化。测试程序包括多道程序执行的SPEC子集,Web服务程序Apache,数据库OLTP和决策支持DSS的测试程序。

使用同时多线程所获得的吞吐率的提高很显著,达1.7到4.2倍,平均3倍

并行处理器性能评测

1.存储受限评测法

      保持每个处理器使用的存储器资源恒定

2.时间受限评测法

     在理想的加速比下,保持总运行时间恒定

    在处理器数量和问题规模变化的情况下系统的性能和加速比的相应变化

多处理机实例

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

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

相关文章

Java 对象拷贝原理剖析及最佳实践

1 前言 对象拷贝,是我们在开发过程中,绕不开的过程,既存在于 Po、Dto、Do、Vo 各个表现层数据的转换,也存在于系统交互如序列化、反序列化。 Java 对象拷贝分为深拷贝和浅拷贝,目前常用的属性拷贝工具,包…

【外卖项目实战开发二】

文章目录1、完善登录功能问题分析代码实现2、新增员工需求分析数据模型代码开发3、员工信息分页查询需求分析代码开发4、启用/禁用员工账号需求分析代码开发代码修复5、编辑员工信息需求分析代码开发1、完善登录功能 问题分析 前面我们已经完成了后台系统的员工登录功能开发&…

zabbix集群搭建分布式监控的操作步骤

作用: 分担server的集中式压力解决多机房之间的网络延迟问题环境准备: 服务器1:zabbix-server 服务器2:zabbix-proxy 服务器3:zabbix-agent 关系:zabbix-agent发送数据到代理,代理汇总数据发送…

Linux多核运行机制(SMP)

一、Linux内核兼容多处理器要求 有多个 CPU 处理器 的 系统中 , Linux 内核需要处理的问题 : 1、公平共享 : CPU 的负载 , 需要公平地共享 , 不能出现某个CPU空闲 , 造成资源浪费。 2、可设置进程 与 CPU 亲和性 : 可以为 某些类型的 进程 与 指定的 处理器设置亲和性 , 可以针…

QT:debug,打不开头文件以及qDebug和Q_CLASSINFO的使用

这个是因为链接器在给定路径上搜索不到对应的头文件,而大多数的Qt相关的头文件都集中在一个include文件夹里: 我电脑上的路径是:C:\Qt\Qt5.9.7\5.9.7\msvc2017_64\include 然后我们在项目设置里: 注意,这边要加上\*&…

【Java】Assert.assertEquals断言

Assert.assertEquals 1.概述 在开发中,我们需要测试时候,不可能把全部程序运行一次,在此我们就需要通过编写单元测试来对程序进行测试了。在 Assert 类里面有大量的静态方法,本篇的主角就是 Assert.assertEquals 这个静态方法。该…

day12_类中成员之方法

成员变量是用来存储对象的数据信息的,那么如何表示对象的行为功能呢?就要通过方法来实现 方法 概念: 方法也叫函数,是一个独立功能的定义,是一个类中最基本的功能单元。把一个功能封装为方法的目的是,可…

【知识网络分析】 一模网络(one node)

一模网络(one node) 1 本地文献读取并构建一模网络数据集2 网络数据集精简3 网络数据集中节点信息大小写转化4 获取一模网络中可使用的mode标签5 网络数据集清洗(以武汉大学信息管理学院为例)5.1 创建映射5.2 求解节点中count属性数值5.3 处理网络数据中的连线信息5.4 处理…

中文版:Spread .NET 16.0 -Winform-WPF-ASP.NET

Spread .NET 是一个功能、布局与 Excel 高度类似的 .NET表格控件,可全面满足 WinForm、ASP.NET、XAML 和 WinRT 等平台下表格数据处理、数据可视化开发需求。Spread .NET 支持 462 种 Excel 公式,提供可嵌入系统的类Excel设计器和全面开放的 API&#xf…

使用Python进行交易策略和投资组合分析

我们将在本文中衡量交易策略的表现。并将开发一个简单的动量交易策略,它将使用四种资产类别:债券、股票和房地产。这些资产类别的相关性很低,这使得它们成为了极佳的风险平衡选择。 动量交易策略 这个策略是基于动量的的,因为交易者和投资者…

美食杰项目 -- 编辑个人资料(六)

目录前言:具体实现思路:步骤:1. 展示美食杰编辑个人资料效果2. 引入element-ui3. 代码总结:前言: 本文给大家讲解,美食杰项目中 实现编辑个人资料页的效果,和具体代码。 具体实现思路&#xff…

【Java面经】阿里三面被挂、幸获内推,历经5轮终于拿到口碑offer

每一个互联网人心中都有一个大厂梦,百度、阿里巴巴、腾讯是很多互联网人梦寐以求的地方,而我也不例外。但是,BAT等一线互联网大厂并不是想进就能够进的,它对人才的技术能力和学历都是有一定要求的,所以除了学历以外&am…

面试官:单核 CPU 支持 Java 多线程吗?为什么?被问懵了

由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。 时间片 多任务…

Java项目:JSP员工出差请假考勤管理系统

作者主页:源码空间站2022 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目为后台管理系统; 管理员角色包含以下功能: 登录,首页,考勤记录增删改查,假期申请记录增删改查,出差申请记录增删…

maven学习:maven 的入门

2.maven 的入门 到目前为止,我们已经大概了解并安装好了Maven,现在,我们开始创建一个最简单的Hello World项目。 2.1 在Idea创建maven项目 创建一个Maven项目也十分简单,选择”Create New Project" 选择”maven”选项,创…

留学推荐信如何写好个人优点和缺点?

留学推荐信是出国申请文书的重要文件之一,是一个从第三方(通常是以前的导师)从学术权威的角度对申请者的客观评价。评价的内容包括学术能力(Academic competence)、性格特点(Personal characteristics&…

如何使用 MySQL 做全文检索这件事

​前言 这有朋友聊到他们的系统中要接入全文检索,这让我想起了很久以前为一个很古老的项目添加搜索功能的事儿。 一提到全文检索,我们首先就会想到搜索引擎。也就是用一个词、一段文本搜索出匹配的内容。一般这种技术都有对应的实现方式,ES&…

从01背包说起(上)

目录 引入 1.什么是动态规划? 2.什么是背包问题? 3.什么是01背包? 模板题 1.题面 2.思路 Ⅰ为何不可用贪心 Ⅱ状态转移方程 3.代码 下期预告 引入 1.什么是动态规划? 动态规划(英语:Dynamic programming&#xff0…

MQTT,JSON,VSCODE(C语言编程环境)心得

VSCODE(C语言编程环境)心得 心得基于linux虚拟机和SSH方式,编辑基于VSCODE,编译基于GCC或G,调试基于GDB的插件,代码管理基于git。 安装GIT:sudo apt-get install git 配置GIT: git…

Mysql时间类型

多个timestamp 默认只对第一个timestamp自动更新时间