热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

多线程的类型

1交错临时多线程(1)粗粒度多线程:在一个线程运行到被一个通常会造成长延迟停顿的事件阻塞时,就会发生最简单类型的多线程。这种停滞可能必须访问片外存储器来

1 交错/临时多线程
(1)粗粒度多线程:
在一个线程运行到被一个通常会造成长延迟停顿的事件阻塞时,就会发生最简单类型的多线程。这种停滞可能必须访问片外存储器来弥补高速缓存的缺失,数据返回可能需要数百个CPU周期。线程处理器会在不等待停顿解决的情况下执行切换到另一个准备运行的线程。只有当前一个线程的数据到达时,前一个线程才会被放回到准备运行的线程列表中。
例如:

周期i:线程A发出指令j。
周期i + 1:线程A发出指令j + 1。
周期i + 2:线程A发出指令j + 2,这是一个在所有高速缓存中未被执行的加载指令。
周期i + 3:调用线程调度程序,切换到线程B。
周期i + 4:线程B发出指令k。
周期i + 5:线程B发出指令k + 1。
从概念上讲,它类似于实时操作系统中使用的协作多任务,在这种情况下,当任务需要等待某种类型的事件时自动放弃执行时间。这种类型的多线程被称为块多线程、协作多线程或粗粒度多线程。
(2)交错多线程

交错多线程的目的是从执行通道中移除所有数据的依赖性。由于一个线程相对独立于其他线程,因此一个流水线级中的一条指令需要流水线中旧指令输出的可能性较小。从概念上讲,它类似于操作系统中使用的抢占式多任务处理;作为一个类比,交错多线程给每个活动线程的时间片是一个CPU周期。
例如:

周期i + 1:从线程B发出一条指令。
周期i + 2:从线程C发出一条指令。
这种类型的多线程首先被称为桶处理,其中桶的支柱代表流水线阶段及其执行线程。交错、抢先、细粒度或分时多线程是更现代的术语。
2 同步多线程
最先进的多线程类型适用于超标量处理器。普通超标量处理器在每个CPU周期从一个线程发出多个指令,而在同步多线程(SMT)中,超标量处理器在每个CPU周期可以从多个线程发出指令。认识到任何单个线程的指令级并行性都是有限的,这种类型的多线程试图利用多个线程之间的可用并行性来减少与未使用的问题槽相关联的额外开销。
例如:

周期i:线程A发出指令j和j + 1以及线程B同时发出的指令k。
周期i + 1:线程A发出指令j + 2、线程B发出指令k + 1和线程C同时发出指令m。
周期i + 2:线程A发出指令j + 3和线程C同时发出的指令m + 1和m + 2。
为了区分其他类型的多线程和SMT,术语“临时多线程”用来表示一次只能从一个线程发出指令的时间。

除了讨论交错多线程的硬件成本之外,SMT还需要在每个流水线阶段跟踪每个正在处理的指令的线程ID的额外开销。同样,共享资源(如缓存和转换后备缓冲器)的大小必须适合正在处理的大量活动线程。


推荐阅读
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 理解存储器的层次结构有助于程序员优化程序性能,通过合理安排数据在不同层级的存储位置,提升CPU的数据访问速度。本文详细探讨了静态随机访问存储器(SRAM)和动态随机访问存储器(DRAM)的工作原理及其应用场景,并介绍了存储器模块中的数据存取过程及局部性原理。 ... [详细]
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 深入解析:阿里实战 SpringCloud 微服务架构与应用
    本文将详细介绍 SpringCloud 在微服务架构中的应用,涵盖入门、实战和案例分析。通过丰富的代码示例和实际项目经验,帮助读者全面掌握 SpringCloud 的核心技术和最佳实践。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文将详细介绍如何在Linux操作系统中执行PHP脚本,包括环境配置、命令使用及验证方法。对于需要在Linux环境下开发或部署PHP应用的用户来说,这是一篇非常实用的文章。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 配置Windows操作系统以确保DAW(数字音频工作站)硬件和软件的高效运行可能是一个复杂且令人沮丧的过程。本文提供了一系列专业建议,帮助你优化Windows系统,确保录音和音频处理的流畅性。 ... [详细]
  • 深入解析TCP/IP五层协议
    本文详细介绍了TCP/IP五层协议模型,包括物理层、数据链路层、网络层、传输层和应用层。每层的功能及其相互关系将被逐一解释,帮助读者理解互联网通信的原理。此外,还特别讨论了UDP和TCP协议的特点以及三次握手、四次挥手的过程。 ... [详细]
  • MySQL 高性能实战教程
    本课程深入探讨 MySQL 的架构、性能调优、索引优化、查询优化及高可用性等关键领域。通过实际案例和详细讲解,帮助学员掌握提升 MySQL 数据库性能的方法与技巧。 ... [详细]
  • 本文作者分享了在阿里巴巴获得实习offer的经历,包括五轮面试的详细内容和经验总结。其中四轮为技术面试,一轮为HR面试,涵盖了大量的Java技术和项目实践经验。 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
  • 深入解析Java虚拟机(JVM)架构与原理
    本文旨在为读者提供对Java虚拟机(JVM)的全面理解,涵盖其主要组成部分、工作原理及其在不同平台上的实现。通过详细探讨JVM的结构和内部机制,帮助开发者更好地掌握Java编程的核心技术。 ... [详细]
  • 本文详细探讨了如何通过分析单个或多个线程在瓶颈情况下的表现,来了解处理器资源的消耗。无论是单进程还是多进程环境,监控关键指标如线程数量、占用时间及调度优先级等,有助于揭示潜在的性能问题。 ... [详细]
  • 深入理解Java多线程并发处理:基础与实践
    本文探讨了Java中的多线程并发处理机制,从基本概念到实际应用,帮助读者全面理解并掌握多线程编程技巧。通过实例解析和理论阐述,确保初学者也能轻松入门。 ... [详细]
author-avatar
无聊的紫布丁
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有