Arquitectura de Computadores

Propaganda
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Nuno Cavaco Gomes Horta
Universidade Técnica de Lisboa / Instituto Superior Técnico
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Sumário
•
•
•
•
•
•
•
•
Introdução
Unidade de Processamento
Unidade de Controlo
Conjunto de Instruções
Unidade Central de Processamento (CPU)
Unidade de Entrada/Saída (I/O)
Unidade de Memória
Perspectiva Evolutiva das Arquitecturas de Computadores
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
2
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Arquitectura Genérica de um Computador
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
3
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Conceitos/Definições das Arquitecturas de Computadores
Linguagem Máquina: Linguagem binária
armazenamento de instruções em memória.
utilizada
na
definição
e
Linguagem Assembly: Linguagem simbólica, utilizada para efeito de
programação, que utiliza nomes em vez dos códigos de operação, endereços
e operandos binários.
Formato das Instruções: O conjunto de bits que compõem a instrução
organizam-se em grupos ou campos designados por (podem surgir outras
tipo de campos não especificados nesta fase):
opcode - código da operação a ser executada;
address - endereço para selecção de uma posição de memória ou registo do
processador;
mode - modo como o campo de endereço deve ser interpretado.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
4
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Conceitos/Definições das Arquitecturas de Computadores
Ciclo Básico de Operação de um Computador: A U. de Controlo é projectada
para executar cada instrução de um programa seguindo os seguintes passos:
1. Aquisição de instrução da memória para um registo de controlo.
2. Descodificação de instrução
3. Localização dos operandos utilizados pela instrução.
4. Aquisição de operando da memória (caso seja necessário)
5. Execução da operação
6. Armazenamento do resultado e regresso ao passo 1.
Conjunto de Registos: Registos da CPU acessíveis ao programador,
normalmente descritos no manual de programação Assembly, neste caso:
– Registos de uso geral (R0 a R7)
– Contador do Programa (PC – Program Counter)
– Registo de Estado (PSR – Processor Status Register)
– Apontador para a Pilha (SP – Stack Pointer)
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
5
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Conceitos/Definições das Arquitecturas de Computadores
Endereçamento de Operandos: O endereçamento explícito de operandos pode
ser através da especificação do endereço de memória ou do endereço do
registo do processador, contudo, o endereçamento de um operando pode
também ser feito de forma implícita através do código da operação.
Definição da Arquitectura do Conjunto de Instruções: O número de operandos
de endereçamento explícito, numa instrução de manipulação de dados, e
destes o número de operandos que podem ser directamente endereçados em
memória são factores fundamentais na definição de uma Arquitectura para o
Conjunto de Instruções e, naturalmente, na dimensão das instruções.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
6
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Endereçamento de Operandos
A influência do número de operandos no desenvolvimento de programas
será ilustrada através do cálculo da seguinte expressão aritmética:
X=(A+B)(C+D)
Instruções com 3 Operandos, de Endereçamento Explícito:
(a) Armazenamento temporário em memória
MEM.
(A,B,C,D,X,T1,T2 são Endereços de memória)
ADD T1,A,B
M[T1] M[A]+M[B]
A
12
ADD T2,C,D
M[T2] M[C]+M[D]
B
3
MUL X,T1,T2
M[X] M[T1]xM[T2]
C
4
D
8
X
180
T1
15
T2
12
(b) Armazenamento temporário em registo
ADD R1,A,B
R1 M[A]+M[B]
ADD R2,C,D
R2 M[C]+M[D]
MUL X,R1,R2
M[X] R1xR2
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
7
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Endereçamento de Operandos (cont.)
X=(A+B)(C+D)
Instruções com 2 Operandos:
Cada campo de endereço permite especificar um registo ou um endereço de
memória. O registo R1 pode substituir T1 (endereço de memória) no
armazenamento temporário.
MEM.
MOVE T1,A
M[T1] M[A]
ADD T1,B
M[T1] M[T1]+M[B]
MOVE X,C
M[X] M[C]
ADD X,D
MUL X,T1
N. Horta, IST - UTL
A
12
B
3
C
4
M[X] M[X]+M[D]
D
8
M[X] M[X]x M[T1]
X
180
T1
15
T2
12
Arquitectura de Computadores
2006/2007
8
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Endereçamento de Operandos (cont.)
X=(A+B)(C+D)
Instruções com 1 Operando:
No caso das arquitecturas com instruções de apenas um operando (explícito)
é utilizado um registo - acumulador - de forma implícita para obter um dos
operandos e para localizar o resultado da operação.
MEM.
LD A
ACC M[A]
ADD B
ACC ACC+M[B]
ST X
M[X] ACC
LD C
ACC
A
12
B
3
C
4
ACC M[C]
D
8
ADD D
ACC ACC+M[D]
X
180
MUL X
ACC ACC x M[X]
T1
15
ST X
M[X] ACC
T2
12
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
9
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Endereçamento de Operandos (cont.)
X=(A+B)(C+D)
Instruções sem Operandos:
No caso das arquitecturas com instruções sem operandos (explícitos), todos
os operandos terão de surgir de forma implícita. A forma convencional de
solucionar este problema é recorrendo a um STACK (pilha), estrutura de
memória do tipo LIFO para armazenamento de dados dinâmicos. (TOS –
Top of Stack)
PUSH A
TOS M[A]
PUSH B
TOS M[B]
ADD
TOS TOS+TOS-1
PUSH C
TOS M[C]
PUSH D
TOS M[D]
ADD
TOS TOS+TOS-1
MUL
TOS TOSxTOS-1
POP
X
N. Horta, IST
- UTL
STACK
STACK
STACK
STACK
STACK
[A]
[A]+[B]
[A]+[B]
[A]+[B]
(...) x (...)
[C]
[C]+[D]
[B]
M[X] TOS
Arquitectura de Computadores
2006/2007
[D]
10
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Arquitecturas de Endereçamento
Classificação:
1.
Memory-Memory: O endereçamento dos operandos é na totalidade
realizado sobre a memória.
2.
Register-Register ou Load/Store: O endereçamento dos operandos faz-se
com recusro a registos. O acesso à memória é restrito às instruções do tipo
LD (load) e ST (store).
Nota: No caso de ser necessária uma palavra de memória adicional para
especificar o endereço de cada operando, o número de acessos à memória
no primeiro caso é de 21, enquanto no segundo é de 18.Justifique!
MEMORY-MEMORY
ADD T1,A,B
M[T1] M[A]+M[B]
ADD T2,C,D
M[T2] M[C]+M[D]
MUL X,T1,T2
M[X] M[T1]xM[T2]
REGISTER-REGISTER
LD R1,A
R1 M[A]
LD R2,B
R2 M[B]
ADD R3,R1,R2
R3 R1+R2
LD R1,C
R1 M[C]
LD R2,D
R2 M[D]
A solução Memory-Memory conduz a uma
ADD R1,R1,R2
R1 R1+R2
maior complexidade das estruturas de
N.controlo,
Horta, ISTenquanto
- UTL
Arquitectura de Computadores
MUL R1,R1,R3
R1 R1xR311
na Register-Register
é
2006/2007
ST X,R1
M[X] R1
necessário um maior número de registos.
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Arquitecturas de Endereçamento (cont.)
Classificação:
3.
Register-Memory: O endereçamento dos operandos faz-se com recurso a
registos e memória.
4.
Single Accumulator: O endereçamento não recorre a registos de uso geral,
sendo as transferências realizadas na totalidade entre a memória e o registo
Acumulador.
5.
Stack: O endereçamento é realizado de forma implícita com recurso ao
STACK.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
12
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento
O modo de endereçamento descreve o modo como os operandos são
seleccionados durante a execução do programa.
O endereço do operando obtido pelas regras subjacentes aos modos de
endereçamento designa-se endereço efectivo.
Os vários modos de endereçamento tem por objectivos fundamentais:
1.
Conferir Flexibilidade de Programação através da utilização de
apontadores para memória, contadores para controlo de ciclos,
indexação dos dados e relocalização de programas.
2.
Reduzir o número de bits nos campos de endereço da instrução.
A especificação do modo de endereçamento pode ser através de um campo
próprio ou fazer parte do código da operação.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
13
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento (Formato das Instruções)
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
14
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento
Opcode
M odo
Endereço ou Operando
1.
Implícito: Operando especificado de forma implícita, não é referido
explicitamente na instrução, e.g., ADD.
Add
Im plícito
----
2.
Imediato: Operando especificado na instrução, e.g., MOVE R1,3.
Move
Im ediato
3
3.
Registo: Operando corresponde a um registo do processador,
e.g., MUL R1,R2,R3.
Mul
Registo
---
4.
Indirecto por Registo: Endereço do operando corresponde ao conteúdo do
registo especificado na operação, e.g., ADD (R1),3.
Add
N. Horta, IST - UTL
Indirecto p/ Reg.
3
Arquitectura de Computadores
2006/2007
15
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento
5.
Directo: Operando obtido pela especificação do seu endereço em memória
no campo de endereço da instrução, e.g,, ACC M[ADRS].
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
16
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento
5.
Directo (cont.): ... e.g., instrução de salto condicional.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
17
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento
6.
Indirecto: O campo de endereço da instrução especifica o endereço de
memória que guarda o endereço efectivo do operando, e.g.,
ACC M[M[ADRS]].
LD
Indirecto
ADRS
7.
Relativo: O endereço efectivo do operando é determinado pela soma do
valor do campo de endereço da instrução com o conteúdo de um registo da
CPU, tipicamente o PC, i.e., end.efectivo = campo_end_inst + PC.
LD
Relativo
ADRS
8.
Indexado: O endereço efectivo do operando é determinado pela soma do
valor do campo de endereço da instrução com o conteúdo de um registo de
índice ou de base que define o endereço de início de um array, i.e.,
end.efectivo = campo_end_inst + Registo_Índice.
LD
N. Horta, IST - UTL
Indexado
ADRS
Arquitectura de Computadores
2006/2007
18
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento - Sumário
Simbologia (Mano):
ADRS
Endereço Efectivo
#NBR
Número
@ ou [ADRS] Endereço Indirecto
$ADRS
Endereço Efectivo
relativo ao PC
ADRS (R1)
Endereço Efectivo
relativo ao R1
R1
Registo
(R1)N. Horta, ISTEndereço
R1
- UTL Efectivo em
Arquitectura
de Computadores
2006/2007
19
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento - Sumário
Simbologia (Mano):
ADRS
Endereço Efectivo
#NBR
Número
@ ou [ADRS] Endereço Indirecto
$ADRS
Endereço Efectivo
relativo ao PC
ADRS (R1)
Endereço Efectivo
relativo ao R1
R1
Registo
(R1)N. Horta, ISTEndereço
R1
- UTL Efectivo em
Arquitectura
de Computadores
2006/2007
20
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento - Sumário
Simbologia (Mano):
ADRS
Endereço Efectivo
#NBR
Número
@ ou [ADRS] Endereço Indirecto
$ADRS
Endereço Efectivo
relativo ao PC
ADRS (R1)
Endereço Efectivo
relativo ao R1
R1
Registo
(R1)N. Horta, ISTEndereço
R1
- UTL Efectivo em
Arquitectura
de Computadores
2006/2007
21
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento - Sumário
Simbologia (Mano):
ADRS
Endereço Efectivo
#NBR
Número
@ ou [ADRS] Endereço Indirecto
$ADRS
Endereço Efectivo
relativo ao PC
ADRS (R1)
Endereço Efectivo
relativo ao R1
R1
Registo
(R1)N. Horta, ISTEndereço
R1
- UTL Efectivo em
Arquitectura
de Computadores
2006/2007
+
22
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento - Sumário
Simbologia (Mano):
ADRS
Endereço Efectivo
#NBR
Número
@ ou [ADRS] Endereço Indirecto
$ADRS
Endereço Efectivo
relativo ao PC
ADRS (R1)
Endereço Efectivo
relativo ao R1
R1
Registo
(R1)N. Horta, ISTEndereço
R1
- UTL Efectivo em
Arquitectura
de Computadores
2006/2007
+
23
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento - Sumário
Simbologia (Mano):
ADRS
Endereço Efectivo
#NBR
Número
@ ou [ADRS] Endereço Indirecto
$ADRS
Endereço Efectivo
relativo ao PC
ADRS (R1)
Endereço Efectivo
relativo ao R1
R1
Registo
(R1)N. Horta, ISTEndereço
R1
- UTL Efectivo em
Arquitectura
de Computadores
2006/2007
24
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Modos de Endereçamento - Sumário
Simbologia (Mano):
ADRS
Endereço Efectivo
#NBR
Número
@ ou [ADRS] Endereço Indirecto
$ADRS
Endereço Efectivo
relativo ao PC
ADRS (R1)
Endereço Efectivo
relativo ao R1
R1
Registo
(R1)N. Horta, ISTEndereço
R1
- UTL Efectivo em
Arquitectura
de Computadores
2006/2007
25
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Arquitecturas do Conjunto de Instruções
O conjunto de instruções de diferentes computadores varia em vários aspectos, e.g.,
código de operação no campo opcode da instrução, o nome simbólico dado às
instruções, etc.
Classes de Arquitecturas de Instruções:
RISC – Reduced Instruction Set Computers
1.
Acesso à memória restrito a instruções de carregamento – load - e
armazenamento – store. As instruções de manipulação de dados são do tipo
Registo-Registo.
2.
Modos de Endereçamento em número limitado.
3.
Formatos das Instruções todos da mesma dimensão.
4.
As instruções correspondem à execução de operações elementares
O objectivo das arquitecturas RISC é conferir um elevado ritmo de execução,
para isso minimiza os acessos à memória e em contrapartida aumenta o
número de registos da CPU. A dimensão fixa das instruções e a simplicidade
das suas operações conduz a unidades de controlo relativamente simples,
tipicamente “Hardwired” e arquitecturas pipelined.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
26
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Arquitecturas do Conjunto de Instruções
Classes de Arquitecturas de Instruções: (cont.)
CISC – Complex Instruction Set Computers
1.
Acesso à memória disponível para a generalidade dos tipos de instrução.
2.
Modos de Endereçamento em número elevado.
3.
Formatos das Instruções de diferentes dimensões.
4.
As instruções executam tanto operações elementares como operações
complexas.
O objectivo das arquitecturas CISC é conferir uma maior proximidade entre as
operações utilizadas em linguagens de programação e as operações
desencadeadas por cada instrução. Facilita o desenvolvimento de programas
compactos e eficiência em termos de desempenho advém de um menor número
de acessos à memória em relação ao número de operações elementares
realizadas. Neste caso, a CPU apresenta um menor número de registos do que
nas arquitecturas RISC e a utilização do controlo microprogramado é o mais
usual dada a variedade de formatos de instruções utilizados.
Nota: Cada instrução CISC, em geral, corresponde a uma sequência de
instruções RISC.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
27
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Arquitecturas do Conjunto de Instruções
Classes de Arquitecturas de Instruções: (cont.)
RISC, CISC
Independentemente das arquitecturas serem CISC, RISC ou uma solução híbrida
CISC-RISC, existe, tipicamente, um conjunto de operações elementares disponíveis na
generalidade dos casos e associadas às seguintes classes:
–
Instruções de Transferência de Dados: Transferência de dados de uma
localização para outra sem alterar a informação.
–
Instruções de Manipulação de Dados: Execução de operações aritméticas,
lógicas e de deslocamento.
–
Instruções de Controlo de Programa: Permitem decidir sobre o fluxo do
programa durante a sua execução.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
28
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Instruções de Transferência de Dados
•
•
•
•
•
Memória Registo – LD, ST, MOVE, XCH
Registo Registo – MOVE, XCH
Memória Memória – MOVE, XCH
Stack (Pilha) Registo, Memória – PUSH, POP
I/O (Entradas/Saídas - Periféricos) – IN, OUT
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
29
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Instruções de Transferência de Dados
EXEMPLO: STACK (Instruções)
Instrução
Microoperação
PUSH R1
SP SP-1,
STACK
M[SP] R1
POP R1
R1 M[SP],
SP SP+1
A memória em STACK apresenta a
vantagem de poder ser referida
pelo processador sem ter de
especificar o endereço.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
30
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Instruções de Transferência de Dados
EXEMPLO: I/O (Instruções)
a) I/O Isolado
Instrução
Microoperação
IN R1, Porto
R1 [Porto]
OUT Porto, R1
[Porto] R1
b) Memory-Mapped I/O
Instrução
Microoperação
LD R1, Porto
R1 [Porto]
ST Porto, R1
[Porto] R1
N. Horta, IST - UTL
Porto: Registo, identificado por um
endereço, associado a um determinado
periférico.
I/O Isolado: Espaço de endereçamento
específico para I/O.
Memory-Mapped I/O: Espaço de
endereçamento idêntico para acessos à
memória e a I/O. Neste caso, não existe
diferenciação entre instruções de acesso
a memória e a I/O.
Arquitectura de Computadores
2006/2007
31
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Instruções de Manipulação de Dados
•
Aritméticas
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
32
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Instruções de Manipulação de Dados
•
Lógicas
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
33
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Instruções de Manipulação de Dados
•
Deslocamento
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
34
Arquitectura de Computadores
x
Arquitectura do Conjunto de Instruções
Instruções de Controlo de Programa
•
•
•
•
Salto Incondicional – JMP, SKP
Salto Condicional - BR
Chamada/Retorno a/de Procedimento – CALL, RET
Comparação – CMP, TEST
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
35
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Instruções de Controlo de Programa
•
Salto Condicional
– Bits de estado
– Num. sem sinal
– Num. com sinal
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
36
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Instruções de Controlo de Programa
•
Chamada/Retorno a/de Procedimento
EXEMPLO: CALL e RET
a) CALL
Instrução
Microoperação
CALL PROC
SP SP-1,
M[SP] PC,
PC ENDEREÇO EFECTIVO
b) RET
Instrução
Microoperação
RET
PC M[SP],
SP SP+1
N. Horta, IST - UTL
CALL: Chamada a procedimento
com armazenamento no STACK
do endereço de retorno e
carregamento do PC com o
endereço
de
início
do
procedimento.
RET: Retorno do procedimento
com carregamento do PC com o
endereço de retorno no programa
principal.
Arquitectura de Computadores
2006/2007
37
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Interrupções
A Interrupção corresponde à ocorrência de um pedido interno ou externo
ao processador que provoca a interrupção do programa correntemente em
execução passando a ser executado o programa ou rotina de serviço a essa
Interrupção. O controlo regressa ao programa original após a execução da
rotina de serviço à Interrupção.
Interrupção vs CALL
1.
2.
3.
A interrupção surge, normalmente, num ponto indeterminado do
programa e em consequência de um sinal interno ou externo ao
processador.
O endereço da rotina de atendimento da interrupção é determinado
por mecanismos de hardware em vez de ser através do campo de
endereço de uma instrução.
A resposta a uma interrupção obriga à salvaguarda dos conteúdos dos
vários registos do processador, uma vez que pode ocorrer em qualquer
instante, em vez do simples armazenamento do endereço de retorno.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
38
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
Interrupções
Tipos de Interrupções:
•
Interrupção Externa (hardware): Iniciada por um periférico de entrada ou
de saída, por um circuito de monitorização da alimentação ou por qualquer
outra fonte externa, e.g., transferência de dados, falha de alimentação, etc.
•
Interrupção Interna (hardware): Provocada pelo uso ilegal ou erróneo de
uma instrução ou dado, e.g., overflow aritmético, divisão por zero, etc.
•
Interrupção de Software: Instrução executada na sequência, natural, da
execução de um programa, e.g., chamadas ao sistema.
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
39
Arquitectura de Computadores
x
Arquitectura do Conjunto de Instruções
Interrupções
Processamento de Interrupções Externas
Microinstruções
SP SP-1,
M[SP] PC,
SP SP-1,
M[SP] PSR,
EI 0,
INTACK 1,
PC IVAD
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
40
Arquitectura de Computadores
Arquitectura do Conjunto de Instruções
BIBLIOGRAFIA
[1] M. Morris Mano, Charles R. Kime, “Logic and Computer Design
Fundamentals”, Prentice-Hall International, Inc. (Capítulo 9)
N. Horta, IST - UTL
Arquitectura de Computadores
2006/2007
41
Download