一个用于时分复用流水线处理器的程序调试方法与流程

文档序号:26192902发布日期:2021-08-06 18:46阅读:42来源:国知局
一个用于时分复用流水线处理器的程序调试方法与流程

本发明涉及处理器结构领域,尤其是超多线程的处理器的调试方法。

背景

在目前处理器,调试过程一般通过专用硬件进行,即使有通过软件的调试,也需要诸如操作系统的支持,普适性不强。由于超多线程处理器天然拥有多线程且无需切换的优势,故可以将其中至少一个线程用于调试而不影响其他线程的工作与响应。



技术实现要素:

一个用于时分复用流水线处理器的程序调试方法,特征为:处理器使用一个多级流水线,流水线的各级流水部件在同一个流水线时钟周期执行不同线程的操作;所有复用该流水线的线程根据其切入流水线的时间规律,分成多个线程组,每个线程组内的线程不会同时出现在流水线上,至少一个线程组的一个线程通过运行程序代码实现对其他线程资源的读写与控制。

一个典型的分组方法为:由于处理器的流水级数为n,一个线程的一条指令需要n个流水时钟周期才能完成,所以任何线程的指令执行速度最大值为流水线时钟的n分之1,线程切入流水线的时刻的流水线时钟计数值除以n后的余数相同的线程不会同时出现在流水线上,所以它们对指令或数据功能存储器的访问也永远不会同时出现。把这些永远不会同时出现在流水线上的线程归为一组,同一个线程组内的线程由于不同时出现在流水线上,所以该处理器可以具有很多独立并行的线程可以使用,将其中至少一个线程用于对数据空间,寄存器等整体线程资源的信息进行读写控制,从而达到调试各个线程代码运行的目的。由于是使用线程运行代码而非具体硬件,所以这种调试模式的灵活性极强,可按需设计各种调试形式和通信方式。

在一般情况下下,处理器具有专门的调试通信接口,但是在一些远程在正常运行的系统上调试时,可能无法使用专门的调试通信接口,通过对专用线程的编程,我们可以使用任何可用的通信方式远程调试或者监视代码的运行。

附图说明

图1是线程调试基本结构图

具体实施方式

通常情况下,所公开的实施例在下面的说明中,给出了具体的细节,以便于透彻理解这些实施例。但是,本领域技术人员应当理解的是,这些实施例也可以不用这些具体细节来实现。尤其是关于流水线和存储器以及复用器等功能性部件,实施例中的方法只是为了说明意图而选用的特例技术,这些实施例可以选择其他公知方法。

第一实施例

图1说明线程调试基本结构图,包含:

位于第1级流水线的取指部件101,工作在流水线时钟;

位于第2级流水线的译码部件102,工作在流水线时钟;

位于第3级流水线的执行部件103,工作在流水线时钟;

位于第4级流水线的写回部件104,工作在流水线时钟;

指令存储器部件105是一个单端口静态随机存储器(sram),工作在流水线时钟频率,通过复用选择器109连接到流水线,作为指令存储器工作;

数据存储器部件106是一个单端口静态随机存储器(sram),工作在流水线时钟频率,通过复用选择器109连接到流水线,作为数据存储器工作;

调试接口部件107是一个用于和外界通信的专用调试接口;

外设部件108是系统外设集合;

复用器部件109是系统复用器集合;

线程专用资源部件110是线程专用资源集合;

调试辅助器部件111是调试辅助器资源集合;

线程公共资源部件112是线程公共资源集合;

该处理器为4级流水线处理器,可以分成4个线程组,每个线程组在不同时刻进入流水线,每个线程组包含2个线程,每个线程轮流占用该线程组,一共有16个线程使用该流水线,分别命名为线程1至16,选择线程1为调试线程,其余线程为被调试线程。

线程1与普通线程在功能上都是通过流水线执行程序代码,但是线程1可以具有更高权限访问调试辅助器,虽然普通线程也可以访问调试辅助器,但是这样会增加系统出错风险,一般不这样做。调试辅助器主要是由一组读写寄存器和特别的访问通路组成,任何需要访问的资源,如果无法通过调试线程直接读写,则都需要通过调试辅助器来间接访问,线程1可以通过调试辅助器专用的访问通路读取线程专用资源,例如各个线程各自专有的寄存器数据,各个线程各自专有的程序指针数据等等,这些数据一般无法被其他线程读写,必须在调试辅助器的配合下完成,线程1也可以通过调试辅助器也可以通过正常数据通路读写线程公共资源,例如数据存储器,外设寄存器等,这些数据一般对所有线程开放。线程1还可以通过写调试辅助器的寄存器设置调试细节,例如对线程3设置断点,或停止线程4的运行等。这些功能没有调试辅助器配合是无法单独由线程1完成的。此外,调试线程还可以访问一些其他线程无法访问的资源,例如一段专用内存空间,某个特别的外设等等。需要注意的是调试辅助器一般只允许调试线程访问,否则会有误操作或数据安全等风险。

