DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1150|回复: 0
打印 上一主题 下一主题

[待整理] 利用并发操作实现可伸缩性(上)

[复制链接]
跳转到指定楼层
楼主
发表于 2014-10-12 15:38:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
近来在并发操作问题上引发了许多讨论。主要原因是多数硬件供应商计划向客户端和服务器端的计算机上添加更多的处理器内核,还因为针对此类硬件,目前的软件尚未做好相关准备。许多文章关注的是如何在代码中保证并发操作的安全性,但并没有首先讨论如何将并发操作融入代码中。        这两项任务都很重要,但也可能由于各种原因而难以实现。随意创建新线程并在整个代码库中随意调用 ThreadPool.QueueUserWorkItem 并不会产生好的结果。您需要采取更具结构 性的方法。首先,让我们简单估量一下情况。
        在上世纪90 年代,并行性已逐渐成为新一代处理器体系结构中软件可伸缩性的一个幕后支持。尽管我们多数人甚至不必意识到它的存在,或甚至以不同方式编写代码来利用它,但并行性仍然在发挥着它的用处。指令级并行性 (ILP) 技术是现有序列编程模型的基础,以单个指令流的粒度执行,并采用分支预测、推测和数据流乱序执行。例如,采用管道技术可使性能提高 25% 到 30%,具体视管道深度及工作负荷而定。如果将此类技术与提高的时钟速度相结合,可确保软件会随着每一代硬件持续提高运行速度,而同时将软件的额外工作量降至最低。
        尽管芯片供应商仍期望摩尔定律继续有效(每18 个月左右就使处理器中的晶体管数量翻倍),但这些晶体管对工程师的用处已开始发生转变。以过去的速率提高新芯片的时钟速度是完全不可能的,主要是因为发热量过高。但是,可以利用增加的晶体管在芯片上放置更多的低滞后时间内存和更多内核(如果软件支持多核)。请注意限定条件。当今多数软件都基于单线程设计开发,如果要利用这些额外内核,就需要改变这一点。
        从某种意义上讲,要使软件在与下一代硬件结合时提高运行速度,很大一部分责任已从硬件方面转移到软件方面。这意味着在中长期内,如果要使代码自动提高运行速度,就必须开始考虑以不同方式构架和实现任务。本文将全面探讨这些体系结构问题,旨在引导您深入了解这个新领域。从长远看,很有希望出现新的编程模型,以解决您将遇到的许多难题。
硬件线程概述
        能够运行 Windows? 的对称式多处理器 (SMP) 计算机已投放市场多年,尽管通常只有服务器端和高端工作站才使用此类计算机。这种计算机包含一个或多个主板,每个主板通常有多个插槽,每个插槽都插入一个完整的 CUP。在这方面,每个 CUP 都有其自己的 on-die 高速缓存、中断控制器、易失状态(寄存器)和一个带有其自己的执行单元的处理器内核。Windows 调度程序将各个软件线程映射到各个 CPU,在这种情况下,各 CPU 完全独立。从硬件线程的意义来说,我将这些 CPU 称为单线程 CPU。因为各单元相对隔离(共享内存体系结构除外,我马上就会就此进行讨论),如果提供了足够的软件线程以供执行,则可以提高添加到计算机的每个新 CPU 的执行吞吐量。
        Intel 针对 Pentium 4 处理器系列采用了超线程 (HT) 技术。HT 将额外一组中断控制器和易失状态打包到某单个插槽中的单个物理 CPU 上,使多个软件线程可在各自的逻辑处理器上并行执行,尽管它们共享同一组执行单元。此方法类似于超型计算机公司(如 Tera)早期采用的方法。由于与访问内存相关的滞后时间以及其他因素,两个逻辑 CPU 线程之间的指令可频繁交错,从而导致并行加速。从这种意义上讲,启用 HT 的 CPU 是双线程的,因为 Windows 调度程序可将两个可运行线程同时映射到一个 HT 处理器上。事实上,HT 适合用于某些工作负荷,并因可使实际环境中的程序性能提高 15% 到 40% 而受到赞誉。
        多核技术已随时可供客户端和服务器端计算机以同样方式使用,它在单个芯片上复制每个 CPU 的体系结构,从而使单个插槽可包含多个完整 CPU。双核芯片(一个芯片上两个内核)目前也成为现实,而且 4 核、8 核等更高级芯片也离我们不远了。不同于 HT,双核 CPU 具有单独的执行单元,因此通常可实现更明显的并行加速。与单个 CPU 很类似,除了共享的内存体系结构之外,每个内核在逻辑上都截然不同。这意味着两倍的内核数可以使吞吐量倍增。从这种意义上讲,内核数就是可同时运行的线程数。当然,这些技术并不互相排斥。一个 4 插槽、4 内核 的 HT 计算机相当于 32 个硬件线程。那是相当大的马力了。
<div style="MARGIN-TOP: 3px; MARGIN-BOTTOM: 10px">内存体系结构
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-8-6 02:31 , 耗时 0.092850 秒, 21 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表