Cache de los procesadores
-
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