Sei sulla pagina 1di 5

INSTITUTO POLITÉCNICO NACIONAL

UNIDAD PROFESIONAL INTERDISCIPLINARIA


EN INGENIERÍA Y TECNOLOGÍAS AVANZADAS

NOMBRE: ARCE GONZÁLEZ DANIEL


AGUILAR GOROCICA JOSÉ VICENTE

BARAJAS MORENO ANGEL GIOVANNI

PRACTICA 3

“PILAS”

MATERIA: ARQUITECTURA DE LAS COMPUTADORAS


Introducción teórica

La pila está destinada a guardar direcciones de retorno en las llamadas subrutinas o


funciones y para colocar los parámetros en las llamadas a funciones en lenguajes de alto
nivel. Existen dos formas de implementar una pila en una arquitectura:

 Por software
 Por software y hardware

Implementación por Software

Esta es la forma de implementación en un procesador de propósito general como Intel o


AMD. Para su implementación si toma una sección de la memoria principal del sistema para
destinarla al uso de la pila.

La ventaja de esta implementación es que podemos tener una pila de gran tamaño debido
a que generalmente los recursos de la memoria principal son grandes.

La desventaja es la implementación por software es que la memoria principal tiene un tiempo


de acceso muy grande, por lo general está asociado a dos instrucciones de lectura y
escritura (pop y push).

Implementación por hardware

Un diseño en hardware permite obtener un llamado o subrutinas con una mayor velocidad y
desempeño que por la implementación por software. En esta implementación cada una de
las posiciones de la pila es un contador de programa del modo que queremos una pila de n
niveles necesitamos n contadores. Esto puede ser muy costoso en términos de recursos. Sin
embargo, la ejecución se realiza en tan solo un ciclo de reloj.

(dibujo)

DAT-IN: Bus de 8 bits, aquí se pone la dirección a donde tiene que soltar el procesador
cuando se llama a una función o condiciones (brne, brlo, etc)

DAT-OUT: Bus de 8 bits, es por donde sale la dirección del contador al programar apuntado
por registro de pila hacia la memoria del programa, para poder leer la instrucción a ejecutar.

CLK: Señal de reloj que sincroniza las acciones en la pila.


CLR: Señal de reset , esta señal se ejecuta e manera asíncrona.
UP: Señal que permita cambiar de contador de programa a un nivel superior, se ejecuta de
forma asíncrona.

DWN: Señal que permite cambiar de contador de programa a un nivel inferior, se ejecuta de
forma síncrona.

WPC: Esta señal indica cuando queremos cargar una dirección a través del bus de datos DAT
IN en el registro contador actual. Esta señal se ejecuta de manera síncrona.

FUNCIONAMIENTO DE UNA PILA

La pila está conformada por 16 contadores de 8 bytes, estos 16 contadores se seleccionan


con otro contador etiquetando como stack pointer (SP), cuando SP es igual a cero el
contador del programa es el contador que se está usando en el proceso para ejecutar las
instrucciones.

Si mandamos a llamar a una subrutina la unidad de control del procesador debe de poner
las siguientes señales

WPC=1 Con ello se incrementa el sp en 1, para que se selecciona el pc1, además se carga
la dirección colocada en DATIN

Cuando se termina una subrutina la unidad de control debe colocar las siguientes señales

Dwr=1

Con ello se decrementa el stack pointer en 1, regresando al nivel anterior.

PROCEDIMIENTO

Registro de estado – SREG

El registro de estado de los AVR (SREG) en la posición del


espacio de I/O $3F ($5F) se define como:

Bit 7 6 5 4 3 2 1 0

$3F ($5F) I T H S V N Z C SREG


Read/Write R/W R/W R/W R/W R/W R/W R/W R/W
Initial Value0 0 0 0 0 0 0 0

El puntero de Pila apunta al área de pila de la SRAM de datos donde se localizan la pila de
interrupción y de subrutina. Este espacio de la pila en la SRAM de datos debe ser definido por
el programa antes de que se ejecute cualquier llamada a subrutina o se habiliten
interrupciones. El puntero de pila debe estar a set para apuntar por encima del valor
asignado. El puntero de pila es decrementado en 1 cuando los datos se introducen en la pila
con la instrucción PUSH y es decrementado en 2 cuando una dirección se introduce en la
pila con llamadas a subrutinas e interrupciones. El puntero de pila es incrementado en 1
cuando el dato se saca de la pila con la instrucción POP y es incrementado en 2 cuando una
dirección se saca de la pila con retorno de subrutina RET o retorno de interrupción RETI.

CONCLUSIONES

Tanto a nivel software como hardware el termino de pila y su funcionamiento juega un papel
muy importante en la vida diaria (tecnológicamente hablando), al crear en leguaje VHDL el
funcionamiento de una pila a nivel hardware, ha quedado claro cómo es que funciona al
hacer llamados a subrutinas. En muy interesante saber que es costoso, pero la ejecución es
muy rápida ya que se hace en un solo ciclo de reloj.

ARCE GONZÁLEZ DANIEL

Con el desarrollo de esta práctica se entendió el concepto de pila, que es un área de la


memoria de los computadores con un origen fijo, un espacio para almacenar datos y un
puntero. Al principio, su número de elementos es cero y la dirección del puntero coincide con
la dirección de origen. Conforme van incorporándose datos, los elementos contenidos en la
pila van incrementándose y el puntero va actualizando su dirección para hacerla coincidir
con el último en incorporase.
También se puso en práctica la definición de una pila mediante su origen (una dirección de
memoria), y su capacidad para almacenar datos. Cuando se intenta leer más allá de su
origen (esto es, se intenta leer un elemento cuando está vacía) o cuando se intenta
sobrepasar su capacidad de almacenar elementos, se produce un error: error por
desbordamiento.
AGUILAR GOROCICA JOSÉ VICENTE

Podemos decir que esta práctica fue de mucho provecho ya que se pudo ver el
comportamiento de la rutina de tiempo, la cual era la que al ser llamada podía hacer mover
nuestro código a la velocidad propuesta, también podemos recalcar que se intentó utiliza
un subprograma, pero este al ser visto en hardware no hacia uno de los casos del programa,
ya que el código para ese subprograma era demasiado extenso para poderse ejecutar y se
vio la gran diferencia al utilizar la rutina.

BARAJAS MORENO ANGEL GIOVANNI

Potrebbero piacerti anche