viernes, 9 de septiembre de 2011

UNIDAD I - SIMBOLOS, DATOS, PROCESOS DE DATOS DE INFORMACION


Se debe tener siempre presente que en esencia un computador lleva a cabo procesos de datos, con la particularidad que puede operar velozmente gran cantidad de datos en forma automática, sin intervención humana.
La información sirve para tomar decisiones, se obtiene realizando operaciones sobre datos.
Los pasos necesarios para obtener información a partir de datos constituyen un proceso de datos, o tratamiento de datos.   
Para comprender el funcionamiento de un computador, describiremos un proceso de datos manual auxiliado por calculadora. Puede desglosarse también en cuatro subprocesos: entrada, memorización,  procesamiento y salida.

CONCEPTO BIT, BYTES
BIT: es una síntesis de dos términos en inglés: Binary digit, que en español significan dígito binario, o lo que es lo mismo, número (dígito) con dos posibles valores (binario). El término surge de usar las dos primeras letras de Binary con la última de digit.: bit. Es la unidad de información más sencilla posible en el sistema binario.
Byte: Unidad de información que consta de 8 bits equivalente a un único carácter, como una letra, número o signo de puntuación.

OPERACIONES DE BITS
Ahora el ser humano digitaliza su entorno. Pero, ¿qué significa digitalizar? Digitalizar es traducir información como textos, imágenes o sonidos, a un formato que puedan entender los microprocesadores, y éstos sólo están capacitados para manejar los valores unos y ceros. En efecto, para tu microprocesador todo lo que ves en estos momentos en la pantalla se maneja con unos o ceros. Esto es porque la computadora maneja un sistema binario, que se llama así porque sólo acepta dos valores (0 y 1).
Tal sencillez tiene su razón de ser: los microprocesadores son circuitos electrónicos plasmados en un material llamado silicio (algo parecido al vidrio) que procesan diminutos impulsos eléctricos, el más pequeño de los cuales es conocido por el nombre de bit. Como impulso eléctrico, el microprocesador sólo puede detectar cuando un bit tiene carga eléctrica --su valor sería, en este caso, 1-- o cuando no la tienen --su valor sería 0 - En este ejemplo manejamos los valores unos y ceros de manera un tanto arbitraria, ya que la presencia o ausencia de carga eléctrica en un bit puede ser interpretada como una gran diversidad de valores: cierto y falso, hombre o mujer, T o J, etc.
La eficacia de las computadoras no se basa en la complejidad de su fundamento lógico, que como vimos se reduce a manejar dos posibles valores, sino de la velocidad con la que se aplica dicha lógica: los microprocesadores actuales pueden procesar varios millones de bits en un sólo segundo.
Un bit puede representar solamente dos valores. Dos bits, cuatro posibles valores y ocho bits 256 posibles combinaciones de unos y ceros.
Una unidad de medida muy utilizada en la informática es el byte, que consiste en la agrupación de ocho bits.
Ejemplo de combinaciones posibles por número de bits
Posibles combinaciones de unos y ceros usando dos bits 4:
00, 01, 11, 10
Posibles combinaciones de unos y ceros usando ocho bits 256:
00000000, 00000001, 00000011, 00000111 […] 11111111
Usando grupos de 8 bits (es decir, bytes) es posible representar a todos los caracteres que conforman el abecedario, incluyendo las mayúsculas y los signos especiales, como el de moneda o los acentos, de tal suerte que cuando se oprime la "e" en el teclado, el microprocesador recibe un paquete de 8 bits con la siguiente combinación de valores:
Valor de la letra "e" minúscula en bits:
0
1
1
0
0
1
0
1
Pero si en cambio se presiona la misma tecla en mayúsculas, el paquete de bits que se estará mandando al microprocesador sería el siguiente:
Valor de la letra "E" mayúscula en bits:
0
1
0
0
0
1
0
1
Mediante combinaciones de bits y bytes es posible representar una cantidad infinita de cosas: desde bibliotecas completas hasta juegos y películas, todo un universo de información que puede estar en diversas formas; textos, imágenes y sonidos.
Se dice que algunas computadoras tienen aritmética decimal en lugar de binaria. Cuatro bits proporcionan 16 combinaciones, utilizadas para los 10 dígitos de 0 a 9, con 6 combinaciones sin utilizar. El número 1944 se muestra abajo codificado en decimal y en binario, utilizando 16 bits en cada ejemplo:
Decimal: 0001 1001 0100 0100 binario: 0000011110011000

CONVERSION HEXADECIMAL-BINARIO

Para convertir un número hexadecimal a binario se reemplaza cada dígito hexadecimal por su representación binaria con 4 dígitos .La siguiente tabla muestra la expresión binaria en cuatro dígitos de los dígitos hexadecimales.




LAS VENTAJAS DE OPERAR CON DOS ESTADOS ELECTRICOS CORREPONDIENTES A  0 Y 1 BINARIOS



Operar tecnológicamente con dos estados es mucho mas simple, y también mas confiable, que hacer rebajar a los transistores con diez valores de corrientes o tensiones eléctricas distintos, con el fin de generar diez estados diferentes , para poder representar los dígitos 0 al 9 del sistema decimal.


Leonela Cena, Alejandro Leyba  ( 2 "B")

UNIDAD II - HARDWARE




