El procesador, la ruta de datos y el control (I Parte)

Slides:



Advertisements
Presentaciones similares
Arquitectura RISC & CISC y DSP
Advertisements

PRIMERA SECCION TEMA: BALANCE DE LA POLITICA PUBLICA PARA LA ATENCION INTEGRAL AL DESPLAZAMIENTO FORZADO EN COLOMBIA ENERO 2004 – ABRIL 2007 PARTE I ANALI8SIS.
Conocimiento, Uso y Evaluación de Medicamentos Genéricos
El modelo de Von Neumann
Diseño de la ruta de datos monociclo para la arquitectura MIPS
DISEÑO DE TRANSFERENCIA ENTRE REGISTROS
1 LA UTILIZACION DE LAS TIC EN LAS MICROEMPRESAS GALLEGAS. AÑO mayo 2005.
1 LA UTILIZACION DE LAS TIC EN LAS PYMES GALLEGAS AÑO de Junio de 2005.
TEMA 2 MÚLTIPLOS Y DIVISORES
01- OFERTA FORMATIVA v.2 Noviembre 2009 SIES – SISTEMA INTEGRADO DE EDUCACIÓN SUPERIOR.
UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
CLASE 3 SOFTWARE DEL MICROPROCESADOR
ARQUITECTURA DE COMPUTADORES - VON NEUMANN MODEL
William Shakespeare ( greg.), fue un dramaturgo, poeta y actor inglés. Conocido en ocasiones como el Bardo de Avon (o.
1 Reporte Componente Impacto Por Orden Territorial Por Departamento No Disponible ND *Los indicadores para el año 2008 no fueron calculados.
Grupo de Sequía del Servicio Meteorológico Nacional
Parte 3. Descripción del código de una función 1.
Vocabulario querer comerlo -paja por supuesto - madera
FUNCIONES DE UNA VARIABLE REAL
Química U.2 Unión entre átomos y propiedades de las sustancias
Indicadores CNEP Escuela
¡Primero mira fijo a la bruja!
Circuitos Digitales II
Arquitectura de Computadores
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
El procesador: la ruta de datos y el control (II Parte)
INTRODUCCIÓN A LA PROGRAMACIÓN
EL Sistemas Digitales Ing. José Alberto Díaz García Escuela de Ingeniería Electrónica Arquitectura Segmentada Pipeline (Segmentación)
1. Datos prensa. Fuente: ACEM
Arquitectura de Conjunto de Instrucciones (ISA)
By: Nicholas, Rayna, Nathaniel, Calvin
Los números. Del 0 al 100.
Composición Interna de un Procesador
1. 3 ATENCIÓN ELOGIO EXTINCIÓN ¿POR QUÉ SE MANTIENE LA CONDUCTA? Análisis de: 9.
Vocabulario: (Los números)
uno cero dos seis siete nueve Los Números DIEZ cinco ocho tres
Los Numeros.
SUCESIONES Y PROGRESIONES.
Facultad de Ingeniería Carrera de Ingeniería Industrial
Vocabulario lonchera perseguir valiente simpático/a menear miedo
Estructuras de control
CLASE 11.
1 8 de febrero del Chapter 5 Encoding 3 Figure 5-1 Different Conversion Schemes.

Direcciones físicas y direcciones virtuales (lógicas)
TRADUCTOR DE UN PROGRAMA

Unidad 2: Organización del CPU
Instrucciones: FORMATO DE INSTRUCCIONES
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
Conceptos Arquitectónicos del computador
Diseño de la Unidad de Control Multiciclo: Microprogramación
Tema 2: Lenguaje máquina
Arquitectura de Von Neumann
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 11.
“Organización y Arquitectura de Computadores” William Stallings
El procesador Diseño del control.
CLASE 14.
Capítulo 4 CPU y la memoria.
Organización del Computador I Verano Control Multiciclo Basado en el capítulo 5 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
ARQUICTECTURA DE SERVIDORES
Son los atributos de un sistema que son visibles para un programador, es decir aquellos atributos que impactan directamente en la ejecución lógica de un.
Principio unidad 1.
ARQUITECTURA DE COMPUTADORES
El microprocesador y su arquitectura
El Computador. Computador. Máquina compuesta de elementos físicos (en su mayoría de origen electrónico) capaz de aceptar unos datos de entrada, realizar.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Arquitectura de Computadoras (Taller) Semestre II de 2008.
Transcripción de la presentación:

El procesador, la ruta de datos y el control (I Parte) Capítulo 3 El procesador, la ruta de datos y el control (I Parte)

Definición de arquitectura de computadores 1950 a 1960 Abarcaba el tema de aritmética de computadores. 1970 a mediados de los 1980 abarcaba el tema de diseño de instrucciones especialmente la arquitectura ISA y sus correspondientes compiladores. 1990 en esta época se diseñaban los CPU, sistema de memoria, sistema de entrada/salida, los multiprocesadores y las redes. 2000 hasta nuestros días, se abarcan las arquitecturas de propósito especial, funcionalidad reconfigurable, consideraciones especiales para el bajo consumo y el procesamiento móvil.

Arquitectura de computadores Con el término “Arquitectura de Computadores” nos referimos a una especificación computacional detallada, comunicación, y elementos para almacenar datos (hardware) de un sistema computador, como estos componentes interactúan (organización de la máquina), y como se controlan (conjunto de instrucciones). La arquitectura de la máquina determina, cuales cálculos pueden realizarse eficientemente, cuales formatos de organización de datos y diseño de programas se pueden realizar óptimamente. Este término fue aplicado por primera vez por Gene Amdahl, G. Anne Blaauw y Frederick Brooks, Jr. (diseñadores del IBM System/360), en 1964. En las décadas de los 70 y 80, los arquitectos de computadores se concentraron en el conjunto de instrucciones. En el presente los diseñadores se enfrentan al reto de implementar procesadores eficientes, diseñar sistemas de comunicación entre los diferentes niveles en la jerarquía de memorias, de integrar múltiples procesadores en un simple diseño y diseñar procesadores para aplicaciones específicas.

DATOS SOBRE TENDENCIAS

1971: INTEL 4004 Primer procesador Proceso de 10 micrones 2300 transistores Bus de 4 bits 640 bytes de memoria 750 Khz Die de 12 mm2

2000: Intel Pentium 4 Proceso de 0.18 micras 42 millones de transistores Die de 217 mm2 Bus de 64 bits 8 KBytes de memoria cache 450 MHz

2004: Intel Itanium 2 Proceso de 0.13 micras 592 millones de transistores Die de 432 mm2 Bus de 128 bits 1.4 GHz

2015: Proyecciones Proceso de 0.025 micras 7 billones de transistores Die de 310 mm2 33 GHz en el chip 29 GHz fuera del chip

COMPARACIÓN

DIMENSIONES

AREA Y RETARDOS

CAPACIDAD DEL CHIP

TENDENCIA DE RENDIMIENTO

RETARDO POR CONDUCTORES

ANCHO DE BANDA POR PIN

POTENCIA RENDIMIENTO

DRAMS

TENDENCIA DE LOS MICROPROCESADORES

RETARDO POR INTERCONECCION 0.65 1989 0.5 1992 0.35 1995 0.25 1998 0.18 2001 0.13 2004 0.1 2007 5 10 15 20 25 30 35 40 Gate delay Interconnect delay Source: SIA Roadmap 1997

CONCEPTOS SOBRE ARQUITECTURAS DE PROCESADORES

Arquitectura básica de un procesador ALU ADD AH BH CH AL BL CL DL BP DI SI SP DH CS ES SS DS IP Generador de dir y Controlador de bus 1 2 3 4 5 6 Bus interno de datos banderas EU Cola de instrucciones BIU Bus de datos Bus de direcciones UNIDAD DE INTERPRETACIÓN

La unidad de cálculo (ALU) Se realizan las operaciones aritméticas y lógicas. Se encuentra el registro de estado, donde se encuentran las banderas que son accionadas después de cada una de las operaciones. Es operada por medio de la unidad de control por un grupo de primitivas de control que seleccionan la función a realizar, así como la fuente y el destino de los datos. ALU ADD AH BH CH AL BL CL DL BP DI SI SP DH CS ES SS DS IP Generador de dir y Controlador de bus 1 2 3 4 5 6 Bus interno de datos banderas EU Cola de instrucciones BIU Bus de datos Bus de direcciones UNIDAD DE INTERPRETACIÓN

Los registros de trabajo Los registros de trabajo son medios de almacenamiento temporal Para el caso de la arquitectura IA86, específicamente para el microprocesador 8086/88 los registros de trabajo de 16 bits pueden ser: AX, BX, CX, DX , los cuales están compuestos por AH, AL; BH, BL; CH, CL; DH, DL; los cuales son de 8 bits cada uno. Se utilizan dependiendo de la acción a realizar. Así por ejemplo si es necesario la utilización de una cuenta se utiliza el registro CX. ALU ADD AH BH CH AL BL CL DL BP DI SI SP DH CS ES SS DS IP Generador de dir y Controlador de bus 1 2 3 4 5 6 Bus interno de datos banderas EU Cola de instrucciones BIU Bus de datos Bus de direcciones UNIDAD DE INTERPRETACIÓN

UNIDAD DE INTERPRETACIÓN La interfaz con el bus Esta unidad es la capaz de realiza el cálculo para la próxima dirección. La cual se entrega a los diferentes buses de salida como lo son el de direcciones, datos y control. ALU ADD AH BH CH AL BL CL DL BP DI SI SP DH CS ES SS DS IP Generador de dir y Controlador de bus 1 2 3 4 5 6 Bus interno de datos banderas EU Cola de instrucciones BIU Bus de datos Bus de direcciones UNIDAD DE INTERPRETACIÓN

La unidad de interpretación de instrucciones En esta unidad se realiza la interpretación del código de operación, y se ejecutan todas las primitivas de control necesarias para dar servicio a la instrucción. También se cuenta con una unidad de prueba de señales para generar interrupciones, generar saltos incondicionales y la prueba de banderas. Además se generan todas las primitivas de control necesarias para que la arquitectura funcione correctamente. ALU ADD AH BH CH AL BL CL DL BP DI SI SP DH CS ES SS DS IP Generador de dir y Controlador de bus 1 2 3 4 5 6 Bus interno de datos banderas EU Cola de instrucciones BIU Bus de datos Bus de direcciones UNIDAD DE INTERPRETACIÓN

Ejemplo de una máquina multinivel Alto nivel Nivel 5 Traducción (compilador) Lenguaje ensamblador Nivel 4 Traducción (ensamblador) Sistema operativo Interpretación parcial (Sistema Operativo) Nivel 3 Interpretación (microprograma) o ejecución directa Conjunto de instrucciones Nivel 2 Microarquitectura Nivel 1 Hardware Lógica digital Nivel 0

Ejemplo de una máquina multinivel temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; Alto nivel Nivel 5 Lenguaje ensamblador lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) Nivel 4 Cada arquitectura del computador tiene su propio lenguaje ensamblador los lenguajes ensambladores tienen a ser de bajo nivel, donde algunos todavía escribimos código. Mucho de ese código se escribe en HLLs y luego compilado. El compilador es un programa que automáticamente convierte HLL a ensamblador.

