一种并行微处理器及其实现方法

文档序号:6458451阅读:226来源:国知局
专利名称:一种并行微处理器及其实现方法
技术领域
本发明涉及微处理器技术领域,具体地说是一种基于FPGA开发的、 支持并行程序设计语言并行微处理器及其实现方法。
技术背景支持并行程序设计语言OccamII的原始硬件平台是1984年之后英国 INMOS公司陆续推出的IMS T400系列并行定点Transputer微处理器和IMS T800系列并行浮点Transputer微处理器。IMS T400系列并行定点微处理器 包括T414、 T425两种微处理器,IMS T800系列浮点微处理器包括T801 、 T805两种并行微处理器,IMS T400和T800系列并行微处理器分别支持全 部的OccamII语言定点指令集和浮点指令集。但自1989年INMOS公司被 STMicroelectronics收购之后,IMS T400系列和T800系列的并行微处理器 不再向巿场提供,使得IMS T400系列定点并行微处理器和IMS T800系列 浮点并行微处理器处于生命周期终止状态。与本发明最接近的方法是曰本东京Metropolitan大学在《Design of a Transputer Core and its Implementation in an FPGA》 提至(J的T425 Transputer CPU模块实现方法,该文A作者分别为Makoto TANAKA、 NaoyaFUKUCHI、 Yutaka OOKI和Chikara FUKUNAGA ,作者的联系方式为Tb^yo Mefrapo//tow该文献给出的技术主题是实现了 一个被称作TPCORE的IP( Intellectual Property )核,该IP核可以植入FPGA ( Field Programmable Gate Array)中 完成32位并行定点处理器T425 Transputer的CPU功能。在实现原理上,TPCORE是通过微码只读存储器(Micro-code ROM) 方式,实现对状态变化进行描述的,TPCORE仅仅是提供了 32位定点微处 理器T425 Transputer其中的一个CPU模块,而且TPCORE并未涉及到64 位并行浮点微处理器的实现方法。如图1所示,为TPCORE的结构,TPCORE由一个CPU、 一个LINK 模块、存储器控制器及存储器组成,存储器的容量为4K字节,LINK模块 通过四个LINK接口与外部TPCORE进行通信(交换数据)。发明内容针对现有技术中并行微处理器存在未实现Transputer的所有功能的缺 陷,本发明要解决的技术问题是提供一种可完全替代Transputer的并行微处 理器及其实现方法。为解决上述技术问题,本发明釆用的技术方案是本发明并行微处理器,基于FPGA开发,包括中央处理器为由取指译码单元、进程管理单元和整数指令执行单元构 成的32位定点中央处理器,中央处理器执行指令的预取指和译码操作、负 责串行进程和并发进程的调度管理,实现多个进程之间的数据通信;通过 通讯模块在多个处理器之间进行数据通信,实现分布式处理器之间的协同 工作;通讯模块,由多组相互独立的LINK通道和In/Out控制器组成,执行主 机接口功能,实现与外部处理器通讯;仲裁控制器,根据取指译码单元、整数指令执行单元、进程管理单元中 和通讯模块的总线请求的优先级,对中央处理器的内外部地址总线和数据总线进行仲裁;外部存储器接口,在仲裁控制器的控制下,对外部存储器提供读/写操作的时序逻辑;中断/时序控制器,用于对中央处理器提供定时与中断; 内部存储器,提供中央处理器的指令及数据的快速存取; 调试接口 ,提供对中央处理器内部状态进行分析/调试的功能; 时钟管理单元,生成并行微处理器各种内部时钟。 所述In/Out控制器具有以下结构译码控制单元,对中央处理器传送来的In/Out控制信息进行判断,并 进一步解析出该执行接收/发送命令的LINK通道、要接收/发送的数据长度 以及接收数据的目的地址/发送数据的源地址;发送控制单元,接收译码控制单元的控制信息,接收通过读存储器控制器得到的存储器数据发送至LINK通道;向读存储器控制器发送读请求和 地址;读存储器控制器,接收发送控制单元输入的命令,发送读请求和地址 至读/写存储器仲载器;接收读/写存储器仲载器返回的数据发送至发送控制单元 ^存储器控制器,接收接收控制单元输入的命令,发送写请求和地址 至读/写存储器仲载器;读/写存储器仲载器,对读存储器控制器发送的读请求和写存储器控制器发送的写请求进行仲载;接收存储器数据发送给读存储器控制器;发送 存储器数据及存储器地址至仲载控制器;接收控制单元,接收译码控制单元的控制信息,接收link通道的数据, 向写存储器控制器发送写请求和地址。所述取指译码单元具有以下结构取指单元,通过仲裁控制器将内部存储器或外部存储器中存放的32位 数据转化为4条8位存储器码;译码单元,将上述存储器码进行译码,译码后的指令存放在指令队列 中,同时将该指令的指针存放在指令指针队列中;指令队列与指令指针队列,均由先进先出队列实现,其写请求控制端 与译码单元的指令译出信号相连,读请求控制端接至指令周期设置单元的 读指令队列信号;指令周期设置单元,对要执行指令所需要的指令周期数进行设置,设 置周期完成后将指令发射到整数指令执行单元。所述中央处理器还具有浮点运算单元,其结合32位定点中央处理器构成64位浮点中央处理器;所述浮点运算单元的构成如下浮点运算子单元,接收来自取指译码单元中指令周期设置单元及浮点 接口单元送出的浮点指令,根据具体指令的内容选择相应的浮点计算类型 对由堆栈中读取的操作数进行相关浮点运算;堆栈,装载由浮点运算子单元返回的运算结果或数据格式转换模块送 来的搡作数,负责向数据格式转换模块送出运算结果;接收浮点运算子单 元送出的出错信息;数据格式^Si莫块,对来自内部或外部存储器的定点搡作数进行格式 转换,转换结果送至堆栈;64位浮点中央处理器中的取指译码单元还具有浮点接口单元,对从取指译码单元的指令队列中读取的浮点指令进行分类,实现整数指令执行单 元与浮点运算单元的并行工作。所述浮点运算子单元具有尾数计算模块、指数计算模块、归一化模块、 舍入模块、移位模块以及出错处理模块,其中移位模块根据指数计算模块 计算结果进行相应的移位操作,同时尾数计算模块通过归一化模块根据移位模块的移位结果进行相应的归一化操作;舍入模块对归一化结果进行相 应的舍入搡作,舍入结果送至出错处理模块,如果计算错误,则输出出错 标志至堆栈。堆栈采用双堆栈结构,其中一组堆栈用于存储32位位宽的数据或64 位位宽的数据,另一组堆栈用于存储数据的长度,两组保持同步出栈或进 栈。本发明并行微处理器实现方法,包括以下步骤通过In/Out控制器将启动代码从通讯模块的LINK通道接收并写入内 部存储器中;通过In/Out控制器将启动成功的信息发送至32位定点并行处理器的 中央处理器,取指译码单元将从内部存储器读回的数据进行译码,根据整 数指令执行单元的忙闲状态将整数指令发送给整数指令执行单元;整数指令执行单元执行相应指令并启动进程管理功能;如果取指译码单元发送的是In/Out命令,则In/Out控制器根据接收到 的In/Out命令执行相应的操作;如果通信模块向32位定点并行处理器的中央处理器发送读/写请求,仲裁控制器会根据内部存储器或外部存储器的地址规则对读/写请求进行^卜部存储器接口接收到读/写请求后根据内部状态机的控制执行相应 读/写操作;中断/时'序控制器接收外部存储器接口的数据,并对该数据进行解码, 并执行相应的中断。本发明方法还包括以下步骤所述中央处理器为64位浮点中央处理器,取指译码单元将从内部存储 器读回的数据进行译码,译码后得到的浮点指令分为0类、1类及2类指令, 根据整数指令执行单元和浮点运算单元的忙闲状态将整数指令或浮点指令 发送给整数指令执行单元或浮点运算单元;浮点运算单元也参与执行相应指令并启动进程管理功能;如果通信模块向64位浮点并行处理器的中央处理器发送读/写请求, 仲裁控制器会根据内部存储器或外部存储器的地址规则进行对读/写请求 进行仲裁;所述0类、1类及2类指令为按其执行时所需要的资源情况进行分类 第0类指令在执行时只占用定点指令执行模块中的资源; 第1类指令在执行时只占用浮点运算模块中的资源; 第2类指令在执行时除了占用浮点运算模块中的资源外,还要占用 定点指令执行模块中的部分资源;其中第o类指令和第l类指令可以并行执行,包括以下两种情况;1) 指令队列中先取出的指令为第O类指令,接着又取出的指令为第1 类指令,如果此时浮点运算模块的状态为空闲,则第1类指令和第o类指 令同时执行;2) 指令队列中先取出的指令为第1类指令,接着又取出的指令为第O 类指令,如果此时定点指令执行模块的状态为空闲,则第0类指令和第1类指令同时执行;其他情况下,定点指令执行模块与浮点运算模块不可以并行工作。 所述浮点运算单元执行相应指令,包括浮点加、减、乘、除、开方、求余、取整运算以及各种数据类型间的相互转换,其中加、减、乘、除、开方、取整运算的运算结果釆用舍入方式得到,求余运算釆用以下步骤实现判断两个操作为定点还是浮点;若两个操作数均为浮点,如果被求余数A的指数比除数B的指数大n, 则i x2"的指数等于A的指数,将^-Sx2"作为下次循环减法的部分被求余 数;将A和B的尾数高位对齐,则^-5x2"的结果尾数部分高位为零,通 过归一化处理得到H2"之差为4, 4指数至少能相对A的指数降低1; 如果4指数大于B的指数,则^为部分余数,则循环上述操作"-i次,直到部分余数A,指数小于等于除数B的指数为止;当A,指数等于B的指数时,如果A,尾数大于B尾数的一半,则将A减去B的差作为最终的余数,否则A就是最终余数,其中n为整数。所述归一化处理在计算前或者计算结東后进行, 一次归一化过程分成 两级归一化过程实现把操作数的尾数均分成若干大段,对尾数部分进行 前导零的个数判断;进行相应次数的移位操作,指数部分根据尾数的移位次数同步进行相应的增减操作;每段共享同一个第二级归一化模块;第二级归一化过程包括对尾数部分进行前导零的个数判断;进行相应次数的移位操作,指数部分根据尾数的移位次数同步进行相应的增减搡作。 所述舍入方式包括为单精度数据舍入及双精度数据舍入,其中单精度数据舍入在小数点后第23位开始,双精度舍入在小数点后第52位开始; 在舍去数据部分中釆用了三个附加位,从舍去数据部分高位到低位依次为 保护位、舍入位及粘接位;粘接位是将粘接位其后及粘接位本身全部"或" 运算;如果采用就近舍入模式,并且附加位是"100"时,遵循趋偶舍入的原 则决定数据有效位是否加1,其中有效位是保护位之前的所有数据。所述进程管理功能由中央处理器中的进程管理单元实现,包括以下步骤以进程为单位,具有高、低两种优先级的进程,分别以0、 l进行标识; 根据角色的不同将进程划分为父进程与子进程;高优先级进程能够有条件 地中断低优先级进程的执行过程;设置四个队列,其中两个分别为高、低 优先级进程等待执行队列,剩余两个分别为高、低优先级进程等待时间到 队列;将进程分为执行中、处于中断中、准备好等待执行、被去调度等待 以及通信中这五种状态;设置五个外部通道,其中四个供外部微处理器之 间进行数据传输, 一个用于响应上层的请求;首先一个进程被生成并根据其优先级放置在对应的准备好等待队列中;当没有正在执行的进程且没有被中断进程时,处于准备好等待状态的 进程队列中最先准备好的进程被启动运行,转换为正运行的进程;进程在运行过程中由于运行时间片到而被重调度回准备好等待队列中;进程在运行过程中,遇到时间等待指令,则被去调度添加到时间等待 队列中,当时间等待队列中的进程等待的时间到后,则被重调度;若当前 运行进程为低优先级进程且被重调度的进程为高优先级进程,则这个高优 先级进程中断正在运行的低优先级进程;如果当前没有进程正在执行,则 该重调度进程直接被调用执行,否则该重调度进程被添加到准备好等待队 列中;当运行的进程遇到等待通道、等待数据通信或等待上层请求时,被去调度;当被去调度的进程所等待的条件准备好后被重调度,若该重调度进 程同时处在时间等待队列中,则从时间等待队列中删除该进程;如果当前 运行进程为低优先级进程而被重调度的进程为高优先级进程,则该高优先级进程中断正在运行的低优先级进程;如果当前没有进程正在执行,则该重调度的进程直接被调用执行,否则该重调度的进程被添加到准备好等待队列中;当运行中的进程为低优先级进程时,若遇到高优先级的进程准备好了, 则这个低优先级的进程被中断成为被中断的进程;当该中断进程执行结束 或被去调度,且当前没有高优先级的进程准备好,则这个被中断进程先被 执行。高优先级进程准备好后中断低优先级的进程包括 保存并修改当前工作空间地址、指令指针、数据队列的相关寄存器内^等待时机中断当前低优先级进程或将该高优先级进程加入到相应待执 行队列中执行进程重新调度;中断处理,保存被中断进程的主要相关信息并修改当前工作空间地址 以及指令指针。所述时间片到而被重调度,即时间片到调度进程包括保存该进程当 前的指令指针,修改相关工作空间内容,将该进程添到等待执行的进程队 列中。所述进程等待时间到后被重调度包括当任一时间等待队列中的头进程等待时间到,则将该进程添加到对应 等待执行的进程队列中,修改等待时间队列中的相关寄存器以及进程相关 地址空间的内容。所述进程遇到时间等待指令,被去调度添加到时间等待队列中包括 根据需去调度并添加到对应时间队列的进程的优先级情况以及需要等 待的时间,查找对应队列的插入位置,将该进程正确地加入到对应队列中。 所述从时间等待队列中删除进程包括一个进程处于等待通道的同时还处于时间等待队列中,若其所等待的 通道先准备好,则将该进程添到对应的等待执行队列中,同时将该进程从 时间等待队列中删除。本发明具有以下有益效果及优点1. 32位定点并行微处理器PN4支持Transputer 32位定点并行微处理 器的全部定点指令集,64位浮点并行微处理器PN8支持Transputer 64位浮点并行微处理器的全部浮点指令集,用OccamII程序设计语言编写的并行 程序能够稳定地运行在本发明的PN4和PN8并行微处理器中,便于系统的 修改和调试,加快了验证速度,从而为OccamII语言所编写的程序提供了 低成本的运行平台;如果配备对应高级语言编译器,由其他高级编程语言编写的程序也可以运行在32位定点并行微处理器PN4和64位浮点并行微 处理器PN8中。2. 本发明的32位并行定点微处理器PN4,采用的是自底向上设计法、 用VHDL硬件描述语言实现的;而PN4可以实现TransputerT400系列并行 定点处理器全部功能。3. 本发明的64位浮点并行微处理器PN8,釆用的是自底向上设计法、 用VHDL硬件描述语言实现的;而PN8可以实现TransputerT800系列并行 浮点处理器全部功能。


图1为现有技术中TPCORE的结构图;图2为32位定点/64位浮点并行微处理器结构图;图3为IN/OUT控制器数据流程图;图4为取指译码单元的结构示意图;图5为应用于本发明的一个进程的5个状态之间的转换关系图; 图6为64位浮点运算单元结构图;图7为本发明进程管理单元(PMU)各个事件处理子模块间关系图。
具体实施方式
本发明并行微处理器具有两种表现实体,分别为32位定点并行微处理 器(PN4 )和64位浮点并行微处理器(PN8 )。 32位并行定点微处理器PN4 支持Transputer 32位定点并行微处理器的全部定点指令集,64位浮点并行 微处理器PN8支持Transputer 64位浮点并行微处理器的全部浮点指令集, 用OccamII程序设计语言编写的并行程序能够稳定地运行在本发明的PN4 和PN8并行微处理器中,从而解决了 OccamII并行程序运行的硬件平台问 题。本发明32位定点并行微处理器PN4的结构如图2所示,为不包含浮 点运算单元的部分,该处理器主要由中央处理器(CPU) 1通讯模块(Link) 2、仲裁控制器(Arbirer) 3、外部存储器接口 (EMI) 4、中断/时序控制器 (ITC) 5、内部存储器(4Kbyteram) 6、调试接口 (DI) 6和时钟管理单 元(CMU) 8构成。其中中央处理器(CPU) 1,由取指译码单元(FDU) 10、进程管理 单元(PMU) 11和整数指令执行单元(EU)构成,取指译码单元10根据 进程管理单元11传来的取指地址,在仲裁控制器3空闲期间执行指令的预 取指和译码操作、进程管理单元11负责PN4/PN8处理器内部串行进程和并 发进程的调度管理,实现多个进程之间的数据通信;该单元也可通过Link 通讯模块2在多个PN4/PN8处理器之间进行数据通信,实现分布式处理器 之间的协同工作;通讯模块2,由多组(本实施例为4组)相互独立的LINK通道和In/Out 控制器组成,执行主机接口功能,实现与外部处理器通讯;仲裁控制器3,根据取指译码单元IO、整数指令执行单元和通讯模块2 的总线请求的优先级,对中央处理器(CPU) 1的内外部地址总线和数据总线进行仲裁;中央处理器(CPU) 1的整数指令执行单元与LINK模块具有 等同的高优先级,取指译码单元10中的取指单元(FU)通常具有较低的优先级。根据先来先服务原则对具有等同优先级的请求进行仲裁;高优先级的请求可以打断低优先级的请求。外部存储器接口 4,在仲裁控制器3的控制下,对外部存储器提供读/写操作的时序逻辑;中断/时序控制器5,用于对中央处理器(CPU) l提供定时与中断; 内部存储器6,提供中央处理器(CPU) 1的指令及数据的快速存取; 调试接口 7,提供对中央处理器(CPU) 1内部状态进行分析/调试的功能;时钟管理单元8,生成微处理器工作时所需要的各种内部时钟。 如图3所示,所述In/Out控制器具有以下结构译码控制单元,对中央处理器(CPU) 1传送来的In/Out控制信息进行 判断,并进一步解析出该执行接收/发送命令的LINK通道、要接收/发送的 数据长度以及接收数据的目的地址/发送数据的源地址;发送控制单元,接收译码控制单元的控制信息,接收通过读存储器控 制器得到的存储器数据发送至LINK通道;向读存储器控制器发送读请求和 地址;读存储器控制器,接收发送控制单元输入的命令,发送读请求和地址 至,/写存储器仲载器;接收读/写存储器仲载器返回的数据发送至发送控制单元.^存储器控制器,接收接收控制单元输入的命令,发送写请求和地址至读/写存储器仲载器;读/写存储器仲载器,对读存储器控制器发送的读请求和写存储器控制器发送的写请求进行仲载;接收存储器数据发送给读存储器控制器;发送 存储器数据及存储器地址至图2中的仲载控制器3;接收控制单元,接收译码控制单元的控制信息,接收LINK通道的数据,向写存储器控制器发送写请求和地址。取指译码单元10具有如图4所示的结构取指单元12,通过仲裁控制器3将内部存储器6或外部存储器中存放 的32位数据d—to—fetch转化为4条8位的存储器码;译码单元13,将上述存储器码进行译码,译码后的指令存放在指令队 列16中,同时将该指令的指针(Iptr)存放在指令指针队列17中;指令队列16与指令指针队列17均由先进先出队列实现,其写请求控 制端与译码单元13的指令译出信号相连,读请求控制端接至指令周期设置 单元14的读指令队列信号;指令周期设置单元14,对要执行指令所需要的指令周期数进行设置, 设置周期完成后将指令发送到整数指令执行单元。如图2所示,本发明64位浮点并行微处理器结构与32位定点并行微 处理器不同的是中央处理器(CPU) 1除具有取指译码单元10、进程管 理单元11和整数指令执行单元外,还包含浮点运算单元9,取指译码单元 根据进程管理单元传来的取指地址,在仲裁控制器3空闲期间执行指令的 预取指和译码操作、进程管理单元(PMU) 11负责内部串行进程和并发进 程的调度管理,实现多个进程之间的数据通信;根据取指译码单元(FDU) IO传来的操作码和操作数,执行相应的浮点运算操作,得到所需的浮点运 算结果。通讯模块2、仲裁控制器3、外部存储器接口4、中断/时序控制器5、 内部存储器6、调试接口 7以及时钟管理单元8之间的连接关系及各自作用 均与32位定点并行微处理器相同,这里不作重述。如图3所示,通讯模块2中的In/Oiit控制器的结构及作用与32位定点 并行微处理器相同,这里不作重述。如图4所示,所述64位浮点并行微处理器中取指译码单元10除具有 32位定点并行微处理器中取指译码单元10的所有结构及连接关系外,还具 有浮点接口单元,其对从指令队列16中读取的指令进行分类,实现PN8 中整数指令执行单元与浮点运算单元9的并行工作。上述浮点运算单元9构成如图6所示浮点运算子单元18,接收来自取指译码单元10中指令周期设置单元 14及浮点接口单元15送出的浮点指令,根据具体指令的内容选择相应的浮 点计算类型对由堆栈中读取的操作数进行相关浮点运算;堆栈19,装载由浮点运算子单元18返回的运算结果或数据格式转换模 块送来的操作数,负责向数据格式转换模块送出运算结果;接收浮点运算 子单元18送出的出错信息;数据格式转换模块,对来自内部或外部存储器的定点操作数进行格式 转换,转换结果送至堆栈。上述浮点运算子单元18具有尾数计算模块、指数计算模块、归一化模 块、舍入模块、移位模块以及出错处理模块,其中移位模块根据指数计算 模块计算结果进行相应的移位操作,同时归一化模块根据移位模块的移位 结果进行相应的归一化操作,然后尾数计算模块对归一化模块的归一化结 果作计算操作,将计算结果再次放到归一化模块进行归一化操作;舍入模 块对归一化结果进行相应的舍入操作,舍入结果送至出错处理模块,如果 计算错误,则输出出错标志至堆栈。上述堆栈19釆用双堆栈结构,其中一组堆栈用于存储32位位宽的数 据或64位位宽的数据,另一组堆栈用于存储数据的长度,两组保持同步弹 栈或压栈。本发明32位定点并行微处理器、64位浮点并行微处理器共有的相同单元均有相同的实现方法,64位浮点并行微处理器还额外具有对浮点指令执 行的实现方法,包括以下步骤通过In/Out控制器将启动代码从通讯模块2的LINK通道接收并写入 内部存储器中;通过In/Out控制器将启动成功的信息发送至中央处理器(CPU) 1,取 指译码单元10将从内部存储器6读回的数据进行译码,译码后得到的指令 分为0类、1类及2类指令,根据整数指令执行单元和浮点运算单元9的忙 闲状态将整数指令或浮点指令发送给整数指令执行单元或浮点运算单元9;整数指令执行单元或浮点运算单元9执行相应指令并启动进程管理功能;如果取指译码单元IO发送的是In/Out命令,则In/Out控制器根据接收 到的In/Out命令执行相应的操作;如果通信模块2与中央处理器(CPU) 1同时发送读/写请求,仲裁控 制器会根据内部存储器或外部存储器的地址规则进行对读/写请求进行仲 裁;外部存储器接口 4接收到读/写请求后根据内部状态机的控制执行相 应读/写操作;中断/时序控制器5接收外部存储器接口 4的数据,并对该数据进行解码,并执行相应的中断。所述在64位浮点并行微处理器中,指令按其执行时所需要的资源情况,可以分成三大类第0类指令在执行时只占用整数指令执行模块中的资源;第l类指令在执行时只占用浮点运算模块中的资源;第2类指令在执行时除了占用浮点运算模块中的资源外,还要占用整数指令执行模块中的部分资源;其中第0类指令和第1类指令可以并行执行。如图7所示,所述进程管理功能由中央处理器(CPU) 1中的进程管理 单元11并行实现,包括以下步骤以进程为单位,具有髙、低两种优先级的进程,分别以0、 l进行标识; 根据角色的不同将进程划分为父进程与子进程;高优先级进程能够有条件地中断低优先级进程的执行过程,让其自身优先执行;设置四个队列,其中两个分别为高、低优先级进程等待执行队列,剩余两个分别为高、低优先级进程等待时间到队列;将进程分为执行中、处于中断中、准备好等待 执行、被去调度等待以及通信中这五种状态;设置五个外部通道,其中四 个供外部微处理器之间进行数据传输, 一个用于响应上层的请求;首先一个进程被生成并根据其优先级放置在对应的准备好等待队列中;当没有正在执行的进程且没有被中断进程时,处于准备好等待状态的 进程队列中最先准备好的进程被启动运行,转换为正运行的进程;进程在运行过程中由于运行时间片到而被重调度回准备好等待队列 中; 一个高优先级的进程时钟每1US计一次数, 一个低优先级的进程时钟每64us计一次数,高优先级进程时钟每走1024次称为一个时间片,当一个低 优先级的进程连续执行两个时间片后,执行到跳转(j)或循环(lend)指 令,这个进程将会被重调度回到准备好等待队列中,而队列中最先准备好 的进程将会被执行。进程在运行过程中,遇到时间等待指令,需要等待一段时间,则被去 调度添加到时间等待队列中,当时间等待队列中的进程等待的时间到后, 则被重调度;若当前运行进程为低优先级进程且被重调度的进程为高优先 级进程,则这个高优先级进程中断正在运行的低优先级进程使其自身被优 先执行;如果当前没有进程正在执行,处于空闲等待状态,则该重调度进 程直接被调用执行,否则该重调度进程被添加到准备好等待队列中;当运行的进程遇到等待通道、等待数据通信或等待上层请求时,被去 调度;当被去调度的进程所等待的条件准备好后被重调度,若该重调度进 程同时处在时间等待队列中,则从时间等待队列中删除该进程;如果当前 运行进程为低优先级进程而被重调度的进程为高优先级进程,则该高优先 级进程中断正在运行的低优先级进程使其自身被优先执行;如果当前没有 进程正在执行整个处理器处于空闲等待状态,则该重调度的进程直接被调 用执行,否则该重调度的进程被添加到准备好等待队列中;当运行中的进程为低优先级进程时,若遇到高优先级的进程准备好了, 则这个低优先级的进程被中断成为被中断的进程;当该中断进程执行结束 或被去调度,且当前没有高优先级的进程准备好,则这个被中断进程先被 执行,而不是执行准备好等待队列中的进程。高优先级进程准备好后中断低优先级的进程包括保存并修改当前工作空间地址、指令指针、数据队列的相关寄存器内容;等待到特定的某些时刻,中断当前低优先级进程(执行中断处理子模 块)或将该高优先级进程加入到相应待执行队列中执行进程重新调度;中断处理,保存被中断进程的主要相关信息,并修改当前工作空间地 址以及指令指针。所述时间片到而被重调度,即时间片到调度进程包括保存该进程当 前的指令指针,修改相关工作空间内容,将该进程添到等待执行的进程队 列中。所述进程等待时间到后被重调度包括分为高低优先级两个部分功能子模块。当任一时间等待队列中的头进 程等待时间到,则将该进程添加到对应等待执行的进程队列中,修改等待时间队列中的相关寄存器以及进程相关地址空间的内容。所述进程遇到时间等待指令,被去调度添加到时间等待队列中包括 根据需要去调度并添加到对应时间队列的进程的优先级情况以及需要等待的时间,查找对应队列的插入位置,将该进程正确地加入到对应队列中,保证头进程为等待时间最短的队列。所述从时间等待队列中删除进程包括一个进程处于等待通道的同时还处于时间等待队列中,若其所等待的 通道,准备好,则将该进程添到对应的等待执行队列中,同时将该进程从对于64位浮点并行微处理器的实现方法中,浮点运算单元9执行相应 指令包括浮点加、减、乘、除、开方、求余、取整运算以及各种数据类型 间的相互转换,其中加、减、乘、除、开方、取整运算的运算结果釆用舍 入方式得到,求余运算采用以下步骤实现判断两个操作数为定点数据还是浮点数据;若两个操作数均为浮点数据,如果被求余数A的指数比除数B的指数 大n,则Sx2"的指数等于A的指数,将j-Bx2"作为下次循环减法的部分 被求余数;将A和B的尾数高位对齐,则J-Bx2"的结果尾数部分高位为 零,通过归一化处理得到i x2"之差为^, 4指数至少能相对A的指数 降低l;如果^指数大于B的指数,则^为部分余数,则循环上述操作M-1 次,直到部分余数A指数小于等于除数B的指数为止;当A,指数等于B的 指数时,如果4,尾数大于B尾数的一半,则将A,减去B的差作为最终的余 数,否则A,就是最终余数,其中n为整数。所述归一化处理在计算前或者计算结束后进行, 一次归一化过程分成 两级归一化过程实现把操作数的尾数均分成若干大段,对尾数部分进行 前导零的个数判断;进行相应次数的移位操作,指数部分根据尾数的移位次数同步进行相应的增减操作;每段共享同一个第二级归一化模块;第二 级归一化过程包括对尾数部分进行前导零的个数判断;进行相应次数的 移位搡作,指数部分根据尾数的移位次数同步进行相应的增减搡作。所述舍入方式包括为单精度数据舍入及双精度数据舍入,其中单精度数据舍入在小数点后第23位开始,双精度舍入在小数点后第52位开始;这 样就可以用同一个舍入处理模块通过单双精度控制来完成两类不同的舍入 处理,既节省了电路规模也提高了速度。在舍去数据部分中采用了三个附 加位,从舍去数据部分高位到低位依次为保护位、舍入位及粘接位;粘接 位是将粘接位其后及粘接位本身全部"或"运算;如果釆用就近舍入模式,并 且附加位是"100"时,遵循趋偶舍入的原则决定数据有效位是否加l,其 中有效位是保护位之前的所有数据。下面分别阐述本发明32位定点并行微处理器及64位浮点并行微处理器中关键部件的工作过程。1. In/Out控制器负责控制LINK完成中央处理器(CPU) l传来的接收/发送指令。如图 3所示,其具体执行流程是译码控制单元解析CPU传送来的接收/发送命 令,得到该命令是否是LINK的接收/发送命令,如果是LINK的接收/发送 命令,进一步会解析出执行接收/发送命令的LINK通道,要接收/发送的数据长度,接收数据的存储器地址/发送数据的存储器地址。当执行发送命令时,发送控制单元会向相应的LINK通道和读存储器控制器发送命令,读存储器控制器接下来向读/写存储器仲裁器发送读命令和 读地址,在数据读回后发送控制单元会将该数据传送给相应的LINK通道, 写入该LINK通道的发送FIFO。执行接收命令时,接收控制单元将从相应LINK通道接收到的数据和写 数据地址发送给写存储器控制器,然后写存储器控制器对数据进行必要整 理之后发送给存储器读写仲裁,由读/写存储器仲裁器完成写存储器操作。发送控制单元、接收控制单元都是4通道的模块,它们可以对4组LINK 同时执行发送或接收操作。读存储器控制器和写存储器控制器是4通道的 模块,它们能处理来自4组LINK的读写请求。2. 中央处理器(CPU)中的取指译码单元如图4、 6所示,PN4/PN8的取指译码单元主要由以下几个子单元构成 取指单元(Fetch Unit )12、译码单元(Decode Unit) 13、指令队列(Instruction Queue) 16与指令指针队列(Iptr Queue) 17、指令周期设置单元(Set Cycle Unit )14。 PN8内部还有浮点接口单元(Floating Point Interface Unit )15, 实现整数指令执行单元与浮点运算单元的并行处理及数据交换。取指单元12通过仲裁控制器(Arbiter) 3将读存储器操作(rd—fetch ) 信号发送给内部存储器6或外部存储器接口 4,并通过仲裁控制器(irbiter) 3将内部或外部存储器中存放的指令(d—to—fetch)发送到取指单元中,取 指单元将32bit的d_to_fetch转化为4条8bit存储器码(mem—code ),这4 条存储器码经过指i译码单元(Decode Unit) 10译码后,将桑码后的指令 (opr—code和opr一data)存放在指令队歹'J (Instruction Queue ) 16中,同时 将该^令的Iptr^f放在指令指针队列(IptrQueue) 17中,每次读队列操作 (rd—queue)时从队列中取出一条指令(opi二code )和与之对应的操作数 (opr_data)并取出与之相对应的下一条指令f旨针(Iptr)。在周期设置单元 (Set"Cycle Unit)中对执行该指令所需要的指令周期数进行设置。浮点接口 单元(Floating Point Interface ) 15跟据浮点运算子单元18是否处于空闲状 态来决定是否向浮点运算单元9发送浮点指令(0pr_COde_fl0at),并决定是 否需要设置执行该浮点指令所需要的时钟周期(exe—cnt—float)。设置周期 完成后将指令发射到整数指令执行单元(Execute Unit )或浮点运算单元9 中执行。当指令执行时,每个时钟周期指令周期数减1, exe—cnt减到l时,表示当前定点处理器指令执行完毕;当exe—cnt—float减到1时表示当前浮 点运算指令执行完毕。取指单元12的主要功能是预取指令,取指单元12每次通过仲裁控制 器(Arbiter) 3由片内存储器6/片外存储器读取32位数据(d—to—fetch), 这32位的d—to—fetch由仲裁控制器(Arbiter) 3到达取指单元12》,取指 单元12将32位的d—to—fetch按字节顺序分解为4条8位的存储器码 (mem—code),并每次fS^i^码单元13发送1条存储器码,译码单元13接收 到这4条存储器码中的第1条后,取指单元12将会通过仲裁控制器(Arbiter) 3读取后续的下一个字地址中的指令。遇到跳转指令时,取指单元12丢弃已经取到的所有指令,而由跳转地 址处重新开始读取指令。译码单元13将每条指令译为16位的操作码(opr_code)和32位的搡 作数(opr一data)。每译完一条指令,则产生写队列请f信号(wr—fifo),将 16位的操T乍码和32位的操作数写入到指令队列16中,同时将f一条指令 的地址(Iptr)写入到指令指针队列17中。译码单元12根据存储器码(mem一code)的功能码(存储器码的高4 位)来决定一条指令是否已经译出,有"f列4种情况1) 当功能码为2时,将搡作数左移4位后加上存储器码中的数据(低 4位)得到新的操作数,无指令译出;2) 当功能码为6时,将操作数左移4位后加上存储器码中的数据(低 4位)后,按位取反后得到新的操作数,无指令译出;3) 当功能码为0、 1、 3、 4、 5、 7、 8、 9、 A、 B、 C、 D和E时,将搡 作数左移4位后加上存储器码中的数据(低4位)得到新的操作数,指令 译出,将16位的操作码和32位的搡作数写入到指令队列中,同时将下一 条指令的地址写入到指令指针队列中;4) 当功能码为F时,功能码和操作数一同来表示操作码,指令译出, 将16位的操作码和32位的操作数写入到指令队列中,同时将下一条指令 的地址写入到指令指针队列中。以下两个实例详细说明了译码单元的工作过程实例1:如果译码前,存储器码为41,那么译码后,操作码为x0040; 操作数为x00000001。如果译码前,存储器码序列为22, 23, 24、 53,那 么译码后,操作码为x0050;操作数为x00002345。如果译码前,存储器码 序列为23, FB,那么译码后,操作码为x23FB;操作数为x00000000。实例2:如果在地址x80000070处存放的x33F6BA21、地址x80000074 处存放的是72FA2446,那么译码后将得到如下操作码、操作数以及下一条 指令的地址(Iptr):操作码xOOBO,操作数x0000001A,下一条指令地址x80000072;操作码x00F6,操作数x00000000,下一条指令地址x80000073;操作码x0030,操作数x00000003,下 一条指令地址x80000074; 操作码x0040,搡作数x00000006,下一条指令地址x80000075; 操作码x24FA,操作数xOOOOOOOO,下一条指令地址x80000077; 操作码x0070,操作数x00000002,下一条指令地址x80000078。 译码单元12将上述操作码、操作数按顺序写入到指令队列中,并且将 下一条指令的地址写入到指令指针队列17中。3. 指令队列与指令指针队列单元(Instruction Queue & Iptr Queue ) 指令队列16和指令指针队列17均由先进先出队列(FIFO)实现,其深度均为256。指令队列16的数据宽度为48用于存放16位的操作码(opr_COde)和 32位的操作数(opr—data);指令指针队列17的宽度为32,用于存放下一条指令的地址(Iptr)。指令队列16和指令指针队列17的清空控制端接在复位信号和跳转信 号上,用于重新开始填充指令队列16和指令指针队列17。指令队列16和指令指针队列17的写请求控制端接在译码单元13产生 的指令译出信号上,只要有指令译出,则将译出的指令和下一条指令的地 址分别写入到指令队列16和指令指针队列17中。指令队列16和指令指针队列17的读请求控制端接在指令周期设置单 元的读指令队列信号上。每次读队列信号有效后,由指令队列16读出的指令并不立即发射到指 令执行单元中执行,而是发送到指令周期设置单元,待指令周期设置单元 设置好该指令将要执行的周期数后,才开始执行。4. 指令周期设置单元(Set Cycle Unit)在指令周期设置单元14中,有一个6位的指令周期寄存器,用于记录 距当前指令结束还差几个周期。当设置周期信号被置1时,指令周期寄存 器被赋值,即指令周期寄存器中存放的是执行该指令所需时钟周期数,在 指令的执行过程中,每个时钟周期指令周期寄存器进行减1操作,当指令 周期寄存器的值减为1时,表示这条指令已经执行完毕。该单元执行主要受以下几个关键信号控制1) 读指令队列信号用于预先从指令队列16中取出下一条指令。当 从指令队列16中取出的指令的指令周期数已经为1时,则读队列信号有效; 否则,当从指令队列16中取出的指令的指令周期数大于1时,则当该指令 执行到指令周期数减为1时,读队列信号有效。2) 设置指令周期信号用于给从指令队列16中取得的下一条指令设 置指令周期寄存器初值。读指令队列信号延迟一个时钟周期即为设置周期 信号。3) 执行停止信号根据某条指令运行时某几个寄存器的状态来决定当 前指令是否应该结東运行,从而实现变长周期指令。如果完成某条指令所需的周期数不是一个定值,例如移位、乘法、归一化等指令,完成这类指 令所需的周期数通常是由某几个寄存器中的值所决定,这类指令的指令周 期寄存器初值被设置成全l,即6位二进制数的最大值,在指令的执行过程 中产生执行停止信号,使指令周期寄存器被设置为1,从而表示这类变长周 期的指令已经执行完毕。4)执行暂停信号用于暂停某条指令的执行,从而解决某一时刻的处 理器资源冲突。在指令的执行过程中,如果该条指令执行到某个时钟周期 时,无法得到该指令继续执行所需要的全部资源,则生成执行暂停信号, 该信号用于停止指令周期寄存器的减1操作,从而暂停这条指令的执行, 直到该指令得到其运行所需要的全部资源。例如,某条指令在其执行的第i 个周期对外部存储器发出读写请求,外部慢速存储器无法在一个时钟内完 成读写,则该指令将会暂停在第i+l个指令周期,在第i+l个周期的末尾, 该指令对存储器完成读写后,该指令继续执行。5. 浮点接口单元(Floating Point Unit)浮点接口单元15负责整数执行模块与浮点运算模块间的通讯,从而实 现PN8处理器中整数指令执行模块与浮点运算模块的并行工作。在PN8中,指令按其执行时所需要的资源情况,可以分成三大类 第0类指令在执行时只占用整数指令执行模块中的资源; 第l类指令在执行时只占用浮点运算模块中的资源; 第2类指令在执行时除了占用浮点运算模块中的资源外,还要占用 整数指令执行模块中的部分资源。其中第0类指令和第1类指令可以并行执行。从指令队列中每次取出一条指令后,将其按照上述的分类方法进行分 类后,再根据当前整数指令执行模块和浮点运算模块的空闲或忙的状态来 决定是否将指令发射到整数指令执行模块或浮点运算模块去执行。只有在以下两种情况下,整数指令执行模块与浮点运算模块可以并行 工作1) 指令队列中先取出的指令为第O类指令,接着又取出的指令为第1 类指令,如果此时浮点运算模块的状态为空闲,则第1类指令和第0类指 令同时执行;2) 指令队列中先取出的指令为第1类指令,接着又取出的指令为第0 类指令,如果此时整数指令执行模块的状态为空闲,则第0类指令和第1 类指令同时执行。其他情况下,整数指令执行模块与浮点运算模块不可以并行工作。6. 进程管理单元程序的运行是以进程为单位的,进程管理单元11共有高低两种优先级 的进程,分别以0、 l标识;其中由角色的不同还分为父进程与子进程;高 优先级进程可以有条件地中断低优先级进程的执行过程,让其自身优先执行;进程管理单元共有四个队列,其中两个分别为高、低优先级进程等待 执行队列,剩余两个分别为高、低优先级进程等待时间到队列;在进程管 理单元ll中,进程分为执行中、处于中断中、准备好等待执行、被去调度等待、以及通信中这五种状态;进程管理单元ll共设有五个外部通道,其中四个供cp u之间进行数据传输, 一 个用于响应上层的请求。一个进程首先被生成并放置在准备好等待队列中(根据它的优先级放置在对应队列中);在处理器内没有正在执行的进程且没有被中断进程存在的情况下,准备好处于等待状态的进程队列中最先准备好的进程将会被启 动运行,转换为正运行的进程。进程在运行过程中会因为运行时间片到而被重调度回到准备好等待队列中 一个高优先级的进程时钟每lus计一次数, 一个低优先级的进程时钟 每64us计一次数,高优先级进程时钟每走1024次称为一个时间片,当一个 低优先级的进程连续执行两个时间片后,执行到跳转(j)或循环(lend) 指令,这个进程将会被重调度回到准备好等待队列中,而队列中最先准备 好的进程将会被执行。进程在执行过程中,遇到时间等待指令,需要等待一段时间,则会被 去调度添加到时间等待队列中,当等待队列中的进程等待的时间到后,则 会被重调度,若此刻运行进程为低优先级进程而等待时间到被重调度的进程为高优先级进程,则这个高优先级进程将会中断正在运行的低优先级进 程使其自身被优先执行,同时,如果此刻没有进程正在执行整个处理器处于空闲等待状态,则该时间到的进程直接被调用执行,否则该时间到的进 程被添加到准备好等待队列中。当运行的进程遇到等待通道、等待数据通信或等待event请求时则会被 去调度,当被去调度的进程所等待的条件准备好后则会被重调度,同样若 此刻运行进程为低优先级进程而等待时间到被重调度的进程为高优先级进 程,则这个高优先级进程将会中断正在运行的低优先级进程使其自身被优 先执行,同时,如果此刻没有进程正在执行整个处理器处于空闲等待状态, 则该重调度的进程直接被调用执行,否则该重调度的进程被添加到准备好 等待队列中。由前面讲述到当运行中的进程为低优先级进程时,若遇到高优先级的 进程准备好了,则这个低优先级的进程就会被中断,变为被中断的进程, 当这个运行的进程执行结東或被去调度了,且当前没有高优先级的进程准 备好了,则这个被中断的进程将会先被执行,而不是执行准备好等待队列 中的进程。负责进程调度的指令有如下5种,分别为mnp、 stopp、 startp、 endp、 ldpri。ru叩和stopp这一对指令可分别启动或挂起一个父进程,ru叩则是根据 相关寄存器的内容为新启动的进程分配对应的工作空间和指令指针,stopp则无条件的挂起该进程;而startp和endp这一对指令则可在当前的父进程 的基础上生成或挂起子进程,startp在父进程工作空间的基础上根据寄存器 的给出的指令指针启动若干个子进程,而endp则根据父进程某一工作空间中所存储的值来决定是结東前的子进程还是结束并返回父进程执行;由 Ldpri指令可获取当前的进程的优先级状态。执行进程channel guard和skip guard功能,需要使用如下8条指令alt、 altwt、 altend、 enbs、 diss、 resetch、 enbc、 disc。通过alt指令的执行,可让当前进程进入alt结构中;altwt则保存一些 参数并使进程去调度从而进入等待channel guard和skip guard ready的状态; enbs和diss这对指令则负责进程的skip guard的使能和去使能工4; resetch 指令则可让要用的相关通道初始化为空状态,留给进程备用;同理enbc和 disc这对指令负责进程的channel guard进行使能和去使能。与进程时间等待相关的操作指令包括sttimer、 ldtimer、 tin、 talt、 taltwt、 enbt、 dist。sttimer负责设置两个优先级时钟的计数初始值;通过ldtimer指令可获 取到当前优先级进程的时钟值,再经过某些运算后由tin指令可将数值存入 当前进程的工作空间的某一位置上,作为该进程进入时间等待的参考时间; 通过talt指令可让当前进程进入包含时间等待的alt结构中,taltwt则保存一 些参数并使进程进入时间等待状态;其中enbt指令则负责使能alt的timer guard等待,dist则负责对timerguard的等待去使能,根据当前时间和存储 空间中的时间值判断进程的时间等待是否完成。执行进程工作空间、指令空间的控制操作的指令包括ldpi、 call、 ret、 gajw、 gcall、 lend。Ldpri指令则可获取当前的指令指针位置;call和ret指令为 一对可调整 进程的工作空间和指令空间,ret负责call调整后的返回原空间;gajw单 独的实现进程的工作空间调整;gcall则单独的实现进程指令空间的调整; lend则使进程循环执行某个功能块。cpu内夕卜部进程的数据通信指令包括move、 in、 out、 outword 、 outbyte。move指令旨在完成进程内部的数据块搬移;in、 out这两个指令则分为 cpu内部两个进程之间的通讯模式和与外部cpu间的通讯模式,当为cpu内 两个进程的通讯模式时,它们两个配对使用,只有当两个进程都准备好时 才实现进程间的数据块搬移;outword、 outbyte这两条指令实现的功能和out 的功能类似,不同的是它们并不是数据块的搬移,而是通过channel将寄存 器中存放的某个字或者字节存储到另一进程或其它cpu指定的某个存储空 间中。如图7所示,进程管理单元(PMU)各个事件处理子模块间关系如下 数据搬移完成cpu内部的进程间通信,以及内部数据模块的搬移功能。高优先级进程准备运行当有一个高优先级的进程准备好,等待运行,而此刻正在运行的进程为低优先级的进程,则此刻将启动Rim_hi子模块,保存并修改当前工作空间地址、指令指针以及队列的相关寄4—器和空间内 容,等待到某些特定时刻,中断当前低优先级进程(执行中断处理子模块)或将此高优先级进程加入到对应待执行队列中(Reschedule^执行进程重新 调度子模块)。中断处理:保存被中断进程的主要相关信息(含浮点控制的cpu略有 不同),并修改当前工作空间地址以及指令指针。启动一个新进程从等待执行的进程队列中弹出一个进程运行,修改 当前工作空间地址、指令指针以及队列的相关寄存器和空间内容。时间片到调度进程保存该进程当前的指令指针,修改相关工作空间 内容,将该进程添到等待执行的进程队列中。进程去调度到时间队列根据需要去调度并添加到对应时间队列的进 程的优先级情况以及需要等待的时间,查找对应队列的插入位置,将该进 程正确地加入到对应队列中,保证头进程为等待时间最短的队列。进程从时间队列中重调度分为高低优先级两个部分功能子模块。当 任 一 队列中的头进程等待时间到,则将该进程添加到对应等待执行的进程 队列中,修改等待时间队列中的相关寄存器以及地址空间的内容。进程等待通道被去调度若一个进程处于等待通道的状态中,当其等 待的通道准备好了,则需要执行该功能子模块,将该进程添加到对应的等 待执行的进程队列中。从时间队列中删除进程若一个处于等待通道准备好的进程同时也等 待时间、即也在时间等待队列中,而它所等待的通道先准备好,则在将该 进程添到对应的等待执行队列中的同时也需要执行该功能子模块将该进程 从时间等待队列中删除。直接运行进程当一个进程去调度结束被重调度时,若当前cpu为空 闲态(即没有进程在执行),则不将该进程添到对应的等待执行的进程队列 中,而是直接调度该进程运行。进程重新调度若需进行重调度的进程为高优先级进程且当前运行的 进程为低优先级,则还需运行高优先级进程准备运行功能子模块,否则将 该进程添到对应队列,并修改相关寄存器内容。对于处于被去调度等待状态的进程主要有以下四种情况会执行进程重 新调度子模块1 ) 32位定点并行处理器PN4和64位浮点并行处理器PN8都设有四 个Link通道当任一通道有数据到来等待被接收,则将通道非空标志置上; 如有进程正处于等待对应Link通道准备完毕的状态,则将该进程重新调度, 添加到对应的准备好待执行队列中;若该进程同时也处在等待时间队列中, 则还需执行从时间队列中删除进程子模块将该进程从等待队列中删除。2) 当外部有Event通道请求(evrq )信号到达若此刻有进程等待与 Event通道进行通信、或者是在等待该通道准备完毕而处于等待状态,都将 该进程重新调度添到对应的准备好待执行队列中;若该进程同时也处在等 待时间队列中,则还需执行从时间队列中删除进程子模块将该进程从等待 队列中删除)。3) 当进程A需要与进程B进行内部通信(这里假设进程A先准备好, B后准备好)时先准备好的进程A将会被去调度,进程A处于等待B进 程准备好的状态,当B进程也准备好后两个进程开始通信(执行数据搬移 子模块功能),当通信结束后,由进程B负责将进程A重新调度添到对应的 准备好待执行队列中。4) 当时间队列中的头进程等待的时间到了,则将该进程重新调度添到 对应的准备好等待执行队列中。若某一进程与其它处理器进行通信,则通 信完成后,需将其自身进行重新调度并添到对应的准备好等待执行队列中。7.仲裁控制器在PN4/PN8的内部有三个独立的模块/单元会对片内存储器/片外存储 器进行读写操作。这三个模块/单元分别是读写操作模块(这里指整数指令 执行单元和进程管理单元中涉及到存储器读写操作的硬件)、通讯模块2和 取指译码单元10中的取指单元12。仲裁控制器3负责将来自取指单元12 的读请求、读写操作模块的读请求/写请求和通讯模块2的读请求/写请求按 一定的优先顺序发送到内部存储器6或外部存储器接口 4;并将由内部存储 器6或外部存储器读回的指令或数据,分发给取指单元12,读写操作模块和 Link通讯模块2。读写操作模块、link通讯模块2和取指单元12的工作特点如下通讯模块2:由于与PN4/PN8直接相连接的其他PN4/PN8会以不确定 的时机和PN4/P^8进行通讯,导致通讯模块2体现出一定的实时性,通讯 模块2—旦有数据发送或接收就会立即要求对存储器进行读或写搡作。读写操作模块由于通讯模块2通讯时机的不确定性,受通讯模块2所控制的处理器中指令执行状态和调度状态也会体现出不确定性,进而导 致读写操作模块对存储器的读写时机具有一定的不确定性。通讯模块2对存储器进行读写操作时,会暂停读写操作模块的执行,读写操作模块会通 过in/out指令来控制通讯模块2工作,所以读写操作模块和通讯模块2不会 同时进行存储器的读写操作。取指单元12:在读写操作模块和link模块不占用总线时开始占用总线, 直到指令队列被填充满时暂停占用总线。仲裁控制器根据这三个模块/单元的工作特点,将其划分为高/低两个优 先级为确保读写操作模块和通讯模块2的实时性,将二者划分为高优先 级;取指单元12在读写操作模块和通讯模块2不占用总线时才工作,故将 其划分为低优先级。存储器读写操作的优先级仲裁方式高优先级存储器读写操作没有完 成时,如果有低优先级存储器读写搡作,则在高优先级存储器完成后,立 即开始低优先级存储器读写操作;高优先级存储器读写操作与低优先级存 储器读写操作同时出现,高优先级的存储器读写操作立即得到响应,待高 优先级的存储器读写操作完成后,开始低优先级的存储器读写操作;低优 先级存储器读写操作没有完成时,如果有高优先级存储器读写操作,低优 先级的存储器读写操作被高优先级的存储器读写操作所中断,在高优先级 的存储器读写操作完成后,重新开始被中断的低优先级存储器读写操作。通过存储器读写操作的优先级仲裁,可以在确保link模块和读写搡作 模块实时性的前提下,最大化的利用PN4/PN8的数据总线和地址总线。 8. 64位浮点运算单元(FPU)浮点运算单元(FPU)9如图6所示,PN8由PN4所有功能模块和FPU 组成,包括浮点运算子单元18和堆栈19,该堆栈19为具有三层深度的双堆栈结构。64位的浮点运算子单元18的主要工作是处理浮点格式数据的加、减、 乘、除、开方、取余数、取整运算以及负责整数与浮点格式数据之间的转 换。该FPU能够对操作数的无效操作、除以零、上溢等异常情况做出相应 的异常处理,遵循正EE754标准所规定的相关浮点运算规则。该FPU所用 到的浮点数据分为单精度格式和双精度格式的浮点数据,包括了归一化数 据、非归一化数据、无穷大以及非数,完全符合IEEE754标准所规定的相 关浮点数据规则。双堆栈结构中一组堆栈是64位位宽的数据堆栈寄存器,另外一组堆栈 是1位位宽的数据长度堆栈寄存器。三层结构的数据堆栈寄存器分别命名 为FAreg、 FBreg、 FCreg,寄存器数据为64位位宽,其中每一个寄存器既 能保存32位数据,又能保存64位数据;同理,三层结构的数据长度堆栈 寄存器分别被命名为FAlength, FBlength, FClength。在堆栈的弹栈和压栈 过程中,数据长度堆栈寄存器跟随数据堆栈寄存器保持同步操作,当浮点 数据装载到数据堆栈寄存器或者从数据堆栈寄存器弹出时,数据长度堆栈 中对应层的长度寄存器也作出相应的变化。FPU与取指译码单元IO之间通过指令周期设置单元14、浮点接口单元 15与32位宽度的数据总线、指令命令控制线及指令周期计数控制线相连接。 1类指令的指令命令叩iLcode—float和指令执行周期计数exe_cnt—float由浮 点接口单元给出,2處指令的指令命令opr—code和指令3丸行周期计数 exe—cnt由指令周期设置单元给出。通用的内部寄存器主要有两个RN , FP—Error—Flag。 FPU的缺省舍入 方式是RN一'01"(就近舍入),如果计算指令需#用到其它舍入方式时, 需要在该计算指令前置一条设置舍入方式的指令(fpurn,fpurz,fpmp,fpurm ), 用来特别指明舍入方式,指令通过设置RN的值来达到改变舍入方式的目的。有的指令运行过程中会影响到FP—Error—Flag的状态,我们将此类指令 运行结束时的Error—Flag与上一条指j的FP—Error—Flag进行"或"操作,通 过fpchkerror和fptesterror指令可以检测FP—Error—Flag的状态,并且传递给 CPU的E_Flag或者Areg。 高效求余的方法若两个浮点格式的数据做求余数操作,余数是精确结果,不涉及舍入处 理。如果按照整数求余数的方式做,即A作为被求余数,B作为除数,A 除以B的整数商与B的乘积作为减数,二者做减法运算,能够得到精确的 余数;然而,对于浮点数据,减法和乘除运算都涉及到舍入处理,只能得 到近似的结果。由于余数必须是精确的,因此,整数求余数的思路直接套 用到浮点求余数运算中是行不通的。本发明方法首先从求余数最原始思路入手进行分析,用除数循环对被求余数A做减法运算,直到被求余数的绝对值不大于除数绝对值的一半为止。如果两个数据相差很多,比如J二21。23, 3 = 1,则按照这种方法做的话, 大约做2,次减法运算才能得到最终余数,在本浮点处理单元中做一次浮点减法的时间是80ns,那么做2鹏次减法运算需要7.19xl0鄉秒,显然这对系 统的速度要求是不可以接受的。对于双精度浮点数据,两个极大和极小的 数据指数相差能达到2047,按照原始的求余方法,所用的时间就更多,所 以,为了用相对比较短的时间计算出精确的余数,有必要优化求余数的算 法。遵循原始循环减法的方式来求余数,如果被求余数A的指数比除数B 的指数大n,则Sx2"的指数等于A的指数,将J-Sx2"作为下次循环减法 的部分被求余数。由于A和B的尾数高位对齐,则X-6x2"的结果尾数部 分高位一定为零,通过归一化处理得到J-Bx2"之差4, 4指数至少能相对 A的指数降低1。如果4指数大于B的指数,我们称4为部分余数,则循环 上述操作,7-1次,直到部分余数A指数小于等于除数B的指数为止。当A,指 数等于B的指数时,如果A尾数大于B尾数的一半,则需要将A减去B的 差A,+,作为最终的余数,否则A,就是最终余数。对于满足IEEE754标准的双 精度浮点数据,极大和极小的指数相差2047,按照本设计的思路,做一次 减法操作部分余数的指数至少能减少1,按一次减法部分余数指数减少1计 算,最坏情况做2047次循环减法运算就可以求出精确的余数结果,最坏情 况耗时1.6376xl0-4秒,求余数指令运行速度完全满足本系统的需要。归一化过程的分级实现浮点数据的归一化,即是对尾数部分进行前导零的个数判断,然后进 行相应次数的移位操作,指数部分根据尾数的移位次数同步进行相应的增 减操作。在进行计算前或者计算结束后,为了统一数据的格式,都有必要 对非归 一化格式的浮点数据进行归 一化处理。如果按照常规方法进行归一化处理,不仅需要耗费较长的时间,而且 占用的芯片资源也较大。本发明将一次归一化过程分成两级归一化过程实 现,从而能够使归一化时间以及占用芯片资源达到最优。如果对一个非归 一化数据进行归一化处理,则先把此数据的尾数均分成若千大段(第n段, 第n-l段,......,第l段),这叫第一级归一化过程,并进行大段的归一化处理;每大段共享同一个第二级归一化模块,第二级归一化模块用来进行每小段尾数的归一化处理。具体实现时,首先进行第一级归一化过程,依次从最高段第n段开始判断,如果第n段全零,然后判断下一相邻低位段即 第n-l段,以此类推,如果判断到不全为零的尾数段,则转入该段进行第二 级归一化处理。通过分级归一化处理实现的归一化,时间缩短为原来的l/w, 所占用的芯片资源也减少为原来的1/ ,这种方法能够使占用的芯片资源和 时间达到最优的平衡点。 复用的舍入处理模块若舍入处理按照二次舍入的方法实现,虽然在精度上不会出现误差, 但如果进行两次舍入的话,不但逻辑规模开销大而且延时开销也大。因此 本发明釆用了分别舍入的方法,也就是说单精度的舍入在小数点后第23 位开始,双精度舍入在小数点后第52位开始。这样就可以用同一个舍入 处理模块通过单双精度控制来完成两类不同的舍入处理,既节省了电路规 模也提高了速度。在舍去数据部分中采用了三个附加位,从舍去数据部分 高位到低位依次为保护位、舍入位及粘接位;粘接位是将粘接位其后及粘 接位本身全部"或"运算;如果釆用就近舍入模式,并且附加位是"100"时, 遵循趋偶舍入的原则决定数据有效位是否加1,其中有效位是保护位之前的 所有数据。
权利要求
1.一种并行微处理器,基于FPGA开发,其特征在于包括中央处理器(1),为由取指译码单元(10)、进程管理单元(11)和整数指令执行单元构成的32位定点中央处理器,中央处理器(1)执行指令的预取指和译码操作、负责串行进程和并发进程的调度管理,实现多个进程之间的数据通信;通过通讯模块在多个处理器之间进行数据通信,实现分布式处理器之间的协同工作;通讯模块(2),由多组相互独立的LINK通道和In/Out控制器组成,执行主机接口功能,实现与外部处理器通讯;仲裁控制器(3),根据取指译码单元、整数指令执行单元、进程管理单元中和通讯模块(2)的总线请求的优先级,对中央处理器(1)的内外部地址总线和数据总线进行仲裁;外部存储器接口(4),在仲裁控制器(3)的控制下,对外部存储器提供读/写操作的时序逻辑;中断/时序控制器(5),用于对中央处理器(1)提供定时与中断;内部存储器(6),提供中央处理器(1)的指令及数据的快速存取;调试接口(7),提供对中央处理器(1)内部状态进行分析/调试的功能;时钟管理单元(8),生成并行微处理器各种内部时钟。
2. 按权利要求l所述的并行处理器,其特征在于所述In/Out控制器 具有以下结构-.译码控制单元,对中央处理器(1 )传送来的In/Out控制信息进行判断, 并进一步解析出该执行接收/发送命令的LINK通道、要接收/发送的数据长 度以及接收数据的目的地址/发送数据的源地址;发送控制单元,接收译码控制单元的控制信息,接收通过读存储器控 制器得到的存储器数据发送至LINK通道;向读存储器控制器发送读请求和 地址;读存储器控制器,接收发送控制单元输入的命令,发送读请求和地址 至读/写存储器仲载器;接收读/写存储器仲载器返回的数据发送至发送控制单元.^f存储器控制器,接收接收控制单元输入的命令,发送写请求和地址至读/写存储器仲载器;读/写存储器仲载器,对读存储器控制器发送的读请求和写存储器控制器发送的写请求进行仲载;接收存储器数据发送给读存储器控制器;发送 存储器数据及存储器地址至仲载控制器(3);接收控制单元,接收译码控制单元的控制信息,接收LINK通道的数据, 向写存储器控制器发送写请求和地址。
3. 按权利要求l所述的并行处理器,其特征在于所述取指译码单元(10)具有以下结构取指单元(12),通过仲裁控制器(3)将内部存储器(6)或外部存储 器中存放的32位数据转化为4条8位存储器码;译码单元U3),将上述存储器码进行译码,译码后的指令存放在指令 队列(16)中,同时将该指令的指针存放在指令指针队列(17)中;指令队列(16)与指令指针队列(17),均由先进先出队列实现,其写 请求控制端与译码单元(13)的指令译出信号相连,读请求控制端接至指 令周期设置单元(14)的读指令队列信号;指令周期设置单元(14),对要执行指令所需要的指令周期数进行设置, 设置周期完成后将指令发射到整数指令执行单元。
4. 按权利要求3所述的并行处理器,其特征在于所述中央处理器(l) 还具有浮点运算单元(9),其结合32位定点中央处理器构成64位浮点中 央处理器;所述浮点运算单元(9)的构成如下浮点运算子单元(18),接收来自取指译码单元(10)中指令周期设置 单元(14)及浮点接口单元(15)送出的浮点指令,根据具体指令的内容 选择相应的浮点计算类型对由堆栈(19)中读取的操作数进行相关浮点运'堆栈(19),装载由浮点运算子单元(18)返回的运算结果或数据格式 转换模块送来的操作数,负责向数据格式转换模块送出运算结果;接收浮 点运算子单元(18)送出的出错信息;数据格式转换模块,对来自内部或外部存储器的定点操作数进行格式 转换,转换结果送至堆栈(19);64位浮点中央处理器中的取指译码单元(10)还具有浮点接口单元 (15),对从取指译码单元(10)的指令队列(16)中读取的浮点指令进行 分类,实现整数指令执行单元与浮点运算单元(9)的并行工作。
5. 按权利要求4所述的并行处理器,其特征在于所述浮点运算子单 元(18)具有尾数计算模块、指数计算模块、归一化模块、舍入模块、移 位模块以及出错处理模块,其中移位模块根据指数计算模块计算结果进行 相应的移位操作,同时尾数计算模块通过归一化模块根据移位模块的移位 结果进行相应的归一化操作;舍入模块对归一化结果进行相应的舍入操作, 舍入结果送至出错处理模块,如果计算错误,则输出出错标志至堆栈(19)。
6. 按权利要求5所述的并行处理器,其特征在于堆栈(19)釆用双 堆栈结构,其中一组堆栈用于存储32位位宽的数据或64位位宽的数据, 另一组堆栈用于存储数据的长度,两组保持同步出栈或进栈。
7. —种并行微处理器实现方法,其特征在于包括以下步骤通过In/Out控制器将启动代码从通讯模块(2 )的LINK通道接收并写入内部存储器中;通过In/Out控制器将启动成功的信息发送至32位定点并行处理器的 中央处理器(l),取指译码单元将从内部存储器读回的数据进行译码,根据整数指令执行单元的忙闲状态将整数指令发送给整数指令执行单元; 整数指令执行单元执行相应指令并启动进程管理功能; 如果取指译码单元发送的是In/Out命令,则In/Out控制器根据接收到的In/Out命令执行相应的操作;如果通信模块(2)向32位定点并行处理器的中央处理器(1)发送读/写请求,仲裁控制器会根据内部存储器或外部存储器的地址规则对读/写请求进行仲裁;外部存储器接口 (4)接收到读/写请求后根据内部状态机的控制执行 相应读/写操作;中断/时序控制器(5)接收外部存储器接口 (4)的数据,并对该数据 进行解码,并执行相应的中断。
8.按权利要求7所述的并行微处理器的实现方法,其特征在于还包括 以下步骤所述中央处理器(1)为64位浮点中央处理器,取指译码单元将从内 部存储器读回的数据进行译码,译码后得到的浮点指令分为0类、l类及2 类指令,根据整数指令执行单元和浮点运算单元(9)的忙闲状态将整数指 令或浮点指令发送给整数指令执行单元或浮点运算单元(9);浮点运算单元(9)也参与执行相应指令并启动进程管理功能; 如果通信模块(2)向64位浮点并行处理器的中央处理器(1 )发送读 /写请求,仲裁控制器会根据内部存储器或外部存储器的地址规则进行对 读/写请求进行仲裁;
9.按权利要求8所述的并行微处理器的实现方法,其特征在于所述 0类、1类及2类指令为按其执行时所需要的资源情况进行分类 第0类指令在执行时只占用定点指令执行模块中的资源; 第1类指令在执行时只占用浮点运算模块中的资源; 第2类指令在执行时除了占用浮点运算模块中的资源外,还要占用 定点指令执行模块中的部分资源;其中第o类指令和第l类指令可以并行执行,包括以下两种情况;1) 指令队列中先取出的指令为第O类指令,接着又取出的指令为第1 类指令,如果此时浮点运算模块的状态为空闲,则第1类指令和第o类指 令同时执行;2) 指令队列中先取出的指令为第1类指令,接着又取出的指令为第0 类指令,如果此时定点指令执行模块的状态为空闲,则第0类指令和第1类指令同时执行;其他情况下,定点指令执行模块与浮点运算模块不可以并行工作。
10. 按权利要求8所述的并行微处理器的实现方法,其特征在于 所述浮点运算单元(9)执行相应指令,包括浮点加、减、乘、除、开方、求余、取整运算以及各种数据类型间的相互转换,其中加、减、乘、 除、开方、取整运算的运算结果采用舍入方式得到,求余运算采用以下步 骤实现判断两个操作为定点还是浮点;若两个操作数均为浮点,如果被求余数A的指数比除数B的指数大n, 则i x2"的指数等于A的指数,将J-Sx2"作为下次循环减法的部分被求余 数;将A和B的尾数高位对齐,则^-Sx2"的结果尾数部分高位为零,通 过归一化处理得到Bx2"之差为4指数至少能相对A的指数降低1; 如果^指数大于B的指数,则^,为部分余数,则循环上述操作"-l次,直 到部分余数A,指数小于等于除数B的指数为止;当A指数等于B的指数时, 如果A尾数大于B尾数的一半,则将A,减去B的差作为最终的余数,否则 A,就是最终余数,其中n为整数。
11. 按权利要求IO所述的并行微处理器的实现方法,其特征在于 所述归一化处理在计算前或者计算结束后进行, 一次归一化过程分成两级归一化过程实现把操作数的尾数均分成若干大段,对尾数部分进行 前导零的个数判断;进行相应次数的移位操作,指数部分根据尾数的移位次数同步进行相应的增减操作;每段共享同一个第二级归一化模块;第二级归一化过程包括对尾数部分进行前导零的个数判断;进行相应次数的移位操作,指数部分根据尾数的移位次数同步进行相应的增减操作。
12. 按权利要求IO所述的并行微处理器的实现方法,其特征在于 所述舍入方式包括为单精度数据舍入及双精度数据舍入,其中单精度数据舍入在小数点后第23位开始,双精度舍入在小数点后第52位开始; 在舍去数据部分中釆用了三个附加位,从舍去数据部分高位到低位依次为 保护位、舍入位及粘接位;粘接位是将粘接位其后及粘接位本身全部"或" 运算;如果釆用就近舍入模式,并且附加位是"100"时,遵循趋偶舍入的原 则决定数据有效位是否加1,其中有效位是保护位之前的所有数据。
13. 按权利要求7或8所述的并行处理器的实现方法,其特征在于 所述进程管理功能由中央处理器(1)中的进程管理单元(11)实现,包括以下步骤以进程为单位,具有高、低两种优先级的进程,分别以0、 l进行标识; 根据角色的不同将进程划分为父进程与子进程;高优先级进程能够有条件 地中断低优先级进程的执行过程;设置四个队列,其中两个分别为高、低 优先级进程等待执行队列,剩余两个分别为高、低优先级进程等待时间到 队列;将进程分为执行中、处于中断中、准备好等待执行、被去调度等待 以及通信中这五种状态;设置五个外部通道,其中四个供外部微处理器之间进行数据传输, 一个用于响应上层的请求;首先一个进程被生成并根据其优先级放置在对应的准备好等待队列中;当没有正在执行的进程且没有被中断进程时,处于准备好等待状态的进程队列中最先准备好的进程被启动运行,转换为正运行的进程;进程在运行过程中由于运行时间片到而被重调度回准备好等待队列中;进程在运行过程中,遇到时间等待指令,则被去调度添加到时间等待 队列中,当时间等待队列中的进程等待的时间到后,则被重调度;若当前 运行进程为低优先级进程且被重调度的进程为高优先级进程,则这个高优 先级进程中断正在运行的低优先级进程;如果当前没有进程正在执行,则 该重调度进程直接被调用执行,否则该重调度进程被添加到准备好等待队 列中;当运行的进程遇到等待通道、等待数据通信或等待上层请求时,被去 调度;当被去调度的进程所等待的条件准备好后被重调度,若该重调度进 程同时处在时间等待队列中,则从时间等待队列中删除该进程;如果当前 运行进程为低优先级进程而被重调度的进程为高优先级进程,则该高优先 级进程中断正在运行的低优先级进程;如果当前没有进程正在执行,则该 重调度的进程直接被调用执行,否则该重调度的进程被添加到准备好等待当运行中的进程为低优先级进程时,若遇到高优先级的进程准备好了 , 则这个低优先级的进程被中断成为被中断的进程;当该中断进程执行结束 或被去调度,且当前没有高优先级的进程准备好,则这个被中断进程先被 执行。
14. 按权利要求13所述的并行微处理器的实现方法,其特征在于高优先级进程准备好后中断低优先级的进程包括保存并修改当前工作空间地址、指令指针、数据队列的相关寄存器内容;等待时机中断当前低优先级进程或将该高优先级进程加入到相应待执 行队列中执行进程重新调度;中断处理,保存被中断进程的主要相关信息并修改当前工作空间地址 以及指令指针。
15. 按权利要求13所述的并行微处理器的实现方法,其特征在于 所述时间片到而被重调度,即时间片到调度进程包括保存该进程当前的指令指针,修改相关工作空间内容,将该进程添到等待执行的进程队 列中。
16. 按权利要求13所述的并行微处理器的实现方法,其特征在于 所述进程等待时间到后被重调度包括当任 一 时间等待队列中的头进程等待时间到,则将该进程添加到对应 等待执行的进程队列中,修改等待时间队列中的相关寄存器以及进程相关 地址空间的内容。
17. 按权利要求13所述的并行微处理器的实现方法,其特征在于 所述进程遇到时间等待指令,被去调度添加到时间等待队列中包括 根据需去调度并添加到对应时间队列的进程的优先级情况以及需要等待的时间,查找对应队列的插入位置,将该进程正确地加入到对应队列中。
18. 按权利要求13所述的并行微处理器的实现方法,其特征在于 所述从时间等待队列中删除进程包括一个进程处于等待通道的同时还处于时间等待队列中,若其所等待的 通道先准备好,则将该进程添到对应的等待执行队列中,同时将该进程从 时间等待队列中删除。
全文摘要
本发明涉及并行微处理器及其实现方法,基于FPGA开发,具有中央处理器,为由取指译码单元、进程管理单元和整数指令执行单元构成的32位定点中央处理器;通讯模块,由多组LINK通道和In/Out控制器组成;仲裁控制器,对中央处理器的内外部地址总线和数据总线进行仲裁;外部存储器接口,对外部存储器提供读/写操作的时序逻辑;中断/时序控制器,用于对中央处理器提供定时与中断;内部存储器,提供中央处理器的指令及数据的快速存取;中央处理器还具有浮点运算单元,其结合32位定点中央处理器构成64位浮点中央处理器。本发明实现的32位定点并行微处理器和64位浮点并行微处理器运行稳定,便于系统的修改和调试,加快验证速度,为OccamII语言所编写的程序提供了低成本的运行平台。
文档编号G06F15/78GK101334766SQ20081001209
公开日2008年12月31日 申请日期2008年6月30日 优先权日2008年6月30日
发明者史建华, 林 吴, 容 孙, 孙佳音, 张丙春, 李海泉, 鹏 王, 王君杰 申请人:东软飞利浦医疗设备系统有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1