martes, 4 de diciembre de 2012

MIPS



INTRODUCCIÓN
Ciertos conceptos relativos a los procesadores, tales como detalles de implementación, análisis de rendimiento, consumo de energía y fiabilidad son fundamentales en los cursos orientados a arquitectura de computadoras. El procesador MIPS (del inglés Microprocessor without Interlocked Pipeline Stages) se utiliza actualmente en muchas Universidades para enseñar estas materias. 

SIMULADOR MIPS
CONCEPTO
Un simulador MIPS traduce el código en lenguaje ensamblador en lenguaje maquina, el simulador recibe como entrada un código en assembler, permitiendo analizar el comportamiento interno del procesador, el estado de los módulos y el valor de las señales de control en cada momento de la ejecución. 

MIPSIM2


MIPSim 2 API es un API muy pequeño y simple pero potente. Consiste en un conjunto de funciones útiles que se pueden utilizar para leer y escribir en los registros y la memoria de la computadora. Esto permite a los programadores escribir programas que pueden controlar MIPSim en cierta medida y proporciona una gran flexibilidad.
Todos los programas están escritos para manipular los datos. Estos datos son a veces tan simples como parámetros enteros, pero por lo general es algún tipo de estructura de datos compleja que reside en la memoria. Desafortunadamente MIPSim actualmente (en la versión 2) no es compatible con las directivas del ensamblador. Así que no hay manera fácil de construir estructuras de datos en la que el programa va a funcionar.


BIBLIOGRAFÍA

Calvo V.  F. A. - Roldán R. J. F. - San Miguel S. A. (2010), Simulador del procesador MIPS sobre el formalismo DEV, Universidad Complutence de Madrid: España, no publicado


http://www.mipsim.com/mipsim/api.aspx, MIPSin MIPS Assembly Language Simulator, Koca Çetin, recuperado 4 de diciembre de 2012

miércoles, 24 de octubre de 2012

DISCOS DUROS (HENRY)

INTRODUCCION.-


Un disco duro es un dispositivo que permite el almacenamiento y recuperación de grandes cantidades de información. Los discos duros forman el principal elemento de la memoria secundaria de un computador, llamada así en oposición a la memoria principal o memoria RAM (Random Access Memory, memoria de acceso aleatorio).








Tanto los discos duros como la memoria principal son memorias de trabajo (varían su contenido en una sesión con la PC). Sin embargo, presentan importantes diferencias: la memoria principal es volátil (su contenido se borra al apagar el computador ), muy rápida (ya que se trata de componentes electrónicos) pero de capacidad reducida. La memoria secundaria, en cambio, es no volátil, menos rápida (componentes mecánicos) y de gran capacidad. La memoria principal contiene los datos utilizados en cada momento por el computador pero debe recurrir a la memoria secundaria cuando necesite recuperar nuevos datos o almacenar de forma permanente los que hayan variado.

CARACTERISTICAS DE LOS DISCOS.-

PISTAS Y SECTORES:
Los sectores son las unidades mínimas de información que puede leer o escribir un disco duro. Generalmente, cada lado de un disco duro o flexible contiene varias pistas concentricas, numeradas empezando por (00 -> para la pista mas externa). Cada pista esta formateada en sectores de 512 bytes, en donde se almacena la información. Los dispositivos de los discos se hacen funcionar por medio de un controlador que se ocupa de localizar los cabezales de lectura/escritura sobre la superficie del disco para la transferencia de información entre el disco y la memoria RAM de la PC. Por otro lado existe un cabezal para cada superficie del disco. Para cualquier cara del discoduro/fexible, una petición de lectura o escritura hace que el controlador del disco mueva los cabezales (si es necesario), a la pista requerida. Una vez finalizada este procedimiento recién se realiza la operación de lectura o escritura.


