Mostrando entradas con la etiqueta Operating. Mostrar todas las entradas
Mostrando entradas con la etiqueta Operating. Mostrar todas las entradas

sábado, 5 de enero de 2019

Open Source Hardware o la revolución del cómputo

-"Todo lo que se toca, el CPU, el Teclado y el Monitor, son el Hardware, mientras que todo lo que se ejectuta dentro del CPU (Sistema Operativo, Programas, etc.) y que no se toca, es el Software."-

Así me explicó un maestro de computación hace ya algunas décadas, cuando comencé mis primeros pasos ya formales en la Informática, Sistemas, Cómputo o Tecnologías de la Información (como ahora se les dice).

Quienes me siguen en Redes Sociales y me leen a través de mis Blogs, saben que todo lo que tenga que ver con Código Abierto (Open Source), Linux y Virtualización, simplemente me parece maravilloso y me enloquece. Pero de un par de meses o serán tres, a la fecha, me ha sorprendido gratamente esto que ahora se ha dado en llamar como "Open Source Hardware".

Haciendo un poco de historia, muy al principio los procesadores fueron creados bajo la arquitectura Minimal Instruction Set Computer o MISC por sus siglas en inglés. Es una arquitectura de procesador con un número muy pequeño de operaciones básicas y códigos de operación correspondientes. Dichos conjuntos de instrucciones generalmente se basan en la pila o "STACK" en lugar de en el registro, para reducir el tamaño de los especificadores de operandos.

Tal arquitectura de máquina es intrínsecamente más sencilla, ya que todas las instrucciones operan en las "entradas de pila" más altas.

A modo de referencia, las computadoras de abordo en las cápsulas de los proyectos Mercury, Gemini y Apollo de la NASA, estas últimas que llevaron al hombre a la luna, utilizaban la arquitectura MISC.

Posteriormente y con la popularización de cómputo en los años setenta-ochenta, nace la arquitectura CISC o Complex Instruction Set Computing. Los microprocesadores CISC tienen un conjunto de instrucciones que se caracteriza por ser muy amplio y permitir operaciones complejas entre operandos situados en la memoria o en los registros internos.

Este tipo de arquitectura dificulta el paralelismo entre instrucciones, por lo que, en la actualidad, la mayoría de los sistemas CISC de alto rendimiento implementan un sistema que convierte dichas instrucciones complejas en varias instrucciones simples, llamadas generalmente microinstrucciones.

Ejemplos de procesadores CISC son: Motorola 68000, Zilog Z80 y toda la familia Intel x86, AMD x86-64 usada en la mayoría de las computadoras personales y servidores actuales.

Por último y no menos importante, la arquitectura RISC o Reduced Instruction Set Computing es un tipo de diseño de CPU generalmente utilizado en microprocesadores o microcontroladores con las siguientes características fundamentales:​

  1. Instrucciones de tamaño fijo y presentadas en un reducido número de formatos.
  2. Solo las instrucciones de carga y almacenamiento acceden a la memoria de datos.

Además estos procesadores suelen disponer de muchos registros de propósito general.

El objetivo de diseñar máquinas con esta arquitectura es posibilitar la segmentación y el paralelismo en la ejecución de instrucciones y reducir los accesos a memoria. Las máquinas RISC protagonizan la tendencia actual de construcción de microprocesadores. IBM PowerPC,​ DEC Alpha, MIPS, ARM, SPARC son ejemplos de algunos de ellos.

RISC es una filosofía de diseño de CPU para computadora que está a favor de conjuntos de instrucciones pequeñas y simples que toman menor tiempo para ejecutarse. La idea fue inspirada por el hecho de que muchas de las características que eran incluidas en los diseños tradicionales de CPU para aumentar la velocidad estaban siendo ignoradas por los programas que eran ejecutados en ellas.

Además, la velocidad del procesador en relación con la memoria de la computadora que accedía era cada vez más alta. Esto conllevó la aparición de numerosas técnicas para reducir el procesamiento dentro del CPU, así como de reducir el número total de accesos a memoria.

