免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: prolj
打印 上一主题 下一主题

Tilera公司的64核MIPS——Tile64 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-03-13 10:15 |只看该作者
中国人是不比鬼子笨,有一家美国公司的人和我说过在美国做IT的如果没有中国人和印度人都干不下去的。但国内的问题不是聪明与笨的问题吧,整个行业充斥着浮躁的气味,做技术的多数不过三四年。最说IT发展很快,但核心的东西还是需要时间去积累的;说实在的,我一直不明白国内的官员为啥信誓旦旦地说啥在这个行业我们很容易赶上去,要知道老美可是积累了几十年的。

论坛徽章:
0
12 [报告]
发表于 2009-03-13 10:17 |只看该作者
补充一下,对这个芯片有兴趣多了解的我可以在这里回复一些问题,或给我消息也可以,呵呵。

论坛徽章:
0
13 [报告]
发表于 2009-03-13 10:53 |只看该作者
我想知道:
1,这个 Arch 的指令是怎么在这么多 Core 上调度的。
2,地址空间又是怎样的,分开?共享?
我猜:
1,和 x64 多 Core 一样,硬件调度。不过还是有些疑惑。
2,共享地址空间的。
原因:
没有 datasheet ,只能猜。

论坛徽章:
0
14 [报告]
发表于 2009-03-13 14:45 |只看该作者

回复 #13 prolj 的帖子

第一个问题没怎么搞明白,能否说清楚一些?每一个Core都是独立的啊,各自执行自己的指令,还需要调度吗?

地址空间从物理上是共享的,但它的四个安全级别可以使Hypervisor隔离Linux和专门跑驱动的核所使用的内存。

论坛徽章:
0
15 [报告]
发表于 2009-03-13 15:03 |只看该作者
哦,我表达不太好。
谢谢你的回答。
我的意思是,一段 C 代码,翻译成二进制之后,是跑在一个 Core 上,还是分散在多个 Core 上跑啊?也就是说一个 Core 跑一个任务啊,还是多个 Core 分担一个任务啊?

论坛徽章:
0
16 [报告]
发表于 2009-03-13 17:22 |只看该作者

回复 #15 prolj 的帖子

你是指从硬件的角度讲还是从编译器的角度讲?硬件的话我还没听说过能自动调度指令并行的,难道现在已经这么强了
软件的话OpenMP好像是可以插入一些编译指令来自动并行,但具体咋做的不知道了,是结合了系统的线程机制还是做了某种框架来自动调度?
TILE64本身倒是实现了VLIW,任何一个核可以并行执行三条指令,这个是编译器要做的;不过除此之外并没有再涉及到指令调度的地方,编译出来的指令在哪个CPU上执行完全取决于操作系统的调度和应用程序,一段C代码如果是在多个进程/线程中执行,那就会分散在多个核上,而如果是单进程单线程的,同一时刻只可能在一个CPU上执行。

实际上SMP在核一多之后调度的效率很差的,所以并行还是取决于程序的设计。现在Linux不是提供了绑定到CPU的功能吗,FreeBSD7.1开始好像也有了类似的功能;Tilera除了使用标准的Linux之外,还专门提供了一套更简单的C库用于并行。现在对于多核的应用更趋向于每个核分析一些简单的任务不停地跑。以前我工作的公司某部门多核就是有一个核带操作系统跑控制,其余跑协议的每个分一个在上面裸奔;Tilera直接提供了类似功能的支持,对于效率相关的可以设计为一个Hypervisor驱动,对于CPU的各种初始化等提供了统一的支持,比自己直接写裸奔程序简化了许多,但最始真正跑协议等相关应用时又能达到裸奔的效率。

论坛徽章:
0
17 [报告]
发表于 2009-03-13 17:59 |只看该作者
谢谢!我已经明白啦!
任务调度靠 OS 的,这个不关心啦。应该不是分散到多个 Core 上,而是靠 #pragma 指导 CG 。不过 VLIW 的指令调度倒是很有意思的一个东西,不仅仅是简单的调度了。
ps AMD 的优化手册上说 k10 可以自动并行化某些 push 和 pop

论坛徽章:
0
18 [报告]
发表于 2009-03-13 19:35 |只看该作者
怎么说呢,VLIW是和Superscaler等一些功能等价的东西,属于Instruction level parallelism;但思路上却有些相反。Superscaler是把很复杂的指令并行处理交给了CPU本身在运行过程中去动态地分析,而VLIW是把指令并行的分析交给了编译器,编译时就分析哪些指令可以一起执行并放在一起形成所谓的Instruction bundle,CPU执行时一次性读一个Bundle,解码为几条指令后交给不同的单元并行地执行。VLIW的一个好处是简化CPU的设计从而降低功耗,可以从Wiki中找到一些资料:
http://en.wikipedia.org/wiki/Very_long_instruction_word

好像有地方说Intel的IA64也支持VLIW,但不知道真假,因为不用Intel的片子也没考证过。

[ 本帖最后由 Cyberman.Wu 于 2009-3-13 19:36 编辑 ]

论坛徽章:
0
19 [报告]
发表于 2009-03-13 20:07 |只看该作者
IA64 本来就是 VLIW 的,就是指令不等长。
降低功耗是因为 Superscaler 多了一个硬件调度单元,而这个硬件调度单元还需要一个判断数据依赖的电路,不仅如此,一个数据旁路电路对  Superscaler 来说是必须的。
Superscaler 的 CPU 运行二进制,自己调度,不用重新编译, VLIW 就不行了,我的想法之一就是解决这个问题,当然,没做出来之前咱不吹牛。

论坛徽章:
0
20 [报告]
发表于 2009-03-13 20:34 |只看该作者
原帖由 Cyberman.Wu 于 2009-3-13 17:22 发表
软件的话OpenMP好像是可以插入一些编译指令来自动并行,但具体咋做的不知道了,是结合了系统的线程机制还是做了某种框架来自动调度? ...


说的对,两者都有,前者是基础.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP