Sie sind auf Seite 1von 37

Tercera Entrega

PRESENTA:
INGRID KATHERINE BOHORQUEZ FORERO Código: 1711025620
CRISTIAN FABIAN GUERRA LOZANO Código: 1821981891
JEISSON ALONSO GOMEZ HERRERA Código: 1621023231
WILSON LANCHEROS GUTIERREZ Código: 1621024374

MATERIA ARQUITECTURA DEL COMPUTADOR

INSTITUCIÓN UNIVERSITARIA POLITECNICO GRANCOLOMBIANO


FACULTAD DE INGENIERIA
INGENIERIA DE SOFTWARE
MAYO
2020
Contenido
1. INTRODUCCION..........................................................................................................................3
2. Marco Teórico............................................................................................................................3
2.1. ISA Arquitectura de Conjunto de Instrucciones..................................................................3
2.2. MicroArquitectura..............................................................................................................6
2.3. Logisim...............................................................................................................................7
3. Problema Estudio.......................................................................................................................8
4. Algoritmo Solución.....................................................................................................................8
4.1. Algoritmo Calculo de Números Primos...............................................................................9
4.2. Tipos de Instrucción lenguaje alto nivel...........................................................................11
5. Entrega 2 Conjunto de Instrucciones........................................................................................12
5.1. Listado de Instrucciones...................................................................................................12
5.2. Definición cantidad de registros.......................................................................................13
5.3. Descripción de los modos de direccionamiento...............................................................14
5.4. Traducción del programa de alto nivel al leguaje ensamblador.......................................14
5.5. Listado en HEXA del Binario..............................................................................................17
6. Entrega 3 Diseño de la microarquitectura................................................................................18
6.1. ALU en Logisim.................................................................................................................18
6.2. Banco de registros............................................................................................................22
6.3. Unidad de Control............................................................................................................24
6.4. Procesador MIPS..............................................................................................................26
7. Resultados Obtenidos..............................................................................................................27
8. Conclusiones............................................................................................................................33
9. Bibliografía...............................................................................................................................35

INGENIERIA DE SOFTWARE
2
1. INTRODUCCION

Con el paso de los días el uso de la computadora gana terreno en todas las actividades humanas,
esto debido a su alta capacidad de procesamiento y la reducción de actividades que anteriormente
se hacían muy dispendiosas. La capacidad de un equipo de cómputo a la hora de realizar cálculos,
procesar datos, simular procesos y eventos naturales o artificiales, las hacen maquinas limitadas
únicamente por la capacidad de diseñarlas y programarlas eficientemente.

Actualmente estas máquinas están presentes en todas las actividades del día a día, mejorando los
tiempos y la cantidad de datos de procesamiento, pero existen procesos que demandan una
velocidad y capacidad de datos mucho mayor por mencionar algunas como actividades educativas,
industriales, militares y económicas requieren el almacenamiento y procesamiento de una alta
cantidad de datos y obtener resultados en lapsos de tiempo muy cortos, existen procesos como
predicción meteorológica, inteligencia artificial, simulaciones para fluidos, sistemas expertos
ingeniería genética entre muchos más campos para los cuales los computadores convencionales
no poseen las capacidades para afrontar la labor.

En este caso se busca que con la construcción de mejores equipos se obtengan resultados más
fiables y agiles que permitan mejorar en estos procesos, aquí es donde el concepto de
arquitectura del computador cobra gran importancia pues se debe entender como la integración
de su estructura física con su estructura lógica, con el objetivo de mejorar el rendimiento en razón
a unas variables específicas que deben ser satisfechas.

Esto quiere decir que se deben complementar los componentes físicos del equipo, con las ciencias
exactas de la programación para ofrecer una funcionalidad practica de acuerdo con el uso ofrecido
del equipo.

Asi las cosas, es importante aprender a complementar el nivel físico con el nivel lógico de un
equipo para adecuarlos a las necesidades del usuario, en este proyecto se presentará como se
desarrolla desde lo más básico la programación de un microprocesador teniendo en cuenta su
funcionalidad definida anteriormente por medio de un simulador de su comportamiento.

2. Marco Teórico

2.1. ISA Arquitectura de Conjunto de Instrucciones

El conjunto de instrucciones de un procesador o computadora, hacer referencia a todas las


instrucciones que el procesador reconoce y, por lo tanto, se pueden ejecutar.

INGENIERIA DE SOFTWARE
3
Abarca todos los aspectos relacionados al diseño del conjunto de instrucciones, tales como
registros a usar, tamaño de memoria a usar, tipo de direccionamiento de memoria, número
máximo de operandos, forma en que los datos e instrucciones son almacenados en memoria.
Distintos procesadores tienen distintos tipos de instrucciones.

