Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

<p>ARQUITETURA E ORGANIZAÇÃO</p><p>DE COMPUTADORES</p><p>Olá!</p><p>A humanidade desfrutou de incríveis benefícios desde o advento do</p><p>computador. A partir do surgimento da Máquina de Pascal e do Computador</p><p>Integrador Numérico Eletrônico, houve uma série de avanços na tecnologia e</p><p>desenvolvimento computacional. Hoje, os computadores estão presentes no</p><p>cotidiano de muitas pessoas e tem revolucionado os meios de trabalho, estudo,</p><p>lazer, entretenimento e informação. Sua importância é indiscutível e seu uso vem</p><p>se tornando cada vez mais acessível, sendo uma ferramenta fundamental para a</p><p>humanidade.</p><p>Com o passar do tempo, o desenvolvimento da tecnologia permitiu maior</p><p>avanço no que se refere aos processadores. O uso de válvulas, surgimento dos</p><p>transistores, circuitos integrados e, posteriormente, o microprocessador marcaram</p><p>essa evolução na história, sendo este último componente ainda usado atualmente.</p><p>Bons estudos!</p><p>AULA 1 - ARQUITETURA</p><p>DE COMPUTADORES</p><p>1 ARQUITETURA DE COMPUTADORES</p><p>Os computadores são compostos essencialmente de uma unidade central de</p><p>processamento (CPU, na sigla em inglês para Central Processing Unit), memória,</p><p>dispositivo de armazenamento, unidades de entrada/saída e um barramento que liga</p><p>esses componentes, como mostrado na Figura 1. A CPU é o componente central de</p><p>um computador, pois é aqui que todo o processamento de dados ocorre. Ela é dividida</p><p>em três submódulos: Unidade Lógica e Aritmética (ULA), Registradores e Unidade de</p><p>Controle (FERNANDEZ, 2015).</p><p>Figura 1 - Arquitetura de um computador</p><p>https://shre.ink/QsYi</p><p>Segundo Fernandez (2015), as Unidades Lógicas Aritméticas (ULA) são</p><p>responsáveis por implementar operações de soma, subtração, assim como operações</p><p>lógicas. Em casos específicos, também podem ser usadas para multiplicação e</p><p>divisão. Registradores, por outro lado, são memórias de tamanho pequeno e de alta</p><p>velocidade, que podem ser usadas para executar processos na CPU. Além disso,</p><p>muitos modelos de CPU possuem uma memória conhecida por cache, que tem como</p><p>objetivo otimizar seu desempenho, evitando assim o acesso de dados a memórias</p><p>externas.</p><p>A Unidade de Controle (UC) é a parte essencial de um computador, sendo</p><p>responsável por gerenciar a comunicação e a troca de informações entre a ULA, os</p><p>registradores, o barramento externo e os periféricos. Além disso, a UC interpreta e</p><p>executa o código do programa como instruções para a CPU (FERNANDEZ, 2015).</p><p>Portanto, é por meio da UC que todo o funcionamento do computador é controlado.</p><p>Os componentes do computador são interligados por um barramento. Este tipo</p><p>de conexão possibilita o envio simultâneo de vários dados para diferentes destinos,</p><p>logo, durante sua operação, o barramento deve fornecer informações de dados,</p><p>endereços e controle (FERNADEZ, 2015). A Figura 1, vista anteriormente, é uma</p><p>ilustração deste processo.</p><p>A memória é um local de armazenamento de dados que oferece um acesso mais</p><p>rápido do que o disco, porém mais lento que os registradores da CPU. Embora a</p><p>memória seja volátil e perca seus dados quando o computador é desligado, o disco</p><p>ainda preserva essas informações (FERNANDEZ, 2015).</p><p>Finalmente, os módulos de entrada e saída conectam o computador ao mundo</p><p>exterior, permitindo a conexão com dispositivos diversos (tais como o mouse, o</p><p>teclado e as impressoras).</p><p>1.1 Arquitetura de Havard</p><p>A Figura 2 apresenta a arquitetura de Harvard, nome dado devido às</p><p>características do computador eletromecânico Mark I desenvolvido na Universidade</p><p>de Harvard. Nele, as instruções eram armazenadas em uma fita perfurada e os dados</p><p>em contadores eletromecânicos. Na arquitetura de Harvard, há a separação da</p><p>memória, onde ficam armazenadas as instruções e dados da memória, contento</p><p>também diferentes meios de comunicação com a memória.</p><p>Figura 2 - Arquitetura de Havard</p><p>Fonte: https://shre.ink/Qs4e</p><p>A Arquitetura Harvard de computadores apresenta características notáveis,</p><p>https://shre.ink/Qs4e</p><p>como memórias de instrução e dados que são separadas entre si. Esta particularidade</p><p>possibilita que elas tenham propriedades díspares, como largura de palavra,</p><p>sincronismo, estrutura de endereçados e tecnologia de execução.</p><p>Em alguns casos, as diretivas são guardadas em memórias somente de leitura</p><p>(ROM, que vem do inglês Read Only Memory). Por outro lado, a memória de dados</p><p>usa uma memória que permite leitura e escrita (RAM, ou Random Access Memory).</p><p>A arquitetura de von Neumann não pode ler uma instrução ao mesmo tempo que</p><p>lê ou escreve um dado, pois as duas memórias compartilham o mesmo barramento.</p><p>Ao contrário desta, a arquitetura de Harvard possibilita a leitura de instruções e de</p><p>dados simultâneas, uma vez que os barramentos são diferentes. No entanto, isso</p><p>acarreta a necessidade de um circuito mais complexo em relação à arquitetura de von</p><p>Neumann tendo em vista os dois barramentos utilizados (FERNANDEZ, 2015).</p><p>A Arquitetura de Harvard modificada é uma versão alterada da sua arquitetura</p><p>original. Ela oferece maior capacidade de memória para as variáveis de leitura e</p><p>escrita, pois permite que o processador central trate os dados de instruções como</p><p>somente leitura, ao invés de copiá-los para a memória de dados. Isso requer, contudo,</p><p>o uso de instruções específicas.</p><p>Essa arquitetura oferece a vantagem de permitir o acesso simultâneo à memória</p><p>de instrução e à memória de dados. No entanto, esta vantagem foi cada vez mais</p><p>superada por sistemas modernos baseados na arquitetura de von Neumann que usam</p><p>memória cache. Apesar disso, ela segue sendo amplamente utilizada em aplicações</p><p>específicas, como processadores de sinal digital (DSPs, do inglês Digital Signal</p><p>Processor) e microcontroladores.</p><p>1.2 Arquitetura von Neumann</p><p>John von Neumann, renomado matemático e cientista da computação, é</p><p>creditado como o criador da arquitetura de von Neumann. Essa arquitetura, voltada</p><p>para computadores digitais, introduziu a inovadora ideia de armazenar programas no</p><p>mesmo local que os dados, possibilitando sua manipulação conjunta.</p><p>De acordo com Stallings (2010), a arquitetura de von Neumann é constituída da</p><p>seguinte maneira: uma unidade de processamento - que possui uma unidade</p><p>aritmética lógica e registradores de processo -, uma unidade de controle, com</p><p>registradores de instrução e contadores e uma memória RAM, onde residem as</p><p>instruções do programa e seus dados, além de mecanismos de entrada e saída,</p><p>conforme demonstrado na Figura 3:</p><p>Figura 3 - Arquitetura de von Neumann</p><p>Fonte: https://shre.ink/QsTT</p><p>Um dos pontos desfavoráveis dessa arquitetura é o chamado “gargalo de von</p><p>Neumann”. Esta limitação refere-se ao uso do mesmo barramento para ler dados e</p><p>instruções, o que diminui o desempenho do sistema devido à transferência lenta de</p><p>dados (FERNANDEZ, 2015). O barramento tem uma taxa de transferência menor do</p><p>que o limite de processamento do processador, restringindo desta forma a velocidade</p><p>de operação do processador, particularmente quando é necessário a leitura de</p><p>grandes conjuntos de dados da memória.</p><p>A velocidade dos processadores, assim como o tamanho e velocidade da</p><p>memória, tem contribuído para ampliar o problema de acesso à memória. Uma</p><p>solução para mitigar esse problema parece ser o uso de memória cache, situada entre</p><p>o processador e a memória principal. Além disso, desenvolver algoritmos de previsão</p><p>de desvios é também uma maneira de reduzir o número de acessos à memória</p><p>principal ao mínimo possível.</p><p>1.3 Tipos de fluxo de controle de execução</p><p>A evolução na velocidade dos processadores e no tamanho e na velocidade das</p><p>memórias veio para somar ao problema existente. A fim de minimizar o seu efeito,</p><p>pode ser implementada uma memória cache compreendida entre o processador e a</p><p>memória principal,</p><p>como também a utilização de algoritmos de previsão de desvio com</p><p>o propósito de diminuir as requisições à memória principal.</p><p>A Figura 4 apresenta os quatro tipos principais de fluxo de controle de execução,</p><p>de acordo com a taxonomia de Flynn. Estes tipos serão explicados em detalhes logo</p><p>em seguida.</p><p>Figura 4 - Taxonomia de Flynn</p><p>Fonte: https://shre.ink/Q2Ux</p><p>O fluxo corresponde a uma arquitetura de programação totalmente sequencial</p><p>onde uma única instrução é executada de cada vez. Esta arquitetura de von Neumann</p><p>é exemplificada por processadores utilizando pipeline e processadores</p><p>superescalares.</p><p>A técnica de pipelining, que consiste em partes do processador sendo ocupadas</p><p>com instruções em passos sequenciais, pode ser executada por unidades de</p><p>processamento separadas. Por outro lado, processadores superescalares buscam</p><p>aproveitar o máximo de cada ciclo de clock e são capazes de executar múltiplas</p><p>instruções ao mesmo tempo, dessa forma distribuindo-as por diferentes unidades do</p><p>processador.</p><p>SIMD (Single Instruction Multiple Data) é um método de processamento de</p><p>dados computacionais que aplica a mesma operação repetidamente a um grande</p><p>conjunto de dados. Essa forma de processamento se beneficia do paralelismo de</p><p>dados, mas não da concorrência. Processar dados com esse método é muito útil na</p><p>manipulação de sinais como som e imagem, pois essa operação pode ser aplicada</p><p>https://shre.ink/Q2Ux</p><p>continuamente a fluxos de dados.</p><p>Na década de 1970, computadores vetoriais superpotentes, como o CDC Star-</p><p>100 e o Texas Instruments ASC, foram pioneiros no que diz respeito às arquiteturas</p><p>SIMD. Esta é uma forma de computação que permite realizar ações em vetores de</p><p>dados usando apenas uma instrução. Esta tecnologia foi ainda mais popularizada pela</p><p>Cray e pelos seus computadores que eram capazes de processar vetores, uma</p><p>palavra de cada vez. Ao contrário, hoje em dia existem computadores SIMD modernos</p><p>que podem executar simultaneamente todos os elementos de um vetor.</p><p>Atualmente, as principais gerações de processadores possuem foco em</p><p>computadores desktop, ainda que tenham uma história com supercomputadores. A</p><p>Intel introduziu sua arquitetura x86 com extensões chamadas de 'MMX', e foi seguida</p><p>pelos concorrentes, como a Motorola PowerPC e o IBM Power. Essas extensões</p><p>SIMD foram especialmente projetadas para suportarem gráficos em tempo real. A</p><p>resposta da Intel às outras empresas foi a introdução do sistema SSE (Streaming</p><p>SIMD Extensions), e a AMD o “3DNow!”. A maioria dos processadores modernos</p><p>SIMD são na verdade MIMD (Multiple Instruction Multiple Data) com extensões de</p><p>instruções SIMD (FERNADEZ, 2015).</p><p>As instruções SIMD são amplamente utilizadas no processamento de gráficos</p><p>3D, permitindo a substituição de CPUs por placas gráficas. Essa tecnologia tem</p><p>crescido com a adoção de GPGPUs (General Purpose Graphics Processing Units).</p><p>Estas unidades de processamento gráfico de propósito geral permitem um maior</p><p>aproveitamento do SIMD.</p><p>A classificação de MISD (Multiple Instruction Single Data) é usada pouco, mas</p><p>alguns estudiosos a consideram como um exemplo desse tipo de divisão. Além disso,</p><p>os computadores usados para controlar vôos de ônibus espacial eram computadores</p><p>classificados como MISD.</p><p>A MIMD é amplamente considerada a classificação mais comum para a maioria</p><p>dos programas paralelos. Processadores desta categoria são apelidados de uso geral,</p><p>uma vez que cada unidade é capaz de cumprir todas as tarefas necessárias para o</p><p>processamento de dados. Esta classificação inclui computadores multi-núcleos,</p><p>multiprocessadores e multicomputadores.</p><p>A classificação MIMD está dividida entre SPMD (mesmo programa, múltiplos</p><p>dados) e MPMD (múltiplos programas, múltiplos dados). No SPMD, vários</p><p>processadores executam o mesmo programa em pontos de execução diferentes. Em</p><p>contraste, o MPMD apresenta ao menos dois programas, um denominado "mestre" e</p><p>outro conhecido como "trabalhador".</p><p>1.4 Comunicação com memória compartilhada distribuída</p><p>Os processadores MIMD usam diversas formas de comunicação. Uma delas</p><p>ocorre quando os processadores compartilham uma memória comum. Nesse caso,</p><p>programas e dados ficam armazenados nessa memória compartilhada. Outro tipo de</p><p>sistema é o multiprocessador simétrico (SMP), que conta com múltiplos</p><p>processadores compartilhando um único conjunto de memória ou um pool de</p><p>memória, conectados através de um barramento. Cada um desses processadores tem</p><p>aproximadamente o mesmo tempo de acesso para qualquer região da memória.</p><p>Um sistema de SMP foi desenvolvido para aumentar o desempenho e baixar os</p><p>custos dos processadores. Ele possui algumas características distintas:</p><p> Dois ou mais processadores com capacidade equivalente;</p><p> Memória compartilhada, conexão para o mesmo barramento e acesso</p><p>semelhante à memória;</p><p> Compartilhamento de recursos de entrada e saída;</p><p> Execução das mesmas funções por todos os processadores;</p><p> Um sistema operacional integrado que oferece interfaces para interagir com</p><p>os processadores;</p><p> Existência de dois ou mais processadores de capacidade semelhante;</p><p> Compartilhamento da mesma memória, conexão ao mesmo barramento e</p><p>tempo semelhante de acesso à memória;</p><p> Acesso compartilhado aos recursos de entrada e saída;</p><p> Execução das mesmas funções por todos os processadores;</p><p> controle por um sistema operacional (SO) integrado que fornece interfaces</p><p>para interagir com os processadores.</p><p>SMP (Sistema MultiProcessador) apresenta diversas vantagens, que incluem</p><p>melhor desempenho, escalabilidade e disponibilidade. Alcançar esses objetivos é</p><p>possível, pois o SMP permite que as tarefas sejam executadas de forma paralela,</p><p>diminuindo o tempo de execução. Se algum dos processadores falhar, outro pode</p><p>assumir imediatamente, mantendo a estabilidade e alta disponibilidade. Por fim, o</p><p>SMP permite o crescimento incremental, ao adicionar mais processadores, melhorar</p><p>o desempenho e ainda garantir a escalabilidade do sistema.</p><p>Usuários podem não se dar conta de que há vários processadores em suas</p><p>máquinas. Esta funcionalidade é gerenciada pelo sistema operacional, a qual gerencia</p><p>a execução de processos e threads por vários processadores simultaneamente. A</p><p>Figura 5 exibe a taxonomia dos tipos de processadores paralelos. Esta engloba os</p><p>processadores SISD que usam um único processador. Os SIMD englobam</p><p>processadores vetoriais e de matrizes, assim como os MISD. Já os processadores</p><p>MIMD podem ser de memória compartilhada, tais como SMP e NUMA (Non-Uniform</p><p>Memory Access), ou de memória distribuída, como em um cluster de computadores.</p><p>Os computadores SMP geralmente empregam memória compartilhada, que é</p><p>organizada de modo a permitir que vários processadores acessem blocos de memória</p><p>separados ao mesmo tempo. Por outro lado, há configurações que dotam cada</p><p>processador de sua própria memória e meios de entrada e saída.</p><p>Figura 5 - Taxonomia de arquiteturas de processadores paralelos</p><p>Fonte: https://shre.ink/Q28e</p><p>A busca de tempo compartilhado é uma forma popularmente usada por</p><p>computadores domésticos, servidores e postos de trabalho. É também um meio</p><p>simples para se construir um sistema de múltiplas CPUs. Quanto à estrutura e</p><p>interface, é idêntica àquele que é observado no processador único. Contudo, certos</p><p>recursos estão disponíveis para facilitar a comunicação entre o processador e a</p><p>memória, tais como os seguintes:</p><p> Endereçamento: capacidade de distinguir os módulos no barramento para</p><p>determinar a origem e o destino dos dados.</p><p> Arbitração: possibilidade de que qualquer módulo de entrada e saída atue</p><p>como mestre para gerenciar requisições concorrentes.</p><p> Tempo compartilhado: bloqueio dos outros módulos quando um módulo utiliza</p><p>o barramento.</p><p>O Sistema em Tempo Compartilhado (SMP) com barramento único possui</p><p>diversas vantagens. Apresenta a simplicidade</p><p>de um sistema de um único</p><p>processador, permite a facilidade de expansão com a adição de mais processadores</p><p>e ainda oferece a segurança de que um problema, em um único componente, ligado</p><p>ao barramento não provoque falhas no conjunto de dispositivos.</p><p>Um sistema multiprocessador tende a sofrer de desempenho limitado em virtude</p><p>de os processadores disputarem o acesso ao mesmo barramento. Para contornar esta</p><p>questão, os processadores podem ser equipados com memórias cache L1, L2 ou até</p><p>mesmo L3, reduzindo assim o número de acessos à memória principal. Contudo tal</p><p>solução traz outros desafios, como garantir a consistência nos dados, pois qualquer</p><p>alteração produzida no dado de um cache deverá invalidar as cópias desse dado nos</p><p>outros caches (STALLINGS, 2010).</p><p>NUMA é o acrônimo para o Non-Uniform Memory Access, ou Acesso à Memória</p><p>Não Uniforme. Esta é uma tecnologia relativamente nova que aumenta a velocidade</p><p>do sistema de memória compartilhada permitindo que cada processador tenha o seu</p><p>próprio barramento e memória local, além de memória compartilhada mais lenta que</p><p>pode ser acessada por todos os processadores. O tempo de acesso a diferentes</p><p>regiões da memória é menor quando a memória local é acessada em vez da memória</p><p>compartilhada de outros processadores. Como mostra a Figura 6, essa arquitetura</p><p>NUMA é organizada para melhorar o acesso à memória e aproveitar ao máximo a</p><p>familiaridade dos processadores com suas memórias locais.</p><p>Figura 6 - Arquitetura NUMA</p><p>Fonte: https://shre.ink/Q2eW</p><p>Desde os anos 1990, empresas como Unisys, Convex Computer, Honeywell,</p><p>Silicon Graphic, Data General e Digital têm implementado esse tipo de arquitetura. A</p><p>sua inclusão trouxe consigo algumas vantagens em relação a sistemas tradicionais,</p><p>principalmente no que diz respeito à performance. Uma arquitetura NUMA evita que</p><p>os processadores fiquem presos aguardando a memória compartilhada, conferindo</p><p>assim mais rapidez à execução. Ela pode ser descrita como uma computação em</p><p>cluster profundamente acoplada. Isto consiste em um conjunto de computadores</p><p>individuais ligados um ao outro para se comportarem como se fossem uma única</p><p>máquina. Brewer (1997) aponta quatro principais benefícios de tal modelo:</p><p> A escalabilidade absoluta é uma excelente solução, pois permite criar</p><p>clusters de processamento grandes com capacidades significativamente</p><p>superiores a uma única máquina.</p><p> A escalabilidade incremental permite que o cluster seja aumentado</p><p>gradualmente, começando com um sistema de menor porte que se expande</p><p>conforme necessário.</p><p> Devido à elevada disponibilidade, uma vez que cada elemento do cluster é</p><p>um computador completo e independente, a queda de um deles não resulta</p><p>na interrupção do serviço.</p><p> Atingir o melhor custo-benefício, pois pode ser montado por meio de peças</p><p>mais acessíveis, ao mesmo tempo que apresenta um desempenho superior</p><p>ao de computadores de alto nível. Desta maneira, fica possível criar um</p><p>sistema computacional poderoso operando de forma rápida e eficiente, a um</p><p>custo bem reduzido.</p><p>https://shre.ink/Q2eW</p><p>REFERÊNCIAS BIBLIOGRÁFICAS</p><p>BREWER, E. Clustering: multiply and conquer. [S. l.]: Data Communications, p. 27-</p><p>36, 1997.</p><p>FERNANDEZ, M. P. Arquitetura de Computadores. 3. ed. Fortaleza: EdUECE, p.</p><p>32-77, 2015.</p><p>STALLINGS, W. Arquitetura e Organização de Computadores. 8. ed. São Paulo:</p><p>Pearson, p. 52-91, 2010.</p><p>1 ARQUITETURA DE COMPUTADORES</p><p>1.1 Arquitetura de Havard</p><p>1.2 Arquitetura von Neumann</p><p>1.3 Tipos de fluxo de controle de execução</p><p>1.4 Comunicação com memória compartilhada distribuída</p><p>REFERÊNCIAS BIBLIOGRÁFICAS</p>

Mais conteúdos dessa disciplina