Arquitectura de Computadores II Ano lectivo 2008/09 http://ac2.dcti.iscte.pt 1 Apresentação da disciplina 2 Programa Conceitos básicos sobre CPUs Conceitos avançados Datapath, Registos, ALU Processador MAC-1 e linguagem Assembly Unidade de controlo Arquitectura do conjunto de instruções Medidas de desempenho Pipelines Aritmética Representação de inteiros e reais Multiplicação de inteiros Técnicas para aceleração da adição 3 Programa Memória Hierarquia da memória Memória cache Memória virtual Memória secundária – discos I/O Memory-mapped I/O e Portos Interrupções DMA Arbitragem Periféricos 4 Objectivos Compreender o funcionamento de um processador com uma arquitectura básica Desenvolver e interpretar pequenos módulos de programas em linguagem assembly Conhecer as principais técnicas utilizadas para aumento do desempenho de um processador Conhecer a hierarquia de um sistema de memória actual Compreender o funcionamento dos principais periféricos de um computador 5 Requisitos Arquitectura de Computadores I Circuitos combinatórios Circuitos sequenciais (registos e controlo) Memória Introdução à Programação Variáveis e matrizes Ciclos e condições 6 Bibliografia Recomendada: Computer Organization and Design, 3rd Edition Patterson & Henessy, Morgan Kaufman, 2005 Outros livros Structured Computer Organization, 5th Edition Andrew Tanenbaum, Prentice-Hall, 2005 Logic and Computer Design Fundamentals, 3rd Edition Mano & Kime, Prentice-Hall, 2007 7 Avaliação Avaliação 2 Trabalhos (25% cada um) A nota é fixada por uma discussão oral Exame (50%) Sobre toda a matéria. Nota mínima: 8 Avaliação O periódica por exame exame conta 100%. Nota mínima: 10 8 Corpo docente Eng. Tomás Brandão (responsável) [email protected] Gab. D6.18 Prof. Luís Cancela [email protected] Gab. D6.35 Prof. Carlos Sá da Costa (coordenação do grupo AC/SO) 9 Aulas práticas e de dúvidas Aulas Práticas Resolução de exercícios Apoio aos trabalhos Discussões dos trabalhos (?) Aulas de dúvidas 3ª feira às 14:00 (Gab. D6.18) 4ª feira às 14:30 (Gab. D6.35) 5ª feira às 14:00 (Gab. D6.18) 10 Transferências entre registos 11 Registos Registo – Conjunto de flip-flops e portas lógicas adicionais que permite o armazenamento e manipulação de informação Operações típicas Inicializar o registo com 0’s – Clear (ou Reset) Carregar o registo com novos dados – Load Deslocar os bits dentro do registo – Shift 12 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 Linhas grossas são barramentos ou Bus R1 Load Clear L1 C1 Dout 13 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 R2 L2 Load S Add/Sub 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 R1 Load Clear L1 C1 Dout 14 Notação utilizada Designação Significado Exemplos Letras (e números) Registos R0; AC; PC; IR Parêntesis Partes de um registo R2(1); R2(0...3); AC(8..15) Carregamento R3 R2 + R1; R0 4 Vírgula Operações em simultâneo R1 R0, R2 R3+R1 M[x] 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) + Soma & AND (bit-a-bit) - Subtracção | OR (bit-a-bit) Multiplicação XOR (bit-a-bit) << Deslocamento para a esquerda 15 Utilização de multiplexers Selecção da origem de dados Variáveis de controlo C1 C2 S Load R1 n 0 MUX n R2 1 n R0 C2 C1 Função 0 x --- 1 0 R0 R1 1 1 R0 R2 16 Utilização de multiplexers R0 C1 L0 Load R1 Load R2 L2 Exemplos de operações Operação S1 L1 C0 S0 0 1 MUX 2 3 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 Bus de dados externos Load Din 17 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 18 Utilização de portas tri-state Princípio de funcionamento Enable = 0 Enable A A Y Y Enable A Y 0 x alta impedância 1 0 0 1 1 1 Y fica isolado de A (alta impedância) Enable = 1 A Y Y=A 19 Utilização de portas tri-state Registos bidireccionais Reg Registo bidireccional com saídas tri-state EN Dados Load Esquema Reg Dados Load Nota: existe uma porta tri-state por cada linha de dados EN 20 Utilização de portas tri-state EN – Controlo da saída Load – Controlo da entrada 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 1 0 0 0 1 0 R0 R1, R2 R0 Load EN Din, Dout L1 E1 Load EN R2 Impossível L2 E2 Load EN 21 Utilização de portas tri-state 2/4 RD0 RD1 A0 A1 R0 0 1 2 3 L0 E0 Selecção do registo destino 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 22 Exemplo Fonte para o Bus B FB0 FB1 S1 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 S1 S0 Data out Fonte para o Bus A FA1 FA0 A B ALU C 23 Arquitectura básica de um CPU 24 Datapath Juntando mais alguns componentes... LE H RB0 RB1 S1 S0 Load Dec RC0 RC1 A0 A1 Load 0 1 2 3 Load Load R0 0 1 MUX 2 3 BUS B Deslocamento R1 R2 0 1 2 MUX 3 R3 S1 S0 RA1 RA0 ALU BUS A 0 F E S 1 MUX MF BUS C 25 Datapath Em blocos: BUS C RA RB 2 F 2 H MF Estado 3 2 4 BUS B RC 2 LE Guardar dados Banco de Registos Unidade Funcional BUS A Operações aritméticas Operações lógicas 26 Datapath Contudo, este esquema ainda não é 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 27 Comunicação datapath-memória Selecção de constantes Selecção de dados vindos da memória BUS C RA RB 2 Constante MB F 2 H MF Estado 3 0 2 4 MD BUS B 1 RC 2 Banco de Registos LE Unidade Funcional BUS A 0 1 MW Memória Controlo de escrita/leitura na memória Din Endereço Dout R/W 28 Palavras de controlo Combinação binária correspondente ao conjunto dos 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 29 Unidade de controlo Gera as palavras de controlo de acordo com as instruções de um programa Dados Registos Sinais de controlo Memória Endereços Unidade de Controlo Sinais de controlo Unidade funcional Flags Dados 30 Execução de uma instrução Micro-processador Palavra de Unidadecontrolo de Controlo Datapath Flags Endereço de instrução End. Din R/W Instrução D out Memória 31