请教:多线程在多核、多cpu上运行时对核、cpu的选择

firePhoenix1981 2010-06-11 05:25:11
一直有一个疑问。
假设一个进程A,创建了若干个子线程T1...TN,那么在多CPU,多核机器上,OS会不会把这些线程 【优先】 放到同一个CPU上,这样利于共享数据?还是不论线程、进程都是一视同仁的?
...全文
252 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
snow_bird 2010-11-07
  • 打赏
  • 举报
回复
仅仅说一点个人的意见,呵呵,也谈不上是对楼主的回答。
1.应该会有CPU有独立的cache的,但是独立的cache有几级,我也不清楚。这些可以看下intel的一些资料,只要找到一些图就可以了,容易查到。
2.内存的共享对线程的影响是一个很大的问题,不能一概而论。这里我只说明一点:通信-计算比率。不同的任务,其通信-计算比率不同,内存的共享对它们的影响也不同。通信量少的,自然内存不共享也影响不大,反之,则最好有共享,或者至少要有高带宽通信手段。
3。对OS怎么分我也不懂,没研究过。只知道用OpenMP编程,如果不指定线程数量,则线程默认为内核的数量并平均分配,当然可以手动调整。
wxl310 2010-10-16
  • 打赏
  • 举报
回复
估计只有CPU的设计人员才能解释了
pthiiu 2010-10-15
  • 打赏
  • 举报
回复
同问 关注ing
firePhoenix1981 2010-06-13
  • 打赏
  • 举报
回复
嗯,我开始还没有区分数据共享的“粒度”,多谢你的区分。有几个问题:
1)多核的话是不是共享cpu寄存器?好像intel的多核只是增加了逻辑运算处理单元?
2)如果是SMP架构的机器肯定是共享内存,但是也存在其他的架构。内存级如果不共享是不是对线程影响很大(如果不在一个cpu上运行)?
3)目前的OS对这些是怎么处理的?
budweiser 2010-06-12
  • 打赏
  • 举报
回复
你说的“共享数据” 是共享内存上的数据, 还是Cache上的数据 ?? 还是CPU寄存器上的数据

据我所知 目前的多核 多CPU基本上是 是共享Cache、内存的, 也就是Cache、内存共用。
这样的话, 楼主的意思是公用 CPU寄存器了,

那一个进程的多个线程在 一个CPU上是否能 提高提高数据共享, 提高效率, 我也不清楚 。

567

社区成员

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

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