Los conjuntos de instrucciones se caracterizan por los siguientes puntos:

o Número de bits por instrucción, independientemente de que el número de bits del


formato de instrucciones puede variar de un procesador a otro, existen casos en los
que el número de bits de las instrucciones varía dentro de un mismo procesador,
dependiendo del tipo de instrucción.

o Conjunto basado en stack o los registros en los que se puede acceder.

o número de operandos explícitos por instrucción.

o localización del operando.

o Los tipos de operaciones que se pueden hacer.

o El tipo y tamaño de operandos.

o En cualquier conjunto de instrucciones, no todas las instrucciones requieren el mismo


número de operandos.

o las operaciones que no requieren operando, tales como HALT (alto), implican un
desperdicio de espacio de memoria cuando se tienen instrucciones de longitud fija.
Una manera de recuperar este espacio desperdiciado es mediante el uso de opcodes
expandibles (porción de una instrucción de lenguaje de máquina que especifica la
operación a ser realizada).

Las arquitecturas de los conjuntos de instrucciones se miden con base en:

o Espacio de memoria principal ocupado por el programa.

o Complejidad de las instrucciones.

o La longitud de las instrucciones que se miden en bits claramente.

o Número de instrucciones en el conjunto de instrucciones.

INGENIERIA DE SOFTWARE
4
En el diseño de un conjunto de instrucciones se considera los siguientes puntos:

o La longitud de la instrucción, si es corto, largo o variable.


o Número de operandos.

o Número de registros direccionales ( que pueden ser especificados ).

o Modos de direccionamiento: directo, indirecto, indexado o bien, todos.

o El orden de los bytes que representan un dato o instrucción.

o La manera en la que el procesador almacena los datos u operandos durante la


ejecución de instrucciones: Arquitectura Stack, Acumulador o la arquitectura de
registros de propósito general. La selección entre las arquitecturas de
almacenamiento de operandos anteriores es optar entre simplicidad y costo del
diseño de hardware o velocidad de ejecución y facilidad de uso.

Cuando se hace referencia a los Endianness son las maneras de guardar datos o instrucciones en
memoria. Hay dos tipos de maneras:

o Big Endian: La información se almacena del byte más alto o sea el más significativo, al
más bajo en direcciones crecientes de memoria.

o Little Endian: La información se almacena del byte más bajo o sea el menos
significativo, al más alto en direcciones crecientes de memoria.

Cuando se habla del acceso a objetos como lo son datos, instrucciones y direcciones que tienen
una longitud mayor a un byte, estos tienen que ser alineados. El acceso a un objeto de  s Bytes en
la dirección A está alineado si A mod s = 0 ( esta operación proporciona como resultado el residuo
que resulta de dividir el número entero a entre el número entero b).

INGENIERIA DE SOFTWARE
5
El desalineamiento por su parte causa algunas complicaciones al hardware, ya que la memoria
está típicamente alineada en límites o fronteras que son múltiplos de una palabra o palabra doble.
El acceso a un objeto alineado puede completarse en un solo ciclo de acceso a memoria llamado
FETCH, siempre y cuando el bus de datos/instrucciones, los registros del procesador sean lo
suficientemente amplios para almacenar el objeto. El acceso a un objeto desalineado puede
resultar en varios ciclos de acceso a memoria, lo cual implica un desperdicio de tiempo.

Tipos de instrucciones:

Las instrucciones pueden ser clasificadas en un amplio número de categorías, particularmente en


los procesadores actuales en las que se tienen instrucciones de multimedia, comunicaciones, y un
mayor conjunto de operaciones matemáticas y otras de uso especial. Las categorías más comunes
son:

o movilidad de datos.
o Aritméticas.
o Booleanas.
o Manipulación de bits.
o I/O
o Transferencia de control.
o Multimedia.
o comunicaciones.
o Matemáticas especializadas.
o propósito especial.

Los términos describen los aspectos del procesador generalmente visibles a un programador,
incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y
las interrupciones, entre otros aspectos; es muy difícil aprender este tipo de arquitectura ya que al
final de cuentas existen lenguajes un poco más altos de nivel para una mejor realización del
trabajo, eso no quiere decir que aprender esta arquitectura es malo, por el contrario al final es lo
más eficaz que podría quedar un programa hecho con esta arquitectura.

2.2. Microarquitectura

Una microarquitectura es una descripción del circuito eléctrico de una computadora, de la unidad
central de proceso o del procesador digital de señal, que es suficiente para describir
completamente el funcionamiento del hardware.

En ámbitos académicos, suele emplearse el término "organización de la computadora", mientras


que en la industria de la computación suele utilizarse el término microarquitectura. Ambas
palabras son sinónimos.

