Está en la página 1de 15

Índice

1a Sesión: Presentación del Programa...........................................................................................2


2a Sesión: Historia de la computación...........................................................................................2
3a sesión: Representación de Datos en la Computadora...............................................................4
Números en punto fijo sin signo:................................................................................................4
Números en punto fijo con signo:.............................................................................................4
4a sesión: Números en punto flotante...........................................................................................5
Casos especiales contemplados en el estándar IEEE-754...........................................................5
5a sesión: Diseño Lógico Combinacional........................................................................................6
Algebra Booleana.......................................................................................................................6
6a sesión: Diseño de Circuitos Combinacionales............................................................................8
7a sesión: Diseño Combinacional. Muxes......................................................................................9
8a sesión: Diseño de circuitos secuenciales síncronos.................................................................10
Flip Flops..................................................................................................................................11
9a sesión: Primera evaluación parcial..........................................................................................12
10a sesión: Diseño secuencial síncrono (segunda parte).............................................................12
Máquina de Moore..................................................................................................................13
Máquina de Mealy...................................................................................................................13
11a sesión: Diseño Lógico Secuencial. FSM2................................................................................14
1a Sesión: Presentación del Programa.

Esta primera sesión del sirvió como presentación de los temas a estudiar a lo largo del curso. Así
mismo se presentó la forma de trabajo la cual sería de forma remota debido a las restricciones
provocadas por la pandemia global a causa del virus covid-19.

El curso estaría enfocado a estudiar el funcionamiento y la organización del procesador ARM


(Advanced RISC1 Machine), el cual posee una arquitectura que permite un procesamiento
simplificado y un consumo menor de energía comparado con los procesadores Intel o AMD.

Si bien los procesadores ARM crearon sus bases en los años 80, no fueron aprovechados hasta la
llegada de los dispositivos móviles ya que estos dispositivos sacaban provecho de la eficiencia
energética a pesar de tener menor potencia de procesamiento.

Para poder hablar más a fondo de los procesadores basados en la arquitectura ARM es necesario
estudiar su set de instrucciones, y para poder hacerlo es indispensable repasar los conocimientos
relacionados con el lenguaje ensamblador y el diseño lógico. Por ello fueron propuestos los libros
de DIGITAL DESIGN AND COMPUTER A RCHITECTURE. ARM EDITION, SARAH L. HARRIS, DAVID MONEY
HARRIS, MORGAN KAUFMANN (ELSEVIER ) 2016 y P RINCIPLES OF COMPUTER A RCHITECTURE, MURDOCCA
M. J. ED. PRENTICE HALL, 2000.

Como último punto de esta sesión se habló de diseñar un procesador ARM al seleccionar un
conjunto básico de instrucciones, es decir, haciendo uso de estructuras como el Pipeline y el
paralelismo de instrucciones. Sin embargo, al no tener acceso al hardware necesario para llevar a
cabo la parte práctica, la mayoría de las temáticas del curso serían meramente teóricas.

2a Sesión: Historia de la computación.

Esta sesión estuvo enfocada a conocer la definición de Arquitectura de Computadoras y la historia


de la computadora así como su evolución hacia maquinas cada vez más complejas y con mayor
capacidad para procesar instrucciones aritméticas.

Aprendimos sobre el modelo Von Neumann, en el cual se basa la arquitectura de la mayoría de las
computadoras actuales. El modelo Von Neumann consta de 5 componentes principales y las rutas
de control y de datos que las conectan.
1
RISC: Del inglés “Reduced Instruction Set Computer”
Fig. 1. Componentes De La Arquitectura Von Neumann

En el modelo de interconexión de bus la computadora está constituida por tres subconjuntos:


CPU, Memoria y Entradas y Salidas. Cabe señalar que la CPU a su vez está formada por una ALU 2 y
una Unidad de Control. La comunicación se realiza mediante un camino compartido, llamado “bus
del sistema”.

El bus del Sistema en realidad está constituido por tres buses: El bus de datos, el bus de
direcciones y el bus de control. Existe también de manera implícita un “bus de alimentación”.
Algunas arquitecturas tienen también un bus de Entradas y Salidas.

Fig. 2. Modelo de interconexión de bus

En esta sesión también se habló de los niveles de maquina o niveles de abstracción, los cuales van
desde el nivel usuario, el nivel de abstracción más alto, hasta el nivel de transistores, el nivel más
bajo. En este aspecto, el arquitecto de computadoras debe conocer las implicaciones del diseño de
computadoras en todos estos niveles, de manera que comprenda también las restricciones que
enfrenta.

