Páginas

martes, 18 de noviembre de 2014

martes, 7 de octubre de 2014

CÓDIGO POST DEL BIOS


Imagen tomada de: harddepc.blogspot.com

BIOS

BIOS son las siglas de Basic Input Output System. Eso no dice mucho, así que es mejor que sigas leyendo.

Qué hace la BIOS


¿Alguna vez te has preguntado qué pasa en tu PC cuando lo enciendes? Lo normal es que veas alguna clase de logotipo, de la marca de tu computadora o la placa base. Y luego a Windows cargándose.

Entre una cosa y otra es cuando la BIOS hace su trabajo. Un PC tiene dos partes fundamentales: el hardware (placa, procesador, RAM, discos, etc.) y el software (Windows, Word, Explorer, etc.).

Cuando el PC arranca, el hardware y el software están separados. Ninguno de los dos "es consciente" de que el otro existe. Tampoco Windows, porque está instalado en un disco duro.

Tiene que haber algo que le diga al hardware dónde buscar el sistema operativo. O para empezar, hacerle saber al resto del hardware que hay un disco duro. De eso se encarga la BIOS.

Su ventaja es ser una especie de sistema operativo básico integrado en el propio hardware, como un chip de la placa base.

Las configuraciones de la BIOS no se borran al apagar el PC porque se almacenan en un chip de memoria especial: la CMOS. Esa memoria se mantiene con una pequeña pila. La CMOS consume tan poca energía que lo normal es no tener que cambiar su pila en toda la vida de la computadora.

Además de ordenar que se cargue Windows u otro sistema operativo, la BIOS tiene más tareas fundamentales:
·         Chequearse a sí misma. Y mostrar información sobre el tipo y versión de BIOS y la clase y velocidad de la CPU.




·         Comprobar la cantidad e integridad de la memoria RAM del sistema.




·         Detectar e inicializar componentes y dispositivos del equipo: teclado, ratón, tarjeta gráfica, disco duro, etc.




·         Activar otras BIOS específicas, como la de la gráfica.




·         Cargar configuraciones variadas (la hora, por ejemplo).




·         Establecer desde qué unidades puede arrancar el PC (disco duro, CD, USB, etc.).

La BIOS va informando de lo que hace mediante líneas de texto que aparecen (muy deprisa) en la pantalla. A estas informaciones se les llama POST, por Power-On Self Test.


El POST de la BIOS indica también cómo acceder a su pantalla de configuración (elBIOS Setup). En PC modernos el POST muestra además la tecla de acceso al menú de arranque (Boot Menu). Con él puedes elegir tú mismo desde qué unidad arrancar.

La BIOS Setup


Muchas de las opciones de la BIOS pueden cambiarse. Eso se hace mediante su pantalla de configuración: la BIOS Setup o CMOS Setup.

En una BIOS típica podrás encontrarte estas secciones (suelen estar en inglés):

·         Advanced Advanced BIOS Features. Activar o desactivar las funciones de red (LAN o inalámbrica), el USB, el teclado numérico. Definir el tipo de controlador del disco duro (SATA, IDE). Hacer que se muestre o no el POST de la BIOS.


En las BIOS antiguas aquí se cambia la secuencia de arranque del PC (ve Boot, más abajo). También opciones de la CPU, la memoria o la propia BIOS. Muchas de ellas orientadas a mejorar el rendimiento.

·         Power o Power Management Setup. Gestionar las características de ahorro de energía del PC. Por ejemplo, si la pantalla o el disco duro deben o no entrar en suspensión. O cómo "despertar" la computadora cuando entra en ese estado.


Hay BIOS que tienen un Hardware Monitor en esta sección (o en una aparte, PC Health Status). Muestra datos sobre la temperatura de la CPU o la caja, el voltaje o la velocidad de los ventiladores. Y permite cambiar aspectos como el límite de temperatura para que se active una alarma de aviso.

·         Boot. Aquí se define en las BIOS modernas la secuencia de arranque. Es decir, desde qué unidades y en qué orden el PC debe buscar un modo de arrancarse.


La opción por defecto es que se inicie desde el disco duro, donde está Windows. Pero a veces conviene arrancar desde CD, USB u otra unidad, en caso de infección o problemas en el inicio normal.

En el Boot también se definen opciones que aceleran el arranque, como elQuick/Silent Boot o el Boot Booster. Y si debe o no mostrarse el mensaje sobre cómo entrar en la BIOS Setup.

·         Exit. Suelen estar disponibles varias posibilidades: salir de la BIOS Setup guardando o no los cambios, desechar las modificaciones y mantenerse en ella o cargar las configuraciones de fábrica si ha habido problemas con cambios que hayas hecho.


