温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于
RISC
架构
中断
实验设计
冯建文
ISSN 1006 7167CN 31 1707/TESEACH AND EXPLOATION IN LABOATOY第 41 卷 第 12 期Vol41 No122022 年 12 月Dec 2022DOI:10 19927/j cnki syyt 2022 12 008基 于 ISC-V 架 构 的 中 断 实 验 设 计冯 建 文(杭州电子科技大学 计算机学院,杭州 310018)摘要:中断处理是 CPU 的重要功能,中断原理与设计是计算机组成原理课程的学习难点。基于多周期 ISC-V 架构,设计了一个功能精简、原理深入的中断实验,实现了能处理单重可屏蔽外部中断的 CPU。分析了 ISC-V 中断机制,为中断 CPU设计了一个简单的中断控制器。目标指令集包含 8 条 V32I 基本指令和 5 条中断相关指令。构造了中断模型机的系统结构,分析了各条指令的数据通路和执行过程,最后基于 FPGA 完成了设计、仿真测试和板级验证。关键词:中断实验;ISC-V 架构;多周期 CPU中图分类号:TP 306文献标志码:A文章编号:1006 7167(2022)12 0034 05Interrupt Experiment Design Based on ISC-V ArchitectureFENG Jianwen(School of Computer Science and Technology,Hangzhou Dianzi University,Hangzhou 310018,China)Abstract:Interrupt processing is an important function of CPU,and interrupt principle and design are the difficulties inthe course of computer composition principle Based on multi-cycle ISC-V architecture,an interrupt experiment withsimplified functions and advanced principles is designed,and a CPU that can handle single maskable external interruptis realized ISC-V interrupt mechanism is analyzed,and a simple interrupt controller is designed for interrupt CPUThe target instruction set contains 8 V32I basic instructions and 5 interrupt related instructions The system structure ofinterrupt model machine is constructed,and the data path and execution process of each instruction are analyzedFinally,the design and implementation,simulation test and board level verification are completed based on FPGAKey words:interrupt experiment;ISC-V architecture;multi-cycle CPU收稿日期:2022-05-18基金项目:国家级一流本科课程项目(教高函 2020 8 号);浙江省课程思政示范课程项目(浙教函 2021 47 号);浙江省高等教育“十三五”教学改革研究项目(jg20190167)作者简介:冯建文(1971 ),女,河南汝南人,教授,现主要从事嵌入式系统研究。Tel:18167103516;E-mail:fengjianwen hdu edu cn0引言ISC-V 架构以其开源特性和优越的性能,在全球范围内得到迅猛发展,也为国产处理器自主可控带来发展机遇1-4。相应地,国内外越来越多的高校基于ISC-V 架构开展教学5-6。中断和异常处理是现代 CPU 的必备功能,在实现I/O 交互、软硬件故障处理、操作系统功能调用及并发机制等方面,有着不可替代的作用7-8。中断原理抽象,涉及指令集体系架构的底层,是计算机组成原理课程的难点之一。在课程前期实验中,学生已经完成了25 37 条 V32I 指令子集的多周期 CPU 设计,但中断实验比较繁琐、复杂,尤其对于地方高校学生,实验难度较大。本文秉承“精简开放,重在方法”的设计理念,基于32 位多周期 ISC-V 架构,提出了一种精简的中断实验方案,引导学生使用 FPGA 工具,设计实现一个能处理单重可屏蔽外部中断的模型机,使学生理解中断原理、学会设计中断 CPU。第 12 期冯建文:基于 ISC-V 架构的中断实验设计1ISC-V 中断控制器设计1 1中断相关的 CS 寄存器ISC-V 具有用户、监控和机器 3 种工作模式,规范中要求必须实现拥有最高特权级的机器模式(M-mode)。ISC-V 设有 4 096 个控制与状态寄存器CS,其中 6 个与机器模式下外部中断相关,图 1 给出了它们的结构、部分字段含义,忽略了用户模式、监控模式以及其他中断类型9。图 1ISC-V 机器模式下外部中断相关的 CS 寄存器本实验处理的是机器模式外部中断,故 Interrupt=1,编号为 11;采用直接寻址方式转入中断服务程序IS,故 mtvec MODE=0。1 2中断控制器ISC-V 标准通过平台级中断控制器 PLIC 完成对外部中断的判优及处理10。本实验只处理 1 个外部中断源,设计的简单 PLIC 如图 2 所示。(1)CS 寄存器及读写控制。用于实现 CS 读写指令。实现了图 1 的 6 个 CS 寄存器,csr_out 始终读出地址为 csr_A 的 CS 寄存器内容,记为 CS csr_A;显然需要进行非完全地址译码。当 csr_Write=1时,在 csr_clk 上跳沿执行对 CS csr_A 的写操作,写入的数据是 CS csr_A和 rs1_data 的运算结果 csr_in。运算由独立的运算器完成,功能由 csr_op 指定:=01,输出 rs1_data;=10,进行或运算;=11,进行 rs1_data CS csr_A 运算。csr_op 取自 CS 指令 funct3 1:0。(2)中断控制逻辑。用于中断请求、响应与返回。INT 是 CPU 外部中断请求输入引脚,上跳沿来临时,置位 mip MEIP。如图 3 所示,此时如果开中断且未屏蔽,则输出 int=1,送至控制单元 CU 处理。图 2CS 及中断控制器模块图 3ISC-V 中断过程的具体操作本条指令执行完后,如果 CU 检测到 int=1,则发送中断响应信号 int_ack,执行图 3 中的中断隐指令操作。针对本实验的外部中断:保存的断点 mepc_in 是PC;且 Interrupt=1,E_Code=11;转入 IS 的方法是直接将 mtvec 内容置入 PC。CPU 通过执行中断服务程序 IS 来处理中断,IS的最后一条指令一定是中断返回指令,ISC-V 机器模式下就是 mret 指令。执行 mret 指令时,需要发送中断返回信号 int_ret 以返回断点,具体操作见图 3。外部中断处理后,通常是由软件(譬如读中断状态寄存器)来复位外部中断请求。图 2 中,硬件上使用 clr_MEIP 信号清除 mip MEIP。那么由谁、何时发送 clr_MEIP 信号呢?实验用存储器地址 2000 0000H映射了一个自定义寄存器 mipc11,当软件写该地址时,clr_MEIP 置 1,从而复位 MEIP。6 个 CS 寄存器要对其敏感的控制信号做出响应,下面给出 mip 寄存器的 Verilog 代码示例。assign clr_MEIP=(F=32 h2000_0000)Mem_Write;53第 41 卷always (negedge rst_n or posedge csr_clk or posedge INT orposedge clr_MEIP)/mip 寄存器beginif(!rst_n)mip =32h0;else if(INT)mip 11 =1b1;/MEIP=1else if(clr_MEIP)mip 11 =1b0;/MEIP=0else if(csr_Write (csr_A=12h344)/写 mipmip =csr_in;/csr_in=CS csr_Acsr_op rs1_dataend2模型机设计实现2 1目标指令集目标指令集包含 V32I 基础指令和中断相关指令。前期的 CPU 实验,学生已经实现了至少 25 条V32I 指令子集,允许学生在此基础上修改添加,也可以选取表 1 所示的 8 条典型 V32I 指令12,或者以目标导向的方式来选择最小化指令集 以能执行“中断功能测试程序”为设计目标。表 1V32I 目标指令子集指令类型opcode指令功能add rd,rs1,rs2 型0110011加法addi rd,rs1,rs2I 型0010011立即数加法lw rd,imm12(rs1)I 型0000011取字数据sw rs2,imm12(rs1)S 型0100011存字数据beq rs1,rs2,offset12B 型1100011相等跳转jalr rd,offset12(rs1)I 型1100111相对 rs1 跳转并链接jal rd,offset20J 型1101111相对 PC 跳转并链接lui rd,imm20U 型0110111装大立即数表 2 给出了新增的 2 条中断指令和 3 条 CS 指令9,均为 I 型格式。CS 指令同时完成一对原子操作:rs1 与 CS 运算后写入 CS、CS 内容写入 rd。表 2中断指令与 CS 寄存器访问指令指令功能描述mret机器模式下的中断返回指令wfi中断等待指令(Wait for Interrupt)csrrw rd,csr,rs1csrrd,rs1csr(CS 寄存器原子读写)csrrs rd,csr,rs1csrrd,rs1|csrcsr(csr 原子读、置位)csrrc rd,csr,rs1csrrd,csrcsr(csr 原子读、清零)2 2模型机的系统结构和数据通路基于目标指令集,设计出多周期 ISC-V 中断模型机的系统结构,如图 4 所示。存储器采用哈佛结构,指令执行包含经典的五阶段13-14:取指令 IF、译码-读寄存器 ID、执行 EX、访存MEM 和写回 WB。每个阶段都包含了相应的功能部件以及保存操作结果的暂存器/寄存器,例如 I、A/B/F 暂存器、MD 寄存器。初级译码器 ID1 解析指令字段、产生 32 位立即数imm32。译码及控制单元 CU 则进行二次译码,产生全机的控制信号,包括中断控制信号。分析指令在图 4 上的数据通路,可以画出指令执行流程图,如图 5 所示,虚线框表示与中断相关。每条指令的指令周期结束后,都会转移到公共的中断查询周期,询问“int=1?”,如果为 1,则转入中断响应周期,执行中断隐指令。图 4多周期 ISC-V 中断模型机系统结构63第 12 期冯建文:基于 ISC-V 架构的中断实验设计图 5指令执行流程2 3CU 部件设计控制单元 CU 是 CPU 控制中心,有序发送当前指令所需的控制信号,它的设计是 CPU 设计的关键步骤。CU 可采用硬布线或有限状态机 FSM 来实现,由学生自主选择。FSM 实现 CU 的设计步骤如下15:(1)将图 5 中相同的方框合并,构造出状态转移图,如图 6 所示,依据指令操作码执行状态转移。图