FERRAMENTAS LINUX: As CPUs AMD Zen 2 vêm com algumas novas instruções - pelo menos WBNOINVD, CLWB, RDPID

quarta-feira, 12 de junho de 2019

As CPUs AMD Zen 2 vêm com algumas novas instruções - pelo menos WBNOINVD, CLWB, RDPID




Confira !!



Durante o evento de lançamento do AMD Zen 2 + RDNA, eles destacaram algumas das novas instruções para encontrar com o processador Zen 2, mas há pelo menos mais um.

Durante os briefings do Zen 2, eles cobriram o CLWB para Cache Line Write Back e WBNOINVD para Write Back e Não Invalidate Cache. O CLWB grava de volta na memória a linha de cache especificada. WBNOINVD é semelhante ao WBINVD, mas lida com o write back e não invalida o cache. O WBNOINVD gravará as linhas de cache modificadas do cache da CPU na RAM do sistema sem liberar (invalidar) os caches internos.

Essas foram apenas as instruções de cache comentadas durante o evento de LA. Mas ao lembrar as correções de compilador AMD znver2 para o GCC que foram publicados no final do ano passado, havia também a instrução RDPID. RDPID é a instrução para ler o ID do processador de uma maneira mais rápida do que os gostos do RDTSCP que também inclui o contador de registro de data e hora.

Curioso, perguntei por aí e descobri que o RDPID está de fato presente para os processadores Zen 2. Isso é uma boa notícia e originalmente a Intel conseguiu o suporte RDPID para Cannonlake / Icelake, para o qual eles conseguiram o suporte pronto, mas por falta de envio Cannonlake em escala e ainda não Icelake, a AMD é capaz de aproveitar esse trabalho de infraestrutura.

Uma das áreas em que o kernel do Linux já está preparado para usar o RDPID quando presente está dentro do __getcpucódigo. Dada a chamada do sistema getcpu para determinar o nó / núcleo da CPU em que um encadeamento esteve ativo em termos de posicionamento, isso pode ter algumas implicações interessantes. No mínimo, os desenvolvedores da Intel que apenas suportam essa instrução com o Icelake disseram que essa instrução é muito mais rápida do que as instruções existentes para a tarefa. Quando tenho minhas mãos nos novos processadores Ryzen 3000 (e o embargo de revisão expirou), certamente executarei alguns benchmarks para ver se isso faz alguma diferença significativa, pois pelo menos o suporte RDPID da Intel foi mencionado em um comentário de código de ser muito mais rápido.

Ao descobrir se o RDPID estava realmente no Zen 2, também ouvi dizer que provavelmente existem "algumas" outras novas instruções, bem como os processadores Zen 2, mas que não poderiam ser imediatamente lembradas por um dos arquitetos zen. Isso é excitante de ouvir, mas não foi abordado no evento da AMD, pois eles podem estar aguardando a conferência Hot Chips falar mais sobre eles, mas esperamos receber uma lista em breve dessas novas instruções, e ouvir que não acho que a "imprensa" estaria interessada em detalhes do ISA neste evento da AMD mais obviamente tempo limitado.

A única desvantagem de ouvir que há mais instruções em jogo é que, infelizmente, os compiladores GCC e LLVM Clang com seu suporte inicial "znver2" apenas expõem as instruções de cache e RDPID como parte desse destino do Zen 2. Assim, ter que adicionar mais instruções para serem expostas pelo znver2 apenas atrasará o tempo pelo qual os desenvolvedores / construtores de código encontrarão essas novas instruções ativadas ao construir com -march = znver2 . Essa é uma das áreas em que a Intel tem sido boa no tempo, geralmente fornecendo novos alvos de suporte e compilador ISA para as CPUs futuras, geralmente com anos de antecedência devido à cadência de lançamento anual do GCC e lançamentos de seis meses para a LLVM / Clang. Portanto, para qualquer melhoria no compilador do Znver2, provavelmente não os veremos até o GCC 10 no ano que vem ou o LLVM Clang 9 em setembro.

Eu também levantei a questão de as tabelas scheduler / cost do znver1 às vezes não serem ótimas e o suporte do compilador znver2 na maioria das vezes reutilizando o código znver1 sem ser ajustado ainda e como isso é lamentável dadas as cadências lentas para obter este suporte em novos compiladores. Esperemos que na hora do lançamento do Zen 3 veremos um bom suporte ao znver3 em compiladores lançados no próximo ano com ajuste adequado e todas as novas extensões de conjunto de instruções.

Fonte

Até a próxima !!

Nenhum comentário:

Postar um comentário