Son los medios físicos que permiten llevar a cabo un proceso de datos, conforme lo ordenan las instrucciones de un cierto programa, previamente memorizado en un computador.
El hardware de un computador es la totalidad física, conformada por todos los componentes de su equipamiento: circuitos electrónicos, plaquetas que lo soportan, cables o caminos conductores (buses) que los interconectan, mecanismos, discos, motores, gabinetes, etc.
Con estos elementos se constituyen los distintos bloques funcionales del hardware: procesador, memoria, periféricos, interfaces, etc.

¿CUALES SON LOS BLOQUES CONSTITUYENTES BÁSICOS DEL HARDWARE DE UN COMPUTADOR Y QUE FUNCIONES CUMPLEN?
1) Memoria Principal (M.P).
* Se compone de un conjunto de celdas del mismo tamaño (numero de bits). Cada celda está autentificada por un numero binario único denominado dirección.
* Una vez seleccionada una celda mediante su correspondiente dirección, se pueden hacer dos operaciones:
* Lectura. Permite conocer el valor almacenado anteriormente.
* Escritura. Almacena un nuevo valor.
* En la arquitectura Von Neumann, la M.P. almacena tanto las instrucciones maquinas como datos. 
2)  Unidad Aritmético-Lógica (UAL).
* Realiza las operaciones elementales, tanto aritméticas como lógicas, que implementa el computador: suma, resta, AND, OR, etc.
* Los datos con los que opera se leen de la M.P., y pueden almacenarse temporalmente en los registros que tiene la U.A.L.
3) Unidad de Control (U.C).
* Ejecuta las instrucciones maquina almacenadas en la M.P. para ello:
* Captura las instrucciones de la M.P. y las decodifica.
* Según el tipo de instrucción, genera señales de control a todas las unidades del computador para poder realizar su ejecución. 
> Si la instrucción opera con datos deberá acceder a la M.P. para transferirlos a la U.A.L.
> Proporciona las señales necesarias a la U.A.L. para que realice la operación correspondiente a la instrucción.
> Controlará las Unidades de Control de E/S si la instrucción accede a alguno de estos dispositivos.
* Tiene un registro apuntador, denominado Contador de Programa, que en cada instante contiene la dirección de la próxima instrucción a ejecutar. 
4) Unidad de Entrada/Salida (U. E/S). 
* Realiza la transferencia de información con las unidades externas, denominadas Periféricos: unidades de almacenamiento secundario (disco duro, disquete, cinta, etc.), impresoras, terminales, etc.
* Generalmente los programas y los datos tienen un tamaño elevado por lo que no se pueden almacenar por completo en la M.P. Por otra parte, el usuario de un computador tiene la necesidad de ejecutar varios programas, simultáneamente. Por ello, se utiliza la memoria secundaria, que se considera como un periférico. La MS  es más lenta que la principal, pero tiene una mayor capacidad de almacenamiento.
* Como para ejecutar un programa este debe estar en la M.P., la U.C. genera las señales necesarias a la U. E/S. para transferir los datos y los programas desde la M.S. a la M.P.
* Además la U. E/S. permite otras operaciones, como visualizar en una pantalla o imprimir en papel los resultados obtenidos.
5) Buses.
*  Además de las 4 unidades básicas, en un computador existen conjuntos de señales, que se denominan buses, y cuya función es transferir las instrucciones y los datos entre las distintas unidades. 
* Se suelen distinguir tres tipos de buses:
* Bus de Direcciones.
* Bus de Datos.
* Bus de Control.
6) Unidad Central de Proceso. (U.C.P.).
* Es el conjunto formado por la U.C., los registros y la U.A.L., es decir el bloque encargado de ejecutar las instrucciones.
* Con la aparición de los circuitos integrados, y en concreto a partir de los años 70, cuando la tecnología alcanzó el nivel de integración adecuado, se integro en una sola pastilla la U.C.P. a este circuito integrado se le denomina Microprocesador.

7) Observación. 
* Una forma de determinar el rendimiento de un computador es por el numero de instrucciones que ejecuta por segundo (MIPS). Así, generalmente un computador con un numero MIPS elevado, equivale a decir, que tiene una gran capacidad de procesamiento.
* Al ser la UCP el bloque encargado de la ejecución del programa, tiene que funcionar a la mayor velocidad posible. Por ello, se implementa con dispositivos semiconductores, que por los avances tecnológicos actuales, pueden trabajar a frecuencias muy elevadas (del orden de 150MHZ).
* Como la MP suministra las instrucciones y los datos a la UCP, tiene que ser también lo más rápida posible, por lo que se implementa igualmente con dispositivos semiconductores. 


LOS REGISTROS DE LA UNIDAD CENTRAL DE PROCESO.
La UCP tiene 14 registros internos, cada uno de ellos de 16 bits (una palabra). Los bits están enumerados de derecha a izquierda, de tal modo que el bit menos significativo es el bit 0.
Los registros se pueden clasificar de la siguiente forma:
Registro de Datos.
* AX: Registro acumulador. Es el principal empleado en las funciones aritméticas. 
* BX: Registro base. Se usa para indicar un desplazamiento.
* CX: Registro contador. Se usa como contador en los bucles.
* DX: Registro de datos. También se usa en las operaciones aritméticas. 
Estos registros son de uso general y también pueden ser utilizados como registros de 8 bits, para utilizarlos como tales es necesario referirse a ellos como por ejemplo: AH y AL, que son los bytes alto (high) y bajo (low) del registro AX. Esta nomenclatura es también aplicable a los registros BX, CX y DX.
Registro de Segmentos.
* CS: Registro de segmento de código. Contiene la dirección de las instrucciones del programa.
* DS: Registro de segmento de datos. Contiene la dirección del área de memoria donde se encuentran los datos del programa.
* SS: Registro de segmento de pila. Contiene la dirección del segmento de pila. La pila es un espacio de memoria temporal que se usa para almacenar valores de 16 bits (palabras).ç
* ES: Registro segmento extra. Contiene la dirección del segmento extra. Se trata de un segmento de datos adicional que se usa para superar la limitación de los 64kb del segmento de datos y para hacer transferencias de datos entre segmentos.
Registros Punteros de Pila.
* SP: Puntero de la pila. Contiene la dirección relativa al segmento de la pila.
* BP: Puntero base. Se utiliza para fijar el puntero de pila y así poder acceder a los elementos de la pila.
* Registros Índices.
* SI: Índice fuente.
* DI: Índice destino.
Puntero de Instrucciones.
* IP: Registro puntero de instrucción o contador de programa (PC). Contiene el desplazamiento de la siguiente instrucción a ejecutar respecto al segmento de código en ejecución. Por lo tanto, la dirección completa de la siguiente instrucción seria CS:IP. La única forma de influir en este registro es de forma indirecta mediante instrucciones de bifurcación.
Registro de Banderas (Flags).
Cada bandera es un bit y se usa para registrar la información de estado y de control de las operaciones del microprocesador. Hay nueve banderas (los 7 bits restantes no se utilizan):
Banderas de Estado: Registran el estado del procesador, normalmente asociado a una comparación o a una instrucción aritmética.
* CF: Bandera de acareo.
* OF: Bandera de desbordamiento (aritmético).
* ZF: Bandera de resultado 0 o comparación igual.
* SF: Bandera de resultado o comparación negativa.
* PF: Bandera de paridad (numero par de bits).
* AF: Bandera auxiliar. Indica si hay necesidad de ajustes en las operaciones aritméticas con números BCD. 
Banderas de Control.
* DF: Bandera de dirección. Controla la dirección de las operaciones con cadenas de caracteres incrementando o excrementando automáticamente los registros índices (SI y DI).
* IF: Bandera de interrupciones. Indica si están permitidas o no las interrupciones de los dispositivos externos.
* TF: Bandera de atrape. Controla la operación de modo paso a paso (usada por el programa DEBUG).

 ¿QUE SON LAS DIRECCIONES Y LOS CONTENIDOS DE LA MEMORIA PRINCIPAL?
La memoria principal almacena bits (unos y ceros) en celdas independientes, aisladas entre sí, que contienen un byte (8 bits) de información.
Cada celda se localiza en el conjunto mediante un numero binario identificatorio, que constituye su dirección, o indicación de su posición en ese conjunto.
Este número no se puede alterar, pues está establecido circuitalmente. 
Por lo tanto, en relación con cada celda se tiene dos números binarios:
* Un número fijo, la dirección (de más de 20 bits), que presentado en los circuitos de la memoria permite acceder a una celda; y
* Un número de 8 bits, que es el contenido informativo de esa celda, o sea la combinación de unos y ceros almacenada en ella. Este número puede cambiarse si la memoria es alterable.
En cada dirección de memoria (celda) solo pueden leerse o escribirse 8 bits por vez, sin posibilidad de operar menor cantidad de bits, o un bit aislado.
Puesto que la palabra registro en un significado general indica algún lugar donde datos se pueden registrar, guardar, podría designarse registro a cada celda de memoria, y decir que la MP está formada por un conjunto de registros independientes de 8 bits cada uno. Para evitar tener que aclarar “registro de la UCP” y “registro de MP”, se entiende que registro a secas significa que el de la UCP, y las celdas de MP se denominan posiciones.
Cuando los datos o instrucciones ocupen más de un byte, se almacenan fragmentados en varios bytes, los cuales deben estar contenidos en celdas consecutivas de memoria, o sea en direcciones sucesivas.
En una operación de lectura o escritura de MP se puede acceder a varias celdas consecutivas. Un cierto número de estas (2, 4 u 8 bytes) suele denominarse palabra (“Word”) de memoria.


¿COMO SE DIRECCIONA, SE LEE Y SE ESCRIBE EN LA MEMORIA PRINCIPAL?
En relación con la MP solo son posibles dos operaciones que puede ordenar la UCP: la lectura o la escritura, pero antes de realizar cualquiera de ellas, la UCP debe direccionar la MP.
OPERACION DE ESCRITURA.
Para almacenar un byte de datos en memoria, se introduce en el bus de direcciones el código binario de la posición de la memoria donde se quiere escribir el dato. Una vez que el código de dirección está ya el bus, el decodificador de direcciones lo decodifica y selecciona la posición de memoria especifica. La memoria recibe entonces, del bus de control una orden de escritura y los datos almacenados en los registros de datos se introducen en el bus de datos y se almacenan en la dirección de memoria seleccionada. Cuando se escribe un nuevo byte de datos en una dirección de memoria se destruye el byte que estaba en esa dirección. 
OPERACION DE LECTURA.
De nuevo se introduce en el bus de direcciones el código binario de la posición de memoria de donde se quiere leer el dato. El decodificador de direcciones decodifica dicho código y selecciona la posición de memoria especificada. La memoria recibe entonces, del bus de control una orden de lectura y una copia del byte de datos, almacenado en la dirección de memoria seleccionada, se introducen en el bus de datos y se carga en el registro de datos. Cuando se lee un byte de datos en una dirección de memoria este sigue almacenado en dicha dirección. 
DIRECCIONAMIENTO.
La memoria principal de la computadora se divide en pequeñas unidades de tamaño uniforme denominadas palabras, que tienen una dirección única.
Cada una de éstas palabras es capaz de almacenar una unidad de información (como, por ejemplo, resultados numéricos), y determina el número más grande y el más pequeño que puede almacenar.
El tamaño de la palabra depende de la computadora, pero siempre se especifica en múltiplos de 8 bits. Así, existen computadoras con tamaños de palabra de 8, 16, 32 y 64 bits.
Cada palabra de la memoria principal tiene una dirección fija que va de cero hasta el número total de palabras - 1. Las direcciones de memoria sirven para identificar cada palabra individualmente, de tal manera que pueda accederse al dato contenido en ella. A fin de simplificar su comprensión, las memorias se consideran como una hilera de palabras.


EL TIEMPO DE ACCESO A MEMORIA Y SU MEDIDA EN NANOSEGUNDOS
El tiempo de acceso a una memoria ¿que es? Se considera a esto desde el momento en que la memoria recibe una petición de datos hasta el instante en que estos están disponibles para ser usados, recién hablamos de velocidades de 1,25 nanosegundos, la velocidad en nanosegundos era mas utilizada en memorias viejas por ejemplo era típico hablar de una memoria SIMM de 72 pines desde los 80 ns hasta los 50 ns, es probable que en bios para estas maquinas viejitas se encuentre con algún parámetro en ns. Al principio se media en nanosegundos luego se comenzó a hablar de MHZ ya que de esta forma se utiliza un sistema de medición igual para todos los componentes, en relación al reloj del sistema con multiplicadores o divisores para la configuración de cada dispositivo.
La memoria no solo se mide en MHZ El tiempo de acceso en la memoria, también se la puede medir en unidad de tiempo en ns, como se nombro anteriormente, por ejemplo, una memoria tipo DDR de 400 MHZ posee una velocidad de 2,5 nanosegundos; una DDR800 1,25 ns. A la inversa que como ocurre con los MHZ que como se dijo son la cantidad de ciclos por segundo y cuantos mas mejor (si es compatible) hablando de la velocidad de la memoria en nanosegundos cuanto menos mejor

EL ACCESO A LA MEMORIA PRINCIPAL

La memoria principal o primaria (MP), también llamada memoria central, es una unidad dividida en celdas que se identifican mediante una dirección. Está formada por bloques de circuitos integrados o chips capaces de almacenar, retener o "memorizar" información digital, es decir, valores binarios; a dichos bloques tiene acceso el microprocesador de la computadora.

La MP se comunica con el microprocesador mediante el bus de direcciones. El ancho de este bus determina la capacidad que posea el microprocesador para el direccionamiento de direcciones en memoria.

En algunas oportunidades suele llamarse "memoria interna" a la MP, porque a diferencia de los dispositivos de memoria secundaria, la MP no puede extraerse tan fácilmente por usuarios no técnicos.
La MP es el núcleo del sub-sistema de memoria de un computador, y posee una menor capacidad de almacenamiento que la memoria secundaria, pero una velocidad millones de veces superior.




 CONCEPTO DE RAMDOM (AL AZAR)
Al azar, algo aleatorio. En informática, se puede aplicar a muchos campos, como la programación, donde se suelen utilizar con cierta frecuencia, instrucciones u órdenes para la obtención de valores aleatorios.
Realmente, aún no es posible encontrar valores totalmente aleatorios, así que se suele utilizar también el término pseudo aleatorio, para indicar que un valor no es al azar del todo.
Podemos aplicar también RANDOM a distintas formas de acceder a la información, sea en memoria, o en algún medio de almacenamiento como los discos. En este caso podemos hablar de acceso aleatorio (RANDOM) o acceso secuencial (uno detrás de otro, como las casettes de música).

DIFERENCIAS Y SIMILITUDES ENTRE LAS MEMORIAS RAM Y ROM
Dentro de las Memorias físicas en nuestro Hardware, existen dos tipos en función de lectura/escritura o solamente lectura: la Memoria RAM y la Memoria ROM, aunque se diferencien sólo con una letra (a y o), también tienen diferencias técnicas que se ampliara a continuación.
La Memoria RAM es la que todos conocemos, pues es la memoria de acceso aleatorio o directo; es decir, el tiempo de acceso a una celda de la memoria no depende de la ubicación física de la misma (se tarda el mismo tiempo en acceder a cualquier celda dentro de la memoria). Son llamadas también memorias temporales o memorias de lectura y escritura.
En este tipo particular de Memoria es posible leer y escribir a voluntad. La Memoria RAM está destinada a contener los programas cambiantes del usuario y los datos que se vayan necesitando durante la ejecución y reutilizable, y su inconveniente radica en la volatilidad al cortarse el suministro de corriente; si se pierde la alimentación eléctrica, la información presente en la memoria también se pierde.
Por este motivo, surge la necesidad de una memoria que permanentemente, guarde los archivos y programas del usuario que son necesarios para mantener el buen funcionamiento del sistema que en se ejecute en la misma.
La Memoria ROM nace por esta necesidad, con la característica principal de ser una memoria de sólo lectura, y por lo tanto, permanente que sólo permite la lectura del usuario y no puede ser rescrita.
Por esta característica, la Memoria ROM se utiliza para la gestión del proceso de arranque, el chequeo inicial del sistema, carga del sistema operativo y diversas rutinas de control de dispositivos de entrada/salida que suelen ser las tareas encargadas a los programas grabados en la Memoria ROM. Estos programas (utilidades) forman la llamada Bios del Sistema.

Entonces, en conclusión:
- La Memoria RAM puede leer/escribir sobre sí misma por lo que, es la memoria que utilizamos para los programas y aplicaciones que utilizamos día a día
- La Memoria ROM como caso contrario, sólo puede leer y es la memoria que se usa para el Bios del Sistema.
SIGNIFICADO DE CAPACIDAD DE MEMORIA Y SUS UNIDADES
 La maquina para poder representar los impulsos eléctricos que procesa el CPU utiliza el Bit, llamado también, dígito binario. Este es una unidad de información la mas pequeña dentro de una maquina. Puede tomar dos valores el 1 y el 0.
También se dice que el Bit es una unidad de medida de la capacidad de memoria de un ordenador.
Una cadena de Bit representa gran cantidad de información. Para entender esta cantidad de información el hombre creo el código de computadora. El cual era un código decimal codificado en binario. Primero creo el código de cuatro Bit, con este código solo se podía realizar 16 combinaciones posibles. Luego creo el código de seis Bit (contaba con un Bit de control o paridad), con el cual se podía realizar 64 combinaciones posibles. Hasta que finalmente creo el código de ocho Bit, denominado también código ASCII. Con este código se puede realizar 256 combinaciones. Al igual que el código de seis Bit, el código ASCII cuenta con un Bit de paridad (utilizado para el control).
Entonces:
8 Bits =1 Byte

La capacidad (de almacenamiento) de una memoria es la cantidad total de bytes que puede guardar.
En el presente, lo común es que cada celda se guarde un byte de información. Entonces una memoria con N celdas tendrá una capacidad de N bytes

Las unidades de memoria que podemos encontrar dentro de una maquina pueden ser:

1KB-----2¹º Bytes =1024 Bytes
1MB-----2²º Bytes =1048576 Bytes
1GB-----2³º Bytes =1073741824 Bytes
1 TB-----2²º x 2²º Bytes = 1099511627776 Bytes



¿QUE ES EL BIT DE PARIDAD EN MP, Y PARA QUE SE EMPLEA?
Supongamos que el contenido de una posición de memoria leída es 01000001, pero por que por un ruido (interferencia electromagnética) durante la operación de lectura, la UCP recibe 01000011, o se que el bit marcado se recibe invertido. Entonces la combinación recibida será otra, sin que se pueda notar el error. Como se verificara, ampliando la capacidad de una memoria de forma que cada posición contenga un bit extra (o sea 9 bits), puede detectarse si se ha producido un solo error por inversión, como el ejemplificado.
El bit denominado de “paridad”, que se agrega al bit a almacenar, debe ser siempre de valor tal que el conjunto de los 9 bits almacenados tenga un número par de unos (paridad par de unos).
En el número en el que se escribe cualquier posición de memoria un circuito calcula el valor (0 o 1) que debe tener dicho bit; y cuando se lee cualquier posición, el mismo circuito verifica que los 9 bits leídos presenten paridad par de unos. Caso contrario se interrumpe el programa en curso para avisar que hay un problema de error de paridad en la memoria.
En una memoria con paridad, cuando por ejemplo se escribe la combinación 01000001 antes citada, dicho circuitote agregara un bit de valor 0 (en negrita): 010000010. Así el nuevo conjunto de 9 bit almacenados presentara un numero par de unos.
De esta forma, si durante la lectura en lugar de leerse 010000010, se lee 010000110 por que el bit subrayado se invirtió, se detectara un error, dado que estos 9 bit tendrán un numero impar de unos, en lugar de se par. Por lo tanto, esta convenció-de igual paridad en la escritura y lectura si uno solo de los bits recibidos cambio de valor, que es la mayor probabilidad de errores en una lectura de memoria.
Si los bits errados son dos, la paridad par seguirá, y no hay forma de detectar una combinación mal recibida.


