Anda di halaman 1dari 13

Instituto Superior de Engenharia de Lisboa Licenciatura Engenharia Eletrnica de Telecomunicaes e de Computadores

Projeto Final LEETC Programao Paralela em OCCAM-PI

Relatrio Intercalar

19 de Maio

2012

Realizado por: Rui Alexandre da Silva Miranda, n 32342 Orientado por: Eng Manuel Barata

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


ndice
01.0.Introduo e Enquadramento ................................................................................ 3 01.1.Sistemas Embebidos de Tempo-Real ................................................................. 3 01.2.Programao Paralela ................................................................................................. 3 02.Objetivo do Projeto ........................................................................................................... 4 03.Implementao do Projeto ........................................................................................... 4 04.Calendarizao do Projecto ......................................................................................... 5 05.Arquitetura de Implementao ................................................................................. 6 06.0.OCCAM .................................................................................................................................. 7 06.1.Caractersticas Principais .......................................................................................... 7 06.2.Exemplo ............................................................................................................................... 7 07. Transputer ............................................................................................................................ 8 08.0.PIC32MX460 ..................................................................................................................... 9 08.1.Caractersticas Principais .......................................................................................... 9 08.2.0.Ambiente de Desenvolvimento .......................................................................... 9 08.2.1.Hardware ........................................................................................................................ 9 08.2.2.0.Software ................................................................................................................... 10 08.2.2.a.Desenvolvimento ................................................................................................. 10 08.2.2.b.Compilao .............................................................................................................. 11 08.2.2.c.Carregamento ........................................................................................................ 11 08.2.2.d.Teste ........................................................................................................................... 12 09.Estado do Trabalho ......................................................................................................... 12 10.Bibliografia........................................................................................................................... 13

ndice de Figuras
Figura 1 - Mapa Gantt do Projeto.......................................................................................... 5 Figura 2 - Diagrama da Maquina Virtual OCCAM .................................................................. 6 Figura 3 - FIFO em OCCAM-PI ................................................................................................ 7 Figura 4 - Execuo fifo.tbc ................................................................................................... 8 Figura 5 - Transputer T425 .................................................................................................... 8 Figura 6 - UBW32 ................................................................................................................... 9 Figura 7 - MPLAB IDE ........................................................................................................... 10 Figura 8 - MPLAB C32 Compiler ........................................................................................... 11 Figura 9 - Bootloader ........................................................................................................... 11 Figura 10 Terminal ............................................................................................................ 12

ndice de Tabelas
Tabela 1 - Pormenores da cada uma das tarefas a realizar................................................... 5

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


1. Introduo e Enquadramento
1.1. Sistemas Embebidos de Tempo-Real [1]

Com o exponencial crescimento da indstria de tecnologias mveis nas ltimas dcadas, cada vez mais se d importncia a sistemas embebidos, como por exemplo microcontroladores. Estes sistemas so definidos como sistemas de computao com os recursos estritamente necessrios para executar uma funo especfica. Atualmente o uso de sistemas embebidos praticamente global, tendo aplicaes tanto em ambientes privados como em ambientes empresariais. Ainda no atual panorama tecnolgico cada vez mais so necessrios sistemas de tempo-real, estes sistemas podem ser definidos como sistemas que respondem a eventos externos de forma pronta. Da juno dos dois conceitos descritos anteriormente, surge outro tipo de sistema, o sistema embebido de tempo-real, que abrange os principais aspetos dos outros dois. Os sistemas embebidos de tempo-real tm os mais diversos tipos de aplicaes atualmente, como por exemplo em veculos motorizados, sistemas de telecomunicaes, entre outros.

1.2.

Programao Paralela [4]

