Documente Academic
Documente Profesional
Documente Cultură
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.
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
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
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.
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.
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
0 I
Lao de repetio i=0; do{ do tipo dowhile //Bloco1 i++; }while(i<10); //Bloco2
0 I
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.
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.