Pesquisar este blog

quinta-feira, 9 de abril de 2015

Discos Magnéticos ou Disco Rígido

O disco rígido, popularmente conhecido como HD (Hard Disk), é um dispositivo que é usado em computadores capaz de armazenar dados. No HD é armazenado qualquer tipo de informação, podendo ser um simples arquivo de uso pessoal, como também informações usadas pelo sistema operacional.
As informações contidas no HD não são perdidas ao ser desligada a máquina, por ser considerado uma memória não-volátil. No HD está o registro de todos os arquivos possíveis que existam em um computador, como imagens, vídeos, planilhas, programas, etc.

Acredita-se que o primeiro HD tenha surgido no ano de 1956, e tinha capacidade de armazenamento de 5 MB de dados. O IBM 305 RAMAC, como foi chamado este HD, possuía dimensões enormes: 14 X 8 polegadas. Outra característica importante desse HD é o seu preço, custava em média 30 mil dólares. Ao longo dos anos a estrutura desse tipo de equipamento mudou muito, atualmente existem vários modelos, porém, o tamanho acabou diminuindo muito. A capacidade de armazenamento também foi aperfeiçoada ao longo tempo.
Considerando que um HD possui o braço, eixo, disco (também chamado de prato), cabeça de leitura e gravação e ainda o atuador, o seu funcionamento se dá através da movimentação desses itens descritos.
Os pratos de um HD são onde os discos são armazenados, no geral, são de alumínio recoberto por um material magnético e por mais uma camada de material protetor. Assim, quanto mais for trabalhado o material magnético, maior será a sua capacidade de armazenamento do disco.
Esses discos ficam posicionados sob o eixo, que é responsável por fazê-los girar. Nos HDs também possui um dispositivo chamado de cabeça, ou cabeçote, de leitura e gravação. O seu tamanho é bastante pequeno, nele contém uma bobina que usa impulsos magnéticos para que as moléculas possam se movimentar sobre o disco e assim gravar os dados. Nos modelos de HDs mais modernos, a cabeça de gravação conta com dois componentes, um responsável pela gravação e outro direcionado à leitura.
O atuador presente na estrutura do HD é responsável por mover o braço acima da superfície dos pratos e com isso permitir que as cabeças façam o seu trabalho. Para que a movimentação sai de forma correta, o atuador conta em seu interior uma bobina que é "induzida" por imãs.
A parte responsável por todo o armazenamento de dados são os discos magnéticos, na qual são formadas por duas partes, a primeira delas é chamada de substrato. Porém, o HD não armazena os dados em um disco metálico, na qual tem finalidade de proporcionar um instrumento gravável, deste modo estes discos são recobertos por camadas de substâncias magnéticas, dando origem ao nome de "discos magnéticos".
Apesar dos discos magnéticos serem considerados extremamente frágeis, eles são bastante resistentes.  Eles são montados em eixo que os faz sofrer rotação em alta velocidade.
O responsável pela leitura e também gravação de dados sobre o disco magnético é chamado de "cabeça de leitura”. A cabeça de leitura posiciona um leitor (uma espécie de “agulha") sobre os discos magnéticos para ler ou gravar dados. Esses dados são lidos e gravados sem que a agulha encoste no disco. Isso só acontece porque o HD é hermeticamente fechado e em consequência à alta velocidade em que o disco é submetido, a cabeça de leitura acaba sendo jogada para cima.

O atuador é uma peça que movimenta a cabeça de leitura em torno do disco e ele funciona por atração/repulsão magnética.

Computadores analógicos x digitais

