En este informe se hablara acerca del paralelismo a nivel de instrucciones y datos, conforme entendamos en la programación de los multiprocesadores, debemos de estudiar sobre el paralelismo para poder comprender como programar estos sistemas de forma efectiva todo lo que tiene que ver con sus procesadores.
Cuando hablamos de paralelismo, necesitamos el concepto de gradualidad, que lo que indica el tamaño de los cálculos que se están realizando simultáneamente entre sus procesadores, por ejemplo un procesador escalar de dos vías puede ejecutarse, en un ciclo, cualquier combinación de una instrucción entera y en un multiprocesador podemos dividir las iteraciones de un ciclo entre los cuatros procesadores del sistema.
Con el avance en la arquitectura de las computadoras, la investigación y el diseño sofisticado de procesadores se construye paso a paso la capacidad de multiprocesamiento y la ejecución de múltiples instrucciones por ciclo de reloj. El ciclo de reloj consiste en la unidad de medida utilizada para medir la velocidad en la que un procesador ejecuta las instrucciones básicas. Con el arribo de máquinas con procesadores multinúcleo el tema del paralelismo ha tomado mayor relevancia; el manejo de hilos de ejecución, métodos de sincronización y concurrencia consiste en temas fundamentales que no pueden ser obviados en la creación de aplicaciones de alto nivel.
Y sobre las técnicas básicas de análisis de bloques forman la base de trabajo que realiza el compilador cuando trata de lograr mayor paralelismo, al ayudar al compilador a reconocer el paralelismo es uno de los enfoques básico que toman para afinar el código. Es segura que hay otras facetas en este proceso de afinación, tales como optimizar los patrones de acceso de memoria de forma que se adapte mejor al hardware o reelaborar un algoritmo.