对基于计算机的电信系统的仿真的制作方法

文档序号:6415777阅读:377来源:国知局
专利名称:对基于计算机的电信系统的仿真的制作方法
本中请是1997年6月13日提交的题为“计算机处理器的仿真”的美国专利申请序号08/874,660(代理人文档号1410-361)的部分继续申请,该申请结合于此以供参考。
1.发明领域本发明涉及基于计算机系统的测试,具体地说,涉及通过对基于计算机的电信系统进行仿真来进行对这类系统的测试。
2.相关技术和其它考虑许多大型商业和工业系统使用大量的硬件部件,它们是以计算机为基础的,并且相互合作以实现各种任务。控制这类系统的计算机是复杂的并有多种功能。虽然经常希望对这类系统和控制这些系统的计算机进行测试,但却很少能承担得起这样的测试。因为测试会使系统和/或计算机离线,或者就是要消耗资源。一般来说,对这类系统和/或计算机的测试或者对这类系统的新软件的测试都是复杂和代价昂贵的。
在电信系统中测试的代价尤其显著。一个具体的例子是电话交换机,通过它连接用户的呼叫。这样的电话交换机一般都有一个中央处理器,它连接到多个地区处理器上。地区处理器按照指定给交换机的各种功能来执行各种任务。电信交换机通常是可重新配置的,这意味着其结构是动态的。
系统的仿真或模拟是在不加重系统负担的情况下测试系统的一种方法。在国际专利申请PCT/US 94/03911“在主计算机中对客座指令进行译码的方法”中叙述了一种具体的仿真技术。
当前的模拟/仿真技术虽然在某些方面是有益的,但一般都具有较差的执行速度,并对存储器有苛刻的要求。此外,用户在仿真中通常都不能完成他在测试中所希望的那样多的要求。另外,要对像电信交换机这样的可以动态配置的系统进行仿真通常是困难的。
因此,所需要的,也是本发明的目的,就是对可动态配置的基于计算机的系统的有效仿真。
发明概要使一个仿真系统在主计算机系统上执行以便模拟一个目标电信系统。该仿真系统包括一个仿真内核,它含有多个仿真子系统,每一个仿真子系统对应于目标电信系统的各个子系统。仿真内核汇编成一个可执行的图象,其中所有的仿真子系统都在一个共同的进程关联信息(process context)中执行并共享一个共同的执行线程。仿真系统包括一个中央处理器仿真器,它根据通过用户通信信道进入到仿真内核的命令而对执行目标指令进行模拟。中央处理器仿真器模拟对目标电信系统的中央处理器中各寄存器的使用。目标电信系统中内部总线则由各仿真子系统之间的功能调用来模拟。
目标电信系统的中央处理器具有一个指令处理器、一个信号处理器和一个区域处理器控制器。在仿真系统中,中央处理器仿真器有一个仿真的指令处理器,它模拟目标电信系统中的指令处理器。但是,中央处理器仿真器是在接口的级别上模拟信号处理器和区域处理器控制器的。
目标电信系统的一个例子是电信交换机。在模拟电信交换机时,仿真系统包括以下仿真子系统(1)一个仿真的话务发生器,用于产生ISDN基本速率接入测试;(2)一个仿真的集团交换机子系统;(3)一个仿真的会议呼叫设备子系统;(4)一个仿真的信号转移中央子系统,它和仿真的延伸模块区域处理器设备相通信;和(5)一个仿真的信号转移远程子系统。
在仿真信号转移中央子系统和仿真信号转移远程子系统之间利用过程调用来转移信号。
对于电信交换机来说,目标系统包括一个模块,用户通过该模块接入到电信系统中,该模块由接入处理器加以控制。这样的接入处理器在仿真系统中是由仿真的接入处理器来模拟的,该仿真的接入处理器模拟接入处理器的指令集和接入处理器的寄存器组。仿真的接入处理器和各子系统以逻辑级别亦即以消息级别相互作用。
用户的通信信道不仅用来向中央处理器仿真器发送命令,并且还用于接入到仿真子系统。例如,对一个选定仿真的接入可以按照目标电信系统中对应子系统的硬件来配置选定的仿真子系统而实现。通过用户通信信道输入的用于选定的仿真子系统的命令是由命令调度器通过插座而发送到仿真核心并传递到仿真子系统的。
每个子系统按树形层次组织,其中每个仿真子系统有一个命令解释器。每个解释器包括用于处理它的仿真子系统的硬件配置的例程。所有子系统的解释器都遵照同样的用于分析命令的原则。
附图简介本发明的上述和其它目的、特点和优点从下面的对由附图所表明的优选实施例的更加具体的叙述将变得很明显,图中的参考字符在所有各个不同的示图中都指明相同的部分。这些图不一定按比例表示,相反,重点是放在说明本发明的原理上。