Computador Analógico de 1950.
Os computadores podem ser classificados em dois tipos principais: analógicos e digitais. Os computadores analógicos não trabalham com números nem com símbolos que representam os números; eles procuram fazer analogia entre quantidades (ex. pesos, quantidade de elementos, níveis de tensão, pressões hidráulicas). Alguns exemplos desse tipo de computador são o Ábaco – que se utilizava de pequenos carretéis embutidos em um pequeno filete de metal para realizar cálculos – ou a régua de cálculo – que utiliza comprimentos de escalas especialmente calibradas para facilitar a multiplicação, a divisão e outras funções. Pode-se dizer que o computador analógico é uma categoria de computadores que se utiliza de eventos elétricos, mecânicos ou hidráulicos para resolver problemas do homem. Ou seja, tais computadores represen
Exemplo de Computador Digital dos dias atuais.
tam o comportamento de um sistema real utilizando-se para isso de grandezas físicas. Segundo Computador... (2010), computadores analógicos são normalmente criados para uma finalidade específica, assim como ocorre com a construção de circuitos eletrônicos que implementam sistemas de controle (ex.: sistemas de segurança, sistemas de controle de nível). Nesses sistemas, os resultados da computação analógica são utilizados dentro do próprio sistema. Assim, uma pessoa era responsável pela programação e funcionamento desses computadores analógicos, realizando a programação diretamente no hardware (ex.: engrenagens, roldanas). No início do século XX as primeiras calculadoras mecânicas, caixas registradoras e máquinas de cálculo em geral foram redesenhadas para utilizar motores elétricos, com a posição das engrenagens representando o estado de uma variável. Exemplos de variáveis utilizadas em computadores analógicos são: a intensidade de uma corrente elétrica em um resistor, o ângulo de giro de uma engrenagem, o nível de água em um recipiente. Diferentemente dos computadores analógicos, que representam números por meio da analogia direta entre quantidades, os computadores digitais resolvem problemas realizando operações diretamente com números, enquanto os analógicos medem. Os computadores digitais resolvem os problemas realizando cálculos e tratando cada número, dígito por dígito. De acordo com Monteiro (2007), um computador digital é uma máquina projetada para armazenar e manipular informações representadas apenas por algarismos ou dígitos, que só podem assumir dois valores distintos, 0 e 1, razão pela qual é denominado de computador digital. Outra grande diferença dessa categoria de computadores é que eles podem resolver problemas por meio de uma sequência programada de instruções com o mínimo de intervenção humana. Assim, podemos dizer que o computador digital surgiu como uma solução rápida e com um nível de automação bem mais elevado de realizar grandes computações numéricas. Muitas são as necessidades do homem em termos de computação, especialmente nas áreas de engenharia, além de demonstrações e aplicações teóricas (ex.: cálculo de um fatorial, progressões aritméticas). Sem o uso da tecnologia, muitos cálculos manuais se tornavam inviáveis, tanto pelo custo em termos de esforço quanto pelo risco de gerar resultados incorretos. Dessa forma, os computadores digitais foram um passo determinante para o progresso que é possível perceber atualmente em termos de computação. O sonho do homem em realizar cálculos de forma automática, fazendo do computador um dispositivo semelhante ao cérebro humano, mas com capacidades infinitamente maiores do que o ser humano poderia suportar, virou realidade e permite hoje automatizar grande parte das tarefas do ser humano, facilitando sua vida pessoal e profissional.

Um pouco de história ...." Computador eletrônico"

Depois da época de Babbage, as calculadoras mecânicas tornaram-se cada vez mais complexas, em particular sob a propriedade de uma empresa nomeada International Business Machines, criada em 1911, e mais conhecida como IBM. No entanto, foi durante a Segunda Guerra Mundial que apareceu o primeiro computador completamente eletrônico. Ele fazia 5.000 somas por segundo! E foi chamado de ENIAC. O ENIAC foi desenvolvido e construído pelo Exército dos EUA para o seu Laboratório de Pesquisas Balísticas. Ele foi acionado em 1947 e ficou em contínua operação até as 11h 45 do dia 2 de outubro de 1955. O ENIAC usava contadores em anel de dez posições para armazenar dígitos. A aritmética era realizada "contando" pulsos com os contadores em anel e gerando pulsos de transporte caso o contador fosse "reiniciado”. A idéia era emular em eletrônicos a operação dos giros de dígito de uma calculadora mecânica.

ENIAC

Após o surgimento dos primeiros computadores na década de 1950, como o ENIAC, descobertas expermimentais mostraram que os transistores realizam as mesmas funções das válvulas eletrônicas.

Em 1979, o microprocessador INTEL 8088 (ou circuito integrado), era capaz de realizar 300.000 operações por segundo. Em 2000, o Pentium 4, também fabricado pela INTEL, executava cerca de 1.700.000.000 operações por segundo, ou seja, 6.000 vezes mais! Esse crescimento exponencial do número de transistores por circuito integrado funciona de acordo com a Lei de Moore. Em 1965, apenas quatro anos depois que o primeiro circuito integrado plano foi descoberto, Gordon Moore observou que o número de transistores por circuito integrado dobraria a cada dois anos. Crédito: Cortesia da Intel Corporation. Em 2004, um chip de silicone medindo 0,5 mm quadrados atingiu a mesma capacidade do ENIAC, que ocupava muito espaço.

