Computer Hope

Hardware => Hardware => Topic started by: DanielSpanjar on July 15, 2012, 01:30:41 PM

Title: A question about my processor
Post by: DanielSpanjar on July 15, 2012, 01:30:41 PM
As I'm learning more about computers every day, I honestly have one thing in my mind that has puzzled me so I would like an answer.

I'm currently running my processor on an Intel(R) Pentium(R) 4 3.00ghz, but when I look in my System Information it shows that I have two processors but the other one is clocked at 2.99 ghz. Can someone perhaps educate me on why there is a second core even if my CPU runs on a single core? I'll put a screenshot up for download if you really need it.


[year+ old attachment deleted by admin]
Title: Re: A question about my processor
Post by: BC_Programmer on July 15, 2012, 01:39:57 PM
A Processor feature called Hyper-Threading manifests itself as a second, "virtual" Processor as seen by the Operating System.
Title: Re: A question about my processor
Post by: DanielSpanjar on July 15, 2012, 01:46:05 PM
A Processor feature called Hyper-Threading manifests itself as a second, "virtual" Processor as seen by the Operating System.
Could you tell me a little about this feature?
Title: Re: A question about my processor
Post by: Computer_Commando on July 15, 2012, 02:25:34 PM
Download, install & run HWInfo 32 & it will tell you all kinds of things about your computer, cpu, RAM, etc.
http://www.hwinfo.com/download32.html
Title: Re: A question about my processor
Post by: BC_Programmer on July 15, 2012, 02:30:51 PM
Quote
Could you tell me a little about this feature?
Really it doesn't add one Virtual processor, but instead shows itself as two virtual processors which share many common elements of the processor die. Essentially, the processor can run two sets of instructions simultaneously. It's not as big an improvement as having two completely separate cores entirely, but it does have some gains. Some of the more recent processors in fact have hyper-threading on each core, so a quad-core i7 processor has effectively 8 'processors' in some respects.

Internally, a HT-enabled Processor has two sets of Registers, control registers, and other architecture components. The 'two processors' share the same cache, execution units, and buses.

What it does, basically, is allow a processor to fill "idle" time by running another set of instructions. This is normally what an OS does, of course- idle time is usually filled by scheduling some other program or thread to run. But this gives it more granularity.

The OS thinks there are two processors, so it schedules threads to run on those two processors. The threads running on each processor run in such a way that they "share" parts of the processor; The benefit is that if one of the virtual processors is waiting for memory or some other operation, the other virtual processor can keep going, while the other virtual processor is waiting. Normally, what would happen is that time would be "wasted" as the processor just sits idle for several clock cycles waiting for memory or some other operation. Also, one Virtual processor can can be, say, reading from memory while the other one is using the Execution units to do math or arithmetic or other computations.  In addition, because this is done "below" the OS, it is far faster than the scheduling that would be done for a non HT enabled processor.

Title: Re: A question about my processor
Post by: DanielSpanjar on July 15, 2012, 05:36:06 PM
Really it doesn't add one Virtual processor, but instead shows itself as two virtual processors which share many common elements of the processor die. Essentially, the processor can run two sets of instructions simultaneously. It's not as big an improvement as having two completely separate cores entirely, but it does have some gains. Some of the more recent processors in fact have hyper-threading on each core, so a quad-core i7 processor has effectively 8 'processors' in some respects.

Internally, a HT-enabled Processor has two sets of Registers, control registers, and other architecture components. The 'two processors' share the same cache, execution units, and buses.

What it does, basically, is allow a processor to fill "idle" time by running another set of instructions. This is normally what an OS does, of course- idle time is usually filled by scheduling some other program or thread to run. But this gives it more granularity.

The OS thinks there are two processors, so it schedules threads to run on those two processors. The threads running on each processor run in such a way that they "share" parts of the processor; The benefit is that if one of the virtual processors is waiting for memory or some other operation, the other virtual processor can keep going, while the other virtual processor is waiting. Normally, what would happen is that time would be "wasted" as the processor just sits idle for several clock cycles waiting for memory or some other operation. Also, one Virtual processor can can be, say, reading from memory while the other one is using the Execution units to do math or arithmetic or other computations.  In addition, because this is done "below" the OS, it is far faster than the scheduling that would be done for a non HT enabled processor.
Awesome! That's a big plus! So some PC games that would require Dual-Core processors would work? Just a little bit slower than normal?
Title: Re: A question about my processor
Post by: BC_Programmer on July 15, 2012, 06:24:00 PM
Awesome! That's a big plus! So some PC games that would require Dual-Core processors would work? Just a little bit slower than normal?

Probably not, no. Most PC games that require dual core processors require dual core processors- not hyperthreading. What I mean is- the people who chose the requirements most likely knew about hyperthreading, and found it inadequate for the game. If the game has loose checks (such as just asking the OS for the number of processors) it might get past that check but the game will certainly run unplayably slowly because it was written with the idea of two completely disparate processors cores rather than hyperthreading; getting the most out of hyperthreading requires software support.