I just have a simple question and I wonder if anyone has a not so simple answer
Has anyone developed with or under hyperthreading yet? Like how different are calls and all kinds of good stuff like that!
Thanks!
-GT
Hyperthreading
Re:Hyperthreading
The OS sees each hyperthreading unit as a separate processor. For example, Windows NT 4 doesn't know about hyperthreaded CPUs yet it still identitifes two separate CPUs for one hyperthreaded CPU.
- Pype.Clicker
- Member
- Posts: 5964
- Joined: Wed Oct 18, 2006 2:31 am
- Location: In a galaxy, far, far away
- Contact:
Re:Hyperthreading
i suppose the only thing that might differ is the initialization sequence ... but i only gave a quick look to those HyperThreading whitepapers.
- Pype.Clicker
- Member
- Posts: 5964
- Joined: Wed Oct 18, 2006 2:31 am
- Location: In a galaxy, far, far away
- Contact:
Re:Hyperthreading
According to Intel, they have the room to duplicate the processor state, so you have one "ALU" unit, but two set of "ALU_status" pipeline-registers, so that you can remember virtual processor 1 want to do an ADD on R1 and R3 and virtual processor 2 want to do SUB on R5 and R6.
If for some reason, the virtual processor 1 must wait before it can issue the ALU operation (for instance, because R3 cannot be used immediately because it waits for the result of the previous operation on VP1 to complete, the operation for VP2 is issued on that cycle.
Other such "waiting states" will occur when a VP need data from the main memory (which can take up to 10 cycles on a 2GHz with 200MHz RAM)
and from an OSDEV point of view, it gives you a dual processor for the price of a normal system. And some operations involving a client and a server thread can be done *really* faster when client and servers execute on separate processors simultaneously (no more task switches, for instance
If for some reason, the virtual processor 1 must wait before it can issue the ALU operation (for instance, because R3 cannot be used immediately because it waits for the result of the previous operation on VP1 to complete, the operation for VP2 is issued on that cycle.
Other such "waiting states" will occur when a VP need data from the main memory (which can take up to 10 cycles on a 2GHz with 200MHz RAM)
and from an OSDEV point of view, it gives you a dual processor for the price of a normal system. And some operations involving a client and a server thread can be done *really* faster when client and servers execute on separate processors simultaneously (no more task switches, for instance