igormp disse:
AMEI. Será que a AMD vai conseguir emplacar uma CPU com FPGA no mesmo die? A tentativa da intel nisso creio que tenha sido um belo flop.
Rapaz, ao meu ver essa compra da Xilinx vai render muito melhor que a da Altera pela Intel, o InfinityFabric como intercomunicação de baixa latência e alta velocidade será uma combinação bem promissora para criar um XPU eficiente.
igormp disse:
Uma coisa que me deixou curioso foi que eles falaram que PCIe seria um gargalo, porém não citaram qual a alternativa (me corrija se estiver errado). Fiquei curioso para saber oq eles usariam pra comunicar algo de forma a ter latências aceitáveis. Pior ainda, me pergunto como fariam pra reprogramar de forma tão rápida após uma troca de contexto, já que normalmente é um processo lento.
Sim, falaram que o PCIe tem latência alta e não deram alternativa, então o que veio na cabeça foram duas possibilidades, uma comunicação diferente (como o NVLink ou CXL) ou esse FPGA em um interposer MCM como coprocessador se comunicando por InfinityFabric (ou o recém mostrado HBX), são as únicas possibilidades que uniriam velocidade acima e latência abaixo do que o PCI-express pode oferecer até sua 6ª geração.
Mas a pergunta que também estava na minha cabeça logo ao começar a ler a patente foi exatamente esta sua,
"Como faria para reprogramar de forma tão rápida após uma troca de contexto?", e ao ler ficou claro que esse FPGA tem vários (e maiores) LUTs, o suficiente para não se reprogramar por inteiro, apenas por blocos/pedaços. Assim ele lê o bitfile, programa um pedaço suficiente para executar o conjunto de instruções A e executa-o, enquanto isso ele lê outro bitfile e vê que o tipo de instrução (e unidades de execução) são diferentes, logo enquanto executa o conjunto A em um bloco ele programa outro bloco para o conjunto B e quando o switch acontecer, as unidades de execução estão prontas. Se o conjunto A não for mais utilizado ele "limpa" aquele bloco para não puxar recursos do sistema e assim repete-se esse esquema, indefinidamente.
Curioso é que esses blocos não só mudam completamente a forma de executar conforme o bitfile, ele também pode expandir ou diminuir de acordo com o que está sendo executado no bitfile: Digamos que o bloco A está fazendo cálculos na proporção de 20% INT e 80% FP, e ai as instruções mudam para uma proporção de 80% INT e 20% FP. Este FPGA analisa com antecedência o bitfile inteiro para detectar isso e prepara dinamicamente outro bloco para aumentar a quantidade de unidades de inteiro, assim quando a proporção mudar já se terá unidades suficientes para não haver gargalo ou redução de desempenho (e logo após o FPGA irá reduzir a quantidade de unidades FP). Isso é muuuuito legal, também é dito que esse método abordado na patente utiliza inteligência artificial para se reprogramar e "adivinhar" quando as unidades precisam ser expandidas e encolhidas, além de oferecer ao programador na hora da sintetização do bitfile opções mais otimizadas de código, caso existam
Em spoiler segue uns trechos da patente que fala disso da redução do tempo de switch:
igormp disse:
Se isso der certo, acho que significaria a morte de toda a ideia de extensões de CPU, visto que vc poderia ter algo dinâmico e bem mais otimizado pra sua aplicação em específico (bem como ter mais de uma ativa ao mesmo tempo!!), sem falar que finalmente seria possível baixar mais ram assim xD
As possibilidades que essa patente mostra são muitas mesmo, e baixar mais RAM é até estranho de se pensar mas com esse sistema será possível mesmo xD