Sie sind auf Seite 1von 33

Arquitetura de Computadores

Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida por qualquer forma e/ou quaisquer meios (eletrnico, incluindo fotocpia e gravao) ou arquivada em qualquer sistema ou banco de dados sem permisso escrita da Universidade Paulista.

APRESENTAO

1. Apresentao da Disciplina: Esta disciplina visa a conceituar a organizao e arquitetura de computadores e mquinas multinveis, a organizao de sistemas computacionais e seus elementos principais, tais como CPU, memria, entradas e sadas, elementos multimdia e barramentos. Apresentar o nvel lgico digital: unidade lgica e aritmtica, a organizao da memria, clock e registradores. No nvel da microarquitetura, sero apresentados os caminhos de dados, a temporizao dos caminhos de dados, a operao da memria e as microinstrues. Exemplos de macroarquitetura e projeto do nvel de microarquitetura. 2. Objetivos Gerais Fornecer o suporte para que o aluno tome contato com as tcnicas de projeto de um sistema computacional. 3. Objetivos Especcos Fornecer o suporte para o entendimento de sistemas computacionais tanto do ponto de vista do software quanto do hardware. 4. Plano de Ensino CURSO: Cincia da Computao SRIE: 5o semestre DISCIPLINA: Arquitetura de Computadores CARGA HORRIA SEMANAL: 02 horas-aula CARGA HORRIA SEMESTRAL: 40 horas-aula I EMENTA Conceituao de Organizao e Arquitetura de Computadores e Mquinas Multinveis. Organizao de Sistemas Computacionais: CPU, Memria, Entradas e Sadas, Multimdia e Barramentos. Nvel da Microarquitetura: Fluxos de Dados, Temporizao do Fluxo de Dados, Operao de Memria, Microinstrues. II OBJETIVOS GERAIS Fornecer o suporte para que o aluno tome contato com as tcnicas de projeto de um sistema computacional. 3

III OBJETIVOS ESPECFICOS Fornecer o suporte para o entendimento de sistemas computacionais tanto do ponto de vista do software quanto do hardware. IV CONTEDO PROGRAMTICO 1. Organizao estruturada de computadores Mquinas multinveis contemporneas: nvel da lgica digital. 2. Organizao estruturada de computadores Mquinas multinveis contemporneas: nvel da microarquitetura. 3. Organizao estruturada de computadores Mquinas multinveis contemporneas: nvel da arquitetura do conjunto de instrues. 4. Organizao estruturada de computadores Mquinas multinveis contemporneas: nvel de mquina do sistema operacional. 5. Organizao estruturada de computadores Mquinas multinveis contemporneas: nvel de linguagem de montagem. 6. Organizao de sistemas computacionais Processadores: organizao da CPU; execuo de instrues primrias: endereos, ordenao dos bytes, cdigos de correo de erros. 7. Organizao de sistemas computacionais Processadores: princpios de projeto para computadores modernos, paralelismo no nvel de instruo, paralelismo no nvel de processador. 8. Organizao de sistemas computacionais Memria primria: endereos, ordenao dos bytes, cdigos de correo de erros (bit de paridade e cdigo de Hamming). 9. Organizao de sistemas computacionais Memria secundria dispositivos de armazenamento: HDs (IDE, EIDE, SCSI, RAID). 10. Organizao de sistemas computacionais Memria secundria dispositivos de armazenamento: CDs; DVDs. 11. Organizao de sistemas computacionais Entrada e Sada: barramentos. 12. Nvel de microarquitetura (microprogramao) Exemplo de microarquitetura de ULA: uxo de dados, temporizao do uxo de dados.

V ESTRATGIA DE TRABALHO Aulas expositivas e recursos audiovisuais. VI AVALIAO Provas bimestrais. VII BIBLIOGRAFIA Bsica HENNESSY, John L.; PATTERSON, D. A. Organizao e Projeto de Computadores. 3. ed. 2005. Editora Campus. MONTEIRO, M. A. Introduo organizao de computadores. Rio de Janeiro: LTC, 2001. TANENBAUM, A. S. Organizao estruturada de computadores. 4. ed. Rio de Janeiro: LTC, 2001. Complementar DELGADO, J.; RIBEIRO, C. Arquitetura de Computadores. Editora LTC, 2009. MURDOCCA, M. Introduo Arquitetura de Computadores. Ed. Campus, 2001. PARHAMI, B. Arquitetura de Computadores. Ed. Mcgraw-hill Interamericana, 2008. STALLINGS, W. Arquitetura e organizao de computadores. Ed. Prentice-Hall, 2010. WEBER, R. F. Fundamentos de Arquitetura de Computadores. 3. ed. Vol. 8, Ed Artmed, 2008.

ARQUITETURA DE COMPUTADORES

Unidade I
ORGANIZAO ESTRUTURADA DE COMPUTADOR (PARTE 1) Estrutura de um Computador

Em primeiro lugar, vamos denir quais devem ser os componentes bsicos que denem um computador. Um computador uma mquina de processar informaes, para tanto, precisa de um processador lgico, cuja funo realizar operaes funcionais sobre dados de entrada, devolvendo dados de sada. De nada adiantaria haver capacidade de processamento sem uma memria que armazene dados. No possvel haver processamento sem uma memria para armazenar os dados de entrada, os dados de sada, ou os dados que esto sendo processados. Tambm necessrio haver comunicao com o mundo externo, por onde os dados de entrada so inseridos, ou por onde os dados de sada podem ser exibidos ao operador humano ou ainda enviados a outro dispositivo. Tais componentes constituem os perifricos de E/S (E/S = Entrada e Sada, ou I/O = Input/Output). Processador, Memria(s) e Perifricos precisam naturalmente comunicar-se entre si, permitindo que dados sejam enviados, por exemplo, da memria para o processador ou vice-versa. Essa comunicao interna realizada por um sistema de barramentos. Qualquer dispositivo programvel cuja estrutura seja a da gura abaixo pode ser considerado um computador. Desde um supercomputador de milhes de dlares a um chip microcontrolador que custa centavos de dlar.

Unidade I

Computador

Memria

Perifricos

Barramentos

Processador

MQUINAS MULTINVEIS

