SlideShare uma empresa Scribd logo
1 de 8
Arquitectura de Computadores

      Planificación de código:
      Segmentación software
Planificación de código
Planificación de código
                            Planificación de código




                                                                  Global
                                                              •     Planificación instrucciones
De bloques básicos                                            •     Planificación de bucles
•   Planificador de
    listas
                                De bucles


                 Desarrollo de bucles       Segmentación software
Planificación de código -> De bucles -> Segmentación Software

            • Reordenación y reorganización de las instrucciones de un bucle
            • Se intercalan instrucciones de distintas iteraciones sin desarrollar el
              bucle -> Cada iteración tendrá instrucciones de diferentes iteraciones
              del bucle original (el objetivo es situar instrucciones dependientes lo
              mas alejadas posible)
  Ej:
                                    Iteración i
                                    ld f0,0(r1)
         Bucle inicial
                                    add f4,f0,f2
   loop: ld f0,0(r1)                sd f4,0(r1)
         add f4,f0,f2                Iteración i +1
         sd f4,0(r1)
         addi r1,r1,#-8              ld f0,0(r1)
Inst.
                                     add f4,f0,f2
Control bnez r1,loop
                                     sd f4,0(r1)
                                     Iteración i +2
                                     ld f0,0(r1)
                                     add f4,f0,f2
                                     sd f4,0(r1)
Planificación de código -> De bucles -> Segmentación Software

            • Reordenación y reorganización de las instrucciones de un bucle
            • Se intercalan instrucciones de distintas iteraciones sin desarrollar el
              bucle -> Cada iteración tendrá instrucciones de diferentes iteraciones
              del bucle original (el objetivo es situar instrucciones dependientes lo
              mas alejadas posible)
  Ej:
                                    Iteración i
                                    ld f0,0(r1)                      Bucle final
         Bucle inicial
                                    add f4,f0,f2
   loop: ld f0,0(r1)                sd f4,0(r1)               loop: sd f4,16(r1)
         add f4,f0,f2                                               add f4,f0,f2
                                     Iteración i +1
         sd f4,0(r1)                                                ld f0,0(r1)
         addi r1,r1,#-8              ld f0,0(r1)                    addi r1,r1,#-8
Inst.                                                                                   Inst.
                                     add f4,f0,f2                   bnez r1,loop
Control bnez r1,loop                                                                    Control
                                     sd f4,0(r1)
                                     Iteración i +2
                                     ld f0,0(r1)
                                     add f4,f0,f2
                                     sd f4,0(r1)
Planificación de código -> De bucles -> Segmentación Software

            • Reordenación y reorganización de las instrucciones de un bucle
            • Se intercalan instrucciones de distintas iteraciones sin desarrollar el
              bucle -> Cada iteración tendrá instrucciones de diferentes iteraciones
              del bucle original (el objetivo es situar instrucciones dependientes lo
              mas alejadas posible)
  Ej:
                                    Iteración i
                                    ld f0,0(r1)                      Bucle final
         Bucle inicial
                                    add f4,f0,f2
   loop: ld f0,0(r1)                sd f4,0(r1)               loop: sd f4,16(r1)
         add f4,f0,f2                                               add f4,f0,f2
                                     Iteración i +1
         sd f4,0(r1)                                                ld f0,0(r1)
         addi r1,r1,#-8              ld f0,0(r1)                    addi r1,r1,#-8
Inst.                                                                                   Inst.
                                     add f4,f0,f2                   bnez r1,loop
Control bnez r1,loop                                                                    Control
                                     sd f4,0(r1)
                                     Iteración i +2
                                     ld f0,0(r1)
                                     add f4,f0,f2
                                     sd f4,0(r1)
Planificación de código -> De bucles -> Segmentación Software

 • Reordenación y reorganización de las instrucciones de un bucle
 • Se intercalan instrucciones de distintas iteraciones sin desarrollar el
   bucle -> Cada iteración tendrá instrucciones de diferentes iteraciones
   del bucle original (el objetivo es situar instrucciones dependientes lo
   mas alejadas posible)

         • La estructura del programa suele ser: Prólogo – Bucle –Epílogo
         • Objetivo:
              Encontrar una secuencia de instrucciones repetitiva que se
                pueda ejecutar en un solo ciclo o en un número pequeño de
                ciclos
              Es realmente una tarea dificultosa y no siempre son iteraciones
                tan favorables
Planificación de código -> De bucles -> Segmentación Software

Ventajas
       • Consume menos espacio de código
       • Se consigue una ejecución con un paralelismo mayor durante más
         tiempo de ejecución
       • Aprovecha mejor el paralelismo de la máquina

Obstáculos
       • Presencia de anti-dependencias
       • Saltos incondicionales
       • Bucles con pocas instrucciones y latencias largas
           • Combinar segmentación software y desarrollo de bucles

