Aula 3: Unidades de Informação / Memória

Translated by Luís Pereira


Como descrito na aula anterior, a memória é uma parte essencial do computador. Guarda
Nota: A ideia de separar o programa dos dados com que está a trabalhar e o hardware do software (ou "a máquina" e o "programa") vem de Von Neumann. Ele desenhou o primeiro computador electrónico   capaz de correr um programa flexivel (1940-1952). Todos os computadores modernos são computadores Von Neumann.
O http://www.wikipedia.org tem mais informações sobre Von Neumann.

Antes de escrever programas, é útil ver mais de perto a memória.

A memória está cheia de informação. Esta informação pode ser código de programação ou dados.


BIT

A menor quantidade de informação é um bit. Um bit pode conter a informação do tipo "TRUE ou FALSE". Por exemplo, pode conter a informação
  "O aluno pagou as propinas, sim ou não?",
  "O aluno pode fazer a frequência, sim ou não?",
  "x é maior que y, sim ou não?".
Temos que nos lembrar que, ao nível da electrónica, o computador está calculando com estes bits de informação. Na aula anterior vimos como os componentes electrónicos digitais ("AND gates", etc) geriam estes bits de informação. Para estes componentes electrónicos, existem dois niveis: 0V e +5V (ou qualquer par de níveis de voltage). Na nossa linguagem, podemos chamar 'TRUE' e 'FALSE', ou '1'  e '0', ou 'green' e 'red', ou qualquer par de nomes simbólicos que queiramos atribuir. Porque um bit de informação só pode ter dois valores, podemos chama-lhe unidade binária (binary unit). Como todas as unidades de informação derivam do bit, chama-mos ao computador calculadora binária. Embora se possam construir computadores baseados noutras unidades de informação (como por exemplo ternary or quaternary), todos os computadores modernos são do tipo calculadoras binárias.
 
Níveis electrónicosde AND gates 0 V +5 V
binary 0 1
logical FALSE TRUE
bicolor verde vermelho

Estes principios podem ser misturados á nossa vontade. Por exemplo, PASCAL usa o principio 'TRUE' e 'FALSE' para calculos lógicos, enquanto o C usa '1' e '0'.


NIBBLE

A seguinte unidade de informação é o nibble. Trata-se de um conjunto de 4 bits. Nestes 4 bits podemos por exemplo guardar informação do tipo 0..9. Nibbles são usados em muitos mostradores digitais, como por exemplo relógios de alarme, em que cada digito é um nibble. Podemos chamar a este código binary-coded-decimal (BCD):
 binary 
 BCD 
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
 binary 
BCD
1000
8
1001
9
1010
 not used 
1011
 not used 
1100
 not used 
1101
 not used 
1110
 not used 
1111
 not used 

                 examplo dum display de LED

Pela tabela podemos ver que para o código binário
       abcd
o código decimal é
      a*8  +  b*4  +  c*2  +  d
ou, mais genericamente:
     a*23  + b*22  +  c*2  +  d
Esta, iremos ver, é sempre a relação entre binários e decimais.

Note também que algumas das combinações possiveis de bits não são usadas em BCD. Uma forma de representar estes quatro bits de informação com todas as combinações possiveis é o sistema hexadecimal. A combinação de bit de '1010' até '1111' são representadas pelas letras de A a F. Na representação hexadecinal temos a seguinte tabela de traduçã

 binary 
hexa-
 decimal 
0000
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
 binary 
hexa-
 decimal 
1000
8
1001
9
1010
A
1011
B
1100
C
1101
D
1110
E
1111
F
Como vemos todos os 16 binários têm um correspondente no sistema hexadecimal. O sistema hexadecimal é frequentemente usado na tecnologia dos computadores. Como exemplo: 21F no sistema hexadecimal é igual a 2*162 + 1*161 + 15*160 = 2*256 + 1*16 + 15*1 = 543.

BYTE

A seguinte unidade de informação é o byte. Byte é a combinação de dois nibbles e portanto de 8 bits. Nestes podemos guardar numeros de 0..255 porque
 
00000000 = 0*27 + 0*26 + 0*25 + 0*24 + 0*23 + 0*22 + 0*21 + 0*20 = 0 

11111111 = 1*27 + 1*26 + 1*25 + 1*24 + 1*23 + 1*22 + 1*21 + 1*20
                 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 =
                 = 255 

another example:
11011001 = 1*27 + 1*26 + 0*25 + 1*24 + 1*23 + 0*22 + 0*21 + 1*20
                 = 128 + 64 + 0 + 16 + 8 + 0 + 0 + 1 =
                 = 217

De outra forma, um byte pode representar todas as letras do alfabeto, em maiusculas ('A' .. 'Z') e minusculas('a' .. 'z'), mais todos os digitos '0' .. '9', alguns caractere especiais com '{',  '}',  '(', ')', space, etc, e outras coisas como códigos de controle. A mais usual de o fazer é através do ASCII (American Standard Code of Information Interchange) no qual por exemplo, 'A' é 65 (decimal), ou 01000001 (binário), ou 41 (hexadecimal). Outros exemplos são:
 

binary
 decimal 
 hexadecimal 
 ASCII 
 01000001 
65
41
'A'
 01000010 
66
42
'B'
 01100001 
97
61
'a'
 00010000 
32
20
' '


Memory

Em muitos computadores, o byte é a unidade mais pequena que pode ser 'endereçada'. Para percebermos esta ideia, vejamos como a memória está organizada. Imaginem a memória como uma rua (muito grande) com casas. Cada casa tem um endereço. Se quisermos colocar algo na casa, ou tirar, temos que indicar o endereço da casa. No computador, a memória toma o lugar da rua e o byte toma o lugar da casa. Em cada 'casa', vivem 8 bits, ou um byte.
As we will se later,  some 'people' (units) are very big and occupy two or even more adjacent houses. These 'people' are called 'integers', 'words', 'reals', etc. Still, addresses are in most computers 1 byte and thus 8 bits apart. (Note [not needed to study]: especially in supercomputers the distance between two addresses can be much longer than a byte, for example 63 bits instead of 8. We call this distance the 'word length' of a computer.)

Notem que as três unidades descritas até agora são também unidades de comida em Inglês. Bit, Nibble, Byte. As seguintes já não seguem este principio.


Tamanho de Memória dos Computadores

Muitas vezes podemos ler em publicidade: 
        Computador, com processador 1.7 GHz , 256 MB RAM, 40 GB
   harddisk, disquete 1.4 MB

1.7 GHz specifica a velocidade do processador (CPU - central processing unit). 1.7 GHz significa que pode fazer 1.7 milhões de instruções simples por segundo.
(Como a maioria dos comandos dados ao processador precisam de mais do que uma instrução, o numero efectivo de comandos por segundo é inferior. Por exemplo a adição de dois numeros de virgula flutuante pode consistir em 1) carregar o primeiro numero da memória, 2) carregar o segundo da memória, 3) adicionar o numero (possivelmente em vários passos), 4) guardar o resultado em memória. No entanto, a velocidade global do computador é determinada pela velocidade do processador e a velocidade com que ele pode carregar os dados da memória.)

Os outros numeros determinam o tamanho da memória do computador (RAM = Random-access memory), o disco e a disquete respectivamente, em numero de (B). Para dar uma ideia do que estes numeros representam, analisemos calmamente:

BYTE: A unidade básica para descrever a memória é um byte (B). Como foi dito antes, um byte é suficiente para conter uma letra, ou um numero de 0 .. 255.

KILOBYTE: 1024 bytes são um kilobyte (kB). Em ciência, 'kilo' quer dizer 1000, um numero redondo no sistema decimal. Para os computadores 'kilo' representa um pouco mais, 1024. Por ser baseado em 210 que corresponde a 1024 ou em binário 10000000000. Para dar uma ideia de quanto é um megabyte: uma página de texto A4 tem aproximadamente 4 kB.
 
MEGABYTE: 1024 kilobytes são um megabyte (MB). É igual a 1024 x 1024 bytes, ou 1048476 bytes. Para dar uma ideia da dimensão de um megabyte: 250 páginas de texto, ou digamos um livro. A maioria das disquetes têm 1.4 MB seria suficiente para guardar um livro com 350 páginas. (só texto sem imagens etc.)

 
GIGABYTE: 1024 megabytes são um gigabyte (GB). Seria suficiente para guardar uma boa biblioteca com milhares de livros A maioria dos CD têm 650 MB (0.65 GB), suficiente para guardar uma pequena biblioteca

 
Os discos modernos têm por volta dos 40 GB. Podem armazenar uma grande biblioteca, cerca de 40.000 livros.

TERABYTE: 1024 gigabytes são um terabyte. Embora discos deste tamanho não existam ainda, algumas empresas têm sistemas de computadores com muitos discos cujo total de espaçõ em disco é da ordem dos terabytes. Seria suficiente para guardar todos os livros do mundo.
 
Para dar uma ideia do espaço em disco existente no mundo imaginem: existem 500 milhões de utilizadores. Em média cada disco tem 10 GB. Faz um total aproximado de 5.000.000.000.000.000.000 bytes. Uma  pessoa levaria mais de um bilião de anos para ler 10 livros por dia para ler toda essa  informação!


Mini teste:

Para testar os conhecimentos adquiridos nesta aula click aqui para fazer um teste online. Atenção que esta não será a forma do teste final!


Peter Stallinga, Universidade do Algarve, 13 fevereiro 2002