调试器装置及调试方法.pdf

上传人:00****42 文档编号:650078 上传时间:2018-03-01 格式:PDF 页数:78 大小:3.50MB
返回 下载 相关 举报
摘要
申请专利号:

CN200410055910.6

申请日:

2004.08.03

公开号:

CN1581117A

公开日:

2005.02.16

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回|||实质审查的生效|||公开

IPC分类号:

G06F13/00; G06F11/36

主分类号:

G06F13/00; G06F11/36

申请人:

松下电器产业株式会社

发明人:

森河彻; 渡边和嗣; 宫地信哉

地址:

日本大阪府

优先权:

2003.08.04 JP 2003-286061

专利代理机构:

中科专利商标代理有限责任公司

代理人:

王玮

PDF下载: PDF下载
内容摘要

根据本实施例的一种调试器装置,包括主机、CPU、用于存储指令的多个E-存储器单元(仿真存储器单元)以及执行监督单元。主机跟踪要被存储在E-存储器单元的指令,并以指令序列的形式传送跟踪结果。执行监督单元与CPU、E-存储器单元和主机相连。执行监督单元将从主机传送过来的指令序列单独写入多个E-存储器单元中,按照CPU的指令地址,从多个E-存储器单元之一读取指令序列,从而向CPU传送指令序列,并在CPU的指令地址不相关时,向主机输出指令重写命令。

权利要求书

1.  一种调试器装置,包括:
多个仿真存储器单元(E-存储器单元),所述多个E-存储器单元存储由CPU执行的指令;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
所述执行监督单元将从主机传送过来的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并传送给CPU,以及当CPU的指令地址不相关时,向主机输出指令重写命令。

2.
  一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在该多个E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
所述执行监督单元将从主机传送过来的指令序列单独写入E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并将指令序列传送给CPU,以及当CPU的指令地址不相关时,向主机输出指令重写命令。

3.
  根据权利要求2所述的调试器装置,其中
主机根据执行序列,根据由CPU执行的指令,并向执行监督单元传送与各个E-存储器单元的存储器容量相等的指令序列,
执行监督单元将从主机传送过来的、与存储器容量相等的指令序列顺序地写入多个E-存储器单元中,
CPU向执行监督单元输出指令地址,
执行监督单元根据CPU的指令地址,判断当前读取的E-存储器单元是否不同于先前读取的E-存储器单元,
在E-存储器单元彼此不同时,执行监督单元还向主机输出指令重写命令,并读取来自当前读取的E-存储器单元的指令序列,从而向CPU传送指令序列,
CPU执行从指令监督单元传送过来的指令序列,
主机响应指令重写命令,跟踪指令,从而向执行监督单元传送下一个指令序列,以及
执行监督单元按照等于其存储器容量的方式,将从主机传送过来的指令序列写入先前读取的E-存储器单元中。

4.
  一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
所述执行监督单元将从主机传送过来的指令序列单独写入多个E-存储器单元中,并依照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并传将指令序列送给CPU,以及当与CPU的指令地址相一致的指令表示无条件分支指令的执行时,向主机输出指令重写命令。

5.
  根据权利要求4所述的调试器装置,其中
主机根据执行序列,跟踪由CPU执行的指令,并在出现无条件分支指令时,区分其分支目的地和分支起点的指令序列,并向执行监督单元传送每个指令序列的指令,
执行监督单元按照指令序列,将从主机传送过来的指令顺序地写入多个E-存储器单元,
CPU向执行监督单元输出无条件分支指令的地址,
执行监督单元根据CPU的指令地址,判断无条件分支指令的当前读取的E-存储器单元是否不同于先前读取的E-存储器单元,
在E-存储器单元彼此不同时,执行监督单元还向主机输出指令重写命令,并读取来自当前读取的E-存储器单元的无条件分支指令,从而向CPU传送无条件分支指令,
CPU执行从指令监督单元传送过来的无条件分支指令,
主机响应指令重写命令,跟踪指令,从而向执行监督单元传送要执行的下一指令序列,以及
执行监督单元按照等于其存储器容量的方式,将从主机传送过来的指令序列写入先前读取的E-存储器单元中。

6.
  根据权利要求5所述的调试器装置,其中
主机根据执行序列,跟踪由CPU执行的指令,
在无条件分支指令的分支目的地对应于相同E-存储器的存储器区域时,执行监督单元将适合于相同E-存储器单元的多个指令序列写入相同的E-存储器单元中,
CPU向执行监督单元输出无条件分支指令的地址,
执行监督单元按照CPU的指令地址,判断无条件分支指令的当前读取的E-存储器单元是否与先前读取的E-存储器单元相同,并在E-存储器相同时,终止指令重写命令的输出。

7.
  一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
所述执行监督单元将从主机传送过来的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并该指令序列传送给CPU,以及当与CPU的指令地址相一致的指令表示无条件分支指令的执行时,向主机输出指令重写命令,以及当与CPU的指令地址相一致的指令表示子程序调用指令时,终止指令重写命令的输出。

8.
  根据权利要求7所述的调试器装置,其中
主机根据执行序列,跟踪由CPU执行的指令,并在出现子程序调用指令时,区分包括其分支目的地和分支起点的指令序列,并按照指令序列向执行监督单元传送指令,
执行监督单元按照指令序列,将从主机传送过来的指令顺序地写入多个E-存储器单元,
CPU向执行监督单元输出子程序调用指令的地址,
执行监督单元根据CPU的指令地址,判断当前读取的E-存储器单元是否不同于先前读取的E-存储器单元,
在E-存储器单元原则上彼此不同时,执行监督单元还向主机输出指令重写命令,而在子程序调用指令的情况下,终止指令重写命令的输出,并读取来自当前读取的E-存储器单元的子程序指令序列,从而向CPU传送子程序指令序列,以及
CPU执行从指令监督单元传送过来的子程序指令序列。

9.
  一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
所述执行监督单元将从主机传送过来的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并将指令序列传送给CPU,以及当与CPU的指令地址相一致的指令表示无条件分支指令的执行时,向主机输出指令重写命令,以及当与指令地址相一致的指令表示例外处理的执行时,终止指令重写命令的输出。

10.
  根据权利要求9所述的调试器装置,其中
主机根据执行序列,跟踪由CPU执行的指令,并在出现例外处理时,区分包括其分支目的地和分支起点的指令序列,并向执行监督单元传送每个指令序列的指令,
执行监督单元按照指令序列,将从主机传送过来的指令顺序地写入多个E-存储器单元,
CPU向执行监督单元输出例外处理的地址,
执行监督单元根据CPU的指令地址,判断当前读取的E-存储器单元是否不同于先前读取的E-存储器单元,
在E-存储器单元原则上彼此不同时,执行监督单元还向主机输出指令重写命令,而在例外处理的情况下,终止指令重写命令的输出,并读取来自当前读取的E-存储器单元的例外处理,从而向CPU传送例外处理,以及
CPU执行从指令监督单元传送过来的例外处理。

11.
  一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
所述执行监督单元将从主机传送过来的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,从而传送给CPU,
当与CPU的指令地址相一致的指令表示条件分支指令的执行时,判断该分支是否被建立,并当所述分支被建立时,向主机输出指令重写命令。

12.
  根据权利要求11所述的调试器装置,其中
主机根据执行序列,跟踪由CPU执行的指令,并在出现条件分支指令时,区分包括其分支目的地和分支起点的指令序列,并向执行监督单元传送每个指令序列的指令,
执行监督单元按照指令序列,将从主机传送过来的指令顺序地写入多个E-存储器单元,
CPU向执行监督单元输出条件分支指令的地址,
执行监督单元判断条件分支指令的分支是否被建立,并根据CPU的指令地址,判断条件分支指令的当前读取的E-存储器单元是否不同于先前读取的E-存储器单元,
在E-存储器单元彼此不同时,执行监督单元还向主机输出指令重写命令,并读取来自当前读取的E-存储器单元的条件分支指令,从而向CPU传送条件分支指令,而在条件分支指令失败时,向主机输出对条件分支指令的下一个指令重写命令,
CPU执行从指令监督单元传送过来的条件分支指令,
主机响应指令重写命令,跟踪指令,并且还响应下一个指令重写命令,跟踪该指令,从而向执行监督单元分别传送要执行的下一个指令序列,以及
执行监督单元按照等于其存储器容量的方式,将从主机传送过来的指令序列写入先前读取的E-存储器单元中。

13.
  根据权利要求11或12所述的调试器装置,其中
主机根据执行次序跟踪由CPU执行的指令,并对所跟踪的指令进行仿真,当仿真结果表示条件分支指令的出现时,预测该分支是否被建立或失败,当预测该分支失败时,终止针对执行监督单元的分支目的地的指令序列传送。

14.
  一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果,并可能传送包括多条条件分支指令的指令序列;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
所述执行监督单元将从主机传送过来的指令序列单独写入多个E-存储器单元中,并依照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,从而将指令序列传送给CPU,
当与CPU的指令地址相一致的指令表示多条条件分支指令中的第一条件分支指令的执行时,执行监督单元判断分支是否被建立,当判断分支被建立时,向主机输出指令重写命令,以及当判断分支失败时,终止指令重写命令的输出。

15.
  根据权利要求14所述的调试器装置,其中
主机根据执行序列,跟踪由CPU执行的指令,并在出现多条条件分支指令时,区分包括多个分支目的地和分支起点的指令序列,并向执行监督单元传送每个指令序列的指令,
执行监督单元按照指令序列,将从主机传送过来的指令顺序地写入多个E-存储器单元,
CPU向执行监督单元输出第一条件分支指令的地址,
执行监督单元判断第一条件分支指令的分支是否被建立,并根据CPU的指令地址,判断当前读取的E-存储器单元是否不同于先前读取的E-存储器单元,
在E-存储器单元彼此不同时,执行监督单元还向主机输出指令重写命令,并读取来自当前读取的E-存储器单元的第一条件分支指令,从而向CPU传送第一条件分支指令,而在第一条件分支指令失败时,输出对第一条件分支指令的下一个指令重写命令,
CPU执行从执行监督单元传送过来的第一条件分支指令,
主机响应指令重写命令,跟踪指令,并响应下一个指令重写命令,跟踪指令,从而向执行监督单元分别传送要执行的下一个指令序列,
执行监督单元按照等于其存储器容量的方式,将从主机传送过来的指令序列写入先前读取的E-存储器单元中,
CPU向执行监督单元输出第二条件分支指令的地址,以及
执行监督单元根据第二条件分支指令的分支的建立或失败,执行前述处理。

16.
  一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
所述执行监督单元将从主机传送过来的任务的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取任务的指令序列,从而向CPU传送任务的指令序列,以及当与CPU的指令地址相一致的指令表示任务切换的执行时,向主机输出指令重写命令。

17.
  根据权利要求16所述的调试器装置,其中
主机根据执行序列,跟踪由CPU执行的指令,并在出现任务切换时,区分分支目的地和分支起点的指令序列,并向执行监督单元传送每个任务的指令,
执行监督单元按照任务,将从主机传送过来的指令顺序地写入多个E-存储器单元,
CPU向执行监督单元输出任务切换的地址,
执行监督单元根据CPU的指令地址,判断任务切换的分支目的地的E-存储器单元是否与先前读取的E-存储器单元相同,并在E-存储器单元彼此不同时,向主机输出指令重写命令,并读取来自当前读取的E-存储器单元的任务的指令序列,从而向CPU传送该任务的指令序列,
CPU执行从指令监督单元传送过来的任务的指令序列,
主机响应指令重写命令,跟踪指令,从而向执行监督单元传送要执行的任务的下一个指令序列,
执行监督单元按照等于其存储器容量的方式,将从主机传送过来的任务的指令序列写入先前读取的E-存储器单元中。

18.
  根据权利要求13所述的调试器装置,其中
主机根据执行次序跟踪由CPU执行的指令,从而产生执行树结构,
主机根据树结构,区分分支指令的分支目的地和分支起点的指令序列,并向执行监督单元传送每个指令序列的指令,以及
执行监督单元按照指令序列,将从主机传送过来的指令顺序地写入多个E-存储器单元中。

19.
  一种调试器装置,包括:
CPU,所述CPU执行指令;
单一的E-存储器单元,所述单一的E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪存储在E-存储器单元中的指令,并以指令序列的形式与写入前导地址一起传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
所述执行监督单元保持从主机传送过来的写入前导地址,并按照写入前导地址,将从主机传送过来的指令序列写入E-存储器单元中。保持从主机传送过来的写入前导地址和前导指令地址,并根据写入前导地址和前导指令地址,将CPU的指令地址转换为存取E-存储器单元的地址,并根据转换的地址读取来自E-存储器的指令,从而将指令传送到CPU,
当与CPU的指令地址相一致的指令表示分支指令的执行时,执行监督单元向主机输出指令重写命令,并保持从主机响应地址重写命令而传送过来的、要执行的下一个指令序列的写入前导地址和前导指令地址。

20.
  根据权利要求19所述的调试器装置,其中
主机根据执行序列,跟踪由CPU执行的指令,并在出现分支指令时,区分其分支目的地和分支起点的指令序列,并向执行监督单元传送每个指令序列的指令及其写入前导地址,
执行监督单元根据写入前导地址,按照指令序列,将从主机传送过来的指令写入E-存储器,并保持前导指令地址,
CPU向执行监督单元输出分支指令的地址,
执行监督单元根据CPU的分支指令的地址,判断分支指令的地址是否不同于当前前导指令地址,并在地址彼此不同时,向主机输出地址重写命令,
主机响应地址重写命令,跟踪指令,并向执行监督单元传送要执行的下一个指令序列的写入前导地址和前导指令地址,以及
执行监督单元保持从主机传送过来的写入前导地址和前导指令地址。

21.
  一种调试器装置,包括:
CPU,所述CPU执行指令;
单一的E-存储器单元,所述单一的E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪存储在E-存储器单元中的指令,并以指令序列的形式与写入前导地址一起传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
所述执行监督单元保持从主机传送过来的写入前导地址,并依照写入前导地址,将从主机传送过来的指令序列写入E-存储器单元中,保持从主机传送过来的写入前导地址和前导指令地址,并保持下一指令的写入前导地址和前导指令地址,
执行监督单元根据写入前导地址和前导指令地址,将CPU的指令地址转换为用于存取E-存储器的地址,根据转换后的地址,从E-存储器单元中读取指令,从而将指令传送给CPU,
当与CPU的指令地址相一致的指令表示分支指令的执行时,所述执行监督单元以下一个写入前导地址代替当前的写入前导地址,并以下一个指令序列的前导指令地址代替当前的前导指令地址,向主机输出指令重写命令,并响应地址重写命令保持从主机传送过来的、要执行的下一个指令序列的写入前导地址和前导指令地址,作为下一个处理的目标。

说明书

