miércoles, 24 de abril de 2013

Microprocesdador


                                
                                        FUNCIONAMIENTO DE UN MICROPROCESADOR



El microprocesador ejecuta instrucciones almacenadas como números binarios en la memoria principal . La ejecución se puede realizar en varias fases:

PreFetch, Pre lectura de la instrucción desde la memoria principal.
Fetch, envio de la instrucción al decodificador (una parte de la CPU).
Decodificación de instrucción, es decir determinar que instrucción es y por tanto que se debe hacer.
Lectura de operandos (si los hay).
Ejecución de la microinstrucción.
Escritura de los resultados, primero en el registro acumulador y después en la memoria RAM si fuera necesario.

Cada una de estas fases se realiza en uno o varios ciclos de CPU, dependiendo de la estructura del procesador, y concretamente de su grado de segmentación. La duración de estos ciclos viene determinada por la frecuencia de reloj, y nunca podrá ser inferior al tiempo requerido para realizar la tarea individual (en un solo ciclo) de mayor tiempo. El microprocesador se conecta a un oscilador que genera varios ciclos en un segundo.

Las instrucciones que lee, interpreta y ejecuta el procesador están escritas en su propio lenguaje, el lenguaje-máquina. También se utiliza un lenguaje de más alto nivel el ensamblador. Cada modelo de procesador tiene su propio lenguaje-máquina y necesita su propio ensamblador, es decir, las instruciones de los AMD e Intel serán distintas.





                                                   MICROPROCESADORES INTEL



Evolucion de los microprocesadores familia Intel 



                                          REGISTROS DE PROPÓSITO GENERAL




Registros de propósito general o en ingles GPRs o "General Purpose Registers"están disponibles para almacenar datos transitorios que requiere el programa.

Por ejemplo, cuando un programa se interrumpe su estado, es decir, el valor de los registros como el contador de programa, registro de instrucción o la memoria registro de direcciones - se pueden guardar en los registros de propósito general, lista para recordar cuando el programa está listo para comenzar de nuevo.

En general, cuanto más registra un CPU tiene disponible, más rápido se puede trabajar.







                                             MODOS  DE DIRECCIONAMIENTOS


permite determinar un operando , o la ubicación de un operando en una instrucción. Estos operandos pueden residir en diversas partes:

1.-La propia instrucción

2.-Memoria principal


3.-Registros internos de la CPU


-Los programas utilizan varios MD motivados por:

1.- Ahorro de espacio

2.- Código reubicable : se puede almacenar el programa en diversas zonas de memoria sin q afecte a la ejecución del código


3.-Estructuras de datos.








DIRECCIONAMIENTO INMEDIATO


a) El operando está presente en la propia instrucción, por lo tanto, esta opera con un valor constante.

b) El direccionamiento es mas rápido  El operando se encuentra ya en IR al fin de la fase de búsqueda. 2 palabras: lectura de memoria adicional.



DIRECCIONAMIENTO DIRECTO

La instrucción contiene la dirección real del operando.


1.- Lectura MAS RAPIDA q en memoria >> ninguna lectura adicional.
2.- Solo necesita CD pequeño.
3.- Rango operando = Rango registro >> LIMITA espacio de direcciones.


°Direccionamiento absoluto:

a) La instrucción contiene la dirección de memoria donde se encuentra el objeto, q se halla en una posición de mem principal.
b) Rango de posiciones limitado por CO.
c) Formato de 2 palabras >> MAYOR CAPACIDAD DE DIRECCIONAMIENTO >> lectura adicional.

° Direccionamiento mediante registro

a) Operando almacenado en un registro de la CPU. La instrucción indica de q registro se trata.
b) Registros limitados.




DIRECCIONAMIENTO INDIRECTO
El campo de operando contiene una dirección de memoria, en la que se encuentra la dirección efectiva del operando.



DIRECCIONAMIENTO ABSOLUTO
El campo de operando contiene una dirección en memoria, en la que se encuentra la instrucción.
De registro: Sirve para especificar operandos que están en registros.





DIRECCIONAMIENTO INDIRECTO MEDIANTE REGISTROS
El campo de operando de la instrucción contiene un identificador de registro en el que se encuentra la dirección efectiva del operando. En este modo el campo de la dirección de la instrucción da la dirección en donde la dirección efectiva se almacena en la memoria. El control localiza la instrucción de la memoria y utiliza su parte de dirección para accesar la memoria de nuevo para leer una dirección efectiva. Unos pocos modos de direccionamiento requieren que el campo de dirección de la instrucción sea sumado al control de un registro especificado en el procesador. La dirección efectiva en este modo se obtiene del siguiente cálculo:
Dir. efectiva = Dir. de la parte de la instrucción + Contenido del registro del procesador.
  


DIRECCIONAMIENTO RESPECTO A UN REGISTRO BASE
Este modo de direccionamiento es muy usado por los ensambladores cuando se llaman a las funciones (para acceder a los parametros apilados en la pila, valga la redundancia). Consiste, al igual que el indirecto a través de registro, en calcular la EA (Effective Address) como la suma del contenido del registro base y un cierto desplazamiento (u offset) que siempre será positivo. Esta técnica permite códigos reentrantes y acceder de forma fácil y rápida a posiciones cercanas de memoria. 

EA = RB+offset
RB = registro base
offset = desplazamiento


DIRECCIONAMIENTO RESPECTO A UN REGISTRO INDICE
Es similar al anterior, lo único que es el contenido del registro indice el que indica el desplazamiento que se produce a partir de una dirección de memoria que se pasa también como argumento a la orden que utiliza este modo de direccionamiento. Aunque en esencia son dos modos equivalentes. La EA se calcula como la suma del contenido del registro indice y una dirección de memoria:


EA = RI+DM
RI = registro indice
DM = direccion de memoria
-> RI se comporta como un offset






                                               
                                                 TRANSFERENCIA ENTRE REGISTROS


Los registros de computadora están representados por letras mayúsculas (en ocasiones seguidas de números), para denotar la función del registro. Por ejemplo, el registro que contiene una dirección para la unidad de memoria, por lo general se llama un registro de direccionamiento de memoria y se designan las letras MAR por sus siglas en inglés (memory address register). Otros nombres para registros son PC (contador de programa), IR (registro de instrucción) y Rl (registro de procesador). Los flip-flops individuales en un registro de n bits están numerados en una secuencia de O hasta n — 1, comenzando desde O en la posición de la extrema derecha y aumentando los números hacia la izquierda. La figura 4-1 muestra la representación de registros en forma de diagrama de bloque. La manera más común de representar un registro es mediante una caja rectangular con el nombre del registro dentro. Los bits individuales pueden distinguirse como en el ejemplo (b). La numeración de bits en un registro de 16 bits puede señalarse en la parte superior de la caja, como se muestra en el ejemplo (c). Un registro de 16 bits se divide en 2 partes en el ejemplo (d). Los bits del O al 7 reciben el símbolo L (byte bajo) y los bits del 8 al 15 reciben el símbolo H (byte alto). El nombre del registro de 16 bits es PC. El símbolo PC (0-7) o Pc (L) denomina el byte de orden menor y PC (8-15) o PC (H) designa al byte de orden mayor.




La transferencia de información de un registro a otro se representa en forma simbólica mediante un operador de sustitución. El enunciado:



R2 <— Rl


denota una transferencia del contenido del registro Rl al registro R2. Designa la sustitución del contenido de R2 por el contenido de Rl. Por definición, el contenido del registro fuente Rl no cambia después de la transferencia.


Un enunciado que especifica una transferencia de registro implica que están disponibles circuitos de la salida del registro fuente a la entrada del registro destino y que el registro destino tiene capacidad de carga paralela. Normalmente, deseamos que la transferencia ocurra sólo bajo una condición de control predeterminada. Esto puede mostrarse mediante un enunciado si, entonces Qf-then)



Si (P = 1) entonces (R2 <— Rl)




donde P es una señal de control que se genera en la sección de control. En ocasiones es conveniente separar las variables de control de la operación de transferencia de registros al especificar una función de control. Una función de control es una variable booleana, que es igual a O o a 1. La función de control se incluye en el enunciado como sigue:




P: R2~-Rl



La condición de control se termina con un signo de dos puntos. Representa la necesidad de que la operación de transferencia sea ejecutada sólo por el hardware si P = 1.








                                                     MODALIDADES DE OPERACION


El procesador soporta numerosos modos de operación para código x86, en los cuáles no todas las instrucciones están disponibles. Un sub-repertorio de instrucciones de 16-bit está disponible en “modo real” (disponible en todos los procesadores x86), “modo protegido 16-bit” (disponible desde el Intel 80286), o en el “modo v86” (disponible desde el Intel 80386). Por su parte, las instrucciones de 32-bits están disponibles para el “modo protegido 32-bit” y para el “modo heredado” (disponible con las extensiones de 64 bits). El repertorio de instrucciones parte de ideas similares en cada modo, pero da lugar a distintas formas de acceso a memoria y de este modo emplea estrategias de programación diferentes. 

Los modos en los que el código x86 puede ser ejecutado son: 
Modo real (16-bit) 
Modo protegido (16-bit y 32-bit) 
Modo 8086 virtual (16-bit) 
System Management Mode (16-bit) 
Modo largo (64-bit) 



