notas de la presentacion “tecnolog´ ´ıas y ... · estas son notas para las diapositivas de la...

25
Notas de la Presentaci ´ on “Tecnolog´ ıas y Arquitecturas” Andr ´ es Djordjalian 2 do cuatrimestre de 2010 Estas son notas para las diapositivas de la presentaci´ on “Tecnolog´ ıas y Arquitecturas” del curso Seminario de Electr´ onica: Sistemas Embebidos que ofrecemos en la Facultad de Ingenier´ ıa de la UBA. Fueron preparadas para que: Puedan estar al tanto de lo expuesto quienes no hayan asistido a la ex- posici´ on. Quienes hayan asistido no necesiten tomar apuntes de todo. Sirvan de gu´ ıa de estudio para preparar el parcial. Se prepararon estas notas, en lugar de remitir a bibliograf´ ıa, porque esta Las notas que van a encontrar en este margen, son aclaraciones y acotaciones de importancia menor. exposici´ on es un resumen de muchos temas, que en los libros ocupan muchas aginas. Sin embargo, la bibliograf´ ıa puede ser util para entender lo que de aqu´ ı no se entienda y aprender m´ as. Para eso, recomendamos las siguientes fuentes: J.L.Hennesy, D.A.Patterson; Computer Architecture: A Quantitative Ap- proach; Morgan Kaufmann; 4th Edition, 2006. En particular sus seccio- nes sobre benchmarking (“1.5 Measuring and Reporting Performance”, ag. 18 a 27 de la 4ta edici´ on) y el Cap´ ıtulo 3, sobre pipelining. Preguntas abiertas son aquellas que no tienen una respuesta breve e indudablemente correcta. Para responderlas aceptablemente se debe argumentar, y distintas respuestas pueden ser aceptables aunque no coincidan. En el examen es probable que hagamos algunas preguntas abiertas y evaluemos la calidad de sus argumentaciones y los conocimientos que presentan para respaldarlas, as´ ı que no se sorprendan. S. Furber; ARM System-on-Chip Architecture; Pearson Education; 2nd Edition, 2000. Internet (Googleando) En el encabezamiento de cada secci´ on se indica el n ´ umero y el t´ ıtulo de la diapositiva que le corresponde. Es preferible leer primero la diapositiva y despu´ es las notas. 2. ¿Qu ´ e son los sistemas embebidos? Una pregunta abierta: ¿La ENIAC (o sea, la primera computadora, desti- nada a calcular trayectorias de artiller´ ıa) era un sistema embebido? Es que 1

Upload: truongkiet

Post on 25-Sep-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

Notas de la Presentacion “Tecnologıas yArquitecturas”

Andres Djordjalian

2do cuatrimestre de 2010

Estas son notas para las diapositivas de la presentacion “Tecnologıas yArquitecturas” del curso Seminario de Electronica: Sistemas Embebidos queofrecemos en la Facultad de Ingenierıa de la UBA. Fueron preparadas paraque:

Puedan estar al tanto de lo expuesto quienes no hayan asistido a la ex-posicion.

Quienes hayan asistido no necesiten tomar apuntes de todo.

Sirvan de guıa de estudio para preparar el parcial.

Se prepararon estas notas, en lugar de remitir a bibliografıa, porque esta Las notas que van aencontrar en este

margen, sonaclaraciones yacotaciones de

importancia menor.

exposicion es un resumen de muchos temas, que en los libros ocupan muchaspaginas. Sin embargo, la bibliografıa puede ser util para entender lo que deaquı no se entienda y aprender mas. Para eso, recomendamos las siguientesfuentes:

J.L.Hennesy, D.A.Patterson; Computer Architecture: A Quantitative Ap-proach; Morgan Kaufmann; 4th Edition, 2006. En particular sus seccio-nes sobre benchmarking (“1.5 Measuring and Reporting Performance”,pag. 18 a 27 de la 4ta edicion) y el Capıtulo 3, sobre pipelining. Preguntas abiertas son

aquellas que no tienenuna respuesta breve e

indudablementecorrecta. Pararesponderlas

aceptablemente se debeargumentar, y distintas

respuestas pueden seraceptables aunque no

coincidan. En el examenes probable que

hagamos algunaspreguntas abiertas y

evaluemos la calidad desus argumentaciones y

los conocimientos quepresentan para

respaldarlas, ası que nose sorprendan.

S. Furber; ARM System-on-Chip Architecture; Pearson Education; 2ndEdition, 2000.

Internet (Googleando)

En el encabezamiento de cada seccion se indica el numero y el tıtulo dela diapositiva que le corresponde. Es preferible leer primero la diapositiva ydespues las notas.

2. ¿Que son los sistemas embebidos?

Una pregunta abierta: ¿La ENIAC (o sea, la primera computadora, desti-nada a calcular trayectorias de artillerıa) era un sistema embebido? Es que

1

4 CIRCUITOS INTEGRADOS MOS • 2

tenıa un proposito especial, pero era tan grande que no parece un tıpico siste-ma embebido moderno, y ademas no estaba embebida dentro de otro sistema,sino que la computadora era la totalidad del equipo.

Otra pregunta abierta: ¿Un iPhone es un sistema embebido? Tiene unproposito especial y su circuiterıa de procesamiento de datos esta rodeadapor equipos analogicos de RF. Sin embargo, se le pueden instalar distintasaplicaciones de software, como con las computadoras.

3. ¿Como se implementan los SE?

Recordemos que los secuenciales sincronicos, a diferencia de los asincroni-cos, son aquellos en donde las transiciones entre estados ocurren a intervalosregulares determinados por una senal de reloj.

off-the-shelf = tomado del estante, refiriendose a componentes que no estanhechos a medida, como los que compramos de los distribuidores de componen-tes.

Un ASIC es un circuito integrado VLSI disenado especialmente (ver Dia- VLSI = Very LargeScale Integration. Se

refiere a que el circuitointegrado tiene muchos

transistores (mas devarios miles).

positiva 6).

4. Circuitos integrados MOS

La Ley de Moore describe el ritmo de avance de la miniaturizacion, dicien- En realidad, la Ley deMoore original decıa

que se duplicarıa cadaano. En 1975, Moorerefino su postulado,

cambiando el plazo ados anos.

do que la cantidad de transistores que pueden ser integrados en un chip seduplica cada aproximadamente dos anos. Fue postulada en 1965 por GordonE. Moore de Intel Corp. y, sorprendentemente, se mantiene razonablementevalida desde entonces.

La figura de la esquina inferior izquierda muestra el corte de un transistorMOSFET. La imagen del medio (abajo) muestra el circuito de una compuertaNAND de dos entradas, en tecnologıa CMOS, que emplea cuatro MOSFETs. A La tecnologıa CMOS es

la forma de fabricacionde circuitos integrados(CI) que mas se usa en

la electronica digital dealta complejidad.

su lado esta el circuito de una NAND pero de una tecnologıa anterior, llamadaNMOS. En esta, los tres MOSFETs son del mismo tipo (canal N), a diferenciade la compuerta CMOS, que empleaba dos de canal N y dos de canal P.

En la compuerta NMOS, el MOSFET de arriba (o sea, T1) actua de pull-up.En esta tecnologıa, como todos los transistores son del mismo tipo, la fabrica-cion es mas simple. Sin embargo, el consumo es significativamente mayor queen CMOS porque se recurre a todos estos pull-ups. Noten que, con la salidaen cero, hay una corriente que permanentemente va desde Vcc hasta masa,pasando por los tres transistores. En la compuerta CMOS, en todas las ramashay un transistor al corte, ası que esa corriente practicamente no existe (mejordicho, no es mayor que una corriente de fuga). Es por esto que, a medida queprogreso el nivel de integracion, la tecnologıa CMOS (o sea, complementaryMOS o MOS complementario) desplazo a la NMOS (y tambien a la PMOS,que era similar pero con transistores de canal P), a pesar de ser mas cara.

7 SISTEMA EN UN CHIP (SOC) • 3

Las imagenes de la diapositiva fueron tomadas de los siguientes sitios:

http://www.intel.com/cd/corporate/techtrends/emea/eng/209729.htmhttp://www.doitpoms.ac.uk/tlplib/semiconductors/mosfet.php

6. CMOS

Sobre la izquierda puede verse el layout de la compuerta NAND CMOS,implementada en un circuito integrado, visto desde arriba. Los distintos colo- El polisilicio (o sea,

silicio policristalino, opoly), se usa paraimplementar las

compuertas de los MOS.Antes se usaba metal,

como indica la M deMOS, pero desde hace

ya bastante secomprobo la

superioridad delpolisilicio para esa

funcion.

res indican diferentes materiales (silicio, polysilicio y metal) que se aplican dea uno en forma de capa, retirandose, por fotolitografıa, las partes que quieraneliminarse de cada capa, de manera parecida a cuando fabricamos un circuitoimpreso. Las capas de silicio van abajo, para implementar los transistores, ylas de metal van arriba, para conectarlos entre sı. Si hacemos una analogıacon una plaqueta convencional, el silicio forma los componentes y las capas demetal hacen de circuito impreso.

En la figura de arriba puede verse el corte de un inversor CMOS. Se mues-tran las capas de silicio y una primera capa de metal. Normalmente, sobre esacapa de metal van otras como ella, con capas aislantes entremedio, para darlea los disenadores buenas posibilidades de ruteo de los circuitos, como las queda, por ejemplo, un circuito impreso multicapa. En la figura de la derecha se La semi-esfera de

arriba, o sea el solderbump de estano, es el

punto de contacto con elalambre que va hacia

las patas delencapsulado.

ve un corte que incluye estas capas de metal. Abajo estan las de silicio, sobreellas hay varias capas de metal (indicadas con color naranja), separadas poraislante (gris), con vias conectando una con otra en ciertos lugares.

