¿qué son exactamente las arquitecturas de instrucción de ciclo único?

0

Obtuve el siguiente texto del trabajo de laboratorio 2 del curso de arquitectura de computadoras de CMU. En realidad, estoy tratando de hacer este laboratorio por mis propios intereses y de ninguna manera soy un estudiante de CMU.

  

La máquina tiene una microarquitectura de un solo ciclo: e muy instructivo   toma exactamente un ciclo para ejecutarse . Aparte de la corrección (como dened   por las especificaciones arquitectónicas), esta es la única restricción que   Estamos colocando en la microarquitectura de la máquina. Mientras estos   se satisfacen dos restricciones (es decir, corrección y ciclo único ),   eres libre de implementar la microarquitectura en cualquier forma que desees. A   Le guiamos en el camino, le proporcionamos una descripción abstracta de la   La microarquitectura de un solo ciclo, como discutimos en clase.

     
  1. El estado arquitectónico de la máquina (excepto la memoria) se almacena   en los registros: el contador del programa y los registros de propósito general
  2.   
  3. Hay un cable global llamado \ clock "que está conectado a todos   los registros.
  4.   
  5. Cuando un registro ve un borde ascendente en el reloj, el registro   captura la instantánea "instantánea" de los valores en su entrada.   A partir de entonces, el registro guarda los valores capturados y los alimenta.   a su salida.
  6.   
  7. La salida del registro (s) se alimenta a un circuito combinacional   que consiste en puertas lógicas (por ejemplo, ADD). A su vez, la salida de la   las puertas lógicas se retroalimentan como entrada a los registros.
  8.   
  9. En el siguiente flanco ascendente del reloj, el registro vuelve a capturar   los valores en su entrada
  10.   

.

Mi duda: me pide que implemente una arquitectura de ciclo único, pero los puntos numerados del 1 al 5 no parecen ser de ciclo único.

Supongamos la instrucción ADD R1, R2, R3. De acuerdo con los pasos del 1 al 5, esto tomará dos ciclos de reloj y no 1 ciclo de reloj.

  • En el borde pos de un ciclo de reloj, la dirección (dirección en el registro archivo) los registros R1 y R2 se bloquearán y los valores en estos los registros se enviarán a ALU para su adición.

  • En el siguiente borde pos, la salida de ALU se volverá a escribir en el registro R3.

Así que en realidad está tomando dos ciclos, ¿no? Entonces, ¿por qué se llama instrucción de ciclo único?

    
pregunta Jsmith

6 respuestas

1

La única forma que conozco para hacer que la lectura y la escritura se realicen en el mismo ciclo de reloj es que las lecturas de los registros se activen en el borde positivo y que las escrituras de los registros se activen en el borde negativo (o viceversa), y luego lo hagan que la lógica de su ruta de datos se propaga completamente dentro de un período de medio reloj. En una arquitectura de un solo ciclo, es realmente solo una diferencia semántica, un poco de engaño.

En esquemas de reloj más sofisticados, es posible que en realidad tengas varias fases de reloj, por lo que la relación de "activación de borde" no tiene por qué ser simétrica como lo he descrito. Cuando se canaliza su núcleo, esto realmente es importante para los propósitos de corrección para que no tenga una carrera entre las etapas de lectura y reescritura de su registro.

Creo que está justificado estar confundido acerca de cómo se relacionan las lecturas y las escrituras en el archivo de registro, pero eso requiere que profundice un poco más en la implementación del nivel de transistor de un registro de un solo bit. Creo que encontrará que hay una carrera si ambos eventos (lectura y escritura) son activados por el mismo borde del reloj y su lógica combinacional puede propagar un cambio antes de que el estado del registro esté completamente bloqueado. Eche un vistazo a esta página web para obtener una deconstrucción lógica de un borde activado D flip flop.

    
respondido por el vicatcu
1

Advertencia: la instrucción ciclo único puede ser un movimiento de marketing.

Considere la hoja de datos para PIC18F4xK22.

En los lugares más notables, se ve lo siguiente:

  

Todas las instrucciones son de ciclo único, excepto para cualquier rama del programa

¿Suena genial? Pero enterrado en algún lugar del documento se ve lo siguiente:

  

Un "Ciclo de instrucciones" consta de cuatro ciclos Q: Q1 a Q4.

Por lo tanto, en realidad su instrucción ejecuta 4 relojes del sistema.

    
respondido por el Anonymous
0

Dije esto en los comentarios, pero está un poco fragmentado.

Básicamente, tienes razón en que se necesitarían dos ciclos de reloj para ejecutar una instrucción AGREGAR y luego encerrarla en un registro.

Sin embargo , cuando ejecuta la siguiente instrucción, esto encierra el resultado anterior en el registro, por lo que si ejecuta dos ADD's espalda con espalda, obtendrá el resultado correcto y solo tomará dos ciclos.

Aparte de eso, tener un resultado enclavado en un registro solo es relevante si desea ejecutar una instrucción en él. Si el último comando en su código era un AGREGAR, y después de eso no volvió a marcar, los registros no contendrían el resultado más reciente, pero no importa porque no los vuelva a leer. Tan pronto como ejecutó una instrucción nuevamente para leerlos, se bloquearían y luego su instrucción se ejecutaría, dando el resultado correcto.

    
respondido por el BeB00
0

¡Es una arquitectura de un solo ciclo! Cuando el agregado r1, r2, r3 entra en el decodificador combinativo, decodifica el mensaje y le dice a la ALU que agregue r1, r2 y el resultado es una entrada para el registro r3. Ahora el valor de adición se puede escribir en el siguiente flanco ascendente del reloj o en el flanco descendente (preferido). Como la escritura no afecta a la parte del decodificador de la microarquitectura, se descodificará la siguiente instrucción y así sucesivamente. Espero que ayude.

    
respondido por el Vibhore Jain
0

no hay razón por la que no pueda implementar esto en un solo ciclo, al comienzo del ciclo los registros emiten su valor actual, su decodificador de instrucciones ve y agrega, ve los registros de entrada y produce de forma combinada la suma de esos elementos, también ve el destino y alimenta combinadamente el resultado en la entrada a r3 en el flanco ascendente que termina este ciclo único r3 obtiene la suma de r1 y r2. No hay razón para usar un borde descendente ni nada de eso.

Ahora, si los registros estuvieran en un archivo de registro, entonces sí, tiene un problema mucho mayor, no puede leer las dos entradas en un solo reloj sin cambiar la definición de un reloj (usar el flanco descendente es hacer trampa que solo cambia la definición). de un reloj en dos relojes).

con los registros separados entre sí con su propia entrada y salida, y sin contar la memoria (en ocasiones también puede hacer esto) puede hacer fácilmente una máquina de un solo ciclo. Al comienzo del ciclo, las salidas del registro están listas, combinadamente, usted calcula las entradas del registro antes del final del ciclo.

    
respondido por el old_timer
0

Si los registros se acoplan en tres estados a busA y busB tan pronto como se descodifican los códigos de operación, y esos buses internos enrutan los operandos a ALU, con la función ALU seleccionada de esa pequeña parte del código de instrucciones y el destino el registro tiene la salida de ALU presentada a los pines de entrada de ese registro, luego el siguiente ciclo de reloj (todas las acciones de reloj que se ejecutan en todo el MCU en el mismo borde), entonces tiene un MCU de un solo reloj.

Depende de usted definir los comportamientos de tres estados para implementar esto.

    
respondido por el analogsystemsrf

Lea otras preguntas en las etiquetas