{讨论}请教硬件发展对软件的影响

1 view
Skip to first unread message

cold

unread,
Jan 3, 2009, 1:20:41 AM1/3/09
to TopLanguage
记得前段时间好像在我们这里看到过一段话,大意是,许多软件,算法都是应当时硬件的限制而生的,比如操作系统中的内存地址采用段基址+偏移量,当内存地
址空间平面化后这样的方法也就会消失。这样就涉及到一个问题,我们需要关注和了解未来的硬件发展趋势,这样就会对现在软件中的些方法清楚其来龙去脉,知
道为什么会是这样,在学习时可以把握到本质,而不必在一些未来将要过时的方法上过多费精力。

这段话提到有位大师在他的著作中说到了硬件发展的趋势,像内存地址平面化,还有其他,许多现在已经实现,当时没有记住著作的名称,现在想要找出这本书的
名字,昨晚起已经翻遍了最近看的书、杂志、网页和博客都没有找到,所以请教谁知道这个著作的名字呢?

就我们所能把握到的硬件发展,不要提量子计算机之类,说说将来硬件的发展对软件的影响吧,譬如这里也都说过了SSD,CUDA, openCL之类
的。


翻了下我们这里的列表,eric在"计算机科学元思想 序"里也提到了这个:
<quote>

比如 TAOCP Vol 3 很多的篇幅在讲解外排序, 而实际上在
磁带上的外排序随着磁带的过时也就过时了. 再比如说, AST 在<现代操作系统>这本书的前面也提到, cache 的设计和相关的方法都是因为

存比CPU 慢引起的. 如果哪一天内存和 CPU 一样快, cache 也就不存在了. 因此, 单讲方法, 也有本质可非本质之分. 虽然我们

后能够点评磁带上的外排序过时, 但在当时, 谁也不能洞穿历史从而不去研究相关的方法. 而从写作 MICS 专栏的角度看, 什么样的方法和思想

要被介绍, 什么样的方法和思想不是本质, 也是一个不可能有明确答案的问题. 因此, 在甄选方法和思想的时候, 我尽量选择那些横跨在多个问题域

面的那些普遍的思想, 而舍弃那些特定问题的特定方法. 具体说来, 以算法为例, 我会介绍动态规划这样的普遍的思考问题的方法, 而不会介绍求最

不下降子序列这样的具体的动态规划的应用. 希望这样, 能够在短短的专栏里面把本质的思想的来龙去脉和哪些可能的应用讲解清楚, 而不是追求难,或

全.

</quote>

赵明

unread,
Jan 3, 2009, 1:48:12 AM1/3/09
to pon...@googlegroups.com
这个问题是很关键啊,实验室有人在做flash存储的查询,感觉硬件的因素相当之大!!

2009/1/3 cold <cold...@gmail.com>

redsea

unread,
Jan 3, 2009, 8:19:22 AM1/3/09
to TopLanguage
>再比如说, AST 在<现代操作系统>这本书的前面也提到, cache 的设计和相关的方法都是因为内存比CPU 慢引起的. 如果哪一天内存和 CPU 一样快, cache 也就不存在了. 因此, 单讲方法, 也有本质可非本质之分.

内存比 CPU 慢, 这个我觉得是本质的, 因为数量和成本问题, CPU 可以采用更先进的工艺和设计.

如果出现了某个突破性的内存技术, CPU 也可以将它集成到内部, 并且用更高的成本做得更好.

Eric

unread,
Jan 3, 2009, 5:57:00 PM1/3/09
to TopLanguage

> 内存比 CPU 慢, 这个我觉得是本质的, 因为数量和成本问题, CPU 可以采用更先进的工艺和设计.
>
> 如果出现了某个突破性的内存技术, CPU 也可以将它集成到内部, 并且用更高的成本做得更好.


美国有一些机顶盒, 用的是低端的ARM处理器, 挂着一些 Flash ROM, 在这些ARM 处理器上, 就没有cache.

