Como é a linguagem de montagem multicor

Uma vez, para escrever um montador x86, por exemplo, você teria instruções dizendo "carregar o registro EDX com o valor 5", "incrementar o registro EDX", et

Com CPUs modernas com 4 núcleos (ou mais), no nível do código da máquina, parece que existem 4 CPUs separadas (ou seja, existem apenas 4 registros "EDX" distintos)? Se sim, quando você diz "incrementar o registro EDX", o que determina qual registro EDX da CPU é incrementado? Existe um conceito de "contexto da CPU" ou "thread" no assembler x86 agora?

Como funciona a comunicação / sincronização entre os núcleo

Se você estava escrevendo um sistema operacional, qual mecanismo é exposto por hardware para permitir agendar a execução em diferentes núcleos? É alguma instrução especial privilegiada?

Se você estivesse escrevendo uma VM de compilador / bytecode otimizada para uma CPU multicore, o que você precisaria saber especificamente sobre, por exemplo, x86 para gerar um código que seja executado com eficiência em todos os núcleo

Quais alterações foram feitas no código da máquina x86 para dar suporte à funcionalidade de vários núcleo

questionAnswers(20)

yourAnswerToTheQuestion