Organización del Computador I 1er. Parcial 17-Mayo-2005. Turno:



Documentos relacionados
Entorno de Ejecución del Procesador Intel Pentium

Práctica 4 - Arquitectura CPU

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERIA MECANICA Y ELECTRICA INGENIERIA EN COMUNICACIONES Y ELECTRÓNICA ACADEMIA DE COMPUTACIÓN

Figura 1. Símbolo que representa una ALU. El sentido y la funcionalidad de las señales de la ALU de la Figura 1 es el siguiente:

Por ejemplo, los números binarios sin signo que se pueden construir con 4 bits son: bit más significativo more significant bit (msb)

Tema : ELECTRÓNICA DIGITAL

EJERCICIOS RESUELTOS SOBRE ERRORES DE REDONDEO

Tema 2. Diseño del repertorio de instrucciones

3.8 Construcción de una ALU básica

circuitos digitales Oliverio J. Santana Jaria Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso

INFORMÁTICA. Práctica 5. Programación en C. Grado en Ingeniería en Electrónica y Automática Industrial. Curso v1.0 (05.03.

Universidad Autónoma de Baja California Facultad de Ingeniería Mexicali

Lo que definimos como CPU (Central Process Unit) o Unidad Central de Proceso, está estructurado por tres unidades operativamente diferentes:

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

Organización Básica de un Computador y Lenguaje de Máquina

x

Capítulo 1: Sistemas de representación numérica Introducción. Dpto. de ATC, Universidad de Sevilla - Página 1 de 8

ELECTRÓNICA DIGITAL. Una señal es la variación de una magnitud que permite transmitir información. Las señales pueden ser de dos tipos:


SOLECMEXICO Página 1 DISEÑO DE CIRCUITOS A PARTIR DE EXPRESIONES BOOLEANAS

SISTEMAS DE NUMERACIÓN. Sistema de numeración decimal: = =8245,97

Sistemas de numeración

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Generación de funciones lógicas mediante decodificadores binarios con salidas activas a nivel alto

LECCIÓN 8: CIRCUITOS Y ALGORITMOS DE MULTIPLICACIÓN DE ENTEROS

ELO211: Sistemas Digitales. Tomás Arredondo Vidal 1er Semestre 2009

Los sistemas de numeración se clasifican en: posicionales y no posicionales.

Generación de código para funciones. Generación de código para funciones. Generación de código para funciones. Generación de código para funciones

Materia Introducción a la Informática

DISEÑO DE CIRCUITOS LOGICOS COMBINATORIOS

Tema 11: Sistemas combinacionales

Tema I. Sistemas Numéricos y Códigos Binarios

Apellidos Nombre DNI

!!!!!!!! !!!!! Práctica!4.! Programación!básica!en!C.! ! Grado!en!Ingeniería!!en!Electrónica!y!Automática!Industrial! ! Curso!2015H2016!

LABORATORIO DE ARQUITECTURA DE COMPUTADORES. I. T. I. SISTEMAS / GESTIÓN GUÍA DEL ALUMNO

VI Olimpiada de Informática del estado de Guanajuato Solución Examen Teórico

Computación I Representación Interna Curso 2011

UNIDAD 1. LOS NÚMEROS ENTEROS.

Unidad de trabajo 2: INFORMÁTICA BÁSICA (primera parte)

OR (+) AND( ). AND AND

Tema 2 : NÚMEROS ENTEROS. Primero de Educación Secundaria Obligatoria. I.e.s Fuentesaúco.

Sistemas Digitales Ingeniería Técnica en Informática de Sistemas Curso Introducción a la lógica binaria

SISTEMAS NUMERICOS CAMILO ANDREY NEIRA IBAÑEZ UNINSANGIL INTRODUCTORIO A LA INGENIERIA LOGICA Y PROGRAMACION

Módulo 9 Sistema matemático y operaciones binarias

5.1.1 Sumadores con anticipación de Acarreo. g i = a i b i. c i = c i-1 p i + g i s i = p i + c i-1. c 0 = g 0 + c -1 p 0

SISTEMAS DE NUMERACIÓN. Sistema decimal

Naturaleza binaria. Conversión decimal a binario

Creación de Funciones de Conducción

Divisibilidad y números primos

by Tim Tran:

Informática Bioingeniería

El álgebra booleana (Algebra de los circuitos lógicos tiene muchas leyes o teoremas muy útiles tales como :

CIRCUITOS ARITMÉTICOS

TEMA 5. ELECTRÓNICA DIGITAL

Lección 1. Representación de números

21/02/2012. Agenda. Unidad Central de Procesamiento (CPU)

La Unidad Procesadora.

T6. CIRCUITOS ARITMÉTICOS

Introducción a la Programación 11 O. Humberto Cervantes Maceda

LABORATORIO DE COMPUTADORAS

Modelo de examen tipo resuelto 1

TEMA 1: SISTEMAS INFORMÁTICOS. Parte 2: representación de la información

Ejemplos de conversión de reales a enteros

"Programación en Ensamblador del microprocesador Pentium (I)"

Sistemas de numeración, operaciones y códigos.

Diapositiva 1. Por supuesto, también se puede hacer lo contrario. Un demultiplexor envía una señal a una de muchas líneas.

CODIFICADORES CON PRIORIDAD. Grupo 2

Puertas Lógicas. Contenidos. Objetivos

CURSO TECNOLOGÍA TECNOLOGÍA 4º ESO TEMA 5: Lógica binaria. Tecnología 4º ESO Tema 5: Lógica binaria Página 1

Índice Introducción Números Polinomios Funciones y su Representación. Curso 0: Matemáticas y sus Aplicaciones Tema 1. Números, Polinomios y Funciones

Circuitos Electrónicos. Primer parcial curso

1. Números Reales 1.1 Clasificación y propiedades

1. Se establecen los conceptos fundamentales (símbolos o términos no definidos).

Curso Completo de Electrónica Digital

CIRCUITOS DIGITALES -

ARQUITECTURA DE LAS COMPUTADORAS PRACTICA

La ventana de Microsoft Excel

Clase 02: Representación de datos

28 = =

FACULTAD DE INGENIERÍA

Tema 3 : Algebra de Boole

Programa para el Mejoramiento de la Enseñanza de la Matemática en ANEP Proyecto: Análisis, Reflexión y Producción. Fracciones

Números Reales. MathCon c

Materia: Informática. Nota de Clases Sistemas de Numeración

_ Antología de Física I. Unidad II Vectores. Elaboró: Ing. Víctor H. Alcalá-Octaviano

Matemática de redes Representación binaria de datos Bits y bytes


Operaciones Booleanas y Compuertas Básicas

La Lección de Hoy es Distancia entre dos puntos. El cuál es la expectativa para el aprendizaje del estudiante CGT.5.G.1

MÉTODO DEL CAMBIO DE BASE PARA CÁLCULO MANUAL DE SUBREDES CON IP V4.0

Capítulo 4 Procesos con estructuras de repetición

Transformación de binario a decimal. Transformación de decimal a binario. ELECTRÓNICA DIGITAL

1. Representación de la información en los sistemas digitales

PROBLEMAS TECNOLOGÍA INDUSTRIAL II. CONTROL DIGITAL

Primeros conmutadores: diodos de cristal y de tubos de vacío (1906). Transistor (TRT): más pequeño y fiable, de material semiconductor (1950).

Figura 1: Suma binaria

1.1 Sistema de numeración binario

TEMA 3: IMPLEMENTACIÓN DE CIRCUITOS COMBINACIONALES CON PUERTAS LÓGICAS.

Transcripción:

Nota: En el parcial se puede tener la cartilla de Assembler y la de seguimiento (formatos de instrucción) pero no se pueden compartir. Para aprobar el parcial, son necesarios 6(seis) puntos. Para promocionar, 8 (ocho) puntos Justifique cada una de sus respuestas. Especifique, en caso de ser necesario, todos los cálculos intermedios utilizados. Realice cada ejercicio en hoja separada, numerando las hojas y detallando nombre en cada una de ellas. El examen debe ser entregado en tinta. Caso contrario, se pierde el derecho a revisión. 1. El siguiente fragmento de código Assembler Intel intenta calcular uno a uno los términos de la sucesión de Fibonacci: VECTOR DD 0, 1, 0, 0 INICIO: LEA EBX, VECTOR MOV ESI, EBX MOV EDI, EBX ADD EDI, 4 MOV EDX, 4 MOV ECX, FH CONT: MOV EAX, [ESI] ADD EAX, [EDI] MOV ESI, EDI ADD EDX, 4 AND EDX, ECX MOV EDI, EBX ADD EDI, EDX MOV [EDI], EAX JMP CONT FIN: Se pide: a) Decidir si el programa hace o no lo pretendido. En caso afirmativo, explicar su lógica; en caso negativo, explicar que está haciendo y porque no hace lo que se desea. b) En qué sistemas de numeración de base 2 tendría sentido considerar codificados los datos almacenados en VECTOR? c) Para cada sistema de numeración citado en b) Cuál de los valores de la lista que se presenta a continuación corresponde al último término correctamente calculado? (dicho término podría ser el mismo en más de uno de los sistemas citados): i. 1 ii. 28657 iii. 46368 iv. 75025 v. 1836311903 vi. 2971215073 vii. 4807526976 viii. 7540113804746346429 ix. 12200160415121876738 x. 19740274219868223167 d) Para cada sistema de numeración citado en b) modificar el programa para que finalice después de calcular el máximo término correcto. 2. Dados dos vectores con elementos de 32 bits, se desea determinar el número de elementos comunes a ambos. Por ejemplo, si se tiene V1 = ( 22, 0, 33, 11, 1, 13, 19) y V2 = ( 111, 13, 19, 22, 1, 2, 13, 0), el número de elementos comunes es 5 (los corresponden a los elementos 22, 0, 1, 13 y 19). Ambos vectores tienen al menos un elemento, y en cada uno de ellos los elementos no se repiten. Los vectores se encuentran apuntados por las etiquetas V EC1 y V EC2, y sus dimensiones están almacenadas en las etiquetas N1 y N2. Se pide escribir un fragmento en ensamblador Intel o Sparc que lleve a cabo la tarea descripta, dejando el resultado almacenado en la etiqueta TOTAL.

