Diseño o avan nzado o de ssistem mas diigitale es Sadot Aleexandres FFernándezz A Alberto Agui ilera 25. 280015 Madrid d. Tel +34 9 91 542 28 000. www.upcomillas.es Diseño avanzado de sistemas digitales ÍNDICE 1. INTRODUCCIÓN A LAS TECNOLOGÍAS DIGITALES 1.1 TECNOLOGÍAS MICROELECTRÓNICAS 1.1.1 Tecnologías Bipolar y MOS 1.2 METODOLOGÍAS DE DISEÑO DE SISTEMAS 1.2.1 Herramientas para el diseño de sistemas de altas prestaciones 1.2.2 Diseño para test de sistemas digitales 1.3 EJERCICIOS 2. RUTA DE DATOS Y SUBSISTEMAS ARITMÉTICOS 2.1 DISEÑO Y PLANIFICACIÓN DE UN SISTEMA DIGITAL 2.1.1 La interconexión de bloques 2.2 SUBSISTEMAS ARITMÉTICOS 2.2.1 Sumadores binarios 2.2.2 Sumador Carry‐Bypass 2.2.3 Sumador Paralelo (Carry Look‐ahead) 2.2.4 Multiplicadores binarios 2.2.5 Multiplicador Carry‐Save 2.2.6 Arboles de Wallace 2.2.7 Algoritmo de Booth 2.2.8 Divisores 2.2.9 Desplazadores (Barrel Shifters) 2.3 EJERCICIOS 3. 4. 39 40 41 43 45 50 50 50 51 58 61 DISEÑO SEGMENTADO 62 63 65 66 72 72 75 75 75 DISEÑO ORIENTADO A TELECOMUNICACIONES Julio 2014 7 7 8 8 9 10 11 13 14 15 16 19 21 39 SUBSISTEMAS BASADOS EN MEMORIAS 5.1 INTRODUCCIÓN AL PIPELINE 5.1.1 Diseño segmentado 5.1.2 Características principales 5.1.3 Diseño pipeline 5.2 REDUCED INSTRUCTION SET COMPUTER: RISC 5.2.1 Introducción a RISC 5.2.2 Diseño superescalar 5.2.3 Diseño vectorial 5.3 EJERCICIOS 6. 7 24 28 31 35 38 DISEÑO SÍNCRONO DE SISTEMAS DIGITALES METAESTABILIDAD Y SINCRONIZACIÓN RELOJ Y SKEW RESET Y PRESET EJERCICIOS 4.1 INTRODUCCIÓN A MEMORIAS INTEGRADAS 4.1.1 Clasificación de memorias semiconductoras 4.1.2 Arquitectura interna y temporización 4.1.3 La celda de memoria 4.1.4 Diseño con memorias 4.2 INTEGRACIÓN CON MICROPROCESADORES 4.3 MEMORIAS ESPECÍFICAS 4.3.1 Memorias multipuerto. FIFO 4.3.2 Memorias cache 4.4 EJERCICIOS 5. 1 5 6 6 6 6 24 SUBSISTEMAS SECUENCIALES 3.1 3.2 3.3 3.4 3.5 1 77 i Sistemas digitales avanzados 6.1 INTRODUCCIÓN AL DISEÑO PARA COMUNICACIONES 6.1.1 Comunicaciones digitales 6.1.2 Diseño de interfaces 6.2 INTERFACES CON DISPOSITIVOS 6.2.1 Las comunicaciones RS232 6.2.2 Las comunicaciones RS485 6.2.3 Las comunicaciones SPI 6.2.4 Las comunicaciones I2C 6.3 EJERCICIOS 7. 77 77 77 77 77 77 77 79 83 84 BIBLIOGRAFÍA ii Julio 2014 Diseño avanzado de sistemas digitales 1. Introducción a las tecnologías digitales Este capítulo y el libro en su conjunto, está enfocado a una introducción de la tecnología digital y su impacto en los sistemas digitales complejos. El texto hace un puente entre el diseño digital básico y su aproximación al diseño de sistemas de complejidad media‐alta. Se expone la microelectrónica como motor de estos sistemas, introduciendo desde el funcionamiento de los dispositivos electrónicos básicos del diseño digital –la puerta NOT‐, subiendo a elementos más complejos, como puertas básicas, sumadores, multiplicadores, biestables, memorias y sistemas. Se presenta también el avance logrado en los últimos años en los métodos de diseño de sistemas y circuitos digitales, así como en el flujo del diseño y test de los mismos a través de lenguajes de descripción de hardware (HDL). Con ello, se busca que el texto brinde al alumno o al lector el interés por “bucear” en el conocimiento y experiencia de los sistemas digitales, desde un punto de vista analítico, experimental y fundamentalmente práctico. 1.1 Tecnologías microelectrónicas El concepto de información o dato digital es conocido por todos, o al menos todos lo hemos escuchado, así como hemos visto su impacto social a lo largo de estos últimos años. Su aportación en la conversión en el mundo de las telecomunicaciones y la electrónica de consumo es imparable. Baste el ejemplo de la comunicación por voz, desde el par de cobre telefónico analógico hasta el famoso ADSL, que por cierto pasará en breve a mejor vida con la fibra óptica y las revolucionarias tecnologías inalámbricas, como lo son GSM, UMTS y LTE1. Las llamadas, 2G, 3G y 4G y la telefonía IP. Pues bien, todo esto permitido por la capacidad de la microelectrónica y de la integración de los sistemas, cada vez más pequeños haciendo crecer la complejidad de los núcleos de cálculo –microprocesadores‐, llegando a ordenadores inimaginables que hacen miles de millones de operaciones por segundo y con consumos muy bajos de energía. Los primeros pasos realizados en esta revolución, desde la calculadora mecánica (Figura 1) a la electrónica, han sido con la invención del transistor bipolar en los Laboratorios Bell, ahí por el año 1947 en el Estado de Nueva Jersey en USA y la creación de la primera puerta digital, ahí por el año 1956. Sin embargo no es hasta los 60’s cuando Fairchild, National y Texas Instruments, empresas que comienzan la carrera de la etapa de los semiconductores digitales en circuitos integrados (ICs) con la tecnología llamada TTL, acrónimo de Transistor‐Transistor Logic, también llamada tecnología bipolar. Esta tecnología ha estado en funcionamiento desde esa época hasta muy entrado la década de los 80’s, inclusive hasta muy entrado el cambio de siglo, perdiendo la batalla por la tecnología MOS, Metal‐Oxide Semiconductor. La razón es simple, el alto consumo de energía por puerta lógica en la tecnología TTL 1 GSM: Group Special Mobile o Global System for Mobile Communications UMTS: Universal Mobile Telecommunications System LTE: Long Term Evolution Julio 2014 1 Sistemas digitales avanzados incrementa de forma notable el consumo del circuito digital conforme el número de puertas aumenta, lo que hace inviable el empaquetamiento del circuito digital. A partir de los años 90’s la tecnología digital se ha ido gradualmente pasando y consolidando a la tecnología MOS. Esta tecnología patentada mucho antes en Canadá, en 1925, y retomando el camino en los años 70’s se inició con la llamada tecnología P‐MOS (transistor de canal tipo P) para el uso de calculadoras y posteriormente con la tecnología N‐MOS (transistor de canal tipo N). Esta última marca el primer hito tecnológico: la introducción del primer microprocesador de la compañía INTEL en 1972, el llamado 4004 y en 1974 el 8080 (Figura 3). Microprocesadores de 4 bits y 8 bits respectivamente. Paralelamente, sale a la luz, la primera memoria integrada, la memoria MOS de 4Kbit. Finalmente el avance en los procesos tecnológicos, de manufactura y de integración en la lucha por conseguir un bajo consumo de energía, se llega a la tecnología CMOS (Complementary Metal Oxide Semiconductor), aún vigente y que ha dado los mejores resultados hasta nuestros días. Otras tecnologías paralelas se han venido evaluando y comercializando, como BICMOS, ECL o GaAs2. Tecnologías las cuáles sacrifican el consumo de energía por un alto rendimiento en velocidad. La capacidad y la densidad de integración se han venido midiendo por la Ley de Moore. El ya conocido co‐fundador de Intel, que visionariamente escribe que el número de transistores por IC irá creciendo exponencialmente con el tiempo. Es decir, aproximadamente la complejidad de integración se dobla cada 2 años. Este resultado, indica que desde los 70´s la densidad de un circuito digital, por ejemplo una memoria, se ha incrementado miles de veces, así como la frecuencia de reloj y velocidad de cálculo, pasando de los 10MHz, a los 10GHz. Esta revolución ha permitido que haya más transistores disponibles que capacidad de cálculo en un solo circuito integrado. Por esta razón, los ingenieros de diseño han pasado del microprocesador en un IC a los microprocesadores multi‐núcleo y que además contienen varios niveles de memoria interna, pues relativamente “sobra silicio”. Ni que decir, que esto tiene un profundo impacto en cómo el ingeniero aborda el diseño y que tan potentes son y deben ser las herramientas para su desarrollo. ¿Cómo entonces se debe abordar un diseño digital? El concepto clave de esta cuestión, es la complejidad a la que quiero llegar, es decir el nivel de abstracción a la que se pretende trabajar. Si el nivel de abstracción se reemplaza por una caja negra o un modelo, entonces la organización del diseño se sustituye por jerarquías que utilizan bloques o cajas del nivel inmediato inferior. Los niveles de abstracción en el diseño digital más comúnmente usadas son: el nivel de dispositivo (silicio), el nivel de circuito (transistor), el nivel de puerta lógica (puerta equivalente), el nivel de módulo (p.e. sumador), el nivel de sistema (p.e. microprocesador), ver Figura 4. Esta filosofía sólo es posible si se cuenta con herramientas CAD para el diseño que permitan varios niveles de complejidad, la verificación del diseño, la generación y simulación y la compilación de circuitos con la síntesis del diseño. 2 BICMOS: Tecnología compuesta con transistores tipo bipolar y tipo CMOS. ECL: (Emitter Coupled Logic) Tecnología bipolar de emisor acoplado para alta velocidad. GaAs: (Gallium Arsenide) Tecnología de muy alta velocidad de Arsenurio de Galio. 2 Julio 2014 Diseño avanzado de sistemas digitales Al mismo tiempo que las herramientas de ayuda al diseño se vienen desarrollando, en la década de los 80’s aparecen los lenguajes de descripción de hardware, Verilog3 primeramente y posteriormente VHDL ‐Very High Speed Integrated Circuits Hardware Description Language‐. VHDL fue desarrollado por el U.S. Department of Defense y respaldado por el IEEE, con el propósito de ayudar en el diseño de circuitos digitales de alta velocidad. Hoy en día es uno de los referentes principales en la industria para describir sistemas digitales. Tanto Verilog como VHDL permiten describir y simular diseño digitales complejos. Además de estos dos, existen otros lenguajes de hardware, ya sea menos potentes o con otros objetivos, tal es el caso de ABEL (Advanced Boolean Equation Language), dirigido a dispositivos programables de baja densidad o SystemC. Este último, un lenguaje de descripción a nivel de sistemas desarrollado en C++ para simulación de procesos concurrentes. En este texto se utiliza VHDL conforme se describe en el IEEE estándar 1076‐1993. No hay que olvidar que los lenguajes de descripción de hardware no son lenguajes de programación tradicionales. Un HDL es concurrente y describe el comportamiento tal como las puertas lógicas reales funcionan, es decir, se ejecuta en paralelo tal como el comportamiento físico del hardware. Este comportamiento es normalmente un sistema digital, e incorpora la temporización de los sistemas en todos los niveles de abstracción del diseño. Figura 1 : Parte del control de la primera calculadora automática (1832). 3 Verilog es un lenguaje de modelado y descripción de hardware ampliamente usada en la industria y fue desarrollado por Phil Moorby en 1985 y los derechos de los simuladores lógicos de Verilog son propiedad de la empresa Cadence Design System. La versión última de Verilog es el estándar IEEE 1364‐ 2001. Julio 2014 3 Sistemas digitales avanzados Figura 2: Sala de control del ENIAC (1946). Figura 3: Características tecnológicas de diferentes microprocesadores. Figura 4: Niveles de abstracción de diferentes niveles de diseño. 4 Julio 2014 Diseño avanzado de sistemas digitales 1.1.1 Tecnologías Bipolar y MOS En el diseño digital los transistores son usados como interruptores, es decir, en los llamados modos de operación de corte y de saturación, generando de este modo los niveles lógicos de 0 o 1 representados por los niveles de tensión correspondientes. En la tecnología bipolar se utiliza un transistor bipolar, dispositivo de tres terminales, dos de ellas, llamadas emisor y colector con un tipo de región conductora y otro terminal, llamado base, con una región conductora diferente. Véase la figura a) siguiente. Dependiendo de las tensiones aplicadas a los terminales, es posible efectuar los diferentes modos de operación. Estos modos de operación se resumen en la tabla a continuación. Tal que una configuración como la mostrada en la figura b) usando cuatro transistores en modo corte y saturación, permite generar la función de una puerta lógica tipo NAND. a) Tensiones aplicadas al transistor b) Estructura de una puerta lógica NAND Figura 5: a) Transistores bipolares, tipos NPN y PNP. b) Puerta NAND‐TTL En la tecnología MOS el transistor es también un dispositivo de tres terminales (puerta, drenador y surtidor). A diferencia del transistor FET, antecesor del MOSFET, la puerta está aislada por un óxido (SiO2). Este transistor es el de uso común en el diseño digital actual. Sus ventajas radican en la alta densidad de integración y un proceso de fabricación sencillo, que lo hacen atractivo y económico para los circuitos digitales complejos. Su funcionamiento se basa en el control del paso de portadores desde el terminal drenador al terminal surtidor a través de un canal que se forma mediante el campo eléctrico creado por la tensión de puerta. Según la versión del substrato, la base del silicio con el que se parte para la fabricación, se pueden fabricar transistores del tipo NMOS o PMOS. Es decir, transistores con canal P o transistores con canal N. En la tecnología CMOS, ambos transistores se estructuran de forma que en el mismo substrato se funde un transistor de canal opuesto. Se puede observar en la figura a) un corte transversal de esta estructura CMOS y su función lógica en la figura b). Es una puerta NOT, la más simple. Julio 2014 5 Sistemas ddigitales avanzzados Figuraa 6: Sección trransversal de un transistorr CMOS y su rrepresentación como una puerta NOT. 1.2 M Metodolo ogías de diiseño de ssistemas 1.2.11 Herram mientas para a el diseño d de sistemas de altas p prestacioness 1.2.22 Diseño para test de sistemas digitales 1.3 EEjercicios 6 Julio o 2014 Diseño avanzado de sistemas digitales 2. Ruta de datos y subsistemas aritméticos 2.1 Diseño y Planificación de un Sistema Digital En este capítulo se aborda el diseño de nuevas arquitecturas orientadas a la consecución de altas velocidades computacionales. Se trata, pues, de diseñar arquitecturas óptimas para el procesamiento de datos a velocidades elevadas; además de emplear nuevos mecanismos y topologías para mejorar la eficacia de la ruta de datos. Esencialmente aquellos problemas que presentan un gran volumen de datos a velocidades altas de cálculo, como puede ser: Cálculo aritmético Procesado Digital de Señal Codificación y descodificación de imágenes, etc Para comenzar, todos estos sistemas responden, a grandes rasgos, a una estructura que se puede dividir en dos grandes bloques: Bloque de Control y Ruta de Datos. INPUT-OUTPUT M EM O R Y C ON T RO L D A T A P A TH Figura 7: Arquitectura de un sistema digital. 2.1.1 La interconexión de bloques La complejidad hardware de todo Sistema Digital se encuentra principalmente en la Ruta de Datos. El bloque de Control estará compuesto por una o varias Máquinas de Estados, incluso con un elevado número de estados; pero su complejidad radica en una buena planificación de la ruta de datos que tiene que llevar la información. Además de estos dos grandes bloques, existen otros dos, que son la memoria y las interfaces de entrada/salida. Haremos una breve introducción de estos, comenzando con los sistemas que forman la ruta de datos, constituidos principalmente por los sistemas aritméticos y la segmentación de estos. Julio 2014 7 Sistemas ddigitales avanzzados 2.2 Subsiste emas aritm méticos 2.2.11 Sumado ores binario os La esstructura dee un sumador binario ccompleto de e 1 bit, las e ecuaciones lógicas de ssalida para la suma (S)) y el acarre eo (Co) y su tabla de ve erdad son las siguientess: S = A B Ci = A BC i + ABC i + ABC A Ci i + ABC C o = AB + BC i + AC i A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 Ci C 0 1 0 1 0 1 0 1 S 0 1 1 0 1 0 0 1 Co C 0 0 0 1 0 1 1 1 Acarreoo Se borraa Se borraa Se propaaga Se propaaga Se propaaga Se propaaga Se geneera Se geneera Figuraa 8: Sumador completo de 1 bit. Tal q que, el sum mador binario de varioss bits más sencillo que se puedee construir, es el conju unto de varrios sumado ores de 4 bbits con la ssiguiente co onfiguraciónn. Este sum mador, en esste caso dee 4 bits, es el Sumadorr Serie (Rip pple‐Carry) d debido a quue el Acarreo se coneecta en seriee. Figuraa 9: Sumador Serie de 4 bitts. El tieempo de retardo de esste Sumadoor Serie, tal como se puede analizzar, depend de del número de etap pas conectaadas en seriie. La soluciión a este p problema, ppasa por analizar la taabla de verdad y haccer que el retardo ocasionado o por el acaarreo se pueda p 8 Julio o 2014 Diseñ ño avanzado de sistemass digitales minim mizar. Para ello se pue ede ver en l a tabla de vverdad, tress diferentess salidas posibles del aacarreo: Se borra, D = A B Se generra, G = A • • B Se propaaga, P = A B Las eecuaciones ccorrespondientes paraa la salida de e la suma y el acarreo sson: Para el aacarreo: Co o (G, P) = G G + P Ci Para la suma: S (G, P) = P Ci Estass ecuacionees sirven parra diferentees configuraaciones de ssumadores con el objetivo de reeducir el rettardo del su umador com mpleto. 2.2.22 Sumado or Carry‐Bypass Su ob bjetivo es reeducir el retardo cuanddo varias fu unciones del tipo P, porr ejemplo, P P0 = P1 = P2 = P3 = 1 1, conectand do esta funcción por me edio de un m multiplexorr, tal que C033 = C0 G1 Ci ,0 P0 C o,0 P0 P0 P2 G3 Co,3 F FA G2 Co,1 FA P3 FA A G1 C o ,0 FA G2 Co,2 FA G1 Ci,0 P2 C o ,1 FA G1 P3 G3 BP=P P oP1 P2 P3 C o,2 FA FA Multiplexer P0 Co,3 Julio 22014 9 Sistemas ddigitales avanzzados e un Sumadorr Carry‐Bypasss cada 4 bits yy Sumador Ca arry‐Bypass coompleto de 16 bits. Figuraa 10: Etapa de 2.2.33 Sumado or Paralelo (Carry Lookk‐ahead) La fo orma más ráápida de sum mador es ell paralelo o con acarreo adelantaddo. El coste en puerrtas es much ho más gran nde que cuaalquier otro o sumador, ganado en vvelocidad. Particularizando o la ecuación del acarreeo para los diferentes bits: C1 = G1 + P1C0 C2 = G2 + P2C1 = G2 2 + P2G1 + P2P1C0 C3 = G3 + P3C2 = G3 3 + P3G2 + P3P2G1 + P P3P2P1C0 …continu ua para máás bits. Por cconsiguientte, los acarrreos de toddas las etap pas se pued den obteneer a partir de d las funciiones Gi y Pi. Al aum mentar el nnúmero de e bits los circuitos usaan puertass más comp plejas pero no son máss lentos. 10 Julio o 2014 Diseñ ño avanzado de sistemass digitales A0, B0 Ci,0 P0 A1, B1 Ci,1 S0 ••• P1 S1 AN-1 N , BN-1 Ci, N-1 ••• PN-1 SN-1 Figuraa 11: Sumado or Paralelo (Ca arry‐look‐ahe ad). Finalmente, se puede con ncluir que dde las técnicas de imp plementacióón hardware de sumaadores rápidos, hay do os aspectos destacadoss del sumad dor Carry‐Loook Ahead ((CLA). Se trrata de un sumador mu uy estudiad o, por lo qu ue únicamente se desttaca que traata de do de la caadena de aacarreo. Se e generan directamennte los acaarreos evitaar el retard interrmedios a partir de las entradaas y para cada bit, el e acarreo y la sumaa son indep pendientes de los bits previos. Si se desarro olla un poco o la ecuacióón del acarrreo se aprecia un coste alto en hardware uttilizado y la existencia de señales s de entradaa que han d de tener un n número de e conexionees, lo que puede ocasio onar probleemas de retardos en laas señales. En tecnolo ogías, comoo FPGA, hace que los recursos dde interconexión neceesarios sean n muy elevados y el ret ardo asociaado también n, si el sumaador es gran nde. Las cconclusionees más impo ortantes a la hora de comparar las diferenttes arquiteccturas de su umadores q que se han m mostrado, sse resumen en: C Compromiso o entre áreaa y velocidaad. ‐ Las o optimizacion nes del cam mino crítico (retardo) supone la uttilización de e más puerrtas y por taanto más haardware. ‐ Un aumento a en n el númeroo de conexxiones supo one más áreea y conexxiones más largas y porr lo tanto m más retardoss. D Dependencia con la teccnología. ‐ En lo os cálculoss teóricos sse ha evaluar la influ uencia de los retardo os de coneexión. En caasos reales y dependie endo de la tecnología los cálculo os por número de bits pueden differir bastantte. 2.2.44 Multiplicadores binarios Mateemáticamen nte, la multiplicación bbinaria se pu uede expressar como: Funccionalmentee este algoritmo se reppresenta com mo un conjunto de sum mas parciale es,: Julio 22014 11 Sistemas ddigitales avanzzados : mo básico de u un Multiplicaddor. Figuraa 12: Algoritm Lo qu ue permite visualizar algunas sus ppropiedade es básicas del multiplicaador, por ejem mplo; ‐ ‐ ‐ ‐ úmero de bits b resultannte es iguaal al número de bits ddel multipliccador El nú más el número de bits del m multiplicando. bit a 1 en el multiplica dor significa sumar el multiplicanndo desplazzando Un b un bit b a la izquierda. Un 00 significa sumar s con 0. 0 Lo que significa qu ue los operrandos de lo os sumadorres pasan p por una fun nción AND pprevia con el bit del m multiplicado or. El nú úmero de sumas parci ales es iguaal al númerro de bits ddel multipliccador menos 1. Es de ecir necesittamos tanttos sumado ores como números de d bit tenga el multiplicador mennos 1. El nú úmero de bits b de los sumadoress utilizados en las sum mas parciales es iguall al número de bits del multiplican ndo. La im mplementacción de este e multiplicaddor, es el llaamado multtiplicador e n array, es la siguiente: Figuraa 13: Multiplicador de 4 bitts en Array. FFA = Fulla Add der, HA = Half Adder. 12 Julio o 2014 Diseñ ño avanzado de sistemass digitales El ejeemplo anterior, tal com mo sucede een el sumad dor, tiene un retado coondicionado o a unoss caminos crríticos, que como ya puuede usted intuir, son debidos al rretardo del acarrreo. Tal com mo se indicaa en la figurra. Esto es iggual a: Figuraa 14: Caminoss críticos en e el multiplicadoor de 4 bits en n Array. . 2.2.55 Multiplicador Carrry‐Save Para inttentar mejo orar los tieempos invo olucrados se s muestraa en las figuras anteriores, la arquitectura del Multipplicador se modifica lig geramente para obten ner el Multtiplicador Caarry‐Save. C Como ya se habrá dado o cuenta, el acarreo se trata como o otro sumaando y se avanza a a laa siguiente línea de su uma. No exxiste, pues, propagació ón de acarrreo en las sumas anterriores. La prropagación de señales se realiza hhacia la sigu uiente etapa y no entree elementos de una miisma etapa. Es, por lo tanto, muy m veloz yy, como incconveniente e, hay quee señalar qu ue es neceesario añadir un sumaador normaal de M+N bits para generar ell resultado final deno ominado Veector Mergin ng Adder. HA HA HA HA HA FA FA FA HA FA FA FA FA FA HA HA A Vector Meerging Adder Figuraa 15: Multiplicador Carry‐SSave. Julio 22014 13 Sistemas ddigitales avanzzados Antees de term minar con los algoritm mos de multiplicació m ón, concrettamente co on el Algoritmo de Bo ooth, repasaaremos bre vemente lo os Arboles d de Wallace. 2.2.66 Arboless de Wallace Si veemos en deetalle el multiplicadorr del tipo Carry‐Save C y visualizam mos una de sus colum mnas, estaa se pued de reorgannizar como en la fig gura siguieente. Con esta transsformación en árbol (Árbol dee Wallace) es posible e mejorar el retardo o del Multtiplicador (eequivalente al de un ssumador co ompleto); sin embargoo, aún es po osible mejo orar este reetardo. Ello o se consiggue empleaando el con nocido com mo Algoritm mo de Bootth sobre Multiplicadores de W Wallace que ha dado lugar a uno de e los Multtiplicadores más rápido os que existten; el Multiplicador de e Booth‐Waallace. Figuraa 16: Transforrmación de una columna ddel Multiplica ador Carry‐Sav ve a una en cconfiguración n Arbol de Waallace. Figuraa 17: Multiplicador de Wallace de 4 bitss 14 Julio o 2014 Diseñ ño avanzado de sistemass digitales 2.2.77 Algoritm mo de Bootth U Una de las ventajas de d la aritméética binariia es el uso o del despllazamiento para multiplicar y divvidir con po otencia de 2. Basándose en esta propiedad,, el algoritm mo de de Booth ess un algoritm mo de multtiplicación q que multipliica dos núm meros multiplicación d otación de complemen nto a dos. E Este algoritm mo desarro ollado binarrios con siggno en la no por D Donald Boo oth en 1950 0, es usado ampliamen nte en la m mayoría de llas arquiteccturas de computadorres conocid das, salvo een las del tipo t DSP que utilizan multiplicadores rápid dos. El procedimiento usado en el algoritmo d de Booth se e basa en eel análisis de dos bits, el primero es el meno os significattivo del multiplicador ((R10) y un bbit adicionaal (Rx) éase la figu ra. Razón por p la cuál este algoriitmo es llam mado que se inicializaa a “0”. Vé Algoritmo de Bo ooth Radix‐‐2. Estos doos bits se analizan a en el control yy se decide e si el desp plazamiento o se realiza con sumaa o resta o o simpleme ente no se realiza nin nguna operración aritm mética y sólo se desp laza. Para entender este e conceppto usarem mos la tablaa de análisiss para el alggoritmo de B Booth RADIX‐2 y la sigu uiente figurra. R10 0 0 1 1 Rx x 0 1 0 1 Operac ción Desplaz za Suma y desplaza Resta y desplaza Desplaz za Tabla 1: Algoritmo o de Booth Radix‐2. Modoss de funcionam miento Figuraa 18. Diagram ma de bloquess de un multipplicador tipo B Booth. El Algoritmo dee Booth se basa en uuna ruta de e datos que e contiene un conjuntto de regisstros (R0, R1 1 y R2), dos registros aadicionales de 1 bit (C y Rx) un suumador/restador Julio 22014 15 Sistemas digitales avanzados y un bloque de control que tiene como función secuenciar las operaciones según el número de bits del multiplicador. Para entender mejor el funcionamiento, veremos un par de ejemplos con multiplicaciones de 4 bits. El primero con la multiplicación de dos número positivos y el segundo con una multiplicación de un número positivo y otro negativo. Ejemplo 1, A * B = 0110 * 0010; R0=0110 y R1=0010. El resultado se presenta en 8 bits y será igual a R2=0000(L) y R1= 1100(H). Suponga que los registros se encuentran ya cargados con los datos iniciales. Ciclos 0 1 2 3 4 R0 0110 0110 0110 0110 0110 R2 0000 0000 1101 0001 0000 R1 001 000 100 100 110 R10 0 1 0 0 0 Rx 0 0 1 0 0 Operación Desplaza Resta y Desplaza Suma y desplaza Desplaza Termina Tabla 2: Algoritmo de Booth con Multiplicando, R0=0110 y Multiplicador, R=0110. Ejemplo 2, A*B=0110*1110. El multiplicador es un número negativo. Ciclos 0 1 2 3 4 R0 0110 0110 0110 0110 0110 R2 0000 0000 1101 1110 1111 R1 111 011 001 100 010 R10 0 1 1 1 1 Rx 0 0 1 1 1 Operación Desplaza Resta y Desplaza Desplaza Desplaza Termina Tabla 3: Algoritmo de Booth con Multiplicando, R0=0110 y Multiplicador, R=1110. En conclusión, el algoritmo de Booth realiza: La multiplicación con sumas y restas, simplemente y demuestra su validez para multiplicación con signo representando los operandos y el resultado en complemento a 2. Una simplificación de operaciones con sumas y restas a través de supervisar las cadenas de 1s o 0s en el multiplicador. Si se analiza previamente el multiplicador y el multiplicando, entre la cantidad de transiciones entre 0s y 1s que contiene cada uno, elegir entonces cuál es el multiplicador (la multiplicación tiene una propiedad conmutativa), aumentando la rapidez en la ejecución del algoritmo. 2.2.8 Divisores La más compleja de las operaciones aritméticas es la de división. Por lo general se resuelve por software, a través de una secuencia de restas y desplazamientos. Sin embargo existen microprocesadores especializados que disponen de divisores implementados en hardware, incrementando con ello la velocidad de la unidad 16 Julio 2014 Diseño avanzado de sistemas digitales aritmética. La tecnología ha hecho que esto no sea problema hoy en día, ya que sistemas complejos, como un divisor hardware sea posible a coste bajo. Procesadores de señal, compresores, moduladores o detectores, cuentan con unidades especializadas de este tipo. Sin embargo no hay que olvidar el objetivo del diseño, por ejemplo en diseño de bajo consumo y en sistemas portátiles, el uso de batería requiere de un análisis particular y del compromiso velocidad versus tamaño. Para entender la implantación hardware lo mejor es ver primero el algoritmo básico a nivel de ejemplo, sea la siguiente división en punto fijo: Dividendo 11011001 (217), Divisor 1011 (11) Cociente 10011 (19), Residuo 1000 (8) Divisor ___ 10011 Cociente 1011 √ 11011001 Dividendo 1011 Divisor 0101 Dividendo reducido 0000 Divisor 0 por ser mayor que el dividendo reducido 1010 Dividendo reducido 0000 Divisor 0 por ser mayor que el dividendo reducido 10100 Dividendo reducido 1011 Divisor desplazado 10011 Dividendo reducido 1011 Divisor desplazado 1000 Residuo El ejemplo anterior consiste en realizar una resta entre el dividendo y el divisor desde el MSB. Si el resultado del MSB es “1”, entonces el cociente es “0”, sumando entonces el siguiente bit del dividendo y desplazando el divisor un bit. Por el contrario, si el resultado del MSB es un “0”, entonces el cociente en “1”, dejando el resultado y desplazando el divisor un bit. El número de ciclos de operación es igual al número de bits del divisor. La premisa de este algoritmo es que se debe cumplir que N<D (dividendo mayor que divisor) Este algoritmo se llama divisor con restauración. El hardware necesario se puede ver a continuación. P= /AB + /AC + BC = /A(B+ C) + BC S= AD + A/B/C + ABC + /AB/C/D + /A/BC/D Reduciendo: S = A⨁B⨁C, si D = 0 S = A , si D = 1 Julio 2014 17 Sistemas digitales avanzados Figura 19. Celda divisor básica para el algoritmo de división. N1 D1 N2 D2 N3 D3 N4 Q1 D CD CD CD N5 Q2 D CD CD CD N6 Q3 D CD CD CD R4 R5 R6 Figura 20. Divisor paralelo con 3 bits. 18 Julio 2014 Diseño avanzado de sistemas digitales 2.2.9 Desplazadores (Barrel Shifters) Los desplazadores (Barrel shifters) son usados en sistemas integrados de propósito específico o también en sistemas microprocesadores de uso general. El desplazamiento y la rotación son operaciones básicas en una Unidad Lógico‐Aritmética (ALU) y puede estar embedido en la misma unidad o como una unidad adicional a la ALU y tiene como propósito y objetivos simplificar muchas operaciones de multiplicación y división, es decir, en el procesamiento digital de señal por lo general. Desde este punto de vista debe ser capaz de ejecutar una operación de desplazamiento en un ciclo de reloj. Las operaciones básicas que se usan con esta unidad son: SRL: shift right logical, SRA: shift right arithmetic, RR: rotate right, SLL: shift left logical, SLA shift left arithmetic RL: rotate left. EL tamaño y las operaciones que tiene que hacer dependerán de los objetivos del microprocesador en el que tenga que implementarse. A más funciones mayor densidad de área. A continuación se muestran algunos ejemplos de implementación: Figura 21. Desplazador lógico a la derecha de 8 bits (SRL) Julio 2014 19 Sistemas digitales avanzados Figura 22. Rotador a la derecha de 8 bits (RR) Figura 23. Desplazador/Rotador a la derecha de 8 bits con detector de desbordamiento 20 Julio 2014 Diseño avanzado de sistemas digitales 2.3 Ejercicios 1) Se requiere en un algoritmo hacer operaciones de multiplicación. Para valorar qué será mejor, un arquitecto de sistemas evaluará las dos opciones siguientes . Se pide, diseñar y evaluar a) un multiplicador paralelo y b) un multiplicador serie. En ambos casos, se usarán números de cuatro bits para hacer la evaluación más rápida. Para comprobar el algoritmo use los valores de: Valor del Multiplicando M= 1101 Valor de Multiplicador N = 1011 Opción a) El multiplicador paralelo. Elabore un multiplicador paralelo completo de 4 bits con cualquier tipo de puerta. Utilice el siguiente algoritmo y obtenga el tiempo máximo de una operación completa, si Tprop. (puertas=7 ns). a3 a2 a1 a0 X b3 b2 b1 b0 b0a3 b0a2 b0a1 b0a0 b1a3 b1a2 b1a1 b1a0 b2a3 b2a2 b2a1 b2a0 b3a3 b3a2 b3a1 b3a0 P7 P6 P5 P4 P3 P2 P1 P0 Opción b) El multiplicador serie (como el de la figura). Este multiplicador es el algoritmo llamado “clásico”, para ello haga: El sumador de 4 bits con puertas (el sumador más rápido). Utilice el tiempo de puerta del apartado anterior. Haga un seudocódigo del control e indique las señales que le sean necesarias. Haga un diagrama de tiempos en el cronograma mostrando los registros A, B, P y las señales que considere. Parta de la situación donde los registros ya están previamente cargados Calcule, al igual que el apartado anterior, la máxima frecuencia y el tiempo para hacer una operación completa usando, Tprop. (puertas=7 ns). Tprop. (registro de =7 ns) Tsetup (registro de=2 ns). Julio 2014 21 Sistemas digitales avanzados 2) Diseñar un divisor secuencial con restauración a partir del algoritmo descrito en el apartado 2.2.8. 3) Un diseñador de sistemas está empezando a hacer sus circuitos digitales y ha pensado en un sistema que multiplica con el algoritmo de Booth. El bloque de control lo especificará usted en VHDL y la ruta de datos es la del esquema siguiente. A partir de éste, haga: La operación en binario, primeramente según la figura, obtenga el resultado para una operación de 6 x (‐6) completando en la tabla siguiente: Valor de N Valor de A Valor de M Q 22 Q-1 Ciclo de reloj Q Q-1 Función Reset = 0 0 0 Desplaza INIT = 1 0 1 Suma y desplaza 1 0 Resta y desplaza 1 1 Desplaza Julio 2014 Diseño avanzado de sistemas digitales Julio 2014 23 Sistemas digitales avanzados 3. Subsistemas secuenciales El diseño de sistemas digitales, ya sea del tipo discreto, circuito integrado específico o circuito programable, pasa por varios factores, entre otras cosas, por un buen diseño de los bloques que lo componen, tanto combinacionales como secuenciales. Estos factores no son únicamente una buena simplificación de la función lógica o una mejor codificación del diagrama de estados. Como ya sabe, las características temporales de estos circuitos ideales, no son ideales, es decir no reaccionan de forma inmediata a los cambios de las señales de entrada o a las señales de control. En este apartado se pretende estudiar los factores principales con importancia en el diseño de sistemas y circuitos digitales reales. Estos factores son determinantes en las prestaciones y condiciona en la mayoría de los casos su funcionamiento. A continuación se estudiarán las principales reglas de diseño del diseño síncrono, su integración en los sistemas digitales, la sincronización de señales asíncronas, la metaestabilidad y la importancia del, “jitter” y “skew” del reloj en todo sistema digital. 3.1 Diseño síncrono de sistemas digitales En los cursos básicos de sistemas digitales, se han estudiado los circuitos combinacionales y secuenciales y se han introducido sus características tecnológicas. Pero en su diseño generalmente no se ha tenido en cuenta el tiempo de reacción ante un cambio en el valor de las señales de entrada o de control; ese retardo inherente en su funcionamiento (desde que se produce un evento en alguna de sus entradas, hasta que se observan sus efectos en la/s salida/s) se denomina Tiempo de Propagación o Retardo (Tp). Este tiempo depende, entre otros aspectos, de las características de los dispositivos internos con los que están diseñados, de las cargas que tengan conectadas en sus salidas, el denominado FAN‐IN y el de su salida, el FAN‐OUT, de la temperatura de funcionamiento y del envejecimiento de los dispositivos, principalmente. Por otro lado, este Tiempo de Propagación suele ser distinto para cada señal de salida de cada dispositivo lógico, teniendo una cierta dependencia también del valor final de dicha señal (transición de “0” lógico a un “1” lógico; o viceversa). Además, las señales en un circuito no cambian instantáneamente, sino que lo hacen con una determinada pendiente que será diferente en el caso de pasar de “0” a “1” ó de “1” a “0”. Recordará usted de la siguiente figura, los denominados tiempo de subida (tr) y tiempo de bajada (tf), medidos entre el 90% y el 10% de la propia señal. Así como los tiempos de retardo (propagación), tpHL y tpLH, medidos entre el 50% de la señal de entrada y salida, respectivamente. 24 Julio 2014 Diseñ ño avanzado de sistemass digitales Figuraa 24. Tiemposs asociados a las señales dee entrada y sa alida de un circuito combinnacional. P Por otro lad do, en los ccircuitos sínncronos, el elemento ffundamentaal para el diseño es el Flip‐Flop. R Recordando o que estoss elementoss presentan ciertas carracterísticass, que son las siguientees: ‐ ‐ ‐ ‐ ‐ ‐ ‐ Un Flip‐Flop es un circuito coon dos estaados, de ah hí el nombbre de biesttable, debiendo permane ecer sus ssalidas esttables, aún n cuando la causa haya desapareecido. Un Flip‐Flop es un circuito sínncrono en el cúal la señal s de Reeloj estable ece el instante de cambio,, si procedee y en su casso produce una nueva salida. Un Flip‐FFlop se sinccroniza en loos flancos d de la señal d de reloj, bieen sea de subida o bien dee bajada. Un Flip‐‐Flop es un u circuitoo que tien ne una bu uena inmunnidad al ruido, r generalm mente a loss llamados ““glitches” o o pulsos de corta duraación produ ucidos por la conmutació c ón de los ccircuitos o por el propio diseñ o con la lógica l combinaacional. Un Flip‐FFlop tiene u una velocidaad de trabaajo limitada por la caraacterística p propia del Flip‐FFlop, su imp plementacióón y tecnolo ogía usada. Un Flip‐FFlop en un sistema sínncrono, tien ne un consu umo de eneergía en relación con la frecuencia de e reloj. Puessto que este último, m mantiene la aactualizació ón del circuito en cada flaanco, aun cuuando el esstado del Flip‐Flop no haya camb biado. Lo que supone un consumo innnecesario. Un Flip‐Flop tiene unas caraccterísticas de d tiempo, que son cconveniente es de recordarr, muy impo ortantes en el diseño: Tiem mpo de ase entamiento (setup), tssu. Tiempo o anterior aa la llegada del flancco de reloj e en donde la entrada de e datos debe permaneccer estable.. Tiem mpo de man ntenimientoo (hold), tho old. Tiempo posterior aal flanco de e reloj en do onde la entrada de dattos debe pe ermanecer e estable. Tiem mpo de retaardo (propaagate) tp. Tiempo que transcurre desde el flanco f de reeloj hasta que la salida de datos es estable. En la figgura siguiente se reppresentan estos e tiemp pos, así coomo tambié én se represen nta la utilizaación de un Flip‐Flop en n un sistema síncrono. Julio 22014 25 Sistemas ddigitales avanzzados Figuraa 25: Tiempo os asociados a las señalees de entrad da y salida de d un circuitto secuencial y su impleementación de entro de un sistema síncroono. Tal como o se ha mencionado eel uso de re egistros, un registro ess un conjunto de Flip‐FFlops, ayud da a filtrar lo os “glitchess”, que procceden el extterior (por eejemplo en R1) y tamb bién los pro oducidos po or el circuitoo con la lógiica combina acional inteermedia, a ttravés de R R2. En cualq quier caso, la lógica c ombinacion nal tiene qu ue estar bi en diseñad da, en relacción a la optimización n de las funnciones lógicas, la ecu ualización dde las señales, la búsq queda de baajo consumo y la reduccción del nú úmero de transiciones s de no dese eadas de laas señales que produzcan carrerass entre las m mismas. Los “glitcches” o riessgos, valorees transitorios anómalo os relejadoss como espurios, que se produceen en los circuitos com mbinacionaales sin realimentaciónn. Pueden darse orios anómaalos en las salidas deb bido a la exxistencia dee retardos en e los valorres transito dispo ositivos lógiicos. Véase la siguientee figura, en n esta hay una puerta N NOT con retardo de 2 nanosegun ndos, previo o a la mism ma señal de e entrada. La L señal enn color azul es el “glitcch”, debido al retardo de la puertaa NOT. 26 Julio o 2014 Diseñ ño avanzado de sistemass digitales Figuraa 26: Señal anómala a o gliitch, produciddo por el rettardo de una señal (Fuentte: Apuntes EUITT‐ UPM)). Existen básicam mente dos tipos de riesggos, los riessgos funcion nales, que aaparecen cu uando se producen caambios en más m de unaa variable de entrada o los riesggos lógicos, que aparecen debid dos a la realización harrdware del circuito y pueden prooducirse au unque sólo cambie de estado una entrada. Figuraa 27: Riesgo funcional. (Fue ente: Apunte s EUITT‐UPM). Figuraa 28: Riesgo ló ógico. (Fuente e: Apuntes EU UITT‐UPM). Julio 22014 27 Sistemas ddigitales avanzzados Las aalternativass para evitaar los riegoos, pasa porr modificar la lógica dde los siguientes modos: In nserción dee retardos h hardware: SSu valor es d difícilmente e controlablle y varía co on las ccondiciones de funcionamiento, p udiendo dar lugar a nu uevos riesgoos. In nserción dee lógica redu undante: Peermite eliminar únicam mente los rieesgos lógico os. In nserción dee lógica reggistrada: Noo elimina lo os riesgos, sino s su efe cto. Consiste en m muestrear laa lógica cuaando ha finnalizado el rrégimen tra ansitorio ‐y por tanto yya no eexisten glitcches‐almace enando los valores de salida en flip‐flops. Essta solución es la m más ampliamente utilizada tantoo para el diseño d de ASICs comoo para circcuitos realizados co on lógica programablee o discreta. Se denom mina Metodoología de diseño SSíncrono. 3.2 M Metaestabilidad y ssincronizaación El diseño síncro ono de sistemas digitaales tiene una u base de d funcionaamiento sen ncillo, tienee que cum mplirse el siguiente s c riterio: El régimen transitorio dde los circcuitos comb binacionalees sin realimentación finaliza cu uando ha transcurrido t o el tiemp po de prop pagación mááximo del circuito c dessde el últim mo cambio en una enntrada. Paraa que esto se cumplla, las salidas de lo s circuitos combinaccionales deeben registtrarse correectamente y deberán ser establees un tiempo antes del flanco acttivo de relo oj o lo que ees lo mismo o el tiempo de set‐up dde los flip‐flops. Véase la figura: Figuraa 29: Sistemas secuencial ssíncrono y tem mporización d del mismo. (Fu uente: Apunttes EUITT‐UPM M). Tal q que la frecueencia máxim ma de reloj permitada viene dada por la exprresión siguie ente: max m 1 Dond de: 28 Julio o 2014 Diseñ ño avanzado de sistemass digitales tpff max = es el tiempo de retardoo máximo del Flip‐Flop detalladdo en las hojas caraccterísticas d de la tecnolo ogía usada. tsu m min = es el tiempo de e asentamieento (setup p) del Flip‐FFlop detallaado en las hojas caraccterísticas d de la tecnolo ogía usada. tpLC max = ess el tiempo o de retarddo del bloq que combin nacional m más lento de d los existentes en el sistema diggital síncronno. El sisstema digitaal debe cum mplir que laa señal de rreloj les lleg ga a todos los Flip‐Flops de maneera simultáánea. Esto, en gener al, no es posible que se verifiqque de maanera estriccta, el reloj llegará con n cierto desffase debido o a las longitudes de pi stas, conexxiones y difeerencias dee carga. El desfase de laa llegada de el reloj a loss Flip‐Flops dde un circuito se deno omina SKEW W. Cuan ndo la sinccronización de las se ñales de entrada e no son realizzadas de forma f correecta, se pro oducen irregularidadess en la sincronización en consecuuencia se ge enera un m modo de operación den nominado m metaestable e. Es decir, no se puedde asegurar en el Flip‐FFlop o en ell registro un n valor de saalida establle. Esto se p puede debe r a: A A menudo existen e enttradas al ci rcuito que son asíncronas respeecto a su re eloj y d deben ser sincronizadas antes de ppoder ser usadas en el mismo. LLa sincronizaación consiste en regisstrar la entrada en un flip‐flop coonectado all reloj d del circuito. Durante essta operacióón puede occurrir que se violen loss tiempos de set‐ u upo de hold del flip‐flop p. C Como conseecuencia, el flip‐flop puuede registrrar o no el e evento de eentrada o, lo o que ees peor, entrar en un esstado metaaestable. La M Metaestabilidad se prod duce cuanddo se violan los tiempos de set‐up p o de hold d de un flip‐fflop, su salid da puede pasar a un nnivel de tenssión interm medio; al cabbo de un tie empo indetterminado ttomará aleaatoriamentee el valor 0 ó 1. Figuraa 30: Metaesttabilidad. (Fue ente: Apunte s EUITT‐UPM). La metaestabilid dad se prod duce en los ccasos siguie entes: EEn la sincron nización de entradas aasíncronas. A Afecta solo a los flip‐fllops usadoss para sincronizar eestas entrad das asíncronnas. Julio 22014 29 Sistemas ddigitales avanzzados LLa probabilidad de que e un flip‐floop entre en estado metaestable m e y el tiemp po de p permanencia en dich ho estado depende del proceso tecnolóógico y de e las ccondiciones ambientale es de funcioonamiento. EEl estado metaestable generalme nte pasa a un estado e estable ráppidamente e en los flip‐flops invvolucrados. C Cuando la saalida del flip‐flop es m muestreada en el estad do metaestaable, se pro opaga u un valor indefinido a la lógica a la qque esté co onectado. La m metaestabilid dad en las entradas a síncronas se s corrige, proporcionaando un tie empo en ciiclos de relo oj, antes de e usar las seeñales de e entrada al circuito. Seggún sea el ccaso y form ma de las enttradas, se p puede hacerr de varias fformas. SSincronizació ón de las señales s asínncronas de entradas, cuando sonn mayores a un cciclo de relo oj. Se usa un n conjunto dde Flip‐Flops. Figuraa 31: Sincronización de enttradas asíncroonas. (Fuente e: Apuntes EUITT‐UPM). SSincronizació ón y conforrmación dee pulsos de entrada mas grandes que un cicclo de reloj a señales de un cicclo. Figuraa 32: Sincronización de enttradas asíncroonas. (Fuente e: Apuntes EUITT‐UPM). 30 Julio o 2014 Diseñ ño avanzado de sistemass digitales SSincronizació ón y conforrmación de pulsos de e entrada más pequeñoss que un cicclo de reloj. Figuraa 33: Sincroniización de enttradas asíncroonas más peq queñas de un ciclo de reloj oj. (Fuente: Ap puntes EUITTT‐UPM). SSincronizació ón y eliminaación de gli tches en lass entradas. Figuraa 34: Sincronización de enttradas asíncroonas con glitcches. (Fuente: Apuntes EUITTT‐UPM). 3.3 R Reloj y ske ew En cu ualquier sisstema síncrono, la refeerencia prin ncipal del sistema es l a señal de reloj. Adem más de otraas señales gglobales, coomo la señaal de reset, es tambiénn la que tien ne un número alto de cargas de cconexiones,, lo que pro oduce altos retardos. EEstas señale es son especialmente ssensibles a problemas , pues están conectad das a todos los Flip‐flops de Julio 22014 31 Sistemas ddigitales avanzzados un sistema. Su distribució ón a lo larggo de un ciircuito integrado o dee una tarjeta de circu uito impreso o lleva asociado lo quee se denomiina líneas globales y quue pueden tener una aalta resistivvidad y una gran carga,, lo que se ttraduce en un retardo dependien nte de la longitud de la línea. Essta es la caausa por lo o que los flancos activvos del reloj no alcan nzan a todo os los Flip‐flo ops en el m mismo instan nte de tiempo. Se dice entonces q que la señal de reloj tieene SKEW. nos importaante, lo que e sucede es que no toddos los Flip‐‐flops En ell caso del reeset es men se reesetean sim multáneame ente, lo quue puede dar d lugar a estados nno deseado os del sistema. Si bien no se suele e hablar proopiamente d de skew en el reset. Noo obstante es un prob blema muy importante cuyas posibbles solucio ones se mosstrarán más s adelante. Como se ha com mentado, el SKEW es laa diferencia que existe en el flancoo de reloj en dos punttos distintoss del sistema digital. Esste SKEW tie ene un mod delo generaal: Figuraa 35: Desfase de reloj. Skew w. (Fuente: A Apuntes EUITT T‐UPM). Otro efecto adiccional al skew es el “jiitter”. Este último es la a variación temporal entre flanccos consecutivos de reloj. Lo que también puede ocasionarr problemaas de sincrronización. En ambos ccasos, se vee afectada lla señal de reloj. En la figura sigu uiente se pu uede ver la diferencia e entre amboos efectos. EEl skew, Tsk y el jitter, TTjs. 32 Julio o 2014 Diseñ ño avanzado de sistemass digitales Figuraa 36: Skew (tssk) y jitter (tjss) de reloj. Un eerror que se suele com meter en eel diseño de e los sistem mas digitalees consiste en la geneeración de un u reloj para un bloq ue funcional o para un u registro a través de e una funciión lógica. C Como en el caso siguie nte: Figuraa 37: Generacción de reloj d de forma com mbinacional. (FFuente: Apuntes EUITT‐UPPM). Este tipo de diseño hay qu ue evitarlo aa toda costta, pues pue ede dar muuchos dolores de cabeeza. Puede funcionar f en e algunas condiciones, pero con n cambios dde frecuenccia de reloj o de disttribución en el emplaazamiento de componentes, segguramente dará prob blemas. Figuraa 38: Evitar el e diseño con n el reloj gennerado de forrma combinacional. (Fuennte: Apuntes EUITT‐ UPM)). El otro error que suele com meterse de forma muyy frecuente,, es la gene ración de reloj a travéés de otro Flip‐Flop, lo que geneera una vio olación de los tiempoos de reloj en la captu ura de datos en otros registros,, debido a que los da atos y el reeloj se regiistran simu ultáneamentte, lo que o ocasiona enn la temporrización una a igualdad en el tiemp po de set‐u up de dato os y reloj generado. Este tipo de funcion namiento sse puede ver v a contiinuación. Julio 22014 33 Sistemas ddigitales avanzzados nerado de forrma secuencia al. (Fuente: Apuntes EUITTT‐UPM). Figuraa 39: Violación de reloj gen Figuraa 40: Evitar ell diseño con e el reloj generaado de forma secuencial. (F Fuente: Apunntes EUITT‐UP PM). El disseño correccto en un sistema síncrrono, consisste en habilitar el relojj en el mom mento que se necesitee a través del d uso de señales de “enable” o o del uso dde Flip‐Flops con habillitación. 34 Julio o 2014 Diseñ ño avanzado de sistemass digitales Figuraa 41: Habilitacción de la señ ñal de reloj. (FFuente: Apuntes EUITT‐UPM). 3.4 R Reset y prreset ¿Cuáándo no hem mos oído en n nuestro ppaso por la u universidad d: hay que hhacer un “re eset”. En geeneral duraante la univversidad enn el diseño de todos lo os sistemass secuencialles se les d da poco inteerés al “reset” y al “prreset”. Sin e embargo un n mal uso oo inadecuad do de estoss puede ressultar catasstrófico en nnuestro disseño. Ambo os tiene un objetivo sim milar: llevar la salida Q Q de un flip‐‐flop a “0” oo a “1” lógicco, respectivvamente. Diseñ ñadores con experienccia recomieendan, en ggeneral, que e todo flip‐‐flop deberíía ser puessto a un nivvel lógico, es decir iniciializado con n reset o prreset, cuanddo lo requie era el sistema. Esto tieene que serr planificadoo y estudiad do, eligiendo una estraategia que p puede de 2 formas: de forma aasíncrona oo de forma ssíncrona. ser d Reseet asíncrono o. Un mal diiseño asíncrrono del resset puede ccausar falloss en la operración del ssistema digiital. Generaalmente el pproblema se puede prresentar no cuando el reset se im mpone sino cuando el reset se quuita. Este tipo de resett viene imppuesto en e el flip‐ flop yy es típico eel uso de re eset activo a nivel bajo o (el flip‐flop va a “0” llógico cuando se ponee un”0” lógico a la entrrada de reseet). Un ejem mplo en VHDL de un coontador con n este tipo de reset es el siguiente e: libr rary ieee e; use ieee.std d_logic_1 1164.all; use ieee.std d_logic_u unsigned. all; enti ity ctr8s sr is port ( c clk : in std_logic c; r rst_n : in std_log gic; d : in st td_logic; l : in std_logic; ld ; Julio 22014 -- señal de reloj j -- señ ñal de re eset 35 Sistemas digitales avanzados q : out std_logic_vector(7 downto 0); co : out std_logic); end ctr8sr; architecture rtl of ctr8sr is signal count : std_logic_vector(8 downto 0); begin co <= count(8); q <= count(7 downto 0); process (clk,rst) begin if (rst_n = '0') then count <= (others => '0'); -- reset asíncrono elsif (clk'event and clk = '1') then if (ld = '1') then count <= '0' & d; -- carga síncrona else count <= count + 1; -- incremento end if; end if; end process; end rtl Reset síncrono. Se basa en la premisa que la señal de reset afectará únicamente al estado del flip‐flop en el momento del flanco de reloj. El reset puede ser impuesto como parte de una lógica combinacional previa a la entrada D del flip‐flop. Un ejemplo en VHDL de un contador con este tipo de reset es el siguiente: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ctr8sr is port ( clk : in std_logic; -- señal de reloj rst_n : in std_logic; -- señal de reset d : in std_logic; ld : in std_logic; q : out std_logic_vector(7 downto 0); co : out std_logic); end ctr8sr; architecture rtl of ctr8sr is signal count : std_logic_vector(8 downto 0); begin co <= count(8); q <= count(7 downto 0); process (clk) begin if (clk'event and clk = '1') then if (rst_n = '0') then count <= (others => '0'); elsif (ld = '1') then 36 -- reset síncrono Julio 2014 Diseño avanzado de sistemas digitales count <= '0' & d; else count <= count + 1; end if; end if; end process; end rtl -- carga síncrona -- incremento Figura 42: Reset asíncrono (arriba), reset síncrono (en medio) y reset síncrono‐asincrono (abajo). (Fuente Altera. Recommended Design Practices. QII51006‐ 2014.06.30. http://www.altera.com/literature/hb/qts/qts_qii51006.pdf). La gran ventaja del reset asíncrono en el diseño digital es que su distribución es “limpia” en el diseño. Todos los bloques a sincronizar se conectan a esta señal sin lógica combinacional adicional. Además de eliminar la dependencia de la señal de Julio 2014 37 Sistemas digitales avanzados reloj, este presente o no. Por otro lado, la desventaja es la asincronía que puede tener esta señal al momento de imponerse y sobre todo de quitarse. Si la señal levantada en el flanco de reloj, el flip‐flop puede entrar en un modo metaestable, por lo que hay que evitar rebotes, glitches y ruidos en esta señal. La lógica de reset síncrona tiene la ventaja de usar flip‐flop más pequeños (en número de transistores) al no llevar asociada la lógica de reset y preset dentro. Sin embargo al sintetizar el VHDL, esta lógica va fuera del flip‐flop, tal que el total de espacio ganado puede no ser significante. Con la tecnología actual, esto parece irrelevante. Por otro lado, el reset síncrono nos asegura que el diseño es 100% síncrono y que este reset ocurrirá solamente durante el flanco de reloj. Como conclusiones, en el diseño síncrono, es aconsejable: Las normas de diseño síncrono son una buena guía para la realización de diseños con un funcionamiento seguro. En su aplicación práctica es frecuente que se den casos en los que resulta inevitable vulnerarlas: en el interfaz con buses asíncronos o con memorias asíncronas, por ejemplo, o en el de la sincronización de entradas asíncronas. Cuando esto ocurra es aconsejable aislar los módulos de interfaz con sistemas asíncronos y diseñar el resto del sistema ateniéndose a las reglas enunciadas. En el diseño de circuito es aconsejable utilizar flip‐flops tipo D, puesto que son los de funcionamiento más simple y facilitan la interpretación del modo de operación del circuito. Además, con los flip‐flops tipo D resulta muy sencilla la incorporación de entradas síncronas de reset, preset y habilitación de reloj. Las entradas asíncronas de los flip‐flops sólo deben utilizarse, si se desea, para la inicialización del circuito, pero nunca durante la operación normal del mismo. 3.5 Ejercicios 38 Julio 2014 Diseño avanzado de sistemas digitales 4. Subsistemas basados en memorias 4.1 Introducción a memorias integradas Gran parte del diseño digital actual necesita o se dedica al almacenamiento de información, datos o instrucciones de programas. Como se ha comentado en la introducción, actualmente la integración de los circuitos digitales permite que ésta se dedique a la memoria, en sus diferentes versiones. El diseño también ha evolucionado, tal que en la lógica programable, por ejemplo, el uso de memoria para la implementación de tablas de verdad o cualquier lógica combinacional, simplifica la síntesis de los sistemas. De forma general, se representa una memoria integrada como una matriz de celdas de almacenamiento. Técnicamente es posible si usamos un conjunto de registros (Flip‐ Flops) organizados de forma tal que representen una estructura geométrica en filas y columnas del tamaño necesario. Sin embargo, esto crea un problema de tamaño y de acceso a la información, por lo que para almacenamiento de información relativamente grande, se tiene que hacer uso de memorias integradas. Estas memorias integradas tienen como objetivo optimizar el acceso a la información, tanto en los modos de lectura como de escritura, la optimización del consumo de la memoria y la optimización del control para el acceso a la información. Por lo general, el proceso de guardar información se llama escritura y el proceso de leer datos se llama proceso de lectura. En la mayoría de los casos, estos procesos se hacen a través de un sistema programable (microprocesador, CPU u ordenador). Estos sistemas cuentan con una unidad aritmético/lógica (ALU), un conjunto de registros y lógica de control que se encarga de ejecutar estas lecturas y escrituras a memoria para hacer el trasiego de operaciones de un programa. Nótese en la figura siguiente tres caminos, denominados buses, el de datos (bidireccional), el de direcciones (unidireccional) y el de control (unidireccional). El bus de datos, como su nombre lo indica, tiene por objeto llevar los datos de la CPU a memoria (proceso de escritura) o de leer los datos de la memoria a la CPU (proceso de lectura). El bus unidireccional llamado de direcciones, se corresponde con la dirección de memoria (posición de la misma) en donde se localiza el dato a leer o escribir, según lo indique el bus de control. El tercer bus o de control, tiene que ver con dos líneas que la CPU se encarga de poner a la memoria y son la señal de lectura/escritura (read/write), por lo general una sola línea que indica a la memoria si se procede a leer (read/write=1) o en su caso a escribir (read/write=0) y el CS (Chip Select), una de las señales más importantes para el diseño con memorias. El Chip Select como su nombre lo indica, es una señal de control que permite a la memoria correspondiente poner en modo activo su bus de datos en modo lectura, en otro caso, dejar ese bus de datos desconectado o en tercer estado, es decir “al aire”, por lo que el bus de datos puede ser compartido con otras memorias u otros dispositivos conectados al bus de datos. Es labor del ingeniero de diseño la organización de las memorias y dispositivos para controlar a través de las señales correspondientes de CS una correcta organización de memoria. Esta organización de memoria y dispositivos se le llama “mapa de memoria” y se verá con mayor detenimiento más adelante. Julio 2014 39 Sistemas ddigitales avanzzados ma digital. Figuraa 43: Principaales inter‐ conexiones de unna memoria ccon un sistem 4.1.11 Clasificaación de me emorias sem miconducto oras Existen una varriedad de formas, f tam maños y esttilos en fun nción de laas necesidades y aplicaciones. Deependiendo o del nivel de abstraccción que usemos, u exxisten diferentes mas de expreesar el uso d de la memooria, por eje emplo, a nivvel de circuiito usamos el bit form como o parámetrro de medid da equivale nte, al núm mero individ dual de celddas de mem moria, esto es, kilobitss (Kbits), me egabits (Mbbits), gigabiits (Gbits) o Terabits ((Tbits), o ell byte (grup pos de 8 o 9 9 bits), esto o es, Kbytess, Mbytes, G Gbytes o Tb bytes. A nivvel de sistem ma es comú ún usar el w word (palab bra), el cua l representta la unidad d de cálculoo del orden nador. Una palabra de 32 bits, rep presentaría un ordenad dor que trab baja con dattos de 32 bits. oras suele sser en base e a su La clasificación más generaal de las m emorias semiconducto funciionalidad. A A nivel gene eral se puedden clasificaar en dos gra andes grupoos, memoriias de sólo lectura o reead‐only meemory (ROM M) y memorias de lectura y escrittura o read‐‐write mem mory (RWM). Como su nombre loo indica, lass memoriass de lecturaa y escritura son más flexibles debido a essta caracterrística. En esta e última, el dato ddigital, el bit, b se pued de almacenaar en un flip p‐flop (celdaa de memoria estática) o en la carrga capacitiva de un co ondensador (celda de memoria ddinámica), respectivam mente. En aambos caso os, es neceesario circuitería de control c parra la lectura y escrittura del biit en las celdas c correespondientees y dado que q el circuuito de control y las celdas son aactivas, es decir, requieren de un na tensión d de alimentaación para m mantener el dato binarrio en la celda, a estass memoriass se les clasiifica tambiéén como me emorias vollátiles, el bitt pierde su valor cuan ndo la tensió ón de alime entación se corta. Las m memorias R ROM, o de sólo lectura,, tienen la ccaracterísticca de ser noo volátil, es decir manttienen su informació ón aún cuuando no estén con nectadas aa la fuente de alimeentación. La L informacción digital se “guardaa” a travéss de una innterconexió ón de diodo os o transistores funccionando enn modo fussible. Existe e un processo en el cu uál se escribe el conteenido de laa memoria,, mecanism mo con el que q se “reaarma” el fu usible. Existen diferenttes tipos de e memoriass ROM depe endiendo d del tipo de regeneració ón de este fusible. Más M adelantte se detal lan cada una u de las celdas parra cada tip po de mem moria. Una segunda claasificación sse basa en lla forma en la que se trabaja con lla memoriaa. Una primera clase es e las llamaadas random m‐access memory m (RA AM) o mem morias de acceso aleattorio. Lo que significa q que el dato binario puede ser leíd do o escrito o en una possición de m memoria en orden aleatorio. Esta segunda clasificación es la más eempleada hoy en día, ttal que en el mundo d de los siste mas digitales se utiliza a los términnos RAM y ROM 40 Julio o 2014 Diseño avanzado de sistemas digitales para denominar a las memorias. Con este último concepto la tabla siguiente resume la clasificación de memorias a un nivel general. Por supuesto existen muchas cantidades de diferentes tipos y modos de operación de memorias conforme las aplicaciones y versiones de microprocesadores se han venido desarrollando, especialmente con su funcionalidad. Así pues, aparecen memorias del tipo multipuerto o de acceso simultáneo por más de dos interfaces. Este tipo de memorias responden a un requisito de necesidades de ancho de banda, es decir, acelerar o paralelizar el acceso a los datos con el aumento de puertos para leer y/o escribir, tal es el caso de memorias FIFO (first‐in, first‐out), CAM (contents‐addressable memory), memorias multipuerto y una lista larga, según la funcionalidad y aplicación a la que están dirigidos. Algunas de estas se incluyen en la tabla de clasificación y se verán en este texto. El uso y aplicación de las estructuras así como la forma de operación, se verá en los siguientes apartados. Acrónimo Tipo RAM SRAM Static random access (volátil) DRAM Dynamic random Access FIFO First‐in first‐out memory CAM Contents‐addresssable memory VRAM Video random access memory ROM ROM Read only memory (no volátil) PROM Programmable ROM EPROM EEPROM FLASH Erasable programmable ROM Electrically erasable programmable ROM Multiple Access EEPROM Aplicación Rápida y de baja densidad. Un FF por celda Memoria cache Alta densidad. Un transistor por celda. Memoria principal de un ordenador Memoria multipuerto usada como buffer de interfaz de sistemas Memoria multipuerto de acceso según contenido del dato Memoria multipuerto de acceso de diferente ancho de puerto Grandes series de producción. No es borrable. Grabado en fábrica. Grandes series de producción. No es borrable. Permite un grabado. Borrable con luz ultravioleta. Permite regrabado Borrable de forma eléctrica. Permite regrabado Acceso por bloque en lectura y escritura en la misma operación Tabla 4: Clasificación de memorias semiconductoras 4.1.2 Arquitectura interna y temporización Una memoria semiconductora se puede ver como un array en forma de pila de N‐ words cada una de ancho M‐bits. Cada vez que leemos o escribimos a la memoria, lo hacemos en un formato de longitud un word, es decir, una lectura o una escritura de una palabra en formato de M‐bits. Esto se hace con la ayuda de un control que permite seleccionar la palabra que se accede en lectura o escritura de las N‐palabras que dispone la memoria. Por lo tanto, se necesita un conjunto de S0‐SN‐1 de señales que indiquen qué palabra es la que se está seleccionando y solamente una Si puede estar activa a la vez. Julio 2014 41 Sistemas ddigitales avanzzados La esstrategia paara impleme entar este t ipo de estru uctura de m memoria sem miconducto ora se basa en el esquema de la figura sigguiente, en n la que se e pueden vver dos blo oques princcipales y dos d buses de inform mación conectados. El primer bloque es e un deco odificador que q tiene co omo objetivvo reducir el número de líneas dde selecció ón del exterrior, llamad do bus de diirecciones A A0‐AK‐1. Este decodificad dor convierrte la direccción A a N==2K líneas dee selección,, donde sóloo hay una línea activa a la vez. El bus de dattos es de an ncho M‐bitss y por este bus, se lee o escribe u una palabra. Figuraa 44: Arquitecctura de mem moria de N‐pallabras y M‐bits por palabra a. Tomaando como o ejemplo laa figura ant erior, si queremos imp plementar uuna memorria de 10 1Kbyyte, N será igual 1024 o lo que ees lo mismo o 2 palabras y M seerá igual a 8 8 bits (bytee). La mem moria es entonces de una capacidad de 8K Kbits o de 1Kbyte con n una estru uctura de 10 024 palabraas de anchoo 1 byte. De esde el pun nto de vista del diseñador o ingen niero de diseño, tamb bién se sueele llamar posición p de memoria aa una palabra o word d. Evideentemente,, las estructturas de m emoria son n ahora mu uy complejaas debido al alto grado o de integrración de lo os circuitos,, por lo que el decodiificador de direcciones y la geom metría del conjunto de celdass de almaacenamiento o, obligan a distribuir y reorgganizar el p proceso de d decodificacción y de la memoria p para disminuuir el retard do en el proceso de leectura y escritura. Se inntroduce más lógica de e control coon la finalidad de no peenalizar el ttiempo de aacceso a la iinformación n. Otro aspecto im mportante d de las mem morias en loss aspectos de diseño yy elección d de las mism mas, son lass característticas de tem mporización n. Estos asp pectos tambbién nos diccen la calidad de la meemoria. Ya hemos vistoo que las m memorias se pueden “leeer” o “escrribir”. es inmediatto. Existe unna latencia en el Como cualquierr circuito diggital este p roceso no e tiempo desde que se indicaa la posiciónn de la mem moria a leerr y el tiemppo en que ell dato está disponible a la salida de la memooria. Este tiiempo es lla amado tiem mpo de lecttura o read d‐access‐tim me. En conssecuencia eexiste un tiempo llam mado de esscritura o write‐ w accesss‐time, sieendo el tiempo entree una peticción de esccritura y la escritura en la posicción de meemoria indicada. Un t ercer tiemp po, es el ciclo compleeto de lectura y escritura read‐w write‐cycle. El cuál e s el tiempo mínimo necesario para lecturas y escrituras suceesivas, procceso que es usado ampliamen nte en loss algoritmo os de 42 Julio o 2014 Diseñ ño avanzado de sistemass digitales programación. EEstos tres p parámetros de tiempo,, no tienen por qué serr iguales, ess más seríaa raro que lo o fueran. Ad demás de e stos existen n otros no m menos impoortantes que hay que tener en cuenta c cuaando se disseña con memorias m integradas que se verrán a contiinuación. Read cycle READ D Read d access Read acc cess Write cycle WRITE TE W Write access Data valid v DAT TA Data writtten Figuraa 45: Parámettros de tempo orización prinncipales de un na memoria. 4.1.33 La celdaa de memoria ROM M. Conceptu ualmente, laa estructuraa de la mem moria ROM es la más seencilla. Lo fforma un array de filaas y column nas. Una ceelda es una posición do onde la fila y la columna se cruzaan. Una celda es capaaz de alma cenar un bit. b Este bitt es puestoo a través de d un interrruptor lógicco controlado por tenssión a travé és de diodoss, un transisstor bipolarr o un transsistor MOSFFET. Tal com mo se puedee ver en la ssiguiente fig gura. Julio 22014 43 Sistemas ddigitales avanzzados Figuraa 46: Represe entación de un na celda en RO OM y de una ROM de 4x4 bits. RAM M Estática. LLas celdas que componnen este tip po de memo oria están fformadas por un conju unto de traansistores conectados, ya sean transistores b bipolares o transistore es del tipo MOS. La co onfiguración n de estos ttransistoress forman un n Latch. Pueede usted vver en la figgura siguien nte que mientras un el par de transistores a la dereecha (M4 y y M3) manttienen Q=1 1, aseguran ndo que M M2 y M1 estén e en el modo com mplementaario y mantteniendo /Q Q=0. Este e estado se m mantiene hasta que desde fuera dde la celda no se fuercce el cambio. Si se corta la alimentació ón, el contenido de la celda y en consecuencia dee la memoria RAM, se pierde. Lo q que significa que este ttipo de mem moria es vo olátil. Figuraa 47: Represe entación de un na celda de m memoria RAM estática RAM M Dinámica. Las celdas que comp onen este tipo de me emoria, son exclusivam mente con ttransistoress MOSFET. El esfuerzoo realizado por las emp presas tecnnológicas en n este 44 Julio o 2014 Diseñ ño avanzado de sistemass digitales tipo de memorias es muy ggrande, busscando altaas densidades con celddas cada vezz más pequ ueñas, lo qu ue significa memorias dde muy altaa capacidad d. En sus iniicios, la celd da de mem moria RAM d dinámica se e realizaba ccon 3 o 4 trransistores,, véase la fi gura, para pasar en laa actualidad a celdass con un s olo transistor, reduciendo signifficativamen nte la comp plejidad y aumentando o la densidaad. El prrincipio de esta clase de d memoriaas es la carrga del Con ndensador CCs, condensador que es parte inttrínseca al transistor, si está com mpletamente cargado ((un “1” lógiico) o comp pletamentee descargad do (un “00” lógico). La desven ntaja de l a celda con 3 transsistores, es que la lectu ura es destrructiva, es d decir, que la a lectura deel “1” lógico o hace que el condenssador descaargue, por lo que pasa a “0”. Po or lo que ees necesario o que pués de la lectura se haga h una opperación de e escritura para restauurar el valo or. No desp ocurre igual en la celda fo ormada poor un transistor, la lectura no es destructiva, sin embaargo requiere de un amplificaddor en la línea de lectura y uun condensador adicional. Por lo o que la celda de una m memoria dinámica de 1 transistorr no es un ttercio en taamaño que la celda de memoria ddinámica de 3 transistores. Las memorias dinámicas presentann una com mplejidad adicional. El uso de un cond densador reequiere de u una circuiteería adicional, denomin nada “refreesco”. La función de este sistemaa de refrescco es reescrribir las celdas leídas durante el ciclo de lecctura, perm mitiendo maantener el vvalor de la ttensión en el condensador. Los vaalores típicos de refreesco son 2,4 4 u 8 milisegundos. EExisten diferentes tipo os y modos de sistemas de refreesco según el tipo de memoria. LLas señales de control de este sisstema se suelen llamaar RAS (row w‐address sttrobe) y CASS (column‐aaddress stro obe) y juntoo a un sistem ma de control (dynamiic memory ccontrol) reaalizan la tem mporización n del processo de refresco de las m memorias dinámica. BL WL M1 CS CBL Figuraa 48: Repressentación de e una celda de memoriia RAM diná ámica. Izquieerda, celda con 3 transiistores. Dereccha, celda con n un transistoor. 4.1.44 Diseño con memorias Existen dos mod dos de trab bajar con m memorias, ya sea incrementar el aancho de bits de datos (palabra) o increm mentar su capacidad d (número de posicciones). En una Julio 22014 45 Sistemas ddigitales avanzzados “orgaanización de memoria”, cada me moria está representa ada de un m modo en nú úmero de p posiciones x x número de d bits porr posición. Así pue es, una meemoria de 1Kx4, repreesenta una memoria de 1024 pos iciones con 4 bits de datos por poosición. El bus de direccciones es d de K=10 y b bus de datoos de M=4, según la fig gura siguiennte. La mem moria es dee 1024 palaabras, cada palabra de 4 bits. Otraa forma de expresar ell tamaño de e esta mem moria es de 4Kbits o 40 096 bits, orgganizada en n 1024 posicciones de 4 bits. Figuraa 49: Diagram ma de bloquess de una mem moria genérica a y una memo oria de 1Kx4. Expaandiendo el bus de dattos. Siguien do el criterio anterior, podemos i ncrementar esta mem moria en pasos de tam maño el bus de datos. Por ejemplo, una mem moria de 1K K x 8, realizzada con m memorias de e 1Kx4, tenddremos unaa organización con 2 m memorias de e este tipo, como en laa figura sigu uiente. En e sta figura se ha expand dido el bus de direccio ones y n correcta. Ambas memorias trab bajan de fo rma simultánea, datos para ver la conexión es deecir, el Chip p Select se activa en ambas en el mismo instante, ta nto en escritura como o en lecturaa. La diferencia es quee ahora el b bus de datos es de 8 b its, la parte e baja (4 bitts) se escrib ben en la m memoria de la parte sup perior y la p parte (4 bitss) se escribe en en la meemoria de aabajo. El bu us de direccciones está simplemen nte conecta do en paralelo y es neecesario el mismo nú úmero de sseñales de dirección, para un 1KK posiciones son neceesarios 10 b bits. El méto odo ilustraddo se aplicaa a cualquie er tipo de m memoria, yya sea tipo RAM o tipo o ROM. 46 Julio o 2014 Diseñ ño avanzado de sistemass digitales Figuraa 50: Expandiendo el bus d de datos a unaa memoria de e 1Kx8 con me emorias de 1KKx4. Expaandiendo el e bus de direcciones d s. Suponga ahora que e es un in cremento en el número de posiiciones, es decir, en laa capacidad en posiciones de la m memoria. En n este caso se expandee de 1Kx4 aa 2Kx4. Tal como usted d ya se ha d dado cuentta, en el eje emplo anterior y en esste ejemplo ambos móódulos de m memoria son n de la mism ma capacidaad en n, 1Kx8 = 2Kx4 = 8K b its. Puede usted número de bits, pero diferrentes en oorganización que las direecciones re equieren dee un bit más (A10), pues p para 22K posiciones se ver q neceesitan 11 bits. b Estos bits b se connectan en paralelo los primeross 10 bits, desde d A0 A9. La direección más alta, la A110, se utilizaa para seleccionar quee dispositivvo del módulo esta “acctivo” por m medio del CChip Select y cuáles no o (su bus dee datos en ttercer estad do). Se geneeran por tanto dos líneeas de Chip Select. Ade emás, fíjesee en la figura que el bu us de dato os es comp partido por ambos memorias. Entonces cuuando A10= =0, la mem moria de arrriba en la figura, se enncuentra acttiva (los dattos se puedden leer a ttravés del b bus de dato os), mientraas que la dee abajo en la figura pe ermanece een tercer esstado. En o otras palabrras, se pueden leer/esscribir las posiciones p de memorria 0000000 00000 (00016) hasta laa 01111111111 (3FF116). Ahora bien, cuand do la direccción A10= =1, se emorias, taal que ahorra las interrcambia el control del bus de ddatos entre ambas me posicciones de m memoria son n 100000000000 (40016) hasta la 011111111111 (7FF16), que se correesponden a la memoriaa de abajo een la figura. Julio 22014 47 Sistemas ddigitales avanzzados eros de posiciiones a un módulo de memoria de 2Kxx4 con memorrias de Figuraa 51: Expandiendo el núme 1Kx4. Expaandiendo el e bus de datos y eel número de posicio ones. Supoonga ahoraa que neceesitamos un n módulo de memorria de 4Kx8 8, con mem morias de 1Kx4. Es decir, dupliicamos el b bus de datoss y cuadripl icamos el n número de p posiciones. Para facilittar las figuras cuando eexisten buses que van en paralelo o, se usa grá áficamente el bus. Tal ccomo ha po odido dedu ucir, necesitaremos de cuatro Chip p Select dife erentes, quee son generados por m medio de lo os dos bits d de direccionnes más alto os (A11 y A1 10). Figuraa 52: Expandiiendo el número de posiciiones a un m módulo de me emoria a 4Kx8 x8 con memorrias de 1Kx4. 48 Julio o 2014 Diseño avanzado de sistemas digitales Conforme la arquitectura del módulo de memoria se va expandiendo en los datos o en las posiciones de memoria, el sistema se complica gráficamente. Tal que dos formas alternativas de expresar la distribución y organización de memoria y de dispositivos es a través de una forma tabular o en bloque. Ambos formatos representan un ”mapa de memoria” y nos lleva a la distribución de la memoria en el módulo de una forma más sencilla de ver. El mapa de memoria para el ejemplo anterior es el siguiente: Direcciones de memoria A11 A10 A9 A8 A7 A6 A5 A4 A3 0 0 1 1 0 1 0 1 X X X X X X X X X X X X X X X X X X X X X X X X X X X X A2 A1 A0 CS0 X X X X X X X X X X X X 0 1 1 1 Chip Select Posición CS1 CS2 CS3 (hexade‐ cimal) 1 0 1 1 1 1 0 1 1 1 1 0 000‐3FF 400‐7FF 800‐CFF D00‐FFF Tabla 5: Mapa de memoria de módulo de 4Kx8 con memorias de 1Kx4 expresado en forma de tabla. Posición de inicio y fin (decimal) Bit 7 Bit 0 000 0 1023 1K x 8 1Kx4 (x2) CS0 1K x 8 1Kx4 (x2) CS1 1K x 8 1Kx4 (x2) CS2 BFF C00 3xxx 4095 7FF 800 2048 3xxx 3FF 400 1024 2047 Posición de Inicio y fin (hexadecimal) 1K x 8 1Kx4 (x2) CS3 FFF Tabla 6: Mapa de memoria de módulo de 4Kx8 con memorias de 1Kx4 expresado en forma de bloque. Julio 2014 49 Sistemas ddigitales avanzzados 4.2 Integración con m microproceesadores Figuraa 53. Conexión típica de un n microprocessador con disp positivos exte ernos y de meemoria. 4.3 Memoriaas específficas 4.3.11 Memorrias multipu uerto. FIFO Cuan ndo dos o más m sistemaas tienen laa necesidad d de compa artir datos oo un espaccio de mem moria, existee la necesidad de contrrolar o “arb bitrar” el accceso a la m emoria evittando el co onflicto. El árbitro o controladoor de acceso, no es más que uun sistemaa que multiplexa los b buses de dattos, de direecciones y d de control, ssegún se fijeen los criterios o las rreglas de acceso, por ejemplo ppor prioridaad, por tiempo, etc. En este tip po de aplicaciones esp peciales existe la posibbilidad de evitar este árbitro con aarquitecturras de moria con característic c cas específi cas, tal es el caso de e memoriass que tenggan la mem capacidad de leer o escribir por dos diiferentes dispositivos d de forma sim multánea en dos posicciones de memoria. Las difere ntes aplicaaciones que requiereen este tip po de mem morias sueleen ser de te elecomunicaaciones, po or ejemplo e en multimeedia. Mientrras se proceesa la escrittura por un puerto de entrada, al mismo tiem mpo se pueede ir leyend do en otro puerto dee salida, un na posiciónn por detráás o en otrra zona dee memoria. Este conccepto tienee un benefficio imporrtante también cuand do hay doos sistemass que comp parten un espacio e de memoria ttrabajando con diferen ntes velociddades de re eloj o con eel mismo reeloj de form ma asíncronaa. Las vventajas de este tipo de e memoria son: 50 LLa comuniccación y sincronizacióón de disp positivos a través de memoria para transferir daatos, a la vez que almaccena. SSimplificació ón del diseñ ño de sistem mas con memoria comp partida. A Acceso direccto a memo oria (DMA) ssin detener los accesoss a la CPU. SSimplificar lo os sistemas de memorria caché. SSimplificar los sistemass de comunnicaciones, usando memorias m ultipuerto como b buffers y adaptando velocidades eentre sistem mas. Julio o 2014 Diseñ ño avanzado de sistemass digitales LLa memoria cuenta porr lo general con un con ntrol interno o para evitaar la escritu ura en laa misma po osición por aambos puerrtos en el m mismo instante. Dandoo prioridad aa uno d de ellos. Figuraa 54. Memoria de doble pu uerto. Mem morias FIFO O. El concep pto FIFO (Fiirst In, Firstt Out), es ampliament a te usado co on las mem morias integgradas y se b basa en unaa arquitectu ura de mem moria de dobble puerto y una lógica de contro ol que se añade a para lograr un estructura simple de “el primero o que entraa”, es “ el p primero que e sale”. Se ssimplifican ttodos los bu uses de dattos al exterior de la meemoria y so olamente haay datos de escritura/le ectura, juntto con las seeñales de Read y Writee. Este tipo de memorias son usaddas para haacer almace enamiento yy control de e flujo en lo os sistemas de comunicaciones y de control y se compo orta como uuna cola circular. Tal ccomo se ve en la figurra, hay un ppuntero de escritura (bus de direecciones en n lado izquierdo) y un puntero de d lectura ((bus de dire ecciones al lado dereccho). En el inicio (Reseet) ambos punteros están en la primera ub bicación de memoria ((FIFO vacía) y la señal de Vacío sse activa. Si se escribe (Write) se incrementa a el punteroo de direcció ón de escritura y la seeñal de Vacio se desacctiva. Cuand do el registrro de direccción de escritura alcan nza al de lecctura, se activa la señaal de Lleno. Estas dos ú últimas señaales (“flags””) son muy importantees para el co ontrol de la FIFO desde e los dispositivos que laa acceden. Figuraa 55. Estructu ura principal d de una memo ria FIFO. 4.3.22 Memorrias cache La mem moria caché es una mem moria SRAM M usada por la CPU coon el objeto o de a reducir el tiemp po de acceso a la mem moria princip pal. La organización dee memoria e en un sistema se con noce como jerarquía dde memoriia. Es una organizacióón piramidal en niveles que tien nen los siste emas progrramables co omplejos. Se e puede veer la jerarqu uía en la sigguiente figura. Julio 22014 51 Sistemas ddigitales avanzzados a en un sistem ma digital. Figuraa 56. Jerarquíía de memoria La memo oria caché e es una mem moria más p pequeña y m más rápida l ocalizada lo o más cercaa posible a los registros de la CPU U, la cual alm macena cop pias de datoos ubicados en la mem moria princcipal que se utilizan con máss frecuencia. Esta duuplicidad de d la inforrmación se conoce com mo principioo de localid dad. Esta prropiedad see justifica puesto que los datos originales tienen un coste de tiempo t alto o en velociidad de accceso, respeecto a la copia localizada en la cacché. El funcio onamiento es simple, ccuando se accede porr primera veez a un datto, se hacee una copia de un bloqu ue de datoss en la mem moria caché. El acceso aal primer daato es más lento que los accesoss para com mpletar el bloque, el tiiempo de aacceso med dio es meno or al iniciall. En el momento en ccuando el procesador p necesita leeer o escrib bir en una ubicación een memoriaa principal, pprimero verifica si una a copia de loos datos esstá en la caché. Si es assí, el processador de inm mediato lee e o escribe e en la memooria caché (Mca), que ees mucho m más rápido q que de la leectura o la e escritura a la a memoria principal (M Mpp). Figuraa 57. Estructu ura y organización de mem oria y una CP PU. La orrganización de la mem moria caché pasa por e el diseño de e las memo rias Mca, M Mpp y un bloque de co ontrol de direcciones aa la memoria Cache, co onsiderandoo varios facctores que influyen diirectamente e en el renndimiento de la mem moria y porr lo tanto en e su 52 Julio o 2014 Diseño avanzado de sistemas digitales objetivo de aumentar la velocidad de respuesta de la jerarquía de memoria. Estos factores son las políticas de ubicación, extracción, reemplazo, escritura y el tamaño de la caché y de sus bloques. Además se definen tres conceptos básicos para su diseño: Bloque: Cantidad de información en posiciones de memoria que se define para estar presente o no en Mpp y Mca. Es importante definir el tamaño del bloque y de la Mca. Un tamaño de Mca grande tiene por el contrario una lógica de control más compleja, el acceso es más lento y físicamente es más grande. Por el contrario, si la Mca es pequeña, se incrementa la cantidad de fallos a la Mca. Acierto: Cuando el dato solicitado por la CPU está en la Mca Fallo: Cuando el dato solicitado por la CPU no está en la Mca. Rendimiento: Se calcula del siguiente modo: 1 ∗ 1 ∗ donde: ó ó Las tres formas de ubicación más utilizadas son: Cache Directa: Al bloque i‐ésimo de memoria principal le corresponde la posición i módulo n, donde n es el número de bloques de la memoria caché. Caché Asociativa: Cualquier bloque de memoria principal puede ir en cualquiera de los n bloques de la memoria caché. Caché Asociativa por conjuntos: La memoria caché se divide en k conjuntos de bloques, así al bloque i‐ésimo de memoria principal le corresponde el conjunto i módulo k. Dicho bloque de memoria podrá ubicarse en cualquier posición de ese conjunto. Debido a que el tamaño de la Mca es mucho menor que la Mpp, existen una serie de políticas de reemplazo para determinar que bloques de la Mca se deben reemplazar. Reemplazo Aleatorio: El bloque es reemplazado de forma aleatoria. Reemplazo FIFO: Se usa un algoritmo FIFO (primero en entrar es el primero en salir) para determinar qué bloque debe abandonar la caché. Este algoritmo generalmente es poco eficiente, pues utiliza el parámetro de antigüedad en el dato. Reemplazo (LRU) el menos recientemente usado: Se sustituye el bloque que hace más tiempo que no se ha usado en la caché, traeremos a caché el bloque en cuestión y lo modificaremos ahí. Reemplazo (LFU) el de menos frecuencias usadas: Se sustituye el bloque que ha experimentado menos referencias. Julio 2014 53 Sistemas digitales avanzados Por último las políticas de lectura y escritura a la memoria Cache, que son: Lectura de Cache Escritura de Cache Dato en caché Dato a la CPU (Load Through) Dato no en caché Lee de Mpp y rellena cache o, Dato no en caché Rellena Caché de Mpp y dato a CPU, Dato en caché Escribe dato en Mca y Mpp (Write Through) Dato en caché Escribe dato en Mca, escribe en Mpp hasta que el bloque es reescrito. (Write Back) Dato no en caché Leer de Mpp el dato y actualizar (Write Allocate). Cache Directa. Cada bloque de la memoria principal tiene su posición en la caché y siempre en el mismo sitio. Suponga en el ejemplo siguiente: Microprocesador de 16 bits: direcciones y datos de 16 bits. Memoria caché de 512 Bytes. (bus de direcciones de caché de 9 bits) Memoria principal de 32KBytes. (la mitad del mapa de memoria) Numero de palabras por bloque (K) = 8 (3 bits de dirección). Número de bloques: 512/8 = 64 bloques (se necesitan 6 bits de dirección) Tag = 16‐6‐3 7 bits ( se utilizan sólo 6) Tamaño de palabra de la memoria cache: 16 bits de datos + 7 bits de tag 23 bits 54 Julio 2014 Diseñ ño avanzado de sistemass digitales Figuraa 58. Correspo ondencia en u una memoria caché directa a Cach he Asociativva. Los bloques de la memoria p principal se alojan en ccualquier bloque de laa memoria ccaché, comprobando ssolamente lla etiqueta de todos y cada uno d de los bloques para veerificar acierto. El princcipal inconvveniente es que precissa una circu uitería comp pleja para hacer la co omparaciónn en parale elo de todo os los camppos de etiq queta. Siguiendo los daatos del ejemplo anter ior, M Microprocessador de 16 6 bits: direccciones y dattos de 16 biits. M Memoria caché de 512 Bytes. (buss de direccio ones de cacché de 9 bitss) M Memoria principal de 3 32KBytes. (laa mitad del mapa de m memoria) N Numero de palabras po or bloque (KK) = 8 (3 bitss de direcció ón). N Número de bloques: 51 12/8 = 64 blloques (se n necesitan 6 bits de direección) TTag = 16‐3 13 bits ( sse utilizan s ólo 12) TTamaño de palabra de la memoriia cache: 16 6 bits de da atos + 12 bbits de tag 28 b bits Julio 22014 55 Sistemas ddigitales avanzzados Figuraa 59. Correspo ondencia en u una memoria caché asociativa Cach he Asociativva por Conjuntos. Estaa cache con ntiene las ve entajas de llos dos méttodos anteriores. Está compuesta por “r” bloques y “q” “ conjunttos de moddo que C = q×r , siend do C el nº de bloques d de la memo ria caché. El fun ncionamien nto consiste e en que cadda bloque d de la memo oria principaal tiene asiggnado un cconjunto dee la caché, pero se ppuede ubicaar en cualq quiera de llos bloquess que perteenecen a dicho conjun nto. Ello peermite mayo or flexibilid dad que la ccorrespondencia direccta y menorr cantidad d de comparacciones que la totalmen nte asociativva. Siguiendo el ejeemplo anterrior: M Microprocessador de 16 6 bits: direccciones y dattos de 16 biits. M Memoria caché de 512 Bytes. (buss de direccio ones de cacché de 9 bitss) M Memoria principal de 3 32KBytes. (laa mitad del mapa de m memoria) N Numero de palabras po or bloque (KK) = 8 (3 bitss de direcció ón). N Número de bloques: 51 12/8 = 64 blloques (se n necesitan 6 bits de direección) N Número de bloques po or conjunto = 2; Núme ero de conju untos = 64//2 = 32 5 5 bits d de dirección n TTag = 16‐8 8 bits ( se e utilizan só lo 7) TTamaño de p palabra de la memoriaa cache: 16 bits de dato os + 8 bits dde tag 24 4 bits 56 Julio o 2014 Diseñ ño avanzado de sistemass digitales Figuraa 60. Correspo ondencia en u una memoria asociativa po or conjuntos Ejem mplo de cálcculo de tiem mpo de acceeso. Hago e el cálculo de e la tasa de acierto (hitt) y el tiempo de acceeso efectivo o para un pprograma qu ue se ejecu uta desde laas posiciones de mem moria principal 48 a 95 5 y realiza 110 bucles desde d la posición 15 a 31 en mem moria princcipal. Supon nga una memoria cachee con las sigguientes característicass: ‐ ‐ ‐ ‐ ‐ Memoriaa caché de mapeo direecto 4 bloquees de 16 palabras cada bloque Tiempo d de acierto ((tiempo efeectivo de accceso a Mca) de 80 ns. Tiempo d de fallo (tie empo de accceso a Mpp) 2500 ns., lectura de bbloque. La memo oria cache está vacía een el arranq que y utiliza el modo dde lectura Load‐ through.. Julio 22014 57 Sistemas digitales avanzados Evento 1 fallo 15 aciertos 1 fallo 15 aciertos 1 fallo 15 aciertos 1 fallo 1 fallo 15 aciertos 9 aciertos 144 aciertos Posición 48 49‐63 64 65‐79 80 81‐95 15 16 17‐31 15 16‐31 Tiempo 2500ns 80ns*15=1200ns 2500ns 80ns*15=1200ns 2500ns 80ns*15=1200ns 2500ns 2500ns 80ns*15=1200ns 80ns*9=720ns 80ns*144=12,240ns Comentario Bloque 3 de Mpp a Bloque 3 de Mca Bloque 4 de Mpp a Bloque 0 de Mca Bloque 5 de Mpp a Bloque 1 de Mca Bloque 0 de Mpp a Bloque 0 de Mca Bloque 1 de Mpp a Bloque 1 de Mca Ultimas 9 iteraciones del bucle Ultimas 9 iteraciones del bucle Número total de aciertos = 213 Número total de fallos = 5 213 218 97,7% 213 80 5 2500 218 136 . 4.4 Ejercicios 1) Calcule el número de circuitos de memoria de 16Kx4 necesarios para desarrollar los módulos siguientes: a. 256K x 8 b. 128K x 16 c. 1M x 4 2) Dibuje los diagramas lógicos que muestren la interconexión de un módulo de 4K x 8, con memorias tipo ROM de 4K x 1. El Chip Select de las memorias es activo a nivel bajo. 3) Dibuje los diagramas lógicos que muestren la interconexión de un módulo de 256K x 8, con memorias tipo ROM de 64K x 8. El Chip Select de las memorias es activo a nivel bajo. 4) Genere en la tabla, a continuación. el mapa de memoria para conectar memoria RAM y memoria ROM a un microprocesador de 16 bits (16 bits en el bus de direcciones y de datos), con las siguientes características: a. Bloque de memoria para datos con SRAM del tamaño 16Kx16 en la parte más alta del mapa de memoria usando memorias SRAM del tipo 8Kx16. b. Bloque de memoria para vídeo con SRAM del tamaño 16Kx16 a continuación hacia abajo de la anterior en el mapa, usando memorias de características SRAM de 16Kx 8, y c. Bloque de memoria de programa con EPROM del tamaño 8Kx16 en la parte más baja del mapa de memoria usando memorias del tipo EPROM de 8Kx4. Hacer: 1) Completar Tabla de verdad con el mapa de memoria completo. Los bloques de memoria respectivos que manejan y su posición en el mapa. 58 Julio 2014 Diseño avanzado de sistemas digitales 2) Para la selección cuenta exclusivamente con un descodificador de 3 a 8 y puertas. Dibujar en la figura del descodificador la conexión necesaria de las señales del microprocesador de la figura para generar las señales de /CS de las memorias (activas a nivel bajo). La tabla de verdad del descodificador se puede ver a continuación, Enable, S2,S1, S0 son las entradas y x0…X7 las salidas. 3) Haga de nuevo la conexión de los módulos, sustituyendo al decodificador, con un módulo descrito en VHDL Microprocesador A0 ‐ A15 D0 ‐ D15 Decodificador 3 a 8 /X0 /X1 /X2 S2 /X3 S1 /X4 S0 /X5 /X6 /X7 ENABLE 16 16 /CS R//W TABLA DEL DESCODIFICADOR Enable S2 S1 S0 1 X X X 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 X0 X1 X2 X3 X4 X5 X6 X7 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 Posición de memoria A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 CS0 CS1 CS2 CS3 (hexadecima) inicial‐final 5) Se va a proceder a una ampliación de memoria con memoria cache a un microprocesador. Tal como se está haciendo en el laboratorio. Como estamos usando una FPGA, no disponemos de mucha memoria interna, por ello una de estas ampliaciones será un módulo de memoria principal (externo a la FPGA) y una memoria cache (interna a la FPGA) para instrucciones y otra para datos. Considere el tamaño de las memorias caché (Mca) de 1K x 16 y una memoria principal (Mpp) de 1M x 16. Asuma que el tamaño de cada bloque/segmento de cache es de 32 posiciones para ambas cachés. El funcionamiento de ambas es idéntico. Julio 2014 59 Sistemas digitales avanzados a. Dibuje el diagrama entre Mca y Mpp para una configuración de memoria caché asociativa. ¿Cuántos segmentos hay en memoria principal? ¿Cuántos segmentos hay en memoria caché? b. ¿De qué tamaño es el campo TAG para localizar un segmento dentro de la memoria? ¿De qué tamaño debe ser en estas condiciones, la memoria para almacenar todos los TAGs de la cache? c. Considere el siguiente programa para el cálculo del tiempo efectivo de acceso (Tef).El programa es un bucle que se hará 10 veces sobre un conjunto de datos. i. Posiciones del programa en memoria principal: 64 a 127 ii. Datos del programa en las posiciones 128 a 192 iii. El tiempo de acierto es de 50 ns. iv. El tiempo de fallo es de 300 ns. v. La cache está inicialmente vacía. vi. Con estas condiciones, ¿cuándo se llena la cache? vii. Calcule el número total de aciertos (hits) y fallos (miss) así como el Hit‐ratio (Thit) y el Tiempo efectivo de acceso (Tef). 60 Julio 2014 Diseñ ño avanzado de sistemass digitales 5. D Diseño se egmenta ado En eeste capítu ulo se aborda el disseño de nu uevas arqu uitecturas oorientadas a la consecución de altas veloccidades de cálculo y de altas presstaciones coomputacion nales. Se trrata, pues, de diseñarr arquitectuuras óptimaas para el procesamieento de daatos a veloccidades eleevadas; ade emás de eemplear nu uevos meca anismos y topologías para mejo orar la eficaacia de la ru uta de datoos. La descrripción de e esta metodoología de diseño segm mentado see ha basado en la obbra de F.M Moreno, Miicroelectrónnica. Circuitos y Sistemas. Una p perspectiva histórica.” En este sentido o el objetivo o no es esttudiar la me ejora de técnicas con las que obtener buen nos circuitoss combinacionales o q ue permitan reducir la a profundid ad de la lóggica o ecualizar las ru utas de datos o bienn optimizar el rutado de determ minadas se eñales de hacer es estudiar en n profundid dad diferenttes arquiteccturas globaales. Lo quee se pretend hardware que p permitan ob btener la mááxima veloccidad computacional; een algunos casos a partir de las características del alggoritmo que se desee procesar. Por ejemp plo, el proceesado digitaal de señal, codificacióón de imáge enes o cálculo aritméticco intensivo o. Como se ha com mentado, to odo sistemaa digital resp ponde a una a estructuraa compuestta por dos ggrandes blo oques, como o el de la fi gura siguiente; un bloque de conntrol y un bloque con la ruta de datos. Figuraa 61. Arquitecctura genérica a de un sistem ma digital. El blloque de control c estáá compuessto por una o varias máquinas de estado o, sin embaargo la com mplejidad haardware de l sistema esstá definida a en el bloquue de camin no de datos, en dondee se define el número de puertass equivalentte, su consuumo y veloccidad. En este sentido o, este últim mo bloque de camino o de datos, su diseño arquitecturral se pued de abordar de diferen ntes formass: con un diseño d de arquitecturra serie, co on un diseñ ño de arquittectura paralelo o con un diseño ssegmentado o (pipeline)). Las A Arquitecturaas Serie se caracterizaan por la uttilización de e pocos reccursos hard dware que han de ser utilizados ttantas vece s como núm mero de da atos han de ser processados. Por ello, su efficacia en cuanto a vvelocidad es muy lim mitada ya que existe e una Julio 22014 61 Sistemas ddigitales avanzzados depeendencia dirrecta con el volumen dde datos que se ha de procesar. E l Control de e este tipo de arquiteccturas, sin sser excesivaamente com mplejo, requ uiere de unna sincronización entree la entrad da de dato os y el alm macenamien nto de resultados, caaracterísticaa que tamb bién aparece en las Arq quitecturas Pipeline. Las A Arquitecturaas Paralelass o de Proceesamiento P Paralelo fun ndamentan su diseño yy, por tanto o su contro ol, en la obttención de un conjuntto de opera aciones funncionalmentte sin depeendencia dee los datoss que perm mita su pro ocesamiento o de formaa paralela en el tiempo. El costee hardware asociado a estas Arquitecturas ess muy elevaado y ha de estar justifficado, neccesariamentte, en térm minos de eficacia e com mputacionaal. El Contrrol es sencillo mientrras que el tiempo dee procesam miento está limitado por la Unidad Funccional más leenta. Finalmente, las Arquitectu uras Segmeentadas o Pipeline P suelen ser coonsideradass una terceera vía alteernativa a las dos esttudiadas an nteriormente. Todo eello debido a su destaacada importancia en el diseño de d sistemas digital es integrrados, micro oprocesado ores, sistem mas empotrrados, etc; pues conju ugan eficaccia (en cuanto a cálcu ulo computaacional) y co oste moderrado (hardw ware emplea ado). El co oste de estee tipo de Arrquitecturass es el aum mento de la complejidaad de su Control, sin eembargo la relación coste hardwaare y velocid dad puede modularse,, por lo que e para sistemas digitales de comp plejidad meedia que permitan diferentes tipoos de algorittmos, es exxcelente, taal es el caso de los m microproce esadores y procesadorres de señaal. La referrencia biblio ográfica tiene ya algunnos años de escrita, desd de 1981, poor P.M. Kogge en su ob bra “The Architecture o of Pipelinedd Computerr”. 5.1 IIntroducciión al pipe eline La seegmentació ón (Pipeline e) surge ppor la nece esidad de aumentar la velocidaad de proceesamiento, mantenie endo siem mpre un compromiiso entre velocidad d de comp putación y ccoste de la arquitecturra. La segme entación exxplota el pa ralelismo co on un costee mínimo de d hardwarre y la veloocidad de proceso, sin necesidaad de aumentar excesivamente la velocidaad de reloj.. Es decir, se busca optimizar o ell procesam miento temp poral de los datos con aarquitecturras digitaless secuenciales y síncronnas. Partiendo de un n sistema secuencial s ssíncrono ge enérico com mo el que sse muestra en la figura siguiente,, se puede aafirmar quee la velocidaad de proce esamiento eestá limitad da por el rettardo del blloque llamaado Unidad Funcional. Figuraa 62. Arquitecctura genérica a de un sistem ma secuenciall síncrono. 62 Julio o 2014 Diseñ ño avanzado de sistemass digitales La seegmentación tiene com mo objetivoo dividir al U Unidad Funccional en vaarias etapass (Ek). Cadaa etapa co ontiene un na unidad de proce eso y un registro ppara almacenar temp poralmente los datos. El procesoo de los daatos en la etapa e correespondiente e y su almaacenamiento o en el regiistro se rea liza en un cciclo de relo oj. La frecueencia de re eloj es ahora limitada p por la etapaa E más lennta. El coste e hardware del caminoo de datos no es meno or, pero es e relativam mente pareecido a la arquitectura no‐segm mentada co on el aumeento de loss registros d de almacennamiento. SSi embargo, la complejjidad del bloque de co ontrol si con nlleva un au umento. Figuraa 63. Arquitecctura de un sistema secuenncial síncrono o segmentado o. Realiizada esta sencilla ide ea, es neceesario el planteamien p nto del núm mero de etapas posib bles y las funciones de coste que lla segmentaación nos permitirá reaalizar a travvés de una m metodologíía de diseño o segmenta do. 5.1.11 Diseño segmentad do Desd de un punto o de vista del d flujo dee datos, hay dos clasifficaciones dde arquiteccturas segm mentadas, Lineal y no lineal. Pipelline Lineal. Formada p por un conjuunto de etaapas conecttadas en caascada sin b bucles de reealimentación. Tal es el caso de la figura ante erior. Pipelline No Lineeal. Formad da por un coonjunto de etapas en d donde puedden existir b bucles de reealimentación, tanto hacia adelannte como haacia atrás. V Véase la figuura siguiente. Figuraa 64. Arquitecctura de un sistema secuenncial síncrono o segmentado o no lineal. Desd de un punto o de vista d del tipo de ooperaciones que tiene en que haceer los datoss, hay dos cclasificacion nes, del tipo o estático y del tipo din námico. Pipelline Estático o. Realiza una operacióón fija sobre e el conjuntto de datos en la etapaa. Pipelline Dinámico. Realizaa diferentess operacion nes sobre el e conjuntoo de datos en la etapa. Julio 22014 63 Sistemas ddigitales avanzzados Se pueden enco ontrar pipe eline lineal estático o dinámico así a como piipeline no lineal estáttico o dinám mico. Como o puede ustted darse cuenta, c el control c del pipeline ess muy impo ortante, indicando en ccada etapa eel momento o y la opera ación que tieene que hacer. Para comenzar a explicarr el métoddo de diseño, el con ncepto máss representtativo relaccionado con n la segme entación ess la denominada Tabla de Reserrva. La tabla de reserrva es la representació ón temporaal de los datos a lo largo de las ddiferentes etapas (Ek) een las que sse procesan n del pipeli ne. La tablaa es la reprresentación por un lad do del tiempo (en ciclo os de reloj) y del númeero de etap pas en el ottro. La repreesentación de la tablaa de reservaa de un Pipe eline Lineal Estático de e 4 etapas e es la siguiennte, donde d1 es el prrimer dato q que entra, procesándoose en las d diferentes E Etapas, desdde E1 a la E E4 en cicloss consecutivos de relojj. CICCLOS DE RELOJ T1 T2 T4 EE T T A A P P A A S E1 d1 E2 d1 E3 E4 R1 T3 d1 1 Figuraa 65. Tabla de e reserva de u un pipeline linneal estático d de 4 etapas. La ttabla de reserva r es una herr amienta para p diseña ar el contrrol del sisstema segm mentado. A partir de laa misma see obtiene el procesamiento óptim mo de los datos, d dand do lugar a u un diagramaa de tiempoo. Por ejemp plo suponga a un pipelinne lineal esttático de 4 etapas. El diagrama d de tiempo ppara el flujo o de datos es el mostrrado en la ffigura os es consttante desde e la etapa E1, obteniiendo el primer anterior. El flujjo de dato resulltado cuatro o ciclos de reloj despu és de haber entrado a al pipeline (RR1). Este tie empo es deenominado Latencia In nicial y es ell coste en tiempo que la arquitecctura no pro oduce datos. Transcurrida esta latencia iniciaal el sistema entrega a a la salida u n dato por ciclo, siempre y cuand do se mante enga constaante el flujo o de datos a a la entradaa. Si este flu ujo de 64 Julio o 2014 Diseño avanzado de sistemas digitales datos es interrumpido, el pipeline se vacía. El ciclo se repite para un nuevo ciclo de datos. Por lo que para una máxima eficiencia en un arquitectura pipeline, el volumen de datos a la entrada para su procesamiento, en cuanto mas grande, mejor. 5.1.2 Características principales Aceleración (Speedup) (S). Es el incremento de velocidad de un pipeline estático de K etapas. Se expresa como el cociente entre el número de ciclos de reloj necesario para procesar n datos en una arquitectura no‐pipeline y el número de ciclos de reloj necesarios para la misma arquitectura una vez segmentada. 1 Si el número de datos, n, es muy grande, la aceleración tiende a su valor máximo. → ∞; Eficiencia (E). Es la media absoluta del incremento de velocidad y el número de etapas empleado para ello. Tal que; 1 ; → ∞; 1 Caudal (Throughput) (Th). Es el número de datos procesados por unidad de tiempo. Este parámetro se calculo en el ciclo estable del pipeline, es decir cuando existe un flujo constante de datos, una vez pasado el ciclo de latencia inicial. 1 1 ; → ∞; Al igual que la Eficiencia, si el número de datos, n, es grande el caudal tiende al límite de la frecuencia de reloj. Lo que significa, es que la velocidad de procesamiento máxima en el ciclo estable del pipeline es de 1 dato por ciclo de reloj. Suponga el ejemplo de la figura anterior, del pipeline lineal estático de 4 etapas. 1 4 4 3 1 3 ; → ∞; 4 3 4 1 ; → ∞; 3 ; 1 → ∞; 1/ Julio 2014 65 Sistemas digitales avanzados 5.1.3 Diseño pipeline El apartado anterior trata con un pipeline lineal y estático, en donde el control de la arquitectura segmentada es sencillo. En este apartado se introduce a través de un ejemplo el control de arquitecturas segmentadas con pipeline no‐lineal y estático. Siendo este el caso más común en el diseño de arquitecturas de ordenadores y diseño de microprocesadores segmentados. Se recurre a un ejemplo para obtener las diferentes variantes en la organización del diseño, que en definitiva repercuten en la organización del control. Suponga un pipeline no‐lineal y estático de 3 etapas con la tabla de reserva siguiente. Esta tabla indica como el dato reutiliza las Etapas E0, E1 y E2 en diferentes ciclos de reloj, es decir el dato se realimenta en diferentes etapas y en diferentes ciclos de reloj. Por lo que el diseño del control ya no es tan evidente y requiere mayor complejidad en la especificación de la maquina de estado, incrementado el uso adecuado de multiplexores para el camino de datos. CICLOS DE RELOJ T0 T1 T2 T3 T4 T5 T6 T7 E0 D D D D E1 D D E2 D D Figura 66. Tabla de reserva y cronograma de un ejemplo de pipeline no‐lineal estático de 3 etapas. Se exponen 3 casos de ensayo para establecer la estrategia de control y obtener los mejores resultados para la aceleración, eficiencia y caudal. Caso a). El primer caso consiste en esperar a que termine el primer dato en procesarse. Por lo que como es irrelevante, pues es un caso tonto, no se trata aquí. Caso B). Para este y a primera vista se establece cuando se puede insertar el segundo dato al pipeline. Este primer caso, lo podemos denominar caso “ansioso” pues se efectúa por inspección. Se introduce el segundo dato (D2) tres ciclos después del primero, evitando colisión en todo momento y en todas las etapas. Ocho ciclos después se introduce el tercer dato a procesar (D3) y así sucesivamente. Tal que la introducción de datos se produce con una secuencia de repetición de 3T, 8T, 3T, 8T…‐ el ciclo estable es de 11T. T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16 T17 E0 D1 D1 D2 D2 D1 D1 D2 D2 D3 D3 E1 D1 D1 D2 D2 E2 D3 D3 D3 D3 ciclo estable (11 ciclos de reloj) D1 D1 D2 D2 D3 Figura 67. Tabla de reserva y cronograma de un ejemplo de pipeline no‐lineal estático de 3 etapas con una estrategia de control por inspección. 66 Julio 2014 Diseño avanzado de sistemas digitales Este ciclo para este ejemplo es de 11 ciclos de reloj cada 2 datos procesados. Este dato permite, definir otro parámetro importante, la latencia media, que es igual a: 11 2 5,5 4 11 36% El porcentaje de utilización en el Ciclo Estable es el siguiente: 8 11 1 4 11 73% 2 36% 3 La aceleración, la eficiencia y el caudal de datos es el siguiente: 16 11 1,45 0,483 3 2 11 0,182 1 1 5,5 2 Caso c). Realizado el primer caso por inspección, se ve que en ningún caso tenemos ninguna de las Etapas ocupadas al 100%, por lo que puede ser posible usar otra estrategia para introducir los datos de otra forma en base a prueba y error, comprobando que no existe colisión en la tabla de reserva. En este caso, se espera 4 ciclos entre el primer dato y el segundo. El Ciclo Estable aparece a partir del ciclo de reloj T4. Calculando de nuevo, se obtiene: T0 T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13 T14 T15 T16 T17 E0 D1 D1 D2 D2 D1 D1 D3 D3 D2 D2 D4 D4 D3 D3 D5 D5 E1 D1 D1 D2 D2 E2 D1 D1 D2 D3 D2 D3 D3 ciclo estable (8 ciclos de reloj) D4 D4 D3 D4 D4 Figura 68. Tabla de reserva y cronograma de un ejemplo de pipeline no‐lineal estático de 3 etapas con una estrategia de prueba y error. 1 8 8 4 8 100% 2 16 8 3 2 Julio 2014 50% 3 8 4 8 50% 2 0,66 0,25 67 Sistemas digitales avanzados 1 1 2 4 La secuencia de latencias es <4T, 4T, 4T…> y ciclo estable aparece en (4T, 4T) = 8T. Se puede ver en los porcentajes de ocupación que E1 está al 100%, pudiendo decir que no podemos obtener una mejora con este método de prueba y error. Para formalizar el método, Kogge establece que, la mínima latencia alcanzable, M.A.L., es mayor o igual que el máximo del número de veces que se utiliza una etapa para procesar un dato en la tabla de reserva original. El MAL en este caso es 4. Por lo que se puede decir que la separación media entre 2 datos consecutivos a procesar es 4. A partir de aquí no es posible introducir datos a un ritmo mayor sin evitar las colisiones. La formalización del método consiste en crear un vector de colisiones Vc(i). Este vector de colisiones es un array booleano de longitud igual al número de ciclos de reloj usado en la tabla de reserva, indicando con un “1” la colisión en esa etapa si se introduce un nuevo dato en el ciclo de reloj “i”. En caso contrario se pone un “0”. Además se define el conjunto de latencias prohibidas CLP(k) para cada etapa como un array de enteros de longitud variable e igual a aquellas latencias en las que se producen colisión. Por lo que el CLP del pipeline será la unión del CLP de cada etapa. Se puede observar que en el ejemplo original anterior, para la primera etapa E0, si se deja transcurrir 1 ciclo de reloj antes de introducir un dato, se produce colisión en T1 y en T7, por lo que las latencias 0 y 1 pertenecen al CLP de la etapa E0. Continuando con el análisis, las latencias 5,6 y 7 también lo son. En definitiva, el conjunto de latencias prohibidas para la etapa E0, E1 y E2 y el conjunto total para el pipeline del ejemplo son las siguientes: CLP(E0) = {0,1,5,6,7} CLP(E1) = {0,2} CLP(E2) = {0,2} Por lo que el es, CLP = Uk CLP (i) = {0,1,2,5,6,7} El vector de colisiones Vc(i); VC(I) = {1,1,1,0,0,1,1,1} Se establece un Diagrama de Estados a partir del vector de colisiones. Este diagrama refleja en qué momento se puede introducir un nuevo dato sin que existan colisiones. Para obtener esta información se parte del vector de colisiones original y se desplaza a la izquierda introduciendo un “0” por la derecha, 68 Julio 2014 Diseñ ño avanzado de sistemass digitales Figuraa 69. Diagram ma de estados y funciones ppara obtener la latencia a p partir del Vecctor de colisio ones. Como conclusió ón al método, se parte de un estado inicial o vector inic ial de colisiones. Cadaa vez que transcurre un u ciclo de reloj sin in ntroducir un n nuevo daato, el Vector de Colissiones se deesplaza haccia la izquieerda introdu uciendo un “0” por la derecha. En la Figurra anterior se apreciaa que con Latencia 3, 3 el Vector de Colisiiones resultante (estaado del pipeeline) será de; Vc = <00 0 1 1 1 0 0 0 0>. El “0” de “mayorr peso”, es decir, el deel extremo izquierdo de el vector in dica que se e puede intrroducir un nnuevo dato en el sistema. Hasta ese momento no habbía sido possible pues el e valor de dicho elem mento habíaa sido “1”. Como consecueencia de laa introducc ión de un nuevo dato, el Vectoor de Colissiones resulltante se obtiene o reaalizando la operación lógica “OR R” entre diicho vectorr y el original, resultando (Ver Fiigura) que V Vc = <1, 1, 1, 1, 1, 1, 1 1, 1>. Para el tercer d dato a s se pod drá introdu cir en el sistema con Latencia 88, pues el vector v proceesar, este sólo resulltante está formado exclusivame nte con “1”” y el prime er “0” (quee indicará que se pued de introducir un nuevo o dato). En la posición de “mayor peso” de vvector aparecerá tras 88 ciclos de reloj. Es sen ncillo deduccir que, en este último o caso, la opperación “O OR” se realizzará entre eel Vector de Colisione s original y un vector compuestoo exclusivam mente por ““0”; obtenieendo de nuevo el Vecttor de Colissiones origin nal. En resuumen, esta parte del d diagrama está indicando que se pueden introducir da atos sin collisiones con n una secuencia de lattencias 3T, 8 8T, 3T, 8T,… … o CICLO (3 3, 8). Siem mpre existe una opción adicional qque consiste en espera ar 8 ciclos dde reloj antes de intro oducir un nu uevo dato, CICLO (8,8 ), Este ciclo o resulta ba astante inefficiente com mo se podrrá deducir sin mayor dificultad. Julio 22014 69 Sistemas digitales avanzados Finalmente, existe la posibilidad de introducir un dato dejando transcurrir 4 ciclos de reloj desde el vector original (Latencia 4) e introducir un nuevo dato cada 4 ciclos a partir del vector resultante7, CICLO (4, 4). En resumen, existen las siguientes estrategias posibles: CICLO (3, 8) ‐ CICLO “ANSIOSO”, ya estudiado en el caso anterior. CICLO (8, 8) ‐ CICLO “TONTO” CICLO (4, 8) ‐ CICLO “CASI‐TONTO” CICLO (4, 4) ‐ CICLO “ÓPTIMO” SEGÚN LA AFIRMACIÓN DE P. M. KOGGE ESTUDIADA ANTERIORMENTE. Existe otras estrategias de optimización para alcanzar un caudal máximo y que no cumple estrictamente el M.A.L., tal como lo establece Kogge en su método. Consiste en introducir una o varias etapas más de registros que incrementan los ciclos de espera, pero que ayudan a optimizar la tabla de reserva cuando se introducen más datos a procesar en el pipeline. Suponga la siguiente tabla de reserva de un arquitectura segmentada con pipeline no‐lineal y estático: T0 T1 T2 E0 D D E1 D D E2 D El conjunto de latencias para cada etapa, el vector de colisiones y el diagrama de estados son los siguientes: CLP(E0) = {0,2} CLP(E1) = {0,1} CLP(E2) = {0} Por lo que el CLP es, CLP = Uk CLP (i) = {0,1,2} El vector de colisiones Vc(i); VC(I) = {1,1,1} 70 Julio 2014 Diseñ ño avanzado de sistemass digitales Figuraa 70. Tabla de e reserva y Dia agrama de esstados que no o cumple el M MAL. Apliccando el critterio de Koggge, el MALL es igual a 2, sin emba argo el diagrrama de esttados nos indica una laatencia media de 3, maayor que el MAL. La esstrategia co onsiste en in ntroducir unn estado de e espera adicional en laa etapa E2, “EA” en laa figura sigguiente, en n la tabla dde reserva,, obteniend do un nuevvo diagram ma de estad dos. Que peermite alcan nzar un el M MAL igual a 2. T0 T1 T2 D E0 D E1 D D D E1 D E2 D D E2 D EA E0 D T0 T1 T2 T3 D CLP(E0) = {0 C 0,2} D CLP(E1) = {0 C 0,2} D CLP(E2) = {0 C 0} CLP(EA) = {0 C 0} Tabla de rreserva origginal Tablaa de reserva modificad da con un ciiclo d CLP == Uk CLP (i) = {0,2} y e el Vc= {1,0,11,0} T0 T1 T2 T 3 T4 T5 T6 T7 T8 T9 E0 D1 D D2 D1 D2 D3 D4 4 D3 D4 D5 D E1 D1 D2 D1 D2 D3 3 D4 D3 D4 D D5 E2 D1 D2 EA D1 D2 D3 3 D4 ciclo esttable (4) D3 D4 D5 Tabla de reservaa con 5 datos en el pip peline Julio 22014 71 Sistemas ddigitales avanzzados ma de estados con un ciclo d de espera adiicional. Figuraa 71. Nueva TTabla de reserrva y Diagram 5.2 Reduced d instruction set com mputer: R RISC 5.2.11 Introdu ucción a RISC A lo largo de estos 40 añoss, concretam mente desd de fines de los años 700s y principios de los 80’s, es frecuente f encontrar arquitecturas diseña adas con fines doce entes, das ellas se e han simp lificado, alggunas indusstriales, de bajo consumo o gennéricas. Tod tanto o que están n muy lejos de los diseñños actuales y originale es. Concrettamente en 1975 los aarquitectos de IBM cuestionaron la máquina 801, dado que la coomplejidad para conseguir una b buena relacción coste/rrendimiento o no era bu uena. Pero nno ha sido hasta mediados de lo os años 80 cuando Heennessy y Patterson P (e en UC Berkkeley y Stanford respeectivamente) decidierron iniciar el movimiento RISC (Reduced Instruction n set Computer) con el modelo ttradicional CCISC (Comp plex Instructtion Set Com mputer). mplica enttender el ciclo y laa ejecución de Entender las arquitecturras RISC im instrucciones paara mejorar la relaciónn coste/ren ndimiento, en lugar dee incrementar el o que su obbjetivo es offrecer número de instrrucciones siiguiendo la idea tradicional. Por lo instrucciones simples s y sencillas, reduciendo o el área y optimizzando consumo energético. En eeste apartaado se intrroduce la idea y la alternativa RISC. El ddocumento o que comp plementa eeste apartad do y que deentro del co onjunto de prácticas dde laboratorio se aborda el diseñ ño, se encu uentra en lla página web w de la asignatura a con el nom mbre: “Arquitectura del micropro ocesador ICCAI‐RiSC‐16”” de Jose D Daniel Muñooz Frías. Para un estud dio más deetallado de e análisis dde la ejecu ución de in nstruccionees y prograamas, consultar los texxtos especializados y ccitados en la bibliograffía, preferenntemente d de los autores Henessyy y Patterso on. Duraante mucho os años la memoria fuue un recu urso costoso o. Por lo qque se penssó en mejo orar este aspecto a travvés de una mejora de la arquitecttura. La miccroprogramación (la deecodificació ón de instru ucciones a t ravés de memoria), también se veeía afectadaa. Por lo qu ue tener un n programaa con menoos instrucciiones se co onsiguen doos cosas: menos m espacio de mem moria y me enos instruccciones que e alimentarr desde meemoria, luego se e ejecución. aumeentaba la veelocidad de 72 Julio o 2014 Diseño avanzado de sistemas digitales En general el principio RISC se basa en las siguientes dos premisas: De carácter general. Hardware directo especialmente con funciones complejas, con relojes lentos o segmentación compleja. Este esquema se sigue un 90% ‐ 10% haciendo aquellas funciones lentas muy rápidas De carácter específico. Uso extensivo de simulación de arquitecturas y programas, manteniendo aquellas que demuestran cuantitativamente una mejora en el rendimiento y reducen los ciclos por instrucción (CPI). El resultado es: hacer más énfasis en el software Las tablas siguientes reflejan ambas ideas de las que estamos hablando: ¿Qué es RISC? (Reduced Instruction Set Computer) Incluye (por lo general): registros de propósito general instrucciones de tamaño fijo (3 campos) FORMATO: • arquitectura tipo load‐store • modos simples de direccionamiento • instrucciones sencillas Ejemplos: DEC Alpha MIPS Ventajas: Mejor compilación Fácil de implantar pipeline (segmentación) Julio 2014 ¿Qué es CISC? (Complex Instruction‐Set Computer) Incluye (por lo general): • instrucciones de formato variable instrucciones memoria‐registro • modos complejos de direccionamiento • instrucciones complejas CALL, EDIt..etc. Ejemplos: DEC VAX IBM 370 x86 Ventajas: Mejor densidad de código. 73 Sistemas digitales avanzados Figura 72. Tabla de referencia RISC vs. CISC y cronología de evolución RISC (Hennesy y Patterson). Desde el punto de vista de diseño hardware, la ecuación que rige el principio de rendimiento es la siguiente: Donde; MIPS: Million Instructions Per Second normalizados a una tarea. Tal que el modelo de rendimiento se puede expresar como: Velocidad de reloj Rendimiento de CPU = ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ Instrucciones ejecutadas por ciclos de reloj Velocidad de Reloj – Velocidad de reloj de la máquina o del procesador Instrucciones ejecutadas – Instrucciones dinámicas contadas por un banco de registros Ciclos por Instrucción – Promedio de ciclos por instrucción Figura 73. Ecuación y modelo de rendimiento. 74 Julio 2014 Diseño avanzado de sistemas digitales El rendimiento se puede mejorar reduciendo cualquiera de estos tres factores. ¿Pero cómo entonces podemos hacer una arquitectura RISC ?. En principio y desde el punto de vista del ingeniero de diseño tenemos que pensar en los siguientes términos: Aumentando la velocidad de reloj (tiempo/ciclo). Implicaciones: o Diseño VLSI. o Entendimiento de la arquitectura o Alta integración del sistema de memoria Reduciendo los ciclos por instrucción (ciclos/inst). Implicaciones: o Mejora en el conjunto de instrucciones de la arquitectura o Mejora en el sistema de memoria o Tecnología de compiladores Reduciendo el número de instrucciones (inst/task). Implicaciones: o Diseño balanceado del conjunto de instrucciones o Optimización de la tecnología del compilador 5.2.2 Diseño superescalar 5.2.3 Diseño vectorial 5.3 Ejercicios 1) Sistema de procesamiento numérico. Este sistema procesará el siguiente algoritmo Z(i) = [A(i) + B(i) ]3. Los datos vienen en 4 bits en binario natural. El resultado se dará en 8 bits. Se pide: a. Indique en una lista la secuencia y las operaciones para un ciclo del algoritmo. b. Haga un diagrama de bloques general del sistema detallando los subsistemas y su ruta de datos, utilizando bloques sumadores, multiplicadores y registros de 4 bits con retardos de 10 y 20 ns, para el sumador y multiplicador respectivamente, y Tpropagación=5 ns y Tsetup=2 ns para el registro. Calcule el tiempo necesario para una operación del algoritmo en nanosegundos c. Optimización en tiempo. i. Planifique con pipeline lineal. No reutilice unidades funcionales, en esta versión no tenemos limitación de área. Registre donde sea necesario, analice el algoritmo y vea si hay paralelismo de operaciones. ii. Dibuje una tabla de reserva según el pipeline diseñado anteriormente. Indicando al menos dos ciclos de operación del algoritmo iii. Calcule el tiempo de operación para un número ilimitado de datos a la entrada. iv. Indique la aceleración obtenida respecto al apartado 2). d. Optimización en área. i. Planifique un pipeline reutilizando unidades funcionales. Disponemos de un multiplicador y un sumador. Utilice multiplexores Julio 2014 75 Sistemas digitales avanzados del ancho que considere. Indique sus entradas y salidas correspondientes. Recuerde indicar dónde está la salida de datos o los registros en donde se almacena la salida. ii. Dibuje la nueva tabla de reserva según el pipeline diseñado. Indicando al menos dos ciclos de operación del algoritmo. iii. Indique la aceleración obtenida respecto al apartado b) y c). iv. Dibuje el diagrama de estados del control para este caso, detallando las entradas y salidas necesarias para la temporización del sistema. Especifique este diagrama en VHDL. 76 Julio 2014 Diseño avanzado de sistemas digitales 6. Diseño orientado a telecomunicaciones 6.1 Introducción al diseño para comunicaciones 6.1.1 Comunicaciones digitales 6.1.2 Diseño de interfaces 6.2 Interfaces con dispositivos 6.2.1 Las comunicaciones RS232 6.2.2 Las comunicaciones RS485 6.2.3 Las comunicaciones SPI El estándar SPI (Syncronous Peripheral Interface) es un enlace de datos en formato serie, del tipo síncrono y que bidireccional diseñado para la comunicación entre dispositivos periféricos. Fue creado inicialmente por Motorola y posteriormente adoptado por diferentes fabricantes. Actualmente es un estándar de alta velocidad y distancias cortas, hasta los 400Mhz y 10 a 20 cms. y tiene un uso más extendido entre dispositivos en el mismo PCB. El “bus” SPI utiliza 4 señales (MOSI, MISO, SCK, CS) y un esquema de protocolo maestro/esclavo. Este protocolo sueles ser hardware, pero también es posible desarrollarlo por software utilizando un puerto de un microprocesador cualquiera. MOSI y MISO son señales de datos síncronos, mientras que la señal SCK es la señal de reloj. Por cada pulso de reloj, se señaliza un bit de información, sea de entrada o salida. Por lo que 8 pulsos de reloj son necesarios para transferir 1 byte. Mientras que CS sirve para habilitar el dispositivo esclavo. Las funciones específicas de cada señal son: Master In Slave Out (MISO) o (SO). Línea del esclavo para enviar datos al maestro. Master Out Slave In (MOSI) o (SI). Línea del maestro para enviar datos a periféricos. Serial Clock (SCK). Reloj generado por el maestro para sincronizar la transmisión de los datos. Slave Select pin (SS) o (CS). Asignada a cada uno de los dispositivos el maestro la utiliza para habilitar o inhabilitar la comunicación. Esto protege de falsas transmisiones por culpa de posibles ruidos en los cableados. Julio 2014 77 Sistemas digitales avanzados Hay que prestar especial atención a las hojas de las características técnicas (datasheet) del dispositivo esclavo para generar la comunicación. A continuación se detalla un protocolo SPI para una memoria EEPROM y un dispositivo maestro (por lo general un microprocesador). Figura 74. Funcionalidad del bus SPI (Atmel‐8707E‐SEEPROM‐AT25010B‐020B‐040B‐Datasheet_052014). Figura 75. Ciclo de lectura SPI en una memoria EEPROM (Atmel‐8707E‐SEEPROM‐AT25010B‐020B‐040B‐ Datasheet_052014). Figura 76. Ciclo de escritura SPI en una memoria EEPROM (Atmel‐8707E‐SEEPROM‐AT25010B‐020B‐040B‐ Datasheet_052014). 78 Julio 2014 Diseño avanzado de sistemas digitales 6.2.3.1 Controlador SPI en VHDL Observando las figuras anteriores, el controlador SPI debe inicializarla el maestro con una trasferencia de datos en cada ciclo de reloj de la señal SCK, el maestro escribe entonces en la señal MOSI un bit y lee un bit de la señal MISO. El dato simplemente es transferido desde un registro de desplazamiento de forma síncrona con el reloj en un modo tipo FIFO. Si el formato es bidireccional la comunicación es simultánea, si es bidireccional, las figuras anteriores describen un ciclo de lectura y un ciclo de escritura. El ciclo de escritura del controlador SPI de la figura anterior, visto desde el microcontrolador o desde una FPGA, puede ser el siguiente: Código VHDL 6.2.4 Las comunicaciones I2C La comunicación I2C o I2C es un bus o protocolo serie que soporta multiples dispositivos esclavos conectados a un dispositivo maestro. Consiste de solamente dos líneas, una bidireccional de datos (SDA) y otra de sincronización o reloj (SCL). La velocidad de este bus no es muy alta, pero es considerablemente suficiente para muchos dispositivos periféricos. El estándar maraca una velocidad de 100Khz, pero hay dispositivos que llegan a los 400Khz. Cada dispositivo conectado al I2C tiene una dirección única, tal que el maestro conoce de antemano los dispositivos conectados y sus direcciones. El maestro controla el Julio 2014 79 Sistemas digitales avanzados acceso al bus y los dispositivos controlados son los esclavos. La conexión típica de este controlador es la de la siguiente figura: Figura 77. Conexión de un bus I2C. El protocolo I2C es sencillo, cuando el bus está en reposo, ambas señales SDA y SCL se encuentran a nivel lógico “1”. El maestro inicia la comunicación (siempre) con una transferencia (START), cambiando SDA a “0”. Condición considerada como “bus ocupado”. A continuación envía la dirección del dispositivo esclavo (7 bits) seguida de un octavo bit (Read/Write), donde un “0” significa escritura del maestro al esclavo, lectura en caso contrario. A continuación el maestro envía un bit por ciclo de reloj sobre la línea SCL en un formato MSB (enviando en primer lugar el bit más significativo). La transmisión termina cuando SDA cambia a nivel alto. Figura 78. Condiciones de inicio y final de transmisión, protocolo I2C y secuencia de datos para escribir un registro en el dispositivo esclavo (a) o en su caso lectura (b). (Enoch Hwang, April 2008) 80 Julio 2014 Diseño avanzado de sistemas digitales Como puede observarse en la figura, el dispositivo esclavo cuya dirección coincide con la dirección del maestro, inicializa un proceso de reconocimiento en la línea SDA, poniendo a nivel bajo (“0”) SDA en el noveno ciclo de reloj de la señal SCL (ACK). El octavo bit indica si es una lectura o escritura (R/W). A partir de aquí puede también observarse que el tamaño de la trama de datos con 8 bits con el MSB primero, excepto la señalización START y STOP. La única condición es que, SDA no cambie cuando la señal SCL está en nivel alto (“1”). No hay restricción de la longitud de bytes transmitidos. Cada byte transmitido es seguido por un bit de ACK. Para asegurar la comunicación, esta se finaliza levantando la señal SDA durante el ciclo de ACK (al final de un byte). 6.2.4.1 Controlador I2C en VHDL -- Controlador bus I2C -- Sadot Alexandres -- DEAC - ICAI library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.all; entity i2c_controller port ( clk, rst : init, end_tx : data_tx : scl, sda : end i2c_controller; is IN STD_LOGIC; IN STD_LOGIC; IN STD_LOGIC_VECTOR (8 downto 0); OUT STD_LOGIC); architecture rtl of i2c_controller is component counter port ( clk : rst : end_count : ena_count : ); end component; in std_logic; in std_logic; out std_logic; in std_logic type state_type is signal state : signal end_count : signal scl_int : signal sda_int : signal tx_reg : (s0, s1, s2); state_type; STD_LOGIC; STD_LOGIC; STD_LOGIC; STD_LOGIC_VECTOR (8 downto 0); begin inst1 : counter port map ( clk => rst => end_count => ena_count => ); clk, rst, end_count, scl_int process(clk, rst) begin Julio 2014 81 Sistemas digitales avanzados if(rst = '0') then state <= s0; elsif(clk'event AND case state IS when s0 => scl_int if init state end if; when s1 => scl_int state when s2 scl_int if end_tx state end if; when others scl_int state END CASE; END IF; END PROCESS; clk = '1') then -- Idle <= '1'; = '1' then <= s1; -- Start <= '1'; <= s2; => -- Tx/RX <= not scl_int; -- SCL = clock ='1' then <= s0; => <= '1'; <= s0; process (clk, rst) begin IF(rst = '0') THEN tx_reg <= data_tx; ELSIF(clk'EVENT AND clk = '1') THEN case state is when s1=> -- start cycle sda_int <= '0'; when s2=> -- clocking if end_count = '1' then tx_reg <= data_tx; if (scl_int='1' and end_count='1' and end_tx='1') then sda_int <= '1'; else sda_int <= '0'; end if; else sda_int <= tx_reg(8); register tx_reg(8 downto 1) <= tx_reg(7 downto 0); tx_reg(0)<= '0'; end if; when others=> sda_int<= '1'; tx_reg <= data_tx; end case; END IF; end process; scl <= scl_int; sda <= sda_int; END rtl; 82 Julio 2014 Diseño avanzado de sistemas digitales 6.3 Ejercicios 1.‐ Diseñe el controlador SPI para el proceso de escritura en una memoria EEPROM. Julio 2014 83 Sistemas digitales avanzados 7. Bibliografía José D., Muñoz Frías, (2012), "Introducción a los sistemas digitales. Un enfoque usando lenguajes de descripción de hardware”. http://www.dea.icai.upcomillas.es/daniel/asignaturas/SistDig1_1_ITL/ApuntesED.pdf [Online; último acceso 20 de Abril de 2012] Daniel D. Gajski (1997). ”Principios de Diseño Digital”. Prentice‐Hall. David A. Patterson, John L. Hennessy (2000). “Estructura y Diseño de Computadores”. 3 Vols . Ed. Reverte. David A. Patterson y John L. Hennessy (2004). “Computer Organization and Design”. 3ª Edición. Ed. Morgan Kaufmann. ISBN‐1‐55860‐604‐1. Jan M. Rabaey, Anantha Chandrakasan, Borivoje Nicolic (2004). “Circuitos Integrados Digitales”. 2ª Edición, Ed. Pearson. Peter M. Kogge (1981). “The Architecture of Pipelined Computers”. Hemisphere Publishing Corporation, McGraw‐Hill Book Co., ISBN: 0‐07‐035237‐2. F.Moreno y T. Riesgo. (2010) “Microelectrónica. Circuitos y Sistemas. Una perspectiva histórica.”. www.lulu.com. 84 Julio 2014