Home Artigos Arquitetura de Computadores
Disciplina Arquitetura (mestrado)
Multiprocessadores Simétricos & O Kernel, uma história de amor.... Imprimir E-mail
Escrito por Administrator   
Sáb, 15 de Outubro de 2011 01:16

Arquitetura de Computadores - PPGI/UFPB

Unidade 5

Desde meados de 2002, quando a Intel lançou a série dos incríveis processadores Pentium 4, os quais chegavam a atingir clocks na faixa dos 3,8Ghz, os seus engenheiros e projetistas começaram a levar a sério os problemas decorrentes do aquecimento destas pequenas pastas de silício. Já era passada a hora de migrar de paradigma. Assim, finalmente, foram empenhados esforços nos Multiprocessadores Simétricos, os famosos SMPs, no sentido de tornar-lhes, de fato, a nova tecnologia dominante.

Os SMPs são, em linhas gerais, arquiteturas onde grupos de processadores, independentes, podem trabalhar conjuntamente. De fato, essa foi uma solução realmente plausível. Levando em conta que o Sistema Operacional realize um escalonamento de forma eficiente, pode-se ter dois núcleos de 1,5Ghz funcionando como um único núcleo de 3Ghz, mas eliminando uma série de problemas que se teria com este, como aquecimento e, diga-se de passagem, custo ($D)! Nesta arquitetura, tem-se núcleos realmente independentes, cada um com sua própria Unidade de Controle, ULA, registradores e cache. Como já era de se esperar, eles compartilham a mesma memória principal e, consequentemente, o mesmo barramento de memória, além da entrada/saída. Este gargalo, que chega a ser uma desvantagem no que diz respeito ao desempenho, passa a ser uma grande vantagem no quesito de simplicidade no modelo de programação (justamente ao contrário dos MPPs). Isto é, desde que os implementadores do Sistema Operacional, mais especificamente dos algoritmos de escalonamento de processos, tenham feito as suas atividades de casa (isso, eles tinham tempo para fazer coisas legais :D)

De inicio, os Sistemas Operacionais (SOs) não cumpriam muito bem o seu papel de gerenciamento dos multiprocessadores, o que culminava em certo desperdício desses recursos. Mas, ainda assim, graças a esse trabalho dos SOs, os programadores de aplicações puderam, simplesmente, desfrutar dos SMPs de forma transparente (obviamente, usando processos multithreads!). Com isso, ganha-se: desempenho, disponibilidade (haja vista que a falha em um core não afetará os demais), crescimento incremental, entre outras vantagens.

Mas, nem tudo são rosas. Enquanto, em teoria, uma arquitetura SMP possa escalar para até 256 processadores simétricos, o mecanismo de escalonamento presente no GNU\Linux “só” suporta até 64 destes (considerando o Kernel v2.6). Embora até pouco tempo esse número fosse bastante suficiente, atualmente, com a explosão da virtualização & cloud computing, já se é relativamente comum data centers com arquiteturas SMPs com até 128 multicores. A boa (ou será má?) notícia, é que este limite de 64 trata-se de software. Mas não é software de user space, estamos falando do nosso amigo mais velho, o Kernel. Um cara que só “conversa”, digamos, com os “mais chegados”.

(Resenha do Artigo:

FÁVERO, AL: “Suporte a Multiprocessadores Simétricos (SMP) em kernel Linux”, Universidade Federal do Rio Gande do Sul.)

Referências:

Open Source Development Labs, Inc., Linux Process Scheduler Improvements in Version

2.6.0, Disponível em http://developer.osdl.org/craiger/hackbench/.

Rick Lindsley, What's New in the 2.6 Scheduler, Disponível em

http://www.linuxjournal.com/article.php?sid=7178 .

Enkh Tumenbayar, Linux SMP HOWTO. Disponível em

http://www.tldp.org/HOWTO/SMP-HOWTO.html.

Hank Dietz, Linux Parallel Processing HOWTO, Disponível em

