Documente Academic
Documente Profesional
Documente Cultură
− Nível ISA pode ser entendido como sendo a aparência do computador para
um programador em linguagem máquina =>é a saída do compilador.
− Nível ISA =>parte visível e necessária ao compilador
− Tipo do modelo de memória;
− Tipos de registradores existentes
− Tipos de dados
− Instruções disponíveis e registradores envolvidos
− Algumas arquiteturas possuem o nível ISA especificado formalmente :
SPARC e JVM.
− Dois modos de operação:
− Modo Kernel: Utilizado para rodar sistemas operacionais => permite
que todas as instruções sejam executadas.
− Modo usuário: Utilizado para rodar aplicativos e não permite a
execução de certas instruções (acesso a cache).
5.1.2 Modelos de memória
98
− Todos os computadores dividem a memória em células que possuem
endereços consecutivos (células de 1 a 60 bits) => 8 bits é o mais comum (1
byte).
− bytes geralmente organizados em grupos de palavras de 4 (32 bits) ou 8 (64
bits) bytes.
− Palavras alinhadas ou não:
− Palavras alinhadas: Pentium II => busca de 8 bytes de uma única vez => três
últimos bits de endereçamento sempre iguais a "000".
− Poucas máquinas possuem um espaço de endereçamento distinto para dados e
instruções
− Possibilidade de endereçar 232 bytes de programas e 232 bytes de dados
usando apenas 32 linhas de endereçamento.
− Uma operação de escrita não irá sobrescrever a área de programa.
− Comportamento da memória:
− Um LOAD após um STORE na mesma referência de memória pode
não retornar o valor previamente armazenado !! => reorganização das
microinstruções (estrutura superescalar); sistema multiprocessado com memória
comum.
5.1.3 Registradores
99
N (negativo), Z (zero), V (overflow), C (carry), A (carry auxiliar), P
(paridade − geralmente quando o resultado possui uma paridade par)
− Outros bits: modo da CPU (kernel ou usuário), Trap (ou Trace,
utilizado para debugar), nível de prioridade da CPU, interrupção,...
5.1.4 Instruções
100
segmento => os programas "enxergam" um endereçamento linear de 232 bytes.
Palavras de 32 bits armazenadas no formato little endian (bytes mais baixos nos
endereços mais baixos).
− Registradores:
101
− Arquitetura SPARC introduzida em 1987 pela SUN (máquina de 32 bits) =>
RISC
− UltraSPCARC II: 64 bits, baseada na versão 9 da arquitetura.
− Memória linear de 264 bytes => nenhuma máquina realmente implementa o
total da memória => armazenamento defaul é big endian, podendo ser alterado
por um bit na PSW.
− Dois grupos de registradores:
− 32 registradores de ponto flutuante
− Armazenam valores de 32 bits (precisão simples) ou 64 bits
(precisão dupla).
− Podem ser combinados para armazenar valores de 128 bits
(precisão quadrupla).
− 32 registradores de uso geral de 64 bits: chamados de R0 a R31
102
− A chamada de um procedimento esconde o conjunto antigo de
registradores e fornece um novo conjunto decrementando CWP.
103
− Nível ISA não comum.
− Modelo de memória idêntico ao IJVM mas com o acréscimo de mais uma
região => ordenamento em big endian.
− Quadro de variáveis locais
− Pilha de operandos
− Área de método
− Área de constantes
− Heap => utilizada para armazenar objetos muito grandes ou dinâmicos.
− Não possui registradores de uso geral que podem ser carregados ou
descarregados por controle do programa => máquina puramente de pilha.
104
5.2.4 Tipos de Dados do UltraSPARC II
105
− As instruções podem ou não ter o mesmo tamanho e não possuem uma
relação direta com o tamanho da palavra da CPU.
− Instruções de mesmo tamanho: facilidade de implementação e
decodificação => geralmente desperdiçam espaço.
− Critérios:
− Tamanho da instrução
− Espaço suficiente no formato para conter todas as operações desejadas
(OPCODE) => espaço livre para aumentar a quantidade de operações no futuro.
− Número de bits utilizados no campo de endereçamento. Compromisso
entre números de bits e resolução da memória.
106
− Supondo que esta mesma máquina precise ter:
− 15 instruções de três endereços;
− 14 instruções de dois endereços;
− 31 instruções de um endereço;
− 16 instruções sem endereçamento
107
− Instruções de dois operandos: Se um estiver na memória o outro deve estar em
um registrador.
− Formato simples
− Todas as instruções utilizam um OPCODE de 1 byte.
108
109
5.4 Endereçamento
110
− A palavra da memória é referenciada como um offset a partir de um
registrador.
− Endereço fornecido por um registrador+offset
MOV AL,[BX+0020]
111
− Necessidade de fornecer o endereço para o alvo do salto.
− Endereçamento direto => endereço fornecido na própria instrução.
− Endereçamento por registrador => flexibilidade e fonte de erros.
− Endereçamento indexado => flexibilidade e fonte de erros.
− Endereçamento relativo => fornece um offset (positivo ou negativo)
utilizando como base o valor atual de PC.
112
5.4.12 Modos de Endereçamento do UltraSPARC II
113
5.4.14 Discussão sobre modos de Endereçamento
114
− A maioria das CPUS fornecem flags indicando o resultado da última instrução
executada: C, P, Z, N, O, A
− Comparação de dois números:
− Número com sinal ou sem sinal
− Máquinas com formato de instrução de três endereços: dois endereços
para os argumentos e o terceiro indicando a posição do salto.
− Máquinas com formato de instrução de dois endereços: Duas instruções
para executar o salto condicional: Primeira para efetuar a comparação e a
segunda para efetuar o salto.
5.5.7 Entrada/Saída
115
5.5.8 Instruções do Pentium II
116
5.5.9 Instruções do UltraSPARC II
117
5.5.10 Instruções do JVM
− 226 Instruções
118
5.5.11 Comparação entre conjuntos de Instruções
− Pentium II
− Máquina CISC de 32 bits de dois endereços
− Modos de endereçamento peculiares e irregulares
− Várias instruções para acessar a memória
−UltraSPARC II
− Máquina RISC de 64 bits de três endereços
− Arquitetura LOAD/STORE
− Poucos modos de endereçamento
− Conjunto de instruções compacto e eficiente
− JVM
− Máquina de pilha (stack)
− Praticamente sem modos de endereçamento
− Conjunto de instrução muito regular e de densa codificação
119
5.6.2 Procedimentos
− Principal técnica utilizada em programas estruturados
− Um procedimento altera o fluxo do programa => Ao final do procedimento o
programa volta ao ponto da chamada ou na instrução após a chamada.
− Procedimentos recursivos => procedimento capaz de chamar ele mesmo.
120
5.6.3 Co−Rotinas
5.6.4 Traps
121
5.6.5 Interrupções
122