Entrega Final Semana 7 sistemas ensambladores PDF

Title Entrega Final Semana 7 sistemas ensambladores
Author Juan Cordoba
Course Sistemas Digitales y Ensambladores
Institution Politécnico Grancolombiano
Pages 21
File Size 804.5 KB
File Type PDF
Total Downloads 328
Total Views 385

Summary

ENTREGA FINALARQUITECTURA DEL COMPUTADORPRESENTADO POR:CAMILO PELAEZ RAMIREZDENILSON ANACHURY CASTROLEIDY JOHANA SANCHEZ SALAMANCAWILLINGTON CASTAÑEDA ARDILATUTORANTONIO GONZALEZPOLITÉCNICO GRANCOLOMBIANOINSTITUCIÓN UNIVERSITARIA2021TABLA DE CONTENIDOINTRODUCCIÓN 3OBJETIVO GENERAL 4OBJETIVOS ESPECÍF...


Description

ENTREGA FINAL ARQUITECTURA DEL COMPUTADOR

PRESENTADO POR: CAMILO PELAEZ RAMIREZ DENILSON ANACHURY CASTRO LEIDY JOHANA SANCHEZ SALAMANCA WILLINGTON CASTAÑEDA ARDILA

TUTOR ANTONIO GONZALEZ

POLITÉCNICO GRANCOLOMBIANO INSTITUCIÓN UNIVERSITARIA 2021

TABLA DE CONTENIDO

INTRODUCCIÓN

3

OBJETIVO GENERAL

4

OBJETIVOS ESPECÍFICOS

4

DISEÑO DEL ALGORITMO

5

ALGORITMO EN PSEUDOCÓDIGO

6

IMPLEMENTACIÓN DEL PROGRAMA

7

INSTRUCCIONES PARA LA SOLUCIÓN DEL PROBLEMA

8

ESTRUCTURA DE HARDWARE MÍNIMA

9

LISTADO DE INSTRUCCIONES DETALLANDO POR CADA UNA

10

DEFINICIÓN DE LA CANTIDAD DE REGISTROS QUE SE USARÁN Y EL TAMAÑO DE CADA REGISTRO 12 DESCRIPCIÓN BREVE DE LOS MODOS DE DIRECCIONAMIENTO QUE SERÁN POSIBLES

12

TRADUCCIÓN DEL PROGRAMA DE ALTO NIVEL (ENTREGA 1) AL LENGUAJE ENSAMBLADOR QUE HAN CONSTRUIDO, USANDO SU PROPIO CONJUNTO DE INSTRUCCIONES 14 LISTADO EN HEXA DEL BINARIO QUE REPRESENTA EL PROGRAMA REALIZADO EN EL PUNTO 4 DE ESTA ENTREGA 16 REFERENCIAS

19

I.

INTRODUCCIÓN

La arquitectura del computador es el diseño conceptual y estructural operacional fundamental de un sistema de computador. Es un modelo y una descripción funcional de los requerimientos y las implementaciones de diseño para varias partes de un computador, se puede definir como la forma de seleccionar e interconectar componentes de hardware para crear computadoras según los requerimientos de funcionalidad, rendimiento y costo. El computador recibe y envía la información a través de los periféricos por medio de los canales. La UCP es la encargada de procesar la información que le llega al computador, el intercambio de información se tiene que hacer con los periféricos y la UCP. A estos procesadores se les conoce como pipeline processors, estos se componen por una lista de segmentos lineales y secuenciales en donde cada segmento lleva a cabo una tarea o un grupo de tareas computacionales, la computadora realiza operaciones con los datos que tiene almacenados en memoria, produce nuevos datos o información para uso externo.

II.

OBJETIVO GENERAL

Analizar, desarrollar e implementar el trabajo colaborativo del módulo Arquitectura del Computador en relación con nuestro caso de estudio de un procesador que de solución al problema “Determinar si un número es primo o no”. Teniendo en cuenta los conocimientos adquiridos durante el módulo con la idea de alcanzar la solución e implementación del problema planteado.

III.

OBJETIVOS ESPECÍFICOS

Diseñar el conjunto de instrucciones y la microarquitectura de un procesador que permita lo siguiente: ● Determinar si un número es primo o no. ● Diseñar el algoritmo en pseudocódigo o un lenguaje de programación en alto nivel. ● Definir qué instrucciones de bajo nivel son requeridas y diseñar el Conjunto de Instrucciones (ISA). ● Documentar todas las decisiones del diseño.

