The future of Microprocessor
Rafael Viana de
Universidade Federal do Rio de Janeiro
Pós-Graduação em Informática
DCC/IM - NCE/UFRJc
Kunle Olukotun and Lance Hammond, Stanford University
Evolução dos
processadore
A performance dos microprocessadores dos computadores
modernos tem aumentado exponencialmente durante anos
* isso devido ao aumento da velocidade dos transistores, que
são o coração dos circuitos, presente nos chips dos
processadores e da memória como descrito pelas leis de Moore;
O que influenciou no aumento da performance dos
processadores construídos com aqueles transistores;
Os projetistas tem desenvolvido processadores com uma
grande quantidade de transistores em seus chips tornando-
se possível se extrair mais paralelismo dos softwares;
Evolução dos processadore da
Intel
Um aspecto interessante do paralelismo é tornar esse
processo o mais transparente possível aos programadores;
Para buscar uma melhor relação entre o paralelismo e
agilizar os processos de execução, criou-se diversos
mecanismos de hardware nos processadores como a memória
cache, utilização de pipeline dentro dos processadores, para
atingir os seguintes objetivos;
* Aumentar o numero das instruções na seqüência de instruções do
processador que pode ser emitida em cada ciclo;
* Dividir uma instrução em execução em diversos estágios de Pipeline o
que permitiu que os projetistas aumentassem a taxa de clock por
instrução;
Com isso houve uma redução na lógica necessária na troca
durante cada ciclo de clock.
Evolução dos
processadore
Os processadores superescalares foram desenvolvidos para executar
múltiplas instruções de um fluxo de instruções em cada ciclo de
pipeline. Para isso, o fluxo de instruções é verificado dinamicamente
em busca de processos que possam ser executados em paralelo,
executando-os mesmo fora de ordem do programa original;
Essas técnicas surgiram devido à rapidez com que as instruções são
executadas de forma paralela e não seqüencial mantendo a idéia aos
programadores de que estão sendo executadas sequencialmente.
Porém a performance pode cair caso os programadores ou
compiladores não ajustem o escalonamento das isntruções e o layout
dos dados de forma a permitir um mapeamento mais eficiente para o
pipeline ou para arquitetura paralela e memórias cache;
Gera grande dificuldades aos projetistas pois fluxo de instruções
possui uma limitação na quantidade de instruções a serem
paralelisadas, Em um processador superescalar suporta até 4
instruções por ciclo, mais que essa quantidade não traz muitos
benefícios nas maiorias das aplicações;
Processadores
Superescalar
Evolução da utilização de
paralelismo nos processadore Intel
 Eficiência dos processadores Intel em relação a evolução da utilização do