La compatibilidad de código fuente, es la propiedad que consiste en que un programa debe ser
compatible con distintos tipos de máquina y para lograrlo el programa en cuestión debe estar
escrito en un lenguaje de alto nivel. La compatibilidad binaria, por otro lado se refiere a que el
código binario de un programa funciona correctamente sin modificaciones en otra máquina, para
lograr esto último se crearon las familias de procesadores, las cuales respetan las instrucciones de
modelos más viejos de manera que funcionen en procesadores más recientes.

2
ALU: Del inglés “Arithmetic Logic Unit”
3a sesión: Representación de Datos en la Computadora

En esta sesión se abordaron algunos de los tipos de datos utilizados para la representación de
números en una computadora. En particular se habló de los números con punto fijo ya que hay
aspectos importantes a considerar al momento de representar estos números en la computadora,
pues deben ser traducidos a código binario, lo cual aunque no resulta difícil, tampoco es trivial.

El sistema binario como sabemos solo utiliza los valores ‘0’ y ‘1’ y cada bit tiene un peso, es decir
cada dígito representado vale de acuerdo a su posición dentro del número representado. El peso
de los bits se mide de mayor a menor de derecha a izquierda creando los conceptos de MSB y LSB.

Números en punto fijo sin signo:


Estos números se componen de una parte entera, y un punto decimal para separar su
parte fraccionaria. Están caracterizados por un rango y una precisión, la cual a su vez tiene
un parámetro destinado al error en la representación.

El rango se refiere a los valores máximo y mínimo que se puede representar y a los
números comprendidos dentro de ese intervalo. Cualquier número fuera de este rango no
puede ser representado. Si se intenta ocurre lo que llamamos overflow 3

La precisión se refiere al intervalo mínimo que debe existir entre dos números. Es decir,
cualquier número intermedio no puede ser representado.

El error es definido bajo la fórmula: precisión/2 por aquello de la conversión a código


binario, pues al realizar operaciones en ocasiones el número resultante no puede ser
representado y debe ser redondeado al número más próximo que si tenga una
representación exacta.

Números en punto fijo con signo:


Esta representación contempla la utilización de un bit para representar el signo del
número representado. El bit de signo es el bit de mayor peso, es decir el MSB, que puede
ser ‘0’ para indicar un número positivo o ‘1’ para un número negativo. Esta forma de
representar números positivos y negativos es llamada Signo-Magnitud. Existen también
otras maneras de representar números con signo, tales como:

 Signo Complemento a Unos: Se intercambian los ‘0’ por ‘1’ y viceversa


 Signo Complemento a Dos: Teniendo una representación en Complemento a Unos
sumamos un ‘1’.
 Representación a exceso. Utilizado para representar números con exponente.

3
Error que se produce cuando un programa no controla adecuadamente la cantidad de datos que se copian
sobre un área de memoria reservada para ello.
4a sesión: Números en punto flotante.

Durante esta sesión se abordó la representación de números en punto flotante. Los cuales son
números con una parte fraccionaria extensa. Se hizo hincapié en que para su representación en
código binario es necesario utilizar el estándar IEEE-754 el cual fue propuesto en 1985 para
resolver problemas de representación en las diversas implementaciones existentes del punto
flotante hasta ese momento.

Al utilizar números en punto flotante se sacrifica precisión a cambio de un mayor rango en la


representación de números. Para ello se emplea la notación científica. El estándar de la IEEE-754
contempla entre otras cosas la asignación de un bit de signo y entre 8 y 11 bits para el exponente,
así como entre 23 y 52 bits para la parte fraccionaria según sea el caso pues existen
representaciones tanto de 32 (single precisión) como de 64 bits (double precision), esta última
permite un rango mucho más amplio, determinado por los bits del exponente. La precisión
también es mejor en la doble precisión, que está determinada por los bits de la parte fraccionaria.

Fig. 3 Estructura del punto flotante de 32 y de 64 bits

Es importante señalar que la precisión no es la misma para todo el rango de números


representables. La precisión es más baja cuanto mayor es el número representando y viceversa.

Cuando las operaciones de punto flotante implican un redondeo se emplean formatos extendidos
para evitar que la perdida de precisión sea muy grande, pues uno de los objetivos de utilizar esta
representación es que los valores numéricos representados sean más precisos.

Casos especiales contemplados en el estándar IEEE-754