MODO REAL

El modo real (también llamado modo de dirección real en los manuales de Intel) es un modo de operación del 80286 y anteriores CPUs compatibles de la arquitectura x86. El modo real está caracterizado por 20 bits de espacio de direcciones segmentado (significando que solamente se puede direccionar 1 MB de memoria), acceso directo del software a las rutinas del BIOS y el hardware periférico, y no tiene conceptos de protección de memoria o multitarea a nivel de hardware. Todos los CPUs x86 de las series del 80286 y posteriores empiezan en modo real al encenderse el computador; los CPUs 80186 y anteriores tenían solo un modo operacional, que era equivalente al modo real en chips posteriores. 



MODO PROTEGIDO 

El modo protegido es un modo operacional de los CPUs compatibles x86 de la serie 80286 y posteriores. El modo protegido tiene un número de nuevas características diseñadas para mejorar las multitareas y la estabilidad del sistema, como protección de memoria, y soporte de hardware para memoria virtual así como de conmutación de tareas. A veces es abreviado como p-mode y también llamado Protected Virtual Address Mode (Modo de Dirección Virtual Protegido) en el manual de referencia de programador del iAPX 286 de Intel, (Nota, iAPX 286 es solo otro nombre para el Intel 80286). En el 80386 y procesadores de 32 bits posteriores se agregó un sistema de paginación que es parte del modo protegido. 



MODO 8086 VIRTUAL 

En el microprocesador 80386 y posteriores, el modo 8086 virtual, también llamado modo real virtual o VM86, permite la ejecución de aplicaciones de modo real que violan las reglas bajo control de un sistema operativo de modo protegido. 

El VM86 usaba la forma de segmentación del modo real, pero usaba la dirección resultante de 20 bits (realmente 21 bits), tratándola como una dirección lineal, de tal manera que era sujeta a paginación. 




Era usado para ejecutar programas DOS en Microsoft Windows/386, Windows 3.x, Windows 95, Windows 98, Windows Me, y OS/2 2.x y más adelante, a través de las máquinas DOS virtuales, también en SCO UNIX a través de Merge, y en Linux por medio de dosemu. 








MODO DE GERENCIA DEL SISTEMA 

El Modo de Gerencia de Sistema, o System Management Mode (SMM) en inglés, es un modo de operación lanzado por primera vez con el Intel 386SL y disponible en microprocesadores posteriores de la arquitectura x86, en el que es suspendida toda la ejecución normal (incluyendo el sistema operativo), y es ejecutado un software especial separado en un modo de alto privilegio (usualmente un depurador en firmware o asistido por hardware). 

Algunos usos comunes del SMM son: 

Para emular hardware de la tarjeta madre que no está implementado o tiene errores (bugs). 
Operaciones de gerencia de energía, como encendido de ventiladores. 
Para emular un ratón o un teclado PS/2 desde un USB. 
Funciones de seguridad del sistema, como apagar el computador cuando hay alta temperatura en el CPU. 
Configuración del sistema, como por ejemplo en los computadores notebook de Toshiba e IBM. 


MODO LARGO 

En la arquitectura de computador AMD64 (x86-64), el modo largo (long mode) es el modo donde una aplicación o sistema operativo de 64 bits pueden acceder a las instrucciones y los registros de 64 bits del procesador, mientras que los programas de 32 bits y 16 bits se ejecutan en un sub-modo de compatibilidad.
Un procesador x86-64 actúa de la misma manera que un procesador IA-32 cuando corre en modo real o modo protegido, que son sub-modos soportados cuando el procesador no está en el modo largo.


                                                          
                                                           VELOCIDAD DEL PROCESO




La velocidad de un micro se mide en megahercios (MHz), aunque esto es sólo una medida de la fuerza bruta del micro; un micro simple y anticuado a 200 MHz puede ser mucho más lento que uno más complejo y moderno (con más transistores, mejor organizado...) que vaya a "sólo" 150 MHz. Es lo mismo que ocurre con los motores de coche: un motor americano de los años 60 puede tener 5.000 cm3, pero no tiene nada que hacer contra un multiválvula actual de "sólo" 2.000 cm3.

Debido a la extrema dificultad de fabricar componentes electrónicos que funcionen a las inmensas velocidades de MHz habituales hoy en día, todos los micros modernos tienen 2 velocidades:

Velocidad interna: la velocidad a la que funciona el micro internamente (200, 333, 450... MHz).
Velocidad externa o de bus: o también "FSB"; la velocidad con la que se comunican el micro y el mother board, para poder economizar el precio de ésta. Típicamente, 33, 60, 66 ó 100 MHz.
La cifra por la que se multiplica la velocidad externa o del board para dar la interna o del micro es el multiplicador; por ejemplo, un Pentium III a 450 MHz utiliza una velocidad de bus de 100 MHz y un multiplicador 4,5x.





                                                                     SEGMENTOS




