Como procesan datos las computadoras
¿Qué es un Procesamiento de Datos?
El Procesamiento de Datos es definido como la técnica que consiste en la recolección de los datos primarios de entrada, los cuales son evaluados y ordenados, para obtener información útil, que luego serán analizados por el usuario final, para que pueda tomar las decisiones o realizar las acciones que estime conveniente. A continuación se presentan las tres etapas que componen un procesamiento de datos, las cuales son las siguientes:
a)Entrada: Los datos deben ser obtenidos y llevados a un bloque central para ser procesados. Los datos en este caso, denominados de entrada, son clasificados para hacer que el proceso sea fácil y rápido.
b) Proceso: Durante el proceso se ejecutarán las operaciones necesarias para convertir los datos en información significativa. Cuando la información esté completa se ejecutará la operación de salida, en la que se prepara un informe que servirá como base para tomar decisiones.
c) Salida: En todo el procesamiento de datos se plantea como actividad adicional, la administración de los resultados de salida, que se puede definir como los procesos necesarios para que la información útil llegue al usuario.
Hay dos componentes que manejan el procesamiento en una computadora: la unidad central de procesamiento y la memoria. Los dos están ubicados en la tarjeta más importante del sistema o tarjeta principal.
1. La unidad de procesamiento central
La unidad de procesamiento central (CPU) es donde se manipulan los datos. En una microcomputadora, el CPU completo está contenido en un chip muy pequeño llamado microprocesador. Todas las CPU tienen por lo menos dos partes básicas, la unidad de control y la unidad aritmética lógica.
Unidad de control.- Todos los recursos de la computadora son administrados desde la unidad de control, cuya función es coordinar todas las actividades de la computadora. La unidad de control contiene las instrucciones de la CPU para llevar a cabo comandos. El conjunto de instrucciones, que está incluido dentro de los circuitos de la unidad de control, es una lista de todas las operaciones que realiza la CPU. Cada instrucción en el conjunto de instrucciones es acompañada por un micro código, que son instrucciones muy básicas que le dicen a la CPU cómo ejecutar las instrucciones. Cuando la computadora corre un programa, busca los comandos del programa dentro del conjunto de instrucciones de la CPU y las ejecuta en orden.
Verifica.- si existe alguna información.
Guardar.- asignar espacio.
Ejecutar.- envía los datos a la (alu)
La unidad aritmético-lógica (ALU) es cuando la unidad de control encuentra una instrucción que involucra aritmética o lógica, le pasa el control al segundo componente de la CPU. La ALU incluye un grupo de registros, es decir, memoria construida directamente en la CPU que se usa para guardar datos que están siendo procesados por la instrucción actual. Debido a que todos los datos de la computadora se almacenan como números, gran parte del procesamiento que tiene lugar involucra la comparación de números o la realización de operaciones matemáticas. Además de establecer secuencias ordenadas y cambiar estas secuencias, la computadora puede realizar sólo dos tipos de operaciones: operaciones aritméticas y operaciones lógicas. Las operaciones aritméticas incluyen suma, resta, multiplicación y división. Las operaciones lógicas incluyen comparaciones, como determinar cuándo un número es igual a, mayor que o menor que otro número. Además, cada operación lógica tiene un opuesto. Por ejemplo, además de "igual a" existe "no igual a".
2. Memoria
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. Además de los registros, la CPU necesita tener millones de bytes de espacio donde pueda guardar los programas y datos que se están manipulando mientras están en uso. Esta área se llama memoria. Desde el punto de vista físico, la memoria consiste de chips, ya sea en la tarjeta madre o en un pequeño tablero de circuitos conectado a la tarjeta madre. Esta memoria electrónica permite a la CPU almacenar y recuperar datos muy rápido.
Existen dos tipos de memorias construidas internamente. Una manera de clasificarla es por su permanencia. Algunos chips de memoria siempre conservan los datos que tienen aun cuando la computadora esté apagada. Esta memoria se llama no volátil. Otros chips, que forman la mayor parte de la memoria en una microcomputadora, sí pierden su contenido cuando la energía de la computadora se apaga. La memoria de estos chips es volátil.
Tipos de memoria
- ROM o memoria de sólo lectura (Read Only Memory). Una razón importante por la que una computadora necesita la ROM es que así sabe qué hacer cuando se conecta la energía por primera vez. Entre otras cosas, la ROM contiene un conjunto de instrucciones de inicio que aseguran que el resto de la memoria esté funcionando de manera apropiada, verifica los dispositivos de hardware y busca un sistema operativo en las unidades de disco de la computadora. El software de la ROM se divide en dos partes:
Rutina de arranque o POST (Power On Self Test, auto diagnóstico de encendido): Realiza el chequeo de los componentes de la computadora; por ejemplo, circuitos controladores de video, de acceso a memoria, el teclado, unidades de disco, etc. Se encarga de determinar cuál es el hardware que está presente y de la puesta a punto de la computadora. Mediante un programa de configuración, el SETUP, lee una memoria llamada CMOS RAM (RAM de Semiconductor de óxido metálico). Ésta puede mantener su contenido durante varios años, aunque la computadora está apagada, con muy poca energía eléctrica suministrada por una batería, guarda la fecha, hora, la memoria disponible, capacidad de disco rígido, si tiene disquetera o no.
Rutina BIOS o Sistema Básico de Entrada-Salida (Basic Input-Output System): permanece activa mientras se está usando el computador. Permite la activación de los periféricos de entrada/salida: teclado, monitor, ratón, etc.
- RAM o memoria de acceso aleatorio (Random Access Memory). Es la memoria del usuario que contiene de forma temporal el programa, los datos y los resultados que están siendo usados por el usuario del computador. En general es volátil, pierde su contenido cuando se apaga el computador, es decir que mantiene los datos y resultados en tanto el bloque reciba alimentación eléctrica, a excepción de la CMOS RAM.
Tanto la RAM como la ROM son circuitos integrados, llamados comúnmente chips. El chip o circuito integrado es una pequeña pastilla de material semiconductor (silicio) que contiene múltiples circuitos integrados, tales como transistores, entre otros dispositivos electrónicos, con los que se realizan numerosas funciones en computadoras y dispositivos electrónicos; que permiten, interrumpen o aumentan el paso de la corriente. Estos chips están sobre una tarjeta o placa.
La velocidad de procesamiento o velocidad de procesar los datos del disco duro a la memoria.
Este tipo de procesos se mide a través de la memoria RAM, la cual es muy importante para un computador, ya que sin esta, el computador no le es posible trabajar.
Función de la memoria RAM:
La memoria RAM es la encargada de tomar los datos del disco duro para trabajarlos en ella. Ejemplo: si abres Word, la memoria toma el ejecutable del disco duro (WINWORD.exe o sea Word) y tu trabajas en la memoria tus documentos, al momento de querer guardarlos los datos vienes e indicas a Word que guarde tu documento el disco duro, y la memoria desocupa esa cantidad de datos y ya quedan en el disco duro.
Función de la memoria RAM:
La memoria RAM es la encargada de tomar los datos del disco duro para trabajarlos en ella. Ejemplo: si abres Word, la memoria toma el ejecutable del disco duro (WINWORD.exe o sea Word) y tu trabajas en la memoria tus documentos, al momento de querer guardarlos los datos vienes e indicas a Word que guarde tu documento el disco duro, y la memoria desocupa esa cantidad de datos y ya quedan en el disco duro.
Registros.- En un CPU de computadora, un registro índice es un registro de procesador usado para direccionar los datos de proceso hacia o desde la memoria RAM.
El registro índice es típicamente usado para hacer operaciones de vectores/arreglos. Los registros índices fueron usados por primera vez en 1949 en la computadora británica Manchester Mark I.
Los registros índices dan formato al acceso de la memoria por accesos aleatorios. Son usados para una clase especial de direccionamiento indirecto donde una constante inmediata, es decir, que es parte de la instrucción en sí misma, es agregada al contenido de un registro para formar la dirección del operando o los datos reales; las arquitecturas que permiten que más de un registro sea usado de esta manera tienen un campo de opcode para especificar qué registro usar.
En las primeras computadoras, sin ninguna forma de direccionamiento indirecto, las operaciones con arreglos tenían que ser realizadas. O repitiendo linealmente el código del programa para cada elemento del arreglo (es decir sobre todas las localizaciones de dirección), o usando técnicas de código auto modificante bastante "sucias".
Tipos de registros
- Los registros de datos son usados para guardar números enteros. En algunas computadoras antiguas, existía un único registro donde se guardaba toda la información, llamado acumulador.
- Los registros de memoria son usados para guardar exclusivamente direcciones de memoria. Eran muy usados en la arquitectura Harvard, ya que muchas veces las direcciones tenían un tamaño de palabra distinto que los datos.
- Los registros de propósito general pueden guardar tanto datos como direcciones. Son fundamentales en la arquitectura de von Neumann. La mayor parte de las computadoras modernas usa GPR.
- Los registros de coma flotante son usados para guardar datos en formato de coma flotante.
- Los registros constantes tienen valores creados por hardware de sólo lectura. Por ejemplo, en MIPS el registro cero siempre vale 0.
- Los registros de propósito específico guardan información específica del estado del sistema, como el puntero de pila o el registro de estado.
Instrucciones de una computadora
Un conjunto de instrucciones o repertorio de instrucciones, juego de instrucciones o ISA (del inglés Instruction Set Architecture, Arquitectura del Conjunto de Instrucciones) es una especificación que detalla las instrucciones que una CPU de un ordenador puede entender y ejecutar, o el conjunto de todos los comandos implementados por un diseño particular de una CPU. El término describe los aspectos del procesador generalmente visibles a un programador, incluyendo los tipos de datos nativos, las instrucciones, los registros, la arquitectura de memoria y las interrupciones, entre otros aspectos.
Existen principalmente de 3 tipos:
CISC (Complex Instruction Set Computer),
RISC (Reduced Instruction Set Computer) y
La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este conjunto de características de la micro arquitectura, que son los elementos y técnicas que se emplean para implementar el conjunto de instrucciones. Entre estos elementos se encuentras las microinstrucciones y los sistemas de caché.
El lenguaje máquina
El lenguaje máquina está construido a partir de los estados discretos o instrucciones. En la arquitectura de procesamiento, una instrucción dada puede especificar:Registros particulares para operaciones aritméticas, de direccionamiento o de control.
Ubicaciones particulares de memoria
Modos de direccionamiento para interpretar operandos
Las operaciones más complejas se construyen a partir de estas, que (en una máquina Von Neumann) se ejecutan secuencialmente, o según el control de flujo.Muchas o pocas de las operaciones disponibles incluidas en la mayoría de conjuntos son:
- Desplazamiento
Establecer un registro a un valor constante
Leer y escribir datos desde dispositivos de hardware
- Operaciones matemáticas.-Sumar, restar, multiplicar o dividir dos registros y colocar el resultado en alguno de ellos.
Realizar operaciones bit a bit, teniendo el AND y el OR de cada bit en un par de registros, o el NOT de cada bit en un registro.
- Afectan al flujo de programa
Saltar a otra posición del programa y ejecutar instrucciones allí.
Saltar a otra posición si se cumple cierta condición
Saltar a otra posición, pero salvando la posición actual para poder volver (realizar una llamada, por ejemplo call printf)
Algunos ordenadores incluyen instrucciones "complejas". Dichas instrucciones pueden tomar muchas instrucciones en otros equipos. Estas se caracterizan por instrucciones que necesitan varios pasos, como el control de múltiples unidades funcionales. Algunos ejemplos son:
Ahorro de registros en la pila
Mover grandes bloques de memoria
Complejas operaciones and/or con aritmética de coma flotante, tales como el seno o la raíz cuadrada.
Instrucciones que combinan ALU con un operando de la memoria más que de registros.
Implementación del conjunto de instrucciones
Cualquier conjunto de instrucciones se puede implementar de varias maneras. Todas las maneras de implementar un conjunto de instrucciones dan el mismo modelo programado, y todas pueden hacer funcionar los mismos ejecutables binarios. Las varias maneras de implementar un conjunto de instrucciones dan diversas compensaciones entre el coste, el funcionamiento, el consumo de energía, el tamaño, el etc.
Al diseñar micro arquitecturas, los ingenieros usaron bloques de circuitos electrónicos “duramente-conectados” (diseñado a menudo por separado) por ejemplo l, los multiplexores, los contadores, los registros, ALUs etc. Un cierto tipo del lenguaje de transferencia de registros es a menudo usado para describir la codificación y la secuencia de cada instrucción de ISA usando esta micro arquitectura física.
Hay también algunos nuevos diseños de CPU que compilan el conjunto de instrucción a una RAM escribible o FLASH dentro de la CPU (tal como el procesador Recursiv y el Imsys Cjip), o FPGA (computación reconfigurable). Western Digital MCP-1600 es un ejemplo antiguo, usando una ROM dedicada, separada del micro código.
Diseño del conjunto de instrucciones
La densidad del código
En computadoras antiguas, la memoria del programa era costosa, así que minimizar el tamaño de un programa para asegurar que va a caber en la memoria limitada era a menudo central. Así el tamaño combinado de todas las instrucciones necesitó realizar una tarea particular, la densidad del código, era una característica importante de cualquier sistema de instrucción. Las computadoras con alta densidad del código también tenían a menudo instrucciones complejas para la entrada del procedimiento, los retornos parametrizados, los lazos etc. Sin embargo, " instrucciones CISC" combinan simplemente una operación básica de la ALU, tal como " add", con el acceso de uno o más operandos en memoria (usando modos de dirección tales como directo, indirecto, indexado). Ciertas arquitecturas pueden permitir dos o tres operandos (incluido el resultado) directamente en memoria o pueden permitir realizar funciones tales como el incremento automático del puntero.
RISC, fueron los primeros implementados con profundidad en el período de rápido crecimiento de las memorias de subsistemas, se reduce el código con el fin de simplificar el circuito de aplicación y con ello tratar de aumentar el rendimiento a través de las frecuencias de reloj más elevadas y el uso de más registros. Las instrucciones RISC suelen realizar sólo una operación, como una "suma" de registros o una "carga" de una posición de memoria en un registro, también suelen utilizar una longitud de instrucciones fijas, mientras que un conjunto de instrucciones típicas CISC tiene instrucciones muchos más cortas que esta longitud fija. Número de operandos
El conjunto de instrucciones puede ser clasificado por el número máximo de operandos explícitamente especificados en las instrucciones. (En los ejemplos que siguen, a, b y c se refieren a celdas de memoria, mientras que reg1 y sucesivos se refieren a los registros de la máquina).
0-operando, también llamada máquina de pila: todas las operaciones aritméticas se ejecutan en la parte superior de una o dos posiciones de la pila, push y pop son las instrucciones utilizadas para acceder a la memoria: push a, push b, add, pop c.
1-operando (máquinas de una dirección), también llamadas máquinas de acumulador, incluida en la mayoría de las primeras computadoras y muchos micro controladores pequeños: la mayoría de instrucciones especifican un operando explícito a la derecha (un registro, una posición de memoria, o una constante) y un operando a la izquierda: load a, add b, store c.
2-operando – la mayoría de las máquinas CISC y RISC entran en esta categoría: CISC – load a, reg1, add reg1, b; store reg1, c RISC - cargas que requieren la memoria explícita, las instrucciones serían: load a,reg1; load b,reg2; add reg1,reg2; store reg2,c.3-operando, permite una mejor reutilización de los datos: CISC - bien una sola instrucción: add a, b, c, o más generalmente: move a,reg1; add reg1,b,c como la mayoría de las máquinas se limitan a dos operandos de memoria. RISC - Debido a la gran cantidad de bits necesarios para codificar los tres registros, este esquema no suele estar disponible en los procesadores RISC con pequeñas instrucciones de 16 bits: load a, reg1; load b,reg2; add reg1+reg2->reg3; store reg3,c.
Características que debe tener un conjunto de instrucciones
Las características que se pretende que tenga un conjunto de instrucciones son cuatro, principalmente:1. Completo: Que se pueda realizar en un tiempo finito cualquier tarea ejecutable con un ordenador (computable o decidible).
2. Eficiente: Que permita alta velocidad de cálculo sin exigir una elevada complejidad en su UC y ALU y sin consumir excesivos recursos (memoria), es decir, debe cumplir su tarea en un tiempo razonable minimizando el uso de los recursos.
3. Autocontenidas: Esto es, que contengan en sí mismas toda la información necesaria para ejecutarse.
4. Independientes: Que no dependan de la ejecución de alguna otra instrucción.
Se puede comprobar que para que un conjunto de instrucciones sea completo solo se necesitan cuatro instrucciones:-> escritura
-> mover a la izquierda una posición y leer
-> mover a la derecha una posición y leer
-> parar
Tipos de instrucciones y ejemplos
1. Transferencia de datos: Copian datos de un origen a un destino, sin modificar el origen y normalmente sin afectar a los flags o indicadores de condición. Pueden transferir palabras, fracciones de palabras (bytes, media palabra) o bloques completos de n bytes o palabras.
Estas operaciones pueden ser:
-> registro - registro
-> registro - memoria
-> memoria - registro
-> Memoria - memoria
Nemotécnicos más frecuentes:
Move: copia el contenido de un registro(o memoria) a otro.
Store: copia el contenido de un registro a memoria.
Load: copia el contenido de una posición de memoria a un registro.
Move block: copia un bloque de datos de una posición de memoria a otra.
Move múltiple: copia del origen en varias posiciones de memoria.
Exchange: intercambia el contenido de dos operandos.
Crear: pone a 0 el distinto. (Todos los bits)
Set: pone a 1 el destino. (Todos los bits)
Push: introduce un dato en la cabecera de la pila. (Indicada por el SP)
Pop: saca un dato de la cabecera de la pila. (Indicada por el SP)
Instrucciones aritméticas: Son efectuadas por la ALU y suelen cambiar los flags o indicadores de condición.
Nemotécnicos más frecuentes:
Add: Suma.
Add with carry: Suma con acarreo.
Substrato: Resta.
Substrato with borrow: Resta teniendo en cuenta el adeudo anterior.
Increment: incrementa en 1 un valor.
Decrement: decremento en 1 un valor.
Multiply: multiplica.
Divide: divide.
Extend: aumenta el operando de tamaño.
Negate: cambia de signo.
Absolute: valor absoluto.
-> Pueden tener instrucciones para tratar con números en BCD e incluyen operaciones en coma flotante, lo cual se identifica con una 'f' antes del nombre del nemotécnico como por ejemplo:
Fabsolute
- Instrucciones de comparación: Suelen preceder a una instrucción de bifurcación condicional y modifican los flags. No hay que pensar que las instrucciones de salto condicional dependen de este repertorio, ya que lo único que hace el salto condicional es consultar los flags y salta si precede, pero no depende de ninguna instrucción de comparación. (de hecho cualquier operación aritmética realizada anteriormente a un salto condicional puede provocar que este "salte").
Instrucciones de control: Permiten modificar la secuencia normal de ejecución de un programa, puede hacerse por salto condicional relativo o absoluto.
Se clasifican en cuatro grupos:
-> salto incondicional
-> salto condicional
-> Llamada a subrutinas
-> Gestión de las interrupciones
Saltos: Pueden ser condicionales o incondicionales, se suelen especificar como jump o brantch, y en el caso de los condicionales se suele llamar jcond o bcond donde cond es una o más letras que indican la condición que ha de cumplirse para que el salto se produzca.
-> Incondicional: salta sin comprobar ninguna condición.
Nemotécnicos más frecuentes: jump o brantch
-> Condicional: salta si la condición se cumple.
Nemotécnicos más frecuentes: jcond o bcond
Llamadas a subrutinas: Invoca la ejecución de funciones anteriormente definidas.
Nemotécnicos más frecuentes: call (llamada) y ret (retorno)
Gestión de interrupciones: Se usan para llamar a las rutinas de servicio de interrupción y esto se puede hacer por hardware o bien por software. Necesita una instrucción similar a return para retornar al contexto anterior pero restableciendo el estado de la máquina, para no afectar a la aplicación a la cual se interrumpió (iret).
Instrucciones de E/S: Son instrucciones de transferencia salvo que el origen/destino de dicho flujo es un puerto de un dispositivo de E/S. Estas instrucciones pueden darse mediante dos alternativas:
->E/S "mapeada" en memoria: Los periféricos tienen direcciones asignadas de la MP por lo que no se necesitan instrucciones especiales y las operaciones se realizan con las ya vistas, como son: load, store y move.
->E/S independiente: Necesitan unas instrucciones especiales para indicarle al procesador que nos estamos refiriendo al mapa de direcciones de E/S, ya que este mapa y el mapa de memoria son disjuntos.
Nemotécnicos más frecuentes:
Input o Read: Permite leer información de un puerto y trasladarla a memoria principal.
Output o write: Permite escribir información en un puerto de un dispositivo.
Test i/o: Lee información de control de un periférico.
Control i/o: Envía información de control hacia un periférico.
Instrucciones de control y misceláneas:
Nemotécnicos más frecuentes:
Halt: Detiene la ejecución del programa hasta que una interrupción arranca otro programa.
Wait: Sirve para detener la ejecución de un programa hasta que sucede un determinado evento que no es una interrupción (otra condición externa al primer programa).
Nop: No realiza ninguna operación, sirve para rellenar huecos en un programa o temporizar esperas.
Enable: Habilita las interrupciones.
Disable: Deshabilita las interrupciones.
Test and set: Se utiliza para la implementación de la exclusión mutua, esto es, que un procesador no pueda acceder a un determinado recurso que está siendo usado por otro procesador en ese mismo momento.
Se usan como semáforos, esto es, se declara una variable entera que tendrá el valor 0 si el recurso esta libre y 1 si está siendo utilizado, de manera que si un procesador comprueba y el semáforo está en 1 tendrá que esperar hasta que este cambie a 0. (1 = s.rojo y 0 = s.verde)





No hay comentarios:
Publicar un comentario