Es importante señalar que la norma IEEE-754 contempla ciertos casos especiales para la
“representación” de ciertos valores:

 Si el valor del exponente se encuentra lleno con ‘1’s y la parte fraccionaria se llena con ‘0’s
la computadora interpretará este valor como +inf o –inf según el signo.
 Si el exponente se encuentra lleno con ‘1’s pero al menos un bit de la parte fraccionaria es
diferente de ‘0’ la computadora interpretará el valor como NaN4
 Si el valor del exponente se compone de ‘0’s y la parte fraccionaria también está
compuesta solo por ‘0’s el valor se interpreta como 0
 Si el exponente es de ‘0’s y al menos un bit de la parte fraccionaria es diferente de ‘0’ se
tiene un “número denormalizado”

5a sesión: Diseño Lógico Combinacional.

Se abordaron los conceptos de diseño de hardware, y de circuitos digitales, los cuales resultan
necesarios previo a realizar el análisis de la arquitectura de un procesador ARM.

En el diseño de circuitos digitales o circuitos lógicos existen dos principales categorías: Los
combinacionales y los secuenciales, a los cuales también llamamos “síncronos”. Durante esta
sesión se abordaron los conceptos que giran en torno al primer grupo

Los circuitos combinacionales tienen la particularidad de que sus salidas dependen exclusivamente
de las funciones de entrada dadas, por lo cual se puede analizar su comportamiento tan solo con
los valores presentes en su tabla de verdad.

El diseño de estos circuitos se puede realizar de manera modular, por ello su practicidad, para ello
se emplean expresiones funcionales que junto con el álgebra Booleana permite obtener
expresiones simplificadas para que la complejidad del circuito se mantenga en un nivel bajo, claro
que es esta misma simplicidad la que nos permite ir desarrollando módulos de una complejidad
mayor utilizando módulos más pequeños, como si se tratase de piezas de lego.

Algebra Booleana

Es una estructura algebraica empleada para esquematizar y simplificar las operaciones lógicas
presentes en un circuito. Tal como ocurre en el “algebra tradicional” existen axiomas y leyes que
se utilizan para realizar las reducciones lógicas. Entre los axiomas tenemos a la ley asociativa, la ley
conmutativa, la ley distributiva y la existencia de un neutro, todas ellas tanto para la suma como
para el producto.

En lo que respecta a los teoremas fundamentales tenemos a la ley de idempotencia, la de


absorción y la de identidad, cada una de ellas tanto para la suma como para el producto. Y desde
4
NaN: Del inglés “Not a Number” utilizado en computación para indicar que un valor almacenado no es
numérico
luego tenemos las Leyes de De Morgan que son importantísimas para realizar reducciones de
circuitos lógicos.

Fig. 4 Tabla de axiomas y Teoremas del algebra Booleana

6a sesión: Diseño de Circuitos Combinacionales


Antes de comenzar con el diseño de circuitos es vital hablar de los mapas de Karnaugh. Los mapas
o tablas de Karnaugh son diagramas utilizados para realizar la simplificación de funciones basadas
en algebra booleana. Consisten en una representación bidimensional de la tabla de verdad de la
función a simplificar. Las variables son ordenadas en función de su peso siguiendo el código Gray5

Fig. 5. Ejemplo de un mapa de Karnaugh de 4 bits

Utilizamos estos mapas para eliminar los agrupamientos no esenciales. Un agrupamiento se


considera no esencial si al eliminarlo los ‘1’s o ‘0’s de este grupo quedan cubiertos por un
agrupamiento más grande. Al eliminar los agrupamientos no esenciales eliminamos redundancias
en las funciones.

En muchos circuitos lógicos existen condiciones de entrada que en realidad no especifican una
salida concreta, ya sea porque estos casos con frecuencia no se presentan o simplemente la salida
que producen es irrelevante. A estos casos se les llama “Condiciones de No importa”. En los
mapas de Karnaugh se representan con una X en lugar de ‘0’s o ‘1’s, esto quiere decir que el valor
de ese bit puede tomar cualquier de los dos valores posibles sin afectar la función y su salida.

Está matemáticamente comprobado que cualquier circuito lógico puede ser descrito utilizando
solo cierto tipo de compuertas: Las compuertas NAND o las compuertas NOR. Y aunque esto
incrementa un tanto la complejidad del circuito, resulta bastante eficiente en términos
energéticos. Esto es posible gracias a las compuertas AND y OR y los inversores lógicos, además de
las leyes de De Morgan que nos permiten realizar las reducciones necesarias.

