Nova técnica pode permitir chips com milhares de núcleos
Olá pessoal que acompanha o blog Suprimatec, normalmente começo os textos aqui direto na tradução, mas esse é um texto diferente, muito técnico e pesado, muitos dos termos aqui citados podem ser de outro planeta para quem não é muito íntimo com a área de tecnologia, mas não deixa de ser importante para o desenrolar da contextualização do que é proposto aqui no blog para vocês.
Pense na velocidade que seu computador processa os dados quando você envia um comando a ele, um clique do mouse por exemplo, ou a abertura de um filme. É relativamente rápido. O que este estudo propõe é uma maneira de acelerar ainda mais tais processos computacionais, reformulando a maneira como é inserida e processada os dados dentro do núcleo de um processador, e o que um conjunto de processadores pode fazer é fenomenal.
Separei alguns termos menos comuns na linguagem formal e deixei links para que possam aprender mais, espero que gostem. No final, deixem suas conclusões.
Em um chip moderno com múltiplos núcleos, cada um deles, tem seu próprio e pequeno cache de memória onde armazenam os dados mais acessados. Mas o ele tem um grande e compartilhado cache que todos os núcleos podem acessar.
- O que é cache? É a área da memória onde é mantida uma cópia temporária dos dados armazenados em um meio de acesso mais lento, com o objetivo de acelerar a recuperação dos dados. Veja mais sobre aqui.
Se um núcleo tenta atualizar dados no cache compartilhado, os outros núcleos que trabalham com os mesmos dados precisam saber. O cache compartilhado possui um diretório de quais núcleos tem cópias de determinado dado.
Esse diretório compromete uma certa quantia de memória: em um chip com 64 núcleos chega a 12% do cache compartilhado. E essa porcentagem só aumenta de acordo com o número de núcleos. Imaginando chips com 128, 256, ou até 1000 núcleos precisarão de uma maneira mais eficiente de manter a coerência de manutenção do cache.
Na Conferencia Internacional em Arquiteturas Paralelas e Técnicas de Compilação em outubro, os pesquisadores do MIT, descobriram a primeira e fundamental nova aproximação para a coerência de cache em mais de três décadas. Enquanto que nas técnicas existentes, a alocação da memória do diretório aumenta diretamente proporcional ao número de núcleos, com essa nova aproximação, isso aumenta de acordo com o logaritmo do número de núcleos.
- O que é logaritmo? Trata-se do expoente a que se deve elevar um número tomado como base para se obter outro número. Veja mais sobre aqui.
Em um chip com 128 núcleos, isso significa que a nova técnica irá precisar de apenas um terço da memória do que na técnica anterior. Com o lançamento da Intel, num futuro próximo, de um processador de alta performance com 72 núcleos, isso é mais do que uma vantagem hipotética. Mas com um chip de 256 núcleos, a economia de espaço chega a 80%, e em um com 1000 núcleos chega na casa dos 96% de economia de espaço.
Quando múltiplos núcleos apenas leem os dados armazenados em um único lugar, não existe problema. Conflitos pode acontecer apenas quando um dos núcleos precisa atualizar a partir do cache compartilhado. No diretório do sistema, o chip procura pelos núcleos que estão trabalhando com aqueles dados e manda mensagens invalidando as copias locais armazenadas dos dados.
“Os diretórios garantem que quando a gravação acontece, não exista cópias obsoletos dos dados,” disse Xiangyao Yu, um estudante graduado em engenharia elétrica, ciência da computação e primeiro autor da teoria. “Depois que a gravação ocorre, não existe leitura prévia da copia anterior. Então esta gravação é ordenada depois de todas as leituras anteriores em ordem física no tempo”
Viagem no tempo
O que Yu e seu orientador Srini Devadas, com o professor Edwin Sibley Webster no Departamento de Engenharia Elétrica e Ciência da Computação do MIT descobriram foi que a ordem no tempo físico da distribuição da computação realmente não importa, desde que a ordem do seu tempo lógico seja preservada. Isto é, o núcleo A continua trabalhando em uma parte dos dados que o núcleo B já sobrescreveu contanto que o resto do sistema trata o trabalho do núcleo A da mesma maneira que tratou o núcleo B.
A abordagem ingênua de Yu e Devadas está em encontra um meio simples e eficaz de execução de uma ordenação global em tempo lógico. “O que nós fazemos é apenas atribuir marcas de tempo para cada operação, e temos certeza de que todas as operações seguem essa ordem das marcas de tempo”, diz Yu.
Com o sistema de Yu e Devada, cada núcleo tem seu próprio contador, e cada dado na memória é associado a um contador também, quando um programa é lançado, todos os contadores são zerados. Quando um núcleo lê uma parte do dado, é feito uma marca, seu contador é incrementado tambem, digamos, 10. Desde que o contador interno do dele não exceda 10, a sua cópia dos dados é válida.(O número em particular realmente não importa tanto, o que importa é o valor relativo.)
Quando o núcleo precisa sobrescrever o dado, ele se apossa dele. Outros núcleos continuam trabalhando em suas copias de dados armazenados localmente, mas se eles precisam estender sua alocação, eles precisam se coordenar com o proprietário dos itens de dados. O núcleo que está fazendo a escrita incrementa seu contador interno para um valor que é mais elevado do que o último valor de contador do item de dados.
Digamos, por exemplo, que núcleos de A a D precisam ler os mesmos dados, definindo os seus contadores internos para 1 e incrementando contador dos dados a 10. O núcleo E precisa de substituir os dados, por isso toma posse dele e define seu contador interno a 11. O seu contador interno agora designa como operar em um momento lógico mais tarde do que os outros núcleos: Eles são o caminho de volta a 1, e ele está à frente em 11. A ideia de saltar para a frente no tempo é o que dá ao sistema o seu nome, “Tardis“, homenagem a nave espacial que viaja no tempo da série britânica de ficção científica Dr. Who.
Agora, se um núcleo tenta alocar uma nova parte nos dados, ele vai achar que é propriedade de núcleo E, para o qual ele envia uma mensagem. O núcleo E grava os dados de volta para o cache compartilhado, e do núcleo A faz a leitura, incrementando seu contador interno para 11 ou mais.
Potencial inexplorado
Além de economizar espaço na memória, Tardis também elimina a necessidade de transmitir mensagens de invalidação para todos os núcleos que estão compartilhando um item de dados. Em chips de múltiplos núcleos, Yu diz que poderia levar a melhorias de desempenho também. “Nós não vimos ganhos de desempenho nestas experiências”, diz Yu. “Mas isso pode depender dos benchmarks”, programas padrões da indústria em que Yu e Devadas testaram o Tardis. “Eles estão altamente otimizados, então talvez eles já removeram esse gargalo”, diz Yu.
- O que é Benchmarking? É o processo de busca das melhores práticas numa determinada indústria e que conduzem ao desempenho superior. É visto como um processo positivo e através do qual uma empresa examina como outra realiza uma função específica a fim de melhorar a forma como realiza a mesma ou uma função semelhante. O processo de comparação do desempenho entre dois ou mais sistemas é chamado de benchmarking e as cargas usadas são chamadas de benchmarks. Leia mais sobre aqui.
“Já teve outras pessoas que olharam para este tipo de ideia de alocação”, diz Christopher Hughes, principal engenheiro da Intel Labs, “mas pelo menos que eu saiba, eles tendem a usar o tempo físico. Você daria um contrato de arrendamento a alguém e diria, ‘OK, sim, você pode usar esses dados para, digamos, 100 ciclos, e eu garanto que ninguém vai tocá-los nesse período de tempo’.
Mas então você está limitando seu desempenho, porque se alguém imediatamente depois quer mudar os dados, então eles têm que esperar 100 ciclos antes que eles possam fazê-lo.
Enquanto neste novo processo, não há problema, você pode simplesmente avançar o relógio. Isso é algo que, a meu conhecimento, nunca foi feito antes. Essa é a ideia chave que é realmente pura.”
Hughes diz, no entanto, que os projetistas de chips são conservadores por natureza. “Quase todos os sistemas comerciais produzidos em massa são baseados em protocolos baseados em diretório“, diz ele. “Nós não mexer com eles, porque é muito fácil cometer um erro ao alterar a aplicação.”
Mas “parte da vantagem de seu esquema é que ele é conceitualmente um pouco mais simples do que os atuais regimes baseados em [diretório]”, acrescenta. “Outra coisa que esses caras têm feito é não só propor a ideia, mas eles têm um papel separado, na verdade, provando a sua exatidão. Isso é muito importante para a gente neste domínio.”
Para ver o estudo clique aqui: Tardis: Time Traveling Coherence Algorithm for Distributed Shared Memory
Fonte: Larry Hardesty, MIT Notícias via SciTech Daily
Oi Eder!! O texto é técnico e está bem explicado.
Ficou muito bom com os links e as explicações.
Parabéns, gostei e aprendi um pouco mais sobre tecnologia. Aliás, tenho aprendido muito com você no blog.
Abs
Obrigado minha parceira! Você sabe que seu blog é sensacional, não é atoa que eu compartilho mesmo suas postagens no face! Valeu, que bom que gostou
Sempre que me pergunto onde a tecnologia vai parar, tenho a sensação de que é só o começo.
É isso mesmo meu caro colega Gustavo, lembro das minhas aulas na minha antiga faculdade de Ciência da Computação, quando os professores falavam que a tecnologia evolui de forma exponencial! Foi quando me apaixonei por ela!