Arduino

¿Qué es Arduino ?

Arduino es una herramienta para hacer que los ordenadores puedan sentir y controlar el mundo físico a través de tu ordenador personal. Es una plataforma de desarrollo de computación física (physical computing) de código abierto, basada en una placa con un sencillo microcontrolador y un entorno de desarrollo para crear software (programas) para la placa.

Puedes usar Arduino para crear objetos interactivos, leyendo datos de una gran variedad de interruptores y sensores y controlar multitud de tipos de luces, motores y otros actuadores físicos. Los proyecto de Arduino pueden ser autónomos o comunicarse con un programa (software) que se ejecute en tu ordenador (ej. Flash, Processing, MaxMSP). La placa puedes montarla tu mismo o comprarla ya lista para usar, y el software de desarrollo es abierto y lo puedes descargar gratis.

El lenguaje de programación de Arduino es una implementación de Wiring, una plataforma de computación física parecida, que a su vez se basa en Processing, un entorno de programación multimedia.

arduinoview

¿Por qué Arduino?

Hay muchos otros microcontroladores y plataformas con microcontroladores disponibles para la computación física. Parallax Basic Stamp, BX-24 de Netmedia, Phidgets, Handyboard del MIT, y muchos otros ofrecen funcionalidades similares. Todas estas herramientas organizan el complicado trabajo de programar un microcontrolador en paquetes fáciles de usar. Arduino, además de simplificar el proceso de trabajar con microcontroladores, ofrece algunas ventajas respecto a otros sistemas a profesores, estudiantes y amateurs:

  • Asequible – Las placas Arduino son más asequibles comparadas con otras plataformas de microcontroladores. La versión más cara de un modulo de Arduino puede ser montada a mano, e incluso ya montada cuesta bastante menos de 60€
  • Multi-Plataforma – El software de Arduino funciona en los sistemas operativos Windows, Macintosh OSX y Linux. La mayoría de los entornos para microcontroladores están limitados a Windows.
  • Entorno de programación simple y directo – El entorno de programación de Arduino es fácil de usar para principiantes y lo suficientemente flexible para los usuarios avanzados. Pensando en los profesores, Arduino está basado en el entorno de programación de Procesing con lo que el estudiante que aprenda a programar en este entorno se sentirá familiarizado con el entorno de desarrollo Arduino.
  • Software ampliable y de código abierto– El software Arduino esta publicado bajo una licencia libre y preparado para ser ampliado por programadores experimentados. El lenguaje puede ampliarse a través de librerías de C++, y si se está interesado en profundizar en los detalles técnicos, se puede dar el salto a la programación en el lenguaje AVR C en el que está basado. De igual modo se puede añadir directamente código en AVR C en tus programas si así lo deseas.
  • Hardware ampliable y de Código abierto – Arduino está basado en los microcontroladores ATMEGA168,ATMEGA328 y ATMEGA1280. Los planos de los módulos están publicados bajo licencia Creative Commons, por lo que diseñadores de circuitos con experiencia pueden hacer su propia versión del módulo, ampliándolo u optimizándolo. Incluso usuarios relativamente inexpertos pueden construir la versión para placa de desarrollo para entender cómo funciona y ahorrar algo de dinero.

Tipos, características y diferencias de las placas de Arduino

Existen diferentes tipos de placas Arduino y se diferencian tanto por su tamaño como por sus prestaciones

Tamaño

De mayor a menor:

  • Arduino Mega
  • Arduino Diecimila/Duemilanove y Arduino Bluetooth
  • Arduino Pro
  • Arduino Nano
  • Arduino Mini

Prestaciones

  • Arduino Mega ( es con mucha diferencia el más potente y el que más i/o tiene, apto para trabajos ya algo más complejos aunque tengamos que sacrificar un poco el espacio, cuenta con el microcontrolador Atmega1280 con más memoria para el programa, más RAM y más pines que el resto de los modelos ).
  • Arduino Bluetooth (incorpora un módulo para la transmisión de datos de hasta 100 metros, con esta placa podras programar sin cables asi como también realizar comunicaciones serie con cualquier dispositivo bluetooth )
  • Arduino Pro ( más robusto y mejor acabado final; incorpora funcionalidades interesantes tales como un conector especial para conectar una batería LiPo y realizar un montaje portatil )
  • Arduino Nano ( su principal ventaja es que puede ser pinchado directamente sobre una protoboard haciendo muy cómodo el prototipado al igual que el Arduino mini).
  • Arduino Duemilanove  (es la placa estándar )
  • Arduino Mini (versión miniaturizada de la placa Arduino. Mide tan sólo 30x18mm y permite ahorrar espacio en los proyectos que lo requieran. Las funcionalidades son las misma que Arduino Duemilanove ).