Los registros de segmento se utilizan para referenciar áreas de memoria. La plataforma IA-32 permite direccionar la memoria según el modelo de memoria lineal o el modelo de memoria segmentada. El modelo de memoria lineal presenta todo el espacio de direcciones de la memoria como un espacio contiguo. Todas las instrucciones, los datos y la pila se encuentran en el mismo espacio de direcciones de memoria. Cada posición de memoria se referencia mediante una dirección específica llamada "dirección lineal".

El problema del enfoque anterior consiste en que todos los datos se encuentran mezclados entre si y a la vez distribuidos a lo largo de todo el espacio de direcciones memoria, lo cual hace que su manejo sea engorroso e ineficiente. El modelo de memoria segmentada resuelve este problema dividendo el espacio de direcciones en segmentos independientes entre si. Cada segmento contiene un tipo específico de información, es decir el código (las instrucciones) se ubica en un segmento, los datos en otro y la pila en un tercer segmento. Las posiciones de memoria en los segmentos se definen por direcciones lógicas. Una dirección lógica está compuesta por una dirección de segmento y un desplazamiento. El procesador traduce una dirección lógica a una dirección lineal.


Registro de segmento Descripción
cs                                Segmento de código
ds                                Segmento de datos
ss                                Segmento de pila
es                                 Apuntador de segmento extra
fs                                Apuntador de segmento extra
gs                                Apuntador de segmento extra



DIRECCIONES
El bus de las direcciones es el conjunto de vías que llevan la información acerca de dónde, en la memoria, se obtendrán los datos que serán transferidos hacia o desde ella. Por este bus circulan direcciones de memoria que indican de qué localidad de memoria se leen o escriben datos que viajan en el bus de datos. La velocidad del bus de direcciones es la misma a la del bus de datos. El ancho del bus de direcciones dá la dirección-habilidad del procesador, que es cuánta memoria puede ser direccionada por el procesador. Un bus con 16 líneas, por ejemplo, puede trabajar directamente con 216 direcciones de memoria; eso es 65,536 (o 64 KB) localidades de memoria posibles. Los diversos microprocesadores usados en varias PCs, por lo regular, cuentan con un bus de direcciones de 20 a 32 bits. El Pentium y el Pentium Pro tienen un bus de direcciones de 32 bits, otros fabricantes de chips han prolongado el alcance de algunos de sus productos a 64 bits.

El tamaño del bus de direcciones no tiene un impacto directo en el rendimiento.

Los procesadores normalmente direccionan más memoria física de la existente, y de hecho normalmente los chipset o algunos factores en la motherboard ponen las restricciones a la cantidad máxima de memoria del sistema. Por ejemplo, un Pentium puede direccionar teóricamente 4GB de memoria RAM, pero la mayoría de las motherboard normales no soportará ni siquiera la cuarta parte.

Tamaño del Bus de direcciones y RAM máxima en diferentes procesadores
En la tabla 1 se muestra el ancho del bus de direcciones y la memoria RAM Máxima para varios microprocesadores.
.





                                                                       MEMORIAS

Las memorias son dispositivos encargados de almacenar información, programas y datos. Estos
dispositivos pueden ser vistos como un conjunto lineal de celdas, en los que cada una tiene un
número asignado, el cual es único y lo llamaremos dirección. La estructura lógica de una memoria
puede ser comparada con un arreglo, en el cual cada posición tiene un índice correspondiente. 

Dirección Datos
01h      0h
02h    5h
03h     5h
04h     0h
05h     Ch
06h       ...
07h        ...
08h       ...
09h       ...
0Ah        ...

martes, 23 de abril de 2013

Lenguaje Ensamblador


El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador. Fue usado principalmente en los inicios del desarrollo de software, cuando aun no se contaba con los potentes lenguajes de alto nivel. Actualmente se utiliza con frecuencia en ambientes académicos y de investigación, especialmente cuando se requiere la manipulación directa de hardware, se pretenden altos rendimientos o un uso de recursos controlado y reducido. Muchos dispositivos programables (como los microcontroladores) aun cuentan con el ensamblador como la única manera de ser manipulados.




