Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Copy of Nivel de Microarquitectura

No description
by

Juan Gonzalez

on 15 November 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Copy of Nivel de Microarquitectura

EL NIVEL DE
MICROARQUITECTURA

La trayectoria de datos
Nivel de
microarquitectura

1 ej. de
microarquitectura

Equipo 1
Lo ideal sería comenzar explicando los principios generales del diseño de microarquitecturas.
La trayectoria de datos es la parte de la CPU que contiene la ALU, sus entradas y sus salidas.
Pérez Ortega Ana Laura
Quezada Delgado Diego
Rodríguez Gálvez Irma Jessica
Ruiz Mondragón Christian Josué
Sánchez Gudiño Joel

El nivel que está arriba del de 1ógica digital es el de la microarquitectura.
Su tarea es implementar el nivel ISA (arquitectura de conjunto de instrucciones) que está arriba de él
El diseño del nivel de microarquitectura depende de la ISA que se está implementando, así como de los objetivos de costo y desempeño de la computadora.
Muchas ISA modernas, en especial los diseños RISC, tienen instrucciones sencillas que por lo regular pueden ejecutarse en un solo ciclo de reloj. Las ISA más complejas, como la de Pentium II, podrían requerir muchos ciclos para ejecutar una sola instrucción. Dicha ejecución podría requerir encontrar los operandos en la memoria, leerlos y almacenar resultados de vuelta en la memoria. La secuencia de operaciones dentro de una sola instrucci6n con frecuencia obliga a adoptar un diferente enfoque de control que con las ISA sencillas.
Por tanto, optaremos por analizar un ejemplo detallado. Como ejemplo de ISA hemos escogido un subconjunto de la Máquina Virtual Java. Este subconjunto contiene solo instrucciones para manejar enteros, por lo que lo hemos llamado IJVM (Integer Java Virtual Machine).
Comenzaremos por describir la microarquitectura sobre la cual implementaremos IJVM. La IJVM tiene algunas instrucciones relativamente complejas.

Nuestra microarquitectura contendrá un microprograma (en ROM) cuya tarea es buscar, decodificar y ejecutar instrucciones IJVM.

Un modelo conveniente para el diseño de la microarquitectura es ver el diseño como un problema de programación, en el que cada instrucción en el nivel ISA es una función que el programa maestro debe invocar.


Este modelo de ejecución, llamado ciclo de búsqueda-ejecución, es útil en lo abstracto y también podría ser la base para implementar ISA como IJVM que tienen instrucciones complejas.

Microinstrucciones
Para controlar la trayectoria de datos de la figura 4-1 necesitamos 29 señales.
Operación de la memoria
Nuestra máquina tiene dos formas diferentes de comunicarse con la memoria: un puerto de memoria de 32 bits direccionable por palabra y un puerto de memoria de 8 bits direccionable por byte. El puerto de 32 bits está bajo el control de dos registros, MAR (registro de dirección de memoria, MemoryAddress Register) y MDR (registro de datos de memoria, Memory Data Register).

Si bien esta trayectoria de datos se optimó minuciosamente para interpretar programas en IJVM, es muy similar al que se usa en la mayor parte de las máquinas.
Esta trayectoria contiene varios registros de 32 bits, a los que hemos asignado nombres simbólicos como PC, SP y MDR.

No todas estas funciones se necesitan en la IJVM, pero muchas de ellas serían útiles en la JVM completa. En muchos casos hay varias posibilidades para obtener el mismo resultado. En esta tabla, + significa suma aritmética y - significa resta aritmética, de modo que, por ejemplo, -A indica el complemento a 2 de A.

Un diseño alternativo, con dos buses completos, tiene un conjunto diferente de ventajas y desventajas, mismas que se verán más adelante.

