La Revolución Silenciosa: Cómo Apple Transformó los Chips ARM y Reinventó la Industria


Photo by Vojtech Okenka on Pexels.com

Cuando Apple anunció su transición de los procesadores Intel a la arquitectura ARM, muchos expertos levantaron una ceja. Sin embargo, esta audaz decisión resultó ser un punto de inflexión en la industria tecnológica. Al diseñar sus propios chips, Apple no solo logró mejorar el rendimiento y la eficiencia energética de sus dispositivos, sino que también estableció un nuevo estándar en la industria de los semiconductores. En este artículo, exploraremos cómo Apple logró esta hazaña y las implicaciones que tiene para el futuro de la tecnología móvil.

P.A. Semi, la visión de Apple y el impacto de esta adquisición

P.A. Semi fue fundada por ingenieros que querían crear chips más eficientes, desafiando las limitaciones de las grandes corporaciones. Estos visionarios compartían una pasión por la innovación y un profundo conocimiento de la arquitectura de los procesadores. Apple, siempre a la vanguardia de la innovación, vio el potencial de P.A. Semi y los adquirió para desarrollar chips personalizados. Esta alianza estratégica marcó una nueva era en la computación móvil, permitiendo a Apple diferenciarse de sus competidores.

Los ingenieros de P.A. Semi enfrentaron retos significativos, como la optimización para un ecosistema cerrado, la integración de componentes personalizados como el Neural Engine y cumplir con los estrictos estándares de calidad de Apple. Superaron estos desafíos mediante un enfoque innovador y colaborativo, trabajando estrechamente con los equipos de software de Apple.Veamos algo mas en detalle todo el proceso de forma resumida

Estos eran los grades desafíos iniciales de la arquitectura ARM:

  • Ancho de banda de memoria limitado: Los primeros chips ARM sufrían de una capacidad de acceso a la memoria bastante limitada, lo que restringía su rendimiento en tareas intensivas.
  • Falta de ejecución fuera de orden: Esta característica, presente en procesadores más potentes, permite que el procesador ejecute instrucciones en un orden diferente al especificado, optimizando así el rendimiento. Los chips ARM iniciales carecían de esta capacidad.
  • Gráficos subóptimos: Las GPUs integradas en los primeros chips ARM no estaban a la altura de las necesidades de los usuarios más exigentes, especialmente en juegos y aplicaciones multimedia.

Con la la adquisición estratégica de P.A. Semi, hubo una cierta simbiosis:

  • Un equipo de ensueño: P.A. Semi reunió a algunos de los mejores ingenieros de la industria, con una amplia experiencia en el diseño de chips de alto rendimiento.
  • Sinergias con Apple: La visión de P.A. Semi de crear chips altamente personalizados y eficientes encajaba perfectamente con los objetivos de Apple.

La Transformación de los Chips ARM consiguió todos estos objetivos:

  • Ejecución fuera de orden personalizada: Apple implementó una unidad de ejecución fuera de orden diseñada a medida, optimizada para las cargas de trabajo típicas de los dispositivos iOS.
  • Optimización del ancho de banda de memoria: A través de innovaciones en el diseño de la arquitectura del chip y el uso de memorias más rápidas, Apple logró superar las limitaciones iniciales de los chips ARM.
  • Revolución en los gráficos: La integración de GPUs de alta calidad en los chips A-series ha llevado los gráficos móviles a un nuevo nivel, permitiendo experiencias de juego y realidad aumentada cada vez más inmersivas.

Y con todo ello llegaron las ventajas competitivas de Apple:

  • Mayor eficiencia energética: Los chips de Apple ofrecen un rendimiento excepcional consumiendo menos energía, lo que se traduce en una mayor duración de la batería.
  • Integración perfecta con el software: Al diseñar tanto el hardware como el software, Apple puede optimizar cada aspecto del sistema, logrando una experiencia de usuario más fluida y cohesiva.
  • Innovación constante: Apple continúa invirtiendo en investigación y desarrollo para mantener sus chips a la vanguardia de la tecnología.

