martes, 23 de octubre de 2012

Ley de moore y Tecnología TRI-GATE


LEY DE MOORE
 
En 1965, Gordon Moore (co-fundador en 1968 de la compañía Intel) afirmó que el número de 
transistores por centímetro cuadrado en un circuito integrado se duplicaba cada año y que la tendencia  continuaría durante las siguientes dos décadas.

Más tarde, en 1975, modificó su propia afirmación y predijo que el ritmo bajaría, y que la densidad de  transistores se duplicaría aproximadamente cada 18 meses.
Esta progresión de crecimiento exponencial de la densidad  de transistores, o sea, el duplicar la capacidad de los  microprocesadores cada año y medio, es lo que se considera actualmente como la Ley de Moore. En abril de 2005 se  cumplieron 40 años de la ley de Moore y la industria de la  microelectrónica estima que seguirá siendo válida al menos 
otros 20 años. 

Para todos nosotros realmente es difícil imaginar la enorme cantidad de transistores que constituyen actualmente un  circuito integrado o un microprocesador de computadora. 


Paralelismo y la ley de Moore


El cálculo paralelo se ha hecho recientemente necesario para tomar la ventaja llena de las ganancias permitidas por la ley de Moore. Durante años, los fabricantes del procesador consecuentemente entregaron aumentos de precios del reloj y paralelismo del nivel de la instrucción, de modo que el código enhebrado del modo solo ejecutara más rápido en procesadores más nuevos sin la modificación. Ahora, para manejar la disipación de poder de la CPU, los fabricantes del procesador favorecen el diseño de chip multiprincipal, y el software se tiene que escribir en un multienhebrado o manera de multiproceso de tomar la ventaja llena del hardware.

TECNOLOGÍA TRI-GATE

Intel anuncia la creación del primer transistor de tres dimensiones que bautizó con el nombre de Tri-Gate, el cual representaría una evolución de los transistores al ser más pequeño, más veloz y consumir menos energía que su antecesor, el transistor bidimensional o plano. Se inicia una nueva era en el campo de los microprocesadores.


Hacerlos cada vez más pequeños, más rápidos, más eficientes en el consumo de energía y con una mejor relación costo/beneficio, al parecer, es el lema principal de los fabricantes de componentes electrónicos, entre los que Intel viene consiguiendo interesantes avances. Esta vez, al introducir un revolucionario diseño de transistores tridimensionales, llamados Tri-Gates.




GNU Parallel



Instalar GNU Parallel en Linux

GNU Parallel es una de las últimas joyas del Proyecto GNU, es una herramienta para el intérprete de comandos que permite la ejecución concurrente de tareas, tanto local como remotamente. Típicamente una tarea es un comando o un script.
Para comenzar a trabajar con GNU Parallel en Linux, sigue estos sencillos pasos
1.   Descarga la versión más reciente que encuentres en el sitio oficial.

wget http://ftp.gnu.org/gnu/parallel/parallel-20101202.tar.bz2

2.   Descomprime e ingresa al directorio

tar jxf parallel-20101202.tar.bz2
cd parallel-20101202/

3.   Sigue los tres pasos habituales: configura, compila e instala. Si tienes compiladores y bibliotecas GNU no tendrás ningún problema.

$ ./configure
make
sudo make install

4.   La documentación oficial en línea es extensa e idéntica al manual de usuario:

man parallel



Modo de Utilización

Su modo de utilización, es poner a trabajar cada uno de los procesadores y/o núcleos con que cuenta el equipo para agilizar el tiempo de realización de cualquier tarea o proceso.


Ejemplo

Procesando los Archivos en Parallel

01 $ find . | parallel -v ‘echo $(ls -1 /proc/self/task); sleep 1s; echo {}’
02 echo $(ls -1 /proc/self/task); sleep 1s; echo .
03 10943
04 .
05 ...
06 $ find . | parallel -v -j +0 ‘echo $(ls -1 /proc/self/task); sleep 1s;
echo {}’
07 ?

