Dos sistemas digitais aos computadores e aos Ps • Organização: – – – – – – – Arquitecturas pré- von Neumann O paradigma do programa residente em memória Sobre o uso da memória Arquitectura básica da unidade de processamento central Etapas elementares na execução de uma instrução O impacto da microelectrónica Conceitos básicos sobre os microprocessadores de 8 bits Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 1 Arquitecturas pré von Neumann • Computadores electro-mecânicos: – Konrad Zuse (Z1 a Z3) – Howard Aiken (Mark I) • Computadores baseados em válvulas – John Atanasoff e Clifford Berry (ABC) – John P. Eckert e John W. Mauchly (ENIAC) Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 2 Arquitecturas pré von Neumann: O ENIAC • Apresentado ao público em 1945, o ENIAC foi o primeiro computador electrónico (Electronic Numerical Integrator And Computer) • As suas 18.000 válvulas permitiam-lhe executar 5.000 adições por segundo (mas o recorde de funcionamento ininterrupto foi de apenas 20 horas...) Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 3 O paradigma do programa residente em memória • Uma das principais desvantagens do ENIAC consistia no facto de a programação do computador ser efectuada por recablagem da sua unidade de controlo • Foi ainda durante o desenvolvimento do ENIAC que o conceito de programa residente em memória tomou forma, com base no célebre documento de John von Neumann, First Draft of a Report on the EDVAC (que compilava o trabalho de um grupo de 32 pessoas) Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 4 A “arquitectura de von Neumann” CPU ALU E/S MEM. EXT. CONTR. • As principais características da arquitectura proposta no First Draft of a Report on the EDVAC são as seguintes: – Usava o sistema binário para representar os dígitos – Advogava o processamento em série, bit a bit – Propunha que as operações a executar fossem armazenadas em memória, em vez de serem definidas pelo estabelecimento de ligações físicas Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 5 John von Neumann (cont.) CPU ALU MEM. E/S EXT. CONTR. • Nas arquitecturas de von Neumann, – O programa a executar é definido pelo conjunto de instruções suportadas pela unidade de processamento central, sendo a introdução do programa em memória e a saída de resultados asseguradas pela unidade de E/S – A execução do programa tem lugar pela repetição de um ciclo com as seguintes etapas: i) leitura da instrução a executar, ii) obtenção dos operandos, iii) realização da operação e iv) armazenamento do resultado Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 6 O uso da memória e o von Neumann bottleneck Endereço da posição Endereço da posição (…) (…) SOMAR SOMAR VALOR Conteúdo: INSTR. Código de instrução (…) VALOR ALU Memória Registo de instrução A1 A2 Conteúdo: (…) Operando SOMAR Memória Registo de instrução CPU Endereço da posição A1 A2 CPU Endereço da posição (…) (…) SOMAR SOMAR VALOR VALOR ALU INSTR. Conteúdo: INSTR. (…) Operando (…) Memória ALU INSTR. SOMAR Registo de instrução A1 A2 CPU Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 7 Memória ALU Conteúdo: Código de instrução INSTR. A2+VAL Registo de instrução A1 A2 CPU Ainda sobre o uso da memória • Na apresentação anterior omitiram-se explicitamente vários pormenores: Endereço da posição (…) SOMAR VALOR Conteúdo: INSTR. Código de instrução (…) ALU – Como são gerados os endereços? – Como é que é indicado à ALU qual a operação a realizar em cada instante? – Como é que se indica aos vários registos quando devem carregar um novo conteúdo? Memória Registo de instrução Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 8 A1 A2 CPU Ainda sobre o uso da memória (cont.) • O CPU necessita por vezes de suspender temporariamente o “programa principal”, para executar um outro segmento de programa: – Quando se efectua a chamada a uma “subrotina” – Quando um evento exterior requer a “atenção” do CPU • Após esta suspensão, a execução do programa principal deve ser retomada no mesmo ponto (o que obriga naturalmente a guardar esta informação...) Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 9 Ainda sobre o uso da memória (cont.) • O programa principal só pode ser retomado no local onde foi suspenso se o endereço da instrução que iria ser executada a seguir for armazenado em memória (de leitura e escrita) • À zona de memória que é usada para armazenar o endereço da instrução seguinte é dada a designação de stack (“pilha”) Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 10 Arquitectura básica da UPC • Para facilitar a nossa abordagem, começaremos por considerar a arquitectura mínima que nos permite a execução de um programa residente em memória: CPU Memória Registo de programa (PC) m bits (3Eh) (55h) 00111110 01010101 Registo R1 Registo de Instrução (IR) n bits (código de instrução) Barramento de endereços Barramento de dados incr_RP n bits Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 11 Descodificação e controlo de execução das instruções carr_R1 carr_RI (sinais de controlo) Arquitectura básica da UPC (cont.) • Assumindo que se pretende apenas executar uma instrução que permita a carga de um operando em memória, deverá ser fácil concluir porque é que a arquitectura apresentada é de facto a mínima... Memória CPU Registo de programa (RP) m bits (3Eh) (55h) 00111110 01010101 Descodificação e controlo de execução das instruções n bits (código de instrução) Barramento de endereços Barramento de dados incr_RP n bits Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 12 Registo R1 Registo de Instrução (IR) carr_R1 carr_RI (sinais de controlo) Etapas elementares na execução de uma instrução • Instrução LD R1,#55H: Memória CPU Registo de programa (PC) m bits (3Eh) (55h) 00111110 01010101 Registo R1 Registo de Instrução (IR) A carr_IR (carrega registo de instrução) B incr_PC (incrementa PC para ler o operando 55h) Descodificação e controloC de execução das instruções n bits (código de D instrução) Barramento de endereços Barramento de dados incr_RP carr_R1 carr_RI n bits Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 13 (sinais de controlo) carr_R1 (carrega o operando no registo R1) incr_PC (incrementa PC para apontar para o código da instrução seguinte) Etapas elementares (cont.) • O diagrama de estados para a execução da instrução LD R1,#55H tem uma correspondência directa com o registo seguinte diagrama temporal: A carr_IR (carrega de instrução) T1 T2 Relógio (CLK) carr_IR T3 B C incr_PC carr_R1 Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 14 D T4 (incrementa PC para incr_PC ler o operando 55h) (carrega o operando carr_R1 no registo R1) incr_PC (incrementa PC para apontar para o código da instrução seguinte) O impacto da microelectrónica • Na época posterior aos computadores baseados em válvulas electrónicas, os principais marcos tecnológicos foram os seguintes: – 1947: O transístor (primeiro computador baseado em transístores: NCR 304, em 1957) – 1958:O circuito integrado (primeiros computadores baseados em CI: IBM System 360, DEC PDP-8, em 1965) – 1971: O microprocessador (primeiro computador baseado num microprocessador: Micral, em 1973) Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 15 O i4004: O primeiro microprocessador • O Intel 4004 foi o primeiro microprocessador, tendo sido inventado por Ted Hoff (a quem tinha sido dado o encargo de projectar uma calculadora para uma firma Japonesa) • Com 2.300 transístores, o i4004 baseava-se numa arquitectura de 4 bits e apresentava um custo unitário de 200 dólares (o i4004 não chegou no entanto a constituir o CPU de nenhum computador) Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 16 Conceitos básicos sobre Ps de 8 bits • Apesar das arquitecturas de 32 e 64 bits serem hoje em dia comuns, os componentes de 8 bits continuarão a existir por tempo indeterminado, já que: – Muitas aplicações (em particular em domínios com o controlo de máquinas, electrodomésticos, etc.) não obtêm benefícios de um maior número de bits – Passar de 8 para 16 bits representa em princípio maior área de silício e maior número de pinos, logo maior custo, sendo que o baixo custo é fundamental para o sucesso Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 17 Conceitos básicos sobre Ps de 8 bits (cont.) • Repare-se que a arquitectura apresentada abaixo, face à arquitectura mínima analisada, acrescenta dois blocos: o stack pointer e a ALU Barramento de dados n SP Descodificação e controlo de execução das instruções PC R1 R0 IR Acumulador Variáveis de estado n n ALU m Barramento de endereços Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 18 Reg. temp. Transferência interna de dados • Repare-se que o bloco acumulador Acumulador é necessário para nos permitir n n Variáveis aplicar às entradas da ALU os dois de estado operandos em simultâneo, uma vez ALU que temos apenas um barramento Reg. temp. interno de dados • Pela mesma razão, é necessário um registo para armazenar temporariamente o resultado Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 19 Controlo de estado nas saídas dos registos • A solução apresentada na transparência anterior requer que as saídas dos registos possam ser colocadas em terceiro estado, para garantir a inexistência de conflitos no acesso ao barramento RK (um qualquer dos registos na figura 5.8) abre_reg Bit 0 Dados[0] Dados [7:0] (oito bits) Bit 7 Dados[7] Dados[7:0] (oito bits) R0 Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 20 8 8 R1 8 R2 8 RK A comunicação com o exterior • A unidade de processamento central comunica com o exterior através de três barramentos: – Endereços, onde se especifica qual a posição (de memória ou E/S) a aceder – Dados, pelo qual circula a informação de / para o CPU – Controlo, que reúne as linhas que codificam o tipo de operações a executar (e.g. se o CPU pretende ler ou escrever na memória) Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 21 A memória revisitada: Subrotinas e interrupções • Referimos já que a suspensão temporária do programa principal pode ocorrer em duas situações: – Por chamada a uma subrotina – Por ocorrência de um evento assíncrono com a execução do programa principal, que o interrompe para poder ter a “atenção” do CPU • A sequência de acções que tem lugar é no entanto idêntica em ambos os casos e será agora analisada Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 22 Subrotinas e interrupções (cont.) • A progressão na execução de um programa, temporariamente suspensa por uma das razões apontadas na transparência anterior, pode ser ilustrada como se apresenta à direita: Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 23 Memória Cód. da instr. actual Código “principal” Cód. da instr. seguinte Código de instrução Código que é executado “a pedido” Cód. instr. de retorno O uso da stack • Assumindo que a stack cresce para baixo, o que nem sempre acontece, o seu uso começaria assim: Chamada a subrotina Cód. da instr. seguinte (RP) (a apontar para a posição com endereço “A”) Cód. da instr. actual Cód. da instr. seguinte (endereços crescentes) (AP) ? (livre) (AP) (endereços crescentes) Ender. da posição A+1 ? (livre) Código de instrução Código de instrução (RP) Pilha Pilha Subrotina Subrotina Cód. instr. de retorno Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 24 ? (livre) Cód. instr. de retorno Conclusão • Objectivo principal do capítulo: Efectuar a ponte entre as duas alternativas principais de projecto – Hardware dedicado (com funções pré-definidas ou DLP) – Código residente em memória • Pistas para a continuação do estudo: – Arquitectura de computadores (princípios gerais e evolução desde von Neumann) – Impacto da tecnologia Introdução ao Projecto com Sistemas Digitais e Microcontroladores Dos sistemas digitais aos computadores e aos microprocessadores - 25