In PC based CNC systems, there is almost always dedicated hardware separate from the PC that is feeding the motor drivers, because Windows and Linux are not true real time operating systems. A cnc system must have a timing resolution much finer than is available in traditional general purpose operating systems.<p>In general terms, a cnc system must convert high level instructions, like G-code, in to voltage pulses that are fed to either stepper or servo motors.<p>Some of these calculations are performed on the PC, others are performed on the dedicated hardware. Do steps 1, 2, and 3, send step 3's result over usb to the controller, then perform steps 4 through 10.<p>Not everyone agrees where to place that barrier.<p>In the case of GRBL, which is the firmware that runs most of these hobbyist level 3D printers, the entire process happens on an 8 bit microcontroller, from G-code to steps.<p>Other cnc systems perform almost all of the calculations on the PC, and sends a representation of the timing information to the controller.<p>Still other systems decode the G-code into vectors and other intermediate representations, and let the controller do most of the heavy lifting.<p>Some systems transmit their data over USB, a standard ill equipped for industrial environments or cable lengths more than about 10ft. Others use ethernet. I'm sure there are others that use RS-485, or even proprietary protocols.<p>Is Microsoft accounting for any of these variations, or are they going to standardize everyone to whats popular today, which is usb and 8 bit microcontrollers that can't even create 50,000 steps per second?