Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Captulo 4
MARIE - uma Arquitectura Simples
Captulo 4 - Objectivos
conhecer os componentes comuns a todos os sistemas de computao actuais ser capaz de explicar o contributo de cada componente para a execuo de programas compreender uma arquitectura simples criada para ilustrar conceitos bsicos entender o processo de gerao de cdigo mquina a partir de cdigo assembly
2
4.1 Introduo
em Sistemas Digitais apresentou-se a forma como os dados so armazenados e manipulados por alguns componentes de um sist. de computao e descreveram-se componentes fundamentais dos circuitos digitais no captulo 1 foi apresentada uma viso geral dos sistemas de computao agora possvel compreender como os componentes de um computador operam e como so integrados para criar sistemas de computao poderosos
3
4.1 Introduo
- Organizao e Componentes Bsicos da CPU
a CPU de um computador l, descodifica e executa instrues de programas as duas principais partes de uma CPU so 1) o caminho de dados (datapath) e 2) a unidade de controlo
o datapath constitudo por uma unidade lgico-aritmtica e por unidades de armazenamento (registos) interligados por um barramento de dados que tambm interliga com a memria principal vrios componentes da CPU executam operaes sequencialmente, de acordo com as indicaes da unidade de controlo
4
4.1 Introduo
- Organizao e Componentes Bsicos da CPU
registos so unidades de armazenamento especiais:
localizadas na CPU de pequena capacidade (16, 32, 64 bits) de acesso muito rpido implementveis atravs de flip-flops D um registo de 32 bits exige 32 flip-flops D em nmero varivel conforme a arquitectura / CPU esse nmero tipicamente potncia 2 com funes variadas genricos, s dados, s endereos, info. de controlo
5
4.1 Introduo
- Organizao e Componentes Bsicos da CPU
unidade lgico-aritmtica (ALU):
executa operaes lgicas (e.g., comparaes, ...) ... ... e aritmticas (e.g., adies, multiplicaes, ...) ... ... s ordens da unidade de controlo em geral, tem duas entradas e uma sada as operaes afectam um registo de estado (e.g., overflow)
unidade de controlo:
fetch da instruo referenciada pelo registo Program Counter decode da instruo, incluindo fetch de operandos instrui/programa a ALU para a execuo (execute) da instruo monitoriza o registo de estado e salvaguarda os resultados
6
10
o tempo pode ser melhorado reduzindo o nmero de instrues do programa, o nmero de ciclos gastos por cada instruo o nmero de segundos gastos num ciclo do relgio
esta equao ser posteriormente analisada em maior profundidade
13
4.1 Introduo
- Organizao e Endereamento da Memria
a memria de um computador corresponde a um vector (array) linear de clulas de armazenamento, (similares a registos), c/ endereos inteiros (s/ sinal)
a memria pode ser enderevel ao byte ou palavra (uma palavra so 2 ou mais bytes)
15
4.1 Introduo
- Organizao e Endereamento da Memria
a memria baseia-se em vrios mdulos e estes so constitudos por um ou mais chips quer a memria, quer os mdulos e chips, so referenciados pela notao altura x largura exemplo: memria 32K x 16, custa de 16 mdulos de 2K x 16, realizados com pares de chips 2K x 8
16
4.1 Introduo
- Organizao e Endereamento da Memria
exemplo (continuao):
32K palavras necessitam de endereos de log2(32K) = 15 bits 15 bits = 4 + 11 bits: 16 mdulos necessitam de log2(16) = 4 bits cada mdulo necessita de log2(2K) = 11 bits
17
4.1 Introduo
- Organizao e Endereamento da Memria
a sequncia de bits de um endereo de memria pode-se subdividir em duas subsequncias contguas
uma, que indica o mdulo onde o endereo foi mapeado outra, que indica a posio (deslocamento) no mdulo
por seu turno, os endereos de memria podem ser mapeados pelos vrios mdulos de duas maneiras:
High-Order Interleaving: os bits mais significativos do endereo especificam o mdulo, e os bits menos significativos indicam o deslocamento dentro do mdulo Low-Order Interleaving: os bits menos significativos do endereo especificam o mdulo, e os bits mais significativos indicam o deslocamento dentro do mdulo
18
4.1 Introduo
- Organizao e Endereamento da Memria
High-Order Interleaving (exemplo): capacidade da RAM: 32 bytes => endereos de log2(32) = 5 bits nmero de mdulos: 8 => log2(8) = 3 bits para definir o mdulo sobram 5 3 = 2 bits para enderear o interior de cada mdulo
19
4.1 Introduo
- Organizao e Endereamento da Memria
Low-Order Interleaving (exemplo): capacidade da RAM: 32 bytes => endereos de log2(32) = 5 bits nmero de mdulos: 8 => log2(8) = 3 bits para definir o mdulo sobram 5 3 = 2 bits para enderear o interior de cada mdulo
20
4.1 Introduo
- Organizao e Endereamento da Memria
Caractersticas Funcionais:
High-Order Interleaving
como os endereos de memria so mapeados sequencialmente pelos vrios mdulos, o acesso s posies (palavras) de um mdulo serializado (em sequncia) excepo: com mltiplos processadores, cada CPU pode aceder de forma independente a um mdulo, permitindo acesso simultneo aos vrios mdulos pelos vrios CPUs Low-Order Interleaving os endereos de memria so mapeados rotativamente pelos vrios mdulos, permitindo acesso simultneo aos vrios mdulos por um mesmo processador (e.g., acesso sequencial a um vector espalhado por vrios mdulos)
21
4.2 MARIE
muitos dos conceitos j introduzidos podem ser melhor compreendidos com um modelo bsico de computador
o computador MARIE (Machine Architecture that is Really Intuitive and Easy) foi desenhado com o propsito de ilustrar conceitos bsicos dos sistemas de computao apesar de o MARIE ser demasiado simples para fazer qualquer coisa de til no mundo real, o estudo das suas funcionalidades permitir compreender melhor as vrias arquitecturas de sistemas de computao reais ...
23
25
27
29
4.2 MARIE
- Arquitectura do Conjunto de Instrues
a arquitectura do conjunto de instrues (ISA) de um computador especifica o formato das suas instrues e as operaes primrias que a mquina pode fazer
a ISA o interface entre o hardware e o software certas ISAs incluem centenas de instrues diferentes a ISA MARIE inclui apenas 13 instrues:
9 instrues fundamentais (a apresentar j a seguir) 4 instrues complementares (a ver posteriormente)
30
4.2 MARIE
- Arquitectura do Conjunto de Instrues
formato de uma instruo MARIE: as instrues MARIE fundamentais so:
31
4.2 MARIE
- Arquitectura do Conjunto de Instrues
padro de bits da instruo LOAD no registo IR:
32
4.2 MARIE
- Arquitectura do Conjunto de Instrues
padro de bits da instruo SKIPCOND no registo IR:
o opcode 8 os bits nas posies 11 e 10 formam a sequncia 10 o que significa que a prxima instruo no ser executada se o valor do registo AC for > 0
qual a representao hexadecimal desta instruo?
33
4.2 MARIE
- Linguagem de Transferncia de Registos
cada instruo consiste numa sequncia de instrues mais bsicas: micro-operaes a sequncia exacta de micro-operaes despoletada por uma instruo pode ser descrita em RTL
RTL : register transfer language M[X] : valor armazenado na posio de memria X : simboliza a transferncia de bytes para um registo ou para uma dada posio de memria
34
4.2 MARIE
- Linguagem de Transferncia de Registos
descrio de LOAD em RTL:
MAR X MBR M[MAR], AC MBR
4.2 MARIE
- Linguagem de Transferncia de Registos
sabendo que SKIPCOND avana a prxima instruo em funo do valor de AC, a descrio em RTL :
If IR[11 - 10] = 00 then If AC < 0 then PC PC + 1 else If IR[11 - 10] = 01 then If AC = 0 then PC PC + 1 else If IR[11 - 10] = 10 then If AC > 0 then PC PC + 1
decode
38
diagrama de traagem (trace): descreve com pormenor o que se passa na CPU durante a execuo
39
40
41
4.5 Assemblers
as mnemnicas assembly, tal como LOAD 104, so fceis de escrever e compreender pelos humanos ... ... mas no so inteligveis para o computador os assemblers traduzem mnemnicas (instrues compreensveis para os humanos) em linguagem mquina (compreensvel para os computadores)
note-se a diferena entre assembler e compilador: no mundo dos assemblers existe uma correspondncia de um-para-um entre mnemnicas e cdigo mquina; nos compiladores, normalmente, isso no acontece
43
4.5 Assemblers
criam, em dois passos, um ficheiro de cdigo objecto a partir das mnemnicas do cdigo fonte passo 1: traduzir o mximo de mnemnicas que se conseguir e construir uma tabela de smbolos que contm referncias de memria (endereos) para todos os smbolos que aparecem no programa passo 2: o cdigo mquina completado usando os valores (endereos) da tabela de smbolos
44
4.5 Assemblers
considere-se o programa apresentado direita
notar o uso de directivas (HEX e DEC) que especificam a base de representao das 3 constantes
45
4.5 Assemblers
aps o passo 2, o cdigo mquina fica completo :
o endereo do operando faz parte da instruo a instruo inclui o endereo do endereo do operando uma situao semelhante utilizao de apontadores
47
// exemplo 4.2 int a[5]={10,15,20,25,30}; int sum=0, i=0; while (i<5) { / sum = 0 sum = sum + a[i]; / i = 0 i = i + 1; } printf(%d, sum); / check if i < 5
ArrayBaseAddress ArrayCellIndex ArrayCellAddress / new address of a[i] Sum ArrayCellAddress Sum / sum = sum + a[i] ArrayCellIndex One ArrayCellIndex Loop Dec Dec Dec / i++ Dec Dec ArrayBaseAddress, Hex ArrayCellAddress, Hex ArrayCellIndex, Dec Sum, Dec One, Dec Five, Dec
10 15 20 25 30 114 114 0 0 1 5
/ / / / / / / / / / /
a[0] a[1] a[2] a[3] a[4] address of a[0] address of a[i] index i sum constant 1 49 constant 5
ORG 100
Load X Store Num JnS Twice Load Res Store X Output Load Y Store Num JnS Twice Load Res Store Y Output Halt Twice, Hex Load Add Store JumpI 0 Num Num Res Twice
/ end program / / / / / place to store return address AC = Num AC = AC + Num = Num + Num = 2 * Num Res = 2 * Num return to calling code X, Y, Num, Res, Dec Dec Dec Dec 20 48 0 0
52
no mundo real, existem variadssimas arquitecturas ... ... mas a arquitectura Intel (arquitectura CISC) e a MIPS (arquitectura RISC) so em si representativas
CISC (complex instruction set computer): grande nmero de
instrues, de dimenso varivel e de funcionalidade complexa; RISC (reduced instruction set computer): pequeno nmero de instrues, de dimenso fixa e de funcionalidade simples; cada instruo executa rapidamente, mas os programas so maiores
56
o 8086 no tinha unidade de vrgula flutuante ... em 1980, a Intel lanou o co-processador matemtico 8087, que podia ser instalado com o processador 8086
59
o 80486, introduzido em 1989, era um 80386 que tinha unidade de vrgula flutuante e memria cache o 80386 e 80486 eram compatveis com o 8086 e 8088
o software desenvolvido para o 8086 apenas usa os 16 bits menos significativos dos registos de 32 bits do 80386 e do 80486
60
4.9 Concluses
os principais componentes de um sistema de computao so a unidade de controlo, os registos, a memria, a ALU e o datapath um relgio mantm tudo sincronizado as unidades de controlo podem ser microprogramadas ou em hardware (hardwired) as unidades de controlo em hardware tm melhor desempenho, enquanto que as microprogramadas so mais adaptveis
64
4.9 Concluses
os computadores executam programas obedecendo a ciclos fetch-decode-execute os computadores executam programas que se encontram expressos em linguagem mquina um assembler converte mnemnicas em linguagem assembly para linguagem mquina a arquitectura Intel uma arquitectura CISC e a arquitectura MIPS uma arquitectura RISC
65