Baixe o app para aproveitar ainda mais
Prévia do material em texto
10/02/14 1 Introdução Renato Ferreira A visão do usuário O usuário enxerga software, velocidade, capacidade de armazenamento e funcionalidades de periféricos Visão do programador l Linguagem de máquina – Conjunto de instruções fundamentais que a máquina executa – Expressa como um padrão de 0s e 1s l Linguagem Assembly – Equivalentes alfanuméricos da linguagem de máquina – Mais amigável para o pessoas l Assembler – Programa que traduz (transliterate) assembly para linguagem de máquina – Linguagem de máquina é a nativa para o computador – Programador significa programador assembly (ou de linguagem de máquina) Linguagem de máquina e assembly l O assembler converte a linguagem assembly para a linguagem de máquina Assembly Linguagem de Máquina MOVE.W D4, D5 0011 101 000 000 100 ADDI.W #9, D2 000001 01 000 010 0000 0000 0000 1001 Motorola MC68000 Escalas, Unidades e Convenções l Bit (b), Byte (B), Nibble, Word (w) l Kilo (K), Mega(M), Giga(G), Tera(T) l Mili(m), Micro(µ), Nano(n), Pico(p) Abordagem estruturada l Organize o computador como uma série de abstrações – Cada uma constrói a partir das anteriores l Mais fácil tratar a complexidade l Computadores podem ser projetados de uma maneira sistemática l Essa abordagem é chamada: Organização Estruturada de Computadores 10/02/14 2 Organização estruturada l Linguagens, camadas e máquinas virtuais – espaço entre o que é conveniente para as máquinas e o que conveniente para humanos – pode resolver de duas maneiras diferentes: tradução e interpretação – ambas envolvem projetar um novo conjunto de instruções que é gradativamente mais conveniente para humanos Visão em camadas Tradução versus Interpretação l Tradução – Para executar um programa em L1, troca cada instrução por instruções em L0 – Execute o novo programa em L0 l Interpretação – Escreva um programa em L0 que aceite um programa em L1 como arquivo de dados – Examine qual é a instrução em L1 e execute as instruções necessárias em L0 – Nenhum programa novo é gerado Máquina virtual l Imagine que exista uma máquina hipotética (virtual) capaz de executar a linguagem L1 – Máquina M1 l Escreva um programa em L1 – M1 deve ser capaz de executar esse programa diretamente l Mesmo que a máquina virtual seja complexa, o programa ainda pode ser executado a partir de tradução ou interpretação Múltiplas camadas l Para a tradução ou interpreteção ser possível na prática, L1 e L0 não podem ser muito diferentes – L1 ainda é difícil para humanos – Use uma série de camadas, cada um mais fácil que o anterior Máquina multi-camada l Maioria das máquinas modernas tem 2 a 6 camadas l Camada 0 corresponde ao hardware real 10/02/14 3 Camada da lógica digital (L0) l Portas lógicas (AND, OR, etc.) l Memórias de 1 bit (latches e flip-flops) l Registradores Camada de microarquitetura (L1) l 8-32 registradores l Unidades lógico-aritméticas l Caminho de dados – Operações controladas diretamente pelo hardware – Ou por microprogramas Camada de conjunto de instruções (L2) l Conjunto de instruções: a coleção de todas as operações que a máquina pode realizar l Interpretada por microprogramas, ou executadas diretamente pelo hardware l Para o programador – nível mais baixo de comandos – mais os recursos que podem ser manipulados por esses comandos l Inclui: – conjunto de instruções – memória – registradores acessíveis Camada do sistema operacional (L3) l Camada híbrida – Muitas das instruções de L2 também estão disponíveis aqui – Algumas instruções estendidas l Instruções estendidas são executadas por um interpretador – chamado Sistema Operacional l Instruções L2 são executadas ou pelo microprograma ou diretamente pelo hardware Camada de assembly (L4) l Camada mais baixa visível aos desenvolvedores de aplicações – programadores enxergam camadas abaixo dessa l Primeira camada na qual a linguagem é não numérica l Tradução por um assembler (montador) Camada de aplicação (L5) l Linguagens de programação de alto-nível – C, C++, Java... l Usualmente são traduzidas por compiladores – programas bem mais complexos que montadores – existem linguagens interpretadas 10/02/14 4 L6 – Frameworks, máquinas virtuais… l Será que estamos criando mais uma camada? – Frameworks – Spring, Hibernate, … – Máquinas virtuais – Virtual PC, VMWare, … – Linguagens específicas de uma aplicação: Matlab, R, SAP… – CMS – Joomla, etc… L6 – a nova fronteira l Programação focada em um problema – Linguagens e comandos específicos – Somente legível por um “conhecedor” do domínio L3.5 - Virtualização l Máquinas virtuais que rodam próximo do hardware – zVM (IBM) – XEN – XEMU l Sistema operacional com tarefas diminuídas – Controlar execução das máquinas virtuais – Drivers – Garantir isolamento das VMs Resumindo l Computadores são projetados como uma série de camadas, cada uma construída a partir da anterior l Cada camada representa uma abstração distinta – esconde detalhes irrelevantes – reduz a complexidade l Conjunto de tipos de dados, operações e características de cada camada é denominado arquitetura Hardware versus Software l Hardware a software são logicamente equivalentes – a distinção tem ficado cada vez mais nebulosa com o passar do tempo l Evolução das máquinas multi-camadas – Invenção da microprogramação – Invenção do sistema operacional – Migração da funcionalidade do microprograma – Eliminação de microprogramação Ponto de vista do arquiteto l Preocupação com projeto & desempenho l Projetar um conjunto de instruções que otimize – utilidade – desempenho l Projetar um hardware que otimize a implementação das instruções l Validação do projeto através de benchmarks l Equilibra desempenho dos diversos componentes – CPU, memória, dispositivos de entrada e saída, etc... l Obtém metas de desempenho mantendo o preço baixo 10/02/14 5 Ferramentas de arquitetos l Modelos de software, simuladores e emuladores l Programas de benchmarking de desempenho l Programas especializados de medição l Análise de fluxo de controle e gargalos l Análise de balanceamento l Análise de custo, teste e fabricação de componentes Tendências fundamentais l Lei de Moore: – o número de transistores dobra a cada 18 meses l Lei de Nathan: – Software é um gás. Ele expande até ocupar todo o recipiente que o contém Aplicação da lei de Moore Computadores de todos os tipos Tipo Preço Exemplo Descartável 1 Cartões Embutidos 10 Carros, domésticos Especializados 100 videogames Pessoais 1K desktop, laptop Servidores 10K Servidor de arquivos Clusters 100K DCC Mainframe 1M Bancos Supercomputadores 10M Previsão de tempo Famílias de computadores l Pentium II l UltraSPARC II l picoJava II Pentium II l Noyce, Moore e Rock fundaram a Intel em 1968 para fabricar memória l CPU de 4 bits em um chip ao invés de chip específico para calculadora l 8088 usado no IBM PC original l 80386 foi a primeira CPU de 32 bits l Pentium: 2 pipelines 10/02/14 6 Família de processadores Intel Chip Frequência Transistores Memória 4004 0,108 2.300 640 8008 0,108 3.500 16KB 8080 2 6.000 64KB 8086 5-10 29.000 1MB 8088 5-8 29.000 1MB 80286 8-12 134.000 16MB 80386 16-33 275.000 4GB 80486 25-100 1.2M 4GB Pentium 60-233 3.1M4GB Pentium Pro 150-200 5.5M 4GB Pentium II 233-400 7.5M 4GB Lei de Moore para CPUs UltraSPARC II l A SUN foi fundada para produzir estações de trabalho UNIX l a cpu SPARC é baseada no projeto do RISC II – 32 bits, 55 instruções, unidade de ponto flutuante l UltraSPARC – 64 bits – Conjunto de instruções visual picoJava II l Linguagem C foi desenvolvida no Bell Labs para ser usada no UNIX – Dennis Ritchie l Stroustrup incorporou o paradigma de orientação a objetos e criou o C++ l A SUN desenvolveu Java para permitir a troca de programas executáveis pela internet picoJava II l A Sun definiu uma máquina virtual que executa os programas Java – Máquina Virtual Java (JVM) – Portabilidade l Projetou hardware capaz de executar java diretamente – Sistemas embutidos Marcos na história de computação l A geração Zero – computadores mecânicos – Blaise Pascal – Charles Babbage – Ada Lovelace – Konrad Zuse – Atanasoff e Stibbitz (Bell Labs) – Aiken (Harvard) 10/02/14 7 A primeira geração l Válvulas de vácuo (1945-1955) – Turing l COLOSSUS – decifrar o código ENIGMA – Mauchley e Eckert l ENIAC e EDVAC – von Neumann l IAS machine A arquitetura de Von Neumann A segunda geração l Transistores (1955-1965) – Bardeen, Brattain, Shockley (Nobel, 1956) – Olsen (DEC PDP-1, PDP-8) – IBM – CDC – Cray (supercomputadores) A terceira geração l Circuitos integrados (1965-1980) – IBM System/360 (multiprogramação) – DEC PDP-11 A quarta geração l Integração de larga scala (VLSI) (1980-?) – Computadores pessoais – Jobs Wozniak (Apple) – IBM PC – Microsoft (MS-DOS, Windows) – RISC aparece em contrapartida com CISC – Arquiteturas superescalares Próximo capítulo l Introdução aos componentes básicos da arquitetura – processador – memória – dispositivos de entrada e saída l Princípios de projeto dos vários componentes
Compartilhar