NOTA: Estas opciones pueden encontrarse en secciones independientes con nombres algo distintos. Y a veces hay disponibles dos tipos de configuraciones de fábrica: Load Fail-Safe Defaults (configuraciones básicas, muy estables) o Load Optimized Defaults (configuraciones menos estables pero optimizadas para un rendimiento mejor).

Actualizar la BIOS
La mayoría de las BIOS modernas son del tipo Flash ROM. Significa que pueden actualizarse sin necesidad de quitar el chip que las alberga y reescribirlas con un dispositivo especial.

Las BIOS Flash ROM puede actualizarlas cualquier usuario mediante un archivo de instalación especial. Podrás descargarlo desde los sitios web de los fabricantes de la placa base.

NO actualices tu BIOS salvo cuando sea imprescindible. Si tienes que hacerlo acude a un servicio técnico o pide ayuda a un usuario avanzado. Ten siempre la precaución de hacer una copia de seguridad de todo tu PC ANTES de intentar actualizar la BIOS.

Tomado de :http://windowsespanol.about.com/od/ConoceEInstalaWindows/f/Que-Es-La-Bios.htm

JERARQUÍA DEL PROCESADOR


martes, 30 de septiembre de 2014

REGISTRO DE BANDERAS GRAFICO


MEMORIA RAM

- Animación del funcionamiento de una memoria RAM
    Como apoyo a la comprensión del tema, te ofrecemos una animación sobre el funcionamiento interno de una memoria RAM:
Figura 1. Animación de funcionamiento interno de una memoria RAM
1) La celda de memoria se carga de una corriente eléctrica alta cuándo indica el valor 1.
2) La celda de memoria se carga de una corriente eléctrica baja cuándo indica el valor 0.
3) Al apagar la computadora, las cargas desaparecen y por ello toda la información se pierde.
4) Este tipo de celdas tienen un fenómeno de recarga constante ya que tienden a descargarse, independientemente si la celda almacena un 0 ó un 1, esto se le llama "refrescar la memoria", solo sucede en memorias RAM y ello las vuelve relativamente poco eficaces.
- Definición de memoria RAM
      RAM proviene de ("Random Access Memory") ó memoria de lectura aleatoria: es un dispositivo electrónico que se encarga de almacenar datos e instrucciones de manera temporal, de ahí el término de memoria de tipo volátil ya que pierde los datos almacenados una vez apagado el equipo; pero a cambio tiene una muy alta velocidad para realizar la transmisión de la información.
Enlaces patrocinados y ligas
-
     • Memoria ROM
     • Memorias USB
     • Tarjetas de memoria digital
     • Memorias GDDR
Apoyo a personas especiales

Mensajes a la comunidad IM

    En la memoria RAM se carga parte del sistema operativo (Linux Ubuntu, Apple® MacOS, Microsoft® Windows 7, etc.),  los programas como (Office, Winzip®, Nero®, etc.), instrucciones desde el teclado, memoria para desplegar el video y opcionalmente una copia del contenido de la memoria ROM.
     + Ejemplo: cuando damos doble clic a la aplicación Microsoft® Word, el programa será leído desde el disco duro e inmediatamente la computadora buscará almacenarlo en la memoria RAM, ello para que el usuario lo utilice sin la lentitud que implicaría trabajarlo desde el disco duro, y una vez terminada de usar la aplicación, la RAM se libera para poder cargar el próximo programa a utilizar.
Figura 2. Memoria RAM tipo DDR, marca Kingston®, modelo KVR266, capacidad 128 MB, bus 266 MHz
Tipos de memorias DRAM comerciales
      Hay tres tipos de memorias RAM, la primeras son las DRAM, SRAM y una emulación denominada Swap:
      Tipo 1, DRAM: las siglas provienen de ("Dinamic Random Access Memory") ó dinámicas, debido a que sus chips se encuentran construidos a base de condensadores (capacitores)los cuáles necesitan constantemente refrescar su carga (bits) y esto les resta velocidad pero a cambio tienen un precio económico.
     + Ejemplo: hagamos una analogía con una empresa que fabrica hielo, pero para ello no cuenta con una toma de agua, sino que constantemente necesita de pipas con agua para realizar su producto. Esto la hace lenta ya que tiene que esperar que le lleven la materia de trabajo constantemente.
     La siguiente lista muestra las memorias RAM en modo descendente, la primer liga es la mas antigua y la última la mas reciente.
  1. Memoria RAM tipo TSOP.
  2. Memoria RAM tipo SIP.
  3. Memoria RAM tipo SIMM.
  4. Memoria RAM tipo DIMM - SDRAM.
  5. Memoria RAM tipo DDR/DDR1 y SO-DDR.
  6. Memoria RAM tipo RIMM.
  7. Memoria G-RAM / V-RAM (Actual).
  8. Memoria RAM tipo DDR2 y SO-DDR2 (Actual).
  9. Memoria RAM tipo DDR3 y SO-DDR3(Actual).
  10. Memoria RAM tipo DDR4 y SO-DDR4 (Próxima Generación).