Ejemplo de una máquina multinivel Alto nivel A este nivel algunas de las funciones del sistema operativo pueden ser ejecutadas como por ejemplo las interrupciones tipo 21H en el caso del procesador IAX86, lo que se conoce como llamados al sistema operativo. También a este nivel puede dársele el control al sistema operativo para que administre el programa que hemos realizado, en este caso el usuario pierde el control sobre la ubicación del programa en la arquitectura del computador Nivel 5 Lenguaje ensamblador Nivel 4 Sistema operativo Nivel 3

Ejemplo de una máquina multinivel Alto nivel Nivel 5 Lenguaje ensamblador Nivel 4 Sistema operativo Nivel 3 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 Conjunto de instrucciones Nivel 2 A este nivel las instrucciones han sido compiladas para el nivel de interpretación del procesador, corresponden a una cadena de unos y ceros que representan las órdenes y los datos que se quieren ejecutar.

Ejemplo de una máquina multinivel Alto nivel Para estos últimos dos niveles las instrucciones han sido interpretadas y se ejecutan señales eléctricas que manejan la microarquitectura donde se ejecutaran las órdenes. Esto es funciones lógicas a nivel de compuertas o transistores que pasan de la zona de saturación a la de corte. Nivel 5 Lenguaje ensamblador Nivel 4 Sistema operativo Nivel 3 Conjunto de instrucciones Nivel 2 Microarquitectura Nivel 1 Lógica digital Nivel 0

