Você está na página 1de 12

PROCESSADOR BIP (Basic Instruction-set Processor)

A compreenso do funcionamento da arquitetura do computador e de seu processador possui importncia central na formao dos alunos dos cursos de graduao em Cincia da Computao. Alm de fornecer os conhecimentos bsicos para possibilitar a insero do aluno no contexto da pesquisa e do desenvolvimento de hardware, essa compreenso auxilia o entendimento da necessidade e do papel do software bsico e fornece subsdios fundamentais para a aprendizagem e para a compreenso da lgica de programao. Nesse contexto, deve-se buscar uma arquitetura simplificada que permita estabelecer uma relao entre as necessidades dos alunos que esto comeando a programar e as representaes em hardware correspondentes. necessrio realizar a identificao das principais fontes de incompreenso para os estudantes de modo a prover formas de minimizar suas dificuldades. Por exemplo, podem ser citadas algumas relaes importantes entre a programao de alto nvel e a sua implementao no hardware, sob a forma de conceitos de arquitetura e organizao de computadores. Entre essas relaes, destacam-se: Declarao de varivel e alocao de memria; Constantes e operandos imediatos; Atribuio de variveis e sua correspondncia com as operaes de acesso memria; e Operaes aritmticas e sua execuo no hardware.

Nesse sentido, discusses continuadas entre professores das reas de Algoritmos e Programao e de Arquitetura de Computadores na Universidade do Vale do Itaja (UNIVALI) levaram concepo de uma arquitetura simplificada de processador tendo duas diretrizes principais de projeto: 1. Facilitar o aprendizado da arquitetura e o entendimento dos conceitos por ela ilustrados por alunos da primeira fase do curso de Cincia da Computao da ; e 2. Viabilizar e facilitar o uso da arquitetura em disciplinas mais avanadas, promovendo uma integrao interdisciplinar. Para minimizar a complexidade do processador, foi adotada uma arquitetura orientada a acumulador com caractersticas derivadas da arquitetura dos microcontroladores PIC da Microchip (2003). No entanto, algumas escolhas foram feitas no sentido de conferir uma regularidade arquitetural maior do que a desses microcontroladores, nos quais as palavras de dado e de instruo tm tamanhos diferentes e a largura do campo de cdigo de operao pode variar para as diversas

classes de instruo. Essas escolhas foram baseadas na assertiva apresentada por Patterson e Hennessy (2005) de que quanto mais regular for a arquitetura de um processador, mais fcil ser a sua implementao. Alm disso, entende-se que a regularidade tambm favorece o entendimento da arquitetura do processador. Dessa forma, foi realizada uma especificao arquitetural de uma famlia de processadores simplificados denominada BIP (Basic Instruction-set Processor) contendo trs modelos de processador, cada um com suporte incremental ao entendimento de conceitos de Algoritmos e Programao e oferecendo recursos adicionais para seu uso em outras disciplinas, em uma abordagem interdisciplinar: BIP I: inclui apenas instrues de aritmtica e de acesso memria de dados, tendo como foco o suporte ao entendimento de conceitos como nveis de linguagem, constantes, variveis, representao de dados e de instrues, conjuntos de instrues, programao em linguagem de montagem e gerao de cdigo em linguagem de mquina; BIP II: acrescenta instrues de desvio, com foco na incluso de suporte aos conceitos de estruturas de controle para desvios condicionais e incondicionais e laos de repetio; e BIP III: acrescenta instrues de lgica, focando na incluso de suporte a operaes de lgica bit-a-bit.

A seguir, apresentada a especificao da famlia BIP, identificando-se seus atributos arquiteturais e explicando o porqu de cada escolha tomada.

6.2.1 Atributos Arquiteturais da Famlia BIP


