Tuesday, 2021-02-23

cesar[m]1lkcl:  Just letting you know that I'm working on it, based on the changes to the FSMs that you did so far.09:48
cesar[m]1Reading of SVSTATE needs to move from issue to the execute FSM, so it can see the srcstep it just updated.10:44
cesar[m]1... MSR as well, I guess. That way, the execute FSM may keep working the loop without ever activating the fetch FSM.11:06
cesar[m]1I think the INSN_FETCH state of the execute FSM may be a good place to place those.11:14
cesar[m]1 The core_stop signal should be handled there as well, to allow stopping the core in the middle of a VL loop.11:14
lkclyes, fetch issue execute should all be separate13:28
lkclahh yes, definitely the stop should not issue a new sub-instruction13:29
lkclMSR can stay where it is because it never gets read/written to under "loop" conditions13:30
lkcl(there are no SVP64 MSR instructions)13:30
lkclbut... ahh... there are interrupts / exceptions13:30
lkclbut... no, hang on13:31
lkclanything in SVSTATE needs to be sent "read-only" to execute13:31
lkclbut execute may *change* MSR (and PC) if there is a branch or an exception.13:32
lkcltck,,, tck...13:32
* lkcl thinks13:32
lkclMSR can stay where it is for now.13:33
lkclexceptions will stop the loop because SVSTATE, PC, and MSR will all be swapped into SRR0, SRR1 and SVSRR0 respectively13:33
lkcland written into StateRegs *by* the Trap Pipeline13:34
lkclBranch and MTMSR, these are *not* SVP64-Vectorised instructions so that's safe...13:35
lkclyes, MSR and PC can stay in the INSN-FETCH FSM13:35
lkclSVSTATE on the other hand cannot.13:35
lkclSVSTATE has to be read in the ISSUE FSM and *written* in the ISSUE FSM13:36
lkclsetvl is the only instruction permitted to modify SVSTATE directly, and this is *not* Vectoriseable, so that's ok too13:36
lkclah: a detection of write to SVPSTATE is going to be needed (just like with PC)13:40
lkcli will add that13:40
lkcldone13:43
lkclwhen an exception happens, Trap pipeline handles it and makes the request to write a new PC, new MSR, and now also new SVSTATE.13:49
lkclthose *must* be noticed so that the issue FSM can stop running and move to fetch, also not to overwrite the SVSTATE!13:50
lkcljust like with pc_changed.13:50
lkclpc_changed is there because if the Branch or Trap pipelines set a new PC, the NIA (PC+4/8) must not overwrite that!13:50
lkclexact same thing for SVSTATE13:50
lkclsrcstep13:51
lkcloh, the other reason why MSR and SVSTATE has to stay in fetch: they're used as part of decode.  MSR affects LE/BE for example.16:33
lkclcesar[m]1, https://bugs.libre-soc.org/show_bug.cgi?id=58319:07
lkcli *think* it's that simple.  maybe 30 lines of code?  and changing the handshake ready/valid.  i will note that19:08
lkclmeeting 10min21:49
lkclprogrammerjake[m, ^21:49
lkclcesar[m]1, ^21:49
lkcllxo, ^21:49

Generated by irclog2html.py 2.17.1 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!