View Single Post
Old 05-22-2005, 10:15 PM   #6
robertthebard
Xanathar Thieves Guild
 

Join Date: March 17, 2001
Location: Wichita, KS USA
Age: 62
Posts: 4,537
Quote:
Originally posted by Vaskez:
quote:
Originally posted by Charlie:
Any chance of getting this in plain English?

Hyper threading?...Sounds like a weaver on speed. What's hyper threading?...What's RSA?
LOL! Not everything can be explained in "plain english" without the necessary background. Actually I've never bothered to read up on how hyper threading works, but just to intro the topic: you know what a process is right? Open up windows task manager and you have a list of running processes, like each application usually has its own process - this is an entity that has its own memory space etc. i.e. memory used by one process cannot be used by any other etc. A thread is like a process within a process - for example microsoft word will need several threads seemingly running at the same time: e.g. one thread will monitor keyboard input, another mouse input, while another handles updating the screen - however threads may all share the same memory space, that's why they're able to communicate with each other, they're all within the MS word process.

Of course, since the processor can only do one thing at a time, what is happening is that it is processing instructions from one thread then very quickly switching to instructions from another thread over and over again. In hyperthreading from what I understand with the very small bit I've read, what happens is that instructions from different threads can be in the pipeline at once.

Now you prob don't know what pipelining is (*digs in memory*). Basically when you have an instruction for a processor, say something like "do contents of register 1 + contents of register 2 (registers are just bits of memory) and give me the answer" there are many stages. 1. the instruction has to be fetched from cache 2. it has to be decoded into machine language. 3. fetch the contents of registers 1 & 2, 4. compute the answer 5. store the result in a register

something like that. Now of course to avoid wasting time, the processor can be decoding one instruction while fetching the operands for another, while storing the result of the previous instruction so in hyperthreading, I think what happens is that multiple threads are allowed to contribute instructions to the pipeline at once so that the MOST efficient combination of instructions is processed at any time. By most efficient I mean the ones that waste least amount of time. E.g. having these 2 instructions "add register 1 to register 2 and store the result in register 3" and "add register 3 to register 4 and store in register 1", you have to wait for the first one to finish to get the right values for the registers. So you can't have 2 being executed while 1 is still in the pipeline, so instead of waiting around the processor will take another instruction.

Anyway hope that helps...can't be bothered to explain further now
[/QUOTE]ouch, that explanation didn't explain anything!!! [img]tongue.gif[/img] That's too much for one sitting, I think I'll come back and read it again later, so I can figure out what you said...
__________________
To those we have lost; May your spirits fly free.
Interesting read, one of my blogs.
robertthebard is offline   Reply With Quote