El tamano mınimo permitido para las figuras dibujadas en el layout, esta re-lacionado con un parametro, llamado feature size, que describe la miniaturi-zacion del proceso de fabricacion. Al aumentar el nivel de integracion (esto es, Actualmente (en 2010)

un CI de tecnologıa depunta tiene un featuresize de 45 nanometros.

miniaturizar el CI o, en otras palabras, disminuir el feature size), se tiene laposibilidad de aumentar la velocidad y/o disminuir el consumo. Sin embargo,tengamos en cuenta que un dispositivo mas moderno puede llegar a consumirmas que los que le anteceden, si es que emplea mas transistores y trabaja amayores frecuencias.

Hay notas suplementarias para CMOS (en documento aparte), que puedenleer si disponen de tiempo y les interesa el tema. Esas notas son optativas yno entran en el parcial. Tambien les puede interesar darle una mirada a:

http://download.intel.com/pressroom/kits/chipmaking/Making of a Chip.pdf

7. Sistema en un chip (SoC)

Como dijimos, un ASIC es un circuito integrado VLSI disenado a medida.Por ejemplo, hay un ASIC en un iPod, un celular o un cablemodem. No suelenfabricarse todas las capas a medida, sino que se usan wafers que ya tienen lasde silicio, polisilicio y (quizas) alguna(s) de metal prefabricadas, y las que se

8 PROCESADORES QUE VAMOS A USAR • 4

hacen especialmente son solo las ultimas capas de metal, para interconexiona-do. De esa forma, es economicamente viable fabricarlos en cantidades de mileso decenas de miles en adelante. Dependiendo de la granularidad de la parteprefabricada (o sea, si se trata de transistores y compuertas sueltas, o si sonbloques mas complejos) se puede hablar de un gate array o de un structuredASIC.

Para disenar ASICs se usa software EDA (electronic-design automation).Frecuentemente, lo que se hace es integrar bloques predisenados, llamadoscores o IP (intellectual property). Estos cores pueden ser comprados especial-mente o tomados de librerıas o repositorios open-source. Uno de los cores pue-de ser un microprocesador. Si un circuito completo es disenado de esta maneraen un ASIC (tıpicamente, serıa un procesador con su memoria, perifericos y,en algunos casos, logica a medida) hablamos de un sistema en un chip (Systemon Chip, o SoC).

En lugar de un ASIC puede usarse una FPGA (field-programmable gate Field programmablequiere decir que puede

programarse “en elcampo”, sin tener que

desarmar todo oenviarselo al fabricante

array). Estos son chips digitales VLSI programables. Una FPGA que imple-mente el mismo circuito que un ASIC necesita ser mas grande y rapida, debidoa los circuitos extra que necesita para la programabilidad. Sin embargo, sonuna opcion conveniente cuando las cantidades no justifican la fabricacion deun ASIC. Por ejemplo, para hacer un prototipo de un ASIC. Tengamos en cuen-ta, tambien, que una FPGA generalmente consume mucho mas que un ASICcon la misma funcionalidad.

A un sistema en un chip implementado con una FPGA se lo suele llamarsistema en un chip programable (Programmable SoC, o PSoC).

8. Procesadores que vamos a usar

¿Que quiere decir que un procesador es “de n bits”? La medida puede TSMC es la TaiwanSemiconductorManufacturing

Company, uno de losfabricantes mas

grandes de circuitosintegrados, si no el mas

grande. En Taiwan sefabrican una gran parte

de los CI que seconsumen actualmente

en todo el mundo, endos companıas: TSMC yUMC. El proceso TSMC0.18G es un proceso de

fabricacion de CI confeature size de 180 nm.

referirse al ancho del bus de datos, de la ALU, o al tamano de los registrosde propositos generales. Muchas veces coinciden. Si no lo hacen, viene bienhacerlo notar, diciendo, por ejemplo, que el procesador es de 16/32 bits.

RISC es un estilo de diseno de arquitectura de computadoras, que vamos adesarrollar mas adelante, explicando tambien lo que es un pipeline y branchspeculation. DMIPS es una medida de velocidad, que vamos a describir des-pues. Tambien vamos a ver que quiere decir ISA.

La T de TDMI es por el modo Thumb. Agregar un conjunto de instruccionesde 16 bits fue una novedad con respecto al ARM 7 anterior, y resulto muyexitosa. Es que con un ISA mas compacto puede ahorrarse memoria, y eso enembebidos es importante.

Recordemos que el watt (W ) es una unidad para el consumo electrico por-que potencia es, por definicion, energıa por unidad de tiempo. Para medir elconsumo, siempre calculamos cuanto se consume (de aquello que se consume)dividido por una “cantidad de uso”. Por ejemplo, para el consumo de un auto,lo que se consume son litros de nafta, y la cantidad de uso puede ser el nume-

12 ALGUNOS DE LOS PRIMEROS MICROS • 5

ro de kilometros recorridos, definiendose entonces el consumo como litros por Expresar el consumocomo una corriente es

util para calcular laautonomıa de un

sistema a baterıa, yaque la capacidad de

estas sueledeterminarse en

miliamperes-hora.Como ya sabemos, la

relacion es P = Vdd · I.

kilometro. En nuestro caso, estos dispositivos consumen energıa y, si determi-namos que la cantidad de uso sea el tiempo (que pasan encendidos haciendoun procesamiento de intensidad promedio), tenemos entonces el consumo da-do en energıa por unidad de tiempo, o lo que es lo mismo, potencia. Estandola tension de trabajo (Vdd) prefijada, el consumo tambien puede expresarse en(mili o micro) amperes.

Les puede interesar darle una ojeada a:

http://www.arm.com/products/CPUs/ARM Cortex-M3.html

11. MOS Technology 6502

Este procesador fue un hito porque su precio era muy bajo: unos 25 dolares MOS Technology era elnombre de la empresa

que creo esteprocesador. Al poco

tiempo fue adquiridapor Commodore

Computer, que luego deunos anos quebro. Pero

la arquitecturacontinuo siendo

fabricada por otrasempresas.

frente a los cerca de 150 que salıan los microprocesadores antes de su lan-zanmiento. Notar que estamos hablando de dolares de los 1970s, que valıanvarias veces lo que vale un dolar ahora. Este bajo costo permitio la creacion decomputadoras personales, por eso el 6502 fue empleado para las dos primeras:la Apple I y la Commodore PET. Tuvo exito tambien en sistemas embebidos,hasta hace algunos anos.

En la foto se ve el equipo de diseno. Tres de esas personas se encargabanexclusivamente del layout (o sea, de dibujar las capas del circuito integrado).El plano que sostienen ese ese dibujo, y puede verse una foto del chip sobrela derecha. Esta gente tenıa que hacer el ruteo dibujando sobre papel, sinningun software EDA, y empleando solo una capa de metal (mas la capa quese usaba para las compuertas, ya que los espacios libres que le quedan sirvenpara conexiones).

El encapsulado era el DIP 40 tıpicamente usado en la epoca para los mi-croprocesadores, que se ve en la esquina superior derecha. Hoy en dıa, se usauna gran variedad de encapsulados, muchos de ellos para montaje superficial.

12. Algunos de los primeros micros

El primer microprocesador fue el Intel 4004, de 4 bits, disenado para unas Comunmente se usa elprefijo “MC” en los

codigos de los CI deMotorola/Freescale. Por

ejemplo, se habla delMC6800.

calculadoras. Al poco tiempo Intel convirtio el diseno en uno de 8 bits, lanzan-do el 8008, y luego lo mejoro para sacar el 8080.

Las respuesta de Motorla a ese producto de Intel fue el 6800. Esta arqui-tectura que aun tiene cierta vigencia por medio de sucesores como el HC05 yHC11 (recordemos que la seccion de semiconductores de Motorola se separo dela empresa madre y ahora se llama Freescale).

Luego vino el Mos Technology 6502, del que ya hablamos, y otro procesadormuy popular de bajo costo, el Zilog Z80, que aun sigue siendo utilizado en em-bebidos. En esa parte del grafico tambien puede verse el General InstrumentsPIC1640. Este procesador no fue popular en su epoca, pero de el nacio la lıneaPIC de Microchip, que hoy lidera el segmento de 8 bits.

13 MERCADO ACTUAL DE 8 BITS • 6

Hasta entonces, todos los CPU integrados tenian poco poder de procesa-miento y se usaban en sistemas embebidos. Pero puede verse en el diagramaque, a medidas de los 1970s, Intel decidio atender por separado dos segmentosde mercado:

En uno (el de las computadoras), la prioridad era la performance, sin im-portar si se conseguıa a expensas del costo y de la necesidad de circuitosintegrados extra y encapsulados con muchos pines.

En otro (el de los sistemas embebidos), la prioridad era la simplicidaddel hardware, valorandose la integracion de memoria y perifericos, porsobre la velocidad.

A los micros disenados para el primer segmento se los siguio llamando mi-croprocesadores, mientras que a los pensados para el segundo se los rodeo dememoria (al menos un poco de RAM) y de perifericos, y se los comenzo a llamarmicrocontroladores.

Para el segmento de los microcontroladores, Intel lanzo el 8048, y al pocotiempo el 8051, una arquitectura de gran popularidad que mantiene ciertavigencia. Para el de los microprocesadores creo el muy popular 8086, de 16 IBM utilizo el 8088 en

su primera PC. Lasegunda generacion (o

sea, las PC-XT) usaronel 8086, y la tercera

(PC-AT) el 80286.

bits, del cual nacio la lınea utilizada en las PC compatibles hasta el dıa dehoy. Los primeros sucesores del 8086 fueron llamados 80286, 80386 y 80486,por eso a esa arquitectura se la llama x86. El 8088 era una version economicadel 8086. Internamente era igual, pero su bus de datos (externo) era de 8 bits,lo que simplificaba el circuito impreso y permitıa usar perifericos comunes,que en ese entonces venıan con buses de 8 bits. Por eso es que puede decirseque el 8088 es un microprocesador “de 8/16 bits”.

