Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Objetivo: ........................................................................................................................ 3
2. Introducción ......................................................................................................4
Negación ..................................................................................................................6
4. Bibliografía ......................................................................................................21
2
Adición, Sustracción, Multiplicación y División
2. Introduccion
El presente documento contiene información sobre el funcionamiento de la unidad
aritmético-lógica del procesador y las diferentes funciones que comprenden la
aritmética del computador como son: Adición, Sustracción, Multiplicación y División.
La Unidad Aritmético-Lógica
(Stallings, 2006)
“La ALU es la parte del computador que realiza realmente las operaciones aritméticas y
lógicas con los datos. El resto de los elementos del computador (unidad de control,
registros, memoria, E/S) están principalmente para suministrar datos a la ALU, a fin de
que ésta los procese y para recuperar los resultados. Con la ALU llegamos al estudio de
lo que puede considerarse el núcleo o esencia del computador.
Negación
(Stallings, 2006)
2. Tratando el resultado como un entero binario sin signo, sumarle 1. Este proceso en
dos etapas se denomina transformación a complemento a dos, u obtención del
complemento a dos de un entero. Por ejemplo:
Ahora queremos que A=-B, lo que significa que A+B =0. Esto se comprueba fácilmente:
“La suma en complemento a dos se ilustra en la Figura 2. La suma se efectúa igual que
si los números fuesen enteros sin signo. Los cuatro primeros ejemplos muestran
operaciones correctas. Si el resultado de la operación es positivo, se obtiene un
número positivo en forma de complemento a dos, que tiene la misma forma como
entero sin signo. Si el resultado de la operación es negativo, conseguimos un número
negativo en forma de complemento a dos. Obsérvese que, en algunos casos, hay un bit
acarreo más allá del final de la palabra (sombreado en la figura). Este bit se ignora.
En cualquier suma, el resultado puede que sea mayor que el permitido por la longitud
de palabra que está utilizando. Esta condición se denomina desbordamiento
(overflow). Cuando ocurre un desbordamiento, la ALU debe indicarlo para que no se
intente utilizar el resultado obtenido.
Así pues, la resta se consigue usando la suma, como se muestra en la Figura 3. Los dos
últimos ejemplos demuestran que también es aplicable la regla de desbordamiento
anterior.
Una ilustración gráfica como la mostrada en la Figura 4, proporciona una visión más
palpable de la suma y la resta en complemento a dos. Los círculos (mitades superiores
de la figura) se obtienen a partir de los correspondientes segmentos lineales de
números (mitades inferiores), juntando los extremos. Observe que cuando los
números se trazan en el círculo, el complemento a dos de cualquier número es el
horizontalmente opuesto del mismo (indicado mediante líneas horizontales
discontinuas). Comenzando en cualquier número del círculo, al sumarle un positivo k
(o restarle un negativo k) nos desplazamos k posiciones en el sentido de las agujas del
reloj. Restarle un positivo k (o sumarle un negativo k) equivale a desplazarse k
posiciones en sentido contrario a las agujas del reloj. Si la operación realizada hace que
se sobrepase el punto en que se juntaron los extremos del segmento, el resultado es
incorrecto (desbordamiento).
© Universidad Estatal de Milagro – UNEMI
Para sumar, los números se presentan al sumador desde dos registros, designados en
este caso registros A y B. El resultado es normalmente almacenado en uno de estos
registros en lugar de un tercero. La indicación de desbordamiento se almacena en un
indicador o biestable de desbordamiento (OF: Overflow Flag) de 1 bit (0=no
desbordamiento; 1=desbordamiento). Para la resta, el substraendo (registro B) se pasa
a través de un complementador, de manera que el valor que se presenta al sumador
© Universidad Estatal de Milagro – UNEMI
(Stallings, 2006)
“La Figura 6 ilustra la multiplicación de enteros binarios sin signo, que se realiza igual
que cuando utilizamos papel y lápiz. Se pueden hacer varias observaciones:
hasta el final. Esto evita la necesidad de almacenar todos los productos parciales,
necesitándose menos registros. En segundo lugar, podemos ahorrar algún tiempo en la
generación de los productos parciales. Para cada 1 del multiplicador se
requiere un desplazamiento y una suma; pero por cada 0, solo se necesita el
desplazamiento.
La Figura 7 muestra una posible implementación que hace uso de las ideas anteriores.
El multiplicador y el multiplicando están ubicados en dos registros (Q y M). Un tercer
registro, el registro A, es también necesario y es inicialmente puesto a 0. Hay también
un registro C de un bit, inicializado a 0, que retiene los posibles bits de acarreo
resultantes de las sumas.”
© Universidad Estatal de Milagro – UNEMI
(Stallings, 2006)
“La multiplicación se efectúa de la siguiente manera. La lógica de control lee uno por
uno los bits del multiplicador. Si Q0 es 1, se suma el multiplicando al registro A y el
resultado es almacenado en A, utilizando el bit C para el acarreo. Entonces se
desplazan todos los bits de los registros C, A, y Q, una posición a la derecha, de manera
que el bit de C pasa a An-1, A0 pasa a Qn-1, y Q0 se pierde. Si Q0 era 0, no se realiza la
suma, solo el desplazamiento. Este proceso se repite para cada bit del multiplicador
original. El producto de 2n bits resultante queda en los registros A y Q. La Figura 8
muestra un diagrama de flujo de la operación, y en la Figura 7.b se da un ejemplo.
Obsérvese que, en el ciclo segundo, cuando el bit del multiplicador es 0, no hay
operación de suma.”
“por -3 (1101) igual a -113 (10001111). Este ejemplo demuestra que la multiplicación
directa no es adecuada si tanto el multiplicando como el multiplicador son negativos.
De hecho, tampoco lo es si alguno de los dos es negativo. Para explicar este
comportamiento necesitamos volver sobre la Figura 6 y explicar lo que se está
haciendo en términos de operaciones con potencias de 2. Recuérdese que cualquier
número binario sin signo puede expresarse como suma de potencias de 2. Por tanto,
© Universidad Estatal de Milagro – UNEMI
Así pues, el multiplicando de cuatro bits 1011, como entero sin signo, es almacenado
en una palabra de ocho bits como 00001011. Cada producto parcial (distinto del
correspondiente a 20) consiste en dicho número desplazado a la izquierda, con las
posiciones de la derecha rellenas con ceros (por ejemplo, un desplazamiento a la
izquierda en dos posiciones produce 00101100).
Ahora podemos demostrar cómo la multiplicación directa no es correcta si el
multiplicando es negativo. El problema es que cada contribución del multiplicando
negativo como producto parcial tiene que ser un número negativo en un campo de 2n
bits; los bits de signo de los productos parciales deben estar alineados. Esto se
demuestra en la Figura 9, que muestra el producto de 1001 por 0011. Si estos se tratan
como enteros sin signo se realiza el producto 9X3=27. Sin embargo, si 1001 se
interpreta en complemento a dos como -7, cada producto parcial debe ser un número
negativo en complemento a dos de 2n (es decir, ocho) bits, como muestra la Figura
10(b). Obsérvese que eso podría hacerse rellenando la parte izquierda de cada
producto parcial con unos.” (Stallings, 2006)
Figura 9. Multiplicación de dos enteros sin signo de cuatro bits para producir
un resultado de ocho bits.
Fuente: (Stallings, 2006)
© Universidad Estatal de Milagro – UNEMI
Figura 10. Comparación del producto de enteros sin signo y en complemento a dos.
Fuente: (Stallings, 2006)
“La división es algo más compleja que la multiplicación, pero está basada en los
mismos principios generales. Como antes, la base para el algoritmo es la aproximación
de «papel y lápiz», y la operación conlleva repetidos desplazamientos y sumas o
restas”
“La Figura 11 muestra un ejemplo de división larga de enteros binarios sin signo. Es
instructivo describir en detalle el proceso. Primero se examinan los bits del dividendo
de izquierda a derecha hasta que el conjunto de bits examinados represente un
número mayor o igual que el divisor; o, en otras palabras, hasta que el divisor sea
capaz de dividir al número. Hasta que eso ocurre, se van colocando ceros en el
cociente de izquierda a derecha. Cuando dicho evento sucede, se coloca un 1 en el
cociente, y se substrae el divisor del dividendo parcial. Al resultado se le denomina
resto parcial.
Desde este punto en adelante, la división sigue un patrón cíclico. En cada ciclo, se
añaden bits adicionales del dividendo al resto parcial hasta que el resultado sea mayor
o igual que el divisor. Como antes, de este número se resta el divisor para producir un
nuevo resto parcial. El proceso continúa hasta que se acaban los bits del dividendo.”
(Stallings, 2006)
© Universidad Estatal de Milagro – UNEMI
“Este proceso puede, con cierta dificultad, aplicarse también a números negativos.
Aquí damos una posible aproximación para números en complemento a dos. En la
Figura 13 se muestran varios ejemplos de esta aproximación. El algoritmo puede
resumirse como sigue:
6. El resto está en A. Si los signos del divisor y el dividendo eran iguales, el cociente
está en Q; si no, el cociente correcto es el complemento a dos de Q.
El lector notará en la Figura 13 que (–7)/(3) y (7)/( –3) producen restos diferentes. Esto
es debido a que el resto se define como:” (Stallings, 2006)
en donde:
D=dividendo
Q=cociente
V=divisor
R=resto
4. Bibliografía
Objetivo: ................................................................................................................................................... 3
2. Introducción ............................................................................................................................ 4
4. Bibliografía ............................................................................................................................ 41
2
El Procesador
2. Introduccion
El presente documento contiene información detallada de uno de los componentes
más importantes en el rendimiento de un computador, el procesador.
El subtema 2, detalla las técnicas y fórmulas empleadas para medir el rendimiento del
computador
Para hacer estas cosas, es obvio que el procesador necesita almacenar algunos datos
temporalmente. Debe recordar la posición de la última instrucción de forma que
pueda saber de dónde tomar la siguiente. Necesita almacenar instrucciones y datos
temporalmente mientras una instrucción está ejecutándose. En otras palabras, el
procesador necesita una pequeña memoria interna.
La figura 1, presenta una visión simplificada del procesador y la figura 2 una más
detallada”.
© Universidad Estatal de Milagro – UNEMI
Los procesadores están diseñados y operan según una señal de sincronización. Esta
señal, conocida como señal de reloj, es una señal en forma de onda cuadrada periódica
con una determinada frecuencia. Todas las operaciones hechas por el procesador las
gobierna esta señal de reloj: un ciclo de reloj determina la unidad básica de tiempo, es
decir, la duración mínima de una operación del procesador.
Para ejecutar una instrucción, son necesarios uno o más ciclos de reloj, dependiendo
del tipo de instrucción y de los operandos que tenga.
© Universidad Estatal de Milagro – UNEMI
Las prestaciones del procesador no las determina solo la frecuencia de reloj, sino otras
características del procesador, especialmente del diseño del juego de instrucciones y la
capacidad que tiene para ejecutar simultáneamente múltiples instrucciones.
Registros
“Los registros son, básicamente, elementos de memoria de acceso rápido que se
encuentran dentro del procesador. Constituyen un espacio de trabajo para el
procesador y se utilizan como un espacio de almacenamiento temporal. Se
implementan utilizando elementos de memoria RAM estática (static RAM). Son
imprescindibles para ejecutar las instrucciones, entre otros motivos, porque la ALU
solo trabaja con los registros internos del procesador.
El conjunto de registros y la organización que tienen cambia de un procesador a otro;
los procesadores difieren en el número de registros, en el tipo de registros y en el
tamaño de cada registro.
© Universidad Estatal de Milagro – UNEMI
Una parte de los registros pueden ser visibles para el programador de aplicaciones,
otra parte solo para instrucciones privilegiadas y otra solo se utiliza en el
funcionamiento interno del procesador.
“Veamos primero cómo se representan los valores de los números enteros y reales con
los que puede trabajar la ALU y, a continuación, cuáles son las operaciones que puede
hacer.
Representación de la información
Todas las notaciones representan los números enteros en binario. Según la capacidad
de representación de cada computador, se utilizan más o menos bits. El número de
bits más habitual en los computadores actuales es de 32 y 64.
En la notación en punto flotante se representan utilizando tres campos, esto es: signo,
mantisa y exponente, donde el valor del número es ± mantisa · 2exponente.
El IEEE ha definido una norma para representar números reales en punto flotante:
IEEE-754. La norma define diferentes formatos de representación de números binarios
en punto flotante. Los más habituales son los siguientes:
• Cuádruple precisión: números binarios en punto flotante de 128 bits, utilizan un bit
de signo, 15 bits para el exponente y 112 para la mantisa” (Universitat Oberta de
Catalunya, 2020)
“La norma define también la representación del cero y de valores especiales, como
infinito y NaN (not a number). Las operaciones aritméticas habituales que puede hacer
una ALU incluyen suma, resta, multiplicación y división. Además, se pueden incluir
operaciones específicas de incremento positivo (+1) o negativo (–1).
Dentro de las operaciones lógicas se incluyen operaciones AND, OR, NOT, XOR,
operaciones de desplazamiento de bits a la izquierda y a la derecha y operaciones de
rotación de bits.” (Universitat Oberta de Catalunya, 2020)
“En los primeros computadores se implementaba la ALU como una única unidad
funcional capaz de hacer las operaciones descritas anteriormente sobre números
enteros. Esta unidad tenía acceso a los registros donde se almacenaban los operandos
y los resultados de cada operación.
© Universidad Estatal de Milagro – UNEMI
Unidad de control
“La unidad de control se puede considerar el cerebro del computador. Como el
cerebro, está conectada al resto de los componentes del computador mediante las
señales de control (el sistema nervioso del computador). Con este símil no se pretende
humanizar los computadores, sino ilustrar que la unidad de control es imprescindible
para coordinar los diferentes elementos que tiene el computador y hacer un buen uso
de ellos.” (Universitat Oberta de Catalunya, 2020)
“Es muy importante que un computador tenga unidades funcionales muy eficientes y
rápidas, pero si no se coordinan y no se controlan correctamente, es imposible
aprovechar todas las potencialidades que se habían previsto en el diseño.
Aparte de ver las maneras más habituales de implementar una unidad de control,
analizaremos el comportamiento dinámico, que es clave en la eficiencia y la rapidez de
un computador.” (Universitat Oberta de Catalunya, 2020)
Microoperaciones
“Como ya sabemos, ejecutar un programa consiste en ejecutar una secuencia de
instrucciones, y cada instrucción se lleva a cabo mediante un ciclo de ejecución que
consta de las fases principales siguientes:
1) Lectura de la instrucción.
© Universidad Estatal de Milagro – UNEMI
4) Comprobación de interrupciones.
Cada una de las operaciones que hacemos durante la ejecución de una instrucción la
denominamos microoperación, y éstas microoperaciones son la base para diseñar la
unidad de control.” (Universitat Oberta de Catalunya, 2020)
Tipos de microoperaciones
“La función básica de las microoperaciones es la transferencia de información de un
lugar del computador a otro, generalmente de un registro a otro, tanto si son internos
al procesador como externos. Este proceso de transferencia puede implicar solo mover
la información, pero también transformarla. Identificamos tres tipos básicos de
microoperaciones:
Ejemplos de transferencia
Ciclo de ejecución
“Las microoperaciones sirven de guía para diseñar la unidad de control, pero antes de
© Universidad Estatal de Milagro – UNEMI
Esta secuencia puede variar de una arquitectura a otra e, incluso, puede haber
microoperaciones que estén en fases diferentes. Eso depende en buena parte de las
características de la arquitectura: el número de buses, a qué buses tienen acceso los
diferentes registros, si hay unidades funcionales específicas como registros que se
puedan autoincrementar sin hacer uso de la ALU, la manera de acceder a los
elementos externos al procesador, etc.
A continuación, veremos las microoperaciones que se llevan a cabo en cada una de las
fases del ciclo de ejecución para una arquitectura genérica desde el punto de vista
funcional: cuáles se deben realizar y en qué orden. En el próximo apartado
analizaremos con más detalle la dependencia temporal entre las microoperaciones en
razón de los recursos que ha utilizado cada una.” (Universitat Oberta de Catalunya,
2020)
Lectura de la instrucción
“La fase de lectura de la instrucción consta básicamente de cuatro pasos:
Hay que tener presente que, si la instrucción tiene un tamaño superior a una palabra
de memoria, este proceso se debe repetir tantas veces como sea necesario.
Las diferencias principales que encontramos entre diferentes máquinas en esta fase
son cómo y cuándo se incrementa el PC, ya que en algunas máquinas se utiliza la ALU y
en otras se puede utilizar un circuito incrementador específico para el PC.
Ejemplo
Veamos ahora algún ejemplo de ello:
• Inmediato: el dato está en la misma instrucción y, por lo tanto, no hay que hacer
nada: IR (operando).
• Directo a registro: el dato está en un registro y, por lo tanto, no hay que hacer nada.
En arquitecturas con un único bus interno (o de más de un bus, pero con determinadas
configuraciones de acceso a los buses) también hay que añadir microoperaciones para
guardar temporalmente información en registros cuando se trabaja con más de un
dato al mismo tiempo, como por ejemplo cuando se hace una suma.” (Universitat
Oberta de Catalunya, 2020)
tener disponibles al mismo tiempo todos los operandos que utiliza, pero la ALU no
dispone de elementos para almacenarlos; por lo tanto, se deben almacenar en
registros del procesador. Si no hay un bus diferente desde el que se pueda captar cada
uno de los operandos fuente y donde se pueda dejar el operando de destino, se
necesitan registros temporales (transparentes al programador) conectados
directamente a la ALU (entrada y salida de la ALU) y disponibles al mismo tiempo, lo
que implica el uso de microoperaciones adicionales para llevar los operandos a estos
registros temporales.” (Universitat Oberta de Catalunya, 2020)
Directo a memoria:
• Memoria ← MBR
• Memoria ← MBR
Comprobación de interrupciones
“En esta fase, si no se ha producido ninguna petición de interrupción, no hay que
ejecutar ninguna microoperación y se continúa con la ejecución de la instrucción
siguiente; en el caso contrario, hay que hacer un cambio de contexto. Para hacer un
cambio de contexto hay que guardar el estado del procesador (generalmente en la pila
del sistema) y poner en el PC la dirección de la rutina que da servicio a esta
interrupción. Este proceso puede variar mucho de una máquina a otra. Aquí solo
© Universidad Estatal de Milagro – UNEMI
Figura 9. Hardware.
Fuente: (Academia Cartagena99 - Escuela de informática en Madrid, 2020)
Tiempo de ejecución
“Definimos el tiempo de ejecución como el tiempo de respuesta del sistema desde que
se ejecuta un programa hasta que se obtiene una respuesta.
Rendimiento
“Como ya anunciara Einstein en su Teoría de la Relatividad: “dos observadores que se
mueven relativamente uno al lado del otro con distinta velocidad, a menudo
obtendrán diferentes medidas del tiempo”.
Cuando tratamos de evaluar las prestaciones de una arquitectura de computadores
ocurre algo similar. Cuando decimos que el rendimiento de un computador es óptimo,
¿respecto a qué medida? ¿Comparado con qué?” (Academia Cartagena99 - Escuela de
© Universidad Estatal de Milagro – UNEMI
“El rendimiento de un computador es relativo, dependiendo del fin para que sea
utilizado y de cómo de bueno sea comparado con máquinas similares que fueron
construidas para el mismo fin o similar. Para medir el rendimiento de un computador,
ya tenemos claro que la única medida fiable es el tiempo de ejecución, pero no hemos
delimitado cuál es el programa que ejecutamos, ni cuál es la medida de tiempo que se
espera. Para demostrar que una computadora es óptima, debemos ejecutar un
programa real (o un programa de prueba de complejidad similar), y comparar los
tiempos de ejecución con una computadora similar. Cuanto menor sea el tiempo de
Definiciones y fórmulas
“En el elemento interactivo siguiente, podrás explorar las definiciones de las medidas
de rendimiento más importantes y las fórmulas asociadas a cada medida, para saber
cómo calcularlas. Al final de este tema debemos ser expertos conocedores de estas
medidas y ser capaces de calcularlas.” (Academia Cartagena99 - Escuela de informática
en Madrid, 2020)
Esto implica que, aunque ejecutemos muchas más instrucciones por segundo en una
arquitectura RISC, puede que no ejecutemos el programa en menos tiempo. Es decir,
dependemos del CPI.
Las instrucciones en las arquitecturas CISC tienen un CPI mucho mayor que las
arquitecturas RISC, pues las instrucciones RISC son mucho más sencillas y genéricas.
Ahora bien, para hacer la misma operación, por ejemplo, multiplicar o calcular la raíz
cuadrada, necesitamos varias instrucciones en RISC, y una sola en CISC. Debemos, por
tanto, ejecutar el programa en las dos máquinas y comparar los tiempos de ejecución.”
(Academia Cartagena99 - Escuela de informática en Madrid, 2020)
Ley de Amdahl
“La Ley de Amdahl permite representar matemáticamente cómo influye una mejora
sobre un componente o varios (que se utilizan durante un porcentaje del tiempo de
ejecución) en la mejora global del rendimiento de una computadora. Si mejoramos x
veces un componente de un computador, el componente será x veces más rápido, es
decir, hará el mismo trabajo en x veces menos de tiempo. Si ese componente se utiliza
durante una fracción de tiempo F del tiempo total de la ejecución, ¿cuál será el tiempo
de ejecución del sistema después de la mejora?
© Universidad Estatal de Milagro – UNEMI
Donde (1-F) representa la fracción de tiempo en la cual no hay mejora (en tanto por
uno). Si operamos con la fórmula anterior:
Donde:
Ejemplo
Imaginemos que aplicamos varias mejoras a la vez: cada uno de los componentes
mejorados se utiliza durante una fracción de tiempo fi, y cada mejora la
representaremos por un factor de mejora Ri. La fórmula de speed-up o mejora global
del sistema se calcula como:
Donde:
Es decir que, durante una ejecución, nunca se están aplicando dos o más mejoras a la
vez. Por ejemplo, si queremos calcular el speed-up de un sistema en el que mejoremos
la velocidad del procesador (se usa el 95% del tiempo), y los accesos a memoria (el
20% de las instrucciones son de acceso a memoria), resulta que hay momentos en los
que se están aplicando ambas mejoras simultáneamente, por lo que en este caso no
podríamos aplicar directamente la Ley de Amdahl.
En este caso, el speed-up final habría que calcularlo en dos pasos. Primero
calcularíamos cuánto se reduce el tiempo de ejecución con la primera mejora y
después obtendríamos el speed-up de la segunda mejora.” (Academia Cartagena99 -
Escuela de informática en Madrid, 2020)
© Universidad Estatal de Milagro – UNEMI
• Transferencia.
• Operaciones.
• Control de flujo.
Arquitectura del tipo load-store (carga y almacena). Las únicas instrucciones que
tienen acceso a la memoria son 'load' y 'store'; registro a registro, con un menor
número de acceso a memoria.
Casi todas las instrucciones pueden ejecutarse dentro de un ciclo de reloj. Con un
control implantado por hardware (con un diseño del tipo loadstore), casi todas las
instrucciones se pueden ejecutar cada ciclo de reloj, base importante para la
reorganización de la ejecución de instrucciones por medio de un compilador.
Es decir, se cargan los operandos en los registros mediante una operación de tipo load,
se realizan las operaciones pertinentes entre los registros y los resultados se
almacenan en memoria mediante una instrucción de tipo store. A este modelo de
En una arquitectura de tipo load/store Lo ideal sería poder tener todos los operandos
que se necesiten en la ejecución de un programa ubicados en registros. Pero entonces
el coste del hardware se vería incrementado notablemente. Se necesita una estrategia
para ubicar aquellos operandos a los que se accede con más frecuencia y reducir el
tráfico registro-memoria generado en las operaciones de tipo load y store.
Este el RISC “instrucciones reducidas” requiere menos transistores del espacio del
hardware que las instrucciones complejas, saliendo de más sitio para los registros de
fines generales. Porque todas las instrucciones se ejecutan en una cantidad de tiempo
uniforme (es decir un reloj), el canalizar es posible.
recargar los datos del banco de memoria en un registro. En el RISC, seguirá habiendo el
operando en el registro hasta que otro valor se carga en su lugar.” (Universidad
Nacional de Educación a Distancia (UNED), 2020)
Arquitectura Cisc
“CISC es un tipo de arquitectura de computadoras que promueve el uso de gran
número de instrucciones, permitiendo operaciones complejas entre operandos
situados en memoria o en registros internos.
A través de la compleja circuitería del chip, el nanoprocesador ejecuta cada una de las
instrucciones del comando. El desplazamiento por esta circuitería también ralentiza el
proceso. Para realizar una sola instrucción un chip CISC requiere de cuatro a diez ciclos
de reloj.
Aunque los procesadores CISC tienen instrucciones que sólo utilizan registros de
procesador, la disponibilidad de otros modos de operaciones tiende a simplificar la
compilación de lenguajes de alto nivel. Sin embargo, conforme se incorporan más
instrucciones y modos de direccionamiento en una computadora, se necesita más
circuitería lógica para implementarlos y soportarlos, y esto puede producir que los
cálculos se hagan lentos.
Ventajas y desventajas
“CISC tiene un coste "razonable”, que es alcanzado a nivel de usuario. Esto mismo, no
ocurre con los RISC, que por el contrario tienen un coste elevado, por esto mismo esta
tecnología ha sido enfocada a ventas a nivel de empresa y equipos de gama alta.
Dada la compatibilidad hacia atrás de la familia CISC x86, los usuarios han podido
renovar sus equipos sin por ello tener que abandonar software que ya Electrónica para
Sistemas Industriales (EIS) ARQUITECTURA DE MICROPROCESADOR 12 conocían, y
reutilizar sus datos. Así mismo, los fabricantes han tenido en cuenta este factor, puesto
que seguir con otra línea de procesadores suponía no solo un cambio muy radical, sino
que además podía llevar un riesgo en cuanto a ventas. Estos son algunos de los
motivos. Sin embargo, también hay que tener en cuenta el conflicto de intereses de
algunos fabricantes, así como la opinión de distintas revistas, algunas de ellas
asociadas a diferentes marcas. Se están estudiando las tendencias futuras, como
pueden ser los híbridos, mejoras en los microprocesadores CISC, mejoras en los RISC.”
(Universidad Nacional de Educación a Distancia (UNED), 2020)
RISC Vs CISC
Es que los procesadores CISCx86 corren a DOS, Windows 3.1 y Windows 95 en el modo
nativo; es decir, sin la traducción de software que disminuya el desempeño. Pero CISC
y RISC también reflejan dos filosofías de computación rivales. El procesamiento de RISC
requiere breves instrucciones de software de la misma longitud, que son fáciles de
procesar rápidamente y en tandém por un CPU. En contraste, un procesador de CISC
tiene que procesar instrucciones más largas de longitud desigual. Es más difícil
procesar múltiples instrucciones de CISC a la vez.
© Universidad Estatal de Milagro – UNEMI
Los que proponen RISC mantienen que su método de procesamiento es más eficiente y
más escalable, por lo que los arquitectos pueden añadir unidades de ejecución más
fácilmente a un diseño existente y aumentar el rendimiento (las unidades de ejecución
son los circuitos dentro del chip que hacen gran parte del trabajo). Similarmente, RISC
facilita el multiprocesamiento verdadero, donde varios CPUs trabajan simétricamente
mientras dividen, ejecutan y ensamblan una cadena de instrucción; los chips CISC
pueden hacer lo mismo, pero no son tan efectivos. La simplicidad de las instrucciones
de RISC también significa que requieren menos lógica para ejecutar, reduciendo el
costo del chip. Pocos en el campo del CISC discuten estos hechos, prefiriendo apuntar
a la realidad.
Todo el debate de CISC/RISC puede ser irrelevante pronto debido a que nuevas
técnicas están convergiendo. El Pentium Pro, el Nx586 y el K5 son básicamente
procesadores RISC en su núcleo. Toman las instrucciones de CISC y las traducen a
instrucciones estilo RISC. Para la generación que sigue al Pentium Pro, Intel y Hewlett-
Packard están colaborando en un CPU híbrido que pueda aceptar instrucciones RISC y
CISC. Si ese chip crea un estándar, puede acelerar el cambio hacia el software
optimizado para RISC. Un mundo de RISC significaría CPUs más poderosos, y más
baratos. Cuando quiera mejorar, simplemente puede añadir otro CPU en lugar de
desprenderse de su viejo CPU.” (Universidad Nacional de Educación a Distancia
(UNED), 2020)
© Universidad Estatal de Milagro – UNEMI
Control de conflictos
En esta sección estudiaremos las técnicas para detectar, prevenir o evitar los
diferentes tipos de conflictos; también veremos la forma de conseguir que causen la
menor pérdida posible de rendimiento una vez que ya se han producido.
Conflictos estructurales
“Los conflictos estructurales, en los cauces monofunción, se resuelven, si ello fuera
posible, aumentando las posibilidades del hardware duplicando todos los recursos que
sea necesario.
Uno de los conflictos estructurales más frecuentes en los cauces monofunción son los
relacionados con los accesos a memoria; por ejemplo, se producirá un conflicto
cuando una etapa trate de acceder a memoria para leer una instrucción y otra lo haga
© Universidad Estatal de Milagro – UNEMI
En los cauces no lineales, el control de estos conflictos adquiere una nueva dimensión.
El problema todavía se agrava más en los cauces multifunción dinámicamente
configurables. En estos cauces existe la posibilidad del uso simultáneo de varios
segmentos por parte de ejecuciones distintas de la misma función o por varias de las
funciones. Este tipo de conflictos estructurales se denominan colisiones. El control de
colisiones se hace más complejo si el grafo de precedencia de las tareas no es lineal.
Las técnicas de prevención de colisiones se basan en las tablas de reservas (Davidson,
1971).
Figura 18. Tabla de reservas para las instrucciones aritméticas (a) y de carga (b), en un
procesador segmentado.
Fuente: (Universidad de Valladolid - Departamento de Informática, 2020)
Figura 19. (a) Ejemplo de tabla de reservas y (b) vector de colisiones correspondiente a dicha
tabla.
Fuente: (Universidad de Valladolid - Departamento de Informática, 2020)
RAW (read after write, lectura después de escritura): “la instrucción B trata de leer un
operando antes de que la instrucción A lo haya escrito; de esta forma, B puede tomar
un valor incorrecto de ese operando. Éste es el tipo de dependencia más común.
Trataremos de exponer ahora una condición más formalizada para la existencia de
estos riesgos” (Keller, 1975): Si denotamos por OA al conjunto de salida o rango de la
instrucción A, y por IB al conjunto de entrada o dominio de la instrucción B, habrá
posibilidad de riesgo RAW si: OA ∩ IB = ∅. Esto, que corresponde con la dependencia
de flujo, es una condición necesaria pero no suficiente. La existencia o no de riesgo
depende de la separación temporal de las instrucciones A y B, así como de la
profundidad de la segmentación.
WAR (write after read, escritura después de lectura): la instrucción B trata de escribir
en un registro antes de que sea leído por la A; por ello, A tomaría un valor incorrecto,
ya que debería tomar el valor antes de modificarse. Este riesgo es poco frecuente,
debido a que la escritura de los resultados se efectúa en los últimos segmentos y es
difícil que esa escritura se adelante al segmento de lectura de una instrucción anterior.
El riesgo WAR se podría presentar, sobre todo, en procesadores con autoindexación,
en los que la fase de lectura de operando, que es una de las primeras, puede modificar
un registro antes de que una instrucción anterior lo haya leído. Aun en este tipo de
© Universidad Estatal de Milagro – UNEMI
procesadores este riesgo es difícil que se produzca. No obstante, como veremos más
adelante, esta clase de riesgos se pueden producir si se alterara el orden de la
ejecución de las instrucciones. Existirá peligro de producirse este riesgo si IA ∩ OB = ∅
es decir, si existe antidependencia entre las instrucciones A y B, aunque, igual que en
el caso anterior, esta condición es necesaria pero no suficiente.
WAW (write after write, escritura después de escritura): la instrucción B intenta
escribir un operando antes de que sea escrito por la A. Dado que las escrituras se están
realizando en orden incorrecto, el resultado final depositado es el correspondiente a la
instrucción A cuando debería ser el depositado por la B. Este conflicto sólo se produce
en procesadores segmentados que escriben en más de una etapa y esto no es muy
frecuente. Este riesgo, igual que el anterior, se podría producir en máquinas que
permiten direccionamientos autoindexados. Al igual que el riesgo WAR, los riesgos
WAW también podrían aparecer si se cambiara el orden de ejecución de las
instrucciones. Podrá existir un riesgo WAW entre las instrucciones A y B si existe
dependencia de salida entre las citadas instrucciones, es decir, si se verifica que: OA ∩
OB = ∅.
Aunque, como en los casos anteriores, esta condición no es suficiente para la
existencia del riesgo. Debe observarse que RAR (lectura después de lectura) no
constituye ningún riesgo puesto que ninguna de las dos instrucciones cambia el valor
del dato.
Existen técnicas para detectar los conflictos por dependencias de datos. Estas técnicas
precisan algo de hardware adicional: unos buffers, que guarden los números de los
registros implicados en las últimas instrucciones, junto con unos comparadores. Los
buffers tendrán una estructura de registro de desplazamiento, de forma que la
posición del número de registro dentro del desplazador nos dirá en qué segmento se
encuentra y la clase de operación que se efectúa sobre él (lectura o escritura). Los
comparadores analizarán si coinciden los operandos de la instrucción que va a
ejecutarse, con los de alguna de las anteriores con las que pueda entrar en conflicto. Si
existe conflicto, como primera solución, se detendrá la ejecución de la instrucción
hasta que las anteriores hayan avanzado y la dependencia desaparezca (esto es lo que
se llama insertar una burbuja). Frecuentemente, en este caso, se dice que se impide la
emisión de la instrucción, ya que se llama así al paso de la instrucción de la etapa de
decodificación a la siguiente, donde comienza la ejecución efectiva de la instrucción
(localización de operandos).
Una solución para reducir la duración de estas detenciones es hacer uso del resultado,
en cuanto se disponga de él, aunque no se haya escrito en el registro afectado; este
método se llama anticipación.
Existen también técnicas para evitar las posibles detenciones que podría producir un
© Universidad Estatal de Milagro – UNEMI
Conflictos de control
“Este tipo de conflictos se producen en los procesadores de instrucciones
segmentados. Como se mencionó anteriormente, los conflictos de control se deben a
las instrucciones de control del flujo, que no permiten que se lea la instrucción
siguiente hasta que no se conozca su dirección (que precisamente es calculada por la
propia instrucción de control de flujo). Parece claro que una instrucción de control de
flujo provocará una detención del procesador, ya que el cálculo de la dirección de
destino, al menos en principio, se efectúa en la fase de escritura de resultado (de la
instrucción de control) y esta fase suele ser la última. Esto es especialmente válido en
las instrucciones de bifurcación condicional. Una imagen gráfica de un conflicto de
control puede verse en la figura 21. Conflictos de esta misma índole se producen
también debido a los desvíos e interrupciones. En estos casos, los conflictos son más
graves porque no están previstos en el programa y, por tanto, son mucho más difíciles
de controlar.” (Universidad de Valladolid - Departamento de Informática, 2020)
pueden servir para hacernos una idea de la incidencia de los conflictos de control en el
rendimiento de un procesador segmentado:
Sea Pt la probabilidad de que una instrucción de control sea efectiva, entonces, y con
los anteriores supuestos, el tiempo de ejecución de m tareas será:” (Universidad de
Valladolid - Departamento de Informática, 2020)
Otra forma de medir las pérdidas por riesgos de control sería calcular el CPI teniendo
en cuenta estos riesgos (pero prescindiendo de los demás), es decir:
© Universidad Estatal de Milagro – UNEMI
Como se ve las pérdidas debidas a los conflictos de control son bastante importantes,
ya que, en condiciones ideales, el CPI estacionario debe ser 1. Esto significa que la
eficiencia se calculará dividiendo este CPI ideal por el obtenido en 2.9, por tanto:
Una de las soluciones para evitar estas pérdidas de rendimiento es hacer que el
compilador encuentre algo útil para hacer mientras calcula la dirección del destino del
salto. Esto se conseguirá reordenando las instrucciones de la misma forma que se
hacía en la planificación estática de los riesgos por dependencias de datos. Si el
compilador no pudiera encontrar ninguna instrucción para ocupar los huecos libres
dejados por la instrucción de salto, rellenaría con instrucciones NOP. Para llevar a cabo
este método, denominado bifurcación retardada, tienen que ponerse de acuerdo en la
forma de operar el hardware y el compilador.
Existen otros métodos más sofisticados para mejorar las bifurcaciones. Estos métodos
se basan en la predicción del destino de los saltos para las instrucciones de bifurcación
condicional. Esta predicción puede hacerse a nivel estático (compilador) o a nivel
dinámico (en ejecución).
El problema de todos los métodos de predicción es que, si ésta es incorrecta, hay que
descartar las instrucciones que hayan entrado en el cauce equivocadamente, y eso
puede acarrear una pérdida de rendimiento muy grande:
▪ La predicción estática
▪ La predicción dinámica”. (Universidad de Valladolid - Departamento de
Informática, 2020)
© Universidad Estatal de Milagro – UNEMI
4. Bibliografía
Objetivo: ........................................................................................................................ 3
2. Introducción......................................................................................................................... 4
4. Bibliografía ......................................................................................................................... 23
2
Almacenamiento
1. Unidad 4: Almacenamiento y
buses del sistema
Tema 1: Almacenamiento
Objetivo:
2. Introduccion
El presente documento contiene información sobre los diferentes tipos de
almacenamiento, sus características, tecnología usada, ventajas y desventajas.
“De forma similar, se refiere a formas de almacenamiento masivo como discos ópticos
y tipos de almacenamiento magnético como discos duros y otros tipos de
almacenamiento más lentos que las memorias RAM, pero de naturaleza más
permanente. Estas distinciones contemporáneas son de ayuda porque son
fundamentales para la arquitectura de computadores en general. Además, se refleja
una diferencia técnica importante y significativa entre memoria y dispositivos de
almacenamiento masivo, que se ha ido diluyendo por el uso histórico de los términos
"almacenamiento primario" (a veces "almacenamiento principal"), para memorias de
acceso aleatorio, y "almacenamiento secundario" para dispositivos de
almacenamiento masivo. Esto se explica en las siguientes secciones, en las que el
término tradicional "almacenamiento" se usa como subtítulo por conveniencia.”
(Centro de Bachillerato Tecnológico "Thomas Alva Edison", 2020)
1. Almacenamiento primario.
2. Almacenamiento secundario.
3. Almacenamiento terciario.
4. Almacenamiento fuera de línea.
5. Almacenamiento de red”. (Centro de Bachillerato Tecnológico "Thomas Alva
Edison", 2020)
Almacenamiento primario
“La memoria primaria está directamente conectada a la CPU de la computadora. Debe
estar presente para que la CPU funcione correctamente. El almacenamiento primario
consiste en tres tipos de almacenamiento:” (Centro de Bachillerato Tecnológico
"Thomas Alva Edison", 2020)
“• La memoria principal contiene los programas en ejecución y los datos con que
operan. Se puede transferir información muy rápidamente entre un registro del
microprocesador y localizaciones del almacenamiento principal. En las computadoras
modernas se usan memorias de acceso aleatorio basadas en electrónica del estado
Almacenamiento secundario
“La memoria secundaria requiere que la computadora use sus canales de
entrada/salida para acceder a la información y se utiliza para almacenamiento a largo
plazo de información persistente. Sin embargo, la mayoría de los sistemas operativos
usan los dispositivos de almacenamiento secundario como área de intercambio para
incrementar artificialmente la cantidad aparente de memoria principal en la
computadora. (A ésta utilización de almacenamiento secundario se le denomina
memoria virtual).” (Centro de Bachillerato Tecnológico "Thomas Alva Edison", 2020)
“La memoria secundaria también se llama "de almacenamiento masivo". Un disco duro
es un ejemplo de almacenamiento secundario. Habitualmente, la memoria secundaria
o de almacenamiento masivo tiene mayor capacidad que la memoria primaria, pero es
mucho más lenta. En las computadoras modernas, los discos duros suelen usarse como
dispositivos de almacenamiento masivo. El tiempo necesario para acceder a un byte de
información dado almacenado en un disco duro de platos magnéticos es de unas
milésimas de segundo (milisegundos). En cambio, el tiempo para acceder al mismo tipo
de información en una memoria de acceso aleatorio (RAM) se mide en mil-
millonésimas de segundo (nanosegundos). Esto ilustra cuan significativa es la
diferencia entre la velocidad de las memorias de estado sólido y la velocidad de los
dispositivos rotantes de almacenamiento magnético u óptico: los discos duros son del
orden de un millón de veces más lentos que la memoria (primaria).” (Centro de
Bachillerato Tecnológico "Thomas Alva Edison", 2020)
Almacenamiento de red
“El almacenamiento de red es cualquier tipo de almacenamiento de computadora que
incluye el hecho de acceder a la información a través de una red informática.
Discutiblemente, el almacenamiento de red permite centralizar el control de
información en una organización y reducir la duplicidad de la información. El
almacenamiento en red incluye:” (Centro de Bachillerato Tecnológico "Thomas Alva
Edison", 2020)
“El conjunto de platos gira de 5400 a 15 000 rpm y tiene un diámetro que va desde una
pulgada a alrededor de 3.5 pulgadas. Cada superficie del disco se divide en círculos
concéntricos, denominados pistas. Normalmente existen de 10 000 a 50 000
pistas por superficie. A su vez, cada pista se divide en sectores que es donde se
almacena la información; cada pista puede tener de 100 a 500 sectores. Los sectores
tienen normalmente una capacidad de 512 bytes, aunque existe una iniciativa para
incrementar el tamaño del sector a 4096 bytes. La secuencia almacenada en el medio
magnético está constituida por un número de sector, un hueco, la información
asignada a ese sector que incluye un código de corrección de errores, un hueco, el
número del sector siguiente, y así sucesivamente. Originalmente, todas las pistas
tenían el mismo número de sectores y por ello el mismo número de bits, pero con la
introducción de la grabación de bits por zonas (ZBR) a principios de los 90, los discos se
modificaron para disponer de un número variable de sectores (y por lo tanto de bits)
por pista, manteniendo constante el espaciado entre bits. ZBR incrementa el número
de bits en las pistas exteriores y por ello incrementa la capacidad de almacenamiento
del periférico.” (Patterson & Hennessy, 2011)
los datos, el sistema operativo debe dirigir el disco mediante un proceso de tres
etapas. La primera consiste en posicionar el cabezal sobre la pista correcta. Esta
operación se denomina búsqueda, y el tiempo necesario para mover el cabezal a la
pista deseada se denomina tiempo de búsqueda.” (Patterson & Hennessy, 2011)
“Los fabricantes de discos indican en los manuales correspondientes cuáles son los
tiempos mínimos de búsqueda, los tiempos máximos de búsqueda y los tiempos
promedio de búsqueda. Los dos primeros son fáciles de medir, pero el promedio está
abierto a distintas interpretaciones debido a que depende de la distancia de búsqueda.
La industria ha decidido calcular el tiempo promedio de búsqueda como la suma de los
Hennessy, 2011)
“Un controlador de disco normalmente gestiona todo el control del disco, así como la
transferencia entre el disco y la memoria. El controlador añade un componente final al
tiempo de acceso al disco, el tiempo del controlador, que es el tiempo adicional que el
controlador necesita para realizar un acceso de E/S. El tiempo promedio para realizar
una operación de E/S estará formado por estos cuatro tiempos más los tiempos de
espera debido a que otros procesos están utilizando el disco. Las densidades de los
discos han aumentado continuamente durante más de 50 años. El impacto de la
combinación de la mejora en densidad y la reducción del tamaño físico de un periférico
Figura 1. Seis discos magnéticos, cuyos diámetros varían desde 14 pulgadas a 1.8 pulgadas.
Fuente: (Patterson & Hennessy, 2011)
© Universidad Estatal de Milagro – UNEMI
“Aunque el coste por gigabyte es mayor que en los discos magnéticos, la memoria
flash se utiliza habitualmente en dispositivos móviles, en parte porque se presenta con
capacidades menores. Como resultado, los discos de diámetro 1 pulgada están
desapareciendo del mercado de los dispositivos empotrados. Por ejemplo, en 2008 el
reproductor MP3 Apple iPod Shuffle se vendía por $50 y tenía 1 GB de capacidad,
mientras que el disco más pequeño tenía una capacidad de 4 GB y su precio era mayor
que el reproductor MP3 completo. La memoria flash es un tipo de memoria de sólo
“Hay también disponibles memorias flash con tamaños similares a la de los discos
estándar, como se muestra en la figura 3. Combinando estas ideas, los discos duros
© Universidad Estatal de Milagro – UNEMI
híbridos incluyen, por ejemplo, una memoria flash de un gigabyte para que los
portátiles puedan arrancar más rápidamente y ahorrar energía permitiendo que los
discos estén inactivos más frecuentemente. Parece que en los próximos años las
memorias flash podrán competir con éxito con los discos duros en el segmento de
dispositivos con baterías. Como la capacidad aumenta y el coste por gigabyte sigue
disminuyendo, será interesante comprobar si las mayores prestaciones y la mejor
eficiencia energética de las memorias flash le da oportunidades también en el
segmento de los computadores de sobremesa y los servidores.” (Patterson &
Hennessy, 2011)
Figura 4. Características de las memorias flash NOR frente a las memorias flash NAND en 2008.
Fuente: (Patterson & Hennessy, 2011)
© Universidad Estatal de Milagro – UNEMI
“El desarrollo del almacenamiento de datos en la nube, mejor conocido como cloud
computing, se da gracias al uso de equipos virtuales (Furht y Escalante, 2011); implica
una infraestructura informática invisible para el usuario, pero al utilizarla parece que
se tuviera un equipo físico real, permitiendo la gran ventaja de determinar el número
de procesamiento, el sistema operativo, el tamaño de memoria RAM y de disco de
“El nombre de cloud computing proviene de la utilización del símbolo con forma de
nube o cloud, que es el diagrama usado en sistemas como una abstracción para
determinar internet, mientras que computing implica la informática. Una buena
definición de esto es la que ha formulado el NIST (Mell y Grance, 2011; Joyanes
Aguilar, 2012), que la considera como:
“un modelo que permite el acceso bajo demanda a través de la red a un
conjunto compartido de recursos de computación configurables (como por
ejemplo red, servidores, almacenamiento, aplicaciones y servicios) que pueden
ser rápidamente aprovisionados con el mínimo esfuerzo de gestión o
interacción del proveedor del servicio (Mell y Grance, 2009, citados por Joyanes
Aguilar, 2012, p. 91).” (La Red de Revistas Científicas de América Latina y el
Caribe, 2020)
“Una bondad de los entornos de la nube es que, sin duda, proporciona una posible
herramienta para el almacenamiento de grandes volúmenes de datos. El
almacenamiento en la nube o cloud storage es el espacio para acopiar datos,
información, objetos digitales, y otros, que se acceden por internet a través de un
servicio web, mediante un navegador como Explorer, Firefox, Chrome o Safari. Además
de un aprovisionamiento de recursos informáticos bajo demanda, con control variable
para el usuario y neutrales ante sistemas operativos (Sosinsky, 2011), estas
características hacen único al almacenamiento en la nube.” (La Red de Revistas
Científicas de América Latina y el Caribe, 2020)
“Hay que tener en cuenta que el almacenamiento puede ser brindado por un
proveedor de servicios (nube pública) o una versión privada (nube privada); ésta
© Universidad Estatal de Milagro – UNEMI
última es creada por una organización particular para su uso interno, con un completo
control de los recursos en tecnologías de información.” (La Red de Revistas Científicas
de América Latina y el Caribe, 2020)
• Costes: por muy tentadoras que sean las posibilidades del almacenamiento en
línea, incluso la mejor solución se ha de ajustar al presupuesto disponible. Por lo
general, los proveedores ofrecen una gama de modelos de suscripción que difieren
en términos de volumen de almacenamiento, pero en parte también en el abanico
© Universidad Estatal de Milagro – UNEMI
• Seguridad: como cualquier aplicación web, los servicios en la nube también son
hasta cierto punto vulnerables. La tarea y el deber de un buen proveedor es, por lo
tanto, asegurarse de proteger todos los archivos y datos de los usuarios para evitar
la pérdida o el robo de datos. Los modernos centros de datos y las
sofisticadas estrategias de cortafuegos y copias de seguridad se encuentran entre
las medidas deseables, al igual que el cifrado de los datos almacenados y la propia
transferencia de datos. Si la protección de datos también está sobre la mesa, es
inevitable echar un vistazo a la ubicación del servidor: ¿almacena el proveedor sus
datos en un país de la UE? De lo contrario, el manejo de la información sensible de
acuerdo con las normas actuales de protección de datos (RGDP) no estaría
garantizado.
4. Bibliografía
Objetivo: ........................................................................................................................ 3
2. Introducción......................................................................................................................... 4
4. Bibliografía ......................................................................................................................... 18
2
Bus del sistema
1. Unidad 4: Almacenamiento y
buses del sistema
Tema 2: Bus del sistema
Objetivo:
2. Introduccion
El presente documento contiene información de la forma de comunicarse entre los
diferentes subsistemas de un computador, mediante el uso de interfaces o buses.
El subtema 2, nos explica las interfaces de E/S con el Procesador, Memoria y sistema
Operativo.
© Universidad Estatal de Milagro – UNEMI
“Una razón por la que el diseño de un bus es tan difícil es que su velocidad máxima
está en gran medida limitada por factores físicos: la longitud del bus y el número de
dispositivos. Estos límites físicos evitan que la frecuencia del bus sea arbitrariamente
elevada. Además, la necesidad de soportar una gama de dispositivos con latencias y
ritmos de transferencia de datos que varían ampliamente también hace que el diseño
de un bus sea un reto.
Como es muy difícil proporcionar una alta frecuencia utilizando muchos conductores
en paralelo debido al desplazamiento y reflexión de la señal de reloj la industria está
sustituyendo los buses paralelos compartidos por las interconexiones serie punto a
punto de alta velocidad utilizando conmutadores. Por ello, estas redes están
reemplazando gradualmente a los buses en nuestros sistemas. Como resultado de esta
transición, esta sección ha sido revisada en esta edición para enfatizar el problema que
genera la conexión de los dispositivos E/S, procesadores y memoria, en vez de
concentrarse exclusivamente en los buses. “ (Patterson & Hennessy, 2011)
“Los buses tradicionales son síncronos. Si un bus es síncrono, incluye un reloj en las
líneas de control y un protocolo de comunicaciones que se referencia a la señal de
reloj. Por ejemplo, para un bus procesador-memoria que realiza una lectura desde
memoria, podríamos tener un protocolo que transmite la dirección y el comando de
lectura en el primer ciclo de reloj, utilizando las líneas de control para indicar el tipo
de petición. Entonces, la memoria podría tener que responder con la palabra de datos
en el quinto ciclo de reloj. Este tipo de protocolo puede ser implementado fácilmente
con una pequeña máquina de estados finitos. Como el protocolo está predeterminado
e implica poca lógica, el bus puede funcionar a alta frecuencia y la lógica de la interfaz
será pequeña. Sin embargo, los buses síncronos tienen dos grandes desventajas.”
(Patterson & Hennessy, 2011)
“En primer lugar, cada dispositivo conectado al bus debe funcionar a la misma
frecuencia de reloj. En segundo lugar, debido a problemas de desalineamiento del
reloj, los buses síncronos no pueden ser largos si se quiere que funcionen a alta
frecuencia (véase el apéndice C). Los buses procesador-memoria a menudo son
síncronos debido a que los dispositivos que se intercomunican están cerca, son pocos y
están preparados para funcionar a altas frecuencias de reloj. Estos problemas llevan a
conexiones asíncronas. Una conexión asíncrona no tiene reloj, por lo que puede
adaptarse a una amplia variedad de dispositivos, y el bus puede ser todo lo largo que
se quiera sin preocuparse del desalineamiento del reloj o de problemas de
sincronización.
Todos los ejemplos de la figura 1 son asíncronos. Para coordinar la transmisión de
datos entre emisor y receptor, un bus asíncrono utiliza un protocolo con acuse de
recibo, que consiste en una serie de pasos en los cuales el emisor y receptor pasan al
siguiente paso sólo cuando ambas partes están de acuerdo. El protocolo se
implementa utilizando un conjunto adicional de líneas de control.” (Patterson &
Hennessy, 2011)
© Universidad Estatal de Milagro – UNEMI
Figura 2. Organización del sistema de E/S en un servidor basado en Intel que utiliza el conjunto
de chips 5000P.
Fuente: (Patterson & Hennessy, 2011)
“La figura 3 muestra tres ejemplos del conjunto de chips. Observe que AMD eliminó el
puente norte en el Opteron y productos posteriores, reduciendo de este modo en
número de chips y la latencia de memoria y tarjetas gráficas. Debido a la Ley de
© Universidad Estatal de Milagro – UNEMI
Moore, un número cada vez mayor de controladores de E/S que han estado
antiguamente disponibles como placas opcionales de ampliación que se conectaban a
buses de E/S han sido integradas en estos conjuntos de chips. Por ejemplo, el AMD
Opteron X4 y el Intel Nehalem incluyen puente norte en el microprocesador, y en el
chip del puente sur del Intel 975 se incorpora un controlador de RAID. Las
interconexiones de E/S proporcionan interconexión eléctrica entre dispositivos E/S,
procesadores y memoria, y también definen el protocolo de más bajo nivel para las
comunicaciones. Por encima de este nivel básico, debemos definir protocolos
hardware y software para controlar las transferencias de datos entre los dispositivos
“La E/S asignada al espacio de memoria se puede utilizar también para transmitir datos
a través de la escritura o lectura en direcciones específicas. El dispositivo utiliza la
dirección para determinar el tipo de comando, y los datos se pueden proporcionar por
una escritura u obtener por una lectura. En cualquier caso, la dirección codifica tanto la
identidad del dispositivo como el tipo de transmisión entre el procesador y el
dispositivo. La realización de una lectura o escritura de datos para satisfacer una
petición del programa requiere realmente varias operaciones separadas de E/S.
Además, el procesador puede tener que averiguar el estado del dispositivo entre
comandos individuales para determinar si el comando terminó correctamente. Por
ejemplo, una impresora sencilla tiene dos registros para el dispositivo de E/S: uno para
© Universidad Estatal de Milagro – UNEMI
la información sobre el estado y otro para que los datos sean impresos. El registro de
Estado contiene un bit de “finalización” (done bit), activado por la impresora cuando
ha impreso un carácter, y un bit de error, que indica que la impresora está atascada o
sin papel. Cada byte de datos que se va a imprimir se pone en el registro de Datos. El
procesador debe entonces esperar hasta que la impresora active el bit de finalización
antes de que pueda poner otro carácter en el búfer. El procesador debe también
comprobar el bit de error para determinar si ha ocurrido algún problema. Cada una de
estas operaciones requiere un acceso separado al dispositivo de E/S.” (Patterson &
Hennessy, 2011)
“Puede ocurrir que el procesador lea muchas veces el registro de Estado sólo para
encontrar que el dispositivo todavía no ha terminado una operación de E/S que es
comparativamente más lenta, o que el ratón no se ha movido desde la vez última que
se realizó la encuesta. Cuando el dispositivo termina una operación, aún debemos leer
el estado para determinar si se ejecutó con éxito. El tiempo de sobrecarga de la E/S por
encuesta fue reconocido hace tiempo y condujo a la propuesta de usar interrupciones
para notificar al procesador que un dispositivo de E/S requiere la atención del
procesador. La E/S dirigida por interrupciones (interruptdriven I/O), que es utilizada
por casi todos los sistemas para al menos algunos dispositivos, emplea interrupciones
de E/S para indicar al procesador que un dispositivo de E/S necesita atención. Cuando
un dispositivo quiere notificar al procesador que ha terminado una cierta operación o
necesita atención, provoca una interrupción al procesador.” (Patterson & Hennessy,
2011)
“Una interrupción de E/S es como las excepciones vistas en otros capítulos, con dos
diferencias importantes:
© Universidad Estatal de Milagro – UNEMI
campo del código de excepción del registro de Estado: 0 significa que ocurrió una
interrupción, y otros valores indican las excepciones.” (Patterson & Hennessy, 2011)
“Aquí están los pasos que deben ocurrir en el manejo de una interrupción:
1. Realizar la operación Y lógica entre el campo de la interrupción pendiente y el
campo de la máscara de interrupción para ver cuál de las interrupciones habilitadas
podría ser la culpable. Se hace las copias de estos dos registros usando la instrucción
mfc0.
2. Seleccionar de estas interrupciones la de mayor prioridad. Según la convención
software, la prioridad más alta corresponde al extremo izquierdo.
puede haber dos copias de un dato: una en la caché y otra en memoria.” (Patterson &
Hennessy, 2011)
“Dado que procesador de DMA envía peticiones directamente a memoria sin pasar por
la caché del procesador, el valor de la posición de memoria considerado por el
controlador de DMA puede ser diferente del valor visto por el procesador. Considere
una lectura en el disco, que el controlador de DMA coloca directamente en memoria.
Si algunas de las posiciones en las cuales el DMA escribe están en la caché, el
procesador recibirá un valor obsoleto cuando realice una lectura. Así mismo, si la
caché es de escritura retardada (write-back) el DMA puede leer un valor directamente
de la memoria cuando un valor más reciente está en la caché, y dicho valor no se ha
reescrito aún en la memoria (write-back). A esto se le llama problema de los datos
obsoletos o problema de coherencia. Hemos visto tres métodos diferentes para
transferir datos entre un dispositivo de E/S y la memoria. Al pasar desde la E/S por
encuesta a una E/S dirigida por interrupción y, finalmente, a una interfaz de E/S por
acceso directo a memoria, pasamos la carga de gestionar una operación de E/S desde
el procesador a controladores de E/S progresivamente más inteligentes. Estos
métodos tienen la ventaja de liberar ciclos del procesador. Su desventaja es que
aumentan el coste del sistema de E/S. Por este motivo, un determinado sistema
informático puede elegir qué punto, a lo largo de este espectro de posibilidades, es
apropiado para los dispositivos de E/S conectados con él. Antes de tratar el diseño de
los sistemas de E/S, veamos brevemente cómo se miden sus prestaciones.” (Patterson
& Hennessy, 2011)
“En un sistema con memoria virtual, ¿debería el DMA trabajar con direcciones lógicas
o con direcciones físicas? La dificultad obvia con las direcciones lógicas es que el
controlador de DMA necesitará traducir las direcciones lógicas a direcciones físicas. El
problema principal cuando se usa una dirección física en una transferencia por DMA es
que la transferencia no puede cruzar fácilmente los límites de la página. Si una
operación de E/S cruzará un límite de página, entonces las posiciones de memoria
involucradas en la transferencia podrían no estar necesariamente contiguas en la
© Universidad Estatal de Milagro – UNEMI
memoria virtual. Por lo tanto, si utilizamos direcciones físicas, debemos restringir las
transferencias de DMA de forma que cada una de ellas sólo implique direcciones
dentro de una página. Un método que permite al sistema iniciar transferencias de
DMA que sobrepasen los límites de la página es hacer que el DMA trabaje con
direcciones virtuales. En estos sistemas, el controlador de DMA tiene unos cuantos
registros que proporcionan la correspondencia entre páginas virtuales y físicas para
una transferencia. El SO proporciona la información de correspondencia cuando se
inicia la operación de E/S. Con información de correspondencia, el controlador de DMA
no necesita preocuparse de la posición ocupada por las páginas virtuales involucradas
4. Bibliografía