6.13【A】

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?

相关推荐
FreakStudio12 天前
W55MH32L-EVB 上手测评:硬件 TCP/IP 加持的以太网单片机,MicroPython 零门槛开发
python·单片机·嵌入式·大学生·面向对象·并行计算·电子diy·电子计算机
✎ ﹏梦醒͜ღ҉繁华落℘17 天前
单片机基础知识---stm32单片机的优先级
stm32·单片机·mongodb
u1521096484917 天前
S.S.Audio PRO A2音频隔离器
嵌入式硬件·音视频·实时音视频·视频编解码·视频
zd84510150017 天前
RS485 总线详解
单片机·嵌入式硬件
半条-咸鱼17 天前
【STM32】I2C协议原理、HAL读写与OLED显示操作
嵌入式硬件·c·信息与通信
wohoo_wangzi17 天前
苏州晟雅泰电子:关于W25Q128JVSIQ这个芯片物料的参数,规格及应用领域
嵌入式硬件
✎ ﹏梦醒͜ღ҉繁华落℘17 天前
编程基础 --高内聚,低耦合
c语言·单片机
科芯创展17 天前
1A,1MHz,30VIN,XZ4115,降压恒流LED驱动芯片
单片机·嵌入式硬件
集芯微电科技有限公司17 天前
四通道2A输出集成功率电感降压模块专为紧凑型方案设计
人工智能·单片机·嵌入式硬件·生成对抗网络·计算机外设
踏着七彩祥云的小丑17 天前
嵌入式测试学习第 37 天:异常场景测试:断电、拔插、干扰、非法指令
单片机·嵌入式硬件·学习