Motorola imito a Intel. Baso su oferta para el segmento embebido en mi-crocontroladores que partieron de la arquitectura del 6800, como el 68HC05 La lınea 68K (o sea, el

68000 y sus sucesores)se uso en muchas

computadoraspersonales de la epoca

(Apple Macintosh,Commodore Amiga,

Atari XT), en juegos devideo, y fue muy

popular en embebidos,llegando hasta la

actualidad como losprocesadores ColdFire

de Freescale.

y 68HC11 que siguen siendo utilizados en la industria, mientras que creo laarquitectura 68000 para atender el otro mercado. Este procesador era de 16bits, salvo el tamano de los registros de propositos generales, que eran de 32.Por eso, puede llegar a argumentarse que era un procesador de 16/32 bits,aunque es mas comun decir que era de 16.

En letras grises, debajo de los anos, se indica el rango que tıpicamenteocupo cada tecnologıa de fabricacion. Como se muestra ahı, se paso a CMOSa principios de los ochentas. Desde entonces, los avances en el proceso de fa-bricacion ocurren por la disminucion del feature size. Por ejemplo se habla delpasaje de un proceso (de fabricacion) de 45nm a uno de 32nm, pero la tecno-logıa utilizada es siempre CMOS. HMOS era una version mejorada de NMOS.

13. Mercado actual de 8 bits

La tabla corresponde a una encuesta realizada en 2006 por unas publica- Philips Semiconductores ahora NXP, dado que

en 2006 se separo elarea semiconductores

del resto de la empresaholandesa, formandose

esta nueva empresa.

ciones internacionales muy importantes del mundo embebido. Se le pregunto,a desarrolladores de embebidos, por las arquitecturas de 8 bits que estuvieranconsiderando para su proximo desarrollo, admitiendose respuesta multiple.Los resultados se comparan con una encuesta similar, realizada en el 2005.

15 TIPOS DE ISA • 7

Podemos ver que estaban recibiendo cierta consideracion varias lıneas de-rivadas de las vistas en la diapositiva anterior. Por ejemplo, derivan del 8051las que ahı se mencionan de Intel, las Atmel 80xx, las Dallas/Maxim y lasPhilips. Los sucesores del MC6800 son las ofrecidas por Freescale, y los delZ80 conforman la oferta de Zilog y Rabbit.

Los distintos procesadores PIC de la firma Microchip son mencionados porno pocos disenadores. Microchip es lıder en el segmento de 8 bits, gracias a es-tos procesadores que tienen una gran variedad de encapsulados y perifericos,ademas de un muy bien reconocido ecosistema (o sea, el conjunto de manuales,herramientas de desarrollo, disenos de referencia, notas de aplicacion, forosen la Web, etc.) Durante los noventas, la firma General Instruments identi-fico que esto era lo que demandaba el mercado de microcontroladores, y deci-dio formar Microchip alrededor de su arquitectura PIC, que mostramos en ladiapositiva anterior.

Otra arquitectura con buen numero de menciones es la Atmel AVR. Estosprocesadores son muy populares, podrıa decirse que son la respuesta de Atmelal exito de la estrategia de Microchip.

Vale la pena mencionar tambien al Xilinx PicoBlaze, que es un procesa-dor ofrecido como IP para FPGA. Xilinx es el lıder mundial en FPGA, ofrecegratuitamente el PicoBlaze para que sus clientes puedan incluir, sin costo, unprocesador en sus PSoC (ver Diapositiva 6).

14. Arquitectura de computadoras

Arquitectura de computadoras es la rama de la ingenierıa que trata la des-cripcion y el diseno de procesadores desde un nivel de abstraccion alto. Estoultimo quiere decir que se obvian detalles que tienen que ver con la imple-mentacion circuital y fısica, estudiandose mas que nada las caracterısticas“macro”, tales como las funciones de cada bloque constructivo y sus interac-ciones con los demas.

La palabra microarquitectura se refiere a la estructura interna de los pro-cesadores (o sea, que bloques los componen y como estan conectados entre sı),diferenciandose de la arquitectura de conjunto de instrucciones (instruction-setarchitecture o ISA), que se refiere a la descripcion de caracterısticas visiblespara el programador (instrucciones, registros, etc.) Por lo tanto, la microarqui-tectura describe como esta implementada la ISA, en un nivel de abstraccionalto, es decir, sin entrar en detalles circuitales y fısicos. A veces, se usa lapalabra arquitectura a secas en lugar de ISA.

15. Tipos de ISA

La arquitectura load-store es aquella en donde las operaciones aritmetico-logicas trabajan solamente sobre registros, usandose la memoria (de datos)solo cuando se carga un registro (load) o cuando se graba el contenido de unregistro en memoria (store).

18 PROBLEMA A RESOLVER • 8

16. Instrucciones en el 8086 y 68000

En el Assembly del 8086, el operando destino se escribe primero, mientras Recordemos queAssembly es el nombre

del “lenguaje”, mientrasque Assembler es el del

programa que se usapara “compilar” codigo

Assembly. Ponemos esasdos palabras entrecomillas porque elAssembly no es un

lenguaje deprogramacion

propiamente dicho.

que en el Assembly del 68000 se lo escribe segundo.El sufijo “.W” de la instruccion del 68000 indica que la operacion es de 16

bits (“W” es word, que en el 68000 significa 16 bits). Existe la posibilidad dehacer la misma operacion en 8 bits (sufijo “.B”, que significa byte), o en 32 bits(sufijo “.L”, que significa long). Es que el registro D0 es de 32 bits, como losdemas registros de propositos generales del 68000. En cambio, el registro AXdel Intel 8086 es de 16 bits. En este caso, se puede operar de a 16 bits (usandoAX) o de a 8 (usando AH o AL, que son las dos mitades de AX).

(A1)+ significa que el operando es el contenido de la direccion de memo-ria guardada en A1, y que este registro se incrementa luego de accederse a lamemoria (o sea, se pos-incrementa). 100H(A2, D0.W ) significa que el operandoes el contenido de la direccion de memoria resultante de la suma del conteni-do del registro A2, mas los 16 bits menos significativos del regstro D0, mas100 en hexadecimal (o sea, 256). Son simplemente ejemplos de los modos dedireccionamiento, relativamente complejos, que tienen estos procesadores.

18. Problema a resolver

Las lıneas valid y ready son para lo que se llama handshaking (apreton demanos), que es el mecanismo por el cual un transmisor y un receptor se ponende acuerdo sobre cuando se esta concretando la transmision de un dato (en es-te caso, de un byte por las lıneas de datos). Tenemos dos pares valid/ready de-bido a que hay dos instancias de transmisor y receptor. Una esta en la entradadel codificador: el transmisor es el circuito que irıa conectado allı, alimentandode datos al codificador, y el receptor es el codificador. La otra instancia esta enla salida: el transmisor es el codificador, y el receptor es el circuito que irıaconecta a su salida, recibiendo sus datos. Decimos que estas

interfaces sonsincronicas porque los

estados de data in, validy ready se “revisan”

solamente durante losflancos del clock.

Para armar un ejemplo, pensemos unicamente en la entrada. Cuando llegael flanco ascendente del clock, si tanto valid1 como ready1 estan en uno, enton-ces el codificador debera utilizar los datos presentes en data in, y tanto estecircuito como el conectado en su entrada consideraran concretada la trans-mision de ese byte (o sea, el circuito transmisor puede pasar a transmitir elbyte siguiente). Si valid1 o ready1 estan en cero al llegar el flanco, entonces latransmision quedara en suspenso. Esto le da la posibilidad al transmisor dedemorar la transmision (bajando valid1) si es que necesita mas tiempo paraproducir el dato, y al receptor de hacer lo mismo (bajando ready1) si es quenecesita terminar de hacer algo antes recibir el dato siguiente. Esto mecanis-mo va a ser necesario, por ejemplo, cuando el codificador este en medio de larecepcion de una secuencia de bytes repetidos, porque su salida va a tener queesperar varios ciclos, hasta saber cuantas veces se repiten.

21 ACTIVIDAD • 9

19. Problema a resolver

Las maquinas deestados finitos

(finite-state machines oFSM) son

representaciones delfuncionamiento de

maquinas de computar,en donde se describe larelacion entre entradasy salidas, sin entrar en

detalles sobre comollegan esas entradas,

como se procesaninternamente o como seentrega la salida. Dadoque no estan definidos

estos detalles deimplementacion, se las

llama maquinasabstractas.

Recordemos que los secuenciales son maquinas de estados finitos, y sonsincronicos cuando la maquina que implementan cambia de estado unicamen-te durante flancos de la senal de clock.

20. Diagramas de estado

“a”, “ab”, “aba”, etcetera, son los nombres de los estados (o sea, los nodosdel diagrama). Podıamos haberlos llamado A, B, C, etcetera, pero los nombresque usamos son practicos para indicar, por ejemplo, que el estado “a” es en elque estara la maquina cuando haya llegado la primera letra de la secuenciabuscada, que el “ab” es donde estara luego de que entre la segunda, etc.

La flecha sin nodo fuente que entra al estado “-” muestra que, al resetearse,la maquina empieza en ese estado. Lo llamamos “-” porque, en ese estado,ningun caracter de la secuencia buscada ha sido recibido.

En la maquina de Moore, la salida esta asociada a cada nodo (por eso lapusimos al lado del nombre del nodo). Las entradas determinan a que estadose pasa, por eso aparecen rotulando los arcos (o sea, a las “flechas”). b v csignifica “b o (logico) c”. Por ejemplo, si la maquina esta en el estado “ab”y llega una b o una c a la entrada, se toma el arco rotulado b v c, pasandoentonces al estado “-”. En estas maquinas abstractas, el “viaje” de un estado aotro es instantaneo.

