Pesquisar neste blogue

Mostrar mensagens com a etiqueta Structured Computer Organization de Andrew S. Tanenbaum. Mostrar todas as mensagens
Mostrar mensagens com a etiqueta Structured Computer Organization de Andrew S. Tanenbaum. Mostrar todas as mensagens

segunda-feira, 26 de maio de 2025

Resumo extraído do Capítulo 2 do livro Structured Computer Organization de Andrew S. Tanenbaum (5.ª edição)

Estrutura dos sistemas computacionais



2.1 PROCESSADORES

Esta secção aborda a organização e evolução dos processadores (CPUs).

  • Estrutura Básica da CPU: A CPU é composta pela UC (unidade de controlo), ALU (Unidade Aritmética e Lógica) e registos. A unidade de controlo busca instruções da memória principal, interpreta-as e executa-as. Os registos armazenam dados temporários e instruções em execução, sendo o Program Counter (PC) e o Instruction Register (IR) os mais importantes.

  • Execução de Instruções: A execução dá-se em etapas: buscar a instrução, actualizar o PC, decodificar a instrução, buscar operandos, executar a operação e escrever o resultado.

  • Caminho de Dados (Datapath): Mostra como os dados fluem dentro da CPU, entre registos e a ALU. A performance do processador depende da eficiência deste caminho.

  • Pipelining: Técnica para acelerar a execução de instruções dividindo-as em várias fases (como uma linha de montagem). Várias instruções podem ser processadas em simultâneo, uma em cada estágio.

  • Paralelismo a Nível de Instrução: Explora-se o uso de pipelines duplos (como no Pentium) ou arquitecturas superscalares com várias unidades funcionais que permitem executar múltiplas instruções por ciclo de relógio.

  • Processamento Paralelo (Array e Vector Processors): Processadores de array como o ILLIAC IV executam a mesma instrução sobre múltiplos dados em paralelo (SIMD). Os vector processors, como o Cray-1, usam registos vectoriais e pipelines para realizar operações vectoriais com alta eficiência.

  • Multiprocessadores e Multicomputadores: Multiprocessadores partilham memória comum e são fortemente acoplados, facilitando a programação. Multicomputadores têm memória separada por CPU e comunicam por troca de mensagens, sendo mais escaláveis. Sistemas híbridos tentam combinar o melhor de ambos.


2.2 MEMÓRIA PRINCIPAL

Esta secção foca-se na organização, tipos e funcionamento da memória principal de um sistema informático.

  • Bits e Codificação Binária: A unidade mínima é o bit. O sistema binário é o mais fiável devido à facilidade de distinguir entre dois estados (0 e 1). Alguns sistemas usam codificações como BCD para representar números decimais.

  • Endereços de Memória: Cada célula de memória tem um endereço único. A quantidade de bits por endereço determina o número máximo de células endereçáveis. A célula é a unidade mais pequena de endereçamento e normalmente contém um byte (8 bits).

  • Ordenação de Bytes (Byte Ordering): Define como os bytes que compõem uma palavra são armazenados na memória — por exemplo, "little-endian" versus "big-endian".

  • Correção de Erros: Utilizam-se códigos como o de Hamming para detectar e corrigir erros na memória. A verificação de paridade também pode ser usada para detecção simples.

  • Memória Cache: Pequena memória rápida usada para armazenar dados frequentemente usados. Baseia-se no princípio da localidade (temporal e espacial). A performance depende da taxa de acertos (hit ratio) e é influenciada pelo tamanho da cache, tamanho da linha, organização, separação de dados e instruções (cache unificada vs Harvard) e número de níveis de cache.

  • Empacotamento e Tipos de Memória: As memórias modernas são vendidas como módulos (SIMMs ou DIMMs), cada um contendo vários chips de memória. DIMMs transferem 64 bits por ciclo e são comuns em computadores de secretária, enquanto os SO-DIMMs são usados em portáteis. A correção de erros é opcional e pouco comum em computadores domésticos.


2.3 MEMÓRIA SECUNDÁRIA