Y como podemos entender hubo un gran Impacto en la Industria:

  • Establecimiento de un nuevo estándar: Los chips de Apple han redefinido las expectativas de rendimiento y eficiencia energética en la industria móvil.
  • Mayor competencia: La competencia ha intensificado sus esfuerzos para desarrollar chips más potentes y eficientes, beneficiando a los consumidores.
  • Nuevas oportunidades: La arquitectura ARM ha demostrado ser una plataforma versátil, y se espera que se extienda a otros dispositivos más allá de los smartphones y tablets.

Comparación con la competencia

Si bien Qualcomm ha sido un jugador clave en el mercado de los procesadores móviles, los chips de Apple han demostrado ser superiores en varios aspectos. La estrecha integración entre el hardware y el software de Apple permite una optimización sin igual, lo que se traduce en una experiencia de usuario más fluida y un rendimiento más sostenido.

Además, el Neural Engine, una característica exclusiva de los chips de Apple, ha abierto nuevas posibilidades en el campo de la inteligencia artificial, permitiendo aplicaciones de realidad aumentada y aprendizaje automático más avanzadas.

Photo by Tracy Le Blanc on Pexels.com

El futuro según Apple

El futuro de los chips de Apple es prometedor. Más allá de los dispositivos móviles, podemos esperar ver estos procesadores en una amplia gama de productos, desde ordenadores portátiles ultraligeros hasta vehículos autónomos ( que por cierto ha «aparcado» por el momento). La combinación de alto rendimiento, eficiencia energética y capacidades de inteligencia artificial hace que los chips de Apple sean una plataforma ideal para desarrollar las tecnologías del futuro.

Asimismo los chips de Apple han tenido un profundo impacto en el desarrollo de software. Al ofrecer un conjunto de instrucciones y características únicas, estos chips han impulsado a los desarrolladores a explorar nuevas formas de aprovechar el hardware. Como resultado, hemos visto una explosión de aplicaciones innovadoras que aprovechan al máximo el potencial de los dispositivos Apple.

Conclusión:

La decisión de Apple de diseñar sus propios chips ha sido un movimiento audaz que ha transformado la industria móvil y ha sentado las bases para un futuro lleno de posibilidades. Al combinar un hardware de alto rendimiento con un software optimizado, Apple ha creado un ecosistema único que ha establecido un nuevo estándar en la industria tecnológica. A medida que la compañía continúa innovando, podemos esperar ver aún más avances en el campo de los semiconductores y aplicaciones cada vez más sorprendentes para sus dispositivos.

Efectos de luz para PC gaming


Ambilight es una tecnología diseñada para mejorar la experiencia visual analizando las señales entrantes y produciendo una luz ambiental lateral que se adapta al contenido que se está visualizando en la pantalla. El resultado es bastante atractivo y da la sensación de estar viendo una pantalla aún mayor.

Hasta hace poco, este efecto solo se podía conseguir comprando un televisor que contara con este sistema, sin otras opciones disponibles. Sin embargo, recientemente, con la aparición de placas con suficiente capacidad computacional, se puede emular este efecto utilizando, por ejemplo, una Raspberry Pi. Aún más sencillo y fácil es hacerlo a través de una placa Arduino UNO, un ordenador y una tira de Leds direccionables.

Antes de empezar con el montaje, es muy importante que la tira de LEDs RGB direccionables esté basada en el chip WS2801, ya que este no nos dará ningún tipo de problema al usar una placa Arduino, siendo además el más utilizado para este tipo de montajes.

Existen tiras basadas en el chip WS2801 en formato «luces de Navidad», pero lo más habitual es adquirirlas en forma de cinta autoadhesiva.

tira de leds.png

Una peculiaridad  de esta tiras, es que se pueden cortar según la longitud que se requieran, así como además que también es posible ampliarlas gracias a  los conectores que pueden llevar en cada extremo, pudiendo  unirse  entre ellas hasta donde se necesite.

Por supuesto, si no se dispone de conectores, también podemos soldar 4 hilos en el orden correcto para conseguir las tiras de leds que deseemos.

Asimismo, para alimentar dicha tira, necesitaremos una fuente de alimentación adecuada para el número de LEDs que vayamos a utilizar. Por ejemplo, una fuente de 5V y 2A es suficiente para 50 LEDs.

Por simplicidad, conectaremos la tira de LEDs a una placa Arduino UNO. El Arduino UNO, comparado con versiones anteriores, utiliza el chip alternativo Atmega 16U2/8U2, lo que permite una tasa de transferencia y memoria más alta. Además, esta versión cuenta con la interfaz SDA y SCL. Conectaremos los datos de LED y las líneas de reloj a la salida SPI del Arduino, es decir, los datos SPI salen del pin digital 11 y el reloj del pin digital 13. Los LEDs deben ser alimentados externamente, fuera de la línea de +5V del Arduino, ya que podrían dañar el regulador de este. La masa o tierra, por el contrario, sí debe estar conectada a la masa del Arduino.

Normalmente, las tiras de LEDs WS2801 tienen 6 cables: tres de ellos los conectaremos a los pines 11, 13 y GND del Arduino, y los otros dos a la fuente de 5V.

La forma de conectarlos todo esto es según el siguiente esquema :

  • El cable VERDE proveniente del pin SD de la tira de leds al pin 11 del Arduino Uno.
  • El cable ROJO proveniente del pin CK  de al tira de leds al  pin 13 del Arduino Uno.
  • El cable NEGRO proveniente del pin  GND de la tira de leds al pin GND del Arduino Uno.
  • El cable AZUL proveniente del pin +5V de al tira de leds lo dejaremos sin conectar
  • El cable Rojo grueso en paralelo con el azul  proveniente de la tira de leds a la conexión +5v de la fuente auxiliar
  • El cable NEGRO en paralelo con el  negro  proveniente del pin  GND de la tira de leds al GND de la fuente auxiliar
arduino.png

 

Conectamos pues  la tira de leds  por un lado a una fuente de 5V / 2 Amp  y por el otro a Arduino , por uno de los extremos y las otras 2 o 3 tiras con los adaptadores macho hembra adecuados   a continuación siguiendo la flecha  de las tiras  haciendo un rectángulo que rodeara nuestro monitor o TV. Para hacer el trabajo mas fácil , estas tiras como se ha dicho, pueden ser cortadas con una simple tijera para obtener las tiras que necesitemos y poderla acomodar donde deseamos, por ejemplo en la parte de atrás de nuestro monitor o por ejemplo en el interior de nuestro PC.

Evidentemente en uno de los extremos de inicio es donde haremos las conexiones de datos (sin olvidar la masa) y todas la demás se harán por medio de los  conectores .

Hemos de tener cuidado ya que uno de los extremos de la tira de luces es para conectar la primera tira al Arduino y a la fuente: de esta forma, en cada extremo quedan sueltos los cables opuestos (normalmente el cable rojo es el positivo y el azul el negativo) que conectaremos también entre si para dar alimentación a  los leds (aunque los conectores también den energía  ya que llevan las 4 conexiones incluida los 5v y GND).  En la siguiente imagen podemos ver mejor explicado las conexiones de alimentación siendo en nuestro caso el controlador la placa Arduino UNO.

 

 SOFTWARE ARDUINO

Para gobernar , la tira de leds la conectaremos a  un   Arduino uno   que  ademas  hará de «puente» entre el ordenador host y la tira basado en WS2801. Los datos de LED se transmiten, y  no se almacenan en búfer, lo que significa que si  hay mas código en Arduino  podrían generar demoras debido a la RAM limitada del Arduino, pero no obstante el algoritmo ejerce cierto esfuerzo para evitar las pérdidas de buffer . El protocolo de cierre WS2801, basado en retardo, podría desencadenarse inadvertidamente si el bus USB o la CPU  está desbordada con otras tareas. Este código almacena datos entrantes en serie e introduce pausas intencionadas si hay una amenaza del buffer  lleno prematuro. El costo de esta complejidad es algo que  reduce el rendimiento, pero la ganancia es muy buena  evitando  la mayoría de los fallos visuales  incluso aunque finalmente una función de carga en el bus USB y  host CPU, quede  fuera de  control.

 Si no lo tenemos, descargaremos el software de Arduino (Página oficial de arduino) y lo instalamos. Conectamos el arduino uno a nuestro pc con el cable usb. Si pide los drivers, se pueden encontrarlo en la carpeta arduino-1.0.4\drivers.

Descargaremos  esta biblioteca desde su sitio oficial: fastled biblioteca descarga, la cual  importaremos  al Arduino IDE.

Ahora toca cargar el sketch que haremos ejecutar en nuestro Arduino , para lo cual  descaremos el código Adalight ( por ejemplo desde aqui)

Descomprimiremos el archivo y  añadimos los archivos que acabamos de descargar en la carptea Mis documentos/ Arduino  y ng

Arrancaremos el software de arduino y  configuramos en el ide la placa Arduino en Herramientas –>Placa Arduino Uno ( o la placa que tengamos)   sin  olvidar el puerto de comunicaciones.

Iremos a  File> Sketchbook> Arduino> Adalight  y una vez cargado el sketch debemos ajustar el numero de leds  (88 en nuestro ejemplo) que  tengamos en la instalación  así como la velocidad máxima (500000).

#define NUM_LEDS 88 // Max LED count
#define LED_PIN 11 // arduino output pin - probably not required for WS2801
#define GROUND_PIN 10 // probably not required for WS2801
#define BRIGHTNESS 255 // maximum brightness
#define SPEED 500000 // virtual serial port speed, must be the same in boblight_config

Ahora ya podemos   compilar el software ( botón primero que  pone un v de verificar). 

adalight.PNG

 Si no ha habido errores ahora podemos subir  el sw pulsando el botón de Upload (flechita a la derecha  en el software de Arduino.

Al contrario de lo que sucede  con el sketch LedlIght donde se iluminan las luces  de 3 colores rojo, verde y azul si todo ha ido bien, si tenemos conectadas los leds al arduino y a la fuente externa, cuando carguemos este  código dentro del Arduino solo lucirá el primer led de la cadena lo cual significará que estamos en buen camino.

IMG_20170221_170329.jpg

 El código dentro de Arduino es no volátil, así que no se borrará aunque desconecte la tarjeta.

Una vez tengamos todo el sw , prepararemos las tiras cortándolas a la longitud que necesitemos y soldando los 4 hilos de cada tira con la siguiente manteniendo el orden correcto de pines, así como manteniendo el sentido de la flecha de las tiras.

Si todo ha ido bien , es momento de trasladar el montaje a su ubicación final.

 Software en el PC

Una vez tenemos el sw de Adalight en un Arduino, nos toca instalar el programa de captura que envíe las señales correspondiente a nuestra placa Arduino y con ello manejar las tiras de leds.

Entre los programas de captura ambibox es el mejor especialmente con windows 10 o Windows 11, ya que no solo tiene la capacidad para capturar su escritorio sino de poner un fondo personalizable, convertir la tira en luces psicodélicas en función del audio, fondo variable automático ,plugins, etc.

NOTA: El sitio oficial para descargar lleva meses caído, así que otros sitios alternativos puede ser este https://software.informer.com/search/AmbiBox%202.1/

 Una vez   descargado, durante la instalación se puede seleccionar  la opción de instalación completa , marcando además la opción de descarga e instalación de playclaw.

Empezamos la configuración, pulsamos sobre el botón de mas ajustes:

more

En la parte inferior, como vemos seleccionaremos como Device  Adalight , elegiremos  el puerto de comunicaciones (el mismo al que este conectado el Arduino) y en el numero de zonas, colocaremos  el numero de leds total que tengamos instalados (en el ejemplo 88).

Asimismo no olvidar el orden de colores, lo cual podemos obtener   fijando un color mediante el selector de Mode: Static Background, pinchando en el color ( aparecerá la paleta), pinchando en el check de Use backlight   y seleccionando en el combo order of colors la opción adecuada   hasta que el color de los leds sea similar al de la paleta (en mi caso es BGR). 

fondo.PNG

En la siguiente imagen podemos ver el aspecto de las primeras pruebas con el color marron.

IMG_20170221_204134.jpg

OJO: !ES IMPORTANTE DESTACAR QUE LOS LEDS DE LAS TIRAS NO SE ENCENDERAN EN NINGUN MODO A NO SER QUE ACTIVEMOS EL CHECK «USE BACKLIGHT»!

En este programa no olvidar  en salvar cada cambio en «Save Setting»  pues si no lo hacemos perderemos cualquier cambio que hagamos.

Con las nuevas opciones ya podemos avanzar en la  configuración de nuestra instalación para lo cual seleccionaremos en Mode: Screen capture.

 capturawindiow.PNG
Acto seguido configuramos la ubicación de los leds, pulsando  sobre SHOW AREAS OF CAPTURE y sobre el asistente de configuración, elegimos si queremos una instalación de 3 lados o 4. También  es importante la cantidad de leds que tenemos en cada lado de la TV especialmente horizontal o verticalmente.
Marcamos asimismo el orden de los leds, de izq->der o de der->izq.
Con esto ultimo ya tenemos nuestro software listo para funcionar.

2017-02-21_20h59_23.png.
Este programa además tiene unas opciones muy interesantes, en esta pantalla:

adicional.png

Podemos configurar muchos parámetros de cada led, aplicar correcciones de color y gama ,brillo, etc.

También podemos activar un servidor web para controlar el software desde el teléfono.

servidor

 El siguiente paso es instalar el add-on para el XBMC.Para ello lo descomprimimos y lo ponemos  en la ruta:»Users/Username/AppData/Roaming/XBMC/addons«. Ahora en el  apartado de add-on (en el  menú de la izquierda) se puede configurar un poco el comportamiento, aquí cada cual que lo puede personalizar a su gusto. Una solución para que funcione a pantalla completa es usando el software playclaw.Para ello, se pueden  es crear 2 perfiles dentro de ambibox, uno para el escritorio y otro para XBMC. En este ultimo el sistema de captura que elijo es playclaw de modo que cuando se inicie un video en XBMC  dará la opción de elegir que perfil cargar, de modo que se  puede  elegir el perfil XBMC y asi  cuando se  salga de XBMC se  puede vplber   al perfil de escritorio.
Por supuesto se debe tener corriendo el software playclaw para que esto funcione.

 Por ultimo  hay  un  modo  que haya las delicias de los que les guste la música : el modo Color music , el cual permite modular las luces en función  de lo que se este escuchando por el canal de sonido principal. 

musica.PNG

 Obviamente, si queremos que las luces acompañen a la imagen de video de la pantalla principal el modo de captura de pantalla elegido será  [Software] Screen capture  y el Método  Windows 8  (aunque tengamos Windows 10 instalado en nuestro equipo).

windows8.png

Como nota final, destacar que existen otras opciones de tiras de leds basados en otros chips siendo el funcionamiento muy similar. Lo importante en caso de usar otras tiras es que el sw que corramos en nuestro Arduino sea Adalight adaptado a la tira. Por ejemplo si usamos una tira basada en el chip WS2811 deberemos comentar la parte de ws2811 y descomentar la parte del ws2801:

  pinMode(GROUND_PIN, OUTPUT);
  digitalWrite(GROUND_PIN, LOW);
  FastLED.addLeds<WS2811, LED_PIN, BRG>(leds, NUM_LEDS);
 // FastLED.addLeds<WS2801, 11, 13, RGB>(leds, NUM_LEDS);   //sd al pin 11 y ck al pin