SIS17 - Arquitetura de Computadores Organização Básica B de Computadores (Parte I) Organização Básica B de Computadores Composição básica b de um Computador eletrônico digital Processador Memória Memória Principal Memória Secundária Dispositivos de entrada e saída interligados 2 1
Organização Básica B de Computadores Organização de um computador simples, em torno de um barramento, com um processador e dois dispositivos de E/S. 3 Organização Básica B de Computadores Componentes de um computador: visão global 4 2
Organização Básica B de Computadores Unidade Central de Processamento UCP (Central Processing Unity CPU) "cérebro" do computador. Função ão: executar os programas armazenados na memória principal. O processador busca cada instrução na memória, examina-a e executa uma após outra. 5 Organização Básica B de Computadores Operações realizadas pela UCP Processamento operações aritméticas e lógicas movimentação de dados desvios operações de entrada ou saída Controle Busca, interpretação e controle da execução das instruções. Controle da ação dos demais componentes do sistema de computação (memória, entrada/saída). 6 3
Organização Básica B de Computadores UCP - Componentes fundamentais Unidade de Controle Unidade Aritmética e Lógica Registros (Registradores) Sistemas de Comunicação (Barramentos) 7 Organização Básica B de Computadores UC - Unidade de Controle Funções ões: busca, interpretação e controle de execução das instruções, e o controle dos demais componentes do computador. Envia ordens de cálculo para a UAL, que indica os valores a processar, e os coloca nos registradores para esse efeito. A partir da UC a informação é transferida para as outras partes que constituem o computador, como a memória, os sistemas de E/S, etc.. 8 4
Organização Básica B de Computadores UAL - Unidade Aritmética e Lógica Função ão: a efetiva execução das instruções. Aglomerado de circuitos lógicos e componentes eletrônicos simples que, integrados, realizam as operações aritméticas e lógicas (soma, subtração, multiplicação, divisão, AND, OR, XOR, complemento, deslocamento, incremento e decremento). Processadores modernos utilizam mais de uma UAL. 9 Organização Básica B de Computadores Registradores Função: armazenamento de dados e resultados que serão usados pela UAL. Servem de memória auxiliar básica para a UAL. Classificação (atual): registradores de uso geral e registradores de uso específico. Em geral, os registradores de dados da UCP têm uma largura (quantidade de bits que podem armazenar) igual ao tamanho estabelecido pelo fabricante para a palavra do referido processador. A quantidade e o emprego dos registradores variam bastante de modelo para modelo de UCP. 10 5
Organização Básica B de Computadores Registradores Em função de estarem dentro do processador, podem ser lidos e escritos a uma velocidade bastante alta. Exemplos: Program Counter (PC): armazena o endereço da próxima instrução Registrador de Instruções (IR): armazena instrução que está sendo executada. Pentium II: registradores de uso geral de 32 bits (EAX, EBX, ECX, EDX,...), registradores de segmentos de 16 bits (CS, DS,...), registrador FLAGS (PSW - Program Status Word), e EIP (PC, 32 bits). 11 Organização Básica B de Computadores Barramentos Conjunto de fios paralelos que permite a transmissão de dados, endereços, sinais de controle e instruções Tipos: barramentos internos e externos ao processador 12 6
Organização Básica B de Computadores Caminho de dados de uma Máquina M típica t de Von Neumann. 13 Organização do Processador Caminho de dados Parte constituída dos registradores (em geral de 1 a 32), UAL e barramentos Os registradores alimentam as duas entradas (A e B) da UAL A saída da UAL é conectada a um dos registradores Existem 2 classes de instruções: instrução registrador-mem memória: permite que uma palavra de memória seja armazenada no registrador, e vice-versa. instrução registrador-registrador registrador: instrução que opera sobre 2 registradores e coloca a saída em outro registrador (ciclo de caminho de dados). 14 7
Organização do Processador Caminho de dados Importante: A velocidade do ciclo do caminho de dados determina, em última análise, a velocidade do computador. Observação: Palavras são as unidades de dados movidas entre a memória e os registradores. A referência a uma palavra deve ser feita por meio de um número inteiro. 15 Execução de Instruções Ciclo de Busca-Decodifica Decodificação-Execução de Instrução 16 8
Execução de Instruções Ciclo de Busca-Decodifica Decodificação-Execução de Instrução 1. Busca próxima instrução na memória e armazena no IR. 2. Atualiza Contador de instrução PC para apontar para a próxima instrução 3. Determina tipo de instrução armazenada no IR 4. Determina endereço dos dados na memória, se a instrução requer dados adicionais. 5. Busca palavras (dados) na memória, caso a instrução precise, e armazena-as em outros registradores. 6. Executa instrução. 7. Retorna ao passo 1 17 Execução de Instruções É possível escrever um programa que simula a função de um processador. Esse programa não precisa, necessariamente, ser executado por um processador eletrônico. Um programa pode ser executado por outro programa que busque, decodifique e execute suas instruções. Denominação de tal programa: interpretador 18 9
Execução de Instruções Interpretador para o computador muito simples (escrito em Java) public class Interp{ static int PC; static int AC; static int instr; static int instr_type; static int data_loc; static int data; static boolean run_bit = true // o PC guarda o endereço da próxima instrução // Acumulador, registrador que auxilia os cálculos // registrador para guardar a instrução corrente // o tipo de instrução (opcode) // endereço do dado, ou 1 se não houver // armazena o operando corrente // bit que pode ser colocado em zero // para parar a máquina 19 Execução de Instruções Interpretador para o computador muito simples (escrito em Java) public static void interpret(int memory[ ], int starting_address){ // Esse procedimento interpreta programas para uma máquina muito // simples cujas instruções têm na memória apenas um operando. // A máquina tem um registrador AC (acumulador), usado para // cálculos aritméticos. // O interpretador continua rodando até que o run_bit assuma o valor 0, // valor esse atribuído a ele por meio da execução da instrução HALT // (parada). // O estado de um processo rodando nessa máquina é composto pela // memória, pelo PC, pelo run_bit e pelo AC. // Os parâmetros de entrada são a imagem da memória e o endereço // inicial, onde está armazenada a primeira instrução do programa. 20 10
Interpretador para o computador muito simples (escrito em Java) } PC = starting_address; while(run_bit){ instr=memory[pc]; PC = PC + 1; // busca da próxima instrução e seu // armazenamento em instr // incremento do PC instr_type=get_instr_type(instr); // determinação do tipo de instrução data_loc=find_data(instr, instr_type); // localização do dado // se não houver dado a ser localizado, data_loc deve receber 1 if(data_loc>=0) data=memory[data_loc]; execute(instr_type, data); } Execução de Instruções // se data_loc=-1, a instrução não tem operando // busca do operando // execução da instrução 21 Execução de Instruções Interpretador para o computador muito simples (escrito em Java) private static int get_instr_type(int addr) {... } private static int find_data(int instr, int type) {... } private static void execute(int type, int data) {... } } Observações: O interpretador escrito em JAVA simula a função de um processador. Programa JAVA: executado por interpretação, hardware ou híbrido (hardware + software). 22 11
Execução de Instruções A equivalência entre os processadores construídos em hardware e os interpretadores têm uma implicação muito importante na organização e no projeto dos sistemas de computador. Decisão importante: Após especificar a linguagem de máquina L de um novo processador, a equipe de projetistas precisa decidir se devem construir um processador real, em hardware, para executar diretamente programas escritos em L, ou se deve escrever um interpretador para interpretar os programas escritos em L. 23 Execução de Instruções Final do anos 50 IBM reconhece que o suporte a uma única família de máquinas, todas executando as mesmas instruções é vantajoso surge o termo arquitetura para descrever o nível de compatibilidade entre as máquinas. Uma nova família de computadores poderia ter uma única arquitetura, porém muitas implementações diferentes, todas executando os mesmos programas, diferindo no preço e na velocidade. 24 12
Execução de Instruções Problema 1: Como construir computadores de baixo custo capazes de executar todas as instruções complexas de máquinas de alto desempenho, muito mais caras? Uma implementação em hardware puro (sem interpretação) é usada somente nos computadores mais caros. Uma implementação com interpretador de instrução (por software) é usada em computadores mais baratos. 25 Execução de Instruções Vantagens do interpretador em relação ao hardware puro Capacidade de corrigir no campo eventuais erros na implementação de instruções Oportunidade de incorporar novas instruções nas máquinas já existentes Projeto estruturado que permite o desenvolvimento, teste e documentação de instruções complexas de maneira eficiente. Pode substituir implementações antigas de instruções. Armazenamento das microinstruções do interpretador em memórias read-only (ROM), chamadas de memória de controle, muito mais rápidas do que as memórias convencionais. 26 13
Execução de Instruções Problema 2: O uso da interpretação permitiu a criação de um conjunto grande de instruções de importância discutível e que eram difíceis e caras para serem implementadas diretamente por hardware (circuitos muito complexos). 27 RISC versus CISC Final da década d de 70 Privilégio das instruções muito complexas, cuja implementação era muito simples com o emprego do interpretador. Projetistas tentavam diminuir o gapgap semântico. Contraponto projeto de processadores que não usavam interpretação (RISC). 28 14
RISC versus CISC CISC - Complex Instruction Set Computer Tecnologia mais antiga e usada para famílias de computadores compatíveis em nível de software. Número maior de instruções (~200 a 300 instruções). Uso extensivo de interpretação (principalmente para modelos mais baratos). 29 RISC versus CISC RISC - Reduced Instruction Set Computer Processador com pequeno número de instruções muito simples. Primeiro: RISC I. Instruções capazes de serem executadas em um único ciclo do caminho de dados. Argumento RISC: Mesmo que uma máquina RISC precisasse de 4 ou 5 instruções para fazer o que uma máquina CISC faria com apenas 1 instrução, se a instrução RISC fosse 10 vezes mais rápida (só hardware) a máquina RISC venceria. 30 15
RISC versus CISC Questão: : Porque então a tecnologia RISC não suplantou a CISC? Problemas de compatibilidade com máquinas antigas com software já desenvolvido. Aparecimento de soluções híbridas: Por exemplo, a INTEL usa RISC para instruções de uso mais freqüente (Núcleo RISC) e interpretação para instruções mais complexas e de uso menos freqüente. 31 Princípios de Projeto para Computadores Modernos Princípios do projeto RISC que os arquitetos de processadores de propósito geral devem seguir: Todas as instruções são diretamente executadas por hardware Maximizar a Taxa à qual as instruções são executadas As instruções precisam ser facilmente decodificadas Somente as Instruções de Load e Store devem referenciar a Memória Projetar uma máquina m com muitos registradores (>= 32) 32 16
Princípios de Projeto para Computadores Modernos Princípios do projeto RISC que os arquitetos de processadores de propósito geral devem seguir: Todas as instruções são diretamente executadas por hardware Não existe o nível n de microinstrução Para máquina m com filosofia CISC as instruções, em geral menos freqüentes, entes, que não existem em hardware são interpretadas 33 Princípios de Projeto para Computadores Modernos Princípios do projeto RISC que os arquitetos de processadores de propósito geral devem seguir: Maximizar a Taxa à qual as instruções são executadas Uso de paralelismo: execução de várias v instruções lentas ao mesmo tempo Execução de instruções não precisa seguir a lógica l da programação 34 17
Princípios de Projeto para Computadores Modernos Princípios do projeto RISC que os arquitetos de processadores de propósito geral devem seguir: As instruções precisam ser facilmente decodificadas decodificação influencia na velocidade de execução das instruções decodificação determina os recursos a serem usados na execução das instruções quanto menor o número n de formatos, mais fácil f a decodificação 35 Princípios de Projeto para Computadores Modernos Princípios do projeto RISC que os arquitetos de processadores de propósito geral devem seguir: Somente as Instruções de Load e Store devem referenciar a Memória Acesso a memória é mais lento Instruções que acessam a memória podem ser intercaladas com outras instruções 36 18
Princípios de Projeto para Computadores Modernos Princípios do projeto RISC que os arquitetos de processadores de propósito geral devem seguir: Projetar uma máquina m com muitos registradores (>= 32) Palavras de memória devem permanecer nos registradores o maior tempo possível Falta de registradores pode obrigar a buscar varias vezes a mesma palavra da memória 37 Princípios de Projeto para Computadores Modernos Princípios do projeto RISC que os arquitetos de processadores de propósito geral devem seguir: Observação: Outras soluções ões: Existe limite tecnológico para desenvolvimento do hardware do chip de processamento que depende do estado da arte da tecnologia. Solução para aumentar a velocidade do processador: Uso de paralelismo. em nível n das instruções ões: um único processador deve executar mais instruções por segundo em nível n do processador: vários processadores trabalhando juntos na solução do mesmo problema 38 19
Princípios de Projeto para Computadores Modernos Paralelismo ao Nível N das Instruções Maior gargalo para a velocidade de execução de instruções é o acesso a memória Execução em Pipeline O processamento em pipeline divide a execução de instruções em várias partes, cada uma das quais tratada por um hardware dedicado exclusivamente a ela. 39 Princípios de Projeto para Computadores Modernos (a) Pipeline de 5 estágios. (b) Estado de cada um dos estágios em função do tempo (estão ilustrados 9 períodos do clock). 40 20
Princípios de Projeto para Computadores Modernos Paralelismo ao Nível N das Instruções Funcionamento de um pipeline de 5 estágios O estágio 1 busca a instrução da memória e armazena num buffer até chegar a hora de executá-la No estágio 2 ocorre a decodificação da instrução, determinando tipo e operandos No estágio 3 ocorre a busca dos operandos na memória ou nos registradores No estágio 4 tem-se a execução - passagem pelo caminho de dados No estágio 5 o resultado do processamento é escrito num registrador 41 Princípios de Projeto para Computadores Modernos Paralelismo ao Nível N das Instruções A idéia básica do pipeline é a mesma de uma linha de produção em série. Vários processamentos estão sendo executados ao mesmo tempo. A figura mostra o funcionamento do pipeline, mostrando que os estágios de cada processamento são aplicados a várias v instruções ao mesmo tempo. Exemplo: no tempo 1 a instrução 1 está sendo lida, no tempo 2 a instrução 1 está sendo decodificada enquanto que a instrução 2 está sendo lida, no tempo 3 a instrução 1 está buscando dados, a instrução 2 está sendo decodificada e a instrução 3 está sendo lida, e assim por diante. 42 21
Princípios de Projeto para Computadores Modernos Paralelismo ao Nível N das Instruções Arquiteturas Superescalares Se um pipeline é bom, com certeza dois serão ainda melhor. Neste caso, uma única unidade de busca de instruções lê 2 instruções e coloca cada uma em 1 pipeline. 43 Princípios de Projeto para Computadores Modernos Paralelismo ao Nível N das Instruções Arquiteturas Superescalares A execução das instruções é feita em paralelo e: não pode haver conflitos pelo uso de recursos (mesmo registro, por exemplo) o resultado de uma instrução não pode depender do resultado da outra pode se pensar em pipelines com leitura inicial de 3 ou mais instruções, porém o hardware fica complexo. 44 22
Princípios de Projeto para Computadores Modernos Dois pipelines de 5 estágios com uma unidade de busca de instruções comum a ambos. 45 Princípios de Projeto para Computadores Modernos Paralelismo ao Nível N das Instruções Arquiteturas Superescalares Máquinas de alto desempenho usam outra metodologia: A idéia básica é ter um único pipeline, com diversas unidades funcionais O estágio 3 pode distribuir instruções a uma velocidade consideravelmente mais alta do que o estágio 4 pode executálas. Este estágio usa vários dispositivos de hardware (inclusive mais do que uma UAL) para acelerar o processamento neste estágio. 46 23
Princípios de Projeto para Computadores Modernos Processador superescalar com 5 unidades funcionais 47 Princípios de Projeto para Computadores Modernos Paralelismo ao Nível N do Processador A medida que os processadores vão ficando mais rápidos: aparecem limitações de ordem física (velocidade da luz em fios de cobre ou fibras ópticas) maior produção de calor pelo chip (problema para dissipar essa energia) Operação do processador em pipeline ou em superescalar possibilita ganhos de 5 a ~10 vezes. Para ganhos maiores, 50-100 ou mais vezes, deve-se projetar computador com mais de 1 processador 48 24
Princípios de Projeto para Computadores Modernos Computadores Matriciais (2 implementações) Processador matricial Composto de grande número de processadores idênticos Cada processador executa a mesma sequência de instruções sobre diferentes conjuntos de dados Tem uma única unidade de controle Tem uma UAL para cada processador Problema: Os processadores matriciais não são independentes pois compartilham uma única UC. 49 Princípios de Projeto para Computadores Modernos Computadores Matriciais (2 implementações) Processador vetorial muito parecido com processador matricial operações aritméticas são executadas numa única UAL, que opera em pipeline operandos são colocados em um registro vetorial para serem processados na UAL 50 25
Princípios de Projeto para Computadores Modernos Computadores Matriciais (2 implementações) Processador matricial x vetorial programação para o matricial voltada ao paralelismo (mais difícil) processador matricial é, em geral, mais rápido principalmente para repetição de um mesmo processamento em vários "pedaços" dos dados processador vetorial se adapta a processamentos paralelos e não paralelos hardware do matricial é mais caro (muitas UALs) 51 Princípios de Projeto para Computadores Modernos Multiprocessadores é composto de vários v processadores independentes compartilham uma mesma memória por um barramento principal ou compartilham uma memória e tem memórias locais executam processamentos locais liberam tráfego do barramento principal é necessário gerenciar conflitos 52 26
Princípios de Projeto para Computadores Modernos Multicomputadores Sistemas com um grande número de computadores interconectados Não existe nenhum tipo de memória comum sendo compartilhada Comunicação entre computadores é feita através de troca de mensagens a uma velocidade bem alta Computador não precisa estar ligado diretamente com todos os outros (uso de topologias em árvore, anéis, etc..) Mensagens são roteadas do computador fonte para o destino (usando computadores intermediários) Existem em operação sistemas multicomputadores com mais de 10000 computadores 53 Princípios de Projeto para Computadores Modernos (a) Multiprocessador organizado em torno de um único barramento.. (b) Multicomputador com memórias locais. 54 27
Princípios de Projeto para Computadores Modernos Importante: Como sistemas multiprocessadores são mais fáceis de programar e sistemas multicomputadores são mais fáceis de construir, existem sistemas híbridos. Tais computadores dão a ilusão de compartilhamento de memória, sem arcar com o ônus de implementá-lo diretamente. Problema: Sistemas com muitos processadores (>64) são de difícil implementação. Dificuldade está na conexão dos processadores a memória. 55 28