CAC 2020-02-29

rcu_test

Two traces; the first without the link snapped, the second with. Examining the traces starting at the point where the link snap returns, and the corresponding point in the second trace:

CORE: core_read 60124234 000314000043 (INDIRECT_WORD_FETCH)
CORE: core_read 60124235 001711000000 (INDIRECT_WORD_FETCH)
APPENDING: do_append_cycle(J)
APPENDING: do_append_cycle(O)
APPENDING: do_append_cycle(O) TRR 4 RSDWH.R1 4 ITS.RNR 0
APPENDING: do_append_cycle(O) Set TRR to 4
APPENDING: do_append_cycle (Exit) PRR 4 PSR 00313 P 0 IC 000041
APPENDING: do_append_cycle (Exit) TRR 4 TSR 00247 TBR 00 CA 024234
FINAL: Read2 (Actual) Read: iefpFinalAddress=60124234 readData=000314000043
FINAL: Read2 (Actual) Read: iefpFinalAddress=60124235 readData=001711000000
APPENDING: do_ITS/ITP: 000314000043 001711000000 Tag:20
[[/code]]

The pre-snapped trace shows:

APPENDING: do_ITS/ITP: 000314000043 001711000000 Tag:66

The tag value is different?

static void do_ITS_ITP (word6 Tag, word6 * newtag)
  {
    word6 ind_tag = GET_TAG (cpu.itxPair [0]); 

    sim_debug (DBG_APPENDING, & cpu_dev,       
               "do_ITS/ITP: %012"PRIo64" %012"PRIo64" Tag:%o\n",
               cpu.itxPair[0], cpu.itxPair[1], Tag);

Earlier in the listing (same in both traces):

ADDRMOD: IR_MOD: CT_HOLD=66 6
ADDRMOD: IR_MOD: fetching indirect word from 024234

So apparently Ct_HOLD is being misplaced?

    // Figure 6-5. Indirect Then Register Modification Flowchart
    IR_MOD:;
      {
        sim_debug (DBG_ADDRMOD, & cpu_dev,
                   "IR_MOD: CT_HOLD=%o %o\n", cpu.cu.CT_HOLD, Td);
        sim_debug (DBG_ADDRMOD, & cpu_dev,
                   "IR_MOD: fetching indirect word from %06o\n",
                   cpu.TPR.CA);

...

        // in case it turns out to be a ITS/ITP
        iTAG = cpu.rTAG;

        word18 saveCA = cpu.TPR.CA;
        ReadIndirect ();

...

          if ((saveCA & 1) == 0 && (ISITP (cpu.itxPair[0]) || ISITS (cpu.itxPair[0])))
          {
            do_ITS_ITP (iTAG, & cpu.rTAG);
          }

I think this is okay; the tag value passed in to do_ItS_ITP is used only to check for incorrect address modifier fault.

Next in the traces:

unsnapped:

ADDRMOD: RI_MOD: cpu.itxPair[0]=000314000043 TPR.CA=001711 rTAG=00
ADDRMOD: updateIWB: IWB was 024234236020 024234 n*
ADDRMOD: updateIWB: IWB now 001711236000 001711
ADDRMOD: do_caf(startCA): restart; CT_HOLD 66
ADDRMOD: do_caf(startCA): TAG=00() Tm=0 Td=0 CT_HOLD 66
ADDRMOD: readOperands (LDQ 001711):mne=ldq flags=1
ADDRMOD: readOperands a 0 address 00001711

snapped:

ADDRMOD: IR_MOD: CT_HOLD=66
ADDRMOD: IR_MOD1: cpu.itxPair[0]=000314000043 TPR.CA=001711 Tm=0 Td=00 (its)
ADDRMOD: IR_MOD(TM_R): CT_HOLD 6 Cr=000025
ADDRMOD: IR_MOD(TM_R): TPR.CA=001736
ADDRMOD: updateIWB: IWB was 400014236166 400014 *ql
ADDRMOD: updateIWB: IWB now 001736236000 001736

So now it is clearly lost; the unsnapped code thinks that the addressing mode is RI, that snapped link is IR.

The entry to address formation was:

ADDRMOD: do_caf(Entry): operType:readCY TPR.CA=024234
ADDRMOD: do_caf(Entry): CT_HOLD 0 
ADDRMOD: do_caf(startCA): TAG=66(*ql) Tm=60 Td=6 CT_HOLD 66
ADDRMOD: IR_MOD: CT_HOLD=66 6
ADDRMOD: IR_MOD: fetching indirect word from 024234

In more detail…

The unsnapped trace:

TRACE: 0: 00313:000041 4 400014236166 (LDQ PR4|14,*QL) 000014 236(0) 1 0 3 06
APPENDING: doPtrReg: PR[4] SNR=00247 RNR=4 WORDNO=024220 BITNO=00
APPENDING: doPtrReg: n=4 offset=00014 TPR.CA=024220 TPR.TBR=0 TPR.TSR=00247 TPR.TRR=4
ADDRMOD: do_caf(Entry): operType:readCY TPR.CA=024234
ADDRMOD: do_caf(Entry): CT_HOLD 0
ADDRMOD: do_caf(startCA): TAG=66(*ql) Tm=60 Td=6 CT_HOLD 66
ADDRMOD: IR_MOD: CT_HOLD=66 6
ADDRMOD: IR_MOD: fetching indirect word from 024234
APPENDING: do_append_cycle(Entry) thisCycle=INDIRECT_WORD_FETCH
FINAL: Read2 (Actual) Read:  iefpFinalAddress=60124234  readData=777764000046
FINAL: Read2 (Actual) Read:  iefpFinalAddress=60124235  readData=000045000000
ADDRMOD: IR_MOD: CT_HOLD=66
ADDRMOD: IR_MOD1: cpu.itxPair[0]=777764000046 TPR.CA=777764 Tm=40 Td=06 (f2)
ADDRMOD: IR_MOD(TM_IT): Td=06 => 66

F2 fault

restart:

TRACE: 0: 00313:000041 4 024234236020 (LDQ 024234,N*) 024234 236(0) 0 0 1 00
ADDRMOD: do_caf(Entry): operType:readCY TPR.CA=024234
ADDRMOD: do_caf(Entry): CT_HOLD 66
ADDRMOD: do_caf(startCA): restart; CT_HOLD 66
ADDRMOD: do_caf(startCA): TAG=20(n*) Tm=20 Td=0 CT_HOLD 66
ADDRMOD: RI_MOD: Td=0
APPENDING: do_append_cycle(Entry) thisCycle=INDIRECT_WORD_FETCH
FINAL: Read2 (Actual) Read:  iefpFinalAddress=60124234  readData=000314000043
FINAL: Read2 (Actual) Read:  iefpFinalAddress=60124235  readData=001711000000
APPENDING: do_ITS/ITP: 000314000043 001711000000 Tag:20
APPENDING: ITS Pair: SEGNO=314 RN=0 WORDNO=1711 BITNO=0 MOD=0
APPENDING: ITS Pair Ring: RN 0 RSDWH_R1 4 TRR 4 max 4
APPENDING: do_ITS_ITP sets XSF to 1
ADDRMOD: RI_MOD: cpu.itxPair[0]=000314000043 TPR.CA=001711 rTAG=00
ADDRMOD: updateIWB: IWB was 024234236020 024234 n*
ADDRMOD: updateIWB: IWB now 001711236000 001711
ADDRMOD: do_caf(startCA): restart; CT_HOLD 66
ADDRMOD: do_caf(startCA): TAG=00() Tm=0 Td=0 CT_HOLD 66
ADDRMOD: readOperands (LDQ 001711):mne=ldq flags=1
ADDRMOD: readOperands a 0 address 00001711
APPENDING: do_append_cycle(Entry) thisCycle=OPERAND_READ
FINAL: Read (Actual) Read:  iefpFinalAddress=60771711  readData=000000000016
REGDUMPAQI: A=000000000000 Q=000000000016 IR:~BAR

The snapped trace:

ADDRMOD: do_caf(Entry): operType:readCY TPR.CA=024234
ADDRMOD: do_caf(Entry): CT_HOLD 0 
ADDRMOD: do_caf(startCA): TAG=66(*ql) Tm=60 Td=6 CT_HOLD 66
ADDRMOD: IR_MOD: CT_HOLD=66 6
ADDRMOD: IR_MOD: fetching indirect word from 024234
APPENDING: do_append_cycle(Entry) thisCycle=INDIRECT_WORD_FETCH
FINAL: Read2 (Actual) Read:  iefpFinalAddress=60124234  readData=000314000043
FINAL: Read2 (Actual) Read:  iefpFinalAddress=60124235  readData=001711000000
APPENDING: do_ITS/ITP: 000314000043 001711000000 Tag:66
APPENDING: ITS Pair: SEGNO=314 RN=0 WORDNO=1711 BITNO=0 MOD=0
APPENDING: ITS Pair Ring: RN 0 RSDWH_R1 4 TRR 4 max 4
APPENDING: do_ITS_ITP sets XSF to 1
ADDRMOD: IR_MOD: CT_HOLD=66
ADDRMOD: IR_MOD1: cpu.itxPair[0]=000314000043 TPR.CA=001711 Tm=0 Td=00 (its)
ADDRMOD: IR_MOD(TM_R): CT_HOLD 6 Cr=000025
ADDRMOD: IR_MOD(TM_R): TPR.CA=001736
ADDRMOD: updateIWB: IWB was 400014236166 400014 *ql
ADDRMOD: updateIWB: IWB now 001736236000 001736
ADDRMOD: readOperands (LDQ 001736):mne=ldq flags=1
ADDRMOD: readOperands a 0 address 00001736
APPENDING: do_append_cycle(Entry) thisCycle=OPERAND_READ
FINAL: Read (Actual) Read:  iefpFinalAddress=60771736  readData=777777777777
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License