Monday, October 25, 2010

Stageupdateje

Hey!

Ik ben net terug van mijn stage en ik dacht, goed moment om een keer wat te schrijven over mijn stage zelf.

Zoals de meeste van jullie wel weten ben ik bezig met een priem-getal generator. Er bestaat een software-versie van en die ben ik in hardware aan het bouwen zodat het allemaal veel sneller moet werken. (Ter info: het genereren van een 2048-bit priemgetal voor cryptografie kost luttele secondes (ik mag niet veel preciezer zijn ;-)) en dat is gewoon veel te lang (vooral in servers waar je veel cryptografische berekeningen moet uitvoeren). De afgelopen paar maanden ben ik druk bezig geweest met het implementeren van 'mijn' stuk hardware. Bedenken hoeveel geheugen je nodig hebt, waar je dat nodig hebt, op welke manier je het datapath maakt dat alles aan elkaar knoopt, welke berekeningen je op de coprocessor doet en voor welke berekeningen je een nieuw stuk hardware wil gebruiken. De kunst hierbij is natuurlijk dat je een afweging moet maken tussen de hoeveelheid ruimte op de chip die je nodig hebt, de snelheid van de uiteindelijke priem-getal generator en het vermogen dat het ding verstookt.

De hardware zelf beschrijf je in een soort programmeertaal (VHDL) en dat wordt dan later in het proces omgezet in de de daadwerkelijke onderdelen op de chip. Het voordeel daarvan is dat je van te voren al veel kunt simuleren en kunt verifiëren of het allemaal werkt. Het enige is dat het op het moment 8 uur kost om minder seconde 'in het echt' te simuleren... Dat doe ik dus vooral 's nachts, je computer is niet echt meer te gebruiken op dat moment.
De hardware werkt op dit moment grotendeels zoals ik wil en is het eigenlijke ontwerpen gebeurd (d'r zijn nog wel wat dingen nodig en als ik het straks in 't echt test zal er ongetwijfeld wat veranderd worden om het nog beter/sneller te krijgen).

De afgelopen twee weken heb ik een poging gedaan de beschrijving inclusief de complete chip, waar mijn onderdeel dus in zit, te synthesizen, het omzetten in een daadwerkelijk ontwerp voor de FPGA in het ontwerp. Een FPGA is een soort programmeerbare chip waarvan je de hardware aan kan passen. Het voordeel hiervan is dat het heel makkelijk is om nieuwe versies te testen zonder dat je de chip hoeft te vervangen. Daarnaast is het natuurlijk ook een stuk goedkoper dan iedere keer een nieuwe chip te laten maken in de fabriek. Het enige nadeel is dat ze niet zo snel zijn als een speciaal ontworpen chip voor één toepassing (ASIC), maar het blijft hardware en is daarmee stukken sneller dan een software programma op een processor.

Dat synthesizen is nogal lastig, vooral omdat dit ook het moment is waarop zal blijken of de hardware die je ontworpen hebt ook daadwerkelijk snel genoeg is (de timing constraints). Het platform draait op X MHz en als ik in mijn chip teveel berekeningen probeer uit te voeren per klokslag van de chip, dan werkt het niet. Dan kun je terug naar je VHDL-code en bijvoorbeeld de berekeningen in tweeën opsplitsen. Vooral het feit dat dit nogal een groot project is en de FPGA bijna vol is maakt het er niet makkelijker op. Het is een kwestie van op een knop drukken, 6 uur de computer laten rekenen of het allemaal past en werkt en dan wat aanpassen en opnieuw 6 uur wachten.

Vorige week had ik het allemaal werkend gekregen en daar was ik behoorlijk blij mee. Nu vond ik alleen vrijdag nog een klein foutje wat ik moest oplossen met één klein AND-poortje, vannochtend kwam ik terug: werkte het niet meer... Het ding was gesynthesized en het voldeed niet meer aan de timing constraints. Aargh! Nou dook het probleem op een totaal andere plek op de chip op en is het niet heel triviaal om het op te lossen. Nou ja, mijn computer bij IBM staat nu weer te rekenen, fingers crossed voor morgenvroeg :).

Had gehoopt dat ik, nadat mijn begeleider volgende week terug komt van vakantie, aan de slag kon met de echte chip, maar dat gaat nu ben ik bang niet lukken. Ik heb nog een dag om het op te lossen voordat Maarten morgenavond hier op de stoep gaat en ik vier daagjes vrij heb. Hij neemt z'n mountainbike mee dus we gaan lekker een stukje fietsen. En daarnaast is het hier nog Oktoberfesten :).

Sinds Venezia/Milano niet veel 'grote' touristische dingen meer gedaan. Heb een bezoekje gebracht aan St. Gallen en de OLMA-landbouwbeurs. Dat lijkt geen hele erge touristische attractie, maar is het eigenlijk wel een beetje. De beurs is vooral bekend om de degustatie-afdeling met alle Zwitserse bier en wijn (en de lokale bevolking die zich klem zuipt). Lekker bier overigens :). Maar je kunt ook alle lokale vleeswaren en kazen proberen. Net als de rest gewoon vier keer in de rij gaan staan om zeker te zijn dat het wel echt lekker is.
Voor de rest 'n concert, jazzavond, bezoekje aan de Oktoberfesten, etc. etc.

En nu ga ik aan de Maredsous 10. Antoine (Franse student uit Lyon, nu anderhalve maand intern bij IBM en sinds drie dagen mijn huisgenoot) kwam me d'r net eentje aanbieden. Hij is net terug uit Brussel en heeft e.e.a. ingeslagen ;).

Fijne avond!

Rik

P.s. even geen foto's dit keer, geen zin in :p. Volgende keer weer.