Tema 2: Unidad de memoria
Fuente
Resumen elaborado a partir de los apuntes del Tema 2 de Fundamentos de Computadores (J. M. Díaz Martínez, R. Muñoz Mansilla y D. Chaos García), siguiendo su estructura (apartados 2.1 a 2.9), su notación y sus ejemplos, más los ejercicios propuestos del tema.
2.1. Introducción: qué problema resuelve la unidad de memoria
La memoria guarda las instrucciones de los programas, los datos que usan y los resultados que producen. El procesador la consulta constantemente, así que la rapidez con la que obtiene lo que necesita condiciona el rendimiento de todo el computador.
El problema es que no existe una memoria que lo tenga todo. Las memorias difieren en cuatro aspectos que tiran en direcciones opuestas:
| Aspecto | Qué se quiere | Qué ocurre en la práctica |
|---|---|---|
| Capacidad | Mucha | Las memorias grandes suelen ser lentas |
| Velocidad de acceso | Alta | Las memorias rápidas suelen ser pequeñas |
| Coste por bit | Bajo | Las memorias rápidas tienen un coste por bit elevado |
| Conservación sin alimentación | Sí | Las más rápidas (RAM) son volátiles |
La solución del tema entero es la jerarquía de memoria: combinar memorias rápidas y pequeñas con otras grandes y lentas para conseguir un equilibrio entre rendimiento, capacidad y coste. El resto del tema estudia cada pieza de esa jerarquía:
flowchart LR
A["2.2-2.3<br/>Conceptos y<br/>características"] --> B["2.4<br/>Jerarquía y<br/>localidad"]
B --> C["2.5<br/>Tecnologías:<br/>RAM, ROM, flash"]
C --> D["2.6<br/>Chips, ampliación<br/>y módulos DDR"]
D --> E["2.7<br/>Memoria caché"]
E --> F["2.8<br/>Memorias<br/>asociativas"]
F --> G["2.9<br/>HDD, SSD,<br/>ópticos, cinta"]
2.2. Conceptos básicos de la memoria
2.2.1. Unidades direccionables y direcciones de memoria
La memoria principal puede verse como una matriz de celdas, cada una capaz de guardar un bit. Cada fila tiene una dirección física, , que es un entero no negativo que la identifica de forma única.
- Si cada fila tiene celdas, contiene bits. Esos bits forman una unidad direccionable: la cantidad mínima de información a la que se accede con una dirección física.
- Hoy la memoria principal suele ser direccionable por bytes: bits y cada dirección identifica un byte.
- No hay que confundir la dirección (dónde está) con el contenido (qué hay guardado).
Con bits se forman direcciones distintas. Para numerar unidades direccionables hace falta el menor que cumpla :
DirF Contenido (L = 8 bits)
0 0 1 0 0 1 0 0 0
1 0 1 0 0 1 0 0 1 cada fila = una unidad direccionable
2 1 0 1 0 1 0 1 0 cada número de la izquierda = su dirección física
...
255 0 1 0 0 1 0 1 0 N = 256 unidades -> n = 8 bits (0000 0000 a 1111 1111)
2.2.2. Palabras y longitud de palabra
Una palabra es el conjunto de bits que el procesador maneja como una unidad en determinadas operaciones. Su número de bits es la longitud de palabra (16, 32 o 64 bits, según la arquitectura).
La longitud de palabra no tiene por qué coincidir con la de la unidad direccionable. Una palabra puede ocupar varias unidades consecutivas, cada una con su propia dirección:
2.2.3. Organización y capacidad de memoria
Una memoria se describe por su organización : unidades direccionables de bits. Por ejemplo, bits son 1024 unidades de 8 bits.
| Observación | Expresión |
|---|---|
| Memoria direccionable por bytes | bytes |
| Direcciones de bits y se usan todas () | bits; por bytes, bytes |
| Capacidad múltiplo de la palabra | |
| Caso general: palabras completas que caben | ( y en bits) |
La función suelo da el mayor entero menor o igual que : . Por ejemplo, con bits y : caben 2 palabras y sobran 16 bits, insuficientes para otra.
Hay que cuidar los prefijos: B, pero B. Y distinguir (bit) de (byte).
Ver ejemplo 2.3: memoria direccionable por bytes con direcciones de 16 bits y palabras de 32 bits
a) Se usan todas las direcciones: unidades. Como bits:
b) Cada palabra ocupa unidades, es decir 4 B. Palabras completas:
Como la capacidad es múltiplo de la palabra, no sobra nada.
2.3. Características de las memorias
2.3.1. Operaciones de lectura y escritura
| Operación | Qué se proporciona | Qué ocurre |
|---|---|---|
| Lectura | La dirección | La memoria entrega los datos. Funcionalmente no modifica nada, aunque en las DRAM el proceso físico altera las celdas y hay que restaurarlas |
| Escritura | La dirección y los datos | La información nueva sustituye a la anterior. No todas las memorias lo permiten igual: unas admiten muchas escrituras, otras una sola, y en otras el contenido se fija en fábrica |
La unidad de transferencia es la cantidad de información que se transfiere entre la memoria y otro componente en una operación de acceso. Su longitud es . Hay que distinguir tres longitudes, que no tienen por qué coincidir:
| Magnitud | Símbolo | Qué mide |
|---|---|---|
| Unidad direccionable | Bits por dirección | |
| Palabra del procesador | Bits que el procesador maneja como unidad | |
| Unidad de transferencia | Bits que se transfieren en un acceso |
tampoco tiene por qué coincidir con el ancho del bus de datos: si bits y el bus es de 32, se envía en dos transferencias sucesivas; con bus de 64, en una.
2.3.2. Parámetros de rendimiento
Tiempo de acceso, : intervalo desde que se inicia una lectura o escritura hasta que se completa. En lectura, hasta que los datos están disponibles. Puede ser distinto en lectura y en escritura y, en algunas memorias, depender de la posición; entonces se usa su valor medio.
Tiempo de ciclo, : intervalo mínimo entre el inicio de dos accesos consecutivos. En una memoria sencilla sin solapamiento:
porque, tras entregar el dato, la memoria puede necesitar un tiempo extra, , para quedar preparada.
Petición Información Memoria preparada
de lectura disponible para un nuevo acceso
|<-------- t_a ---------->| |
|<--------------------------- t_c ---------------------->|
| Tipo de acceso | Funcionamiento |
|---|---|
| Sin solapamiento | Un acceso no empieza hasta que pasa el del anterior |
| Con solapamiento | Un acceso puede empezar mientras otro sigue en curso; aumenta los accesos por unidad de tiempo (se ve en 2.6.3) |
Sin solapamiento, la frecuencia máxima de acceso depende de , no de :
Velocidad de transferencia, : información transferida por unidad de tiempo. Depende de cuánto se transfiere en cada acceso () y de cuántos accesos se hacen por segundo:
| Velocidad | Significado |
|---|---|
| Máxima teórica | El máximo en condiciones ideales |
| Efectiva | La información útil realmente transferida por unidad de tiempo. Puede ser menor por esperas, operaciones de control y limitaciones del sistema |
Una de esas limitaciones es el ancho de banda del bus: si la memoria da 800 MB/s pero el bus solo admite 400 MB/s, entre ambos no se superan 400 MB/s (y la efectiva puede ser incluso menor).
Ver ejemplos 2.5 y 2.6: frecuencia máxima y velocidad máxima teórica
Ejemplo 2.5: ns, ns.
Se usa , no , porque marca la separación mínima entre accesos.
Ejemplo 2.6: bits B, ns.
2.3.3. Métodos de acceso a la información
El método de acceso es el procedimiento para localizar la información y leerla o escribirla. Los apuntes usan el término posición de almacenamiento, más general que unidad direccionable, porque no presupone que se pueda llegar a ella directamente con una dirección.
| Método | Cómo se localiza | Tiempo de acceso | Nombre de la memoria | Ejemplos |
|---|---|---|---|---|
| Secuencial | Recorriendo las posiciones en un orden establecido | Depende de la posición respecto al punto de partida | SAM (Sequential Access Memory) | Cintas magnéticas; antes, memorias de línea de retardo y de registros de desplazamiento |
| Directo | Se llega a una zona sin recorrer todo lo anterior, pero hacen falta operaciones adicionales | Depende de la ubicación física y de esas operaciones | DAM (Direct Access Memory); dispositivos DASD | Discos duros (HDD): mover el cabezal a la pista y esperar al sector |
| Aleatorio | Con la dirección se llega a cualquier unidad sin recorrer otras | Idealmente independiente de la dirección | RAM (Random Access Memory) | Memoria principal; también los SSD |
| Asociativo | Se compara un valor de búsqueda con los contenidos (o parte de ellos) | Depende de la implementación; la comparación simultánea lo hace rápido | CAM (Content-Addressable Memory) | Búferes TLB; directorios de algunas cachés |
Tres matices que caen en examen:
- "Aleatorio" no significa al azar: significa que se llega a cualquier unidad sin recorrer las anteriores (a la dirección 1000 sin pasar por 0, 1, ..., 999).
- Acceso aleatorio no es lo mismo que "RAM": un SSD también permite acceso aleatorio. La palabra RAM se reserva para ciertas memorias de semiconductores de lectura y escritura.
- Aleatorio frente a asociativo: en el aleatorio se da una dirección y se obtiene el contenido; en el asociativo se da un contenido y se obtienen las posiciones que coinciden (puede haber una, varias o ninguna).
2.3.4. Clasificación de las memorias
Los criterios no son excluyentes: una misma memoria pertenece a varias categorías a la vez.
flowchart TB
M["Memorias"] --> V["Volatilidad"]
M --> T["Tecnología"]
M --> F["Localización y función"]
M --> AC["Método de acceso<br/>(2.3.3)"]
V --> V1["Volátiles<br/>RAM: SRAM, DRAM"]
V --> V2["No volátiles<br/>ROM, flash, HDD, SSD,<br/>ópticos, cintas"]
T --> T1["Semiconductores<br/>SRAM, DRAM, ROM,<br/>PROM, EPROM, EEPROM, flash"]
T --> T2["Magnéticas<br/>HDD, cintas"]
T --> T3["Ópticas<br/>CD, DVD, Blu-ray"]
F --> F1["Interna<br/>registros, caché"]
F --> F2["Principal<br/>DRAM"]
F --> F3["Secundaria o externa<br/>HDD, SSD, ópticos, cintas"]
Según la volatilidad. La volatilidad indica si la información se pierde al cortar la alimentación. Las volátiles (RAM de la memoria principal) la pierden; las no volátiles (ROM, flash, HDD, SSD, CD, DVD, Blu-ray, cintas) la conservan. La volatilidad no determina por sí sola la velocidad ni el método de acceso: RAM y SSD son ambos de acceso aleatorio, pero solo la RAM es volátil.
Según la tecnología. Semiconductores (circuitos electrónicos), magnéticas (propiedades magnéticas de un material) y ópticas (lectura con láser).
Según su localización y función:
| Grupo | Qué incluye | Características | Valores orientativos |
|---|---|---|---|
| Memoria interna | Registros del procesador y memorias caché | Muy rápida, poca capacidad, coste por bit muy alto | Registros: unos 32 o 64 bits, del orden de un ciclo. Cachés L1, L2, L3: de decenas de KB a decenas de MB, pocos ciclos |
| Memoria principal (central o primaria) | Programas y datos en ejecución; normalmente DRAM | Más capacidad, menos velocidad y menos coste por bit que la interna; se accede con direcciones | 8 a 64 GB; decenas de ns |
| Memoria secundaria (externa) | HDD, SSD, ópticos, cintas | Persistente, gran capacidad, más lenta y barata; se accede mediante operaciones de E/S | Cientos de GB a varios TB; HDD varios ms, SSD decenas o cientos de µs |
Dos notas de los apuntes: un SSD es memoria secundaria por su función aunque sea de semiconductores, y "memoria externa" no implica que esté físicamente fuera del computador.
2.4. Jerarquía de memoria
La jerarquía de memoria organiza los distintos tipos de memoria en niveles ordenados según velocidad, capacidad y coste, para dar acceso rápido y mucha capacidad a un coste razonable.
/\ Velocidad + Capacidad - Coste/bit +
/ \
/Reg.\
/------\
/ Caché \
/----------\
/ Memoria \
/ principal \
/----------------\
/ Memoria externa \ Velocidad - Capacidad + Coste/bit -
/--------------------\
Al bajar en la jerarquía aumenta la capacidad y disminuyen la velocidad y el coste por bit. Al subir, lo contrario.
2.4.1. Principio de localidad
La jerarquía funciona porque el procesador no accede de forma uniforme a la memoria: tiende a repetir posiciones y a usar posiciones cercanas.
| Tipo | Definición | Ejemplo |
|---|---|---|
| Localidad temporal | Volver a acceder pronto a posiciones usadas recientemente | Las instrucciones y variables de un bucle |
| Localidad espacial | Acceder a posiciones próximas a otras usadas recientemente | Recorrer los elementos de un vector |
Gracias a la localidad, una memoria rápida y pequeña que guarda lo usado recientemente y lo que está cerca resuelve una proporción alta de los accesos, y se reduce el tiempo medio de acceso.
2.4.2. Transferencia de información entre niveles
Los niveles rápidos guardan una parte de lo que hay en los lentos. Si el dato no está en el nivel rápido, se busca en el inferior. La transferencia entre niveles se hace en bloques:
- Entre memoria principal y caché: bloques de palabras consecutivas.
- Entre memoria secundaria y principal: bloques de un número determinado de bytes.
Traer el bloque entero aprovecha la localidad espacial: junto al dato pedido llegan los vecinos, y el siguiente acceso cercano ya se resuelve en el nivel rápido. Si además se reutiliza lo traído, se aprovecha la localidad temporal.
2.5. Memorias de semiconductores
Son dispositivos electrónicos que guardan información binaria en celdas fabricadas con semiconductores (sobre todo silicio). Se implementan como circuitos integrados: un chip protegido por un encapsulado con terminales externos (pines).
Toda celda, sea cual sea su tecnología, cumple tres propiedades:
- Tiene dos estados distinguibles, estables o semiestables, para representar 0 y 1.
- Se puede escribir para fijar su estado (algunas tecnologías solo una vez).
- Se puede leer para conocer su estado.
Funcionalmente, una celda tiene tres tipos de conexiones:
| Conexión | Función |
|---|---|
| Selección | Elige la celda sobre la que se opera |
| Control | Indica si la operación es de lectura o de escritura |
| Datos | Recibe el bit a escribir o entrega el bit leído |
| Grupo | Tecnologías |
|---|---|
| Volátiles | SRAM, DRAM |
| No volátiles | ROM y variantes (máscara, PROM, EPROM, EEPROM), flash |
2.5.1. Memorias RAM
Las RAM permiten leer y escribir directamente durante el funcionamiento normal, mediante señales eléctricas, sin procedimientos especiales de programación o borrado. Lo que las distingue no es el acceso aleatorio (las ROM también lo tienen) sino que están pensadas para leer y escribir con normalidad. Las convencionales son volátiles.
SRAM (RAM estática). Guarda cada bit en un circuito biestable, que tiene dos estados estables y los mantiene mientras hay alimentación.
- Celda típica de 6 transistores: 4 forman el biestable y 2 actúan como interruptores de acceso.
- Escritura: se pone el valor en las líneas de datos y se activa la selección.
- Lectura: se activa la selección y se lee el valor sin alterar el biestable: lectura no destructiva.
- No necesita refresco: de ahí lo de "estática".
DRAM (RAM dinámica). Guarda cada bit como la carga de un condensador.
- Celda típica de 1 transistor y 1 condensador. Normalmente, carga suficiente es 1 y ausencia de carga es 0.
- Escritura: se activa el transistor y se carga o descarga el condensador.
- Lectura: la carga produce una pequeña variación de tensión que detecta un amplificador de detección. La lectura altera la carga: es destructiva y hay que restaurar el valor.
- Las corrientes de fuga descargan el condensador poco a poco incluso con alimentación, así que hay que hacer refresco periódico: de ahí lo de "dinámica".
La densidad de almacenamiento es la información que cabe por unidad de superficie del chip (bit/mm², Mibit/mm²...). Como la celda DRAM ocupa menos que la SRAM, la DRAM es más densa y más barata por bit.
| Característica | SRAM | DRAM |
|---|---|---|
| Almacenamiento del bit | Circuito biestable | Carga de un condensador |
| Componentes de una celda | 6 transistores | 1 transistor y 1 condensador |
| Tipo de lectura | No destructiva | Destructiva, con restauración |
| Refresco periódico | No | Sí |
| Tiempo de acceso orientativo | 1–10 ns | 30–100 ns |
| Capacidad habitual de un chip | Del orden de Mib | Del orden de Gib |
| Densidad | Menor | Mayor |
| Coste por bit | Mayor | Menor |
| Uso principal | Memoria caché | Memoria principal |
| Origen comercial | Década de 1960 | Principios de la década de 1970 |
Ver ejercicio 2.11: densidad de una SRAM y una DRAM
SRAM de 16 Mib en 80 mm² y DRAM de 128 Mib en 160 mm².
La DRAM es 4 veces más densa, coherente con que su celda tenga un transistor y un condensador frente a los seis transistores de la SRAM.
2.5.2. Memorias ROM
Las ROM (Read Only Memory) son memorias de semiconductores no volátiles. El nombre viene de las primeras, cuyo contenido se fijaba en fábrica y solo se podía leer. Después aparecieron variantes programables e incluso borrables que se siguen incluyendo en la familia aunque no sean estrictamente "de solo lectura". Se usan para información que debe conservarse mucho tiempo sin alimentación.
ROM de máscara. El contenido se fija durante la fabricación mediante la estructura de las celdas y no se puede cambiar.
- Ventaja: coste unitario bajo en tiradas grandes.
- Inconvenientes: coste inicial de preparar la fabricación, y cualquier error obliga a fabricar chips nuevos.
- Uso: programas y datos fijos en microcontroladores, calculadoras y aparatos fabricados en masa. Desde la década de 1960.
PROM (ROM programable). Se programa eléctricamente una sola vez después de fabricarla, modificando de forma irreversible conexiones internas. No se puede borrar ni reprogramar.
- Ventaja frente a la de máscara: el contenido se pone después de fabricar, útil para tiradas pequeñas.
- Uso actual del principio: números de serie, datos de identificación y parámetros que no deben cambiar. Desde la década de 1970.
EPROM (ROM programable y borrable). Se programa eléctricamente y se borra con luz ultravioleta.
- Usa transistores de puerta flotante: una región conductora aislada donde quedan atrapadas cargas; su presencia o ausencia representa 0 o 1.
- Programar es introducir carga en las puertas flotantes; la carga se mantiene sin alimentación.
- Borrar es exponer el chip a ultravioleta, lo que elimina las cargas. El borrado afecta a todo el contenido y normalmente hay que sacar el chip del aparato. Por eso llevan una ventana transparente en el encapsulado.
- Comercializadas desde 1971; desplazadas después por EEPROM y flash.
EEPROM (ROM programable y borrable eléctricamente). Usa también puerta flotante, pero tanto escribir como borrar se hace con señales eléctricas, sin sacar el chip.
- Permite modificar selectivamente, normalmente por bytes, sin borrar todo.
- Escribir y borrar es más lento que leer, y las celdas soportan un número limitado de ciclos de escritura y borrado por desgaste.
- Uso: pequeñas cantidades de datos modificables (configuración, calibración, identificación). Desde finales de los 70.
- Su estructura limita la densidad, lo que impulsó la aparición de la flash.
| Característica | ROM de máscara | PROM | EPROM | EEPROM |
|---|---|---|---|---|
| Cómo se fija el contenido | En la fabricación | Programación eléctrica | Programación eléctrica | Programación eléctrica |
| ¿Se puede borrar? | No | No | Sí | Sí |
| Procedimiento de borrado | — | — | Luz ultravioleta | Eléctrico |
| Borrado selectivo | — | — | No, se borra todo | Sí, normalmente por bytes |
| ¿Reprogramable? | No | No | Sí | Sí |
| ¿Hay que sacar el chip para borrar? | — | — | Normalmente sí | No |
| Volatilidad | No volátil | No volátil | No volátil | No volátil |
flowchart LR
A["ROM de máscara<br/>fijada en fábrica"] -->|"programar después<br/>de fabricar"| B["PROM<br/>una sola vez"]
B -->|"poder borrar"| C["EPROM<br/>borrado UV, todo"]
C -->|"borrado eléctrico<br/>y selectivo"| D["EEPROM<br/>por bytes"]
D -->|"borrado por bloques:<br/>más densidad, menos coste"| E["Flash"]
2.5.3. Memorias flash
Las flash son memorias de semiconductores no volátiles, modificables eléctricamente, que evolucionan de la EEPROM. Su rasgo clave es que se borran por bloques de celdas, no por bytes. Eso simplifica los circuitos de borrado y permite más densidad y menos coste por bit que la EEPROM.
En la flash NAND las celdas se agrupan en páginas (unidad de lectura y programación) y las páginas en bloques (unidad de borrado):
| Operación | Qué hace | Unidad |
|---|---|---|
| Lectura | Obtiene los datos sin modificar las celdas | Página |
| Programación | Escribe cambiando el estado de las celdas; ciertas modificaciones exigen borrar antes el bloque | Página |
| Borrado | Devuelve todas las celdas del bloque al estado inicial | Bloque completo |
Leer es más rápido que programar y borrar. Las celdas soportan un número limitado de ciclos de programación y borrado; para alargar la vida útil se usa la nivelación del desgaste (wear leveling), que reparte las operaciones entre bloques.
Tiempos orientativos: leer una página, decenas de µs; programarla, de cientos de µs a varios ms; borrar un bloque, varios ms. Páginas de varios KiB y bloques de cientos de páginas; chips de varios Gib, incluso 1 Tib o más.
NOR frente a NAND:
| Tipo | Característica | Uso |
|---|---|---|
| Flash NOR | Lectura directa de posiciones individuales; permite ejecutar en el lugar (XIP, Execute in Place) sin copiar a memoria principal. Menor densidad y mayor coste por bit | Programas de sistemas empotrados |
| Flash NAND | Alta densidad y bajo coste por bit | Almacenamiento de datos: pendrives, tarjetas de memoria, SSD |
Bits por celda. Usando varios niveles de carga, una celda NAND guarda más de un bit. Con bits por celda hacen falta estados distinguibles:
| Tecnología | Bits por celda | Estados () |
|---|---|---|
| SLC (Single-Level Cell) | 1 | 2 |
| MLC (Multi-Level Cell) | 2 | 4 |
| TLC (Triple-Level Cell) | 3 | 8 |
| QLC (Quad-Level Cell) | 4 | 16 |
Más bits por celda dan más densidad y menos coste por bit, pero los estados de carga son más difíciles de distinguir: programar tarda más y la celda aguanta menos ciclos. SLC ofrece más resistencia y rapidez; MLC, TLC y QLC más capacidad y menor coste.
2.6. Módulos y organización de la memoria principal
2.6.1. Circuitos integrados de memoria
Un circuito integrado (chip) de memoria contiene un conjunto de celdas y los circuitos auxiliares para seleccionar unidades direccionables y leer o escribir. Lógicamente se organiza como bits:
Organización interna. La organización lógica no tiene por qué coincidir con la física. Las celdas forman una matriz de filas y columnas, y unos decodificadores seleccionan la fila y la columna a partir de los bits de dirección. Así no hace falta una conexión externa por celda.
flowchart LR
DIR["n líneas de<br/>dirección"] --> DF["Decodificador<br/>de filas"]
DIR --> DC["Decodificador<br/>de columnas"]
DF --> MAT["Matriz de celdas<br/>de memoria"]
DC --> MAT
CTRL["Control"] --> RW["Circuitos de<br/>lectura y escritura"]
MAT <--> RW
RW <--> DAT["L líneas<br/>de datos"]
Además, las DRAM incluyen circuitos de refresco. En cada operación se transfieren bits: un chip de mueve 8 bits por acceso.
Encapsulados y terminales. Los terminales (pines) se agrupan por función:
| Grupo | Función | Cuántos, si no se multiplexa |
|---|---|---|
| Dirección | Seleccionar la unidad direccionable | (con ) |
| Datos | Transferir la información (bidireccionales o separados de entrada y salida) | |
| Control | Selección del chip, lectura, escritura | Según el chip |
| Alimentación | (tensión positiva) y (referencia, normalmente 0 V) | 2 o más |
En el ejemplo de los apuntes, un DIP de 24 pines (dos hileras paralelas) de una DRAM bits tiene:
| Terminales | Significado |
|---|---|
| A0 a A10 | 11 líneas de dirección |
| D0 a D3 | 4 líneas de datos |
| RAS (Row Address Strobe) | Selección de fila |
| CAS (Column Address Strobe) | Selección de columna |
| WE (Write Enable) | Habilita la escritura |
| OE (Output Enable) | Habilita las salidas de datos |
| VCC, VSS | Alimentación |
| NC (Not Connected) | Sin conexión interna |
En la notación tradicional de chips, "M" significa (lo que la norma llama Mi), así que unidades: harían falta 22 bits de dirección, pero solo hay 11 terminales. Lo permite el direccionamiento multiplexado.
Hoy los chips DRAM de los módulos usan encapsulado BGA (Ball Grid Array): una matriz de bolitas de soldadura en la cara inferior, que permite muchas más conexiones en poca superficie que el DIP.
Direccionamiento multiplexado en DRAM. Para reducir terminales, la dirección se divide en dirección de fila y dirección de columna, y ambas se envían sucesivamente por los mismos terminales:
sequenceDiagram
participant C as Controlador
participant D as Chip DRAM 2^22 x 4
C->>D: Dirección de fila (11 bits) por A0-A10
C->>D: Activa RAS: el chip captura y guarda la fila
C->>D: Dirección de columna (11 bits) por A0-A10
C->>D: Activa CAS: el chip captura la columna
D-->>C: Datos de la unidad seleccionada (D0-D3)
| Sin multiplexar | Multiplexado | |
|---|---|---|
| Terminales de dirección ( unidades) | 22 | 11 |
| Unidades direccionables | (no cambian) | |
| Ventaja | Un solo paso | Muchos menos terminales; facilita chips de gran capacidad |
| Inconveniente | Muchos terminales | El acceso necesita varias fases |
2.6.2. Ampliación de la capacidad de memoria
Se quiere construir una memoria con chips de capacidad base . Hay tres casos.
Caso 1. Ampliación del número de bits por unidad direccionable
y : mismas direcciones, más bits por dirección. Se ponen chips en paralelo:
| Líneas | Conexión |
|---|---|
| Dirección | Comunes a los chips |
| Selección, lectura y escritura | Comunes |
| Datos | Cada chip aporta un grupo distinto de bits; si es múltiplo de , (si no, sobran líneas del último chip) |
A9..A0, selección, lectura, escritura (comunes)
+------------+------------+------------+------------+
| CI 0 | CI 1 | CI 2 | CI 3 |
| 2^10 x 8 | 2^10 x 8 | 2^10 x 8 | 2^10 x 8 |
+-----+------+-----+------+-----+------+-----+------+
| | | |
D7..D0 D15..D8 D23..D16 D31..D24
\____________ bus de datos de 32 bits ______________/
Los cuatro chips actúan a la vez en cada acceso
Caso 2. Ampliación del número de unidades direccionables
y : más direcciones, mismos bits. Se usan chips:
Ahora no actúan todos a la vez: hay que elegir el chip que contiene la dirección. Para eso se usa un decodificador: un circuito combinacional de entradas y hasta salidas que, para cada combinación de entrada, activa una salida distinta.
| 0 | 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 | 0 |
| 1 | 1 | 0 | 0 | 0 | 1 |
Tabla de verdad de un decodificador 2 a 4 con salidas activas a nivel alto (activa = 1). Existen también salidas activas a nivel bajo (activa = 0).
Si y , la dirección se parte en dos:
A(n-1) ... A(n0) | A(n0-1) ... A1 A0
\_______________/ \________________/
p = n - n0 bits n0 bits
-> decodificador -> dirección dentro del chip
(elige el chip) (a todos los chips en paralelo)
| Líneas | Conexión |
|---|---|
| bits menos significativos | En paralelo a todos los chips |
| bits más significativos | A las entradas del decodificador |
| Selección | Una por chip, desde una salida del decodificador |
| Lectura y escritura | Comunes |
| Datos | Todos al mismo bus de líneas; solo el chip seleccionado lo usa |
flowchart LR
A["A11 A10"] --> DEC["Decodificador<br/>2 a 4"]
DEC -->|S0| C0["CI 0<br/>2^10 x 8"]
DEC -->|S1| C1["CI 1<br/>2^10 x 8"]
DEC -->|S2| C2["CI 2<br/>2^10 x 8"]
DEC -->|S3| C3["CI 3<br/>2^10 x 8"]
B["A9..A0"] --> C0 & C1 & C2 & C3
C0 & C1 & C2 & C3 <--> BD["Bus de datos<br/>de 8 bits"]
| Chip | Direcciones | ||
|---|---|---|---|
| 0 | 0 | CI 0 | 000 a 3FF |
| 0 | 1 | CI 1 | 400 a 7FF |
| 1 | 0 | CI 2 | 800 a BFF |
| 1 | 1 | CI 3 | C00 a FFF |
Caso 3. Ampliación simultánea de ambas magnitudes
y . Se combinan los dos casos: primero grupos de chips en paralelo para la anchura, y luego grupos seleccionados con un decodificador.
Cada salida del decodificador habilita todos los chips de un grupo. Dentro del grupo, cada chip aporta bits distintos; los chips que aportan el mismo bit en grupos distintos comparten esa línea del bus, y solo el grupo seleccionado tiene sus salidas habilitadas.
| Ejemplo | Memoria deseada | Chip base | Dirección | Decodificador | |||
|---|---|---|---|---|---|---|---|
| 2.8 (caso 1) | 4 | 1 | 4 | 10 líneas | Ninguno | ||
| 2.9 (caso 2) | 1 | 4 | 4 | 12 (10 + 2) | 2 a 4 | ||
| 2.10 (caso 3) | 2 | 4 | 8 | 12 (10 + 2) | 2 a 4 |
Ver ejercicio 2.14: qué chip atiende la dirección 5A3C en una memoria 2^15 x 8 con chips 2^12 x 8
- chips; capacidad B KiB.
- 15 líneas: internas y a un decodificador 3 a 8.
- Separar los 12 bits bajos es separar los tres últimos dígitos hexadecimales:
Se selecciona el CI 5 y la dirección interna es A3C.
2.6.3. Módulos de memoria principal
Un módulo de memoria es un conjunto de chips montados en una placa de circuito impreso con las conexiones para comunicarse con el resto del computador. Permite ampliar o cambiar la memoria sin tocar la placa base.
Organización. La anchura de datos del módulo es el número de bits que transfiere a la vez; en PC suele ser 64 bits (algunos módulos añaden bits para detección y corrección de errores).
Un rango (rank) es un conjunto de chips que se seleccionan juntos para leer y escribir. La relación con la ampliación es directa:
| Concepto del módulo | Equivale a | Efecto |
|---|---|---|
| Chips dentro de un rango | Caso 1 (más bits por dirección) | Comparten dirección y selección; cada uno aporta parte de los 64 bits |
| Varios rangos en un módulo | Caso 2 (más direcciones) | Comparten conexiones pero se seleccionan por separado: más capacidad, misma anchura |
Módulo de memoria
+---------------------------------------------------------------+
| Rango 0: CI0 CI1 CI2 CI3 CI4 CI5 CI6 CI7 (8 x 8 bits = 64) | 2^10 x 64 bits = 8 KiB
| Rango 1: CI0 CI1 CI2 CI3 CI4 CI5 CI6 CI7 (8 x 8 bits = 64) | 2^10 x 64 bits = 8 KiB
+---------------------------------------------------------------+
Capacidad total: 16 KiB Anchura de datos: 64 bits (no 128)
Formatos. Los módulos se conectan a la placa base:
| Formato | Uso | Rasgo |
|---|---|---|
| DIMM (Dual In-line Memory Module) | Sobremesa y servidores | Contactos independientes en las dos caras |
| SO-DIMM (Small Outline DIMM) | Portátiles y equipos compactos | Más pequeño; distinto número y disposición de contactos |
La compatibilidad depende del formato y de las características eléctricas y la tecnología: dos módulos de formato parecido no son necesariamente intercambiables. En algunos portátiles y móviles los chips van soldados a la placa.
Memorias DDR SDRAM.
| Tecnología | Época | Novedad |
|---|---|---|
| DRAM | Principios de los 70 | Limitaciones de rendimiento en lectura y escritura |
| SDRAM (Synchronous DRAM) | Principios de los 90 | Comunicación sincronizada con un reloj |
| DDR SDRAM (Double Data Rate) | Hacia 2000 | Dos transferencias por ciclo de reloj |
Una señal de reloj tiene dos tipos de transición o flanco: ascendente (de nivel bajo a alto) y descendente (de alto a bajo). DDR transfiere datos en ambos.
____ ____ ____
reloj | | | | | |
____| |____| |____| |____
^ v ^ v ^ v ^ flanco ascendente v flanco descendente
datos D0 D1 D2 D3 D4 D5 DDR: un dato en cada flanco
|<-- Tck -->|
El controlador de memoria (hoy integrado en el procesador) gestiona las lecturas y escrituras y genera las señales para los chips. Se comunica con los módulos por el bus de memoria (datos, direcciones, control y reloj), que es distinto del bus del sistema. El reloj de la interfaz de memoria es distinto del reloj interno del procesador.
flowchart LR
subgraph P ["Procesador"]
N["Núcleos y<br/>otros componentes"] --- CA["Memoria caché"]
CA --- CM["Controlador<br/>de memoria"]
end
CM <-->|"Bus de memoria"| MOD["Módulos<br/>DDR SDRAM"]
N <-->|"Bus del sistema"| ES["Resto del sistema"]
La tasa de transferencia es el número de transferencias por unidad de tiempo (en MT/s, millones de transferencias por segundo). En DDR:
donde es la frecuencia del reloj de la interfaz y la anchura de datos del bus en bits. Frecuencia (MHz) y tasa (MT/s) son magnitudes distintas: 1600 MHz dan 3200 MT/s.
Ver ejemplo 2.11: ancho de banda de un bus DDR de 64 bits a 3200 MT/s
La velocidad efectiva puede ser menor por el tiempo de los accesos y los periodos sin transferencias.
| Generación | Año | Anchura de un módulo de 64 bits |
|---|---|---|
| DDR | ~2000 | |
| DDR2 | 2003 | |
| DDR3 | 2007 | |
| DDR4 | 2014 | Un único canal de 64 bits |
| DDR5 | 2020 | Dos subcanales independientes de 32 bits (no duplica la anchura total) |
Cada generación mejora tasa, capacidad de chips y eficiencia, y no son intercambiables entre sí.
Varios módulos y canales. Un canal de memoria es una interfaz del controlador con su propio bus, a la que se conectan uno o varios módulos; el controlador gestiona cada canal de forma independiente.
| Se añade | Capacidad | Ancho de banda |
|---|---|---|
| Más módulos en el mismo canal | Aumenta | No aumenta necesariamente (comparten bus) |
| Más canales independientes | Aumenta | Puede aumentar (transferencias simultáneas) |
Ejemplos de los apuntes: un sobremesa con 2 canales y 2 módulos por canal (4 módulos); procesadores de servidor con 12 canales y 2 módulos por canal (24 módulos).
(a) Un canal (b) Dos canales
Controlador ==== M1 M2 M3 M4 Controlador == Canal 0 == M1 M2
(bus compartido) == Canal 1 == M3 M4
Modelo simplificado de módulos independientes. Varios módulos comparten el bus de un canal. Cada operación ocupa el bus un tiempo ; después, el módulo sigue trabajando por dentro sin usar el bus, y ese hueco lo puede aprovechar otro módulo: es el solapamiento.
| Magnitud | Definición |
|---|---|
| Tiempo de ciclo del módulo | Mínimo entre los comienzos de dos operaciones en el mismo módulo: |
| Tiempo de ocupación del bus | Intervalo en que una operación impide usar el bus a otro módulo: |
Cuando es entero, las operaciones que se completan por ciclo y la velocidad máxima son:
Ejemplo 2.12 ( ns, ns, B), cada carácter son 25 ns; # es bus ocupado y - trabajo interno:
t (ns) 0 100 200 300 400 500
M1 ##--------##--------##
M2 ##--------##--------##
M3 ##--------##--------##
M4 ##--------##--------##
BUS ########..########..########
4 módulos: el bus queda libre 50 ns de cada 250
| Módulos | ||
|---|---|---|
| 4 | MB/s | |
| 5 | 160 MB/s (bus siempre ocupado) | |
| 6 o más | 5 | 160 MB/s: el bus es el límite |
Añadir módulos mejora la velocidad hasta saturar el bus; a partir de ahí no aporta nada. Las DRAM actuales aplican la misma idea dentro del chip con los bancos de memoria, subdivisiones que funcionan de forma parcialmente independiente (no confundir con los rangos).
Ver ejercicio 2.19: 40 ns de bus, 160 ns internos, 64 bits
- ns; .
- 3 módulos: MB/s.
- 6 módulos: , MB/s.
- Saturación: 5 módulos; MB/s.
- Mejora respecto a un módulo (40 MB/s): ; para , 3 (+200 %); para y , 5 (+400 %).
Organización entrelazada (solo aparece en los ejercicios). El ejercicio 2.18 plantea elegir el chip con los bits menos significativos, para que direcciones consecutivas caigan en chips distintos de forma cíclica:
| Organización | Bits que eligen el chip | Reparto | Chip y dirección interna (4 chips) |
|---|---|---|---|
| Bloques contiguos (caso 2) | Más significativos | Cada chip, un intervalo consecutivo | y |
| Entrelazada (interleaving) | Menos significativos | Consecutivas a chips distintos | y |
Con entrelazado, C88, C89, C8A y C8B van a CI 0, 1, 2 y 3, todas con dirección interna 322. Puede facilitar el solapamiento, pero no garantiza por sí solo más rendimiento.
2.7. Memoria caché
2.7.1. Concepto y funcionamiento
El procesador es mucho más rápido que la DRAM y tendría que esperar continuamente. La memoria caché es una memoria pequeña y rápida (SRAM), situada funcionalmente entre el procesador y la memoria principal e integrada en el procesador, que guarda copias de bloques de memoria principal (conjuntos de unidades direccionables consecutivas).
Suele haber tres niveles: L1 (el más cercano al núcleo, el más pequeño y rápido), L2 y L3 (el más grande y lento de los tres, pero mucho más rápido que la memoria principal).
| Situación | Qué ocurre |
|---|---|
| Acierto (cache hit) | El bloque está en la caché consultada; se sirve sin bajar de nivel |
| Fallo (cache miss) | El bloque no está; se consulta el nivel siguiente (L1, L2, L3 y, por último, memoria principal). Normalmente se guarda una copia del bloque en la caché que falló |
flowchart TD
A["El procesador solicita<br/>una dirección"] --> B{"¿Hay en el nivel consultado<br/>una copia del bloque que<br/>contiene esa dirección?"}
B -->|"Sí: acierto"| C["Se lee de la caché<br/>y se entrega al procesador"]
B -->|"No: fallo"| D["Gestión del fallo:<br/>traer el bloque del nivel inferior"]
Su eficacia se basa en el principio de localidad: lo usado recientemente y lo cercano tiene mucha probabilidad de volver a usarse.
2.7.2. Organización de la memoria caché
Bloques de memoria principal. Para la caché, la memoria principal se divide en bloques de unidades direccionables consecutivas. Si la memoria tiene unidades:
(Si no es múltiplo de , el último bloque se considera completo aunque le falten posiciones.)
Una dirección de bits se divide en dos campos:
DirMP | Bloque j (f bits) | Desplazamiento (d bits) |
\____ número del bloque ____/ \__ posición p dentro de él _/
con entre y . Con bits caben números de bloque, que pueden ser más que los existentes; entonces algunas combinaciones no corresponden a ningún bloque.
Equivalentemente, a partir de la dirección:
Líneas de caché. La caché se organiza en líneas; cada una guarda un bloque, así que su capacidad de datos es :
(Aquí no hace falta redondear: la capacidad de datos de la caché siempre es múltiplo del bloque.)
Además de los datos, la caché tiene un directorio con una entrada por línea:
| Campo del directorio | Función |
|---|---|
| Etiqueta | Identifica qué bloque hay en la línea (su significado depende de la correspondencia) |
| Bit de validez | : contenido no utilizable (así empiezan todas). : bloque válido |
| Bit de modificación | Solo con escritura diferida (2.7.4) |
La capacidad de una caché se refiere solo a sus datos, sin contar el directorio. Como , solo caben a la vez unos pocos bloques.
Directorio Zona de datos (S_B = 8 B)
+---+----------+ +---+---+---+---+---+---+---+---+
Línea i = 0 | V | Etiqueta | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+---+----------+ +---+---+---+---+---+---+---+---+
Línea i = 1 | V | Etiqueta | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+---+----------+ +---+---+---+---+---+---+---+---+
Ver ejemplo 2.13: memoria de 64 B con bloques de 8 B; dirección 9
- bloques (); bits.
- ; ; .
- : bloque , desplazamiento .
- Comprobación: . El bloque 1 abarca las direcciones 8 a 15.
2.7.3. Métodos de correspondencia
Como no caben todos los bloques, hay que decidir en qué línea puede ir cada bloque. Esa regla es la función de correspondencia.
flowchart LR
subgraph D ["Directa"]
BD["Bloque j"] -->|"una línea fija<br/>i = j mod NLC"| LD["Línea i"]
end
subgraph T ["Totalmente asociativa"]
BT["Bloque j"] -->|"cualquier línea"| LT["Cualquier línea"]
end
subgraph C ["Por conjuntos"]
BC["Bloque j"] -->|"un conjunto fijo<br/>q = j mod Q"| LC["Cualquier línea<br/>del conjunto q"]
end
Correspondencia directa
Cada bloque tiene asignada una única línea:
Los bloques con el mismo resto comparten línea y no pueden estar a la vez en la caché. El campo Bloque se divide en Etiqueta y Línea :
DirMP | Etiqueta (e) | Línea i (b) | Desplazamiento (d) |
\_____ Bloque j (f bits) ______/
La etiqueta distingue entre los bloques que comparten línea.
Funcionamiento:
- El campo Línea indica en qué línea buscar.
- Se comprueba en el directorio si y la etiqueta guardada coincide con la de la dirección. Si se cumplen ambas, acierto; si no, fallo.
- Acierto: el desplazamiento localiza la unidad dentro del bloque. Fallo de lectura: se trae el bloque, se guarda en su línea (sustituyendo al anterior), se actualizan etiqueta y , y se entrega el dato. En un fallo de escritura decide la política de asignación.
Ver ejemplo 2.16: memoria de 64 B, bloques de 8 B, caché directa de 16 B; lecturas 9, 25, 11, 18, 20, 27
; , , , . Formato: ee | b | ddd.
| Acceso | Dir. | Binario | Bloque | Línea | Etiqueta | Resultado | Línea 0 | Línea 1 |
|---|---|---|---|---|---|---|---|---|
| 1 | 9 | 00 1 001 | 1 | 1 | 00 | Fallo () | — | |
| 2 | 25 | 01 1 001 | 3 | 1 | 01 | Fallo (etiqueta distinta) | — | |
| 3 | 11 | 00 1 011 | 1 | 1 | 00 | Fallo | — | |
| 4 | 18 | 01 0 010 | 2 | 0 | 01 | Fallo () | ||
| 5 | 20 | 01 0 100 | 2 | 0 | 01 | Acierto | ||
| 6 | 27 | 01 1 011 | 3 | 1 | 01 | Fallo |
1 acierto y 5 fallos. Los bloques 1 y 3 se expulsan mutuamente de la línea 1 aunque la línea 0 está vacía en el acceso 3: son fallos por conflicto.
| Ventajas | Inconvenientes |
|---|---|
| Muy sencilla: la línea se elige directamente con bits de la dirección; una sola comparación | Bloques que comparten línea se expulsan entre sí: fallos por conflicto, aunque haya otras líneas libres |
Correspondencia totalmente asociativa
Cualquier bloque puede ir a cualquier línea. Si hay líneas libres, se usa una; si no, hay que elegir cuál sustituir con una política de reemplazo:
| Política | Sustituye | Información que mantiene el hardware | ¿Un acierto cambia el orden? |
|---|---|---|---|
| FIFO (First In, First Out) | El bloque que entró antes, aunque se use mucho | Orden de incorporación | No |
| LRU (Least Recently Used) | El bloque que lleva más tiempo sin usarse | Orden de utilización, actualizado en cada acceso | Sí |
LRU exacto necesita mucha información de control cuando hay muchas líneas, por eso en la práctica se usan aproximaciones más sencillas.
La dirección no tiene campo de línea: la etiqueta es el número de bloque completo.
DirMP | Etiqueta (e = f bits) | Desplazamiento (d) |
Funcionamiento: se compara la etiqueta simultáneamente con la de todas las líneas válidas. Si alguna coincide, acierto y se usa el desplazamiento. Si no, fallo: se trae el bloque a una línea libre o a la que indique la política de reemplazo, y se actualizan etiqueta y .
Ver ejemplo 2.18: la misma secuencia con caché totalmente asociativa y FIFO
, , . Los bloques ocupan líneas libres en orden; con la caché llena, FIFO.
| Acceso | Dir. | Bloque | Etiqueta | Resultado | Línea 0 | Línea 1 |
|---|---|---|---|---|---|---|
| 1 | 9 | 1 | 001 | Fallo | — | |
| 2 | 25 | 3 | 011 | Fallo | ||
| 3 | 11 | 1 | 001 | Acierto | ||
| 4 | 18 | 2 | 010 | Fallo; FIFO expulsa | ||
| 5 | 20 | 2 | 010 | Acierto | ||
| 6 | 27 | 3 | 011 | Acierto |
3 aciertos y 3 fallos. Ya no hay conflictos: los bloques 1 y 3 conviven. En el acceso 4, FIFO expulsa el bloque 1 aunque se acaba de usar, porque fue el primero en entrar. Los fallos que quedan se deben a la capacidad limitada.
| Ventajas | Inconvenientes |
|---|---|
| Máxima flexibilidad; evita los fallos por conflicto | Circuitería compleja y cara: hay que comparar con todas las líneas a la vez; necesita política de reemplazo |
Correspondencia asociativa por conjuntos
Es un híbrido. Las líneas se dividen en conjuntos de líneas:
es el grado de asociatividad; la caché se llama asociativa de vías. En cachés comerciales, es potencia de 2.
| Mecanismo | Cómo actúa |
|---|---|
| Selección directa del conjunto | Cada bloque tiene un conjunto fijo: |
| Totalmente asociativa dentro del conjunto | Puede ir a cualquiera de las líneas de ese conjunto |
El campo Bloque se divide en Etiqueta y Conjunto :
DirMP | Etiqueta (e) | Conjunto q (c) | Desplazamiento (d) |
\______ Bloque j (f bits) _______/
Funcionamiento: el campo Conjunto elige el conjunto; se compara la etiqueta solo con sus líneas. Si alguna es válida y coincide, acierto. Si no, fallo: el bloque va a una línea libre de ese conjunto o, si están todas ocupadas, se aplica la política de reemplazo solo dentro del conjunto, aunque haya líneas libres en otros.
Caché de 4 líneas, r = 2 (2 vías) -> Q = 2 conjuntos
+-----------+
Conjunto q=0 | Línea i=0 | <- bloques pares (j mod 2 = 0)
| Línea i=1 |
+-----------+
Conjunto q=1 | Línea i=2 | <- bloques impares (j mod 2 = 1)
| Línea i=3 |
+-----------+
Ver ejemplo 2.21: caché de 32 B en conjuntos de 2 líneas, FIFO; lecturas 9, 25, 11, 41, 18, 20, 27
, , ; , , , . Formato ee | c | ddd.
| Acceso | Dir. | Línea | Etiqueta | Resultado | L0 | L1 | L2 | L3 | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 9 | 1 | 1 | 2 | 00 | Fallo | — | — | 1 | — |
| 2 | 25 | 3 | 1 | 3 | 01 | Fallo | — | — | 1 | 3 |
| 3 | 11 | 1 | 1 | 2 | 00 | Acierto | — | — | 1 | 3 |
| 4 | 41 | 5 | 1 | 2 | 10 | Fallo; FIFO expulsa 1 | — | — | 5 | 3 |
| 5 | 18 | 2 | 0 | 0 | 01 | Fallo | 2 | — | 5 | 3 |
| 6 | 20 | 2 | 0 | 0 | 01 | Acierto | 2 | — | 5 | 3 |
| 7 | 27 | 3 | 1 | 3 | 01 | Acierto | 2 | — | 5 | 3 |
3 aciertos y 4 fallos. En el acceso 4 el conjunto 1 está lleno y hay que reemplazar, aunque las líneas del conjunto 0 estén vacías: siguen existiendo fallos por conflicto, aunque menos que en la directa.
| Ventajas | Inconvenientes |
|---|---|
| Más flexible que la directa (menos conflictos); solo compara con líneas, no con todas | Más compleja que la directa; necesita reemplazo dentro del conjunto; puede haber conflictos con líneas libres en otros conjuntos |
El grado marca el compromiso entre sencillez y flexibilidad:
Comparación de los métodos
DirMP (n bits) | Bloque j (f) | Despl. (d) |
F. C. directa | Etiqueta (e) | Línea i (b) | Despl. (d) |
F. C. totalmente asoc. | Etiqueta (e = f) | Despl. (d) |
F. C. por conjuntos | Etiqueta (e) | Conjunto q (c) | Despl. (d) |
| Directa | Totalmente asociativa | Por conjuntos ( vías) | |
|---|---|---|---|
| Dónde va el bloque | Línea | Cualquier línea | Cualquier línea del conjunto |
| Campos | Etiqueta, línea, desplazamiento | Etiqueta, desplazamiento | Etiqueta, conjunto, desplazamiento |
| Comparaciones por acceso | 1 | ||
| Reemplazo | No hace falta elegir | Política sobre todas las líneas | Política dentro del conjunto |
| Fallos por conflicto | Muchos | Ninguno | Menos |
| Uso actual | Sistemas sencillos o empotrados | Estructuras pequeñas | L1, L2 y L3 de los procesadores de propósito general |
El método de correspondencia se fija al diseñar el hardware: el usuario no puede cambiarlo.
Ver ejercicio 2.22: dirección 3A7C con direcciones de 16 bits, caché de 4 KiB y líneas de 64 B
; ; , , .
; ; .
| Método | Campos (bits) | Descomposición | Resultado |
|---|---|---|---|
| Directa | 4 / 6 / 6 | 0011 / 101001 / 111100 | Etiqueta 3, línea 41 (), |
| Totalmente asociativa | 10 / 6 | 0011101001 / 111100 | Etiqueta 233, |
| 4 vías () | 6 / 4 / 6 | 001110 / 1001 / 111100 | Etiqueta 14, conjunto 9 (), |
Directorio en directa con etiqueta y : bits B; total B.
2.7.4. Políticas de escritura
Al escribir puede haber copias del mismo bloque en varios niveles, así que hay que decidir dos cosas.
1) Cómo se actualiza la memoria principal cuando se modifica un dato que está en caché:
| Política | Funcionamiento | Ventaja | Inconveniente |
|---|---|---|---|
| Escritura inmediata (write-through) | Se escribe en la caché y en la memoria principal | Copias siempre coherentes; al reemplazar no hay que escribir nada | Cada escritura genera tráfico a memoria principal |
| Escritura diferida (write-back) | Se escribe solo en la caché; la memoria se actualiza al reemplazar el bloque | Varias modificaciones de un bloque dan una sola transferencia | Necesita gestionar bloques modificados; reemplazar uno modificado es más lento |
Para paliar el tráfico de la escritura inmediata se usan búferes de escritura (write buffers): guardan direcciones y datos pendientes de escribir en memoria, y el procesador sigue sin esperar.
En escritura diferida, cada línea tiene un bit de modificación (dirty bit) :
| Momento | Valor de |
|---|---|
| Al cargar el bloque | |
| Al modificar algún dato del bloque | |
| Al reemplazar | Si , se sustituye sin más. Si , el bloque completo se escribe antes en memoria principal |
2) Qué hacer si se escribe en un bloque que no está en la caché (fallo de escritura):
| Política | Funcionamiento | Ventaja | Inconveniente |
|---|---|---|---|
| Con asignación (write-allocate) | Se trae el bloque a la caché y se escribe en ella (si hace falta, se reemplaza otro; si es diferida y está modificado, se devuelve antes) | Aprovecha la localidad temporal | Trae bloques que quizá no se vuelvan a usar |
| Sin asignación (no-write-allocate) | Se escribe directamente en memoria principal, sin traer el bloque | Evita tráfico y no ocupa líneas con bloques inútiles | No aprovecha la localidad de esas escrituras |
Las dos decisiones son independientes (cuatro combinaciones), pero las más habituales son inmediata sin asignación y diferida con asignación.
flowchart TD
W["Escritura del procesador"] --> H{"¿Acierto?"}
H -->|Sí| P1{"Política de<br/>actualización"}
P1 -->|Inmediata| WT["Escribir en caché<br/>y en memoria principal"]
P1 -->|Diferida| WB["Escribir solo en caché<br/>y poner M = 1"]
H -->|No| P2{"Política de<br/>asignación"}
P2 -->|Con asignación| WA["Traer el bloque a la caché<br/>y escribir en ella"]
P2 -->|Sin asignación| NWA["Escribir directamente<br/>en memoria principal"]
Ver ejercicio 2.27: escrituras en 10, 20, 1C, 30 con caché totalmente asociativa de 2 líneas y FIFO
Bloques de 16 B: bloque = primer dígito hexadecimal; secuencia 1, 2, 1, 3.
| Dir. | Bloque | A: inmediata sin asignación | B: diferida con asignación | Caché en B |
|---|---|---|---|---|
| 10 | 1 | Fallo: 1 B a memoria | Fallo: carga bloque 1 | [1 (M=1), —] |
| 20 | 2 | Fallo: 1 B a memoria | Fallo: carga bloque 2 | [1 (M=1), 2 (M=1)] |
| 1C | 1 | Fallo: 1 B a memoria | Acierto | [1 (M=1), 2 (M=1)] |
| 30 | 3 | Fallo: 1 B a memoria | Fallo: FIFO expulsa 1, sucio: devuelve 16 B | [3 (M=1), 2 (M=1)] |
En A la caché queda vacía (los fallos no cargan bloques) y hay 4 escrituras de 1 B. En B hay una sola devolución de 16 B; los bloques 2 y 3 siguen sucios. Las cargas de bloques son lecturas de memoria, no escrituras.
2.7.5. Jerarquía de memorias caché
| Nivel | Capacidad orientativa | Tiempo de acceso orientativo |
|---|---|---|
| L1 | 32–64 KiB | 4–5 ciclos |
| L2 | 256 KiB–3 MiB | 12–18 ciclos |
| L3 | 8–128 MiB | 30–90 ciclos |
Los tiempos se dan en ciclos: el mismo número de ciclos son tiempos distintos en procesadores de distinta frecuencia. El de L1 corresponde a la caché de datos. La búsqueda va de L1 a L2, a L3 y a memoria principal; el bloque recuperado puede guardarse en uno o varios niveles.
En procesadores multinúcleo:
| Concepto | Significado |
|---|---|
| Caché privada | Asociada a un núcleo |
| Caché compartida | Usada por varios núcleos |
| Organización habitual | L1 y L2 privadas por núcleo; L3 compartida |
| L1 dividida | L1-I (instrucciones) y L1-D (datos) independientes |
| Caché unificada | Guarda instrucciones y datos (normalmente L2 y L3) |
+--------------------------------- Procesador ----------------------------------+
| Núcleo 1 Núcleo 2 Núcleo 3 Núcleo 4 |
| [L1-I][L1-D] [L1-I][L1-D] [L1-I][L1-D] [L1-I][L1-D] |
| [ Caché L2 ] [ Caché L2 ] [ Caché L2 ] [ Caché L2 ] (privadas) |
| [ Caché L3 compartida ] |
| [ Controlador de memoria ] |
+-------------------------------------+-----------------------------------------+
| bus de memoria
[ Memoria principal ]
Las cachés privadas plantean el problema de la coherencia de caché: si un núcleo modifica un dato, las copias de los demás quedan desactualizadas. Los mecanismos de coherencia controlan las modificaciones y, si hace falta, invalidan o actualizan las otras copias.
2.7.6. Rendimiento de la memoria caché
Con accesos, aciertos y fallos ():
Una alta (por ejemplo, 0.95) es favorable, pero no garantiza por sí sola un buen rendimiento: también cuentan los tiempos y la penalización por fallo.
Tiempo medio de acceso (AMAT, ). Con (tiempo con acierto) y (tiempo con fallo), el tiempo total es y, dividiendo entre :
Todos los accesos empiezan consultando la caché, de tiempo . La penalización por fallo es el tiempo adicional que añade un fallo:
Ver ejemplo 2.22: caché de 10 ns, memoria de 100 ns, h = 0.9, 20 ns para tratar el fallo
- ns; ns; ns.
- ns (o bien ns).
Jerarquía de cachés. Con L1 y L2 consultadas sucesivamente, y sus tiempos y el tiempo adicional de la memoria principal:
| Tasa | Respecto a qué se calcula |
|---|---|
| Todos los accesos | |
| Solo los accesos que llegan a L2 (los fallos de L1): es una tasa local | |
| Proporción de accesos iniciales que fallan en L1 y en L2 y llegan a memoria principal |
Interpretación: todos pagan ; una fracción paga además ; y de esos, una fracción paga además .
Con tres niveles, el mismo razonamiento anidado:
Es un modelo simplificado (consulta secuencial y tiempos acumulados); en procesadores reales puede ser más complejo.
Ver ejemplo 2.23: t1 = 2 ns (h1 = 0.95), t2 = 10 ns (h2 = 0.80 local), tM = 100 ns
- , .
- ns.
- ns, muy cerca de porque el 95 % se resuelve en L1.
Ver ejercicio 2.30: 10 000 accesos, 9200 en L1, 600 en L2, 200 a memoria principal
| Tasa | Cálculo | Valor |
|---|---|---|
| , | 0.92 y 0.08 | |
| , locales | y | 0.75 y 0.25 |
| Global de fallos | 0.02 | |
| Resuelto en cada nivel (sobre el total) | L1 92 %, L2 6 %, MP 2 % |
2.8. Memorias asociativas
2.8.1. Concepto y funcionamiento
Una memoria asociativa o memoria direccionable por contenido (CAM) busca la información por su contenido, no por una dirección. Compara un valor de búsqueda con todas las posiciones a la vez, gracias a circuitos de comparación incorporados en el hardware, sin recorrerlas una a una.
flowchart LR
A["1. Se introduce<br/>el valor de búsqueda"] --> B["2. Comparación<br/>simultánea con las<br/>posiciones habilitadas"]
B --> C["3. Detección de<br/>coincidencias"]
C --> D["4. Obtención del resultado<br/>(posiciones o información<br/>asociada)"]
Una búsqueda puede dar una, varias o ninguna coincidencia.
| Ventaja | Inconveniente |
|---|---|
| Búsquedas muy rápidas por la comparación simultánea | Circuitos de comparación adicionales: más complejidad, consumo y coste que una memoria convencional de la misma capacidad |
2.8.2. Organización
Elementos funcionales:
| Elemento | Función |
|---|---|
| Matriz de almacenamiento | Entradas de un cierto número de bits |
| Entrada o registro de búsqueda | Proporciona el valor buscado a todos los comparadores |
| Circuitos de comparación | Comparan a la vez (suelen estar integrados en las celdas) |
| Señales de coincidencia | Indican qué entradas coinciden; pueden guardarse en un registro de marca |
| Tratamiento de coincidencias | Da el resultado: identificar, elegir una o acceder a información asociada |
| Codificador de prioridad | Si hay varias coincidencias y se necesita una, admite varias entradas activas y da el código de la de mayor prioridad (a diferencia de un codificador convencional) |
Organización clásica con registros auxiliares. Con una matriz de entradas de bits:
| Registro | Tamaño | Función |
|---|---|---|
| Argumento | bits | Valor que se busca |
| Máscara | bits | Bit a 1: esa columna se compara. Bit a 0: se ignora |
| Validez | bits | Bit a 1: la entrada tiene información válida. Bit a 0: no |
| Marca | bits | Resultado: 1 si la entrada es válida y coincide en las columnas seleccionadas |
| Salida | bits | Datos de la entrada seleccionada tras la búsqueda |
Registro argumento (m) Registro máscara (m)
| |
v v
+---------------------------------------+ Validez Marca
| Matriz de celdas de memoria | (n bits) (n bits)
| asociativa: n entradas x m bits |<-- V --> M
+---------------------------------------+
|
v
Registro de salida (m)
Formalmente, si es el bit de la entrada :
Cada factor vale 1 si la columna no se compara () o si el bit coincide ().
Ver ejemplo 2.24: argumento 10011010, máscara 10010101
| Entrada | Contenido | Bits comparados (columnas 0, 3, 5 y 7) | Marca | |
|---|---|---|---|---|
| 0 | 1 | 11011111 | 1xx1x1x1 | 0 |
| 1 | 1 | 11011010 | 1xx1x0x0 | 1 |
| 2 | 1 | 10010000 | 1xx1x0x0 | 1 |
| 3 | 0 | 10100110 | (no válida) | 0 |
| 4 | 0 | 11011000 | (no válida) | 0 |
- Las entradas con (3 y 4) quedan descartadas: marca 0.
- La máscara elimina las columnas con 0 (posiciones 2, 3, 5 y 7 contando desde la izquierda empezando en 1); el patrón buscado es
1xx1x0x0. - Coinciden las entradas 1 y 2: .
Ver ejercicio 2.32: marcar las entradas que contienen un número par
Un número es par si su bit menos significativo vale 0. Basta comparar esa columna: y un argumento con 0 al final, por ejemplo . Las máscaras con más bits a 1 exigirían coincidir también en otras columnas y dejarían fuera números pares.
Otras operaciones:
| Operación | Cómo se hace |
|---|---|
| Lectura | Se pasa al registro de salida una entrada con marca 1; si hay varias, una tras otra |
| Escritura | Se busca una entrada con (examinando el registro de validez, sin búsqueda por contenido), se escribe y se pone . Argumento y máscara no intervienen |
| Invalidación | Se pone ; la entrada queda libre sin borrar físicamente su contenido |
2.8.3. Aplicaciones
| Aplicación | Uso de la búsqueda asociativa |
|---|---|
| Búferes TLB (Translation Lookaside Buffer) | Guardan traducciones recientes de direcciones virtuales a físicas y las encuentran por la dirección virtual (Tema 7) |
| Cachés totalmente asociativas | Comparar el identificador del bloque con todas las líneas |
| Equipos de comunicaciones | Tablas de encaminamiento y filtrado; incluso TCAM (ternarias), con un tercer estado "no interviene en la comparación" |
Se usan cuando la rapidez de búsqueda justifica su coste, normalmente en estructuras pequeñas y de función específica.
2.9. Memorias secundarias
2.9.1. Características generales
La memoria principal tiene dos limitaciones: poca capacidad comparada con lo que se necesita y volatilidad (es DRAM). La memoria secundaria es el conjunto de dispositivos no volátiles que conservan programas y datos durante periodos prolongados.
No se accede a ella con instrucciones ordinarias de memoria: los datos se transfieren a la memoria principal mediante operaciones de E/S.
| Característica | Significado |
|---|---|
| No volatilidad | Conserva SO, aplicaciones y archivos entre sesiones |
| Elevada capacidad | Hasta varios TB por dispositivo |
| Menor coste por bit | Grandes capacidades a precio reducido |
| Menor velocidad | Tiempos de acceso mayores que la memoria principal |
| Tecnología | Dispositivos |
|---|---|
| Magnética | HDD, cintas |
| Estado sólido | SSD (flash) |
| Óptica | CD, DVD, Blu-ray |
(La introducción de la sección menciona también la organización RAID, que combina varias unidades para mejorar el rendimiento y, en algunas configuraciones, añadir redundancia; no se desarrolla en estos apuntes.)
2.9.2. Discos duros magnéticos (HDD)
Almacenan información magnetizando regiones de uno o varios discos giratorios. Gran capacidad y bajo coste por bit; acceso directo sin recorrer todo; pero, por las piezas mecánicas, tiempos mucho mayores que un SSD. El primero fue el IBM 350 (sistema IBM 305 RAMAC, 1956): 50 discos de unas 24 pulgadas y unos 5 millones de caracteres.
Estructura física:
| Componente | Descripción |
|---|---|
| Platos | Discos rígidos con material magnético; dos caras cada uno |
| Eje y motor | Giran los platos a velocidad constante (rpm; habituales 5400 y 7200) |
| Cabezales de lectura y escritura | Uno por superficie; no tocan la superficie en funcionamiento normal |
| Brazos y mecanismo de posicionamiento | Mueven los cabezales radialmente; todos a la vez |
| Controlador electrónico | Coordina el disco y la comunicación con el computador |
Eje de giro
|
Cabezal | ====== Plato (superficie superior)
-------->| ====== (superficie inferior)
Brazo |
-------->| ====== Plato
| ======
Los brazos se mueven juntos -> todos los cabezales a la misma distancia del eje
Organización de la información:
| Concepto | Definición |
|---|---|
| Pista | Circunferencia concéntrica de una superficie |
| Sector | División de una pista; unidad física básica. 512 B tradicionalmente o 4096 B (4 KiB) en discos modernos |
| Cilindro | Pistas a la misma distancia del eje en todas las superficies; se alcanzan sin mover los brazos |
Técnicas de organización:
| Técnica | En qué consiste | Para qué |
|---|---|---|
| Grabación por zonas (ZBR, Zone Bit Recording) | Las pistas se agrupan en zonas; las exteriores tienen más sectores por pista | Aprovechar la superficie; las exteriores dan más velocidad de transferencia a igual rpm |
| Sesgo de cabeza (head skew) | Desplazar angularmente los sectores de pistas del mismo cilindro en superficies distintas | Compensar el tiempo de cambio de cabeza |
| Sesgo de cilindro (cylinder skew) | Desplazar (más) los sectores de cilindros consecutivos | Compensar el movimiento entre cilindros |
Discos antiguos: mismo nº de sectores por pista ZBR (zonas)
zona exterior 16 sectores/pista
zona intermedia 12 sectores/pista
zona interior 8 sectores/pista
El formateo de bajo nivel (físico) se hace en fábrica y crea la estructura de sectores. Cada sector físico contiene, de forma simplificada:
| Parte | Función |
|---|---|
| Sincronización e identificación | Reconocer los límites del sector |
| Área de datos | 512 o 4096 B |
| ECC (Error Correcting Code) | Detectar y corregir errores de lectura |
Los sectores de reserva sustituyen a los defectuosos mediante la reasignación de sectores.
Direccionamiento:
| Sistema | Funcionamiento |
|---|---|
| CHS (Cylinder-Head-Sector) | Tradicional: cilindro, cabeza y sector. Con el tiempo se usaron geometrías CHS lógicas que no coincidían con la real |
| LBA (Logical Block Addressing) | Actual: el disco presenta bloques lógicos numerados desde 0 (LBA 0, LBA 1...), de 512 o 4096 B; el controlador decide dónde están físicamente |
Bloque lógico y sector físico no son lo mismo. Normalmente coinciden en tamaño, pero con la emulación 512e el disco tiene sectores físicos de 4096 B y presenta bloques lógicos de 512 B: 8 bloques lógicos por sector físico. La correspondencia lógico-física no refleja necesariamente cilindros y pistas (por ejemplo, cambia al reasignar sectores).
El controlador funciona gracias al firmware: programas en memoria no volátil que controlan el funcionamiento interno del dispositivo (posicionamiento, errores, traducción de direcciones).
Tiempos de acceso. Para leer hay que mover el cabezal a la pista, esperar a que el sector pase bajo él y transferir:
flowchart LR
S["Petición"] --> B["Tiempo de búsqueda t_b<br/>mover cabezales a la pista"]
B --> R["Latencia rotacional t_r<br/>esperar al sector"]
R --> T["Tiempo de transferencia t_t<br/>leer o escribir los datos"]
| Tiempo | Definición | Expresión |
|---|---|---|
| Búsqueda | Llevar los cabezales a la pista. No es constante ni proporcional a los cilindros recorridos (aceleran, frenan, se estabilizan); se usa el tiempo medio de búsqueda | Dato del fabricante |
| Latencia rotacional | Desde que el cabezal está en la pista hasta que llega el sector; con posición aleatoria, de media media vuelta | , |
| Transferencia | Leer o escribir los datos |
Aquí son las rpm y las revoluciones por segundo. La transferencia también se puede expresar con la geometría de la pista:
donde son los bytes de datos por pista, los sectores por pista, los sectores a transferir y las revoluciones (o fracción) que dura la transferencia. Es un modelo idealizado de transferencia continua dentro de una pista.
| rpm | medio | |
|---|---|---|
| 5400 | 11.11 ms | 5.56 ms |
| 7200 | 8.33 ms | 4.17 ms |
Ver ejemplo 2.25: 7200 rpm, t_b = 8 ms, 150 MB/s, bloque de 600 kB
- rev/s; ms; ms.
- ms.
- ms.
- ms.
Valores actuales orientativos: 5400 o 7200 rpm, búsquedas de varios ms, transferencias sostenidas de hasta unos 300 MB/s en modelos profesionales. Se conectan por SATA (SATA III: 6 Gb/s, unos 600 MB/s de datos; la interfaz es mucho más rápida que el propio disco) o, en servidores, por SAS (Serial Attached SCSI).
Acceso secuencial frente a aleatorio en un HDD. Son patrones de uso, no el "método de acceso" de 2.3.3 (el HDD sigue siendo de acceso directo):
| Patrón | Qué pasa | Rendimiento |
|---|---|---|
| Secuencial | Sectores consecutivos; búsqueda y latencia casi solo al principio; domina la transferencia | Alto: ideal para bloques grandes |
| Aleatorio | Posiciones dispersas; cada acceso repite búsqueda y latencia | Bajo: los tiempos mecánicos dominan con bloques pequeños |
Ver ejemplo 2.26: archivo de 4 MiB, 5400 rpm, t_b = 10 ms, sectores de 512 B, 2048 sectores por pista
- sectores; rev/s; ms; ms.
a) Secuencial (4 pistas; búsqueda solo al principio, latencia en cada pista; una pista por vuelta):
b) Aleatorio (cada sector con búsqueda, latencia y transferencia de s ms):
La diferencia (más de 1600 veces) viene de repetir búsqueda y latencia en cada sector.
2.9.3. Unidades de estado sólido (SSD)
Almacenamiento secundario no volátil sin piezas mecánicas, normalmente con flash NAND (presentada por Toshiba en 1987). Ventajas: tiempos de acceso menores (sobre todo en acceso aleatorio), sin ruido ni vibraciones y más resistencia a golpes.
Estructura física:
| Componente | Función |
|---|---|
| Chips de flash NAND | Guardan los datos; su número y capacidad fijan en parte la capacidad total |
| Controlador SSD | Atiende peticiones, gestiona los chips y hace operaciones internas de mantenimiento |
| DRAM (opcional) | Información temporal para la gestión; hay SSD sin ella |
| Interfaz | SATA (con protocolo AHCI) o PCIe (normalmente con protocolo NVMe, Non-Volatile Memory Express) |
Formatos: 2.5 pulgadas (normalmente SATA) y M.2 (ranura en la placa). M.2 es un formato y un conector, no determina si la unidad es SATA o PCIe.
Organización de la información:
| Unidad | Tamaño habitual | Papel |
|---|---|---|
| Página | 4–16 KiB | Unidad de lectura y programación |
| Bloque físico | 64–1024 páginas | Unidad de borrado |
| Bloque lógico (LBA) | 512 o 4096 B | Lo que ve el computador |
No confundir las páginas flash con las páginas de la memoria virtual (Tema 6), ni los bloques lógicos con los bloques físicos: una página de 8 KiB puede contener dos bloques lógicos de 4 KiB, y un bloque físico de 256 páginas de 8 KiB son 2 MiB.
La traducción de LBA a ubicación física (chip, bloque, página) la hace la FTL (Flash Translation Layer), en el firmware del controlador. LBA consecutivos no tienen por qué estar en posiciones físicas consecutivas, y la correspondencia cambia durante el funcionamiento.
Bloques lógicos FTL Memoria flash NAND
LBA 0 ----------> traducción ------> Bloque físico B, página 2
LBA 1 ----------> de ------> Bloque físico A, página 0
LBA 2 ----------> direcciones ------> Bloque físico B, página 0
Ver ejemplo 2.27: bloques lógicos de 4 KiB, páginas de 8 KiB, bloques físicos de 256 páginas
- Bloque físico: KiB MiB.
- Bloques lógicos por página: .
- Bloques lógicos equivalentes a un bloque físico: .
Son equivalencias de capacidad, no una correspondencia fija.
Funcionamiento. Como se programa por páginas pero se borra por bloques, una página no se puede sobrescribir directamente:
| Mecanismo | En qué consiste |
|---|---|
| Escritura fuera de lugar (out-of-place writing) | Los datos nuevos de un LBA se escriben en otra página libre; la FTL actualiza la correspondencia y la página vieja queda no válida hasta que se borre su bloque |
| Recolección de basura (garbage collection) | Elige bloques con páginas no válidas, traslada los datos válidos a otro sitio y borra esos bloques. Genera operaciones extra que pueden afectar al rendimiento de escritura |
| Nivelación del desgaste (wear leveling) | Reparte programaciones y borrados entre bloques para que ninguno se agote antes |
| Comando TRIM | El SO avisa de qué LBA ya no tienen datos útiles, lo que facilita la recolección de basura |
Antes: FTL: LBA 0 -> página 1 Después: FTL: LBA 0 -> página 3
Bloque A: [p0 otros][p1 LBA 0][p2 otros][p3 libre]
[p0 otros][p1 NO VÁLIDA][p2 otros][p3 LBA 0 nuevo]
| Tiempo de la flash | Orden de magnitud relativo |
|---|---|
| Lectura | El menor |
| Programación (de una página) | Mayor que la lectura |
| Borrado (de un bloque completo) | El mayor |
El tiempo de respuesta que ve el computador incluye además el procesamiento del controlador, la FTL, el mantenimiento interno y la interfaz: no tiene búsqueda ni latencia rotacional, pero no es nulo ni constante.
Rendimiento:
| Parámetro | Definición |
|---|---|
| Tiempo de respuesta | Desde que llega la petición hasta que se completa; las lecturas suelen ser más rápidas |
| Velocidad de transferencia | ; se dan por separado lectura y escritura secuenciales |
| IOPS | Operaciones de E/S por segundo; útil con muchas operaciones pequeñas |
donde es el número de operaciones y el tamaño de cada una. Las IOPS dependen del tamaño de operación, de la mezcla lectura/escritura y de cuántas peticiones puede haber pendientes a la vez. En acceso secuencial se mide la velocidad máxima; en aleatorio, el tiempo de respuesta y las IOPS. Estos parámetros valen también para HDD.
Ver ejemplo 2.28: 50 000 IOPS con lecturas de 4 KiB
- En 1 s: KiB.
- KiB/s MiB/s.
- Sin solapamiento: µs por operación. Si el SSD atiende varias peticiones a la vez, ya no es el tiempo de respuesta de cada una.
El rendimiento real también depende de la interfaz (SATA limitada; PCIe NVMe mucho más rápida según versión y líneas), del controlador, del paralelismo entre chips y de efectos como la recolección de basura o la caché de escritura (parte de la flash trabajando en un modo más rápido; al llenarse, la escritura baja).
Comparación HDD frente a SSD:
| Característica | HDD | SSD |
|---|---|---|
| Tecnología | Grabación magnética en discos giratorios | Flash NAND |
| Piezas mecánicas | Discos y cabezales móviles | Ninguna para acceder a los datos |
| Tiempo de acceso | Mayor (búsqueda y latencia) | Menor |
| Acceso secuencial | Buen rendimiento | Generalmente mayor |
| Acceso aleatorio | Limitado por la mecánica | Muy superior |
| Ruido | Sí | Silencioso |
| Consumo | Generalmente mayor | Generalmente menor (según modelo) |
| Resistencia a golpes | Sensible, sobre todo en marcha | Mayor |
| Coste por capacidad | Menor | Mayor |
| Uso habitual | Almacenamiento masivo y copias de seguridad | SO, aplicaciones y datos de acceso frecuente |
Se pueden combinar en un mismo sistema.
Ver ejemplos 2.29 y 2.30: HDD frente a SSD
2.29: HDD a 5400 rpm con ms frente a SSD de 0.1 ms de respuesta. ms; ms; el HDD tarda unas 155.6 veces más.
2.30: 12 GB a 200 MB/s (HDD) tardan 60 s; a 3000 MB/s (SSD), 4 s: el SSD es 15 veces más rápido.
2.9.4. Discos ópticos
Almacenan y recuperan información con un láser, usando propiedades de reflexión de la luz. Los datos van en una pista en espiral que se lee detectando variaciones de la luz reflejada. Tipos: CD, DVD y BD (Blu-ray).
Características físicas. Soporte de plástico transparente (policarbonato) con capas reflectantes (aluminio), capas grabables y capas protectoras. Hay que distinguir:
| Concepto | Significado |
|---|---|
| Cara | Cada lado físico del disco (CD y BD usan una; el DVD, una o dos) |
| Capa | Región a distinta profundidad donde se registran datos; más capas, más capacidad sin cambiar el tamaño |
Un motor gira el disco y un sistema óptico (láser, lentes y sensores) se mueve radialmente; el sensor recoge la luz reflejada y la convierte en señal eléctrica.
| Tipo | Cómo se graba | Ejemplos |
|---|---|---|
| Solo lectura | Prensado en fábrica: hendiduras (pits) y llanos (lands); las transiciones entre ellos producen variaciones en la señal | CD-ROM, DVD-ROM, BD-ROM |
| Grabables | El láser cambia de forma permanente las propiedades ópticas de una capa de grabación; no se borra (a veces se añaden sesiones) | CD-R, DVD-R, DVD+R, BD-R |
| Regrabables | Materiales de cambio de fase (cristalino y amorfo), cambiados de forma reversible con pulsos láser de distinta potencia | CD-RW, DVD-RW, DVD+RW, BD-RE |
La escritura usa un láser de más potencia que la lectura. El acceso requiere mover el sistema óptico y esperar al giro, así que es más lento que en HDD y SSD.
Organización. Una sola pista en espiral del centro al borde (frente a las pistas concéntricas del HDD), dividida en sectores con datos más información de sincronización y corrección de errores. Sectores lógicos de 2048 B útiles en CD-ROM de datos, DVD y Blu-ray.
| Modo de giro | Funcionamiento |
|---|---|
| CLV (Constant Linear Velocity) | Velocidad lineal constante: gira más rápido cerca del centro y más lento en el borde |
| CAV (Constant Angular Velocity) | Velocidad de giro constante: la velocidad lineal y la de transferencia aumentan hacia el borde |
La capacidad depende de la separación entre vueltas de la espiral, del tamaño mínimo de las marcas y del número de capas. Un láser de menor longitud de onda permite marcas más pequeñas y más densidad.
| Característica | CD | DVD | Blu-ray |
|---|---|---|---|
| Introducción | 1982 (Philips y Sony; CD-ROM a mediados de los 80) | 1996 | 2006 |
| Láser | Infrarrojo, 780 nm | Rojo, 650 nm | Azul-violeta, 405 nm |
| Una cara, una capa | 650–700 MB | 4.7 GB | 25 GB |
| Una cara, dos capas | No habitual | 8.5 GB | 50 GB |
| Velocidad de referencia 1x | 150 kB/s | 1.385 MB/s | 4.5 MB/s |
| Uso | Audio y datos | Vídeo y datos | Vídeo de alta definición y datos |
El factor de velocidad (1x, 4x, 16x...) multiplica la referencia de cada formato: dos unidades 8x de formatos distintos no van igual de rápido.
Ver ejemplo 2.31: lector de DVD 8x
- MB/s.
- En 20 s: MB.
- 2 GB MB tardan s, unos 3 minutos.
Frente a HDD y SSD son más lentos, pero los soportes son extraíbles: útiles para distribución, almacenamiento fuera de línea y conservación.
2.9.5. Cintas magnéticas
Banda flexible con material magnético; se graba magnetizando regiones y se lee con cabezales. Desde los años 50 (IBM 726, 1952, con el IBM 701). Hoy, sobre todo copias de seguridad y archivo a largo plazo.
Funcionamiento. La cinta va en un cartucho; al meterlo en la unidad, un mecanismo de arrastre la lleva desde la bobina del cartucho hasta una bobina de recogida, pasando por rodillos de guiado y por el cabezal. El sentido puede invertirse para ir a otras posiciones.
| Característica | Detalle de los apuntes |
|---|---|
| Elevada capacidad | LTO-10: 30 o 40 TB sin comprimir por cartucho |
| Bajo coste por capacidad | Sobre todo para grandes volúmenes a largo plazo |
| Acceso secuencial | Hay que desplazar la cinta; localizar datos en LTO-9 puede llevar 40–60 s (sin contar la transferencia) |
| Alta transferencia secuencial | LTO-10: hasta 400 MB/s nativos una vez localizado el dato |
| No volátil | Sí |
| Larga duración | 20–30 años en buenas condiciones (orientativo: HDD sin uso 2–5 años, algunos SSD sin alimentación alrededor de un año, ópticos de años a décadas) |
| Bajo consumo almacenada | Los cartuchos se guardan fuera de la unidad sin alimentación |
Organización y acceso. Datos en pistas longitudinales, organizados en bloques con mecanismos de identificación. El acceso es secuencial, pero eso no obliga a leer los bloques anteriores: las unidades modernas localizan una posición y se desplazan hasta ella. Mal para muchos accesos aleatorios; excelente para transferir grandes volúmenes una vez localizados.
Ver ejemplo 2.32: archivo de 120 GB a 400 MB/s con 50 s de localización
- s (5 min).
- s (5 min 50 s).
Aplicaciones: copias de seguridad, almacenamiento a largo plazo y archivo de grandes volúmenes en centros de datos e instituciones. En entornos profesionales se usan bibliotecas automatizadas de cintas LTO, con robots que cargan el cartucho necesario.
Errores comunes de examen
| Error | Corrección |
|---|---|
| Calcular o con | Se usa : , |
| Suponer que , , y el ancho del bus coinciden | Son magnitudes independientes |
| Confundir kB con KiB, o Mib con MiB | Revisar si el prefijo es decimal o binario y si es bit o byte |
| Decir que "acceso aleatorio" significa al azar, o que solo la RAM lo tiene | Es llegar a cualquier unidad sin recorrer las anteriores; los SSD también lo tienen |
| Confundir método de acceso con patrón de uso | Un HDD es de acceso directo; "secuencial" y "aleatorio" en HDD y SSD son patrones de acceso |
| Decir que un SSD es memoria principal porque es de semiconductores | Es secundaria por su función |
| Decir que la lectura SRAM es destructiva o que la SRAM necesita refresco | Eso es la DRAM |
| Confundir EPROM y EEPROM | EPROM: ultravioleta, borra todo, sacando el chip. EEPROM: eléctrico, selectivo por bytes |
| Decir que la flash borra por páginas | Programa por páginas y borra por bloques |
| Pensar que más bits por celda es mejor en todo | QLC da más capacidad y menos coste, pero menos ciclos y programación más lenta |
| Pensar que el multiplexado reduce la capacidad | Reduce terminales, no direcciones |
| Usar los bits altos para la dirección interna en el caso 2 | Los bits bajos van a todos los chips; los altos, al decodificador |
| Creer que un segundo rango o más módulos en un canal duplican el ancho de banda | Los rangos dan capacidad; el ancho de banda lo multiplican los canales |
| Confundir MHz con MT/s | En DDR, |
| Olvidar el límite del bus en módulos independientes | |
| Usar la notación equivocada en conjuntos | En los apuntes: conjuntos, líneas por conjunto, , |
| Contar la capacidad de la caché con el directorio | Solo cuenta la zona de datos |
| Medir el desplazamiento en bytes cuando la unidad es de 16 bits | con en unidades direccionables |
| Actualizar el orden FIFO tras un acierto | Solo LRU se actualiza con aciertos |
| En conjuntos, usar una línea libre de otro conjunto | El reemplazo se hace solo dentro del conjunto asignado |
| Contar las cargas de bloques como escrituras | Son lecturas de memoria principal |
| Sumar dos veces | y |
| Usar como tasa global | es local; la global es |
| Tomar la vuelta completa como latencia media | |
| Confundir bloque lógico, sector físico y bloque físico flash | Son unidades distintas; la FTL o el controlador las relacionan |
| Comparar unidades ópticas solo por el factor (8x, 4x) | Cada formato tiene su propia referencia 1x |
| Pensar que en una cinta hay que leer todo lo anterior | Hay que desplazar la cinta, pero no leer los bloques anteriores |
Test de autoevaluación
1. Una memoria tiene organización bits. ¿Capacidad en MiB y bits de dirección?
Ver solución
B MiB; bits.
2. Una memoria tiene ns, ns y bits. ¿Frecuencia máxima de acceso y velocidad máxima teórica?
Ver solución
accesos/s; MB/s. El dato no interviene.
3. ¿Por qué las DRAM necesitan refresco y además restaurar tras cada lectura?
Ver solución
El bit es la carga de un condensador. Las corrientes de fuga la descargan poco a poco (de ahí el refresco periódico), y la lectura altera la carga, así que es destructiva y hay que restaurarla.
4. Ordena ROM de máscara, PROM, EPROM y EEPROM según su flexibilidad y di cómo se borra cada una.
Ver solución
ROM de máscara (fijada en fábrica, no se borra) < PROM (programable una vez, no se borra) < EPROM (borrado con ultravioleta, todo el contenido, sacando el chip) < EEPROM (borrado eléctrico y selectivo por bytes).
5. Una celda flash QLC, ¿cuántos estados de carga distingue y qué inconvenientes tiene frente a SLC?
Ver solución
estados. Programación más lenta y menos ciclos de programación y borrado, a cambio de más densidad y menor coste por bit.
6. Se quiere una memoria de bits con chips de . ¿Cuántos chips y qué decodificador?
Ver solución
; ; . Decodificador 2 a 4 con ; a todos los chips.
7. Una DRAM de usa direccionamiento multiplexado en dos mitades. ¿Cuántos terminales de dirección tiene y para qué sirven RAS y CAS?
Ver solución
12 terminales (frente a 24). RAS captura la dirección de fila y CAS, después, la de columna, por los mismos terminales.
8. Una interfaz DDR funciona a 1600 MHz con 64 bits de datos. ¿Tasa nominal y ancho de banda teórico?
Ver solución
MT/s; B GB/s.
9. Módulos independientes con ns, ns y B. ¿Cuántos saturan el bus y qué velocidad dan 2 y 6 módulos?
Ver solución
ns; módulos. Con 2: MB/s. Con 6: , MB/s.
10. Memoria direccionable por bytes con direcciones de 16 bits; caché directa de 2 KiB con líneas de 32 B. Formato de dirección y descomposición de .
Ver solución
; , , . : etiqueta 2, línea 17, desplazamiento 20. Comprobación: , .
11. La misma caché, ahora asociativa de 4 vías. ¿, campos y conjunto de ?
Ver solución
; , . 0001001 | 0001 | 10100: etiqueta 9, conjunto 1 (), desplazamiento 20.
12. Caché totalmente asociativa de 3 líneas, inicialmente vacía. Secuencia de bloques 1, 2, 3, 1, 4. ¿Qué bloque expulsan FIFO y LRU en el último acceso?
Ver solución
FIFO expulsa el 1 (el primero en entrar, aunque se acaba de usar). LRU expulsa el 2 (el que lleva más tiempo sin usarse, porque el 1 se acaba de usar).
13. Caché con ns, ns y . ¿?
Ver solución
ns.
14. L1 de 1 ns con , L2 de 8 ns con (local) y memoria principal de 80 ns adicionales. ¿ y tasa global?
Ver solución
ns; ns. Tasa global .
15. Memoria asociativa de entradas de 4 bits. ¿Qué argumento y máscara marcan las entradas válidas que terminan en 11?
Ver solución
y un argumento con 11 al final, por ejemplo . Las entradas con nunca se marcan.
16. HDD de 10 000 rpm con ms. ¿, y ?
Ver solución
ms; ms; ms.
17. Una pista tiene 1000 sectores de 512 B y el disco gira a 6000 rpm. ¿Velocidad de transferencia ideal y tiempo para leer 250 sectores consecutivos?
Ver solución
rev/s; B; MB/s. ms (un cuarto de vuelta).
18. Un SSD alcanza 20 000 IOPS con operaciones de 4 KiB. ¿Velocidad en MiB/s y tiempo medio por operación sin solapamiento?
Ver solución
KiB/s MiB/s; µs.
19. ¿Por qué un SSD no sobrescribe una página directamente y qué hace en su lugar?
Ver solución
Porque programa por páginas pero solo puede borrar bloques completos. Hace una escritura fuera de lugar: escribe en otra página libre, la FTL actualiza la correspondencia y la página antigua queda no válida hasta que la recolección de basura borre su bloque.
20. Un lector Blu-ray 2x y un lector DVD 8x leen 4.5 GB. ¿Cuál es más rápido?
Ver solución
Blu-ray 2x: MB/s, s. DVD 8x: MB/s, s. El DVD 8x es más rápido aquí, pese a que Blu-ray tiene una referencia 1x mayor.