CILINDROS: 
El cilindro es el conjunto vertical de todas las pistas con el mismo numero esto en cada cara del disco duro. Por tanto el cilindro cero es el conjunto de pistas numeradas por 0, cilindro uno es el conjunto de pistas numeradas por 1 y asi sucesivamente. Entonces en un disco el cilindro cero consiste de la pista 0 en el lado 1 y la pìsta 0 en el lado 2, etc. Cuando se escribe un archivo el sistema llena todas las pistas de un cilindro y después avanza los cabezales al siguiente cilindro. Una referencia a las caras de un disco, pistas y sectores es por medio de un numero. Los numeros de lado y pista empiezan con cero, pero los sectores pueden ser numerados de una de dos formas:

1. DIRECCION PISTA- CILINDRO: Los números de sector en cada pista inician con 1, asi que el primer sector en el disco tiene la dirección cilindro 0, pista 0, sector 1.
2. NUMERO DE SECTOR RELATIVO: Los sectores pueden ser enumerados de manera relativa al inicio del disco, de modo que el primer sector en el disco esta sobre el cilindro 0, pista 0, y tiene la dirección relativa de sector 0.

GRUPOS: 
Un grupo es un conjunto de sectores que el DOS trata como unidad de espacio de almacenamiento El tamaño de un grupo siempre es potencia de 2 . Por lo general un disco tiene cuatro sectores por grupo (en un disco donde se utiliza un sector por grupo, el sector y grupo son lo mismo). Si un archivo llega a ocupar la frontera de un grupo automáticamente el grupo queda reservado aunque el archivo solo ocupe uno de los cuatro sectores (desperdiciándose por defecto el resto de los sectores).

Un disco con dos sectores por grupo se vería así:
Un disco con cuatro sectores por grupo se vería así:

DIRECCIONAMIENTO DE BLOQUES DE DATOS EN EL DISCO DURO/ DISCOFLEXIBLE

Se refiere a la estructura del soporte físico que le da al usuario, donde: Elemento base es el sector o bloque:

  • Espacio disco duro se expresa en sectores
  • Los sectores son de 512 bytes Diferentes tipos sistemas archivos se apoyan sobre diferentes formas:
  • Cada grupo reagrupa los bloques físicos en bloques lógicos de diferente tamaño

El número total de sectores de un disco duro se puede calcular:




martes, 23 de octubre de 2012

MICROARQUITECURA Y ARQUITECTURA DE COMPUTADORES (HENRY)

MICROARQUITECTURA:

En computación, una microarquitectura es una descripción del circuito eléctrico de una computadora, de la unidad central de proceso o del procesador digital de señal, que es suficiente para describir completamente el funcionamiento del hardware.


En ámbitos académicos, suele emplearse el término "organización de la computadora", mientras que en la industria de la computación suele utilizarse el término microarquitectura. Ambas palabras son sinónimas.
La microarquitectura y la arquitectura de conjunto de instrucciones constituyen la arquitectura de computadora.

 

Microarquitectura de un computador básico


ARQUITECTURA:


La arquitectura de computadoras es el diseño conceptual y fundamental de un sistema de computadoras. Podemos decir que es una descripción fundamental de los requerimientos y las implementaciones de diseño para varias partes de una computadora. “La arquitectura de computadoras se interesa por la estructura y desempeño de los diferentes módulos funcionales de procesamiento del usuario.”   

 

 

TRADEOFFS:


El concepto trade-off tiene difícil denominación en español. Significa gestión de situaciones en que aparecen efectos contrapuestos; pero en computadoras nos referimos al periodo desarrollado de una logística que trata particularmente del ciclo pedido-entrega, servicio al cliente y sistema logístico, tradeoff es un criterio de desempeño, que evalúa a la arquitectura de una determinada compudatdora, con respecto a su tecnología empleada. Los principales aspectos que se toman son los de capacidad y velocidad. 

VENTAJAS:

Al tener un set de instrucciones base, ya no es necesario diseñar un sistema de instrucciones para cada tipo de computador, en cambio solo se realizan mejoras

