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


    栅栏(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.时间受限评测法

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

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

    多处理机实例

  • 相关阅读:
    Python可变参数*args和**kwargs
    Python和PHP有什么区别
    服装企业为什么要谈信息化?
    @Valid注解的作用及@Valid注解与@Validated的区别
    立足中国,聚焦欧洲,蔚来汽车的如意算盘真会打?
    轻松打造自己的ChatGPT应用,AI应用,源码附赠
    不同类型的生产者
    Java_多态
    27 - Excel 的基本公式和重要函数
    IDEA整合tomcat教程
  • 原文地址:https://blog.csdn.net/weixin_42596333/article/details/104324271