Como a CPU multinúcleo implementa a coordenação assíncrona?

8

Eu sou proveniente de ciência da computação e quero estudar cálculo de processos para uso em projetos de circuitos assíncronos.

Então, estou analisando a prática atual em circuitos assíncronos. Existem muitos artigos que dizem que a incapacidade de aumentar a velocidade do clock leva à arquitetura de CPU com vários núcleos . No entanto, ninguém realmente diz como é alcançada a coordenação assíncrona entre os núcleos.

Quero que você confirme / corrija minhas seguintes suposições sobre como a CPU multinúcleo atual lida com a coordenação assíncrona:

  1. Cada núcleo possui sinais de relógio separados, que não precisam estar em fase um com o outro. Caso contrário, o problema de distribuição do sinal do relógio não seria realmente resolvido, seria?
  2. Os núcleos coordenam apenas no nível de programação. Ou seja, testando e configurando alguma memória (RAM ou registro). E não algo de baixo nível, como protocolo de agitação manual usando circuito de encontro .
Apiwat Chantawibul
fonte
1
As grandes CPUs de núcleo único possuem vários relógios, usados ​​para redução de energia. Alguns relógios são bloqueados, outros são reduzidos dinamicamente. Adicione outro núcleo e, claro, ele possui vários relógios. A distribuição mais fácil do relógio é um efeito colateral, mas não a razão pela qual existem vários relógios.
2
Dê uma olhada neste artigo sobre como atravessar domínios de relógio entre as diferentes frequências: w2.cadence.com/whitepapers/cdc_wp.pdf
pjc50
1
(cerca de distribuição de sinal de relógio: uma árvore tampão onde todos nós folha tem tempo igual propagação da fonte é a solução Você pode construir este algorithmically Não é trivial, mas ele funciona..)
pjc50
1
As desvantagens das árvores de reserva são muitas: ela pode consumir a maior parte da energia e 10 a 30% da área disponível. No entanto, como nossa startup descobriu, o principal problema com o design assíncrono é a necessidade de alterar toda a cadeia de ferramentas de software para usá-la efetivamente. As empresas de IC são surpreendentemente conservadoras, devido aos custos de fabricação e aos riscos de falha.
Pjc50
1
@ pjc50 ISTR que algum processador orientado a passar mensagens no layout da grade (possivelmente do Tilera?) tinha o "fluxo" do relógio da esquerda para a direita e de baixo para cima, pois apenas os vizinhos mais próximos precisavam se comunicar diretamente (tipo de globalmente assíncrono globalmente síncrono).
Paul A. Clayton

Respostas:

1

Você combina duas idéias independentes (ortogonais) na teoria dos circuitos digitais: circuitos assíncronos e processadores com vários núcleos.

Circuitos assíncronos: circuitos que possuem mais de um relógio e os relógios são assíncronos (ou seja, possuem relacionamento de fase não constante e imprevisível).

Alguns circuitos podem usar dois relógios (por exemplo), mas um é apenas uma divisão por 2 do outro. Esses circuitos não são assíncronos porque existe uma relação de fase conhecida entre os dois relógios, embora as frequências dos relógios sejam diferentes.

Você pode ter uma CPU de núcleo único com poucos relógios assíncronos e uma CPU de vários núcleos com todos os seus núcleos em execução no mesmo relógio (o último é apenas uma CPU imaginária - todas as CPUs de vários núcleos reais têm muitos relógios, que consistem em vários conjuntos de relógios assíncronos).

Circuitos assíncronos é um tópico importante no design digital. A explicação acima é básica.

CPUs com vários núcleos: poucos microprocessadores (núcleos) conectados em paralelo que empregam hardware e software sofisticados para obter alto desempenho.

A prática usual é tornar os núcleos o mais independentes possível em termos de relógios / potência / execução / etc. Isso permite o ajuste dinâmico (em tempo de execução) da atividade da CPU (ou seja, energia consumida) às necessidades reais do sistema.

Minha impressão é que o que você está procurando é uma explicação sobre CPUs com vários núcleos , e não sobre circuitos assíncronos.

Este tópico é muito, muito maior do que qualquer coisa que se possa responder.

As respostas para suas perguntas, no entanto:

  1. Os relógios usados ​​por diferentes núcleos (que eu saiba) têm as mesmas fontes (podem ser mais de um: cristal, VCO, ...). Cada núcleo (geralmente) possui poucos conjuntos de relógios mutuamente assíncronos. Cada núcleo possui uma lógica dedicada de controle e limitação do relógio, que permite desligar ou diminuir o relógio, independentemente para cada núcleo. Novamente, se você estiver interessado apenas no aspecto algorítmico do paralelismo dos núcleos - esqueça os relógios (por enquanto).
  2. Você acabou de indicar o aspecto principal do paralelismo dos núcleos - como você executa vários núcleos em paralelo com eficiência . Este tópico é enorme e contém soluções de HW e SW. Da perspectiva de HW, os núcleos modificam uma memória comum e trocam sinais de controle e status com lógica de seqüenciamento e entre si. A imagem complica muito devido à existência de caches - eu sugiro que você comece lendo sobre caches, depois para coerência do cache e somente depois para descontar em sistemas com vários núcleos.

Espero que isto ajude.

Vasiliy
fonte
O fato de as CPUs terem que funcionar em velocidades diferentes não implica que elas tenham que ser assíncronas. Ter uma janela em torno de cada relógio, quando os sinais são garantidos para não mudar, é extremamente útil. Mesmo que dois módulos possuam taxas de clock que não são múltiplos um do outro, pode ser útil gerar ambos por um dispositivo que garante que eles nunca alternem muito próximos.
Supercat 23/11