Implementación
       • URPR: UnRolling, Pipeling and Rerolling
          1. Planifica el bucle como un bloque básico y lo desarrolla k veces
          2. Reordena las instrucciones para obtener mayor paralelismo
          3. Busca el patrón repetitivo

Mais conteúdo relacionado

Mais procurados

Plantilla trabajo final estandares de calidad de TI.
Plantilla trabajo final estandares de calidad de TI.Plantilla trabajo final estandares de calidad de TI.
Plantilla trabajo final estandares de calidad de TI.
Darthuz Kilates
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
rezzaca
 
Productos vmware
Productos vmwareProductos vmware
Productos vmware
juanan10
 
Lección 1 Introducción a los Lenguajes de Programación
Lección 1   Introducción a los Lenguajes de ProgramaciónLección 1   Introducción a los Lenguajes de Programación
Lección 1 Introducción a los Lenguajes de Programación
ocasas
 

Mais procurados (16)

NodeJS
NodeJSNodeJS
NodeJS
 
Phonegap
PhonegapPhonegap
Phonegap
 
Iniciacion en Togaf - Global Knowledge
Iniciacion en Togaf - Global KnowledgeIniciacion en Togaf - Global Knowledge
Iniciacion en Togaf - Global Knowledge
 
Plantilla trabajo final estandares de calidad de TI.
Plantilla trabajo final estandares de calidad de TI.Plantilla trabajo final estandares de calidad de TI.
Plantilla trabajo final estandares de calidad de TI.
 
U1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos ComplejidadU1 Analisis Algoritmos Complejidad
U1 Analisis Algoritmos Complejidad
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Ordenamiento por arbol binario
Ordenamiento por arbol binarioOrdenamiento por arbol binario
Ordenamiento por arbol binario
 
Productos vmware
Productos vmwareProductos vmware
Productos vmware
 
Infraestructura como Servicio (IaaS) en Microsoft Azure
Infraestructura como Servicio (IaaS) en Microsoft Azure Infraestructura como Servicio (IaaS) en Microsoft Azure
Infraestructura como Servicio (IaaS) en Microsoft Azure
 
Lección 1 Introducción a los Lenguajes de Programación
Lección 1   Introducción a los Lenguajes de ProgramaciónLección 1   Introducción a los Lenguajes de Programación
Lección 1 Introducción a los Lenguajes de Programación
 
SILABO FUNDAMENTOS DE LA INFORMATICA
SILABO FUNDAMENTOS DE LA INFORMATICASILABO FUNDAMENTOS DE LA INFORMATICA
SILABO FUNDAMENTOS DE LA INFORMATICA
 
Cambio clave por defecto Apache Tomcat
Cambio clave por defecto Apache TomcatCambio clave por defecto Apache Tomcat
Cambio clave por defecto Apache Tomcat
 
Ejercicios estructira con arrays
Ejercicios estructira con arraysEjercicios estructira con arrays
Ejercicios estructira con arrays
 
Sistema de archivos distribuido o DFS
Sistema de archivos distribuido o DFSSistema de archivos distribuido o DFS
Sistema de archivos distribuido o DFS
 
Conceptos POO PV
Conceptos POO PVConceptos POO PV
Conceptos POO PV
 
Introduccion a devops y devsecops
Introduccion a devops y devsecopsIntroduccion a devops y devsecops
Introduccion a devops y devsecops
 

Semelhante a Arquitectura de computadores segmentacion software

Modulo 02a ospf-y_e_bgp_basico_ipv6
Modulo 02a ospf-y_e_bgp_basico_ipv6Modulo 02a ospf-y_e_bgp_basico_ipv6
Modulo 02a ospf-y_e_bgp_basico_ipv6
1 2d
 