14 sys     0m24.478s
Ventajas

Permite la ejecución concurrente de tareas, tanto local como remotamente
Parallel GNU está escrita para tener las mismas opciones que xargs.
Si escribes lazos con cáscara, se encuentra paralelo GNU puede ser capaz de remplazar la mayoría de los bucles y hacer que se ejecute más rápido mediante la ejecución de varios trabajos en paralelo.
GNU Parallel puede incluso sustituir los bucles anidados.
GNU paralelo hace que la salida de los comandos sea el mismo resultado que usted quisiera conseguir para esto se tenía que ejecutar los comandos de forma secuencial.
Es posible utilizar la salida de GNU paralelo como entrada para otros programas.

jueves, 18 de octubre de 2012

INTRODUCCIÓN DE PARALELISMO


Introducción al paralelismo

¿Por qué la computación paralela?

Casi todo cálculo realizado durante los primeros cuarenta años de la historia de la Computadoras podrían llamarse secuencial. Una de las características de la computación secuencial  inicial es que emplea un único procesador para resolver algún problema.

El cálculo paralelo se define como la práctica de emplear un (usualmente grande) Número de procesadores cooperantes, la comunicación entre ellos para resolver los grandes problemas rápidamente. Rápidamente se ha convertido en un área importante

Durante los últimos cinco años, la computación paralela se ha vuelto tan amplia y fuerte que la mayoría de las investigaciones realizadas en los campos del diseño y análisis de algoritmos, lenguajes de programación, aplicaciones informáticas y arquitecturas informáticas están dentro de su contexto.

Nuevas máquinas en paralelo con nuevas arquitecturas se están construyendo cada día. Los ordenadores moderadamente paralelas generalmente se tratan de diferentes formas.

El número de procesadores en estas máquinas llega a 65.536 hoy en día, con algunos sueños de construir en un futuro próximo una máquina con 128.000 procesadores. Sin embargo, el alto costo de la construcción de este tipo de máquinas, combinado con la falta de los fondos disponibles que tradicionalmente provenía de los militares, aplazar planes.


Redes de interconexión

La computación paralela llegó a la edad de mediados de los ochenta, cuando los fabricantes de chips fueron capaces de producir grandes cantidades de chips de  procesador económicamente. Por lo tanto de repente, tener un montón de fichas que contienen los procesadores junto con pequeño local memorias (los elementos de procesamiento de llamadas o PES) no fue un problema.

Máquinas comerciales paralelas y simuladores

La última década vio un gran número de nuevas máquinas paralelas de mayor o menor éxito, capacidades, potencia de cálculo y las etiquetas de precios. Existe un informe en curso enumerando el máximo rendimiento de las 500 supercomputadoras en el mundo que se actualiza con regularidad. El funcionamiento máximo es el máximo rendimiento teórico de equipo. (También significa que el rendimiento mínimo que el fabricante asegura que nunca se alcanzará.) De acuerdo con el informe publicado en Julio de 1993, la CM-5 computadoras con procesadores 1024 y 131 pico Gflops actuación fue la computadora más potente del mercado, su precio fue alrededor de $ 25 millones. 

¿Quién necesita computadoras paralelas?

La mayoría de la gente considera que las computadoras ya extremadamente potente y rápido. Si utilizar un ordenador personal para escribir cartas, navegar por Internet, equilibrando su chequera y jugando al ajedrez, entonces usted probablemente no necesita más potencia de cálculo (a menos que usted es un jugador de ajedrez muy bueno). Por el otro mano, hay varias aplicaciones científicas que sin duda podría utilizar mucho más potencia de cálculo. Entre ellos:
  • *      Gráficos: Representación de volumen, la realidad virtual, el trazado de rayos.

  • *      Simulación: predicción del tiempo, la verificación Chip, la exploración petrolera.

  • *      Procesamiento de imágenes: Mejora de la imagen, la extracción de características.

  • *    Inteligencia Artificial: reconocimiento de imagen, reproducción de juegos (ajedrez, etc).

  • *      Buscando base de datos grande: Programación de vuelos, la coincidencia de ADN (La proyecto del genoma humano).



