Conceptos Fundamentales de la Computación: Del Código al Hardware
Clasificado en Informática
Escrito el en español con un tamaño de 5,6 KB
Traducción y Ejecución de Lenguajes de Programación
¿Cómo se traducen los lenguajes de programación de alto nivel y cómo ejecuta el hardware el programa resultante?
La traducción se hace a través de una secuencia de instrucciones interpretables por el computador. Esta labor es llevada a cabo por los compiladores y los intérpretes.
El hardware ejecuta el programa instrucción por instrucción, línea por línea, que genera la compilación o la traducción del código fuente.
Interfaz Software/Hardware
¿Cómo instruye el software al hardware para ejecutar ciertas funciones? ¿Cómo es esta interfaz software/hardware?
Para que un programa o software se pueda ejecutar (RUN), debe ser situado en la memoria en una operación que se llama carga (LOAD) del programa; posteriormente, cualquier dato a procesar por el programa se debe llevar a la memoria mediante unas instrucciones del software.
Tipos de Procesamiento
Razones o consecuencias del cambio de procesamiento secuencial a paralelo
Se produce un procesamiento secuencial cuando una tarea va después de otra. Es un proceso lento en el que si una tarea se enlentece, el sistema completo debe esperar. La ventaja es que es fácil de entender y de implementar.
En el procesamiento paralelo, varios procesos ocurren al mismo tiempo, mejorando el rendimiento general del sistema. Su contrapartida es la complejidad. No siempre se puede paralelizar una tarea. Aunque se pueda, no siempre es fácil hacerlo. En principio, cuanto más nodos actúen en paralelo, más rápido irá el sistema. Hasta cierto punto. Lo común es que haya un límite en el que añadir más nodos no aumente la eficiencia, sino que incluso la reduzca. Normalmente, las tareas en paralelo tienen una fase secuencial al principio en la que se dividen las tareas y otra al final en la que consolidan resultados.
Arquitectura de Computadores
Definición
Arquitectura: Es la ciencia y el arte de seleccionar e interconectar componentes de hardware para crear computadores que cumplan los objetivos funcionales, de rendimiento y costo.
Tipos de Computadores
Tipos de computadores: servidores, personales y encajados:
Servidores
Atiende las solicitudes de clientes a través de algún tipo de red (cliente-servidor), desde simples servidores de archivos, web y bases de datos a supercomputadores. IMPORTANTE: tolerancia a fallas y ancho de banda.
Personales
Atiende la demanda de trabajo de una persona o una familia, desde net-laptops a computadores para juegos. IMPORTANTE: latencia y multimedia.
Encajados (Embedded)
Computador dentro de otro dispositivo, utilizado para ejecutar cierta aplicación o conjunto de programas. IMPORTANCIA: costo y consumo de energía.
Fundamentos de Hardware: Circuitos Lógicos
Circuitos Combinacionales vs. Secuenciales
Los circuitos lógicos se dividen en dos:
- Combinacionales: la salida depende solo de los valores de entrada. Funcionan sin la presencia de una memoria.
- Secuenciales: la salida depende de los valores de entrada y de los valores almacenados en memoria.
Compuertas Lógicas
El bloque fundamental de construcción de todos los circuitos lógicos digitales es la compuerta.
Una compuerta es un circuito electrónico que implementa una operación lógica sencilla: AND, OR, NOT, NOR, NAND.
SystemC
SystemC: es una biblioteca de clases en C++ que permite modelar sistemas software/hardware y simularlos con exactitud a nivel de ciclos de reloj.
Características:
- Comunicación estilo hardware: señales, puertos.
- Noción de tiempo: relojes, operaciones sincronizadas.
- Concurrencia: el hardware es inherentemente paralelo.
- Reactividad.
- Tipos de datos hardware.
Multiplexor
MULTIPLEXOR: conecta varias entradas a una sola salida; solo una de las entradas es pasada a la salida. Las señales de control indicarán qué entrada será la que se muestre en la salida. Suelen ser utilizados para control y enrutamiento de señales.
Decodificadores
DECODIFICADORES: Circuito combinacional con cierto número de salidas donde solo una de ellas es activada. Tienen n entradas y 2^n salidas. Suele utilizarse para direccionar espacios de memoria.
Flip-flops
Flip-flops: Son la forma más sencilla de un circuito secuencial. Un flip-flop puede ser utilizado para guardar un bit de datos (0 o 1). Pueden mantener un estado binario indefinidamente, siempre y cuando tengan energía.
Rendimiento de un Programa
En tiempo de ejecución, el rendimiento de un programa depende más de la eficiencia del compilador, porque así se puede lograr la reestructuración del código.