Debe estar conectado para participar
Buscar en los foros:


 






Uso de Comodín:
*    coincide cualquier número de caracteres
%    coincide exactamente un caracter

Que tan importante es el L1, L2, L3

No hay Etiquetas
Entrada
High End Level

drnetwork

entradas: 654

09:28 12/09/2007

1

Las innovaciones de esta arquitectura van creciendo día a día y me gustaría que los expertos de este foro nos ayuden a disipar nuestras incertidumbres:

1) En pocas palabras y sencillas que es el Cache L1, L2 o L3 de los micros.
2) Cuanto más Cache L1, L2 o L3 mas velocidad y mejor performance
3) Porque AMD no apuesta tanto al gran tamaño de Cache, ya que su tecnología x2 tiene un máximo de Cache en el L2 de 2MB ej.

AMD Athlon 64 X2 Dual-Core 6000+ 3.0GHz 2 x 1MB L2 Cache
AMD Athlon 64 X2 Dual-Core 5200+ 2.6GHz 2 x 1MB L2 Cache
AMD Athlon 64 X2 Dual-Core 4000+ 2.1GHz 2 x 512KB L2 AM2 (en este caso no)

Del lado de la empresa azul:
Intel Core 2 Duo E6850 Conroe 3.0GHz 4M shared L2 Cache
Intel Core 2 Duo E6550 Conroe 2.33GHz 4M shared L2 Cache
Intel Core 2 Duo E4400 2.0GHz 2M shared L2 Cache

Que tan importante es el cache en cantidad ? es mejor tener más en L1 ? es mejor tener más en el L2? Nos da mucho rapidez? mejor procesamiento? Tiene algo que ver con los núcleos?
gracias a todos las personas que sean tan amables de responder.

Gracias, un abrazo
——- ———– —————-
Phenom II x4 940BE | Gigabyte MA790X-UD4 | Sapphire 5770 1GB GDDR5| 4 GB CORSAIR DDR2 XMS2 800MHZ- | Windows 7 | Powercooler PS-550W MODULAR | Scythe mugen infinity 5 heatpipes | HD Gigabyte 1.5 TB | Site: www.primiciasnew.com My Facebook

Extreme Level

conrado

entradas: 1186

09:48 12/09/2007

2

basicamente..
el cache de un micro sirve para conectar el micro con la memoria ram..
como amd tiene un controlador integrado para la memoria ram tiene menos problema q intel al comunicarce a la RAM.. osea q tiene menos tiempos de espera.. entonces no necesita de tanta caché..

como intel no tiene el controlador de memoria integrado,, para poder disminuir esta latencia al conectarce con la ram.. tiene q agregar mas caché a sus micros para no perder rendimiento..

pd: por ahi falto explicar un poco mas.. pero si buscar un poco en google seguro encontras algo mas armado..

[Review] Netbook Acer Aspire 1410 11,6", Intel SU2300 CULV, GMA 4500MHD, 2GB, 160GB WD Scorpio Blue, HDMI, 6 celdas (4400 mAh)..

Mi blogsito Hardsoft Geek

Midle End Level

Fede666

entradas: 484

10:17 12/09/2007

3

La cache, del nivel que sea, es solo UNO de los MUCHOS aspectos que conforman la arquitectura de un CPU, por lo tanto, hay que pensarla como tal, es decir, como una característica más de las tantas que posee este.

La cantidad de cache depende de varios factores, pero principalmente de la relación costo/beneficio, cuanto cuesta(1) incluir una determinada cantidad(2) de cache y que beneficios aporta esa cantidad según la arquitectura y función(2) que cumpla.

(1) El costo se divide en varios aspectos pero basicamente se trata del costo de fabricación, el consumo en corriente y el calor disipado.