还有, 如果你拆解 GBA, NDS, Nokia 手机或者 iPod 这些设备, 他们都是ARM7 处理器, 也都没有 cache. 有时候
人们不会用"更高的成本"去换取这样的 CPU, 也不需要这么快的CPU, 所以, 正好是证明了:

如果哪一天内存和 CPU 一样快, cache 也就不存在了.

(参见: http://en.wikipedia.org/wiki/ARM7TDMI 这是一款 可选 cache 的 CPU, 事实上基本上没
厂商用带 cache 的 )


windstorm

unread,
Jan 3, 2009, 7:36:37 PM1/3/09
to pon...@googlegroups.com
Redsea 说法有点问题, 如果出现了某个突破性的内存技术, 首先它肯定更贵, 其次不一定和CMOS兼容, 你根本集成不进去.
理想情况可能有便宜也能集成的, 目前还看不到希望而已.

目前最好的实验室技术能让内存几乎和CPU一样快(比如3D package), 但是要完全达到还是不可能, 何况CPU的进步还在飞速进行,
所以就算有一天内存和 CPU 一样快, 我觉得也是很久很久以后的事情.

Eric的类比也有问题, ARM7TDMI的存在是因为目前GBA或者Ipod不需要像Iphone或者Gphone那么fancy的功能,
而IC技术在发展, 人们的需求也在发展,当需要到了一定程度的时候, 这些东西自然就会从ARM7跳出来用更好的有cache的芯片.
就用你的例子, NDS你只看到了ARM7TDMI, 实际上它还有cache的ARM946E-S. 至于NOKIA的稍微好点的手机和掌上设备,
例如Nxx系列或者N800系列,我还没见过不用带cache的ARM的.

而且你不应该用design in terms of cost 去类比 design in terms of performance.

硬件发展对软件的影响某些方面其实是很大的, 比如说多核的出现, 导致了算法朝着传统的串行算法和现代的并行算法两方面走.
但像楼上有个哥们说的SSD, flash这种东西, 对于算法的影响是很trivial的, 从理论上讲,
计算机系统只需要cpu和memory, 具体到存储, 当然越快的存储可以导致一些算法的改进, 不过造成的一个领域"影响"是可以忽略的

----------------------------------------------------------------------------------
Yours Sincerely
Kun

blog: www.forwind.cn

2009/1/3 Eric <xu.ma...@gmail.com>:

MIK

unread,
Jan 4, 2009, 9:45:51 PM1/4/09
to TopLanguage
就如同算法应用于不同的数据样本都会有不同的效果,硬件在变,变的是环境,而解决问题的思想,变化的幅度实际上并不巨大.
比如cache本身并非一定要指某高速xx,只不过是一个阶梯来平衡高低速事物,在web上动态数据的静态化,不也是一种体现吗~

MIK

unread,
Jan 4, 2009, 10:14:51 PM1/4/09
to TopLanguage
> 硬件发展对软件的影响某些方面其实是很大的, 比如说多核的出现, 导致了算法朝着传统的串行算法和现代的并行算法两方面走.

事实上并行算法并非只从多核出现以后才有的开始发展的.
从某种意义来说,用计算资源空间上的消耗来获取时间上的收益,这个思想无论在任何环境都适用.

> 计算机系统只需要cpu和memory, 具体到存储, 当然越快的存储可以导致一些算法的改进, 不过造成的一个领域"影响"是可以忽略的

或许某一天在并行体系结构研究上的突破会改变我们的某些想法~