DESVENTAJAS:

Surgimiento de problemas de intereses de las empresas fabricantes de dispositivos haciendo que el avance tecnológico sea lento. Estancamiento en la creación de nuevas arquitecturas.

 

BIBLIOGRAFIA:

M. Morris Mano (1994), Arquitectura de computadoras 3ra Edicion.

Universidad Catolica de Chile, Aquitectura de computadoras, recuperado de http://www.aaecheve.com/files/7.ArquitecturaComputadorBasico.pdf 

Universidad Jose Antonio Paez, Arquitectura del Power PC, recuperado de http://arquitectura-powerpc.blogspot.com/2008/04/la-arquitectura-de-powerpc.html

 

 

sábado, 20 de octubre de 2012

MICROARQUITECTURA VS ARQUITECTURA (JUMER)


En ingeniería de computación, la microarquitectura también llamada como organización de la computadora, es la manera que una arquitectura del conjunto de instrucciones (ISA) es implementada por el procesador.
La arquitectura de computadora es la combinación del diseño determinado de la micro arquitectura y del conjunto de instrucciones.

Aspectos de la microarquitectura y arquitectura
La trayectoria de datos intubada es el diseño más común de la trayectoria de datos en la microarquitectura de hoy.
La arquitectura entubada permite solapar diferentes instrucciones durante la misma ejecución, siendo algo muy similar a la línea de montaje de una fábrica. El intubado incluye varias etapas fundamentales en diseños de las microarquitecturas,como pueden ser la lectura de la instrucción (fetch), el decodificado de la instrucción, la ejecución, y la escritura (write back) de los resultados.
Las unidades de ejecución son también esenciales para la microarquitectura. Estas unidades incluyen las unidades aritmético lógicas (ALU), las unidades de coma flotante (FPU), las unidades de la lectura/escritura (load/store), la predicción de bifurcación, y SIMD. Estas unidades realizan las operaciones o los cálculos del procesador. La selección del número de unidades de ejecución, su latencia y rendimiento es otra de las tareas centrales del diseño microarquitectónico. El tamaño, latencia, el rendimiento y la conectividad de las memorias dentro del sistema son también decisiones de dicho diseño.
A diferencia del diseño arquitectónico, donde lo que se pretende es lograr un nivel de desempeño óptimo, el diseño microarquitectónico presta una atención más cercana a otras necesidades. Puesto que las decisiones de diseño microarquitectónico afectan directamente a lo que va dentro de un sistema, se debe prestar atención a cosas como:
  1. Ø  Área/coste del chip
  2. Ø  Consumo de energía
  3. Ø  Complejidad de la lógica
  4. Ø  Facilidad de la conectividad
  5. Ø  Facilidad de fabricación
  6. Ø  Facilidad de la depuración
  7. Ø  Facilidad de hacer pruebas


VENTAJAS DE LAS ARQUITECTURAS
Pila: Modelo sencillo para evaluación de expresiones (notación polaca inversa). Instrucciones cortas pueden dar una buena densidad de código.
Acumulador: Instrucciones cortas. Minimiza estados internos de la máquina (unidad de control sencilla).
Registro: Modelo más general para el código de instrucciones parecidas. Automatiza generación de código y la reutilización de operandos. Reduce el tráfico a memoria. Una computadora actualmente tiene como estándar 32 registros. El acceso a los datos es más rápido.

DESVENTAJAS DE LAS ARQUITECTURAS

Pila: A una pila no se puede acceder aleatoriamente. Esta limitación hace difícil generar código eficiente. También dificulta una implementación eficiente, ya que la pila llega a ser un cuello de botella es decir que existe dificultad para la transferencia de datos en su velocidad mk.

Acumulador: Como el acumulador es solamente almacenamiento temporal, el tráfico de memoria es el más alto en esta aproximación.

Registro: Todos los operadores deben ser nombrados, conduciendo a instrucciones más largas.

