Baixe o app para aproveitar ainda mais
Prévia do material em texto
26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 1/26 Autoria: Fernando Cortez Sica - Revisão técnica: Jackson Luis Schirigatti Arquitetura de computadores e microprocessadores UNIDADE 1 - QUAL O IMPACTO DA EVOLUÇÃO DOS SISTEMAS DE COMPUTAÇÃO EM SUA ESTRUTURAÇÃO? 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 2/26 Prezado estudante, nesta primeira conversa, abordaremos alguns conceitos e as evoluções dos computadores eletrônicos. Por que devemos conhecer a história dos computadores? Muitos aspectos dos computadores atuais vieram das gerações anteriores. Portanto, conhecer essa história significa conhecer mecanismos que habitam nos computadores atuais. Após isso, conversaremos sobre a estruturação básica dos computadores. Que nível de detalhamento veremos inicialmente? Dialogaremos sobre dois níveis de abstração: arquitetura e organização dos processadores. Por que é importante aprender esses aspectos? Sabendo as particularidades de uma máquina, temos condições de implementar sistemas de software mais eficientes, aproveitando melhor os recursos da máquina. Outro motivo para isso é a possibilidade de criarmos nosso próprio processador. Existem, hoje, várias plataformas de desenvolvimento que exigem menos esforços para a criação de hardware de sistemas computacionais. Na sequência, conversaremos sobre o mapeamento das instruções em nível de hardware – a chamada linguagem de programação Assembly. Nesse cenário, explicaremos como as instruções são executadas dentro do processador, constituindo o “ciclo de instrução”. Por fim, veremos duas técnicas para aumentar a eficiência computacional: pipeline e superescalaridade. Bons estudos! Introdução 1.1 Evolução dos sistemas computacionais Inicialmente, é interessante pontuar que os computadores acompanham a evolução da eletrônica, desde a válvula termiônica até os atuais circuitos integrados, que têm altos índices de integração. Dá-se o nome de integração à miniaturização e ao encapsulamento de vários componentes eletrônicos dentro de um mesmo invólucro. Tal evolução possibilitou a construção de circuitos menores, que tiveram, como consequências mais evidentes, as seguintes: maior densidade de componentes – um espaço menor pode conter muitos mais módulos implementados, que proverão uma maior eficiência computacional; menor distância para a propagação de sinais – uma menor distância proporciona um tempo menor de propagação de sinais. Então, tem-se a possibilidade de operar com 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 3/26 Mas qual é a história dos computadores? Responderemos a essa pergunta a seguir. 1.1.1 História dos computadores A ideia de automatizar cálculos já chamava a atenção da humanidade há muito tempo. De acordo com Monteiro (2007), podemos apontar, desde 3000 a.C., a existência de dispositivos mecânicos de auxílio aos cálculos: O computador de Babbage era capaz de armazenar 1000 números de 20 dígitos. A sua programação se baseava na utilização de instruções aritméticas e de desvios – jumps (saltos). Hoje, desvios são encontrados nas diversas linguagens de programação (desvios condicionais e não condicionais). Com a evolução das pesquisas sobre eletricidade, após os trabalhos de Nikola Tesla e a invenção dos motores elétricos, no século XIX, as máquinas de cálculo também evoluíram. Surgiram, então, os dispositivos baseados nas máquinas de Pascal e de Babbage com motores frequências mais altas; memórias com maior capacidade de armazenamento e mais rápidas – os pontos anteriores possibilitaram memórias mais eficientes e com maior capacidade de armazenamento. em 3000 a.C., havia a utilização do Ábaco ou soroban pelos povos da China e da Mesopotâmia; em 1500, uma calculadora mecânica é criada por Leonardo da Vinci; em 1642, um contador mecânico para somar e para subtrair é criado por Blaise Pascal; em 1673, houve uma concepção de calculadora por Leibniz, que a baseou na máquina de Pascal, adicionando-lhe as operações de multiplicação e de divisão; em 1801, Joseph Jacquard automatizou a produção de tecelagem. O desenho da trama do tecido era armazenado em cartões perfurados; em 1823, iniciaram os trabalhos de Charles Babbage na Royal Astronomical Society of Great Britain, que deram origem ao primeiro computador mecânico programável – a máquina analítica. Ada Lovelace foi a primeira pessoa a codificar um programa para computador, escrevendo-o para a máquina analítica de Babbage. A linguagem de programação Ada (criada em 1982) foi batizada em homenagem a ela. Para saber um pouco mais de Ada Lovelace, acesse a reportagem de Sousa (2020, on-line). Acesse (https://conhecimentocientifico.r7.com/ada- lovelace/.) Você o conhece? https://conhecimentocientifico.r7.com/ada-lovelace/ 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 4/26 elétricos. Outros lançamentos importantes para o aparecimento dos computadores como os conhecemos atualmente foram os seguintes. Com a invenção das válvulas termoiônicas, os projetos de computadores deixaram de utilizar os relés (ou componentes mecânicos) e passaram a ser completamente eletrônicos. 1.1.2 Geração dos computadores Os computadores mecânicos já apresentavam ideias que seriam mais bem exploradas nos computadores eletrônicos: a criação de uma linguagem de programação; estruturas de entrada e de saída de informações; e módulo central de processamento. Veremos, então, as gerações dos computadores. Como mencionamos, a primeira geração foi marcada pela utilização de válvulas termoiônicas. Tivemos, como primeiro computador construído nessa geração, o ENIAC (Electronic Numerical Integrator and Computer), com suas 30 toneladas e com suas 18 mil válvulas. Esse computador foi desenvolvido por John Mauchly e por John Eckert, entre os anos de 1943 e 1946, na Universidade da Pensilvânia (Estados Unidos). Cartão perfurado Em 1889, foram desenvolvidos, por Herman Hollerith, o cartão perfurado (de acordo com a ideia de Jacques Jacquard) e uma máquina que classificava e ordenava informações. Calculadora com relés eletromecânicos Em 1935, foi criada, por Konrad Zuse, uma calculadora com relés eletromecânicos. Computador baseado em relés eletromecânicos Em 1941, foi criado, por Konrad Zuse, o Z3, primeiro computador baseado em relés eletromecânicos. Primeira geração (1940-1952) 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 5/26 Inicialmente, o ENIAC realizaria cálculos balísticos para atender a demandas militares da Segunda Guerra Mundial. Porém, em função do atraso na construção, não foi colocado em operação a tempo. A sua primeira missão, de fato, foi frente à construção da bomba de hidrogênio. A performance do ENIAC era na casa de 5000 adições por segundo, empregando operandos representados no sistema de numeração decimal, que foi herdado dos dispositivos mecânicos. A sua programação era baseada nas posições de chaves e de cabos. Além do ENIAC, destacaram-se o EDVAC (Electronic Discrete Variable Automatic Computer), construído em 1946; e o computador desenvolvido no IAS (Institute for Advanced Studies, da Universidade de Princeton), por John von Neumann, em 1952. Duas inovações do computador de von Neumann foram a utilização de memória para que o programa fosse armazenado na ocasião de seu processamento; e a dissociação do módulo de controle do módulo responsável pelo processamento das instruções. A ideia de programa armazenado faz você lembrar-se de algo? Sim, essa é a filosofia dos computadores atuais! A figura “Módulos funcionais do IAS”, a seguir, ilustra a estruturação do IAS. #PraCegoVer: na figura, a memória principal e o equipamento de E/S são representados por paralepípedosverticais de cor verde: a memória principal está à esquerda da imagem, enquanto a unidade central de processamento está à direta. No centro da imagem, entre a memória principal e o equipamento de E/S, está a unidade central de processamento, que é composta por dois submódulos: a unidade lógico-aritmética (que recebe os operandos) e a Figura 1 - Modelos funcionais do IAS Fonte: STALLINGS, 2017, p. 14. 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 6/26 unidade de controle (que recebe as instruções). Esses submódulos estão indicados em cubos, que, igualmente, são verdes. Setas bidirecionais ligam a memória principal aos submódulos da unidade central de processamento; e os submódulos da unidade central de processamento ao equipamento de E/S. Os submódulos da unidade central de processamento (unidade lógico- aritmética e a unidade de controle) também são interligados por setas bidirecionais. Na figura “Módulos funcionais do IAS”, podemos notar a presença destes módulos: Temos mais duas contribuições do IAS. Uma é a utilização do termo “palavra” para denotar a unidade básica de armazenamento e de transferência das informações – no caso, a palavra era de 40 bits (representada no formato binário). A segunda contribuição foi a utilização do termo “registrador” para as estruturas de armazenamento internas à ULA e à unidade de controle (MBR, MAR e PC): As instruções do IAS eram agrupadas de acordo com a sua funcionalidade. Sendo assim, eram mapeadas instruções para transferência de dados (memória-registrador e registrador- registrador), para desvio incondicional; para desvio condicional; para manipulações aritméticas; e, finalmente, para modificação de endereço. memória principal – assim como acontece nos computadores atuais, a memória visa a armazenar instruções, operandos e resultados; unidade lógica-aritmética (ULA) – executa as operações aritméticas e lógicas; unidade de controle (UC) – decodifica e gera sinais de controle; equipamento de E/S – promove a interface entre o computador e o ambiente externo. registrador de buffer de memória (MBR – Memory Buffer Register) – faz a interface entre CPU e memória para enviar e para receber dados da memória; registrador de endereço de memória (MAR – Memory Address Register) – junto com o MBR, o MAR também faz parte da interface entre CPU e memória. Armazena o endereço de memória a ser manipulado; registrador de instrução (IR – Instruction Register) – armazena a instrução a ser executada; registrador de buffer de instrução (IBR – Instruction Buffer Register) – armazena a próxima instrução a ser executada; contador de programa (PC – Program Counter) – contém o endereço de memória da próxima instrução a ser executada; acumulador e quociente-multiplicador (AC e MQ, respectivamente) – armazenam os operandos e o resultado gerado pela ULA. Alan Turing pode ser considerado o pai da computação. Suas pesquisas proporcionaram a criação da inteligência artificial e culminaram na concepção dos computadores Você o conhece? 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 7/26 Nessa geração, outra ideia tomou força: a arquitetura de Harvard (1945). A arquitetura de Harvard separa a memória de dados da de instruções. Para tanto, faz uso de barramentos específicos dessas memórias para a CPU, tornando possível a busca simultânea de instruções e de dados. Isso possibilitou avanços na computação atual, como o pipeline e os processadores RISC (Reduced Instruction Set Computer – em português, computador com conjunto de instruções reduzidas). O que são pipeline e RISC? Conversaremos sobre ambos os conceitos em momentos oportunos. Outros lançamentos da primeira geração, de acordo com Stallings (2017), são os seguintes: UNIVAC (construído, em 1947, pela Eckert-Mauchly Computer); IBM-700 (1952); IBM-701 (1953); e IBM-702 (1955). A segunda geração foi impulsionada pela invenção do transistor, em 1948, por William Shockley (físico da Bell Labs). Os transistores substituíram, com eficiência, as válvulas termoiônicas, proporcionando uma drástica redução do tamanho dos equipamentos e um aumento nas capacidades de processamento e de memória. Nessa geração, aparecerem os núcleos de ferrite, os tambores e as fitas magnéticas como dispositivos de memória; linguagens de programação como o FORTRAN e o COBOL; e os primeiros sistemas operacionais – os “monitores” (STALLINGS, 2017). Merecem, também, destaques os seguintes fatos: atuais. Para saber mais sobre ele, acesse o texto de Nunes (2012). Acesse (http://www.dsc.ufcg.edu.br/~pet/jornal/junho2012/materi as/historia_da_computacao.html) Segunda geração (1952-1964) O transistor é construído a partir de materiais semicondutores (por exemplo, o silício). Ao silício, são adicionadas impurezas (como fósforo e boro), criando uma desestabilização em sua estrutura atômica, tornando-o carregado positivamente ou negativamente. Essa carga com excesso ou de íons positivos ou de íons negativos permite um controle do fluxo dos elétrons. Para saber mais desse assunto, acesse o vídeo de GV Ensino (2013). Acesse (https://www.youtube.com/watch? v=a8mo9EQZ2p4&list=PLFfpdsnO_HS_h- 1s1VCFPuFrC-P9btyfb&index=2.) Você quer ver? http://www.dsc.ufcg.edu.br/~pet/jornal/junho2012/materias/historia_da_computacao.html https://www.youtube.com/watch?v=a8mo9EQZ2p4&list=PLFfpdsnO_HS_h-1s1VCFPuFrC-P9btyfb&index=2. 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 8/26 Dentre as inovações do IBM-7094 que se fazem presentes nos computadores atuais, podemos destacar o processador dedicado de E/S. Com o processador de E/S, a CPU não apresenta mais a funcionalidade de controlar as operações de entrada e de saída, ficando, então, dedicada ao processamento efetivo. A troca de informações entre a CPU e o processador de E/S era baseada na utilização de um buffer de dados – razão pela qual o nome buffering (buferização) foi atribuído a essa inovação. A figura a seguir ilustra a estrutura para buffering. #PraCegoVer: a figura ilustra a interligação entre a unidade central de processamento e a memória por meio de um elemento denominado multiplexador. Os três elementos estão representados na porção esquerda da imagem, em caixas de cor laranja, de acordo com o seguinte ordem: unidade central de processamento, multiplexador e memória. As relações entre os três elementos são marcadas por setas bidirecionais, que indicam a retroalimentação de seus processos. Do multiplexador, derivam múltiplos canais de dados, que, por sua vez, são ligados aos dispositivos de E/S. Temos, como dispositivos de E/S, a unidade de fita magnética, fundação da companhia DEC (Digital Equipment Corporation) em 1957 e o lançamento do computador PDP-1 (que marcou o início da geração de minicomputadores); lançamento, pela IBM, dos modelos 7090 (1960), 7094 I (1962) e 7094 II (1964). Figura 2 - Arquitetura básica do IBM-7094 Fonte: STALLINGS, 2017, p. 21. 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 9/26 a perfuradora de cartões, a impressora de linha, a leitora de cartões, o tambor, o disco, as hiperfitas e o equipamento de teleprocessamento. Todos os canais de dados estão contidos em caixas de cor laranja, e sua relação com o multiplexador é marcada por setas bidirecionais. Alguns canais de dados interagem entre si: a unidade de fita magnética, a perfuradora de cartões, a impressora de linha e a leitora de cartões; o tambor e o disco; e o disco, as hiperfitas e o equipamento de teleprocessamento. Na figura “Arquitetura básica do IBM-7094”, aparece um módulo multiplexador, que consiste em um seletor, sendo capaz de selecionar, a cada momento, o canal de dados que transportará as informações entre a CPU e os dispositivos de E/S. Nessa época, surgiram os circuitosintegrados, encapsulando milhares de transistores em uma região de silício. Isso proporciou um grande salto na miniaturização dos computadores e um aumento na capacidade de processamento e de armazenamento de dados. Muitas das inovações também estão presentes nos computadores atuais: Merecem destaques, na terceira geração, os seguintes equipamentos. Terceira geração (1964-1971) utilização de semicondutores e de discos magnéticos nas memórias interna e externa – houve diminuição do tempo de acesso às informações e aumento da capacidade de armazenamento; técnica de spool (Simultaneous Peripheral Operation On-Line) – com o spool, o multiplexador de E/S da segunda geração foi substituído por um módulo que possibilitava o tráfego de dados de forma simultânea aos dispositivos de E/S; aparecimento da multiprogramação – houve avanços dos sistemas operacionais multiprogramados, como o CTSS/MIT, que deu origem ao MULTICS, que, por sua vez, evoluiu para o UNIX. Consistiu em uma família de computadores que se diferenciavam apenas em relação ao custo, à capacidade de memória, à quantidade de canais de E/S e à capacidade de processamento. Todos os modelos rodavam o sistema operacional OS 360. Foi um minicomputador da DEC direcionado ao segmento não coberto pela IBM de minicomputadores. IBM System 360 (1964) DEC PDP-8 (1964) 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 10/26 Outro ponto a ser observado no PDP-8 é a introdução de uma estrutura, denominada omnibus, para a interconexão de seus módulos internos. O omnibus contribuiu para a idealização dos barramentos atuais. Alguns autores dividem o período a partir de 1971 em duas gerações, que são marcadas pelo aparecimento dos circuitos integrados baseados em VLSI (Very Large Scale Integration – em português, integração em larga escala) e pelo aparecimento do ULSI (Ultra Large Scale Integration – em português, integração em ultra-escala). Porém, para que a nossa conversa fique mais objetiva, vamos focar em como VLSI e ULSI integram apenas uma geração: a quarta geração. Quando se fala em ULSI, dizemos que, dentro de um circuito integrado, podemos encontrar milhões de transistores. Atualmente, cada transistor se encontra na casa dos nanômetros (10 m). A microeletrônica (10 m) e a nanoeletrônica possibilitaram o surgimento de microprocessadores e de multiprocessadores altamente eficientes e de baixo consumo. Quarta geração (a partir de 1971) Gordon Moore, cofundador da Intel, em 1965, profetizou que a capacidade (e o número de transistores) de um processador dobraria a cada 18 meses. Essa profecia ficou conhecida como Lei de Moore. Para saber mais do assunto, acesse a matéria de Markoff (2016). Acesse (http://www1.folha.uol.com.br/tec/2016/05/1768028- lei-de-moore-esta-se-esgotando-e-tecnologia-busca- sucessores.shtml.) Você quer ler? - 9 -6 Introduziu o termo OEM ( – em português, fabricante original de equipamento) para designar a produção de módulos por terceiros. Original Equipment Manufacturers PDP-8 http://www1.folha.uol.com.br/tec/2016/05/1768028-lei-de-moore-esta-se-esgotando-e-tecnologia-busca-sucessores.shtml. 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 11/26 Quanto às linguagens de programação surgidas na quarta geração, citamos C++, SQL, JAVA. Há, ainda, os sistemas operacionais de rede e os distribuídos. Agora que conversamos um pouco sobre as gerações de computadores, faça uma pesquisa; escolha uma máquina de cada geração; e identifique, para cada modelo, os seguintes parâmetros: tamanho físico (pode ser peso ou espaço ocupado); capacidade de armazenamento da memória; e capacidade de processamento (podem ser, por exemplo, instruções por segundo ou qualquer outra métrica de performance que você encontrar, especificando-a). Reflita como a evolução contribui com nossos parques computacionais. Vamos Praticar! 1.2 Arquitetura convencional de computadores Ao conversarmos sobre a terceira geração, mais precisamente sobre o lançamento do IBM-360, mencionamos o termo “família”. Mas o que é uma família de computadores/processadores? Para respondermos a essa pergunta, falaremos, antes, de outros dois termos: arquitetura e organização de computadores. Os termos arquitetura e organização nos darão uma noção da abstração do processador quanto à separação da parte visível da parte não visível ao programador. Em algumas situações, é conveniente que conheçamos a estruturação do processador, para que possamos construir sistemas mais eficientes e otimizar o código para o processador em questão. Outra situação que temos é a necessidade de implementarmos sistemas de baixo nível, como a codificação do núcleo (kernel) de um sistema operacional e implementação de um compilador ou de um device driver. 1.2.1 Conceitos de arquitetura e de organização Para facilitar o entendimento dos conceitos, vamos comparar os termos “arquitetura” e “organização” com uma função do contexto da programação. Uma função consiste em seu protótipo (nome da função, tipo de retorno e lista de parâmetros) e na sua codificação. Podemos dizer que o protótipo se relaciona com a arquitetura do processador. Sendo assim, o programador, para utilizá-la, não precisa saber como foi implementada, mas, sim, como evocá- la em seu código. Assim é, também, nos processadores. Para implementarmos um sistema no qual temos de usar instruções em Assembly, precisaremos saber apenas a arquitetura. Notemos alguns aspectos relacionados à arquitetura do processador. 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 12/26 Por sua vez, a organização de computadores se relaciona aos aspectos de implementação interna do processador. O seu conhecimento não é importante para programador, que pode tomar o processador como uma caixa-preta. Conheça exemplos de itens da organização dos computadores! Conjunto de instruções Cada família de processadores (ou seja, conjunto de processadores com a mesma arquitetura) exporta o mesmo conjunto de instruções. Mecanismos de entrada e de saída (E/S) Os dispositivos de E/S (ou I/O – Input/Output), como os seus métodos de acesso, devem ser de conhecimento do programador, para que possa prover, aos seus sistemas, as funcionalidades inerentes à busca e à gravação de informações nos dispositivos externos. Técnicas de endereçamento Conhecer os modos de endereçamento do processador faz com que possamos implementar, por exemplo, a parte do SO responsável pelo gerenciamento da memória. Tamanho dos tipos de dados Saber o tamanho da palavra e, consequentemente, os tamanhos (em bytes) utilizados nos tipos de dados (tais como char e float) é útil na implementação de sistemas mais econômicos frente à memória. Pinagem do processador Corresponde ao protótipo da função (ou seja, relaciona a interface do processador com os demais componentes da placa). Registradores Para codificarmos, por exemplo, device drivers ou rotinas de interrupção, faz-se necessário saber o conjunto de registradores. Servem para ativar e para sincronizar os módulos do processador. Corresponde à própria implementação do hardware. Estabelece que um processador é composto por diversos submódulos. Cada implementação pode interconectá-los de forma distinta, mesmo no caso de processadores da mesma família. Devido à quantidade de estágios que o formam, pode influenciar a performance de processamento. Lembre-se de que conversaremos sobre pipeline mais à frente. Sinais internos de controle Forma de implementaçã o das instruções Hierarquia dos módulos funcionais Tamanho do pipeline 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 13/26 Para concluir a nossa conversa sobre os assuntos arquitetura e organização, podemos afirmar que, mesmo dentro de umamesma família, dois processadores produzidos por empresas diferentes (como a Intel e a AMD) têm organizações distintas. Independentemente da família e da organização, todos os processadores seguem a filosofia de programa armazenado. Mas o que vem a ser isso? Esse é o próximo assunto de nossa conversa. 1.2.2 Máquina de programa armazenado Tanto o IAS quanto a máquina de Harvard usavam a ideia de programa armazenado. Diante disso, faz-se necessária uma estruturação capaz de fornecer, ao processador, as instruções a serem executadas e os respectivos operandos, conforme mostra a figura “Estruturação básica de um computador”. Teste seus conhecimentos (Atividade não pontuada) Este é outro aspecto importante da organização dos computadores. Cada projeto de processador pode ter uma quantidade distinta de módulos replicados. Também conversaremos sobre superescalaridade adiante. Quantidade de unidades superescalares 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 14/26 #PraCegoVer: a figura é formada por dois círculos azuis. O primeiro ilustra a composição básica de um computador: módulos E/S, memória principal e unidade central de processamento. Esses três módulos que aparecem dentro do primeiro círculo azul, em círculos de cor laranja, estão interconectados pelo barramento do sistema. Relacionado ao primeiro círculo por um envoltório pontilhado, há um segundo círculo azul, que decompõe a unidade central de processamento em submódulos: registradores, ALU e unidade de controle. Esses três submódulos são, por sua vez, interconectados pelo barramento interno; e também estão em círculos de cor laranja. A figura “Estruturação básica de um computador” indica que um computador consiste em uma interconexão de módulos que podem ser decompostos em submódulos. A decomposição da figura seguiu uma abordagem top-down (de cima para baixo), em que um módulo é decomposto por módulos que são especializados e têm menor complexidade de implementação. Ainda em relação à figura “Estruturação básica de um computador”, podemos perceber que o computador pode ser decomposto pelos seguintes módulos: Figura 3 - Estruturação básica de um computador: composição segundo uma abstração de alto nível; e decomposição do processador em submódulos Fonte: Elaborada pelo autor, baseada em STALLINGS, 2017. 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 15/26 O que representam os submódulos pertencentes à CPU? Conversaremos sobre isso a seguir. CPU – é o módulo principal do computador e executa as instruções dos programas. Para tanto, cada instrução é lida da memória e carregada na CPU; memória principal – armazena as instruções, as informações a serem executadas e as informações de controle; E/S (entrada/saída) – são representados pelos controladores e pelos dispositivos de E/S, como controladores de teclado e de vídeo e HD (Hard Disk); barramento do sistema – cabe ao barramento do sistema prover a interconexão entre o processador, a memória e os dispositivos de E/S. Deve, também, prover mecanismos de sincronização e de gerenciamento, para que os intercâmbios de informações sejam realizados de forma segura e eficiente. Uma das preocupações relacionadas a um computador é a sua performance. Faça uma pesquisa e reflita sobre como os elementos básicos podem influenciar essa performance. Por exemplo, caso tenhamos duas máquinas distintas, poderemos afirmar que a melhor máquina é a que apresenta a maior frequência de clock? Vamos Praticar! 1.3 Unidade Central de Processamento Ainda há pouco, mencionamos que a CPU pode ser decomposta nos seguintes submódulos: unidade de controle, registradores, ALU e barramento interno. Mas quais são as funcionalidades de cada um deles? Responderemos, agora, a esse questionamento: registradores – são células de memória do processador das quais dependem o carregamento de instruções, os dados a serem processados e as informações de controle; ALU – contém o hardware para executar instruções aritméticas (como a adição) e lógicas (como a comparação de magnitude); barramento interno – provê a interconexão dos módulos da CPU; 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 16/26 Os registradores podem ser dos tipos GPR (General Purpose Registers – em português, registradores de propósito geral) e registradores de estado e de controle. A função dos GPR é armazenar as informações a serem processadas e as resultantes de processamento. Os registradores de estado e de controle armazenam informações úteis ao gerenciamento e à sincronização das etapas da instrução e dos módulos internos ao processador. Como exemplo de registradores de estado e de controle, podemos citar MBR, MAR, IR, PC. Você se lembra deles? São os mesmos de quando falamos sobre o IAS. Além do MBR, do MAR, do IR e do PC, podemos citar, ainda, os seguintes registradores, de acordo com Stallings (2017). Voltando às funcionalidades do processador, falamos que o processador gera sinais de controle para realizar as etapas do ciclo de instrução. Veremos, agora, o que vem a ser ciclo de instrução. 1.3.1 O ciclo de instrução As instruções são agrupadas em razão de suas funcionalidades e dos módulos ativados por ocasião de suas execuções. De forma geral, as instruções são agrupadas em quatro grupos (STALLINGS, 2017): unidade de controle – é responsável pelo gerenciamento do processamento e, também, pelo fluxo de informações dentro do processador. I/O AR (input-output address register) É um registrador da interface processador-dispositivo de I/O e armazena o endereço de I/O a ser manipulado. I/O BR (input-output buffer register) Armazena a informação manipulada entre a CPU e o dispositivo de I/O cujo endereço consta em I/O AR. Flags S erve para armazenar o estado da última operação da ULA. Assim, é possível informar se a última operação da ULA resultou em um valor nulo (flag zero); se resultou em um valor negativo (flag sinal); e, ainda, se o valor produzido extrapolou a capacidade de representação numérica (flag overflow). Oportunamente, veremos um exemplo em Assembly que manipula o registrador flags. processador-memória – fornece instruções que executam transferência de dados entre o processador e a memória; 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 17/26 Para que uma instrução seja executada, são necessárias várias etapas desde a sua busca na memória até a efetivação do resultado. Essas etapas são chamadas de ciclo de instrução, conforme ilustra a figura “Etapas do ciclo de instrução”, a seguir. #PraCegoVer: a figura ilustra um ciclo de cinco etapas: buscar instrução da memória; decodificar instrução; buscar operandos; execução; e escrita dos resultados (write-back). Cada etapa surge dentro de uma caixa laranja. Setas unidirecionais (da esquerda para direita) relacionam as cinco etapas. A última seta parte de escrita dos resultados e retorna à etapa inicial, buscar instrução de memória, indicando que o processo se retroalimenta. A etapa de buscar instrução apresenta um código associado: IR=Mem[PC]; PC = PC + 1. Por sua vez, a etapa de decodificar instrução apresenta uma subdescrição associada: geração de sinais de controle. Na figura “Etapas do ciclo de instrução”, o ciclo se repete a cada instrução, realizando as seguintes operações: processador-E/S – permite que informações sejam intercambiadas entre o processador e os módulos de E/S; processamento – desempenha o processamento propriamente dito. Para executar uma instrução de processamento, as informações a ser manipuladas deverão ter sido carregadas previamente nos registradores; controle – são aquelas que podem, por exemplo, modificar o fluxo de processamento, como acontece com os desvios condicionais. Figura 4 - Etapas do ciclo de instruçãoFonte: Elaborada pelo autor, 2020. busca da instrução – nesta etapa, transfere-se, do sistema de memória para o registrador IR, a instrução cujo endereço é referenciado pelo registrador PC. Após a transferência para o IR, o PC é incrementado para que transfira a instrução subsequente ao próximo ciclo de busca; decodificação – proporciona a geração de sinais para ativar módulos específicos do processador e para proporcionar direcionamento de fluxos para os dados; busca dos operandos – após a decodificação, o processador saberá qual classe de instrução será executada e, consequentemente, quais serão as fontes das informações a serem manipuladas. Dessa forma, realiza-se a busca dos operandos associados à instrução a ser executada; 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 18/26 Conversamos, aqui, sobre registradores, sobre classes de instrução, sobre ciclos de instrução e sobre outros elementos. Mas como podemos colocar tudo isso em prática? Exemplificaremos isso com conserva sobre a linguagem Assembly. 1.3.2 Linguagem Assembly A linguagem Assembly representa, na forma de itens mnemônicos, as instruções exportadas pelo processador. Cada processador apresenta o seu próprio Assembly: caso escrevermos, por exemplo, um programa em Assembly do ARM, esse não poderá ser compilado para o x86. Mas como é a sintaxe do Assembly? Para respondermos a essa questão, tomemos, como exemplo, um trecho de código escrito em um Assembly hipotético. O referido trecho ilustra a tradução do comando “if” em Assembly. mov Reg1, [Reg2] ; Reg1 = conteúdo da posição de mem. apontada por Reg2 mov Reg3, 10 ; Reg3 = 10 sub Reg1, Reg3 ; Reg1 = Reg1 - Reg3 js p_else ; desvio para p_else se flag sinal esteja sinalizada <sequência_if> ; codificação relativa ao if jump p_final ; desvio não condicional para p_final p_else: ; rótulo denominado p_else <sequência_else> ; codificação relativa ao else p_final: ; rótulo denominado p_final <restante_do_código> ; sequência após o desvio condicional Vamos, antes, fazer algumas considerações. A quantidade de operandos (itens a serem manipulados) pode variar de arquitetura para arquitetura. No nosso caso, as instruções poderão manipular, no máximo, dois operandos. Sendo assim, teremos a seguinte instrução: instrução operando_destino, operando_fonte No caso do “sub”, o operando à esquerda corresponde tanto à fonte quanto ao destino do resultado da operação. Caso o Assembly manipulasse três operandos, teríamos esta instrução: instrução operando_destino, operando_fonte1, operando_fonte2 Os comentários, no código, estão precedidos por ponto-e-vírgula. Voltando, então, ao código, percebemos que, na primeira linha, ocorre a instanciação, por meio do comando “mov” (movimentação de dados), do registrador “Reg1” com o conteúdo da posição de memória referenciado pelo registrador “Reg2”. Na segunda linha, é realizada a instanciação do registrador “Reg3” com o valor 10. Quando é realizada a operação “sub” na terceira linha, é instanciado o registrador flags. Caso a subtração resulte em 0, o bit zero é instanciado em 1; caso a subtração resulte em um valor negativo, o bit sinal é instanciado em 1. execução – representa a execução propriamente dita; escrita dos resultados (write-back) – efetiva os valores resultantes do processamento da instrução. 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 19/26 O flags é utilizado como parâmetro da quarta linha: instrução “js” (jump sinal). A instrução js faz com que o fluxo de processamento seja desviado para o rótulo “p_else” (um rótulo marca uma posição de memória) caso o bit flag sinal valha 1 – ou seja, caso a subtração anterior tenha gerado um valor negativo. Sendo assim, o trecho identificado como “<sequência_if>” somente será executado se o resultado da operação de subtração for maior ou igual a zero. Consequentemente, o trecho “<sequência_else>” será executado se o resultado da operação de subtração gerar um valor negativo. A instrução “jump” corresponde a um desvio não condicional (como o comando “goto” da linguagem C/C++). No caso do código, o desvio não condicional direciona o fluxo de processamento ao rótulo “p_final” – saindo da estrutura if/else. Exibimos apenas um Assembly hipotético, para que pudéssemos mostrar o que seria programar em Assembly – o estilo da programação. Em Assembly, temos de planejar, instrução por instrução, o que o computador deverá fazer. Atualmente, existem vários modelos de microprocessadores e de microcontroladores. Faça uma pesquisa das diferenças entre um microprocessador e um microcontrolador. Depois, veja a estruturação dos registradores e os tipos de instruções Assembly de, por exemplo, um microprocessador PIC. Vamos Praticar! 1.4 Tendências atuais Os processadores modernos englobam várias técnicas para aumentar a sua performance. Dentre essas técnicas, destacam-se mecanismos que embutem paralelismo para a execução das instruções. Inicialmente, vamos apresentar duas técnicas comumente usadas nos processadores atuais: o pipeline e a superescalaridade. 1.4.1 Pipeline 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 20/26 O pipeline consiste em antecipar o início da execução da próxima instrução. Em um processamento puramente sequencial, o início da próxima instrução é feito quando a instrução corrente completar todo o seu ciclo de instrução. No pipeline, a busca de uma nova instrução pode ser iniciada quando a instrução atual estiver em sua etapa de decodificação. Mas o pipeline toma por base apenas as etapas do ciclo de instrução? Não! Na verdade, cada etapa pode ser quebrada, ainda, em várias microinstruções. Para facilitar o entendimento disso, vamos adotar um processamento de sinais para um equipamento biomédico. Vamos supor que sejam necessárias quatro etapas: 1) aquisição de sinais a partir de um transdutor; 2) pré-processamento, como a aplicação de transformadas numéricas; 3) processamento efetivo; e 4) pós-processamento, como plotagem de gráficos e atuação eletromecânica. Agora, imaginemos dois cenários, como indica a figura “ Processamento puramente sequencial (a) e processamento baseado em pipeline (b)”. Em (a), temos o processamento das quatro etapas realizado no modo puramente sequencial. Em (b), temos a execução baseada em pipeline. Para o nosso exemplo, assuma que todas as etapas gastem o mesmo tempo de processamento. 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 21/26 #PraCegoVer: a figura mostra duas planilhas – (a) e (b) –, tendo, como linhas, as etapas de processamento de sinais (aquisição de sinais, pré-processamento, processamento e pós- processamento); e, como colunas, as marcações de tempo (de 1 até 12). O processamento é feito frame (quadro) a frame. Em (a), que retrata o processamento sequencial, temos, para o frame 1, a ocupação dos tempos 1, 2, 3 e 4. O processamento do frame 2 ocorre nos momentos 5, 6, 7 e 8. Finalmente, o frame 3 ocupa os momentos subsequentes: 9, 10, 11 e 12. Por sua vez, (b) ilustra o processamento com pipeline. No tempo 1, temos a aquisição do frame 1. No tempo 2, há o pré-processamento do frame 1 simultaneamente à aquisição do frame 2. No tempo 3, ocorrem o processamento do frame 1, o pré-processamento do frame 2 e a aquisição do frame 3. Em 4, há o processamento do frame 1, o processamento do frame 2 e o pré-processamento do frame 3. No momento 5, há o pós-processamento do frame 2 e o processamento do frame 3. Finalmente, no tempo 6, há o pós-processamento do frame 3, totalizando as etapas requeridas para o processamento de sinais. Na figura “Processamento puramente sequencial (a) e processamento baseado em pipeline (b)”, acima, no sistema com pipeline, cada etapaé processada por um hardware específico. Para que o módulo não fique ocioso, transferirá o seu resultado ao módulo seguinte (por meio de buffers de transferência) assim que finalizar um processamento; e iniciará o processamento da nova informação. Dessa forma, o tempo total do processamento do conjunto de frames diminui, embora o tempo de processamento de cada frame permaneça inalterado. O ideal é que o pipeline mantenham todos os módulos processando alguma informação; e que haja a vazão de um frame finalizado por unidade de tempo – no caso dos processadores, uma instrução sendo completada por unidade de tempo. Figura 5 - Processamento puramente sequencial (a) e processamento baseado em pipeline (b) Fonte: Elaborada pelo autor, 2020. 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 22/26 Para o nosso caso hipotético, com a aplicação do mecanismo de pipeline, conseguimos reduzir, pela metade, o tempo de processamento dos três frames. Em função da defasagem do início do processamento de cada frame, podemos falar que o pipeline realiza um “pseudoparalelismo”. Falamos que o pipeline é uma técnica baseada no pseudoparalelismo. A superescalaridade, seria um paralelismo pleno? Conversaremos sobre isso a seguir. 1.4.2 Superescalaridade Uma arquitetura é superescalar caso apresente replicações de suas unidades funcionais. Os processadores atuais utilizam essa filosofia junto com o pipeline para que se tenha altas performances computacionais. A figura “Parte de um processador hipotético superescalar”, a seguir, simplifica a parte de uma arquitetura hipotética dotada de estrutura superescalar. Os módulos “Soma FP”, “Mult FP” e “Unidade inteiros” denotam módulos responsáveis por realizar soma/subtração de ponto flutuante (floating point – FP); multiplicação/divisão de ponto flutuante; e operações que envolvem operadores inteiros, respectivamente. Você sabia que é possível fazer sistemas de software com abordagens baseadas em pipeline e em superescalaridade? Para isso, podemos realizar as implementações com “threads”. As threads se comportam como funções independentes entre si – ou seja, podem ser executadas paralelamente, compartilhando o mesmo espaço de endereçamento (por exemplo, podendo acessar as mesmas variáveis globais). Para saber mais sobre threads, você poderá procurar pela biblioteca pthread (POSIX threads). Se quiser ter uma ideia inicial, acesse o texto de Garcia (2017): https://www.embarcados.com.br/threads-posix/ (https://www.embarcados.com.br/threads-posix/). Você sabia? https://www.embarcados.com.br/threads-posix/ 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 23/26 #PraCegoVer: a figura ilustra uma conexão entre a memória e um buffer de instruções. Desse buffer de instruções, representado em um caixa laranja, deriva uma linha que interliga todos os módulos de processamento, indicados em caixas azuis: “Soma FP”, dois módulos “Mult FP” e três módulos “Unidades de inteiros”. Dos módulos “Soma FP” e “Mult FP”, sai uma linha que direciona os resultados para o “Banco de registradores FP”, de que, por sua vez, deriva uma linha bidirecional para a memória. Dos módulos “Unidade inteiros”, direcionam-se resultados ao “Banco de registradores inteiros”, de que, por fim, deriva uma linha bidirecional rumo à memória (interligando-se à saída bidirecional do “Banco de registradores FP”). Na figura “Parte de um processador hipotético superescalar simplificado”, a memória alimenta, com instruções, o buffer de instruções, que, após a decodificação, direciona-as aos módulos de processamento correspondentes. A superescalaridade é alcançada pela replicação de “Mult FP” e de “Unidades de inteiro”. Os bancos de registradores são específicos para os tipos de dados – ou seja, existem registradores GPR para o armazenamento apenas de valores de ponto flutuante (interagindo com os módulos que processam informações do tipo ponto flutuante). Temos, também, registradores GPR que armazenam apenas valores inteiros (conectados apenas aos módulos de processamento de valores inteiros). Figura 6 - Parte de um processador hipotético superescalar simplificado Fonte: Elaborada pelo autor, 2020. O processador Intel Core-i7 é um exemplo de processador atual que utiliza, dentre outras técnicas, as abordagens de pipeline e de superescalaridade. Para saber mais do assunto, você poderá acessar o texto de Telles (2009). Acesse (https://www.ic.unicamp.br/~ducatte/mo401/1s2009/T 2/042348-t2.pdf) Você quer ler? https://www.ic.unicamp.br/~ducatte/mo401/1s2009/T2/042348-t2.pdf 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 24/26 Existem outros mecanismos e estruturações para que tenhamos um aumento da capacidade de processamento. Na figura “Parte de um processador hipotético superescalar simplificado”, podemos dividir a memória em memória de instruções e em memória de dados, tal como ocorre na arquitetura Harvard. A mesma divisão é encontrada na cache nível 1 (level 1; L1): cache L1 de instruções e cache L1 de dados. Tais mecanismos e estruturações serão abordados ao longo de nossas conversas. Faça uma pesquisa e reflita sobre como a arquitetura Harvard está presente nos processadores atuais. Os processadores da Intel seguem o padrão Harvard? São superescalares? Têm pipeline? E os processadores ARM? Vamos Praticar! Teste seus conhecimentos (Atividade não pontuada) Nesta primeira conversa, falamos sobre os aspectos iniciais dos computadores; sobre suas gerações; sobre sua estruturação básica; sobre como as instruções são executadas; sobre duas técnicas para aumentar o poderio de processamento. Esperamos ter contribuído com seus estudos, apresentando-lhe conteúdos capazes de sustentar o seu desenvolvimento estudantil e profissional; e, com isso, ajudá-lo em análises e em tomadas de decisões quanto ao desenvolvimento de sistemas (tanto de software quanto de hardware) e à implantação de parques computacionais. Nesta unidade, você teve a oportunidade de: Conclusão https://www.ic.unicamp.br/~ducatte/mo401/1s2009/T2/042348-t2.pdf 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 25/26 identificar as particularidades de arquitetura e de organização, de modo a poder reconhecer e a analisar famílias de processadores; identificar os computadores frente ao seu contexto histórico, relacionando os pontos inerentes a cada geração às características dos atuais computadores; tomar conhecimento do funcionamento e analisar os impactos do pipeline e da superescalaridade sobre o funcionamento do computador; identificar e analisar os pontos que impactam no desempenho computacional. GARCIA, F. D. Threads POSIX. Embarcados, [S. l.], 13 mar. 2017. Disponível em: https://www.embarcados.com.br/threads-posix/ (https://www.embarcados.com.br/threads-posix/). Acesso em: 24 out. 2020. MARKOFF, J. Lei de Moore está se esgotando e tecnologia busca sucessores. Folha de São Paulo, São Paulo, 17 maio 2016. Disponível em: https://www1.folha.uol.com.br/tec/2016/05/1768028-lei-de-moore-esta-se- esgotando-e-tecnologia-busca-sucessores.shtml (https://www1.folha.uol.com.br/tec/2016/05/1768028-lei-de-moore-esta-se- esgotando-e-tecnologia-busca-sucessores.shtml). Acesso em: 24 out. 2020. MONTEIRO, M. A. Introdução à organização de computadores. 5. ed. Rio de Janeiro: LTC, 2007. NUNES, M. Alan Turing: o pai da computação. Jornal PETNews, Campina Grande, jun. 2012. Disponível em:http://www.dsc.ufcg.edu.br/~pet/jornal/junho2012/materias/historia_da_comp utacao.html (http://www.dsc.ufcg.edu.br/~pet/jornal/junho2012/materias/historia_da_computa cao.html). Acesso em: 23 out. 2020. SOUSA, I. Ada Lovelace – Biografia e sua importância na tecnologia. Conhecimento Científico, [S.l.], 7 fev. 2020. Disponível em: https://conhecimentocientifico.r7.com/ada-lovelace/(https://conhecimentocientifico.r7.com/ada-lovelace/). Acesso em: 22 out. 2020. STALLINGS, W. Arquitetura e organização de computadores. 10. ed. São Paulo: Pearson, 2017. Referências https://www.embarcados.com.br/threads-posix/ https://www1.folha.uol.com.br/tec/2016/05/1768028-lei-de-moore-esta-se-esgotando-e-tecnologia-busca-sucessores.shtml http://www.dsc.ufcg.edu.br/~pet/jornal/junho2012/materias/historia_da_computacao.html https://conhecimentocientifico.r7.com/ada-lovelace/ 26/06/2023, 19:56 Arquitetura de computadores e microprocessadores https://ambienteacademico.com.br/mod/url/view.php?id=779055 26/26 TELLES, B. O Processador Intel Core i7. Paulo Cesar Centoducatte, Campinas, 2009. Disponível em: https://www.ic.unicamp.br/~ducatte/mo401/1s2009/T2/042348-t2.pdf (https://www.ic.unicamp.br/~ducatte/mo401/1s2009/T2/042348-t2.pdf). Acesso em: 27 out. 2020. TRANSISTOR #02 – Histórico e funcionamento do transistor. [S. l.], 25 fev. 2013. 1 vídeo (14 min). Publicado pela instituição GV Ensino. Disponível em: https://www.youtube.com/watch?v=a8mo9EQZ2p4&list=PLFfpdsnO_HS_h- 1s1VCFPuFrC-P9btyfb&index=2 (https://www.youtube.com/watch? v=a8mo9EQZ2p4&list=PLFfpdsnO_HS_h-1s1VCFPuFrC-P9btyfb&index=2). Acesso em: 24 out. 2020. https://www.ic.unicamp.br/~ducatte/mo401/1s2009/T2/042348-t2.pdf https://www.youtube.com/watch?v=a8mo9EQZ2p4&list=PLFfpdsnO_HS_h-1s1VCFPuFrC-P9btyfb&index=2
Compartilhar