El otro día una persona me comentaba por correo electrónico si podía explicarle la forma de calcular el ancho de banda de un SoC. A raíz del artículo que escribí hace un tiempo sobre la plataforma tegra a algunas personas les han surgido dudas en el tema del ancho de banda de la memoria y cómo puede afectar el doble canal a todo esto.
Una de las dudas venía a cuento de que cuando escribí el artículo sobre tegra, el único tegra 3 que había en el mercado en ese momento era el tegra 3 t30 con memoria LPDDR2 a 520mhz como la que montaba el tablet asus transformer prime. Con el paso de los meses han ido saliendo revisiones de este SoC que aparte de permitir mayor velocidad de reloj también permitían meter memoria LPDDR3 y jugar un poco más con las velocidades de reloj de la memoria. Eso sí, el doble canal todavía no está presente en las revisiones de la controladora de memoria.
Vamos a calcular entonces como ejemplo el ancho de banda del asus transformer prime con tegra 3 t30 y memoria LPDDR2 a 520mhz que he comentado antes:
Calcular el ancho de banda de la memoria es algo un poco complicado ya que entran en juego varias variables. Serían la frecuencia de reloj a la que funciona la memoria, el ancho del bus de datos en el que se conecta ese módulo de memoria y luego también habría que hacer un pequeño juego de unidades entre bits y bytes para que la operación sea correcta.
32 bits del ancho del bus divididos entre 8 bits para pasarlo a bytes= 4 bytes
4 bytes multiplicado por 520 mhz de la memoria = 2080 MB/sg
2080 MB/sg = 2GB/sg que es más o menos el ancho de banda que tiene ese tablet.
Para calcular el ancho de banda de cualquier tegra 3 es igual que lo que he puesto arriba pero cambiando simplemente los megahercios de la memoria. El hecho de que sea LPDDR2 o LPDDR3 no afecta de por sí al ancho de banda de la memoria más que por el hecho que normalmente la memoria LPDDR3 puede alcanzar mayores velocidades de reloj requiriendo menos voltaje para funcionar, pero el cálculo en sí sería el mismo.
¿Y con los SoC de doble canal? Pues es muy parecido pero teniendo en cuenta que no hay que olvidarse de que en este caso tenemos dos canales en vez de uno solo.
La persona con la que hablé por correo electrónico me puso como ejemplo una tablet con snapdragon s4 y memoria de doble canal LPDDR2 a 600mhz. Para calcularlo se puede hacer de dos formas por el doble canal. O trabajar con un ancho del bus de 64 bits (32 bits y 2 canales) o hacer los cálculos con un canal y multiplicarlo por dos:
(32×2)/8 = 8bytes
8x600mhz= 4800 MB/sg
4800 MB/sg = 4,6 GB/sg
En este caso se puede ver que he optado por hacer como que trabajaba con un bus de 64 bits en vez de multiplicar el resultado final por dos, pero no habría diferencia entre hacerlo de una forma u otra.
De cara al futuro nos vamos a encontrar con SoC que apuestan por un ancho del bus mayor aparte del tema del doble canal. Por ejemplo, el futuro exynos 5 de samsung se rumorea que puede tener o bien un bus de 64 bits por canal y memoria LPDDR3 a 800mhz o bien continuar con un bus de 32 bits y LPDDR3 a 1600mhz viendo la publicidad de samsung:
En este caso voy a presuponer que el primer rumor es cierto, y tenemos entre manos un bus de 64 bits por canal para poder explicar la diferencia que habría. Si hacemos los cálculos podremos ver que encaja con el dibujo:
Ahora lo voy a hacer por el segundo método, el de calcularlo como si fuese de un canal y multiplicar por dos el resultado.
64/8=8 bytes
8x800mhz=6400 (en este punto ya se ve cómo iguala al exynos 4 con un canal)
6400MB/sg = 6,25 GB/sg
6,25GB/sg x 2= 12,5 GB/sg
Supongo que no encaja con total exactitud por la manía de muchos fabricantes de trabajar con unidades tipo 1 GB = 1000 MB en vez de 1024 MB y se van perdiendo redondeos por el camino, pero creo que la idea está clara.
Y con esto, espero haber solucionado algunas de vuestras dudas 🙂