5
Es un sistema de numeración binario en el que dos números consecutivos difieren solamente en uno de sus
dígitos.
Fig. 6 Operaciones lógicas implementadas con compuertas NAND

7a sesión: Diseño Combinacional. Muxes

Un Mux o Multiplexor es un circuito Combinacional que cuenta con varios canales de entrada de
datos y una salida única, normalmente están representados con una figura de trapecio. Se utilizan
para seleccionar ciertas entradas en particular y generar una salida correspondiente a dichas
entradas, para ello se utilizan las llamadas “señales de control”.

Existen distintos tipos de multiplexores según el número de entradas que posean. Existen por
ejemplo multiplexores de 2, de 4, 8 y 16 entradas. La cantidad de líneas de control de cada uno de
ellos depende directamente del número de canales de entrada que posea. La relación es la
siguiente:

Número de entradas = 2n
Donde n es el número de líneas de control

Así por ejemplo si la cantidad de entradas fuese de 8, el número de líneas de control necesarias
sería para este mux sería 3. Es decir. 8 = 2 n, n = 3

Fig. 7 Multiplexor de 4 entradas y su tabla de verdad.


Los muxes son utilizados para controlar el flujo de información. En ese sentido es el equivalente a
un conmutador. El multiplexor es una aplicación particular de los decodificadores, de modo que
existe una entrada de habilitación por cada puerta AND y un OR entre todas las salidas de las
puertas AND. Para las líneas de control aunque reciben un único bit por línea, internamente se
tiene una señal que deja pasar el valor tal como se recibe, y una segunda señal con una negación
para enviar el valor contrario al recibido según se requiera.

Fig. 8 Estructura interna del Multiplexor 4x1

8a sesión: Diseño de circuitos secuenciales síncronos

Un circuito secuencial síncrono utiliza señales que afectan a los elementos de almacenamiento en
intervalos de tiempo discretos. Para ello se emplea un generador de reloj, el cual genera pulsos
con un periodo constante. Estos pulsos de reloj se distribuyen por el sistema de manera que los
elementos solo se vean afectados al llegar un pulso concreto.

Los circuitos secuenciales síncronos que utilizan pulsos de reloj en sus entradas se denominan
circuitos secuenciales con reloj y son los más utilizados debido a su alta estabilidad y a que son
fáciles de dividir en pasos discretos independientes.

En un circuito combinacional síncrono parte de sus salidas pueden ser retomadas como entradas
de manera que se formen trayectorias cíclicas. Esta operación resulta útil para generar elementos
de memoria que “recuerden” secuencias de entrada y los estados que atraviesa, sin embargo es
necesario diseñar estos circuitos cuidadosamente pues de lo contrario se volverán inestables.
Fig. 9 Estructura básica de un circuito secuencial.

Un circuito secuencial síncrono consta de memoria almacenada en su salida en “estados”


determinados por cada pulso del reloj. De esta manera el estado actual en cada pulso junto con
los valores de las entradas asíncronas generan las salidas para el siguiente estado, el cual será la
memoria en el pulso del reloj corriente.

Flip Flops
Los Flip flops o latches son un circuito electrónico con dos estados estables que pueden ser
utilizados para almacenar datos binarios. Estos circuitos pueden ser utilizados para cambiar el
estado de un circuito al aplicar una señal concreta a una entrada de control. Son los elementos
básicos de almacenamiento en la lógica secuencial.

Fig. 10 Diagrama de un flip flop con inversores

Flip flop RS: Es un flip flop que en lugar de utilizar inversores utiliza compuertas “universales”
NAND con las cuales se puede manipular el estado del latch.

Fig. 11 Flip flop SR

Flip flop D: Consiste en una mejora del latch tipo SR, para ello se agrega una entrada de disparo
especial la cual tiene como finalidad eliminar una entrada o condición no deseada.

Fig. 12 Flip flop D


9a sesión: Primera evaluación parcial

Esta sesión del curso se utilizó exclusivamente para realizar la primera evaluación del curso.
Consisten en las temáticas de las 8 sesiones del curso.

10a sesión: Diseño secuencial síncrono (segunda parte)

Siguiendo con los circuitos secuenciales analizamos con más detalle el Flip flop tipo D. El cual como
se había mencionado cuenta con una entrada síncrona de datos comúnmente llamada entrada D.
Por otro lado la entrada del reloj denominada como CLK es asíncrona. Esta señal de reloj debe
tener un tiempo de activación bastante corto para poder disparar el flip flop. Los flip flop tipo D
suelen contar con una “indicador dinámico” el cual nos ayuda a diferenciar si el flip flop se activa
con ‘0’ o con ‘1’.

