25
Arquitectura Interna de um Macintosh Power Mac G4 Jorge Filipe Al¸ cada Tom´ as da Costa Nuno Daniel Raposo Subtil 6 de Junho de 2003

Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

Arquitectura Interna de um MacintoshPower Mac G4

Jorge Filipe Alcada Tomas da Costa

Nuno Daniel Raposo Subtil

6 de Junho de 2003

Page 2: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

Conteudo

1. Arquitectura 51.1. Descricao geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2. Modulo do processador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3. CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.4. U2 — ponte PCI e controlador de memoria . . . . . . . . . . . . . . . . . 71.5. Busses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.5.1. Bus do Processador . . . . . . . . . . . . . . . . . . . . . . . . . . 71.5.2. Bus da memoria principal . . . . . . . . . . . . . . . . . . . . . . 81.5.3. Interface Ultra ATA/100 . . . . . . . . . . . . . . . . . . . . . . . 81.5.4. Interface Ultra ATA/66 . . . . . . . . . . . . . . . . . . . . . . . . 81.5.5. Interface EIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2. Processador 92.1. Descricao geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92.2. Pipeline do processador . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.2.1. Unidade de instrucoes (IU) . . . . . . . . . . . . . . . . . . . . . . 102.2.2. Unidades de inteiros (IU) . . . . . . . . . . . . . . . . . . . . . . . 112.2.3. Unidade de vırgula flutuante (FPU) . . . . . . . . . . . . . . . . . 112.2.4. Unidade de load/store (LSU) . . . . . . . . . . . . . . . . . . . . 112.2.5. Unidades AltiVec . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

2.2.5.1. Unidade de permuta vectorial (VPU) . . . . . . . . . . . 122.2.5.2. Unidades de calculo vectorial inteiro (VIU1, VIU2) . . . 122.2.5.3. Unidade de calculo vectorial de vırgula flutuante (VFPU) 12

2.3. Registos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.4. Caches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.4.1. Visao Geral . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132.4.2. Unidade Load/Store (LSU) . . . . . . . . . . . . . . . . . . . . . 16

2.4.2.1. Filas de armazenamento LSU . . . . . . . . . . . . . . . 162.4.3. Organizacao da cache L1 . . . . . . . . . . . . . . . . . . . . . . . 172.4.4. Coerencia de cache e memoria . . . . . . . . . . . . . . . . . . . . 18

2.5. Unidade de Gestao de Memoria . . . . . . . . . . . . . . . . . . . . . . . 182.5.1. Mecanismos de Traducao de Enderecos . . . . . . . . . . . . . . . 19

3. Dispositivos de I/O 203.1. Portas USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2

Page 3: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

Conteudo Conteudo

3.2. Portas FireWire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.3. Porta Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.4. Discos e drives opticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

4. Comparacao com um PC 22

A. As Perguntinhas 24A.1. O misterio do super-fetch . . . . . . . . . . . . . . . . . . . . . . . . . . 24A.2. 36 bits chegam para toda a gente! . . . . . . . . . . . . . . . . . . . . . . 24

3

Page 4: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

Lista de Figuras

1.1. Diagrama de blocos da arquitectura do Power Mac G4 . . . . . . . . . . 6

2.1. Organizacao da cache L1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.2. Traducao de enderecos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4

Page 5: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

1. Arquitectura

I knew then (in 1970) that a 4-kbyte minicomputer would cost as much as ahouse. So I reasoned that after college, I’d have to live cheaply in an apartment

and put all my money into owning a computer.— Apple co-founder Steve Wozniak, 1988

1.1. Descricao geral

A arquitectura do Power Mac G4 e baseada em dois processadores PowerPC G4 e doiscircuitos integrados principais: o U2 (controlador de memoria e do bus PCI) e o Key-Largo (controlador de I/O). A figura 1.1 mostra o diagrama de blocos desta arquitectura.

Conforme se pode ver na figura, existem varios tipos de bus no sistema:

• O bus do processador, a 133/167 MHz (dependente do modelo) com uma largurade 64 bits, que liga o processador ao controlador U2

• O bus de memoria, a 133/167 MHz com 64 bits de largura, liga o controlador U2a memoria RAM

• O bus do slot AGP-4x, a 66 MHz com 32 bits de largura, liga a placa grafica AGPao controlador U2

• O bus PCI, de 64 bits a 33 MHz, que liga o controlador KeyLargo e os slots PCIao controlador U2

• O bus Ultra ATA/100 e o bus ATA/66, para ligacao de discos rıgidos

• O bus EIDE, para ligacao de drives opticas (CD, DVD)

5

Page 6: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

1.2. MODULO DO PROCESSADOR CAPITULO 1. ARQUITECTURA

Figura 1.1.: Diagrama de blocos da arquitectura do Power Mac G4

1.2. Modulo do processador

O modulo do processador e uma placa separada que compreende dois microprocessadoresG4 e as memorias cache L3. Encontra-se ligado a mother-board por um conector de300 pinos. Para atingir o nıvel de performance desejado, as linhas de sinal que ligam omodule e a mother-board sao cuidadosamente ligados tendo em conta o seu comprimento,carregamento e ruıdo.

