Cache de los procesadores
-
Si eso es lo que he pensado despues, jejeje, es que esto de mirar el ordenador con tiempo te da para cambiar de idea un monton de veces, de todas formas preguntaba mas por curiosidad que por comprarmelo ( esto despues de mirar mis ahorros y el precio de lo que quiero, jejeje).
La duda sigue estando, la memoria esa? para que vale? que funcion tiene?? y esas cosas. -
Sirve para lo mismo que la ram, para almacenar informacion.
La idea es colocar una memoria muy rapida para poder accder rapidamente a los datos, el problema es que es cara y termina organizandose jerarquicamente.
Tenemos los registros, la cache de 1º, 2º y/o 3º nivel y ram, aumentando su tamaño pero disminuyendo su velocidad. La cache esta entre los 128 y 2048Kb, pero no siempre tener mas cache aumenta el rendimiento.
-
¿Para que sirve la caché?
–-------------------------------La memoria caché se utiliza para agilizar el acceso del procesador a los datos que va necesitando. Cuando estamos usando el ordenador, es frecuente que el procesador tenga que acceder más de una vez al mismo dato, ya que va realizando procesos y cálculos con un conjunto de datos. La memoria RAM es mucho más lenta que el procesador, y supone un cuello de botella muy grande, ya que además de ser 'muy lenta' tiene que pasar por el northbridge, o sea. por la placa base, por el controlador de memoria (ésto ya no pasa en los Athlon 64, que llevan el controlador de memoria integrado, y se comunican directamente con la memoria, consiguiendo ser muchísmo más eficientes en éste aspecto).
Cuando el procesador necesita un dato, si tiene que cogerlo de la memoria, puede ser que tenga que perder unos preciados ciclos de reloj, perdiendo así muchisimo rendimiento, así que si ese dato está en la caché, lo coge directamente y no tiene que esperar, con lo cual se gana muchísimo.
¿Cómo influye en el rendimiento?
Normalmente cuanta más caché tenga un procesador, más rendimiento ganará, pero claro, eso es como todo, la mejora de tener 64 a tener 128 es mucho más grande que de 128 a 256, así que llega un momento (cantidad) en que no resulta rentable en absoluto (por costes) meter más caché en un procesador, por ejemplo, meter cantidades de 2 o 4 megas pueden hacer que el coste de un procesador se multiplique exponencialmente, mientras que el rendimiento mejora en un ridículo porcentaje de un 5 o 10 por ciento. Además está el problema de que con cachés 'gigantescas' es normal que salgan muchos micros con algún fallo en alguna parte de la caché, por lo cual es coste se dispara como ya he mencionado.
Tipos y velocidad de cachés
Luego está el tema de la velocidad de la caché, que como ya han dicho, puede ser de nivel 1, 2 o 3. La de nivel 1 (L1 de Level 1) es la más rápida, pero también la más cara, y por lo tanto normalmente la más pequeña.
Otro aspecto es si la caché es inclusiva o exclusiva:
-Exclusiva: Cada caché es independiente y tiene unos datos diferentes, por lo tanto la cantidad de memoria caché efectiva es igual a la suma de todas las cachés, por ejemplo en un Barton sería de 512+128 (L2+L1)=640 kb, o en un duron 64+128 (L2+L1)=192 kb
-Inclusiva: El contenido de una caché esta copiado en la caché superior. Esto ocurre en los Pentium 3/4, como resultado, el total de caché efectivo es igual a la caché superior, porque ésta lleva una copia de las otras inferiores. En un P4 EE con 2 megas de L3 la cantidad de caché efectiva es 2 Mb, aunque lleve 2 de L3 y 512 de L2.
Como influye la caché según la arquitectura de un procesador
Para terminar, decir que el efecto de una memoria caché depende más que nada de la estructura del procesador, y principalmente de su pipeline.
De ésta forma habra procesadores en los cuales la caché no sea un factor totalmente decisivo en cuanto al rendimiento final, porque tengan un diseño que no dependa de sobremanera de la caché, y puedan rendir bien incluso con poca caché, porque sean capaces de gestionar rápidamente los datos a traves de la ram y los buses.
En la otra cara de la moneda tendremos procesadores altamente dependientes de la caché y de la velocidad de los buses, que requieran una gran cantidad de caché y unos buses muy rapidos para poder rendir bien.
En el caso de las arquitecturas/procesadores que rinden bien sin necesidad de una gran caché tenemos la arquitectura K7, donde vemos que un Duron Applebred con tan solo 64 Kb de L2 y un bus de 133 DDR rinde muy pero que muy dignamente, y no está muy lejos de un Barton a la misma frecuencia pero con 8 veces más caché L2, e incluso con 200DDR de bus.
El pentium 4 es un claro exponente de una arquitectura altamente dependiente del bus y la caché, gracias a su larguísimo pipeline. Vemos que un Celeron de Pentium 4, con 128 Kb de L2 y un bus de 100 QDR es un procesador nada eficaz, que rinde porquísimo, infinitamente menos que un Pentium 4 a la misma frecuencia (con 4 veces más L2). Un duron 1600 mhz bate con pasmosa facilidad a un Celeron 2600 mhz (1 Ghz más 'rápido').
La velocidad del bus, otro factor de la ecuación
La velocidad del bus es tan importante como la caché, ya que supone una mayor velocidad de comunicación con la memoria. En un caso ideal de bus y memoria de velocidad 'infinita' (o en su defecto lo suficiente como para saturar la velocidad de proceso del procesador) la caché sería innecesaria.
Lo de la dependencia de los buses que antes mencioné se puede ver en que los Athlon usan un bus DDR (Double Data Rate - 2x) y los P4 QDR (Quad Data Rate - 4x), por lo cual según la teoría los Pentium 4 deberían tener en esto una ventaja decisiva -Un barton 3200+ tiene un bus de 200 DDR (400mhz) y un P4 3,2 de 200 QDR (800mhz), el doble 'en números'- pero no es así en la realidad, ya que no es tal la diferencia de rendimiento casusada por el bus. ¿Porque?, pues porque son dos arquitecturas totalmente diferentes, y con un mismo bus un Athlon se desenvuelve mucho mejor que un Pentium 4, que por su estructura desperdicia muchísimo más ancho de banda que un Athlon.
Bueno, pues perdón por todo este rollo, pero es que empecé empecé, y al final me he enrollado mucho, pero bueno, ahí queda, espero que sirva de ayuda a quien quiera saber algo más de la caché
-
Bueno, llegados a estos niveles de explicacion pues ya terminamos y decimos que la cache tiene un problema muy importante y es la actualizacion de datos.
Cuando el procesador quiere un dato lo primero que hace es buscarlo en la cache, si no esta ahi tendra que buscarlo en la RAM, esto supone que si el dato no esta en la cache habra perdido tiempo accediendo a la cache. En el peor de los casos esto queire decir que un micro con cache seria mas lento que un micro sin cache, la realidad no es esa.
Para evitar eso hay que usar un mecanismo que actualice los datos de la cache y que "adivine" que dato va a usar el micro. El mecanismo mas sencillo es el que supone que si se ha usado el dato de la posicion 1, parece logico pensar que el siguiente sera el de la posicion 2. Si el dato que hemos traido no es el que va usar pues por un lado llenamos la cache y por otro perdemos tiempo trayendo datos que no hacen falta.
Otro problema es el asegurarse de que el dato que esta en cache es un dato correcto y no es un dato ya actualizado, por ejemplo, podria ser que un dispositivo haya actualizado un dato que este en una posicion de memoria y en la cache este el dato antiguo. Esto en realidad no pasa nunca porque hay tecnicas para evitarlo.
Y otro problema es que si el micro trabaja muy rapido y porl o tanto demanda muchos datos de memoria muy rapidamente, la unidad de "adivinacion" tiene que calcular mucho mas rapido mucho mas datos que podria necesitar el micro en la siguiente instruccion.
Esta es otra de las razones por las que la arquitectura K7/K8 es mejor que la de los P4. Puesto que el pipeline del P4 es mas largo y funciona a mas velocidad, necesita que le suministren mas datos mas rapidamente, esto es, si no me da tiempo a averiguar que datos precisos necesitara la cpu en la siguiente instruccion, lo que hare sera suministrarle mas datos para tener mas posibilidades de acertar. Puesto que los K7 funcionan mas despacio y tienen pipelines mas cortas, sus posibilidades de aciertos son mucho mayores. Esta es otra razon por la que esta arquitectura es mucho mas eficaz con menos cache.
Pero tambien se da el caso contrario, que un aumento de cache no sirva para nada. Si tu unidad de "adivinacion" (logicamente no se llama asi) no es lo suficientemente buena o no esta preparada para trabajar con mas cache, aumentar esta no significaria un aumento del rendimiento acorde, podria ser que llevara a la cahce datos que no se van a usar o simplemente que no llevara mas datos a la cache.
-
Bueno mientras leia tu respuesta, te la has currado, se me han ocurrido un par de preguntas.
1º Los amd utilizan siempre memoria exclusiva y los pentium siempre inclusiva??
2º Si supuestamente la velocidad de transmision de la memoria es de 400 MHz y la de tranmision de una placa, andara por 533 MHz, mas o menos, sino me equivoco. Como es posible aprovechar un procesador de 2 GHz ( por ejemplo) ? si este va a ir siempre mas rapido que la velocidad de proceso que de envio de datos. Este jamas podra llegar al 100 % de su utilizacion, porque antes ser colapsarian los medios de transmision ¿no?
Joder la que estoy liando, ahora vuelvo a leer lo de antes, jeje y luego leere lo mio a ver si me entero de algo. Espero haberme explicado bien y que me podais explicar vosotros a mi. Gracias
-
Pues muchas gracias a los dos Tassadar y Pakohuelva.
En un pis/pas habeis aclarado un montón de conceptos, y ahora me siento más capaz de entender porqué lo que es bueno o imprescindible para unos, no lo es tanto para otros, y porqué se obtienen muy buenos rendimientos con estructuras distintas. Sin duda los números no lo son todo.
De nuevo gracias.
-
1º Los amd utilizan siempre memoria exclusiva y los pentium siempre inclusiva??
Todos los AMD llevan memoria exclusiva desde el Athlon 500 mhz Slot A, lo que incluye todos los Athlon y Duron. De ahí para atras (familia K6-1/2/3, K5, etc) no lo se.
Los Intel si llevan TODOS caché inclusiva, creo que incluso el Pentium M (centrino).
2º Si supuestamente la velocidad de transmision de la memoria es de 400 MHz y la de tranmision de una placa, andara por 533 MHz, mas o menos, sino me equivoco. Como es posible aprovechar un procesador de 2 GHz ( por ejemplo) ? si este va a ir siempre mas rapido que la velocidad de proceso que de envio de datos. Este jamas podra llegar al 100 % de su utilizacion, porque antes ser colapsarian los medios de transmision ¿no?
Las cosas en este mundo de los ordenadores no son tan simples, jeje, además de más factores que yo desconozco (realmente yo al fin y al cabo no tengo ni idea del funcionamiento interno de los procesadores) la caché está justo para eso. Si ponemos por ejemplo un procesador a 2 ghz con bus a 200 mhz (multip. 10), tenemos que entre transmisión y transmisión del bus el procesador tiene 10 ciclos. Pues bien, en esos 10 ciclos en los que el procesador está 'incomunidado' no se aburre mucho, ya que tiene las cachés con un monton de datos frescos que puede usar a esos 2 ghz. (en el caso de las cachés on-die que corren a la misma frecuencia que los micros).
(que alguien me corrija si me equivoco, pero yo siempre he supuesto que eso es así).
Sin duda los números no lo son todo.
Los números pueden ser el arma idonea para intel y sus marketinghertzios, pero desde luego los números no siempre significan mejor rendimiento, y por supuesto, no siempre conllevan el mejor y más eficiente diseño, sino que más bien suele ser alrevés.
-
Publicado originalmente por chu
**2º Si supuestamente la velocidad de transmision de la memoria es de 400 MHz y la de tranmision de una placa, andara por 533 MHz, mas o menos, sino me equivoco. Como es posible aprovechar un procesador de 2 GHz ( por ejemplo) ? si este va a ir siempre mas rapido que la velocidad de proceso que de envio de datos. Este jamas podra llegar al 100 % de su utilizacion, porque antes ser colapsarian los medios de transmision ¿no?
**bueno…depende de qué estés haciendo. una vez has llevado los datos desde la memoria (ram, caché o la que sea) a un registro del procesador, hay que operar con esos datos.
-
Eso de la velocidad es porque, primero no es posible implementar buses a la velocidad a la que funcionan los microprocesadores, eso significaria que todos los elementos conectados al bus deebrian funcionar a la misma velocidad que el micro para aprovecharlo, pero no todos los elementos necesitan funcionar a esa velocidad.
Segundo porque la velocidad de reloj no significa que se manden mas o menos datos. Un ejemplo de esto es el bus de las grafica, puede que una grafica tenga un bus funcionando a 500Mhz pero sea de 128 bits frente a otra de 250Mhz y 256bits, el resultado seria el mismo y la velocidad la mitad. Es decir, la velocidad te va a decir cada cuanto se manda informacion pero no que cantidad de informacion se va a mandar, si mandas 1 bit cada vez tendras que ir 8 veces mas rapido que si mandas 1 byte para transmitir la misma informacion en el mismo tiempo.
Tercero, la velocidad del micro y la del bus no indican lo mismo, la del bus indica cad cuanto se manda informacion, la del micro cada cuanto se procesa la informacion (ms o menos)
Cuarto, el bus solo transmite informacion mientras que la cpu hace muchisima mas cosas, asi una cpu para traer la informacion de memoria podria tardar 3 ó 4 ciclos frente a 1 solo ciclo que tardaria el bus en llevarsela.
Todo esto muy por encima.
-
En un momento habeis pegado una actualización a todos mis apuntes de unidades funcionales del computador y de sistemas operativos. Yo había estudiado todo esto, pero con 8085 y así, jajaj!!!
Ten en cuenta que un ciclo de reloj no significa hacer una suma, una suma tarda unos cuantos ciclos de reloj, primero llevamos el valor uno al registro par HL (por ejemplo), luego el otro valor, el dos al acumulador, y luego se suma el HL a lo que hay en el acumulador. Y si esto lo ves a un nivel más bajo aún significa que son muchos ciclos. Y sólo ha necesitado un par de valores (en caso de no haber acarreos, que los números sean lo suficientemente pequeños etc…) Y sólo para llevar un dato a un registro se tardan varios ciclos de reloj.
Si quieres te lo hago más desglosado, pero va a ser un auténtico tostón y seguramente más de uno se va a quedar como un tonto.
-
Una rama muy interesante, si señor, jeje
habéis aclarado unas cuantas de cosas que yo 'sospechaba' o 'intuía', o tenía mas o menos idea de porqué, pero realmente no sabía porque nunca lo había leido en ningún sitio
La verdas es que no me molestaría en absoluto aprender mucho más sobre estos temas, que hay que estudiar para eso?
-
Publicado originalmente por Tassadar
**La verdas es que no me molestaría en absoluto aprender mucho más sobre estos temas, que hay que estudiar para eso? :D**
con Estructuras de Computadores o Arquitecturas de Computadores ya vas sobradete
-
Que asco no tener tiempo pa na, a ver si me pillo algún libro del tema