Lei de Moore




Um chip de computador pode controlar a rede de fornecimento de energia elétrica de uma cidade. Também pode ativar o microondas que você usa para esquentar sua comida, ou o telefone celular que você usa para ligar para a família e os amigos. Na verdade, muitos estudiosos acreditam que uma das mais importantes invenções do homem foi o computador.De volta a 1943, quando Thomas Watson, presidente da IBM, disse "Acho que existe um mercado mundial para talvez cinco computadores", ele não tinha noção de que sua própria empresa seria tão importante para tornar os computadores onipresente em nossa vida cotidiana. Os computadores estão ficando mais rápidos e menores, além de se proliferarem rapidamente no mundo todo. A vida não seria a mesma hoje sem o chip de computador. Apenas meio século depois de sua invenção, é possível encontrar chips de qualquer velocidade e complexidade, desde um aparelho de DVD a um caça de guerra.

quarta-feira, 8 de abril de 2015

Operadores

Operadores são elementos funcionais que atuam sobre operandos e produzem um determinado resultado. Por exemplo, a expressão 3 + 2 relaciona dois operandos (os números 3 e 2) por meio do operador (+) que representa a operação de adição.

De acordo com o número de operandos sobre os quais os operadores atuam, os últimos podem ser classificados em: 
  • binários, quando atuam sobre dois operandos. Ex.: os operadores das operações aritméticas básicas (soma, subtração, multiplicação e divisão);

  • unários, quando atuam sobre um único operando. Ex.: o sinal de (-) na frente de um número, cuja função é inverter seu sinal. 
Outra classificação dos operadores é feita considerando-se o tipo de dado de seus operandos e do valor resultante de sua avaliação. Segundo esta classificação, os operadores dividem-se em aritméticos, lógicos e literais. Esta divisão está diretamente relacionada com o tipo de expressão onde aparecem os operadores. Um caso especial é o dos operadores relacionais, que permitem comparar pares de operandos de tipos de dados iguais, resultando sempre num valor lógico.

Fluxograma Convencional de um Algoritmo


 

É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos. Tal propriedade facilita o entendimento das idéias contidas nos algoritmos e justifica sua popularidade. Esta forma é aproximadamente intermediária à descrição narrativa e ao pseudocódigo (subitem seguinte), pois é menos imprecisa que a primeira e, no entanto, não se preocupa com detalhes de implementação do programa, como o tipo das variáveis usadas. Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível físico da implementação do algoritmo. Por exemplo, figuras geométricas diferentes são adotadas para representar operações de saída de dados realizadas em dispositivos distintos, como uma fita magnética ou um monitor de vídeo.


De modo geral, um fluxograma se resume a um único símbolo inicial por onde a execução do algoritmo começa, e um ou mais símbolos finais, que são pontos onde a execução do algoritmo se encerra. Partindo do símbolo inicial, há sempre um único caminho orientado a ser seguido, representando a existência de uma única seqüência de execução das instruções. Isto pode ser melhor visualizado pelo fato de que, apesar de vários caminhos poderem convergir para uma mesma figura do diagrama, há sempre um único caminho saindo desta. Exceções a esta regra são os símbolos finais, dos quais não há nenhum fluxo saindo, e os símbolos de decisão, de onde pode haver mais de um caminho de saída (usualmente dois caminhos), representando uma bifurcação no fluxo.


O que é um Algoritmo?