¿QUE ES UN MICROPROCESADOR DE 8, 16 O 32 BITS Y QUE RELACION TIENE ESTO CON LOS REGISTROS, MP Y LAS LINEAS DE DATOS DEL BUS?
Anteriormente se distinguía entre procesadores de 8, 16, 32 bits-según sea-para implicar el número máximo de bits que puede tener un dato a operar por la UAL dos números de 32 bits. Lo mismo ocurre con la mayoría de los microprocesadores de distintos fabricantes, por lo que el numero 8, 16, o 32 que caracterizaba la potencia y por ende la velocidad de procesamiento de un procesador, ha dejado de usarse como distintivo de potencia.
Una UAL de 32 bits puede operar con número del doble de magnitud que otra de 16 bits. Asimismo, si los registros para datos y resultados son de 32 bits a los efectos de una mayor velocidad da transferencia entre la UCP  y memoria, deben existir por lo menos 32 líneas de datos en el bus. De esta forma, de una sola vez se transfieren 32 bits entre memoria y UCP o viceversa. Esto también implica que la memoria debe estar organizada para que en un solo acceso puedan leerse o escribirse 32 bits (4 bytes consecutivos), dando solo la dirección del primero.
En consecuencia con ello, los registros de la UCP para datos o resultados deben tener una longitud igual al tamaño de los datos que opera la UAL.
Pro ejemplo, el Pentium 11 es un procesador de 32 bits2, con una longitud de palabra de 32 bits. O sea que en cada acceso a MP puede leer/escribir 8 bytes consecutivos, para una longitud de palabra de 64 bits. A tal efecto, este microprocesador tiene 64 patas destinadas a conectarse a 64 líneas de datos que forman parte del bus (“local bus”) que lo conecta con el cache externo y con la MP.
Por lo tanto, su bien la UAL del Pentium opera con 32 bits (y con 64 bits su coprocesador matemático incorporado), pueden llegar al mismo dato o instrucciones de 64 bits por vez3, lo cual acelera el procesamiento de los datos.
También son procesadores de 32 bits el 386 y el 486, pero operan la MP con palabras de 32 bits4.
Se comprende que un procesador de mayor número de bits sea mas rápido que otro que opere con menos, pues en una sola instrucción puede manipular más bits cada uno, primero mediante varias instrucciones debe sumar los primeros 16 bits de ambos números, y luego mediante otras tantas instrucciones suman los 16 bits restantes.


¿QUE RELACION EXISTE ENTRE LA CAPACIDAD DE LA MEMORIA, LA CANTIDAD DE BITS QUE TIENE SUS DIRECCIONES Y EL NUMERO DE LINEAS DE DIRECCION?
Es un número que guarda un byte por posiciones como bytes tenga la memoria. Esto es, una memoria de 2MB implica que se deben identificar 2097152 posiciones distintas, asignándole un numero binario distinto para cada una, que su dirección. Se acostumbra a asignar el cero a la primer posición, por lo cual la ultima seria en decimal el numero 2097151.
Una memoria tiene un numero de N celdas que siempre es una potencia de dos, por lo cual las mismas se localizan mediante direcciones que son números binarios que van de 000….000 hasta 111….111, siendo que cada celda le corresponde uno de esos números como dirección.
La potencia de dos de la figura 1.14 sirven para determinar cuantos bits deben tener los números binarios que son las direcciones de una memoria, de forma de adjuntar un número distinto a cada posición. Resulta que con 4 bits se pueden formar 16 = 24 combinaciones binarios (o sea números binarios) distintas. Inversamente, si se quiere formar 16 números binarios distintos hacen falta 4 bits. Del mismo modo, por ejemplo, dado que 2 MB = 221, resulta que el exponente 21 indica la cantidad de bits que debe tener cada dirección, para formar 2.097.152 de direcciones de distintas, como se necesita. Por ejemplo, una dirección de 21 bits seria 0 1001 01111 1001 1010 1110 = 0979AE en hexa, según lo visto. La primer dirección de memoria seria un numero binario con 21 ceros = 0 0000 0000 0000 0000 0000 = 0000 en hexa; y la ultima otro de 21 unos = 1 1111 1111 1111 1111 1111 = 1FFFFF en hexa.
De la tabla resulta que al subir uno el exponente del numero dos, se duplica la cantidad de memoria. O sea, si una memoria tiene el doble de capacidad que otra, los números que forman las direcciones de la primera deben tener un bit mas que los números que forman las direcciones de la segunda.
Si se quiere operar mentalmente, se debe tener presente que 210 = 1KB, y que 220 = 210 x 210 = 1KB x 1KB = 1024 x 1024 = 1MB.
A fin de calcular cuantos bits tienen las direcciones de una memoria de 8 MB, partiendo de 1MB necesita 20, que 2MB necesitan 21, que 4MB necesitan 22, resulta que 8 MB necesitan 23 bits. Puesto que por cada línea de dirección como cantidad de bits tenga cada dirección.










 Daniel Martinez, Matias Fiori, Gerardo Zamer  (2 "B")

UNIDAD III - EL SOFTWARE, LOS DATOS Y SU CODIFICACION

¿QUE ES EL SOFTWARE O LOGICAL?
Además de la velocidad y confiabilidad, no cabe duda que la versatilidad es otra de las características relevantes de las computadoras. A partir de su uso inicial como calculadoras automáticas, poco a poco han ido invadiendo distintas áreas de aplicación: científica, industrial, administración pública, apoyo profesional, entretenimientos, modelación, enseñanza, etc.
Un computador no sabe como procesar datos. Se le debe indicar mediante instrucciones: donde están los datos a procesar, que procesamiento realizar con ellos, y hacia que medio iran los resultados obtenidos.
Un programa software almacenado en la memoria principal de un computador, si bien esta registrado en ella, no forma parte del material de los circuitos que la constituyen (hardware).