La maquina de Mealy es muy similar, salvo que las salidas estan asocia- Las maquinas deestados tambien se

utilizan frecuentementeen el desarrollo de

software embebido. Enesos casos, es tıpico

combinar los dos estilos,Mealy y Moore,

asociando algunassalidas a los nodos y

otras a los arcos. Ya lovamos a ver en clases

posteriores.

das a los arcos. Es otra manera de computar; noten que, a igual secuencia deentrada, las dos maquinas producen la misma secuencia de salida (en otraspalabras, son equivalentes). La maquina de Mealy lo hace a pesar de tenerun estado menos. Esto es tıpico; puede demostrarse que, dada una maquinade Moore, puede encontrarse una equivalente Mealy que tenga igual o menorcantidad de estados. La operacion inversa tambien puede realizarse: dada unamaquina de Mealy, se puede encontrar una de Moore que sea equvalente. Sinembargo, a veces esta requiere mas estados que la primera.

21. Actividad

Como ya sabemos, secuenciales son los circuitos en donde la salida en cadainstante depende de las entradas pasadas. Para “memorizar” ese historial deentradas pasadas estan los estados. Si hay dos historiales que producen unasecuencia de salida diferente ante igual secuencia de entradas, se tienen quetener dos estados diferentes. La maquina estara en uno u otro segun cual hayasido el historial, y de esa forma estara memorizando aquello de las entradaspasadas que necesita recordar para generar futuras salidas correctas.

Por ejemplo, en el problema de la diapositiva anterior, necesitamos un es-tado para el historial de entradas “aba”, que sea diferente de los otros, porque

23 SECUENCIALES SINCRONICOS • 10

solo en ese estado debe generarse un “sı” si el proximo caracter en entrar esuna “c”. Asimismo, necesitamos un estado al que se llegue si entro antes un Cuando disenan una

maquina de estados,traten de no definir

estados de mas, cosaque ocurre cuando crean

varios para historialesante los cuales la

maquina se comportaigual. Con la practica

pueden lograrlo, y si seequivocan no suele ser

grave, porque con latecnologıa actual no es

caro agregar estados.En todo caso, si losnecesitan, existen

algoritmos paraencontrar maquinas

equivalentes a lasdadas pero con cantidad

mınima de estados.

“ab”, porque solo ası, si hay un “ac” despues, se producira una salida afirma-tiva. Pero no necesitamos un estado distinto para el historial “cab” porque, enese estado, el comportamiento a futuro es el mismo que el del estado “ab”.

Ese es el razonamiento que hay que usar para identificar los estados quenecesita una maquina de estados, en el momento de disenarla. En resumen,piensen que situaciones pasadas necesita diferenciar la maquina.

En las maquinas de Moore, ademas, suelen necesitarse estados extras paraproducir la salida. En la de la diapositiva anterior, despues del estado “abac”la maquina se comporta igual que despues del estado “-”. Sin embargo, el com-portamiento es distinto durante esos estados, porque la salida es diferente, ypor esa razon hace falta diferenciarlos. En cambio, en la (maquina) equivalen-te de Mealy, esos dos estados estan reunidos en uno solo, porque la salida noes generada en un estado sino en una transicion.

22. Secuenciales sincronicos

En la diapositivas vemos la organizacion de la implementacion de maqui-nas de Moore y de Mealy mediante circuitos digitales. Los bloques de logica Recordemos que los

registros son conjuntosde flip-flops gobernados

por la misma senal dereloj, y que los flip-flopsson siempre disparados

por flanco. En laliteratura actual, a los

biestables que no lo sonse los llama cerrojos

(latches).

son combinacionales. Las conexiones, mostradas en lıneas gruesas, puedenser de varios bits. A la senal excitacion la podıamos haber llamado proximoestado, pero es tıpico decirle de esa otra forma.

En los dos casos, la maquina genera el proximo estado a partir del estadoactual y de la entrada, “sacandole una foto” a ese estado durante el flanco dereloj (clock), porque es cuando los registros se actualizan. Luego de ese instan-te, las senales correspondientes al nuevo estado se propagan por los bloquescombinacionales, debiendo estabilizarse antes de que llegue el proximo flancoa “sacar la proxima foto”. Estos circuitos son sincronicos porque los estados seactualizan unicamente durante los flancos de clock (en este caso, es durantelos flancos ascendentes).

Las maquinas difieren en la generacion de la salida. La de Moore esta enfuncion solamente del estado corriente, porque la salida depende unicamentedel estado en el que se encuentra. La de Mealy, en cambio, la obtiene del esta-do y de la entrada, porque la salida depende de la transicion que se este eje-cutando, y para definir unıvocamente una transicion debemos especificar deque estado se parte y cual es el valor en la entrada. Por eso el bloque combi-nacional toma informacion del estado corriente (que se esta abandonando) yde la entrada.

23. Secuenciales sincronicos

Las senales de arriba – clock y entrada – son las entradas al circuito. Congris se indican los momentos en que la senal esta indefinida, por ejemplo debi-do a estar transicionando. Cuando no estan rellenas de gris, las senales debentener un valor legal y estable. Puede verse, por ejemplo, que a la senal entrada

25 MAQUINA DE ESTADOS + DATAPATH • 11

se le permite transicionar durante un tiempo cercano al flanco descendente,pero se le pide que este estable durante momentos que rodean al flanco ascen-dente.

La entrada pasa por la logica de proximo estado para producir, despues deun retardo de propagacion, la excitacion (notar que desde antes estaban es-tables las otras entradas a ese bloque combinacional). Despues del flanco as-cendente de clock, el registro “saca una foto” de esa senal, actualizando ası lasenal estado corriente.

Si se trata de una maquina de Moore, la salida es generada a partir delestado corriente, por un combinacional que tiene un retardo (breve) en propa-gacion hasta estabilizar su salida, que provoca el pequeno segmento gris quese observa en el diagrama durante el cambio de senal. Podemos ver rotuladacon o1 la respuesta a la entrada i1: esa entrada produjo un cambio de esta-do, arribando a uno que corresponde a la salida o1. Por ejemplo, la entradai1 pudo haber sido la letra “c” del final de la cadena “abac” (del ejemplo de laDiapositiva 18) y la salida o1 la respuesta “sı”.

En la maquina de Mealy, la respuesta se produce luego de estabilizada lasenal de entrada y el estado corriente, y de transcurrido el tiempo de propa-gacion de la logica de salida. En el ejemplo de la Diapositiva 18, si el estadocorriente es “aba” y la entrada una “c”, se genera una respuesta “sı” .

Notar que la respuesta de la maquina de Mealy esta mas adelantada quela de la Moore, porque esta lista a poco tiempo de arribar la entrada que laproduce, mientras que la Moore necesita esperar tambien hasta el flanco declock. Ese adelantamiento es una de las ventajas del esquema Mealy sobre elMoore. Pero existe una desventaja: en la Mealy, cualquier ruido que haya en lasenal de entrada se refleja en la salida, mientras que la Moore filtra ese ruido.Por eso, a veces se usa un esquema Mealy con el agregado de un registro ala salida (o sea, Mealy with registered-output, ahı indicada como Mealy RO).En ese caso, como se ve en el diagrama, se pierde el adelantamiento pero lasalida esta completamente limpia de glitches, ni siquiera estan los que pudieragenerar la logica de salida.

25. Maquina de estados + Datapath

Para encarar problemas como el codificador RLE, se suele dividir el circuitoen dos partes:

Una que incluye los registros donde los datos se almacenan temporal-mente, y los bloques combinacionales donde se realiza cada paso delprocesamiento. Este bloque suele estar hecho de estructuras repetidas,donde cada instancia se ocupa de uno de los n bits que se procesan.

Otra que determina como mover y procesar los datos en la parte ante-rior, estableciendo las senales de control que gobiernan a esta, en funcionde senales de estatus que recibe de ella. Por ejemplo, una senal de esta-tus puede ser un bit indicando un overflow en una ALU, y una senal decontrol puede ser un bit indicando que entrada seleccionar en un multi-plexor. Esta parte a veces se implementa como una maquina de estados

31 COMO SI IMPLIMENTARIAMOS HOY ESE CODIFICADOR • 12

finitos, otras veces con un combinacional alcanza, y en otras se usa unatecnica llamada microprogramacion. Explicar la

microprogramacionexcede el alcance de

este curso, pensemossolamente que se trata

de una manera deimplementar circuitos

secuenciales complejos,incorporandoles una

memoria ROM quecontiene un codigo

similar a un programade computacion.

Al primero de estos bloques se lo llama ruta de datos o datapath, mientrasque al segundo se le dice unidad de control.

26. Datapath para un codificador RLE

Las conexiones negras de lıneas gruesas son de 8 bits. En color anaranjadose indican las senales de status (o sea, las que van del datapath a la unidadde control) y en azul las de control (o sea, las salidas de la unidad de control,que comandan el datapath).

Las senales de control TSx comandan buffers tri-state, que no se mues-tran para simplificar el dibujo. La idea es que en cada momento este activosolo uno (en realidad, un conjunto de ocho, dado que cada conexion tiene ochobits), poniendo ası en el bus de salida la informacion que haga falta. En otraspalabras, esa parte del circuito actua como un multiplexor.

Noten que todos los elementos secuenciales del datapath (o sea, los re-gistros y el contador) estan gobernados por la misma senal de clock, que estambien la que gobierna la unidad de control. Por lo tanto, el conjunto cambia Para prevenir errores,

es importante que laconexion del clock

llegue limpia a todos losflip-flops, sin haber

combinacionalesentremedio.

de estado solo durante los flancos de clock, y es entonces un circuito secuen-cial sincronico, como nos habıamos propuesto. Siendo ası, es relativamentefacil comprobar que la temporizacion del conjunto sea correcta (o sea, que lassenales se estabilicen antes de llegar el flanco de clock) por mas que estemosutilizando una frecuencia de clock muy alta.