3. Las arquitecturas A1, A2 y A3 tienen en común lo siguiente: Direcciones de 16 bits. Datos de 32 bits. Código de operación de 8 bits. El direccionamientos es directo en todos los casos. No se utilizan registros. Arquitectura A1 Arquitectura A2 Arquitectura A3 MOV Op1,Op2 MOV Op1,Op2, Op3 LOAD Op ADD Op1,Op2 ADD Op1,Op2, Op3 STORE Op SUB Op1,Op2 SUB Op1,Op2, Op3 ADD Op SUB Op Responder: i. Escribir el formato de instrucción para cada arquitectura. ii. Para cada programa determinar su tamaño en bytes. iii. Dado el siguiente código C: a=b+c; b=a+c; d=a-b; escribirlo en cada arquitectura, señalando la cantidad de accesos a memoria por cada instrucción. 4. a) Decidir si las siguientes afirmaciones son verdaderas o falsas, justificando detalladamente en cada caso: i. Toda función booleana puede implementarse como circuito lógico. ii. Todo circuito lógico representa alguna función booleana. iii. Toda función booleana de 2 entradas puede implementarse con 7 o menos compuertas lógicas (sólo and, or y not) iv. Toda función booleana de 2 entradas puede implementarse con 3 o menos compuertas lógicas (sólo and, or y not) v. Toda función booleana de 2 entradas requiere al menos de 1 compuerta lógica para implementarse. b) Dada la siguiente tabla de verdad, construir una expresión lógica equivalente. Simplificarla y dibujar el diagrama de circuitos lógicos que la implementan. Usar sólo ands, ors y nots. A B C OUT 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 La función anterior corresponde a un circuito muy utilizado en la lógica digital. Decir de cuál se trata y dar ejemplos de su uso.