调试器装置及调试方法
技术领域
本发明涉及一种调试器(debugger)装置,按照如下方式进行配置:将提供给主机PC的系统LSI的指令暂时存储在E-存储器(仿真存储器)中,以便稍后从E-存储器提供给CPU。
背景技术
在作为传统调试器装置的示例的电路内仿真器(ICE)中,将调试监控程序写入诸如超高速缓冲存储器之类的内置存储器中,并仿真CPU的指令。前述处理中的问题在于,如果芯片间延迟较大,因为系统LSI和ICE是不同的芯片,则不能仿真指令;将ICE并入系统LSI中导致了面积的增加;在从外部ROM下载监控程序的情况下,不能对内置ROM进行调试;以及不能仿真并入了指令的ROM。
发明内容
因此,本发明的主要目的是提供一种调试器装置,能够将指令有效地写入E-存储器,控制由于传送业务量而导致的额外开销,并向CPU有效地提供指令,同时,控制面积的增加。
通过以下的描述,本发明的其他目的、特征和优点将变得更加清楚。
此后,将对多种类型的组件进行描述。所述组件可以由软件、硬件或硬件和软件的组合来构成。
仿真存储器单元用于暂时存储由CPU执行的指令,并在随后的描述中,缩写为E-存储器单元。
E-存储器执行监督单元与CPU、E-存储器单元和主机PC相连,从而在前述三个组件之间中继控制信号和数据,并缩写为执行监督单元。将主机PC缩写为主机。
1.根据本发明的一种调试器装置,包括:
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
按照如下方式配置所述执行监督单元:将从主机传送过来的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并传送给CPU。当CPU的指令地址不相关时,向主机输出指令重写命令。
在前述结构中,在主机中,根据执行序列,预先跟踪指令,向多个E-存储器单元顺序传送其结果,以便存储在其中。按照这种方式,可以将指令更为有效地存储在E-存储器单元中,同时控制由传送业务量而导致的额外开销,从而向CPU有效地提供指令。
2.根据本发明的一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
按照如下方式配置所述执行监督单元:将从主机传送过来的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并传送给CPU。当CPU的指令地址不相关时,向主机输出指令重写命令。
在前述结构中,当在E-存储器单元未存储所需指令时,实现E-存储器单元的切换,并输出指令重写命令。然后,从主机读取随后要执行的指令序列,并存储在当前未使用的E-存储器单元中。按照这种方式,可以控制由传送业务量而导致的额外开销,从而向CPU有效地提供指令。
3.根据本发明的一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
按照如下方式配置所述执行监督单元:将从主机传送过来的指令序列单独写入多个E-存储器单元中,并依照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并传送给CPU。当按照CPU的指令地址的指令表示无条件分支指令的执行时,向主机输出指令重写命令。
在前述结构中,在主机中,根据执行序列,预先跟踪指令,并且分别向多个E-存储器单元传送在无条件分支之前的指令和从无条件分支目的地指令向前的指令,并彼此独立地存储在多个E-存储器单元中。于是,当执行无条件分支指令时,实现E-存储器单元的切换。按照这种方式,从而能够控制由传送业务量而导致的额外开销,借此,向CPU有效地提供指令。
4.根据本发明的一种调试器装置,按照如下方式进行配置。
在主机中,根据执行序列,跟踪指令,并在无条件分支指令的分支目的地属于相同E-存储器单元的存储区时,由执行监督单元将适合于相同E-存储器单元的多个指令序列写入相同的E-存储器单元中。CPU向执行监督单元输出无条件分支指令的地址。执行监督单元依照CPU的指令地址,判断由无条件分支指令当前读取的E-存储器单元是否与先前读取的E-存储器单元相同,并在其判断相同时,终止指令重写命令的输出。
在前述结构中,当在主机中,根据执行序列,预先跟踪指令时,判断其分支目的地是否属于E-存储器单元的存储器容量。当判断分支目的地如此时,不将分支目的地处理为不同的指令序列。按照这种方式,额外地传送指令以及为了分支的目的而将其写入E-存储器单元变得不必要。因此,可以控制由传送业务量而导致的额外开销,借此向CPU有效地提供指令。
5.根据本发明的一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在E-存储器单元中地指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
按照如下方式配置所述执行监督单元:将从主机传送过来的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并传送给CPU。当与CPU的指令地址按照的指令表示无条件分支指令的执行时,向主机输出指令重写命令,以及当与CPU的指令地址相一致的指令表示子程序调用指令时,终止指令重写命令的输出。
根据前述结构,在通过子程序调用指令进行分支的情况下,保持子程序分支信息,并在通过子程序调用指令进行分支时,不改变分支起点中的指令序列。这成功地控制了由除了针对E-存储器单元传送和写入指令以外的传送业务量而导致的额外开销,从而向CPU有效地提供指令。
6.根据本发明的一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
按照如下方式配置所述执行监督单元:将从主机传送过来的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并传送给CPU。当与CPU的指令地址相一致的指令表示无条件分支指令的执行时,向主机输出指令重写命令,以及当与指令地址相一致的指令表示例外处理的执行时,终止指令重写命令的输出。
在前述结构中,当诸如中断等之类的例外处理发生时,保持例外处理,并在通过例外处理进行分支时,不改变分支起点中的指令序列。这成功地控制了由除了针对E-存储器单元传送和写入指令以外的传送业务量而导致的额外开销,从而向CPU有效地提供指令。
7.根据本发明的一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
按照如下方式配置所述执行监督单元:将从主机传送过来的指令序列单独写入多个E-存储器单元中,并依照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并传送给CPU。当与CPU的指令地址相一致的指令表示条件分支指令的执行时,判断该分支是否被建立,并当判断所述分支被建立时,向主机输出指令重写命令。
在前述结构中,当在指令序列中包括条件分支指令时,根据条件分支指令的建立或失败,分支目的地中的指令序列变得必要或不必要。在建立或失败之一的情况下,将不必要的指令序列重写入后续的必要指令序列中。这实现了对由除了针对E-存储器单元传送和写入指令以外的传送业务量而导致的额外开销的控制,从而向CPU有效地提供指令。
8.根据本发明的一种调试器装置,包括按照如下方式进行工作的主机。
根据指令序列,跟踪要由CPU执行的指令,并对所跟踪的指令进行仿真。当仿真结果表示条件分支指令的出现时,预测该分支是否被建立或失败。当预测该分支失败时,终止针对执行监督单元的分支目的地的指令序列传送。
在前述结构中,当在主机中预先跟踪要执行的指令时,对指令序列进行仿真,并从而通过保留内部寄存器的值等,预测该分支是否被建立或失败。这实现了对由除了针对E-存储器单元传送和写入指令以外的传送业务量而导致的额外开销的控制,从而向CPU有效地提供指令。
9.根据本发明的一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在E-存储器单元中的指令,并以指令序列的形式传送结果,并可能传送每一个均包括多条条件分支指令的指令序列;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
按照如下方式配置所述执行监督单元:将从主机传送过来的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取指令序列,并传送给CPU。当与CPU的指令地址相一致的指令表示多条条件分支指令中的第一条件分支指令的执行时,判断分支是否被建立。当判断分支被建立时,向主机输出指令重写命令,以及当判断分支失败时,终止指令重写命令的输出。前述结构中的技术特征在于在每个指令序列中包括了多条条件分支指令。
在前述结构中,当在指令序列中包括多条条件分支指令时,例如,将多条条件分支指令的地址保持在每当分支失败时进行移位的FIFO(先进先出)中。当分支被建立时,清除FIFO的内容。按照这种方式,可以对由额外地针对E-存储器单元传送和写入指令时所产生的传送业务量而导致的额外开销进行控制,从而向CPU有效地提供指令。
10.根据本发明的一种调试器装置,包括:
CPU,所述CPU执行指令;
多个E-存储器单元,所述多个E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在E-存储器单元中的指令,并以指令序列的形式传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
按照如下方式配置所述执行监督单元:将从主机传送过来的每个任务的指令序列单独写入多个E-存储器单元中,并按照CPU的指令地址,从多个E-存储器单元之一中读取任务的指令序列,从而传送给CPU。当与CPU的指令地址相一致的指令表示任务切换的执行时,向主机输出指令重写命令。
在前述结构中,在主机中,预先按照OS(操作系统)的任务,区分指令序列,从而向E-存储器单元传输每个任务的指令序列,并存储在E-存储器单元中,并且在切换任务时,实现对E-存储器单元的切换。按照这种方式,可以对由除了针对E-存储器单元传送和写入指令以外的传送业务量而导致的额外开销进行控制,从而向CPU有效地提供指令。
11.根据本发明的一种调试器装置,按照如下方式进行配置:
主机根据执行序列,跟踪由CPU执行的指令,从而产生执行树结构,
主机根据树结构,将指令序列分割为分支指令的分支目的地和分支起点,从而向执行监督单元传输每个指令序列的指令,以及
执行监督单元将按照指令序列从主机传送过来的指令顺序写入多个E-存储器单元。
在前述结构中,在主机中,预先跟踪要执行的所有指令,从而检测其中产生了对编程操纵的干扰的斑点(节点部分),并将所检测到的节点部分的地址和节点部分之间的字节数记录为树结构。按照这种方式,程序依照对各个指令的行为的分析执行对E-存储器单元的重写变得不必要。因此,可以控制由分析而导致的额外开销,从而向CPU有效地提供指令。
12.根据本发明的一种调试器装置,包括:
CPU,所述CPU执行指令;
单一的E-存储器单元,所述单一的E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在E-存储器单元中的指令,并以指令序列的形式与写入前导地址一起传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
按照如下方式配置所述执行监督单元:保持从主机传送过来的写入前导地址,并按照写入前导地址,将从主机传送过来的指令序列写入E-存储器单元中。保持从主机传送过来的写入前导地址和前导指令地址,并根据写入前导地址和前导指令地址,将CPU的指令地址转换为存取E-存储器单元的地址。当与CPU的指令地址相一致的指令表示分支指令的执行时,向主机输出指令重写命令,并保持从主机响应地址重写命令而传送过来的、要随后执行的指令序列的写入前导地址和前导指令地址。前述结构的技术特征在于包括单一的E-存储器单元。
根据前述结构,主机在将指令写入E-存储器单元时,传送写入前导地址,以及在从E-存储器单元中读取指令时,传送写入前导地址和前导指令地址。按照这种方式,可以在连续的空间中实现相对于E-存储器单元的写入和读取,从而实现了单一E-存储器单元的有效使用。
13.根据本发明的一种调试器装置,包括:
CPU,所述CPU执行指令;
单一的E-存储器单元,所述单一的E-存储器单元存储由CPU执行的指令;
主机,所述主机跟踪要被存储在E-存储器单元中的指令,并以指令序列的形式与写入前导地址一起传送跟踪结果;以及
执行监督单元,与CPU、E-存储器单元和主机相连,
按照如下方式配置所述执行监督单元:保持从主机传送过来的写入前导地址,并依照写入前导地址,将从主机传送过来的指令序列写入E-存储器单元中。保持从主机传送过来的写入前导地址和前导指令地址以及可能随后执行的指令序列的写入前导地址和前导指令地址,并根据写入前导地址和前导指令地址,将CPU的指令地址转换为存取E-存储器单元的地址。根据转换后的地址,从E-存储器单元中读取指令,从而传送给CPU。当与CPU的指令地址相一致的指令表示分支指令的执行时,以随后的写入前导地址代替当前的写入前导地址,并以随后的前导指令地址代替当前的前导指令地址。然后,向主机输出指令重写命令,并作为下一个选择,分别保持从主机响应地址重写命令而传送过来的、要随后执行的指令序列的写入前导地址和前导指令地址。
在前述结构中,保持写入前导地址和前导指令地址,并在分支时,以随后的写入前导地址和前导指令地址代替。按照这种方式,控制了由于在分支时额外传送地址而导致的额外开销。
在结合附图进行考虑的同时,通过以下对本发明的描述,前述和其他方面将变得显而易见。
附图说明
图1是示出了根据本发明一个实施例的调试器装置的结构的方框图。
图2是示出了根据本发明实施例1的执行监督单元的结构的方框图。
图3是根据实施例1存储在第一1E存储器和第二2E存储器中并由CPU随后处理的指令序列的示意图。
图4是示出了根据本发明实施例2的执行监督单元的结构的方框图。
图5是根据实施例2存储在第一1E存储器和第二2E存储器中并由CPU随后处理的指令序列的示意图。
图6是根据本发明实施例3的包括无条件分支指令在内的指令序列的示意图。
图7是示出了根据本发明实施例4的执行监督单元的结构的方框图。
图8是根据实施例4存储在第一1E存储器和第二2E存储器中并由CPU随后处理的指令序列的示意图。
图9是根据实施例4进行从指令序列1到指令序列2的子程序分支的指令序列的示意图。
图10是示出了根据本发明实施例5的执行监督单元的结构的方框图。
图11是根据实施例5存储在第一1E存储器和第二2E存储器中并由CPU随后处理的指令序列的示意图。
图12是示出了根据本发明实施例6的执行监督单元的结构的方框图。
图13是根据实施例6存储在第一1E存储器和第二2E存储器中并由CPU随后处理的指令序列的示意图。
图14是示出了根据本发明实施例7的执行监督单元的结构的方框图。
图15是根据实施例7存储在第一1E存储器和第二2E存储器中并由CPU随后处理的指令序列的示意图。
图16是根据本发明实施例8由CPU处理的仿真预测结果和指令序列的示意图。
图17是根据实施例8由CPU处理的仿真预测结果和指令序列的示意图。
图18是示出了根据本发明实施例9的执行监督单元的结构的方框图。
图19示出了根据实施例9由CPU处理的任务。
图20是根据本发明实施例10在主机中产生的分支相关的树结构。
图21是示出了根据本发明实施例11的调试器装置的结构的方框图。
图22是示出了根据实施例11的执行监督单元的结构的方框图。
图23是根据实施例11存储在第一1E存储器和第  2E存储器中并由CPU随后处理的指令序列的示意图。
图24是示出了根据本发明实施例12的执行监督单元的结构的方框图。
在所有这些附图中,以相同的数字表示相同的组件。
具体实施方式
此后,将参照附图,对本发明的优选实施例进行描述。
实施例1
如图1所示,系统LSI 101包括CPU 110、ROM 111、选择器112、仿真存储器执行监督单元113、串行发送/接收单元114、第一仿真存储器115、以及第二仿真存储器116。此后,将仿真存储器执行监督单元缩写为执行监督单元,将串行发送/接收单元缩写为发送/接收单元,将第一仿真存储器缩写为第一E-存储器,以及将第二仿真存储器缩写为第二E-存储器。主机PC(此后,缩写为PC)102是计算机,其中安装有能够相对于发送/接收单元114进行串行发送和接收的调试器软件。
如图2所示,执行监督单元113包括第一地址选择器121、第一地址转换器122、第一比较装置123、第一地址寄存器124、第二地址选择器125、第二地址转换器126、第二比较装置127、第二地址寄存器128、写入控制部分129、存储器存储器改变检测部分130、数据选择器131、逻辑和电路132、以及执行存储器保持部分134。此后,将第一地址选择器缩写为第一选择器,将第一地址转换器缩写为第一转换器,将第一地址寄存器缩写为第一寄存器,将第二地址选择器缩写为第二选择器,将第二地址转换器缩写为第二转换器,将第二地址寄存器缩写为第二寄存器,将存取存储器改变检测部分缩写为改变检测部分,以及将逻辑和电路缩写为或电路。
发送/接收单元114实现对主机的串行发送和接收,并以并行数据的形式,向执行监督单元113传送接收到的指令和前导指令的地址(此后,缩写为前导地址),同时,以串行数据的形式,向主机发送从执行监督单元113输入的指令重写命令Sc。
执行监督单元113通过发送/接收单元114,将从主机102接收到的指令存储在第一E-存储器115和第二E-存储器116中,并在输出选择信号Se的同时,向选择器112发送从第一E-存储器115和第二E-存储器116读取出的指令。
按照来自执行监督单元113的地址,对第一E-存储器115和第二E-存储器116进行存取,从而读取和写入数据。
选择器112在来自执行监督单元113的选择信号Se是“L”时,选择ROM 111的数据,以及在选择信号Se为“H”时,选择来自执行监督单元113的数据。按照CPU所输出的指令地址,对ROM 111进行存取,或者通过执行监督单元113对第一E-存储器115或第二E-存储器116进行存取。从选择器112提供读出指令,并由CPU 110执行该指令。
写入控制部分129将来自发送/接收单元114的指令和前导地址输入其中,将前导地址写入第一寄存器124或第二寄存器128中,并向第一选择器121或第二选择器125输出等价于第一E-存储器115或第二E-存储器116的存储容量的指令。
第一寄存器124和第二寄存器128存储来自写入控制部分129的前导地址。
比较装置123将来自第一寄存器124的前导地址和来自CPU 110的指令地址输入其中,并判断指令地址是否对应于第一E-存储器115的存储区域。第二比较装置127将来自第二寄存器128的前导地址和来自CPU 110的指令地址输入其中,并判断指令地址是否对应于第二E-存储器116的存储区域。
当第一比较装置123的判断结果为肯定的时,第一转换器122根据第一寄存器124的前导地址,将CPU的指令地址转换为用于存取第一E-存储器115的地址。此外,当第二比较装置127的判断结果为肯定的时,第二转换器126根据第二寄存器128的前导地址,将CPU的指令地址转换为用于存取第二E-存储器116的地址。
当写入对第一E-存储器115的存取时,第一选择器121选择写入控制部分129的地址,否则,选择由第一转换器122转换后的地址。
当写入对第二E-存储器116的存取时,第二选择器125选择写入控制部分129的地址,否则,选择由第二转换器126转换后的地址。
当第一比较装置123的判断结果为肯定的时,数据选择器131选择第一E-存储器115的数据,以及当第二比较装置127的判断结果为肯定的时,选择第二E-存储器116的数据。或电路132以选择信号Se的形式向选择器112输出第一和第二比较装置123和127的判断结果的逻辑和。
在根据第一和第二比较装置123和127的判断结果,当前执行存储器号不同于执行存储器保持部分134的存储器号时,改变检测部分130激活指令重写命令Sc,并向发送/接收单元114输出。执行存储器保持部分134从改变检测部分130接收当前执行存储器号,并进行保持。
对如上配置的调试器装置的操作描述如下。图3示出了从主机传送过来的指令序列。首先,将指令序列存储在第一和第二E-存储器115和116中,之后由CPU 110执行。将调试器装置的操作分解为三个阶段1、2和3,并按照该顺序,描述如下。
1.将指令写入E-存储器的操作
主机根据执行序列,跟踪指令,以CPU 110首先执行的指令为开始,并将指令序列号1及其前导地址存储为指令序列1。指令序列1的大小对应于第一E-存储器115的存储器容量。接下来,主机将指令序列号2及其前导地址存储为指令序列2。指令序列2的大小对应于第二E-存储器116的存储器容量。之后,按照这种方式,主机将随后的指令序列号及其前导地址存储为指令序列3、指令序列4。
主机将指令序列1的指令和前导地址转换为串行数据,并将其传输到发送/接收单元114。发送/接收单元114将接收到的指令序列1的指令和前导地址转换为并行数据,并将其传送到写入控制部分129。写入控制部分129将前导地址写入第一寄存器124中。在这种情况下,第一选择器121向第一E-存储器115发出从写入控制部分129传递过来的地址,并根据该地址,对第一E-存储器115进行存取,从而将从写入控制部分129传递过来的指令序列1的指令写入其中。
接下来,主机通过发送/接收单元114向写入控制部分129传送指令序列2的指令和前导地址,并由写入控制部分129将前导地址写入第二寄存器128中。在这种情况下,第二选择器125向第二E-存储器116发出从写入控制部分129传递过来的地址,并根据该地址,对第二E-存储器116进行存取,从而将从写入控制部分129传递过来的指令序列2的指令写入其中。
2.执行指令序列1的操作
CPU 110输出指令序列1的指令地址。第一比较装置123将CPU的指令地址与第一寄存器124的指令序列1的前导地址进行比较,从而判断该指令地址是否对应于第一E-存储器115的存储器区域。此时,判断结果是肯定的。因为第一比较装置123的判断结果为肯定的,第一转换器122根据指令序列1的前导地址,将指令地址转换为用于存取第一E-存储器115的地址。相反,第二比较装置127的判断结果为否定的,因此,第二转换器126并不实现对指令地址的转换。
由第一选择器121选择通过第一转换器122转换后的地址,并传输给第一E-存储器115。依照转换后的地址,存取第一E-存储器115,并向数据选择器131输出数据。因为第一比较装置123的判断结果为肯定的,数据选择器131选择来自第一E-存储器115的数据,并将其传输给选择器112。此外,因为第一比较装置123的判断结果为肯定的,或电路132向选择器112输出选择信号Se,即“H”。因为选择信号Se为“H”,选择器112选择从第一E-存储器115读取出的指令,并将其传输给CPU 110。CPU 110将从第一E-存储器115读取出的指令输入其中,并执行这些指令。
改变检测部分130根据第一比较装置123的判断结果,将“1”,即当前执行存储器号写入执行存储器保持部分134中。
3.在从指令序列1移位至指令序列2时的操作
CPU 110输出指令序列2的指令地址。按照前述方式进行处理,此时,第二比较装置127的判断结果和第一比较装置123的判断结果分别为肯定的和否定的。第二转换器126按照前述相同的方式,根据指令序列2的前导地址,将CPU的指令地址转换为用于存取第二E-存储器116的地址。CPU 110按照前述方式,将从第二E-存储器116读取出的指令输入其中,并执行这些指令。
因为第二比较装置127的判断结果表示当前执行的存储器号为“2”,不同于保持在执行存储器保持部分134中的存储器号“1”,改变检测部分130向发送/接收单元114输出指令重写命令Sc,并将当前执行的存储器号“2”写入执行存储器保持部分134中。
向主机传输指令重写命令Sc,以便在执行指令序列2的时间期间,将下一指令序列3存储在第一E-存储器115中,因为相对于第一E-存储器115的指令读取和执行已经完成,并且已经对指令序列1的指令进行了处理。
发送/接收单元114向主机传输指令重写命令Sc。主机在接收到指令重写命令Sc时,按照前述方式,针对第一E-存储器115,传送和存储下一个指令序列3。
当完成对指令序列2的读取和执行,并随后开始指令序列3的读取和执行时,按照上述相同的方式,激活指令重写命令Sc,向第二E-存储器116传送位于当前正在执行的指令序列3之后的指令序列4,并存储在第二E-存储器116中。
按照前述方式,在第一E-存储器115和第二E-存储器116中交替地重复存储指令。
如上所述,根据本实施例,在主机中,根据执行序列,预先跟踪指令,以便存储指令序列的前导地址,从而向第一E-存储器115和第二E-存储器116传送指令序列,并交替地存储在第一E-存储器115和第二E-存储器116中。按照这种方式,有效地执行了对E-存储器的写入,并能够控制由于传送业务量而导致的额外开销,从而向CPU有效地提供指令。
本实施例描述了设置有两个E-存储器的情况。当设置至少三个E-存储器时,可以降低在执行指令的时间期间的指令传送频率。此外,在本实施例中,系统LSI和主机之间的通信采用串行方法,但是,也可以采用诸如并行方法之类的其它通信方法。
实施例2
在实施例1中,当在E-存储器的存储容量的底线之前存在无条件分支指令时,则将已传送指令的目的地切换到其它的E-存储器,而不会使用所述E-存储器的全部区域。因此,产生了由于传送指令期间的业务量而导致的额外开销。本发明的实施例2处理了这种不便。在实施例2中,将图1一并作为参考。
如图4所示,E-存储器执行监督单元113a包括:第一地址/字节数寄存器136,代替实施例1(图2)中的第一寄存器124;以及第二地址/字节数寄存器138,代替其中的第二寄存器128。在以下的描述中,将第一地址/字节数寄存器缩写为第一寄存器,以及将第二地址/字节数寄存器缩写为第二寄存器。第一和第二寄存器136和138存储来自写入控制部分129a的前导地址和传送字节数。参考数字135表示第一比较装置,以及参考数字137表示第二比较装置。以相同的数字表示图4中与图1中的组件等同的组件,并在本实施例中,不再对其进行描述。
主机除了指令及其前导地址外,还传送指令序列的传送字节数。写入控制部分129a将从发送/接收单元输入的前导地址和传送字节数存储在第一和第二寄存器136和138中。写入控制部分129a,在递增写入地址的同时,还向第一选择器121或第二选择器125发送指令序列的指令。
第一比较装置135将第一寄存器136的前导地址和传送字节数以及CPU的指令地址输入其中,从而判断指令地址是否落入距前导地址传送字节数的范围内。第二比较装置137将第二寄存器138的前导地址和传送字节数以及CPU的指令地址输入其中,从而判断指令地址是否落入距前导地址传送字节数的范围内。
当第一比较装置135的判断结果为肯定的时,第一转换器122根据第一寄存器136的前导地址和传送字节数,将CPU的指令地址转换为用于存取第一E-存储器115的地址。当第二比较装置137的判断结果为肯定的时,第二转换器126根据第二寄存器138的前导地址和传送字节数,将CPU的指令地址转换为用于存取第二E-存储器116的地址。
对如上配置的调试器装置的操作描述如下。图5示出了从主机传送过来的指令序列。每个指令序列中均具有无条件分支指令。
1.将指令写入E-存储器的操作
主机根据执行序列,从开始指令开始对指令进行跟踪,按照无条件分支指令,将指令分为指令序列,并存储指令序列的前导地址。主机还存储指令序列的字节数,作为传送字节数,并同样针对任何其它指令序列。
主机通过发送/接收单元向写入控制部分129a传送指令序列1的指令、前导地址和传送字节数。写入控制部分129a将前导地址和传送字节数写入第一寄存器136中。第一选择器121向第一E-存储器115发送从写入控制部分129a发出的地址。根据该地址,存取第一E-存储器115,从而将从写入控制部分129a发送过来的指令序列1的指令写入其中。由第二寄存器138和第二选择器125按照相同的方式处理指令序列2的指令、前导地址和传送字节数,从而将指令序列2的指令写入第二E-存储器116中。
2.执行指令序列1的操作
CPU 110输出指令序列1的指令地址。第一比较装置135将CPU的指令地址与第一寄存器136的前导地址和传送字节数输入其中,并判断CPU的指令地址是否对应于第一E-存储器115的存储器区域。此时,判断结果是肯定的,并输出到第一转换器122。第一转换器122根据指令序列1的前导地址和传送字节数,将CPU的指令地址转换为用于存取第一E-存储器115的地址。相反,第二比较装置137的判断结果为否定,因此,第二转换器126并不实现对指令地址的转换。之后,CPU按照上述相同的方式,输入从第一E-存储器115读出的指令,并执行这些指令。将当前执行的存储器号“1”写入执行存储器保持部分134中。
3.在通过无条件分支指令1进行分支时的操作
当无条件分支指令1到达时,第一比较装置135将判断结果表示为否定,因为CPU的指令地址从第一寄存器136的指令序列1的前导地址起并未落入传送字节数的范围内。因此,第一转换器122并不转换指令地址。
相反,第二比较装置137将判断结果表示为肯定,因为CPU的指令地址落入从第二寄存器138的指令序列2的前导地址起的传送字节数的范围内。第二转换器126将CPU的指令地址转换为用于存取第二E-存储器116的地址。之后,CPU按照上述相同的方式,输入从第二E-存储器116读出的指令,并执行这些指令。因为当前执行的存储器号“2”不同于执行存储器保持部分134中的“1”,改变检测部分130传输指令重写命令Sc。
主机在接收到指令重写命令Sc时,向第一E-存储器115传送下一指令序列3,以便按照前述方式存储在其中。
4.在通过无条件分支指令2进行分支时的操作
当达到无条件分支指令2时,第二比较装置137将判断结果表示为否定,因为CPU的指令地址从第二寄存器138的指令序列2的前导地址起并未落入传送字节数的范围内。因此,第二转换器126并不实现指令地址转换。
相反,第一比较装置135将判断结果表示为肯定,因为CPU的指令地址从第一寄存器136的前导地址起落入传送字节数的范围内。第一转换器122根据指令序列3的前导地址和传送字节数,将CPU的指令地址转换为用于存取第一E-存储器115的地址。之后,CPU按照上述相同的方式,输入从第一E-存储器115读出的指令,并执行这些指令。当前执行的存储器号“1”不同于执行存储器保持部分134中的“2”,改变检测部分130传输指令重写命令Sc。
主机响应接收到的指令重写命令Sc时,向第二E-存储器116传送下一指令序列4,以便按照前述方式存储在其中。
在更新指令序列的同时,连续重复操作3和4。
如上所述,根据本实施例,主机根据执行序列,预先跟踪指令,存储指令序列的前导地址和传送字节数,并向独立的E-存储器传送无条件分支之前的指令序列以及从无条件分支目的地指令向前的指令序列,以便存储在其中。当执行无条件分支指令时,实现对E-存储器的切换。按照这种方式,控制了由于传送业务量而导致的开销,从而向CPU有效地提供指令。
本实施例描述了设置有两个E-存储器的情况,但是,当设置至少三个E-存储器时,可以降低在执行指令时的指令传送频率。此外,在本实施例中,系统LSI和主机之间的通信采用串行方法,但是,也可以采用诸如并行方法之类的其它通信方法。
实施例3
在实施例2中,即使在指令序列1的无条件分支指令的分支目的地适合于相同的E-存储器时,仍然将从分支目的地先前的指令写入其它E-存储器,作为指令序列2。因此,增加了由于传送业务量而导致的额外开销。本发明的实施例3处理了这种不便。在实施例3中,将图1和4一并作为参考。
图6示出了包括其分支目的地出现在E-存储器中的无条件分支指令在内的指令序列。
1.将指令写入E-存储器的操作
主机根据执行序列,从开始指令开始对指令进行跟踪,从而判断分支目的地是否对应于无条件分支指令所出现的第一E-存储器115的存储器区域。当与之相对应时,主机并不将之后的指令区分为下一指令序列,而是作为指令序列1,对其继续处理。当不与之相对应时,主机将到该点为止的字节数存储为指令序列1的传送字节数。按照相同的方式存储指令序列2的前导地址和传送字节数。
之后的操作与先前描述的相同,即,将等价于第一E-存储器115的存储器容量的指令序列1的指令写入其中,并将等价于第二E-存储器116的存储器容量的指令序列2的指令写入其中。
2.在通过无条件分支指令1进行分支时的操作
CPU输出指令序列1的指令地址。当无条件分支指令1到达时,当前执行的存储器号“1”与执行存储器保持部分134的存储器号,即“1”相同。因此,改变检测部分130并不输出指令重写命令Sc。
当无条件分支指令2到达时,当前执行存储器号“2”不同于执行的存储器保持部分134的存储器号,即“2”。因此,改变检测部分130输出指令重写命令Sc。
如上所述,根据本实施例,当在主机中,根据执行序列,预先跟踪指令时,判断其分支目的地是否属于所述E-存储器的存储器容量。当判断结果为肯定的时,则不作为不同的指令序列来处理分支目的地。按照这种方式,控制了由于传送业务量而导致的额外开销,从而向CPU有效地提供指令。
实施例4
在实施例2中,在出现无条件分支指令时,可用对分支目的地的E-存储器的内容进行重写。但是,在通过子程序调用指令,从指令序列1分支到指令序列2的情况下,首先执行指令序列2的分支,并随后执行来自子程序的恢复指令,然后,再次执行指令序列1。在这种情况下,需要将指令序列1再次写入E-存储器,导致了由传送业务量而引起的额外开销的增加。本发明的实施例4解决了前述问题。在实施例4中,将图1一并作为参考。
如图7所示,本实施例与图4所示的实施例2的不同之处在于其中设置有子程序分支保持部分(此后,缩写为保持部分)140。保持部分140保持由写入控制部分129b写入的子程序分支信息,还保持在存取存储器改变检测部分(此后,缩写为改变检测部分)130b中改变的分支数。
主机传送指令序列的指令、前导地址和传送字节数以及指令序列的子程序分支信息。
写入控制部分129b将从发送/接收单元输入的前导地址和传送字节数写入第一和第二寄存器136和138中。写入控制部分129b还将子程序分支信息写入保持部分140,并向第一选择器121或第二选择器125发送指令。
改变检测部分130b保持第一和第二比较装置135和137的判断结果,当判断结果改变时,检查保持部分140,从而当子程序分支信息的分支数为一或更大时,从子程序分支信息中减1,并在分支数为零时,向发送/接收单元输出指令重写命令Sc。
对如上配置的调试器装置的操作描述如下。图8示出了从主机传送过来的指令序列。
1.将指令写入E-存储器的操作
主机根据执行序列,从开始指令开始对指令进行跟踪,并在出现子程序调用指令时,存储其分支目的地,作为子程序指令序列,以及其分支数。当到达无条件分支指令时,主机将到该点为止的字节数存储为指令序列1的传送字节数。
接下来,在如上述进行保持的子程序指令序列中,主机根据来自由CPU执行的分支目的地指令1的执行序列,跟踪指令。当到达子程序恢复指令时,主机将直到该点为止的字节数存储为指令序列2的传送字节数。此外,主机存储与指令序列3以及之后的指令序列有关的子程序调用指令的前导地址、传送字节数、号码。
主机通过发送/接收单元向写入控制部分129b传送指令序列1的指令、前导地址和传送字节数。写入控制部分129b将前导地址和传送字节数写入第一寄存器136中,并向第一选择器121发送指令序列1。参照来自第一选择器121的地址,对第一E-存储器115进行存取,并将来自写入控制部分129b的指令序列1的指令写入其中。
接下来,主机通过发送/接收单元向写入控制部分129b传送指令、前导地址、传送字节数和表示一次分支数的子程序分支信息,作为指令序列2。写入控制部分129b将前导地址和传送字节数写入第二寄存器138,而将表示一次分支数的子程序分支信息写入保持部分140中。在这种情况下,第二选择器125向第二E-存储器116发出由写入控制部分129b发送过来的地址。根据该地址,对第二E-存储器116进行存取,并从而,将由写入控制部分129b发送过来的指令序列2的指令写入。
保持部分140根据写入控制部分129b的子程序分支信息,保持指令序列2对应于子程序的信息。
2.在通过子程序调用指令进行分支时的操作
当子程序调用指令到达时,第一比较装置135的判断结果表示否定,因为CPU的指令地址从第一寄存器136的指令序列1的前导地址起并未落入传送字节数的范围内。因此,第一转换器122并不转换指令地址。
与此相反,第二比较装置137的判断结果表示肯定,因为CPU的指令地址从第二寄存器138的指令序列2的前导地址起落入传送字节数的范围内。因为第二比较装置137的肯定判断结果,第二转换器126根据第二寄存器130的指令序列2的前导地址和传送字节数,将CPU的指令地址转换为用于存取第二E-存储器116的地址。之后,CPU按照上述相同的方式,输入从第二E-存储器116读出的指令,并执行这些指令。
由于第一和第二比较装置135和137的判断结果改变,改变检测部分130b检查保持部分140。因为所保持的子程序分支信息显示一次分支数,而非零,因此,并不输出指令重写命令Sc。结果,第一E-存储器115保持指令序列1。改变检测部分130b从保持部分140的分支数中减1,将其更新为零次。
3.在通过子程序恢复指令进行恢复时的操作
在发生子程序恢复时,第二比较装置137的判断结果表示否定,因为CPU的指令地址并未落入从第二寄存器138的指令序列2的前导地址起的传送字节数的范围内。因此,第二转换器126并不实现指令地址转换。
同时,第一比较装置135的判断结果表示肯定,因为CPU的指令地址落入从第一寄存器136的前导地址起的传送字节数的范围内。因为第一比较装置135的肯定判断结果,第一转换器122根据第一寄存器136的指令序列1的前导地址和传送字节数,将CPU的指令地址转换为用于存取第一E-存储器115的地址。之后,CPU按照上述相同的方式,输入从第一E-存储器115读出的指令,并执行这些指令。
由于第一和第二比较装置135和137的判断结果改变,改变检测部分130b检查保持部分140。因为保持子程序分支信息示出了零次分支数,改变检测部分130b向发送/接收单元输出指令重写命令Sc。在接收到指令重写命令Sc时,主机通过发送/接收单元,向写入控制部分129b传送指令序列3的指令、前导地址和传送字节数。写入控制部分129b将前导地址和传送字节数写入第二寄存器138中。在这种情况下,通过第二选择器125,将指令序列3的指令写入第二E-存储器116中。
接下来,在下面对如图9所示的在子程序分支中对相同的二次指令序列2的操作进行描述。
1.将指令写入E-存储器的操作
在图8中,指令序列2的分支数是一次,而在图9中,分支数是二次。因此,将二次分支数作为子程序信息写入保持部分140。操作的其余部分与参照图8进行描述的操作1相同。
2.在通过子程序调用指令进行分支时的操作
当子程序调用指令到达时,改变检测部分130b检查保持部分140,并且由于所保持的分支数为二次,并不输出指令重写命令Sc。结果,第一E-存储器115保持指令序列1。改变检测部分130b从保持部分140的分支数中减1,将其更新为一次。
3.在通过子程序恢复指令进行恢复时的操作
在发生子程序恢复时,改变检测部分130b检查保持部分140,并且由于所保持的分支数为一次,并不输出指令重写命令Sc。第一E-存储器115保持指令序列1。改变检测部分130b从保持部分140的分支数中减1,将其更新为零次。
在第二次程序分支时,因为保持部分的分支数为0,所以输出指令重写命令Sc,并从主机传送下一指令序列的数据。
如上所述,根据本实施例,在通过子程序调用指令进行分支的情况下,保持子程序分支信息及其分支数。当通过子程序调用指令执行分支时,并不改变分支起点中的指令序列。按照这种方式,控制了由重写处理中的传送业务量而引起的额外开销,从而能够向CPU有效地提供指令。
本实施例描述了设置有两个E-存储器的情况。当设置至少三个E-存储器时,可以降低在执行指令的时间期间的指令传送频率。此外,在本实施例中,系统LSI和主机之间的通信采用串行方法,但是,也可以采用诸如并行方法等之类的其它通信方法。
此外,在子程序分支目的地指令对应于E-存储器的存储器容量的情况下,可以通过实施例3中所述的主机,作为相同的指令序列,对其进行处理。
实施例5
在实施例1到4中,当在执行指令序列1期间实现了如中断等例外处理时,在从例外处理恢复之后,再次执行指令序列1,使其必须将指令序列1再次写入E-存储器。结果,增加了由于传送业务量而引起的额外开销。设计本发明的实施例5来响应这种不便。在实施例5中,将图1一并作为参考。
如图10所示,本实施例与图4所示的实施例2的不同之处在于其中设置了例外处理保持部分(此后,缩写为保持部分)143。保持部分143保持由写入控制部分129c写入的例外处理信息,并向改变检测部分130c输出所保持的信息。
主机与指令序列的指令、前导地址和传送字节数一起传送该指令序列的例外处理信息。
写入控制部分129c将从发送/接收单元输入的前导地址和传送字节数写入第一寄存器136或第二寄存器138,并将例外处理信息写入保持部分143。写入控制部分129c向第一选择器121或第二选择器125发出指令。
改变检测部分130c保持第一和第二比较装置135和137的判断结果,并在判断结果改变时,检查保持部分143。改变检测部分130c在不存在例外处理时,向发送/接收单元输出指令重写命令Sc。
对如上配置的调试器装置的操作描述如下。图11示出了从主机传送过来的指令序列。
1.将指令写入E-存储器的操作
主机根据执行序列,对指令进行跟踪,从中断分支目的地中要执行的开始指令到中断恢复指令为止,并存储指令序列2的前导地址。主机还处理指令序列的字节数,作为指令序列2的传送字节数,并存储例外处理信息。
接下来,主机根据执行序列,从开始指令开始对指令进行跟踪,并在出现无条件分支指令时,存储到该点为止的字节数,作为指令序列1的传送字节数。
主机通过发送/接收单元向写入控制部分129c传送指令序列1的指令、前导地址和传送字节数。写入控制部分129a将前导地址和传送字节数写入第一寄存器136中。依照来自第一选择器121的地址,对第一E-存储器115进行存取,并将指令序列1的指令写入其中。
接下来,主机通过发送/接收单元向写入控制部分129c传送指令序列2的指令、前导地址、传送字节数和例外处理信息。写入控制部分129c将前导地址和传送字节数写入第二寄存器138,将例外处理信息写入保持部分143。写入控制部分129c通过第二选择器125,向第二E-存储器116发送指令序列2的指令。保持部分143保持由写入控制部分129c写入的指令序列2的例外处理信息。第二E-存储器116输入来自第二选择器125的地址,并将指令序列2的指令写入其中。
2.在产生中断时的操作
CPU接受中断,并为了通过中断分支目的地指令进行分支的目的,输出指令地址。按照指令地址的变化,第一比较装置135的判断结果表示否定,而第二比较装置137的判断结果表示肯定。因此,第一转换器122变为不可操作,而第二转换器126将CPU的指令地址转换为用于存取第二E-存储器116的地址。之后,CPU按照上述相同的方式,将从第二E-存储器116读出的指令输入其中,并执行这些程序。
改变检测部分130c检查保持部分143,并因为其中存储了指令序列2的例外处理信息,不输出指令重写命令Sc。结果,第一E-存储器115保持指令序列1。
3.在通过中断恢复指令进行恢复时的操作
CPU通过中断恢复指令输出中断发生指令的指令地址。响应指令地址的变化,第二比较装置137的判断结果为否定的,而第一比较装置135的判断结果为肯定的。结果,第二转换器126变为不可操作,而第一转换器122将CPU的指令地址转换为用于存取第一E-存储器115的地址。之后,CPU按照上述相同的方式,将从第一E-存储器115读出的指令输入其中,并执行这些程序。
改变检测部分130c检查保持部分140,而因为其中未存储例外处理信息,向发送/接收单元输出指令重写命令Sc。主机在接收到指令重写命令Sc时,传送下一指令序列的数据。
如上所述,根据本实施例,当产生如中断等例外处理时,保持例外处理的信息。在通过例外处理进行分支的情况下,对分支起点中的指令序列加以控制,使其不变。按照这种方式,控制了由于重写处理中的传送业务量而引起的额外开销,从而向CPU有效地提供指令。
在本实施例中,E-存储器之一专用于例外处理,使得只有一个E-存储器能够用于任何正常的处理。结果,通过分支产生了开销。为了解决此问题,设置至少三个E-存储器可以避免额外开销的产生。
此外,在本实施例中,系统LSI和主机之间的通信采用串行方法,但是,也可以采用诸如并行方法等之类的其它通信方法。
实施例6
在实施例1到5中,当指令序列包括条件分支指令时,所执行的处理根据条件分支指令的建立或失败而变化。在条件分支指令被建立的假设下,已经将指令目的地的指令序列写入E-存储器中。因此,在建立时,不必将分支目的地的指令序列写入E-存储器。当未建立时,自然需要以不同的指令序列对其进行重写,在此处理期间,增加了由于传送业务量而导致的额外开销。提出本发明的实施例6,以处理这种不便。在本实施例中,将图1一并作为参考。
如图12所示,本实施例与图4所示实施例2的不同之处在于其中设置有分支处理保持部分(此后,缩写为保持部分)146和第三比较装置147。保持部分146保持由写入控制部分129d写入的条件分支指令,并向第三比较装置147输出条件分支指令的地址。第三比较装置147将保持部分146的条件分支指令的地址与CPU的指令地址进行比较,并在地址彼此等同时,向改变检测部分130d输出分支指令执行信息。
主机传送指令序列的条件分支指令的地址以及指令序列的指令、前导地址和传送字节数。
写入控制部分129d将从发送/接收单元输入的前导地址和传送字节数写入第一寄存器136或第二寄存器138,并将条件分支指令的地址写入保持部分146。然后,写入控制部分129d向第一选择器121或第二选择器125发送指令。
改变检测部分130d将第三比较装置147的分支指令执行信息输入其中,并当在执行指令的下一循环中分支建立时,将指令重写命令Sc设置为第一状态,对分支起点中的指令序列进行重写,并向发送/接收单元输出该命令。当在下一执行循环中不会建立分支时,改变检测部分130d将指令重写命令Sc设置为第二状态,重写分支目的地中的指令序列,并向发送/接收单元输出该命令。
对如上配置的调试器装置的操作描述如下。图13示出了从主机传送过来的指令序列。
1.将指令写入E-存储器的操作
主机根据执行序列,从开始指令开始对指令进行跟踪,并执行与前述相同的处理。在出现条件分支指令时,主机还存储条件分支指令的地址,并将分支目的地保持为条件分支建立指令序列。
接下来,主机根据执行序列跟踪如上述序列保持的条件分支建立指令序列中的指令,并存储指令序列2的前导地址。主机将指令序列的字节数认定为指令序列2的传送字节数,并存储条件分支建立指令信息。主机还存储指令序列3和之后指令序列的前导地址和传送字节数。
主机通过发送/接收单元向写入控制部分129d传送指令序列1中的指令、前导地址列1的条件分支指令的地址、传送字节数。写入控制部分129d将前导地址和传送字节数存储在第一寄存器136中,并将条件分支指令的地址写入保持部分146。根据来自第一选择器121的地址,对第一E-存储器115进行存取,并将来自写入控制部分129d的指令序列1的指令写入其中。保持部分146保持由写入控制部分129d写入的条件分支指令的地址。
接下来,主机按照相同的方式执行对指令序列2的相同处理,并将指令序列2的指令写入第二E-存储器116。
2.在建立指令序列1的分支指令时的操作
CPU执行指令序列及其条件分支指令1。第三比较装置147将保持部分146的条件分支指令的地址与CPU的指令地址进行比较。因为此时,两个地址彼此等同,第三比较装置147向改变检测部分130d输出分支指令执行信息。
在执行指令的下一循环期间,建立指令序列1的条件分支指令。因此,CPU输出指令序列2的分支目的地指令1的指令地址。根据指令地址的改变,第一比较装置135将判断结果表示为否定的,而第二比较装置137将判断结果表示为肯定的。结果是,第一转换器122变为不可操作,而第二转换器126将CPU的指令地址转换为用于存取第二E-存储器116的地址。之后,CPU按照上述相同的方式,将从第二E-存储器116读出的指令输入其中,并执行这些程序。
改变检测部分130d根据第一和第二比较装置135和137的判断结果,判断分支被建立,并将指令重写命令Sc设置为第一状态,将分支起点中的指令序列1重写入指令序列4,并向发送/接收单元输出。因此,将指令序列4写入第一E-存储器115中。
3.在未建立指令序列1的条件分支指令时的操作
CPU执行指令序列及其条件分支指令1。第三比较装置147将保持部分146的条件分支指令的地址与CPU的指令地址进行比较。因为此时,两个地址彼此等同,第三比较装置147向改变检测部分130d输出分支指令执行信息。
在下一个执行循环中,指令序列1的条件分支指令并未建立。因此,CPU输出指令序列1中、条件分支指令之后的指令的指令地址。根据该地址的改变,第一比较装置135将判断结果表示为肯定,而第二比较装置137将判断结果表示为否定。改变检测部分130d根据第一和第二比较装置135和137的判断结果,判断分支未被建立,并将指令重写命令Sc设置为第二状态,将分支目的地中的指令序列2重写入指令序列3,并向发送/接收单元输出。因此,将指令序列3写入第一E-存储器115中。
如上所述,当指令序列包括条件分支指令时,根据条件分支指令的建立或失败,条件目的地指令序列变得必要或不必要。因此,只将不必要的指令序列重写入下一个必要的指令序列,从而控制了在重写处理中,由于传送业务量而导致的额外开销,从而向CPU有效地提供指令。
此外,当条件分支指令对应于E-存储器的存储器容量时,可以通过实施例3中所描述的主机,作为等同指令序列来处理指令序列。
实施例7
在实施例6的情况下,当在指令序列中包括多个条件分支时,相对于随后执行的指令序列,来自主机的传送业务量变得繁忙。这导致了在重写指令序列时,由于传送业务量而导致的额外开销的增加。本发明的实施例7响应这种不便。在实施例7中,将图1一并作为参考。
如图14所示,本实施例与图12所示的实施例6的不同之处在于其中设置有分支处理保持器FIFO 151。FIFO 151根据写入顺序,保持由写入控制部分129e写入的多条条件分支指令的地址,并向第三比较装置147e输出前级中的条件分支指令的地址。此外,FIFO 151在第三比较装置147e的判断结果表示等同时,向前一级逐一移位所保持的条件分支指令的地址。第三比较装置147e将FIFO 151的条件分支指令的地址与CPU的指令地址进行比较,并在其彼此等同时,向改变检测部分130e和FIFO 151输出分支指令执行信息。
写入控制部分129e将来自发送/接收单元的指令序列中的指令、前导地址、传送字节数、和多条条件分支指令的地址输入其中,并将前导地址和传送字节数写入第一寄存器136或第二寄存器138,以及将多条条件指令的地址写入FIFO 151。然后,写入控制部分129e向第一选择器121或第二选择器125发送指令。
改变检测部分130e将第三比较装置147e的分支指令执行信息输入其中,并当在下一个执行循环中建立分支时,将指令重写命令Sc设置为第一状态,重写分支起点中的指令序列,并向发送/接收单元输出。改变检测部分130e还对FIFO 151中的任何数值进行重置,并当在下一个执行循环中未建立分支时,将指令重写命令Sc设置为第二状态,重写分支目的地中的指令序列,并向指令重写命令Sc输出。
对如上配置的调试器装置的操作描述如下。图15示出了从主机传送过来的指令序列。
1.将指令写入E-存储器的操作
主机根据执行序列,从开始指令开始对指令进行跟踪。在出现两条条件分支指令时,主机存储其相应的地址,并将分支目的地保持为条件分支建立指令序列。除前述之外,主机执行与前述相同的处理。
接下来,主机根据执行的次序,跟踪指令,从分支目的地指令1和分支目的地指令2开始,由CPU在两个所保持的条件分支建立指令序列中执行。主机存储指令序列2和3的前导地址,并存储指令序列2和3的传送字节数及其各自的条件分支建立指令信息。主机还存储指令序列4及之后指令序列的前导地址和传送字节数。
主机通过发送/接收单元向写入控制部分129e传送指令序列1中的指令、条件分支指令1的传送字节数和分支指令地址、以及条件分支指令2的传送字节数和分支指令地址。写入控制部分129e将前导地址和传送字节数存储在第一寄存器136中。写入控制部分129e将条件分支指令1的分支指令地址和条件分支指令2的分支指令地址顺序写入FIFO 151。
按照相同的方式,将指令序列1的指令写入第一E-存储器115中,并将指令序列2的指令写入第二E-存储器116中。
2.在执行指令序列1的条件分支指令1并因此建立分支时的操作
CPU执行指令序列及其条件分支指令1。第三比较装置147e将FIFO 151的条件分支指令1的分支指令地址与CPU的指令地址进行比较。因为此时,两个地址彼此等同,CPU向改变检测部分130e输出分支指令执行信息。
在下一个执行循环中,因为指令序列1的条件分支指令1的条件分支指令被建立,CPU随后输出指令序列2的分支目的地指令1的指令地址。根据指令地址的改变,第一比较装置135的判断结果表示否定,而第二比较装置137的判断结果表示肯定。结果是,第一转换器122变为不可操作,而第二转换器126将CPU的指令地址转换为用于存取第二E-存储器116的地址。之后,CPU按照上述相同的方式,将从第二E-存储器116读出的指令输入其中,并执行这些程序。
改变检测部分130e根据第一和第二比较装置135和137的判断结果,判断分支被建立,并将指令重写命令Sc设置为第一状态,将分支起点中的指令序列1重写入指令序列2之后的指令序列(未示出),并向发送/接收单元输出。因为分支被建立,改变检测部分130e重置存储在FIFO 151中的任何数值。
3.在执行指令序列1的条件分支指令1,导致分支失败,而执行其条件分支指令2,导致分支的建立时的操作
CPU执行指令序列1及其条件分支指令1。第三比较装置147e将FIFO 151的条件分支指令1的分支指令地址与CPU的指令地址进行比较。因为此时,两个地址彼此等同,第三比较装置147e向改变检测部分130e输出分支指令执行信息。
在下一个执行循环中,因为指令序列1的条件分支指令1的条件分支指令并未建立,CPU输出条件分支指令1之后的指令的指令地址。第一比较装置135的判断结果保持肯定,而第二比较装置137的判断结果表示否定,并将指令重写命令Sc设置为第二状态,将分支目的地中的指令序列2重写入指令序列3,并向发送/接收单元输出。FIFO 151向前一级逐一移位当第三比较装置147e的判断结果表示等同时所保持的条件分支指令的地址。前级中的地址变为条件分支指令2的地址。CPU执行指令序列1及其条件分支指令2。第三比较装置147e将FIFO151的条件分支指令2的分支指令地址与CPU的指令地址进行比较。因为这两个地址彼此等同,第三比较装置147e向改变检测部分130e输出分支指令执行信息。
在下一执行循环中,因为指令序列1的条件分支指令2的条件分支指令被建立,CPU随后输出指令序列2的分支目的地指令1的指令地址。根据指令地址的改变,第一比较装置135的判断结果表示否定,而第二比较装置137的判断结果表示肯定。结果是,第一转换器122变为不可操作,而第二转换器126将CPU的指令地址转换为用于存取第二E-存储器116的地址。
改变检测部分130e根据第一和第二比较装置135和137的判断结果,判断分支被建立,并将指令重写命令Sc设置为第一状态,将分支起点中的指令序列1重写入要指令序列3之后被执行的指令序列,并向发送/接收单元输出。因为分支被建立,改变检测部分130e重置存储在FIFO 151中的任何数值。结果,将指令序列3写入第二E-存储器116。
4.在执行指令序列1的条件分支指令1,导致分支失败,而执行其条件分支指令2,导致分支的建立时的操作
在执行指令序列1的条件分支指令1,导致分支失败时的操作与3的描述相同。此外,因为指令序列1的条件分支指令2的条件分支指令并未被建立,则输出条件分支指令2的下一个指令的指令地址。第一比较装置135的判断结果是肯定的,而第二比较装置137的判断结果是否定的。改变检测部分130e根据第一和第二比较装置135和137的判断结果,判断分支未被建立,并将指令重写命令Sc设置为第二状态,将分支目的地中的指令序列3重写入指令序列4,并向发送/接收单元输出。FIFO 151向前一级逐一移位当第三比较装置147e的判断结果表示等同时所保持的条件分支指令的地址,并清除了保持在前级中的地址。因此,将指令序列4写入第二E-存储器116。
如上所述,当指令序列包括多个条件分支时,将多条条件分支指令的地址保持在FIFO中,每当未建立分支时,实现移位,而在建立分支时,清除FIFO的内容。这样控制了在重写指令序列时,由于传送业务量而引起的额外开销,以便处理多个分支的建立/失败,从而向CPU有效地提供指令。
在条件分支指令对应于E-存储器的存储器容量的情况下,可以通过实施例3中所描述的主机,作为等同指令序列来处理指令序列。
实施例8
在实施例6和7中,根据条件分支指令的建立或失败,分支目的地中的指令序列或条件分支指令之后的指令序列可能会变得不必要。在这种情况下,增加了在重写指令时,由传送业务量而引起的额外开销。本发明的实施例8响应此问题。在实施例8中,将图1和14一并作为参考。
主机是包括调试器装置的计算机,所述调试器装置具有以下功能:通过预先实现对由CPU执行的指令序列的仿真,经常预报CPU的寄存器0的数值。
对如上配置的调试器装置的操作描述如下。如图16和17所示,在主机中,预先实现对由CPU执行的指令序列的仿真,从而经常预报寄存器0的数值,在完成仿真之后,从主机传送该数值。
1.在主机仿真由CPU执行的指令、并建立条件分支指令1的分支时的写入指令的操作
在跟踪指令的同时,主机预先实现对由CPU执行的指令序列的仿真,及前述处理。为此,预报在执行指令序列1的指令时寄存器0的数值,如图16所示。此时,预报条件分支指令1被建立。
执行监督单元将指令序列1的指令写入第一E-存储器115,并将指令序列2的指令写入第二E-存储器116。
2.在主机仿真由CPU执行的指令、且未建立条件分支指令1的分支时的写入指令的操作
在跟踪指令的同时,主机预先实现对由CPU执行的指令序列的仿真,及前述处理。为此,预报在执行指令序列1的指令时寄存器0的数值,如图16所示。此时,预报条件分支指令1未被建立。
3.条件分支指令1的操作,其中CPU执行在操作1中所写入的指令
CPU执行指令序列1及其条件分支指令1。第三比较装置147e将FIFO 151的条件分支指令1的分支指令地址与CPU的指令地址进行比较。由于此时两个地址彼此相同,CPU向改变检测部分1 30e输出分支指令执行信息。
在下一个执行循环中,CPU在建立指令序列1的条件分支指令1的条件分支指令之后,输出指令序列2的分支目的地指令1的指令地址。第一比较装置135将判断结果表示为否定,而第二比较装置137将判断结果表示为肯定。第二转换器126将CPU的指令地址转换为用于存取第二E-存储器116的地址。之后,CPU按照上述相同的方式,输入从第二E-存储器116读出的指令,并执行这些指令。
改变检测部分130e根据第一比较装置135和137的判断结果,判断分支被建立,并将指令重写命令Sc设置为第一状态,将分支起点中的指令序列1重写入指令序列2之后的指令序列(未示出)中,并向发送/接收单元输出。由于分支被建立,改变检测部分130e重置存储在FIFO 151中的任意数值。
4.条件分支指令1的操作,其中CPU执行在操作2中所写入的指令
CPU执行指令序列1及其条件分支指令1。FIFO 151未保持条件分支指令1的分支指令地址。第一比较装置135的判断结果是肯定,而第二比较装置137的判断结果是否定。第一转换器122将CPU的指令地址转换为用于存取第一E-存储器115的地址。之后,CPU按照前述的方式,将从第一E-存储器115读出的指令输入其中,并执行这些指令。
改变检测部分130e并未将条件分支指令1识别为分支指令,因此,并未输出指令重写命令Sc。
如上所述,根据本实施例,当在主机中预先跟踪要执行的指令时,实现对指令序列的仿真,从而检查内部寄存器的数值,从而预报分支是否被建立。这样做,控制了由于重写指令序列以处理条件分支的建立/失败时的传送业务量所引起的开销,从而向CPU有效地提供指令。
实施例9
在实施例1到8中,根据对来自程序的各个指令的行为的分析,重写E-存储器的内容。在这种情况下,即使E-存储器具有足够的容量来存储OS的一个或多个任务,仍然增加了由于重写时的传送业务量而导致的额外开销。本发明的实施例9用于解决此问题。在实施例9中,将图1一并作为参考。
如图18所示,E-存储器执行监督单元113f包括任务切换检测部分154和执行任务保持部分155。
任务切换检测部分154根据第一和第二比较装置135和137的判断结果,将当前执行任务号写入执行任务保持部分(此后,缩写为保持部分)155。在根据第一和第二比较装置135和137的判断结果,当前执行任务号与保持部分155的任务号互不相同时,任务切换检测部分154向发送/接收单元输出指令重写命令Sc。保持部分155保持任务号1,作为初始值,并保持由任务切换检测部分154写入的当前执行任务号,从而向任务切换检测部分154输出所保持的任务号。
对如上配置的调试器装置的操作描述如下。图19示出了从主机传送过来的指令序列。
1.将指令写入E-存储器的操作
主机按照OS的任务区分程序,并根据执行序列,从CPU所执行的任务中的开始指令到最终指令,对指令进行跟踪。主机存储第一地址,作为任务1的前导地址,并存储所跟踪任务的字节数,作为任务1的字节数。接下来,主机按照与任务1相同的方式,处理任务2,并存储前导地址及其传送字节数。对任意其它任务,实施相同的处理。
主机通过发送/接收单元向写入控制部分129f传送任务1的指令、前导地址和传送字节数。写入控制部分129f将前导地址和传送字节数写入第一寄存器136,并向第一选择器121传输任务1的指令。第一E-存储器115将来自第一选择器121的地址输入其中,从而将任务1的指令写入其中。
主机通过发送/接收单元向写入控制部分129f传送任务2的指令、前导地址和传送字节数。写入控制部分129f将前导地址和传送字节数写入第二寄存器138,并向第二选择器125传输任务2的指令。第二E-存储器116将来自第二选择器125的地址输入其中,从而将任务2的指令写入其中。
2.在CPU执行任务1时的操作
CPU输出任务1的指令地址。第一比较装置135的判断结果表示肯定,而第二比较装置137的判断结果表示否定。由于第一比较装置135的判断结果表示肯定,第一转换器122将CPU的指令地址转换为用于存取第一E-存储器115的地址。之后,CPU按照前述方式输入从第一E-存储器115读出的指令,并执行这些指令。
任务切换检测部分154根据第一和第二比较装置135和137的判断结果,将当前执行任务号1写入保持部分155,且不输出指令重写命令Sc,因为根据第一和第二比较装置135和137的判断结果,当前执行任务号1与保持部分155的任务号彼此相同。
3.当CPU从任务1转移到任务2时的操作
CPU输出任务2的指令地址。第一比较装置135的判断结果为否定,而第二比较装置137的判断结果为肯定。第二转换器126将CPU的指令地址转换为用于存取第二E-存储器116的地址。之后,CPU按照前述方式输入从第二E-存储器116读出的指令,并执行这些指令。
任务切换检测部分154向发送/接收单元输出指令重写命令Sc,因为根据第一和第二比较装置135和137的判断结果,当前执行任务号2与保持部分155的任务号1彼此不同。任务切换检测部分154将当前执行任务号2写入保持部分155。
在通过发送/接收单元接收到指令重写命令Sc之后,主机通过发送/接收单元向写入控制部分129f传送任务3的指令、前导地址和传送字节数。写入控制部分129f将任务3的前导地址和传送字节数写入第一寄存器136,并向第一选择器121发出任务3的指令。第一E-存储器115将来自第一选择器121的地址输入其中,并将任务3的指令写入其中。
如上所述,根据本实施例,在主机中,按照OS的任务,预先区分指令序列,从而向E-存储器传送每个任务的指令序列,以存储在其中。彼此间切换E-存储器,从而控制了由于传送业务量而导致的额外开销,并向CPU有效地提供指令。
在本实施例中,检测任务的前导地址,以便检测任务的切换,从而切换并重写E-存储器。可以响应从CPU或主机输入的任务切换信号,来彼此间切换E-存储器。
实施例10
在实施例1到9中,在将程序写入主机中的E-存储器中时,分析了指令的分支中的行为。这产生了由于分析所消耗的时间量而导致的额外开销。本发明的实施例10解决了前述问题。
主机是包括调试器软件的计算机,所述调试器软件具有以下功能:根据树结构,分析由CPU执行的指令序列的分支信息,并存储分支指令的类型和地址等。
对如上配置的调试器装置的操作描述如下。图20示出了与主机中所产生的分支有关的树结构。
1.主机产生与分支有关的树结构的操作
主机从要被最先执行的开始指令开始跟踪所有要执行的指令。在跟踪时,检测其中产生了诸如条件分支指令和无条件分支指令等对程序控制的干扰的斑点(spot)。将所检测到的斑点的节点部分的地址和节点部分之间的字节数存储为树结构。
2.由CPU执行的操作
主机根据所产生的树结构,通过发送/接收单元,向执行监督单元传送前导地址1和从开始地址开始的字节数1及其之间的指令。执行监督单元将与该字节数相等的指令写入第一E-存储器115。
接下来,主机根据树结构,通过发送/接收单元,向执行监督单元传送前导地址2和从开始地址开始的字节数2及其之间的指令。执行监督单元将与该字节数相等的指令写入第二E-存储器116。
此后,CPU依照实施例1到9中所描述的操作,从第一E-存储器115或第二E-存储器116取出指令,并执行这些指令。
如上所述,根据本实施例,在主机中预先跟踪所有要执行的指令,检测对程序控制产生干扰的斑点,并将所检测到的斑点的节点部分的地址及节点间的字节数存储为树结构。这样控制了由于在写入指令时对行为的分析而导致的额外开销,从而向CPU有效地提供指令。
实施例11
在实施例2到10中,在按照分支指令,将指令写入E-存储器时,从分支指令出现向前的一些指令可能仍未被写入。因此,在使用存储器空间时,在某些情况下产生存储器空间的短缺,而在其他情况下,并未使用存储器空间。这种不平衡成为有效使用E-存储器的障碍。本发明的实施例11响应这种不便。
图21是示出了根据实施例11的调试器装置的结构的方框图。
系统LSI 101g包括单一的E-存储器158。
如图22所示,执行监督单元113g包括地址选择器161、地址转换器162、比较装置163、地址/字节数寄存器(此后,缩写为寄存器)164、写入控制部分129g、存取存储器改变检测部分130g、写入地址转换器168、以及写入地址/字节数寄存器(此后,缩写为写入寄存器)169。因为设置了单一的E-存储器158,同样单一地设置了比较装置163、地址转换器162和地址选择器161。在根据本实施例的结构中并未设置数据选择器和逻辑和电路。
写入控制部分129g从发送/接收单元,将指令序列的指令、写入前导地址、前导地址和传送字节数输入其中,并将E-存储器的写入前导地址写入写入寄存器169中,将前导地址和传送字节数写入寄存器164中,并向E-存储器158发出指令序列的指令。此外,写入控制部分129g在从比较装置163将CPU的指令地址不相关的判断结果输入其中时,从发送/接收单元输入下一个前导地址和传送字节数,并将其写入寄存器164中。
写入寄存器169将来自写入控制部分129g的E-存储器158的写入前导地址和传送字节数保存在其中。
写入地址转换器168根据相应的转换字节数,将写入寄存器169的写入地址转换为用于对E-存储器158进行写入的地址。
在比较装置163的判断结果表示肯定时,地址转换器162根据写入寄存器169的写入前导地址和传送字节数以及寄存器164的前导地址和传送字节数,将CPU的指令地址转换为用于存取E-存储器158的地址。
地址选择器161在对E-存储器158进行写入的情况下,选择从地址转换器168发出的地址,而在其他情况下,选择从地址转换器162发出的地址。
对如上配置的调试器装置的操作描述如下。图23示出了从主机102g传送过来的指令序列。
1.将指令写入E-存储器的操作
主机根据执行序列,从开始指令开始对指令进行跟踪,并在出现无条件分支指令时,存储所跟踪的第一地址,作为指令序列1的前导地址,并存储指令序列的字节数,作为指令序列1的传送字节数。主机还存储指令序列2、3以及其后指令序列的前导地址和传送字节数。
主机将E-存储器的写入前导地址设置为初始值。主机向写入控制部分129g传送指令序列1的指令、前导地址、传送字节数和写入前导地址。
写入控制部分129g将指令序列1的写入前导地址写入该写入寄存器169中,将指令序列1的前导地址和传送字节数写入寄存器164中,并向E-存储器158传送指令序列1的指令。写入地址转换器168根据写入寄存器169的指令序列1的前导地址和传送字节数,将前导地址转换为用于对E-存储器158进行写入的地址。E-存储器158输入来自地址选择器161的地址,从而将指令序列1的指令写入其中。
按照相同的方式,将指令序列2及其后指令序列的指令写入E-存储器158中。
当完成写入时,主机通过发送/接收单元向写入控制部分129g再次传送指令序列1的写入前导地址。写入控制部分129g将指令序列1的写入前导地址写入写入寄存器169中。
2.在通过无条件分支指令1进行分支时的操作
CPU输出指令序列1的指令地址。响应无条件分支指令1的到达,比较装置163输出CPU的指令地址并未落入距寄存器164的前导地址传送字节数的范围内的判断结果。改变检测部分130g向发送/接收单元输出地址重写命令Sd,因为来自比较装置163的判断结果为否定的。
结果,在与上述相同的步骤中,从主机接收到指令序列2的写入前导地址、前导地址和传送字节数,将指令序列2的写入前导地址写入写入寄存器169,并将指令序列2的前导地址和传送自己数写入寄存器164。
比较装置163输出CPU的指令地址落入从寄存器164的前导地址起的传送字节数的范围内的判断结果。由于比较装置163的判断结果表示肯定,地址转换器162根据写入寄存器169的写入前导地址以及寄存器164的前导地址和传送字节数,将CPU的指令地址转换为用于存取E-存储器158的地址。来自比较装置163的表示肯定的输出构成了选择器112的选择信号Se,用于选择执行监督单元113g的输出(用于对E-存储器进行读取的指令)。之后,CPU按照相同的方式,输入从E-存储器158读出的指令,并执行这些指令。
如上所述,根据本实施例,当CPU的指令地址变得不相关时,从主机接收下一指令序列的写入前导地址、前导地址和传送字节数。按照这种方式,能够在连续的空间中,执行对单一E-存储器的写入,从而有效地利用了E-存储器。
实施例12
在实施例11中,针对每个分支,从主机传送地址和传送字节数,导致了额外开销的产生。本发明的实施例12响应该问题。在实施例12中,将图21一并作为参考。
如图24所示,E-存储器执行监督单元113h包括第一写入地址/字节数寄存器(此后,缩写为第一写入寄存器)172、第二写入地址/字节数寄存器(此后,缩写为第二写入寄存器)173、第一地址/字节数寄存器(此后,缩写为第一寄存器)174、以及第二地址/字节数寄存器(此后,缩写为第二寄存器)175。图24中等同于图22中的部件的其他部件具有相同的参考数字,并在本实施例中不再进行描述。
写入控制部分129h将来自发送/接收单元的指令、对于E-存储器的写入前导地址和指令序列的传送字节数输入其中,并将对于E-存储器的写入前导地址写入第一写入寄存器172或第二写入寄存器173中,并将前导地址和传送字节数写入第一寄存器174或第二寄存器175。写入控制部分129h向E-存储器158发出指令序列的指令,并在从比较装置163将CPU的指令地址不相关的判断结果输入其中时,将来自发送/接收单元的前导地址和传送字节数输入其中。写入控制部分129h将写入前导地址写入第二写入寄存器173中,并将前导地址和传送字节数写入第二寄存器175中。
在比较装置163的判断结果表示否定时,第一寄存器174将其内容更新为第二寄存器175的数值。
在比较装置163的判断结果表示否定时,第一写入寄存器172将其内容更新为第二写入寄存器173的写入前导地址和传送字节数。
在比较装置163的判断结果表示否定时,改变检测部分130h向发送/接收单元输出地址重写命令Sd。
对如上配置的调试器装置的操作描述如下。图23示出了从主机传送过来的指令序列。
1.将指令写入E-存储器的操作
主机根据执行序列,从开始指令开始对指令进行跟踪,并在出现无条件分支指令时,存储所跟踪的第一地址,作为指令序列1的前导地址,并存储指令序列的字节数,作为指令序列1的传送字节数。主机还存储指令序列2、3及其后指令序列的前导地址和传送字节数。
主机将关于E-存储器的写入前导地址设置为初始值。主机通过发送/接收单元向写入控制部分129h传送指令序列1的指令、前导地址、传送字节数和写入前导地址。
写入控制部分129h将指令序列1的写入前导地址写入第一写入寄存器172中,将指令序列1的前导地址和传送字节数写入第一寄存器174中,并向地址选择器161传送指令序列1的指令。写入地址转换器168根据第一写入寄存器172的传送字节数,将第一写入寄存器172的指令序列1的写入前导地址转换为用于对E-存储器158进行写入的地址。E-存储器158输入来自地址第一选择器161的地址,从而将指令序列1的指令写入其中。按照相同的方式,将指令序列2及其后指令序列的指令写入E-存储器158中。
当完成写入时,主机通过发送/接收单元向写入控制部分129h传送指令序列1的写入前导地址、前导地址和传送字节数。写入控制部分129h将指令序列1的写入前导地址写入第一写入寄存器172中,并将指令序列1的写入前导地址写入第二写入寄存器173中。
2.在通过无条件分支指令1进行分支时的操作
CPU输出指令序列1的指令地址。在无条件分支指令1到达时,比较装置163输出CPU的指令地址并未落入从第一寄存器174的前导地址起的传送字节数的范围内的判断结果。因为比较装置163的判断结果为否定,第一寄存器174将其内容更新为第二寄存器175的数值,以及第一写入寄存器172将器内容更新为第二写入寄存器173的前导地址和字节数。同时,因为比较装置163的判断结果为否定的,改变检测部分130h通过发送/接收单元向主机输出地址重写命令Sd。
作为更新的结果,比较装置163输出CPU的指令地址落入从第一寄存器174的前导地址起的传送字节数的范围内的判断结果。由于比较装置163的判断结果表示肯定,地址转换器162根据第一写入寄存器172的写入前导地址以及第一寄存器174的前导地址和传送字节数,将CPU的指令地址转换为用于存取E-存储器158的地址。此后,CPU按照相同的方式,输入从E-存储器158读出的指令,并执行这些指令。
同时,在接收到地址更新命令Sd之后,主机通过发送/接收单元向写入控制部分129h传送指令序列3的指令、写入前导地址、前导地址和传送字节数。写入控制部分129h将指令序列3的写入前导地址写入第二写入寄存器173,并将其前导地址和传送字节数写入第二寄存器175。
如上所述,根据本实施例,可以分别设置一对地址/字节数寄存器和一对写入地址/字节数寄存器。在这种结构中,在分支时,各个寄存器将其内容更新为另一寄存器的数值,从而控制了由于对分支中所产生的地址和传送字节数的串行传送而导致的额外开销。
通过以上的描述,本发明提供的内容将是显而易见的。

调试器装置及调试方法.pdf_第1页
第1页 / 共78页
调试器装置及调试方法.pdf_第2页
第2页 / 共78页
调试器装置及调试方法.pdf_第3页
第3页 / 共78页
点击查看更多>>
资源描述

《调试器装置及调试方法.pdf》由会员分享,可在线阅读,更多相关《调试器装置及调试方法.pdf(78页珍藏版)》请在专利查询网上搜索。

根据本实施例的一种调试器装置,包括主机、CPU、用于存储指令的多个E存储器单元(仿真存储器单元)以及执行监督单元。主机跟踪要被存储在E存储器单元的指令,并以指令序列的形式传送跟踪结果。执行监督单元与CPU、E存储器单元和主机相连。执行监督单元将从主机传送过来的指令序列单独写入多个E存储器单元中,按照CPU的指令地址,从多个E存储器单元之一读取指令序列,从而向CPU传送指令序列,并在CPU的指令地址。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1