Esta lista puede seguir y seguir, ya que cualquier área científica podría utilizar mejor y computadoras más rápidas. De hecho, los ordenadores se consideran los laboratorios del futuro. 

Paralelismos de E/S  -El próximo desafío

A pesar de que el rendimiento de procesamiento de los ordenadores han aumentado considerablemente en los últimos años, de entrada / salida (I / O) dispositivos no se han mantenido con esta tendencia. Mientras que la velocidad del procesador recibe aproximadamente ocho veces más rápido cada diez años, el acceso a la memoria principal y el disco disminución del tiempo de ciclo por sólo un tercio en el mismo período de tiempo. Como te das cuenta, esta se ensancha la brecha entre E / S y los tiempos de procesamiento.

Por lo tanto, nuestra capacidad de utilizar ordenadores muy rápidos eficiente, depende de nuestra capacidad para alimentar con datos suficientemente rápido. Este es el paralelo llamado  E/S  cuello de botella, la mala noticia se espera que empeore en el futuro, y una gran cantidad de investigación que se está haciendo hoy en esta dirección. La ley federal de alta Performance Computing y el programa de Comunicación (HPCC) convoca a la desarrollo de la computadora 3T, que tendrá
      1 Tflops potencia de cálculo,
      1 TByte memoria principal, y
      1 TByte / s de E / S de ancho de banda.

martes, 16 de octubre de 2012

Ley de Amdahl

La ley de Amdahl es un modelo matemático que describe la relación entre la aceleración esperada de la implementación paralela de un algoritmo y la implementación serial del mismo algoritmo

La ley de Amdahl se usa para averiguar la mejora máxima de un sistema cuando solo una parte de éste es mejorado.

Para esto se toma en cuenta la parte "secuencial'' del proceso, es decir, aquella que independientemente de cuántos elementos de procesamiento tenga, puede ser realizada por uno solo de ellos; y el resto del cálculo no podrá continuar hasta que se haya completado la parte secuencial.

La Ley de Amdahl propone normalizar el tiempo que toma realizar la operación en un solo procesador al valor de 1

jueves, 11 de octubre de 2012

Paralelismo


Paralelismo


El paralelismo en la informática, es una función que se realiza para ejecutar varias tareas al mismo tiempo.

Aplicaciones

El ejemplo de la computación paralela se convierte cada día en mas grande y rápida, muchos problemas considerados anteriormente muy largos y costosos se han podido solucionar. El paralelismo se ha utilizado para muchas matemáticas diferentes, desde bioinformática para hacer plegamiento de proteínas hasta económicamente para hacer simulación en matemáticas.

Tipos de paralelismo en informática

·         Nivel de bits
·         Nivel de instrucción
·         Nivel de datos o nivel de proceso
·         Nivel de tareas
El paralelismo o procesamiento paralelo ha sido empleado durante muchos años sobre todo para la computación de alto rendimiento, teniendo en cuenta las generaciones de procesadores y sus características.

Desventajas

·         Requiere de un gran número de ciclos de procesamientos o acceso a una gran cantidad de datos.
·         Encontrar un hardware y un software que permite brindar estas utilidades comúnmente proporciona inconvenientes de costos, seguridad y disponibilidad.

Ventajas

·         Brindar a las empresas, instituciones y usuarios en general el beneficio de la velocidad
·         Ventaja competitiva, provee una mejor de los tiempos para la producción de nuevos productos y servicios.
·         Colaboración y flexibilidad operacional.

Clasificación de los sistemas paralelos en los sistemas informáticos

SISD

Arquitectura de simple construcción sobre simple dato. Serie en datos e instrucciones, arquitectura von Neumann.

SIMD

Un solo flujo de instrucciones y múltiples en datos. Computadores matriciales. Una unidad de control que gobierna varias unidades aritmetico-logicas.

