Conceitos básicos sobre organização de computadores 2 1 - Processamento de dados O que é processamento? O que é dado? Dado é informação? Processamento é a manipulação das informações coletadas (dados). Dado é a "matéria-prima" originalmente obtida (etapa de coleta). Informação é o resultado do processamento (é o dado processado ou "acabado".
A informação subentende dados organizados (segundo uma orientação específica) para o atendimento ou emprego de uma pessoa ou grupo que os recebe. A tomada de decisão é importante em várias áreas e em diferentes níveis hierárquicos de uma organização, assim, a informação para uma determinada pessoa ou grupo pode ser considerada um dado para outra. Processamento de dados (data processing): é uma série de atividades ordenadamente realizadas, com o objetivo de produzir uma determinada informação. 3
Qualquer processamento de dados requer a execução de uma série de etapas, as quais podem ser realizadas de forma manual ou automática por um computado. 4 Essas etapas, elaboradas e executadas passo a passo, constituem o que se chama programa. Cada um dos passos mencionados é uma diferente instrução, ou ordem de comando, dada ao hardware, objetivando a realização de uma determinada ação (uma operação aritmética, uma transferência de informação, etc). O programa é o conjunto de instruções.
Um computador é capaz de reconhecer e executar diretamente apenas um conjunto limitado e simples de instruções de máquina. 5 Todo programa (escrito em Pascal, C, Delphi, Java, etc.) deve ser convertido para essas instruções antes de ser executado. Essas instruções são normalmente do tipo: Executar operações aritméticas sobre dois números; Executar operações lógicas de bits; Desviar a sequência de um programa; Fazer a comunicação com algum dispositivo de entrada ou saída de dados.
O computador precisa de "ordens" específicas (suas instruções) para executar as atividades. 6 As linguagens de programação são utilizadas para "possibilitar nossa comunicação com os computadores". 2 - Hardware e Software O hardware é a parte física do computador (hard significa duro, rígido). Hardware é o conjunto de componentes eletrônicos, circuitos integrados e placas, que se comunicam através de barramentos.
7
O software é a parte lógica. É o conjunto de instruções e dados processado pelos circuitos eletrônicos do hardware. 8 Toda interacção dos usuários de computadores é realizada através do software, que é a camada, colocada sobre o hardware, e que transforma o computador em algo útil.. O temo soft "macio" é o antônimo de hard. Assim, o hardware é difícil de manipular, de alterar, enquanto o software não. O Sistema Operacional é o software mais importante, pois é o nosso contato pessoal ao computador, assim conseguimos salvar arquivos e programas sem nenhum problema.
O barramento é um caminho para a troca de dados entre dois ou mais circuitos. São as linhas de comunicação. 9 O desempenho do barramento é medido pela sua largura de banda (quantidade de bits que podem ser transmitidos ao mesmo tempo), geralmente potências de 2: 8 bits, 16 bits, 32 bits, 64 bits, etc. Também pela velocidade da transmissão medida em bps (bits por segundo): 10 bps, 160 Kbps, 100 Mbps, 1 Gbps etc.
Os barramentos podem ser divididos em três grupos (barramento que conecta o processador à memória RAM): Barramento de dados: É por onde os dados circulam. Barramento de endereços: É por onde a informação de endereço é fornecida. Barramento de controle: Informações adicionais como, por exemplo, se a operação é de leitura ou escrita. 10
3 - Algoritmo e linguagem de programação 11 Qualquer processamento de dados requer a execução de uma série de etapas. Essas etapas, elaboradas e executadas passo a passo, constituem um programa. Exemplo: se deseja somar 100 números e imprimir o resultado. (Isso pode ser feito de forma manual ou automática). Algoritmo para soma de 100 números
Um computador requer instruções precisas e completas sobre cada passo que deva executar. 12 Algoritmo é o conjunto de etapas finitas, ordenadamente definidas, com o propósito de obter solução para um determinado problema. O termo "finitas" significa a necessidade de um requisito qualquer que estabeleça o final da execução do algoritmo. No exemplo, na etapa 5, a execução das etapas de 2 a 4 se repete enquanto N<100 (esta é a cláusula de parada).
13 Execução do programa gerado pelo algoritmo anterior As etapas de um algoritmo são as instruções que deverão ser executadas por uma máquina. (Um programa é o conjunto de instruções). Um computador precisa entender cada instrução, de modo a executar corretamente a operação que se pretende. Nós entendemos o português. Mas os computadores, eles têm sua própria linguagem?
As linguagens usadas por nós são constituídas por símbolos (alfabeto, sinais de pontuação, caracteres, etc). 14 O computador é uma máquina constituída de componentes eletrônicos (que são percorridos por corrente elétrica). Sistema binário: o computador "entende" apenas dígitos (0 e 1). A máquina realiza operações matemáticas através das regras do sistema binário. Assim, os caracteres inteligíveis não são A, B, +, =, 0, 3, etc., mas apenas zero (0) e um (1). Todo dado coletado pelos computadores, as instruções por ele executadas os resultados de um processamento, são sempre constituídos de conjuntos ordenados de zeros e uns.
Essa linguagem, chamada de "linguagem de máquina" (ou de baixo nível), que se comunica diretamente com o hardware, é tediosa de manipular, difícil de compreender e fácil de acarretar erros. 15 Por essa razão, foram desenvolvidas outras linguagens, mais próximas do nosso entendimento, genericamente chamadas de linguagens de programação. Todas essas linguagens possuem sintaxe (um conjunto de regras que define a forma da linguagem, estabelecendo como são compostas as suas estruturas básicas).
Atualmente, há dezenas dessas linguagens: Assembly, Cobol, Fortran, Visual Basic, Lisp, C, Visual C, C++, Visual C++, C#, Visual C#, Object Pascal, ASP.NET, Delphi, Ada, Java,... Linguagem de alto nível: O nome alto nível decorre do fato de essas linguagens serem mais distantes da forma de entendimento do processador (0s e 1s). São mais próximas do entendimento do programador, tendo características semelhantes às nossas linguagens de comunicação. Ou seja, uma linguagem de "alto nível" ou "orientada a aplicação" é aquela visualizada e entendida pelo usuário final. É a linguagem que está por trás dos softwares. 16
Essas linguagens foram desenvolvidas utilizando-se palavras da língua inglesa e sinais de operações matemáticas (+, -, /, *). 17 Elas geram códigos de "baixo nível" para que o hardware entenda e execute o comando desejado. Algumas vantagens das linguagens de alto nível: Sendo semelhantes as linguagens humanas, elas podem ser definidas para atender a requisitos e intenções específicas. A linguagem Cobol foi definida para emprego em programas comerciais. Fortran é mais bem utilizada em programação científica. Existem linguagens desenvolvidas com sistemas gráficos (Delphi, Visual C, etc.).
18
4 - Funcionamento básico dos sistemas de computação 19 Os computadores executam quatro funções distintas: Entrada; Processamento; Armazenamento/recuperação de dados; Saída. Componentes básicos de um computador
Para que um computador trabalhe é necessária à inserção de informações (entrada). 20 Seguindo as instruções fornecidas pelos programas, o computador processa os dados oriundos da entrada (processamento) armazenando-os para posterior utilização. As informações produzidas ficam disponíveis para utilização (saída) ou elas devem ser armazenadas em um dispositivo de armazenamento estável. O esquema anterior é seguido por praticamente todos os computadores.
Os dados são produzidos através de instruções durante a etapa de processamento, realizada pela CPU (Unidade Central de Processamento - processador) Cada processador tem um conjunto único de instruções para processar os dados, definidas pelo seu porjetista. A operação especifica a função a ser desempenhada, por exemplo, soma, armazene, entre outras. Os operandos fornecem os dados a serem utilizados na operação ou ainda a forma de alcançar a posição destes dados na memória. 21 Forma das instruções comumente utilizada pelos processadores
O processador realiza duas funções primordiais: Interpretar as ações que devem ser realizadas por conta de uma determinada instrução de máquina. Executar as operações interpretadas. 22 Ciclo básico de instrução
Quando um novo processador é criado, aumenta-se o seu conjunto de instruções, para que o mesmo se torne mais poderoso. (até o momento é assim que um microprocessador evolui). Uma nova instrução substitui um grupo inteiro de instruções que antes eram necessárias para a execução de uma determinada tarefa. Para o programador, escrever programas fica mais fácil não há a necessidade de escrever um pequeno programa (sub-rotina) para executar o que uma nova instrução faz sozinha. O pequeno programa continua sendo necessário. Porém, estará escrito dentro do microprocessador. 23
Quanto maior o conjunto de instruções, mais lento ficará o microprocessador: a procura por uma determinada instrução e a sua execução dentro do micro-código demorará mais tempo para finalizar (há mais dados a serem pesquisados). 24 Quanto mais avançado é o processador, maior é o tempo gasto na decodificação de uma instrução. Isso parece um paradoxo, pois sabemos que, quanto mais avançado o microprocessador, mais rápido ele é. Para compensar essa demora, passou-se a utilizar diversos novos recursos para aumento de desempenho.
No entanto isso estava se tornando um grande problema: com um aumento do conjunto de instruções e do microcódigo, o microprocessador fica fisicamente maior e mais lento e novos recursos de aumento de desempenho tinham que ser criados para ultrapassar essa lentidão. 25 Todos os microprocessadores recebem a classificação CISC (Complex Instruction Set Computing, Computação utilizando um Conjunto Complexo de Instruções). Apesar de existir um conjunto de instruções grande, apenas 20% delas são realmente usadas por programas e sistemas operacionais (20% das instruções fazem 80% do trabalho).
O restante das instruções é usado esporadicamente (em 80% do tempo estamos usando somente 20% do conjunto de instruções). 26 Surgiu uma nova idéia: a construção de processadores com um conjunto reduzido de instruções. Processadores construídos com essa idéia (poucas instruções e sem micro-código) são classificados como RISC (Reduced Instruction Set Computing, Computação utilizando um Conjunto Reduzido de Instruções).
A programação de um processador RISC tende é mais complexa, por conter muito menos instruções em comparação a um processador CISC equivalente (história do PS3). 27
Num processador CISC, um comando de alto nível é convertido pelo compilador em poucas instruções, em um processador RISC esse comando é convertido em várias instruções. 28 Duas conclusões: O código de programas RISC é maior, necessitando, portanto, de mais memória RAM. Os processadores RISC são mais rápidos do que os processadores CISC. A tendência atual é a construção de processadores RISC. Estes são incompatíveis com os CISC, necessitando de programas e sistemas operacionais especiais.
A utilização de processadores RISC na família PC significaria a morte para os sistemas operacionais mais usados, como o Windows. Não valeria à pena... Graças à portabilidade das novas gerações do Windows, Linux e Mac OS, estes sistemas operacionais estão disponíveis para processadores RISC. As novas gerações de processadores Intel/AMD utilizam uma arquitetura híbrida CISC/ RISC. O Bit, caractere, byte e a palavra 29
A menor unidade de informação disponível na linguagem humana é o caractere (letras, números, sinais de pontuação e de operações matemáticas). A menor unidade de informação armazenável em um computador é o algarismo binário ou digito binário, conhecido como bit (binary digit). O bit pode ter somente dois valores: 0 ou 1. 30
Um caractere isolado praticamente nada significa para nosso sentido de comunicação. Da mesma forma, um bit isolado pouco pode representar. O menor grupo ordenado de bits que pode representar uma informação em computadores é o caractere da linguagem humana. Qualquer caractere a ser armazenado em um sistema de computação é convertido em um conjunto de bits previamente definido para o referido sistema. Antigamente cada sistema definia como cada conjunto de bits irá representar um caractere (quantos bits e como organizam). 31
A IBM definiu um grupo ordenado de 8bits, como unidade de armazenamento e transferência. Trata-se do byte. 32 Como os computadores são maquinas binárias, todas as indicações numéricas referem-se a potências de 2 (e não de 10 como no sistema métrico). Assim: O K representa 1024 unidades (décima potência de 2 10 = 1024); O M representa 1.048.576 unidades (2 10 x 20 10 = 220); O G representa 1024 megas ou 1.048.576 K (2 30 = 1.073.741.824).
Como conseqüência: O valor de 512 Kbytes (pronuncia-se "quinhentos e do ka bytes") corresponde a um valor de 512 x 1024 = 524 288 bytes. O valor de 2 Gbytes (pronuncia-se "dois giga bytes") corresponde a 2 x 1024 x 1024 x 1024 = 2.147.483.648 bytes. 33 Quanto corresponde 32 M caracteres (trinta e dois mega caracteres)? Corresponde a 32 x 1024 x 1024 = 33.554.432 caracteres. 1 tera representa 2 40 ou 1024 G 1 peta representa 2 50 = 1024 teras
5 - Bases de numeração 34 Notação posicional: os algarismos componentes de um número assumem valores diferentes, dependendo de sua posição relativa no número. O valor total do número é a soma dos valores relativos de cada algarismo. Assim, é a posição do algarismo ou dígito que determina o seu valor. Há muito tempo a cultura ocidental adotou um sistema de numeração que possui dez diferentes algarismo - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 - chamado de sistema decimal.
A quantidade de algarismos disponíveis em um dado sistema de numeração é chamada de base. Assim, o sistema decimal tem base 10. Um sistema que possua apenas dois algarismos diferentes (0 e 1) é de base 2. Seja o número 1303, representado na base 10. Outra base de numeração são as potências de base 8 (octal = 0, 1, 2, 3, 4, 5, 6, 7) Seja o número (1011) 2, representá-lo na base 10. Seja o número (1011110) 2, representá-lo na base 10. Seja o número (3125) 8, representá-lo na base 10. 35
Em bases de valor superior a 10, usam-se letras do alfabeto para a representação de algarismos maiores que 9. 36 Uma dessas bases é muito importante em computação - trata-se da base 16 ou hexadecimal. Nela os "algarismos" A, B, C, D, E e F representam, respectivamente, os valores (da base 10): 10, 11, 12, 13, 14 e 15. Seja o número (2A5) 16, representá-lo na base 10. Seja o número (56F39B) 16, representá-lo na base 10. Conversão de números decimais para base B. Seja o número (45) 10, representá-lo na base 2. Seja o número (97) 10, representá-lo na base 2. Seja o número (2757) 10, representá-lo na base 16. Seja o número (490) 10, representá-lo na base 16.
37
Atividade 1 (entregar na aula - 23/10/2013) 38
39
40 Referências: Introdução à organização de computadores - Quinta edição Mario A. Monteiro http://www.calculadoraonline.com.br/conversao-bases Na próxima aula: Conceitos básico de algoritmos e linguagem C.