Organización n del Computador. CPU (ISA) Conjunto de Instrucciones de la Arquitectura



Documentos relacionados
Organización del Computador 1. CPU (ISA) Conjunto de Instrucciones de la Arquitectura 2017

ISA (Instruction Set Architecture) Arquitectura del conjunto de instrucciones

Arquitectura de Computadores

Entorno de Ejecución del Procesador Intel Pentium

Organización y Arquitectura

Arquitectura del CPU. Organización del Computador 1 Verano 2016

Práctica 4 - Arquitectura CPU

Tema 2: Arquitectura del repertorio de instrucciones. Visión del computador que tiene el programador en bajo nivel.

2.4. Modos de direccionamiento Distintas formas que tiene la arquitectura para especificar la ubicación de los operandos.

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

Análisis general de un Microprocesador

Circuitos Digitales II y Laboratorio Electrónica Digital II y Laboratorio

Arquitecturas CISC y RISC

Clase 20: Arquitectura Von Neuman

Tema 2. Diseño del repertorio de instrucciones

6-REGISTROS DEL 8086 Y DEL 80286

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


Arquitectura intel Preámbulo de OSO para alumnos formados en el procesador MIPS. Asignatura Sistemas Operativos Murcia abril de 2005

Tema 1 Introducción. Arquitectura básica y Sistemas Operativos. Fundamentos de Informática

Arquitectura Von Neumann

Organización del Computador 1. Máquina de von Neumann Jerarquía de Niveles

1.2 Análisis de los Componentes. Arquitectura de Computadoras Rafael Vazquez Perez

Práctica 3: Programación con subrutinas

Tema 5 Repertorios de instrucciones: Modos de direccionamiento y formato

Tema 5 Diseño del Set de Instrucciones (ISA) Arquitectura de Computadoras

Estructura y Tecnología de Computadores (ITIG) Luis Rincón Córcoles Ángel Serrano Sánchez de León

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

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

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

Modelo de von Neumann

Estructura de Datos y de la Información. Pilas y expresiones aritméticas


Examen de Arquitectura de Computadores 2 22 de febrero del 2011

GENERACIÓN DE CÓDIGO

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

La arquitectura del 8086/8088

ACTIVIDADES TEMA 1. EL LENGUAJE DE LOS ORDENADORES. 4º E.S.O- SOLUCIONES.

Procesadores segmentados. El DLX.

ESTRUCTURA Y TECNOLOGÍA A DE COMPUTADORES

Arquitectura de Computadoras

Lógica Binaria. Arquitectura de Ordenadores. Codificación de la Información. Abelardo Pardo Universidad Carlos III de Madrid

Estructura de Computadores

EXAMEN ORDINARIO DE ORGANIZACIÓN DE COMPUTADORES

La memoria principal. Los subsistemas de E/S. Los buses del sistema

Modos de Direccionamiento+ Diseño de ISA. Organización del Computador 1 Verano 2016

INTRODUCCIÓN. Interrupciones.

Conceptos de Arquitectura de Computadoras Curso 2015

Tutorial Básico de vbscript

PARTE II: Programación en ensamblador

Guía Laboratorio Número 1

Tema 1. Introducción a los computadores

COMPUTADORES SEGMENTADOS (DLX)

Creación de Funciones de Conducción

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

Estructura de Computadores. Capítulo 3b: Programación en

Estructura de Computadores

Unidad 1: Conceptos generales de Sistemas Operativos.

La Unidad Procesadora.

Arquitecturas RISC. Arquitectura de Computadoras y Técnicas Digitales - Mag. Marcelo Tosini Facultad de Ciencias Exactas - UNCPBA

Preliminares. Tipos de variables y Expresiones

Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.

Ejemplo del uso de las subrutinas

Funciones. Diseño de funciones. Uso de instrucción jal y retorno de subrutina.

Repaso Registros internos Z80 1/37

Capítulo 1 Introducción a la Computación

Clase 02: Representación de datos

Organizacion del Computador

x

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.

Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia

Entrada/Salida. Polling e Interrupciones. Verano de Mariano Moscato. Organización del Computador 1

Tiempo de Compilación. Programa fuente. Secuencia. de caracteres. Scanner. Secuencia. de símbolos Parser. Compilador.

Apuntes de Microcontroladores (Repaso de temas previos)

TEMA 4. Unidades Funcionales del Computador

Apellidos Nombre DNI

Introducción a Computación

1. Manejo de memoria estática 2. Manejo de memoria dinámica

Tema: FUNCIONES, PROCEDIMIENTOS Y RECURSIVIDAD.

