cap4-organizacao-computador.asc 18 KB
Newer Older
1
2
== Organização e Funcionamento do Computador

3
4
5
6
7

////
FIXME: Os objetivos não estão focados no aluno.
////

8
9
.Objetivos do capítulo
____________________
10
11
Ao final deste capítulo você deverá ser capaz de:

12
- Descrever a arquitetura geral de um computador
13

14
15
- Descrever seus componentes básicos e suas funções, como por exemplo 
a UCP, a memória principal, e os dispositivos de E/S
16

17
- Descrever o ciclo de máquina responsável pela execução de 
18
programas de computador
19
____________________
20

21
Um sistema de computador é integrado pelo seu ((hardware)) e seu ((software)). 
22
O hardware é o equipamento propriamente dito, e seus elementos básicos são: 
23
24
25
26
unidade central de processamento, memória principal e seus dispositivos de 
entrada e saída.

O software é constituído pelos programas que lhe permitem atender às 
27
necessidades dos usuários. Ele abriga programas fornecidos pelos 
28
29
fabricantes do computador e programas desenvolvidos pelo usuário.

30
Neste capítulo, iremos identificar como estes dois elementos unidos 
31
32
33
permitem que atividades pré-programadas, através de uma linguagem, sejam 
executas de forma automática pelo computador. 

34
=== Arquitetura de um Computador
35

36
37
(((Arquitetura)))

38
39
Os circuitos de um computador que executam operações sobre dados, 
tais como adição e subtração, são isolados em uma região chamada Unidade 
40
Central de Processamento UCP (CPU – 'Central Processing Unit'), ou processador.
41
42
43
44
45
46
47

Os dados que estão armazenados na memória principal do computador 
são transferidos através de barramentos que interligam estes componentes.

A comunicação com o mundo externo, os usuários, se dá pelos 
dispositivos de Entrada e Saída (E/S). A comunicação entre o computador e 
estes dispositivos se dá através dos controladores de cada dispositivo de 
48
E/S. Em computadores comuns, estes controladores correspondem a placas de 
49
circuito encaixadas na placa principal do computador (placa mãe). Está 
50
ilustrada na <<fig_arquitetura_geral>>, a arquitetura básica de um computador, demonstrando a 
51
52
organização de seus componentes básicos.

53
[[fig_arquitetura_geral]]
54
.Arquitetura geral de um computador
55
image::images/organizacao-computador/arquitetura_computador.png[scaledwidth="60%"]
56

57

58
Nas seções a seguir são apresentas descrições sobre cada unidade desta Arquitetura, descrevendo seus componentes e funções básicas.
59
60

==== Memória Principal
61

62
63
(((Memória Principal)))

64
A memória do computador consiste numa coleção de ((registradores)) 
65
66
numerados consecutivamente (endereçados), onde cada um possui um tamanho 
denominado de *tamanho da palavra*, que pode variar em 16, 32, 64 e 128 bits, com a 
67
68
69
palavra de 32 bits sendo a mais comum hoje em dia, e a palavra de 64 bits 
aumentando de popularidade.

70
Cada registrador tem um *endereço*, chamado de localização na 
71
72
73
memória, estas são organizadas linearmente em ordem consecutiva. O número 
único que identifica cada palavra é chamado de endereço.

74
75
A memória possui um espaço de endereçamento representado pelo 
tamanho em bits do seu endereço, logo, um espaço de endereçamento de 32 bits 
76
pode acessar qualquer palavra de memória em qualquer lugar no intervalo de 0 a 
77
2^32^-1.
78
79

O espaço de endereçamento pode ser dividido em regiões distintas 
80
usadas pelo sistema operacional, dispositivos de E/S (Entrada e Saída), programas de usuário e 
81
pilha de execução do sistema operacional.
82

83
[[fig_mapa_memoria]]
84
.Mapa de Memória do Computador
85
image::images/organizacao-computador/memoria_principal.png[]
86

87
88
89
90
91
As regiões ilustradas na <<fig_mapa_memoria>> compõem um possível mapa de memória. Os endereços disponíveis são dividos da seguinte forma:


Reservados para o sistema operacional:: Os endereços acima de 2048 (0-2048) são reservados para uso do sistema operacional. 
Reservados para os dispositivos de E/S:: A porção do espaço de endereçamento entre 2^31^ e  2^32^ – 1 está reservada para dispositivos de E/S.
92
Disponível para o usuário:: Corresponde ao restante do espaço, é onde os programas do usuário serão carregados. 
93

94
===== Endereços vs Dados
95

96
97
É importante manter clara a distinção entre o que é *((endereço))* e o 
que é *((dado))*. Uma palavra na memória, pode ter distintas representações 
98
99
100
dependendo do seu uso. Ela pode armazenar uma instrução contendo a operação 
e os operandos (dados de entrada) para a realização de uma específica 
operação, mas também pode armazenar o endereço de uma outra região de 
101
102
memória. Logo, _o endereço é um apontador para uma posição de memória que 
contém dados_, e estes são informações significativas para a realização de 
103
104
alguma atividade no computador, ou a representação de alguma informação.

105
==== Unidade Central de Processamento (UCP)
106

107
A ((Unidade Central de Processamento)), ilustrada na <<fig_ucp>>, é composta 
108
por duas partes principais: a *((unidade lógica e aritmética))* (ULA), formada por 
109
circuitos que manipulam os dados através de operações binárias (dois 
110
operandos) e unárias (um operando). Exemplos incluem a 'soma' e operadores 
111
lógicos: 'and', 'or' e 'not'. E a *((unidade de controle))*, cujos circuitos são 
112
responsáveis por coordenar as operações da UCP.
113

114
[[fig_ucp]]
115
116
.Componente lógicos da UCP
image::images/organizacao-computador/ucp.png[scaledwidth="70%"]
117
118

Para o armazenamento e a comunicação entre estas duas unidades a UCP 
119
contém circuitos de armazenamento chamados de *((registradores))*, que se assemelham 
120
às células de armazenamento da memória principal. 
121

122
123
Alguns registradores funcionam como _posições intermediárias de armazenamento_ para os dados manipulados pela UCP.
Nestes registradores são armazenados os dados de entrada para a ULA e ainda proporcionam um local de armazenamento para 
124
125
o resultado das operações.

126
_Os dados a serem manipulados pela ULA tem origem na memória principal_, sendo 
127
128
de responsabilidade da unidade de controle transferir estes dados aos 
registradores, informar à ULA sobre quais registradores estão os dados de 
129
130
131
132
entrada, ativar o circuito da operação apropriada e informar em que 
registrador deve guardar o resultado da operação.

A transferência desta informação oriunda da memória principal se dá 
133
através do *((barramento))* que é responsável por transmitir padrões de bits 
134
135
136
137
entre a UCP, os dispositivos de E/S e a memória principal.

NOTE: Executar uma simples operação de soma é mais complexo que apenas somar 
estes números. Coordenado pela unidade de controle, os registradores 
138
intermediam a comunicação da memória principal e a ULA. 
139

140
.Passos para a operação de soma
141
142
. Obter da memória um dos valores da soma e guardar em um registrador;
. Obter da memória o outro número a ser somado e armazená-lo em 
143
outro registrador;
144
. Acionar o circuito de adição tendo os registradores do passo 1 e 2 
145
como entrada, e escolher outro registrador para armazenar o resultado;
146
147
. Armazenar o resultado na memória principal;
. Finalizar operação.
148

149
==== Unidades de Entrada/Saída
150

151
(((Unidade de Entrada))) (((Unidade de Saída))) (((Entrada/Saída)))
152

153
154
155
156
157
Entrada/Saída (E/S) compreende todas as maneiras como o computador se 
comunica com os usuários e outras máquinas ou dispositivos. Os dispositivos 
de entrada aceitam dados e instruções do usuário, os dispositivos de saída 
retornam os dados processados.

158
159
===== Tipos de dispositivos de Entrada/Saída

160
Os dispositivos de entrada/saída são classificados da seguinte forma:
161

162
Dispositivos de entrada::
163
São os dispositivos que possuem a função básica de enviar dados.
164
165
Os dispositivos de entrada mais conhecidos são teclado, mouse, 'scanner' e microfone.

166
Dispositivos de saída::
167
São os dispositivos que possuem a função básica de receber ou apresentar dados.
168
169
Os dispositivos de saída mais comuns são a tela de vídeo (monitor), a impressora e o auto-falante. 

170
171
172
Dispositivos de entrada e saída:: 
São os dispositivos que possuem a função de enviar, receber ou apresentar dados.
Exemplos de dispositivos de entrada e saída são: discos rígidos, pen-drives, placas de redes e telas 'touch-screen'.
173
174
175
176
177
178
179


Um dispositivo especial de E/S de um computador é o disco rígido 
(HD), nele são armazenados todos os dados que devem persistir num sistema 
computacional, mesmo na ausência de energia. Todos os programas que não 
estão em execução se encontram no disco, seu único problema é o tempo 
excessivo para a recuperação e escrita de uma informação, havendo assim a 
180
necessidade de se trabalhar com a memória volátil (memória principal), mais rápida, porém mais cara.
181

182
===== Funcionamento dos dispositivos de Entrada e Saída
183
184
185
186
187
188
189
190
191

Os dispositivos de E/S trabalham com a memória do computador do 
seguinte modo: os dados captados pelos dispositivos de entrada são 
representados em pulsos elétricos e transmitidos ao computador. Estes 
pulsos são convertidos em dados binários e armazenados na memória do 
computador. No caminho inverso, a informação binária é transformada em pulso 
elétrico e encaminhada para o dispositivo de saída especialista para 
tratá-lo e gerar uma saída ao usuário.

192

193
==== O Modelo de Barramento
194

195
196
(((Barramento)))

197
198
199
200
201
O objetivo do barramento é reduzir o número de interconexões entre a 
UCP e seus subsistemas. Em lugar de mantermos um caminho de comunicação entre 
a memória e cada um dos dispositivos de entrada e saída, a UCP é 
interconectada com os mesmos via barramento de sistema compartilhado.

202
[[fig_modelo_barramento]]
203
.Modelo de Barramento do Computador
204
image::images/organizacao-computador/barramentos.png[]
205
 
206
Os componentes são interconectados ao barramento da forma ilustrada na 
207
<<fig_modelo_barramento>>. A UCP gera endereços que são colocados no *barramento de endereços*,footnote:[O caminho inverso desta operação não é possível, como pode ser observado na figura.] e a memória recebe endereços do mesmo.
208

209
Durante a execução de um programa, cada instrução é levada até à 
210
211
ULA (Unidade Lógica e Aritmética) a partir da memória, uma instrução de 
cada vez, junto com qualquer dado que seja necessário para executá-la. A 
212
saída do programa é colocada em um dispositivo, tal como display de vídeo ou 
213
214
215
disco. A comunicação entre os três componentes (UCP, memória e E/S) é 
feita sempre pelos barramentos.

216
=== Programando um computador
217
218
219
220

A grande evolução na arquitetura dos computadores foi a flexibilidade 
da unidade de controle quanto ao tratamento de instruções. Em suas primeiras 
versões existiam circuitos físicos montados na unidade de controle que 
221
222
realizavam algumas atividades específicas, e sempre que o usuário quisesse 
utilizar outras operações, era necessário reprogramar fisicamente a fiação 
223
do circuito para que a nova operação pudesse ser executada. 
224
225
O leitor deve perceber que esta estratégia tornaria qualquer 
programação inviável para leigos da área de circuitos eletrônicos.
226

227
Esta seção apresenta o funcionamento atual da UCP para executar os programas do 
228
229
sistema e de usuários.

230
==== Linguagem de Máquina
231

232
233
(((Linguagem de Máquina)))

