Buscar

1ª Aula Curso de Ciências da Computação Projeto Logico de Computadores

Prévia do material em texto

Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 1 de 5 
 
1. NÍVEL CONVENCIONAL DE MÁQUINA 
 Relembrando a nossa matéria de Arquitetura de Computadores, a arquitetura de 
Computadores se divide em vários níveis como já estudamos anteriormente. Ou seja: o Nível 0 
(Nível de Lógica Digital) e o Nível 1 de Microprogramação (Linguagem de Baixo nível). Chegou a 
hora de tocarmos no nível Convencional de Máquina (ou seja, Nível de Arquitetura de Conjunto de 
Instruções). 
. 
1.1. VISÃO GERAL DO NÍVEL 
A tecnologia de computadores fez um progresso incrível nos aproximadamente 65 anos 
desde que foi criado o primeiro computador eletrônico de uso geral. Hoje, menos de 1000 dólares 
compram um computador pessoal com maior desempenho, mais memória principal e mais espaço 
de armazenamento em disco que um computador comprado em 1980 por um milhão de dólares. 
Essa rápida taxa de aperfeiçoamento vem de avanços na tecnologia usada para construir 
computadores e da inovação no projeto de computadores. 
Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 2 de 5 
 
Embora os aperfeiçoamentos tecnológicos tenham sido bastante regulares, o progresso que 
surge de melhores arquiteturas de computadores e muito menos consistente. 
O crescimento no desempenho de microprocessadores desde meados da década de 1980 
tem sido substancialmente maior que nos anos anteriores, como mostra o gráfico de desempenho 
SPECint. Gráfico. 1.1 
 
Esse gráfico representa o desempenho relativo medido pelos benchmarks SPECint, com a 
base unitária correspondendo a um VAX11/780 (de 1984). O desempenho de máquinas mais 
novas é estimado por um fator de escala que relaciona o desempenho para duas versões 
diferentes de SPEC (por exemplo, SPEC92 e SPEC95). Antes da metade da década de 1980, o 
crescimento no desempenho de microprocessadores era orientado em grande parte pela 
tecnologia e aumentava em media cerca de 35% ao ano. 
1.1.5. A evolução da tarefa do projetista de computadores 
Na década de 1960, a forma dominante de computação se Iimitava a grandes mainframes - 
máquinas que custavam milhões de dólares e eram armazenadas em salas de computação com 
vários operadores supervisionando seu suporte. 
As aplicações típicas incluíam o processamento de dados comerciais e a computação 
científica em grande escala. Os anos 70 presenciaram o nascimento do minicomputador, uma 
máquina de dimensões menores, dedicada inicialmente a aplicações em laboratórios científicos, 
mas que logo ampliou seus limites, à medida que a tecnologia do compartilhamento de tempo - 
diversos usuários compartilhando um computador interativamente pela utilização de terminais 
independentes - se disseminou. Na década de 1980, surgiu o computador de mesa (desk Top) 
baseado em microprocessadores, na forma de computadores pessoais e de estações de trabalho. 
Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 3 de 5 
 
O computador de mesa de um único usuário substituiu o compartilhamento de tempo e levou 
ao surgimento de servidores - computadores que forneciam serviços em maior escala, tais como 
armazenamento e acesso confiável a arquivos em longo prazo, maior quantidade de memória e 
maior capacidade de computação. Na década de 1990, surgiram: a Internet e a WWW (World 
Wide Web), os primeiros dispositivos bem-sucedidos como computadores de mão (assistentes 
digitais pessoais ou PDAs) e também os aparelhos eletrônicos digitais de alto desempenho, desde 
videogames até os telefones celulares. 
Os projetistas de Computadores fizeram história liderando esta evolução, mas a arquitetura 
dentro desta evolução continua basicamente a mesma. 
1. O projetista utiliza uma solução combinada de hardware/software que inclui algum 
hardware personalizado e um núcleo de processador embutido que é integrado ao 
hardware personalizado, frequentemente no mesmo chip. 
2. O projetista usa software personalizado funcionando em um processador 
embutido comercial. 
3. O projetista utiliza um processador de sinais digitais e software personalizado para 
o processador. Os processadores de sinais digitais (DSPs - digital signal 
processors) são processadores especialmente adaptados para aplicação de 
processamento de sinais. 
Em suma: 
Um sistema de computação, nada mais é do que um conjunto de componentes 
integrados para funcionar com se fossem um único elemento e que têm por objetivo 
realizar manipulações com dados, isto é, realizar alguns tipos de operações com os dados 
de modo a obter uma informação útil. 
O NÍVEL CONVENCIONAL DE MÁQUINA que estudamos aqui age sobre a interpretação 
dos microprogramas e prepara o sistema de computação para receber o Sistema Operacional. 
Para tal é necessário que a manipulação de dados seja organizada em tipos de dados. 
1.2. TIPOS DE DADOS 
Já sabemos que um computador funciona através da execução sistemática de 
instruções que o orientam a realizar algum tipo de operação sobre valores (numéricos, 
alfabéticos, ou lógicos). Estes valores são genericamente conhecidos como dados. 
Quer desejemos calcular uma expressão matemática complexa, quer o objetivo seja 
colocar uma relação de nomes em ordem alfabética, como também a tarefa de acessar a 
Internet e até a manipulação do mouse, tarefas que requerem ou não a execução de operações 
matemáticas, todas elas necessitam do emprego de instruções que ativem operações com 
os dados. Estes dados podem ser: 
Valores numéricos (no cálculo de expressões matemáticas), 
Valores alfabéticos (caracteres), ou ainda; 
Valores apenas binários (lógicos). 
Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 4 de 5 
 
De qualquer modo, tanto as instruções quanto os dados estão sempre armazenados 
internamente sob a forma de uma sequência de 0s e 1s, os algarismos binários, que 
constituem a linguagem da máquina. 
Quando digitamos os valores dos dados, estes são convertidos internamente em um código 
de armazenamento como se fossem caracteres alfabéticos (nesse instante, eles são tratados 
como um texto), isto é, quando introduzimos, por exemplo, um dado cujo valor decimal e 143. Este 
número e digitado algarismo por algarismo, e claro, primeiro o algarismo 1, depois o algarismo 4 
e, em seguida, o algarismo 3. Logo, o sistema de computação segue o mesmo processo, 
recebendo estes algarismos não como o número 143, mas sim um texto com caracteres 
codificados segundo o código de armazenamento interno utilizado (na maioria dos casos e o 
código ASCII). 
Seriam, portanto, introduzidos (digitados) os seguintes valores binários: 
00110001 (algarismo 1 em ASCII); 
00110100 (algarismo 4 em ASCII); 
00110011 (algarismo 3 em ASCII). 
Qualquer que tenha sido a linguagem de programação utilizada para escrever o programa, 
este devera ser convertido para um outro programa equivalente, porém em linguagem de 
máquina, denominado código-objeto e, em seguida, completado através do processo de ligação, 
tornando-se um código executável pelo processador (os processos de compilação, que geram 
código-objeto e código de ligação, que dão origem a códigos executáveis). A referida conversão 
(compilação) também inclui os dados, que deverão ser alterados de modo a estarem em uma 
forma apropriada para utilização pela unidade aritmética e lógica (UAL). Em outras palavras, se o 
programa que vamos executar contiver um comando do tipo: 
X:= A + B; 
antes da sua execução teremos que, dealguma forma, introduzir um valor numérico 
correspondente a "A" e um outro valor para "B", de modo que esses valores sejam lidos pela UCP 
e somados na UAL. Para efetivar a soma, a UAL executa, passo a passo, uma série de micro-
operações (um algoritmo), como, por exemplo, verificar o sinal dos números, efetuando uma ou 
outra ação diferente. 
No entanto, dependendo da forma com que o dado foi definido no programa pelo 
programador (ao escrever o programa em uma linguagem de alto nível), o referido algoritmo 
poderá ser diferente (em cada passo serão realizadas micro-operações diferentes, de acordo 
com o algoritmo realizado), embora o resultado final seja o mesmo. Ou seja, se o programador 
definiu o dado como um valor inteiro, ele será representado de uma forma diferente, por exemplo, 
da forma que ele seria internamente representado se o programador tivesse definido o mesmo 
dado como sendo um valor fracionário. A operação aritmética, embora sendo a mesma (uma 
soma, por exemplo), teria sua efetivação estabelecida por algoritmos diferentes, um para o caso 
de soma com números representados sob a forma de inteiros e outro para o caso de uma soma 
com números representados sob a forma de fracionários. Por exemplo: 
Se A = +5 e B = -3, então, após a execução do comando, teremos: X = +2. 
Curso de Ciências da Computação 
Disciplina: Projeto Lógico de Computadores (5º/6º Sem - 2016). Livro: Andrew S. Tanenbaum Página 5 de 5 
 
Se, por exemplo, A e B forem representados internamente de uma forma binária simples e 
direta, com 16 bits, teríamos para cada um: 
A = +5 = 0000000000000101 
B = -3 = 1000000000000011 
Nesse caso, o algoritmo que a UAL deve executar certamente será diferente, embora, 
no final, os resultados sejam idênticos. 
Esta diferença de formas de representação e respectivos algoritmos de realização das 
operações matemáticas é bastante útil, pois cada uma tem uma aplicação onde é mais vantajosa 
que a outra. Cabe ao programador à escolha da forma a ser utilizada pelo sistema, podendo 
ser explicita, quando ele define as variáveis e constantes em seu programa, ou implícita, ao deixar 
que o compilador faça sua própria escolha. A seguir são apresentados alguns exemplos de 
definição de variáveis em determinadas linguagens, indicando-se, em cada caso, o tipo de dados 
correspondente, estabelecido internamente no sistema. 
 Exemplo 1.1 Definição de variáveis em Pascal 
 
 Exemplo 1.2 Definição de variáveis em C 
 
 Exemplo 1.3 Definição de variáveis em Visual Basic 
 
 Exemplo 1.4 Definição de variáveis em Delphi

Continue navegando