INGENIERIA DE SOFTWARE
6
La microarquitectura y la arquitectura de conjunto de instrucciones constituyen la arquitectura de
computadora.

Microarquitectura vs. arquitectura de conjunto de instrucciones

La microarquitectura debe distinguirse de la arquitectura de conjunto de instrucciones. Esta última


es una imagen abstracta de un sistema de computación como sería visto por un programador en
lenguaje máquina, e incluye el conjunto de instrucciones, modos de dirección de memoria,
registros del procesador, y formatos de direcciones y datos.

La microarquitectura, en cambio, es de nivel más inferior, más concreto. Muestra las partes
constituyentes del sistema y cómo se interconectan e interoperan, para así implementar la
especificación de arquitectura.

Diferentes máquinas podrían tener una misma arquitectura de conjunto de instrucciones, y así ser
capaces de ejecutar los mismos programas, sin embargo, pueden tener diferentes
microarquitecturas.

Estas diferentes microarquitecturas (junto con los avances en las tecnologías de fabricación de
semiconductores) son las que permiten nuevas generaciones de procesadores que permiten
alcanzar mejores niveles de performance comparadas con las generaciones previas. En teoría, una
única microarquitectura (especialmente si ésta incluye microcódigo) podría ser usada para
implementar dos conjuntos de instrucciones diferentes, por la programación de dos almacenes de
control diferentes (el almacén de control almacena el microprograma del CPU).

Representación de una microarquitectura

La microarquitectura de una máquina generalmente es representada empleando un diagrama de


bloques que describe las interconexiones entre registros, buses y bloques funcionales de la
máquina. Esta descripción incluye el número de unidades de ejecución, el tipo de las unidades de
ejecución (como punto flotante, entero, SIMD, etc.), la naturaleza del pipelining, el diseño de la
memoria caché y el soporte de periféricos.

El esquema físico del circuito, las construcciones de hardware y otros detalles físicos son llamados
implementación de esa microarquitectura. Dos máquinas pueden tener la misma
microarquitectura, y por lo tanto el mismo diagrama de bloques, pero diferentes
implementaciones de hardware.

2.3. Logisim

El Logisim es un simulador lógico que proporciona al usuario un interfaz gráfico diseñado


especialmente para uso educativo.

INGENIERIA DE SOFTWARE
7
Sus características más importantes son:

o Diseño y simulación de circuitos digitales.


o Software de uso libre (licencia pública GNU)
o Sistemas operativos Windows, Mac y Linux.

3. Problema Estudio

Para esta entrega el objetivo de la entrega es diseñar un algoritmo, en pseudocódigo o un lenguaje


de programación en alto nivel, que dé solución al problema: “Determinar si un número es primo o
no”. Adicionalmente, se debe especificar qué tipos de instrucciones que pueden ser requeridas
para la solución del problema, de acuerdo con el algoritmo diseñado.

A continuación, se presentará un algoritmo que da solución al problema planteado

4. Algoritmo Solución

INGENIERIA DE SOFTWARE
8
4.1. Algoritmo Calculo de Nú meros Primos

Se generaron dentro del grupo dos algoritmos para el cálculo de nú meros primos, ambos
quisimos mostrarlos dentro del trabajo categorizando en ambos las instrucciones:

INGENIERIA DE SOFTWARE
9
ALGORITMO 1

Corresponde al siguiente Diagrama Solució n:

ALGORITMO 2

INGENIERIA DE SOFTWARE
10
Corresponde al siguiente Diagrama Solución:

INGENIERIA DE SOFTWARE
11
4.2. Tipos de Instrucció n lenguaje alto nivel

ALGORITMO 1

Instrucción: numero = entradaNum.nextInt();


Tipo de Instrucción: Aritmeticas – Inmediatas, los datos a operar son constantes y
el valor se incluye en la misma instrucción.

Instrucción: if (numero > 2)


Tipo de Instrucción: Condicionales Permiten ir a una línea de código de acuerdo con
una condición

Instrucción: if((numero % 2) == 0)
Tipo de Instrucción: Condicionales Permiten ir a una línea de código de acuerdo con
una condición

Instrucción: else
Tipo de Instrucción: Condicionales Permiten ir a una línea de código de acuerdo con
una condición

INGENIERIA DE SOFTWARE
12
Instrucción: else if (numero == 2)
Tipo de Instrucción: Condicionales Permiten ir a una línea de código de acuerdo con
una condición

ALGORITMO 2

Instrucción: int num = scanner.nextInt();


Tipo de Instrucción: Aritmeticas – Inmediatas, los datos a operar son constantes y
el valor se incluye en la misma instrucción.

Instrucción: int num2 = num-1;


Tipo de Instrucción: Aritmeticas – Inmediatas, los datos a operar son constantes y
el valor se incluye en la misma instrucción.