Contedo programtico: Mquinas multinveis: nvel da lgica digital, nvel de microarquitetura e nvel de arquitetura de conjunto de instrues. Os computadores atuais so compostos por circuitos eletrnicos digitais. Tais circuitos baseiam-se em um componente eletrnico relativamente simples chamado transistor. O transistor opera basicamente como uma chave digital, por onde uma corrente eltrica pode passar ou no. Com esses dois estados possveis, pode-se implementar circuitos que realizam operaes lgicas binrias. natural pensar que, quanto mais complexas as operaes realizadas pelo processador de um computador, mais complexos devem ser seus circuitos internos. Complexidade, geralmente, signica alto custo (elevado nmero de componentes) e baixa conabilidade (elevado nmero de pontos onde falhas podem ocorrer). Portanto, as operaes que as instrues que uma CPU pode realizar, geralmente, so bem simples. Operaes elementares como some dois nmeros ou carregar um dado presente na memria. Ou seja, a linguagem da mquina composta por instrues bem elementares. Um programa de computador, por mais complexa a tarefa que realiza, composto por um nmero elevado dessas instrues simples na sequncia apropriada. O programa nada mais do que uma sequncia de passos elementares que, implementados de uma forma correta, levam execuo das tarefas muitas vezes bem complexas. claro que, se a tarefa a ser realizada complexa e as instrues disponveis so bem simples, um programa acaba possuindo um grande nmero de instrues. Isso torna o fato de se programar em tais linguagens uma tarefa razoavelmente penosa para programadores humanos. Alm claro do fato de os dados estarem representados na forma digital binria. 8

ARQUITETURA DE COMPUTADORES
A maioria dos microprocessadores possui um vocabulrio bem restrito de instrues. Ao contrrio da linguagem humana, que possui um amplo vocabulrio. J que um programa constitudo por uma grande sequncia de instrues simples, e as instrues esto na forma binria, a programao em linguagem de mquina trabalhosa, complexa e propensa a erros. Criar um computador cujo hardware capaz de processar instrues mais complexas (uma linguagem mais prxima da humana), por outro lado, economicamente invivel. A soluo encontrada pelos projetistas foi criar uma estrutura de camadas ou nveis de linguagens em que os nveis mais baixos possuem uma linguagem mais prxima da mquina, e os nveis mais altos, uma linguagem mais apropriada para seres humanos. A tarefa de programar torna-se mais fcil e mais produtiva. Os programas criados em linguagens de alto nvel so traduzidos ou interpretados para a linguagem do nvel inferior. Cada nvel possui sua linguagem prpria, que deve ser traduzida ou interpretada para o nvel inferior, at que no nvel mais baixo temos as operaes que so realizadas diretamente pelo hardware baseado em eletrnica digital. A grande maioria dos computadores atuais constituda de dois ou mais nveis, podendo atingir at seis nveis, como apresentado na gura 1.
Nvel 4 Nvel das linguagens orientadas para a soluo de problemas Traduo (compilador) Nvel 4 Nvel da linguagem do montador Traduo (montador) Nvel 3 Nvel do sistema operacional Interpretao parcial (sist. operacional) Nvel 2 Nvel da arquitetura do conjunto de instrues Interpretao ou execuo direta (microprograma) Nvel 1 Nvel da microarquitetura Hardware Nvel 0 Nvel da lgica digital

Figura 1 Computador com seis nveis

Unidade I
NVEL DE LGICA DIGITAL

O nvel mais baixo (nvel 0), ou nvel de lgica digital, composto pelo hardware da mquina. Seus circuitos executam programas na linguagem do nvel 1. Os elementos de interesse desse nvel so conhecidos como portas lgicas. Apesar de constitudas por elementos analgicos como transistores, as portas lgicas podem ser modeladas como dispositivos digitais. Cada porta lgica tem uma ou mais entradas digitais (sinais que representam os valores lgicos 0 ou 1) e calcula algumas funes bastante simples sobre essas entradas, como AND (E) e OR (OU) e NOT (NEGAO), ou seja, as operaes bsicas da lgebra booleana. Cada porta lgica construda a partir de um conjunto de transistores. Certa quantidade dessas portas pode ser combinada de modo a formar, por exemplo, uma memria de 1 bit, dispositivo capaz de armazenar o valor 0 ou o valor 1. Tais dispositivos com capacidade de armazenar um bit de informao so, muitas vezes, denominados latch ou ip-op. Memrias de 1 bit podem ser combinadas em grupos de maneira a formar, por exemplo, registradores de 16, 32 ou 64 bits. Cada registrador pode guardar uma nica sequncia de bits, at um dado valor mximo. Em resumo, as portas lgicas podem ser combinadas para formar o principal dispositivo de um sistema computacional, o processador. Obs.: Quando dizemos que um dado processador de 8, 16, 32 ou 64 bits, geralmente, estamos nos referindo ao nmero de ip-ops de seus registradores internos. O nvel de lgica digital o mais primitivo. Como constitui o hardware bsico de qualquer computador digital, mesmo os primeiros computadores possuam esse nvel. a eletrnica que compe a mquina fsica. Existe um nvel ainda mais baixo, quando consideramos os transistores que compem as portas lgicas. Portanto, o nvel inferior lgica digital a Microeletrnica. Um nvel ainda mais baixo estuda como os transistores dos microcircuitos funcionam. Esse nvel a Fsica do Estado Slido.
NVEL DE MICROARQUITETURA

No nvel de microarquitetura encontra-se um conjunto de 8 a 32 registradores que formam a memria local e tambm um circuito denominado ULA (Unidade Lgica e Aritmtica) que capaz de realizar operaes aritmticas simples. Os registradores so conectados ULA, formando o caminho de dados, por onde os dados transitam. Tais caminhos de dados so os barramentos internos do processador. Esse nvel tambm dene se as instrues em linguagem de mquina so interpretadas como microprogramas (processadores CISC), ou se so executadas diretamente pelo hardware (processadores RISC). O nvel de microarquitetura tambm estuda os registradores necessrios para a operao do processador. Muitos desses registradores so invisveis ou transparentes para o nvel ISA. O programador 10

ARQUITETURA DE COMPUTADORES
no possui acesso a eles. Por exemplo, necessrio um registrador para enderear as instrues que so buscadas na memria durante a execuo dos programas. Um outro registrador necessrio para armazenar a instruo que foi buscada na memria, para que seja decodicada e, em seguida, executada. Essas operaes devem ocorrer independentemente do que programado nas instrues da mquina. Fazem parte do projeto do microprocessador e funcionam da mesma maneira qualquer que seja a instruo executada.
NVEL DO CONJUNTO DE INSTRUES DA MQUINA (ISA)

