Apostila de Arquitetura de Computadores Prof Bruno
SUMRIO 1 INTRODUO .................................................................................................... 4 1.1 O CONCEITO DE ARQUITETURA ....................................................................... 4 1.2 NVEIS DE ARQUITETURA ................................................................................ 5 2 CONCEITOS BSICOS DE ARQUITETURA DE PROCESSADOR .......... 7 2.1 A SEO DE PROCESSAMENTO ........................................................................ 7 2.2 A EXECUO DE INSTRUES ......................................................................... 9 2.3 A SEO DE CONTROLE ................................................................................ 12 2.4 O SINAL DE CLOCK ....................................................................................... 14 2.5 IMPLEMENTAO DA UNIDADE DE CONTROLE .............................................. 15 3 O CONJUNTO DE INSTRUES DO PROCESSADOR ........................... 18 3.1 CONJUNTO DE INSTRUES NO CONTEXTO DE SOFTWARE ............................ 18 3.2 TIPOS DE INSTRUES E DE OPERANDOS ....................................................... 19 3.3 NMERO E LOCALIZAO DOS OPERANDOS ................................................. 21 3.4 MODOS DE ENDEREAMENTO ....................................................................... 22 3.5 FORMATOS DE INSTRUO ............................................................................ 26 4 A ARQUITETURA DOS PROCESSADORES INTEL 80X86 ..................... 28 4.1 QUADRO EVOLUTIVO DA FAMLIA INTEL 80X86 ........................................... 28 4.2 O INTEL 8086/8088 ....................................................................................... 29 4.2.1 A Unidade de Execuo ........................................................................... 30 4.2.2 A Unidade de Interface de Barramento (BIU) ......................................... 31 4.2.3 O Conjunto de Instrues do 8086 .......................................................... 33 4.3 O INTEL 80186/80188 ................................................................................... 38 4.4 O INTEL 80286 .............................................................................................. 39 4.5 A ARQUITETURA DO INTEL 80386 ................................................................. 41 4.6 A ARQUITETURA DO INTEL 80486 ................................................................. 43 4.7 O INTEL PENTIUM ......................................................................................... 44 5 O SUB-SISTEMA DE MEMRIA .................................................................. 46 5.1 A INTERAO ENTRE PROCESSADOR E MEMRIA PRINCIPAL ........................ 46 5.1.1 Ciclo de Barramento ................................................................................ 48 5.1.2 Estados de Espera .................................................................................... 49 5.2 TIPOS DE DISPOSITIVOS DE MEMRIA ........................................................... 51 5.3 MEMRIAS CACHE ........................................................................................ 52 5.3.1 A Memria Cache no Intel 80486 ............................................................ 55 5.3.2 Memrias Cache Primria e Secundria ................................................ 58 5.4 MEMRIA VIRTUAL ...................................................................................... 58 5.4.1 O Conceito de Memria Virtual .............................................................. 59 5.4.2 O Mecanismo de Memria Virtual .......................................................... 59 5.4.3 A Memria Secundria ............................................................................ 62 5.4.4 Memria Virtual no Intel 80486 .............................................................. 64 6 O SUB-SISTEMA DE ENTRADA/SADA ..................................................... 70 6.1 A INTERAO ENTRE PROCESSADOR E INTERFACES DE E/S .......................... 70 3 Apostila de Arquitetura de Computadores Prof Bruno 6.2 ORGANIZAO DE UMA INTERFACE DE E/S ................................................... 71 6.3 TCNICAS DE TRANSFERNCIA DE DADOS .................................................... 73 6.3.1 E/S com Polling ....................................................................................... 73 6.3.2 E/S com Interrupo ................................................................................ 75 6.3.3 E/S com Acesso Direto Memria .......................................................... 77 6.4 PADRES DE BARRAMENTOS ........................................................................ 79 6.4.1 Barramentos Locais ................................................................................. 80 6.4.2 Barramentos de Perifricos ..................................................................... 81 7 TPICOS ESPECIAIS ..................................................................................... 83 7.1 A TCNICA DE PIPELINING ............................................................................ 83 7.2 ARQUITETURAS SUPER-ESCALARES .............................................................. 86 7.3 A ARQUITETURA ALPHA AXP ...................................................................... 87 7.4 ARQUITETURA DO PENTIUM .......................................................................... 90 7.5 A ARQUITETURA POWERPC 601 ................................................................... 93 7.6 ARQUITETURAS RISC ................................................................................... 96 7.6.1 Lacuna Semntica .................................................................................... 96 7.6.2 Crticas s Arquiteturas Complexas ........................................................ 99 7.6.3 A Filosofia RISC .................................................................................... 101 7.6.4 Caractersticas das Arquiteturas RISC.................................................. 102 7.6.5 Histrico das Arquiteturas RISC ........................................................... 102 7.7 SISTEMAS PARALELOS ................................................................................ 103 7.7.1 Sistemas SISD ........................................................................................ 104 7.7.2 Sistemas SIMD ....................................................................................... 104 7.7.3 Sistemas MISD ....................................................................................... 105 7.7.4 Sistemas MIMD ...................................................................................... 105
4 Apostila de Arquitetura de Computadores Prof Bruno 1 INTRODUO 1.1 O Conceito de Arquitetura Este um curso introdutrio sobre arquitetura de computadores. importante, em primeiro lugar, definir precisamente o significado que aqui ser dado ao termo arquitetura de computador. A arquitetura de um computador um modelo da organizao e funcionamento de um sistema de processamento. A descrio da arquitetura destaca as funes dos componentes bsicos de um computador, a interconexo destes componentes e o modo como os componentes interagem. Este curso focaliza aqueles tipos de sistemas que j fazem parte do nosso cotidiano profissional, basicamente microcomputadores e estaes de trabalho. A Figura 1.1 mostra a organizao tpica destes dois tipos de sistemas. Processador Memria Principal Disco . Vdeo Rede Interface de E/S Interface de E/S Interface de E/S
Figura 1.1. Organizao tpica de um computador. Esta figura mostra os trs componentes bsicos de um computador: o processador (tambm conhecido como unidade central de processamento), a memria principal e as interfaces de entrada e sada. O processador o componente ativo, controlador de todo o sistema. o processador que realiza todas as operaes sobre os dados, de acordo com o indicado pelas instrues no cdigo do programa. A memria principal armazena as instrues que so executadas pelo processador, e os dados que sero manipulados. As interfaces de entrada e de sada so as portas de comunicao para o mundo externo, s quais esto conectados os dispositivos perifricos tais como vdeo, teclado, discos e impressora. 5 Apostila de Arquitetura de Computadores Prof Bruno Estes componentes esto interconectados por meio de um barramento, atravs do qual o processador realiza o acesso a instrues e dados armazenados na memria principal. tambm atravs deste mesmo barramento que o processador recebe ou envia dados de ou para as interfaces de entrada/sada. Instrues e dados esto armazenados em locaes de memria, na memria principal. Para realizar o acesso a uma informao, o processador envia para a memria, atravs do barramento, o endereo da locao de memria que contm a informao aonde ser feito o acesso. A informao trocada entre o processador e a memria tambm atravs do barramento. O acesso interfaces de entrada/sada semelhante, sendo cada interface identificada por um endereo nico. A Figura 1.1 e a discusso a ela associada descrevem sucintamente a arquitetura de um computador. Conforme mencionado acima, esta descrio indica quais so os componentes bsicos da arquitetura (processador, memria principal e interfaces) e suas funes, como esto interconectados (atravs de um barramento) e como interagem (troca de endereos, instrues e dados atravs do barramento). Nos captulos que se seguem, esta arquitetura ser descrita em maiores detalhes. 1.2 Nveis de Arquitetura Na realidade, o conceito de arquitetura pode ser aplicado a diferentes sistemas de hardware e software, levando a diversos nveis de arquitetura conforme mostra a Figura 1.2. Arquitetura de Processador Arquitetura de Computador Arquitetura de Sistema Operacional Arquitetura de Rede
Figura 1.2. Nveis de arquitetura. O nvel de arquitetura de processador descreve a organizao e o funcionamento de um dos componentes de um sistema de processamento. Neste nvel so descritos os elementos bsicos de um processador, o modo como instrues so executadas pelo processador e o seu conjunto de instrues. O prximo nvel o de arquitetura de computador que, como j visto, descreve o sistema de processamento como um todo. O nvel acima o de arquitetura de sistema operacional. Em termos simples, o sistema operacional serve de interface entre o hardware do computador e o usurio, tornando os detalhes de operao do computador transparentes ao usurio. Neste nvel, so descritas a organizao e as funes de um sistema operacional e especificados os servios por ele oferecidos. Finalmente, o nvel de 6 Apostila de Arquitetura de Computadores Prof Bruno rede de computadores aborda um sistema formado por computadores interligados por um meio de comunicao. No nvel de arquitetura de redes descrita a conexo fsica entre os computadores, bem como os protocolos de comunicao usados na troca de informaes entre os computadores. muito importante perceber que estes nveis de arquitetura no esto isolados. O perfeito entendimento de um certo nvel exige uma compreenso de vrios aspectos de um ou mais nveis inferiores. Por exemplo, para entender o gerenciamento de memria virtual um assunto que tratado dentro do nvel de arquitetura de sistema operacional necessrio conhecer o suporte para memria virtual oferecido pelo processador, o que abordado a nvel de arquitetura de processador. Atualmente, est cada vez mais claro que o pleno domnio de algumas reas da computao exige do indivduo uma viso de conjunto destes quatro nveis de arquitetura. 7 Apostila de Arquitetura de Computadores Prof Bruno 2 CONCEITOS BSICOS DE ARQUITETURA DE PROCESSADOR Este captulo descreve a arquitetura bsica de um processador. Podemos considerar que um processador organizado em duas unidades, a seo de processamento e a seo de controle. Este captulo descreve os principais componentes em cada uma destas unidades. Dentro deste contexto, o captulo tambm descreve como um processador executa as instrues de um programa. No captulo seguinte, aborda-se um tema central na arquitetura de um processador, qual seja, o seu conjunto de instrues. 2.1 A Seo de Processamento A seo de processamento formada basicamente pela unidade lgica e aritmtica (ALU) e por diversos registradores. Estes componentes normalmente esto organizados conforme mostra a Figura 2.1. ALU PC MAR registradores de dados R0 R1 R31 . . . B R A estado MDR S1 S2 D
Figura 2.1. Componentes da seo de processamento. A ALU realiza as operaes aritmticas, tais como adio e subtrao, e operaes lgicas, tais como and, or, not. Podemos dizer ento que a ALU o componente da arquitetura que, de fato, processa os dados. Os registradores so utilizados para armazenar informaes internamente no processador. Um 8 Apostila de Arquitetura de Computadores Prof Bruno registrador pode ser utilizado tanto para acesso de leitura quanto para acesso de escrita: uma informao armazenada no registrador em uma operao de escrita, enquanto a informao contida no registrador recuperada em uma operao de leitura. A Figura 2.1 mostra aqueles registradores normalmente encontrados na seo de processamento. Os diversos registradores possuem um uso bem definido dentro da arquitetura, e de uma maneira geral podem ser classificados em trs tipos: registradores de uso geral, registradores de uso especfico e registradores auxiliares. Registradores de uso geral normalmente so usados para armazenar dados que sero processados pela ALU, bem como resultados produzidos pela ALU. Na seo de processamento mostrada na Figura 2.1, existem 32 registradores de uso geral, denominados R0,...,R31. Coletivamente, estes registradores so chamados de conjunto de registradores de dados (data register file). O registrador de estado (status register) associado ALU um registrador de uso especfico, e contm informaes sobre o resultado produzido pela ALU. Este registrador possui bits sinalizadores que so ativados ou desativados 1 de acordo com o tipo de resultado produzido pela ALU. Por exemplo, o registrador de estado pode ter um bit denominado Z, o qual ativado quando o resultado for nulo e desativado quando o resultado for no-nulo. Tambm comum encontrar no registrador de estado um bit chamado N que ativado se o resultado for negativo, sendo desativado se o resultado for positivo. Um outro exemplo de registrador de uso especfico o contador de programa (program counter). O contador de programa contm o endereo da locao de memria onde se encontra a prxima instruo a ser executada pelo processador. Os registradores auxiliares normalmente so usados para armazenamento temporrio. Este o caso dos registradores A e B, que armazenam os operandos de entrada da ALU, enquanto estes esto sendo processados. Antes de cada operao da ALU, os operandos so transferidos dos registradores de dados ou da memria principal para estes registradores temporrios. O resultado produzido pela ALU temporariamente armazenado no registrador R at ser transferido para o seu destino, que pode ser um registrador de dados ou a memria principal. A Figura 2.1 mostra dois outros registradores temporrios, denominados MAR (memory address register) e MDR (memory data register). O MAR armazena o endereo da locao de memria onde ser feito o acesso, ao passo que o MDR armazena temporariamente a informao transferida de ou para a locao de memria endereada por MAR. Em geral, registradores auxiliares no so visveis, no sentido que um programador de baixo nvel no dispe de instrues para acessar diretamente tais registradores. A interligao entre a ALU e os registradores feita atravs de trs vias, chamadas barramentos internos. Os barramentos internos S1 e S2 permitem a transferncia de dados dos registradores para a ALU. O barramento interno D
1 Considera-se aqui que um bit ativado quando ele recebe o valor lgico 1, sendo desativado ao receber o valor lgico 0. 9 Apostila de Arquitetura de Computadores Prof Bruno permite a transferncia do resultado produzido pela ALU, temporariamente armazenado no registrador R, para outro registrador. Uma arquitetura de processador uma arquitetura de n bits quando todas as operaes da ALU podem ser realizadas sobre operandos de at n bits. Normalmente, em uma arquitetura de n bits os registradores de dados e os barramentos internos tambm so de n bits, de forma a permitir que os dados sejam armazenados e transferidos de forma eficiente. 2.2 A Execuo de Instrues Tendo examinado os componentes e a organizao da seo de processamento, podemos agora analisar como as instrues so executadas. A execuo de uma instruo envolve a realizao de uma seqncia de passos, que podemos chamar de passos de execuo. Em geral, a execuo de uma instruo envolve quatro passos, como mostra a Figura 2.2. decodificao execuo busca resultado
Figura 2.2. Passos na execuo de uma instruo. No primeiro passo, denominado busca, o processador realiza o acesso ao cdigo binrio da instruo, armazenado na memria principal. A etapa seguinte a decodificao da instruo, na qual as informaes contidas no cdigo da instruo so interpretadas. Em algumas arquiteturas, neste passo tambm so acessados os dados usados pela instruo. Aps a decodificao, a execuo da instruo entra no terceiro passo, denominado execuo, no qual a operao indicada pela instruo (por exemplo, uma operao na ALU) efetuada. Finalmente no quarto passo, chamado resultado, armazenado em um registrador ou na memria o resultado produzido pela instruo. Cada passo de execuo envolve a realizao de vrias operaes bsicas. As operaes bsicas acontecem dentro da seo de processamento, sob a coordenao da seo de controle. Existem quatro principais tipos de operaes bsicas: transferncia de dados entre os registradores e a ALU; transferncia de dados entre os registradores; transferncia de dados entre os registradores e a memria; operaes aritmticas e lgicas realizadas pela ALU.
Esta sub-diviso dos passos de execuo em operaes bsicas pode ser visualizada na Figura 2.3. 10 Apostila de Arquitetura de Computadores Prof Bruno decodificao execuo busca resultado
Figura 2.3. Diviso dos passos de execuo em operaes bsicas. A sub-diviso dos passos sugerida pela Figura 2.3 apenas um exemplo ilustrativo. Os passos de execuo no possuem necessariamente o mesmo nmero de operaes bsicas em todas as instrues. O que diferencia cada instruo justamente o nmero e o tipo de operaes bsicas executadas em cada passo. Para tornar mais claro o mecanismo de execuo de instrues, considere uma arquitetura com uma seo de processamento idntica da Figura 2.1. Considere tambm que a arquitetura oferece quatro tipos de instrues: instrues aritmticas e lgicas, instrues de desvio incondicional e condicional, e instrues de acesso memria. Exemplos destes tipos de instrues aparecem no quadro da Figura 2.4. Tipo Exemplo Descrio aritmtica/lgica ADD Rs1,Rs2,Rd O contedo dos registradores Rs1 e Rs2devem ser somados e o resultado armazenado em Rd. desvio incondicional JMP dst A prxima instruo a ser executada deve ser a que se encontra na locao de memria com endereo dst. desvio condicional JZ dst A prxima instruo a ser executada deve ser a que se encontra no endereo dst, caso o bit Z no registrador de estado esteja ativado. acesso memria LOAD end,R1 O dado armazenado na locao de memria com endereo end deve ser transferido para o registrador R1. Figura 2.4. Exemplos de instrues. A Figura 2.5 apresenta um exemplo hipottico relacionando, para cada tipo de instruo, as operaes bsicas que acontecem dentro de cada passo de execuo. Nesta figura, Ry Rx representa a transferncia do contedo do registrador Rx para o registrador Ry. M[R] denota o contedo da locao de memria cujo endereo est no registrador R. Finalmente, IR (instruction register) representa um registrador especial que recebe o cdigo da instruo a ser executada, enquanto PC o contador de programa. Aritmticas e Lgicas Desvios Incondicionais Desvios Condicionais Acessos Memria 11 Apostila de Arquitetura de Computadores Prof Bruno Busca MAR PC MDR M[MAR] IR MDR PC++
MAR PC MDR M[MAR] IR MDR PC++ MAR PC MDR M[MAR] IR MDR PC++ MAR PC MDR M[MAR] IR MDR PC++ Decodificao decod A Rs1 B Rs2
decod
decod
decod
Execuo R A op B PC destino cond se (cond) PC destino MAR end MDR Rs (E) M[MAR] MDR (E) MDR M[MAR] (L)
Resultado Rd R Rd MDR (L) Figura 2.5. Operaes bsicas na execuo de instrues. O passo de busca idntico para todos os tipos de instrues e envolve quatro operaes bsicas: (1) o contedo do contador de programa transferido para o registrador de endereo de memria MAR; (2) realizado oacesso memria, usando o endereo em MAR; (3) o cdigo de instruo recebido da memria, temporariamente armazenado em MDR, transferido para o registrador de instruo IR (este registrador faz parte da seo de controle, como ser visto mais frente); (4) contador de programa incrementado, passando a indicar a prxima instruo onde ser feito o acesso e executada. Concludo o passo de busca, inicia-se o passo de decodificao da instruo armazenada em IR. A interpretao do cdigo da instruo indicado por decod na Figura 2.5. Como mencionado, em algumas arquiteturas este passo tambm inclui o acesso aos operandos da instruo. Na Figura 2.5, isto indicado pela transferncia do contedo dos registradores de dados Rs1 e Rs2 para os registradores temporrios A e B, respectivamente, no caso de instrues aritmticas e lgicas. O prximo passo o de operao. As operaes bsicas neste passo dependem inteiramente do tipo de instruo que est sendo executada. No caso das instrues aritmticas e lgicas, este passo corresponde execuo pela ALU 12 Apostila de Arquitetura de Computadores Prof Bruno da operao indicada na instruo, utilizando como operandos o contedo dos registradores A e B, com armazenamento do resultado no registrador R. Em instrues de desvio incondicional, apenas uma operao bsica realizada: o endereo destino carregado no contador de programa. Como o contador de programa indica a prxima instruo a ser executada, isto resulta em um desvio para a instruo armazenada no endereo destino. Em desvios condicionais, o contador de programa modificado somente se a condio de desvio for verdadeira. A avaliao da condio de desvio indicada por cond, na Figura 2.5. O endereo destino carregado no contador de programa apenas se a condio de desvio testada for verdadeira. Em instrues de acesso memria, o passo de execuo inicia-se com a transferncia do endereo da locao onde ser feito o acesso para o registrador MAR. As demais operaes bsicas dependem se o acesso de escrita (indicadas por E) ou de leitura (indicadas por L). No caso de uma escrita, so executadas duas operaes bsicas: a transferncia do dado a ser escrito para o registrador MDR e a escrita na memria propriamente dita. No caso de uma leitura, a realizado o acesso locao de memria e o dado obtido armazenado no registrador MDR. O ltimo passo o de armazenamento do resultado. Em instrues aritmticas e lgicas, o resultado no registrador R transferido para o registrador destino indicado na instruo. Em instrues de leitura memria, o dado que se encontra no registrador MDR transferido para o registrador destino. importante salientar que o quadro na Figura 2.5 extremamente simplificado. Por exemplo, na prtica um acesso memria no feito por uma nica operao bsica como indicado, mas normalmente requer vrias operaes bsicas. No entanto, este quadro reflete corretamente como a execuo de uma instruo logicamente organizada. 2.3 A Seo de Controle Como mencionado anteriormente, as operaes bsicas que ocorrem dentro da seo de processamento so todas comandadas pela seo de controle. Ao efetuar a busca da instruo, a unidade de controle interpreta a instruo de modo a identificar quais as operaes bsicas que devem ser realizadas, e ativa sinais de controle que fazem uma operao bsica de fato acontecer. A Figura 2.6 apresenta um diagrama em blocos da seo de controle e, de forma bastante simplificada e ilustrativa, a sua interligao com a seo de processamento. Como mostra a figura, a seo de controle formada basicamente pela unidade de controle e pelo registrador de instruo, ou IR (Instruction Register). A interpretao do cdigo da instruo e a ativao dos sinais de controle so realizados pela unidade de controle. Os sinais de controle que so ativados, bem como a seqncia com que so ativados, depende de cada instruo em particular. 13 Apostila de Arquitetura de Computadores Prof Bruno ALU B R A S1 S2 D IR seo de controle seo de processamento unidade de controle R2 R3 R1 s1 s2 s3 s4 s5 s6 s7 s8
Figura 2.6. A seo de controle e a parte de processamento. A ttulo de exemplo, vamos verificar como a execuo da instruo ADD R1,R2,R3 direcionada pela unidade de controle. Para tanto, a seo de processamento na figura acima foi representada com apenas os trs registradores de dados envolvidos na execuo desta instruo. A execuo desta instruo requer as seguintes operaes bsicas: (1) transferncia do contedo do registrador de dados R1 para o registrador temporrio A; (2) transferncia do contedo do registrador de dados R2 para o registrador temporrio B; (3) adio dos dados armazenados nos registradores A e B e armazenamento do resultado no registrador R; (4) transferncia do contedo do registrador R para o registrador R3. A seqncia de ativao do sinais de controle, com as operaes bsicas correspondentes, apresentada na Figura 2.8. 14 Apostila de Arquitetura de Computadores Prof Bruno operao bsica sinal de controle descrio da operao bsica (1) (2) s1, s2
s3,s4 coloca o contedo de R1, R2 para os barramentos S1,S2, respectivamente.
armazena a informao presente nos barramentos S1, S2 em A,B, respectivamente. (3) s5
s6 seleciona a operao de soma na ALU.
armazena o resultado produzido pela ALU em R. (4) s7
s8 coloca o contedo de R para o barramento D.
armazena a informao presente no barramento D em R3. Figura 2.8. Ativao dos sinais de controle e operaes bsicas correspondentes. Este um exemplo tpico de como a unidade de controle coordena a execuo das operaes bsicas na seo de processamento. Para cada registrador existem sinais que controlam a leitura e a escrita do registrador. Outros sinais indicam ALU a operao aritmtica ou lgica que deve realizada. Para qualquer outro componente na seo de processamento existem os sinais de controle necessrios. Para executar uma operao bsica, a unidade de controle simplesmente ativa os sinais apropriados na seqncia correta. 2.4 O Sinal de Clock Pode-se observar pelo exemplo acima que a ordem na qual os sinais de controle so ativados crtica. Alguns sinais devem obrigatoriamente preceder outros (s3, por exemplo, no pode ser ativado antes de s1), enquanto que outros sinais podem ser ativados simultaneamente (s1 e s2, por exemplo). Mais ainda, para garantir um tempo suficiente para a transmisso da informao atravs dos barramentos internos, em alguns casos deve ser observado um intervalo de tempo mnimo entre a ativao de dois sinais. 15 Apostila de Arquitetura de Computadores Prof Bruno Para atender as relaes de tempo requeridas na ativao dos sinais de controle, a unidade de controle opera em sincronismo com um sinal de clock. Como mostra a Figura 2.9, uma nova operao bsica executada no momento em que inicia-se um novo ciclo de clock. Em muitos casos, vrias operaes bsicas podem ser comandadas simultaneamente, dentro de um mesmo ciclo de clock. 1 ciclo clock leitura decodificao execuo resultado
Figura 2.9. A sincronizao da execuo de uma instruo com o sinal de clock. A execuo de uma instruo consome um certo nmero de ciclos de clock. O nmero de ciclos de clock por instruo no o mesmo para todas as instrues, j que cada instruo pode envolver um nmero diferente de operaes bsicas em cada passo de execuo. O tamanho do ciclo de clock um dos fatores que determinam diretamente o desempenho de um processador. Quanto menor o tamanho do ciclo de clock, menor ser o tempo de execuo das instrues, e assim maior ser o nmero de instrues executadas por unidade de tempo. Ao longo das dcadas de 70 e 80, procurava-se diminuir o tamanho do ciclo de clock com o desenvolvimento de novas tecnologias que permitissem velocidades de operao cada vez maiores. No entanto, as tecnologias de integrao foram se aproximando dos limites impostos pela prpria fsica, tornando esta evoluo mais lenta e elevando os custos. Por este motivo, a reduo do ciclo de clock passou a ser considerada sob o ponto de vista arquitetural. Atualmente, procura-se diminuir o ciclo de clock no somente atravs de novas tecnologias, mas tambm atravs de simplificaes na arquitetura, de modo que a arquitetura possa ser implementada atravs de circuitos mais simples e inerentemente mais rpidos. Esta relao entre a complexidade funcional da arquitetura e o tamanho do ciclo de clock ser discutida em maiores detalhes na discusso sobre arquiteturas RISC, no Captulo 7. 2.5 Implementao da Unidade de Controle Existem basicamente duas maneiras de implementar uma unidade de controle. A primeira delas usando lgica aleatria (o termo original hardwired control). A outra forma usando microprogramao. A Figura 2.10 mostra a estrutura tpica de uma unidade de controle implementada com lgica aleatria. 16 Apostila de Arquitetura de Computadores Prof Bruno Circuito Lgico Registrador de Instruo Seo de Controle . . . Seo de Processamento clock
Figura 2.10. Organizao de uma unidade de controle implementada com lgica aleatria. Na implementao por lgica aleatria, a unidade de controle formada por um nico circuito lgico, cuja entrada o cdigo de instruo armazenado em IR e cujas sadas so os prprios sinais de controle que comandam as operaes bsicas na seo de processamento. De acordo com o cdigo da instruo, a cada ciclo de clock este circuito ativa os sinais de controle que comandam as operaes bsicas que devem ser realizadas naquele ciclo. A desvantagem desta forma de implementao que a complexidade do circuito de controle, em termos do nmero de dispositivos lgicos, aumenta rapidamente com o nmero de instrues oferecidas pela arquitetura e com o nmero de operaes bsicas que devem ser realizadas na execuo de uma instruo. Em arquiteturas com instrues funcionalmente complexas, o projeto de uma unidade de controle com lgica aleatria torna-se muito difcil e propenso a erros. A tcnica de microprogramao corrige esta desvantagem da implementao com lgica aleatria. Nela, cada instruo oferecida pela arquitetura, que passa a ser chamada de macroinstruo, na realidade executada por uma seqncia de instrues primitivas, extremamente simples, chamadas microinstrues. Os prprios bits das microinstrues so usados para ativar e desativar os sinais de controle que comandam as operaes bsicas. A seqncia de microinstrues que executa uma macroinstruo formam uma microrotina. Usando de uma interpretao mais simples, podemos considerar que a execuo de uma macroinstruo consiste na chamada de uma microrotina, feita pela unidade de controle. As microinstrues da microrotina executam as operaes bsicas associadas macroinstruo. A Figura 2.11 mostra a estrutura de uma unidade de controle implementada com a tcnica de microprogramao. 17 Apostila de Arquitetura de Computadores Prof Bruno Registrador de Macroinstruo Memria de Microprograma Seqenciador Registrador de Microinstruo . . . Sinais de Controle clock
Figura 2.11. Organizao de uma unidade de controle microprogramada. As microrotinas encontram-se armazenadas na memria de microprograma. Quando o cdigo da macroinstruo armazenado no registrador de (macro)instruo, o seqenciador interpreta este cdigo e determina o endereo de entrada da microrotina que executa aquela macroinstruo. O seqenciador fornece, a cada ciclo de clock, o endereo da prxima microinstruo a ser executada. Aps o acesso microinstruo, ela armazenada no registrador de microinstruo. Alguns bits da microinstruo so usados diretamente para comandar os sinais de controle para a seo de processamento. Outros bits so utilizados pelo seqenciador para determinar a prxima microinstruo a ser executada. A execuo de uma microinstruo envolve o acesso da microinstruo na memria de microprograma, o armazenamento no registrador de microinstruo e a realizao das operaes bsicas comandadas pelos bits da microinstruo. Uma nova microinstruo executada a cada ciclo de clock. Quando a execuo de uma microrotina concluda, uma nova macroinstruo acessada na memria principal e armazenada no registrador de instruo, e iniciada a execuo de uma nova microrotina. A vantagem da microprogramao est no fato que a implementao das instrues reduz-se basicamente escrita das microrotinas que sero gravadas na memria de microprograma. Esta vantagem se torna especialmente significativa quando a arquitetura oferece um grande nmero de instrues e estas instrues so complexas, ou seja, a sua execuo envolve um grande nmero de operaes bsicas. Neste caso, o projeto de um complicado circuito lgico, como aconteceria na implementao com lgica aleatria, substitudo pela escrita das microrotinas, uma tarefa comparativamente bem mais simples. 18 Apostila de Arquitetura de Computadores Prof Bruno 3 O CONJUNTO DE INSTRUES DO PROCESSADOR O conjunto de instrues um dos pontos centrais na arquitetura de um processador. Vrios aspectos na definio e implementao da arquitetura so influenciados pelas caractersticas do conjunto de instrues. Por exemplo, as operaes realizadas pela unidade lgica e aritmtica, o nmero e funo dos registradores e a estrutura de interconexo dos componentes da seo de processamento so influenciadas pelo conjunto de instrues. Alm disso, como fica claro a partir do captulo anterior, as operaes bsicas que acontecem dentro da seo de processamento dependem das instrues que devem ser executadas. O conjunto de instrues afeta no somente o projeto da seo de processamento: a estrutura e a complexidade da unidade de controle determinada diretamente pelas caractersticas do conjunto de instrues. Este captulo discute as principais aspectos de um conjunto de instrues, como tipos de operaes, operandos, e modos de endereamento. Um exemplo real de conjunto de instrues ser apresentado no prximo captulo, na discusso da famlia Intel 80x86. 3.1 Conjunto de Instrues no Contexto de Software A Figura 3.1 situa o conjunto de instrues do processador dentro dos diversos nveis de software existentes em um sistema de computao. Programa em Linguagem de Alto Nvel Programa em Linguagem Assembly Comandos de Alto Nvel Instrues da Arquitetura Compilador Assembler Linker/Loader Programa Executvel
Figura 3.1. O conjunto de instrues dentro do contexto de software.
19 Apostila de Arquitetura de Computadores Prof Bruno Em geral, os programas so desenvolvidos em uma linguagem de alto nvel como FORTRAN, Pascal ou C. O compilador traduz o programa de alto nvel em uma seqncia de instrues de processador. O resultado desta traduo o programa em linguagem de montagem (assembly language). A linguagem de montagem uma forma de representar textualmente as instrues oferecidas pela arquitetura. Cada arquitetura possui uma particular linguagem de montagem. No programa em linguagem de montagem, as instrues so representadas atravs de mnemnicos, que associam o nome da instruo sua funo, como por exemplo, ADD ou SUB. O programa em linguagem de montagem convertido para um programa em cdigo objeto pelo montador (assembler). O montador traduz diretamente uma instruo da forma textual para a forma de cdigo binrio. sob a forma binria que a instruo carregada na memria e interpretada pelo processador. Programas complexos so normalmente estruturados em mdulos. Cada mdulo separadamente compilado e submetido ao montador, gerando diversos mdulos em cdigo objeto. Estes mdulos so reunidos pelo ligador (linker), resultando finalmente no programa executvel que carregado na memria. O conjunto de instrues de uma arquitetura se distingue atravs de diversas caractersticas. As principais caractersticas de um conjunto de instrues so: tipos de instrues e operandos, nmero e localizao dos operandos em instrues aritmticas e lgicas, modos de endereamento para acesso a dados na memria, e o formato dos cdigos de instruo. Estes aspectos so analisados a seguir. 3.2 Tipos de Instrues e de Operandos As instrues oferecidas por uma arquitetura podem ser classificadas em categorias, de acordo com o tipo de operao que realizam. Em geral, uma arquitetura fornece pelo menos trs categorias de instrues bsicas: instrues aritmticas e lgicas: so as instrues que realizam operaes aritmticas sobre nmeros inteiros, tais como adio e subtrao, e operaes lgicas bit-a-bit, tais como AND e OR; instrues de movimentao de dados: instrues que transferem dados entre os registradores ou entre os registradores e a memria principal; instrues de transferncia de controle: instrues de desvio e de chamada de rotina, que transferem a execuo para uma determinada instruo dentro do cdigo do programa. Vrias arquiteturas oferecem outras categorias de instrues, voltadas para operaes especializadas. Dentre estas, podemos citar:
20 Apostila de Arquitetura de Computadores Prof Bruno instrues de ponto flutuante: instrues que realizam operaes aritmticas sobre nmeros com ponto flutuante; instrues decimais: instrues que realizam operaes aritmticas sobre nmeros decimais codificados em binrio (BCD); instrues de manipulao de bits: instrues para testar o valor de um bit, ou para atribuir um valor a um bit; instrues de manipulao de strings: instrues que realizam operaes sobre cadeias de caracteres (strings), tais como movimentao, comparao ou ainda procura de um caracter dentro de um string. Existem muitas diferenas entre as arquiteturas quanto s categorias de instrues oferecidas. Arquiteturas de uso geral oferecem a maioria das categorias acima relacionadas. Arquiteturas destinadas para uma aplicao especfica podem oferecer outros tipos de instrues, especializadas para aquela aplicao. Um exemplo seria uma arquitetura voltada para processamento grfico, que ofereceria instrues para realizar operaes sobre pixels. Os tipos de operandos que podem ser diretamente manipulados por uma arquitetura depende, claro, dos tipos de instrues oferecidas. A Figura 3.2 mostra como os principais tipos de dados so normalmente representados em uma arquitetura de uso geral. A Figura 3.2(a) mostra a representao de inteiros, neste exemplo particular, inteiros com 32 bits. Nmeros inteiros podem ser representados com ou sem sinal. Em um nmero inteiro com sinal, o bit mais significativo reservado para indicar o estado do sinal (positivo, negativo). Nmeros inteiros sem sinal assumem apenas valores positivos. Algumas arquiteturas oferecem instrues especficas para aritmtica com ou sem sinal. Estas instrues diferem no modo como so alterados os bits do registrador de estado associado ALU. Algumas linguagens de programao tornam visvel para o programador esta distino entre inteiros com ou sem sinal. Na linguagem C por exemplo, uma varivel declarada do tipo int representada por um inteiro com sinal. Ao contrrio, variveis do tipo unsigned int so representadas por inteiros sem sinal, sendo normalmente usadas para indexar elementos de vetores. A Figura 3.2(b) mostra a representao de nmeros com ponto flutuante, com preciso simples e dupla. A diferena entre precises est no nmero de bits usados para representar a mantissa e o expoente. Atualmente, a maioria da arquiteturas que operam nmeros com ponto flutuante obedecem a um padro, denominado IEEE 754, que define a representao e um conjunto de operaes aritmticas e lgicas para nmeros com ponto flutuante.
21 Apostila de Arquitetura de Computadores Prof Bruno (unsigned integer) inteiro sem sinal inteiro com sinal (signed integer) 0 31 0 31 s
(a) ponto flutuante preciso simples ponto flutuante preciso dupla 0 0 22 31 e 63 51 e m m s s
(b) 0 7 d1 d2 BCD empacotado (packed BCD)
(c) 0 7 c1 c2 cn . . . cadeia de caracteres
(d) Figura 3.2. Representao dos tipos de operandos mais comuns. A Figura 3.2(c) mostra a representao de nmeros BCD empacotados (packed BCD). Nesta representao, dois dgitos decimais codificados em binrio so representados dentro de um byte, cada dgito sendo codificado em quatro bits do byte. Finalmente, a Figura 3.2(d) mostra a representao de cadeias de caracteres, onde cada byte dentro de uma seqncia de bytes codifica um caracter segundo um certo padro (p. ex. o padro ASCII). 3.3 Nmero e Localizao dos Operandos Uma outra caracterstica de um conjunto de instrues o nmero de operandos explicitamente indicados em uma instruo aritmtica ou lgica. Em algumas arquiteturas, estas instrues referenciam explicitamente trs operandos, dois operandos-fonte e um operando-destino, como por exemplo em: ADD R1, R2, R3 onde R1 e R2 so os operandos-fonte e R3 o operando-destino. Em outras arquiteturas, instrues aritmticas/lgicas especificam apenas dois operandos; neste caso, um dos operandos-fonte tambm o operando-destino. Por exemplo, na instruo ADD R1, R2 22 Apostila de Arquitetura de Computadores Prof Bruno R2 contm um dos operandos-fonte e tambm usado como operando- destino. Quanto localizao dos operandos especificados por uma instruo aritmtica/lgica, podemos encontrar arquiteturas onde podem ser realizados acessos aos operandos diretamente a partir da memria principal. Por exemplo, nestas arquiteturas podemos ter instrues tais como: ADD M1,R1,R2 ADD M1,M2,R1 ADD M1,M2,M3 onde M1 e M2 e M3 so endereos de locaes de memria. Em um outro extremo, existem arquiteturas onde todos os operandos encontram-se apenas em registradores. As instrues aritmticas/lgicas so todas do tipo: ADD R1,R2,R3 ADD R1,R2 A partir do nmero de operandos explicitamente referenciados e da localizao destes operandos, podemos classificar as arquiteturas nos seguintes tipos: arquiteturas memria-memria: as instrues aritmticas/lgicas usam trs operandos e todos os operandos podem estar na memria; arquiteturas registrador-memria: as instrues aritmticas/lgicas usam dois operandos, sendo que apenas um deles pode residir na memria. arquiteturas registrador-registrador: as instrues aritmticas/lgicas usam trs operandos, todos em registradores. Neste caso, apenas duas instrues acessam diretamente a memria: uma instruo LOAD, que carrega em um registrador um dado armazenado na memria e uma instruo STORE, que armazena na memria o contedo de um registrador. Arquiteturas memria-memria e registrador-memria apresentam como vantagem um menor nmero de instrues no cdigo do programa, j que no necessrio carregar previamente em registradores os operandos-fonte de uma instruo aritmtica/lgica, como acontece em uma arquitetura registrador- registrador. Por outro lado, a existncia de instrues aritmticas/lgicas mais poderosas torna mais complexa a implementao da arquitetura. As arquiteturas Intel 80x86 e Motorola MC680x0 so do tipo registrador-memria. Dentre as arquiteturas memria-memria podemos citar o DEC VAX 11. 3.4 Modos de Endereamento 23 Apostila de Arquitetura de Computadores Prof Bruno Os operandos de uma instruo podem encontrar-se em registradores, na memria principal ou ainda embutidos na prpria instruo. O modo de endereamento refere-se maneira como uma instruo especifica a localizao dos seus operandos. Existem trs modos de endereamento bsicos: modo registrador: neste modo, a instruo indica o nmero de um registrador de dados onde se encontra um operando (fonte ou destino). modo imediato: neste modo, a instruo referencia um operando que se encontra dentro do prprio cdigo da instruo; modo implcito: neste modo, a localizao do operando no est explicitamente indicada na instruo. Por exemplo, nas chamadas arquiteturas acumulador, um dos operandos-fonte e o operando- destino nas instrues aritmticas/lgicas encontra-se sempre em um registrador especial, o acumulador. Assim, no necessrio que este registrador seja explicitamente referenciado pela instruo. A Figura 3.3 mostra exemplos de instrues que usam os modos de endereamento implcito, registrador e imediato. Modo Exemplo Significado Implcito ADD R1 Ac Ac + R1 Registrador ADD R1,R2 R2 R1 + R2 Imediato ADD R1,#4 R1 R1 + 4 Figura 3.3. Exemplos de uso dos modos de endereamento implcito, registrador e imediato. Os modos de endereamento acima referenciam apenas operandos que se encontram em registradores ou na instruo. Existem ainda os modos de endereamento usados para referenciar dados armazenados na memria principal. Entre as diferentes arquiteturas, existe uma enorme variedade de modos de endereamento referentes memria principal, e que formam, na realidade, uma classe de modos de endereamento parte. Um modo de endereamento referente memria indica como deve ser obtido o endereo da locao de memria onde se encontra o dado que ser acessado. Este endereo chamado endereo efetivo. Apesar da variedade acima mencionada, possvel identificar alguns modos de endereamento referentes memria que so oferecidos pela maioria das arquiteturas. Estes modos de endereamento mais comuns esto relacionados na Figura 3.4. Modo Exemplo Significado Uso 24 Apostila de Arquitetura de Computadores Prof Bruno Direto ADD (100),R1 R1 M[100] + R1 acesso a variveis estticas Indireto ADD (R1),R2 R2 M[R1] + R2 acesso via ponteiros Relativo base ADD 100(R1),R2 R2 M[100+R1] + R2 acesso a elementos em estruturas Indexado ADD (R1+R2),R3 R3 M[R1+R2] + R3 acesso a elementos em um vetor Figura 3.4. Modos de endereamento memria mais comuns. No modo direto, o endereo efetivo um valor imediato contido no cdigo da instruo. Por exemplo, na instruo ADD (100),R1, um dos operandos encontra- se na locao de memria com endereo 100. O modo de endereamento direto usado principalmente no acesso s variveis estticas de um programa, cujo endereo em memria pode ser determinado durante a compilao do programa. No modo indireto, o endereo efetivo encontra-se em um registrador. Por exemplo, na instruo ADD (R1),R2, um dos operandos encontra-se na locao de memria cujo endereo est no registrador R1. Ou seja, o operando na memria indicado indiretamente, atravs de um registrador que contm o endereo efetivo. Este modo de endereamento usado no acesso a variveis dinmicas, cujo endereo na memria conhecido apenas durante a execuo do programa. O acesso a uma varivel dinmica realizado atravs de um ponteiro, que nada mais do que o endereo da varivel. Para realizar o acesso varivel dinmica, o ponteiro carregado em um registrador, e a instruo que acessa a varivel usa este registrador com o modo de endereamento indireto. No modo relativo base, o endereo efetivo a soma do contedo de um registrador, chamado endereo-base, com um valor imediato contido na instruo, chamado deslocamento. Por exemplo, na instruo ADD 100(R1),R2, R1 contm o endereo-base e 100 o deslocamento. O endereo efetivo do operando em memria a soma do contedo de R1 com o valor 100. O modo relativo base usado no acesso a componentes de variveis dinmicas estruturadas (por exemplo, record em Pascal ou struct em C). A Figura 3.5 mostra como isto feito. A B C D ~ ~ ~ ~ ~ ~ ~ ~ R1 + 2 ponteiro endereo C = (ponteiro + 2)
25 Apostila de Arquitetura de Computadores Prof Bruno Figura 3.5. Acesso a estruturas dinmicas com o modo de endereamento relativo base. A figura mostra a localizao na memria de uma estrutura com quatro campos A, B, C, D. O endereo inicial da estrutura indicado por um ponteiro, que torna-se conhecido apenas durante a execuo do programa. No entanto, a posio de cada campo em relao ao incio da estrutura fixo, sendo conhecido durante a compilao. O endereo de um campo obtido somando-se a posio do campo (o deslocamento) ao ponteiro que indica o incio da estrutura (o endereo-base). Por exemplo, na figura acima, para somar um valor ao campo C, o compilador pode usar a instruo ADD 2(R1),R2, precedida de uma instruo para carregar em R1 o endereo-base da estrutura. No modo indexado, o endereo efetivo dado pela soma de um ndice com um endereo-base, ambos armazenados em registradores. Por exemplo, na instruo ADD (R1+R2),R3, R1 contm o endereo-base, e R2 o ndice. O modo indexado normalmente usado no acesso aos elementos de um vetor, como mostra a Figura 3.6. ~ ~ ponteiro v[0] v[1] . . . v[10] ~ ~ ponteiro + 1 ponteiro + 10 ~ ~ ~ ~ R1 R2=0 + R1 R2=10 + . . .
Figura 3.6. Acesso aos elementos de um vetor com o modo de endereamento indexado.
A figura representa a localizao na memria de um vetor V. Um ponteiro indica o endereo-base do vetor, onde se encontra o primeiro elemento. O endereo de cada elemento obtido somando o ndice do elemento ao endereo- base. Para realizar o acesso seqencialmente os elementos do vetor, o ndice inicialmente carregado no registrador com o valor 0. O ndice ento incrementado dentro de um loop aps o acesso a cada elemento. Por exemplo, para somar um valor em registrador aos elementos do vetor, o compilador pode usar as seguintes instrues em um loop: ADD R1,(R2+R3) ADD 1,R3 26 Apostila de Arquitetura de Computadores Prof Bruno onde R1 contm o valor a ser somado, R2 contm o ponteiro para o vetor e R3 o registrador com o ndice, com valor inicial 0. 3.5 Formatos de Instruo Como mencionado no incio deste captulo, as instrues de um programa compilado so armazenadas na memria sob a forma de um cdigo em binrio, ou cdigo de instruo. Um cdigo de instruo logicamente formado por campos de bits, que contm as informaes necessrias execuo da instruo. Estes campos de bits indicam, por exemplo, qual a operao a ser realizada e quais os operandos a serem usados. A Figura 3.7 mostra um exemplo de cdigo de instruo com seus campos de bits. 01011100 00010 00001 00011 codop opf1 opf2 opdst
Figura 3.7. Cdigo de instruo e seus campos de bits. Neste cdigo de instruo, o campo codop contm o cdigo da operao a ser realizada, enquanto os campos opf1, opf2 e opdst indicam os operandos fonte e destino, respectivamente. Suponha que o cdigo 01011100 no campo codop indique uma operao de adio, e que os valores 00001, 00010 e 00011 nos campos opf1, opf2 e opdst indiquem os registradores R1, R2 e R3, respectivamente. Assim, este cdigo de instruo a representao binria da instruo ADD R1,R2,R3. O formato de instruo refere-se a caractersticas do cdigo de instruo tais como tamanho do cdigo, tipos de campos de bits e localizao dos campos de bits dentro do cdigo. Uma arquitetura se caracteriza por apresentar instrues com formato irregular ou com formato regular. No primeiro caso, as instrues podem apresentar cdigos com tamanhos diferentes, e um certo campo de bits pode ocupar posies diferentes nos cdigos onde aparece. Em uma arquitetura com instrues regulares, todos os cdigos de instruo possuem o mesmo tamanho, e um certo campo de bits sempre ocupa as mesma posio nos cdigos onde aparece. Arquiteturas com formatos de instruo irregular possibilitam programas com menor tamanho de cdigo executvel. Isto acontece porque aqueles campos de bits no necessrios uma instruo so eliminados, economizando espao de armazenamento na memria. Por outro lado, arquiteturas com formatos de instruo regular apresentam uma grande vantagem quanto simplicidade no acesso s instrues. Se todas as instrues possuem um tamanho de n bits, basta que o processador realize um nico acesso de n bits memria principal para obter uma instruo completa. Considere agora um processador com cdigos de instruo com tamanho varivel. Neste caso, o processador no sabe, a priori, quanto bits deve buscar para obter uma instruo completa. Aps realizar um acesso, torna-se necessrio que o 27 Apostila de Arquitetura de Computadores Prof Bruno processador interprete parcialmente o cdigo da instruo para determinar se deve realizar um outro acesso memria para completar a busca da instruo. A decodificao parcial e o acesso adicional podem comprometer o desempenho ao aumentar o tempo de execuo da instruo. A segunda vantagem de instrues regulares a simplicidade na decodificao das instrues. Em instrues regulares, um certo campo de bits sempre ocupa a mesma posio. Isto permite, por exemplo, que os operandos da instruo sejam acessados ao mesmo tempo que o cdigo de operao interpretado, j que o processador sabe antecipadamente onde encontrar as informaes sobre os operandos. Em instrues irregulares, os campos que indicam os operandos podem aparecer em qualquer posio dentro do cdigo da instruo. Assim, necessrio antes interpretar o cdigo de operao, para determinar as posies dos campos de operando dentro daquele particular cdigo de instruo. Agora, a decodificao e o acesso aos operandos so realizados seqencialmente, o que contribui para aumentar o tempo de execuo das instrues. 28 Apostila de Arquitetura de Computadores Prof Bruno 4 A ARQUITETURA DOS PROCESSADORES INTEL 80X86 Os Captulos 2 e 3 discutiram os conceitos bsicos relacionados arquitetura de um processador. Este captulo ilustra estes conceitos atravs de exemplos de processadores reais. Os processadores selecionados para os exemplos fazem parte da famlia Intel 80x86. Esta escolha deve-se ao fato destes serem os processadores usados nos microcomputadores pessoais do tipo IBM PC. O objetivo deste captulo dar uma viso geral da arquiteturas destes processadores com base nos conceitos vistos at agora. Conceitos avanados, tais como memrias cache, memria virtual e pipelining, incorporados nos processadores da linha 80x86, sero discutidos em captulos posteriores. O mais recente lanamento da Intel, o processador Pentium, ser analisado no captulo que discute arquiteturas de processadores super-escalares. 4.1 Quadro Evolutivo da Famlia Intel 80x86 O primeiro microprocessador Intel foi o Intel4004, produzido em 1969. Este processador era um dispositivo de 4 bits que continha uma ALU, uma unidade de controle e alguns registradores. O Intel 4004 foi rapidamente substitudo pelo Intel 8008. O 8008 era um processador de 8 bits com caractersticas similares s do 4004. Em 1979, a Intel produziu o seu primeiro processador de 16 bits, o 8086. Um processador similar a este, o 8088, foi usado no primeiro IBM PC. A diferena entre eles era o barramento de dados com 8 bits no 8088 e 16 bits no 8086. O sucessor deste processador foi o Intel 80286, tambm com 16 bits. Em 1986, surgiu o primeiro processador de 32 bits, o Intel 80386. O Intel 80386 foi substitudo, em 1989, pelo Intel 80486, um processador com arquitetura de 32 bits. Em 1993, surgiu o processador Pentium, com caractersticas distintas dos processadores anteriores e uma arquitetura de 64 bits. Nesta linha, os prximos processadores de 64 bits foram o Pentium Pro, o PentiumII e o PentiumIII. Desde o lanamento do processador 8086, em 1978, a famlia Intel 80x86 passou por cinco geraes, lanando no mercado um novo processador aproximadamente a cada quatro anos. A Tabela 4.1 mostra a evoluo da linha 80x86. Arquitetura Introduo Nmero Transistores 8086/8088 Junho 1978 29.000 80286 Fevereiro 1982 134.000 80386 Outubro 1985 275.000 80486 Agosto 1989 1.200.000 Pentium Maro 1993 3.100.000 29 Apostila de Arquitetura de Computadores Prof Bruno Pentium Pro (150 200 MHZ) Novembro 1995 5.500.000 Pentium II (350 400 MHZ) Abril 1998 7.500.000 Tabela 4.1. Evoluo da famlia Intel 80x86. Cada processador da famlia pode possuir mais de uma verso, que diferem entre si apenas na tecnologia de integrao. Em geral, a ltima verso de um processador apresenta um ganho no desempenho maior que o dobro da sua verso original. Por sua vez, o desempenho de cada nova gerao se aproxima do dobro do desempenho da ltima verso da gerao anterior. A produo em larga escala garantiu uma queda significativa no custo. Observe tambm que o nmero de transistores usados na implementao dos processadores cresceu exponencialmente desde o lanamento do 8086, que contava com 29.000 transistores. Durante este perodo, o rpido desenvolvimento na tecnologia de integrao possibilitou que o nmero de transistores ultrapassasse 7 milhes na poca do lanamento do Pentium II. 4.2 O Intel 8086/8088 O 8086 foi lanado procurando atender s necessidades de aplicaes que exigiam processamento de 16 bits, maior capacidade de memria, modos de endereamento mais sofisticados que facilitassem a execuo de programas escritos em linguagens de alto nvel e suporte para sistemas operacionais multiprogramados. A arquitetura do 8086 mostrada na Figura 4.1.
ALU FLAGS AH AL BH BL CH CL DH DL AX BX DX CX SP BP SI DI CS DS SS ES IP Execution Unit (EU) Bus Interface Unit (BIU) EU Control Unit Bus Control Data Registers Segment Registers Instruction Queue Address Data Control
30 Apostila de Arquitetura de Computadores Prof Bruno Figura 4.1. Arquitetura do Intel 8086. O Intel 8088 possui a mesma organizao do 8086. As nicas diferenas entre estes dois processadores esto no tamanho da fila de instrues e na largura do barramento de dados. No 8086, a fila de instrues de 8 bytes e o barramento de dados possui uma largura de 16 bits, enquanto no 8088 a fila de instrues e o barramento de dados so de 4 bytes e 8 bits, respectivamente. O barramento de 8 bits no 8088 foi adotado para manter uma compatibilidade com as interfaces de entrada/sada de 8 bits, existentes na poca. Dada a semelhana das duas arquiteturas, a partir de agora se far referncia apenas ao 8086. A arquitetura do 8086 composta de duas unidades principais. A unidade de execuo, ou EU (Execution Unit) engloba a unidade lgica e aritmtica e a unidade de controle. A unidade de interface de barramento, BIU (Bus Interface Unit) responsvel por controlar os acessos externos memria principal e aos dispositivos de entrada/sada. Se durante sua execuo uma instruo requer um acesso a um dado armazenado na memria, a EU solicita o acesso BIU. As principais caractersticas destas duas unidades so descritas a seguir. 4.2.1 A Unidade de Execuo A unidade aritmtica e lgica opera sobre dados de 8 ou 16 bits. Associado ALU existe um conjunto de 4 registradores de dados de uso geral, denominados AX, BX, CX e DX. Cada um destes registradores de 16 bits formado por uma metade inferior (AL, BL, CL, DL) e por uma metade superior (AH, BH, CH, DH), onde podem ser realizados acessos individualmente, constituindo cada metade um registrador de 8 bits. Esta organizao dos registradores no 8086 foi adotada para manter a compatibilidade com programas desenvolvidos para o Intel 8080/8085, que possua apenas registradores de 8 bits. O registrador AX serve como acumulador em instrues aritmticas e lgicas. O registrador BX usado por algumas instrues para armazenar ponteiros para dados armazenados na memria. CX usado em algumas instrues especiais, como a de controle de loop. O registrador DX utilizado como uma extenso do registrador AX em instrues de diviso e multiplicao, sendo nele armazenada a metade superior de um produto de 32 bits ou de um dividendo de 32 bits. Alm dos registradores de uso geral, existem os registradores indexadores e os registradores apontadores. Os registradores indexadores SI (Source Index) e DI (Destination Index) so utilizados em operaes envolvendo cadeias de caracteres (strings). Os registradores SP (Stack Pointer) e BP (Base Pointer) so normalmente usados para acessar a pilha em chamadas e retornos de rotinas 2 . O registrador SP aponta para o topo da pilha, enquanto o registrador BP aponta para a rea de dados locais (na pilha) da rotina em execuo.
2 Pilha uma estrutura de dados em que o ltimo dado armazenado o primeiro a ser recuperado. 31 Apostila de Arquitetura de Computadores Prof Bruno O registrador de estado (flags) associado ALU inclui bits para registrar informaes sobre o resultado de uma operao aritmtica e lgica e ainda alguns bits de controle. 4.2.2 A Unidade de Interface de Barramento (BIU) Todos os acessos memria e s interfaces de e/s so controlados pela BIU. O 8086 possui um barramento de endereos de 20 bits, comportando assim uma memria principal com tamanho mximo de 1 Mbyte. Sob o ponto de vista do 8086, a memria principal apresenta uma organizao especial, chamada segmentao. Nesta organizao, a memria logicamente dividida em blocos, chamados segmentos, conforme mostra a Figura 4.2(a). Cada segmento possui um endereo-base, que o endereo onde inicia-se o segmento. Uma locao de memria referenciada pelo programa atravs de seu deslocamento (offset), que indica a posio da locao relativa ao incio do segmento. Com o endereo-base do segmento e o deslocamento da locao dentro do segmento, o hardware calcula o endereo da locao em relao ao incio da memria. A Figura 4.2(b) mostra como o clculo do endereo da locao feito no caso do 8086. A BIU possui um conjunto de registradores de segmento, onde cada registrador armazena os 16 bits mais significativos do endereo-base do segmento. A cada acesso, este valor concatenado esquerda com quatro bits 0, formando um endereo de 20 bits. A este endereo somado o deslocamento, resultando no endereo da locao. O deslocamento um valor de 16 bits, o que significa que os segmentos podem ter um tamanho mximo de 64 Kbytes. Para efetuar o clculo do endereo, a BIU possui um somador dedicado. Registrador de Segmento Somador endereo-base Endereo Locao (20 bits) 0000 Deslocamento endereo-base deslocamento segmento memria principal (a) (b) Figura 4.2. O mecanismo de segmentao. No caso do 8086, um programa residente na memria possui quatro segmentos. O segmento de cdigo que contm as instrues do programa. O 32 Apostila de Arquitetura de Computadores Prof Bruno segmento de dados que corresponde rea de dados do programa. O segmento de pilha que a rea que se destina pilha do programa. E o segmento extra, que consiste de uma rea de dados adicional. Para cada um destes segmentos existe um registrador de segmento na BIU que, como mencionado, armazena os 16 bits mais significativos do endereo-base do segmento correspondente. Estes registradores so denominados CS (Code Segment register), DS (Data Segment register), SS (Stack Segment register) e ES (Extra Segment register). Os quatro segmentos de um programa so referenciados de acordo com o tipo de acesso memria. Buscas de instruo so feitas dentro do segmento de cdigo indicado pelo valor corrente no registrador de segmento CS. Nos acessos instrues, o deslocamento dado pelo contedo de um registrador especial da BIU, denominado IP (Instruction Pointer). O IP indica a prxima instruo a ser acessada na memria. Note que existe uma diferena entre IP e contador de programa, definido no Captulo 2, j que este ltimo indica a prxima instruo a ser executada. Esta diferena deve-se ao mecanismo de busca antecipada de instrues existente no 8086, que ser descrito logo frente. Acessos dados em memria acontecem dentro do segmento de dados indicado pelo registrador DS. O deslocamento gerado pelo programa de acordo com o modo de endereamento usado. Acessos a dados tambm podem acontecer dentro do segmento extra, apontado pelo registrador ES, quando explicitamente indicado pelo programa. Finalmente, acessos pilha ocorrem dentro do segmento de pilha indicado pelo registrador SS. Uma outra caracterstica do 8086 o mecanismo de busca antecipada de instrues (instruction prefetch). Neste mecanismo, o passo de busca de instruo desvinculado dos demais passos de execuo da instruo. Isto permite que novas instrues sejam buscadas antecipadamente, enquanto uma instruo anterior ainda est sendo executada. A Figura 4.3 compara a busca antecipada de instrues com o modo de busca convencional. B1 E1 B2 E2 B3 E3 B4 E4 (a) tempo (ciclos) B1 B2 B3 B4 E1 E2 E3 E4 (b) tempo (ciclos) B = busca E = execuo
Figura 4.3. Busca convencional e busca antecipada de instrues. A Figura 4.3(a) mostra um modo de acesso seqencial s instrues. Neste caso, a busca de uma nova instruo inicia-se somente aps a instruo anterior ter 33 Apostila de Arquitetura de Computadores Prof Bruno sido completada. A Figura 4.3(b) mostra como funciona a busca antecipada. Neste modo, a busca e a execuo de uma instruo passam a ser atividades distintas. Desta forma, o acesso de uma nova instruo pode ser iniciado antes mesmo que a execuo da instruo anterior tenha sido completada. Por exemplo, na figura acima, a busca da instruo 2 iniciada enquanto a instruo 1 ainda est sendo executada. O mesmo acontece para as instrues seguintes. Qual o efeito da busca antecipada de instrues? Considere o tempo de concluso de uma instruo como sendo o intervalo de tempo entre o trmino de uma instruo e o trmino da instruo seguinte. No modo convencional, como a busca da instruo est acoplada execuo propriamente dita, o tempo de busca soma-se ao tempo de execuo, aumentando o tempo de concluso. Por exemplo, na Figura 4.3(a), v-se que dentro do tempo de concluso de cada instruo sempre existe uma parcela fixa, de 3 ciclos, consumida na busca da instruo. Na busca antecipada, a fase de busca e a fase de execuo so separadas, e o tempo de busca da instruo seguinte mascarado pelo tempo de execuo da instruo corrente. Assim, a contribuio do tempo de busca dentro do tempo de concluso menor. Por exemplo, na Figura 4.3(b), o tempo de busca da instruo 2 totalmente mascarado pelo tempo de execuo da instruo 1. Neste caso, a contribuio do tempo de busca efetivamente anulado. Em um outro exemplo, dois ciclos do tempo de busca da instruo 3 so mascarados pelo tempo de execuo da instruo 2. Agora, apenas um ciclo de busca aparece no tempo de concluso da instruo 3. Na busca antecipada de instrues, a BIU utiliza uma fila de instrues. Uma instruo acessada antecipadamente permanece nesta fila at ser retirada pela EU. A BIU procura manter a fila de instrues sempre cheia, realizando uma busca de instruo sempre que no existe um pedido de acesso solicitado pela EU. Note que em uma arquitetura sem busca antecipada, o contador de programa indica a prxima instruo a ser executada, que exatamente a prxima instruo a ser acessada. Em uma arquitetura com busca antecipada, a prxima instruo a ser executada no necessariamente a prxima instruo a ser acessada. No 8086, a prxima instruo a ser executada j foi trazida anteriormente, e encontra-se na frente da fila de instrues. O registrador IP, localizado na BIU, aponta para a prxima instruo a ser buscada. A busca antecipada de instrues reduz o tempo mdio de concluso de cada instruo. Como conseqncia, o tempo necessrio para executar um certo nmero de instrues menor, o que significa um maior desempenho. Na realidade, a busca antecipada de instrues uma forma limitada de paralelismo empregada no 8086 para aumentar o desempenho. O uso de paralelismo a nvel de execuo de instrues, em formas bem mais sofisticadas do que a existente no 8086, est se tornando comum em arquiteturas de processadores. Execuo paralela de instrues, como na tcnica de pipelining e nas arquiteturas super- escalares, sero discutidas no Captulo 7. 4.2.3 O Conjunto de Instrues do 8086 34 Apostila de Arquitetura de Computadores Prof Bruno As instrues do 8086 podem ser classificadas nos seguintes grupos: instrues aritmticas instrues lgicas instrues de manipulao de strings instrues de transferncia de dados instrues de transferncia de controle A arquitetura do 8086 do tipo memria-registrador. Como visto no Captulo 3, neste tipo de arquitetura as instrues aritmticas e lgicas especificam explicitamente dois operandos, sendo que um deles serve ao mesmo tempo como operando-fonte e operando-destino. Apenas um dos operandos pode se encontrar na memria. Estas instrues esto relacionadas na Tabela 4.2. ADD add ADC add with carry INC increment by 1 AAA ASCII adjust for addition DAA decimal adjust for addition SUB subtract SBB subtract with borrow DEC decrement by 1 NEG negate CMP compare AAS ASCII adjust for subtraction DAS decimal adjust for subtraction MUL multiply byte IMUL integer multiply AAM ASCII adjust for multiply DIV divide IDIV integer divide 35 Apostila de Arquitetura de Computadores Prof Bruno AAD ASCII adjust for division CBW convert byte to word CWD convert word to doubleword Tabela 4.2. Instrues aritmticas no 8086. As instrues aritmticas operam sobre nmeros de 8 ou 16 bits, com ou sem sinal. Existem instrues aritmticas que efetuam adio, subtrao, multiplicao e diviso sobre inteiros representados em binrio e sobre inteiros representados em BCD. Alm destas principais, existem vrias outras instrues. Por exemplo, existem instrues para comparar dois inteiros, para incrementar ou decrementar o contedo de registradores, para converter entre um nmero inteiro e um caracter em representao ASCII e ainda para converter entre inteiros com tamanhos diferentes. As instrues lgicas esto relacionadas na Tabela 4.3. So oferecidas instrues que realizam as operaes booleanas bsicas (complemento, and, or, xor). Esto includas instrues que realizam deslocamentos aritmticos e lgicos esquerda e direita, como tambm instrues para rotao do contedo de registradores.
NOT boolean not AND boolean and OR boolean or XOR boolean exclusive-or TEST boolean test SHL shift logical left SAL shift arithmetic left SHR shift logical right SAR shift arithmetic right ROL rotate left ROR rotate right RCL rotate through carry left RCR rotate through carry right Tabela 4.3. Instrues lgicas no 8086. 36 Apostila de Arquitetura de Computadores Prof Bruno As instrues de manipulao de strings, relacionadas na Tabela 4.4, possibilitam vrios tipos de operaes sobre cadeias de caracteres. Estas operaes so: movimentao de strings entre regies diferentes da memria, comparao de dois strings, procura de um caracter dentro de um string e transferncia de strings entre registradores e a memria. Na realidade, estas operaes so executadas por instrues primitivas (MOVS, CMPS, SCAS, LODS, STOS) que, em geral, so precedidas de um prefixo (REP, REPE/REPZ, REPNE/REPNZ) que fazem a execuo da instruo primitiva ser repetida at que uma condio indicada pelo prefixo seja satisfeita. MOVS move string CMPS compare string SCAS scan string LODS load string STOS store string REP repeat REPE/REPZ repeat while equal/zero REPNE/REPNZ repeat while not equal/not zero Tabela 4.4. Instrues de manipulao de strings. As instrues de transferncia de dados esto relacionadas na Tabela 4.5. Basicamente, existem dois tipos de instrues de transferncia de dados, as de uso geral e as especiais. As instrues de uso geral (MOV, PUSH, POP, XCHG, XLAT) transferem dados entre registradores ou entre registradores e a memria. Nestas esto includas as instrues de acesso pilha. Nas instrues de transferncia especiais, esto instrues para carregar registradores de segmento, salvar/carregar o registrador de estado e para realizar o acesso s interfaces de entrada/sada. MOV move byte or word PUSH push word onto stack POP pop word off stack XCHG exchange byte or word XLAT translate byte LEA load effective address LDS load pointer using DS 37 Apostila de Arquitetura de Computadores Prof Bruno LES load pointer using ES LAHF load AH register from flags SAHF store AH register in flags PUSHF push flags onto stack POPF pop flags off stack IN input byte or word OUT output byte or word Tabela 4.5. Instrues de transferncia de dados. As instrues de transferncia de controle esto relacionadas na Tabela 4.6. Nas instrues de transferncia condicional um desvio pode ou no ser executado, dependendo se a condio testada pela instruo ou no verdadeira. Estas instrues testam o valor de um bit do registrador de estado associado ALU e realizam o desvio de acordo com o estado do bit. O bit(ou bits) a ser testado indicado pela instruo. Nas instrues de transferncia incondicional o desvio sempre efetuado. Nas instrues de transferncia incondicional esto as de chamada/retorno de rotinas. Existem tambm as instrues de controle de loop. Estas instrues aparecem normalmente no final do loop, e fazem com que uma nova interao do loop seja executada enquanto uma certa condio for satisfeita. Existe ainda uma instruo especial (INT), que provoca uma interrupo (interrupes sero discutidas no Captulo 6). Esta instruo normalmente usada para implementar chamadas ao sistema operacional. JA jump if above CALL call routine JAE jump if above or equal RET return from routine JB jump if below JMP jump unconditionally JBE jump if below or equal LOOP loop JC jump if carry LOOPE/LOOPZ loop if equal/zero JE jump if equal LOOPNE/LOOPNZ loop if not equal/not zero JG jump if greater JCXZ jump if CX=0 JGE jump if greater or equal INT interrupt JL jump if less JLE jump if less or equal 38 Apostila de Arquitetura de Computadores Prof Bruno JNC jump if not carry JNE jump if not equal JNO jump if not overflow JNP jump if not parity JNS jump if not sign JO jump if overflow JP jump if parity JS jump if sign Tabela 4.6. Instrues de transferncia de controle. O conjunto de instrues do 8086 oferece os seguintes modos de endereamento: registrador, imediato, direto, indireto via registrador, relativo base, indexado e relativo base indexado. Estes modos de endereamento j foram discutidos genericamente no captulo anterior. No caso particular do 8086, os registradores BX, BP, SI e DI so usados como base ou ndice nos modos de endereamento relativo base e indexado. A Tabela 4.7 mostra as possibilidades de clculo do endereo efetivo nestes modos de endereamento. Modo Endereo Efetivo Baseado BX + deslocamento BP + deslocamento Indexado SI + deslocamento DI + deslocamento Baseado Indexado BX + SI + deslocamento BX + DI + deslocamento BP + SI + deslocamento BP + DI + deslocamento Tabela 4.7. Clculo do endereo efetivo nos modos relativo base/indexado. 4.3 O Intel 80186/80188 A arquitetura bsica do 80186 (80188) praticamente igual a do 8086 (8088). A diferena que estes processadores incorporaram no mesmo dispositivo cerca de 15 a 20 dos componentes mais comuns dos sistemas baseados no 39 Apostila de Arquitetura de Computadores Prof Bruno 8086/8088, tais como controlador de interrupo e controlador de DMA (ver Captulo 6). O cdigo objeto do 80186/80188 totalmente compatvel com o do 8086/8088. Devido s inmeras similaridades com o 8086/888, estes processadores no sero aqui descritos. 4.4 O Intel 80286 As principais novidades introduzidas na arquitetura do 80286 foram a execuo de instrues em pipeline e o suporte para memria virtual. A Figura 4.4 mostra a arquitetura do 80286. A arquitetura do 80286 composta por unidades independentes que realizam funes especficas. A unidade de barramento (bus unit) controla os acessos memria e interfaces de e/s, e realiza a busca antecipada de instrues. Instrues acessadas so colocadas em uma fila na unidade de barramento. A unidade de instruo (instruction unit) decodifica as instrues, colocando as instrues decodificadas em uma fila. A instruo decodificada fornece de maneira mais detalhada todas as informaes necessrias execuo da instruo. Por exemplo, a instruo decodificada indica explicitamente o endereo de entrada da microrotina que executa a instruo. Prefetch Queue Bus Unit (BU) Bus Control Address Data Control Instruction Decoder Decoded Instruction Queue Instruction Unit (IU) Control Unit Registers ALU Execution Unit (EU) Segment Bases Segment Sizes Segment Limit Checker Address Unit (AU) Physical Address Adder Offset Adder
Figura 4.4. Arquitetura do Intel 80286. A unidade de controle, a ALU e o conjunto de registradores formam a unidade de execuo (execution unit). Instrues decodificadas so retiradas da fila onde se encontram pela unidade de controle. A ALU do 80286 de 16 bits, e o conjunto de registradores idntico ao do 8086. A unidade de endereo (address unit) responsvel por controlar a memria virtual. A memria virtual uma tcnica que torna possvel a execuo eficiente de programas com tamanho de cdigo maior que o tamanho da memria principal. 40 Apostila de Arquitetura de Computadores Prof Bruno O 80286 pode operar em dois modos, chamados modo real (real mode) e modo protegido (protected mode). No modo real, o 80286 opera com um modelo de memria semelhante ao 8086, ou seja, uma memria segmentada com tamanho mximo de 1 Mbyte. No modo protegido, o 80286 opera com memria virtual. Neste modo, a memria do 80286 logicamente dividida em 16.384 segmentos, cada um com 64 Kbytes de tamanho. Logo, pode-se executar programas com at 1 Gbyte de tamanho, embora o tamanho mximo da memria principal seja 16 Mbytes (barramento de endereo externo de 24 bits). Alm disso, este modo de operao fornece um suporte mais eficiente para sistemas operacionais multiprogramados, j que prov proteo entre segmentos pertencentes a diferentes programas (da a denominao de protegido a este modo de operao). A tcnica de memria virtual ser discutida em detalhes no prximo captulo. Um ponto importante que estes dois modos de operao so estticos. Quando o 80286 iniciado, ele comea a operar no modo real. A execuo de uma instruo especial comuta a sua operao para o modo protegido. Uma vez neste modo, o 80286 no mais pode voltar para o modo real sem uma reinicializao. Tambm importante salientar que programas para o 8086 no podem ser executados no modo protegido. Isto acontece porque, no modo protegido, os registradores de segmento assumem funes diferentes daquelas no 8086. Como ser visto, esta limitao corrigida no 80386. As diversas unidades no 80286 operam simultaneamente, realizando tarefas que fazem parte da execuo de diferentes instrues. Por exemplo, enquanto a unidade de barramento est realizando o acesso ao operando de uma instruo, a unidade de instruo est decodificando uma outra instruo e a unidade de execuo est executando uma terceira instruo. Esta execuo paralela de instrues em diferentes unidades conhecida como pipeline. Com pipelining possvel obter aumentos significativos no desempenho, e por isso esta tcnica atualmente usada em praticamente todas as arquiteturas de processador. A tcnica de pipelining discutida no Captulo 7. O conjunto de instrues do 80286 basicamente o mesmo do 8086. Foram acrescentadas duas instrues, PUSHA e POPA, que realizam o salvamento/recuperao dos registradores na pilha em memria. A instruo BOUND verifica se um ndice de vetor encontra-se dentro dos limites. A instruo ENTER cria uma rea para armazenamento de dados na pilha, sendo usada na implementao de chamada de rotinas. A instruo LEAVE usada em retornos de rotinas, e libera uma rea de dados na pilha. Existem tambm outras instrues relacionadas com o controle da memria virtual. Os modos de endereamento so os mesmos do 8086. A Tabela 4.8 resume as principais diferenas entre as arquiteturas 8086 e 80286. 8086 80286 modo real apenas modos real e protegido 1 Mbyte memria principal mxima 16 Mbytes memria principal mxima 41 Apostila de Arquitetura de Computadores Prof Bruno fraco suporte para multiprogramao melhor suporte para multiprogramao, com mecanismo de proteo entre programas execuo de instrues seqencial execuo de instrues em pipeline Tabela 4.8. Principais diferenas entre o 8086 e o 80286. 4.5 A Arquitetura do Intel 80386 Existem duas verses da arquitetura 80386 denominadas SX e DX. A nica diferena entre estas verso que, no 80386 SX, o barramento de dados externo de 16 bits, enquanto no 80386 DX o barramento de dados de 32 bits. A Figura 4.5 mostra a organizao do Intel 80386.
Bus Control Address Data Control ALU FLAGS Registers Prefetcher Code Queue Control Unit Decoder Decoded Queue Adder Descriptor Registers Adder TLB Segmentation Paging
Figura 4.5. Arquitetura do Intel 80386. A arquitetura do 80386 formada por oito unidades lgicas. Assim como nas arquiteturas 8086 e 80286, a unidade de barramento (bus interface unit) responsvel por controlar os acessos externos memria e interfaces de e/s. Esta unidade recebe pedidos de acesso memria de vrias outras unidades. A busca antecipada de instrues feita pela unidade de pr-busca (prefetch unit). Esta unidade possui uma fila de instrues (code queue) de 16 bytes, e solicita acessos memria para a unidade de barramento sempre que esta fila se encontra parcialmente vazia ou quando uma instruo de transferncia de controle executada. 42 Apostila de Arquitetura de Computadores Prof Bruno A unidade de decodificao (decode unit) responsvel por decodificar as instrues. Esta unidade retira uma instruo da fila de instrues e gera uma instruo decodificada que armazenada na fila de instrues decodificadas (decoded queue). A unidade de controle retira instrues decodificadas desta fila para serem executadas. Esta unidade controla todas as demais unidades que participam na execuo da instruo. A unidade de dados (data unit) formada por uma ALU e registradores de 32 bits. O conjunto de registradores do 80386 mostrado na Figura 4.6.
0 31 EAX EBX ECX EDX ESP EBP ESI EDI AX BX CX DX AH AL BH BL CH CL DH DL 16 15
Figura 4.6. Conjunto de registradores do 80386. O 80386 possui 4 registradores de dados de 32 bits, EAX, EBX, ECX e EDX. Podem ser feitos acessos metade inferior de cada um destes registradores, como registradores de 16 bits AX, BX, CX e DX. Por sua vez, cada um destes registradores de 16 bits podem ser considerados como contendo dois registradores de 8 bits. Com esta organizao, o 80386 mantm a compatibilidade com as arquiteturas anteriores. Alm dos registradores de dados, existem os registradores apontadores ESP e EBP e os registradores indexadores ESI e EDI. Nestes registradores so acessados apenas como registradores de 32 bits. As trs unidades restantes, protection unit, segmentation unit e paging unit gerenciam a memria virtual. O 80386 implementa um modelo de memria virtual organizada em segmentos e pginas. A unidade de proteo verifica se um endereo se encontra dentro dos limites de um segmento, enquanto as unidades de segmentao e paginao realizam a converso entre endereo virtual e endereo real. O mecanismo de memria virtual do 80386 ser examinado em detalhes no prximo captulo. Alm dos modos real e protegido, existentes no 80286, o 80386 pode tambm operar em um terceiro modo, chamado modo 8086 virtual (virtual 8086 mode). Neste modo, programas desenvolvidos para o 8086 podem ser executados em um ambiente multiprogramado protegido, ou seja, em um ambiente onde mltiplos programas podem ser executados simultaneamente, sem que um programa interfira na execuo de um outro programa. Alm disso, ao contrrio do 43 Apostila de Arquitetura de Computadores Prof Bruno que acontece entre os modos real e protegido no 80286, no 80386 possvel comutar livremente do modo protegido para o modo virtual, e vice-versa. Isto o que acontece, por exemplo, quando uma janela MS-DOS aberta a partir da interface grfica MS Windows. Normalmente, o MS Windows opera no modo protegido. Quando solicitada uma janela MS-DOS, o 80386 comutado para o modo virtual, possibilitando que programas MS-DOS, escritos para o 8086, possam ser executados. A arquitetura 80386 oferece um longo conjunto de instrues, incluindo todas as instrues das arquiteturas 8086 e 80286. Dentre as novas instrues introduzidas na arquitetura 80386, destacam-se novas instrues lgicas para deslocamento e teste de bits, para procura de caracteres em strings, e para movimentao e converso de dados. O 80386 oferece 11 modos de endereamento, incluindo todos os modos de endereamento do 8086 e 80286. O 80386 adiciona um novo componente no clculo do endereo efetivo, chamado escala (scale). A escala um fator (1, 2, 4 ou 8) que multiplica o ndice nos modos de endereamento indexados. Isto facilita o acesso a vetores com elementos de 16, 32 ou 64 bits. Por exemplo, para percorrer um vetor com elementos de 32 bits, so necessrios incrementos de 4 bytes no endereo efetivo. Usando uma escala 4, cada incremento de 1 do ndice resulta, aps a multiplicao do ndice pela escala, no incremento de 4 bytes no endereo efetivo. A Tabela 4.9 relaciona as principais diferenas entre o 80286 e o 80386. 80286 80386 modos real e protegido modos real, protegido e virtual 16 Mbytes de memria principal mxima 4 Gbytes de memria principal mxima aritmtica de 8 e 16 bits aritmtica de 8, 16 e 32 bits registradores de 16 bits registradores de 32 bits Tabela 4.9. Principais diferenas entre o 80286 e o 80386. 4.6 A Arquitetura do Intel 80486 A arquitetura do 80486 basicamente uma extenso da arquitetura do 80386. No 80486, uma memria cache de 8 Kbytes e uma unidade de ponto flutuante so acrescentados arquitetura do 80386. Em sistemas baseados no 80386, a memria cache e a unidade de ponto flutuante so externos ao processador. A Figura 4.7 mostra a arquitetura do 80486. 44 Apostila de Arquitetura de Computadores Prof Bruno Bus Control Address Data Control ALU FLAGS Registers Adder Descriptor Registers Adder TLB Segmentation Paging Prefetcher Code Queue Control Unit Decoder Decoded Queue Cache Floating-Point Unit Figura 4.7. Arquitetura do Intel 80486. A arquitetura 80486 possui trs verses de implementao, denominadas 486-SX, 486-DX e 486-DX2. A verso 486-SX no possui a unidade de ponto flutuante integrada com o processador, mas apenas a memria cache. A verso 486-DX possui unidade de ponto flutuante e memria cache integradas com o processador. Na verso 486-DX, a freqncia de clock do processador a mesma usada nos ciclos de barramento para acesso memria e interfaces de e/s. Na verso 486-DX2, a freqncia de clock interna ao processador o dobro da freqncia externa usada nos ciclos de barramento. Isto permite obter uma compatibilidade entre novas verses mais rpidas do processador com um hardware de sistema mais antigo e lento. Devido total similaridade entre as arquiteturas 80386 e 80486, a descrio da arquitetura 80486 seria uma repetio da seo anterior. No prximo captulo sero descritos a memria cache e o mecanismo de memria virtual usados no 80486. 4.7 O Intel Pentium O Pentium um dos membros mais recente da famlia 80x86. At o Pentium, a principal inovao arquitetural na famlia 80x86 era a tcnica de pipeline, introduzida com o Intel 80286. O Pentium introduz uma outra facilidade igualmente importante para o desempenho, a execuo super-escalar de instrues. Na arquitetura Pentium podemos destacar algumas verses de implementao como o Pentium Pro, o Pentium II e o Pentium III. Na verso Pentium Pro, o processador usa uma arquitetura de execuo dinmica. Neste processador, diferentes unidades de execuo podem se agrupar no mesmo pipeline; por exemplo, a ALU e a unidade de ponto flutuante podem compartilhar 45 Apostila de Arquitetura de Computadores Prof Bruno um pipeline. A verso Pentium II, por sua vez, incorpora a tecnologia Intel MMX, que uma extenso do conjunto de instrues da arquitetura Intel. Esta tecnologia utiliza uma tcnica SIMD para aumentar a velocidade processando dados em paralelo. A verso mais recente dos processadores Pentium o Pentium III. Este processador caracteriza-se por possuir 70 instrues a mais que a verso anterior e mais de 9 milhes de transistores. Devido importncia atual do conceito de paralelismo no nvel de instrues, a arquitetura do Intel Pentium descrita em outro captulo.
46 Apostila de Arquitetura de Computadores Prof Bruno 5 O SUB-SISTEMA DE MEMRIA Os captulos anteriores discutiram conceitos a nvel de arquitetura de processador. Com este conhecimento, podemos agora subir para o nvel superior, o de arquitetura de computadores. No Captulo 1, a Figura 1.1 mostra a organizao bsica de um computador, incluindo o processador, a memria principal e as interfaces de entrada/sada, interconectados por um barramento. Na realidade, a memria principal apenas um dos componentes dentro do sub-sistema de memria de um computador. Este captulo introduz os componentes normalmente encontrados no sub- sistema de memria de um microcomputador ou de uma estao de trabalho. Inicialmente, analisado em detalhe o mecanismo de acesso do processador memria principal. Em seguida, so apresentados os principais tipos e caractersticas de dispositivos de memria. Finalmente, so apresentados os conceitos de memria cache e memria virtual. Como exemplos reais, descrita a memria cache e o suporte para memria virtual no processador Intel 80486. 5.1 A Interao entre Processador e Memria Principal O componente bsico da memria principal chamado clula de bit. A clula de bit um circuito eletrnico que armazena um bit de informao. Em uma referncia memria, o processador no realiza o acesso ao contedo de apenas uma clula de bit, mas sim a informao armazenada em um grupo de clulas de bits. O menor conjunto de clulas de bits que acessado pelo processador chamado locao de memria. Na maioria dos computadores, uma locao de memria formada por 8 clulas de bits. Como 8 bits formam o chamado byte, uma locao de memria tambm conhecida informalmente como byte de memria. Em um acesso, o processador deve fornecer memria principal uma identificao da locao onde ser feito o acesso. Esta identificao simplesmente um nmero, chamado endereo de memria. Ao receber um endereo de memria, a memria principal seleciona a locao correspondente e fornece ao processador a informao ali contida, no caso de um acesso de leitura. No caso de um acesso de escrita, a memria principal armazena na locao indicada pelo endereo a informao fornecida pelo processador. A Figura 1.1 do Captulo 1 mostra o processador conectado memria principal atravs de um barramento. Na realidade, o processador e a memria principal esto interligados atravs de trs barramentos distintos, conforme mostra a Figura 5.1.
47 Apostila de Arquitetura de Computadores Prof Bruno Processador Endereo Dados Controle Sub-sistema de Memria Memria Principal
Figura 5.1. Interligao entre processador e memria principal. O barramento de endereo a via atravs da qual o processador transmite para a memria principal o endereo da locao onde ser feito o acesso. O barramento de dados a via atravs da qual o contedo da locao transferida entre o processador e a memria principal. Finalmente, o barramento de controle formado por diversos sinais atravs dos quais o processador controla o acesso memria, indicando, por exemplo, se o acesso de leitura ou de escrita A largura, em nmero de bits, dos barramentos de endereo e de dados varia entre computadores, sendo determinada basicamente pelo processador usado no sistema. A Tabela 5.1 relaciona a largura dos barramentos de endereo e de dados nos diversos modelos da linha de microcomputadores do tipo IBM PC. Sistema Processador Barramento de Endereo Barramento de Dados IBM PC XT Intel 8088 20 bits 8 bits IBM PC AT Intel 80286 24 bits 16 bits IBM PC 386 Intel 80386 DX 32 bits 32 bits IBM PC 486 Intel 80486 32 bits 32 bits Tabela 5.1. Largura dos barramentos em microcomputadores do tipo IBM PC. Um sistema com um barramento de endereo com largura de n bits pode enderear at 2 n locaes de memria distintas. No entanto, isto no significa necessariamente que o sistema possui esta capacidade de memria principal instalada. Por exemplo, um sistema baseado no processador 80386 ou 80486 poderia, a princpio, ter uma memria principal de at 2 32 = 4 Gbytes . No entanto, em geral microcomputadores possuem no mximo 16 Mbytes de memria principal. Alguns sistemas, como por exemplo estaes de trabalho e servidores, permitem 48 Apostila de Arquitetura de Computadores Prof Bruno at 2 Gbytes de memria principal. A capacidade mxima de memria principal que pode ser instalada em um sistema determinada pelo compromisso entre custo e desempenho caracterstico do sistema. Ainda neste captulo ser discutido o mecanismo de memria virtual, que permite a execuo de programas que usam uma capacidade de memria maior do que a memria principal fisicamente existente no sistema. 5.1.1 Ciclo de Barramento Como discutido acima, um acesso memria envolve a seleo de uma locao de memria, a ativao de sinais de controle e a troca de informaes entre o processador e a memria principal. A seqncia de eventos que acontecem durante um acesso do processador memria principal chamado de ciclo de barramento (bus cycle), e ser agora descrito em maiores detalhes. Para descrever um ciclo de barramento, conveniente usar uma representao grfica chamada diagrama de tempo. O diagrama de tempo indica as alteraes no estado dos barramentos durante um acesso memria. A Figura 5.3 mostra o diagrama de tempo do ciclo de barramento em um acesso de leitura na memria principal. Clock Endereo Dados Controle 1 2 3 4
Figura 5.3. Ciclo de barramento em um acesso de leitura. No diagrama acima, a representao indica que em um certo momento o barramento mudou de estado, com alguns bits mudando de valor 0 para 1 ou vice-versa. A representao indica que o sinal mudou do estado lgico 0 para o estado lgico 1, enquanto indica uma transio do sinal do estado 1 para 0. Como indica o diagrama de tempo, as mudanas nos estados dos barramentos esto sincronizados com o sinal de clock. O processador inicia o ciclo de barramento colocando o endereo da locao de memria a ser acessada no barramento de endereo (1). No incio do prximo ciclo de clock o processador ativa um sinal de controle indicando uma operao de leitura (2). O endereo e o sinal de controle chegam memria, que aps algum tempo coloca o contedo da locao de memria endereada no barramento de dados (3). No incio do quarto ciclo de clock, o processador captura a informao presente no barramento de dados e finaliza o ciclo de barramento, desativando o sinal de controle e retirando o endereo (4). 49 Apostila de Arquitetura de Computadores Prof Bruno A Figura 5.4 mostra o diagrama de tempo do ciclo de barramento em um acesso de escrita na memria. Novamente, o ciclo de barramento inicia-se com o processador colocando o endereo da locao de memria no barramento de endereo (1). Alm disso, o processador tambm coloca a informao a ser armazenada no barramento de dados (2). No prximo ciclo de clock, o processador ativa um sinal de controle indicando uma operao de escrita na memria (3). Ao receber o sinal de escrita, a memria armazena o dado na locao endereada. O processador finaliza o ciclo de barramento retirando o endereo e o dado dos respectivos barramentos, e desativando o sinal de controle (4). Clock Endereo 1 Controle 2 Dados 4 3
Figura 5.4. Ciclo de barramento em um acesso de escrita. Nos diagramas mostrados, o nmero de ciclos de clock que separam os eventos ao longo de um ciclo de barramento so hipotticos. O nmero de ciclos de clock consumidos no ciclo de barramento varia entre os processadores. No entanto, a seqncia de eventos mostrada nos diagramas de fato ocorrem para a maioria dos processadores. 5.1.2 Estados de Espera A velocidade da memria principal medida pelo tempo de acesso dos dispositivos de memria (circuitos integrados) usados em sua implementao. O tempo de acesso o intervalo de tempo entre o instante em que a memria recebe o endereo at o instante em que a memria fornece a informao endereada. Na Figura 5.3 representado o caso onde o tempo de acesso da memria equivalente a cerca de 3,5 ciclos de clock. Se o ciclo de clock , digamos, 20 ns (1 ns = 10 -9 s), ento o tempo de acesso da memria cerca de 70 ns. Atualmente, os dispositivos de memria instalados na memria principal de sistemas tais como microcomputadores e estaes de trabalho apresentam um tempo de acesso entre 60 ns e 80 ns. Um ponto importante a observar quanto ao ciclo de barramento que o seu tamanho, em termos do nmero de ciclos de clock, a princpio determinado pelo processador. Caso no haja uma solicitao externa quanto ao tamanho apropriado do ciclo de barramento, o processador sempre executar um ciclo de barramento padro com um certo nmero de ciclos. Nos exemplos hipotticos das Figuras 5.3 e 5.4, o ciclo de barramento padro possui um tamanho de 4 ciclos de clock. 50 Apostila de Arquitetura de Computadores Prof Bruno A questo que se coloca : o que acontece se o processador possui um ciclo de barramento padro cujo tamanho menor que o tempo de acesso da memria principal? O diagrama de tempo na Figura 5.5(a) representa esta situao. Clock Endereo Controle Dados invlido
(a) Clock Endereo Controle Dados invlido estados de espera vlido (b) Figura 5.5. Os estados de espera no ciclo de barramento. Na Figura 5.5(a) est representado o caso onde o ciclo de barramento padro continua com 4 ciclos de clock, mas agora o processador se encontra em um sistema cuja memria principal possui um tempo de acesso de 6 ciclos de clock. Ao final do ciclo de barramento, o processador captura uma informao no barramento de dados que naquele momento invlida, j que a memria forneceria a informao endereada apenas dois ciclos de clock depois. Nesta situao, o sistema opera incorretamente. Em geral, os processadores oferecem um mecanismo que permite compatibilizar o tamanho do ciclo de barramento ao tempo de acesso da memria. O processador possui um sinal de entrada que, ao ser ativado, faz com que o tamanho do ciclo de barramento seja estendido pela introduo de ciclos de clock extras. Estes ciclos de clock adicionais so denominados estados de espera. A Figura 5.5(b) mostra um ciclo de barramento com estados de espera. Quando a memria detecta o incio de um ciclo de barramento, a memria principal envia um sinal solicitando ao processador que o ciclo de barramento seja estendido. O processador no finaliza o ciclo de barramento enquanto est solicitao for mantida. Ao colocar a informao endereada no barramento de dados, a memria 51 Apostila de Arquitetura de Computadores Prof Bruno principal retira a solicitao de espera. O processador captura a informao, agora vlida, presente no barramento de dados, e finaliza o ciclo de barramento. No exemplo mostrado, foram introduzidos trs ciclos de espera. Microcomputadores do tipo IBM PC oferecem este recurso dos estados de espera. O nmero de estados de espera um dos parmetros de configurao do sistema, e pode ser escolhido atravs da interface de configurao do sistema. Note que o uso deste recurso afeta o desempenho do sistema, j que o tempo consumido nos acessos memria torna-se maior. No entanto, as memrias cache, que sero discutidas mais frente, atenuam em grande parte o efeito do aumento do ciclo de barramento sobre o desempenho. 5.2 Tipos de Dispositivos de Memria No sub-sistema de memria de um computador possvel encontrar trs diferentes tipos de dispositivos de memria. O primeiro tipo a memria programvel somente de leitura, mais conhecida como PROM (Programmable Read Only Memory). Este tipo de dispositivo permite apenas acessos de leitura. As informaes ali armazenadas so atribudas pelo fabricante do sistema, e no podem ser modificadas aps o seu armazenamento. O segundo tipo a memria programvel e apagvel somente de leitura, ou simplesmente EPROM (Erasable Programmable Read Only Memory). Assim como no caso da PROM, o processador realiza apenas acessos de leitura a uma EPROM. No entanto, ao contrrio da PROM, o contedo de uma memria EPROM pode ser apagado, e a memria pode ser novamente usada para armazenar um novo conjunto de informaes. Memrias PROM ou EPROM so usadas para armazenar o firmware do computador. Em geral, o firmware formado por sub-rotinas usadas pelo sistema operacional, e que interagem diretamente com o hardware do computador. O BIOS (Basic Input/Output System) em sistemas microcomputadores do tipo IBM PC um exemplo de firmware. As rotinas que formam o BIOS so armazenadas em memrias do tipo EPROM. O terceiro tipo de dispositivo de memria encontrado em um computador a memria de leitura/escrita, ou RAM (Random Access Memory). Como a prpria denominao indica, o processador pode efetuar acessos de leitura e escrita a um dispositivo RAM. Memrias deste tipo so usadas para armazenar as instrues e dados de um programa em execuo. Existem dois tipos de memria RAM: as memrias RAM estticas, ou SRAM (Static RAM) e as memrias RAM dinmicas, ou DRAM (Dynamic RAM). Estes dois tipos de memrias RAM diferem quanto capacidade de armazenamento e ao tempo de acesso. Para memrias fabricadas com a mesma tecnologia, a capacidade de um dispositivo DRAM at 16 vezes maior que a de um dispositivo SRAM. Em geral, a capacidade mxima de um dispositivo SRAM de 256 Kbits, enquanto dispositivos de memria DRAM atingem uma capacidade de armazenamento de 4 Mbits. Esta diferena na capacidade de armazenamento deve-se ao modo como uma clula de 52 Apostila de Arquitetura de Computadores Prof Bruno bit implementada. Nas memrias DRAM, a clula de bit implementada por um circuito eletrnico que ocupa uma rea de integrao menor que a ocupada pelo circuito usado nas memrias SRAM. Como a rea por clula bit menor, para a mesma rea total de integrao o nmero total de clulas de bit em uma DRAM maior. No entanto, as memrias SRAM apresentam uma vantagem sobre as memrias DRAM no que se refere ao tempo de acesso. Para a mesma tecnologia, o tempo de acesso de uma SRAM at 4 vezes menor que o tempo de acesso de uma DRAM. Atualmente, existem memrias SRAM com tempo de acesso de 15 ns, enquanto as memrias dinmicas mais rpidas apresentam um tempo de acesso de 60 ns. Melhorias no tempo de acesso dos dispositivos DRAM no acontecem na mesma taxa que o aumento observado na sua capacidade de armazenamento. Enquanto a tendncia de aumento na capacidade de armazenamento dos dispositivos DRAM de 60% ao ano, quadruplicando a cada trs anos, a tendncia observada indica uma diminuio do tempo de acesso de apenas 30% a cada dez anos. Os dispositivos DRAM so utilizados em sistemas de baixo e mdio custo tais como microcomputadores e estaes de trabalho. Com este tipo de dispositivo possvel dotar um sistema com uma capacidade de memria principal elevada, sem aumentar significativamente o seu custo. No entanto, o uso de dispositivos DRAM favorece a capacidade de armazenamento da memria principal em detrimento do seu tempo de acesso, comprometendo o desempenho do sistema. Isto fica claro ao comparar-se a freqncia de clock de um processador atual com o tempo de acesso de uma DRAM. Um processador com freqncia de clock de 50 MHz executa uma operao aritmtica ou lgica sobre operandos em registradores em 20 ns. Se um dos operandos encontra-se na memria, o tempo de execuo desta instruo pelo menos trs vezes maior, tempo em vista o tempo de acesso da DRAM de 60 ns. Novas classes de aplicaes tais como processamento grfico e multimdia esto fazendo com que o desempenho seja um fator cada vez mais importante na faixa de microcomputadores e estaes de trabalho. A soluo para obter o compromisso desejado entre capacidade de armazenamento, desempenho e custo encontra-se no uso apropriado de tecnologias de memria com diferentes relaes entre estes trs fatores. Esta a idia por detrs das memrias cache, cujo conceito e operao sero examinados a seguir. 5.3 Memrias Cache A memria cache uma pequena memria inserida entre o processador e a memria principal, conforme mostra a Figura 5.6. 53 Apostila de Arquitetura de Computadores Prof Bruno Processador Memria Cache Memria Principal Endereo Dados Controle sub-sistema de memria
Figura 5.6. Localizao da memria cache. A memria cache implementada com o mesmo tipo de circuito eletrnico usado nas clulas de bit de uma memria RAM esttica. Por este motivo, a capacidade de armazenamento de uma memria cache situa-se entre 8 Kbytes e 64 Kbytes . No entanto, a memria cache apresenta um baixo tempo de acesso, possibilitando que o processador acesse dados ali armazenados em apenas um nico ciclo de clock. Nesta nova organizao, o processador direciona os acessos inicialmente para a memria cache. Se o dado referenciado encontra-se na cache, o acesso completado em apenas um ciclo de clock. Diz-se que ocorre um cache hit quando o dado referenciado pelo processador encontra-se na cache. Se o dado no se encontra na cache, diz-se que ocorreu um cache miss. Quando acontece um cache miss um bloco contendo o dado referenciado, e os dados armazenados em sua vizinhana, copiado da memria principal para a memria cache. Aps a transferncia deste bloco de dados para a memria cache, o processador completa o acesso. Quando ocorre um cache miss, o acesso consome vrios ciclos de clock para ser completado. Na prtica, observa-se que entre 90% e 98% dos acessos resultam em um cache hit. Isto acontece devido a uma propriedade exibida por vrios tipos de programas, chamada propriedade da localidade de referncia. Segundo esta propriedade, os acessos memria que acontecem ao longo da execuo de um programa no so uniformemente distribudos atravs da memria, mas tendem a se concentrar em pequenas regies da memria durante um certo intervalo de tempo. A Figura 5.7 representa a propriedade da localidade atravs de um grfico.
54 Apostila de Arquitetura de Computadores Prof Bruno tempo endereo de memria . . . . . . . . . . . . . . . . .
Figura 5.7. A localidade de referncia. Cada ponto no grfico acima representa a ocorrncia de um acesso memria. No eixo horizontal est representado o instante em que ocorre o acesso, enquanto o eixo vertical corresponde ao endereo da locao de memria onde feito o acesso. A localidade de referncia manifesta-se no fato que, durante alguns intervalos de tempo, so feitos acessos a locaes de memria em endereos prximos. Estas regies onde os acessos se concentram durante um certo intervalo de tempo esto delimitadas na Figura 5.7. O princpio da localidade sugere que quando feito um acesso a uma locao de memria , existe uma grande probabilidade que acessos a locaes em endereos vizinhos tambm sejam feitos no futuro prximo. Aplique agora esta propriedade ao funcionamento da memria cache. Como mencionado anteriormente, quando ocorre um cache miss, o dado referenciado copiado da memria principal para a memria cache, juntamente com os dados armazenados nas locaes vizinhas. Segundo a propriedade da localidade, existe uma grande chance de que os acessos aos dados vizinhos tambm sejam feitos em breve. Se estes outros acessos de fato acontecem, ocorrer um cache hit em todos os acessos, que sero completados em um nico ciclo de clock. Na realidade, a memria cache armazena os dados que se encontram em regies da memria principal onde se verifica uma concentrao de acessos. Observe que a memria cache tem a capacidade de se adaptar a mudanas nas regies de concentrao de acesso, que ocorrem ao longo da execuo de um programa. Uma nova regio com concentrao de acessos torna-se ativa quando feito um acesso a um dado que se encontra distante dos dados onde foram feitos acessos recentemente. Como provavelmente este dado no se encontra na cache, ocorrer um cache miss. Devido a este cache miss, sero copiados para a memria cache o dado referenciado e os dados na vizinhana, que pertencem justamente nova regio onde se concentraro os prximos acessos, os quais sero novamente satisfeitos pela cache. Com a incluso de uma memria cache, apenas uma pequena parcela dos acessos realizados sofrem com o alto tempo de acesso da memria principal. Assim, as memrias cache so extremamente importantes no sentido de obter-se 55 Apostila de Arquitetura de Computadores Prof Bruno um melhor desempenho. Atualmente, a maioria das arquiteturas de computador incluem memrias cache em seu sub-sistema de memria. 5.3.1 A Memria Cache no Intel 80486 Alguns processadores, como por exemplo o Intel 80486, j incluem uma memria cache em sua arquitetura. A memria cache no 80486 ser aqui usada para mostrar em maiores detalhes a organizao e operao de uma memria cache tpica. A Figura 5.8 mostra a organizao da memria cache no Intel 80486. No 80486, a memria cache tem uma capacidade de 8 Kbytes, e armazena instrues e dados. Outros processadores possuem memrias cache separadas, uma para instrues e outra para dados. linha 0 (16 bytes) conjunto 0 Diretrio RAM tag controle . . . . . . linha 1 linha 2 linha 3 conjunto 127
Figura 5.8. Organizao da memria cache no Intel 80486. A memria cache formada por uma memria RAM e pelo seu diretrio. A memria RAM organizada em linhas, sendo que em cada linha armazenado um bloco de dados proveniente da memria principal. Cada linha na memria cache do 80486 armazena um bloco de 16 bytes . Para cada linha, existe uma entrada correspondente no diretrio. Cada entrada de diretrio contm um tag e bits de controle, cujas funes sero descritas logo frente. Um grupo de 4 linhas com suas respectivas entradas no diretrio formam um conjunto. A memria cache no 80486 possui 128 conjuntos. Esta organizao em linhas formando um conjunto caracterstica das chamadas memrias cache associativas por conjunto (set associative cache memory). Uma memria cache associativa por conjunto com n linhas em cada conjunto chamada cache n-associativa por conjunto (n-way set associative cache). Existem outros tipos de memrias cache com organizao diferente da mostrada na Figura 5.8, mas que no sero discutidas neste texto. No entanto, memria cache associativas por conjunto so as encontradas na maioria dos processadores. importante ressaltar que o tamanho de linha, o nmero de linhas por conjunto e o nmero de conjuntos acima mencionados especfico da memria cache do Intel 80486. Memrias cache associativas por conjunto em outros processadores podem apresentar configuraes diferentes. 56 Apostila de Arquitetura de Computadores Prof Bruno Vamos agora examinar como feito um acesso memria cache no Intel 80486, e, em geral, a uma memria cache associativa por conjunto. Ao receber o endereo de uma locao de memria, a memria cache interpreta este endereo como mostrado na Figura 5.9(a). 0 3 4 10 11 conjunto byte tag 31 seleciona byte na linha seleciona conjunto seleciona linha no conjunto endereo = 00000104h 4 10 00000 0 15 conjunto 16 00000 4 (a) (b)
Figura 5.9. Modo de acesso memria cache no Intel 80486. O endereo logicamente dividido em trs campos: o campo byte, formado pelos quatro bits menos significativos; o campo conjunto, formado pelos 7 bits seguintes; e o campo tag, composto pelos 21 bits mais significativos do endereo. A memria cache usa os bits no campo byte para selecionar um byte especfico dentro de uma linha. O campo conjunto usado para selecionar um dos conjuntos, enquanto o campo tag usado para verificar se o dado referenciado se encontra em alguma das linhas do conjunto selecionado. Note que o tamanho de cada campo est relacionado com a configurao da memria cache, e assim pode variar entre as memrias cache de diferentes processadores. O nmero de bits por campo mostrado na Figura 5.9(a) particular para o caso do 80486. A Figura 5.9(b) mostra como o acesso de fato acontece. Como exemplo, suponha um acesso ao byte armazenado na locao de memria de endereo 10000104h (o sufixo h indica base hexadecimal). A memria cache interpreta este endereo da seguinte forma: byte = 4h, conjunto = 10h e tag = 10000h. A memria cache seleciona ento o conjunto 16 (10h = 16), e em seguida compara o tag no endereo recebido (10000h) com os tags armazenados nas entradas de diretrio do 57 Apostila de Arquitetura de Computadores Prof Bruno conjunto selecionado. Se o tag no endereo coincide com algum dos tags no diretrio (como o caso na figura), isto significa que o bloco com o byte referenciado encontra-se na linha associada entrada do diretrio que contm o tag coincidente. Esta linha ento selecionada e o byte 4 dentro desta linha finalmente acessado. A no coincidncia do tag do endereo com os tags armazenados no conjunto indica que o byte referenciado no se encontra na cache (ou seja, ocorreu um cache miss). Neste caso, a lgica de controle da memria cache se encarrega de copiar o bloco apropriado a partir da memria principal. Este bloco ser armazenado em uma das linhas do conjunto indicado pelo endereo (no exemplo, o conjunto 16). Uma vez que o bloco tenha sido carregado na memria cache, o acesso prossegue como descrito acima. Quando ocorre um cache miss, pode acontecer que todas as linhas do conjunto selecionado j estejam ocupadas na realidade, este o caso que normalmente acontece. Nesta situao, a memria cache tem que substituir um dos blocos residentes no conjunto para dar lugar ao novo bloco. Se o bloco selecionado para substituio no foi modificado por um acesso de escrita, este bloco simplesmente descartado. Se o bloco selecionado foi modificado por um acesso de escrita anterior, este bloco copiado de volta para a memria principal e ento descartado. Um bit de controle na entrada de diretrio indica se o bloco armazenado na linha correspondente foi ou no modificado desde o seu carregamento na memria cache. A questo central na substituio acima descrita a escolha do bloco a ser descartado. A maneira mais simples seria escolher aleatoriamente qualquer um dos blocos do conjunto selecionado. A escolha aleatria atrativa devido sua simplicidade de implementao. No entanto, esta poltica aumenta a chance de ser escolhido um bloco que ser referenciado em breve. Se isto de fato acontece, ocorrer um cache miss porque o bloco no mais se encontrar na memria cache. Em um caso extremo, pode acontecer uma triste coincidncia onde sempre escolhido um bloco que ser referenciado logo em seguida, levando a um crculo vicioso: um novo bloco expulsa um outro bloco que ser referenciado em breve, o que vai causar um futuro cache miss; devido a este cache miss, carregado um bloco que expulsa outro bloco que seria referenciado logo em seguida, causando um outro cache miss, e assim por diante. Em outras palavras, com a escolha aleatria existe o risco de um aumento excessivo no nmero de cache misses. Em geral, adotada uma poltica de escolha mais segura, denominada LRU (Least Recently Used). A poltica LRU diz que o bloco a ser substitudo aquele que no referenciado h mais tempo. Este critrio de escolha se baseia no seguinte raciocnio. Pelo princpio da localidade, quando um bloco referenciado, existe uma grande chance de que ele seja novamente referenciado em breve. Se um bloco no referenciado j h algum tempo, isto pode indicar que as referncias concentradas naquele bloco j aconteceram e que o bloco no mais ser referenciado, pelo menos no futuro prximo. Assim, este bloco pode ser substitudo sem o risco de gerar cache misses imediatos. Bits de controle no diretrio indicam 58 Apostila de Arquitetura de Computadores Prof Bruno se um bloco foi ou no referenciado, sendo consultados quando um bloco deve ser substitudo. Na prtica, observa-se que a poltica LRU de fato no introduz um aumento significativo no nmero de cache misses. A memria cache no 80486 adota a poltica LRU. 5.3.2 Memrias Cache Primria e Secundria Normalmente, a freqncia de cache hit aumenta medida que o tamanho da memria cache aumenta. No entanto, observa-se que a partir de um certo ponto o nmero de cache hits no aumenta significativamente com o aumento da capacidade da memria cache. A partir deste ponto no compensa aumentar o tamanho da memria cache, pois isto acarretaria um aumento no custo do processador que no traria um benefcio proporcional. Para minimizar o efeito dos cache misses residuais, que podem chegar a at 10%, alguns sistemas incorporam duas memrias cache, uma denominada primria e a outra secundria, em uma estrutura conhecida como memria cache em dois nveis (two-level cache). A memria cache primria integrada com o processador em um mesmo dispositivo, possui um tamanho pequeno, no mximo 64 Kbytes atualmente, e apresenta um tempo de acesso que permite acessos em um nico ciclo de clock. Por sua vez, a cache secundria externa ao processador, localizando-se na placa-me do sistema, possui um tamanho bem maior, atingindo at 512 Kbytes , e apresenta um tempo de acesso maior que a memria cache primria. Um acesso cache secundria normalmente consome dois ou trs ciclos de clock. Em um sistema com esta organizao, a memria cache primria captura a maioria dos acessos realizados pelo processador. Os acessos que resultam em miss so em sua maioria capturados pela memria cache secundria. Apesar de ser um pouco mais lenta que a memria cache primria, a memria cache secundria ainda significativamente mais rpida que a memria principal. Assim, os misses da cache primria apresentam uma penalidade menor quando capturados pela cache secundria do que se fossem direcionados diretamente para a memria principal. Alm disso, como a tecnologia usada na implementao da cache secundria mais barata, o seu tamanho pode aumentar sem as mesmas limitaes de custo da cache primria. Atualmente, memrias cache secundrias so usadas em diversas classes de sistemas, inclusive microcomputadores pessoais.
5.4 Memria Virtual Como mencionado anteriormente, a memria principal disponvel em um microcomputador ou em uma estao de trabalho em geral bem menor do que o tamanho mximo de memria permitido pelo processador. O esquema de memria virtual foi originalmente criado para permitir a execuo de programas cujas 59 Apostila de Arquitetura de Computadores Prof Bruno exigncias quanto ao tamanho da memria sejam maiores do que a capacidade de memria instalada no sistema. 5.4.1 O Conceito de Memria Virtual Em um sistema sem memria virtual, o endereo gerado pelo programa em execuo o prprio endereo usado para acessar a memria principal. O mesmo no acontece em um sistema com memria virtual: o endereo gerado pelo programa, ou endereo virtual, diferente do endereo real usado para acessar a memria principal. Os possveis endereos virtuais que podem ser gerados pelo programa formam o espao de endereamento virtual, enquanto a faixa de endereos na memria principal constitue o espao de endereamento real. Sob o ponto de vista de um programa, a memria disponvel aquela representada pelo espao de endereamento virtual. O espao de endereamento virtual visto e utilizado pelo programa pode ser bem maior do que o espao de endereamento real, efetivamente retirando do programa as limitaes impostas pela capacidade da memria fsica de fato existente no sistema. importante perceber que o espao de endereamento virtual, como o prprio nome indica, uma abstrao. Embora sob o ponto de vista do programa as instrues e dados estejam armazenados dentro do espao de endereamento virtual, na realidade eles continuam armazenados na memria principal, representada pelo espao de endereamento real. Esta distino entre endereos e espaos de endereamento exige um mecanismo que faa a correspondncia entre o endereo virtual gerado pelo programa e o endereo real que ser usado para acessar a memria principal. Alm disso, ela abre uma possibilidade que no ocorre em um sistema sem memria virtual: como o espao de endereamento virtual maior que o espao de endereamento real, as instrues e dados que para o programa se encontram no espao virtual podem, na realidade, no se encontrar presentes na memria principal no momento em que so referenciados. Assim, alm do mapeamento acima mencionado, necessrio um mecanismo para o carregamento automtico na memria principal das instrues e dados que so referenciados pelo programa dentro da sua memria virtual e que no se encontram presentes na memria fsica. Estes dois aspectos so discutidos em seguida. 5.4.2 O Mecanismo de Memria Virtual O mapeamento entre endereos virtuais e reais feito por um componente do sub-sistema de memria chamado tradutor dinmico de endereos, ou DAT (Dynamic Address Translator). A Figura 5.9 mostra como o DAT se insere dentro do sub-sistema de memria. 60 Apostila de Arquitetura de Computadores Prof Bruno Processador Memria Principal sub-sistema de memria DAT Endereo Virtual Endereo Real Endereo Dados Controle
Figura 5.9. O tradutor dinmico de endereos em um sistema com memria virtual. O processador fornece ao DAT o endereo virtual gerado pelo programa em execuo. O endereo virtual mapeado em um endereo real pelo DAT e enviado para a memria principal atravs do barramento de endereo. Note que o mapeamento feito em cada acesso memria, no incio do acesso. Para realizar o mapeamento, o DAT utiliza uma tabela de mapeamento, localizada na memria principal. A tabela de mapeamento permanece na memria principal durante a execuo do programa. Ao receber um endereo virtual, o DAT usa este endereo para indexar a tabela de mapeamento. A entrada indexada contm o endereo real correspondente ao endereo virtual. Na realidade, o mapeamento no feito a nvel de cada locao de memria, pois isto exigiria uma tabela de mapeamento com um nmero de entradas igual ao tamanho do espao de endereamento virtual. Para manter um tamanho de tabela aceitvel, o mapeamento feito a nvel de blocos, como mostra a Figura 5.10(a). 61 Apostila de Arquitetura de Computadores Prof Bruno ~ ~ Bloco 0 Bloco 1 Bloco 2 Bloco n Espao Virtual ~ ~ Bloco 0 Bloco 1 Bloco 2 Espao Real (a) base b' base + + endereo real b d endereo virtual tabela de mapeamento b (b) Figura 5.10. Mecanismo bsico de mapeamento. O espao de endereamento virtual logicamente dividido em blocos, que so mapeados para o espao de endereamento real pelo DAT. Cada entrada na tabela de mapeamento contm o endereo-base de um bloco, ou seja, o endereo real a partir do qual o bloco est armazenado na memria principal. Em uma memria virtual segmentada, os blocos so chamados segmentos, e podem ter tamanho varivel. Em uma memria virtual paginada, os blocos so chamados pginas e possuem tamanho fixo. Alguns processadores, como o Intel 80486, suportam estes dois modelos de memria virtual. A Figura 5.10(b) mostra como feito o mapeamento dos blocos. O DAT considera que o endereo virtual recebido do processador constitudo por dois campos. O campo b, formado pelos bits mais significativos do endereo virtual, indica o nmero do bloco onde se encontra a locao de memria referenciada. O campo d, formado pelos bits menos significativos, indica o deslocamento da locao de memria (isto , a sua posio) em relao ao incio do bloco. O DAT usa o valor do campo b para realizar o acesso a uma entrada da tabela de mapeamento. Para tanto, o DAT soma o valor do campo b ao endereo- base da tabela de mapeamento. O endereo-base da tabela mantido internamente no prprio DAT, em um registrador chamado TBR (Table Base Register). A soma resultante fornece o endereo de uma entrada da tabela e, com este endereo, o DAT acessa a tabela de mapeamento e obtm o endereo-base do bloco (indicado por b', na figura acima). Para obter finalmente o endereo real da locao de memria referenciada, o DAT soma o valor do campo d, que indica a posio da locao dentro do bloco, ao endereo-base do bloco. Note que no mecanismo de mapeamento mostrado na Figura 5.10, para cada referncia memria realizada pelo programa necessrio um acesso adicional para consultar a tabela de mapeamento. Ou seja, neste esquema o nmero de acessos memria principal durante a execuo de um programa seria 62 Apostila de Arquitetura de Computadores Prof Bruno duplicado, comprometendo seriamente o desempenho. Para solucionar este problema, o DAT possui internamente uma pequena memria, denominada TLB (Translation Lookaside Buffer). O TLB age como uma memria cache, armazenando os pares (b, b') que foram usados nos acessos mais recentes. Uma operao de mapeamento com a TLB ocorre ento da seguinte forma. O DAT usa o nmero do bloco no campo b para enderear a TLB. Se acontece um TLB hit, o DAT obtm o endereo-base do bloco (b') a partir da TLB. Neste caso, o mapeamento no acrescenta nenhum retardo significativo ao acesso. Se acontece um TLB miss, o DAT consulta a tabela de mapeamento na memria para realizar o mapeamento. Alm disso, o DAT armazena no TLB o par (b, b') usado neste mapeamento. Na prtica, a maioria dos mapeamentos so satisfeitos pelo TLB. Isto acontece devido ao princpio da localidade, discutido anteriormente. Quando uma locao dentro de um bloco referenciado, existe uma grande chance de que as locaes vizinhas tambm sejam referenciados em breve. Se estas referncias de fato ocorrerem, a informao de mapeamento usada nestas referncias j estar na TLB, e cada mapeamento poder ser completado rapidamente. 5.4.3 A Memria Secundria Como mencionado anteriormente, devido diferena de tamanho entre os espaos de endereamento virtual e real, pode acontecer que um bloco referenciado pelo programa no esteja presente na memria principal no momento em que a referncia acontece. Os blocos de instrues e dados de um programa em execuo ficam armazenados na chamada memria secundria, que na realidade uma unidade de disco do sistema. A ausncia de um bloco referenciado pelo programa detectada pelo DAT no momento do mapeamento, e o bloco ento carregado da memria secundria para a memria principal. A Figura 5.11 mostra em detalhes como isto acontece. 63 Apostila de Arquitetura de Computadores Prof Bruno 2. tabela de mapeamento e TLB no mapeiam o bloco b: o bloco referenciado no se encontra na memria principal b n 1. programa referencia locao n no bloco de nmero b b memria secundria 3. o bloco de nmero b transferido da memria secundria para a memria principal controlado pelo sistema operacional memria principal 4. tabela de mapeamento e TLB so atualizadas b' TLB b b' b' b tabela de mapeamento TLB xx xx xxxx b tabela de mapeamento 5. acesso locao n memria fsica n b' Figura 5.11. Carregamento de blocos na memria principal. Neste exemplo, o programa referencia a locao n no bloco b. Ao receber o endereo virtual, o DAT tenta fazer o mapeamento atravs da TLB. Como a informao de mapeamento no se encontra na TLB, o DAT procura fazer o mapeamento atravs da tabela de mapeamento. Um bit de controle na entrada da tabela indica ao DAT que no existe um mapeamento vlido para o bloco, significando que o bloco no se encontra na memria principal. A ausncia de um bloco da memria tambm denominada falha de pgina (no caso de memria virtual paginada) ou falha de segmento (para memria virtual segmentada). Ao detectar uma falha, o DAT gera uma interrupo (interrupes sero vistas no prximo captulo), transferindo o controle do processador para o sistema operacional. O sistema operacional obtm do DAT o nmero do bloco que foi referenciado. O sistema operacional localiza este bloco na memria secundria, aloca um espao na memria principal e transfere o bloco da memria secundria para a memria principal. Em seguida, o sistema operacional atualiza a tabela de mapeamento e o TLB e devolve o controle para o programa que estava em execuo. O controle devolvido exatamente para o ponto onde se encontra o acesso que provocou o carregamento do bloco. O acesso ento re-executado pelo programa, sendo agora completado com sucesso porque o bloco referenciado j se encontra na memria principal. Com a memria virtual, no necessrio que todas as instrues e dados de um programa permaneam na memria principal durante a execuo do programa. Blocos do programa so transferidos da memria secundria para a memria principal medida que so referenciados. importante observar que esta 64 Apostila de Arquitetura de Computadores Prof Bruno transferncia totalmente transparente para o programa e, mais ainda, para o programador que desenvolveu o programa. O mecanismo de memria virtual em parte controlado por hardware e em parte por software. A consulta ao TLB e tabela de mapeamento so realizadas pelo hardware, representado pelo DAT. O software, representado pelo sistema operacional, realiza transferncias de blocos entre a memria secundria e a memria principal e as atualizaes necessrias das estruturas de mapeamento. Alm disso, o sistema operacional controla a ocupao da memria principal, localizando reas livres onde um novo bloco pode ser armazenado, ou ainda determinando blocos que podem ser retirados da memria principal para dar lugar a novos blocos. A participao do sistema operacional dentro do mecanismo de memria virtual ser brilhantemente discutida no curso subseqente de sistemas operacionais. 5.4.4 Memria Virtual no Intel 80486 Alguns processadores oferecem suporte para memria virtual como parte integrante de sua arquitetura. Estes processadores possuem uma unidade, em geral denominada Memory Management Unit (MMU), que inclui todo o hardware de mapeamento discutido acima. O Intel 80486 um exemplo de processador com suporte para memria virtual. O 80486 pode operar em dois modos. No modo real, o mecanismo de memria virtual desativado, e o modelo de memria idntico ao do 8086: os programas visualizam uma memria segmentada, com um tamanho mximo de 1 Mbyte. No modo protegido, o mecanismo de memria virtual ativado. Com a memria virtual, o tamanho do espao de endereamento virtual 64 Tbytes (1 Tbyte = 2 40 bytes ), enquanto o tamanho do espao de endereamento real de 4 Gbytes . O 80486 suporta os modelos de memria virtual segmentada e paginada. O espao de endereamento virtual organizado em segmentos com tamanho entre 1 byte e 4 Gbytes . Por sua vez, cada segmento pode ser sub-dividido em pginas com 4 Kbytes de tamanho. A paginao opcional, e pode ser desativada atravs do software. A Figura 5.12 mostra o fluxo de endereos atravs destes dois nveis de memria virtual. segmentao endereo real endereo virtual (a) (b) segmentao endereo linear paginao endereo real endereo virtual DAT DAT DAT
Figura 5.12. Nveis de segmentao e paginao na memria virtual do 80486. 65 Apostila de Arquitetura de Computadores Prof Bruno A Figura 5.12(a) corresponde ao caso de memria virtual apenas segmentada. O DAT de segmentao recebe o endereo virtual e gera diretamente o endereo real. Como mostra a Figura 5.12(b), quando a paginao est ativada, o DAT de segmentao gera um endereo, chamado endereo linear, que convertido pelo DAT de paginao no endereo real. Os nveis de segmentao e de paginao so descritos a seguir. Vamos examinar inicialmente o nvel de segmentao. Como mostra a Figura 5.13, o DAT de segmentao considera que os endereos virtuais so formados por um seletor de segmento (segment selector) de 14 bits e por um deslocamento (offset) de 32 bits. CS DS ES FS GS SS seletor segmento deslocamento 0 31 32 45 Registradores de Segmento endereo de programa endereo virtual
Figura 5.13. Composio do endereo virtual no 80486. O seletor de segmento dado pelos 14 bits mais significativos de um dos registradores de segmento. O seletor de segmento corresponde ao nmero de bloco na descrio apresentada acima. O deslocamento o prprio endereo gerado pelo programa, e indica a posio do byte a ser acessado em relao ao incio do segmento. Os 13 bits mais significativos do seletor de segmento so usados para indexar uma tabela chamada tabela de descritores (descriptor table). A tabela de descritores desempenha o papel da tabela de mapeamento descrita anteriormente. Cada entrada da tabela contm um descritor de segmento que, dentre outras informaes, indica o endereo-base do segmento na memria principal. A Figura 5.14 mostra como feito o mapeamento dos segmentos. 66 Apostila de Arquitetura de Computadores Prof Bruno + endereo real seletor deslocamento endereo virtual tabela de descritores DTR descritor base
Figura 5.14. Mapeamento no nvel de segmentao do 80486. O endereo-base da tabela de descritores armazenada no registrador DTR (Descriptor Table Register). O seletor de segmento concatenado ao endereo em DTR, resultando no endereo de um descritor de segmento. O deslocamento ento somado ao endereo-base do segmento indicado pelo descritor de segmento, resultando no endereo real do byte referenciado. Na realidade, o nvel de segmentao opera com dois tipos de tabelas de descritores. Uma das tabelas denominada, Global Descriptor Table, ou GDT. A GDT pode ser acessada por qualquer programa, permitido o compartilhamento de segmentos entre programas. A segunda tabela chamada Local Descriptor Table, ou LDT. A LDT contm descritores de segmento privativos de um programa, podendo ser acessada apenas por aquele programa. Em um sistema multiprogramado, onde vrios programas podem ser executados simultaneamente, cada programa possui sua prpria LDT. O sistema operacional se encarrega de fazer a associao entre uma LDT e um programa. O endereo-base da GDT armazenada no registrador GDTR (Global Descriptor Table Register), e o endereo- base da LDT do programa em execuo armazenada no registrador LDTR (Local Descriptor Table Register). O bit menos significativo do seletor de segmento indica se o mapeamento deve ser feito usando a GDT ou a LDT. Na descrio do mecanismo de memria virtual apresentada acima, o TLB foi introduzido para reduzir o tempo de mapeamento. No 80486, os registradores de descritores (descriptor registers) desempenham uma funo equivalente ao TLB. A organizao dos registradores de descritores mostrada na Figura 5.15.
67 Apostila de Arquitetura de Computadores Prof Bruno CS SS DS ES FS GS Segment Registers Descriptor Registers
Figura 5.15. Registradores de descritores no DAT de segmentao do 80486. Como mostra a figura, existe um registrador de descritor para cada um dos seis registradores de segmento. Quando um registrador de segmento usado para indexar a tabela de descritores, o descritor selecionado copiado para o registrador de descritor correspondente. Esta cpia do descritor usada em futuros mapeamentos para o mesmo segmento, evitando assim o acesso tabela de descritores. O registrador de descritor automaticamente atualizado quando um novo seletor de segmento armazenado no registrador de segmento correspondente. Podemos agora examinar o nvel de paginao no 80486. Neste nvel, o mapeamento feito em dois nveis. No primeiro nvel existe uma tabela de diretrio (directory table), que indica os endereos-base das tabelas no segundo nvel. Cada tabela no segundo nvel, chamada tabela de pgina (page table), contm os endereos-base das pginas na memria principal. Este esquema mostrado na Figura 5.16. O endereo linear recebido do DAT de segmentao logicamente dividido em trs campos. O campo diretrio, com 10 bits, usado para acessar uma entrada na tabela de diretrio; o campo tabela, com 10 bits, usado para acessar uma entrada em uma das tabelas de pgina; o campo deslocamento, com 12 bits, indica a posio do byte dentro da pgina. Um registrador armazena a raiz da estrutura de mapeamento. A raiz o endereo-base da tabela de diretrio. No primeiro nvel de mapeamento, o campo diretrio somado raiz, resultando no endereo de uma entrada da tabela de diretrio. A partir desta entrada da tabela de diretrio obtido o endereo-base de uma tabela de pgina, que ser usado no segundo nvel de mapeamento. 68 Apostila de Arquitetura de Computadores Prof Bruno endereo linear diretrio tabela deslocamento + endereo real 0 12 22 31 + tabela de pgina + tabela de diretrio raiz Figura 5.16. Mapeamento no nvel de paginao do 80486. No segundo nvel de mapeamento, o campo tabela somado ao endereo- base obtido no nvel de mapeamento anterior. O resultado o endereo de uma entrada aa tabela de pgina. A entrada selecionada indica o endereo-base da pgina na memria principal. O endereo real finalmente obtido somando este endereo-base ao campo deslocamento. Para evitar o acesso a uma tabela de pgina a cada mapeamento, o DAT de paginao possui um TLB com 32 entradas. O DAT de paginao usa os 20 bits mais significativos do endereo linear (os campos diretrio e tabela) para verificar se a informao de mapeamento se encontra na TLB. Caso ocorra um TLB hit, o TLB fornece o endereo-base da pgina, que somado ao campo deslocamento para formar o endereo real. Se ocorre um TLB miss, o mapeamento ocorre como descrito acima. Alm disso, o endereo-base da pgina usado no segundo nvel do mapeamento armazenado no TLB, para que possa ser usado em mapeamentos futuros. 69 Apostila de Arquitetura de Computadores Prof Bruno 70 Apostila de Arquitetura de Computadores Prof Bruno 6 O SUB-SISTEMA DE ENTRADA/SADA Depois do processador e do sub-sistema de memria, este captulo examina o terceiro componente na arquitetura de um computador, o sub-sistema de entrada e sada (e/s). Neste sub-sistema esto includas as interfaces de e/s, atravs das quais os dispositivos perifricos so conectados ao sistema. Este captulo inicia descrevendo como processador e interfaces de e/s se comunicam, a organizao tpica de uma interface de e/s, e como o processador exerce controle sobre um dispositivo perifrico atravs de uma interface de e/s. Em seguida so apresentadas as principais tcnicas de transferncia de dados em operaes de e/s. Por ltimo, so discutidos alguns aspectos relacionados com barramentos de e/s. 6.1 A Interao entre Processador e Interfaces de E/S Em sistemas tais como microcomputadores e estaes de trabalho, as interfaces de e/s so ligadas ao processador atravs de barramentos de endereo, dados e controle, de maneira semelhante conexo entre memria principal e processador. A organizao tpica de um computador incluindo o sub-sistema de e/s mostrada na Figura 6.1. Processador Memria Cache Endereo Dados Controle Memria Principal sub-sistema de memria Disco . Vdeo Rede Interface de E/S Interface de E/S Interface de E/S Sub-sistema de E/S
Figura 6.1. Arquitetura de um computador, incluindo o sub-sistema de e/s. Assim como acontece em relao memria principal, o processador realiza acessos de leitura ou de escrita a uma interface de e/s. Em um acesso de leitura, o processador obtm um dado recebido do dispositivo perifrico conectado 71 Apostila de Arquitetura de Computadores Prof Bruno interface, ou ento uma informao de estado sobre uma operao de e/s em andamento ou recm-completada. Em um acesso de escrita, o processador fornece interface um dado que deve ser enviado ao dispositivo perifrico, ou ento o cdigo de um comando que inicia uma operao de e/s ou uma operao de controle sobre o dispositivo perifrico. Nos acessos s interfaces, o processador executa ciclos de barramento semelhantes aos descritos no captulo anterior. Cada interface de e/s identificada por um endereo nico. Em um acesso de leitura, o processador coloca o endereo da interface no barramento de endereo e ativa um sinal de leitura. Aps um certo intervalo de tempo, a interface coloca a informao desejada no barramento de dados. O processador finaliza o ciclo de barramento lendo a informao presente no barramento de dados e retirando o endereo e o sinal de controle. Em um acesso de escrita, o processador coloca o endereo da interface e o dado nos respectivos barramentos, e ativa um sinal de escrita. A interface selecionada armazena a informao presente no barramento de dados. No final do ciclo de barramento, o processador retira o endereo e o dado e desativa o sinal de controle. Assim como nos ciclos de barramento com a memria, todos estes eventos so comandados pelo processador e ocorrem em sincronismo com o sinal de clock. 6.2 Organizao de uma Interface de E/S A principal funo de uma interface de e/s tornar transparente para o processador os detalhes de operao e controle dos dispositivos perifricos. Podemos considerar que uma interface de e/s organizada em duas partes, como mostra a Figura 6.2. Parte Genrica Parte Especfica Dados Sinais de Controle Reg Dados Reg Controle Reg Estado Endereo Dados Controle
Figura 6.2. Organizao tpica de uma interface de e/s. A parte genrica, como o prprio nome indica, semelhante entre os diferentes tipos de interfaces de e/s. esta poro da interface que vista pelo processador. Em geral, na parte genrica existem alguns registradores, cujo nmero e funo depende em parte do tipo de perifrico acoplado interface. No entanto, como mostra a figura acima, na maioria das interfaces a parte genrica inclui pelo menos um registrador de dados, um registrador de controle e um 72 Apostila de Arquitetura de Computadores Prof Bruno registrador de estado. O acesso a cada um destes registradores feito pelo processador atravs de um endereo de e/s diferente. O registrador de dados usado para as transferncias de dados entre o processador e o dispositivo perifrico. Em uma operao de sada, o processador escreve um dado neste registrador e a interface se encarrega de envi-lo para o perifrico. No sentido contrrio, em uma operao de entrada, a interface recebe um dado do perifrico e o armazena no registrador de dados. O processador executa ento um acesso de leitura interface o obtm o dado depositado no registrador. O processador usa o registrador de controle para enviar comandos interface. Este comando enviado sob a forma de um cdigo. Cada interface possui um repertrio de comandos prprio. Quando o processador escreve um comando no registrador de controle, a interface interpreta o cdigo do comando e executa a operao solicitada, que pode ser uma operao interna interface ou sobre o perifrico a ela conectado. Finalmente, o registrador de estado usado para veicular informaes gerais sobre uma operao de e/s. Tipicamente, este registrador possui bits para indicar o trmino de uma operao e para indicar condies de erro que eventualmente possam acontecer durante a operao. A parte especfica interage diretamente com o perifrico, e por isso ela difere bastante entre os diferentes tipos de interfaces. No entanto, apesar das diferenas, a parte especfica na maioria das interfaces possui dois conjuntos de sinais. Um deles a prpria via atravs da qual so transferidos os dados entre a interface e o perifrico. O outro conjunto formado pelos sinais usados no controle do perifrico. Como exemplo de interface de e/s, a Figura 6.3 mostra a organizao simplificada de uma interface para unidades de disco rgido, a interface Intel 82064. Em sua parte genrica, esta interface possui sete registradores. O data register registrador usado na transferncia de dados. O command register equivale ao registrador de controle descrito anteriormente. Algumas operaes exigem informaes adicionais, que so escrita pelo processador nos registradores de parmetro. O cylinder register o registrador de parmetro onde o processador escreve o nmero do cilindro (trilha) onde ser feito o acesso. Os registradores sector number register e sector count register servem para indicar, respectivamente, o nmero do setor inicial e a quantidade de setores que devem ser acessados a partir do setor inicial. No sector/drive/head register o processador escreve o tamanho do setor em bytes, o nmero da unidade de disco e o nmero da cabea. Finalmente, o error register indica alguma condio de erro ocorrida. Na parte especfica, a interface possui dois circuitos que realizam a leitura e a escrita de dados no disco. Um terceiro circuito controla a parte mecnica da unidade de disco. Por exemplo, este circuito gera os sinais STEP, que faz a cabea avanar, e STEP DIR, que indica a direo de avano da cabea. Este circuito tambm recebe sinais, como o sinal READY, que indicam o estado da unidade de disco. 73 Apostila de Arquitetura de Computadores Prof Bruno Command Sector/Drive/Head Error Sector Count Sector Number Cylinder Data Write Control Read Control Drive Control Read Data Write Data Step Dir Ready Track 0
Figura 6.3. Organizao simplificada de uma interface para unidades de disco rgido. Este exemplo mostra a organizao tpica de uma interface de e/s. De um lado, a interface possui registradores atravs dos quais o processador envia e recebe dados, indica o tipo e os parmetros da operao de e/s e obtm in- formaes sobre o sucesso da operao. Do outro lado, a interface possui os circuitos e sinais necessrios para controlar um particular perifrico. Organizao semelhante pode ser encontrada em interfaces para vdeo, impressoras, redes locais, entre outros. 6.3 Tcnicas de Transferncia de Dados Em geral, uma operao de e/s envolve a transferncia de dados entre a memria e a interface de e/s. Existem basicamente trs tcnicas de como realizar esta transferncia, que so discutidas a seguir. 6.3.1 E/S com Polling Na e/s com polling, o processador controla toda a transferncia de dados entre a memria e a interface de e/s. Para entender como funciona esta tcnica, considere o exemplo de uma operao de escrita em um setor de disco. Suponha que a interface controladora de disco semelhante quela mostrada na Figura 6.3. Normalmente, o registrador de estado possui um bit, chamado done bit, que desativado quando um dado escrito no registrador de dados, sendo ativado quando este dado escrito no setor do disco. O diagrama na Figura 6.4 mostra como acontece a escrita de um setor de disco usando-se e/s com polling.
74 Apostila de Arquitetura de Computadores Prof Bruno selecione trilha/setor escreva byte no registrador de dados leia registrador de estado done bit ativado? ltimo dado? fim da operao sim sim no no e operao
Figura 6.4. Exemplo de e/s com polling. Aps escrever um dado no registrador de dados, o processador l o registrador de estado e testa o done bit, para verificar se o mesmo j foi escrito no setor do disco. Este teste do bit de estado chamado polling. O processador continua realizando o polling at encontrar o done bit ativado, o que indica que o dado j foi escrito no setor do disco. Quando isto acontece, e se ainda existe algum dado a ser enviado, o processador escreve o novo dado no registrador de dados e reinicia o polling. Este ciclo repetido at que todos os dados tenham sido escritos no setor do disco. A principal vantagem da e/s com polling a sua simplicidade. No entanto, esta tcnica possui a desvantagem de que o processador fica dedicado operao de e/s. Isto pode ser extremamente ineficiente, sob o ponto de vista da utilizao do processador. Considere uma operao de envio de um bloco de caracteres para uma impressora. O tempo de impresso de um caracter infinitamente maior que o tempo de execuo de uma instruo. Manter o processador em polling durante o tempo de impresso de cada caracter um desperdcio, j que durante este intervalo de tempo o processador poderia executar alguns milhes de instrues de um outro programa. Devido ao fato que o processador fica dedicado operao de e/s at o seu trmino, o uso da tcnica de e/s com polling restrita apenas a sistemas onde apenas um programa pode se encontrar em execuo a cada instante.
75 Apostila de Arquitetura de Computadores Prof Bruno 6.3.2 E/S com Interrupo Na e/s com polling, o processador fica dedicado operao de e/s porque ele o responsvel por determinar quando um novo dado pode ser transferido entre a memria e a interface de e/s. O mesmo no acontece na e/s com interrupo. Nesta tcnica, a interface responsvel por notificar o processador quando um novo dado pode ser transferido. Enquanto a e/s com polling uma tcnica puramente de software, a e/s com interrupo requer um suporte de hardware. A interface deve gerar um sinal de interrupo, atravs do qual ela notifica o processador quando uma operao de e/s foi concluda. Considere novamente o exemplo da operao de escrita de um setor de disco. O diagrama na Figura 6.5 mostra como esta operao realizada atravs de e/s com interrupo. A operao dividida em duas fases. Na fase de disparo da operao, o processador envia para a interface o comando, o nmero da trilha e do setor. Ao final da fase de disparo, o processador passa a executar uma outra atividade qualquer, por exemplo, parte de um outro programa. A interface inicia a fase de transferncia de dados fazendo um pedido de interrupo ao processador, atravs do sinal de interrupo. Ao receber o pedido de interrupo, o processador suspende a execuo do programa corrente e passa a executar uma rotina especial, chamada rotina de servio de interrupo (tambm chamada device driver ou device handler). Nesta rotina, o processador verifica inicialmente se o ltimo dado j foi enviado. Se este o caso, o processador conclui a escrita do setor do disco lendo o registrador de estado da interface. Caso contrrio, o processador envia um novo dado e retorna para o programa que se encontrava em execuo. Disparo da Operao de E/S Transferncia de Dados interrupo ltimo byte j enviado? escreva byte no registrador de dados no sim fim da operao leia registrador de estado rotina de servio de interrupo envie trilha, setor e cdigo da operao
Figura 6.5. Exemplo de e/s com interrupo. Durante a fase de transferncia de dados, a interface faz um pedido de interrupo a cada dado escrito no setor do disco. O processador responde ao 76 Apostila de Arquitetura de Computadores Prof Bruno pedido de interrupo executando a rotina de servio e enviando um novo dado. Isto se repete at que todos os dados tenham sido escritos no setor do disco. Normalmente, a interface de disco conhece o tamanho do setor e mantm uma contagem dos dados j recebidos, de forma que ela pode determinar quando deve encerrar a seqncia de pedidos de interrupo. Em um sistema comum existirem vrias interfaces diferentes que fazem pedidos de interrupo ao processador. Cada interface deve ser atendida por uma rotina de servio de interrupo especfica para aquela interface. Assim, ao receber um pedido de interrupo, o processador deve determinar qual a rotina de servio a ser executada. Alm disso, quando duas ou mais interfaces fazem pedidos de interrupo simultneos, necessrio decidir qual o pedido de interrupo que ser atendido. Estas duas funes so suportadas por um componente do sub-sistema de e/s, chamado controlador de interrupo (interrupt controller) A Figura 6.6 ilustra o funcionamento do controlador de interrupo em um sistema baseado nos processadores da famlia Intel 80x86. Controlador de Interrupo Brramento de Dados Interface de E/S Interface de E/S . . . . . . INT 80x86 INT
Figura 6.6. O controlador de interrupo. Como mostra a figura, o sinal de interrupo de cada interface ligado ao controlador de interrupo. O controlador de interrupo atribui um nmero e uma prioridade a cada um destes sinais. Quando um pedido de interrupo acontece, o controlador de interrupo envia para o processador, atravs do barramento de dados, o nmero do pedido. No caso de dois ou mais pedidos simultneos, o controlador decide qual o pedido com maior prioridade e envia para o processador o nmero correspondente. O processador usa o nmero recebido do controlador para indexar uma tabela armazenada na memria, chamada tabela de vetores de interrupo (interrupt vector table). Cada entrada desta tabela contm o ponteiro, ou vetor, para uma rotina de servio. Ao receber um nmero de interrupo n, o processador l o vetor contido na posio n da tabela e passa a executar a rotina de servio de interrupo apontada por este vetor. 77 Apostila de Arquitetura de Computadores Prof Bruno Na e/s com interrupo, o processador no fica dedicado operao de e/s. O processador alocado somente quando realmente deve ser transferido um dado entre a memria e a interface, resultando em uma utilizao mais eficiente do processador. No entanto, esta tcnica apresenta uma desvantagem quanto velocidade de transferncia dos dados. Note que a transferncia de um dado envolve a arbitrao pelo controlador de interrupo, a comunicao entre o controlador e o processador, o acesso memria para a leitura do vetor de interrupo e finalmente o desvio para a rotina de servio. Todas estas etapas acrescentam um retardo antes que o dado seja realmente transferido. Este retardo chamado de tempo de latncia de interrupo (interrupt latency time). Em alguns tipos de perifricos, a taxa de transferncia de dados entre o perifrico e a interface muito alta, ou em outras palavras, o intervalo de tempo entre a transferncia de dois dados consecutivos entre o perifrico e a interface muito pequeno. Devido ao tempo de latncia, o intervalo de tempo entre acessos do processador interface pode tornar-se maior que o intervalo de tempo com que os dados chegam interface. Se isto acontece, um novo dado chega interface antes que o processador leia o dado anterior, e assim o dado anterior perdido. Na realidade, o que contribui para aumentar o tempo de latncia o fato de que o processador ainda o responsvel por controlar a transferncia de dados. Para atender perifricos com alta taxa de transferncia, usa-se a tcnica de e/s com acesso direto memria, onde o processador no toma parte na fase de transferncia de dados. Esta tcnica analisada a seguir. 6.3.3 E/S com Acesso Direto Memria Na e/s com DMA (Direct Memory Access), um componente do sub-sistema de e/s chamado controlador de DMA responsvel por transferir os dados entre a memria e a interface de e/s. A Figura 6.7 mostra como o controlador de DMA ligado ao resto do sistema. Os sinais mostrados nesta figura so aqueles encontrados em sistemas baseados em processadores da famlia Intel 80x86. Controlador DMA Processador Memria Interface de E/S PDMA PBAR LIVRE
Figura 6.7. Sistema com controlador de DMA. Considere novamente o exemplo da operao de escrita de um setor de disco. Na fase de disparo da operao, o processador informa ao controlador de 78 Apostila de Arquitetura de Computadores Prof Bruno DMA o nmero de dados a serem transferidos, o endereo do primeiro dado e o sentido da transferncia (no caso do exemplo, o sentido de transferncia da memria para a interface de e/s). Em seguida, o processador envia para a interface controladora de disco o nmero de trilha, o nmero de setor e o comando da operao. O processador participa apenas da fase de disparo. Na fase de transferncia de dados, o controlador de DMA assume o controle dos barramentos para realizar a transferncia entre a memria e a interface. Para tanto, o controlador de DMA coloca o processador em um estado, chamado hold state, no qual o processador fica impedido de iniciar ciclos de barramento. Mais detalhadamente, a fase de transferncia de dados envolve os seguintes passos: - aps receber o comando do processador, a interface de disco faz um pedido de DMA ao controlador de DMA atravs do sinal PDMA. Por sua vez, o controlador faz um pedido de barramento ao processador, atravs do sinal PBAR. Ao liberar os barramentos, o processador responde ativando o sinal LIVRE, indicando ao controlador de DMA que este j pode usar os barramentos. - controlador de DMA coloca no barramento de dados o endereo do primeiro dado e ativa o sinal de leitura de memria. A memria responde colocando o dado endereado no barramento de dados. O controlador de DMA ativa o sinal de escrita em interface de e/s, fazendo com que a interface de disco capture o dado presente no barramento de dados. - ao escrever o dado no setor do disco, a interface faz um novo pedido de DMA. O controlador de DMA inicia uma nova transferncia, colocando o endereo do prximo dado no barramento de endereo e ativando os sinais de controle apropriados. Este passo se repete at que todos os dados tenham sido transferidos. Ao concluir a ltima transferncia, o controlador de DMA retira o pedido de barramento, permitindo que o processador volte operao normal. Note que na e/s com DMA a transferncia de cada dado envolve apenas uma leitura de memria e uma escrita de interface de e/s, realizadas pelo prprio controlador de DMA. A e/s com DMA efetivamente elimina o tempo de latncia associado a cada dado transferido, que existe na e/s com interrupo. Isto permite que a e/s com DMA atinja taxas de transferncia bem maiores que as tcnicas de e/s que envolvem o controle do processador. Em geral, possvel ter vrias interfaces de e/s operando com a tcnica de acesso direto memria. Para tanto, o controlador de DMA possui vrias entradas para pedido de DMA. O controlador de DMA associa a cada uma destas entradas um conjunto independente de registradores para armazenar o nmero de dados a serem transferidos, o endereo inicial e o sentido da transferncia. Um grupo de sinais de controle com seus respectivos registradores formam o chamado canal de DMA. O controlador de DMA se encarrega de arbitrar entre interfaces que fazem pedidos de DMA simultneos, usando um esquema de prioridades atribudas aos canais de DMA. 79 Apostila de Arquitetura de Computadores Prof Bruno 6.4 Padres de Barramentos A Figura 6.1 mostra a arquitetura de sistema tpica de microcomputadores e algumas estaes de trabalho, onde processador, memria principal e interfaces de e/s esto interligados atravs de um conjunto de trs barramentos. Estes barramentos so chamados coletivamente de barramento de sistema. Algumas caractersticas do barramento de sistema, tais como largura do barramento de endereo e do barramento de dados, so determinadas pelo processador. Outras caractersticas esto relacionadas com o sub-sistema de e/s, como por exemplo, o nmero de sinais de interrupo e o nmero de canais de DMA disponveis no barramento de controle. Na categoria de microcomputadores, foram estabelecidos alguns padres de barramento de sistema, com a finalidade de garantir a compatibilidade com interfaces de e/s de diferentes fabricantes. A Tabela 6.1 relaciona alguns padres de barramentos de sistema em microcomputadores e suas principais caractersticas.
Padro Endereo Dados Interrupes Canais DMA Desempenho (E/S, DMA) IBM PC XT 20 bits 8 bits 8 4 62.5 Kbytes/s ISA 24 bits 16 bits 15 7 100 Kbytes/s EISA 32 bits 32 bits ilimitado 7 33 Mbytes/s PCI 32 bits 32/64 bits ilimitado 132/264 Mbytes/s Tabela 6.1. Caractersticas de alguns padres de barramentos de sistema. O barramento de sistema no IBM PC XT era, na realidade, uma simples extenso dos barramentos do processador Intel 8088. O nmero de sinais de interrupo e de canais de DMA era bastante limitado. O IBM PC XT foi substitudo pelo IBM PC AT, cujo barramento de sistema tornou-se o padro ISA (Industry Standard Architecture). Com o ISA, o nmero de sinais de interrupo e de canais de DMA foi quase duplicado, enquanto que o desempenho das operaes de e/s com DMA aumentou em 60%. Apesar da diferena na largura dos barramentos de endereo e de dados, o padro ISA permite a conexo de interfaces originalmente projetadas para o barramento IBM PC XT. Com o lanamento dos processadores Intel 80386 e 80486, aumentaram as exigncias quanto ao desempenho de e/s. Para fazer face estas exigncias, foi criado o padro ISA estendido, ou EISA (Extended Industry Standard Architecture). No padro EISA, transferncias de dados em operaes de e/s so controladas por 80 Apostila de Arquitetura de Computadores Prof Bruno um componente especial, denominado bus master. Na verdade, um bus master est contido em uma interface de e/s sofisticada, que normalmente possui uma lgica dedicada ao controle do barramento e por uma memria local. Em um barramento EISA podem existir ate 15 bus masters. O bus master executa ciclos de barramento para transferir dados entre ele mesmo e a memria principal, ou ainda entre ele e uma interface de e/s. Como as transferncias so sempre controladas pelo bus master, a memria ou a interface de e/s so denominados slaves. O bus master pode realizar dois tipos de transferncias. No primeiro tipo, chamado standard transfer, o bus master e o slave executam um protocolo de sincronizao a cada dado transferido. No modo burst transfer, este protocolo de sincronizao executado apenas uma vez, no incio da transferncia de um bloco de dados. Assim, transferncias no modo burst transfer so mais rpidas que no modo standard transfer. Tipicamente, no modo standard transfer, so necessrios 8 ciclos de clock para transferir um dado, enquanto no modo burst transfer a sincronizao inicial consome 4 ciclos de clock e apenas 1 ciclo adicional para cada dado transferido. O modo burst transfer foi introduzido no padro EISA para atender as necessidades de perifricos que transferem blocos de dados com uma alta taxa de transferncia. O padro EISA tambm permite transferncias usando as tradicionais tcnicas de interrupo e de acesso direto memria, mas com vantagens. Nos barramentos PC XT e ISA, existe um numero mximo de sinais para pedidos de interrupo disponveis no barramento de controle, o que limita o nmero de interfaces que podem usar a tcnica de interrupo. No barramento EISA, no existe limitao quanto ao nmero de interfaces que podem solicitar interrupes. Alm disso, transferncias via DMA so mais rpidas. Um ponto importante no padro EISA a compatibilidade. Como o prprio nome sugere, o EISA foi criado como uma extenso de barramentos anteriores. Isto significa que interfaces para os barramentos PC XT e ISA podem ser usados em sistemas com barramento EISA. Atualmente, os computadores so fabricados segundo o padro PCI. Este padro uma interface de 64 bits num pacote de 32 bits. O barramento PCI roda em 33 MHz e pode transferir 32 bits de dados em cada ciclo de clock. Uma caracterstica importante dos padres de barramento mais recentes, como o EISA e o PCI, o compartilhamento de interrupes. Esta tcnica permite que dois dispositivos utilizem a mesma interrupo. 6.4.1 Barramentos Locais Normalmente, um barramento de sistema possui conectores (os chamados slots) destinados conexo das interfaces de e/s ao sistema. Em geral, o barramento de sistema inclui um nmero razovel de conectores, de forma a permitir eventuais expanses com o acrscimo de novas interfaces. Devido ao grande nmero de conectores, o barramento torna-se fisicamente longo. Infelizmente, quanto maior o comprimento do barramento, maior ser o efeito de alguns fatores eltricos indesejveis que limitam a taxa de transferncia de 81 Apostila de Arquitetura de Computadores Prof Bruno dados. Esta limitao afeta no somente transferncias de dados em operaes de e/s, mas tambm os acessos memria. Isto acontece porque um mesmo barramento usado tanto para acessar a memria quanto para conectar as interfaces de e/s ao sistema. Para eliminar os efeitos negativos de um nico barramento sobre os acessos memria, alguns sistemas utilizam dois barramentos distintos, como mostra a Figura 6.9. Nesta organizao, existe um barramento local que interliga o processador memria principal e um barramento de e/s parte, usado apenas para a conexo das interfaces de e/s. O barramento de e/s isolado do barramento local atravs de um adaptador. Processador Memria Principal Barramento Local E/S de Alto Desempenho Adaptador Interface E/S Interface E/S Interface E/S Barramento de E/S (ISA, EISA)
Figura 6.9. Estrutura de um sistema com dois barramentos. Com barramentos diferentes, a comunicao entre processador e memria principal fica isolada dos efeitos negativos decorrentes do comprimento excessivo do barramento de e/s. O comprimento do barramento local extremamente reduzido: a este barramento podem ser conectados apenas algumas poucas (no mximo duas ou trs) interfaces de e/s de alto desempenho, como por exemplo, interfaces de vdeo. Atualmente, existem alguns padres de barramentos locais estabelecidos. Os mais comuns so o VESA Local-Bus, desenvolvido pela Video Equipment Standards Association, e o Peripheral-Connect Interface, ou PCI, desenvolvido pela Intel Corp. Com o aumento do desempenho dos microprocessadores, existe uma tendncia que arquiteturas com barramentos distintos venham a ser adotadas em uma faixa cada vez maior de sistemas.
6.4.2 Barramentos de Perifricos Em alguns sistemas possvel encontrar um terceiro tipo de barramento, denominado barramento de perifricos. Este nvel de barramento tem como principal objetivo prover um padro de compatibilidade entre diferentes fabricantes de dispositivos perifricos. Em geral, o barramento de perifrico conectado ao barramento de e/s atravs de uma interface adaptadora especial. 82 Apostila de Arquitetura de Computadores Prof Bruno Atualmente, o principal padro de barramento de perifricos o SCSI (Small Computer Systems Interface). A primeira verso do padro SCSI foi lanada em 1986. A segunda verso, SCSI 2, foi lanada em 1990. O barramento SCSI possui uma estrutura em rvore, como mostra a Figura 6.10. Device 1 Device 8 . . . Logical Unit 1 Logical Unit 8 . . . . . . Logical Subunit 1 Logical Subunit 256
Figura 6.10. Estrutura do barramento de e/s no padro SCSI. No primeiro nvel podem existir at 8 SCSI devices. Existem dois tipos de SCSI devices: o primeiro tipo chamado host adapter, e usado para conectar o barramento SCSI ao barramento de e/s do sistema; o segundo tipo chamado peripheral controller. Cada controller pode ser uma interface de e/s ou um adaptador para o prximo nvel do barramento. A cada controller podem estar ligados at 8 logical units no nvel abaixo do barramento. Cada logical unit pode ser um perifrico de e/s ou um adaptador para o prximo nvel do barramento. Finalmente, a cada logical unit podem estar conectados at 256 logical subunits no terceito nvel do barramento. Cada logical subunit corresponde a um perifrico de e/s. O padro SCSI 2 apresenta dois modos especiais de operao. O primeiro modo chamado fast SCSI. Enquanto a velocidade no modo bsico de operao de 4 milhes de transaes por segundo, o modo fast SCSI permite uma velocidade de 10 milhes de transaes por segundo. No entanto este modo exige um hardware especial, que aumenta o custo do barramento. O outro modo de operao chamado wide SCSI. Neste modo so usadas 32 linhas de dados, ao invs das 16 linhas usadas no modo bsico. Os modos fast SCSI e wide SCSI podem ser usadas em conjunto, possibilitando uma taxa de transferncia de 40 Mbytes/s. 83 Apostila de Arquitetura de Computadores Prof Bruno 7 TPICOS ESPECIAIS Este captulo discute alguns tpicos que atualmente representam o estado- da-arte na rea de arquitetura de computadores. Inicialmente, so apresentadas a tcnica de pipelining e as arquiteturas super-escalares, dois conceitos que se baseiam na execuo paralela de instrues para aumentar o desempenho de um processador. Em seguida introduzida a filosofia RISC, cujos princpios so adotados pela maioria dos processadores lanados recentemente. Finalmente, este captulo discute sistemas multiprocessadores e supercomputadores voltados para processamento de alto desempenho. 7.1 A Tcnica de Pipelining No Captulo 2 foi apresentado o mecanismo bsico de execuo de instrues, no qual as instrues so executadas seqencialmente. Neste modo, a execuo de uma nova instruo inicia-se somente quando a execuo da instruo anterior completada. Isto significa que apenas uma instruo encontra-se em execuo a cada instante de tempo. Ao contrrio desta forma de execuo seqencial, a tcnica de pipelining permite que vrias instrues sejam executadas simultaneamente. Na tcnica de pipelining, os passos de execuo de uma instruo so realizados por unidades independentes, denominadas estgios do pipeline. A Figura 7.1(a) mostra a representao de um pipeline com quatro estgios. B D E R i1 i1 i2 i1 i2 i3 i1 i2 i3 i4 (a) clock (b) c1 c2 c3 c4
Figura 7.1. Execuo de instrues em pipeline. 84 Apostila de Arquitetura de Computadores Prof Bruno Neste pipeline, o estgio B realiza a busca da instruo, o estgio D decodifica a instruo, o estgio E executa a operao indicada pela instruo, e finalmente o estgio R armazena o resultado produzido pela instruo. A execuo de uma instruo inicia-se pelo estgio B, sendo completada no estgio R. Ao ser finalizado um passo em um certo estgio, a instruo avana para o estgio seguinte. Em condies normais, uma instruo avana para o estgio seguinte a cada novo ciclo de clock. O modo de execuo em pipeline mostrado na Figura 7.1(b). Esta figura mostra a posio das instrues dentro do pipeline ao final de cada ciclo de clock. No ciclo c1, a instruo i1 buscada pelo estgio B. No ciclo c2, a instruo i1 decodificada pelo estgio D, enquanto o estgio B busca uma nova instruo, i2. No ciclo c3, o estgio E executa a operao indicada pela instruo i1, ao mesmo tempo que o estgio D decodifica a instruo i2 e o estgio B busca a instruo i3. No ciclo c4 o resultado da instruo i1 armazenado pelo estgio R. Ainda em c4, as instrues i2 e i3 avanam para o prximo estgio, e o estgio B acessa a instruo i4. Note que novas instrues entram no pipeline antes que a execuo das instrues anteriores seja completada. Quando o pipeline encontra-se cheio, vrias instrues esto sendo executadas em paralelo, uma em cada estgio do pipeline. No pipeline da Figura 7.1(b), a cada instante de tempo at quatro instrues podem se encontrar em execuo. Na realidade, o aspecto mais importante na tcnica de pipeline que ela permite que uma instruo seja completada a cada ciclo de clock. Isto pode ser visto a partir da Figura 7.2. i1 i2 i3 i4 clock i2 i3 i4 i5 i6 i3 i4 i5 i4 i5 i6 i7 c1 c2 c3 c4 c5 c6 c7 c8
Figura 7.2. Completando instrues a cada ciclo de clock. Esta figura mostra a continuao da execuo iniciada na Figura 7.1(b). Ao final do ciclo c4 a execuo da instruo i1 completada, ao final do ciclo c5 a execuo de i2 completada, e assim por diante. Entre os ciclos c4 e c7 so completadas quatro instrues, i1, i2, i3 e i4. Isto significa que, em mdia, foi necessrio um ciclo para executar cada instruo. Como visto no Captulo 2, em uma arquitetura seqencial a execuo de uma instruo consome vrios ciclos de clock. Nestas arquiteturas, o nmero mdio 85 Apostila de Arquitetura de Computadores Prof Bruno de ciclos por instruo est bem acima da mdia de 1 ciclo/instruo obtida com o emprego da tcnica de pipelining. A reduo do nmero mdio de ciclos por instruo contribui diretamente para aumentar o desempenho. Isto pode ser visto intuitivamente: se um processador requer um menor nmero de ciclos para executar cada instruo, um certo nmero de instrues ser executado em um nmero de ciclos menor, o que equivale a dizer, em um tempo menor. Assim, este processador apresentar um desempenho maior. A influncia do nmero de ciclos por instruo sobre o desempenho pode ser mostrada de uma maneira mais formal atravs da expresso que mede o desempenho pelo tempo de execuo de um programa. Quanto menor o tempo que um processador consome para executar um programa, maior ser o seu desempenho. O tempo de execuo de um programa depende do nmero de instrues executadas e do tempo mdio de execuo de cada instruo, ou seja: tempo de execuo = nmero de instrues x tempo mdio por instruo Por sua vez, o tempo mdio de execuo de cada instruo determinado pelo nmero mdio de ciclos por instruo (cpi) e pelo tempo do ciclo de clock: tempo mdio por instruo = cpi x tempo de ciclo de clock Assim, o tempo de execuo dado por: tempo de execuo = nmero de instrues x cpi x tempo de ciclo do clock Atravs desta expresso, v-se que o tempo de execuo diretamente proporcional ao nmero mdio de ciclos por instruo. Ao reduzir este fator para 1 ciclo/instruo, a tcnica de pipelining contribui para aumentar o desempenho de forma significativa. Por isso, atualmente todas as arquiteturas de processador voltadas para aplicaes de alto desempenho utilizam a tcnica de pipelining. Apesar de conceitualmente simples, na prtica a tcnica de pipelining apresenta alguns problemas. Voltando Figura 7.2, note que a taxa de 1 ciclo/instruo obtida somente quando mantido um fluxo contnuo de instrues atravs do pipeline. Se isto acontece, uma nova instruo deixa o pipeline a cada ciclo, ou seja, o nmero de instrues executadas ser igual ao nmero de ciclos, resultando na mdia de 1 ciclo por instruo executada. No entanto, existem alguns impedimentos para que seja mantido um fluxo contnuo de instrues atravs do pipeline. Um das dificuldades em manter a continuidade do fluxo de instrues acontece, por exemplo, quando existe uma dependncia de dados entre duas instrues. Uma dependncia entre duas instrues i e j existe quando um dos operandos da instruo j o resultado da instruo i anterior. Lembre-se que, em um pipeline, instrues so executadas em paralelo. Se estas duas instrues so executadas simultaneamente no pipeline, pode acontecer que a instruo i ainda no tenha produzido o seu resultado no momento em que a instruo j l os seus operandos. Se no existir nenhum controle, a instruo j l um dos operandos com um valor antigo, ainda no atualizado pela instruo i, levando a uma execuo incorreta. Note que este problema no existe quando instrues so executadas sequencialmente. 86 Apostila de Arquitetura de Computadores Prof Bruno A soluo mais simples para garantir que a dependncia seja respeitada consiste em paralizar a execuo da instruo j (e das instrues subseqentes) quando esta chega ao estgio onde seus operandos so acessados, at que a instruo i seja completada. No entanto, esta paralizao parcial do pipeline resulta em uma descontinuidade no fluxo de instrues, elevando o nmero mdio de ci- clos por instruo. Devido as situaes que provocam a quebra do fluxo de instrues, na prtica o nmero mdio de ciclos por instruo aproxima-se, mas no exatamente igual, a 1 ciclo/instruo. No entanto, ainda assim esta mdia fica bem abaixo daquela observada em arquiteturas sem pipeline. Existem vrias tcnicas que procuram minimizar a ocorrncia de situaes onde o fluxo de instrues interrompido. No entanto, a anlise destas tcnicas, apesar de extremamente interessante, no cabe no escopo deste texto. 7.2 Arquiteturas Super-Escalares A expresso apresentada na seo anterior relaciona o tempo de execuo com o nmero mdio de ciclos necessrios para executar uma instruo (cpi). Podemos tambm expressar o tempo de execuo em funo do nmero de instrues executadas por ciclo, ou ipc. Se em mdia so necessrios C ciclos para executar I instrues, o nmero mdio de ciclos por instruo ser cpi = C/I, enquanto o nmero mdio de instrues completadas por ciclo ser ipc = I/C. Note ento que cpi = 1/ipc, e assim a expresso para o tempo de execuo pode ser reescrita como: tempo de execuo = nmero de instrues x tempo de ciclo de ipc clock
Esta expresso indica que o tempo de execuo diminui, e por conseguinte o desempenho aumenta, na medida que o nmero de instrues completadas por ciclo aumenta. Na tcnica de pipelining, apenas uma instruo completada por ciclo (veja a Figura 7.2), resultando em um fator ipc mximo de 1 ciclo/instruo. Seria possvel aumentar ainda mais o desempenho caso o fator ipc fosse elevado para acima desta mdia. Para obter um aumento adicional no desempenho pela elevao do fator ipc, seria necessrio permitir que mais de uma instruo fosse completada a cada ciclo. Esta a idia central nas arquiteturas super-escalares. Uma arquitetura super-escalar dotada de mltiplas unidades funcionais independentes, que executam instrues em paralelo. A cada ciclo, vrias instrues podem ser enviadas, ou despachadas, para execuo nestas unidades funcionais. Desta forma, possvel completar a execuo de vrias instrues a cada ciclo de clock, e assim aumentar o fator ipc para alm de 1 instruo/ciclo. A Figura 7.3 mostra a organizao bsica de uma arquitetura super-escalar. 87 Apostila de Arquitetura de Computadores Prof Bruno Unidade de Despacho Unidade de Inteiros Unidade de Inteiros Unidade de Ponto Flutuante Unidade de Memria
Figura 7.3. Arquitetura super-escalar bsica. Nesta arquitetura super-escalar hipottica, at quatro instrues podem ser completadas por ciclo. Existem duas unidades de inteiros que executam instrues aritmticas e lgicas sobre nmeros inteiros, uma unidade de ponto flutuante que executa instrues aritmticas sobre nmeros com ponto flutuante, e ainda uma unidade de memria que executa instrues de acesso memria. A cada ciclo, a unidade de despacho acessa e decodifica um certo nmero de instrues, e verifica quais destas instrues podem ser despachadas para as unidades funcionais. Tipicamente, uma instruo despachada quando a unidade funcional apropriada encontra-se disponvel e quando no existe uma dependncia de dados entre esta instruo e uma outra instruo ainda em execuo. Os processadores mais recentes destinados a aplicaes de alto desempenho apresentam arquiteturas super-escalares. A ttulo de exemplo, a seguir descrevemos resumidamente trs arquiteturas super-escalares: Alpha AXP, Pentium e PowerPC 601. 7.3 A Arquitetura Alpha AXP A arquitetura Alpha AXP foi introduzida pela Digital Equipment Corp. em 1993. A primeira implementao desta arquitetura o DEC Alpha 21064, um processador que opera com freqncia de clock de 200 MHz. A organizao da arquitetura Alpha mostrada na Figura 7.4. 88 Apostila de Arquitetura de Computadores Prof Bruno EBox Adder Multiplier Shifter Logic Unit IBox Prefetcher Pipeline Control FBox Multiplier/ Adder Divider Integer Registers Floating-Point Registers ABox Address Generator TLB Instruction Cache Data Cache
Figura 7.4. Organizao da arquitetura DEC Alpha AXP. A arquitetura Alpha possui quatro unidades funcionais. A unidade IBox realiza a busca e o despacho de instrues, e executa as instrues de transferncia de controle. A unidade EBox executa as instrues aritmticas e lgicas sobre inteiros, enquanto a unidade FBox executa as instrues aritmticas sobre nmeros com ponto-flutuante. A Ebox opera sobre inteiros de 64 bits, enquanto a FBox manipula nmeros com ponto flutuante com preciso simples (32 bits) e preciso dupla (64 bits). Instrues de acesso memria so executadas pela unidade ABox. As unidades EBox e FBox possuem possuem conjuntos de registradores separados, cada um com 32 registradores de 64 bits. A arquitetura ainda inclui memrias cache separadas para instrues e dados. Ambas as caches so do tipo associativa por conjunto. No Alpha 21064, cada memria cache possui 8 Kbytes, com linhas de 32 bytes e quatro linhas por conjunto. No DEC Alpha 21064, as unidades funcionais so implementadas com a tcnica de pipelining. Os pipelines no Alpha 21064 so mostrados na Figura 7.5. 89 Apostila de Arquitetura de Computadores Prof Bruno I1 I2 IWR A1 A2 A3 F1 F2 F3 F4 F5 FWR I BOX pipeline E BOX pipeline A BOX pipeline F BOX pipeline BR IF SW ID IR
Figura 7.5. Pipelines no DEC Alpha 21064. Os quatro primeiros estgios esto na IBox, e efetuam o acesso e despacho das instrues. A cada ciclo, o estgio IF acessa duas instrues na memria cache de instrues. O estgio SW faz uma previso do resultado de instrues de desvio. Normalmente, o estgio SW solicita ao estgio IF a busca das duas prximas instru- es seqenciais. Ao encontrar uma instruo de desvio, este estgio procura antecipar o resultado do desvio (desvio efetuado/desvio no-efetuado) e solicita a busca das instrues no destino previsto. O estgio SW tambm responsvel por determinar se duas instrues podem ser despachadas simultaneamente. No Alpha 21064, algumas combinaes de instrues no podem ser despachadas em um mesmo ciclo, devido a conflitos no acesso aos conjuntos de registradores e no uso dos barramentos internos. A Tabela 7.1 mostra as combinaes de instrues que podem ser despachadas simultaneamente. Instruo 1 Instruo 2 instrues inteiras instrues de ponto flutuante instrues de acesso memria instrues inteiras/ponto flutuante instrues de transferncia de controle instrues de acesso memria, inteiras ou de ponto flutuante Tabela 7.1. Possveis combinaes de instrues para despacho simultneo no Alpha 21064. Quando no possvel despachar duas instrues no mesmo ciclo, o estgio SW serializa o despacho, enviando as instrues do par para o estgio seguinte em ciclos diferentes. O estgio ID completa a decodificao de instrues iniciada no estgio SW, verificando possveis dependncias entre as instrues a serem despachadas. Caso haja alguma interdependncia, o despacho destas instrues serializado. Finalmente, no estgio IR os operandos das instrues so acessados nos registradores, e as instrues so enviadas para execuo. Instrues de desvio so executadas no estgio BR, ainda na IBox. As instrues aritmticas e lgicas sobre inteiros so executadas nos estgios I1 e I2 90 Apostila de Arquitetura de Computadores Prof Bruno na EBox. O resultado armazenado em registradores no estgio IWR. Instrues de ponto flutuante so executadas na FBox nos estgios F1 a F5. O resultado escrito em um registrador de ponto flutuante no estgio FWR. As instrues de acesso memria so executadas nos estgios A1, A2 e A3 na Abox. O endereo efetivo calculado no estgio A1. A converso de endereo virtual para endereo real e o acesso memria cache de dados acontecem no estgio A2. Em instrues de leitura da memria, o dado acessado armazenado no registrador-destino no estgio A3. 7.4 Arquitetura do Pentium O processador Pentium, lanado pela Intel Corp. em 1993, tambm apresenta uma arquitetura super-escalar. A verso inicial do Pentium opera com uma freqncia de clock de 66 MHz. A organizao da arquitetura do Pentium aparece na Figura 7.6. O Intel Pentium inclui trs unidades funcionais. As unidades denominadas U- Pipe e V-Pipe executam instrues aritmticas e lgicas sobre nmeros inteiros de 64 bits. A FPU (Floating-Point Unit) executa instrues aritmticas sobre nmeros com ponto-flutuante com preciso simples (32 bits), preciso dupla (64 bits) e preciso estendida (128 bits). Ao contrrio do 80486, que tambm inclui uma unidade de ponto flutuante em sua arquitetura, no Pentium a FPU usa a tcnica de pipelining. No 80486 instrues de ponto flutuante so executadas seqencialmente, com a execuo uma nova instruo iniciando-se apenas aps o trmino da anterior. Com pipelining, a FPU do Pentium permite que uma nova instruo de ponto flutuante seja iniciada antes do trmino da anterior. 91 Apostila de Arquitetura de Computadores Prof Bruno Instruction Cache Prefetch Buffers U Pipe V Pipe Register Set Data Cache Floating Point Unit
Figura 7.6. Organizao da arquitetura do Intel Pentium. Associado s duas unidades de inteiros existe um conjunto de registradores semelhante ao existente nos processadores da famlia 80x86 (veja Captulo 4). A FPU contm um conjunto de 8 registradores. Ao contrrio do 80486, que possui apenas uma memria cache para instrues e dados, o Pentium inclui memrias cache separadas. Ambas as memrias cache no Pentium possuem 8 Kbytes, e so do tipo associativa por conjunto, com 32 bytes por linha e duas linhas por conjunto. No Pentium, as instrues sobre inteiros so executadas em um pipeline com 5 estgios, enquanto instrues de ponto flutuante so executadas em um pipeline com 8 estgios. Os pipelines no Pentium so mostrados na Figura 7.7. D2 E WB D2 E WB X1 X2 IF D1 WF ER U-Pipe V-Pipe FPU
Figura 7.7. Estrutura dos pipelines no Intel Pentium. 92 Apostila de Arquitetura de Computadores Prof Bruno Os dois primeiros estgios so comuns s unidades U-Pipe, V-Pipe e FPU. O estgio IF acessa simultaneamente duas instrues na memria cache, as quais so decodificadas no estgio D1. O estgio D1 decide se as duas instrues podem ser despachadas no mesmo ciclo para as unidades U-Pipe e V-Pipe. As instrues sero despachadas simultaneamente se ambas forem instrues simples, e se no existir uma dependncia de dados entre elas. Uma instruo simples aquela cuja execuo no controlada via microprograma, e que pode ser executada em um nico ciclo de clock. Se uma das instrues no simples, a primeira instruo do par despachada para a U-Pipe. No ciclo seguinte, a segunda instruo do par associada com uma nova instruo decodificada, e o estgio D1 novamente verifica se ambas podem ser despachadas simultaneamente. Se este ainda no o caso, a segunda instruo do par anterior despachada e o processo se repete. Os estgios D2, E e WB so replicados na U-Pipe e V-Pipe. No estgio D2, a decodificao da instruo completada. No estgio E realizada a operao na ALU no caso de instrues aritmticas e lgicas, ou a memria cache de dados acessada em instrues de acesso memria. No estgio WB o resultado da instruo escrito no registrador-destino. Alm dos estgios IF e D1, o pipeline da FPU tambm usa os dois primeiros estgios da U-Pipe e V-Pipe. Isto significa que uma instruo sobre inteiros no pode ser despachada juntamente com uma instruo de ponto flutuante no mesmo ciclo. Uma instruo de ponto flutuante despachada para o estgio D2 da U-Pipe. A FPU usa os estgios E da U-Pipe e V-Pipe para acessar operandos na memria cache de dados. Os estgios seguintes localizam-se de fato na FPU. Nos estgios X1 e X2 a instruo executada, e o resultado armazenado no registrador-destino no estgio WF. O estgio ER acontece o tratamento de erros que podem acontecer execuo da instruo de ponto flutuante. Com a adoo de uma arquitetura super-escalar, o Pentium pode atingir um desempenho significativamente maior que o processador da gerao anterior, o Intel 486. Uma comparao do desempenho do Pentium com o 80486 mostrada na Figura 7.8. SPECint92 SPECfp92 0 10 20 30 40 50 60 70 SPECint92 SPECfp92 486 DX-33 486 DX/2 Pentium
93 Apostila de Arquitetura de Computadores Prof Bruno Figura 7.8. Comparao do desempenho do 80486 e do Pentium. 7.5 A Arquitetura PowerPC 601 A arquitetura PowerPC foi desenvolvida em conjunto pela Apple Computer, IBM Corp. e Motorola. Na realidade, a arquitetura PowerPC baseada na arquitetura IBM POWER (Power Optimization with Enhanced RISC), implementada pelos processadores da linha de estaes de trabalho IBM RS/6000. Por este motivo, os processadores PowerPC e RS/6000 so semelhantes em diversos aspectos. O PPC 601 o primeiro processador da famlia PowerPC. Outros trs processadores, o PPC 603, PPC 604 e PPC 620, esto com lanamento previsto at 1995. Estes processadores diferem quanto freqncia de clock e o nmero de instrues que podem ser completadas por ciclo. A Tabela 7.2 mostra uma comparao entre os processadores da famlia PowerPC. Objetivo de Mercado Clock Instrues/ciclo PPC 601 relao custo/desempenho 50, 66, 80 MHz 3 PPC 603 baixo consumo (laptops) 66, 80 MHz 3 PPC 604 relao custo/desempenho - 4 PPC 620 alto desempenho - 6 Tabela 7.2. Processadores da famlia PowerPC. A descrio que se segue particular para o PPC 601. A Figura 7.9 mostra a organizao da arquitetura do PowerPC 601.
94 Apostila de Arquitetura de Computadores Prof Bruno Instruction Queue Dispatch Logic Branch Unit Processor (BPU) Fixed Point Unit (FXU) Cache Memory Management Unit (MMU) Floating Point Unit (FPU) Instruction Fetch Unit
Figura 7.9. Organizao da arquitetura do PowerPC 601. O PPC 601 possui trs unidades funcionais. A unidade FXU executa as instrues aritmticas e lgicas sobre inteiros de 64 bits. Operaes sobre nmeros com ponto flutuante so executadas na FPU. Nmeros com ponto flutuante podem ter preciso simples (32 bits) ou preciso dupla (64 bits). A FXU e FPU possuem conjuntos de registradores separados, cada um com 32 registradores de 64 bits. A unidade BPU executa apenas as instrues de transferncia de controle. A unidade de busca de instrues (Instruction Fetch Unit) no executa nenhum tipo de instruo, sendo apenas responsvel por acessar a memria cache e preencher a fila de instrues na unidade de despacho. A unidade MMU responsvel por controlar a memria virtual. O PPC 601 inclui uma memria cache unificada para instrues e dados. A memria cache armazena 32 Kbytes e do tipo associativa por conjunto, com 64 bytes por linha e oito linhas por conjunto. A arquitetura do PPC 603, e provavelmente as do PPC 604 e PPC 620, possui memrias cache de instrues e de dados separadas. A estrutura dos pipelines na arquitetura PPC 601 mostrada na Figura 7.10. 95 Apostila de Arquitetura de Computadores Prof Bruno X WB IF Disp FP Unit BR Unit BRX FX Unit D X1 X2 WF
Figura 7.10. Pipelines no PowerPC 601. O estgio IF realiza a busca de instrues, enquanto o estgio Disp decodifica e despacha instrues. A cada ciclo, o estgio IF acessa at 8 instrues na memria cache, que so armazenadas em uma fila at serem despachadas. A unidade de despacho pode enviar at trs instrues para execuo em um mesmo ciclo. Como a figura indica, uma instruo de transferncia de controle executada no estgio BRX no mesmo ciclo em que despachada. Instrues aritmticas e lgicas so executadas no estgio X da FXU, sendo o resultado armazenado no registrador-destino no estgio WB. Instrues de ponto flutuante no so decodificadas no estgio Disp, mas no estgio D da FPU. A operao de ponto flutuante executada nos estgios X1 e X2, e o resultado armazenado no estgio WF. Embora conceitualmente simples, a execuo paralela de instrues em arquiteturas super-escalares envolve vrios problemas. Os principais so as dependncias de dados entre instrues e as instrues de transferncia de controle, que limitam o nmero de instrues despachadas por ciclo. Arquiteturas super-escalares incorporam mecanismos sofisticados para minimizar os efeitos destes dois fatores e permitir uma explorao mais efetiva do potencial oferecido. Um outro aspecto que se torna muito importante com as arquiteturas super- escalares a qualidade do cdigo gerado pelo compilador. O compilador desempenha um papel fundamental em otimizar a seqncia de instrues no cdigo do programa, de modo a minimizar a freqncia de instrues que no podem ser despachadas simultaneamente. Avaliaes no Intel Pentium mostram que um programa compilado por um compilador otimizador apresenta um desempenho 30% maior que um programa compilado por um compilador para uma arquitetura no super-escalar. Apesar destes problemas, o modelo super-escalar vem sendo utilizado em um nmero cada vez maior de arquiteturas. Alm daqueles aqui mostrados, podemos ainda citar como exemplos de processadores com arquitetura super- escalar o IBM RS/6000, o Motorola M88110, e o Sun SuperSPARC . 96 Apostila de Arquitetura de Computadores Prof Bruno 7.6 Arquiteturas RISC Uma das principais tendncias nas arquiteturas de processador que surgiram ao longo das dcadas de 70 e 80 foi a crescente sofisticao dos seus conjuntos de instrues. Nestas arquiteturas, operaes que antes eram realizadas por uma seqncia de vrias instrues passavam a ser executadas por uma nica instruo. Esta sofisticao das instrues decorria das limitaes do hardware e do software disponveis na poca. A principal limitao do hardware estava na capacidade de armazenamento e na velocidade da memria principal. Os dispositivos de memria apresentavam baixa densidade e alto tempo de acesso. Devido baixa capacidade de armazenamento da memria principal, era desejvel que o cdigo executvel de um programa tivesse tamanho reduzido. A velocidade da memria principal contribua para reforar esta necessidade. O tempo de acesso memria principal era em mdia 10 vezes maior que o tempo de execuo de uma instruo com operandos em registradores. Este desbalanceamento levou ao princpio amplamente aceito na poca de que o tempo de execuo de um programa seria proporcional ao tamanho do seu cdigo. Programas longos teriam um maior tempo de execuo devido ao maior nmero de instrues acessadas na memria. Assim, desejava-se reduzir o tamanho do cdigo no somente para economizar espao, mas tambm para obter- se um melhor desempenho. Do lado do software, o estado inicial dos compiladores apresentavam limitaes que somavam-se s do hardware. Como ainda no haviam sido desenvolvidas tcnicas eficientes de otimizao de cdigo, o cdigo gerado por um compilador era em geral maior do que o cdigo do mesmo programa quando escrito diretamente em linguagem assembly. Programas em linguagens de alto nvel eram assim considerados ineficientes em termos de espao e tempo de execuo. No entanto, a crescente complexidade das aplicaes foi tornando proibitiva a programao em linguagem assembly. medida que as aplicaes se tornavam mais sofisticadas, o uso de linguagens assembly resultava em uma dificuldade e custo de desenvolvimento cada vez maiores. O uso de linguagens de alto nvel tornava-se imprescindvel. Tais circunstncias motivaram o desenvolvimento de arquiteturas para suportar o uso de linguagens de alto nvel. Programas de alto nvel compilados para tais arquiteturas deveriam ser to eficientes quanto programas escritos em assembly. Estas arquiteturas receberam o nome de arquiteturas para linguagens de alto nvel, ou arquiteturas HLLC (High-Level Language Computer Architectures). As arquiteturas conhecidas como CISC (Complex Instruction Set Computers) so um tipo particular de arquiteturas HLLC. Usaremos aqui o termo arquitetura complexa referindo-se s arquiteturas HLLC em geral e s arquiteturas CISC em particular. Para alcanar o seu objetivo, a abordagem usada nas arquiteturas complexas foi elevar o nvel de funcionalidade do conjunto de instrues. O raciocnio por detrs desta abordagem apresentado a seguir. 7.6.1 Lacuna Semntica 97 Apostila de Arquitetura de Computadores Prof Bruno Uma das caractersticas em uma arquitetura de processador o nvel de funcionalidade do seu conjunto de instrues. Em um conjunto de instrues com alto nvel de funcionalidade, cada instruo realiza um grande nmero de operaes. Ao contrrio, em um conjunto de instrues com baixo nvel de funcionalidade, cada instruo tipicamente executa apenas uma nica operao. A Figura 7.11 mostra um exemplo que esclarece este conceito. Nesta figura, o comando de alto nvel C = A + B implementado usando-se instrues com diferentes nveis de funcionalidade.
ADD A,B,C LOAD A, R1 LOAD B, R2 ADD R1,R2,R3 STORE R3,C instruo com alto nvel de instrues com baixo nvel de funcionalidade funcionalidade Figura 7.11. Comparao entre instrues com alto e baixo nvel de funcionalidade.
O comando A=B+C envolve quatro operaes: carregamento das variveis A e B em registradores, a adio propriamente dita e finalmente o armazenamento do resultado em C. Em um conjunto de instrues com alto nvel de funcionalidade, existe uma instruo de adio que executa todas estas operaes. Por exemplo, a instruo ADD A,B,C acessa diretamente os operandos na memria, realiza a adio e ainda armazena o resultado na memria. Em um conjunto de instrues com baixo nvel de funcionalidade, a instruo de adio realiza apenas uma operao, a adio em si, sobre operandos em registradores. O carregamento dos registradores e o armazenamento do resultado so realizados por instrues adicionais, como mostra a figura. O conceito de nvel de funcionalidade tambm aplicvel linguagens de programao. Linguagens como Pascal e C apresentam um alto nvel de funcionalidade da serem chamadas linguagens de alto nvel. Por exemplo, considere o comando FOR na linguagem C. Cada iterao do FOR envolve (1) o incremento de uma varivel de controle, (2) a comparao do novo valor da varivel de controle com um certo valor limite e (3) um eventual desvio para o incio do loop. Comandos de alto nvel como o FOR possuem um alto nvel de funcionalidade porque a execuo de um nico comando envolve vrias operaes. Linguagens de programao de alto nvel e conjuntos de instrues normalmente apresentam nveis de funcionalidade diferentes. esta diferena entre nveis de funcionalidade foi dado o nome de lacuna semntica (semantic gap). A abordagem usada pelas arquiteturas complexas foi o de elevar o nvel de 98 Apostila de Arquitetura de Computadores Prof Bruno funcionalidade do conjunto de instrues, diminuindo a lacuna semntica. Com isto, procurava-se reduzir o nmero de instrues necessrias na implementao dos comandos de alto nvel. Para ilustrar esta idia, considere o exemplo na Figura 7.12. A Figura 7.12(a) mostra implementao do comando FOR em uma arquitetura com instrues com baixo nvel de funcionalidade. Neste caso, o acesso e decremento da varivel de controle do loop e o desvio condicional exigem quatro instrues. Suponha agora uma arquitetura que oferece uma instruo DBNZ (Decrement and Branch if Not Zero), a qual decrementa um valor em memria e realiza um desvio condicional se o resultado do decremento no nulo. Nesta arquitetura, a implementao do FOR exige apenas uma instruo, ao invs de quatro instrues, como mostra a Figura 7.12(b). for (i = 0; i < 100; i++) { (corpo do loop) }
STORE 100,I STORE 100,I LOOP: . LOOP: . . corpo do loop . corpo do loop . . LOAD I,R1 DBNZ I,LOOP SUB 1,R1,R1 STORE R1,I JNZ LOOP (a) (b) Figura 7.12. Implementao do FOR usando instrues com diferentes nveis de funcionalidade.
Uma arquitetura com uma pequena lacuna semntica, ou seja, com um conjunto de instrues com um alto nvel de funcionalidade, traria dois benefcios. Em primeiro lugar, os programas de alto nvel seriam mais eficientes em termos do espao ocupado na memria, j que a implementao dos comandos de alto nvel 99 Apostila de Arquitetura de Computadores Prof Bruno exigiriam um menor nmero de instrues. Isto aliviaria os problemas decorrentes da limitao na capacidade de armazenamento da memria principal. Em segundo lugar, ao implementar comandos de alto nvel com um menor nmero de instrues, o nmero total de acessos memria para busca de instrues seria tambm menor. Assim, os programas de alto nvel seriam mais eficientes tambm em tempo de execuo. Isto compensaria o desbalanceamento entre a velocidade do processador e da memria principal. 7.6.2 Crticas s Arquiteturas Complexas medida que surgiam novas arquiteturas complexas, vrios estudos foram sendo realizados com o objetivo de avaliar o comportamento destas arquiteturas. Os resultados obtidos apontaram vrias desvantagens na filosofia de aumentar o nvel de funcionalidade das instrues. As principais crticas contra as arquiteturas complexas, formuladas com base nas evidncias fornecidas por estas pesquisas, so as seguintes. Eficincia dos Programas. A primeira crtica levantada contra as arquiteturas complexas a de que o aumento do nvel de funcionalidade das instrues no necessariamente resulta em programas mais eficientes. Como mencionado, uma das vantagens esperadas das arquiteturas complexas seria a reduo no tempo de execuo de programas, conseqncia da substituio de seqncias de instrues simples por uma nica instruo complexa. No entanto, foram observados casos onde isto no verdade. Um exemplo a INDEX, do VAX-11, usada no acesso a vetores. Esta instruo verifica se o ndice do elemento a ser acessado est dentro dos limites do vetor e em seguida calcula o endereo da posio de memria onde est armazenado aquele elemento. Verificou-se que a instruo INDEX poderia ser substituda por uma seqncia de instrues simples que realizariam estas mesmas operaes em um tempo 45% menor. Exemplos como este mostravam que algumas instrues complexas apresentavam um tempo de execuo elevado, s vezes maior que o tempo de execuo de uma seqncia de instrues simples que realiza a mesma tarefa. Utilizao de Instrues. Vrias pesquisas foram realizadas para identificar quais as instrues que apareciam com maior freqncia no cdigo compilado para arquiteturas complexas. Os resultados obtidos revelaram que apenas uma pequena parcela das instrues oferecidas era efetivamente utilizada. Por exemplo, foi observado que dentre as 183 instrues oferecidas pelo IBM 370, apenas 48 formavam a maioria (99%) das instrues executadas por um conjunto de diversos tipos de programas escritos em diferentes linguagens. Alm disso, foi verificado que as instrues mais comuns eram justamente aquelas mais simples. Verificou-se que o alto nvel de funcionalidade na realidade restringe o uso das instrues complexas. Uma instruo complexa se assemelha ou implementa diretamente um comando de alto nvel. Existem vrios comandos em diferentes linguagens de alto nvel que so semelhantes, no sentido que executam uma mesma operao. No entanto, em geral estes comandos diferem em vrios detalhes. Por exemplo, o comando DO na linguagem FORTRAN e o comando FOR na linguagem C so usados para executar a mesma operao, qual seja, um loop. 100 Apostila de Arquitetura de Computadores Prof Bruno No entanto, embora realizem a mesma operao, estes comandos diferem quanto a inicializao, atualizao e teste da varivel que controla a repetio do loop. Diferenas como estas fazem com que comandos funcionalmente equivalentes sejam implementados de maneiras diferentes. Assim, uma instruo complexa semelhante a um comando em uma certa linguagem de alto nvel pode no ser adequada na implementao do comando equivalente em outras linguagens. Na prtica, estas instrues so substitudas por seqncias de instrues simples, com as quais possvel satisfazer exatamente os detalhes de implementao dos comandos em diferentes linguagens, diminuindo a utilizao das instrues complexas. Efeito sobre o Desempenho. Uma das principais crticas contra as arquiteturas complexas que o aumento do nvel de funcionalidade possui um efeito negativo sobre o desempenho. Esta afirmao baseia-se na relao entre o nvel de funcionalidade das instrues e a complexidade de implementao da arquitetura. Em geral, a unidade de controle de uma arquitetura complexa implementada com a tcnica de microprogramao. Em geral, arquiteturas complexas oferecem um nmero elevado de instrues e modos de endereamento. Alm disso, a execuo de uma instruo com alto nvel de funcionalidade envolve a realizao de um grande nmero de operaes bsicas. Devido estas caractersticas, a implementao da unidade de controle usando lgica aleatria torna-se extremamente difcil. Na prtica, a microprogramao a nica alternativa para contornar as dificuldades de implementao de uma arquitetura complexa. Como visto no Captulo 2, a execuo de uma microinstruo envolve (1) a gerao do endereo da microinstruo, (2) o acesso memria de microinstruo e (3) o armazenamento no registrador de microinstruo. Cada um destes passos apresenta um certo retardo. A realizao de cada um destes passos apresenta um certo retardo, que se somam determinando o tempo de execuo da microinstruo. Como uma microinstruo executada a cada ciclo de clock, o tempo de ciclo do clock tambm determinado por estes retardos. Na prtica, os retardos na unidade de controle microprogramada dificultam a reduo do ciclo de clock, limitando assim o desempenho. A questo aqui colocada que nos casos onde os retardos inerentes uma unidade de controle microprogramada contribuem para limitar ou aumentar o tempo do ciclo de clock, a existncia de instrues funcionalmente complexas contribuiria na realidade para reduzir o desempenho.
Existe um ponto em comum por detrs de todas estas crticas contra as arquiteturas complexas: o compromisso entre a funcionalidade da arquitetura (isto , do seu conjunto de instrues) e o seu desempenho. De um lado, por questes de eficincia e flexibilidade, as instrues com alto nvel de funcionalidade so na prtica pouco utilizadas na codificao dos programas de alto nvel. Do outro lado, a 101 Apostila de Arquitetura de Computadores Prof Bruno incluso destas instrues afeta negativamente o desempenho, na medida que implementao da arquitetura exige uma tcnica que pode limitar o ciclo de clock. Assim, o argumento central o de que as arquiteturas complexas apresentam um mau compromisso entre funcionalidade e desempenho, porque paga-se com uma perda no desempenho por uma funcionalidade que no efetivamente utilizada. Foi esta constatao que levou idia de simplificar o conjunto de instrues para obter-se arquiteturas com melhor desempenho. Esta idia discutida a seguir. 7.6.3 A Filosofia RISC As desvantagens das arquiteturas complexas relacionadas acima constituem um dos fatores que motivaram a filosofia RISC (Reduced Instruction Set Computers). Um outro fator foi o rpido avano tecnolgico ocorrido ao longo da dcada de 80. Como visto, as arquiteturas complexas surgiram devido s limitaes na capacidade de armazenamento e no tempo de acesso da memria principal. No entanto, a partir da dcada de 80 verificou-se um aprimoramento significativo na tecnologia de memrias semicondutoras. A capacidade de armazenamento dos dispositivos de memria aumentava rapidamente: a tendncia era de um crescimento na capacidade de armazenamento de 60% ao ano, com uma quadruplicao a cada trs anos. Alm disso, devido ao aperfeioamento dos processos de fabricao e produo em larga escala, havia uma constante diminuio no preo dos dispositivos de memria. Esta queda no preo possibilitava que novos sistemas fossem equipados com uma memria principal cada vez maior. O aumento na capacidade de armazenamento e a queda do preo dos dispositivos de memria praticamente eliminaram as limitaes quanto ao tamanho da memria principal. O desbalanceamento entre a velocidade do processador e a velocidade da memria principal tambm foi atenuada com novos processos de fabricao, mas deixou realmente de ser um fator limitante com a introduo das memrias cache. O novo quadro que existia no incio da dcada de 80 era ento o seguinte. Surgiam evidncias de que instrues complexas no necessariamente contribuam para melhorar o desempenho. Ao mesmo tempo, eram minimizadas as limitaes no tamanho e na velocidade da memria principal. Assim, enquanto eram apontadas desvantagens no uso de instrues com alto nvel de funcionalidade, desapareciam as circunstncias que haviam justificado esta abordagem. Este novo quadro motivou e viabilizou a proposta das arquiteturas RISC. A princpio bsico na filosofia RISC a simplicidade das instrues. Arquiteturas RISC fornecem apenas aquelas instrues simples mais freqentemente usadas na codificao de programas de alto nvel. Uma instruo complexa includa na arquitetura somente se forem satisfeitos dois critrios. Primeiro, a utilizao desta instruo dever ser significativa, ou seja, a instruo dever ser realmente til na codificao de diferentes tipos de programas escritos em diferentes linguagens. Segundo, o ganho final no desempenho dever ser maior do que eventuais perdas no tempo de execuo das instrues simples que ocorram com o acrscimo da instruo complexa. Nos casos em que algum destes 102 Apostila de Arquitetura de Computadores Prof Bruno critrios no atendido, torna-se prefervel a implementao da instruo complexa em software, atravs de uma seqncia de instrues simples. Ao adotar um conjunto de instrues simples, a filosofia RISC procura melhorar o desempenho atravs da diminuio da complexidade de implementao da arquitetura. Se a arquitetura oferece apenas instrues simples, torna-se vivel implementar a unidade de controle usando lgica aleatria no lugar da tcnica de microprogramao. Isto eliminaria os retardos em uma unidade de controle microprogramada, permitindo redues no ciclo de clock e o aumento no desempenho. 7.6.4 Caractersticas das Arquiteturas RISC Ao analisar as arquiteturas RISC hoje existentes possvel identificar vrias caractersticas que so comuns a todas elas. As principais caractersticas das arquiteturas RISC so as seguintes: Implementao com Lgica Aleatria. Esta primeira caracterstica j foi discutida acima. Em arquiteturas RISC, a unidade de controle implementada com lgica aleatria para permitir uma diminuio no tamanho do ciclo de clock. Pipeline de Instrues. Todas as arquiteturas RISC adotam a tcnica de pipelining na execuo de instrues. Com isto, arquiteturas RISC procuram melhorar o desempenho tambm com a reduo do nmero mdio de ciclos por instruo. Arquitetura Registrador-Registrador. Arquiteturas RISC adotam o modelo de arquitetura registrador-registrador. Como visto no Captulo 3, neste tipo de arquitetura os operandos de instrues aritmticas e lgicas encontram-se apenas em registradores. A existncia de instrues aritmticas/lgicas que podem acessar operandos diretamente na memria, como acontece nas arquiteturas complexas, contribui para aumentar a complexidade da unidade de controle. A adoo do modelo registrador-registrador segue o princpio de simplificar a implementao da arquitetura para tornar possvel um menor tempo de ciclo. Regularidade no Formato das Instrues. As instrues em arquiteturas RISC possuem uma codificao altamente regular. Todos os cdigos de instruo possuem o mesmo tamanho, igual ao de uma palavra da memria. Com isto, uma instruo completa pode ser acessada em um nico ciclo (caso ela se encontre na cache), o que importante para manter um fluxo contnuo de instrues atravs do pipeline e simplificar a unidade de controle. Alm disso, a regularidade permite, por exemplo, que os operandos sejam acessados em paralelo com a decodificao do cdigo de operao da instruo. Isto diminui o tempo de decodificao e favorece a diminuio do tempo de ciclo. 7.6.5 Histrico das Arquiteturas RISC Apesar das arquiteturas terem chegado ao mercado somente no final da dcada de 80, a idia RISC surgiu em meados da dcada de 70. Em 1975, um grupo de pesquisa na IBM Yorktown Heights, liderados por John Cocke, 103 Apostila de Arquitetura de Computadores Prof Bruno desenvolveram o IBM 801, que foi na realidade o primeiro sistema baseado em um processador com arquitetura RISC. A arquitetura POWER, usada nos processadores da linha de estaes de trabalho IBM RS/6000 herda algumas caractersticas do IBM 801. No incio da dcada de 80, dois projetos em universidades americanas deram um impulso nas arquiteturas RISC. Na Universidade da Califrnia em Berkeley, um grupo dirigido por David Patterson desenvolveu o RISC I e o RISC II; um outro grupo na Universidade de Stanford, tendo frente John Hennessy, desenvolveu o MIPS. Estes grupos desenvolveram os dois primeiros microprocessadores RISC, e demonstraram na prtica o ganho de desempenho que poderia ser obtido com arquiteturas RISC. Posteriormente, o RISC II deu origem ao microprocessador Sun SPARC, usado nas estaes de trabalho Sun SPARCStation 2. O MIPS deu origem origem famlia de microprocessadores MIPS Rx000, usados nas estaes de trabalho da DEC. Devido s vantagens que apresenta para a implementao e para o desempenho, a filosofia RISC vem sendo adota por praticamente todos os processadores de alto desempenho lanados recentemente. As nicas excees significativas so o Intel 80486 e Pentium (ainda assim, a prpria Intel produz um processador RISC, usado basicamente em aplicaes de engenharia e de processamento cientfico). A Tabela 7.3 relaciona os principais processadores RISC hoje (1994) disponveis comercialmente. Fabricante Processador DEC Alpha AXP 21064 Hewlett-Packard PA7100 IBM RS/6000, PowerPC Intel i860 MIPS R3000, R4000 Motorola M88110, PowerPC Sun SPARC Tabela 7.3. Relao de alguns processadores com arquitetura RISC. 7.7 Sistemas Paralelos At o momento, examinamos arquiteturas de computadores onde existe apenas um processador acoplado a uma memria principal. Um sistema paralelo aquele onde existem vrios processadores e mdulos de memria, que se comunicam atravs de uma certa estrutura de interconexo. Nesta seo fornecemos uma viso geral dos tipos de sistemas paralelos existentes. 104 Apostila de Arquitetura de Computadores Prof Bruno Atualmente, existe uma enorme variedade de sistemas paralelos. Uma das possveis classificaes de sistemas paralelos foi proposta por M. J. Flynn, e mostrada na Tabela 7.4. Denominao Nmero de Fluxos de Instruo Nmero de Fluxos de Dados Exemplos de Sistemas Reais SISD - Single Instruction, Single Data Stream 1 1 Sistemas convencionais Uniprocessadores SIMD - Single Instruction Multiple Data Stream 1 Mltiplos Supercomputadores vetoriais MISD - Multiple Instruction Single Data Stream Mltiplos 1 Nenhum MIMD - Multiple Instruction Multiple Data Stream Mltiplos Mltiplos Multiprocessadores Multicomputadores Tabela 7.4. Classificao de sistemas paralelos, segundo Flynn. A classificao de Flynn se baseia no nmero de fluxos de instruo e de fluxos de dados existentes no sistema. Um fluxo de instruo uma seqncia de instrues endereadas pelo contador de programa de um elemento processador. Se um sistema possui n contadores de programa, este sistema capaz de processar n fluxos de instruo distintos. Um fluxo de dados corresponde a um conjunto de dados que manipulado por um elemento processador. 7.7.1 Sistemas SISD Um sistema SISD possui apenas um fluxo de instruo, e opera sobre um nico fluxo de dados. Este tipo corresponde aos sistemas vistos at agora, onde existe um nico processador. O contador de programa deste processador estabelece o nico fluxo de instrues do sistema.
7.7.2 Sistemas SIMD Um sistema SIMD tambm possui um nico fluxo de instruo, mas opera sobre diversos fluxos de dados. Em um sistema deste tipo, existe um nico contador de programa. Cada instruo endereada por este contador de programa executada em paralelo por diversos elementos processadores, cada elemento operando sobre um dado pertencente a um fluxo de dados diferente. 105 Apostila de Arquitetura de Computadores Prof Bruno Os supercomputadores vetoriais constituem um exemplo de sistema SIMD. O conjunto de instrues de um supercomputador vetorial inclui instrues vetoriais, que realizam a mesma operao sobre mltiplos elementos de um vetor. Por exemplo, um supercomputador vetorial pode oferecer uma instruo VADD que soma, em paralelo, os elementos correspondentes de dois vetores. Supercomputadores vetoriais so normalmente empregados em reas cientficas que exigem altssimo desempenho, tais como fsica nuclear, mecnica de fluidos e de sistemas rgidos, previso meteorolgica, anlise ssmica em prospeco de petrleo, dentre outras. Outra caracterstica destes sistemas o alto preo, que pode atingir centenas de milhes de dlares. Os sistemas Cray-1S, Cray-2S, Cray X-MP e Cray Y-MP, todos da Cray Research, Inc., so exemplos de supercomputadores vetoriais. 7.7.3 Sistemas MISD Neste tipo de sistema, instrues pertencentes a mltiplos fluxos de dados operam simultaneamente sobre um mesmo dado. Na prtica, no existe nenhum tipo de sistema que possa ser considerado de fato como do tipo MISD. 7.7.4 Sistemas MIMD Em um sistema MIMD, existem mltiplos fluxos de instruo, cada um destes fluxos sendo executado por um processador diferente sobre um conjunto de dados diferente. Atualmente, dentro desta classe existem diversas sub-classes de sistemas com diferentes caractersticas. Uma classificao dos sistemas MIMD, proposta por C. G. Bell, mostrada na Figura 7.13. MIMD multiprocessadores multicomputadores memria distribuda memria centralizada
Figura 7.13. Classificao de sistemas MIMD, segundo Bell. Esta classificao est baseada em dois critrios: o nmero de espaos de endereamento vistos pelos processadores e o mecanismo de comunicao entre os processadores. Em um ramo esto os sistemas multiprocessadores, onde os mltiplos processadores do sistema vem e compartilham apenas um nico espao de endereamento lgico. Nestes sistemas, os processadores se comunicam atravs do espao de endereamento compartilhado por todos eles. 106 Apostila de Arquitetura de Computadores Prof Bruno Os sistemas multiprocessadores diferem no modo como a memria lgica implementada fisicamente. Em sistemas com memria compartilhada centralizada (centralized shared-memory) o espao de endereamento implementado sob a forma de um nico mdulo de memria central, acessado por todos os processadores. Em sistemas com memria compartilhada distribuda (distributed shared-memory), o espao de endereamento fisicamente implementado atravs de mltiplos mdulos de memria. Os processadores acessam estes mdulos de memria atravs de uma rede de interconexo. No outro ramo dos sistemas MIMD esto os sistemas multicomputadores. Nestes sistemas, cada processador possui seu prprio espao de endereamento. Estes espaos de endereamento no so compartilhados, ou seja, cada espao de endereamento privativo de um certo processador. Por no haver um compartilhamento de memria, os processadores usam mensagens para comunicarem entre si. Multicomputadores diferem quando sua implementao fsica. Alguns sistemas so formados por mdulos contendo processador e memria, sendo estes mdulos interligados por canais de comunicao formando uma malha, cubo ou anel. Em outros multicomputadores, os componentes do sistema so computadores completos, incluindo processador(es), memria e dispositivos perifricos, interconectados por um meio de comunicao. Redes locais de computadores so exemplos deste tipo de multicomputador. Atualmente, a tendncia em sistemas paralelos segue em duas direes: no ramo dos multiprocessadores, para os sistemas com memria compartilhada distribuda e, dentro dos multicomputadores, para as implementaes distribudas como redes locais de computadores. Isto acontece porque estes dois tipos de sistemas so escalveis. Em um sistema escalvel, o desempenho aumenta (linear ou sub-linearmente) medida que so acrescentados mais processadores. Por exemplo, atualmente existem sistemas com memria compartilhada distribuda maciamente paralelos, formados por milhares de processadores. Estes sistemas possuem um desempenho da mesma ordem dos supercomputadores vetoriais, mas com um preo significativamente menor. Esta melhor relao desempenho-custo dos sistemas maciamente paralelos vem atraindo a ateno de um nmero cada vez maior de pesquisadores e fabricantes.