Qual é a diferença entre CISC e RISC?


resposta 1:

O RISC é geralmente "armazenamento de carga" de / para registros. Geralmente são usados ​​três registros, como ADD R1 = R2 + R3, load and store pode ou não ser uma exceção, com apenas dois registros usados ​​em uma instrução.

O CISC geralmente permite a computação com valores de endereços de memória, não sendo necessário inseri-los primeiro nos registradores. Também poderia ter modos de endereçamento mais (complexos), permitindo de um a mais registros para geração de endereços.

O CISC geralmente é de dois operandos, com, por exemplo, ADD tendo o mesmo registro (ou endereço de memória) usado para o destino, mas também o mesmo usado para uma fonte.

Isso costumava ser um grande problema, e o RISC era conectado e o CISC usava microcódigo.

Agora, a microarquitetura para CISC, pelo menos x86 (se não todos os CISC em uso, significando que os mainframes da IBM são os únicos outros CISC sobreviventes; os microcontroladores podem ser uma exceção) divide as instruções em microops (operações semelhantes a micro / RISC) que podem agendar ao contrário do microcódigo original.

O RISC pode até fazer isso, por exemplo, ARM mais recente (não o fez inicialmente), então as diferenças são menores do que costumavam ser.

O ARM original não possuía instruções de divisão inteira, pois era muito complexo, muito menos para o ponto flutuante. Agora, a [complexidade] reduzida para R no RISC se aplica menos, pois o ponto flutuante é inerentemente complexo e todas as principais CPUs RISC suportam até instruções de raiz quadrada e trigonometria.


resposta 2:

O CISC é otimizado para fazer o máximo de trabalho possível a partir de um determinado tamanho de instrução. Isso ocorre porque as CPUs não tinham cache na época e a leitura das instruções da memória levaria vários ciclos; portanto, uma instrução complexa com muitas alterações de estado não era um problema, desde que fosse compacta.

O RISC é otimizado para CPUs que * possuem * um cache de instruções e que altera o gargalo: os caches podem fornecer facilmente 64 e 128 bits de dados a cada ciclo - desde que alinhados. De repente, você pode executar 1 ou até 2 instruções por ciclo, desde que não haja dependência; portanto, instruções limpas que apenas causam uma única alteração de estado tornam-se muito mais rápidas.


resposta 3:

O CISC é otimizado para fazer o máximo de trabalho possível a partir de um determinado tamanho de instrução. Isso ocorre porque as CPUs não tinham cache na época e a leitura das instruções da memória levaria vários ciclos; portanto, uma instrução complexa com muitas alterações de estado não era um problema, desde que fosse compacta.

O RISC é otimizado para CPUs que * possuem * um cache de instruções e que altera o gargalo: os caches podem fornecer facilmente 64 e 128 bits de dados a cada ciclo - desde que alinhados. De repente, você pode executar 1 ou até 2 instruções por ciclo, desde que não haja dependência; portanto, instruções limpas que apenas causam uma única alteração de estado tornam-se muito mais rápidas.