Está en la página 1de 7

Conceptos de Programa en Arquitectura de Computadoras

En el á mbito de la arquitectura de computadoras, se encuentran dos enfoques fundamentales relacionados con la


programació n: la programació n hardware y la programació n software.

Programación Hardware:

En la programació n hardware, se trata de programas cableados que implican la configuració n física de conexiones
para ejecutar un programa. Este enfoque implica establecer conexiones físicas entre componentes electró nicos para
lograr una funcionalidad específica. Es una forma temprana de programació n en la que las tareas se realizan a través
de conexiones físicas permanentes.

Programación Software:

En la programació n software, se utiliza un conjunto de instrucciones que definen una serie de operaciones a realizar.
Un programa en este contexto se conforma como un conjunto de instrucciones escritas en lenguajes de programació n
que un intérprete o compilador traduce en có digo ejecutable. La unidad de control en la CPU es responsable de
decodificar estas instrucciones y generar todas las señ ales de control necesarias para ejecutar el programa.

Estos dos enfoques, la programació n hardware y la programació n software, representan diferentes formas de lograr
funcionalidad en sistemas de computadoras, desde conexiones físicas directas hasta instrucciones interpretadas por
software para controlar el hardware.

Arquitectura de Von Neumann

La Arquitectura de Von Neumann es un modelo fundamental en la informá tica que establece la estructura y el
funcionamiento bá sico de las computadoras modernas. Fue diseñ ada por John von Neumann y se caracteriza por el
concepto de "programa-almacenado". A continuació n, se detallan sus componentes principales:

Unidad de Entrada:
Esta unidad proporciona las instrucciones y los datos necesarios para la ejecució n del programa.

Unidad de Memoria:
En la memoria, se almacenan tanto los datos como las instrucciones del programa.
La memoria es direccionable por localidad, lo que significa que se puede acceder a cualquier dato o instrucció n en
funció n de su direcció n de memoria, independientemente del contenido.

Unidad Aritmético-Lógica (ALU):


La ALU es la unidad encargada de procesar los datos, realizando operaciones aritméticas y ló gicas segú n las
instrucciones del programa.

Unidad de Control:
La Unidad de Control dirige la operació n general de la computadora.
Lee las instrucciones almacenadas en memoria una a una y las ejecuta en la ALU.
Contiene registros de utilidad, como:
Memory Buffer Register: Almacena temporalmente palabras que se deben leer o escribir en la memoria.
Memory Address Register: Contiene la direcció n en memoria de la palabra que se va a leer o escribir.
Instruction Register: Almacena el có digo de operació n de la instrucció n que se va a ejecutar.
Program Counter: Mantiene la direcció n de la pró xima instrucció n a buscar en memoria.
AC & MQ: Se utilizan para almacenar resultados y operandos temporalmente durante las operaciones de la
ALU.

Unidad de Salida:
En esta unidad se envían los resultados de las operaciones y se realiza la salida de datos hacia dispositivos
externos o hacia la memoria.
La Arquitectura de Von Neumann utiliza el sistema binario y se basa en la ejecució n secuencial de instrucciones
almacenadas en memoria. Este diseñ o ha sido fundamental en el desarrollo de las computadoras modernas,
proporcionando una estructura ló gica y eficiente para la ejecució n de programas y el procesamiento de datos.

Repertorio (Set) de Instrucciones en la Arquitectura de Computadoras

El conjunto completo de instrucciones que un procesador puede ejecutar se conoce como el "repertorio de
instrucciones". Cada instrucció n en este repertorio debe contener informació n esencial para que la CPU pueda
ejecutarla correctamente. Los elementos clave que componen una instrucció n son:

Código de Operación: Este có digo determina qué tipo de operació n se llevará a cabo, como operaciones
aritmético-ló gicas, de transferencia de datos, de entrada/salida o de control.

Operandos Fuente y Destino: Una instrucció n debe especificar las referencias a los operandos que son
necesarios para llevar a cabo la operació n. Estos operandos pueden estar en memoria, memoria virtual, memoria
caché, registros o dispositivos de entrada/salida. Los operandos pueden ser datos numéricos (punto fijo o punto
flotante), datos de tipo cará cter (ASCII, EBCDIC), datos ló gicos o direcciones de memoria. Ademá s, se debe indicar
explícitamente cuá l es el destino de la operació n.

Referencia a la Próxima Instrucción: Cada instrucció n también debe contener informació n sobre cuá l será
la pró xima instrucció n a ejecutar, lo que permite que el flujo de control del programa siga una secuencia adecuada.

Los repertorios de instrucciones pueden variar principalmente en funció n del tipo de almacenamiento interno de los
operandos. Aquí se mencionan tres tipos comunes:

Tipo Pila: En este tipo, los operandos está n implícitamente en la parte superior de una pila, por lo que no es
necesario especificar su ubicació n en las instrucciones.
push A
push B
add
pop C

Tipo Acumulador: En el tipo acumulador, uno de los operandos se encuentra implícitamente en un registro
interno de la CPU, mientras que el otro se debe especificar explícitamente en la instrucció n.
load A
add B
store C
Tipo Registro: Este tipo de repertorio de instrucciones utiliza registros internos de la CPU para el
almacenamiento de operandos. Puede ser de dos formas:
Registro-Registro: Ambos operandos deben estar en registros antes de operar con ellos. Se utilizan
instrucciones de carga y almacenamiento para transferir datos entre registros y memoria.
load R1, A
load R2, B
add R3, R2, R1
store R3, C

Registro-Memoria: Uno de los operandos se encuentra en un registro, mientras que el otro debe
recuperarse de la memoria.

Decisiones en el diseño del repertorio de instrucciones

Tipos de datos, estos ya han sido mencionados previamente.


Conjunto de operaciones, cuantas, y cuales, que tan complejas son.
Formatos de instrucciones, de que longitud son, cuantas direcciones referenciales contendrá , y que tamañ os (bits)
tendrá n los campos en una instrucció n.
Registros, la cantidad de registros que contendrá y podrá n ser referenciados.
Direccionamiento, los formas de acceder a las direcciones de los operandos.

Numero de Direcciones

¿Cuá ntos direcciones se pueden hacer referencia en una instrucció n? Depende de la arquitectura, la gran mayoría
permiten utilizar una, dos, o tres. Son las instrucciones aritméticas ló gicas las que requieren má s operandos, con un
má ximo de dos y otro tercer para almacenar el resultado de la operació n. Sin embargo, tres referencias a operandos
en una instrucció n no son muy comunes. Una instrucció n que alberque dos referencias a operandos, utiliza a uno de
ellas como operando destino, almacenando en este el resultado de la operació n. La instrucció n de una sola
referencia es aú n má s simple, pero una segunda direcció n debe estar implícita, el acumulador. Incluso la idea de
cero referencias a operandos es posible por medio de la pila.
Menos direcciones por instrucció n requieren una CPU menos compleja e instrucció n má s cortas en términos de bits.
Aunque los programas contendrá n má s instrucciones y su ejecució n demorara un poco má s. Como bien hemos visto,
si las direcciones de memoria que se encuentran en la instrucció n apuntan a algú n registro acelerara la ejecució n.

Conjunto de Operaciones

El conjunto de operaciones que una CPU puede realizar se determina en gran medida por el có digo de operació n (cod-
op) en las instrucciones. Este có digo especifica el tipo de operació n que se debe llevar a cabo. A continuació n, se
describen algunas de las operaciones generales que suelen estar presentes en la mayoría de las arquitecturas:
Transferencia de Datos: Esta operació n es fundamental y requiere referenciar los operandos fuente y
destino. Cada referencia puede ser un registro, una direcció n de memoria, o la pila y se debe indicar el tamañ o de
datos a transferir, y el modo de direccionamiento. Si las referencias son a registros es una operació n simple. En
cambio si alguno o ambos referencian a memoria entonces se deben llevar a cabo alguna o todas los pasos siguientes:
calcular la direcció n basá ndose en el MD, traducir de direcció n virtual a real, determinar si está en la cache, si no
delegar la orden a memoria.
Aritmético/Lógicas: Aquí se encuentran las operaciones matemá ticas y ló gicas, como suma, resta,
multiplicació n, divisió n y operaciones de un solo operando como el valor absoluto o incremento. Estas operaciones
pueden implicar la transferencia de datos.
Conversión: Son aquellas operaciones que operan sobre el formato de los datos, como la conversió n de
decimal a binario.
Entrada/Salida (E/S): Las operaciones de E/S involucran la transferencia de datos entre dispositivos
periféricos y la CPU. Estas operaciones son fundamentales para interactuar con el entorno externo y los dispositivos.
Control de Flujo: Las instrucciones de control de flujo modifican el flujo secuencial de ejecució n del
programa. Pueden cambiar el valor del contador de programa y afectar el orden en que se ejecutan las instrucciones.
Estas instrucciones incluyen bifurcaciones, saltos condicionales e incondicionales, llamadas a subrutinas,
interrupciones, etc. Los motivos son claros, una instrucció n o un bloque de instrucciones (modularizació n) en el
programa se puede ejecutar má s de una vez. Como por ejemplo al recorrer un arreglo de elementos, o la toma de
decisiones de una estructura de control condicional.