paralelismo das instruções no decorrer do tempo, como podemos ver, a
utilização do paralelismo de instruções foi explorada nos processadores Intel
mais atuais.
A dificuldade de se conseguir executar mais intruções por ciclo em um
processador superescalar, está na complexidade de se adicionar ao
núcleo a lógica necessária para achar dinamicamente as instruções
paralelas (que é proporcional ao quadrado do número de instruções
que podem ser executadas simultaneamente), o que se torna um
processo caro;
Similarmente acontece com o pipeline que passa de 10 para 20
estágios, é um processo difícil pois cada estágio do pipeline acaba se
tornando muito pequeno para executar mesmo uma quantidade
mínima de lógica, como a adicição de dois inteiros juntos, além do que
o projeto do pipeline é significativamente mais complexo;
Além disso, o overhead causado pela adição de registros do pipeline
combinados com os caminhos multiplex e com perca de performance
causado quando o pipeline entra no estado de flushed ou de branch
fazem com que seja desvantajoso em relação à performance usar um
pipeline de 30 estágios.
Processadores
Superescalar
Hoje em dia o progresso no desenvolvimento dos núlceos dos
processadores está parado devido a uma limitação física: a potencia;
Os processadores superescalares com pipiline das ultimas 2 decadas,
dissipavam em torno de 100 watts de potência, todos pensavam que a
geração de processadores de silício provavelmente reduziria essa
potência, pois quanto menor os transistors, menor a energia
requerida para seu funcionamento, isso funcionaria se os
processadores “encolhessem” em relação ao seu tamanho;
Na prática, os processadores estão utilizando mais transistors em seu
núcleo o que tem exigido mais potência nos processadores de ultima
geração. Com o aumento da potência há também um aumento do
aquecimento dos processadores conseqüentemente há uma
necessidade de melhorar a tecnologia do sistema de cooling
(refrigeramento) o qual não tem seguido o crescente desenvolvimento
dos processadores.
Limitações na construção
de novos processadores
Evolução da utilização da dissipação
de potência nos processadores Intel
Com a Internet, a necessidade de sevidores capazes de manipular um
grande número de de solicitações de forma rápida na rede, tem
aumentado drasticamente. Tarefas independetes como acesso a
páginas da web, a serviços de arquivo ou a banco de dados são
propagadas entre os vários computadores separados, munidos de
microprocessadores convencionais (servidores);
O número de requisições aumenta durante o tempo, mais
microprocessadores convencionais são adicionados ao conjunto de
servidores aumentando a quantidade de máquinas e sendo necessário
mais espaço e refrigeramento;
Os multiprocessadores consiste em dois ou mais processadores
separados, conectados entre si por um barramento, hub ou rede,
compartilhando a mesma memória e dispositivos de I/O. Todo o
sistema pode ser pequeno e usar menos potência que o equivalente a
dois processadores convencionais, isso porque os componentes como
memória, Hd e suprimento de energia podem ser compartilhados por
todos os processadores.
Evolução dos microprocessadores:
Multiprocessadores
Os data-centers que comportam os servidores possuem limitações de
espaço físico, de estrutura para fiação e refrigeração dos servidores, e
quanto mais microprocessadores são adicionados maior a
necessidade de expansão, com os multiprocessadores, a idéia de
compartilhamento dos recursos diminuem essa necessidade de
expansão alem de uma redução no consumo de energia, com
isso,foram criados os CMPs (Chips MultiProcessors).
O primeiro objetivo dos CMPs era de reduzir o espaço utilizado nas
torres dos servidores, implementando para isso dois ou mais
processadores superescalares juntos em uma única unidade.
Com isso, a performance do volume foi incrementada. Além disso,
percbeu-se uma pequena economia na energia pois os processadores
unitários (convencionais) podiam compartilhar uma única conecção
com o resto do sistema, redusindo a quantidade de comunicação
rápida necessária nas infraestruturas;
A AMD e a Intel desenvolveram processadores que compartilhavam
não só recursos de hardware más também recursos da interface dos
núcleos dos microprocessadores
Evolução dos microprocessadores:
CMPs
Quando um CMP substitui a um uniprocessador, é possível que haja
um aumento no throughput nas cargas de trabalho que usam
servidores (Server-oriented) com apenas metade da velocidade do
clock original, cada requisição pode levar até duas vezes mais tempo
para ser processada devido a redução da taxa de clock;
Porém algumas aplicações poderão ser bem mais lenta pois o seu
tempo está limitado pela memória ou pela performance do disco do
que pelo processador;
Com isso, duas requisições poderão ser processadas
simultanemanente porém o throughput não necessariamente será o
melhor, a menos que haja uma série de contenções na memória ou no
disco;
Porém, mesmo que a performance não seja tão superior, ainda há
uma gragarande vantagem em utilizar os CMPs visto que há uma taxa
de clock mais baixa e com isso uma baixa taxa de potência que é
proprocional ao quadrado da voltagem, logo, a potência necessária
para obter a performance original é bem menor geralmente a metade.
Evolução dos microprocessadores:
CMPs
Para o throughput orientado para as cargas de trabalho, quanto
mais potencia/performance e performance/área do chip pode-se
assumir que a latência não é importante nos servidores visto que
praticamente não há muito paralelismo e um grande acesso a disco
(memory stall);
Nesse caso a utilização de processadores superescalares não se faz
necessário pois em um servidor é mais importante realizar várias
tarefas ao mesmo tempo e manter os processadores sempre
ocupado do que realizar poucas em um tempo curto e ficar com
processadores ociosos;
Com isso pode-se trocar um CMP com poucos processadores
superescalares por um CMP com muitos processadores escalares.
Essa experiência foi feita com sucesso servidor Sun Niagara com
seus oito processadores SPARC(processadores escalares) e com um
par de processadores UltraSPARC (processadores superescalares).
CMPs – Melhorias no throughput
A performance de várias aplicações é medida em termos da latência
de execução de cada tarefa individual ao invés do alto troughput de
algumas tarefas não importantes
Os usuários de desktop estão preocupados com que seus
computadores respondam a seus comandos o mais rápido possível;
Essa situação tem mudado lentamente, várias aplicações tem sido
escritas com tarefas que rodem em segundo plano, usuários estão
mais interessados em quanto tempo o programa irá demoarar par a
executar as aplicações e se elas podem ser paralelisadas;
Multiprocessadores podem executar esses tipos de aplicações mais
rápido, porém requer um esforço por parte dos programadores para
quebrar cada thread de latência longa em execução em vários
pedaços de threads menores que possam ser executadas em vários
processadores em paralelo;
Historicamente, a comunicação entre processadores é geralmente
lenta em relação a velocidade individual de cada processador, por
isso, fica difícil para os programadores garantirem que a thread esteja
executando em processos separados requirindo um mínimo de
comunicação com os outros processadores.
CMPs – Melhorias na Latência
Convenientemente, a transição do sistema de múltiplos chips para o
chip com multiprocessadores proporcionou uma simplificação ao
tradicional problema de paralelisação dos programas;
Primeiramente isso foi necesário para minimizar a comunicação entre
threads independentes em baixo nível, pois cada comunicação
poderia requerer centenas ou até mesmo milhares de ciclos de
processador;
Com qualquer CMP com a memória cache compartilhada, contudo,
cada evento de comunicação toma todos os ciclos do processador.
Com a latência dessa forma, os delays de comunicação tem muito
mais impacto na performance do sistema;
Programandores devem dividir seus trabalhos em paralelisar as
threads, porém não precisa se preocupar com a alta independência
dessa thread, desde que a comunicação seja relativamente barata.
CMPs – Multithreads
Paralelisar as threads pode ser muito mais que isso e ainda continuar
efficiente, threads que são executadas com centenas ou milhares de
cilclos podem ser utilizadas para extrair paralelismo do sistema, em
vez de milhões de ciclos longos, as threads utilizariam máquinas
paralelas.
Pesquisas tem mostrado que a paralelisação das aplicações podem
ser mais fáceis do que a maoiria dos esquemas envolvendo a adição
ou a transação do hardware para o CMP;
Esse sistema adiciona bufers lógicos para que possa atender as
thereads a serem executadas em paralelo, e dinamicamente
determina onde elas estão em paralelo em tempo de execução;
Se não houver interdependência detectada em tempo de execução,
então a thread é completada normalmente, se a dependência existir,
então os buffers de algumas threads são esvasiados e todas as
threads são reestartadas e dinamicamente serealizadas no processo.
CMPs – Multithreads
Evolução da utilização de
paralelismo nos processadore Intel
 Evolução dos microprocessadores em relação ao seu núcleo
