HotBit
Ei mãe, 500 pontos!
- Mensagens
- 594
- Reações
- 640
- Pontos
- 794
PS5
Motores DMA
Acesso direto à memória (DMA) refere-se à capacidade de um dispositivo periférico de ler e gravar na RAM da CPU sem que a CPU esteja envolvida. Todos os periféricos modernos de alta velocidade usam DMA para a maior parte de sua comunicação com a CPU, mas esse não é o único uso para DMA. Um DMA Engine é um dispositivo periférico que existe apenas para mover dados; geralmente não faz nada com esses dados. A CPU pode instruir o mecanismo de DMA a realizar uma cópia de uma região da RAM para outra, e o mecanismo de DMA faz o trabalho rotineiro de copiar potencialmente gigabytes de dados sem que a CPU tenha que fazer um movimento(ou equivalente SIMD) para cada peça, e sem poluir os caches da CPU. Os mecanismos de DMA também podem fazer mais do que apenas descarregar operações simples de cópia: eles geralmente oferecem suporte a operações de dispersão / coleta para reorganizar os dados no processo de movê-los. O NVMe já possui recursos como listas de dispersão / coleta que podem eliminar a necessidade de um mecanismo DMA separado para fornecer esse recurso, mas os comandos NVMe nesses consoles estão agindo principalmente em dados compactados .
Mesmo que os motores DMA sejam um dispositivo periférico, geralmente você não os encontrará como uma placa PCIe independente. Faz mais sentido para eles estarem o mais próximos possível do controlador de memória, o que significa no chipset ou no próprio chip da CPU. O SoC PS5 inclui um mecanismo DMA para lidar com a cópia dos dados que saem da unidade de compressão. Tal como acontece com os motores de compressão, esta não é uma invenção nova, mas sim um recurso ausente nos PCs desktop padrão, o que significa que é algo personalizado que a Sony tem que adicionar ao que de outra forma seria uma configuração de APU da AMD bastante direta.
IO Coprocessor
O complexo IO no SoC do PS5 também inclui um processador dual-core com seu próprio pool de SRAM. A Sony não disse quase nada sobre isso: Mark Cerny descreve um núcleo como dedicado ao SSD IO, permitindo que os jogos "contornem o IO de arquivo tradicional", enquanto o outro núcleo é descrito simplesmente como ajudando no "mapeamento de memória". Para obter mais detalhes, temos que recorrer a uma patente registrada pela Sony anos atrás e esperar que reflita o que está realmente no PS5.
O coprocessador IO descrito na patente da Sony descarrega partes do que normalmente seriam os drivers de armazenamento do sistema operacional. Uma de suas funções mais importantes é traduzir entre vários espaços de endereço. Quando o jogo solicita um determinado intervalo de bytes de um de seus arquivos, o jogo está procurando os dados não compactados . O coprocessador IO descobre quais blocos de dados compactados são necessários e envia comandos de leitura NVMe para o SSD. Assim que o SSD retornar os dados, o coprocessador IO configura a unidade de descompressão para processar esses dados e o mecanismo DMA para entregá-los aos locais solicitados na memória do jogo.
Como os dois núcleos do coprocessador IO são muito menos poderosos do que um núcleo de CPU Zen 2, eles não podem ser responsáveis por toda a interação com o SSD. O coprocessador lida com os casos mais comuns de leitura de dados, e o sistema volta para o SO rodando nos núcleos Zen 2 para o resto. A SRAM do coprocessador não é usada para armazenar em buffer as grandes quantidades de dados do jogo que fluem pelo complexo IO; em vez disso, essa memória contém as várias tabelas de pesquisa usadas pelo coprocessador IO. Nesse aspecto, é semelhante a um controlador SSD com um pool de RAM para suas tabelas de mapeamento, mas o trabalho do coprocessador IO é completamente diferente do que um controlador SSD faz. É por isso que será útil até mesmo com SSDs de terceiros.
Coerência de Cache
O último recurso de hardware relacionado ao armazenamento que a Sony divulgou é um conjunto de mecanismos de coerência de cache. A CPU e GPU no PS5 SoC compartilham os mesmos 16 GB de RAM, o que elimina a etapa de copiar ativos da RAM principal para VRAM depois que eles são carregados do SSD e descompactados. Mas para obter o máximo benefício do pool compartilhado de memória, o hardware deve garantir a coerência do cache não apenas entre os vários núcleos da CPU, mas também com os vários caches da GPU. Isso tudo é normal para um APU, mas a novidade do PS5 é que o complexo IO também participa. Quando novos ativos gráficos são carregados na memória por meio do complexo IO e sobrescrevem ativos mais antigos, ele envia sinais de invalidação de cache para quaisquer caches relevantes - para descartar apenas os dados desatualizados, em vez de esvaziar todos os caches de GPU.
E quanto ao Xbox Series X?
Há muitas informações acima sobre o complexo IO personalizado do Playstation 5, e é natural se perguntar se o Xbox Series X terá recursos semelhantes ou se está limitado apenas ao hardware de descompressão. A Microsoft agrupou as tecnologias relacionadas ao armazenamento no novo Xbox sob o título "Xbox Velocity Architecture":
A Microsoft define isso como tendo quatro componentes: o próprio SSD, o mecanismo de compactação, uma nova API de software para acessar o armazenamento (mais sobre isso mais tarde) e um recurso de hardware chamado Sampler Feedback Streaming. Esse último está apenas remotamente relacionado ao armazenamento; é um recurso de GPU que torna as texturas parcialmente residentes mais úteis, permitindo que os programas de sombreador mantenham um registro de quais partes de uma textura estão realmente sendo usadas. Essas informações podem ser usadas para decidir quais dados remover da RAM e o que carregar em seguida - como uma versão de alta resolução das regiões de textura que estão realmente visíveis no momento.
Já que a Microsoft não menciona nada como os outros recursos complexos do PS5 IO, é razoável supor que o Xbox Series X não tem esses recursos e seu IO é amplamente gerenciado pelos núcleos da CPU. Mas eu não ficaria muito surpreso em descobrir que a Série X tem um mecanismo DMA comparável, porque esse tipo de recurso tem mostrado historicamente em muitas arquiteturas de console.
Compressão: amplificando o desempenho do SSD
O recurso de hardware especializado mais importante que os consoles incluirão para complementar o desempenho do armazenamento é o hardware de descompressão de dados dedicado. Os ativos do jogo devem ser armazenados no disco em uma forma compactada para manter os requisitos de armazenamento razoavelmente razoáveis. Os jogos geralmente dependem de vários métodos de compactação - alguns métodos de compactação com perdas especializados para certos tipos de dados (por exemplo, áudio e imagens) e alguns algoritmos de uso geral sem perdas, mas quase tudo passa por pelo menos um método de compactação que é bastante complexo computacionalmente. As arquiteturas de GPU há muito incluem hardware para lidar com a decodificação de fluxos de vídeo e suporte a métodos de compressão de textura simples, mas rápidos, como S3TC e seus sucessores, mas isso deixa muitos dados para serem descompactados pela CPU. CPUs de desktop não têm motores de descompressão ou instruções dedicadas, embora muitas instruções nas várias extensões SIMD tenham como objetivo ajudar em tarefas como esta. Mesmo assim, descompactar um fluxo de dados em vários GB / s não é trivial, e o hardware para fins especiais pode fazer isso com mais eficiência enquanto libera tempo da CPU para outras tarefas. O hardware de descarregamento de descompressão nos próximos consoles é implementado no SoC principal para que possa descompactar os dados depois de atravessar o link PCIe do SSD e residir no pool de RAM principal compartilhado pelos núcleos GPU e CPU.
Hardware de descarregamento de descompressão como este não é encontrado em plataformas de PC desktop típicas, mas dificilmente é uma ideia nova. Os consoles anteriores incluíam hardware de descompressão, embora nada que fosse capaz de acompanhar o ritmo dos SSDs NVMe. As plataformas de servidor costumam incluir aceleradores de compressão, geralmente combinados com aceleradores de criptografia: a Intel fez esses aceleradores como periféricos discretos e integrados em alguns chipsets de servidor, e o POWER9 da IBM e CPUs posteriores têm unidades aceleradoras semelhantes. Esses aceleradores de servidor são mais comparáveis ao que os novos consoles precisam, com taxa de transferência de vários GB / s.
A Microsoft e a Sony ajustaram suas unidades de descompressão para se adequar ao desempenho esperado dos designs de SSD escolhidos. Eles escolheram diferentes algoritmos de compressão proprietários para atingir: a Sony está usando o Kraken da RAD, um algoritmo de propósito geral que foi originalmente projetado para ser usado nos consoles atuais com CPUs relativamente fracas, mas requisitos de rendimento muito mais baixos. A Microsoft se concentrou especificamente na compactação de textura, argumentando que as texturas são responsáveis pelo maior volume de dados que os jogos precisam ler e descompactar. Eles desenvolveram um novo algoritmo de compressão de textura e o apelidaram de BCPack em uma ligeira mudança de suas convenções de nomenclatura DirectX existentes para métodos de compressão de textura já suportados por GPUs.
��
O tempo de CPU economizado por essas unidades de descompressão parece surpreendente: o equivalente a cerca de 9 núcleos de CPU Zen 2 para o PS5 e cerca de 5 para o Xbox Series X. Lembre-se de que esses são os números de pico que pressupõem que a largura de banda SSD está sendo totalmente utilizada— jogos reais não serão capazes de manter esses SSDs 100% ocupados, então eles não precisariam de tanta potência de CPU para descompressão.
Os recursos de aceleração de armazenamento nos SoCs do console não estão limitados apenas ao descarregamento de compressão, e a Sony em particular descreveu alguns recursos, mas é aqui que as informações divulgadas até agora são realmente vagas, insatisfatórias e abertas a interpretação. A maior parte dessa funcionalidade parece ter o objetivo de reduzir a sobrecarga, lidando com alguns dos aspectos mais mundanos da movimentação de dados sem ter que envolver a CPU com frequência e garantindo que o processo de descompactação do hardware seja invisível para o software do jogo.
anandtech.com
Motores DMA
Acesso direto à memória (DMA) refere-se à capacidade de um dispositivo periférico de ler e gravar na RAM da CPU sem que a CPU esteja envolvida. Todos os periféricos modernos de alta velocidade usam DMA para a maior parte de sua comunicação com a CPU, mas esse não é o único uso para DMA. Um DMA Engine é um dispositivo periférico que existe apenas para mover dados; geralmente não faz nada com esses dados. A CPU pode instruir o mecanismo de DMA a realizar uma cópia de uma região da RAM para outra, e o mecanismo de DMA faz o trabalho rotineiro de copiar potencialmente gigabytes de dados sem que a CPU tenha que fazer um movimento(ou equivalente SIMD) para cada peça, e sem poluir os caches da CPU. Os mecanismos de DMA também podem fazer mais do que apenas descarregar operações simples de cópia: eles geralmente oferecem suporte a operações de dispersão / coleta para reorganizar os dados no processo de movê-los. O NVMe já possui recursos como listas de dispersão / coleta que podem eliminar a necessidade de um mecanismo DMA separado para fornecer esse recurso, mas os comandos NVMe nesses consoles estão agindo principalmente em dados compactados .
Mesmo que os motores DMA sejam um dispositivo periférico, geralmente você não os encontrará como uma placa PCIe independente. Faz mais sentido para eles estarem o mais próximos possível do controlador de memória, o que significa no chipset ou no próprio chip da CPU. O SoC PS5 inclui um mecanismo DMA para lidar com a cópia dos dados que saem da unidade de compressão. Tal como acontece com os motores de compressão, esta não é uma invenção nova, mas sim um recurso ausente nos PCs desktop padrão, o que significa que é algo personalizado que a Sony tem que adicionar ao que de outra forma seria uma configuração de APU da AMD bastante direta.
IO Coprocessor
O complexo IO no SoC do PS5 também inclui um processador dual-core com seu próprio pool de SRAM. A Sony não disse quase nada sobre isso: Mark Cerny descreve um núcleo como dedicado ao SSD IO, permitindo que os jogos "contornem o IO de arquivo tradicional", enquanto o outro núcleo é descrito simplesmente como ajudando no "mapeamento de memória". Para obter mais detalhes, temos que recorrer a uma patente registrada pela Sony anos atrás e esperar que reflita o que está realmente no PS5.
O coprocessador IO descrito na patente da Sony descarrega partes do que normalmente seriam os drivers de armazenamento do sistema operacional. Uma de suas funções mais importantes é traduzir entre vários espaços de endereço. Quando o jogo solicita um determinado intervalo de bytes de um de seus arquivos, o jogo está procurando os dados não compactados . O coprocessador IO descobre quais blocos de dados compactados são necessários e envia comandos de leitura NVMe para o SSD. Assim que o SSD retornar os dados, o coprocessador IO configura a unidade de descompressão para processar esses dados e o mecanismo DMA para entregá-los aos locais solicitados na memória do jogo.
Como os dois núcleos do coprocessador IO são muito menos poderosos do que um núcleo de CPU Zen 2, eles não podem ser responsáveis por toda a interação com o SSD. O coprocessador lida com os casos mais comuns de leitura de dados, e o sistema volta para o SO rodando nos núcleos Zen 2 para o resto. A SRAM do coprocessador não é usada para armazenar em buffer as grandes quantidades de dados do jogo que fluem pelo complexo IO; em vez disso, essa memória contém as várias tabelas de pesquisa usadas pelo coprocessador IO. Nesse aspecto, é semelhante a um controlador SSD com um pool de RAM para suas tabelas de mapeamento, mas o trabalho do coprocessador IO é completamente diferente do que um controlador SSD faz. É por isso que será útil até mesmo com SSDs de terceiros.
Coerência de Cache
O último recurso de hardware relacionado ao armazenamento que a Sony divulgou é um conjunto de mecanismos de coerência de cache. A CPU e GPU no PS5 SoC compartilham os mesmos 16 GB de RAM, o que elimina a etapa de copiar ativos da RAM principal para VRAM depois que eles são carregados do SSD e descompactados. Mas para obter o máximo benefício do pool compartilhado de memória, o hardware deve garantir a coerência do cache não apenas entre os vários núcleos da CPU, mas também com os vários caches da GPU. Isso tudo é normal para um APU, mas a novidade do PS5 é que o complexo IO também participa. Quando novos ativos gráficos são carregados na memória por meio do complexo IO e sobrescrevem ativos mais antigos, ele envia sinais de invalidação de cache para quaisquer caches relevantes - para descartar apenas os dados desatualizados, em vez de esvaziar todos os caches de GPU.
E quanto ao Xbox Series X?
Há muitas informações acima sobre o complexo IO personalizado do Playstation 5, e é natural se perguntar se o Xbox Series X terá recursos semelhantes ou se está limitado apenas ao hardware de descompressão. A Microsoft agrupou as tecnologias relacionadas ao armazenamento no novo Xbox sob o título "Xbox Velocity Architecture":
A Microsoft define isso como tendo quatro componentes: o próprio SSD, o mecanismo de compactação, uma nova API de software para acessar o armazenamento (mais sobre isso mais tarde) e um recurso de hardware chamado Sampler Feedback Streaming. Esse último está apenas remotamente relacionado ao armazenamento; é um recurso de GPU que torna as texturas parcialmente residentes mais úteis, permitindo que os programas de sombreador mantenham um registro de quais partes de uma textura estão realmente sendo usadas. Essas informações podem ser usadas para decidir quais dados remover da RAM e o que carregar em seguida - como uma versão de alta resolução das regiões de textura que estão realmente visíveis no momento.
Já que a Microsoft não menciona nada como os outros recursos complexos do PS5 IO, é razoável supor que o Xbox Series X não tem esses recursos e seu IO é amplamente gerenciado pelos núcleos da CPU. Mas eu não ficaria muito surpreso em descobrir que a Série X tem um mecanismo DMA comparável, porque esse tipo de recurso tem mostrado historicamente em muitas arquiteturas de console.
Compressão: amplificando o desempenho do SSD
O recurso de hardware especializado mais importante que os consoles incluirão para complementar o desempenho do armazenamento é o hardware de descompressão de dados dedicado. Os ativos do jogo devem ser armazenados no disco em uma forma compactada para manter os requisitos de armazenamento razoavelmente razoáveis. Os jogos geralmente dependem de vários métodos de compactação - alguns métodos de compactação com perdas especializados para certos tipos de dados (por exemplo, áudio e imagens) e alguns algoritmos de uso geral sem perdas, mas quase tudo passa por pelo menos um método de compactação que é bastante complexo computacionalmente. As arquiteturas de GPU há muito incluem hardware para lidar com a decodificação de fluxos de vídeo e suporte a métodos de compressão de textura simples, mas rápidos, como S3TC e seus sucessores, mas isso deixa muitos dados para serem descompactados pela CPU. CPUs de desktop não têm motores de descompressão ou instruções dedicadas, embora muitas instruções nas várias extensões SIMD tenham como objetivo ajudar em tarefas como esta. Mesmo assim, descompactar um fluxo de dados em vários GB / s não é trivial, e o hardware para fins especiais pode fazer isso com mais eficiência enquanto libera tempo da CPU para outras tarefas. O hardware de descarregamento de descompressão nos próximos consoles é implementado no SoC principal para que possa descompactar os dados depois de atravessar o link PCIe do SSD e residir no pool de RAM principal compartilhado pelos núcleos GPU e CPU.
Hardware de descarregamento de descompressão como este não é encontrado em plataformas de PC desktop típicas, mas dificilmente é uma ideia nova. Os consoles anteriores incluíam hardware de descompressão, embora nada que fosse capaz de acompanhar o ritmo dos SSDs NVMe. As plataformas de servidor costumam incluir aceleradores de compressão, geralmente combinados com aceleradores de criptografia: a Intel fez esses aceleradores como periféricos discretos e integrados em alguns chipsets de servidor, e o POWER9 da IBM e CPUs posteriores têm unidades aceleradoras semelhantes. Esses aceleradores de servidor são mais comparáveis ao que os novos consoles precisam, com taxa de transferência de vários GB / s.
A Microsoft e a Sony ajustaram suas unidades de descompressão para se adequar ao desempenho esperado dos designs de SSD escolhidos. Eles escolheram diferentes algoritmos de compressão proprietários para atingir: a Sony está usando o Kraken da RAD, um algoritmo de propósito geral que foi originalmente projetado para ser usado nos consoles atuais com CPUs relativamente fracas, mas requisitos de rendimento muito mais baixos. A Microsoft se concentrou especificamente na compactação de textura, argumentando que as texturas são responsáveis pelo maior volume de dados que os jogos precisam ler e descompactar. Eles desenvolveram um novo algoritmo de compressão de textura e o apelidaram de BCPack em uma ligeira mudança de suas convenções de nomenclatura DirectX existentes para métodos de compressão de textura já suportados por GPUs.
��
Hardware de descarga de compressão | ||
Xbox Series X | PlayStation 5 | |
Algoritmo | BCPack | Kraken (e ZLib?) |
Taxa máxima de saída | 6 GB / s | 22 GB / s |
Taxa de saída típica | 4,8 GB / s | 8–9 GB / s |
Núcleos de CPU Zen 2 equivalentes | 5 | 9 |
A Sony afirma que seu hardware de descompressão baseado em Kraken pode descompactar o fluxo de 5,5 GB / s do SSD em 8-9 GB / s de dados descompactados, mas que teoricamente pode chegar a 22 GB / s se os dados forem redundantes o suficiente para ser altamente compressível. A Microsoft afirma que seu descompressor BCPack pode produzir 4,8 GB / s da entrada de 2,4 GB / s, mas potencialmente até 6 GB / s. Portanto, a Microsoft está reivindicando taxas de compressão típicas ligeiramente mais altas, mas ainda um fluxo de saída mais lento devido ao SSD muito mais lento, e a descompactação de hardware da Microsoft aparentemente é apenas para dados de textura.O tempo de CPU economizado por essas unidades de descompressão parece surpreendente: o equivalente a cerca de 9 núcleos de CPU Zen 2 para o PS5 e cerca de 5 para o Xbox Series X. Lembre-se de que esses são os números de pico que pressupõem que a largura de banda SSD está sendo totalmente utilizada— jogos reais não serão capazes de manter esses SSDs 100% ocupados, então eles não precisariam de tanta potência de CPU para descompressão.
Os recursos de aceleração de armazenamento nos SoCs do console não estão limitados apenas ao descarregamento de compressão, e a Sony em particular descreveu alguns recursos, mas é aqui que as informações divulgadas até agora são realmente vagas, insatisfatórias e abertas a interpretação. A maior parte dessa funcionalidade parece ter o objetivo de reduzir a sobrecarga, lidando com alguns dos aspectos mais mundanos da movimentação de dados sem ter que envolver a CPU com frequência e garantindo que o processo de descompactação do hardware seja invisível para o software do jogo.
anandtech.com
Ultima Edição: