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

3
:cap: cap4
4
5
6
7
8

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

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

13
- Descrever a arquitetura geral de um computador
14

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

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

22
Um sistema de computador é integrado pelo seu ((hardware)) e seu ((software)). 
23
O hardware é o equipamento propriamente dito, e seus elementos básicos são: 
24
25
26
27
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 
28
necessidades dos usuários. Ele abriga programas fornecidos pelos 
29
30
fabricantes do computador e programas desenvolvidos pelo usuário.

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

35
=== Arquitetura de um Computador
36

37
38
(((Arquitetura)))

39
40
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 
41
Central de Processamento UCP (CPU – 'Central Processing Unit'), ou processador.
42
43
44
45
46
47
48

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 
49
E/S. Em computadores comuns, estes controladores correspondem a placas de 
50
circuito encaixadas na placa principal do computador (placa mãe). Está 
51
ilustrada na <<fig_arquitetura_geral>>, a arquitetura básica de um computador, demonstrando a 
52
53
organização de seus componentes básicos.

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

58

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

Eduardo de Santana Medeiros Alexandre's avatar
notas    
Eduardo de Santana Medeiros Alexandre committed
61
[[sec_memoria]]
62
==== Memória Principal
63

64
65
(((Memória Principal)))

66
A memória do computador consiste numa coleção de ((registradores)) 
67
68
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 
69
70
71
palavra de 32 bits sendo a mais comum hoje em dia, e a palavra de 64 bits 
aumentando de popularidade.

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

76
77
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 
78
pode acessar qualquer palavra de memória em qualquer lugar no intervalo de 0 a 
79
2^32^-1.
80
81

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

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

89
90
91
92
93
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.
94
Disponível para o usuário:: Corresponde ao restante do espaço, é onde os programas do usuário serão carregados. 
95

96
===== Endereços vs Dados
97

98
99
É 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 
100
101
102
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 
103
104
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 
105
106
alguma atividade no computador, ou a representação de alguma informação.

Eduardo de Santana Medeiros Alexandre's avatar
notas    
Eduardo de Santana Medeiros Alexandre committed
107
[[sec_cpu]]
108
==== Unidade Central de Processamento (UCP)
109

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

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

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

125
126
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 
127
128
o resultado das operações.

129
_Os dados a serem manipulados pela ULA tem origem na memória principal_, sendo 
130
131
de responsabilidade da unidade de controle transferir estes dados aos 
registradores, informar à ULA sobre quais registradores estão os dados de 
132
133
134
135
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á 
136
através do *((barramento))* que é responsável por transmitir padrões de bits 
137
138
139
140
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 
141
intermediam a comunicação da memória principal e a ULA. 
142

143
.Passos para a operação de soma
144
145
. 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 
146
outro registrador;
147
. Acionar o circuito de adição tendo os registradores do passo 1 e 2 
148
como entrada, e escolher outro registrador para armazenar o resultado;
149
150
. Armazenar o resultado na memória principal;
. Finalizar operação.
151

Eduardo de Santana Medeiros Alexandre's avatar
notas    
Eduardo de Santana Medeiros Alexandre committed
152
[[sec_io]]
153
==== Unidades de Entrada/Saída
154

155
(((Unidade de Entrada))) (((Unidade de Saída))) (((Entrada/Saída)))
156

157
158
159
160
161
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.

162
163
===== Tipos de dispositivos de Entrada/Saída

164
Os dispositivos de entrada/saída são classificados da seguinte forma:
165

166
Dispositivos de entrada::
167
São os dispositivos que possuem a função básica de enviar dados.
168
169
Os dispositivos de entrada mais conhecidos são teclado, mouse, 'scanner' e microfone.

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

174
175
176
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'.
177
178
179
180
181
182
183


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 
184
necessidade de se trabalhar com a memória volátil (memória principal), mais rápida, porém mais cara.
185

186
===== Funcionamento dos dispositivos de Entrada e Saída
187
188
189
190
191
192
193
194
195

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.

196

197
==== O Modelo de Barramento
198

199
200
(((Barramento)))

201
202
203
204
205
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.

206
[[fig_modelo_barramento]]
207
.Modelo de Barramento do Computador
208
image::images/organizacao-computador/barramentos.png[]
209
 
210
Os componentes são interconectados ao barramento da forma ilustrada na 
211
<<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.
212

213
Durante a execução de um programa, cada instrução é levada até à 
214
215
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 
216
saída do programa é colocada em um dispositivo, tal como display de vídeo ou 
217
218
219
disco. A comunicação entre os três componentes (UCP, memória e E/S) é 
feita sempre pelos barramentos.

220
=== Programando um computador
221
222
223
224

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 
225
226
realizavam algumas atividades específicas, e sempre que o usuário quisesse 
utilizar outras operações, era necessário reprogramar fisicamente a fiação 
227
do circuito para que a nova operação pudesse ser executada. 
228
229
O leitor deve perceber que esta estratégia tornaria qualquer 
programação inviável para leigos da área de circuitos eletrônicos.
230

231
Esta seção apresenta o funcionamento atual da UCP para executar os programas do 
232
233
sistema e de usuários.

234
==== Linguagem de Máquina
235

236
237
(((Linguagem de Máquina)))

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

242
[NOTE]
243
Algo que pode surpreender o leitor é a pequena quantidade de instruções necessária 
244
para a UCP decodificar, sendo através da combinação destas poucas 
245
246
247
248
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 
249
desnecessária, pois uma combinação das instruções básicas tem o mesmo 
250
251
efeito lógico da instrução específica.

252
253
===== Arquiteturas RISC e CISC

254
A decisão entre instruções específicas ou instruções de uso geral 
255
256
257
258
259
260
261
262
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.
263
264
265
266

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.

267
268
269
270
271
272
273
274
275
276
277
278
===== 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 
279
280
`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.
281

282
283
284

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

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

288
image::images/organizacao-computador/codigo_comando.png[scaledwidth="70%"]
289
290


291
Podemos observar no exemplo a seguir, a codificação da operação `STORE` e 
292
293
seus operandos:

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


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

306
____
307
_Armazene o padrão de bits contido no registrador `C` para a célula de memória de endereço `F3`._
308
____
309

310
==== Executando  Programas em Linguagem de Máquina
311

312
Um programa é uma sequência de instruções em uma linguagem a ser 
313
314
315
316
317
318
319
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á 
320
ilustrado na <<ciclo_de_maquina>>.
321

322
[[ciclo_de_maquina]]
323
324
.As três fases do ciclo de máquina
image::images/organizacao-computador/ciclo_de_maquina.png[scaledwidth="70%"]
325
326
327


Para o controle deste ciclo a unidade de controle possui dois registradores de 
328
propósito específico: o *((contador de instruções))* e o *((registrador de instruções))*. 
329
No contador de instruções é armazenado o endereço de memória 
330
331
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 
332
instruções guarda a instrução de máquina que está em execução.
333

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

338
Busca:: a unidade de controle pede para a memória principal transferir a 
339
340
341
342
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;
343
344

Decodificação:: a unidade de controle separa os campos da instrução 
345
346
contida no registrador de instruções de acordo com o tipo de operação, 
identificando os operandos da instrução;
347
348

Execução:: os circuitos específicos da ULA são ativados, os dados de 
349
350
351
352
353
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. 

354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374

[[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[]


375
=== Recapitulando
376
377
378
379
380
381
382
383

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.

384
Por fim, demos uma introdução sobre como o computador consegue executar um 
385
386
387
programa desenvolvido em linguagem de máquina, apresentando, para isso, o 
conceito de ciclo de máquina. 

388
389
// TODO ponte para o próximo capítulo.

390
391
392
393
=== Atividades

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

394
2. Qual a função dos registradores existentes na UCP?
395
396
397
398
399
400
401
402

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. 
403
404
405

// Sempre manter uma linha em branco no final