El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido directamente por un ser humano ya que su estructura se acerca mas bien al lenguaje máquina, es decir, lenguaje de bajo nivel. El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador en particular necesita ser modificado muchas veces en su totalidad para poder ser usado en otro microprocesador. Los programas hechos en lenguaje ensamblador son generalmente más rápidos y consumen menos recursos del sistema (memoria RAM y ROM). Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel. Con el lenguaje ensamblador se tiene un control muy preciso de las tareas realizadas por un microprocesador por lo que se pueden crear segmentos de código difíciles de programar en un lenguaje de alto nivel.


                         

                    ESTRUCTURA GENERAL DE UN MICROPROCESADOR


Se presenta a continuación un esquema en bloques de un sistema básico de un computador y sus funciones esenciales, ALU ( Arithmetic Logic Unit), unidad de control, unidad de I/O y memoria central. Todos los demás componentes agregados al sistema se denominan periféricos , y vinculan al sistema con el mundo exterior, para intercambiar y visualizar datos.







Los datos introducidos en el computador se utilizan como base para operaciones de todo tipo, aritméticas, lógicas, Son funciones realizadas por la ALU que además contiene registros especiales y de uso general donde procesa la información antes y después de su uso. Luego será almacenada en la memoria central , que es la zona de almacenamiento de gran capacidad, se guardan aquí tanto datos como programas ejecutables.