Estar registrado no significa que esos circuitos quedaran en determinado estados eléctricos en su interior que representan el programa citado.
Entonces cuando se cambia el software no hay cambio de material de componente alguno del computador: el hardware permanece invariable. Solo se modifica el estado eléctrico del material semiconductor que compone los circuitos de la memoria.
Por eso esta manera fácil y veloz de cambiar un programa en el interior de un computador, este resulta una herramienta tan versátil para efectuar cualquier proceso de datos. Cambiando de programa se modificara el comportamiento de la maquina.
Resulta que el hardware provee funciones procesadores que son activadas por cada una de las instrucciones de un programa ejecutado según ellas.
Software de un computador, es cualquier programa que puede ser almacenado total o parcialmente en su memoria principal, para ser ejecutado por el procesador de dicho computador.-

Un computador con todos sus circuitos electrónicos energizados, pero sin ningún programa en memoria, no puede procesar datos. No sabe que hacer. Es solo puro hardware. Cada instrucción que es ejecutada por la UC (Unidad de Control) da lugar a una secuencia predeterminada de movimiento de datos y operaciones en la UAL (Unidad Aritmético Lógica) que se desarrollen con los pulsos de reloj.



Puede afirmarse que el “software controla el hardware”


¿QUE ES EL FIRMWARE?
Un computador encendido sin ningún programa en memoria principal (MP) no puede hacer nada. Los programas que residen en la porción RAM de MP desaparecen cuando se apaga 
un equipo.