30. Como no implimentarıamos hoy ese codificador

Hoy en dıa, es tan barato incorporar un microcontrolador, que muchos deestos problemas se resuelven de esa manera, en lugar de disenar un secuencialcomo estuvimos mostrando. Sin embargo, noten que si se necesita velocidady/o bajo consumo, y si el circuito va a formar parte de un SoC o un PSoC, esmucho mas economico y rapido implementarlo con un secuencial, que requerirtodo un procesador con su memoria y demas. Este ultimo necesitarıa variosciclos para hacer lo que el secuencial harıa en uno. Es ası que, frecuentementeal disenar un SoC, se usa logica a medida para ciertas partes del procesamien-to.

31. Como sı implimentarıamos hoy ese codificador

Internamente, las CPLD son como varias PALs (los viejos arreglos logicosprogramables) conectadas entre sı.

Si el producto va a ser fabricado en suficiente cantidad, es tıpico usar unaFPGA para los prototipos del ASIC, y luego mandar a fabricarlo. Algunas em-

38 CARACTERISTICAS DEL ESTILO RISC • 13

presas ofrecen el servicio de tomar directamente el diseno preparado paraFPGA, y fabricar de el un ASIC.

Algunos fabricantes de ASICs: Tengamos en cuentaque, una vez fabricadoel ASIC, el circuito que

contiene no se puedemodificar.

http://www.fujitsu.com/us/services/edevices/microelectronics/sms/asic/http://www-03.ibm.com/technology/asic/http://www.pgc.com.tw/

32. Lenguajes de descripcion de HW

VHDL quiere decir VHSIC-Hardware-Description Language. VHSIC quie-re decir Very-High-Speed Integrated Circuit.VHDL y Verilog se usan esencial-mente para lo mismo, aunque tienen ciertas diferencias en sus prestaciones.Ambos son muy populares. Existen otros lenguajes para otras etapas del di-seno.

Sintetizar significa “compilar” el codigo correspondiente a un circuito, paraobtener el codigo objeto con el cual fabricar el ASIC o programar la FPGA (o,a veces, un codigo intermedio, que requiere otros pasos posteriores).

36. Procesadores

La bibliografıa de estostemas, que estan sujetos

a mucha innovacion,esta llena de terminos

que se deben a motivoshistoricos y, muchasveces, no tienen un

significadoperfectamente preciso.

Antes de los ochentas, algunas unidades de control eran muy complejas, enparticular las de las minicomputadoras y mainframes (o sea, los procesadoresque ocupaban mas de un circuito integrado). Para lidiar con tanta compleji-dad, lo mas conveniente era implementar la unidad de control mediante mi-croprogramacion. Los departamentos de desarrollo de los fabricantes de proce-sadores tenıan equipos especialmente dedicados a la microprogramacion. Parahacer su trabajo, estos equipos se basaban en la estructura del hardware. Fuepor eso que, a esta estructura, se la empezo a llamar microarquitectura, dadoque era la arquitectura sobre la cual se implementaba el microcodigo.

En la Diapositiva 9, en la foto del chip del 6502, se puede notar un rectangu- Ası y todo, losdisenadores del 6502

decıan que lamicroprogramacionahorro superficie de

silicio, comparado conuna maquina de estadosconvencional, y fue uno

de los factores queposibilito el bajo costo

del microprocesador.

lo verde abajo. Esa es la memoria ROM que guarda el microprograma. Loque esta arriba de ese rectangulo es, en buena parte, el decodificador de esamemoria, y el circuito microsecuenciador que la utiliza para implementar lamaquina de estados. Es decir que la unidad de control esta ocupando alrede-dor de un tercio de la pastilla. Hoy en dıa, la microprogramacion se usa soloexcepcionalmente, en gran medida gracias a que la filosofıa RISC (que vamosa introducir en la siguiente diapositiva) permite prescindir de las unidades decontrol complejas.

38. Caracterısticas del estilo RISC

La caracterıstica mas importante es la arquitectura load-store (ver notasde la Diapositiva 13).

40 DATAPATH RISC • 14

Los conjuntos de instrucciones de los RISC modernos frecuentemente sonextensos, pero son todas instrucciones con implementaciones relativamentesimples, que no hacen mas lenta la ejecucion de las operaciones basicas.

39. El estilo RISC

CISC = Complex-Instruction-Set Computer.

La investigacion que impulso el estilo RISC comenzo a fines de los 70s enIBM, a la que luego se le sumaron las universidades de Stanford y Berkeley.Desde los 80s que tiene una gran influencia. Incluso en las implementacionesactuales de las arquitecturas CISC (ej., los procesadores actuales “PC compa-tibles” Intel x86), en donde las instrucciones x86 (que son CISC) son traduci-das internamente a instrucciones RISC que son ejecutadas en el nucleo RISCdel procesador. El datapath de la

Diapositiva 35 esta tansimplificado que no sepueden implementar

saltos a direccionesabsolutas (ej., JMP

h8000), pero no serıacomplicado agregar lo

necesario para eso.

40. Datapath RISC

El diagrama muestra un datapath tıpico RISC, un poco simplificado. Esta di-bujado en orden, como si fuera una maquina en donde a la izquierda entra la“materia prima” y de la derecha sale el “producto terminado”.

Dado que se trata de un procesador, la “materia prima” es cada instruccion,por eso el primer paso es ir a buscar, a la memoria, la siguiente instruccion aejecutar. Para eso esta la “memoria de instrucciones” ahı en la izquierda, consu bus de direcciones conectado a la salida de un registro de proxima instruc-cion (program counter o PC). Arriba puede verse un circuito para sumarle 4al PC, lo que significa incrementarlo para que apunte a instruccion siguien-te, dado que la instrucciones ocupan 4 bytes (32 bits) en este procesador. Esecircuito tiene, ademas, la posibilidad de sumarle a PC un valor indicado en lainstruccion corriente, para poder implementar saltos y bifurcaciones relativasa PC (ej., JMP PC-h80 y BNE PC+h20).

