Arquitectura computacional

Para una comprensión básica de qué es una computadora, como funciona, qué es la codificación electrónica y digital a fin de que se pueda entender los temas se recomienda leer;

Transistores y procesos de fabricación

El estudio de un transistor puede requerir que usted aprenda ingeniería electrónica, cuanto menos.

Sin ser yo un ingeniero en tal área, y sin ser tampoco la finalidad de esta publicación, podemos aprender un buen par de cosas.

Microcontroladores y Microprocesadores

Llamado en inglés (CPU; Central Process Unit) es el encargado de realizar las operaciones con la información recibida (codificada en bits y luego vuelta a codificar en el sistema necesario) mediante las operaciones lógicas necesarias del álgebra booleana.

Dependiendo la arquitectura (véase; como está construido internamente) y su set de instrucciones (véase; su capacidad de realizar X cosa en forma de una operación) el procesador puede realizar X, Y o Z operación con la información que recibe.

Así mismo, cada procesador tiene que elegir una manera de leer los bits (¿se leen de izquierda a derecha o de derecha a izquierda?) para eso se usa el formato/codificación ‘Endianness’;

  • Big Endian

    Los bits se leen de izquierda a derecha. El primer bit (el de la izquierda) se le llama ‘el más significativo’, y el último (el de la derecha de todo) el ‘menos significativo’.

  • Little Endian

    Los bits se leen de derecha a izquierda. El bit más significativo es el de la derecha del todo, y el menos significativo el de la izquierda del todo.

Perfecto, ya se eligió la codificacioń para leer y guardar los bits, pero ¿cuántos bits podemos mandar a guardar en memoria a la vez?¿cuántos bits podemos recibir de la memoria a la vez?, para esto se usa la arquitectura de bits

Guardado de información

El primer recurso que tiene el procesador para poder guardar la información son los ‘registros’. Un registro es una identificación única e irrepetible de un dato guardado en una parte de la memoria;

“Registros”

Los registros están creados de forma física, con transistores, en el procesador y están conectados con cada núcleo del procesador de tal forma que todos pueden acceder a los registros en cualquier momento.

Que tipo de memoria es la que se va a utilizar depende de muchos factores, ya que dependiendo de si la memoria caché está muy usada puede ser utilizada la RAM. Así mismo no todos los registros pueden almacenar cualquier dato, algunos solo pueden ser usados para determinados operaciones (de esto depende cada arquitectura).

Instrucciones - Funciones

Los procesadores tienen guardado internamente en uno de sus componentes físicos (ver más adelante) que ‘cosas’ puede hacer, esas ‘cosas que puede hacer’ se llaman; “instrucciones”. Si querés realizar una accción como sumar dos números enteros y guardar el resultado, debes utilizar una instrucción. Si querés sacar el resultado de una resta, debes utilizar otra instrucción diferente, y así para cada operación o ‘cosa’ que quieras realizar.

El procesar no entiende; “conectate a internet” si no que acciones complejas se descomponen en miles de acciones más simples como;

  1. Asignar este valor a este registro X para que esté guardado
  2. Usar el valor del registro X para saber cuantos bits a la vez se debe enviar a la placa WiFi o Ethernet
  3. Calcular la suma o resta entre dos operandos o valores para guardar el resultado en el registro Z
  4. Usar el valor del registro Z para saber que codificación indicarle a la placa WiFi o Ethernet cuando envie la información en forma de pulsos eléctricos o de ondas.

Y así todo el tiempo.

Sin embargo no todas las instrucciones son iguales en todos los procesadores, existen dos grandes familias;

CISC

De “Complex Instructions Set Computer” (“Conjunto de instrucciones complejas computacionales”) se encarga de mediante un amplio y complejo set de instrucciones en el procesador poder realizar tareas complejas mediante pocas instrucciones. No todas las instrucciones finalizan en un ciclo, muchas al ser complejas tardan varios.

Mientras que esto provee facilidades en el software, termina provocando complejidad en el hardware (y en el compilador para esa arquitectura). Generalmente tienen unos pocos registros de uso específico con implementaciones complejas para acceder e interactuar con la memoria.

A nivel de compilador provoca una mayor dificultad para poder paralelizar el trabajo entre todos los núcleos.

Una muestra de esto son las instrucciones AVX512 que integraban los procesadores de Intel (CISC) hasta la 12° Gen, para cálculos vectoriales.