(2) La cantidad está relacionada también con la función, las ventajas y las limitaciones de cada arquitectura. Por ej. en al caso de AMD, al tener integrado en el mismo CPU el controlador de memoria, entre otros aspectos, no es necesario tener una gran cantidad de cache ya que el beneficio que puede aportar es mínimo en relación a su costo. Incluso, en el caso de los K10, la nueva cache L3 tiene además la función de facilitar (y acelerar) la comunicación de datos entre núcleos. En el caso de Intel, para acceder a la memoria, debe hacerlo mediante el chipset (Northbridge) y el FSB, el cual es un BUS compartido, lo que agrega demoras (latencias) en el acceso a la memoria y, posiblemente, problemas de contención. Además de la arquitectura en sí, esta desventaja, es uno de los motivos por los cuales los micros de Intel, suelen tener cada vez más memoria cache, en este caso el beneficio de la cantidad es mayor que para AMD.

EL tema es mucho más largo y complejo, pero lo importante a saber es que, si bien más cache suele significar mejor rendimiento, esto no siempre es así e incluso, muchas veces se llega a un punto en el que el beneficio es despreciable (casi siempre) respecto del costo, es muy común encontrarse con casos donde, para un mismo CPU, un aumento del 100% de cache (el doble), apenas reporta un beneficio de, 2 o 3% y solo en algunas aplicaciones.

En resumen y en mi opinión, no es correcto pensar en el rendimiento de un procesador según una sola o unas pocas características, sino que debemos pensarlo en su conjunto: cuanto rinde y a que costo, independientemente de sus caráterísticas individuales. Muchas veces se dice: "Comprate tal micro porque tiene más cache" pero la pregunta es (o son): ¿Cuánto mejora el rendimiento? o más apropiadamente, ¿Mejora el rendimiento para lo que YO necesito? ¿A que costo? ¿Cuánto consume? ¿Cuánto calor genera?

En fin, como dije: mí opinión.

Midle End Level

pabloide86

entradas: 137

14:46 12/09/2007

4

¿Mejora el rendimiento para lo que YO necesito?

creo q le acertaste en el medio de los testiculos al asunto! como bien dijiste depende del uso que se le de…

un comentario sobre los niveles de las cache: hay distintos niveles porque tienen distintas velocidades y distinta cercania al nucleo. si hacemos una piramide de lo que serian los dispositivos de memoria tenemos:
[Mas rapido, mas costoso y menos abundante:]
* Registros internos del procesador
* Memoria Cache
* Memoria Ram
* Disco Rigido
* Almacenamiento secundario
[Mas lento, mas barato, mas abundante y mascherano(chiste malo!)]

la funcion de la cache es tener siempre a mano los datos que se necesitan para ejecutar las instrucciones…el rendimiento esta en intentar rellenar la cache de forma tal que los accesos a memoria sean los menores posibles.

Desktop: Celeron D315 2.26GHz + 512MB DDR400 + Mother ASRock P4VM8 + GForce Fx5200 128MB + HDD SATA 80GB + SoundBlaster Live! 24bit 7.1 + Monitor Samsung 715n 17" + MacOS Tiger 10.4.8 + Windows XP SP2

Notebook: Olibook 610: Celeron M 1.73Ghz + 1280MB DDR2 + HDD 60GB + CDRW+DVD + GMA950 + WIFI Intel PRO 3945abg + Windows XP SP2

http://datapayasadas.com.ar

Midle End Level

quaid

entradas: 283

22:08 13/09/2007

5

AL cache funca asi:

Hay un principio q se llama de localizacion que dice q cada instruccion hay un 95% de probabilidad q la proxima a ejecutarse sea la siguient en memoria.

La cache es un intermedio entre la velocidad del CPU y la RAM(muchisimo mas lenta) ,
X medio de este principio el SO toma de la ram un bloque del programa y lo coloca en cache, entonces la cpu busca la instruccion en la cache y asi hasta el fin del bloque, ahi es cuando el SO actualiza ese bloque q puso en la cache con su equivalente en la RAM y trae uno nuevo (q es el q le sigue) y asi y asi.

La cache la ocupan muchos bloques de procesos eso es un tamaño fijado, x eso hasta q punto sirve mas cache? osea ayuda, pero todo depende de la carga q le des a la pc.
Si corres 50 cosas a la vez.. y si.. mas cache se va a notar, si corres pocas no se va a notar tanto.

Habria q ver como la maneja, xq tener mas cache podes meter mas blooques x ende mas programas o podes tener bloques mas grandeas, menos programas pero mas rapidos.

