Escolar Documentos
Profissional Documentos
Cultura Documentos
ARQUITETURA DE
COMPUTADORES
SUMÁRIO
Apresentação 4
Autor 5
UNIDADE 1
Arquitetura de Computadores
UNIDADE 2
Aritmética Binária
SUMÁRIO
UNIDADE 3
Componentes do computador 54
Modelo de von Neumann
Sistemas de computação
UNIDADE 4
Execução de programas 70
Geração de programas executáveis
Interpretação
Linguagem montadora
APRESENTAÇÃO
4
AUTOR
5
UNIDADE 1
OBJETIVO
7
Organização Estruturada de Computadores
8
Figura 1: Computador com seis níveis.
Tradução (compilador)
Nível 4 Nível de linguagem assembly
Tradução (assembler)
Nível 3 Nível de máquina do sistema operacional
Hardware
Nível 0 Nível lógico digital
O nível 0, descrito de baixo para cima, é conhecido como nível lógico digital e refere-se
ao hardware verdadeiro da máquina cujos circuitos executam programas em linguagem
de máquina, ou seja, linguagem de baixo nível. Hardware é a parte física do computador,
composta pelos dispositivos eletrônicos e eletromecânicos.
9
O nível 2, conhecido como nível de arquitetura do conjunto de instrução, também
conhecido tecnicamente como Instruction Set Architecture – ISA. Em linhas gerais, os
fabricantes de computadores disponibilizam um manual de referência da linguagem
de máquina, que se refere ao ISA, ou seja, ao conjunto de instruções executadas pelo
hardware do computador.
O nível 3, conhecido como nível de máquina do sistema operacional, é o nível no qual suas
instruções também são executadas, ou por microprogramas, ou pelo próprio hardware
do computador. Nele, algumas instruções são interpretadas pelo sistema operacional
e outras diretamente pelo microprograma ou controle de hardware, e não pelo sistema
operacional propriamente dito.
Então, a partir de seus diferentes níveis, o computador é uma máquina capaz de executar
uma sequência de instruções que são definidas pelo homem para gerar um determinado
resultado, a fim de solucionar dado problema. A essa sequência de instruções, dá-se o
nome de algoritmo, o qual pode ser definido por um conjunto de regras expressas por
uma sequência lógica finita de instruções que serão executadas pelo computador.
10
Saiba mais
Os computadores analógicos não trabalham com números nem com símbolos que
representam os números, pois procuram fazer analogias entre quantidades. O ábaco é
um exemplo clássico desse tipo de computador (ver Figura 2), uma vez que se utilizava
de pequenos carretéis embutidos em um pequeno filete de metal para realizar cálculos.
É considerado a máquina de calcular primitiva, pois, segundo Tanenbaum (2013), teve
origem provavelmente na Mesopotâmia, há mais de 5.500 anos.
11
Portanto, os computadores analógicos representam uma categoria de computadores
que se utilizam de eventos elétricos, mecânicos ou hidráulicos para resolver problemas.
Charles Babbage foi o inventor da máquina diferencial que era capaz de realizar cálculos
polinomiais, baseada no conceito de um computador analógico.
Curiosidade
12
Curiosidade
MIDIATECA
13
Breve história do computador
A geração zero foi caracterizada pelo uso dos computadores essencialmente analógicos,
os quais eram construídos a partir de engrenagens mecânicas e eletromecânicas, cuja
operação era realizada de forma lenta, em baixa velocidade, limitando-se, portanto, à
resolução de problemas bem específicos (STALLINGS, 2017). Dois exemplos clássicos
de computadores dessa geração são a Máquina de Pascal (ver Figura 5) e a Máquina das
Diferenças de Babbage (ver Figura 6).
14
Figura 6: Máquina das Diferenças de Babbage.
De acordo com Stallings (2017), essa geração de computadores utilizou válvulas (ver Figura
7) para elementos lógicos digitais e memória. Uma série de pesquisas e computadores
comerciais foram construídos com válvulas. O estímulo para o computador eletrônico foi
a Segunda Guerra Mundial, segundo Tanenbaum (2013).
Figura 7: Válvula.
O primeiro computador digital eletrônico dessa geração foi o Eletronic Numeric Integrator
and Computer – ENIAC, construído por John Mauchley e John Presper Eckert, inicialmente
idealizado em 1943.
15
Figura 8: ENIAC.
Memória
Saída
Acumulador
Fonte: Tanenbaum (2013).
16
A Máquina de Von Neumman apresentava cinco partes básicas consideradas elementos
básicos do sistema computacional:
(1) Memória.
(2) Unidade de lógica e aritmética.
(3) Unidade de controle.
(4) Equipamento de entrada.
(5) Equipamento de saída.
Stallings (2017) afirma que essa geração de computadores utilizou transistores (ver
Figura 10). Foi inventada em 1948, nos Bell Labs, por John Bardeen, Walter Brattain e
William Shockley, em substituição às válvulas.
17
surge, em 1961, o Programmed Data Processor-1 – PDP-1 (Processador de Dado
Programável), desenvolvido pela empresa Digital Equipament Corporation (DEC). Com
isso, surge a indústria de minicomputadores (CORRÊA, 2016).
Para refletir
O PDP-1 foi doado ao Massachusetts Institute of Technology – MIT, onde logo atraiu a atenção
de estudantes, professores e pesquisadores. Anos mais tarde, surgiu o PDP-8, uma inovação
tecnológica que apresentava um barramento único, o omnibus (ver Figura 11).
Omnibus
Fonte: Tanenbaum (2013).
O autor define barramento como um conjunto de fios paralelos utilizados para conectar
os componentes de um computador. Surge o multiprocessamento (capacidade do
processador de processar dois ou mais processos simultâneos).
18
Terceira geração: circuitos integrados (1965-1980)
A DEC continuava sendo líder de mercado sobre outros fabricantes com o lançamento do
PDP-11 que tinha registradores orientados a palavras (word) e uma memória orientada
para byte, e ambos ocupavam uma faixa que abrangia uma considerada relação preço/
desempenho (TANENBAUM, 2013). Mais uma vez, a IBM inovou com o lançamento do
IBM 360.
Stallings (2017) afirma que, na década de 1980, surge a Very Large Scale Integration
– VLSI (Integração em Escala Muito Grande), que tinha possibilitado colocar, primeiro,
dezena de milhares, depois, centena de milhares e, por fim, milhões de transistores em
um único chip (ver Figura 13).
19
Figura 13: Chip VLSI.
Esse desenvolvimento logo levou a computadores menores e bem mais rápidos. Antes do
PDP-1, os computadores eram tão grandes e caros que as empresas e as universidades tinham
que ter departamentos especiais denominados centrais de computação para usá-los. Com
a chegada do minicomputador, cada departamento podia comprar sua própria máquina. Em
1980, os preços dos computadores caíram tanto que era possível que um indivíduo tivesse
seu próprio computador, denominado computador pessoal (Personal Computer – PC). Nessa
época, a Intel lança CPUs com microprocessadores modernos e potentes a preços bem
competitivos com os de seus concorrentes, entrando fortemente na briga do mercado dos
computadores pessoais. Depois disso, surgiram os microcomputadores.
20
Saiba mais
Surge, então, o IBM-PC, com o sistema operacional MS-DOS, desenvolvido pela Microsoft
Corporation, representada por Bill Gates e Paul Allen. Não querendo ficar atrás, a Apple
lança o Macintosh, com o sistema operacional Mac OS, próprio para computadores Apple.
Importante
Essa emocionante disputa entre Steve Jobs e Bill Gates está bem detalhada no
filme Piratas do Vale do Silício.
Ainda nos anos 1980, a Microsoft desenvolveu o sistema operacional Windows, que
passou a ser utilizado em grande parte dos computadores pessoais do mundo inteiro.
Tanenbaum (2013) afirma que, em 1981, o governo japonês anunciou que estava planejando
gastar 500 milhões de dólares para ajudar empresas a desenvolver computadores de
quinta geração que seriam baseados em inteligência artificial e representariam um salto
quântico em relação aos computadores “burros” da quarta geração. No entanto, o que
caracterizou a quinta geração de computadores foi o encolhimento dos computadores.
O primeiro tablet foi lançado em 1989 pela Grid Systems, denominado GridPad. Consistia
em uma pequena tela em que os usuários podiam escrever com uma caneta especial
para controlar o sistema.
21
Hoje em dia, são projetados computadores “invisíveis”, embutidos em eletrodomésticos,
relógios, cartões bancários e diversos outros dispositivos. Esses processadores permitem
maior funcionalidade e custos mais baixos em uma ampla variedade de aplicações.
Um aspecto peculiar desses computadores embutidos é que o hardware e o software
costumam ser projetados em conjunto.
Dessa forma entende-se a primeira geração como máquinas de válvulas (por exemplo, o
ENIAC), a segunda geração como máquinas de transistores (por exemplo, o IBM 7094), a
terceira geração como as primeiras máquinas de circuitos integrados (por exemplo, IBM
360), a quarta geração como computadores pessoais (por exemplo, as CPUs Intel) e a
quinta geração reflete, na verdade, mais uma mudança de paradigma do que uma nova
arquitetura específica. Em um futuro, não tão distante, computadores estarão espalhados
por todas as partes do mundo, embutidos em tudo (computadores, de fato, invisíveis).
MIDIATECA
22
Arquitetura de Computadores
Nesta última parte da unidade, você irá estudar a arquitetura RISC e a arquitetura CISC,
assim como conhecer o pipeline, ou seja, paralelismos e seus tipos.
Arquitetura RISC
Embora a fase inicial estivesse dirigida a instruções simples, que podiam ser executadas
rapidamente, logo se percebeu que projetar instruções capazes de ser iniciadas com
rapidez era a chave para o bom desempenho dos computadores modernos. Na verdade,
o tempo que uma instrução demorava para ser iniciada importava menos do que a
quantidade de instruções que podiam ser inicias por segundo.
Arquitetura CISC
23
Curiosidade
Houve uma tentativa de criar uma arquitetura mista ora denominada CRISC,
que apresentaria tanto as características da arquitetura RISCO como as
características da arquitetura CISC. Obviamente, esse foi um caso de
insucesso, porém serviu como ideia para que os computadores modernos
fossem projetados com as duas arquiteturas, RISC e CISC, mantendo suas
características primárias.
24
Saiba mais
MIDIATECA
25
NA PRÁTICA
Uma empresa da área de Sistema de Informação foi contratada para dar apoio quanto
ao planejamento e gerenciamento da infraestrutura de recursos de informação aos
sócios que estavam abrindo um novo escritório. Uma das orientações da empresa
da área de Sistema de Informação é que os computadores fossem da Intel. Isso
porque a Intel apresenta computadores com processadores da sexta geração.
Portanto, são mais rápidos, têm recursos de segurança integrada e também mais
compatíveis com o Windows 10.
A empresa explicou aos sócios do novo escritório que esses computadores fazem
parte da Era Skylake. “Skylake é o nome da microarquitetura com manufatura de 14
nanômetros da Intel, a qual, por sua vez, é o ponto de partida da sexta geração de
processadores da empresa. Como é de se esperar de qualquer evolução, a sexta
geração dos processadores Intel Core oferece desempenho melhorado e novas
experiências com menor consumo de energia. Além disso, ela amplia o leque de
designs possíveis para os dispositivos em que estará embarcada: tablets, computer
stick, dispositivos 2 em 1, all-in-one com 4K e as novas workstations móveis.”
Fonte: INTEL. Processadores da sexta geração da Intel são mais rápidos, cheios de recursos
de segurança integrada e ainda mais compatíveis com o Windows 10. Inovação Tecnológica,
11 janeiro 2017.
26
Resumo da Unidade 1
CONCEITO
27
Referências
28
UNIDADE 2
Esta unidade é importante para que você conheça os sistemas de numeração (decimal,
binário, octal e hexadecimal) para a realização das conversões entre os diferentes
sistemas de bases de numeração. Você também irá efetuar cálculos elementares com
números binários.
OBJETIVO
30
Sistemas de Numeração
Base Representação
Decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Binária 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
Octal 0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17
Hexadecimal 0 1 2 3 4 5 6 7 8 9 A B C D E F
Neste viés, é importante ressaltar que iremos estudar os sistemas de numeração decimal,
binário, octal e hexadecimal, sistemas estes que compõem a Tabela ASCII - American
Standard Code for Information Interchange (Tabela de Código Padrão Norte-Americano
para Intercâmbio de Informações).
31
Curiosidade
Sistema Decimal
Conforme afirma Stallings (2017), no dia a dia utilizamos um sistema baseado em dígitos
decimais (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) para a representação de números, e nos referimos a este
sistema como sistema decimal. Considere o que o número 83 significa. Ele quer dizer 8
dezenas e mais 3 unidades. Logo:
83 = (8 x 10) + 3
Diz-se, portanto, que o sistema decimal tem uma base ou raiz de 10. Isso quer dizer que
cada dígito do número é multiplicado por 10, elevado a uma potência que corresponde à
posição do dígito. Assim:
83 = (8 x 10¹) + (3 x 100)
Cabe informar que o mesmo princípio é mantido para as frações decimais, para tanto as
potências negativas de dez são usadas. Dessa forma a fração decimal 0,256 permanece
para 2 décimos mais 5 centésimos mais 6 milésimos. Logo:
32
Um número composto tanto pela parte inteira quanto pela parte fracionária tem números
elevados tanto para as potências de 10 positivas (parte inteira), quanto para as negativas
(parte fracionária). Veja:
Sabe-se que, em qualquer número, o dígito mais à esquerda é conhecido como dígito
mais significativo, pois ele contém o valor mais alto. Em contrapartida, o dígito mais
à direita é chamado de dígito menos significativo, pois ele contém o valor mais baixo.
No número decimal do exemplo anterior, o número 4 à esquerda é o número mais
significativo, e o número 6 à direita é o número menos significativo.
X = ∑𝒊(𝒅𝒊 𝒙𝟏𝟎𝒊 )
Sistema Binário
De acordo com Corrêa (2016), no sistema binário há apenas dois símbolos ou valores
possíveis para os dígitos: 0 e 1. Embora apresente apenas dois números, esse sistema
de numeração pode representar qualquer quantidade que possa ser representada em
decimal ou em qualquer outro sistema de numeração, como é o caso dos sistemas octal
e hexadecimal.
Para que isso ocorra com apenas dois algarismos, o sistema binário utiliza um número
maior de dígitos que o sistema decimal para expressar determinado valor.
Da mesma forma que o sistema decimal, os números são representados dígito a dígito,
considerando os dígitos mais significativos e os menos significativos, principalmente
quando se trata de números binários fracionários. Vejamos o exemplo a seguir:
33
Curiosidade
Y = ∑𝒊(𝒅𝒊 𝒙𝟐𝒊 )
Sistema Octal
0, 1, 2, 3, 4, 5, 6 e 7.
W = ∑𝒊(𝒅𝒊 𝒙𝟖𝒊 )
Sistema Hexadecimal
34
Os números hexadecimais são, portanto, formados pelos algarismos
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E e F.
Z = ∑𝒊(𝒅𝒊 𝒙𝟏𝟔𝒊 )
n −1
a = ∑ ( xi .B i )
i −0
Notação Posicional
35
No estudo dos sistemas de numeração existe a notação posicional que permite calcular
a quantidade que um número representa. Por exemplo, que quantidade representa o
símbolo 1?
1 9 6 8
1 x 1000 + 9 x 100 + 6 x 10 + 8 x 1
MIDIATECA
36
Conversão entre os Sistemas de Numeração
Vamos tomar como exemplo o número 25(10). Qual será o seu correspondente na base 2?
Em seguida, para formarmos o número na base binária, basta tomar o número quociente
concatenado, sem intervalos, com os demais números encontrados como resto das
divisões, de baixo para cima.
Então, 25(10) = 11001(2)
37
Então, 65(10) = 1000001(2)
A conversão de um número da base binária para a base decimal é feita pelo método
denominado Método Polinomial. Esse método considera que cada algarismo do número
é multiplicado pelo número dois, que corresponde ao número da base binária, elevado
a sua respectiva potência, iniciada por 0, até a quantidade de algarismos do número,
sempre da direita para a esquerda.
Vamos tomar como exemplo o número 101011(2). Qual será o seu correspondente na
base dez?
38
Somando as parcelas teremos: 1 + 0 + 4 + 8 + 0 + 0 + 64 = 77
Portanto, 1001101(2) = 77(10)
Observe que para todos os processos de conversão de base binária para decimal tomou-
se apenas números inteiros. O mesmo pode ocorrer utilizando-se números binários
fracionários. Veja o exemplo a seguir:
39
Somando as parcelas, tanto a parte inteira, quanto a parte fracionária, teremos: 1 + 0 + 0
+ 8 +16 “,” 0,5 + 0,25 + 0 = 25,75
Portanto, 11001,110(2) = 25,75(10)
Logo, 1237(10) é igual a 4D5(16), pois 13, na base 16, corresponde à letra D.
40
Logo, 894(10) é igual a 37E(16), pois 14, na base 16, corresponde à letra E.
Vamos tomar como exemplo o número A3(16). Qual será o seu correspondente na base 10?
A conversão de um número da base decimal para a base octal ocorre quando toma-se o
número da base dez e divide-se sucessivamente por 8 (base octal) até que o quociente
seja menor que o divisor. Também, para a formação do número na base octal, basta tomar
41
o número quociente concatenado, sem intervalos, com os demais números encontrados
como resto das divisões, de baixo para cima.
A conversão de um número da base octal para a base decimal é feita pelo método
polinomial, ou seja, considera-se que cada algarismo do número é multiplicado pelo
número oito que corresponde ao número da base octal, elevado a sua respectiva
potência, iniciada por 0 até a quantidade de algarismos do número, sempre da direita
para a esquerda.
Vamos tomar como exemplo o número 71263(8). Qual será o seu correspondente na
base dez?
42
Em seguida, soma-se todas as parcelas referentes aos resultados das multiplicações
decorridas. Então, teremos: 3 + 48 + 128 + 512 + 28672 = 29363(10).
Portanto, 71263(8) = 29363(10)
Vamos tomar como exemplo o número 171(8). Qual será o seu correspondente na base 10?
Para a conversão de base binária para a base hexadecimal, basta tomar-se o número da base
binária, sempre da direita para a esquerda, separando todos os números em grupo de quatro
dígitos (16 <> 24), completando com zeros o grupo da esquerda, quando for necessário.
Por exemplo: vamos admitir o número 10010110110(2). Qual o seu equivalente na base 16?
Então, teremos: 4B6, considerando que o grupo de bits que apresentou o resultado 11
será representado pela letra B.
43
Logo, 110010100011(2) é igual a CA2(16).
Para a conversão de base binária para a base octal, basta tomar-se o número da base
binária, sempre da direita para a esquerda, separando todos os números em grupo de três
dígitos (8 <> 2³), completando com zeros o grupo da esquerda, quando for necessário.
Por exemplo: vamos admitir o número 10010110110(2). Qual o seu equivalente na base octal?
Curiosidade
44
MIDIATECA
45
Aritmética Binária
Adição
A soma de dois números binários é realizada da mesma forma que a adição de números
decimais. Em geral, os mesmos passos são seguidos em uma adição binária. Entretanto,
apenas quatro casos podem ocorrer na soma de dois dígitos binários em qualquer
posição.
0+0=0
1+0=1
1 + 1 = 10 > 0 + carry de 1 para a próxima posição
1 + 1 + 1 = 11 > 1 + carry de 1 para a próxima posição
Esse último caso ocorre quando dois bits de determinada posição estão em nível 1 e há
um carry de posição anterior.
46
c) 11,011 + 10,110 = 110,001
Curiosidade
Subtração
1–1=0
1–0=1
0–0=0
0 – 1 = ? > necessita de um valor de complemento da parcela anterior.
47
Curiosidade
a) 1 – 1 = 0
b) 11 – 10 = 01
48
Multiplicação
a) 1 x 1 = 1
b) 11 x 10 = 110
49
Divisão
A divisão de binário é um pouco mais complexa que a multiplicação, mas é baseada nos
mesmos princípios gerais. Então, realiza-se a divisão de forma aritmética crisp, efetuando
as adições conforme necessidades da operação, até que se complete toda a operação.
Vejamos alguns exemplos:
a) 1 ÷ 1 = 1
b) 110 ÷ 10 = 11
MIDIATECA
50
NA PRÁTICA
a) 101010 + 101101
b) 11001 – 1011
c) 1101 x 1011
d) 110110 ÷ 110
51
Resumo da Unidade 2
CONCEITO
52
Referências
53
UNIDADE 3
Componentes do computador
INTRODUÇÃO
OBJETIVO
55
Modelo de von Neumann
O modelo de von Neumann recebeu esse nome em homenagem ao matemático John von
Neumann, que você pode observar na Figura 1, considerado o criador dos computadores
da forma como são projetados até os dias atuais.
Memória
Acumulador
Entrada Saída
56
• Central Arithmetic (CA): o dispositivo deve realizar as operações elementares da
aritmética mais frequentemente e, por esse motivo, precisa ter unidades especializadas
apenas para essas operações.
• Control Center (CC): a sequenciação apropriada das operações pode ser executada,
de forma mais eficiente, por um controle central.
• Recording (R): deve ser capaz de manter contato de entrada e saída, que são os
neurônios correspondentes sensoriais e motores do cérebro humano.
• Memória.
• Unidade aritmética e lógica.
• Unidade central de processamento.
• Unidade de controle.
57
MIDIATECA
58
Modelo de barramento de sistema
CPU
Memória principal Entrada e
(ALU, registradores
saída E/S
e controle)
59
1. Barramento de dados: para transmitir dados.
2. Barramento de endereços: para identificar onde o dado deve ser lido/escrito
(endereço de memória).
3. Barramento de controle: para coordenar o acesso aos barramentos de dados e
endereços para que não ocorram conflitos.
1
específico.
• Para receber informações do dispositivo, a CPU deve ler um
(ou mais) endereço de memória específico.
2
de dispositivos em portas de E/S permite que todo o
endereçamento de memória esteja disponível, efetivamente,
para o acesso a ela.
MIDIATECA
60
Sistemas de computação
Processadores
Unidade de
controle
Registradores
Memória
Disco Impressora
Principal
Barramento
Fonte: Tanenbaum (2013).
61
Vamos entender melhor a CPU?
A CPU também contém uma pequena memória de alta velocidade usada para armazenar
resultados temporários e realizar alguns controles de informações. Essa memória é
composta de uma quantidade de registradores, cada um deles com determinados
tamanho e função — em geral, eles apresentam o mesmo tamanho. Registradores podem
ser lidos e escritos em alta velocidade porque são internos à CPU.
A organização interna de parte de uma típica CPU baseada no modelo de von Neumann
está ilustrada na Figura 4.
A+B
A
Registradores
ULA
62
Essa parte é tecnicamente denominada “caminho de dados” e é composta por
registradores, unidade de aritmética e lógica e por diversos barramentos que conectam as
partes. Os registradores alimentam dois registradores de entrada da ULA, representados
por A e B na Figura 4.
Conforme afirma Tanenbaum (2013, p. 44-45), a CPU registra cada instrução em uma
série de pequenas etapas:
Memória principal
63
superescalares, fazendo com que as CPUs fiquem mais velozes. Nesse contexto, segundo
Stallings (2017), surgiu uma memória pequena e rápida denominada tecnicamente como
“cache”.
A ideia básica de um cache é bem simples: as palavras (word) de memória usadas com
mais frequência são mantidas no cache; quando a CPU precisa de uma palavra, ela
examina em primeiro lugar a cache; então, somente se a palavra não estiver ali é que ela
recorrerá à memória principal.
Memória secundária
Seja qual for o tamanho da memória principal, ela sempre será considerada muito
pequena. As pessoas sempre querem armazenar mais informações do que a memória
pode conter, ainda mais porque, à medida que a tecnologia melhora, elas começam a
pensar em armazenar coisas que antes estavam inteiramente no reino da ficção científica
(CORRÊA, 2016).
• Disco magnético.
• Unidades de fita magnética.
• Hard disk (HD).
• Compact-disc (CD).
• Digital versatile disc (DVD).
• Pen drive.
Entrada/Saída
64
1 CPU
3
Equipamentos de entrada/saída (E/S), ou input/output
(I/O), como impressoras, escâneres e modens.
Vale ressaltar que a maioria dos computadores pessoais e estações de trabalho apresenta
placa-mãe que contém um chip da CPU e diversos outros chips de suporte. Ela contém,
também, um barramento ao longo do comprimento e soquetes nos quais os conectores
de borda das placas de E/S podem ser inseridos. A estrutura lógica de um computador
pessoal simples é ilustrada na Figura 5. Esse computador tem um único barramento para
conectar a CPU, a memória e os equipamentos de entrada/saída, enquanto a maioria dos
sistemas tem dois ou mais barramentos.
Cada dispositivo de entrada/saída consiste em duas seções: uma que contém grande
parte da eletrônica, denominada “controlador”, e outra que contém o dispositivo de
entrada/saída em si, tal como um drive de disco.
Barramento
65
O controlador está, em geral, contido em uma placa que é ligada em um encaixe livre.
Mesmo o monitor não sendo um dispositivo opcional, o controlador de vídeo às vezes
está localizado em uma placa de encaixe do tipo plug-in para permitir que o usuário
escolha entre placas, como uma sem acelerador gráfico, por exemplo.
Exemplo
MIDIATECA
66
NA PRÁTICA
67
Resumo da Unidade 3
CONCEITO
68
Referências
69
UNIDADE 4
Execução de programas
INTRODUÇÃO
OBJETIVO
71
Geração de programas executáveis
72
Figura 1 – Etapas de um ciclo de máquina.
Início
Decodificar
Executar
Buscar
Execução Decodificação Busca Ciclo da
máquina
(sem mais instruções)
Fim
73
Figura 2 – Processo completo de compilação.
Ligador
Código
Código-fonte Código-objeto Execução
executável
Editor de texto
Compilador Carregador
Fonte: Tanenbaum (2013).
MIDIATECA
74
Interpretação
1. A primeira
instrução do
programa-fonte
2. Após a checagem, 3. Esse processo é
é recebida pelo
o interpretador ordena repetido até que a
conversor, que
ao computador que última linha de código
verifica se a escrita
execute a instrução seja efetivamente
está correta,
em código de convertida e
convertendo a
máquina. executada.
instrução, portanto,
em linguagem de
máquina.
75
Figura 3 – Processo completo de interpretação.
Procedimento-
Módulo-
fonte 1
objeto 1
Procedimento- Módulo-
Interpretador Ligador
fonte 2 objeto 2
Módulo-
Procedimento-
objeto 3
fonte 3
0 0 0 0 10 0 1110 10 1
0 10 10 0 0 0 10 0 10 0
10 0 10 0 0 10 0 10 0 1
Memória 0 0 10 0 10 0 10 10 0 1
Carregador 0 1 0 0 1 0 1 0 0 1 0 111
principal 0 0 0 010 010 010 0
Programa executável
(código binário)
Um método semelhante denominado tradução também pode ser utilizado para realizar
tal conversão. Nesse método, em vez de armazenar instruções do programa-fonte
na sequência que são fornecidas, o tradutor gera códigos intermediários visando não
sobrecarregar a memória do computador. Nesse processo, se um erro for detectado,
o processo é retornado para a primeira instrução do código-fonte, para que seja
providenciada a correção necessária do código.
Importante
1. Compilador.
2. Interpretador.
3. Tradutor.
76
MIDIATECA
77
Linguagem montadora
Corrêa (2016) afirma que existem dois tipos de montadores: montador de dois passos
e montador de um passo. O montador de dois passos tem esse nome por fazer duas
passagens pelo código-fonte, da seguinte maneira:
1 O montador lê
o código-fonte
2 O código-fonte é
lido novamente, e
e determina os os mnemônicos
endereços para das instruções
as referências (abreviação de
simbólicas, comandos da
construindo uma instrução) e
tabela de símbolos. as referências
simbólicas são
substituídos por
códigos de máquina.
78
O montador de um passo faz apenas uma passagem pelo código-fonte, porém esse fato
implica restrições no programa-fonte. A principal dificuldade disso envolve referências
futuras a rótulos. Os operandos das instruções podem ser símbolos que ainda não
foram definidos pelo programa-fonte. Portanto, o montador não sabe qual endereço
relativo inserir na instrução traduzida. No entanto, essa dificuldade pode ser sanada
pelo montador. Ao encontrar um operando da instrução que seja um símbolo ainda não
definido, o montador:
Importante
79
O uso da linguagem de montagem reporta desvantagens significativas; de acordo com
Stallings (2017), são elas:
80
2. Desenvolvimento de compiladores: para criar compiladores, depuradores e outras
ferramentas de desenvolvimento, é necessário entender técnicas de codificação em
linguagem de montagem.
3. Sistemas embarcados: sistemas embarcados pequenos têm menos recursos que os
PCs e mainframes. A programação em linguagem de montagem pode otimizar o código
tanto em velocidade quanto em tamanho em sistema embarcado pequeno.
4. Drivers para hardware e códigos de sistemas: acessar hardware, registradores de
controle de sistema etc. às vezes pode ser difícil ou impossível com código de alto nível.
5. Acesso às instruções que não são acessíveis a partir das linguagens de alto nível:
algumas instruções em linguagem de montagem não têm equivalentes na linguagem de
alto nível.
6. Código que se modifica: normalmente não é lucrativo porque interfere em um código
eficiente para uso de cache. Contudo ele pode ser vantajoso, por exemplo, para incluir
um pequeno compilador em programas matemáticos, em que uma função definida pelo
usuário precisa ser calculada várias vezes.
7. Otimização do tamanho do código: o espaço de armazenamento e a memória são tão
baratos que não vale a pena usar linguagem de montagem para reduzir o tamanho do
código. Porém, o tamanho da cache ainda é um recurso crítico, que pode se tornar útil
em alguns caso se otimizar o tamanho de um pedaço de código para que caiba dentro
da cache de código.
8. Otimização da velocidade do código: para situações em que os compiladores não são
eficientes, aumentos de velocidades podem ser alcançados por meio de um programa
em linguagem de montagem.
9. Bibliotecas e funções: o benefício total de otimizar o código é maior utilizando
bibliotecas de funções, usadas por muitos programadores.
10. Compatibilização de bibliotecas de funções com compiladores e sistemas
operacionais: é possível criar funções de biblioteca com várias entradas que sejam
compatíveis com diferentes compiladores e sistemas operacionais.
Observação
Por que você precisa estudar linguagem de montagem? Basicamente por dois
motivos:
81
Linguagem de montagem – Assembler
1. Rótulo.
2. Mnemônico.
3. Operando(s).
4. Comentário(s).
1. Rótulo:
O rótulo, como o próprio nome já diz, serve para rotular uma instrução, um identificador ou
até uma constante. Ele permite que o montador o defina como equivalente ao endereço
para o qual será carregado o primeiro byte do código-objeto gerado pela instrução.
82
Rótulos são utilizados mais frequentemente em instruções de desvio. Um rótulo possibilita
que uma posição do programa seja mais fácil de ser localizada e lembrada. Ele pode ser
movido com facilidade para corrigir um programa em linguagem de montagem. Nesse
caso, o montador irá mudar automaticamente o endereço em todas as instruções que
usam o rótulo quando o programa for remontado.
Corrêa (2016) afirma que o programador de linguagem de montagem não precisa calcular
endereços de memória, utilizando apenas rótulos conforme sua necessidade.
2. Mnemônico:
3. Operando:
O operando é utilizado para especificar dados que são necessários para dada operação.
Uma sentença da linguagem de montagem inclui zero ou mais operandos.
4. Comentário:
Pseudoinstruções
83
Veja, abaixo, algumas das pseudoinstruções disponíveis no assembler:
Pseudoinstruções Significado
84
As instruções ou comandos de código assembler são adotados no formato de
mnemônicos, ou seja, abreviação de comandos para facilitar a memorização e seu uso.
A seguir, você pode conferir alguns mnemônicos utilizados na linguagem montadora:
Mnemônicos Significado
AND E lógico.
OR OU lógico.
85
Introdução ao MIPS
Curiosidade
De acordo com Corrêa (2016), o SPIM é um sistema autocontido para executar programas
do MIPS. Ele contém um depurador que oferece alguns serviços de forma bem similar
aos serviços oferecidos pelo sistema operacional.
O SPIM é muito mais lento do que um computador real. Não obstante, seu baixo custo e a
grande disponibilidade não têm comparação com o hardware real. O SPIM é um programa
simples e fácil de usar que simula o computador MIPS (STALLINGS, 2017). Obviamente
que, por se tratar de um simulador, nem tudo no SPIM é igual a um computador real.
Saiba mais
Corrêa (2016) afirma que, no MIPS, as instruções aparecem compostas em seis campos,
com tamanho total de 32 bits. Vamos conhecê-los?
86
• op: também chamado de opcode, refere-se à operação básica da instrução.
• rs: registrador do primeiro número de uma operação de soma.
• rt: registrador do segundo número de uma operação de soma.
• rd: registrador que recebe o resultado da operação.
• shamt: indica a quantidade de deslocamento necessário. Trata-se de uma abreviação
do termo em inglês shift amount (“quantidade de deslocamento”).
• funct: também conhecido como código de função ou simplesmente função. Trata-
se de uma abreviação do termo em inglês function (“função”).
op rs rt rd shamt funct
Note que, na ordem que os campos são dispostos pelo simulador, primeiro aparece o
opcode. Em seguida, o registro do primeiro número, o registro do segundo número, o
registro do resultado e a quantidade de deslocamento, respectivamente. Finalmente, para
finalizar os campos do MIPS, aparece a função ou código de função.
MIDIATECA
87
NA PRÁTICA
88
Resumo da Unidade 4
CONCEITO
89
Referências
90