 |
 |
 |
| Queremos a sua opinião |
|
| Temos grande interesse nos seus comentários sobre o site. Clique aqui para enviar seus comentários, mudanças e sugestões. |
|
|
 |
 |
 |
|  |
|
 |
| Mudança radical: processamento multi-core abre possibilidades de negócio inovadoras |
Você encontrará este arquivo completo na revista Insight de software Intel®, edição de setembro de 2006.
|
| Uma profunda transformação nos modelos de programação |
|
Ocasionalmente, uma mudança tecnológica varre a indústria e agita totalmente o mundo do software. A computação paralela, revitalizada pelos processadores multi-core recém-lançados, é uma mudança desse tipo. A mudança para a computação paralela está revolucionando os modelos tradicionais de programação linear e favorecendo um renascimento das ferramentas de desenvolvimento, novos conceitos de programação, novos modelos de multitarefas e diversas oportunidades para os desenvolvedores de soluções e arquitetos de sistemas conquistarem um novo espaço e criarem aplicativos definidores de tendências. As empresas podem vislumbrar um futuro onde o desempenho com economia de energia e a preparação para o futuro dos aplicativos estimula a inovação, estende o ciclo de vida dos produtos e oferece vantagens competitivas aos que adotarem a tecnologia agora. Em meio ao tumulto e à reestruturação que acompanham toda mudança tecnológica, as empresas têm a oportunidade ideal de pegar a crista dessa onda, adaptando os aplicativos para tirar proveito da capacidade multithreading e do desempenho com redução no consumo de energia incorporados às microarquiteturas Intel® Core™. A Intel respalda as empresas que dão um salto, com uma grande variedade de ferramentas e tecnologias de ativação, desde o ensino e treinamento em nível universitário até os módulos de multi-threading, para agilizar o desenvolvimento. Este artigo discute o direcionamento e o possível desenvolvimento de aplicativos de múltiplos processos (multi-threading), novos modelos de uso e a promessa do projeto de aplicativos preparados para o futuro, almejando muito além dos processadores dual-core e quad-core até processadores de muitos núcleos que ainda se encontram na fase de planejamento.
|
|
|
| Florescimento de usos inovadores |
|
Até o final de 2007, a grande maioria dos novos computadores comercializados conterá a tecnologia Intel® dual-core ou quad-core. A ampla adoção da tecnologia de processador multicore está inspirando uma nova maneira de abordar as possibilidades tecnológicas e provocando uma explosão de criatividade nos designs de soluções inovadoras. Os desenvolvedores de aplicativos cliente podem explorar novas formas de empregar a multitarefa, anteriormente consideradas impraticáveis e difíceis de executar. Por exemplo, as tarefas úteis poderiam ficar em execução o tempo todo — a varredura de vírus em operação contínua e pró-ativa, um utilitário de backup automático para garantir que nenhum arquivo desapareça, um monitor inteligente de workflow prevendo as necessidades dos usuários e fornecendo informações em tempo real, quando necessário. Os diversos aplicativos práticos que ficarão em execução contínua, em segundo plano, continuarão aumentando à medida que o processamento multi-core se consagra cada vez mais nos computadores cliente. Com outras capacidades de processamento entrando online, as oportunidades de desenvolvimento ultrapassarão as simples melhorias relacionadas ao desempenho. Comandos acionados por voz, voz e vídeo sobre IP, novas capacidades de auxílio a informações e acesso em tempo real, gerenciamento avançado de IP, e funções de pesquisa e recuperação em várias camadas são apenas alguns dos recursos que permitirão ambientes tecnológicos mais ágeis e mais completos para os usuários. O ecossistema de software está no ponto ideal para os usos inovadores adicionais que expandem esse tipo de raciocínio para outros horizontes totalmente novos.
|
|
|
|
| |
| Nesta Edição |
|
História em destaque
|
| |
|
 |
“Pense um pouco: pela primeira vez na história da computação, os computadores mainstream não serão mais máquinas von Neumann — serão paralelas. Considerando que nossos aplicativos serão executados em máquinas paralelas, este é um momento de grandes oportunidades e de muito trabalho. Certamente, a simultaneidade já foi realizada; a computação paralela foi pesquisada por algumas das mesmas pessoas mencionadas anteriormente, e empresas como a Cray têm feito isso durante anos. Entretanto, o programador e os ambientes convencionais certamente não a têm realizado rotineiramente, e só agora iniciamos o processo de trazer a simultaneidade e a programação paralela para a maioria.”
—Dr. Dobb’s Journal, agosto de 2006
|
 |
