RAM PCI UART IDE Microprocessador -> CPU encapsulada em um único circuito integrado. Pelo fato de concentrar apenas a função de controle no “chip”, as aplicações de microprocessadores são complexas voltadas para multimídia (controle de som + imagem + comunicação). Exemplo: - Microprocessador Pentium IV da Intel. A aplicação do Pentium é em computadores multimídia. - Microprocessador ARM voltado para aplicações multimídia dedicadas. Microcontrolador -> CPU + MEMORIA + PERIFËRICOS encapsulados em um único circuito integrado. Dedicado a funções menos complexas de controle. Normalmente está “embarcado” em equipamentos dedicados. Utiliza o conceito de “firmware” para o programa dedicado. Ex: - Microcontrolador 8051 da Intel (89S51 – Atmel; LPC932 – NXP) - Microcontrolador PIC12F628A Microchip - Microcontrolador MC9RS08LC60 Freescale. Unidade Central de Processamento : • Controle de Todo o Sistema; • Manipulação dos Dados; • Acessa e interpreta instruções do programa contido na memória; • Executa operações Lógicas e Aritméticas Memória : • Armazena os Programas; • Armazena os Dados que serão manipulados; Dispositivos de Entrada e Saída : • Conexão do computador com sistemas externos Barramento de Dados : Linhas paralelas que permitem a comunicação bidirecional entre CPU, Memórias e Dispositivos de IO. Somente um dispositivo utiliza o barramento de cada vez. Barramento de Endereços : Linhas paralelas unidericionais pelas quais a CPU habilita qual dispositivo utilizará o barramento de dados. Barramento de Controle : Linhas por onde trafegam os sinais de controle e sinalização do sistema. Memória: Bloco semicondutor com capacidade de armazenar informações. Armazena basicamente as instruções a serem processadas (através de seus códigos de operação), variáveis (como resultados de operações da C.P.U.) ou dados de entrada e saída dos periféricos. O programa a ser processado deve necessariamente estar presente na memória (por isso o tamanho cada vez maior das memórias voláteis - RAMs - dos computadores atuais, pois os programas têm tamanhos cada vez maiores). A memória dos computadores pode ser dividida em volátil (RAM estática / dinâmica) e não voláteis (ROM / PROM / EPROM / E2PROM - FLASH). Em computadores pessoais temos o conceito de BIOS (programa de inicialização de periféricos) + SISTEMA OPERACIONAL ( interface gráfica amigável ao usuário) + APLICATIVO (programa final). Periféricos: Bloco de comunicação do conjunto CPU / memória com o meio exterior. Pode ser caracterizado como entrada (teclado, mouse, etc.) ou saída (monitor, impressora, plotter, etc.). É a interface de comunicação com o usuário e a parte do sistema que normalmente tem acesso. Em microcontroladores estes periféricos são menos complexos, como PORTS, TIMERS, UARTS, CONVERSORES A/D e D/A, SPI / I2C, etc. - Barramento de Dados (Data Bus): carrega a informação da instrução (através do código de operação), variável do processamento (cálculo intermediário de uma fórmula por exemplo) ou informação de um periférico de E/S (dado digitado em um teclado). O tamanho da via de dados determina respectivamente o máximo número de instruções (e portanto o potencial de processamento) e a precisão do processamento aritmético (através do cálculo de ponto flutuante) ou o número de símbolos possíveis a ser representado (por exemplo, pontos de uma foto). Exemplo: 1) - O processador 8085 possui 8 bits no barramento -> máximo de 256 instruções e variáveis numéricas entre -127 a +127 (ou 0 a 255). 2) - O processador Pentium possui 32 bits no barramento -> variáveis numéricas entre 2147483648 e + 2147483648. Barramento de Endereço (Address Bus) : carrega a informação binária da localização de um dado de memória ou E/S. A capacidade de acesso é determinada pela expressão 2n. O tamanho do barramento de endereço acompanhou a evolução do poder de processamento do microprocessadores já que foi necessário cada vez mais memória para armazenar uma quantidade cada vez maior de dados. Exemplo: - 8085 -> 16 bits na via de endereço -> 216 = 65512 kbytes - 8088 -> 20 bits na via de endereço -> 1 Mbyte Barramento de controle (Control Bus): Agrupa todos os sinais necessários ao controle da transferência de informação entre as unidades do sistema. Habilita e desabilita periféricos, regula o modo de operação R, W, etc ULA: A Unidade Lógica Aritmética (ULA) é um bloco que executa operações aritméticas e lógicas. Entre as operações aritméticas que excuta, ela soma, subtrai, divide e determina se um número é positivo ou negativo ou se é zero. Ela pode também executar funções lógicas como "E", "OU" ou "OU EXCLUSIVO". Von Neuman (1903 - 1957) VIA DE ENDEREÇOS Unidade de Controle Memória UCP Unidade Lógica e Aritmética VIA DE DADOS VIA DE CONTROLE I/O Von Neuman (1903 - 1957) Harvard Registrador é o elemento básico de memória em um sistema computacional. Um registrador é a ligação de FlipFlops sincronizados pelo mesmo relógio. O conteúdo de cada FlipFlop normalmente está associado a um bit de informação. FlipFlops: Tem apenas dois estados estáveis(1/0, Alto/Baixo) e possui a capacidade de reter seu estado. Tem dois estados de saída sendo um o complemento do outro. Pode ser sensível ao nível(estado da entrada) ou a mudança de nível(borda de subida ou descida). R S Q 0 0 Q0 1 0 0 0 1 1 1 1 ND Nunca muda de estado se as entradas R(reset) e S(set) são 0. Com 0 na entrada S e um na entrada R passa para o estado Q(saída)=0. Com 1 em S e 0 em R passa para o estado Q=1. R e S em 1 não definem um estado válido. D Q 0 D0 1 D0 Funciona como uma unidade de atraso, sua saída Q apresenta o estado da entrada D anterior ao último pulso de clock. . J K Q 0 0 Q0 1 0 1 0 1 0 1 1 Q0 Funciona similarmente ao RS porém apresenta um clock e inverte seu ultimo estado quando apresentar ambas entradas em nível lógico 1. Note que o FlipFlop D apresenta lógica baixa na entrada ao contrário do JK. Exercício 2.1®: Monte um circuito de transferência de 2 bits usando flipFlops JK. Considerando dois registradores (A e B) formados por n(tamanho da palavra) flipflops JK. A transferência de informação de a para b será efetuada quando o sinal de clock global do sistema juntamente com o sinal de controle (MOVE A -> B) ativarem o clock dos flipflops do registrador B, mantendo o conteúdo de A inalterado. Considerando dois registradores (A e B) formados por n(tamanho da palavra) flipflops JK. A transferência de informação de a para b será efetuada quando o sinal de clock global do sistema juntamente com o sinal de controle (MOVE A -> B) ativarem o clock dos flipflops do registrador B, mantendo o conteúdo de A inalterado. A saída do registrador será complementada ao sinal de clok. Essa operação é executada, por exemplo, para realizar subtração em circuitos somadores. Essa operação tem a propriedade de deslocar os bits de um registrador com flipflops ligados em cadeia. Costuma ser utilizado para operações de multiplicação. Operações de incremento e decremento são muito utilizadas em sistemas computacionais, desde a contagem de posições em vetores à marcação de posição de execução de um programa. Um contador pode ser controlado como crescente ou decrescente. Ainda pode ser síncrono ou Assincrono. Exercício 2.2: Monte um contador BCD, isto é um incrementador que reset quando chegar em 1010. Exercício 2.3 **DESAFIO**: Monte um circuito capaz de efetuar somas com sinal e multiplicação de dois números binários de 4 bits. Esse circuito poderá ainda operar comparação de magnitude(<,>,=). Use portas lógicas e flipflops a vontade. Unidade Central de Processamento : • Unidade Lógica e Aritmética • Unidade de Registros •Unidade de Controle Unidade de Controle UCP Unidade Lógica e Aritmética Sistema hipotético: Definiremos um sistema hipotético que possui uma ULA que opera dois registradores de 8 bits (A e B) e possui outro (F) para apresentar a saída com os seguintes Controles: M, S1 e S2 seleciona a operação a ser executada conforme a tabela: STA e STB carrega o conteúdo do barramento de Dados nos registradores A e B respectivamente. OE carrega o conteúdo de F no barramento de Dados. S0 S1 M=0 op.Aritméticas M=1 op.Lógicas 0 0 F = A plus B AND 0 1 F = A minus B OR 1 0 F=AXB NOT 1 1 F = A /B XOR Registros A e B : Registros de Propósito geral: armazenam informações variadas a serem processadas: • LD : Carrega inf. Do bar. De dados. • OE Entrega o conteúdo armazenado para o bar. De dados Registro RI: Registrador de Instruções: Armazena o código da instrução a ser executada. • LD : Carrega inf. Do bar. De dados. Registro REM: Registrador de endereço de memória: Armazena o endereço de memória a ser acessado. Un. de Registros Registro PC: Contador de Programa: Armazena o endereço da próxima instrução a ser buscada na memória. É incrementado a cada busca. •CKEN : Habilita incremento pelo Clock do sistema . •PCldl e PCldh: Carrega informação do Bar. De dados, bits menos significativos e mais significativos respectivamente. Registro PSW: Registrador de Status: Armazena informações relevantes ao funcionamento da UCP. Unidade de Controle : É a unidade que controla a execução das instruções: • Extrai a instrução da memória principal. • Interpreta o Código de operação (na ROM). •Controla a execução da instrução pelo sequenciamento dos sinais de controle. Recebe o código da instrução proveniente de RI e possui um sequenciador que incrementa os bits menos significativos de endereço da ROM executando assim as microinstruções : Unidade de Controle : Além dos controles: • M, S1, S0, STA, STB, OEalu => Unidade Lógica e Aritmética • Ckenpc, LDpch, LDpcl, LDa, OEa, LDb, OEb, LDri, Ldrem, Ckenrem Comanda: •MREQ(habilita memória),IORQ(habilita i/o),RD(leitura do dispositivo), WR(escrita no dispositivo) . TIPOS DE INSTRUÇÕES Transferência de dados : Transfere dados ou blocos de dados entre os registradores, posições de memória e barramento de dados. • MOVE A, B Tratamento de operandos: Realizam operações aritméticas ou lógicas. • ADD A, B Instruções de desvio: Determinam desvio no fluxo do programa. • JMP, Jcond, JSR, RET Entrada/Saída: Comunicação da UCP com interfaces de I/O. • IN port Miscelânea: Instruções especiais de um processador em particular. Ciclo de Máquina : É 1(UMA) seqüência de microoperações que são executadas caracterizando uma operação. A execução de instruções é dividida em ciclos de máquina. Fase de Busca(fetch) : É o ciclo de máquina para leitura do código de operação(c.o), a primeira palavra da instrução. O ciclo de busca é idêntico para qualquer instrução. Fase de Execussão : São os ciclos de máquinas necessários para busca das palavras restantes da instrução e execução dessa. É diferente e compreende números de ciclos de máquina diferentes para cada instrução. •Instrução •Ciclo •Microprograma •Microinstruções •Microoperações •Microcomando 1 00 00 00 2 00 00 01 00 00 05h 3 00 00 00 05h 05h 05h 02 00 05h 4 00 00 05 01 3d 05 00 05 5 00 00 05 01 3d 3d 3d 01 05 05 3d 6 00 00 05 01 3d 3d 05 00 00 7 01 01 27 01 3d 3d 05 01 00 8 01 01 27 01 3d 27 27 3d 27 02 00 9 01 01 27 02 3d 3d 27 00 27 10 01 3d 01 27 02 3d 3d 3d 27 01 27 11 02 3d 02 6d 02 3d 3d 27 02 27 12 02 3d 02 6d 02 6d 3d 6d 03 6d 3d 27 27 13 02 3d 02 6d 03 6d 3d 3d 27 04 27 14 02 3d 02 6d 03 6d 9d 9d 9d 3d 27 05 27 15 02 3d 02 6d 03 6d 9d 9d 3d 27 00 00 16 02 3d 02 6d 03 6d 9d 9d 3d 27 00 00 2: { 3: int x,a; 4: x = 20; C:0x0800 7F14 5: x = x + 5; C:0x0802 7405 C:0x0804 2F C:0x0805 FF C:0x0806 E4 C:0x0807 33 6: a = x; C:0x0808 F508 C:0x080A 8F09 7: } C:0x080C 22 ... MOV R7,#0x14 MOV A,#0x05 ADD A,R7 MOV R7,A CLR A RLC A MOV MOV RET 0x08,A 0x09,R7 Sub-Rotinas : Endereço de Retorno junto à Sub-Rotina Armazena-se a primeira palavra para o endereço de retorno(DS). Chamada : JSR SUB (Sub está armazenada a partir da posição de memória endsub) endsub <- (PC) PC <- endsub +1 Retorno: JUMP(SUB) PUSH PC (SP) <- (PC) SP <- (SP)+1 JUMP endsub POP PC (SP) <- (SP)-1 PC <- ((SP)) Endereço de Retorno em Pilha As pilhas normalmente são definidas dentro da própria memória O registrador SP(Stack Pointer) contém o endereço da 1ª posição livre na pilha.