Instrucción: while((num%num2)!=0)
Tipo de Instrucción: Condicionales Permiten ir a una línea de código de acuerdo con
una condición

Instrucción: num2--;
Tipo de Instrucción: Aritmeticas – Inmediatas, los datos a operar son constantes y
el valor se incluye en la misma instrucción

Instrucción: if(num2 == 1)
Tipo de Instrucción: Condicionales Permiten ir a una línea de código de acuerdo con
una condición

Instrucción: else
Tipo de Instrucción: Condicionales Permiten ir a una línea de código de acuerdo con
una condición

5. Entrega 2 Conjunto de Instrucciones

5.1. Listado de Instrucciones

En este punto se pretende hacer una definició n detallada del listado de instrucciones,
haciendo relació n de Nombre, mnemó nico, pará metros que recibe, de acuerdo con lo
solicitado en la descripció n para la segunda entrega del proyecto de clase.

Instrucción Descripción Ejemplo


.ORG0 Posición de programa en la directiva
.data Dirección donde empiezo a colocar mis datos .data 2000H la dirección donde se
empiezan a poner los datos es
H2000

INGENIERIA DE SOFTWARE
13
Db Directiva asociada a datos dB1,2,5 coloca los datos 1,2,5 en
forma secuencial en una tabla
MOV R1, R2 El contenido del registro R2 es transferido al MOV B,C se almacena C en el
registro R1, funciona para registros B,C,D,E,H,L registro B
y acumulador.
MVI R1,R2 Carga un registro con un dato inmediato MVI H, 33H carga en el registro H el
valor 33H
CMP Reg Compara el registro o memoria con el CMP B si el acumulador contiene
acumulador 0AH y el registro B contiene 06H,
compara B con el acumulador
efectuando una resta interna.
CPI dato Compara el contenido del acumulador con un CPI 20H
dato inmediato Se compara con el acumulador a
través de la suma complemento a
dos
STAX reg Almacena el contenido del acumulador STAX B almacena el contenido del
acumulador en la posición del
registro B
LDAX reg Cargar en el acumulador LDAX D cargara en el acumulador
en el contenido de la posición de
memoria D
INR reg Incrementar registro o memoria INR A se incrementa el valor en
uno entonces si el registro contiene
98H quedara en 99H
ADD Sumar registro o memoria en el acumulador ADD B se suma el valor del registro
B con el contenido del acumulador
SUB reg Restar registro o memoria en el acumulador SUB E se resta el valor del registro
E al contenido del acumulador
SBI dato Restar del acumulador un dato inmediato SBI 01H se resta el valor 01H del
contenido del acumulador
ANI dato Función lógica AND entre el acumulador y un ANI 0HF se realiza la comparación
dato inmediato AND bit a bit entre el acumulador y
el dato inmediato 0FH
NOP No realiza ninguna operación
JMP dir Altera la ejecución del programa y carga el
valor de dir en el contador del programa
JPE dir Salta si la paridad es par JPE 0FH el digito de paridad se
pone en 1 si la condición es valida
CALL dir Llamada incondicional Guarda el contenido del contador
del programa y salta a la dirección
especifica por dir
CPE dir Llamar si la paridad es par
RET Retorno incondicional Echa dos bytes fuera del stack y los
mete en el registro contador del
programa
RPE Retorno si la paridad es par

INGENIERIA DE SOFTWARE
14
IN port Entrada lee los 8 bits de datos del port y los
carga en el acumulador IN 2 deposita en el acumulador los
datos del puerto 2
PUSH pr Coloca los datos en el stack PUSH B almacenara el contenido
de B en el stack y decrementa dos
unidades el puntero

5.2. Definició n cantidad de registros

Los registros que se utilizaran durante el desarrollo del programa está n listados a
continuació n:

Variable Dirección de Descripción


memoria
zero $0 Registro permanente en cero.
s0-s3 $16 - $19 Almacenamiento de valores
t0-t3 $8 - $11 Variables temporales para los cálculos
v0-v1 $2 - $3 Valores retornados en subrutinas calcular y seguimos
Lim 34 El valor hasta donde van a llegar las divisiones
Num 35 Variable que empieza en 1 y termina cuando llega al limite
X 36 Variable que se utiliza para hallar si el número es primo
Rest 37 Almacena la división del número digitado
Y 38 La variable se usa en la función calcula divisores
2 3A Constante número 2
3 3B Constante número 3
0 3C Constante número 0
1 3d Constante número 1
Cada registro tiene un tamaño de 5 bits
Se tienen 59 instrucciones cada una de 4 bits

5.3. Descripció n de los modos de direccionamiento