¿Qué son las instrucciones? software Conjunto de instrucciones hardware

¿Qué son las instrucciones? software hardware CONJUNTO DE INSTRUCCIONES Aplicaciones (iTunes) Sistema operativo (MS-DOS, Windows, Linux, etc.) Compilador Ensamblador Procesador Memoria Sistema de I/O Ruta de datos y control Control ALU I Reg Mem Diseño digital I1 O2 O1 I2 Diseño del circuito Vdd I1 O1 Transistores I1 O1 Vdd

Representación de capas Programa en alto nivel temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; Programa: Compilador Programa en lenguaje ensamblador lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) Programa en ensamblador: Ensamblador Lenguaje máquina Programa en memoria 0000 1001 1100 0110 1010 1111 0101 1000 1010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 Código objeto de máquina Código de máquina ejecutable Linker Loader Programa en lenguaje máquina: Arquitectura del conjunto de instrucciones Especificación de las señales de control Interpretación de máquina ALUOP[0:3]  InstReg[9:11] & MASK

Jerarquía en el diseño de computadores

Ciclo general de ejecución de instrucciones Búsqueda de instrucción Obtener la instrucción del programa almacenado Decodificación de la instrucción Determinar las acciones requeridas y el tamaño de la instrucción Búsqueda del operando Localizar y obtener el operando Ejecución Calcular el resultado o estado Almacenar el resultado Depositar el resultado en el medio de almacenamiento para un próximo uso Próxima instrucción Determinar la siguiente instrucción

