English French German Spain Italian Japanese

quinta-feira, 25 de março de 2010

Chip multicore exige nova abordagem do SO, diz arquiteto da Microsoft

Segundo Dave Probert, plataformas atuais não conseguem obter o máximo oferecido por processadores de núcleos múltiplos.

Com o aumento contínuo do número de núcleos nas novas gerações de processadores, pode ser hora de a indústria de software repensar a arquitetura básica dos sistemas operacionais. Pelo menos é o que sugere o arquiteto de kernel da divisão de sistemas operacionais da Microsoft, Dave Probert.
O atual aproveitamento das capacidades dos processadores multicore é complicado e não é completamente bem sucedido, argumenta, explicando que a chave pode não ser colocar mais energia em técnicas de refinamento, como programação paralela, e sim repensar as abstrações básicas que fazem o modelo de sistemas operacionais.

Cenário atual

Probert afirma que os computadores de hoje não conseguem desempenho suficiente dos chips de múltiplos núcleos. Ele diz ainda que suas ideias não representam o atual trabalho que está sendo feito na Microsoft, e que muitos arquitetos como ele não compartilham sua visão. Um sistema operacional novo, que fosse construído a partir do zero, na opinião de Probert, seria muito diferente do Windows e do Unix atuais.


As máquinas de hoje, normalmente rodam múltiplos programas simultaneamente, tocando música - por exemplo - enquanto os usuários redigem e-mails e navegam na internet, ou trabalham em planilhas, textos e apresentações. “Tempo de resposta é realmente importante e é isso que as pessoas querem”. O arquiteto da Microsoft diz, porém que a dificuldade está em como o sistema define que tarefa é mais importante, para evitar que o usuário fique esperando o Word abrir só porque o antivírus começou a vasculhar seu HD. O agendamento de tarefas evita situações como essas, mas isso ainda é muito pouco.
Com a adição de processadores multicore, criou-se um verdadeiro “campo dos sonhos” para os fabricantes produzirem computadores potentes na esperança de os programadores escreverem programas para eles. E é justamente aí que está o problema: os softwares de hoje não sabem usar de modo eficiente essa variedade de núcleos nos chips.
Para tirar proveito deles, desenvolvedores precisam usar técnicas de programação paralela, disciplina difícil de aprender e não é muito usada fora de programas científicos especializados como simuladores climáticos.
Para Probert, uma forma possível de lidar melhor com chips multicore seja repensar o modo que sistema operacional age com os processadores. “Na verdade a questão não é se devemos fazer paralelo, e sim o que devemos fazer com todos esses transistores”.
A atual arquitetura dos sistemas operacionais é baseada em um número diferente de abstrações, ressalta Probert. Nos primórdios da computação, um programa era rodado em uma única CPU. Mais tarde, para que múltiplos programas pudessem ser executados ‘simultaneamente’, a CPU foi ‘dividida’ em processos, dando a cada aplicativo a ilusão de estar rodando em uma CPU dedicada.
Mas a ideia de ‘processo’ era apenas uma abstração, e não deveria ser única. A partir do momento em que o sistema operacional passou a lidar com múltiplos programas, foi necessário assegurar a ele um espaço protegido, livre da ação do usuário e da interferência do software.
Probert diz que foi assim que nasceu o modo kernel, que é separado do espaço no qual os programas rodam, chamado de modo de usuário. Tal conceito divide a CPU em duas CPUs ‘abstratas' (ou virtuais)   , uma para o modo usuário e outra para o kernel.
Com todas essas 'CPUs virtuais', começa a batalha para ver que processo vai, de fato, obter a atenção da CPU física. A troca de informações e demandas entre as ‘CPUs’ começa a crescer de um jeito que a resposta sofre, especialmente quando múltiplos núcleos são introduzidos, frisa Probert.

Futuro

Com a Intel e AMD prevendo aumentar o número de cores em seus processadores, a comunidade que desenvolve sistemas operacionais está tranquila, pois vai continuar a trabalhar com o mesmo tipo de abstração, dos modos usuário e kernel. “Com múltiplos núcleos, a 'CPU' pode se tornar uma CPU novamente. Se conseguirmos um número suficiente deles, talvez seja possível usá-los para programas individuais”, diz o arquiteto.
Visto desta maneira, o sistema operacional não mais se assemelharia ao modo kernel que se vê hoje, e passaria a ter um papel de 'hipervisor'. Em um conceito de virtualização, um hypervisor atua como uma camada entre a máquina virtual e o hardware físico.
Nessa situação, os aplicativos (ou processos em execução como Probert os denomina) tomariam para si grande parte das tarefas de gerenciamento, com o sistema operacional atribuindo a cada aplicativo uma CPU e uma determinada quantidade de memória. Os aplicativos, por meio de metadados gerados pelo compilador, saberiam melhor como usar tais recursos.
Probert admite que essa abordagem é muito difícil de ser testada pois requer aplicativos em volume para se confirmar possível. Mas o trabalho pode se mostrar valioso. “Há muito mais flexibilidade nesse modelo”, diz.

0 comentários:

Postar um comentário

Twitter Delicious Facebook Digg Stumbleupon Favorites More