6

Page 7: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

1.3. CPU CAPITULO 1. ARQUITECTURA

1.3. CPU

O Power Mac G4 tem dois processadores PowerPC G4, com variadıssimas e poderosascaracterısticas:

• Implementacao PowerPC de 32 bit com nucleo super-escalar

• Velocity Engine (AltiVec), uma unidade de processamento vectorial

• Bus MaxBus, com 36 bits de endereco e 64 bits de dados

• Duas caches L1 de 32KB, para dados e instrucoes

• Uma cache L2 de 256KB

• Cache externa L3 ate 2MB, com armazenamento da tag no proprio CPU

1.4. U2 — ponte PCI e controlador de memoria

Pode-se afirmar que este modulo e de certa forma o coracao de um computador PowerMac G4. Este contem o sistema de bridging entre os dois processadores, o controladorde memoria, o subsistema de I/O PCI-based, o slot AGP, interfaces FireWire e Ethernet.Tem tambem um controlador Ultra ATA/100.

1.5. Busses

1.5.1. Bus do Processador

O bus do processador interliga os dois PowerPC G4 ao controlador U2, a 133 ou 167MHzusando o protocolo MaxBus. Este protocolo inclui melhoramentos ao nıvel da eficienciado bus que permitem aumentar o throughput do bus relativamente ao anterior bus 60x,utilizado no Power Mac G3. Estes melhoramentos incluem:

Out-of-order completion Permite ao controlador de memoria optimizar a eficiencia dobus de dados transferindo os dados conforme estao prontos, em vez de devolver asrespostas pelo bus pela ordem que foram feitos os pedidos.

Address bus streaming Permite que um unico master no bus emita varios enderecosseguidos para transaccoes back-to-back, ao ritmo de um endereco a cada dois ciclosde relogio

Intervention Optimizacao no sistema de coerencia de caches que melhora a performancede sistemas com dois processadores. Permite que um processador va buscar dadosdirectamente a cache do outro processador, sem obrigar a uma escrita dos dadosna memoria.

7

Page 8: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

1.5. BUSSES CAPITULO 1. ARQUITECTURA

1.5.2. Bus da memoria principal

O bus da memoria principal liga a memoria principal ao controlador U2 atraves de umbus de 64 bits. No Power Mac G4 a 867 MHz, este bus funciona a 133 MHz; nos modelosa 1 GHz e 1.25 GHz, o bus funciona a 167 MHz. Suporta memorias SDRAM DDR, a2x133 MHz (DDR266 / PC2100) no modelo a 867 MHz, e a 2x167 MHz (DDR333 /PC2700) nos modelos a 1 GHz e 1.25 GHz, com capacidade para 4 DIMMs. O tamanhototal da memoria nao pode exceder os 2GB.

1.5.3. Interface Ultra ATA/100

O controlador U2 implementa uma unica interface de disco duro Ultra ATA/100, comcapacidade para acomodar ate dois discos.

1.5.4. Interface Ultra ATA/66

Esta interface esta ligada ao controlador KeyLargo. Tem capacidade para dois discos.

1.5.5. Interface EIDE

Tambem ligada ao controlador KeyLargo, esta interface e usada para a ligacao de drivesopticas. No mesmo bus EIDE pode estar tambem ligada a placa Apple AirPort, paracomunicacao em redes wireless 802.11b.

8

Page 9: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2. Processador

supercomputer: Any machine still on the drawing board.— Stan Kelly-Bootle, The Devil’s DP Dictionary

2.1. Descricao geral

O Power Mac G4 tem dois processadores PowerPC G4 da Motorola (MPC7451). Esteprocessador RISC e uma implementacao da arquitectura PowerPC. Tem duas caches L1de 32KB (para instrucoes e dados), uma cache L2 de 256KB e ainda um controladorinterno para uma cache L3 externa, com armazenamento das tags no proprio controlador.

Este processador implementa a arquitectura PowerPC de 32 bits, com enderecos de32 bits, inteiros de 8, 16 e 32 bits e formatos de vırgula flutuante de 32 e 64 bits. Oprocessador suporta ainda ate 4 petabytes (252 bytes) de memoria virtual e 64 gigabytes(236) de memoria fısica. Suporta ainda as extensoes AltiVec para calculo vectorial.

Este processador apresenta uma arquitectura superescalar, capaz de executar ate 3instrucoes em simultaneo. Tem varias unidades de execucao:

• Unidade de vırgula flutuante de 64 bits (FPU)

• Unidade de processamento de branches (BPU)

• Unidade load/store (LSU)

• Quatro unidades de inteiros (IUs):

– Tres unidades de baixa latencia (IU1a-IU1c), que executam todas as ins-trucoes excepto multiplicacoes, divisoes e leituras / escritas em registos espe-ciais

– Uma unidade de latencia elevada (IU2), que executa as restantes operacoesem inteiros

• Quatro unidades de calculo vectorial com suporte a instrucoes AltiVec:

– Unidade de permuta vectorial (VPU)

