作者cyrilhuang (YingYingMeiDaiChu)
看板CSSE
标题Re: 有人可以用硬体的角度解释吗??
时间Thu Feb 16 16:38:36 2006
※ 引述《tcmbug (bug)》之铭言:
: 我是上面一系列的原po
: 我想我把我的问题再问得仔细一点好了,其实大部份大家的回答都是软体
: 或是OS的答案,有没有人可以从硬体的角度说明,如之前我看到有个人问
: SMT (simultaneous multithread) 或是 thread partitioning(如何产生绪?)
: 之类的问题,因为这些东西在教课书上(硬体)几乎没有出现过,或是简单
: 的带过了,我重新的整理我的问题如下:
: 1)今天看了一篇paper,它把一段程式看成一个process然後一些独立的process
: 序列就当作是一个thread,这样的说法对吗?
well,
再怎麽样的multitask在cpu中也是一段一段执行的 由os的scheduler分配time slice
所以硬体上传统单一cpu中是没有所谓multithread的
那只是os上的一种观察的时间scale 感觉起来是平行的 但永远都是sequence的
这样子是有问题的 如果你的程式中有I/O的等待 那就会浪费cpu资源了
即使在superscalar里面的pipeline 也有prefetch,decode,execute等等cycle.
这样的cycle如果有cache miss等 後段的cycle也是浪费的
superthread 是在同一个执行cycle中如果这个thread不行往下动了 可以让给
下个可执行thread
smt hyperthread是cpu内有部份的电子线路是duplicate的 所以可以同时执行两个
thread(thread的PC总是要分开的,所以program counter一定有duplicate)
well,要享受这样的好处OS, compiler要支援
well,
回到OS
kernel thread是scheduler context switch的基本单位
抱歉 老婆在骂我了
明天继续OS的process跟thread.....
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 69.226.208.94
1F:→ WYchuang:为啥回答问题的同时还可以施放闪光弹啊> <" 02/16 19:02
2F:推 lg31cm:XD 02/20 11:13