一般一个调试线程即可完成所有调试任务,如果一个线程的速度不够,还可以增加调试线程的数量,甚至使用一个调试线程调试另一个调试线程。调试线程与被调试线程之间没有任何特别限制,他们可以属于一个线程组也可以属于不同线程组,运行速度可以相同也可以不同。一般情况下为了系统稳定,调试线程被设置为禁止被调试状态,即调试线程本身不能被自己或其他线程调试。

一个调试线程的运行速度也可以按需设置,一个慢速的调试线程可以调试一个快速的被调试线程,或者反之。

本例中的调试接口部件107一般用于同用户通信,但是在一些特殊情况,用户也可以通过外设接口与调试线程通信,从而不必须使用调试接口部件107,例如系统外设有串行通信接口或者usb接口或者以太网口,调试线程1可以通过运行不同的调试程序使用不同的通信接口与用户通信,将用户的调试命令作用于系统,并将系统的调试信息送还客户。

调试线程并不总是处于使用状态,当用户没有调试需求时,调试线程可以降低自身运行速度,甚至停止运行,或者处于休眠状态等待用户激活,达到省电目的。

调试线程本身还可以具有看门狗功能,他可以监视其他线程,或者通过与其他线程互动从而判断被监视线程是否正常运行,判断规则与互动规则可以编程灵活实现,对不正常线程的处理,同样可以编程灵活实现。

对所公开实施方式的先前的说明以使得任何所属技术领域的专业人员可以实施或者使用本发明。对本领域的技术人员而言可以很容易的对这些实施方式进行各种修改,并且在不脱离本发明的精神上、或者范围的情况下可以将在此定义的通用原理应用于其他实施方式。因此,并非意在将本发明限于在此显示的实施方式,而是应当同符合在此公开的原理和非常规设计的最宽范围相一致。



技术特征:

1.一个用于时分复用流水线处理器的程序调试方法,特征为:处理器使用一个多级流水线,流水线的各级流水部件在同一个流水线时钟周期执行不同线程的操作;所有复用该流水线的线程根据其切入流水线的时间规律,分成多个线程组,每个线程组内的线程不会同时出现在流水线上;至少一个线程组的一个线程通过读写调试辅助器的寄存器的方式实现对其他线程的专有资源或所有线程的公共资源的读写与控制。

2.如权利要求1所述方法,还包括:调试线程与被调试线程可以在相同的线程组也可以在不同的线程组。

3.如权利要求1至2所述方法,还包括:调试线程与被调试线程的运行速度可以相同也可以不同。

4.如权利要求1至3所述方法,还包括:调试线程本身可以允许被调试也可以不允许被调试。

5.如权利要求1至4所述方法,还包括:只有调试线程可以读写调试辅助电路的寄存器。

6.如权利要求1至5所述方法,还包括:调试线程有高于其他线程的权限,能读写其他线程不可以读写的系统资源。

7.如权利要求1至6所述方法,还包括:调试线程可以通过专用调试通信端口通信,也可以通过系统外设端口通信。

8.如权利要求1至7所述方法,还包括:调试线程在没有调试任务时可以处于低速运行或等待激活运行状态。

9.如权利要求1至8所述方法,还包括:调试线程对某个或某些运行的线程进行实时检测或者互动,从而判断被监视线程是否运行异常,并阻止与修正异常线程的行为。

10.一种时分复用流水线处理器,处理器采用权利要求1-9中任一项的方法调试程序。


技术总结
一个用于时分复用流水线处理器的程序调试方法,特征为:处理器的指令由多个流水线时钟周期完成,流水线的各级流水部件在同一个时流水线钟周期执行不同线程的操作;所有复用该流水线的线程根据其切入流水线的时间规律,分成多个线程组,使每个线程组内的线程不会同时出现在流水线上,用户可以通过至少一个线程对其他线程进行调试。

技术研发人员:刘欣
受保护的技术使用者:刘欣
技术研发日:2021.04.27
技术公布日:2021.08.06
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1