Dic 22

Hello World. Hello FPGA – Parte I: Toma de contacto con FPGAs

Las FPGAs aparecieron a mediados de los 80 [Trimberger2015] y desde entonces desarrollan un papel relevante en la industria de los semiconductores, junto con microprocesadores, procesadores gráficos y circuitos específicos ASIC. Yo las descubrí en 1996 y no he conseguido desengancharme. Con esta entrada pretendo hacer una introducción a estos dispositivos; tan solo unas pinceladas que sirvan como primera toma de contacto con esta tecnología.

¿Qué es una FPGA?

Los dispositivos FPGA (Field-programmable gate arrays) son circuitos integrados que permiten implementar circuitos digitales. La capacidad de estos dispositivos varía desde cientos de puertas lógicas hasta millones. El diseñador puede configurar la funcionalidad de cientos/millones de bloques lógicos (por ello lo de gate array) así como su interconexión, y esta configuración se puede hacer después de haber fabricado el chip (por ello lo de field-programmable: programable in situ).

Podemos decir que la FPGA está compuesta por una red de memorias que albergan escasos bits. Estas memorias se denominan LUTs (look-up table: tabla de consulta) y permiten implementar funciones lógicas.

Veamos un ejemplo. En la figura se ve una puerta AND con la tabla de verdad que relaciona  sus entradas (a y b) con su salida (c).

Figura. Puerta AND y su tabla de verdad

Las señales a y b son las entradas a la puerta y la señal de salida es c. Se observa como c solamente está activa (‘1’) cuando ambas entradas están a ‘1’.

Otras puertas lógicas de 2 entradas necesitarían tablas similares, es decir, tablas con 4 filas y 3 columnas. De hecho, cualquier función lógica de 2 entradas podría expresarse mediante una tabla del estilo. Estas tablas de verdad son la esencia de las FPGAs, puesto que se implementan directamente como memoria RAM y pasan a ser los bloques lógicos que mencioné antes. De manera que llenando un circuito integrado de pequeñas memorias podemos implementar gran cantidad de funciones lógicas. Nótese que no estoy hablando de usar puertas lógicas, sino memorias. De hecho, y siento ponerme pesado, las puertas lógicas o la combinación de varias puertas se implementan en una FPGA con una memoria. La matriz de puertas (gate array) que forma parte del nombre de las FPGAs es en realidad una matriz de memorias (¿memory array?). De hecho el nombre que utilizaron para la primera FPGA, el dispositivo XC2064 de Xilinx era “matriz de celdas lógicas” (Logic Cell Array, en inglés), pero luego se implantó el termino FPGA introducido por Actel [Trimberger2015].

La tabla del ejemplo anterior se convertiría en la siguiente memoria de 4 bits:

Tabla: Interpretación de la tabla de verdad como una memoria

Las señales a y b concatenadas pasan a ser el bus de direcciones y la señal c es el bus de datos. Si a y b valen 1, realmente lo que ocurren es que se leería la posición de la memoria que ocpua la posición 3 (112=3 – leer entrada sobre binario). Ahora tan solo (es un decir) nos quedaría idear un método para poder escribir en muchas LUTs – para disponer de muchas funciones lógicas-, además de disponer de canales de rutado que nos permitieran interconectar dichas LUTs, y también, idear un método para configurar las conectividad de dichos canales. Ahí es ná.

En la figura aparece un esquema de la arquitectura de una FPGA. Los bloques lógicos contienen la funcionalidad y procesan señales que provienen del exterior (señales de entrada y salida (E/S)) o de otros bloques lógicos. Las señales E/S están conectadas a las patillas o pines del chip. Los bloques lógicos producen señales binarias que se conectan a otros bloques lógicos o a las señales de salida. Los canales de rutado se configuran para que se produzca la interconexión entre bloques lógicos y señales de E/S. Obviamos los detalles con la intención únicamente de introducir la tecnología.