234
A unidade de controle moderna é projetada para reconhecer *((instruções))* 
235
codificadas como padrões de bits. Ao conjunto de instruções é dado o 
236
nome de *((linguagem de máquina))*, e cada uma destas instruções é chamada de *((instrução de máquina))*.
237

238
[NOTE]
239
Algo que pode surpreender o leitor é a pequena quantidade de instruções necessária 
240
para a UCP decodificar, sendo através da combinação destas poucas 
241
242
243
244
instruções, bem planejadas, que o computador desenvolve tarefas de usos 
gerais nas mais diversas situações em nosso cotidiano. E a grandeza da 
Ciência da Computação é que se tivermos projetado instruções bem 
planejadas, a adição de outras instruções mais específicas se torna 
245
desnecessária, pois uma combinação das instruções básicas tem o mesmo 
246
247
efeito lógico da instrução específica.

248
249
===== Arquiteturas RISC e CISC

250
A decisão entre instruções específicas ou instruções de uso geral 
251
252
253
254
255
256
257
258
levou a disputa de duas filosofias de projetos para as UCPs. 

((RISC)) ('Reduced Instruction Set Computer'):: 
Possui um *conjunto mínimo de instruções*, tem em sua defesa o fato de criar máquinas simples e eficientes. 

((CISC)) ('Complex Instruction Set Computer')::
Possui um *conjunto de instruções complexas*, que tem como argumento a 
facilidade de programação, já que uma única instrução é capaz de realizar várias tarefas individuais do RISC.
259
260
261
262

As duas filosofias tem entrada no mercado, sendo o CISC adotado pela 
família Pentium da Intel e o RISC adotado pela Apple Computer, IBM e Motorola.

263
264
265
266
267
268
269
270
271
272
273
274
===== Tipos de instruções

Existem três tipos de instruções: 

Instruções de transferência de dados:: 
realizam cópia de valores entre registradores da UCP e a memória principal, como por exemplo `STORE` e `LOAD`; 

Instruções lógicas e aritméticas:: 
ativam os circuitos específicos da ULA para a realização das operações, como por exemplo `ADD`, `SHIFT`, `OR`, `AND` e etc.; 

Instruções de controle:: 
responsáveis por tratar a sequência da execução do programa sem haver manipulação de seus dados, como por exemplo o `JUMP` e 
275
276
`CALL`, usadas para a mudança do fluxo normal de um programa, implementando 
assim os desvios condicionais, códigos de repetição, chamada de função e retorno.
277

278
279
280

===== Codificação de instruções

281
A codificação de uma instrução é composta de duas partes, o *campo código 
282
da operação* e o *campo do operando*.
283

284
image::images/organizacao-computador/codigo_comando.png[scaledwidth="70%"]
285
286


287
Podemos observar no exemplo a seguir, a codificação da operação `STORE` e 
288
289
seus operandos:

290
[[fig_exemplo_instrucao]]
291
.Codificação de uma instrução STORE em código de máquina
292
image::images/organizacao-computador/exemplo_instrucao.png[scaledwidth="70%"]
293
294


295
O primeiro dígito hexadecimal, o `B`, representa, neste exemplo, a operação 
296
`STORE` (armazena o conteúdo de um registrador em memória). O dígito 
297
hexadecimal seguinte representa o identificador do registrador (valor `C`) que 
298
possui o conteúdo a ser gravado, e já o par de dígitos hexadecimais `F3` representa 
299
o endereço na memória principal onde o conteúdo do registrador `C` será 
300
301
guardado. Podemos traduzir este código da seguinte forma:

302
____
303
_Armazene o padrão de bits contido no registrador `C` para a célula de memória de endereço `F3`._
304
____
305

306
==== Executando  Programas em Linguagem de Máquina
307

308
Um programa é uma sequência de instruções em uma linguagem a ser 
309
310
311
312
313
314
315
executada com o objetivo de realizar uma determinada atividade pré-programada.

