lunes, 7 de noviembre de 2011

VELOCIDAD DE TRANSMISION DEL USB

Velocidades de transmisión del USB
Los dispositivos USB se clasifican en cuatro tipos según su velocidad de transferencia de datos:
Baja velocidad (1.0): Tasa de transferencia de hasta 1,5 Mbps (0,192 MB/s). Utilizado en su mayor parte por dispositivos de interfaz humana (Human Interface Device, en inglés) como los teclados, los ratones (mouse), las cámaras web, etc.






Velocidad completa (1.1): Tasa de transferencia de hasta 12 Mbps (1,5 MB/s) según este estándar, pero se dice en fuentes independientes que habría que realizar nuevamente las mediciones. Ésta fue la más rápida antes de la especificación USB 2.0, y muchos dispositivos fabricados en la actualidad trabajan a esta velocidad. Estos dispositivos dividen el ancho de banda de la conexión USB entre ellos, basados en un algoritmo de impedancias LIFO.
Alta velocidad (2.0): Tasa de transferencia de hasta 480 Mbps (60 MB/s) pero por lo general de hasta 125Mbps (16MB/s). Está presente casi en el 99% de los PC actuales. El cable USB 2.0 dispone de cuatro líneas, un par para datos, una de corriente y un cuarto que es el negativo o retorno.
Súper alta velocidad (3.0): Tiene una tasa de transferencia de hasta 4.8 Gbps (600 MB/s). La velocidad del bus es diez veces más rápida que la del USB 2.0, debido a que han incluido 5 conectores adicionales, desechando el conector de fibra óptica propuesto inicialmente, y será compatible con los estándares anteriores. En Octubre de 2009 la compañía taiwanesa ASUS lanzó la primera placa base que incluía puertos USB3, tras ella muchas otras le han seguido y se espera que en 2012 ya sea el estándar de facto.
Las señales del USB se transmiten en un cable de par trenzado con impedancia característica de 90 Ω ± 15%, cuyos hilos se denominan D+ y D-. Estos, colectivamente, utilizan señalización diferencial en half dúplex excepto el USB 3.0 que utiliza un segundo par de hilos para realizar una comunicación en full dúplex. La razón por la cual se realiza la comunicación en modo diferencial es simple, reduce el efecto del ruido electromagnético en enlaces largos. D+ y D- suelen operar en conjunto y no son conexiones simples.
Los niveles de transmisión de la señal varían de 0 a 0'3 V para bajos (ceros) y de 2'8 a 3'6 V para altos (unos) en las versiones 1.0 y 1.1, y en ±400 mV en alta velocidad (2.0). En las primeras versiones, los alambres de los cables no están conectados a masa, pero en el modo de alta velocidad se tiene una terminación de 45 Ω a masa o un diferencial de 90 Ω para acoplar la impedancia del cable. Este puerto sólo admite la conexión de dispositivos de bajo consumo, es decir, que tengan un consumo máximo de 100 mA por cada puerto; sin embargo, en caso de que estuviese conectado un dispositivo que permite 4 puertos por cada salida USB (extensiones de máximo 4 puertos), entonces la energía del USB se asignará en unidades de 100 mA hasta un máximo de 500 mA por puerto.



 
 
 
 
 

  

 

 

 

 

 

 

Otro caso real:
Si vas a respaldar 20 GB de un equipo con USB 1.1 te demorarás – si todo sale bien- 3,9 horas aproximadamente.
El cálculo es (20480 [mb] * 8 [min]) / 700 [mb] = 234 [min] = 3,9 [horas]
En cambio si vas a respaldar esos mismos 20 GB en un equipo con USB 2.0 – si todo sale bien – sólo 6 minutos.
El cálculo es (20480 [mb]* 0.2 [min]) / 700 [mb] = 5,8 [min]
Es una diferencia abismal. Si a eso le sumamos reintegrar los archivos al computador ya formateado, tenemos que:
  1. Respaldar y reintegrar 20 GB con un USB 1.1 demorará 7,8 horas.
  2. Respaldar y reintegrar 20 GB con un USB 2.0 demorará 12 minutos.

 

 

USB 3.0

La principal característica es la multiplicación por 10 de la velocidad de transferencia, que pasa de los 480 Mbps a los 4,8 Gbps (600 MB/s).
Otra de las características de este puerto es su "regla de inteligencia": los dispositivos que se enchufan y después de un rato quedan en desuso, pasan inmediatamente a un estado de bajo consumo.
A la vez, la intensidad de la corriente se incrementa de los 500 a los 900 miliamperios, que sirve para abastecer a un teléfono móvil o un reproductor audiovisual portátil en menos tiempo.

