Estamos entusiasmados em trazer DirectStorage, uma API da família DirectX projetada originalmente para a Arquitetura Velocity para PCs com Windows! O DirectStorage trará a melhor tecnologia IO da classe para o PC e o console, assim como o DirectX 12 Ultimate faz com a tecnologia de renderização. Com um PC compatível com DirectStorage e um jogo habilitado para DirectStorage, você pode esperar tempos de carregamento muito reduzidos e mundos virtuais que são mais expansivos e detalhados do que nunca.
Nesta postagem do blog, vamos dar aos entusiastas de jogos mais detalhes sobre como vai funcionar e como vai revolucionar os jogos de PC.
A evolução das tecnologias de armazenamento e padrões de IO de jogos
Avanços recentes nas tecnologias SSD e PCIe, especificamente tecnologias NVMe, permitem que os PCs para jogos tenham soluções de armazenamento que oferecem muito mais largura de banda do que era possível com tecnologias de disco rígido mais antigas. Em vez de dezenas de megabytes por segundo, unidades como o NVMe personalizado do próximo console
Xbox Series X podem fornecer vários gigabytes por segundo extremamente rápidos.
As cargas de trabalho do jogo também evoluíram. Os jogos modernos carregam muito mais dados do que os mais antigos e são mais inteligentes sobre como carregam esses dados. Essas otimizações de carregamento de dados são necessárias para que essa quantidade maior de dados caiba na memória compartilhada / memória acessível pela GPU. Em vez de carregar grandes pedaços de uma vez com muito poucas solicitações de IO, os jogos agora dividem recursos como texturas em pedaços menores, carregando apenas as partes necessárias para a cena atual renderizada. Essa abordagem é muito mais eficiente em termos de memória e pode fornecer cenas com melhor aparência, embora gere muito mais solicitações de IO.
Infelizmente, as APIs de armazenamento atuais não foram otimizadas para esse alto número de solicitações de I/O, evitando que aumentem para essas larguras de banda NVMe mais altas, criando gargalos que limitam o que os jogos podem fazer. Mesmo com hardware de PC super-rápido e um drive NVMe, os jogos que usam as APIs existentes não serão capazes de saturar totalmente o pipeline de IO, deixando uma largura de banda preciosa na mesa.
É aí que entra o DirectStorage para PC. Essa API é a resposta a um armazenamento em evolução e ao cenário de IO nos jogos de PC. O DirectStorage terá suporte em certos sistemas com drives NVMe e trabalhará para trazer sua experiência de jogo para o próximo nível. Se o seu sistema não suporta DirectStorage, não se preocupe; os jogos continuarão a funcionar tão bem como sempre.
O que exatamente o DirectStorage fará pela minha experiência de jogo no PC e como?
Existem duas áreas principais que essa nova API vai melhorar: reduzir os tempos de carregamento frustrantemente longos do passado e permitir que os jogos sejam mais detalhados e expansivos do que nunca.
Embora aparentemente diferentes, os dois benefícios derivam dos mesmos avanços do sistema IO que o DirectStorage traz. Quer sejam as texturas das roupas dos seus personagens ou os detalhes das montanhas ao longe, ambos envolvem fundamentalmente o carregamento de dados de um dispositivo de armazenamento que precisa, eventualmente, chegar à GPU. O primeiro só acontece enquanto está em uma tela de carregamento, enquanto o último acontece quando você caminha por um jogo de mundo aberto que carrega em um cenário distante que surge em tempo real enquanto joga coisas que sumiram de vista.
Em ambos os casos, os jogos da geração anterior tinham um orçamento de streaming de ativos na ordem de 50 MB / s, que mesmo em blocos de 64k menores (ou seja, um bloco de textura) equivale a apenas centenas de solicitações de IO por segundo. Com drives NVMe de multi-gigabyte por segundo, para aproveitar toda a largura de banda, isso explode rapidamente para dezenas de milhares de solicitações de IO por segundo. Tomando o drive capaz de 2.4 GB / s da Série X e os mesmos tamanhos de bloco de 64k como exemplo, isso equivale a> 35.000 solicitações de IO por segundo para saturá-lo.
As APIs existentes exigem que o aplicativo gerencie e trate cada uma dessas solicitações, uma de cada vez, primeiro enviando a solicitação, aguardando sua conclusão e, em seguida, manipulando sua conclusão. A sobrecarga de cada solicitação não é muito grande e não é um ponto de estrangulamento para jogos mais antigos executados em discos rígidos mais lentos, mas multiplicada dezenas de milhares de vezes por segundo, a sobrecarga de IO pode rapidamente se tornar muito cara, impedindo que os jogos possam tirar vantagem das larguras de banda aumentadas da unidade NVMe.
Além disso, muitos desses ativos são compactados. Para serem usados pela CPU ou GPU, eles devem primeiro ser descompactados. Um jogo pode extrair quantos dados quiser do disco, mas você ainda precisa de uma maneira eficiente de descompactá-los e enviá-los à GPU para renderização. Usando o DirectStorage, seus jogos são capazes de aproveitar as melhores tecnologias de descompressão atuais e futuras.
Em um mundo onde um jogo sabe que precisa carregar e descomprimir milhares de blocos para o próximo quadro, o modelo um por vez resulta em perda de eficiência em vários pontos da jornada do bloco de dados. A API DirectStorage é arquitetada de uma maneira que leva tudo isso em consideração e maximiza o desempenho em todo o pipeline, desde o drive NVMe até a GPU.
Ele faz isso de várias maneiras: reduzindo a sobrecarga de NVMe por solicitação, permitindo solicitações de IO paralelas em lote que podem ser alimentadas de forma eficiente para a GPU e dando aos jogos um controle mais preciso sobre quando eles são notificados sobre a solicitação de IO conclusão em vez de ter que reagir a cada minúscula conclusão de IO.
Desta forma, os desenvolvedores recebem uma maneira extremamente eficiente de enviar / lidar com muitas ordens de magnitude a mais de solicitações de IO do que nunca, em última análise, minimizando o tempo que você espera para entrar no jogo e trazendo mundos virtuais maiores e mais detalhados que carregam tão rápido conforme o personagem do jogo pode se mover por ele.
Por que NVMe?
Os dispositivos NVMe não são apenas dispositivos baseados em SSD de largura de banda extremamente alta, mas também possuem canais de acesso a dados de hardware chamados filas NVMe, que são particularmente adequados para cargas de trabalho de jogos. Para retirar os dados da unidade, um sistema operacional envia uma solicitação à unidade e os dados são entregues ao aplicativo por meio dessas filas. Um dispositivo NVMe pode ter várias filas e cada fila pode conter muitos pedidos de uma vez. Esta é uma combinação perfeita para a natureza paralela e em lote das cargas de trabalho de jogos modernos. O modelo de programação DirectStorage essencialmente dá aos desenvolvedores controle direto sobre esse hardware altamente otimizado.
Além disso, as APIs de armazenamento existentes também incorrem em muitas 'etapas extras' entre um aplicativo que faz uma solicitação de IO e a solicitação sendo atendida pelo dispositivo de armazenamento, resultando em sobrecarga de solicitação desnecessária. Essas etapas extras podem ser coisas como transformações de dados necessárias durante certas partes da operação normal de I/O. No entanto, essas etapas não são necessárias para cada solicitação IO em cada drive NVMe em cada máquina de jogo. Com um drive NVMe compatível e uma máquina de jogos devidamente configurada, o DirectStorage será capaz de detectar antecipadamente que essas etapas extras não são necessárias e pular todas as verificações / operações necessárias, tornando cada solicitação de IO mais barata de atender.
Por essas razões, NVMe é a tecnologia de armazenamento de escolha para DirectStorage e I/O de jogos de próxima geração de alto desempenho.
Quando podemos esperar mais detalhes?
Para cada recurso da família DirectX, a Microsoft reúne os melhores jogadores da indústria de jogos para PC para padronizar novos recursos de jogos, torná-los disponíveis para desenvolvedores de jogos e, eventualmente, colocá-los em suas máquinas de jogos.
Este processo já começou para DirectStorage e estamos trabalhando com nossos parceiros da indústria agora para terminar de projetar / construir a API e seus componentes de suporte. Nosso objetivo é colocar uma prévia do desenvolvimento do DirectStorage nas mãos dos desenvolvedores de jogos no próximo ano.
Earlier this year, Microsoft showed the world how the
Xbox Series X, with its portfolio of technology innovations, will introduce a new era of no-compromise gameplay. Alongside the actual console announcements, we unveiled the Xbox Velocity Architecture, a key part of how the
Xbox Series X will...
devblogs.microsoft.com