O programa em linguagem de máquina fica posto na memória principal, 
sendo de responsabilidade da unidade de controle, a busca por cada instrução 
de máquina, sua decodificação e o gerenciamento da execução desta 
instrução com o auxílio da ULA. Após o término de cada instrução o 
processo se repete dando continuidade ao ciclo de máquina, este ciclo está 
316
ilustrado na <<ciclo_de_maquina>>.
317

318
[[ciclo_de_maquina]]
319
320
.As três fases do ciclo de máquina
image::images/organizacao-computador/ciclo_de_maquina.png[scaledwidth="70%"]
321
322
323


Para o controle deste ciclo a unidade de controle possui dois registradores de 
324
propósito específico: o *((contador de instruções))* e o *((registrador de instruções))*. 
325
No contador de instruções é armazenado o endereço de memória 
326
327
da próxima instrução a ser executada, assim a unidade de controle fica 
informada sobre a posição do programa em execução. Já o registrador de 
328
instruções guarda a instrução de máquina que está em execução.
329

330
Como ilustrado na <<ciclo_de_maquina>>, o ciclo de máquina é divido em três fases. Em 
331
332
333
cada fase a unidade de controle utiliza seus registradores para auxiliá-la na 
execução das instruções:

334
Busca:: a unidade de controle pede para a memória principal transferir a 
335
336
337
338
instrução contida no endereço de memória indicado pelo contador de 
instruções e este conteúdo é armazenado no registrador de instruções. Por 
fim, o conteúdo do contador de instruções é incrementado, ficando pronto 
para a próxima fase de busca;
339
340

Decodificação:: a unidade de controle separa os campos da instrução 
341
342
contida no registrador de instruções de acordo com o tipo de operação, 
identificando os operandos da instrução;
343
344

Execução:: os circuitos específicos da ULA são ativados, os dados de 
345
346
347
348
349
entrada carregados e a tarefa indicada na instrução é executada.

Ao final da execução, a unidade de controle recomeçará o ciclo, partindo da 
fase de busca. 

350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370

[[sec_animacao_arquitetura]]
=== Animação demonstrando o funcionamento da arquitetura

O vídeo a seguir demonstra o funcionamento interno da UCP (ou CPU),
nele é possível ver como as intruções são carregas, decodificadas e executadas.

.Funcionamento básico da UCP: http://youtu.be/69svptJTE9Y
ifdef::livro-pdf[]
["qrcode", size=10, scaledwidth="30%"]
-------------------------
http://youtu.be/69svptJTE9Y
-------------------------
endif::livro-pdf[]
ifdef::livro-html[]
+++
<?dbhtml-include href="videos/arquitetura.html"?>
+++
endif::livro-html[]


371
=== Recapitulando
372
373
374
375
376
377
378
379

Neste capítulo estudamos a Arquitetura básica de um computador, identificamos 
cada um dos seus componentes, descrevendo suas funcionalidades principais e um 
resumo de seu funcionamento interno. Descrevemos como estes componentes 
interagem entre si para o funcionamento do computador, dentre estes componentes 
estudamos a Unidade Central de Processamento, a Memória Principal, os 
dispositivos de Entrada e Saída e os Barramentos.

380
Por fim, demos uma introdução sobre como o computador consegue executar um 
381
382
383
programa desenvolvido em linguagem de máquina, apresentando, para isso, o 
conceito de ciclo de máquina. 

384
385
// TODO ponte para o próximo capítulo.

386
387
388
389
=== Atividades

1. Qual o papel de cada unidade dentro da UCP?

390
2. Qual a função dos registradores existentes na UCP?
391
392
393
394
395
396
397
398

3. Qual a importância dos Barramentos na Arquitetura de um computador?

4. Como a unidade de controle gerencia o ciclo de máquina de um computador?

5. Descreva o caminho percorrido entre os componentes de um computador para que 
uma soma de dois operandos tenha seu resultado apresentando em um monitor de 
vídeo. 
399
400
401

// Sempre manter uma linha em branco no final