Buscar

Resumo Semana 3 - Organização de Computadores

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 3 páginas

Prévia do material em texto

Organização de Computadores
2
Semana 3 – Aula 5 e 6
Arquitetura do Conjunto de Instruções
				Alessandra Regina da Silva – Eng. Computação UNIVESP 
Organização de Computador
● Relaciona-se a unidades operacionais e suas interconexões, que realizam as especificações arquiteturais. (Von Neumann)
	Exemplos
	→ Sinais de controle, Interfaces, Tecnologias.
Arquitetura de Computador
● São os atributos de um sistema visíveis a um programador. Possuem impacto direto sobre a execução lógica de um programa. Características que vão afetar o desempenho de um programa.
	Exemplos
	→ Conjunto de instruções, número de bits para representar dados 16 32, 64, modos de endereçamento a memória.
Arquitetura do conjunto de Instruções
● ISA = Instruction Set Architecture – É o repertório de instruções de um computador. Diferentes computadores possuem ISA diferentes, mas com muitos aspectos em comum. 
● Diferentes implementações para um mesmo ISA.. Processadores tem características internas diferentes, mas compartilham a mesma ISA, mesmo conjunto de instruções.
	Exemplos
	→ Intel x89
ISA – Instruction Set Architecture
● Repertório de operações
Quantas, quais e complexidade.
Exemplos
	→ ULA, transferência de dados, E/S, controle.
· Instruções aritméticas (soma, divisão, etc); Instruções lógicas, add, orl, negação instruções deslocamento a direita, esquerda
· Instrução de movimentação de dados, instrução de load e store tirar da memória para o registrador é load, e do registrador para a memória é store.
· Instrução de controle: condições if e else (sequência de programa).
Instruções de desvio que mudam a ordem
- Instruções incondicionais – quando tem um salto jump.
- Instruções de desvio condicional – se for =0 executo o desvio, caso contrário executo sequencialmente.
→Tipo de tamanho dos operandos (dados)
· 8 bits, 16, 32, 64 palavras de arquiteturas.
· Operações com byte, meia palavra, ou palavra inteira da arquitetura.
→Endereçamento dos operandos
· Formas de acessar os operandos e como funcionam.
→Formato de instrução
Número de operandos (explícitos), tamanho em bits,
· Definir como a unidade de controle do computador vai reconhecer que é uma instrução de soma, movimentação de dados ou de controle.
· Definir conjunto de bits para o código de operação (op code)
· Determinar como sei quais são os operandos, destino e origem.
→Armazenamento dos operandos
Registrados, memória, e suas características
· Operando que está na memória, operador, controlador. Definir como vai ser a busca do operando. Determinar onde armazeno.
CISC (Complex Instruction Set Computer)
● Complexo = grande quantidade de instruções, com múltiplos modos de endereçamento.
● Contexto: memória era cara e pequena → códigos gerados pelos compiladores deveriam ser compactos e eficientes na execução.
Conceito de microprogramação (1951) facilitou o trabalho de projetar instruções complexas..
· Permitiu operações complexas escritas na memória, que fosse executada para ser executada no microcomputador. 
	Exemplos de instruções
	→ CAS – compare and swap operands
	→ RTR – return and restore codes
	→ SWAP – swap register words
CISC – Características de projeto
● Formato de dois operados mais comuns.
	Exemplos 
	→ ADD CX, mem
Modos registrador-registrador; registrador-memória e memória-registrador
Múltiplos modos de endereçamento
Instruções com largura variável
Instruções requerem múltiplos ciclos de relógio para sua complexa execução (variável)
Hardware possui poucos registradores.
RISC (Reduced Instruction Set Computer)
● Pequeno conjunto de instruções
● Todas as instruções tem tamanhos fixos
● Execução otimizada de chamada de funções (Call / Return)
● Poucos modos de endereçamento
● Controle por hardware
● Execução rápida de cada instrução (1 por ciclo do relógio)
CISC X RISC
● Atualmente a distrição não é a mais clara
● Melhorias na tecnologia
● Memórias com maior capacidade
● Compiladores modernos e eficientes
● Mudança da lógica de controle em “arquiteturas CISC” com uso de conceitos de otimização de desempenho “RISC”
3
Semana 3 – Aula 5 e 6
Conjunto de Instruções do MIPS
				Alessandra Regina da Silva – Eng. Computação UNIVESP 
MIPS
● Exemplo didático em livros – Stanford MIPS comercializado por MIPS Technologies
Ampla fatia de mercado de núcleos embarcados.
Aplicações em eletrônica de consumo, equipamentos de rede, armazenamento, impressoras...
Típico de conjunto de instruções modernos.
	
Operações Aritméticas
↪ Princípio de Projeto 1: simplicidade favorece a regularidade
	● Regularidade torna implementação mais simples
	● Simplicidade permite desempenho melhor a custo menor.
↪ Todas operações aritméticas tem a mesma forma
	● Três operandos: duas origens e um destino
add a, b , c → a = b + c
Registradores como operandos
↪ Princípio de Projeto 2: menor é mais rápido
	● Instruções aritméticas usam registradores como operandos
	● MIPS tem um conjunto de 32 registradores de 32 bits numerados de 0 a 31 - Dados de 32 bits são chamados word.
Registradores 
↪ $t0, $t1, …, $t9 → valores temporários
$s0, $s1, …, $s7 → variáveis a serem salvas
	● Registrador 0 ($zero) do MIPS é a constante 0
Não pode ser sobrescrita
Exemplos: mover conteúdo de registradores
	 add $t2, $s1, $zero
Memória
	● Endereço por byte
	● Palavras (words) alinhadas na memória
Endereços precisam ser múltiplos de 4
É Big Endian: byte mais significativo no endereço menos significativo da palavra.
Operandos em memória
	● Código em C:
	g = h + A[8];
g em $s1, h em $s2, endereço base de A em $s3
	● Código compilado MIPS:
Index 8 requer offset de 32 (4 bytes por palavra)
	lw $t0, 32($s3) # load word
 add $s1, $s2, $t0
Operandos imediatos	
↪ Princípio de Projeto 3: Faça o caso comum rápido
● Constantes pequenas são comuns
Operandos imediatos evitam instrução de load
	● Constante especificada na própria instrução
	addi $s3, $s3, 4
Não existe instrução de subtração com imediato
Use constante negativa
	addi $s2, $s1, -1
MIPS: Formato de instruções
● 32 bits cada instrução (palavra = word)
3 tipos de instrução:
Instruções tipo R
● Instruções com registradores como operandos
→ op: código da operação (opcode)
→ rs: registrador com primeiro operando origem
→ rt: registrador com segundo operando origem
→ rd: número do registrador destino
→ shamt: quantia de deslocamento
→ funct: código de função (estende opcode)
Exemplo de intrução tipo R
Instruções tipo I
● Instruções aritméticas com imediato e load/store
Constante: –2^15 to +2^15 – 1
Endereço: somado ao endereço base em rs
↪ Princípio de Projeto 4: Um bom projeto implica em bons compromissos
Formatos diferentes complicam a decodificação, mas permitem instruções uniformes de 32 bits
Desvios condicionais (tipo I)
●Desvia para instrução com rótulo se condição é verdade;
Caso contrário, continue sequencialmente.
→ beq rs, rt, L1
if (rs == rt) desvie para instrução L1;
→ bne rs, rt, L1
if (rs != rt) desvie para instrução L1;
Instruções tipo J
● Instruções de jump (salto)
→ j, jal
Codifica endereço completo na Instrução
Exemplo de endereçamento no jump:
Endereço alvo = PC31…28 : (endereço × 4)

Outros materiais