Você está na página 1de 55

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO

DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS


CURSO DE CIÊNCIA DA COMPUTAÇÃO

Arquitetura e Organização de
Computadores
Instruções: a linguagem do computador
Parte I
Prof. Sílvio Fernandes
1
Cronograma da Disciplina
⚫ Linguagem de montagem e de máquina
⚫ Avaliação de Desempenho
⚫ Aritmética Computacional
⚫ Caminho de Dados do Processador
⚫ Controle do Processador
⚫ Pipeline
⚫ Hierarquia de Memória

2
Avaliações
⚫ Média parcial: aritmética simples
⚫ MP = (A1 + A2 + A3)/3
⚫ Aprovação
⚫ Se MP >= 7,0 & 75% de presença
⚫ Senão Se (3,5 >= MP < 7,0) e (75% de presença)
⚫ Avaliação Final (AF)
▪ Se (MF = (MP * 6 + AF *4) / 10) >= 5

⚫ Resolução sobre notas CONSEPE/UFERSA 04/2018


⚫ https://documentos.ufersa.edu.br/wp-
content/uploads/sites/79/2018/09/RESOLUCAO_004_2018.pdf
3
Avaliações
⚫ Via SIGAA
⚫ Questionários:
⚫ Disponível por 24h
⚫ Tempo para concluir: 2h
⚫ Questões aleatórias
⚫ Tarefas
⚫ Envio no prazo máximo de 1 semana (ver enunciado da tarefa)

⚫ Datas
⚫ 1ª. Avaliação: 03/11/2020
⚫ 2ª. Avaliação: 24/11/2020
⚫ 3ª. Avaliação: 15/12/2020
⚫ Reposição: 17/12/2020
⚫ 4ª. Avaliação: 22/12/2020 4
Avaliações
⚫ Provas teóricas
⚫ Trabalhos de implementação
⚫ Uso de simuladores

⚫ As datas estão no cronograma e no SIGAA

⚫ Devem estudar pelos Livros e não pelos slides!

5
Referências para Disciplina
⚫ PATTERSON, D. A. ; HENNESSY, J.L.
Organização e projeto de
computadores – a interface hardware
software. Editora Campus.
⚫ 4ª Edição – 2013
⚫ 5ª Edição – 2017
⚫ Disponível na “Minha Biblioteca”
⚫ https://integrada.minhabiblioteca.com.b
r/books/9788595152908
⚫ WANDERLEY NETTO, Bráulio.
Arquitetura de Computadores: A visão
do software. Natal: Editora do CEFET-
RN, 2005. Disponível em:
http://portal.ifrn.edu.br/pesquisa/edit
ora/livros-para-download/arquitetura-
de-computadores-a-visao-do-
software 6
Referências para Disciplina
Complementares
⚫ STALLINGS, W. Arquitetura e organização de
computadores: projeto para o desempenho.
8. ed. Prentice Hall, 2009.
⚫ DELGADO, J.; RIBEIRO, C. Arquitetura de
Computadores. 2 ed. LTC, 2009.
⚫ TANENBAUM, A. S. Organização estruturada
de computadores. Prentice Hall, 1990.

7
Motivação
00111100000000010001000000000001
00110100001010000000000000000000
⚫ O que é isso? 10001101000100010000000000000000
00111100000000010001000000000001
00110100001010000000000000000100
10001101000100100000000000000000
00111100000000010001000000000001
00110100001010000000000000001000
10001101000100110000000000000000 f = (g + h) – (i + j);
00111100000000010001000000000001
00110100001010000000000000001100 Assim é ainda
10001101000101000000000000000000
00000010001100100100000000100000
mais fácil
00000010011101000100100000100000
00000001000010011000000000100010
00111100000000010001000000000001
00110100001010000000000000010000
10101101000100000000000000000000
00100100000000100000000000001010
00000000000000000000000000001100 8

Assim fica melhor?


Introdução
⚫ Objetivo da disciplina?
⚫ Estudar e mostrar como os computadores funcionam
⚫ Tirar o melhor proveito deles (↑ eficiência)
⚫ Quais computadores?
⚫ Diferentes tipos:
⚫ desktop, servidores, dispositivos embutidos

⚫ Diferentes usos:
⚫ automóveis, design gráfico, finanças, genética...

⚫ Diferentes fabricantes:
⚫ Intel, Apple, IBM, Microsoft, Sun...

⚫ Diferentes tecnologias subjacentes e diferentes custos!


