• Nenhum resultado encontrado

ARQUITETURA DE PROCESSAMENTO

N/A
N/A
Protected

Academic year: 2021

Share "ARQUITETURA DE PROCESSAMENTO"

Copied!
16
0
0

Texto

(1)

UTFPR – Cornélio Procópio 1

ARQUITETURA DE PROCESSAMENTO

Os subsistemas digitais codificadores, decodificadores, multiplexadores, demultiplexadores, registradores e contadores, possibilitam a criação de um sistema digital mais complexo de processamento de dados. Este sistema é automatizado, possibilitando o armazenamento de informações de comando (instruções) para o processamento de informações gerais (dados). As informações de comando e gerais são todas dispostas na forma binária, i.e., na forma digital.

A arquitetura básica de um circuito para processamento de dados ainda segue de forma geral os conceitos estabelecidos por John Von Neumann (Professor da Universidade de Princeton, um dos construtores do EDVAC, 1903-1957), denominada arquitetura de Von Neumann, com as seguintes características:

1. Codificação de instruções que possam ser armazenadas em uma memória (codificação em cadeias de uns e zeros - código binário);

2. armazenamento na memória das instruções e de todas as informações necessárias para a execução de uma determinada tarefa;

3. busca das instruções diretamente na memória no processamento do programa. A Unidade Central de Processamento - UCP (em inglês, Central Processing Unity

- CPU) é o sistema digital responsável pelo processamento e execução dos

instruções, armazenadas em uma memória semicondutora (memória principal). As funções da UCP são: executar as instruções e controlar as operações do sistema de processamento. A UCP é composta de duas partes:

UAL - Unidade Aritmética e Lógica - tem por função a efetiva execução das

instruções;

UC - Unidade de Controle - tem por funções a busca, interpretação e controle

de execução das instruções, e o controle dos demais componentes do computador;

(2)

UTFPR – Cornélio Procópio 2

A seguir é apresentado o diagrama esquemático de uma UCP.

Registradores Importantes em uma UCP:

Na UC - CI Contador de Instruções (em inglês: PC - Program Counter) -

armazena o endereço da próxima instrução a ser executada - tem sempre o mesmo tamanho do REM – Registrador de Endereços.

Na UC - RI Registrador de Instrução (em inglês: IR - Instruction Register) -

(3)

UTFPR – Cornélio Procópio 3

Na UAL - ACC Acumulador (em inglês:ACC - Accumulator) - armazena os

dados (de entrada e resultados) para as operações na UAL; o acumulador é um dos principais elementos que definem o tamanho da palavra do computador - o

tamanho da palavra é igual ao tamanho do acumulador. Instruções

Um ser humano usa seu conhecimento e inteligência para traduzir uma tarefa complexa (tal como, por exemplo, a tarefa de buscar uma pasta num arquivo) numa série de passos elementares (identificar o local do arquivo, fazer o caminho até o arquivo, identificar o arquivo e retirá-lo do seu local). Para o computador, uma instrução precisa ser detalhada, dividida em pequenas etapas de operações, que são dependentes do conjunto de instruções do computador e individualmente executáveis. Todos os programas para uma determinada UCP, independente da linguagem de programação utilizada, são transformados na linguagem de máquina da UCP. As linguagens de máquina são denominadas de linguagens de baixo nível, observando que o termo utilizado “nível” não tem relação com o nível de qualidade da linguagem utilizada, mas sim, em relação ao nível de interação da linguagem com a UCP. As linguagens de mais alto nível utilizam instruções para executarem tarefas mais complexas. Estas instruções, na realidade, equivalem a uma série de instruções em linguagem de máquina e existe a necessidade de se utilizar um programa tradutor (ou compilador) para traduzir esta instrução de alto nível para uma série de instruções em linguagem de máquina. Ou seja, o programa elaborado pelo programador (o código-fonte, composto de instruções complexas) precisa ser "traduzido" em pequenas operações elementares (primitivas) executáveis pelo hardware. Cada uma das instruções tem um código binário associado, que é o código da operação.

Para que um programa possa ser executado por um computador, ele precisa ser constituído por esta série de instruções e estar armazenado em células sucessivas na memória principal. A UCP é responsável pela execução das instruções que estão na memória. Quem executa um programa é o hardware e o que ele espera encontrar é um programa na forma de linguagem de máquina (uma sequência de instruções de máquina em código binário). A linguagem de máquina utiliza um código na forma de bits, representando instruções, endereços e dados. Cada UCP possui um número fixo de instruções ou um conjunto ("set") de instruções da máquina.

Formato geral de uma Instrução em Linguagem de Máquina para o microprocessador 8080:

(4)

UTFPR – Cornélio Procópio 4 Código de Operação ou OPCODE - identifica a operação a ser realizada pelo

processador. É o campo da instrução cuja valor binário identifica (é o código binário) da operação a ser realizada. Este código é a entrada no decodificador de instruções da unidade de controle. Cada instrução deverá ter um código único que a identifique.

Operando(s) - é ou são o(s) campo(s) da instrução cujo valor binário sinaliza a

localização do dado (ou é o próprio dado) que será manipulado (processado) pela instrução durante a operação. Em geral, um operando identifica o endereço de memória onde está contido o dado que será manipulado, ou pode conter o endereço onde o resultado da operação será armazenado. Finalmente, um operando pode também indicar um Registrador (que conterá o dado propriamente dito ou um endereço de memória onde está armazenado o dado). Os operandos fornecem os dados da instrução. Obs: Existem instruções que não tem operando. Ex.: Instrução HALT (PARE).

Conjunto de Instruções

Quando se projeta um hardware, define-se o seu conjunto ("set") de instruções - o conjunto de instruções elementares que o hardware é capaz de executar. O projeto de um processador é centrado no seu conjunto ("set") de instruções. Funcionalmente, um processador precisa possuir instruções para:

 operações matemáticas

- aritméticas: +, - , × , ÷ ... - lógicas: and, or, xor, ... - de complemento;

- de deslocamento;

 operações de movimentação de dados (memória <--> UCP, reg <--> reg)

 operações de entrada e saida (leitura e escrita em dispositivos de E/S)

 operações de controle (desvio de seqüência de execução, parada)

As estratégias de implementação de processadores são:

- CISC - Complex Instruction Set Computer - exemplo: PC, Macintosh; um conjunto de instruções maior e mais complexo, implicando num processador mais complexo, com ciclo de processamento mais lento; ou

- RISC - Reduced Instruction Set Computer - exemplo: Power PC, Alpha, Sparc; um conjunto de instruções menor e mais simples, implicando num processador mais simples, com ciclo de processamento rápido.