Una vez que el procesador obtuvo la instruccion a ejecutar, el siguientepaso es leer los registros que esta usa. Ahı vemos, en el medio, un register filecon tres entradas de direcciones (Register #). Dos de estas entradas son paraleer los operandos fuente, la otra para escribir el operando destino (si es queeste es un registro). Por ejemplo, si la instruccion es ADD R3,R5,R6, que sumaR5 con R6 y guarda el resultado en R3, entonces las entradas para lectura vana tener el numero 5 una y el 6 la otra, mientras que la de escritura va a indicarel numero 3. Estos numeros se toman directamente de la instrucciones, yaque en esta arquitectura, las instrucciones como ADD contienen, entre susbits, las direcciones de los registros, como se ve en el ejemplo de abajo (en ladiapositiva).

En el paso siguiente, la unidad aritmetico-logica (ALU) opera sobre el con-tenido de los dos registros leıdos. En el diagrama no esta indicado, pero elcodigo de la operacion que tiene que hacer la ALU (o sea, si es suma, shift, o

41 DATAPATH RISC + UNIDAD DE CONTROL • 15

que) generalmente es tomado de la instruccion, a veces siendo necesaria al-guna decodificacion para obtenerlo, que es realizada simultaneamente con elacceso a los registros.

La salida de la ALU esta conectada a la entrada de datos del register file,para poder guardar el resultado en el registro destino. Pero tambien entra enel bus de direcciones de la memoria de datos. Eso es para poder implementar Notar que separamos la

memoria deinstrucciones de la dedatos, a pesar de que

muchos CPU tienen unamemoria unificada para

instrucciones y datos.Esta separacion puede

representar una de tressituaciones. Puede que

las memoriasefectivamente esten

separadas, como ocurrecon algunos

procesadores (ej., PICde Microchip, y muchosDSP). O puede que esosbloques representen un

circuito de acceso a lamemoria unificada, que

tiene dos “bocas”. Opuede que sean

memorias separadas decierto tipo especialllamado cache, que

sirven deintermediarias entre el

procesador y lamemoria principal (que

bien puede estarunificada). Este ultimocaso es el mas usual enlos procesadores de altaperformance, y vamos a

estudiarlo masadelante.

instrucciones tipo store, es decir, las que se usan para guardar en memoria loscontenidos de un registro. En esos casos, el contenido de uno de los registrosfuente es la direccion (que puede estar sujeta a algun calculo con la ALU),mientras que el otro da el contenido a almacenar (notar que para esto existeuna conexion de una salida del register file a la entrada de datos de la memo-ria). Recuerden que estamos hablando de una arquitectura load-store, ası queno existen instrucciones que guarden en memoria resultados calculados en laALU – para hacer eso se necesitan al menos 2 instrucciones.

Este datapath es el “esqueleto” de practicamente todo procesador RISC,y por lo tanto de casi todo procesador moderno, dada la popularidad del es-tilo RISC (recuerden que dijimos que hasta los procesadores CISC se imple-mentan con un RISC en su interior). Gran cantidad de instrucciones puedenimplementarse con este esquema. Notemos que las mismas se realizan en unciclo (si la memoria no causa demoras), ya que estabilizadas las salidas de losbloques combinacionales y los registros de lectura, cuando ocurre el flanco dela senal de reloj (o lo que sea que marque el cambio de estados de este grancircuito secuencial sincronico) se actualizan el PC y el register file (o la memo-ria de datos), quedando concluida la ejecucion de la instruccion sin necesitarsemas ciclos.

Para lograr un CPU viable comercialmente, a este datapath habrıa queagregarle algunos bloques y conexiones para otras instrucciones, en particu-lar la de salto absoluto antes mencionada (ej., JMP h9A00). Por otro lado,generalmente se optimiza la implementacion si se agregan registros tempora-rios en algunas de sus conexiones. Eso provoca que cada instruccion, en lugarde tardar un solo ciclo, demore varios. A-priori esto suena como malo, perono lo es si se logra, por este medio, aumentar suficientemente la frecuenciamaxima de trabajo. Es ası que, muchas veces, un diseno multiciclo lleva a unaimplementacion mas eficiente, por mas que el CPI (ciclos por instruccion) seamayor. En la siguiente diapositiva vamos a ver una forma de agregar registrosintermedios que logra elevar dramaticamente la frecuencia de trabajo casi sinalterar el CPI.

41. Datapath RISC + Unidad de control

Esta diapositiva muestra, en negro, el datapath anterior con algunos agre-gados que antes se obviaron, como los multiplexores, y en azul la unidad decontrol. Una de las ideas fuerza de RISC fue simplificar la unidad de control,lograndolo por medio de la reduccion y simplificacion del conjunto de instruc-ciones. La unidad de control para operar este datapath no es mas que uncombinacional.

42 SEGMENTACION (O “PIPELINING”) • 16

42. Segmentacion (o “pipelining”)

La diapositiva muestra la misma estructura de la anterior, con el agregadode registros indicados en azul, que dividen al datapath en cinco etapas. Todaslas senales que van de cada etapa a la siguiente, son capturadas por flip-flops, incluyendo las senales de control. Por ejemplo, el registro que separa laprimera etapa de la segunda retiene la instruccion leıda y el PC+4, ademas delas otras senales que pudieran haber entre las dos etapas que, por motivos desimplificacion, no estan mostradas. Cuidado: en el

diagrama, la conexionentrante a Write

register puede provocarconfusion. El numero de

registro a escribiresta asociado con loscontenidos que se le

escriben (la write data).Entonces, esa direccion

deberıa pasarinalterada de etapa a

etapa, hasta volverdesde la ultima al

register file, junto con lawrite data. Ese

encadenamiento deregistros podrıa estar

todo junto entre lasetapas IF y ID, quizas

por eso Patterson yHennessy lo dibujaron

ası (tomamos eldiagrama de su libro).

Consideremos, por ahora, que todos los registros tienen el mismo reloj,que no es otro que el clock del procesador. Si analizamos la propagacion decada instruccion hasta el extremo derecho, vamos a ver que este datapathcon registros intermedios (o sea, este pipeline) se comporta como una lıneade produccion en una fabrica, en donde cada etapa recibe un “producto” amedio hacer, realiza sobre el su tarea especıfica, y le entrega el resultado a laproxima etapa, al mismo tiempo que recibe otro “producto” a medio hacer. Eneste caso, los “productos” son instrucciones. Se logra ası cierto paralelismo, yaque varias instrucciones son ejecutadas en simultaneo. Desde el exterior, loque vemos es que el procesador puede ser operado a frecuencias mucho masaltas, ya que entre flanco y flanco de reloj hay que acomodar solo el retardo depropagacion de una etapa, no el del total del datapath como ocurrıa antes. Sinembargo, el CPI se mantiene practicamente en uno, dado que se inicia unainstruccion en cada ciclo.

En realidad, el CPI aumenta un poco, porque hay instrucciones que debenesperar algunos ciclos antes de ser iniciadas. Por ejemplo, la bifurcacion del se-gundo ejemplo, donde hay que esperar a que se ejecute la primera instruccionpara saber si hay que leer la tercera o ir, en cambio, al codigo correspondientea la etiqueta SonIguales. En casos como estos, se espera uno o mas ciclosantes de meter otra instruccion en el pipeline, tarea de la que se encarga launidad de control junto con hardware adicional. Como no entra nada en el ci-clo de la espera, se dice que en el pipeline se metio una burbuja (o sea, un “nohacer nada” que se propaga de etapa en etapa como si fuera una instruccion).

Tambien pueden producirse burbujas cuando una operacion aritmetica usael resultado de una anterior que esta muy proxima, como ocurre con el tercerejemplo, en donde se mete una burbuja en el pipeline para esperar a que unode los datos de la segunda instruccion (el registro R5) este disponible. Esteejemplo sugiere un metodo de optimizacion de software, que es separar, enla medida de lo posible, instrucciones que tienen dependencias de este estilo,intercalando otras instrucciones utiles en el medio. Los compiladores media-namente avanzados suelen contar con algoritmos de optimizacion que haceneste tipo de cosas automaticamente.

Ahora estamos en condiciones de explicar que es el branch speculation quese menciono en la Diapositiva 7 como uno de las cualidades del ARM Cor-tex M3. Cuando el procesador se encuentra ante la necesidad de meter unaburbuja por no saber si un branch debe ser tomado o no, como ocurre con elcodigo del ejemplo del medio, una posibilidad es que especule que va a sertomado, metiendo la instruccion correspondiente en el pipeline, en lugar deponer una burbuja. Si, en el ciclo siguiente, se encuentra que la especulacion

44 DATAPATHS PARA PUNTO FLOTANTE • 17

estuvo acertada, no habra que cambiar nada, y se habra empezado a ejecutaruna instruccion util en lugar de meter una burbuja, con el consiguiente ami-noramiento del CPI (recuerden que las burbujas hacen que CPI > 1). Si laespeculacion no estuvo acertada, a esa instruccion metida erroneamente se leadosa un flag que indica que no hay que almacenar ninguno de sus resulta-dos, transformandola ası en una burbuja, y todo sigue como cuando no habıabranch speculation. En conclusion: muchas burbujas se evitan, aunque no to- En procesadores mas

performantes, en lugarde asumir que un

branch debe ser tomado,se usa un circuito que

usa el historial recientede saltos para intentarpredecir si el branch encuestion debe tomarse o

no. Eso mejora elporcentaje de burbujasque se evitan. Cuando

se usa este tipo dehardware, se habla de

branch prediction.

das. Tengamos en cuenta que la mayorıa de los branches en codigos Assemblyson tomados.

Arriba de los registros esta indicada la nomenclatura comunmente usadapara la division de un datapath en cinco etapas. Recordemos el funcionamien-to visto en la diapositiva anterior. Frecuentemente, a cada etapa se le dice:

1. Instruction Fetch (IF) a leer la instruccion.

2. Instruction Decode (ID) a leer los registros y hacer alguna decodificacionde la instruccion que haga falta.

3. Execute (EX) a calcular el resultado, si se trata de una operacion aritmetico-logica, o la direccion de memoria, si es un load o store.

4. Memory (MEM) a acceder a la memoria.

5. Write Back (WB) a escribir el registro destino.

Desde ya que, si una instruccion esta en una etapa cuya funcion no necesi-ta (ej., un ADD R1,R2,R3 en la etapa MEM), entonces la etapa no hace naday la instruccion simplemente pasa a la siguiente.

43. Segmentacion (o “pipelining”)

En la figura se ve la ejecucion de instrucciones en funcion del tiempo, sinpipelining en el primer caso y segmentado en el de abajo. No se detenganen los detalles de esta diapositiva (ej., el significado de esas instrucciones,que no son ARM). Esta nada mas para aclarar lo explicado en la anterior.Mas precisamente, como se va propagando cada instruccion en un procesadorsegmentado, comparado con uno no segmentado.

44. Datapaths para punto flotante

La diapositiva muestra, muy rapidamente, formas de implementar ins- ¿Se acuerdan de quedijimos que la

microprogramacion seusa actualmente en

pocos casos? Puede serutil, por ejemplo, para

implementar la unidadde control de una etapa

EX no segmentada.

trucciones para punto flotante en procesadores modernos. En las dos figuras,la tıpica etapa EX de un pipeline, indicada como EX Integer Unit, tiene, enparalelo, etapas EX especiales para punto flotante. La unidad de control seencarga de que opere el bloque EX que corresponde a la instruccion. El hard-ware para multiplicar y dividir enteros esta ahı integrado en las etapas paramultiplicar y dividir en punto flotante; esa combinacion probablemente lleva

46 MERCADO ACTUAL DE 32 BITS • 18

a una implementacion mas eficiente, considerando la complejidad de este tipode hardware aritmetico.

Notemos que, en la figura de arriba, los bloques EX mas sofisticados tie-nen una conexion “en lazo cerrado”, mientras que, en la de abajo, cada uno esun pipeline. El hardware para realizar estas operaciones es de tamano con-siderable, y lo usan solo algunas instrucciones. Dependiendo del mercado delprocesador en cuestion, puede resultar mas conveniente implementar las EXmediante pipelines (diagrama de abajo) o no (diagrama de arriba). Lo primeromejora la velocidad, pero ocupa mas silicio (por lo tanto, tiene mas costo).

45. ARM

La CPU de Acorn era particularmente simple. Cuando Apple decide entrar El ARM6 es la CPU delprimer PDA de Apple

(el Newton), lanzado en1998 pero cuyo diseno

comenzo en 1989.

en el mercado de los PDA, se interesa por este diseno. Junto con Acorn y VLSITechnology, fundan la Advanced RISC Machines (ARM) Ltd. en 1990.

La estrategia de la nueva empresa fue proveer:

Disenos de procesadores de 32 bits pequenos y de bajo consumo.

Licenciables, para que otros fabricantes puedan incorporarlos en suspropios circuitos integrados.

Esto funciono, en especial gracias al crecimiento de los telefonos celularesy los SoC. 15 anos despues, los micrcocontroladores ARM son los mas vendidosen el segmento de 32 bits.

Sitio del Laboratorio de Computacion de la Universidad de Cambridge:http://www.cl.cam.ac.uk/.

Texas Instruments recientemente adquirio un fabricante de microcontro-ladores ARM Cortex-M3 llamado Luminary Micro, ası que tiene esa lınea,que todavıa asocia con el nombre de Luminary, y tambien usa cores ARM ensus microcontroladores OMAP, que contienen tanto un core ARM como unoDSP de Texas. Cuando se requiere procesar senales, resulta util contar con Un DSP (digital signal

processor) es unprocesador disenadoespecialmente para

procesamiento digitalde senales.

un microcontrolador para propositos generales al lado del DSP, para liberar aeste de la administracion de las interfases (al usuario, entre otras) y demasprocesamiento que no es su especialidad.

46. Mercado actual de 32 bits

Esta diapositiva muestras los resultados de una encuesta, a desarrolla-dores de embebidos, parecida a la de la Diapositiva 11, pero en este caso sepregunto por procesadores de 32 bits. Entre las respuestas aparecen familiasderivadas de las arquitecturas x86 y 68K/Coldfire (o sea, los sucesores del In-tel 8086 y Motorola 68000 respectivamente) descriptas en las Diapositivas 10y 14. Tambien se ven algunos cores para FPGA: el Xilinx Microblaze y el Al-tera NIOS. Tienen cierta presencia las arquitecturas PowerPC, que son RISC,

49 SUPERESCALARES Y VLIW • 19

derivan de los trabajos pioneros de IBM en el area, y durante un tiempo fueronlas CPUs de las Apple eMac, ademas de tener buena aceptacion en embebidosde gama alta.

Vemos tambien una buena presencia de arquitecturas ARM. Esta empresacrecio mucho en estos tiempos, ası que seguramente habrıa recibido mayorcantidad de respuestas si la encuesta se hubiese realizado este ano. Tambien MIPS Technologies es

una empresa similar aARM, que ofrece coresde arquitectura MIPS,

que son licenciados porMicrochip y otras

empresas que fabricancon ellos

microcontroladores.

vale la pena mencionar las arquitecturas MIPS que desde hace poco impulsapor Microchip mediante su lınea PIC32.

48. Multiple inicio de instrucciones

Normalmente, un procesador superescalar tambien esta segmentado. Sien-do ası, para poder iniciar n instrucciones por ciclo, el superescalar cuentan conn pipelines, que pueden ser iguales o diferentes (ej., un pipeline para opera-ciones aritmeticas, otro para loads y stores).

Existen otros tipo de arquitecturas, mucho menos comunes, que tambieninician n instrucciones por ciclo. Lo que caracteriza a los superescalares esque la decision sobre que instrucciones se inician en paralelo es tomada entiempo de ejecucion, por un hardware llamado dispatcher que poseen entre laetapa IF del procesador (que puede leer varias instrucciones a la vez) y lasetapas ID de cada uno de sus pipelines. En aquellas otras arquitecturas, ladecision se toma en tiempo de compilacion, quedando explıcito en el codigoobjeto que instrucciones van a iniciarse en paralelo. Por eso, a esas otras ar-quitecturas se las llama de paralelismo explıcito. Un ejemplo es el tipo VLIW(very long instruction word).

La tecnica superescalar consigue un incremento significativo de la velo- Los procesadores vistosanteriormente (ARM 7

TDMI y ARM CortexM3) no son

superescalares, perosı otros los ARM Cortex

de la serie A.

cidad, pero lo hace a expensas de la superficie de silicio (es decir, el costo) yel consumo, dada la multiplicacion de pipelines y el hardware adicional quenecesitan. Por otro lado, se requiere un acceso a memoria de buena veloci-dad para mantener ocupados a los pipelines. Los procesadores que se usan encomputadoras personales son superescalares, desde la masificacion del IntelPentium. En embebidos, en la actualidad, solo los de alta gama lo son.

Mas adelante, en la Diapositiva 48, puede verse un diagrama de bloquesde un procesador ARM superescalar.

49. Superescalares y VLIW

El diagrama de tiempos muestra como un procesador superescalar o VLIWiniciarıa dos instrucciones por ciclo (o sea que se tratarıa de un 2-issue). Pue-de procesar, luego de nueve ciclos, diez instrucciones, ademas de otras ocho amedio procesar que no entraron en el diagrama. Notemos que, siendo ası, elCPI es menor que uno. Con superescalares, frecuentemente se usa IPC (ins-tructions per cycle) en lugar de CPI (cycles per instructions). Uno es la inversadel otro, claro.

En realidad el procesamiento no es tan rapido, porque el software tiene de-pendencias que obligan a que, como ocurre con cualquier pipeline, a veces en-

51 MEMORIAS CACHE • 20

tren burbujas o se descarte procesamiento que se ejecuto especulativamente.Ademas, en una CPU n-issue, las dependencias tambien hacen que, durantealgunos ciclos, no puedan iniciarse n sino un numero menor de instrucciones.

50. Memorias cache

El memory gap fue un factor limitante para el movimiento RISC en susorıgenes, dado que los RISC originales solıan tener peor densidad de codigoque los CISC. Por eso, en los primeros RISC era muy importante el cache.Desde entonces, este problema fue atenuado mediante los conjuntos de ins- Otra estrategia para

resolver el problema delmemory gap en RISC,

era tener una grancantidad de registros,

para poder trabajar conellos en lugar de usar lamemoria externa. Esto

fue implementado enalgunos RISC de gama

alta, como el SPARC (deSun) y PowerPC (de

IBM/Motorola).

trucciones compactos y el agregado de instrucciones CISC en los disenos RISC(dando lugar a los Complex RISC). Por ejemplo, los ARM actuales cuentancon conjuntos de instrucciones de 16 bits, incluyendo algunas complejas comoMAC (multiplicar y acumular). Gracias a innovaciones como estas, muchosRISC producen un codigo de densidad similar al de los CISC.

Se llama localidad espacial del software a la tendencia a que una CPUacceda a posiciones de memoria que estan proximas a las posiciones recien-temente accedidas. Por ejemplo, cuando el procesador referencia una instruc-cion, en el futuro proximo es probable que referencie algunas que le siguen oanteceden cerca. La localidad temporal del software es un fenomeno similar:es probable que las posiciones referenciadas ahora vuelvan a ser requeridasal poco tiempo.

Estos dos fenomenos son explotados con las memorias caches, al almacenaren ellas los contenidos de las posiciones accedidas recientemente, junto conotros de direcciones proximas, especulando con que van a ser requeridos alpoco tiempo. Si la especulacion resulta acertada, el acceso a memoria se puedeatender rapidamente, gracias a la gran velocidad de la cache. Si no resultaacertada, se produce un cache miss y hay que acceder a la memoria principal(o a un nivel superior de cache, si lo hay). Cuando hay un cache

miss, el acceso a lamemoria principal (o a

un nivel superior decache) es realizado

automaticamente por elhardware.

Los cache son transparentes para el programador (salvo algunas pocasinstrucciones de manejo de cache, en algunas arquitecturas) Es decir que, parael programador, todo acceso a memoria es igual, sin saber si hay un cache, nisi va a haber un cache hit o miss. Dado que algunos accesos (pocos) son cachemiss y otros (muchos) son cache hit, el tiempo de acceso a memoria mejoranotablemente, si se lo compara con el de un sistema de memoria sin cache.

51. Memorias cache

Los normal hoy en dıa (ano 2010), es que los superescalares (incluyendo El Intel Atom tiene uncache L1 para datos y

otro para instrucciones.Como ya dijimos, lo

habitual es que el cacheL1 este ası, divido (loque se llama un split

cache).

los procesadores para PC) tengan dos niveles de cache integrados en su mis-mo chip. En la foto puede verse el la pastilla del procesador Intel Atom vistade arriba. Las memorias puede divisarse porque se ven como rectangulos uni-formes, dado que estan compuestas por patrones que se repiten muchas veces,horizontal y verticalmente. A la izquierda del chip se puede ver un rectangulo

52 INTEL ATOM • 21

grande, que ocupa una cuarta parte de la superficie total: ese es el cache denivel 2 (level 2, o L2).

En el medio, ligeramente abajo, puede verse un bloque similar pero maspequeno: ese es uno de los de nivel 1 (L1). El otro cache L1 es uno de los dosrectangulos que se ve cerca del borde derecho.

Si la frecuencia de trabajo del procesador es baja, al punto de que las tec-nologıas comunes de memoria externa pueden atender los accesos en un ciclo,entonces el cache no tiene sentido. Por eso, lo vamos a ver en procesadores quefuncionan a frecuencias de por lo menos cientos de megahertz (dado el estadode la tecnologıa en el ano 2009).

Los distintos algoritmos difieren en su “cantidad” de localidad espacial ytemporal. Ademas, frecuentemente pueden reescribirse (optimizarse) los al-goritmos para aumentar la localidad, consiguiendose ası mas beneficios delsistema cache. Por ejemplo, un programa que debe operar sobre una matrizgrande, en lugar de recorrerla toda, una y otra vez, quizas pueda trabajarsobre porciones chicas de esta, para luego juntar los resultados intermediosde una sola vez. Estas optimizaciones son especialmente importantes en sis- Estas optimizaciones y

estimacionesrelacionadas con cache

conforman una tematicaque excede el alcance denuestro curso, pero bien

podrıa entrar en uncurso sobre embebidosque venga despues de

este.

temas embebidos, porque estos generalmente se usan para propositos parti-culares, ası que dedicarle tiempo a optimizar un algoritmo especıfico puedevaler la pena, si es que este ocupa una parte significativa del tiempo de pro-cesamiento. Asimismo, tambien es util poder estimar, dado un algoritmo aejecutar, si un cache mas grande traerıa suficientes beneficios como para jus-tificar su costo. En la practica, se suele hacer una estimacion teorica “gruesa”,para luego cotejar las mejores alternativas, corriendolas en los chips o en si-muladores de estos.

52. Intel Atom

Este chip fue lanzado pensando en el mercado de las netbooks, pero puedeutilizarse en embebidos de alta gama. Pueden encontrar mas informacion enlas siguientes paginas:

http://www.intel.com/technology/atom/http://en.wikipedia.org/wiki/Intel Atom

El TDP (thermal design power, o potencia del diseno termico) indica lapotencia que debe poder disiparse del procesador. Esto quiere decir que, enel peor caso (o sea, con procesamiento de maxima intensidad) el chip consu- Tengamos en cuenta

que, debido a lacapacidad calorica de

los cuerpos, entre lageneracion instantaneade calor y el incremento

de temperatura queesta produce, existe unarelacion parecida a la de

un filtro pasa bajos.

mira aproximadamente esa potencia, en promedio. Puede consumir mas perosolo brevemente, sin que ese “transitorio” levante suficiente temperatura co-mo para danarlo. Por lo tanto, para estimar el consumo maximo o especificarun eventual disipador o ventilador, el TDP sirve, pero para disenar la fuentede alimentacion son necesarios mas detalles, porque habra que atender co-rrectamente esos “transitorios”.

54 MEMORIA VIRTUAL Y MMU • 22

53. ARM Cortex A8

Es el mas popular de la lınea A de Cortex. Comparada con la lınea M,de la que forma parte el Cortex M3 visto antes, esta lınea incorpora superes-calabilidad, y normalmente se la usa con cache y MMU. Ademas de ser masperformante, esta pensada para ser utilizada con sistemas operativos tipo Li-nux.

54. Memoria virtual y MMU

La memoria virtual es util para programar aplicaciones relativamentecomplejas, porque permite que el programador las divida en modulos llama-dos procesos, que son programas que corren simultaneamente (o que parecencorrer simultaneamente). Esto es lo estandar en cualquier PC, y se aprove-cha para lograr, por ejemplo, que puedan estar abiertas varias aplicaciones almismo tiempo. Si el sistema operativo, con asistencia de un hardware llamadoMMU (o memory-management unit), proveen memoria virtual, entonces cadauno de los n procesos puede tener su propio espacio de memoria contigua detamano M , sin que sea necesario tener una memoria de hardware (o sea, me-moria fısica) de tamano n×M (a menos que los procesos llenen sus memorias).Lo logran dividiendo la memoria de cada proceso en paginas (de unos pocosKB cada una). El sistema operativo (SO), junto con la MMU, se encargan de“archivar” e “ir a buscar” las paginas que corresponden a los accesos de memo-ria de los procesos, como si fueran bibliotecarios, creando, para los procesos,la ilusion de que cada uno tiene su propia memoria, grande y contigua.

Cuando un proceso requiere el contenido de una posicion de memoria, Al igual que con lamemoria cache, este

proceso es transparentepara el programador de

la aplicacion.

manda la direccion al sistema de memoria. Esta direccion corresponde a esamemoria “imaginaria”, grande y contigua, que crearon para el – por eso deci-mos que es una direccion virtual. La direccion virtual es tomada por la MMU,que la traduce a una direccion real, que es la que indica donde, en la memoriafısica, esta “archivada” la pagina que corresponde, y se lee de ahı el contenidorequerido por el programa.

Cuando un proceso pide usar mas memoria, el SO se encarga de reservar-le las paginas que solicita, en la memoria fısica. Sin embargo, si los procesosestan utilizando demasiada memoria, puede que no quede espacio disponible.Si esto ocurre en una PC, lo normal es que se guarde alguna pagina en disco,para abrir lugar. De ser requerida, esa pagina puede ser retomada de discoposteriormente, por el SO, guardandose otra. Los sistemas embebidos gene-ralmente no tienen discos rıgidos, pero quizas emplean este esquema con otrotipo de hardware, o el SO o la aplicacion tienen alguna otra rutina para aten-der la excepcion producida cuando se acaba la memoria (ej., indicar que hayun error).

57 DHRYSTONE • 23

56. Medicion de performance

Cuando se habla de MIPS (million instructions per second), puede ser unaabreviatura de MIPS pico o de Dhrystone MIPS. La primera medida es sim-plemente el maximo de instrucciones nativas (es decir, instrucciones Assemblydel procesador en cuestion) que pueden ejecutarse en un segundo, en millones.La segunda medida la vamos a ver en la proxima diapositiva.

Para dar un ejemplo de por que MIPS pico no es una buena metrica pararepresentar la velocidad, consideremos que con Thumb (o sea, un conjunto deinstrucciones de 16 bits) se necesitan mas instrucciones para hacer lo mismoque con ARM (uno de 32 bits). Entonces, a iguales MIPS pico, el Thumb es enrealidad mas lento. Esta inconveniencia de MIPS pico es todavıa mas notoriacuando comparamos arquitecturas de 8 bits con arquitecturas de 32. MIPSpico solamente es util para comparar procesadores que tienen similares ISAs.

Un benchmark es un programa, o un conjunto (suite) de programas, quees (supuestamente) representativo del universo de aplicaciones. La palabraesta tomada de la agrimensura: un benchmark es una marca sobre un objetoquieto cuya altitud ya se ha medido, contra la que se comparan los demas obje-tos. La misma palabra se usa frecuentemente para los resultados. Por ejemplo,se puede decir que los benchmarks de este procesador son tantos segundos pa-ra el programa tal, etc... Asimismo, a este tipo de medicion de performance sele dice benchmarking.

Para poder usarse con diferentes ISAs, los benchmarks se escriben en len-guajes (ej., C) que deben ser compilados. Por eso, cuando se ejecuta un ben-chmark, en realidad se esta evaluando el compilador junto con la CPU. Pe-ro lo que queremos probar es la CPU sola. Para poder minimizar el efectodel compilador, los disenadores de benchmarks los crean de manera que seadifıcil que un compilador consiga mejoras en el tiempo de ejecucion del bench-mark, mas alla de las optimizaciones genericas que aprovecha todo programa.De todas formas, el efecto del compilador no es despreciable, porque algunosprocesadores cuentan con mejores compiladores que otros (en particular sisu ISA esta establecida en el mercado). Por eso, al difundir el resultado delbenchmark, conviene que se diga tambien que compilador se uso. Ası, quiencompare los resultados de distintos procesadores, podra evaluar que tan simi-lares son los compiladores usados, en cuanto a su capacidad de optimizacion.Es mas, en algunos casos, ademas del compilador, se informa que memoria seuso, que sistema operativo, etc.

57. Dhrystone

El nombre Dhrystone, que suena a dry stone o piedra seca, le fue dado enoposicion a Whetstone (wet stone o piedra mojada), que es el nombre de unbenchmark anterior, que emplea muchas operaciones de punto flotante y la-zos frecuentemente encontrados en programas cientıficos. Para aplicacionesque no usaban punto flotante ni eran cientıficas, el Whetstone no resulta-

59 MEJORES BENCHMARKS • 24

ba representativo, por eso R.P. Weicker vio la utilidad de crear el Dhrystone. Punto flotante es unmodo de representar

numeros reales en unprocesador. Cuando se

ejecutan programas queutilizan intensivamente

este modo, se habla deprocesamiento en punto

flotante. Cabe aclararque en punto flotante no

se puede representarmas que un subconjunto

de los numerosracionales, pero es lo

que mas se aproxima alos reales.

El corolario es que Dhrystone no hace incapie en punto flotante, y esto nosinteresa porque este benchmark sigue siendo el mas utilizado en el mundoembebido.

Cuando una publicacion informa MIPS a secas, a veces es necesario anali-zar el contexto para saber si se refieren a MIPS pico o a Dhrystone MIPS. Porejemplo, si el procesador funciona a una frecuencia maxima de 100 MHz y seinforma que consigue 100 MIPS, claramente son MIPS pico, ejecutandose unainstruccion por ciclo. Si dijera 50 MIPS, probablemente tambien serıan MIPSpico, con cada instruccion demorando dos ciclos (podrıamos chequear esto ulti-mo para asegurarnos). Sin embargo, si dijera 57 MIPS, probablemente serıanDhrystone MIPS. Otras publicaciones usan la abreviatura DMIPS para estosultimos, y nos ahorran el analisis.

Siendo que la maquina de referencia es de 32 bits, las instrucciones a lasque se refiere son, a grosso modo, similares a las de otras arquitecturas de 32bits. Por lo tanto, un procesador de 32 bits para el que se informa 1 DMIPS,puede ejecutar ejecutar un programa a alrededor de un millon de instruccio-nes Assembly por segundo, pero esa estimacion no es nada precisa, mas to-davıa si el procesamiento que realiza es programa no esta bien representadopor Dhrystone, como pasa habitualmente.

Otra de las crıticas a Dhrystone es que el compilador puede tener optimiza-ciones especialmente pensadas para el. Como decıamos antes, los disenadoresde mejores benchmarks (como los que se mencionan en la diapositiva siguien-te) trabajaron para evitar que eso ocurra con los suyos.

58. MFLOPS

Tengamos en cuenta que no todo procesamiento de senales, multimedia odatos cientıficos requiere punto flotante, mucho puede ser hecho, de maneraeficiente, mediante punto fijo. En proximas unidades vamos a ver mas sobreestos temas.

59. Mejores benchmarks

CPU = Central Processing Unit. Es decir, el procesador.

SPEC = Standard Performance Evaluation Corporation. Es un consorciosin fines de lucro. Pueden darle una ojeada al sitio del SPEC CPU2006:

http://www.spec.org/cpu2006

EEMBC se pronuncia de forma parecida a embassy o embajada. Estos ben-chmarks son mantenidos por la Embedded Microprocessor Benchmark Con-sortium, un consorcio formado en 1997. Son buenos benchmarks, pero no muypopulares, por ahora. Coremark tiene su propia pagina:

http://coremark.org

59 MEJORES BENCHMARKS • 25

La media geometrica es la raız enesima del producto de los n resultados Notar que la mediageometrica es similar ala aritmetica: en lugar

de sumar se multiplica,y en lugar de dividir se

saca raız.

individuales. Para este caso, la media geometrica tiene varias ventajas porsobre la artimetica (que es el promedio comun).