Sei sulla pagina 1di 9

FACULTAD DE INGENIERÍA DE PRODUCCIÓN Y SERVICIOS

ESCUELA PROFESIONAL DE INGENIERÍA


ELECTRÓNICA

Arquitectura de computadoras
Docente: Ing. Jesús Talavera
Alumnos:
- Gutierrez Escapa Xiomara 20162904
- Gómez Torres Jhordam Maxwell 20122377
- Rojas Cardeña Ivan 20123060
- Dolmos Uriel 20143091

2019 – B
2.3.3 Implementación de las instrucciones de acceso a memoria

Las operaciones de carga y almacenamiento de datos en memoria son frecuentes sobre todo
en códigos RISC, donde se encuentra entre un 25% y 35% de cargas y 10% de almacenamiento.

Par realizar un carga (load) hay que determinar la dirección de memoria (effective address, EA),
en procesadores RISC se hace en dos pasos.

1. Se capta los contenidos de los registros.

2. Se calcula la dirección efectiva a partir de dichos contenidos.

Para el almacenamiento es similar, la diferencia es que la dirección y el dato a escribir en


memoria se envían en paralelo a la MMU(unidad de gestión de memoria). En este tipo de
instrucciones se debe indicar una dirección de memoria y un registro. Por lo tanto las
instrucciones de carga tendrán la forma ld Rd,Rs y las de almacenamiento tendra la forma st
Rs,Rd.

Para la instrucción de almacenamiento, en la etapa ID/OF se decodifica y se captan sus


operandos, uno de ellos, Rd pasara por la ALU para obtener la dirección de memoria donde hay
que escribir. El registro Rs pasara por la ALU sin ser modificado. Por lo tanto la final de la etapa
ALU se tendrá la dirección de memoria en el registro DMAR(Data Memory Address Register) y
el dato a escribir en el registro SDMR(Store Data Memory Register).

Para la instrucción de carga, la dirección de memoria se tendría al final de la etapa de operación


con la ALU. En el siguiente ciclo se accedería a memoria para que al final de dicho ciclo, el dato
se tenga en el registro LDMR(Load Data Memory Register), con lo cual se necesitaría un ciclo
mas para pasar del registro LDMR a Rd

Ilustración 1: Ejemplo de riesgo estructural generado por el LOAD

Alternativas para solucionar el riesgo estructural es las instrucciones de acceso a memoria.

• Introducir una instrucción de no operar.

Ilustración 2: Ejemplo de una resolución estática

• Añadir mas puertos de escritura y rediseñar el banco de registros.


Ilustración 3: Ejemplo de la solución dinámica agregando una etapa llamada MEME(acceso a la
memoria)

¿Qué sucede cuando tras una instrucción de acceso a memoria hay una instrucción que necesita
el dato para realizar una operación?

Dependencia tipo RAW entre las instrucciones i e i+d (d>0) se introduce entre ellos un retardo
de uso de carga(LOAD-USE-DELAY). Por lo tanto, entre la instrucción i e i+d debe haber dos
instrucciones, con lo que d>2 y el retardo de uso de carga es de 2 ciclos.

Para solucionar este problema

 introducir instrucciones NOP.


 caminos de bypass entre el registro LDMR y las entradas de la ALU.
 Añadiendo cirucitería

2.4 El espacio de diseño de los procesadores segmentados

Se puede distinguir una serie de aspectos o dimensiones de diseño, que definen el espacio de
diseño de los procesadores segmentados.

Estos aspectos se pueden organizar en dos grupos:

Los que se refieren a la forma según la cual está organizado el cauce.


Los que aluden a la forma en que se resuelven las dependencias entre las instrucciones
que se procesan.

2.4.1 Número de etapas

Cuanto mayor sea el número de etapas de un procesador segmentado mayor será la ganancia
de velocidad que podría proporcionar.

Las dependencias ocasionan una desviación con respecto al funcionamiento ideal, haciendo que
la complejidad de la gestión del cauce aumente a medida que tiene más etapas(es más
profundo).

En caso de instrucciones de salto condicional, más etapas entre la captación de la instrucción y


la resolución de la condición que determina el salto, introduce más instrucciones
incorrectamente.
Salto retardado, habrá más huecos que llenar con instrucciones independientes.

Ventajas :

Más profundo= más paralelismo

Desventajas:

Aumenta la dependencia de datos y de control


Etapas desbalanceadas
Aumenta el sesgo del reloj
Se busca encontrar una profundidad de cauce más óptima, esto dependerá de la arquitectura y
de las características de los programas que se ejecuten.

Ilustración 4: relación entre las prestaciones de un cauce y su profundidad

2.4.2 Subtarea que implementa cada etapa

La distribución de las fases del procesamiento de una instrucción entre las distintas etapas del
cauce es un aspecto esencial en el diseño del cauce.

ARQUITECTURA RISC

Ilustración 5: Etapas en un procesador RISC

