4.2.1.- FUNCIONES DE LA CPU Sabe ir a buscar una determinada palabra, si le indicamos en qué dirección está, y sabe interpretarla. El procesador lee la información o instrucción en unidades de bits. Un bit (digito binario) representa la unidad de información (para el almacenaje) más pequeña, la cual solo puede tener dos posiciones ("0" ó "1"). "0/1" representa un bit ("0" implica "apagado" y "1" implica "activado"). Ocho bits consecutivos representan un "byte". El "byte" posee la capacidad de almacenar una caracter (una letra o un número). El procesador leera los bits de 16 en 16, cada instrucción de un programa debe caber en 16 bits. Son 2 16 posibilidades las que se pueden lograr con 16 bits. Los kilobytes (K ó Kb) representan 1024 "bytes". Por ejemplo, 4K implica 4096 "bytes de información. Cada megabyte (M ó Mb) equivalen aproximadamente a un millón de "bytes" de almacenaje. Un gigabyte (GB) es aproximadamente un billón de bytes o un millón de kilobytes. • Sabe ir a buscar una determinada palabra, si le indicamos en qué dirección está, y sabe interpretarla. El procesador lee la información o instrucción en unidades de bits. Un bit (digito binario) representa la unidad de información (para el almacenaje) más pequeña, la cual solo puede tener dos posiciones ("0" ó "1"). "0/1" representa un bit ("0" implica "apagado" y "1" implica "activado"). Ocho bits consecutivos representan un "byte". • El "byte" posee la capacidad de almacenar una caracter (una letra o un número). El procesador leera los bits de 16 en 16, cada instrucción de un programa debe caber en 16 bits. Son 216 posibilidades las que se pueden lograr con 16 bits. Los kilobytes (K ó Kb) representan 1024 "bytes". Por ejemplo, 4K implica 4096 "bytes de información. Cada megabyte (M ó Mb) equivalen aproximadamente a un millón de "bytes" de almacenaje. Un gigabyte (GB) es aproximadamente un billón de bytes o un millón de kilobytes. • Los códigos más comunes que representan caracteres en una computadora son los códigos ASCII ("American Code Information Interchange") y EDCDIC (Extended Binary Coded Decimal Interchange Code"). La combinación de los "bits" (0 y 1) forman los caracteres particulares. ASCII se utiliza en las computadoras personales, mientras que EBCDIC se emplea en los "mainframes". Cuando se usa el códico ASCII ó EBCDIC, cada caracter que se representa se almacena en un "byte" de memoria. Para cada "byte" de memoria, la mayoría de las computadoras poseen un "bit" adicional. Esto se conoce como "parity bit". Se utiliza la para detectar errores/cambios que pueden ocurrir en uno de los bits dentro de un byte. Estos errores pueden surgir como consecuecia de fluctuaciones en el voltaje, estática eléctrica, o fallo de memoria. PROCESANDO LA INFORMACIÓN ENTRADA: Tomar la Información – Suministrar información a la computadora – Teclados, mouse. • PROCESO: Manipular la Información o utilizarla de Alguna Forma – Análisis de los datos – CPU, memoria principal • ALMACENAMIENTO: Guardar la Información Oganizada para uso Posterior. – Lugar donde se guarda la información – Unidad de discos flexible, disco duro, cinta magnética, almacenaje óptico • SALIDA: Mostrar los Resultados de lo que se ha Hecho – Resultados/presentación del producto (informes, documentos, gráficas, fotos, música, entre otros) – Pantalla, impresora UNIDAD DE CONTROL La Unidad de Control, es la parte que interpreta las instrucciones del programa almacenado en memoria, generando la información necesaria para controlar los dispositivos periféricos y, desde luego, los procesos. Estas instrucciones del programa no se refieren a las instrucciones de los lenguajes de alto nivel (Basic, C++, Fortran, etc.) sino a las instrucciones en lenguaje de máquina (cadenas de bits) en que son convertidos los comandos y funciones de estos lenguajes al ser compilados (convertidos a lenguaje de máquina) los programas que los contienen. UNIDAD ARITMÉTICA Y LÓGICA. La Unidad Aritmética y Lógica (ALU), realiza las operaciones indicadas por la unidad de control y almacena los datos de las variables que intervienen, así como los resultados en registros (conjunto de celdas que permiten almacenar una cadena de bits); como su nombre lo indica, es la unidad que realiza todos los procesos de cálculo en la computadora. Todas las operaciones que puede realizar un microprocesador son de alguno de estos tres tipos: Aritméticas, Lógicas y de corrimiento. Los dos primeros son realizadas por la ALU, mientras que las de corrimiento por lo general, se realiza en un registro auxiliar a la salida de la ALU, como posteriormente lo veremos. Nosotros como usuarios no nos damos cuenta de esto, pero internamente todos los procesos tienen que ser concebidos tomando en cuenta estos tres tipos de operación. En cuanto a la parte aritmética, una ALU común realiza sumas, operación que resulta suficiente para llevar a cabo la resta, multiplicación y división, utilizando programación y algoritmos sucesivos; también realiza el complemento a dos (convertir a negativo un número para que al sumarlo se este restando), entre otras muchas funciones. En la parte lógica, se tienen varias operaciones como la INV, OR, AND y XOR que son operaciones de bit a bit y que se manejan de forma análoga a la lógica convencional. REGISTROS Los Registros permiten almacenar, entre otras cosas los resultados de los cálculos de la ALU o la dirección de memoria donde se encuentra la siguiente instrucción.Utilizamos registros ya que sería demasiado difícil accesar a la memoria principal directamente, por lo que los valores son “sacados” de la memoria y almacenados temporalmente en los registros. En un sentido más claro, los registros son celdas de almacenamiento temporal, como pequeñas memorias, por lo general del tamaño de uno, dos, o hasta 4 bytes, o bien 8, 16, 32 ó 64 bits, donde cada flip – flop puede almacenar un solo bit, así un registro consta de 8, 16 ó 32 flip – flops. Una vez guardado un valor dentro de un registro, es más fácil de utilizar para la ALU, quien es la unidad que los utiliza más, ya que garantizamos que los datos estarán disponibles hasta que ocupemos el registro con otros datos De manera general, podemos mencionar 6 registros muy importantes, pasando por alto de momento, a que unidad pertenecen (control o procesadora): a) Contador de programa (PC, Program Counter), guarda la dirección de memoria donde se encuentra la instrucción a ejecutar. Es el registro que indica la dirección de memoria, donde se encuentra la instrucción que se tiene que ejecutar. Recordemos que las instrucciones están contenidas en programas y estos a su vez están almacenados en la memoria. b) Acumulador (ACC, Accumulator), almacena los resultados de las operaciones efectuadas por la ALU. El Acumulador es un registro muy utilizado al momento de hacer operaciones y tanto datos como resultado deben pasar por él. c) Registro de Estado (FR, Flag Register), sirve para indicar determinados estados o condiciones que se han producido al ejecutar la última operación. Este registro nos “avisa” cual fue el estatus de la última operación realizada y nos ayuda a monitorear las acciones. Si una operación implica un acarreo se indica en este registro mediante un solo bit, si hay un sobreflujo también se tiene asignado un solo bit del registro para indicarlo. A este registro, también se le conoce como Flag Register o Registro de Banderas. d) Registro de Instrucción (IR, Instruction Register). En este registro se carga el contenido de la dirección marcada por el Contador de Programa. Es decir se transfiere el contenido de la localidad cuya dirección está almacenada en el PC. e) Punteros de Stack (SP, Stack Pointer), utilizados por el microprocesador para almacenar datos de forma temporal. Estos punteros tienen la dirección donde está ubicada la información. Sirven como “apuntadores” a direcciones útiles. f) Registros auxiliares (AX, BX, CX, Auxiliary Registers). Estos forman parte importante en el desarrollo de operaciones, ya que almacenan temporalmente datos de variables que se utilizan momentáneamente y que interactuan con el acumulador principalmente.