Problem
When we run a program, we are either directly executing the machine code (binary produced by the compiler) on the processor or indirectly running the code using an interpreter (which is likely a binary running directly on the processor).
i. Summarize how a modern processor works and what are the limitations of a non-pipelined processor?
ii. What are the strengths that a pipelined processor has over a non-pipelined processor?
iii. What are the limitations of a pipeline processor (look at hazards, what happens)?
iv. How are these hazards relevant to a tree-walk interpreter (think about branches, conditionals, and function calls)?
v. How are these hazards relevant to a bytecode virtual machine, and is it different that a tree-walk interpreter, if so how?