Tema IV. Unidad aritmético lógica

INTRODUCCION A LA PROGRAMACION DE PLC

INTERRUPCIONES. Existen 256 interrupciones En el modo real cada una tiene un vector asociado Vectores de 4 bytes: segmento + offset 32 F0 50 8A

El nivel ISA (II)! Conjunto de Instrucciones

SOLUCION EXAMEN junio 2006

3.8 Construcción de una ALU básica

Estructura de Datos. Unidad I Tipos de Datos

1. Informática e información. 2. Sistemas de numeración. 3. Sistema binario, operaciones aritméticas en binario, 4. Sistemas octal y hexadecimal. 5.

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:

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

Las Instrucciones. A continuación vamos a presentar el conjunto de instrucciones básico de los Microcontroladores Picmicro.

Sistemas de Computadoras Índice

El repertorio de instrucciones

MODULO II: ARQUITECTURA DEL PROCESADOR

62/8&,21(6$/(;$0(1'( /$%25$725,2'((6758&785$6'(/26&20387$'25(6 &8562)(%5(52

Arquitectura de Computadores y laboratorio Clase 15: Arquitectura MIPS Pt.3. Departamento de Ingeniería de Sistemas Universidad de Antioquia

En la actualidad ASCII es un código de 8 bits, también conocido como ASCII extendido, que aumenta su capacidad con 128 caracteres adicionales

Tema 4. Gestión de entrada/salida

Es un software de simulación que ejecuta programas en lenguaje de ensamblador para procesadores con arquitectura MIPS32.

Que es PHP? Que se puede hacer con PHP? Sintaxis del lenguaje. Variables. Operadores básicos. Condicionales. Ciclos.

Transcripción:

Organización n del Computador CPU (ISA) Conjunto de Instrucciones de la Arquitectura

Estructura (computadora) periféricos Computador Computador Unidad Central de Proceso CPU Sistema de interconexión Memoria Principal Líneas de comunicación Entrada Salida

Estructura (CPU) CPU I/O Computer System Bus Memory CPU Registros Interconexión Interna de la CPU Unidad Aritmética y Lógica Unidad de Control

Estructura de una máquinam von Neumann

Ciclo de Ejecución 1. UC obtiene la próxima instrucción de memoria (usando el registro PC). 2. Se incrementa el PC. 3. La instrucción n es decodificada a un lenguaje que entiende la ALU. 4. Obtiene de memoria los operandos requeridos por la operación. 5. La ALU ejecuta y deja los resultados en registros o en memoria. 6. Repetir paso 1.

Los niveles de una computadora

ISA Nivel de Lenguaje de Máquina M (Instruction( Set Architecture). Límite entre Hardware-Software. Es lo que vemos como programadores Define: Cómo se representan los datos, como se almacenan, como se acceden Qué operaciones se pueden realizar Cómo se codifican estas operaciones No importa la implementación n interna.

Métricas de una ISA Cantidad de memoria que un programa requiere. Complejidad del conjunto de instrucciones (por ejemplo RISC vs CISC). Longitud de las instrucciones. Cantidad total de instrucciones.

Cómo se representan los datos? Tipos de datos Enteros (8, 16, 32 bits, complemento a 2?). Big-endian endian, Little endian. Punto Flotante. BCD, ASCII, UNICODE?

Little vs Big endian endian se refiere a la forma en que la computadora guarda datos multibyte. Por ejemplo cuando se guarda un entero de dos bytes en memoria: - Little endian : : el byte en una posición de memoria menor, es menos significativo. - Big endian : : el byte en una posición de memoria menor, es el más significativo.

Little vs Big endian Ejemplo: entero de dos bytes, Byte 0 menos significativo,, Byte 1 más significativo. Little endian : Base address + 0 = Byte 0 Base address + 1 = Byte 1 Big endian : Base address + 0 = Byte 1 Base address + 1 = Byte 0

Acceso a los datos Donde se Almacenan? Registros Memoria Stack Espacio de I/O Como se acceden? Modos de Direccionamiento

Movimiento de datos (Move( Move,, Load, Store, ) Aritméticas ticas (Add( Add, Sub, ) Lógicas (And( And, Xor, ) I/O. Transferencia de Control (Jump( Jump, Skip, Call ) Específicas Ejemplo: Multimedia Operaciones

Codificación Códigos de operación n (OpCode( OpCode) Representa la operación Operando/s Fuente A realizar sobre estos datos Operando Resultado Pone la respuesta aquí Referencia a la próxima instrucción Cuando termina sigue por aquí

Ejemplo: Marie Instrucción LOAD en el IR: Opcode=1, Cargar en el AC el dato contenido en la dirección 3.

Características de ISAs Tipos típicos t de arquitecturas: 1. Orientada a Stack. 2. Con acumulador. 3. Con registros de propósito general. Los tradeoffs : Simpleza del hardware. Velocidad de ejecución. Facilidad de uso.

Características de ISAs Arquitectura Stack: : las instrucciones y operandos son tomados implícitamente del stack El stack no puede ser accedido de forma aleatoria (sino a través s de un orden). Arquitectura acumulador: En cualquier operación binaria un operando esta implícito (el acumulador) El otro operando suele ser la memoria, generando cierto tráfico en el bus. Arquitectura con registros de propósito general (GPR): los registros pueden ser utilizados en lugar de la memoria Más s rápido r que la de acumulador. Implementaciones eficientes usando compiladores. Instrucciones más m s largas... (2 ó 3 operandos).

Instrucciones (Posibles) Stack Acumulador Registros Movimiento PUSH X LOAD X Mov R1,R2 POP X STORE X Load R1,X Store X,R1 Aritméticas ticas Add Add X Add R1,R2,R3 Sub Sub X Sub R1,R2,R3 Lógicas And And X And R1,R2,R3 Or Or X Or R1,R2,R3 Not Not Not R1, R2 LE Cmp R1,R2 GE Eq Control Jump X Jump X Jump X JumpT X Jump (AC) Jump R JumpF X SkipCond Jump Cond R Call/Ret X Call X/Ret Jump Cond X Call X/R Ret

MARIE Máquina de Acumulador: Representación n binaria, complemento a 2. Intrucciones de tamaño o fijo. Memoria accedida por palabras de 4K. Palabra de 16 bits. Instrucciones de 16 bits, 4 para el código c de operación n y 12 para las direcciones. Una ALU de 16 bits. 7 registros para control y movimiento de datos.

MARIE Registros Visibles: AC: Acumulador 1616 bits Operando implícito en operaciones binarias También n para condiciones. Formato de instrucción n fijo

MARIE OpCode 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 Instrucción JnS X Load X Store X Add X Subt X Input Output Halt SkipCond Cond Jump Dir Clear Addi X Jumpi X Almacena PC en X y Salta a X+1 AC = [X] [X]= AC AC = AC + [X] AC = AC - [X] AC = Entrada de Periférico rico Enviar a un periférico rico contenido AC Detiene la Ejecución Salta una instrucción n si se cumple la condición n (00=>AC<0; 01=>AC=0; 10=>AC>0)) PC = Dir AC = 0 AC = AC + [ [ X ] ] PC = [X]

Stack Machines Las Stack Machines no usan operandos en las instrucciones Salvo PUSH X y POP X que requieren una dirección n de memoria como operando. El resto obtienen los operandos del stack. PUSH y POP operan sólo s con el tope del stack. Operaciones binarias (ej.( ADD, MULT) ) usan los 2 primeros elementos del stack.

Stack Machines Utilizan notación n polaca inversa Jan Lukasiewicz (1878-1956). Notación infija: : Z = X + Y. Notación n postfija: Z = X Y + No necesitan paréntesis! infija Z = (X Y) + (W U), postfija Z = X Y W U +

Comparativa (Asignaciones) Z = X Y + W U Stack PUSH X PUSH Y MULT PUSH W PUSH U MULT ADD POP Z 1 Operando LOAD X MULT Y STORE TEMP LOAD W MULT U ADD TEMP STORE Z Registros 2 Operandos LOAD R1,X MULT R1,Y LOAD R2,W MULT R2,U ADD R1,R2 STORE Z,R1 Registros 3 Operandos MULT R1,X,Y MULT R2,W,U ADD Z,R1,R2

Comparativa (IF) Escribir este programa en diferentes Arquitecturas: if X > 1 do X := X + 1; else Y := Y + 1;

Solución Stack If, Then, Else, 100 Push X 101 Push 1 102 LE / Si X<=1 pone un 1 el el stack 103 JMPT Else / Si 1 va a else. Saca el 1 0 del Stack 104 Push X 105 Push 1 106 Add 107 Pop X / X:=X+1 108 Jump Endif /Salta la parte ELSE 109 Push Y 10A Push 1 10B Add 10C Store Y /Y:= Y + 1 Endif, 10D Halt /Terminar X, 10E DEC? / Espacio para X Y, 10F DEC? / Espacio para Y

Solución n MARIE (Acumulador) If, 100 Load X / AC=[X] 101 Subt One / AC=AC-1 102 Skipcond 600 / Si AC<=0 (X<=1) Saltear 103 Jump Else /Salto a ELSE 104 Load X / AC=[X] Then, 105 Add One /AC=AC+1 106 Store X /X:= X + 1 107 Jump Endif /Salta la parte ELSE Else, 108 Load Y /Load Y 109 Add One /Add 1 10A Store Y /Y:= Y + 1 Endif, 10B Halt /Terminar One, 10C DEC 1 / One = 1 X, 10D DEC? / Espacio para X Y, 10E DEC? / Espacio para Y

Solución n Máquina M Práctica If, 100 Mov R1, [X] 101 CMP R1,1 102 JLE Else Then, 105 Add R1,1 106 Mov [X],R1 /X:= X + 1 Else, 107 Jump Endif /Salta la parte ELSE 108 Mov R1,[Y] 109 Add R1,1 10A Mov [Y],R1 /Y:= Y + 1 Endif, 10B Ret / Aquí termina X, 10C DEC? / Espacio para X Y, 10D DEC? / Espacio para Y

Control Nos permiten alterar la secuencia del programa Fundamental para implementar IF, While, etc Llamadas a procedimientos Como decidimos la alteración n de control? Incondicional Condicial

Flags Registros que nos dan información n de control Carry Overflow, UnderFlow Zero, Negative Se modifican con operaciones aritméticas ticas y lógicas Se utilizan para realizar saltos condicionales JC, JNZ, JZ, etc Porque usar Flags y no directamente preguntar por el valor de los registros o memoria?

Comparativa (Ciclos) Hacer este programa: int A[5]={10,15,20,25,30} Sum=0 i:=0 While(i<5) { Sum=Sum Sum+A[i]; i++; }

Ejemplo Marie Start, Load Num ; Cargo el Contador SkipCond 800 ; Si AC<=0 Fin (Si Jump End Load Sum ; AC=[Sum] Addi PostAct ; AC+=[[PostAct]] Store Sum ; [SUM]=AC Load PostAct ; AC=[PostAct] Add Index ; Store PostAct ; [PosAct]=[PosAct]+Index Load Num ; AC=[Num] Sub One Store Num ; [Num]=[Num]-1 Jump Start End, Halt Vec, Dec 10 ; Num1 =10 Dec 15 ; Cada palabra del array es inicializada Dec 20 Dec 25 Dec 30 PostAct, Hex OffSet Vec ; Aquí hay que poner una dirección Num, Dec 5 ; contador para el loop=5 Sum, Dec 0 ; Suma=0 Index, Dec 1 One, Dec 1

Ejemplo Máquina M Práctica Vec DW 10 ; Num1 =10 DW 15 ; Cada palabra del array es inicializada DW 20 DW 25 DW 30 Num DB 5 ; contador para el loop=5 Sum DB 0 ; Suma=0 MOV R2, Vec ; Apunta al Vector MOV R1, 0 ; Acumulador MOV R3, R2 ; inicializa el offset (Dentro del array) MOV R4, [Num] ; R4 es el registro contador Start: MOV R5, [R3] ; El dato del vector (R5 = [ [ Vec [i] ] ] ADD R1,R5 ADD R3, 1 ; Avanza dentro del vector SUB R4,1 ; Decrementa el contador JNZ Start End: Mov R5,Sum Mov [R5],R1 ; Grabo el resultado en Sum

Ejemplo Intel.DATA Num1 EQU 10 ; Num1 =10 EQU 15 ; Cada palabra del array es inicializada EQU 20 EQU 25 EQU 30 Num DB 5 ; contador para el loop=5 Sum DB 0 ; Suma=0.CODE MOV EBX, offset Num1 ; Carga la direccion de Num1 en EBX MOV EAX, 0 ; inicializa la suma MOV EDI, 0 ; inicializa el offset (Dentro del array) MOV ECX, Num ; ECX es el registro contador Start: ADD EAX, [EBX + EDI * 4] ; Suma el EBX-esimo numero a EAX INC EDI ; Incrementa el offset LOOP Start ; CX=CX-1, SI CX>0 Vuelve a Start MOV Sum, EAX ; Guarda el resulatdo en Sum

Subrutinas Reutilización n de códigoc Funciones, Procedimientos, MétodosM Programa principal Subrutina Llamado a Subrutina Llamado a Subrutina j j+1

Subrutinas CALL subrutina PC= subrutina Pero como guardamos la dirección n de retorno? (el viejo PC). Y Los argumentos?? En registros? Y si lo usamos? En memoria? Por ejemplo al comienzo de la rutina Recursión? Mejor usar un Stack! Otro enfoque: Ventana de registros

Código en llamador: CALL subrutina Subrutinas Esto implica (PUSH PC, PC = rutina) Código en subrutina RET Esto implica (POP PC)

Subrutinas Ejemplo Se desea hacer un programa que realice las siguientes operaciones: [0100] [0100] + 5 [0200] [0200] + 5 [0204] [0204] + 5 Que pasa si estábamos usando R2?? Programa principal Subrutina MOV R1,0100 SUM5: MOV R2,[X] CALL SUM5 ADD R2,5 MOV R1,0200 MOV [X],R2 CALL SUM5 RET LOAD R1,0204 CALL SUM5

Subrutinas Ejemplo Se desea hacer un programa que realice las siguientes operaciones: [0100] [0100] + 5 [0200] [0200] + 5 [0204] [0204] + 5 Programa principal Subrutina MOV R1,0100 SUM5: PUSH R2 CALL SUM5 MOV R2,[X] MOV R1,0200 ADD R2,5 CALL SUM5 MOV [X],R2 LOAD R1,0204 POP R2 CALL SUM5 RET En general, los registros que usan las rutinas deben ser salvados previamente en el Stack

Bloque de Activación Contiene toda la información necesaria para la ejecución de la subrutina Generalmente armado por el compilador de un lenguaje de alto nivel SP FP Variables Locales Registros Salvados Dirección de Retorno Argumentos El puntero FP, a diferencia de SP, se mantiene fijo durante toda la ejecución del procedimiento, brindando un registro base estable para acceder a parámetros y variables.

Ejemplo void main() { 1: P1(1) 2:return } void P1(int n) { int i,j; i = 5; 11: : P2(10,j); 12: : j=i+1; 15: return; } void P2(int c,d) { int a,b; 21: return; }

Cuando main llama a P1 SP FP j (local) i (local) Old FP Dir 2 (de Main) n=1 (arg( arg) SP FP Cuando P1 llama a P2 b (local) a (local) Old FP Dir 12 (de P1) d=5 (arg( arg) c=10 (arg( arg) j I Old FP Dir 2 (de Main) n=1 1. El procedimiento llamador se encarga de pushear los parámetros en el Stack 2. El call pushea el PC en el Stack 3. Antes de salir el llamado se ocupa de limpiar del Stack las variables locales y el FP 4. El return asigna al PC=la dirección que esta al tope del stack y la elimina 5. El llamador libera los parámetros

Subrutinas (Ventana de registros) Evitar el uso del Stack Idea: tener muchos registros, pero permitir usar unos pocos Asignar registros a parámetros, argumentos y variables locales Al hacer un Call deslizarlos

Enfoques CISC (Complex( Instruction Set Computer) Instrucciones que realizan tareas complejas RISC (Reduced( Instruction Set Computer) Instrucciones que realizan operaciones sencillas MISC (Minimal( Instruction Set Computer) Mínimo de operaciones necesarias OISC (One( Instruction Set Computer) Una única instrucción

Ejemplo CISC (Intel) Prefijo OpCode 0xF3 0xA4 Instrucción: REP MOVS Copia CX bytes de DS:SI, a ES:DI. MOVS: Copia el dato en DS:SI, a ES:DI. Dependiendo de un flag, SI y DI son incrementados (+1) o decrementados (-1) REP decrementa CX y hace que se repita la operación hasta que CX llegue a 0

Ejemplo RISC La misma instrucción implementada en una MIPS: Asumamos que en $s3 esta el fuente, $s4 el destino y $s5 es el contador bucle: lb $t0, 0 ($s3) ; t0 = mem[s3] sb $t0, 0 $s4, ; mem[s4] = t0 add $s3,$s3,1 add $s4,$s4,1 sub $s5,$s5,1 be $s5,0,fin j bucle fin:

ISAs La mayoría a de los sistemas actuales son GPR (general purpose registers). 3 tipos de sistemas: Memoria-Memoria donde 2 o 3 operandos pueden estar en memoria. Registro-Memoria donde al menos un operando es un registro Load-Store Store,, donde las operaciones son sólo s entre registros. El número n de operandos y de registros disponibles afectan directamente el tamaño o de la instrucción

Referencias Capítulo 5 Tanenbaum Capitulo 4 y 5 Null Capitulo 10 Stallings http://www.cs.uiowa.edu/~jones/arch/risc/ Articulo sobre OISC