OT: Yet Another Unhappy Customer for Vista

S/"Hyper threading"/"multi threading"/

"Hyper threading" is Intel's version of multi-threading.

;-)

--
  Keith
Reply to
krw
Loading thread data ...

On Jun 12, 6:15 am, krw wrote: [....]

Yes.

Reply to
MooseFET

How does that work? Are multiple instruction streams (with different program counters) interleaved in the execution pipeline?

That makes my head hurt.

John

Reply to
John Larkin

No, a term becomes accepted when the majority of practitioners agree on its meaning. "Multitasking" was a common term by the 1970's, long before multicore CPUs came along.

Did you fine a definition of "multitasking" in the Bible? Actuually, Wikipedia is almost as good:

formatting link

Why in the world would anybody even think of writing an os that uses cooperative multitasking?

John

Reply to
John Larkin

Geez, you really told me. BTW, I meant to put Jackoff a Shepard. Much funnier.

Jim

Reply to
James Beck

I didn't know Pascal programmers were TSR's, Jackoff a Shepard.

Reply to
James Beck

Intel has a cute little presentation on their website, but basically, if a stream is using the integer unit that leaves the floating point unit free to be used by another stream. If both program streams need the same execution unit, you are stuck with the same performance as a single thread core. The idea is to get more utilization of the entire CPU. SO, I guess you do kinda have interleaved streams in the pipe. I'm sure there are thousands of little transistors dedicated to just keeping track of the PC's and other assorted context registers for the interleaved streams.

Jim

Reply to
James Beck

Surely you meant millions!

I always thought that the ultimate processor would have, say, 256 cores, so every process could have its own cpu. No context switching overhead!

John

Reply to
John Larkin

Well, a million is "only" a thousand thousand ;) I checked my performance indicator and I have 66 total processes running. That would leave me 190 cores free for other stuff. Sounds fun. When can I have one? I'm still waiting for bigger memory sticks to become available before I jump into one of the 64 bit flavors of Windoze.

Jim

Reply to
James Beck

Because it's simpler?

For an embedded system, I think cooperative multitasking can work just fine. For a general purpose computer (or as the complexity of an embedded system becomes large), a general purpose, pre-emptive multitasking OS is certainly the way to go.

Reply to
Joel Kolstad

(on hyperthreading's transistor utilization)

I doubt it. The whole point of hyperthreading is that is uses something like only 10% more transistors that *can* (when everything is set up just right) get you something *approaching* the utility of two full-fledged cores.

Yes, but the problem there is memory access. Even if you're willing to spend the money for decent-sized caches on all your CPUs, cache misses become

*really* painfully expensive when you have to arbitrate between 256 cores trying to access it. At that point, realistically you have to switch to a very style of programming (as done on, e.g., Connection Machines --
formatting link
if you want to get decent performance out of the silicon.
Reply to
Joel Kolstad

Program counters? Who needs those?

It's actually very simple. The processor keeps track of two instruction streams. There is an A/B bit in the register files that indicates the stream executing, then let the renaming hardware figure out what threads belong to what resources. Since almost every register in a modern processor is renamed anyway, multi-threading almost comes out in the wash.

Multi-threading doesn't add much complication, once you look at the guts of a modern out-of-order processor.

--
  Keith
Reply to
krw

Yes, but I think they're stretching the truth here. They can only issue instructions from one stream each cycle, so just because an execution unit is free doesn't mean the other thread can use that slot.

--
  Keith
Reply to
krw

If "set up just right" == "degenerate case", maybe. I reality it buys less than 10% and in many cases, nothing. It may even have a negative effect. Intel's P4 version of HT isn't all that great.

NUMA solves many of these problems. AMDs K8 is a much system better architecture for MPs.

--
  Keith
Reply to
krw

Stretching? That is exactly what they imply.

Jim

Reply to
James Beck

formatting link

Cheers, James Arthur

Reply to
James Arthur

You mean, cooperative vs preemptive, right?

Thanks, Rich

Reply to
Rich Grise

for

That's funny. I bought my 13 year old son the game development kit from Parallax. He spends hours farting around with an old Toshiba laptop I had laying around running DOS. He loves to play the old DOS games and writing little programs using QBASIC. I thought he would enjoy hacking away on some different hardware.

Jim

Reply to
James Beck

Then, you get the I/O bottleneck. ;-)

Cheers! Rich

Reply to
Rich Grise

If instructions are being executed at the speed they pour out of L2 (or whatever) cache, the compute power indeed does not grow linearly with the number of cpu's. But the context switch overhead is still zero. And if each cpu has a small local cache of its own, it can run tight loops without impacting the others. The real point is that OS design would be a lot different.

Only one of the cpu's runs the actual OS, assigning tasks to other cpu's, and that's *all* it would do. A bunch more could be in charge of stuff like file systems, device drivers, ethernet ports, things like that. It could be crashproof.

John

Reply to
John Larkin

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.