Fig. 12 Flip flop D con indicador dinámico

En el diagrama anterior podemos notar que la salida Q almacena un bit de información y no hay
intermediarios en esta señal. A esta señal se le llama “salida registrada” y no cambia hasta el
siguiente ciclo del reloj. Para generar la señal Q’ con frecuencia se debe utilizar un inversor y se
utiliza para retroalimentar la entrada del Flip flop. Así pues, un flip flop D copia la entrada D a la
salida Q en el momento de la subida del pulso del reloj y guarda su estado en los ciclos siguientes.

Normalmente también se integra una señal de “Reset” la cual al activarse pone el valor del flip flop
en cero. Esta señal es síncrona y tiene prioridad pro sobre las demás señales de este tipo.
Máquina de Moore
Una máquina de Moore es un autómata de estados finitos cuya salida depende exclusivamente de
su estado en el momento actual, y el estado siguiente se obtiene en función de su estado actual y
la entrada introducida para el siguiente pulso de reloj. Cuenta con una única salida.

Fig. 13 Maquina de Moore

El proceso interno de una máquina de Moore se describe en el siguiente diagrama. Como


podemos notar que la salida solo depende del estado actual y el estado siguiente se encuentra en
función de su estado actual y la entrada de datos.

Fig. 14 Funcionamiento de una máquina de Moore

Máquina de Mealy
Es un tipo de máquina de estados finitos que genera una salida basándose en su estado actual y
una entrada, en ese aspecto es similar a una máquina de Moore, salvo que la máquina de Mealy
siempre toma en cuenta el valor de la entrada, incluso para su estado inicial.

Fig. 15 Diagrama de estados de una máquina de Mealy


En el diagrama anterior podemos observar que las flechas representan una señal de disparo y
tienen su origen en el estado presente y terminan en el que será su estado siguiente. Note que
para algunos estados tenemos más de una flecha que conduce a estados diferentes. Esto implica
que para determinar el estado siguiente debemos tomar en cuenta el valor de la entrada.

11a sesión: Diseño Lógico Secuencial. FSM2

En esta sesión se profundizó en el diseño de FSM 6 discretas y se diseñó uno en particular que fuera
capaz de detectar el primer bit ‘0’ que ocurriera al transmitir cadenas de ‘1’s. El desarrollo de este
diseño se enuncia a continuación:

1. Se obtiene el diagrama de estados de manera que cumpla con las especificaciones. Cabe
señalar que esta es la parte del diseño que ocupa más tiempo pues se debe diseñar la
estructura del FSM y las reglas que deben de seguir para alcanzar el objetivo deseado.

Fig. 16 FSM diseñado para detectar el primer ‘0’ en una cadena de ‘1’s

2. Una vez que tenemos el diagrama procedemos a analizar el tipo de FSM que necesitamos
para implementarlo. En este caso se trata de una máquina de Mealy pues como se dijo en
la sesión anterior las salidas siempre dependen del estado presente y de una entrada
dada. Note que nuestra FSM es de 4 estados.
3. Ahora procedemos a dimensionar el diagrama de manera que conozcamos concretamente
el número de entradas y salidas, así como su transición entre todos sus estados. Para
nuestro diseño tenemos:
a. Una entrada
b. Una única salida
c. Cuatro estados diferentes, los cuales pueden abarcarse con dos señales, esto
debido a que cada señal puede tomar dos valores ‘0’ o ‘1’ y con ello generamos las
cuatro combinaciones necesarias.
6
FSM: Del inglés “finite state machine”
4. Diseñamos el circuito utilizando flip flops para el almacenamiento de información y la
retroalimentación de la FSM

Fig. 17 Diseño del circuito propuesto

5. Creamos la información obtenida en el diagrama de la FSM a sus correspondientes tablas


de verdad para obtener los valores binarios de los cuatro estados.

Fig. 18 Tablas de verdad del circuito

6. Obtenemos las ecuaciones de estado siguiente del circuito, de manera que:

A(t+1) = Da = A(t)x = Ax + Bx
B(t+1) = Db = A’(t)x = A’x
Donde (t+a) es el estado siguiente y (t) indica el estado actual.

La salida está determinada por:

y = (A(t) + B(t))x’ = (A + B)x’

7. Como último paso diagramamos el circuito lógico con sus compuertas y los flip flops tipo D
necesarios para su funcionamiento como máquina de Mealy

También podría gustarte