organização funcional - escola superior de … organização funcional modelo de arquitectura de...

17
Organização Funcional Modelo de Arquitectura de Von Neuman 26 Organização Funcional Modelo de Arquitectura de Von Neuman 27 CPU – Unidade Central de processamento (central process unit) • “Onde tudo se passa”; • Leitura de Instruções da memória; • Execução de Instruções; • Leitura de Dados; • Escrita de Resultados; Em sistemas de pequena dimensão, como o PC, utiliza-se um microprocessador. Memória Principal • Dispositivo com capacidade para armazenar informação digital binária, normalmente organizada em células de 8 bits ; • Armazena dados, instruções e resultados; • Dividida em dois tipos: RAM – Ramdom Access Memory e ROM – Read Only Memory;

Upload: phungdat

Post on 04-Oct-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

1

Organização Funcional

Modelo de Arquitectura de Von Neuman

26

Organização Funcional

Modelo de Arquitectura de Von Neuman

27

CPU – Unidade Central de processamento (central process unit)• “Onde tudo se passa”;• Leitura de Instruções da memória;• Execução de Instruções;• Leitura de Dados;• Escrita de Resultados;

Em sistemas de pequena dimensão, como o PC, utiliza-se um microprocessador.

Memória Principal

• Dispositivo com capacidade para armazenar informação digital binária, normalmente organizada em células de 8 bits ;• Armazena dados, instruções e resultados;• Dividida em dois tipos: RAM – Ramdom Access Memory e ROM – Read OnlyMemory;

Page 2: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

2

Organização Funcional

Modelo de Arquitectura de Von Neuman

28

Unidades de I/O

São utilizados para estabelecer a comunicação com o mundo exterior (periféricos);

Exemplos: Teclado, Disco, Rato

CLK- Clock

Define a frequência de operação do sistema. É utilizado para efectuar a sincronização das operações;

Bus de Sistema

• Conjunto de linhas (ligações) que transportam informação digital binária;• Permitem a comunicação entre o CPU, a memória e as unidades de I/O;• Este Bus é constituído pelo Bus de Dados, Bus de Endereços e Bus de Controlo;

Organização Funcional

Modelo de Arquitectura de Von Neuman

29

Bus de Dados

Conjunto de linhas (ligações físicas) por onde se transporta a informação digital binária (instruções, dados, resultados) entre o CPU, memória e I/O (bidireccional).

A largura do bus de dados é dado pelo número de linhas do bus ou pelo numero de bits, “tamanho”, do microprocessador.

323280486

163280386SX

161680286

16168086

8168088

Bus dados externo

Bus dados interno

Modelo

Page 3: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

3

Organização Funcional

Modelo de Arquitectura de Von Neuman

30

Bus de Endereços

Conjunto de linhas (ligações físicas) que transportam o endereço das células de memória ou dos portos de I/O (unidireccional). A largura do bus de endereços é dado pelo número de linhas do bus ou pelo numero de bits, e define a capacidade de endereçamento.

4Gb3280486

4Gb3280386SX

16Mb2480286

1Mb208086

1Mb208088

Capacidade Endereçamento

N.º Linhas (N)ModeloPara N bits consigo uma capacidade de endereçamento de 2N.

1K=210=10241M=220=1024K1G=230=1024M

Organização Funcional

Modelo de Arquitectura de Von Neuman

31

Bus de Controlo

Contém os sinais necessários para uma correcta implementação do protocolo de comunicação. Podemos referir como exemplo a comunicação entre CPU, memória e I/O.

M/IO’ – Controla o acesso à memória ou unidades de I/O.

RD’ – Operações de Leitura.

MemóriaI/O

CPU

WR’ – Operações de Escrita.

MemóriaI/O

CPU

Page 4: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

4

Organização Funcional

Armazenamento da Informação Digital Binária

32

A organização da memória é feita em células, normalmente constituídas por 8 bits. A cada célula é atribuído um endereço.Logo, a palavra do computador é igual à unidade de memória mínima endereçável.

Endereços00000h

00001h

Células de memória

O armazenamento de dados é baseado no modelo “LITLE ENDIAN”, que se traduz no facto dos bytes menos significativos serem armazenados nos endereços menos significativos.

Consideremos as seguintes variáveis

byte – 8 bits com valor BD(h) armazenado em 0000AhWord – 16 bits com valor AC19h armazenado em 00F0h.dword – 32 bits com valor 3A421F01h armazenado em 00FF0h

0000AhBD

….

000F0h19

000F1hAC

00FF0h01

00FF1h1F

00FF2h42

00FF3h3A

Organização Funcional

Organização da memória principal

33

CPU

00FA1h

Bus EndereçosA19..A0

Descodificador de

endereços

MEMW’

MEMR’

D0D7

Bus de Dados

Registo de

Dados

Células

byte

Page 5: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

5

Organização Funcional

Operação de leitura da célula de memória com endereço 00FA1h

34

• O CPU activa a linha de controlo• O CPU coloca o valor 00FA1h nas linhas A19-A0 do Bus Endereços.

MEMR

• A memória descodifica o endereço 00FA1h, activando a célula de memória correspondente.

• Por se tratar de uma operação de leitura ( activado) o conteúdo da célula activada é colocado no registo de dados.

MEMR

Estrutura interna do CPU (microprocessador) 8086

Blocos funcionais

35

Execution Unit (EU) Bus Interface Unit (BIU)

Registos: AX, BX, CX, DX, SP,BP, SI, DI

Registos de Segmento: CS, DS, SS, ESRegisto de Instrução: IP

Addressing Unit (AU)Controlo dos BusCalculo de Endereços

Instruction Prefetch QueueFila de espera das instruções (6 bytes)

Registo de instruções

Control Unit (CU)

Registo de Flags

ALU (16bits)

Operandos

Page 6: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

6

Estrutura interna do CPU (microprocessador) 8086

Registos de uso genérico

36

ALAH

7 015 8

AX •AX registo de 16 bits•AH registo de 8 bits (8 bits + significativos)•AL registo de 8 bits (8 bits - significativos)•Registo acumulador•Implícito em algumas instruções

BLBH

7 015 8

BX •BX registo de 16 bits•BH registo de 8 bits (8 bits + significativos)•BL registo de 8 bits (8 bits - significativos)•Registo de Base•Normalmente utilizado para endereçar variáveis em memória.

Estrutura interna do CPU (microprocessador) 8086

Registos de uso genérico

37

CLCH

7 015 8

CX •CX registo de 16 bits•CH registo de 8 bits (8 bits + significativos)•CL registo de 8 bits (8 bits - significativos)•Registo acumulador•Implícito em algumas instruções como contador.

DLDH

7 015 8

DX•DX registo de 16 bits•DH registo de 8 bits (8 bits + significativos)•DL registo de 8 bits (8 bits - significativos)•Registo de Dados•Utilizado em algumas operações aritméticas.•Utilizado em instruções de I/O

Page 7: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

7

Estrutura interna do CPU (microprocessador) 8086

Registos de endereçamento

38

015

SP

•SP registo de 16 bits•Stack Pointer•Utilizado para referenciar variáveis na pilha do sistema.

BP

015 •BP registo de 16 bits•Base Pointer•Utilizado para referenciar parâmetros e variáveis locais em subrotinas

Estrutura interna do CPU (microprocessador) 8086

Registos de indexação

39

015

SI

•SI registo de 16 bits•Source Index

DI015

•DI registo de 16 bits•Destination Index

Estes registos são utilizados para referenciar variáveis em memória, bem como em algumas instruções específicas no tratamento de cadeias de caracteres.

Page 8: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

8

Estrutura interna do CPU (microprocessador) 8086

Registos especiais

40

CPAZSTIDO

0123456789101112131415

Registo de FLAGS (estado)

C – Carry – Ultimo transporte em operações aritméticas;P – ParidadeA – Auxiliary Carry – transporte intermédio em operações com números BCDZ – Zero – Resultado=0 da ultima operação aritmética; Lógico.S – Sinal – Sinal do resultado de uma adição ou subtracçãoT – Trap – Utilizado para debugging de softwareI – InterruptD – Direction – Utilizado em manipulações de strings.O – Overflow – Referencia a existência de transbordo.

Estrutura interna do CPU (microprocessador) 8086

Registos especiais

41

015

Registo apontador de instrução

•Instruction Pointer (IP)•Registo de 16 bits•Contém o endereço da próxima instrução a ser executada

Registos de segmentos

No 8086 existem 4 registos de segmentos, todos eles de 16 bits:

• CS – “Code Segment” – Segmento de código - Armazena as instruções do programa

CS:[IP] – Ponteiro para a próxima instrução a ser Executada

Page 9: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

9

Estrutura interna do CPU (microprocessador) 8086

Registos especiais

42

Registos de segmentos

• DS – “Data Segment” – Segmento de dados

Armazena dados/resultados relativos a variáveis

DS:<deslocamento>

• SS – “Stack Segment” – Segmento de pilha

Suporte à Programação estruturada: Subprogramas; passagem de parâmetros

SS:<deslocamento>

• ES – “Extra Segment” – Segmento extra

Segmento auxiliar, utilizado por exemplo na manipulação de algumas cadeias de caracteres

Estrutura interna do CPU (microprocessador) 8086

Segmentos de memória

43

Organização da memória em segmentos

Endereço lógico

O endereço lógico pode tomar um dos seguintes formatos:

<segmento>:[<deslocamento>]<segmento>:[<offset>]<segmento>:[<displacement>]

Endereço físico/línear

O endereço físico/linear pode ser determinado da seguinte forma:

Endereço físico/línear

+ deslocamento

Segmento *16

Page 10: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

10

Estrutura interna do CPU (microprocessador) 8086

Segmentos de memória

44

Sobreposição de segmentos

ES – Extra segment

Fim

52B90

Inicio

62B8Fh

+FFFFh

52B90h

Fim

5D270

Inicio

6D26Fh

+FFFFh

5D270h

SS – Stack segment

62B8F

Estrutura interna do CPU (microprocessador) 8086

Segmentos de memória

45

Endereços dos segmentos

Page 11: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

11

Instruções do CPU 8086

Formato geral

46

<OPERAÇÃO> [<DESTINO>] , [<ORIGEM>]

Codificação de programas em Assembly

• Cada operação é representada por uma mnemónica • Os operandos são representados por identificadores

Exemplo:

MOV AX,BX

• MOV – mnemónica que representa a operação (cópia).• AX – Registo interno do CPU (Destino)• BX – Registo interno do CPU (Origem)

A instrução copia o conteúdo do registo BX para o registo AX.

Instruções do CPU 8086

47

Código máquina

• Codificação binária das instruções com base em operação + operandos (“OP-CODE”)

• De acordo com o tipo de instrução, a sua codificação pode ocupar vários bytes

Exemplo:

MOV AX,CX

• 89h codifica a operação MOV• C1h codifica os operandos AX,CX

Assim sendo, se efectuamos uma codificação em linguagem assembly esta tem de ser “traduzida” para código máquina. Esse compilador chama-se ASSEMBLER.

Page 12: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

12

Instruções do CPU 8086

48

Tipo de instruções quanto ao número de operandos

• 2 operandos

Exemplo:

MOV AX,CX Copia o conteúdo de CX para AX; AX:=CX;

• 1 operando

Exemplo:

INC AX Incrementa o conteúdo de AX; AX:=AX+1;

• 0 operandos

Exemplo:

CBW Converte o byte AL para a word AX;

Instruções do CPU 8086

49

Tipos de instruções de acordo com a função que realizam

Z, C, O, Na ← a + 1INC a

Z, C, O, Na ← a – 1DEC a

Z, C, O, Nax ← ax * bMUL b

Z, C, O, Na ← a / bDIV b

Z, C, O, Na ← a – b – CSBB a, b

Z, C, O, Na ← a – bSUB a, b

Z, C, O, Na ← – aNEG a

Z, C, O, N

Z, C, O, N

Bits de estado afectados

a ← a + b + CADC a, b

a ← a + bADD a, b

DescriçãoInstrução

Instruções Aritméticas

Page 13: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

13

Instruções do CPU 8086

50

Tipos de instruções de acordo com a função que realizam

Instruções lógicas

ai ← ai (i ∈ 0..N-1)COM a

ai ← ai ⊕ bi (i ∈ 0..N-1)XOR a, b

ai ← ai ∨ bi (i ∈ 0..N-1)OR a, b

ai ← ai ∧ bi (i ∈ 0..N-1)AND a, b

a2

b2

∧, ∨ou ⊕

a1

b1

∧, ∨ou ⊕

a0

b0

∧, ∨ou ⊕

aN-1

bN-1

∧, ∨ou ⊕

aN-2

bN-2

∧, ∨ou ⊕

. . .

a

b

. . .

Instruções do CPU 8086

51

Tipos de instruções de acordo com a função que realizam

Instruções de deslocamento

aN-1 a0. . .0