Formato de Instrucciones Las instrucciones consisten de un código de operación (opcode) y operandos. El opcode identifica la operación a realizar Los operandos identifican los datos a utilizar, y el lugar donde se almacenará el resultado. Todas las instrucciones tienen código de operación, pero pueden o no tener operandos.

Formato de instrucciones Las instrucciones pueden variar en su largo Si todas las instrucciones tienen el mismo largo simplifica el proceso de decodificación de instrucciones, sin embargo se puede ver como un desperdicio de espacio. Si todas las instrucciones tienen diferente largo se complica el proceso de decodificación pero permite un uso más eficiente de la memoria.

Criterios de diseño de instrucciones El formato de las instrucciones es un aspecto de mucha importancia. En el desarrollo de la arquitectura de los computadores, el diseño a nivel de lógica digital y de la microarquitectura tienen un mínimo impacto en la interfaz del computador a nivel de hardware y software. El impacto es mínimo porque los diseños a bajo nivel se ocultan por el diseño de las instrucciones. Sin embargo los cambios en el nivel del conjunto de instrucciones, y particularmente en el formato de las instrucciones, hace que algunos programas no funcionen correctamente en las nuevas generaciones de computadores.

Criterio de diseño para el formato de las instrucciones El primer aspecto en el diseño de instrucciones se relaciona con su tamaño. Entre más pequeño es el formato de las instrucciones, más rápido se pueden leer de memoria. Siempre tenemos un ancho de banda de memoria limitado. Sin embargo para obtener pequeñas instrucciones se presenta un compromiso: Códigos de operación pequeños Operandos pequeños o escasos Se cuenta con mayor complejidad en la decodificación.

Criterio de diseño para el formato de las instrucciones Códigos de operación pequeños El tamaño del espacio para el código de operación limita el número de operaciones que se pueden realizar. Operandos pequeños Esta relacionado con la cantidad de registros que se pueden direccionar. Esta relacionado con la cantidad de memoria que se puede direccionar. Pocos operandos Sin operandos el trabajo se debe realizar utilizando la pila Utilizar un operando y trabajar con el operador Utilizar dos operandos y tener el resultado en la entrada Utilizar tres operandos. Formatos más comprimidos Mayor complejidad en la decodificación Menos potencial para crecer

Soluciones de diseño para el formato de las instrucciones Una vez que sabemos la cantidad de códigos de operación que se necesitan (basados en el número de operaciones que se quieren) y el número y tamaño de los operandos, luego debemos saber la cantidad de bits que se requieren para el formato de la instrucción. Si tenemos 256 operaciones, entonces necesitamos 8 bits para representar los códigos de operación. Si contamos con instrucciones con tres operandos, donde cada operando puede especificar direcciones de 32 bits, entonces necesitamos 96 bits para representar los operandos. Por lo tanto, la unidad decodificadora utilizaría instrucciones de 104 bits. Claramente no es un buen diseño a no ser de que se cuente con memoria extremadamente rápida. La solución es utilizar códigos de operación expandibles.

Códigos de operación expandibles El código de operación expandible es un opcode que toma más espacio cuando se requiere de menos espacio para almacenar los operandos. La expansión de los opcodes tiene la ventaja en el hecho de que operaciones diferentes, tienen requerimientos diferentes para sus operandos NOP no necesita operandos GOTO necesita un operando Operaciones de registro a registro necesitan de direcciones para operandos más pequeñas que operaciones de memoria a memoria. Por lo tanto organice los operandos tal que se pueda realizar el compromiso entre el espacio de los códigos de operaciones y el espacio de los operandos.