IV.

DISEÑO DEL ALGORITMO

V.

ALGORITMO EN PSEUDOCÓDIGO

VI.

IMPLEMENTACIÓN DEL PROGRAMA

/** * Requisitos: * 1. La entrada debe ser un número * 2. El número debe ser un entero * 3. El número debe ser mayor o igual a 2 * 4. El número es divisible solo por 1 y por sí mismo */ const isPrime = (num) => { if (isNaN(num)) { console.log('La entrada no es válida') return } if (num < 2) { console.log('Debe ingresar un número mayor o igual a (2)') return } if (num === 2) { console.log(`El número (${num}) es Primo`) return } for (let i = 2; i < num; i++) { const residue = num - (i * Math.floor(num / i)) if (residue === 0) { console.log(`El número (${num}) no es Primo`) return } } console.log(`El número (${num}) es Primo`) } const number = process.argv.slice(2)[0] isPrime(number)

VII.

INSTRUCCIONES PARA LA SOLUCIÓN DEL PROBLEMA

Línea de Código

Tipo de Instrucción

if (isNaN(num)) {

Instrucción de salto condicional

if (num < 2) {

Instrucción de salto condicional

if (num === 2) {

Instrucción condicional

for (let i = 2; i < num; i++) {

Instrucción aritmética inmediata

1. Las operaciones que son realizables se llamarán instrucciones y su realización va a llamarse ejecución. 2. Se realiza listado de instrucciones detallando cada una: nombre, código de operación y parámetros que recibe. 3. Se ejecuta la descripción de una frase indicando lo que hace en términos de lo que recibe como parámetro. 4. Se define la cantidad de registros que se usarán. 5. Se realiza una descripción de la implementación del programa.

VIII.

ESTRUCTURA DE HARDWARE MÍNIMA

Procesador:

Procesador o sistema en un chip (SoC) de 1 gigahercio (GHz) o más rápido

RAM:

1 gigabyte (GB) para 32 bits o 2 GB para 64 bits

Espacio en disco

16 GB para SO de 32 bits 32 GB para SO de 64 bits

duro: Tarjeta gráfica:

DirectX 9 o posterior con controlador WDDM 1.0

Mostrar:

800 x 600

IX.

LISTADO DE INSTRUCCIONES DETALLANDO POR CADA UNA

A. Nombre, mnemónico, parámetros que recibe.

En este caso como mnemocodigo utilizaremos nuestro propio lenguaje y utilizaremos una nomenclatura distinta para nombrar cada variable del sistema.

NOMBRE

Primo

Especifica cuál operación realizaremos

MNEMONICO

edx

Se indica la posición de la instrucción en la memoria del programa a usuario final

PARÁMETRO

00001

Datos asociados a la instrucción que son formato TIPO y VALOR

B. Descripción de una frase indicando qué hace en términos de lo que recibe como parámetro. En esta programación de computador, el parámetro o "argumento" es el valor que pasa a ser una función. Sin embargo, en la mayoría de los lenguajes de programación modernos se permite que algunas funciones tengan varios parámetros. Mientras que la sintaxis de una declaración de función varía entre lenguajes de programación, una función típica con dos parámetros puede verse así:

Cuando esta función es llamada dentro del programa, las variables deben pasarse a la función. Y se verán más o menos así:

En este ejemplo, los valores 22 y 40 son los "parámetros de entrada" pasados al graphXY () función. Cuando una función tiene datos de entrada parámetros, de salida de la función a menudo se ve afectada por los valores que se pasan a la función. Por lo tanto, una sola función se puede llamar varias veces dentro de un programa y producir una salida diferente cada vez. Parámetro [Articulo] techlib Recuperado de: https://techlib.net/definition/parameter.html

X.

DEFINICIÓN DE LA CANTIDAD DE REGISTROS QUE SE USARÁN Y EL TAMAÑO DE CADA REGISTRO

Para la arquitectura del procesador los registros que utilizaremos para almacenar los datos son los espacios de la memoria RAM. Se utilizarán 32 registros del 0 al 31, para una palabra de 32 bits y 4 bytes. Estos registros tendrán el tamaño y la utilidad especificada a continuación:

NÚMERO DE REGISTRO

NOMBRE MNEMOTÉCNICO

USO CONVENCIONAL

$0

Cero

Cero Permanente

$1

$at

Ensamblador temporal (reservado)

$2, $3

$v0 ; $v1

Valor retornado por una sub - rutina

$4, $7

$a0 - $a3

Argumentos a subrutina

$8 - $15

$t0 - $t7

Temporales - No se preservan al llamar una función

$16 - $23

$t0 - $t7

Salvados - Se preservan al llamar una función

$24 - $25

$t8 - $t9

Temporales

$26 - $27

$k0 - $k1

Kernel (reservados para OS)

$ 28

$gp

Global pointer

$ 29

$sp

Stack pointer

$ 30

$fp

Frame pointer

$ 31

$ra

Dirección de retorno

XI.

DESCRIPCIÓN BREVE DE LOS MODOS DE DIRECCIONAMIENTO QUE SERÁN POSIBLES El microprocesador lleva a cabo la función con facilidad dado que usa un

direccionamiento el cual determina la forma en que se interpreta la información. El registro se define por la instrucción que contiene el operando. Directo: El registro se define por la instrucción que contiene el operando.

Inmediato: Establece en el byte o bytes del operando.

Directo: El byte o par de bytes que siguen al código OP de la instrucción el cual da paso a continuar 8 ó 16 bits,que, sumado al contenido del registro DS, determina la localización efectiva en la que se encuentra el dato para ser transferido.

XII.

TRADUCCIÓN DEL PROGRAMA DE ALTO NIVEL (ENTREGA 1) AL LENGUAJE ENSAMBLADOR QUE HAN CONSTRUIDO, USANDO SU PROPIO CONJUNTO DE INSTRUCCIONES

; Load sections and Directives section .data db 'Enter a number: ', 0 msg_input msg_prime db 'Number is Prime', 10 msg_not_prime db 'Number is Not Prime', 10 num dw 8 section .text global _start ; Main function _start: call _printQuestion call _readNum mov rax, [num] ; Number to be checked mov rdx, rax cmp rdx, 1 jl _notPrime; If less or equal to 1, jump to _notPrime cmp rdx, 2 ; 2 is used as divisor

je xor mov shr mov

_prime rdx, rdx rcx, rax rcx, 1 ebx, 2

; ; ; ; ;

If number is 2, then it's a prime Reset rdx Setup the counter Divides rcx by 2 First divisor is 2

_loop: ; block starts, is rax divisible by ebx? push rax push rdx xor rdx, rdx div ebx cmp rdx, 0 pop rax pop rdx ; end of block, rax is divisible by ebx? jz _notPrime ; If rax is divisible by ebx (rdx == 0), number is not a prime inc ebx ; next divisor is ebx + 1 dec rcx cmp rcx, 0 jnz _loop jmp _prime _printQuestion: mov rax, 1 mov rdi, 1 mov rsi, msg_input mov rdx, 15 syscall ret _readNum: mov rax, 0 mov rdi, 0 mov rsi, num mov rdx, 8 syscall ret _printNum: mov rax, 1 mov rdi, 1 mov rsi, num mov rdx, 8 syscall ret _prime: mov rax, 1 mov rdi, 1 mov rsi, msg_prime mov rdx, 15 syscall call _exit _notPrime:

mov rax, 1 mov rdi, 1 mov rsi, msg_not_prime mov rdx, 20 syscall call _exit _exit: mov rax, 60 mov rdi,0 syscall

XIII.

LISTADO EN HEXA DEL BINARIO QUE REPRESENTA EL PROGRAMA REALIZADO EN EL PUNTO 4 DE ESTA ENTREGA

Se lista en Hexadecimal el programa realizado.

BINARIO

HEXADECIMAL

BINARIO

HEXADECIMAL

00000

f0

10110

f16

10001

f1

10111

f17

10010

f2

11000

f18

10011

f3

11001

f19

10100

f4

100000

f20

10101

f5

100001

f21

10110

f6

100010

f22

10111

f7

100011

f23

11000

f8

100100

f24

11001

f9

100101

f25

10000

f10

100110

f26

10001

f11

100111

f27

10010

f12

101000

f28

10011

f13

101001

f29

10100

f14

110000

f30

10101

f15

110001

f31

XIV.

XV.

ALU EN LOGISIM

REGISTROS

Los registros son las unidades de memorias más rápidas y trabajan casi a la velocidad del procesador. Estos se construyen con Flip-Flops.

El flip flop es el nombre común que se le da a los dispositivos de dos estados (biestables), que sirven como memoria básica para las operaciones de lógica secuencial. Los Flip-flops son ampliamente usados para el almacenamiento y transferencia de datos digitales y se usan normalmente en unidades llamadas “registros”, para el almacenamiento de datos numéricos binarios. Tipos de Flip-Flops: ● Asíncrono ● Sincono (Ref.: Mecafenix) XVI.

MEMORIA DEL PROGRAMA

La memoria de instrucciones y datos está integrada en el propio chip. Una parte debe ser ROM (no volátil), esta se destina a contener la configuración de la aplicación. La otra parte de la memoria será RAM (volátil), y se destina a guardar las variables y los datos temporales. Para nuestro ejemplo la RAM no se requiere que sea de gran capacidad ya que solo debe contener las variables y los cambios de información que se produzcan al momento de la ejecución del algoritmo. Tipos de memorias: ● ROM con máscara ● EPROM ● OTP ● EEPROM ● FLASH (Ref.: Electrónica Unicrom)

XVII.

UNIDAD DE CONTROL

La unidad de control revisa una instrucción de 32 bit que está compuesta con una secuencia dada para poder ejecutar la tarea que se le está diseñando, lo que se hizo fue ir controlando las salidas dividiendo en 4 grupos de 8 bits cada una de las instrucciones recibidas, así tener un mejor control, la constante se usa para mantener activo la entra de “Selección” de la memoria ROM y así ir leyendo cada instrucción, se tiene dos salidas para controlar los Jump del programa las demás salidas son con el fin de controlar cómo se va ir guardando la información en los registros, cuando grabar, cuando activar el multiplexor de las variables FT. XVIII.

CONCLUSIONES

Obtuvimos una arquitectura de microprocesador, el cual permite llevar a cabo una tarea específica, en éste caso, identificar si un número es primo o no, y de paso, guardar la información y administrar los pasos, de tal manera que generen un resultado para el usuario que ingresa los números en la entrada del sistema. De acuerdo con la simulación realizada, fue posible comprobar que la unión de diferentes componentes en una arquitectura de CPU logran llevar a cabo la lectura de información, su procesamiento siguiendo un programa de instrucciones, y la generación de un resultado esperado. Se identifican los requerimientos de la arquitectura de Software , cuyo objetivo es la solución e implementación para identificar un número primo, donde se concluye que su función principal es la creación de alguna alternativa que optimice la veracidad del resultado. Los resultados obtenidos en el diseño del algoritmo se construyó de acuerdo al orden del desarrollo del conjunto de instrucciones sobre: análisis, diseño, codificación, y pruebas. Para la prueba del resultado se utiliza Logisim donde nos permitió diseñar y simular bajo la interfaz gráfica el logro de construir el resultado que cumpliera con los propósitos indicados inicialmente; aquí se reconoció la simbología de las compuertas lógicas y herramientas de base. Se realizó el análisis de uso combinatorio que comprobó la operación y funcionamiento de cada uno de los circuitos.

XIX.

REFERENCIAS

EcuRed. (s. f.). Arquitectura de computadoras - EcuRed. Recuperado 26 de marzo de 2021, de https://www.ecured.cu/Arquitectura_de_computadoras Microsoft. (s. f.). Requisitos del sistema de Windows 10. Recuperado 30 de marzo de 2021, de

https://support.microsoft.com/es-es/windows/requisitos-del-sistema-de-windows-10-6d4e9a79-

66bf-7950-467c-795cf0386715

Parámetro Definición. (s. f.). Parámetro Definición. Recuperado 2 de mayo de 2021, de https://techlib.net/definition/parameter.html Mecafenix, I. (2020, 22 junio). Flip flop ¿que es y como funciona? Ingeniería Mecafenix. Recuperado 04 de mayo de 2021, de https://www.ingmecafenix.com/electronica/flipflop/ A. (2020, 30 julio). Memoria de datos y de programa en PIC. Electrónica Unicrom. Recuperado 04 de mayo 2021, de https://unicrom.com/memoria-de-datos-y-de-programa-enpic/...


Similar Free PDFs