Vous êtes sur la page 1sur 7

5.

7 ARQUITECTOS DIFERENTES
5.7.3 Canalización
Hemos aprendido que una computadora usa tres fases de búsqueda, decodificación y ejecución
para cada instrucción En las primeras computadoras, estas tres fases debían hacerse en serie para
cada instrucción En otras palabras, la instrucción n necesita terminar todas estas fases antes de la
La instrucción n + 1 puede iniciar sus propias fases. Las computadoras modernas utilizan una
técnica llamada tubería.para mejorar el rendimiento (el número total de instrucciones realizadas
en cada período de tiempo). La idea es que si la unidad de control puede hacer dos o tres de estas
fases. simultáneamente, la siguiente instrucción puede comenzar antes de que termine la anterior.
Figura 5.24.a muestra cómo se manejan tres instrucciones consecutivas en una computadora que
No utiliza tuberías. La Figura 5.24.b muestra cómo la canalización puede aumentar el rendimiento
de la ordenador permitiendo que diferentes tipos de fases pertenecientes a diferentes
instrucciones sean hecho simultáneamente. En otras palabras, cuando la CPU está realizando la
fase de decodificación de la primera instrucción, también puede realizar la fase de búsqueda de la
segunda instrucción. El primero la computadora puede realizar en promedio 9 fases en el período
específico de tiempo, mientras que conducido La computadora puede realizar 24 fases en el
mismo período de tiempo. Si asumimos que Cada fase usa la misma cantidad de tiempo, la
primera computadora ha hecho 9/3 = 3 instrucciones mientras que la segunda computadora ha
hecho 24/3 = 8 instrucciones. El rendimiento es por lo tanto Incremento 8/3 o 266 por ciento.
Por supuesto, la canalización no es tan fácil como esto. Hay algunos problemas, como cuando un
Se encuentra instrucción de salto. En este caso, la instrucción en la tubería debe ser descartada.
Sin embargo, los nuevos diseños de CPU han superado la mayoría de los inconvenientes. Algunos
nuevos diseños de CPU Incluso puede hacer varios ciclos de recuperación simultáneamente.
5.7.4 Procesamiento paralelo
Tradicionalmente, una computadora tenía una sola unidad de control, una sola unidad de lógica
aritmética y una Unidad de memoria única. Con la evolución de la tecnología y la caída del coste
de la informática.
hardware, hoy podemos tener una sola computadora con múltiples unidades de control, múltiples
Unidades aritméticas lógicas y múltiples unidades de memoria. Esta idea se conoce como paralela
tratamiento. Al igual que la canalización, el procesamiento paralelo puede mejorar el rendimiento.
El procesamiento paralelo implica muchas técnicas diferentes. Una vista general del paralelo.
el procesamiento viene dado por la taxonomía propuesta por M. J. Flynn. Esta taxonomía divide el
organización de la computadora (en términos de procesamiento de datos) en cuatro categorías,
como se muestra en Figura 5.25. Según Flynn, el procesamiento paralelo puede ocurrir en el flujo
de datos, la flujo de instrucciones, o ambos.
Organización SISD
Una sola organización de flujo de instrucciones, un solo flujo de datos (SISD) representa una
computadora que tiene una unidad de control, una unidad lógica aritmética y una unidad de
memoria múltiple.
Las instrucciones se ejecutan de forma secuencial y cada instrucción puede acceder a una o más
elementos de datos en el flujo de datos. Nuestra computadora simple presentada anteriormente
en el capítulo es Un ejemplo de organización SISD. La figura 5.26 muestra el concepto de
configuración para una
Organización SISD.
Organización SIMD
Un solo flujo de instrucciones, una organización de flujo de datos múltiple (SIMD) representa una
Computadora que tiene una unidad de control, varias unidades de procesamiento y memoria
múltiple. unidades. Todas las unidades del procesador reciben la misma instrucción de la unidad
de control, pero operan En diferentes elementos de los datos. Un procesador de matriz que opera
simultáneamente en una matriz de Los datos pertenecen a esta categoría. La figura 5.27 muestra
el concepto y la implementación de un Organización SIMD.
Organización MISD
Una arquitectura de flujo de instrucción múltiple, flujo de datos único (MISD) es aquella en la que
Varios Instrucciones que pertenecen a varios flujos de instrucciones operan simultáneamente.
en el mismo flujo de datos. La figura 5.28 muestra el concepto, pero nunca ha sido implementado.
Organización MIMD
Una arquitectura de flujo de instrucciones múltiple, flujo de datos múltiple (MIMD) es aquella en
la que Varias instrucciones pertenecientes a varias secuencias de instrucciones operan
simultáneamente en varias flujos de datos (cada instrucción en un flujo de datos). La figura 5.29
muestra el concepto y implementación. La organización MIMD es considerada como una
verdadera arquitectura de procesamiento paralelo. por algunos expertos. En esta arquitectura se
pueden realizar varias tareas simultáneamente. Los La arquitectura puede usar una sola memoria
compartida o varias secciones de memoria.
El procesamiento paralelo ha encontrado algunas aplicaciones, principalmente en la comunidad
científica, en las que una tarea puede tardar varias horas o días si se hace usando una arquitectura
de computadora tradicional. Algunos Se pueden encontrar ejemplos de esto en la multiplicación
de matrices muy grandes, en el procesamiento simultáneo. de grandes cantidades de datos para la
predicción del tiempo, o en simulaciones de vuelos espaciales.
5.8 UNA COMPUTADORA SIMPLE
Para explicar la arquitectura de las computadoras, así como su procesamiento de instrucciones,
presentamos una computadora simple (no realista), como se muestra en la Figura 5.30. Nuestra
computadora simple tiene tres componentes: CPU, memoria y un subsistema de entrada / salida.
5.8.1 CPU
La propia CPU se divide en tres secciones: registros de datos, unidad lógica aritmética (ALU),
y la unidad de control.
Registros de datos
Hay dieciséis registros de datos de 16 bits con direcciones hexadecimales (0, 1, 2, ..., F) 16, pero
nosotros referirse a ellos como R0 a R15. En la mayoría de las instrucciones, contienen datos de 16
bits, pero en algunas instrucciones pueden tener otra información.
Unidad de control
La unidad de control tiene los circuitos para controlar las operaciones de la ALU, acceso a la
memoria, y acceso al subsistema de E / S. Además, cuenta con dos registros dedicados: programa.
Contador y registro de instrucciones. El contador de programas (PC), que puede contener solo
ocho bits, realiza un seguimiento de qué instrucción se debe ejecutar a continuación. El contenido
de la PC apunta a la dirección de la ubicación de memoria de la memoria principal que contiene el
siguiente programa instrucción. Después de cada ciclo de la máquina, el contador del programa se
incrementa en uno para apuntar a la siguiente instrucción del programa. El registro de
instrucciones (IR) tiene un valor de 16 bits que es
La instrucción codificada para el ciclo actual.
5.8.2 Memoria principal
La memoria principal tiene 256 ubicaciones de memoria de 16 bits con direcciones binarias
(00000000 a
11111101) 2 o direcciones hexadecimales (00 a FD) 16. La memoria principal contiene tanto datos
como programa de instrucciones. Las primeras 64 ubicaciones (00 a 3F) 16 están dedicadas a las
instrucciones del programa.
Las instrucciones del programa para cualquier programa se almacenan en ubicaciones de memoria
consecutivas.
Las ubicaciones de memoria (40 a FD) 16 se utilizan para almacenar datos.
5.8.3 Subsistema de entrada / salida
Nuestra computadora simple tiene un subsistema de entrada / salida muy primitivo. El subsistema
consiste De un teclado y un monitor. Aunque mostramos el teclado y el monitor en una caja
separada. En la Figura 5.30, el subsistema es parte de la memoria en cuanto a la dirección. Estos
dispositivos tienen memoria- Direcciones mapeadas, como se discutió anteriormente en el
capítulo. Suponemos que el teclado (como dispositivo de entrada) y monitor (como único
dispositivo de salida) actúan como ubicaciones de memoria con las direcciones (FE) 16 y (FF) 16
respectivamente, como se muestra en la figura. En otras palabras, nosotros Supongamos que se
comportan como registros de 16 bits que interactúan con la CPU como una ubicación de memoria
haría. Estos dos dispositivos transfieren datos del mundo exterior a la CPU y viceversa.
5.8.4 Conjunto de instrucciones
Nuestra computadora simple es capaz de tener un conjunto de 16 instrucciones, aunque estamos
usando Solo 14 de estas instrucciones. Cada instrucción de computadora consta de dos partes: la
operación código (código de operación) y los operandos (s). El código de operación especifica el
tipo de operación a ser realizado en el operando (s). Cada instrucción consta de 16 bits divididos
en cuatro de 4 bits. campos. El campo situado más a la izquierda contiene el código de operación y
los otros tres campos contienen el operando o la dirección del operando (s), como se muestra en
la Figura 5.31.
Las instrucciones se enumeran en la Tabla 5.4 a continuación. Tenga en cuenta que no todas las
instrucciones requieren tres operandos Cualquier campo de operando que no sea necesario se
rellena con (0) 16. Por ejemplo, los tres campos de operandos. de la instrucción de detención, y el
último campo del movimiento y las instrucciones NO se rellenan con (0) 16. También tenga en
cuenta que una dirección de registro se describe mediante un solo dígito hexadecimal y, por lo
tanto, utiliza campo, pero una ubicación de memoria se describe mediante dos dígitos
hexadecimales y utiliza dos campos.
Hay dos instrucciones para agregar: una para agregar enteros (ADDI) y otra para agregar flotantes
Números de puntos (ADDF). La computadora simple puede tomar entrada desde el teclado si
usamos address (FE) 16 como el segundo operando de la instrucción LOAD. Del mismo modo, la
computadora envía. Salida al monitor si usamos la dirección (FF) 16 como el segundo operando de
la TIENDA instrucción. Si el tercer operando de la instrucción ROTATE es 0, la instrucción
circularmente rota el patrón de bits en R hacia la derecha n lugares: si el tercer operando es 1, lo
rota al izquierda. También hemos incluido una instrucción de incremento (INC) y una de
decremento (DEC).
5.8.5 Procesando las instrucciones
Nuestra computadora simple, como la mayoría de las computadoras, usa ciclos de máquinas. Un
ciclo esta hecho de
Tres fases: buscar, decodificar y ejecutar. Durante la fase de búsqueda, la instrucción cuyos
la dirección la determina la PC, se obtiene de la memoria y se carga en el IR.
La PC se incrementa para apuntar a la siguiente instrucción. Durante la fase de decodificación,
la instrucción en el IR se decodifica y los operandos necesarios se recuperan de la
registro o de la memoria. Durante la fase de ejecución, la instrucción se ejecuta y la
los resultados se colocan en la ubicación de memoria apropiada o en el registro. Una vez el tercero
se completa la fase, la unidad de control inicia el ciclo nuevamente, pero ahora la PC apunta
a la siguiente instrucción. El proceso continúa hasta que la CPU alcanza un HALT.
instrucción.
Un ejemplo
Mostremos cómo nuestra simple computadora puede agregar dos enteros A y B y crear el
resultado
como C. Suponemos que los enteros están en formato de complemento de dos.
Matemáticamente, mostramos
esta operación como:
C5A1B
Para resolver este problema con la computadora simple, es necesario para los dos primeros
enteros.
se mantendrá en dos registros (por ejemplo, R0 y R1) y el resultado de la operación
se mantendrá en un tercer registro (por ejemplo, R2). La ALU solo puede operar sobre los datos
que se almacena en los registros de datos en la CPU. Sin embargo, la mayoría de las
computadoras, incluyendo nuestra
Computadora simple, tiene un número limitado de registros en la CPU. Si el número de datos
Los artículos son grandes y se supone que deben permanecer en la computadora durante todo el
programa, es mejor almacenarlos en la memoria y solo llevarlos a los registros
temporalmente. Así que asumimos que los dos primeros enteros se almacenan en ubicaciones de
memoria
(40) 16 y (41) 16 y el resultado debe almacenarse en la ubicación de la memoria (42) 16. Esta
significa que se deben cargar dos enteros en la CPU y el resultado debe ser
almacenados en la memoria. Por lo tanto, un programa simple para hacer las necesidades de
adición simple
Cinco instrucciones, como se muestra a continuación:
1. Cargue el contenido de M40 en el registro R0 (R0 ← M40).
2. Cargue el contenido de M41 en el registro R1 (R1 ← M41).
3. Agregue el contenido de R0 y R1 y coloque el resultado en R2 (R2 ← R0 + R1).
4. Almacenar los contenidos R2 en M42 (M42 ← R2).
5. Detener.
5.8.6 Programa de almacenamiento y datos
Para seguir el modelo de von Neumann, necesitamos almacenar el programa y los datos en la
memoria.
Podemos almacenar el programa de cinco líneas en la memoria comenzando desde la ubicación
(00) 16 a (04) 16. Nosotros
Ya sabemos que los datos deben almacenarse en las ubicaciones de memoria (40) 16, (41) 16 y
(42) 16.
5.8.7 ciclos
Nuestra computadora usa un ciclo por instrucción. Si tenemos un pequeño programa con cinco
instrucciones,
Necesitamos cinco ciclos. También sabemos que cada ciclo se compone normalmente de tres
Pasos: buscar, decodificar, ejecutar. Supongamos por el momento que necesitamos agregar 161 +
254 = 415.
Los números que se muestran en memoria en formato hexadecimal son, (00A1) 16, (00FE) 16 y
(019F) 16.
Ciclo 1
Al comienzo del primer ciclo (Figura 5.32), el PC apunta a la primera instrucción del
programa, que se encuentra en la ubicación de memoria (00) 16. La unidad de control pasa por
tres pasos:
1. La unidad de control recupera las instrucciones almacenadas en la ubicación de memoria (00)
16 y las pone
en el IR. Después de este paso, el valor de la PC se incrementa.
2. La unidad de control decodifica la instrucción (1040) 16 como R0 ← M40.
3. La unidad de control ejecuta la instrucción, lo que significa que una copia del entero
almacenado en la ubicación de memoria (40) se carga en el registro R0.
Ciclo 2
Al comienzo del segundo ciclo (Figura 5.33), el PC apunta a la segunda instrucción
del programa, que se encuentra en la ubicación de memoria (01) 16. La unidad de control pasa por
tres pasos:
1. La unidad de control busca las instrucciones almacenadas en la memoria (01) 16 y las coloca
en el IR. Después de este paso, el valor de la PC se incrementa.
2. La unidad de control decodifica la instrucción (1141) 16 como R1 ← M41.
3. La unidad de control ejecuta la instrucción, lo que significa que una copia del entero
almacenada
en la ubicación de memoria (41) 16 se carga en el registro R1.
Ciclo 3
Al comienzo del tercer ciclo (Figura 5.34), el PC apunta a la tercera instrucción de
El programa, que se encuentra en la ubicación de memoria (02) 16. La unidad de control pasa por
tres pasos:
1. La unidad de control recupera las instrucciones almacenadas en la memoria (02) 16 y las coloca
en el IR. Después de este paso, el valor de la PC se incrementa.
2. La unidad de control decodifica la instrucción (3201) 16 como R2 ← R0 + R1.
3. La unidad de control ejecuta la instrucción, lo que significa que se agrega el contenido de R0
al contenido de R1 (por la ALU) y el resultado se coloca en R2.
Ciclo 4
Al comienzo del cuarto ciclo (Figura 5.35), el PC apunta a la cuarta instrucción de
El programa, que se encuentra en la ubicación de memoria (03) 16. La unidad de control pasa por
tres pasos:
1. La unidad de control recupera las instrucciones almacenadas en la memoria (03) 16 y las coloca
en el IR. Después de este paso, el valor de la PC se incrementa.
2. La unidad de control decodifica la instrucción (2422) 16 como M42 ← R2.
3. La unidad de control ejecuta la instrucción, lo que significa una copia del número entero en el
registro R2
Se almacena en la ubicación de memoria (42) 16.
Ciclo 5
Al comienzo del quinto ciclo (Figura 5.36), el PC apunta a la quinta instrucción de la
programa, que se encuentra en la ubicación de memoria (04) 16. La unidad de control pasa por
tres pasos:
1. La unidad de control recupera las instrucciones almacenadas en la memoria (04) 16 y las coloca
en el IR. Después de este paso, el valor de la PC se incrementa.
2. La unidad de control decodifica la instrucción (0000) 16 como Halt.
3. La unidad de control ejecuta la instrucción, lo que significa que la computadora se detiene.
5.8.8 Otro ejemplo
En el ejemplo anterior, asumimos que los dos enteros que se agregarían ya estaban en
memoria. También asumimos que el resultado de la adición se mantendrá en la memoria. Tu
puedes preguntar
cómo podemos almacenar los dos enteros que queremos agregar en la memoria, o cómo usamos
el resultado cuando se almacena en la memoria. En una situación real, ingresamos los dos
primeros enteros en memoria usando un dispositivo de entrada como el teclado, y mostramos el
tercer entero a través
Un dispositivo de salida como un monitor. La obtención de datos a través de un dispositivo de
entrada normalmente se denomina
La operación de lectura, mientras que el envío de datos a un dispositivo de salida normalmente se
denomina operación de escritura.
Para que nuestro programa anterior sea más práctico, necesitamos modificarlo de la siguiente
manera:
1. Lee un número entero en M40.
2. R0 ← M40.
3. Lee un número entero en M41.
4. R1 ← M41.
5. R2 ← R0 + R1.
6. M42 ← R2.
7. Escribe el número entero de M42.
8. Detener.
Hay muchas formas de implementar entrada y salida. La mayoría de las computadoras hoy en día
dirigen transferencia de datos desde un dispositivo de entrada a la memoria y transferencia
directa de datos desde la memoria a una dispositivo de salida. Sin embargo, nuestra simple
computadora no es una de ellas. En nuestra computadora podemos
simule operaciones de lectura y escritura utilizando las instrucciones LOAD y STORE. Además,
CARGAR y ALMACENAR la entrada de datos de lectura a la CPU y escribir datos de la CPU.
Necesitamos dos instrucciones para leer datos en la memoria o escribir datos fuera de la memoria.
La operación de lectura es:
R ← MFE Porque se supone que el teclado es la ubicación de memoria (FE) 16
M←R
La operación de escritura es:
R←M
MFF ← R Porque se supone que el monitor es la ubicación de memoria (FF) 16
Puede preguntar, si se supone que las operaciones deben realizarse en la CPU, ¿por qué
transferimos?
¿Los datos del teclado a la CPU, luego a la memoria, luego a la CPU para procesar?
¿Podríamos transferir directamente datos a la CPU? La respuesta es que podemos hacer esto por
esto.
Pequeño problema, pero no deberíamos hacerlo en principio. Piensa qué pasa si necesitamos
añadir.
1000 números u ordena 1 000 000 enteros. El número de registros en la CPU es limitado (se
pueden ser cientos en una computadora real, pero aún no es suficiente).
La operación de entrada siempre debe leer datos de un dispositivo de entrada en la memoria: la
operación de salida siempre debe escribir datos de la memoria a un dispositivo de salida.
Con esto en mente, el programa está codificado como:
1 (1FFE) 16 5 (1040) 16 9 (1F42) 16
2 (240F) 16 6 (1141) 16 10 (2FFF) 16
3 (1FFE) 16 7 (3201) 16 11 (0000) 16
4 (241F) 16 8 (2422) 16
Las operaciones 1 a 4 son para entrada y las operaciones 9 y 10 son para salida. Cuando corremos
esto programa, espera a que el usuario ingrese dos enteros en el teclado y presione la tecla enter
llave. El programa calcula la suma y muestra el resultado en el monitor.
5.8.9 Reutilización
Una de las ventajas de una computadora sobre una calculadora no programable es que podemos
Usa el mismo programa una y otra vez. Podemos ejecutar el programa varias veces y cada vez.
Ingrese diferentes entradas y obtenga una salida diferente.

Vous aimerez peut-être aussi