- Tipos de memorias SRAM comerciales
      Tipo 2. SRAM:  las siglas provienen de ("Static Random Access Memory") ó estáticas, debido a que sus chips se encuentran construidos a base de transistores, los cuáles no necesitan constantemente refrescar su carga (bits) y esto las hace sumamente veloces pero también muy caras. El término memoria Caché es frecuentemente utilizada pare este tipo de memorias, sin embargo también es posible encontrar segmentos de Caché adaptadas en discos duros, memorias USB y unidades SSD.
     + Ejemplo: hagamos una analogía con una empresa que fabrica hielo, la cuál cuenta con una toma de agua, por lo que no necesita esperar la llegada pipas ó carros tanque, sino que inmediatamente puede realizar sus funciones. Esto la hace rápida ya que tiene la materia de trabajo constante.
- Que es la memoria virtual - Swap y para que sirve
Figura 3. Asignación de SWAP en el disco duro
      Tipo 3. Swap. La memoria virtual ó memoria Swap ("de intercambio") no se trata de memoria RAM como tal, sino de una emulación (simulación funcional), esto significa que se crea un archivo de grandes dimensiones en el disco duro ó unidad SSD, el cuál almacena información simulando ser memoria RAM cuándo esta se encuentra parcialmente llena, así se evita que se detengan los servicios de la computadora.
      Este tipo de memoria se popularizó con la salida al mercado de sistemas operativos gráficos tales como MacOS de Macintosh®(actualmente Apple®) ó Windows de Microsoft®, debido a que la memoria instalada en la computadora es regularmente insuficiente para el uso de ventanas, aunque al parecer el sistema operativo UNIX lo utilizaba de manera normal antes que sus competidores.
      En los sistemas operativos Microsoft® Windows Vista/Microsoft® Windows 7, con el software ReadyBoost® y en  Microsoft® Windows XP con ayuda de algunas utilidades como EBoostr®, es posible utilizar un archivo de intercambio (Swap) en memorias USB e incluso enmemorias SDMemoryStick®, etc., que permiten aumentar la velocidad del equipo. Básicamente no debe ser menor a 256 MB la capacidad disponible del dispositivo, tener una velocidad alta de transmisión de datos y asignarse del siguiente modo:
      a) Mínimo: (Total de RAM) + (1/2 Total de RAM)
      b) Máximo: 3X(Total de RAM)
      Ejemplo: Si tengo 1 GB en RAM, debo tener mínimo (1 GB + 0.5 GB)= 1.5 GB, y máximo 3X(1 GB)= 3 GB.
Estructura lógica de la memoria RAM
       Desde las primeras computadoras, la estructura lógica ha sido la siguiente:
  • Memoria base: desde 0 hasta 640 KB (KiloBytes), es en esta zona dónde se almacena la mayoría de los programas que el usuario utiliza.
  • Memoria superior y reservada: de 640 a 1.024 MB (MegaBytes), carga unas estructuras llamadas páginas de intercambio de información y unos bloques de memoria llamados UMB.
              - Bloques UMB (Upper Memory Blocks): se trata de espacios asignados para el sistema dentro de la memoria superior, pero debido a la configuración de diversos dispositivos como el video, en algunos casos estos espacios quedan sin utilizar, por lo que se comenzó a pensar en utilizarlos de modo funcional, lo que se logra con programas que optimizan la memoria, como el comando "memmaker" de Ms-DOS®, que se utilizaba estos bloques para cargar ciertos Drivers (controladores que permiten al Hardware ser utilizado en el sistema).
  • Memoria expandida: se trata de memoria paginada que se asigna a programas en memoria superior, la cuál algunas veces no se utilizaba debido a la configuración del equipo y con este método se puede utilizar.
  • Memoria extendida: de 1.024 MB hasta 4 GB (GigaBytes), se cargan todas las aplicaciones que no caben en la memoria base.
      Antes debido a que los equipos contaban con memoria RAM limitada, existían utilerías que reacomodaban los programas cargados en memoria para optimizar su funcionamiento, inclusive elsistema operativo Microsoft® Ms-DOS necesitaba de un controlador especial (himem.sys), para reconocer la memoria extendida, sin él solo reconocía 640 KB aunque hubiera instalados más de 1 MB.
