I understand how a CPU works fairly well, but there is this one thing which I've never really gotten the hang of.
Say we have an Intel 8086 CPU (16 bits wide registers) which is about to fetch its next instruction from RAM (also with a 16 bit data width). As the CPU fetches the instruction, say at 0x44AB, what exactly does RAM return? Is it an 8 bit op-code and an 8-bit operand? Does it return a 16 bit op-code, and then the operand is stored in 0x44AC?
In the first case, operands cannot have a value greater than 0xFF (255), but then why would you have 16-bit registers? In the second case, the program counter must be incremented by two between each instruction, and you use twice as much memory.
So how does this work? The question might seem a bit vague, but all I'm asking is really what the CPU does with the data returned from an address in RAM.
EDIT: Made the question more specific so that it's easier to give a good answer.