9
Abstrações... reflexões
⚫ O que é um programa?
⚫ O que é uma variável?
⚫ Como uma variável é referenciada?
⚫ Como abstraímos uma variável?

52

51 12 X = 51

50

Memória 10
Como os computadores funcionam
⚫ O que é um programa?
⚫ Uma série de instruções
⚫ O que é um computador?
⚫ máquina que pode manipular dados, resolver problemas e tomar
decisões, SEMPRE sob controle de um programa.

11
Conceitos
⚫ Organização de computador
⚫ Refere-se às unidades operacionais e suas interconexões
⚫ Tem a ver quais componentes existem e como estão
conectados

12
Conceitos
⚫ Arquitetura de computador
⚫ Refere-se aos atributos de um sistema visíveis a um
programador ou, em outras palavras aqueles atributos que
possuem um impacto direto sobre a execução lógica de um
programa
⚫ Como a visão que um programador de baixo nível tem sobre a
máquina para qual ele está codificando. Este programador
enxerga então uma abstração da máquina chamada
Arquitetura do Conjunto de Instruções, ISA (Instruction Set
Architecture). Ela define como é possível fazer a nossa máquina
funcionar.
⚫ Muitos fabricantes de computador oferecem uma
família de modelos de computador, todos com a
mesma arquitetura, mas com diferença na organização
13
Analogia: Agente secreto 89
⚫ O assassinato de um líder mundial está para acontecer
⚫ O agente secreto 89 deve descobrir quantos dias faltam para o
assassinato
⚫ Ele tem um contato com essa informação
⚫ Para ninguém descobrir essa informação foi espalhada por uma
série de 10 caixas postais
⚫ Há 10 chaves e um conjunto de instruções para decifrar
informação

14
Agente secreto 89
Conjunto de Instruções
1. A informação em cada uma das caixas está escrita em
código.
2. Abra a caixa 1 primeiro e execute a instrução localizada lá.
3. Continue pelas caixas restantes, em sequência, a menos que
seja instruído do contrário.
4. Uma das caixas está preparada para explodir quando for
aberta.

15
Agente secreto 89
Caixas postais com mensagens codificadas
Caixa 1 Caixa 2

Caixa 3 Caixa 4

Caixa 5 Caixa 6

Caixa 7 Caixa 8

Caixa 9 Caixa 10

16
Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número
armazenado na
caixa (9) ao seu Caixa 2
número de código
de agente secreto.

Caixa 3 Caixa 4

Caixa 5 Caixa 6

Caixa 7 Caixa 8

Caixa 9 Caixa 10
Conjunto Instruções - Sílvio Fernandes 17
Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número
armazenado na
caixa (9) ao seu Caixa 2
número de código
de agente secreto.

Caixa 3 Caixa 4

Caixa 5 Caixa 6

Caixa 7 Caixa 8

9. 11
Caixa 10
Conjunto Instruções - Sílvio Fernandes 18
Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número No. Agente = 89
armazenado na No. Armazenado em (9) = 11
caixa (9) ao seu Caixa 2
número de código 89 + 11 = 100
de agente secreto.

Caixa 3 Caixa 4

Caixa 5 Caixa 6

Caixa 7 Caixa 8

9. 11
Caixa 10
Conjunto Instruções - Sílvio Fernandes 19
Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número 2. Divida o resultado Resultado anterior = 100
armazenado na anterior pelo No. Armazenado em (10) = ?
caixa (9) ao seu número
número de código armazenado na 100 / ? = ?
de agente secreto. caixa (10).

Caixa 3 Caixa 4

Caixa 5 Caixa 6

Caixa 7 Caixa 8

9. 11
Caixa 10
Conjunto Instruções - Sílvio Fernandes 20
Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número 2. Divida o resultado Resultado anterior = 100
armazenado na anterior pelo No. Armazenado em (10) = 2
caixa (9) ao seu número
número de código armazenado na 100 / 2 = 50
de agente secreto. caixa (10).

Caixa 3 Caixa 4

Caixa 5 Caixa 6

Caixa 7 Caixa 8

9. 11 10. 2

Conjunto Instruções - Sílvio Fernandes 21


Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número 2. Divida o resultado Resultado anterior = 50
armazenado na anterior pelo No. Armazenado em (8) = ?
caixa (9) ao seu número
número de código armazenado na 50 - ? = ?
de agente secreto. caixa (10).
3. Subtraia o número
armazenado na
caixa (8). Caixa 4

Caixa 5 Caixa 6

Caixa 7 Caixa 8