Nos dias atuais e com a evolução galopante da tecnologia, dificilmente encontramos pessoas que nunca tenham utilizado um computador. Os propósitos podem variar bastante, seja para edição de textos, jogos ou atividades mais complexas. Já é difícil de imaginar nossas vidas sem o uso desta ferramenta.
Nesta atividade tão comum ao nosso cotidiano, você algum dia deve ter parado para pensar como os programas funcionam. Como é que o computador faz todas as tarefas exatamente da forma com a qual você pede? A resposta para esta pergunta é mais simples do que parece: ele segue as instruções que você passa.
Mas para que ele consiga entender o que você fala, ele precisa de uma linguagem mais específica. Para fazer esta interpretação entre homem e máquina, foram desenvolvidas as linguagens de programação. Mas mesmo estas linguagens utilizam uma lógica para serem escritas e é aí que entram os algoritmos.
O computador apenas faz o que você manda
Um algoritmo nada mais é do que uma receita que mostra passo a passo os procedimentos necessários para a resolução de uma tarefa. Ele não responde a pergunta “o que fazer?”, mas sim “como fazer”. Em termos mais técnicos, um algoritmo é uma sequência lógica, finita e definida de instruções que devem ser seguidas para resolver um problema ou executar uma tarefa.
Embora você não perceba, utiliza algoritmos de forma intuitiva e automática diariamente quando executa tarefas comuns. Como estas atividades são simples e dispensam ficar pensando nas instruções necessárias para fazê-las, o algoritmo presente nelas acaba passando despercebido. Por exemplo, quando precisa trocar uma lâmpada, você:



 Início
   Verifica se o interruptor está desligado;
   Procura uma lâmpada nova;
   Pega uma escada;
   Leva a escada até o local;
   Posiciona a escada;
   Sobe os degraus;
   Para na altura apropriada;
   Retira a lâmpada queimada;
   Coloca a lâmpada nova;
   Desce da escada;
   Aciona o interruptor;
     Se a lâmpada não acender, então:
         Retira a lâmpada queimada;
         Coloca outra lâmpada nova
     Senão
         Tarefa terminada;
   Joga a lâmpada queimada no lixo; 
  Guarda a escada;
 Fim


Formas de escrever um algoritmo
Os algoritmos são muito utilizados na área de programação, descrevendo as etapas que precisam ser efetuadas para que um programa execute as tarefas que lhe são designadas. Existem diversas formas de escrever um algoritmo, podendo ser citadas o pseudocódigo (ou português estruturado), fluxograma, diagrama de Chapin e descrição narrativa.
A sequência escrita no exemplo da troca da lâmpada estava em descrição narrativa, por exemplo. Esta forma não é muito utilizada em informática porque pode ser ambígua e dar margem a interpretações erradas.
Os dois tipos mais comuns são o pseudocódigo que utiliza uma forma mais estruturada, assemelhando-se àquelas utilizadas pelas linguagens de programação e o fluxograma que emprega figuras geométricas para ilustrar os passos a serem seguidos.
O Diagrama de Chapin, Diagrama Nassi-Shneiderman ou Diagrama N-S mostra a solução por meio de quadros organizados hierárquica e estruturadamente. Este tipo não é muito utilizado, pois vários procedimentos tornam-se difíceis de serem mostrados por meio deste diagrama.
O algoritmo escreve as instruções de forma que o computador entenda
Um algoritmo é algo que você já utilizava o tempo todo e nem percebia. Uma forma bem interessante de exercitar a lógica seria algum dia parar para pensar em sua rotina ao acordar, por exemplo. Você perceberia o quanto ela é mais complexa do que parece, se fosse para colocar no papel e como a execução disto é automática.

Unidade Logica e Aritmética

O primeiro componente essencial num computador (ou sistema computacional) é a Unidade Lógica e Aritmética (ALU), a qual, como o próprio nome indica, assume todas as tarefas relacionadas às operações lógicas (ou, e, negação, etc.) e aritméticas (adições, subtrações, etc...) a serem realizadas no contexto de uma tarefa. Neste contexto, é importante observar a evolução que a ALU sofreu ao longo dos anos e quais são os parâmetros que influenciam no desempenho global de um sistema computacional: n Um parâmetro importante é o tamanho da palavra processada pela unidade lógica e aritmética. Como o sistema de numeração adotado nas arquiteturas de computadores é o binário, o tamanho de palavra é dado em números de bits. Quanto maior o tamanho da palavra manipulada pelo microprocessador, maior é o seu potencial de cálculo e maior a precisão das operações realizadas. n A velocidade de cálculo obviamente é outro fator de peso para o desempenho do computador, uma vez que ela ser.á determinante para o tempo de resposta de um sistema computacional com respeito à execução de uma dada aplicação. A velocidade de cálculo está diretamente relacionada com a freqüência do relógio que pilota o circuito da CPU como um todo. n Outro parâmetro importante associado ao desempenho do computador é a quantidade de operações que ela suporta. Por exemplo, os primeiros processadores suportavam um conjunto relativamente modesto de operações lógicas e aritméticas. Em particular, no que diz respeito às operações aritméticas, os primeiros processadores suportavam apenas operações de adição e subtração, sendo que as demais operações tinham de ser implementadas através de seqüências destas operações básicas. Os processadores suportando um conjunto mais complexo de instruções surgiu de 15 anos para cá, graças à adoção da tecnologia CISC (Complex Instruction Set Computer)



Processadores


Um microprocessador, ou simplesmente processador, é um circuito integrado (ou chip), que é considerado o "cérebro" do computador. É ele que executa os programas, faz os cálculos e toma as decisões, de acordo com as instruções armazenadas na memória
.  
Os microprocessadores formam uma parte importantíssima do computador, chamada de UCP (Unidade Central de Processamento), ou em inglês, CPU (Central Processing Unit). Antes da existência dos microprocessadores, as CPUs dos computadores eram formadas por um grande número de chips, distribuídos ao longo de uma ou diversas placas. Um microprocessador nada mais é que uma CPU inteira, dentro de um único CHIP.


Computador Mainboard com micro processador
Pode-se comparar o processador a um maestro, que supervisiona os músicos e lhes indica o ritmo de trabalho. Mas a atuação do regente não basta para garantir uma boa interpretação: é preciso que os músicos estejam no nível por ele exigido. Da mesma forma, para que um PC aproveite ao máximo o rendimento de seu processador, os módulos de memória, o disco rígido, o adaptador de vídeo e os demais componentes devem ter um nível de desempenho idêntico ou superior ao seu. Não adianta muito contar-se com um processador rápido (como um Pentium III de 550 MHz) se o PC dispõe apenas de 16 MB de memória RAM ou de uma placa gráfica para barramento ISA. Um PC com configuração mais simples (um Pentium MMX de 200 MHz, com 64 MB de memória e uma placa gráfica PCI) certamente terá funcionamento muito mais ágil e, inclusive, iniciará o sistema operacional com maior velocidade.

terça-feira, 17 de março de 2015

Sistema de Memórias e suas características

De acordo com o modelo de Von Neumann , a função da Unidade Central de Processamento (UCP) ou processador é, essencialmente, capturar dados e instruções que compõem um programa e processá-los, não importando sua origem ou destino. Mas para que o processador possa executar os programas, seus dados e instruções devem estar armazenados na memória. Portanto, a memória dos computadores é um elemento indispensável e tão importante quanto a Unidade Central de Processamento (CPU) ou processador. A memória é um dispositivo que permite ao computador armazenar dados de forma temporária ou permanente. Segundo Tanenbaum (2007), a memória é a parte do computador onde os programas e os dados são armazenados. Sem uma memória na qual os processadores (CPU) possam ler ou escrever informações, o conceito de computador digital com programa armazenado não pode ser implementado. Para o funcionamento adequado de um computador, é necessário dispor, nele mesmo, de diferentes tipos de memória. Em algumas tarefas, pode ser fundamental que a transferência de dados seja feita da forma mais rápida possível – é o caso das tarefas realizadas pela CPU, onde a velocidade é fator preponderante, ao passo que a quantidade de bits a ser manipulada é muito pequena. Esse tipo de memória deve possuir características diferentes daquele em que a capacidade de armazenamento é mais importante que a sua velocidade de transferência de e para outros dispositivos. Destacamos que a necessidade da existência de vários tipos de memória ocorre em virtude de vários fatores concorrentes, mas principalmente em função do aumento da velocidade das CPUs (a qual é muito maior do que o tempo de acesso da memória) e da capacidade de armazenamento.
Se existisse apenas um tipo de memória, sua velocidade deveria ser compatível com a da CPU, de modo que esta não ficasse esperando muito tempo por um dado que estivesse sendo transferido. Segundo Patterson e Hannessy (2000), a CPU manipula um dado em 5 ns, ao passo que a memória transfere um dado em 60 ns. Considerando os diversos tipos de memórias existentes, as quais variam em função de sua tecnologia de fabricação, capacidade de armazenamento, velocidade e custo, pode-se dizer que fica muito difícil projetar um computador utilizando-se apenas um único tipo de memória. Dessa forma, segundo Monteiro (2007), o computador possui muitas memórias, as quais se encontram interligadas de forma bem estruturada, constituindo o que é chamado de subsistema de memória, o qual é parte do sistema computacional. O subsistema de memória é projetado de modo que seus componentes sejam organizados hierarquicamente. A Figura 4.1 apresenta uma pirâmide contendo a hierarquia das memórias existentes em um computador. Observa-se que a base da pirâmide é larga, simbolizando a elevada capacidade de armazenamento, o tempo de uso, a velocidade e o custo de sua tecnologia de fabricação. Assim, a base da pirâmide representa dispositivos de armazenamento de massa (memória secundária), de baixo custo por byte armazenado, mas ao mesmo tempo com baixa velocidade de acesso. A flecha na direção do topo indica que quanto mais rápidas forem as memórias, mais elevado será o seu custo em relação à tecnologia e menor a sua capacidade de armazenamento em um computador.
Hierarquia de Memórias.

Computadores e as Várias Camadas de Abstração

Computadores são aparelhos extremamente complexos. Para compreender o seu funcionamento, precisamos entender várias camadas de abstração diferente.
A camada mais baixa de todas é aquela formada por transistores, tensão e corrente elétrica. Quem costuma lidar com esta camada são físicos e engenheiros elétricos. Nesta camada estuda-se o funcionamento de transistores e circuitos sempre levando em conta as propriedades físicas da corrente elétrica.
Uma camada acima, estão as portas lógicas - todas elas compostas por transistores. Neste nível estuda-se como criar estruturas mais complexas combinando-se as diversas portas como AND, OR e NOT para criar estruturas como multiplexadores, flip-flops e somadores. Neste estágio pode-se usar linguagens como o Verilog ou VHDL para programar circuitos.
Subindo mais um nível de abstração, começamos a lidar com estruturas mais complexas como registradores e unidades lógicas aritméticas - todas compostas por muitos flip-flops, somadores e multiplexadores. Vemos como todas essas estruturas realmente geram as instruções de cada máquina e como cada instrução funciona. É neste nível que costuma trabalhar um Arquiteto.
Um nível além, estuda-se como combinar as instruções da camada anterior para realizar comandos mais sofisticados como as operações da lingüagem C e como coordenar o funcionamento de um sistema operacional por meio de interrupções e outros recursos. 
Diagrama que representa o Kernel de um Sistema Operacional sendo usado como um meio de comunicação entre o Software e o Hardware:

Acima desta camada, está o estudo do funcionamento de funções de bibliotecas, APIs e a programação de aplicativos e programas de computador simples.E finalmente, na camada de abstração mais superior está o funcionamento de um programa de computador do ponto de vista do usuário. Como utilizar um aplicativo já criado.

A Lei de Moore

Gordon Earl Moore, hoje com 86 anos.
A lei de Moore surgiu em 1965 através de um conceito estabelecido por Gordon Earl Moore. Tal lei dizia que o poder de processamento dos computadores (entenda computadores como a informática geral, não os computadores domésticos) dobraria a cada 18 meses. Vale frisar que de modo algum Gordon queria se referenciar a sua empresa (Gordon é co-fundador da Intel), pois ele não havia como ter certeza que a empresa conseguiria evoluir em tal ritmo.
Não há como dizer que esta lei vá perpetuar por muito mais tempo, mas até agora ela tem sido válida. Atualmente sabe-se que o computador mais veloz do mundo é o IBM Roadrunner, o qual tem a capacidade de 1,144 petaflops. Se compararmos este número às atividades do ser humano, seria como dizer que nossos órgãos sensoriais calculam as atividades e as realizam com a mesma grandeza.

A comparação supracitada realmente é real, pois em um teste realizado pelo grupo Los Alamos (grupo de pesquisadores que tem parceria com a IBM no projeto do Roadrunner) eles conseguiram realizar em uma simulação o mesmo número de cálculos que nosso cérebro executa durante a audição ou a locomoção. Tais experiências são de suma importância, visto que podem ser de grande ajuda na medicina para auxiliar pessoas com deficiências, e ainda podem auxiliar a ciência para estudar melhor o corpo humano.
A título de curiosidade, o IBM Roadrunner utiliza 6.562 processadores dual core AMD Opteron associados a 12.240 chips da IBM (semelhantes ao processador utilizado no PlayStation 3) e quase 52 TB (TeraBytes) de memória RAM. Alguns cientistas até já prevêem que se a lei de Moore continuar sendo válida, em 2019 teremos um décimo do poder do IBM Roadrunner em nossas casas. Há de se convir que tais números são absurdamente estrondosos e nos levam a pergunta: se a informática continuar a evoluir neste ritmo, aonde iremos parar? Realidades como as dos filmes “Eu, o Robô” ou “O Homem Bicentenário” serão o futuro da humanidade?
                                                                                 Fonte: http://www.tecmundo.com.br/curiosidade/701-o-que-e-a-lei-de-moore-.htm

Níveis de Máquinas