http://www.tldp.org/HOWTO/Parallel-Processing-HOWTO.html.

Intel Corporation, MultiProcessor Specification,Version 1.4 May 1997.

LAST_UPDATED2
 
Minhas Queridas CPUs do Amazon EC2 Imprimir E-mail
Escrito por Administrator   
Sex, 16 de Setembro de 2011 00:00

Em épocas de Cloud Computing, onde o homem, com toda a sua astúcia, bolou um novo nome para um paradigma antigo, a virtualização passou a ocupar uma posição privilegiada neste cenário. Como sempre, a busca é por fazer mais, com menos (leia-se: otimizar os lucros $$). Mas qual seria a relação entre a Cloud Computing e a Virtualização? E estas, por sua vez, com os Processadores Modernos e, ainda, todos estes com a redução de custos?

Tudo começou na década de 69, quando finalmente o homem conseguiu implementar a tão esperada multitarefa no Sistema Operacional Unix(antes disso, em 61, já se tinha feito em um outro SO). Com isso, foi possível usufruir do escalonamento de tarefas e, finalmente, causar a impressão de paralelismo. Muitas tarefas poderiam ser executadas em paralelo! Algum tempo depois, vieram novas tecnologias de hardware, visando melhorar esse suporte multitarefa já suportado pelo SO, tais como pipeline, superpipeline, execução especulativa, vários níveis de cache(apelação) e outros mais. A Intel apelou e lançou o Hyper-Threading, tecnologia que cria novos processadores virtuais, usufruindo de um único processador físico. O interessante desta tecnologia é que cada processador virtual possui o seu próprio conjunto de registrados e controlador de interrupção(também virtuais, claro)! Isso mesmo, um processador Virtual, com os seus respectivos registradores!

Os anos passaram e novas tecnologias surgiram, algumas foram modificadas, outras aprimoradas e outras apenas mudaram de nome (e de preço). Com a possibilidade de executar maquinas virtuais em um único hardware, cada qual com seu próprio processador virtual, e a garantia de isolamento(inicialmente via software), o mercado ficou “quente”. Surgiram, então, os processadores com conjuntos específicos de instruções para a virtualização, os famosos Intel-VT e AMD-V. Com eles, as maquinas virtuais podem comunicar-se com o hardware utilizando esse conjunto de instruções especiais, em detrimento de uma espessa camada de software que era utilizada anteriormente (na chamada virtualização total).

Este cenário turbinou o mercado de TI! Muitas empresas pelo mundo passaram a vender o produto dos seus sonhos: um produto Virtual! A infraestrutura de TI passou a ser vendida como um modelo “pague pelo uso”. Os clientes pagam pelo uso de uma maquina virtual, com processadores virtuais e memória virtual. A Intel e AMD, por sua vez, vendem ainda mais os seus “novos” processadores, que, na verdade, não são tão novos assim(a Intel, por exemplo, já tinha tecnologia VT desde o Pentium 4, só que com outro nome). Todo esse mercado chama-se Cloud Computing. Um modelo de negocio que, do ponto de vista tecnológico, nada tem de novo. =)

 

Referências:
Hardware virtualization trends: http://www.usenix.org/events/vee06/full_papers/vandoorn-keynote.pdf
Intel VT: http://www.intel.com/technology/virtualization/
Virtualização cada vez mais fascinante e séria: http://blogs.forumpcs.com.br/flavio_xando/2006/04/24/virtualizacao-cada-vez-mais-fascinante-e-seria-parte-1/
Como funciona a tecnologia de virtualização da Intel: http://www.clubedohardware.com.br/artigos/Como-Funciona-a-Tecnologia-de-Virtualizacao-da-Intel/1144/1
Tecnologia Hyper-Threading: http://www.clubedohardware.com.br/artigos/163

LAST_UPDATED2
 
