1)Your little computer is working at 8mhz. A good function generator using DDS might be working at 400mhz.
You are right that if you can make 8mhz, 4, 5.3333, 4, etc. All come from a common clock.
2)Look at DDS. It can make signals with good resolution with out speed.
To make the math simple lets assume a slow 100mhz clock. Every 10nS the output can be updated.
There is a 10 bit look up table. There is a 1024 location look up table that calls out a sign wave. To keep the math simple say 1000 table!
>To make a 100khz sign wave; every 10nS the next location in the table will be output.
>To make a 200khz sign wave' every 10nS the output will updated but only every other location will be output.
>To make a 1mhz.............................10nS.....................using 1 our of 10 locations.
>But to make a 1khz........................10nS.....but the same location will be output 100 times before moving on to the next loaction.
To get high resolution: Go back to the 100khz example;
We are advancing through the look up table at 10nS clock and making 100khz. Using a 1000 size table.
>To make a slightly faster signal, skip one location every 20uS. So the table is 1000, then 999, 1000, 999, etc. This will make the signal look like it is the tiniest bit faster. Or skiping every 40uS->1000, 1000, 1000, 999.
>To make a slightly slower signal, use one location twice every 20uS, 1000, 1001, 1000, 1001.
Probably did not explain well. DDS makes a signal in time not frequency. So 100khz is 10uS. First you have 10nS resolution so you really have 10,000nS. THEN by by adding one (10nS) every 1000 (complete) cycles you can make 1000x more resolution. 10,000,000pS.