440 likes | 577 Views
Professor: André Luis Meneses Silva E-mail/msn: andreLuis.ms@gmail.com Página: www.dcomp.ufs.br/index.php/docentes:Andre. Processadores – Aula 01. Agenda. RISC vs CISC Processadores Execução de uma instrução Convenções Lógicas de Projeto Metodologia de Clocking
E N D
Professor: André Luis Meneses Silva E-mail/msn: andreLuis.ms@gmail.com Página: www.dcomp.ufs.br/index.php/docentes:Andre Processadores – Aula 01
Agenda • RISC vs CISC • Processadores • Execução de uma instrução • Convenções Lógicas de Projeto • Metodologia de Clocking • Construindo um caminho de dados.
RISC vs CISC • Um pouco de história... • Durante o final da década de 70, houve experimentos com processadores que faziam uso de instruções muito complexas possibilitadas através de interpretador. • Os pesquisadores ainda tentavam fechar a lacuna entre o que as máquinas podiam fazer e o que as linguagens de programação de alto nível demandavam. • Por outro lado, a IBM trabalhou em um minicomputador de alto desempenho, denominado 801, que pregava o contrário, ou seja, instruções bastante simples, sem uso de interpretador.
RISC vs CISC • Em 1980, David Patterson e Carlo Séquin começaram a projetar chips para CPU e cunharam o termo RISC para os chips que produziram. • Em 1984, Hennessy projetou e fabricou o MIPS. A partir daí começou a diferenciação e a guerra entre os defensores do CISC e RISC.
RISC vs CISC • CISC (Complex Instruction Set Computer) • Se caracteriza por possuir um conjunto de instruções bastante complexo. • Possui uma quantidade muito maior de instruções. • Possui uma quantidade menor de registradores. • RISC (Reduced Instruction Set Computer) • Se caracteriza por possuir um conjunto de instruções bastante simples. • Possui uma quantidade pequena de instruções. • Possui muitos registradores • Mas afinal quem venceu a batalha?
RISC vs CISC • Embora processadores RISC, na época, possuíssem desempenho muito superior aos do CISC, os CISC não foram derrotados. • Várias empresas já tinham desenvolvidos projetos de software completos para processadores CISC. • A Intel, grande fabricante de processadores CISC, adequou as idéias da arquitetura RISC em sua arquitetura CISC. • Desde os 486, os processadores Intel são híbridos, possuindo um núcleo RISC para instruções mais simples e um núcleo CISC para as instruções mais complexas.
Processadores • CPU (Unidade Central de processamento) • “Cérebro” do computador • Executar programas armazenados na memória principal. • Os componentes de um sistema computacional são ligados através de um barramento. • Barramento é um conjunto de fios paralelos que transmitem endereços, dados e sinais de controle. • Barramentos podem ser: • Externos à CPU. • Internos à CPU.
Processadores • Elementos de uma CPU • Unidade de controle • Responsável por buscar instruções na memória principal e determinar o seu tipo. • Caminho de Dados: • Elementos que manipulam ou armazenam dados. • Unidade Lógica e Aritmética (ALU) • Responsável por efetuar as operações de adição, subtração, and, or, etc. • Registradores • Memórias locais de alta velocidade. • Cache
CPU: Execução de Instrução • Passos: • Trazer a próxima instrução da memória até o registrador. • Alterar o contador do programa para indicar a próxima instrução. • Determinar o tipo de instrução trazido. • Se a instrução usar uma palavra na memória, determinar onde essa palavra está. • Trazer a palavra para dentro de um registrador da CPU, se necessário. • Executar a instrução • Voltar a etapa 1 para iniciar a execução da instrução seguinte.
CPU 1. Trazer a próxima instrução da memória até o registrador.
CPU 2. Alterar o contador do programa para indicar a próxima instrução.
CPU 3. Determinar o tipo de instrução trazido.
CPU 4. Se a instrução usar uma palavra na memória, determinar onde essa palavra está.
CPU 5. Trazer a palavra para dentro de um registrador da CPU, se necessário.
CPU 6. Executar a instrução 7. Repetir os passos apresentados
CPU Alguma coisa está faltando neste hardware? Qual dos dois valores é usado para o PC, por exemplo? Quem é o responsável por controlar estes elementos de hardware?
Multiplexador Multiplexador Unidade de Controle Multiplexador
Passar para PC o valor da próxima instrução (PC + 4) ou o valor do endereço do desvio
Conduzir a saída da ALU, ou da memória de dados para o banco de registradores.
Conduzir o valor do registrador ou do campo offset de uma instrução.
Convenções lógicas de Projeto • Elementos funcionais de um processador: • Elementos que operam nos valores de dados • São os elementos combinacionais. • Suas saídas dependem apenas da entrada atual. • Dada a mesma entrada, estes elementos sempre produzem uma mesma saída. • Não possuem memória. • Elementos que contêm estados • São os elementos seqüenciais • Possuem um armazenamento interno • Possuem, no mínimo, duas entradas e uma saída. • Valores de entrada: clock e o dado a ser escrito. • Valor de saída: dado a ser lido. • Clock informa quando se deve escrever. Porém, a leitura pode ser feita a qualquer momento.
Convenções lógicas de Projeto • Sinal Ativo • Quando o sinal de clock está logicamente alto • Sinal Inativo • Quando o sinal de clock está logicamente baixo
Metodologia de clocking • Define quando os sinais podem ser lidos e quando podem ser escritos. • Importante para estabelecer a sincronização destas operações. • Sem uma metodologia de clocking, ou seja, sem a sincronização das leituras/escritas não teríamos garantia que o sinal lido corresponde ao valor antigo, ao valor recém-escrito ou ainda a uma mistura de ambos.
Metodologia de clocking • Sincronização acionada por transição • Quaisquer valores armazenados em um elemento seqüencial é atualizado apenas em uma transição de clock (transição de subida ou descida).
Construindo um caminho de Dados • Baseado no processador MIPS que vimos na disciplina, iremos listar progressivamente cada um dos elementos necessários para a construção do caminho de dados. • Cada elemento de um caminho de dados é uma unidade funcional usada para operar sobre os dados ou conter esses dados dentro de um processador.
Construindo um caminho de Dados • Elementos de um caminho de dados • Para lidar com as instruções precisamos: • Memória de instruções • Armazena instruções de um programa • Fornece uma instrução de acordo com o endereço passado • Registrador PC (contador do programa) • Contém o endereço da instrução atual • Somador • Utilizado, neste caminho de dados, para incrementar o valor do PC.
Construindo um caminho de dados Os três primeiros elementos do caminho de dados e suas interconexões.
Construindo um caminho de Dados • Elementos do caminho de dados • Banco de registradores • Utilizado para execução de instruções que necessitam fazer acesso a registradores. • Exemplo: Instruções de formato R. • Revisando: No Mips, instruções de formato R são aquelas que lêem valores de 2 registradores, realizam uma operação na ALU com o conteúdo destes dois registradores e escrevem o resultado em um outro registrador.
Construindo um caminho de Dados • Devido às instruções de formato R, o banco de registradores precisa: • Para a leitura: • Duas entradas para identificar o registrador que desejamos fazer a leitura. • Duas saídas para obter os valores destes registradores. • Para a escrita: • Duas entradas. Uma para identificar o valor a ser escrito e outra entrada para o registrador no qual desejamos realizar a escrita.
Construindo um caminho de Dados • Banco de registradores
Construindo um caminho de Dados • lw $t1, offset($t2) • As instruções lw e sw, calculam um endereço de memória somando o registrador de base com o campo offset de 16 bits. • No caso de sw, além desta operações, precisamos ler o valor de $t1 para podermos armazená-lo em memória. • No caso de lw, precisamos escrever o valor da memória em $t1. • Logo, além do registrador esta instrução também necessita de uma ALU para realização das operações aritméticas.
Construindo um caminho de Dados • Banco de registradores + ALU
Construindo um caminho de Dados • Adicionalmente, para lw e sw, também é necessário uma memória de dados. • A memória de dados também precisa dar suporte a leitura e escrita. • Além disso, é necessário um hardware adicional para transformar a constante offset de 16 bits em um número de 32 bits.
Construindo um caminho de dados • Instruções de desvio • BEQ $t1, $t2, offset • Para termos o comportamento desta instrução precisamos calcular o desvio que é obtido estendo o sinal do campo offset de 16 bits para 32. • Em seguida, o campo offset é deslocado de 2 posições. • Porque? • Após isso o campo offset é somado ao valor de PC + 4 (o endereço da próxima instrução). • Também utilizamos a ALU para verificarmos se os valores de $t1, $t2 são iguais.
Construindo um caminho de dados • Esta mesma idéia é válida para as instruções de desvio incondicional. Sendo necessário fazer alguns pequenos ajustes. • Substituímos os 28 bits menos significativos de PC+4 pelos 26 bits significativos do offset deslocados de duas posições.
Referências • Organização e Projeto de Computadores • Seções 5.1 a 5.3