利用多核有三个层次
myan 2006-07-06 08:26:02 利用多核有三个层次。一是系统层次。一个核跑一个OS,每一个程序永远只能用一个核。这样大家都轻松。但是双核的时候我可以跑两个OS,难道4核的时候我需要跑4个OS?8核的时候...,我跑些什么OS呢?所以这个方向不可能很长久。
二是线程层次。就是说每一个新的线程自动利用空闲的core,这样的话应用程序的程序员也不用管,下层的操作系统就包办此事。只要照常写multi- threaded应用就好。我觉得这种模式可以坚持很长时间。因为现在大家一开机器就大概有几十个线程在跑,所以直到比如16核,甚至32核之前,使用这种方法就可以提高性能。问题仅仅在于,多线程程序并不好写,特别是不好调试。所以大家努力学习多线程开发吧。很多客户端程序,可能要求以这种思维重写。 Notepad和Calc的功能越来越强,还真没准要这么重写呢,你还别不信。
三是算法层次。就是说执行每一个具体的算法任务,都尽可能利用多核并行。比如说100个整数相加,在4核CPU上,可以分别让四个核处理25个数的加法,最后将4个结果加起来。这种方法几乎要求我们重写现有的大部分程序,无论是客户端还是服务端的应用。好在似乎只有少数应用需要这么干。而且有OpenMP等帮助我们。
总的来说,无论是第二层次还是第三层次,multicore带来的冲击势必是不可忽略的。