Com a introduo de sistemas de tempo-real, vem a necessidade de uma programao mais eficiente no que toca a tempos de execuo, fazendo uso de mltiplas unidades de processamento de um sistema, de sistemas em rede partilhando recursos, ou de ambos, possvel um programa executar varias instrues em simultneo, este modelo de computao designado por programao paralela. Das mais diversas linguagens que suportam programao paralela, temos a OCCAM. Esta linguagem foi desenvolvida em 1980 por uma equipa da INMOS como linguagem nativa do seu microprocessador Transputer, e baseada na teoria de T. Hoare, CSP (Communicating Sequential Process). Uma das principais funcionalidades desta linguagem a concorrncia entre processos e comunicao entre eles. A gesto da concorrncia entre processos feita atravs da comunicao entre os mesmos atravs de canais sncronos. A universidade de KENT deu continuidade ao estudo e aplicao do OCCAM, evoluindo para o OCCAM-PI. Mantendo assim ativo este paradigma de programao que para alm de poder ser executado por um processador, pode tambm ser usado para programar arquiteturas com vrios ncleos processadores, ou at mesmo ser diretamente compilada para execuo em hardware programvel (e.g. FPGA). Atualmente existem disponveis vrias ferramentas para desenvolver e testar programas OCCAM, sendo estas cdigo aberto e livre. Uma delas o TRANSTERPRETER que utilizando uma mquina virtual emula um processador que executa cdigo compilado do OCCAM. O cdigo dessa mquina virtual simples e passvel de ser migrado para execuo em qualquer processador de 8, 16 ou 32 bit.

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


2. Objetivo do Projeto
Este projeto tem como objetivo a criao de uma mquina virtual, e todos os seus recursos subjacentes, para que seja possvel correr um programa OCCAM-PI sobre um microcontrolador da famlia PIC32. Com isto pretendese a desambiguao do hardware em relao linguagem do software, alcanando assim um nvel de portabilidade e eficincia superior num sistema embebido de tempo-real. O objetivo mais tctil do projeto ser execuo de uma aplicao de demonstrao, na mquina virtual implementada no Kit com um microcontrolador PIC32.

3. Implementao do Projeto

[3]

Existem duas maneiras de implementar a mquina virtual: traduzindo diretamente para o cdigo ASM do processador alvo, ou ento implementar um simulador das instrues da mquina virtual. Neste projeto, por se tratar de uma abordagem exploratria, vai-se optar pela adoo da verso com instrues simuladas/interpretadas. Adicionalmente tambm necessrio desenvolver uma pequena biblioteca de interface entre o programa e os aspetos de I/O especficos do processador a utilizar. A mquina virtual ser desenvolvida para operar sobre o microcontrolador PIC32MX460, mas o desenvolvimento ser com vista a poder migrar para qualquer outro processador.

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


4. Calendarizao do Projeto

Figura 1 - Mapa Gantt do Projeto

Tabela 1 - Pormenores da cada uma das tarefas a realizar

Tarefa Nome da Tarefa n

Durao

Inicio

Fim

Tarefas % Prec. Completa

1 2 3 4 5

7 8 9 10 11

Estudo OCCAMP-PI 32 dias? 19-12-11 13-01-12 100% Estudo Transputer 38,4 dias? 16-01-12 17-02-12 1 100% Estudo PIC32MX460 70,4 dias? 23-02-12 24-04-12 18% Estudo TVM 70,4 dias? 23-02-12 24-04-12 1;2 18% Desenho do cdigo nativo de interface com o hardware do 48 dias? 25-04-12 05-06-12 3;4 0% processador Migrao da mquina virtual executora do cdigo gerado no 33,6 dias? 06-06-12 04-07-12 4;5 0% microcontrolador Desenho de uma aplicao de 8 dias? 05-07-12 11-07-12 4;5;6 0% demonstrao Elaborao da pgina Web do 11,2 dias? 12-07-12 20-07-12 7 0% Projecto Elaborao Relatrio Inicial 3,2 dias? 07-03-12 09-03-12 100% Elaborao Relatrio 72 dias? 15-03-12 16-05-12 9 29% Progresso/Intercalar Elaborao do Relatrio Final 75,2 dias? 17-05-12 20-07-12 10;9 29% Notas: A durao de cada tarefa no passa de uma estimativa.

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


5. Arquitetura de Implementao

Figura 2 - Diagrama da Maquina Virtual OCCAM

Como est representado na Figura 2 - Diagrama da Maquina Virtual OCCAM, a implementao da Maquina Virtual de OCCAM ser dividida em 2 mdulos principais: Loader, Descodificador de programas OCCAM-PI, que recebe os ficheiros executveis OCCAM-PI (cdigo j compilado e linkado com as bibliotecas de runtime do OCCAM-PI) e descodifica para instrues simuladas do processador alvo, PICMX32. HAL (Hardware Abstraction Layer), Interface de interligao com o PICMX32, esta interface ser constituda pelas bibliotecas de interao das instrues simuladas do descodificador com as funcionalidades do microprocessador.

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