9. 11 10. 2

Conjunto Instruções - Sílvio Fernandes 22


Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número 2. Divida o resultado Resultado anterior = 50
armazenado na anterior pelo No. Armazenado em (8) = 30
caixa (9) ao seu número
número de código armazenado na 50 - 20 = 30
de agente secreto. caixa (10).
3. Subtraia o número
armazenado na
caixa (8). Caixa 4

Caixa 5 Caixa 6

8. 20
Caixa 7

9. 11 10. 2

Conjunto Instruções - Sílvio Fernandes 23


Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número 2. Divida o resultado Resultado anterior = 30
armazenado na anterior pelo
caixa (9) ao seu número
número de código armazenado na
de agente secreto. caixa (10).
3. Subtraia o número 4. Se o resultado
armazenado na anterior não for
caixa (8). igual a 30, vá para
a caixa (7). Caso
contrário continue
para a próxima
Caixa 5 caixa.
Caixa 6

Caixa 7
8. 20

Conjunto Instruções - Sílvio Fernandes 24


9. 11 10. 2
Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número 2. Divida o resultado Resultado anterior = 30
armazenado na anterior pelo
caixa (9) ao seu número 30 - 13 = 17
número de código armazenado na
de agente secreto. caixa (10).
3. Subtraia o número 4. Se o resultado
armazenado na anterior não for
caixa (8). igual a 30, vá para
a caixa (7). Caso
contrário continue
para a próxima
caixa.
Caixa 6
5. Subtraia 13 do
resultado anterior
Caixa 7
8. 20

Conjunto Instruções - Sílvio Fernandes 25


9. 11 10. 2
Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número 2. Divida o resultado Resultado anterior = 17
armazenado na anterior pelo
caixa (9) ao seu número
número de código armazenado na
de agente secreto. caixa (10).
3. Subtraia o número 4. Se o resultado
armazenado na anterior não for
caixa (8). igual a 30, vá para
a caixa (7). Caso
contrário continue
para a próxima
caixa.
5. Subtraia 13 do 6. Retorne para o
resultado anterior quartel-general
Caixa 7 para receber mais
instruções.
8. 20

Conjunto Instruções - Sílvio Fernandes 26

9. 11 10. 2
Agente secreto 89
Caixas postais com mensagens codificadas
1. Some o número 2. Divida o resultado Resultado anterior = 17
armazenado na anterior pelo
caixa (9) ao seu número
número de código armazenado na
de agente secreto. caixa (10).
3. Subtraia o número 4. Se o resultado
armazenado na anterior não for
caixa (8). igual a 30, vá para
a caixa (7). Caso
contrário continue
para a próxima
caixa.
5. Subtraia 13 do 6. Retorne para o
resultado anterior quartel-general
para receber mais
instruções.
7. 8. 20
BOMBA!
Conjunto Instruções - Sílvio Fernandes 27

9. 11 10. 2
Agente secreto 89
Analogias
⚫ Quem ou que é o agente secreto?
⚫ Computador que executa as instruções
⚫ E o conjunto das caixas postais?
⚫ Memória contendo instruções (caixas de 1 a 6) e dados (8 a 10).
⚫ Caixa 7 sem equivalentes nos computadores
⚫ Os números de cada caixa?
⚫ Endereços das posições de memória
⚫ Onde são armazenados os resultados intermediários?
⚫ Memória interna do processador (registradores)

28
Agente secreto 89
Analogias
⚫ Três classes de 1. Some o número
armazenado na
2. Divida o resultado
anterior pelo
instruções caixa (9) ao seu
número de código
número
armazenado na

⚫ Caixas 1, 2, 3 e 5: de agente secreto. caixa (10).

3. Subtraia o número 4. Se o resultado


instruções armazenado na anterior não for
caixa (8). igual a 30, vá para
aritméticas a caixa (7). Caso
contrário continue
⚫ Caixa 4: instrução para a próxima
caixa.
de decisão ou 5. Subtraia 13 do 6. Retorne para o

desvio condicional resultado anterior quartel-general


para receber mais
instruções.
⚫ Caixa 6: instrução 7. 8. 20
de controle BOMBA!

9. 11 10. 2

29
Agente secreto 89
Analogias
⚫ Computador decodifica e executa as instruções armazenadas
na memória
⚫ Sequencialmente desde que não haja desvio
⚫ Após o desvio são executadas sequencialmente a partir do novo
endereço