RISC

De “Reduced Instructions Set Computer” (“Conjunto de instrucciones reducidas computacionales”) se encarga de mediante un reducido número de instrucciones, el proveer un chip lo más optimizado posible para ser lo más eficiente a nivel energético y lo más rápido posible. Esto provoca que al ser todas instrucciones simples, finalicen todas en un ciclo.

Esto surge como respuesta a los chips CISC que sumaban complejidad a nivel de arquitectura cuando había muchos escenarios donde era inecesario.

Provee facilidades en el hardware (permitiendo así su optimización más rápidamente) pero sumando complejidades en el software (a nivel del proceso de compilación). Generalmente tienen muchos registros de propósitos generales y una manera específica de acceder e interactuar con la memoria.

A nivel de compilador es muy fácil paralelizar los trabajos entre los núcleos.

RISC vs CISC

A grandes rasgos todas las arquitecturas RISC (ARM, PowerPC, Sparc, etc) y las CISC (x86_64) comparten estas diferencias;

RISCCISC
Conjunto de instrucciones reducidoConjunto de instrucciones ampliado y complejo
Registros de propósito general, pueden almacenar cualquier tipo de datoRegistros de propósito específico
Diseñado para poder ejecutar más tareas en paralelo y reducir la cantidad de veces en que se accede a memoriaDiseñado para ser versatil y potente
Debido a su mayor simplicidad es más eficiente y se puede especializar más fácilDebido a su mayor complejidad y versatilidad pueden realizar más cosas con menos instrucciones
Es la filosofía de arquitectura más modernaEs la filosofía de arquitectura más antigua y los primeros procesadores hasta los x86 pertenecen a esta
Se utilizan en smartphones, IoT, Single Board Computer (como la raspberry pi), PlasyStation 1 y 2, y un par de supercomputadorasSe utilizan en más del 90% de las 500 supercomputadoras más potente del mundo
Ciclos

Un procesador, al igual que todo chip, funciona por ‘ciclos’; un ciclo es una entrada de información en el circuito que será procesado y se obtendrá un resultado, guardandolo o utilizandolo para otra cosa (en otro ciclo).

Tomemos como ejemplo un chip que tiene sus datos de entrada por los costados y tiene sus datos de salida por abajo luego de que los primeros fueron procesados y se obtiene el resultado;

“Ciclos del procesador”

Los procesadores utilizan un componente de cuarzo que oscila (véase; vibra), generando en cada una de esas oscilaciones un pulso electromagnético. La velocidad de cuantos ciclos por segundo es capaz de realizar el procesador depende de la velocidad de ese oscilador de cuarzo.

No todas las instrucciones del procesador (recuerde; una instrucción es una orden que puede hacer el procesador) se pueden realizar en un ciclo, algunos necesitan varios.

Arquitectura de bits

Cuando se habla de la arquitectura de bits, estamos hablando de cuantos (bits) el procesador (y sus componentes) pueden manejar para todo tipo de operaciones como;

  1. mandar y recibir bits de/hacia la memoria a la vez.
  2. determinar cuanta memoria RAM puede soportar usar.
  3. determinar el tamaño de los datos que pueden guardar los registros.
  4. procesar esa cantidad de bits en cada ciclo del reloj.
  5. determinar la presición de los datos que pueden guardar los registros de punto flotante (números decimales)

Un bit al tener dos posibles valores (0 y 1) hace que cuando se habla de X arquitectura de bits se esté hablando de una totalidad de; 2^X bits totales que puede manejar el procesador.

Arquitectura de bitsCantidad de bits procesados por cicloCantidad de memoria RAM soportadaTamaño máximo de los registros
16162^16 = 65536 bytes = 64 kb16
32322^32 = 4294967296 bytes = 4096 megabytes = 4 GB32
64642^64 = 18446744073709551616 bytes = 16777216 TB64

Algo que uno se puede preguntar si presta atención; ¿porqué si haciendo 2^X saco cálculo de posible combinación de bits, el resultado queda en bytes? Es una muy buena pregunta, y eso se debe a que por cuestiones históricas y la enorme variedad de diferentes artitecturas que hubo de procesadores (como de fabricantes) se debió poner así para mantener una cierta compatibilidad entre todos los modelos.

Arquitecturas

Algunas de las arquitecturas más conocidas al momento de escribir este artículo son;

  1. x86_64