Mesmo com memórias principais cada vez maiores, elas continuam a ser insuficientes para armazenar todos os dados desejados, especialmente com o aumento da informação digital (como livros digitalizados, vídeos, etc.). A solução clássica é utilizar uma hierarquia de memória, onde memórias mais lentas, maiores e baratas complementam as mais rápidas e pequenas.

2.3.1 Hierarquias de Memória

  • Organiza-se a memória em níveis: registos, cache, memória principal, discos magnéticos, fitas magnéticas e discos ópticos.

  • À medida que se desce na hierarquia:

    • O tempo de acesso aumenta.

    • A capacidade de armazenamento aumenta.

    • O custo por bit diminui.

2.3.2 Discos Magnéticos

  • Compostos por pratos com revestimento magnético.

  • A informação é lida/escrita por cabeças móveis que flutuam sobre os pratos.

  • Os pratos giram a velocidade constante; os dados são organizados em pistas e sectores.

  • Utilizam estratégias como zonas concêntricas com diferentes números de sectores para aumentar a capacidade (zone bit recording).

  • Discos Winchester são selados para evitar poeira.

2.3.3 Desempenho dos Discos

  • Fatores como o tempo de procura (seek time), latência rotacional e taxa de transferência afetam o desempenho.

  • Há uma grande diferença entre a taxa de pico (burst) e a taxa sustentada de transferência de dados.

2.3.4 Interfaces e Controladores

  • Interfaces como IDE, EIDE e SCSI evoluíram para suportar velocidades maiores e múltiplos dispositivos.

  • O endereçamento evoluiu de C/H/S para LBA (Logical Block Addressing) para ultrapassar limites antigos (como os 504 MB dos primeiros BIOS).

2.3.6 RAID

  • RAID (Redundant Array of Independent Disks) melhora desempenho e fiabilidade.

  • Combina múltiplos discos como se fossem um só, podendo usar técnicas como espelhamento (RAID 1) ou distribuição de paridade (RAID 5).

2.3.8 CD-Recordables (CD-R)

  • CDs graváveis foram introduzidos como meio económico para backups.

  • Utilizam discos com trilhas guia e material sensível à gravação com laser.

2.3.9 CD-Rewritables (CD-RW)

  • Usam uma liga metálica especial com dois estados estáveis (amorfo e cristalino).

  • Um laser de diferentes potências escreve, apaga e lê os dados.

2.3.10 DVD

  • Representa uma evolução do CD-ROM, com maior capacidade.

  • É mais adequado para aplicações como filmes e grandes bases de dados.


2.4 ENTRADA/SAÍDA (INPUT/OUTPUT)

A secção trata da forma como os dispositivos de entrada e saída (E/S) se ligam ao processador e à memória, com foco especial nos barramentos (buses).

2.4.1 Barramentos

  • Os barramentos são conjuntos de fios paralelos que transportam sinais de controlo, dados e endereços entre os vários componentes de um computador.

  • A estrutura física típica inclui uma motherboard com slots para módulos de memória e placas de E/S ligadas ao barramento (ex: PCI).

  • Dispositivos de E/S dividem-se entre o controlador (controlador físico/electrónico) e o dispositivo propriamente dito (ex: disco, monitor).

  • O controlador gere o dispositivo e comunica com a CPU através do barramento. Pode usar DMA (Acesso Directo à Memória) para ler/escrever dados sem intervenção da CPU.

  • Quando a transferência termina, o controlador gera uma interrupção, que suspende o programa em execução e invoca um tratador de interrupções (interrupt handler).

Arbitragem do Barramento

  • Um árbitro de barramento decide qual componente usa o barramento quando há conflito (por exemplo, CPU vs dispositivo de E/S).

  • Os dispositivos de E/S têm normalmente prioridade, pois não podem parar a sua operação física sem risco de perda de dados (ex: discos rígidos).

Problemas de Velocidade e Compatibilidade

  • À medida que os componentes ficaram mais rápidos, os barramentos tornaram-se um gargalo. Surgiram soluções com barramentos múltiplos (por exemplo, PCI e ISA).

  • A evolução para o barramento PCI, mais rápido, permitiu maior largura de banda para dispositivos como placas gráficas, som, rede e discos SCSI.