SOLUCIONES Ej1) Transcribo el código Assembler comentado: VECTOR DD 0, 1, 0, 0 INICIO: LEA EBX, VECTOR ;EBX será la base del direccionamiento indexado MOV ESI, EBX ;ESI arranca en V(0) MOV EDI, EBX ADD EDI, 4 ;EDI arranca en V(1) MOV EDX, 4 ;EDX será el offset del direccionamiento indexado MOV ECX, FH ;ECX es una máscara para sumar módulo 16 CONT: MOV EAX, [ESI] ADD EAX, [EDI] ;EAX=V(i)+V(i+1) MOV ESI, EDI ;ESI queda en V(i+1) para el próximo ciclo ADD EDX, 4 ;incrementa el offset a la palabra siguiente AND EDX, ECX ;se queda con el resto mod 16 MOV EDI, EBX ;Carga la base ADD EDI, EDX ;Suma el offset MOV [EDI], EAX JMP CONT FIN: a) El programa calcula la serie de Fibonacci sobre un vector de 4 elementos, almacenándolos de la siguiente manera: 0, 1, 0, 0 0, 1, 1, 0 0, 1, 1, 2 3, 1, 1, 2 3, 5, 1, 2 3, 5, 8, 2 3, 5, 8,13 que es lo mismo a: VECTOR(i+2 mod 4) = VECTOR(i+1 mod 4) + VECTOR(i mod 4) b) Para (2,32) sin signo, con signo, y complemento a 2. c) sin signo: el número máximo de la representación entera sin signo con 32 bits es 2^32 = 4294967296, por lo tanto el número máximo debe ser ese o uno menor más cercano. Res: 2971215073 con signo: el número máximo de la representación entera con signo con 32 bits es 2^31 = 2147483647, por lo tanto el número máximo debe ser ese o uno menor más cercano. Res: 1836311903 complemento a dos: IDEM con signo d) Luego de la linea ADD EAX, [EDI] se agregaría la siguiente linea: sin signo: JC FIN, ya que si la suma da carry significa que no se puede representar el número obtenido en notación sin signo. con signo: JO FIN o JS FIN, ya que si la suma da con signo significa que no se puede representar el número obtenido. Que como siempre estamos chequeando sobre sumas de dos positivos, equivale a chequear si ocurre overflow. complemento a dos: JO FIN o JS FIN, idem a con signo.