Procesadores de propósito general, empezando por la arquitectura de 32 bits de Intel y luego siendo ampliada por AMD a 64 bits.

Todos los procesadores de Intel y AMD (por lo menos los que han tenido éxito y continuación comercial e industrial) son de esta arquitectura y usan el Little Endian.

Registros;

64 bits32 bits16 bits8 bits
raxeaxaxal
rbxebxbxbl
rcxecxcxcl
rdxedxdxdl
rsiesisisil
rdiedididil
rbpebpbpbpl
rspespspspl
r8r8dr8wr8b (r8l)
r9r9dr9wr9b (r9l)
r10r10dr10wr10b (r10l)
r11r11dr11wr11b (r11l)
r12r12dr12wr12b (r12l)
r13r13dr13wr13b (r13l)
r14r14dr14wr14b (r14l)

La utilidad de cada uno de ellos depende del sistema operativo, funciones y modo del CPU. Aunque para varias cosas muchos comparten los mismos procedimientos. Como por ejemplo, imprimir algo en pantalla;

global start

section .text
start:
  mov rax, 1
  mov rdi, 1
  mov rsi, message
  mov rdx, 13
  syscall

  mov eax, 60
  xor rdi, rdi
  syscall

message:
  db "Hello world", 10

Algunas de las instrucciones de la arquitectura x86 (32 bits) que son soportados en la de 64 bits también son;

InstrucciónOperandosPropósito
ADDA, BRealiza la sumatoria de A + B y almacena el resultado en “A”
MOVA, BAsigna el valor de “B” al registro “A”. Si “B” es una dirección de la memoria (hexadecimal) entonces en vez de asignar eso, asigna el valor que almacena ahí.
CMPA, BCompara los valores de “A” y “B”
PUSHAPone “A” en el stack (la memoria RAM)
POPATrae el último valor que esté en el stack (la memoria RAM) y lo guarda en “A”
INCAIncrementa el valor numérico de “A” en uno (véase; A = A + 1)
DECADecrementa el valor numérico de “A” en uno (véase; A = A - 1)
CALLASalta a la función con identificador (nombre) “A”

Entre otros cientos de instrucciones que permiten que un programa pueda funcionar. Algunas instrucciones son solamente de 64 bits por la cantidad de información que necesitan manejar/procesar a la vez (de ahí que los de 32 bits no den abasto para tales tareas).

Se denomina a x86 (y otros) como una arquitectura “CISC” (Complex instruction set computing); esto quiere decir que tienen un conjunto de instrucciones amplia y compleja.

  1. ARMv7

Arquitectura de bajo consumo diseñada por ‘Advanced RISC Machines Ltd.’ (ARM) de 32 bits. A diferencia de Intel y AMD, ARM licencia sus diseños y arquitecturas a terceros para que ellos los fabriquen y vendan.

Algunos de los procesadores que integran esta arquitectura son;

  1. Cortex-A7

    Este modelo de procesador específicamente con esa arquitectura lo integran muchos, tales como el ‘BCM2836’ que viene en la Raspberry Pi 2.

  2. Cortex-A17

    Este modelo de procesador específicamente con esa arquitectura lo integran muchos, tales como el ‘Rockchip R3288’ que vienen en el Chromebook 11.

    Existen otros para diferentes propósitos, pero la serie Cortex-A es la general para todo propósito.

    Todos los ARM pueden cambiar entre ‘Big’ / ‘Little’ Endian, en ARMv7 se usa principalmente ‘Little Endian’.

    RegistroAliasUso
    R0 General purpose
    R1 General purpose
    R2 General purpose
    R3 General purpose
    R4 General purpose
    R5 General purpose
    R6 General purpose
    R7Holds Syscall Number
    R8 General purpose
    R9 General purpose
    R10 General purpose
    R11FPFrame Pointer
    R12IPIntra Procedural Call
    R13SPStack Pointer
    R14LRLink Register
    R15PCProgram Counter
    CPSRCurrent Program Status Register
  3. ARMv8

    Arquitectura de bajo consumo diseñada por ‘Advanced RISC Machines Ltd.’ (ARM) de 64 bits anunciada en el 2011.

    Al ser el que implementó los 64 bits se le conoce también como AArch64.

    Algunos de los procesadores que integran esta arquitectura son;

    1. Cortex-A53

    2. Cortex-A57

    3. Exynos 5433

      Procesador de Samsung usado en el Galaxy Note 4.

    4. Bionic A7

      Procesador de Apple usado en el iPhone 5S.

    Todos los ARM pueden cambiar entre ‘Big’ / ‘Little’ Endian.

    RegistroAliasUso
    R0 General purpose
    R1 General purpose
    R2 General purpose
    R3 General purpose
    R4 General purpose
    R5 General purpose
    R6 General purpose
    R7Holds Syscall Number
    R8 General purpose
    R9 General purpose
    R10 General purpose
    R11FPFrame Pointer
    R12IPIntra Procedural Call
    R13SPStack Pointer
    R14LRLink Register
    R15PCProgram Counter
    CPSRCurrent Program Status Register

    Algunas de las instrucciones soportadas en ARM (v7 en adelante) son;

    InstrucciónOperandosPropósito
    MOVA, BAsigna el valor de “B” al registro “A”. Si “B” es una dirección de la memoria (hexadecimal) entonces en vez de asignar eso, asigna el valor que almacena ahí.
    ADDA, B, CSuma los valores de “B” y “C” y lo guarda en “A”
    SUBA, B, CResta los valores de “B” con “C” (B - C) y lo guarda en “A”
    MULA, B, CMultiplica los valores de “B” con “C” y lo guarda en “A”

    Entre muchos otros que le permiten a cualquier programa el poder funcionar.

