POPPUR爱换

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

搜索
查看: 22520|回复: 153
打印 上一主题 下一主题

我觉得Intel和Amd能够将任何单线程的程序,都可以用多核同时运行加速处理。欢迎探讨。

[复制链接]
跳转到指定楼层
1#
发表于 2011-8-30 18:47 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 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
156#
发表于 2012-9-9 22:18 | 只看该作者
eternal0 发表于 2011-8-30 20:20
2*50%=100%很简单的逻辑!

虽然你看到的是两个核心各50%,实际上是一个线程在这两个核心之间快速切换, ...

此说法比较靠谱。
回复 支持 反对

使用道具 举报

155#
发表于 2012-9-9 20:16 | 只看该作者
工艺不断前进,以后intel能不能做出超巨型核心3倍面积实现双倍单线性能呢
回复 支持 反对

使用道具 举报

ChenXuan 该用户已被删除
154#
发表于 2012-9-9 08:57 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

153#
发表于 2012-9-8 22:38 | 只看该作者
同意楼主的说法
回复 支持 反对

使用道具 举报

152#
发表于 2012-4-12 19:39 | 只看该作者
我选1 ....从硬件技术上来说,无法实现。

单线程就是单线程.
回复 支持 反对

使用道具 举报

151#
发表于 2012-4-12 17:40 | 只看该作者
由于第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能够将任何单线程的程序,都可以用多核同时运行加速处理。欢迎各位探讨。

去看点并行计算的书你就不会举出跟你论点相反的例子了。
在你的例子里,如果核心1在运行到语句6时,核心2因为其他任务的关系,还没完成4的计算的话,那么你就得到一个错误的答案,如果干脆连2都没完成,恭喜你,你的程序非法操作了。
如果要解决这个问题,你的程序里得加上进程或者线程通讯、同步的命令,那么这段程序也就成为了多线程,而不再是你口中的单线程了。
回复 支持 反对

使用道具 举报

lincchenl 该用户已被删除
150#
发表于 2012-4-12 10:48 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

149#
发表于 2011-9-9 20:37 | 只看该作者
readma 发表于 2011-8-31 08:20
可以把2个桶连起来啊

大哥,看来你也不明白我的意思,因为楼主就是搞不清楚为什么不把两个桶连起来。
回复 支持 反对

使用道具 举报

148#
发表于 2011-9-4 08:38 | 只看该作者
楼主看看这篇吧。转帖来的,
http://we.pcinlife.com/thread-1579120-1-1.html

有小纰漏,有的地方有争议,但是大方向应该是没问题的
回复 支持 反对

使用道具 举报

147#
发表于 2011-9-4 08:30 | 只看该作者
hunguqi 发表于 2011-9-2 18:45
100楼的同学,俺们握手。

我目前的工作是程序员。但就是写写java,我最想做的是C++的编程做游戏,但 ...

楼主你作为程序员,你没学过计算机组成原理吗?
如果你计算机组成原理没挂科那么顶楼的问题是怎么问出来的?
回复 支持 反对

使用道具 举报

146#
发表于 2011-9-4 04:28 | 只看该作者
学到不少东西,留爪必须的~
回复 支持 反对

使用道具 举报

145#
发表于 2011-9-4 02:57 | 只看该作者
LZ你那个叫多发射乱序执行...

其中牵涉到CPU的前端解码+分支预测,可以说X86CPU很大一段时间就是在搞这个。现在走多核路线纯属无奈之举,就是因为要同时预测越多指令,设计复杂度也随之指数上升,A家的PI跑不过I家就是因为这个原因,A只能做到乱序3发射,也就是上面你那个代码中挖掘出3个并行,而I能做到4个...

不然你以为I和A往单个核心里面塞那么多ALU干嘛。
回复 支持 反对

使用道具 举报

144#
发表于 2011-9-4 02:27 | 只看该作者
本帖最后由 ccontion 于 2011-9-4 02:27 编辑