Y todo esto, ¿para qué? En muchos y muy diversos canales de YouTube, así como en cuentas de los más importantes exponentes y empresas de artículos de Electrónica de Consumo, Cómputo y Tecnologías de la Información en general, circulan noticias de cómo ha evolucionado y renovado la arquitectura RISC, no solo aplicada a los Dispositivos Personales Móviles (antes conocidos como "smartphones") sino que ahora tabletas, lap-tops y algunos micro sistemas de escritorio incluyen RISC en vez de CISC como la arquitectura de su preferencia.

Por su muy bajo consumo eléctrico, por ofrecer capacidades gráficas avanzadas, por permitir disminuir el tamaño de los dispositivos, ahora podemos ver por ejemplo la ARM (y sus derivados) como los reyes, desbancando en ya no pocas ocasiones a Intel y AMD.

Cierto. Si deseas un equipo altamente poderoso para "Gamer" o jugador experto, RISC no es para ti. Pero si lo que deseas es un equipo altamente portátil, muy ligero, con el consumo eléctrico más eficiente, entonces RISC es para ti.

Recientemente se liberó la especificación RISC-V (léase RISC generación cinco): La arquitectura libre y abierta del conjunto de instrucciones RISC.

Nacido en el ámbito académico y de investigación, la arquitectura de conjuntos de instrucciones RISC-V ofrece un nuevo nivel de libertad de software y hardware libre y extensible en la arquitectura, allanando el camino para los próximos 50 años de diseño e innovación de computación.

Cómo será de importante esta arquitectura, que las empresas más grandes de hardware, software y soluciones ya están involucradas en este consorcio como Miembros Platino. A modo de ejemplo podemos mencionar a Google, NVDIA, Qualcomm, Rambus, Samsung y Western Digital entre muchos otros.

Como miembros oro podemos mencionar a Grupo Alibabá, Huawei, IBM, Raspberry Pi, etc.

¿Qué empresas de Software (en el ramo de Sistema Operativo) ya están trabajando con denodada pasión, para poder ejecutarse sobre esta arquitectura? Pues obviamente las distribuciones más importantes de Linux como Suse, Ubuntu y Debian, el Unix de Berkeley Software Distribution, Mac OSX y aunque parezca extraño, el mismo Microsoft ya tiene una versión de Windows 10 para procesadores ARM.

Estamos más que seguros que para el ya inminente Consumer Electronics Show en Las Vegas (del 8 al 11 de Enero de 2019), veremos electrodomésticos, vehículos, equipos de cómputo personal (móvil, de sobremesa o portátil) y dispositivos que entran dentro del esquema de Internet de las Cosas, que incluyen "a la de ya", arquitectura RISC-V en sus procesadores.

¿En conclusión? La carrera de los procesadores ya dejó de ser por encontrar u obtener el que ofrezca más GigaHertz, más memoria caché y/o con más núcleos de procesamiento. Ahora en esta nueva arena el consumidor decidirá cuál es el más versátil y con el consumo de energía más eficiente.

En sus marcas, listos, RISC-V !!!

viernes, 17 de agosto de 2018

Hardware Abierto. Hardware definido por Software

Desde que se hizo presente la Virtualización en nuestras vidas, quienes veníamos de la Informática clásica, esa en la que nos inculcaron que el Hardware era rígido, concreto, tangible y el Software era abstracto e intangible, nos fue algo difícil ver en ese momento el inmenso potencial de una Máquina Virtual.

Ya de por sí el concepto de una Capa de Abstracción generada por un software no nos era extraño. El Firmware en contacto directo con el Hardware; el Sistema Operativo con su "Kernel" y sus "Drivers" como marco de trabajo y cimiento de los Servicios de Sistema, la Interfaz Gráfica y las Aplicaciones (de abajo hacia arriba apilados una capa sobre otra).

Ahora el Hipervisor se adueñaba de el Harware Físico y ponía los recursos a las órdenes de las Máquinas Virtuales, de manera dinámica y bajo demanda. Como en un Comunismo Utópico en el que todo es de todos, con ese dictador benévolo que se llama el Hipervisor otorgando dichos recursos a las Cargas Virtuales.

Todo esto dio por resultado poder tener Centros de Datos Definidos por Software (SDDC por sus siglas en inglés) y permitir que el consumo de recursos informáticos se convierta en una operación más inteligente, escalable, confiable, segura.