Igualmente ahora es medio descontrol ese tema , xq los programas ahora son multithread, hace tiempo ya, por ende un programa tiene varios procesos dando vuelta asi q podrian ocupar mas de 1 bloque en cache.

Por eso creo q lo q dice FEDE666 es excelente, no hay q hacer relacion directa de mas cache = mas velocidad. Es muy relativo a la arquitectura y como esta diseñado el SO y como lo estas cargando.

Y tb hay q abstraerse y no pensar q word entero puede entrar en la cache, son instrucciones q ocupan 2byte (segun la palabra). Cuanto menos acceso tengas a RAM mas rapido va a ser todo x lo menos el proceso aritmetico-logico luego bueno entran miles de factores mas.

Midle End Level

pabloide86

entradas: 137

22:51 14/09/2007

6

quaid exactamente…no me quise meter en detalles para no confundir a nadie pero creo que lo definiste muy bien…

en definitiva la cache sirve para tener al micro laburando mientras se buscan los datos en la ram…si el micro y el SO son optimos siempre va a haber en la cache las cosas que se van a ejecutar en los proximos ciclos del clock(hilando muy fino)…y si la unidad que se encarga de hacer la prediccion de cuales seran las proximas instrucciones es muy buena entonces no se necesita tanta cache para que el rendimiento mejore…

Desktop: Celeron D315 2.26GHz + 512MB DDR400 + Mother ASRock P4VM8 + GForce Fx5200 128MB + HDD SATA 80GB + SoundBlaster Live! 24bit 7.1 + Monitor Samsung 715n 17" + MacOS Tiger 10.4.8 + Windows XP SP2

Notebook: Olibook 610: Celeron M 1.73Ghz + 1280MB DDR2 + HDD 60GB + CDRW+DVD + GMA950 + WIFI Intel PRO 3945abg + Windows XP SP2

http://datapayasadas.com.ar

Hardcore Extreme Level

Dr. Vodka

entradas: 4958

23:32 14/09/2007

7

Hago copy paste de un post anterior mio… para evitar reescribirlo.

Porque intel usó desde siempre una organización inclusiva de sus caches en sus micros. A que me refiero… los contenidos de la L1 se copian en la L2, y los de la L2 en la L3. Que consecuencias tiene esto? La L1 tiene que ser no muy grande y La L2 tiene que ser MUY rápida y estar en "sintonía" con el tamaño de la L1. En fin, con una organización así, más cache incrementa el rendimiento. Cache total = L3 – L2 – L1. Aparte un sistema así le sirve a intel porque al no tener el MC en el micro, una cache rápida y grande ayuda a ocultar la latencia para acceder a la memoria. Ahora no se como van a seguir las cosas con nehalem y su IMC…

Intel por ser histórico líder en procesos para manufacturar integrados se puede dar el lujo de, al hacer un shrink, ponele de 65nm a 45nm, agregar caché para mejorar el rendimiento y hacer el producto más caro (por ocupar más lugar físico el core mismo), incluso luego de hacer el micro mismo más chico.

AMD es lo contrario, usa caches exclusivas: los contenidos de la L1, L2 y L3 son independientes. Consecuencias: L1 rápida, L2 no tan rápida, el tamaño de ambas no tiene que estar relacionado, ambas pueden ser igual de grandes, por ejemplo. Lo que se genera con esto es un micro que no necesita caches rapidas para andar bien, con una cache más lenta funca igual de bien. Cache total = L1 + L2 + L3. Por eso los micros de AMD se la bancan re bien con 512KB de L2 (+ 128KB de L1, 640kb totales) y las versiones de 1MB (1152 kb totales) no suman casi nada de rendimiento. A AMD le viene joya usar una arquitectura así porque al tener el MC integrado, las caches no tienen que ser rápidas para ocultar latencias (y mejorar levemente el rendimiento), bajando el costo final.

AMD se ve beneficiado por esto, porque al no tener procesos de manufactura del nivel de intel (en NM me refiero), no se puede dar el lujo de usar caches inclusivas y poner 50 megas de L2 para mejorar rendimiento, se las tiene que arreglar con caches exclusivas, y tratar de mejorar el rendimiento por otro lado (lease IMC de K7 a K8, etc)

