¿Cómo almacena el contador de programa la memoria de instrucciones cuando se carga el programa? [cerrado]

se menciona en el libro organización y diseño de computadoras de Patterson/Hennessy página 252 que:

La memoria de instrucciones solo necesita proporcionar acceso de lectura porque la ruta de datos no escribe instrucciones. Dado que la memoria de instrucciones solo lee, la tratamos como lógica combinacional: la salida en cualquier momento refleja el contenido de la ubicación especificada por la entrada de dirección y no se necesita una señal de control de lectura. ( Necesitaremos escribir la memoria de instrucciones cuando cargamos el programa; esto no es difícil de agregar y lo ignoramos por simplicidad).

mi pregunta es : ¿cómo es posible almacenar la memoria de instrucciones cuando el programa está cargado? ¿Deberíamos agregar una habilitación para la PC que se active por sistema operativo y el sistema operativo luego escriba la dirección en la PC? o hay otras formas??

aquí hay una figura simple de PC y memoria de instrucciones

pc y memoria de instrucciones

La memoria de instrucciones es escribible por algún medio. Puede ser RAM normal, algún tipo de ROM programable o lógica programable de una sola vez. No está claro qué PC está relacionado con esto.
@EugeneSh. PC es solo un registro que contiene la dirección de la instrucción actual que se está ejecutando
Sé lo que es PC. No está claro cómo se relaciona con el resto de su pregunta.
@EugeneSh. No sé si puede estar relacionado o no. Simplemente quiero saber cómo hacer lo mencionado entre paréntesis en la cita. Pensé que la PC puede ser participada
La PC está relacionada con la ejecución de un programa --> Obtener --> ciclo de ejecución. Esto no está relacionado de ninguna manera con la forma en que los datos se colocaron originalmente en la memoria de instrucciones durante un ciclo de programación.
@JackCreasey, entonces esto significa que debemos cambiar la memoria de instrucciones. ¿¿bien??
@JackCreasey Pensé que debido a que las instrucciones se colocan en algún lugar de la memoria, solo necesitamos inicializar la PC al principio. y la memoria de instrucciones hará el resto del trabajo (cargando la primera instrucción y...)
Cargas el programa antes de ejecutarlo, ¿por qué es tan difícil de entender? En los viejos tiempos, simplemente detenías la computadora e insertabas tarjetas perforadas. Cuando termine de cargarlo, configure la PC en la ubicación de la memoria donde se encuentra el punto de entrada de su programa y detenga la computadora. ¿De qué otra manera podrías hacer esto? En las PC modernas, el proceso de arranque sigue siendo el mismo, excepto que el cargador de arranque lo hace por usted.
@FatemehKarimi La memoria de instrucciones NO funciona. Es simplemente la memoria a la que se accede mediante el ciclo de obtención/ejecución de cualquier procesador que utilice. Todo el trabajo se realiza en la lógica o firmware de la unidad de ejecución.
bits son bits, una respuesta a continuación entra en más detalles, pero asumiendo que esto es ram, entonces puede hacer ciclos de datos para llenar la memoria y luego ciclos de instrucciones para leerlo. Poner los bits en algún lugar no usa el contador del programa y no son instrucciones en ese punto, es una forma de datos que no se convierten en instrucciones hasta que se analizan mediante la decodificación/recuperación/ejecución... e incluso allí en las ramas algunos no -Las instrucciones se pueden introducir en una tubería, tal vez no en el caso de los libros de texto, pero en general sí.
el contador de programa no se usa para realizar escrituras, se usa para realizar lecturas. (podría usarse para ejecutar instrucciones que realizan escrituras, seguro).

Respuestas (2)

Esencialmente, todo lo que dice el texto es que, de alguna manera, el programa se carga en la memoria antes de que la CPU pueda comenzar a ejecutarlo. Dado que el texto solo tiene la intención de discutir cómo la CPU ejecuta las instrucciones fuera de la memoria del programa, cómo las instrucciones terminan en la memoria del programa en primer lugar es un detalle de implementación.

Hay muchas formas de introducir las instrucciones en la memoria del programa y depende en gran medida de la arquitectura.

Los sistemas basados ​​en memoria de solo lectura tendrán las instrucciones cargadas en la memoria del programa ya sea durante la fabricación del propio chip (con una ROM de máscara) o con hardware de programación externo que escribe en la matriz de memoria.

Los sistemas que contienen memoria flash a menudo tienen algún mecanismo de autoprogramación en el que el procesador puede ejecutar instrucciones especiales o escribir en registros especiales para activar una operación de borrado o escritura en la memoria del programa. Es posible que la CPU deba detenerse temporalmente para permitir que se complete la operación.

Una computadora de escritorio estándar que se ejecuta desde la memoria RAM y carga programas desde un disco duro tiene un proceso mucho más complejo. En este caso, el arranque inicial se realizaría desde una ROM flash de algún tipo, posiblemente copiada en la RAM por componentes de la placa base antes de que la CPU principal pueda comenzar a ejecutarse. Luego, este código de inicio cargará más código en la RAM desde un disco duro o una unidad de estado sólido. Una CPU de escritorio o servidor en realidad ni siquiera ejecuta código fuera de la RAM, ejecuta código fuera de la memoria caché en el chip, que a su vez se carga desde la RAM. Debido a esto, es posible que la CPU ejecute software desde la memoria caché mientras se realizan operaciones de memoria para hacer otras cosas, incluida la copia de otro código ejecutable desde un disco duro a la RAM. La CPU también se detiene y espera ocasionalmente cuando el código que desea ejecutar no está en el caché.

Entiendo tu pregunta, ¿cómo puedes arreglar un auto mientras conduces?

El procesador no necesita la memoria de instrucciones todo el tiempo, bloquea la instrucción en un registro (o muchas instrucciones en una cola). Hasta su procesamiento, la memoria de instrucciones, datos y direcciones pueden ser accedidas por el propio procesador o por algún otro coprocesador.

Si la escritura en la memoria de instrucciones es rápida como una memoria RAM, se puede hacer en un solo paso, luego la PC recupera las direcciones y la siguiente instrucción se puede leer desde la memoria de instrucciones. En este momento las direcciones son manejadas por un registro diferente.

Si es un proceso largo como en las memorias flash, alguien más lo hace, generalmente la memoria de instrucciones está organizada en bancos, el banco que está en proceso de escritura no está disponible para leer instrucciones. El procesador envía los datos al motor de programación mientras ejecuta instrucciones de un banco diferente.

Por supuesto, el código inicial, el cargador de arranque que le dice al procesador cómo cargar un programa, está escrito por medios externos, en la fábrica, usando programadores, etc. sin la intervención del procesador.