Questions about Generic Timer in ARMv8

When two clusters(Big/Little) exist in SoC, the timer can be used to support Synchronization between two clusters.

But How to understand "Synchronization", anybody can tell me some typical application context? I am really confused......

And, if only one cluster exists in SoC, the timer is unnecessary? if not, Why use it......

Parents
  • Within each core you have a number of comparators.  You set the the comparator to a value, and it will then generate an interrupt when the Count reaches (or exceeds) the value of the comparator.  The Count is generated by a system level component, usually referred to as the System Counter.  This exports the _same_ count to _all_ the cores.  Giving all the cores a common view of time.

    The sort of thing you use this for is OS schedulers.  In a SMP OS you want to run the scheduler at regular intervals on all cores.  But, you don't want more than one core to try to run the scheduler at the exactly the same time, as that would lead to contention.  The solution is to set staggered values in the comparators, meaning the scheduler interrupt goes off at staggered times on each core.

Reply
  • Within each core you have a number of comparators.  You set the the comparator to a value, and it will then generate an interrupt when the Count reaches (or exceeds) the value of the comparator.  The Count is generated by a system level component, usually referred to as the System Counter.  This exports the _same_ count to _all_ the cores.  Giving all the cores a common view of time.

    The sort of thing you use this for is OS schedulers.  In a SMP OS you want to run the scheduler at regular intervals on all cores.  But, you don't want more than one core to try to run the scheduler at the exactly the same time, as that would lead to contention.  The solution is to set staggered values in the comparators, meaning the scheduler interrupt goes off at staggered times on each core.

Children
More questions in this forum