lunes, 27 de abril de 2015

Firmware, Microprogramación y Multiprogramación

Firmware

Es un bloque de instrucciones de máquinas para propósitos específicos, grabado en una memoria, normalmente de lectura/escritura (ROM, EEPROM, Flash, etc.), que establece la lógica de más bajo nivel que controla los circuitos electrónicos de un dispositivo de cualquier tipo, está fuertemente integrado con la electrónica del dispositivo siendo el Software que tiene directa interacción con el Hardware: es el encargado de controlarlo para ejecutar correctamente las instrucciones externas.

El Firmware ha evolucionado para significar casi cualquier contenido programable de un dispositivo de Hardware, no solo código de maquina para un procesador, sino también configuraciones y datos para los circuitos integrados para aplicaciones especificas (ASIC), dispositivo de lógica programable. 


Microprogramación

Es un tipo particular de Firmware utilizado en algunos microprocesadores de propósito general. Un microprograma es una secuencia de datos binarios o microinstrucciones que representan señales eléctricas internas de la unidad de control de un microprocesador.

Unas pocas de estas microinstruciones implementan una instrucción completa del microporcesador. Por ejemplo, la instrucción "sumar dos registros" típica de cualquier microprocesador, se implementa mediante la activación y desactivación de un conjunto reducido de señales eléctricas en el banco de registro y la unidad aritmética-lógica. en concreto, el microprograma de esta instrucción significa:

  • Activar las señales de selección de registro como primer operando de la ALU.
  • Activar las señales de selección de registro como segundo operando de la ALU.
  • Activar las señales de selección de operador para que corresponda a la suma en la ALU.
  • Esperar unos ciclos de reloj hasta que la operación esté completada.
  • Activar la señal de escritura en el registro acumulador.

La micriprogramación es un lenguaje de programación a un nivel muy bajo sin llegar al nivel mas bajo (que es donde las operaciones se realizan con números binarios). Para poder realizar la microprogramación, se debe conocer muy bien los registros del procesador en el que se va a trabajar, ya que este lenguaje se interactúa muy cerca con ellos.

También es importante conocer las instrucciones del mismo para poder usar algunas de ellas que simplifiquen las instrucciones, todo esto con las microinstrucciones que se usen por default para la programación.

Codificación por campos: consiste en agrupar las señales de control que no se puedan activar simultaneamente, cada uno de estos grupos se codifican de modo que la palabra de control consta de varios campos,en cada uno de los cuales se codificación señales del mismo tipo. Evidentemente esto exige que para generar las señales de control necesitamos un decodificador a la salida de cada campo. 

Codificación tipo instrucción: consiste en que el formato de microinstrucciones sea similar al formato de instrucción en lenguaje máquina con un código de operación y dirección del operando, en este caso se precisa de un decodificador que a partir del campo de código de operación obtenga las micro órdenes. Tiene la ventaja de que al escribir un microprograma se trabaja de forma similar a la programación de nivel máquina.


Multiprogramación 

Es la idea general de poder cargar múltiples programas dentro de un mismo computador para que sean ejecutados en un determinado momento. Para lograr manejar múltiples programas, es necesario definir que compone a un programa. Para lograr manejar múltiples programas, es necesario primero definir que compone a un programa. En general, podemos decir que un programa esta compuesto por dos partes: su representación en memoria que incluye el código, datos y stack del programa, y su estado de ejecución que incluye los valores almacenados en los registros de la CPU (PC, registros acumuladores, SP, Status Register, etc.) que indican el estado actual del programa en la maquina. Para lograr trabajar con múltiples programas, entonces, es necesario permitir el manejo de múltiples representaciones en memoria y de múltiples estados de ejecución.



Los procesos alternan periodos en los que procesan en su actividad, cuando están asignados al procesador, con periodos de inactividad, en los que no progresan en absoluto. Si los periodos de inactividad son los suficientemente pequeños como para que el usuario del sistema no los note, que en practica se traduce a periodos de inactividad de menos de 10ms, el efecto causado es la ilusión del paralelismo. En caso contrario dará una sensación de que se producen "saltos".



El planificador de procesos es la parte del sistema operativo que se encarga de decir que proceso emplea el procesador en cada instante, por tanto, es el encargado de implementar la multiprogramación.

Ventajas:
  • Varios procesos en ejecución.
  • Permite el servicio interactivo simultáneo a varios usuarios de manera eficiente.
  • Aprovecha los tiempos que los procesos pasan esperando a que se complementen sus operaciones de entrada y salida.
  • Aumenta el uso de la CPU.
  • Las direcciones de los procesos son relativos, el programador no se preocupa por saber en donde estará el proceso dado que el sistema operativo es el que se encarga de convertir la dirección lógica física.



No hay comentarios:

Publicar un comentario