o nível isa - orium.pworium.pw/univ/lei/ac/slides/t-03-nivel_isa.pdf · arquitectura de...

Post on 27-Mar-2018

222 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

O Nível ISA

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

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

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)

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)

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

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

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)

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…

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

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

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.

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

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

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

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.

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

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)

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

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

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

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

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

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

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

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

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

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

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

top related