3 ms·
This is the key aspect. RISC Vs CISC is a continuum and it is a continuum even within the ISA. If there are complex and slow instructions that can be replaced b
by imtringued 2y ago
This is the key aspect. RISC Vs CISC is a continuum and it is a continuum even within the ISA. If there are complex and slow instructions that can be replaced by simpler faster instructions, then that is what the compiler is going to emit.
The legacy stuff is baggage, but obsolete instructions only cost silicon area, something that is constantly getting more abundant as transistors keep getting smaller. The only real difficulty is variable length instructions.
The solution to that is predicting the length of the instructions. This means that there are fast instructions (easy to predict) and slow instructions. The compiler can now avoid emitting them. The price of "CISC" becomes ever more insignificant.
- p_l 2y agoAlso some classic CISC features (that escaped x86 by virtue of it being a cheap micro ISA originally) can explore into ridiculous stalls in execution. The prime example is probably VAX, whose super orthogonal ISA (another "full CISC" hallmark) could lead to single instruction consuming multiple TLB entries (6 argument, up to 18 indirections assuming the arguments don't cause another page fault due to crossing pages), and another instruction could become longer than memory page. Compare x86 where modern approach is essentially "you get free LEA instruction fused with execution of the main instruction" to the point using LEA instead of certain arithmetic ones is basic optimization