Você está na página 1de 62

Arquitectura de Computadores I

Breve História dos Computadores

Miguel Barão

1/ 32
Resumo

Interface Hardware/Software

Um pouco de história

Computador e dispositivos de Input/Output (IO)

Arquitecturas Harvard e Von Neumann

2/ 32
Interface Hardware/Software

3/ 32
Interface Hardware/Software

Aplicações
Software
Sistema operativo
Hardware/Soft-
Computador (processador/memória)
ware interface
Sistemas Digitais (portas lógicas)
Hardware
Electrónica (transistores)

Física Quântica

4/ 32
Interface Hardware/Software

Aplicações
Software
Sistema operativo
Hardware/Soft-
Computador (processador/memória)
ware interface
Sistemas Digitais (portas lógicas)
Hardware
Electrónica (transistores)

Física Quântica

Vamos estudar o interface Hardware/Software: como o computador


está organizado e como executa as instruções de um programa.

4/ 32
Um pouco de história

5/ 32
Z3, Alemanha 1941
Desenvolvido por Konrad Zuse

Computador electromecânico.
Executava um programa guardado numa fita perfurada.
Destruído em 1943 durante um bombardeamento aliado.

6/ 32
Colossus, 1943–1945
Desenvolvido pelos britânicos para decifrar mensagens nazis na 2ª Guerra Mundial

Os primeiros computadores executavam programas fixos.


Para correr um programa diferente era necessário modificar
fisicamente um conjunto de interruptores e/ou a cablagem.
As calculadoras básicas também executam programas fixos.

7/ 32
ENIAC (Electronic Numerical Integrator And Computer), 1945–1955
Desenvolvido pelos EUA para cálculos de balística e bomba atómica

Executava também programas fixos, tal como o Colossus.


Para correr um programa diferente era necessário modificar
fisicamente um conjunto de interruptores e/ou a cablagem.

8/ 32
O primeiro “bug” de software que era realmente um bug
Uma traça encontrada num relé do computador Harvard Mark II em 1947

9/ 32
Manchester Mark 1
O primeiro “stored-program computer”, 1949

Pela primeira vez, o programa são dados.


4050 válvulas, potência 25 kW.
10/ 32
Salto tecnológico

Válvula
Circuito Integrado
Transistor
→ →

Redução na energia consumida, tamanho e custo.


Aumento do desempenho e fiabilidade.

11/ 32
IBM System/360 Mainframe
1964–1977

Impacto na indústria:
Byte de 8 bits.
Memória endereçável ao nível do byte.
Words de 32 bits.
12/ 32
Ficção científica em 1973 — Space 1999

13/ 32
DEC PDP-11 (1970–1990)

Considerado um Minicomputador (custo até 150.000 €).


O primeiro Unix correu num PDP-11/70 em 1970.
Utilização empresarial, médica, industrial, científica, educação.
14/ 32
Intel 4004
CPU de 4 bits, desenvolvido em 1971.

Primeiro microprocessador comercialmente disponível.


Ocupa uma área de 12mm2 .
Executa cerca de 92000 instruções por segundo.

15/ 32
MOS Tech 6502
CPU de 8 bits, desenvolvido em 1975.

Processador muito barato. Custava $25 na altura.


Deu origem à revolução dos computadores pessoais.
Usado em:
• Microcomputadores: BBC, Apple IIe, Atari 400/800.
• Plataformas de jogos: Atari 2600 e Nintendo Entertainment
System (NES).

16/ 32
Revolução dos Microcomputadores pessoais

BBC (1982–1994)
Apple II (1979–1982)
microprocessor 6502
microprocessor 6502

Comodore 64 (1982–1994)
microprocessor 6510 ZX Spectrum 48k (1982–1992)
microprocessor Z80

17/ 32
MIPS R2000
CPU de 32bits desenvolvido em 1986.

Primeiro processador RISC disponível comercialmente.


Execução de instruções em pipeline.
Usado em
• Workstations dos anos 1990: Silicon Graphics, MIPS, DEC, etc.
• Plataformas de jogos dos anos 2000: PSP e PlayStation 2.
• Routers, modems, televisões e boxes, mas já obsoleto.
18/ 32
RISC V
Arquitectura com licensa open-source. 2010

Outras arquitecturas cobram royalties e obrigam a assinatura de


NDAs (Non Disclousure Agreements).
A arquitectura RISC-V é open-source e fácil de aprender.
Expansível. Grande apoio por parte da indústria.
Pode ser usada desde dispositivos IoT até supercomputadores.

19/ 32
RISC V
Arquitectura com licensa open-source. 2010

Esta é a arquitectura que vamos estudar este semestre!

19/ 32
Computador e dispositivos de
Input/Output (IO)

20/ 32
Computador e Input/Output

Computador
Memória | Processador

Input Output

Um sistema computacional:
recebe informação do mundo (input)
processa a informação (computação)
envia o resultado para o mundo (output)

21/ 32
Input/Output (IO) — Teleimpressora

Teleimpressora TTY
Computador Output

Input

Input teclado envia caracteres ASCII para o computador.


Output computador envia caracteres ASCII para serem
impressos num rolo de papel contínuo.

22/ 32
Input/Output (IO) — Videoterminal

Videoterminal
Computador Output

Input

Input teclado envia caracteres ASCII para o computador.


Output computador envia caracteres ASCII para serem
mostrados no ecrã.

23/ 32
Input/Output (IO) — Videoterminal

Videoterminal
Computador Output

Input

Input teclado envia caracteres ASCII para o computador.


Output computador envia caracteres ASCII para serem
mostrados no ecrã.
O ecrã substituiu a impressora.
O texto desliza para cima tal como o papel da impressora.
23/ 32
Input/Output (IO) — Emulador de terminal

Computador Emulador de terminal

Computador e dispositivos de interface estão juntos.


O comportamento dos videoterminais antigos passou a ser
simulado por um programa chamado emulador de terminal.
O emulador de terminal envia e recebe caracteres ASCII, e só
mostra texto tal como os videoterminais.

24/ 32
Curiosidade: Sequências de escape

Se o input/output é só ASCII, como se codificam


setas: PageUp/PageDn, Home/End, F1, F2, …
cores: o ASCII não tem cores…

25/ 32
Curiosidade: Sequências de escape

Se o input/output é só ASCII, como se codificam


setas: PageUp/PageDn, Home/End, F1, F2, …
cores: o ASCII não tem cores…
O ASCII tem um conjunto limitado de códigos. Outras
funcionalidades são codificadas em sequências especiais de caracteres
chamadas sequências de escape.

25/ 32
Curiosidade: Sequências de escape

Se o input/output é só ASCII, como se codificam


setas: PageUp/PageDn, Home/End, F1, F2, …
cores: o ASCII não tem cores…
O ASCII tem um conjunto limitado de códigos. Outras
funcionalidades são codificadas em sequências especiais de caracteres
chamadas sequências de escape.

