Ironworks Gaming Forum

Ironworks Gaming Forum (http://www.ironworksforum.com/forum/index.php)
-   General Discussion (http://www.ironworksforum.com/forum/forumdisplay.php?f=36)
-   -   Hyper-Threading considered harmfull (http://www.ironworksforum.com/forum/showthread.php?t=93629)

Hivetyrant 05-22-2005 05:23 PM

Read it for yourself...

Quote:

Hyper-Threading Considered Harmful
Hyper-Threading, as currently implemented on Intel Pentium Extreme Edition, Pentium 4, Mobile Pentium 4, and Xeon processors, suffers from a serious security flaw. This flaw permits local information disclosure, including allowing an unprivileged user to steal an RSA private key being used on the same machine. Administrators of multi-user systems are strongly advised to take action to disable Hyper-Threading immediately; single-user systems (i.e., desktop computers) are not affected.

I presented details of how to exploit this security flaw at BSDCan 2005 in Ottawa on May 13th, 2005. For those who were unable to attend my talk, I have written a 12-page paper, Cache Missing for Fun and Profit, discussing this flaw and related problems, both realized and theoretical. (There is more at the site)
[ 05-22-2005, 05:27 PM: Message edited by: Hivetyrant ]

RoSs_bg2_rox 05-22-2005 05:36 PM

I'm sure it has just increased considerably now he has written his documentation. :rolleyes:

Charlie 05-22-2005 06:22 PM

Any chance of getting this in plain English?

Hyper threading?...Sounds like a weaver on speed. What's hyper threading?...What's RSA?

Beaumanoir 05-22-2005 08:08 PM

I thought it was going to be a fancy name for spamming.

Vaskez 05-22-2005 08:54 PM

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 :D

robertthebard 05-22-2005 10:15 PM

Quote:

Originally posted by Vaskez:
</font><blockquote>quote:</font><hr />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 :D
</font>[/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...

Hivetyrant 05-23-2005 12:14 AM

lol, basically, all processors (except AMD-64 Bit and Intel 64-Bit) can only handle one process at a time, but with Hyper-threading, the processor can essentially "split" itself and do two processes at a time, making your PC much better at handling multiple things/programs ;)

RoSs_bg2_rox 05-23-2005 05:42 AM

Only thing is, hyperthreading isn't really used much these days anyway, as programs don't support it etc. And infact you might even see a performance loss in some games with it enabled.

Vaskez 05-23-2005 10:29 PM

bump...I didn't write all that for nothing! :D

HiveTyrant - what are you on about? [img]tongue.gif[/img] All modern processors can handle multiple processes (seemingly) "at once". It seems to me just that they couldn't allow instructions from more than one thread to be in the pipeline at once and with hyperthreading they can (that's from 2 mins reading :D )

Hivetyrant 05-23-2005 10:51 PM

That's what I meant, as you said they can technicaly only process one thing at a time, but they switch between them so damn fast you don't notice.


All times are GMT -4. The time now is 07:53 AM.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
©2024 Ironworks Gaming & ©2024 The Great Escape Studios TM - All Rights Reserved