28
O Nível ISA Modelo de programação Arquitecturas CISC e RISC Introdução ao IA-32 da Intel

O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Embed Size (px)

Citation preview

Page 1: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

O Nível ISA

Modelo de programaçãoArquitecturas CISC e RISCIntrodução ao IA-32 da Intel

Page 2: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 74

Nível ISA (Instruction Set Architecture)

�Tipos de dados� Inteiros (1, 2, 4 ou 8 bytes)

�Servem também para representar endereços

� Números em vírgula flutuante (4, 8 ou 10 bytes)

� Não tem dados estruturados, como vectores�Apenas dados reservados (alocados) continuamente em memória

�Operações� Aritmética sobre dados em registos ou memória

� Transferir dados entre registos e memória�Load – carregar dados de memória para um registo

�Store – guardar o conteúdo de um registo em memória

� Controlo do fluxo de execução�Saltos condicionais e incondicionais

�Chamadas a subrotinas

Page 3: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 75

CPU

Máquina virtual

PC

Registos

Memória

Código máquina

do programa

Dados do programa

Dados do S.O.

Endereços

Dados

Instruções

Pilha

Códigos de

Condição

(flags)

Page 4: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 76

Sincronizar os circuitos

�Os circuitos funcionam ao ritmo de um relógio:

�Marca com impulsos eléctricos o ritmo de funcionamento de todos os componentes (transições de estado)

�Marca quando os componentes podem interactuar

�Garante que os vários sinais (bits) são enviados e recebidos no instante devido

�Ex: um componente não lê o que está no BUS antes que algo válido lá tenha sido colocado

�O relógio gera um determinado número de impulsos por segundo: ciclos/segundo ou frequência (Hz)

Page 5: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 77

Relógio vs velocidade do computador

�A frequência do relógio não é o único factor na velocidade de funcionamento de um computador!

�O tempo de execução de determinado programa depende de:

� Número de instruções (tamanho do programa)

� Tempo de execução de cada instrução (número de ciclos de relógio)

� Tempos de espera pela memória

� Tempos de espera pelas Entradas/Saídas

Page 6: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 78

Ordem de tempos de acesso

�CPU

� cada instrução � 1, 2, … ciclos de relógio

�Memória

� cada acesso � dezenas de ciclos

�Periféricos

� cada operação de Entrada/Saída (I/O) � muitas dezenas, centenas, ou mais, de ciclos

Page 7: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 79

Tempo de execução das instruções

�Um programa pode executar mais rápido se o CPU o executar em menos tempo:

Tempo = nº de instruções x nº de ciclos x tempo

programa instrução ciclo

�Menor Tempo se:

�Menos instruções � o CPU implementa as mais variadas operações de que o programa necessita

� Instruções mais rápidas � demoram menos ciclos e/ou cada ciclo pode ser mais curto (mais Hz)

Page 8: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 80

Complexidade dos CPU

�A complexidade dos CPU é influenciada por:� Tipos de instruções

� Número de operandos

� Tipos de operandos

�Modos de endereçamento dos operandos

� etc.

�O desempenho do CPU é influenciado por essa complexidade:� Descodificação mais complexa (recurso a micro-código)

� Instruções de tamanho variável

� Resolução do endereço dos operandos e obtenção do seus valores mais complexa/demorada

�Mais complexidade � mais circuitos� CPU maior, mais lento, consumindo mais energia, etc…

Page 9: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 81

Até aos anos 70/80

�A abordagem foi suportar directamente no hardware (no CPU):

�Os mais variados tipos de instruções que os programas podem necessitar

�As mais variadas operações aritméticas e lógicas…

� Cada instrução suporta os mais variados operandos que o programa pode necessitar

�Registos, memória (com vários modos de endereçamento), …

�A prioridade é reduzir o tamanho dos programas

� Claro que também se procura reduzir o tempo de execução de cada instrução

Page 10: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 82

RISC vs CISC

�RISC – Reduced Instruction Set Computer

�Nova abordagem (anos 70/80) no desenho dos CPU. Simplificar para conseguir melhor desempenho:� Suportar um pequeno conjunto de instruções: as mais usadas

� Instruções de tamanho fixo: Fetch mais simples e eficiente

� Descodificação mais simples e eficiente

�Menos instruções a optimizar, a execução pode ser mais eficiente

�Usar espaço no CPU para mais registos e mais cache

� Permitir explorar mais optimizações…

�A abordagem antiga passou a ser referida por CISC –Complex Instruction Set Computer

Page 11: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 83

Principais características

�CISC

�Muitas instruções

�Muitos modos de endereçamento

� Instruções demoradas

�Muitas acedem a memória

� Poucos registos

�RISC

� “Poucas” instruções

� Poucos modos de endereçamento

� Arquitecturas load/store

� Só as instruções load e store acedem a memória

� Muitos registos

� A menor complexidade do CPU abre a oportunidade para optimizações: diminuir o consumo de energia, optimizar a execução (ex: pipelines), etc.

Page 12: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 84

Exemplo nas duas abordagens

�Computar: C = A + B

CISC:

load R1, [A]

add R1, [B]

store [C], R1

ou mesmo:

add [C], [A], [B]

�Qual será mais eficiente?

�RISC se cada instrução demorar menos tempo!!

RISC:

load R1, [A]

load R2, [B]

add R1, R2

store [C], R1

Page 13: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 85

Exemplo de arquitectura RISC

�Família SPARC/UltraSPARC da SUN (usado em workstations e servidores)

�MIPS (usado em sistemas embebidos e consolas)

�PowerPC da Apple, IBM e Motorola (usado nos Macsaté 2006)

�Exemplo de um conjunto de instruções: SPARC

� Todas têm o mesmo tamanho

PC-RELATIVE DISPLACEMENT CALL4

302

PC-RELATIVE DISPLACEMENT BRANCH3

222

A

1

OP

3

COND

4

IMMEDIATE CONSTANT SETHI2

222

DEST

5

2 5 6 5 1 8 5

OP

3

Immediate1b DEST OPCODE SRC1 1 IMMEDIATE CONSTANT

3 Register1a DEST OPCODE SRC1 0 FP-OP SRC2

Format

Page 14: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 86

Exemplo de arquitectura CISC

� IA-32 da Intel

� O conjunto de instruções é complexo

� Assim como a sua representação em código máquina

� Exemplo: Pentium II

PREFIX

INSTRUCTION

Which operand is source?

Byte/word

SCALE INDEX BASE

MOD REC R/M

OPCODE MODE SIB DISPLACMENT IMMEDIATE

0 - 5

6 3321Bits Bits

332Bits

Bytes

1

1 - 2 0 - 1 0 - 1 0 - 4 0 - 4

Page 15: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 87

RISC vs CISC

�Na realidade a fronteira entre estas duas filosofias é cada vez mais ténue

� Arquitecturas CISC convertem o seu código em micro-operações RISC

� Arquitecturas RISC actuais têm quase tantas instruções quando as CISC

� Porque é que ainda são denominadas de RISC?

�A diferença está essencialmente no desenho do CPU

�Como iremos ver nas próximas aulas existem diferenças ao nível do suporte para modos de endereçamento, teste de condições, subrotinas, etc.

Page 16: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 88

Que ISAs vamos estudar em AC?

�Em AC vamos trabalhar maioritariamente sobre o ISA IA-32 da Intel

� Este ISA que manipula endereços e dados de 32 bits foi a base das arquitecturas Intel e compatíveis desde 1986 até meados nos anos 2000

�Mesmo agora os ISA de 64 bits (Intel64 ou AMD x86-64) usados nas arquitecturas mais recentes são uma expansão do IA-32

�Apesar de incidirmos essencialmente sobre o IA-32 também falaremos de arquitecturas RISC sempre que seja pertinente

�Por fim dedicaremos algumas aulas ao Java bytecode e à JVM

Page 17: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 89

� Intel- (Integrated Electronics Corporation)

�Fundada em 1968 por funcionários vindos da FairchildSemiconductor

� Na origem (com a Texas Instruments) dos circuitos integrados (microchip)

�Micro-processador

� Um único circuito integrado contendo todas as funcionalidades da unidade central de processamento (CPU) do computador

�Intel 4004 – microprocessador de 4bits para calculadoras

Nota: Já existiam processadores e computadores!

Intel e os circuitos integrados (CI)

Page 18: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 90

�Cada nova geração aumentou a dimensão dos dados e de endereçamento�8080 – 8bits de dados /16bits de endereços

�8086/8088 – 16bits (8 no 8088)/20bits (usados nos 1ºs IBM/PC)

�80186 - 16bits/20bits (não usado nos IBM/PC)

�80286 – 16bits/24bits (usado no IBM/AT)

�80386 – 32bits/32bits (usado no IBM/PS2)

�80486, Pentium (P5), Pentium Pro (P6), …

�Core, Core 2, Core i7 – 64bits/48bits (também usado nosPentiums mais recentes)

�Existe compatibilidade com os anteriores

�Continuam a existir instruções com dados de 8bits no 80386, Pentium, Core duo, e todos os outros

O caso dos µ-processadores Intel

Page 19: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 91

�A densidade dos componentes nos CI duplica a cada 2 anos

�A mesma “lei” tem sido extrapolada para:

�Velocidade dos CPU

�Capacidade das memórias e discos(não para as suas velocidades!)

Observação (“Lei”) de Moore

Page 20: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 92

�Arquitecturas muito complexas e difíceis de compreender e programar

�Os programadores (e os compiladores) “refugiam-se”num subconjunto do ISA …

� Instruções de tamanho variável (de 1 a 18? bytes…)

� Internamente, existe uma “tradução” para micro-código, mais simples�Este é realmente executado pelo CPU

�Extensão do IA-32 para 64 bits:�AMD com AMD64 (Intel com Intel64 (antigo EM64T))

�Não confundir com IA-64, uma arquitectura diferente que não suporta código legado. �Processadores da família Itanium

O resultado desta evolução

Page 21: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 93

Medidas de capacidade duma arquitectura

�O número de bits do endereço determina a capacidade máxima de memória endereçável

�O número de linhas no bus de endereços determina a capacidade máxima de memória realmente acessível

�O número de bits dos registos gerais determina o tamanho máximo dos dados operados pelas instruções

�O número de linhas no bus de dados determina a capacidade máxima de transferência dos dados em cada acesso à memória

Page 22: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 94

Exemplo do PC com Intel 8086

�Processador usado nos primeiros IBM PC

�CPU com 16 bits de dados e de endereços, com bus de 20 bits para endereços e 16 bits para dados:

� Dimensão dos registos de endereços, registos de dados e número de linhas no BUS de dados: 16

� Dimensão do MAR, bus de endereços: 20

� Endereça até 1M (220) de células de memória

� Transfere e opera até 2 Bytes de cada vez

Page 23: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 95

ALU

Registos de dados

Registos de endereços

IP ou PC

BUS do sistema

Fila de 6 bytes como IR

Diagrama do 8086

Page 24: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 96

Exemplo Intel IA-32 no PC

�CPU com 32 bits de dados e de endereços, com BUS de 32 bits:

� Dimensão dos IP, MAR, registos de dados, número de linhas no BUS de dados e no de endereços: 32

� Endereça até 4G de células de memória

� Transfere e opera até 4bytes de cada vez

Page 25: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 97

Exemplo AMD64/Intel 64 no PC

�CPU com registos e BUS de 64bits para dados e de 48bits para endereços:

� Dimensão dos IP, registos de dados, número de linhas no BUS de dados: 64

�MAR e bus de endereços: 48 (actualmente) poderá ir até 64

� Endereça até 256T (Tera = 240) de células de memória.

�Poderá ir até 16E (Exa = 260)

� Transfere e opera até 8bytes de cada vez

Page 26: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 98

�Registos gerais no IA-32:

�No assembly: EAX, EBX, ECX, EDX

�Continuam a existir instruções com dados de 16 e 8bits, com os mesmos códigos do 8086

�Registo de Flags ou estado:

�Reporta várias situações que podem ser testadas com instruções específicas (Overflow, Carry, etc…)

�Registos especiais: EIP (instruction pointer ou program counter), ESP, etc …

AH (8bits) AL (8bits)

EAX (32bits)

AX (16bits)

Registos do IA-32

Page 27: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 99

axax

cxcx

bxbx

dxdx

eax

ebx

ecx

edx

H L

32 bits

16 bits

8 bits

ipip

spsp

bpbp

flagsflags

eip

esp

ebp

eflags

Registos do IA-32

Page 28: O Nível ISA - orium.pworium.pw/univ/lei/ac/slides/T-03-Nivel_ISA.pdf · Arquitectura de Computadores (2008/2009): O Nível ISA 77 Relógio vsvelocidade do computador A frequência

Arquitectura de Computadores (2008/2009): O Nível ISA 100

Tipo de instruções do IA-32

�Mover dados

� Entre registos

�Memória-registo (Load) e registo-memória (Store)

�Aritmética sobre inteiros

�Aritmética sobre vírgula flutuante

�Saltos condicionais e incondicionais

�Manipulação de subrotinas

�Entradas/Saídas

� Instruções vectoriais