![Page 1: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/1.jpg)
Arquitetura de ComputadoresProf. João Bosco Jr.
![Page 2: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/2.jpg)
Unidade IIAula 1
Nível ISA
![Page 3: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/3.jpg)
Nível ISA
● Posicionado entre a microarquitetura e o SO● Define a arquitetura (Conjunto de Instruções)● É a interface entre o Software e o HW● É a linguagem intermediária comum
![Page 4: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/4.jpg)
Nível ISACompatibilidade
● Regra geral– Novos projetos devem ser compatíveis com os
antigos. Significa Implementar o mesmo conjunto de instruções do sistema antigo
– A novidade se dará através de novas instruções e registradores.
– Caso Intel Itanium (2001)● Consequências– Família de processadores– Ex.: x86
● 386,486,Pentium,Pentium II, Pentium III, Pentium IV, etc
![Page 5: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/5.jpg)
Nível ISAFamilia x86
● 386● 486 (Pipeline RISC, cache L1 integrada)● Pentium (Super Escalar, MMX, PAE)● Pentium II/III ( Cache L3, SSE)● Pentium IV (Hyper-Threading, SSE2)– SSE (Streaming SIMD Extensions)
![Page 6: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/6.jpg)
Nível ISA
● Características de um bom nível ISA– Deve ser fácil de implementar com eficiência
● Diz respeito ao Hardware● Custo X Tecnologia (atuais e futuras)
– Fácil de Gerar bom código● Diz respeito ao software
![Page 7: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/7.jpg)
Nível ISAVisão Geral
● O que é?– Como a máquina se apresenta ao programador– Código gerado pelo compilador
● Em alguns casos o compilador tem que se preocupar em como as instruções são executadas, para poder tirar proveito dos recursos do hardware.
● A documentação é fornecida pelo fabricante● EX.: Intel 64 and IA-32 Architetures Software
Developer Manual● Modos de Execução– Kernel (todas as instruções), usuário (restrito)
![Page 8: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/8.jpg)
Nível ISARegistradores
● Visíveis no nível ISA– Registradores de controle
● Alguns são visíveis ou R/W somente no modo núcleo– Registradores de uso Geral
● Armazenamento Temporário– Registradores Especiais
● Controle da Pilha– Registradores de Status
● Invisíveis no nível ISA– Endereçamento
![Page 9: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/9.jpg)
Nível ISARegistradores (cont...)
● Program status word (PSW)– Cada bit representa um status– N – A operação deu resultado negativo– Z – A operação deu resultado zero– V – Overflow– C – Carry – Out (Vai um)– P – Resultado teve paridade par
● Quando o numero de bit 1 for par P=1
![Page 10: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/10.jpg)
Nível ISARegistradores (cont...)
● Intel PSW=EFLAGS– OF – Overflow Flag– ZF – A operação deu resultado zero– SF – Signal Flag – CF – Carry Out Flag (Vai um)– PF – Parity Flag
ax = 0x200;ax = cx * 0x200;If (ax == 0x1000) ax = 0x3000;else ax = 0x2000;
mov ax, 0x200mul cx
cmp ax, 0x1000je _AX_3000jmp _AX_2000
_AX_3000:mov ax, 0x3000jmp _Sai
_AX_2000:mov ax, 0x2000_Sai:REF: Developer Manual pg 3-22
![Page 11: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/11.jpg)
Nível ISARegistradores (cont...)
● Ciclo de Busca da Instrução
![Page 12: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/12.jpg)
Nível ISARegistradores
![Page 13: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/13.jpg)
Nível ISAInstruções
● Estudo de Caso Pentium 4– Compatibilidade 80XX (8086, 8088, 80386)– Modos
● Real (8088)● Modo 8086 Virtual● Modo protegido
– Modo 0 – Modo núcleo (usado pelo SO)– Modo 3 – Usados pelos programas– Modos 1 e 2 raramente são usados
– Registradores● Uso Geral (EAX (AX (AH,AL), EBX, ECX, EDX)● Especiais:
– ESI, EDI – Tratamento de cadeias por hardware– EBP, ESP – Apontam para base e topo da pilha
● Flags (EFLAGS), Contador de Programa (EIP)● “Fosseis”: CS, SS, DS, FS,ES,GS
![Page 14: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/14.jpg)
Nível ISAInstruções
![Page 15: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/15.jpg)
Nível ISATipos de dados
● Representação de dados usando bits● Tipos numéricos– Inteiros
● Com Sinal● Sem Sinal
– Ponto Flutuante● IEEE 754
● Tipos Não Numéricos– Booleanos (Teoricamente precisa de bit)
● 0 = Falso, X = verdadeiro– Caracteres
● ASC II, Unicode– Cadeias de Caractere
![Page 16: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/16.jpg)
Nível ISATipos de dados
![Page 17: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/17.jpg)
Nível ISAFormatos de Instrução
● OPCODE (código da operação)● Informações adicionais– Operando, endereço do operando, etc
![Page 18: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/18.jpg)
Nível ISAFormatos de Instrução
● Expansão de OPCODES● n+k : k bits p/ opcodes e n bits p/ endereço– Consequencia: 2^k opcodes x 2^n endereços
● A ideia é variar a quantidade de bits p/ opcode– Ex (16 bits) Instruções começando:
● 0x0(0000) a 0xE(1110): opcode de 4 bits● 0xF0(11110000) a 0xFD(11111101): opcode de 8 bits● 0xFE0 a 0xFFE: opcode de 12 bits● 0xFFF a 0xFFFF: opcode de 16 bits
![Page 19: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/19.jpg)
Nível ISAFormatos de Instrução
● Expansão de OPCODES
![Page 20: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/20.jpg)
Nível ISAModos de Endereçamento
● Especifica onde estão os operandos● Imediato– O operando já é parte da instrução– Ex: mov EAX,#32
● Direto– Na instrução é informado o endereço do operando
na memória– Ex: mov EAX, $0x93
● Registrador– Na instrução é informado o registrador que contém o
operando
![Page 21: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/21.jpg)
Nível ISAModos de Endereçamento
● Indireto de Registrador– O registrador informado na instrução contém o
endereço do operando, ou seja o registrador tem um ponteiro.
● Indexado– Neste modo a instrução, para ter acesso a um
operando, deve conter um endereço base da memória e um deslocamento em relação ao endereço base.
![Page 22: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/22.jpg)
Nível ISATipos de Instrução
● Movimentação (Cópia) de dados● Diádicas – Dois operandos produz um resultado
● Monoádicas– Apenas um operando produz o resultado
● Comparações e desvios condicionais– Alteram a sequencias de instruções a ser executada
● Chamadas de procedimento● Controle de laço● Entrada e Saída
![Page 23: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/23.jpg)
Nível ISA - Tipos de Instrução Movimentação de Dados
● Movimentações Possíveis– Registrador → Registrador– Memória → Registrador– Registrador → Memória– Memória → Memória
● Arquitetura RISC– LOAD, STORE
● Algumas instruções pode indicar a quantidade de dados a ser movido (bits até palavras)
![Page 24: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/24.jpg)
Nível ISA - Tipos de Instrução Comparações e Desvios (x86)
● CMP – Comparação– CMP EAX,EBX
● JE – Pula se igual (PSW (EFLAGS), ZF=0)– JE Label
● JNE – Pula se diferente (PSW(EFLAGS),ZF=1)– JNE Label
● JL – Pula se menor (PSW(EFLAGS),SF=0)– JL Label
● JG – Pula se maior (PSW(EFLAGS),SF=0)– JG Label
![Page 25: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/25.jpg)
Nível ISA - Tipos de Instrução Comparações e Desvios (x86)
section .data f_maior db 'maior' f_menor db 'menor' f_igual db 'igual' f_buf_len: equ 5 sys_write: equ 4 sys_close: equ 6
section .text global _start
_start: mov eax,100 mov ebx,100 cmp eax,ebx jg maior jl menor je igual
maior: mov ecx,f_maior jmp imprime
menor: mov ecx,f_menor jmp imprime
igual: mov ecx,f_igual jmp imprime
imprime: mov eax, sys_write mov ebx, 1 mov edx, f_buf_len int 80h
mov eax , 1 xor ebx, ebx int 80h
● Desvia para um label específico● Não salva o PC
![Page 26: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/26.jpg)
Nível ISA - Tipos de Instrução Procedimento/Função (CALL)
maior: mov ecx,f_maior call imprime jmp fimmenor: mov ecx,f_menor call imprime jmp fimigual: mov ecx,f_igual call imprime jmp fimfim: mov eax , 1 xor ebx, ebx int 80himprime: mov eax, sys_write mov ebx, 1 mov edx, f_buf_len int 80h ret
section .data f_maior db 'maior' f_menor db 'menor' f_igual db 'igual' f_buf_len: equ 5 sys_write: equ 4 sys_close: equ 6
section .text global _start
_start: mov eax,100 mov ebx,100 cmp eax,ebx jg maior jl menor je igual
● Desvia para um label específico● salva o PC● Instrução de retorno RET
![Page 27: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/27.jpg)
Nível ISA - Tipos de InstruçãoEntrada e Saída
● Controlador de Dispositivo● Faz a interface entre o dispositivo e o barramento
● E/S programada com espera ocupada● 1: Monitora o estado (registrador interno: Bit READY) ● 2: Envia o dado (uma palavra ou byte)● 3: Espera o resultado (registrador interno: Bit READY)● Usa CPU mesmo quando não está transferindo
● E/S por interrupção– Para cada byte ou palavra
● 1: Verifica o estado (registrador interno: Bit READY) ● 2: Liga a interrupção (registrador interno: Bit INT)
– Se não estiver pronto● 3: Aguarda interrupção (Barramento de controle)● 4: Le ou envia o dado
![Page 28: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/28.jpg)
Nível ISA - Tipos de InstruçãoEntrada e Saída
● E/S por DMA– Informações são passadas para o controlador DMA
● o dispositivo, ● endereço de memória destino/origem● Quantidade de dados (contagem)● Tipo de operação (leitura ou escrita)
– Decrementa a contagem a cada transferência– Interrompe a CPU quando chagar a zero
![Page 29: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/29.jpg)
Nível ISAFluxo de Controle
● Desvios(JMP,GOTO)● Procedimentos(CALL)● Co-rotinas● Exceção● Interrupções
PC = f(t) Fluxo normal de execução
PC = f(t) Fluxo desvio de Fluxo
Já vimos!
![Page 30: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/30.jpg)
Fluxo controleCo-rotinas
● Procedimento– Que chama– Chamado
● Rotinas– Executam alternadamente
![Page 31: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/31.jpg)
Fluxo de ControleExceções e Interrupção
● O Fluxo é desviado automaticamente para uma posição de memória onde estará o tratador.
● Exceções– São causadas pelo programa (Software)– Divisão por zero– Falha de proteção– Instrução ilegal
● Interrupções– São causadas pelo hardware
![Page 32: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/32.jpg)
Nível ISAProjeto (5 + 5 pontos)
● Projetar uma arquitetura (5,0):– A arquitetura deve ter no máximo 15 instruções– Instruções (Mnemônico, OPCODE, OPERANDOS)– Registradores e Memória– Traduzir um programa de alto nível
● Extra:– Montador (Gerador do código HEX) – 1,0– Emulador da arquitetura usando o HEX de
preferência – 4,0
![Page 33: Arquitetura de Computadores - boscojr.com · 486 (Pipeline RISC, cache L1 integrada) ... – Na instrução é informado o registrador que contém o operando. Nível ISA Modos de](https://reader031.vdocuments.pub/reader031/viewer/2022022708/5be59d9209d3f288458bf03a/html5/thumbnails/33.jpg)
Nível ISAProjeto (5 + 5 pontos)
● Exemplo
Op-code Mnemonico
Função Exemplo
001 LOAD Carrega o valor do operando no acumulador
LOAD 10
010 STORE Armazena o valor do acumulador no endereço especificado
STORE 8
011 ADD Adiciona o valor especificado ao acumulador
ADD #5
100 SUB subtrai o valor do operando do acumulador
SUB #1
101 EQUAL se o valor do operando é igual a valor do acumulador pula a próxima instrução
EQUAL #20
110 JUMP Pula para uma instrução especificada setando o PC para o valor especificado pelo operando.
JUMP 6
111 HALT Para a Execução HALT