Necesito información sobre la memoria caché y la relación con el microprocesador y la placa base

Respuesta de
sueco
a
Usuario
Que tal Sueco, me alegro de haber encontrado una página como esta. Recién
estoy iniciándome en este mundo de la
informática, dando un giro dramático de lo que es mi profesión. Concretamente necesito aclarar algunas dudas sobre la memoria cache, si vienen integradas en las tarjetas madre para pentium, y/o también (como se) en el microprocesador.y como trabajan en conjunto.
Ademas me gustaría que me ilustres sobre los tipos de bus que existen, se que fuera de los cables de conexión, hay también otra categoría de bus integradas en la tarjeta madre.
Un saludo y gracias por tu atención.
Experto
Hola:

La memoria cache es una memoria intermedia, o de intercambio, entre la memoria central y la CPU. Dentro de la CPU están los registros, en lo sregistros se guarda información de operación de la CPU, tal como operandos de entrada, resultado, y cuanto más avanzada es la CPU, muchos más datos; esta memoria debe disponer de la información de entrada a una velocidad altísima, ya que de la estabilidad de esta depende la velocidad de computo. Por ello existe en la misma CPU una memoria de alta velocidad que surte a los registros internos, es la Cache de 1er nivel (L1 cache). A su vez esta memoria es tan rápida que no puede depender de la memoria central, por ello a la salida de la memoria central existe la cache de 2o nivel en la placa base (L2 cache), que según las futuras necesidades de la CPU va leyendo de la memoria central, para que la información este disponible para la cache del 1er nivel. Obviamente en los niveles más bajos el almacenamiento es menor. Los registros tienen apenas bytes, la cache de 1er nivel tiene KBs, mientrasla cache de 2o nivel ronda el MB o más, según el chipset, etc... y finalmente la memoria central puede llegar al GBs; claro en estaciones de trabajo y supercomputadores estas cifras se disparan, por supuesto. La cache es uno de los problemas del multiproceso síncrono paralelo, ya que la información de la memoria central suele ser modificada por el resultado de una CPU, y por tanto hay que borrar y refrescar todas las caches de todas las CPUs (operación que en ocasiones se denomina flushear la cache).
En particular en el K6-III, había dos niveles de cache en el microprocesador, la L1 y la L2, y la cache de la placa base (la que lee de memoria central directamente) se relegaba a 3er nivel(aunque teóricamente solo el chipset Vía MVP-IV soportaba esto); lo cierto es que esta arquitectura demostró se muy efectiva, por lo que hipotéticamente (hasta donde yo se no se ha estudiado) se podría mejorar el rendimiento en ejecución de ciertas operaciones aumentando las capas de cache. De todas formas la cache es muy útil cuando la información que guarda es usada ciclo tras ciclo. Obviamente esto es un tanto utópico, ya que implicaría que el microprocesador ha entrado en un bucle infinito en el que cada iteración es igual a la anterior. Lo cierto es que si las instrucciones que se usan para una tarea compleja son siempre las mismas, y la información de entrada es más o menos constante durante cierto periodo, la cache existencia de la cache puede aumentar el rendimiento de ejecución hasta en un 1000%. Es típico en compresión MPEG, ya que las operaciones durante todo el algoritmo son las mismas, y cada fotograma es una entidad sobre la que se opera cierto numero de operaciones. Si todo esto cabe en la cache, no sera necesario acceder a memoria central hasta que hayamos acabado con el fotograma actual.
Por tanto es evidente que la cache es imprescindible, y el único problema serio que se puede presentar a su respecto es que se desactive, esto suele ocurrir cuando el total de memoria central supera la direccionable por la cache, en tal caso la cache se desactiva. Este caso era sangrante en el chipset VX, FX y otros de intel, al rebasar la memoria central los 64MB, se desactivaba la cache, cayendo en picado el rendimiento del sistema.
En cuanto a buses, hay muchísimos, no solo en computadores personales, sino en electrónica digital en general; tenemos los de comunicaciones más normales RS-232 (serie), paralelo, USB, IDE, SCSI, IEEE1394 (firewire), Ethernet (en cierta forma es un bus) y muchos otros en electrónica general (I2C, RS-242, Profibus, etc.) El conocimiento de los buses no es demasiado importante realmente si no se estudia electrónica a bajo nivel; creo que es más interesante estudiar la arquitectura del computador en si; aunque realmente no aporta nada significativo, ni siquiera a un usuario avanzado, ya que son temas más bien relacionados con el diseño de computadores, y eso es abordado por muy poca gente. Ademas los buses de comunicaciones propios de la placa base de un computador no son standard, solo PCI, AGP e ISA pueden ser calificados de standard, AMR es un pseudo-standard de Intel; pero en general la comunicación del chipset con sus periféricos (North-bridge, South-Bridge, UARTs, BIOS, etc...) es propio de cada fabricante de chipsets, no encontramos con una primera capa standard, como por ejemplo memoria central, detrás un periférico, después un bus propio, y finalmente el corazón del chipset, por el que pasa toda la información que no pueda ser enrutada directamente (operación que hoy se usa cada vez más, por ejemplo con UDMA, para asegurar el acceso a memoria de los dispositivos, sin cargar a la cPU con operaciones adicionales). Como veras no es significativo conocer en profundidad los buses de sistema, tanto como la arquitectura del computador, que por otro lado no solo es obsoleta, sino que no es apropiada para la mayoría de sistemas de control o sistemas profesionales.
Si tienes alguna duda concreta, no dudes en plantearla.

Saludos.
Usuario
Muchas gracias, me aclaraste las lagunas que tenía, hasta otra oportunidad.