Programación

Vamos a nombrar en las que se puede programar el chip directamente con un cable USB, los que no se citen se entiende que requieren de algo que no se incluye con la placa ya sea un programador externo o similar.

  • Arduino Mega
  • Arduino Diecimila/Duemilanove
  • Arduino Bluetooth
  • Arduino Nano

Interacción con otros dispositivos

Los más propicios para ello son el Arduino Bluetooth, el Pro y el Duemilanove/Diecimila con shields kits existentes en el mercado como el ethernet.

Subjetivamente y viendo los resultados obtenidos atendiendo al uso que le queramos dar, muchos coincidirían en que el Arduino Duemilanove/Diecimila es el más versátil y el que por su calidad/precio lo hace más propicio como primera placa; luego cada uno irá adquiriendo las variantes en función de sus necesidades.

VIDEO-RECOMENDACION

Te recomendamos el siguiente Curso de Arduino, impartido por Codigo Facilito

Guía Total Recomendada de Arduino 

Libro-basico-Arduino

Guia para Crear un Carrito a Control Remoto con Arduino y Android 

Anuncios

Diseño de un Controlador de Luces de un Semáforo.

La electrónica digital ha alcanzado una gran importancia en nuestra vida diaria, debido a que es utilizada para operar en los dispositivos muy útiles en la actualidad, como tenemos sistemas programables , celulares, ordenadores, estos están basados en microprocesadores, microcontroladores, memorias que gracias a los circuitos digitales y al ingeniero humano pueden mejorarse para cumplir con nuestras expectativas.

Para ligar entender la tecnología digital es necesario comprender principios básicos y uno de ellos es la que se basa en el álgebra booleana  (lógica binaria) y el sistemas de numeración binario y así se pueden realzar complejas operaciones lógicas y arimeticas . Estas basadas en señales de voltaje.

En este proyecto para empezar se comprende la electronica digital , se lleva a cabo la configuración necesaria para obtener un dispositivo de señalizacion  muy necesario en la vida diaria aun mas si dependemos de un automóvil.

El semáforo es usado para regular el trafico de vehículos y el transito de peatones. Así tendremos que depender de los circuitos digitales para lograr el cambio de luces, de colores verde,rojo y amarillo.

La Guía para la construcción de un semáforo 

 Informe del Semáforo

images

Computación Paralela

El paralelismo

El paralelismo es una forma de computación basada en un principio aparentemente simple:

” Dividir los problemas grandes en varios pequeños y solucionarlos simultáneamente,”

Esto permite ejecutar más instrucciones en menos tiempo. Pero llevado a la práctica es una cuestión altamente compleja en la que se encuentran investigando grupos científicos de todo el mundo.

La computación paralela

Es una técnica de programación en la que muchas instrucciones se ejecutan simultáneamente. Se basa en el principio de que los problemas grandes se pueden dividir en partes más pequeñas que pueden resolverse de forma concurrente (“en paralelo”).
Existen varios tipos de computación paralela:
  • Paralelismo a nivel de bit
  • Paralelismo a nivel de instrucción
  • Paralelismo de datos
  • Paralelismo de tareas.
Durante muchos años, la computación paralela se ha aplicado en la computación de altas prestaciones, pero el interés en ella ha aumentado en los últimos años debido a las restricciones físicas que impiden el escalado en frecuencia.  La computación paralela se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en los procesadores multinúcleo.
Sin embargo, recientemente, el consumo de energía de los ordenadores paralelos se ha convertido en una preocupación.Los ordenadores paralelos se pueden clasificar según el nivel de paralelismo que admite su hardware:
  • Los ordenadores multinúcleo y multiproceso tienen varios elementos de procesamiento en una sola máquina
  • Los clusters
  • Los MPP
  • Los Grids
Estos tres ultimos emplean varios ordenadores para trabajar en la misma tarea.
Los programas de ordenador paralelos son más difíciles de escribir que los secuenciales porque la concurrencia introduce nuevos tipos de errores de software, siendo las condiciones de carrera los más comunes.

La comunicación y la sincronización entre las diferentes subtareas son típicamente las grandes barreras para conseguir un buen rendimiento de los programas paralelos.  El incremento de velocidad que consigue un programa como resultado de la paralelización viene dado por la ley de Amdahl.

La Ley de Amdahl, llamada así por el arquitecto de ordenadores Gene Amdahl, se usa para averiguar la mejora máxima de un sistema cuando solo una parte de éste es mejorado.

Computo en Serie vrs Computo Paralelo

Tradicionalmente, los programas informáticos se han escrito para el cómputo en serie. Para resolver un problema, se construye un algoritmo y se implementa como un flujo en serie de instrucciones. Estas instrucciones se ejecutan en una unidad central de procesamiento en un ordenador. Sólo puede ejecutarse una instrucción a la vez y un tiempo después de que la instrucción ha terminado, se ejecuta la siguiente.

La computación en paralelo, por el contrario, utiliza simultáneamente múltiples elementos de procesamiento para resolver un problema. Esto se logra mediante la división del problema en partes independientes de modo que cada elemento de procesamiento pueda ejecutar su parte del algoritmo de manera simultánea con los otros. Los elementos de procesamiento son diversos e incluyen recursos tales como una computadora con múltiples procesadores, varios ordenadores en red, hardware especializado, o cualquier combinación de los anteriores.

Clases de computadoras paralelas

Las computadoras paralelas se pueden clasificar de acuerdo con el nivel en el que el hardware soporta paralelismo.

Computación multinúcleo 

Un procesador multinúcleo es un procesador que incluye múltiples unidades de ejecución (núcleos) en el mismo chip. Los procesadores superescalares pueden ejecutar múltiples instrucciones por ciclo de un flujo de instrucciones (hilo), a diferencia de este, un procesador multinúcleo puede ejecutar múltiples instrucciones por ciclo de secuencias de instrucciones múltiples. Cada núcleo en un procesador multinúcleo potencialmente puede ser superescalar, es decir, en cada ciclo, cada núcleo puede ejecutar múltiples instrucciones de un flujo de instrucciones.

Multiprocesamiento simétrico 

Un multiprocesador simétrico (SMP) es un sistema computacional con múltiples procesadores idénticos que comparten memoria y se conectan a través de un bus. La contención del bus previene el escalado de esta arquitectura. Como resultado, los SMPs generalmente no comprenden más de 32 procesadores.

Computación distribuida 

Un ordenador distribuido también conocido como un multiprocesador de memoria distribuida es un sistema computacional de memoria distribuida en el que los elementos de procesamiento están conectados por una red. Los ordenadores distribuidos son altamente escalables.

Computación en clúster

Un clúster es un grupo de ordenadores débilmente acoplados que trabajan en estrecha colaboración, de modo que en algunos aspectos pueden considerarse como un solo equipo. Los clústeres se componen de varias máquinas independientes conectadas por una red. Mientras que las máquinas de un clúster no tienen que ser simétricas, de no serlo, el balance de carga es más difícil de lograr. El tipo más común de clúster es el cluster Beowulf, que es un clúster implementado con múltiples ordenadores comerciales idénticos conectados a una red de área local TCP/IP Ethernet.

Procesamiento paralelo masivo 

Un procesador paralelo masivo (MPP) es un solo equipo con varios procesadores conectados en red. Tienen muchas de las características de los clúster, pero cuentan con redes especializadas de interconexión en tanto que las clústeres utilizan hardware estándar para la creación de rede Los MPPs también tienden a ser más grandes que los clústeres, con mucho más de 100 procesadores. En un MPP, «cada CPU tiene su propia memoria y una copia del sistema operativo y la aplicación. Cada subsistema se comunica con los demás a través de un interconexión de alta velocidad

Computación distribuida 

La computación distribuida es la forma más distribuida de la computación paralela. Se hace uso de ordenadores que se comunican a través de la Internet para trabajar en un problema dado. Debido al bajo ancho de banda y la latencia extremadamente alta de Internet, la computación distribuida normalmente sólo se refiere a problemas paralelos.

Discos Duros SAS

Discos Duros SAS

SAS proviene de las siglas de (“Serial Attached SCSI –Small Computer System Interface”), SCSI adjunto serial. Es un estándar para dispositivos de alta velocidad que incluyen discos duros entre sus especificaciones, a diferencia del estándar SCSI que es paralelo.

