Entradas

Mostrando las entradas etiquetadas como Computadoras

Multiples CPUs vs Multiples nucleos

Imagen
Con el paso de los años hemos buscado alternativas para que nuestro procesamiento de datos sea mas eficiente y así tener mas rapidez. Dos de esas alternativas han sido tener en un mismo procesador varios cores o tener varios procesadores en una computadora. A continuación presentaré ciertas diferencias para que el lector reflexione sobre su propia opinión y piense que alternativa es mejor. Cabe destacar que la estrategia de tener múltiples procesadores se ve mucho en computadoras servidores. Eficiencia energética Una computadora con un procesador de multiples nucleos es mas eficiente energeticamente que una con varios procesadores.  Múltiples CPU significan que varias copias del mismo circuito integrado se sientan en una placa de circuito, con cableado asociado entre ellas y otros chips. La consolidación de los núcleos en un chip reduce la energía utilizada para enviar señales de un chip a otro. También elimina algunos de los chips adicionales necesarios par...

RISC VS CISC

Imagen
A la hora de diseñar un procesador se debe tomar en cuenta cual va ser su juego de instrucciones. Existen dos tipos distintos, el RISC(Reduced Instruction Set Computing) y el CISC(Complex instruction set computing). Su mayor diferencia es la complejidad y velocidad de ejecución de sus instrucciones. RISC: La estructura RISC esta basada en instrucciones simples y de rapida ejecución. Su set de instrucciones es pequeño, pero con instrucciones mucho mas optimizadas, esto quiere decir que cada instrucción cumple pequeñas tareas. Sus instrucciones también son de un tamaño fijo. Debido a su simpleza, los chips necesitan menos transistores, lo que los hace mas baratos de diseñar y producir. Algunas ventajas del RISC: La decodificación de instrucciones es simple. Sus instrucciones son uniformes Sus registros de propósito general son idénticos Tiene nodos de direccionamiento simple A la hora de escribir código, beneficia al programador permitiendole remover código inn...

Pipelining

Imagen
Pipeline de instrucciones Para mejorar el rendimiento de un CPU existen dos opciones: Mejorar el hardware, introduciendo circuitos mas rapidos Hacer que el CPU pueda hacer mas de una operación al mismo tiempo. Debido a que existe un limite en la velocidad  de un hardware, y conseguir componentes fisicos es mas costoso. La mejor opción es la segunda, para esto tenemos el pipeline. El pipeline básicamente es una técnica por medio de la cual se puede traslapar la ejecución de instrucciones. Se divide en segmentos o etapas que están conectadas unas con otras. Un ejemplo de pipeline en la vida real: En una lavandería tenemos a cuatro individuos (A,B,C,D). Cada uno tiene que lavar, secar, doblar y acomodar su ropa. Cada proceso toma 30 minutos. Si ocurre un proceso secuencial, es decir que el individuo A espera a que termine el individuo B y el C espera al D y así consecutivamente. El tiempo total para que los individuos terminen sus tareas sería de 8 horas.  ...

Llamadas al sistema

Imagen
Para entender como funcionan las llamadas al sistema primero debemos entender como funcionan los modos de operación de la unidad central de procesamiento. Tenemos dos modos, el modo usuario y el modo Kernel. En el modo kernel, la CPU puede realizar cualquier operación permitida por su arquitectura, es decir cualquier instrucción puede ser ejecutada, cualquier área de la memoria puede ser accedida, etc... Mientras que en el modo usuario, no se tiene ese acceso directo a los recursos. ¿Que pasa cuando un programa en modo usuario necesita acceder a la RAM o a otro recurso ? El programa le pide al kernel el acceso a ese recurso, y esto se hace con las llamadas al sistema. Cuando un programa hace una llamada al sistema, el modo es cambiado de usuario a kernel. El kernel provee los recursos pedidos por el programa y el modo vuelve a cambiar, pero esta vez de modo kernel a modo usuario. Generalmente, las llamadas al sistema son hechas por los programas en las siguientes situaci...

ARDUINO