– Duas unidades de calculo vectorial inteiro (VIU1, executa instrucoes de baixalatencia; VIU2, executa instrucoes de latencia elevada)

9

Page 10: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2.2. PIPELINE DO PROCESSADOR CAPITULO 2. PROCESSADOR

– Unidade de calculo vectorial de vırgula flutuante (VFPU)

Esta arquitectura, aliada ao uso de instrucoes simples com baixos tempos de execucaopermite que a maior parte das instrucoes (particularmente as instrucoes que manipulaminteiros) possam executar com uma latencia de um ciclo de relogio por instrucao.

Algumas das unidades de execucao sao pipelined, com varias fases executadas em ciclossucessivos. Tipicamente, todas as fases podem estar a executar instrucoes diferentes.

O instruction set deste processador segue a filosofia RISC — todas as instrucoes tem32 bits e todas as operacoes sao realizadas em registos a excepcao de loads e stores.

2.2. Pipeline do processador

O processador apresenta uma arquitectura superescalar, com varias unidades de execucao.As instrucoes seguem um caminho especıfico na pipeline:

2.2.1. Unidade de instrucoes (IU)

A IU serve como ponto de entrada das instrucoes na pipeline. Contem um fetcher (parao carregamento das instrucoes), uma fila de instrucoes de 12 entradas (Instruction Queue— IQ), uma unidade de dispatch e uma unidade de processamento de branches (BranchProcessing Unit — BPU).

Fetcher

O fetcher procura iniciar um fetch a cada ciclo. Ha duas fases de fetch na pipeline,permitindo que sejam enviadas ate 4 instrucoes para a fila de instrucoes por ciclo derelogio. O fetcher envia tambem os branches directamente para a BPU.

Unidade de dispatch

A unidade de dispatch le instrucoes da IQ, verifica as dependencias de dados das ins-trucoes, emite ate 3 instrucoes por ciclo de relogio (para unidades de execucao diferentes)e pode inibir a execucao conforme necessario.

Branch Processing Unit (BPU)

A BPU recebe instrucoes de branch directamente do fetcher e executa-as numa faseinicial da pipeline, permitindo em certos casos que o branch tenha um tempo de execucaonulo.

Os branches sem qualquer dependencia de dados sao processados imediatamente.Branches em que apenas a direccao do salto e desconhecida podem ser executados usandoum sistema de branch prediction estatico (que recorre a um bit na instrucao que indicaa direccao esperada do branch) ou em alternativa um sistema dinamico, sendo a escolhafeita consoante o estado de um dos registos de configuracao do processador.

10

Page 11: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2.2. PIPELINE DO PROCESSADOR CAPITULO 2. PROCESSADOR

Quando e feita uma previsao, a execucao continua pelo caminho esperado de execucao,sem que no entanto os resultados da execucao sejam escritos nos respectivos registos ateque esta previsao se confirme. Caso a previsao esteja errada, as instrucoes sao eliminadasda pipeline e o processamento recomeca no destino correcto do branch.

O sistema de antecipacao de branches dinamico utiliza uma tabela de 2048 entradas(Branch History Table — BHT) que guarda o historial dos ultimos branches. Funcionacomo uma cache, com dois bits por entrada, que codificam quatro nıvel de previsao dobranch — not-taken, strongly not-taken, taken, strongly taken. Estes 4 estados seguem oesquema de transicao “classico” para branch prediction. Existe ainda uma outra cache,Branch Target Instruction Cache (BTIC) — uma cache de 128 entradas four-way set as-sociative que armazena as instrucoes no destino de cada branch — com capacidade paraarmazenar ate 4 instrucoes por branch. Quando o branch e tomado (ou se preve que sejatomado) as instrucoes seguintes chegam a fila de instrucoes dois ciclos de relogio depois— um ciclo antes da altura em que chegariam se fossem lidas da cache de instrucoes.

A saıda da unidade de instrucoes, as instrucoes entram numa das varias unidadesindependentes:

2.2.2. Unidades de inteiros (IU)

As unidades de inteiros dividem-se em dois tipos. As tres unidades IU1 executam ins-trucoes de baixa latencia — todas as instrucoes excepto multiplicacoes, divisoes e ins-trucoes que lidam com special-purpose registers (SPRs).

A unidade IU2 executa todas as instrucoes que demoram 3 ou mais ciclos. Estaunidade tem um multiplicador/divisor de 32 bits, uma unidade que executa operacoeslogicas e lida com SPRs. O multiplicador permite terminar antes do tempo instrucoesque nao requerem uma multiplicacao completa de 32 bits.

2.2.3. Unidade de vırgula flutuante (FPU)

A unidade de vırgula flutuante foi construıda de tal modo que todas as operacoes emnumeros de precisao dupla requerem apenas uma passagem pela FPU, com uma latenciade 5 ciclos de relogio. Esta unidade e pipelined, podendo receber uma nova instrucao acada ciclo de relogio.

2.2.4. Unidade de load/store (LSU)

