CN1278227C - 一种基于mips指令集的处理器的多线程方法和装置 - Google Patents

一种基于mips指令集的处理器的多线程方法和装置 Download PDF

Info

Publication number
CN1278227C
CN1278227C CN 200410050005 CN200410050005A CN1278227C CN 1278227 C CN1278227 C CN 1278227C CN 200410050005 CN200410050005 CN 200410050005 CN 200410050005 A CN200410050005 A CN 200410050005A CN 1278227 C CN1278227 C CN 1278227C
Authority
CN
China
Prior art keywords
microcode
address
processor
general
thread
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
CN 200410050005
Other languages
English (en)
Other versions
CN1595351A (zh
Inventor
刘彤
李华伟
张飞飞
徐宇峰
宫曙光
李晓维
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Computing Technology of CAS
Original Assignee
Institute of Computing Technology of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Computing Technology of CAS filed Critical Institute of Computing Technology of CAS
Priority to CN 200410050005 priority Critical patent/CN1278227C/zh
Publication of CN1595351A publication Critical patent/CN1595351A/zh
Application granted granted Critical
Publication of CN1278227C publication Critical patent/CN1278227C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Executing Machine-Instructions (AREA)

Abstract

本发明涉及微电子技术领域,特别是一种基于MIPS指令集的处理器的多线程方法和装置。装置包括:微码程序存储器接口,内部寄存器信息表,外部存储器信息表,线程使能编号信息表,处理器程序存储器接口,微码分析电路,微码修改电路。包括步骤:处理器内部通用寄存器的分配和使用;处理器的外部存储器的分配;微码预处理单元保存信息;微码在使用通用寄存器或者外部存储器时的条件;微码预处理单元的处理微码步骤;利用微码分析电路和微码修改电路根据微码的特点分析和处理微码。本发明可用于基于MIPS指令集的处理单元IP核的性能改进,也可应用于基于MIPS指令集的处理器的性能改进,特别是用于网络处理器包处理微引擎的改进设计中。

Description

一种基于MIPS指令集的处理器的多线程方法和装置
技术领域
本发明涉及微电子技术领域,特别是一种基于MIPS指令集(精简指令系统计算机(RISC)的一种指令集,由MIPS公司开发)的处理器的多线程方法和装置。
背景技术
目前在多处理器传统设计中(图1),算法处理单元往往要执行耗时的算法操作,此时处理器就需要等待算法处理单元执行结束后,才能继续下一操作,从而导致处理器的使用率较低。这就要求一个处理器能够执行多个线程操作,减少处理器的等待状态来提高处理器的使用率。目前主要有是从硬件和软件两个角度来解决这个问题:
1.将多个同样的处理器子部件,如取指子部件,通用寄存器单元等,集成到一个处理器内核中,每一类处理部件为一个线程所专用,当某一个线程由于运行的需要,要求处理器进入等待状态时,就启动另外一个线程使用处理器,其缺点在于需要重新设计处理器内核,具有较高的硬件设计复杂度和较长的设计周期;
2.让处理器按时间片轮转的方式分别处理每个线程的指令,这要求在程序设计时,需要安排好各个线程的指令执行顺序,策略和每个线程的现场保存,要求一个线程的使处理器进入等待状态的指令和另外线程的使处理器进入繁忙状态的指令交替出现,这就减少了处理器处于等待状态的时间。因此对软件的设计具有较高的要求,需要程序员充分考虑程序的设计方法和线程的安排,其缺点在于需要对线程的调度做精心的安排和对原有的程序的移植需要做较大的改动。
发明内容
本发明涉及一种基于MIPS指令集的处理器的多线程方法和装置。
本发明的目的在于从增加外围硬件和软件限制条件相结合的角度提出一种简单可行的技术方法和装置来提高在单指令流,多数据流(SIMD)环境下基于MIPS指令集的处理器使用率问题,可用于MIPS指令集处理器技术领域的改进,特别是在SOC技术中处理器IP核的改进。通过对处理器的内部资源进行分组和使用微码预处理单元对微码程序做预处理,使不支持多线程处理的MIPS指令集的处理器上实现多个线程的运行,通过在微码程序里增加线程切换的指令片断,可使多个线程共享一个处理器资源,来减少处理器由于等待某个算法处理单元执行某个耗时算法导致的停滞状态,来提高处理器的使用率。可用于基于MIPS指令集的处理单元IP核的性能改进,也可应用于基于MIPS指令集的处理器的性能改进,特别是用于网络处理器包处理微引擎的改进设计中。
另外一个目的是提供的多线程机制对微码程序设计者基本上是透明的,减少程序设计者的设计难度;
第三个目的是用非常小的时间开销完成线程的切换工作。
一种MIPS指令集的处理器的多线程方法,包括步骤:处理器内部通用寄存器的分配和使用;处理器的外部存储器的分配;微码预处理单元保存信息;微码在使用通用寄存器或者外部存储器时的条件;微码预处理单元的处理微码步骤;利用微码分析电路和微码修改电路根据微码的特点分析和处理微码。
为实现上述目的,它包括:
1)微码预处理单元,它是可通过现场可编程门阵列(FPGA)实现的下述电路:
(1)微码程序存储器接口(2-1):微码预处理单元和微码程序存储器的接口;
(2)内部寄存器信息表(2-2):保存各寄存器组的首寄存器在处理器里实际地址编号;
(3)外部存储器信息表(2-3):保存各外部存储器组的首单元地址;
(4)线程使能编号信息表(2-4):保存当前正在执行的线程编号和输出当前线程编号;
(5)处理器程序存储器接口(2-5):微码预处理单元和处理器程序存储器的接口;
(6)微码分析电路(2-6):对每一条微码进行过滤,将微码指令的操作数中含有内部通用寄存器和外部存储器的指令交给微码修改电路(2-7);
(7)微码修改电路(2-7):将满足修改条件的微码根据内部寄存器信息表或者外部存储器信息表进行修改。
2)处理器内部的通用寄存器按如下规则分配:
(1)根据需要,预留0个或者多个通用寄存器单元作为线程信息交换通用寄存器;
(2)编号为R0,R31的内部通用存储器不参与分配,并且不使用;
(3)在剩下的通用寄存器单元里按照线程的个数分组,每组的通用寄存器数量相等,并且每组内的通用寄存器的地址是连续的;
(4)将通用寄存器组的首单元地址的前一个地址编号作为基地址,写入微码预处理单元的内部寄存器信息表中;
(5)每个寄存器组的内部寄存器使用它们相对于本组基地址的偏移地址编号,即逻辑地址编号;
(6)在每个寄存组里,指定一个特殊通用寄存器,作为在微码切换线程时,保存程序计数器(PC)内容的特殊通用寄存器,要求这个通用寄存器在各个通用寄存器组里的逻辑地址相同,简单起见,可把每组的逻辑地址最大的通用寄存器作为保存程序计数器(PC)内容的特殊通用寄存器。
 3)处理器外部的存储器按如下规则分配:
(1)根据线程的个数对外部存储器单元分组,为每个线程分配同样数目的外部存储器单元;
(2)每个外部存储器组里的存储器单元的地址是连续的;
(3)组与组之间紧邻的存储器单元地址不要求连续;
(4)将每个外部存储器组的首单元地址作为基地址,写入微码预处理单元的外部存储器信息表中。
(5)每个组的存储器单元使用它们相对于本组基地址的偏移地址编号,即逻辑地址编号;
4)微码预处理单元保存如下信息:
(1)保存有2)所述的各寄存器组基地址信息的内部寄存器信息表;
(2)保存有2)所述的作为保存程序计数器(PC)内容的特殊寄存器的逻辑地址;
(3)保存有3)所述的按线程分组的外部存储器单元的基地址信息的外部存储器信息表;
(4)能够根据当前线程编号标志修改微码中通用寄存器逻辑地址和外部存储器逻辑地址信息,并能向外输出当前线程编号信息;
(5)是一个可编程的逻辑器件,其内部保存的信息内容可配置可修改
5)微码在使用内部通用寄存器或者外部存储器时需满足如下条件:
(1)线程所能使用的通用寄存器范围只与所分配的通用寄存器组里通用寄存器个数有关,与通用寄存器地址无关,如分配的通用寄存器为R1至R15,则微码能够使用的个数范围就是15,同理分配的R13至R27,其使用的通用寄存器个数范围也是15;同理,使用的外部存储器范围是由所分配组里的存储单元的个数有关,与其地址无关;
(2)在设计微码程序时,所使用的通用寄存器逻辑地址编号均是在通用寄存器组里相对于本组基地址的偏移地址,而不是通用寄存器在处理器里的实际地址编号;同理,所使用的外部存储器的地址是逻辑地址,即在一个外部存储器分组里相对于本组基地址的偏移地址,而不是在外部存储器的实际地址值。
6)微码预处理单元,具有以下功能:
(1)具有指令分析能力;
(2)能够根据当前所运行的线程编号,将微码中对应的通用寄存器单元和外部存储器单元的逻辑地址修改为实际地址,而无需微码程序做任何改动。
7)微码预处理单元按如下步骤处理微码:
(1)接收到MIPS处理器预取微码请求,微码预处理单元将微码读取到本单元;
(2)分析和处理读取的微码;
(3)将处理的微码发给MIPS处理器
8)对原软件设计加入一些限制条件,如下:
(1)使用的内部通用寄存器地址或者外部存储器地址是逻辑地址,而不是在内部通用寄存器或者外部存储器里的实际地址;
(2)通用寄存器的使用必须在分组后的通用寄存器组里范围内。
9)其保存现场和切换线程的代码片断是(分号后为其说明):
(1)ANDI Rx,Rx,#0;将Rx通用寄存器内容清0;
(2)ORI Rx,Rx,#TARGET;通过汇编编译器,将第(5)行的TARGET标号所在行的行地址翻译成立即数,保存在Rx通用寄存器里;
(3)JALR Ry,Rx;将当前的程序计数器(PC)值保存在通用寄存器Ry里,并跳转到Rx寄存器保存的地址内容;
(4)ADDI Ry,Ry,#(opcodelength);当本线程线程恢复时,即程序计数器(PC)值恢复时,需要跳转到第(6)行,即NEXTADDRSS标号处,所以Ry的内容需要增加1条指令的长度,对于32位(bit)字长的系统,opcodelength一般为4,即4个字节;
(5)TARGET:JR Ry;这里的Ry不是本线程通用寄存器组里对应的逻辑地址编号,而是另外的线程对应的通用寄存器的逻辑地址编号,将Ry寄存器替换为保存另外线程程序计数器内容的通用寄存器地址编号,当MIPS处理器运行该指令时,则用其值更改处理器的程序计数器(PC)的内容,从而实现了将线程切换到另外一个线程的操作;
(6)NEXTADDRSS:;下一条指令。
10)对原软件设计改进是:
(1)当处理器向执行耗时的算法单元发出命令后,就立刻保护当前程序计数器值,并按9)所述完成线程切换,让处理器执行其他线程的操作,在运行适当的时间后,并用同样的方法从其他线程切换到原线程,以继续未完的操作。
(2)通过MIPS指令JALR,JR指令的组合来实现当前程序计数器(PC,Program Counter)的现场保护和唤醒其他的线程操作;
(3)指令形式JALR Rd,Rs,Rs里保存着一个地址,其地址应指向紧接其后JR指令的后面指令,其操作的结果是将当前的程序计数器(PC)值保存到逻辑地址编号为Rd通用寄存器,紧接其后的JR Rs,Rs的值与前一条指令(JALR Rd,Rs)的Rd值相同,是保存程序计数器内容的通用寄存器(特殊寄存器)逻辑地址编号;
(4)JR Rs,Rs如果不是用于保存程序计数器内容的通用逻辑寄存器(特殊寄存器)逻辑地址编号,则其功能保持不变。
11)在9)中所述的汇编语言形式的微码程序中对应的通用寄存器编号均是每个线程所使用的通用寄存器组里的逻辑地址编号,并非处理器内部的通用寄存器实际编号,微码在进入处理器执行单元时均要经过微码预处理单元的处理,微码预处理单元能够根据当前运行的实际线程编号,将微码中通用寄存器的逻辑地址编号修改为处理器中实际的地址编号,其过程是:
(1)当微码预处理单元接收到处理器发出预取指令时,向微码存储器发读取命令;
(2)当微码预处理单元接收到微码指令时,检查该指令的操作数是否有通用寄存器方式的;
(3)如果操作码不是JR,且其操作数中出现了通用通用寄存器,并且其通用寄存器是约定的每组寄存器中保存程序计数器的指定逻辑编号,则根据目前线程编号(初始时,线程编号为0),可以根据内部寄存器信息表查出当前线程对应的通用寄存器组的基地址编号,然后按照“基地址编号+通用寄存器逻辑编号”转换成处理器里实际通用寄存器编号地址;传送给处理器单元;
(4)如果操作数中没有出现通用寄存器,则将该微码直接发给处理器单元;
(5)如果操作码是JR,此时微码处理单元需更新线程编号记录,更新的方法可采用自加的方式,当达到最大线程编号数时,返回0。操作数中的通用寄存器逻辑编号地址应按照“新的线程编号对应的寄存器组的基地址编号+通用寄存器逻辑编号”转换。
12)在汇编语言形式的微码里如果含有外部存储器地址,其地址是在其在外部存储器组里逻辑地址值,微码在进入处理器执行单元时均要经过微码预处理单元的处理,微码预处理单元能够根据当前运行的实际线程编号,根据外部存储器信息表,查出对应的基地址,根据“基地址编号+外部存储器的逻辑地址编号”将微码中外部存储器的逻辑地址修改为外部存储器实际的地址编号。
13)微码分析电路和微码修改电路能够根据微码的特点分析和处理微码,其步骤包括:
(1)微码预处理单元通过微码程序存储器接口(2-1)读取微码指令,交给微码分析电路(2-6),进入微码分析过程;
(2)如果微码分析的结果需要对微码进行修改,则将该微码交给微码修改电路(2-7)予以修改;
(3)将修改过的或者不需要修改的微码通过处理器程序存储器接口(2-5)发送给MIPS处理器。
14)在11)所述的微代码预处理单元的处理方式下,还应增加若干控制逻辑信号,来控制线程的激活,停止状态,因此要求对11)中第(5)步里增加下类补充步骤:
(1)每个线程均对应一个线程使能控制信号;
(2)如果使能控制信号有效,则表示该线程是使能的,则可以按照6)的第(5)步进行处理;
(3)如果使能控制信号无效,则表示该线程不能操作,则6)的第(5)步忽略,微码预处理单元仅需向处理器发一条空操作指令。
附图说明
图1是传统设计框图;
图2是微码预处理单元内部结构图;
图3是微码预处理单元的外部连接图;
图4是微码预处理单元里微码分析电路的微码分析过程流程图;
图5是微码处理单元里微码修改电路的微码修改过程流程图;
图6是将内部寄存器信息表和外部存储器信息表组合的信息表结构图。针对每个线程编号,对应一个内部寄存器的基地址值和一个外部存储器的基地址值。这些基地址值被用于微码修改电路里的微码修改过程。
具体实施方式:
本装置的体系结构如图2所示,主要由下面几个电路和接口组成:
(1)微码程序存储器接口(2-1):微码预处理单元和微码程序存储器的接口;
(2)内部寄存器信息表(2-2):保存各寄存器组的首寄存器在处理器里实际地址编号;
(3)外部存储器信息表(2-3):保存各外部存储器组的首单元地址;
(4)线程使能编号信息表(2-4):保存当前正在执行的线程编号和输出当前线程编号;
(5)处理器程序存储器接口(2-5):微码预处理单元和处理器程序存储器的接口;
(6)微码分析电路(2-6):对每一条微码进行过滤,将微码指令的操作数中含有内部通用寄存器和外部存储器的指令交给微码修改电路(2-7);
(7)微码修改电路(2-7):将满足修改条件的微码根据内部寄存器信息表或者外部存储器信息表进行修改。
上述各电路的连接关系为:微码存储存储器接口(2-1)接收到处理器程序存储器接口(2-5)的预取指令信号,微码存储器接口负责将微码读取到微码预处理单元。微码存储器接口将读取到的微码发送给微码分析电路(2-6),微码分析电路根据线程使能编号信息表判决当前的微码是否需要送到微码修改电路(2-7),如果不需要修改,则直接将微码发给处理器程序存储器接口(2-5);需要修改的微码则发给微码修改电路(2-7).微码修改电路(2-7)将修改后的微码发给处理器存储存储器接口(2-5)。
本发明的微码预处理单元在经过改进后的系统中的连接关系如图3。其中的算法处理单元可以是具体的算法处理模块,也可以是其他处理模块,它们可以从微码预处理单元得到传给它们的线程编号信息。
各部分的名称为:
(1)微码程序存储器(3-1):存放微码程序的存储器;
(2)微码预处理单元(3-2):本发明的主要内容,可通过现场可编程阵列(FPGA)实现;
(3)MIPS指令集处理器(3-3):以MIPS指令集为基础的处理器;
(4)外部存储器(3-4):按地址寻址的存储器;
(5)算法处理单元1-n(3-5,3-6,3-7):执行算法处理的器件单元。
上述各模块的连接关系为:微码预处理单元(3-2)从微码程序存储器(3-1)读取微码指令,将经过分析处理的微码指令发送给MIPS指令集处理器(3-3),MIPS指令集通过总线与外部存储器(3-4),算法处理单元(3-5,3-6,3-7)连接。
本发明涉及的处理过程包括:对微码预处理单元内部寄存器信息表,外部存储器信息表的初始化过程和微码程序的修改,微码分析过程,微码修改过程。
本表明涉及的信息表包括:内部寄存器信息表和外部存储器信息表。
现以一个具体微码设计实例来说明这些过程的的具体实现,采用如图3所示的结构设计,MIPS指令集处理器含有R0-R31共32个内部通用寄存器,外接外部存储器的地址范围是0-1000。
微码预处理单元内部寄存器信息表,外部存储器信息表的初始化和微码程序的修改:
1)选定处理器运行的线程数目,但不要选择太大的数目,否则每个线程能够分配到的通用寄存器数目太小,为微码程序的设计带来麻烦,建议线程数目为2;
2)将处理器的通用寄存器分为两组,其中R0,R31由于具有特殊用途,不参与分组,由于这两个线程不需要进行信息交换,则不需要设置公共寄存器作为信息交换寄存器,因此每组拥有15个通用寄存器,R1-R15为第一组,R16-R30为第二组;外部存储器也分为两组,第一组地址范围0-499,第二组地址范围500-999;将逻辑地址编号为15的寄存器作为保存程序计数器(PC)内容的特殊寄存器,则对于第一个线程对应实际地址编号为R15,对于第二个线程对应实际地址编号R30;
3)根据内部寄存器信息表和外部存储器信息表基地址的定义和2)分配的结果将0,15写入到内部寄存器信息表,将0,500写入到外部存储器信息表;将这些信息表按照图6的形式写入到微码预处理单元;
4)如果是在上基础上设计微码程序,需要增加下列限制:1.可用通用寄存器的逻辑地址是1-15,外部存储器的逻辑地址是0-499;2.凡是如JAL,BLTZAL,BGEZAL,BLTZALL,BGEZALL涉及使用通用寄存器R31的指令均限制使用,这些指令的功能可用MIPS指令集其他指令代替;
5)如果是在源微码程序的基础上改动,按照4)的限制规则进行修改;
6)涉及线程切换的微码片断如下(;号是微码注释语句):
(1)AND R1,R1,R0;将Rx通用寄存器内容清0;
(2)ORI R1,R1,TARGET;通过汇编编译器,将第(5)行的TARGET标号所在行的行地址值翻译成立即数,保存在R1通用寄存器里;
(3)JALR R15,R1;将当前的程序计数器(PC)值保存在通用寄存器R15,由于线程返回时,应该返回到NEXTADDRSS处,因此R15还应应增加1条指令的长度;
(4)ADDI R15,R15,#opcodelength;由于返回的地址处应该是标号NEXTADDRESS处,所以应增加一条指令的长度,在32位(bit)的系统中,为#opcodelength为4,即4个字节;
(5)TARGET:JR R15;这里R15虽然与前一句R15形式一样,但其意义不一样,本句的R15经过预处理单元处理后,实际上是保存在R30里内容,即另外一条线程的程序计数器(PC)值,通过JR指令的操作,从而将MIPS的程序计数器的内容更改为下一个线程的程序计数器值;
(6)NEXTADDRSS:下一条指令。
7)在一个线程需要向算法处理单元发出命令操作时,并且该操作属于耗时操作,可按6)在该操作后添加线程切换的微码片断,即保存本线程程序计数器(PC)内容到本线程的特殊寄存器里,并用另外一个线程的特殊寄存器里的内容修改程序计数器(PC),则可让MIPS处理器无需等待算法处理单元完成操作,而是执行另外一条线程的其他操作,减少MIPS处理器的等待状态的时间,提高处理器的使用率,在执行适当时间后,再通过线程切换返回到原线程,以继续未完的其他操作;
 8)由于绝大多数MIPS指令集处理器微码执行单元都采用流水线方式,因此微码处理器当前处理的指令不一定就是处理器马上执行的指令。微码处理器在发送线程编号信息时,就不能只根据JR R15这条指令来判断线程发生编号,而且要根据流水线的长度和每条指令的执行时间来计算该指令实际运行的时刻,在运行时刻发送线程编号信息并更新线程编号寄存器的信息。