Obs.: o termo “instrução” pode se utilizado para as instruções de máquina (ou em

(5)

UTFPR – Cornélio Procópio 5

Há hoje uma crescente tendência a se utilizar um conjunto de instruções reduzido, de vez que os compiladores tendem a usar em geral apenas uma pequena quantidade de instruções. Há também vantagens na implementação do hardware - maior simplicidade, menor tempo de ciclo de instrução. No projeto de um processador, os principais itens a serem levados em conta são:

- Definir o conjunto de instruções (todas as possíveis instruções que o processador poderá executar), definir formato e tamanho das instruções e as

definir as operações elementares;

- Projetar os componentes do processador (UAL, UC, registradores, barramentos,...);

Duas estratégias são possíveis na construção do decodificador de instruções da UC: . wired logic: as instruções são todas implementadas em circuito ou em hardware; . microcódigo: apenas um grupo básico de instruções são implementadas em circuitos; as demais são "montadas" através de microprogramas que usam as instruções básicas.

Ciclo de Instrução

As instruções são executadas sequencialmente (a não ser pela ocorrência de um desvio no fluxo do programa), uma a uma. O CI (Ciclo de Instrução) indica a seqüência de execução, isto é, o CI controla o fluxo de execução das instruções. A seguir é ilustrado o ciclo de processamento de uma instrução.

(6)

UTFPR – Cornélio Procópio 6

Descrição do processamento de uma instrução na UCP: - a UC lê o endereço da próxima instrução no CI;

- a UC transfere o endereço da próxima instrução, através do barramento interno, para o REM;

Como exemplo, é descrita a seguir a arquitetura computacional do microprocessador do PIC16F628a, um microcontrolador de modelo básico,

projetado pela Microchip Technology (www.microchip.com). Os tipos e número dos

principais registradores utilizados, o barramento do sistema e o conjunto de instruções também são descritos. Este microcontrolador possui as seguintes características:

- chip de 18 pinos;

- somente 35 instruções no seu microcódigo; - aceita sinal de clock de freqüência até 20 MHz;

- memória de programa do tipo Flash de 2048 words (1 word = 16 bits); - 224 bytes de memória RAM para dados;

- 128 bytes de memória EEPROM para dados;

- instruções de 14 bits com 200ns de tempo de execução; - dados de 8 bits por endereço de memória;

- 15 registradores especiais;

- 16 pinos os quais podem ser configurados como entrada e/ou saída;

- outras características especiais como programação in-circuit serial, proteção por código, watchdog timer (temporizador cão de guarda), módulo CCP, comparador interno, USART,....

(7)

UTFPR – Cornélio Procópio 7

Os pinos de RA0 à RA7 e de RB0 à RB7 podem ser configurados como

entradas ou saídas digitais. A alimentação se dá no pino Vdd, normalmente em 5V

com faixa de tolerância de 2 à 6V e o pino Vss é a referência de terra. O pino

OSC1/CLKIN é utilizado para sinal de clock poduzido por cristal ou um circuito externo e o pino OSC2/CLKOUT para sinal de clock por cristal (utilizado em conjunto com OSC1/CLKIN). O pino MCLR é uma entrada de sinal de reset em nível baixo (zero). O PIC16F628a é composto pelos subsistemas digitais conforme diagrama de blocos abaixo:

(8)

UTFPR – Cornélio Procópio 8 Arquitetura Harvard

O PIC16F628a possui uma arquitetura denominada Harvard para acesso aos dados e às instruções do programa, a qual é caracterizada por utilizar um bus (via de acesso) para comunicação dos dados e outro bus distinto para comunicação com o programa. A maioria dos microcomputadores e microcontroladores no mercado utilizam um único bus, tanto para dados quanto para instruções do programa. Nota-se a diferença no uso desta arquitetura na visualização da memória do microcontrolador PIC: existe uma memória para o programa e outra para os dados a serem utilizados. A figura a seguir mostra a memória RAM de um microcomputador PC, em comparação à arquitetura do PIC, em que dados e instruções do programa estão na mesma memória, denominada memória principal (geralmente a RAM do computador). As letras abaixo, nas últimas linhas, mostram valores dos registradores especiais que o processador do computador utiliza, como o DS (Data

Segment), que indica o endereço inicial dos dados na memória; e o CS (Code Segment), que indica o endereço inicial da memória no qual as instruções do

programa corrente se iniciam.

A figura abaixo mostra o software MPLab IDE com as janelas de visualização da memória Flash que contém o programa (janela à esquerda) e da memória RAM a qual contém os dados e registradores especiais (janela à direita) do PIC16F628a. Este tipo de arquitetura permite uma velocidade maior no cesso ao programa e aos dados, porém são necessários dois barramentos.

(9)

UTFPR – Cornélio Procópio 9 Instruções RISC

Na tabela abaixo observa-se o conjunto de instruções do PIC16F628a, e anotações sobre cada instrução. O número de instruções é limitado, sendo denominado arquitetura RISC - Reduced Instruction Set (Grupo Reduzido de Instruções). O número de instruções é pequeno, porém cada uma é formada por 14

bits, que codificam uma operação e os operandos, ou os dados sujeitos à respectiva

operação. A tabela abaixo mostra o microcódigo, com a instrução assembly (mnemônicos) na primeira coluna, os operandos possíveis para a respectiva instrução, sua descrição os bits do registrador de status que são afetados, o número de ciclos do clock que a instrução exige para ser executada e o código em linguagem de máquina.

MNEMÔNICOS OPERANDOS DESCRIÇÃO CICLOS

DO CLOCK

OPCODE DE 14 BITS

OPERAÇÕES DE REGISTRADORES ORIENTADAS A BYTE

ADDWF f, d Soma o conteúdo do

registrador “W” e de “f”

1 00 0111 dfff ffff

ANDWF f, d Operação lógica “E” entre

o conteúdo de “W” e “f” 1 00 0101 dfff ffff CLRF f Limpa o conteúdo de “f” 1 00 0001 lfff ffff CLRW -f, Limpa o conteúdo do registrador “W” 1 00 0001 0xxx xxxx COMF d Complemento do 1 00 1001 dfff ffff

(10)

UTFPR – Cornélio Procópio 10

DECF f, d Decrementa o valor

armazenado em “f”

1 00 0011 dfff ffff

DECFSZ f, d Decrementa o valor

armazenado em “f”, pula a próxima instrução se for igual a “0”

1 (2) 00 1011 dfff ffff

INCF f, d Incrementa o valor

armazenado em “f”

1 00 1010 dfff ffff

INCFSZ f, d Incrementa o valor

armazenado em “f”, pula a próxima instrução se for igual a “0”

1 (2) 00 1111 dfff ffff

IORWF f, d Operação lógica “OU

INCLUSIVO” do conteúdo do registrador “W” com o conteúdo de “f”

1 00 0100 dfff ffff

MOVF f, d Move o conteúdo de “f”

para o registrador “W”

1 00 1000 dfff ffff

MOVWF f Move o conteúdo do

registrador “W” para “f”

1 00 0000 lfff ffff

NOP -f, Sem operação 1 00 0000 0xx0 0000

RLF d Rotaciona os bits

armazenados em “f” para a esquerda com Carry

1 00 1101 dfff ffff

RRF f, d Rotaciona os bits

armazenados em “f” para a direita com Carry

1 00 1100 dfff ffff

SUBWF f, d Subtração do conteúdo

em “W” de “f”

1 00 0010 dfff ffff

SWAPF f, d Troca o primeiro nibble (4

bits) com o último nibble armazenados em “f”

1 00 1110 dfff ffff

XORWF f, d Operação lógica “OU

EXCLUSIVO” do

conteúdo de “W” com o conteúdo de “f”

1 00 0110 dfff ffff

OPERAÇÕES DE REGISTRADORES ORIENTADAS A BIT

BCF f, b Muda para “0” o valor do

bit “b” de “f”

1 01 00bb bfff ffff

(11)

UTFPR – Cornélio Procópio 11

bit “b” de “f”

BTFSC f, b Verifica o valor do bit “b”

do registrador “f” e pula a próxima instrução se for igual a “0”

1 (2) 01 10bb bfff ffff

BTFSS f, b Verifica o valor do bit “b”

do registrador “f” e pula a próxima instrução se for igual a “1”

1 (2) 01 11bb bfff ffff

OPERAÇÕES DE CONTROLE E LITERAIS

ADDLW k Adiciona um número “k”

ao conteúdo do

registrador “W”

1 11 111x kkkk kkkk

ANDLW k Operação lógica “E” de

um número “k” com “W”

1 11 1001 kkkk kkkk

CALL k Chamada de uma

subrotina indicada por “k”

2 10 0kkk kkkk kkkk

CLRWDT Limpa o temporizador cão

de guarda

1 00 0000 0110 0100

GOTO k Vai ao endereço dado por

“k” 2 10 1kkk kkkk kkkk IORLW k Operação OU INCLUSIVO de um número “k” com “W” 1 11 1000 kkkk kkkk

MOVLW k Move um número de valor

“k” para “W”

1 11 00xx kkkk kkkk

RETFIE Retorno de uma

interrupção

2 00 0000 0000 1001

RETLW k Retorna com um valor “k”

no registrador “W”

2 11 01xx kkkk kkkk

RETURN Retorno de uma subrotina

ao programa principal

2 00 0000 0000 1000

SLEEP Entra no modo standby 1 00 0000 0110 0011

SUBLW k Subtrai o conteúdo do

registrador “W” de um número “k”

1 11 110x kkkk kkkk

XORLW k Operação lógica “OU

EXCLUSIVO” de um

número “k” com o

conteúdo do registrador “W”

(12)

UTFPR – Cornélio Procópio 12

Obs.: Nos operandos, as letras f, d, b, k indicam:

- f: registrador na memória RAM, como o PORTA, TRISB, STATUS, ou uma posição qualquer;

- d: direção para a qual pode se designada a função;

- b: o número de um bit dentro de um registrador. Para o PIC16F628a, são de 0 a 8, porque os registradores possuem 8 bits;

- k: um literal, que envolve letras (ASCII), números no formato decimal, hexadecimal ou binário, até o limite especificado pelo tamanho do registrador.

“Ports” de entrada e saída

Os microcontroladores da linha PIC possuem pinos que podem ser configurados como entrada ou saída digital. Cada conjunto de oito destes pinos é denominado Port, geralmente classificado por uma letra do alfabeto (PortA, PortB, PortC,....)

“Ports” de entrada e saída

Os microcontroladores da linha PIC possuem pinos que podem ser configurados como entrada ou saída digital. Cada conjunto de oito destes pinos é denominado Port, geralmente classificado por uma letra do alfabeto (PortA, PortB, PortC,....). Para isto, existem implementados na memória RAM do PIC registradores especiais para configurar e ler/modificar o valor destes pinos. No PIC16F628a, dois destes registradores, o TRISA e o TRISB, são responsáveis pela configuração destes pinos para funcionamento como entrada ou saída digital. A abreviatura TRIS para estes registradores provem de tri-state (três estados) porque alguns pinos podem funcionar de três modos diferentes: como entrada digital, saída digital ou outra função específica.

Pinos do PortA Pinos do PortA

(13)

UTFPR – Cornélio Procópio 13

Por exemplo: os pinos RB6 e RB7 do PIC16F628a podem funcionar como entrada digital, saída digital ou terminal de comunicação serial para programar e ler o programa presente na memória do PIC. Outros modelos de microcontroladores da linha PIC possuem pinos que podem funcionar como E/S digital e entrada analógica, ou porta de comunicação de dados,.... Como cada registrador em um PIC pode armazenar no máximo oito bits, os registradores TRISA e TRISB podem configurar no máximo oito pinos cada um, com o valor de cada bit nestes registradores correspondendo à configuração de um pino. O PIC16F628a possui 16 pinos de E/S digital, então o registrador TRISB é responsável pela configuração de 8 pinos (RB0 a RB7) e o registrador TRISA por mais 8 (RA0 a RA7), como demonstrado nas tabelas abaixo:

RA7 RA6 RA5 RA4 RA3 RA2 RA1 RA0

TRISA

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0

TRISB

Cada registrador acima configura um pino como entrada digital se o bit respectivo possuir valor “1”; ou saída digital, se o bit respectivo possuir o valor “0”. Os exemplos abaixo mostram os valores que devem estar presentes nos registradores TRISA eTRISB dada a respectiva configuração dos pinos:

- pinos RA0 a RA7 configurados como entradas digitais e pinos RB0 a RB7 como saídas digitais:

TRISA 1 1 1 1 1 1 1 1

TRISB 0 0 0 0 0 0 0 0

- pinos RA0, RA2, RA4 e RA6 como entradas digitais e o restante como saídas:

TRISA 0 1 0 1 0 1 0 1

TRISB 0 0 0 0 0 0 0 0

- pino RB4 como saída digital e o restante como entrada:

TRISA 1 1 1 1 1 1 1 1

TRISB 1 1 1 0 1 1 1 1

(14)

UTFPR – Cornélio Procópio 14

TRISB 1 1 0 0 0 0 0 0

- pinos de RA0 a RA7 como saídas digitais e o restante como entradas digitais:

TRISA 0 0 0 0 0 0 0 0

TRISB 1 1 1 1 1 1 1 1

- pinos RA0, RA1, RA2, RB0, RB1, RB2, RB3 e RB4 como entradas digitais e o restante como saídas:

TRISA 0 0 0 0 0 1 1 1

TRISB 0 0 0 1 1 1 1 1

A visualização do valor nos registradores pode ser feita no software MPLAB pela janela da memória RAM ou pela janela dos registradores de funções especiais, que exibe diretamente a denominação dos registradores especiais e seus valores em quatro formatos: decimal, ASCII, hexadecimal e binário. A memória RAM exibe o conteúdo dos registradores especiais localizados na mesma, pelo seu endereço, e das posições de memória restantes. Alguns registradores especiais não se localizam na memória RAM, mas estão implementados no próprio circuito da CPU

do microcontrolador PIC, como o Work Register – Registrador de Trabalho ou

registrador W. O endereços na memória RAM dos registradores TRISA e TRISB são 85H e 86H.

Geralmente o inicío da maioria dos programas para o PIC contém instruções para modificar os valores de TRISA e TRISB, ou seja, para configurar quais pinos funcionarão como entrada digital ou saída digital.

(15)

UTFPR – Cornélio Procópio 15

Além dos registradores TRISA e TRISB, existem outros registradores especiais que devem ser utlizados para configurar o funcionamento do PIC. Inicialmente, são os registradores OPTION e INTCON:

Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

OPTION /RBPU INTEDG TOCS TOSE PSA PS2 PS1 PS0

/RBPU: Pull-ups internos para os pinos do PORTB

0 = habilita pull-ups internos para os pinos de RB0 a RB7 configurados como saída

digital;

1 = pull-ups internos desabilitados.

INTEDG: Configura a borda (mudança) que gera a interrupção externa no pino RB0

0 = interrupção ocorre na borda de descida (mudança de "1" para "0"); 1 = interrupção ocorre na borda de subida (mudança de "0" para "1").

(16)

UTFPR – Cornélio Procópio 16

0 = TMR0 incrementado internamente pelo sinal de clock do PIC; 1 = TMR0 incrementado pela mudança do sinal no pino RA4/T0CKI.

T0SE: Configuração da borda quando o TMR0 for incrementado pelo sinal

no pino RA4

(quando T0CS = 1)

0 = incremento na borda de descida (mudança de "1" para "0") no pino RA4;

1 = incremento na borda de subida (mudança de "0" para "1") no pino RA4.

PSA: Aplicação do prescaler

0 = prescaler aplicado ao TMR0;

1 = prescaler aplicado ao WDT (watchdog timer).

PS2, PS1 e PS0: Configuração do prescaler: PS2 PS1 PS0 TMR0 WDT 0 0 0 1:2 1:1 0 0 1 1:4 1:2 0 1 0 1:8 1:4 0 1 1 1:16 1:8 1 0 0 1:32 1:16 1 0 1 1:64 1:32 1 1 0 1:128 1:64 1 1 1 1:256 1:128

Referências

Documentos relacionados

A manutenção do peso corporal de cabras lactantes está diretamente relacionada com o aumento do nível de concentrado em misturas completas, em função da maior ingestão de energia

uma forma eficiente de realizar a interseção entre duas esferas e duas cascas esféricas no R 3 , desejamos investigar o efeito de acrescentarmos mais uma casca esférica extra

Após, consegui contrato pelo estado e fui trabalhar em São Vendelino, em um grupo escolar com um quinto ano, tendo 36 alunos, sendo que dois alunos eram mais

Consulte a Secção 11 para obter informações pormenorizadas sobre sintomas e efeitos na saúde.. Classificação conforme Regulamentação (EC) 1272/2008 [CLP/GHS] SECÇÃO

Para o HIDRALERTA utilizou-se uma série de dados de agitação marítima compreendidos entre 1979 e 2014 como input para o sistema, a fim de simular a ocorrência de

ABSTRACT | Here, we present a case in which extensive bulbar conjunctival Kaposi’s sarcoma was the initial presentation of human immunodeficiency virus in a 36-year-old man..

Quando o fármaco se desloca do meio aquoso para dentro do sítio de ligação ocorre uma quebra de ligações-H com a água, desolvatação, etc...

De este modo, se hacía presente en 1988 la persistencia de una fuerte disputa hegemónica que desarticulaba y rearticulaba al punto nodal del discurso dominante, contraponiendo