Semelhante a Arquitectura de computadores segmentacion software (9)

Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
Javier Moreno & Eloi Sanfélix - Seguridad y explotación nativa en Android [Ro...
 
Decompiladores
DecompiladoresDecompiladores
Decompiladores
 
Problema vliw 2
Problema vliw 2Problema vliw 2
Problema vliw 2
 
Rutinas y Sub Rutinas del MicroZ80
Rutinas y Sub Rutinas del MicroZ80Rutinas y Sub Rutinas del MicroZ80
Rutinas y Sub Rutinas del MicroZ80
 
Modulo 02a ospf-y_e_bgp_basico_ipv6
Modulo 02a ospf-y_e_bgp_basico_ipv6Modulo 02a ospf-y_e_bgp_basico_ipv6
Modulo 02a ospf-y_e_bgp_basico_ipv6
 
Guia 5 3 2015 c2
Guia 5 3 2015 c2Guia 5 3 2015 c2
Guia 5 3 2015 c2
 
Análisis de complejidad big o
Análisis de complejidad  big o Análisis de complejidad  big o
Análisis de complejidad big o
 
Lab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84aLab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84a
 
Lab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84aLab.270910.instrucciones basicas del pic 16 f84a
Lab.270910.instrucciones basicas del pic 16 f84a
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 

Arquitectura de computadores segmentacion software

  • 1. Arquitectura de Computadores Planificación de código: Segmentación software
  • 3. Planificación de código Planificación de código Global • Planificación instrucciones De bloques básicos • Planificación de bucles • Planificador de listas De bucles Desarrollo de bucles Segmentación software
  • 4. Planificación de código -> De bucles -> Segmentación Software • Reordenación y reorganización de las instrucciones de un bucle • Se intercalan instrucciones de distintas iteraciones sin desarrollar el bucle -> Cada iteración tendrá instrucciones de diferentes iteraciones del bucle original (el objetivo es situar instrucciones dependientes lo mas alejadas posible) Ej: Iteración i ld f0,0(r1) Bucle inicial add f4,f0,f2 loop: ld f0,0(r1) sd f4,0(r1) add f4,f0,f2 Iteración i +1 sd f4,0(r1) addi r1,r1,#-8 ld f0,0(r1) Inst. add f4,f0,f2 Control bnez r1,loop sd f4,0(r1) Iteración i +2 ld f0,0(r1) add f4,f0,f2 sd f4,0(r1)
  • 5. Planificación de código -> De bucles -> Segmentación Software • Reordenación y reorganización de las instrucciones de un bucle • Se intercalan instrucciones de distintas iteraciones sin desarrollar el bucle -> Cada iteración tendrá instrucciones de diferentes iteraciones del bucle original (el objetivo es situar instrucciones dependientes lo mas alejadas posible) Ej: Iteración i ld f0,0(r1) Bucle final Bucle inicial add f4,f0,f2 loop: ld f0,0(r1) sd f4,0(r1) loop: sd f4,16(r1) add f4,f0,f2 add f4,f0,f2 Iteración i +1 sd f4,0(r1) ld f0,0(r1) addi r1,r1,#-8 ld f0,0(r1) addi r1,r1,#-8 Inst. Inst. add f4,f0,f2 bnez r1,loop Control bnez r1,loop Control sd f4,0(r1) Iteración i +2 ld f0,0(r1) add f4,f0,f2 sd f4,0(r1)
  • 6. Planificación de código -> De bucles -> Segmentación Software • Reordenación y reorganización de las instrucciones de un bucle • Se intercalan instrucciones de distintas iteraciones sin desarrollar el bucle -> Cada iteración tendrá instrucciones de diferentes iteraciones del bucle original (el objetivo es situar instrucciones dependientes lo mas alejadas posible) Ej: Iteración i ld f0,0(r1) Bucle final Bucle inicial add f4,f0,f2 loop: ld f0,0(r1) sd f4,0(r1) loop: sd f4,16(r1) add f4,f0,f2 add f4,f0,f2 Iteración i +1 sd f4,0(r1) ld f0,0(r1) addi r1,r1,#-8 ld f0,0(r1) addi r1,r1,#-8 Inst. Inst. add f4,f0,f2 bnez r1,loop Control bnez r1,loop Control sd f4,0(r1) Iteración i +2 ld f0,0(r1) add f4,f0,f2 sd f4,0(r1)
  • 7. Planificación de código -> De bucles -> Segmentación Software • Reordenación y reorganización de las instrucciones de un bucle • Se intercalan instrucciones de distintas iteraciones sin desarrollar el bucle -> Cada iteración tendrá instrucciones de diferentes iteraciones del bucle original (el objetivo es situar instrucciones dependientes lo mas alejadas posible) • La estructura del programa suele ser: Prólogo – Bucle –Epílogo • Objetivo:  Encontrar una secuencia de instrucciones repetitiva que se pueda ejecutar en un solo ciclo o en un número pequeño de ciclos  Es realmente una tarea dificultosa y no siempre son iteraciones tan favorables
  • 8. Planificación de código -> De bucles -> Segmentación Software Ventajas • Consume menos espacio de código • Se consigue una ejecución con un paralelismo mayor durante más tiempo de ejecución • Aprovecha mejor el paralelismo de la máquina Obstáculos • Presencia de anti-dependencias • Saltos incondicionales • Bucles con pocas instrucciones y latencias largas • Combinar segmentación software y desarrollo de bucles Implementación • URPR: UnRolling, Pipeling and Rerolling 1. Planifica el bucle como un bloque básico y lo desarrolla k veces 2. Reordena las instrucciones para obtener mayor paralelismo 3. Busca el patrón repetitivo