Estos discos duros no son muy populares a nivel doméstico como los discos duros IDE ó los discos duros SATA II; por lo que son utilizados principalmente por grandes empresas en susservidores y sus precios son muy altos en comparación con los anteriores mencionados.

 Puede depender de una tarjeta controladora SAS para trabajar y ser instalados, estas también soportan el uso de discos duros SATA; el cable es semejante al utilizado por la interfase SATA, con la diferencia de tolerar una longitud de hasta 6 metros, la capacidad de multiplexación, lo cuál permite la conexión de hasta 24 dispositivos. Importante, a pesar de utilizar la misma interfaz SAS y SATA, SAS es compatible con SATA pero SATA no es compatible con SAS.

     Hay dos características que cuenta denominadas “Hot Plug”, lo que significa poder conectarlo y desconectarlo sin necesidad de apagar la computadora y “Non-Hot Plug”, que indica que es necesario instalarlo con el equipo apagado.

Características de los Discos Duros SAS

Los discos duros cuentan con características que son comunes y que a continuación se detallan:

  • RPM SAS: Significa “Revolutions per Minute” ó vueltas por minuto. Este valor determina la velocidad a la que los discos internos giran cada minuto. Su unidad de medida es: revoluciones por minuto (RPM). Este dato puede ser 7,200 RPM, 10,000 RPM hasta 15,000 RPM.

  • Pulgadas SAS: se refiere al formato de tamaño de la unidad, esta puede ser de 3.5″ (LFF) ó de 2.5″ (SFF).

  •  Capacidades de almacenamiento SAS: Es el total de Bytes ó símbolos que es capaz de almacenar un disco duro. Su unidad de medida es el Byte, pero actualmente se utilizan medidas como el GigaByte (GB) y el TeraByte (TB). Para discos duros SAS este dato puede estar entre 72 GigaBytes (GB) hasta 2 TeraBytes (TB).

Usos específicos del disco duro SAS

1.- Se utilizan principalmente para el almacenamiento de los sistemas operativos de red (Microsoft Server 2009, plataforma Linux Apache) y  para servidores de grandes empresas.

2.- También un uso muy frecuente es el de guardar la información de usuarios en grandes empresas, en el ambiente doméstico no se utilizan.

fullduplex (1)

Modos de transmisión

Una transmisión dada en un canal de comunicaciones entre dos equipos puede ocurrir de diferentes maneras. La transmisión está caracterizada por:

  • la dirección de los intercambios
  • el modo de transmisión: el número de bits enviados simultáneamente
  • la sincronización entre el transmisor y el receptor

Conexiones simples, semidúplex y dúplex totales

Existen 3 modos de transmisión diferentes caracterizados de acuerdo a la dirección de los intercambios:

  • Una conexión simple: es una conexión en la que los datos fluyen en una sola dirección, desde el transmisor hacia el receptor. Este tipo de conexión es útil si los datos no necesitan fluir en ambas direcciones (por ejemplo: desde el equipo hacia la impresora o desde el ratón hacia el equipo…).

    Conexión simple

  • Una conexión semidúplex: es una conexión en la que los datos fluyen en una u otra dirección, pero no las dos al mismo tiempo. Con este tipo de conexión, cada extremo de la conexión transmite uno después del otro. Este tipo de conexión hace posible tener una comunicación bidireccional utilizando toda la capacidad de la línea.

    Conexión semidúplex

  • Una conexión dúplex total: es una conexión en la que los datos fluyen simultáneamente en ambas direcciones. Así, cada extremo de la conexión puede transmitir y recibir al mismo tiempo; esto significa que el ancho de banda se divide en dos para cada dirección de la transmisión de datos si es que se está utilizando el mismo medio de transmisión para ambas direcciones de la transmisión.

    Conexión dúplex total

Transmisión en serie y paralela

El modo de transmisión se refiere al número de unidades de información (bits) elementales que se pueden traducir simultáneamente a través de los canales de comunicación. De hecho, los procesadores (y por lo tanto, los equipos en general) nunca procesan (en el caso de los procesadores actuales) un solo bit al mismo tiempo. Generalmente son capaces de procesar varios (la mayoría de las veces 8 bits: un byte) y por este motivo, las conexiones básicas en un equipo son conexiones paralelas.

Conexión paralela

Las conexiones paralelas consisten en transmisiones simultáneas de N cantidad de bits. Estos bits se envían simultáneamente a través de diferentes canales N (un canal puede ser, por ejemplo, un alambre, un cable o cualquier otro medio físico). La conexión paralela en equipos del tipo PC generalmente requiere 10 alambres.

