SlideShare uma empresa Scribd logo
Multithreaded Tecnologia & Processadores multicore
Preparando-se para CPUs de próxima geração - CRAIG Szydlowski
Muitos aplicativos de software estão prestes a dar uma virada de cabeça para baixo na
transição de CPUs de single para implementações de múltiplos núcleos / Cores. Em novos
projetos, desenvolvedores de software serão encarregado de manter múltiplos núcleos
ocupados para evitar deixar desempenho baixo. Em projetos, você será confrontado com o
desafio de ter aplicações single-threaded funcionando de forma eficiente em múltiplos
núcleos. Programas precisarão servir-se de tópicos de código que podem ser distribuídos em
vários núcleos de forma eficiente. O código rompe uma tarefa em sub-tarefas, software
chamado de "threads", que é executado simultaneamente e de forma independente.
Código de Listagem tem sido a regra em um número de pedidos ha algum tempo, como redes
de área de armazenamento. Utilizando tecnologia Hyperthreading da Intel (a empresa em que
trabalho), aplicações de armazenamento implanta tarefas simultâneas para tirar proveito do
tempo ocioso da CPU, ou recursos subutilizados, como quando os dados são recuperados da
memória. Portanto, as ferramentas e os conhecimentos já estão disponíveis para escrever e
otimizar o código threaded. Sistemas operacionais como o Windows XP, QNX, e algumas
distribuições do kernel Linux foram otimizados para threading e está pronto para suportar os
processadores da próxima geração.
Aplicações embarcadas não são inerentemente threaded e pode exigir algum software de
desenvolvimento para se preparar para CPUs multicore. Neste artigo, eu examino a
motivação dos vendedores da CPU para se deslocar para multicores, as ramificações de
software correspondentes, bem como o impacto sobre os desenvolvedores de sistemas
embarcados.
"Todas essas implementações requerem processamento do código da CPU para utilizar o seu
potencial da computação"
Terminologia arquitetura de CPU
A terminologia para descrever várias encarnações da arquitetura da CPU é complexa.
A Figura 1 descreve o desenvolvimento físico de três interpretações multithread diferentes.
Figura 1 (a) mostra uma configuração dual-processor. Duas CPUs individuais compartilham
um barramento comum do Processador (PSB – Processor Side Bus), que interfaces para um
chipset com um controlador de memória. Cada CPU tem seus próprios recursos para executar
programas. Esses recursos incluem registros de Estado do CPU (CS), de interrupção. A lógica
(IL), e uma unidade de execução (UE), também chamada uma unidade aritmética e lógica
(ALU). Figura 1 (b) mostra a Tecnologia Hyperthreading (HT), que mantém duas linhas em
uma CPU física. Cada thread tem os seus próprios registos dos estados da CPU e interrupção
Lógica, enquanto a Unidade de execução é compartilhada entre os dois segmentos. Isto
significa que a unidade de execução é de tempo compartilhado por ambas as threads
simultaneamente, e a unidade de execução faz continuamente o progresso em ambos os
segmentos. Se uma threaded esteja à espera de uma operação a ser recuperadas da memória,
a unidade de execução continua a executar o outro segmento, resultando em uma CPU
totalmente utilizada. Embora a tecnologia Hyperthreading é implementada em uma única
CPU física, o sistema operacional reconhece dois processadores lógicos e agenda tarefas para
cada processador lógico.
Figura 1.: Três tecnologias multithread
A CPU dual-core é mostrado na Figura 1 (c). Cada núcleo contém os seus próprios meios
de processamento semelhantes dedicados a um CPU particular, exceto para o Processador
Side Bus, o que pode ser compartilhado entre os dois núcleos.
Todas estas implementações de CPU requerem código para empregar plenamente o potencial
de computação. No futuro, o modelo dual-core CPU será estendida para quad-core, com
quatro núcleos em uma única peça de silício.
Por que a mudança para Dual-Core?
Cada vez maior velocidade de clock está criando um problema de dissipação de energia para
fabricantes de semicondutores. As velocidades de relógio mais rápidos normalmente exigem
transistores adicionais e tensões de entrada mais altas, resultando em maior consumo de
energia.
As mais recentes tecnologias de semicondutores apoiam mais e mais transistores. A
desvantagem é que cada transistor tem vazamentos de uma pequena quantidade de corrente,
a soma dos quais é problemática. Em vez de empurrar fichas para correr mais rápido, os
projetistas da CPU estão adicionando recursos, como mais núcleos e mais cache para
proporcionar um desempenho comparável, ou melhor, com menor poder. Transistores
adicionais estão sendo aproveitados para criar capacidade mais diversificada, como a
tecnologia de virtualização e/ou os recursos de segurança em oposição a condução para
velocidades de clock mais altas. Estas diversas capacidades em última análise, trazer mais
desempenho para aplicações embarcadas dentro de um orçamento de energia mais baixo.
CPUs dual-core, por exemplo, pode ser cronometrado em velocidades mais lentas e é
fornecido com uma voltagem mais baixa para produzir maior desempenho por watt.
Paralelismo e seu impacto Software
A implementação de processador multicore terá um impacto significativo sobre aplicações
embarcadas. Para tirar proveito de CPUs multicore, programas exigem algum nível de
migração para um modelo de software de threaded e exigem validação periódica e ajuste de
desempenho. Há kernel ou sistema threads gerenciados pelo sistema operacional e threads
do usuário mantidos por programadores. Aqui eu me concentro em threads do usuário.
Você deve escolher um modelo de programação de rosca que se adapte o paralelismo inerente
à aplicação. Quando há uma série de tarefas independentes que são executados em
paralelamente, a aplicação é adequada para a decomposição funcional. Segmentação
explícita é geralmente melhor para a decomposição funcional. Quando existe um grande
conjunto de dados independente que deve ser processada através da mesma operação, a
aplicação é adaptada para a decomposição de dados. Métodos dirigido pelo compilador, tais
como OpenMP (http://www.openmp.org/), são projetados para expressar o paralelismo de
dados. O exemplo a seguir descreve segmentação explícita e métodos compilador dirigido de
forma mais detalhada.
Para explorar CPUs multicore, você identifica o paralelismo dentro de seus programas e criar
threads para executar várias tarefas simultaneamente. O sistema de visão-inspeção da Figura
2 ilustra o conceito de enfiar no que diz respeito ao paralelismo funcional e de dados. Você
também deve decidir sobre a qual segmento modelos de implementar - segmentação explícita
ou driver-compilador.
O sistema de visão-inspeção na Figura 2 mede o tamanho e a colocação de cabos em um
pacote de semicondutores. O sistema executa várias tarefas de funções simultâneas, como
interface a um ser humano, que controla uma correia transportadora, a captação de imagens
dos condutores, o processamento de imagens, e detecção de defeitos e a transferência de
dados para uma rede de área de armazenamento. Estas tarefas representam paralelismo
funcional porque eles correm ao mesmo tempo, executar como segmentos individuais, e são
relativamente independentes. Essas tarefas são assíncronas para o outro, o que significa que
não iniciam e terminam ao mesmo tempo.
A vantagem de colocar essas tarefas funcionais é que a aplicação de inspeção não travar
quando outras tarefas ou funções são executadas, de modo que o operador da máquina, por
exemplo, experimenta uma aplicação mais ágil.
O processamento das imagens de pacotes semicondutores é bem adequado para o paralelismo
de dados, porque o mesmo algoritmo é executado em um grande número de elementos de
dados. Neste caso, o algoritmo de detecção de defeitos processa conjuntos de pixels de
acordo com looping e aplicação da mesma operação de inspeção para conjuntos
independentes de pixels. Cada conjunto de pixels é processado por seu próprio segmento.
Para qualquer paralelismo funcional ou dados, você pode escrever instruções de threads
explicitas de um sistema operacional para executar essas tarefas concorrentemente. Um
thread é intencionalmente explicito. Usando instruções codificadas de thread, tais como
bibliotecas Ptthreads ou APIs Win32. Você é responsável para criar threads manualmente,
independente de funções que são mapeados para o thread. Como a alocação de memória e a
criação também deve ser criada por você.
Embora, threads explícitos ser poderoso e de uso geral sua complexidade pode fazer um
compiler-directed para uma alternativa mais atraente. Um exemplo de compiler-directed
threading é Open-MP, que é um de padrão de indústria de um conjunto de diretivas de
compiladores. Em Open-MP, você usa programas para descrever paralelismo para o
compilador; por exemplo.
#pragma omp parallel for private (pixelX,pixelY)
for (pixelX=0; pixelX< imageHeigth; pixelX++)
[for( pixelY=0;pixelY < imageWidth;pixelY++)
{newImage [pixelX,pixelY]=ProcessPixel (pixelX,pixelY,image);}
O programa omp diz que esta é uma oportunidade para Open MP paralelismo. O parallel,
palavra-chave, informa o compilador para criar threads. A palavra-chave serve para informa
para as iterações do compilador do próximo loop for, será dividido entre aqueles threads.
A clausula privada de listas variáveis que precisam ser mantidas em sigilo para cada thread,
para evitar condições de corrida e corrupção de dados. O compilador cria o thread isolado
como na Figura 3. Observe o thread afastado, são todas criadas e retiradas ao mesmo tempo,
que se assemelha aos dentes de um garfo. Tem um relacionamento explicito entre pai-filho
que não é necessário com threads libraries. Isto é chamado de ‘’Fork Join’’ modelo e é um
requisitocaracterístico para OpenMP paralelism. OpenMP progmas são menos geral do que
threaded libraries, mas eles são menos complexos porque o compilador cria o paralelismo
fundamental de código para multiplicar threads. OpenMP é suportado por vários
compiladores permitindo que o threaded crie um código para ser transportado, enquanto que
threaded libraries tipicamente tem fidelidade para especificar sistemas operacionais.
Paralelism de bug
Se os threads São criados explicitamente, pela diretiva de compilador, ou por qualquer outro
método, eles precisam ser testados para garantir que não existem condições de disputas. Com
uma condição de corrida, você equivocadamente assumiu uma ordem de execução particular,
mas isso não é garantido. Em aplicação incorporado, os processos muitas vezes são
assíncronos, um bug comum que pode significa que está dormente durante os testes de
validação e permite que o código trabalhe quase o tempo todo. Uma condição de corrida pode
ser causada por um conflito de armazenamento. Dois threads poderiam ser a substituição de
um local de memória particular ou um thread pode presumir outro thread. Concluindo os seus
trabalhos em uma determinada variável, que conduz à utilização de dados corrompidos.
O acesso aos dados comuns deve ser sincronizado para evitar perda de dados. Sincronizando
para poder ser implementado com uma palavra de estado simples para indicar o estado dos
dados chamados ‘' semáforo ''. Uma assume o controle dos dados, por escrito '' 0 '' para a
palavra de estado, enquanto escrevendo '' 1 '' para o controle de versões de palavras de status,
permitindo que outro possa acessar a variável. Como aplicações embarcadas são muitas vezes
acionados por interrupções, pode ser útil para implementar uma sequência de leitura-
modificação-gravação protegida para garantir umas operações em uma variável desde de que
não sejam perturbados por outro processo, como uma rotina de interrupção de serviço.
Existem ferramentas sofisticadas disponíveis para testar as condições de corrida. O
verificador da Intel (http://www.intel.com/ids/) é um depurador de runtime automatizado que
verifica a existência de conflitos de armazenamento e olha para os lugares onde threads pode
bloquear ou excluir. Ele identifica locais de memória que são acessados por um thread,
seguido por um acesso desprotegido por outro thread, o que expõe o programa de corrupção
de dados. O Thread verificador é uma ferramenta de análise dinâmica e, portanto, é um
conjunto de dados independentes. Como tal, se o conjunto de dados não exercer determinados
fluxos de programa, a ferramenta não é capaz de verificar que parte do código. Para
aplicações embarcadas, é importante criar um conjunto de dados para que simule os
processos assíncronos relevantes. Encontrar as condições de corrida pode ser muito difícil e
demorado. Threads Checker pode facilmente encontrar estes conflitos, mesmo quando o
conflito é gerado por instâncias de código em diferentes pilhas de chamadas e muitos
milhares de linhas de intervalo.
Afinando performance
Uma vez que o código foi testado e verificado para ser executado corretamente, o
desempenho de otimização pode começar. Os desempenhos da otimização devem ser
limitados para o caminho de execução critica.
Para maximizar o desempenho de CPUs com vários núcleos, muitas vezes é necessário
assegurar que a carga de trabalho é equilibrada entre os núcleos. Desequilíbrio de carga vai
limitar paralelo de forma ineficiente e escalabilidade porque algum recurso do processador
será ocioso.
A sincronização também pode limitar o desempenho criando gargalos e sobrecarga. Embora
a sincronização de dados ajude na integridade da garantia, ele serializa o fluxo do programa.
A sincronização requer algum thread esperar por outro thread antes de o fluxo de programa
possa prosseguir, resultando em recursos de processador ociosos.
Para auxiliar o ajuste de desempenho, segue o Profiler Thread Intel
http://www.intel.com/ids/) permite que você verifique o equilíbrio de carga, contenção de
bloqueio, os gargalos de sincronização e sobrecarga paralelo. Esta ferramenta pode detalhar
para código fonte para criar thread por OpenMP ou thread libraries. O profiler identifica o
caminho crítico no programa e indica a utilização do processador por thread. Você pode ver
o thread no caminho crítico, bem como o tempo gasto em cada thread na CPU.
Impacto das CPUs Multicore em sistemas embarcados
Hardware e Software são desenvolvedores de sistemas embarcados que serão impactados
pela mudança para CPUs multicore. Felizmente, o designer de tabuleiro vai encontrar CPUs
multicore, aliviar os problemas térmicos de processadores de alto desempenho de hoje,
oferecendo performance comparável.
Os programadores de software podem precisar de se adaptar a novos modelos de
programação que incluem threaded. Embora a criação, verificação e volta threads
podeinicialmente ser árdua, que irá fornecer-lhe mais controle sobre os recursos da CPU e,
possivelmente, reduzir latências do programa.
Esse sistema de tempo real em desenvolvimento pode particionar trabalho entre múltiplos
núcleos e atribuir prioridades a fim de obter as tarefas críticas concluídas mais rapidamente.
Os desenvolvedores de software que não conseguem se preparar para a transição das CPUs
multicore pode tanto ser escondidos em CPUs mais velhas ou problemas de desempenho
risco de código otimizado.
Muitas ferramentas estão disponíveis para ajudar a transição para o código thread. Por meio
de recursos de vários segmentos, tais como Hyper-Threading, muitos desenvolvedores já têm
experiência com ferramentas especializadas e modelos de programação. Neste contexto, o
código de desenvolvimento irá fornecer um retorno imediato quando esses aplicativos são
executados em dual-core CPUs.
Multicore também levantou a questão de licenciamento de software e os custos associados
que os clientes têm de pagar.
Alguns fornecedores de software têm considerado a cobrança de taxas de licença em uma
base per-core, cobrando mais para os sistemas de dupla ou multicore. Contra essa maré, a
Microsoft anunciou que o software será licenciado em uma base pacote por processador.
O trabalho de base está sendo colocada para a transição para processadores multicore em
2005.
Ferramentas estão disponíveis para ajudá-lo a desenvolver um código eficiente e confiável
threaded. Aplicação incorporado deve planejar sua mudança para threaded Modelos de
programação para utilizar plenamente a perfomance de CPUs multicore próxima geração.
** Craig é um engenheiro da Divisão de Infra-estrutura do processador da Intel. Ele pode ser
contatado em craig.p.szydlowski@intel.com

Mais conteúdo relacionado

Mais procurados

Trabalho: Arquitetura e software paralelo
Trabalho: Arquitetura e software paralelo  Trabalho: Arquitetura e software paralelo
Trabalho: Arquitetura e software paralelo Verônica Veiga
 
Gerências de Processos: Threads
Gerências de Processos: ThreadsGerências de Processos: Threads
Gerências de Processos: Threads
Alexandre Duarte
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaAdriano Teixeira de Souza
 
Redes I - 6.Interconexão de LANs
Redes I - 6.Interconexão de LANsRedes I - 6.Interconexão de LANs
Redes I - 6.Interconexão de LANsMauro Tapajós
 
Processos+threads.2pp
Processos+threads.2ppProcessos+threads.2pp
Processos+threads.2pp
Universidade Zambeze
 
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
rafaelov
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0
Charles Fortes
 
Visão Geral: Introdução
Visão Geral: IntroduçãoVisão Geral: Introdução
Visão Geral: Introdução
Alexandre Duarte
 
[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threads[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threadsMarcio Machado Pereira
 
Cluster
ClusterCluster
Hardware questionario 01
Hardware   questionario 01Hardware   questionario 01
Hardware questionario 01
Tiago
 
Exercicios linux
Exercicios linuxExercicios linux
Exercicios linux
Alex Santos Silva
 
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicosComputação Depressão
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processosComputação Depressão
 
Pipeline Técnica de processadores.
Pipeline Técnica de processadores.Pipeline Técnica de processadores.
Pipeline Técnica de processadores.
Cleber Ramos
 
Coroutine e concorrência python
Coroutine e concorrência   python Coroutine e concorrência   python
Coroutine e concorrência python
Kaueh Moreno
 
Desenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPDesenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHP
Elton Minetto
 
Apresentação Monografia
Apresentação MonografiaApresentação Monografia
Apresentação Monografia
Leon Homar
 

Mais procurados (20)

Trabalho: Arquitetura e software paralelo
Trabalho: Arquitetura e software paralelo  Trabalho: Arquitetura e software paralelo
Trabalho: Arquitetura e software paralelo
 
Gerências de Processos: Threads
Gerências de Processos: ThreadsGerências de Processos: Threads
Gerências de Processos: Threads
 
Sistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e ParalelaSistemas Distribuídos - Computação Distribuída e Paralela
Sistemas Distribuídos - Computação Distribuída e Paralela
 
Redes I - 6.Interconexão de LANs
Redes I - 6.Interconexão de LANsRedes I - 6.Interconexão de LANs
Redes I - 6.Interconexão de LANs
 
Processos+threads.2pp
Processos+threads.2ppProcessos+threads.2pp
Processos+threads.2pp
 
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
Apresentação do artigo THREADS: O PROBLEMA DOS LEITORES E ESCRITORES IMPLEMEN...
 
Threads - .Net Framework 4.0
Threads - .Net Framework 4.0Threads - .Net Framework 4.0
Threads - .Net Framework 4.0
 
Visão Geral: Introdução
Visão Geral: IntroduçãoVisão Geral: Introdução
Visão Geral: Introdução
 
[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threads[Pereira ic'2011] explorando o paralelismo no nível de threads
[Pereira ic'2011] explorando o paralelismo no nível de threads
 
Dsm (1)
Dsm (1)Dsm (1)
Dsm (1)
 
Cluster
ClusterCluster
Cluster
 
Hardware questionario 01
Hardware   questionario 01Hardware   questionario 01
Hardware questionario 01
 
070498 t2
070498 t2070498 t2
070498 t2
 
Exercicios linux
Exercicios linuxExercicios linux
Exercicios linux
 
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
2009 1 - sistemas operacionais - aula 5 - semaforos e problemas classicos
 
2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos2009 1 - sistemas operacionais - aula 3 - processos
2009 1 - sistemas operacionais - aula 3 - processos
 
Pipeline Técnica de processadores.
Pipeline Técnica de processadores.Pipeline Técnica de processadores.
Pipeline Técnica de processadores.
 
Coroutine e concorrência python
Coroutine e concorrência   python Coroutine e concorrência   python
Coroutine e concorrência python
 
Desenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHPDesenvolvendo aplicações Web escaláveis com PHP
Desenvolvendo aplicações Web escaláveis com PHP
 
Apresentação Monografia
Apresentação MonografiaApresentação Monografia
Apresentação Monografia
 

Destaque

Teoria de las organizaciones
Teoria de las organizacionesTeoria de las organizaciones
Teoria de las organizaciones
omar
 
Luigi pirandello chacun sa verite
Luigi pirandello chacun sa veriteLuigi pirandello chacun sa verite
Luigi pirandello chacun sa verite
PeterPeter1980
 
Santhosh_JDETechnical_Resume
Santhosh_JDETechnical_ResumeSanthosh_JDETechnical_Resume
Santhosh_JDETechnical_ResumeSanthosh Kumar
 
Sibos 2012 sessions - Changing market opportunity for payments utilities
Sibos 2012 sessions - Changing market opportunity for payments utilitiesSibos 2012 sessions - Changing market opportunity for payments utilities
Sibos 2012 sessions - Changing market opportunity for payments utilities
Earthport
 
Русский язык, 4 класс. Мягкий знак на конце слов после шипящих.
Русский язык, 4 класс.  Мягкий знак на конце слов после шипящих.Русский язык, 4 класс.  Мягкий знак на конце слов после шипящих.
Русский язык, 4 класс. Мягкий знак на конце слов после шипящих.
Марина Ростовщикова
 
Agility in product development
Agility in product developmentAgility in product development
Agility in product development
Gaurav Marwaha
 

Destaque (8)

Teoria de las organizaciones
Teoria de las organizacionesTeoria de las organizaciones
Teoria de las organizaciones
 
cv
cvcv
cv
 
Componentes (hardware
Componentes (hardwareComponentes (hardware
Componentes (hardware
 
Luigi pirandello chacun sa verite
Luigi pirandello chacun sa veriteLuigi pirandello chacun sa verite
Luigi pirandello chacun sa verite
 
Santhosh_JDETechnical_Resume
Santhosh_JDETechnical_ResumeSanthosh_JDETechnical_Resume
Santhosh_JDETechnical_Resume
 
Sibos 2012 sessions - Changing market opportunity for payments utilities
Sibos 2012 sessions - Changing market opportunity for payments utilitiesSibos 2012 sessions - Changing market opportunity for payments utilities
Sibos 2012 sessions - Changing market opportunity for payments utilities
 
Русский язык, 4 класс. Мягкий знак на конце слов после шипящих.
Русский язык, 4 класс.  Мягкий знак на конце слов после шипящих.Русский язык, 4 класс.  Мягкий знак на конце слов после шипящих.
Русский язык, 4 класс. Мягкий знак на конце слов после шипящих.
 
Agility in product development
Agility in product developmentAgility in product development
Agility in product development
 

Semelhante a Multithreaded tecnologia

Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da Microarquitetura
Lincoln Lamas
 
Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core Duo
Samuel Bié
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
Luis Ferreira
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLTony Alexander Hild
 
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de ProcessadoresAmbiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Eduardo de Lucena Falcão
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Luiz Arthur
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
Engenharia de Software Ágil
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
Alyson Cavalcante
 
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...Tchelinux
 
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01164519997 curso-de-redes-laercio-vasconcelos-capitulo-01
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01Marco Guimarães
 
Apostila asp
Apostila aspApostila asp
Introdução risc x cisc
Introdução risc x ciscIntrodução risc x cisc
Introdução risc x ciscuembley
 
Resumo x86
Resumo x86Resumo x86
diagrama de componentes
diagrama de componentesdiagrama de componentes
diagrama de componenteselliando dias
 
Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Luiz Arthur
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveiselliando dias
 

Semelhante a Multithreaded tecnologia (20)

Processador
ProcessadorProcessador
Processador
 
Máquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da MicroarquiteturaMáquinas Multiníveis - Nível da Microarquitetura
Máquinas Multiníveis - Nível da Microarquitetura
 
Microarquitetura Intel Core Duo
Microarquitetura Intel Core DuoMicroarquitetura Intel Core Duo
Microarquitetura Intel Core Duo
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Computação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGLComputação Gráfica - Introdução ao OpenGL
Computação Gráfica - Introdução ao OpenGL
 
Mini-curso CUDA
Mini-curso CUDAMini-curso CUDA
Mini-curso CUDA
 
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de ProcessadoresAmbiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
Ambiente de Simulação Gráfica 3D para Ensino da Arquitetura de Processadores
 
Apostila SO
Apostila SOApostila SO
Apostila SO
 
Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)Tópicos - Computacao Paralela Programação 3 (Visão geral)
Tópicos - Computacao Paralela Programação 3 (Visão geral)
 
Sap – stablility and abstract principle
Sap – stablility and abstract principleSap – stablility and abstract principle
Sap – stablility and abstract principle
 
10 apostila microcontroladores
10  apostila microcontroladores10  apostila microcontroladores
10 apostila microcontroladores
 
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...
Desenvolva Sistemas Embutidos com Software Livre - Carlos A. M. dos Santos e ...
 
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01164519997 curso-de-redes-laercio-vasconcelos-capitulo-01
164519997 curso-de-redes-laercio-vasconcelos-capitulo-01
 
Apostila asp
Apostila aspApostila asp
Apostila asp
 
Introdução risc x cisc
Introdução risc x ciscIntrodução risc x cisc
Introdução risc x cisc
 
Resumo x86
Resumo x86Resumo x86
Resumo x86
 
diagrama de componentes
diagrama de componentesdiagrama de componentes
diagrama de componentes
 
Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)Tópicos - Computacao Paralela Programação (Visão geral)
Tópicos - Computacao Paralela Programação (Visão geral)
 
Processadores
ProcessadoresProcessadores
Processadores
 
Desenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveisDesenvolvendo aplicações Web escaláveis
Desenvolvendo aplicações Web escaláveis
 

Último

curso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdfcurso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdf
LeandroTelesRocha2
 
ptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultosptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultos
Escola Municipal Jesus Cristo
 
Anatomia I - Aparelho Locomotor e Cardiovascular
Anatomia I - Aparelho Locomotor e CardiovascularAnatomia I - Aparelho Locomotor e Cardiovascular
Anatomia I - Aparelho Locomotor e Cardiovascular
PatrickMuniz8
 
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptxLIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
WelidaFreitas1
 
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptxCIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
MariaSantos298247
 
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
CrislaineSouzaSantos
 
Eurodeputados Portugueses 2019-2024 (nova atualização)
Eurodeputados Portugueses 2019-2024 (nova atualização)Eurodeputados Portugueses 2019-2024 (nova atualização)
Eurodeputados Portugueses 2019-2024 (nova atualização)
Centro Jacques Delors
 
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
"Está o lascivo e   doce passarinho " de Luís Vaz de Camões"Está o lascivo e   doce passarinho " de Luís Vaz de Camões
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
goncalopecurto
 
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir"  - Jorge e MateusAtividade - Letra da música "Tem Que Sorrir"  - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Mary Alvarenga
 
PROVA FINAL Filosofia e Educação Cristã.ppt
PROVA FINAL Filosofia e Educação Cristã.pptPROVA FINAL Filosofia e Educação Cristã.ppt
PROVA FINAL Filosofia e Educação Cristã.ppt
betokg
 
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
Escola Municipal Jesus Cristo
 
Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.
RafaelNeves651350
 
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdfEJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
Escola Municipal Jesus Cristo
 
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdfArundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Ana Da Silva Ponce
 
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdfProjeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Bibliotecas Infante D. Henrique
 
O autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdfO autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdf
Letícia Butterfield
 
APOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdfAPOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdf
CarlosEduardoSola
 
Tesis de Maestría de Pedro Sousa de Andrade (Resumen).pdf
Tesis de Maestría de Pedro Sousa de Andrade (Resumen).pdfTesis de Maestría de Pedro Sousa de Andrade (Resumen).pdf
Tesis de Maestría de Pedro Sousa de Andrade (Resumen).pdf
Editora
 
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
Escola Municipal Jesus Cristo
 
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
PROPOSTA CURRICULAR  EDUCACAO FISICA.docxPROPOSTA CURRICULAR  EDUCACAO FISICA.docx
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
Escola Municipal Jesus Cristo
 

Último (20)

curso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdfcurso-de-direito-constitucional-gilmar-mendes.pdf
curso-de-direito-constitucional-gilmar-mendes.pdf
 
ptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultosptoposta curricular de geografia.da educação de jovens a e adultos
ptoposta curricular de geografia.da educação de jovens a e adultos
 
Anatomia I - Aparelho Locomotor e Cardiovascular
Anatomia I - Aparelho Locomotor e CardiovascularAnatomia I - Aparelho Locomotor e Cardiovascular
Anatomia I - Aparelho Locomotor e Cardiovascular
 
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptxLIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
LIÇÃO 9 - ORDENANÇAS PARA UMA VIDA DE SANTIFICAÇÃO.pptx
 
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptxCIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
CIDADANIA E PROFISSIONALIDADE 4 - PROCESSOS IDENTITÁRIOS.pptx
 
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
AULA-8-PARTE-2-MODELO-DE-SITE-EDITÁVEL-ENTREGA2-CURRICULARIZAÇÃO-DA-EXTENSÃO-...
 
Eurodeputados Portugueses 2019-2024 (nova atualização)
Eurodeputados Portugueses 2019-2024 (nova atualização)Eurodeputados Portugueses 2019-2024 (nova atualização)
Eurodeputados Portugueses 2019-2024 (nova atualização)
 
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
"Está o lascivo e   doce passarinho " de Luís Vaz de Camões"Está o lascivo e   doce passarinho " de Luís Vaz de Camões
"Está o lascivo e doce passarinho " de Luís Vaz de Camões
 
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir"  - Jorge e MateusAtividade - Letra da música "Tem Que Sorrir"  - Jorge e Mateus
Atividade - Letra da música "Tem Que Sorrir" - Jorge e Mateus
 
PROVA FINAL Filosofia e Educação Cristã.ppt
PROVA FINAL Filosofia e Educação Cristã.pptPROVA FINAL Filosofia e Educação Cristã.ppt
PROVA FINAL Filosofia e Educação Cristã.ppt
 
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...proposta curricular  ou plano de cursode lingua portuguesa eja anos finais ( ...
proposta curricular ou plano de cursode lingua portuguesa eja anos finais ( ...
 
Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.Manejo de feridas - Classificação e cuidados.
Manejo de feridas - Classificação e cuidados.
 
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdfEJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
EJA -livro para professor -dos anos iniciais letramento e alfabetização.pdf
 
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdfArundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
Arundhati Roy - O Deus das Pequenas Coisas - ÍNDIA.pdf
 
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdfProjeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
Projeto aLeR+ o Ambiente - Os animais são nossos amigos.pdf
 
O autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdfO autismo me ensinou - Letícia Butterfield.pdf
O autismo me ensinou - Letícia Butterfield.pdf
 
APOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdfAPOSTILA JUIZ DE PAZ capelania cristã.pdf
APOSTILA JUIZ DE PAZ capelania cristã.pdf
 
Tesis de Maestría de Pedro Sousa de Andrade (Resumen).pdf
Tesis de Maestría de Pedro Sousa de Andrade (Resumen).pdfTesis de Maestría de Pedro Sousa de Andrade (Resumen).pdf
Tesis de Maestría de Pedro Sousa de Andrade (Resumen).pdf
 
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
BULLYING NÃO É AMOR.pdf LIVRO PARA TRABALHAR COM ALUNOS ATRAVÉS DE PROJETOS...
 
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
PROPOSTA CURRICULAR  EDUCACAO FISICA.docxPROPOSTA CURRICULAR  EDUCACAO FISICA.docx
PROPOSTA CURRICULAR EDUCACAO FISICA.docx
 

Multithreaded tecnologia

  • 1. Multithreaded Tecnologia & Processadores multicore Preparando-se para CPUs de próxima geração - CRAIG Szydlowski Muitos aplicativos de software estão prestes a dar uma virada de cabeça para baixo na transição de CPUs de single para implementações de múltiplos núcleos / Cores. Em novos projetos, desenvolvedores de software serão encarregado de manter múltiplos núcleos ocupados para evitar deixar desempenho baixo. Em projetos, você será confrontado com o desafio de ter aplicações single-threaded funcionando de forma eficiente em múltiplos núcleos. Programas precisarão servir-se de tópicos de código que podem ser distribuídos em vários núcleos de forma eficiente. O código rompe uma tarefa em sub-tarefas, software chamado de "threads", que é executado simultaneamente e de forma independente. Código de Listagem tem sido a regra em um número de pedidos ha algum tempo, como redes de área de armazenamento. Utilizando tecnologia Hyperthreading da Intel (a empresa em que trabalho), aplicações de armazenamento implanta tarefas simultâneas para tirar proveito do tempo ocioso da CPU, ou recursos subutilizados, como quando os dados são recuperados da memória. Portanto, as ferramentas e os conhecimentos já estão disponíveis para escrever e otimizar o código threaded. Sistemas operacionais como o Windows XP, QNX, e algumas distribuições do kernel Linux foram otimizados para threading e está pronto para suportar os processadores da próxima geração. Aplicações embarcadas não são inerentemente threaded e pode exigir algum software de desenvolvimento para se preparar para CPUs multicore. Neste artigo, eu examino a motivação dos vendedores da CPU para se deslocar para multicores, as ramificações de software correspondentes, bem como o impacto sobre os desenvolvedores de sistemas embarcados. "Todas essas implementações requerem processamento do código da CPU para utilizar o seu potencial da computação" Terminologia arquitetura de CPU A terminologia para descrever várias encarnações da arquitetura da CPU é complexa. A Figura 1 descreve o desenvolvimento físico de três interpretações multithread diferentes. Figura 1 (a) mostra uma configuração dual-processor. Duas CPUs individuais compartilham um barramento comum do Processador (PSB – Processor Side Bus), que interfaces para um chipset com um controlador de memória. Cada CPU tem seus próprios recursos para executar programas. Esses recursos incluem registros de Estado do CPU (CS), de interrupção. A lógica (IL), e uma unidade de execução (UE), também chamada uma unidade aritmética e lógica (ALU). Figura 1 (b) mostra a Tecnologia Hyperthreading (HT), que mantém duas linhas em uma CPU física. Cada thread tem os seus próprios registos dos estados da CPU e interrupção Lógica, enquanto a Unidade de execução é compartilhada entre os dois segmentos. Isto significa que a unidade de execução é de tempo compartilhado por ambas as threads simultaneamente, e a unidade de execução faz continuamente o progresso em ambos os segmentos. Se uma threaded esteja à espera de uma operação a ser recuperadas da memória, a unidade de execução continua a executar o outro segmento, resultando em uma CPU totalmente utilizada. Embora a tecnologia Hyperthreading é implementada em uma única CPU física, o sistema operacional reconhece dois processadores lógicos e agenda tarefas para cada processador lógico.
  • 2. Figura 1.: Três tecnologias multithread A CPU dual-core é mostrado na Figura 1 (c). Cada núcleo contém os seus próprios meios de processamento semelhantes dedicados a um CPU particular, exceto para o Processador Side Bus, o que pode ser compartilhado entre os dois núcleos. Todas estas implementações de CPU requerem código para empregar plenamente o potencial de computação. No futuro, o modelo dual-core CPU será estendida para quad-core, com quatro núcleos em uma única peça de silício. Por que a mudança para Dual-Core? Cada vez maior velocidade de clock está criando um problema de dissipação de energia para fabricantes de semicondutores. As velocidades de relógio mais rápidos normalmente exigem transistores adicionais e tensões de entrada mais altas, resultando em maior consumo de energia. As mais recentes tecnologias de semicondutores apoiam mais e mais transistores. A desvantagem é que cada transistor tem vazamentos de uma pequena quantidade de corrente, a soma dos quais é problemática. Em vez de empurrar fichas para correr mais rápido, os projetistas da CPU estão adicionando recursos, como mais núcleos e mais cache para proporcionar um desempenho comparável, ou melhor, com menor poder. Transistores adicionais estão sendo aproveitados para criar capacidade mais diversificada, como a tecnologia de virtualização e/ou os recursos de segurança em oposição a condução para velocidades de clock mais altas. Estas diversas capacidades em última análise, trazer mais desempenho para aplicações embarcadas dentro de um orçamento de energia mais baixo. CPUs dual-core, por exemplo, pode ser cronometrado em velocidades mais lentas e é fornecido com uma voltagem mais baixa para produzir maior desempenho por watt. Paralelismo e seu impacto Software A implementação de processador multicore terá um impacto significativo sobre aplicações embarcadas. Para tirar proveito de CPUs multicore, programas exigem algum nível de migração para um modelo de software de threaded e exigem validação periódica e ajuste de desempenho. Há kernel ou sistema threads gerenciados pelo sistema operacional e threads do usuário mantidos por programadores. Aqui eu me concentro em threads do usuário. Você deve escolher um modelo de programação de rosca que se adapte o paralelismo inerente à aplicação. Quando há uma série de tarefas independentes que são executados em paralelamente, a aplicação é adequada para a decomposição funcional. Segmentação explícita é geralmente melhor para a decomposição funcional. Quando existe um grande conjunto de dados independente que deve ser processada através da mesma operação, a aplicação é adaptada para a decomposição de dados. Métodos dirigido pelo compilador, tais como OpenMP (http://www.openmp.org/), são projetados para expressar o paralelismo de dados. O exemplo a seguir descreve segmentação explícita e métodos compilador dirigido de forma mais detalhada.
  • 3. Para explorar CPUs multicore, você identifica o paralelismo dentro de seus programas e criar threads para executar várias tarefas simultaneamente. O sistema de visão-inspeção da Figura 2 ilustra o conceito de enfiar no que diz respeito ao paralelismo funcional e de dados. Você também deve decidir sobre a qual segmento modelos de implementar - segmentação explícita ou driver-compilador. O sistema de visão-inspeção na Figura 2 mede o tamanho e a colocação de cabos em um pacote de semicondutores. O sistema executa várias tarefas de funções simultâneas, como interface a um ser humano, que controla uma correia transportadora, a captação de imagens dos condutores, o processamento de imagens, e detecção de defeitos e a transferência de dados para uma rede de área de armazenamento. Estas tarefas representam paralelismo funcional porque eles correm ao mesmo tempo, executar como segmentos individuais, e são relativamente independentes. Essas tarefas são assíncronas para o outro, o que significa que não iniciam e terminam ao mesmo tempo. A vantagem de colocar essas tarefas funcionais é que a aplicação de inspeção não travar quando outras tarefas ou funções são executadas, de modo que o operador da máquina, por exemplo, experimenta uma aplicação mais ágil. O processamento das imagens de pacotes semicondutores é bem adequado para o paralelismo de dados, porque o mesmo algoritmo é executado em um grande número de elementos de dados. Neste caso, o algoritmo de detecção de defeitos processa conjuntos de pixels de acordo com looping e aplicação da mesma operação de inspeção para conjuntos independentes de pixels. Cada conjunto de pixels é processado por seu próprio segmento. Para qualquer paralelismo funcional ou dados, você pode escrever instruções de threads explicitas de um sistema operacional para executar essas tarefas concorrentemente. Um thread é intencionalmente explicito. Usando instruções codificadas de thread, tais como bibliotecas Ptthreads ou APIs Win32. Você é responsável para criar threads manualmente, independente de funções que são mapeados para o thread. Como a alocação de memória e a criação também deve ser criada por você. Embora, threads explícitos ser poderoso e de uso geral sua complexidade pode fazer um compiler-directed para uma alternativa mais atraente. Um exemplo de compiler-directed threading é Open-MP, que é um de padrão de indústria de um conjunto de diretivas de compiladores. Em Open-MP, você usa programas para descrever paralelismo para o compilador; por exemplo. #pragma omp parallel for private (pixelX,pixelY) for (pixelX=0; pixelX< imageHeigth; pixelX++) [for( pixelY=0;pixelY < imageWidth;pixelY++) {newImage [pixelX,pixelY]=ProcessPixel (pixelX,pixelY,image);} O programa omp diz que esta é uma oportunidade para Open MP paralelismo. O parallel, palavra-chave, informa o compilador para criar threads. A palavra-chave serve para informa para as iterações do compilador do próximo loop for, será dividido entre aqueles threads. A clausula privada de listas variáveis que precisam ser mantidas em sigilo para cada thread,
  • 4. para evitar condições de corrida e corrupção de dados. O compilador cria o thread isolado como na Figura 3. Observe o thread afastado, são todas criadas e retiradas ao mesmo tempo, que se assemelha aos dentes de um garfo. Tem um relacionamento explicito entre pai-filho que não é necessário com threads libraries. Isto é chamado de ‘’Fork Join’’ modelo e é um requisitocaracterístico para OpenMP paralelism. OpenMP progmas são menos geral do que threaded libraries, mas eles são menos complexos porque o compilador cria o paralelismo fundamental de código para multiplicar threads. OpenMP é suportado por vários compiladores permitindo que o threaded crie um código para ser transportado, enquanto que threaded libraries tipicamente tem fidelidade para especificar sistemas operacionais. Paralelism de bug Se os threads São criados explicitamente, pela diretiva de compilador, ou por qualquer outro método, eles precisam ser testados para garantir que não existem condições de disputas. Com uma condição de corrida, você equivocadamente assumiu uma ordem de execução particular, mas isso não é garantido. Em aplicação incorporado, os processos muitas vezes são assíncronos, um bug comum que pode significa que está dormente durante os testes de validação e permite que o código trabalhe quase o tempo todo. Uma condição de corrida pode ser causada por um conflito de armazenamento. Dois threads poderiam ser a substituição de um local de memória particular ou um thread pode presumir outro thread. Concluindo os seus trabalhos em uma determinada variável, que conduz à utilização de dados corrompidos. O acesso aos dados comuns deve ser sincronizado para evitar perda de dados. Sincronizando para poder ser implementado com uma palavra de estado simples para indicar o estado dos dados chamados ‘' semáforo ''. Uma assume o controle dos dados, por escrito '' 0 '' para a palavra de estado, enquanto escrevendo '' 1 '' para o controle de versões de palavras de status, permitindo que outro possa acessar a variável. Como aplicações embarcadas são muitas vezes acionados por interrupções, pode ser útil para implementar uma sequência de leitura- modificação-gravação protegida para garantir umas operações em uma variável desde de que não sejam perturbados por outro processo, como uma rotina de interrupção de serviço. Existem ferramentas sofisticadas disponíveis para testar as condições de corrida. O verificador da Intel (http://www.intel.com/ids/) é um depurador de runtime automatizado que verifica a existência de conflitos de armazenamento e olha para os lugares onde threads pode bloquear ou excluir. Ele identifica locais de memória que são acessados por um thread, seguido por um acesso desprotegido por outro thread, o que expõe o programa de corrupção de dados. O Thread verificador é uma ferramenta de análise dinâmica e, portanto, é um conjunto de dados independentes. Como tal, se o conjunto de dados não exercer determinados fluxos de programa, a ferramenta não é capaz de verificar que parte do código. Para aplicações embarcadas, é importante criar um conjunto de dados para que simule os processos assíncronos relevantes. Encontrar as condições de corrida pode ser muito difícil e demorado. Threads Checker pode facilmente encontrar estes conflitos, mesmo quando o conflito é gerado por instâncias de código em diferentes pilhas de chamadas e muitos milhares de linhas de intervalo. Afinando performance Uma vez que o código foi testado e verificado para ser executado corretamente, o
  • 5. desempenho de otimização pode começar. Os desempenhos da otimização devem ser limitados para o caminho de execução critica. Para maximizar o desempenho de CPUs com vários núcleos, muitas vezes é necessário assegurar que a carga de trabalho é equilibrada entre os núcleos. Desequilíbrio de carga vai limitar paralelo de forma ineficiente e escalabilidade porque algum recurso do processador será ocioso. A sincronização também pode limitar o desempenho criando gargalos e sobrecarga. Embora a sincronização de dados ajude na integridade da garantia, ele serializa o fluxo do programa. A sincronização requer algum thread esperar por outro thread antes de o fluxo de programa possa prosseguir, resultando em recursos de processador ociosos. Para auxiliar o ajuste de desempenho, segue o Profiler Thread Intel http://www.intel.com/ids/) permite que você verifique o equilíbrio de carga, contenção de bloqueio, os gargalos de sincronização e sobrecarga paralelo. Esta ferramenta pode detalhar para código fonte para criar thread por OpenMP ou thread libraries. O profiler identifica o caminho crítico no programa e indica a utilização do processador por thread. Você pode ver o thread no caminho crítico, bem como o tempo gasto em cada thread na CPU. Impacto das CPUs Multicore em sistemas embarcados Hardware e Software são desenvolvedores de sistemas embarcados que serão impactados pela mudança para CPUs multicore. Felizmente, o designer de tabuleiro vai encontrar CPUs multicore, aliviar os problemas térmicos de processadores de alto desempenho de hoje, oferecendo performance comparável. Os programadores de software podem precisar de se adaptar a novos modelos de programação que incluem threaded. Embora a criação, verificação e volta threads podeinicialmente ser árdua, que irá fornecer-lhe mais controle sobre os recursos da CPU e, possivelmente, reduzir latências do programa. Esse sistema de tempo real em desenvolvimento pode particionar trabalho entre múltiplos núcleos e atribuir prioridades a fim de obter as tarefas críticas concluídas mais rapidamente. Os desenvolvedores de software que não conseguem se preparar para a transição das CPUs multicore pode tanto ser escondidos em CPUs mais velhas ou problemas de desempenho risco de código otimizado. Muitas ferramentas estão disponíveis para ajudar a transição para o código thread. Por meio de recursos de vários segmentos, tais como Hyper-Threading, muitos desenvolvedores já têm experiência com ferramentas especializadas e modelos de programação. Neste contexto, o código de desenvolvimento irá fornecer um retorno imediato quando esses aplicativos são executados em dual-core CPUs. Multicore também levantou a questão de licenciamento de software e os custos associados que os clientes têm de pagar.
  • 6. Alguns fornecedores de software têm considerado a cobrança de taxas de licença em uma base per-core, cobrando mais para os sistemas de dupla ou multicore. Contra essa maré, a Microsoft anunciou que o software será licenciado em uma base pacote por processador. O trabalho de base está sendo colocada para a transição para processadores multicore em 2005. Ferramentas estão disponíveis para ajudá-lo a desenvolver um código eficiente e confiável threaded. Aplicação incorporado deve planejar sua mudança para threaded Modelos de programação para utilizar plenamente a perfomance de CPUs multicore próxima geração. ** Craig é um engenheiro da Divisão de Infra-estrutura do processador da Intel. Ele pode ser contatado em craig.p.szydlowski@intel.com