\e[A \e[B \e[C \e[D

25/ 32
Curiosidade: Sequências de escape

Se o input/output é só ASCII, como se codificam


setas: PageUp/PageDn, Home/End, F1, F2, …
cores: o ASCII não tem cores…
O ASCII tem um conjunto limitado de códigos. Outras
funcionalidades são codificadas em sequências especiais de caracteres
chamadas sequências de escape.

\e[A \e[B \e[C \e[D

printf("\e[38;5;1mHello \e[38;5;2mWorld\n");
Hello World
\e representa o carácter Escape (código ASCII 27).

25/ 32
26/ 32
Arquitecturas Harvard e Von Neumann

27/ 32
Arquitecturas Harvard e Von Neumann

Stored Program Computer O programa está guardado em memória.

28/ 32
Arquitecturas Harvard e Von Neumann

Stored Program Computer O programa está guardado em memória.


Arquitectura de Von Neumann Os programas e os dados estão
guardados na mesma memória.
Memória de Dados e Programa CPU

28/ 32
Arquitecturas Harvard e Von Neumann

Stored Program Computer O programa está guardado em memória.


Arquitectura de Von Neumann Os programas e os dados estão
guardados na mesma memória.
Memória de Dados e Programa CPU

Arquitectura de Harvard Os programas e os dados são guardados em


memórias separadas.
Memória de Dados CPU Memória de Programa

28/ 32
Arquitecturas Harvard e Von Neumann

Stored Program Computer O programa está guardado em memória.


Arquitectura de Von Neumann Os programas e os dados estão
guardados na mesma memória.
Memória de Dados e Programa CPU

Arquitectura de Harvard Os programas e os dados são guardados em


memórias separadas.
Memória de Dados CPU Memória de Programa

Exemplos:
Computadores pessoais, telemóveis?
Microcontroladores, p. ex. arduino?
Primeiros computadores, calculadoras?

28/ 32
Arquitecturas Harvard e Von Neumann

Stored Program Computer O programa está guardado em memória.


Arquitectura de Von Neumann Os programas e os dados estão
guardados na mesma memória.
Memória de Dados e Programa CPU

Arquitectura de Harvard Os programas e os dados são guardados em


memórias separadas.
Memória de Dados CPU Memória de Programa

Exemplos:
Computadores pessoais, telemóveis? Von Neumann
Microcontroladores, p. ex. arduino?
Primeiros computadores, calculadoras?

28/ 32
Arquitecturas Harvard e Von Neumann

Stored Program Computer O programa está guardado em memória.


Arquitectura de Von Neumann Os programas e os dados estão
guardados na mesma memória.
Memória de Dados e Programa CPU

Arquitectura de Harvard Os programas e os dados são guardados em


memórias separadas.
Memória de Dados CPU Memória de Programa

Exemplos:
Computadores pessoais, telemóveis? Von Neumann
Microcontroladores, p. ex. arduino? Harvard
Primeiros computadores, calculadoras?

28/ 32
Arquitecturas Harvard e Von Neumann

Stored Program Computer O programa está guardado em memória.


Arquitectura de Von Neumann Os programas e os dados estão
guardados na mesma memória.
Memória de Dados e Programa CPU

Arquitectura de Harvard Os programas e os dados são guardados em


memórias separadas.
Memória de Dados CPU Memória de Programa

Exemplos:
Computadores pessoais, telemóveis? Von Neumann
Microcontroladores, p. ex. arduino? Harvard
Primeiros computadores, calculadoras? Não são “stored program”

28/ 32
Von Neumann — Ciclo de uma instrução

Código Controlo
Unidade
Memória CPU
Aritmética
Dados e Lógica

Fetch o processador pede à memória a próxima instrução a


executar. A instrução vem codificada num número
binário chamado código máquina.
Decode o processador descodifica o código máquina e
prepara-se para a execução.
Execute o processador executa a instrução. Modifica o seu
estado e pode ler ou escrever dados na memória.

29/ 32
Von Neumann — Ciclo de uma instrução

Código Controlo
Endereço Unidade
Memória 0010111101011010 CPU
Aritmética
Dados e Lógica

Fetch o processador pede à memória a próxima instrução a


executar. A instrução vem codificada num número
binário chamado código máquina.
Decode o processador descodifica o código máquina e
prepara-se para a execução.
Execute o processador executa a instrução. Modifica o seu
estado e pode ler ou escrever dados na memória.

29/ 32
Von Neumann — Ciclo de uma instrução

Código máquina
1000111101010010
Código Controlo
Endereço Unidade
Memória 0010111101011010 CPU
Aritmética
Dados e Lógica

Fetch o processador pede à memória a próxima instrução a


executar. A instrução vem codificada num número
binário chamado código máquina.
Decode o processador descodifica o código máquina e
prepara-se para a execução.
Execute o processador executa a instrução. Modifica o seu
estado e pode ler ou escrever dados na memória.

29/ 32
Von Neumann — Ciclo de uma instrução

Código Controlo
Unidade
Memória CPU
Aritmética
Dados e Lógica

Fetch o processador pede à memória a próxima instrução a


executar. A instrução vem codificada num número
binário chamado código máquina.
Decode o processador descodifica o código máquina e
prepara-se para a execução.
Execute o processador executa a instrução. Modifica o seu
estado e pode ler ou escrever dados na memória.

29/ 32
Von Neumann — Ciclo de uma instrução

Código Controlo
Endereço Unidade
Memória 0010111101011010 CPU
Aritmética
Dados e Lógica

Fetch o processador pede à memória a próxima instrução a


executar. A instrução vem codificada num número
binário chamado código máquina.
Decode o processador descodifica o código máquina e
prepara-se para a execução.
Execute o processador executa a instrução. Modifica o seu
estado e pode ler ou escrever dados na memória.

29/ 32
Von Neumann — Ciclo de uma instrução

Código Controlo
Endereço Unidade
Memória 0010111101011010 CPU
Dados Aritmética
1110010100010010
Dados e Lógica

Fetch o processador pede à memória a próxima instrução a


executar. A instrução vem codificada num número
binário chamado código máquina.
Decode o processador descodifica o código máquina e
prepara-se para a execução.
Execute o processador executa a instrução. Modifica o seu
estado e pode ler ou escrever dados na memória.

29/ 32
Von Neumann — Ciclo de uma instrução

Código Controlo
Unidade
Memória CPU
Aritmética
Dados e Lógica

Fetch o processador pede à memória a próxima instrução a


executar. A instrução vem codificada num número
binário chamado código máquina.
Decode o processador descodifica o código máquina e
prepara-se para a execução.
Execute o processador executa a instrução. Modifica o seu
estado e pode ler ou escrever dados na memória.

29/ 32
Von Neumann — Ciclo de uma instrução

Código Controlo
Endereço Unidade
Memória 0010111101011010 CPU
Aritmética
Dados e Lógica
Dados
0101111010111010

Fetch o processador pede à memória a próxima instrução a


executar. A instrução vem codificada num número
binário chamado código máquina.
Decode o processador descodifica o código máquina e
prepara-se para a execução.
Execute o processador executa a instrução. Modifica o seu
estado e pode ler ou escrever dados na memória.

29/ 32
Von Neumann — Ciclo de uma instrução

Código Controlo
Unidade
Memória CPU
Aritmética
Dados e Lógica

Fetch o processador pede à memória a próxima instrução a


executar. A instrução vem codificada num número
binário chamado código máquina.
Decode o processador descodifica o código máquina e
prepara-se para a execução.
Execute o processador executa a instrução. Modifica o seu
estado e pode ler ou escrever dados na memória.

29/ 32
Von Neumann — Ciclo de uma instrução

Código Fetch Instruction Controlo


Unidade
Memória CPU
Load Data Aritmética
Dados Store Data e Lógica

Fetch o processador pede à memória a próxima instrução a


executar. A instrução vem codificada num número
binário chamado código máquina.
Decode o processador descodifica o código máquina e
prepara-se para a execução.
Execute o processador executa a instrução. Modifica o seu
estado e pode ler ou escrever dados na memória.

29/ 32
Exemplo de execução de um programa

Endereço Instruções e dados


··· ··· Instrução: ?
100 17
101 5
102 214 Registos:
··· ··· ?
201 Ler do endereço 100 ?
202 Ler do endereço 101 ?
203 Somar registos ?
204 Guardar no endereço 102 Program Counter: 201
··· ···

Memória CPU

30/ 32
Exemplo de execução de um programa

Endereço Instruções e dados


··· ··· Instrução: Ler do endereço 100
100 17
101 5
Registos:
102 214 Fetch instr. ?
··· ···
201 Ler do endereço 100 ?
202 Ler do endereço 101 ?
203 Somar registos ?
204 Guardar no endereço 102
Program Counter: 201
··· ···

Memória CPU

30/ 32
Exemplo de execução de um programa

Endereço Instruções e dados


··· ··· Instrução: Ler do endereço 100
100 17
101 5
Registos:
102 214 Load data 17
··· ···
201 Ler do endereço 100 ?
202 Ler do endereço 101 ?
203 Somar registos ?
204 Guardar no endereço 102
Program Counter: 202
··· ···

Memória CPU

30/ 32
Exemplo de execução de um programa

Endereço Instruções e dados


··· ··· Instrução: Ler do endereço 101
100 17
101 5
Registos:
102 214 Fetch instr. 17
··· ···
201 Ler do endereço 100 ?
202 Ler do endereço 101 ?
203 Somar registos ?
204 Guardar no endereço 102
Program Counter: 202
··· ···

Memória CPU

30/ 32
Exemplo de execução de um programa

Endereço Instruções e dados


··· ··· Instrução: Ler do endereço 101
100 17
101 5
Registos:
102 214 Load data 17
··· ···
201 Ler do endereço 100 5
202 Ler do endereço 101 ?
203 Somar registos ?
204 Guardar no endereço 102
Program Counter: 203
··· ···

Memória CPU

30/ 32
Exemplo de execução de um programa

Endereço Instruções e dados


··· ··· Instrução: Somar registos
100 17
101 5
Registos:
102 214 Fetch instr. 17
··· ···
201 Ler do endereço 100 5
202 Ler do endereço 101 ?
203 Somar registos ?
204 Guardar no endereço 102
Program Counter: 203
··· ···

Memória CPU

30/ 32
Exemplo de execução de um programa

Endereço Instruções e dados


··· ··· Instrução: Somar registos
100 17
101 5
102 214 Registos:
··· ··· 17
201 Ler do endereço 100 5
202 Ler do endereço 101 22
203 Somar registos ?
204 Guardar no endereço 102
Program Counter: 204
··· ···

Memória CPU

30/ 32
Exemplo de execução de um programa

Endereço Instruções e dados


··· ··· Instrução: Guardar no endereço 102
100 17
101 5
Registos:
102 214 Fetch instr. 17
··· ···
201 Ler do endereço 100 5
202 Ler do endereço 101 22
203 Somar registos ?
204 Guardar no endereço 102
Program Counter: 204
··· ···

Memória CPU

30/ 32
Exemplo de execução de um programa

Endereço Instruções e dados


··· ··· Instrução: Guardar no endereço 102
100 17
101 5
102 22 Registos:
··· ··· 17
5
201
202
Ler do endereço 100
Ler do endereço 101
Store data 22
203 Somar registos ?
204 Guardar no endereço 102
Program Counter: 205
··· ···

Memória CPU

30/ 32
Exemplo de execução de um programa

Um programa é um conjunto de números em memória que codificam


as instruções a executar → código máquina.
O conteúdo da memória está em binário:

00000000 00000000 00000000 00010001


Instrução: ?
00000000 00000000 00000000 00000101

00000000 00000000 00000000 00010110 Registos:


?
10001101 00001000 00000000 00000000
?
10001101 00001001 00000000 00000100 ?
?
00000001 00001001 01010000 00100000 Program Counter: 201
10101101 00001010 00000000 00001000
CPU
Memória

Na memória não há distinção entre dados e instruções!


São apenas números em binário.

30/ 32
Tipos de memória

SAM (Sequential Access Memory) apenas permite


ler/escrever em sequência.

RAM (Random Access Memory) Permite acesso a qualquer


posição de memória em qualquer momento.

ROM (Read Only Memory) só permitem leitura, o conteúdo é


definido de fábrica. As EPROM e EEPROM podem ser
“reprogramadas”, mas em operação normal são apenas
de leitura.

31/ 32
32/ 32

Você também pode gostar