O nvel 2 denominado nvel da arquitetura do conjunto de instrues (ou nvel ISA Instruction Set Architecture). Esse nvel contm o conjunto de instrues que so executadas por meio de microprogramao (no caso de processadores CISC) ou diretamente pelo hardware da mquina (processadores RISC). O nvel ISA estabelece o formato e o tamanho em bits das instrues, o nmero de ciclos de clock que cada instruo consome e o nmero de instrues presentes no processador, bem como o tamanho em bits e os tipos de dados manipulados pelas instrues. Dene, por exemplo, se um processador possui uma instruo de diviso, ou se ser necessrio desenvolver uma rotina com instrues de subtrao criada por um programador para realizar uma operao de diviso. BIBLIOGRAFIA ENGLANDER, I. A Arquitetura de Hardware Computacional, Software de Sistema e Comunicao em Rede. 4. ed. Rio de Janeiro: LTC, 2011 TANENBAUM, A. S. Organizao estruturada de computadores. 5. ed. So Paulo: Pearson: Prentice Hall, 2007. WEBER, R. F. Fundamentos de Arquitetura de Computadores. 4. ed. Porto Alegre: Bookman, 2012. Organizao Estruturada de Computador (parte 2)
MQUINAS MULTINVEIS CONTINUAO

Mquinas multinveis: nvel de mquina de sistema operacional, nvel de linguagem de montador e nvel de linguagem orientada a problema. O nvel 3 denominado nvel do sistema operacional. Um sistema operacional um programa que adiciona um conjunto de novas instrues e funcionalidades, alm daquelas suportadas pelo nvel ISA. O conjunto de instrues do nvel do sistema operacional aquele que est disponvel para os programadores de aplicaes. Nele esto presentes praticamente todas as instrues do nvel ISA, bem como um novo conjunto de instrues que o sistema operacional adiciona, conhecido como chamadas de sistema. 11

Unidade I
Uma chamada de sistema ativa um determinado servio prestado pelo sistema operacional ao nvel da aplicao, como a leitura de um dado de um arquivo. O nvel do sistema operacional sempre interpretado, ou seja, quando um programa do usurio executa uma instruo desse nvel, o sistema operacional executa essa instruo passo a passo. Outra funcionalidade importante do nvel do sistema operacional a abstrao do hardware. A parte fsica de uma mquina (hardware) pode ser bem diferente do de outra mquina. Os sinais digitais necessrios para executar uma mesma tarefa podem ser radicalmente diferentes de um modelo de computador para cada dispositivo poder trabalhar com uma linguagem especca. Entretanto, deve ser possvel que um mesmo programa rode adequadamente em dois computadores com diferentes estruturas de hardware. a que entra o Sistema Operacional. Ele um programa especial capaz de gerenciar o funcionamento de todos os outros, realizando a interpretao entre a linguagem genrica do software para a linguagem mais especca do hardware. Por exemplo, todos os programas compatveis com um dado sistema operacional podem invocar as mesmas instrues na forma de chamadas de sistema para escrever um arquivo em um disco. Cabe ao sistema operacional interpretar essa chamada de sistema e execut-la, comunicando-se com o hardware onde o arquivo ser gravado. Esse hardware pode ser um disco rgido ou um pen-drive, por exemplo. Ambos possuem uma tecnologia totalmente diferente e cabe ao sistema operacional ser capaz de se comunicar adequadamente com o dispositivo em questo. Por exemplo, no caso de dispositivos plug and play com interface de comunicao USB como um pen-drive ou HD externo, quando so plugados em um computador pela primeira vez, surge uma mensagem de instalao do driver do dispositivo. Instalar o driver de um novo perifrico a maneira do sistema operacional aprender uma nova linguagem, para comunicar-se com um novo dispositivo. O sistema operacional tambm encarrega-se do gerenciamento de processos e da hierarquia de acesso dos processos em execuo. Pode-se ter um sistema operacional multitarefa, com cada processo em execuo por uma fatia de tempo, determinado pelo s.o. Os processos tambm no podem ter acesso a qualquer endereo de memria, pois dessa maneira poderiam provocar pane em outros processos ou no funcionamento do prprio sistema operacional. O acesso memria restrito, pois processos comuns so executados com o microprocessador no modo protegido. Aspectos importantes relativos aos sistemas operacionais: memria virtual, entrada/sada de arquivos e processamento paralelo. Memria virtual uma tcnica implementada na maioria dos sistemas operacionais para fazer com que a mquina parea ter mais memria do que na verdade ela tem. 12

ARQUITETURA DE COMPUTADORES
Uma maneira de se organizar a memria virtual usar uma abstrao denominada arquivo. Para o sistema operacional, um arquivo nada mais do que uma sequncia de bytes. A E/S de arquivos feita por chamadas do sistema operacional para abertura, leitura, escrita e fechamento de arquivos. Em um sistema computacional com mais de um processador, cada um dos vrios processos cooperantes que rodam nele poder ter seu prprio processador, de modo a permitir que esses processos avancem simultaneamente. Por outro lado, se houver apenas um processador disponvel, o efeito do processamento paralelo poder ser simulado, fazendo com que o processador se dedique a um processo de cada vez, por curto espao de tempo, ou seja, o processador pode ser compartilhado por vrios processos. O nvel 4 denominado nvel de linguagem de montagem (assembly language). Neste nvel ocorre a traduo do programa original, expresso na linguagem fonte para uma outra linguagem denominada linguagem alvo. Dependendo da relao entre a linguagem fonte e a linguagem alvo, os tradutores podem ser divididos em dois grupos. Quando a linguagem fonte for essencialmente uma representao simblica para uma linguagem de mquina numrica, o tradutor chamado de montador (assembler) e a linguagem fonte chamada de linguagem de montagem (assembly). Por outro lado, quando a linguagem fonte for uma linguagem de alto nvel e a linguagem alvo for uma linguagem de mquina numrica ou uma representao simblica dessa linguagem, o tradutor chamado de compilador. Uma linguagem de montagem pura aquela na qual cada comando produz exatamente uma instruo de mquina, ou seja, existe uma correspondncia um para um entre as instrues de mquina e os comandos de um programa expresso em linguagem do montador. As linguagens do nvel 5 so projetadas para serem usadas por programadores de aplicao, com algum problema a ser resolvido. Tais linguagens so conhecidas como linguagens de alto nvel. Os programas escritos nessas linguagens so convertidos para os nveis 3 ou 4 por tradutores conhecidos como compiladores. Exemplo de um programa simples para imprimir uma mensagem na tela: Usando uma linguagem do nvel 5 (linguagem C): #include <stdio.h> int main( int argc, char *argv[] ) { 13

