CHW

Primeros detalles oficiales de la micro-arquitectura NVIDIA Denver

Nueva micro-arquitectura ARMv8 (ARM64) personalizada de NVIDIA en la que estará basado el SoC Tegra K1 -64.

Desde su anuncio en enero del 2011, se ha especulado mucho sobre la micro-arquitectura ARMv8 personalizada de Nvidia, conocida por su nombre código Denver, la que por fin es detallada oficialmente por la propia Nvidia.

Rumores y realidades

Durante estos últimos 3 años se ha especulado mucho sobre Denver, por lo que resulta muy curioso que algunos rumores sobre Denver hayan terminado cumpliéndose en mayor o menor medida:

  1. Denver está basado en la arquitectura ARMv8 (ARM64): Rumor que terminó siendo acertado (se confirmó hace varios meses, desde el anuncio del SoC Tegra K1).
  2. Denver podría ser capaz de emular x86 por hardware: Rumor que no se cumplió precisamente: Denver emula micro-código ARM fuera de orden por software (detallaremos ello más adelante).

La micro-arquitectura Denver

Denver es el resultado de la combinación de la arquitectura ARMv8 (ARM64 o ARM a 64 bits) y las tecnologías Transmeta CodeMorphing y LongRun (licenciadas de Transmeta desde agosto del 2008), dando como resultado un microprocesador ARM completamente distinto a todo lo visto hasta el momento.

La arquitectura ARMv8 comprende 2 ramas muy diferenciadas:

  1. big: Diseño con ejecución fuera de orden (Cortex-A57 “Atlas” y el recientemente anunciado “Maya”).
  2. LITTLE: Diseño con ejecución en orden (Cortex-A53 “Apollo” y el recientemente anunciado “Artemis”).

ARMv8 big tiene la ventaja de ofrecer un rendimiento superior, pero la desventaja de requerir un excesivo número de transistores, ocupar un área de die considerable y tener un mayor consumo; mientras que ARM LITTLE ofrece un rendimiento menor, pero ocupando menos transistores a la vez que ofrece un muy bajo consumo.

Nvidia piensa que ARM big no es una solución óptima, por lo que decidió apostar por ARM LITTLE, combinándolo con algunas tecnologías de Transmeta y soluciones propias de software, dando como resultado un microprocesador RISC (las arquitecturas ARM están basadas en modelos RISC) con algunas propiedades de un microprocesador VLIW7 (al viejo estilo de los difuntos microprocesadores Crusoe y Efficeon de Transmeta), combinación que da como resultado a uno de los microprocesadores ARMv8 más interesantes de la industria (en mi opinión).

Cada núcleo Denver está conformado por un microprocesador con un pipeline de 7 etapas con ejecución en orden, las cuales son alimentadas por un software especial denominado Optimizer, el cual se ejecuta en un nivel de privilegio superior al del sistema operativo (al estilo CodeMorphing de Transmeta), generando hasta 7 micro-instrucciones ARMv8/ARMv7, las que pueden ejecutarse simultáneamente (dado que Tegra K1 -64 cuenta con 2 núcleos Denver, es capaz de ejecutar hasta 14 micro-instrucciones ARM simultáneamente) y en un orden óptimo.

A fin de mantener una óptima ejecución de las micro-instrucciones ARM, Optimizer se encarga de ordenar/re-ordenar los registros internos y unidades de carga/almacenamiento del microprocesador, a fin de optimizar el flujo de datos y mantener alimentadas con instrucciones las 7 tuberías de ejecución del microprocesador; proceso que se ejecuta en tiempo real.

El software Optimizer es invisible ante el sistema operativo y aplicaciones, proporcionando al microprocesador en orden Denver, un nivel de rendimiento comparable al de un microprocesador con ejecución fuera de orden, pero requiriendo un diseño más simplificado (lógica más simple y con menos transistores. Según Nvidia).

Si podríamos citar alguna desventaja del software Optimizer de Denver, es que requiere de 128MB de memoria DRAM dedicada, cifra que considerando los varios GB de memoria instalada con los que contarán los dispositivos móviles equipados con los SoC Nvidia basados en la micro-arquitectura Denver, es un precio pequeño.

Estos 128MB de memoria reservada son usados para almacenar secuencias de código optimizadas generadas por el software Optimizer, las que pueden ser usadas nuevamente cuando sean requeridas, incrementando el rendimiento del chip (al eliminar la necesidad de que Optimizer re-ordene nuevamente las micro-instrucciones ARM en una secuencia óptima. En este punto Nvidia asegura no incluir ninguna secuencia de código optimizada a fin de acelerar ningún test de rendimiento ni aplicación).

Nvidia ha equipado a Denver con 128KB de memoria caché de primer nivel (L1 de 4 vías), a fin de mantener el mayor número posible de trozos de código más comúnmente usado en una vía de rápido acceso al microprocesador, eliminando la necesidad de recurrir a la memoria principal, e incrementando el rendimiento.

Pero no todo en Denver ha sido concebido para incrementar el rendimiento, la micro-arquitectura cuenta también con el nuevo estado de energía CC4, el cual permite al chip, apagar gran parte de su lógica, manteniendo sólo las secciones mínimas necesarias (estado del CPU y datos del cache L1); logrando consumir apenas algunas pocas decenas de mili vatios en su modo de menor consumo, para pasar a otros modos que ofrecen un mayor rendimiento cuando las aplicaciones así lo requieran.

Nvidia espera que Tegra K1 -64 basado en su micro-arquitectura Denver, cuente con una frecuencia de funcionamiento de 2.5GHz o superior, configuración con la cual ofrece un rendimiento que rivaliza en algunos aspectos con el del microprocesador Intel Celeron 2955U “Haswell-ULT” (doble núcleo funcionando a 1.4GHz):

Conclusiones

Denver es toda una proeza para Nvidia, erigiéndose como su micro-arquitectura más potente desarrollada hasta el momento; pero la propia Nvidia afirma que lo revelado hasta el momento es tan sólo un anticipo de lo que ofrecerá Denver, pues planea revelar aún más características de él en las próximas semanas.

Aún sin tener sus especificaciones completas, Denver luce impresionante en papel, por lo que sin dudas estamos ansiosos por ver cuántas de estas promesas terminan plasmándose en el rendimiento sobresaliente que asegura Nvidia.

En fin, un microprocesador con ejecución en orden que promete ser capaz de igualar o superar a un microprocesador con ejecución fuera de orden, no es algo que se vea muy frecuentemente en la industria (un ejemplo lo tenemos en Cortex-A7 y Cortex-A9, siendo el primero de ellos un microprocesador con ejecución en orden que alcanza un rendimiento muy cercano al segundo con ejecución fuera de orden).

Link: NVIDIA.

También pueden comentar en nuestro foro.

Tags

Lo Último


Te recomendamos