¿Cuál es la diferencia entre un ciclo de instrucción y un ciclo de máquina?

Creo que está pensando en ciclos de “reloj” en lugar de ciclos de “instrucción”. Para ser franco, muchos sistemas tienen diferentes longitudes de instrucción. Un ex mayor. es IBM S / 360, donde las instrucciones tenían 2, 4 y 6 bytes de longitud. Las instrucciones de 2 bytes se registrarían mucho más rápido que las instrucciones largas de 4 y 6 bytes. Además, dependiendo de la complejidad de la operación, los microcódigos de instrucciones (que se ejecutaron en un paso de reloj / microcódigo) fueron bastante largos. Esto produjo diferentes velocidades de reloj para instrucciones.

PD. Y, a veces se encuentra un ERROR de hardware. Se encontró que las computadoras Cray 1 se estaban ejecutando a una velocidad MÁS RÁPIDA de lo que se esperaba de los diseños en los diagramas de cableado y las tablas de tiempos. Algunas personas en el sitio de un cliente en el Reino Unido analizaron las secuencias y descubrieron que los datos se alimentaban automáticamente en los registros de instrucciones incluso cuando se estaba ejecutando una instrucción anterior. Después de algunas consideraciones, la investigación de Cray emitió un nuevo BOLETÍN DE PUBLICIDAD con CHAINING. … ¡Búscalo!

El ciclo de instrucciones, como su nombre indica, es una unidad que cuantifica el tiempo que lleva hacer una sola instrucción. Sin embargo, por otro lado, un ciclo de la máquina está de acuerdo con la frecuencia a la que la máquina está funcionando. Por ejemplo, en estos días todas las máquinas están etiquetadas con cierta frecuencia. Esta frecuencia define el ciclo reloj / máquina de la máquina. Pero no es necesario que todas las instrucciones tomen solo un ciclo para finalizar. Pueden tomar ciclos de máquina múltiples o únicos dependiendo de la microarquitectura.

TLDR:

Un reloj de máquina es la unidad de trabajo más pequeña que define la arquitectura. Por lo general, las instrucciones requieren varios ciclos para completarse y pueden tener que esperar en la memoria, E / S, eventos de coherencia de caché, etc., lo que hace que el número exacto de ciclos de la máquina por instrucción no sea estático y sea difícil de razonar.

Una respuesta más detallada:

La noción de un ciclo de máquina implica una máquina con algún tipo de evento global de sincronización (un reloj) que ayuda a domesticar un complejo desastre de eventos asincrónicos en algo más fácil de razonar. La mayoría de las arquitecturas son realmente sincrónicas y definen un reloj central: una onda cuadrada de cierta frecuencia que funciona libremente y que hace que los flip flops bloqueen los valores varias veces por segundo (este es el impresionante número de GHz informado por personas como Intel). Las máquinas con múltiples núcleos pueden usar diferentes relojes centrales. Además, la red y las cachés que conectan estos núcleos pueden tener su propio reloj (generalmente más lento).

En algunas arquitecturas, esta unidad de trabajo sincrónico es exactamente igual a una instrucción. Tal es el dominio de los simuladores de procesadores educativos conectados a modelos de memoria “mágicos” o nada más que SRAM. En este caso, la máquina realiza todo el cuerpo lógico asociado con cualquier instrucción ISA dada en un solo ciclo de máquina. Esto es atípico de las máquinas que se encuentran en la naturaleza.

En arquitecturas canalizadas simples de avance (modelos de procesadores educativos más sofisticados y algunas arquitecturas RISC muy mínimas), la máquina ejecuta exactamente una instrucción por ciclo de máquina (con algunas excepciones específicas de la arquitectura, donde se insertan “burbujas” en la tubería para retrasar ciertas eventos), pero cada instrucción lleva más tiempo que un solo ciclo de máquina. La arquitectura divide una instrucción en varias fases: Fetch, Decode, Execute, etc., y evalúa estas fases en paralelo para varias instrucciones consecutivas en vuelo. Estas máquinas son muy parecidas a una cinta transportadora: las instrucciones entran a una velocidad por ciclo y salen a la misma velocidad, mientras que varias instrucciones están “en vuelo”.

