《基于可扩展处理器架构的专用指令集处理器及其实现方法.pdf》由会员分享,可在线阅读,更多相关《基于可扩展处理器架构的专用指令集处理器及其实现方法.pdf(19页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103150146 A (43)申请公布日 2013.06.12 CN 103150146 A *CN103150146A* (21)申请号 201310054194.9 (22)申请日 2013.01.31 G06F 9/38(2006.01) G06F 9/318(2006.01) (71)申请人 西安电子科技大学 地址 710071 陕西省西安市太白南路 2 号 (72)发明人 张犁 李钦鹏 李甫 李森 宋云朋 石光明 (74)专利代理机构 陕西电子工业专利中心 61205 代理人 田文英 王品华 (54) 发明名称 基于可扩展处理器架构的专用指令集处理器 及其。
2、实现方法 (57) 摘要 本发明公开了一种基于可扩展处理架构的专 用指令集处理器及其实现方法, 主要解决了现有 技术电路复杂度高和消耗资源大的问题。本发明 针对优化后的可扩展处理架构采用五级流水线的 实现方法, 通过采用数据定向技术和分支未执行 的策略分别解决流水线处理中的数据冒险和控制 冒险, 本发明的专用指令集处理器包括取指单元、 译码单元、 执行单元、 访存单元, 回写单元, 流水线 控制单元, 定时器和中断控制器。 本发明充分考虑 了流水线处理器和现场可编程门阵列的特点, 合 理划分流水线结构和最大限度地利用现场可编程 门阵列的硬件资源。 本发明具有电路设计简单、 资 源消耗资源少、 。
3、处理器性能高和功耗低的优点, 非 常适于大规模并行处理。 (51)Int.Cl. 权利要求书 5 页 说明书 9 页 附图 4 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书5页 说明书9页 附图4页 (10)申请公布号 CN 103150146 A CN 103150146 A *CN103150146A* 1/5 页 2 1. 基于可扩展处理器架构的专用指令集处理器, 包括取指单元、 译码单元、 执行单元、 访存单元、 回写单元、 流水线控制单元、 定时器和中断控制器 ; 所述的取指单元的输出端通 过取指译码寄存器与译码单元相连 ; 所述的译码单元的输出端分别与。
4、定时器、 流水线控制 单元和中断控制器相连, 译码单元的输出端通过译码执行寄存器与执行单元相连 ; 所述的 执行单元的输出端分别与取指单元和流水线控制单元相连, 执行单元的输出端通过执行访 存寄存器分别与执行单元和访存单元相连 ; 所述的访存单元的输出端通过访存回写寄存器 与回写单元相连 ; 所述的回写单元的输出端分别与译码单元和执行单元相连 ; 所述的流水 线控制单元的输出端分别与取指单元和译码单元相连 ; 所述的定时器的输出端与中断控制 器相连 ; 所述的中断控制器的输入端与外部中断请求输入端相连, 输出端与取指单元相连 ; 其中 : 所述的取指单元, 用于访问程序存储器, 取出的当前程序。
5、计数器所指的指令, 为译码单 元提供指令, 产生下一条拟执行的指令的地址 ; 所述的译码单元, 用于按照编码格式和内容对取指单元取出的指令译码, 获得源操作 数地址和目的操作数地址, 取出源操作数和目的操作数, 为执行单元提供操作数和访存单 元提供数据存储器写数据, 产生多周期指令的停顿周期数 ; 所述的执行单元, 用于将译码单元取出的源操作数进行运算、 产生结果和标志位, 完成 特殊寄存器的写操作, 验证有条件分支的预测结果 ; 所述的访存单元, 用于将数据存入数据存储器中或从数据存储器中取出数据 ; 所述的回写单元, 用于完成通用寄存器的写操作 ; 所述的流水线控制单元, 用于产生取指单元。
6、和译码的停顿与清空信号 ; 所述的定时器, 用于对专用指令集处理器的时钟进行精确定时和计数, 产生定时器中 断 ; 所述的中断控制器, 用于控制和管理一个定时器中断和 14 个外部中断的请求, 产生中 断响应信号和中断矢量。 2. 根据权利要求 1 所述的基于可扩展处理器架构的专用指令集处理器, 其特征在于, 所述的取指单元包括程序存储器、 程序计数寄存器、 指令译码器、 数据选择器 1、 加法器、 子 程序处理单元、 中断处理单元、 数据选择器 2、 数据选择器 3、 数据选择器 4 和数据选择器 5 ; 所述的程序存储器的输出端分别与指令译码器和数据选择器 4 的数据输入端相连 ; 所述的。
7、 程序计数寄存器的输出端分别与数据存储器、 加法器和数据选择器 3 的数据输入端相连 ; 所述的指令译码器的输出端分别与数据选择器1的控制端、 数据选择器1的数据输入端、 数 据选择器 2 的控制端、 子程序处理单元和中断处理单元相连 ; 所述的数据选择器 1 的输出 端与加法器相连 ; 所述的加法器的输出端分别与数据选择器 2 的数据输入端、 子程序处理 单元和中断处理单元相连, 加法器的输出端依次通过取指译码寄存器和译码执行寄存器与 执行单元中的分支控制单元相连 ; 所述的子程序处理单元与数据选择器 2 的数据输入端相 连 ; 所述的中断处理单元的输出端与数据选择器2的数据输入端相连 ; 。
8、所述的数据选择器2 的输出端与数据选择器 3 的数据输入端相连 ; 所述的数据选择器 3 的输出端与程序计数寄 存器相连 ; 所述的数据选择器 4 的输出端与数据选择器 5 的数据输入端相连 ; 所述的数据 选择器 5 的输出端通过取指译码寄存器分别与取指单元中的数据选择器 4 的数据输入端、 译码单元中的指令译码器和译码单元中的数据选择器 2 的数据输入端相连。 权 利 要 求 书 CN 103150146 A 2 2/5 页 3 3. 根据权利要求 1 所述的基于可扩展处理器架构的专用指令集处理器, 其特征在于, 所述的译码单元包括指令译码器、 通用寄存器、 特殊寄存器、 符号扩展单元、 。
9、数据冒险检测 单元、 数据定向单元、 多周期指令控制单元、 数据加载指令数据冒险检测单元、 数据选择器 1 和数据选择器 2 ; 所述的指令译码器的输出端分别与通用寄存器、 特殊寄存器、 数据冒险检 测单元、 符号扩展单元、 多周期指令控制单元和数据加载指令数据冒险检测单元相连 ; 所述 的通用寄存器的输出端与数据定向单元相连 ; 所述的特殊寄存器的输出端分别与定时器和 中断控制器相连, 特殊寄存器的输出端通过译码执行寄存器与执行单元中的数据定向单元 2 相连 ; 所述的符号扩展单元的输出端与数据定向单元相连 ; 所述的数据冒险检测单元的 输出端与数据定向单元相连 ; 所述的数据定向单元输出端。
10、通过译码执行寄存器与执行单元 中的数据定向单元 1 相连 ; 所述的多周期指令控制单元的输出端分别与流水线控制单元中 的数据选择器的数据输入端和不等于 0 比较器 1 相连 ; 所述的数据加载指令数据冒险检测 单元的输出端分别与流水线控制单元中的或门 1 和或门 2 相连 ; 所述的数据选择器 1 的输 出端与数据选择器 2 的数据输入端相连 ; 所述的数据选择器 2 的输出端通过译码执行寄存 器分别与译码单元中的数据选择器 1 的数据输入端和执行单元中的指令译码器相连。 4. 根据权利要求 1 所述的基于可扩展处理器架构的专用指令集处理器, 其特征在于, 所述的执行单元包括指令译码器、 数据。
11、冒险检测单元 1、 数据定向单元 1、 数据冒险检测单 元 2、 数据定向单元 2、 数据拼接单元、 整数处理单元、 单精度浮点数处理单元、 整数乘与乘 累加单元、 处理器状态寄存器、 整数乘法结果高 32 位寄存器、 整数乘累加结果高 32 位寄存 器、 整数乘累加结果低 32 位寄存器、 分支处理单元、 数据存储器读写信号产生器、 通用寄存 器写信号产生器、 特殊寄存器写信号产生器和数据选择器 ; 所述的指令译码器的输出端分 别与数据冒险检测单元 1、 数据冒险检测单元 2、 数据拼接单元、 分支处理单元、 数据存储器 读写信号产生器、 通用寄存器写信号产生器、 特殊寄存器写信号产生器和数。
12、据选择器的控 制端相连 ; 所述的指令译码器产生的目的操作数地址分别与译码单元中的特殊寄存器的写 地址端和译码单元中的数据加载指令数据冒险检测单元相连, 指令译码器产生的目的操作 数地址通过执行访存寄存器分别与执行单元中的数据冒险检测单元 1 和数据冒险检测单 元 2 相连, 指令译码器产生的目的操作数地址依次通过执行访存寄存器和访存回写寄存器 分别与译码单元中的数据冒险检测单元和通用寄存器、 执行单元中的数据冒险检测单元 1 和数据冒险检测单元2相连 ; 所述的数据冒险检测单元1的输出端与数据定向单元1相连 ; 所述的数据定向单元 1 输出端的通用寄存器目的操作数通过执行访存寄存器与数据存储。
13、 器的写数据端相连, 数据定向单元 1 输出端的通用寄存器源操作数 1 分别与乘与乘累加单 元、 单精度浮点数处理单元、 整数处理单元和数据选择器的数据输入端相连, 数据定向单元 1 输出的通用寄存器源操作数 2 分别与乘与乘累加单元、 单精度浮点数处理单元和整数处 理单元相连 ; 所述的数据冒险检测单元 2 的输出端与数据定向单元 2 相连 ; 所述的数据定 向单元2输出端的特殊寄存器源操作数1分别与整数处理单元和数据选择的数据输入端相 连, 数据定向单元2输出端的特殊寄存器源操作数2与整数处理单元相连 ; 所述的数据拼接 单元的输出端与数据选择器的数据输入端相连 ; 所述的整数处理单元的输。
14、出端的运算结果 与数据选择器的数据输入端相连, 整数处理单元的输出端的标志位与处理器状态寄存器相 连 ; 所述的单精度浮点数处理单元的输出端的运算结果与数据选择器的数据输入端相连, 单精度浮点数处理单元的输出端的标志位与处理器状态寄存器相连 ; 整数乘与乘累加单元 权 利 要 求 书 CN 103150146 A 3 3/5 页 4 的输出端分别与乘法结果高位寄存器、 整数乘累加结果高位寄存器、 整数乘累加结果低位 寄存器和数据选择器的数据输入端相连 ; 所述的处理器状态寄存器的输出端与分支控制单 元相连 ; 所述的分支处理单元输出端的分支转移控制信号分别与取指单元中的数据选择器 2 的控制端。
15、、 流水线控制单元中的或门 2 和流水线控制单元中的缓冲器相连, 分支处理单元 输出端的分支目标地址与取指单元中的数据选择器 2 的数据输入端相连 ; 所述的数据存储 器读写信号产生器的输出端的读控制信号与译码单元中的数据加载指令数据冒险检测单 元相连, 数据存储器读写信号产生器的输出端的读控制信号通过执行访存寄存器与访存单 元中的数据存储器的读使能端相连, 数据存储器读写信号产生器的输出端的读控制信号依 次通过执行访存寄存器和访存回写寄存器与回写单元中的数据选择器的控制端相连, 数据 存储器读写信号产生器的输出端的写控制信号通过执行访存寄存器与访存单元中的数据 存储器的写使能端相连 ; 所述。
16、的通用寄存器写信号产生器的输出端通过执行访存寄存器与 执行单元中的数据冒险检测单元 1 相连, 通用寄存器写信号产生器的输出端依次通过执行 访存寄存器和访存回写寄存器分别与译码单元中的数据冒险检测单元、 译码单元中的通用 寄存器的写使能信号和执行单元中的数据冒险检测单元 1 相连 ; 所述的特殊寄存器写信号 产生器的输出端与译码单元的特殊寄存器的写使能端相连, 特殊寄存器写信号产生器的输 出端通过执行访存寄存器与执行单元中的数据冒险检测单元 2 相连 ; 所述的数据选择器的 输出端与译码单元的特殊寄存器的写数据端相连, 数据选择器的输出端通过执行访存寄存 器分别与执行单元中的数据定向单元 1 。
17、和执行单元中的数据定向单元 2 相连, 数据选择器 的输出端依次通过执行访存寄存器和访存回写寄存器与回写单元中的数据选择器的数据 输入端相连, 数据选择器的输出端通过执行访存寄存器与访存单元中的数据存储器的地址 端相连, 访存单元中的数据存储器的输出端通过访存回写寄存器与回写单元中的数据选择 器的数据输入端相连, 回写单元中的数据选择器的输出端分别与译码单元中的通用寄存器 的写数据端、 译码单元中的数据定向单元和执行单元中的数据定向单元 1 相连。 5. 根据权利要求 1 所述的基于可扩展处理器架构的专用指令集处理器, 其特征在于, 所述的流水线控制单元包括数据选择器、 寄存器、 加法器、 不。
18、等于 0 比较器 1、 不等于 0 比较 器 2、 非门、 与门、 或门 1、 或门 2 和缓冲器 ; 所述的数据选择器的输出端与寄存器相连 ; 所述 的寄存器的输出端分别与加法器和不等于 0 比较器 2 相连 ; 所述的加法器的输出端与数据 选择器的数据输入端相连 ; 所述的不等于0比较器2的输出端分别与非门、 或门1和译码单 元中的数据选择器 1 的控制端相连 ; 所述的非门的输出和与门相连 ; 所述的不等于 0 比较 器 1 的输出端和与门相连 ; 所述的与门的输出端与数据选择器的控制端相连 ; 或门 1 的输 出端分别与取指单元中的数据选择器3的控制端和取指单元中的数据选择器4的控制端。
19、相 连 ; 或门 2 的输出端与译码单元中的数据选择器 2 的控制端相连 ; 缓冲器的输出端与取指 单元中的数据选择器 5 的控制端相连。 6. 根据权利要求 1 所述的基于可扩展处理器架构的专用指令集处理器, 其特征在于, 所述定时器包括比较器 1、 数据选择器、 计数寄存器、 加法器、 比较器 2、 与门 1 和与门 2 ; 所 述比较器 1 的输出和与门 1 相连 ; 所述数据选择器的输出端与计数寄存器相连 ; 所述计数 寄存器的输出端分别与加法器和比较器 2 相连 ; 所述加法器的输出端与数据选择器的数据 输入端相连 ; 所述比较器2的输出端分别与与门1和与门2相连 ; 所述与门1的输。
20、出端与数 据选择器的控制端相连 ; 所述与门 2 的输出端与中断控制器相连 ; 权 利 要 求 书 CN 103150146 A 4 4/5 页 5 所述的比较器 1 用于读取定时器状态寄存器中的计数模式控制位, 比较所取出的计数 模式控制位是否与重启计数模式的控制位相等 ; 所述的数据选择器和与门 1 用于为计数寄存器置入数据, 当比较器 1 中的比较结果和 比较器 2 的比较结果都为真时, 计数寄存器置入 0, 否则, 计数寄存器置入加 1 后的计数值 ; 所述的计数寄存器用于寄存计数的值, 当定时器状态寄存器中的定时使能有效时, 计 数寄存器才寄存计数值, 否则, 计数寄存器的值保持不变。
21、 ; 所述的加法器用于产生加 1 计数的值 ; 所述的比较器 2 用于读取定时器状态寄存器中的定时周期, 比较读取的定时周期是否 与计数寄存器计数器的值相等 ; 所述的与门2用于产生定时器中断请求, 若比较器2的比较结果为真, 且定时器状态寄 存器中的定时中断使能有效时, 置位定时器中断请求。 7. 根据权利要求 1 所述的基于可扩展处理器架构的专用指令集处理器, 其特征在于, 所述中断控制器包括触发方式控制单元、 屏蔽控制单元、 优先级控制单元、 中断响应产生单 元和中断矢量选择单元 ; 所述触发方式控制单元的输出端与屏蔽控制单元相连 ; 所述屏蔽 控制单元端的输出分别与优先级控制单元和中断。
22、响应产生单元相连 ; 所述优先级控制单元 的输出端与中断矢量选择单元相连 ; 所述中断响应产生单元的输出端与取指单元中的中断 处理单元相连 ; 所述中断矢量选择单元的输出端与取指单元中的中断处理单元相连 ; 所述的触发方式控制单元用于产生符合中断触发方式寄存器所设定的触发方式的中 断请求, 中断触发方式寄存器可以分别设置 15 个中断请求的触发方式是上升沿还是高电 平 ; 所述的屏蔽控制单元用于屏蔽满足触发方式的中断请求, 不响应被屏蔽的中断, 通过 中断屏蔽寄存器可以分别设置 15 个中断请求的屏蔽状态 ; 所述的优先级控制单元用于产生优先级最高的中断请求的序号, 优先响应该中断请 求 ; 。
23、所述的中断响应产生单元用于产生中断响应信号, 若存在符合触发方式, 且没有被屏 蔽的中断请求, 则置位中断响应信号 ; 所述的中断矢量选择单元用于产生将要响应中断的中断矢量, 将优先级控制单元产生 的中断请求的序号左移 2 位即为中断矢量。 8. 一种基于可扩展处理器架构的专用指令集处理器实现方法, 包括取指、 译码、 执行、 访存以及回写五级流水线, 具体步骤如下 : (1) 取指流水线 : 取指单元从程序存储器中取出当前程序计数寄存器所指的指令, 将该指令存入取指译 码寄存器, 依据当前取出的指令类型, 计算出下一条指令的地址, 将该地址存入程序计数寄 存器 ; (2) 译码流水线 : 2。
24、a) 译码单元将取指译码寄存器取出的指令, 按照指令的编码格式和内容进行译码, 获 得源操作数地址和目的操作数地址 ; 2b) 译码单元将通用寄存器文件中取出的源操作数送入执行单元中的所有运算处理单 元中 ; 权 利 要 求 书 CN 103150146 A 5 5/5 页 6 2c) 译码单元将特殊寄存器文件中取出的源操作数送入执行单元中的整数逻辑运算处 理单元中 ; 2d) 译码单元将通用寄存器文件中取出的目的操作数作为数据存储器写数据送入访存 单元中 ; (3) 执行流水线 : 3a) 在当前指令为整数运算指令时, 执行单元将产生的整数运算结果依次送入访存单 元和回写单元, 同时执行单元。
25、将产生的零标志、 负标志、 进位标志和溢出标志写入特殊寄存 器文件中的处理器状态寄存器的第 3 0 位中 ; 3b) 在当前指令为单精度浮点运算指令时, 执行单元将产生的单精度浮点运算结果送 入回写单元中, 同时执行单元将产生的无效操作异常标志、 上溢异常标志和下溢异常标志, 执行单元写入特殊寄存器文件中的处理器状态寄存器的第 10 8 位中 ; 3c) 在当前指令为单精度浮点比较指令时, 执行单元将产生的无序、 大于、 小于、 等于四 种比较结果标志, 写入特殊寄存器文件中的处理器状态寄存器的第 7 4 位中 ; 3d) 在当前指令为特殊寄存器逻辑运算指令时, 执行单元将产生的逻辑运算结果写。
26、入 特殊寄存器文件中 ; 3e) 在当前指令为多周期运算指令时, 则将取指单元和译码单元中的指令保持不变, 数 据保持不变的周期数为执行单元所产生的流水线停顿周期数 ; 3f) 在当前指令为有条件分支指令时, 执行单元产生有条件分支指令的实际跳转方向, 若有条件分支指令的实际跳转方向为转移, 则将取指单元和译码单元中的指令置 0 ; (4) 访存流水线 : 4a) 在当前指令为数据加载指令时, 访存单元从数据存储器中取出整数运算结果所指 的数据, 将所取的存储器读数据送入回写单元 ; 4b) 在当前指令为数据存储指令时, 访存单元将数据存储器写数据写入整数运算结果 所指的数据存储器中 ; (5。
27、) 回写流水线 : 5a) 在当前指令为数据加载指令时, 回写单元将数据存储器读数据写入通用寄存器文 件中 ; 5b) 在当前指令整数运算指令时, 回写单元将整数运算结果写入通用寄存器文件中 ; 5c) 在当前指令为单精度浮点运算指令时, 回写单元将单精度浮点运算运算结果写入 通用寄存器文件中。 权 利 要 求 书 CN 103150146 A 6 1/9 页 7 基于可扩展处理器架构的专用指令集处理器及其实现方法 技术领域 0001 本发明属于电子技术领域, 更进一步涉及到精简指令集微处理器技术领域中的一 种基于可扩展处理器架构的专用指令集处理器及其实现方法。 本发明可应用于嵌入式处理 器,。
28、 尤其是航天图像处理中实现大规模的并行处理。 背景技术 0002 专用指令集处理器技术是为某一特定应用和某一领域应用而专门设计的处理器, 通过研究应用的某些特性来满足所需的性能, 成本和功率等要求, 是对专用集成电路和通 用处理器这两个极端的一种平衡。专用指令集处理器以其专用性强, 灵活性高, 面积小, 速 度快和功耗低等特点, 广泛运用于数字信号处理, 音视频处理, 图像处理等领域。 0003 西安电子科技大学申请的专利 “基于流水线结构的专用指令集处理器” ( 专利申请 号 201110114592.6, 公开号 CN102184092A) 公开了一种适用于数字信号处理应用的四级流 水的专。
29、用指令集处理器。该专利申请依据典型的数字信号处理应用, 采用 16 位的精简指令 集结构, 整个系统被划分为取指、 译码、 执行和回写这四个流水线级, 并通过直接内存访问 单元来提高处理器与外部设备之间的数据传输速率。该专利申请的不足之处在于, 所提出 的四级流水线结构不能适用于基址加变址的寻址方式, 该专利申请没有典型的处理器架构 支持, 此外, 该专利申请没有实现浮点数运算, 定时器和中断管理等常用功能, 功能较单一, 在实际应用中受到很大的局限。 0004 中国科学院沈阳自动化研究所拥有的专利技术 “高性能可编程控制器专用处理器 体系结构及其实现方法” ( 专利申请号 201010210。
30、039.8, 授权号 CN102298322B) 公开了一 种可编程控制器处理器的体系结构。整个系统包括在高速总线上的可编程控制器处理器、 Ethernet MAC10/100M及高速总线仲裁器 ; 并通过高速低速总线桥连接低速总线上的外设, 如 AD、 DA 转换器, 通用型输入输出接口, 计时器, 计数器及中断控制器。其中, 可编程控制器 处理器包括通用处理器与可编程控制器专用指令集处理器, 这两个处理器通过接口连接, 该接口主要通过中断方式, 利用缓冲器实现数据交换。该专利技术公开的可编程控制器专 用指令集处理器采用四级流水线, 包括取指阶段、 译码阶段、 执行阶段、 以及回写阶段。 该。
31、专 利技术的不足之处在于, 整个系统过于复杂, 硬件资源消耗大, 不适于实现处理器的大规模 并行处理。 发明内容 0005 本发明的目的在于克服上述现有技术的不足, 提出了一种基于可扩展处理器架构 的专用指令集处理器及其实现方式。 该专用指令集处理器具有功能完备、 消耗资源小, 运行 速度快, 功耗低等特点, 能够在单片现场可编程门阵列 (FPGA) 中实现处理器的大规模并行 处理。 0006 为了实现上述目的本发明的思路是, 本发明的专用指令集处理器对可扩展处理器 架构进行了优化, 可扩展处理器架构中的高速缓存存储系统优化为现场可编程门阵列内部 说 明 书 CN 103150146 A 7 。
32、2/9 页 8 集成的嵌入式随机访问存储系统 ; 可扩展处理器架构中的窗口寄存器文件优化为 32 个线 性的寄存器文件 ; 可扩展处理器架构中的 256 个陷阱优化为 15 个中断 ; 可扩展处理器架构 中的指令集系统优化为一套基本的专用指令集系统。 优化后的专用指令集处理器被划分为 取指、 译码、 执行、 访存和回写五个流水线级。在译码流水线级和执行流水线级中采用数据 定向技术解决流水线中遇到的数据冒险, 在取指阶段采用分支未执行的预测方式和在执行 流水线验证预测结果来解决流水线中遇到的控制冒险, 同时根据现场可编程门阵列的硬件 资源特点合理地利用硬件资源。 0007 本发明的专用指令集处理。
33、器包括取指单元、 译码单元、 执行单元、 访存单元, 回写 单元, 流水线控制单元, 定时器和中断控制器。 取指单元的输出端通过取指译码寄存器与译 码单元相连。 译码单元的输出端分别与定时器、 流水线控制单元和中断控制器相连, 译码单 元的输出端通过译码执行寄存器与执行单元相连。 执行单元的输出端分别与取指单元和流 水线控制单元相连, 执行单元的输出端通过执行访存寄存器分别与执行单元和访存单元相 连。访存单元的输出端通过访存回写寄存器与回写单元相连。所述的回写单元的输出端分 别与译码单元和执行单元相连。流水线控制单元的输出端分别与取指单元和译码单元相 连。 定时器的输出端与中断控制器相连。 中。
34、断控制器的输入端与外部中断请求输入端相连, 输出端与取指单元相连。 0008 取指单元, 用于访问程序存储器, 取出的当前程序计数器所指的指令, 为译码单元 提供指令, 产生下一条拟执行的指令的地址。 译码单元, 用于按照编码格式和内容对取指单 元取出的指令译码, 获得源操作数地址和目的操作数地址, 取出源操作数和目的操作数, 为 执行单元提供操作数和访存单元提供数据存储器写数据, 产生多周期指令的停顿周期数。 执行单元, 用于将译码单元取出的源操作数进行运算、 产生结果和标志位, 完成特殊寄存器 的写操作, 验证有条件分支的预测结果。 访存单元, 用于将数据存入数据存储器中或从数据 存储器中。
35、取出数据。回写单元, 用于完成通用寄存器的写操作。流水线控制单元, 用于产生 取指单元和译码的停顿与清空信号。定时器, 用于对专用指令集处理器的时钟进行精确定 时和计数, 产生定时器中断。中断控制器, 用于控制和管理一个定时器中断和 14 个外部中 断的请求, 产生中断响应信号和中断矢量。 0009 本发明专用指令集处理器的实现方法的具体步骤如下 : 0010 (1) 取指流水线 : 0011 取指单元从程序存储器中取出当前程序计数寄存器所指的指令, 将该指令存入取 指译码寄存器, 依据当前取出的指令类型, 计算出下一条指令的地址, 将该地址存入程序计 数寄存器。 0012 (2) 译码流水线。
36、 : 0013 2a) 译码单元将取指译码寄存器取出的指令, 按照指令的编码格式和内容进行译 码, 获得源操作数地址和目的操作数地址。 0014 2b) 译码单元将通用寄存器文件中取出的源操作数送入执行单元中的所有运算处 理单元中。 0015 2c) 译码单元将特殊寄存器文件中取出的源操作数送入执行单元中的整数逻辑运 算处理单元中。 0016 2d) 译码单元将通用寄存器文件中取出的目的操作数作为数据存储器写数据送入 说 明 书 CN 103150146 A 8 3/9 页 9 访存单元中。 0017 (3) 执行流水线 : 0018 3a) 在当前指令为整数运算指令时, 执行单元将产生的整数。
37、运算结果依次送入访 存单元和回写单元, 同时执行单元将产生的零标志、 负标志、 进位标志和溢出标志写入特殊 寄存器文件中的处理器状态寄存器的第 3 0 位中。 0019 3b) 在当前指令为单精度浮点运算指令时, 执行单元将产生的单精度浮点运算结 果送入回写单元中, 同时执行单元将产生的无效操作异常标志、 上溢异常标志和下溢异常 标志, 执行单元写入特殊寄存器文件中的处理器状态寄存器的第 10 8 位中。 0020 3c) 在当前指令为单精度浮点比较指令时, 执行单元将产生的无序、 大于、 小于、 等 于四种比较结果标志, 写入特殊寄存器文件中的处理器状态寄存器的第 7 4 位中。 0021 。
38、3d) 在当前指令为特殊寄存器逻辑运算指令时, 执行单元将产生的逻辑运算结果 写入特殊寄存器文件中。 0022 3e) 在当前指令为多周期运算指令时, 则将取指单元和译码单元中的指令保持不 变, 数据保持不变的周期数为执行单元所产生的流水线停顿周期数。 0023 3f) 在当前指令为有条件分支指令时, 执行单元产生有条件分支指令的实际跳转 方向, 若有条件分支指令的实际跳转方向为转移, 则将取指单元和译码单元中的指令置 0。 0024 (4) 访存流水线 : 0025 4a) 在当前指令为数据加载指令时, 访存单元从数据存储器中取出整数运算结果 所指的数据, 将所取的存储器读数据送入回写单元。。
39、 0026 4b) 在当前指令为数据存储指令时, 访存单元将数据存储器写数据写入整数运算 结果所指的数据存储器中。 0027 (5) 回写流水线 : 0028 5a) 在当前指令为数据加载指令时, 回写单元将数据存储器读数据写入通用寄存 器文件中。 0029 5b) 在当前指令整数运算指令时, 回写单元将整数运算结果写入通用寄存器文件 中。 0030 5c) 在当前指令为单精度浮点运算指令时, 回写单元将单精度浮点运算运算结果 写入通用寄存器文件中。 0031 本发明与现有技术相比具有以下优点 : 0032 第一, 由于本发明的专用指令集处理器结合了一般专用指令集处理器的设计特点 和现场可编程。
40、门阵列的资源特点对可扩展处理器架构进行了优化, 克服了现有技术中电路 复杂度高和消耗资源大的缺点, 使得本发明具有电路复杂低、 消耗资源少和功耗低的优点。 0033 第二, 由于本发明的专用指令集处理器根据可编程门阵列的特性, 采用五级流水 线的实现结构, 克服了现有技术中寻址模式不足和运行速度慢的缺点, 使本发明具有寻址 模式丰富和运行速度快的优点。 0034 第三, 由于本发明的专用指令集处理器加入了浮点运算单元、 定时器和中断控制 器, 克服了现有技术中功能单一和不适于嵌入式应用的缺点, 使本发明具有功能完备和适 于嵌入式应用的优点。 说 明 书 CN 103150146 A 9 4/9。
41、 页 10 附图说明 0035 图 1 为本发明的专用指令集处理器的整体结构示意图 ; 0036 图 2 为本发明的专用指令集处理器的取指单元结构示意图 ; 0037 图 3 为本发明的专用指令集处理器的译码单元结构示意图 ; 0038 图 4 为本发明的专用指令集处理器的执行单元结构示意图 ; 0039 图 5 为本发明的专用指令集处理器的访存和回写单元结构示意图 ; 0040 图 6 为本发明的专用指令集处理器的流水线控制单元结构示意图。 具体实施方式 0041 下面结合附图对本发明做进一步的详细描述。 0042 参照图 1, 本发明的专用指令集处理器包括取指单元、 译码单元、 执行单元、。
42、 访存单 元, 回写单元, 流水线控制单元, 定时器和中断控制器。 0043 取指单元的输出端通过取指译码寄存器与译码单元相连, 用于访问程序存储器, 取出的当前程序计数器所指的指令, 为译码单元提供指令, 产生下一条拟执行的指令的地 址 ; 译码单元的输出端与定时器、 中断控制器和流水线控制单元相连, 译码单元的输出端 通过译码执行寄存器与执行单元相连, 用于按照编码格式和内容对取指单元取出的指令译 码, 获得源操作数地址和目的操作数地址, 为执行单元提供操作数和访存单元提供数据存 储器写数据, 产生多周期指令的停顿周期数 ; 执行单元的输出端与取指单元和流水线控制 单元的输入端相连, 执行。
43、单元的输出端通过执行访存寄存器分别与执行单元和访存单元相 连, 用于将译码单元取出的源操作数进行运算、 产生结果和标志位, 完成特殊寄存器的写操 作, 验证有条件分支的预测结果 ; 访存单元的输出端通过访存回写寄存器与回写单元相连, 用于将数据写入数据存储器中或从数据存储器中取出数据 ; 回写单元的输出端分别与译码 单元和执行单元相连, 用于完成通用寄存器的写操作 ; 流水线控制单元的输出分别与取指 单元和译码单元相连, 用于产生取指单元和译码的停顿与清空信号 ; 定时器的输出与中断 控制器相连, 用于对专用指令集处理器的时钟进行精确定时和计数, 产生定时器中断 ; 中断 控制器的输入端与外部。
44、中断请求输入端相连, 输出端与取指单元相连, 用于控制和管理一 个定时器中断和 14 个外部中断的请求, 产生中断响应信号和中断矢量。 0044 参照图 2, 本发明的取指单元包括程序存储器、 程序计数器寄存器 (PC)、 指令译码 器、 加法器、 子程序处理单元、 中断处理单元、 数据选择器 1(MUX1)、 数据选择器 2(MUX2)、 数 据选择器 3(MUX3)、 数据选择器 4(MUX4) 和数据选择器 5(MUX5)。 0045 程序存储器的输出端分别与指令译码器和数据选择器 4 的数据输入端相连, 用于 存储按照该专用处理器指令集编制的程序 ; 程序计数寄存器的输出端分别与数据存。
45、储器、 加法器和数据选择器 3 的数据输入端相连, 用于寄存当前指令的地址 ; 指令译码器的输出 端分别与数据选择器 1 的控制端、 数据选择器 1 的数据输入端、 数据选择器 2 的控制端、 子 程序处理单元和中断处理单元相连, 用于对无条件跳转指令、 子程序调用指令、 子程序返回 指令和中断返回指令进行译码, 获得无条件跳转控制信号、 子程序调用控制信号、 子程序返 回控制信号、 中断返回控制信号和跳转偏移量 ; 数据选择器 1 的输出端与加法器相连, 数据 选择器 1 的两个数据输入端分别与常数 1 和指令译码器产生的跳转偏移量相连, 数据选择 器 1 的控制输入端与指令译码器产生无条件。
46、跳转控制信号, 用于产生顺序取指或无条件跳 说 明 书 CN 103150146 A 10 5/9 页 11 转的地址偏移量, 若无条件跳转控制信号有效, 则数据选择器 1 输出无条件跳转的地址偏 移量, 否则, 数据选择器 1 输出顺序取指的地址偏移量 ; 加法器的输出端分别与数据选择器 2 的数据输入端、 子程序处理单元和中断处理单元相连, 加法器的输出端依次通过取指译码 寄存器和译码执行寄存器与执行单元中的分支处理单元相连, 用于产生顺序取指或无条件 跳转的目标地址 ; 子程序处理单元的输出端与数据选择器 2 的数据输入端相连, 子程序处 理单元的用于产生子程序处理的地址和完成子程序的四。
47、层嵌套, 子程序的四层嵌套通过子 程序调用控制信号和子程序返回控制信号控制深度为 4 的子程序返回栈来完成, 当子程序 调用控制信号有效时, 将加法器的输出(即子程序返回地址)压入子程序返回栈中, 同时子 程序处理单元的输出置为指令译码器产生跳转偏移量 ( 即子程序调用地址 ), 当子程序返 回控制信号有效时, 将子程序返回地址从子程序返回栈中弹出, 子程序处理单元的输出置 为所弹出的子程序返回地址 ; 中断处理单元的输出端与数据选择器 2 的数据输入端相连, 中断处理单元的输入端分别与指令译码器产生的中断返回控制信号和加法器的输出端相 连, 同时中断处理单元的输入还分别与中断控制器产生的中断。
48、响应信号和中断矢量相连, 用于产生中断处理的地址和完成中断的四层嵌套, 中断的四层嵌套通过中断响应信号和中 断返回控制信号控制深度为 4 的中断返回栈来实现, 当中断响应信号有效时, 将加法器的 输出 ( 即中断返回地址 ) 压入中断返回栈中, 中断处理单元的输出置为中断矢量 ( 即中断 响应地址 ), 当中断返回控制信号有效时, 将中断返回地址从中断返回栈中弹出, 中断处理 单元的输出置为所弹出的中断返回地址 ; 数据选择器 2 的输出端与数据选择器 3 的数据输 入端相连, 数据选择器 2 的数据输入端分别与加法器、 子程序处理单元和中断处理单元的 输出相连、 同时数据选择器 2 的数据输。
49、入端还与执行单元中分支处理单元输出端的分支目 标地址相连, 数据选择器 2的控制端与指令译码器中所有的控制信号、 同时数据选择器2的 控制端还与执行单元中分支处理单元输出端的分支转移控制信号相连, 用于产生下一条指 令的地址, 数据选择器 2 在控制端信号的作用下从上述 5 个指令地址中选择 1 个合适的地 址 ; 数据选择器3的输出端与程序计数寄存器相连, 数据选择器3的控制端与流水线控制单 元产生的取指单元停顿信号相连, 用于保持程序计数寄存器的值, 若取指单元停顿信号有 效, 则数据选择器 3 的输出使程序计数寄存器保持不变, 否则, 数据选择器 3 的输出使程序 计数寄存器寄存下一条指令的地址 ; 数据选择器 4 的输出端与数据选择器 5 的数据输入端 相连, 数据选择器 4 的控制端与流水线控制单元产生的取指单元停顿信号相连, 用于使取 指单元输出的指令保持不变, 若取指单元停顿信号有效, 则数据选择器 4 的输出保持不变, 否则, 数据选择器4的输出为当前取出的指令 ; 数据选择器5输出端通过取指译码寄存器分 别与取指单元中的数据选择器 4 的数据输入端、 译码单元中的。