O que é uma barreira de memória?

Historicamente, as CPUs têm sido máquinas perfeitamente sequenciais. Isso é altamente lógico e fácil de entender, mas pode ser um problema de desempenho. Ao longo dos anos, houve muitos ajustes engenhosos nos projetos de CPU para extrair o máximo de desempenho possível dos wafers de silício. Um dos mais interessantes, porém, é a execução fora de ordem. Em CPUs de execução fora de ordem, as instruções não precisam necessariamente ser executadas na ordem em que são emitidas.

Parando em Ordem

O principal problema de desempenho que uma CPU em ordem enfrenta é chamado de travamento do pipeline. Isso acontece quando uma instrução depende de alguma memória, mas essa memória não está disponível diretamente em um registrador. Nesse caso, a CPU deve encontrar esse valor na memória. O cache da CPU é verificado primeiro, pois esse é o nível de memória mais rápido. Se o valor não estiver lá, a RAM do sistema é verificada. Durante esse tempo, a CPU deve ficar ociosa, pois a instrução dependente de memória deve ser concluída na ordem antes das instruções seguintes.

O impacto no desempenho de uma parada de pipeline pode não ser tão ruim, mas também pode ser relativamente grave. Por exemplo, o cache L1 normalmente pode retornar um resultado na ordem de magnitude de 5 ciclos de CPU. O cache L2 pode levar 20 ciclos, o L3 cerca de 200 ciclos e a RAM do sistema cerca de 400 ciclos. Dado que uma CPU pode operar em torno de 5 GHz, ou seja, 5 bilhões de ciclos de clock por segundo, mesmo 400 ciclos não são tão ruins (0,000008%). Mas se você tiver muitas instruções que precisam fazer referência a dados mais abaixo nas camadas de cache, o efeito cumulativo pode causar uma desaceleração perceptível.

Execução fora de ordem e renomeação de registro

A execução fora de ordem é uma técnica que permite ao escalonador reordenar as instruções em sua fila. Por meio dessa reordenação, ele pode optar por priorizar threads específicos em detrimento de outros. Ele também pode recolocar as instruções na fila quando elas tiverem uma dependência de dados que ainda não foi atendida. Isso evita paradas de pipeline tanto quanto possível, minimizando os ciclos ociosos.

A execução fora de ordem requer um recurso chamado renomeação de registro. A CPU pode acessar os dados contidos nos registradores em um único ciclo. Os registradores são usados ​​para armazenar dados que estão sendo lidos e escritos. É essencial, no entanto, garantir que o computador em geral veja tudo acontecendo na ordem lógica, não na ordem otimizada do ciclo da CPU fora de ordem. Para permitir isso, as CPUs possuem muito mais registradores lógicos do que a arquitetura da CPU exige.

Os dados que precisam ser gravados, mas possuem uma instrução “anterior” que ainda não foi concluída, são colocados em um registrador de retenção. Esses dados não são transferidos para outro registro quando o pedido é resolvido. Em vez disso, o nome do registro de retenção é alterado para o nome do registro em que deveria estar. Isso é um pouco semelhante a preparar uma sobremesa antes do prato principal, mas depois mantê-la na geladeira até a hora de servir.

Esses registradores lógicos são totalmente não endereçados. A CPU só pode realmente endereçar os registradores lógicos que atualmente compartilham o nome dos registradores de arquitetura. Dito isso, a CPU também está ciente deles o suficiente para que, se outras instruções reordenadas dependerem dos dados do registrador lógico, elas possam usá-los em vez dos dados “desatualizados” do registrador arquitetônico naquele momento empírico específico.

Barreiras de Memória

Uma barreira de memória – também conhecida como membar, cerca de memória ou instrução de cerca – é uma instrução em código de computador. Ele permite que um programador imponha uma restrição de ordem nas operações de memória emitidas antes e depois da barreira de memória. A barreira de memória instrui o agendador da CPU a garantir que todas as instruções sejam processadas antes de qualquer instrução após a barreira. Isso é feito para garantir que operações importantes sejam concluídas na ordem correta.

Geralmente, em computadores modernos, isso não deveria ser necessário. Execução fora de ordem e renomeação de registro são campos bem estabelecidos e maduros. No entanto, uma barreira de memória pode ser útil para processadores antigos, menos sofisticados e fora de ordem ou usados ​​em operações críticas de memória.

As barreiras de memória podem vir com algum prejuízo de desempenho. Isso ocorre porque eles impedem ativamente que o escalonador da CPU otimize partes específicas do fluxo de instruções. Isso aumenta a chance de um travamento do pipeline.

Conclusão

Uma barreira de memória é uma instrução que garante uma restrição de ordem nas operações de memória. Isso é importante porque os processadores de execução fora de ordem podem reordenar instruções específicas. Embora a renomeação do registro esteja bem estabelecida como um método para garantir a integridade da memória nesse ambiente, pode ser útil garantir isso manualmente.

A barreira de memória força o escalonador da CPU a garantir que as instruções sejam concluídas antes de qualquer instrução após a barreira. Isso evita que as operações de memória sejam reordenadas. Também impede que a CPU otimize o fluxo de instruções, o que pode afetar o desempenho.



Leave a Comment

Como clonar um disco rígido

Como clonar um disco rígido

Na era digital moderna, onde os dados são um bem valioso, a clonagem de um disco rígido no Windows pode ser um processo crucial para muitos. Este guia completo

Como consertar o driver WUDFRd que falhou ao carregar no Windows 10?

Como consertar o driver WUDFRd que falhou ao carregar no Windows 10?

Você está enfrentando a mensagem de erro ao inicializar o computador, informando que o driver WUDFRd falhou ao carregar no seu computador?

Como corrigir o código de erro NVIDIA GeForce Experience 0x0003

Como corrigir o código de erro NVIDIA GeForce Experience 0x0003

Você está enfrentando o código de erro 0x0003 da experiência NVIDIA GeForce em sua área de trabalho? Se sim, leia o blog para descobrir como corrigir esse erro de forma rápida e fácil.

Noções básicas de impressão 3D: adesão à base da impressora

Noções básicas de impressão 3D: adesão à base da impressora

Aprendendo sobre impressão 3D? Aqui está o que você precisa saber sobre a adesão da base da impressora.

Como remover uma GPU do Windows PC em 2023

Como remover uma GPU do Windows PC em 2023

Você precisa remover a GPU do seu PC? Junte-se a mim enquanto explico como remover uma GPU do seu PC neste guia passo a passo.

Como instalar um SSD NVMe em um desktop e laptop

Como instalar um SSD NVMe em um desktop e laptop

Comprou um novo SSD NVMe M.2, mas não sabe como instalar? Continue lendo para saber como instalar um SSD NVMe em um laptop ou desktop.

O que é uma bomba lógica?

O que é uma bomba lógica?

Uma bomba lógica é um incidente de segurança em que um invasor configura uma ação atrasada. Continue lendo para saber mais.

O que é Stuxnet?

O que é Stuxnet?

O Stuxnet era um worm autopropagado. Foi o primeiro uso de uma arma cibernética e a primeira ocorrência de malware.

O que é um hacker ético?

O que é um hacker ético?

Um hacker ético é um hacker que age dentro das restrições da lei. Continue lendo para saber mais sobre o assunto.

O que é criptografia simétrica?

O que é criptografia simétrica?

Existem muitas partes diferentes da criptografia. Se você deseja criptografar alguns dados, existem dois tipos de algoritmos que você pode usar: simétrico