Los procesadores VLIW (palabra de instrucción muy larga) ejecutan varias instrucciones simultáneamente, haciendo que el recuento de ciclo amortizado por instrucción sea bastante pequeño, tal vez incluso por debajo de 1 ciclo.

La noción de un ciclo de instrucción me parece gramaticalmente incorrecta. En la mayoría de las máquinas, una instrucción tomará en promedio múltiples ciclos. Una máquina que reprograma dinámicamente las instrucciones puede aplastar las instrucciones NO-OP, convirtiéndolas efectivamente en instrucciones de ciclo cero (esto ignora la latencia de buscarlas y decodificarlas, pero las cosas aquí se complican rápidamente, ya que las instrucciones son a menudo de longitud variable, y son decodificado en paquetes). En última instancia, si bien los cambios en la frecuencia del reloj de la máquina dada una arquitectura específica describen efectivamente los cambios en el rendimiento de la máquina, la comparación de las frecuencias del reloj de la máquina de diferentes arquitecturas no tiene sentido.

¡Espero que esto ayude!

La diferencia puede no ser concreta. Pero así es como lo veo.

Un ciclo de instrucción es parte de la progresión lógica de una instrucción en lenguaje ensamblador. Un ejemplo de MOS 6502 sería el ciclo de “actualización del indicador” de una instrucción que modifica los indicadores del procesador de alguna manera. Otro sería el cálculo de la Dirección efectiva para una instrucción de acceso de memoria. Esto lo hacen todos los procesadores que conozco.

Los ciclos de la máquina son generalmente más profundos que los ciclos de instrucción. Tal vez el ciclo de instrucciones de actualización de la bandera lleva varios ciclos de máquina temporizados internamente más rápidos. Cada ciclo decodifica un conjunto diferente de señales de control de una ROM de temporización de instrucciones.

Pero esto es una generalización. Otros responderán completamente opuestos y tendrán la misma razón.

More Interesting

¿Qué busca el comité de admisiones de ECE en UT Austin en los posibles candidatos?

¿Cuál es la mejor manera de lidiar con mis conferencias? Estoy estudiando ingeniería informática.

Soy estudiante de informática (2º año). ¿En qué idiomas o campos debo concentrarme para poder ganar un buen dinero en el futuro?

¿Qué temas de ingeniería informática son útiles en la ciencia de datos?

¿Cuál es el mejor libro que puede motivar a un principiante en el campo de la ingeniería informática y la electrónica? Quiero saber la historia de las computadoras desde el primer transistor y los cálculos.

¿Por qué la ingeniería informática está perdiendo brillo en India?

¿Por qué se llama así al almacenamiento en la nube? ¿Qué significado tiene la palabra '' nube '' en el término?

¿Cuáles son las diferentes cosas relacionadas con la informática / ingeniería que puedo aprender durante las vacaciones de verano?

¿Debo obtener una licenciatura / maestría en informática o una licenciatura en ingeniería informática con un CS menor?

¿Hay algún consejo para los estudiantes de primer año antes de unirse a una universidad de ingeniería?

¿Cuál es el mejor Linux para estudiantes universitarios de ingeniería informática?

¿Cuál es la diferencia entre computación concurrente, computación paralela y computación distribuida?

Si eres estudiante de ingeniería informática, ¿podrías ir a la escuela de medicina para electrofisiología y cirugía cardiotorácica o son diferentes campos de estudio?

Quiero hacer "cosas" en la web, es un BsC. en Computadoras necesarias?

¿Qué carrera en ingeniería informática en el mundo tiene un alcance ilimitado pero menos multitud?