6. OCCAM
6.1. Caractersticas Principais [6]
O modelo OCCAM permite a concorrncia, mais especificamente, o verdadeiro paralelismo em multiprocessadores, ou paralelismo simulado num nico processador atravs da tcnica de Time-Slicing, este segundo ser o utilizado para implementar a mquina virtual no PICMX32, visto que este possui um nico processador de 32bits. O paralelismo OCCAM ao nvel da instruo, isto significa que sem indicao contrria, cada instruo interpretada como um processo, podendo ser executada em concorrncia com outras. A comunicao entre processos concorrentes feita atravs de canais sncronos, ou seja, quando dois processos partilharem um canal sempre que um chegar a uma localizao do cdigo onde l de um canal esse mesmo processo aguarda at que o outro escreva no mesmo canal, e assim transferem informao entre si.

Para a investigao da Linguagem OCCAM, mais especificamente da ultima verso OCCAM-PI, e das suas funcionalidades foram feitos vrios testes e experimentaes atravs de um programa emulador de OCCAMPI/Transputer, Transterpreter[7] . De um dos programas de teste feitos destaca-se a implementao de uma Lista FIFO atravs da Linguagem OCCAM-PI, funcionamento descrito na Figura 3 - FIFO em OCCAM-PI.

6.2.

Exemplo

Figura 3 - FIFO em OCCAM-PI

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


Para teste da lista FIFO, lido um carcter do teclado e colocado no canal de entrada da FIFO, aps um delay, consumido o carcter no canal de sada, resultando da execuo deste programa de teste na Figura 4 - Execuo fifo.tbc.

Figura 4 - Execuo fifo.tbc

7. Transputer

[5]

Nos anos 80 a companhia de semicondutores INMOS produziu o Transputer (Figura 5 - Transputer T425), um inovador microprocessador de alta performance desenhado para computao paralela. Este processamento paralelo conseguido atravs de 4 canais srie integrados, que permitem a ligao dos microprocessadores entre si. Neste contexto surge a linguagem OCCAM, desenhada especificamente para programar no Transputer, com uma ligao muito mais forte ao Hardware do que linguagens como C ou Pascal em relao aos processadores de arquitectura CISC (Complex Instruction Set Computer).

Figura 5 - Transputer T425

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


8. PIC32MX460
8.1. Caractersticas Principais [8][9]

O PIC32MX460 um microcontrolador da famlia PIC32, este dispositivo permite uma velocidade de processamento superior a 80 DMIPS (Dhrystone Million of Instruncions per Second) e tem uma grande variedade de perifricos integrados. Uma caracterstica especfica da famlia PIC32MX facilidade de migrao da aplicao, que tem todo o seu interesse num projeto deste mbito. Uma das configuraes programticas do microcontrolador de extrema importncia para a implementao da mquina virtual ser a diretiva #pragma, que permite transmitir ao processador definies de configurao usadas pela aplicao. Tambm os Interrupts tradicionais do PIC32 sero utilizados na gesto dos time-slices, para simular o paralelismo nativo da linguagem OCCAM-PI.

8.2.

Ambiente de Desenvolvimento Hardware [8][10][11]

8.2.1.

O Kit de desenvolvimento a utilizar para a implementao da mquina virtual de OCCAM no PIC32MX460, ser o UBW32 (Figura 6 - UBW32). Este Kit permite a ligao via USB ao computador, por onde possvel carregar os programas desenvolvidos e ainda receber/enviar input/output para o PIC32MX460. Contem 2 botes e 3 LEDs, programveis pelo utilizador, como tambm todos os Pinos I/O do PIC32MX460F512L.

Figura 6 - UBW32

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


8.2.2. Software [9]
O ciclo de desenho de cdigo para a mquina virtual OCCAM-PI ser composto pelos seguintes passos: a) Desenvolvimento O IDE utilizado para o desenho de todo cdigo e bibliotecas C, tanto para o interpretador de OCCAM-PI (Loader da Figura 2 - Diagrama da Maquina Virtual OCCAM) como para a interface com o hardware do microcontrolador (HAL da Figura 2 - Diagrama da Maquina Virtual OCCAM), ser o MPLAB v8.63 (Figura 7 - MPLAB IDE) da Microchip[12].