2.5 SUMÁRIO

Esta secção faz uma recapitulação dos principais conceitos abordados ao longo do capítulo:

  • Componentes dos Sistemas Computacionais: São compostos por três tipos principais de componentes:

    • Processadores: Responsáveis por buscar, decifrar e executar instruções.

    • Memórias: Armazenam instruções e dados.

    • Dispositivos de Entrada/Saída (E/S): Permitem a comunicação com o exterior (ex: teclado, ecrã, impressora, etc.).

  • Ciclo de Execução de Instruções: Consiste em buscar uma instrução da memória, decodificá-la e executá-la. Este processo pode ser descrito como um algoritmo e, por vezes, é implementado por interpretadores.

  • Melhoria de Desempenho: Muitos computadores modernos usam pipelines ou arquitecturas superscalar, com várias unidades funcionais a operar em paralelo.

  • Computação Paralela:

    • Processadores em Array: Executam a mesma operação em múltiplos dados ao mesmo tempo (SIMD).

    • Multiprocessadores: Partilham uma memória comum (memória partilhada).

    • Multicomputadores: Cada processador tem a sua própria memória, e a comunicação entre eles é feita por troca de mensagens.

  • Hierarquia de Memória:

    • Memória Principal: Rápida e usada para armazenar o programa em execução. Pode usar cache para melhorar a performance.

    • Memória Secundária: Mais lenta, usada para armazenamento a longo prazo. Inclui discos magnéticos, discos ópticos e RAID.

  • Dispositivos de Entrada/Saída: Transferem dados entre o mundo exterior e o computador. Estão ligados por meio de um ou mais barramentos. A maioria dos dispositivos usa o código ASCII, mas o UNICODE está a tornar-se o padrão global.


Capítulo 2 do livro Structured Computer Organization de Andrew S. Tanenbaum (5.ª edição)

Capa do livro Structured Computer Organization de Andrew S. Tanenbaum (5.ª edição)


🎓 Quer melhorar os seus resultados na universidade? 
Disponibilizamos explicações de ensino superior adaptadas às suas necessidades, com acompanhamento personalizado para diferentes disciplinas.
✔ Explore a nossa Lista de Matérias disponíveis.
🌟 Veja os testemunhos de alunos que já atingiram melhores notas com o nosso apoio.
📬 Contacte-nos por email ou pelo formulário de contacto e obtenha a ajuda que precisa para dominar os seus estudos!

EuExplico Eu Explico Explicações de Ensino Superior

terça-feira, 29 de abril de 2025

Resumo extraído do Capítulo 1 do livro Structured Computer Organization de Andrew S. Tanenbaum (5.ª edição)

1. Introdução

Este capítulo começa por definir o que é um computador digital: uma máquina capaz de resolver problemas executando instruções fornecidas por pessoas. Estas instruções formam programas, que têm de ser convertidos numa linguagem de máquina simples para serem executados. Como esta linguagem é difícil de usar, os sistemas são estruturados em camadas ou níveis de abstração para facilitar o seu desenvolvimento e utilização. Este conceito é a base da “organização estruturada dos computadores”.


1.1 Organização Estruturada de Computadores

1.1.1 – Linguagens, Níveis e Máquinas Virtuais

A diferença entre o que é conveniente para as pessoas e para os computadores exige a criação de linguagens intermédias. Cada linguagem (L0, L1, L2, ..., Ln) representa um nível (ou máquina virtual) de abstração. A execução de programas escritos nestas linguagens pode ser feita por tradução (converter para uma linguagem de nível inferior) ou por interpretação (executar directamente, instrução a instrução).

Isto dá origem à ideia de uma máquina multinível, onde apenas o nível mais baixo (L0) é executado directamente pelo hardware. Os níveis superiores são implementados por interpretadores ou tradutores baseados nos níveis inferiores. Esta estrutura facilita o desenvolvimento de sistemas complexos, escondendo detalhes de baixo nível e aproximando a linguagem da máquina à forma como os humanos pensam.

1.1.2 – Máquinas Multinível Contemporâneas