A LSU executa todas as instrucoes de acesso a memoria, manipulando os varios formatosde dados que as restantes unidades suportam. As instrucoes sao executadas pela ordemem que aparecem no programa, mas no caso dos loads os acessos podem ser feitos poruma ordem diferente. Podem ser usadas instrucoes de sincronismo para forcar a ordemdos acessos a memoria caso seja necessario.

E na LSU que sao calculados os enderecos efectivos dos acessos. Apenas um acesso amemoria pode ocorrer a cada ciclo de relogio.

11

Page 12: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2.3. REGISTOS CAPITULO 2. PROCESSADOR

2.2.5. Unidades AltiVec

O processador tem algumas unidades dedicadas a execucao de instrucoes AltiVec. Podemser emitidas ate duas instrucoes AltiVec para duas unidades diferentes a cada ciclo derelogio. As unidades VIU2, VFPU e VPU tem uma pipeline interna.

2.2.5.1. Unidade de permuta vectorial (VPU)

Esta unidade executa instrucoes de permuta em operandos vectoriais (pack, unpack,merge, splat, permute).

2.2.5.2. Unidades de calculo vectorial inteiro (VIU1, VIU2)

A unidade VIU1 executa instrucoes “simples”, de baixa latencia: somas, subtraccoes,comparacoes, rotacoes e shifts. A unidade VIU2 executa todas as outras instrucoes.

2.2.5.3. Unidade de calculo vectorial de vırgula flutuante (VFPU)

Executa todas as instrucoes de vırgula flutuante em vectores.

2.3. Registos

Este processador apresenta um grande numero de registos, tıpico de arquitecturas RISC,dos quais se destacam:

General Purpose Registers (GPRs) 32 registos de 32 bits (GPR0-GPR31), armaze-nam numeros inteiros. Servem como origem e destino de dados nas instrucoes deinteiros, bem como origem de enderecos e origem/destino de dados nos acessos amemoria.

Floating Point Registers (FPRs) 32 registos de 64 bits (FPR0-FPR31), armazenamnumeros de vırgula flutuante. Servem de origem / destino dos dados para todasas operacoes de vırgula flutuante.

Floating Point Status and Control Register (FPSCR) Armazena informacao do es-tado da FPU, tal como excepcoes ou modos de arredondamento.

Condition Register (CR) Armazena o resultado de certas operacoes aritmeticas, ser-vindo para instrucoes de teste e branch.

Count Register (CTR) Contem um contador que pode ser decrementado automatica-mente por certas instrucoes de branch, servindo assim de contador para ciclos.

Link Register (LR) Armazena o endereco que sucede a uma instrucao de branch andlink, servindo de ponto de retorno de subrotinas.

12

Page 13: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2.4. CACHES CAPITULO 2. PROCESSADOR

Vector Registers (VRs) 32 registos (VR0-VR31), servem como origem e destino dedados em instrucoes AltiVec.

Vector Status and Control Register (VSCR) Um registo de 32 bits que serve funcoessimilares ao FPSCR para operacoes AltiVec.

Vector Save/Restore Register (VRSAVE) Indica quais os registos AltiVec que foramutilizados, por forma a facilitar operacoes de armazenamento de estado da unidadeAltiVec. E utilizado pelo sistema operativo (quando ocorre um context-switch) etambem por aplicacoes.

XER Registo que indica condicoes de overflow ou transporte para operacoes em numerosinteiros.

Instruction Cache and Interrupt Control Register (ICTRL) Usado na configuracao deinterrupcoes e na deteccao de erros nas caches de instrucoes e dados (apenasacessıvel ao sistema operativo)

2.4. Caches

O microprocessador MPC7451 contem duas caches de nıvel 1 (L1) separadas (instrucoese dados) com 32-Kbyte cada uma, eight-way-set-associative para permitir as unidadesde execucao e registos um acesso rapido as instrucoes e aos dados. Alem destas duascaches L1, este microprocessador apresenta uma cache L2 integrada com 256 KB e astags de enderecos e bits de status para uma cache de nıvel 3 que suporta 1 ou 2 Mbytes.

Esta seccao descreve a organizacao das caches on-chip L1 de instrucoes e de dados,protocolos de coerencia de cache, instrucoes de controlo de caches, variadas operacoesde cache, a organizacao e caracterısticas da cache L2 e uma descricao do controladorda cache L3. Descreve a interaccao entre as caches, a unidade de Load/Store (LSU),a unidade de instrucao e o sub-sistema de memoria. Faz tambem referencia a algorit-mos de re-alocamento (replacement algorithms) usados para cada uma das caches e acaracterıstica de memoria privada da cache L3 no MPC7451.

E de notar que nesta seccao o termo “multiprocessador” e usado no contexto demanutencao da coerencia de cache. Estes dispositivos de multiprocessadores podemrealmente ser processadores ou outros dispositivos que podem aceder ao sistema dememoria, manter as suas proprias caches e funcionarem com bus masters necessitandode coerencia de cache.

2.4.1. Visao Geral

A implementacao na cache L1 no MPC7451 tem as seguintes caracterısticas:

• Duas caches separadas, uma de instrucoes outra de dados com 32-Kbytes cadauma;

13

Page 14: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2.4. CACHES CAPITULO 2. PROCESSADOR

• Estas caches sao eight-way-set-associative, isto e, sao formadas por blocos (set-associative) e cada um destes blocos compreende oito frames (eight-way);

• Estas caches de dados e de instrucoes tem blocos de cache de 32-bytes. Um blocode cache e um bloco de memoria que um estado de coerencia descreve/correspondea uma linha da cache L1 de dados;

• Directorias da cache sao enderecadas fisicamente. O endereco fısico (real) e guar-dado na directoria da cache;

• As caches implementam um algoritmo de re-alocacao pseudo-least-recently-used(PLRU), isto e, substitui o bloco que ja nao e usado ha mais tempo;

• Operacoes na cache write-back ou write-through sao programaveis por pagina epor bloco;

• A cache de instrucoes consegue fornecer quatro instrucoes por cada ciclo de relogio,enquanto que a cache de dados fornece quatro words por ciclo de relogio;

– Uma latencia de dois ciclos e um ciclo para transferencia por instrucao ouacesso a cache de dados;

• As caches podem ser desligadas por software;

• As caches podem ser bloqueadas por software;

• Suporta um protocolo de quatro-estados modificado/exclusivo/partilhado/invalido(MESI - modified/exclusive/shared/invalid);

– Um bit de status de coerencia unica por cada bloco da cache de instrucoespermite codificar por os seguintes possıveis estados:

∗ Invalido (INV)

∗ Valido (VAL)

– Dois bits de status (MESI [0-1]) para cada bloco da cache de dados permitecodificar para a coerencia da seguinte maneira:

∗ 00 = Invalido (I)

∗ 01 = partilhado (S - shared)

∗ 10 = exclusivo (E)

∗ 11 = modificado (M)

• Copias separadas das etiquetas (“tags”) da cache de dados para uma procuraeficiente;

• As duas caches L1 suportam geracao e verificacao de paridade (controlada atravesdos bits no registo ICTRL) da seguinte maneira:

14

Page 15: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2.4. CACHES CAPITULO 2. PROCESSADOR

– Na cache de instrucoes: um bit de paridade por instrucao;

– Na cache de dados: um bit de paridade por um byte de dados;

A cache de instrucoes fornece uma interface de 128-bits a unidade de instrucoes, conse-quentemente podem passar ate quatro instrucoes por ciclo de relogio para a unidade deinstrucoes num hit na cache L1. A unidade de instrucoes acede a cache de instrucoesfrequentemente para acompanhar o alto throughput fornecido pelo fila de instrucoes(instruction queue) de 12 entradas.

Adicionalmente, a cache on-chip L2 tem as seguintes caracterısticas:

• Uma cache de dados e outra de instrucoes integradas com 256 K-bytes, eight-way-associative;

• Mantem instrucoes, dados ou ambos (seleccionaveis via L2CR);

• Totalmente pipelined para fornecer 32 bytes por ciclo de relogio as caches L1 dedados;

• Uma latencia total de nove ciclos de processamento para misses na cache de dadosL1 que implica um hit na cache L2;

• Operacoes na cache write-back ou write-through sao programaveis por pagina epor bloco;

• Usa um dos dois algoritmos de re-alocamento (seleccionaveis atraves L2CR);

• Organizada como 32 bytes/bloco e dois blocos (sectores)/linha (um bloco da cachee o bloco da memoria que o estado de coerencia descreve);

• Suporta geracao e verificacao para as tags e dados (activados via L2CR);

• Dois bits de status (MESI[0-1]) para cada bloco da cache de nıvel 2 permitemcodificacao para a coerencia da seguinte maneira:

– 00 = Invalido (I)

– 01 = partilhado (S)

– 10 = exclusivo (E)

– 11 = modificado (M)

Finalmente o controlador da cache L3 tem as seguintes caracterısticas:

• Tags on-chip suportam 1 Mbytes ou 2 Mbytes de SRAM externa que e 8-way-set-associative;

• Mantem instrucoes, dados ou ambos (seleccionaveis via L3CR);

15

Page 16: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2.4. CACHES CAPITULO 2. PROCESSADOR

• Operacoes na cache write-back ou write-through sao programaveis por pagina epor bloco;

• Organizada como 64 bytes/linha configurada como 2 blocos (sectores) com bits destatus separados por linha para uma configuracao de 1-Mbyte;

• Organizada como 128bytes/linha configurada como quatro-blocos (sectores) combits de status separados por linha para uma configuracao 2-Mbyte;

• Suporta os mesmo protocolo de coerencia de quatro-estados (MESI) que as cachesL1 e L2;

• Suporta geracao e verificacao de paridade para as tags e para os dados (activadosatraves do L3CR);

• A mesma escolha de dois algoritmos de re-alocamento aleatorios usados pela cacheL2 (seleccionaveis via L3CR);

• Um bus externo L3 de dados de 64-bits que sustem 6 bits por um ciclo de relogioL3;

