Con todo lo que hemos visto, nuestro prototipo de máquina no cuenta con todo lo necesario para que podamos ensamblar una microcomputadora a partir de sus circuitos básicos que al echarla a andar pueda llevar a cabo algunas funciones. Desafortunadamente, nos queda pendiente el problema de tener que poder comunicarnos como humanos con ella de alguna manera. Resulta obvio que tenemos que refinar nuestro diseño básico para poder comunicarnos de alguna manera con la microcomputadora. Tenemos que poder conectar unidades periféricas para la Entrada y Salida de Datos, una función general designada en la literatura técnica como I/O (acrónimo de Input/Output).
El esquema anteriormente mostrado es algo ineficiente en el sentido de que se necesita un bus de datos para poder meter y sacar información de las memorias RAM y ROM, y otro bus de datos para poder enviar y recibir información de las unidades periféricas de Entrada/Salida. ¿Y por qué no utilizar un solo bus de datos para meter y sacar información tanto de las memorias RAM y ROM como de las unidades periféricas? Esto es precisamente lo que se hace en la práctica. Naturalmente, todo tiene que estar coordinado cuidadosamente para evitar conflictos, tales como la posibilidad de que por un lado la memoria RAM pona un cero ("0", el equivalente de "tierra" eléctrica) en una de las línas de datos para enviárselo al microprocesador, y al mismo tiempo una unidad periférica ponga un uno ("1", el equivalente de un voltaje que puede ser algo como +3 volts) en la misma línea de datos, porque tal cosa equivaldría a crear un corto circuito dentro del sistema. ¿Y quién se encarga de impedir que puedan ocurrir este tipo de conflictos? En principio, el mismo microprocesador. Todo lo que ocurre en el sistema está siempre bajo el control directo del microprocesador. Es por esto que el microprocesador es verdaderamente el cerebro de la máquina. Sin embargo, conforme comienzan a incrementarse las tareas que debe llevar a cabo el microprocesador, puede ocurrir que el microprocesador se encuentre tan atareado llevando a cabo estas tareas de control externo que le queda muy poco tiempo para sus verdaderas y genuinas funciones, tales como llevar a cabo operaciones aritméticas. A la larga, esto puede disminuír la rapidez del sistema volviéndolo lento. Es por ello que, con el fin de evitar que el microprocesador terminara haciéndolo todo él sólo, se desarrollaron circuitos integrados especializados para el manejo y pre-procesamiento de información externa. Es así como se fueron desarrollando, en orden creciente de complejidad, circuitos integrados para el manejo de la información mostrada en los monitores monocromáticos de blanco y negro (estos circuitos fueron utilizados ampliamente en las tarjetas de gráficos Hércules Graphics Card), los cuales evolucionaron posteriormente para poder manejar información destinada a monitores de colores de 256 bits, evolucionando posteriormente para poder manejar información destinada a monitores de colores de 17 pulgadas y 19 pulgadas alcanzando los monitores planos actuales de plasma. Estos circuitos integrados de apoyo al microprocesador se han vuelto casi tan complejos como el mismo microprocesador, y típicamente contienen varios cientos de miles o inclusive millones de transistores.
Estructuralmente, en el interior de todo microprocesador existe por lo menos una unidad conocida como la Unidad de Aritmética Lógica (ALU, acrónimo del inglés Arithmetic Logic Unit) representada simbólicamente de la siguiente manera:
El propósito de esta unidad es llevar a cabo, en lenguaje de máquina, las labores más elementales de cómputo aritmético que se espera que pueda efectuar cualquier computadora. La unidad ALU debe poder realizar una suma binaria en la cual los sumandos son introducidos como la palabras A y B, y el resultado es puesto de inmediato en la salida identificada apropiadamente como R. La terminal de entrada F es una señal de control interna al microprocesador que indica la operación que deberá llevarse a cabo, y la terminal D es utilizada para indicar que el resultado ya está disponible en la terminal R. Una unidad ALU un poco más sofisticada debe ser capaz de poder llevar a cabo no solo una suma binaria sino también una suma Boleana, precisamente como la que vimos en el capítulo 3 titulado "El Algebra Boleana". A continuación tenemos el diseño, usando circuitos lógicos, de una unidad ALU con una modesta capacidad de dos bits:
En la actualidad, los microprocesadores que hacen funcionar a las computadoras de escritorio incorporan dentro de sí no solo una sino varias unidades ALU. La mayoría de las unidades ALU son capaces de poder llevar a cabo las siguientes operaciones:
(1) Operaciones aritméticas de números enteros (suma y resta, y posiblemente hasta multiplicación y división, aunque esto tiende a incrementar el costo del circuito integrado).
(2) Operaciones de álgebra Boleana sobre bits (AND, NOT, OR, XOR).
(3) Operaciones de corrimientos de bits ya sea hacia la izquierda o hacia la derecha, los cuales pueden ser interpretados como multiplicaciones por 2 o divisiones entre 2 (propias de la numeración binaria).
Cabe agregar aquí que poco antes de la llegada del microprocesador, dentro de la familia electrónica TTL de circuitos lógicos la empresa Texas Instruments introdujo el circuito integrado 74181 (74S181 en su versión fabricada con diodos Schottky de alta velocidad), que en aquél entonces era la primera unidad ALU completa fabricada en un solo circuito integrado, y el cual incluía el equivalente de unas 75 compuertas lógicas básicas.
Además de la unidad ALU, todo microprocesador incorpora dentro de sí varios registros temporales (ya sea con flip-flops R-S, flip-flops J-K, flip-flops D, etc.). Estos registros temporales son utilizados para "afianzar" información que va a ser procesada. Por ejemplo, en la unidad ALU, en un ciclo de máquina un registro puede recibir del exterior un sumando, y tras esto en otro ciclo de máquina otro registro es "cargado" con el otro sumando. Con ambos sumandos puestos en cada registro, el siguiente ciclo de máquina se encargaría de recoger el resultado de la suma binaria (o la suma boleana) puesto por la ALU en su salida R.
Además de la ALU y los registros internos para almacenar información temporal, dentro de todo microprocesador encontramos lo que se conoce como el Contador de Programa (PC, acrónimo del inglés que significa Program Counter). Este es un registro que le indica a la microcomputadora en qué parte se encuentra en la lista de instrucciones que está ejecutando. Dependiendo de los detalles del diseño, puede contener el domicilio de la instrucción que está siendo ejecutada, o el domicilio de la siguiente instrucción a ser ejecutada. El Contador de Programa es incrementado en 1 para cada ciclo de instrucción de modo tal que las instrucciones puedan ser recabadas en orden secuencial, una tras otra, de la memoria RAM. Este conteo ascendente es un simple conteo binario ascendente, y el lector ya sabe cómo construír uno a base de flip-flops J-K si leyó con cuidado el capítulo 6 que trata sobre el flip-flop J-K.
Un programa educativo sumamente interesante que resume lo que se ha descrito arriba y que detalla en forma simple pero efectiva el funcionamiento interno de un microprocesador (o de la unidad de procesamiento central de una computadora) paso por paso siguiendo el flujo de la información generada por un pequeño "programa" hipotético está disponible en el siguiente domicilio (se recomienda abrir el enlace en una ventana separada):
http://courses.cs.vt.edu/~csonline/MachineArchitecture/Lessons/CPU/sumprogram.html
Esta demostración educativa simula una suma binaria. Para echar a andar el programa, se activa la entrada al mismo titulada "Start Tuturial". Una vez adentro, la demostración dá la opción de listar el "programa" hipotético bajo el cual está corriendo el microprocesador ya sea en código de lenguaje ensamblador (assembly code) o en código de lenguaje de máquina (machine code). El "circuito integrado" que simboliza al microprocesador contiene lo que ya hemos visto (el registro de instrucciones IR, el contador de programa PC, la unidad de procesamiento aritmético ALU, el registro conocido comúnmente como el acumulador AC, y una pequeña memoria RAM situada del lado derecho en donde está almacenado el programa hipotético que está siendo ejecutado por la simulación).
Otro programa educativo que dá una perpectiva adicional sobre el funcionamiento interno de un microprocesador está disponible por cortesía de la Universidad de Hamburgo en Alemania en el siguiente domicilio:
http://tams-www.informatik.uni-hamburg.de/applets/hades
_________/webdemos/50-rtlib/90-prima/prima.html
Se trata de una "máquina primitiva" primitive machine o PRIMA de ocho bits, que incorpora: (1) una memoria RAM con capacidad de 256 bytes, (2) un registro acumulador de ocho bits de capacidad con un registro (flip-flop individual) adicional para la función de "Llevar" o de "Sobreflujo" según sea el caso, (3) una Unidad de Aritmética Lógica ALU de ocho bits, (4) un Registro de Instrucciones de ocho bits (llamado Befehlsregister que en alemán significa precisamente "registro de instrucciones"), (4) un Contador de Programa PC de ocho bits y, (5) lógica de control para la ejecución de las microinstrucciones implementada en un bloque STW (de la palabra alemana Steuerwerk con el mismo significado). Obsérvese que en la parte inferior media del circuito están puestos los indicadores de los ciclos fetch (búsqueda de dato) y execute (ejecución de instrucción) mencionados arriba, con la adición de un "ciclo" intermedio que en realidad no es más que la adjudicación del domicilio en la memoria RAM que está siendo accesado. La simulación mostrada consiste en un pequeño programa que primero "carga" el valor 1 en el acumulador, tras lo cual incrementa el acumulador, almacena el resultado en el domicilio 20 de la memoria RAM, y salta otra vez hacia la instrucción de incremento. Este es un bucle perpetuo, de modo tal que el programa continuará incrementando el valor del acumulador guardando dicho valor en el acumulador una y otra vez. La terminal "botón" en el extremo inferior del diagrama del circuito hace las veces del reajuste RESET, y al activarla (poniéndola en "blanco") la máquina es puesta en las condiciones necesarias para volver a empezar de nuevo desde el principio. Esta terminal "botón" normalmente tiene que estar en "1" (de color rojo) para que pueda llevarse a cabo la simulación. La simulación se puede llevar a cabo, paso por paso, "pulsando" la terminal de "reloj" clock en el extremo inferior izquierdo. Conforme avanza la simulación, es importante ver cómo el Contador de Programa PC "lleva la cuenta", como también vale la pena ver cómo la máquina va ciclando a través de los ciclos fetch y execute. La simulación de la Unidad de Control (Steuerwerk) para esta máquina PRIMA está accesible en el siguiente domicilio:
http://tams-www.informatik.uni-hamburg.de/applets/hades
__________/webdemos/50-rtlib/90-prima/prima-control.html
Del mismo modo, el secuenciador de los tres ciclos de esta máquina (fetch, address, execute) está disponible en el siguiente domicilio:
http://tams-www.informatik.uni-hamburg.de/applets/hades
__________/webdemos/50-rtlib/90-prima/sequencer.html
No debe asombrar a estas alturas que el secuenciador está compuesto a base de dos flip-flops D, y de hecho no es más que un "contador" sencillo. (La terminal PRESET en el diagrama tiene que estar "encendida", de color rojo, para que se pueda llevar a cabo la simulación.)
Aún cuando el diseño de un microprocesador ha sido concluído y se le considere un caso "cerrado" sin posibilidad alguna de poder agregarle más funciones y capacidades de procesamiento al modelo que está siendo puesto ya a la venta en el mercado, siempre es posible diseñar componentes externos que conectados en proximidad con el microprocesador lleven a cabo algunas labores de procesamiento aligerando la carga del microprocesador dejándolo libre para otras tareas. Tal es el caso del co-procesador matemático 8087 que fue diseñado para auxiliar al microprocesador 8086 de Intel en el manejo de operaciones matemáticas de números binarios representativos de números reales con punto decimal y notación exponencial:
Otra mejora que los microprocesadores integran dentro de sus arquitecturas algo conocido como las banderas (flags). Estas "banderas" no son más que una señal puesta en un registro que indica que algo ha sucedido que debería llamar la atención del programa que se está ejecutando. Una "bandera" típica será la bandera de sobreflujo (overflow), la cual será puesta a "1" cuando en alguna operación binaria tal como una operación de suma o de multiplicación el resultado haya excedido la capacidad de la máquina. El registro encargado de almacenar el valor dado por esta "bandera" se podría llamar en este caso bandera de sobreflujo (overflow flag). Cuando esta bandera está puesta en un "0" lógico, ello quiere decir que no ha habido sobreflujo alguno en la operación aritmética binaria llevada a cabo más recientemente, pero cuando alguna operación produce un sobreflujo entonces la "bandera" (que usamos como sinónimo de un registro implementado por un flip-flop) será puesta al valor lógico de "1". Es importante señalar que, como en todo lo que concierne al microprocesador, el microprocesador por sí solo no hará absolutamente nada cuando alguna bandera es puesta a un valor lógico de "1" por alguna situación especial; corresponde al programador del microprocesador estar verificando constantemente el valor de dichas banderas por si alguna condición especial ha ocurrido, y en caso de ser así el mismo programador debe escribir una rutina para el manejo adecuado de la situación.
El conjunto mínimo de banderas (registros) incorporados en la mayoría de los microprocesadores es el siguiente:
OVERFLOW. Sobreflujo. Esta bandera es puesta en "1" cuando el resultado de alguna operación binaria como suma o multiplicación ha excedido la capacidad de la máquina.
SIGN. Signo. Esta bandera es puesta en "1" cuando como resultado de alguna operación hemos llegado a un número negativo. Cuando el resultado de la operación binaria es un número binario positivo, esta bandera está normalmente en "0".
ZERO. Cero. Esta bandera es puesta en "1" cuando el resultado de alguna operación binaria (o Boleana) ha producido una palabra binaria de cero, esto es, con puros bits de "0".
CARRY. Llevar. Esta bandera es el resultado de alguna operación binaria como la operación de suma aritmética binaria en la cual la suma de dos cantidades ha excedido la capacidad de la máquina y se está indicando aquí que hay una función de "llevar".
PARITY. Paridad. Esta bandera es puesta a "0" cuando la paridad de alguna palabra binaria es impar, y es puesta a "1" cuando la paridad de la palabra binaria es par. (La paridad consiste en determinar si en una palabra binaria la cantidad de "unos" y "ceros" es la misma, ó si hay más "unos" que "ceros" ó "viceversa". Un "bit" extra de paridad que puede ser "1" ó "0" es añadido para ayudarle a la máquina el poder detectar si hay alguna palabra binaria errónea cuando su paridad es impar en lugar de par.)
Un componente frecuentemente integrado dentro de los diseños de una gran variedad de microprocesadores es la implementación en "hardware" de una estructura de datos conocida como la pila. La pila es una estructura cronológica, es un bloque LIFO (Last-In, First-Out) del tipo "lo último que entra es lo primero que sale", que acumula eventos (o símbolos) en el orden en el que van siendo depositados. El símbolo más "viejo" es localizado al fondo de la pila, y el más "joven" en el tope de la misma. Frecuentemente se le compara con una pila de platos en un restaurante, en donde los platos son apilados uno encima del otro en un agujero cilíndrico con un resorte puesto en el fondo del mismo. Los platos van siendo puestos en el tope de esta pila, y cuando un plato es removido de la pila siempre es tomado del tope. El acceso normal a una pila siempre es a través de su tope. Se puede detectar la presencia de una pila dentro de la arquitectura de un microprocesador o la capacidad de poder manejar una pila a través de una porción de la memoria RAM reservada para ello porque en el conjunto de instrucciones del microprocesador aparecen invariablemente las dos instrucciones que la delatan: push (empujar) y pop (botar, ó sacar). (Véase el Suplemento 4a: El conjunto de instrucciones del 8086 adicionado a estos suplementos.) Una operación push deposita los contenidos de un registro en el tope de una pila, mientras que una operación pop removerá el contenido del el tope de una pila y lo depositará en un registro (ampliar imagen):
Los datos que son puestos en la pila o tomados de la pila usualmente son tomados del bus de datos o puestos por la pila en el bus de datos:
Las pilas son indispensables para proporcionar la capacidad para manejar requisiciones de "interrupción" y para manejar niveles de sub-rutinas. También son usadas en forma intensa en cálculos aritméticos que deben ser llevados a cabo con la mayor eficiencia posible. Por ejemplo, la operación aritmética (A+B)(C+D) se llevaría a cabo de la manera siguiente con la ayuda de una pila:
La pila es precisamente el concepto matemático detrás de la notación polaca reversa (reverse polish notation ó RPN, también conocida como notación postfix) inventada por el matemático polaco Jan Lukasiewicz, utilizada ampliamente por las calculadoras de bolsillo comercializadas por la empresa Hewlett-Packard hasta que el abaratamiento de las computadoras y el aumento en su eficiencia produjo un declive en las aplicaciones que requerían al usuario aprender este tipo de matemáticas no tan intuitivas como las que usualmente conocemos. Y si bien la pila se ha dejado de usar "por fuera", en el interior de muchos programas elaborados para el microprocesador la pila sigue siendo indispensable por la mejora que puede ofrecer para el manejo de datos que de otra manera requerirían una cantidad mayor de recursos. Es precisamente la pila lo que se utiliza para que una computadora pueda "traducir" una expresión algebraica ordinaria como (AB)+(C/D) en algo que la computadora puede llevar a cabo en su propio lenguaje de máquina, recurriéndose para ello a la "construcción" de un "árbol" de símbolos:
en un proceso conocido como parsificación (parsing). Esto es justo lo que usa la computadora para compilar programas ejecutables que puedan corrar en una máquina como la que el lector está utilizando en estos instantes.
La pila puede ser implementada no sólo dentro de la arquitectura de un microprocesador (hardware) sino también por la vía de la programación haciendo accesos a la memoria RAM (software). Cuando es implementada dentro de la arquitectura de un microprocesador, se hace con un conjunto de registros internos puestos directamente en el "chip" del microprocesador, lo cual representa la ventaja de una mayor velocidad que si se implementa por la vía de la programación. La desventaja es que la profundidad de una pila integrada dentro de un microprocesador está limitada a una cantidad N de registros internos.
Una mejora que se puede llevar a cabo en muchos sistemas digitales con la cual se puede aumentar en forma apreciable la velocidad de los mismos es la incorporación dentro del circuito integrado de una memoria caché, la cual no es más que una pequeña memoria RAM puesta en el mismo substrato semiconductor en el cual está el microprocesador. Un microprocesador sin memoria caché tiene que buscar toda la información en la memoria RAM externa, la cual por estar situada físicamente a una distancia de varios centímetros del microprocesador consume una cantidad apreciable de tiempo tan sólo en el envío y la recepción de la información, un tiempo que mejor podría aprovecharse en el procesamiento de la información. Con una memoria caché integrada al microprocesador, el microprocesador actuando bajo las instrucciones del programa que está corriendo puede "cargar" de la memoria RAM a su memoria caché una buena cantidad de datos e instrucciones, digamos 1 Megabyte de información, que bien pueden ser un "paquete" que contiene las siguientes instrucciones a ser ejecutadas junto con los datos más próximos. De este modo, antes de ir hasta la memoria RAM para buscar un dato binario o la siguiente instrucción a ser ejecutada, el microprocesador buscará en su memoria caché tal información, y si la encuentra allí se evitará la pérdida de tiempo involucrada en accesar externamente a la memoria RAM. El concepto de la memoria caché es tan eficiente, que inclusive hasta los discos duros de alta calidad tienen integrada dentro de su electrónica una memoria caché (a manera de ejemplo, los discos duros Western Digital Caviar de 80 Gigabytes tienen en su electrónica una memoria caché de 8 Megabytes), de modo tal que antes de enviar información hacia afuera desde el disco duro primero se vacía una porción de la información solicitada en la memoria caché, y mientras el microprocesador está recolectando información de la memoria caché del disco duro el disco duro la electrónica del disco duro va preparando el siguiente vaciamiento de información hacia su memoria caché. Generalmente hablando, la presencia de una memoria caché en cualquier sistema digital es sinónimo de una mayor velocidad del sistema. Hay dos tipos de memoria caché: la memoria caché de Nivel 1 (Level One ó L1) y la memoria caché de Nivel 2 (Level 2 ó L2). La memoria caché L1 es considerada más "cercana" al microprocesador (y por lo tanto más eficiente y más rápida) que la memoria caché L2, como lo sugiere el siguiente esquemático:
A modo de ejemplo, el microprocesador AMD Athlon 64 (en proceso de obsolescencia) contiene una memoria caché L1 de 128Kbytes y una memoria caché L2 de 512 Kbytes.
El microprocesador no sirve únicamente como pieza central para construír computadoras personales de escritorio. En combinación con algún programa fijo grabado permanentemente en una memoria inalterable ROM, puede ser utilizado para algo tan sencillo como operar el panel del usuario de un horno de microondas. En este caso, al encenderse el horno de microondas, el microprocesador empieza ejecutando un programa perpetuo (sin instrucción de "alto") revisando continuamente el teclado para ver si el usuario no ha oprimido alguna tecla numérica o de control. Todo lo que hacen los hornos de microondas modernos está bajo el control de algún microprocesador que está ciclando todo el tiempo en un mismo programa hasta que se apaga la máquina. Por lo general, la memoria RAM requerida por estos sistemas especializados es de tamaño tan pequeño que frecuentemente es integrada junto con el mismo microprocesador, dentro de un solo circuito integrado. Cuando un microprocesador se utiliza para construír esta clase de sistemas digitales de control de uso general, se le conoce con el nombre de microcontrolador, y al igual que el microprocesador, al microcontrolador es a veces se le simboliza como µC.
El más reciente paso evolutivo del microprocesador, aprovechando la creciente concentración de componentes electrónicos en el mismo substrato, consiste en poner dos microprocesadores en lugar de uno solo en el circuito integrado, en la misma "pastilla" de silicón, trabajando de manera independiente. Esto es precisamente lo que tenemos en la siguiente pieza del microprocesador conocido actualmente como dual-core (núcleo-doble):
Como lo muestra la fotografía, cada uno de los dos microprocesadores (identificados como Core 1 y Core 2) de este "chip" construído por la empresa AMD tiene respectivamente a su lado una memoria caché L2 de 1 Megabyte de capacidad. Entre los más recientes microprocesadores construídos en torno a esta tecnología podemos citar los modelos 185, 285 y 885 de la familia de microprocesadores Opteron así como el microprocesador Athlon X2, ambos de la empresa AMD, mientras que la empresa Intel responde a esta competencia con microprocesadores como el Intel Core 2 e inclusive con el siguiente paso evolutivo, cuatro microprocesadores construídos en el mismo circuito integrado, un esquema conocido como quad-core (núcleo cuádruple) de lo cual el microprocesador Core 2 Quad bautizado originalmente como "Kentsfield" e introducido el 2 de noviembre de 2006 es el paradigma de esta innovación tecnológica. Y el microprocesador octal (ocho microprocesadores en una misma "pastilla") ya viene en camino, ya se está experimentando en los laboratorios de investigación y desarrollo de empresas como Intel y AMD con los primeros prototipos; sólo es cuestión de tiempo para que eventualemente lleguen al mercado.
El problema principal en utilizar dos microprocesadores en lugar de uno solo es el problema central enfrentado por la mayoría de los esquemas de lo que se conoce como multiprocesadores: la competencia entre los dos microprocesadores actuando de manera independiente por los recursos de la única memoria RAM disponible en el sistema bajo la arquitectura clásica:
Este problema es el mismo que enfrenta un sistema computacional construído con más de dos microprocesadores. El único punto de acuerdo universalmente aceptado es la conveniencia de poner una memoria caché próxima a cada microprocesador con el fin de no sobrecargar a la memoria RAM del sistema:
Más allá de este principio universal de diseño, no existe una teoría sencilla como el álgebra Boleana o el mapa de Karnaugh que nos permita "conectar" microprocesadores en alguna configuración "en serie" o "en paralelo" con la garantía de proporcionarnos una respuesta de procesamiento óptima. Lo que hay publicado sobre este tema se tiene que buscar y consultar en publicaciones elaboradas para ser leídas y entendidas por investigadores y personal académico trabajando a nivel de postgrado.
Pero este no es el único gran problema presentado por la disposición de utilizar dos microprocesadores en lugar de uno solo en un mismo sistema. El otro problema substancial es que los programas que van a correr en un sistema multiprocesador no pueden "adivinar" la presencia de dos microprocesadores en lugar de uno solo, esto lo tiene que tomar en consideración el equipo de programadores que está elaborando los programas que se van a ejecutar bajo este tipo de arquitecturas. Y escribir programas para un sistema que cuenta con más de un microprocesador no es una tarea fácil. Si anteriormente ya era de por sí bastante complicado escribir programas (con la ayuda de un lenguaje de alto nivel como C++ o como VisualBasic) para los microprocesadores convencionales, escribir programas para computadoras con más de un microprocesador se convierte en una labor que prácticamente requiere contar con un equipo sofisticado de varios ingenieros en software con títulos de maestría y doctorado en computación. Esto no significa que una labor de esta índole sea imposible de llevar a cabo. Se está haciendo en estos momentos en las supercomputadoras que recurren al uso de varios microprocesadores con el fin de dividir la carga computacional entre ellos acelerando así la velocidad de procesamiento de estos sistemas. Lo que significa es que con la inclusión de más de varios microprocesadores en un solo circuito integrado la elaboración de programas eficientes para sistemas comerciales construídos en torno a estos componentes puede terminar convirtiéndose en un "cuello de botella" que no será fácil de solventar inclusive para empresas con amplios recursos económicos como Microsoft.
Podemos obtener más información acerca de los esquemas multiprocesadores basados en el empleo de más de un microprocesador en un solo sistema yéndonos a los siguientes enlaces disponibles en la Wikipedia:
http://en.wikipedia.org/wiki/Multi-core_(computing)
http://en.wikipedia.org/wiki/Multiprocessing
http://en.wikipedia.org/wiki/List_of_Intel_Core_2_microprocessors
http://en.wikipedia.org/wiki/Intel_Core_2#Kentsfield
Exponsor
CURSO TÉCNICO INSTALADOR DE ENERGÍA SOLAR TÉRMICA
Visita el siguiente enlace: http://enersolartermica.blogspot.com.es/
¡No pierdas esta magnifica oportunidad de poder formarte en esta profesión con gran demanda de empleo!
Ahora por oferta de lanzamiento y por tiempo limitado puedes adquirir este curso por solo 9,95€, cuando su valor de mercado es de 49€.
jueves, 16 de abril de 2009
CÓMO TRABAJA UN MICROPROCESADOR ( IV )
Etiquetas:
COMPONENTES ELECTRÓNICOS,
LÓGICA DIGITAL,
TABLAS DE CONVERSIÓN
Suscribirse a:
Enviar comentarios (Atom)
1 comentario:
El mejor blog sobre electrónica. Enhorabuena y sigue así.
Publicar un comentario