Níveis de Máquinas
Existe um certo número de níveis em um computador (o número exato é discutível), do nível do usuário descendo ao nível do transistor. Descendo a partir do nível mais alto, os níveis se tornam menos abstratos e mais da estrutura interna do computador se torna visível.

Nível 1 ou nível de microprogramação é o verdadeiro nível de máquina, havendo um programa denominado microprograma, cuja função é interpretar as instruções de nível 2. A instrução neste nível é denominada microinstrução.

 Nível 2 ou nível convencional de máquina é o primeiro nível de máquina virtual. A linguagem de máquina deste nível é comumente denominada linguagem de máquina. As instruções são executadas interpretativamente pelo microprograma. Em máquinas que não tenham o nível de microprogramação, as instruções de nível convencional de máquina são executadas diretamente pelos circuitos.

Nível 3 ou nível de sistema operacional apresenta a maior parte das instruções em linguagem de nível 2, um conjunto de novas instruções, organização diferente da memória, capacidade de execução de dois ou mais programas em paralelo. As novas facilidades são realizadas por um interpretador denominado sistema operacional, em execução no nível 2. As instruções de nível 3 idênticas às de nível 2 são executadas diretamente pelo microprograma.

Nível 4 ou nível de linguagem de montagem consiste de uma forma simbólica para uma linguagem de nível inferior. Os programas em linguagem de montagem são traduzidos para uma linguagem de nível 2 ou 3, e, então, interpretados pela máquina apropriada. O programa que executa a tradução é denominado montador.

 Nível 5 ou nível de linguagem orientada para problemas consiste de linguagem de alto-nível. Os programas escritos nessas linguagens são, normalmente, traduzidos para o nível 3 ou 4 por tradutores conhecidos como compiladores.

Os níveis 2 e 3 são sempre interpretados, enquanto os níveis 4 e 5 são, geralmente, traduzidos. As linguagens de máquina dos níveis 1, 2 e 3 são numéricas, ao passo que as dos níveis 4 e 5 são simbólicas, contento palavras e abreviaturas.


O Modelo de Barramento de Sistema

Este modelo é um refinamento do modelo de von Neumann, já que ele possui uma CPU (ALU e controle), memória e uma unidade de entrada/saída (I/O). A comunicação entre os componentes é realizada através de um caminho compartilhado chamado barramento de sistema (bus), constituído do barramento de dados, do barramento de endereços e do barramento de controle. Existe também um barramento de energia e algumas arquiteturas podem ter um barramento de I/O separado.


Modelo de Barramento
Cada barramento consiste de um determinado conjunto de fios interligando os componentes do sistema. Quando dizemos, por exemplo, que um sistema tem 32 bits no barramento de dados, isso quer dizer que existem 32 fios para transmitir dados, e eles estão interligando todas as unidades do computador. Um computador moderno tem, normalmente, três barramentos:
 1. Barramento de Dados - para transmitir dados.

 2. Barramento de Endereços - para identificar onde o dado deve ser lido/escrito. 

3. Barramento de Controle - para coordenar o acesso aos barramentos de dados e endereços, para que não ocorra conflitos (do tipo vários periféricos querendo escrever na memória ao mesmo tempo).


Além disso, o acesso a dispositivos pode ser de duas maneiras. Algumas arquiteturas exigem que os dispositivos sejam mapeados em memória, ou seja, para enviar uma informação a um dispositivo deste tipo, a CPU deve escrever em um (ou mais) endereço(s) de memória específico(s). Para receber informações do dispositivo, a CPU deve ler um (ou mais) endereço(s) de memória específico(s). Outras arquiteturas, mais flexíveis, possuem dois tipos de endereçamento: um endereçamento de memória e outro de entrada e saída (I/O). Neste caso, os dispositivos podem tanto ser mapeados em memória como mapeados em portas de I/O. O uso de mapeamento de dispositivos em portas de I/O permite que todo o endereçamento de memória esteja disponível, de fato, para o acesso à memória.

segunda-feira, 16 de março de 2015

Arquitetura de Von Neumann

John von Neumann.
Introduziu o conceito do computador controlado por programa armazenado e segundo ele todo computador é formado por 5 partes básicas: a memória, a unidade lógica e aritmética, a unidade de controle e os dispositivos de entrada e saída. As operações a serem realizadas pelo computador são definidas pelos dados e instruções do programa carregado na memória.

  • A unidade aritmética e lógica é a parte do computador onde são feitas as operações aritméticas e lógicas com os dados.
  •  O tipo de operação a ser executado é determinado por sinais vindos da unidade de controle. A memória é onde ficam armazenados os dados e instruções que vão ser utilizados pela UAL e pela unidade de controle. Os dados a serem operados são lidos dos dispositivos de entrada para a memória. 
  • Os resultados obtidos são enviados para a memória e daí para os dispositivos de saída de dados. 