A maioria dos computadores modernos é estruturada em múltiplos níveis (até seis), desde o nível de hardware até às linguagens orientadas ao utilizador. Estes níveis são:

  1. Nível 0 – Lógica Digital: baseia-se em portas lógicas digitais (AND, OR, etc.), implementadas com transístores.

  2. Nível 1 – Microarquitectura: combina registos e uma ALU (Unidade Aritmética e Lógica). Pode ser controlado por hardware ou por microprogramas.

  3. Nível 2 – Arquitetura do Conjunto de Instruções (ISA): é a interface formal entre hardware e software. Define o conjunto de instruções que a máquina pode executar.

  4. Nível 3 – Máquina do Sistema Operativo: adiciona funcionalidades como multitarefa e manipulação de memória, interpretadas pelo sistema operativo.

  5. Nível 4 – Linguagem Assembly: forma simbólica da linguagem da máquina, traduzida por um assembler.

  6. Nível 5 – Linguagens de Alto Nível: como C, Java, etc., traduzidas por compiladores ou interpretadas.

Cada nível é construído com base no anterior, e os programadores de aplicações normalmente trabalham nos níveis mais altos, abstraindo-se dos níveis inferiores.

1.1.3 – Evolução das Máquinas Multinível

Historicamente, os computadores começaram com apenas dois níveis (lógica digital e ISA). A introdução da microprogramação por Maurice Wilkes simplificou o hardware ao mover parte do controlo para o software.

O sistema operativo surgiu para automatizar a operação dos computadores, criando um novo nível virtual. Ao longo do tempo, mais funcionalidades foram adicionadas ao microcódigo e aos sistemas operativos, aumentando a complexidade dos níveis intermédios.

Na década de 1980, houve uma tendência para eliminar a microprogramação em favor de execução direta (hardware controlado), como nas arquiteturas RISC. A linha entre hardware e software tornou-se cada vez mais fluida: funcionalidades podem ser implementadas em qualquer nível, dependendo do custo, desempenho e fiabilidade.


Secção 1.2 – Marcos na Arquitetura de Computadores

1.2.1 – Geração Zero: Computadores Mecânicos (1642–1945)

Iniciada com Pascal e Leibniz, esta geração é marcada por máquinas de cálculo mecânicas. Charles Babbage idealizou a Analytical Engine, considerada a antecessora dos computadores modernos. Ada Lovelace foi a primeira programadora da história.

1.2.2 – Primeira Geração: Válvulas de Vácuo (1945–1955)

Com o estímulo da Segunda Guerra Mundial, surgiram os primeiros computadores electrónicos como o ENIAC, EDSAC e Whirlwind I. John von Neumann propôs o modelo de computador com armazenamento em memória, que ainda hoje é usado (arquitetura de Von Neumann).

1.2.3 – Segunda Geração: Transístores (1955–1965)

A invenção do transístor permitiu construir computadores mais fiáveis e eficientes. Destacam-se o IBM 7094 (científico), o CDC 6600 (supercomputador com unidades funcionais paralelas), e o PDP-8 (minicomputador popular da DEC).

1.2.4 – Terceira Geração: Circuitos Integrados (1965–1980)

Com os circuitos integrados, surgem famílias de computadores como o IBM System/360, com várias versões compatíveis entre si. Introduziu-se o conceito de emulação e multiprogramação. No mundo dos minicomputadores, destaca-se o PDP-11 da DEC.

1.2.5 – Quarta Geração: VLSI e Computadores Pessoais (1980–?)

A integração em larga escala (VLSI) possibilitou a criação de computadores pessoais. O IBM PC, lançado em 1981, dominou o mercado, dando origem à indústria dos clones de PC. A Apple destacou-se com o Macintosh e o conceito de interface gráfica (GUI). Nesta geração destacam-se ainda os processadores RISC, como o MIPS e SPARC, e o Alpha da DEC (64 bits).

1.2.6 – Quinta Geração: Computadores Invisíveis

A promessa japonesa de inteligência artificial não se concretizou como esperado. No entanto, deu-se o aparecimento dos computadores invisíveis: embebidos em dispositivos, cartões e electrodomésticos. Esta visão, chamada computação ubíqua ou computação pervasiva, representa uma mudança de paradigma mais do que uma nova arquitetura.