A cache de instrucoes, a cache de dados L2 e o controlador da cache L3 estao integradosno MPC7451. As caches L1, L2 e L3 tem um bus de comunicacao dedicado entre si.O subsistema de acesso a memoria recebe os pedidos de dados directamente da LSU efornece filas para carregamento e armazenamento vindo das caches.

2.4.2. Unidade Load/Store (LSU)

A cache de dados fornece dados aos registos general-purpose (GPRs), floating-point(FPRs) e registos de vectores (VRs) por meios de uma unidade load/store (LSU). ALSU MPC7451 e directamente agregada com uma interface de 32-bytes (uma linha decache) para permitir uma movimentacao eficiente dos dados para e dos GPRs, FPRs eVRs. A LSU fornece toda a logica necessaria para calcular enderecos efectivos, trata oalinhamento dos dados para e da cache de dados. Operacoes de escrita para a cache dedados podem ser efectuadas por byte, half-word, double-word ou quad-word.

2.4.2.1. Filas de armazenamento LSU

Os armazenamentos (”stores”) tem que ser retidos na terceira entrada da fila de arma-zenamento (FSQ - finished store queue) , como e mostrado na figura DA PAGINA 244,ate que a instrucao de armazenamento acabe de entregar os sinais logicos. Quando oarmazenamento e entregue, move a CSQ (committed store queue) de cinco entradas. Umarmazenamento continuo na CSQ ate que a cache de dados seja actualizada se o acessoe ”cacheable”

Se um store nao e cacheable (e cache-inhibited), a operacao movimenta-se atraves daCSQ ate ao resto do sub-sistema de memoria.

16

Page 17: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2.4. CACHES CAPITULO 2. PROCESSADOR

Figura 2.1.: Organizacao da cache L1

Para reduzir a latencia dos loads dependentes dos stores, o MPC7451 suporta reenca-minhamento de dados de qualquer entrada na CSQ antes dos dados serem escritos nacache. Os enderecos dos carregamentos sao comparados com todas as entradas na CSQe, num hit, usa os dados da mais recente entrada que obteve um hit.

2.4.3. Organizacao da cache L1

As caches de nıvel 1 de instrucoes e de dados do MPC7451 estao as duas organizadasem 128 conjuntos de oito blocos com 32-bytes em cada linha da cache. A cache L1 estaorganizada como esta expresso na figura 2.1.

Cada bloco consiste em 32-bytes de dados, tres bits de status e uma tag de endereco.E de notar que na arquitectura PowerPC, o termo ”bloco da cache” ou simplesmente”bloco”, quando usado no contexto de implementacoes de cache, refere a unidade dememoria na qual a coerencia e mantida. Para a cache L1 de dados no MPC7451, e umlinha na cache de 32-bytes. Este valor pode ser diferente para outras implementacoesusando as arquitecturas PowerPC. Embora nao seja visualizado na figura acima, a cachede dados tambem tem um bit/byte de paridade (quatro bits/word de paridade). Cadabloco da cache contem oito words contıguas da memoria que sao carregadas dum limitede oito-words. Consequentemente, os blocos da cache sao alinhados com fronteiras de

17

Page 18: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2.5. UNIDADE DE GESTAO DE MEMORIA CAPITULO 2. PROCESSADOR

paginas. Bits de enderecos fornecem o ındice para seleccionar um conjunto (set) da cache.As tags consistem nuns bits do endereco fısico. A traducao dos enderecos ocorrem emparalelo com seleccao de um dos sets. Bits de enderecos mais baixos localizam um bytedentro do bloco seleccionado.

Existem 3 bits de status associados com cada bloco de cache. Estes bits sao usadospara implementar o protocolo MESI (modified/exclusive/shared/invalid) de coerencia decache.

2.4.4. Coerencia de cache e memoria

O objectivo principal de um sistema de coerencia de memoria e de fornecer a mesmaimagem da memoria para todos os dispositivos que usam os sistemas. Coerencia permitesincronizacao e cooperacao no uso de recursos partilhados. Cada potencial bus mastersdeve seguir as regras para gerir o estado da sua cache. Esta seccao descreve os mecanis-mos de coerencia da arquitectura PowerPC e os protocolos de coerencia de cache que ascaches do MPC7451 suportam.

2.5. Unidade de Gestao de Memoria

A presente seccao descreve a implementacao da unidade de gestao de memoria (MMU— Memory Management Unit) no microprocessador MPC7451. A principal funcao daMMU num processador e a traducao de enderecos logicos (efectivos) em enderecos fısicos(reais) para acessos a memoria e acessos I/O (nestes acessos assume-se que sao mapeadosna memoria).

Dois tipos gerais de acesso a memoria oriundos dos processadores que implementam aarquitectura PowerPC necessitam de traducao de enderecos, acesso a instrucoes e dadosgerados por instrucoes do tipo load e store. Geralmente, a o mecanismo de traducao deenderecos e definido em termos de segment descriptors e tabelas de paginas (page tables)que os processadores usam para localizar o mapeamento do endereco efectivo-para-fısicopara acessos a memoria. A informacao do segmento traduz o endereco efectivo numpseudo endereco virtual e a informacao na page table traduz o endereco virtual numendereco fısico.

