[CALU] Re: ISA-Encoding-neu

  • From: Elshuber Martin <e9825286@xxxxxxxxxxxxxxxxxxxx>
  • To: calu-ss2010-tuwien@xxxxxxxxxxxxx
  • Date: Thu, 15 Apr 2010 07:02:17 +0200

Hau,

ich habe jetzt eine Version fertig die des X vom pred nutzt um die Konflikte zu lösen:

Instruktions Klassen, Systematik und Decoding:
  20 bit opcode (alle 0): nop
  10 bit opcode (bits 18..14)=00000, bit 19 (I)=1,
       bit (13,6-4) 0000: push
       bit (13,6-4) 0001: pushpred
       bit (13,6-4) 1000: pop
       bit (13,6-4) 1001: poppred
bit (13,6-4) 0100: ret (preddict no branch, predicate negation in bit 3) bit (13,6-4) 1100: retp (preddict branch, predicate negation in bit 3) bit (13,6-4) 0110: iret (preddict no branch, predicate negation in bit 3) bit (13,6-4) 1110: iretp (preddict branch, predicate negation in bit 3)
       bit (13,6-4) 1010: cli
       bit (13,6-4) 0010: sti
5 bit opcode (bit 18)=0 oder bits(18-16)=110
(bits 18..14)=00011: b,bp,bn,bnp, call,callp,calln, callnp - (jeweils mit 12nit immediate, predicate negation in bit 3) die variante mit register als target hab ich entfernt, es wäre aber noch platz in den 10bit operations
      (bits 18..14)=00100: add,addi,addf,addif
      (bits 18..14)=00101: sub,subi,subf,subif
      (bits 18..14)=00011: mul,mulf,muls, mulfs, div,divf,divs,divfs
              muls,mulfs is nur noch der volständigkeit halber drinnen
      (bits 18..14)=01000: or,orf,orm,ormf,ori,orif
      (bits 18..14)=01001: nor, ....
      (bits 18..14)=01010: xor, ....
      (bits 18..14)=01011: and, ....
      (bits 18..14)=00010: loadpage
      (bits 18..14)=00100: ld
      (bits 18..14)=00111: ldw
      (bits 18..14)=11000: ldb
      (bits 18..14)=01110: st
      (bits 18..14)=01111: stw
      (bits 18..14)=11001: stb
      (bits 18..14)=00001: lsl,lsli,lslf,lslid, asl,aslf,asl,aslf
      (bits 18..14)=01100: lsr,lsri,lsrf,lsrif
      (bits 18..14)=11010: asr,asri,asrf,asrif
      (bits 18..14)=11011: rol,roli,rolf,rolif
3 bit opcode bits(18-16)=111
    pred{xxx}
2 bit opcode bits(18-17)=10
   LDC,LDC00,LDC12,LDC24

es wäre noch platz in den 10 bit ops, für zb ein mov rd,ra
oder eine convert endianess, oder countleading zeros,.......
   operationen mit max, 2 registern, oder einem kurzen immeadiate
  eine andere idee wäre:
normalerweise setzen die pred instructionen die predikate p und p+1 man könnte das so ändern daws sie p und p+x setzen und eine instruktion einfähren die das x verändert. ob es sinn mach weis ich nicht

wenn wir im security bereich arbeiten, wäre eine convert endianness nicht unwichtig, für hashfunktionen zb.

offene fragen + voting:
  wie dird das immediate bei den ld,st erweitert?
    a) signed
    b) unsigned
    a:
    b: martin
    weisnicht:
  sprünge relativ oder absolut?
a) absolut: +die zieladresse ist schon nach dem decoding bekannt, +vereinfacht static branch prediction enorm, -unser proz kann max 2^12=4048 instructionen addressieren b) relativ: +fast belibig grosser instruction mem, -alu zur berechnung der zieladdresse nötig (wahrschneinlich +2 cycles), -wahrscheinlich an BTB zu branch prediction nötig
  votes:
    a: martin
    b:
    weisnicht:
  zusätzliche befehele:
   mov rd,ra
    votes:
      ja: martin
      nein:
      weisnicht:
   ce (convert endianess)
     votes:
       ja: martin
       nein:
    weisnicht:
   clz (count leading zeros)
     votes:
       ja:
       nein:
       weisnicht: martin
  setx: (das oben beschriebene predicate ding)
     votes:
        ja:
       nein:
       weisnicht: martin

ich hoffe ich habe nichts falsch gemacht


14.04.2010 19:07, schrieb Martin Elshuber:
Hab gerade was in repo getan.
bitte schaut es euch genau an ob nichts doppelt belegt ist
Die Xe werden immer weniger, die codierung (leider) komplizierter
und die fehlerwahrscheinlichkeit immer höher.

bei doppeltbelegungen wird es wahrscheinlich jetzt schon recht kompliziert noch was zu ändern.

bei den PRED befehl ist jetzt ein X, das kommt mir komisch vor. was ist falsch?
LDW,LDB bzw STW,STB kollidieren, das ist ungünstig
meine vorschläge:
1) LDW/STW wegwerfern
2) LDB/STB wegwerfern
3) bei beiden die Immediate Addressierung wegwerfen
4) bei beiden die Register Addressierung wegwerfen
5) Wir verzichten bei den LDW,LDB,STW,STB auf das schift, und nehmen nur einen 5bit immediate 6) wenn das X bei pred korrekt ist, könnten wir uns dieses x und die loadpage op ausborgen und beide addressierungen implementieren (ich glaube wir brauchen beide)
7) wir nehmen das X vom von pred, und implementieren STB,STW,LDB

andere vorschläge?

lg martin



Other related posts: