📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

COMO FUNCIONA la memoria RAM - Nivel técnico MEDIO-ALTO

HardwarEsfera16:27

Transcription

Hola, muy buenas a todos y bienvenidos a Hardware Xfera. Hoy vamos a hablar de cómo funciona una RAM, una memoria RAM, pero a nivel más técnico. Son las doce de la noche, acaba de acabar el directo del domingo y ha habido una cosa en el directo que he explicado muy por encima, con el para el dibujo, hacerle una patata. Y es una pregunta que me hacéis bastante recurrente, así que he dicho, voy a perder un ratito de tiempo, grabo este vídeo y al editarlo mañana o pasado, será el día que lo veáis. El día que lo edite, vamos a hablar de cómo funciona una RAM.

Para ello, vamos a empezar porque tenemos nuestro procesador aquí. Este cuadrado es nuestro procesador. Por lo general, los procesadores modernos trabajan a 64 bits. Esto quiere decir que yo lo voy a explicar cable a cable, o sea, no la típica explicación que vamos a hacer un dibujo de estos, un bus y un cuadrado así, no, no, no. Yo lo voy a explicar cablecito a cablecito, vale. En este caso, hay tres buses: el bus de direcciones, de control y de datos. Hay que decir que estos buses en los procesadores modernos son de 64 bits, es decir, el bus de direcciones son 64 cables físicos, el bus de datos son 64 cables físicos, bueno, son 128 para explicar el porqué, y el bus de control son 10 cables físicos. Pero como no voy a poder dibujar eso ni mucho menos, yo lo he reducido y he creado un procesador de 4 bits. Dentro de ese procesador tenemos el nombre ejecución, la LFP, la memoria caché, todo junto ahí. Y luego tenemos una unidad que pone ECM, que es el controlador de memoria, y tenemos una unidad secundaria del controlador de memoria, que es lo que hace posible el Dual Channel y explicar ahora también.

Debo decir que cada uno de estos cables se conecta aquí, que esto es la memoria RAM. Vosotros lo veis a modo de módulo, es decir, lo veis como un módulo de memoria RAM con sus chips. Básicamente, los chips hay unas celdas donde se guarda información y yo he hecho la representación gráfica de esas celdas, que no es ni más ni menos que celdas donde se acumula información. Si nuestro bus de edad de direcciones, perdón, nuestro bus de datos es de 64 bits, por si no esta arquitecturas de 64 bits, por lo general, en cada celda podemos guardar 64 bits de ancho de información, es decir, aquí entrarían 64 ceros y unos. En las memorias RAM se suelen guardar datos e instrucciones, y eso es porque cada vez que leemos un banco de memoria RAM, podemos expulsar por el bus de datos esos 64 bits. Pero ya digo, lo he hecho a 4 bits, así que aquí solo se pueden escribir cuatro bits. Esto físicamente está conectado al módulo de la memoria RAM por los pins que entran y está conectado físicamente al procesador por los pins del procesador. En este caso, tenían esto estaría directamente conectado al controlador de memoria y el bus de datos, pues también tendría una sección que entra una T para entrar al bus, o sea, el controlador de memoria.

Por otro lado, está el bus de control. Se ha dicho, son 10 cables en los procesadores modernos, pero yo lo voy a reducir a 4. No tiene nada que ver con los 4 bits del procesador, sino que lo voy a leer, o sea, lo voy a reducir solo a un kit de instrucciones que me interesa del bus de control. No voy a explicaros los 9 porque se utiliza un par otras funciones. En este caso, el primer cable si está encendido. Ahora están todos apagados. Si estuviera encendido, si estuvieran rojo, el primer cable nos indicaría que R de Read, leer memoria. El segundo nos diría que escribir. Si estuviera encendido, el resto apagados. El tercero nos indica la frecuencia, es decir, se enciende y se apaga con respecto a la frecuencia del bus del sistema, que por lo general, ya os lo explico muchas veces, son esos 100 megahercios del bus principal. Luego ya sabéis, la memoria puede funcionar a 3300 megahercios gracias a que tiene un multiplicador de 33x, que esto básicamente es un PLL en electrónica, un sistema de realimentación. Lo he explicado varias veces, con lo cual conseguiría esa frecuencia total. Pero por el clock se envían los pulsos de energía, se enciende 100 megahercios, es decir, 100 mil millones de veces o 100 millones de veces por segundo. Y por último, tendríamos un cable que cuando se activa indica que se haga un Hard Reset, es decir, un reset de hardware. Para todos aquellos que vengáis del mundo a telefonía, es sencillo, básicamente borra todo lo que hay aquí y se vuelve a inicializar la memoria.

En el bus de direcciones, como habéis visto, hay dos módulos. Esto estaría en Dual Channel. Básicamente, ya os lo digo, cuando hay dos módulos, los dos módulos no pueden funcionar cada uno a su bola. Es decir, cuando se lee, se leen los dos módulos y cuando se escribe, se escriben los dos módulos al mismo tiempo. Vemos aquí unos números. Estos números también en el bus sería lo mismo. En este caso, tendríamos un bus que está diciendo la primera pista es un cero, la segunda son cero, la segunda su cero, la tercera es un 1. Por tanto, tenemos que leer o escribir, dependiendo de lo que nos dice el bus de control, en la dirección de memoria esta, que sería la primera. Que en el primer módulo de memoria RAM sería este, pero del segundo módulo de memoria RAM sería este. Por lo tanto, podríamos leer y escribir en los dos primeros bloques de la memoria RAM del primer o del segundo módulo al mismo tiempo.

Y por último, tenemos el bus de datos. Bus de datos es lo mismo, es un conjunto de cables. Cuando un cable se enciende en rojo, en este caso es el segundo, estuviera marcado en rojo, esto significaría que habríamos expulsado un dato de valor 01000000. Como veis, es de 8 bits. Esto tiene una explicación. Si nosotros tenemos dos módulos en Dual Channel activo, por el bus de los 128 bits de datos se enviarán, bueno, por el bus de 8 bits datos se enviarán esos 8 bits. Pero como os he dicho, esto es incorrecto. No todo el sistema de nuestro ordenador funciona con un bus de 128 bits, sino que funciona con 64 bits. Básicamente, esto realmente son dos buses diferentes, es un bus de 4 bits, un bus de 4 bits. En los ordenadores normales, uno de 64 y otro de 64. ¿Qué ocurre? Que estos cuatro primeros bits van a ir al controlador de memoria uno y el controlador de memoria dos va a leer estos otros cuatro bits. Esta dualidad de doble controlador de memoria, el procesador es lo que nos permite que el bus de datos de la memoria RAM sea el doble que el del sistema, vale.

Y me diréis, ¿y cómo se come esto el procesador? Pues muy fácil. Primer ciclo de computación, CM1. Segundo ciclo de computación, CM2. Ya tenemos todos los datos cargados. Ahora bien, volvemos a hacer un repaso. Por ejemplo, queremos leer un dato que hay en la memoria RAM en el puesto que se mira en el tercero, en el uno, dos, tres, cuatro, en el cuarto. Queremos de los datos que hay aquí y aquí será también en este mismo módulo. Tenemos un 0001. ¿Cómo hacemos esto? Básicamente, controlador de memoria, bus de control pasa a poner en rojo este bus, es el de leer. En ese mismo momento, por el bus de direcciones se enviará el número del módulo, que en este caso tendría que desactivar este cable y activar este. Todo esto se hace muy sincronizado, la sincronización es extrema, pero en este caso, pues sería 01, o sea, esto sería un cero y este sería un 1. Para que este sea un 1, este segundo cable debería de estar en activo, es decir, este pasa a estar en activo. Por lo tanto, cuando esto llega, vamos a leer el 01000100. Leeremos esta dirección de memoria. Como dice aquí, ciclo o ciclos de proceso. Después, ya sabéis que la memoria tiene una latencia. Lo expliqué en un vídeo. Esto es por el chip que tiene que buscar los datos, las filas, las columnas en este grid de memoria. Se expulsan los datos sincronizado con el bus de control, o sea, con el con el bus de control, con el clock del sistema, es decir, a cierta frecuencia, en cierto tercio, en cierto momento, sincronizado con el procesador, se enviarán estos datos por el bus de datos. En este caso, como tenemos dos módulos que están funcionando en Dual Channel, pues enviaremos por el primero 0001, lo cual quiere decir que esta última pista del primer controlador de memoria irá en rojo y por lo tanto, aquí estaríamos enviando un 0001, es decir, esto habría que corregirlo, esto pasaría a ser un cero y esto pasaría a ser un 1. Y estos datos fluyen hacia ella. Y en el segundo controlador de memoria, Dual Channel, lo mismo, 0001. Aquí habría un 1 y este último cable físicamente pasaría a estar con corriente. De esa forma, ya habríamos podido leer los datos.

La manera de escribirlos es básicamente lo mismo. Bus de control coge y en lugar de R, activa el cable de RW, es decir, el de Write. Se envía la dirección en la que se va a escribir el dato y por el bus de datos, el procesador, sincronizando todo esto muy bien sincronizado, ya hablaremos en un vídeo específicamente de cómo se lleva a cabo toda esta sincronización, porque no solo es procesador, memoria RAM y demás, hay muchos más. Envían los datos. Estos datos que suelta el bus del sistema se reparten, van a la memoria RAM, van a los PCI Express, van a muchos sitios. Pero ya sabemos que por el tercio exacto, por el ciclo del proceso exacto, este dato está destinado a la memoria. ¿Qué ocurre? Que como tiene el bus de escribir activo, dice la memoria, hay que escribir. Sabemos que estamos diciendo una dirección y los datos que está recibiendo el cable que está activo aquí es lo que hace que escribamos el 001 y 001.

Muy bien, consideraciones a tener. Como habéis visto, de simplificar 64 bits a 4 bits. Y acordaros, 64 bits. Esto sería un bus de 10 bits, 10 cables, y este sería de 128, pero no son 128, sino que son 2 de 64. Solo con la memoria RAM. Esto no funciona con el chipset, por ejemplo, por los dos controladores de memoria que hacen que funcione en Dual Channel. Hoy me preguntáis, ¿qué ocurre si el primer módulo es de 2 gigas y el segundo de 4? Tendríamos un total de 6 gigas de memoria. ¿Qué ocurre? Que si nos fijamos, cada cuadradito tiene una dirección de memoria asignada, lo cual quiere decir que este va a tener asignado, si cada cuadro es, pongamos que cada cuadradito es un giga, pues va a tener asignados estos dos cuadros. Ya está. El resto de direcciones se pierden en ese módulo, es decir, el resto de direcciones en ese módulo ya no existen. Aunque bueno, esto podría seguir con puntitos. Que si estamos hablando de 4 bits, sería 4 elevado a 2, pues 2 por 2, 4 por 2, 8 por 2, 16 direcciones totales de memoria. En este caso, el primer módulo tan solo sería capaz de ordenar o gestionar estos 2 direccionamientos de memoria. Sin embargo, el segundo módulo, como tiene 4 gigas, será capaz de gestionar 4. ¿Qué quiere decir? Que si enviamos una petición a el banco número 4, que sería el 0011, sería el 3, y el 0100, el 4, tan solo lo vamos a leer del segundo módulo. Lo cual quiere decir que combinar módulos de diferentes tamaños hace que en determinados direccionamientos de memoria no funcione el Dual Channel. Es decir, aquí no funcionaría el Dual Channel, tan solo enviaríamos 4 bits por nuestro bus de datos, desaprovechando los otros 4 bits y utilizando tan solo un controlador de memoria.

Esto también puede ocurrir, así de forma hecha a propósito. Es decir, sabemos que tenemos un bus de 64 bits, pero por ejemplo, ¿qué ocurre con las aplicaciones de 32 bits? Hay uno de estos cables del bus de control, hay uno de los de los cables del bus que indica qué tipo de datos se van a enviar, si de 8, 16, 32 o 64 bits. Y en este caso, este podría indicar en cierto momento que los datos a leer son de 32. Para que hablábamos directamente Dual Channel y no quiero complicar la vida con los otros circuitos que faltan del bus de control.

Y de esta forma tan sencilla es como ciclo a ciclo, un primer ciclo se enciende bus de control, bus de direcciones y bus de datos con un ciclo. Si se lee, se lee. Entonces, siguiente ciclo se devuelven los datos por el bus de datos. Siguiente ciclo se encienden los cables del bus de direcciones, del bus del control, que se tiene que escribir, pues se utilizan los cables activos del bus de datos para escribir esos datos en la memoria. Y de esta forma tan sencilla es como funciona la memoria y cómo funciona el Dual Channel.

Por cierto, si vais a preguntar, hay procesadores en el mercado como los Xeon que tienen 6 canales de memoria RAM. Pues básicamente es que podemos tener 6 módulos activos. O los Intel Extreme que miden 4, gracias a que tienen dos controladores más de memoria. O en el caso de los que tienen 6 canales, 6 contadores de memoria. Y por tanto, el bus de datos en lugar de ser de 64 bits o 128 en un ordenador normal con Dual Channel, sería de 256 en Quad Channel y de 256, 128, 384 en Six Channel. Y que tengamos más ancho de banda no significa que sea mejor, y eso se ha demostrado. No todas las aplicaciones son capaces de funcionar en Quad Channel. Pues si están sacando un beneficio, ¿por qué? Porque primero aumenta la latencia a la hora de que el controlador de memoria, que es un chip que está en el mismo módulo, busque la memoria. Eso que conocemos como caché, la latencia. Esto aumenta a la hora de tener seis módulos, medios estos en paralelo, los seis lo hacen al mismo tiempo, sí, pero por lo general tiene un poco más de retraso. Segundo, no siempre todas las aplicaciones van a poderse comer todos esos datos. Como os he dicho, no puede meterse en un procesador, en este caso, la ALU, la unidad aritmético lógica, en un proceso normal es de 64 bits, entonces solo podemos meterle 64 bits y estamos trayendo datos de 128. Hay que almacenarlos en alguna memoria temporalmente y se pasan ciclo a ciclo, lo cual quiere decir que en una memoria de 6 channels necesitaríamos hasta 6 ciclos de cómputo. Eso también produce una latencia en el procesador. Y eso son cosas por las que no todas las aplicaciones sacan beneficio del Quad Channel o del Six Channel. Por ejemplo, los juegos no sacan ningún tipo de rendimiento de esto, básicamente porque ya por la misma frecuencia de la memoria RAM es más que suficiente para darle todos los datos que necesita un juego y más sabiendo que la carga de los juegos realmente va a la GPU. Pero bueno, no me enrollo más.

Espero que os haya gustado el vídeo, que hayáis entendido cómo funciona la memoria RAM a nivel físico, a nivel cable a cable, cómo se enciende un cable, es decir, pasa corriente o no. Funciona memoria RAM, que ha sido un poco curioso y más hacerlo a esta hora de la noche. Esto es ajustado. Vídeo, si vais apoyando, un like, compartirlo en las redes sociales o por supuesto, suscribirse a Capa para más vídeos. Cualquier tipo de duda o sugerencia va a ser la educación, el respeto, dejéis por aquí abajo en el box de los comentarios. Y ahora sí, chicos, con esto me despido, que ya es muy tarde y hasta el próximo vídeo.