Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Technically speaking, the x86 is not a RISC processor. It's a CISC processor. There are instructions that take less time, but those aren't RISC instructions. I believe that Intel internally turns instructions into RISC instructions, but that's not really relevant.</p> <p>If we have instructions which take different amounts of time, then that becomes a CISC processor. It's nearly impossible to pipeline a CISC processor - to the best of my knowledge nobody has done it. There are many things that you can do inside of the CPU itself in order to speed up execution, such as out-of-order execution. So, there's no way you can have pipeline congestion because all instructions must be executed sequentially.</p> <blockquote> <p>now if we issue a risc instruction it takes one clock cycle to execute and so there is no problem...but if a cisc instruction is issued its execution will take time...</p> </blockquote> <p>A RISC instruction does not necessarily take one clock cycle. On the MIPS, it takes 5. However, the point of pipelining is that after you execute one instruction, the next instruction will complete one clock cycle after the current one finishes. </p> <blockquote> <p>now in a superscalar structure the two instructions issued while the first is being processed are diverted into other functional units available...</p> </blockquote> <p>In a superscalar architecture, two instructions are executed and finish at the same time. In a pure superscalar architecture, the cycle looks like this(F = Fetch, D = Decode, X = eXecute, M = Memory, W = Writeback):</p> <pre><code>(inst. 1) F D X M W (inst. 2) F D X M W (inst. 3) F D X M W (inst. 4) F D X M W </code></pre> <blockquote> <p>but there is no such diversion possible in simple pipelining as only one functional unit is available for execution of instructions....</p> </blockquote> <p>Right, so the cycle looks like this:</p> <pre><code>(inst. 1) F D X M W (inst. 2) F D X M W (inst. 3) F D X M W (inst. 4) F D X M W </code></pre> <p>Now, if we have instructions that take a varying amount of time(a CISC computer), it's harder to pipeline, because there's only one execution unit, and we may have to wait for a previous instruction to finish executing. Instruction 1 takes 2 execution cycles, instruction 2 takes 5, instruction 3 takes two, and instruction 4 takes only one in this example</p> <pre><code>(inst. 1) F D X X M W (inst. 2) F D X X X X X M W (inst. 3) F D X X M W (inst. 4) F D X M W </code></pre> <p>Thus, we can't really pipeline CISC processors - we must wait for the execute cycle to finish before we can go onto the next instruction. We don't have to do this in MIPS because it can determine if an instruction is a branch and the destination in the decode phase.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload