Ir ao conteúdo

Posts recomendados

Postado

O que é e como funciona o Infinity Fabric. Sempre ouço falar nisso e quero saber como isso funciona ou como posso descobrir

  • J.Augusto F alterou o título para Como funciona a Infinity Fabric de processadores AMD?
  • 2 semanas depois...
  • Solução
Postado

Pra entender o que é o infinity fabric, primeiro vamos entender porque ele existe e como é a estrutura de um cpu amd:

 

Dies monolíticos

 

Esse é um CPU Intel monolítico(I9-14900KS)

Intel-Core-i9-14900KS-Delid-_5-scaled.thumb.webp.22f8c53abbe178a3e055355d712ac537.webp

Fonte: WCCFTech - Intel Core i9-14900KS CPU Delidded & Benchmarked

 

Percebe que ele é só uma estrutura gigante no meio(chamada de DIE) ao redor de uma pcb(chamada de substrato/pacote). A intel manda o design do chip pras fábricas, que usam wafers de silício pra fazer os dies e retornar pra intel.

 

Perceba que todo o cpu é integrado dentro do die:

arch2.thumb.jpg.d841d844f7c9cde22021a79a1482a07b.jpg

Fonte: Techpowerup - Intel Core i9-14900KS Review - The Last of its Kind

 

O problema é que esses wafers tem uma probabilidade de serem problemáticos. Seja por impurezas do local(o que pode acontecer mesmo em um ambiente 100% controlado) ou por problemas de fabricação, as vezes uma parte do die vem com problemas.

 

O que fazemos agora? A intel pagou por um cpu que não funciona. Existem algumas formas de resolver:

- Se o cpu ainda funciona e só uma parte foi afetada(por exemplo, um core), o design já conta isso e é possível desativar o core. Assim a intel pode vender um i9 como um i7 e não perder tanto dinheiro pelo die.

- Se o die foi comprometido em uma área crítica, a única forma é descartar.

 

Isso sem contar com problemas que podem acontecer na montagem dos cpus também. Muita coisa pode dar errado nesse processo todo de fazer um cpu e enviar até a sua casa.

 

Preço de fabricação por node

 

Tem uma outra coisa que também vale a pena falar: O preço pra cada processo de fabricação.

 

ZQlUWcaJAdMsWfkP.thumb.jpg.12225f152e758e1998d589710470a3ac.jpg

Preço pra fabricação de wafers na TSMC em 2022. Fonte: Techpowerup

 

Como dá pra ver, o preço sobe bastante com nodes mais novos(o que é esperado). As empresas querem sempre os mais novos por questões de densidade e eficiência, o problema é que não é o chip inteiro que se beneficia disso.

 

Escalonamento de certas partes do chip

 

A SRAM é um ótimo exemplo disso: Mesmo em processos mais novos, o tamanho praticamente não mudou(falando de tsmc 7nm pra o atual N3e). Vale lembrar que esse número(3 nanômetros, 5 nanômetros) não é indicativo do tamanho dos transistors. Na verdade ele já perdeu o sentido faz muito tempo e hoje em dia é só o nome do processo mesmo.

 

sram-density-tsmc-n3b-n3e.webp.331be87b7fd03e71fb995720033829ac.webp

Fonte: Wikichip - IEDM 2022: Did We Just Witness The Death Of SRAM?

 

Por outro lado, cores(o principal motivo pra as empresas quererem os nodes mais novos) se beneficiam muito de densidades mais altas.

 

Nem tudo precisa estar no melhor possível

 

Além disso, como deu pra ver no die shot do 14900KS, um soc não é feito só pelo cpu: tem a área do controlador de memória, controladores PCI, controladores USB(caso eles fiquem no soc), IGPU, I2C, DMI e LPC. Tem muita coisa aí que não precisa ser do melhor possível, e dá pra economizar muito dinheiro não botando eles no melhor node possível.

 

Como sua pergunta foi sobre o infinity fabric, vou focar nele daqui pra frente.

 

A solução da amd

 

A AMD decidiu que ia separar toda área que pode se beneficiar de nodes melhores das áreas que não são foco do produto. Um exemplo é o Ryzen 9 7950x:

delidded.thumb.jpg.c0f30b63c6dc4405f8582fa0bae875d8.jpg

Fonte: Techpowerup - AMD Ryzen 9 7900X Review - Creator Might, Priced Right

 

Nos Ryzen, temos duas estruturas principais: O CCD e o I/O die.

 

O CCD é responsável pelos cores pelo tiered cache(L1d+L1i, L2 e L3). Ele é a parte principal dos Ryzen, já que é ele que tem os processadores de fato. A AMD sempre mantém os CCDs no mais novo processo possível pra garantir a eficiência e performance que os novos nodes podem trazer(claro que com modificações na arquitetura também). Apesar do cache(que é SRAM) não escalonar bem, ele precisa estar extremamente próximo do CPU pra garantir latência baixa e banda altíssima, então a AMD deixa eles no CCD mesmo.

image.png.714d64821a5d0d940eaa82aa25a8b994.png

Fonte: Chips and Cheese - Testing AMD’s Bergamo: Zen 4c Spam

 

O I/O die, por outro lado, contém todo o resto do CPU(Não é só de processadores que vivem os nossos socs atuais). Isso inclui os controladores de memória, pontes PCI, GPU, USB e tudo o que foi mencionado a uns parágrafos atrás. Não é necessário ele estar em um processo mais novo, então a amd pode baratear os cpus e ainda economizar dinheiro fazendo o I/O die em 6nm

 

FqYq0mDWAAEAy_W.thumb.jpg.c44bae2006517e05b02f5659baf934af.jpg

Fonte: Locuza - Zen 4 Raphael 6 nm client I/O die (meu cpu hihihi)

 

Ok, agora que temos todas as partes, vamos precisar de algo pra juntar as duas. É aí que o Infinity Fabric entra.

 

Infinity Fabric

 

Para demonstrar o infinity fabric, eu vou usar bastante do artigo incrível da galera do chips and cheese "Pushing AMD’s Infinity Fabric to its Limits". Recomendo muito a leitura.

 

O infinity fabric nada mais é do que o nome que a AMD dá pra conexão inter-die pelo pacote. Ele é composto por três partes:

 

- O conector do lado do CCD

- O conector do lado do I/O die

- A ponte que fica no substrato(Infinity Fabric Over Package Link)

 

10a518cf-e8c2-49b0-b773-676d40524707_688x477.webp.3ae7eafc4aa7383ea478108c00697aba.webp

Fonte: Chips and Cheese - Pushing AMD’s Infinity Fabric to its Limits

 

O lado bom

Isso garante que a amd possa adaptar a topologia do sistema conforme ela queira. Um Ryzen 7 7800(8/16), um Ryzen 9 7950x(16/32) e um Threadripper PRO 7995WX(96/192) utilizam os mesmos CCDs, e os ccds com problema podem ser distribuídos entre chips que usam menos cores por ccd(Ryzen 5 e Ryzen 9 x900). Vale notar que os Threadripper e os Epic usam I/O dies maiores pra acomodarem os vários CCDs ao mesmo tempo.

Inclusive, esse possivelmente é o principal motivo do porque a gente vê tão pouco Ryzen 5 e nenhum Ryzen 3 no mercado - A AMD só tem um design pra todo mundo e pouquíssimos dies dão problema o suficiente mas ainda serem utilizáveis pra virarem Ryzen 3. No lugar disso, ela tá com a estratégia de lançar chips específicos pra certas regiões(tipo o 5600X3D) pra se livrar dos que funcionaram.

 

O lado ruim

Nem tudo são flores. Passar os dados pelo substrato gasta bastante energia, e isso faz os Ryzen terem um consumo base bem alto. Mesmo que os núcleos sejam extremamente eficientes(o que explica o consumo baixo em full load), o infinity fabric + o i/o die estão sempre lá gastando energia. Pra tu ter uma ideia, meu Ryzen 9 7900 tá reportando menos de 1 W nos cores, 20 W no SOC(i/o die) e 35 W no pacote inteiro (soc+misc+IFoP+cores).

Além disso, como dá pra ver alí em cima, o IFoP é ligado somente de CCD->I/O Die. Isso significa que passar de core pra core dentro do mesmo CCD é bem barato, mas passar de CCD pra CCD gasta bastante energia e ainda é lento:

image.thumb.png.1d374ed7c3aa8ff765f87ecc014fb280.png

Latência core-a-core do 7900. Percebe como fica bem claro quais cores são de cada CCD. Fonte: Eu com o core-to-core-latency

 

Outra desvantagem da infinity fabric é que ela limita tudo o que pode vir pro cpu. Voltando a imagem da topologia:

 

image.png.503f3b545f9b0967866a9a6104de6923.png

Percebe que tem um limite pra quantidade de dados que podem passar pelo IFoP por clock(32B/ciclo de leitura e 16B/ciclo de escrita).

Agora vamos fazer um cálculo:

Se utilizarmos duas memórias RAM a 6000MT, temos 96 GB/s de banda teórica.

O infinity fabric dos Ryzen 7000 roda a 2000MHz, então temos teoricos 64GB/s de leitura e 32GB/s de escrita por CCD.

Percebe que só vai dar pra utilizar a banda toda da memória se tivermos 2 CCDs ou mais? E ainda sim, de que vai adiantar utilizar memórias mais rápidas se vamos estar limitados pela banda do infinity fabric?

 

Além disso, sobrecarregar o infinity fabric também resulta em problemas de latência(assim como sobrecarregar o IMC resulta na mesma coisa). Se temos threads que não precisam acessar a memória de outras threads, dá pra jogar cada uma pra um CCD e aproveitar o dobro de banda de memória sem sobrecarregar o IFoP(inclusive eu fiz isso pra um programa de uma matéria do curso).

 

O uso do infinity fabric também causa outros problemas: Como o cache é completamente separado entre os CCDs, a probabilidade de cache miss entre CCD é altíssima. Os Ryzen tem ótimos branch predictors pra isso(inclusive o dos Ryzen 9000 conseguem prever até dois pulos), mas ainda é uma coisa pra se levar em consideração.

 

E nos notebooks e apus? Como fica?

 

Eu disse lá em cima que o i/o die e o infinity fabric gastam muita bateria por si só. Mas se existe Ryzen mobile, como eles fazem pra ter o infinity fabric e ainda sim terem um bom desempenho em bateria?

 

A resposta vem se olharmos pro die de um Phoenix(Ryzen 3, 5 e 7 7x40u/hs):

Phoenix_CES_AMD_crop_678x452_678x452.jpg.94582ea41fc5c7b1483fa832e6ef0fdf.jpg

Fonte: Anandtech

 

Sim, a AMD usa dies monolíticos nos chips mobile. Ainda tem o infinity fabric e ainda tem as mesmas limitações, mas como ele não passa pelo pacote, o soc economiza muita energia com isso. Sem falar que o I/O die(ou a parte responsável por ele) está no mesmo node que o CPU, o que garante eficiência também, apesar de deixar o produto bem caro.

 

A AMD também apresentou um cpu modular mobile, o strix halo:

AMD-STRIX-HALO-HERO-1200x624.thumb.jpg.e7f72053ca89deaa0f032324941f7671.jpg

Fonte: Videocardz - AMD Ryzen AI MAX 300 “Strix Halo” reviews are here

Perceba que ele é modular, mas o CCD fica extremamente colado ao I/O die. Isso é pra economizar energia e diminuir a latência do Infinity fabric. Além disso, o IMC do strix halo é bem maior(Ele suporta 256-bit LPDDR5x-8000 somente), e toda essa banda é usada pela IGPU gigantesca que ele tem(40 CUs RDNA 3.5)

 

Resumindo:
- Infinity fabric serve pra conectar o CCD no I/O die nos cpus AMD, justamente porque eles foram feitos pra serem modulares

- Essa modularidade permite que eles sejam bem mais baratos de serem feitos e permite a troca de dies defeituosos sem ter que jogar o cpu inteiro fora(só pela amd, claro)

- O lado ruim é que ele termina limitando a banda disponível pros cores e dificulta a passagem de informações entre CCDs. Fora gastar bastante energia.

 

Tentei deixar o mais fácil possível de entender, mas qualquer dúvida, pode perguntar que eu respondo sobre.

 

Como um exemplo engraçado de estresse do infinity fabric, aqui temos uma LLM rodando no meu 7900 em um só CCD:

image.thumb.png.b27ff944a72ebf9da547a7b93e84c6e6.png

Percebe que a banda da memória tá batendo em um certo limite que não sai(64GB/s)

image.thumb.png.43a4884a242d86356ad7619b71e640e6.png

E como resultado, um CCD inteiro fica em I/O wait por ficar memory-bounded(que na real é o infinity fabric limitando a conexão). O outro CCD não tá fazendo praticamente nada(tirando uns cores aí que eu não lembro o que tava fazendo)

  • Obrigado 2
  • Amei 3

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...