Ej2) Version usando una subrutina ;ESI:Puntero a VEC1 ;EAX: Contador de las posiciones de VEC1 (Desde N1 a 0) ;ECX: Contador de elementos en común. LEA ESI, VEC1 MOV EAX, N1 XOR ECX, ECX Ciclo: MOV EBX, [ESI] CALL Sumar ADD ESI, 4 DEC EAX JNZ Ciclo Fin: MOV TOTAL, ECX ;EBX tiene el valor de VEC1 a comparar,en ECX hago la suma si corresponde ;EDI: Puntero a VEC2 ;EAX: Contador de las posiciones de VEC2 (Desde N2 a 0) Sumar PROC NEAR PUSH EDI PUSH EAX PUSH EDX LEA EDI, VEC2 MOV EAX, N2 Ciclo2: MOV EDX, [EDI] CMP EDX, EBX JNE Distintos INC ECX JMP Terminar Distintos: ADD EDI, 4 DEC EAX JNE Ciclo2 Terminar: POP EDX POP EAX POP EDI RET ;Comparo el elemento del segundo vector (EDX) con el del primero (EBX)

Versión sin subrutinas: MOV EAX, N1 ; EAX va desde N1 a 0 MOV EDX, 0 ; EDX Contador de elementos comunes LEA ESI, VEC1 ; ESI: Puntero al primer vector Ciclo: CMP EAX, 0 JE FIN MOV EBX, [ESI] ; EBX tiene un elemento de VEC1 MOV ECX, N2 ; ECX va de N2 a 0 LEA EDI, VEC2 ; EDI: Puntero al segundo vector Ciclo2: CMP ECX, 0 JE FinCiclo2 CMP EBX, [EDI] JE Sumar ADD EDI, 4 DEC ECX JMP Ciclo2 Sumar: INC EDX FinCiclo2: ADD ESI, 4 DEC EAX JMP Ciclo Fin: MOV TOTAL, EDX Ej3) i) A1 Codop op1 op2 8 bits 16 bits 16 bits #bits por instrucción=40 bits= 5 bytes A2 Codop op1 op2 op3 8 bits 16 bits 16 bits 16 bits #bits por instrucción=56 bits= 7 bytes A3 Codop op1 8 bits 16 bits #bits por instrucción=24 bits= 3 bytes ii) MOV a,b ADD a,c MOV b,a ADD b,c MOV d,a SUBB d,b A1 A2 A3 //a=b ADD b,c,a //b+c=a LOAD b //temp=b //a=a+c=b+c ADD a,c,b //a+c=b ADD c //b=a SUBB a,b,d //a-b=d //temp+=c //b=b+c=a+c STORE a //a=temp //d=a LOAD a //temp=a //d=d-b=a-b ADD c //temp+=c STORE b //b=temp LOAD a //temp=a SUBB b //temp-=b STORE d //d=temp

