Contents

Revolucionando data centers com tecnologia CXL de última geração

Se você leu as especificações de muitos processadores e placas-mãe para o mercado de alto desempenho, ou seja, estações de trabalho, servidores, data centers e afins, verá que uma tecnologia chamada CXL ou **Compute Express Link* * que geralmente coincide com PCI Express. Neste artigo vamos explicar o que é, para que serve e por que normalmente não é visto no PC.

Uma das características distintivas dos computadores pessoais (PC) e sistemas relacionados, incluindo aqueles não destinados ao uso doméstico, é a falta de um sistema de memória unificado, necessitando do desenvolvimento de novos protocolos para facilitar tal funcionalidade. Há algum tempo, vários fabricantes têm se esforçado para criar compatibilidade entre componentes díspares com diferentes capacidades de memória. Embora a utilização de esquemas de endereçamento semelhantes em dispositivos da mesma marca simplifique as coisas, surgem complicações quando várias empresas adotam a visão do CXL como um protocolo de código aberto que permite a qualquer fabricante implementá-lo perfeitamente, sem preocupações com problemas de compatibilidade.

/images/Render-Chiplets-Intercomunicacion.jpg

Sob o nome de Compute Express Link , também CXL , é conhecido um padrão que é uma expansão do PCI Express. Isso ocorre porque ele usa a mesma interface de dados, mas adiciona um elemento ausente que é memory coherence. Ou seja, embora diferentes dispositivos tenham fisicamente conjuntos de memória física diferentes, eles têm acesso a uma forma comum de comunicação entre si.

Obviamente, aqui devemos diferenciar entre endereçamento e situação física. Já a primeira coisa é a forma como a CPU, GPU ou qualquer um dos componentes principais localiza os dados na memória e conhece sua situação. Como se uma célula de memória tivesse sido reescrita recentemente.

A implementação desta abordagem frequentemente emprega um mecanismo de cache no qual múltiplas unidades de processamento, independentemente de sua simetria, utilizam um cache de nível final compartilhado entre elas, permitindo uma perspectiva unificada do conteúdo da RAM dentro de cada núcleo, devido à probabilidade desses caches estando situado na mesma plataforma System-on-a-Chip (SoC) com um controlador de memória integrado e uma arquitetura de memória unificada.

Mas o que acontece quando temos um sistema do tipo NUMA Non-Uniform Memory Access? Ou seja, o que normalmente temos num PC é que, por um lado, temos o CPU com a RAM do sistema e, por outro, a placa gráfica com a sua VRAM. Bom, é aqui que entra o CXL ou Compute Express Link , o que você procura é que todos os componentes do PC, pelo menos os de alto desempenho. Por serem estes que se comunicam através da interface PCI Express, são utilizados como base para a criação deste padrão aberto.

Relacionamento com o padrão PCI Express

/images/Ranuras-PCI-Express.jpg

CXL 1.0 e 2.0 são construídos na interface PCI Express 5.0. Em vez disso, a versão 3.0 do padrão faz isso no PCI Express 6.0. Não existe nenhuma versão do Compute Express Link que funcione com gerações anteriores desta interface de comunicação paralela de alta velocidade. Porém, devemos ter em mente que para que as vantagens do CXL sejam ativadas, ele deve ser suportado não apenas pela placa-mãe do sistema ou controlador PCI Express, mas também pelos dispositivos que estão conectados.

E é que o Compute Express Link adiciona uma série de regras de comunicação para conseguir coerência de memória entre os diferentes dispositivos que requerem que o hardware seja adaptado para isso. No momento, só podemos ver essa adaptação em estações de trabalho, servidores e data centers, já que ela não é encontrada nem nas placas-mãe mais avançadas para PCs da Intel e AMD.

Porém, a principal utilidade da utilização deste protocolo é poder converter memórias RAM que não são as principais e que na hierarquia viriam depois dele como principais para determinadas tarefas. Dessa forma, você evita ter que passar por memórias de alta capacidade que você sabe que não contêm os dados. Ou seja, permite-nos utilizar a porta PCI Express para o fazer. acessar memória de uma GPU ou CPU estrangeira para cada dispositivo

Tipos de dispositivos CXL

/images/Dispositivos-CXL-Compute-Express-Link.jpg

Nossa linha de produtos consiste em três modelos distintos de dispositivos CXL, cada um caracterizado por seus recursos e capacidades exclusivos.

-Os dispositivos tipo 1 São aqueles que não possuem memória local própria, mas podem se beneficiar do uso da RAM do sistema. -Quanto aos dispositivos tipo 2 , são aqueles que são chips de suporte colocados em forma de placa de expansão com memória RAM própria. Ou seja, placas gráficas, FPGA através de PCI Express. O CXL permite que esses dispositivos e a CPU visualizem suas respectivas memórias como um todo e compartilhem endereçamento, incluindo um sistema de coerência de memória. -Os dispositivos tipo 3 São memórias RAM que não fazem parte da RAM principal nem da RAM especializada de cada componente, mas que podem ser adicionadas ao sistema e utilizadas para intercomunicação entre eles ou para expandir o capacidade de memória além dos limites físicos.

/images/Memoria-DDR5-CXL.jpg

Em relação aos protocolos de comunicação, tudo dispositivo CXL Devem ser seguidos rigorosamente os três seguintes:

-CXL.io: Este é o protocolo que utiliza a interface PCI Express e sua funcionalidade de comunicação para transmitir dados entre dispositivos. O que permite que o CXL não seja aplicado apenas em placas de expansão, mas também em placas M.2 e até mesmo em periféricos externos. Neste último caso, temos os exemplos dos cartões de memória Thunderbolt e SD Express. -CXL.cache: trata-se de fornecer um cache comum para diferentes dispositivos. O que permite a comunicação direta entre os diferentes componentes sem a necessidade de tocar na RAM principal para isso. -CXL.memory: É a capacidade de um dispositivo acessar lateralmente outra memória que não a sua. Seja de outro dispositivo ou, na sua falta, da adição de um poço de memória adicional ao sistema.

Pool de memória no CXL 2.0 em diante

/images/CXL-2-Switching.jpg

A partir do CXL versão 2.0, os componentes compatíveis com este padrão podem utilizar outras memórias que não as suas para funcionar. Porém, para evitar problemas de contenção com a utilização de poços de RAM externos, o que é permitido é utilizar espaços de memória e atribuí-los aos referidos aceleradores. Isso é feito para evitar conflitos de acesso à memória entre os diferentes dispositivos que a acessam. Porém, permite atribuir espaços de memória específicos às necessidades de cada dispositivo fora de sua memória local.

Para isso, o CXL.cache é muito importante, pois atua como uma espécie de cache de último nível para os poços de memória adicionais que ficam além do controlador de memória no chip e permite acessá-los diretamente como se eles faziam parte da sua RAM. principal. A utilidade de tudo isso é fácil de entender e tem diversas utilidades.

Por exemplo Imagine por um momento que temos que treinar uma IA em uma GPU e que sua VRAM é um fator limitante de tamanho, então o acelerador pode ir além de sua própria memória local. Seja usando a RAM principal do sistema, de outro dispositivo semelhante compatível com CXL no mesmo computador ou em um dispositivo de memória.

Em cenários onde certas restrições de hardware proíbem exceder a capacidade de memória alocada, como placas gráficas com RAM soldada, torna-se imperativo estar atento ao uso da memória. Isto vale para dispositivos como CPUs e outros semelhantes, que estão sujeitos a restrições semelhantes.

*️⃣ Link da fonte: