Latencia

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

En redes informáticas de datos se denomina latencia a la suma de retardos temporales dentro de una red. Un retardo es producido por la demora en la propagación y transmisión de paquetes dentro de la red.

Otros factores que influyen en la latencia de una red son:

Hay latencia en tecnologías de uso musical, como los transformadores de audio digital a vinilos analógicos. Siempre el traspaso de información de un mecanismo a otro va a sufrir este retardo, que normalmente está estimado en milisegundos (1/1,000 s) en algunos casos pequeño, en otro más notorio. La latencia en el sentido del audio digital esta directamente relacionada con la tarjeta de audio, esto se debe a que dicha tarjeta no es compatible con ASIO (Audio Stream Input Output).

Un punto muy importante es que siempre va a haber cierta latencia, aun cuando se hable de latencia cero, la cuestión es que esta es imperceptible (3 ms aprox.) En general se refiere al tiempo que dura en llegar una acción desde su punto de inicio hasta su "punto de fuga", es decir cuando la acción se consuma.

Latencia de memorias[editar]

Se denominan latencias de una memoria RAM a los diferentes retardos producidos en el acceso a los distintos componentes de esta última. Estos retardos influyen en el tiempo de acceso de la memoria por parte de la CPU, el cual se mide en nanosegundos (10-9 s) .

Resulta de particular interés en el mundo del overclocking el poder ajustar estos valores de manera de obtener el menor tiempo de acceso posible.

Estructura física de la memoria[editar]

La memoria está compuesta por un determinado número de celdas, capaces de almacenar un dato o una instrucción y colocadas en forma de tablero de ajedrez. En lugar de tener 64 posibles posiciones donde colocar piezas, tienen n posiciones. No solo existe un "tablero" sino que existen varios, de esta forma la estructura queda en forma de tablero de ajedrez tridimensional.

Latencias2.JPG

Accesos a memoria[editar]

Cuando se desea acceder a la memoria, es imprescindible indicar el número de tablero, el número de fila dentro del tablero, y el número de columna o celda dentro de esa fila, en ese orden.

El tiempo que tarda la memoria en colocarse en la posición necesaria es relativamente pequeño, sin embargo son tantos los datos e instrucciones que se almacenan en la memoria, que al final el proceso puede llegar a hacerse lento.

Debido al que se van a leer/escribir muchas cosas de/en la memoria, se necesita un sistema que lea muchas celdas al mismo tiempo, sin transportar los datos de dichas celdas y a continuación, transportar todos los datos a la vez (dato o instrucción ya que es lo único que se almacena en la memoria). Este sistema de leer muchas celdas y después transportar es conocido como bus a ráfagas o burst.

Si por cada celda que se leyese, el dato/instrucción se transportara a su destino, la lectura/escritura de memoria sería un proceso demasiado lento.

Tipos de latencias[editar]

Existen varios tipos de latencias en las memorias, sin embargo, las más importantes son:

  • CAS: indica el tiempo que tarda la memoria en colocarse sobre una columna o celda.
  • RAS: indica el tiempo que tarda la memoria en colocarse sobre una fila.
  • ACTIVE: indica el tiempo que tarda la memoria en activar un tablero.
  • PRECHARGE: indica el tiempo que tarda la memoria en desactivar un tablero.

Lectura o escritura en memoria[editar]

El proceso a seguir cuando se desea leer o escribir en la memoria será el siguiente:

  • Mandar una señal para activar el tablero y esperar a que termine el tiempo de activación (latencia ACTIVE).
  • Mandar una señal para saber cuál es la fila en la que se debe posicionar y esperar a su latencia (latencia RAS).
  • Mandar una señal para saber cuál es la columna o celda donde se debe posicionar y esperar (latencia CAS).

Tiempo de espera[editar]

El tiempo que tarda la memoria en proporcionar el dato, es la suma de las tres latencias: ACTIVE, RAS y CAS.

Como se comenta anteriormente, antes de enviar el dato/instrucción a donde deba ir, se deben leer varias celdas de memoria, por lo tanto hay que pasar de una celda a otra, e ir esperando su correspondiente latencia CAS.

Si cada tablero tiene, por ejemplo 64 celdas, y se van a leer 20 posiciones, las latencias totales a esperar son:

  • 1 X ACTIVE (ya que se leen menos de 64 celdas, que son las que tiene el tablero completo)
  • 3 X RAS (ya que cada fila tiene 8 posiciones)
  • 20 X CAS (ya que se van a leer 20 celdas)

La latencia más importante, como queda patente, es la latencia CAS, y cuanto menor sea esta, mejor rendimiento tendrá el ordenador en general.

Tiempo real[editar]

Sea una placa base con Front Side Bus o FSB a 200 MHz. El tiempo de cada ciclo de reloj es: F = 1 / T --> 200 * 10^6 = 1 / T --> T = 1 / 200 * 10^6 --> T = 5 * 10^-9 s = 5 NanoSegundos

NOTA: las antiguas memorias RAM que empleaban los Pentium I eran de 70 ns, las EDO que eran las mismas un poco evolucionadas eran de 60 ns, así se puede calcular bastante fácilmente el fsb de aquellos sistemas. Las primeras SDRAM que aparecieron, las PC 100, eran de 10 ns, evidentemente el fsb de aquellos sistemas era de 100 MHz.

Latencias4.JPG

En función de la calidad de las memorias, sus latencias serán mejores o peores.

Latencias5.jpg

En la imagen se ve que la memoria tarda 12.5 ns en hacer el CAS, si se cogen 3 ciclos (latencia CAS 3) sobran 2.5 ns. 2.5 en 15 es mucho el 16.6%, y más aun teniendo en cuenta que se hacen muchísimos accesos a memoria, por lo tanto, cuanto más tiempo se ahorre mejor.

Al hacer uso de la memoria DDR, se puede emplear tanto el flanco de subida como el de bajada para terminar la latencia, de modo que empleando CAS 2.5 este ejemplo sería óptimo.

Latencias6.jpg

Latencias vs FSB (caso práctico)[editar]

La diferencia de latencia es algo muy apreciable(en especial la latencia CAS) a la hora de medir el rendimiento del ordenador, ya que cuando se accede a memoria tanto para leer como para escribir se tiene que esperar por ella. Por cada celda del tablero que se lea, hay que esperar la latencia CAS, por cada fila completa al RAS, y por cada tablero diferente las ACTIVE y PRECHARGE (a veces se solapan). Se lee/escribe por ráfagas, pero en cada ráfaga se espera ‘x’ veces a CAS, ‘y’ veces RAS, siendo X = Y^2, ACTIVE, PRECHARGE, etc.

Por otra parte cuanto más alto sea el FSB, más rendimiento se obtiene. Aunque es una verdad a medias. Las latencias son inversamente proporcionales a la velocidad del bus FSB/HTT, es decir, cuanto mayor FSB maneje el sistema, peor latencia manejará y viceversa. Latencias7.jpg En el dibujo se pueden observar dos sistemas: uno con un FSB de 100 MHz (izquierda) y otro, con un FSB de 200 MHz (derecha), al tener el doble de frecuencia tenemos que en el mismo tiempo se hacen el doble de ciclos, de ahí que a la derecha estén las “ondas” mucho más comprimidas. En ambos casos se emplea la misma memoria, que tarda una tiempo en hacer el acceso CAS. Este tiempo está marcado con una línea verde. La escala de tiempo en ambos casos es exactamente la misma, así que la línea verde será en ambos casos exactamente igual.

Para el sistema de la izquierda, se puede ver que el CAS de la memoria es de casi 2 ciclos, para redondear, hay que redondear hacia arriba para darle tiempo a que termine, sobrará un poco, sin embargo, para el caso de la derecha, el CAS sería de 3. Latencias9.jpg En el último dibujo se ve que en la parte de la izquierda se pierde un poco de tiempo desde que se termina el CAS hasta que termina su latencia. Se ve el tiempo desperdiciado abajo a la derecha en color azul claro. Lo mismo pasa en el sistema del dibujo de la derecha. Pero en este caso es más tiempo (La escala temporal, eje de las abscisas, es el mismo en ambos casos, por lo tanto el tiempo es mayor a la derecha).

En principio se podría pensar que aunque se pierda un poco más en un lado que en el otro, como el fsb es bastante superior en un lado que en el otro, seguro que es más rápido aun perdiendo un poco de tiempo en el CAS... A continuación se demuestra que esto no es cierto en todos los casos:

Un sistema a 133 MHz y otro a 200 MHz, y empleando la misma, exactamente la misma memoria en ambos casos. El tiempo que tarda en ejecutarse un ciclo:

  • 1/133 * 10^6 = 7.5 * 10^-9 = 7.5 ns
  • 1/200 * 10^6 = 5 * 10^-9 = 5 ns

Un ciclo en el sistema con bus a 200 MHz tarda 6 nanosegundos en ejecutarse y 7.5 nanosegundos en el sistema con bus a 133 MHz.

Suponiendo que la memoria funciona en ambos sistemas con las siguientes latencias:

  • Sistema 133 MHz --> 2 – 2 – 2 – 5 --> CAS, RAS, PRECHARGE y ACTIVE
  • Sistema 200 MHz --> 3 – 2 – 2 – 5 --> CAS, RAS, PRECHARGE y ACTIVE

Los tiempos que se tardaría en cada caso serían los siguientes:

Sistema 133 MHz

(2 * 7.5) + (2 * 7.5) + (2 * 7.5) + (5 * 7.5) = 15 + 15 + 15 + 37.5 = 82.5 ns

Sistema 200 MHz

(3 * 5) + (2 * 5) + (2 * 5) + (5 * 5) = 15 + 10 + 10 + 25 = 60 ns

Hasta aquí parecería que salen mal las cuentas ya que el sistema con bus a 200 MHz tarda menos tiempo, 72 ns frente a 82.5 ns

Sin embargo, suponiendo que el tablero de la memoria es de 100 filas por 100 columnas las cosas cambian.

Recordemos que la latencia CAS se ejecuta tantas veces como columnas haya, en este caso, 100 veces por cada vez que se ejecuta cambio de fila (RAS), por lo tanto, el cálculo justo, suponiendo que hay que leer en una ráfaga justo una fila entera quedaría de la siguiente manera:

Sistema 133 MHz

[100 * (2 * 7.5)] + (2 * 7.5) + (2 * 7.5) + (5 * 7.5) =

(15 * 100) + 15 + 15 + 37.5 = 1500 ns + 67.5 ns = 1567.5 ns

Sistema 200 MHz

[100 * (3 * 5)] + (2 * 5) + (2 * 5) + (5 * 5) =

(15 * 100) + 10 + 10 + 20 = 1500 ns + 40 ns = 1540 ns

Este sería un caso extremo, que justo haya que leer una fila entera y no hubiera que hacer ni un solo salto de fila (RAS) ni cambios de tablero. Aunque aun así podría seguir siendo óptimo el caso del sistema con bus a 133.

Con ese cálculo queda clara la importancia de la latencia CAS con respecto a las demás, y la importancia de las latencias con respecto al bus FSB/HTT.