Intel necesita cachés rápidas y grandes para aprovechar la arquitectura inclusiva que usan.

Para AMD es exactamente lo contrario, caches más lentas y no muy grandes…


E7300 @ 3.6GHz + CM 212+ | HD4850 GRONCHEX + 2253NW | 2x2GB DDR2-800 | P35-DS3P | WD Black 640GB + F3 500GB | CM 690 II Adv + F6XT | PC P&C 750w | X-Fi XtremeMusic mod + Sennheiser HD202 mod | Sidewinder X3 + CC2000
de_vodka2 | S2200+ | E6400 | E7200 | E7300 | PII 945 | NWZ-S615F
Hardcore Extreme Level

bat2com

Argentina

entradas: 3633

15:13 16/09/2007

8

Estaria bueno saber porke los intel rinde mas que los amd, si hasta aca por lo que leo todo es color de rosas para amd pero no gana la pelea contra intel

Midle End Level

MagnumStrike

entradas: 466

01:41 17/09/2007

9

El tema de la cache es complejo pero hay cosas que deben dejarse bien claro.

>>> La cache L1 es la mas veloz de todas, y su funcion es contener el codigo y datos que alimentaran directamente a los pipelines, o bien llenaran registros del procesador tan rapido como se pueda. Es cara porque funciona a la velocidad del procesador, y consume muchos transistores en el nucleo.

>>> La cache L2 es bastante mas lenta que la L1, pero es mas rapida que la memoria RAM. Ademas puede hacerse de mayor tamaño usando otra tecnica y otros componentes que pueden compactarse mas facilmente en la oblea.

>>> La cache L3 es la mas cercana a la RAM, y su funcion no es otra que tratar de combatir la enorme latencia que significa acceder a la memoria, y peor es el tema si son muchos accesos pequeños.

Los benchs del micro con el doble de cache L2 y su escaso aporte no significa que ampliando la cache no puedan haber ganancias apreciables porque si tuvieses toda la ram como L2 entonces no tendria que haber diferencia… y eso es mentira.

Veamos los factores que conspiran contra la eficiencia de la cache L2:

* La memoria RAM crece mucho mas rapido que esa cache
Entonces los datos quedan mas dispersos, ademas del codigo por ser mayores los ejecutables y es mas dificil cachear eso con una L2 de pocos megas. Las direcciones varian mucho, y a menudo se las usa pocas veces para pasar a otras regiones de memoria. Encima el programa no tiene control sobre las asignaciones de memoria, ya que el sistema operativo las asigna donde se le da la gana y no hay criterios de eficiencia. Mientras le de la memoria que pidio el soft, que se joda la L2. Vale decir que la fragmentacion de la memoria dispersa las direcciones y dificulta el cacheo.

* La multitarea le cambia la bocha a la cache L2 en forma permanente.
La conmutacion de tareas hace que se cambien bruscamente todas las regiones de memoria para dar lugar a la nueva aplicacion. En el instante que se deja durmiendo la aplicacion actual (donde mejor estaba rindiendo la L2), pasa a levantarse una aplicacion que hace mucho no se usaba junto con su memoria asociada y por ende todo lo que tenia la L2 queda de adorno, hay que vaciarla y empezar de 0 cargando de la RAM con sus terribles latencias y demas, hasta que al lograr un aceptable rendimiento de la L2 haya que tirar de nuevo todo a la basura culpa de una nueva conmutacion de tareas.

* Los compiladores son ineficientes, usan demasiados PUSH/POP en lugar de aprovechar a full todos los registros del procesador. Tambien suelen hacer un PUSH-ALL al cuete ya que no se usaban todos los registros y no habia necesidad de salvaguardarlos a todos.
Esto satura innecesariamente la cache, porque lo que se intenta preservar con la orden PUSH (mandar el dato a la pila) va a parar a la cache ya que en realidad tendria que ir a la RAM (la pila esta en la ram, y su direccion la indican los registros de pila como EBP, etc). Ademas, si el codigo fuese mas compacto especialmente en los bucles, todo ese codigo cabria en la cache y se reutilizaria una y otra vez sin acceder a la ram. Lo mismo se aplica a los datos, que si se los reutiliza una y otra vez entonces la cache rendiria mucho mas a igual tamaño.