Códigos de operación expandibles EJEMPLO: Considere el siguiente esquema basado en una palabra de 16 bits en donde se utilizan 4 bits para la dirección. Una solución con un código de operación fijo, localiza 4 bits para el código de operación y 4 bits para cada uno de los tres operandos Esta solución se limita a 16 códigos de operación. Una solución utilizando los códigos expandibles, trata de incrementar el número de códigos de operación organizando el formato de las instrucciones basado en el tamaño de los operandos.

Solución utilizando la expansión de código Instrucciones con tres operandos Bits para el opcode: 12-15 Rango del opcode: 0000 hasta 1110 Número de instrucciones: 15 Bits de datos: 0-11 Instrucciones con dos operandos Bits para el opcode: 8-15 Rango del opcode: 1111 0000 hasta 1111 1110 Bits de datos: 0-7

Solución con la expansión del opcode Instrucciones con un operando Bits para el opcode: 4 - 15 Rango del opcode: 1111 1111 hasta 1111 1111 1110 Número de instrucciones: 15 Bits de datos: 0-3 Instrucciones sin operandos Bits para el opcode: 0 - 15 Rango del opcode: 1111 1111 1111 0000 hasta 1111 1111 1111 1111 Número de instrucciones: 16 Bits de datos: ninguno

Formato de instrucciones para PENTIUM II Altamente complejas e irregulares Espacios para seis variables, cinco de las cuales son opcionales La complejidad e irregularidad es debida a la necesidad de mantener compatibilidad con la familia 80X86

Modelos de instrucciones CISC (Complex Instruction Set Computer) RISC (Reduced Instruction Set Computer) CRISC (Complex Reduced Instruction Set Computer) EPIC (Explicitly Parallel Instruction Computing )

CISC Se enfatiza en hacer más en cada instrucción. Motivado por el alto costo de la memoria y la capacidad de los discos duros. Cuando se introdujo el M6800: 16K RAM = $500, 40M disco duro = $ 55, Cuando se introdujo el MC68000: 64K RAM = $200, 10M HD = $5,000 Gran variedad de modos de direccionamiento 14 en el MC68000, 25 en MC68020 Un número de modos de instrucciones para la posición y número de operandos. El VAX tiene desde 0 hasta 3 instrucciones para direcciones. Largo de las instrucciones variable.

RISC Se enfatiza en reducir el número y la complejidad de las instrucciones. CPI reducido. La meta por lo menos una instrucción por ciclo de reloj. Diseñadas para una arquitectura de un procesador segmentado. El largo de las instrucciones es el mismo. Solo las instrucciones de cargue y almacene accesan la memoria. Los modos de direccionamiento se han simplificado. Generalmente limitado a: inmediato, indirecto por registro, desplazamiento con registro, indexado. Las cargas y los saltos se retardo

EPIC Pueden cambiar el número de canales que usan de generación en generación y aún conservar la compatibilidad con las aplicaciones existentes. La información grabada en el grupo de instrucciones le dice explícitamente al procesador cuales de las instrucciones siguientes no tienen dependencia de los datos y por ende pueden ser ejecutadas simultáneamente.

Formato de Instrucciones para el caso del 8088/86

Ejecución de instrucciones

Ejecución de instrucciones

Criterios para el diseño de instrucciones “Encontrar un lenguaje que haga fácil construir el hardware y el compilador maximizando su rendimiento y minimizando el costo” Uno de los aspectos relacionados con hacer un hardware sencillo es diseñar instrucciones que sean del mismo largo. El HW con un número variable de operandos es más complejo.

PRINCIPIOS DE DISEÑO 1. La simplicidad favorece la regularidad. 2. Entre más pequeño es más rápido 3. Haga el caso común más rápido 4. Un buen diseño demanda un buen compromiso

LA SIMPLICIDAD FAVORECE LA REGULARIDAD Entre más regulares sean las instrucciones más simple será el HW Nuevamente si se cuenta con instrucciones de largo variable el HW será más complejo. Mientras que si las instrucciones son todas del mismo largo se pueden generalizar algunas partes del diseño eléctrico.