Unidade I
} E na linguagem do nvel 4 (assembly ou linguagem de montagem para processadores da famlia x86 com sistema operacional Windows ou MS-DOS): .model tiny .data DB frase Ol, mundo!, $ .code .end Outro exemplo de trecho de cdigo escrito em assembly para processadores da famlia x86 (presente em computadores pessoais). ; ------------- Incio da manipulao dos dados do arquivo encontrado ; ----- Abre o arquivo, obtendo o Handle mov dx, 9eh mov ax, 3d02h int 21h ; Endereo onde est o nome do arquivo encontrado. ; Abre o arquivo para leitura-escrita. org 0100h mov dx, frase mov ah, 9 int 21h printf( Ol, mundo! ); return 0;

mov ah, 4ch int 21h

14

ARQUITETURA DE COMPUTADORES
mov bx, ax ; ; O handle do arquivo foi obtido em AX mas deve ; ser movido para BX para as prximas funes.

----- Obtm a data e hora da ltima alterao do arquivo. mov ah, 57h xor al, al ; int 21h mov al, 0

lea di, [offset Horario + bp] mov ax, cx stosw lea di, [offset Data + bp] mov ax, dx stosw ; ----- Salva a parte do arquivo que inevitavelmente ser alterada, ; lendo e armazenando os primeiros bytes do arquivo a ser ; modicado. Para tanto o incio do futuro hospedeiro deve ; ser lido e os primeiros bytes armazenados em Backup. lea dx, [offset Backup + bp] mov cx, bytes mov ah, 3fh int 21h ; Buffer onde os dados sero gravados.

; ----- Descobre se o programa realmente um .COM internamente lea si, [offset Backup + bp] lodsw cmp ax, ZM ; Equivale a comparar com MZ je Proximo1 A linguagem assembly ainda utilizada, principalmente, na programao de microcontroladores, que so computadores completos em um nico chip, j que possuem processador, memria e perifricos embutidos. Circuitos eletrnicos com microcontroladores fazem parte dos chamados sistemas embarcados, que so sistemas que possuem microcontroladores que conferem certa inteligncia a outros dispositivos, tais como eletrodomsticos, alarmes, fontes de energia, cancelas eletrnicas, brinquedos etc.

15

Unidade I
A seguir um exemplo de trecho de cdigo escrito em assembly para um microcontrolador da famlia 8051. ORG 0000h ; VETOR DE RESET. SJMP STARTUP ; DESVIA PARA O CDIGO DE INICIALIZAO. ORG 0003h NOP RETI ORG 000Bh NOP RETI ORG 0013h NOP RETI ORG 001Bh NOP RETI ORG 0023h NOP ; ENDEREO DA INT0.

; ENDEREO DO TIMER0

; ENDEREO DA INT1.

; ENDEREO DO TIMER1.

; ENDEREO DA INTERRUPO SERIAL.

SJMP SERIALISR ; DESVIA PARA A ISR DA SERIAL. RETI STARTUP: ; CDIGO DE INICIALIZAO. ; PORT P1 INICIALMENTE ZERADO. ; TIMER1 EM MODO 2 : 8 BITS COM AUTO-RELOAD. ; PRESET VALUE DO MODO 2 DO TIMER1. ; CONTADOR INICIALMENTE EM ZERO.

MOV P1, #00000000b MOV TMOD, #00100000b MOV TH1, #0FDh ; BAUD-RATE= 9600 bps MOV TL1, #0h SETB TR1 ; LIGA O TIMER1. MOV SCON, #01010000b MOV PCON, #00000000b 16

; SERIAL NO MODO 1, COM BIT REN HABILITADO. ; SMOD= 0. SEM DOBRAR A FREQUNCIA DA SERIAL.

ARQUITETURA DE COMPUTADORES
MOV IP, #00010000b MOV IE, #10010000b MAINLOOP: NOP SJMP MAINLOOP SERIALISR: NOP MOV P1, SBUF CLR RI RETI END ; MOVE O VALOR DO BUFFER SERIAL PARA O PORT P1. ; RESSETA O FLAG DA INTERRUPO DA SERIAL. ; RETORNO DA INTERRUPO. ; FIM DO PROGRAMA. ; LAO INFINITO. ; ROTINA DE TRATAMENTO DA INTERRUPO SERIAL. ; INTERRUPO SERIAL COM ALTA PRIORIDADE. ; INTERRUPO SERIAL HABILITADA. COM EA= 1. ; LAO PRINCIPAL DO PROGRAMA.

A seguir, outro exemplo de programao em assembly: um trecho de cdigo para um microcontrolador da famlia HC908Q da Freescale: (Repare o que escrito direita do ponto e vrgula so comentrios que servem apenas para o programador ter mais facilidade para entender o programa durante a edio do cdigo, e no faz parte do cdigo em linguagem de mquina gerado posteriormente). SHOWDISPLAY: MOV ,X+, DIGITO DIGITO, INCREMENTANDO X EM SEGUIDA. STX XBKP REGISTRADOR SER ALTERADO. LDA #DISPLAY DOS DGITOS PARA DISPLAY. ADD DIGITO NDICE. TAX REGISTRADOR APONTADOR, X. ; MOVE O VALOR APONTADO POR X PARA A VARIVEL ; SALVA O CONTEDO DE X EM XBKP, POIS ESSE ; CARREGA O ENDEREO INICIAL DO VETOR DE CDIGO ; ADICIONA O VALOR DO DGITO, QUE FUNCIONA COMO ; MOVE O RESULTADO, NO ACUMULADOR, PARA O

17

Unidade I
MOV ,X+, PTB ; MOVE O CONTEDO DO ENDEREO APONTADO POR X PARA O PORT PTB, EXIBINDO O DGITO NO DISPLAY. RTS ; RETORNO DA SUB-ROTINA. TRATA_TIM: TIM ). LDA CONTADOR REGISTRADOR ACUMULADOR. BEQ PROSSEGUIR A ZERO. DEC CONTADOR BCLR 7, TSC RTI PROSSEGUIR: BCLR 7, TSC LDA #$01 EOR PTA BIT 0. STA PTA LED. LDA TEMPO1 CMP #2 BHI NAO_APAGAR CLR PTB DGITO SEGUINTE. NAO_APAGAR: DBNZ TEMPO1, NO_CHANGE SE DIFERENTE DE ZERO. MOV #6, TEMPO1 18 ; ROTINA DE TRATAMENTO DA INTERRUPO DO TIMER ( ; CARREGA O CONTEDO DA VARIVEL CONTADOR NO ; DESVIA PARA PROSSEGUIR, CASO O VALOR SEJA IGUAL ; SENO, DECREMENTA O CONTADOR. ; RESSETA O FLAG DA INTERRUPO. T0F= 0. ; RETORNA DA ROTINA DE INTERRUPO.

