|
本帖最后由 hunguqi 于 2011-9-2 16:01 编辑
2011年9月2日更新
有人让我标题改的低调一点,我觉得对,我改了一下,希望大家来踊跃探讨。
举个例子,我要做一个superpi(1mb)计算,那么按双核Cpu的处理方式,cpu1保持50%负载,cpu2保持50%负载,算到算完为止。(如附件图1)
但为什么不能cpu1保持100%负载,cpu2也保持100%负载,算到算完为止呢?
看到一楼的回帖,我觉得大家没明白我的意思,给大家几个选项算了(目前统计至51楼)
1.从硬件技术上来说,无法实现。(6票)
2.Intel和Amd都犯错了,都没做这个功能。
3.Intel对于只支持单线程的软件,故意不让其用满2个核心,因为软件不支持。(4票)
4.Intel对于只支持单线程的软件,故意不让其用满2个核心,因为Amd也是这么干的,没什么道理,只为形成硬件技术上的统一。
5.Intel对于只支持单线程的软件,故意不让其用满2个核心,因为想留一手,到以后芯片发展不下去了,再推出这个技术来赚钱。
6.Intel对于只支持单线程的软件,故意不让其用满2个核心,因为这样可以逼迫软件业向支持多核心的方向发展。
7.Intel对于只支持单线程的软件,故意不让其用满2个核心,因为这样可以不用使用重量级的散热器,因为随便跑什么程序都满载,至少原装散热器有时候是会坑爹的。
8.Intel对于只支持单线程的软件,故意不让其用满2个核心,因为这样可以简化芯片的设计,大量的降低成本,不是造不出,而是不想造。
9.Intel对于只支持单线程的软件,故意不让其用满2个核心,因为Intel被我们误解了,可能Intel其实已经实现了这个功能,但没有任何一款主板或者操作系统支持这个功能,Intel被我们冤枉了。
10.Intel对于只支持单线程的软件,故意不让其用满2个核心,因为这么高级的功能,只用在高端服务器上,PC机现在还没这个资格使用这个技术,说到底,还是为了赚钱。
11.两个核心之间快速切换,任何时刻都只有一个核心在运行这个线程。一个线程可以看作一条顺序的指令队列,其顺序不能改变,同一时刻自然只能使用一个核心。(2票)(第14楼)
12.我们错怪Intel和Amd了,他们都不是奸商(1票)(第37楼)
13.楼主说的都是阴谋论(1票)(第44楼)
14.单线程就是跑路,开车,无论有多少跑道,到达的时间是一样。(2票)
15.实现这种高级货,还要靠楼主。(1票)(第50楼)
16.以上答案都不对(1票)(第36楼)
由于第48楼和第49楼嘲笑楼主,楼主决定公布一个方法,给嘲笑楼主的人,一个有力的反击。
比如有一段程序如下:
语句1: int test1 = 0;
语句2: int test2 = 0;
语句3: test1 = test1 + 10;
语句4: test2 = test2 + 20;
语句5: int test3 = 0;
语句6: test3 = test1 + test2;
在核心1运行的语句1,3,同时可以在核心2运行的语句2,4,最后在核心1运行语句5,6
总体消耗的时间应该是4个cpu时间,比单线程运行节约了2个cpu时间。
我觉得Intel和Amd能够将任何单线程的程序,都可以用多核同时运行加速处理。欢迎各位探讨。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|