ENTRE MÁS PEQUEÑOS ES MÁS RÁPIDO Si el sistema cuenta con una gran cantidad de registros se incrementa el tiempo de ciclo del reloj, porque a las señales eléctricas le toman más tiempo cuando deben de viajar más rápido. En este caso entre menos registros se cuente en la arquitectura el tiempo de ejecución de las instrucciones disminuye.

HAGA EL CASO COMÚN MÁS RÁPIDO Para este caso se deben analizar los aspectos comunes en las instrucciones y una vez detectado, se debe invertir tiempo en rediseñarlo para que de tal forma sea más pequeño y así se realice la operación en un menor tiempo. Un ejemplo puede ser realizar el fetch de una instrucción, o un análisis de constantes.

UN BUEN DISEÑO DEMANDA UN BUEN COMPROMISO Aquí el compromiso es realizar las mejoras necesarias para que si se quieren instrucciones de un mismo largo, ¿Cuáles deben ser los compromisos que se deben realizar, en los modos de direccionamiento o en el HW para que el sistema se eficiente?

ESPECIFICACIONES DE DISEÑO Para el desarrollo de este tema se utilizaran instrucciones del tipo MIPS, esto con el fin de seguir el libro de Patterson.

Las instrucciones son de 32 bits de largo. Hay dos tipos de instrucciones: Las de registro o tipo R Las tipo I (inmediato) Las tipo J (utilizadas para producir saltos)

INSTRUCCIONES TIPO “R” opcode corresponde a la operación básica de la instrucción, tradicionalmente llamado opcode. Normalmente corresponde a 0 para las instrucciones tipo R. rs el primer registro fuente (operando) rt el segundo registro fuente (operando) rd el registro destino, recibirá el resultado de la operación. shamt cantidad de desplazamientos, en la mayoría de las instrucciones este espacio contiene un 0. funct función, este campo combinado con el “opcode” selecciona las variaciones específicas del código de la función a realizar. EJEMPLO: add $t0, $s1, $s2

INSTRUCCIONES TIPO “R” Este tipo de formato para instrucciones se utiliza para todas las que no accesen memoria o sean de control de programa.

INSTRUCCIONES TIPO I Se utiliza la I para representar la forma inmediata Ejemplo: lw $t0, 32($s2) Este tipo de instrucción se utiliza para el manejo de memoria.

INSTRUCCIONES TIPO J Es el formato para las instrucciones de salto ya sean condicionales o incondicionales La dirección no es de 32 bits.

Modos de direccionamiento Esta máquina con instrucciones MIPS tiene 4 modos de direccionamiento: Por registro Por desplazamiento Inmediato Relativo al PC Pseudodirecto

Direccionamiento por registro En esta categoría se incluyen todas aquellas instrucciones en donde se utiliza un registro en su sintaxis. El operando es el contenido de un registro.

Direccionamiento base o desplazamiento En este caso el operando se encuentra en una posición de memoria cuya dirección se forma por la suma del contenido de un registro y una constante contenida en el formato de la instrucción.

Direccionamiento inmediato El operando es una constante la cual se encuentra en el contenido de la instrucción.

Direccionamiento relativo al PC La dirección del operando se forma de la suma del contenido del PC y la dirección que aparece en el formato de la instrucción. Es la combinación de un registro base y la dirección en la operación de salto. PC=registro+la dirección de salto La referencia es el contador de programa PC Ejemplos: saltos condicionales e incondicionales.

Direccionamiento pseudodirecto Se utiliza principalmente para los saltos. La dirección de salto es de 26 bits del código de instrucción, concatenado con los bits altos del contenido del contador de programa PC.

Resumen del conjunto de instrucciones

Resumen del conjunto de instrucciones

CODIFICACIÓN DE LAS INSTRUCCIONES

Jerarquía de traducción

Proceso de diseño del CPU En el proceso de diseño de un procesador se deben conocer los siguientes aspectos: Arquitectura del conjunto de instrucciones Procesador Ruta de datos Ruta de control Reg ALU Mem Deco Secuenciador Circuitos lógicos

Diseño del CPU A Memoria B C Lógica de salida E D Una forma de diseñar la Unidad de Control o de interpretación de instrucciones es mediante el diseño de máquinas de estado. Lógica de próximo estado Memoria Lógica de salida A B C D E

MAQUINAS DE ESTADO Máquina de Mealy Máquina de Moore Máquina tipo C Máquina microprogramada

Máquina Clase A, Mealy

Máquina Clase B, Moore

Máquina Clase C, Moore sin registro de salidas

Máquina Clase E

Máquina Clase D