Los modos de direccionamiento dependen de las instrucciones que se utilizan en el desarrollo


del programa entonces de acuerdo con esto, los modos de direccionamiento son los
siguientes:

Instrucciones Modos de direccionamiento Descripción


MOV, CPI, STAX, INR, Registro indirecto En estas instrucciones se incluye la
SUB dirección de un registro y un
desplazamiento.

INGENIERIA DE SOFTWARE
15
MVI Direccionamiento inmediato
En estas instrucciones uno de los
operandos es un valor constante que
viene en la instrucción.
ADD Registro En estas instrucciones la dirección del
registro al que se desea acceder como
fuente o destino se incluye en la
instrucción.

5.4. Traducció n del programa de alto nivel al leguaje ensamblador

.data
cad: .asciiz "\n Introduzca un nú mero positivo: "
cad2: .asciiz "\n El nú mero ha de ser positivo!"
cad3: .asciiz "\n El nú mero es primo "
cad4:  .asciiz "\n El nú mero no es primo"
.globl main
.text
main:

li $v0, 4
la $a0, cad
syscall #Llamada al sistema para mostrar la respuesta

li $v0, 5
syscall #Llamada al sistema para cargar el numero

move $a3, $v0 #Se guarda el numero ofrecido por teclado en a3


$a1, cad2

li $a2, 1 # se determina como contador


jal calcular
li $v0,10 #finaliza la presentació n y carga de la informació n
syscall

calcular:
bgt $a3, $zero, seguimos # Aquí se comprueba que el nú mero es positivo
li $v0, 4 #En caso contrario se envía la cadena de error de $a1
move $a0, $a1
syscall #El mensaje del nú mero no es positivo
li $v0, -1 #Se envia el -1 que es el có digo de error determinado
jr $ra

INGENIERIA DE SOFTWARE
16
seguimos:
beq $a3, $a2, final
addi $sp,$sp, -4 #se almacena el registro $ra en la pila
sw $ra, ($sp)
jal primo #Ya se encontró que es positivo, se almacena el valor, entonces se llama a la
funció n que determina si es primo

beq $v0, $zero, noprimo #Se verifica si el resultado es 0, entonces no es primo


li $v0,1 #se muestra el numero
la $a0, ($a2)
syscall

noprimo:
addi $a2, $a2, 1
j seguimos

final:
lw $ra, ($sp) #Se saca de la pila $ra
addi $sp, $sp, 4
jr $ra

#Funció n que determina si el nú mero es primo


primo:
bgt $a0, $zero, positivo #Comprobamos que sea positivo

positivo: #Se verifica que el numero sea positivo


addi $sp,$sp, -4 #Se almacena el registro $ra en la pila
sw $ra, ($sp)

jal calcula_divisores #Esta funció n retorna en $v0 el nú mero de divisores del nú mero
almacenado en $a0

lw $ra, ($sp) #Se desapila el registro $ra


addi $sp, $sp, 4
li $t0, 2
beq $v0, $t0, es_primo #Si el nú mero obtiene 2 divisores (1 y él) es primo
li $t0, 1

beq $v0, $t0, es_primo #Si el nú mero obtiene má s de dos divisores


li $v0, 0 #Se retorna 0 porque el nú mero no es primo
jr $ra

es_primo:
li $v0, 1 #Devolvemos uno porque es primo
jr $ra

INGENIERIA DE SOFTWARE
17
calcula_divisores:
li $t1, 0 # se inicia el contador de divisores
li $t2, 1 #El primer nú mero que hace funció n de divisor es el 1

bucle:
bgt $t2, $a0, fin #Se verifica que el valor analizar sea mayor si no se finaliza el bucle
div $a0, $t2 #Dividimos el nú mero entre el posible divisor
mfhi $t3 #Se guarda el numero restante
addi $t2, $t2, 1 #Se continua el proceso con el numero siguiente
bne $t3, $zero, bucle #Como el resto no es 0, no es divisor, se continua
addi $t1, $t1, 1 #Si el resto es 0, es divisor, entonces se suma uno al contador
j bucle #Se continua realizando el bucle

fin:
move $v0, $t1 #Se pasa el nú mero de divisores a $v0
jr $ra

5.5. Listado en HEXA del Binario

24020004
3c011001
34240000
0000000c
24020005
0000000c
00023821
24060001
0c10000b
2402000a
0000000c
0007082a
14200005
24020004
00052021
0000000c

INGENIERIA DE SOFTWARE
18
2402ffff
03e00008
10e60009
23bdfffc
afbf0000
0c10001f
10400003
24020001
20c40000
0000000c
20c60001
08100012
8fbf0000
23bd0004
03e00008
0004082a
14200000
23bdfffc
afbf0000
0c10002e
8fbf0000
23bd0004
24080002
10480004
24080001
10480002
24020000
03e00008
24020001
03e00008
24090000
240a0001
008a082a
14200006
008a001a
00005810
214a0001
1560fffa
21290001
08100030
00091021
03e00008