Tipos de procesadores

Existen varios tipos de procesadores, dependiendo de su especialización en qué tipo de información pueden procesar. Entre todas las posibilidades, algunos son;

  • Procesadores generales

    Son los conocidos ‘CPU’ tienen un propósito general y pueden procesar todo tipo de información.

    Sus funciones, véase las cosas que puede realizar en forma de órdenes a procesar/realizar, suelen ser totalmente generales y pueden procesar todo tipo de información.

  • Procesadores neuronales

    Son los conocidos como ‘NPU’ (Neural Process Unit) y están especializados en procesar información de inteligencia articial (IA - AI) o ‘machine learning’.

  • Procesadores gráficos

    Son los conocidos ‘GPU’ (Graphical Process Unit) y pueden procesar información destinada a ser mostrada en pantallas aunque ciertos datos generales (Como matemáticas) también pueden.

    Al ser más específicos, están más especializados en eso que los CPU.

Partes del procesador

NOTA; lo que se ve a continuación, unas “radiografías” del procesador/chip, se conoce como “DIE” que en electrónica es el circuito en el que está construido el mismo

“Partes de un procesador Ryzen-3”
DIE del procesador Ryzen 3
Copyright de imagen; optocrypto.com
“Apple M1 DIE”
DIE del procesador Apple M1
Copyright de imagen; techinsights.com
  • CU

    Es la unidad de control (control unit en inglés) encargada de buscar las funciones que puede ejecutar, codificarlas y el almacenamiento en memoria de los resultados.

    Puede ser tanto física como programable esta unidad. Suele estar subdividida en otras partes por la enorme complenjidad de lo que hace. Algunos de estos componentes son; el contador de programa (CP. Se encarga de llevar un registro de la siguiente instrucción a ejecutar.), el registro de instrucción (RI. Contiene la informaicón de cada instrucción/función que se soporta), el decodificador de instrucciones, el controlador de los ciclos del CU y el secuenciador (que con instrucciones más simples controla paso a paso todo).

  • ALU

    Son las partes que se encargan de las operaciones aritméticas (suma y resta) y lógicas (SI,Y,O,NO) que se deben utilizar para procesar información.

    Trabajan con valores binarios.

  • FPU

    Son partes iguales que los ALU pero tienen la capacidad de representar números con coma flotante (véase; un número con decimales/comas).

  • BUS I/O

    Es un canal físico que permite unir partes de una computadora, transfiere los bits de datos entre ellos.

    Existen dos tipos de bus de datos; en serie (bit a bit) y en paralelo (se mandan varios simultaneamente). Se puede ver a simple vista de humano en una placa madre.

    En este caso comunican internamente todo el procesador. Y como son conductores, pueden sufrir de ruido eléctrico y alteración de los datos por interferencias externas.

    En la imagen superior del procesador Ryzen, el componente es el “Global Mrmory Interconnect 2 (Infinity Fabric)”.

  • Memory Controller

    Es el encargado de mapear cada celda de la memoria RAM y determinar cada una de sus posiciones, a fin de poder utilizarlos para leer y/o almacenar la información.

    La artitectura de bits del procesador determina cuanta memoria RAM puede mapear este componente.

  • Caché memory

    Es la memoria más rápda, posee diferentes niveles y es una memoria que puede usar la CPU para obtener/almacenar datos de forma más rápida que en la RAM (alrededor de un orden de magnitud de miles).

  • NPU (Neural Processor Unit)

    Algunos procesadores, principalmente SOCs como los ARM, pueden contar con una unidad de procesamiento neuronal que funciona como un procesador específicamente para inteligencia artificial y machine learning.

    Tal es el caso de los Apple A14 Bionic y M1

  • CSU/DSU (Channel Service Unit/Data Service Unit)

    Integrados en el mismo componente, el CSU/DSU es un dispositivo de hardware de los ARM usado para conectar y traducir señales entrantes digitales de una entrada hacia el procesador. Básicamente codifica de físico a digital y viceversa.

