2020 Google开发者大会重磅开幕 了解详情

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

2007 年 9 月 27 日

“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 年 9 月 27 日 21:09 406
用户头像

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

关注

评论

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

区块链钱包开发app,去中心多币种钱包搭建

WX13823153201

区块链钱包开发

蚂蚁金服首发887页Java面试宝典!还原真实面试情景+面试题

Java架构追梦

Java 编程 架构 面试 蚂蚁金服

叼!阿里Mysql三位封神专家总结800页性能优化的千金良方

996小迁

Java MySQL 编程 架构 面试

产品资讯 | mPaaS 适配 targetSdkVersion 29

蚂蚁集团移动开发平台 mPaaS

移动开发 mPaaS

使用 Maven Archetype 基于 IDEA 快速创建项目

程序员小航

Java maven 开发 项目 Archetype

用上ConcurrentHashMap,就没有并发问题了?

海拉鲁

Java 并发

K近邻算法:机器学习萌新必学算法

华为云开发者社区

机器学习 算法

花费6个月的时间,五面阿里java岗,最后竟然差点倒在最后HR面?

Java架构追梦

Java 学习 编程 架构 面试

【Java面试官】我管你什么P7、P8?答不出这十道题你就是渣!

Java架构师迁哥

英特尔第十一代处理器 (代号Rocket Lake-S) 架构详情

intel001

程序员什么时候就该辞职了?

Java架构师迁哥

年末成功上岸腾讯T3-2,全凭这份业内跪求的Java核心笔记

小Q

Java 学习 架构 面试 程序猿

2020年了,终于有大佬把Java程序员必学知识点总结整理出来了!

Geek_71bb95

Java 程序员 架构 面试 编程语言

手撕面试题:多个线程顺序执行问题

海星

Java 面试 多线程

LeetCode题解:78. 子集,递归+for循环+回溯,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

Java-技术专题-volatile关键字

李博@Alex

Week 6 命题作业

阿泰

架构师训练营 -week06-作业

大刘

架构师训练营第 1 期

架构师训练营第六周作业

Shunyi

「架构师训练营第 1 期」

Java-技术专题-Object克隆方法解析

李博@Alex

【得物技术】一文读懂Vue生命周期

得物技术

Vue 生命周期 得物技术部 得物 钩子函数

TronChain波场链合约系统开发技术

薇電13242772558

区块链 智能合约

第二周作业

小兵

第二周总结

小兵

直播带货需要运营者实名验证:规范行业有利于健康发展

石头IT视角

Java-技术专题-LocalDate和LocalTime和LocalDateTime

李博@Alex

数字货币交易所系统开发技术

薇電13242772558

区块链 数字货币

Redis可以做哪些事?

Java旅途

redis

接口工具使用对比(apipost、jmeter、postman、swagger等)

测试人生路

Jmeter Postman 接口测试

阿里P8大牛2020年总结整理的心血之作:17W字操作系统、网络协议教程、面试真题(附导图+笔记)

Geek_71bb95

Java 程序员 架构 面试 编程语言

阿里技术四面+交叉面+HR面成功拿到offer,谁说双非本科进不了大厂?

Geek_71bb95

Java 程序员 架构 面试 编程语言

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