Conexión paralela

Estos canales pueden ser:

  • N líneas físicas: en cuyo caso cada bit se envía en una línea física (motivo por el cual un cable paralelo está compuesto por varios alambres dentro de un cable cinta)
  • Una línea física dividida en varios subcanales, resultante de la división del ancho de banda. En este caso, cada bit se envía en una frecuencia diferente…

Debido a que los alambres conductores están uno muy cerca del otro en el cable cinta, puede haber interferencias (particularmente en altas velocidades) y degradación de la calidad en la señal…

Conexión en serie

En una conexión en serie, los datos se transmiten de a un bit por vez a través del canal de transmisión. Sin embargo, ya que muchos procesadores procesan los datos en paralelo, el transmisor necesita transformar los datos paralelos entrantes en datos seriales y el receptor necesita hacer lo contrario.

Conexión en serie

Estas operaciones son realizadas por un controlador de comunicaciones (normalmente un chip UART, Universal Asynchronous Receiver Transmitter (Transmisor Receptor Asincrónico Universal)). El controlador de comunicaciones trabaja de la siguiente manera:

  • La transformación paralela-en serie se realiza utilizando un registro de desplazamiento. El registro de desplazamiento, que trabaja conjuntamente con un reloj, desplazará el registro (que contiene todos los datos presentados en paralelo) hacia la izquierda y luego, transmitirá el bit más significativo (el que se encuentra más a la izquierda) y así sucesivamente:

    transformación paralela-en serie

  • La transformación en serie-paralela se realiza casi de la misma manera utilizando un registro de desplazamiento. El registro de desplazamiento desplaza el registro hacia la izquierda cada vez que recibe un bit, y luego, transmite el registro entero en paralelo cuando está completo:

    transformación en serie-paralela

Transmisión sincrónica y asincrónica

Debido a los problemas que surgen con una conexión de tipo paralela, es muy común que se utilicen conexiones en serie. Sin embargo, ya que es un solo cable el que transporta la información, el problema es cómo sincronizar al transmisor y al receptor. En otras palabras, el receptor no necesariamente distingue los caracteres (o más generalmente, las secuencias de bits) ya que los bits se envían uno después del otro. Existen dos tipos de transmisiones que tratan este problema:

  • La conexión asincrónica, en la que cada carácter se envía en intervalos de tiempo irregulares (por ejemplo, un usuario enviando caracteres que se introducen en el teclado en tiempo real). Así, por ejemplo, imagine que se transmite un solo bit durante un largo período de silencio… el receptor no será capaz de darse cuenta si esto es 00010000, 10000000 ó 00000100…  Para remediar este problema, cada carácter es precedido por información que indica el inicio de la transmisión del carácter (el inicio de la transmisión de información se denomina bit de INICIO) y finaliza enviando información acerca de la finalización de la transmisión (denominada bit de FINALIZACIÓN, en la que incluso puede haber varios bits de FINALIZACIÓN).
  • En una conexión sincrónica, el transmisor y el receptor están sincronizados con el mismo reloj. El receptor recibe continuamente (incluso hasta cuando no hay transmisión de bits) la información a la misma velocidad que el transmisor la envía. Es por este motivo que el receptor y el transmisor están sincronizados a la misma velocidad. Además, se inserta información suplementaria para garantizar que no se produzcan errores durante la transmisión. En el transcurso de la transmisión sincrónica, los bits se envían sucesivamente sin que exista una separación entre cada carácter, por eso es necesario insertar elementos de sincronización; esto se denomina sincronización al nivel de los caracteres.

La principal desventaja de la transmisión sincrónica es el reconocimiento de los datos en el receptor, ya que puede haber diferencias entre el reloj del transmisor y el del receptor. Es por este motivo que la transmisión de datos debe mantenerse por bastante tiempo para que el receptor pueda distinguirla. Como resultado de esto, sucede que en una conexión sincrónica, la velocidad de la transmisión no puede ser demasiado alta.

Buses

¿Que es un Bus?

Se denomina bus, en informática, al conjunto de conexiones físicas (cables, placa de circuito impreso, etc.) que pueden compartirse con múltiples componentes de hardware para que se comuniquen entre sí.

El propósito de los buses es reducir el número de rutas necesarias para la comunicación entre los distintos componentes, al realizar las comunicaciones a través de un solo canal de datos. Ésta es la razón por la que, a veces, se utiliza la metáfora “autopista de datos”.

