CPU, SSD e controlador de Flash, como as informações se movem no PC

CPU, SSD e controlador de Flash

Em todos os SSDs existe um chip central que é responsável por comunicar os chips NVMe com o resto dos componentes do PC, este é o controlador de flash que se encontra em cada SSD unidade, seja uma unidade M.2, um disco SSD em formato de 2.5 polegadas ou um SSD externo. Mas como funciona esse hardware? Nós explicamos isso para você.

A memória flash é o que chamamos de não volátil RAM ou NVRAM, razão pela qual o acesso a este tipo de memória é feito com uma interface muito semelhante, senão quase igual a uma interface de memória convencional. Porém, devido à natureza e localização da memória Flash NAND do tipo NVMe no hardware do SSD, seu funcionamento é totalmente diferente das interfaces com memória RAM convencional.

O que é um controlador de flash?

Controlador Flash

Um controlador de flash é o chip central encontrado em cada unidade SSD, que deve realizar uma série de funções essenciais para seu funcionamento. Eles estão endereçando e copiando dados da memória flash SSD para a RAM ou VRAM do sistema. Abaixo, descrevemos o motivo e como esses dois processos funcionam e como o controlador de flash os executa.

Oficina Correos

Para entender a utilidade do controlador de flash no SSD, é melhor fazer um símile em que temos duas agências de correio, uma estadual que tem todos os endereços das cidades do país, mas não de forma convencional. Para entender melhor, pense que cada endereço em nosso exemplo não é uma rua com um número, mas uma caixa postal ou, em outras palavras, um número. E a segunda estação de correios? Bem, isso funciona na escala de um local muito menor, como uma província ou uma pequena cidade.

Dado que cada estação vai atribuir todos os endereços do primeiro ao último de acordo com o número de endereços de que dispõe, verifica-se que a numeração de cada endereço atribuído por cada uma das estações de correio não corresponderá entre si. Bem, a primeira agência postal é o conjunto de unidades de gerenciamento de memória ou MMUs que geram os endereços virtuais para acessar os dados na memória física, mas o CPU tem que ter uma maneira de acessar além da RAM e é por isso que seu endereçamento inclui não apenas todos os endereços de memória que estão na RAM do sistema, mas também além dela.

Em um nível físico, tanto a RAM tradicional quanto a não volátil, que é o que conhecemos como memória flash, têm endereçamento diferente porque sua interface passa a contar consigo mesma e não globalmente. Portanto, uma das tarefas do controlador Flash é a transferência de endereços de memória para que a CPU ou qualquer outro processador possa acessá-lo.

Tradução de endereços em FLASH

Traslado direções Controlador Flash Cada controlador flash tem uma memória RAM atribuída , exceto em DRAM-Less onde usa a RAM do sistema com a latência adicionada e a perda de desempenho que isso implica. Mas, ao contrário do que podemos concluir a olho nu, essa memória não serve apenas como um buffer intermediário de dados, mas também é utilizada para a transferência de endereços.

Ou seja, a memória RAM atribuída ao controlador flash armazena os endereços enviados pela CPU, a tabela de transferência e através de uma simples operação gera os endereços de memória física que permitem acessar os dados dentro dos chips NVMe compostos por células NAND Flash, seja para ler ou escrever neles. E deve-se levar em consideração que esta tabela ficará cada vez maior quanto mais memória o SSD tiver em seu interior, daí a necessidade de um chip de memória RAM convencional.

Podemos ver isso, por exemplo, na unidade SSD integrada de PlayStation 5, onde podemos ver um pequeno chip de memória que acompanha os chips NVMe, que é comum na grande maioria das unidades SSD, exceto, como mencionamos antes, que estamos falando de uma unidade SSD sem DRAM.

Copiando dados de Flash para RAM ou VRAMControlador Flash movimento dados

A memória flash é melhor do que um disco rígido convencional, pois não herda os problemas de acesso das unidades de disco clássicas. Como sua alta velocidade de transferência. Apesar desta vantagem sobre os HDDs, não é uma memória ideal para que a CPU possa operar diretamente com ele, muito menos um GPU . Se para as memórias DDR clássicas com uma largura de banda maior precisamos do uso de caches para amenizar a falta de velocidade desta, no caso das memórias flash isso é pior.

É por isso que o controlador de flash precisa copiar os dados para a RAM para que a CPU possa acessá-la, mas há um problema de entrada, por questões de segurança a RAM está dividida em dois espaços diferentes. Um em que os aplicativos podem acessar e outro que é acessado exclusivamente pelo sistema operacional e onde os programas não podem acessar. Sob essa premissa, como o controlador de flash sabe onde copiar os dados? Bem, uma parte da RAM é tomada como um buffer intermediário e os dados são copiados para lá. É a própria CPU do sistema, caso não haja acelerador responsável por esta tarefa, a que se encarregaria de verificar os dados no buffer e copiá-los para a parte correspondente da RAM.

Em relação à VRAM, dependendo do tipo de GPU e API que estamos usando, em uma GPU com suporte total com DX12 Ultimate a própria GPU é aquela que pode tirar os dados do SSD, em uma sem o referido suporte requer a participação do CPU, que é um trabalho duplo, pois você precisa copiá-los da RAM para a VRAM fazendo chamadas para os mecanismos de cópia de dados da CPU e GPU.