Here I disagree at all, if we want to produce efficient code, a compiler for a simpler instruction set with 40/50 well designed instructions and a lot of general purpose registers will be always easier to build than a compiler for an instruction set with hundreds of instructions all different in syntax and with a little number of specialised registers.
If you want to find a typical disadvantage of RISC vs CISC, it is typically the code density, not many other.
I appreciate your rebuttal and in theory I believe your opinion is correct about code density, however, in practice, it seems the quality of compilers does have a major role in performance optimization of RISC processors and memory access needs.
Also, I believe you are mistaking RISC for MISC (Minimum Instruction Set Computer) Remember, RISC does not = low number of instructions in set, many RISC processors have instruction set sizes = to CISC, the difference is that RISC instructions can all be enacted in 1 single clock cycle.
“ Advantages of RISC processors: Reducing the complexity of the instruction set performed by the hardware paves the way for providing flexible intelligence by using software rather than hardware. As a result, a RISC architecture design requires greater complexity on the compiler.”
“ The RISC architecture contains a set of instructions. This allows high-level language compilers to create more efficient code.”
“Disadvantages of RISC processors: The performance of the RISC processor can depend on the compiler. Because the knowledge of the compiler has a crucial role while translating the CISC code to RISC code, it requires so much complexity in the compiler.”
-https://www.baeldung.com/cs/risc-vs-cisc
“ Compiler technology has also become more sophisticated, so that the RISC use of RAM and emphasis on software has become ideal.”
“….they showed that a compiler tuned to use registers wherever possible would run code about three times as fast as traditional designs.”
J. Cocke and V. Markstein, "The evolution of RISC technology at IBM," in IBM Journal of Research and Development, vol. 34, no. 1, pp. 4-11, Jan. 1990, doi: 10.1147/rd.341.0004.
“ Patterson's early work pointed out an important problem with the traditional "more is better" approach; even those instructions that were critical to overall performance were being delayed by their trip through the microcode. If the microcode was removed, the programs would run faster. And since the microcode ultimately took a complex instruction and broke it into steps, there was no reason the compiler couldn't do this instead. These studies suggested that, even with no other changes, one could make a chip with 1⁄3 fewer transistors that would run faster.”
https://web.archive.org/web/2022061...son.mx/~havillam/ca/CS323/0708.cs-323005.html
“Like any architectural approach, both RISC and CISC have their strengths and weaknesses. Understanding these tradeoffs is critical to designing efficient and optimized computer systems.
RISC architectures are characterized by performance, energy efficiency and compiler optimization. By emphasizing simplicity and consistency, RISC architectures can achieve shorter cycle times and lower power consumption compared to CISC architectures. Additionally, the simplified instruction set and execution model facilitate compiler optimization and enable more efficient program execution.
However, one disadvantage of RISC architectures is that they require access to memory for almost every operation. This can increase the number of instructions required to perform certain tasks, resulting in larger code sizes and higher memory bandwidth requirements.
CISC architectures, on the other hand, offer more flexibility and convenience as they provide complex commands that can perform multiple operations in a single command. This can be beneficial in certain scenarios where efficiency is critical, such as: B. in multimedia applications or complex mathematical calculations. However, the higher complexity of the instruction set can lead to longer cycle times and higher power consumption.
Additionally, the larger code size of CISC instructions can pose a challenge for compiler optimization, making it more difficult to achieve the same level of efficiency as with RISC architectures.“
Discover the fascinating world of RISC and its profound influence on computer architectures.
techwatch.de
“Some aspects attributed to the first RISC-labeled designs around 1975 include the observations that the memory-restricted compilers of the time were often unable to take advantage of features intended to facilitate manual assembly coding, and that complex addressing modes take many cycles to perform due to the required additional memory accesses. It was argued that such functions would be better performed by sequences of simpler instructions if this could yield implementations small enough to leave room for many registers, reducing the number of slow memory accesses. In these simple designs, most instructions are of uniform length and similar structure, arithmetic operations are restricted to CPU registers and only separate load and store instructions access memory. These properties enable a better balancing of pipeline stages than before, making RISC pipelines significantly more efficient and allowing higher clock frequencies.
The clock rate of a CPU is limited by the time it takes to execute the slowest sub-operation of any instruction; decreasing that cycle-time often accelerates the execution of other instructions. The focus on "reduced instructions" led to the resulting machine being called a "reduced instruction set computer" (RISC). The goal was to make instructions so simple that they could easily be pipelined, in order to achieve a single clock throughput at high frequencies. This contrasted with CISC designs whose "crucial arithmetic operations and register transfers" were considered difficult to pipeline.
Later, it was noted that one of the most significant characteristics of RISC processors was that external memory was only accessible by a load or store instruction. All other instructions were limited to internal registers. This simplified many aspects of processor design: allowing instructions to be fixed-length, simplifying pipelines, and isolating the logic for dealing with the delay in completing a memory access (cache miss, etc.) to only two instructions. This led to RISC designs being referred to as load–store architectures.”
https://www.drdobbs.com/programmers-bookshelf/184408418
https://archive.org/details/internationalcom0000yvon/page/83/mode/1up
https://archive.org/details/highperformancec00dowd
https://research.cs.wisc.edu/vertical/papers/2013/hpca13-isa-power-struggles.pdf