2.4.3. Power modes

The power domains can be controlled independently to give different combinations of powered-up and powered-down domains. However, only some powered-up and powered-down domain combinations are valid and supported.

Table 2.3 shows the valid powered-up and powered-down domain combinations for the different possible modes of operation. Table 2.3 uses the following terms:

Off

Block is powered down.

WFx

Block is in WFI or WFE low-power state.

Ret

Logic or RAM retention power only.

On

Block is powered up.

Table 2.3. Valid power modes

ModeProcessor[a] (CLK)Debug APB, CTI, and CTM (PCLKDBG)L2 RAMs[b] (CLK)L2 control, GIC, Timer (CLK)
L2 control powerup and L2 RAMs powerupOn | WFx | Ret | Off [c]Off | OnOnOn
L2 control powerup and L2 RAMs retainedWFx | Ret | Off [d]Off | OnRetOn
L2 cache Dormant modeAll OffOff | OnOn | RetOff
PCLKDBG powerupAll OffOnOffOff
Multiprocessor shutdownAll OffOffOffOff

[a] Processor, which includes the Advanced SIMD and FP, Debug, ETM, breakpoint and watchpoint (CLK) logic.

[b] For L2 RAMs dynamic retention, the L2 Data, Dirty, Tag, Inclusion PF, and Snoop Tag RAMs are retained.

For L2 cache Dormant mode, the L2 Data, Dirty, Tag, and Inclusion PF RAMs are retained. See Dormant mode.

[c] This power mode requires all the processors to be in one of On, WFI, WFE, Retention, or Off state. Each processor can be in a different one of these states.

[d] This power mode requires all the processors to be in one of WFI, WFE, Retention, or Off state. Each processor can be in a different one of these states.


There are specific requirements that you must meet to power up and power down each power domain within the processor. The supported powerup and powerdown sequences are:

Note

  • The powerup and powerdown sequences in the following sections are the only power sequences that ARM recommends. Any deviation from these sequences can lead to unpredictable results.

  • The powerup and powerdown sequences require that you isolate the powerup domain before power is removed from the powerdown domain. You must clamp the outputs of the powerdown domain to benign values to prevent data corruption or unpredictable behavior in the powerup domain.

Individual processor powerdown

If an individual processor is not required, you can reduce leakage power by turning off the power to the processor. The processor refers to all processor logic, including Advanced SIMD and FP unit, L1 RAMs, Debug, ETM, breakpoint and watchpoint logic.

To enable the processor to be powered down, the implementation must place the processor on a separately controlled power supply. In addition, you must clamp the outputs of the processor to benign values while the processor is powered down.

To power down the processor power domain, apply the following sequence:

  1. Clear the appropriate System Control Register C bit, data or unified cache enable, to prevent additional data cache allocation.

  2. Disable L2 prefetches by writing a one to bit [38] and zeros to bits[36:35, 33:32] of the CPU Extended Control Register. See CPU Extended Control Register, EL1 for more information.

  3. Execute an ISB instruction to ensure the CPU Extended Control Register write is complete.

  4. Execute a DSB instruction to ensure completion of any prior prefetch requests.

  5. Clean and invalidate all data from the L1 data cache. The L2 duplicate Snoop Tag RAM for this processor is now empty. This prevents any new data cache snoops or data cache maintenance operations from other processors in the multiprocessor being issued to this processor.

  6. Clear the CPUECTLR.SMPEN bit. Clearing the SMPEN bit enables the processor to be taken out of coherency by preventing the processor from receiving instruction cache, TLB, or BTB maintenance operations broadcast by other processors in the multiprocessor.

  7. Ensure that the system does not send interrupts to the processor that is being powered down.

  8. Set the DBGOSDLR.DLK, Double lock control bit, that forces the debug interfaces to be quiescent.

  9. Execute an ISB instruction to ensure that all of the System register changes from the previous steps have been committed.

  10. Execute a DSB instruction to ensure that all instruction cache, TLB, and branch predictor maintenance operations issued by any processor in the multiprocessor before the SMPEN bit was cleared have completed.

  11. Execute a WFI instruction and wait until the STANDBYWFI output asserts to indicate that the processor is idle and in the WFI low-power state.

  12. Activate the processor output clamps.

  13. Remove power from the processor power domain.

To power up the processor power domain, apply the following sequence:

  1. Assert nCPUPORESET.

  2. Apply power to the processor power domain while keeping nCPUPORESET asserted. When power is restored, continue to hold nCPUPORESET for 16 CLK cycles to allow the reset to propagate.

  3. Release the processor output clamps.

  4. Deassert nCPUPORESET.

Multiprocessor powerdown without system driven L2 flush

The Cortex-A57 MPCore multiprocessor supports multiprocessor powerdown where all the multiprocessor power domains are shut down and all state is lost. In this section, a lead processor is defined as the last processor to powerdown, or the first processor to powerup.