Figura 7 - MPLAB IDE

10

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


b) Compilao [13] Este IDE tem integrado um compilador C32 (Figura 8 - MPLAB C32 Compiler), esta integrao permite uma agilidade no processo de escrita de cdigo C para o PIC32 e compilao do mesmo. Este compilador permite referncias diretas s bibliotecas de perifricos do PIC32, que permitem a chamada a funes built-in do PIC32 (ex: Funes de Interrupo, Funes de Timer, etc), e tambm a macros como pragma e outras. Das vrias opes que se podem acrescentar ao comando de compilao do programa, de notar a opo "mno-float", que indica ao compilador que no sero utilizadas bibliotecas de floating-point, esta ser uma opo de simplificao na implementao da mquina virtual de OCCAM-PI.

Figura 8 - MPLAB C32 Compiler

c) Carregamento Para carregamento do cdigo compilado no PIC, utilizado o Bootloader da Microchip (Figura 9 - Bootloader), que permite o carregamento via USB.

Figura 9 - Bootloader

11

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


d) Teste Finalmente como aplicao para suporte aos Testes, ser usado o HyperTerminal do Windows (Figura 10 Terminal), que permite interao I/O com o PIC32 via USB. O Terminal ser de extrema importncia no desenvolvimento, isto porque apenas se poder recorrer a printfs como forma de Debug.

Figura 10 Terminal

9. Estado do Trabalho
Como pode ser visto na Figura 1 - Mapa Gantt do Projeto, j se encontra concludo todo o estudo da Linguagem OCCAM-PI, PIC32MX460, e das bibliotecas C dos perifricos do PIC32 [13]. Correntemente est a ser feito e estudo da TVM j existente para POSIX, em paralelo feita a adaptao/implementao do Loader (Figura 2 - Diagrama da Maquina Virtual OCCAM) e a implementao, de raiz, do HAL (Figura 2 - Diagrama da Maquina Virtual OCCAM). Nesta altura era previsto j estar o Loader concludo, e estar a meio da implementao da HAL. Contudo, salvaguardando alguma exceo devido ao cariz exploratrio deste Projeto, possvel garantir que os prazos do Projeto sero respeitados.

12

Projeto Final LEETC - Programao Paralela em 2012 OCCAM-PI


10. Bibliografia
[1] [2] [3]

[4] [5] [6]

[7] [8] [9] [10] [11]

[12] [13]

Qing Li e Carolyn Yao (2003). Real-Time Concepts for Embedded Systems. CMP Books INMOS Limited (1998). OCCAM 2, Reference Manual. Prentice Hall Eng Manuel Barata (2011). Documento de Proposta do Projecto (P8). http://moodle.isel.pt/deetc/file.php/1398/LEETC_lista_de_projectos-_Projecto_2010_2011.pdf (sitio acedido em 05/2011) OCCAM-PI. Universidade de Kent. http://www.cs.kent.ac.uk/projects/ofa/kroc/ (sitio acedido em 05/2011) Transputer. Michael Brstle. http://www.transputer.net/welcome.asp (sitio acedido em 05/2011) Department of Computer, Science Bucknell University (1995). Introduction to the Programming Language OCCAM. Dr. Daniel, C. Hyde. The Transterpreter Project. http://www.transterpreter.org/ (sitio acedido em 05/2011) Microchip Technology Inc (2008), Getting Started with PIC32 Users Guide. Microchip Technology Inc (2007), MPLAB C32 User Guide Microchip Technology Inc (2008), PIC32MX3XX/4XX Family Data Sheet UBW32 Schmalzhaus http://www.sparkfun.com/products/8971 (sitio acedido em 05/2011) http://www.schmalzhaus.com/UBW32/ (sitio acedido em 05/2011) Microship http://www.microchip.com/ (sitio acedido em 05/2011) Microchip Technology Inc (2007), PIC32 Peripheral Libraries for MPLAB C32 Compiler

13

Anda mungkin juga menyukai