Figura 3. División lógica de la memoria RAM
- Definición de Buffer de memoria
      Un Buffer (amortiguador), es un espacio físico en cualquier dispositivo de almacenamiento masivo de lectura/escritura, comúnmente en RAM, que se asigna para almacenar información que será procesada casi inmediatamente y tenerla en espera de proceso, hasta que una vez utilizados los datos, estos se borren para esperar nuevos. Estos segmentos se utilizan mucho en las impresoras, que guardan en Buffer los documentos en cola de impresión, en los antiguos Discman®, que para evitar que la melodía se detuviera, iban almacenando unos segundos más de música en caso de un movimiento brusco en el aparato y finalmente en YouTube® que mientras reproduce, se va adelantando en descargar el resto del video.
Tabla de tipos de memorias actuales en general
      Tabla basada en la descripción de la revista "PC a Fondo" y complementada:


Tipo de memoriaSignificadoDescripción
Tipo RAM
RAM
"Random Access Memory", memoria de acceso aleatorio
Memoria primaria de la computadora, en la que puede leerse y escribirse información en cualquier momento, pero que pierde la información al no tener alimentación eléctrica.
EDO RAM
"Extended Data Out Random Access Memory", memoria de acceso aleatorio con salida de datos extendida
Tecnología opcional en las memorias RAM utilizadas en servidores, que permite acortar el camino de la transferencia de datos entre la memoria y el microprocesador.
BEDO RAM
"Burst EDO Random Access Memory", memoria de acceso aleatorio con salida de datos extendida y acceso Burst
Tecnología opcional; se trata de una memoria EDO RAM que mejora su velocidad gracias al acceso sin latencias a direcciones contiguas de memoria.
DRAM
"Dinamic Random Access Memory", memoria dinámica de acceso aleatorio
Es el tipo de memoria mas común y económica, construida con capacitores por lo que necesitan constantemente refrescar el dato que tengan almacenado, haciendo el proceso hasta cierto punto lento.
SDRAM
"Synchronous Dinamic Random Access Memory", memoria dinámica de acceso aleatorio
Tecnología DRAM que utiliza un reloj para sincronizar con el microprocesador la entrada y salida de datos en la memoria de un chip. Se ha utilizado en las memorias comerciales como SIMMDIMM, y actualmente la familia de  memorias DDR (DDR, DDR2, DDR3, DDR4, GDDR, etc.), entran en esta clasificación.
FPM DRAM
"Fast Page Mode Dinamic Random Access Memory", memoria dinámica de paginación de acceso aleatorio
Tecnología opcional en las memorias RAM utilizadas en servidores, que aumenta el rendimiento a las direcciones mediante páginas.
RDRAM
"Rambus DRAM", memoria dinámica de acceso aleatorio para tecnología Rambus
Memoria DRAM de alta velocidad desarrollada para procesadores con velocidad superior a 1 GHz, en esta clasificación se encuentra la familia de  memorias RIMM.
SRAM / Caché"Static Random Access Memory", memoria estática de acceso aleatorioMemoria RAM muy veloz y relativamente cara, construida con transistores, que no necesitan de proceso de refresco de datos. Anteriormente había módulos de memoria independientes, pero actualmente solo se encuentra integrada dentro de microprocesadores y discos duros para hacerlos mas eficientes.
Tipo ROM
ROM"Read Only Memory", memoria de solo lecturaMemoria que permite un número indeterminado de lecturas pero no puede ser modificada.
PROM
"Programmable Read Only Memory", memoria programable de solo lectura
Memoria ROM que permite una programación y posteriormente un número indeterminado de lecturas pero no puede ser modificada.
EPROM"Erasable Programmable Read Only Memory", memoria programable y borrable de solo lecturaMemoria PROM que permite reprogramación por medio de un dispositivo especial y borrado por medio de luz ultravioleta.
EEPROM
"Electrically Erasable Programmable Read Only Memory", memoria eléctricamente programable y borrable de solo lectura
Evolución de las memorias EROM que permite alterar su contenido por medio de señales eléctricas. Es la mas utilizada en las computadoras actuales para albergar el SetUp de la computadora.
Tipo Flash
Flash NAND
"Flash NAND", el término Flash es debido a la alta velocidad que puede manejar y NAND a un tipo de conexión especial de sus elementos electrónicos (Compuerta tipo NAND)
Memoria que permite almacenar datos y mantenerlos almacenados sin necesidad de alimentación eléctrica hasta por 10 años. Se utiliza en las memorias USB , memorias SDMemoryStick de Sony®unidades SSD, e incluso para BIOS, etc.
Tipo Swap
Swap / Virtual MemoryDe intercambio ó memoria virtualSe trata de una simulación de RAM en un área de un disco duro, lo cuál no permite que se detengan servicios al escasear memoria RAM pero ralentiza a la computadora. También se puede actualmente crear SWAP en una memoria USB, utilizando el Software ReadyBoost de Microsoft® Windows Vista u otros programas para Microsoft® Windows XP, de este modo se vuelve mas eficiente el equipo de cómputo.
Otros
Buffer"Amortiguador"Soporta información que se encuentra en espera de ser procesada y una vez realizado ese proceso, la borra para esperar nuevos datos, puede ser espacio asignado en una memorias RAM ó en un disco duro.
Tomado de: http://www.informaticamoderna.com/Memoria_RAM.htm