To power down the multiprocessor, apply the following sequence:

  1. Ensure all non-lead processors are in shutdown mode, see Individual processor powerdown.

  2. For the lead processor, follow steps 1 to 4 in Individual processor powerdown.

  3. When all outstanding ACP transactions are complete, the SoC can assert AINACTS to idle the ACP. When AINACTS has been asserted, the SoC must not assert ARVALIDS, AWVALIDS, or WVALIDS.

  4. Clean and invalidate all data from the L2 data cache.

  5. If the processor implements:

    An ACE interface

    When all outstanding snoop transactions are complete, the SoC can assert ACINACTM.

    A CHI interface

    When all outstanding snoop transactions are complete, the SoC can assert SINACT.

  6. Ensure system interrupts to the multiprocessor are disabled.

  7. Follow steps 6 to 13 in Individual processor powerdown.

  8. Wait until STANDBYWFIL2 asserts to indicate that the L2 memory system is idle.

  9. Activate the output clamps of the multiprocessor in the SoC.

  10. Remove power from the L2 control and L2 RAM power domains.

To power up the Cortex-A57 MPCore multiprocessor, apply the following sequence:

  1. For each processor in the MPCore device, assert nCPUPORESET LOW.

  2. For the lead processor in the MPCore device, assert nPRESETDBG and nL2RESET LOW, and hold L2RSTDISABLE LOW.

  3. Apply power to the processor, L2 control, L2 RAM and debug power domains while keeping the signals described in steps 1 and 2 LOW.

  4. Release the output clamps of the multiprocessor in the SoC.

  5. Continue a normal powerup reset sequence.

Multiprocessor powerdown with system driven L2 flush

The Cortex-A57 MPCore multiprocessor supports multiprocessor powerdown where all the multiprocessor power domains are shut down and all state is lost. In this section, a lead processor is defined as the last processor to powerdown, or the first processor to powerup.

To power down the multiprocessor, apply the following sequence:

  1. Ensure all non-lead processors are in shutdown mode, see Individual processor powerdown.

  2. For the lead processor, follow steps 1 to 4 in Individual processor powerdown.

  3. When all outstanding ACP transactions are complete, the SoC can assert AINACTS to idle the ACP. When AINACTS has been asserted, the SoC must not assert ARVALIDS, AWVALIDS, or WVALIDS.

  4. Ensure system interrupts to the multiprocessor are disabled.

  5. Follow steps 6 to 13 in Individual processor powerdown.

  6. The SoC can now assert the L2FLUSHREQ input.

  7. The L2 performs a series of internal clean and invalidate operations to each set and way of the L2 cache. Any dirty cache lines are written back to the system using WriteBack or WriteNoSnoop operations. Clean cache lines can cause Evict or WriteEvict transactions if the L2 is configured.

  8. When the L2 completes the clean and invalidate sequence, it asserts the L2FLUSHDONE signal. The SoC can now deassert L2FLUSHREQ signal and then the L2 deasserts L2FLUSHDONE.

  9. If the processor implements:

    An ACE interface

    When all outstanding snoop transactions are complete, the SoC can assert ACINACTM.

    A CHI interface

    When all outstanding snoop transactions are complete, the SoC can assert SINACT.

  10. Wait until STANDBYWFIL2 asserts to indicate that the L2 memory system is idle.

  11. Activate the output clamps of the multiprocessor in the SoC.

  12. Remove power from the L2 control and L2 RAM power domains.

To power up the Cortex-A57 MPCore multiprocessor, apply the following sequence:

  1. For each processor in the MPCore device, assert nCPUPORESET LOW.

  2. For the lead processor in the MPCore device, assert nPRESETDBG and nL2RESET LOW, and hold L2RSTDISABLE LOW.

  3. Apply power to the processor, L2 control, L2 RAM and debug power domains while keeping the signals described in steps 1 and 2 LOW.

  4. Release the output clamps of the multiprocessor in the SoC.

  5. Continue a normal powerup reset sequence.

Dormant mode

The Cortex-A57 MPCore multiprocessor supports Dormant mode, where all the processors, debug PCLKDBG, and L2 control logic are powered down while the L2 cache RAMs are powered up and retain state. This reduces the energy cost of writing dirty lines back to memory and improves response time on powerup. In Dormant mode, the L2 cache is not kept hardware coherent with other masters in the system.

The RAM blocks that remain powered up and retained during Dormant mode are:

  • L2 Tag RAMs.

  • L2 Dirty RAMs.

  • L2 Data RAMs.

  • L2 Inclusion PF RAMs.

To support Dormant mode, the L2 cache RAMs must be implemented in a separate power domain. In addition, you must clamp all inputs to the L2 cache RAMs to benign values, to avoid corrupting data when the processors and L2 control power domains enter and exit powerdown state.

Before entering Dormant mode, the architectural state of the multiprocessor, excluding the contents of the L2 cache RAMs that remain powered up, must be saved to external memory.

To exit from Dormant mode to Run mode, the SoC must perform a full powerup reset sequence. The SoC must assert the reset signals until power is restored. After power is restored, the multiprocessor exits the powerup reset sequence, and the architectural state must be restored.