En el caso en que sólo dos componentes de hardware se comuniquen a través de la línea, podemos hablar de puerto hardware ( puerto serial o puerto paralelo).

diagrama de un bus

Características de un bus

Cantidad de Informacion:

Un bus se caracteriza por la cantidad de información que se transmite en forma simultánea. Este volumen se expresa en bits y corresponde al número de líneas físicas mediante las cuales se envía la información en forma simultánea.

Un cable plano de 32 hilos permite la transmisión de 32 bits en paralelo. El término “ancho” se utiliza para designar el número de bits que un bus puede transmitir simultáneamente.

Velocidad del Bus:

Por otra parte, la velocidad del bus se define a través de su frecuencia (que se expresa en Hercios o Hertz), es decir el número de paquetes de datos que pueden ser enviados o recibidos por segundo. Cada vez que se envían o reciben estos datos podemos hablar de ciclo.

Subconjunto de un bus

En realidad, cada bus se halla generalmente constituido por entre 50 y 100 líneas físicas distintas que se dividen a su vez en tres subconjuntos:

  • El bus de direcciones, (también conocido como bus de memoria) transporta las direcciones de memoria al que el procesador desea acceder, para leer o escribir datos. Se trata de un bus unidireccional.
  • El bus de datos transfiere tanto las instrucciones que provienen del procesador como las que se dirigen hacia él. Se trata de un bus bidireccional.
  • El bus de control (en ocasiones denominado bus de comando) transporta las órdenes y las señales de sincronización que provienen de la unidad de control y viajan hacia los distintos componentes de hardware. Se trata de un bus bidireccional en la medida en que también transmite señales de respuesta del hardware.bus de datos

Los buses principales

Por lo general, dentro de un equipo, se distinguen dos buses principales:

  •  Bus interno o sistema (que también se conoce como bus frontal o FSB). El bus interno permite al procesador comunicarse con la memoria central del sistema (la memoria RAM).
  •  Bus de expansión (llamado algunas veces bus de entrada/salida) permite a diversos componentes de la placa madre (USB, puerto serial o paralelo, tarjetas insertadas en conectores PCI, discos duros, unidades de CD-ROM y CD-RW, etc.) comunicarse entre sí. Sin embargo, permite principalmente agregar nuevos dispositivos por medio de las ranuras de expansión que están a su vez conectadas al bus de entrada/salida.

El conjunto de chips