; RESSETA O FLAG DA INTERRUPO. TOF= 0. ; CARREGA A MSCARA 00000001 NO ACUMULADOR. ; REALIZA UMA OPERAO XOR, QUE INVERTE APENAS O ; CARREGA O RESULTADO NO PTA, PARA COMUTAR O ; CARREGA O CONTEDO DE TEMPO1 NO ACUMULADOR. ; COMPARA O VALOR COM 2. ; SE MAIOR QUE 2, DESVIA PARA NAO_APAGAR. ; APAGA O DISPLAY, TEMPORARIAMENTE, ANTES DO

; DECREMENTA TEMPO1, DESVIANDO PARA NO_CHANGE ; REINICIA TEMPO1.

ARQUITETURA DE COMPUTADORES
Para exemplicar como a linguagem assembly muda de acordo com a arquitetura do processador, segue outro trecho de cdigo escrito em assembly. Dessa vez, para um microcontrolador da famlia PIC16: RST CODE 0x0000 ; VETOR DE RESET GOTO STARTUP ISR CODE 0x00004 ; DESVIA PARA O CDIGO DE INICIALIZAO. ; VETOR DE INTERRUPO. ; SALVA A IMAGEM DOS REGISTRADORES

MOVWF W_TEMP PRINCIPAIS. SWAPF STATUS, W BCF STATUS, RP0 MOVWF STATUS_TEMP

BTFSS INTCON, T0IF ; TESTA SE A INTERRUPO FOI GERADA PELO TIMER0. GOTO RESTORE_REGS ; BCF INTCON, T0IF ; RESSETA BIT QUE SINALIZA A INTERRUPO. ; INCREMENTA O CONTADOR DE ATRASO. ; APS 3 ITERAES VOLTA. ; ENQUANTO DELAY_COUNT != 3, RETORNA DA ; RESSETA O CONTADOR DELAY_COUNT. ; INCREMENTA O CONTADOR. ( CONTADOR= ; SE CONTADOR == 100, CONTADOR= 0.

INCF DELAY_COUNT, F MOVLW D3 SUBWF DELAY_COUNT, W BNZ RESTORE_REGS INTERRUPO. CLRF DELAY_COUNT

INCF CONTADOR, F CONTADOR + 1.) MOVLW D100 SUBWF CONTADOR, W BNC RESTORE_REGS CLRF CONTADOR RESTORE_REGS SWAPF STATUS_TEMP, MOVWF STATUS W

; RESTAURA OS REGISTRADORES WREG E STATUS.

19

Unidade I
SWAPF W_TEMP, SWAPF W_TEMP, F W

RETFIE ; RETORNA DA INTERRUPO. STARTUP CODE STARTUP BANK1 MOVLW B00000111 MOVWF OPTION_REG CLRF BANK0 CLRF DELAY_COUNT ; INICIALIZA DELAY_COUNT ZERADO. ; HABILITA A CHAVE GERAL DE INTERRUPES E A INT. ; DO TIMER0. ; RESSETA O CONTADOR. TRISB ; TIMER0 COM PRESCALER 1:128. ; TODOS OS PINOS DO PORTB FUNCIONAM COMO SADAS. ; CDIGO DE INICIALIZAO.

MOVLW B10100000 MOVWF INTCON CLRF CONTADOR

MOVLW D10 ; DIVISOR= 10. MOVWF DIVISOR CLRF MAINLOOP MOVF CONTADOR, MOVWF DIVIDENDO CALL W ; DIVIDENDO= CONTADOR. ; CHAMA A ROTINA DE DIVISO. ; CARREGA EM WREG QUOCIENTE COM OS NIBBLES TROCADOS. ; ATRIBUI RESTO AO NIBBLE MENOS SIGNIFICATIVO. ; CONTEDO NA SADA DO PORTB. ; PERMANECE NO LAO MAINLOOP. PORTB ; RESSETA O PORTB.

DIVISAO

SWAPF QUOCIENTE, W IORWF RESTO, W MOVWF PORTB GOTO MAINLOOP ; FIM DO PROGRAMA.

END 20

ARQUITETURA DE COMPUTADORES
Naturalmente, bem mais fcil programar em assembly do que diretamente em cdigo de linguagem de mquina (os primeiros computadores eram programados em linguagem de mquina binria). Entretanto, mais fcil programar em linguagens de mdio e alto nvel, tais como as linguagens descendentes de Basic, C e Pascal. Essas linguagens esto estruturadas de uma forma mais prxima da descrio de um algoritmo e mais distantes da linguagem da mquina. fcil perceber que, quanto mais alto o nvel da linguagem mais fcil o aprendizado de programao, pois a escrita e a leitura do cdigo so mais intuitivas e parecidas com a linguagem humana. Alm disso, uma linguagem de alto nvel mais genrica, podendo ser traduzida para a linguagem de mquina de diversos tipos de microprocessadores. J a linguagem de mquina (de baixo nvel) especca de uma determinada famlia de microprocessadores. BIBLIOGRAFIA MACHADO, F. B.; MAIA F. P. Arquitetura de Sistemas Operacionais. 5. ed. Rio de Janeiro: LTC, 2013. TANENBAUM, A. S. Organizao estruturada de computadores. 5. ed. So Paulo: Pearson: Prentice Hall, 2007. WEBER, R. F. Fundamentos de Arquitetura de Computadores. 4. ed. Porto Alegre: Bookman, 2012.
ORGANIZAO DE SISTEMAS COMPUTACIONAIS (PARTE 1)

Processadores: organizao da CPU, execuo de instruo, princpios de projetos para computadores modernos, paralelismo no nvel de instruo, paralelismo no nvel de processador.
Processadores

Tambm conhecido como UCP (Unidade Central de Processamento) ou CPU (Central Process Unit) na sigla em ingls, processador o crebro do computador. Sua funo executar os programas armazenados na memria principal, buscando cada uma das instrues, examinando-as e executando-as uma aps a outra. constitudo de diversas partes: a unidade de controle responsvel por buscar as instrues na memria principal e por determinar o tipo de cada instruo, isto , decodicar as instrues. A Unidade de Lgica Aritmtica (ULA) realiza um conjunto de operaes necessrias execuo das instrues. O processador possui uma pequena memria de alta velocidade, composta pelos registradores da CPU, utilizada para armazenar resultados temporrios e informaes de controle. Essa memria formada por um conjunto de registradores, cada qual com determinado tamanho e funo. O registrador mais importante o Program Counter (PC), cujo valor aponta para a prxima instruo a ser buscada na memria para ser executada. Outros registradores importantes so o Registrador de Instrues (IR Instruction Register) que armazena a instruo que est sendo executada, o Registrador de Status, que 21