Com base nas diretrizes de projeto discutidas previamente, foram definidos os seguintes atributos para a arquitetura da Famlia BIP: 1. Palavras de instruo e de dados: Os tamanhos das palavras de instruo e de dado foram fixados em um mesmo valor (16 bits) para viabilizar implementaes baseadas em uma nica memria para o armazenamento de instrues e de dados (arquitetura de von Neumann) e em memrias separadas (arquitetura Harvard); 2. Registradores: A arquitetura prev quatro registradores: PC (Program Counter), IR (Instruction Register), STATUS e ACC, sendo que o uso de alguns desses registradores varia conforme a implementao do processador. Por exemplo, numa implementao monociclo com arquitetura Harvard o PC aponta para a instruo corrente e o IR no necessrio, pois a sada da memria de instrues mantm a instruo a ser executada durante todo o ciclo da instruo. J numa implementao multiciclo, o IR deve ser usado

para armazenar a instruo corrente, pois o PC atualizado durante o ciclo de instruo para apontar para a prxima instruo a ser executada. O registrador STATUS inclui flags referentes execuo da ltima instruo: Z (Zero), N (Negative) e C (Carry). Finalmente, o registrador ACC (o acumulador) armazena o resultado da ltima operao aritmtica; 3. Modelos de execuo: Pelo fato de ter um nico registrador de propsito geral (o ACC), foi considerado que as operaces aritmticas e lgicas poderiam processar operandos oriundos da memria de dados (o que tambm ocorre nos microcontroladores PIC). Dessa forma, so suportados os modelos de execuo Registrador-Registrador e Registrador-Memria;

Figura 1: Formato de Instruo 4. Formato de instruo: Foi definido um nico formato de representao para todo o conjunto de instrues. Esse formato, ilustrado na Figura 1, composto por dois campos: um cdigo de operao de 5 bits e um operando explcito de 11 bits;

Figura 2: Alternativas de organizao do espao de endereamento: (a) unificado; (b) dividido 5. Espaos de endereamento: O espao de endereamento limitado a 2048 posies devido largura do campo de operando da instruo (11 bits). A arquitetura utiliza entrada-e-sada (E/S) mapeada em memria, sendo que o acesso E/S realizado usando as mesmas instrues de acesso memria. A organizao dos espaos de endereamento pode ser explorada de diferentes maneiras. Pode ser definido um espao de endereamento nico para instrues, dados e E/S, conforme ilustrado na Figura 2.a. Porm,

se o processador utilizar uma organizao de memria tipo Harvard, podem ser definidos dois espaos de endereamento separados: um para instrues e outro para dados e E/S (como ilustrado na Figura 2.b). Essa abordagem permite implementar programas com at 2K instrues e 2K posies de dados e de E/S; 6. Modos de endereamento: Foram definidos dois modos de endereamento: imediato e direto. O modo imediato (Figura 3) utilizado para operaes envolvendo um registrador (o ACC ou o PC) e o operando da instruo (neste caso uma constante de 11 bits com o sinal representado em complento de dois). O modo de endereamento direto utilizado para operaes entre o acumulador e uma posio do espao de endereamento de memria apontada pelo operando da instruo, como ilustrado na Figura 4.

Figura 3: Modo de endereamento imediato: (a) operao com o ACC; (b) operao com o PC

Figura 4: Modo de endereamento direto

6.2.2 Arquitetura e Organizao do BIP I


O conjunto de instrues do BIP I formado por oito instrues, incluindo instrues de controle (HLT), armazenamento em memria (STO), carga no acumulador (LD e LDI) e de aritmtica (ADD, ADDI, SUB e SUBI), as quais so descritas na Tabela 1, a seguir. Tabela 1: Conjunto de instrues do BIP I Cdigo da Instruo Operao 00000 00001 00010 00011 00100 00101 00110 00111 HLT STO operando LD LDI operando operando Operao Paraliza a execuo do programa Memria[operando] ACC ACC Memria[operando] ACC operando ACC ACC + Memria[operando] ACC ACC + operando ACC ACC Memria[operando] ACC ACC operando Classe Controle Armazenament o Carga Carga Aritmtica Aritmtica Aritmtica Aritmtica

ADD operando ADDI operando SUB operando SUBI operando

A instruo HLT (halt) tem a funo de desabilitar a atualizao do PC, paralisando a execuo do programa. Nas demais instrues, o PC incrementado em uma unidade. A instruo STO (store) realiza a transferncia do contedo do registrador ACC para uma posio do espao de endereamento de memria (Memria[operando]). Quanto s instrues de carga, a instruo LD (load) realiza uma operao de transferncia de uma posio do espao de endereamento de memria para o acumulador, enquanto que a instruo LDI (load immediate) carrega uma constante (o operando) no acumulador. Com relao s instrues aritmticas, so disponibilizadas instrues de soma e de subtrao entre o acumulador e uma posio do espao de endereamento de memria e entre o acumulador e uma constante. So elas: ADD (add), SUB (subtract), ADDI (add immediate) e SUBI (subtract immediate). Embora a instruo SUBI possa ser dispensada pelo uso do ADDI com um operando negativo, optou-se por disponibilizar a instruo SUBI para conferir uma maior facilidade ao aprendizado. Quanto aos modos de endereamento, as instrues LDI, ADDI e SUBI utilizam o modo imediato, enquanto que as instrues STO, LD, ADD e SUB utilizam o modo direto. Em todas essas instrues, o acumulador utilizado como um operando implcito, atuando como operando fonte e/ou destino das operaes realizadas.

Na Tabela 2, so apresentados alguns exemplos de uso da linguagem de montagem do BIP I para a implementao de abstraes representadas em linguagens de alto nvel. Como pode ser observado, pelo seu conjunto de instrues, o BIP I consiste basicamente de uma calculadora programvel que realiza operaes de soma e subtrao com variveis e constantes. No entanto, apesar de limitado, esse conjunto de instrues permite ilustrar vrias relaes entre as abstraes estudadas nas disciplinas da rea de Algoritmos e Programao e sua representao no nvel arquitetural do processador, conforme ser discutido posteriormente. Tabela 2: Uso da linguagem de montagem do BIP I
Abstrao Atribuio de uma constante Atribuio de uma varivel Comando com uma operao aritmtica Cdigo de alto nvel A=10; A=B; A=A+1; Cdigo na linguagem de montagem LDI STO LD STO 10 A B A ;ACC 10 ;A ACC ;ACC B ;A ACC ;ACC A ;ACC ACC+1 ;A ACC ;ACC ;ACC ;ACC ;A A ACC+B ACC3 ACC

LD A ADDI 1 STO A LD ADD SUBI STO A B 3 A

Comando com mltiplas A=A+B3; operaes aritmticas

Na Figura 5, so apresentadas duas alternativas de organizao para o BIP I. A primeira uma organizao monociclo baseada em uma arquitetura Harvard, com memrias separadas para armazenar instrues e dados (Figura 5.a). J a segunda uma organizao multiciclo baseada em uma arquitetura de von Neumann, com uma memria unificada (Figura 5.b). Os diagramas apresentados abstraem alguns aspectos de implementao, como o uso de multiplexadores, a largura dos canais e os sinais de controle (os quais sero detalhados posteriormente). A Unidade Central de Processamento (UCP) do BIP I estruturada em dois blocos: o Controle e o Caminho de Dados. O Controle inclui o registrador PC, um somador para atualizar o valor do PC e o decodificador que gera os sinais de controle necessrios para a execuo de cada instruo. O Caminho de Dados, por sua vez, inclui o registrador ACC, uma unidade aritmtica de soma e de subtrao e um circuito para estender o sinal do operando (de 11 para 16 bits). A principal diferena entre a UCP das duas organizaes est no uso do registrador IR no Controle. A organizao de Harvard dispensa esse registrador pois a memria de instruo mantm em sua sada a instruo corrente. J a organizao de von Neumann precisa do IR pois, aps a busca da instruo, a memria pode ser utilizada com fonte ou destino de alguma operao. As duas organizaes no incluem o registrador STATUS no Caminho de Dados, pois o conjunto de instrues do BIP I no possui instrues que analisem esse registrador.

Figura 5: Organizaes alterantivas: (a) Havard monociclo; (b) von Neumann multiciclo Alm das organizaes ilustradas, outras variaes podem ser implementadas. Por exemplo, adicionando o registrador IR organizao Harvard e com as devidas modificaes no bloco de decodificao, pode ser construda uma organizao com um pipeline de dois estgios sobrepondo a busca e a execuo de duas instrues subsequentes.

