Organização e Arquitetura de Computadores (Unidade 01: Abstrações de Tecnologias Computacionais) by Rafael Luiz Cancian on Prezi
Organização e Arquitetura de Computadores (Unidade 01: Abstrações de Tecnologias Computacionais)
Prof. Dr. Eng. Rafael Luiz Cancian - Organização e Arquitetura de Computadores (Unidade 01: Abstrações de Tecnologias Computacionais) - Universidade Federal de Santa Catarina
Transcript of Organização e Arquitetura de Computadores (Unidade 01: Abstrações de Tecnologias Computacionais)
Universidade Federal de Santa Catarina Organização e Arquitetura de Computadores Professor Dr. Eng. Rafael Luiz Cancian 1. Abstrações de Tecnologia Computacionais 1.1 - Introdução 1.2 - Abaixo do Seu Programa 1.3 - Debaixo das Tampas 1.4 - Circuitos Integrados: O combustível da Inovação Leituras Complementares:
A organização do Hardware Atualmente, o uso de computadores é amplamente disseminado, e os computadores podem ser encontrados em praticamente qualquer atividade humana. Isto é, não necessariamente aquilo que normalmente entende-se por computador, mas sim sistemas computacionais, já que há cerca de duas décadas a "computação" não existe apenas em computadores. Todas essas tecnologias estão exercendo forte influência em muitos aspectos de nossa sociedade, e levando a uma terceira revolução cultural. Revolução
Agrícola Revolução
Industrial Revolução
da Informação Os sistemas computacionais estão se tornando ubiquos e podemos apenas imaginar quais serão os novos avanços em 10, 50, 100 anos... O que é certo, entretanto, é que qualquer profissional que deseja construir sistemas eficientes e, portanto, competitivos, devem ampliar bastante os seus conhecimentos sobre organização de computadores. Ao contrário do que ocorria décadas atrás, podemos esperar que sistemas computacionais específicos sejam desenvolvidos para cada nova futura aplicação a ser executada, maximizando seu desempenho. O computador é um equipamento eletrônico digital e, para que ele nos entenda, é necessário enviar comandos a ele que sejam sinais elétricos. Os sinais mais simples que se pode enviar a um computador sigital têm apenas dois estados: Embora os sistemas computacionais sejam usados por quase todo mundo, quase ninguém entende realmente como ele funciona. Então, como funciona um computador Corrente elétrica ligada - ligado - Nível alto - Verdadeiro - 1 Corrente elétrica desligada - Desligado - Nível baixo - Falso - 0 Os símbolos 0 e 1 são geralmente escolhidos pois são os dígitos binários (bits). Por isso diz-se que o computar só entende binário. Com os símbolos (ou letras) 0 e 1, formamos "palavras" que os computadores entendem e executam à risca: as instruções de máquina. Ao conjunto de todas as "palavras" entendidas por um computador, ou seja, seu "vocabulário", chamamos conjunto de instruções. Embora todos os computadores modernos entendam apenas código binário, as instruções de máquina entendidos por cada "família" de computador são diferentes. Dois computadores com o mesmo conjunto de instruções têm a mesma arquitetura, ou arquitetura do conjunto de instruções, que é a interface entre o hardware e o software. O primeiro programa para criar programas em linguagem de máquina foi o montador, que traduzia uma versão simbólica (ou mnemônica) em palavras binárias. Montador Seguindo a mesma ideia básica, posteriormente foram desenvolvidos programas compiladores que traduziam uma versão "alto nível" em uma versão simbólica. Compilador Atualmente existem programas que traduzem especificações em níveis ainda mais altos (ex: UML) para linguagem de alto nível. Porém, o fluxo 'básico' de tradução de software é... Uma das principais vantagens da linguagem de alto nível é que ela é independente da "linguagem de máquina" e, portanto, pode ser compilada para qualquer arquitetura de computador. Uma vez compilado para uma arquitetura, um programa em alto nível executa apenas naquela arquitetura. Uma alternativa são as linguagens interpretadas, que não precisam ser re-compiladas para executar em diferentes arquiteturas, mas são mais lentas (ex: Java). Não demorou para que se observasse que a reutilização de programas já escritos era muito mais vantajosa do que programar tudo de novo desde o princípio. A reunitização de rotinas foi a base para os modernos sistemas operacionais, responsáveis por gerenciar os recursos de hardware do computador e fornecer um ambiente mais fácil de operar. Mostrou-se que um conjunto de programas aplicativos poderia executar mais eficientemente se houvesse um conjunto de programas de sistema encarregados de supervisionar a execução dos demais. O hardware de um computador típico tem a seguinte estrutura de conexão simplificada: Unidade Central
de Processamento Memória
Principal Dispositivo
de Entrada Dispositivo
de Saída Dispositivo de Entrada e Saída Barramento do Sistema E de maneira um pouco mais detalhada, tem a seguinte estrutura física de interconexão... Unidade Central
de Entrada Unidade de Gerenciamento
de Memória Memória
Cache Driver do
Dispositivo Controlador de
Interrupções Driver do
Dispositivo Acesso Direto
à Mmemória Driver do
de Saída Driver do
Dispositivo Ponte Ponte interrupt request acknowledge interrupt request acknowledge bus request bus grant Nessa estrutura físca, destacam-se os seguintes componentes de hardware: Unidade Central de Processamento Dispositivos
de Entrada Memória Dispositivos
de Saída A CPU, ou processador, é o "coração" do computador, e é responsável principalmente por buscar instruções de máquina da memória, decodificá-las, executá-las e salvar seus resultados. A esse conjunto simplificado de passos, chamamos ciclo de máquina. O processador é dividido em Unidade de Controle, responsável pela decodificação das instruções e controle da CPU e Unidade de Processamento (ou Datapath), responsável pela execução das instruções. Existem muitos tipos diferentes de memória num computador, mas a mais importante é a Memória Principal, ou RAM (Random Access Memory), onde os programas (e dados) ficam armazenados no momento de serem executados. A memória é um elemento "passivo" num computador, ou seja, ela apenas responde a comandos enviados por outros componentes. Existem diversas tecnologias de memória principal (SRAM, DRAM, ....) mas todas são voláteis. Um único computador moderno pode ter várias CPUs na mesma placa, e são chamados multiprocessadores ou mesmo várias CPUs no mesmo circuito integrado, e são chamados multicores. Dispositivos de entrada alimentam o computador com informações externas e exitem em grande variedade de tecnologia, velocidade de acesso, quantidade de informações recebidas e outras características. A memória é organizada e acessada por "endereços". Em cada endereço de memória está armazenado um conjunto de bits que corresponde à largura da memória. A memória só realiza operações de "leitura" ou "escrita" num endereço dado. Entre os muitos dispositivos de entrada, detacam-se: teclado, mouse, microfone, webcam, placa de rede (que também é de saída), leitor de impressões digitais, etc Dispositivos com "taxas de transferência" ("velocidade") muito diferentes costumam estar em barramentos separados. Dispositivos de saída disponibilizam o resultado do processamento para o usuário. Variam muito em relação à tecnologia, taxas de transferência e outras características. Entre os principais dispositivos de saída encontrados em computadores modernos, destacam-se: monitor de vídeo, auto-falante, impressora e placa de rede (também de entrada). Alguns dispositivos de E/S também são dispositivos de memória, ou memória secundária, como o "disco rígido", onde programas e dados ficam armazenados de forma não-volátil. Os cinco componentes
principais de um
computador. Todos os componentes de um computador são sistemas digitais implementados em circuitos integrados. Mas o que é um circuito integrado e como é fabricado A tecnologia de circuitos integrados (chips) dita o que os computadores podem fazer, o quão rápido eles podem evoluir e, portanto, todo profissional da área deve estar pelo menos familiarizado com essa tecnologia. A fabricação de um chip inicia com silício, que é um semicondutor. Adicionando impurezas ou materiais dopados ao silício, pode-se criar junções (PN, NPN, PNP) que compõem os elementos básicos de qualquer circuito eletrônico digital: o transistor. Um transistor é um "interruptor controlado por corrente", ou seja, colocando (ou não) corrente elétrica em um de seus terminais, pemite-se passar (ou não) corrente elétrica entre seus outros dois terminais. Fatia-se um linguote de silício em wafers virgens, que foram o substrato no qual os transistores são "impressos" após dezenas de processos industriais. Os chips individuais são cortados, testados, encapsulados, testados novamente e estão prontos. Para resolver um problema muito complexo, uma abordagem bastante útil é dividi-lo em problemas menores e mais fáceis. Do mesmo modo, o projeto de um computador, partindo de transistores, é dividido em camadas hierárquicas, em que cada camada utiliza os serviços da camada inferior e fornece serviços mais complexos para a camada superior. As camadas que geralmente compõem cada componente de hardware de um computador são: Transistores / Física Circuitos Digitais Sistemas Digitais A camada física utiliza transistores como elementos básicos de construção. Como transistores são apenas interruptores controlados por corrente, agrupando alguns transistores de forma adequada, podemos formar operadores lógicos elementares, como NOT, AND, OR, XOR, etc, que podem ser chamados de portas lógicas. O terminal "Gate" controla a corrente entre os terminais "Source e "Drain". Transistores podem ter "junção-N" (NMOS) ou "junção-P" (PMOS). MOS (Metal-Oxid Semiconductor) Num NMOS, quando Gate="1", então "Source" e "Drain" estão conectados (interruptor fechado). Diz-se que o transistor está em saturação. Quando Gate="0", então "Source" e "Drain" estão desconectados (interruptor aberto). Diz-se que o transistor está em corte. Num PMOS é exatamente o inverso. Quando Gate="0", então "Source" e "Drain" estão conectados (interruptor fechado). Quando Gate="1", então "Source" e "Drain" estão desconectados (interruptor aberto) Um inversor (NOT) é uma operação lógica que inverte o sinal da entrada, ou seja, se IN="1", então OUT="0", e se IN="0", então OUT="1". Uma porta lógica NOT pode ser obtida a partir da seguinte configuração de transistores: A operação "E" (AND) é uma operação com mais de uma entrada, no qual a saída é "1" apenas se todas as entradas ferem "1" (uma entrada E outra). Uma porta lógica AND pode ser obtida a partir da seguinte configuração de transistores: Assim, na camada acima, se for necessário fazer uma "inversão" (negação lógica), não é mais necessário se preocupar com transistores. Utiliza-se apenas a "porta lógica" NOT, cujo símbolo é: Assim, na camada acima, se for necessário fazer uma operação lógica AND, utiliza-se apenas a "porta lógica" AND. Ocorre o mesmo para todas as demais operações lógicas encontradas na álgebra de Boole. Todas podem ser obtidas a partir de um conjunto de transistores, de forma que a camada acima utilize apenas portas lógicas. As principais portas lógicas obtidas com transistores são: A camada de circuitos digitais utiliza portas lógicas como elementos básicos de construção. Agrupando adequadamente um conjunto de portas lógicas, podemos criar um comportamento mais complexo que é especificado por um circuito digital ou um conjunto de equações lógicas. Circuitos digitais podem ser combinacionais, em que as saídas dependem apenas das entradas, ou então sequenciais, em que as saídas dependem das entradas e do "estado interno" do circuito. São exemplos de circuitos digitais combinacionais: multiplexador, demultiplexador, codificador, decodificador, somador, subtrador, deslocador, etc; Assim, na camada acima, se for necessário fazer uma "seleção" (Mux) ou uma soma, não é mais necessário se preocupar com portas lógicas. Utiliza-se apenas símbolos dos circuitos digitais correspondentes: Circuitos digitais sequenciais incluem elementos de memória que armazenam um estado. São exemplos de circuitos sequenciais: flip-flop, registrador, contador, memória, etc. Uma característica muito importante dos circuitos sequenciais usados nos computadores é que eles são síncronos, ou seja, precisam de um sinal eletrônico de sincronismo, fornece a noção de "tempo". Então, esse sinal de sincronismo é um sinal periódico (ou "cíclico") de relógio (ou clock). A quantidade de vezes que o sinal de relógio se repete por segundo corresponde à frequência de operação do circuito. O intervalo entre duas repetições do "sinal de relógio" corresponde ao seu período (inverso da frequência). A camada de sistemas digitais utiliza circuitos digitais como elementos básicos de construção. Porém, programar utlizando instruções de máquina é muito complexo, chato, pouco produtivo e altamente sujeito a erros. Usar programas de computador para criar novos programas de computador foi a solução encontrada. Quando dois computadores tem a mesma arquitetura do conjunto de instruções (ISA), eles são compatíveis, ou seja, podem executar os mesmos softwares. Porém, dois computadores com o mesmo conjunto de instruções não necessariamente têm a mesma organização do hartdware. Eles podem ser muito diferentes internamente, apesar de executarem as mesmas instruções de máquina. Agrupando e controlando adequadamente vários circuitos digitais, podemos criar um comportamento mais complexo ainda, que é um sistema digital. A organização interna de um sistema digital normalmente inclui uma unidade de controle (que geralmente é especificada como uma máquina de estados finitos) e uma unidade de processamento (caminho de dados). Assim, os componentes de hardware de um computador são sistemas digitais que se comunicam, e são organizados para que possam executar programas. Portanto, podemos dizer que quando se trata do hardware de um sistema computacional, temos ainda mais uma camada: a organização do hardware, que utiliza sistemas digitais como elementos básicos de contrução e que oferece uma arquitetura do conjunto de instruções como serviço à camada acima: o software. Organização
(Microarquitetuta) Considerações Finais Revisão Exercícios Avaliação Na prática... http://www.lisha.ufsc.br/~guto/teaching/os/exercise/gcc.pdf No Unix:
$ gcc -Os -c hello.c
$ gcc -Os -S hello.c -o -
. file "hello.c"
.section .note.GNU-stack,"",@progbits Softwares aplicativos incluem planilhas eltrônicas, editores gráficos, processadores de texto, entre muitos outros, enquanto softwares de sistema incluem o sistema operacional, compilador, montador e outros. E o que há no hardware, debaixo da tampa do computador Ok, mas como é possível construir um equipamento tão complexo como um computador apenas com transistores, simples interruptores Tendências:
Sistemas computacionais dedicados (embarcados), Computação ubiqua e pervasiva.
Preocupação com tamanho, peso, consumo de energia, desempenho...
Desenvolvimento de software em níveis mais altos.
Model-Driven Engineering, Verificação formal.
Sistemas computacionais num único chip (SoC, MPSoc).
Redes em chip (NoC).
Redução do tamanho dos transistores.
Mudanças nas tecnologias dos circuitos integrados (e base computacional): spintrônica, computação quântica.
Arquiteturas não convencionais (assincronismo, tolerância a faltas, redundância). email, MSN: cancian@lisha.ufsc.br 2012-2
v. 1.00 A organização do computador Pentium IV
More presentations by Rafael Luiz Cancian
Copy of Organização e Arquitetura de Com...
Prof. Dr. Eng. Rafael Luiz Cancian - Organização e Arquitetura de Computadores (Unidade 04: O Processador) - Universidade Federal de Santa Catarina
Prof. Dr. Eng. Rafael Luiz Cancian - Organização e Arquitetura de Computadores (Unidade 06: Dispositivos Periféricos) - Universidade Federal de Santa Catarina
Prof. Dr. Eng. Rafael Luiz Cancian - Organização e Arquitetura de Computadores (Unidade 05: Hierarquia de Memória) - Universidade Federal de Santa Catarina