stringtranslate.com

robo de ciclo

En informática , tradicionalmente el robo de ciclos es un método para acceder a la memoria de la computadora (RAM) o al bus sin interferir con la CPU. Es similar al acceso directo a la memoria (DMA) para permitir que los controladores de E/S lean o escriban RAM sin intervención de la CPU. La explotación inteligente de tiempos específicos de CPU o bus puede permitir que la CPU funcione a máxima velocidad sin demora si los dispositivos externos acceden a la memoria que no participan activamente en la actividad actual de la CPU y completan las operaciones antes de cualquier posible conflicto con la CPU.

El robo de ciclos era común en plataformas más antiguas, primero en supercomputadoras que usaban sistemas complejos para cronometrar su acceso a la memoria, y más tarde en las primeras microcomputadoras donde el robo de ciclos se usaba tanto para periféricos como para controladores de pantalla . Es más difícil de implementar en plataformas modernas porque a menudo hay varias capas de memoria ejecutándose a diferentes velocidades y el acceso suele estar mediado por la unidad de administración de memoria . En los casos en los que se necesita la funcionalidad, los sistemas modernos suelen utilizar RAM de doble puerto que permite el acceso de dos sistemas, pero esto tiende a ser costoso.

En referencias más antiguas, el término también se utiliza para describir los sistemas DMA tradicionales donde la CPU se detiene durante las transferencias de memoria. En este caso el dispositivo está robando ciclos de la CPU, por lo que es el sentido opuesto al uso más moderno.

En los modelos más pequeños de IBM System/360 y System/370 , el almacén de control contiene microcódigo tanto para la arquitectura del procesador como para la arquitectura del canal. Cuando un canal necesita servicio, el hardware roba ciclos del microcódigo de la CPU para ejecutar el microcódigo del canal.

Implementaciones comunes

Algunos procesadores fueron diseñados para permitir el robo de ciclos, o al menos lo admitieron fácilmente. Este fue el caso de los sistemas Motorola 6800 y MOS 6502 debido a una característica de diseño que significaba que la CPU solo accedía a la memoria cada dos ciclos de reloj. El uso de RAM que funcionaba dos veces más rápido que el reloj de la CPU permitió que un segundo sistema intercalara sus accesos entre las CPU cronometrándose cada dos ciclos de reloj. Esto fue ampliamente utilizado para actualizar la pantalla usando la memoria principal como framebuffer . La RAM común de finales de la década de 1970 funcionaba a 2 MHz, por lo que la mayoría de las máquinas tenían una CPU que funcionaba alrededor de 1 MHz. BBC Micro consiguió un suministro de RAM de 4 MHz que permitió que su CPU funcionara a 2 MHz.

Otra solución común era utilizar bancos de memoria separados que almacenaran instrucciones frente a datos, o más de un conjunto de datos. En estos casos los sistemas de E/S pueden acceder a su memoria de datos mientras el procesador utiliza un banco diferente. Un ejemplo es el Zilog Z80 , cuya línea M1 indica que el procesador está leyendo instrucciones; Si esas instrucciones están en un banco diferente, o más comúnmente en una ROM , los sistemas de E/S pueden acceder a la RAM sin interferir con el procesador.

Arquitectura moderna

El robo de ciclos es difícil de lograr en los sistemas modernos debido a muchos factores, como la canalización , donde los elementos de búsqueda previa y concurrentes acceden constantemente a la memoria, lo que deja pocos tiempos de inactividad predecibles para infiltrarse en el acceso a la memoria. DMA es el único método formal y predecible para que dispositivos externos accedan a la RAM.

Este término es menos común en la arquitectura informática moderna (por encima de 66-100 MHz), donde los distintos buses y controladores externos generalmente funcionan a velocidades diferentes y las operaciones internas de la CPU ya no están estrechamente relacionadas con las operaciones del bus de E/S.

Ejemplos en sistemas informáticos reales.

El robo inesperado del ciclo por parte del radar de encuentro durante el descenso casi provocó que se abortara el aterrizaje del Apolo 11 , pero el diseño de la computadora de orientación permitió que el aterrizaje continuara al descartar tareas de baja prioridad.

El "robo de ciclo" del IBM 1130 es en realidad DMA porque el reloj de la CPU se detiene durante el acceso a la memoria. Varios controladores de E/S acceden a la RAM de esta manera. Se autoarbitran a través de un esquema de prioridad fija. La mayoría de los controladores controlan deliberadamente el acceso a la RAM para minimizar el impacto en la capacidad del sistema para ejecutar instrucciones, pero otros, como los adaptadores gráficos de vídeo, funcionan a mayor velocidad y pueden ralentizar el sistema.

El concepto de robo de ciclos del 1130 permite que el programa de la CPU inicie una operación en un dispositivo de E/S y luego continúe el programa principal mientras el dispositivo de E/S realiza su operación. Cada dispositivo de E/S que opera de esta manera toma (roba) un ciclo de la CPU cuando es necesario.

La CPU está "inmovilizada" sólo un ciclo mientras se transfiere un carácter de datos. La frecuencia con la que los dispositivos roban ciclos depende del tipo de dispositivo.

Dado que la CPU es mucho más rápida que cualquier dispositivo de E/S del sistema, la CPU puede estar realizando otra función, como aritmética, al mismo tiempo que se realiza una operación de E/S. De hecho, varias operaciones de E/S pueden superponerse entre sí y con otras funciones de la CPU. [1]

El robo de ciclos ha sido la causa de una importante degradación del rendimiento en máquinas como la Sinclair QL , donde, por razones económicas, la RAM de vídeo no era de acceso dual . En consecuencia, a la CPU M68008 se le negó el acceso al bus de memoria cuando el "controlador maestro" ZX8301 accedía a la memoria, y la máquina tuvo un rendimiento deficiente en comparación con máquinas que usaban procesadores similares a velocidades similares.

Referencias

  1. ^ Concepto de robo de ciclos IBM 1130