The name FM always bothered me. You're not modulating the frequency, you're modulating the phase. PM would be a better name.
If you were to modulate frequency, well first of all you'd have to define a reference point or you'd just get glitchy sound. In practice that means most FM implementations just have a highly oversampled single cycle of a sine wave in memory, and it's the speed at which the sample pointer consumes the looping sine that's set to correspond to some frequency, and then that value is modulated. In other words, phase modulation.