This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

more power managment

Other Parts Discussed in Thread: TPS62350, TPS65073, TPS65950

I seem to remember there might be a white paper that explanes the power management features in the OMAP35XX processor. Can someone point me to it?

A couple quick questions:

Is the SmartReflex and DVFS the same thing? Are they mutually exclusive?

I understand I can change OPP but is this mutually exclusive if SmartReflex?

  • DavidVescovi said:
    I seem to remember there might be a white paper that explanes the power management features in the OMAP35XX processor. Can someone point me to it?

    I think the document you are looking for is this?

    DavidVescovi said:
    Is the SmartReflex and DVFS the same thing? Are they mutually exclusive?

    These are two seperate power saving mechanisms, SmartReflex is targeted at power savings based on temperature and process variation so it is independent of the actual processor load, whereas DVFS (Dynamic Voltage and Frequency Scaling) is targeted at power savings based on performance variation, where lower cpu loads mean lower frequencies and voltages for lower power.

    DavidVescovi said:
    I understand I can change OPP but is this mutually exclusive if SmartReflex?

    Changing the OPP (Operating Performance Point) is essentially DVFS, where either your application or a system driver changes the OPP based on system performance needs.

  • Hello.

    You could use both Smartreflex and DVFS to accomplish the same exact objective which is change of the device operating point.

    DVFS is more of a coarse technique. Keeping frequency change aside, you explicitly tell the power management IC what your device voltage needs are.

    SmartReflex fine tunes this furthur based on chip operating characteristics. The smartreflex unit monitors the supply voltage and depending on the results of comparision (unique to a chip) takes a decision to instruct the PMIC to either increase or decrease the supply in small steps.

    If my understanding is right, the OMAP3 SmartReflex requires minimal software intervention. Just program the SmartReflex with desired operating point and it does the rest.

    Best regards,

    SS

     

  • Smartreflex does adjust the voltage level for you, but it does not change the frequency, so it effects the voltage of your particuar OPP (if you consider OPP as a frequency), but is not really tied directly with your OPP directly since it will change the voltage independently to scale with what your particular silicon can handle at the given conditions.

    Shobhraj Singh said:
    If my understanding is right, the OMAP3 SmartReflex requires minimal software intervention. Just program the SmartReflex with desired operating point and it does the rest.

    This is correct, once initialized the SmartReflex will adjust the voltage without any software intervention, you can heat or cool the device or change the frequency and the voltage will automatically adjust to the lowest possible stable value for the lowest power consumption at the given conditions, just note that this requires a fully Smart Reflex compatible power supply (a.k.a Smart Reflex Class-3), for example the TPS659xx family or the TPS65073 or TPS62350 can handle this. You can also achieve this in software for other power supplies that are not SmartReflex Class-3 compliant as long as they have voltage adjustment over I2C, however I am not sure how much of this software is currently in place, so I would generally recommend using a TPS659xx device if you want the most compatibility.

  • Thanks for the input. I think its starting to sink in. So as I see it you can enable SmartReflex (I am using TPS62350), i.e. set it and forget it.

    From there I can change the operating frequency, but this also may require adjusting the base operating voltage also?

    So the OPP is really the operating frequence AND associated nominal operating voltage for said frequency??

    or

    Can I just change the operating frequency and SmartReplex will take care of the voltage? 

  • DavidVescovi said:
    From there I can change the operating frequency, but this also may require adjusting the base operating voltage also?

    To keep the lowest power, typically a change in frequency will require a change in voltage, SmartReflex will adjust the voltage to the optimal for you, though it takes some time to do so and changes in steps, so it is not a bad idea when changing frequencies to adjust the voltage as well.

    DavidVescovi said:
    So the OPP is really the operating frequence AND associated nominal operating voltage for said frequency??

    An OPP is really both a frequency and voltage, but with SmartReflex enabled the voltage is allowed to vary based on temperature and silicon, the idea being that the OPP voltage in a pure DVFS scheme will have to be the worst case for all temperature and silicon variations, using SmartReflex means that this value can be lowered based on the conditions.

    DavidVescovi said:
    Can I just change the operating frequency and SmartReplex will take care of the voltage? 

    SmartReflex will eventually adjust the voltage for you, but if you are moving from a lower to a higher OPP than you will want to bump up the voltage as well to ensure that the device is stable while SmartReflex is adjusting the voltage to the optimum, and if you are using the provided CPUFreq driver than this will be taken care of. The general flow of a SmartReflex enabled OPP change will be:

    1. Ramp directly to the OPP worst case needed voltage.
    2. Wait for the voltage to be achieved by the supply.
    3. Change the CPU frequency to the intended OPP.
    4. Enabled SmartReflex will step down the voltage to an optimum power saving level.

     

  • Bernie Thompson said:
    You can also achieve this in software for other power supplies that are not SmartReflex Class-3 compliant as long as they have voltage adjustment over I2C, however I am not sure how much of this software is currently in place, so I would generally recommend using a TPS659xx device if you want the most compatibility.

    I'm trying to write program using the i2c driver which directly access the TPS65950 through i2c and change the voltage value by setting the register. Does this change affect the OPP value or OPP would stay unchanged?

  • Xi said:
    I'm trying to write program using the i2c driver which directly access the TPS65950 through i2c and change the voltage value by setting the register. Does this change affect the OPP value or OPP would stay unchanged?

    Since operating performance point (OPP) defines a voltage and a frequency, than yes you could say this would be effectively modifying the OPP.

    If you are manually changing the voltage without any feedback from the Smart Reflex system than you would have to be careful to make sure you keep the voltage above the minimum required to be stable for the frequency you are currently operating at.

  • Bernie Thompson said:
    If you are manually changing the voltage without any feedback from the Smart Reflex system than you would have to be careful to make sure you keep the voltage above the minimum required to be stable for the frequency you are currently operating at.

    Does that mean that if I want to change the voltage to any value, I have to change the frequency manually at the same time, based on my desired voltage?

  • Xi said:
    Does that mean that if I want to change the voltage to any value, I have to change the frequency manually at the same time, based on my desired voltage?

    For the most part the answer is yes, for example if you are moving the voltage lower than you would generally have to also lower the frequency to ensure the device remains stable, on the other end if you are making the voltage higher you would generally want to raise the frequency to gain additional performance opened up by the higher voltage (otherwise why raise the voltage?).

    To keep things simple TI provides the operating performance points (OPPs) that are known to work and be stable with the device, this gives you a variety of voltage/frequency pairs to use, depending on your application's performance and power consumption requirements. To get optimal power efficiency you would typically choose to run at the lowest OPP you can while still meeting your system requirements, there is actually a CPU frequency governor driver that will automatically adjust the OPP based on CPU load to automate this. Beyond simply using the most efficient possible OPP there is also automated voltage control with Smart Reflex, which will start at the OPP voltage and than lower it as much as it can based on silicon conditions, further optimizing power consumption.

    I may be able to better respond to your queries if I understood more on why you want to manually change the voltage?

  • Bernie Thompson said:
    I may be able to better respond to your queries if I understood more on why you want to manually change the voltage?

    Thanks for your answer. We are developing our DVFS for our application under omap35x, OPP is a good way, but it's still very coarse since it only has 5 levels to work with. We want to control it in more detail. That's why I want to manually control the voltage/frequency by changing the registers. Another reason is that since OPP is setup only by writing configuration file under linux system ("vdd1_opp_value"), we believe that it cause more delay than accessing the registers directly (if it is the case). The thing is I'm still not sure if direct register access is DOable and trying to figure out how. Can you help me with some info about it?

    Also, I want to know if SmartReflex is able to adjust voltage for any level of frequency. I mean, even when I raise the frequency from 125MHz to 550MHz (cross different OPPs), can I leave the voltage taken care of by SmartReflex and get the minimum required voltage for 550M? Please let me know!

     

  • Xi said:
    The thing is I'm still not sure if direct register access is DOable and trying to figure out how. Can you help me with some info about it?

    When running Linux you do not generally access registers directly from user space, access to hardware directly is done by the kernel and abstracted to user space through drivers. To do what you want you would write a Linux device driver that provides some sort of API to manually change the PLL registers to adjust the frequency and the power supply registers to adjust the voltage, which would likely be based on an existing driver like the cpufreq driver we provide for changing the OPPs today.

    Xi said:
    Another reason is that since OPP is setup only by writing configuration file under linux system ("vdd1_opp_value"), we believe that it cause more delay than accessing the registers directly (if it is the case).

    For the most part, as suggested above, Linux expects only the kernel space to access hardware directly, all user space applications run within their own virtual memory space, so in general you would always be accessing the registers through some sort of driver interface. I am not sure how much you really lose in overhead by changing the operating state through the sysfs entries as opposed to putting together some low level user space access to the voltage and frequency controls, in general on a processor like the OMAP3 there is enough performance that such accesses would be insignificant.

    Xi said:
    Also, I want to know if SmartReflex is able to adjust voltage for any level of frequency. I mean, even when I raise the frequency from 125MHz to 550MHz (cross different OPPs), can I leave the voltage taken care of by SmartReflex and get the minimum required voltage for 550M?

    That is the idea, if SmartReflex is enabled it will automatically step down the voltage to the minimum the device will be able to manage in the given conditions, including the current frequency. With a fully SmartReflex compatible device like TPS65950 this can all happen in hardware, the SmartReflex block will send I2C commands to the TPS65950 to manage the voltage once enabled.

  • I got it. Thanks for your help!

  • Bernie Thompson said:
    When running Linux you do not generally access registers directly from user space, access to hardware directly is done by the kernel and abstracted to user space through drivers. To do what you want you would write a Linux device driver that provides some sort of API to manually change the PLL registers to adjust the frequency and the power supply registers to adjust the voltage, which would likely be based on an existing driver like the cpufreq driver we provide for changing the OPPs today.

    Does cpufreq driver provide a way for arbitrary frequency set? If I want to set it to more detailed value other than those 5 OPP values, what should I do? Could you please give me some detailed info of how to do it? Thanks!