Cargar / Almacenar arquitectura

0

En RISC vs CISC, la arquitectura de carga / almacenamiento:

  1. Cargar datos de la memoria en el registro de la CPU
  2. Calcular
  3. Almacena el resultado en la memoria

En CISC, 1,2,3 está envuelto en una sola instrucción. En RISC 1,2,3 hay instrucciones separadas.

Estoy leyendo de Naimi - AVR's y él dice:

  

El problema es que puede haber un retraso en el acceso a los datos desde la memoria externa. Entonces, todo el proceso se detendría, impidiendo que otras instrucciones procedan en la tubería. En RISC, los diseñadores eliminaron este tipo de instrucciones.

Entonces, si hay contención de autobuses, hay un retraso y el proceso se detendrá.

¿Pero seguramente se estancará en RISC también? Entonces, ¿cuál es el significado de ajustar 1,2,3 en una sola instrucción (CISC) versus mantener 1,2,3 como instrucciones independientes (RISC-ARM)?

    
pregunta

3 respuestas

1

Lo que mencionas es solo una de las muchas diferencias entre CISC y RISC.

Una forma en que RISC intenta minimizar las paradas de memoria es hacer que el compilador programe los accesos a la memoria. Con CISC, el compilador tiene pocas oportunidades de optimizar los accesos de memoria, pero una ventaja de las instrucciones de ciclo simple más simples de RISC es que puede reorganizar esas instrucciones en tiempo de compilación para optimizar los accesos a la memoria. Las instrucciones CISC son demasiado complejas para que el compilador sepa cuándo y dónde se pueden reorganizar las instrucciones. La ventaja de RISC depende parcialmente de que un compilador optimizador entienda cómo se puede manipular el flujo de instrucciones.

Hay otros atributos de RISC que están destinados a ofrecer mejoras. Uno es el revestimiento de tuberías pesado, otro es el potencial para velocidades de reloj más rápidas, y el tercero es caché de instrucciones y datos. Sin embargo, las arquitecturas CISC han adoptado muchas de las técnicas que se previeron para RISC y han tendido a mantenerse al día con el rendimiento de RISC.

    
respondido por el Mark
0

La diferencia es que puede anticipar el retraso y colocar instrucciones no relacionadas en las ranuras después de la carga, que no se detendrán porque no dependen de la carga que se debe completar.

El registro de destino de la carga tendrá un valor indeterminado hasta que se complete la carga; diferentes arquitecturas tienen diferentes mecanismos para rastrear cargas pendientes: una posible implementación marcaría el registro de destino como no válido en una etapa temprana, por lo que la siguiente instrucción se detendría si intentara leer y restablecería ese indicador al completar la instrucción de carga. / p>     

respondido por el Simon Richter
0

RISC vs CISC se ha convertido en un debate más teórico desde 1995, cuando Intel introdujo un núcleo RISC en x86 , y ARM extendió su conjunto de instrucciones con Thumb , alejándose de la filosofía RISC de longitud de instrucción fija. Ninguna de las CPU modernas son puramente RISC o CISC.

En lo que respecta a las paradas de tuberías, se trata de evitar peligros en la tubería. Las instrucciones complejas tendrán más peligros, que pueden ser más difíciles o imposibles de evitar para el compilador. Las instrucciones simples con pocos efectos secundarios tendrán menos riesgos y darán más libertad al compilador o CPU para ejecutarlos fuera de orden.

En su ejemplo, el procesador CISC estará ocupado ejecutando su instrucción mientras la lea en la memoria en el paso 1 y en la memoria de escritura en el paso 3. Un procesador RISC podría ejecutar diferentes instrucciones de "cálculo" en paralelo con los pasos 1 y 3, duplicando el rendimiento en un caso ideal.

    
respondido por el Dmitry Grigoryev

Lea otras preguntas en las etiquetas