作者jk21234 ()
站内PC_Shopping
标题Re: [情报] Intel 新平台 LGA1156 相关 NDA 资料揭露
时间Wed May 6 15:36:54 2009
※ 引述《fsaa3dfx (屌哦屌哦\゜@゜/)》之铭言:
: → kuninaka:软体里的Thread跟CPU Thread应该不一样吧 05/06 01:17
内容不一样,软体下的multi-thread是发展已久的概念.
cpu的multi-thread可以说是对应这种(多执行绪的多工OS)环境下.
提出的增加效能的硬体机制.
也可以说cpu的multi-thread是在ILP(Instruction-level parallelism,指令
平行度)无法持续发展的情况下,利用cpu闲置执行单元的方法...
只这样讲好像在绕口令一样.从基本开始好了.....
现代的作业系统(OS)都有process跟thread的概念.
不过,原先process跟thread的分界不明显.都被认为是
程式的执行实体.一个程式可以同时被执行很多份,就会有不同的执行实体.
在後来由於作业系统也加入了资源的分配,控管,保护(比如不能让
其他人的程式去窥探你的程式证在干嘛)等等.所以就後来的观念来说,
process比较接近实际分配系统资源的单位,而thread就接近於分配cpu执行的
实体,且实作thread的资源消耗会小於process.
以Windows下来说.每个process(处理程序)都负责向系统要求配置资源,
也拥有至少一个thread.实际执行则是将它之中的thread放到cpu上执行.
Resource
Process --------> 档案,记忆体,GDI,印表机等等....
---> Thread 1 &(2,3,4.....)
从作业系统端来看,则是系统内存在着N个process,以及M个thread
(M>=N),然後分配cpu轮流执行M个thread.以达成服务多人或者是
单人使用下的多工作业系统的目的...
另外由於过去的高速电脑已经使用多cpu,所以需要效率的程式也会
自行实作多个thread.这些thread就可以分配在不同的cpu上执行.
这个是20世纪以前的事情,当时不管cpu性能有多高,系统内有多少cpu,
每个cpu正在执行的thread数量都是1个.
可是後来发生了一些改变..........(後续)
: → kuninaka:我觉得INTEL的HT是一种概念 实际上跟OS Thread应该不一样 05/06 01:20
Intel的HT是买下DEC的副产品.最早是DEC在Alpha上提出的,
当时称作SMT(Simultaneous multithreading)
从SMT到HT基本上没有甚麽差别,因为当时的P4很有需要,而且
实作的成本也不高就摆上去了.
SMT是甚麽概念?在一个cpu里面,我可以放入很多执行单元.
可是即使加入了Out-of-Order执行,register-renaming等去解
决各种问题,能利用的比例也不会无限提升
(也就是前面说的ILP提升不起来的问题).
塞8个ALU很简单,可是让程式在同一个cycle里面能利用的ALU
超过2个就开始有难度啦.说不定塞8个ALU里面,程式使用的比例
从2~6个不等而已. 这时候在cpu内.....
PC(Program Counter)
+---->Register files
ALU/LS (执行单元)
1.还不错 2.有点忙 3.好凉 4.没事 5.很久没叫我了
SMT等cpu实作的multi-thread,就是硬体多一份PC/Register File.
然後......
Thread 1 Thread 2
PC(Program Counter) PC(Program Counter)
+---->Register files +---->Register files
ALU/LS (执行单元)
1.忙左边 2.忙左边 3.忙左边 4.忙右边 5.忙右边
这样相比上面,执行单元的利用率就变高了.......
如此实作的好处有:
硬体要变更的很少,如上,主要是多放置一组暂存器
软体要变更的也很少.由於作业系统在分配多工执行的时候,
需要执行的context switch这个动作也是将硬体的PC/Register File
保存在记忆体内以及移出,这时候cpu多一组pc/reg,跟系统多装一颗cpu
要做的工作是差不多的.
也有人因此称multi-thread为模拟多cpu,不过这是误解.
不过,虽然SMT的硬体实作成本很低,不过如上的特性,
也就导致说它能带来的效能因为应用程式不同而会有巨大的差别.
有些程式若本来就能在单一执行绪下充分使用cpu的执行单元,
则开启SMT後效能改进就不明显.
还有一个可能会出现的反面效果就是.两个thread是独立的,
所以两方对记忆体存取的动作也互不相干.但是cpu上的cache
只有一份.所以两者会互抢.......这是部分程式开启SMT後效能
下降的可能原因之一.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.115.243.218
1F:推 RHTZ:看不懂还是要推个用心专业!! 05/06 15:37
2F:→ jk21234:用有提到的关键字去搜寻相关的教学投影片 05/06 15:37
3F:推 QuentinHu:快推要不然别人会说我看不懂~ 05/06 15:40
4F:推 kuninaka:感谢!!! 05/06 15:44
5F:→ kuninaka:这个就看懂了!! 05/06 15:45
6F:推 kevinchu26:我这篇文章花了5分钟去看它....针专业 05/06 15:47
7F:推 mebum: 大致看懂 专业推~ 05/06 15:48
8F:推 kuninaka:P4的闲置资源很多 管线拉到31层 XD 05/06 15:49
9F:→ kuninaka:听说VIA也有HT类似的相关技术 05/06 15:49
10F:→ jk21234:找谁没有用过比较快 .... 05/06 15:55
11F:推 pol61x438:有看没有懂 囧 我是实际应用派 XDDDD 05/06 16:13
12F:→ yukitowu:我只能说好险我学的东西还没还给老师X|D 05/06 16:25
13F:推 wch6858:推 从p4後 pipeline就没这麽多了 05/06 17:13
14F:推 ang728:有看有推 消化中 05/06 17:58
15F:推 gbcg9725:好专业 05/06 18:18
16F:推 chadjye:推~ 05/06 18:30
17F:推 smartclever:P4是典型的高频低能代表作,但是他里面用到的东西却 05/06 18:48
18F:→ smartclever:是很多教科书或paper提出来的好物 05/06 18:49
19F:推 dolphinus:其实第二段就全讲完了. 高手文推 05/06 18:57
20F:推 R119:有写过多核心的 MPI 跟OpenMP 会比较有感觉 05/06 19:16
21F:→ jk21234:虽然AMD没做,不过我认为multi-thread对K8仍然有帮助 05/06 19:19
22F:推 kuninaka:wave pipeline之类的XD 05/06 19:35
23F:推 aa78121:窥探你的程式"证"在干嘛 这是错字吗XD 05/06 21:18
24F:→ aa78121:忘了感谢好文 (〒﹏〒) 05/06 21:19
25F:推 vixen:那持续让CPU负担100%的程式, 多跑HT有没有用呢? 05/06 21:40
26F:推 dolphinus:如果程式单跑一个 core 就 100%, HT 通常是没用的.. 05/06 21:51
27F:→ dolphinus:除了 atom 仍旧可以正常运作以外. 05/06 21:52
28F:→ jk21234:100%就没用的观念是错的.... 05/07 01:45
29F:推 tactical:专业推,但是仍看不懂="= 05/07 08:15
30F:推 VictorTom:推专业....:) 05/07 19:00
31F:推 landattack:谢谢jk21234,很棒的资料与解说! 09/18 08:22