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...) EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 1 O paradigma do programa residente em memória • Uma das principais desvantagens do ENIAC era o facto de a programação do computador ser efectuada por recablagem da 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) EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 2 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 EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 3 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 EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 4 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 Código da (…) instrução A1 = VALOR + A2 Memória VALOR ALU 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 ALU Conteúdo: Memória Código de instrução CPU INSTR. A2+VAL Registo de instrução A1 A2 CPU EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 5 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 EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 6 A1 A2 CPU Arquitectura básica da UPC • Para facilitar a nossa abordagem, começaremos por considerar a arquitectura mínima que nos permite a CPU execução de um programa residente em memória: Memória Registo de programa (PC) Registo R1 m bits (3Eh) (55h) 00111110 01010101 Descodificação e controlo de execução das instruções Registo de Instrução (IR) n bits (código de instrução) Barramento de endereços Barramento de dados incr_RP carr_R1 carr_RI (sinais de controlo) n bits EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 7 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 Registo de Instrução (IR) 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 EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 8 Registo R1 carr_R1 carr_RI (sinais de controlo) Etapas elementares na execução de uma instrução • Instrução LD R1,#55H: CPU Memória 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 controlo C 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_R1 (carrega o operando no registo R1) incr_PC (incrementa PC para apontar para o código da instrução seguinte) carr_RI (sinais de controlo) n bits EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 9 Etapas elementares (cont.) Carrega IR Increm. PC Carrega R1 Increm. PC • O diagrama de estados para a execução da instrução LD R1,#55H tem uma correspondência directa com o seguinte diagrama temporal: (carrega registo A carr IR T1 Relógio (CLK) carr_IR T2 T3 EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 10 T4 (incrementa PC para ler o operando 55h) B incr PC C carr R1 no registo R1) incr_PC carr_R1 de instrução) D (carrega o operando 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) EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 11 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) EEC2104 – Microprocessadores - FEUP / DEEC / JMF - 12