iii) Código A1: 6 intrucciones * 5 bytes/instrucción=30 bytes Código A2: 3 intrucciones * 7 bytes/instrucción=21 bytes Código A3: 9 intrucciones * 3 bytes/instrucción=24 bytes Ej4) a) i) Verdadero. Cualquier función booleana pude expresarse mediante su tabla de verdad por ser una función finita. Dada la tabla de verdad se puede escribir una expresión lógica formada por negaciones, disyunciones y conjunciones como se vio en la clase como paso 1 del método de simplificación. Y dada esta expresión modelarla mediante circuitos lógicos es inmediato. ii) Falso. El caso más claro es el del flip-flop, que no representa función alguna por tener diferentdiferentes salidas para la misma entrada, dependiendo del estado interno (memoria). Otros ejemplos pueden ser circuitos realimentados que no son función por no tener una salida definida (ej.: not realimentado) o (respuesta mucho menos ortodoxa) circuitos lógicos que tienen múltiples salidas. iii) Verdadero. Dada la tabla de verdad de la función vemos la cantidad de salidas en 1 que tiene. Si son más de dos implementaremos la función negada a la cual negaremos la salida. En cualquier caso tenemos una tabla con (a lo más) dos lineas en 1. Pasando esto a la expresión lógica inmediata tenemos que el pero caso es: (nota. notb) + (nota. B)o lo que es lo mismo (nota. notb) + (notb. A), en ambos casos la cantidad de operadores lógicos es de 6 y se puede necesitar de una negación más al final por estar implementando la negacion de la funcion. En total no más de 7 compuertas. Esta cota se puede mejorar de 2 maneras: 1)Primero se puede notar que al pasar a circuito lógico no hace falta implementar dos veces el nota (o notb), así que la cota baja a 6 2)También se puede notar que en el caso de estar implementando (nota. notb) + (nota. B), nos conviene implementar su negacion, que queda (A. B) + (A. notb), con cuatro compuertas más una negacion al final, bajando la cota a 5 compuertas. iv)falso, basta una mención al xor o a su negación (sii). v) Falso. La función f(a,b)=a no requiere ninguna compuerta para su implementación, sino que podemos unir la entrada a con la salida directamente. Otro ejemplo pueden ser las constantes (asumiendo la existencia de tierra y positivo en el ciercuito). b) La función se puede simplificar a (a.c) + (not a.b). Se puede suponer que es un MULTIPLEXOR tomando como entrada selectora a A. Se utiliza para seleccionar de que entrada se toma una salida, por ejemplo se podría utilizar para seleccionar la salida de una alu como el dato que sale de la misma, o la entrada sin modificar. También se puede pensar que la función predica sobre la primalidad de el numero abc, pensando que está en codificación sin signo.