Detalles para la implementación Dos tipos de unidades funcionales Elementos que operan en la ruta de los datos (combinacional) Elementos que contienen estados (secuenciales)

TIPOS DE MÁQUINAS Máquinas cuya operación se realiza en un solo ciclo de reloj Máquinas cuya operación se realiza en varios ciclos de reloj

El reloj es una señal periódica: Señales de Reloj El reloj es una señal periódica: El disparo por borde permite a los datos ser leídos de un registro y almacenados en un registro todo en un solo ciclo de reloj Cualquier valor almacenado en la máquina se actualiza solo Borde creciente Borde decreciente

Operación en su sólo ciclo Todas las operaciones en lógica combinacional deben realizarse en un ciclo de reloj. Un ciclo de reloj Se actualiza aquí Registro Lógica combinacional (ALU) PROBLEMA: El ciclo del reloj debe ser muy largo

Operación con múltiples ciclos Los cambios ocurren en el borde creciente los momentos seleccionados escritura escritura Registro Combinational Logic (ALU) Requiere de señales de control adicionales

Concepto de un solo ciclo La ruta de datos en el CPU se encuentra entre los registros – el pulso de reloj determina cuando los registros cambian. Retardo en la lógica combinacional Retardo en carga de registros

La visión abstracta Contador de programa: próxima instrucción Memoria de instrucciones Archivo de registros Memoria de datos Estructura del bus: transferencia de información

Construcción de la ruta de datos Memoria para instrucciones Contenga sólo instrucciones Contador de programa Apunte a la próxima instrucción Unidad aritmética y lógica Solo un sumador

Instrucciones y el PC Incrementa: suma 4 al PC para obtener la dirección de la próxima instrucción. Necesita de extensiones para ejecutar saltos.

Registros y ALU Archivo de registros con el fin de ejecutar instrucciones con direccionamiento por registro La unidad lógica y aritmética se puede diseñar de una forma muy similar al circuito integrado 74181

Agregando la memoria de datos Transferencia de direcciones a memoria Transferencia de los datos al archivo de registros Unidad de extensión de signo para el cálculo de la dirección.

Ruta de datos para el salto PC+4 + extensión del signo y dirección desplazada

Conectando las unidades Archivo de registros ALU para operandos y cálculos de direcciones Memoria de datos

Agregando la unidad de búsqueda de instrucción La unidad de búsqueda de instrucción provee la instrucción.

Agregando la unidad de salto Se pueden manejar todas la instrucciones básicas

EJERCICIO Realice las modificaciones de HW necesarias para que esta arquitectura que se muestra a continuación realice una instrucción que SUME dos operados, uno almacenado en un registro, otro almacenado en una dirección de memoria y que el resultado se almacene en un registro

EJERCICIO Cont

Procesador de un solo ciclo ADD +1 ¿Porqué esta esto aquí? M U X 1 ADD R1 ID R2 ID WR ID otro Registros D R1id WRid R2id P C Memoria Para Instrucciones ALU M U X 1 M U X 1 ¿Porqué esto aquí? Contador de programa Direcciones de memoria Incrementar M U X 1 Addr D Memoria Para Datos Campos de instrucciones – Registros con puertos duales Ruta de datos - ALU Memoria principal para datos

Acción de un procesador de un solo ciclo Registros D R1id WRid R2id P C ADD Memoria De instrucciones ALU Datos M U X 1 Addr Clk Campo de la dirr Reg Read Campo de Dirr Datos NOP Write Escribir datos a un registro 1 Búsqueda de instrucción – Requiere “Read” Actualice el PC – Requiere “0” Mux de dirr Decodifique la Instrucción Seleccione Reg Addr Pase la dirección de los Datos 1 Pase la dirección de datos por la ALU Read Lea los datos Envié los datos a los registros Ahora los relojes en el sistema Escriba la instrucción en el registro

Temporización de un solo ciclo Ciclo de reloj requerido RELOJ I Memoria lectura PC Mux Reg Mux ALU Mux ALU Op NOP D Memoria Data Mux 1 Reg Ctrl escritura

Control básico Repaso de las funciones de la ALU/líneas de control. Bits de control de la ALU: origen de 00: suma (carga o almacena una palabra) 01: resta (salta si es igual) 10: operaciones de acuerdo al valor de la función (instrucciones con direccionamiento por registro)

Control de la ALU