On 1月3日, 下午4时36分, windstorm <likunarmstr...@gmail.com> wrote:
> Redsea 说法有点问题, 如果出现了某个突破性的内存技术, 首先它肯定更贵, 其次不一定和CMOS兼容, 你根本集成不进去.
> 理想情况可能有便宜也能集成的, 目前还看不到希望而已.
>
> 目前最好的实验室技术能让内存几乎和CPU一样快(比如3D package), 但是要完全达到还是不可能, 何况CPU的进步还在飞速进行,
> 所以就算有一天内存和 CPU 一样快, 我觉得也是很久很久以后的事情.
>
> Eric的类比也有问题, ARM7TDMI的存在是因为目前GBA或者Ipod不需要像Iphone或者Gphone那么fancy的功能,
> 而IC技术在发展, 人们的需求也在发展,当需要到了一定程度的时候, 这些东西自然就会从ARM7跳出来用更好的有cache的芯片.
> 就用你的例子, NDS你只看到了ARM7TDMI, 实际上它还有cache的ARM946E-S. 至于NOKIA的稍微好点的手机和掌上设备,
> 例如Nxx系列或者N800系列,我还没见过不用带cache的ARM的.
>
> 而且你不应该用design in terms of cost 去类比 design in terms of performance.
>
> 硬件发展对软件的影响某些方面其实是很大的, 比如说多核的出现, 导致了算法朝着传统的串行算法和现代的并行算法两方面走.
> 但像楼上有个哥们说的SSD, flash这种东西, 对于算法的影响是很trivial的, 从理论上讲,
> 计算机系统只需要cpu和memory, 具体到存储, 当然越快的存储可以导致一些算法的改进, 不过造成的一个领域"影响"是可以忽略的
>
> ----------------------------------------------------------------------------------
> Yours Sincerely
> Kun
>
> blog:www.forwind.cn
>

> 2009/1/3 Eric <xu.math...@gmail.com>:


>
>
>
> >> 内存比 CPU 慢, 这个我觉得是本质的, 因为数量和成本问题, CPU 可以采用更先进的工艺和设计.
>
> >> 如果出现了某个突破性的内存技术, CPU 也可以将它集成到内部, 并且用更高的成本做得更好.
>
> > 美国有一些机顶盒, 用的是低端的ARM处理器, 挂着一些 Flash ROM, 在这些ARM 处理器上, 就没有cache.
>
> > 还有, 如果你拆解 GBA, NDS, Nokia 手机或者 iPod 这些设备, 他们都是ARM7 处理器, 也都没有 cache. 有时候
> > 人们不会用"更高的成本"去换取这样的 CPU, 也不需要这么快的CPU, 所以, 正好是证明了:
>
> > 如果哪一天内存和 CPU 一样快, cache 也就不存在了.
>

> > (参见:http://en.wikipedia.org/wiki/ARM7TDMI这是一款 可选 cache 的 CPU, 事实上基本上没
> > 厂商用带 cache 的 )

learn

unread,
Jan 5, 2009, 10:09:16 AM1/5/09
to pon...@googlegroups.com
算法大师Donald对多核的硬件变化并不乐观。
我觉得随着纳米技术的继续推进,像忆阻器 这种新型电子元件还是会不断出现,硬件也会有发生质变的一天。


《程序员》里的"高德纳访谈录"
"
Andrew:很多多核处理器的供应商都在帮助开发者转移到多核模型的过程中,表现得力不从心。做为一名著名的教授,你对于这种转变有什么看法?什么因素才能促使这种转变?如果有更好的工具可以解决问题么,比如在语言中加入对并发更好的本地支持,或者使用框架?或者还有其他的方案么?


Donald:我不想回避你的问题。也许我个人的一些观点会为当前流行的多核架构趋势泼一盆冷水。在我看来,这种现象或多或少是由于硬件设计者已经无计可施了导致的,他们将Moore定律失效的责任推脱给软件开发者,而他们给我们的机器只是在某些指标上运行得更快了而已。如果多线程的想法被证明是失败的,我一点都不会感到惊讶,也许这比当年的Itanium还要糟糕——人们基本上无法开发出它所需要的编译
"

windstorm

unread,
Jan 5, 2009, 12:39:33 PM1/5/09
to pon...@googlegroups.com
高德纳老爷爷这样说就有点不厚道了,并行和串行化发展的交替,这是大部分硬件都会经历的历程,处理器也不例外。学术界对多核目的的解释主要还是着眼于功耗,这是工艺发展的必然产物,moore定律某一天失效这本来就是合情合理的,怎么就成了推脱的副产品了。要不往这个方向走,大家的cpu都煮鸡蛋算了

