Tetedeiench
n00b
- Joined
- Jan 16, 2007
- Messages
- 40
Actually your English is pretty good.
I believe the phenomenon you are calling bubbles is actually wait states where the processor is actually looking for something to do. During those wait times, as a rule I believe most of the transistors are turned off. Also keep in mind RAM wait states add into the equation as well and these days of DDR2 I keep larger and larger numbers in RAM timings because the RAM cant keep up with the CPU, not to mention the cache memory in the CPU is subject to these same latencies.
That being said, it looks like the stress tests simply turn on as many transistors as possible using complex code.
So, at what point does a given stress test ask more of the processor then any real world application, which again brings up what really is 100% CPU usage?
Yes, it's wait states. You can have at least 2 different wait states i know of : one which is because of latency, i.e. cache reading delay, memory, HDD... if every instruction depend on that, the CPU will be forced to "IDLE"... and won't be able to do a thing meanwhile.
The other is induced by the CPU emptying its pipeline because one branching prediction was wrong. It's not really idling this time, but i think there will be one stage in the pipeline where nothing will be done.
Then, you can have much more wait states, especially if you look deep into the CPU architecture(there's an excellent article on xbitlabs about the "replay" feature in the netburst architecture, and how this can induce alot of delay).
Anyway, as it is now, i can't think of any other "real world" application that will be more demanding than OCCT, but for other stress tests. According to my tests, even encoding a movie is less demanding (i didn't test all the codecs !). And games have too many branching usually to be more demanding than OCCT. They are however more demanding on the power supply side however (CPU +GPU under full load).
So i guess 100% as displayed in Windows is viewed at the OS viewpoint : it does not scan what the CPU is actually really doing, it only reports that with the curret tasklist, the CPU is busy 100% of the time. It ignores the fact that the CPU can be busy... waiting
I personally think this is right, as a regular user doesn't really care about the efficiency of a code, and thus doesn't care if the CPU is reported as 80%, as it is already under full load (the 100% under Windows/linux).
As for stability testing, your goal is, among others, to use as many transistors as you can. A good way is by using SSE, as it is using one of the biggest unit in the CPU, and doing repeatedly CPU cache hits (it is not that bad in terms on latency, if the code is done right, and you can see in any CPU blueprint how big the L2 cache is).
In fact, the more trasitors are involved, the more likely :
-You'll find a part that cannot take the current frequency (you're using as many parts as possible)
-You'll generate more heat (more transistors used = more heat, "Joule effect" (effet joule in french)), and that impacts stability as well
-You'll use more electricity, which in turns may point out a failing power supply.
In later versions of OCCT, i plan to add a module for testing the graphic card as well. The goal isn't to clone ATITool in artifact scanning, but just to load the power supply and see how it behaves when CPU and GPU(s) are both under full load.
And thanks for your remark about my english being good, i appreciate it I'm happy i am understandable