Proceso de ejecución de una orden

En una micro arquitectura super simple, el orden normalmente es;

  1. La CU lee una instrucción con sus operandos.

  2. La CU decodifica esa instrucción.

  3. Si es necesario la CU busca más datos anteriores o complementarios.

  4. La CU designa a la ALU o FPU o a otro componente de la computadora, fuera del cpu claro, mediante el bus de datos que debe ejecutar X instrucción.

  5. Una vez devuelto los resultados, la CU se encarga de guardar esa información.

Microcontroladores vs Microprocesadores

A veces las diferencias entre ambas plataformas de procesamiento pueden ser muy difíciles por lo que haremos una tabla con las diferencias.

Micro controladorMicro procesador
Arquitectura física más complejaArquitectura física más simple
Computadora completa, con su propia CPU, RAM, ROM (como almacenamiento) y I/O (E/S)Componente básico para funciones aritméticas y lógicas en señales digitales, sin RAM, ROM y periféricos internos
Generalmente hacen uso de la SRAM (‘Static RAM’)Generalmente hacen uso de la DRAM (‘Dynamic RAM’)
Poca capacidad de procesamiento computacional (a veces tampoco admiten procesamiento de punto flotante, con un ragno de Mhz)Alta capacidad de procesamiento computacional (rango de Ghz)
A nivel de ensamblador y operaciones; usa la arquitectura modificada Harvard (el programa y sus datos, separados)A nivel de ensamblador y operaciones; usa la arquitectura von Neumann (el programa y sus datos, en el mismo módulo)
Tienen periféricos internos conectados mediante el bus de control internoTiene buses adicionales para conectar periféricos externos
Tienen mayor efiencia energética y capacidades de ahorro de energía físicosCaren de capacidades físicas de ahorro de energía y consumen mucho más
Para algunos protocolos (como USB, Wifi, 3G/4G/5G, etc) requieren un procesador secundario de apoyoPuede procesar por si mismos varios protocolos de hardware (USB, Wifi, PCI-E, etc)
Al tener todo integrado son mucho más baratosSon más caros al solamente tener el CPU y no el resto de componentes necesarios
Algunos vienen programados en su firmware con las operaciones a realizar, por lo que no necesitan obligatoriamente un S.ONecesitan sí o sí un S.O.

Ahora, con el avance de la tecnología algunas de estas diferencias se han puesto en una zona ‘gris’. Tomando los procesadores algunas ventajas de los controladores y vice versa. El mejor ejemplo de esto es la arquitectura ARM (Advance RISC Machine) que combina cosas de ambos para producir un SOC (‘System On a Chip’), puede verlo en los siguientes capítulos.

Memoria

Es la encargada de guardar (temporalmente o permanentemente) la información que procesa el CPU.

Almacena todos los datos en bits. Cada uno de esos bits está dentro de una ‘celda’ (lógica o física dependiendo de la memoria utilizada) y cuando el procesador quiere almacenar/obtener un bit de la memoria debe conocer el lugar donde está ese bit de información, esto se realiza mediante un ‘decodificador’ (un chip que es capaz de mediante el álgebra booleana el poder obtener el bit preciso);

Copyright de la imagen superior; cs.shinshu-u.ac.jp/

Debido a que las memorias actuales tienen miles de millones de posibles posiciones en donde ser guardados, las posiciones se muestran y procesan en hexadecimal;

0x12AA

