paralelismo
A utilização de várias linhas de execução simultâneas recebe o nome de multithreading. Com multithreading e possível ter vários threads compartilhando, de forma intercalada, as mesmas unidades funcionais de um processador, onde o processador duplica o estado independente de cada thread. O Paralelismo em nível de Thread envolve o controle de múltiplas threads do processador, permitindo que parte específicas do programa sejam distribuídas entre diferente núcleos e possam ser executadas simultaneamente. Um dos paradigmas implementados pelos processadores que usam TLP ´e o Simultâneos MultiThreading (SMT), que aparece como uma alternativa para o uso de multithreading e consistem executar múltiplas threads simultaneamente em um ou mais núcleos[1]. De acordo com [4], um motivo para utilizar SMT ´e que uma ´única thread de controle geralmente não fornece suficiente paralelismo em nível de instrução para usar todas as unidades funcionais dos processadores super. escalares. Em multithreading existem duas formas principais de realizar a troca entre as threads: granularidade fina granularidade grossa, que serão descritas nas seções 2.1.1e 2.1.2.De acordo com pesquisas realizadas [5], quando uma threae colocada em execução, tem-se alguns limites alcançado sem relação `a programação paralela, limites estes que estão lecionados com a porção de código paralelizável. Conforme pode-se observar na Figura 3, para uma proporção de 25%de código paralelizável, n˜ao se tem melhoras significativas independentemente da quantidade de n´núcleos. Por outro lado, em um código 95% paralelizável tem-se uma melhora significativa quando uma thread ´e colocada em processadores de até 256 núcleos. Qualquer quantidade de processadores acima de 256 núcleos apresenta melhora insignificante no desempenho. Uma implementação proprietária para o SMT ´e chamada “Hyperthreading” (HT) para os processadores Intel. OHT permite que um processador físico seja dividido em mais