Otros procesadores con arquitectura RICS , tienen cinco etapas. La etapa añadida es la
encargada de acceder a la memoria para captar o almacenar un dato, esta se encuentra tras de
la etapa de ejecución(EXE).A pesar de que las instrucciones con resultado y operandos en
registros no necesitan esta etapa, las 5 etapas del cauce simplifican el diseño del cauce.

Ejemplos: Los procesadores segmentados no superescalares de MIPS(R2000, R3000,


R4200,R4300, etc.) y en el HP-PA 7100.

ARQUITECTURA CISC
En la arquitectura CISC ,procesan instrucciones en las que el resultado y los operandos pueden
estar tanto en los registros como en memoria.

Ilustración 6:Cause de CISC

Ejemplos: Los 68040 y 68060 de Motorola

La etapa C y la etapa EXE se juntan (EXE/C), así pues al ejecutar una instrucción, se usa la etapa
(EXE/C), dos veces , una para acceder a la memoria y la segunda para realizar la operación.Para
la instrucción de carga de memoria , se es necesario el correspondiente camino de bypass entre
el registro donde se tiene el dato tras haberlo leído de la memoria al final del EXE/C y las entradas
de las unidades funcionales que puede realizar la operación.Pero existe un mínimo de un ciclo
de retardo de uso de carga .

Ejemplo de retardo de uso de carga igual a un ciclo son :MIPS X, R2000, R3000,Power 1y 2, Power
PC 601,etc.

Retardo más de un ciclo : MC88100 (2), R4000 (2), Alpha 21064 (3).

Ilustración 7: Diagrama de bloques CISC

2.4.3 Distribución de la secuencia de etapas

Se habla de cauce único o cauce multifuncional, dado que todas las instrucciones pasan por el
mismo cause físico.
a) Cauce doble

El cauce doble en el que se alarga el tiempo correspondiente a la unidad funcional más rápida,
introduciendo retardos o burbujas, para que los caminos posibles del cauce, tengan la misma
duración.

b) Cauces múltiples

Los cauces múltiples ejecutan simultáneamente varias operaciones, mejorando el rendimiento,


pero no se podrá terminar mas de una instrucción por ciclo.

2.4.4 Uso de atajos o caminos de bypass (forwarding)

La resolución de dependencias de datos puede hacerse con el compilador , sin necesidad de


utilizar elementos del hardware específicos .

Hay que introducir instrucciones de no operar a cambio de reducir prestaciones.


Se puede introducir caminos de bypass.

2.4.5 Temporización sincrona/asincrona del cauce

Un cauce síncrono

La temporización síncrona se puede realizar utilizando un reloj de una o dos fases no solapadas,
evitando condiciones de carrera en los cauces.

Ya que el movimiento de los datos se realiza atreves de los cerrojos(latches), que están
alternativamente abiertos durante la fase 1 o la fase 2.

Temporización asíncrona

Líneas de sincronización entre etapas consecutivas para implementar un protocolo de


conformidad (handshaking).

Es un procedimiento más adecuado cuando no se conoce la duración de las etapas o esta puede
cambiar según la instrucción que se procese.

Ejemplo el procesado AMULET de la arquitectura ARM.

2.4.6 Resolución de dependencias

a) Estática: Es responsabilidad del compilador, el cual ordena las instrucciones e inserta


las instrucciones de no operar necesarias, evitando las dependencias de datos o control
y minimizando los efectos perniciosos en las prestaciones del cauce.
b) Dinámica: Se realiza durante la ejecución de las instrucciones a través de los elementos
hardware como los camino bypass, la lógica para la detección de dependencias, etc. Que
se incluyen en el cauce
c) Combinada: Es aquella en la que el compilador mejora el rendimiento del hardware
añadido para la resolución dinámica, reduciendo el efecto de sus posibles limitaciones.

EJERCICIOS PROPUESTO

Ejercicio N° 2
Supongamos que las etapas de una unidad funcional segmentada S1, S2, S3, S4 y S5 se utilizan
en el orden S1 , S3, S5, S1, S3, S4, S1, S3, S2, S5 ,S4, S2. ¿Cuál es la tabla de reservas?¿Cuál es el
tiempo ( en numero de ciclos ) de latencia de inicio del cauce?¿Cual es el vector de colisión
inicial? ¿Si se supone el cauce vacío inicialmente y se introduce una operación, es posible
introducir otra pasados 5 ciclos?¿Cuál es el numero mínimo de ciclos que hay que esperar?

Etapas: S1, S2, S3, S4 y S5

Orden: S1, S3, S5, S1, S3, S4, S1, S3, S2, S5, S4, S2

¿Cuál es el tiempo ( en numero de ciclos ) de latencia de inicio del cauce?

TLI= 12 Ciclos

¿Cuál es el vector de colisión inicial?

𝐂 = [𝟏𝟏𝟏0𝟏00]

¿Si se supone el cauce vacío inicialmente y se introduce una operación, es posible


introducir otra pasados 5 ciclos?

Latencias prohibidas: F=(3 ,6 ,5 ,7) No es posible introducir una instrucción a los 5 ciclos
ya que es una latencia prohibida.

¿Cuál es el número mínimo de ciclos que hay que esperar?

