Universidade de Evora´ Escola de Ciencias^ e Tecnologia Mestrado em Engenharia Inform´atica Disserta¸c~ao Simulador para Arquitectura MIPS32 David Jo~aoDomingues Rodrigues Maia Orientador Miguel Jos´eSim~oesBar~ao Mar¸code 2013 Mestrado em Engenharia Inform´atica Disserta¸c~ao Simulador para Arquitectura MIPS32 David Jo~aoDomingues Rodrigues Maia Orientador Miguel Jos´eSim~oesBar~ao Quero dedicar este modesto trabalho aos meus tr^esav´os,que j´apartiram para um lugar melhor. A Jos´eJo~aoPedro da Con- cei¸c~aoBelezas, uma vez que nasceu com ele a minha vontade de estudar engenharia e a Jos´eda Costa Maia e Ant´onioAugusto Nu- nes Domingues que sempre foram uma ins- pira¸c~aoem tempos dif´ıceis. Sum´ario A virtualiza¸c~aode sistemas ´ecada vez mais utilizada no mundo inform´atico. O seu em- prego acarreta in´umerasvantagens, sendo que, em alguns casos, permite atingir melhor desempenho relativamente a uma m´aquinanativa. Esta tese prop~oeum modelo de implementa¸c~aode um simulador da arquitectura MIPS32 utilizando a linguagem de programa¸c~aoC, sendo as aplica¸c~oesde teste desenvolvidas uti- lizando a linguagem assembly MIPS. E´ objectivo recriar os primeiros passos no processo de virtualiza¸c~aode sistemas, assim como possibilitar a instala¸c~aode um minissistema operativo, baseado na fam´ılialinux, no simulador. Para tal, ser´anecess´arioreproduzir o comportamento de v´arios dispositivos f´ısicos, tais como o disco r´ıgido, interface de rede, TLB, cache, rato, teclado e monitor. Embora estes sejam dispositivos desej´aveis, apenas o processador e a mem´oriaRAM s~aocomponentes fulcrais ao funcionamento do simulador. De forma a respeitar os requisitos m´ınimosda arquitectura ser~aoimplementados todos os mecanismos necess´arios, nomeadamente, coprocessadores, modos de opera¸c~ao,registos gen´ericose registos do coprocessador central, unidade de gest~aode mem´oria,mecanismo de tradu¸c~aode endere¸cos,sistema de excep¸c~oese sistema de interrup¸c~oes. i Simulator for the MIPS32 Architecture Abstract Virtualization systems are increasingly used in the computer world. Their use brings numerous advantages and, in some cases, allows to achieve better performance compared to a native machine. This thesis proposes an implementation model of a simulator for MIPS32 architecture using the C programming language and the test applications developed using the MIPS assembly language. The aim is to recreate the first steps in the process of virtualization systems, as well as to enable the installation of a Linux-based mini operating system in the simulator. This will need to reproduce the behavior of several physical devices such as hard disk, network interface, memory management unit including a translation lookaside buffer (TLB), cache, mouse, keyboard, monitor. Although these devices are desirable, only the processor and main memory RAM are key components to the operation of the simulator. In order to meet the minimum requirements of the architecture, all the necessary me- chanisms will be implemented including coprocessors, operating modes, generic registers and records of the central coprocessor, memory management unit, address translation mechanism and the exception and interruption systems. iii Pref´acio Este documento cont´ema disserta¸c~aointitulada \Simulador para a Arquitectura MIPS32", entregue em Outubro de 2012 no ^ambito do Mestrado em Engenharia Inform´aticado autor David Jo~aoDomingues Rodrigues Maia1, na Universidade de Evora,´ em Portugal. O autor ´eLicenciado em Engenharia Inform´atica,tamb´empela Universidade de Evora.´ Actualmente ´eadministrador de sistemas de informa¸c~aona empresa Deloitte, BPAS - AMS, em Portugal. O orientador deste trabalho ´eo Professor Doutor Miguel Jos´eSim~oesBar~ao2, Professor auxiliar no Departamento de Inform´aticada Universidade de Evora.´ [email protected] [email protected] v Agradecimentos Com o desenvolvimento do trabalho final de Mestrado culmina uma importante fase na vida de qualquer estudante. Desta forma, gostaria de dedicar umas palavras de apre¸co a um conjunto de pessoas, que directa ou indirectamente, ajudaram no desenvolvimento do presente trabalho. Aos meus pais e irm~ao,um grande agradecimento pelo amor incondicional, assim como pelo enorme esfor¸coe sacr´ıficosfeitos ao longo desta fase, sem os quais nada disto seria poss´ıvel. Muito obrigado Pai, M~aee Jo~ao! Quero agradecer ao meu orientador, Professor Miguel Bar~ao,pelo incessante apoio, com- preens~aoe claramente pela disponibilidade demonstrada ao longo do desenvolvimento de todo o trabalho. Muito obrigado professor Miguel Bar~ao! Gostaria de agradecer especialmente `aminha namorada Renata Carmona, pelo constante apoio e dedica¸c~aono desenvolvimento da disserta¸c~ao,sem o qual n~aoteria sido poss´ıvel a entrega a tempo. Um muito obrigado e um beijo especial! Aos meus colegas e amigos, Daniel Quina, Alexandre Cabo, Laura Sim~oes, Nelson Dias e Hugo Teodoro, gostaria de agradecer pelo incentivo, conselhos e pela troca de ideias, muito importantes na resolu¸c~aode problemas, assim como pelo suporte no desenvolvi- mento pr´atico.Obrigado a todos! vii Nota¸c~aoe s´ımbolos jj Concatena¸c~aode bits numa palavra de 32 bits. xy..z Selec¸c~aodos bits desde y at´ez da palavra de 32 bits X. 0bn Valor da constante n em base 2. (Bin´ario) 0xn Valor da constante n em base 16. (Hexadecimal) OR Opera¸c~aoL´ogicaOR AND Opera¸c~aoL´ogicaAND XOR Opera¸c~aoL´ogicaXOR NOR Opera¸c~aoL´ogicaNOR USEG Espa¸code mem´oriavirtual mapeada destinado ao modo de opera¸c~ao user. KSEG0 Espa¸code mem´oriavirtual n~aomapeada com utiliza¸c~aode cache destinado ao modo de opera¸c~ao kernel. Este segmento aponta para os primeiros 512 Bytes na mem´oriaRAM. KSEG1 Espa¸code mem´oriavirtual n~aomapeada sem utiliza¸c~aode cache destinado ao modo de opera¸c~ao kernel. KSSEG Espa¸code mem´oriavirtual mapeado destinado ao modo de opera¸c~ao superuser e kernel. KSEG3 Espa¸code mem´oriavirtual mapeada destinado ao modo de opera¸c~ao kernel. CP0..3 Coprocessador 0 ... 3 SEL Vari´avel utilizada pelo processador para identificar o sub registo associado ao registo interno do CP0. ix Acr´onimos ALU Arithmetic Logic Unit CISC Complex Instruction Set Computer CPU Central Processing Unit ELF Executable Linkable Format FMT Fixed Map Translation FPU Floating Point Unit GPR General Purpose Register GPT Global Page Table IF Instruction Fetch IPC Inter Process Communication ISA Instruction Set Architecture LSB Least Significant Byte MEM Memory MIPS Microprocessor without Interlocked Pipeline Stages MMU Memory Management Unit MSB Most Significant Byte xi xii PC Program Counter PFN Physical Frame Number PRA Privileged Resource Architecture PTB Page Table Base PTE Page Table Entry PTL Page Table Limit RAM Random Access Memory RISC Reduced Instruction Set Computer ROM Read Only Memory RD Read Registers TLB Translation Lookaside Buffer VPN Virtual Page Number VMM Virtual Machine Monitor WB Write Back Conte´udo Sum´ario i Abstract iii Pref´acio v Agradecimentos vii Nota¸c~aoe s´ımbolos ix Acr´onimos xii 1 Introdu¸c~ao1 1.1 Enquadramento e Motiva¸c~ao.........................1 1.2 Objectivos....................................3 2 Estado da Arte e Conceitos Envolvidos5 2.1 Virtualiza¸c~aode Sistemas...........................5 2.2 T´ecnicasde tradu¸c~aoe compila¸c~aode instru¸c~oes.............. 13 2.3 Comunica¸c~aoentre processos (IPC)...................... 16 2.3.1 Named e Unnamed Pipes....................... 16 2.4 Executable and Linkable Format (ELF)................... 18 2.4.1 Organiza¸c~aode ficheiros ELF..................... 18 xiii xiv CONTEUDO´ 2.4.2 Interpreta¸c~aode ficheiros ELF.................... 22 3 Sistema Proposto 25 3.1 Apresenta¸c~ao.................................. 25 3.1.1 O que se pretende........................... 26 3.1.2 Metodologias.............................. 28 3.2 Arquitectura.................................. 30 3.2.1 M´odulosdo Sistema.......................... 31 3.2.2 Plataforma de desenvolvimento.................... 33 4 M´odulos 35 4.1 Processador................................... 36 4.1.1 Modos de Execu¸c~ao.......................... 39 4.1.2 Endianness............................... 42 4.1.3 Interpreta¸c~aode c´odigom´aquina................... 45 4.1.4 Pipelines................................ 52 4.1.5 Coprocessadores............................ 57 4.1.6 Registos Gen´ericos........................... 57 4.1.7 Registos do Coprocessador Central.................. 59 4.1.8 Mecanismo de Excep¸c~oes....................... 72 4.2 Unidade de Gest~aode Mem´oria(MMU)................... 92 4.2.1 Mem´oriaVirtual............................ 92 4.2.2 Pagina¸c~ao................................ 95 4.2.3 Simula¸c~aoem Software........................ 100 4.3 Mecanismo de Tradu¸c~aode Endere¸cos(TLB)................ 104 4.3.1 Interface de comunica¸c~aoMMU/TLB................ 105 4.3.2 Instru¸c~oesde controlo MMU/TLB.................. 109 4.3.3 TLB Flush vs ASID's......................... 110 4.3.4 Excep¸c~oesda TLB........................... 112 4.3.5 Simula¸c~aoem Software........................ 116 4.4 Mem´oriasRAM e ROM............................ 121 4.4.1 Simula¸c~aoem Software........................ 123 CONTEUDO´ xv 4.5 Simulador UE.................................. 127 4.5.1 Carregamento e arranque do sistema................. 127 4.5.2 Execu¸c~ao................................ 133 4.5.3 T´ermino de Execu¸c~ao......................... 134 5 Utiliza¸c~aodo Sistema 137 5.1 Interface e funcionamento........................... 138 5.2 Demonstra¸c~oes................................
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages224 Page
-
File Size-