INGENIERIA DE SOFTWARE
19
6. Entrega 3 Diseño de la microarquitectura

6.1. ALU en Logisim

Se realiza modelo de caja negra para el cálculo de un numero binario, para la ejecució n de las
instrucciones se planteó inicialmente un circuito de caja negra donde se especifican cuantas
entradas tendrá el ALU y cuá l es su salida.

Tabla de Verdad:

INGENIERIA DE SOFTWARE
20
Expresión Booleana:

´ C D́+ Á B́ CD + Á B Ć D+ Á BCD+ A B́ CD+ AB Ć D


S1= AB

Este bloque se desarrolla para realizar operaciones aritméticas y ló gicas sobre nú meros
binarios de 4 bits.

Se inicia con un bloque, pero de acuerdo con las especificaciones del có digo se ubican en
cascada para realizar operaciones sobre nú meros de mayor cantidad de bits.

Prueba (1)

E1=0 E2=0 E3=0 E4=0

Prueba (2)

E1=0 E2=0 E3=0 E4=1

INGENIERIA DE SOFTWARE
21
Prueba (3)

E1=0 E2=0 E3=1 E4=0

Prueba (4)

INGENIERIA DE SOFTWARE
22
E1=1 E2=0 E3=1 E4=1

Este ALU tiene la instrucció n de ALUop, esto quiere decir que lleva al banco de registro (BR) la
operació n que se indico por medio de los bits correspondientes, para este diseñ o la ALU tiene
los siguientes có digos de control para la correspondiente funció n:

ADD (0000)  Suma

SUB (0001)  Resta

AND (0010)  and ló gico bit a bit

OR (0100)  or ló gico bit a bit

Esta instrucció n se realiza entre el registro fuente del banco de registros y registro fuente dos
que para el ejercicio será re.

El formato de la instrucció n es de 16 bits, 3 bits destinado a la OPCODE para el caso (000), 3


bits para rd o registro de destino, 3 bits para rf o registro fuente del banco de registros, 3 bits
para re o registro fuente dos, y por ú ltimo 4 bits para ALUope o la operació n que se debe
realizar, las cuales se presentan anteriormente.

6.2. Banco de registros

Este sistema de registro se construye como un sistema secuencial síncrono para almacenar
varios bits de informació n.

INGENIERIA DE SOFTWARE
23
El formato de la informació n es de tipo en serie, es decir los bits se van a trabajar uno después
de otro, y de igual forma se van a enviar.

Cada registro como el que se presenta trabaja con 8 bits, tipo serie - serie, tanto para
almacenamiento como registros de desplazamiento.

Este banco de registro trabaja con este sistema y su similar bloque en cuatro (04) series de
paralelo para lograr un registro de 32 bits, como se demuestra en el archivo adjunto.

Para copiar su informació n se utilizan dos multiplexores que reciben los 32 bits, pero se
selecciona a través del RS y RT los dos operandos de la operació n, esto en razó n al tipo de
operació n realizada que se identifica segú n el tú nel IRS y IRT que establecen diferentes tipos
de operació n.

La salida se hace con el demultiplexor, que realiza la operació n contraria, recibe el numero de
salida y de acuerdo con el identificador RD se elige porque salida se enviara la informació n.

INGENIERIA DE SOFTWARE
24
Para el desplazamiento de los registros se presentan las opciones de saltar de acuerdo con un
resultado o saltar si es igual comparando un registro y salto a la direcció n especifica BEQ, esta
instrucció n tienes 3 bits OPCODE (100), 3 bits para el fr o registro de comparació n, 3 bits para
rd o registro de comparació n y 7 bits para la direcció n.

Para el salto indirecto Jump, la direcció n debe ser relativa, tiene 16 bits los primeros 3 bits
son para OPCODE (110) y los siguientes 13 bits la direcció n del salto.

Y la instrucció n final BNE que significa si menor, esto quiere decir que si de la comparació n el
resultante es menor se salta al registro especificado. Para esto se requieren dos registros a
comparar y una direcció n a la cual llegar, esto sucede si el primer registro es menor que el
segundo.

Sus 16 bits se dividen de la siguiente manera 3 bits para la OPCODE que en este caso es (101),
3 bits para el registro fuente o rf, 3 bits para el registro destino o rd y 7 bits para el
desplazamiento relativo que son los bits menos significativos.

INGENIERIA DE SOFTWARE
25
6.3. Unidad de Control