MISD

Varios flujos de instrucciones y uno solo de datos. Arquitectura no implementada, consecuencia teórica de la clasificación. Superestructura pipeline, varios conjuntos de unidad de control más unidad aritmético lógica realizan partes de una operación sobre un flujo de datos.

MIMD

Arquitectura multiprocesador con varios flujos tanto de instrucciones como de datos. Varios procesadores serie convencionales que manejan cada uno un flujo de instrucciones sobre un flujo de datos.

Flujo de Control

Las instrucciones se van ejecutando según el orden en el que se encuentran en memoria

Flujo de Datos

El flujo de ejecución es conducido por los datos; una instrucción será ejecutada cuando los operadnos estén disponibles.

Reducción

La ejecución se realiza por demanda: una instrucción será ejecutada cuando otra necesite sus resultados. Son una clase de las de flujo de datos.



Tipos de Paralelismo

Paralelismo de nivel de Bit

Es cuando se aumenta la el tamaño de la palabra en la computadora, hacer esto reduce el numero de instrucciones que son necesarias para ejecutar una instrucción en la cual sus operadores son mas grandes que su tamaño de palabra.


Paralelismo a nivel de instrucciones
Es cuando un grupo de instrucciones que compone un programa son ejecutadas paralelamente sin cambiar el resultado final del programa 


Paralelismo de Datos
Es cuando se distribuye los datos a través de diferentes nodos de cómputo para que los procesen en paralelo y las tareas que realizan son comunes y el resultado es uno solo.


Paralelismo de tareas
Cuando cálculos totalmente diferentes se realizan en los mismos o diferentes datos. 

jueves, 4 de octubre de 2012

Invetigación de RPC


Implementaciones más comunes de RPC


    RPC está desarrollado en C, pero algunas versiones permiten programar en otros lenguajes como Fortran. Las implementaciones más actuales trabajan sobre XML formando los XML-RPC.
Para la conexión entre un cliente y un servidor utilizando RPC se siguen dos pasos: localizar la máquina servidor, y localizar el proceso en esa máquina.
  •    Las implementaciones más evolucionadas de RPC incluye la de Sun ONC (Open Network Computing) y DCE (Distributed Computing Environmet) Soporta el modelo cliente-Servidor sobre el que se construyo un sistema de ficheros en red NFS.


Como se asegura las transmisiones basadas en RPC


La llamada de procedimiento remoto (RPC) segura protege los procedimientos remotos con un mecanismo de autenticación. El mecanismo de autenticación Diffie-Hellman autentica tanto el host como el usuario que realiza una solicitud para un servicio. El mecanismo de autenticación utiliza el cifrado Estándar de cifrado de datos (DES). Las aplicaciones que utilizan RPC segura incluyen NFS y los servicios de nombres, NIS y NIS+.

DIFFIE-HELLMAN
El algoritmo Diffie-Hellman fue el primer algoritmo de llave pública  inventado. Esto significa que sus autores también son los dueños de la idea. El algoritmo puede ser usado para la distribución de llaves, pero no para cifrar o descifrar mensajes. Su seguridad reside en la dificultad de calcular logaritmos discretos en un campo finito comparada con la facilidad de realizar exponenciaciones es en el mismo campo.

 

Como se aseguran las transmisiones basadas en RPC


1. Fallos en los procedimientos llamados
    La ejecución del proceso llamado se detiene por errores del
    hardware o del sistema operativo que lo ejecuta (ejemplo: caída del sistema)
    También por errores internos del propio procedimiento (divisiones
     por 0, índices de arrays fuera de rango, etc.)
2. Fallos en la comunicación
     Perdida de la conexión: la red deja de enviar paquetes (caída de la red, perdida de un    enlace, ...)
    Corrupcion del contenido de alguno de los mensajes enviados.
    Perdida de paquetes: algún mensaje  no llega a su destino.
    Recepcion fuera de orden: paquetes retrasados recibidos de forma desordenada
