Escolar Documentos
Profissional Documentos
Cultura Documentos
394
Tema
Subsistemas Bsicos de Uma UCP Sntese, Projeto, Implementao e Validao.
hexadecimal, lgebra de boole, lgica digital; sntese, projeto, implementao e validao de circuitos lgicos digitais combinacionais e seqenciais; elementos multiplexadores; elementos decodificadores; tcnicas de associao de componentes eletrnicos em srie e paralelo.
Objetivos
O principal objetivo do captulo o de capacitar o aluno a projetar, dimensionar, implementar e avaliar sistemas computacionais de acordo com as necessidades e caractersticas de uso dos mesmos. Uma arquitetura de computador deve ser avaliada ou dimensionada de acordo com as caractersticas de sua aplicao. Ou seja, no podemos simplesmente afirmar que uma
arquitetura eficiente (boa) ou ineficiente (ruim) se no for considerada a aplicao na qual ela est sendo empregada.
395
Barramento de Dados
Seleo
Endereo s
Memria
Controles L/E
Barramento de Controle
Habilita A/B
Operao ULA
Reg. Acumulador
Habilita AC
396
subsistemas principais: Memria, Unidades de Entrada e Sada (UES) e Unidade Central de Processamento (UCP). A UCP, por sua vez, formada pelas seguintes subsistemas e unidades: Unidade Lgica Aritmtica; Registradores de Uso Geral; Registradores Acumuladores e Unidade de Controle. Interligando esses subsistemas existem trs
conjuntos de fios para realizar a comunicao entre eles, esses conjuntos de fios so organizados de acordo com a funo dos mesmos e denominados de barramentos. A
organizao desse universo de fios em subconjuntos realizada da seguinte maneira: subconjunto de fios que transportam endereos de memria e endereos de unidades de entrada e sada, denominado Barramento de Endereos; subconjunto de fios que transportam dados, denominado Barramento de Dados e subconjunto de fios que realizam a ordenao e a correta seqncia de atividades a serem realizadas na arquitetura para a obteno de um resultado desejado, denominado Barramento de Controle, oriundos da Unidade de Controle. A Figura 8.2 ilustra uma evoluo da arquitetura de Von Neumann. Deve-se observar que na arquitetura proposta por Von Neumann a Unidade de Controle era um subsistema separado da UCP. Na arquitetura contida na Figura 8.2 a UCP j contm a Unidade de Controle. Cada um dos subsistemas contido nessa mquina possui ou executa funes especficas: - o Subsistema de Memria tem a funo de armazenar (conter) informaes temporariamente. O subsistema de memria est subdividido em Memria Principal e Memria Secundria. Os conceitos, caractersticas e formas de organizao dessas memrias esto contidos no item Subsistemas de Memria (cap.VII).
- a Unidade de Entrada e Sada (UES) tem a funo de realizar a comunicao entre o Homem e a Mquina e tambm a comunicao entre equipamentos. A UES contm os subsistemas que controlam tanto, os equipamentos perifricos de um computador (mouse, teclado, monitor de vdeo, impressora, disco rgido, unidade de disquetes, unidade de CD/DVDs, subsistemas de multimdia, entre outros), quanto, subsistemas que possibilitam a comunicao entre equipamentos, tais como: placas de rede, placas de fax-modem e muitos outros. Os conceitos e formas de implementao de Unidades de Entrada e Sada sero apresentados no captulo IX. - a Unidade Central de Processamento (UCP) formada pela Unidade Lgica e Aritmtica (ULA), registradores de uso geral, registrador acumulador e Unidade de Controle (UC), conforme mostra a Figura 8.1. Na Unidade Lgica e Aritmtica so executadas as
397
instrues contidas em um programa. Os registradores de uso geral armazenam temporariamente os operandos das instrues a serem executadas pela ULA. O registrador Acumulador armazena temporariamente os resultados das operaes executadas na ULA. A Unidade de Controle gera os comandos (microordens) na seqncia adequada para executar as atividades inerentes a cada programa em execuo e a comunicao com o exterior (Unidades de Entrada e Sada). Essa unidade coordena o instante exato de execuo das atividades para obter o resultado esperado. Fazendo uma comparao grosseira com o corpo humano, a Unidade de Controle equivalente ao sistema de coordenao motora. Os elementos bsicos de uma UCP, com exceo da Unidade de Controle, sero apresentados de forma mais detalhada do item 8.2.1 ao item 8.2.6. As caractersticas, tipos e propostas de implementao de uma Unidade de Controle sero apresentadas no captulo IX Nesse captulo sero descritas as diferentes formas de interligar, controlar e organizar esses subsistemas tanto a nvel terico quanto prtico atravs da implementao um computador com arquitetura reduzida, onde os conceitos sero verificados e consolidados. Cada aluno ir propor, sintetizar, simular e implementar o seu computador. Aps a implementao inicial, propostas de modificaes sero inseridas na arquitetura original com o objetivo de realizar anlises de desempenho e relaes de custo-benefcio das
modificaes inseridas na arquitetura original. Dessa forma, sero repassados aos alunos os conceitos de organizao e arquitetura de computadores possibilitando comparaes e a anlise de desempenho das diversas alternativas e tambm de subsistemas contidos em uma arquitetura de computador convencional. As atividades prticas de implementao das
mquinas propostas pelos alunos sero realizadas utilizando componentes programveis denominados FPGAs. Sero utilizadas placas contendo FPGAs e o ambiente de desenvolvimento da mesma empresa contendo o software denominado Project Manager. Esse software contm ferramentas que possibilitam a edio e simulao de componentes e/ou subsistemas. A edio pode ser realizada nas formas: grfica; diagrama de estados e
linguagem VHDL. Inicialmente utilizaremos a edio grfica para projetar os componentes de um computador com arquitetura de Von Neumann expandida. Um dos objetivos do texto capacitar cada leitor para implementar o seu prprio conjunto de subsistemas de um computador digital com o objetivo de gerar um processador com arquitetura equivalente a mostrada na Figura 8.1. Para tanto, os alunos devem aprender e dominar as principais caractersticas funcionais de cada um dos subsistemas utilizados. Os subsistemas e elementos auxiliares contidos na arquitetura da Figura 8.2 sero todos sintetizados, projetados, implementados e validados atravs de simulao. Aps essa fase os
398
componentes implementados sero integrados para a obteno de um computador bsico com arquitetura de Von Neumann Expandida da Figura 8.2 e com as seguintes caractersticas principais: palavra de oito bits e memria RAM esttica de 1024 palavras de 8 bits. Essa implementao pode ser verificada na Figura 8.17. Barramento de Dados
UES
Reg. Ent. Dados
Memria
Reg. Sada Dados
Barramento de Controle
Reg.Geral A
Reg. Geral B
Unidade de Controle
ULA
ADD / SUB
UCP
Reg. Acumulador
399
seqncia de apresentao, discusso, proposta, dimensionamento e implementao dos principais subsistemas de uma arquitetura ser a seguinte: Registradores de Uso Geral; Registrador Acumulador (AC); Registradores Contadores; Elementos Multiplexadores;
Unidade Lgica Aritmtica (ULA), Unidade Central de Processamento (UCP); Subsistema de Memria e Unidade de Controle. Os subsistemas implementados sero apresentados da seguinte maneira: descrio; diagrama esquemtico; implementao realizada no software Project Manager e tabela verdade descrevendo o funcionamento do elemento em foco.
400
existentes no Registrador Geral assumir o valor lgico 1, ou sela todas as linhas da Sada de Dados assumiro o valor lgico 1. A Figura 8.3a mostra o diagrama de blocos de um Registrador de Uso Geral. A Figura 8.3b mostra a implementao do Registrador de Uso Geral no Software Project Manager. A Tabela 8.1 descreve a forma de funcionamento do Registrador da Figura 8.3b.
Entrada de Dados
Entradas de Controle
Enable
Clear/Preset
E Cl/Pr Ck
Registrador Geral
Clock
D7i ... D0i D7i ... D0i D7i ... D0i XXH
0 0 1 X
0 0 0 1
D7i-1 ... D0i-1 D7i-1 ... D0i-1 D7i ... D0i 00H
401
Exerccio 8.1- Sintetizar e projetar um registrador de uso geral componente registrador de apenas 16 bits. Resoluo-
de 32 bits utilizando um
Para realizar a sntese e implementao do registrador de uso geral de 32 bits solicitado requerido o conhecimento dos seguintes itens: a- funcionamento e tabela verdade do componente eletrnico disponvel para ser utilizado no projeto b- conceitos e tcnicas de sntese e projeto de circuitos combinacionais e seqenciais (associao srie-paralelo de componentes eletrnicos).
Item a- O registrador de 16 bits disponibilizado para o projeto mostrado na figura 8.4 possui a tabela verdade equivalente ao registrador de 8 bits cujas caractersticas esto contidas na tabela 8.1 e figura 8.3.
Item b- Um registrador de 16 bits como o FD16CE caracterizado como uma memria de 1 palavra de 16 bits com entradas paralelas e sadas paralelas. Para obter uma memria de uma palavra de 32 bits basta interligar dois registradores de 16 bits atravs de uma associao paralela. Dessa forma foi obtido o registrador de uso geral de 32 bits contido na figura 8.5 foi obtido atravs da associao paralela de dois componentes FD16CE.
Figura 8.4- Componente Registrador FD16CE do software Project Manager A figura 8.5 mostra o registrador de uso geral de 32 bits. Nela, verifica-se as seguintes caractersticas: -
402
- as entradas de controle: CE (Chip Enable), C (Clock) e CLR (Clear); dos dois componentes FD16CE esto interligas em uma mesma origem; - o barramento de entrada de dados de 32 bits (D_RG[31:0] est subdividido em dois sub-barramentos de 16 bits; D_RG[31:16] e D_RG[15:0] respectivamente. - o barramento de sada de dados de 32bits, denominado Q_RG[31:0] composto pelos dois sub-barramentos de 16 bits denominados Q_RG[31:16] e Q_RG[15:0] originrios nos dois componentes de FD16CE respectivamente.
Figura 8.5- Registrador de Uso Geral de 32 bits A tabela 8.2 mostra o funcionamento do Registrador de Uso Geral de 32 bits obtido. Ou seja, o registrador de uso geral armazena em seu interior o contedo disponibilizado no barramento de entrada de dados somente quando ocorrer a seguinte configurao nas suas entradas de controle: CLR =0, CE=1 e CK = . Quando a entrada de controle CLR=1 o contedo do registrador 00000000(H) e Quando CLR=0 e CE=0 o registrador mantm o contedo de seu estado anterior, independente dos valores de todas as outra entradas. Entradas CLR 1 0 0 Controle CE X 0 1 CK X X Dados D_RG[31:0] XXXXXXXX(H) XXXXXXXX(H) D_RG31i ... D_RG0i
Sadas (Dados) Q_RG[31:0] 00000000(H) Mantm estado anterior D_RG31i ... D_RG0i
403
temporariamente os resultados das operaes executadas na ULA, para posterior utilizao pela prpria ULA, via realimentao da ULA atravs dos registradores gerais ou para serem armazenados na memria principal. Geralmente, o Registrador Acumulador possui as seguintes caractersticas: Entrada Paralela; Entrada Serial a Esquerda com Deslocamento a Direita; Entrada Serial a Direita com Deslocamento a Esquerda; Sada Paralela; Sada Serial Direita; Sada Serial a Esquerda. A Figura 8.6a mostra um Registrador Acumulador em diagrama de blocos. A Figura 8.6b mostra uma implementao do Acumulador no software Project Manager. Para tanto foi utilizado um registrador de oito bits denominado SR8CLED. O registrador SR8CLED um registrador com entradas paralelas e seriais, deslocamento bidirecional ( esquerda e a direita). A Tabela 8.3 descreve a forma de funcionamento do Acumulador da Figura 8.6b, mostrando as entradas e sadas de dados com os respectivos valores das entradas de controle para cada uma das funes exercidas pelo Acumulador. A entrada de controle LOAD tem a funo de armazenar no Acumulador os dados contidos na Entradas de Dados Paralelo. Para armazenar os valores contidos na Entrada Paralela de Dados em paralelo as entradas de controle devem assumir a seguinte configurao: ENABLE=1, LOAD=1, CLEAR=0 e gerar borda de subida na entrada de controle de relgio (CLOCK= ); os valores das demais entradas de controle so irrelevantes na funo de armazenamento paralelo de dados. Para deslocar os dados contidos no registrador da esquerda para a direita e inserir o valor contido na entrada de dado serial (SHIFT_R) as entradas de controle devem assumir a seguinte configurao: ENABLE=1; LOAD=0; LEFT=0; CLEAR=0 e gerar borda de subida na entrada de controle de relgio (CLOCK= ). Para deslocar os dados contidos no registrador da direita para a esquerda e inserir o valor contido na entrada de dado serial (SHIFT_L) as entradas de controle devem assumir a
404
seguinte configurao: ENABLE=1; LOAD=0; LEFT=1; CLEAR=0 e gerar borda de subida na entrada de controle de relgio (CLOCK= ). Entrada Paralela de Dados
Shift_L
Shift_R
Entradas de Controle
Esquerda=0 Direita=1
L LEFT E Ck Cl/Pr
Registrador
Enable Clock
Clear/Preset
ACUMULADOR
(AC)
Entradas de Dados
Sada de Dados
Entradas de Controle
405
Observe que o Acumulador permite entrada de dados nas formas paralela e serial. Como conseqncia da disponibilidade de entradas seriais o Acumulador possui a capacidade de deslocar o contedo armazenado em seus Flip-Flops em dois sentidos (deslocamento bidirecional), tanto da esquerda para a direita quanto da direita para a esquerda. O deslocamento para a direita equivalente operao matemtica de diviso por 2, e o deslocamento a esquerda equivalente operao matemtica de multiplicao por 2. Entrada de Dados Entradas de Controle Serial Paralelo Shift_ Shift_ Enabl Loa Lef Clo Cle L R e ck d t ar Sada de Dados
Comentrios
D7i ... D0i D7i ... D0i D7i ... D0i D7i ... D0i D7i ... D0i D7i ... D0i D7i ... D0i
XXH
X X X X X 0 1 X
X X X 0 1 X X X
0 X X 1 1 1 1 X
0 1 1 0 0 0 0 X
X x x 0 0 1 1 X
X 0 X
0 0 0 0 0 0 0 1
D7i-1 ... D0i-1 D7i-1 ... D0i-1 D7i ... D0i 0, D6i ... D0i
Armazena entradas atuais Desloca direita, insere Shift_R (divide por 2) 1, D6i ... Desloca direita, insere Shift_R (divide e soma D0i 1) Desloca esquerda, insere D7i ... D1i , Shift_L (multiplica por 0 2) Desloca esquerda, insere D7i ... D1i , Shift_L 1 (multiplica,soma1) 00H Limpa (zera) as Sadas
406
Item a- O registrador acumulador de 16 bits disponibilizado para o projeto SR16CLED mostrado na figura 8.7 possui a tabela verdade equivalente ao registrador de 8 bits cujas caractersticas esto contidas na tabela 8.3 e figura 8.6. O componente SR16CLED pode ser utilizado como registrador acumulador pois possui as caractersticas necessrias e intrnsecas a um registrador acumulador: entrada e sadas paralelas, entradas e sadas seriais e deslocamento bidirecional.
Entradas de Dados
Entradas de Controle
Figura 8.7- Componente Registrador SR16CLED do software Project Manager Item b- Um registrador acumulador de 16 bits como o SR16CLED tambm
caracterizado como uma memria de 1 palavra de 16 bits. No entanto esse componente possui a capacidade de modificar o seu contedo atravs de operaes de controle que realiza o deslocamento bidirecional (direita ou esquerda) de seu contedo. Para obter uma memria de uma palavra de 32 bits utilizando dois registradores com entrada paralela e sada paralela basta interligar dois
registradores de 16 bits atravs de uma associao paralela. Como o registrador, alm de armazenara dados em paralelo tambm possui a capacidade de realizar entrada de dados de forma serial e em sentido bidirecional. Assim, alm da associao paralela de dois componentes SR!CLED necessrio verificar a dependncia de dados existente entre os dois registradores nas operaes que exigem deslocamento bidirecional de seu contedo.Considerando todas as dependncias de dados existentes, foi gerado o registrador acumulador de 32 bits contido na figura 8.8.
407
Verifica-se na figura 8.8 que o bit 15 do componente SR!CLED que armazena a parte menos significativa do contedo do registrador acumulador est interligada entrada serial de dados SRI (Shift_Right_Input) permitindo o deslocamento direita de dados entre os dois componentes de 16 bits. De forma similar, a sada 16 do componente SR!CLED que armazena a parte mais significativa do contedo do registrador acumulador est interligada entrada serial de dados SLI (Shift_Left_Input) possibilitando o deslocamento `a esquerda de dados entre os componentes de 16 bits.
Figura 8.8- Implementao de um Registrador Acumulador de 32 bits A tabela 8.4 descreve a forma de funcionamento do registrador acumulador de 32 bits da figura 8.8. Entradas Controle C LEF CLR L E T 1 0 0 0 X X 1 X 0 1 0 1 X X 1 1 Dados C k X 1 0 X X XXXXXXXX(H) XXXXXXXX(H) SL I X X SR I X X D_AC[31:0] XXXXXXXX(H) D_AC31i ... D_AD0i Sada de Dados Comentrios Q_AC[31:0] 00000000(H) D_AC31i ...D_AC0i D_AC30i ... D_AC0i,0 D_AC30i ... Limpa Acumulador Entrada Paralela Deslocamento a esquerda (SLI=1) Deslocamento a
408
Tabela 8.4- Tabela verdade do registrador Acumulador de 32 bits mostrado na figura 8.8
409
Entrada de Dados D7i ... D0i XXH XXH 01H XXH FEH XXH
Ena ble X X 1 1 1 1 X
Sada de Dados Q7i-1...Q0i-1 D7i ... D0i (Q7i-1...Q0i-1)1 00H (Q7i-1...Q0i1)+1 FFH 00H
Comentrios Mantm estado anterior Armazena entradas de dados Conta para baixo Enable_Out=1; Detecta_00/FF=1 Conta para Cima Enable_Out=1; Detecta_00/FF=1 Limpa o contedo (insere zero)
Tabela 8.5- Tabela Verdade do Registrador Contador UP/DOWN da Figura 8.9. Para armazenar os valores contidos na Entrada Paralela de Dados as entradas de controle devem assumir a seguinte configurao: LOAD=1; CLEAR=0 e gerar borda de subida na entrada de controle de relgio (CLOCK= ); os valores das demais entradas de controle so irrelevantes na funo de armazenamento paralelo de dados. Para que o contador gere um seqncia de contagem decrescente as entradas de controle devem assumir a seguinte configurao: ENABLE=1; LOAD=0; Direo=0; CLEAR=0 e gerar borda de subida na entrada de controle de relgio (CLOCK= ). Para que o contador gere um seqncia de contagem crescente as entradas de controle devem assumir a seguinte configurao: ENABLE=1; LOAD=0; Direo=1; CLEAR=0 e gerar borda de subida na entrada de controle de relgio (CLOCK= ). A sada de controle Enable_Out pode ser utilizada para projetar contadores com maior quantidade de bits atravs da associao em srie de dois ou mais elementos contadores CB8CLED. Para tanto, a sada de controle Enable_Out do elemento CB8CLED que conter os bits menos significativos do contador projetado deve ser ligado entrada de controle Enable do elemento CB8CLED que conter os bits mais significativos do contador. Essa configurao vlida tanto para a contagem na forma crescente quanto para a contagem na ordem decrescente. Na contagem crescente a sada Enable_Out assume o valor lgico 1 quando as sadas de dados do contador atingir o valor hexadecimal FF. O mesmo acontece na forma de contagem decrescente, quando as sadas de dados do contador atingir a contagem 00H.
410
A sada Detecta_00/FF tem a funo de detectar os limites inferiores e superiores de contagem do registrador contador. Na forma decrescente ele detecta o valor Hexadecimal 00 w na forma crescente ele detecta o valor Hexadecimal FF.
Direo LOAD
UP L CE Ck Cl/Pr
CEO
Entradas De Controle
TC
Entrada de Dados
Sada de Dados
Entradas de Controle
Sadas de Controle
411
Bidirecional de oito bits, utilizando um elemento contador UP/DOWN de oito bits contido na biblioteca do software Project Manager. Exerccio 8.3- Sintetizar e projetar um registrador contador bidirecional de 32 bits utilizando um componente contador UP-DOWN de apenas 16 bits. Resoluo- Para realizar a sntese implementao do contador solicitado requerido o conhecimento dos seguintes itens: a- funcionamento e tabela verdade do componente eletrnico disponvel para ser utilizado no projeto b- tcnicas de associao srie-paralelo de componentes eletrnicos e; c- conceitos e tcnicas de sntese e projeto de circuitos combinacionais e seqenciais. Item a- O contador UP-DOWN de 16 bits disponibilizado para o projeto mostrado na figura 8.10 e possui a tabela verdade equivalente ao registrador contador UPDOWN de 8 bits, cujas caractersticas esto contidas na figura 8.9 e descritas na tabela tabela 8.5. facilmente verificado que a diferena no comprimento da palavra entre os dois componentes (16 e 8 bits respectivamente) gera como consequencia as seguintes modificaes nas funes das sadas denominadas CEO e TC no componente de 16 bits:
Entradas de Controle
Sadas de Controle
Figura 8.10- Registrador contador UP-DOWN de 16 bits (Project Manager) - As sadas CEO-ENABLE_OUT ser ativada (nvel lgico =1) quando o contador atingir o valor mximo (FFFF(H)) e/ou o valo mnimo (0000 (H)) quando a entrada de controle UP-Direo estiver definindo o sentido de contagem crescente
412
(UP=1) e/ou decrescente (UP=0) respectivamente. As funes da entradas de controle no sofrem modificaes. Item b- natural que sero necessrios dois registradores contadores de 16 bits para obter um contador de 32 bits. Alm disso possvel tambm concluir que os dois contadores de 16 bits devero ser associados (interligados) em paralelo para obter o contador de 32 bits, pois a associao em paralelo de dois componentes de memria utilizada para aumentar ao comprimento da palavra. - No entanto, existe tambm dependncia de sinais de controle entre os dois componentes. Essa interdependncia gera uma associao lgica serial entre os dois componentes que sero necessrios para obter os 32 bits solicitados. O circuito obtido a partir dessas consideraes mostrado na figura 8.11. Na figura observa-se que a entrada de controle CE-Chip Enable do contador que conter os bits mais significativos do contedo est ligada sada CEO-Enable_Out do contador que conter os bits menos significativos do valor de contagem. Item c- Com a configurao mostrada na figura 8.11 o registrador ir gera as seguintes as seqncias de contagem mostrada na tabela 8.6. Ou seja, quando o contador est configurado para gerar a seqncia de contagem na ordem crescente (UP=1, LOAD=0, CE=1) e com a contagem inicial igual a 00000000(H), as sadas iro mostrar uma sequencia crescente de contagem culminando com o valor FFFFFFFF(H). De forma similar, quando o contador estiver configurado para gerar a contagem na ordem decrescente (UP=0, LOAD=0, CE=1) as sadas assumiro as configuraes: FFFFFFFF(H), FFFFFFFE(H), ... , 00000000(H).
413
Final
final
0 0 0 0 0 1 0 1
414
Um multiplex pode ser utilizado para implementar vrias funes, desde a capacidade de implementar circuitos comutadores de sinais em centrais de comutao telefnica e at mesmo na a implementao de toda e qualquer funo lgica (expresses booleanas). Na arquitetura proposta na Figura 8.2 esto sendo utilizados dois elementos multiplex com a funo de subsistemas. Um elemento multiplex transfere para a sua sada de dados apenas um nico valor contido em uma de suas entradas de dados, de acordo com o valor contido nas suas entradas de controle de seleo. A quantidade de entradas de seleo define e limita a quantidade de entradas de dados que pode e deve existir em um elemento multiplex, obedecendo sempre a seguinte relao: a quantidade de entradas de dados dada por dois (2) elevado ao nmero de entradas de seleo. viabilizar o acesso a recursos que devem ser compartilhados por vrios
Entradas de Dados
1 1 1 1 0
0 0 1 1 X
0 1 0 1 X
E0 E1 E2 E3 0
Tabela 8.7- Tabela Verdade do Multiplex M4_1E do item b2 da Figura 8.11. A tabela 8.7 mostra a forma de um elemento multiplex de duas (2) entradas de controle de seleo e quatro (4=22) entradas de dados e uma entrada de controle Enable,
415
equivalente ao multiplex mostrado na figura 8.11b2. Um multiplex com essas caractersticas seleciona uma entre 4 diferentes entradas para ser transferida para sua sada e tambm denominado multiples 4x1.
E0
Entradas de Dados
E1 E2 E3
1 MULTIPLEX 2
Sada de dados
Enable
S1
S0
Entradas de Controle
(a) Diagrama de Blocos de um Elemento Multiplex
416
A resoluo do exerccio 8.4 requer o conhecimento da tabela verdade e do funcionamento de circuitos miltiplexadores alm do domnio tcnicas de sntese e projeto de circuitos combinacionais (associao srie-paralelo de elementos multiplexadores). Resoluo: O exerccio solicita a implementao de um multiplex que transfira para sua sada um byte que deve ser selecionado entre diferentes 4 bytes de entrada. Como cada byte formado por um conjunto de 8 bits o elemento multiplex solicitado ter 32 entradas e 8 sadas, ou seja, um multiplex 32x8. Foi tambm disponibilizado para a sntese e implementao do multiplex 32x8, circuitos mutiplexadores 4x1. A descrio do funcionamento e a forma grfica do multiplex 4x1, esto explicitadas na figura 8.12 e tabela 8.8 respectivamente.
Figura 812- Circuito Multiplex 32x8 implementado com 8 emementos multiplex 4x1 Para obter um multiplex 32x8 foram utilizados 8 elementos multiplex 4x1 para gerar um multiplex 32 entradas e 8 sadas (multiplex 32x8). Os 8 elementos multiplex 4x1 sero interligados em paralelo. Cada elemento multiplex 4x1 ir tranferir para a sua sada um dos bits do byte escolhido para ser transferido para a sada do multiplex 32x8. A figura 8.12 mostra a disposio dos 8 multiplex 4x1 interligados de forma paralela. Cada um dos multiplex seleciona um dos bits do byte escolhido (determinado) pelas entradas de seleo para a sua sada, compondo um barramento de sada de 8 bits denominado O[7:0]. Verifica-se tambm na figura a existncia de 4 barramentos de 8 bits denominados: A[7:0], B[7:0], C[7:0] e D[7:0]. Cada uma das entradas de seleo de todos os 8 multilex 8x1 esto interligadas a uma nica origem, essa configurao permite a melhor organizao grfica do circuito.
417
As entradas de seleo foram denominadas S1 e S0 e a tabela 8.8 mostra o funcionamento do multiplex 32x8 da figura 8.12. Entradas D3 D[7:0] D[7:0] D[7:0] D[7:0] D[7:0] Dados D2 D1 C[7:0 B[7:0 ] ] C[7:0 B[7:0 ] ] C[7:0 B[7:0 ] ] C[7:0 B[7:0 ] ] C[7:0 B[7:0 ] ] D0 A[7:0 ] A[7:0 ] A[7:0 ] A[7:0 ] A[7:0 ] Controle E S1 S0 0 0 1 1 1 1 0 0 1 1 X 1 0 1 X
Tabela 8.8- Tabela Verdade do circuito Multiplex 32x8 Exerccio 8.5- Nas mquinas de 32 bits comum o compartilhamento de um barramento de 32 bits por dois outros barramentos tambm de 32 bits. Para possibilitar essa aplicao, sintetize e implemente circuito multiplex que transfira para sua sada um nico barramento de 32 bits escolhidos entre dois diferentes barramentos contidos em suas entradas. Resoluo:A resoluo do exerccio 8.5 requer o conhecimento da tabela verdade e do funcionamento de circuitos miltiplexadores alm do domnio tcnicas associao paralela de elementos multiplexadores. O exerccio requer a sntese e construo de um circuito multiplex que selecione um entre dois barramentos de 32 bits contidos em suas entradas para a sua sada. Podemos interpretar o problema utilizando 32 elementos mutiplexadores 2x1 igual ao mostrado no item b1 da figura 8.11 para implementar a funo solicitada no exerccio. O multiplex 64x32 obtido mostrado na figura 8.13 e o seu funcionamento descrito na tabela 8.9.
418
Figura 8.13- Circuito Multiplex 64x32 construdo com 32 elementos mutiplex 2x1
conseqncia viabilizam a implementao de operaes lgicas e matemticas complexas e no existentes na ULA, atravs da utilizao de combinaes ou repeties de suas operaes bsicas.
A Figura 8.14a mostra o diagrama de blocos de um Comparador de Magnitude Genrico e a Figura 8.14b mostra a implementao de um comparador de magnitude de oito bits no software Project Manager, utilizando o elemento COMPM8.
Entradas Paralelas
Operando_X
A Comparador De Magnitude
>
Maior
Sadas
Menor
Operando_Y
<
419
Operandos
Sadas
Operaes Relacionais
1 0 0
0 1 0
Tabela 8.10- Tabela Verdade do Comparador de Magnitude da Figura 8.14b. Exerccio 8.6- A Unidade Lgica Aritmtica de uma Unidade Central de Processamento que executa as operaes lgicas, aritmticas e relacionais existentes em nvel de hardware. As operaes relacionais executadas em uma UCP, alm de ser utilizada nos clculos existentes nos programas de usurios, tambm utilizada para implementar comandos iterativos (repetitivos) na mquina. Assim, a existncia de operaes relacionais implementadas como instrues em hardware aumentam a eficincia de uma
420
arquitetura. Dada a importncia das operaes relacionais, sintetize e implemente um circuito que gere todas as operaes relacionais com operandos de 32 bits utilizando dois comparadores de magnitude de 16 bits com funcionamento equivalente ao comparador de magnitude de 8 bits contido na figura 8.14 e descrito na tabela 8.10.
Resoluo: Para implementar as operaes relacionais em circuito lgico necessrio realizar as seguinte atividades: a- primeiramente sintetizar a tabela verdade de todas as operaes relacionais: Maior, Menor, Igualdade, Diferena, Maior ou Igual e Menor ou Igual; b- Identificar a dependncia de informaes geradas quando for realizada a associao paralela dos dois componentes comparadores disponibilizados para o projeto. Essa dependncia de informaes e influi na sntese da tabela verdade do circuito combinacional a ser gerado; cassociar em paralelo dois comparadores de magnitude de 16 bits que implementam apenas as operaes Maior que e Menor que;
Item a:- O comparador de magnitude de 16 existente na biblioteca do software Project Manager e que satisfaz os requisitos do projeto o componente COMPMC16, cujo funcionamento equivalente ao componente comparador de magnitude de 8 bits mostrado na figura 8.14 e tabela 8.10. O componente COMPMC16 compara duas entradas disponibilizadas em barramentos de 32 bits e gera o resultado da comparao entre os valores contidos nos dois barramentos nas sadas lgicas GT (Maior que) e LT (Menor que). Quando realizada a associao paralela dos dois comparadores de 16 bits, mostrada na figura 8.15, verifica-se a dependncia entre as sadas GT e LT dos dois componentes. Sendo, que o componente que contem os 16 bits mais significativos dos dados de 32 bits, contidos nos seus barramentos de entrada foi denominado de componente 1 e conseqente suas sadas lgicas Maior que e Menor que so denominadas respectivamente de GT1 e LT1. De forma similar e complementar, o componente que contem os 16 bits menos significativos dos dados comparados foi denominado de componente 0 e suas sadas identificadas por GT0 e LT0.
421
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
GT1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
LT0 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
GT 0 0 1 X 0 0 0 X 1 1 1 X X X X X
LT 0 1 0 X 1 1 1 X 0 0 0 X X X X X
Sadas Eq GE 1 1 0 0 0 1 X X 0 0 0 0 0 0 X X 0 1 0 1 0 1 X X X X X X X X X X
LE 1 1 0 X 0 0 0 X 1 1 1 X X X X X
DIF 0 1 1 X 1 1 1 X 1 1 1 X X X X X
Tabela 8.11- Tabela Verdade das operaes relacionais de 32 bits implementadas com dois componentes COMPMC16 Item b- Para sintetizar os circuitos lgicas que geram todas as seis operaes relacionais foi gerado seis mapas de karnaughj de 4 bits. Nesses mapas as entradas das funes lgicas ss as sadas GT1, LT1, GT0 e LT0 dos dois componentes COMPMC16 utilizados. Os mapas de Karnaugh auxiliaram na sntese obteno da expresses mnimas das operaes relacionais e a conseqente implementao de seus circuitos lgicos. Para efeito de implementao do circuito final e documentao adequada ao software Project Manager as operaes relacionais foram batizadas da seguinte forma: Maior que = GT, Menor que = LT, Igualdade = EQ, Maior ou Igual = GE, Menor ou Igual = LE e Diferena = DIF. As respectivas expresses mnimas obtidas foram: GT = LT1 + LT1 . GT0 LT = LT1 + GT1 . LT0 EQ = GT1 . LT1 . GT0 . LT0 GE = GT1 + LT1 . LT0
422
LE = LT1 + GT1 . GT0 DIF = GT1 + LT1 + GT0 + LT0 GT1 00 00 01 11 0 0 X 1 01 0 0 X 0 11 X X X X 10 1 1 00 01 00 0 1 X 0 01 1 1 X 1 GT1 11 X X X X 10 0 0
LT0
X 11
LT0
X 0
GT0
10 1
GT0
10
LT1
GT = LT1 + LT1 . GT0 GT1 00 00 00 01 11 1 0 X 0 01 0 0 X 0 11 X X X X 10 00 0 0 01 0 X 1 0 X 0 1 0 01
LT1
LT = LT1 + GT1 . LT0 GT1 11 X X X X 10 1 1
LT0
X 0
LT0
11 X 1
GT0
10
GT0
10
LT1
Eq = GT1 . LT1 . GT0 . LT0 GT1 00 00 01 11 1 1 X 0 01 1 1 X 1 11 X X X X 10 0 0 00 01 00 0 1 X 1
LT1
GE = GT1 + LT1 . LT0 GT1 01 1 1 X 1 11 X X X X 10 1 1
LT0
X 0 11 X 1
LT0 GT0
10
GT0
10
LT1
LT1
423
LE = LT1 + GT1 . GT0 DIF = GT1 + LT1 + GT0 + LT0 O circuito final obtido mostrado na figura 8.15. O circuito contm
dois
comparadores de magnitude de 16 bits COMPMC16 associados em paralelo e os circuitos lgicos implementados a partir das expresses lgicas obtidas atravs do auxlio dos respectivos mapas de Karnaugh.
Figura 8.15- Circuito que implementa as Operaes Relacionais de 32 bits com dois componentes COMPMC16
A tabela 8.x descreve a foram de funcionamento do circuito implementado executa todas as operaes relacionais em hardware. Rela o A>B A<B A=B AB AB A#B Sadas EQ GE 0 1 0 0 1 1 X 1 X X 0 X
que
Entradas A[31:0] A[31:0] A[31:0] A[31:0] A[31:0] A[31:0] B[31:0] B[31:0] B[31:0] B[31:0] B[31:0] B[31:0]
GT 1 0 0 X 0 X
LT 0 1 0 0 X X
LE 0 1 1 X 1 X
DIF 1 1 0 X X 1
424
Matemica
B B B B B
Relacional
Lgica
425
A A A
B B B
1 1 1
1 1 1
0 1 1
1 0 1
OR NOT X X XOR Y
AC = A OR B AC = NOT A AC = A B
Tabela 8.13- Tabela de operaes da UCP da Figura 8.16. A Figura 8.16a contm os principais elementos presentes em uma UCP, todos os elementos presentes na referida figura foram discutidos e propostas implementaes de cada um deles, exceto a Unidade de Controle (UC) que ainda no foi proposta uma implementao. Essa Unidade ser implementada aps a apresentao dos conceitos e propostas de Implementao do subsistema de memria presente na Figura 8.2. Pois, a UC ir tambm controlar a forma e os instantes de operar/utilizar o subsistema de memria.
Multiplex
Reg. A
Reg. B
Multiplex
Comparador de Magnitude
UP/DOWN
ULA
Unidade de Controle
Multiplex
Acumulador
426
427
discutida em sala de aula e implementada em conjunto e com propostas elaboradas e sugeridas pelo corpo discente.
O comprimento da palavra define a quantidade de linhas do Barramento de Dados, a quantidade de bits dos seguintes registradores: Registradores Gerais, Registrador
Acumulador. Registrador de Dados de Entrada da Memria; Registrador de Sada de Dados da Memria e de todos os registradores da Memria Principal.
As dimenses da memria definem a quantidade mnima de linhas do Barramento de Endereo e a quantidade mnima do Registrador de Endereo da Memria.
A palavra de nossa mquina ter 8 bits e a memria ser organizada em 4 pginas de 32 bytes, gerando uma memria de 128 bytes. Salienta-se que a modificao dessas caractersticas no influenciar na elaborao da Unidade de Controle. Assim, para aumentar as dimenses da memria deve-se dimensionar com folga o Barramento de Endereo; e para aumentar a quantidade de bits da palavra, basta realizar a associao em paralelo dos elementos de memria.
Nessa instncia do projeto no esto sendo implementados os recursos inerentes Unidade de Controle, assunto tratado no item denominado Unidade de Controle (cap. IX).
Todos os conceitos, componentes e tcnicas necessrios para projetar, implementar, simular e validar o projeto foram discutidos anteriormente. Nessa seo, os elementos e
428
subsistemas j propostos, simulados e validados nas sees anteriores sero integrados em um nica FPGA gerando uma mquina de 8 bis e com memria principal de 128 bytes.
429
Sadas de Controle Figura 8.17- Implementao da Arquitetura de Von Neumann Expandida no Software Projet Manager
Entradas de Controle
Endereos
430
Note, que as caractersticas da mquina no esto atrelados aos conceitos adquiridos para realizar essa implementao. Os conceitos so vlidos e suficientes para implementar uma mquina com quaisquer caractersticas que envolvam dimenses de memria ou
comprimento de palavra. Assim essa implementao tem o objetivo principal de consolidar os conceitos e tcnicas inerentes a Organizao e Arquitetura de Computadores atravs da proposta, sntese, implementao, simulao e validao de um exemplo real. A mquina obtida ser uma ferramenta que apoiar a disseminao de conceitos mais elaborados sobre organizao arquitetura de computadores, tais como: Unidade de Controle Fixo, Unidade de Controle Microprogramada, caractersticas da palavra de instruo, inteiros com sinal, linguagem de montagem, paralelismo, concorrncia, instrues de ponto flutuante, e insero de Unidades bsicas de Entrada e Sada, entre outros. Para tanto e quando necessrio, sero introduzidas modificaes na mquina da Figura 8.17. Tais como, novas operaes na UCP, simulaes sobre atividades concorrentes na arquitetura implementada, aumento da quantidade de Registradores Gerais, aumento da memria principal e insero de Unidade de Entrada e Sada. Esses conceitos sero detalhados no item Unidade de Controle (cap. IX).
clusulas Condicionais e comandos repetitivos (iteraes). Toda instruo para ser executada necessita ser realizada em trs fases distintas; fase de busca dos operandos; fase de execuo da operao e fase de armazenamento do resultado.
431
A seqncia de microordens para realizar a busca de um operando foi proposta na primeiramente na tabela 8.14 e como uma operao de leitura (LER) da memria e reutilizada nas tabelas 8.15 e 8.16. A mesma seqncia de mocroordens ser utilizada para a busca dos operandos, no final da operao de leitura do operando ele ser armazenado em um dos registradores gerais. O primeiro operando ser sempre armazenado no Registrador Geral A e o segundo operando, quando existir, ser armazenado no Registrador Geral B. Essa ordem de escolha dos registradores gerais s poder ser modificada se for exigido pela operao em execuo. A escolha dos registradores gerais ser determinada pelo campo de operao da instruo. A seqncia de microordens para realizar o armazenamento do resultado da operao executada sobre os operandos foi proposta na Tabela 8.14 como uma operao de escrita (ARMAZENA) na memria e reutilizada nas tabelas 8.15 e 8.16. A seqncia de
microordens ser utilizada na operao de armazenamento do resultado de uma operao. A origem do dado no salvamento do resultado na memria (armazenamento) ser sempre o contedo do Registrador Acumulador. A fase de execuo da operao ser semelhante entre algumas instrues. Por exemplo, existe apenas uma diferena entre a realizao de uma operao soma e a realizao de uma operao subtrao. A diferena encontrada no passo 1 da fase de execuo da operao e est relacionada definio do cdigo da operao a ser executada na ULA. Em todas as outras fases, a seqncia de microordens idntica, mudando, evidentemente, os endereos e os valores dos operandos quando necessrio. As diferenas nas operaes relacionais resumem-se, tambm, ao passo que define o cdigo da operao em execuo na ULA. A fase de busca de operandos e armazenamento dos resultados so sempre muito semelhantes em todas as instrues da UCP. As instrues de Diviso e MOD so executadas simultaneamente na UCP. A diferena no est somente no cdigo da operao a ser executada na ULA, mas tambm, na origem do resultado da operao executada. Na operao MOD, o resultado da operao est contido no Registrador Acumulador, e o resultado da operao Diviso est contido no contador UP/DOWN da UCP. Assim, as escolhas dos caminhos a serem percorridos pelos resultados das duas operaes dentro da UCP so diferentes.
432
Observa-se que para assimilar e gerar as seqncias de microordens indispensvel dominar a arquitetura proposta ou a arquitetura implementada pela equipe do aluno. Para tanto necessrio conhecer cada um dos elementos contidos na implementao.
Fase L E R X
Armazenar
X
Passo
1 2 3 4 5 6
Seqncia de Controle da Operao SOMA Comentrio / Atividade - Selecionar caminho do Dado; - Disponibilizar valor de X na Entrada Externa; - Disponibilizar Endereo de X; - Ativar Enable do Registrador de Endereo; - Ativar LOAD do Registrador de Endereo; - Ativar Enable do Registrador de Entrada de Dados; - Gerar/ aguardar Borda de subida no relgio (clock) - Ativar Enable da Memria; - Definir operao de Escrita na Memria; - Gerar/ aguardar Borda de subida no relgio (clock)
Microordem - S_EXT_AC = 1; - X = 59H; - END = ABH; - E_R_END = 1; - L_R_END= 1; - E_R_D_I = 1; - Clock = - E_MEM = 1; - WE =1; - Clock =
433
Fase B U S C A de X
Passo
1 2 3 4 5 6 L E R Y
Armazenar
Y em 7BH
Comentrio / Atividade - Disponibilizar Endereo de X; - Ativar Enable do Registrador de Endereo; - Ativar LOAD do Registrador de Endereo; - Aguardar Borda de subida no relgio (clock); - Ativar Enable da Memria; - Definir operao de Leitura na Memria; - Ativar Enable do Reg. de Sada de Dados da Mem.; - Aguardar Borda de subida no relgio (clock); - Selecionar caminho de X at o Reg. Geral A;
1 2 3 4 5 6 1
B U S C A de Y
2 3 4 5 6 1 2 3 1 2 3 4 5 6
Execuo A R M A Z E N A
Microordem - END = ABH; - E_R_END = 1; - L_R_END= 1; - Clock = ; - E_MEM =1; - WE = 0; - E_R_D_O = 1; - Clock = ; - S_REG_A_B = 0; - S_MULT_UCP= 0; - Ativar Enable do Reg. Geral A; - E_REG_A =1; - Aguardar Borda de subida no relgio (clock); - Clock = ; - Selecionar caminho do Dado; - S_EXT_AC = 1; - Disponibilizar valor de Y na Entrada Externa; - Y = 4FH; - Disponibilizar Endereo de Y; - END = ACH; - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; - Ativar Enable do Registrador de Entrada de Dados; - E_R_D_I = 1; - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Ativar Enable da Memria; - E_MEM = 1; - Definir operao de Escrita na Memria; - WE =1; - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Disponibilizar Endereo de Y; - END = ACH; - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; - Aguardar Borda de subida no relgio (clock); - Clock = ; - Ativar Enable da Memria; - E_MEM =1; - Definir operao de Leitura na Memria; - WE = 0; - Ativar Enable do Reg. de Sada de Dados da Mem.; - E_R_D_O = 1; - Aguardar Borda de subida no relgio (clock); - Clock = ; - Selecionar caminho de Y at o Reg. Geral B; - S_REG_A_B = 1; - S_MULT_UCP= 0; - Ativar Enable do Reg. Geral B; - E_REG_B =1; - Aguardar Borda de subida no relgio (clock); - Clock = ; - Disponibilizar cdigo da Operao SOMA; - ADD_SUB = 1; - Ativar Enable do Registrador Acumulador; - E_AC = 1; - Gerar/ aguardar Borda de subida no relgio (clock); - Clock = ; - Selecionar caminho do Dado; - S_EXT_AC = 0; - Disponibilizar Endereo de W; - END = ADH; - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; - Ativar Enable do Registrador de Entrada de Dados; - E_R_D_I = 1; - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Ativar Enable da Memria; - E_MEM = 1; - Definir operao de Escrita na Memria; - WE =1; -Gerar/ aguardar Borda de subida no relgio (clock) - Clock =
434
Fase
Passo
1 B U S C A de W 5 6 2 3 4
Comentrio / Atividade - Disponibilizar Endereo de W; - Ativar Enable do Registrador de Endereo; - Ativar LOAD do Registrador de Endereo; - Aguardar Borda de subida no relgio (clock); - Ativar Enable da Memria; - Definir operao de Leitura na Memria; - Ativar Enable do Reg. de Sada de Dados da Mem.; - Aguardar Borda de subida no relgio (clock); - Selecionar caminho de Y at o Reg. Geral B; - Ativar Enable do Reg. Geral B; - Aguardar Borda de subida no relgio (clock);
Microordem - END = ADH; - E_R_END = 1; - L_R_END= 1; - Clock = ; - E_MEM =1; - WE = 0; - E_R_D_O = 1; - Clock = ; - S_REG_A_B = 1; - S_MULT_UCP= 0; - E_REG_B =1; - Clock = ;
mquina da Figura 8.17 mostrada na Tabela 8.15. Note que a diferena entre a seqncia de microordens para cada uma das operaes acontece apenas na definio do cdigo da operao para a ULA. As operaes relacionais possibilitam a implementao de clusulas condicionais e comandos repetitivos. Para exemplificar ser implementado um algoritmo que escolha entre duas variveis, aquela de maior valor. Para exemplificar considere as seguintes condies iniciais: - o endereo da varivel X 7AH; e o seu valor F2H; - o endereo da varivel Y 7BH; e o seu valor 45H; - o endereo da varivel W AAH. O algoritmo assume a seguinte forma na arquitetura implementada: Ler(X); Armazenar o X no endereo 7AH; REG_A := X; Ler(Y); Armazenar Y no Endereo 7BH; Armazenar Y no Endereo AAH; REG_B := Y; Se REG_A > REG_B Ento { AC := REG_A; Armazenar AC=X no Endereo AAH}; Mostre AAH.
435
Fase L E R X
Armazenar
X
B U S C A de X
REG_A:=X
L E R Y
Armazenar
Y em 7BH
Armazenar
Y em AAH
Seqncia de Controle das Operaes RELACIONAIS Passo Comentrio / Atividade Microordem - Selecionar caminho do Dado; - S_EXT_AC = 1; 1 - Disponibilizar valor de X na Entrada Externa; - X = F2H; - Disponibilizar Endereo de X; - END = 7AH; 2 - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; 3 - Ativar Enable do Registrador de Entrada de Dados; - E_R_D_I = 1; 4 - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Ativar Enable da Memria; - E_MEM = 1; 5 - Definir operao de Escrita na Memria; - WE =1; 6 - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Disponibilizar Endereo de X; - END = 7AH; 1 - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; 2 - Aguardar Borda de subida no relgio (clock); - Clock = ; - Ativar Enable da Memria; - E_MEM =1; 3 - Definir operao de Leitura na Memria; - WE = 0; - Ativar Enable do Reg. de Sada de Dados da Mem.; - E_R_D_O = 1; 4 - Aguardar Borda de subida no relgio (clock); - Clock = ; - Selecionar caminho de X at o Reg. Geral A; - S_REG_A_B = 0; 5 - S_MULT_UCP= 0; - Ativar Enable do Reg. Geral A; - E_REG_A =1; 6 - Aguardar Borda de subida no relgio (clock); - Clock = ; - Selecionar caminho do Dado; - S_EXT_AC = 1; 1 - Disponibilizar valor de Y na Entrada Externa; - Y = 45H; - Disponibilizar Endereo de Y; - END = 7BH; 2 - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; 3 - Ativar Enable do Registrador de Entrada de Dados; - E_R_D_I = 1; 4 - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Ativar Enable da Memria; - E_MEM = 1; 5 - Definir operao de Escrita na Memria; - WE =1; 6 - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Disponibilizar Endereo de Y; - END = AAH; 1 - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; 2 - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Ativar Enable da Memria; - E_MEM = 1; 3 - Definir operao de Escrita na Memria; - WE =1; 4 - Gerar/ aguardar Borda de subida no relgio (clock) - Clock =
436
Fase B U S C A de Y
Passo
1 2 3 4 5
Comentrio / Atividade - Disponibilizar Endereo de Y; - Ativar Enable do Registrador de Endereo; - Ativar LOAD do Registrador de Endereo; - Aguardar Borda de subida no relgio (clock); - Ativar Enable da Memria; - Definir operao de Leitura na Memria; - Ativar Enable do Reg. de Sada de Dados da Mem.; - Aguardar Borda de subida no relgio (clock); - Selecionar caminho de Y at o Reg. Geral B; - Ativar Enable do Reg. Geral B; - Aguardar Borda de subida no relgio (clock); - Se X > Y - Limpar REG_B (REG_B := 0) - Disponibilizar cdigo da Operao SOMA; - Ativar Enable do Registrador Acumulador; - Gerar/ aguardar Borda de subida no relgio (clock); - Selecionar caminho do Dado; - Disponibilizar Endereo; - Ativar Enable do Registrador de Endereo; - Ativar LOAD do Registrador de Endereo; - Ativar Enable do Registrador de Entrada de Dados; - Gerar/ aguardar Borda de subida no relgio (clock) - Ativar Enable da Memria; - Definir operao de Escrita na Memria; - Gerar/ aguardar Borda de subida no relgio (clock) - Disponibilizar Endereo de W; - Ativar Enable do Registrador de Endereo; - Ativar LOAD do Registrador de Endereo; - Aguardar Borda de subida no relgio (clock); - Ativar Enable da Memria; - Definir operao de Leitura na Memria; - Ativar Enable do Reg. de Sada de Dados da Mem.; - Aguardar Borda de subida no relgio (clock); - Selecionar caminho de Y at o Reg. Geral B; - Ativar Enable do Reg. Geral B; - Aguardar Borda de subida no relgio (clock);
REG_B:=Y
Execuo
A R M A Z E N A
6 1 2 3 4 5 1 2 3 4 5 6 1
Maior
B U S C A de W
2 3 4 5 6
Microordem - END = 7BH; - E_R_END = 1; - L_R_END= 1; - Clock = ; - E_MEM =1; - WE = 0; - E_R_D_O = 1; - Clock = ; - S_REG_A_B = 1; - S_MULT_UCP= 0; - E_REG_B =1; - Clock = ; - GT = 1; - CL_REG_B - ADD_SUB = 1; - E_AC = 1; - Clock = ; (AC:= X) - S_EXT_AC = 0; - END = AAH; - E_R_END = 1; - L_R_END= 1; - E_R_D_I = 1; - Clock = - E_MEM = 1; - WE =1; - Clock = - END = AAH; - E_R_END = 1; - L_R_END= 1; - Clock = ; - E_MEM =1; - WE = 0; - E_R_D_O = 1; - Clock = ; - S_REG_A_B = 1; - S_MULT_UCP= 0; - E_REG_B =1; - Clock = ;
437
Ler(X); Armazenar X no endereo 7AH; Salvar X no REG_A; Ler(Y); Armazenar Y no endereo 7BH; Salvar Y no REG_B; Se Y > X Ento { Salvar o valor de X no Registrador Geral A; Salvar o valor de Y no contador UP/DOWN; Zerar Registrador Geral B }; Enquanto Contador UP/DOWN > 0 Faa { AC := AC + REG_B; REG_B := AC }; Armazenar AC no Endereo W; Mostre W.
O detalhamento da seqncia de microordens est apresentado na tabela 8.16. Para tanto, esto sendo consideradas as seguintes condies iniciais: - o endereo da varivel X 7AH; e o seu valor 59H; - o endereo da varivel Y 7BH; e o seu valor 4FH; - o endereo da varivel W ADH.
438
Fase L E R X
Armazenar
Passo
1 2 3 4 5 6
X em 7AH
B U S C A de X
Salvar X em REG_A
1 2 3 4 5 6
L E R Y
Armazenar
Y em 7BH
1 2 3 4 5 6
B U S C A de Y
Salvar Y em REG_B
1 2 3 4 5 6
Seqncia de Controle da operao MULTIPLICAO Comentrio / Atividade Microordem - Selecionar caminho do Dado; - S_EXT_AC = 1; - Disponibilizar valor de X na Entrada Externa; - X = 59H - Disponibilizar Endereo de X; - END = 7AH; - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; - Ativar Enable do Registrador de Entrada de Dados; - E_R_D_I = 1; - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Ativar Enable da Memria; - E_MEM = 1; - Definir operao de Escrita na Memria; - WE =1; - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Disponibilizar Endereo de X; - END = 7AH; - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; - Aguardar Borda de subida no relgio (clock); - Clock = ; - Ativar Enable da Memria; - E_MEM =1; - Definir operao de Leitura na Memria; - WE = 0; - Ativar Enable do Reg. de Sada de Dados da Mem.; - E_R_D_O = 1; - Aguardar Borda de subida no relgio (clock); - Clock = ; - Selecionar caminho de X at o Reg. Geral A; - S_REG_A_B = 0; - S_MULT_UCP= 0; - Ativar Enable do Reg. Geral A; - E_REG_A =1; - Aguardar Borda de subida no relgio (clock); - Clock = ; - Selecionar caminho do Dado; - S_EXT_AC = 1; - Disponibilizar valor de Y na Entrada Externa; - Y = 4FH; - Disponibilizar Endereo de Y; - END = 7BH; - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; - Ativar Enable do Registrador de Entrada de Dados; - E_R_D_I = 1; - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Ativar Enable da Memria; - E_MEM = 1; - Definir operao de Escrita na Memria; - WE =1; - Gerar/ aguardar Borda de subida no relgio (clock) - Clock = - Disponibilizar Endereo de Y; - END = 7BH; - Ativar Enable do Registrador de Endereo; - E_R_END = 1; - Ativar LOAD do Registrador de Endereo; - L_R_END= 1; - Aguardar Borda de subida no relgio (clock); - Clock = ; - Ativar Enable da Memria; - E_MEM =1; - Definir operao de Leitura na Memria; - WE = 0; - Ativar Enable do Reg. de Sada de Dados da Mem.; - E_R_D_O = 1; - Aguardar Borda de subida no relgio (clock); - Clock = ; - Selecionar caminho de Y at o Reg. Geral B; - S_REG_A_B = 1; - S_MULT_UCP= 0; - Ativar Enable do Reg. Geral B; - E_REG_B =1; - Aguardar Borda de subida no relgio (clock); - Clock = ;
439
Fase P a s s o 1 Execuo Salvar menor 2 no 3 CONT_UCP 4 5 (1) 6(2) 7(3) Iteraes 8(4) 9(5)
Comentrio / Atividade - Disponibilizar cdigo da Op. MULTIPLICAO; - Ativar LOAD do Contador UP/DOWN da UCP; - Aguardar Borda de subida no relgio (clock); - Limpa REG_A ou REG_B (operando menor) - EnquantoDetecta_Zero = 0 - Disponibilizar cdigo da operao SOMA - Ativar Enable do Registrador Acumulador; - Gerar clock; (AC:= REG_A + REG_B); - Ativar ENABLE do contador UP/DOWN da UCP; 10(6) 1); Gerar clock; (REG_menor:=AC; CONT_UCP:= CONT_UCP1 2 3 4 5 6 - Selecionar caminho do Dado; - Disponibilizar Endereo de W; - Ativar Enable do Registrador de Endereo; - Ativar LOAD do Registrador de Endereo; - Ativar Enable do Registrador de Entrada de Dados; - Gerar/ aguardar Borda de subida no relgio (clock) - Ativar Enable da Memria; - Definir operao de Escrita na Memria; -Gerar/ aguardar Borda de subida no relgio (clock)
Microordem - S_MULT_UCP = 1; - L_CONT_UCP = 1; - Clock = ; - Clear_Menor = 1; - Detecta_Zero = 0; - ADD_SUB =1; - E_AC = 1; - Clock = ; - E_CON_UCP = 1; - Clock = ; - S_EXT_AC = 0; - END = ADH; - E_R_END = 1; - L_R_END= 1; - E_R_D_I = 1; - Clock = - E_MEM = 1; - WE =1; - Clock =
A R M A Z E N A
440
Aritmtica capaz de realizar as operaes de soma e subtrao sobre palavras de 32 bits. O circuito dever tambm conter dois registradores gerais para conter os operandos de 32 bits e um registrador acumulador de 32 bits para conter o resultado das operaes realizadas pelo circuito somador/subtrator. A figura P81-1 mostra em diagrama de blocos uma sugesto da estrutura do projeto solicitado.
Registrador Geral A
Registrador Geral B
ULA
Registrador Acumulador
441
442
Multiplex
Reg. A
Reg. B
Multiplex
Comparador de Magnitude
UP/DOWN
ULA
Multiplex
Acumulador
443
Projeto 8.3
444
445
Observaes: a- Os endereos das variveis contidas no trecho de programa devem obedecer aos critrios contidos na tabela abaixo: Varivel Endereo Valor X Banco zero da memria 31E7CD39 (H) Y Banco zero da memria 1EF05248 (H) R Banco um da memria calculado S Banco dois da memria calculado b- O relatrio dever seguir o formato sugerido no documento Roteiro para a Gerao de Relatrios de Projetos (Anexo VII-2). Entrada Externa multiplex
Barramento de Dados
Seleo
Instruo
Endereo s
Memria
Controles L/E
Barramento de Controle
Habilita A/B
Operao ULA
Reg. Acumulador
Habilita AC
Unidade de Controle (UC) Figura P84.1 Diagrama e blocos de uma arquitetura de Von-Neumann genrica.
446
arquitetura eficiente (boa) ou ineficiente (ruim) se no for considerada a aplicao na qual ela est sendo empregada. O projeto em tela ser utilizado tanto para consolidar os conceitos e tcnicas de organizao e arquitetura de computadores j repassados aos alunos, quanto para projetar, implementar, validar o hardware de uma mquina com todos os subsistemas existentes em uma arquitetura de Von Neumann clssica. Alm da conseqente avaliao de desempenho, medida em MIPS, da mesma. A mquina ser de utilidade para aplicar os conceitos contidos no captulo IX (Unidade de Controle). Para tanto, os subsistemas j desenvolvidos e validados separadamente nos projetos UCP-32 (projetos: 8.1; 8.2; 8.3 e 8.4) e RAM-1024x32 (projeto 7.1, contido no captulo VII) devem ser reutilizados para implementar a arquitetura da mquina solicitada. A Figura P85.1 mostra de forma sinttica os principais subsistemas existentes na arquitetura da mquina proposta. A Figura P85.2 mostra a UCP solicitada no projeto 8.2 (UCP de 32 bits - Estruturas Iterativas e Condicionais) em diagrama de blocos. A Figura P85.3 mostra, tambm em diagrama de blocos, a memria RAM solicitada no projeto 7.1 (RAM esttica 2Kx32). A mquina a ser projetada dever conter as seguintes caractersticas bsicas: - UCP de 32 bits contendo: dois registradores gerais; um registrador acumulador, uma ULA de 32 bits com capacidade para executar instrues aritmticas e relacionais; subsistemas para auxiliar a execuo de instrues condicionais e iterativas; - Memria RAM esttica de 2048 palavras de 32 bits.
447
O trecho de programa que segue, escrito em uma linguagem de alto nvel genrica, dever ser utilizado para simular e validar a mquina implementada. Para tanto, deve ser gerada e comentada a seqncia de microordens necessrias para executar o programa na mquina obtida. READ(X); READ(Y); Produto := X * Y; READ(X); READ(Z); Quociente := X DIV Z; Resto := X MOD Z; WRITE(Produto); WRITE(Quociente); Write(Resto)
Dados
Entrada de Dados
Equipamento
E/S
multiplexador
Controle
Endereo
Sada de Dados
E/S
UCP 32
Dados
Unidade De Controle
448
Multiplex
Reg. A
Reg. B
Multiplex
Comparador de Magnitude
UP/DOWN
ULA
Multiplex
Acumulador
449
Registrador de Endereo
Endereos
de Endereo
Decodificador
Registradores de Memria
Unidade de Controle
Multiplexador
b- O relatrio dever seguir o formato sugerido no documento Roteiro para a Gerao de Relatrios de Projetos (Anexo VII-2).
450
Ck
Ck
Reg. A
E_A
Reg. B
E_B
Multiplex S1
Comparador de Magnitude
Ck
UP/DOWN
L
ULA
Cd_Op
Unidade de Controle
Multiplex S2 Ck
Acumulador
E_Ac
451
25ns; 41,66 MIPS 32ns; 31,25 MIPS 33ns; 30,3 MIPS 25ns; 40 MIPS Nenhuma das anteriores
452
Endereos
Memria
XX
multiplex
Sada Externa
Reg.Geral A
Reg. Geral B
ULA
ADD/SUB
Reg. Acumulador
453
2- A figura que segue mostra em diagrama de blocos a Unidade Central de Processamento (UCP) desenvolvida em sala de aula. Utilizando as informaes contidas na figura , calcule a capacidade de execuo de operaes soma em MIPS na arquitetura. Para tanto utilize as seguintes condies iniciais: tempo de leitura na memria = 7ns; tempo de escrita na memria = 8ns; tempo de atraso dos multiplex = 1ns, tempo de atraso dos registradores=2ns; tempo de atraso da ULA=2ns; tempos de atraso do Comparador de Magnitude e Contador UP/DOWN = 2ns. Considere tambm que os valores dos operandos (variveis) X e Y j esto contidos na memria. W:=X +Y (valor de X=AFH e Y:=3CH, endereos X 3AH, Y 3BH e W 3CH)
Multiplex
S0
Ck
Ck
Reg. A
E_A
Reg. B
E_B
Multiplex S1
Comparador de Magnitude
Ck
UP/DOWN
L
ULA
Cd_Op
Unidade de Controle
Multiplex S2 Ck
Acumulador
E_Ac
454
3- No Projeto 8.1, foi solicitado e previsto a implementao e simulao de um circuito combinacional para realizar a soma e subtrao de duas palavras de 32 bits (ULA de 32 bits), utilizando somente elementos Somadores Completos. Comente as seguintes questes:
4- Sugerir ao menos uma nova operao que pode ser inserida na UCP desenvolvida. Descrever e comentar forma de execuo ou o algoritmo (seqncia de microordens) da nova operao. Obs. A operao sugerida deve ser diferente das contidas na tabela 8.13 do item 8.2.6 do desse texto.
5- Introduzir na Arquitetura de Von Neumann simplificada mostrada na figura 8.1 a seguinte modificao: Trocar a ULA que realiza somente a operao soma de dois operandos por uma ULA que realize as operaes de soma e subtrao (ADD/SUB). Comentar os efeitos dessa mudana sobre a arquitetura original (benefcios e custos).
455