Control central Código de operación: Op [31-26] Registros de lectura: rs [25-21], rt [20-16] Registro base (LW, SW): rs[25-21] Registro destino Cargue: rt[20-16] Tipo R: rd[15-11] Requiere de un multiplexor para indicar el número del registro en el que se va a escribir

Ruta de datos extendida Multiplexores para la selección de escritura en registros Todas las líneas de control

RESUMEN DE LAS LINEAS DE CONTROL REGDEST: fuente del registro destino para la operación REGWRITE: habilita la escritura a un registro del archivo ALUSRC: fuente del segundo operando de la ALU, puede ser un registro o parte de la instrucción PCSRC: fuente del PC, (incremente[POC+4] o salta) MEMREAD/MEMWRITE: lectura o escritura de memoria MEMTOREG: fuente de escritura de un registro

Ruta de datos y control

Operación de la ruta de datos Ejemplo: Instrucción tipo registro Búsqueda de instrucción e incremento del PC Lectura de registros Procesamiento de los datos en la ALU Escritura del resultado en el archivo de registros

EJEMPLO DE INSTRUCCIÓN TIPO R

EJEMPLO DE EJECUCION Lw $3, offset ($2) Beq $10, $11, offset Se busca la instrucción en memoria, incrementa el PC Lee el valor del registro $2 Calcula la dirección final Utiliza la dirección para direccionar la memoria Escribir el dato en el file de registros Beq $10, $11, offset Busca la instrucción en memoria, incrementa el PC Lee los dos valores de los registros ($10,$11) Resta los valores, calcula la dirección de salto Utiliza la señal de cero para determinar el salto o la etiqueta.

Finalización del control Códigos de operación en decimal Códigos de operación en binario

Funciones de control

Implementación Seleccione la correcta Lógica PLA ROM Etc....

Instrucción de salto Realizar una extensión de la arquitectura que se está tratando Tiene el siguiente formato Instrucción Dirección

Arquitectura con Jump

Limitaciones de la solución con un solo ciclo El tiempo de acceso para varias operaciones varía Acceso a memoria 10 ns Acceso a registros 2 ns Add 3 ns Sub 3.5 ns Multiplicación 20 ns Multiplicación en PF 24 ns Funciones transcendentales 40 ns Tiempo depende de la implementación El módulo más lento define la duración del ciclo

EJEMPLO Lista de acciones por instrucción Número de ciclos por instrucción

Tiempo de ciclo de reloj del CPU es de: 18 ns Ejemplo cont. Probabilidades Formato 49% 16 ns Load 22% 24 ns Store 11% 22 ns Branch 16% 14 ns Jump 2% 8 ns Tiempo de ciclo de reloj del CPU es de: 18 ns Tiempo de ciclo de reloj por el bloque más lento: 24 ns (ignorando operaciones largas)

Implementación de un solo ciclo Calcule el tiempo de ciclo asumiendo tiempos de retardo despreciables excepto: memoria (2ns), ALU y sumadores (2ns), acceso al file de registros (1ns)

Problemas ¿Que sucede con las instrucciones complejas? Aumento del HW Desperdicio de área Tiempo de ciclo muy largo SOLUCIÓN Utilizar un tiempo de ciclo más pequeño Si se tienen diferentes instrucciones se tienen diferentes número de ciclos Ruta de datos con multiciclo.

Problemas en procesadores de un solo ciclo En la implementación de un solo ciclo: Cada instrucción tarda un solo ciclo de reloj en ejecutarse. CPI = 1 pero el ciclo de reloj se determina con la instrucción que tarda más en ejecutarse en toda la máquina. No se pueden compartir los recursos. Generalmente la instrucción más larga es LOAD El tiempo de ciclo es mucho mayor que cualquier otra instrucción. Ejemplos: Instrucciones tipo R no requieren acceso a la memoria de datos. Los saltos incondicionales “Jump” no requieren operaciones con la ALU ni tampoco acceso a la memoria de datos.

Solución con multiciclo Se estaría reutilizando las unidades funcionales La ALU se utilizaría para calcular direcciones e incrementar el PC La memoria se utilizaría para almacenar datos e instrucciones Las señales de control no serán determinadas solamente por las instrucciones. Se utilizará una máquina de estados para realizar el control.

Solución con Multiciclo Se rompe la instrucción en pasos, cada paso toma un ciclo Balance en el trabajo a realizar Restringir cada ciclo a utilizar solo una unidad funcional Al final del ciclo Almacenar valores para que se utilicen en los siguientes ciclos. Introducir registros internos adicionales