Unidade I
armazena os bits (ags) referentes ao resultado da ltima operao executada (se o resultado foi zero ou negativo, por exemplo) e o Acumulador, utilizado pelos programas para armazenar os resultados das operaes processadas.
Processador (CPU) Registradores Unidade Lgica Aritmtica (ULA)

Sistema de interconexo da CPU

Unidade de controle

Figura 2- Estrutura de um Processador

Quando se diz que um processador de 8, 16, 32 ou 64 bits, por exemplo, geralmente, uma referncia ao nmero de bits armazenados nos registradores da CPU. Uma CPU de 64 bits, por exemplo, possui um registrador acumulador de 64 bits, conectado a um barramento tambm de 64 bits, sendo capaz de manipular dados com esse nmero de bits durante uma nica operao. Para ser executada pelo processador, uma instruo precisa ser dividida em uma srie de passos, denominada ciclo da busca-decodicao-execuo, a saber: busca da prxima instruo na memria e armazenamento no registrador de instrues. Programas de computador so constitudos por uma sequncia de instrues que se encontram armazenados na memria do computador. Portanto, o processador deve ser capaz de mover (buscar) instruo por instruo antes de execut-las. Cada instruo buscada armazenada no registrador de instrues (Instruction Register IR) para ser decodicada, isto , para o processador gerar os sinais de controle que implementam a execuo da operao da forma correta. atualizao do valor do program counter, de modo a apontar para a instruo seguinte. Para ser capaz de buscar instrues, o processador deve ser capaz de conhecer a localizao das instrues, ou seja, endereo de cada instruo na memria. O endereo da prxima instruo a ser buscada armazenado em um registrador especial chamado PC (Program Counter ou Contador de Programa). Esse registrador , na realidade, um ponteiro, pois contm o endereo da prxima instruo a ser buscada na memria. 22

ARQUITETURA DE COMPUTADORES
determinao do tipo de instruo que est armazenada no registrador de instrues. Conforme vimos, as instrues devem estar armazenadas no registrador de instrues (IR), para serem decodicadas. Na verdade, cada instruo composta por dois campos de bits: o Opcode (ou cdigo da operao) e o campo dos operandos. O primeiro contm o cdigo binrio que representa qual operao a instruo executa (por exemplo, uma operao aritmtica, lgica, de controle ou movimento de dados). O segundo representa a informao de entrada que ser tratada. Portanto, o Opcode decodicado por um decodicador da Unidade de Controle do processador para que a instruo correta seja executada. se a instruo precisar de uma palavra armazenada na memria, nesse passo deve ser determinado onde essa palavra est armazenada. O operando pode representar tanto o dado a ser tratado (nmero ou caractere no formato binrio), quanto um endereo de memria onde o dado a ser tratado se encontra. No segundo caso, faz-se necessria uma segunda busca memria. A diferena sobre a natureza do operando encontra-se codicada no opcode da instruo. busca da palavra, se necessrio, e armazenamento em um dos registradores. Se o operando um endereo, o dado buscado para ser armazenado em um registrador da CPU. execuo da instruo. Com todos os dados armazenados em registradores da CPU e o opcode da instruo j decodicado, a instruo est no ponto de ser executada, pois todas as informaes necessrias tornam-se disponveis ou j foram interpretadas pelo processador. Desse modo, a Unidade de Controle da CPU j pode coordenar os circuitos digitais da Unidade Lgica e Aritmtica (ULA) para os dados serem processados pelos circuitos selecionados e os resultados serem obtidos. armazenamento do resultado, Os resultados obtidos so os dados de sada da instruo executada. Resultados de operaes aritmticas e lgicas tendem a ser armazenados em registradores da CPU (geralmente no registrador acumulador). Deseja-se que tais dados resultantes sejam armazenados na memria principal, faz-se necessria a execuo de outra instruo para movimentar o dado de um registrador da CPU para a memria. retorno ao primeiro passo para iniciar a execuo da prxima instruo. 23

Unidade I
Durante a execuo, o PC incrementado (isto , seu valor aumenta), de tal modo que ele aponta para a prxima instruo do programa. Geralmente, a prxima instruo localiza-se no endereo seguinte ao da instruo anterior. Entretanto, no caso de instrues de desvio, como saltos (JUMPs, GOTOs) condicionais e incondicionais chamadas a sub-rotinas (CALL) ou retorno de sub-rotina (RETURN), o endereo da instruo seguinte no o seguinte ao da ltima instruo executada. Essas instrues alteram o valor do registrador PC, de modo que os programas no precisam seguir uma sequncia rgida de processamento, mas podem realizar decises condicionadas aos dados de entrada.
Princpios de Projeto para Computadores Modernos

Projetistas de mquinas precisam estar sempre atentos s mudanas de tecnologia que afetam as velocidades dos componentes de um computador. Dessa forma, um conjunto de princpios de projeto deve ser observado por esses projetistas. Esses princpios so: todas as instrues so diretamente executadas por hardware nenhuma delas interpretada por microinstrues. At algum tempo, a tecnologia dominante era caracterizada por uma arquitetura de muitas instrues que realizavam operaes complexas. Para tanto, utilizavam o conceito de microprogramao. Cada instruo complexa era associada a um microprograma composto por microinstrues simples. A tendncia atual segue a direo oposta, isto , processadores compostos por um nmero reduzido de instrues elementares, que so decodicadas e executadas diretamente pelo hardware (nvel lgico digital). Assim, os programas tendem a ser compostos por um nmero maior de instrues mais elementares do que um nmero menor de instrues mais complexas. Entretanto, instrues elementares so executadas individualmente em um tempo bem menor, principalmente ao se usar tcnicas de paralelismo, tais como pipelining. maximizar a taxa qual as instrues so executadas o paralelismo pode representar um papel muito importante na melhora do desempenho. Uma vantagem associada a instrues mais elementares um formato mais parecido, com um tempo de execuo mais parecido e estgios mais parecidos. Essa caracterstica propicia o uso da tecnologia conhecida como pipelining. as instrues precisam ser facilmente decodicadas o processo de decodicao que determina os recursos usados na execuo das instrues. Instrues mais simples (elementares) e em menor nmero levam a um processo de decodicao mais simples somente as instrues de load e store devem referenciar a memria estabelecer que os operandos para a maioria das instrues venham de e retornem para registradores. 24