USB 3.0 ofrecerá 10 veces más velocidad que USB 2.0  
Intel y un grupo de compañías que incluyen a HP, Microsoft, NEC y Texas Instruments han comenzado a desarrollar el sucesor de USB 2.0. La tercera generación de USB transferirá datos a velocidades de hasta 4,8 gigabyte por segundo, diez veces superior a la velocidad de 480 megabits por segundo de USB 2.0. La nueva norma será compatible con los dispositivos USB 2.0 y USB 1.1 existentes.
Según Intel, la especificación USB 3.0 será diseñada para un bajo consumo de energía y mayor eficiencia. Los puertos y cables USB 3.0 serán diseñados con capacidad para cables de cobre y ópticos, así que en el futuro serán posibles velocidades aun más altas.
También se han planeado actualizaciones para el formato de transferencia Wireless USB (WUSB) que actualmente funciona a la misma velocidad de 480 mbps que USB 2.0. Un nuevo formato de conexión WUSB 1.1 funcionará a velocidades de hasta 1 gbps. Jeff Ravencraft, un estratega de tecnología de Intel, cita el creciente interés por la música digital y el vídeo en alta definición como la razón principal para actualizar la norma USB. El grupo espera tener una especificación final lista para mediados del año entrante.

sábado, 29 de octubre de 2011

GRUPO # 6 TELECOMUNICACIONES CON MODEMS


Grupo # 6
Telecomunicaciones con modem

Tipos de conectores del Modem

Conexión RS232 entre PC y Módem

Los módem se conectan con el ordenador a través de un puerto de comunicaciones del primero. Estos puertos siguen comúnmente la norma RS232.


DTE
Conexión RS232

A través del cable RS232 conectado entre el ordenador y módem estos se comunican. Hay varios circuitos independientes en el interfaz RS232. Dos de estos circuitos, el de transmitir datos (TD), y el de recibir datos (RD) forman la conexión de datos entre PC y Módem. Hay otros circuitos en el interfaz que permiten leer y controlar estos circuitos.



DTR (Data Terminal Ready). Esta señal indica al módem que el PC está conectado y listo para comunicar. Si la señal se pone a OFF mientras el módem esta en on-line, el módem termina la sesión y cuelga el teléfono.

CD (Carrier Detect). El módem indica al PC que esta on-line, es decir conectado con otro módem.

RTS (Request to send). Normalmente en ON. Se pone OFF si el módem no puede aceptar más datos del PC, por estar en esos momentos realizando otra operación.

CTS (Clear to send). Normalmente en ON. Se pone OFF cuando el PC no puede aceptar datos del módem.

RJ-45

RJ-45 (registered jack 45) es una interfaz física comúnmente usada para conectar redes de cableado estructurado, (categorías 4, 5, 5e, 6 y 6a). Es parte del Código Federal de Regulaciones de Estados Unidos. Posee ocho pines o conexiones eléctricas, que normalmente se usan como extremos de cables de par trenzado.
Es utilizada comúnmente con estándares como TIA/EIA-568-B, que define la disposición de los pines o wiring pinout.
Una aplicación común es su uso en cables de red Ethernet, donde suelen usarse 8 pines (4 pares). Otras aplicaciones incluyen terminaciones de teléfonos (4 pines o 2 pares) por ejemplo en Francia y Alemania, otros servicios de red como RDSI y T1 e incluso RS-232.

LOS MODEMS
Dispositivo cuya denominación proviene de los prefijos de las palabras MODULACION-DEMODULACION y como se deduce de la misma, es el encargado de realizar las funciones de adecuación de la información a transmitir (Modulación) y la inversa de recuperar, en recepción el mensaje original enviado (Demodulación).
Dispositivo de acoplamiento entre una terminal o computadora y una red de comunicaciones de voz (analógica); el MODEM convierte los pulsos digitales provenientes de un material o computadora en tonos de audio que pueden transmitirse a través del sistema telefónico. También convierte ciertos tonos de audio en pulsos digitales al otro extremo. Es un convertidor “digital a analógico” o viceversa.