El conjunto de chips es el componente que envía datos entre los distintos buses del equipo para que todos los componentes que forman el equipo puedan a su vez comunicarse entre sí. Originalmente, el conjunto de chips estaba compuesto por un gran número de chips electrónicos (de allí su nombre). Por lo general, presenta dos componentes:

  • El Puente Norte (que también se conoce como controlador de memoria, se encarga de controlar las transferencias entre el procesador y la memoria RAM. Se encuentra ubicado físicamente cerca del procesador. También se lo conoce como GMCH que significa Concentrador de controladores gráficos y de memoria.
  • El Puente Sur (también denominado controlador de entrada/salida o controlador de expansión) administra las comunicaciones entre los distintos dispositivos periféricos de entrada-salida. También se lo conoce como ICH(Concentrador controlador de E/S). Por lo general, se utiliza el término puente para designar un componente de interconexión entre dos buses.

arquitectura del sistema de un PC

A continuación encontrará una tabla con las especificaciones relativas a los buses más comunes:

Norma Ancho del bus (bits) Velocidad del bus (MHz) Ancho de banda (MB/seg.)
ISA 8 bits 8 8,3 7,9
ISA 16 bits 16 8,3 15,9
Arquitectura estándar industrial extendida (EISA, Extended Industry Standard Architecture) 32 8,3 31,8
Bus local VESA (VESA Local Bus) 32 33 127,2
PCI 32 bits 32 33 127,2
PCI 64 bits 2,1 64 66 508,6
AGP 32 66 254,3
AGP (Modo x2) 32 66×2 528
AGP (Modo x4) 32 66×4 1056
AGP (Modo x8) 32 66×8 2112
ATA33 16 33 33
ATA100 16 50 100
ATA133 16 66 133
ATA serial (S-ATA, Serial ATA) 1 180
ATA serial II (S-ATA2, Serial ATA II) 2 380
USB 1 1,5
USB 2,0 1 60
FireWire 1 100
FireWire 2 1 200
SCSI-1 8 4,77 5
SCSI-2 – Fast 8 10 10
SCSI-2 – Wide 16 10 20
SCSI-2 – Fast Wide 32 bits 32 10 40
SCSI-3 – Ultra 8 20 20
SCSI-3 – Ultra Wide 16 20 40
SCSI-3 – Ultra 2 8 40 40
SCSI-3 – Ultra 2 Wide 16 40 80
SCSI-3 – Ultra 160 (Ultra 3) 16 80 160
SCSI-3 – Ultra 320 (Ultra 4) 16 80 DDR 320
SCSI-3 – Ultra 640 (Ultra 5) 16 80 QDR 640

Memorias Ram

Definición

 RAM proviene de (“Read Aleatory Memory”) ó memoria de lectura aleatoria: es un dispositivo electrónico que se encarga de almacenar datos e instrucciones de manera temporal, de ahí el término de memoria de tipo volátil ya que pierde los datos almacenados una vez apagado el equipo; pero a cambio tiene una muy alta velocidad para realizar la transmisión de la información.

Clases de memoria RAM

Hay tres tipos de memorias RAM, la primeras son las DRAM, SRAM y una emulación denominada Swap:

  • DRAM: las siglas provienen de (“Dinamic Read Aleatory Memory”) ó dinámicas, debido a que sus chips se encuentran construidos a base de condensadores (capacitores), los cuáles necesitan constantemente refrescar su carga (bits) y esto les resta velocidad pero a cambio tienen un precio económico.
  • SRAM:  las siglas provienen de (“Static Read Aleatory Memory”) ó estáticas, debido a que sus chips se encuentran construidos a base de transistores, los cuáles no necesitan constantemente refrescar su carga (bits) y esto las hace sumamente veloces pero también muy caras. El término memoria Caché es frecuentemente utilizada pare este tipo de memorias, sin embargo también es posible encontrar segmentos de Caché adaptadas en discos duros, memorias USB y unidades SSD.
  • Swap. La memoria virtual ó memoria Swap (“de intercambio”) no se trata de memoria RAM como tal, sino de una emulación (simulación funcional), esto significa que se crea un archivo de grandes dimensiones en el disco duro ó unidad SSD, el cuál almacena información simulando ser memoria RAM cuándo esta se encuentra parcialmente llena, así se evita que se detengan los servicios de la computadora.

Estructura lógica de la memoria RAM

Desde las primeras computadoras, la estructura lógica ha sido la siguiente:

  • Memoria base: desde 0 hasta 640 KB , es en esta zona dónde se almacena la mayoría de los programas que el usuario utiliza.

  • Memoria superior y reservada: de 640 a 1.024 MB, carga unas estructuras llamadas páginas de intercambio de información y unos bloques de memoria llamados UMB.

    •  Bloques UMB (Upper Memory Blocks): se trata de espacios asignados para el sistema dentro de la memoria superior, pero debido a la configuración de diversos dispositivos como el video, en algunos casos estos espacios quedan sin utilizar, por lo que se comenzó a pensar en utilizarlos de modo funcional.
  • Memoria expandida: se trata de memoria paginada que se asigna a programas en memoria superior, la cuál algunas veces no se utilizaba debido a la configuración del equipo y con este método se puede utilizar.

  • Memoria extendida: de 1.024 MB hasta 4 GB (GigaBytes), se cargan todas las aplicaciones que no caben en la memoria base.

Tipos de Memoria RAM

RAM “Random Access Memory”, memoria de acceso aleatorio Memoria primaria de la computadora, en la que puede leerse y escribirse información en cualquier momento, pero que pierde la información al no tener alimentación eléctrica.
EDO RAM “Extended Data Out Random Access Memory”, memoria de acceso aleatorio con salida de datos extendida Tecnología opcional en las memorias RAM utilizadas en servidores, que permite acortar el camino de la transferencia de datos entre la memoria y el microprocesador.
BEDO RAM “Burst EDO Random Access Memory”, memoria de acceso aleatorio con salida de datos extendida y acceso Burst Tecnología opcional; se trata de una memoria EDO RAM que mejora su velocidad gracias al acceso sin latencias a direcciones contiguas de memoria.
DRAM “Dinamic Random Access Memory”, memoria dinámica de acceso aleatorio Es el tipo de memoria mas común y económica, construida con capacitores por lo que necesitan constantemente refrescar el dato que tengan almacenado, haciendo el proceso hasta cierto punto lento.
SDRAM “Synchronous Dinamic Random Access Memory”, memoria dinámica de acceso aleatorio Tecnología DRAM que utiliza un reloj para sincronizar con el microprocesador la entrada y salida de datos en la memoria de un chip. Se ha utilizado en las memorias comerciales como SIMMDIMM, y actualmente la familia de  memorias DDR (DDR, DDR2, DDR3, DDR4, GDDR, etc.), entran en esta clasificación.
FPM DRAM “Fast Page Mode Dinamic Random Access Memory”, memoria dinámica de paginación de acceso aleatorio Tecnología opcional en las memorias RAM utilizadas en servidores, que aumenta el rendimiento a las direcciones mediante páginas.
RDRAM “Rambus DRAM”, memoria dinámica de acceso aleatorio para tecnología Rambus Memoria DRAM de alta velocidad desarrollada para procesadores con velocidad superior a 1 GHz, en esta clasificación se encuentra la familia de  memorias RIMM.
SRAM / Caché “Static Random Access Memory”, memoria estática de acceso aleatorio Memoria RAM muy veloz y relativamente cara, construida con transistores, que no necesitan de proceso de refresco de datos. Anteriormente había módulos de memoria independientes, pero actualmente solo se encuentra integrada dentro de microprocesadores y discos duros para hacerlos mas eficientes.

tipos de RAM que se utilizanAcceso Directo a Memoria

( Direct Memory Access o DMA). El acceso directo a memoria es una características de las computadorasy microprocesadores modernos que permite que ciertos subsistemas de hardware dentro de la computadora puedan acceder a la memoria del sistema para la lectura y/o escritura, independientemente de la unidad central de procesamiento (CPU). De lo contrario, la CPU tendría que copiar cada porción de dato desde el origen hacia el destino, haciendo que ésta no esté disponible para otras tareas.

Los subsistemas de hardware que utilizan DMA pueden ser: controladores de disco duro, tarjetas gráficas, tarjetas de red, tarjetas de sonido y tarjetas aceleradoras. También es utilizado para la transferencia de datos dentro del chip en procesadores con múltiples núcleos. DMA es esencial en los sistemas integrados.

Características generales del DMA

Aquellas computadoras que tienen canales DMA pueden transferir datos desde y hacia los dispositivos con menos utilización de CPU que aquellas computadoras sin canales DMA. Básicamente una transferencia DMA consiste en copiar un bloque de memoria de un dispositivo a otro. Esa transferencia se lleva a cabo por el controlador DMA, en lugar del CPU. El controlador DMA es generalmente un chipset de la placa madre.

En computadoras sin DMA, el CPU generalmente se ocupa completo durante toda la operación de lectura o escritura de la memoria y, por lo tanto, no está disponible para realizar otras tareas. Con DMA, el CPU puede iniciar la transferencia, luego realizar otras operaciones mientras la transferencia está en progreso y luego recibir una interrupción del controlador de DMA una vez que la transferencia termina.

Sin DMA se utiliza el modo PIO para la comunicación de periféricos con la memoria y de instrucciones de load/store en el caso de chips con multinúcleos.

DMA es útil en aplicaciones en tiempo real y en el procesamiento de flujos de datos.

Tipos de transferencia DMA o Acceso directo a memoria

 DMA por robo de ciclo: es uno de los métodos más usados, ya que requiere poca utilización del CPU. Esta estrategia utiliza uno o más ciclos de CPU para cada instrucción que se ejecuta. Esto permite alta disponibilidad del bus del sistema para la CPU, aunque la transferencia de datos se hará más lentamente.

DMA por ráfagas: esta estrategia consiste en enviar el bloque de datos solicitado mediante una ráfaga empleando el bus del sistema hasta finalizar la transferencia. Permite una altísima velocidad, pero la CPU no podrá utilizar el bus de sistema durante el tiempo de transferencia, por lo que permanece inactiva.

DMA transparente: esta estrategia consiste en emplear el bus del sistema cuando la CPU no lo necesita. Esto permite que la transferencia no impida que la CPU utilice el bus del sistema; pero la velocidad de transferencia es la más baja posible.

DMA Scatter-gather: esta estrategia permite transmitir datos a varias áreas de memoria en una transacción DMA simple. Equivale al encadenamiento de múltiples peticiones DMA simples. Su objetivo es librar a la CPU la tarea de la copia de datos e interrupciones de entrada/salida múltiples.