30
Organização de um computador
⚫ Cinco componentes clássicos:
⚫ Entrada
⚫ Saída
⚫ Memória
⚫ Caminho de Dados
⚫ Controle

31
Organização de um computador

32
Projeto de um processador

Fonte: DUARTE, Ricardo O., GARCIA, Pedro F. D. Metodologia de Ensino Orientada a Projetos e
Criação de Material Didático aplicada ao Projeto de Processadores. WEAC 2011 33
Introdução
⚫ Para controlar o hardware de um computador é preciso
falar da sua linguagem
⚫ As palavras da linguagem são chamadas de instruções
⚫ Seu vocabulário é denominado conjunto de instruções
ou ISA (Instructions Set Architecture)
⚫ Objetivos dos projetistas de computador
⚫ Encontrar uma linguagem que facilite o projeto do hardware e
do compilador enquanto maximiza o desempenho e minimiza o
custo
⚫ Esse objetivo é antigo...

34
Introdução
“É fácil ver, por métodos lógicos formais, que existem certos
[conjuntos de instruções] que são adequados para
controlar e causar a execução de qualquer sequencia de
operações... As considerações realmente decisivas, do
ponto de vista atual, na seleção de um [conjunto de
instruções], são mais de natureza prática: a simplicidade do
equipamento exigido pelo [conjunto de instruções] e a
clareza de sua aplicação para os problemas realmente
importantes, juntos com a velocidade com que tratam esses
problemas.”

Burks, Goldstine e von Neumann, 1947


35
Princípios de Projeto
⚫ Princípio 1:
⚫ Simplicidade favorece a regularidade
⚫ Princípio 2:
⚫ Menor significa mais rápido
⚫ Princípio 3:
⚫ Agilize os casos mais comuns
⚫ Princípio 4:
⚫ Um bom projeto exige bons compromissos

36
Elementos de uma instrução
⚫ Código de operação (Op code):
⚫ Faça isto.
⚫ Referência a operando fonte:
⚫ Nisto.
⚫ Referência a operando de destino:
⚫ Coloque a resposta aqui.
⚫ Referência à próxima instrução:
⚫ Quando tiver feito isso, faça isto...

37
Elementos de uma instrução

Fonte: STALLINGS, W. Arquitetura e organização de computadores: projeto para o desempenho. 8. ed.


Prentice Hall, 2009.
38
Números de endereços
𝐴 −𝐵
⚫ Programas para executar 𝑌 =
𝐶+(𝐷𝑥𝐸)
Instrução Comentário
SUB Y, A, B Y←A-B
MPY T, D, E T←DxE
ADD T, T, C T←T+C
Instrução Comentário
DIV Y, Y, T Y←Y/T
LOAD D AC ← D
Instruções com 3 endereços MPY E AC ← AC x E
ADD C AC ← AC + C
Instrução Comentário STOR Y Y ← AC
MOVE Y, A Y←A LOAD A AC ← A
SUB Y, B Y←Y–B SUB B AC ← AC – B
MOVE T, D T←D DIV Y AC ← AC / Y
MPY T, E T←TxE STOR Y Y ← AC
ADD T, C T←T+C
Instruções com 1 endereços
DIV Y, T Y←Y/T
39
Instruções com 2 endereços
Por que MIPS?
⚫ Típico conjunto de instruções da década de 1980
⚫ Instruções simples, sempre realizando uma única operação
⚫ As instruções possuem tamanho fixo de 32 bits.
⚫ No total, o MIPS possui 32 registradores.
⚫ Cada um deles, de 32 bits
⚫ Estava em quase 100 milhões de processadores em 2002
⚫ ARM é semelhante ao MIPS e em 2008 já estava em 3 bilhões de
processadores
⚫ Quem usa?
⚫ ATI Techologies, Broadcom, Cisco, NEC, Nintendo, Sili on Graphics,
Sony, Texas Instruments e Toshiba, entre outros
40
Operações do Hardware do Computador
⚫ Todo computador precisa ser capaz de realizar aritmética
codop⚫ Notação assembly do MIPS
add a, b, c
⚫ Instrui a somar as variáveis b e c e guardar em a

⚫ A sequência de instruções soma 4 variáveis


add a, b, c # A soma b+c é colocada em a
add a, a, d # A soma b+c+d é colocada em a
add a, a, e # A soma b+c+d+e é colocada em a
Operandos origem
Operando destino