微码分析过程:
当微码预处理单元读取到微码程序存储器里的微码,即进入如图4所示的微码分析过程:
(1)步骤S4-1,微码预处理单元接收到处理器发来的预取指令命令;
(2)经过步骤S4-2,将预取的微码保存到微码预处理单元里的缓冲区里;
在过程:
(3)步骤S4-3,根据MIPS指令的指令结构分析指令的操作数是否含有通用寄存器或者外部存储器的地址,如果满足条件,说明微码中有修改的成分,进入步骤S4-4;否则进入S4-9,说明微码没有修改的成分,可直接将微码原封不动的通过处理器程序存储器接口(2-5)发给处理器;(4)当进入步骤S4-4,判断是否是“JR”指令,和其后的操作数寄存器的逻辑地址和特殊寄存器的逻辑地址编号是否相同,对于前面一个例子,这个特殊寄存器的逻辑地址编号是15。如果前面两个条件都满足,说明该指令将进行线程切换的操作,进入S4-5;否则进入S4-8,说明该指令仅含有需要修改的成分,需要发给微码修改电路修改相关的寄存器地址编号;
(5)当进入步骤S4-5,需要检查切换的目的线程(即和正在工作的线程不同的其它线程)的使能信号,看它是否允许工作,如果允许,则进入S4-7,进行线程切换操作;否则说明切换的目的线程是不允许工作的,这条进行线程切换操作的指令是无效的,进入S4-6,将该指令置换成一条空指令操作;
(6)步骤S4-7步骤负责完成线程编号信号的输出,由于处理器一般采用流水线操作,因此应根据流水线的深度来决定更新当前工作线程的编号信息的时刻,并同时修改当前工作的线程编号;
(7)在经过步骤S4-7后,进入步骤S4-8的微码指令,都含有修改成分,发给微码修改电路做进一步的修改操作;
(8)来自步骤S4-3或者S4-6处理后的微码指令,属于不需要做修改的微码指令,它们进入步骤S4-9,通过处理器程序存储器接口(2-5)发给处理器。
微码修改过程:
在完成微码分析阶段后,符合修改条件的微码则进入如图5所示的修改过程:
过程:
(1)步骤S5-1,读取当前的工作线程编号信息;
(2)进入步骤S5-2,判断所需要修改的信息是否是通用寄存器的逻辑地址信息,如果是,则进入步骤S5-5步骤,S5-5根据当前的工作线程编号信息查询内部寄存器信息表,得到相应的基地址的信息值;如果不满足条件,则进入S5-3;
(3)在步骤S5-3,判断所需要修改的信息是否是外部存储器的逻辑地址信息,如果是,则进入S5-4,根据当前的工作线程编号信息查询外部存储器信息表得到相应的基地址的信息值;如果不是,则执行S5-6,不作修改;
(4)经过步骤S5-4或者S5-5处理之后,得到一个用于进行逻辑地址转换的基地址值,进入S5-7完成地址转换,转换规则是:实际的地址值=基地址值+逻辑地址值;
(5)然后将步骤S5-7转换步骤得到的实际地址值在S5-8里,进行代码修改,代码修改的方法是,用实际的地址值替换原微码指令中的逻辑地址值;
(6)经过步骤S5-6或者S5-8处理的微码指令是修改完毕的微码指令,可以在S5-9通过处理器程序存储器接口(2-5)发给处理器。
以前面的实例说明如下:如在第一个线程下,内部寄存器信息表对应的基地址是0,所以内部通用寄存器的逻辑地址R1被转换成实际地址R1;外部存储器信息表对应的基地址是0,外部存储器的逻辑地址123就被转换实际地址123。而在第二个线程下,内部寄存器信息表对应的基地址是15,所以内部通用寄存器的逻辑地址R1被转换成实际地址R16(16=15+1);外部存储器信息表对应的基地址是500,所以外部存储器的逻辑地址123被转换成实际地址623(623=500+123)。
信息表:
可以将用于微码修改的内部寄存器信息表和外部存储器信息表组合成一张表设计,如图6所示。根据线程的个数确定线程的编号范围,对于每个线程编号,分别对应一个内部寄存器基地址值和一个外部存储器基地址值,这些基地址值根据线程的数量和内部寄存器和外部存储器的分组情况确定,并记录在表中,这些基地址值可用于微码修改过程。
以前面的实例说明如下:在具有32个通用寄存器的MIPS指令集处理器上,设计两个线程,其中R0、R31不参与分配也不使用,则剩下的寄存器被等分为两组,每组15个,第一个线程的内部寄存器的基地址是0(即第一个寄存器组首寄存器地址的前一个地址编号R0),第二个线程的内部寄存器的基地址是15(即第二个寄存器组首寄存器地址的前一个地址编号R15)。同理,如果该处理器外接的外部存储器地址范围是0-1000,则第一个线程的外部存储器的基地址是0(即第一个外部存储器组的首单元地址编号0),第二个线程的外部存储器的基地址是500(即第二个外部存储器组的首单元地址编号500)。这些信息可分别记录在如图6所示的信息表里。

