Buscar

Cap 5 Software Basico

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 35 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Nível de Instruções de Máquina 
Tanembaum, capítulo 5 
2 
Arquitetura do conjunto de instruções 
•  Interface entre software e hardware 
°  o que é visível para o programador/compilador 
•  Registradores 
•  Operadores 
•  Modos de endereçamento 
•  Instruções com implementação eficiente 
•  Interface limpa e flexível para compiladores 
•  Pode ser definida formalmente (SPARC) 
ou por uma implementação modelo (Intel) 
3 
Garantias semânticas 
•  Considere-se os comandos: 
°  WRITE (0x1000), 13 
°  READ (0x1000), R1 
•  Qual o valor de R1? 
°  Problemas de atrasos de propagação 
°  Problema pior em multiprocessadores 
•  Serialização: lê-se o que se escreve 
•  Sem garantias: evita problemas com caches 
°  Tendência: serialização só em casos críticos 
4 
Registradores 
•  Elementos de acesso mais rápido 
•  Acessíveis diretamente por instruções 
°  Uso geral 
•  variáveis e resultados intermediários 
•  intercambiáveis 
•  compiladores podem adotar convenções 
°  Dedicados (dependentes da arquitetura) 
•  Program Counter (PC) 
•  Program Status Word (PSW) 
•  Stack Pointer (SP) 
5 
Registradores do Pentium II 
AL AH 
BL BH 
CL CH 
DL DH 
Frame Pointer 
Stack Pointer 
Program Counter 
Program Status Word 
8 8 16 
EAX 
EBX 
ECX 
EDX 
AX 
CS 
SS 
DS 
ES 
FS 
GS 
EIP 
EFLAGS 
ESI 
EDI 
EBP 
ESP 
Registradores de segmentos 
(ignorados) 
Registradores 
“de uso geral” 
Apontadores 
para a memória 
6 
Registradores do UltraSPARC II 
Função 
R0 Fixo em zero; escritas são simplesmente ignoradas 
Variáveis globais 
Parâmetros para um procedimento a ser chamado 
R1-R7 
Registrador 
R8-R13 
R14 
R15 
R16-R23 
R24-R29 
R30 
R31 
G0 
G1-G7 
Nome alt. 
O0-O5 
SP 
O7 
L0-L7 
I0-I5 
FP 
I7 
Stack Pointer 
Rascunho 
Variáveis locais a um procedimento 
Parâmetros de entrada de um procedimento 
Base do quadro na pilha (frame pointer) 
Valor de retorno de um procedimento 
•  32 registradores de 64 bits inteiros “de uso geral” 
•  64 registradores de ponto flutuante 
7 
Tipos de dados 
•  Dependentes da arquitetura 
•  CPU e instruções determinam os tipo 
básicos reconhecidos pelo hardware 
°  Numéricos: 
•  Inteiros e ponto flutuante, tamanhos variados 
°  Outros: 
•  Booleanos 
•  Caracteres 
•  Apontadores 
8 
Formatos de instruções 
•  Código de operação + operandos 
•  Critérios de projeto: 
°  Tamanho 
°  Expressividade de operandos 
°  Número de bits para endereços 
°  Ortogonalidade entre códigos e operandos 
•  Toda operação deveria poder ser chamada 
com qualquer tipo de operandos 
9 
Formato de instruções do Pentium II 
Prefix OpCode Mode SIB Displacement Immediate 
Bytes 0-5 1-2 0-1 0-1 0 - 4 0 - 4 
Códigos que mudam 
o efeito do comando 
Identificador dos operandos 
MOD REG R/M 
Bits 2 3 3 
Code 
Bits 6 1 1 
Precisa ser 
decodificado 
Endereço é 
origem/destino 
Operação em 
palavra/byte Identificador para acessos indexados 
Scale Index Base 
Bits 2 3 3 
Endereço de 
memória Constante embutida 
na instrução 
•  Extremamente variável, difícil decodificação 
10 
Formato de instruções do UltraSPARC II 
00 DEST OpCode SRC1 0 FP-OP SRC2 
Bits 2 5 6 5 1 8 5 
Bits 2 5 3 22 
00 DEST OpCode SRC1 1 Immediate const. 
3 register 
Immediate (-4096..4095) 
01 DEST OP Immediate constant SETHI (22 superior bits) 
Bits 2 30 
Bits 2 1 5 3 22 
10 COND OP PC-relative displacement Conditional branches A 
10 PC-relative displacement CALL 
•  Extremamente regular, decodificação simples 
11 
Endereçamento de memória 
•  Identificação dos operandos armazenados 
em memória 
•  Endereço usualmente é maior que OpCode 
•  Idealmente deve-se reduzir a instrução 
°  Operações limitadas a registradores 
°  Uso de operandos implícitos 
 (registradores especiais) 
12 
Modos de endereçamento 
•  Imediato: valor do dado na própria instrução 
•  Direto: endereço do dado fixo na instrução 
•  Registrador: identificado diretamente na instrução 
•  Indireto: endereço é obtido do conteúdo da 
posição identificada pela instrução 
°  Indexado: valor de registrador + constante 
°  Relativo (c/ base): soma de registradores (e constante) 
•  Pilha: endereçamento implícito 
13 
Endereçamento imediato 
•  O valor a ser manipulado faz parte dos bits 
da própria instrução, já estando disponível 
•  Extremamente rápido, pouco flexível 
•  Determinação de constantes 
•  MOV R1, #5 
°  5 seria um valor embutido como constante 
no código da instrução 
14 
Endereçamento direto 
•  O endereço a ser utilizado faz parte do 
código da instrução 
•  O dado pode mudar, mas a posição não 
•  Acesso a variáveis globais, por exemplo 
•  MOV R1, (0x1000) 
°  Carrega em R1 o conteúdo da posição de 
memória 0x1000 
15 
Endereçamento de registrador 
•  Semelhante ao endereçamento direto, mas 
o dado se encontra em um registrador 
•  Simples de ser representado, pois são 
necessários poucos bits (32 reg.-> 5 bits) 
•  Manipulação mais eficiente 
•  MOV (0x1000),R13 
°  R13 indica que o dado a ser guardado na 
posição 0x1000 deve ser obtido daquele 
registrador 
16 
Endereçamento indireto 
•  Todo endereçamento onde a instrução não 
localiza o dado, mas indica onde o endereço 
real do mesmo deve ser obtido 
•  Implica em dois passos -> mais demorado 
•  MOV R1,(R3) 
°  R3 não contém o dado a ser armazenado em R1 
°  O valor em R3 deve ser obtido e interpretado 
como um endereço de memória 
°  Acesso àquela posição retorna o dado desejado 
17 
Endereçamento indexado 
•  O endereço do dado é obtido pela 
combinação de dois valores 
°  Endereço de base: constante 
°  Offset: deslocamento a partir da base 
•  Útil no acesso a vetores 
•  MOV R1, A(R3) 
°  O dado a ser colocado em R1 está em uma 
posição de memória obtida ao se somar o 
endereço inicial do vetor A (uma constante) 
com o valor armazenado em R3 
18 
Endereçamento Indexado com base 
•  Endereço do dado é obtido pela soma 
dos valores de dois registradores e 
algumas vezes de uma constante 
•  MOV R1, (R3+R4) 
°  Os valores de R3 e R4 são somados e o valor 
resultante é usado para acessar uma posição 
de memória de onde o novo valor de R1 é lido 
19 
Endereçamento por pilha 
•  O processador tem a noção de 
manipulação de dados em uma pilha 
•  Nenhum endereço precisa ser fornecido 
na instrução 
•  Operações sempre se referem ao topo da 
pilha em qualquer instante 
20 
Modos de endereçamento necessários 
•  Na prática não são necessários muitos 
modos de endereçamento 
•  Endereçamento imediato, registrador e 
indireto são suficientes 
•  Outros métodos simplificam a programação 
mas complicam o processador 
°  Muitos métodos criam dilema na escolha da 
forma de representação de comandos 
°  VAX permitia todo tipo de operação com todo 
tipo de operando (ou quase) 
21 
Modos de endereçamento para desvios 
•  Na definição de desvios, os métodos 
anteriores também se aplicam 
•  Além deles usa-se também modos de 
endereçamento relativos ao PC: 
°  Endereço de memória da próxima instrução é 
definido como um deslocamento em relação 
ao valor corrente doPC 
°  Definição do deslocamento pode ser por 
qualquer dos modos descritos anteriormente 
22 
Tipos de instruções 
•  Movimentação de dados 
•  Lógicas/aritméticas/deslocamentos 
•  Testes/comparações 
•  Desvios (condicionais/incondicionais) 
•  Subrotinas 
•  Entrada e saída 
•  Especiais (estado do processador) 
23 
Fluxo de execução 
•  Fluxo sequencial e desvios/saltos 
•  Procedimentos (recursividade) 
•  Co-rotinas 
•  Traps (interrupções de software/exceções) 
•  Interrupções (hardware) 
24 
Fluxo sequencial e desvios 
•  Operadores normais: 
•  JMP, JNZ, BLT, LOOP: 
PC 
Tempo 
PC 
Tempo 
25 
Procedimentos e funções 
Programa 
Biblioteca 
26 
Procedimentos, funções e a pilha 
•  CALL: empilha endereço seguinte 
•  Início: empilha variáveis locais (cria o quadro) 
•  Final: desempilha variáveis locais 
•  RETURN: desempilha endereço de retorno 
•  Funções: retorno no acumulador (convenção) 
•  Recursividade: 
°  Cada chamada enxerga região diferente da pilha 
°  Sequência de chamadas empilhadas (endereços 
de retorno) 
27 
Utilização da pilha 
•  SP: apontador da pilha, indica o topo da 
pilha controlada pelo processador em um 
dado momento 
•  FP: apontador de quadro, utilizado pelos 
programas para identificar um trecho da 
pilha que é de interesse de um dado 
procedimento 
28 
Procedimentos, funções e a pilha 
void towers( int n, int i, int j ) { 
 int k; 
 
 if (n==1) 
 printf( “Move de %d p/ %d\n”, i, j ); 
 else { 
 k = 6 -i - j ; 
 towers( n-1, i, k ); 
 towers( 1, i, j ); 
 towers( n-1, k, j ); 
 } 
} 
i = 1 
Old FP 
Ret addr 
k 
j = 3 
n = 3 
i = 1 
Old FP 
Ret addr 
k = 2 
j = 3 
n = 3 
i = 1 
Old FP =1000 
Ret addr 
k = 3 
j = 2 
n = 2 
i = 1 
Old FP 
Ret addr 
k = 2 
j = 3 
n = 3 
i = 1 
Old FP=1000 
Ret addr 
k = 3 
j = 2 
n = 2 
i = 1 
Old FP=1024 
Ret addr 
k 
j = 3 
n = 1 
1068!
1064!
1060!
1056!
1052!
1048!
1044!
10f0!
1036!
1032!
1028!
1024!
1020!
1016!
1012!
1008!
1004!
1000!
SP 
FP 
SP 
FP 
SP 
FP 
torres(3,1,3) torres(3,1,3) 
 torres(2,1,2) 