Formato de Instrucciones

Este formato se define en términos de bits y consta de varios campos que especifican diferentes aspectos de la
instrucció n. Ademá s, en el formato se debe contemplar implícita o explícitamente ninguno o algunos operandos
(direcciones). Esto ú ltimo debe hacer referencia a los operandos a través de los modos de direccionamiento.
En una instrucció n, se encuentra, ademá s, la referencia al operando, (en el campo de direcciones). Para refenciar al
operando se emplean algunas modos de direccionamiento que ademá s, permiten reducir el nú mero de bits en la
instrucció n. Este campo de direcciones puede indicar de qué manera se debe acceder al operando, ya sea de manera
inmediata (con el valor incluido directamente en la instrucció n) o mediante un direccionamiento específico. ¿Có mo
podemos reducir el tamañ o de estas especificaciones? Si un operando va a usarse varias veces puede colocarse en un
registro o Se puede especificar uno o má s operandos de forma implícita por medio del acumulador.
Modo inmediato: El operando está presente en la instrucció n. Esto presenta una ventaja pues no hay que ir a
buscar a memoria. Pero el operando contiene magnitud limitada, debido al campo de direcciones que siempre será
menor con respecto a la longitud de una palabra de memoria. Se utiliza para definir constantes y para inicializar
variables.

Modo directo: En el campo de direcciones se encuentra la direcció n de memoria del operando. La desventaja
es que se requiere una referencia a memoria, y sigue limitado por el tamañ o del campo de direcciones. No es prá ctico
para recorrer estructuras de datos iterativas, porque si se va a usar muchas veces el mismo operando conviene
tenerlo en un registro.
Modo directo con Registro: Similar al anterior, con la diferencia de que en el campo de direcciones hace
referencia a un registro del banco de registros que contiene la CPU. De esta forma solo se necesitan pocos bits para
referenciar a un registro y no se accede a memoria. Pero el espacio de direcciones de registros sigue siendo también
limitado. Generalmente se necesitan 3 o 4 bits para referenciar este campo por lo que solamente se podrá n acceder a
unos 8 o 6 registros. Los registros no son muchos y es un recurso preciado. Su uso debe hacer de manera eficiente.

Modo indirecto: En la instrucció n está la direcció n de la direcció n del operando. Así, con una direcció n de
menos bits en la instrucció n, se apunta a una direcció n de má s bits. Se realizan mú ltiples accesos a memoria.
Modo indirecto con Registro: En la instrucció n se referencia al registro que contiene la direcció n de
memoria en donde reside el operando. Mismas ventajas que el anterior.

Modo por Desplazamiento: Combina las características de direccionamiento indirecto y directo de registro.
El campo de direcciones se divide en dos partes, y luego se suman para acceder al operando.

Relativo: En el campo de direcciones, se encuentra, el registro referenciado implícitamente, el


contador de programa y el desplazamiento, en Ca2, ambos se suman y producen la direcció n efectiva del operando. Si
la mayoría de las referencias a memoria está n relativamente cercas a la instrucció n en ejecució n, este modo ahorra
bits de direcciones en la instrucció n.
Registro base: El registro referenciado explicita o implícitamente contiene una direcció n de memoria,
y se suma al desplazamiento, entero sin signo, desde dicha direcció n. Se usa en segmentació n.
Indexado: Es inverso al anterior. En él se referencia a una direcció n de memoria pero es el registro,
índice, ahora quien contiene el desplazamiento. Su uso es eficiente a la hora de ejecutar instrucciones iterativas, como
arreglos.
Pila: Asociado con la pila hay un registro puntero de pila, cuyo valor es la direcció n tope de pila,
generalmente se guarda en un registro. Así, las referencias a posiciones de la pila en memoria son direccionamientos
indirectos con registro, porque se decrementan o incrementan en mú ltiplos de una palabra. De esta forma las
instrucciones no necesitan incluir referencias a memoria, simplemente operan sobre la pila.
Subrutinas

