ARM MCU has multiple bus structure. There are two types of Busses in ARM7 microcontroller – Advanced High performance BUS (AHB) and VPB bus. AHB is fast bus which is clocked directly by PLL and works at same speed as ARM core. So to AHB bus ARM core and Interrupt controller are directly connected while other peripherals are connected through VPB divider. VPB divider is capable to divide speed of AHB by 1; 2 and 4. so this means if VPB bus divider will be set to 4 and CPI core speed will be 60MHz, then MCU timer will run at speed 60/4=15MHz.
//C code snippet of VPB speed setting
#define PBSD 4
//define VPBDIV_VALUE needed to write to VPBDIV register
#define VPBDIV_VALUE (PBSD & 0x03)
//Write VPBDIV_VALUE to VPBDIV register to divide VHB frequency by PBSD:
VPBDIV = VPBDIV_VALUE;
When talking of buses wee need to mention, that there is one more bus connected to AHB via MAM (Memory Accelerator Module). MAM is used to accelerate Flash memory as it is capable to run at maximum speed of 20MHz while CPU core can run at like 80MHz. MAM is using some sort of cashing technique to achieve flach memory speed equal to cores peed. This will be discussed later.