10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

多核处理器趋势对软件架构的影响

  • 2007-09-27
  • 本文字数:1171 字

    阅读完需:约 4 分钟

“Java 开发者”杂志上刊载了一篇精彩的文章,作者在文中讲述了软件开发者将会受到业内日益趋向多核处理器与大量并行处理器这股潮流的影响。以下是来自原文的内容:

作为软件开发者,我们在处理器技术所带来的性能持续增长潮流里乐在其中。实际上,在过去的 20 年中,处理器的性能几乎以每两年翻倍的速度持续增长着。如果 这样的性能提升突然戏剧性的减缓甚至停滞了,这个世界将会变成什么样子?我们还能继续搭建更大、更重和功能丰富的软件吗?……事实是——单线程性能的提升即将在一至三年内大规模减速。在某些情况下,单线程性能甚至会降低。长期持续不变的攀升会戏剧性的变缓。

尽管杂志的名字很专业化,但即使你不是一个 Java 工程师,这篇文章本身也是很值得一读的。你也许能猜到,作者并不会只让你感到上述段落所带来的失望。文章将解释我们将需要怎样做,来使我们的软件架构去适应持续不变的性能提升。

……业内已经开始关注为延续性能提升潮流所进行的多核、多线程处理器的设计。这些设计所关注的不是执行单个线程的性能提升,而是多个,有时甚至是巨量线程数的并行运行……作为一个开发人员而言,学习如何开发可以在数量持续增长的并行处理器上面高效运行的应用程序就变得很重要了。由于单线程的性能提升不会象 过去那么快,开发人员将会不得不关注并发来提高某个给定任务的性能。

文章接下来给出了一个关于并行编程策略的概述,以 Amdahl 法则开始:

当你开始并行编程时,所熟悉的第一条准则是 Amdahl 法则。Amdahl 法则说,限制你的程序加速运行的将是程序中不能并行执行的部分。比如说,如果性能监控显示,程序中那些只能在一个处理器上串行执行的代码需要花费 20%的运行时间,那么即使余下的代码都做了最佳并行化,也不管你扔给它多少处理器,你最多也只能获得 5 倍的速度提升。负载不平衡是一个类似的问题。如果你将你的代码分成 N 个子任务,执行它们所需的时间不是 1/N。所需的时间是执行子任务所 需时间的最大值。

文章之后讲述了并发问题和线程的设计,特别是在并行程序设计方面的 Java 语言模型。全文以宣布了一个由IBM 开发的称为X10 的新语言收尾。该语言 为Java 语言添加加了更高层次的模型,尤其是并行应用开发方面。它通过提供管理并行操作的简化语义和与这些操作相关的数据分布,试图简化并发设计。 X10 并不是一个真正的内部领域专用语言(DSL),因为它的语法不符合Java 的语法。它使用Java 语言作为基础并由此构造了一个新的、严格的语言,从这一点上来看和AspectJ(之前的5.0 版本)很相似。

查看英文原文 The Software Architecture Impact of the Multi-Core Processor Trend


译者简介: 曹云飞,西安交通大学计算机软件硕士。现就职于 Ethos ,热衷于新技术的钻研,软件架构与敏捷开发,目前从事流媒体方面的工作。参与 InfoQ 中文站内容建设,请邮件至 china-editorial[at]infoq.com

2007-09-27 21:091316
用户头像

发布了 47 篇内容, 共 12.4 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

【设计模式】工厂模式

Andy阿辉

编程 程序员 设计模式 23种设计模式

Rust从0到1-并发-可扩展性

rust 并发 sync Concurrency send

【LeetCode】滑动窗口的最大值Java题解

Albert

算法 LeetCode 7月日更

基于RNN和CTC的语音识别模型,探索语境偏移解决之道

华为云开发者联盟

语音 RNN ASR CTC 语音识别模型

bash: docker-compose: 未找到命令

阿呆

Docker-compose

Linux - 零拷贝

大海

Linux zero copy

【Flutter 专题】81 图解 Android Native 集成 FlutterBoost 小尝试 (三)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

架构实战营 模块二作业

脉醉

#架构实战营

重磅消息!写给安卓软件工程师的3条建议

欢喜学安卓

android 程序员 面试 移动开发

基于用户角色的数据库智能监控系统应用场景分析

华为云开发者联盟

数据库 架构 监控 用户 智能监控

Go语言,你必须掌握的--高效并发模式!

微客鸟窝

Go 语言

Python OpenCV 图像处理再循环,第一阶段复盘

梦想橡皮擦

7月日更

数字化转型下的数字经济新发展

CECBC

【设计模式】总览

Andy阿辉

编程 程序员 设计模式 23种设计模式

Vue进阶(十六):vue项目结构启动原理详解

No Silver Bullet

Vue 7月日更 启动原理

赋能中小银行数字营销:索信达助力深圳农商行建设标签系统

索信达控股

金融 银行 用户标签

【设计模式】抽象工厂

Andy阿辉

编程 程序员 设计模式 23种设计模式 编程思想

Vue进阶(六十二):理解$nextTick()

No Silver Bullet

Vue 7月日更 nextTick

深度解析 Lucene 轻量级全文索引实现原理

vivo互联网技术

lucene 检索 索引技术

HCIA-HarmonyOS Application Developer 应用方向认证资料

爱吃土豆丝的打工人

HarmonyOS HCIA认证 应用开发方向

一文搞懂一致性hash的原理和实现

万俊峰Kevin

微服务 hash Go 语言

网易传媒数据指标体系建设实践

网易数帆

大数据 数据仓库 指标体系

华为云MVP周峥:气象预报是个技术活,大数据、超算、AI,缺一不可

华为云开发者联盟

人工智能 大数据 环保 气象 超算

获客达人app系统开发

获客I3O6O643Z97

大数据

智慧能源:清洁低碳环保新能源,沙漠光伏与光热发电站 3D 可视化

一只数据鲸鱼

数据可视化 智慧能源 光伏发电 沙漠光伏

统一语言 = 领域模型 ?

escray

学习 极客时间 7月日更 如何落地业务建模

Pandas高级教程之:稀疏数据结构

程序那些事

Python 数据分析 pandas 程序那些事 稀疏矩阵

重磅来袭!全网最具深度的三次握手、四次挥手讲解

欢喜学安卓

android 程序员 面试 移动开发

抖音霸屏系统软件开发

获客I3O6O643Z97

大数据 抖音霸屏

360 政企安全集团基于 Flink 的 PB 级数据即席查询实践

Apache Flink

flink

什么是MircoPython?

华为云开发者联盟

Python 编程语言 物联网 MicroPython 嵌入式应用

多核处理器趋势对软件架构的影响_Java_Mark Figley_InfoQ精选文章