H se puede cargar inicialmente escogiendo una función de la ALU que se limite a pasar la entrada derecha (del bus B) hasta la salida de la ALU. Una función así sería sumar las entradas de la ALU, sólo que con ENA deshabilitada para que la entrada izquierda sea forzosamente cero. Sumar cero al valor del bus B produce ese mismo valor. Luego, este resultado puede pasarse por el desplazador sin modificación y guardarse en H.
Además de las funciones anteriores, se pueden usar otras dos líneas de control de forma independiente para controlar la salida de la ALU. SLL8 (desplazamiento lógico a la izquierda, Shift Left Logical) desplaza el contenido un byte a la izquierda, llenando los 8 bits menos significativos con ceros. SRA1 (desplazamiento aritmético a la derecha, Shift Right Arithmetic) desplaza el contenido un bit a la derecha, sin modificar el bit más significativo.
Temporización de la trayectoria de datos
La temporización de estos sucesos se muestra en la figura 4-3. Aquí se produce una pulsación corta al principio de cada ciclo de reloj.
La pulsación se puede sacar del reloj principal, como se muestra en la figura 3-21(c).
Modificar el valor que está en el bus B no hace que el bus C cambie sino hasta después de un tiempo finito (debido a los retrasos finitos en cada paso). Por consiguiente, aun si una operación de almacenamiento modifica uno de los registros de entrada, el valor ya estará guardado a salvo en el registro mucho antes de que el valor (ahora incorrecto) que se está colocando en el bus B (o en H) pueda llegar a la ALU.

Una forma un tanto distinta de ver la trayectoria de datos es dividirlo conceptualmente en subciclos implícitos. El inicio del subciclo 1 se dispara por el flanco descendente del reloj. A continuación mostramos las actividades que ocurren durante los subciclos, junto con las longitudes de los subciclos (entre paréntesis).

Éstas se pueden dividir en cinco grupos funcionales, como se describe a continuación.
9 Señales para controlar la escritura de datos del bus C en registros.
9 Señales para controlar la habilitación de registros en el bus B para introducción en la ALU.
8 Señales para controlar las funciones de la ALU y el desplazador.
2 Señales (que no se muestran) para indicar lectura/escritura de memoria vía MAR/MOR.
1 Señal (que no se muestra) para indicar obtención de memoria vía PC/MBR.

Los valores de estas 29 señales de control especifican las operaciones durante un ciclo de la trayectoria de datos. Un ciclo consiste en colocar valores de los registros en el bus B, propagar las señales a través de la ALU y el desplazador, alimentarlas al bus c y por último escribir los resultados en el registro o registros apropiados.
Además, si una señal de lectura de datos de memoria está habilitada, la operación de memoria se inicia al final del ciclo de la trayectoria de datos, una vez que se ha cargado MAR. Los datos de memoria están disponibles hasta el final del siguiente ciclo en MBR o MDR y se usa el ciclo que sigue. En otras palabras, una lectura de memoria por cualquiera de los puertos, iniciada al final del ciclo k, proporciona datos que no se usan en el ciclo k + 1, sino hasta el ciclo k + 2 o uno posterior.
Este comportamiento que aparentemente va contra la intuición se explica con la figura 4-3. Las señales de control de la memoria no se generan en el ciclo de reloj 1 sino hasta inmediatamente después de que MAR y PC se cargan en el flanco ascendente del reloj, hacia el final del ciclo de reloj 1. Supondremos que la memoria coloca sus resultados en los buses de memoria en el plazo de un ciclo, de modo que MBR y/o MOR se puedan cargar en el siguiente flanco ascendente del reloj, junto con los demás registros.
Si se agregan unos circuitos más, podemos reducir el número de bits necesarios para seleccionar una de las posibles fuentes que alimentan al bus B. Sólo hay nueve registros de entrada que pueden alimentar al bus B (si contamos por separado las versiones con signo y sin signo de MBR). Por tanto, podemos codificar la información del bus B en cuatro bits y usar un decodificador para generar las 16 señales de control, siete de las cuales no se necesitan
A estas alturas podemos controlar la trayectoria de datos con 9 + 4 + 8 + 2 + 1 =24 señales, y por tanto 24 bits. Sin embargo, estos 24 bits sólo controlan la trayectoria de datos durante un ciclo. La segunda parte del control consiste en determinar qué debe hacerse en el siguiente ciclo. Para incluir esto en el diseño del controlador, crearemos un formato para describir las operaciones que se efectuarán usando los 24 bits de control más dos campos adicionales: el campo NEXT_ADDRESS y el campo JAM. A continuación explicaremos el contenido de cada uno de estos campos. La figura 4-5 muestra un posible formato, dividido en los seis grupos, y que contiene las 36 señales siguientes:
Dir - Contiene la dirección de una microinstrucción que podría ser la siguiente.
JAM - Determina cómo se selecciona la siguiente microinstrucción,
ALU - Funciones de la ALU y el desplazador.
C - Selecciona cuáles registros se escriben desde el bus C.
Mem - Funciones de memoria.
B - Selecciona la fuente del bus B; se codifica como se muestra.