O "Crescimento" da Computação (Unidade 1) Imprimir E-mail
Escrito por Administrator   
Sex, 26 de Agosto de 2011 04:33

Desde meados de 1600, com o surgimento das primeiras máquinas de calcular, até os dias atuais, o homem, em uma luta incansável, tem procurado otimizar seus mecanismos computacionais na medida que tais otimizações possam a caber no seu bolso(ou, em alguns casos, possam beneficiar o seu bolso ;))

As primeiras maquinas de grande porte(não cabe aqui mencionar as maquinas de Pascal, Babbage e semelhantes) surgiram por volta dos anos 40, pesavam algumas toneladas e eram repletas de válvulas. A mais famosa dessas maquinas, o ENIAC, por exemplo, possuía certa de 17 mil válvulas a vácuo, as quais necessitavam de grande mão de obra apenas para mantê-las funcionando. Não demorou muito para o homem perceber o grande desperdício(consumo de energia, espaço e etc) e investir mais nos famosos transistores e nos diodos semicondutores. Tais esforços permitiram a compactação dos transistores em módulos menores, que foram chamados de Circuitos Integrados. Com dinheiro disponível, ambição e conhecimento acumulado, logo os Circuitos Integrados passaram a “integrar” mais transistores e, então, evoluíram para os chamados Chips.

Haja vista a necessidade de melhor utilizar esse “poder” de calcular, um cara(nerd) chamado Von Neumann surgiu na história dessas maquinas e, com uma simples(hoje é fácil =)) e brilhante ideia, definiu a Arquitetura dos Computadores que utilizamos até os dias atuais. Em suma, a Arquitetura de Neumann prevê, além do processador, e sua respectiva Unidade de Controle, uma memória principal que armazena os dados de um programa e suas próprias instruções(bingo!), possibilitando que ocorram desvios na execução. A Unidade de Controle obtém, então, os dados e a respectiva operação que deverá executar sobre estes. Naturalmente existem outros elementos, como os barramentos de dados, de endereço, de controle, acumulador, registrador de dados, registrador de endereço, contador(ou ponteiro) de endereço e etc, mas tais mecanismos são “apenas” a forma de se implementar o principal, a ideia!

De lá para cá, o homem continua a brincar com essa arquitetura. Hora produz um processador com um conjunto específico de operações, hora produz um genérico e utiliza interpretação(em software) para instruções complexas.

Ainda outrora usa uma combinação de ambos os modelos(é, isso mesmo, segundo Tanenbaum o Pentium em diante realiza operações simples em RISC e as demais em CISC). O próximo passo foi usar paralelização com pipeline, mas ainda não era suficiente. O dinheiro ficou mais acessível, então o homem adicionou o multiprocessamento na arquitetura, com cores totalmente independentes, compartilhando a mesma memória.

A quantidade de cores nos multiprocessadores cresceu mais do que o dinheiro podia bancar, então foi hora de mudar o paradigma mais uma vez e criar os multicomputadores. Com eles, a limitação na quantidade de cores deixou de existir e cada um tem a sua própria memória privada. Estes últimos ganham mais memória cache(com o baratear destas), expandem com novos núcleos de processamento gráfico e, assim, continuam a “engordar”, dia após dia. Até mesmo os softwares precisaram "engordar", haja vista o modelo de programação mais complexo exigido pelos multicomputadores (ora, mas a tendencia não deveria ser simplificar e abstrair a complexidade dos softwares?)

Com os problemas cada vez mais complexos, softwares cada vez menos preocupados com as limitações de hardwa re, o conhecimento e investimentos financeiros mais acessíveis, será que a maquina do futuro irá crescer tanto quanto o ENIAC? Ou “voltará” a encolher?

LAST_UPDATED2
 
« InícioAnterior12PróximoFim »

JPAGE_CURRENT_OF_TOTAL
João F. M. Figueiredo, Creative Commons License
Todo conteúdo, exceto onde indicado ao contrário, está licenciada sob uma Licença Creative Commons.