ErFer7/EPOS-RTS-lib

Implementar o CAS com instruções AMO

ErFer7 opened this issue · 0 comments

Contexto

Atualmente o CPU::cas não usa instruções AMO, o professor pediu para que fossem implementadas.

Atenção

Essa issue deve ser feita com base na #34

Critérios

  • Implementar o CAS com instruções AMO que funcione corretamente

O que é Atomic Memory Operations (AMO)?

  • Instruções que executam atômicamente uma operação em um operando de mémoria -> set no registrador de destino para o valor de memória original;
  • Se comportam melhor em grandes sistemas multiprocessadores do que load reservado e store condicional;
  • Podem ser usadas para implementar operações de redução;
  • Executam uma leitura e uma gravação em uma única transação de átomos de barramento -> úteis para comunicação com I/O.

Image

O que é Compare and Swap (CAS)?

  • Operação que compara um valor de registrador a um valor na memória endereçado por outro registrador;
  • Caso os valores sejam iguais, troca um terceiro valor de registrador pelo valor da memória;
  • Qualquer operação de sincronização de uma única palavra pode ser sintetizada a partir de CAS.

Image

Exemplos de implementação de CAS com AMO

Image

Image