Figura 6: Organizao monociclo do BIP I baseada em uma arquitetura tipo Havard

A Figura 6 apresenta um detalhamento da organizao Harvard monociclo. Nela, podem ser observados os multiplexadores de seleo do Caminho de Dados, os sinais de controle gerados pelo Decodificador e a largura dos canais que interligam os componentes. Os circuitos utilizados na implementao da UCP so aqueles tipicamente estudados em disciplinas de Eletrnica Digital (decodificador, registrador, somador, somador/subtrator, multiplexador e memria). A exceo bloco de extenso de sinal que converte o canal de 11 bits do operando para a largura da palavra do Caminho de Dados (16 bits). Essa converso feita pela atribuio do bit sinal do operando (bit 10) aos bits 11-15 da interface de sada do bloco. Vale destacar que as organizaes ilustradas no incluem uma interface de E/S. No entanto, por utilizar entrada-e-sada mapeada em memria, perifricos e dispositivos de E/S podem ser facilmente acrescentados conectando-os ao barramento da memria de dados.

6.2.3 Arquitetura e Organizao do BIP II


O BIP II uma extenso do BIP I e possui as mesmas caractersticas arquiteturais. Ele foi especificado para suportar estruturas de controle usadas em desvios e em laos de repetio. Para tal, o conjunto de instrues do BIP I foi estendido incluindo seis instrues de desvio condicional: BEQ (branch on equal), BNE (branch on not equal), BGT (branch on greater than), BGE (branch on greater than or equal), BLT (branch on less than) e BLE (branch on less than or equal). Tambm foi adicionada a instruo de desvio incondicional JMP (jump). Essas novas instrues so descritas na Tabela 3. Conforme visto na Tabela 3, para suportar as instrues de comparao e desvio condicional, foi necessrio incluir o registrador STATUS, em especial os flags booleanos Z (zero) e N (negative). Qualquer instruo de comparao e desvio condicional deve ser precedida por uma instruo de subtrao (SUB ou SUBI). Dependendo do resultado dessa operao, os flags Z (Zero) e N (Negative) do registrador STATUS so definidos em 0 (FALSE) ou em 1 (TRUE). As instrues de desvio condicional ento verificam o valor desses flags para determinar se o desvio deve ser tomado ou no, conforme o tipo de comparao associado. Essa estratgia se deve limitao do formato de instruo, o qual suporta um nico operando explcito. Esse operando usado para codificar o endereo de desvio, enquanto que os valores comparados so processados pela instruo de subtrao. As instrues de desvio utilizam o modo de endereamento imediato quando carregam o endereo de desvio no PC, o qual considerado um operando implcito.

Tabela 3: Conjunto de instrues estendidas do BIP II


Cdigo da Instruo Operao 01000 Operao Classe Desvio condicional

BEQ operando se (STATUS.Z = 1) ento PC operando seno PC PC + 1 BNE operando se (STATUS.Z = 0) ento PC operando seno PC PC + 1 se (STATUS.Z = 0) e (STATUS.N = 0) ento PC operando seno PC PC + 1

01001

Desvio condicional

01010

BGT operando

Desvio condicional

01011

BGE operando se (STATUS.N = 0) ento PC operando seno PC PC + 1 BLT operando se (STATUS.N = 1) ento PC operando seno PC PC + 1 se (STATUS.Z = 1) ou (STATUS.N = 1) ento PC operando seno PC PC + 1 PC operando

Desvio condicional

01100

Desvio condicional

01101

BLE operando

Desvio condicional

01110

JMP operando

Desvio condicional

A tabela a seguir apresentam exemplos de uso do conjunto de instrues do BIP II para implementar as estruturas de controle. Foi utilizado na tabela o termo Bloco i para designar um segmento de cdigo que representa uma sequncia de instrues que executa alguma tarefa, a qual irrelevante para o contexto do exemplo.

