Baixe o app para aproveitar ainda mais
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)
Compartilhar