El ordenamiento de los grupos es arbitrario en principio, aunque en realidad se escogió con mucho cuidado a fin de minimizar los cruces de líneas en la figura 4-6. Los cruces de línea en diagramas esquemáticos como el de la figura 4-6 a menudo corresponden a cruces de hilos en chips, que pueden causar problemas en los diseños bidimensionales y deben evitarse.
Cada uno de estos registros operan con una o dos señales de control. Una flecha blanca bajo un registro indica una señal de control que habilita la colocación de la salida del registro en el bus B. Puesto que MAR no está conectado con el bus B, no tiene una señal de habilitación. H tampoco tiene una porque siempre está habilitado, al ser la única posible entrada izquierda de la ALU.

Una flecha negra bajo un registro indica una señal de control que escribe (es decir, carga) el registro a partir del bus C. Puesto que MBR no se puede cargar a partir del bus C, no tiene una señal de escritura.

MAR contiene direcciones de palabra, de modo que los valores 0, 1, 2, etc. Así, colocar un 2 en PC e iniciar una lectura de memoria que se lea el byte 2 de la memoria y se coloque en los 8 bits de orden bajo de MBR. Colocar un 2 en MAR e iniciar una lectura de memoria hará que se lean los bytes 8-11 (o sea, la palabra 2) de la memoria y se coloquen en MDR.

Esta diferencia en funcionalidad es necesaria porque MAR y PC se usarán para hacer referencia a dos partes diferentes de la memoria.


Un sencillo truco permite a MAR contar en palabras (lo cual es necesario debido a la forma en que se defini6 la JVM) mientras la memoria física cuenta en bytes.

La capacidad de hacer que el MBR de 8 bits actúe como una fuente de 32 bits para el bus B se indica con el rectángulo punteado a la izquierda de MBR.

Control de microinstrucciones: el Mic-l
Un secuenciador que se encarga de recorrer la secuencia de operaciones necesarias para ejecutar una sola instrucción ISA. El secuenciador debe producir dos tipos de información en cada ciclo:

1. El estado de cada señal de control en el sistema.
2. La dirección dela microinstrucción que debe ejecutarse a continuación.


El elemento más grande e importante de la porción de control de la máquina es una memoria llamada almacén de control. Es recomendable ver este "almacén" como una memoria que contiene todo el microprograma, aunque a veces se implementa como un conjunto de compuertas lógicas.
En general, nos referiremos a él como almacén de control para evitar confundirlo con la memoria principal, a la que se accede a través de MBR y MDR. Sin embargo, en lo funcional, el almacén de control no es más que una memoria que contiene microinstrucciones en lugar de instrucciones ISA.
El almacén de control es funcionalmente una memoria (sólo de lectura), necesita su propio registro de direcciones de memoria y su propio registro de datos de memoria. No necesita señales de leer y escribir, porque continuamente se está leyendo. Llamaremos al registro de dirección de memoria del almacén de control MPC (contador de microprograma, MicroProgram Counter).

El registro de datos de memoria se llama MIR (registro de microinstrucción, Microlnstruction Register). Su función es almacenar la microinstrucción actual, cuyos bits alimentan las señales de control que operan la trayectoria de datos.

La figura 4-6 es un diagrama de bloques detallado de la microarquitectura completa de nuestra máquina de ejemplo, que llamaremos Mic-l. A primera vista este diagrama podría parecer abrumador, pero vale la pena estudiarlo con detenimiento. Una vez que entienda plenamente todos y cada uno de los bloques y líneas de esta figura, habrá adelantado mucho en la comprensión del nivel de microarquitectura. El diagrama de bloques tiene dos partes: la trayectoria de datos, a la izquierda, que ya vimos con detalle, y la sección de control, a la derecha, que examinaremos a continuación.
Bibliografia:

ORGANIZACION DE
COMPUTADORAS
un enfoque estructurado
CUARTA EDICIÓN
ANDREW s.TANENBAUM
Vrije Universiteit
Amsterdam, Países Bajos
Paginas 213 - 218
Full transcript