Baixe o app para aproveitar ainda mais
Prévia do material em texto
Organização de Computadores Aula 02 Prof.ª Larissa 2016 Sumário • Organização estruturada de computador: – Máquinas multiníveis contemporâneas: • nível de lógica digital • nível de microarquitetura • nível de arquitetura de conjunto de instruções • nível de máquina de sistema operacional • nível de linguagem Assembly • nível de linguagem orientada ao problema OEC: Máquina multinível genérica Programas em L0 podem ser executados diretamente pelos circuitos eletrônicos Máquina virtual Mn, com linguagem de máquina Ln Máquina virtual M2, com linguagem de máquina L2 Máquina virtual M1, com linguagem de máquina L1 Máquina real M0, com linguagem de máquina L0Nível 0 Nível 2 Nível 1 Nível n Programas em L1 são interpretados por um interpretador que roda em M0 ou traduzidos para L0 Programas em L2 são interpretados por interpretadores que rodam em M1 ou M0 ou traduzidos para L1 ou L0 Programas em Ln são interpretados por interpretadores que rodam em nível inferior ou traduzidos para linguagem de máquina de nível inferior OEC: Máquinas multiníveis contemporâneas • Como são estas máquinas multiníveis? • A maioria das máquinas contemporâneas possuem dois ou mais níveis de abstração, para que a comunicação homem-máquina seja eficiente. • Uma máquina real, que possui C, C++ ou Java como sua linguagem de máquina, é possível de ser construída com a tecnologia atual, mas há um grande motivo para que não seja: OEC: Máquinas multiníveis contemporâneas • Como são estas máquinas multiníveis? • Uma máquina sem abstrações não teria um custo viável comparado a outras técnicas, que utiliza circuitos com poucas instruções. • No mercado, ser possível não significa ser vantajoso, e o método de abstrações se mostrou o mais viável. • Na prática, são consideradas máquinas com até 6 níveis de abstração, como veremos a seguir. • No entanto, outros níveis adicionais poderiam ser considerados. OEC: Máquinas multiníveis contemporâneas Instruções de máquina Nível de Linguagem Orientada a Problemas Nível de Linguagem de Montagem (Assembly) Nível de Máquina de Sistema Operacional Nível de Arquitetura de Conjunto de Instruções Nível de Microarquitetura Nível de Lógica DigitalNível 0 Nível 2 Nível 1 Nível 3 Instruções para permitir multitarefa e organização diferente de memória Mnemônicos para as instruções de máquina C, C++, Java, LISP, Prolog, Basic... Nível 4 Nível 5 Memória local e ULA Portas lógicas > Flip-Flops > Registadores Hardware Interpretação (μP) ou hardware Interpretação (SO) Tradução (assembler) Tradução (compilador) OEC: Máquinas multiníveis contemporâneas • Níveis “negativos”: • Poderiam existir ainda níveis abaixo do Nível 0. • “Nível -1”: Nível de Dispositivos – enxergamos transistores individualmente, que são as “células” formadoras das portas lógicas que compõem nosso hardware. • Poderíamos baixar ainda mais o nível (no bom sentido!) e chegar ao “Nível -2”: Nível de Física do Estado Sólido – enxergaríamos o funcionamento interno de um transistor. Disponível em: <http://blog.laptopmag.com/intel-announces-22nm-ivy-bridge-cpus-with-new-3d-transistors> Transistor Tri-Gate 14 nm, tecnologia atual dos processadores Intel Core M Porta Inversora CMOS OEC: Máquinas multiníveis contemporâneas • Nível 0 – Nível de Lógica Digital: • Objetos de interesse são as portas lógicas, que, mesmo construídas por componentes analógicos (transistores), podem ser precisamente modeladas como dispositivos digitais. Funcionam com impulsos elétricos. • Cada porta tem uma ou mais entradas digitais (sinais representados por 0 ou 1) e devolve como saída funções simples destas entradas, como as operações lógicas E (AND) ou OU (OR). • Cada porta lógica é composta por alguns transistores. Disponível em: <http://www.autoshop101.com/trainmodules/logicgate/106.html> OEC: Máquinas multiníveis contemporâneas • Nível 0 – Nível de Lógica Digital: • Portas lógicas combinadas podem formar memórias de 1 bit (flip-flops). • Memórias de 1 bit podem ser combinadas em grupos de, por exemplo, 16, 32 ou 64 para formar registradores. • Cada registrador é uma unidade de memória capaz de armazenar n bits, e estão no topo da hierarquia da memória (são o meio mais rápido e mais caro de se armazenar um dado). Disponível em: <https://pt.wikipedia.org/wiki/Flip-flop> • Registradores são memória temporária utilizada pelo processador no processamento das instruções. OEC: Máquinas multiníveis contemporâneas • Nível 0 – Nível de Lógica Digital: • Portas lógicas também são combinadas para formar circuitos digitais combinacionais, utilizados no próprio mecanismo de processamento. • Os circuitos combinacionais não armazenam bits de estados anteriores, e portanto não funcionam como memória. Disponível em: <http://www.cearaagora.com.br/site/2014/12/tech-como-funcionam-os-chips-de-computador/> Meio somador Somador completo Multiplexador OEC: Máquinas multiníveis contemporâneas • Nível 1 – Nível de Microarquitetura: • Neste nível, enxergamos uma memória local (formada por um conjunto de registradores) e a Unidade Lógica e Aritmética (ULA). • A ULA é um circuito digital que executa operações lógicas e aritméticas, sendo a peça central do processador. Disponível em: <https://pt.wikipedia.org/wiki/Unidade_l%C3%B3gica_e_aritm%C3%A9tica> • A memória local é conectada à ULA para formar o caminho de dados, pelo qual os dados transitam. • Caminho de dados, portanto, é a parte da CPU que contém a ULA, suas entradas e suas saídas. OEC: Máquinas multiníveis contemporâneas • Nível 1 – Nível de Microarquitetura: • A operação básica do caminho de dados consiste em selecionar registradores, deixar a ULA operar sobre eles (por exemplo, somá-los) e armazenar o resultado em algum registrador. • A operação do caminho de dados pode ser controlada por um microprograma, ou controlada direto por hardware. Disponível em: <http://www.cearaagora.com.br/site/2014/12/tech-como-funcionam-os-chips-de-computador/> • Microprograma é um interpretador que interpreta as instruções oriundas do Nível 2. OEC: Máquinas multiníveis contemporâneas • Nível 2 – Nível de Arquitetura de Conjunto de Instruções (ISA): • O nível ISA é a interface entre o software e o hardware. • Neste nível, enxergamos o principalmente a descrição do conjunto de instruções suportadas pelo processador. • O conjunto de instruções corresponde às tarefas que o processador pode realizar e é determinado pelo projeto do processador, e normalmente não pode ser alterado. • O conjunto de instruções é comum entre os processadores de uma mesma família, permitindo assim a compatibilidade de programas e sistemas operacionais dentro dessa família. Exemplos de famílias: x86, ARM, SPARC, MIPS OEC: Máquinas multiníveis contemporâneas • Nível 3 – Nível de Máquina de Sistema Operacional: • Não é possível existir um sistema multitarefa sem que exista um elemento arbitrando o acesso ao hardware – essa função é do sistema operacional. • Em sistemas computacionais modernos, todo acesso ao hardware é feito por meio do sistema operacional. • O SO fornece uma plataforma que possibilita que os programas não tenham que interagir diretamente com o hardware. Disponível em: <http://www.techtudo.com.br/dicas-e-tutoriais/noticia/2011/08/saiba-o-que-e-um-navegador-e-um-sistema-operacional.html> OEC: Máquinas multiníveis contemporâneas • Nível 4 – Nível de Linguagem de Montagem (Assembly): • Assembly language = Linguagem de montagem • Programa que realiza essa tradução é chamado de montador (assembler). • Contém palavras e abreviações cujas pessoas entendem, que representam instruções de nível mais baixo, facilitando a vida do programador.Substitui padrões de bits por mnemônicos. • Programas nessa linguagem são primeiro traduzidos para as linguagens dos níveis inferiores e depois interpretados pela máquina virtual apropriada ou pela própria máquina real. OEC: Máquinas multiníveis contemporâneas • Nível 4 – Nível de Linguagem de Montagem (Assembly): • A maioria das pessoas pode se lembrar de que as abreviaturas para somar, subtrair, multiplicar e dividir são ADD, SUB, MUL e DIV, mas poucas conseguem se lembrar dos valores numéricos correspondentes que a máquina usa. • O programador Assembly só precisa se lembrar dos nomes simbólicos, pois o assembler os traduz para instruções de máquina. • Como Assembly é uma notação legível por humanos para as instruções de máquina que uma arquitetura de computador específica utiliza, processadores de famílias diferentes possuem linguagens de montagem incompatíveis entre si. OEC: Máquinas multiníveis contemporâneas • Nível 5 – Nível de Linguagem Orientada a Problemas: • Este é o nível no qual trabalham os a maioria dos programadores de aplicação: com linguagens de alto nível. São mais amigáveis a humanos do que Assembly. • Programas escritos nesta linguagem são geralmente traduzidos para níveis subjacentes por compiladores. • Esse tipo de linguagem independe da plataforma em que for usada; ela geralmente é traduzida (compilada) para um formato que o sistema operacional consiga interpretar e enviar para os níveis mais baixos da máquina multiníveis. Disponível em: <https://code4coders.wordpress.com/2012/03/12/qual-linguagem-de-programacao-devo-aprender-primeiro/> OEC: Máquinas multiníveis contemporâneas • Programadores de sistema x aplicação: • Programadores de sistema trabalham essencialmente nos níveis mais baixos. • Focam no desenvolvimento de programas que proveem serviços ao próprio sistema computacional: tradutores, interpretadores, sistemas operacionais, ferramentas de otimização do sistema, etc. • Programadores de aplicação trabalham principalmente no nível 5. • Focam no desenvolvimento de programas que proveem serviços diretamente ao usuário: processadores de texto, editores de planilhas, aplicativos de entretenimento, etc. Sumário • História da Computação: – Geração zero: computadores mecânicos (1642 – 1945) – Primeira geração: válvulas (1945 – 1955) – Segunda geração – transistores (1955 – 1965) – Terceira geração – circuitos integrados (1965 – 1980) – Quarta geração – integração em larga escala (1980 – 2000) – Quinta geração – computação ubíqua (2000 em diante) História da Computação • Geração zero: computadores mecânicos (1642 – 1945) • No início, os equipamentos para realização de cálculos eram puramente mecânicos, já que os dispositivos eletromecânicos surgiriam no século XX. • O primeiro dispositivo do tipo foi construído por Blaise Pascal (1623 – 1662) em 1642 para auxiliar seu pai. Podia executar apenas somas e subtrações. • 30 anos depois, Gottfried Leibniz (1646 - 1716) construiu um equipamento que realizava as quatro operações básicas. História da Computação • Geração zero: computadores mecânicos (1642 – 1945) • A evolução dos equipamentos mecânicos foi proposta em 1822, por Charles Babbage (1792 – 1871). • Ele propôs a Máquina Diferencial, desenhada para executar um algoritmo útil para navegação naval. Posteriormente, propôs a Máquina Analítica, um dispositivo programável, para o qual Ada Lovelace (1815 - 1852) desenvolveu um algoritmo. • No século XIX, diversas máquinas diferenciais foram construídas com base nos documentos de Babbage, mas ele próprio nunca chegou a produzi-las. História da Computação • Geração zero: computadores mecânicos (1642 – 1945) • Na década de 1930, Konrad Zuse (1910 - 1995) construiu uma série de equipamentos para executar cálculos utilizando relés, que são dispositivos eletromecânicos. • Em 1944, Howard Aiken (1900 - 1973) construiu o computador eletromecânico Harvard Mark I, que era programável e foi financiado pela IBM. Aiken baseou-se nos conceitos de Babbage. Disponível em: <http://ds-wordpress.haverford.edu/bitbybit/bit-by-bit-contents/chapter-four/4-2-aiken-and-the-mark-i/> Harvard-IBM Mark I História da Computação • Primeira geração: válvulas (1945 – 1955) • Os primeiros computadores eletrônicos surgiram na fase final da Segunda Guerra Mundial. O interesse dos militares por computadores se dava em quebra de códigos criptográficos e cálculos de artilharia. • Para o segundo propósito, John Mauchly (1907 - 1980) propôs a construção de uma máquina para o Exército Americano, o ENIAC. O projeto foi conduzido por ele e J. Presper Eckert (1919 - 1995), mas entrou em operação apenas em 1946. ENIAC, antes considerado o primeiro computador eletrônico da história, era composto por quase 18.000 válvulas Disponível em: <http://www.columbia.edu/cu/computinghistory/eniac.html> História da Computação • Primeira geração: válvulas (1945 – 1955) • Somente décadas após o final da guerra, o projeto Colossus, trabalho do governo britânico, veio à tona, devido ao sigilo. Criado para quebra de códigos criptográficos da Alemanha nazista, as ideias de Alan Turing (1912 - 1954) contribuíram com o projeto. • Colossus tomou o lugar do ENIAC como o primeiro computador eletrônico da história, pois entrou em operação em 1943. Disponível em: <http://www.turing.org.uk/scrapbook/electronic.html> Colossus em operação, em 1944 • Turing é considerado por muitos como o pai da computação por seus feitos e ideias sobre inteligência artificial. História da Computação • Primeira geração: válvulas (1945 – 1955) • Um cientista envolvido no projeto do ENIAC, John von Neumann (1903 - 1957), apontou a vantagem de usar os dados armazenados em forma binária em vez de decimal e propôs que os programas fossem gravados na memória do computador. • O projeto que ele concebeu na década de 1940 foi utilizado na construção da máquina IAS. Essa arquitetura, batizada de máquina de Von Neumann, é até hoje a estrutura básica dos computadores. História da Computação • Segunda geração – transistores (1955 – 1965) • O transistor, inventado em 1948, apresentava grandes vantagens em relação à válvula: era menor e tinha vida útil infinitamente maior. • O primeiro computador a usufruir da nova tecnologia foi o TX-0 (Transistored Experimental Computer 0), construído no MIT. Foi seguido pelo TX-2. • Em 1961, foi lançado o PDP-1, pela DEC. Estava criado o conceito de minicomputadores. • Em 1964, foi lançado o CDC 6600, voltado para aplicações científicas. Ele introduziu conceitos de paralelismo. • Nesta época, a IBM produzia equipamentos de alto desempenho para aplicações científicas, como o 7090 e 7094. História da Computação • Terceira geração – circuitos integrados (1965 – 1980) • A invenção do circuito integrado de silício por Robert Noyce, em 1958, permitiu que dezenas de transistores fossem colocados em uma única pastilha (ou chip). • A IBM lançou a família System/360, dando início ao conceito de compatibilidade entre máquinas da mesma série. Esta família também introduziu o conceito de multiprogramação, que foi um dos primeiros passos ao conceito multitarefa. • O sistema operacional, figura desconhecida até então, se torna importante. • O mercado de minicomputadores também evoluiu, e o lançamento mais significativo foi o PDP-11 da DEC. História da Computação • Quarta geração – integração em larga escala (1980 – 2000) • Na década de 1980, a VLSI possibilitou colocar até milhões de transistores em um único chip. Esse desenvolvimento levou a computadores menores e mais rápidos. • Era o início da era do computador pessoal, o microcomputador. • Uma das mais bem-sucedidas empresas foi a Apple, fundada por Steve Jobs e Steve Wozniak, cujo microcomputador Apple II (lançado em 1977)foi um sucesso comercial. História da Computação • Quarta geração – integração em larga escala (1980 – 2000) • A IBM relutou, mas decidiu entrar no mercado do computador pessoal, mas preferiu utilizar componentes de mercado, em vez de desenvolver todo o projeto. Como microprocessador foi escolhido o 8088 da Intel, e o IBM PC foi lançado em 1981. • A IBM não patenteou seu projeto, o que resultou numa indústria de “PC-Clones”. • A IBM se associou à Microsoft para o desenvolvimento do sistema operacional de seu PC, o PC-DOS, que foi baseado no QDOS (adquirido pela Microsoft). História da Computação • Quinta geração – computação ubíqua (2000 em diante) • Ao contrário das gerações anteriores, os equipamentos com capacidade de processamento não são mais necessariamente “computadores completos”. • Além do barateamento do hardware, o desenvolvimento de várias tecnologias, como redes locais, Bluetooth e WiFi, e a popularização da Internet permitiram o desenvolvimento de equipamentos que se apoiem em redes e recursos localizados em outros computadores Smartphone Samsung Galaxy On 7 Organização de Computadores Sumário OEC: Máquina multinível genérica OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas OEC: Máquinas multiníveis contemporâneas Sumário História da Computação História da Computação História da Computação História da Computação História da Computação História da Computação História da Computação História da Computação História da Computação História da Computação História da Computação
Compartilhar