ARQUITECTURA DEL PROCESADOR

Arquitectura del Procesador
Sinopsis
El procesador es todo un mundo en sí mismo;  aunque los primeros eran comparativamente simples, actualmente han alcanzado una notable complejidad.  En el presente capítulo dedicaremos algunos comentarios a su estructura lógica, mencionando de pasada que su tecnología física ha avanzado paralelamente con la de construcción de circuitos integrados,IC's, lo que a la postre ha significado unas dimensiones físicas cada vez más pequeñas y un menor consumo.
La evolución de ambos parámetros no solo ha permitido incrementar la densidad de integración, también la velocidad (frecuencia de funcionamiento).  Si nos referimos a la familia Intel, de los 2.100 transistores del 4004 en 1970, que con solo 46 instrucciones funcionaba a unos 800 KHz, se pasó a los 29.000 transistores del 8086 en 1979 a 14 MHz; y en 1999 a los 8.200.000 transistores del Pentium III a 2 GHz.
Nota:  acabo de leer (Noviembre 2001) que Intel anuncia la nueva tecnología de 0.13 micras para su serie Pentium 4(hasta ahora era de 0.18 micras), con la que se espera que a fines de 2002 se alcancen los 3 GHz. en estos procesadores.  Un poco después (Enero 2002) leo que Intel espera alcanzar 1.2 THz en sus procesadores para el 2005 (escribo esto en un Pentium II a 200 MHz no demasiado antiguo).

En Abril del 2002  Intel anuncia el procesador Pentium 4 con tecnología CMOS de 0,16 micras a 2.4 GHz  y mejoras en el proceso de fabricación que permiten su fabricación en obleas de 300 mm.  Esta tecnología permite al fabricante proporcionar más de cinco veces el volumen de productos en una sola oblea en comparación con la del procesador Pentium 4 inicial.