Tenemos ( 1,2,4 ) que son latencias NO prohibidas entonces el numero mínimo para
esperar un instrucción seria de 1 ciclo.

Resumen del paper

Optimizando las cargas de trabajo de Aprendizaje Automático en dispositivos de bajo consumo

El aprendizaje automático está resolviendo problemas reales, como el reconocimiento de


rostros, la detección de palabras clave, la detección de objetos y la segmentación de escenas, y
hacerlo con una precisión sorprendente.

Se puede implementar en prácticamente cualquier sistema en chip


Una forma de implementar el aprendizaje automático en una plataforma integrada es equiparlo
con un marco completo de aprendizaje automático(integración directa)

Ofrece:

• Un alto grado de flexibilidad,

• Pero no es muy portátil y tiene bastante sobrecarga asociada

• No proporciona el nivel de rendimiento necesario y puede no ser práctico para el envío


en producción.

• También limita las opciones de optimización, ya que no hay un paso fuera de línea donde
se pueda observar y modificar el gráfico completo de la red neuronal para un mejor
rendimiento.

En general, la integración directa se adapta mejor a la capacitación, donde es importante tener


flexibilidad total y fácil acceso a un amplio conjunto de operadores ya implementados.

Es posible implementar un subconjunto del marco completo importando solo el gráfico que
representa la red. El gráfico de salida y los pesos entrenados del marco de aprendizaje
automático se convierten de un archivo estático para que Arm NN los procese en tiempo de
ejecución como parte de la ejecución normal de la aplicación. Arm NN está diseñado para
realizar un conjunto cuidadosamente seleccionado de operaciones de inferencia, por lo que es
naturalmente más pequeño y más fácil de optimizar para ejecutar en un conjunto limitado de
recursos de memoria. Arm NN también admite el uso de una etapa de optimización fuera de
línea para mejorar aún más el rendimiento y desacopla el marco de capacitación del despliegue
de producción para una mayor eficiencia en la orientación a diferentes clases de plataforma.

Al implementar un motor de inferencia en lugar de un marco completo, el sistema ejecuta una


base de código más pequeña y está equipado solo con las funciones específicas que necesita
para realizar sus tareas de aprendizaje automático asignadas. Esto reduce los gastos generales
y el tiempo de ejecución, para una solución más ágil y rápida.

El aprendizaje automático es muy prometedor para incrustarlo. Desde nuestra perspectiva,


vemos tres tendencias clave:

• Implementación perfecta desde la nube hasta el borde: la capacitación será más fácil, con
herramientas más sofisticadas para refinar el rendimiento, ajustar la complejidad del modelo y
la precisión del ajuste.

• Programación heterogénea más avanzada: las nuevas herramientas para la programación


estática de cargas de trabajo en todos los recursos de SoC reducirán la necesidad de intervención
manual, con el objetivo de una programación dinámica.

• Compiladores de red: las herramientas de compilación aprovecharán la red completa y el


código del operador, produciendo horarios intercalados y maximizando la reutilización de
cachés, simplificando así las secuencias aritméticas y reduciendo el acceso a la memoria y el
ancho de banda.

Potenciando el borde: impulsando un rendimiento óptimo con el procesador Arm ML

Reutilizar una CPU, GPU o DSP para implementar un motor de inferencia puede ser una manera
fácil de agregar capacidades de ML a un dispositivo de borde. Muchos dispositivos integrados,
por ejemplo, no necesitarán nada más que una pequeña unidad de microcontrolador (MCU) de
baja potencia, y la gran mayoría de los teléfonos inteligentes en el mercado actual ejecutan ML
precisos y de alto rendimiento en una CPU. Pero cuando la capacidad de respuesta o la eficiencia
energética son críticas, las CPU pueden tener dificultades para cumplir con los exigentes
requisitos de rendimiento, y una unidad de procesamiento neuronal (NPU) dedicada, como el
procesador Arm ML, puede ser la solución más adecuada.

El procesador Arm ML El diseño optimizado del procesador ML proporciona una mejora masiva
en la eficiencia en comparación con las CPU, GPU y DSP a través de la convolución eficiente, la
dispersión y la compresión.

Rendimiento:El procesador ML genera inferencias rápidas y precisas mientras mantiene la


eficiencia y el rendimiento. Dado que muchos dispositivos de borde son sistemas relativamente
pequeños, alimentados por baterías, y por lo tanto tienen una capacidad de batería limitada,
eso significa una operación más larga para una cámara de seguridad, un mayor tiempo de vuelo
para un dron o un mayor alcance para un vehículo eléctrico.

Rendimiento escalable multinúcleo: El procesador ML también admite configuraciones


multinúcleo, lo que permite casos de uso exigentes, como la segmentación de alta resolución.

Eficiencia:El procesador ML proporciona una eficiencia energética líder en la industria de 5 TOP


/ W, lograda a través de optimizaciones de vanguardia, como la compilación neuronal, las
convoluciones eficientes y los mecanismos de reducción de ancho de banda.

Potrebbero piacerti anche