El firmware es un bloque de instrucciones de programa para propósitos específicos, grabado en una memoria de tipo no volátil (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.


Al estar integrado en la electrónica del dispositivo es en parte hardware, pero también es software, ya que proporciona lógica y se dispone en algún tipo de lenguaje de programación. Funcionalmente, el firmware es el intermediario (interfaz) entre las órdenes externas que recibe el dispositivo y su electrónica, ya que es el encargado de controlar a ésta última para ejecutar correctamente dichas órdenes externas.




¿QUE ES UN PROCESADOR DEDICADO?
Un procesador dedicado se caracteriza por ejecutar siempre los mismos programas, estos se encuentra residentes en algun tipo de memoria ROM (firmware) que oficiara de memoria principal del procesador dedicado.
Dada la complejidad de los perifericos actuales, su electronica requiere de un microprocesador para controlar las operaciones que realiza; encontramos procesadores dedicados en el teclado,
TECLADO
IMPRESORA LASER
MODEM
DISCO DURO

¿COMO SE PREPARA EL PROCESO DE DATOS EN EL COMPUTADOR, COMO SE LE ORDENA QUE DEBE HACER?
En cualquier proceso de datos con computador, es indispensable escribir en memoria los datos, las instrucciones del programa, antes de empezar a ejecutar estas.
1 Codificación de los datos:
La dirección de un dato puede ser elegida arbitrariamente, siempre que dicha dirección sea la que forme parte de la instrucción que va a operar dicho dato, puesto que una instrucción debe indicar como localizar dicho dato a operar.
2 Codificación de las instrucciones en código de maquina:
La combinación binaria que codifica una instrucción constituye su “código de instrucción” o “código de maquina”, en el sentido que es el código que entiende la maquina o sea los circuitos de la UC. Cada procesador tiene sus propios códigos de maquinas que puede ejecutar.
El código de maquina comprende necesariamente el código de la operación (cod-op) ordenada (transferir, sumar, comparar, dividir, saltar a otra instrucción ...). Si el dato a operar esta en memoria, al cod-op le sigue una dirección que indica donde se encuentra (o donde memorizar un resultado que esta en un registro de UCP, si se ordena una escritura). 

No confundir el valor de un dato con el valor de su dirección.
En general una instrucción ordena una operación (mediante su cod-op), y en relación con esta permite localizar uno o dos datos a operar (en este caso dando su dirección en memoria), e indica donde guardar el resultado.
La dirección de I es arbitraria, dado que si cuando I1 se va a ejecutar el registro IP tiene esa dirección será localizada por la UC encargada de ejecutarla. A partir de esa dirección, el cod-op de esa instrucción y de las siguientes indica lo que debe sumarse al IP para localizar la siguiente instrucción a ejecutar. El número a sumar al IP es la cantidad de celda que ocupa cada instrucción. Es el sistema operativo, quien decide cual será la dirección de la primera instrucción de un programa, la cual llegara al IP merced al programa cargador.



ALTO Y BAJO NIVEL DE CODIFICACION DE DATOS
Una pc requiere de cuatro instrucciones (procesos a realizar) que hemos codificado en hexa A10050 03060050 2B060650 y A31050, códigos que en memoria principal se almacenan en binario.
Las dos formas de codificar que deben hacerse (R=P+P-Q; expresión matemática), ordenan realizar el mismo proceso. La expresión matemática lo hace en una forma mas compacta y fácil de expresar para nosotros, mientras que los códigos de las instrucciones a ejecutar amen de resultar poco manejables para el hombre, están codificados en un lenguaje que solo pueden entender los procesadores INTEM o AMD. Asimismo, el proceso a realizar ha sido descompuesto a 3 subprocesos (uno por instrucción) acorde a lo que es capaz de realizar y “entender” (decodificar) la maquina.
La forma “matemática”, abstracta, de codificar mas familiar a nosotros es la de “alto nivel”, la cual se emplea para programar procesos en los lenguajes de alto nivel como:  Fortran, Pascal, Cobol, Basic, C, Java, etc.
En cambio, la codificación binaria al nivel de códigos de instrucción que “entiende” una maquina determinada se denomina de “bajo nivel” o “nivel de maquina” o “código de maquina” o “lenguaje absoluto”, de maquina”
Esta traducción en las primeras computadoras era realizada por personas que codificaban en binario las instrucciones para el computador, mediante llaves existentes en un panel frontal.
Posteriormente este proceso fue realizado por programas denominados “compiladores” encargados de traducir las órdenes codificadas en un lenguaje de alto nivel que estaban en memoria principal, en códigos de instrucciones, que también quedaban en memoria. Para Java se usan traductores tipo “interpretes”.



¿COMO ENCUIENTRA LA UC EN MEMORIA LA PRIMER INSTRUCCION Y LAS SIGUIENTES DE UN PROGRAMA A EJECUTAR, MEDIANTE EL REGISTRO IP?

En el programa codificado(la imagen que apreciamos a la derecha) la primer instrucción comienza en la dirección 0200H, y las dos siguientes en 0203H y en 0207H. Por lo tanto, en este caso IP deberá contener sucesivamente los valores binarios que en hexa son: 0200H, 0203H y 0207H, como se verificara cuando se ejecutan esas instrucciones.
Suponiendo que IP empiece con el valor 0200H puesto que el código de I, ocupa 3 bytes, (esto lo “conocerá” la UC al ejecutar I1), y si la UC hace la suma (con su calculador que es la UAL) 0200+3=0203, podría determinar el nuevo valor que debe tener IP, que es la dirección donde esta I2 0200+3=0203, podrá determinar el nuevo valor que debe tener IP, que es la dirección  donde esta I2.
Del mismo modo, cuando ejecuta I2 (que ocupa 4 bytes), podrá calcular 0203+4=0207 para ubicar I3.
Por ultimo si a 0207 le sumamos 4 (cantidad de bytes de I3), obtenemos 020B, dirección de I4 (en hexa después de 7 siguen 8, 9, A, B) así sucesivamente la UC va cambiando el valor de IP para ir localizando en memoria las sucesivas instrucciones que debe ejecutar.
Esta es la forma pensada para que la UC localice y ejecute, en el orden establecido, cada una de las instrucciones que forman una secuencia. Por lo tanto, para respetando estas reglas, las instrucciones a ejecutar deben estar escritas en posiciones consecutivas de memoria.

Instrucción de salto
Una “instrucción de salto” permite no seguir la ejecución de un programa con la instrucción que esta escrita a continuación de ella en memoria, sino continuar con otra instrucción, cuya dirección debe permitir formar instrucción de salto. El valor de esta dirección debe pasar al IP. O sea, que igualmente esta instrucción permite encontrar la que le sigue.

Por lo tanto, cada instrucción permite determinar donde esta la siguiente a ejecutar, y por consiguiente, establecer el valor que tendrá el registro IP.


¿QUIEN LE PROPORCIONA LA DIRECCION DE LA PRIMERA INSTRUCCION DE CADA PROGRAMA?

Nosotros somos quienes nos encargamos de escribir en el IP la dirección de la primer instrucción de una secuencia que queramos ejecutar.

Explicación:
Cuando se enciende un computador, el primer programa que se ejecuta es siempre el mismo. Los códigos de sus instrucciones están permanentemente en la porción ROM de la memoria principal (RAM), siendo que el hardware provee la dirección de la primer instrucción a ejecutar. O sea que el hardware inicializa el valor del IP al encender el equipo, así como el valor de otros registros.
Como resultado de la ejecución de dicho programa almacenado en ROM, se escribe en memoria principal una copia de programas que están en el disco. Estos al ser ejecutados traen a memoria los programas del “sistema operativo”, que también están en el disco como archivos. Luego de lo cual en pantalla aparece C> o alguna imagen con opciones, para indicar al sistema operativo mediante un comando, que programa desea traer a memoria.
Esto es, un programa del sistema operativo permite traer del disco memoria, una copia del programa que necesita el usuario, y se encarga de que en el IP aparezca la dirección de la primer instrucción del programa a ejecutar.

¿Como se consigue?
La ultima instrucción del programa del SO se encarga de esta tarea. Es una instrucción de salto, que indica la dirección donde esta la primer instrucción del programa del usuario a ejecutar.

¿Cómo se pasa la ejecución de un programa a otro, sin intervención humana?
La dirección se instala en el IP, con lo cual en forma automática, sin intervención humana, la próxima instrucción que la UC ejecuta luego que ejecuto la ultima instrucción de salto citada será la primera del programa de usuario. A partir de esta, debe consignarse que el sistema operativo registra la dirección donde dejo en memoria la primera instrucción del programa que trajo del disco, la cual es proporcionada al IP por la instrucción de salto citada. 
Cuando termina de ejecutarse este programa, la última instrucción del mismo llamara al sistema operativo. Será una instrucción que en esencia ordena saltar a la dirección de memoria donde esta la primer instrucción de un programa del SO. Este decidirá cual es el próximo programa que debe ejecutar la UC.
De esta forma, se consigue pasar automáticamente de la ejecución de un programa a otro.

Joana Ruiz Diaz, Gastón Pereson, Rubén Melgarejo (2 "B")