AMBA Bus Architecture and its clocks
We must understand the difference between interface clock and functional clock APB clock is  the interface clock Each peripheral receives two clocks: interface clock (or APB bus clock) and functional clock. Interface clock is used to read/write the registers of the peripheral. In other words, your APB bus clock is needed to read/write your UART registers for programming. On the other hand, functional clock is used to operate the peripheral. An UART sends/receives data when the functional clock is enabled. In some cases the function clock is derived from interface clock, but in most cases functional clock is derived from other clock source. (The selection of clock source is programmable in most SoCs). In order to operate a peripheral, we need both interface clock ('to program registers of the peripheral) and functional clock. During sleep, we disable the interface clock for the peripheral. Functional clock may or may not be disabled during sleep depending on use cases. 

All clocks (interface and functional clocks) are generated by several PLLs inside clock generation module. ARM core does not generate any clock.