O throughput computacional é uma das maiores vantagenso dos
CMPs isto porque prover bons resultados na relção
potência/performance sem nenhuma modificação nos softwares;
Isso se dá graças ao grande número de threads independentes que
influência positivamente nas aplicações de multithred;
No futuro, os CMPs poderão proporcionar um grande impacto em
mais áreas relacionadas a latencia crítica computacional, para isso é
necessário paralelisar a maioria dos softwares de latencia crítica em
multiplas threads paralelas de execução para se poder tirar vantagens
dos chips multiprocessadores, os CMPs tornam esse processo fácil
devido a latência curta da comunicação entre os interprocessadores;
Além disso os CMPs tem uma grande vantagem por não mudificar
muito o modelo computacional de Von Nemann.
CMPs – Vantagens

O Futuro dos Microprocessadores SO_Custer.ppt

  • 1.
    The future ofMicroprocessor Rafael Viana de Universidade Federal do Rio de Janeiro Pós-Graduação em Informática DCC/IM - NCE/UFRJc Kunle Olukotun and Lance Hammond, Stanford University
  • 2.
    Evolução dos processadore A performancedos microprocessadores dos computadores modernos tem aumentado exponencialmente durante anos * isso devido ao aumento da velocidade dos transistores, que são o coração dos circuitos, presente nos chips dos processadores e da memória como descrito pelas leis de Moore; O que influenciou no aumento da performance dos processadores construídos com aqueles transistores; Os projetistas tem desenvolvido processadores com uma grande quantidade de transistores em seus chips tornando- se possível se extrair mais paralelismo dos softwares;
  • 3.
  • 4.
    Um aspecto interessantedo paralelismo é tornar esse processo o mais transparente possível aos programadores; Para buscar uma melhor relação entre o paralelismo e agilizar os processos de execução, criou-se diversos mecanismos de hardware nos processadores como a memória cache, utilização de pipeline dentro dos processadores, para atingir os seguintes objetivos; * Aumentar o numero das instruções na seqüência de instruções do processador que pode ser emitida em cada ciclo; * Dividir uma instrução em execução em diversos estágios de Pipeline o que permitiu que os projetistas aumentassem a taxa de clock por instrução; Com isso houve uma redução na lógica necessária na troca durante cada ciclo de clock. Evolução dos processadore
  • 5.
    Os processadores superescalaresforam desenvolvidos para executar múltiplas instruções de um fluxo de instruções em cada ciclo de pipeline. Para isso, o fluxo de instruções é verificado dinamicamente em busca de processos que possam ser executados em paralelo, executando-os mesmo fora de ordem do programa original; Essas técnicas surgiram devido à rapidez com que as instruções são executadas de forma paralela e não seqüencial mantendo a idéia aos programadores de que estão sendo executadas sequencialmente. Porém a performance pode cair caso os programadores ou compiladores não ajustem o escalonamento das isntruções e o layout dos dados de forma a permitir um mapeamento mais eficiente para o pipeline ou para arquitetura paralela e memórias cache; Gera grande dificuldades aos projetistas pois fluxo de instruções possui uma limitação na quantidade de instruções a serem paralelisadas, Em um processador superescalar suporta até 4 instruções por ciclo, mais que essa quantidade não traz muitos benefícios nas maiorias das aplicações; Processadores Superescalar
  • 6.
    Evolução da utilizaçãode paralelismo nos processadore Intel  Eficiência dos processadores Intel em relação a evolução da utilização do paralelismo das instruções no decorrer do tempo, como podemos ver, a utilização do paralelismo de instruções foi explorada nos processadores Intel mais atuais.
  • 7.
    A dificuldade dese conseguir executar mais intruções por ciclo em um processador superescalar, está na complexidade de se adicionar ao núcleo a lógica necessária para achar dinamicamente as instruções paralelas (que é proporcional ao quadrado do número de instruções que podem ser executadas simultaneamente), o que se torna um processo caro; Similarmente acontece com o pipeline que passa de 10 para 20 estágios, é um processo difícil pois cada estágio do pipeline acaba se tornando muito pequeno para executar mesmo uma quantidade mínima de lógica, como a adicição de dois inteiros juntos, além do que o projeto do pipeline é significativamente mais complexo; Além disso, o overhead causado pela adição de registros do pipeline combinados com os caminhos multiplex e com perca de performance causado quando o pipeline entra no estado de flushed ou de branch fazem com que seja desvantajoso em relação à performance usar um pipeline de 30 estágios. Processadores Superescalar
  • 8.
    Hoje em diao progresso no desenvolvimento dos núlceos dos processadores está parado devido a uma limitação física: a potencia; Os processadores superescalares com pipiline das ultimas 2 decadas, dissipavam em torno de 100 watts de potência, todos pensavam que a geração de processadores de silício provavelmente reduziria essa potência, pois quanto menor os transistors, menor a energia requerida para seu funcionamento, isso funcionaria se os processadores “encolhessem” em relação ao seu tamanho; Na prática, os processadores estão utilizando mais transistors em seu núcleo o que tem exigido mais potência nos processadores de ultima geração. Com o aumento da potência há também um aumento do aquecimento dos processadores conseqüentemente há uma necessidade de melhorar a tecnologia do sistema de cooling (refrigeramento) o qual não tem seguido o crescente desenvolvimento dos processadores. Limitações na construção de novos processadores
  • 9.
    Evolução da utilizaçãoda dissipação de potência nos processadores Intel
  • 10.
    Com a Internet,a necessidade de sevidores capazes de manipular um grande número de de solicitações de forma rápida na rede, tem aumentado drasticamente. Tarefas independetes como acesso a páginas da web, a serviços de arquivo ou a banco de dados são propagadas entre os vários computadores separados, munidos de microprocessadores convencionais (servidores); O número de requisições aumenta durante o tempo, mais microprocessadores convencionais são adicionados ao conjunto de servidores aumentando a quantidade de máquinas e sendo necessário mais espaço e refrigeramento; Os multiprocessadores consiste em dois ou mais processadores separados, conectados entre si por um barramento, hub ou rede, compartilhando a mesma memória e dispositivos de I/O. Todo o sistema pode ser pequeno e usar menos potência que o equivalente a dois processadores convencionais, isso porque os componentes como memória, Hd e suprimento de energia podem ser compartilhados por todos os processadores. Evolução dos microprocessadores: Multiprocessadores
  • 11.
    Os data-centers quecomportam os servidores possuem limitações de espaço físico, de estrutura para fiação e refrigeração dos servidores, e quanto mais microprocessadores são adicionados maior a necessidade de expansão, com os multiprocessadores, a idéia de compartilhamento dos recursos diminuem essa necessidade de expansão alem de uma redução no consumo de energia, com isso,foram criados os CMPs (Chips MultiProcessors). O primeiro objetivo dos CMPs era de reduzir o espaço utilizado nas torres dos servidores, implementando para isso dois ou mais processadores superescalares juntos em uma única unidade. Com isso, a performance do volume foi incrementada. Além disso, percbeu-se uma pequena economia na energia pois os processadores unitários (convencionais) podiam compartilhar uma única conecção com o resto do sistema, redusindo a quantidade de comunicação rápida necessária nas infraestruturas; A AMD e a Intel desenvolveram processadores que compartilhavam não só recursos de hardware más também recursos da interface dos núcleos dos microprocessadores Evolução dos microprocessadores: CMPs
  • 12.
    Quando um CMPsubstitui a um uniprocessador, é possível que haja um aumento no throughput nas cargas de trabalho que usam servidores (Server-oriented) com apenas metade da velocidade do clock original, cada requisição pode levar até duas vezes mais tempo para ser processada devido a redução da taxa de clock; Porém algumas aplicações poderão ser bem mais lenta pois o seu tempo está limitado pela memória ou pela performance do disco do que pelo processador; Com isso, duas requisições poderão ser processadas simultanemanente porém o throughput não necessariamente será o melhor, a menos que haja uma série de contenções na memória ou no disco; Porém, mesmo que a performance não seja tão superior, ainda há uma gragarande vantagem em utilizar os CMPs visto que há uma taxa de clock mais baixa e com isso uma baixa taxa de potência que é proprocional ao quadrado da voltagem, logo, a potência necessária para obter a performance original é bem menor geralmente a metade. Evolução dos microprocessadores: CMPs
  • 13.
    Para o throughputorientado para as cargas de trabalho, quanto mais potencia/performance e performance/área do chip pode-se assumir que a latência não é importante nos servidores visto que praticamente não há muito paralelismo e um grande acesso a disco (memory stall); Nesse caso a utilização de processadores superescalares não se faz necessário pois em um servidor é mais importante realizar várias tarefas ao mesmo tempo e manter os processadores sempre ocupado do que realizar poucas em um tempo curto e ficar com processadores ociosos; Com isso pode-se trocar um CMP com poucos processadores superescalares por um CMP com muitos processadores escalares. Essa experiência foi feita com sucesso servidor Sun Niagara com seus oito processadores SPARC(processadores escalares) e com um par de processadores UltraSPARC (processadores superescalares). CMPs – Melhorias no throughput
  • 14.
    A performance devárias aplicações é medida em termos da latência de execução de cada tarefa individual ao invés do alto troughput de algumas tarefas não importantes Os usuários de desktop estão preocupados com que seus computadores respondam a seus comandos o mais rápido possível; Essa situação tem mudado lentamente, várias aplicações tem sido escritas com tarefas que rodem em segundo plano, usuários estão mais interessados em quanto tempo o programa irá demoarar par a executar as aplicações e se elas podem ser paralelisadas; Multiprocessadores podem executar esses tipos de aplicações mais rápido, porém requer um esforço por parte dos programadores para quebrar cada thread de latência longa em execução em vários pedaços de threads menores que possam ser executadas em vários processadores em paralelo; Historicamente, a comunicação entre processadores é geralmente lenta em relação a velocidade individual de cada processador, por isso, fica difícil para os programadores garantirem que a thread esteja executando em processos separados requirindo um mínimo de comunicação com os outros processadores. CMPs – Melhorias na Latência
  • 15.
    Convenientemente, a transiçãodo sistema de múltiplos chips para o chip com multiprocessadores proporcionou uma simplificação ao tradicional problema de paralelisação dos programas; Primeiramente isso foi necesário para minimizar a comunicação entre threads independentes em baixo nível, pois cada comunicação poderia requerer centenas ou até mesmo milhares de ciclos de processador; Com qualquer CMP com a memória cache compartilhada, contudo, cada evento de comunicação toma todos os ciclos do processador. Com a latência dessa forma, os delays de comunicação tem muito mais impacto na performance do sistema; Programandores devem dividir seus trabalhos em paralelisar as threads, porém não precisa se preocupar com a alta independência dessa thread, desde que a comunicação seja relativamente barata. CMPs – Multithreads
  • 16.
    Paralelisar as threadspode ser muito mais que isso e ainda continuar efficiente, threads que são executadas com centenas ou milhares de cilclos podem ser utilizadas para extrair paralelismo do sistema, em vez de milhões de ciclos longos, as threads utilizariam máquinas paralelas. Pesquisas tem mostrado que a paralelisação das aplicações podem ser mais fáceis do que a maoiria dos esquemas envolvendo a adição ou a transação do hardware para o CMP; Esse sistema adiciona bufers lógicos para que possa atender as thereads a serem executadas em paralelo, e dinamicamente determina onde elas estão em paralelo em tempo de execução; Se não houver interdependência detectada em tempo de execução, então a thread é completada normalmente, se a dependência existir, então os buffers de algumas threads são esvasiados e todas as threads são reestartadas e dinamicamente serealizadas no processo. CMPs – Multithreads
  • 17.
    Evolução da utilizaçãode paralelismo nos processadore Intel  Evolução dos microprocessadores em relação ao seu núcleo
  • 18.
    O throughput computacionalé uma das maiores vantagenso dos CMPs isto porque prover bons resultados na relção potência/performance sem nenhuma modificação nos softwares; Isso se dá graças ao grande número de threads independentes que influência positivamente nas aplicações de multithred; No futuro, os CMPs poderão proporcionar um grande impacto em mais áreas relacionadas a latencia crítica computacional, para isso é necessário paralelisar a maioria dos softwares de latencia crítica em multiplas threads paralelas de execução para se poder tirar vantagens dos chips multiprocessadores, os CMPs tornam esse processo fácil devido a latência curta da comunicação entre os interprocessadores; Além disso os CMPs tem uma grande vantagem por não mudificar muito o modelo computacional de Von Nemann. CMPs – Vantagens