griaziIch versuche schon seit längerer Zeit die Vorteile der AND, OR, PU zu finden. Tatsächlich läßt sich diese beispeil wunderbar rein mit UUs lösen
C-Code: if(neg == 1) S1; ... if(x > 0 && z > 0) { if(neg == 1) { S2 } else { S3 } else if(z<=0) { S4; } ASM: PRED (neg=1) p0<UU>,p15<iUU> ; p0=(neg==1) (p0) S1 PRED (x>0) p1<UU>,p15<iUU> ; p1=(x>0) (p1) PRED (z>0) p2<UU>,p4<iUU> ; p2=(x>0)&&(z>0), p4=(x>0)&&!(z>0)(p2) PRED (neg=1) p2<UU>,p3<iUU> ; p2=(x>0)&&(z>0)&&(neg==1), p3=(x>0)&&(z>0)&&(neg==1)
(p2) S2 (p3) S3 (p4) S4Wenn wir AND,OR und PU nicht verwenden wurden fürde uns alleine das schon 6 bits sparen (op_p1 kann auf UU, und op_p2 kann auf iUU) fixiert werden) Ein witeres bit könnte man einsparen wenn man das immediate auf 4 bit einschränkt. das 8te bit, könnte man entfernen indem man entweder das register ra oder (rb und immediate) auf 3 bits beschränkt, oder PREDI nicht mehr zulässt. die operationen PREDORx und PREDANDx wären ebenfalls obsolet. Voiala und schon haben wir 24Bit.
Warum habe ich diese Variante gewählt?Ganz einfach, weil es im Paper so beschrieben wurde, und weil es auch eine ISA (http://www.hpl.hp.com/techreports/93/HPL-93-80R1.pdf, Tabelle 12) gibt die das so löst.
Was machen wir? Martin Am 09.04.2010 09:56, schrieb Benedikt Huber:
On 09.04.2010, at 09:25, Elshuber Martin wrote:Ich sehe jetzt im momment nicht viele Möglichkeiten wie wir, wenn wir bei predicates und fixed width ISA bleiben, bits sparen könnten.Koenntest du vielleich kurz illustrieren, warum die Wahl dieser Form von predicated instruction so genial ist? Fuer die einfachen Faelle braucht man IMHO nicht so ein kompliziertes System.Das Flags-Bit sehe ich, zumidest am encoding Level, nicht als problem das bottleneck ist allerdings die PRED instruction.Wie schaut der Assembler fuer folgenden Code aus? --------------------------------- > if(neg == 1) S1; > ... > if(x > 0 && z > 0) { > if(neg == 1) { S2 } > else { S3 } > else if(z<=0) { > S4; > } ------------------------------ lg, benedikt* wir fixieren uns auf einen 2-issue processor.* wir führen 2 akkumulatoren ein (ACa, ACb, einer für jeweils eine pipeline)* PRED ist ein instruction die nur alleine ge-issued weden kann* die anderen instuktionen reduzieren wir so das 2 davon in die 32 bit passen. * wenn es wirklich eng mit den bits wird, kann man das F bit bei den meisten befeheln kickenwas meint ihr? lg martin Am 09.04.2010 08:50, schrieb Benedikt Huber:On 09.04.2010, at 01:18, Benedikt Huber wrote:- 24bit pro Instruktion war kurz im Gespraech - ich nehm an dass geht sich nicht aus? Ich hab so das Gefuehl, wir relative grosse Instruktionen fuer einen RISC haben auf diesem FPGA haben.Um diesen Punkt noch etwas zu präzisieren: Lange Instruktionen haben ihren Preis: Der Prefetch dauert länger, wir brauchen einen größeren Prefetch Buffer (oder müssen öfter nachladen) und natürlich mehr Bandbreite um Instruktionen aus dem Buffer zu laden. Das jetzige Design hat für 32-bit relative wenige und recht einfache Instruktionen, und nützt bei vielen Opcodes einige Bits nicht (bei ADD werden z.B. 9 Bits nicht genutz)t. Ich denke, dass 4-bit oder 5-bit immediates auch ausreichen würden (wenn denn ADDI wirklich einen Mehrwert gegenüber INCR hat). Die klassiche ARM ISA mit 32-bit war übrigens nicht unbedingt die glücklichste Wahl, wie man an der Einführung von Thumb und Thumb-2 sieht.Ich denke es gibt zwei Möglichkeiten: Wenn wir während des Prefetchs blockieren, dann brauchen wir nicht unbedingt eine eigene Instruktion. Wenn wir paralell prefetchen wollen, dann schon.Die Instruction "loadpage" ist mir auch noch unklar. Wie groß ist eine Page? Wie schaut das Alignment aus?Ich wuerd sagen 32-64 Instruktionen ist eine vernuenftige Groesse, wir muessen halt bedenken, dass wir der load selbstauch ein paar instruktionen braucht.Wenn wir ein ROM implementieren, könnten wir diese funktionalität auch über eine Schleife im ROM lösen.du meinst load page? ja, waer auch eine idee. was sind die tradeoffs?lg, benedikt