O que é uma troca de contexto?

Nos primórdios da computação, as CPUs eram máquinas puramente sequenciais. Isso ajudou a manter os designs simples. No entanto, também limitou o desempenho. Muitos processos precisarão solicitar dados da RAM do sistema ou do disco rígido. Embora a RAM do sistema seja rápida, ela ainda não é tão rápida quanto a CPU, deixando-a ociosa, esperando por dados até que a resposta volte da RAM. A situação é ainda pior para os dados solicitados do disco rígido, um dispositivo de armazenamento muito mais lento que a RAM. Aqui a CPU pode ficar ociosa por períodos significativos, aguardando uma resposta. Infelizmente, com processadores sequenciais, esse problema é simplesmente inevitável.

Felizmente, as CPUs modernas não são mais sequenciais. Eles oferecem muitos recursos avançados, como execução fora de ordem e vários threads. A execução fora de ordem permite que a CPU analise as próximas instruções e as reordene para maximizar a eficiência. Multi-threading permite que a CPU tenha vários threads ou processos diferentes em execução.

Além de ter vários núcleos, a CPU não pode executar mais de um por vez. Ele pode, no entanto, fazer com que pareça, alternando entre eles regularmente para garantir que cada um obtenha uma quantidade considerável de tempo de CPU constante. O processo de alternar entre threads é chamado de troca de contexto.

Como funciona uma troca de contexto?

Uma troca de contexto consiste em duas partes, trocando o thread anterior e trocando o novo. Para alterar o thread antigo, a CPU deve salvar seu estado atual em um bloco de controle de processo ou switch frame. Isso inclui os valores de quaisquer registradores relevantes da CPU e sempre consiste no valor do contador do programa. Uma vez que o thread tenha sido armazenado, um identificador pode ser adicionado a uma fila pronta para permitir que ele seja restaurado quando necessário.

Mudar no segmento seguinte é o mesmo processo inverso. Um thread é selecionado da fila pronta, dependendo da ponderação. Alternativamente, pode ser escolhido por uma interrupção indicando que um evento que o thread estava esperando agora está pronto ou completo. Os dados do thread são então copiados nos registradores corretos e o thread é restaurado. Neste ponto, o novo thread está pronto para continuar a operação de onde parou.

Impacto no desempenho

O processo de leitura e gravação de dados ao ativar ou desativar um thread leva algum tempo, embora não muito, pois a memória usada é normalmente de alta velocidade. Há, no entanto, outros custos de desempenho. Ao alternar threads, os dados nos caches e buffers da CPU do thread anterior podem não ser relevantes para o novo thread. Isso pode levar a um aumento significativo no TLB ( Translation Lookaside Buffer ) e perdas de cache.

Esse efeito não é significativo se os dois threads foram gerados pelo mesmo processo, pois é provável que eles compartilhem elementos de memória consideráveis. O TLB deve ser totalmente liberado ao alternar entre threads de métodos diferentes. Isso leva a uma taxa de falha de TLB de 100%, enquanto a taxa de acerto do cache da CPU também é significativamente reduzida.

Embora as CPUs ofereçam suporte de hardware para troca de contexto, os sistemas operacionais normalmente não usam isso. A comutação de contexto de hardware carece de consciência da relevância dos dados. Portanto, ele precisa armazenar e restaurar todos os registros, aumentando o tempo gasto e o espaço de armazenamento necessário.

Além disso, a comutação de contexto de hardware não armazena os dados dos registradores de ponto flutuante, funcionalidade que pode ser necessária. A comutação de contexto de software é, portanto, geralmente usada. Permite manter os dados de todos os registradores, inclusive registradores de ponto flutuante. As chaves de contexto de software têm uma compreensão da relevância dos dados. Isso significa que ele pode escolher quais armazenar conforme necessário.

Conclusão

Uma troca de contexto é um processo pelo qual uma CPU moderna troca qual thread está executando. O processo envolve armazenar os dados relevantes do thread atual e restaurar os dados pertinentes do novo thread. A comutação de contexto vem com um custo de desempenho relacionado ao tempo necessário para realizar a comutação e ao aumento da taxa de cache e faltas de TLB, pois não são armazenadas. As trocas de contexto acontecem para garantir que todos os threads tenham um bom suprimento de tempo de CPU ou devido a uma interrupção indicando que um evento que a linha estava aguardando foi concluído.



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