Claims (4)

1.一种MIPS指令集的处理器的多线程装置,其特征在于,它含有一个能够对微码指令进行预处理的微码预处理单元,它由下述电路组成:
(1)微码程序存储器接口:完成微码预处理单元和微码程序存储器的接口;
(2)内部寄存器信息表:保存各寄存器组的首寄存器在处理器里实际地址编号;
(3)外部存储器信息表:保存各外部存储器组的首单元在外部存储器里实际地址;
(4)线程使能编号信息表:保存当前正在执行的线程编号和输出当前线程编号;
(5)处理器程序存储器接口:完成微码预处理单元和处理器程序存储器的接口功能;
(6)微码分析电路:它对每一条微码进行过滤,将微码指令的操作数中含有内部通用寄存器和外部存储器的指令交给微码修改电路;
(7)微码修改电路:它将满足修改条件的微码根据内部寄存器信息表或者外部存储器信息表进行修改。
2.一种MIPS指令集的处理器的多线程方法,其特征在于,包括步骤:处理器内部通用寄存器的分配和使用;处理器的外部存储器的分配;微码预处理单元保存信息;微码在使用通用寄存器或者外部存储器时的条件;微码预处理单元的处理微码步骤;利用微码分析电路和微码修改电路根据微码的特点分析和处理微码;
步骤a.所述的处理器内部通用寄存器按如下规则分配和使用:
(1)根据需要,预留0个或者多个通用寄存器单元作为线程信息交换通用寄存器;
(2)编号为R0,R31的内部通用存储器不参与分配,并且不使用;
(3)在剩下的通用寄存器单元里按照线程的个数分组,每组的通用寄存器数量相等,并且每组内的通用寄存器的地址是连续的;
(4)将每个通用寄存器组的首单元地址前一个地址编号作为基地址,写入微码预处理单元的内部寄存器信息表中;
(5)每个寄存器组的内部寄存器使用它们相对于本组基地址的偏移地址编号,即逻辑地址编号;
(6)在每个寄存组里,指定一个特殊通用寄存器,作为在微码切换线程时,保存程序计数器内容的特殊通用寄存器,要求这个通用寄存器在各个通用寄存器组里的逻辑地址相同,简单起见,可把每组的逻辑地址最大的通用寄存器作为保存程序计数器内容的特殊通用寄存器;
步骤b.所述的处理器的外部存储器按如下规则分配:
(1)根据线程的个数对外部存储器单元分组,为每个线程分配同样数目的外部存储器单元;
(2)每个外部存储器组里的存储器单元的地址是连续的;
(3)组与组之间紧邻的存储器单元地址不要求连续;
(4)将每个外部存储器组的首单元地址作为基地址,写入微码预处理单元的外部存储器信息表中。
(5)每个组的存储器单元使用它们相对于本组基地址的偏移地址编号,即逻辑地址编号;
步骤c.所述微码预处理单元保存如下信息:
(1)保存有步骤a所述的各寄存器组基地址信息的内部寄存器信息表;
(2)保存有步骤a所述的作为保存程序计数器内容的特殊寄存器的逻辑地址;
(3)保存有步骤b所述的按线程分组的外部存储器单元的基地址信息的外部存储器信息表;
(4)能够根据当前线程编号标志修改微码中通用寄存器逻辑地址和外部存储器逻辑地址信息,并能向外输出当前线程编号信息;
(5)是一个可编程的逻辑器件,其内部保存的信息内容可配置可修改;
步骤d.所述其微码在使用内部通用寄存器或者外部存储器时满足下列条件:
(1)线程所能使用的通用寄存器范围只与所分配的通用寄存器组里通用寄存器个数有关,与通用寄存器地址无关,如分配的通用寄存器为R1至R15,则微码能够使用的个数范围就是15,同理分配的R13至R27,其使用的通用寄存器个数范围也是15;同理,使用的外部存储器范围是由所分配组里的存储单元的个数有关,与其地址无关;
(2)在设计微码程序时,所使用的通用寄存器逻辑地址编号均是在通用寄存器组里相对于本组基地址的偏移地址,而不是通用寄存器在处理器里的实际地址编号;同理,所使用的外部存储器的地址是逻辑地址,即在一个外部存储器分组里相对于本组基地址的偏移地址,而不是在外部存储器的实际地址值;
步骤e.所述微码预处理单元按以下步骤处理微码:
(1)接收到MIPS处理器预取微码请求,微码预处理单元将微码读取到本单元;
(2)分析和处理读取的微码;
(3)将处理的微码发给MIPS处理器;
步骤f.所述微码分析电路和微码修改电路能够根据微码的特点分析和处理微码,其步骤包括:
(1)微码预处理单元通过微码程序存储器接口(2-1)读取微码指令,交给微码分析电路(2-6),进入微码分析过程;
(2)如果微码分析的结果需要对微码进行修改,则将该微码交给微码修改电路(2-7)予以修改;
(3)将修改过的或者不需要修改的微码通过处理器程序存储器接口(2-5)发送给MIPS处理器。
3.根据权利要求2所述的MIPS指令集的处理器的多线程方法,其特征在于,微码分析过程:
当微码预处理单元读取到微码程序存储器里的微码,即进入微码分析过程:
其具体步骤如下:
(1)步骤S4-1,微码预处理单元接收到处理器发来的预取指令命令;
(2)经过步骤S4-2,将预取的微码保存到微码预处理单元里的缓冲区里;
(3)步骤S4-3,根据MIPS指令的指令结构分析指令的操作数是否含有通用寄存器或者外部存储器的地址,如果满足条件,说明微码中有修改的成分,进入S4-4;否则进入S4-9,说明微码没有修改的成分,可直接将微码原封不动的通过处理器程序存储器接口(2-5)发给处理器;
(4)当进入步骤S4-4,判断是否是“JR”指令,和其后的操作数寄存器的逻辑地址和特殊寄存器的逻辑地址编号是否相同,如果前面两个条件都满足,说明该指令将进行线程切换的操作,进入S4-5;否则进入S4-8;
(5)当进入步骤S4-5,需要检查切换的目的线程的使能信号,看它是否允许工作,如果允许,则进入步骤S4-7,进行线程切换操作;否则说明切换的目的线程是不允许工作的,这条进行线程切换操作的指令是无效的,进入步骤S4-6,将该指令置换成一条空指令操作;
(6)S4-7步骤负责完成线程编号信号的输出,由于处理器一般采用流水线操作,因此应根据流水线的深度来决定更新当前工作线程的编号信息的时刻,并同时修改当前工作的线程编号;
(7)在经过步骤S4-7后,进入步骤S4-8的微码指令,都含有修改成分,发给微码修改电路做进一步的修改操作;
(8)来自步骤S4-3或者步骤S4-6处理后的微码指令,属于不需要做修改的微码指令,它们进入步骤S4-9,通过处理器程序存储器接口(2-5)发给处理器。
4.根据权利要求2所述的MIPS指令集的处理器的多线程方法,其特征在于,微码修改过程:
在完成微码分析阶段后,符合修改条件的微码则进入修改过程:
其具体步骤如下:
(1)步骤S5-1,读取当前的工作线程编号信息;
(2)进入步骤S5-2,判断所需要修改的信息是否是通用寄存器的逻辑地址信息,如果是,则进入步骤S5-5步骤,S5-5根据当前的工作线程编号信息查询内部寄存器信息表,得到相应的基地址的信息值;如果不满足条件,则进入S5-3;
(3)在步骤S5-3,判断所需要修改的信息是否是外部存储器的逻辑地址信息,如果是,则进入S5-4,根据当前的工作线程编号信息查询外部存储器信息表得到相应的基地址的信息值;如果不是,则执行S5-6,不作修改;
(4)经过步骤S5-4或者S5-5处理之后,得到一个用于进行逻辑地址转换的基地址值,进入S5-7完成地址转换,转换规则是:实际的地址值=基地址值+逻辑地址值;
(5)然后将步骤S5-7转换步骤得到的实际地址值在S5-8里,进行代码修改,代码修改的方法是,用实际的地址值替换原微码指令中的逻辑地址值;
(6)经过步骤S5-6或者S5-8处理的微码指令是修改完毕的微码指令,可以在S5-9通过处理器程序存储器接口(2-5)发给处理器。
CN 200410050005 2004-06-25 2004-06-25 一种基于mips指令集的处理器的多线程方法和装置 Expired - Lifetime CN1278227C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200410050005 CN1278227C (zh) 2004-06-25 2004-06-25 一种基于mips指令集的处理器的多线程方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200410050005 CN1278227C (zh) 2004-06-25 2004-06-25 一种基于mips指令集的处理器的多线程方法和装置