Imagen
¿Que es un arduino ? Un arduino es una plataforma de prototipos electrónicos de código abierto basa en hardware y softwares fáciles de utilizar y de aprender. Arduino consiste en un micro-controlador y su software o IDE (esto corre en la computadora) que se usa para escribir y enviar las instrucciones al micro-controlador. Con el pasar de los años los arduinos han sido el cerebro de muchos proyectos, desde cosas del usos diario hasta complicados proyectos científicos. Una gran comunidad de creadores es conocida para la plataforma, sus contribuciones hacen que la gran cantidad de conocimientos sobre el arduino sean de gran ayuda tanto como para novatos o para expertos también. Micro-controlador IDE del Arduino Las instrucciones creadas para el arduino se basan en un lenguaje simplificado de C++ Ventajas de Arduino: Los arduino son mucho más baratos si se compara su precio con otros micro-controladores. Las versiones mas baratas pueden armarse a mano, y las ve...

Ejercicio lenguaje ensamblador

Imagen
Debido a que esta semana nos hemos enfocado en resolver ejercicios en lenguaje ensamblador, decidí desarrollar un pequeño programa. El programa nos permite contar la cantidad de veces que aparece un carácter en una cadena de caracteres. Aun que es un ejercicio básico y sencillo ayuda a entender un poco mas sobre el lenguaje ensamblador. Código completo del programa Para facilidad de entendimiento me centrare en las distintas etiquetas del programa. Variables Las variables las encontramos en el segmentos de datos. En la linea 3 y 5, vemos dos variables(amblas alienadas a 4 bytes). La variable entryMessage es la que almacena el texto al que queremos buscarle el carácter. Y la variable outMessage es el mensaje que se utilizara para imprimir. Vemos que la variable tiene un %c y un %d, esto nos permite ingresar en este texto un carácter(%c) y un valor decimal(%d).  Las variables tienen una dirección, y son las que se aprecian en la linea 36 y 37 del código....

Estructuras de control.

Imagen
Las estructuras de control en los lenguajes de programación permiten modificar el flujo de las instrucciones de un programa. Este post se centra en las estructuras de control condicionales: if, if-else, if-elseif-else. Y en las estructuras de control de repetición o iterativas: while, do while, for. Estructuras de control condicionales : Este tipo de estructuras de control nos permite revisar cierta condición que retornar un resultado booleano True o False (Verdadero o Falso).   Normalmente es necesario tomar diferentes alternativas para resolver algo dependiendo de las circunstancias. El if nos permite ejecutar una secuencia de instrucciones de forma condicionales. La ejecución de esta secuencia de instrucciones depende de el valor de la condicion. El funcionamiento del If seria algo asi: if (condicion){        (Condicion = True)         Ejecute instrucciones } Continuacion Si la condición se cumple ejecuta las ins...

Arquitectura del conjunto de instrucciones (ISA)

Imagen
Arquitectura del conjunto de instrucciones (ISA) El ISA (Instruction Set Architecture) es la parte del procesador que es visible al programador o al escritor del compilador. El ISA sirve como el limite entre el software y el hardware. Consiste en modos de direccionamiento, instrucciones, tipos de datos nativos,arquitectura de memoria, registros, y gestión de excepciones. Los tres tipos de ISAs mas comunes son: (Stack) Pila: Los operandos estan implícitamente encima de la pila. (Accumulator) Acumulador: Un operando es implícitamente el acumulador. (GPR) Registro de propósito general: Todos los operandos están explicitamente mencionados y son registros o ubicaciones de memoria. Ejemplo de los tipos de ISA en las tres arquitecturas: A = B + C; Intel 8086 No todos los procesadores pueden ser clasificados en estas categorias. El intel 8086 tiene muchas instrucciones que usan operadores implícitos aunque tiene un set de registro general. ...

Generaciones de las computadoras

Imagen
GENERACIONES DE LAS COMPUTADORAS Las computadoras han cambiado mucho con el paso del tiempo, pasamos de tener computadoras excesivamente grandes a computadoras pequeñas y con capacidad de realizar una amplia cantidad de tareas. Este proceso de cambio en las computadoras esta dividido en 5 generaciones. Primera Generación Esta generación sucede entre los años 1940 y 1956. Se basaba en computadoras que usaban tubos de vacío, tambores magnéticos y tarjetas perforadas. Solo podían resolver un problema a la vez. Otra característica presente en las maquinas de esta época es que eran demasiado grandes, usando cuartos completos para una maquina y eran grandes generadores de calor lo que causaban problemas frecuentemente. Computadora Eniac Segunda generación Esta generación sucede entre los años 1956 y 1963. Se basan en computadoras que cambiaron los antiguos tubos de vacío por transistores. Fueron un cambio importante debido a que esto permitía las computadoras ser...