TRADE-OFF

Trade-off o simplemente tradeoff es una situación en la cual se debe perder cierta cualidad a cambio de otra cualidad. Implica una decisión en la cual se comprende totalmente las ventajas y desventajas de cada elección.
Trade-off se refiere, generalmente, a perder un tipo de cualidad, pero ganando otro tipo de cualidad. Un ejemplo clásico de trade-off ocurre en el caso del juego de Damas. Un jugador puede dejar que el adversario le coma una pieza en su juego. Pero esa acción le va a permitir obtener el doble o triple de piezas en su jugada. 
Esto significa, para que el jugador pueda conseguir un buen resultado es preciso sacrificar una pieza.

SET DE INSTRUCCIONES
Los conjuntos de instrucciones de las máquinas deben tender a poseer una serie de propiedades, bastante ideales e imprecisas, que pueden resumirse en las siguientes:
  1. Ø  El conjunto de instrucciones de un computador debe ser completo en el sentido de que se pueda construir un programa para evaluar una función computable usando una cantidad de memoria razonable y empleando un tiempo moderado, es decir, el número de instrucciones de ese programa no debe ser demasiado elevado.
  2. Ø  Los juegos de instrucciones también tienen que ser eficientes, esto significa que las funciones más necesarias deben poder realizarse usando pocas instrucciones.
  3. Ø  El conjunto de instrucciones de una máquina debe ser regular, es decir debe ser simétrico (por ejemplo, si existe una instrucción de desplazamiento a la izquierda, debe haber otra de desplazamiento a la derecha, etc.) y ortogonal, es decir, deben poder combinarse, en la medida de lo posible, todos las operaciones con todos los tipos de datos y modos de direccionamiento.

Es necesario encontrar un compromiso entre la simplicidad del hardware y del software. Un mínimo para llegar a ese compromiso se consigue con los tipos de instrucciones siguientes:
  1. Ø  Instrucciones de transferencia de datos.
  2. Ø  Instrucciones aritméticas.
  3. Ø  Instrucciones lógicas.
  4. Ø  Instrucciones de control del flujo del programa (bifurcaciones, bucles, procedimientos) 
  5. Ø  Instrucciones de entrada y salida.
     REFERENCIA BIBLIOGRAFICA
   Miles Murdocca and Vincent Heuring (2007). Computer Architecture and Organization, An Integrated Approach.

    Michael J. Flynn (2007). Computer Architecture Pipelined and parallel Processor Design. Jones  and Bartlett. 

  Wikipedia. (09 de octubre de 2012). Recuperado el 20 de octubre de 2012, de http://es.wikipedia.org/wiki/Trade-off

    Hennessy, J.L., & Patterson, D.A. (2003). Computer Architecture. A Quantitative Approach. 3 edn. Morgan Kaufmann Publishers.




martes, 16 de octubre de 2012

Tutorial de Monitoreo MRTG


¿Que es ICMP?

ICMP (Protocolo de mensajes de control de Internet) es un protocolo que permite administrar información relacionada con errores de los equipos en red. Si se tienen en cuenta los escasos controles que lleva a cabo el protocolo IP, ICMP no permite corregir los errores sino que los notifica a los protocolos de capas cercanas. Por lo tanto, el protocolo ICMP es usado por todos los routers para indicar un error.

ICMP difiere del propósito de TCP y UDP ya que generalmente no se utiliza directamente por las aplicaciones de usuario en la red. La única excepción es la herramienta ping y traceroute, que envían mensajes de petición Echo ICMP (y recibe mensajes de respuesta Echo) para determinar si un host está disponible, el tiempo que le toma a los paquetes en ir y regresar a ese host y cantidad de hosts por los que pasa.





¿Que es snmp?