Publications (2)

Publication Number Publication Date
CN1595351A CN1595351A (zh) 2005-03-16
CN1278227C true CN1278227C (zh) 2006-10-04

Family

ID=34665886

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200410050005 Expired - Lifetime CN1278227C (zh) 2004-06-25 2004-06-25 一种基于mips指令集的处理器的多线程方法和装置

Country Status (1)

Country Link
CN (1) CN1278227C (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609583B (zh) * 2012-02-08 2013-09-18 福州瑞芯微电子有限公司 芯片寄存器信息管理方法
CN108632403A (zh) * 2018-03-30 2018-10-09 天津麒麟信息技术有限公司 一种基于飞腾处理器的mac和ip地址传递方法
CN109214149B (zh) * 2018-09-11 2020-04-21 中国人民解放军战略支援部队信息工程大学 一种mips固件基地址自动化检测方法
CN112463327B (zh) * 2020-11-25 2023-01-31 海光信息技术股份有限公司 逻辑线程快速切换的方法、装置、cpu芯片及服务器
CN112445616B (zh) * 2020-11-25 2023-03-21 海光信息技术股份有限公司 资源分配方法以及装置
CN113284038B (zh) * 2021-03-05 2022-10-18 上海壁仞智能科技有限公司 用于执行计算的方法、计算设备、计算系统和存储介质
CN113553102B (zh) * 2021-08-11 2022-07-05 成都海光微电子技术有限公司 微码取指方法、微码存储组合产生方法、装置、设备

Also Published As

Publication number Publication date
CN1595351A (zh) 2005-03-16

Similar Documents

Publication Publication Date Title
CN1145879C (zh) 数据处理系统及其控制方法
CN1129843C (zh) 使用组合的数据处理器系统和指令系统
Wolf et al. Multiprocessor system-on-chip (MPSoC) technology
CN1302385C (zh) 编译装置
CN1308826C (zh) 用于smt处理器上的cpi调度的系统和方法
CN1089460C (zh) 多指令集的数据处理
CN100342325C (zh) 减少多线程处理器中寄存器文件端口的方法和装置
CN1308825C (zh) 用于在smt处理器中进行cpi负载平衡的系统和方法
CN1123837C (zh) 计算机系统及多处理器计算机系统中的第一处理器
CN1752934A (zh) 编译器、编译方法以及编译程序
CN1655118A (zh) 处理器和编译器
CN1121014C (zh) 具有risc结构的八位微控制器
CN101051301A (zh) 用于操作计算机处理器阵列的方法和装置
CN1292343C (zh) 处理器及处理管线中例外反应的装置与方法
CN1570870A (zh) 终极管道和最优重排技术
CN1763731A (zh) 高速缓冲存储器系统
CN1434380A (zh) 图像处理装置和方法以及用于该装置的编译程序
CN1828541A (zh) Java操作系统中定时任务的实现方法
CN1419192A (zh) 中间代码预处理、执行装置及执行系统及计算机程序产品
CN1278227C (zh) 一种基于mips指令集的处理器的多线程方法和装置
CN1095133C (zh) 多处理器计算机系统中共享结果数据的方法,装置和系统
CN1975693A (zh) 具有自驱动功能的指令仿真解析系统及其实现方法
CN1852156A (zh) 不中断业务对处理系统的程序版本进行升级的方法
CN1540481A (zh) 基于网格环境的多计算引擎协同使用方法
CN1234066C (zh) 基于操作队列复用的指令流水线系统和方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20061004

CX01 Expiry of patent term