A basic instruction cycle consists of these 5 stages.

Instruction Cycle

  1. IF - Instruction Fetch
  2. RD - Instruction Decode and Register Read
  3. EX - Execute
  4. MA - Memory Access
  5. WB - Write Back

I understood the function of all the stages accept the fourth (Memory access). What's the significance of this stage?

Over Internet what I've found is this

MA(Memory Access) does following operation

  • If load or store instruction, then access memory

  • If branch instruction, replace PC with destination address

The second point is clear, but I'm confused by the first.

Suppose we have load and store instruction like this $$(I) R_1 \leftarrow m[A_1]$$ $$(II) m[A_2] \rightarrow R_2$$

what will the MA stage do for the above instructions?

  • $\begingroup$ What research have you done? We expect you to do a significant amount of research/self-study before asking (search on the Internet, look in standard textbooks), and to tell us in the question what you've done. There is little point in having us repeat standard material that's already covered in textbooks. What are your thoughts? What do you understand and what specifically are you unclear on? What precisely do you mean by "the meaning of a stage"? $\endgroup$
    – D.W.
    Dec 19 '14 at 1:40
  • $\begingroup$ I could be wrong. But just to be clear, isn't an FO(fetch operands[if]) stage necessary to be explicit? In which stage would we be fetching operands, in this architecture? In the second stage? $\endgroup$ Dec 21 '14 at 13:01

You have to operate on the memory to do anything useful. Reading next instruction, getting variable to operate on or saving calculated value - all that requires accessing memory.

  • $\begingroup$ Can you give any example $\endgroup$
    – Atinesh
    Dec 18 '14 at 4:00
  • $\begingroup$ Your CPU basically continuously performs sequences of operations. Every operation is stored in memory, so after every step your CPU needs to reach back to memory to get the next instruction (what should it do.) Other than that: if you want to calculate a few numbers from some sequence, you would: calculate the first one, store it into memory, calculate next one, store it into memory and so on. $\endgroup$
    – 3yakuya
    Dec 18 '14 at 12:57

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.