Tabela 4: Uso da linguagem de montagem do BIP II Abstrao Teste de condio do tipo ifthen Cdigo de alto nvel if(A==B){ //Bloco1 } //Bloco2 L1: ;Bloco2 Cdigo na linguagem de montagem LD A SUB B BNE L1 ;Bloco1 ;ACC A ;ACC ACCB

Teste de condio do tipo ifthenelse

if(A==B){ //Bloco1 }eles{ //Bloco2 } //Bloco3

LD A SUB B BNE L1 ;Bloco1 JMP L2 L1: ;Bloco2 L2: ;Bloco3

;ACC A ;ACC ACCB

Lao de repetio i=0; while(i<10){ do tipo while //Bloco1 i++; } //Bloco2

LDI STO L1:

0 I

;ACC 0 ;I ACC ;ACC ACC10 ;ACC I ;ACC ACC+1 ;I ACC

SUBI 10 BGE L2 ;Bloco1 LD I ADDI 1 STO I JMP L1 L2: ;Bloco2

Lao de repetio i=0; do{ do tipo dowhile //Bloco1 i++; }while(i<10); //Bloco2

LDI STO L1:

0 I

;ACC 0 ;I ACC ;ACC ;ACC ;I ;ACC

;Bloco1 LD I ADDI 1 STO I SUBI 10 BLT L1 ;Bloco2

I ACC+1 ACC ACC10

Lao de repetio for(i=0;i<10;i++){ //Bloco1 do tipo for } //Bloco2

Implementao em linguagem de montagem idntica implementao do lao de repetio do tipo while

A Figura 7 apresenta a organizao Harvard monociclo do processador BIP II. Em relao organizao do processador BIP I, ilustrada previamente na Figura 6, essa organizao inclui os circuitos necessrios implementao das instrues de desvio: ( i) um multiplexador na entrada do PC, para permitir a carga do valor do operando; e (ii) o registrador STATUS, com os flags N e Z.

Figura 7: Organizao monociclo do BIP II baseada em uma arquitetura tipo Havard

Arquitetura e Organizao do BIP III


O BIP III estende o conjunto de instrues do BIP II adicionando nove instrues de lgica bit-a-bit, as quais so descritas na Tabela 5. Tabela 5: Conjunto de Instrues estendido do BIP III Cdigo da Instruo Operao 01111 10000 10001 10010 10011 10100 10101 10110 10111 NOT AND operando ANDI operando OR ORI operando operando Operao ACC NOT(ACC) ACC ACC AND Memria[operando] ACC ACC AND operando ACC ACC OR Memria[operando] ACC ACC OR operando ACC ACC XOR Memria[operando] ACC ACC XOR operando ACC ACC << operando ACC ACC >> operando Classe Lgica Lgica Lgica Lgica Lgica Lgica Lgica Lgica Lgica

XOR operando XORI operando SLL SRL operando operando

A organizao do BIP III similar organizao do BIP II. As poucas modificaes necessrias referem-se substituio do somador-subtrator do caminho de dados por uma unidade funcional integrando uma ULA (Unidade Lgica e Aritmtica) e barrel shifters para realizar os deslocamentos de bits direita e esquerda. Alm disso, o Decodificador deve ser atualizado para identificar as novas instrues. A Tabela 6, logo a seguir, apresenta a codificao definida para o sinal Op que comanda a Unidade Funcional, o qual passa a ter 3 bits de largura no BIP III. Tabela 6: Operaes suportadas pela unidade funcional do BIP III Op 000 001 010 011 100 101 110 111 Operao Soma Subtrao Funo lgica E Funo lgica OU Funo lgica XOR Funo lgica NOT Deslocamento lgico para a esquerda Deslocamento lgico para a direita Instrues ADD e ADDI SUB e SUBI AND e ANDI OR e ORI XOR e XORI NOT SLL SRL

Refercias
Patterson, D. A. e Hennessy, J. L. (2005) Organizao e projeto de computadores: a interface hardware/software, So Paulo, Campus. Microchip (2003) PIC16F62X Data Sheet: FLASH-Based 8-Bit CMOS Microcontroller. Arizona.