En sentido general, la labor del MODEM consiste en transportar las señales digitales que manejan los equipos informáticos en señales adecuadas al medio de transmisión.
El MODEM permite en el tiempo las características de una onda electrónica en función de los valores binarios de la información a transmitir. Posibilita así la transmisión o la recepción a grandes distancias, ya que la información después que el MODEM la haya modulado, viajar por la red electrónica o por cualquier otro medio capaz de realizar esta labor.
Los MODEMS son periféricos tanto de entrada como de salida. Además de las funciones explicadas; el MODEM puede realizar otras funciones de control; en este caso la función del MODEM será la de supervisar que la recepción y transmisión de datos se efectúe correctamente.
VELOCIDAD DE TRANSMISION
Este parámetro se mide en baudios; es decir en Bits por segundo. Sus valores pueden ir de 110 a 19,200 baudios, pero con unos saltos fijos de 110, 300, 600, 1200, 2400, 4800, 9600 y 19,200. Esto quiere decir que si él en la computadora, establecemos la transmisión a 9,600 baudios, en el MODEM deberá emplear la misma velocidad; de otro modo no habría comunicación.
VELOCIDAD DE LOS MODEMS
Si abriéramos un MODEM, hallaremos que los componentes principales no pasan una docena. Algunos de los más importantes son:
1.  RS232C: Es una interface eléctrico estándar para la conexión de los componentes del sistema como MODEMS, impresoras, etc. Fue establecido por Electronic Industries Association (EIA). El RS232C define un camino de 25 conductores que conforman 18 circuitos sin retorno a tierra. Define también los voltajes en rango de 0 y 1 lógicos en todos los circuitos.
2.  Control de Volumen: Aunque no todos los MODEMS tienen un dispositivo de control de volumen accesible para volumen, no obstante tener un control de volumen accesible es conveniente abrir la computadora y hacer ajustes necesarios.
3.  UART: (Universal Asyncronuos Receiver Transmitter). Mecanismo de Transmisiones Universales Assincronicas. Esta tarjeta convierte las señales paralelas del bus del computador de tarjeta de series. Los MODEMS externos no requieren este tipo de tarjetas debido a que las señales están en la modalidad serial tras haber pasado por el puerto de serie.
4.  Clavija de Conexión: Dos conexiones, una para uso telefónico y otra para el MODEM, son recomendables pero, lamentablemente, muchos modelos de MODEM solo tienen una.
5.  Circuito Rockwell: Es una tarjeta de circuito impreso que controla la mayoría de las funciones del MODEM. Es la más utilizada en los MODEMS de 24000 Bs.
6.  Procesador de Señales Digitales: Este circuito ejecuta funciones equivalentes a la ordenada por la tarjeta Rockwell.
7.  RAM: Es una tarjeta que controla al acceso a la memoria interna. Pero no siempre está incluida en todos los MODEMS. Este tipo de memoria es utilizado en: Buffers, Directorio telefónico y software de tarjetas.
8.  ROM: Es la placa de circuitos impresos (memoria para lectura exclusivamente). Contiene las instrucciones que envían los microprocesadores.
9.  Altavoz: Provee sonido audible que permite al usuario conocer cuando el MODEM marca un numero telefónico o una conexión terminada de modo rápida
10.      Microprocesadores: Controlan la función de marcar número telefónicos y otras operaciones de los MODEMS.


CARACTERISTICAS DE UN MODEM
Enumeramos las características de los MODEMS, las cuales deberán coincidir si se quiere efectuar una conexión, aunque los MODEMS sean de distintos fabricantes.
*      Máxima velocidad de transmisión permitida.
*      Tipo de transmisión que se efectúa: Simplex, Halfduplex o Full-duplex.
*      Tiempo de inversión de la línea. Tiempo que el MODEM emplea para pasar de la recepción a la transmisión y viceversa.
*      Capacidad en la interconexión según normas CCIII o ELIA.
En la actualidad existen MODEMS integrados en una placa de circuito impreso, con la posibilidad de colocarse en el interior de la computadora; esto permite al usuario digital directamente él número telefónico en el teclado de la computadora.

La computadora consiste en un dispositivo digital que funciona al encender y apagar interruptores electrónicos. Las líneas telefónicas, de lo contrario, son dispositivos análogos que envían señales como un corriente continuo. El módem tiene que unir el espacio entre estos dos tipos de dispositivos. Debe enviar los datos digitales de la computadora a través de líneas telefónicas análogas. Logra esto modulando los datos digitales para convertirlos en una señal análoga; es decir, el módem varía la frecuencia de la señal digital para formar una señal análoga continua. Y cuando el módem recibe señales análogas a través de la línea telefónica, hace el opuesto: demodula, o quita las frecuencias variadas de, la onda análoga para convertirlas en impulsos digitales. De estas dos funciones, Modulación y Demodulación, surgió el nombre del módem.
Existen distintos sistemas de modular una señal analógica para que transporte información digital. En la siguiente figura se muestran los dos métodos más sencillos la modulación de amplitud (a) y la modulación de frecuencia (b).

Otros mecanismos como la modulación de fase o los métodos combinados permiten transportar más información por el mismo canal.
Las computadoras y sus diversos dispositivos periféricos, incluyendo los módems, usan el mismo alfabeto. Este alfabeto esta formado por solo dos dígitos, cero y uno; es por ello que se conoce como sistema de dígito binario. A cada cero o uno se le llama bit, termino derivado de BInary digiT (dígito binario).
La velocidad a la cual los dos módems se comunican por lo general se llama Velocidad en Baudios, aunque técnicamente es más adecuado decir bits por segundo o bps.
Baudios. Número de veces de cambio en el voltaje de la señal por segundo en la línea de transmisión. Los módem envían datos como una serie de tonos a través de la línea telefónica. Los tonos se "encienden"(ON) o "apagan"(OFF) para indicar un 1 o un 0 digital. El baudio es el número de veces que esos tonos se ponen a ON o a OFF. Los módem modernos pueden enviar 4 o más bits por baudio.

Bits por segundo (BPS). Es el número efectivo de bits/seg que se transmiten en una línea por segundo. Como hemos visto un módem de 600 baudios puede transmitir a 1200, 2400 o, incluso a 9600 BPS.
Limitación Física de la Velocidad de Transmisión en la Línea Telefónica.