To enter Dormant mode, apply the following sequence:

  1. Clear the appropriate System Control Register C bit, data or unified cache enable, to prevent additional data cache allocation.

  2. Clean and invalidate all data from the L1 data cache. The L2 duplicate Snoop Tag RAM for this processor is now empty. This prevents any new data cache snoops or data cache maintenance operations from other processors in the multiprocessor being issued to this processor.

  3. Clear the CPUECTLR.SMPEN bit. Clearing the SMPEN bit enables the processor to be taken out of coherency by preventing the processor from receiving instruction cache, TLB, or BTB maintenance operations broadcast by other processors in the MPCore device.

  4. Ensure that the system does not send interrupts to the processor that is being powered down.

  5. Save architectural state, if required. These state saving operations must ensure that the following occur:

    • All ARM registers, including the processor state, are saved.

    • All System registers are saved.

    • All debug related state is saved.

  6. Set the DBGOSDLR.DLK, Double lock control bit, that forces the debug interfaces to be quiescent.

  7. Execute an ISB instruction to ensure that all of the System register changes from the previous steps have been committed.

  8. Execute a DSB instruction to ensure that all instruction cache, TLB, and branch predictor maintenance operations issued by any processor in the multiprocessor before the SMPEN bit was cleared have completed. In addition, this ensures that all state saving has completed.

  9. Execute a WFI instruction and wait until the STANDBYWFI output is asserted, to indicate that the processor is in idle and low-power state.

  10. Repeat the previous steps for all processors, and wait for all STANDBYWFI outputs to assert.

  11. If the multiprocessor implements:

    An ACE interface

    When all outstanding snoop transactions are complete, the SoC asserts ACINACTM.

    A CHI interface

    When all outstanding snoop transactions are complete, the SoC asserts SINACT.

    When all outstanding ACP transactions are complete, the SoC asserts AINACTS. When AINACTS has been asserted, the SoC must not assert ARVALIDS, AWVALIDS, or WVALIDS.

    When the L2 completes the outstanding transactions for the AXI, or CHI, interface then STANDBYWFIL2 asserts to indicate that the L2 memory system is idle.

  12. When all of the processor STANDBYWFI signals and the STANDBYWFIL2 are asserted, the multiprocessor is ready to enter Dormant mode.

  13. Activate the L2 cache RAM input clamps.

  14. Remove power from the processors, debug PCLKDBG, and L2 control power domains.

To exit Dormant mode, apply the following sequence:

  1. Apply a normal powerup reset sequence. You must apply resets to the processors, debug PCLKDBG, and the L2 memory system logic until power is restored. During this reset sequence, L2RSTDISABLE must be held HIGH to disable the L2 cache hardware reset mechanism.

  2. When power is restored, release the L2 cache RAM input clamps.

  3. Continue a normal powerup reset sequence with L2RSTDISABLE held HIGH. The L2RSTDISABLE must be held HIGH for a minimum of 32 CLK cycles after the deasserting edge of nL2RESET.

  4. The architectural state must be restored, if required.

Debug powerdown

If the Cortex-A57 MPCore multiprocessor runs in an environment where debug facilities are not required for any of its processors then you can reduce leakage power by turning off the power to the debug unit in the PCLKDBG domain.

To enable the debug unit in the PCLKDBG domain to be powered down, the implementation must place the debug unit on a separately controlled power supply. In addition, you must clamp the outputs of the debug unit to benign values while the debug unit is powered down.

To power down the debug PCLKDBG power domain, apply the following sequence:

  1. Activate the debug output clamps.

  2. Remove power from the debug PCLKDBG domain.

Note

If the debug output clamps are released without following the specified debug powerup sequence, the results are unpredictable.

To power up the debug PCLKDBG power domain, apply the following sequence:

  1. Assert nPRESETDBG.

  2. Apply power to the debug PCLKDBG power domain while keeping nPRESETDBG asserted.

  3. Release the debug output clamps.

  4. If the SoC uses the debug hardware, deassert nPRESETDBG.

External debug over powerdown

The Cortex-A57 MPCore multiprocessor provides support for external debug over powerdown. If any or all of the processors are powered down, the SoC can still use the debug facilities if the debug PCLKDBG domain is powered up.

To enable external debug over powerdown, the implementation must place the processor and the debug PCLKDBG unit on separately controlled power supplies. If the processor is powered down while the debug PCLKDBG unit is powered up, you must clamp all outputs from the processor power domain to the debug power domain to benign values.

To power down the processor power domain for external debug over powerdown support, apply the following additional step to the processor powerdown sequence, as described in Individual processor powerdown, after STANDBYWFI is asserted in step 11:

  • Deassert DBGPWRDUP to indicate that the processor debug resources are not available for APB accesses.

When power is removed from the processor power domain, keep the debug PCLKDBG unit powered up.

To power up the processor power domain after external debug over powerdown support is no longer required, apply the following additional step to the processor powerup sequence, as Individual processor powerdown describes:

  • Assert DBGPWRDUP to indicate that processor debug resources are available.

Copyright © 2013, 2014 ARM. All rights reserved.ARM DDI 0488D
Non-ConfidentialID012914