- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm a novice. So if this question doesn't make any sense, please excuse me. I'm looking into the Intel Software Developer’s Manual and come across this IA32_CLOCK_MODULATION MSR. In the description table of On-Demand Clock Modulation Duty Cycle Field Encoding, it shows a different percentage of Duty Cycle for different Duty Cycle Field Encoding. So, my question is what do those percentages (%) mean. Does it mean that, for example, setting Field as 010B, I'm using 25% of the processor's available cycle?
- Tags:
- Intel® Advanced Vector Extensions (Intel® AVX)
- Intel® Streaming SIMD Extensions
- Parallel Computing
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
With "duty cycling", the clock signal is not passed to the processor core every cycle. Since the processor core only does things when it receives a clock signal, this reduces the effective clock rate of the core. "Clock modulation", which allows you to specify what fraction of "normal" cycles send the clock signal to the core. Newer processors support the extended clock modulation. The bottom 4 bits of the IA32_CLOCK_MODULATION MSR tell how many cycles (out of 16) will send the clock signal to the processor core. So for 010b, the processor core will receive the clock signal 4 times out of every 16 cycles, and it will therefore appear to be operating at 1/4 of the clock frequency.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
With "duty cycling", the clock signal is not passed to the processor core every cycle. Since the processor core only does things when it receives a clock signal, this reduces the effective clock rate of the core. "Clock modulation", which allows you to specify what fraction of "normal" cycles send the clock signal to the core. Newer processors support the extended clock modulation. The bottom 4 bits of the IA32_CLOCK_MODULATION MSR tell how many cycles (out of 16) will send the clock signal to the processor core. So for 010b, the processor core will receive the clock signal 4 times out of every 16 cycles, and it will therefore appear to be operating at 1/4 of the clock frequency.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you very much.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
One last question. If I change the bottom 4 bits of the IA32_CLOCK_MODULATION MSR, does it change cycle for all the available core? If yes, is there any way to change the cycle for a particular core?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
This is documented in Volume 3 of the Intel Architectures SW Developer's Manual: Section 14.7.3 "Software Controlled Clock Modulation"
"For multiple processor cores in a physical package, each processor can modulate to a programmed duty cycle independently."
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
>>The bottom 4 bits of the IA32_CLOCK_MODULATION MSR tell how many cycles (out of 16) will send the clock signal to the processor core. So for 010b, the processor core will receive the clock signal 4 times out of every 16 cycles, and it will therefore appear to be operating at 1/4 of the clock frequency.
Did you mean to say 0100b?
And I assume a value of 0000b provides for 16 times out of every 16 cycles. (IOW 0000b indicates no modulation)
Jim Dempsey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The '010b' is the encoding for the "non-extended" version -- bits 3:1 -- where it provides the active count for eight cycle blocks.
This expands to '0100b' in the extended mode -- which uses bits 3:0 -- where it represents the active count for sixteen cycle blocks.
Section 14.7.3 of Volume 3 of the SWDM says that '000b' is reserved in the base (eighths) mode and '0000b' is reserved in the extended (sixteenths) mode. So the implementation can do whatever it wants if you set the enable bit, but leave all the duty cycle bits clear.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page