También conocido como registro de dirección de instrucción, PC o puntero de instrucción, un contador de programa es un tipo de registro que se encuentra en la unidad central de procesamiento (CPU) de un sistema informático. El propósito del contador es proporcionar el alojamiento temporal para la siguiente instrucción que se ejecutará en una serie de instrucciones. A medida que se recupera e implementa una instrucción, el contador del programa pone en cola la siguiente instrucción en la cadena, minimizando efectivamente los retrasos en la ejecución de los pasos necesarios para completar una tarea. Al señalar siempre la siguiente instrucción, el proceso se mantiene avanzando de manera eficiente.
Si bien existen variaciones, el funcionamiento de un contador de programas dentro de la unidad central de procesamiento es relativamente sencillo. Cuando se ordena una nueva tarea, las instrucciones necesarias para administrar esa tarea se recuperan de la memoria. Esto normalmente se logra cuando la CPU crea una dirección que luego se envía a la memoria, que responde enviando las instrucciones a la unidad como datos a través de un bus de datos.
El contador de programa, como uno de varios registros diferentes integrados en la CPU, realiza la tarea de recibir cada una de las instrucciones en la secuencia de tareas. Mantener la secuencia lógica simplifica la progresión hacia adelante en cada paso y, en última instancia, completa la tarea. Esta progresión lógica se mantiene apuntando a los datos que se utilizarán a continuación incluso cuando los datos anteriores están en uso, y luego apuntando rápidamente a los datos siguientes en la secuencia a medida que se ejecuta cada instrucción por turno.
Dependiendo de la configuración del contador del programa, el registro puede servir como puntero para más de una instrucción involucrada con un proceso dado actualmente en ejecución. Con algunos diseños de registro, el contador del programa no solo apunta hacia el proceso que sigue en la secuencia, sino también hacia la instrucción recién lanzada que ahora está en proceso de implementación. Se cree que este diseño en particular ayuda a mantener el equilibrio de recursos, así como a proteger el avance de las instrucciones con un mayor nivel de eficiencia.
La función de un contador de programa es esencial para la ejecución exitosa de las instrucciones involucradas en cualquier tarea. Al señalar el camino hacia cada instrucción en la secuencia, el contador ayuda a proporcionar una ejecución lógica de esos pasos que finalmente conducen a completar la tarea de manera rápida y eficiente. Sin el uso de este tipo de registro, la posibilidad de que se interrumpa la secuencia aumentaría y las posibilidades de completar la tarea serían relativamente pocas. Al agregar organización a la finalización incremental paso a paso de todas las instrucciones, el contador del programa sirve como conducto que minimiza las anomalías y mantiene el proceso avanzando correctamente.