Al ser la encargada de realizar tal operación no existe un solo tipo de memoria, si no diferentes según la especialización;

  1. Memoria caché

    La memoria caché es una memoria de extrema poca capacidad pero de extrema velocidad ( aproximadamente 100 veces más rápida que la memoria RAM) que está integrada directamente en el procesador. Es una memoria volátil (véase; se corta la electricidad y se pierden los datos).

    Tiene diferentes ‘niveles’ que hacen referencia a su tamaño y velocidad;

    • a mayor nivel -> mayor tamaño -> menor velocidad
  2. Memoria RAM

    La memoria más conocida. RAM viene de ‘Random Access Memory’ por que no importa dónde este ubicado el dato que se necesita obtener dentro de la memoria, siempre se va a devolvere cualquier dato a la misma velocidad. Al igual que la memoria caché, generalmente es una memoria volátil pero es 100 veces más lenta que esta y dependiendo de que tipo de memoria se esté comparando puede ser hasta miles de veces más rápida que las persistnetes.

    A lo largo de la historia hubo muchos formatos de este tipo de memoria, hoy en día son muy comunes;

    • DDR SDRAM

    Double Data Rate Synchronous Dynamic Random-Access Memory.

    Es el formato de facto utilizado en computadoras de escritorio y notebooks.

    Utilizan un formato de encapsulado llamado; DIMM. Debido al tamaño, las notebooks y otros utilizan el encapsulado más compacto SODIMM.

    Hasta ahora existen 5 evoluciones de este formato;

      1. DDR SDRAM - 1990
      2. DDR2 SDRAM - 2003
      3. DDR3 SDRAM - 2011
      4. DDR4 SDRAM - 2013
      5. DDR5 SDRAM - 2018
    
    • GDDR SDRAM

    Graphics Double Data Rate.

    Es el formato de facto utilizado para procesadores de gráficos.

    Hasta ahora tiene 6 iteraciones;

      1. GDDR SGRAM - 1998
      2. GDDR2 - 2002
      3. GDDR3 - 2004
      4. GDDR4 - 2005
      5. GDDR5 - 2007
      6. GDDR6 - 2016
    

    Acá permitame hacer un pequeño paréntesis sobre el tema de la volatilidad de la RAM; sí, es efímera pero debido a como es la física de materiales, los electrones de las celdas no se pierden de forma inmediata apenas se apaga la computadora, si no que en función de factores ambientales (temperatura principalmente) pueden tardar hasta 90 minutos en borrarse totalmente. Debido a eso, se puede bajar hasta el punto de congelación (o lo más cercano posible) un módulo de memoria RAM para luego hacer una extracción de los datos ahí almacenados, este ataque se conoce como ‘Cold boot attack’ y la única forma de prevenirlo es asegurando que nadie tiene acceso físico al equipo.

  3. Memoria persistente

    Al igual que la RAM, también es de acceso aleatorio (recuerde; todo dato será devuelto siempre a la misma velocidad, sin importar su ubicación en el medio) pero es muchísimo más lenta.

    A lo largo del tiempo hubo, y hay, una enorme cantidad diferente de memorias persistentes. A diferencia de la memoria caché y la RAM, este tipo de memoria no pierde los datos almacenados cuando se corta el flujo eléctrico, esto se ha logrado de muchas maneras a lo largo de la historia;

    1. Cinta magnética

      Desarrollada en 1878.

      Es una cinta de banda plástica cubierta de material magnetizado. Utiliza el magnetismo (una de las 4 fuerzas elementales de este universo) para leer y guardar datos.

    2. EPROM y EEPROM

      Desarrollada en 1960 y 1970 respectivamente.

      Mediante voltajes programa los transistores físicos de un chip físico para que quede siempre la misma información final cuando circule la electricidad por él.

      La informaicón solamente se puede borrar utilizando luz ultravioleta (un rango de luz que ya no es visible por el ojo humano, superior a la onda de luz azul y que transporta muchísima energía consigo).

    3. HDD

      ‘Hard disk Drive’ o ‘disco duro mecánico’. Desarrollado por IBM en 1956.

      Utiliza sistemas eléctrico mecánicos en conjunto con el electromagnetismo para almacenar y leer información de un disco/plato magnético mediante una placa controladora para tal proceso físico.

    4. Memorias Flash

      Desarrollada en 1959.

      Utilizado en los SSD (‘Solid State Disk’), pendrives, NVME, etc. Se basan en el principio de los EEPROM pero sin la necesidad de utilizar luz ultra violeta para el borrado de información.

    5. 3D XPoint

      Desarrollada en 2015 y descontinuada en 2022.

      Utilizada principalmente por Intel en los productos ‘Intel Optane’, utiliza otra arquitectura a la de memorias flash.

