Aula 2 – Sumário Transferências Notação entre registos utilizada Utilização de multiplexers, saídas tri-state e descodificadores Arquitectura A básica de um processador máquina de von Neumann Datapath Palavras de controlo 1 Transferências entre registos 2 Registos Registo Conjunto de flip-flops e portas lógicas que permite o armazenamento e a manipulação de informação Operações típicas Inicializar o registo a ‘0’s – Clear (ou Reset) Carregar o registo com novos dados – Load Deslocar os bits dentro do registo – Shift 3 Registos Din Exemplo de um circuito Variáveis de controlo: R2 L1 – Carregamento de R1 L2 Load C1 – Clear de R1 (activo a low) L2 – Carregamento de R2 S – Selecção da operação: S Add/Sub 0 – soma 1 – subtrai Load L1 Clear C1 R1 Linhas grossas são barramentos ou Bus Dout 4 Registos Din Exemplos de operações C1 L1 L2 S Operação 0 x 0 x R1 0 1 0 0 x NOP (não faz nada) 1 0 1 x R2 Din 1 1 0 0 R1 R1 + R2 1 1 0 1 R1 R1 – R2 1 1 1 0 R1 R1 + R2, R2 Din 1 1 1 1 R1 R1 – R2, R2 Din R2 L2 Load S Add/Sub Load L1 Clear C1 R1 Dout 5 Notação utilizada Designação Significado Exemplos Letras e números Registos R0; AC; PC; IR Carregamento R3 R2 + R1; R0 4 Vírgula Operações em simultâneo R1 R0, R2 R3+R1 M[x] Conteúdo da posição de memória x R0 M[1023]; R2 M[R1] Conteúdo do endereço 1023 Operação Significado Conteúdo do endereço indicado pelo registo R1 Operação Significado ~ Negação (bit-a-bit) + Adição & AND (bit-a-bit) – Subtracção | OR (bit-a-bit) Multiplicação XOR (bit-a-bit) << Deslocamento para a esquerda 6 Utilização de multiplexers Selecção da origem de dados Variáveis de controlo C1 C2 S Load R1 n 0 MUX n 1 n R0 C2 C1 Função 0 x --- 1 0 R0 R1 1 1 R0 R2 R2 7 Utilização de multiplexers R0 C1 L0 Load R1 Load Exemplos de operações Operação S1 L1 C0 0 1 2 3 S0 MUX C1 C0 L2 L1 L0 R0 R1 0 1 0 0 1 R0 R1, R2 R1 0 1 1 0 1 R1 Din 1 1 0 1 0 R0 R1, R2 R0 Impossível R2 L2 Load Bus de dados externos (exemplo: vindos da memória) Din 8 Utilização de multiplexers Selecção das operações R2 R1 S0 L0 S0 Função 0 x --- 1 0 R0 ~R2 1 1 R0 R1 + R2 MUX Add S 0 1 L0 Load R0 9 Utilização de saídas tri-state Princípio de funcionamento Enable=0 Enable A Y Enable A Y 0 x --- 1 0 0 1 1 1 A Y Y fica isolado de A (alta impedância) Enable=1 A Y Y fica ligado a A 10 Utilização de saídas tri-state Registos bidireccionais Reg Registo bidireccional com saídas tri-state EN Dados Load Esquema Reg Nota: existe uma saída tri-state por cada linha de dados Dados Load EN 11 Utilização de saídas tri-state EN – Enable da saída Load – Carregamento R0 L0 E0 R1 Exemplos Operação E2 E1 E0 L2 L1 L0 R0 R1 0 1 0 0 0 1 R0 R1, R2 R1 0 1 0 1 0 1 R1 Din 0 0 0 0 1 0 R0 R1, R2 R0 Load EN L1 E1 Load EN Din, Dout R2 Impossível L2 E2 Load EN 12 Utilização de descodificadores 2/4 RD0 RD1 A0 A1 R0 0 1 2 3 Selecção do registo destino L0 E0 Load EN R1 L1 Selecção do registo fonte E1 2/4 RF0 RF1 A0 A1 Din, Dout Load EN R2 0 1 2 3 L2 E2 Load EN 13 Exemplo Fonte para o Bus B FB0 FB1 S 1 S0 R0 0 1 MUX 2 3 Load Destino R1 2/4 RD0 RD1 A0 A1 Load 0 1 2 3 R2 Load 0 1 2 MUX 3 Data in S 1 S0 Data out Fonte para o Bus A De ou para a memória FA1 FA0 A B Unidade Funcional C 14 Arquitectura básica de um CPU 15 Processador CPU (Central Processing Unit) É o principal responsável pela actividade de um computador Executa sequências de instruções definidas em programas Comunica com os restantes elementos do sistema através dos seus pinos, ligados a barramentos externos 16 A máquina de von Neumann John von Neumann (1903-1957) Propôs uma arquitectura de computadores conhecida posteriormente como Máquina de von Neumann CPU composto por 3 unidades principais Banco de registos Unidade funcional Unidade de controlo O CPU executa instruções carregadas em memória – o programa 17 Estrutura básica de um CPU Gera os sinais que seleccionam a fonte e o destino dos dados, assim como a operação a realizar CPU Banco de registos Guardam vários tipos de dados Bus A Operações aritméticas Operações lógicas Operações de deslocamento Sinais de controlo Bus B Unidade de controlo Sinais de controlo Unidade funcional Estado (ou flags) Bus C 18 Estrutura básica de um CPU CPU Datapath Banco de registos Bus A Sinais de controlo Bus B Unidade de controlo Sinais de controlo Unidade funcional Estado (ou flags) Bus C 19 Datapath Com mais pormenor… Unidade funcional H RB0 RB1 LE S1 S0 Load Dec RC0 RC1 A0 A1 Load 0 1 2 3 Load Load R0 0 1 2 3 MUX Deslocamento R1 R2 0 1 2 3 R3 ALU MUX S1 S0 Banco de registos BUS B RA1 RA0 BUS A 0 F E MF S 1 MUX BUS C 20 Datapath Em blocos: RC 2 LE RA RB 2 F H MF E 2 BUS B Banco de Registos Unidade Funcional BUS A BUS C 21 Datapath Contudo, o esquema ainda não está operacional Falta-lhe a possibilidade de comunicar com o exterior Com uma memória RAM, por exemplo E a possibilidade de carregar constantes Como resolver? Uma hipótese será: Acrescentar mais multiplexers e mais sinais de controlo Os barramentos A, B e C passam a ter funcionalidades adicionais: Bus A – para endereçar a memória Bus B – para constantes e dados a escrever na memória Bus C – para dados lidos da memória 22 Comunicação Datapath-Memória Selecção de constantes Selecção de dados vindos da memória BUS C RA RB 2 Constante F MB MD BUS B 1 RC E 2 0 2 H MF Banco de Registos LE Unidade Funcional BUS A 0 1 WR Memória Controlo de escrita/leitura na memória Din Endereço Dout R/W 23 Palavras de controlo Palavra de controlo ou Micro-instrução Combinação binária correspondente ao conjunto de todos os sinais de controlo Possível estrutura de uma palavra de controlo (para o esquema anterior): 15 14 RC 13 12 RB Registos 11 10 RA 9 8 F 7 6 5 H 4 MF Unidade funcional 3 2 1 0 LE MD MB WR Mem / Reg / Const 24 Execução de uma instrução Processador Palavra de Unidadecontrolo de Controlo Datapath Estado Endereço de instrução Instrução End. Din R/W Dout Memória 25