torres(3,1,3) 
 torres(2,1,2) 
 torres(1,1,3) 
29 
Co-rotinas 
Co-rotina A Co-rotina B 
RESUME A 
RESUME B 
RESU
ME B 
RESU
ME B 
RESUME A 
RESUME A 
30 
Traps e interrupções 
Programa 
Evento externo ativa sinal de interrupção 
Exceção durante a execução da instrução 
Tratador de 
Interrupção 
Tratador de 
Exceção 
HW 
IRET 
HW 
RET 
JMP 
Registro de TRAP/ INT 
31 
Traps (interrupções de software) 
•  Síncronas 
•  Ativadas por exceções nas instruções 
•  Estado do processador armazenado na pilha 
•  Transparentes (quase sempre) 
•  Retorno restaura estado do processador 
•  Podem ser registradas pelo programa 
32 
Interrupções 
•  Assíncronas 
•  Ativadas por sinal do hardware c/ identificador 
•  Estado do processador armazenado na pilha 
•  Completamente transparentes 
•  Retorno deve restaurar estado do processador 
•  Classificadas em níveis de prioridade 
•  Em níveis, com bloqueio hierárquico 
33 
Interrupções com prioridades 
Programa 
do usuário 
Programa 
do usuário 
Interrupção RS232 
Prioridade 5 
Interrupção 
 de impressora 
Prioridade 2 
Interrupção de disco 
Prioridade 4 (pendente) 
RTI RS232 termina 
Ocorre interrupção de disco 
RTI Impressora termina 
RTI Disco termina 
RTI 
Impressora 
RTI RS232 RTI Disco 
Pilha 
RTI 
Impressora 
usuário 
Impressora 
usuário usuário usuário 
Impressora 
34 
Instruções de entrada e saída 
•  Troca de dados entre CPU e dispositivo 
•  A CPU precisa endereçar dispositivos para 
acessar dados e para controle dos mesmos 
•  Esse endereçamento pode ser em: 
°  espaço de endereçamento só para dispositivos 
•  requer instruções especiais 
°  mesmo espaço de endereços que a memória 
•  simplifica o projeto da CPU 
35 
Técnicas de E/S 
•  E/S programada (Programmed I/O, PIO) 
°  CPU lê e escreve dados diretamente 
°  Requer “espera ocupada” (busy waiting) 
•  Controlado por interrupção 
°  CPU acionada por interrupção para mover dados 
°  Libera a CPU até que a operação possa ser feita 
•  Acesso direto à memória (DMA) 
°  CPU programa o dispositivo para a operação 
°  Interrupção é usada apenas para indicar término

Continue navegando