La memoria y el procesador son los dos componentes esenciales que se deben tener para algo sea considerado una ‘computadora’. El resto (como; pantalla, teclado, etc) no son obligatorios.

Estática (SRAM) y Dinámica (DRAM)

Anteriormente hemos comentado sobre la RAM dinámica.

La memoria RAM estática es estructualmente diferente, con mayores ventajas y desventajas. Para un mejor entendimiento acá una tabla de diferencias;

Tipo de memoriaTipo de accesoConstrucciónCosto de construcciónPersistenteNecesidad de refresco
SRAMAleatorioSemiconductores (6 por celda)Más caraPuede serloNo
DRAMAleatorioCondensadoresMás barataNo
Tipo de memoriaVelocidadConsumo de energíaCapacidad por móduloUso en Controlador ó Procesador
SRAMMás rápidaGeneralmente mucho más eficiente4KB - 32MBAmbos
DRAMMás lentaGeneralmente menos eficiente8GB - 32GBProcesador

Por lo tanto, siempre que podamos debemos usar dispositivos con memoria SRAM. Además al no tener necesidad de refresco de datos su disminución de consumo energético es más notable, ahorrando energía.

Generalmente este tipo de memorias solamente está reservado para la caché del procesador, pero en sistemas con microcontroladores la podemos encontrar (como Arduino, Raspberry Pi Pico, etc). Aunque siempre debemos tener en cuenta que al ser mucho menos densa que la DRAM el tamaño/capacidad es muy limitada, tanto es así que (por ejemplo) la Raspberry Pi Pico no puede ejecutar Apache HTTP o Nginx debido a que solamente tiene 264KB de RAM.

Álgebra booleana

En las ciencias de las matemáticas el álgebra booleana es una rama del álgebra. Difiere del que el común de la población conoce (el ‘álgebra elemental’) en que;

  1. Los valores no son números si no ‘Verdadero’ (1) ó ‘Falso’ (0)
  2. No se usan operaciones de; suma, resta, multiplicación, división, módulo, etc si no operaciones lógicas como ‘AND’ (conjunción), ‘OR’ (disyunción), ‘NOT’ (negación), ‘NAND’, ‘NOR’, etc.

Esto se utiliza para poder programar dispositivos electrónicos de forma física, a fin de cada cada ‘puerta’ (dispositivo físico que tiene en su creación, metariales y funcionamiento) pueda realizar una de las operaciones anteriormente listadas. Esto es lo que hace que una ‘CPU’ pueda funcionar y procesar información.

Se utilizan ‘tablas de verdad’ para referirse a;

si en X puerta entra ‘Y’ valor, qué valor sale de ella?

Si usted lleyó “Codificación” entenderá que todas las operaciones en donde se usa la álgebra booleana en un chip (que son todas) siempre se trabaja con binarios. Si se recibe un pulso eléctrico considerado por la codificación como uno válido, será representado digitalmente como un uno (1), si no como un cero (0) dependiendo voltaje y amperaje.

Operaciones del álgebra booleana
Copyright de imagen; uelectronics.com
  • Compuerta buffer o SI

Tiene una sola entrada de datos.

Cuando se recibe un dato será ampliado el amperaje o su voltaje o se mantendrá igual. Véase; dato que entra, exactamente dato que sale con posibilidades de ser estabilizado o no.

  • Compuerta AND

Tiene dos entradas de datos; A y B, y una salida.

Solamente el dato de salida es 1 cuando ambos datos de entrada (A y B) son 1, de lo contrario es cero.

Sirve para expresar el producto con módulo 2.

  • Compuerta OR

Tiene dos entradas de datos; A y B, y una salida.

El dato se salida será cero (0) solamente cuando ambos datos de entrada (A y B) sean cero, de lo contrario es siempre uno (1).

Sirve para hacer la suma lógica.

  • Compuerta XOR (eXclusive OR)

Tiene dos entradas de datos; A y B, y una salida.

El dato se salida será uno (1) cuando ambos datos de entrada (A y B) sean distintos.

Hay casos también en donde puede tener tres entradas, en ese caso la salida es uno (1) cuando la cantidad de tales es impar en las entradas.

sirve para hacer una suma módulo 2.

  • Compuerta NOT

Tiene un solo dato de entrada y una sola salida.

Invierte el valor de entrada, si es uno (1) devuelve un cero (0) y viceversa.

  • Compuerta NAND - Sheffer

Es una mezcla entre la “AND” y la “NOT”.

Tiene dos entradas; A y B, y una salida.

El dato de salida es cero, solamente cuando ambos datos de entrada; A y B, sean uno, si no será siempre uno la salida.

  • Compuerta NOR - Pierce

Tiene dos entradas; A y B, y una salida.

El dato de salida es uno, solamente cuando ambos datos de entrada; A y B, son cero.

  • Compuerta XNOR (eXclusive NOR)

Puede tener dos o tres entradas, con una sola salida.

Cuando son dos los datos de entrada, el valor de salida es uno cuando ambos datos coinciden en su valor (ambos cero ó ambos uno). En el caso de 3 entradas, el valor de salida es uno cuando el número de tal es par o si no hay ninguno.

Bus de datos

Un bus de datos, como se mencionó en la parte del procesador, es un circuito conductor que permite que los impulsos eléctricos puedan ser transmitidos de un chip, SOC (System On a Chip), etc a otro para volver a ser codificados en bits de forma apropiada.

“Raspberry Pi busses”
Busses de mi propia Raspberry Pi 3B+, son solo algunos pero uno ya puede ir identificandolos fácilmente

No hay una estructura fija de cuantas líneas (los canales) deben tener en todos los busses existentes. Existen estándares de comunicación, como PCI-Express que sí cuentan con toda esa información, pero en líneas generales para todos los casos mínimamente se cuenta con los siguientes;

Cantidad de líneasNombreFuncionalidad
XData BusTransmisión de datos
XAddress BusDetermina si debe ser leído desde/hacia, si va hacia la memoria RAM indica la celda específica donde se hubica el dato a escribir/leer.
1 (como mínimo)Control BusDetermina el estado del dispositivo que leyó/devolvió esos datos, para asegurarse que lo hizo bien. Esto permite detectar si el dispositivo funciona bien a nivel básicos.

Dependiendo de la categoría de BUS que se necesite usar se utiliza “X” de cada uno (siendo “X” un número entero). Entre el procesador y la memoria RAM se suele usar la misma cantidad de líneas de datos y memoria que la arquitectura de bits del procesador, por lo que si un procesador es de una arquitectura de 64 bits entonces usará como máximo 64 líneas de bus para datos y dirección para comunicarse con la memoria. Entre el procesador/memoria con el resto de componentes puede variar dependiendo de la placa en donde esté.

A niveles más generales tenemos varios tipos de busses en el mundo de la informática;

GPIO Pins

GPIO (General Purpose Input/Output, Entrada/Salida de Propósito General) es un pin genérico en un chip, cuyo comportamiento (incluyendo si es un pin de entrada o salida) se puede controlar (programar) por el usuario en tiempo de ejecución.

“Rasperry Pi 3b+ GPIO”
Los pines GPIO y otros adicionales de mi Raspberry Pi 3b+
Basses internos o locales

Permiten conectar dispositivos periféricos con el procesador y la RAM de forma directa. Tienen la característica intrínseca de que los dispositivos que se comunican entre sí con estos canales de comunicación (bus) lo hacen todos a través de la misma placa base, no pudiendo funcionar de forma independiente si no están en esa.

  • Busses del sistema.

Permiten que el procesador y la memoria estén conectados.

“Bus del sistema”
Copyright de imagen; trytolivelaughlove.blogspot.com
  • Busses del procesador

Permite que los componentes internos del procesador estén conectados.

Acá una imagen de los bus de procesador del Intel 8008, los bus de color amarillo, naranja, cyan, violeta, verde, lila y carmesí son los de datos, y los de energía en rojo y azul.

“Intel 8080 bus”
Copyright de la imagen; righto.com
  • Busses de la memoria RAM

Permiten que la memoria RAM esté conectada a otros dispositivos en la placa base.

  • Busses de PCI y PCI-Express

Permiten que el procesador (y la memoria RAM mediante este) esté conectado con los dispositivos en este puerto.

“PCI-E”