Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.
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
INGENIERIA DE SOFTWARE 3
máximo de operandos, forma en que los datos e instrucciones son almacenados en memoria.
Distintos procesadores tienen distintos tipos de instrucciones.
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).
INGENIERIA DE SOFTWARE 4
o Número de operandos.
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
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:
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.
INGENIERIA DE SOFTWARE 6
Microarquitectura vs. arquitectura de conjunto de instrucciones
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).
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
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.
4. Algoritmo Solución
INGENIERIA DE SOFTWARE 8
4.3. 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:
ALGORITMO 1
INGENIERIA DE SOFTWARE 9
ALGORITMO 2
INGENIERIA DE SOFTWARE 10
4.4. Tipos de Instrucción
ALGORITMO 1
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
ALGORITMO 2
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
INGENIERIA DE SOFTWARE 11
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
move $t0 $v0
li $t1 2
lo: beq $t0 $t1 es_primo
div $t0 $t1
mfhi $t2
beqz $t2 no_primo
addi $t1 $t1 1
b lo
no_primo:
li $v0 PRINT_STRING
la $a0 s_no
syscall
b ex
es_primo:
li $v0 PRINT_STRING
la $a0 s_si
syscall
b ex
INGENIERIA DE SOFTWARE 13
00000000000000000000000000001100 0000000c
00000100000000010000000000000101 04010005
00100100000000100000000000000100 24020004
00111100000000010001000000000001 3c011001
00110100001001000000000000110110 34240036
00000000000000000000000000001100 0000000c
00000100000000010000000000000000 04010000
00100100000000100000000000001010 2402000a
00000000000000000000000000001100 0000000c
Tabla de Verdad:
INGENIERIA DE SOFTWARE 14
Expresión Booleana:
̅̅̅̅𝑪𝑫
𝑺𝟏 = 𝑨𝑩 ̅𝑩
̅ +𝑨 ̅ 𝑩𝑪
̅ 𝑪𝑫 + 𝑨 ̅𝑫 + 𝑨
̅ 𝑩𝑪𝑫 + 𝑨𝑩 ̅𝑫
̅ 𝑪𝑫 + 𝑨𝑩𝑪
ALU EN LOGISIM
Prueba (1)
Prueba (2)
INGENIERIA DE SOFTWARE 15
Prueba (3)
Prueba (4)
INGENIERIA DE SOFTWARE 16
6. Conclusiones
7. Bibliografía
INGENIERIA DE SOFTWARE 17