ARQUITETURA DE COMPUTADORES
Os registradores da CPU ocupam o topo da hierarquia como a memria mais rpida presente em qualquer sistema computacional. Naturalmente, o desempenho maior se os dados a serem processados estiverem nos registradores na maior parte do tempo. projetar uma mquina com muitos registradores como o acesso memria relativamente lento, h necessidade de se ter vrios registradores disposio. Os princpios descritos acima esto associados tecnologia RISC (computadores com um conjunto reduzido de instrues), que so um contraponto tecnologia CISC (computadores com um conjunto complexo de instrues). Uma das maneiras de melhorar o desempenho das mquinas aumentar a velocidade do clock, porm existem limites tecnolgicos para isso. Dessa forma, os projetistas focam no paralelismo como forma de obter melhor desempenho para uma mesma velocidade de clock. No nvel de instrues, o paralelismo explorado dentro das instrues individuais, de modo a conseguir que a mquina execute mais instrues por segundo. No nvel de processador, vrios processadores trabalham junto na soluo do mesmo problema. Alm disso, de nada adiantaria simplesmente aumentar a frequncia do clock se h problemas com o superaquecimento, ou existir um tempo mnimo que um sinal eltrico leva para ser propagar. Aumentando a capacidade de integrao, conforme a evoluo da microeletrnica, permite diminuir as dimenses dos componentes e o tempo de propagao dos sinais, mas existe um limite para isso. Transistores no podem ter dimenses menores do que as de um tomo. Portanto, um bom projeto em nvel de arquitetura e organizao fundamental na melhora da performance do sistema.
Paralelismo

Uma forma de melhorar o desempenho por meio de tecnologias de paralelismo, o que signica um sistema com diversos componentes trabalhando simultaneamente. Por exemplo, se um processo qualquer for constitudo de duas etapas, o efeito de elas serem executadas simultaneamente praticamente o mesmo de essas duas etapas serem executadas sequencialmente com o dobro da velocidade. Existem essencialmente dois tipos de paralelismo em sistemas computacionais, paralelismo em nvel de instruo e em nvel de processador: Paralelismo no Nvel de Instruo: Nesse caso temos um nico processador (CPU) e o paralelismo explorado em cada instruo individualmente. Uma instruo , geralmente, composta por diversos estgios, que utilizam circuitos independentes, podendo, portanto, funcionar simultaneamente. Dois exemplos de tecnologias que fazem uso do paralelismo em nvel de instruo so a tcnica de pipelining e de processadores superescalares. 25

Unidade I
Usando a tecnologia pipeline, a arquitetura do processador tira proveito do fato de a maioria das instrues serem compostas por diversos estgios comuns. Por exemplo, toda instruo precisa ser buscada na memria (onde se encontra o programa que a contm); depois ser decodicada (nesse estgio, o processador l o cdigo da instruo para denir qual operao ser executada); algumas instrues requerem a busca de um operando na memria (dado de entrada da operao) e, por m, a execuo da operao e a gravao do resultado. Esses estgios so, muitas vezes, denominados em ingls como:

Instruction Fetch (IF) busca da instruo. Instruction Decode (ID) decodicao do opcode da instruo. Operand Fetch (OF) busca do operando (na memria ou em um registrador). Execution (E) execuo da operao. Write Back (WB) gravao do resultado.
Vamos, primeiramente, observar na gura abaixo como o processamento de um programa composto por instrues com esses 5 estgios em um processador que no faz uso da tecnologia pipeline.
Sem Pipeline Instr. 1 Instr. 2 Instrues ciclos de clock Busca instruo Decodica Busca operando Executa a operao Armazena resultado Busca instruo Decodica Busca operando

tempo

Agora, repare como o processamento fazendo uso de uma pipeline de instrues. A busca da segunda instruo ocorreu logo aps a busca da primeira instruo terminar. Enquanto a instruo 1 decodicada, a instruo 2 buscada. Temos sempre uma nova instruo sendo buscada a cada ciclo mquina (ou seja, ao m de cada estgio). Efetivamente, a taxa de emisso de novas instrues foi multiplicada por 5, que o nmero de estgios de cada instruo. Podemos tambm perceber que, aps o 5 ciclo de mquina, temos 5 estgios sendo processados simultaneamente, cada um proveniente de uma instruo diferente. A velocidade do processamento (quase) multiplicada por 5.

26

ARQUITETURA DE COMPUTADORES
Pipeline de instrues Instr. 1 Instr. 2 Instr. 3 Instr. 4 Instr. 5 Instr. 6 Instr. 7 ciclos de clock Instrues Busca instruo Decodica Busca instruo Busca operando Decodica Busca instruo Executa a operao Busca operando Decodica Busca instruo Armazena resultado Executa a operao Busca operando Decodica Busca instruo

Armazena resultado Executa a operao Busca operando Decodica Busca instruo

Armazena resultado Executa a operao Busca operando Decodica Busca instruo

Armazena resultado Executa a operao Busca operando Decodica

tempo

Naturalmente, o tempo de cada instruo individualmente permanece o mesmo, utilizando ou no uma pipeline de instrues. S que a taxa de emisso de instrues aumentou e temos um processamento paralelo de estgios diferentes de instrues diferentes, o que leva a um aproveitamento maior do tempo (que em um sistema computacional digital determinado pelos ciclos de clock). A losoa pipeline a mesma de uma linha de montagem industrial, onde o processo de fabricao de um produto dividido em diversos estgios ou etapas. Essas etapas so realizadas todas simultaneamente durante o processo, embora um produto possa estar no incio da linha de montagem (passando pelos primeiros estgios), ou no nal dela (passando pelos ltimos estgios).
Processador superescalar ULA ULA LOAD STORE Ponto utuante Unidades de execuo

S1 Unidade de busca de instruo

S2 Unidade de decodicao de instruo

S3 Unidade de busca do operando

S5 Unidade de gravao de clculo

Paralelismo no nvel do processador: nesse caso, temos mais de uma CPU, ou ncleo (core). 27

Unidade I
BIBLIOGRAFIA NULL, L.; LOBUR J. Princpios Bsicos de Arquitetura e Organizao de Computadores. 2. ed. Porto Alegre, Bookman, 2010. TANENBAUM, A. S. Organizao estruturada de computadores. 5. ed. So Paulo: Pearson: Prentice Hall, 2007. WEBER, R. F. Fundamentos de Arquitetura de Computadores. 4. ed. Porto Alegre: Bookman, 2012.
ORGANIZAO DE SISTEMAS COMPUTACIONAIS (PARTE 2)

Memria primria: endereos, ordenao dos bytes, cdigos de correo de erros. Memria secundria.
Organizao da Memria Primria

