organização funcional - escola superior de … organização funcional modelo de arquitectura de...
Post on 04-Oct-2018
219 Views
Preview:
TRANSCRIPT
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;
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
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
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
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
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
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.
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
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
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
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.
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
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
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
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
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 ...
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>
top related