intel Core 2 Duo 支持双线程技术吗?为什么双核系统有4-5个线程?

kafkafka 2010-03-12 01:22:20
加精
为什么我用vtune查看一个用openMP编写的小程序,在sampling采样里,双击该程序进程,出现了4个或5个线程呢?默认双核应该是2个线程才对啊?
...全文
1396 68 打赏 收藏 转发到动态 举报
写回复
用AI写文章
68 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahbqssd167 2012-08-30
  • 打赏
  • 举报
回复
都是复制贴,无聊,从根本上没有解释cpu物理上的双线程和超线程的区别。有没有原创啊!!!
kafkafka 2010-04-02
  • 打赏
  • 举报
回复
[Quote=引用 65 楼 intel_www 的回复:]
'omp_get_thread_num' 返回的是线程在当前并行区域内的号码,和VTune中看到的线程号没有直接对应关系。
[/Quote]
明白了!多谢!
foavin 2010-03-31
  • 打赏
  • 举报
回复
来看看
intel_www 2010-03-31
  • 打赏
  • 举报
回复
'omp_get_thread_num' 返回的是线程在当前并行区域内的号码,和VTune中看到的线程号没有直接对应关系。
kafkafka 2010-03-30
  • 打赏
  • 举报
回复
[Quote=引用 62 楼 intel_www 的回复:]
引用 61 楼 kafkafka 的回复:

哇,偶像出现!!!
我可以这么理解吗?在>2的线程中,有些是用户级线程,有些是系统级线程?我自己打印出线程号看到的两个线程是用户级线程?还有,自己打印出线程号,和VTune下看到的不一样怎么解释呢?


你自己怎么打印的线程号?

用户级/系统级线程的概念用在这里好像不太合适。那些多出来的线程有的是OpenMP运行库自己的辅助线程,有的……
[/Quote]

就是用OpenMp提供的库函数啊:omp_get_thread_num(),返回当前线程号,0代表主线程。
hawaii 2010-03-29
  • 打赏
  • 举报
回复
我记得Core 2 Duo不支持超线程技术。老的Pentium 4支持,后来的Core架构都不支持。
现在最新的Nehalem架构又加入了超线程技术。

建议在Wikipedia之类上面搜一下细节。
intel_www 2010-03-29
  • 打赏
  • 举报
回复
[Quote=引用 61 楼 kafkafka 的回复:]

哇,偶像出现!!!
我可以这么理解吗?在>2的线程中,有些是用户级线程,有些是系统级线程?我自己打印出线程号看到的两个线程是用户级线程?还有,自己打印出线程号,和VTune下看到的不一样怎么解释呢?
[/Quote]

你自己怎么打印的线程号?

用户级/系统级线程的概念用在这里好像不太合适。那些多出来的线程有的是OpenMP运行库自己的辅助线程,有的可能是某些库函数调用隐式创建的...
kafkafka 2010-03-26
  • 打赏
  • 举报
回复
哇,偶像出现!!!
我可以这么理解吗?在>2的线程中,有些是用户级线程,有些是系统级线程?我自己打印出线程号看到的两个线程是用户级线程?还有,自己打印出线程号,和VTune下看到的不一样怎么解释呢?
intel_www 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用 54 楼 kafkafka 的回复:]
可是你自己程序中你把工作分成几个线程自己能看到的呀,为什么系统工具显示你的程序下不止你定义的这2个线程呢?
[/Quote]

很多情况下程序生命周期内会有很多隐式创建的线程,所以你会看到线程数目>2。
intel_www 2010-03-25
  • 打赏
  • 举报
回复
[Quote=引用楼主 kafkafka 的回复:]
为什么我用vtune查看一个用openMP编写的小程序,在sampling采样里,双击该程序进程,出现了4个或5个线程呢?默认双核应该是2个线程才对啊
[/Quote]

这里的默认值指的是OpenMP运行库会使用2个线程来执行你所创建的Parallel Region。至于你的程序运行过程中总的线程数目(VTune中看到的线程数目)完全是另外一回事。
左岸之魂 2010-03-20
  • 打赏
  • 举报
回复
为了积分我要灌水~
supstorm 2010-03-20
  • 打赏
  • 举报
回复
是不是多核就会有多个并行线程?要不多核有什么用?提高运行频率不就可以了吗?
edisonmxy 2010-03-19
  • 打赏
  • 举报
回复
不懂呀!学习的知识太有限了!继续学习中!
kafkafka 2010-03-19
  • 打赏
  • 举报
回复
可是你自己程序中你把工作分成几个线程自己能看到的呀,为什么系统工具显示你的程序下不止你定义的这2个线程呢?
robake 2010-03-19
  • 打赏
  • 举报
回复
[Quote=引用 52 楼 robake 的回复:]
电脑上处理数据的都是CPU,就好比有多少个人在执行任务。

CPU有几个核心就相当于有几个人执行任务,越多,能同时执行任务的人就越多。

而线程是同时需要执行的任务,然而由于实际情况不同,会造成CPU运行每个线程任务所需的时间有长有短,这个就造成运行线程任务就有先和后,这里我们可以用线程的优先级来控制。

线程数越多,会让CPU处于空闲状态的时间就会越少,CPU资源就使用越充分。
[/Quote]
当然,线程过多时,会造成太多的线程处于等待状态反而会降低运行速度和效率。
robake 2010-03-19
  • 打赏
  • 举报
回复
电脑上处理数据的都是CPU,就好比有多少个人在执行任务。

CPU有几个核心就相当于有几个人执行任务,越多,能同时执行任务的人就越多。

而线程是同时需要执行的任务,然而由于实际情况不同,会造成CPU运行每个线程任务所需的时间有长有短,这个就造成运行线程任务就有先和后,这里我们可以用线程的优先级来控制。

线程数越多,会让CPU处于空闲状态的时间就会越少,CPU资源就使用越充分。
macklau 2010-03-18
  • 打赏
  • 举报
回复
支持二楼的意见,学习了
mythmgn 2010-03-18
  • 打赏
  • 举报
回复
路过路过路过路过路过
kafkafka 2010-03-18
  • 打赏
  • 举报
回复
奇怪的是,我在程序中把线程号打印出来显示有2个线程,但是用intel Vtune分析工具里看到,这个应用程序进程下能看到多于2个线程,3-6个都出现过,请问怎么解释呢?
kafkafka 2010-03-18
  • 打赏
  • 举报
回复
[Quote=引用 37 楼 netcup 的回复:]
CORE2不支持超线程,I7以上支持。
[/Quote]