A memria a parte do computador na qual os programas e os dados so armazenados. A memria formada por um conjunto de clulas que podem guardar informaes. Cada clula tem um nmero associado a ela, conhecido como endereo da clula, por meio do qual os programas podem referenciar a clula. Para acessar um dado (seja para leitura ou escrita), o endereo deve ser enviado do processador para a memria. Atravs do endereo, o dado localizado e selecionado para uma transferncia. S possvel ler um dado, ou escrever um dado na memria, se o seu endereo houver sido informado antes, porque o endereo que seleciona uma nica clula na memria. A clula a menor unidade enderevel de um computador. Nos ltimos anos, quase todos os fabricantes de computadores padronizaram o tamanho da clula em 8 bits, chamando essa clula de byte. Os bytes so agrupados em palavras. O computador com palavra de 32 bits tem 4 bytes/palavra, enquanto um computador com palavra de 64 bits tem 8 bytes/palavra. A maioria das instrues de uma mquina opera sobre a palavra que a CPU pode processar. Quando dizemos que um processador de 64 ou 32 bits, estamos dizendo que esse o tamanho da palavra do processador. Geralmente, a palavra do processador igual ao nmero de bits dos seus registradores e ao nmero de vias dos seus barramentos internos. Palavras compostas por mais de um byte so denominadas da seguinte forma: Byte: 8 bits Word: 16 bits ou 2 bytes. Dword: (double word) 32 bits ou 4 bytes. Qword: (quad word) 64 bits ou 8 bytes. 28

ARQUITETURA DE COMPUTADORES
Temos 3 tipos de sinais nas vias de barramentos que conectam o processador memria: vias de dados vias de endereo vias de controle As vias de dados movimentam os dados que importam. Os dados que so provenientes da memria (em caso de uma operao de leitura), ou que so provenientes do processador para a memria (em caso de operao de escrita). As vias de endereo enviam sinais digitais do processador para a memria, j que o processador que seleciona o endereo a ser acessado. Durante a execuo de uma instruo de um programa, o endereo pode, por exemplo, estar contido no cdigo da instruo, ou ser calculado durante a execuo do programa. As vias de controle enviam sinais do processador para a memria ou vice-versa. Denem, por exemplo, se o processo a ser executado ser uma leitura ou uma escrita na memria. Tambm podem informar se a memria (ou outro dispositivo) est pronta ou no para iniciar uma comunicao com o processador.
Ordenao de Bytes

Os bytes de uma palavra podem ser numerados da esquerda para a direita ou da direita para a esquerda. A escolha acarreta implicaes muito srias e importantes. Melhor dizendo, a memria de um computador pode estar organizada de tal maneira que cada palavra pode ser armazenada com o byte mais signicativo no endereo mais alto ou no endereo mais baixo. O primeiro caso denominado little endian e o segundo, big endian. A gura 1 mostra parte de uma memria de um computador de 32 bits cujos bytes so numerados da esquerda para a direita. A g. 2 mostra a representao da memria de um computador de 32 bits cujos bytes de uma palavra so numerados da direita para a esquerda. O computador da g. 1 chamado big endian, enquanto que o computador da g. 2 denominado little endian.
Endereo 0 4 8 12 0 4 8 12 Big endian 1 5 9 13 2 6 10 14 3 7 11 15 Byte Palavra de 32 bits Fig. 1 Palavra de 32 bits Fig. 2 3 7 11 15 Little endian 2 6 10 14 1 5 9 13 0 4 8 12 Endereo 0 4 8 12 Byte

29

Unidade I
Cdigos de Correo de Erros

Os dados armazenados na memria dos computadores podem ocasionalmente ser alterados em razo de oscilaes na tenso de alimentao ou outras causas. Para se prevenir contra esses tipos de erro, algumas memrias armazenam informaes usando um cdigo que permita a correo ou a deteco de erros. Quando esses cdigos so usados, necessrio acrescentar bits extras a cada palavra de memria, de modo a permitir a vericao da exatido da palavra armazenada. Quando uma palavra lida da memria, os bits armazenados permitem vericar a ocorrncia eventual de erros que tenham corrompido a informao armazenada. Acrescentar bits extras informao aumentar a redundncia da informao. A informao redundante deve ser uma funo da informao til, de tal maneira que em caso de algum bit ser corrompido, a relao funcional deixa de existir e um erro detectado. Uma forma de se detectar erros por meio de um bit de paridade adicional. Essa tcnica consiste em inserir um bit com valor tal que o nmero de bits com valor 1 na sequncia seja sempre par (ou mpar). Dessa forma, a mudana de um bit provocada por erro de transmisso leva a uma alterao na paridade: O nmero de 1s na sequncia passa a ser mpar quando deveria ser par, por exemplo. Essa forma de deteco de erros foi muito utilizada na transmisso serial via protocolo RS-232, utilizado em impressoras antes da tecnologia USB. Por outro lado, uma forma de se detectar e corrigir o erro provocado pela inverso de um bit o Cdigo de Hamming. No cdigo de Hamming, para 4 bits de informao til, por exemplo, outros 3 bits de redundncia so inseridos na sequncia. O algoritmo de correo de Hamming pode ser melhor compreendido por meio de uma representao por conjuntos. Os 4 bits centrais da gura abaixo constituem a informao til. Os 3 bits externos correspondem aos bits de redundncia, cujo valor determinado de tal maneira que o nmero de bits de valor 1 em cada crculo seja sempre par. Por exemplo, se temos os seguintes 4 bits com informao til:

30

ARQUITETURA DE COMPUTADORES

1 1 1 0

Ento, os 3 bits do cdigo de correo de erro devem ser preenchidos da seguinte maneira:

1 1 1 0

Exemplo: No cdigo de Hamming descrito abaixo, descubra qual o bit com erro e o corrija:

1 0 1 1

Resoluo: Podemos perceber na gura acima que o nico crculo com nmero mpar de bits de valor 1 o da esquerda. Portanto, o bit com erro exclusivo desse crculo. Abaixo, esse bit corrigido.

31

Unidade I

1 0 1 1

Outro exemplo: corrija o bit com erro no cdigo de Hamming a seguir:

0 1 1 1

Resoluo: O crculo superior esquerdo possui paridade par, portanto, nenhum bit pertencente a ele possui erro. Os outros dois crculos possuem paridade mpar, portanto, o erro est em um bit na interseco desses dois crculos, mas que no pertence ao crculo da esquerda, cuja paridade est correta.

0 1 1 1

32

ARQUITETURA DE COMPUTADORES
BIBLIOGRAFIA TANENBAUM, A. S. Organizao estruturada de computadores. 5. ed. So Paulo: Pearson: Prentice Hall, 2007. WEBER, R. F. Fundamentos de Arquitetura de Computadores. 4. ed. Porto Alegre: Bookman, 2012

33

Das könnte Ihnen auch gefallen