3838
对每个元素,先求和,再取模,然后得到新元素
中断



中断源
中断源pending的判断是发生在内核还是CPU硬件层面?什么叫"中断源 pending:ESTAT.IS 某位为 1"?IS是什么,以及为什么是某位?以及怎么检查的某位?





other



判断


那13位的中断位当中,为什么是13位?以及低2位是软件中断,2-9是硬件中断,第11位是定时器中断,其它的呢,这不也才11位?以及在"has_int = ((csr_ectl\`LIE & csr_estat\`IS) != 13'b0) & csr_crmd\`IE;'的判断中,如果有多位中断源同时为1,又该如何处理的呢?以及软件中断的第一位和第二位有什么区别?以及硬件中断?以及这是否意味着CPU只能同时pengding两个软件中断,8个硬件中断?如果还有,但已经满了都为1了,那又该怎么办呢?






就是说在CPU的CSR.ESTAT.IS当中,就是13位来表示pengding的中断,CPU也不管语义,就只是接收信号、处理指令来填写这些位,外部来的8位中断信号就填到2-9上,指令来的csrwr读写,就去操控低两位的软件中断,(定时器中断的ESTAT.IS是如何写的?),然后把这13位IS信号统一判断,要求IS为1,以及其能够使能触发,最后还要经过IE为1,才会产生Has_int为1,就是13合1,就只判断是否产生了中断,如果触发了中断,那就进入内核态后由内核去判断和读写ESTAT.IS的位,通过csrrd指令,来知道具体是怎么触发的中断,并进行中断处理的裁决;


这是我知道读ESTAT是了解当前有哪些pending,然后ECTL就是去看对应pending上的使能是否为1吗?这两个寄存器都读完了就再进行一次统一判断来裁决是吧



最后处理完了是不是要再把ESTAT.IS对应位上的pengding信号清0?
软件中断
什么是软件中断?有哪些例子?怎么触发的?




定时器中断


异常
那syscall之类的是软件、硬件还是定时器中断?


就是说中断是那种正常的,包括软件、硬件,定时器等,对于软件就是靠去写CSR.ESTAT.IS的低两位(这个是一次csrwr就完了,然后寄存器就一直寄存着,直到下次写),硬件就是靠传给CPU模块整体的8位信号,(这个就是说只要还有信号,那中断信号就是1,即寄存器每拍都要锁存这个信号,即只要硬件中断没有处理完,那这根线上的信号就一直是1,即每拍都相当于在进行csrwr),定时器中断是个什么机制?之后对于异常,就不走ESTAT.IS,而是靠指令,或者正常指令在运行过程中意外产生的;但无论异常还是中断,CPU做的事情都差不多,就是保留当前进程的状态,记录原因到CSR.ESTAT.ECODE当中,如果是中断就是INT,异常都是什么,保存返回时的PC,进入内核态,进入处理函数,去识别CSR.ESTAT.ECODE,来选择相当于的处理程序
区分&&总结








EXAMPLE





'


这个地址是说IF阶段,用pc去内存拿指令时的地址发生的报错,发生在IF阶段


这个是LW指令在EX阶段,在算下一拍即MEM阶段要从内存取数据时,算出来的地址发生的异常,IF阶段pc取LW指令的地址是没问题的,是MEM阶段访存的地址出了问题,异常出现在EXE阶段






中断和 syscall 同时出现什么意思?假设 syscall 到 ID 的同一拍,has_int=1,举个例子?比如软件进行csrwr,把已经使能的中断源置1了,在WB阶段,那此时后面的syscall指令到了ID阶段吗?即指令排布为csrwr,xx,xxsyscall吗?



那是否会有在WB阶段之前就完成的指令?因为当前的异常与中断是在WB阶段才产生前四级,即随后的四条指令的flush信号的,但如果有指令在WB之前就完成执行了,比如发生了跳转,又或者那四条指令本身产生了一些异常,又会怎么办?








流水线

IF


ID

EX

这也就说明excp是全局的信号,那是否可能会出现在t0时刻,excp先算完为1,然后再发起Dcache请求时,因为这一拍里ID阶段的excp为1,使ID阶段导致EX阶段的指令无法正常运行的情况?
MEM


WB


KEY------计算与提交
什么是提交?对所有指令都列举出其计算完成和提交完成的事件,以及在当前五级流水线里所对应的时刻?现在我尤其关心CACHE,在MEM访存时,如果对cache发生了miss或写入,那不就已经实际完成了提交?我知道如果TLB发生了缺页,那不是在IF阶段就处理的,而是要等到最后再处理TLB缺页,那cache呢?也是发生Miss后,要等到最后的WB阶段再去更替吗?







KEY------store在MEM

特权指令
"比如用户态 PLV=3,却执行:csrwr;tlbwr;invtlb;ertn;cacop 某些特权形式"有哪些是是特权指令?特权指令的执行过程是怎样的?










TLB异常
TLB异常有哪些,是怎样处理的?"如果同一条 load 既地址不对齐,又所在页可能 TLB miss,"load不是从内存加载数据到cpu当中吗,怎么会TLB miss?不应该是要读数据时才可能TLB mIss吗?就是说,lw计算的地址也是虚拟地址,是在EXE算出来的,那是在哪个阶段完成的虚实地址转换?EXE还是MEM?

