Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TEORIA
Arquitectura y
Organización
de
Computadoras
1: Computadoras digitales
Conceptos introductorios:
Computadora
• Máquina
• Digital
• Sincrónica
• Cálculo Numérico
• Calculo lógico
• Controlada por programa
• Comunicación con el mundo exterior
Arquitectura de Computadoras
• Arquitectura: Atributos de un sistema que tienen un impacto directo en la ejecución lógica de
un programa.
• Atributos visibles para un programador
• Ejemplos: Conjunto de instrucciones, nro de bits usados para representar tipos de datos
(numéricos o caracteres), técnicas de direccionamiento de memoria, mecanismos de E/S, etc.
• Ej.: Existe la instrucción de multiplicación?
• Organización: Refiere a las unidades funcionales y sus interconexiones, que dan lugar a
especificaciones arquitectónicas.
• Como son implementados esos atributos.
• Atributos de organización: Detalles de hardware transparentes al programador: señales de
control, interfaces entre el computador y los periféricos, tecnología de memoria, frecuencia del
reloj, etc.
• Ej.: Existe la unidad de multiplicación por hardware o se realiza por sumas repetidas ?
Familias de computadoras
• Fabricantes ofrecen una familia de modelos de computadoras.
• Todas con la misma arquitectura, pero con distinta organización.
• Los integrantes de una familia tienen precios y prestaciones distintas.
• Arquitectura puede sobrevivir muchos años, pero la organización evoluciona con la tecnología.
• Arquitectura IBM sistema /370
• Microcomputadoras: Relación entre arquitectura y organización es muy estrecha.
• Cambios tecnológicos, influyen en la organización y generan arquitecturas mas ricas y potentes.
• Hay menos requisitos de compatibilidad entre modelos.
• Ejemplo son los computadores RISC, Reduced Instruction Set Computer).
• Aquí mayor interacción entre diseño arquitectónico y de organización.
Estructura y Funcionamiento:
• Computador: Es un sistema, constituido de un conjunto de componentes interrelacionados.
• La organización de un computador es jerárquica.
• Es necesario tratar con un nivel particular del sistema a la vez.
• De cada nivel al diseñador le interesa:
• Estructura: Como se interconectan los componentes.
• Función: la operación de cada componente individual como parte de la estructura
• Computador es un sistema complejo
• Naturaleza jerárquica de los sistema complejos.
• Sistema jerárquico: subsistemas interrelacionados. Cada uno de los cuales se organiza en
una estructura jerárquica, hasta el nivel más bajo del subsistema elemental.
• En cada nivel interesa: Estructura y funcionamiento
• Estructura: Modo en que los componentes están interrelacionados.
• Funcionamiento: la operación de cada componente individual como parte de la estructura.
• En términos de descripción: de arriba abajo ( “top-down”) es clara y efectiva (descomponer el
sistema.).
• Funciones básicas de un computador:
• Procesamiento de datos
• Almacenamiento de datos (corto/largo plazo)
• Transferencias de datos (Entrada/salida.- Comunicación de datos).-
• Control ( De las tres anteriores- gestionar y dirigir por medio de instrucciones)
• Número de operaciones posibles que pueden ser realizadas es pequeño.
• Posibles operaciones de un computador
Visión funcional de un computador
Operaciones
En la figura:
– a) Transferencia de Datos: (Por ejemplo: keyboard to screen )
– b) Almacenamiento: (Por ejemplo: Internet Download To Disk )
– c) Procesamiento de y hacia el almacenamiento: (Por ejemplo: Actualización de
Estados Bancarios)
– d) Procesamiento desde el almacenamiento hacia la E/S: (Por ejemplo: Impresión de
Estados Bancarios)
Operaciones
• Las operaciones detalladas pueden parecer absurdamente generalizada, pero:
• “Hay sorprendentemente muy pocas formas de estructuras de computadores que se ajusten a la fun-
ción que va a ser llevada a cabo. En la raíz de esto subyace el problema de la naturaleza de uso general
de computadores, en la cual toda la especialización funcional ocurre cuando se programa y no cuando se
diseña”.
(SIEW82)
Estructura de una computadora
• Como se interconectan los componentes.
• El computador es una entidad que interactúa con su entorno externo.
• Existen cuatro componentes estructurales principales:
– Unidad Central de Procesamiento (procesador)
– Memoria Principal: almacena datos
– Entrada/Salida transfieren datos entre el computador y el entorno externo
– Sistema de Interconexión: mecanismo de conexión entre la CPU, la memoria y la E/S.
Generaciones de Computadoras.-
Evolución y prestaciones.
• La evolución de los computadores se ha caracterizado por:
• Incremento de la velocidad del procesador.
• Disminución del tamaño de los componentes
• Aumento del tamaño de memoria
• Aumento de la capacidad de E/S y de la velocidad.
Memoria
Unidad de
Control
0 1 39
Bit de Signo
0 8 19 20 28 39
Unidad Aritmético-Lógica
Equipo de Memoria
Entrada Principal
Salida M
Acumulador MQ
MBR
Datos/ Instrucciones
IBR PC
MAR
IR Circuitos de
control
Ciclos de ejecución
• El IAS ejecuta repetidamente el:
• Ciclo de instrucción:
– Ciclo de captación: El Codop de la siguiente instrucción es cargado en IR, la parte que contiene la di-
rección se almacena en MAR.
– La instrucción es captada desde el IBR , o desde la memoria.
– Ciclo de ejecución: Cuando el Codop esta en IR. Los circuitos de control interpretan el CODOP y eje-
cutan la instrucción, enviando señales de control adecuadas para provocar que los
datos se transfieran o que la ALU realice una operación.
– Tabla de Conjunto de instrucciones del IAS
Computadores comerciales
– En los años 50: Compañias Sperry e IBM
– UNIVAC I: Primer computador de uso comercial. Utilizada para el censo en EEUU. Tareas: manejo de
matrices, reparto de primas para empresas, etc.
– UNIVAC II: mas memoria y más capacidad de cálculo, estrategia de compatibilidad ( para evitar per-
der la inversión en programas)
– El UNIVAC 1103 y sus sucesores diseñados para aplicaciones cientificas y de calculos complejos.
– IBM: sacó su primer computador con programas almacenados electrónicamente, en 1953. ( 701 en
1953 ).
– Se inicia la serie de computadores 700/7000, que situaron a IBM como el fabricante de computadores
dominante ( aplicaciones de gestion ).
Generaciones de computadores
Generación Años Aproximados Tecnología Velocidad Típica
(Operaciones por segundo)
1 1946–1957 Tubos de Vacío 40000
2 1958–1964 Transistores 200000
3 1965–1971 Escala de pequeña y 1000000
mediana integración
4 1972–1977 Escala de alta integración 10000000
5 1978–1991 Escala de muy alta 100000000
integración
6 1991–Actualidad Escala de ultra muy alta 1000000000
integración
Últimas generaciones Existe un acuerdo no tan general para la cuarta y quinta generación
• 4 ta. 1972 - 1977 - Integración a gran escala ( LSI) + de 1000 componentes en un solo chip
• 5ta generación: 1978 en adelante Integración a muy grande escala ( VLSI ) + de 10.000 componentes
por chip
• Actualmente chips VLSI con más de 100.000 componentes
• Con el avance de la tecnología, los nuevos productos, el software y las comunicaciones la separación
de generaciones se vuelve menos clara
• Los circuitos integrados fueron usados para construir el procesador ( la ALU y UC.)
• También esta misma tecnología podía usarse para construir memorias.
• Memorias: Entre los 50 y los 60: de anillos de material ferromagnético.
• Se magnetizaban en un sentido el anillo (llamado núcleo) y representaba un uno, en el otro un cero.
• Era más bien rápida, pero era cara, voluminosa y usaba lectura destructiva. Leía un bit de memoria en
una milésima de segundo.
• Memoria semiconductora: Introducidas en 1970 por Fairchild. Un chip podía tener 256 bits de me-
moria.
• Era no destructiva y más barata. Leía un bit de memoria en 70 mil millonésimas de seg.El costo por bit
era mayor que el de un núcleo.
• En 1974 precio de memoria semiconductor menor que la de núcleo.
Niveles de máquina
• Hay un número de niveles en una computadora (el número exacto está abierto al debate), desde el ni-
vel del usuario hasta el nivel del transistor. • A medida que se desciende desde el nivel superior, estos
niveles se tornan menos abstractos y comienza a aparecer cada vez más, la estructura interna de la
computadora.
• En la arquitectura suele emplearse un concepto de niveles.
•Idea básica: existencia de muchos niveles, desde los cuales considerar a la computadora.
•Desde el nivel más alto en que el usuario ejecuta programas, hasta el nivel inferior que consiste en
transistores y cables.
• Hay un número de niveles en una computadora (el número exacto está abierto al debate), desde el ni-
vel del usuario hasta el nivel del transistor. • A medida que se desciende desde el nivel superior, estos
niveles se tornan menos abstractos y comienza a aparecer cada vez más, la estructura interna de la
computadora.
• Nivel del usuario o del programa de aplicación. El usuario interactua con la computadora por medio de
la ejecución de programas como procesadores de texto, planillas de cálculo o juegos. Ve la computadora
a través de los programas que ejecuta
Poco o nada visible la estructura interna
• Nivel del lenguaje de alto nivel.
El usuario interactua con la computadora por medio de la ejecución de programas en lenguajes como C,
Pascal, Fortran o Java.
El programador ve los tipos de datos y las instrucciones.
No conoce como la máquina configura esos tipos de datos.
Es función del compilador convertirlos hacia los circuitos de la computadora.
Los programas así escritos pueden ser recompilados para distintos tipos de máquina( compatibilidad de
código fuente).
• Nivel del lenguaje de máquina. Miran “hacia abajo” en la jerarquía.
Deben tratar con cuestiones circuitales tales como la estructura de los registros y la transferencia de da-
tos entre ellos.
El conjunto de instrucciones del lenguaje de máquina para una computadora se denomina juego de
instrucciones.
Muchas instrucciones pueden describirse en términos de las transferencias efectuadas entre registros.
Código real que utiliza la máquina es el código binario.
Assembler: traduce esquemas nemotécnicos de un lenguaje común, tales como MOVE Data, Acc a
expresiones formadas por unos y ceros.
• “Compatibilidad binaria”:
Serie IBM 360 – Intel Corporation: 8086, 80286, 80386, 80486 Pentium
Es posible tener maquinas que difieren en la implementacion del nivel inferior pero que representan el
mismo conjunto de instrucciones o algun subconjunto o superconjunto de un juego de instrucciones
dado.
Otras computadoras ofrecen a sus usuarios distintos juegos e instrucciones, lo que dificulta el transporte
del paquete de programas de software de una computadora hacia otra familia.
Nivel de Control.
La Unidad de control a través de señales de control transfiere la información entre registros.
La U. de Control interpreta las instrucciones de máquina una a una que miran “hacia abajo” en la jerar-
quía.
Formas diferentes de implementar la unidad de control:
Cableado/Control Microprogramado
Cablear: señales de control que efectuan la transferencia entre registros y están generadas a partir de
un bloque de componentes lógicos digitales.
Ventajas: Velocidad y cantidad de componentes
Desventajas: Extremadamente dificiles de diseñar.
• Microprogramada: Más lenta pero más sencilla.
Programa escrito en lenguaje de nivel menor aún e implementado en los circuitos de la máquina, cuya
función es interpretar las instrucciones del lenguaje de máquina.
Firmware: incluye hardware y software y se ejecuta a través de un microcontrolador quien ejecuta las
microinstrucciones reales.
_• Nivel de las unidades funcionales.
_Las transferencias de registros y las demás operaciones implementadas por la unidad de control
mueven información desde y hacia “unidades funcionales”.
_Se incluyen los registros internos de la CPU, la ALU y la memoria principal de la computadora.
_ Circuitos lógicos, transistores y cables.
_Los circuitoslógicos se utilizan para construir las unidades funcionales y los transistores se usan
para construir los circuitos lógicos.
_Circuitos lógicos: Implementan las operaciones lógicas de más bajo nivel, de las cuales depende el
funcionamiento de la computadora.
_Transistores: se utilizan para construir los circuitos lógicos.
_Ultimo nivel: formada por componentes eléctricos como transistores y cables que sirven para
construir los circuitos logicos. A este nivel el comportamiento se dispersa en términos de
tensiones, corrientes, tiempos de propagación de señales, efectos cuánticos y otros temas de bajo
nivel.
Computadores que no tienen coprocesador de punto flotante emulan las instrucciones de punto flotante
por medio de una serie de rutinas implementadas en el leng. de máquina del microprocesador y almace-
nadas en un circuito integrado de memoria ROM. Los puntos de vista de los lenguajes absoluto y de alto
nivel son los mismos para ambas implementaciones, con excepción de la velocidad.
Nivel de lenguaje alto nivel y los niveles de firmware y de las unidades funcionales pueden estar tan en-
trelazados que resulte difícil identificar que operación se está produciendo en qué nivel
Diseñadores: en la búsqueda del equilibrio entre la demanda de rendimiento y procesamiento por parte
de los componentes del procesador, la memoria principal, los dispositivos de E/S y las estructuras de in-
terconexión.
El diseño se debe enfrentar a dos factores en constante evolución:
_La velocidad de cambio del rendimiento de las distintas áreas tecnológicas ( procesador, buses, memo-
ria y periféricos) es enormemente diferente entre ellos.
_Nuevas aplicaciones y nuevos dispositivos periféricos introducen nuevas demandas con respecto de las
instrucciones típicas y el modelo de acceso a datos.
Bibliografía:
Stallings, Williams - Organización y Arquitectura de Computadoras - 5º Ed. - Prentice Hall. Año 2000
Stallings, Williams - Organización y Arquitectura de Computadoras - 8º Ed. - Prentice Hall. Año 2010
Murdocca, Miles J. - Principios de arquitectura de computadoras - 1º Ed. - Prentice Hall - Año 2002
Martinez Garza, Jaime; Olivera Rodríguez J.A. - Organización y Arquitectura de Computadoras - 1º Ed. -
Pearson Educacion - Año 2000. Facultad de Ciencias Exactas y Naturales y Agrimensura
Lic. V. Godoy .-
Tareas complementarias:
Leer item 1.8. Estudio de un caso. Pag. 14 a 17 del libro: Murdocca, Miles J. - Principios de arquitec-
tura de computadoras - 1º Ed. - Prentice Hall - Año 2002
Pensar y resolver el problema: De acuerdo a lo propuesto por La ley de Moore (la potencia de
computación se duplica cada 18 meses) , que se atribuye al creador de Intel, surge que las instrucciones
de punto flotante se ejecutan en forma circuital cien veces mas rápido que cuando se las emula. Usando
la ley de Moore como guía: Cuanto tiempo le llevará a la potencia de computación crecer a punto tal que
las instrucciones de pto flotante se emulen tan rápido como sus anteriores contrapartidas en el hardwa-
re?
Las personas estamos acostumbradas a contar objetos y a realizar operaciones utilizando el sistema
decimal. Este es uno de los muchos métodos de representación de la información que existe. Sin
embargo, las computadoras no lo pueden manejar porque están formadas por dispositivos digitales, es
decir, todos sus circuitos internos trabajan en forma binaria (encendido-apagado, si-no, 0-1). Esto
implica que tengan que emplear otro sistema para gestionar la información: el sistema binario (sistema
numérico con base 2, por lo que sólo utiliza dos símbolos: el 0 y el 1). Estos unos y ceros no son más
que impulsos eléctricos con un determinado voltaje (por ejemplo: 3,3 voltios para el 1 y 0 voltios para el
0).
BIT
Teniendo en cuenta que las computadoras manejan un lenguaje binario, analizaremos los DÍGITOS
BINARIOS como la unidad más elemental de información para la comunicación de datos. Se denomina
BIT (contracción de BINARY DIGIT) al dígito binario que toma el valor 0 ó 1. Representa la información
correspondiente a la ocurrencia de un suceso de entre dos posibilidades distintas: prendido o apagado,
abierto o cerrado.
Un aspecto fundamental en la codificación binaria es determinar la cantidad de BITS necesarios para
representar la información, de manera que podamos identificar una entre varias posibles.
Como un bit puede ser 1 o 0, podremos utilizarlo para seleccionar una información entre dos. Con dos
bits, una entre cuatro; tres bits una entre ocho; etc. Las posibilidades aumentan como potencias de dos:
Un bit --------> 21 = 2 posibilidades
Dos bits --------> 22 = 4 posibilidades
Tres bits --------> 23 = 8 posibilidades
Si quisiéramos conocer cuantos bits necesitamos para una de ocho situaciones utilizamos logaritmos en
base 2 log2 8 = 3.
En general el número de bits (B) que necesitaremos para poder codificar una determinada cantidad de
información (N) estará determinado por:
B = Log2 N
Como ejemplo, para poder representar en forma binaria los 26 caracteres de nuestro alfabeto
necesitaríamos:
B = Log2 26 = 4,7 bits ===> B = 5 bits
BYTE
A pesar de que el ordenador maneja internamente la información en binario, no acepta entradas ni
muestra salidas de esa forma. Para que la información de E/S sea comprensible y fácil de manejar, se
utiliza un conjunto de símbolos, denominados caracteres. Se establece una correspondencia entre la
representación interna binaria y el caracter externo, al que se le asigna una combinación única de bits
que lo diferencia del resto. Casi todos los ordenadores utilizan internamente una agrupación de 8 bits,
denominada BYTE, para representar cada carácter. Habitualmente byte se utiliza como sinónimo de
caracter.
Palabra
Normalmente hay acuerdo acerca del significado de los términos “bit” y “byte”, pero no así sobre el
concepto de “palabra”, el que depende de la arquitectura particular de cada procesador. La palabra o
Word es un conjunto de uno o más bytes que la CPU trata como unidad. Es la unidad de información
procesada por la UAL.
Los tamaños de palabra típicos son de 16, 32, 64 y 128 bits, siendo el de 32 bits el más común. Intel
considera el tamaño de la palabra como de 16 bits y la doble palabra como de 32 bits.
Recordemos brevemente cómo se realiza el procesamiento de la información: las instrucciones y los
datos pasan a través de buses a la memoria (MP). Dichas instrucciones son ejecutadas, una por vez,
para lo cual primero cada una, por un bus, llega al registro de instrucciones (RI) de la UCP, donde
permanece mientras se ejecuta, para que la UC interprete qué operación debe ordenar. Luego, el dato a
operar por dicha instrucción llega desde la memoria a un registro acumulador (AX) del procesador, antes
de ser operado en la ALU, a fin de obtener un resultado. Este puede sustituir en el registro AX al dato ya
operado, y luego pasar a la memoria si una instrucción así lo ordena.
El procesamiento de los datos que están en la MP será más rápido si en cada acceso a ella, el número de
bits que la CPU puede tomar o enviar en paralelo es lo mayor posible. Es como llevar a la boca alimentos
con una cuchara: cuando más grande sea ésta, más rápido se ingerirá la comida (a igualdad de
cucharadas por minuto). Pero del mismo modo que existe un límite físico respecto de la cantidad
máxima de alimento que se puede ingerir, en cada modelo de UCP se tiene una cantidad máxima de bits
que ésta puede tomar por vez de la MP para procesar, que en general es múltiplo de 8.
La denominada “palabra” de un procesador es un indicador del número máximo de bits que puede tener
un dato a ser operado por la UAL del mismo. Expresa también el número de bits de dato que maneja
simultáneamente la UCP.
Si la palabra de un procesador es 32 bits, implica que la UAL puede sumar o restar dos números de 32
bits, y que el resultado que genere tendrá también 32 bits.
El tamaño o longitud de palabra determina además el ancho de los buses internos de la CPU por donde
se transmiten las palabras, y el de los registros donde una palabra puede almacenarse. Es decir, son
compatibles todos los elementos internos de la CPU.
Sabemos que la información debe estar representada por patrones de “1” y “0”. Sin embargo, existen
muchas maneras de hacerlo, es decir, muchas maneras de codificar los datos. Algunos de los
ejemplos más utilizados son: la codificación de números de punto fijo (con o sin signo), la de los
números reales (conocida como Coma Flotante), y la de los caracteres requeridos para la impresión de
texto.
El rango está dado por el número mínimo representable y el número máximo representable. En un
sistema binario sin signo (BSS) el rango es [0 ... (2 n –1)], mientras que en un sistema binario con signo
(BCS) el rango es [(-2n-1 +1) ... (2n-1 –1)]
La capacidad de representación es la cantidad de números que se pueden representar. Está dada por
bn., donde b es la base del sistema en cuestión.
Ej. 1: si utilizamos 3 dígitos, con la coma entre el primero y el segundo, en el sistema decimal
tendríamos un rango de 0,00 hasta 9,99 [0,00 ... 9,99]. La precisión de la representación es de 0,01, y
el error es la mitad de la diferencia entre dos números consecutivos, como 4,01 y 4,02 es decir 0,01/2=
0,005. Implica que cualquier número de este rango puede representarse en este formato con una
aproximación de hasta 0,005 de su valor real o preciso.
Ej. 2: en un sistema de representación binario sin signo, con cinco dígitos, el número máximo
representable es 31 (bn-1). El rango es [0, 31], es decir [00000, 11111] y la capacidad de
representación 25 números, es decir, 32 números.
El valor del dígito que ocupa la posición i está representado por bi. Existen en este caso n dígitos a la
izquierda de la coma fraccionaria y m dígitos a su derecha. Esta forma de representación de un número,
en la que cada posición tiene asignado un determinado valor, se denomina sistema de numeración
posicional.
Supongamos la expresión 541,25(10, con n=3, m=2, k=10
De binario a decimal
El procedimiento visto anteriormente permite convertir un número expresado en un sistema de
numeración de base cualquiera al sistema de numeración decimal, mediante la utilización de una
representación polinómica. Se trata de multiplicar cada dígito por el peso asignado a su posición y luego
sumar los valores para obtener el número convertido.
De decimal a binario
La forma más sencilla de convertir números que contengan tanto parte entera como fraccionaria,
consiste en operar cada una de sus partes por separado.
Ej.: 23,375 a binario 23,375 = 23 + 0,375
con un resto de b0. Como resultado de dividir por 2 el entero original se obtiene el valor del primer
coeficiente binario b0. Si se repite el proceso, se obtiene el segundo coeficiente b 1. Este procedimiento
forma la base del método de los restos. Continúa hasta obtener 0 como cociente. Los restos obtenidos
se unen en el orden indicado por la figura, teniendo en cuenta el MSB y LSB.
En general, todo número entero expresado en el sistema decimal puede convertirse a cualquier otro
sistema dividiéndolo reiteradamente por la base del sistema de numeración al que se lo quiere convertir.
Se determina así el coeficiente b-1. Reiterando el proceso sobre la fracción remanente, se obtendrán los
sucesivos bi. Este proceso continúa hasta obtener una fracción nula, o hasta que se haya alcanzado el
límite de precisión requerida.
Por último, se combinan las partes entera y fraccionaria para obtener el resultado final:
23,75 = 10111,011(2
Este proceso, denominado método de las multiplicaciones, puede ser utilizado para convertir
números fraccionarios entre distintos sistemas de numeración, multiplicando por la base
correspondiente. El multiplicador coincide con la base del sistema numérico de destino.
Si bien el método funciona con todos los sistemas de numeración, el proceso puede llegar a producir
pérdidas de precisión. No todas las fracciones representadas en el sistema de numeración decimal
pueden tener como equivalente un número racional exacto en el sistema binario. Por ej. el proceso de
conversión del número decimal 0,2 (ver figura), llega a un punto en que se repite en forma periódica
Si bien los números binarios reflejan la realidad de la representación interna de los números en la
computadora, tienen como desventaja el hecho de requerir mayor cantidad de dígitos para representar
un número que cualquier otro sistema de numeración posicional. Además, es más probable que se
cometan errores al escribir binarios debido a la gran cantidad de ceros y unos que se deben utilizar. Por
estas razones es una práctica común la conversión a los sistemas octal (base 8) o hexadecimal (base
16), sistemas estrechamente vinculados al binario. Esta relación está dada por el hecho de ser estas
bases potencias de 2 (la menor de todas ellas). Por otra parte, la conversión entre estos sistemas es
trivial, y mucho más sencilla que convertir desde o hacia el sistema decimal.
Para el sistema hexadecimal se requieren seis dígitos más que en el decimal. Se utilizan letras, de A a F.
Al comparar las columnas de la tabla, se observa la necesidad de 3 bits para representar en binario cada
uno de los dígitos del sistema octal, y cuatro para el sistema hexadecimal. En general, se requieren k
bits para representar en binario un dígito del sistema de numeración de base 2 k, siendo k un número
entero.
Para convertir un número del binario al octal, se divide el número original en grupos de 3 bits cada uno,
empezando a partir de la coma decimal, completando el grupo más significativo con ceros, si fuera
necesario. Luego, cada trío de bits se convierte en forma individual al sistema octal. Para conversiones
desde el binario al hexadecimal, se utilizan grupos de 4 bits.
En esta convención existen dos modos de representar el cero, una negativa y una positiva: 0000 0000 y
1000 0000
2. Complemento a 1 (C-1)
Este sistema de representación utiliza el bit de más a la izquierda para el signo, correspondiendo el 0
para el + y el 1 para el -. Para los números positivos el resto de los bits (n-1) representan el módulo del
número. El negativo de un número positivo se obtiene complementando todos sus dígitos (cambiando
ceros por unos y viceversa) incluido el bit de signo.
El rango de representación es de: [-2n-1+ 1 ... 2n-1 -1]
Para el caso de 8 bits el rango es [-127 ... 127]
Este sistema, a semejanza del MS, posee la desventaja de tener dos representaciones del 0, en este
caso, 0000 0000 y 1111 1111.
3. Complemento a 2 (C-2)
Este sistema de representación utiliza el bit de más a la izquierda para el signo, correspondiendo el 0
para el + y el 1 para el -. Para los números positivos el resto de los bits (n-1) representan el módulo del
número. El negativo de un número positivo se obtiene complementan el número positivo en todos sus
bits (cambiando ceros por unos y viceversa) incluido el bit de signo, para luego sumarle 1, despreciando
el ultimo acarreo si existe.
Ejemplo: Número 10 0 0001010
Número -10.........1 1110101
+1 1
11110110
Número 10 10001010
Número -10.....01110110
En este caso, el 0 tiene una única representación, que para 8 bits corresponde a:
Número 0 ( 0 + 128) 10000000
En este método, el valor del exceso tiene el formato del número negativo más grande, lo que produce
como efecto que los números aparezcan ordenados numéricamente si se los mira en una representación
binaria no signada. Así, el número negativo más grande es -128 10 = 0000 00002 y el más grande positivo
es 12710 = 1111 11112 . Esta representación simplifica las comparaciones entre números, dado que las
representaciones binarias de los números negativos tienen valores numéricamente menores que las
representaciones de los números positivos. Esto se hace importante cuando se representan los
exponentes de los números en coma flotante, donde se requiere comparar los exponentes de dos
cantidades para igualarlos, en caso de ser necesario, para sumar o restar.
Se analizará la resta implícitamente en la suma, como resultado del principio aritmético según el cual:
a – b = a + (-b), por lo tanto, se puede realizar la resta por medio del número complementado de este
método. Como consecuencia, se ahorra en la estructura circuital de la unidad de cálculo, dado que se
evita la necesidad de un elemento restador por hardware.
Lo que sí debe hacerse al sumar en C-2 es modificar la interpretación de los resultados de la suma.
A continuación se plantean dos casos especiales de suma de dos números de 3 bits
0 1 1 (+3) 0 1 1 (+3)
+ 1 1 1 (-1) + 0 0 1 (+1)
(1)0 1 0 (+2) 100
En el primer ejemplo se produce un acarreo desde la posición más significativa (bit de la izquierda). En
este método se descarta dicho acarreo, y el resultado de la operación es correcto.
En el segundo caso se produce un desbordamiento, y el resultado es erróneo. Si bien el resultado
“parece” un 4 si se lo analiza como un número sin signo, al trabajar en forma signada, el primer dígito
indica un número negativo, lo que resulta claramente erróneo.
+ 1
00001
Corrección del resultado
El hecho de haber dos representaciones para el cero, y la necesidad potencial de realizar otra suma para
agregar el bit de arrastre son dos razones importantes para que los diseñadores prefieran la aritmética
de C-2 antes que la de C-1.
Overflow y Carry
Junto con el resultado de cada operación, la UAL genera varios indicadores (flags) acerca del mismo, que
se conocen por sus iniciales inglesas S,Z,V,C.
Indicador de Signo S=1 indica que el resultado de la operación es negativo
Indicador Z de resultado cero Z=1 si el resultado es cero (“zero”)
Indicador C de acarreo C=1 si existe un acarreo (“carry”)
Indicador V de overflow o desborde V=1 si el resultado de una suma entre números con bit de signo
excede el mayor valor positivo o negativo que se puede representar.
Tanto en la representación en Ca1 como en Ca2 una operación puede dar como resultado un número
que excede la capacidad de la palabra de memoria, produciéndose así el overflow.
Al sumar dos números el overflow se puede dar sólo si los dos tienen el mismo signo; la suma de dos
números de distinto signo nunca dará como resultado un número con módulo mayor al de mayor módulo
de los dados, a lo sumo será igual (al sumarle 0 a otro número), pero en general será menor, por lo
tanto no puede exceder la capacidad de la palabra de memoria.
El overflow se reconoce cuando los bits de signo de los dos números que se suman son iguales entre sí
pero distintos del bit de signo del resultado, o sea cuando los números son positivos y da resultado
negativo o viceversa. En este caso el contenido de la palabra de memoria es incorrecta.
La representación de números en formato de punto fijo ubica la coma decimal en una posición fija, por
lo que tiene una cantidad fija y determinada de dígitos tanto a la izquierda como a la derecha de la coma
decimal. Por lo tanto, esta notación puede requerir una gran cantidad de dígitos para representar algu-
nos números. Por ej, si queremos representar números del orden del billón, necesitaremos al menos 40
bits, puesto que 1012 es aproximadamente igual a 240. Por otra parte, si además se debiera representar
una fracción equivalente al billonésimo, se necesitarán otros 40 bits, lo que daría por resultado una pala -
bra de 80 bits.
En la práctica, suelen presentarse en los cálculos números con 80 o más bits (ej: distncia al sol, trayec -
toria de un misil, etc). Para manejar y almacenar números con 80 o más bits se requiere una buena
cantidad de hardware, y por otra parte, las operaciones de cálculo pueden llegar a resolverse más lenta-
mente cuando se trabaja con grandes cantidades de bits.
Para números decimales, esta limitación se supera utilizando notación científica. Así,
976.000.000.000.000 puede representarse como 9,76 * 10 14, y 0,0000000000000976 puede expresarse
como 9,76 * 10-14. Es decir, se desplaza convenientemente la coma decimal, incrementando o decre-
mentando adecuadamente el exponente, para mantener la relación. Esto permite representar un rango
de números muy grandes y muy pequeños con sólo unos cuantos dígitos.
Esa misma técnica puede aplicarse a números binarios, representándolos de la siguiente manera:
+/- S * B +/-E
Este número puede almacenarse en una palabra binaria con tres campos
Signo: + o –
Parte significativa o mantisa (S significant)
Exponente (E)
La base B está implícita y no es necesario almacenarla.
Un número representado con este formato, puede tener distintas formas. Así, son equivalentes las si-
guientes expresiones:
0,110 * 25
110 * 22
0,0110 * 26
Para simplificar los cálculos con números en coma flotante, se procede a normalizar. Un número norma -
lizado es el que tiene la forma
+/- 0,1bbb…b * 2+/-E
donde cada b es un dígito binario (1 o 0). Se desplaza la coma decimal hasta ubicarla a la izquierda del
dígito no nulo más significativo. Esto implica que el bit más a la izquierda de la mantisa fuera siempre 1,
por lo que no sería necesario almacenarlo. La mayoría de los métodos de representación en coma flotan-
te no almacenan dicho bit inicial. Lo que se hace es “recortarlo” antes de empaquetar el número para su
almacenamiento, recuperándolo al desempaquetar y llevar el número a su representación de mantisa y
exponente. A raíz de este artificio, se obtiene un bit adicional a la derecha de la mantisa, lo que mejora
la precisión de la representación. Este bit suele denominarse bit implícito. Por ejemplo, si en un forma-
to determinado la mantisa luego de la normalización se representa como 0,11010, el patrón a ser alma -
cenado es 1010 y el bit más significativo se oculta.
Como inconveniente, este esquema no permite representar el cero, por lo que su representación debe
hacerse a través de un procedimiento de excepción. Veremos que se incluye una combinación especial
para representar el cero.
Ejemplo 1: Representar en coma flotante el número decimal 34, en C a 2, con 1 bit para el signo, 5 bits
para el exponente y 8 bits para la mantisa, con bit implícito.
-
Convertir a binario: 00100010
-
Notación exponencial (normalizar): 00100010 * 20 0,100010 * 26
-
Mantisa a almacenar (con bit implícito) 00010
-
Exponente: 110
-
Empaquetar los elementos, según especificaciones (rellenar con 0 la mantisa)
0 00110 00010000
Ejemplo 2: Determinar el número decimal que representa el patrón 1010110010000, codificado en coma
flotante, con bit oculto, según las siguientes especificaciones: 1 bit para el signo, 4 bits para el exponen -
te y 8 bits para la mantisa, estos últimos expresados en MS
-
1 0101 10010000
-
Signo: -
-
Exponente: 5
-
Mantisa: 0,1 10010000
-
Componiendo: - 0,110010000 * 25 = -11001 = -25
Rango y precisión
+ 2 3 6 0 2 3
Signo Exponente Mantisa
Dos dígitos Cuatro dígitos
El rango de la representación queda determinado básicamente por la cantidad de dígitos del exponente.
En este caso se expresa a través de una potencia de la base 10 (10 23).
La precisión queda determinado por la cantidad de dígitos de la mantisa (cuatro en este ejemplo).
Si se requiere un rango mayor, y si a cambio se está dispuesto a sacrificar precisión, se pueden usar 3
dígitos para la parte fraccionaria y dejar tres dígitos para el exponente, sin necesidad de aumentar la
cantidad de dígitos totales de la representación.
+ 0 2 3 6 0 2
La posibilidad de plantear soluciones de compromiso entre rango y precisión es una de las ventajas prin -
cipales de la representación en punto flotante.
Un inconveniente que presenta este método es que existen valores no representables. El rango de re-
presentación tiene la estructura:
mNN es el mínimo número negativo = - máxima mantisa * base máximo exponente positivo
MNN es el máximo número negativo = - mínima mantisa * base máximo exponente negativo
mNP es el mínimo número positivo = mínima mantisa * base máximo exponente negativo
MNP es el máximo número positivo = máxima mantisa * base máximo exponente positivo
Ejemplo: considérese una representación en coma flotante en la que se tiene 1 bit de signo, un expo -
nente de 2 bits en notación exceso 2 y una mantisa normalizada binaria, con 3 bits, con el primer 1 no
implícito.
Existen muchas maneras de representar números en formato de punto flotante. Cada uno tiene caracte-
rísticas propias en términos de rango, precisión y cantidad de elementos que pueden representarse. En
un esfuerzo por mejorar la portabilidad de los programas y asegurar la uniformidad en la exactitud de
las operaciones en este formato, el IEEE desarrolló su norma IEEE 754. Este estándar ha sido amplia-
mente adoptado y se utiliza prácticamente en todos los procesadores y coprocesadores matemáticos ac -
tuales.
Formatos
-
Un exponente cero junto a una mantisa cero representa el cero positivo o negativo, dependiendo del
bit de signo. (00000000 00000000000000000000000 0)
-
Un exponente todo unos junto con una mantisa cero representa, dependiendo del bit de signo, el in -
finito positivo o el negativo (11111111 00000000000000000000000 )
-
Un exponente todos unos junto a una mantisa distinta de cero representa un NaN (not a number), y
se emplea para señalar una excepción (11111111 xxxxxxxxxxxxxxxxxxxxxxx NaN)
Las operaciones aritméticas en este método difieren del visto en punto fijo en el hecho de que, además
de considerarse las magnitudes de los operandos, tiene que considerarse también el tratamiento que
debe darse a sus exponentes. Como en el caso habitual de las operaciones decimales en notación cientí -
fica, los exponentes de los operandos deben ser iguales para poder sumar o restar. Se suman o restan
las mantisas según corresponda, y se completa la operación normalizando el resultado.
Los procesos de ajuste de la mantisa y de redondeo del resultado pueden llevar a una pérdida de preci-
sión.
Hay cuatro etapas básicas en el algoritmo para sumar o restar
Comprobar valores cero
Ajuste de exponente y mantisa
Sumar o restar las mantisas
Normalizar el resultado
Para la operación de suma o resta, los dos operandos deben transferirse a registros que serán utilizados
por la ALU. Si el formato incluye un bit de mantisa implícito, dicho bit debe hacerse explícito para la ope -
ración.
Dado que la suma y la resta son idénticas, excepto por el cambio de signo, el proceso comienza cam -
biando el signo del substraendo cuando se trata de una resta. A continuación, si alguno de los operandos
es cero, se da el otro como resultado.
Luego se procede al ajuste de los exponentes, en sucesivas operaciones. Si en este proceso se obtiene
una mantisa cero, se da el otro número como resultado. Esto significa que cuando dos números tienen
exponentes muy diferentes, se pierde el menor de los números.
Luego se suman las mantisas, teniendo en cuenta sus signos. Ya que los signos pueden diferir, el resul-
tado puede ser cero. Existe también la posibilidad de desbordamiento de la mantisa en un dígito. Si es
así, se desplaza a la derecha la mantisa del resultado (se pierde el dígito menos significativo), y se in -
crementa el exponente. Como resultado podría producirse un desbordamiento en el exponente. Esto se
debe indicar, y la operación se detendría.
Por último, se normaliza el resultado.
Codificación de la información
Para permitir la comunicación de datos existe una primera cuestión a tener en cuenta: el Hardware. Pero
esta es solo una parte. Todas las personas del mundo tienen el mismo hardware para la comunicación
hablada: labios, lengua, dientes y el resto del complejo aparato bucal para transmitir y los oídos para
recibir. La comunicación oral, sin embargo, es posible solamente cuando dos personas conocen el mismo
lenguaje, es decir la misma manera de codificar la información.-
Así como el habla sería imposible sin lenguajes comunes, la comunicación entre computadoras sería
imposible sin coordinación de códigos de caracteres.-
Todas las computadoras digitales actuales usan un lenguaje binario para representar la información
internamente. Debido a que algunos de los dispositivos con los que se deben comunicar las
computadoras están diseñados para uso humano (especialmente impresoras y terminales de video), es
importante que esos periféricos utilicen un código de comunicación compatible con la comunicación
humana.
Existen varios métodos para alcanzar dicha compatibilidad y cada uno utiliza un modo diferente de
codificar los números y las letras que conforman la base de la comunicación escrita entre las personas.
Actualmente es frecuente encontrar en un sistema de cómputo dispositivos provistos por distintos
fabricantes. La posibilidad de conectarlos existe únicamente si esos dispositivos utilizan un código común
para la transmisión y recepción de la información.
Son claras las ventajas de conseguir que todas las computadoras utilicen el mismo código de
comunicación. Aún cuando la calidad de los códigos varía enormemente, casi cualquier estándar
universal sería mejor que ninguno. Si bien hay códigos que prácticamente son aceptados por todos los
fabricantes, aún no existe un estándar que optimice el aprovechamiento de los recursos del hardware.
A diferencia de los números reales, que tiene un rango infinito, existe sólo una cantidad finita de
caracteres representables.
El concepto de caracter aparece como la cantidad de BITS necesarios para representar los diferentes
símbolos del alfabeto (letras, cifras, signos de puntuación, etc.)
De acuerdo al código utilizado cada caracter puede codificarse con un número varible de BITS, pero
dentro de un sistema todos los caracteres se representan con el mismo número de bits.
A) El código debe englobar al de los números, y permitir distinguir las cifras rápidamente de los otros
caracteres.
B) La representación debe permitir añadir nuevos caracteres específicos para una aplicación
determinada.
C) En el caso de las transmisiones, la representación debe incluir un sistema de redundancia que
permita la detección de errores.
El código ASCII se definió inicialmente con 6 bits, esto permitía representar 2 6 = 64 caracteres.
Posteriormente el ANSI (Instituto Nacional Norteamericano de Normas) definió un nuevo ASCII (que se
mantiene como norma) de 7 bits. Esta nueva definición permite codificar 128 caracteres; haciéndolo
más apto, fundamentalmente para la transmisión, donde parte de los “caracteres” codifican funciones de
control.
Existen códigos ASCII ampliados (no normalizados) que usan los 8 bits para codificar una serie de
caracteres gráficos especiales, incluidas las vocales con acento.
La mayor parte de las máquinas actuales utilizan el código normalizado, pero generalmente agregan un
octavo bit, que les permite extender el código para representaciones no previstas o para utilizarlo como
bit de control de paridad en las transmisiones. Este código es ampliamente usado para la transmisión de
información.
El éxito de este código se basa en que cumple con todas las condiciones impuestas para la codificación
de caracteres:
Los valores correspondientes a las letras del alfabeto y a los restantes caracteres, siguen una secuencia
binaria continua, la computadora no tiene que dejar su propio lenguaje binario para realizar operaciones
secuenciales con esos caracteres. Además con el agrupamiento de las funciones de control, con solo
analizar los dos primeros bits de una combinación cualquiera codificada, la computadora puede
determinar si se trata de una función de control (dos ceros) o de un caracter (uno de los dos no es
cero).
Las mayúsculas de la A a la Z se codifican según una sucesión ordenada de números binarios, que
permite realizar ordenaciones alfabéticas:
A = 01000001 = 41(16 = 65(10 ; B = 01000010 = 42(16 = 66(10 ; … Z = 01011010 = 5A(16 = 90(10
Lo mismo ocurre con los dígitos decimales:
0 = 00110000 = 30(16 = 48(10 ; 1 = 00110001 = 31(16 = 49(10 ; … 9 = 00111000 = 39(16 = 57(10
Existen teclas de control correspondientes a órdenes mecánicas, como la barra espaciadora (SP en
ingles, de SPace), la tecla de retorno de carro a un nuevo renglón (CR de Carry Return), que aparece
como “Enter” en los teclados, la de retroceso (BS o Back Space).
Estas teclas sirven para organizar la impresión de caracteres en renglones de un papel o de una
pantalla, y se conocen como caracteres no imprimibles, siendo en esencia órdenes para desplazar el
carro de una máquina de escribir o su equivalente cursor en una pantalla.
Existen diversas maneras de presentación de una tabla con el código ASCII, las cuales mayormente
indican, por razones de comodidad, o para operar desde el teclado, las equivalencias hexadecimales o
decimales de cada combinación binaria del código, sin indicar ésta. Esto puede observarse en la
siguiente figura, que muestra la tabla de equivalencias a la que se accede desde un editor de texto sin
formato.
Cada dígito decimal es representado internamente con 8 bits, distribuidos de la siguiente forma:
ZONA: Es siempre 0011
DIGITO: En este espacio (4 bits) se representa el número decimal codificado en BCD
Los datos numéricos así codificados no son técnicamente aptos para ser procesados aritméticamente. Si
es necesario realizar operaciones aritméticas con ellos, se debe eliminar la parte correspondiente a la
ZONA de cada byte. Esta operación se llama empaque y la información resultante, información
empacada (empaquetada) o decimal sin zona. Los datos numéricos con zona se denominan información
desempacada o zoneada.
Este código fue diseñado y utilizado exclusivamente por IBM. Su importancia radica en que sirvió como
base para los códigos posteriores normalizados.
Utiliza 8 dígitos binarios para representar cada carácter, por lo tanto hay un total de 2 8=256 caracteres
posibles. La correspondencia entre la información por representar y la correspondiente secuencia
binaria se encuentra en tablas con distintos formatos.
Con respecto a los caracteres alfabéticos y signos de puntuación no tiene características que lo
destaquen, salvo que podemos encontrar pequeñas alteraciones al ser utilizados en países con distintos
alfabetos.
La estructura del Byte según la representación es la siguiente:
7 6 5 4 3 2 1 0
Posición 5 y 4
Posición 7 y 6 00 - A-I
11- Letras mayúsculas y números 01 - J-R
10 - Letras minúsculas. 10 - S-Z
01 - Caracteres especiales 11 - Números
00 - Ningún carácter encontrado
Representación de los Números
En este código, al igual que en el ASCII, cada dígito decimal es representado internamente con 8 bits,
distribuidos de la siguiente forma:
ZONA: Ocupa los 4 bits de orden superior del Byte. Tiene una secuencia binaria fija para cualquier
número: 1111(2 = F(16
DIGITO: En este espacio se representa el número decimal codificado en BCD
Aquí surge el mismo inconveniente visto en el código ASCII: la dificultad para realizar operaciones
matemáticas con los números representados con la ZONA. La solución es la misma que la indicada para
el código anterior. Como la mayor parte de las máquinas utilizan 8 bit para cada dígito no surgen
conflictos al producirse el EMPAQUE.
3) El código UNICODE
Los códigos ASCII y EBCDIC sirven para soportar los conjuntos de caracteres (latinos) históricamente
dominantes en las representaciones de la computación. Existen muchos otros conjuntos de caracteres en
uso en el mundo, y no siempre es posible la conversión de código ASCII al código correspondiente al
idioma X. A raíz de esto surgió un nuevo conjunto de caracteres, universal y normalizado, al que se
conoce como Unicode, y que sirve para soportar una buena cantidad de alfabetos que se usan en el
mundo.
Este código es una norma en desarrollo, que se modifica a medida que se le incorporan los símbolos
correspondientes a alfabetos nuevos, y a medida que los conjuntos de caracteres incorporados se van
modificando y se refinan las correspondientes representaciones. En la versión 2.0 de Unicode se incluyen
38.885 caracteres diferentes, los que cubren los principales lenguajes escritos de uso en América,
Europa, Medio Oriente, Asia, India y las islas del Pacífico.
Utiliza un conjunto de caracteres de 16 bits. Si bien este código soporta muchos más caracteres que
ASCII y EBCDIC, no es la norma de mayor importancia.
Los primeros 128 caracteres del Unicode coinciden con los del ASCII.
La siguiente figura muestra los símbolos disponibles para inserción desde un documento de Word. En la
ventana puede observarse la disponibilidad de caracteres Unicode y ASCII, y el código decimal o
hexadecimal correspondiente.
Códigos redundantes
Es difícil pensar en un equipo que funcione sin fallas durante un tiempo indefinido. Para cualquier
máquina se define un Tiempo Medio Entre Fallas (MTBF). El objetivo de los desarrollos tecnológicos es
incrementar ese tiempo.
Teniendo en cuenta esa premisa, es de esperar que la información pueda verse alterada en el transcurso
de la transmisión o almacenamiento. Si el equipo tiene la posibilidad de detectar o, mejor aún, corregir
esas modificaciones, es evidente que aumentará la confiabilidad del mismo. Para este fin, existen dos
tipos de códigos:
1. Códigos autodetectores
Este código, si bien no permite detectar errores dobles, es el más utilizado debido a su simplicidad y a
que en los ordenadores la probabilidad de que ocurra un error es muy pequeña, por lo tanto que ocurran
2 es mucho menos probable.
Consiste en agregar a los bit de información transmitidos un bit mas (generalmente el primero de la
izquierda), que hace que la cantidad de unos transmitidos sea PAR (PARIDAD PAR – pone un 0) o IMPAR
(PARIDAD IMPAR – pone un 1).
Ejemplo: Se desea enviar los caracteres ASCII ‘A’ (código decimal 65) y ‘C’ (código decimal 67) desde
un equipo emisor a otro receptor, utilizando una comprobación de paridad par:
Emisor (Codificación del Byte del carácter para comprobación de paridad PAR)
Carácter ASCII Código binario del dato Bit de paridad Byte completo
‘A’ (65) 1000001 0 0 1000001
(el número de unos es par)
‘C’ (67) 1000011 1 1 1000011
(el número de unos es impar)
Cuando el receptor recibe la información lo que hará será volver a contar el número de unos que tiene el
dato y comprobar que concuerda con lo especificado en el bit de paridad. Si llega:
Byte recibido Dato Nº de unos recibido Bit de paridad que tiene Error
0 1000001 1000001 2 0 NO
‘A’ (par)
1 1000001 1000001 2 1 SI
‘A’ (par)
Se puede detectar que en el segundo carácter transmitido hay un error porque el bit de paridad no
concuerda con lo que se expresa en los bits de datos: el número de unos es impar pero el bit de paridad
indica que debería ser par.
2. Códigos correctores
Mediante el uso de estos códigos, el receptor puede determinar si la información recibida es correcta o
no y en este caso corregir el error producido durante la transmisión.
2.2. Control 2 en 3
Para transmitir una información cualquiera de “n” bits, se envían 3 veces esos “n” bits, en forma
sucesiva. Al receptor de la información, al efectuar el análisis de la misma, pueden presentársele tres
situaciones distintas:
Las tres son idénticas. La información se toma como correcta.
Dos son iguales y una distinta. El código se comporta como AUTOCORRECTOR, selecciona una
de las dos iguales y la toma como correcta.
Las tres son distintas. El código se comporta como AUTODETECTOR, la máquina detecta que
hay error pero no puede determinar cual es la información correcta.
3: Circuitos digitales
El objetivo de este tema es abordar los principios básicos de la lógica digital, que pueden aplicarse en el
diseño de una computadora digital.
Lograr el entendimiento de los principios de la Lógica combinatoria y de la Lógica Secuencial, utilizadas
en el diseño de circuitos lógicos digitales, a partir de los cuales es posible construir integramente una
computadora.
Estos circuitos implementan las operaciones básicas de mas bajo nivel , de las cuales depende el funcio-
namiento de una computadora.
Algunas definiciones
Unidad lógica Combinatoria: un circuito lógico digital en el cual las decisiones lógicas se toman exclusi-
vamente en base a las combinaciones de las entradas. Ejemplo: un sumador.
Unidad lógica Secuencial: un circuito donde las decisiones se adoptan no sólo en virtud de las combina-
ciones de entrada sino también de la historia anterior de las mismas entradas. Ejemplo: una unidad de
memoria.
Máquina de estado finito: Un circuito que posee un estado interno y cuya salida es función de las entra-
das corrientes y de la historia previa de sus entradas
Unidad lógica Combinatoria
Transforma un conjunto de entradas en un conjunto de salidas de acuerdo con una o más funciones lógi-
cas.
Las salidas de una CLU son estrictamente funciones de las entradas, y se actualizan inmediatamente
luego de cualquier cambio en las entradas. La unidad recibe un conjunto de entradas i0 – in y produce
un conjunto de salidas f0 – fm que dependerán de las funciones lógicas correspondientes.
Las entradas y salidas para una CLU normalmente tienen dos valores binarios distintos : alto y bajo, 1 y
0, 0 y 1, o 5 volt y 0 volt por ejemplo
i0 f0 (i0 ,i1 )
Unidad Lógica
Combinacional
i1 f1 (i1 ,i3 ,i4)
in fm (i9 ,in)
Circuito combinacional
En una tabla de verdad, se enumeran todas las posibles combinaciones de entrada de las var. binarias y
se asigna el correspondiente valor 0 o 1 a la salida para cada combinación.
En general, dadas n variables de entrada se pueden obtener 2 n combinaciones de entradas, existen ->
2 (2n) posibles asignaciones de salida.
COMPUERTAS LOGICAS
Tablas de verdad con todas las posibles funciones de dos variables binarias
Símbolos lógicos de las funciones booleanas AND (Y), OR (O) , buffer, y NOT
• Visualizar el uso de la “burbuja de inversion”.
Principio de dualidad: El dual de una función booleana se obtiene intercambiando sumas lógicas ( O )
por productos ( Y ) y productos por sumas.
A' B' = A' + B' A' + B' = A' B' Teorema de DeMorgan
A B + A' C + B C = A B + A' C A B + A' C + B C = A B + A' C Teorema del consenso
A (A + B) = A A (A + B) = A Teorema de Absorción
Se utiliza el Teorema de DeMorgan para convertir una compuerta O en una compuerta NAND.
Conjunto de puertas
Un conjunto completo de puertas permite generar otras compuertas lógicas que no son parte de dicho
conjunto.
Existen 3 conjuntos de compuertas lógicas que permiten lograr una estructura completa. (Y, O y NO, las
compuertas NAND y las compuertas NOR).
En el ejemplo anterior vimos como una función O, se implementa únicamente a través de compuertas
NAND.
La equivalencia funcional entre compuertas lógicas es importante en lo que hace a la aplicación practica,
dado que un tipo de compuerta lógica puede tener mejores características operativas que otro, depen-
diendo de la tecnología utilizada.
• Ninguna
de las com-
puertas
analizadas
hasta ahora
puede eje-
cutar en
forma direc-
ta la función
mayoría->
Transforma
la función
en una
ecuación ló-
gica de dos
niveles Y
(producto
lógico) y O
• Implementa la función con un un arreglo de compuertas lógicas, usando el conjunto {AND, OR,
NOT}
• M es verdadero cuando A=0, B=1, y C=1, o cuando A=1, B=0, y C=1, y así sucesivamente
en los restantes casos.
La forma SOP de la función mayoría
• La siguiente suma de productos describe la función mayoría para tres entradas:
•
• Note las relaciones entre números minitérminos y valores booleanos La forma suma de produc-
tos
• La siguiente suma de productos describe la función mayoría para tres entradas:
• M = ABC + ABC + ABC + ABC = m3 + m5 +m6 +m7 = (3, 5, 6, 7)
• Expresión de la función mayoría en su “ forma canónica suma de productos”.
• Cuando un producto lógico contiene todas las variables de la función, expresadas una sola vez,
ya sea en su forma real o complementada, se denomina Termino Mínimo
• Cada uno de los 2n términos son llamados mínimos comenzando desde 0 to 2 n - 1
• Note las relaciones entre números minitérminos y valores booleanos
A B C
A’ B’ C’ A' B C
A B C'
ABC
Da origen a la ecuación
Una nueva aplicación del Teorema de DeMorgan a los términos entre paréntesis, ahora en su forma:
Da origen a la ecuación:
Esta ecuación esta expresada en la forma producto de sumas y contiene 4 términos máximos, en los que
cada variable de la función aparece una sola vez en forma real o complementada.
Un termino máximo ( A + B + C ) adopta un valor 0, para una única entrada de la tabla de verdad.
Un argumento para el uso de la forma producto de sumas en reemplazo de la forma de la forma suma
de productos, puede ser la obtención de una expresión booleana mas sencilla.
A B C
A’ B’ C’ A' + B + C
A + B’ + C (A'+B+C)(A+B'+C) (A+B+C')(A+B+C)
A + B + C'
A +B+C
Entradas de datos
Mayor eficiencia: Uso de un multiplexor 4-1 para implementar la función mayoría.( 3 variables y 4 entra-
das de datos.)
Demultiplexores (DEMUX)
En cada momento solo una de las salidas del decodificador está en estado activo ( 1 lógico).
Decodificadores.
Un decodificador traduce una codificación logica hacia una ubicación espacial.
A veces se introduce una línea de habilitación que fuerza todas las salidas a 0, cuando se le aplica un 0
en la entrada.
Decodificador 2-4.
En c/momento, solo una de las salidas del decodificador esta en el estado activo. Las salidas no utilizadas se
dejan desconectadas
Codificadores de prioridad
Obtener un sistema modular formado por componentes discretos que se diseñan y se implementan por
separado.
Haciendo uso del criterio modular es que se diseña una PLA como una caja negra.
Uso de PLAs: Diseño de un circuito digital que suma dos numeros binarios
Circuito sumador con arrastre en serie de 4 bits implementado con sumadores completos conectados en
cascada
(Para el ejemplo anterior)
Estas herramientas de diseño asistido reducen los tamaños de las PLAs, por lo que la gran cdad de com-
puertas aparentemente utilizadas no es tan elevada en la practica.
Indice general
• Lógica Combinatoria:
• Definiciones
• Algebra de Boole
• Componentes digitales
• Lógica Secuencial:
• Maquina de Estados Finitos
• FLIP_FLOPS:
• Circuito S-R sincrónico
• Circuito D Flip-Flop
• Circuito J-K Flip-Flop
• Circuito Master-Slave Flip-Flop
• Registros
• Contadores
Si: elementos de retardo, uno por cada línea de entrada (líneas de estado)
• Considerar que:
• H(t) está completamente definida por la historia previa del autómata.
• Existe un número finito de elementos de memoria, por lo tanto H(t) no puede tomar más que
un número finito de valores distintos llamados ESTADOS INTERNOS DEL AUTÓMATA.
Lo cual indica que la salida depende del estado en el instante t y de las entradas E(t).
El estado posterior a los estímulos o entradas, Q(t+1) dependerá también de E(t) y de Q(t); o sea:
Las ecuaciones 1) y 2) permiten calcular paso a paso el comportamiento del autómata, cualquiera sea la
sucesión de estímulos que pueda recibir en un instante t.
Las funciones F y G o FUNCIONES DE TRANSICIÓN pueden representarse en forma de tablas o de
diagramas:
• Funciones de transición
• Si al estado del autómata en el instante t se lo denomina Q(t) entonces:
• Ejemplo 1: autómata cuyo comportamiento es el siguiente:
Q(t+1) = E(t)
E Q (t) S Q(t+1)
0 0 0 0
1 0 0 1
0 1 1 0
1 1 1 1
E/S
1/0
0/0 0/1 1/1
0 1
Q(t+1)
• Ejemplo 2: Autómata para suma binaria en serie. Las entradas indican las parejas de números
a sumar, la salida S presenta la suma de los números binarios introducidos, los estados posibles (0 o 1)
indican, en cada caso) el arrastre producido.
A B Q(t) S Q(t+1)
0 0 0 0 0
0 0 1 1 0
0 1 0 1 0
0 1 1 0 1
1 0 0 1 0
1 0 1 0 1
1 1 0 0 1
1 1 1 1 1
FLIP-FLOPS
• Los elementos de memoria en un circuito secuencial se denominan flip-flops.
•Un flip-flop posee dos salidas, Q y Q', y dos entradas, set y reset (Flip-Flop SR).
Un flip flop posee dos salidas, una para el valor normal y otra para el valor complementado almacenado
en él.
• Un flip-flop puede construirse a partir de dos compuertas NAND o dos compuertas NOR
El tiempo requerido para que una señal se propague desde las entradas de una compuerta lógica hasta
sus salidas no es nulo.
El retardo entre la E/S es la base de funcionamiento de un elemento importante de la memoria, el
flip-flop.
Compuerta 2
Compuerta 1
Flip-Flop SR o SC
• Como esta salida es también una de las entradas de la compuerta 2, al haber un 0 y un 0 como
entrada, su salida (Q) pasará de 0 a 1. Como antes, ahora la salida de la compuerta 2 (Q) es una de las
entradas de la compuerta 1.
• Como hubo un cambio de 0 a 1 debemos ver que efecto tiene esto en la salida de la compuerta
1.
• Las entradas son 1 y 1 a lo que la compuerta NOR responderá con un 0 a la salida (Q’ ). Como
esta estaba en 0, el FF queda en un estado estable y no hay mas cambios.
S C Qt Qt+1
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 ?
1 1 1 ?
•
• Podemos resumir el comportamiento para el FF cuando aplicamos un pulso en R (subir a 1 y ba-
jar a 0 nuevamente ) de la siguiente manera:
• Estando el FF en 0 (Qn= 0) si aplicamos un pulso en R el estado futuro será 0 (Qn+1 = 0).
• Estando el FF en 0 (Qn= 1) si aplicamos un pulso en R el estado futuro será 0 (Qn+1 = 0).
• Con esto podemos decir que si aplicamos un pulso en R, independientemente del estado actual,
(Qn) el estado futuro será 0 (Qn+1 = 0)
S R Qt Qt+1
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 ?
1 1 1 ?
S R Qt Qt+1
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 0
1 0 0 1
1 0 1 1
1 1 0 ?
1 1 1 ?
Representación de Flip-Flop SR o SC
Representaciones de Flip-Flop SR o SC
Qt Qt+1 R S Explicación
0 0 x 0 Observando la tabla de funcionamiento hay dos situaciones en que se verifica este
cambio de estado: en ambos casos por S ingresa un 0 y por R puede ingresar 1 o
0. Esto implica que independientemente del valor de R (x) por S debe ingresar un
0
0 1 0 1 Observando la tabla de funcionamiento se verifica que hay una sola situación en
que se verifica este cambio de estado: Cuando por R ingresa un 0 y por S ingresa
un 1
1 0 1 0 Observando la tabla de funcionamiento se verifica que hay una sola situación en
que se verifica este cambio de estado: Cuando por R ingresa un 1 y por S ingresa
un 0
1 1 0 x Observando la tabla de funcionamiento se verifica que hay dos situaciones en que
se verifica este cambio de estado: en ambos casos por R ingresa un 0 y por S
puede ingresar 1 o 0. Esto implica que independientemente del valor de S (x) por
R debe ingresar un 0
• Estando ahora en S=1, C=1, Q=0 y Q’=0, podemos hacer tres cosas:
• 1. Bajar S a cero, esperar que el FF se coloque en un estado estable y luego bajar C a cero.
• 2. Bajar C a cero, esperar que el FF se coloque en un estado estable y luego bajar S a cero.
• 3. Bajar S y C a cero simultáneamente.
• Estando ahora en S=1, C=1, Q=0 y Q’=0, podemos hacer tres cosas:
• 1. Bajar S a cero, esperar que el FF se coloque en un estado estable y luego bajar C a cero.
• 2. Bajar C a cero, esperar que el FF se coloque en un estado estable y luego bajar S a cero.
• 3. Bajar S y C a cero simultáneamente.
•Señal de sincronismo de reloj: para lograr una sincronizacion controlada de los circuitos de logica
secuencial .Cada flip-flop se sincroniza a si mismo al aceptar cambios de sus entradas solo en instantes
determinados
Si los estados de un circuito son sensibles a la secuencia temporal de las señales de entrada->
variación transitoria de los estados y deriva en mal funcionamiento
R y S ya no pueden cambiar el estado del circuito hasta que no reciba un nivel alto en CLK. Si los cam-
bios en R y S se producen mientras la señal de reloj está en su estado 0 (bajo) el estado del flip flop no
se modifica.
Sólo cuando la señal de reloj pase a 1 los nuevos estados de R y S, estables, se almacenarán en el flip
flop.
Circuito D-FLIP-FLOP
Desventaja del flip_flop R-S : para almacenar un 1 o un 0, hace falta aplicar un 1 a una de dos entradas
diferentes y un 0 a la otra (según el valor que se desea almacenar).
Alternativa: aplicar un 1 o un 0 a una única entrada, lleva a a un flip flop D.
Se obtiene conectando las entradas R y S entre ellas a través de un circuito inversor.
Cuando se activa la señal de reloj, el valor de D queda almacenado en el flip flop.
Desventaja: En situaciones en que existen realimentaciones desde las salidas hacia la entrada, a través
de otros circuitos, el flip-flop puede cambiar de estado mas de 1 vez en un ciclo de reloj.
Clocked D Flip-Flop
El flip-flop D, sincronizado, llamado latch, presenta un problema potencial. Como solución: se suele cor-
tar el lazo de realimentación a través de otra estructura .
El flip-flop Master-Slave soluciona este problema.
Master-Slave Flip-Flop
•Cuando se utiliza un biestable en situaciones en las que existe realimentación desde la salida hacia la
entrada a través de otros circuitos, esta realimentación puede provocar que el flip flop cambie sus esta-
do más de una vez en un ciclo de reloj.
Flip-Flop J-K-
Resumen de Flip-Flop
Registros
Un flip-flop D almacena un único bit de información. Un grupo de N bits, que forman una palabra puede
almacenarse en N flip-flops D organizados. Esta disposición se conoce como registro.
La información de las entradas Di se carga en el registro cuando las señales de Escritura y Habilitación
están en su estado alto, en forma sincronizada con la señal de reloj.
Los contenidos del registro pueden leerse en las salidas Q i solo si la línea de habilitación esta en su
estado alto.
Si la línea esta en su estado bajo los buffers de tres estados ubicados a la salida se encuentran
eléctricamente desconectados.
Contador de Modulo-8
Un contador es un tipo distinto de registro, en el que los patrones binarios de salida recorren en secuen-
cia un cierto rango de números binarios
Se utilizan 3 flip-flop J-K en modo T, y cada entrada de reloj se conecta a través de una compuerta Y
con la salida Q de la etapa anterior, lo que divide la frecuencia de reloj a la mitad en cada caso.
Como resultado se tiene una cadena de flip flop operando a velocidades que difieren en
potencias de 2, correspondientes a la secuencia de patrones binarios que va de 000 a 111.
El agregado de la línea asincrónica RESET, de funcionamiento activo en estado bajo, que lleva
el contador 000 en forma independiente de los estados del reloj o de la línea de habilitación.
Este diseño se puede extender a tamaños mayores debido a que no se lo trata como una
maquina de estados con propósitos de diseño en las que se enumeran todos los estados. Es
una maquina de estados finitos.
4: Subsistemas de un computador
Objetivos:
Repasar acerca de los componentes estructurales y funcionales Comprender la interrelación de dichos
componentes Identificar buses, como medio de conexión de los componentes. Apreciar aspectos de dise-
ño que afectan las interconexiones:
Estructura y Funcionamiento
• Repasamos: Computador es un sistema complejo
• Naturaleza jerárquica de los sistema complejos.
• Sistema jerárquico: subsistemas interrelacionados. Cada uno de los cuales se organiza en una
estructura jerárquica, hasta el nivel más bajo del subsistema elemental.
• En cada nivel interesa: Estructura y funcionamiento
• Estructura: Modo en que los componentes están interrelacionados.
• Funcionamiento: la operación de cada componente individual como parte de la estructura.
• En términos de descripción: de arriba abajo ( “topdown”) es clara y efectiva (descomponer el siste-
ma.).
Organización funcional
• Funciones básicas de un computador:
– Procesamiento de datos
– Almacenamiento de datos (corto/largo plazo)
– Transferencias de datos (Entrada/salida.- Comunicación de datos).-
– Control ( De las tres anteriores- gestionar y dirigir por medio de instrucciones)
• Número de operaciones posibles que pueden ser realizadas es pequeño.
• Las operaciones básicas pueden parecer absurdamente generalizada, pero:
• “Hay sorprendentemente muy pocas formas de estructuras de computadores que se ajusten a la fun-
ción que va a ser llevada a cabo. En la raíz de esto subyace el problema de la naturaleza de
uso general de computadores, en la cual toda la especialización funcional ocurre cuando se programa y
no cuando se diseña”.
Estructura de una computadora
• Como se interconectan los componentes.
• El computador es una entidad que interactúa con su entorno externo.
• Existen cuatro componentes estructurales principales:
– Unidad Central de Procesamiento (procesador)
– Memoria Principal: almacena datos
– Entrada/Salida transfieren datos entre el computador y el entorno externo
– Sistema de Interconexión: mecanismo de conexión entre la CPU, la memoria y la E/S.
A alto nivel un computador se puede se puede describir:
1) Mediante el comportamiento de cada uno de sus componentes, es decir, mediante los datos y las
señales de control que un componente intercambia con otro.
2) Mediante la estructura de interconexión y los controles necesarios para gestionar el uso de
dicha estructura.
Sub-sistemas de un computador.
La visión de alto nivel es importante dada su capacidad explicativa para facilitar la comprensión de la na-
turaleza de un computador.
1) Es importante además para entender los problemas cada vez mas complejos de evaluación
de prestaciones.
2) Permite tener idea de los cuellos de botella del sistema, los caminos alternativos, la importancia
de los fallos si hay un componente defectuoso
3) Muchas veces los requisitos de mayor potencia y capacidad de funcionamiento tolerante a fallos se
soluciona mediante cambios en el diseño del computador
Diseño de la Arquitectura Von Neuman
Basada en tres conceptos fundamentales:
_Los datos y las instrucciones se almacenan en una sola memoria de lectura-escritura.
_Los contenidos de memoria se direccionan indicando su posición, sin considerar el tipo de dato conteni-
do en la misma.
_La ejecución es secuencial, una instrucción detrás de otra.
Recordamos: Fundamento de esos conceptos: un conjunto pequeño de componentes lógicos básicos
que se combinan para almacenar datos binarios y realizar operaciones matemáticas y lógicas.
Concepto de programa
- Antes para un cálculo concreto, era posible configurar los componentes lógicos de manera especial
para eso.
Se piensa en conectar los componentes para obtener la configuración deseada, se obtiene un programa
cableado (hardwired program)
Secuencia de funciones
Datos aritmético/lógicas Resultados
Códigos de instrucción
Ahora Intérprete de
instrucción
Señales de control
Componentes de una PC
Ciclo de Instrucción
Inicio
Buscar la siguiente
instrucción
Ejecutar la
instrucción
Parar
Ejemplo: Paso 1
Memoria
300 1940
Ejemplo: Paso 2
•Los primeros 4 bits en IR ( primer dígito Hexadecimal) indican que el registro AC (D) se cargará con un
dato proveniente de la dirección especificada
•Los restantes 12 bits de la instrucción especifican la dirección que se va a cargar, 94016.
Memoria
300 1940
Registros de la CPU
5941
301 300 PC
2941
302 0003 D AC
1940
IR
0003
940
0002
941
Ejemplo: Paso 3
–Se incrementa el contador de programa PC y se capta la siguiente instrucción en la dirección 30116.
Memoria
300 1940
Registros de la CPU
5941
301 301 PC
2941
302 0003 D AC
5941
IR
0003
940
0002
941
Ejemplo: Paso 4
El 516 en IR indica que se debe sumar el contenido de una dirección de memoria especificada, en este
caso la dirección es 94116, con el contenido del registro D y almacenar el resultado en el registro AC (D).
Memoria
300 1940
Registros de la CPU
5941
301 301 PC
2941
302 0005 D AC
5941
IR
0003
940
0002
941 3+2=5
Ejemplo: Paso 5
Se incrementa el PC y se busca la siguiente instrucción en 302 16
Memoria
1940
300
Registros de la CPU
5941
301 302 PC
2941
302 0005 D AC
2941
IR
0003
940
0002
941
Ejemplo: Paso 6
El 216 en IR indica que el contenido del registro D se almacena en la dirección 941 16, que está
especificada en los bits restantes de la instrucción.
En este ejemplo, se necesitan 3 ciclos de instrucción, cada uno con un ciclo de búsqueda y un ciclo de
ejecución.
Memoria
300 1940
Registros de la CPU
5941
301 302 PC
2941
302 0005 D AC
2941
IR
0003
940
0005
941
Ciclo de instrucción
Con este ejemplo podemos ahora tener una visión más detallada del ciclo de instrucción básico. El ciclo
de ejecución de una instrucción puede ocasionar mas de una referencia a memoria.
Además, en lugar de referencias a memoria, una instrucción puede referencia una operación de E/S.
La figura siguiente está en forma de diagrama de estados.
Para cualquier ciclo de instrucción dado, algunos estados pueden no estar y otros pueden repetirse.
Diagrama de estados del ciclo de instrucción(1)
Diagrama
de estados
1. Cálculo
de la direc-
ción de la
instruc-
ción: (IAC) determina la dirección de la siguiente instrucción
a ejecutarse.
•En el primer paso, la CPU busca la instrucción en memoria. Para esto copia el valor del PC al MAR y de
ahí al bus de direcciones. La UC envía las señales necesarias para una operación de lectura. Se pueden
leer uno ó más bytes. Se colocan en IR.
•Después de buscar la instrucción, la CPU debe incrementar el PC para apuntar a “lo que sigue”. Puede
ser un dato, dirección ó la siguiente instrucción.
El paso siguiente es decodificar la instrucción para saber que operación hacer (suma, resta, etc.). En
este momento la CPU no sólo se entera de la operación, sino también dónde se encuentran los
datos sobre los cuales operar.
Ejemplos adicionales
Simulación de Instrucciones en MSX88
•Ejecutar aplicación MSX88.exe
•Almacenar en memoria:
•e 2000 b8002081c000e0
•Analizar la ejecución ciclo de instrucción a ciclo de instrucción con <F6>
Interrupciones
• Mecanismo mediante el cual se puede interrumpir el procesamiento normal de la CPU.
– Ejecución secuencial de instrucciones de un programa
• Pueden ser de origen interno o externo a la CPU.
¿Porqué Interrumpir?
• Por resultado de una ejecución de una instrucción.
– Ej: desbordamiento aritmético (“overflow”), división por cero, intento de acceder fuera del espacio de
memoria permitido al usuario
• Por un temporizador interno del procesador.
– Generadas por un temporizador interno al procesador. Ej Permite al S.O. realizar ciertas funciones de
manera regular.
• Por una operación de E/S.
– Generadas por un controlador de E/S: para indicar la finalización normal de una operación o para avi-
sar de ciertas condiciones de error.
• Por un fallo de hardware.
– Ej: error de paridad en la memoria, pérdida de energía o falta de alimentación.
– Las interrupciones proporcionan una forma de mejorar la eficiencia del procesador.
– Ej: La mayoría de los dispositivos externos son mucho mas lentos que el procesador.
– Si el procesador esta transfiriendo datos a una impresora utilizando el esquema del ciclo de instrucción
– Después de cada operación de escritura, el procesador permanece ocioso hasta que la impresora ter-
mine su tarea.
– La longitud de esta pausa puede ser del orden de muchos cientos o incluso miles de ciclos de instruc-
ción que no implican acceso a memoria, esto supone un derroche de CPU.
– Si se utilizan interrupciones el procesador puede dedicarse a ejecutar otras instrucciones mientras una
operación de E/S está en curso.
Interrupciones
• Proporcionan una forma de mejorar la eficiencia del procesador.
• Ej.: los dispositivos externos son mucho mas lentos que el procesador
• El procesador está transfiriendo datos a una impresora basado en el ciclo de instrucción.
• Después de cada operación de escritura, el procesador queda ocioso hasta que se complete la escritu-
ra.
• Esta pausa puede ser del orden de cientos o incluso miles de ciclos de instrucción que no implican ac-
ceso a memoria.
• Esto supone un derroche en el procesador.
Ciclo de instrucción e interrupciones
Para permitir el uso de interrupciones resultan:
Tres pasos:
• Captación
• Ejecución
• Gestión de interrupciones
• El programa de usuario llega a la 2da llamada WRITE, antes que la operación E/S generada por la 1er
llamada se complete.
• El programa de usuario se detiene en ese punto
• Cuando la operación E/S precedente se completa, esta nueva llamada a escritura se puede procesar, y
se inicia una nueva llamada de E/S y se puede iniciar una nueva operación de E/S.
• Existe una mejora porque parte del tiempo durante el cual la operación de E/S está en marcha se sola-
pa con la ejecución de instrucciones de usuario.
Jerarquía de interrupciones
Si hay múltiples fuentes se establece cuales son mas importantes
• No enmascarables: No pueden ignorarse.
– Indican eventos peligrosos o de alta prioridad.
• Enmascarables: Pueden ser ignoradas.
– Con instrucciones inhibimos su ocurrencia.
Interrupciones múltiples (1)
• Un programa puede estar recibiendo datos a través de una línea de comunicación e imprimiendo resul-
tados. La impresora generará interrupciones cada vez que complete una operación de escritura.
• Se presentan 2 alternativas para tratar este tipo de interrupciones
• Interrupciones inhabilitadas
• El procesador puede y debe ignorar la señal de petición de interrupción.
• Si se hubiera generado una interrupción se mantiene pendiente y se examinará luego una vez que se
hayan habilitado nuevamente.
• Ocurre una interrupción, se inhabilitan, se gestiona la misma y luego se habilitan otra vez.
• Por lo tanto las interrupciones se manejan en un orden secuencial estricto.
• Inconvenientes: NO tiene en cuenta prioridades relativas, ni las solicitudes con un tiempo critico. Ej:
Llega una entrada desde la línea de comunicación esta debe tramitarse para dejar espacio a la sgte, ……
Procesamiento de interrupciones
Interrupciones múltiples
Otra alternativa:
Definir prioridades
• Una interrupción de prioridad más alta puede interrumpir a un gestor de interrupción de prioridad
menor.
• Cuando se ha gestionado la interrupción de prioridad más alta, el procesador vuelve a las interrupcio-
nes previas (de menor prioridad).
• Terminadas todas las rutinas de gestión de interrupciones se retoma el programa del usuario.
Procesamiento de interrupciones anidadas (priorización)
Reconocimiento de interrupciones
• Interrupciones multinivel
– Cada dispositivo que puede provocar interrupción tiene una entrada física de interrupción conectada a
la CPU.
– Es muy sencillo, pero muy caro.
• Línea de interrupción única
– Una sola entrada física de pedido de interrupción a la que están conectados todos los dispositivos.
– Tiene que “preguntar” a cada dispositivo si ha producido el pedido de interrupción (técnica Polling).
• Interrupciones vectorizadas
– El dispositivo que quiere interrumpir además de la señal de pedido de interrupción, debe colocar en el
bus de datos un identificador (vector).
– Lo puede poner el periférico directamente, o bien un controlador de interrupciones (que se ocupa de
todo).
Escenario de trabajo
• El procesador tiene una única entrada de pedido de interrupciones.
• Si tenemos varios productores de interrupciones
¿Cómo lo solucionamos?
– Dispositivo controlador de interrupciones (PIC)
Conexionado
Módulos de un computador
Líneas de datos: Constituye el bus de datos. Puede incluir entre 32 y cientos de líneas.
Cada línea sólo puede transportar un bit a la vez
Anchura del bus: factor clave a la hora de determinar las prestaciones del sistema. Si el bus de datos
tiene 8 líneas y las instrucciones son de 16 bits, que hace el procesador cuando accede al módulo de
memoria.
Líneas de dirección: Designan la fuente o el destino del dato, situado en el bus de datos
Anchura del bus de direcciones: Determina la máxima capacidad de memoria posible en el
sistema Se usan además para direccionar los puertos de E/S
Líneas de control: Controlan el uso y acceso a las otras líneas. Las señales de control transmiten: ór-
denes e información de temporización entre los módulos.
Las de temporización: indican la validez de los datos y las direcciones.
Las señales de órdenes: especifican las operaciones a realizar:
1. Escritura en memoria (Memory write)
2. Lectura de memoria (Memory Read)
3. Escritura de E/S (I/O Write)
4. Lectura de E/S (E/S Read)
5. Transferencia reconocida (Transfer ACK)
6. Petición del bus (Bus request)
7. Cesión de bus (Bus grant)
8. Petición de ininterrupción (Interrupt request)
9. Interrupción reconocida (Interrupt ACK)
1. Reloj (clock): se utiliza para sincronizar las operaciones
Ventajas:
Acerca al procesador los dispositivos que exigen prestaciones elevadas
Al mismo tiempo es independiente del procesador.
Los cambios en la arquitectura del procesador no afectan al bus de alta velocidad y viceversa.
5: Subsistema CPU
Introducción.
• Repertorio de instrucciones en lenguaje maquina: Un punto de encuentro para el disenador del compu-
tador y el programador.
• Punto de vista del diseñador: El conjunto de instrucciones maquina informa de las especificaciones
funcionales de la CPU: implementar la CPU es una tarea que implica implementar el set de inst.
• Punto de Vista del programador: Quien se maneja en lenguaje ensamblador se hace consciente de
la estructura de registros y memoria, de los tipos de datos y del funcionamiento de la ALU.
• La descripción del repertorio de inst. maquina es un paso mas hacia la explicacion de la CPU del com-
putador.
• Objetivos:
• Que hace una instruccion ?
• Examinar y reconocer los distintos tipos de operandos.
• Reconocer los distintos tipos de operaciones que pueden especificarse mediante instrucciones maqui-
na.
Que es el repertorio de intrucciones?
• Es la coleccion de instrucciones distintas que son ejecutadas por la CPU.
• El funcionamiento de la CPU esta determinado por las instrucciones que ejecuta.
• Cada instruccion debe contener la informacion que necesita la CPU para su ejecucion.
• Codigo de maquina
• Lenguaje binario
• Usualmente representada por codigo assembler
Diagrama de estados de un ciclo de instrucción ( 1 )
0 1 39
Bit de Signo
0 8 19 20 28 39
Tipos de instrucciones
• Instruccion en BASIC o Fortran. Por ej.:
—X=X+Y
• X=513 ; Y = 514 ( Corresponden a posiciones )
• Como realizarlo con instrucciones de maquina?
• Puede necesitar de tres instrucciones maquina
Tipos de instrucciones
• Cuales tipos incluir en un computador?
• Debiera existir un conj. que permitiese al usuario formular cualquier tarea de procesamiento de datos.
• O bien: Cualquier programe escrito en Alto nivel debe poder traducirse a lenguaje maquina para ser
ejecutado.
• De acuerdo a lo anterior se clasifican en:
A) De Procesamiento de Datos: Instrucciones aritmeticas y logicas ( en registros de la CPU)
B) De almacenamiento de datos: Instrucciones de memoria
C) De transferencia de datos: Instrucciones de I/O
D) De control: Instrucciones de comprobacion y de bifurcacion ( para testear el valor de una palabra o el
estado de un calculo/ para bifurcar a diferentes conj. de instrucciones)
Número de direcciones de una inst. (a)
• Permite describir la arquitectura de un procesador en termino del nro. de direcciones conte-
nidas en cada instrucción.
• Esta dimensión pierde significación a medida que crece la complejidad del diseño de la CPU.
• Cual es el numero maximo de direcciones que serian necesarias en una instruccion? ? Cuatro ?
Porque ?
• 3 direcciones
—Operando 1, Operando 2, Resultado
—a = b + c;
—No son comunes
—Necesitan formatos relativamente largos para albergar las tres referencias
—Es implicita la direccion de la instruccion siguiente ( se obtiene a partir del Contador del Programa )
Número de direcciones (b)
• 2 direcciones
—Una de las direcciones debe hacer el servicio doble de uno de los operandos y del resultado.
—a = a + b SUB Y, B
—Reduce la longitud de la instruccion
—Requiere algun trabajo extra
– Almacenamiento temporario para algunos resultados
• 1 direccion
—Una segunda direccion debe estar implicita
—Usualmente era el registro acumulador (AC)
—Esquema comun en las primeras maquinas
Número de direcciones (c)
• 0 (cero) direcciones
• Todas las direcciones son implicitas
—Usan una pila
—Pila: Conjunto de posiciones del tipo last-in-first-out (el ultimo en entrar es primero en salir).
—e.j. push a
— push b
— add
— pop c
—La pila esta en una posicion conocida
—A menudo los dos elementos de su cabecera están en registros del procesador.
• General – 1 byte, de palabra (16 bits), palabra doble ( 32 bits), y cuadruple (64) con contenido bina-
rio arbitrario
• Entero - Valor binario con signo contenido en 1 Byte (C 2)
• Ordinal - Un entero sin signo contenido en un byte , 1 palabra o una doble palabra.
• BCD desempaquetado - Un digito en cada byte
• BCD empaquetado - 2 digitos BCD por byte valor en el rango 0 a 99.
• Puntero de proximidad – 32 bits que representa el desplazamiento dentro de un segmento
• Campo de bits. Una secuencia contigua de bits, cada posicion es independiente
• Cadena de bytes. Secuencia contigua de bytes, de palabras, o palabras dobles, que contiene de 0 a 2
32 -1 bytes.
Tipos de datos del Pentium
• Coma flotante. Existen una variedad de ellos, todos utilizados por la unidad de coma flotante.
• Las instrucciones de coma flotante pueden operar con enteros y con enteros decimales empaquetados,
asi como numeros en coma flotante.
• Los enteros con signo estan en representacion C2 y pueden ser de 16,32 o 64 bits.
• Los enteros decimales empaquetados se almacenan en representacion signo-magnitud con 18 digitos
en el rango de 0 a 9.
• Las representaciones en coma flotante se ajustan al formato IEEE 754.
• Ver tabla 9.2.- Pag. 322 Stallings y Figura 9.4 ( Pag.. 323). Varia segun la edicion del libro
Pentium Floating Point Data Types
Tipos de operaciones
• El nro de Codops diferentes varia ampliamente de una maquina a otra.
• En todas las maquinas se encuentran tipos generales de operaciones:
• 1) Transferencia de datos
• 2) Aritmeticas
• 3) Logicas
• 4) De conversion
• 5) De E/S
• 6) De control del sistema
• 7) De control de flujo.
Tipos de operaciones: Transferencia de datos
• Es el tipo mas basico de instruccion
• Debe especificar
—1)Posiciones del operando fuente/origen
—Posiciones del operando destino
– Podrian ser de memoria, un registro o la cabecera de una pila.
—2)Longitud de los datos a transferir
—3)El modo de direccionamiento para cada operando.
• Puede haber diferentes instrucciones para diferentes
modelos: e.j. IBM S/370
—Se sustituye cada byte por el contenido del elemento de la tabla indexadada por dicho byte.
—Por ej.: Para convertir de EBCDIC a ASCII
Tipos de operaciones: Entrada/Salida
• Las instrucciones admiten aproximaciones muy diversas.
• Incluyen E/S programadas aisladas.
• Incluyen E/S programadas asignadas en memoria.
• Instrucciones de movimiento de datos (mapeo de memoria )
• Puede ser hecha mediante un controlador separado (DMA).
• Muchas implementaciones ofrecen solo unas pocas inst. de E/S con acciones especificas indicadas me-
diante parametros, codigos o palabras de ordenes.
a) Bifurcación (“Salto”).
• Las maquinas poseen un codigo de condicion de uno o varios bits, que se actualiza luego de una ope-
racion.
• Ejemplo: Se ejecuta el salto (se actualiza el PC con la direccion especificada en el operando) si se cum-
ple la condicion.
• Sino se cumple se ejecuta la instruccion siguiente de la secuencia ( se incrementa el PC de forma habi-
tual).
—BRZ X (saltar a X si el resultado es cero)
—BRP X ( saltar a la posicion X, si el resultado es positivo)
—BRN X (saltar a X si el resultado es negativo)
—BR0 X (saltar a la posicion X, si el resultado es desbordamiento)
— Resultado: referencia a la ultima operación ejecutada que afecte al código de condición.
—Otro ejemplo con inst. de 3 direcciones:
—BRE R1, R2, X Saltar a X si el contenido de R1 = R2
Instrucciones de bifurcación
Control de flujo o transferencia de control
b) Salto implícito (“SKIP”). Incluye una direccion de manera implicita. Implica que se va a saltar una
instruccion
• La direccion implicita es igual a la direccion de la siguiente instruccion mas la longitud de una instruc-
cion.
• Ej. Instruccion “incrementar y saltar si es cero” (ISZ)
—ISZ Register1
—301 ( R1 se fija a un valor negativo)
—.
—.
—309 ISZ R1
—310 BR 301
—311
Tipos de operaciones: Control de flujo o transferencia de control
c) Llamada a procedimiento
• Procedimiento : programa autoconsistente que se incorpora en uno mas grande.
• Razones de su uso:
—Economia y modularidad
—Economiza esfuerzo de programacion y hace mas eficiente el uso del espacio de memoria.
• Dos instrucciones basicas: “Call”, “Return”.
—c.f. llamada de interrupcion
Procedimientos anidados
• No se requieren parentesis.
Pilas: Evaluacion de expresiones.
Ventaja: Una expresion con este formato es facil de evaluar usando una pila.
Se recorre la expresion de izquierda a derecha.
Se aplican las siguientes reglas:
1.- Si el elemento es una variable o constante, se introduce en la pila.
2.- Si es un operador, se extraen de la cabecera de la pila los dos operandos, se realiza la operacion y se
apila el resultado.
El resultado se obtiene en la cabecera de la pila.
Muchos compiladores, partiendo de expresiones en alto nivel las convierten a notacion postfija y generan
las instrucciones maquina a partir de esta notacion.
Pilas: Evaluacion de expresiones.
Secuencia de instrucciones de maquina: para evaluar
f = ( a – b )/(c+d x e ).
La notacion postfija ha servido de guia para generar las instrucciones de maquina.
La secuencia de eventos, producidos por el programa en la pila se ilustra en la sig. Figura:
Utili-
za-
ción
de la
pila
para
cal-
cular
f
•Orden coherente: Los procesadores “Big-endian” almacenan en el mismo orden los enteros y las ca-
denas de caracteres ( el byte mas signif. primero).
2. El numero de bit mas bajo lo asignamos al bit menos significativo del byte ( little-endian) o al mas
significativo
( big-endian)?
No hay respuestas iguales para todas las maquinas
El programador necesita ser consciente para manipular los bits de manera individual.
Otro aspecto: transmision de datos a traves de una linea serie.
Cuando se transmite un byte individual . envia el sistema primero el bit mas significativo, o el menos
significativo?
El diseñador debe asegurarse de que los bits recibidos son correctamente tratados.
Standard…What Standard?
• Pentium (80x86), VAX are little-endian
• IBM 370, Moterola 680x0 (Mac), and most RISC are big-endian
• Internet is big-endian
—Makes writing Internet programs on PC more
awkward!
—WinSock provides htoi and itoh (Host to Internet & Internet to Host) functions to convert
Direccionamiento:
• El campo de direcciones en un formato de instrucción esta bastante limitado.
• Seria deseable referenciar un rango elevado de posiciones en memoria principal o de memoria virtual.
• Existen diversas técnicas:
• Compromiso entre:
—Rango de direcciones y/o flexibilidad de direccionamiento
—Numero de referencias a memoria y/o complejidad de calculo de las direcciones.
Modos de direccionamiento
• 1.- Inmediato
• 2.- Directo
• 3.- Indirecto
• 4.- Registro
• 5.- Indirecto con registro
• 6.- Con desplazamiento (Indexado)
• 7.- Pila
Notación a utilizar:
A= Contenido de un campo de dirección en la instrucción.
R= Contenido de un campo de dirección en la instrucción que referencia un registro.
EA= Dirección real (efectiva) de la posición que contiene el operando que se referencia.
(X)= Contenido de la posición X.
Consideraciones:
• Prácticamente todas las arquitecturas ofrecen mas de uno de estos modos.
• Problema a resolver: Como determina la unidad de control que modo de direccionamiento se esta utili-
zando en cada instrucción.?. Surgen diversas alternativas:
—Codops diferentes emplean modos distintos
—Uno o mas bits pueden utilizarse como campo de modo.
—Este campo de modo indica que tipo de direccionamiento
• Otra cuestión: Dirección efectiva (EA).
—Sin memoria virtual: La EA es una dirección de memoria principal o un registro
—Con memoria virtual: La EA es una dirección virtual o un registro.
La correspondencia real con una dirección física dependerá del mecanismo de paginación.
—No esta por tanto visible al programador.
Direccionamiento inmediato
a) Modo de direccionamiento inmediato
Codop Operando
•Este modo puede utilizarse para definir y utilizar constantes, o para fijar valores iniciales de variables.
•Normalmente el número se almacena en complemento a dos; el bit más a la izquierda del campo ope-
rando se utiliza como bit de signo.
• El operando está en realidad presente en la propia instrucción:
• Operando = A
• e.j. ADD 5
—Suma 5 al contenido del acumulador
—5 es el operando
• No se requiere una referencia a memoria para obtener el operando, ahorrándose un ciclo
• Rápido / Mas sencilla
• Desventaja: Rango limitado. Tamaño del nro limitado a la long. del campo de direcciones, que es pe-
queño comparado con la longitud de la palabra
Direccionamiento indirecto
• Problema del modo anterior: La long. del campo de direcciones es normalmente < la longitud de la pa-
labra- > limita el rango de direcciones.
• El campo de direcciones referencia la dirección de una palabra de memoria
• La palabra de memoria contiene la dirección completa del operando
• EA = (A)
—Mira en A, encuentra el contenido de A (A) y busca allí el operando
• e.j. ADD (A)
—Agrega el contenido de la celda apuntada por el contenido de A al acumulador
Instrucción
A
Memoria
• Es análogo al indirecto
• EA = (R)
• El operando está en una celda de memoria referenciada mediante el contenido del Registro R
• La limitación del espacio se supera: haciendo que R, referencie a una posición de palabra completa (
un registro), que contenga la dirección.
• Emplea una referencia menos a memoria que el
direccionamiento indirecto.
Diagrama de Direccionamiento Indirecto con Registro (5.2)
Instrucción
Codop Registro de dirección R
Memoria
Registros
Memoria
Registros
Direccionamiento relativo
• Es una versión del direccionamiento con desplazamiento
• R= Contador de programa, PC
• La dirección de instrucción actual se suma al campo de direcciones
• EA = A + (PC): La dirección efectiva es un desplazamiento relativo a la dirección de la instrucción.
• i.e. Toma el operando de la celda A a partir de la localización corriente apuntada por el PC
• Si la mayoría de las referencias a memoria están próximas a la instrucción en ejecución, permite
ahorrar bits de direcciones en la instrucción.
Direccionamiento con Registro Base (6.2)
• Interpretación: El registro referenciado contiene una dirección de memoria
• Y el campo de dirección contiene un desplazamiento desde dicha dirección
• Este desplazamiento es una representación entera sin signo
• R contiene un apuntador a la dirección de memoria base
• R (la referencia a registro) puede ser explícita o implícita
Direccionamiento indexado (6.3)
• Es opuesto a la interpretación del registro-base.
• Registro referenciado contiene un desplazamiento positivo
• Campo dirección es una dirección de memoria principal=> contiene + bits que un campo de direccio-
nes de una instr. comparable que emplee el método anterior
• El método para calcular EA en ambos es igual en ambas variantes
• A = base
• R = contiene un desplazamiento positivo desde esa dirección
• EA = A + R
• Las referencias a registro pueden ser explicitas o implícitas.
• Mecanismo eficiente para ejecutar operaciones iterativas.
— EA = A + R
— R++
Direccionamiento indexado (6.4)
• Ejemplo: Dado una lista de nros. almacenados a partir de la posición A .
• Se quiere sumar 1 a cada elemento de la lista.
• Se necesita-> captar c/elemento, sumar 1 y memorizar el resultado.
• La secuencia de direcciones efectivas necesarias es:
• A, A+1, A+2, ….
• El valor A se almacena en el campo de dirección de la instrucción;
• El registro elegido (registro índice) se inicializa a 0.
• Luego de c/operación, el registro se incrementa en 1.
• Esta operación puede hacerse automáticamente, como parte del ciclo de instrucción (autoindexado).
Direccionamiento indexado (6.5)
• Algunos sistemas la utilizan automaticamente como parte del ciclo de instrucción (
autoindexado)
• Autoindexado con incremento:
• EA = A + (R) .
• (R)<- (R) + 1;
Combinaciones (6.5)
• Algunas máquinas disponen de direccionamiento tanto indirecto como indexado, y es posible
utilizarlos a ambos.
• Hay dos posibilidades de indexación:
• Post-indexado (la indexación se realiza después de la indirección)
• EA = (A) + (R)
• Pre-indexado (la indexación se realiza antes de la indirección)
• EA = (A+(R))
• Un repertorio no incluye el pre-indexado y el post-indexado simultáneamente.
Direccionamiento de Pila (7)
• Pila: Matriz lineal de posiciones
• Los elementos se añaden en la cabecera.
• La pila tiene asociado un puntero, cuyo valor es la dirección de la cabecera o tope de la pila.
• El puntero de pila se mantiene en un registro.
• Operando está (implícitamente) en el tope de la pila.
• Son de hecho, direcciones de acceso indirecto con registro.
• Las instrucciones maquina no necesitan incluir una referencia a memoria, operan implícitamente con la
cabecera de la pila.
• Bastante comunes en microprocesadores.
Modos de direccionamiento del Pentium
II
• Mecanismo de traducción de direcciones del Pentium II roduce una dirección,
• Denominada “dirección virtual o efectiva”: es un desplazamiento dentro de un segmento.
• 12 modos de direccionamiento disponibles para permitir la ejecución eficiente de lenguajes de alto ni-
vel.
—Inmediato
—Registro
—Con desplazamiento
—Base
—Base con desplazamiento
—Indice escalado con desplazamiento
—Base con índice y desplazamiento
—Base con índice escalado y desplazamiento
—Relativo
• Direccionamiento de bifurcaciones
— Absoluto
— Relativo
— Indirecto
• Instrucciones aritméticas.
— Operando debe estar en un registro o bien formar parte de la
instrucción.
— Para las operaciones aritméticas en coma flotante, todos los operandos se encuentran en registros de
coma flotante, solo se utiliza
direccionamiento de registros.
PowerPC Memory Operand Addressing Modes
6: Subsistema Memoria
• Es un conjunto de registros numerados (direccionados) en forma consecutiva, cada uno de los cuales
normalmente almacena un byte de información.
• Cada registro tiene una dirección, que se suele designar como locación de memoria.
• Los tamaños de palabra típicos son de 16, 32, 64 y 128 bits, siendo el tamaño de palabra de 32 bits el
mas común para las computadoras usadas hoy en dia.
-Cuando
se utili-
zan pala-
bras de
mas de
un byte,
hay dos
alternati-
vas en
cuanto a
la forma
de alma-
cenar
sus bytes en memoria, en la 1ra de ellas, el byte mas significativo se almacena en la dirección más baja
de memoria (big endian) y en la otra el byte menso significativo es el que se almacena en la dirección
más baja de memoria (little endian).
-El numero que identifica en forma univoca cada palabra se define como su dirección
-Dado que las direcciones se cuentan en secuencia, a partir de cero, la dirección más alta corresponde a
una unidad menos que el tamaño de la memoria. La ultima dirección de una memoria de 2 32 bytes es 232
– 1, en tanto que la 1ra dirección es 0.
Memoria II • El programador puede acceder a un byte de memoria ubicado en cualquier posición
en el rango de 0 a 232 – 1.
• El espacio de direcciones de la arquitectura de este ejemplo esta dividido en diferentes sectores, los
que se utilizan para el sistema operativo, para los elementos de entrada-salida, para los programas del
usuario y para la pila del sistema.
• La distribución de estos sectores forma el mapa de memoria, el cual puede diferir entre una implemen-
tación y otra, y esta es una de las causas por las cuales algunos programas compilados para el mismo
tipo de procesador pueden no ser compatibles entre sistemas.
JE-
RARQUIA DE MEMORIAS
Las restricciones de diseño de la memoria de un computador se pueden resumir en tres cuestiones
¿ cuanta capacidad? ¿Cómo de rápida? ¿De que coste?
En todo el espectro de posibles tecnologías se cumplen las siguientes relaciones:
• A menor tiempo de acceso, mayor costo por bit.
• A mayor capacidad, menor costo por bit.
• A mayor capacidad, mayor tiempo de acceso.
•A medida que se recorre la estructura jerárquica, se obtiene una mayor eficiencia a cambio de un ma-
yor costo.
•En la cima del la jerarquía se encuentran los registros, de velocidad similar a la de la unidad de proce-
so, pero grandes y consumidores de una importante cantidad de energía de alimentación.
•Al fondo de la jerarquía aparecen las memorias secundarias y los elementos de almacenamiento “off
line” en los que el costo por bit almacenado es bajo en términos monetarios y de energía consumida,
pero cuyo tiempo de acceso es muy alto comparado con el de los registros.
•cuando se desciende en la jerarquía ocurre:
Disminuye el costo por bit
Aumenta la capacidad
Aumenta el tiempo de acceso
Disminuye la frecuencia de accesos a la memoria por parte del procesador
Características
• Duración de la información:
Memorias volátiles: RAM
Memorias no volátiles: discos, cintas
Memorias permanentes: ROM, EPROM
• Modo de acceso:
Acceso por palabra: memoria principal
Acceso por bloque: discos, caché
• Velocidad
– Memorias semiconductoras:
– Tiempo de acceso: tiempo máximo que transcurre desde que se inicia la operación de lect/escritura
hasta obtener/almacenar el dato.
– Tiempo de ciclo: tiempo mínimo que tiene que haber entre dos operaciones sucesivas sobre la memo-
ria tciclo > tacceso
• Memorias magnéticas:
– Tiempo de acceso: tiempo de posicionar el cabezal + tiempo de latencia (+ tiempo de lectura)
– Velocidad de transferencia: bytes/seg
• Métodos de acceso
Acceso aleatorio: el tiempo para acceder a una locación dada es independiente de la secuencia de acce-
sos anteriores y es constante. Ejemplo la memoria principal.
Acceso secuencial: el acceso debe hacerse en una secuencia lineal específica. Variable. Ejemplo son las
unidades de cinta.
• Métodos de acceso
Acceso directo: los bloques ó registros individuales tienen una dirección única que se basa en la localiza-
ción física. Variable. Ejemplo los discos magnéticos.
Acceso asociativo: memoria caché
Memoria de Acceso Aleatorio
• El término aleatoria significa que puede accederse a cualquier celda de memoria en el mismo tiempo,
independientemente de su posición en la estructura de la memoria.
• En la figura muestra el comportamiento funcional de una celda de memoria RAM utilizada en una com-
putadora típica.
• Los circuitos de memoria de acceso aleatorio basados en flip flops, se conocen como circuitos de me-
moria estática (SRAM, static RAM), debido a que el contenido de cada posición de la memoria se mantie-
ne en tanto se mantenga la alimentación eléctrica del circuito integrado.
MEMORIA CACHE
PRINCIPIOS BÁSICOS
• El objetivo de la memoria cache es lograr que la velocidad de la memoria sea los más rápida posible
• Hay una memoria principal relativamente grande y más lenta, junto con una memoria cache más pe-
queña y rápida
• La cache contiene una copia de partes de la memoria principal
• Cuando el procesador intenta leer una palabra de memoria, se hace una comprobación para determi-
nar si la palabra está en la cache.
• Si es así, se entrega dicha palabra al procesador, Si no, un bloque de memoria principal, consistente
en un cierto número de palabras, se transfiere a la cache y, después, la palabra es entregada al proce-
sador.
MEMO-
RIAS
EXTER-
NAS
• DIS-
COS
MAG-
NETI-
COS
1. DIS-
CO RÍ-
GIDO
2.
DISKE-
TTE
3. PEN
DRIVE
4. CINTA MAGNÉTICA
• MEMORIA OPTICA
1. CD-ROM
2. DVD
Discos magnéticos
• Platos
• Superficies de Al cubiertos con óxido de
Fe, material magnético.
- Ahora también se usa vidrio
· Se dilata menos que el Al.
· Superficie más uniforme.
· Reducción de defectos superficiales
Discos magnéticos
• Principios físicos
• Pequeñas áreas del disco son magnetizadas en diferentes direcciones por un transductor.
• Debe existir un movimiento relativo entre disco y el transductor al momento de la lectura/escritura.
Mecánica de
lectura y es-
critura
• Lectura y
escritura
realizadas a
través de
una cabeza
transductora
(bobina).
• Durante
lectura/es-
critura, la
cabeza es estacionaria y el plato gira.
• Se almacenan ceros y unos por medio de la magnetización de pequeñas áreas del material.
Organización de los datos
_ Anillos concéntricos: pistas ó tracks.
· Espacios (gaps) entre pistas
· Reducir gaps para aumentar capacidad
· Mismo No de bits por pista
· Velocidad angular constante
_ Pistas divididas en sectores
_ Mínimo tamaño de bloque: sector
_ Bloque: más de un sector (cluster)
Pista y Sector
Características posibles
_Cabeza fija (raro) o móvil.
_Disco removible o fijo.
_Simple ó doble lado.
_Uno ó múltiples platos.
_Mecanismo de cabeza:
· Contacto (Floppy)
· Distancia Fija
· Aerodinámica (Winchester)
Platos y cabezas
Ci-
lin-
dros
Estructura de un disco
Múltiples platos
_Una cabeza por cara
_Todas las cabezas se mueven solidariamente
_Pistas alineadas en cada plato forman cilindros
_Datos son almacenados por cilindros
· Reduce movimientos de cabezas
· Aumenta velocidad de respuesta
Velocidad de giro del disco
Un bit más cercano al centro gira más lento que un bit en la periferia.
Los bits (sectores) ocupan distinto espacio en diferentes pistas.
_ En lectura o escritura se requiere sólo mover la cabeza hasta una pista y esperar un sector.
_ Determina la velocidad de transferencia de datos (bits/seg).
Tiempos
_Tiempo de seek (búsqueda) Mover al cilindro (o pista) correcto
_Tiempo de latencia (por rotación) Esperar que el sector “pase” por debajo de la cabeza
_Tiempo de Acceso: T.seek + T.latencia
_Tiempo Total: T. de Acceso + T. de Transferencia de datos
Capacidad del disco: cálculo
MICROOPERACIONES
Hemos visto que la operación de una computadora, al ejecutar un programa, consiste de una secuencia
de ciclos de instrucciones, con una instrucción de máquina por ciclo. Por supuesto, nosotros debemos
recordar que esta secuencia de ciclos de instrucciones no es necesariamente la misma que la secuencia
escrita de las instrucciones que compone el programa, debido a la existencia de instrucciones de
bifurcación. Lo que nos estamos refiriendo es al tiempo de secuencia ejecución de las instrucciones.
Hemos visto además que cada ciclo de instrucción está compuesto de varias unidades más pequeñas.
Una subdivisión que encontramos es la captación, indirecto, ejecución, e interrupción, con única
captación y se ejecutan los ciclos siempre en secuencia.
En nuestra discusión sobre el proceso de encauzamiento, nosotros empezamos viendo que se puede
hacer una descomposición adicional. En realidad, veremos que cada uno de los ciclos más pequeños
suponen una serie de pasos y cada uno de los registros de procesador. Nos referiremos a éstos pasos
como las microoperaciones. El prefijo micro se refiere al hecho de que cada paso es simple y realiza
muy poco. La figura 15.1 muestra la relación entre el varios conceptos que hemos estado discutiendo.
Para resumir, la ejecución de un programa consiste de la ejecución consecutiva de las instrucciones.
Cada instrucción se ejecuta durante un ciclo de instrucción compuesto de los subciclos más cortos ( por
ejemplo, captación, indirecto, ejecución, interrupción ). La ejecución de cada subciclo supone de una o
más operaciones cortas, es decir, las microoperaciones.
Las microoperaciones son las operaciones funcionales, o atómicas de un procesador. En esta sección,
examinaremos la microoperaciones para ganar una comprensión.
Los eventos de cualquier ciclo de instrucción se pueden describir como una secuencia de tales
microoperaciones.
El ciclo de captación
Empezamos observando al ciclo de captación, que ocurre al comienzo de cada instrucción por un ciclo y
porque causan una instrucción que se trae de la memoria.
• Registro de dirección a memoria (MAR): Están conectados a las líneas de dirección del sistema
ómnibus. Especifica la dirección en memoria para una operación de lectura o escritura.
• El registro de almacenamiento temporal (MBR): Están conectados a la línea de datos del ómnibus
de sistema. Contiene el valor para ser guardado en memoria o el último valor lee de memoria.
• El contador de instrucción (PC): Contiene la dirección de la instrucción próxima a ser captada.
• Registro de instrucción (IR): Contiene la última instrucción captada.
A el comienzo del ciclo de captación, la dirección de la instrucción próxima para ejecutarse está en el
contador de programa (PC); en este caso, la dirección es 1100100. El primer paso es para mover esa
dirección al registro de dirección (MAR) de memoria porque esto solo registra una línea de dirección del
ómnibus de sistema. El segundo paso es introducir la instrucción. La dirección deseada (en el MAR) sera
situada en el bus de direcciones
, la unidad de control emite un comando READ en el bus de control, y el resultado aparece en el bus de
datos y se copia en el área de registros de almacenamiento temporal en memoria (MBR). También
necesitamos incrementar el PC por la longitud de instrucción para prepararlo para la instrucción próxima.
Porque estas dos acciones ( leer la palabra de memoria, incrementar la PC ) hace que no interfiera
mutuamente, nosotros le podemos hacer simultáneamente para salvar tiempo. El tercer paso es mover
los contenidos del MBR al registro de instrucción (IR). Esto libera al MBR para el uso durante un posible
ciclo indirecto.
Así, el ciclo de captación simple en realidad consiste de tres pasos y cuatro microoperaciones.
Cada microoperación supone el movimiento de datos en o fuera de un registro. Mientras que estos
movimientos no interfieran con uno a otro, se pueden realizar varios movimientos durante los pasos
mencionados, el tiempo se economiza. Simbólicamente, podemos escribir esto en secuencia de eventos
como las siguientes:
t1 : MAR <- (PC)
t2 : MBR <- Memoria
PC <- PC + I
t3 : IR <- (MBR)
donde I la longitud de instrucción. Necesitamos hacer varios comentarios sobre esta secuencia.
Asumimos que un reloj está disponible y que emite regularmente impulsos de reloj espaciados. Cada
impulso de reloj define una unidad de tiempo. Así, para que cronometre todas las unidades con igualdad
de duración. Cada microoperación se puede ejecutarse dentro de una unidad sencilla de tiempo. La
anotación representa las unidades de tiempo sucesivas. De palabra, tenemos
• Primera unidad de tiempo (t1): Se mueve el contenidos del PC a MAR.
• Segunda unidad de tiempo (t2): Se mueven los contenidos de la dirección de memoria
especificadas por MAR al MBR. Incrementa por I los contenidos del PC.
• Tercera unidad de tiempo (t3): Mueve contenidos de MBR a IR.
Note que las segundas y terceras microoperaciones tienen lugar durante la segunda unidad de tiempo.
La tercer microoperación pudo haber sido agrupado con los cuartos sin afectar la operación de
captación:
t1 : MAR ← (PC)
t2 : MBR ← Memoria
t3 : PC ← PC + I
IR ← (MBR)
El ciclo indirecto
Una vez una instrucción es captada, el próximo paso es llevar operandos de la fuente. Continuando con
nuestro ejemplo simple, nos deja por sabido que en un formato de instrucción de una dirección, se
permite el direccionamiento directo e indirecto. Si la instrucción especifica una dirección indirecta,
entonces el ciclo de ejecución debe preceder del ciclo de captación. Los flujos de datos difieren
en algo de ese indicación.
t1 : MAR ← (IR (dirección))
t2 : MBR ← Memoria
t3 : IR (dirección) ← (MBR(Direccion))
El campo de dirección de la instrucción se transferencia para el MAR. Esto se usa entonces para captar la
dirección del operando. Finalmente, el campo de dirección del IR se actualiza mediante el MBR, de modo
que éste contiene ahora un rango directo antes que una dirección indirecta.
El IR está ahora en el mismo estado como si el direccionamiento indirecto no ha sido usado, y está listo
para el ciclo de ejecución.
El ciclo de Interrupción
A la terminación del ciclo de ejecución, se hace una prueba para determinar si se produjo cualquier
interrupción habilitada. Si es así, ocurre lo que se llama el ciclo de interrupciones. La naturaleza de esto
es que el ciclo varia enormemente de una máquina a otra. Presentamos una secuencia muy simple de
eventos Tenemos:
t1 : MBR ← (PC)
t2 : MAR ← Guardar_direccion
PC ← Rutina_direccion
t3 : Memoria ← (MBR)
En el primer paso, los contenidos de la PC se transfieren al MBR, de modo que estos puedan ser
guardados por el retorno de las interrupciones. Entonces el MAR está cargado con la dirección y se
ahorran los contenidos de la PC, y la PC se carga con la dirección del principio de la rutina del proceso de
interrupciones. Estas dos acciones pueden ser microoperaciones sencillas. Sin embargo, la mayor parte
de los procesadores proporcionan los tipos múltiples y/o niveles de interrupciones, esto puede tener una
o más microoperaciones adicionales para obtener el guardar_direccion y la rutina_direccion antes que
se puedan transferir al MAR y al PC, respectivamente. En todo caso, una vez hecho esto, el paso final es
almacenar el MBR, que contiene el valor viejo del PC, en la memoria. El procesador está listo para
comenzar el ciclo de instrucción próximo.
El ciclo de Ejecución
El ciclo de captación, indirecto,y de interrupción son simples y fáciles de predecir. Cada uno supone una
secuencia pequeña y fijada de las microoperaciones y, en cada caso, las mismas microoperaciones se
repetirán cada vez.
Este no es verdadero un ciclo de ejecución debido a la variedad de códigos de operación, allí están varias
secuencias diferentes de las microoperaciones que puede ocurrir.
Permítanos considerar varios ejemplos hipotéticos.
En primer lugar, considere una instrucción añadida:
ADD R1, X
que añaden contenidos de la dirección X para registrar R1. La secuencia siguiente de las
microoperaciones que podrían ocurrir son :
t1 : MAR ← (IR (dirección))
t2 : MBR ← Memoria
t3 : R1 ← (R1) + (MBR)
Empezamos con el IR conteniendo la instrucción ADD. En el primer paso, la porción de dirección del IR
se carga en el MAR. Entonces se lee la dirección de memoria referenciada. Finalmente, los contenidos de
R1 y MBR son sumados por la ALU. De nuevo, esto es un ejemplo simplificado. Las microoperaciones
adicionales pueden necesitar extraer la referencia del registro del IR y para montar las entradas o
salidas de la ALU en algunos registros intermedios.
Veamos dos ejemplos más complejos. Una instrucción común es el incremento y saltar si cero:
ISZ X
El contenido de la dirección X se incrementa en 1. Si el resultado es 0, salta a la instrucción próxima.
Una posible secuencia de las microoperaciones es
t1 : MAR <- (IR (dirección))
t2 : MBR <- Memoria
t3 : MBR <- (MBR) + 1
t4 : Memoria <- (MBR)
IF ((MBR) = 0) THEN (PC <- (PC) + I )
Se introdujo una nueva característica aquí, que es la acción condicional. La PC se incrementa si (MBR) =
0 . Esta prueba y acción se puede poner en práctica como una microoperación. Note también que esta
microoperación se puede ejecutarse durante la misma unidad de tiempo durante el cual el valor
actualizado en MBR es guardado de vuelta a la memoria.
Finalmente, se considera una subrutina de llamada a la instrucción. Como un ejemplo, se considera una
instrucción de salto y guardado de dirección:
BSA X
El ciclo de instrucción
Hemos visto que cada fase del ciclo de instrucción se puede descomponer en una secuencia de
microoperaciones elementales. En nuestro ejemplo, existe una secuencia para cada ciclo de captación,
indirecto, de interrupción, y, para el ciclo de ejecución, existe una secuencia de microoperaciones para
cada código de operación.
Para completar la pintura, necesitamos unir las secuencias de las microoperaciones en conjunto.
Asumimos que un nuevo registro de 2 bits llama al código de ciclo de instrucción (ICC). El ICC designa el
estado del procesador en los términos de que porción del ciclo si está en:
00: Captación
01: Indirecto
10: Ejecutar
11: Interrumpir
Al final de cada uno de los de cuatro tiempos, el ICC se coloca apropiadamente. El ciclo indirecto sigue
siempre después del ciclo de ejecución. El ciclo de interrupciones está siempre después del ciclo de
captación. Para ambos ciclos, tanto para captación como la ejecución, el próximo el ciclo depende del
estado del sistema.
Así, el diagrama de flujo de la figura 15.3 define la secuencia completa de las microoperaciones,
dependiendo sólo en la secuencia de instrucción y el modelo de interrupciones. Por supuesto, esto es un
ejemplo simplificado. El diagrama de flujo para un procesador real es más complejo. En todo caso,
hemos alcanzado el punto en nuestra discusión en que la operación del procesador está definida como el
desempeño de una secuencia de los microoperaciones. Podemos considerar ahora cómo la unidad de
control que causa esta secuencia para realizar estas acciones.
Requisitos funcionales
Hemos ejecutado ya los pasos 1 y 2. En primer lugar, los elementos funcionales básicos del procesador
son lo siguientes:
• ALU
• Registros
• Caminos de datos internos
• Caminos de datos externos
• Unidad de control
Cierto pensamiento deba convencerle a usted que esto es una lista completa. La ALU es la esencia
funcional de la computadora. Los registros se usan solamente para almacenar datos internos para el
procesador. Ciertos registros contienen la información de estado que necesitan manejar una serie de
instrucciones ( por ejemplo, una palabra de estado del programa ). Otros contienen datos que se cargan
o se obtienen de la ALU, memoria, y módulos de E/S. Los caminos internos de datos se usan para mover
datos entre registros y entre registros y la ALU. Los caminos externos de datos que conectan la memoria
y los módulos de E/S, a menudo se realiza mediante un ómnibus de sistema. La unidad de control causa
las operaciones que suceden dentro del procesador. La ejecución de un programa consiste de
operaciones suponiendo estos elementos de procesador.
Como hemos visto, estas operaciones consisten de una secuencia de las microoperaciones. Sobre la
revisión, el lector debe ver que todas las microoperaciones desembocan en una de las categorías
siguientes:
• Transferencia de datos de un registro a otro.
• Transferencia de datos de un registro a una interfaz externa (por ejemplo, el bus de sistema).
• Transferencia de datos de una interfaz externa a un registro.
• Ejecución una operación aritmética o lógica, usando los registros para entrada y salida.
Todas las microoperaciones necesitan ejecutar un ciclo de instrucción, incluyendo todas las
microoperaciones para ejecutar cada instrucción en el conjunto de instrucciones, incluidas en uno de
estas categorías.
Nosotros ahora podemos ser algo más explícitos sobre la vía en las funciones de unidad de control. .La
unidad de control ejecuta dos tareas básicas:
• Secuencia: La unidad de control causa que el procesador coloque completamente una serie de
microoperaciones en la secuencia apropiada, basada en el programa a ser ejecutado.
• Ejecución: La unidad de control causa que cada microoperación se ejecute.
Señales de control
Nosotros hemos definido los elementos que componen el procesador ( ALU, registros, los caminos de
datos) y las microoperaciones que se ejecutan. La unidad de control ejecuta esta función, que debe
tener entradas que permiten determinar el estado del sistema y las salidas que permiten controlar el
comportamiento del sistema. Éstos son las especificaciones de las partes externas de la unidad de
control. Internamente, la unidad de control debe tener la lógica requerida para ejecutar sus funciones de
secuencia y ejecución.
La figura 15.4 es una unidad de modelo general, mostrando todo de estas entradas y salidas. Las
entradas son:
• Reloj: Así es cómo la unidad de control "mantiene la hora". La unidad de control causa una
microoperación ( o un conjunto de microoperaciones simultáneas ) que se ejecutan con cada impulso de
reloj. Esto es a veces se denomina como el tiempo de ciclo de procesador, o el tiempo de ciclo de
reloj.
• Registro de instrucción: El código de operación y el direccionamiento de la instrucción actual se usa
para determinar que microoperaciones se ejecutan durante el ciclo de ejecución.
• Banderas: La unidad de control necesitan de los flags (banderas) para determinar el estado del
procesador y el resultado previo de operaciones de la ALU. Por ejemplo, para el incremento y salto si es
cero (ISZ), la unidad de control incrementará el PC si se pone la bandera de cero.
• Señales de control desde el bus de control: La porción de bus de control del ómnibus de sistema
proporciona señales a la unidad de control.
Las salidas son las siguientes:
• Señales de control dentro del procesador: Éstos son de dos tipos: aquellos que causan datos para
moverse de un registro para otro, y aquellos que activan las funciones específicas de la ALU.
• Señales de control al bus de control: Éstos también son de dos tipos: señales de control hacia
memoria, y de señales de control hacia los módulos de E/S.
Se usan tres tipos de señales de control: aquellas que activan una función de ALU, aquellos que activan
un camino de datos, y aquellas que son las señales en el ómnibus externo de sistema o otro enlace
externo. Todas estas señales son aplicadas finalmente directamente como entradas binarias a puertas
lógicas individuales.
Consideramos de nuevo el ciclo de captación para ver cómo la unidad de control mantiene control. Las
subsistencias de unidad de control están en alineación de donde está en el ciclo de instrucción. A un
dado punto, sabe que el ciclo de captación se ejecuta después. El primer paso es transferenciar los
contenidos de la PC a la unidad de control MAR. El hacen esto activando el control la señal que abre las
puertas entre los bits de la PC y los bits del MAR. El paso próximo es leer una palabra de memoria en el
MBR e incrementar el contador del PC. La unidad hace esto enviando las señales siguientes de control
simultáneamente:
• una señal de control que abre las puertas, permitiendo los contenidos del MAR en el bus de direcciones
• un control leído de memoria que comunica en el bus de control
• una señal de control que abre las puertas, permitiendo los contenidos del bus de datos para esté
guardado en el MBR
• Controle las señales a la lógica que añade 1 a los contenidos de la PC y almacene el resultado de
vuelta a la PC
Siguiendo este, la unidad de control envía una señal de control que abre puertas entre el MBR y el IR.
Esto completa el ciclo de captación si no fuera por una cosa: La unidad de control debe decidir si
después ejecutar un ciclo indirecto o un ciclo de ejecución. Para decidir esto, examina el IR para ver si
se hace una referencia de memoria indirecta. Los ciclos indirectos y directos trabajan similarmente. Para
el ciclo de ejecución, la unidad de control empieza examinando el código de operación y, basándose en
eso, decide que secuencia de las microoperaciones para ejecutarse para el ciclo de ejecución.
• Caminos de datos: La unidad de control controla el flujo interno de datos. Por ejemplo, en la
captación de instrucción, los contenidos del registro de área de almacenamiento temporal en memoria se
transferencian al registro de instrucción. Para cada camino controlado, existe una puerta ( indicado por
un círculo en la figura ), una señal de control del control unidad temporalmente abre la puerta para dejar
pasar los datos.
• ALU: La unidad de control controla la operación del ALU por un conjunto de señales de control. Estas
señales activan varios controles lógicos para cuidar las puertas Y dentro el ALU.
• Ómnibus de sistema: La unidad de control controla los datos enviados desde y hacia al exterior en
las líneas de control de el sistema que viajan en el ómnibus ( por ejempo, la memoria READ ). La unidad
de control debe mantener el conocimiento de donde está en la instrucción ciclo. Usa este conocimiento,
y lee todo de sus entradas, la unidad de control emite una secuencia de señales de control que puede
causar las microoperaciones. Usa los pulsos de reloj para cronometrar la secuencia de los eventos,
permitiendo el tiempo entre eventos para los distintos niveles.
Tabla Micro operaciones y señales de control.
Micro operaciones Señales de control
Activas
Captación: t1 : MAR ← (PC) C2
t2 : MBR ← Memoria C 5, CR
PC ← (PC) + 1
t3 : IR ← (MBR) C4
Indirecto: t1 : MAR ← (IR (direccion)) C8
t2 : MBR ← Memoria C 5 , CR
t3 : IR(direccion) ← (MBR (direccion)) C4
Interrupción: t1 : MBR ← (PC) C1
t2 : MAR ← Guardar-direccion
PC ← Rutina-direccion
t3 : IR(direccion) ← (MBR (direccion)) C 12, CW
CR = Señal de control READ (Lectura) para el sistema de bus
CW = Señal de control WRITE (Escritura) para el sistema de bus
Esto vale ponderando la naturaleza mínima de la unidad de control. La unidad de control es el motor que
corre la computadora entera. Esto hace que esté basado sólo en el conocimiento las instrucciones para
ejecutarse y la naturaleza de los resultados de la aritmética y las operaciones lógicas ( por ejemplo, el
positivo, overflow, etc.). Nunca llega a ver los datos elaborados o los resultados reales que se
produjeron. Y controla todos los datos con las señales de control dentro del procesador y algunas
señales de control al sistema ómnibus.
Las compuertas y señales de control se utilizan para el movimiento de datos en y del ómnibus de cada
registro. Las señales de control adicionales controlan la transferencia de datos de y hacia el sistema
(partes externas) transporte en el ómnibus y la operación del ALU. Se necesitan dos nuevos registros
para la operación apropiada del ALU. Cuando se da una operación, suponiendo dos operandos que se
ejecutan, uno se puede obtenerse del mismo ómnibus interno, pero el otro se debe obtenerse de otra
fuente. El AC puede ser usado para este propósito, pero este limita la flexibilidad del sistema y no
puede trabajar con un procesador y con los registros de propósito general múltiples. Los registros
temporales proporcionan almacenamiento temporal para la otra entrada. El ALU es un circuito
combinacional sin el almacenamiento interno. Así, cuando controle las señales activa una función de
ALU, la entrada al ALU se transforma en la salida. Así, la salida del ALU no puede unirse directamente al
ómnibus, porque esta salida alimentaría parte posterior de la entrada. El registro z proporciona el
almacenamiento de salida temporal. Con este arreglo, una operación para añadir que un valor de
memoria al AC tendría lo siguiente pasos:
t1: MAR ← (IR(direccion))
t2: MBR ← Memoria
t3: Y ← (MBR)
t4: Z ← (AC) + (Y)
t5: AC ← (Z)
Son posibles otras organizaciones, pero, por lo general, algunos en cierta medida el ómnibus interno o
conjunto de internos ómnibus se usa. El uso de los caminos de datos comúnes simplifica el esquema de
interconexión y el control del procesador. Otra razón práctica para el uso de un ómnibus interno sea
salvar espacio.
Implementación Cableada
La Unidad de Control es un circuito
secuencial, cuyas entradas son:
• Registro de Instrucción
—Cada código de operación genera diferentes señales de control para cada instrucción
• Reloj
—Hay señales de control diferentes en unidades de tiempo diferentes dentro de un único ciclo de
instrucción.
Control Micro-programado
Implementación
• El conjunto de bits de todas las señales de control conformará una palabra de control
Tipos de Micro-instrucciones
— (micro-programación vertical)
—(micro-programación horizontal)
Organización de
una Memoria de
Control
Unidad de
Control
Funcionamiento
de una Unidad de
Control micro-
programada
------------------------------------------------------
Hemos discutido la unidad de control desde el punto de vista de sus entradas, salida, y las funciones.
Nosotros ahora vemos el tema de la ejecución de unidad de control. una variedad amplia de técnicas
que se utilizan. La mayor parte de éstas inician una de las dos categorías:
• Ejecución cableada
• Ejecución microprogramada
En una ejecución cableada, la unidad de control es esencialmente una máquina de estado finito. Sus
señales de lógica de entrada se transforman en un conjunto de las señales lógicaa de salida, que son las
señales de control.
7: Subsistema de Entrada-Salida
Canales de E/S
Los dispositivos de E/S son cada vez más sofisticados
• Ej: tarjetas gráficas 3D.
• Evolución:
1. La CPU controla directamente los periféricos.
2. Se agrega un módulo de E/S o controlador.
3. Idem 2 más llamado de interrupción.
4. El módulo de E/S provee el acceso directo a memoria (DMA).
5. El módulo de E/S tiene su propio procesador con su pequeño conjunto de instrucciones.
6. El módulo además tiene su memoria local o sea se convierte en una computadora en sí mismo.
Características de los Canales de E/S
•Los canales representan una extensión al concepto de DMA.
•Completo control de la transferencia de datos por lo tanto la CPU no ejecuta instrucciones de E/S.
•Instrucciones almacenadas en memoria principal que serán ejecutadas por un procesador de propósito
especial en el canal.
•La CPU inicia una transferencia de E/S instruyendo al canal para ejecutar el programa que está en me-
moria.
•Este programa especifica dispositivos, áreas de memoria a usar,prioridades y acciones ante errores.
• Selector
• Controla varios dispositivos de alta velocidad y uno
por vez, por lo tanto el canal se dedica para la
transferencia de datos de ese dispositivo.
• El canal selecciona un dispositivo y efectúa la
transferencia.
• Los dispositivos son manejados por un controlador o
módulo de E/S
• Por lo tanto el canal de E/S ocupa el lugar de la CPU
en el control de esos controladores.
Parte 2
Parte 3
Micro-Operaciones
En la ejecución de un programa en una computadora, se ejecutan instrucciones, que pueden subdividirse
en ciclos:
•Búsqueda/Ejecución
•Indirecto
•Interrupción
Cada ciclo se compone a su vez de una serie de operaciones más sencillas, llamadas microoperaciones
Implican movimientos de información a nivel de registros, y son las operaciones más elementales e indi-
visibles del computador.
Acceso directo a memoria (DMA)
• Las operaciones de E/S mediante interrupciones son más efectivas que las programadas.
• Pero ambas necesitan la intervención directa de la CPU.
• La velocidad de transferencia es limitada.
• La CPU permanece ocupada mucho tiempo durante la operación.
• Si el volumen a transferir es grande la técnica de DMA es la más eficiente.
• Si la gestión de interrupción (ATI) tiene 10 instrucciones (salvar contexto, comprobar estado, transferir
byte, restaurar contexto, rti)
• Para transferir 10 Mbytes tenemos que ejecutar 107 veces la ATI ejecutar 100 millones de
instrucciones para atender al periférico la CPU tarda 1 seg.
• La CPU está ocupada con la operación de E/S durante 1 seg.
Conclusión con periférico rápido
• La E/S por interrupciones no mejora el tiempo que la CPU está ocupada en atender al periférico.
Realización de la transferencia
• Cuando el periférico está listo para realizar la transferencia se lo indica al DMAC
• El DMAC pide el control del bus y se realiza la transferencia entre el periférico y la memoria
• Bus master: DMAC + Periférico - Bus slave: Memoria
• Después de la transferencia de cada palabra se actualizan los registros del DMAC
• Nº de bytes o palabras a transferir
• Dirección de memoria
Finalización de la transferencia
• El DMAC libera el bus y devuelve el control a la CPU
• El DMAC suele activar una señal de interrupción para indicar a la CPU la finalización de la operación
de E/S solicitada
Tipos de transferencias
• Si el DMAC sólo toma el control del bus durante los intervalos de tiempo en los que la CPU no
hace uso del mismo el rendimiento del sistema no sufrirá degradación alguna
• Se distinguen dos tipos de transferencias:
• Por ráfagas (burst)
• Por robo de ciclo (cycle-stealing)
DMA modo ráfaga
• El DMAC solicita el control del bus a la CPU
• Cuando la CPU concede el bus, el DMAC no lo libera hasta haber finalizado la transferencia de todo el
bloque de datos completo.
• VENTAJAS:
• La transferencia se realiza de forma rápida.
• DESVENTAJAS:
• Durante el tiempo que dura la transferencia la CPU no puede utilizar el bus con memoria, lo que puede
degradar el rendimiento del sistema.
DMA modo robo de ciclo
• El DMAC solicita el control del bus a la CPU.
• Cuando la CPU concede el bus al DMAC, se realiza la transferencia de una única palabra y después el
DMAC libera el bus.
• El DMAC solicita el control del bus tantas veces como sea necesario hasta finalizar la transferencia
del bloque completo
• VENTAJAS:
• No se degrada el rendimiento del sistema.
• DESVENTAJAS:
• La transferencia tarda más tiempo en llevarse a cabo.
• Para la CPU no es una interrupción.
• El procesador no debe guardar el contexto.
• Si bien el trabajo de la CPU es lento, no será tanto como si ella realizara la transferencia.
• Por lo tanto, para transferencia de E/S de múltiples
palabras, es la técnica más eficiente.
Estructura de un DMAC
• El DMA utiliza E/S programadas para transferir entre la memoria y los módulos de E/S.
• Cada transferencia utiliza dos veces el bus.
• Desde el módulo de E/S al DMA y desde el DMA a la memoria.
• La CPU debe “esperar” dos veces.
Bus único, DMA integrado al módulo de E/S ó conectado a varios módulos de E/S.
• El módulo de E/S puede controlar varios dispositivos.
• Cada transferencia usa el bus una vez.
• Del DMA a la memoria.
• La CPU se detiene sólo una vez
• comunicación de la finalización de la tarea.
Bus de E/S separado del bus del sistema.
• Derivado de la configuración anterior.
• Cada transferencia usa el bus del sistema unasola vez.
• Del DMA a la memoria.
• A la CPU se la interrumpe sólo una vez.
• Configuración fácilmente expandible.
• Como en el caso anterior la transferencia de datos entre el DMA y los módulos de E/S serealizan fuera
del bus del sistema.
Tipos de interfaces
• La conexión entre un módulo de E/S y los dispositivos externos puede ser:
• Punto a punto: línea dedicada.
• Ej: teclado, impresora, modem ...etc.
• Multipunto: idema un bus externo.
• Ej: dispositivos de almacenamiento en masa externos (discos SCSI).
•8 líneas de datos
•Clockde 5 MHz
•Clockde 10 MHz.
8: Arquitecturas avanzadas
una instrucción por ritmo de reloj y pueda ejecutar una fase de tubería por el ritmo de reloj.
comparación de figura 14.2 de superescalar y Superpipeline se acerca
La tubería tiene cuatro fases: captación de instrucción, la operación descifra, ejecución de operación,
y el resultado contesta por escrito. La fase de ejecución se sombrea para la claridad. Nota eso
aunque varias instrucciones se están ejecutando concurrentemente, sólo una instrucción está en
su fase de ejecución a cualquier un tiempo.
La parte próxima de la bifurcación muestra que una ejecución de superpipelined que es capaz de realizar
dos fases de tubería por el ritmo de reloj. Una vía alternativa de
mirar a esto es ése las funciones ejecutadas en cada fase se pueden dividirse en dos non over lapping
partes y cada uno puede ejecutar por la mitad un ritmo de reloj ejecución de superpipeline A
eso se comporta en esta forma sea antes mencionado para ser de grado 2. Finalmente, el más bajo
parte del diagbifurcacion muestra que una ejecución de superescalar capaz de ejecutando dos
casos de cada fase en la paralela. Las ejecuciones de superpipeline de grado más alto y de superescalar
ser por supuesto posible.
Ambos superpipeline y las ejecuciones de superescalar muestraron en
La figura 14.2 tiene el mismo número de las instrucciones ejecutando al mismo tiempo en el
estado firme.El procesador de superpipelined se queda atrás el procesador de superescalar a
el principio del programa y a cada objetivo de bifurcacion.
Limitaciones
El acercamiento de superescalar depende de la habilidad para ejecutar las instrucciones múltiples en la
paralela.
El paralelismo a nivel de instrucción de término se refiere al grado al que, como promedio, el
instrucciones de un programa se pueden ejecutar en la paralela.una combinación de con base en
compilador
las técnicas de optimización y de hardware pueden estar acostumbrado a aumentar al máximo el
paralelismo a nivel de instrucción.
Antes de examinar las técnicas de diseño usado en máquinas de superescalar para crecer
paralelismo a nivel de instrucción, necesitamos mirar a las limitaciones fundamentales a paralelismo
con que el sistema debe cubrir. [JOHN91] cinco limitaciones de listas:
• Dependencia de datos verdadera
• Dependencia procesal
• Conflictos de recurso
• Dependencia de salida
• Antidependency
Examinamos los primeros tres de estas limitaciones en el residuo de esta sección. A
discusión sobre los últimos dos debe esperar algunos de los desarrollos en la próxima sección.
y ejecución, esta estrategia incurre en una demora de dos tiempos cuando la bifurcacion consigue
tomado.
Con el advenimiento de RISC elabora, la estrategia de bifurcación diferida se exploraba.
Esto permite el procesador para calcular el resultado de las instrucciones de bifurcación condicional
antes que cualesquiera instrucciones unusables han sido prefetched. Con esto
método, el procesador siempre ejecuta la instrucción sencilla que inmediatamente
seguimientos la bifurcacion.Esta conserva la tubería completa mientras que el procesador trae un nuevo
corriente de instrucciones.
Con el desarrollo de máquinas de superescalar, la estrategia de bifurcación diferida
tener el menos apela.La razón es que las instrucciones múltiples necesitan ejecutar en la demora
ranure, levantando varios problemas referentes a dependencias de instrucción.Así, superescalar
las máquinas han retornado a las técnicas de pre-RISC de la predicción de bifurcacion. Cierto, quiera
el PowerPC 601 , usa una técnica de predicción de bifurcacion estática simple. Más sofisticado
procesadores, tal como el PowerPC 620 y el Pentium 4, use la predicción de bifurcacion dinámica
basado en el análisis de historia de bifurcacion.
superescalar Execution
Somos ahora en posición para proporcionar una visión general de la ejecución de superescalar de
programas;
esto se ilustra en la figura 14.6.El programa para ejecutarse consista de un lineal
secuencia de las instrucciones.Esto es el programa estático como se escribe por el programador
o generado por el compilador. El proceso de captación de instrucción, que incluye bifurcacion
predicción, es usadoa formar una corriente dinámica de las instrucciones.Esta corriente se examina
para dependencias, y el procesador puede quitar las dependencias artificiales.El procesador
entonces envie las instrucciones en una ventana de la ejecución. En esta ventana,
las instrucciones ya no forma una corriente consecutiva pero sea estructurado según su
dependencias de datos verdaderas.El procesador ejecuta la fase de ejecución de cada instrucción
en una orden determinada por los datos verdaderos dependencias y recurso de hardware
disponibilidad. Finalmente, las instrucciones son conceptualmente vuelva en orden consecutiva y
sus resultados se registran.
El final paso mencionado en el párrafo precedente es mencionado para como
comprometer , o retirar , la instrucción.Este paso se necesita para la razón siguiente.
Debido al uso de paralela, las tuberías múltiples, instrucciones pueden completar en un
la orden diferente de ese mostrado en el programa estático. Adelante, el uso de la bifurcacion
predicción y ejecución especulativa significan que ciertas instrucciones pueden completar
ejecución y entonces deba ser abandonado porque la bifurcacion que estos representan no es
tomado.Por lo tanto, almacenamiento permanente y los registros visibles de programa no se pueden
actualizar
inmediatamente cuando instrucciones completan ejecución. Los resultados deben ser agarrados en
algunos
en cierta medida el almacenamiento temporal que sido útil por instrucciones de dependiente y entonces
haga
permanente cuando es determinado que el modelo consecutivo podría haber ejecutado
la instrucción.
superescalar Implementation
Basado en nuestra discusión hasta ahora, podemos hacer ciertos comentarios generales sobre el
el hardware de procesador requerido por el superescalar se acerca. [SMIT95] listas lo siguiente
elementos claves:
• La instrucción trae las estrategias que traen simultáneamente las instrucciones múltiples,
a menudo prediciendo los resultados de, y trayendo más allá de, la bifurcación condicional
instrucciones. Estas funciones requieren que el uso de múltiple captación de tubería y
descifre fases, y lógica de predicción de bifurcacion.
• Lógica para determinar las dependencias verdaderas suponiendo valores, y mecanismos de registro
para comunicar estos valores para donde estos son necesitados durante
ejecución.
• Mecanismos para iniciando, o emitiendo, las instrucciones múltiples en la paralela.
• Recursos para la ejecución paralela de las instrucciones múltiples, incluyendo múltiple
las unidades funcionales tuberías y las jerarquías de memoria capaz de simultáneamente
atender las referencias de memoria múltiples.
• Mecanismos para comprometer el proceso manifiesta en la orden correcta.
Aunque el concepto del diseño de superescalar es generalmente asociado con la arquitectura de RISC,
los mismos principios de superescalar pueden ser aplicados a una máquina de CISC. Tal vez
el más notabla ejemplo de esto es el Pentium.La evolución de los conceptos de superescalar
en la línea de Intel esté interesando a la nota.Los 386 son un CISC tradicional nonpipelined máquina.
Los 486 introdujeron el primero tubería procesador de x86 , reduciendo la latencia media
de las operaciones de entero, número entero de entre dos y de cuatro tiempos a un ciclo, pero todavía
limitado para
ejecutando una instrucción sencilla cada pase por un ciclo, sin los elementos de superescalar. El original
El Pentium tuvo un componente de superescalar modesto, consistiendo del uso de dos separa entero,
número entero
(BTB) es mantenido que ocultan en un caché la información sobre recientemente encuentre bifurcacion
instrucciones. Siempre que una instrucción de salto se encuentra en la instrucción
corriente, el BTB se verifica. Si una entrada ya existe en el BTB, entonces la instrucción
la unidad se guia por la información de historia para esa entrada al determinar
si predecir que la bifurcacion se toma. Si una bifurcacion se predice, entonces el
la dirección de destino de bifurcacion asociada con esta entrada es usada para prefetching el
instrucción de objetivo de bifurcacion.
Una vez la instrucción se ejecuta, la porción de historia de la entrada apropiada
sea actualizado para reflejar el resultado de la instrucción de salto. Si esta instrucción no se representa
en el BTB, entonces la dirección de esta instrucción es cargada en una entrada en
el BTB; si el requisito, una entrada más vieja se borra.
La descripción de los dos párrafos precedentes ajusta, en términos generales, el
la estrategia de predicción de bifurcacion usada en el modelo de Pentium original, así como el posterior
Modelos de Pentium, incluyendo Pentium 4. Sin embargo, en el caso del Pentium, un relativamente
el plan de historia de 2 bits simple se usa. Los modelos de Pentium posteriores tienen mucho
más tiempo las tuberías (20 fases para el Pentium 4 comparado con 5 fases para el Pentium)
y por lo tanto la pena para el misprediction es mayor. En conformidad, el posterior
Los modelos de Pentium usan un plan de predicción de bifurcacion más elaborado con más la historia
bits para reducir el índice de misprediction.
El Pentium 4 BTB es organizado como un caché establacido asociativo de cuatro vías con
512 líneas. Cada entrada usa la dirección de la bifurcacion como una etiqueta. La entrada también
incluye
la dirección de destino de bifurcacion por última vez esta bifurcacion se tomaba y
un campo de historia de 4 bits. Así uso de cuatro historia bit los contrastes con los 2 bits usados en
el Pentium original y usado en la mayor parte de los procesadores de superescalar. Con 4 bits, el
El mecanismo de Pentium 4 puede tomar en cuenta una más tiempo historia en predecir
bifurcacions. El algoritmo que sido usado es mencionado para como el algoritmo de Yeh[YEH91].
Los desarrolladores de este algoritmo han demostrado que Esto proporciona un significativo
reducción en misprediction comparado con algoritmos que use sólo 2 bits de la historia
[EVER98].
Las bifurcaciones condicionales que no tienen una historia en el BTB se predicen
usar un algoritmo de predicción estático, según los reglamentos siguientes:
• Para las direcciones de bifurcacion que no es pariente de IP, prediga tomado si la bifurcacion es el A
retorne y no tomado de otra manera.
• Para bifurcaciones condicionales relativas de IP hacia atrás, prediga tomado.Esta regla refleja
el comportamiento típico de curvas.
• Para bifurcaciones condicionales relativas de IP delanteras, no prediga tomado.
TRACE CACHE FETCH el caché de rastro ( figura 14.9c ) toma el ya descifrado
microscópico operativo del descifrador de instrucción y les arme en para ordenado de programa
secuencias de los rastros microscópicos operativos llamados. Microscópico operativo sea buscado
consecutivamente de el
trace caché, sujeto a la lógica de predicción de bifurcacion.
algunas instrucciones exigen más de cuatro microscópico operativo. Estas instrucciones son
transferido a ROM,which de microcódigo contiene la serie de microscópico operativo ( cinco o más )
asociado con una instrucción de máquina compleja. Por ejemplo, una instrucción de cadena puede
traduzca se en un muy grande (cientos uniformes), la secuencia repetitiva de microscópico operativo.
Así,
ROM del microcódigo es una unidad de control de microprogrammed en el sentido discutido en
Parte cuatro después de ROM del microcódigo termina ordenando en serie microscópica operativa para la
corriente
Instrucción de Pentium, trayendo resumenes del caché de rastro.
DRIVE la quinta fase ( figura 14.9d ) de la tubería de Pentium 4 da descifraron instrucciones
delcaché de rastro para el Rename/módulo de allocator.
no esté presente, entonces la separata multiplica y añade tuberías ponen en práctica el floatingpoint
operaciones
caso posterior, está múltiple ahora allí procesadores así como procesadores de entrada/salida múltiples
todo
intente ganar acceso a unos o más módulos de memoria por la via del ómnibus.
La organización de ómnibus tiene varias características atractivas:
• Simplicidad: Esto es el acercamiento más simple a la organización de multiprocesador. El
enlace físico y el direccionamiento, arbitraje, y la lógica de participación de tiempo de
cada procesador permanece como igual que en un sistema de un solo procesador.
• Flexibilidad: Es generalmente fácil de expandir el sistema uniendo más procesadores
al ómnibus.
• Fiabilidad: El ómnibus es esencialmente unos medios pasivos, y la falta de cualquier
el dispositivo anexo no debe causar la falta del sistema entero.
El inconveniente principal a la organización de ómnibus es el desempeño. Todas las referencias de
memoria
pase por el ómnibus común.Así, el tiempo de ciclo de ómnibus limita la velocidad de el
sistema.Mejorar desempeño, es deseable equipar cada procesador con un área para la transferencia
rápida de datos
memoria. Esto deba reducir el número de los accesos de ómnibus dramáticamente. Tipicamente,
puesto de trabajo y pc SMP han dos niveles de caché, con el caché de L1 interno
( mismo astille como el procesador ) y el L2 cache interno o externo. Algunos
los procesadores ahora emplean un área para la transferencia rápida de datos de L3 también.
El uso de cachés introduce ciertas nuevas consideraciones de diseño. Porque cada
el caché local contiene una imagen de una porción de memoria, si una palabra se altera en uno
caché, pudo invalidar de un modo imaginable una palabra en otro caché. Para prevenir que este, el
otros procesadores se deben alertar que una actualización ha tomado lugar. Este problema es
conocido como el problema de coherencia de caché y dirección tipicamente en el hardware más bien
que por el sistema operativo.Dirigimos este asunto en la sección 17.4.
Consideraciones de diseño de sistema operativo de multiprocesador
Un sistema operativo de SMP maneja procesador y otros recursos de computadora así
Que el usuario percibe un sistema operativo sencillo dominándose recursos de sistema. En
hecho, tal configuración debería aparecer como una multiprogramación de un solo procesador
sistema. En ambos SMP y casos de uniprocesador, los trabajos o procesos múltiples pueden ser
activo en un tiempo, y Esto es la responsabilidad del sistema operativo al horario
su ejecución y para distribuir recursos. un usuario puede construir las aplicaciones eso
use los procesos múltiples o los hilos múltiples dentro de procesos sin considerar
si un procesador sencillo o los procesadores múltiples serán disponibles. Así un multiprocesador
el sistema operativo debe proporcionar toda la funcionalidad de una multiprogramación
sistema más las características adicionales para acomodar los procesadores múltiples.Entre
los aspectos claves de diseño:
• Procesos concurrentes simultáneos: las rutinas de OS necesitan ser entrantes para permitir
varios procesadores para ejecutar el mismo código de IS simultáneamente.Con el múltiple
procesadores ejecutando el mismo o las partes diferentes del OS, tablas de OS y
las estructuras de manejo deben ser manejadas correctamente para evitar estancamiento o inválido
operaciones.
• Programación: Cualquier procesador puede ejecutar programación, así conflictos deben ser
evitado.El programador debe asignar los procesos listos a los procesadores disponibles.
• Sincronización: Con los procesos activos múltiples tenga el acceso potencial a
espacios de direcciones divididos o parta que yo/recursos de o, cuidado debe ser tomado en
proporcionar
sincronización efectiva. La sincronización es una facilidad que impone mutuo
orden de exclusión y de evento.
• Gestión de memoria: Gestión de memoria en un multiprocesador debe trabajar
con todos los aspectos encuentre en máquinas de uniprocesador, como se verá se en
Capítulo 8. Además, el sistema operativo necesita explotar el disponible
paralelismo de hardware, tales como memorias de acceso múltiple, para lograr el mejor desempeño.
Los mecanismos de paginación en los procesadores diferentes se deben coordinarse
para imponer la consistencia cuando varios procesadores comparten una página o segmento
y para decidir en el reemplazo de página.
• Fiabilidad y tolerancia de error: El sistema operativo deba proporcionar gracioso
degradación en presencia de la falta de procesador.El programador y otras porciones
delsistema operativo deba reconocer la pérdida de un procesador y restructura
el manejo tabula en conformidad.
Una Gran Computadora SMP
La mayor parte de la PC y puesto de trabajo SMP usan una estrategia de interconexión de ómnibus como
se muestra en
Figura 17.5. Es instructivo para mirar a un acercamiento alternativo, que es usado para un reciente
ejecución de la familia de unidad principal de IBM zSeries[SIEG04, MAK04],
llamado el z990. Esta familia de sistemas cubre un rango de un uniprocesador con uno
tarjeta de memoria principal a un sistema de alto fin con 48 procesadores y 8 tarjetas de memoria.
Los componentes claves de la configuración se muestran en la figura 17.6:
• Astilla de procesador de dos núcleos: Cada astilla de procesador incluye dos central idéntica
Soluciones de hardware
Las soluciones con base en hardware son generalmente mencionadas para como ocultan en un caché
protocolos de coherencia.
Estas soluciones proporcionan el reconocimiento dinámico al tiempo de ejecución de la inconsistencia
potencial
condiciones. Porque el problema se negocia sólo con cuando se levanta en realidad, allí está
el uso más efectivo de cachés, guiando al desempeño mejorado sobre un software
acercamiento. Además, estos enfoques son transparentes al programador y el
el compilador, reduciendo la carga de software de desarrollo.
Los planes de hardware difieren en varios datos, incluyendo dondelestado
información sobre las líneas de datos es agarrada, cómo que información es organizada, donde
coherencia
imponerse, y los mecanismos de imposición. Por lo general, planes de hardware
pueda ser dividido en las categorías dos: protocolos y protocolos de curioso directivos.
el directorio protocoliza los protocolos directivos reúnen y mantienen información
sobre donde las copias de líneas resida. Tipicamente, existe un controlador centralizado que es
parte del controlador de memoria principal, y un directorio que sida guardado en la memoria principal.
El directorio contiene la información de estado global sobre los contenidos del vario
cachés locales.Cuando un controlador de caché individual hace una solicitud, el centralizado
el controlador verifica y emite el requisito manda para transferencia de datos entre la memoria
y cachés o entre los cachés. Es también responsable para mantener la información de estado
hasta la fecha; por lo tanto, cada acción local que puede afectar el estado global del A
la línea debe ser reportada al controlador central.
Tipicamente, el controlador mantiene la información sobre que los procesadores tienen A
copia de que se alinean. Antes de un procesador pueda escribir a una copia local de una línea, debe
pedir
el acceso exclusivo a la línea del controlador. Antes de otorgar esta exclusiva
acceso, el controlador envia un mensaje a todos los procesadores con una copia ocultada en un caché de
esto
alinee se, forzando cada procesador para invalidar su copia. Después de recibir reconocimientos
parte posterior de cada tal procesador, el controlador otorga el acceso exclusivo al pidiendo
procesador.Cuando otros tries de procesador para leer una línea ése se otorga exclusivamente
para otro procesador, enviará una notificación de señorita al controlador.El controlador
entonces emita una orden a la posesión de procesador que la línea que requiere el procesador
para hacer un write back a memoria principal.La línea ahora puede estar dividido para leer por el
procesador original y el procesador de pedir.
Los planes directivos padecen de los inconvenientes de un embotellamiento central y el
gastos generales de la comunicación entre los varios controladores de caché y la central
controlador. Sin embargo, son efectivos en los sistemas a gran escala que suponen múltiple
ómnibus o alguna otra interconexión compleja forman proyectos.
SNOOPY protocoliza protocolos de curioso distribuya la responsabilidad para mantener
coherencia de caché entre todos los controladores de caché en un multiprocesador. caché A
deba reconocer cuando una línea que se mantiene es dividida con otros cachés.Cuando una actualización
la acción se ejecuta en una línea de caché dividida, se debe ser locutor a todos los otros cachés
por un mecanismo difundido. Cada controlador de caché es capaz de la "buscavidas" en la red
para observar éstos emitieron notificaciones, y reaccionan en conformidad.
Los protocolos de curioso son idealmente propios para un multiprocesador con base en ómnibus, porque
el
el ómnibus dividido proporciona unos medios simples para emitir y curiosear. Sin embargo, porque
uno de los objetivos del uso de las áreas para la transferencia rápida de datos locales son evitar accesos
de bus, inquiete se
se deba tomar que el tráfico de ómnibus aumentado requerido por emitiendo y curioseando
no contrabalancee las ganancias del uso de los cachés locales.
Dos enfoques básicos al protocolo de curioso han sido explorados: la escritura invalida
y escriba la actualización ( o escriba la emisión ).Con una escritura-invalide protocolo, allí
pueda ser lectores múltiples pero sólo un escritor a la vez. Inicialmente, una línea se puede partir
entre varios cachés para leer propósitos.Cuando uno de los cachés quieren ejecutarse
una escritura a la línea, Esto primero emite un anuncio que invalida que alinee se en el otro
los cachés, haciendo la exclusiva de línea al caché de escritura. Una vez que la línea sea exclusiva, el
poseer procesador puede hacer las escrituras locales baratas hasta que algún otro procesador exige
la misma línea.
Con un protocolo de actualización de escritura, puede existir escritores múltiples así como múltiple
lectores.Cuando un procesador desea actualizar una línea dividida, la palabra para actualizarse es
distribuído para todo otros, y los cachés conteniendo que línea puede actualizarlo.
Ni de estos dos enfoques es superior al otro bajo todas las circunstancias.
El desempeño depende del número de los cachés locales y el modelo de
la memoria lea y escribe. Ciertos sistemas ponen en práctica protocolos adaptablas ese empleo
ambas escritura-invalidan y los mecanismos de actualización de escritura.
La escritura-invalidelacercamiento es la mayoría ampliamente usado en el multiprocesador comercial
los sistemas, tales como los Pentium 4 y PowerPC. Marca el estado de cada
oculte en un caché la línea ( usando dos bits extras en la etiqueta de caché ) como modifique, la
exclusiva, partido, o enferme se.
Por esta razón, la escritura-invalidelprotocolo es llamado a MESI. En el residuo
de esta sección, miraremos a su uso entre los cachés locales hasta un multiprocesador.
Para la simplicidad en la presentación, no examinamos los mecanismos incluidos en
coordinarse entre ambos nivel 1 y nivel 2 localmente así como al mismo tiempo coordinándose
hastal multiprocesador distribuído. Esto no podría añadir cualquier nuevos principios
pero grandemente complique la discusión.
Protocolo de El MESI
Para proporcionar la consistencia de caché en un SMP, los datos ocultan en un caché a menudo soporta
un protocolo
conocido como MESI. Para MESI, los datos ocultan en un caché incluye dos estado bit por etiqueta, de
modo que
cada línea puede estar en uno de cuatro estados:
• Modificado: La línea en el caché ha sido modificada (diferente de memoria principal)
y sea disponible sólo en este caché.
• Exclusiva: La línea en el caché es igual que ese en memoria principal y no es presente en cualquier
otro caché.
• Dividido: La línea en el caché es igual que ese en memoria principal y pueda ser
presente en otro caché.
• Inválido: La línea en el caché no contiene los datos válidos.
La tabla 17.1 resume el significado de los cuatro estados. La figura 17.7 muestra A
diagbifurcacion de estado para el protocolo de MESI. Tenga presente que cada línea del caché tiene
su propio estado bit y por lo tanto su propia comprensión del diagbifurcacion de estado. Figure 17.7a
exhibiciones las transiciones que ocurren debido a acciones iniciadas por el procesador anexo a
este caché. Figure 17.7b muestran que las transiciones que ocurren debido a los eventos que son
curioseado en el ómnibus común. Esta presentación de los diagbifurcacions de estado separados para
las acciones iniciadas de procesador e iniciadas de ómnibus ayudan para aclarar la lógica del MESI
protocolo. A cualquier hora una línea de caché es en un estado sencillo. Si el evento próximo es de el
procesador anexo, entonces la transición es dictada por Figure 17.7a y si el próximo
el evento es del ómnibus, la transición se dicta por Figure 17.7b. Parecemos a éstos
transiciones con más detalle.
READ MISS cuando una señorita leída ocurre en el área para la transferencia rápida de datos local, el
procesador inicia A
memoria leída para leer la línea de la memoria principal que contiene los desaparecidos la dirección. El
el procesador inserta una señal en el bus que alerta todos los otras unidades de procesador / área para
la transferencia rápida de datos para
curiosee la transacción.Existen varios resultados posibles:
• Si un otro caché tiene un limpio ( sin modifique desde leer de memoria ) la copia de
la línea en el estado exclusivo, retorna una señal indicando que Esto comparte esto
línea. El procesador de responder entonces transiciones el estado de su copia de
exclusiva para partir, y el procesador de iniciar lee la línea de la parte principal
memoria y transiciones la línea en su caché del inválido para partir.
• Si unos o más cachés tienen una copia en limpio de la línea en el estado dividido, cada uno de
señales de que comparta la línea. El procesador de iniciar lee la línea y
transiciones la línea en su caché del inválido para partir.
• Si un otro caché tiene una copia modificada de la línea, entonces que oculte en un caché los bloques el
la memoria leído y proporciona la línea al caché de pedir sobre el dividido
ómnibus.El caché de responder entonces cambia su línea de modificado para partir.1 el
alinee se envie al caché de pedir sea recibido también y andado en una procesión por la memoria
el controlador, que almacena el bloque en la memoria.
• Si ningún otro caché tiene una copia de la línea ( limpie o modifique ), entonces ningunas señales son
retornado. El procesador de iniciar lee la línea y transiciones la línea en su
caché de inválido a exclusiva.
READ HIT cuando un golpe leído ocurre en una línea corrientemente en el área para la transferencia
rápida de datos local, el procesador
simplemente lea el artículo requerido.No existe ningún cambio de estado:Los restos de estado se
modificaban,
dividido, o exclusivo.
WRITE MISS cuando una señorita de escritura ocurre en el área para la transferencia rápida de datos
local, el procesador inicia A
memoria leída para leer la línea de la memoria principal que contiene los desaparecidos la dirección.
Para
este propósito, el procesador emite una señal en el bus esto significa que de tomodify leído con intento
(RWITM).Cuando la línea es cargada, es marcado inmediatamente modificado.Con
respeto a otros cachés, dos posible guiones preceden la carga de la línea de datos.
En primer lugar, algún otro caché puede tener una copia modificada de esta línea
En este caso, el procesador alertado comunica el procesador de iniciar que otro procesador
( manifieste = modifique se ).
1 en ciertas ejecuciones, el área para la transferencia rápida de datos con la línea modificada comunica
el procesador de iniciar para reensayar.
Entretanto, el procesador con la copia modificada ase el bus, escriba la línea modificada de vuelta a
parte principal
memoria, y las transiciones la línea en su caché de modificado para partir. Posteriormente, el pidiendo
el procesador prueba de nuevo y encuentre que unos o más procesadores tienen una copia en limpio de
la línea en el dividido
estado, como se describe en el punto precedente.
tenga una copia modificada de la línea. El procesador de iniciar rindelbus y
esperas. El otro acceso de ganancias de procesador al bus, escribe la línea modificada de área para la
transferencia rápida de datos
de vuelta a memoria principal, y transiciones el estado de la línea de caché para caer enfermo ( porque
el procesador de iniciar va a modificar esta línea ). Posteriormente, el iniciando
el procesador emitirá de nuevo una señal al bus de RWITM y entonces lea la línea
de memoria principal, modifique la línea en el caché, y marque la línea en el modificado
estado.
El segundo guión es que ningún otro caché tiene una copia modificada del pedido
línea. En este caso, ninguna señal es retornada, y los productos de procesador de iniciar para leer en
la línea y lo modifique. Entretanto, si unos o más cachés tienen una copia en limpio de la línea
en el estado dividido, cada caché invalida su copia de la línea, y si un caché tiene A
copia en limpio de la línea en el estado exclusivo, invalida su copia de la línea.
WRITE HIT cuando un golpe de escritura ocurre en una línea corrientemente en el caché local, el efecto
dependa del estado actual de esa línea en el caché local:
• Dividido: Antes de tocar un instrumento musical la actualización, el procesador debe ganar la
propiedad exclusiva
de la línea. El procesador comunica su dedicado al bus. Cada procesador
esa tiene una copia dividida de la línea en sus transiciones de caché el sector de partido
para enfermarse.El procesador de iniciar entonces ejecuta la actualización y transiciones que su
copia de la línea de partido para modificarse.
• Exclusiva: El procesador ya tiene el control exclusivo de esta línea, y así Esto
simplemente ejecución la actualización y transiciones su copia de la línea de la exclusiva
para modificarse.
• Modificado: El procesador ya tiene el control exclusivo de esta línea y tenga el
la línea marcada como modificó, y así Esto ejecuta simplemente la actualización.
la consistencia de L1-L2 CACHE que hemos descrito hasta ahora protocolos de coherencia de caché
desdelpunto de vista de la actividad de cooperate entre las áreas para la transferencia rápida de datos
una al mismo bus u otro
facilidad de interconexión de SMP.Tipicamente, estas áreas para la transferencia rápida de datos son L2
cache, y cada procesador
también tenga un área para la transferencia rápida de datos de L1 que no se une directamente al bus y
que por lo tanto
no pueda participar un protocolo de curioso.Así, cierto plan fue necesario para mantener datos
integridad hasta ambos niveles de caché y hasta todos los cachés en la configuración de SMP.
La estrategia es extender el protocolo de MESI ( o cualquiera coherencia de caché protocoliza )
al L1 oculte en un caché. Así, cada línea en el caché de L1 incluye bits para indicar el
estado. En esencia, el objetivo es lo siguiente: para cualquier línea que esté presente en ambos un
L2 cache y su caché de L1 correspondiente, el estado de línea de L1 debería seguir la pista del estado de
la línea de L2. unos medios simples de hacer esta es adoptar la política por escrituras en el
caché de L1; en este caso la escritura hasta es el L2 cache y no a la memoria.
La política por escrituras de El L1 fuerza cualquier transformación a un L1 marque al L2
oculta en un caché y por lo tanto haz lo visible a otros L2 cache. El uso del writethrough de L1
la política requiere que el contenido de L1 debe ser un subconjunto del contenido de L2.Esto
a su vez sugiere que el associativity del L2 cache deba estar a la altura de o mayor
que ese del associativity de L1. La política por escrituras de El L1 es usada en la IBM
S/390 SMP.
Si el caché de L1 tiene una política posterior de escritura, la relación entre los dos cachés
ser más complejo.Existen varios enfoques para mantener coherencia. Por ejemplo,
el acercamiento usado en el Pentium II se describe en detalle en [SHAN05].
17.4 LOS MULTIPROCESADORES DE MULTIHILO Y DE ASTILLA
La más importante medida del desempeño para un procesador es el índice a que lo
ejecución instrucciones.Esto se puede expresar como
donde la f es la frecuencia de reloj de procesador, en MHz, y IPC (las instrucciones por ciclo)
es el número medio de las instrucciones ejecutadas por el ciclo. En conformidad, diseñadores
haya perguido la meta de aumentar desempeño en dos frentes: reloj creciente
la frecuencia y aumentando el número de las instrucciones ejecutó o, mejor dicho,
el número de las instrucciones que completa durante un ciclo de procesador. Como nosotros
visto en capítulos más tempranos, los diseñadores han aumentado a IPC usando una instrucción
tubería y entonces usando múltiple comparan tuberías de instrucción en un superescalar
arquitectura.Con diseños tuberías y de tubería múltiple, el problema principal es
para aumentar al máximo la utilización de cada fase de tubería. Para mejorar rendimiento, diseñadores
haya creado alguna vez mecanismos más complejos, tal como ejecutado ciertas instrucciones
en una orden diferente de la vía estos ocurren en la corriente de instrucciones y
comenzar ejecución de las instrucciones que nunca puede necesitarse. Pero como se verá se
en la sección 2.2 , este acercamiento puede estar extendiendo un límite debido a la complejidad y
preocupaciones de consumo de poder.
Un acercamiento alternativo, que tiene en cuenta un alto grado de nivel de instrucción
paralelismo sin aumentar complejidad o consumo de poder de circuito, se llama
multihilo. En esencia, la corriente de instrucciones es dividida en varios más pequeño
las corrientes, conocidas como enhebran, tal que los hilos se pueden ejecutar en la paralela.
La variedad de los diseños de multihilo específicos, comprendió en ambos comercial
los sistemas y los sistemas experimentales, sea vasto. En esta sección, damos a un estudio breve de
los conceptos principales.
Multihilo implícito y explícito
El concepto del hilo usado en discutiendo procesadores multihilos no puede o no puede
sea igual que el concepto de los hilos de software en un sistema operativo de multiprogrammed.
Será útil para definir los términos brevemente:
• Proceso: Un caso de una corrida de programa en una computadora. un proceso se une formando
cuerpo
dos características claves:
—Propiedad de recurso: un proceso incluye un espacio de direcciones virtual para tener el
imagen de proceso; la imagen de proceso es la colección de programa, datos, pila,
y los atributos que definen el proceso. De vez en cuando, un proceso puede ser
distribuido controle o la propiedad de los recursos, tal como memoria principal, canales de
entrada/salida,
dispositivo de entrada/salida, y archivos.
—Scheduling/execution: La ejecución de un proceso sigue un camino de ejecución
(rastro) hasta unos o más programas. Esta ejecución se puede interfoliar
con eso de otros procesos. Así, un proceso tiene un estado de ejecución ( corriendo,
Listo, etc.) y una prioridad de enviar y es la entidad que sida fijar la hora de
y enviado por el sistema operativo.
MIPS evalúa = f * IPC
• Interrupciones de proceso: Una operación que conmuta el procesador de un proceso para
otro, salvando todos los datos de control de proceso, registros, y otra información
para el primero y reemplazando les con la información de proceso para el segundo.2
• Hilo: una unidad enviar del trabajo dentro de un proceso. Incluye un procesador
el contexto ( que incluye el indicador de contador de instrucción y pila ) y su propio
área de datos para una pila ( para habilitar la subrutina ramificandome ). un hilo ejecuta
consecutivamente
y sea interrumpido de modo que el procesador pueda volver hacia otro hilo.
• Interrupciones de hilo: El acto de conmutar el control de procesador de un hilo para otro
dentro del mismo proceso.Tipicamente, este tipo del interrupcionesor es mucho menos costoso
que un interrupcionesor de proceso.
Así, un hilo es interesado con programación y ejecución, mientras que un proceso
sea interesado con ambas propiedad de programación / ejecución y recurso. El múltiple
hilos dentro de un proceso comparten los mismos recursos. Esto es porque un interrupcionesor de hilo
es
mucho menos el consumidor de tiempo que un interrupcionesor de proceso.Sistemas operativos
tradicionales, tal
como las versiones más tempranas de UNIX, no soporte hilos. La mayor parte de los sistemas operativos
modernos,
tal como Linux, otras versiones de UNIX, y Windows, soporta hilo. A
la distinción se hace entre hilos a nivel de usuario, que es visible a la aplicación
programe, y los hilos a nivel de núcleo, que son visibles sólo al sistema operativo.
Ambos de éstos puede ser mencionado para como los hilos explícitos, definido en el software.
Todos los procesadores comerciales y la mayor parte de los procesadores experimentales así
la distancia ha usado el multihilo explícito. Estos sistemas concurrentemente ejecutan instrucciones
de los hilos explícitos diferentes, o interfoliando instrucciones de diferente
hilos en las tuberías divididas o por comparar la ejecución en las tuberías paralelas.
El multihilo implícito se refiere a la ejecución concurrente de los hilos múltiples
extraído de un programa consecutivo sencillo. Estos hilos implícitos se pueden definir
o de modo estático por el compilador o con dinamismo por el hardware. En el residuo
de esta sección consideramos el multihilo explícito.
Enfoques a multihilo explícito
A mínimo, un procesador multihilo debe proporcionar un contador de instrucción separado
para cada hilo de la ejecución para ejecutarse concurrentemente. Los diseños difieren en el
cantidad y tipo del hardware adicional acostumbraron a soportar la ejecución de hilo concurrente.
Por lo general, instrucción atractivo tenga lugar en una base de hilo. El procesador
los convites cada enhebran separadamente y pueden usar varias técnicas para optimizar
la ejecución de un solo hilo, incluyendo predicción de bifurcacion, se registra nombrando de nuevo, y
superescalar
dependencias de datos entre los hilos, que simplifica el diseño de tubería y por lo tanto
deba permitir un hilo se cambia sin la demora. Sin embargo, en dependencia del específico
el diseño y ejecución, bloquee multihilo puede requerir un ritmo de reloj para ejecutarse
un interruptor de hilo, como se ilustra en la figura 17.8.Esto es verdadero si una instrucción buscada
gatillos el interruptor de hilo y se deba desechar de la tubería[UNGE03].
Aunque interfoliado multihilo parece ofrecer la utilización de procesador mejor
que multihilo bloqueado, hace así sacrificando el desempeño de un solo hilo.
Los hilos múltiples compiten para recursos de caché, que levantan el
probabilidad de una señorita de caché para un hilo dado.
Más oportunidades para la ejecución paralela sea disponible si el procesador puede
emita las instrucciones múltiples por el ciclo. Las figuras 17.8d hasta 17.8i ilustre un número
de variaciones entre procesadores que tienen hardware por emitir cuatro instrucciones por
ciclo. En todos estos casos, únicas instrucciones de un hilo sencillo se emiten en un sencillo
ciclo.Las alternativas siguientes se ilustran:
• superescalar: Esto es el acercamiento básico de superescalar sin el multihilo.
Hasta relativamente recientemente, esto era el más poderoso acercamiento para proporcionar
paralelismo dentro de un procesador. Nota que durante ciertos ciclos, no todo el
las ranuras de asunto disponibles se usan. Durante estos ciclos, menos del máximo
número de las instrucciones se emite; esto es mencionado para como la pérdida horizontal. Durante
otros ciclos de instrucciones, ningunas ranuras de asunto se usan; éstos son los ciclos cuando ningunas
instrucciones
se poder emitir; esto es mencionado para como la pérdida vertical.
• El superescalar de multihilo interfoliado: Durante cada ciclo, como muchas instrucciones
como posible sea derivado de un hilo sencillo.Con esta técnica, el potential
demoras debido a interrupcionesores de hilo se eliminan, como previamente discutido. Sin embargo,
el número de instrucciones emitidas en cualquier ciclo dado es todavía limitado por dependencias
eso existe dentro de cualquier hilo dado.
• superescalar multihilo bloqueado: De nuevo, instrucciones de sólo un hilo
se pueda emitir durante cualquier ciclo, y bloquee multihilo se usa.
• Palabra de instrucción muy larga (VLIW): una arquitectura de VLIW, tal como IA-64 ,
las instrucciones múltiples de los lugares en una palabra sencilla.Tipicamente, un VLIW se construye por
el compilador, que pone operaciones que pueden ser ejecutadas en paralela en el
misma palabra. En una máquina de VLIW simple ( figura 17.8g ), si no es posible completamente
llene la palabra con las instrucciones para emitirse en paralela, ningún operativo use se.
• El multihilo interfoliado VLIW: Este acercamiento debería proporcionar las eficiencias similares
a ésos proveídos por el multihilo interfoliado en un superescalar
arquitectura.
• VLIW multihilo bloqueado: Este acercamiento debería proporcionar las eficiencias similares
a ésos proveídos por el multihilo bloqueado en una arquitectura de superescalar.
Los dos enfoques finales ilustrados en la figura 17.8 habilitan la paralela, simultáneo
ejecución de múltiples hilos:
• Multihilo simultáneo: Figure 17.8i pantalla que un sistema capaz de que emite 8
instrucciones a la vez. Si un hilo tiene un alto grado de nivel de instrucción
paralelismo, Esto puede en ciertos ciclos son capaz del reempaquetado todas las ranuras horizontales.
En otros ciclos, instrucciones de dos o más hilos se pueden emitir. Si es suficiente
los hilos son activos, Esto normalmente debe ser posible para emitir el número máximo
de las instrucciones en cada ciclo, proporcionando un alto nivel de la eficiencia.
• Astille el multiprocesador (multicore): Figure 17.8k pantalla que una astilla que contiene cuatro
los procesadores, cada uno de que tenga un procesador de superescalar de dos aspectos. Cada
procesador
sea asignado un hilo, de que puede emitir hasta dos instrucciones por
ciclo.Discutimos computadoras de multicore en el capítulo 18.
Comparando las figuras 17.8j y 17.8k, vemos que un multiprocesador de astilla con el
misma instrucción emite la capacidad como un SMT no pueda lograr el mismo grado de
paralelismo a nivel de instrucción. Esto es porque el multiprocesador de astilla no es capaz para
oculte latencias emitiendo instrucciones de otros hilos. Por otra parte, la astilla
el multiprocesador debería aventajar en desempeño un procesador de superescalar con la misma
instrucción
emita capacidad, porque las pérdidas horizontales serán mayores para el superescalar
procesador. Además, es posible usar multihilo dentro de cada uno de los procesadores
en un multiprocesador de astilla, y esto se hace en ciertas máquinas contemporáneas.
Sistemas de ejemplo
modelos más recientes de PENTIUM 4 del uso de Pentium 4 una técnica de multihilo
Que la literatura de INTEL se refiere a como el hiperhilo[MARR02]. En esencia, el Pentium
4 acercamiento es usar a SMT con el apoyo por dos hilos.Así, el multihilo sencillo
el procesador es lógicamente dos procesadores.
la astilla de IBM POWER 5 El IBM Power5 , que es usada en los productos de PowerPC de alto fin,
los monipodios astillan el multiproceso con SMT[KALL04]. La astilla tiene dos separata
los procesadores, cada uno de que es un procesador multihilo capaz de que apoya dos
los hilos concurrentemente usando SMT. Interesantemente, los diseñadores simularon varias
alternativas
y encuentra que tienen dos procesadores de SMT de dos sentidos en un sencillo astilla provea
el desempeño superior a un procesador de SMT de cuatro vías sencillo. Las simulaciones
muestra que el multihilo adicional más allá del apoyo por dos hilos puede
desempeño de disminución debido a paliza de caché, como datos de un hilo desplaza
datos necesitados por otro hilo.
La figura 17.9 muestra que el diagbifurcacion de flujo de instrucción de IBM Power5's. Sólo unos cuantos
de
los elementos en el procesador necesitan ser replegados, con los elementos separados dedicados
para separar hilos.Dos contadores de instrucciones se usan.Los substitutos de procesador
instrucciones atractivas, hasta ocho a la vez, entre los dos hilos. Todas las instrucciones
ser guardado en una instrucción común oculta en un caché y comparte una traducción de instrucción
la facilidad, que hace una instrucción parcial descifra.Cuando una bifurcación condicional es encontrada,
la facilidad de predicción de bifurcacion predice la dirección de la bifurcacion y, si
posible, calcule la dirección de objetivo. Para predecir el objetivo de un retorno de subrutina,
el procesador usa una pila de retorno, un para cada hilo.
Instrucciones entonces se mueven en dos buffer (regulador)de instrucción separados. Entonces, en el
base de la prioridad de hilo, un grupo de las instrucciones se escoge y descifra en la paralela.
Después, las instrucciones fluyen hasta una facilidad de nombrar de nuevo registro en la orden de
programa. Lógico
los registros se combinan a los registros físicos.El Power5 tiene 120 propósito general físico
registros y 120 registros de punto flotante físicos.Las instrucciones son entonces
movido en el asunto forme fila. De las colas de asunto, las instrucciones se emiten usando
multihilo simétrico. Es decir, el procesador tiene una arquitectura de superescalar y
pueda emitir instrucciones de unos o ambos hilos en la paralela. Al final de el
tubería, los recursos de hilo separados fue necesario para comprometer las instrucciones.
17.5 CLÚSTERES
Un diseño de sistema de computadora importante y relativamente reciente de desarrollo está
agrupando.
Agrupar es una alternativa a multiproceso simétrico como un acercamiento para proporcionar
desempeño alto y la disponibilidad alta y sea particularmente atractivo para
aplicaciones de servidor. Podemos definir un clúster como un grupo de interconecte, el total
las computadoras de trabajo en conjunto como un recurso de informática unificado que pueda crear el
ilusión de ser una máquina. La computadora entera de término significa un sistema que puede
corra sobre su propio, aparte del clúster; en la literatura, cada computadora en un clúster es
tipicamente mencionado para como un bulto.
[BREW97] los cuatro beneficios de listas ése se puede triunfar con agrupar. Éstos puede
también sea inimaginado como objetivos o requisitos de diseño:
• Escalabilidad absoluta: Es posible crear clústeres grandes tan lejos sobrepasa el
poder de uniforme las máquinas autónomas más grandes. un clúster puede tener diez, cientos,
o aún miles de las máquinas, cada uno de que es un multiprocesador.
• Escalabilidad incremental: un clúster es configurado en tal vía que es posible
para añadir nuevos sistemas al clúster en pequeño incrementos.Así, un usuario puede empezar
con un sistema modesto y expanda lo como las necesidades crecen, sin tener que ir
hasta una actualización principal en que un sistema pequeño existente se reemplaza con el A
sistema más grande.
• Disponibilidad alta: Porque cada bulto en un clúster es una computadora autónoma, el
falta de un bulto no significa la pérdida del servicio. En muchos productos, la tolerancia de error
sea manipulado de forma automática en el software.
• Precio / desempeño superior: Usando mercancía construyendo bloquean, es posible
para reunir un clúster con igual o mayor poder de informática que un sencillo
la máquina grande, a mucho más bajo costo.
Configuraciones de clúster
En la literatura, los clústeres son clasificados en varias vías diferentes. Tal vez el
simple la clasificación se basa en si las computadoras en un acceso de porción de clúster a
los mismos discos. Figure 17.10a pantalla que un clúster de dos bultos en que la única interconexión
sea mediante un enlace de alta velocidad que puede ser usado para el cambio de mensaje para
actividad de clúster coordinada.El enlace puede ser un LAN que sido dividido con otras computadoras
esas no son la parte del clúster o el enlace pueda ser una interconexión dedicada
facilidad. En este último caso, uno o más de las computadoras en el clúster habrá un enlace
a unos LAN o WAN de modo que existe una conexión entre el servidor agrupe y remoto
sistemas de cliente. Nota que en la figura, cada computadora se muestra como ser un multiprocesador.
Esto no es necesario pero no mejora ambos desempeño y disponibilidad.
En la clasificación simple mostrada en figura 17.10 , la otra alternativa es el A
clúster de disco dividido. En este caso, allí generalmente está todavía un enlace de mensaje entre
bultos. Además, existe un subsistema de disco que es directamente asociado a las computadoras
múltiples
dentro del clúster. En esta figura, el subsistema de disco común es un sistema RAID.
El uso de RAID o cierta tecnología de disco redundante similar son comúnes en
los clústeres de modo que la disponibilidad alta triunfados por la presencia de las computadoras
múltiples
no comprometa por un disco dividido que es un punto sencillo de la falta.
una pintura más clara del rango de las opciones de clúster se puede ganar observando a
alternativas funcionales. La tabla 17.2 proporciona una clasificación útil a lo largo de funcional
las líneas, que discutimos ahora.
un campo común, método más viejo, conocidos como partidario fiel pasivo , son simplemente para
tener uno
la computadora maneja toda la carga de proceso mientras que los otros restos de computadora
inactivos,
estar de pie por para asumir la autoridad en caso de una falta de la cosa fundamental. para coordinarse
las máquinas, el sistema activo, o primario periódicamente envian un mensaje de "latido"
a la máquina de partidario fiel. Deba estos mensajes parar de llegar, el partidario fiel
asume que el servidor primario ha suspendido y pone se en la operación. Este acercamiento
disponibilidad de aumentos pero no mejore desempeño. Adelante, si el único
la información ése se cambia entre los dos sistemas es un mensaje de latido, y
si los dos sistemas no comparten los discos comúnes, entonces el partidario fiel proporciona un funcional
soporte pero no tenga ningún acceso a las bases de datos manejado por la cosa fundamental.
El partidario fiel pasivo no es generalmente mencionado para como un clúster.El clúster de término es
reservado para el múltiple interconecte de computadora que está todo activamente haciendo proceso
al mantener la imagen de un sistema sencillo al mundo exterior. El término
secundario activo está usado en referirse a esta configuración.Tres clasificaciones
de agrupando se pueda identificar: separe servidores, partido nada, y la memoria compartida.
En un acercamiento para agrupar, cada computadora es un servidor separado con su propio
discos y no existen ningunos discos partidos entre sistemas ( figura 17.10a ). Este arreglo
proporcione desempeño alto así como disponibilidad alta. En este caso, cierto tipo
delmanejo o el software de programación fue necesario para asignar las solicitudes de cliente entrantes
a los servidores de modo que la carga es la utilización balanceada y alta se triunfa. Es deseable
para tener una capacidad de failover, lo que significa que si una computadora fra al ejecutando un
aplicación, otra computadora en el clúster puede obtener y completar la aplicación.
Para este para suceder, los datos deben copiarse constantemente entre sistemas de modo que cada
el sistema tiene acceso a los datos actuales de los otros sistemas.Los gastos generales de estos datos
el cambio asegura que la disponibilidad alta a costa de una pena de desempeño.
Para reducir las comunicaciones por arriba, la mayor parte del agrupan consisten de ahora servidores
unido a los discos comúnes ( figura 17.10b ). En una variación en este acercamiento, llamado
dividido nada, los discos comúnes se reparten en volúmenes, y cada volumen es
poseído por una computadora sencilla. Si que computadora fra , el clúster se debe reconfigured
de modo que alguna otra computadora tiene la propiedad de los volúmenes de la computadora
suspendida.
Es también posible tener las computadoras múltiples compartir los mismos discos al mismo
cronometre ( llame el disco dividido acerque se ), de modo que cada computadora tiene acceso a todo
el volúmenes en todos los discos. Este acercamiento requiere que el uso de cierto tipo del cierre
facilidad para asegurar que los datos pueden accederse sólo por una computadora a la vez.
Aspectos de diseño de sistema operativo
La explotación completa de una configuración de hardware de clúster requiere que ciertos realces
a un sistema operativo de un solo sistema.
Procesamiento NUMA
Entonces, hay que volver a cero de vuelta y ver si se puede crear otro diseño más óptimo
que pueda solucionar estos inconvenientes, de ahí surge la idea del diseño NUMA.
El NUMA consiste en la idea de nodos, donde cada nodo tiene su sistema de procesamiento y
memoria, es decir que son como varias computadoras trabajando en conjunto, y acceden de
manera no uniforme a memoria.
En cuanto al acceso, como se ve en la figura 1.2, el sistema es muy dinámico, cada procesador puede
controlar su propia memoria y la memoria de otro procesador, obviamente
cuando se conecta con una memoria remota 4, la velocidad disminuye. Esto facilita el trabajo
en conjunto para ejecutar un programa, y el proceso se vuelve más veloz porque al no
quedar más memoria en un nodo se busca en que nodo ha quedado memoria para poder
utilizarla.
a) Espacio de Direcciones: Existe un solo espacio de direcciones visibles para todos los
procesadores.
y store. Además cabe resaltar que su acceso es mas lento que a la memoria local.
Este explorador se ejecuta cada cierto número de segundos. Su función consiste en el control de las
estadísticas de utilización y cambios de lugar de las páginas en un intento por mejorar
su desempeño. Si una página parece estar en el lugar incorrecto, el explorador de páginas
anula su correspondencia con la memoria, de modo que la siguiente referencia a ella cause
un fallo de página. Cuando esto suceda, se tomará una decisión acerca del lugar de donde
debe colocarse la página, en donde este lugar posiblemente corresponda en la de una
memoria distinta de aquella en la que estaba anteriormente.
Este es un tipo de procesador NUMA, en donde se impone una base de datos que funciona controlando
los diferentes accesos a memoria caché y brindando la posiblidad de entregar
una linea o un bloque de memoria caché, en donde la misma controla si se encuentra en uso
o se encuentra libre cuando se realiza una referencia a la memoria. Cabe aclarar que al
hablar de este procesador nos referimos a la función de la base de datos que es capaz de
referenciar a varias memorias caché.
Organización Funcional
Memoria Principal
Un mecanismo de conmutación, como ser un anillo, o algun tipo de red, funciona como un
medio de comunicación entre los diferentes nodos de la organización de esta arquitectura.
Este conjunto de nodos, actuan de la siguiente manera:
Cada procesador necesitará accesos a memoria principal, de tal forma que si la posición que es solicitada
no se encuentra en la caché del mismo, actúa la caché de nivel 2 iniciando un
proceso de captación. Sin embargo, si la linea solicitada esta en una porciónr emota de la
memoria, es enviada una petición automática con el fin de captar dicha linea mediante el bus
del sistema y se proporciona a traves del mismo, a la caché que lo solicitaba en dicho bus.
Operación ejemplo: Supongase que el procesador 1 del nodo 2 (N2-P1) , solicita un acceso a la posición
599 que esta en la memoria del nodo 3. La secuencia de pasos para efectuar
esta tarea, es la siguiente:}
1. N2-P1 genera la petición de lectura de la posición solicitada (599) a traves del bus del nodo 2.
3. El modulo de direcciones del nodo 2 envía la petición al nodo 3, y esta es recogida por
el modulo de direcciones del nodo 3.
5. La memoria principal del nodo 3 responde, situando el dato solicitado en las lineas de datos del bus
del sistema.
8. El modulo de direcciones del nodo 2 sitúa el dato en el bus de dicho nodo, actuando
como si fuera la memoria que originariamente propocionó el dato.
9. El dato es leído pasando a la caché del procesador N2-P1, esde donde se proporciona
al procesador.
Cabe aclarar que esta secuencia, que consiste en la forma en que se lee un dato desde una
memoria remota con la utilización de mecanismos de hardware, se utiliza un protocolo de
coherencia de cache.
Procesamiento Vectorial
Como sabemos, existen aplicaciones de toda índole, desde una simple aplicación que puede
ser implementada por un procesador convencional, hasta enormes aplicaciones que implican
un gran número de operaciones y en donde estas deben ser llevadas a cabo con la mayor
precisión posible para que esta tarea pueda ser exitosa. En este ultimo caso, nos vemos
obligados a pensar en algo mas que un procesador convencional, podríamos pensar en los
mainframes de proposito general, aunque es díficil creer que existen aplicaciones que ni
siquiera estos enormes computadores pueden ejecutarlas. Y es aquí donde damos paso a la
computación vectorial y a las entidades que la implementan: Los procesadores vectoriales.
Un vector es una secuencia de datos escalares del mismo tipo almacenados en memoria.
Quizas nosotros tengamos la concepción de que cada uno de los elementos del arreglo son almacenados
en posiciónes contiguas de memoria, pero aunque la mayoria de las veces esto
sucede, no siempre es así, esto ultimo es afirmativo en el de las matrices bidimensionales en
donde solamente cada uno de los elementos de cada vector fila, estarían almacenados en
posiciones contiguas.
Cabe aclarar que en las operaciones vectoriales, cada resultado es independiente de los
anteriores. Esto permite efectuar los cálculos en un procesador segmentado sin que existan
inconvenientes por la dependencia de datos.
Una simple instrucción vectorial sustituye a múltiples operaciones escalares. Esto también
nos sirve para darnos cuenta verdaderamente la importancia de estos procesadores en
enormes aplicaciones. Si un procesador escalar tendría que realizar una tarea determinada
que implique millones de operaciones complicadas en las cuales se requiere precisión, el
cuello de botella que se produciría por la lectura de una instrucción sería bastante notable, a
diferencia de la resolución de la misma con un procesador vectorial.
Las instrucciones vectoriales que implican un acceso a memoria utilizan un patrón de acceso fijo,
facilitando su lectura paralela, e interviniendo para esta tarea una memoria entrelazada.
Si esta memoria no existiera, dichas posiciones serán almacenadas en caché, con un ahorro
de tiempo.
Una importante relación que encontramos respecto a estos procesadores y a los escalares
subyace en la segmentación (pipelining), vista anteriormente. Si se utiliza una instrucción
vectorial, se evita la instrucción de salto de bucle, que se produciría si procesaramos las
instrucciones escalares equivalentes en un procesador segmentado. Esto es muy importante
ya que favorece al procesador al no producir instrucciones de salto y a no sufrir la
penalización por un tiermpo determinado en el que no comienzan las instrucciones a captarse
y un tiempo perdido que no implica acceso a memoria, y que quizas y seguramente, un
procesador escalar lamentablemente, tenga este inconveniente, como lo hemos estudiado en
el subsistema CPU.
El procesador memoria-memoria
se encarga de extraer dos vectores de la memoria y realizar operaciones
sobre ellos.
memoria. Memoria
La mayoria de los
procesadores vectoriales actúan
como coprocesadores de un procesador escalar convencional.
Motivación
Con un sistema SMP, existe un límite práctico hasta el número de procesadores que puede usarse. Un
plan de área para la transferencia rápida de datos efectivo reduce el tráfico de bus entre cualquier un
procesador y memoria principal. Como el número de los aumentos de procesadores, este tráfico de bus
también crece.
También, el ómnibus es usadoa cambiar señales de coherencia de área para la transferencia rápida de
datos, adelante añadiendo a
la carga. A cierto punto, el ómnibus se convierte en un embotellamiento de desempeño. Desempeño
la degradación parece para limitar el número de procesadores en una configuración de SMP
para en alguna parte entre 16 y 64 procesadores. Por ejemplo, el poder de gráficos de silicona
Desafie SMP es limitado a 64 procesadores de R10000 en un sistema sencillo; además de esto
numere el desempeño degrada sólidamente.
El límite de procesador en un SMP es una de las motivaciones de conducción detrás del desarrollo
de los sistemas de clúster. Sin embargo, con un clúster, cada bulto tiene su propio privado
memoria principal; las aplicaciones no ven una memoria global grande. En efecto, la coherencia es
mantenido en antes que hardware de software.Esta granularidad de memoria afecta desempeño
y, para lograr desempeño máximo, software debe ser hecho a la medida a este entorno.
Un acercamiento para lograr el multiproceso a gran escala al reteniendo el
sabor de SMP es NUMA. Por ejemplo, el sistema NUMA de Silicon Graphics Origin es
diseñado al apoyo hasta 1024 procesadores de MIPS R10000[WHIT97] y la consecuencia
el sistema Q de NUMA es diseñado al apoyo hasta 252 procesadores de Pentium II[LOVE96].
frecuentemente use folia que pueda cargarse inicialmente en la memoria local a la corrida
aplicación.El informe de diseñadores siguiente que tal localidad espacial aparece
en las aplicaciones representativas[LOVE96]. Finalmente, el plan de memoria virtual puede ser
mejorado incluyendo en el sistema operativo un mecanismo de migración de página eso
mueva una página de memoria virtual a un bulto que lo esté frecuentemente usando; la silicona
Los diseñadores de gráficos relatan el éxito con este acercamiento[WHIT97].
Aún si la avería de desempeño debido al acceso remoto sea dirigida, allí
sea otras dos desventajas para el acercamiento de CC-NUMA.Dos en particular se discuten
en detalle en [PFIS98]. En primer lugar, un CC-NUMA no se parece a de modo transparente un
SMP; los cambios de software serán requeridos para mover un sistema operativo y aplicaciones
de un SMP a un sistema CC-NUMA.Éstas incluyen distribución de página, ya
mencionado, procesan distribución, y balance de carga por el sistema operativo. A
el segundo asunto es ése de la disponibilidad. Esto es un asunto más bien complejo y dependa
en la ejecución exacta del sistema CC-NUMA; el lector interesado es
mencionado para[PFIS98].
Simulador de procesador de vector
Figure 17.15b es un programa de FORTRAN con una nueva forma de la instrucción que permite
computación de vector para especificarse. La anotación indica que operaciones
en todo el J de índices en el intervalo dado lleve a cabo como una operación sencilla.
Cómo esto se puede lograr sea dirigido en breve.
El programa en figura 17.15b indica que todos los elementos de la fila de ith son
para computarse en la paralela. Cada elemento en la fila es una suma, y las sumas
(hastal k) haga se en serie antes que en la paralela. Aún así, único vector
las multiplicaciones son requeridas por este algoritmo con respecto a las multiplicaciones escalonadas
para el algoritmo escalonado.
Otro acercamiento, proceso en paralelo, se ilustra en figura 17.15c. Este acercamiento
asuma que tenemos procesadores independientes de n que podemos funcionar en la paralela.
Para utilizar los procesadores efectivamente, debemos repartir en lotes de algún modo la computación
a los varios procesadores.Dos primitivos se usan.La n de FORK primitiva causa un
el proceso independiente para empezarse en n de dirección. Entretanto, el original
el proceso continúa ejecución a la instrucción inmediatamente siguiendo el FORK.
Cada ejecución de un FORK deposita un nuevo proceso. La instrucción de El JOIN es esencialmente
el inverso del FORK. La n de JOIN de declaración causa n independiente
procesos para ser confundido paulatinamente con que continúe ejecución a la instrucción siguiente
el sistema operativo JOIN.El debe coordinar esta fusión, y así la ejecución
no continuar hasta todos los procesos de n han alcanzado la instrucción de JOIN.
El programa en figura 17.15c es escrito para imitar el comportamiento del vectorprocessing
programa. En el programa de proceso en paralelo, cada columna de la c se computa
por un proceso separado. Así, los elementos en una fila dada de la c se computan
en la paralela.
La discusión precedente describe enfoques a la computación de vector en lógico
o términos arquitecturales. Volvemos ahora a una consideración de tipos del procesador
la organización que se utiliza para a poner en práctica estos enfoques. una variedad ancha de
las organizaciones han sido y están yendo en percución.Tres categorías principales resaltan:
• Pipelined ALU
• ALU paralelos
• Procesadores paralelos
La figura 17.16 ilustra los primeros dos de estos enfoques.Hemos ya discutido
proceso de encauzamiento en el capítulo 12. Aquí el concepto es extendido a la operación de
el ALU. Porque las operaciones de punto flotante son más bien complejas, existe la oportunidad
para descomponer una operación de punto flotante en las fases, de modo que las fases diferentes
pueda operar en los conjuntos diferentes de datos concurrentemente.Esto se ilustra en figura 17.17a.
La adición de punto flotante se rompe arriba en cuatro fases ( véase la figura 9.22 ): comparación,
cambie, sume, y normalice. un vector de números estuvo presente consecutivamente al primero
fase. Como los productos de proceso, los cuatro conjuntos diferentes de números serán operados en
concurrentemente en camino.
Debe ser claro que esta organización es adecuada para el proceso de vectores. para ver
este, considere el proceso de encauzamiento de instrucción descrito en el capítulo 12.El procesador va
hasta un ciclo repetitivo de atractivo e instrucciones de proceso. En la ausencia de
las bifurcacions, el procesador están trayendo continuamente instrucciones de las direcciones
consecutivas.
Por lo tanto, la tubería se mantiene enteramente y unos ahorros a tiempo se triunfan. Similarmente,
un ALU tubería salvará tiempo sólo si es alimentado una corriente de datos de consecutivo
direcciones. un sencillo, aislado de punto flotante operación no se hace acelerar por una tubería.
El aumento de producción es logrado cuando un vector de operandos estuvo presente al ALU. El
la unidad de control pasa por un ciclo los datos hastal ALU hasta que se anda en una procesión el vector
entero.
La operación de tubería puede mejorarse además si los elementos de vector son
disponible en registran antes que de la memoria principal. Esto se sugiere en realidad por
Figure 17.16a.Los elementos de cada operando de vector son cargados como un bloque en un vector
registre, que es simplemente un banco grande de los registros idénticos. El resultado es también
puesto en un registro de vector. Así, la mayor parte de las operaciones suponen sólo el uso de registros,
y sólo las operaciones de carga y almacenamiento y el comienzo y fin de una operación de vector
requiera acceso a la memoria.
El mecanismo ilustrado en la figura 17.17 pudo ser mencionado para como el proceso de encauzamiento
dentro de una operación.Es decir, tenemos una operación aritmética sencilla ( por ejempo,
eso va a ser aplicado para los operandos de vector, y proceso de encauzamiento permiten los elementos
de vector múltiples
para ser elaborado en la paralela.Este mecanismo puede ser aumentada con el proceso de
encauzamiento
hasta las operaciones. En este caso posterior, existe una secuencia de las operaciones de vector
aritméticas,
y el proceso de encauzamiento de instrucción es usadoa hacer acelerar proceso. Un acercamiento para
la c = una b de + )
este, mencionado para como encadenando, son encontrados en los supercomputadoras de Cray.La
regla básica para
el encadenamiento es esto: una operación de vector puede empezar tan pronto como el primer elemento
de el
el vector(s) de operando sea disponible y la unidad funcional ( por ejempo, sume, substraiga,
multiplique se,
divida se ) sea libre. Esencialmente, el encadenamiento causa los resultados emitiendo de una unidad
funcional para
coma se inmediatamente en otra unidad funcional y así sucesivamente. Si los registros de vector son
usado, se interponen los resultados no tiene que ser guardado en memoria y se pueda usar
aún antes de la operación de vector que les cree corren a la terminación.
Por ejemplo, cuando la informática donde A , b , y c son los vectores
y la s es una magnitud escalar, el Cray puede ejecutar tres instrucciones al instante. Elementos
traído para una carga inmediatamente entre un multiplicador tubería, los productos se envian para
una víbora tubería, y las sumas son situadas en un registro de vector tan pronto como la víbora
completa les:
1. Carga de vector
2. El vector carga a B S VR2
3. El vector se multiplica
4. El vector añade
5. Almacén de vector
Instrucciones 2 y 3 pueda ser encadenado ( tubería ) porque suponen la memoria diferente
direcciones y registros. Las 4 necesidades de instrucción los resultados de instrucciones 2 y 3 , pero
puede ser encadenado con estos también. Tan pronto como los primeros elementos del vector se
registran
2 y 3 sea disponible, la operación en instrucción 4 puede empezar.
Otra vía para lograr el proceso de vectores es por el uso de ALU múltiples en el A
el procesador sencillo, bajo el control de una unidad de control sencilla. En este caso, el control
la unidad encamina datos a ALU de modo que pueden funcionar en la paralela. Es también posible
proceso de encauzamiento de uso en cada uno de los ALU paralelos. Esto se ilustra en figura 17.17b.El
el ejemplo muestra que un caso en que cuatro ALU operan en la paralela.
Como con la organización tubería, una organización de ALU paralela es adecuada para
proceso de vectores. La unidad de control encamina elementos de vector a ALU en un de petirrojo
redondo
forma hasta que se andan en una procesión todos los elementos. Este tipo de la organización es más
complejo
que un sencillo-ALU CPI.
Finalmente, el proceso de vectores se puede triunfar usando múltiple compare procesadores.
En este caso, es necesario romper la tarea se levanta en los procesos múltiples para ser
ejecutado en la paralela. Esta organización es efectiva sólo si el software y hardware
para el coordinación efectivo de los procesadores paralelos sea disponible.
Podemos expandir nuestra taxonomía de la sección 17.1 para reflejar que éstos nuevas estructuras,
como
mostrado en la figura 17.18. Las organizaciones de computadora se pueden distinguir por la presencia
de unas o más unidades de control. Las unidades de control múltiples implican los procesadores
múltiples.
Seguir nuestra discusión previa, si los procesadores múltiples pueden funcionar cooperativa
en una tarea dada, estos se término comparan procesadores.
El lector deba tener conciencia de cierta terminología desafortunada probablemente para encontrarse
en la literatura. El procesador de vector de término se iguala a menudo con el A
la organización de ALU tubería, aunque una organización de ALU paralela se diseña también
para proceso de vectores, y, como hemos discutido, una organización de procesador paralela
también pueda estar diseñado para el proceso de vectores. El proceso de conjunto es usadoa
refiera a un paralelo ALU, aunque, de nuevo, cualquier de las tres organizaciones optimice se
para el proceso de conjuntos. Para hacer materias peor, procesador de matrices se normalmente refiere
a
un procesador auxiliar anexo a un procesador de propósito general y acostumbrado a ejecutarse
computación de vector. Un procesador de matrices puede usar la tubería o compare
acercamiento de ALU.
Ahora, la organización de ALU tubería domina la plaza del mercado.
Los sistemas tuberías son menos complejos que los otros dos enfoques. Su control
diseño de unidad y de sistema operativo se desarrollan bien para lograr el recurso eficiente
distribución y desempeño alto. El residuo de esta sección está dedicado a un más
el examen detallado de este acercamiento, usando un ejemplo específico.