De los cuatro recursos físicos: Procesador, Memoria, Red y Almacenamiento, es el primero al que siempre consideramos como ese ente monolítico, inmutable y completamente necesario (indispensable) para la ejecución de lo que sea, desde el punto de vista de la Informática. Éste elemento ya diseñado y construido por un proveedor, permanece así como quedó manufacturado, con todos sus alcances y limitaciones. ¿Pero toda la vida tenía que ser así?

Algunos lectores ya se dieron cuenta por dónde vamos. Sí. Procesadores Definidos por Software. ¿En serio? Sí, ¿por qué no? Y mejor aún, todo ello en modalidad abierta. ¿Código Abierto? No. Hardware Abierto.

¿Asombrado, atónito, no das crédito al párrafo anterior? Es lógico. No se apure amigo lector. No estamos bajo el influjo de una droga o en un universo paralelo. Lo que más le va a asombrar es que todo lo mencionado ya existe.

Algo de Historia: Compuertas Lógicas, Micro Controladores y Procesadores

¿Cómo funcionan las Computadoras? Pregunta típica de un niño en los años setenta. Yo entre ellos. Las respuestas eran algo confusas, pero tras la recomendación de un magnífico libro titulado "Cibernética sin matemáticas" escrito por Henryk Greniewski y publicado por el Fondo de Cultura Económica en el año de 1965.

Me quedó claro que todo se basaba en una aritmética en la que a diferencia de nuestro sistema decimal basado en diez guarismos (0, 1, 2, 3, 4, 5, 6, 7, 8 y 9) que se utilizan para representar cantidades, las computadoras utilizan un sistema binario. Dos guarismos o dígitos (0 y 1) son necesarios para representar cantidades.

Pero el 0 y el 1 también pueden ser utilizados para determinar la veracidad o falsedad de proposiciones lógicas. Conceptos como las Tablas de Verdad y los operadores lógicos del Algebra Booleana. ¿Qué es eso? En 1815 George Boole (matemático y lógico británico) propuso una herramienta matemática llamada Álgebra de Boole. Luego en 1938 Claude Shannon propuso que con esta álgebra es posible modelar los llamados Sistemas Digitales. El Álgebra de Boole es un sistema matemático que utiliza variables y operadores lógicos.

Así pues, ya teníamos algo que, con la manipulación, operación de tan solo dos dígitos, podíamos realizar complejas operaciones que imitaban en mucho al razonamiento humano. Qué decir de la realización de cálculos complejos con precisión y exactitud.