Este circuito tiene la funció n de controlar el flujo de datos a través del procesador, por esta
razó n es importante entender las características del mismo para iniciar el diseñ o de su unidad
de control, en este orden de ideas y de acuerdo al có digo ya implementado, el procesador
maneja instrucciones de 16 bits compuestas de dos campos, los primeros bytes contienen el
có digo de operació n o OPCODE y los restantes en diferentes formas uno o dos operadores
inmediatos o una direcció n de operando como se presenta anteriormente.

Así las cosas, si el OPCODE siempre tiene 3 bits el contador del programa dispone de 13 bits.

La instrucció n ADD tienes dos registros y una constante, su funció n es leer rf del banco de
registro tomas la constante extenderla en signo hasta 16 bits y sumarla al registro rf y el
resultado de la operació n llevarlo al registro rd del banco de registro.

INGENIERIA DE SOFTWARE
26
La instrucció n tiene 16 bits el OPCODE tiene 3 bits, el cual es (001), luego vienen 3 registro
que pertenecen al registro fuente o rf, 3 bits má s para el registro destino y luego los 7 bits de
la constante que deben extenderse en signo a 16 para sumar dos cantidades de 16 bits.

La instrucció n store o STR sirve para escribir en un registro determinado del banco de
registro 16 bits previamente obtenidos.

El formato de esta instrucció n tiene 16 bits, 3 bits para OPCODE que para esta instrucció n es
de (011), 3 bits para el registro fuente, 3 bits para el registro destino y el restante es ceros
porque no se utilizan.

INGENIERIA DE SOFTWARE
27
La unidad de control en su funció n aritmético-ló gica tiene dos entradas, la ALUop o señ al de
control y la funció n específica, y una sola salida donde se observa el có digo a realizar, con un
tamañ o de tres (03) bits.

6.4. Procesador MIPS

Es importante iniciar con un repaso del funcionamiento del procesador durante el desarrollo
del có digo implementado, entonces, a grandes rasgos para cada instrucció n se debe enviar el
contenido de PC al banco de registros, cargar las instrucciones y aumentar PC.

Se deben leer uno o dos registros de acuerdo con la instrucció n, el programa presenta los dos
casos.

Para establecer la ruta de datos se observa có mo se conecta el Program Counter (PC) con la
memoria de instrucciones y el sumador con el objetivo de aumentar el PC.

En el caso de las instrucciones aritmético-ló gica se conectan el banco de datos y la ALU.

Para el procesador presentado en particular, en el manejo de instrucciones de salto entre ellos


BEQ, se deben interconectar el banco de registros, la ALU y la extensió n de signo, es
importante añ adir el desplazamiento de 2 bits.

En el diseñ o se observa la utilizació n de dos multiplexores, puesto que es posible compartir


elementos de distintas operaciones, es decir de mú ltiples entradas encontrar la adecuada por
medio de una señ al de control.

La interconexió n de estos circuitos se aprecia a continuació n controlada por una frecuencia de


reloj a 1Ghz.

INGENIERIA DE SOFTWARE
28
Se adjunta archivo Logisim.

7. Resultados Obtenidos

Durante las diferentes etapas de presentació n del presente proyecto se presentaron avances
significativos, que conllevan a la presentació n final, para la primera entrega el resultado
obtenido fue el diseñ o de un programa de alto nivel, y la especificació n de las instrucciones
requeridas para su buen funcionamiento, como en este producto se encuentran los resultados
de esa primera entrega se continuara con los resultados de la segunda entrega.

Para la segunda entrega los productos que se presentaron fueron la definició n detallada de las
instrucciones que se utilizan en el leguaje ensamblador de un programa que diera solució n a
la problemá tica presentada. Ademá s del programa que recibiera un numero entero y ofreciera
una respuesta sobre si este es primo o no.

A continuació n, se detallan dos ejemplos de su funcionamiento en la herramienta MARS, para


el primero se utiliza el nú mero nueve (09) y para el segundo el numero dieciséis (16).

INGENIERIA DE SOFTWARE
29
En la imagen anterior se observa el código, ya listo en la aplicación.

El programa ejecuta correctamente.

INGENIERIA DE SOFTWARE
30
De entrada, se digita el número nueve (09).

El programa corre normalmente.

De entrada, se digita el numero dieciséis (16).

Y la respuesta es la misma.

Y para finalizar el archivo correspondiente a la ALU.

Para la tercera entrega el resultado debe ser el Procesador diseñado para ejecutar el programa
diseñado, el cual se presenta a continuación.

INGENIERIA DE SOFTWARE
31
Y la presentación de dos ejemplos.

Para el caso del número 9,se inicia con la carga del número:

INGENIERIA DE SOFTWARE
32
El resultado de la simulación en logisim, es:

La respuesta del procesador es 00000000, lo que es relativo a falso, y quiere decir que el numero
no es primo, después de realizar 5A instrucciones teniendo en cuenta que este formato es
hexadecimal.

Para el caso del numero 16, se inicia la carga del número:

INGENIERIA DE SOFTWARE
33
La respuesta es la siguiente:

Aunque la respuesta es igual, este procedimiento lleva al procesador hasta la instrucción a8


debido a que el numero elegido es mayor y por consiguiente requiere un mayor número de
operaciones e instrucciones.

INGENIERIA DE SOFTWARE
34
8. Conclusiones

 Existen en la actualidad, y en todos los campos de la vida cotidiana diferentes


problemas que pueden ser modelados efectivamente a través de diferentes
herramientas que facilitan su entendimiento.
 El algoritmo de un problema es la consecució n de una serie de pasos u
operaciones que permiten por medio de diferentes cá lculos encontrar la solució n
de un problema.
 El algoritmo de un problema puede ser presentado grá ficamente con el objetivo de
facilitar su entendimiento, ofreciendo una visió n generalizada de los diferentes
procesos que hacen parte de la solució n de problema presentando.
 Es fundamental para el proceso de diseñ o de una arquitectura, tener en cuenta el
tamañ o de sus registros, el formato de sus instrucciones, los diferentes métodos
de direccionamiento que se utilizaran, que instrucciones operan directamente
sobre los datos, cuales instrucciones controlan el flujo de un programa, en
bú squeda de mejorar su rendimiento, ahorrar capacidad de procesamiento y
almacenamiento y tiempos de respuesta.
 Es importante acompañ ar el proceso educativo por medio de videos donde se
explique el manejo del software especializado, y la manera de diseñ ar la
arquitectura paso a paso, que sean mucho mas cortos para que sean de rá pido

INGENIERIA DE SOFTWARE
35
acceso y observació n, es decir, que se dividan en objetivos má s cortos para
mejorar el proceso de elaboració n de las arquitecturas.
 En el proceso de diseñ o de dispositivos de almacenamiento y procesamiento es
muy importante conocer el peso de las diferentes instrucciones y bucles que se
van a manejar, puesto que de su debida identificació n se puede mejorar el
rendimiento de estos dispositivos al diseñ arlos con el objetivo especificado.
 Entender el funcionamiento de un procesador es una tarea bastante difícil, no solo
basta consultar la informació n disponible, es un tema de comprender como se
ejecuta cada instrucció n y cuales son sus cambios a través del desarrollo del
diseñ o y su respuesta a cada componente que hace parte del proceso de ejecució n.
 Se identifico el amplio repertorio de instrucciones que hacen parte del procesador
8086, y se seleccionaron un subconjunto para realizar el programa propuesto, con
lo cual se reconoció la mínima cantidad de operaciones que son necesarias para
alcanzar el gran numero de actividades y cálculos que son capaces de realizar los
computadores actuales, así las cosas, se puede concluir que las matemá ticas
modernas son dependientes de un bajo numero de operaciones bá sicas, que
siendo utilizadas correctamente facilitan grandes cálculos y disminuyen el tamañ o
de memoria y registros que se deben utilizar para su solució n.
 Es muy importante abordar cada uno de los circuitos de forma individual,
profundizando en su diseñ o y parametrizació n uno por uno con el objetivo de
encontrar soluciones basadas en la interconexió n de estos, ú nicamente cuando se
reconozcan las bondades y características de cada circuito de forma individual.
 Para el mundo actual donde el flujo de informació n en todos los aspectos es
altísimo, las necesidades de las personas y empresas es cada vez mayor, en este
momento es cuando la arquitectura de computadores toma importancia, por la
capacidad que tiene de amoldar diferentes equipos de computo y sus
componentes a las necesidades de cada usuario, así las cosas, no solo la
informació n aumenta, también lo hacen las expectativas de los clientes que día a
día solicitan equipos má s potentes y especializados de acuerdo a sus necesidades
particulares.

INGENIERIA DE SOFTWARE
36
9. Bibliografía

Cortés Rico, L. (2019). Politécnico Grancolombiano. Obtenido de


https://poli.instructure.com/courses/15018

García, Y. (27 de 05 de 20110). Aplicaciones del computador. Obtenido de Importancia de las


herramientas del computador:
http://aplicacionesdelcomputador.blogspot.com/2010/05/arquitectura-del-
computador.html

Pérez, S., Arguello, D., & Facchini, H. (2018). Arquitectura de Computadores 7a. Edición. Mendoza,
Argentina: Rodriguez 273.

Sibila,F.(2004).Arquitectura de Conjunto de Instrucciones

INGENIERIA DE SOFTWARE
37

Das könnte Ihnen auch gefallen