aN-1

n * [aiß ai+1 (i ∈ 0..N-2); aN-1ß aN-1]SAR a, n

n * [aiß ai+1 (i ∈ 0..N-2); aN-1ß 0]SHR a, n

aN-1 a0. . . 0

n * [ai+1ß ai (i ∈ 0..N-2); a0ß 0]SHL a, n

Page 14: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

14

Instruções do CPU 8086

52

Tipos de instruções de acordo com a função que realizam

Instruções de rotação

n * [ai+1ß ai (i ∈ 0..N-2); a0ß aN-1]ROL a, n

aN-1 a0. . .

aN-1 a0. . .

n * [aiß ai+1 (i ∈ 0..N-2); aN-1ß a0]ROR a, n

Instruções do CPU 8086

53

Tipos de instruções de acordo com a função que realizam

Instruções de rotação com carry

aN-1 a0. . .C

n * [aiß ai+1 (i ∈ 0..N-2); aN-1ß C; C ß a0]RORC a, n

n * [ai+1ß ai (i ∈ 0..N-2); a0ß C; C ß aN-1]RCL a, n

aN-1 a0. . .C

Page 15: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

15

Modos de endereçamento no 8086

54

Endereçamento por registo

Este tipo de endereçamento acontece quando os operandos das instruções são registos do CPU.

Exemplos:

MOV AX, BXMOV DL, AL

Utilização de registos de segmentos

A utilização de registos de segmento tem algumas restrições:• O registo de segmento CS (“code segment”) não pode ser utilizado como operando de destino. A instrução MOV CS, AX é incorrecta.

• Apenas um dos operandos pode ser um registo de segmento. A instrução MOV DS, CS é incorrecta.

Modos de endereçamento no 8086

55

Endereçamento em memória

Endereçamento imediato

Este tipo de endereçamento acontece quando o operando está contido na própria instrução.

Exemplo:

MOV CX,3064h

30h64hB9hInstrução CS:[IP]

6430CX

mmmmIP

nnnnCSp p p pm

+ mmmm

n n n n 0

ppppm+2

ppppm+1

ppppm

Page 16: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

16

Modos de endereçamento no 8086

56

Endereçamento em memória

Endereçamento directo

Este tipo de endereçamento acontece quando a instrução fornece o endereço em memória do operando

Exemplo: MOV AL,[001Fh]

YY

00h1FhA0hInstrução CS:[IP]

DS

YYAX

DS:[001Fh]

Segmento de Código

Segmento de Dados

Modos de endereçamento no 8086

57

Endereçamento em memória

Endereçamento Indirecto

Este tipo de endereçamento acontece quando o endereço do operando é obtido por:

Registo de base: [BX] ou [BP]

Registo de base + deslocamento: [BX+displ] ou [BX] displ ou displ [BX] ou …

Registo de indexação: [SI] ou [DI]

Registo de indexação + deslocamento: [SI+displ] ou [DI+ displ] ou ….

Registo de base + registo de indexação: [BX+DI] ou [BP+SI] ou …

Registo de base + indexação + deslocamento: [BX+SI+ disp] ou ...

Page 17: Organização Funcional - Escola Superior de … Organização Funcional Modelo de Arquitectura de Von Neuman 30 Bus de Endereços Conjunto de linhas (ligações ísicas) que transportam

17

Modos de endereçamento no 8086

58

Observações:

Existe a possibilidade de fazermos referência explícita ao registo de segmento, conhecido por “Segment override”. Como exemplo podemos referir a instrução MOV AX, ES:[BX].

Para instruções com dois operandos não é possivel utilizar endereçamento em memória simultaneamente no operando origem e no operando destino.Exemplo:

MOV [BX], [BP+001Fh] incorrecto

MOV AX, [BP+001Fh]MOV [BX], AX Correcto

Utilização das directivas byte ptr e/ou word ptr para endereçamento em memória

MOV [BX], 10 estamos perante um tipo de endereçamento (indirecto), (imediato). O valor é armazenado em memória como 8 ou 16 bits??

Modos de endereçamento no 8086

59

Observações:

Combinações admitidas no formato destino,origem

registo, registoregisto, imediatoregisto, directoregisto, indirectodirecto, imediatodirecto, registoindirecto, registoindirecto, imediato

Combinações não admitidas no formato destino, origem

imediato, <qualquer outro tipo><end. em memoria>, <end. em memoria>