SNMP (Simple Network Management Protocol o Protocolo Simple de administración de red) es uno protocolos del conjunto definido por la Fuerza de Trabajo en Ingeniería de Internet (IETF o Internet Engineering Task Force), clasificada en el nivel de aplicación del modelo TCP/IP y que está diseñado para facilitar el intercambio de información entre dispositivos de red y es ampliamente utilizado en la administración de redes para supervisar el desempeño, la salud y el bienestar de una red, equipo de computo y otros dispositivos.

Los dispositivos administrados son supervisados y controlados usando cuatro comandos SNMP básicos: lectura, escritura, notificación y operaciones transversales.

El comando de lectura es usado por un NMS para supervisar elementos de red. El NMS examina diferentes variables que son mantenidas por los dispositivos administrados.

El comando de escritura es usado por un NMS para controlar elementos de red. El NMS cambia los valores de las variables almacenadas dentro de los dispositivos administrados.

El comando de notificación es usado por los dispositivos administrados para reportar eventos en forma asíncrona a un NMS. Cuando cierto tipo de evento ocurre, un dispositivo administrado envía una notificación al NMS.

Las operaciones transversales son usadas por el NMS para determinar qué variables soporta un dispositivo administrado y para recoger secuencialmente información en tablas de variables, como por ejemplo, una tabla de rutas.
MRTG



MRTG (Multi Router Traffic Grapher) es una herramienta, escrita en C y Perl por Tobias Oetiker y Dave Rand, que se utiliza para supervisar la carga de tráfico de interfaces de red. MRTG  genera los resultados en archivos HTML con gráficos, que proveen una representación visual de este tráfico.

MRTG utiliza SNMP (Simple Network Management Protocol o Protocolo Simple de administración de red) para recolectar los datos de tráfico de un determinado dispositivo (dispositivos encaminamiento o servidores), por tanto es requisito contar con al menos un sistema a supervisar con SNMP  funcionando y con dicho servicio correctamente configurado.

FUNCIONAMIENTO

MRTG ejecuta como un demonio o invocado desde las tareas programadas del cron. Por defecto, cada cinco minutos recolecta la información de los dispositivos y ejecuta los scripts que se le indican en la configuración.

En un primer momento, MRTG consultaba la información, la procesaba y generaba el informe y las gráficas. En las últimas versiones, esta información es almacenada en una base de datos gestionada por RRDtool a partir de la cual, y de forma separada, se generan los informes y las gráficas

Instalación y configuración de MRTG

Para poder utilizar MRTG es necesario primero instalar un agente SNMP en los equipos que se desea monitorear. Para instalar dicho agente en Windows 7 debemos seguir los siguientes pasos:
1.    Vamos a Panel de Control (Categorias) -> Programas -> Turn Windows Features on or off.
2.    En la lista activamos Simple Network Management Protocol (SNMP) y hacemo click en Ok.
3.    Una vez instalado debemos configurarlo, para lo cual hacemos click derecho en Mi PC y seleccionamos Administrar.En la lista de la izquierda seleccionamos Servicios y Aplicaciones -> Servicios, y buscamos Servicio SNMP. Hacemos click derecho y seleccionamos propiedades. Seleccionamos la pestaña Seguridad y añadimos una nueva comunidad. Por defecto las comunidades son public para acceso READ_ONLY y private para acceso READ_WRITE.
Una vez hecho esto ya tenemos configurada nuestra computadora para monitorearla utilizando SNMP. Ahora es necesario configurar MRTG para realizar el monitoreo. MRTG utiliza scripts de Perl para su funcionamiento, por lo que es necesario instalar un intérprete de Perl. El intérprete que se utilizó es ActivePerl, el cual se instala como cualquier programa normal.
Para la utilización de MRTG se utilizan principalmente 3 scripts: cfgmaker, indexmaker y mrtg.
Cfgmaker genera un archivo de configuración utilizando información del host que se desea monitorear, esta información se obtiene a través de SNMP. Este comando debe ejecutarse con varios parámetros: la comunidad y el IP de la máquina que se desea monitorear, el directorio donde se generarán los reportes y el archivo de configuración que se desea crear. Estos parámetros se especifican de la siguiente manera:
perl cfmaker public@192.168.1.100 –global "WorkDir: c:\mrtghtml" –output pc1.cfg
Mrtg es el script que obtiene la información de monitoreo del equipo correspondiente, simplemente debe especificarse el archivo de configuración de dicha máquina:
perl mrtg pc1.cfg
Este script genera varios archivos para cada interfaz del dispositivo. Es conveniente, cuando se desea monitorear muchos equipos, obtener todos los reportes en una misma página html, para esto se utiliza el script indexmaker, al cual debe especificarse el archivo en el que se desea tener un resumen del monitoreo, y los archivos de configuración de los equipos a monitorear:
perl indexmaker –output resumen.html pc1.cfg pc2.cfg pc3.cfg
Una vez ejecutado el indexmaker debe ejecutarse el mrtg para cada uno de los archivos de configuración.
Es necesario tomar en cuenta que todos los archivos generados por mrtg deben encontrarse en la misma carpeta, y que esta sea accesible desde el servidor apache si se desea ejecutar el monitoreo desde la nube.