41
Operações do Hardware do Computador
⚫ O número de operandos em operações como a adição é 3: os dois
números sendo somados e um local para colocar a soma
⚫ Exige que cada instrução tenha exatamente 3 endereços, de
acordo com a filosofia de manter o hardware simples
⚫ Princípio de projeto 1:
⚫ Simplicidade favorece a regularidade

42
Instruções para soma e subtração
⚫ E no caso de uma atribuição mais complexa, como por
exemplo?
⚫ f = (g + h) – (i + j);
⚫ Neste caso, é necessário gerar mais de uma instrução.
⚫ Temos também de utilizar variáveis temporárias.

add t0, g, h
add t1, i, j
sub f, t0, t1

E aí pessoal, assembly é ou não é fácil? ☺


Isso é quase o assembly do MIPS

43
Assembly do MIPS

Categoria Instrução Exemplo Significado Comentário

Add add a, b, c a=b+c Sempre 3 operandos


Aritmética
Subtract sub a, b, c a=b-c Sempre 3 operandos

44
Registradores no MIPS
⚫ Operandos do hardware de um computador
⚫ Ao contrário dos programas nas linguagens de alto nível, os operandos
das instruções aritméticas são restritos.
⚫ Os operandos de uma instrução aritmética são os registradores.

⚫ Lembrem-se que no MIPS só temos 32 registradores.


⚫ Qual o motivo para termos uma quantidade tão pequena de
registradores?
⚫ Princípio de Projeto 2: “Menor significa mais rápido”

45
Registradores no MIPS
⚫ Os nomes dos registradores MIPS obedecem ao seguinte
padrão:
⚫ Utilizamos “$” seguido por dois caracteres para representar um
registrador.
⚫ $s0, $s1, $s2,... representam os registradores que correspondem às
variáveis dos programas em C e Java.
⚫ $t0, $t1, ... Representam os registradores que armazenam valores
temporários.

Mais tarde veremos a


convenção dos nomes e
recomendação de uso dos
registradores
46
Registradores no MIPS
⚫ Logo, para o programa anterior, teríamos:
⚫ f = (g + h) – (i + j);

Assembly

add t0, g, h add $t0, $s1, $s2


add t1, i, j add $t1, $s3, $s4
sub f, t0, t1 sub $s0, $t0, $t1

47
Instrução para soma com constantes
⚫ addi (Adição Imediata).
⚫ Para evitar o overhead de termos de ler uma constante da memória para depois
utilizá-la em uma soma, MIPS dá suporte a uma instrução especial, o addi.
⚫ Basicamente, ela realiza uma soma com um valor constante.
⚫ Sintaxe:
▪ addi $r1, $r2, const # armazena o valor de $r2 + const no reg. $r1.
⚫ Essa instrução obedece ao princípio de projeto 3:
⚫ “Agilize os casos mais comuns”
⚫ Realmente ele é um caso comum, pois soma com constantes representam um
percentual bastante elevado do código.
⚫ Lembrem-se que grande parte dos laços fazem uso desta instrução.
⚫ A constante pode ter sinal

48
Instruções Lógicas
⚫ Operação OR

⚫ Operações AND, XOR e NOR seguem a mesma sintaxe


⚫ Operação ANDI
⚫ andi $8, $9, 121 # $8 = $9 and 121.
⚫ ORI segue a mesma ideia

49
Instruções Lógicas
⚫ Deslocamento lógico (Shift)

50
Instruções Lógicas
⚫ Deslocamento à direita e à esquerda
⚫ Instrução SLL (shift left logical)
⚫ Desloca n bits à esquerda e acrescenta zeros à direita
⚫ sll $9, $8, 6 # $9 = $8 << 6
⚫ Se $8 tem 1001 1001 1111 0000 0000 1111 0011 11002

51
Instruções Lógicas
⚫ Deslocamento à direita e à esquerda
⚫ Instrução SRL ((shift right logical)
⚫ srl $9, $8, 6 # $9 = $8 >> 6

⚫ Instrução SRA (shift right arithmetic)

52
Instruções Lógicas e Aritméticas
⚫ Instruções aritméticas

53
Instruções Lógicas e Aritméticas
⚫ Instruções lógicas

54
Referências
⚫ PATTERSON, D. A. ; HENNESSY, J.L. Organização e projeto
de computadores – a interface hardware software. 3.
ed. Editora Campus, 2005.
⚫ Notas de aula do Prof. André Luis Meneses Silva
⚫ WANDERLEY NETTO, Bráulio. Arquitetura de
Computadores: A visão do software. Natal: Editora
do CEFET-RN, 2005

55

Você também pode gostar