谢啦
加载更多回复(47)
AMD;Intel多核补丁统一安装包 补丁智能安装包 V4.5 Build 071101 软件大小:5.75MB 软件语言:简体中文 软件类别:系统补丁 授权方式:免费软件 应用平台:WinXP 更新时间:2007-11-01 ============================ 本程序可自动检测出CPU的生产厂家、核心数量 并智能安装相应的补丁,支持参数静默安装 适用于X86架构多核处理器上的简体中文XP2系统 ·AMD 桌面处理器 :AMD Athlon 64 X2 Dual-Core 3600+ 及其以上系列 ·AMD 移动处理器 :AMD Turion 64 X2 Mobile 系列 ·Intel桌面处理器:Intel Core 2 Duo E系列, Core 2 Quad Q系列, Core 2 EXtreme QX系列。 ·Intel移动处理器:Intel Core 2 Duo T系列 AMD默认安装: 官方驱动、AMD优化补丁、KB896256、KB931784 并相应的改写注册表PerfEnablePackageIdle为1 Intel默认安装: KB896256、KB931784、KB936357(Intel处理器可靠性补丁) 静默方式安装参数 /q 将自动检测CPU核心数量并静默安装相应的补丁 在普通的Windows XP(SP2)操作系统中,基于需求切换,系统会根据负载改变ACPI处理器的性能状态,比如处理器电压、工作频率等。Windows XP的处理器功耗管理会在对应的处理器上采用这样的操作,但是在(多核)处理器上,一个单线程的负载可能就会在两个核心上交叉处理,也就造成了一定的性能损失。 如果您正在使用的是电脑,系统为XP(vista本身支持),如果您觉得运行某些程序时效果欠佳,那么您可以考虑打上补丁。当然,不装补丁一样可以使用,对系统的影响也并不是很明显。 据测试,打了补丁,安装nvidia、ati新版本的显卡驱动后,心处理器的游戏性能有比较大幅度的提高。 关于补丁的选择: 传统的资料称AMD需要4个补丁:CPU驱动、优化、KB896256、KB924441 也有说AMD一共6个,需要先安装另外两个安全补丁才能装上KB924441 关于Intel,有的说不需要,有的说只需要KB896256(微软多核支持补丁)。 根据分析,KB924441过旧,已经被KB931784涵盖,所以可以替换 这样AMD实际需要:CPU驱动、优化补丁、KB896256、KB931784 再说intel,KB896256中的halmacpi.dll是支持、HT的系统的HAL 所以Intel平台KB896256要装,而KB931784是为了覆盖更新其中的其他文件 至于KB936357,实际属于微软intel处理器可靠性补丁,单(多)核都可用。 结果:Intel实际需要KB896256、KB931784 按照上面的分析进行更新后,相关文件与windows update自动更新的结果是一样的 即:hal.dll版本5.1.2600.3023,四个nt*.exe版本为5.1.2600.3093 (截至07/11最新) 具体文件关系如下: KB896256、KB924441、KB931784将更新以下文件: ntkrnlmp.exe、ntkrnlpa.exe、ntkrpamp.exe、ntoskrnl.exe 其中KB896256另含halmacpi.dll (重要) 版本号分别为: KB924441 5.1.2600.3014 2006/10/12 (QFE补丁,非关键性更新,不自动更新) KB896256 5.1.2600.3023 2006/10/30 (GDR补丁,安全修补程序,自动更新) KB931784 5.1.2600.3093 2007/02/28 (GDR补丁,安全修补程序,自动更新) ============================ 2007-11-01 V4.5 更新Dual-Core Optimizer.msi为1.1.3.0161 加入补丁检测功能,进一步压缩安装包体积 2007-10-31 V4.0 修正前日的版本在Quad处理器上的问题 加入对X86架构多核心处理器的检测 2007-10-30 V4.0 更新KB936357为v2(微软07-10-23发布) 精简掉AMD驱动及优化程序中的非中文语言 使用最新的KB931784替换掉06年的KB924441 2007-09-27 V3.0 修正由于windows未识别而误判为单核,不再根据windows判断CPU核心。 2007-09-24 V2.0 修正单核情况下静默安装的进程残留问题。 ============================ A & Q: 1.为什么要装补丁? 在普通的Windows XP(SP2)操作系统中,基于需求切换,系统会根据负载改变ACPI处理器的性能状态,比如处理器电压、工作频率等。Windows XP的处理器功耗管理会在对应的处理器上采用这样的操作,但是在(多核)处理器上,一个单线程的负载可能就会在两个核心上交叉处理,也就造成了一定的性能损失。 2.打了这些补丁以后能够明显提高系统性能或者兼容性、稳定性吗? 如果您正在使用的是电脑,系统为XP(vista本身支持),如果您觉得运行某些程序时效果欠佳,那么您可以考虑打上补丁。当然,不装补丁一样可以使用,对系统的影响也并不是很明显。 据测试,打了补丁,安装nvidia、ati新版本的显卡驱动后,心处理器的游戏性能有比较大幅度的提高。 3.我是PentiumD,应该安装什么补丁? Intel奔腾D处理器是简单的将2个CPU封装在一个基板上,2级缓存独立,不是真,所以不需要。 4.我是单核,可以装补丁吗? 不需要。多次被问这个问题,很无奈 5.静默安装时,不是的会不会也装啊?会不会判断错了都装上啊? 不会的。快被这个问题问哭了 - -||| 6.可以支持英文版的吗? 求您了,看看说明吧。。。 7.请问这个补丁包支持2003系统吗? 不支持。仅用于x86下的XP2。 8.打过补丁要不要修改注册表?PerfEnablePackageIdle会自动改成1吗? 您想的还真周到。。。您都想到了,我怎么会想不到 9.四核心需要打补丁吗? 需要。本补丁一样可用于多核心处理器。 10.我装了CNNIC插件,为什么打不上补丁? 微软补丁与此插件冲突。卸载插件后即可安装。

568

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