Os segment descriptors, usados para gerar o endereco virtual, sao guardados comoregistos de segmentos on-chip. Ainda sao implementados dois translation lookaside buf-fers (TLB) no MPC7451 para manter as translacoes dos enderecos das paginas usadasrecentemente on-chip.

Na verdade este processador apresenta duas MMUs. Contendo uma para acessos ainstrucoes (IMMU) e outra para acessos a dados dados (DMMU).

Pode-se entao afirmar que as MMUs, juntamente com mecanismos de processamentode excepcoes (exception processing mechanism), fornece o suporte necessario para que osistema operativo implemente um ambiente de memoria virtual paginada e para imporproteccao para designadas areas de memoria.

18

Page 19: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

2.5. UNIDADE DE GESTAO DE MEMORIA CAPITULO 2. PROCESSADOR

Figura 2.2.: Traducao de enderecos

2.5.1. Mecanismos de Traducao de Enderecos

Os processadores que implementam a arquitectura PowerPC suportam os seguintes me-canismos de traducao de enderecos:

Traducao do endereco de uma pagina Traduz o endereco da page frame para umapagina de 4-Kbytes

Traducao do endereco de um bloco Traduz o numero de blocos para blocos de tama-nho desde 128 kbytes ate 256 Kbytes

Modo de enderecamento real quando a traducao de memoria e desactivada, logo oendereco efectivo corresponde directamente ao endereco fısico;

A figura 2.2 mostra estes tres tipos de traducao de memoria que as MMUs fornecemmecanismos para enderecamento de 36-bits em vez dos habituais 32-bits utilizados pora maior parte dos processadores. Consequentemente, estes mecanismos permitem que oprocessador faca uso de ate 64 Gbytes de memoria fısica.

19

Page 20: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

3. Dispositivos de I/O

I/O certainly has been lagging in the last decade.— Seymour Cray, 1976

Este capıtulo descreve os dispositivos de input/output presentes no Power Mac G4.

3.1. Portas USB

O Power Mac G4 esta equipado com duas portas Universal Serial Bus (USB). Suportamtodo o tipo de dispositivos USB, como teclados, ratos, impressoras ou dispositivos dearmazenamento de baixa velocidade.

Cada uma das portas tem um controlador USB dedicado, o que permite obter taxasde transferencia brutas de 12Mbps em ambas as portas ao mesmo tempo. Permitemainda arrancar o computador a partir de um dispositivo de armazenamento USB.

3.2. Portas FireWire

Para alem das portas USB, o Power Mac G4 tem ainda duas portas FireWire. Estaspermitem a ligacao de qualquer dispositivo FireWire, suportando taxas de transferenciaate 400Mbps. Tal como acontece para os controladores USB, e tambem possıvel arrancaro computador a partir de um dispositivo de armazenamento FireWire. Para alem disso,e possıvel ligar dois Power Mac G4 com um cabo FireWire e partilhar o disco duro de umdos computadores, que ira aparecer no outro como um dispositivo de armazenamentoFireWire. Isto e possıvel atraves do Target Disk Mode, que e independente do sistemaoperativo — o computador que vai partilhar o seu disco arranca em Target Disk Mode,nao chegando sequer a carregar o sistema operativo.

3.3. Porta Ethernet

Para comunicacao em rede local, o Power Mac G4 tem uma porta Ethernet, supor-tando 10Base-T, 100Base-T e 1000Base-T. A porta Ethernet esta ligada directamenteao controlador U2 — as transferencias de dados via Ethernet nao ocupam portanto obus PCI.

20

Page 21: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

3.4. DISCOS E DRIVES OPTICAS CAPITULO 3. DISPOSITIVOS DE I/O

3.4. Discos e drives opticas

O Power Mac G4 suporta discos ATA e drives ATAPI. Vem equipado de fabrica com umdisco Ultra ATA/100 e um leitor de DVD EIDE. Como opcao pode ser equipado comum gravador de CDs ou uma SuperDrive (gravador de CDs e DVDs).

21

Page 22: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

4. Comparacao com um PC

640k ought to be enough for everyone!— Bill Gates em 1991

Como se pode ver, a arquitectura de um Macintosh moderno nao difere muito de umPC. Longe vao os tempos em que um Macintosh nada tinha de comum com um PC— de facto, cada vez mais as duas arquitecturas se aproximam, mantendo no entantodiferencas fundamentais.

Processador

A maior diferenca encontra-se ao nıvel do processador. Um processador da famılia i386apresenta uma arquitectura resultante de anos de extensoes e “remendos” a arquitecturaoriginal do 8086. E possıvel hoje comprar um novıssimo processador Xeon a 2GHz eutiliza-lo como se fosse um 8086 com mais de 20 anos1.