图1A是包括一个远程用户站的电话交换系统的原理图。
图1B是电话交换系统的原理图,在该交换系统中用户站是包含在父交换局中的。
图2是按照本发明的实施例的用于电话交换系统中的中央处理器的原理图。
图3是按照本发明的实施例的用于模拟电话交换系统的主计算机系统的原理图。
图3A是按照本发明的主机系统的一个实施例的原理图,该实施例有一个跳转表,它能容纳非等长的目标指令。
图3B是按照本发明的主机系统的另一个实施例的原理图,该实施例通过提供跳转表的影子表而减少跳转表的大小。
图3C是按照本发明的主机系统的另一个实施例的原理图,该实施例通过利用时间印记的压缩技术而减少跳转表的大小。
图4是按照本发明的实施例的仿真系统的原理图。
图5是按照本发明的实施例的各子系统的分层结构的原理图。
图6是按照本发明的一个实施例的SIGEN命令分层结构的原理图。
图7A是表明按照本发明的一个实施例的集团交换机仿真模块的范围的示意图。
图7B是集团交换机仿真模块的原理图。
图7C是表明集团交换机仿真模块用的命令的位置示意图。
图8A是表明按照本发明的一个实施例的会议呼叫设备(CCD)仿真器的范围的示意图。
图8B是会议呼叫设备(CCD)仿真器的原理图。
图8C是表明会议呼叫设备(CCD)仿真器用的命令的位置示意图。
图9A是表明按照本发明的一个实施例的信号转移控制仿真器的范围的示意图。
图9B是信号转移控制仿真器的原理图。
图9C是表明信号转移控制仿真器的命令的位置的示意图。
图10A是信号转移远程和在其中的信号流的原理图。
图10B是表明信号转移远程和它周围的模块合作的原理图。
图10C是表明STR仿真器怎样和EMRDs及STC仿真器通信的示意图。
图11A是目标系统的各部分的原理图,表明一个信令终端ST20C和它的接口及信号流。
图11B是信令终端ST20C的主要部件的原理图。
图11C是按照本发明一个实施例的ST20C仿真器的原理图。
图11D是描绘使ISS 68030适应于在ST20C的关联(上下文)中ISS68020的要求的原理图。
图12A是在特定的目标系统中提供对基本速率接入(BRA)的ISDN控制信号流(D信道)概观的原理图。
图12B是经过实施DBS的软件的数据流的原理图。
图13A是SIGEN图形用户接口窗口的一种格式的示意图。
图13B是SIGEN命令分层结构的示意图。
图13C是SIGEN数据结构的示意图。
图14是表明由把目标目的代码翻译成仿真指令和执行该仿真指令的仿真监控控制例程所进行的流水线协调的示意图。
图15是表明按照本发明的一种模式在目标代码区、跳转表、和其中驻留着翻译例程的翻译指令区之间的相互关系的示意图。
图16是按照图3B的实施例,显示目标目的、代码区、跳转表、翻译指令区和跳转表影子表之间的相互关系的示意图。
图17是表明按照图3B的实施例用于编译指令时为翻译程序块所必需的存储器的示意图。
图18是按照图3C的实施例,表明目标目的代码区、跳转表和时间印记存储区之间的相互关系的示意图。
图19a是按照本发明的一种模式,在目标代码模块、跳转表和仿真代码区之间的相互关系的示意图。
图19b是表明在线仿真代码的组织的示意图。
图20是在修正的目标指令、中间生成表和翻译成仿真代码之间的相互关系的示意图,并说明了把一个特定的目标指令(例如寄存器加寄存器指令)转变成主机指令的过程。
图21是在主机存储器中寄存器仿真的示意图。
附图详述在下面的说明中,作为解释并不是作为限制,提出了具体细节,例如特定的体系结构和技术等,以便为本发明提供完整的理解。但是,对熟悉本项技术的人来说,他们很清楚本发明可以用与这些具体细节并不相同的其它实施例来实现本发明。在其它情况下,众所周知的设备和方法的详细说明都省略了,以免用不必要的细节模糊了对本发明的说明。
本发明涉及用主计算机系统来仿真目标计算机系统。提供的一个具体的但非限制性的目标计算机系统的例子是涉及电话转接用的交换设备。作为讨论所示例子的计算机系统仿真的准备,对电话转接用的交换设备先加以说明。
1.0 目标计算机系统及其环境图1A表示一个电话交换系统18A,它包括一个本地电话转接用的交换设备20,交换设备连接到一个远程用户交换设备(RSS)22。转接用的交换设备20包括集团交换子系统(GSS)30。集团交换子系统(GSS)30由一个或多个集团交换区域处理器(GSRP)32所控制,后者则又被中央处理器(CP)34所控制。中央处理器(CP)34和集团交换区域处理器(GSRP)32通过区域处理器总线(RPB)36通信。其它的区域处理器和信令终端中心(STC)38也连接到区域处理器总线(RPB)36。如图1A所显示的,每个信令终端(STC)38都连接到一个相关联的交换终端电路(ETC)40。
远程用户交换机(RSS)22包括多个线路交换模块(LSM)44,每个线路交换模块(LSM)44连接到多个用户,如用户46。线路交换模块(LSM)44包括众多的部件。至少一个,最好是多个(但不需要全部)线路交换模块(LSM)44具有一个交换终端板(ETB)48。每个线路交换模块(LSM)44具有一个延伸模块区域处理器(EMRP)50。每个交换终端板(ETB)48由通过交换终端回路(ETC)40中的一个回路的链路连接到集团交换机(GSS)30的一个端口。延伸模块区域处理器(EMRP)50连接到两个分开的EMRP总线56A和56B。EMRP总线56A还连接到信令终端远程(STR)58A;EMRP总线56B还连接到信令终端远程(STR)58B。信令终端远程(STR)58连接到远程用户交换机(RSS)22中的交换终端板(ETB)48。
用户之间的一次呼叫,也称作一个联接,是通过电话交换系统18来选择路由的。一次呼叫一般同时包含信令和话务(用户的信息,例如语音或数据)。一次呼叫或联接利用例如在链路54上的时分时间片这样的信道,其中的信道16一般都被指定用作公共信道信令。
图1B表示一个电话交换系统18B,其中用户级是包括在父交换设备之内的。和图1A的系统18A相似,电话交换系统18B包括一个集团交换子系统(GSS)30,它由集团交换区域处理器(GSRP)32所控制,后者则又通过区域处理器总线(RPB)36和中央处理器(CP)34通信。图1B的电话交换系统18B和图1A的系统的不同之处在于每一对信令终端中心(STC)38和交换设备终端板(ETB)40组合起来而形成区域处理器总线转换器(RPBC)60。区域处理器总线转换器(RPBC)60同时连接到区域处理器总线(RPB)36和线路交换模块(LSM)44。此外,在每个线路交换模块(LSM)44中的交换设备终端板(ETB)被称作为连接线终端回路(JTC)62的印刷电路板组合所取代。
集团交换子系统(GSS)30实际上是一个交叉连接的矩阵电路并且因而构成了多个空间交换模块,这里把它集体地作为空间交换模块(SPM)70。空间交换模块的每一行由时间交换模块所控制,这里有多个时间交换模块(每行一个),统一地称为时间交换模块(TSM)72。
当联接信令表明在集团交换子系统(GSS)30中要建立一次呼叫时,集团交换区域处理器(GSRP)32通过把信息写入到时间交换模块中一个相应模块的控制存储器中而选择供连接用的经过集团交换子系统(GSS)30的路径。为了使集团交换子系统(GSS)30同步,使用了多个时钟模块,在此统一地被称为时钟模块CLT 74。
用于在网络中建立、选定路由和结束用户的内容信息(即话务)的信令在这里被称作为“联接信令”。联接信令一般是两种形式中的一种信道相关信令(CAS)或公共信道信令(CS)。这种信令不应和程序信令(例如软件指令)相混淆,后者是在两个或多个处理器之中或之间用来控制交换设备本身的各种功能的。今后在提到“信号”或“信令”时,除非另有专门的指定,都是指程序信令。
在图1A和图1B的电话交换系统中,中央处理器(CP)34有必要和包括在线路交换模块(LSM)44中的延伸模块区域处理器(EMRP)50通信。中央处理器(CP)34利用程序信号和延伸模块区域处理器(EMRP)50通信。这些程序信号作为在联接交换信道中所携带的信息的一部分而被包括在内。这就是说,在图1A的实施例中,在中央处理器(CP)34和延伸模块区域处理器(EMRP)50之间的通信是发生在信令终端中心(STC)38和交换设备终端板(ETB)48之间的联接信令上的(该信令的路由经过交换设备终端回路(ETC)40),而该交换设备终端板(ETB)48连接到一个信令终端远程(STR)58上。每个信令终端远程(STR)58则又连接到所有的延伸模块区域处理器(EMRP)50。在图1B的实施例中,每个区域处理器总线转换器(RPBC)60连接到所有的延伸模块区域处理器(EMRP)50上。
图1A和图1B的电话交换系统的体系结构对熟悉本技术的人来说都是了解的。这种结构的另外的例子在1994年2月15日提交的序号为08/601,964的美国专利申请中有叙述,其题目为“电信转接交换设备”,在这里被提及供参考。
中央处理器(CP)34的一种实施例示于图2中。实际上,中央处理器(CP)34包含两个中央处理器,即特定中央处理器34A和中央处理器34B,它们共同被称为中央处理器34。每个中央处理器含有指令处理单元(IPU)80,其中指令处理单元80A和80B由IPU更新和匹配总线82所连接。每个中央处理器还包含一个信号处理单元(SPU)84,其中信号处理单元84A和84B由SPU更新和匹配总线86所连接。信号处理单元84管理CP34的工作,并准备要由指令处理单元80进行的工作,从而使指令处理单元(IPU)连续地执行程序。指令处理单元(IPU)执行程序,而信号处理单元则通知IPU程序应被执行的地址。
每个指令处理器(IPU)80要访问三个存储单元,具体说是程序存储器(PS)87、参考存储器(RS)88、和数据存储器(DS)89。如上所述,指令处理器(IPU)80执行各项作业,每个作业相当于存放在程序存储器(PS)87中的一块指令。信号处理器(SPU)84用来作为指令处理器(IPU)80的作业的调度器。由于这样一种调度,对于每一个作业信号处理器(SPU)84收到一个程序“信号”,例如,从外部世界或从指令处理器(IPU)80来的信号。一般说来,一个信号是一条指令,它告诉要在一个指令块的特定部分中什么地方去执行,该信号包含在执行该块时要使用的数据。信号在3、2、3节中要进一步叙述。信号处理器(SPU)84分析并准备好进入的信号,并在把它们送到指令处理器(IPU)80之前给这些信号规定优先级。参考存储器(RS)88含有描述系统中所用的信号、区段(块)和变量的信息。
维护单元(MAU)90同时连接到两个指令处理器(IPU)80。维护单元(MAU)90有若干功能,包括在故障情况下启动各种测试和确定哪一侧(例如中央处理器34A还是中央处理器34B)应被指定为执行单元。
每个中央处理器34还包括一个区域处理器控制器92。区域处理器控制器92管理去到各区域处理器或来自各区域处理器的程序信令,这些处理器包括区域处理器总线转换器60和集团交换区域处理器32。区域处理器控制器94连接到和它相关联的信号处理器(SPU)84和区域处理器总线(RPB)36。
一个具体的被称为APZ的中央处理器的更进一步的体系结构在1995年12月19日提交的美国专利申请序号08/574,977中公布,其题目为“指令处理器的作业调度”,在此引用以供参考。
CP 34的指令组和寄存器分别在3、2、1等和3、2、2节中说明。
2.0主计算机系统图3显示按照本发明的一个实施例的主计算机系统。主计算机系统110有一个主处理器,即CPU112,它通过总线114和其它主机组成单元通信。其它主机组成单元包括输入设备(如键盘和指点器〔例如鼠标〕)116;输出设备(如显示器、打印机)118;输入/输出存储设备(如磁盘驱动器)120;只读存储器(ROM)112和随机存取存储器(RAM)130。熟悉本技术的人知道这些组成单元的各种设备是通过相应的接口连接到总线114的。
在所示的实施例中,主计算机是一台SUN SPARC工作站。在下面我们假定在主机上用的是SPARC的型号8,也就是说,可以用imul和idiv指令。除了可以是32比特或64比特的(合成)指令组外,所有SPARC指令是32比特的。CPU112是110兆赫的微处理器,RAM 130是64兆字节,而I/O存储设备120是能容纳300兆字节转储的硬盘驱动器。本发明并不局限于应用这种特定的主机类型,因为可以理解本发明的原理同样也可以用于别的计算机系统。
图4表示在主机系统110上执行的仿真系统200。仿真系统200(也称为“SIMAX”)的主要部分为(1)一组现成的工具,包括工具210、212、和214,分别称作WIOL、Plex查错程序和Autosis。
(2)外加的用户工具216,称为主控制窗口(MCW),用于硬件配置和低级查错。
(3)话务发生器220,用于执行IGEN原文。
(4)查错程序222(C/C++文本),用于ST20C处理器。
(5)仿真器内核231(包括若干个仿真子系统,它们部分地相当于AXE-10 ISDN基本速率接入系统的实际配置)。
如在图4中所应用的含义那样,“子系统”指的是对应于由仿真系统200所模拟的实际硬件。
2.1仿真器内核关于图4的内核231,仿真子系统包括仿真的集团交换子系统230;一个或多个仿真的集团交换区域处理器232;仿真的中央处理器234;仿真的区域处理器总线236;仿真的延伸模块区域处理器(EMRPD)250;仿真的区域处理器总线控制器(RPBC)260;仿真的会议呼叫设备(CCD)262;以及仿真的输入/输出系统(IOG 3)264。仿真的中央处理器234包括仿真的指令处理单元(IPU)280;仿真的信号处理单元(SPU)284;仿真的程序存储器(PSU)287;仿真的参考存储器(PSU)288;仿真的数据存储单元(DSU)289;以及仿真的区域总线管理器292。
内核231是汇编成一个可执行的Unix图象的。所有的在仿真器中的子系统都在共同的Unix进程关联信息中执行并共享同一个执行线程。这是由下列理由促成的(1)在相互合作的子系统之间的同步可被简化(例如,并不基于任何Unix的IPC机制);(2)不会发生由于Unix的“重载”进程调度而引起的性能变坏。
(3)有可能得到对执行的确切控制,甚至达到执行单独指令的水平。
(4)公共的地址空间减少了建立用于在子系统之间传递仿真信号的数据缓冲的复本的需求。
(5)可以在相互合作的子系统之间对执行线程建立高效的分配(极其简单的调度机制)。
(6)把调度程序配置成能在仿真时给出完全确定性行为的可能性,使它有可能严格地重复事件过程。如在这里所用的“调度程序”是指用于模拟内核231的不同线程的调度机制。
在EMRPD中Sim APP是指用C/C++编写的应用软件。REOS是EMRPD用的OS(操作系统),并可从Enea Data获得。
2.2在框架内的模块性仿真器内核231的框架为管理和控制在仿真器内核231中的不同的子系统建立一个公共的环境。框架还实现和支持若干个由子系统所使用的公共服务。
框架环境由下列各功能建立·登录管理·执行线程调度·执行控制·虚拟时间的产生和管理·公共的配置信息处理附加的公共服务是·出错/跟踪报告实用程序·在内核中动态分配的存储器管理·分派Unix信号·简单命令处理·进程处理功能2.2.1用户交互作用的普遍原则当仿真系统200起动时,称作SIMAX命令窗口(SCW)的一个窗口被打开,它成为用户对仿真器核心231的通信信道。SCW是一个纯粹的文本窗口,因为用户的交互作用是命令取向的。命令是逐行输入的,当用户按回车键时,一行完整的命令被转送到命令解释器,由它去实施该命令。在功能测试的一个典型的应用中,配置是通过输入一个准备好的配置原本文件而完成的。
2.2.1.1仿真系统的配置一次仿真活动总是从仿真器的配置开始,即用对被仿真的系统(目标系统)的性质的描述开始。这由两个基本步骤实现。
在第一步中,被仿真系统的硬件组成要加以叙述。各组成部件被建立(被示例),且每一个部件都给出一个身份并详述它的性质。举例来说,可能的性质可以是与中央处理器34相关的PS 87和DRS 89的RAM和ROM的大小。
在第二步中,在各部件之间的连接要予以说明。例如,在硬件系统中的总线、PCM链路、和线路接口端口要用仿真部件之间的连接来模拟。
在下面的例子(从SIGEN 220的功能描述中借用)中,这两个步骤是涉及TUBORG(话务发生器子系统)而说明的FW>...
FW>.SIGENFW/SIGEN> _create TUBORGFW/SIGEN>TUBORGFW/SIGEN/TUBORG> _attach DLB2_ONE 10FW/SIGEN/TUBORG> _attach DLB2_ONE 21FW/SIGEN/TUBORG> _attach DLB2_TWO 02FW/SIGEN/TUBORG>up.
.
FW/SIGEN>.TUBORGFW/SIGEN/TUBORG>_detach 0FW/SIGEN/TUBORG>_detach 1FW/SIGEN/TUBORG>_detach 2FW/SIGEN/TUBORG>up.
.
FW/SIGEN>_delete TUBORGFW/SIGEN>top.
.当被仿真的系统正确地建立起来时,仿真就可以开始。
实际上,建立过程很可能是存储在一个原本文件中的,它可以在系统起动时被读入。原本文件基本上是个ASCII文本文件,它含有所需的命令。原本文件的名字可以作为命令行的变元给出,也可以作为“插入”命令(见下文)的变元给出。作为命令行的变元给出原本文件相当于键入“插入”命令作为第一条命令。
2.2.1.2使用被仿真的系统和仿真器在仿真期间,用户可以用两种方式接入到系统中。一种接入是直接朝向仿真器本身,另一种接入是朝向被仿真的系统。
正常情况下,用户通过一个外部工具(如Plex View 212和WIOL 210)和被仿真系统相互作用。Plex View是一种观看和查错工具。它处理PLEX列表(E-模块)、信号和校正。Plex View可取代用纸打印的E-模块列表和信号说明文档。Plex View向用户提供浏览、搜索和打印功能。WIOL是一个在UNIX操作系统下的交互性人机通信程序。利用WIOL,用户可以与目标系统建立和关闭连接,并为目标系统准备、编辑和送出命令。
这样,利用这些工具,用户可以实施测试并校验结果。这些工具还允许用户以检验真实系统相同的方式来检验被仿真的系统。对于外部工具而言,被仿真的系统和实际系统是不可分辨的。
还存在一个要和仿真器内核231直接交互的需要。这是在主控制窗口中(MCW)完成的。在这样做时,可以检验被仿真系统的其它方面并改变其它性能。例如,可能会希望为调度程序改变伪进程的次序,或者改变伪进程的执行时间片的大小。通过主控制窗口(MCW)的交互作用还可以用作为可与外部工具相比拟附加功能。不过,在这方面可以利用的东西完全取决于不同子系统的设计人员。
2.2.2命令分层仿真系统200中的每个子系统都有它自己的解释器。子系统和它们的解释器如图5所示按“框架”树形层次组织。在图5中,各仿真子系统相当于目标电信系统中实际被仿真的硬件。框架的其它部分用来作为管理功能,例如命令处理器等等。子系统仿真的事例是由称作为“工厂”的特定子系统示例的。
利用命令来接入仿真系统200的各个不同子系统。每个子系统可以利用导航器命令以到达它的父节点和它的子节点。也可以一步就到达根节点(FrameWork Main)。利用这些导航命令有可能航行遍历整个树。在启动时,FrameWork Main是当前的活动节点,亦即它的解释器执行任何进入的命令。如果下一个命令是导航命令,那么就改变活动节点,因而也就改变了执行进入命令的解释器。命令有四种基本类型全局的、局部的、事例的和Tcl。
全局命令是为所有的解释器定义的并在解释器被建立时加进去。全局命令在所有的解释器内具有相同的行为。
局部命令由子系统本身定义,而且只有在子系统是活动的子系统时才能使用。局部命令有一个‘_’前缀。
事例命令用于到达子节点并在子系统被建立时加到当前的子系统中。这些命令实际上是局部命令。事例命令有一个‘.’前缀。
可以得到一组Tcl定义的命令的子集。这些命令实际上是全局命令。
子系统的分层组织(以及它们的解释器)意味着为了和某个子系统相互作用,用户首先要用导航命令移动到那里,然后再给出所需的命令。要在另外的内核部件中执行命令的另一个可能性是利用“do”(执行)命令,如下面所述。
2.2.2.1全局命令全局命令对所有子系统都是公共的。全局命令可以在任何级别上使用,并且在子系统建立时自动加到命令集中。这也意味着全局命令是保留命令并且不能由任何个别的子系统所重新定义。
全局命令中的一组被定义为用于在子系统树形分层结构中导航并执行个别命令“up”(上)——在分层中向上移动一个级别。本命令在顶层级别时无作用。
“top”(顶)——直接移动到最上级别。本命令在顶层级别时无作用。
“do”(执行)——在层次中的不同处执行一个命令。例如“do/schd/_status”在调度程序内核部件中执行Status命令。
另一个全局命令用于原本文件,具体地是一个“insert file”(“插入文件”)命令。“插入文件”命令从“文件”读出命令,这个文件是一个普通的文本文件,含有提交给当前解释器的命令。它也可以含有嵌套的“插入”命令。
有三个命令用于控制仿真器内核231的执行。这三个命令是“halt”(“停止”)、“run[n]”(“执行[n]”)、和“thread”(“线程”)命令。“停止”命令使仿真器内核231的执行停止。在停止时,仿真器只响应(从主控制窗口(MCW)来的)命令。“执行[n]”命令使仿真器内核231的执行继续进行。这个命令释放内核231的伪进程。如果规定了“n”,则调度程序执行“n”个周期。如果没有规定参数,则调度程序执行到给出“停止”命令为止。“线程”命令强迫对调度程序的控制,使其执行进程线程直到分析了另外的命令。
另外一组命令用于显示被仿真系统中各部件的信息。这些命令是“showa1l”(“显示全部”)“info”(“信息”)、“?”、“tracelevel”(“跟踪级别”)、“prompt”(“提示”)、以及“resetall”(“全部复位”)。“显示全部”命令为已定义的部件调用显示功能(见下面的“_Show”)。然后它把“显示全部”命令转发到所有的子系统。接着每个子节点以同样方式执行命令。“信息”命令显示有关当前事例的与登录有关的信息。而“?”命令为当前子系统列出全部已定义的命令。“跟踪级别”命令为当前的事例/工厂设置其跟踪级别成规定的级别。“提示”命令规定提示字串的格式。“全部复位”命令通过为全部已登录的模块调用复位功能而使仿真系统200复位。
2.2.2.2局部命令局部命令可以在登录以后的任意时间加到子系统的解释器中。局部命令有一个“_”前缀,这是在建立时间自动加上去的。有几个预定义的局部命令用于调用已登录的功能,特别是“显示”和“复位”命令。“显示”命令显示关于当前部件的详细信息。由于这种信息随不同的部件而在格式和内容上都有变化,因此每个部件必须有一个与该部件一起登录的显示功能。“复位”命令调用当前事例的复位功能。这个功能一般仅用在硬件仿真模块中。对复位功能的调用应该具有和对被仿真的硬件的发送复位操作时相同的语义。
2.3.2事例命令当一个子系统被建立时,对父辈子系统即当前的(活动的)子系统要加一个导航命令。通过调用这个命令,当前子系统被改变成子辈子系统。事例命令有一个前缀‘.’。在分层结构中向上导航的命令(“上”和“顶”)被认为是全局命令。
2.2.4 Tcl命令由Tcl程序库定义的若干命令可以在每个子系统中获得。这些命令没有前缀并可认为是全局命令。
2.2.5命令解释器(程序)如上所述,仿真系统200的内核231的一个普遍设计原则是可以从用户接口加以控制的每个内核部件应该有它自己的命令解释器和自己的命令集。所有的解释器有必要以相同的方式工作,也就是说,它们遵循相同的分析命令的原则,并且它们以相同的方式把作用(功能)结合到命令上。为此,所有的解释器都使用Tcl来实现。这也使得各解释器能够引进每个解释器都应理解的命令。
所有的命令解释器都从命令处理器调用。总是严格地有一个解释器供调用,即当前命令解释器CCI。来自解释器的任何输出,例如确认,应该使用内存的Tcl命令“Tcl_Append Result”(“Tcl-添加结果”)或“Tcl_SetResult”(Tcl_设置结果)。
2.3 CP仿真器在所说明的实施例中,CP仿真器234(见图4)仿真APZ 212 20处理器,它包括指令处理器(IPU)80的完整的指令集和寄存器。这使得APZ和APT软件的真正的作业处理成为可能。信号处理单元(SPU)84和区域处理管理器(RPH)92是在接口级别上被仿真的。CP仿真器234是设计成以高速度来执行目标代码(即被仿真系统的代码)的。
如下面将更详细地说明的那样(例如在3.4节中),将要去执行的目标系统的代码线程是一步步递增地翻译成为主机(SPARC)二进制代码的。然后二进制代码被执行。二进制代码还被存储起来以便在进入同一线程时再次使用,从而提供例如良好的执行性能。
2.4输入/输出(IOG)仿真器输入/输出仿真(IOG3)264(见图4)支持加载、转储和功能改变的基本功能。它支持WIOL 210的用户接口。WIOL 210和Autosis 214是连接到信道上的。Autosis是一个用来建立和执行测试指令文件的测试系统。Autosis 214的核心是它的解释器,它能够执行测试指令,即把命令送到正在测试的设备并分析送回的应答。Autosis 214适合于AXE系统,并控制各种话务发生器。
2.4.1 SIGEN话务发生器SIGEN话务发生器220和现有的IGEN_原本和Autosis 214完全兼容。
2.4.1.1概述SIGEN命令分成两部分。第一组在SIGEN的工厂级别使用,用于建立和删除SIGEN事例(建立和删除)同时也用于打印SIGEN配置和状态(显示)。第二组在SIGEN事例级别上使用,用于在ISDN接入和DLB2线路之间建立模拟连接(联接和断开)。开头两个命令是在SIGEN级别,而后者是在SIGEN的每个事例上使用的,如图6所示。
2.5集团交换机仿真器2.5.1集团交换机仿真器概览仿真系统200环境下的仿真的集团交换机(SGS)模块230可以模仿集团交换机子系统(GSS)30的功能的一个子集。这种仿真在例如ISDN基本速率接入(BRAC)的自动功能测试中是需要的。
仿真集团交换机(SGS)230的主要目的是维护在集团交换机子系统(GSS)30的硬件中所建立的途径的信息。这种信息用来模拟由SIGEN所仿真的ISDN终端之间的端到端的信道和模拟在这些信道中的带内信令,也就是送出和收到的声音和数值。这是在ISDN BRAC功能测试中所用的基本手段以便验证被测试的ISDN业务和所建立(仿真)的连接。
GS仿真模块230主要考虑TSM 272和CLT 274块(见图4)。由于仿真系统200提供CP仿真器234来仿真CP 34和TSM 72、CLT 74的中心软件,同时由于其它GSS块是在仿真的CP 234上执行的,因此没有必要在SGS中仿真TSMU和CLTU的功能。图7A表示TSMU和CLTU功能是在CP仿真器234中执行的,并表示GS仿真230模拟区域软件(用于TSMR和CLTR)和硬件(用于TSM和CLM)。
2.5.2集团交换机仿真器的功能2.5.2.1内核的被动部分仿真的集团交换机模块230是内核231的被动部分。这意味着仿真的集团交换机模块230在其内部并不含有任何“进程”,因此它就不是内核231的分时策略的一个对象。仿真的集团交换机模块230只是在仿真环境中其它部分发出请求时,即从仿真的CP 34送出的信号、过程调用、以及低级别命令时才工作。仿真的集团交换机模块230的基本元件示于图7B中并在下面讨论。
2.5.2.2集团交换机仿真器的基本元件仿真的集团交换机模块230的基本单元(见图7B)包括命令解释器230-1;硬件配置230-2;TSMR信号接口230-3;CLTR信号接口230-4;TSMR仿真器230-5;集团交换机硬件仿真器230-6;途径仿真器230-7;以及CLTR仿真器230-8。
命令解释器230-1包括用于处理集团交换机硬件配置命令的例程。进入到主配置窗口(MCW)的命令是通过一个接插座而传送到内核231的,并由一个命令调度器传递给仿真的集团交换机230。
硬件配置230-2是一种功能,用于管理仿真的集团交换机的硬件,即存储分配和为控制它们的仿真TSM和区域处理器(RPS)建立数据结构。
TRMR信号接口230-3是一种功能,用于处理送至和来自TSMR仿真器230-5的CP-RP信号。这些信号是在内部分配到正确的区域处理器的。
CLTR信号接口230-4是一种功能,用于处理送至和来自CLTR仿真器230-8的CP-RP信号。
TSMR仿真器230-5是一种功能,用于仿真TSMR区域软件所需的元件。所有进入的信号都被接收,但是和连接的建立和取消无关的信号将导致哑响应。
集团交换机硬件仿真器230-6包含一些例程,用于仿真集团交换机硬件的各个元件-主要是TSM数据存储器。集团交换机硬件仿真器230-6由TSMR仿真器230-5控制。CSC和CSAB存储器含有和在实际TSM 72中严格相同的信息,而SSA和SSB存储着集团交换机中关于带内信令的信息,例如最近送出的声音和字节。
途径仿真器230-7是一种功能,用于分析在集团交换机硬件仿真器230-6中的途径,通过这些途径可以传播带内信号,也就是说,给出一个“说话方”MUP,本功能将找出连接的“接听方”MUP,并向它送出一个准音调。
CLTR仿真器230-8是一种功能,用于仿真CLTR区域软件的基本元件,例如维护CLM的状态。所有进入的信号都被接收,但大多数信号都导致哑响应。
2.5.3用于集团交换机仿真器的通用命令集团交换机硬件配置230-2包括建立和删除区域处理器232所用的命令。区域处理器232控制TSM72和CLT 74,并且控制用于打印仿真的集团交换机配置和状态的“显示”命令。用于集团交换机仿真器230的命令的位置示于图7C中。
2.6会议呼叫设备(CCD)仿真2.6.1会议呼叫设备仿真器概览仿真系统200的仿真会议呼叫设备(CCD)模块(SCCD)262(见图4)对CCD功能的那些元件进行仿真,这些元件是ISDN基本速率接入(BRAC)的自动功能测试所必需的。
仿真会议呼叫设备(SCCD)262的主要目的是维护关于在会议呼叫设备(CCD)硬件中建立的会议连接的信息和所产生的去往通过集团交换机而与CCD RW相互连接的用户线路上的声音信息。这个信息对于发送和接收像声音或数值这样的在B信道上的带内信令进行仿真是必需的,它是在BRAC功能测试中用来验证(仿真的)多方连接的基本手段。
仿真会议呼叫设备SCCD 262提供CCDR及会议呼叫设备(CCD)硬件的信号接口和选定的功能。CCDU是在仿真CP 234上执行的,因此它不是会议呼叫设备(CCD)仿真的对象。区域软件的仿真是必需的,因为仿真系统200并不为区域处理器提供仿真。会议呼叫设备仿真的范围示于图8A中。
由于SCCD 262同时包含了硬件和区域软件功能,如图8A所示,所以就没有必要去仿真在CCDR和会议呼叫设备(CCD)硬件之间的硬件接口(即EM总线)。仿真的CCDR直接在仿真的CCD HW的存储器上“运行”。RP总线的功能也被限制在简化了的CP-RP信号传递。
2.6.2会议呼叫设备仿真器的功能2.6.2.1内核的被动部分仿真会议呼叫设备(SCCD)模块262是仿真系统200的内核231的被动部分。这就是说SCCD 262在其内部没有任何“进程”,因此它不是内核231分时策略的一个对象。SCCD 262只是在仿真系统200的其它部分发出请求时(也就是说,从仿真的CD 234送出信号、过程调用和低级别命令时)才起作用。
2.6.2.2仿真的会议呼叫设备的基本元件仿真的会议呼叫设备(CCD)262的总体结构示于图8B中。SCCD模块262的基本元件是命令解释器262-1;硬件配置262-2;信号接口262-3;CCDR仿真器262-4;硬件仿真器262-5;以及会议仿真器262-6。
命令解释器262-1包括用于处理CCD硬件配置命令的例程。进入主配置窗口(MCW)的命令要通过一个接插口发送到内核231并由命令调度器传递到SCCD 262。
硬件配置262-2是一种功能,用于管理CCD硬件仿真器262-5,即为仿真的CCDS和控制它们的区域处理器分配存储器和建立数据结构。
信号接口262-3是一种功能,它处理送至和来自CCDR仿真器262-4的CP-RP信号。所有进入的信号都被接收,但那些与连接的建立和取消无关的信号将导致哑响应。
CCDR仿真器262-4是一种功能,它模拟区域软件的必需的元件,例如CCD连接的建立和取消,送出仿真的声音等。
硬件仿真器262-5包括用于仿真CCD硬件的各元件的例程-这主要是CCD数据存储器,它含有连接的状态、它们的衰减、最近连接的声音(韵律和频率)等等。
会议仿真器262-6是一种功能,用于分析在CCD HW仿真器262-5中的会议连接和把带内信号(例如模拟的声音)传播到它们的参加者去。
2.6.3会议呼叫设备命令图8C表示会议呼叫设备(CCD)仿真器262用的命令的位置。
2.7 STC仿真2.7.1 STC仿真器概览仿真系统200的STC(信号转移控制)可以仿真模块238模拟STC功能的一部分,这部分功能是对ISDN基本速率接入(BRAC)进行自动功能测试所需要的。在所说明的实施例中,STC模块是作为仿真系统200的内核231的一个整体部分而在SUN Sparc工作站上在solaris 2.5的控制下运行的。
仿真STC(信号转移控制)238的主要任务是为加载和与仿真的EMRPD 250的信号通信提供手段。STC是连接到区域处理器总线36上的一个特殊类型的区域处理器。在CP 34和EMRPD 50之间的信号转移(包括加载)要通过区域处理器总线(RPB)36、一对处理器STC 38和STR 58,和由STR 58控制的EMRP总线(EMRPB)(见图1A)。
在实际的AXE输入/输出系统中,每一对STC 38和STR 58是由SS7链路(ITU-T公共信道信令系统7号,级别2)连接的,正常情况下是基于一阶PCM连接。SS7链路启动远程用户级的控制。仿真系统200对这个链路不作任何仿真,因为在STC38和STR 58之间的位号可以用过程调用来转移。
图9A表示按照本发明的实施例的信号转移控制仿真器的范围。如图9A所示,STC模块238包括STCE(STC执行程序)和区域程序CLCR(控制信令链路中心)的功能仿真。STC执行程序为RPB格式和EMRPB格式之间的信号转换和在I/O转移的协助下EMRP(D)的加载的管理提供机制。它还为CLCR提供作业管理和程序执行的支持并提供RP维护所需的功能。
CLCR程序处理在信号发送、链路测试、和系统再启动时的SS7信令链路。CLCR和STCP及DCI硬件部件相互配合工作。
2.7.2 STC仿真器的功能2.7.2.1内核的被动部分STC仿真模块238是仿真系统200的内核231的被动部分。这就是说STC仿真器238并不包含任何伪进程,因此,它也不受内核231的分时策略的支配。STC仿真模块238仅在被仿真的环境的其它部分发出请求的情况下才动作,即,从仿真的CP 234和EMRPD 250(通过STR)发来的信号、过程调用、和用户命令。
2.7.2.2 STC仿真器的基本元件图9B所示的STC仿真器238的总体结构包括STC工厂238-1;STC命令解释器238-2;STC硬件配置238-3;RPB信号接口238-4;STR信号接口238-5;STCE仿真器238-6;和CLCR仿真器238-7。
STC工厂238-1是用于处理STC事例的一种功能。STC命令解释器238-2是用于处理定义STC事例的配置命令的一种功能。这些命令进入到主控制窗口(MCW),发送到内核231并由命令调度器传递给SGS 230。
STC硬件配置238-3是一种管理STC事例的配置的一种功能,该事例包括到区域处理控制器(RPH)的链路、到仿真STR的链路和由CP-RP信号初始化的地址变换表EMITAB、STCTAB和EMOTAB。
RPB信号接口238-4是一种功能,用于处理送至和来自STCE仿真器238-6的CP-RP信号。该接口涉及设备块信号、操作系统信号和I/O转移信号。从CP 234收到的信号在STC中端接或转移到STR。
STR信号接口238-5是一种功能,用于处理进入的或外出到STR仿真器258的信令。信号用过程调用发送或接收。在收发两侧都使用一个简单的以确认信号为基础的协议。
STCE仿真器238-6是一种功能,用于仿真STC执行程序的各种功能,主要包括把在CP 34和EMRPB 50之间转移的信号从RPB格式转换到EMRPB格式或其反向转换。该功能使用地址转换表EMITAB、STCTAB、和EMOTAB。
CLCR仿真器238-7是一种功能,用于响应由CLCU送到CLCR的CP-RP信号。它包括用于链路初始化、测试和阻断的信号。由于SS7链路没有被仿真,信号具有哑特性。
2.7.3 STC命令图9C是表明信号转移控制仿真器的命令位置的示意图。
2.8 STR仿真2.8.1概览STR仿真模块258模拟STR硬件部件58(见图1A)的行为。仿真是功能性的,这就是说,被仿真的是STR对外部信号的响应,而STC 58的内部工作情况则仅仅被仿真到所需要的程度。
如图1A所示,STR 58从EMRPB 56和STC 38接收信号。这些信号中的一部分由STR 58本身来处理,而其余信号则分别转送到STC 38和EMRPB 56。
图10A表示STR仿真器258和它的信号流。具体地说,图10A表明从STC 238来的信号被存放在输入缓冲linkin中并被转送到输入队列linkib。从这个队列每次取出一个信号并由STR执行程序去处理。从STC仿真器238来的信号可以被转向到STR仿真器258本身内部的一个模块,也可以进一步送到EMRPB 256。在后一种情况下,信号在复制到输出缓冲busout之前先在缓冲队列busob中排队。反过来,从EMRPB 256来的信号每次一个存在输入缓冲busin,然后再在busib中排队。然后由STR执行程序每次取出一个信号,在STR仿真器258内部处理,或者经过缓冲队列linkob和输出缓冲sndtab送到STC仿真器238。
为了使区域处理器能够独立运行,从EMRPB 256来的信号也可以立即返回到输出队列busob然后再到EMRPB(以及另一个区域处理器)。这一个功能仅在系统的其它部分发生误操作时才使用,以便区域处理器可以继续运行。
在目标系统(见图1A)中,STR 58和STC38之间的信号是用CCITT#7 2级协议发送的。在仿真系统中,这些模块之间的信号因此也在没有任何协议开销的情况下被缓冲。
在仿真系统中信号的发送和接收也得到了简化。信号的异步发送和接收已被同步的功能调用进行了互换。这样,信号是作为功能调用的参量而发送的。信号将在收到的伪进程下一次允许执行时被接收。不过,到EMRPB的信号要在STR仿真器258中排队并且逐一地送到接收方。
此外,总线管理、电缆选择、和CRC计算并不包含在所说明的实施例的STR仿真器258中。STR仿真器258的结构和它周围模块的合作按照图10B所示的原则进行。
2.8.2 STR仿真器的功能2.8.2.1内核子系统STR仿真器258模块是作为仿真系统200的内核231中的一个子系统而实现的,并作为一个伪进程独立地执行。因此,它从EMRP和STC仿真器238取出进程并传播信号。这些都是从队列中和缓冲中取出的、这些进程是由周围的模块在它们执行时放在那里的。
2.8.2.2分配10C表明STR仿真器258是怎样和EMRP 250和STC仿真器238通信的。STR仿真器258向EMRP客户提供一个外部可调用的功能接口,客户则反过来为STR仿真器258规定和功能指针的连接点。与此相似,STR仿真器258向STC仿真器238提供和功能指针的连接点。
2.8.2.3接口朝向STR仿真器258的接口有三部分。这三部分包括由STR仿真器258定义的功能(见2.8.2.4节);由EMRPB客户提供的功能(这些功能在客户联结到STR时被定义)(见2.8.2.5节);以及,由STR仿真器258向STC仿真器238提供的功能(这些功能在STR仿真器258作为客户联结到STC仿真器238时被定义)(见2.8.2.5节)。
2.8.2.4由STR仿真器定义的功能下列功能由STR仿真器258定义STR_Attach TO EMRPB本功能把客户附着到EMRPB上并把指针转移到能使STR控制它的客户的功能上。
STR_ToServer本功能在客户需要向STR发送数据时使用。信号必须用STR_CreateEMRPBData建立,数据必须由服务器解除分配。
下面三个功能分别是建立、删除和复制EMRP数据用的帮助功能STR_CreateEMRPBDataSTR_DestroyEMRPBDataSTR_CopyEMRPBData2.8.2.5由EMRP客户提供的功能由客户提供的功能定义如下(这些功能并不一定要保持下列名字)STR_ToClient这是在把数据送到附属客户去时所用功能的指针。数据由服务器解除分配。
STR_ResetClienT这是指向用于复位客户的功能的指针。
STR_BlockClient这是指向用于对客户加锁/开锁的功能的指针。
2.8.2.6向STC仿真器提供的功能STR_FromSerrer功能是由客户提供的功能,但不一定要保持此名字。
2.9 ST20C仿真被仿真的接入处理器(此后称之为ST20C 251)具有能对目标处理器完全仿真的指令和寄存器。这使得目标模块既能对控制系统也能对应用程序进行加载和执行。ST20C仿真器251和连接的设备在逻辑级别上相互作用。
2.9.1目标ST20C的主接口图11A提供了一个系统概览图,它的重点在于在目标系统即AXE-10中用于BRA的ISDN控制信号流。图11A表明有三个主要的ST20C 251接口。第一个接口是EMRPB 56,这是把EMRPD 50连接到CP 34的总线。第二接口是DEVCB,是控制所附属的设备板的设备处理器总线。第三接口是EMRPD BB,是ST20C微计算机的局部总线的延伸。这些接口在下列各段中将详细说明。
2.9.1.1目标ST20C用的EMRPB接口EMRP 50和中央处理器(CP)通过STR-STC信令技术对进行通信。STC 38连接到区域处理器总线(RPB)36并负责将带有RP/EM地址的区域处理器信号转换成带有EMRP地址的EMRP信号。STR58是EMRPB56的总线主控器,该总线把所有EMRP50都连接到STR 58因而也连接到CP 34。EMRPB 56是双总线,所有EMRP 50连接到两根总线,每根总线各有一个STR 58。
EMRPB 56使用一个具有比特取向的协议的同步点到多点总线。每个EMRP50具有一个范围在0到31之间的独特地址,这是用连接在EMRP50的前面插件上的地址插头来选择的。
STR 58通过向每个EMRP 50的地址顺序地送出查询信号而轮流地查询所有的EMRP 50。当某址被选中时,该EMRP 50如果有某些东西需要送出就用一个发送请求信号来响应。在主控器和选中的EMRP 50之间经历某些信号交换之后,EMRP 50就可以送出它的信号。
如果STR 58需要送出信号到一个EMRP 50,则它暂时停止查询过程并用目的EMRP 50的地址送出信号。
STR 58也可以用一个特殊的广播地址向所有的EMRP 50送出信号。
EMRP 50每次只能在总线的一侧接收和发送信号。具体用哪一侧可以由STR 58以EMRP/STR协议的较高级别来设置。
为了阻断或复位EMRP50,STR 58发出一个特殊的信号事项。
可以在EMRPB 56上传输的一帧中的最大数量是64字节。
2.9.1.2目标ST20C用的DEVCB接口ST20C 51和它附属的设备处理器(DEVPS)通过一个称为DEVCB的总线进行通信。这是一个异步半双工串行总线,这里ST20C是主控器。
在ST20C 51上,使用了一个门阵列LCA-DEVCB来实施DEVCB接口的主控侧。这个单元包括三个主要部分扫描器、接收器和发送器。
正常情况下,扫描器通过证实各设备的地址来逐一地对所有设备寻址。如果附属设备中的某一个有东西要发送,它确立一个标志信号。这使得总线控制器产生一次中断。如果相应的各种条件都能满足,则ST20CCPU送出一个继续进行的信号并等待从被动侧送来的供接收的信号。
当被动侧收到了继续进行的信号时,它可以送出它的信息。主控器对每个收到的字节都产生一次中断以使CPU去读出该收到的字节。信息的传送由定时器监控,如果信息中的下一个字节来得太晚或已丢失,则产生一次中断。
从主控侧向被动侧发送信息是通过对设备寻址并逐个字节发送信息而完成的。这个过程也是由中断驱动的。
设备可以通过确立它的地址并在总线上确定一个复位信号来使其复位。
2.9.1.3目标ST20C的EMRPD BB接口EMRPD BB实际就是CPU总线的一个延伸,这使它能够向附属于这个总线的外部板发出常规的存储器访问。
2.9.2 ST20C仿真在本节中把重点收缩到ST20C本身并且叙述它的体系结构。另外,这个体系结构和被仿真系统的结构之间的映射也在模块的级别上描绘。
2.9.2.1 ST20C的体系结构11B表示信令终端ST20C的主要部件以及这些部件的连接。
2.9.2.2 ST20C对其仿真的映射被仿真的ST20C 251是按照图11C组织的。ST20C在大多数方面反映了图11B的硬件体系。不过,根据仿真器的需要,仿真细节的级别可以在不同的ST20C部件之间有所不同。这在以下各节中将进一步叙述。
2.9.3 ISS 68020(ST20C微计算机的指令级别仿真)ST20C是以摩托罗拉(Motorola)68020微处理器为基础的。指令级别的仿真支持一个完整的指令集,同时还支持由微处理器提供的执行模式、中断和包括硬件复位在内的异常处理。
ISS 68020是以性能优化的体系结构为基础的,它完全实现了摩托罗拉68030微处理器的指令集,包括完整的MMU仿真。
2.9.4基本原理ISS 68030的一个重要原理在于它的译码和调度技术。这也是有助于它的速度的一个关键特性。这同一个原理也用于ISS 68020中。这个技术按如下方式工作。指令代码(实际上是开头的16比特)被用作为对调度表的索引,该调度表含有SPARC代码序列的地址。这些代码序列模仿M680XO指令的行为,从而具有和解释这些指令相同的效果。这可以有效地避免所有不必要的开销。但是,当访问内存时,就必须由特殊的功能进行有效地址的计算。另外,代码序列是从M680XO指令的语法和语义的描述而产生的,仿真代码是被自动地收集到表中的。
图11D说明了使ISS 68030适应于在ST20C环境下的ISS 68020的需要的情况。
2.10线路接口板仿真
2.10.1主要接口图12A提供了在一个以AXE-10为范例的特定目标系统中用于BRA的ISDN控制信号流(D信道)的概览图。具体而言,图12A表示有5个BRA设备板组合的主要接口。第一个接口是DSS1,即用户线路接口。第二接口是DEVSB,是用于在设备和时间开关之间交换数据的总线。第三接口是DEVCB,是控制附属设备板的设备处理器总线。第四接口是EMRPDBB,是ST20C微计算机的局部总线的延伸。第五接口是称之为“测试总线”的测试设备接入总线。这些接口和设备板将在下列各节中详细说明。
2.10.1.1电路板DLB2-5U(ROF 1377828/1 R7B)电路板DLB 2-5U实现用户线路接口。电路板DLB2-5U提供4条用户线路。在电路板DLB2-5U上只实现层次1(物理层)的功能。这些层次1的功能是NT(网络终端)的电源馈送;2B IQ转换;B-和D-信道比特流的在比特层次上的多路复用/多路分解;以及语言总线接口。设备处理器控制该电路板并执行由EMRPD通过DEVCB下达的各种任务。
2.10.1.2时间开关TSW3时间开关实现在数字用户级的时间切换功能。该电路板包括一个设备处理器,它主要操纵两个软件单元TSD和CDD。在设备处理器和EMRPD之间的信令通过设备控制总线(DEVCB)来完成。TSD和CDD使用两个独立的DEVCB身份。
2.10.1.3信令终端板ST641ST641是一块信令技术电路板,用于端接多达64个D信道的朝向ISDN基本速率用户接入的层次2的信令数据话务和去到及来自中央处理器的被传送的数据,ST641用ST20C的底板总线接到ST20C,并由设备语言总线(DEVSB)接到时间开关。
2.10.1.4 DEVCB(设备控制总线)ST20C通过一条叫做DEVCB的总线和它所附属的设备处理器通信。这是一个异步半双工串行总线,这里ST20C是主控方。
2.10.1.5 EMRPD BBEMRPD BB其实就是CPU总线的延伸,这使它能够向附着在这一总线上的外部电路板发出正常的存储器访问。
2.10.1.6 DEVSB(设备语言总线)DEVSB是一个PCM总线,它把时间开关和一系列设备相连接,这些设备可以是任何一种单独地直接连接到DEVSB上的硬件。
2.10.1.7测试总线通过在DLB2-5U上的测试接入继电器的操作,可以把一条线路从用户方断开并连接到一个用于对线路或电路板进行测量的测试接入总线。
2.10.2设备板仿真器概览对BRA设备板进行仿真的目的是提供一种能被仿真的话务发生器(SIGEN)220所利用的接口。这个接口支持并模拟考虑到硬件配置的DLB2-5U线路接口,也就是考虑到板的位置和电路板实现的是4个线路接口中的哪一个接口。这个接口只支持传输LAPD层次2的D信道帧的内容,即相当于在用户侧和交换设备之间的、在打开标志和关闭标志之间的8位字节流(没有比特填充)。
一个进入的帧被赋予一个时间片号码,它和在分配给实际电路板位置的PCM帧中所用的哪一根用户线路有关。实际电路板的位置是在仿真系统200的内核231的配置阶段定义的。
为了支持集团交换机的仿真,被仿真的集团交换机230,即设备板仿真器(DBS)提供一系列功能以便通过设备板组合来解决B信道的途径问题。图12B表示通过实现DBS的软件的数据流。DBS并不模拟PCM链路。途径是根据时间片的赋值来分析的,通过设备板组合可以使含有LAP-D帧的缓冲器从它的源移动到它正确的目的地。
2.11 SIGEN话务发生器SIGEN话务发生器220(见图4)能在仿真系统200中进行ISDN基本速率接入的自动功能测试。SIGEN 220可以执行以IGEN原本语言编写入的测试案例(CP或控制程序)。SIGEN 220既可以从类似于IGEN的命令窗口提供局部控制,也可以从AUTOSIS提供远程控制。
从功能上说,SIGEN 220是现有的AXE系统所用的话务发生器即IGEN的等同物。两个程序都能够运行同样的基本速率接入测试,且它们的容量是完全相同的。唯一的差别在于主机和目标的环境。IGEN在PC机上运行并用于测试实际的AXE系统,而SIGEN 220在SUN SPARC工作站上运行并用于在仿真系统200上执行的测试AXE软件。AXE仿真器也运行在SUN工作站上。
2.11.1话务发生器概览一般说来,SIGEN 220有两个主要部分即SIGEN-FRONT(它是SIGEN220的通信部分),和SIGEN-ENGIN(它是SIGEN 220的执行部分)。
SIGEN-FRONT为编辑、加载、和执行ISDN功能测试提供全部必要的与用户有关的功能。FRONT是作为一个独立的UNIX进程而实现的。在FRONT中实现的用户接口和IGEN中现有的接口是相似的。FRONT还对AUTOSIS 214提供一个接口,即具有AIG(AUTOSIS IGEN驱动器)的TENUX信道。为此目的提供了一个辅助UNIX进程,即TIF。
SIGEN-ENGIN是SIMAX 96的内核231的一个整体部分,它和SIGEN-FRONT通过一个接插口通信。ENGIN是一个模块,它编译并执行用IGEN原本编写的功能测试,并提供为执行测试所需要的所有的ISDN协议(DSSI)的元件。具体说它实现完整的LAPD(层次2)协议。
有可能动态地在一个仿真系统200中建立一系列的SIGEN事例,这相当于若干台正运行IGEN的PC机连接到一个AXE装备中。SIGEN事例,和仿真系统200中所有其它元件一样,是按照由进入到公共的命令窗口的配置而建立的。
2.11.2接口SIGEN 220的图形用户接口(SIGEN GUI)包括一个X窗口,这个窗口包括SIGEN主菜单、用户命令条、信号和出错登录窗口、访问和CIN状态板、计数器监视板。为了在现有的IGEN和SIGEN之间达到完全一致,SIGEN窗口的布置和IGEN的窗口布置是非常相似的。SIGEN GUI的方案示于图13A中。如图13A所示,主菜单含有加载和执行原本的命令,同时也含有与AUTOSIS 214建立连接的命令。
和IGEN不同,原本编辑功能是放在SIGEN窗口以外的,亦即原本的编辑是在一个分开的窗口中完成的。这给SIGEN的用户提供了一种自由,可以使用任何在SUN OS下可以使用的文字编辑程序,例如emacs、vl、或textedit等。
在许多情况下,AUTOSIS 214和仿真系统200环境可以在同一台工作站上运行。在这些情况下,TCP/IP的物理和数据链路层是不需要使用的,这当然会提高TIF-AIG通信的总体效率。
仿真系统200为内核231的不同部分的配置和管理提供了一个统一的命令界面。仿真系统200的用户可以把命令送入主配置窗口(MCW)。命令是按分层结构安排的,这种层次可以在建立内核模块的新的事例时动态地重新安排。
SIGEN命令分成两部分。第一部分是用于建立和删除SIGEN事例的(“create”和“delete”),而第二部分则用于在SIGEN ISDN接入和DLB2线路之间建立仿真的硬件连接(“cables”)(“connect”和“disconnect”)。第一部分的两个命令是在SIGEN层次上的,而后者可在每个SIGEN的事例下使用(有关命令说明的更为详尽细节见2.11.3节)。
2.11.3命令SIGEN命令分成两个基本的组。第一组用于建立和删除SIGEN事例(“create和delete”),而第二组则用于在ISDN接入和DLB2线路之间建立模拟的连接(“connect”和“disconnect”)。第一组的两个命令是在SIGEN层次上的,而第二组则可在每个SIGEN事例下使用。
现在说明SIGEN命令的使用。建立新的SIGEN事例按以下方式完成FW.SIGEN>create SIGEN_name与此相似,去除SIGEN事例的方式如下FW.SIGEN>delete SIGEN_name为了在SIGEN事例的级别上访问命令,必须由用户送入事例的名字。然后命令提示符会改变以表明当前的事例FW.SIGENS SIGEN_nameFW.SIGEN.SIGEN_name>
为了在SIGEN接入和DLB2线路之间建立仿真的链路,用户应该送入“connect”命令并附有DLB2板的名字、线路号码和接入号码FW.SIGEN.SIGEN_name>connect DLB2_name line access为了取消在SIGEN接入和DLB2线路之间的仿真链路,用户应该送入“disconnect”命令并附有接入号码FW.SIGEN.SIGEN_name>disconnect access通过利用带有ALL(全部)参数的“disconnect”命令也可以把SIGEN事例的所有已建立的链路全部取消FW.SIGEN.SIGEN_name>disconnect ALL按照公共的仿真系统200内核规则,SIGEN还提供“show”命令,它打印有关SIGEN事例的信息FW.SIGEN.SIGEN_name>showFW.SIGEN.SIGEN name>……SIGEN info printout
在表I中,给出了包括一个名叫“TUBORG”的SIGEN事例的建立、配置和取消的命令对话的样本。“up”和“top”是在命令层次中任何一个级别上都可以使用的标准命令。
表I命令对话样本FW>...
FW>SIGENFW.SIGEN>
FW.SIGEN>create TUBORGFW.SIGEN>TUBORGFW.SIGEN.TUBORG>
FW.SIGEN.TUBORG>connect DLB2-ONE 10FW.SIGEN.TUBORG>connect DLB2-ONE 21FW.SIGEN.TUBORG>connect DLB2-TWO 02FW.SIGEN.TUBORG>showFW.SIGEN.TUBORG>... TUBORG info printoutFW.SIGEN.TUBORG>upFW.SIGEN>...
FW.SIGEN>...
FW.SIGEN>TUBORGFW.SIGEN.TUBORG>
FW.SIGEN.TUBORG>disconnect 0FW.SIGEN.TUBORG>disconnect 1FW.SIGEN.TUBORG>disconnect 2FW.SIGEN.TUBORG>upFW.SIGEN>...
FW.SIGEN>delete TUBORGFW.SIGEN>topFW>...
2.11.3.1打印输出为了提供和现有IGEN的完全的兼容性,由IGEN所产生的所有打印输出的内容和格式都将保留不变。SIGEN的打印输出或者送到SIGEN窗口(直接模式)或者送到AUTOSIS窗口(远程模式)。
有关内部出错和系统配置出错信息将通过主控制窗口中的报告管理程序打印输出。
2.11.3.2数据和操作SIGEN的数据结构的概貌在图13C中提供。
3.0功能说明3.1总体说明如上所述,仿真系统200在一台主计算机系统上运行以模拟一个目标电信系统。仿真系统包括仿真内核231,它含有多个仿真子系统,每个仿真系统相应于目标电信系统的子系统。
3.2目标机如上所述,这里所说明的目标系统的例子是AXE APZ 212 20。
3.2.1指令集目标系统的全部指令(例如APZ 212的各指令)都被仿真。这构成了下列指令组从存储器读出的指令、写入到存储器的指令、寄存器指令、算术指令、移位和逻辑指令、跳转指令、信号传送指令、用于结束程序的指令、搜索指令、FOR循环指令、从存储器读出的OS指令、写入到存储器的OS指令、区段转移的OS指令、寄存器处理的OS指令、送出信号的OS指令、特定的CPS目的的OS指令、特定的MAS目的的OS指令、以及其它OS指令。
3.2.2寄存器APZ 212 20处理器在寄存器存储器(RM)中含有4组192个32比特的寄存器,每个优先级别TRL、THL、CL和DL各有一组。每一级中只有64个寄存器可以由常规软件直接编址。剩下128个寄存器只能由微程序或由特定的操作系统指令操纵。另外还存在224个由4个优先级跨级共享的寄存器。
64个32比特的寄存器的情况如下1个变址寄存器(IR)、2个指针寄存器(PR0、PR1)、1个比较寄存器(CR)、2个符号翻译寄存器(SR0、SR1)、24个信号数据寄存器(DR0-DR23)、4个算术寄存器(AR0-AR3)、30个工作寄存器(WR0-WR29)。许多在软件中不能直接访问的寄存器可以用OS指令XMOV或XRRM/XWRM来访问。
为微程序保留的各寄存器中有一个寄存器是结果表示寄存器(RIR),它可以用XMOV OS指令从ASA被直接访问,但通常情况下当进行分支时(例如用JOR或JZR)只作测试之用。它是一个简单的标志寄存器,它在算术指令完成后起进位标志的作用,在逻辑指令完成后用作为零标志,而在移位指令完成后起“精度损失”的标志的作用。
3.2.3信号改变执行流可以用两种方式之一来完成局部跳转和信号。局部跳转只能在同一个程序块中进行。局部跳转还可以使用“跳转局部链接”指令而起到‘调用子例程’的功能。这些类型的跳转在其它CPU如SPARC这样的CPU中是众所周知的。
APZ 212指令集并不包括间接跳转,但含有用于C类型开关功能的“由寄存器/存储器变址的按表跳转”的结构。
用跳转不能实现跳转到别的程序块去,这时必须利用信号来实现。(如果块号和当前块号相同的话,信号也可以用来实现局部跳转)信号和跳转相似,但它不是规定在同一程序块中的新的偏置值,而是规定一个信号。从一个程序块只能送出固定数量的信号而且必须列出在位于程序块前面的信号发送表中。根据信号指令的类型,可能会发生下列事情之一-信号被立即发送去程序的执行在目的地立即继续下去。信号可以用链接方式送出而使程序的执行返回到送出信号指令之后的那条指令。
-信号可以进入一个作业缓冲区以便以后发送。
为了能够找到信号的目的地,要在全局信号分布表中查找各个信号。
当信号被送出时,它最终要变换成一个块号和在接收块中该信号的入口点的偏置值。
3.2.3.1全局信号分布表当一个程序块装入到程序存储器87时,信号分布表和信号发送表就合并到全局信号分布表中。每个信号也赋给一个全局信号号(GSN)。
如果信号只能被单独一个程序块接收,则它进入独特信号用的全局信号表(GSDT-U)中。如果信号可以被若干块接收,则它进入多个信号用的全局信号表(GSDT-M)中。这个表有一个阵列,它列出能够接收该信号的各程序块。当送出一个信号时,在这个阵列中搜索目的地址。全局信号分布表是IPU(指令处理单元)80中的一部分。
3.2.4作业缓冲区作业缓冲区用来存储已经送出但尚未被程序块接收的信号。这种情况发生在送出信号的指令要求它被延迟一个特定的时间段的时候,或者是信号已被放在一个特定的作业缓冲区时。作业缓冲区被定时扫描,这个时间是每当收到CP-CP或RP-CP信号时以及当程序执行结束时。如果信号已经到了要被送到它们目的地的时间,就把它们从作业缓冲区取出并发送。APZ 212 20 CP含有9个作业缓冲区,按增加的优先级为序分别是DL、CL、THL3、THL2、THLI、TRL3、TRL2、TRL1、和MAL。这些作业缓冲区按顺序扫描。如果高优先级的作业缓冲区中含有尚未送出的信号,则在扫描较低优先级的作业缓冲区之前它们先被送出。作业缓冲区是信号处理单元(SPU)84的一部分。
3.2.5存储器如前面结合图2所述,下列三种存储器构成了主存储器参考存储器(RS)88;程序存储器(PS)87;和数据存储器(DS)89。在APZ21220,DS和RS两者都存放在数据参考存储器(DRS)。参考存储器含有指向当前程序块中程序起始地址的指针和指向变量的指针(基地址)。这些指针能使CP 34找到目的地址。从程序块到跳转目的地和变量的所有参考值都是相对地址。CP 34使用参考存储器88以找到在主存储器中的实际地址。这使它实际上不可能访问并不属于本程序块中的数据/代码。和其它程序块交换信息的唯一方法是通过信号。
3.2.6优先级别中央处理器34每一时刻执行单独一个程序,但是可以在它收到一个中断时切断‘上下文’。切换可以在5种不同的优先级别上进行1.MFL(误操作级)-最高级2.TRL(跟踪级)包括TRL1、TRL2和TRL33.THL(话务处理级),包括THL1、THL2、THL34.CL(C级)5.DL(D级)-最低级作业只能被更高优先级的信号所中断。程序通常情况下在THL和CL级执行。APZ测量在TRL级发生。硬件出错的情况在MFL级处理。DL是用于特殊的非常低级别的进程的。MFL并没有它自己的寄存器组。
3.2.7字节存放次序(endianness)和SPARC是小次序(little-endiad)不同,APZ 212的体系结构是大次序的(big-endian)。由于APZ指令编址模式的性质,尽管程序存储器87要按小次序来实现(按照16比特编址),目前不能期望这将导致任何性能上的损失。
3.3主机如前所述,主机是一台SUN SPARC工作站。参见The SPARCArchitecture Manual(SPARC体系结构手册),SPARC International,第8版,Addison-wesley(1992),以了解这一结构的说明和提供的指令集。所有SPARC指令都是32比特,但(合成)指令集是例外,它们可能是32或64比特的。
3.4执行模型如在图3A中以原理图显示的那样,主机110的RAM 130含有一系列的例程和区(例如段或表)。举例而言,目标目的代码区132,也称为目标指令存储器,用于存放为目标处理器编码的已编程的指令。存放在RAM 130的目标目的代码区132中的目标指令一般是从一个外部存储介质(例如通过I/O存储设备120)而得到的,并按照需要经过转送(例如经过高速缓存)而进入RAM 130。所谓“为未加说明的目标处理器而编码的”的意思是目标指令是按照目标处理器的指令集而格式化的,也就是说,目标指令是使用目标处理器的指令集作为汇编级别指令编写的。存放在目标目的代码区132中的目标指令是用来使目标处理器执行特定的活动和/或得到特定的结果的。不过,像在下面所说明的,存放在目标目的代码区132中的目标指令被改由主计算机110翻译成为主计算机110能够理解的指令以试图完成相同的特定活动和/或得到特定的结果。
在RAM 130中还含有各种由主处理器112执行的已编程的例程,包括仿真/模拟监控例程(ESB)133、解码例程134、翻译例程135、以及仿真执行例程136。此外,RAM 130还在其中存放了跳转表140和仿真指令存储区142。
图14表示仿真监控例程是如何协调把目标目的代码翻译成仿真指令和由主机执行仿真指令的流水线式操作的。简单地说,当仿真监控例程确定应该是从目标目的代码区132取出指令的时刻时,解码例程134就对被取出的目标指令进行分析。解码例程134知道目标指令集的结构,分解取出的目标指令并确定它的类型,例如,该取出的指令是否为把两个寄存器内容相加的“加寄存器”指令,或是否为把一个寄存器的内容移到另一个寄存器或地址的“移动”指令,等等。对取出指令的分析的前提是解码例程134要理解目标指令集的预先规定的操作码和它的区段。利用由解码例程134所进行的分析,翻译程序135建造出一组仿真指令以便存储在仿真指令区142。存放在区142中的仿真指令按主机处理器112的指令集进行格式化。根据取出的目标指令而产生的仿真指令被构造成能使主机处理器112实现如目标处理器在执行该取出的目标指令时所实现的相同动作。仿真执行例程136从区142得到仿真指令以供主机处理器112去执行。当仿真执行例程136确定需要有更多的仿真指令去填充进仿真指令存储区142时,就给翻译例程135产生一个中断,如图14中的线150所示。作为对这一中断的响应,更多的目标指令被取出、解码、并翻译以提供给仿真指令存储区142。
这样,目标处理器指令被动态地翻译成主机指令。这种翻译是按目标指令的序列而进行的。目标指令的这些序列存放在代码缓冲存储器142中。翻译是“在空中”进行的。主机指令被存储并供以后执行时重复使用。当执行返回到一个给定点时,指令已经翻译完成。这意味着主机代码是以一种连续流动的方式执行的,并且在主机系统中没有因高速缓存的充溢和流水线的中断而降低执行速度。在翻译过程中执行流是径直进行的。
本发明的一个重要方面是将取出的目标目的代码翻译成为可以由主机处理器112执行的仿真指令。
在这方面,更详尽的有关翻译模式的讨论将在下面提供,这包括跳转表140的设计和使用。
一个跳转表具有指针项,用于在翻译指令存储器中找到翻译指令集以便为每个不同类型的目标指令产生能由主机执行的仿真指令。
在节3.4.1中有更详细说明的一个实施例中,跳转表中每个指针项都有一个项的长度,它不大于最短的目标指令长度,因此能使跳转表去处理指令长度不均匀的目标指令。
在另一个实施例中,其中的目标指令包括目标指令的若干块,块中含有信号处理目标指令,这时跳转表增设一个跳转表影子存储器。跳转表影子存储器有多个跳转表影子表,每个跳转表影子表和具有信号处理目标指令的多个程序块中的一块成为一对。每个跳转表影子表有一个跳转表项的复本,这个项和被包含在一个块中的信号处理目标指令相关联,而这个块则是和跳转表影子表相配对的。当要编译目标指令的一个指定块时,主机处理器就编译对应于指定块的跳转表的一部分和由指定块所产生的信号所调用的任何其它块所需的跳转表影子表。这个实施例在3.4.3节中说明。
在另一个实施例中,它在3.4.4节中有更详细的说明,跳转表存储器划分成若干段,它们相应于存储在目标指令存储器中的块。跳转表存储器中被选中的段按照最近被利用程度的判据是不压缩的,而未被选中的段则被压缩。
3.4.1有可变宽度指令的跳转表图15表示按照本发明的一种模式的在目标目的代码区132、跳转表140、和存放翻译例程的翻译指令区135之间的相互关系。如图15所指出的,存放在目标目的代码区132中的目标指令具有不同的指令长度。例如,目标指令310是4字节指令,目标指令312是2字节指令,而目标指令314则是4字节指令。因此,在所说明的实施例中,最短的目标指令长度是2字节。
每一条存放在目标目的代码区132中的目标指令必须翻译成为称作仿真指令的指令,它们在主机处理器112上是可执行的,以便主机处理器112能够实现如目标处理器在执行目标指令时相同的作用。为此,翻译例程135对于每种类型的目标指令都包含一组翻译指令以产生仿真指令。例如,翻译例程135含有一组翻译指令320,它们适合用来按照目标指令310所属的目标指令类型来建立一组仿真指令330。作为另一个例子,翻译例程135含有一组翻译指令322,它们适合用来按照目标指令312所属的目标指令类型来建立一组仿真指令332。
在指令翻译过程中,有必要在翻译指令区135中找到适合于建立仿真指令以便存放在仿真指令存储区142中的特定的翻译指令组(例如320或322组)。为此就要使用跳转表140。如图15所示,跳转表140有多个时间片或项340(1)到340(n)。跳转表140中的每一项340的长度为SL,它不比最短的指令长度更长,也就是说,在本实施例中为2字节。
每个在目标目的代码区132中的目标指令被解码例程134取出并解码后就被赋以一个指针,该指针指向在区135中的翻译指令组,它可以用来建立相应的仿真指令组。例如,项340(3)含有对于目标指令310的指针,该项340(3)的指针访问在区135中的翻译指令组320的地址。与此相似,项340(5)含有对于目标指令312的指针,项340(5)的指针访问区135中的翻译指令组332的地址。每个指针都存放在跳转表140中的一个独特的位置。实际上,跳转表140和目标目的代码区132是这样设计和编址的,它使目标目的代码区132中目标指令的地址可以用来获得在跳转表140中的相应指针的地址。具体地说,跟随在目标目的代码区132中的目标指令之后的字节地址当被在跳转表140中各项的标准长度SL相除之后,就产生在跳转表140中的相应指针的项号。例如,在所说明的实施例中,目标指令312(它结束于区132的地址10上)的指针是存放在跳转表140的项10/SL=10/2=5上。
这样,图15的实施例的跳转表140的结构使得利用可变的、也就是非均匀长度的目标指令变得容易,但仍然保持一个有效的变址方式来确定目标指令在跳转表140中的指针项。这是通过给跳转表140提供一个与最短的目标指令的长度是同长度的分隔度而完成的。但是,跳转表140中的每个项仍要求足够长以使它能够包括它所指向的在区135中的翻译指令组的地址。因此,跳转表140必须具有该目标程序两倍的长度,这个目标程序的目标指令是存放在目标目的代码区132中的。对于某些应用来说,跳转表140的大小将因此而大得无法接受,从而要求有一个或更多的方法来减少跳转表140的大小,这将在下面叙述。
3.4.2混合执行模型图19A说明了本发明的一个实施例的混合模型的各方面。图19a的模型合并了公共执行线程模型的优点和在线模型的优点。具体地说,混合模型实现了跳转目的地址的快速计算和有效地处理从目标到主机代码的程序计数器计算,而这些是纯线程模型所提供的。混合模型也达到了纯在线模型所提供的速度上的优势。
图19a的混合系统是在目标目的模块900通过跳转表910和仿真代码区912相互作用下实现这些优点的,这个跳转表910含有相关的跳转表指针910(1)到910(n)。目标处理器指令是动态地“在空中”翻译成为仿真代码的。但是翻译是按目标指令成块地完成的,这些目标指令块是可连续地执行而无任何跳转的。在这种方式下,主计算机能够按连续流执行代码而不会有不合适的流水线断裂。
然后仿真代码912在线地、连续地执行,如图19a所示。这就是说,仿真代码能够在没有仿真代码912(1)到912(n)的各块之间通常的连接指令的情况下执行。这保证了主计算机能够快速地执行仿真代码,除了在例如地址翻译、中断或断点这样的情况下,不会打断可执行仿真指令的流水线。
如图19b所示,连续的主机代码仿真块断裂成为在线的块以便节约连接指令。在图19b的举例的实施例中,每个编译块的边界可以通过查验流动控制指令来确定。当执行到达一个未经编译的目标指令时(这一般发生在进行分支时)就开始递增编译。该块被编译一直到达到一个分支并在该块内部的一个分支处停止。这种产生方式可得到一个在分支的目的地址上开始和结束的仿真代码块。
编译图19b中的选定块的示例性规则为1.在分支目的地处的第一条指令使一个块开始,除非该指令已经编译。
2.该块继续往前直到碰到第一个分支指令,但以下情况除外2.1如果分支是往回走到当前块的,则该块并不停止而继续编译。
2.2局部的(例如小于一个页面的大小)的向前分支并不使该块停止,除非在向前的分支和向前分支的目的地址之间有另一个分支而它又不适用于规则2.1和2.2。
3.在条件分支之后的第一条指令也是一个块的开始。
这些规则可以简化成下面两条而不会在实践中损失效率1.分支目的地址的第一条指令是一个块的开始,除非该指令已被编译。
2.该块继续进行直到第一个非条件性分支为止。
例如,在图19b中,在分支处的第一条指令是可执行块920的开始,而第一条非条件性分支指令使其结束。根据这两个分支,块920被定义并存放在仿真代码缓冲区912。下一个块921开始于第一分支并延续到指明的“分支出”。请注意,在块921中,中间的“分支返回”并不结束块921,因为这个“分支返回”是往回分支并且也进入当前块中,因此它可以在仿真代码中执行而没有跳转到外面去或流水线中断的情况。块921的“分支返回”因而是符合上述规则2.1的,因为它并不结束块921。
图19b的块922按照上述的规则3开始于“分支入”而结束于条件“分支出”。在这两个分支之间,块922还包括一个短的“向前分支”,由于它的相对的大小它并不结束块922,如规则2.2列出的那样。请注意这个规则会导致对代码924的编译,这个代码在向前分支指令之后一直到向前分支返回到指令的那一点之间是不被执行的。同时,“条件分支”按照规则3结束并开始块922和块923。
3.4.3跳转表影子图3B的主机系统410实现了在它的跳转表440中只用少量的项。图3B的主机系统410与上面参照图3A而说明的主机系统110相似,只有在这里所指出的那些不同之处,例如,以不同符号表示的组成元件。主机系统410和主机系统110之间一个主要的差别是在主机系统410的RAM 130中提供一个跳转表影子区444。跳转表440和跳转表影子区444的使用将参考图16来说明和解释。
图3B的主机系统410特别适合于分组成为若干块的目标指令,其中至少有某些块含有信号处理目标指令。例如,为了简化起见图16的目标目的代码区130被表示成在其中存储着一个块510A。组成块510A的是各种不同的目标指令,其中包括用于处理第一信号的目标指令的组512(1);用于处理第二信号的目标指令的组512(2);以及用于处理最后一个信号的目标指令的组512(n)。如前面所解释的,一个“信号”是从代码的一个块送到另一块的消息。信号包含一个信号头和一个信号体。信号头含有发送块的识别符和接收块,同时还有信号的号码或类型。信号体含有接收块在执行该信号时要用到的数据。这样,在图16所示的例子中,块510A可以接收从第一到最后一个信号中的任何一个,在这种情况下块510A必须被编译和翻译。此外,块510A也可以产生要送到别的块去的信号。
如从前面所了解的,在块510A中的每个目标指令(包括包含在组512(1)到512(n)中的信号处理目标指令)具有存放在跳转表540中的相应指针,利用这些指针再去访问在区135中的翻译指令组的地址。例如,组512(1)有3条目标指令,对此有3个相应的指针存放在跳转表540中。这些在跳转表540中的指针分别访问在区135中的翻译指令组535-512(1)-1到535-512(1)-3。与此相似,作为另一个例子,在跳转表540中的用于被包含在组512(n)中的信号处理目标指令的各个指针分别对在区135中的翻译指令组535-512(n)-1到535-512(n)-3进行寻址。
图16还表明,对于块510A,在跳转表影子区444中包含了跳转表影子表540-510A。跳转表影子表540-510A含有用于块510A预期要处理的各个信号的项。在这方面,跳转表影子表540-510A含有项540-510A-12(1)到540-510A-12(n),它们相当于被包含在块510A中的信号处理目标指令的各个组512(1)到512(n)。在跳转表影子表540-510A中的每一项都是跳转表440中一个项的复本,该项对应于信号处理目标指令的对应组中的第一条目标指令。例如,在跳转表影子表540-510A中的第一项(它是用于第一信号的项)是跳转表540中的一个指针,该指针指向区135的地址535-512(1)-1。与此相似,跳转表影子表540-510A中的最后一项(它是最后一个信号的项)是指向区135的地址535-512(n)-1的跳转表540中的指针的复本。
图17表示图16的实施例,但具有多个块510A、510B…510J,每一个都有其对应的跳转表影子表540-510A、540-510B、……540-510J。这样,具体参考前面的讨论,可以理解,对于每个块510A、510B、…510J其跳转表影子表含有由相应的块所处理的各信号的项。在这方面,对于任何给定的块,它的跳转表影子表的项的数量可以从该块的信号分布表来确定。
3.3.4跳转表分段和时间印记压缩图17还表示翻译目标程序块用的代码的编译过程。从图17可以理解,主机处理器112没有必要去访问整个跳转表440,而是只要访问跳转表440中要翻译那一块所需的那部分,再加上由被翻译的块所产生的信号相关的其它每一块所用的各跳转表影子表。这样,在图17的例子中,其中块510A为各块510B-510N产生多个信号,而主机处理器112只需要访问在图17中由线600框起来的存储区。
由于主机处理器112没有必要访问图3B中的整个跳转表440,因此可以理解,跳转表440的其余部分可以存放在RAM 130以外的任何地方。例如,跳转表440的剩下部分可以存放在硬盘中或其类似部件中,例如由I/O存储设备120或所用的其它高速缓存技术所处理。
图3C说明了另一种节省存储器的主要系统710的实施例,具体地是利用对跳转表740的数据进行压缩的实施例。图3C的主机系统710和上面参照图3A所说明的主机系统相似,仅仅在这里另外说明的地方有不同,例如,标明不同参考符号的组成元件。主机系统710和主机系统110之间的一个主要差别是主机系统710的RAM 130提供了一个时间印记存储区746。对时间印记存储器746结合跳转表740中的数据压缩的利用将参考图18来说明和解释。
在图18中,目标目的代码区732有多个块从710A到710N。和以前的实施例一样,每一块的每条目标指令在跳转表740中有一个相应的指针。虽然在图18中没有说明,但应理解,跳转表740中的各指针都指向翻译指令组,其方法和前面结合其它各说明的实施例所说明的相同。
如图18所示,块710A在跳转表740中有它的指针组740-10A,块710B在跳转表740中有它的指针组740-10B,依此类推一直继续到块710N。跳转表740中用虚线表示的各指针组是压缩的,也就是说,具有压缩的数据,而跳转表740中用实线表示的各指针组是未经压缩的。
在图18中还进一步表明,在跳转表740中的每一组指针740-10A到740-10N具有存放在时间印记存储区746中的时间印记。例如,组740-10A具有时间印记746-10A,组740-10B具有时间印记746-10B,依此类推。对于未压缩的组,每个时间印记指明在跳转表740中的该组指针未经压缩的相对时间。例如,时间印记746-10B指明组740-10B在时间1552是未压缩的。时间印记746-10N指明组740-10N在时间1554是未压缩的。
这样,在图3C的实施例中,跳转表740是分裂成段的,目标程序的每一块各有一段。这些段分别地被压缩或未经压缩。当对一个块编译代码时,主机处理器710打开跳转表740中的相关的段,就可以得到标准的直接的查找方式以便计算局部的分支目的地址。当执行线程离开当前块时,主机处理器710重新压缩在跳转表740中的相关的段。
更为可取的是,主机处理器710只允许预定数量(例如20到50)的跳转表740中的段可以同时不加压缩。如上所述,这些未压缩的段是加时间印记的。跳转表740中最早使用过的段是可以由时间印记存储区746来确定的,在出现需要对新的段解压缩时,它们可以被压缩。最好是在大多数时间内只有少量的块是活动的,使得图3C的实施例在这种情况下可以在时间和存储器需求方面有一个良好的折衷。
3.5指令转换另外一个方面,它是可供选用的但最好是包括在本发明的现有实施例中去的是一个递增编译程序,用作为从目标代码到仿真代码的代码翻译过程中的一个中间步骤。在目标代码和仿真代码之间的功能指针最初可以由对目标指令的解码和仿真指令的产生等功能的访问来定义。在这种方式下,对目标计算机系统的改变可以通过更新在翻译步骤中要查阅的表格索引而包含在翻译过程中。
这就是说,在翻译时不是简单地对目标指令解码并产生相应的仿真代码,图20的实施例的例子利用了翻译步骤1003,这一步骤从产生表1002摘出它的目标程序并在实际仿真代码产生之前和之后分别实施“前言”和“后记”例程。这些程序在下面将更详细说明。
图20的例子表示被解码和再生成为仿真代码的一条加寄存器指令。代码转换过程从读出目标指令1001开始。在这个情况下,目标指令是一条在地址H’5F的从“r1”到“r2”的加寄存器指令。这条指令装入到地址为1004的产生表1002中,从而更新产生表1002以便在仿真代码产生例程中容纳新的指令步骤。然后翻译步骤1003从1004摘出该改变指令,执行1)前言例程,2)仿真代码产生例程,和3)后记例程。
对一个简单的AR指令的解码和代码生成是用下列功能(参阅3.8.8节)完成的GenAR(){register u_char r1=(instr
>>16) & 0x3f;register u_char r2=(instr
>> 8) & 0x3f;PROLOGUE(5);/* At most 5 host instructions */OUT_READHALF_2_REGS(r1,op1,r2,op2);OUT_ADD(op1,op2,op1);OUT_SRL(op1,16,regRIR_N);OUT_WRITEHALF_REG(op1,r1);EPILOGUE(2);/* simulates 2 target cycles*/图20是将一个特定目标指令,即寄存器加寄存器指令(AR r1-r2)转换成主机指令的一个过程的示意图。
OUT-宏指令进行实际的代码生成,也就是构成相当于该指令的比特图形并将该图形存入存储器。对于每一组固定宽度的指令,都为SUNSPARC存在一个相应的OUT-宏指令,它存在于叫做Spare_code.h的文件中。上面所用的OUT_ADD产生一条SPARC加法指令的二进制表示。它被定义如下
#define OUT_ADD(RS1,RS2,RD) \GEN(0x80000000 | ((RD)<<25)|((RS1)<<14) | (RS2))OUT_宏指令使用另一条宏指令,它叫做GEN,其定义如下#define GEN(instruction) \*emulation_code_top++=(instruction)这条宏指令把指令比特图形存入主机代码缓冲区(在emulation_code_top)并更新emulation_code_top指针。主机代码缓冲区是否溢出将在前言中予以校验(见3.5.1节)。
3.5.1前言在产生任何代码之前作为转换指令的第一个动作是调用PROLOGUE(前言)功能。前言可保证在主机代码缓冲区中有足够的可供使用的空间,更新跳转表指针并可用于打印跟踪信息。
void PROLOGUE(int ninst){if(emulation_code_top+ninst+EPILOGUE_MAX_SIZE>=emulation_code_base+emulation_code_size)grow_emulation_code_buffer();*jt_entry++=(u_long)emulation_code_top;if(sim_convert_trace_on){sim_printf(″Ox%x″,emulation_code_top);print_instruction((u_long)current_logical);}}jt_entry指针是指在转换期间使用的跳转表(见3.4.2节)。
所示的前言用于单独的跳步方式。
3.5.2后记在为一条指令产生代码后就调用后记功能。这个后记处理几件事情。首先,仿真器含有一个事件机制,它用于几种目的,它必须和仿真时间打交道。例如,如果用户需要仿真器在经过950个周期时中断,那么这就是要在延时950个周期后通知仿真器发生一次事件。与此相似,通过作业缓冲来处理延迟信号可以使用这种事件机制。后记对每一个仿真周期(对于在目标机上需要一个周期以上的指令,那就是几个周期)更新主机寄存器regE。当regE和(已分类的)事件队列中的时间印记相匹配时,如有需要,在精确方式下此功能可在3个主机指令内完成。在快速方式下,事件校验仅仅在产生的代码的几个地方进行,例如在每个编译单元的结束时。
同时,后记还检查在当前执行分片中被仿真的指令的数量,并且如果这个数量超过预定的阈值(例如1000或10000条目标指令)时,就使控制返回到环绕的主机调度程序。这也可以使用事件机制来完成。
除了上面的事件检查外,标准的后记功能EPILOGUE通过在仿真的程序计数器(IAR)上加上刚刚执行过的指令的大小而更新该仿真程序计数器(IAR)。
存在另外两个后记的变型SIGNAL-EPILOGUE(信号后记)被各种功能用来为信号发送指令产生代码。它利用信号分配表来寻找新的仿真程序计数器(见3.2.2节)。JUMP-EPILOGUE(跳转后记)由各种功能用来模拟分支,并且利用在3.4.2节中所述的散列表来计算新的仿真程序计数器。SIGNAL_EPILOGUE和JUMP_EPILOGUE两者都用来产生对update_jam功能的调用,该功能更新跳转地址存储器缓冲区。
按照还有另外一个本发明实施例的例子,主计算机用于存放仿真代码的存储器是由主计算机在仿真目标指令被写入于其中时分配到合适的存储块中的。此外,主计算机能够模拟存储分配,这种分配将在目标计算机执行目标指令时被使用。
3.6存储管理和仿真发生两种存储管理(1)管理内部仿真器存储器,例如仿真代码用的存储器;和(2)模拟目标存储器,例如数据存储器DS。
项目(1)必须使用由主机框架提供的存储器调用来管理。目标存储器模拟涉及DRS和PS的模拟。DRS和PS用的主机存储器是由仿真器在仿真目标指令写进去时分配到合适的存储块中去的。这种写入是易于被检测到的,因为它们使用特定的指令(XWPS、WS、XFTR……)。由于这些存储器访问无论如何都要由仿真器予以确认,所以这样额外的内部管理预期不会有明显的开销。例如,可以使用的存储块大小为16K或32K。
当仿真器起动时,通过读入一个预先建立的存储转储而使存储器初始化。这使DS、PS和RS进入严格定义的状态。
要注意,在最低优先级别(DL)上有一个特别的进程,它不断地扫描整个存储区域以检查硬件是否正确地工作,这个进程可能会对存储器模型带来问题,因为整个DRS和PS会因此而被读出和写入,从而使整个存储器从硬盘交换到存储器,因此使性能变劣。这个优选级别的进程应该找出来并使其失效。
3.7寄存器模拟APZ在4个执行级别的每一级上含有192个通用寄存器(见3.2.2节和3.2.6节)。这些寄存器可以在主机存储器中用指向它们的一个全局主机寄存器regML来模拟,如图21所示。可以看出,对于每一个APZ优先级别有一个这样的存储区。当模拟一个级别变化时,regML寄存器作相似的变化。
此外,跨越所有优先级别而共享的224个寄存器是存放在由寄存器regML所指向的单独的主机存储器中的。
3.7.1寄存器的高速缓存最常用的目标寄存器可以直接由为此目的而分配的主机寄存器来模拟。read_rey、read_2_regs、readhalf_reg、readhalf_2_reys、write_reg、write_2_regs、writehalf_reg、和write_2_regs等所提到的伪指令将处理寄存器高速缓存细节的大部分,例如,read_reg指令将从用来对它进行高速缓存的主机寄存器取得目标寄存器而不是从存储器装入它。某些特殊目的的寄存器总是被高速缓存的,例如,在regRIR的RIR。
4.0系统优点如上所述,仿真中央处理器CP 234模拟从目标系统的中央处理器34一直低到指令和寄存器级。这就是说,仿真中央处理器CP 234模拟CP34的指令集的执行并使用CP 34的全部寄存器。另一方面,处理这样一些杂务如监控和数据传输(例如数据的成组和分组)的其它处理器则不用全指令集仿真(ISS)来模拟,而是由接口模拟来实现。内部总线则是用各不相同的被仿真子系统之间的功能调用来实现。
从前面所述,可以看出本发明的仿真系统200有许多优点。某些优点和好处在下面列出。
4.1生产率的增长仿真系统200向用户提供生产率的增长,这可从下述得到证实(1)新的仿真环境解决了目前接口中的问题。
(2)完整的PLEX和ASA(AXE汇编)系统可以被装入。
(3)几百MB大小的系统可以被执行。
4.2质量的提高仿真系统200为用户提供质量方面的提高,下面是这方面的例子(4)目标系统的功能测试中的主要部分可以用仿真系统200来完成。
(5)通过较为容易的对测试规范的配置、装入、起动和执行的处理以及查错而改善可用性。
4.3节省工作周期仿真系统200为用户提供工作周期的节省,下面是其例子(6)仿真系统200提供在工作站上的目标环境,缩短了测试中的工作周期。
(7)仿真中的执行速度需要短得多的周转时间。周转时间包括装入和起动系统、测试的执行和查错。
(8)不再需要双份检测指令。
(9)由于在仿真环境中易于测试程序块和纠错的可能性,支持软件用的开销可减少。
(10)程序纠错在仿真系统200中可以容易地测试。
(11)转储制作易于实现。
(12)可以在仿真环境中完成对大型系统的配置然后可以制作转储以便在现场使用。
(13)对测试装置的需求减少。
虽然本发明已经具体地参考了它的优选实施例而被表明和解释,但那些熟悉本技术的人应理解,在它的形式和细节方面可以进行各种不同的变化而不背离本发明的范围和实质。
权利要求
1.一种可以在主计算机系统上执行以便模拟一个目标电信系统的仿真系统,该目标电信系统具有一个中央处理器及多个通过内部总线通信的子系统,该仿真系统包括含有多个仿真子系统的仿真内核,这些子系统相应于目标电信系统的各子系统,该仿真内核被汇编成一个可执行的图象,它的所有仿真子系统在一个公共的进程关联信息下执行并共享一个公共的执行线程;一个通向仿真内核的用于送入命令的用户通信信道;一个中央处理器仿真器,它根据命令而模拟目标指令的执行,它还模拟对目标电信系统的中央处理器中各寄存器的使用;以及其中的目标电信系统的内部总线是由各仿真子系统之间的功能调用来模拟的。
2.权利要求1的仿真系统,其特征在于目标电信系统的中央处理器有一个指令处理器、一个信号处理器、以及一个区域处理器控制器、其中中央处理器仿真器有一个用于模拟目标电信系统的指令处理器的仿真指令处理器,以及中央处理器仿真器在接口的级别上模拟信号处理器和区域处理器管理器。
3.权利要求1的仿真系统,其特征在于通过用户通信信道进入的命令用来按照目标电信系统的相应子系统的硬件而配置一个选定的仿真子系统。
4.权利要求1的仿真系统,其特征在于通过用户通信信道进入的命令用来访问各仿真子系统中的至少一个子系统。
5.权利要求4的仿真系统,其特征在于通过用户通信信道进入的用于选定的仿真子系统的命令是通过一个接插座发送到仿真内核并由命令调度程序传递给仿真子系统的。
6.权利要求1的仿真系统,其特征在于每个子系统是按树形分层结构组织的。
7.权利要求1的仿真系统,其特征在于每个仿真子系统具有一个命令解释器。
8.权利要求7的仿真系统,其特征在于每个解释器包括用于管理它的仿真子系统的硬件配置的例行程序。
9.权利要求1的仿真系统,其特征在于每个仿真子系统是可以从用户通信信道加以控制的,其中每个仿真子系统具有它自己的命令解释器和自己的命令集。
10.权利要求9的仿真系统,其特征在于所有子系统的各个解释器都遵循同样的对命令进行分析的原则。
11.权利要求1的仿真系统,其特征在于各仿真子系统之一是下列各项之一(1)用于产生ISDN基本速率接入测试的仿真话务发生器;(2)仿真的集团交换机子系统;(3)仿真的会议呼叫设备子系统;(4)仿真的信号转移中央子系统,它和仿真的延伸模块区域处理器设备通信;以及(5)仿真的信号转移远程子系统。
12.权利要求1的仿真系统,其特征在于各仿真子系统包括一个仿真信号转移中央子系统和仿真信号转移远程子系统,其中该仿真信号转移中央子系统和仿真信号转移远程子系统利用过程调用来转移信号。
13.权利要求1的仿真系统,其特征在于各仿真系统中的至少一个子系统的某些功能是由中央处理器仿真器实现的。
14.权利要求1的仿真系统,其特征在于目标电信系统的各子系统中的一个子系统是一个模块,用户可通过该模块对该电信系统接入,该模块是由接入处理器控制的,其中该仿真系统还包含一个仿真的接入处理器,该仿真的接入处理器模拟接入处理器指令集和接入处理器的寄存器组,该仿真的接入处理器在逻辑级别上和各子系统交互作用。
全文摘要
一种在主计算机系统(110)上执行以便仿真一个目标电信系统的仿真系统(200)。该仿真系统(200)包括一个仿真内核(231),该仿真核(231)包含多个仿真子系统,每个仿真子系统对应于目标电信系统的子系统。该仿真内核(231)被组合成一个可执行图象,其中的全部仿真子系统都在一个共同的进程关联信息中执行并且共享一个共同的执行线程,仿真系统包括中央处理器仿真器(234),它根据经过用户通信信道输入到仿真核的命令来仿真对目标指令的执行。中央处理器仿真器仿真该目标电信系统的中央处理器的寄存器的使用。该目标电信系统的内部总线借助于各仿真子系统之间的功能调用来进行仿真。
文档编号G06F9/455GK1266579SQ98808032
公开日2000年9月13日 申请日期1998年6月12日 优先权日1997年6月13日
发明者S·斯科拜 申请人:艾利森电话股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1