3. Otros fallos: bugs en el proceso llamado, ataques, etc.


En una base de datos para que se implementan los RPC


SQL Server admite el uso de servidor a servidor RPC, que permite utilizar una conexión a un servidor para llamar a un procedimiento en un servidor secundario. En este artículo se describe un método para utilizar RPC para llamar a cualquier procedimiento almacenado extendido personalizado en un servidor secundario sin cambiar el código de la aplicación.

La llamada a un procedimiento almacenado extendido puede producirse de dos maneras diferentes:
·         Ad-hoc Transact-SQL.
·         Mediante una llamada a un "contenedor" procedimiento almacenado.
En cualquier caso, puede redirigir la llamada a un servidor remoto mediante una llamada de SQL Server RPC sin realizar ningún cambio a la aplicación cliente.

Que vulnerabilidades presentan el uso  de los RPC


La vulnerabilidad podría permitir a un atacante ejecutar código arbitrario y tomar control total del sistema afectado. La configuración por defecto no permite que los usuarios sean atacados por medio de esta vulnerabilidad, aunque podría ser afectada en aplicaciones de terceros.
Vulnerabilidades XMLRPC en PHP
Otra vulnerabilidad bastante común en esta categoría incluye vulnerabilidades en el uso de XML-RPC
XML-RPC es un protocolo de llamada a procedimiento remoto que usa XML para codificar las llamadas y HTTP como mecanismo de transporte.
Es un protocolo muy simple ya que sólo define unos cuantos tipos de datos y comandos útiles, además de una descripción completa de corta extensión.
Un común desperfecto está en los distintas implementaciones de XML-RPC en PHP pasando entradas de datos del usuario sin filtrar por la función eval() en el servidor XML-RPC. Esto permite al atacante ejecutar código, en el sistema vulnerable. Cualquier usuario con habilidad de subir XML manualmente al servidor puede insertar código PHP que puede ser ejecutado por la aplicación Web vulnerable.

lunes, 1 de octubre de 2012

Definiciones de SOAP Y CORBA


SOAP (Simple Object Access Protocol) 


Es un protocolo para el intercambio de mensajes sobre redes de computadoras, generalmente usando HTTP. Está basado en XML, a diferencia de DCOM y CORBA que son binarios; esto facilita la lectura por parte de los humanos, pero también los mensajes resultan más largos y, por lo tanto, considerablemente más lentos de transferir.

Existen múltiples tipos de modelos de mensajes en SOAP pero, por lejos, el más común es el RPC, en donde un nodo de red (el cliente) envía un mensaje de solicitud a otro nodo (el servidor) y el servidor inmeditamente responde el mensaje al cliente.

Los mensajes SOAP, son idependientes del sistema operativo, y pueden transportarse en varios protocolos de internet como SMTP, MIME y HTTP.

SOAP al principio significaba Simple Object Access Protocol, luego fue Service Oriented Architecture Protocol, pero actualmente es simplemente SOAP. El acronismo inicial, fue dejado de lado en la versión 1.2, cuando se volvió una recomendación de la W3C el 24 de junio de 2003, porque su nombre daba a confusión.

SOAP fue diseñado por David Winer, Don Box, Bob Atkinson y Mohsen Al-Ghosein en 1998 con respaldo de Microsoft. Actualmente, la especificación SOAP es mantenida por el XML Protocol Working Group de la W3C.



CORBA (Common Object Request Broker Arquitecture)

CORBA es una tecnología de objetos distribuidos que define una arquitectura de servicios y middleware ORB para el desarrollo de Sistemas Distribuidos.

CORBA es ya una tecnología madura y ha demostrado sobradamente su eficiencia, robustez y fiabilidad. Prueba de ello es la experiencia de Telefónica I+D desarrollando para el Grupo Telefónica un abanico de soluciones profesionales distribuidas para resolver distintas problemáticas del mundo de las TIC y todas ellas con características definibles dentro del concepto “entornos de alta criticidad" y “multiplataforma".