En Junio del mismo año Intel desvela su nueva tecnología de fabricación de transistores "Tera-Herz", con la que pretende que en el 2005 pueda alcanzar los 10 GHz.  Craig Barret, CEO [7] de la compañía, afirma que en un futuro no lejano esperan conseguir 2.000 millones de transistores en un procesador a 30 GHz.
Actualmente se trabaja en el límite de la resolución óptica de los dispositivos utilizados en su construcción (se usan técnicas fotográficas con longitudes de onda cada vez menores para la luz utilizada), y debido a la altísima frecuencia de funcionamiento, los conductores internos funcionan más como guías de onda que como conductores eléctricos convencionales.  Además, las dimensiones físicas del propio dispositivo están teóricamente limitadas si se desea que todos sus elementos funcionen según un mismo patrón de tiempo (cosa que es imprescindible).  Para dar una idea de las formidables dificultades técnicas que han debido resolver los diseños actuales, considere que a la velocidad del Pentium III, las señales eléctricas solo recorren 15 centímetros en cada ciclo de reloj.
Tipos de arquitectura
Una de las primeras decisiones a la hora de diseñar un procesador es decidir cual será su juego de instrucciones.  Este conjunto de instrucciones (órdenes) es el lenguaje que realmente entiende el procesador, y constituye lo que se conoce como lenguaje ensamblador o lenguaje-máquina [1].
La decisión es trascendente, por dos razones.  Primero: el juego de instrucciones decide el diseño físico del conjunto.  Segundo: cualquier operación que deba ejecutarse con el procesador deberá poder ser descrita en términos de este "lenguaje" elemental (recuerde que los compiladores e intérpretes son en realidad traductores desde el lenguaje de alto nivel (fuente) a este lenguaje-máquina.
Sin entrar en detalles, podemos decir que frente a esta cuestión caben dos filosofías de diseño.  La primera conduce a máquinas denominadas CISC ("Complex Instruction Set Computer"); las máquinas construidas según el otro criterio se denominan RISC ("Reduced Instruction Set Computer").
Como puede deducirse de sus propios nombres, las máquinas CISC utilizan instrucciones muy complejas, diríamos que muy descriptivas y específicas, lo que necesariamente se traduce en varias consecuencias:
  • El lenguaje debe contener un amplio surtido de ellas (una para cada circunstancia distinta).
  • Son instrucciones complejas, por tanto de ejecución lenta.  La circuitería del procesador también es compleja.
  • Para un trabajo específico se requieren pocas instrucciones (siempre hay una que resuelve el problema).
Las máquinas RISC representan el enfoque opuesto.  Utilizan instrucciones muy simples, que deben ser cuidadosamente escogidas, porque cualquier operación debe ser expresada como una secuencia de estas pocas instrucciones.  Las consecuencias son justamente opuestas a las anteriores:
  • El lenguaje contiene un conjunto pequeño de instrucciones.
  • Las instrucciones son muy simples, por tanto de ejecución rápida.  La circuitería es más simple que en los procesadores CISC.
  • Para cualquier operación se requieren varias instrucciones elementales.
Naturalmente cada criterio tiene sus pros y su contra en lo que a rendimiento se refiere.  En las máquinas CISC, lentitud de cada instrucción frente a poca cantidad de ellas;  en las RISC, rapidez individual aunque hay que ejecutar un mayor número [2].
Componentes principales.
De forma esquemática podemos suponer que un procesador se compone de cinco elementos:
  • Memoria 
  • Unidad Artimético-Lógica ALU ("Arithmetic and Logic Unit" )
  • Unidad de Control CU ("Control Unit" )
  • Bus interno 
  • Conexiones con el exterior ( 3.2.1)
Puesto que su conocimiento es esencial para la programación en ensamblador, nos detendremos brevemente la descripción de la arquitectura del 8088; además de ser el motor del primer PC, es uno de los primeros ejemplares de una prolífica saga que ha tenido una gran influencia en la informática actual.  Además recordemos que incluso los modernos Pentium pueden emular el funcionamiento en modo real de sus ancestros.
En le figura 1 se muestran sus elementos.



El procesador necesita para su funcionamiento de ciertas áreas de almacenamiento, que aquí se llaman registros, y que son de dimensiones mínimas [3]; sin embargo, tienen la ventaja de su rapidez.  Comparados con los accesos a RAM, los de registro son como mínimo 10 veces más veloces.
El 8088 dispone de catorce registros de 16 bits que se agrupan en cuatro grupos y que reciben nombres especiales (precisamente los que se utilizan para designarlos en lenguaje ensamblador).
Existen 4 registros denominados AXBXCX y DX que en realidad tienen asignados usos característicos, aunque pueden ser utilizados a discreción para cualquier cosa que necesitemos.
  • AX es denominado acumulador; suele contener uno de los operandos que intervienen en las operaciones aritméticas y lógicas, y después de esta, el resultado de la operación.  En general las instrucciones que trabajan con este registro (o su mitad inferior) tienen un microcódigo Descripción: http://www.zator.com/Hardware/images/Ico_hojaFdwn.gifmás simple que la misma instrucción ejecutada con otro registro.
  • BX es el registro base, suele contener la dirección de inicio de una tabla de valores.
  • CX es denominado contador.  Las instrucciones de bucle (LOOP) utilizan este registro como contador.
  • DX es un registro de datos, multiuso.  Se utiliza en operaciones de multiplicación y división junto con AX.  En operaciones de entrada/salida de puertos IN/OUT, su mitad inferior DL, contiene el número de puerto
  • Aunque estos cuatro registros son de 16 bits (como los 10 restantes) [6], en caso necesario pueden ser utilizados en dos mitades (nibbles), "High" y "Low", de 8 bits, con lo que puede considerarse que existen 12 registros de uso general (no simultáneos), los anteriores y sus mitades:  AH;  AL;  BHBLCHCLDH DL.
Se dispone de cuatro registros que sirven para contener las direcciones de otros tantos segmentos (zonas de 64 KB de memoria).  Utilizándolos en conjunción con otros registros que señalan las direcciones concretas dentro de estos segmentos (los desplazamientosDescripción: http://www.zator.com/Hardware/images/Ico_hojaFdwn.gif), permiten manejar la totalidad de la memoria direccionable (el bus de direcciones es de 20 bits).  Ver al respecto el epígrafe "Direccionamiento segmentado" .
  • Segmento de código CS ("Code segment").  Señala la dirección del segmento de código del programa que se está ejecutando
  • Segmento de datos DS ("Data segment").  Señala la dirección del segmento de datos del programa en ejecución
  • Segmento de pila SS ("Stack segment").  Señala la dirección del segmento donde está la pila del programa
  • Segmento extra ES ("Extra segment").  Es un segmento auxiliar a los anteriores, se utiliza para señalar espacio extra en alguno de los segmentos o para almacenar momentáneamente direcciones intermedias.
Nota: Puede ocurrir que programas pequeños utilicen el mismo segmento para el código, los datos y la pila.
Son 5 registros destinados a contener direcciones; estas direcciones son desplazamientos dentro de los segmentos indicados por los registros de segmento 
El primero, denominado indistintamente puntero de instrucción IP ("Instrucción pointer") y contador de programa PC("Program counter"), indica el desplazamiento (dentro del segmento de código CS) de la próxima instrucción a ejecutar.
  • El puntero de pila SP ("Stack Pointer"), señala el desplazamiento del final de la pila dentro del segmento de pila SS.  En caso necesario la pila puede crecer a partir de este punto, de forma que por ejemplo, una nueva invocación de función creará un nuevo registro de activación que comenzará en este punto.
  • El puntero base BP ("Base pointer") señala el desplazamiento (dentro del segmento de pila SS) donde se encuentra el origen de la zona ocupada por las variables dinámicas.
  • Existen dos registros denominados "de índice", en razón de su utilización muy particular; el índice fuente SI ("Source index") y el índice destino DI ("Destination index").  Generalmente estos dos registros se utilizan con alguno de los registros de uso general y con ciertas instrucciones específicamente pensadas para transferir datos (dentro de un rango de posiciones de memoria), desde un punto inicial de un segmento de datos, a otro.
Ver en la página adjunta un ejemplo relativo al uso de punteros
Registro de estado
Existe un registro especial, el registro de estado (FLAGS), en el que 9 de los 18 bits actúan como semáforos (indicadores del estado del procesador y del resultado de determinadas operaciones).  Por ejemplo, si después de una suma aritmética hay o no desbordamiento del bit más significativo.
Los nombres y situación de cada uno, dentro de la palabra de 16 bits, se muestran en la figura 2.


Cada bits individual puede estar "activo" (1) o "inactivo" (0), y tiene un identificador que termina en F("Flag").  Son los siguientes:



Nota:  Los usuarios de MS-DOS o Windows puede usar el programa DEBUG para inspeccionar y modificar el contenido de los registros de la siguiente forma:
·         Invocar  DEBUG desde una ventana DOS (suponemos que estamos en Windows; el "prompt" es un guión "-")
·         introducir el comando R  (pedimos que nos muestre el contenido de los registros).
·         Salir de Debug con Q
En mi PC la respuesta al comando tiene el siguiente aspecto:

AX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=1779 ES=1779 SS=1779 CS=1779 IP=0100 NV UP EI PL NZ NA PO NC

Los valores están expresados en hexadecimal.  La última secuencia de caracteres (NV UP EI PL NZ NA PO NC) muestra el contenido del registro de estado (el bit TF de detención no se muestra), el significado de la notación utilizada es el siguiente:



También es posible inspeccionar el contenido de un solo registro, añadiendo al comando R el nombre del registro.  Por ejemplo, el comando  R IP muestra el contenido del contador de programa.  Los nombres que pueden utilizarse para los registros son los siguientes:  AX;  BX;  CX;  DX;  SP;  BP;  SI;  DI;  DS;  ES;  SS;  CS;  IP y F (este último para el registro de estado).
Después de un comando de este tipo, DEBUG responde con un "prompt" distinto del habitual ":", para indicar que debe introducir el nuevo valor que desea para el registro.  Pulsando INTRO se vuelve al modo normal.
Comentario
Observe que tanto el registro contador de programa IP, como el de base BP, siempre contienen direcciones de memoria (los otros pueden contener direcciones o datos).  Ni los registros de segmento ni los de puntero se pueden dividir en mitades (como los de uso general).
 Unidad Aritmético-lógica
Como su propio nombre indica, la unidad Aritmético-Lógica ALU ("Arithmetic and Logic Unit"), es responsable de realizar ciertas operaciones aritméticas y lógicas.
En cuanto a las primeras, ya hemos indicado que los primeros procesadores solo eran capaces de realizar operaciones de aritmética básica con números enteros, y que las operaciones con números fraccionarios debían hacerse mediante artificios software.  Esto había motivado la aparición de procesadores específicos para estas operaciones, los denominados coprocesadores matemáticos.  A partir de la introducción del Intel 80486 el coprocesador matemático fue incluido en el procesador.
La unidad aritmética de los procesadores actuales no solo puede realizar las operaciones aritméticas básicas con números enteros o fraccionarios, también ejecuta operaciones como raíz cuadrada y funciones trascendentes, como cálculo del seno, coseno, tangente, arcotangente, logaritmos y exponenciación.
Nota:  En C++ los operadores aritméticos están incluidos en el lenguaje , las operaciones trascendentes están implementadas mediante funciones de la Librería Estándar , en la que existe toda una sección dedicada a estas operaciones <math.h>.
Por su parte, la unidad lógica es la responsable de realizar operaciones lógicas como AND, OR, XOR, etc…
 Unidad de Control
La Unidad de Control CU ("Control Unit") funciona como árbitro del funcionamiento del procesador.  Se encarga de coordinar que todos los elementos funcionen de forma armónica.
Para la ejecución de una instrucción de lenguaje máquina se requieren una serie de operaciones elementales y de sucesos físicos en los diversos componentes del procesador.  Podríamos poner un ejemplo:  El procesador es un submarino en inmersión y el comandante da la orden de emerger.  Esto requiere una serie de operaciones;  los tripulantes deben abrir unas válvulas, cerrar otras; orientar el timón de profundidad; ajustar la velocidad, etc. etc.  En el procesador, la operación MOV AX, BX (mover el contenido del registro BX a AX), requiere también la operación de una serie de válvulas (aquí se llaman puertas lógicas) en un orden determinado.  El conjunto de operaciones necesarias para que se complete cada instrucción de lenguaje-máquina se conoce como microcódigo.  Es un programa de actuación cableado en silicio (firmware) o en una memoria interna especial del procesador CROM ("Control Read Only Memory), y suele comenzar con las maniobras necesarias para traer ("Fetch") la próxima instrucción (señalada por el contador de programa IP), a un módulo de la CU denominado decodificadorde instrucciones.  La Unidad de Control, responsable de que todas estas operaciones se ejecuten correctamente, es en realidad el poder ejecutivo de la UCP (siguiendo con nuestro símil, en las máquinas de von Neumann [4], el "Poder legislativo" sería el programa grabado en memoria).
Nota: Algunos microprocesadores modernos (por ejemplo los Pentium de Intel), permiten modificar el contenido de la CROM, alterando así el microcódigo.  Esto no solo permite actualizarlo, también corregir ocasionalmente algunos errores ("Bugs"); estas actualizaciones se realizan a través de la secuencia POST del BIOS. En la terminología utilizada por los fabricantes de procesadores, las versiones del microcódigo se denominan escalamientos.   Al referirse al microcódigo, el número de escalamiento es equivalente al número de versión en el caso del software.
Como todo lo demás que ocurre en el ordenador estas operaciones se ejecutan según el compás de las señales de reloj que llegan desde la placa-base.  En ocasiones se trata de un microcódigo complicado, para el que se necesitan varios ciclos de reloj.  Por ejemplo, en el 8080 (un antepasado del 8088 montado en los primeros PC's), el microcódigo de las instrucciones más complejas necesitaba nada menos que 18 ciclos de reloj (CLK) para su ejecución, frente a los 4 ciclos de las instrucciones más rápidas.
Aunque el microcódigo se mejora constantemente, su simplificación tiene un límite, que marca el rendimiento del procesador.  Las únicas formas de acelerarlo es aumentar la frecuencia del reloj y el procesamiento paralelo y simultaneo de varias instrucciones.  Esta última capacidad requiere una arquitectura especial (súper escalar) de los procesadores, a la que ya nos hemos referido.
El bus interno
Los diversos elementos de un microprocesador están interconectadas de forma muy compleja (el propio micro lo és), de forma que la imagen de la figura 1  es solo una simplificación conceptual.  En realidad existen varios buses principales, cuya anchura que es dos a cuatro veces la del bus externo ( H2) de los PC's, y muchos más secundarios.
En la figura adjunta se muestra un esquema de la arquitectura interna de un procesador de la familia Pentium de Intel ( Arq. Pentium) en la que puede apreciarse su complejidad.
 El lenguaje del procesador
Hemos señalado que el lenguaje que entiende el procesador es lenguaje-máquina, pero ráramente se emplea como tal, se utiliza un lenguaje de un poco más alto nivel, ensamblador o macro-ensamblador.  Cada modelo de procesador tiene su propio lenguaje-máquina y necesita su propio ensamblador, pero todos los miembros de la saga Intel x86 (incluídos los actuales Pentium) comparten un núcleo que proviene de su ancestro el 8086.
Desde luego este tutorial "Tecnología del PC", no trata sobre programación en assembler (que además no es mi especialidad), pero como algunos me han escrito solicitando información al respecto, incluyo algunas referencias donde puede encontrarse información acerca de la programación en ensamblador y donde conseguir macroensambladores.




 Tomado de: http://www.zator.com/Hardware/H3_2.htm