As vantagens ao nıvel da retrocompatibilidade eram obvias, a certa altura da evolucaoda arquitectura, mas deixaram ha muito de fazer sentido — e as desvantagens ao nıvel daeficiencia da arquitectura perduram ainda hoje. Os processadores i386 sao processadoresCISC, o que aumenta a sua complexidade interna — a tal ponto que os processadoresmais recentes da Intel sao um nucleo RISC que executa instrucoes simples, precedidode circuitos tradutores que convertem as instrucoes CISC em instrucoes mais simples.Finalmente, esta arquitectura, nas suas ultimas encarnacoes (Pentium III, Pentium IV,AMD Athlon XP) requer um trabalho cada vez mais cuidado por parte do compiladorpara gerar codigo optimizado.

Por outro lado, a arquitectura PowerPC e relativamente recente. Nao e sequer a pri-meira arquitectura usada pelos computadores Macintosh, que inicialmente utilizavamprocessadores Motorola 68000. A Apple conseguiu uma transicao entre duas arquitectu-ras incompatıveis sem que tal afectasse demasiado os utilizadores do Macintosh, atravesde binarios que continham codigo para as duas arquitecturas e de um emulador de 68000escrito para os processadores PowerPC. Esta nova arquitectura RISC apresenta vanta-gens multiplas, sendo mais facil de implementar em hardware e deixando menos trabalhode optimizacao para o compilador.

1E mesmo o 8086 foi desenhado para ser compatıvel com o mais antigo 8080 ao nıvel do codigo assembly— e ainda hoje possıvel aproveitar essa compatibilidade no mesmo Xeon a 2GHz.

22

Page 23: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

CAPITULO 4. COMPARACAO COM UM PC

Input/Output

Para alem do processador, e de salientar ainda a diferenca no nıvel de integracao dosvarios dispositivos. No Power Mac G4, por exemplo, as portas FireWire, USB e Ethernet,bem como o controlador Ultra ATA/100 tem busses dedicados ate ao controlador dememoria, o que permite que sejam feitas transferencias de dados entre esses dispositivose a memoria sem degradar demasiado a performance dos restantes dispositivos. Pelocontrario, nos PCs todos os dispositivos estao em geral no bus PCI, limitando a partida astaxas de transferencia quando varios dispositivos pretendem transferir dados ao mesmotempo.

Tirando esta diferenca, no entanto, os varios protocolos de comunicacao utilizados— USB, FireWire, ATA, Ethernet — sao os mesmos. E possıvel tirar quase qualquerdispositivo de um Macintosh e liga-lo num PC.

23

Page 24: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

A. As Perguntinhas

A.1. O misterio do super-fetch

Como foi dito no trabalho, a unidade de fetch le as instrucoes da cache L1. Estra-nhamente, esta unidade consegue ler nao uma mas quatro instrucoes em cada ciclo derelogio. Como e isto possıvel ? Qual sera o interesse ?

Resposta

Recorde-se que este processador tem uma arquitectura RISC de 32 bits, o que leva aque todas as instrucoes tenham o mesmo tamanho — 32 bits. Assim, para o fetcherpoder ler quatro instrucoes da cache L1 a cada ciclo basta que o bus da cache L1 tenha32 ∗ 4 = 128 bits de largura.

Recorde-se tambem que ha varias unidades de execucao diferentes no processador, asquais podem executar em paralelo. A unidade de dispatch pode emitir ate 3 instrucoespor ciclo, desde que estas executem em unidades diferentes. Finalmente, a branch pro-cessing unit recebe as instrucoes de branch directamente do fetcher. Ou seja, podemchegar a ser emitidas quatro instrucoes num dado ciclo de relogio. Assim, e necessariopreencher a IQ a um ritmo de 4 instrucoes por ciclo para evitar atrasos na execucao.

A.2. 36 bits chegam para toda a gente!

Os mecanismos de traducao de enderecos deste processador a primeira vista parecemum pouco estranhos. O espaco de enderecamento visıvel aos programas e de 232 bytes(4 GBytes) como e habitual, mas a MMU consegue enderecar ate 236bytes (64 GBytes)de memoria fısica!

Sera que os senhores da Motorola beberam demasiada cerveja e se enganaram nasespecificacoes, ou ha mesmo alguma vantagem nisto ?

Resposta

O espaco de enderecamento visıvel a cada programa e de facto de 4 GBytes, mas osistema operativo consegue aceder aos 64 GBytes. Assim, o sistema operativo podemanter em memoria varios programas que ocupem todo o seu espaco de enderecamentovirtual de 4 GBytes sem ter de recorrer a swap.

24

Page 25: Arquitectura Interna de um Macintosh Power Mac G4subtil/powermacg4.pdf · Unidade de calculo vectorial de v´ırgula flutuante (VFPU) 12 2.3. Registos ... • Velocity Engine (AltiVec),

Bibliografia

[1] Power Mac G4 Developer Note — http://developer.apple.com/techpubs/

hardware/Developer_Notes/Macintosh_CPUs-G4/PowerMacG4/

[2] The MPC7450 RISC Microprocessor Family User’s Manual — http://e-www.

motorola.com/collateral/MPC7450UM_CH.html

[3] Computer Architecture — A Quantitative Approach, John L. Hennessy, David A.Patterson

[4] Computer Organization & Design — The Hardware/Software Interface, John L. Hen-nessy, David A. Patterson

25