1.3 – O Zoo dos Computadores

Esta secção explora a diversidade atual de computadores, motivada por forças tecnológicas e económicas.

1.3.1 – Forças Tecnológicas e Económicas

A evolução do hardware tem sido guiada pela Lei de Moore, que prevê a duplicação de transístores por chip de circuito integrado a cada 18 meses. Isso permite mais memória e maior desempenho. A crescente capacidade dos chips impulsiona novas aplicações e mercados, alimentando um ciclo virtuoso de inovação tecnológica.

1.3.2 – O Espectro dos Computadores

Os computadores variam desde os mais baratos (como cartões com chips descartáveis) até supercomputadores. O autor apresenta uma escala com tipos de computadores, preços aproximados e exemplos de aplicação, demonstrando a diversidade de equipamentos existentes.

1.3.3 – Computadores Descártaveis

Exemplos incluem chips RFID, usados em etiquetas inteligentes e até em seres vivos. Estes chips, sem bateria, são ativados por sinais externos e podem ser usados para identificação e seguimento de objetos, pessoas e animais, levantando implicações éticas e sociais.

1.3.4 – Microcontroladores

Presentes em electrodomésticos, brinquedos, carros e equipamentos médicos. São computadores completos (CPU, memória, E/S) integrados num único chip, programados para tarefas específicas e produzidos em massa a baixo custo.

1.3.5 – Computadores de Jogo

Ex: consolas como a Xbox e PlayStation. São sistemas especializados em multimédia, com CPUs gráficas poderosas e arquitecturas optimizadas para jogos.

1.3.6 – Computadores Pessoais

Incluem computadores de secretária, portáteis e PDAs. Têm múltiplos periféricos e sistemas operativos complexos. Os portáteis são versões compactas dos de secretária.

1.3.7 – Servidores

Computadores semelhantes a PCs mas com mais capacidade de memória, armazenamento e rede. São utilizados em redes empresariais e na Internet, executando sistemas operativos como Linux ou Windows Server.

1.3.8 – Conjuntos de Estações de Trabalho (COWs)

Clusters de computadores interligados que operam como um sistema único para tarefas paralelas. São usados como supercomputadores baratos ou "server farms" em sites de grande tráfego.

1.3.9 – Mainframes

Máquinas grandes e antigas, usadas ainda hoje por empresas com investimentos pesados em software antigo. Têm grande capacidade de E/S e armazenamento e foram ressuscitadas com a Internet para lidar com grandes volumes de transacções.

1.3.10 – Supercomputadores

Antes mais poderosos que os mainframes, hoje têm menos relevância, sendo substituídos por clusters mais baratos e flexíveis.


1.4 – Famílias de Computadores de Exemplo

O livro foca-se em três tipos de computadores:

  1. Computadores Pessoais – representados pelo Pentium 4

  2. Servidores – representados pelo UltraSPARC III

  3. Computadores Embebidos – representados pelo 8051

1.4.1 – Introdução ao Pentium 4

A família de CPUs da Intel evoluiu do 4004 (1970) até ao Pentium 4, com grande compatibilidade com versões anteriores. O Pentium Pro introduziu cache de dois níveis e execução paralela de até 5 instruções. O Pentium 4 trouxe a tecnologia de hyperthreading e novas instruções multimédia (SSE).

1.4.2 – Introdução ao UltraSPARC III

A Sun Microsystems criou a linha SPARC, baseada numa arquitectura RISC. A CPU UltraSPARC III, com 64 bits e total compatibilidade retroactiva, é um exemplo de processador poderoso para servidores. O SPARC distingue-se por ser uma arquitetura aberta com vários fabricantes licenciados.

1.4.3 – Introdução ao 8051

O 8051 é um microcontrolador de 8 bits com CPU, memória e E/S num só chip, lançado pela Intel em 1980. Muito usado em sistemas embebidos devido ao seu baixo custo, larga disponibilidade, vasta documentação e suporte por múltiplos fabricantes. Há variantes como o 8751 (regravável) e o 8052 (mais memória). A família MCS-51 é ainda amplamente usada em engenharia e investigação.


