There are a couple of options that can alleviate the issue of older games running way too fast on modern machines;
- Some games (ie: the original Grand Theft Auto) have built in frame limiters, see if yours does
- If the game supports a 'Vsync option', control the in game FPS by changing your monitor refresh rate
- Buy a patched copy of the game from another supplier
- Use a 'dirty hack' of some description, my personal favourite is using FRAPS in cached record mode to severely hamper FPS
One such piece of VM software that supports assignment of CPU resources is Oracle Virtual Box (which is free) - there are other Virtual Machine hosts which provide more granular control over the resources assigned to the virtual environment but these generally aren't free and vary quite wildly in price.
The options in VirtualBox approach the issue from the point of 'leaving the host operating system functional while the VM is in use' rather than actually specifying the 'Virtual Hardware' that is in the VM;
With this, you can set the number of processor cores available to the Virtual Machine, and the maximum processor usage as a percentage that the VM can utilise. This is not an exact science and will require some trial and error to get the right settings, and even then it is unlikely that the end result will be that smooth to play.
Another option that is available for free, is DOSBox. DOSBox does provide CPU cycle emulation and the ability to change how many CPU cycles are available to the application/game being run within DOSBox. The controls for this are detailed as you start DOSBox up;
The current setting is detailed in the title bar of the window;
Using DOSBox, it is possible to install an older version of Windows (ie: Windows 95 or 98) within DOSBox as detailed in this article. This provides you with another emulation option as it allows you to use DOSBox to run a copy of Windows, and play old Windows games in the environment they were designed to be run in, while still providing control over the number of CPU cycles available in the environment.
As for what to set the number of CPU cycles to, this article suggests the following;
Estimate the CPU power wanted by the game in megahertz. Multiply by 1000, and set it in the cycles= setting in dosbox.conf. For example, if it requires 3 MHz, set cycles=3000. If it requires 120 MHz, set cycles=120000. Use the largest possible value that you think makes the game run more fluently, but not larger. If uncertain, use 40000. This corresponds to an average 486.