Todo el sistema es controlado por la unidad de control que genera las señales temporización y sincronización de todo el sistema. A partir de esta breve descripción se pueden apreciar en la arquitectura del sistema dos elementos diferentes en cuanto a sus características; los circuitos eléctricos / electrónicos que constituyen al procesador y lo que se ha dado en llamar el programa ( conjunto de operaciones denominadas instrucciones. Los programas a utilizar suelen estar en la memoria central del sistema. Cada una de las celdas que componen la memoria central debe ser seleccionada por la unidad central para poder ordenar la información allí guardada y de esta manera poder transformar los datos en una secuencia determinada para obtener el resultado deseado de la operación de los mismos.
Esta selección se denomina direccionamiento y lo realiza la unidad de control por medio del registro de direccionamiento, y su función es almacenar la dirección a ejecutar del sistema


                                           


                                                   UNIDAD DE PUNTO FLOTANTE



Una Unidad de Punto Flotante (Floating Point Unit en inglés) es un componente de la CPU especializado en el cálculo de operaciones en coma flotante. Las operaciones básicas que toda FPU puede realizar son las aritméticas (suma y multiplicación), si bien algunos sistemas más complejos son capaces también de realizar cálculos trigonométricos y/o exponenciales.

No todas las CPUs tienen una FPU dedicada. En ausencia de FPU, la CPU puede utilizar programas en microcódigo para emular una función en coma flotante a través de la unidad aritmético-lógica (ALU), la cual reduce el coste del hardware a cambio de una sensible pérdida de velocidad.
En algunas arquitecturas, las operaciones en coma flotante se tratan de forma completamente distinta a las operaciones enteras, con registros dedicados y tiempo de ciclo diferentes. Incluso para operaciones complejas, como la división, podrían tener un circuito dedicado a dicha operación.
Hasta mediados de la década de los 90 del siglo pasado, era común que las CPU no incorporasen una FPU en los ordenadores domésticos, sino que eran un elemento opcional conocido como coprocesador. Ejemplos podrían ser las FPUs 387 y 487 que se utilizaban en las CPUs 386 y 486SX (el modelo 486DX ya incluía el coprocesador de serie) en máquinas Pentium, o la FPU 68881 utilizada en las CPUs 680x0 en ordenadores Macintosh. Sin embargo, a partir de dichas CPUs, la FPU se convirtió en un elemento común presente en la mayoría de procesadores domésticos (series Pentium y PowerPC en adelante.






                                                            UNIDAD DE CONTROL



La unidad de control (UC) es uno de los tres bloques funcionales principales en los que se divide una unidad central de procesamiento (CPU). Los otros dos bloques son la Unidad de proceso y el bus de entrada/salida.

Su función es buscar las instrucciones en la memoria principal, decodificarlas (interpretación) y ejecutarlas, empleando para ello la unidad de proceso.
La ejecución de una instrucción se divide en varias etapas que deben realizarse según una secuencia muy precisa de señales de control que establece la señal de control. Hay dos formas básicas para implementar la unidad de control: 



Unidad de control cableada: Realiza sus funciones mediante elementos hardware. No la analizaremos en profundidad aquí.

Unidad de control microprogramada: Es mas lenta que la anterior, pero permite implementar instrucciones mas potentes y flexibles. Será analizada en profundidad en los siguientes apartados




                                                 UNIDAD DE INTERFAZ EN EL BUS



La unidad de interfaz del bus o unidad E/S, es la parte del procesador que se une con el resto de la PC. Debe su nombre al hecho de que realiza los movimientos de datos hacia el bus de datos del procesador, el primer conducto en la transferencia de información hacia y desde el CPU. La BIU es la responsable de responder a todas las señales que van al procesador, y de generar todas las señales que van del procesador a las demás partes del sistema. También sirve de paso a las instrucciones de programa y los datos para que éstos puedan alcanzar los registros de la unidad de control y de la ALU. La BIU sincroniza los niveles de las señales de la circuitería interna del microprocesador con los de los otros componentes dentro de la PC. Los circuitos internos de un microprocesador, por ejemplo, se diseñan para consumir poca electricidad de modo que puedan funcionar más rápidamente y evitar el calentamiento excesivo. Estos circuitos internos delicados no pueden manejar los voltajes más altos necesarios para los componentes externos. Por lo tanto, cada señal que sale del microprocesador pasa a través de un buffer de señal intermedio en la BIU que incrementa su voltaje.





                                         
                                           FUNCIONES BASICAS DEL PROCESADOR


Se encarga del control y el procesamiento de datos en todo el ordenador. Para esta tarea es necesario que le ayuden otros elementos capaces de realizar funciones específicas y así liberar de trabajo costoso y difícil al microprocesador.



1. Unidad Aritmetico-Lógica (ALU): Lleva a cabo las funciones de procesamiento de datos.

2. Unidades Funcionales: se encargan de operaciones matemáticas específicas, y así sacan y facilitan el trabajo al microprocesador. (sumas, multiplicaciones, dividir por números enteros, etc.)
3. Registros: Almacenan datos durante cierto tiempo, dentro la CPU.
etc.
Todos estos elementos están conectados entre sí por medio de un conjunto de circuitos o conexiones nombrado bus. Todo su funcionamiento se basa en interpretar las señales eléctricas como números y de esta forma poder operar sobre ellas, para lo cual hace servir métodos como la álgebra de Boole.



               
                                        MANEJO DE INSTRUCCIONES DEL PROCESADOR



Un proceso es un programa en ejecución, los procesos son gestionados por el sistema operativo y están formados por:
Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador.
Su estado de ejecución en un momento dado, esto es, los valores de los registros de la CPU para dicho programa.
Su memoria de trabajo, es decir, la memoria que ha reservado y sus contenidos.
Otra información que permite al sistema operativo su planificación. Esta definición varía ligeramente en el caso de sistemas operativos multihilo, donde un proceso consta de uno o más hilos, la memoria de trabajo (compartida por todos los hilos) y la información de planificación. Cada hilo consta de instrucciones y estado de ejecución. Los procesos son creados y destruidos por el sistema operativo, así como también este se debe hacer cargo de la comunicación entre procesos, pero lo hace a petición de otros procesos. El mecanismo por el cual un proceso crea otro proceso se denomina bifurcación (fork). Los nuevos procesos pueden ser independientes y no compartir el espacio de memoria con el proceso que los ha creado o ser creados en el mismo espacio de memoria. En los sistemas operativos multihilo es posible crear tanto hilos como procesos. La diferencia estriba en que un proceso solamente puede crear hilos para sí mismo y en que dichos hilos comparten toda la memoria reservada para el proceso.




                                                                        
                                          INSTRUCCIONES DEL PROCESADOR


Aritmetica: Es la encargada de realizar los cálculos. Los datos sobre los que se realizan la operaciones se denominan operandos. Al elemento encargado de ejecutar las operaciones se le denomina operador, y esta formado por una serie de circuitos electrónicos que son capaces de sumar dos números binarios o hacer las operaciones lógicas elementales: disyunción, conjunción y negación; incluso algunos operadores son también capaces de multiplicar, dividir y realizar otras operaciones mas complejas.


Logica: es el cerebro de una computadora. Su función e ejecutar programas almacenados en la memoria central tomando sus instrucciones, examinándolas y luego ejecutándolas una tras otra. La CPU se compone de varias partes. La unidad de control se encarga de traer las instrucciones de las memoria principal y de determinar su tipo. La unidad aritmética y lógica realiza operaciones como la suma o la función booleana AND, necesarias para llevar a cabo las instrucciones.


                                     


Booleanas: Estas instrucciones corresponden a- contactos de cierre: el contacto se establece cuando el objeto bit que controla el contacto está en el estado 1, - contactos de apertura: el contacto se establece cuando el objeto bit que controla el contacto está en el estado 0,- contactos de flanco ascendente: detección del paso de 0 a 1 del objeto bit que lo controla,- contactos de flanco descendente: detección del paso de 1 a 0 del objeto bit que lo controla.




Pipelininig: La segmentación de instrucciones es similar al uso de una cadena de montaje en una fábrica de manufacturación. En las cadenas de montaje, el producto pasa a través de varias etapas de producción antes de tener el producto terminado. Cada etapa o segmento de la cadena está especializada en un área específica de la línea de producción y lleva a cabo siempre la misma actividad. Esta tecnología es aplicada en el diseño de procesadores eficientes. A estos procesadores se les conoce como pipeline processors.
Un pipeline processor está compuesto por una lista de segmentos lineales y secuenciales en donde cada segmento lleva a cabo una tarea o un grupo de tareas computacionales. Puede ser representado gráficamente en dos dimensiones, en donde en el eje vertical encontramos los segmentos que componen el pipeline y en el segmento horizontal representamos el tiempo.


RAM y ROM: La memoria de acceso aleatorio (en inglés: random-access memory cuyo acrónimo es RAM) es la memoria desde donde el procesador recibe las instrucciones y guarda los resultados. Es el área de trabajo para la mayor parte del software de un computador.1 Existe una memoria intermedia entre el procesador y la RAM, llamada caché, pero ésta sólo es una copia (de acceso rápido) de la memoria principal (típicamente discos duros) almacenada en los módulos de RAM.1 Por ejemplo, en el sistema operativo Windows Vista, gracias al servicio ReadyBoost, es posible asignar memoria flash de un dispositivo externo USB como memoria caché y así mejorar la velocidad del equipo informático, debido a la mayor velocidad de las Flash respecto al disco duro.



                                                       JERARQUIA DE MEMORIA

Se conoce como jerarquía de memoria a la organización piramidal de la memoria en niveles, que tienen los ordenadores. Su objetivo es conseguir el rendimiento de una memoria de gran velocidad al coste de una memoria de baja velocidad, basándose en el principio de cercanía de referencias.
Los puntos básicos relacionados con la memoria pueden resumirse en: Cantidad, Velocidad y Coste.

Se busca entonces contar con capacidad suficiente de memoria, con una velocidad que sirva para satisfacer la demanda de rendimiento y con un coste que no sea excesivo. Gracias a un principio llamado cercanía de referencias, es factible utilizar una mezcla de los distintos tipos y lograr un rendimiento cercano al de la memoria más rápida.

Los niveles que componen la jerarquía de memoria habitualmente son:
Nivel 0: Registros
Nivel 1: Memoria caché
Nivel 2: Memoria principal
Nivel 3: Disco duro (con el mecanismo de memoria virtual)
Nivel 4: Redes(Actualmente se considera un nivel más de la jerarquía de memorias)













                                                                               







                                                                         

Cibergrafia

http://html.rincondelvago.com/sistemas-numericos.html
http://platea.pntic.mec.es/~lgonzale/tic/binarios/numeracion.html
http://www.fismat.umich.mx/~elizalde/curso/node110.html
http://lenguajeensamblador.galeon.com/
http://www.dte.us.es/tec_inf/itis/estr_comp/docweb/tema4/tema4ec-3.pdf

Sistema Hexagecimal

En el sistema de numeracion  Headecimal los numeros se representan con 16 simbolos (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F). Se utilizan los caracteres  A,B,C,D,E Y F representando los numeros 10,11,12,13,14 y 15 respectivamente, porque no hay digitos mayores que 9 en el sistema decimal. El valor de cada uno de estos simbolos depende de su posicion, que se calcula mediante potencias de base 16.

Para Calcular el valor hexadecimal de 1A3F16:
1A3F16 = 1*163 + A*162 + 3*161 + F*160
 
1*4096 + 10*256 + 3*16 + 15*1 = 6719

1A3F16 = 671910




Para poder representar los numeros negativos en este sistema tenemos la posibilidad de escribir un hexadecimal desde 00000000 hasta FFFFFFFF, ¿como representaríamos los números negativos?

Un día, a un genio se le ocurrió que en vez de representar desde 00000000 hasta FFFFFFFF todos los números positivos, usaríamos la mitad para los positivos y la otra mitad para los negativos.

Los números positivos van entonces desde 00000000 hasta 7FFFFFFF y los negativos desde 80000000 hasta FFFFFFFF.

Positivos:
00000000 = 0 decimal.
00000001 = 1 decimal.
....................................
....................................
7FFFFFFF = 2147483647 decimal (Que sería el máximo positivo).

Negativos:
FFFFFFFF = -1 decimal.
FFFFFFFE = -2 decimal.
.......................................
.......................................
80000000 = -2147483648 decimal (Que sería el máximo negativo.)

lunes, 22 de abril de 2013

Sistema Octal

Uno de los inconvenientes con el sistema de numeracion binario es que su representacion de algunos numeros es muy larga, por este motivo se utilizan otros sistemas de numeracion que resulten mas comodos de escribir; como lo son el sistemas octal y el hexagecimal.

En el Sistema de Numeracion Octal, los numeros se representan mediante ocho digitos (0,1,2,3,4,5,6,7). Cada digito tiene un valor distinto dependiendo de la posicion que ocupen. El valor de cada una de las posiciones viene determinado por las ptencias de la base 8.
por ejemplo el numero 273tiene un valor que se calcula asi:


2*83 + 7*82 + 3*81 = 2*512 + 7*64 + 3*8 = 149610

2738
 = 149610


Sistema Decimal

tanto con números, así como en las operaciones básicas.
El sistema de numeracion que utilizamos habitualmente es el Decimal, este se compone de 10 digitos que son: 1,2,3,4,5,6,7,8,9,0. a los cuales se les otroga un valor dependiendo de su posicion dentro de la cifra: unidades, decenas, centenas, millares, etc.
El valor de cada digito esta asociado con una potencia base 10, el numero coincide con la cantidad de simboloes del sietma y un exponente igual a su posicion que ocupa el digito menos uno, contando desde su derecha.

En este sistema el numero 528, por ejemplo, significa:

                                       5 centenas + 2 decenas + 8 unidades, es decir:
5*102 + 2*101 + 8*100 o, lo que es lo mismo:
500 + 20 + 8 = 528

En el caso de numeros con decimales, algunos exponentes de las potencias seran negativos, especificamente el de los digitos colocados a la derecha de lacoma, por ejemplo:
   
     El numero 8245.97 se calcula como:

         8 millares + 2 centenas + 4 decenas + 5 unidades + 9 décimos + 7 céntimos
8*103 + 2*102 + 4*101 + 5*100 + 9*10-1 + 7*10-2, es decir:
8000 + 200 + 40 + 5 + 0,9 + 0,07 = 8245,97

Sistema Binario

El sistema de numeracion binario utiliza solo 2 digitos, el cero (0) y el uno (1).
En una cifra binaria, cada digito tiene distinto valor deprendiendo de la posicion que ocupe. El valor de cada posicion es el de una potencia en Base 2, elevada a un exponente igual a la posicion del digito menos uno.
La base de la potencia coincide con la cantidad de los digitos utilizados (2) para representar los numeros.
De acuerdo con dichas reglas el numero binario 1011 tiene un valor que se calcula asi:

1*23 + 0*22 + 1*21 + 1*20 , es decir:
8 + 0 + 2 + 1 = 11

10112 = 1110



En la aritmetica ordinaria, indicamos un número negativo con un signo de menos, y uno positivo, con un signo más. Por las limitaciones del hardware, las computadoras deben representar todo cfon dígitos binarios. Se acostubra representar el signo con un bit colocado en la posición extrema izquierda del número. La convencion es que el bit sea cero si el numero es positivo, y uno si es negativo.

        Si el número binario posee signo, el bit de la extrema izquierda representará el signo y el resto de los bit representarán el número.

        Por ejemplo :

           La cadena de bits 01001 se considera como 9 (binario sin signo) o + 9 (binario con signo) porque el bit de la extrema izquierda es cero             

La cadena de bits 11001  representa el equivalente binario a 25 cuando se considera un número sin signo, o -9 cuando se le considera un número con signo; ello se debe a que el uno de la posicion extrema izquierda indica que será negativo y los cuatro bits representan 9 en binario.




La representación usa la convencion de magintud con signo

Al implementar las operaciones aritméticas en una computadora, es más conveniente usar un sitema distinto para representar numeros negativos, denominado sitema de complemento con signo. en este sitema, los números negativos se indican con su complemento. Puesto que los números positivos simepre inician con cero (más) en la posición de extrema izquierda, el complemento siempre iniciara con un uno lo que indica un número negativo. el sistema completo con signo puede utilizaqr el complemento a uno o a dos, aunque este último es el más común.

        Por ejemplo:




Considere el número 9 representado en binario con ocho bits. +9 se representa con un bit de signo cero en la posición de extrema izquierda, seguido el equivalente binario de 9, lo que da 00001001. Cabe señalar que los ocho bites deben tener valor, por lo que se insertan ceros despues del bit de signo, hasta el primer uno. Aunque solo hay una forma de representar +9, hay tres formas de representar -9 con ocho bits.


              representación de magnitud con signo                      10001001

              representación de complemento a uno con signo        11110110


              representación de complemento a dos con signo        11110111


En el sistema de magnitud con signo, se obtiene -9 a partir de +9 cambiando el bit de signo en la posición de extrema izquierda, de cero a uno. En complemento a uno con signo, se obtiene -9 complementando todos los bits de +9, incluido el bit de signo. la representación de -9 en completo a dos con signo se obtiene tomando el complemento a dos del número positivo,incluido el bit de signo.