A Intel tem o compromisso de ajudar os desenvolvedores a usarem novas técnicas de desenvolvimento e a explorarem novas capacidades do processador através de treinamento, ensino e novos produtos para desenvolvimento de software. Um dos objetivos é fazer com que a próxima geração de desenvolvedores “pense paralelamente”. Essa mudança será uma evolução gradativa e não vai acontecer da noite para o dia. À medida que os designers, engenheiros de software, projetistas de sistemas e desenvolvedores de soluções entendem o conceito de executar vários processos simultaneamente, surgem horizontes totalmente novos em termos do que os computadores podem fazer. De modo semelhante, o projeto de aplicativos de processos abre possibilidades para a comunidade de desenvolvimento de software e já estão surgindo usos inovadores que sugerem essas possibilidades. Um pesquisador na Universidade da Califórnia em San Diego demonstrou recentemente um aplicativo de processos que pode salvar vidas. Erupções vulcânicas na ilha de Java, na Indonésia, ameaçam periodicamente as pessoas que vivem em uma das áreas de maior densidade populacional do mundo. Para avaliar os níveis de ameaça e ajudar a definir planos de evacuação, o pesquisador projetou um aplicativo de processos que recupera simultaneamente detalhes topográficos, mapas de satélite da região, dados de atividade sísmica e outras informações. Ao combinar e distribuir em camadas as imagens e os dados, ele criou um mapa tridimensional foto-realístico que retrata as linhas das falhas, áreas ameaçadas e os possíveis riscos para os centros populacionais. Geólogos, profissionais do planejamento urbano, equipes de emergência, pontos de notícias e outros na região de Java já possuem uma ferramenta de processos que pode ajudar a salvar vidas e avaliar o risco patrimonial. Os dados do aplicativo estão sendo atualizados regularmente, de acordo com as ocorrências de atividades vulcânicas. A partir dessas informações, o governo pode tomar providências em relação às pessoas que provavelmente perderão suas casas.
|
|
Os processos podem ser beneficiados com os projetos de processadores atuais e futuros, de tal modo que os desenvolvedores ainda estão começando a entender. Por exemplo, se um aplicativo foi configurado para hyper-threading, poderá propiciar benefícios imediatos em um sistema dual-core, só porque ele foi criado para usar dois processos. Esperamos que seja escrito um aplicativo para criar mais de dois processos, para permitir o uso de mais de um processador em hyper-threading ou dual-core. Em termos ideais, um programa é escrito e preparado para criar pelo menos uma quantidade de processos igual à de processadores. Ter um programa preparado para usar processos adicionais, seja de núcleos ou de hyper-threading, permite graduar o desempenho do aplicativo pela quantidade de processadores. Ao projetar aplicativos para processadores dual-core e quad-core, os desenvolvedores tendem (devido ao modo como as plataformas funcionavam antigamente) a raciocinar em termos de utilizar dois ou quatro processos. Contudo, se os desenvolvedores projetarem programas para a maior quantidade de processos possível dentro do programa, à medida que núcleos adicionais se tornarem disponíveis, o aplicativo será executado mais rapidamente e de modo mais eficiente. A prática de encadear em processos além do número de núcleos disponíveis no momento basicamente prepara o projeto do aplicativo para o futuro e proporciona retornos sobre o investimento em tempo e esforço, que podem se estender por anos depois do lançamento do aplicativo.
 |
“Ao tirar proveito das diversas ferramentas da Intel para desenvolvimento de software para threading e de sua ampla experiência, pudemos constatar um aumento de 70 por cento do desempenho quando nossos codecs de mp3 e de mp3 SURROUND funcionaram com a tecnologia de processador Intel® Centrino®. Isso propicia excelentes momentos de audição para os consumidores”
—Rocky Caldwell, Gerente geral de Licenciamento de mp3, Thomson
|
 |