* Se hacen peticiones de a poquito a la RAM, incrementando las perdidas por latencia.
La gran ineficiencia en la solicitud de los datos multiplica mucho mas cualquier ineficiencia en las latencias de memoria. Pedir de a poquito en lugar de lotes grandes debidamente planificados es lo peor que puede hacer el hardware. Si hubieran algunas instrucciones basicas del soft o bien del sistema operativo que dirijan la carga de datos anticipando lo que necesitaran en el futuro, entonces la cache podria cargar especulativamente datos y codigo teniendolos listos justo cuando los necesite. Lo mismo se aplica a la descarga, informando que tales datos ya no se necesitaran mas y que no deben dejarse ocupando lugar innecesario en la cache.

* La cache no sabe que datos se necesitaran despues, no es adivina
Esto se relaciona con la carga especulativa de datos dirigida por el programa o sistema operativo comentada anteriormente. La cache L2 mejorara su proporcion de aciertos si se le informa anticipadamente que direcciones de memoria seran accedidas en el futuro, para que vaya cargando con tiempo en los momentos ociosos de la ram, de a bocados mas grandes evitando sus latencias.

* La RAM responde las solicitudes una direccion por vez, llenando la L2 muy lentamente.
La RAM deberia aceptar grupos de peticiones con direcciones disimiles, guardarlas en un buffer de entrada, y responder a ellas en un lote entero con grandes ahorros de latencia. Alli rendiria bien una cache L3 especializada en esos manejos, conectandose a la RAM con un bus mas ancho pero mas corto debido a la proximidad de la cache L3. Cada chip tendria que accederse individualmente, y mientras mas accesos individuales en paralelo hayan, tanto mejor cumplira la cache L3 con lo solicitado llevando todo junto a la cache L2. Entonces la L3 vendria a funcionar como un procesador para la memoria ram, que incluso podria comunicarse directamente con otros dispositivos como los discos, placas de video o sonido, sistema de red, usb, etc.

* La mayor velocidad de procesamiento del CPU absorbe mas rapido el contenido de las caches, y genera mas direcciones dispares en un mismo tiempo.
La cache puede ser super-rapida, pero tan pronto se acabe hay que ir a la ram y esperar y esperar. Todas las ineficiencias en el acceso a la ram se ver aumentadas por la mayor voracidad del procesador.

* La cache L1 es muy pequeña (unos pocos KB) y enseguida molesta a la L2.
Aqui insisto siempre en que hay que seguir el modelo RISC: muchos registros controlables por el programador es mejor. Gracias a eso los programadores pueden usar su ingenio para planificar la estructura del codigo metiendo todo lo que puedan dentro del procesador y reutilizarlo sin perjudicar la cache L1 cuyo funcionamiento escapa a su control. Por lo menos deberia existir un area de memoria que solo sirva para contener datos temporales, moviendo de/hacia los registros. Tan solo eso mejoraria terriblemente el rendimiento, y evitaria que los pipelines queden detenidos por culpa de no tener un dato que necesiten. Alli la cache L1 solo deberia responder a casos excepcionales. La carga de codigo seria lo mas comun, pero eso lo hace en lotes de varias decenas de bytes.

* Hay programas que usan extensas areas de memoria.
Ese tipo de programas castigan severamente a las caches porque fuerzan una dispersion excesiva de las direcciones de memoria, que son dificiles de cachear. En esos casos habria que aumentar muchisimo el tamaño de la cache L2 para tener una mejora perceptible en el rendimiento.

>>> Vale aclarar para evitar confusiones, que el controlador de memoria integrado en el micro evita la latencia de acceder al Norbridge junto al uso del bus externo, tanto en la solicitud como en la respuesta, pero nada tiene que ver con la eficiencia de las caches internas del micro, donde lo que interesa es su proporcion de aciertos.

>>> Otro punto: una mayor velocidad de la cache L2 mejora su eficiencia solo en el caso de la reutilizacion de datos o codigo ya que saldrian enteramente de esa cache. Si el dato no esta, entonces tendra que soportar la gran latencia de la memoria ram.