Las leyes físicas establecen un límite para la velocidad de transmisión en un canal ruidoso, con un ancho de banda determinado. Por ejemplo, un canal de banda 3000Hz, y una señal de ruido 30dB (que son parámetros típicos del sistema telefónico), nunca podrá transmitir a más de 30.000 BPS.

Throughput. Define la cantidad de datos que pueden enviarse a través de un módem en un cierto período de tiempo. Un módem de 9600 baudios puede tener un throughput distinto de 9600 BPS debido al ruido de la línea (que puede ralentizar) o a la compresión de datos (que puede incrementar la velocidad hasta 4 veces el valor de los baudios).
Para mejorar la tasa efectiva de transmisión o Throughput se utilizan técnica de compresión de datos y corrección de errores.

Compresión de datos. Describe el proceso de tomar un bloque de datos y reducir su tamaño. Se emplea para eliminar información redundante y para empaquetar caracteres empleados frecuentemente y representarlos con sólo uno o dos bits.




Control de errores. La ineludible presencia de ruido en las líneas de transmisión provoca errores en el intercambio de información que se debe detectar introduciendo información de control. Así mismo puede incluirse información redundante que permita además corregir los errores cuando se presenten.

GRUPO # 8 PROCESAMIENTO DE DATOS


Como procesan datos las computadoras
¿Qué es un Procesamiento de Datos?
El Procesamiento de Datos es definido como la técnica que consiste en la recolección de los datos primarios de entrada, los cuales son evaluados y ordenados, para obtener información útil, que luego serán analizados por el usuario final, para que pueda tomar las decisiones o realizar las acciones que estime conveniente. A continuación se presentan las tres etapas que componen un procesamiento de datos, las cuales son las siguientes:
a)Entrada: Los datos deben ser obtenidos y llevados a un bloque central para ser procesados. Los datos en este caso, denominados de entrada, son clasificados para hacer que el proceso sea fácil y rápido.
b) Proceso: Durante el proceso se ejecutarán las operaciones necesarias para convertir los datos en información significativa. Cuando la información esté completa se ejecutará la operación de salida, en la que se prepara un informe que servirá como base para tomar decisiones.
c) Salida: En todo el procesamiento de datos se plantea como actividad adicional, la administración de los resultados de salida, que se puede definir como los procesos necesarios para que la información útil llegue al usuario.
Hay dos componentes que manejan el procesamiento en una computadora: la unidad central de procesamiento y la memoria. Los dos están ubicados en la tarjeta más importante del sistema o tarjeta principal.

1. La unidad de procesamiento central

La unidad de procesamiento central (CPU) es donde se manipulan los datos. En una microcomputadora, el CPU completo está contenido en un chip muy pequeño llamado microprocesador. Todas las CPU tienen por lo menos dos partes básicas, la unidad de control y la unidad aritmética lógica.

Unidad de control.- Todos los recursos de la computadora son administrados desde la unidad de control, cuya función es coordinar todas las actividades de la computadora. La unidad de control contiene las instrucciones de la CPU para llevar a cabo comandos. El conjunto de instrucciones, que está incluido dentro de los circuitos de la unidad de control, es una lista de todas las operaciones que realiza la CPU. Cada instrucción en el conjunto de instrucciones es acompañada por un micro código, que son instrucciones muy básicas que le dicen a la CPU cómo ejecutar las instrucciones. Cuando la computadora corre un programa, busca los comandos del programa dentro del conjunto de instrucciones de la CPU y las ejecuta en orden.
 Verifica.- si existe alguna información.
Guardar.- asignar espacio.
 Ejecutar.- envía los datos  a la (alu)

La unidad aritmético-lógica (ALU) es cuando la unidad de control encuentra una instrucción que involucra aritmética o lógica, le pasa el control al segundo componente de la CPU. La ALU incluye un grupo de registros, es decir, memoria construida directamente en la CPU que se usa para guardar datos que están siendo procesados por la instrucción actual. Debido a que todos los datos de la computadora se almacenan como números, gran parte del procesamiento que tiene lugar involucra la comparación de números o la realización de operaciones matemáticas. Además de establecer secuencias ordenadas y cambiar estas secuencias, la computadora puede realizar sólo dos tipos de operaciones: operaciones aritméticas y operaciones lógicas. Las operaciones aritméticas incluyen suma, resta, multiplicación y división. Las operaciones lógicas incluyen comparaciones, como determinar cuándo un número es igual a, mayor que o menor que otro número. Además, cada operación lógica tiene un opuesto. Por ejemplo, además de "igual a" existe "no igual a".

