Controle / Sistema


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.
Operação: I. Emite um comando para o cache.
Sintaxe: I. cache Rp[disp], Op5
Operandos: I. Disp ∈ {-1024, -1023, ..., 1023} / p ∈ {0, 1, ..., 15}
Op[4:3] Semântica
00 Caixa de Instruções
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.
Operação: I. Invalida todas as entradas na 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.
Operação: I. Definir o sistema no modo de hibernação especificado.
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