Sin entrar demasiado en teoría, la famosa máquina de Alan Mathison Turing usada para descifrar el cuasi indescifrable Código Enigma de los nacionales socialistas alemanes durante la segunda guerra mundial, utilizaba conmutadores electro-mecánicos para dar forma y contexto a los dígitos binarios "0" y "1". ¿Conmutador abierto (apagado)? CERO. ¿Conmutador cerrado (encendido? UNO.

Perfecto. ¿Prendiendo y apagando algo ya estoy haciendo cómputo? De manera muy básica y "rupestre", sí. Falta revisar los Operadores Lógicos o Booleanos:
  • NOT = Negación
  • AND = Conjunción
  • OR = Disyunción

Aquí anexo las "Tablas de Verdad" de cada uno de estos operadores básicos:

Platiquemos un poco del operador NOT, también conocido como INVERSOR. ¿Por qué inversor? Porque a toda entrada A que puede tener sólo los valores "0" (FALSO) o "1" (VERDADERO), corresponde como salida el valor contrario: 1 o 0 (VERDADERO o FALSO) respectivamente.

En el caso de la Conjunción o AND, aquí necesitamos al menos DOS entradas: "A" y "B". Observe que en la Tabla de Verdad, la única manera en la que el resultado es "1" o "VERDADERO" es cuando el valor de ambas variables "A" y "B" es "1" o "VERDADERO". De otra manera el resultado es "0" o "FALSO".

Por último en el caso de la Disyunción u OR, siempre que exista una entrada en "1" o "VERDADERO", el resultado será "1" o "VERDADERO". De otra forma será "0" o "FALSO".

¿Para qué me sirve esto? A modo de un ejemplo sencillo, imagine que tiene Usted el reto de crear un circuito lógico para un automóvil. Este circuito "inteligente" debe controlar cuándo SÍ se podrá poner en marcha el motor del vehículo y cuando no.

Para este ejemplo, imaginemos que el fabricante solicita que:
  1. El sensor del asiento del conductor "A" debe estar en "1" o "VERDADERO", pues hay alguien sentado en el.
  2. Al mismo tiempo, el cinturón de seguridad "B" deberá estar abrochado ("1").
  3. La palanca de velocidades "C" debe estar en posición "PARKING" o "P" ("1"). Cualquier otra posición de la palanca se considera que está en "FALSO" o "0".
  4. El freno de mano "D" podrá estar accionado ("1") o liberado ("0").

Este sería entonces el diagrama de este circuito lógico resultante:


Los elementos del diagrama "AND1" y los demás semejantes, son lo que se llaman Compuertas Lógicas. Estas se incluyen en Circuitos Integrados que ya no utilizan conmutadores electro-magnéticos, sino transistores.

Estos circuitos integrados, muy al principio denominados TTL (Transistor-Transistor Logic) fueron los que permitieron que el hombre llegara a la luna, que comenzáramos a gozar con juegos de video y que nuestros aparatos electrónicos, vehículos y electro-domésticos tuviesen "inteligencia".

Con un solo circuito integrado TTL 7408 de cuatro compuertas "AND" independientes de dos entradas cada una, es posible implementar el circuito arriba incluido y hasta sobraba una compuerta "AND".

Conforme se fueron haciendo más y más complejas las necesidades relativas al cómputo y a las compuertas lógicas, utilizar las compuertas lógicas ya no era conveniente. Era necesario contar con circuitos integrados más complejos para hacer cálculos y/o para añadir inteligencia a nuestros dispositivos industriales y/o domésticos. Nacen entonces dos nuevos componentes:

Microcontroladores

Un microcontrolador (abreviado μC, UC o MCU) es un circuito integrado programable, capaz de ejecutar las órdenes grabadas en su memoria. Está compuesto de varios bloques funcionales, los cuales cumplen una tarea específica. Un microcontrolador incluye en su interior las tres principales unidades funcionales de una computadora: unidad central de procesamiento, memoria y periféricos de entrada/salida.

Algunos microcontroladores pueden utilizar palabras de cuatro bits y funcionan a velocidad de reloj con frecuencias tan bajas como 4 kHz, con un consumo de baja potencia (mW o microwatts). Por lo general, tendrá la capacidad de mantenerse a la espera de un evento como pulsar un botón o de otra interrupción; así, el consumo de energía durante el estado de reposo (reloj de la CPU y los periféricos de la mayoría) puede ser sólo de nanowatts, lo que hace que muchos de ellos sean muy adecuados para aplicaciones con batería de larga duración. Otros microcontroladores pueden servir para roles de rendimiento crítico, donde sea necesario actuar más como un procesador digital de señal (DSP), con velocidades de reloj y consumo de energía más altos.

Cuando es fabricado el microcontrolador, no contiene datos en la memoria ROM. Para que pueda controlar algún proceso es necesario generar o crear y luego grabar en la EEPROM o equivalente del microcontrolador algún programa, el cual puede ser escrito en lenguaje ensamblador u otro lenguaje para microcontroladores; sin embargo, para que el programa pueda ser grabado en la memoria del microcontrolador, debe ser codificado en sistema numérico hexadecimal que es finalmente el sistema que hace trabajar al microcontrolador cuando éste es alimentado con el voltaje adecuado y asociado a dispositivos analógicos y discretos para su funcionamiento.

Microprocesadores

El microprocesador (o simplemente procesador) es el circuito integrado central más complejo de un sistema informático; a modo de ilustración, se le suele llamar por analogía el «cerebro» de un ordenador.

Es el encargado de ejecutar los programas, desde el sistema operativo hasta las aplicaciones de usuario; sólo ejecuta instrucciones programadas en lenguaje de bajo nivel, realizando operaciones aritméticas y lógicas simples, tales como sumar, restar, multiplicar, dividir, las lógicas binarias y accesos a memoria.

Puede contener una o más unidades centrales de procesamiento (CPU) constituidas, esencialmente, por registros, una unidad de control, una unidad aritmético lógica (ALU) y una unidad de cálculo en coma flotante (conocida antiguamente como «coprocesador matemático»).

Tanto las Compuertas Lógicas, como los Microcontroladores y los Microprocesadores, están fabricados bajo un diseño específico que nunca cambiará. Será el ser humano el que deberá ingeniárselas para interconectar estos artilugios de silicio, oro, cobre y demás elementos químicos para que realicen una operación determinada.

FPGA. Matrices de Compuertas Programables "In Situ"

Una FPGA o matriz de puertas programables (del inglés field-programmable gate array) es un dispositivo programable que contiene bloques de lógica cuya interconexión y funcionalidad puede ser configurada en el momento mediante un lenguaje de descripción especializado. La lógica programable puede reproducir desde funciones tan sencillas como las llevadas a cabo por una puerta lógica o un sistema combinacional hasta complejos sistemas en un chip.

Las FPGA se utilizan en aplicaciones similares a los ASIC sin embargo son más lentas, tienen un mayor consumo de energía y no pueden abarcar sistemas tan complejos como ellos. A pesar de esto, las FPGA tienen las ventajas de ser reprogramables (lo que añade una enorme flexibilidad al flujo de diseño), sus costes de desarrollo y adquisición son mucho menores para pequeñas cantidades de dispositivos y el tiempo de desarrollo es también menor.

Ciertos fabricantes cuentan con FPGA que sólo se pueden programar una vez, por lo que sus ventajas e inconvenientes se encuentran a medio camino entre los ASIC y las FPGA reprogramables.

En pocas palabras, estas Matrices de Compuertas Programables o FPGAs, pueden ser configuradas por software para funcionar como Compuertas Lógicas, Microcontroladores o Microprocesadores. ¿Circuitos Integrados Definidos por Software? ¡¡¡ Sí !!!

Los alcances que tiene esta tecnología son sencillamente fabulosos y abren aún más las posibilidades para quienes los incluyen en dispositivos industriales, empresariales o domésticos.

¿Qué le parecería tener un dispositivo inteligente como una LapTop, una Tablet o un Teléfono Inteligente, que no solamente sea posible actualizar el Sistema Operativo con fines de mejorar su desempeño o arreglar posibles fallas de programación, sino que además ahora se pueda actualizar su hardwer sin necesidad de abrir el aparato.

Sí. El fabricante podrá manufacturar equipos todos idénticos, pero los alcances y limitaciones de éste dependerán de la configuración de sus FPGAs internas. Podemos comenzar adquiriendo la "licencia" o paquete "Starter", en la que la o las FPGAs se comportarán como un equipo económico de tan solo dos procesadores.

Con el pago de un paquete o licencia superior, podremos escalar a ocho procesadores, doce, diez y seis o más. Podremos añadir GPUs aceleradoras de video y poco a poco escalar hasta contar con un equipo con un desempeño inmenso y posibilidades más allá de lo que nuestra imaginación puede llega a visualizar.

¿Qué decir de otros dispositivos como computadoras de a bordo en aviones, automóviles, motocicletas? También electrodomésticos más y más versátiles e inteligentes que puedan realizar más funciones con más precisión, mayor exactitud y con un uso más inteligente y racional de energía eléctrica, agua, etc.

¿Qué tan posible, factible y/o a futuro es llegar a este punto? Ya llegamos desde hace tiempo. Sí. Hace apenas un mes que Massimo Banzi, cofundador y Director de Tecnología de ARDUINO, anunció la disponibilidad del ARDUINO MKR VIDOR 4000. Su corazón ya no es un microcontrolador, sino una FPGA. Tiene un costo de $60.00 USD y es posible acceder a ella a través de un conector Micro PCIe.

Gracias a los esfuerzos de Clifford Wolf con su proyecto IceStorm, Adrian Bowyer y sus tremendas contribuciones al Open Source Hardware y al Open Source y toda la comunidad Abierta, los avances en materia de FPGA son tales que ahora los fabricantes y proveedores de Hardware y Software, ya no piensan en Microcontroladores o Microprocesadores, sino en FPGA como el cimiento de sus desarrollos a mediano y largo plazo.

FPGA plantea una nueva forma de hacer las cosas. Un nuevo paradigma que como todos, subsana muchos de los requerimientos actuales en el campo de las Tecnologías de la Información, pero como es costumbre plantea nuevos retos.

Esta tecnología tiene la bondad de ofrecer una relación costo-beneficio muy positiva y como todo aquello que resulta económica y tecnológicamente rentable, trascenderá e incluso "amenaza" con sustituir a tecnologías que "a priori" ya se ven como obsoletas.

¿En conclusión? FPGA es el pasado cercano, presente y futuro a largo plazo de las nuevas Tecnologías de la Información basadas en plataformas Abiertas. ¿Ya conoce Usted FPGA?

lunes, 3 de agosto de 2015

¿Actualizar a Microsoft Windows 10?

El pasado Miércoles 29 de Julio de 2015, Microsoft por fin liberó su nueva versión Windows 10, generando muchas expectativas sobre todo dentro de la empresa de Redmond, Washington.

A las veinticuatro horas de su lanzamiento, una nutrida audiencia (no tan nutrida como se hubiese esperado, sobre todo comparándola con ocasiones anteriores) realizaba la actualización de sus Sistemas Operativos versiones 7, 8 y 8.1.

La respuesta a esta nueva "aventura" de Microsoft nuevamente levantó ámpula entre quienes decidieron "estar a la moda".

Hubo los que de inmediato comentaron y compartieron su desilusión, desencanto o hasta enojo por haber perdido datos. Los hubo también quienes manifestaron que era al final más de lo mismo pero también hubo quienes ensalzaron que la velocidad de este nuevo sistema operativo era mucho mejor que la de sus antecesores.

Nosotros en la edición de este Blog nos dimos a la tarea de realizar la actualización que sugería el Sistema Operativo Windows 7 (original y bajo licencia), pero sobre una Máquina Virtual (previamente respaldada) para no perder información y/o datos.

El proceso se realizó conectando el sistema operativo a actualizar, hacia una red inalámbrica que entregó 15 a 19 Megabits de "bajada", por tres a seis Megabits de "subida". El asistente de actualización corrió bien, fue intuitivo y el proceso se llevó a cabo sin contratiempos.

Al momento de hacer la actualización, nos aseguramos de haber elegido conservar nuestros archivos y programas de cómputo. Al final del procedimiento encontramos que para nuestra fortuna, todo estaba donde lo habíamos dejado y como lo habíamos dejado.

¿Qué diferencias notamos? Que a diferencia del Sistema Operativo Microsoft Windows 8, aquí desde un inicio SÍ se conservó el botón de inicio. También se conservó ese menú principal al que la marca ya nos tenía acostumbrado, el cual es una mezcla de el presentado en Windows 7 y Windows 8.1.

¿El "Look and Feel"? No notamos un cambio tan radical como el paso entre Windows 7 a Windows 8. ¿La velocidad? Un poquito mejor en lo que se refiere a los tiempos de ejecución. Lo interesante del asunto es el hecho de que al parecer Microsoft está regresando al origen retirando mucha "parafernalia" de su sistema operativo y aunque se que lo van a negar, pero me recuerda muchísimo a ciertas distribuciones Linux que incluyen escritorios ligeros como Xfce, Cinnamon o Unity.

El tiempo a corto plazo decidirá qué tanto realmente habrá mejorado el sistema operativo Windows, así como también qué tanto de las aplicaciones existentes se adaptan al nuevo Sistema Operativo. Pero si de algo estamos seguros es de que con Windows 10, Microsoft se está jugando todo el pírrico capital de confianza que el Usuario Final le está obsequiando a los Redmond Boys.

¿Qué tan indispensable y/o útil y/o necesario es el actualizar a esta versión de Sistema Operativo? En nuestro humilde punto de vista si Usted trabaja perfectamente bien con su Windows 7, no existe una necesidad tecnológica y/o imperiosa para actualizar (por el momento).

¿Y si el nuevo equipo de cómputo ya viene con Windows 10 instalado? Entonces por el momento le recomendamos conservarlo, a menos que Usted encuentre que una de sus aplicaciones "in house" (a la medida) o comerciales no funcione perfectamente bien.

¿Puntaje final? Comparándolo contra Windows 7, 8 y 8.1, así como contra otros Sistemas Operativos de Escritorio:

Innovación:7.50
Velocidad de Ejecución:8.00
Facilidad de uso:9.00
Ambiente Gráfico:8.00
Promedio:
8.13

¿Está Usted convencido para actualizar a Windows 10?