Utilización de MRTG desde PHP

Para la realización del monitoreo desde php se siguieron los siguientes pasos:
1.    Primeramente se creó la página principal (index.php) con un formulario para seleccionar una opción para monitoreo: agregar un nuevo equipo, remover un equipo y mostrar gráficas. Este formulario envía sus datos a la página snmp.php.
2.    Para tener una lista de los equipos a monitorear se utilizó una base de datos MySql.
3.    En caso de que se desee agragar un nuevo usuario, se muestra un formulario para llenar los datos correspondientes. Estos datos se envían a la misma página y se ejecuta el siguiente código para introducirlo a la base de datos y crear el archivo de configuración:
                if(isset($_POST['agregar'])){
                               exec("perl c:\AppServ\www\mrtg\bin\cfgmaker $_POST[comunidad]@$_POST[ip] --global \"WorkDir: c:\\AppServ\\www\\archivos\\practicas\\System\\snmp\" --output $_POST[archivo].cfg");
                               $db = new mysqli("localhost", "root", "yi2junte", "monitoreo");
                              $db->query("insert into equipos values(0, '$_POST[nombre]', '$_POST[ip]', '', '$_POST[archivo].cfg', '$_POST[comunidad]')");
                               echo "<p>El archivo de configuración ha sido creado correctamente.</p>";
                               echo '<p><a href=".">Volver</a></p>';
                }
4.    Para mostrar las gráficas de monitoreo se ejecuta el indexmaker para todos los equipos almacenados en la base de datos, y luego se ejecuta mrtg para cada uno de ellos:
                               elseif($_POST['action'] == 2){
                                               $db = new mysqli("localhost", 'root', 'yi2junte', 'monitoreo');
                                               $res = $db->query("select * from equipos");
                                               $aux = "";
                                               while($fila = $res->fetch_array()){
                                                               $aux .= ' '.$fila['Conf'];
                                               }
                                              echo $aux;
                                               exec('perl "c:\AppServ\www\mrtg\bin\indexmaker" --output "c:\AppServ\www\archivos\practicas\System\snmp\monitoreo.html"'.$aux);
                                               $res = $db->query("select * from equipos");
                                               while($fila = $res->fetch_array()){
                                                               exec('perl "c:\AppServ\www\mrtg\bin\mrtg" '.$fila[Conf]);
                                               }
                                               echo '<p><a href="snmp/monitoreo.html">Gráficas</a></p>';
                               }
Es necesario observar que como los archivos de mrtg y los de la interfaz php se encuentran en diferentes directorios es necesario especificar la ruta completa a los scripts de mrtg. También se observó que desde php la salida de los scripts no puede ser observada, esto es un problema de compatibilidad entre perl y php en windows, el cual no soporta redirecciones de la salida estándar.