Notas de la Presentacion “Tecnolog´ ´ıas y ... · Estas son notas para las diapositivas de la...
-
Upload
truongkiet -
Category
Documents
-
view
231 -
download
0
Transcript of Notas de la Presentacion “Tecnolog´ ´ıas y ... · Estas son notas para las diapositivas de la...
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).