Modelo de Von Neumann.

Algumas Definições básicas para compreensão de Arquitetura Computacional

Para se compreender bem a Arquitetura Computacional, alguns conceitos básicos devem ser pontuados, abaixo, segue uma lista desses conceitos fundamentais:


  •  A Arquitetura de Computadores trata do comportamento funcional de um sistema computacional, do ponto de vista do programador (ex. tamanho de um tipo de dados – 32 bits para um inteiro).
  • Processamento de dados: Série de operações que se aplica a um conjuntos de dados (entrada)para obter outro conjunto de dados ou resultados (saída).
  • Processamento eletrônico de dados: É o processamento de dados com a utilização do computador. Diz-se eletrônico pois os computadores atuais são constituídos de componentes eletrônicos. 
  • Informática: Ciência que abrange todas as atividades relacionadas com o processamento automático de informações.
  • Hardware: conjunto de componentes mecânicos, elétricos e eletrônicos com os quais são construídos os computadores e os periféricos.
  •  Software: conjunto de programas, procedimentos e documentação que permitem usufruir da capacidade de processamento oferecida pelo hardware.
  • Programa: Um programa pode ser definido como uma seqüência de instruções que descrevem como executar uma determinada tare
  • Instrução: Uma instrução pode ser definida como um comando para o processado
  • Linguagem de máquina: Linguagem de máquina corresponde ao conjunto de instruções primitivas do computador. Devem ser simples, reduzindo a complexidade e custo dos circuitos.
Existem ainda outras diversas outras definições mas que não serão aqui colocadas por se aprofundarem de mais em determinados assuntos. 

Introdução a Arquitetura de Computadores

É sabido que desde os tempos mais remotos os ancestrais da espécie humana já sentiam a necessidade de calcular, seja para dividir os animais em grupos, definir os limites de suas terras ou repartir a comida. Com o avanço tecnológico da espécie humana a conveniência de poder enumerar objetos ficou mais acentuada e complexa, o que levou a construção dos primeiros numerais, que foram se formando lentamente diariamente, em decorrência da necessidade diária de registrar as contagens. Usou-se os dedos, fez-se marcas na areia ou nas pedras, mas em um determinado momento esse tipo de técnica já não era mais suficiente para cálculos mais complexos.
A mais antiga ferramenta conhecida para uso em computação foi o ábaco, e foi inventado na Babilônia por volta de 2400 a.C. O seu estilo original de uso, era desenhar linhas na areia com rochas. Ábacos, de um design mais moderno, ainda são usados como ferramentas de cálculo.
A primeira máquina de verdade foi construída por Wilhelm Schickard (1592-1635), sendo capaz de somar, subtrair, multiplicar e dividir. Essa máquina foi perdida durante a guerra dos trinta anos, sendo que recentemente foi encontrada alguma documentação sobre ela. Durante muitos anos nada se soube sobre essa máquina, por isso, atribuía-se a Blaise Pascal (1623-1662) a construção da primeira máquina calculadora, que fazia apenas somas e subtrações.
Pascal, que aos 18 anos trabalhava com seu pai em um escritório de coleta de impostos na cidade de Rouen, desenvolveu a máquina para auxiliar o seu trabalho de contabilidade.
A calculadora usava engrenagens que a faziam funcionar de maneira similar a um odômetro.
Pascal recebeu uma patente do rei da França para que lançasse sua máquina no comércio. A comercialização de suas calculadoras não foi satisfatória devido a seu funcionamento pouco confiável, apesar de Pascal ter construído cerca de 50 versões.
O projeto de Pascal foi bastante aprimorado pelo matemático alemão Gottfried Wilhelm Leibniz (1646-1726), que também inventou o cálculo, o qual sonhou que, um dia no futuro, todo o raciocínio pudesse ser substituído pelo girar de uma simples alavanca. 
Todas essas máquinas, porém, estavam longe de serem consideradas um computador, pois não eram programáveis. Isto quer dizer que a entrada era feita apenas de números, mas não de instruções a respeito do que fazer com os números.