Figura: Esquema de arquitectura interna de FPGA (modificación de https://commons.wikimedia.org/wiki/File:Fpga_structure.svg  )

Hay que destacar que el bloque lógico además de la LUT dispone de otros elementos lógicos básicos como puertas lógicas, multiplexores y de un biestable de tipo flip-flop (memoria de un bit), que ya veremos en próximas entradas en las que revisaré la arquitectura de varias FPGAs. Comentar que las FPGAs tienen LUTs con entre 4 y 6 entradas (la LUT de dos entradas era sólo un ejemplo con el que comenzar) dando lugar a funciones lógicas de entre 4 y 6 entradas. Con esto vemos que la FPGA puede implementar circuitos tanto combinacionales como secuenciales -debido a los flip-flops – y, en general, de gran capacidad.

Afortunadamente, el paso de las ecuaciones lógicas a la distribución entre bloques lógicos y su interconexión la realiza una herramienta de ayuda al diseño electrónico, o herramienta EDA (Electronic Design Automation).

Como veis, el proceso difiere bastante del desarrollo software. Para simplificar, algunos fabricantes (como Altera Inc.) utilizan el termino compilación para englobar las fases necesarias para ir de la idea (esquema lógico) a la implementación (FPGA configurada). La diferencia principal es que el tiempo de compilación puede llevar entre varios minutos y varias horas, incluso para diseños relativamente sencillos. El motivo es que hay que tomar muchas más decisiones que las que toma un compilador software.

Un tema espinoso es que la configuración de la FPGA se denomina programación y esto puede dar pie a confusión. Se utiliza programación de igual manera que a la escritura de los datos en una memoria PROM (programable read-only memory: memoria programable de sólo lectura). Esto tiene sentido en el caso de la PROM puesto que lo que se suele almacenar en estas memorias es un programa. Sin embargo, lo que almacenamos en la FPGA es la información lógica de las LUTs y los bits que configuran la interconexión. Yo prefiero decir que las FPGAs se configuran en lugar de que se programan para evitar que se asocie a sistemas software.

En la siguiente figura se ve cómo se distribuyen las LUTs en una FPGA concreta de la familia Cyclone IV de Altera. Cómo se observa, hay un gran número de memorias LUT.  Por ejemplo, dispositivos de la familia Virtex-6 de Xilinx tienen entre 46,000 y 354,000 LUTs. Con esta cantidad de LUTs se pueden hacer muchas cositas.

Figura. Esquema de la distribución de LUTs en dispositivo de la Familia Cyclone IV de Intel FPGA (Altera)

Microprocesador, ASIC y FPGA

Veamos brevemente la diferencia entre estos circuitos integrados:

  • Microprocesador: Circuito integrado que implementa una CPU y los bloques hardware necesarios para la transferencia de datos con la memoria y con los periféricos. Se diseñan para dar soporte a gran cantidad de aplicaciones, por lo que son circuitos costosos y consumen gran cantidad de potencia eléctrica. El punto fuerte del microprocesador es precisamente el hecho de que puedan ejecutar gran cantidad de aplicaciones de forma bastante eficiente. Hay que considerar que los errores en el diseño del microprocesador no se pueden corregir a posteriori al no poderse modificar la estructura del circuito integrado.

Esto último tiene su importancia (mucha). Recordemos el fallo en la división del microprocesador Pentium de Intel descubierto por el profesor Thomas Nicely en 1995 [Cipra1995]. Se “solucionaba” con un parche software que ejecutaba la operación muy lento al ser una emulación software. O más recientemente, las vulnerabilidades tipo Spectre  que afectan a microprocesadores de Intel, IBM y ARM, que de nuevo se solucionan reduciendo el rendimiento del sistema. Todo porque el fallo es hardware y no puede modificarse.

Podríamos decir que el microprocesador realiza continuamente tres tareas básicas:

  1. Lee una instrucción de una memoria (que contiene el programa)
  2. Interpreta la operación
  3. Ejecuta la operación (probablemente leyendo datos de memoria y escribiendo los resultados en memoria)

Tras ejecutar la tarea 3, vuelve a comenzar leyendo la siguiente instrucción (que suele estar en la posición siguiente con respecto a la anterior instrucción leída). El programador trabaja modifica el programa que está en la memoria para realizar cambios en la aplicación. Le es imposible modificar el hardware.

  • ASIC: Estas siglas provienen de Application-Specific Integrated Circuits, es decir, circuito integrado de aplicación específica. Es un circuito integrado que implementa un circuito que ha sido optimizado para una tarea concreta. Está en las antípodas del microprocesador. Al disponer de una arquitectura optimizada se puede optar por reducir al máximo los recursos (número de transistores y consumo de potencia eléctrica) o bien maximizar su potencia de cálculo (sin miramiento en el número de transistores). De nuevo, cualquier fallo en el diseño hardware es fatal suponiendo grandes pérdidas de dinero. Un ejemplo claro de ASIC sería circuitos que implementan procesamiento intensivo en tiempo real: Wi-fi, reconocimiento de imágenes, etc.
  • FPGA: La FPGA es similar al ASIC puesto que permite implementar circuitos optimizados para tareas específicas. La gran ventaja es que si se detectan errores una vez ha salido el producto al mercado, es posible corregirlos, de forma muy similar a como se actualiza el firmware de muchos equipos. En este caso, lo que se modifica es la secuencia de configuración de la FPGA que ésta carga siempre tras el arranque. La pega que tienen estos dispositivos es que el coste a pagar para conseguir la capacidad de reconfiguración es que se utilizan muchos recursos. La FPGA es más lenta que el ASIC y consume más que este. Para determinadas aplicaciones, es mucho más rápida que un microprocesador y consume mucho menos.

Si nos fijamos en la velocidad de los relojes que consiguen las FPGAs, hace una década rondaban los 200 MHz y en la actualidad rondan los 400 MHz (los fabricantes os dirán que es mucho más; es fácil hablar, lo difícil es diseñar sistemas). Con estas velocidades de reloj podríamos pensar que una FPGA no puede competir con una CPU que corre a varios Gigahertzios. La clave está en el paralelismo y en la posibilidad de adecuar de forma óptima (según el arte del diseñador) los diseños a una aplicación específica. Supongamos un reloj de 200 Mhz y una aplicación que debe realizar 10 multiplicaciones de enteros de 16 bits por cada dato de entrada. Si el algoritmo permite realizar las 10 multiplicaciones en paralelo, y si la FPGA permite que se implementen 10 multiplicadores, se podrán realizar 10x200e6 = 2e9 multiplicaciones por segundo. Pronto os hablaré de algún diseño propio en el que se consigue ir 10000 veces más rápido que un microprocesador i7.

Termino diciendo que cada tecnología tiene su nicho, su punto óptimo. Hay que considerar que la FPGA requiere tiempos de desarrollo altos y que no siempre es posible paralelizar.


Aquí descanso con la intención de continuar la entrada con varias partes. En la siguiente entrada veremos las etapas del flujo de diseño con FPGA a través de un sencillo ejemplo.

Mientras tanto os dejo algunos enlaces de interés:

“FPGA for Dummies”: https://plan.seek.intel.com/PSG_WW_NC_LPCD_FR_2018_FPGAforDummiesbook

Intel FPGAs: https://www.intel.com/content/www/us/en/products/programmable/fpga.html

Xilinx: https://www.xilinx.com/products/silicon-devices/fpga.html

Lattice: https://www.latticesemi.com/Products#_D5A173024E414501B36997F26E842A31

 

Referencias

[Trimberger2015] “Three Ages of FPGAs: A Retrospective on the First Thirty Years of FPGA Technology”, Proceedings of the IEEE, 2015

[Cipra1995] “How Number Theory Got the Best of the Pentium Chip “, Barry Cipra, Science, 1995 [pdf]

 

 

Nov 30

Torres Quevedo y el primer ordenador de la historia

Estoy en plena fase de lectura intensiva sobre las invenciones de Leonardo Torres Quevedo, y, aunque sea algo prematuro, me gustaría ir compartiendo mis hallazgos, sobre todo los relacionados con el mundo de la computación. Por otra parte, soy español y me paso la vida hablando de pioneros de la electrónica y la informática nacidos o que desarrollan su actividad en EE.UU., Japón, etc., y creo que no está mal de vez en cuando mirar qué sale de mi propia tierra. Sin ánimo de quitar mérito a nadie, hay una clara americanización de la historia de la computación, y para determinados temas hay que hacer el esfuerzo de ir a buscar la información y no que sea ella la que te encuentre.

El motivo por el que empiezo esta búsqueda es mi interés en una faceta de la computación que el público/usuario general asume de forma errónea: los ordenadores (léase sistemas digitales) cometen errores matemáticos en sus cálculos. El problema fundamental es que el número de dígitos que utiliza un ordenador para almacenar un número es finito, por lo que no todos los valores numéricos pueden representarse de forma correcta, y esto hace que los resultados de las operaciones conlleven errores, que a su vez se propagan si éstos son usados por otras operaciones. Y es aquí donde enlazo con Torres Quevedo, puesto que leí en algún sitio que fue pionero al proponer a principios de siglo XX uno de los formatos aritméticos más utilizado por los ordenadores hoy en día. “Pero esa es otra historia y será contada en otra ocasión”, no muy lejana.

El hecho en el que me centro esta vez es impresionante: Torres Quevedo implementó el que es muy probable que sea el primer ordenador de la historia.

Mi búsqueda en las bases de datos del IEEE y la ACM arroja pocos artículos: [Randell82][Yuste2005][Yuste2008]… Hay varios libros en español sobre el tema, algunos descatalogados y otros que no profundizan demasiado o que tienen información incompleta. El propio Randell trata los inventos digitales de Torres Quevedo en su libro “Origins of Digital Computers” (Springer, 1982), pero no he tenido la oportunidad de leerlo. Destaca el libro de Alfonso Hernando González el cual, como comento más abajo, está disponible online. El artículo de Randel [Randell82] me ha servido para andar este camino, además de los trabajos de Hernando [Hernando1991] y los artículos de Yuste y compañía.

Comencemos:

Leonardo Torres Quevedo nació el 28 de diciembre de 1852 en Santa Cruz (Cantabria, España). Estudió Ingeniería de Caminos, Canales y Puertos y su carrera profesional estuvo plagada de logros. Trabajó en diversas disciplinas tales como la aeronáutica, la automática, las telecomunicaciones y la mecánica. Sus inventos van desde las máquinas de cálculo analógicas, pasando por sistemas de control remoto por radio, hasta el diseño y fabricación de aviones semi-rígidos que se utilizaron en la primera guerra mundial. Su “Spanish Aero Car” aún sigue en funcionamiento en las cataratas del Niagara. Y también fue muy prolífico en el diseño de dispositivos de cálculo y en el de autómatas.

File:El eminente sabio español Leonardo Torres Quevedo, de Franzen.jpg

El eminente sabio español Leonardo Torres Quevedo (wikipedia)

Es famoso su Ajedrecista, el cual se considera el primer autómata de ajedrez, que realizaba el final de rey con torre contra rey, jugando – y ganando—contra un oponente humano. Se puede consultar su diseño en la publicación Le Nature de 1914 [Vigneron1914].

File:El Ajedrecista de Leonardo Torres Quevedo 02.jpg

El Ajedrecista de Leonardo Torres Quevedo (wikipedia)

Una de sus principales motivaciones era explorar las posibilidades que ofrecían las técnicas electromecánicas  y poner a prueba los límites de las máquinas. En su trabajo Ensayos sobre automática [Torres1914] nos habla de la obra de Babbage, el cual propuso por primera vez la construcción de máquinas capaces, no solo de realizar operaciones matemáticas, sino de ejecutar un programa. La máquina analítica de Babbage fue concebida para ser puramente mecánica, permitía almacenar datos (lo que serían los registros de la CPU), disponía de operadores aritméticos, tal como la suma, multiplicación y división (el equivalente a la unidad aritmético lógica (ALU)) y sus programas permitían bucles y toma de decisiones (saltos condicionales). En este último apartado, el de la programación, destacó Ada Lovelace como la primera programadora de la historia, porque, aunque ni Babbage ni ella llegaron a ver la máquina construida, escribió los primeros algoritmos que podía ser ejecutados por una máquina motivada por los escritos de Babbage. La máquina analítica nunca llegó a construirse y Torres Quevedo parte de ella para realizar una implementación electromecánica funcional. En este escrito se enfrenta al diseño de una máquina capaz de realizar la operación ax(y-z)2 para unos valores de entrada de las variables. La máquina disponía de los mismos bloques que la máquina de Babbage, pero adaptados a la tecnología electromecánica del momento: bloque bloque aritmético (ALU), bloque de almacenamiento temporal (registros) y programa de solo lectura (ROM) que permitía realizar saltos condicionales.

Automáta para el cálculo de ax(y-z)^2 (“Ensayos sobre automática” 1914)

Tras este esfuerzo intelectual, construye varios prototipos y es en 1920 cuando presenta en París el Aritmometro. Esta invención, permitía escribir qué operación aritmética se quería realizar mediante una máquina de escribir y la máquina ejecutaba un programa acorde a la operación elegida. Internamente disponía de un programa de solo lectura que controlaba los operadores aritméticos, la memoria temporal, etc. En definitiva un ordenador que ejecutaba un programa que estaba almacenada en un tambor. Para cambiar el programa era necesario construir un nuevo tambor e introducirlo en la máquina [Hernando1991]. De ahí a las tarjetas perforadas  había un paso.

Hay que resaltar que Torres Quevedo no estaba considerando el uso de grandes memorias de almacenamiento, lo que sería la RAM, si no tan solo, el almacenamiento de valores temporales o de resultados finales de las operaciones – más en la línea de lo que son los registros de la CPU. Es probable, que la complejidad de almacenar y direccionar grandes cantidades de datos estuviese fuera del alcance de la tecnología de la época.

En [Hernando1991] se indica que la obra Ensayos sobre automática es “uno de los textos cumbres de la historia de la informática”. Hernando resalta que Torres Quevedo destaca la importancia de las máquinas digitales, que permiten controlar sistemas reaccionando a las condiciones del entorno o de los propios datos calculados. Claramente un comentario visionario. También  propone la creación de una rama específica de estudio llamada Automática, la cual, de haberse desarrollado en ese momento, habría adelantado en el tiempo  facetas de la electrónica y la informática que tardaron en aprecer varias décadas. También, el inventor hace énfasis en que los autómatas no sólo deben centrarse en realizar cálculos matemáticos de forma automática, sino que debían abordar cualquier tipo de problema, de nuevo adelantándose a las propuestas de Turing y Von Neumann. Hernando realizó su Tesis Doctoral sobre la obra de Torres Quevedo y ha puesto a disposición su libro del año 2000 basado en la misma en su blog.

Sin embargo, parece ser que el impacto de las teorías e inventos sobre computación ha sido nulo en el desarrollo de la informática, debido a su falta de difusión [Hernando1991]. De no haber sido así, la historia de la informática habría seguido otros derroteros, apareciendo el ordenador mucho antes. Los logros de Leonardo Torres Quevedo son anteriores a Turing (que nació en 1912) y varias décadas anteriores a los ordenadores de los 40 en los que se basó la informática moderna.

Con esta entrada tan solo quería difundir la relación de Torres Quevedo con la historia de la informática sin entrar en detalles sobre el funcionamiento de sus inventos. Espero disponer de tiempo para poder analizar los diseños de este gran científico e inventor y poder contarlos con detalle en el futuro.

Enlaces de interés

The Babbage Engine, Computer History Museum (consultado 30/11/2018)

Biografía de Leonardo Torres Quevedo, ITEFI-CSIC (consultado 30/11/2018)

Actas del Simposio “Leonardo Torres Quevedo: su vida, su tiempo, su obra”, 1987, 1991 y 1995 (consultado 30/11/2018)

Blog de Alfonso Hernando González (consultado 30/11/2018)

Referencias

[Randell1982] “From Analytical Engine to Electronic Digital Computer: The Contributions of Ledgate, Torres, and Bush”, Brian Randell, Annals of the History of Computing, IEEE, 1982

[Vigneron1914] «Les automates», H. vigneron Le Nature, 1914 (El ajedrecista)

[Torres1914] “Ensayos sobre Automática. Su definición. Extensión teórica”, L. Torres  Quevedo, Revista de la Real Academia de las Ciencias, 1914 [PDF]

[Hernando1991] “Torres Quevedo como precursor de la informática moderna”, A. Hernando González, Actas del Simposio Leonardo Torres Quevedo: su vida, su tiempo, su obra, 1991 [PDF]

[Yuste2005] “Scanning Our Past from Madrid: Leonardo Torres Quevedo”, A.P. Yuste, M.S. Palma, Proceedings IEEE, 2005

[Yuste2008] “Early Developments of Wireless Remote Control: The Telekino of Torres-Quevedo”, A.P. Yuste, Proceedings IEEE, 2008

Nov 21

Total recall: “6502: semilla de la revolución digital” (2017)

El microprocesador 6502 era magia hecha de bits. Los creadores de este microchip son verdaderos héroes digitales que consiguieron lo imposible: crear un microprocesador de bajo coste en 1975 que moldeó la industria de la electrónica. Este dispositivo se usó en máquinas legendarias: Atari VCS 2600, Apple II, Commodore 64, Nintendo Famicon, etc. Un GIF animado vale más que mil palabras:

(a veces la animación falla, prueba aquí)

En 2017 impartí dos charlas sobre este tema. Primero, en abril de 2017, tuve la oportunidad de homenajear a este pequeño y maravilloso micro con una presentación que hice en el evento de computación clásica RetroMadrid. Posteriormente, extendí un poco la charla y la impartí como parte del evento de divulgación científica organizado por la Comunidad de Madrid, (Semana de la Ciencia 2017, noviembre de 2017). Disfruté enormemente el proceso de conectar los numerosos puntos que perfilan una historia fascinante y única. También, recibí gran cantidad de comentarios interesantes de la audiencia, a la que estoy muy agradecido. Por cierto, la segunda charla tiene un final alternatico… en varios sentidos.

Los contenidos de la charla son:

  • Repaso corto (y bastante informal) de circuitos digitales y circuitos integrados
  • Chuck Peddle y Motorola: ¿Competimos con Intel?
  • Chuck Peddle y MOS Technology: ¿Construimos un microprocesador de bajo coste?
    • El equipo del 650x
    • Diseño del chipset 650x
    • Vendiendo el micro
    • Motorola ataca de nuevo
  • 6502 y Commodore
  • 6502 y… Commodores, Atari, Apple, ARM, Nintendo, etc., etc.
  • El 6502 hoy en día
    • Libros, microchips y kits
    • FPGAs
    • Visual6502
    • 6502 y la Neurociencia
  • El público se vuelve loco

Tengo que destacar que mis charlas están basadas en libros y documentos en los que hay información que posteriormente he comprobado que no era totalmente objetiva, así que la historia que cuento tiene ciertas imprecisiones que deberían ser investigadas en más detalle. Espero tener tiempo para poder hacerlo.  Desde que me di cuenta de esto, intento ser cuidadoso con las fuentes que uso y siempre intento desarrollar mi propia versión de la historia, dejando claro qué son hechos y qué es una opinión (mía o de otra persona).  [Este tema lo desarrollo un poco en mi charla sobre la invención del microprocesador]

Resumientdo, no importa si eres un nostálgico de Zilog, Motorola, Texas Instruments, etc., la historia del 6502 debe ser contada, porque este microprocesador es un elemento esencial para comprender la creación del PC y el nacimiento de la industria del videojuego.

A destacar:

  • El proceso microelectrónico era manual. Era necesario dibujar a mano las diferentes capas del microchip. Esto también ocurrió así en el desarrollo del Intel 4004.
  • Un tipo llamado Steve Wozniak compró varios chips de la primera tanda de 6502 que se vendió y construyó  el ordenador Apple I.  Este microprocesador hizo posible construir ordenador a un precio asequible.
  • Dos de los tres ordenadores personales más vendidos, lo cuales animaron a IBM a entrar en el negocio del ordenador personal, tenían como cerebros el 6502:  Apple II (6502), Commodore PET (6502) y Tandy TRS-80 (Z80).
  • La creación del 6502 y el hecho de que una compañía mediana (Western Design Center) fuese capaz de diseñar y fabricar microchips sirvió de inspiración para que ingenieros de Acorn desarrollasen sus propios microprocesadores, con el resultado de que años más tarde nació ARM.

 

Referencias

6502.org: Página sobre el 6502 con gran cantidad de información.
The Visual 6502 project: ¿Queréis ver la actividad de los transistores mientras se ejecuta código en ensamblador? Este es el sitio adecuado.
Apple][ history website: El sitio de referencia para aprender sobre el Apple ][
Commodore: a company on the edge: Fantástico libro sobre los primeros pasos en el mundo de la informática de Commodore Bussiness Machines. Se describe de forma sublime la creación del chip 6502.

Charlas

  • El microprocesador 6502 y su impacto en la revolución digital (Spanish), RetroMadrid 2017, [slides]
  • Historia del microprocesador 6502: semilla del PC y de la industria de los videojuegos (Spanish), Semana de la Ciencia 2017 [slides (with alternative ending 🙂 )]

Oct 16

Sinistar: el arcade de la eterna juventud

No hay nada como encontrar un ejemplo divertido (esto siempre es cuestionable) para apoyarse a la hora explicar uno de tantos áridos conceptos que pueblan la electrónica digital, la computación y el procesamiento de señal. Hace tiempo me topé con un vídeo fantástico publicado por la revista IEEE Spectrum (Five Infamous Arcade-Game Glitches), en el que hablaban de fallos de programación (glitches) en juegos de máquinas recreativas: Asteroids (Atari), Donkey Kong (Nintendo), Sinistar (Williams Electronics), Ms. Pacman (Midway) y Centipede (Atari) .

Me llamó la atención el glitch del juego Sinistar, que me venía de perlas para explicar la aritmética en complemento a 2, fundamental en el mundo de los sistemas digitales. En este juego existía la posibilidad de pasar de tener 1 única vida a disponer de 255. Todo esto debido a un despiste de programación y al funcionamiento de la aritmética binaria (en este caso de 8 bits). Por cierto, matizar que lo que voy a contar es bastante simple, pero divertido.

Primero os explico muy por encima un par de conceptos sobre binario que si ya tenéis experiencia podéis ir directos al meollo pulsando aquí.

Continue reading

Ago 28

(RetroMadrid2018) Pioneros de los 4 y 8 bits: la creación del microprocesador [la charla que no pude dar]

Os presento un vídeo de una charla que pretendía dar en RetroMadrid 2018, pero que por problemas de salud me fue imposible impartir. En la charla cubro los siguientes puntos:

  • Recordando RetroMadrid 2017.
  • Origen del 4004 de Intel.
    • A destacar: El papel de Japón en la creación del primer microprocesador comercial en un chip.
    • A destacar: Dos genios en acción: Masatoshi Shima y Federico Faggin.
  • ¿Fue el 4004  de Intel el primer microprocesador? Revisaremos la definición de microprocesador y diseños contemporáneos al 4004.
    • A destacar: En mi opinión personal hubo otros microprocesadores anteriores al 4004.
  • Texas Instruments: un secreto con 45 años de edad.
  • Relación de Intel con: Zilog, Motorola, MOS Technology, ARM, etc.
  • Me gusta Star Wars, no lo niego 🙂

 

Nos encontramos ante una historia apasionante en la que nada es simple y en la que el ingenio y la suerte juegan papeles cruciales en su desarrollo.

Os propongo 2 3 posibles  planes:

  1. Véis la charla y luego – tiene que ser después para evitar spoilers – leéis el magnifico y riguroso artículo de Cristina Sánchez sobre Federico Faggin (eldiario.es/Hoja de router) https://www.eldiario.es/hojaderouter/tecnologia/hardware/primer-microprocesador-Intel-sentir-valioso_0_794070590.html
  2. Si no os apetece ver el vídeo podéis mirar este gif animado a ver si sois capaces de sacar algo en claro 😛 3. (Actualizado 24/10/2018) Leéis las transparencias de la charla.

En la charla me quejo de la desinformación de Internet y de la falta de rigor que incluso afecta a medios de prestigio. Sin embargo, quiero dejar claro que mi propia charla esta sesgada por mis propios prejuicios y por falta de tiempo – puesto que esta actividad la desarrollo al margen de mi actividad profesional. En todo caso, estoy convencido de que esta presentación es un buen punto de partida para aquel que quiera indagar más sobre el tema. Huelga decir que en la charla hay datos claramente objetivos y otros que son opiniones personales (como por ejemplo, cuestionar la definición de microprocesador).

He revisado muchos documentos. A continuación os pongo algunos por si queréis extender o contrastar lo que os cuento. Algunos documentos son privados, pero es posible que estén disponibles en la web…

 

Por último, me queda disculparme por la baja calidad del audio. El próximo vídeo lo haré mejor (espero).

 

Bitnami