2. Memoria
La memoria principal o primaria (MP), también llamada memoria central, es una unidad dividida en celdas que se identifican mediante una dirección. Está formada por bloques de circuitos integrados o chips capaces de almacenar, retener o "memorizar" información digital, es decir, valores binarios; a dichos bloques tiene acceso el microprocesador de la computadora. Además de los registros, la CPU necesita tener millones de bytes de espacio donde pueda guardar los programas y datos que se están manipulando mientras están en uso. Esta área se llama memoria. Desde el punto de vista físico, la memoria consiste de chips, ya sea en la tarjeta madre o en un pequeño tablero de circuitos conectado a la tarjeta madre. Esta memoria electrónica permite a la CPU almacenar y recuperar datos muy rápido.
Existen dos tipos de memorias construidas internamente. Una manera de clasificarla es por su permanencia. Algunos chips de memoria siempre conservan los datos que tienen aun cuando la computadora esté apagada. Esta memoria se llama no volátil. Otros chips, que forman la mayor parte de la memoria en una microcomputadora, sí pierden su contenido cuando la energía de la computadora se apaga. La memoria de estos chips es volátil.
Tipos de memoria
  1. ROM o memoria de sólo lectura (Read Only Memory). Una razón importante por la que una computadora necesita la ROM es que así sabe qué hacer cuando se conecta la energía por primera vez. Entre otras cosas, la ROM contiene un conjunto de instrucciones de inicio que aseguran que el resto de la memoria esté funcionando de manera apropiada, verifica los dispositivos de hardware y busca un sistema operativo en las unidades de disco de la computadora.  El software de la ROM se divide en dos partes:

 Rutina de arranque o POST (Power On Self Test, auto diagnóstico de encendido): Realiza el chequeo de los componentes de la computadora; por ejemplo, circuitos controladores de video, de acceso a memoria, el teclado, unidades de disco, etc. Se encarga de determinar cuál es el hardware que está presente y de la puesta a punto de la computadora. Mediante un programa de configuración, el SETUP, lee una memoria llamada CMOS RAM (RAM de Semiconductor de óxido metálico). Ésta puede mantener su contenido durante varios años, aunque la computadora está apagada, con muy poca energía eléctrica suministrada por una batería, guarda la fecha, hora, la memoria disponible, capacidad de disco rígido, si tiene disquetera o no.
 Rutina BIOS o Sistema Básico de Entrada-Salida (Basic Input-Output System): permanece activa mientras se está usando el computador. Permite la activación de los periféricos de entrada/salida: teclado, monitor, ratón, etc.
  1. RAM o memoria de acceso aleatorio (Random Access Memory). Es la memoria del usuario que contiene de forma temporal el programa, los datos y los resultados que están siendo usados por el usuario del computador. En general es volátil, pierde su contenido cuando se apaga el computador, es decir que mantiene los datos y resultados en tanto el bloque reciba alimentación eléctrica, a excepción de la CMOS RAM.
Tanto la RAM como la ROM son circuitos integrados, llamados comúnmente chips. El chip o circuito integrado es una pequeña pastilla de material semiconductor (silicio) que contiene múltiples circuitos integrados, tales como transistores, entre otros dispositivos electrónicos, con los que se realizan numerosas funciones en computadoras y dispositivos electrónicos; que permiten, interrumpen o aumentan el paso de la corriente. Estos chips están sobre una tarjeta o placa.

La velocidad de procesamiento o velocidad de procesar los datos del disco duro a la memoria.


Este tipo de procesos se mide a través de la memoria RAM, la cual es muy importante para un computador, ya que sin esta, el computador no le es posible trabajar.

Función de la memoria RAM:
La memoria RAM es la encargada de tomar los datos del disco duro para trabajarlos en ella. Ejemplo: si abres Word, la memoria toma el ejecutable del disco duro (WINWORD.exe o sea Word) y tu trabajas en la memoria tus documentos, al momento de querer guardarlos los datos vienes e indicas a Word que guarde tu documento el disco duro, y la memoria desocupa esa cantidad de datos y ya quedan en el disco duro.





Registros.- En un CPU de computadora, un registro índice es un registro de procesador usado para direccionar los datos de proceso hacia o desde la memoria RAM.
El registro índice es típicamente usado para hacer operaciones de vectores/arreglos. Los registros índices fueron usados por primera vez en 1949 en la computadora británica Manchester Mark I.
Los registros índices dan formato al acceso de la memoria por accesos aleatorios. Son usados para una clase especial de direccionamiento indirecto donde una constante inmediata, es decir, que es parte de la instrucción en sí misma, es agregada al contenido de un registro para formar la dirección del operando o los datos reales; las arquitecturas que permiten que más de un registro sea usado de esta manera tienen un campo de opcode para especificar qué registro usar.
En las primeras computadoras, sin ninguna forma de direccionamiento indirecto, las operaciones con arreglos tenían que ser realizadas. O repitiendo linealmente el código del programa para cada elemento del arreglo (es decir sobre todas las localizaciones de dirección), o usando técnicas de código auto modificante bastante "sucias".

Tipos de registros

  1. Los registros de datos son usados para guardar números enteros. En algunas computadoras antiguas, existía un único registro donde se guardaba toda la información, llamado acumulador.
  2. Los registros de memoria son usados para guardar exclusivamente direcciones de memoria. Eran muy usados en la arquitectura Harvard, ya que muchas veces las direcciones tenían un tamaño de palabra distinto que los datos.
  3. Los registros de propósito general pueden guardar tanto datos como direcciones. Son fundamentales en la arquitectura de von Neumann. La mayor parte de las computadoras modernas usa GPR.
  4. Los registros de coma flotante son usados para guardar datos en formato de coma flotante.
  5. Los registros constantes tienen valores creados por hardware de sólo lectura. Por ejemplo, en MIPS el registro cero siempre vale 0.
  6. Los registros de propósito específico guardan información específica del estado del sistema, como el puntero de pila o el registro de estado.

 
Instrucciones de una computadora

Un conjunto de instrucciones o repertorio de instrucciones, juego de instrucciones o ISA (del inglés Instruction Set Architecture, Arquitectura del Conjunto de Instrucciones) es una especificación que detalla las instrucciones que una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseño particular de una CPU. El término describe los aspectos del procesador generalmente visibles a un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones, entre otros aspectos.

Existen principalmente de 3 tipos:
 CISC (Complex Instruction Set Computer),
RISC (Reduced Instruction Set Computer) y
La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este conjunto de características de la micro arquitectura, que son los elementos y técnicas que se emplean para implementar el conjunto de instrucciones. Entre estos elementos se encuentras las microinstrucciones y los sistemas de caché.

El lenguaje máquina

El lenguaje máquina está construido a partir de los estados discretos o instrucciones. En la arquitectura de procesamiento, una instrucción dada puede especificar:
Registros particulares para operaciones aritméticas, de direccionamiento o de control.
Ubicaciones particulares de memoria 
Modos de direccionamiento para interpretar operandos
Las operaciones más complejas se construyen a partir de estas, que (en una máquina Von Neumann) se ejecutan secuencialmente, o según el control de flujo.
Muchas o pocas de las operaciones disponibles incluidas en la mayoría de conjuntos son:
  1. Desplazamiento
  Establecer un registro a un valor constante  
  Leer y escribir datos desde dispositivos de hardware
  1. Operaciones matemáticas.-Sumar, restar, multiplicar o dividir dos registros y colocar el resultado en alguno de ellos.
Realizar operaciones bit a bit, teniendo el AND y el OR de cada bit en un par de registros, o el NOT de cada bit en un registro.

  1. Afectan al flujo de programa
  Saltar a otra posición del programa y ejecutar instrucciones allí.
Saltar a otra posición si se cumple cierta condición 
Saltar a otra posición, pero salvando la posición actual para poder volver (realizar una llamada, por ejemplo call printf)
Algunos ordenadores incluyen instrucciones "complejas". Dichas instrucciones pueden tomar muchas instrucciones en otros equipos. Estas se caracterizan por instrucciones que necesitan varios pasos, como el control de múltiples unidades funcionales. Algunos ejemplos son:
Ahorro de registros en la pila
Mover grandes bloques de memoria
Complejas operaciones and/or con aritmética de coma flotante, tales como el seno o la raíz cuadrada. 
  Instrucciones que combinan ALU con un operando de la memoria más que de registros.

Implementación del conjunto de instrucciones

Cualquier conjunto de instrucciones se puede implementar de varias maneras. Todas las maneras de implementar un conjunto de instrucciones dan el mismo modelo programado, y todas pueden hacer funcionar los mismos ejecutables binarios. Las varias maneras de implementar un conjunto de instrucciones dan diversas compensaciones entre el coste, el funcionamiento, el consumo de energía, el tamaño, el etc.
Al diseñar micro arquitecturas, los ingenieros usaron bloques de circuitos electrónicos “duramente-conectados” (diseñado a menudo por separado) por ejemplo l, los multiplexores, los contadores, los registros, ALUs etc. Un cierto tipo del lenguaje de transferencia de registros es a menudo usado para describir la codificación y la secuencia de cada instrucción de ISA usando esta micro arquitectura física.
Hay también algunos nuevos diseños de CPU que compilan el conjunto de instrucción a una RAM escribible o FLASH dentro de la CPU (tal como el procesador Recursiv y el Imsys Cjip), o FPGA (computación reconfigurable). Western Digital MCP-1600 es un ejemplo antiguo, usando una ROM dedicada, separada del micro código.

Diseño del conjunto de instrucciones

La densidad del código
En computadoras antiguas, la memoria del programa era costosa, así que minimizar el tamaño de un programa para asegurar que va a caber en la memoria limitada era a menudo central. Así el tamaño combinado de todas las instrucciones necesitó realizar una tarea particular, la densidad del código, era una característica importante de cualquier sistema de instrucción. Las computadoras con alta densidad del código también tenían a menudo instrucciones complejas para la entrada del procedimiento, los retornos parametrizados, los lazos etc. Sin embargo, " instrucciones CISC" combinan simplemente una operación básica de la ALU, tal como " add", con el acceso de uno o más operandos en memoria (usando modos de dirección tales como directo, indirecto, indexado). Ciertas arquitecturas pueden permitir dos o tres operandos (incluido el resultado) directamente en memoria o pueden permitir realizar funciones tales como el incremento automático del puntero.
RISC, fueron los primeros implementados con profundidad en el período de rápido crecimiento de las memorias de subsistemas, se reduce el código con el fin de simplificar el circuito de aplicación y con ello tratar de aumentar el rendimiento a través de las frecuencias de reloj más elevadas y el uso de más registros. Las instrucciones RISC suelen realizar sólo una operación, como una "suma" de registros o una "carga" de una posición de memoria en un registro, también suelen utilizar una longitud de instrucciones fijas, mientras que un conjunto de instrucciones típicas CISC tiene instrucciones muchos más cortas que esta longitud fija.
Número de operandos
El conjunto de instrucciones puede ser clasificado por el número máximo de operandos explícitamente especificados en las instrucciones. (En los ejemplos que siguen, a, b y c se refieren a celdas de memoria, mientras que reg1 y sucesivos se refieren a los registros de la máquina).
0-operando, también llamada máquina de pila: todas las operaciones aritméticas se ejecutan en la parte superior de una o dos posiciones de la pila, push y pop son las instrucciones utilizadas para acceder a la memoria: push a, push b, add, pop c.
1-operando (máquinas de una dirección), también llamadas máquinas de acumulador, incluida en la mayoría de las primeras computadoras y muchos micro controladores pequeños: la mayoría de instrucciones especifican un operando explícito a la derecha (un registro, una posición de memoria, o una constante) y un operando a la izquierda: load a, add b, store c.
2-operando – la mayoría de las máquinas CISC y RISC entran en esta categoría: CISC – load a, reg1, add reg1, b; store reg1, c RISC - cargas que requieren la memoria explícita, las instrucciones serían: load a,reg1; load b,reg2; add reg1,reg2; store reg2,c.
3-operando, permite una mejor reutilización de los datos: CISC - bien una sola instrucción: add a, b, c, o más generalmente: move a,reg1; add reg1,b,c como la mayoría de las máquinas se limitan a dos operandos de memoria. RISC - Debido a la gran cantidad de bits necesarios para codificar los tres registros, este esquema no suele estar disponible en los procesadores RISC con pequeñas instrucciones de 16 bits: load a, reg1; load b,reg2; add reg1+reg2->reg3; store reg3,c.

Características que debe tener un conjunto de instrucciones

Las características que se pretende que tenga un conjunto de instrucciones son cuatro, principalmente:
1.  Completo: Que se pueda realizar en un tiempo finito cualquier tarea ejecutable con un ordenador (computable o decidible).
2.  Eficiente: Que permita alta velocidad de cálculo sin exigir una elevada complejidad en su UC y ALU y sin consumir excesivos recursos (memoria), es decir, debe cumplir su tarea en un tiempo razonable minimizando el uso de los recursos.
3.  Autocontenidas: Esto es, que contengan en sí mismas toda la información necesaria para ejecutarse.
4.  Independientes: Que no dependan de la ejecución de alguna otra instrucción.
Se puede comprobar que para que un conjunto de instrucciones sea completo solo se necesitan cuatro instrucciones:
-> escritura
-> mover a la izquierda una posición y leer
-> mover a la derecha una posición y leer
-> parar

 

Tipos de instrucciones y ejemplos

1.  Transferencia de datos: Copian datos de un origen a un destino, sin modificar el origen y normalmente sin afectar a los flags o indicadores de condición. Pueden transferir palabras, fracciones de palabras (bytes, media palabra) o bloques completos de n bytes o palabras.
Estas operaciones pueden ser:
-> registro - registro
-> registro - memoria
-> memoria - registro
-> Memoria - memoria
Nemotécnicos más frecuentes:
Move: copia el contenido de un registro(o memoria) a otro.
Store: copia el contenido de un registro a memoria.
Load: copia el contenido de una posición de memoria a un registro.
Move block: copia un bloque de datos de una posición de memoria a otra.
Move múltiple: copia del origen en varias posiciones de memoria.
Exchange: intercambia el contenido de dos operandos.
Crear: pone a 0 el distinto. (Todos los bits)
Set: pone a 1 el destino. (Todos los bits)
Push: introduce un dato en la cabecera de la pila. (Indicada por el SP)
Pop: saca un dato de la cabecera de la pila. (Indicada por el SP)
Instrucciones aritméticas: Son efectuadas por la ALU y suelen cambiar los flags o indicadores de condición.
Nemotécnicos más frecuentes:
Add: Suma.
Add with carry: Suma con acarreo.
Substrato: Resta.
Substrato with borrow: Resta teniendo en cuenta el adeudo anterior.
Increment: incrementa en 1 un valor.
Decrement: decremento en 1 un valor.
Multiply: multiplica.
Divide: divide.
Extend: aumenta el operando de tamaño.
Negate: cambia de signo.
Absolute: valor absoluto.
-> Pueden tener instrucciones para tratar con números en BCD e incluyen operaciones en coma flotante, lo cual se identifica con una 'f' antes del nombre del nemotécnico como por ejemplo:
Fabsolute
  1. Instrucciones de comparación: Suelen preceder a una instrucción de bifurcación condicional y modifican los flags. No hay que pensar que las instrucciones de salto condicional dependen de este repertorio, ya que lo único que hace el salto condicional es consultar los flags y salta si precede, pero no depende de ninguna instrucción de comparación. (de hecho cualquier operación aritmética realizada anteriormente a un salto condicional puede provocar que este "salte").
