São 20 instruções disponíveis a saber:
BREAKPOINT – Ponto de parada para programa de depuração
Descrição: Se o sistema de depuração está habilitado no chip,
esta instrução laça de um ponto de interrupção de programa para
depuração. A instrução ponto de parada entrará no modo de
depuração desativa todas as interrupções e exceções. Se o
sistema de depuração no chip estiver desabilitado esta instrução
será executada como um NOP.
Operação:
I. if (SR[DM]==0)
RSR_DBG ←
SR;
RAR_DBG ←
address of first non-completed instruction;
SR[R] ←
1;
SR[J] ←
1;
SR[D] ←
1;
SR[M2:M0]
← B’110;
SR[DM] ←
1;
SR[EM] ←
1;
SR[GM] ←
1;
PC ←
EVBA+0x1C;
else
PC ← PC
+ 2;
Sintaxe:
I.
breakpoint
Operandos:
nenhum
CACHE – Realizar a operação de controle de cache
Descrição: operação de controle da caixa.
Sintaxe:
I. cache Rp[disp], Op5
Operandos:
I. Disp ∈ {-1024, -1023, ..., 1023}
/ p ∈ {0, 1, ..., 15}
Op[4:3]
Semântica
01 Caixa de dados ou Caixa unificada
10 Caixa Secundário
11 Caixa Terciária
Op[2:0]
Semântica
000
definido na implementação
001
definido na implementação
010
definido na implementação
011
definido na implementação
100
definido na implementação
101
definido na implementação
110
definido na implementação
111
definido na implementação
CSRF – Limpar a bandeira do registrador de estado - SR
Descrição: Apaga o sinalizador do registrador de estado (SR)
especificado.
Operação:
I.
SR[bp5] ← 0;
Sintaxe:
I.
csrf
bp
Operandos:
I. bp ∈ {0, 1, ..., 31}
CSRFCZ – Copia as bandeiras do registrador de estado para C e Z
Descrição: Copia do registrador de estado (SR) as bandeiras
especificado para C e Z.
Operação:
I.
C ← SR[bp5];
Z ← SR[bp5];
Sintaxe:
I.
csrfcz bp
Operandos:
I. bp ∈ {0, 1, ..., 31}
FRS – Lava a pilha de retorno
Descrição: Instrução especial para invalidar a pilha de endereços
de retorno. Esta instrução é usada quando o usuário escreve o
código que entra em conflito com a semântica exigida pela pilha de
endereços de retorno.
Sintaxe:
I. frs
Operandos:
I. nenhum
MFDR – Move do registador de depuração
Descrição: A instrução copia o valor do registador de depuração
especificado no registrador do arquivo de registadores especificado.
Note que as preocupações especiais de tempo devem ser considerados
quando se opera sobre os registradores de depuração.
Operação:
I. Rd ← DebugRegister[DebugRegisterAddress << 2];
Sintaxe:
I.
mfdr
Rd, DebugRegisterNo
Operandos:
I. DebugRegisterNo ∈ {0, 4, 8, ..., 1020}
MFSR – Move do registrador do sistema para um registrador
Descrição: A instrução copia o valor do registador de sistema
especificado para o registador do arquivo de registradores
especificado. Note que as preocupações especiais de tempo devem ser
consideradas quando se opera sobre os registradores do sistema.
Operação:
I.
Rd ← SystemRegister[SystemRegisterAddress << 2];
Sintaxe:
I.
mfsr
Rd, SystemRegisterAddress
Operandos:
I.
SystemRegisterAddress ∈ {0, 4, 8, ..., 1020}
MTDR – Move para o registador depuração
Descrição: A instrução copia o valor do registrador especificado
para o registrador de depuração especificado. Note que as
preocupações especiais de tempo deve ser considerado quando se
opera sobre os registradores do sistema.
Operação:
I.
DebugRegister[DebugRegisterAddress << 2] ← Rs;
Sintaxe:
I.
mtdr
DebugRegisterAddress, Rs
Operandos:
I.
DebugRegisterAddress ∈ {0, 4, 8, ..., 1020}
MTSR – Move para o registradores de sistema
Descrição: A instrução copia o valor do registrador especificado
no registrador do sistema especificado. Note que as preocupações
especiais de tempo deve ser considerado quando se opera sobre os
registradores do sistema.
Operação:
I.
SystemRegister[SystemRegisterAddress << 2] ← Rs;
Sintaxe:
I.
mtsr
SystemRegisterAddress, Rs
Operandos:
I.
SystemRegisterAddress ∈ {0, 4, 8, ..., 1020}
MUSFR – Copia o registrador de estado
Descrição: A instrução copia os 4 bits mais baixos do registrador
Rs para a parte inferior 4 bits do registrador de estado.
Operação:
I.
SR[3:0] ← Rs[3:0];
Sintaxe:
I.
musfr
Rs
Operandos:
s ∈ {0, 1, ..., 15}
MUSTR – Cópia o registrador de estado para um outro registrar
Descrição: A instrução copia o valor dos 4 bits mais baixos do
registrador de estado para o registrador destino - Rd. O valor é
zero estendido.
Operation:
I.
Rd ← ZE(SR[3:0]);
Sintaxe:
I.
mustr Rd
Operandos:
d ∈ {0, 1, ..., 15}
NOP – Não realiza nenhuma operação
Descrição: Instrução especiais que não
executa nenhuma operação e não cria dependências de dados no
pipeline.
Operação:
I.
none
Sintaxe:
I.
nop
Operandos:
I. nunhuma
PREF – caixa de pré busca
Descrição: Esta instrução permite ao programador declarar
explicitamente que o caixa deve pré buscar a linha especificada. O
sistema de memória trata esta instrução de uma forma dependente da
implementação e implementações sem o caixa trata a instrução
como um NOP. Uma instrução de pré-busca nunca diminui o desempenho
do sistema. Se a instrução de pré-busca executará uma ação que
reduziria o desempenho do sistema, ele é tratado como um NOP. Por
exemplo, se a instrução pré-busca gerará uma excepção de
endereçamento, a instrução é cancelada e nenhuma exceção é
feita.
Operação:
I.
a caixa de pré busca contém o endereço (Rp + SE(disp16)).
Sintaxe:
pref Rp[disp]
Operandos:
I.
p ∈ {0, 1, ..., 15}
/ disp ∈ {-32768, -32767, ..., 32767}
SLEEP – define o modo de atividade da UCP
Descrição: Define o sistema no modo de
hibernação especificado pela implementação no operando OP8
definido. A semântica do OP8 é a implementação definido. Se o
bit 7 em OP8 é um, SR [GM] serão baixados ao entrar em modo de
hibernação.
Sintaxe:
I.
sleep Op8
Operandos:
I.
Op8 ∈ {0, 1, ..., 255}
SR{cond4} – eleva o registrador condicionamente
Descrição: eleva o registrador especificado se a
condição especificada for verdadeira, caso contrário baixa o
registrador.
Operação:
I.
se
(cond4)
Rd ←
1;
então
Rd ←
0;
Sintaxe:
I. sr{cond4} Rd
Operandos:
I.
cond4 ∈ {eq, ne, cc/hs, cs/lo, ge, lt, mi, pl, ls, gt, le, hi,
vs, vc, qs, al} / d ∈ {0,
1, ..., 15}
SSRF – eleva a bandeira do registrador de estado
Descrição: eleva a bandeira do registrador de estado (SR)
especificado.
Operação:
I.
SR[bp5] ← 1;
Sintaxe:
I.
ssrf
bp
Operandos:
I.
bp ∈
{0, 1, ..., 31}
SYNC – sincronização da memória
Descrição: Finaliza todos os acessos à memória pendentes e
esvazia o buffers de escrever. A semântica de OP8 é a implementação
definida.
Operação: I. Termina todas as operações de memória pendentes.
Sintaxe: I. sync OP8
Operandos:
I. 0 ≤ Op8 ≤ 255
TLBR – lê a entrada TLB
Descrição: Lê o conteúdo do endereço de ITLB ou entrada DTLB em
TLBEHI e TLBELO.
Operação:
I.
se
(TLBEHI[I] == 1)
{TLBEHI,
TLBELO} ←ITLB[MMUCR[IRP]];
então
{TLBEHI,
TLBELO} ←DTLB[MMUCR[DRP]];
sintaxe:
I. tlbr
TLBS - Pesquisar TLB por entradas
Descrição: Pesquisar o endereço TLB por uma entrada correspondente
nos registradores alta e baixa (TLBEHI / TLBELO) da TLB de entrada.
Retorna um ponteiro para a entrada em MMUCR [IRP] ou MMUCR [DRP] se
uma correspondência for encontrada, caso contrário, definir o bit
no registrador de controle MMU, MM indicando que não foi encontrado.
operação:
I.
MMUCR[N] ←1;
se
(TLBEHI[I] == 1)
TlbToSearch
←ITLB;
então
TlbToSearch
←DTLB;
fim se;
para (i =
0 para TLBToSearchEntries-1)
se (
Compare(TlbToSearch[i]VPN, VA, TlbToSearch[i]SZ, TlbToSearch[i]V) )
// VPN
and VA matches for the given page size and entry valid
se (
SharedVMM ou
(PrivateVMM
e ( TlbToSearch[i]G ou (TlbToSearch[i]ASID==TLBEHI[ASID]) ) ) )
ptr ←
i;
MMUCR[N]
←0;
fim se;
fim se;
fim para;
se
(TLBEHI[I] == 1)
MMUCR[IRP]
←ptr;
então
MMUCR[DRP]
←ptr;
fim se;
sintaxe:
I. tlbs
TLBW – escreve na entrada TLB
Descrição: Escreve o conteúdo da entrada alta e baixa de TLB,
registradores TLBEHI e TLBELO, no endereçado de entrada TLB.
operação:
I.
se
(TLBEHI[I] == 1)
ITLB[MMUCR[IRP]]
← {TLBEHI, TLBELO};
então
ITLB[MMUCR[DRP]]
← {TLBEHI, TLBELO};
sintaxe:
I. tlbw
Nenhum comentário:
Postar um comentário