Page 1 of 1

[CA] Reeks 5 - CPU

Posted: Wed May 27, 2009 8:32 pm
by Fristi
Loha

Had nog vraagske over de cpu da we moeten maken, wa bedoelen ze net met een display voor 16 8-bit getallen?

Ist echt letterlijk gewoon 16 dispalys waarop ge een 8-bit getal weergeeft? (om een of andere reden lijkt me dit een beetje vaag, dus ff navragen).

2de vraagje:
Lui operatie:
Ge moet ne shift bit left 4 bits doen, maar da hebbe nwij toch ni geïmplementeerd in onzen alu?

Fristi

Re: [CA] Reeks 5 - CPU

Posted: Wed May 27, 2009 10:30 pm
by Robbe
Fristi wrote: 2de vraagje:
Lui operatie:
Ge moet ne shift bit left 4 bits doen, maar da hebbe nwij toch ni geïmplementeerd in onzen alu?
x << 4 = ((((x * 2)*2)*2)*2) ?

Re: [CA] Reeks 5 - CPU

Posted: Wed May 27, 2009 11:47 pm
by Tom
Fristi wrote:Loha

Had nog vraagske over de cpu da we moeten maken, wa bedoelen ze net met een display voor 16 8-bit getallen?

Ist echt letterlijk gewoon 16 dispalys waarop ge een 8-bit getal weergeeft? (om een of andere reden lijkt me dit een beetje vaag, dus ff navragen).

2de vraagje:
Lui operatie:
Ge moet ne shift bit left 4 bits doen, maar da hebbe nwij toch ni geïmplementeerd in onzen alu?

Fristi
Om 8 bits te tonen heeft men een groep van 4 displays nodig (-128 tot +127), dus 1 voor het teken en 3 voor de decimalen. Het is inderdaad de bedoeling om 16 8-bit getallen te kunnen tonen, wat een totaal van 64 enkele displays oplevert. Met uw 4 bits immediate zal je dan een van deze groepen kunnen specifieren (0 tot 15) om de inhoud van uw register op te tonen.

De niet-R-type instructies (op branch na) hebben de ALU inderdaad niet nodig.

Posted: Wed May 27, 2009 11:54 pm
by Fristi
hmm, kehj, da maakt de alucontroller wel wa simpeler ^^

Posted: Thu May 28, 2009 12:18 am
by Fristi
dus, alsk het goe begrepen heb maakte in totaal gebruik van 2 geheugens (RAM's) en 2 registers?

Nog een vraagske:
Moet den output van den ALU naar het Data memory? (of wat moet ge anders gebruiken als adres selector voor da data memory?)

Posted: Thu May 28, 2009 7:49 am
by Pieter Belmans
Dat gaat via lw en sw, die niet rechtstreeks de output pakt van uwen ALU (welk adres zou hij het naar wegschrijven dan?), maar 1 van uw 2 registers kiest en dat op MEM[imm] wegschrijft.

Er zijn dus 2 registers, 8 bits groot, 1 instructiegeheugen, 5-bits adressen en 8 bits woord en 1 datageheugen, 4-bits adressen en 8 bits per woord.

Posted: Thu May 28, 2009 12:37 pm
by Fristi
thanks voor het overzichtje ^^
Dus den output van uwen ALU gaat naar u Rd register? (just to be sure)

Posted: Thu May 28, 2009 1:22 pm
by Pieter Belmans
Use the force Luke en bedenk waar de d voor staat ;).

Posted: Thu May 28, 2009 3:07 pm
by Fristi
^^
Anyway da lukt al
Kan nu een word uit men geheugen in men register steken.

Nu wou ek da testen door eerst een woord in men eerste register te steken, dan een woord in men 2de en dan die 2 optellen en het resultaat in het eerste te steken, maar daar gaat het nog mis op de moment.

Hij wist denk ik altijd den inhoud van die 2 registers voor em ze gaat optellen. Resultaat van den alu is daar altijd 11111111.

Enig idee hoe da komt da mijn registers op 0 springen?

Ik voer dus 2 load instructies uit, tot daar werkt het, als dan men program counter verhoogd, dan worden mijn registers ineens 0 en klopt het resultaat van men ALU dus ook ni meer..

Posted: Thu May 28, 2009 5:45 pm
by PieterK
Fristi wrote:Enig idee hoe da komt da mijn registers op 0 springen?

Ik voer dus 2 load instructies uit, tot daar werkt het, als dan men program counter verhoogd, dan worden mijn registers ineens 0 en klopt het resultaat van men ALU dus ook ni meer..
Hebt gij een controle signaal "RegWrite" dat aangeeft of ge moogt schrijven in uw Registers? Als ge da nie hebt dan schrijft die in uw Registers bij elke clock cycle. Dus ge moogt enkel schrijven bij "RegWrite" AND Clock rising edge.

Posted: Thu May 28, 2009 6:35 pm
by Fristi
jop, zo iets, tis al opgelost iig :)
Thanks to den andere pieter ^^.

Posted: Sat May 30, 2009 6:21 pm
by Midori
Maakt het iets uit of bij load word de data door de ALU passeert of niet? Ik kies namelijk in de ALU of er een functie moet toegepast worden op de 2 operanden (de 8 ALU functies + LUI) of dat de rx data gewoon doorgelaten moet worden zonder er iets mee te doen (voor store word en display).
Ik neem trouwens aan dat display bij pipelining in het writeback gedeelte hoort? Data hazards enzo.

Posted: Sat May 30, 2009 7:53 pm
by Tom
Midori wrote:Maakt het iets uit of bij load word de data door de ALU passeert of niet? Ik kies namelijk in de ALU of er een functie moet toegepast worden op de 2 operanden (de 8 ALU functies + LUI) of dat de rx data gewoon doorgelaten moet worden zonder er iets mee te doen (voor store word en display).
Ik neem trouwens aan dat display bij pipelining in het writeback gedeelte hoort? Data hazards enzo.
Als je rekening gaat houden met de propagatie tijden van de componenten dan maak je het load word commando op die manier langduriger. Het wordt op die manier afhankelijk van de multiplexer in de ALU die op zich weer afhankelijk is van de logica in de controllers.

De display kan zowel in EX, MEM als WB geplaatst worden. Hier introduceer je geen data hazards mee omdat je net dezelfde correcte data zoals bij de ALU en het data geheugen verkrijgt. Vroeger dan EX plaatsen is niet mogelijk omdat je dan problemen gaat krijgen met een display instructie na een branch, in de veronderstelling dat deze uitgevoerd wordt vanuit EX. Ik vermoed dat het de bedoeling is om de gebruiker zo snel mogelijk feedback te geven...