Nemotécnicos más frecuentes:
*      Compare: Resta los dos operandos pero no almacena el resultado, solo modifica los flags.
*      Test: compara un cierto valor especificado con el 0.
*      Instrucciones lógicas: Realizan operaciones booleanas "bit a bit" entre dos operandos. Como las aritméticas también modifican los flags.
Nemotécnicos más frecuentes:
*      and: el "y" lógico.
*      or: el "o inclusivo" lógico.
*      xor: el "o exclusivo" lógico.
*      not: la negación lógica. (complemento a 1, no confundir con el cambio de signo "negate" que es el complemento a 2)
*      Instrucciones de Desplazamiento: Pueden ser aritmético o lógico y pueden incluir o no rotaciones. Pueden ser de izquierda a derecha.
Nemotécnicos más frecuentes:
*      shift: desplazamiento aritmético o lógico.
*      rotate: rotación con o sin acarreo.
*      Instrucciones de bits: Comprueban un bit del operando y su valor lo reflejan en el indicador de cero. Pueden poner un bit a 0 o complementarlo.
Nemotécnicos más frecuentes:
*      Bit test: comprueba UN bit.
*      Bit CLEAR: comprueba un bit y lo pone a 0.
*      Bit set: comprueba un bit y lo pone a 1.
Instrucciones de control: Permiten modificar la secuencia normal de ejecución de un programa, puede hacerse por salto condicional relativo o absoluto.
Se clasifican en cuatro grupos:
-> salto incondicional
-> salto condicional
-> Llamada a subrutinas
-> Gestión de las interrupciones

Saltos: Pueden ser condicionales o incondicionales, se suelen especificar como jump o brantch, y en el caso de los condicionales se suele llamar jcond o bcond donde cond es una o más letras que indican la condición que ha de cumplirse para que el salto se produzca.

-> Incondicional: salta sin comprobar ninguna condición.
Nemotécnicos más frecuentes: jump o brantch
-> Condicional: salta si la condición se cumple.
Nemotécnicos más frecuentes: jcond o bcond
Llamadas a subrutinas: Invoca la ejecución de funciones anteriormente definidas.
Nemotécnicos más frecuentes: call (llamada) y ret (retorno)
Gestión de interrupciones: Se usan para llamar a las rutinas de servicio de interrupción y esto se puede hacer por hardware o bien por software. Necesita una instrucción similar a return para retornar al contexto anterior pero restableciendo el estado de la máquina, para no afectar a la aplicación a la cual se interrumpió (iret).
Instrucciones de E/S: Son instrucciones de transferencia salvo que el origen/destino de dicho flujo es un puerto de un dispositivo de E/S. Estas instrucciones pueden darse mediante dos alternativas:
->E/S "mapeada" en memoria: Los periféricos tienen direcciones asignadas de la MP por lo que no se necesitan instrucciones especiales y las operaciones se realizan con las ya vistas, como son: load, store y move.
->E/S independiente: Necesitan unas instrucciones especiales para indicarle al procesador que nos estamos refiriendo al mapa de direcciones de E/S, ya que este mapa y el mapa de memoria son disjuntos.
Nemotécnicos más frecuentes:
Input o Read: Permite leer información de un puerto y trasladarla a memoria principal.
Output o write: Permite escribir información en un puerto de un dispositivo.
Test i/o: Lee información de control de un periférico.
Control i/o: Envía información de control hacia un periférico.
Instrucciones de control y misceláneas:
Nemotécnicos más frecuentes:
Halt: Detiene la ejecución del programa hasta que una interrupción arranca otro programa.
Wait: Sirve para detener la ejecución de un programa hasta que sucede un determinado evento que no es una interrupción (otra condición externa al primer programa).
Nop: No realiza ninguna operación, sirve para rellenar huecos en un programa o temporizar esperas.
Enable: Habilita las interrupciones.
Disable: Deshabilita las interrupciones.
Test and set: Se utiliza para la implementación de la exclusión mutua, esto es, que un procesador no pueda acceder a un determinado recurso que está siendo usado por otro procesador en ese mismo momento.
Se usan como semáforos, esto es, se declara una variable entera que tendrá el valor 0 si el recurso esta libre y 1 si está siendo utilizado, de manera que si un procesador comprueba y el semáforo está en 1 tendrá que esperar hasta que este cambie a 0. (1 = s.rojo y 0 = s.verde)