Espero que esto haya contribuido a despejar dudas.

Saludos.

Extreme Level

Rudolf97

entradas: 1544

20:42 18/09/2007

10

Clarísimo Magnum, muy buena explicación.

Hardcore Extreme Level

hollymaN

entradas: 3209

05:01 22/09/2007

11

La verdad muy interesante, alfin aprendi para que sirve el cache en lo micros, osea que un quad core de 8mb vuela jeje

Midle End Level

MagnumStrike

entradas: 466

10:39 22/09/2007

12

Hay que tener en cuenta que las caches rendiran mas si los programas fuesen compilados con mayores niveles de eficiencia, es decir, que el codigo generado fuera mas compacto y reutilizando las mismas direcciones de memoria en lo posible, asi rinde lo que esta en la cache. Tambien si se usa al maximo los registros del procesador, se molestara menos a la memoria y las caches, de manera que la ejecucion se hace sin esperas. En la actualidad el software no esta tan optimizado, mas bien es muy ineficiente.

Y el quad core con mas cache volaria si fuese bien aprovechado. Pero el software se ha quedado atras con respecto al hardware que progresa a pasos agigantados. Es inevitable que haya un desaprovechamiento. Por ahora el quad no rinde todo lo que podria.

Saludos.

Extreme Level

kicinder

La Rioja

entradas: 1609

01:18 26/09/2007

13
Cita Iniciado por MagnumStrike
Ver Mensaje
El tema de la cache …

…Espero que esto haya contribuido a despejar dudas.

Saludos.

Que buena explicacion!!, Gracias.

Entry Level

leofoli

entradas: 82

02:31 26/09/2007

14

mmm los de intel ganan? en que sentido? y en que procesos? si ponemos en claro la arquitectura de intel necesitan mas cache porque como siemrpe terminan haciendo cuello de botella y necesitan agilizar la informacion para ponerlos en ejemplo para intel usare autos + carreteras tengo 4 carreteras con 4 autos cuando llegan al final las carreteras se hacen 1 sola por el cual los otros 4 autos que viene atras empiezan a atascarse para que eso no suceda con mas memoria cache pasan con mas fluides, pero tarda ams en llegar la informacion.
para amd es el msimo ejemplo solo que hizo 4 carreteras una para cada auto sin llegar al final todos juntos y asi pasar mas rapido y no utilizar tanta cache. tengo de los 2 micros asiq ue no soy partidiario ni favorito de ninguno los 2 tiene pro y contras y dependiendo apra que usaremos nuestra pc uno es mejor que el otro.
tambien para destacar si buscamos algun clock en tiempo real que no sea de ninguno de estas marcas veremos que mientras escribo en este topic con el PIV mi micro esta siendo utilizado a su maxima freceuncia y en el amd a medida que voy necesitando potencia va subiendo su reloj. espero se entienda

Midle End Level

MagnumStrike

entradas: 466

03:18 26/09/2007

15

Los de AMD ganan en latencia porque tienen la controladora dentro del micro, en cambio los de Intel tienen que dirigirse al Northbridge que esta mas lejos… Lo que intenta la cache L2 es evitar todo el circuito de la memoria ram con sus altas latencias. Entonces, si el dato esta alli nos ahorramos grandes esperas medidas en clocks del procesador. Hay muchisimos factores que intervienen sobre la efectividad de esa cache, y no todo es culpa del micro. Mucho tiene que ver como se ha elaborado el software y la gestion del sistema operativo.

La arquitectura de AMD me parece interesante, y si no le pone mas cache L2 es porque no hace mucha diferencia en el caso promedio. Para que se note su influencia, tendria que ser muchisimo mayor debido a la dispersion de las direcciones de memoria que produce la ejecucion del software.

Es muy dificil analizar en detalle el funcionamiento de los micros Intel y AMD si no se pueden medir las distintas demoras que ocurren, y sus causas mas profundas. La idea de AMD apunta a mejorar las latencias, es decir, a reducir las demoras innecesarias…

La pelea entre Intel y AMD ya viene desde hace mucho tiempo, asi que mejor dejemos de lado esa cuestion.

Saludos.