Una subrutina es un programa independiente que se ejecuta con datos de entrada y produce resultados cuando se
llama desde otra parte del programa. Esto permite una modularizació n eficiente del có digo. Se pueden utilizar en
mú ltiples lugares del programa principal segú n sea necesario. Esto fomenta la reutilizació n del có digo y evita la
duplicació n innecesaria de instrucciones. Para llamar a una subrutina desde el programa principal, se utiliza una
instrucció n de llamada y cuando la subrutina ha terminado su ejecució n, se utiliza una instrucció n de retorno para
volver al punto de llamada en el programa principal. Los datos de entrada, pará metros, son datos enviados desde el
punto donde se invoca la subrutina. Estos pará metros pueden pasarse por valor (copia de los datos) o por referencia
(direcció n de memoria de los datos). Los pará metros pueden residir y ser enviados en registros (limitació n, y
precaució n de sobrescribirlos), vía memoria (no recomendable), o a través de la pila; el mejor mecanismo para el
pasaje de parámetros.
Pila: La pila es una estructura de datos fundamental para el manejo de subrutinas. Se trata de un conjunto
ordenado de elementos, y solo se puede acceder a uno de ellos a la vez, conocido como el tope de la pila. La pila sigue
el principio "LIFO" (Last In, First Out), quiere decir que el primer elemento en entrar es el ú ltimo en salir. Para
construir la pila se reserva un bloque de posiciones de memoria contiguas, pueden ser las direcciones má s bajas o
má s altas de la memoria principal. Para esto es conveniente definir algunos registros ú tiles para el manejo correcto
de la pila, un registro base de pila; el cual contiene la direcció n de comienzo del bloque de pila, un registros límite de
pila; que contiene la direcció n del otro extremo del bloque, y el registro puntero de pila; que contiene siempre la
direcció n del tope de pila, este se incrementa o disminuye a medida que se añ ade o elimina algú n elemento en la
estructura.
Llamado a la subrutina: Sugiere algunos pasos.
Apilado de Parámetros: Los pará metros necesarios se apilan en la pila con la instrucció n push. Estos
pueden incluir datos que la subrutina utilizará o direcciones de memoria en las que la subrutina escribirá datos.
Instrucción de Llamada: Se utiliza una instrucció n de llamada (como "call" en MSX88) para invocar la
subrutina.
Salvado de Dirección de Retorno: La direcció n de retorno, que apunta a la siguiente instrucció n
después del llamado a la subrutina, se guarda en la pila.
Salvado del Estado de la Pila: El estado del registro base de pila (en MSX88, es BX) se guarda en la
pila. Que se va a utilizar dentro de la subrutina. Se copia el valor del registro stack pointer (sp) al registro base de pila
(bp) para establecer un punto de referencia. Esto permite moverse por el marco de la pila dentro de la subrutina, ya
que el valor de sp cambia durante el apilado y desapilado.
Reserva de Espacio para Variables Locales: Opcionalmente, se puede reservar espacio en la pila
para variables locales de la subrutina.
Acceso a Parámetros: Se acceden a los pará metros mediante ajustes en la direcció n base de pila (bp).
Estos ajustes es sumando o restando dependiendo de la implementació n de la pila. Esto permite acceder a los
pará metros dentro de la subrutina.
Salida de la Subrutina: Para salir de la subrutina, se realiza el proceso inverso:
Se desapilan los registros que se guardaron.
Se restaura el valor de sp para que apunte nuevamente al valor de bp. Esto es haciendo uso
del pop en los pasos anteriores.
Se restablece el valor original de bp. Pop BX
Se desapila la direcció n de retorno utilizando la instrucció n de retorno, lo que lleva de
vuelta a la siguiente instrucció n en el punto de llamada.
Se desapilan los pará metros pasados.

En el caso de subrutinas anidadas, se siguen pasos similares para manejar los llamados y retornos de manera
adecuada.

También podría gustarte