1.5 – Unidades Métricas

Esta secção esclarece o uso das unidades métricas no contexto da ciência computacional, e especialmente nas áreas de armazenamento e transmissão de dados.

Unidades Padrão

  • A informática adopta o sistema métrico internacional (SI), evitando unidades tradicionais anglo-saxónicas.

  • As principais prefixos métricos utilizados são:

    • mili (10⁻³), micro (10⁻⁶), nano (10⁻⁹), pico (10⁻¹²), kilo (10³), mega (10⁶), giga (10⁹), tera (10¹²), entre outros.

Ambiguidade entre base 10 e base 2

  • No contexto da memória, a indústria usa:

    • 1 KB = 2¹⁰ = 1024 bytes,

    • 1 MB = 2²⁰ = 1.048.576 bytes,

    • 1 GB = 2³⁰ = 1.073.741.824 bytes,

    • 1 TB = 2⁴⁰ = 1.099.511.627.776 bytes.

  • Contudo, em comunicações, os prefixos referem-se a potências de 10:

    • 1 kbps = 10³ bits/segundo,

    • 1 Mbps = 10⁶ bits/segundo, etc.

Esta dualidade pode causar confusão, por isso o livro usa:

  • KB, MB, GB, TB → para potências de 2 (memória),

  • kbps, Mbps, Gbps, Tbps → para potências de 10 (transmissão de dados).


1.6 – Estrutura do Livro

Esta secção apresenta uma visão geral da estrutura e abordagem do livro.

Objectivo principal

O livro trata da organização estruturada de computadores multinível, examinando quatro níveis em detalhe:

  1. Lógica digital – circuitos e portas lógicas.

  2. Microarquitectura – como o hardware interpreta instruções da ISA.

  3. ISA (Instruction Set Architecture) – conjunto de instruções da máquina.

  4. Máquina do sistema operativo – funcionalidades oferecidas pelo sistema operativo.

A obra foca-se em conceitos fundamentais e exemplos práticos, evitando pormenores excessivamente matemáticos ou técnicos.

Exemplos usados

Serão utilizados três computadores de referência ao longo do livro:

  • Pentium 4 (PCs),

  • UltraSPARC III (servidores),

  • 8051 (sistemas embebidos).

Estes foram escolhidos por:

  • Serem largamente utilizados.

  • Apresentarem arquitecturas diferentes.

  • Permitirem comparação crítica entre soluções de design.

O autor destaca que não se trata de um manual de programação de nenhuma dessas máquinas, mas sim de uma exploração dos princípios subjacentes a todas elas.

Estrutura dos capítulos seguintes

  • Cap. 2: Introdução aos componentes principais (processadores, memórias, E/S).

  • Cap. 3: Nível de lógica digital – portas, circuitos e álgebra booleana.

  • Cap. 4: Microarquitectura – implementação da ISA.

  • Cap. 5: ISA – detalhes das instruções e dados.

  • Cap. 6: Nível do sistema operativo – controlo de processos, memória, etc.

  • Cap. 7: Linguagem assembly e o processo de ligação (linking).

  • Cap. 8: Computadores paralelos – multiprocessadores, COWs e SoCs.

  • Cap. 9: Leituras sugeridas e bibliografia anotada.




Capa do livro Structured Computer Organization de Andrew S. Tanenbaum (5.ª edição)

Capítulo 1 do livro Structured Computer Organization de Andrew S. Tanenbaum (5.ª edição)





🎓 Quer melhorar os seus resultados na universidade? 
Disponibilizamos explicações de ensino superior adaptadas às suas necessidades, com acompanhamento personalizado para diferentes disciplinas.
✔ Explore a nossa Lista de Matérias disponíveis.
🌟 Veja os testemunhos de alunos que já atingiram melhores notas com o nosso apoio.
📬 Contacte-nos por email ou pelo formulário de contacto e obtenha a ajuda que precisa para dominar os seus estudos!

EuExplico Eu Explico Explicações de Ensino Superior

Formulário de Contacto

Nome

Email *

Mensagem *