看来所有人在评论非本行业的时候都是站着说话不腰疼

----------------------------------------------------------------------------------
Yours Sincerely
Kun

blog: www.forwind.cn

2009/1/5 learn <lear...@gmail.com>:

张学成

unread,
Jan 6, 2009, 1:34:45 AM1/6/09
to pon...@googlegroups.com
顶windstorm,功耗才是多核的真正意义所在。

--best regards



--
   best regards,
   zhang xuecheng

Kenny Yuan

unread,
Jan 6, 2009, 1:58:49 AM1/6/09
to pon...@googlegroups.com
摩尔定律说的是集成度和成本,没有说速度会在18个月翻倍

--
Kenny Yuan
C++, UI, LISP, MMA, Psychology and Automobile.
BLOG: CS巴别塔(Computer Science Babel)
URL: http://blog.csdn.net/yuankaining/


Atry

unread,
Jan 10, 2009, 3:40:19 AM1/10/09
to pon...@googlegroups.com
这个我听云风说过,因为cache比内存到CPU的物理距离更近,因为信息的传递需要时间,受到光速的限制,所以cache一定比内存快

2009/1/3 redsea <red...@gmail.com>

redsea

unread,
Jan 10, 2009, 11:21:06 AM1/10/09
to TopLanguage
就目前的技术而言, 我觉得离用光速来解释还比较远.

目前技术条件下, cache 应该比内存快, 我自己知道的是有一下几个因素:

1. cache 离内核近, 引线近, 什么分布电容, 寄生电感 之类的小

2. 片内设计的东西, 什么分布电容, 寄生电感之类的东西, CPU 设计师是可以预料, 并且用IC工艺控制的, 这比起设计线路板上的蛇形走线
之类的东西, 手段更多, 也更精准.

3. cache 是片内设计的, 没有引脚数之类的限制. 弄个内存, 如果有 500个金手指, 显然成本又要加高了.

Li Xunhao

unread,
Jan 10, 2009, 3:53:14 PM1/10/09
to pon...@googlegroups.com
还有一个原因是CACHE一般是SRAM,而内存是DRAM。一般来说片内CACHE时钟频率是CPU时钟频率的一倍或者一半。

2009/1/10 redsea <red...@gmail.com>:

--

Xunhao Li
Department of Computing Science
University of Alberta
Edmonton, Alberta, Canada

Chunlin Zhang

unread,
Jan 11, 2009, 8:16:25 PM1/11/09
to TopLanguage

On 1月4日, 上午6时57分, Eric <xu.math...@gmail.com> wrote:
> > 内存比 CPU 慢, 这个我觉得是本质的, 因为数量和成本问题, CPU 可以采用更先进的工艺和设计.
>
> > 如果出现了某个突破性的内存技术, CPU 也可以将它集成到内部, 并且用更高的成本做得更好.
>
> 美国有一些机顶盒, 用的是低端的ARM处理器, 挂着一些 Flash ROM, 在这些ARM 处理器上, 就没有cache.
>
> 还有, 如果你拆解 GBA, NDS, Nokia 手机或者 iPod 这些设备, 他们都是ARM7 处理器, 也都没有 cache. 有时候

这些很多相信都不是 ARM7 了,也有 ARM9/11 之类的
ARM7 在手机上现在一般只有中低端手机在用.中端开始就不少用 ARM9 了.

而且就用 ARM 7 的手机来说,一般来说也是有 cache 的,但是一般来相对于 PC 上的 CPU 小很多.据我所知没有 cache 的
手机处理器应该很少见.


> 人们不会用"更高的成本"去换取这样的 CPU, 也不需要这么快的CPU, 所以, 正好是证明了:
>
> 如果哪一天内存和 CPU 一样快, cache 也就不存在了.
>

> (参见:http://en.wikipedia.org/wiki/ARM7TDMI这是一款 可选 cache 的 CPU, 事实上基本上没
> 厂商用带 cache 的 )

Reply all
Reply to author
Forward
0 new messages