Why do I get CPU overloads with MutliCore enabled and not when MultiCore disabled?

I'm using R2012a XPC with an i7 processor. When I enable all 4 cores in the BIOS but uncheck "Multicore CPU Support" in xpcexplr, my XPC target runs very fast without CPU overloads. However, when I check "Multicore CPU Support" in xpcexpr and run anything, I get CPU overloads. I can't even run the demo mulitcore expample, dxpcmdsdemo, off the Matlab website without CPU overloads. Is there a BIOS setting I'm missing? Anyone else seeing this problem?

1 Comment

One possibility is that the BIOS does not provide correct timer frequency.
When "Multicore CPU Support" is unchecked, our single core kernel relies on the programmable interval timer (PIT) (<http://en.wikipedia.org/wiki/Programmable_Interval_Timer)>, which runs at 1.193182 MHz on every PC.
When “Multicore CPU Support” is checked, our multicore kernel relies on the timer in the APIC (<http://en.wikipedia.org/wiki/Advanced_Programmable_Interrupt_Controller)>. The APIC timer has higher resolution (typically 200MHz). However, the APIC timers run on different frequencies on different machines, so our kernel must read the frequency from the BIOS on every machine. If the frequency reading from the BIOS is not right, the actually sample time could be shorter than the nominal sample time, which can cause overloads.
To check the BIOS reading, we can run model xpcosc on the target with “Mutlicore CPU support” checked. We can set the stop time to be 30 seconds or longer. Using tic/toc commands on the host, we can check how long it actually takes for the model to run to its end. If toc is significantly different from the stop time, it tells us the frequency reading in the BIOS is wrong.
Thanks

Sign in to comment.

Answers (0)

Categories

Asked:

on 2 Aug 2012

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!