LZ,“比如有一段程序如下”部分,这是目前的OS的问题,包括win、linux等等,不是处理器的问题。
回复 支持 反对

使用道具 举报

143#
发表于 2011-9-3 15:11 | 只看该作者
FENG950 发表于 2011-9-3 14:10
好像全世界就你一个人知道多发射(可惜是指令和线程最基本的东西都分不清),你当这里是幼儿园?这里的回 ...

当然不是无限的,设计难度很高,并且目前超过四路根本没有好的解决方案,你说的无限增加运算单元增加发射数是不可行的,不然avx每个核心内八个计算单元为什么不全用了,而只有四发射和搞一个HT出来

计算管道和核心数的概念,那只一个商业定义,以后这个概念只会越来越模糊
回复 支持 反对

使用道具 举报

142#
发表于 2011-9-3 14:10 | 只看该作者
largewc 发表于 2011-9-3 12:48
你让编译器的乱序优化,CPU的MMX SSE AUX指令集情何以堪……

你让扣肉从P4的三发射进化到四发射难为情 ...

好像全世界就你一个人知道多发射(可惜是指令和线程最基本的东西都分不清),你当这里是幼儿园?这里的回复长篇大论,很多人该说的都说了,不理解的还是不理解,继续把指令和执行路径纠缠一块。前面说过你的那些都懒得回你了,我也没必要和你纠缠什么,其实,全世界计算机的工程技术人员都和我们玩了一个猫腻,多线程根本不需要,一个CPU只要做大发射就够了,N路发射的单线程执行就足够并行化了,分什么ILP/TLP都是为了给自己搞技术大帽骗钱的。
回复 支持 反对

使用道具 举报

141#
发表于 2011-9-3 13:19 | 只看该作者
现在AMD垃圾很大程度上,AMD所有的CPU目前仍然是三发射的,除了未来的推土机

对Intel早在扣肉就布局的四发射,肯定是没办法的,并行三条和并行四条是有本质区别的。

发射数就是楼主的概念,只是名词不叫做多核而已
回复 支持 反对

使用道具 举报

140#
发表于 2011-9-3 13:14 | 只看该作者
当然,这个说法只针对整数计算,x86众所周知的缺陷就是浮点,采用压栈式的设计,这个设计无法采用并行计算优化单线程。

当初cell也是用这个来恶心intel……

intel曾经想用安腾扔掉x86,被微软干掉了
回复 支持 反对

使用道具 举报

139#
发表于 2011-9-3 13:01 | 只看该作者
线程和CPU几路计算,根本不是一个东西,别再拿线程的思路套到CPU多路加速上,我已经让楼主更正了。

多核也未必已经要用多线程,Cell的SPU大多都不是用在多线程上,虽然它也是完整核心。

线程只是一个应用级的东西。
回复 支持 反对

使用道具 举报

138#
发表于 2011-9-3 12:57 | 只看该作者
没做过基础应用,光靠想象是不行的

P4是四条计算单元,验证的方法很简单,同期的SSE 指令集正好是128 Bit的,除以32 bit正好是4。但是Intel同期的并行加速算法只支持3管道,也就是三发射,明白了吗。那么就浪费了一条计算管道,最简单的办法就是给这个通道配上寄存器之类,让它可以当做独立cpu来用,那就是HT了。

扣肉改良的算法就是可以并行算法用满4管道了,也就是四发射,所以没有多余的计算管道了,所以没有HT了!

而I系列是8管道的,AVX正好是256 bit,256除以32就是8管道的,明白了吗,但是目前并行算法仍然是四发射的,所以浪费了四条管道,所以HT又回来了,明白了吗

超过4条并行现在进入了瓶颈,很难找到新的办法,这就是未来要解决的事情。

说的够简单了,cpu早就是多线加速单线程了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

广告投放或合作|网站地图|处罚通告|

GMT+8, 2025-9-14 07:04

Powered by Discuz! X3.4

© 2001-2017 POPPUR.

快速回复 返回顶部 返回列表