Na realidade, os desenvolvedores e designers de software não deveriam ficar pensando se necessitam de dual-core ou quad-core. Em vez disso, ao projetar aplicativos, é prático e eficiente considerar quantas tarefas podem ser executadas paralelamente. Se os desenvolvedores projetarem para o máximo de processos possível no início, eles se beneficiarão com o roteiro da Intel por anos a fio. Se você projetar somente para tornar duas tarefas paralelas (supondo que o alvo é dual-core), perderá a vantagem da próxima rodada de avanços de processador. À medida que plataformas mais modernas e mais capazes forem lançadas, os aplicativos projetados para o máximo de processos possível poderão funcionar mais rapidamente.
Os desenvolvedores de software serão desafiados a criar aplicativos escaláveis, a lidar com novos desafios de depuração e a fazer tudo isso com um código sustentável. Em geral, o desenvolvimento de software dependerá mais das abstrações para evitar o gerenciamento explícito dos processos. A maioria dos desenvolvedores de ferramentas dedica mais atenção a essa área. Abstrações, como bibliotecas, OpenMP* e Módulos de sub-rotinas Intel®, são críticas para ajudar a obter uma distribuição efetiva do processamento, na prática. Por último, a confiança ao implantar um aplicativo exige lidar com a ameaça das condições de impasse e da corrida (bugs comuns da programação paralela). O Intel® Thread Checker (Verificador de Processos) pode ajudar a enfrentar essas ameaças. Uma observação positiva é que as ferramentas estão melhorando bastante e, com o passar do tempo, os fornecedores descobrirão meios de aprimorar ainda mais a programação paralela. Os desenvolvedores devem conhecer os problemas de escalabilidade, depuração e do código sustentável ao contar com as ferramentas para desenvolvimento de software para simplificar a programação e garantir a perfeição ao transformar aplicativos em paralelismo.
|
|
Os produtos Intel disponíveis para desenvolvimento de software, que têm suporte para o paralelismo, contêm bibliotecas, verificadores de processos, compiladores com extensões OpenMP*, depuradores e analisadores de desempenho. Para complementar essa coleção primorosa de produtos, a Intel acabou de lançar os Módulos de sub-rotinas Intel®, uma biblioteca de runtime baseada em modelo do C++ válido para todas as plataformas. Este módulo vem para preencher a lacuna existente entre as ferramentas complexas de desenvolvimento de multithreading de nível inferior e os algoritmos prontos para usar, de nível superior. Usando esses modelos, os desenvolvedores podem incorporar imediatamente construções paralelas escaláveis e testadas ao código existente. Facilidade de programação, um destaque sobre a perfeição dos algoritmos de processos e provisões para escalabilidade caracterizam os Módulos de sub-rotinas Intel. Essas características e recursos devem atrair os desenvolvedores de linguagem C++ que têm menos experiência em conceitos de encadeamento de processos e torná-los rapidamente ágeis na criação de aplicativos de alta simultaneidade e de processos seguros. Com suporte para o Microsoft Windows*, Linux* e Mac OS X* em plataformas de 32 e 64 bits, esses módulos provavelmente se tornarão uma ferramenta de uso intenso para grupos de desenvolvimento prospectivos, que têm em vista implementações de processadores multi-core com um interesse em dinamizar a implantação. O apelo deste produto também é ampliado através da compatibilidade com os compiladores da Intel, Microsoft e GNU. As ferramentas de threading (encadeamento) da Intel equipam os engenheiros de software com um caminho rápido através das complexidades do encadeamento de aplicativos, uma vantagem que pode permitir economia de tempo e dinheiro nas empresas e a manter os projetos de software focados e dentro da programação. Para obter detalhes adicionar, visite o site www.intel.com/software/products/tbb .
|
|
|
| Economia de energia incluída no pacote |
|
Antigamente, os avanços implementados no desempenho dos processadores geravam mais consumo de energia e aumento das temperaturas de serviço. A microarquitetura Intel Core derruba esse modelo, propiciando um desempenho por watt muito melhorado, criando um ambiente para uma nova geração de soluções tecnológicas:
- Dispositivos compactos de alto desempenho que funcionam a temperaturas mais baixas
- Salas de servidor que consomem menos energia e precisam de menos condicionamento de ar
- Soluções para mobilidade que prolongam a autonomia da bateria
- Soluções para consumidores e empresas, fisicamente impossíveis com os processadores das gerações anteriores
Praticamente todas as plataformas se beneficiam com a economia de energia que respalda a transição da arquitetura para o processamento multi-core.
Vislumbrando o futuro, James Reinders, diretor de marketing e negócios na divisão de Produtos para Desenvolvimento de Software da Intel®, afirma: “Surpreende-me que, em termos de desenvolvimento futuro, a magnitude da mudança que os desenvolvedores de software enfrentarão será significativa. Daqui a uma década, olharemos para trás e lembraremos como era diferente o modo de criar um código de programa. Para todos, o paralelismo será de uso generalizado. Na realidade, isso traz oportunidades importantes para as empresas e novas possibilidades para cada desenvolvedor de software, inclusive os desenvolvedores de ferramentas, como nosso time no Grupo de Desenvolvimento de Software da Intel. Nesse exato momento, eis uma excelente oportunidade de repensar e planejar estratégias de programação para a próxima década e descobrir maneiras de explorar totalmente o potencial das arquiteturas de processadores multi-core.” Diversas vantagens das arquiteturas de multiprocessadores já estão disponíveis, sem exigir qualquer modificação nos projetos dos aplicativos. Tirar o máximo proveito das possibilidade de encadeamento (threading) abre novas capacidades e ajuda a atingir o uso ideal de todos os recursos de processamento disponíveis. À medida que os desenvolvedores adotarem a mudança de paradigma que está se apresentando, a natureza do processamento multi-core redefines o mapa do desempenho para o futuro. Felizmente, existem muitos recursos educacionais, oportunidades de treinamento e conhecimento técnico que podem ser explorados para amainar o impacto dessa mudança.
Chegou a hora de os fornecedores de software independentes e desenvolvedores de soluções se engajarem totalmente na transição e começarem a delinear um caminho para ajudar a assegurar que as novas capacidades de desempenho e multitarefa tenham um suporte eficiente em seus projetos de aplicativos. A transformação da computação paralela está a caminho e as empresas que aproveitarem a ocasião têm uma excelente oportunidade de ganhar uma vantagem competitiva, preparar seus aplicativos para o futuro para aumentar suas receitas e o desempenho à medida que os processadores de muitos núcleos se tornarem disponíveis, e reprojetar seus aplicativos com capacidades otimizadas que surpreenderão os clientes, melhorarão a agilidade e descreverão novos caminhos inovadores no mundo do software. As empresas que esperarem ficarão para trás. |
|
| |
| O que fazer |
|
Grupos de TI:
Planeje suas implantações de servidores para uma operação executada a temperaturas mais baixas, de desempenho superior, com os sistemas baseados nos mais recentes processadores multi-core da Intel.
Identifique os gargalos dos aplicativos corporativos e os fatores limitadores do desempenho, usando as ferramentas para desenvolvimento de software da Intel.
Torne os processos comerciais mais eficientes, com o uso eficiente de projetos de aplicativos de múltiplos processos.
Aumente a produtividade e eficiência dos membros da equipe, com o uso mais eficaz da multitarefa em conjuntos de programas e aplicativos empresariais.
Desenvolvedores de software:
Incorpore o threading (encadeamento de processos) aos aplicativos novos e existentes para oferecer suporte para a quantidade máxima de núcleos e processos do processador.
Eduque e treine os membros de sua equipe para explorar os recursos dos processadores multi-core e para preparar projetos de aplicativos para o futuro.
Identifique e remova os gargalos de memória de E/S.
Valide seus aplicativos usando os mais recentes Produtos para Desenvolvimento de Software da Intel®.
Conheça onde seu sistema operacional preferido tem processos encadeados e tire o máximo proveito.
Forneça produtos que otimizem as experiências dos usuários finais através das vantagens do processamento de mídia mais abrangente, multitarefa aberta e desempenho multi-threading.
|
| |
|
|
Para conhecer muito mais sobre as tecnologias de software da Intel e sobre os esforços da computação paralela, visite as seguintes áreas do site da Intel na web:
|
|
|
|
Todas as informações fornecidas relacionadas a produtos e planos futuros da Intel são preliminares e sujeitas a alterações a qualquer momento, sem aviso.
|
|
|