CN1266513A - 计算机处理器的模拟 - Google Patents
计算机处理器的模拟 Download PDFInfo
- Publication number
- CN1266513A CN1266513A CN98808090A CN98808090A CN1266513A CN 1266513 A CN1266513 A CN 1266513A CN 98808090 A CN98808090 A CN 98808090A CN 98808090 A CN98808090 A CN 98808090A CN 1266513 A CN1266513 A CN 1266513A
- Authority
- CN
- China
- Prior art keywords
- storer
- target
- target word
- instruction
- jump list
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M3/00—Automatic or semi-automatic exchanges
- H04M3/22—Arrangements for supervision, monitoring or testing
- H04M3/26—Arrangements for supervision, monitoring or testing with means for applying test signals or for measuring
- H04M3/28—Automatic routine testing ; Fault testing; Installation testing; Test methods, test equipment or test arrangements therefor
- H04M3/32—Automatic routine testing ; Fault testing; Installation testing; Test methods, test equipment or test arrangements therefor for lines between exchanges
- H04M3/323—Automatic routine testing ; Fault testing; Installation testing; Test methods, test equipment or test arrangements therefor for lines between exchanges for the arrangements providing the connection (test connection, test call, call simulation)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/10—Processors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/1302—Relay switches
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/1304—Coordinate switches, crossbar, 4/2 with relays, coupling field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/1305—Software aspects
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13102—Common translator
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13103—Memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13106—Microprocessor, CPU
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13141—Hunting for free outlet, circuit or channel
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13176—Common channel signaling, CCS7
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13299—Bus
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04Q—SELECTING
- H04Q2213/00—Indexing scheme relating to selecting arrangements in general and for multiplex systems
- H04Q2213/13335—Simulation, emulation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Executing Machine-Instructions (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
一个指令仿真系统将目标指令翻译成供宿主处理器执行的仿真指令。一个跳转表有指针登记项,用于在翻译指令存储器中定位用来为每个不同类型的目标指令生成可由宿主执行的仿真指令集。在一个实施例中,跳转表中每个指针登记项都有一个不大于最短目标指令长度的登记项长度,由此使跳转表能处理非统一指令长度的目标指令。对于另一个目标指令包含目标指令的程序块—包括信号处理目标指令—的实施例来说,跳转表由保存对代码复杂性的存储要求的跳转表影子存储器而得到加强。在另一个实施例中,跳转表存储器被划分成与目标指令存储器中存储的程序块对应的分段。跳转表存储器的选定的分段按最近使用原则被解压,未选定的分段被压缩。
Description
本发明涉及在为所模拟计算机系统的处理器准备的程序指令的模拟计算机系统处理器上的模拟或仿真。
计算机系统有处理器,处理器识别和执行编码指令例如软件,以执行操作并由此获得所需的结果和/或输出。编码指令如果要由任何特定处理器执行,则必须被解释或可用其它方式还原为属于该处理器特有的预定指令集的指令符号。
不同类型的处理器会(通常确实)具有不同的指令集。不过,经常要将为某第一种类型处理器(本文称之为目标处理器)准备或编写的指令在某第二种类型的处理器(本文称之为宿主处理器)上执行。就是说,有些情形可能要求将按目标处理器的指令集编码的指令在宿主处理器上执行—尽管宿主处理器使用与目标处理器的不同的指令集。例如,在例如为了测试为目标处理器编写的软件而有必要或需要让宿主处理器模拟或仿真目标处理器时,就会发生这种情形。
当宿主处理器用于模拟某目标处理器时,宿主处理器将为目标处理器编写的软件(即目标指令)存储在存储器中。宿主处理器执行模拟程序,模拟程序包括一个翻译过程和一个所翻译的指令的执行过程。就翻译过程来说,模拟程序解码每个目标指令,以确定其类型(例如“加寄存器”指令、“移动”指令,等等)。对于翻译过程,宿主处理器能在存储器中的其它地方访问翻译代码。翻译代码是按宿主处理器的指令集编写的。对于每个类型的目标指令,翻译代码包括一系列使宿主处理器能生成仿真代码的宿主指令(按照宿主指令集)。仿真代码使宿主处理器能执行等同于目标指令所要求的操作。
在诸如以上总结的模拟/仿真情形中,已知要使用一个跳转表。实质上,跳转表在生成对应于目标指令的仿真代码的翻译代码中含有指向宿主指令系列的指针。就是说,当仿真程序解码目标指令以确定其类型时,对于该特定目标指令类型,跳转表有一个指向按宿主指令集生成仿真代码的特定翻译代码的指针。跳转表的描述例如可见MacGregor=s国际专利申请PCT/GB87/00202-软件仿真装置(Arrangement for Software Emu1ation)。
跳转表会插入延迟和提高存储器要求。相应地,现有技术中描述了如何避免跳转表。例如参看Davidian=s国际专利申请PCT/US94/03911-解码宿主计算机的客人指令的方法(Methods forDecoding Guest Instructions for A Host Computer),该专利在直接访问仿真程序中的指令的基础上解码客人指令。
模拟和仿真在建模诸如电信工业中所采用的那些复杂处理系统时特别重要。这种处理系统一般有一个执行代码程序块的指令处理器。代码程序块存储在称为程序存储器的存储器中。指令处理器还必须能处理信号。本文中所用的“信号”是指从一个代码程序块向另一个代码程序块发送的消息。信号包含信号首部和信号体。信号首部包括发送程序块和接收程序块的标识符,以及信号编号或类型。信号体包括接收程序块在执行该信号时所要使用的数据。
如果要将上面段落中所述的处理系统看成宿主处理器上仿真用的目标处理器,就需要有一种高效的方法来翻译代码程序块和信号。此外,要是该目标处理器采用的是非统一指令长度的指令集,则向跳转表位置配置目标指令就会有问题。
因此,所需要的、即本发明的目的是,一种高效、紧凑并能处理信号和非统一长度的目标指令的仿真/模拟系统。
一种指令仿真系统将目标指令翻译成供宿主处理器执行的仿真指令。一个跳转表有指针项,指针项用于针对目标指令的每个不同类型,为生成宿主处理器可执行的仿真指令而在翻译指令存储器中定位翻译指令集。
在一个实施例中,跳转表中的每个指针项都有一个不大于最短目标指令长度的长度项,由此使跳转表能处理非统一指令长度的目标指令。
在另一个实施例中,目标指令包含目标指令程序块,包括信号处理目标指令,跳转表增加了一个跳转表影子存储器。跳转表影子存储器有多个跳转表影子表,每个跳转表影子表与具有信号处理目标指令的多个程序块之一配对。每个跳转表影子表有一份跳转表项的副本—跳转表项与跳转表项表所配对的包括信号处理目标指令的程序块所关联。在编译指定的目标指令程序块时,宿主处理器编译一部分跳转表,这部分跳转表对应于指定的程序块和由指定程序块所生成信号调用的任何其它程序块的跳转表影子表。
在另一个实施例中,跳转表存储器被划分成分段,与目标指令存储器中存储的各程序块对应。跳转表存储器中选定的分段按照某个近期使用标准被解压缩,未选定的分段被压缩。
在以下对各附图中表示的实施例的更特定的描述中,本发明的以上和其它目的、特点和优点将显而易见。引用字符在不同的视图中指示相同的部分。各附图未必合乎比例,所强调的是本发明的原理。
图1是将目标指令翻译成仿真指令并且执行仿真指令的宿主系统的示意图。
图2是表示仿真管理例程对将目标对象代码翻译成仿真指令和执行仿真指令进行流水线式地协调的示意图。
图3是表示按照本发明的一个方式,目标对象代码区、跳转表和其中驻留翻译例程的翻译指令区之间相互关系的示意图。
图4是本发明另一个宿主系统实施例的示意图,该实施例通过提供跳转表影子表来减小跳转表。
图5是表示按照图4的实施例,目标对象代码区、跳转表、翻译指令区和跳转表影子表之间相互关系的示意图。
图6是表示按照图4的实施例翻译一个程序块所需指令的编译所使用的存储器的示意图。
图7是本发明另一个宿主系统实施例的示意图,该实施例通过使用时间标记压缩技术来减小跳转表。
图8是表示按照图4的实施例,目标对象代码区、跳转表、翻译指令区和时间标记(time stamp)存储器之间相互关系的示意图。
图9a是表示按照本发明的一种方式,目标对象代码模程序块、跳转表和仿真代码区之间相互关系的示意图。
图9b是表示内联代码(in-line code)的组织的示意图。
图10是修改后目标指令、中间生成表和向仿真代码翻译之间相互关系的示意图。
在以后的说明中,出于解释的需要而不是为了限制,陈述了特定的细节,诸如特定体系结构、接口、技术等等,目的是便于彻底了解本发明。然而,对本领域的熟练人员来说,显然本发明可以用不同于这些具体细节的实施例来实现。在其它实例中,省略了对众所周知的装置、电路、和方法的详细叙述,目的是避免因不必要的细节而突出不了对本发明的描述。
图1表示的宿主计算机系统10,模拟或仿真一个未予示出的目标计算机系统。宿主计算机系统110有一个宿主处理器例如CPU112,它通过总线114与构成宿主的其它部分通信。构成宿主的其它部分包括输入装置(例如键盘和指针(例如鼠标))116、输出装置(例如显示器、打印机)118、输入/输出存储器(例如磁盘驱动器)120、只读存储器(ROM)122和随机存取存储器(RAM)130。本领域的熟练人员知道,这些不同的构成部分都通过适当的接口连接到总线114。宿主计算机系统110例如可以是Sun Microsystems公司销售的SPARC工作站。
如图1中所示,RAM130包括许多例程和区(例如分段或表)。例如,目标对象代码区132—亦称目标指令存储器,用于存储为未予示出的目标处理器编码的程序指令。在RAM130的目标对象代码区132中存储的目标指令,一般是从外部存储介质(例如通过I/O存储器120)获得,按需要而传输(例如高速缓存)到RAM130的。“为未予示出的目标处理器编码的”,指目标指令是按目标处理器的指令集而格式化的,例如,目标指令是用目标处理器的指令集编写的汇编级指令。目标对象代码区132中存储的目标指令,旨在使目标处理器执行特定操作和/或获得特定结果。然而,正如后文所述的那样,目标对象代码区132中存储的目标指令却被宿主计算机110翻译成宿主计算机110能理解的指令,去试图完成相同的特定操作和/或获得特定结果。
RAM130中还包括各种由宿主处理器112执行的编程例程,包括仿真/模拟监控例程(ESR)133、解码例程134、翻译例程135和仿真执行例程136。此外,RAM130中还存储跳转表140和仿真指令存储区142。
图2表示仿真管理例程协调对将目标对象代码翻译成仿真指令和由宿主执行仿真指令的流水线式过程。总之,当仿真监控例程133确定应该从目标对象代码区132提取目标指令时,所提取的目标指令由解码例程134进行分析。解码例程134是知道目标指令集的结构的,它每接受一条所提取的目标指令就确定其类型,例如所提取指令是否是将两个寄存器内容相加的Aadd寄存器指令、是否是将一个寄存器的内容转移到另一个寄存器或地址的Amove指令,等等。分析所提取目标指令的前提条件是解码例程134理解目标指令集的预先定义的操作代码和字段。由于解码例程134所进行的分析的结果,翻译例程135就构造一个仿真指令集供在仿真指令区142中存储。仿真指令区142中存储的仿真指令是按宿主处理器112的指令集格式化的。为所提取的目标指令生成的仿真指令被配置成能使宿主处理器112就像目标处理器执行所提取的目标指令一样地执行操作。仿真执行例程136从区142获得供宿主处理器112执行的仿真指令。当仿真执行例程136确定需要有更多的仿真指令填充仿真指令存储区142时,就向翻译例程135生成一个中断,如图2中线条150所示。对中断的响应是,有更多的目标指令被提取、解码并翻译,提供到仿真指令存储区142。
本发明的一个重要方面是将所提取的目标对象代码翻译成宿主处理器112能执行的仿真指令。为此,下文对翻译的方式,包括跳转表140的配置和使用,作更详尽的讨论。
图3表示按照本发明的一个方式,目标对象代码区132、跳转表140和其中驻留翻译例程的翻译指令区135之间的相互关系。如图3中所示,目标对象代码区132中存储的目标指令有不同的指令长度。例如,目标指令310是个4字节指令,目标指令312是个2字节指令,目标指令314是个4字节指令。所以,在所示实施例中,最短的目标指令长度是2字节。
必须将目标对象代码区132中存储的每个目标指令都翻译成宿主处理器112能执行的指令—称为仿真指令,宿主处理器112才能像目标处理器执行目标指令一样地执行操作。为此,翻译例程135对应每个目标指令类型都包括有一个翻译指令集,用于生成仿真指令。例如,翻译例程135包括一个适合按照目标指令310所属的目标指令类型来构造仿真指令集330的翻译指令集320。再如,翻译例程135包括一个适合按照目标指令312所属的目标指令类型来构造仿真指令集332的翻译指令集322。
在指令翻译过程中,有必要在翻译指令区135中定位适合构造供在仿真指令存储区142中存储的仿真指令的特定翻译指令集(例如集320或322)。为此要采用跳转表140。如图3所示,跳转表140有多个位置(slot)或登记项340(1)~340(n)。跳转表140中的每个登记项340都有一个长度SL,它不大于最短目标指令长度—在所示实施例中即2字节。
当解码例程134提取和解码时,目标对象代码区132中的每个目标指令都被分配一个指向区135中能用于构造对应的仿真指令集的翻译指令集的指针。例如,登记项340(3)含有分配给目标指令310的指针,登记项340(3)的指针指向区135中翻译指令集320的地址。类似地,登记项340(5)含有分配给目标指令312的指针,登记项340(5)的指针指向区135中翻译指令集322的地址。每个指针都存储在跳转表140中的独特位置中。事实上,跳转表140和目标对象代码区132的配置和寻址方式,使得能用目标对象代码区132中的目标指令的地址来获得跳转表140中对应指针的地址。具体来说,用目标对象代码区132中的目标指令后面的字节地址,除以跳转表140中登记项的标准长度SL,就得出跳转表140中对应指针的登记项号。例如在所示实施例中,目标指令312(其在区132中的结尾地址是10)分配的指针,存储在跳转表140的登记项5(10/SL=10/2=5)中。
这样,图3的实施例的跳转表140的结构就便于使用可变即非统一长度的目标指令,并且还保留了在跳转表140中对目标指令的指针项进行定位的有效变址方案。这是通过提供具有与最短目标指令的长度相同的粒度的跳转表140而实现的。然而,跳转表140中的每个登记项仍然需要有足够的长度,使得登记项能容纳其指向的翻译指令集在区135中的地址。所以,跳转表140的大小必须是其目标指令存储在目标对象代码区132的目标程序的两倍。于是对有些应用来说,跳转表140就会变得大得不能接受,要求用下文所述的一种或多种机制来降低跳转表140的大小。
图9a表示本发明的一个实施例的混合模型方面。图9a的模型综合了普通执行线程模型的优点与内联模型的优点。具体来说,混合模型取得了跳转目的地的快速计算和从目标到宿主代码的程序计数器计算的有效处理,这些是纯粹线程模型所具有的。混合模型也取得了纯内联模型所具有的速度优点。
图9a的混合系统取得这些优点,原因是目标代码模块900通过具有关联跳转表指针910(1)~910(n)的跳转表910与仿真代码区912交互作用。目标处理器指令是动态地、“实时地”(on the f1y)被翻译成仿真代码的。但是翻译是对将能连续执行、没有任何跳转的目标指令程序块而进行的。这样,宿主计算机能在没有不适当流水线中断的连续流程中执行代码。
仿真代码912然后被连续地、内联地执行,如图9a所示。这意味着仿真代码不要通常在仿真代码程序块912(1)~912(n)之间的链接指令就能被执行。这保证了宿主计算机能快速地执行仿真代码,除了诸如地址翻译、中断或断点等情况外,不会中断可执行仿真指令的流水线。
如图9b所示,连续的宿主代码仿真程序块被分解成内联程序块以省去链接指令。在图9b的实施例中,通过检查流程控制指令就能确定每个编译程序块的边界。当执行到达未编译目标指令时—这通常在转移时发生,开始增量编译。对程序块的编译一直进行到到达转移指令时,编译在程序块内的某个转移指令处停止。这个生成的结果是一个以转移目的地开始和结尾的仿真代码程序块。
对图9b中编译程序块选择的规则举例如下:
1.位于转移目的地的第一条指令启动一个程序块,除非该指令已经编译。
2.该程序块继续到到达第一条转移指令,除非以下情况:
2.1如果转移是向后转移到当前程序块,该程序块不停止,编译继续。
2.2本地的(例如小于页面长度的)前向转移不停止该程序块,除非在前向转移和前向转移目的地之间有另一个不适用规则2.1和2.2的转移。
3.条件转移后的第一条指令也启动一个程序块。
可以将这些规则简化如下而不损失实际效率:
1.位于转移目的地的第一条指令启动一个程序块,除非该指令已经编译。
2.该程序块继续,一直到第一条非条件转移指令。
例如在图9b中,转移处的第一条指令启动可执行程序块920,第一条非条件转移指令结束之。程序块920根据这两个转移被定义并存储到仿真代码缓冲器912。下一个程序块921开始于第一条转移处,继续到图中指示的“转移出去”。注意,在程序块921中,中间的“转移回去”不结束程序块921,因为这个“转移回去”不仅向后转移,也转移到当前程序块中,因而没有外部跳转或流水线中的中断也能在仿真代码中执行。因此程序块921的“转移回去”由于不结束程序块921而遵守上述规则2.1。
图9b的程序块922按照上述规则3始于“转移进来”并在条件“转移出去”处结束。在这些转移之间,程序块922包括一个短的“向前转移”,如规则2.2中所述,由于其相对大小,它不结束程序块922。注意该规则会导致程序块924的编译,这个程序块在向前转移指令之后一直到该向前转移返回到指令集时不被执行。“条件转移”也按规则3结束和开始程序块922和923。
图4的宿主系统410在其跳转表440中取得少量的登记项。图4的宿主系统410与上面结合图1说明的宿主系统110相像,本文对其不同之处作了注明,例如作了不同标记的构成部件。宿主系统410与宿主系统110的主要差别是,在宿主系统410的RAM130中有一个跳转表影子区444。本文结合图5对跳转表440和跳转表影子区444的用法作了表示和说明。
图4的宿主系统410是特别改造的,适于分组成程序块的目标指令,其中至少有些程序块包括有信号处理目标指令。例如,为简化起见,图5的目标对象代码区132显示在其中存储了程序块510A。组成程序块510A的是各种目标指令,包括用于处理第一信号的目标指令的组512(1)、用于处理第二信号的目标指令的组512(2)、用于处理最后一个信号的目标指令的组512(n)。如上所述,“信号”是从一个代码程序块向另一个发送的消息。信号包含信号首部和信号体二者。信号首部包括发送程序块的和接收程序块的标识符,以及信号编号或类型。信号体包括接收程序块在执行信号时要适用的数据。所以在图5中所示的例子中,程序块510A能接收第一到最后一个信号中的任何一个信号,在这个情况下,程序块510A必须被编译和翻译。此外程序块510A也能生成要发送给其它程序块的信号。
从以上叙述可知,程序块510A中的每个目标指令,包括在组512(1)至512(n)中包含的信号处理目标指令,都有相应的指针存储在跳转表540中,这些指针依次指向区135中的各翻译指令集的地址。例如,组512(1)有三个目标指令,它们有三个相应的指针存储在跳转表540中。跳转表540中的指针分别指向区135中的翻译指令集535-512(1)-1-535-512(1)-3。类似地,和另一个例子一样,组512(n)中包含的信号处理目标指令在跳转表540中的指针,分别指向区135中的翻译指令集535-512(n)-1~535-512(n)-3。
图5也显示,对于程序块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中的最后登记项,是代表最后一个信号的登记项,它是跳转表540中指向区135的地址535-512(n)-1的指针的副本。
图6表示图5的实施例,但是有多个程序块510A、510B、…510J,每个都各自有一个跳转表影子表540-510A、540-510B、…540-510J。所以,特别是对于前面的讨论来说,可知各程序块510A、510B、…510J的跳转表影子表,都有由各程序块处理的每个信号的登记项。就这一点而言,任何给定程序块的跳转表影子表中的登记项的数目都能从该程序块的信号分配表中确定。
图6也表示了翻译目标程序的一个程序块的代码的编译。从图6可知,宿主处理器112不需访问整个跳转表440,而只要访问被翻译的程序块所需的部分跳转表440,以及由被翻译的程序块为其生成信号的其它每个程序块的跳转表影子表。所以在程序块510A为各程序块510B~510N生成信号的图6的例子中,宿主处理器112只需能访问由图6的线条600框定的内存区。
由于宿主处理器112不需访问图4的整个跳转表440,可知跳转表440的其余部分可以存储在RAM130以外的其它地方。例如,可以将跳转表440的其余部分存储在诸如由I/O存储器120处理的磁盘之类的上面,或者采用其它某种高速缓存技术。
图7表示另一个节省内存的宿主系统710的实施例,特别是在跳转表740中采用数据的压缩的实施例。图7的宿主系统710与上文结合图1说明的宿主系统110相像,本文对其不同之处作了注明,例如作了不同标记的构成部件。宿主系统710与宿主系统110的主要差别是,在宿主系统710的RAM 130中有一个时间标记存储区746。本文结合图8对时间标记存储区746与跳转表740中数据的压缩的结合的用法作了表示和说明。
在图8中,目标对象代码区732有多个程序块710A~710N。如前面的实施例一样,各程序块的各目标指令在跳转表740中有相应的指针。尽管在图8中未予表示,但是应当明白,跳转表740中的诸指针,以与本文所述其它实施例中所述的相同方式,指向各翻译指令集。
如图8所示,程序块710A在跳转表740中有其指针集740-10A,程序块710B在跳转表740中有其指针集740-10B,如此等等,一直到程序块710N。用虚线显示的跳转表740中的诸指针集是压缩了的,即含有压缩数据,而图中以实线显示的跳转表740中的诸指针集是未压缩的。
图8进一步显示,跳转表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被解压缩。
这样,在图7的实施例中,跳转表740被划分成若干分段,目标程序的每个程序块对应于一个分段。对这些分段的压缩和解压是独立进行的。在为程序块编译代码时,宿主处理器710打开跳转表740中关联的分段,这样才能用标准立即查找机制来计算本地转移目的地。当执行线程离开当前程序块时,宿主处理器710再次压缩跳转表740中的该关联分段。
宿主处理器710最好只允许预定数目的—例如20到50个—跳转表740的分段被同时解压。如上所述,这些解压的分段是带时间标记的。当需要解压新的分段时,就压缩按时间标记存储区746确定的最近最少使用的跳转表740的分段。最好在多数时间里只有少量程序块是活动的,这样图7的实施例才能较好地对时间和内存要求进行好的折衷。
另一个可选的、但最好在本发明的实施例中体现的方面是,用增量编译器作为从目标代码向仿真代码的代码翻译中的一个中间步骤。可以通过对解码目标指令和生成仿真指令的函数的引用,对目标代码与仿真代码之间的函数指针进行初始定义。这样,通过更新在翻译过程中所要参照的表引用,就能在翻译中适应对目标计算机系统的改变。
就是说,图10的实施例的翻译,并不是仅仅解码目标指令和生成相应的模拟代码,该实施例采用翻译步骤1003,从生成表1002拉出其目标指令,在仿真代码实际生成之前和之后分别执行Aprologue@和Aepilogue@例程。这些例程在下文作更详细的描述。
图10的例子显示一个加寄存器指令被解码并重新生成为仿真代码。该代码转换过程始于读目标指令1001。本例中,目标指令是位于单元H=5F的从Ar1@到Ar2@的加寄存器指令。这个指令被装入生成表1002中的单元1004,由此更新生成表1002,以适应仿真代码生成例程中新的指令步骤。翻译步骤1003然后从1004拉出该改变指令,执行1)序言(prologue)例程、2)仿真代码生成例程、3)收尾(epilogue)例程。
序言例程在代码生成例程之前被调用,以保证在宿主代码缓冲区中有充足的空间可用,并更新跳转表指针(例如140)。
收尾例程在代码生成之后被调用,以执行几个功能。首先,收尾例程可以在发生了一定数量的执行周期之后,监控和执行模拟指令的超时。收尾例程中也可能出现(例如通过作业缓冲器)对延迟信号的适当处理。收尾例程也能监控在一个模拟周期中完成的被执行指令的数量,用于与某个阈值进行比较。收尾例程也将更新程序计数器,方法是将刚刚执行的指令的大小加到计数器上。这样,收尾例程就能保证程序计数器在发生任何翻译时都保持在最新状态。
按照本发明的另一个典型实施例,供宿主计算机存储仿真代码的存储器,在仿真目标指令向其写入时,由宿主计算机以适当的组块进行分配。此外,宿主计算机还能模拟应当由执行目标指令的目标计算机使用的内存分配。
以上结合本发明最佳实施例对本发明作了具体表示和说明,不过本领域的熟练人员明白,在不偏离本发明的精神和范围的条件下能在形式和内容上作出各种改变。
Claims (18)
1.一个将目标指令翻译成仿真指令的指令仿真系统,该系统包含:
一个执行按宿主处理器指令集格式化的指令的宿主处理器;
一个在其中存储目标指令的目标指令存储器,目标指令存储器有类型各异的目标指令,在目标指令存储器中存储的目标指令有非统一的指令长度,包括一个最短目标指令长度;
一个翻译指令存储器,翻译指令存储器有用于为每一种不同类型的目标指令生成仿真指令的翻译指令集,翻译指令集是按照宿主处理器指令集格式化的,仿真指令也是按照宿主处理器指令集格式化的,为特定目标指令生成的仿真指令被构造得能完成与其为之生成的该特定目标指令要完成的相同的活动;
一个有多个登记项的跳转表存储器,跳转表中多个登记项的每个都有一个不大于最短目标指令长度的登记项长度,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集。
2.一个将目标指令翻译成仿真指令的指令仿真系统,该系统包含:
一个执行按宿主处理器指令集格式化的指令的宿主处理器;
一个在其中存储目标指令的目标指令存储器,目标指令被分组成多个程序块,至少有一些程序块既有信号处理目标指令又有非信号处理目标指令;
一个翻译指令存储器,翻译指令存储器有用于为目标指令生成仿真指令的翻译指令集,翻译指令集是按照宿主处理器指令集格式化的,为特定目标指令生成的仿真指令被构造得能完成与其为之生成的该特定目标指令要完成的相同的活动;
一个有多个登记项的跳转表存储器,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集;
一个有多个跳转表影子表的跳转表影子存储器,每个跳转表影子表与多个程序块中有信号处理目标指令的一个配对,每个跳转表影子表中存储一个与该跳转表影子表配对的程序块中所包括的信号处理目标指令相关联的跳转表登记项的副本;
其中,在编译目标指令的指定程序块时,宿主处理器编译一部分跳转表,这部分跳转表对应于该指定程序块和该指定程序块生成的信号调用的任何其它程序块的跳转表影子表。
3.一个将目标指令翻译成仿真指令的指令仿真系统,该系统包含:
一个执行按宿主处理器指令集格式化的指令的宿主处理器;
一个在其中存储目标指令的目标指令存储器,目标指令被分组成多个程序块;
一个翻译指令存储器,翻译指令存储器有用于为每个目标指令生成仿真指令的翻译指令集;
一个有多个登记项的跳转表存储器,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集;
其中,跳转表存储器被划分成与目标指令存储器中存储的程序块对应的分段,其中跳转表存储器的一些选定分段是按最近使用原则解压的,非选定的分段是压缩的。
4.一种用宿主处理器来模拟目标处理器的方法,该方法包含:
从目标指令存储器提取按目标处理器的指令集编码的目标指令;
解码目标指令;
将目标指令翻译成仿真指令,仿真指令按宿主处理器的指令集格式化;
用宿主处理器执行仿真指令;
其中,提取、解码、翻译和执行诸步骤的执行是按流水线方式协调的。
5.权利要求4的方法,其中翻译仿真指令的步骤包括在存储器的仿真指令区存储仿真指令,其中执行仿真指令的步骤包括从存储器取得仿真指令,其中该方法进一步包含:
在需要由宿主处理器执行更多的仿真指令时作出决定,根据该决定,中断对目标指令的解码和翻译,以便提取更多的目标指令。
6.权利要求4的方法,其中,目标指令存储器有不同类型的目标指令,目标指令存储器中存储的目标指令有包括最短目标指令长度在内的非统一指令长度,其中该方法进一步包含:
执行一个翻译例程来执行将目标指令翻译成仿真指令的步骤,翻译例程包含在翻译指令存储器中存储的翻译指令,翻译指令存储器有用于为每个不同类型的目标指令生成仿真指令的翻译指令集,翻译指令集是按宿主处理器指令集格式化的,为特定目标指令生成的仿真指令被构造得能完成与其为之生成的该特定目标指令要完成的相同的活动;
提供一个有多个登记项的跳转表存储器,跳转表中多个登记项的每个都有一个不大于最短目标指令长度的登记项长度,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集。
7.权利要求4的方法,进一步包含:
将目标指令分组成多个程序块,至少有一些程序块既有信号处理目标指令又有非信号处理目标指令;
执行一个翻译例程来执行将目标指令翻译成仿真指令的步骤,翻译例程包含在翻译指令存储器中存储的用于为每个不同类型的目标指令生成仿真指令的翻译指令集,翻译指令集是按宿主处理器指令集格式化的,为特定目标指令生成的仿真指令被构造得能完成与其为之生成的该特定目标指令要完成的相同的活动;
提供一个有多个登记项的跳转表存储器,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集。
提供一个有多个跳转表影子表的跳转表影子存储器,每个跳转表影子表与多个程序块中有信号处理目标指令的一个配对,每个跳转表影子表中存储一个与该跳转表影子表配对的程序块中所包括的信号处理目标指令相关联的跳转表登记项的副本;
其中,在编译目标指令的一个指定程序块时,宿主处理器编译一部分跳转表,这部分跳转表对应于该指定程序块和该指定程序块生成的信号调用的任何其它程序块的跳转表影子表。
8.权利要求4的方法,进一步包含:
将目标指令分组成多个程序块;
执行一个翻译例程来执行将目标指令翻译成仿真指令的步骤,翻译例程包含在翻译指令存储器中存储的的翻译指令集;
提供一个有多个登记项的跳转表存储器,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集。
将跳转表存储器划分成与目标指令存储器中存储的程序块对应的分段;
对跳转表存储器的选定分段的解压按照最近使用原则进行,未选定的分段是压缩的。
9.一个指令仿真系统,包含:
一个目标指令存储器,用于存储按目标处理器的指令集编码的目标指令;
一个宿主处理器,它以协调的流水线方式执行下列操作:
(1)解码目标指令;
(2)将目标指令翻译成仿真指令,仿真指令是按宿主处理器的指令集格式化的;
(3)执行仿真指令。
10.权利要求9的装置,进一步包含一个存储器的仿真指令区;其中在翻译仿真指令时,宿主处理器将仿真指令存储在存储器的仿真指令区,其中仿真指令的执行包括从存储器的仿真指令区取得仿真指令,其中在需要由宿主处理器执行更多的仿真指令时该宿主处理器作出决定,根据该决定,中断对目标指令的解码和翻译,以便提取更多的目标指令。
11.权利要求9的装置,其中,目标指令存储器有不同类型的目标指令,目际指令存储器中存储的目标指令有包括最短目标指令长度在内的非统一指令长度;
其中宿主处理器执行一个翻译例程来执行将目标指令向仿真指令的翻译,翻译例程包含在翻译指令存储器中存储的翻译指令,翻译指令存储器有用于为每个不同类型的目标指令生成仿真指令的翻译指令集,翻译指令集是按宿主处理器指令集格式化的,为特定目标指令生成的仿真指令被构造得能完成与其为之生成的该特定目标指令要完成的相同的活动;
一个有多个登记项的跳转表存储器,跳转表中多个登记项的每个都有一个不大于最短目标指令长度的登记项长度,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集。
12.权利要求9的装置,其中目标指令被分组成多个程序块,至少有一些程序块既有信号处理目标指令又有非信号处理目标指令;
其中宿主处理器执行一个翻译例程来执行将目标指令向仿真指令的翻译,翻译例程包含在翻译指令存储器中存储的用于为每个不同类型的目标指令生成仿真指令的翻译指令集,翻译指令集是按宿主处理器指令集格式化的,为特定目标指令生成的仿真指令被构造得能完成与其为之生成的该特定目标指令要完成的相同的活动;
一个存储有多个登记项的跳转表存储器,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集。
一个有多个跳转表影子表的跳转表影子存储器,每个跳转表影子表与多个程序块中有信号处理目标指令的一个配对,每个跳转表影子表中存储一个与该跳转表影子表配对的程序块中所包括的信号处理目标指令相关联的跳转表登记项的副本;
其中,在编译目标指令的一个指定程序块时,宿主处理器编译一部分跳转表,这部分跳转表对应于该指定程序块和该指定程序块生成的信号调用的任何其它程序块的跳转表影子表。
13.权利要求9的装置,其中目标指令在目标指令存储器中分组成多个程序块;
其中,宿主处理器执行一个翻译例程来执行将目标指令向仿真指令的翻译,翻译例程包含在翻译指令存储器中存储的的翻译指令集;
一个有多个登记项的跳转表存储器,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集。
其中,跳转表存储器被划分成与目标指令存储器中存储的程序块对应的分段,其中,对跳转表存储器的选定分段的解压按照最近使用原则进行,未选定的分段是压缩的。
14.一个计算机软件产品,包括存储在存储器中供宿主处理器执行以模拟目标处理器的仿真管理例程指令,仿真管理例程以流水线方式协调执行下列步骤:
从目标指令存储器提取按目标处理器的指令集编码的目标指令;
解码目标指令;
将目标指令翻译成仿真指令,仿真指令是按宿主处理器的指令格式化的;
用宿主处理器执行仿真指令。
15.权利要求14的计算机软件产品,其中翻译仿真指令的步骤包括将仿真指令存储在存储器的仿真指令区,其中执行仿真指令的步骤包括从存储器取得仿真指令,其中所协调的诸步骤进一步包含:
在需要由宿主处理器执行更多的仿真指令时作出决定,根据该决定,中断对目标指令的解码和翻译,以便提取更多的目标指令。
16.权利要求14的计算机软件产品,其中,目标指令存储器有不同类型的目标指令,目标指令存储器中存储的目标指令有包括最短目标指令长度在内的非统一指令长度;其中所协调的诸步骤进一步包含:
执行一个翻译例程来执行将目标指令翻译成仿真指令的步骤,翻译例程包含在翻译指令存储器中存储的翻译指令,翻译指令存储器有用于为每个不同类型的目标指令生成仿真指令的翻译指令集,翻译指令集是按宿主处理器指令集格式化的,为特定目标指令生成的仿真指令被构造得能完成与其为之生成的该特定目标指令要完成的相同的活动;
管理一个有多个登记项的跳转表存储器,跳转表中多个登记项的每个都有一个不大于最短目标指令长度的登记项长度,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集。
17.权利要求14的计算机软件产品,其中所协调的诸步骤进一步包含:
将目标指令分组成多个程序块,至少有一些程序块既有信号处理目标指令又有非信号处理目标指令;
执行一个翻译例程来执行将目标指令翻译成仿真指令的步骤,翻译例程包含在翻译指令存储器中存储的用于为每个不同类型的目标指令生成仿真指令的翻译指令集,翻译指令集是按宿主处理器指令集格式化的,为特定目标指令生成的仿真指令被构造得能完成与其为之生成的该特定目标指令要完成的相同的活动;
管理一个存储有多个登记项的跳转表存储器,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集。
管理一个有多个跳转表影子表的跳转表影子存储器,每个跳转表影子表与多个程序块中有信号处理目标指令的一个配对,每个跳转表影子表中存储一个与该跳转表影子表配对的程序块中所包括的信号处理目标指令相关联的跳转表登记项的副本;
其中,在编译目标指令的一个指定程序块时,宿主处理器编译一部分跳转表,这部分跳转表对应于该指定程序块和该指定程序块生成的信号调用的任何其它程序块的跳转表影子表。
18.权利要求14的计算机软件产品,其中所协调的诸步骤进一步包含:
将目标指令分组成多个程序块;
执行一个翻译例程来执行将目标指令翻译成仿真指令的步骤,翻译例程包含在翻译指令存储器中存储的的翻译指令集;
管理一个有多个登记项的跳转表存储器,目标指令存储器中一个选定的目标指令与跳转表存储器中一个选定的登记项关联,跳转表存储器中该选定的登记项中存储一个指针,指向翻译指令存储器中特定一个翻译指令集。
将跳转表存储器划分成与目标指令存储器中存储的程序块对应的分段;
对跳转表存储器的选定分段的解压按照最近使用原则进行,未选定的分段是压缩的。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/874,660 | 1997-06-13 | ||
US08/874,660 US6142682A (en) | 1997-06-13 | 1997-06-13 | Simulation of computer processor |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1266513A true CN1266513A (zh) | 2000-09-13 |
Family
ID=25364279
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN98808090A Pending CN1266513A (zh) | 1997-06-13 | 1998-06-12 | 计算机处理器的模拟 |
Country Status (6)
Country | Link |
---|---|
US (2) | US6142682A (zh) |
EP (1) | EP0988592A1 (zh) |
CN (1) | CN1266513A (zh) |
AU (1) | AU8337198A (zh) |
CA (1) | CA2293560A1 (zh) |
WO (1) | WO1998057262A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1294495C (zh) * | 2004-05-20 | 2007-01-10 | 北京大学 | 模拟器构造方法 |
CN1296825C (zh) * | 2003-10-22 | 2007-01-24 | 松下电器产业株式会社 | 模拟器及模拟方法 |
CN1306399C (zh) * | 2002-12-10 | 2007-03-21 | 英特尔公司 | 用于网络处理器的虚拟机 |
CN102375418A (zh) * | 2010-06-08 | 2012-03-14 | 株式会社日立制作所 | 控制装置及其数据处理方法 |
CN102447604A (zh) * | 2010-09-30 | 2012-05-09 | 迈普通信技术股份有限公司 | 路由表信息存储方法以及路由设备 |
CN102609243A (zh) * | 2010-12-27 | 2012-07-25 | 微软公司 | 仿真指针 |
CN101777007B (zh) * | 2010-01-28 | 2013-04-10 | 中国科学技术大学苏州研究院 | 片上多核处理器的并行功能仿真系统及其方法 |
US8677322B2 (en) | 2011-06-29 | 2014-03-18 | Microsoft Corporation | Debugging in a multiple address space environment |
US8677186B2 (en) | 2010-12-15 | 2014-03-18 | Microsoft Corporation | Debugging in data parallel computations |
CN107665281A (zh) * | 2017-09-27 | 2018-02-06 | 浙江大学 | 一种基于fpga的处理器模拟方法 |
Families Citing this family (76)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6199152B1 (en) | 1996-08-22 | 2001-03-06 | Transmeta Corporation | Translated memory protection apparatus for an advanced microprocessor |
US6134515A (en) * | 1997-06-13 | 2000-10-17 | Telefonaktiebolaget Lm Ericsson | Controlling a first type telecommunications switch upon translating instructions for a second type telecommunications switch |
US6128589A (en) * | 1997-06-26 | 2000-10-03 | Nortel Networks Limited | Method and apparatus for modelling a system which includes the transmission and reception of signals |
US6041402A (en) * | 1998-01-05 | 2000-03-21 | Trw Inc. | Direct vectored legacy instruction set emulation |
US6324492B1 (en) * | 1998-01-20 | 2001-11-27 | Microsoft Corporation | Server stress testing using multiple concurrent client simulation |
US6185519B1 (en) * | 1998-02-10 | 2001-02-06 | Telcordia Technologies, Inc. | Method and system for feature interaction detection in a telecommunication network |
ITTO980372A1 (it) * | 1998-04-30 | 1999-10-30 | Alsthom Cge Alcatel | Apparato di simulazione di eventi per reti di telecomunicazioni e rela tivo metodo d'uso. |
US6397242B1 (en) | 1998-05-15 | 2002-05-28 | Vmware, Inc. | Virtualization system including a virtual machine monitor for a computer with a segmented architecture |
US8631066B2 (en) * | 1998-09-10 | 2014-01-14 | Vmware, Inc. | Mechanism for providing virtual machines for use by multiple users |
US7516453B1 (en) * | 1998-10-26 | 2009-04-07 | Vmware, Inc. | Binary translator with precise exception synchronization mechanism |
KR100282801B1 (ko) * | 1998-11-20 | 2001-03-02 | 김영환 | 무선가입자망 시스템에서 비알아이 서비스시 최소채널에 디채널 할당장치 및 그 방법 |
US6826522B1 (en) * | 1999-06-21 | 2004-11-30 | Pts Corporation | Methods and apparatus for improved efficiency in pipeline simulation and emulation |
US6457171B1 (en) * | 1999-06-30 | 2002-09-24 | Bull Hn Information Systems Inc. | Storage structure for dynamic management of translated code blocks in dynamic object code translation |
US6772107B1 (en) * | 1999-11-08 | 2004-08-03 | J.D. Edwards World Source Company | System and method for simulating activity on a computer network |
US7013251B1 (en) * | 1999-12-15 | 2006-03-14 | Microsoft Corporation | Server recording and client playback of computer network characteristics |
US6775793B2 (en) * | 1999-12-21 | 2004-08-10 | Texas Instruments Incorporated | Data exchange system and method for processors |
EP1124191A3 (en) * | 2000-02-02 | 2002-07-31 | Centric Software, Inc. | Simulation program having data probe services for accessing attributes thereof |
US6944583B1 (en) | 2000-02-02 | 2005-09-13 | Centric Software, Inc. | Multi-threaded frame safe synchronization of a simulation |
US6721696B1 (en) | 2000-02-25 | 2004-04-13 | Centric Software, Inc. | Simulation program having generic attribute access schema |
US6832184B1 (en) * | 2000-03-02 | 2004-12-14 | International Business Machines Corporation | Intelligent work station simulation—generalized LAN frame generation simulation structure |
US6629044B1 (en) | 2000-03-17 | 2003-09-30 | General Electric Company | Electrical distribution analysis method and apparatus |
US20020053066A1 (en) * | 2000-03-17 | 2002-05-02 | Richter Timothy Gerard | Circuit breaker mechanism modeling |
US6985617B1 (en) * | 2000-04-20 | 2006-01-10 | Vectorsgi, Inc. | Method and system for emulating a check sorter |
US6608274B1 (en) * | 2000-04-20 | 2003-08-19 | Sterling Commerce, Inc. | Method and system for online communication between a check sorter and a check processing system |
US6708329B1 (en) * | 2000-05-26 | 2004-03-16 | Itt Manufacturing Enterprises, Inc. | Method and apparatus for producing modules compatible with a target system platform from simulation system modules utilized to model target system behavior |
US7613599B2 (en) * | 2000-06-02 | 2009-11-03 | Synopsys, Inc. | Method and system for virtual prototyping |
US6651132B1 (en) | 2000-07-17 | 2003-11-18 | Microsoft Corporation | System and method for emulating the operation of a translation look-aside buffer |
US7506265B1 (en) | 2000-07-17 | 2009-03-17 | Microsoft Corporation | System and method for displaying images of virtual machine environments |
US7069205B1 (en) | 2000-07-17 | 2006-06-27 | Microsoft Corporation | System and method for emulating the operation of a video graphics adapter |
US7085705B2 (en) | 2000-12-21 | 2006-08-01 | Microsoft Corporation | System and method for the logical substitution of processor control in an emulated computing environment |
US20020083421A1 (en) * | 2000-12-22 | 2002-06-27 | Hitachi America, Ltd. | Assembly language code compilation for an instruction-set architecture containing new instructions using the prior assembler |
US7865349B2 (en) * | 2001-01-19 | 2011-01-04 | National Instruments Corporation | Simulation, measurement and/or control system and method with coordinated timing |
US6684277B2 (en) | 2001-01-26 | 2004-01-27 | International Business Machines Corporation | Bus transaction verification method |
US20030105620A1 (en) * | 2001-01-29 | 2003-06-05 | Matt Bowen | System, method and article of manufacture for interface constructs in a programming language capable of programming hardware architetures |
US6980946B2 (en) | 2001-03-15 | 2005-12-27 | Microsoft Corporation | Method for hybrid processing of software instructions of an emulated computer system |
US20020156885A1 (en) * | 2001-04-23 | 2002-10-24 | Thakkar Bina Kunal | Protocol emulator |
US20030110475A1 (en) * | 2001-05-16 | 2003-06-12 | Alcatel | Methods for testing the control software of a telecommunication equipment provided with a distributed type control |
US7177840B2 (en) | 2001-06-01 | 2007-02-13 | Vectorsgi, Inc. | Method and system for processing images for a check sorter |
WO2003043157A1 (en) | 2001-11-13 | 2003-05-22 | Prometric, A Division Of Thomson Learning, Inc. | Method and system for computer based testing using plugins to expand functionality of a test driver |
US20030093649A1 (en) * | 2001-11-14 | 2003-05-15 | Ronald Hilton | Flexible caching of translated code under emulation |
US20030093775A1 (en) * | 2001-11-14 | 2003-05-15 | Ronald Hilton | Processing of self-modifying code under emulation |
US20030093774A1 (en) * | 2001-11-14 | 2003-05-15 | Ronald Hilton | State-specific variants of translated code under emulation |
US7092869B2 (en) * | 2001-11-14 | 2006-08-15 | Ronald Hilton | Memory address prediction under emulation |
CN1615470A (zh) * | 2002-01-11 | 2005-05-11 | 施克莱无线公司 | 主机可扩展无线应用接口 |
US6907516B2 (en) * | 2002-05-30 | 2005-06-14 | Microsoft Corporation | Compression of program instructions using advanced sequential correlation |
US7124237B2 (en) * | 2002-10-03 | 2006-10-17 | Seagate Technology Llc | Virtual machine emulation in the memory space of a programmable processor |
US7224941B2 (en) * | 2003-10-20 | 2007-05-29 | Accton Technology Corporation | System and method for multi-path simulation |
US7249348B2 (en) * | 2003-10-21 | 2007-07-24 | Hewlett-Packard Development Company, L.P. | Non-interfering status inquiry for user threads |
US7278122B2 (en) * | 2004-06-24 | 2007-10-02 | Ftl Systems, Inc. | Hardware/software design tool and language specification mechanism enabling efficient technology retargeting and optimization |
US8271976B2 (en) | 2004-06-30 | 2012-09-18 | Microsoft Corporation | Systems and methods for initializing multiple virtual processors within a single virtual machine |
US7418006B2 (en) * | 2005-03-08 | 2008-08-26 | Microsoft Corporation | Virtual endpoints |
US20070027669A1 (en) * | 2005-07-13 | 2007-02-01 | International Business Machines Corporation | System and method for the offline development of passive simulation clients |
US7792666B2 (en) * | 2006-05-03 | 2010-09-07 | Sony Computer Entertainment Inc. | Translation block invalidation prehints in emulation of a target system on a host system |
US8769511B2 (en) * | 2006-02-16 | 2014-07-01 | The Regents Of The University Of California | Dynamic incremental compiler and method |
US7945901B2 (en) * | 2006-08-16 | 2011-05-17 | Seiko Epson Corporation | System and method for facilitating software profiling procedures |
US9274820B2 (en) | 2006-12-21 | 2016-03-01 | International Business Machines Corporation | Specifying user defined or translator definitions to use to interpret mnemonics in a computer program |
US8060356B2 (en) | 2007-12-19 | 2011-11-15 | Sony Computer Entertainment Inc. | Processor emulation using fragment level translation |
US9031221B2 (en) * | 2009-12-22 | 2015-05-12 | Cyara Solutions Pty Ltd | System and method for automated voice quality testing |
WO2012103367A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Guest to native block address mappings and management of native code storage |
WO2012103245A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines Inc. | Guest instruction block with near branching and far branching sequence construction to native instruction block |
WO2012103253A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Multilevel conversion table cache for translating guest instructions to native instructions |
WO2012103359A2 (en) * | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Hardware acceleration components for translating guest instructions to native instructions |
CN103620547B (zh) | 2011-01-27 | 2018-07-10 | 英特尔公司 | 使用处理器的转换后备缓冲器的基于客户指令到本机指令范围的映射 |
WO2012103373A2 (en) | 2011-01-27 | 2012-08-02 | Soft Machines, Inc. | Variable caching structure for managing physical storage |
TWI492054B (zh) * | 2012-11-05 | 2015-07-11 | Phison Electronics Corp | 快閃記憶體的模擬方法與模擬器 |
WO2014151652A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines Inc | Method and apparatus to allow early dependency resolution and data forwarding in a microprocessor |
WO2014151691A1 (en) | 2013-03-15 | 2014-09-25 | Soft Machines, Inc. | Method and apparatus for guest return address stack emulation supporting speculation |
US9213563B2 (en) * | 2013-12-30 | 2015-12-15 | Unisys Corporation | Implementing a jump instruction in a dynamic translator that uses instruction code translation and just-in-time compilation |
US9183018B2 (en) * | 2013-12-30 | 2015-11-10 | Andrew T Jennings | Dynamic on/off just-in-time compilation in a dynamic translator using instruction code translation |
US10380348B2 (en) * | 2016-11-21 | 2019-08-13 | ZingBox, Inc. | IoT device risk assessment |
US11070568B2 (en) | 2017-09-27 | 2021-07-20 | Palo Alto Networks, Inc. | IoT device management visualization |
US11082296B2 (en) | 2017-10-27 | 2021-08-03 | Palo Alto Networks, Inc. | IoT device grouping and labeling |
CN112640381B (zh) | 2018-06-18 | 2024-03-08 | 帕洛阿尔托网络公司 | 检测物联网设备的不合期望的行为的方法和系统 |
US11451571B2 (en) | 2018-12-12 | 2022-09-20 | Palo Alto Networks, Inc. | IoT device risk assessment and scoring |
US11689573B2 (en) | 2018-12-31 | 2023-06-27 | Palo Alto Networks, Inc. | Multi-layered policy management |
US11115799B1 (en) | 2020-06-01 | 2021-09-07 | Palo Alto Networks, Inc. | IoT device discovery and identification |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3698007A (en) * | 1970-11-30 | 1972-10-10 | Honeywell Inc | Central processor unit having simulative interpretation capability |
US4031517A (en) * | 1974-04-24 | 1977-06-21 | Honeywell Information Systems, Inc. | Emulation of target system interrupts through the use of counters |
SE467229B (sv) * | 1983-08-19 | 1992-06-15 | Kurt Katzeff | Anordning foer bildande av en information och/eller instruktion avsedd att inmatas i en datamaskins programminne |
US4794522A (en) * | 1985-09-30 | 1988-12-27 | International Business Machines Corporation | Method for detecting modified object code in an emulator |
JPS6388662A (ja) * | 1986-10-01 | 1988-04-19 | Hitachi Ltd | デ−タ通信方式 |
WO1988007718A1 (en) * | 1987-03-24 | 1988-10-06 | Insignia Solutions Limited | Arrangement for software emulation |
DE3788877T2 (de) * | 1987-03-24 | 1994-06-23 | Insignia Solutions Ltd | Einrichtung zur software-emulation. |
US5684721A (en) * | 1987-09-04 | 1997-11-04 | Texas Instruments Incorporated | Electronic systems and emulation and testing devices, cables, systems and methods |
ATE146611T1 (de) * | 1990-05-04 | 1997-01-15 | Ibm | Maschinenarchitektur für skalaren verbundbefehlssatz |
US5465361A (en) * | 1990-09-10 | 1995-11-07 | The Regents Of The University Of California | Microcode linker/loader that generates microcode sequences for MRI sequencer by modifying previously generated microcode sequences |
US5613098A (en) * | 1991-03-07 | 1997-03-18 | Digital Equipment Corporation | Testing and debugging new Y architecture code on existing X architecture system by using an environment manager to switch between direct X code execution and simulated Y code execution |
US5442772A (en) * | 1991-03-29 | 1995-08-15 | International Business Machines Corporation | Common breakpoint in virtual time logic simulation for parallel processors |
US5233628A (en) * | 1991-05-29 | 1993-08-03 | Virginia Polytechnic Institute And State University | Computer-based bit error simulation for digital wireless communications |
US5621670A (en) * | 1991-08-01 | 1997-04-15 | Fujitsu Limited | Communication service simulator and a communication service specification verifying method |
US5410681A (en) * | 1991-11-20 | 1995-04-25 | Apple Computer, Inc. | Interpreter for performing remote testing of computer systems |
US5430605A (en) * | 1992-08-04 | 1995-07-04 | Murata Erie North America, Inc. | Composite multilayer capacitive device and method for fabricating the same |
US5572710A (en) * | 1992-09-11 | 1996-11-05 | Kabushiki Kaisha Toshiba | High speed logic simulation system using time division emulation suitable for large scale logic circuits |
US5913051A (en) * | 1992-10-09 | 1999-06-15 | Texas Instruments Incorporated | Method of simultaneous simulation of a complex system comprised of objects having structure state and parameter information |
AU6629894A (en) * | 1993-05-07 | 1994-12-12 | Apple Computer, Inc. | Method for decoding guest instructions for a host computer |
US5488569A (en) * | 1993-12-20 | 1996-01-30 | At&T Corp. | Application-oriented telecommunication system interface |
US5481684A (en) * | 1994-01-11 | 1996-01-02 | Exponential Technology, Inc. | Emulating operating system calls in an alternate instruction set using a modified code segment descriptor |
US5649164A (en) * | 1994-12-30 | 1997-07-15 | International Business Machines Corporation | Sets and holds in virtual time logic simulation for parallel processors |
US5748617A (en) * | 1996-05-01 | 1998-05-05 | Mci Corporation | Method and apparatus for emulating a digital cross-connect switch network |
-
1997
- 1997-06-13 US US08/874,660 patent/US6142682A/en not_active Expired - Lifetime
- 1997-07-03 US US08/887,653 patent/US5946474A/en not_active Expired - Lifetime
-
1998
- 1998-06-12 CA CA002293560A patent/CA2293560A1/en not_active Abandoned
- 1998-06-12 CN CN98808090A patent/CN1266513A/zh active Pending
- 1998-06-12 EP EP98933612A patent/EP0988592A1/en not_active Withdrawn
- 1998-06-12 WO PCT/EP1998/003568 patent/WO1998057262A1/en not_active Application Discontinuation
- 1998-06-12 AU AU83371/98A patent/AU8337198A/en not_active Abandoned
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1306399C (zh) * | 2002-12-10 | 2007-03-21 | 英特尔公司 | 用于网络处理器的虚拟机 |
CN1296825C (zh) * | 2003-10-22 | 2007-01-24 | 松下电器产业株式会社 | 模拟器及模拟方法 |
CN1294495C (zh) * | 2004-05-20 | 2007-01-10 | 北京大学 | 模拟器构造方法 |
CN101777007B (zh) * | 2010-01-28 | 2013-04-10 | 中国科学技术大学苏州研究院 | 片上多核处理器的并行功能仿真系统及其方法 |
CN102375418A (zh) * | 2010-06-08 | 2012-03-14 | 株式会社日立制作所 | 控制装置及其数据处理方法 |
CN102447604A (zh) * | 2010-09-30 | 2012-05-09 | 迈普通信技术股份有限公司 | 路由表信息存储方法以及路由设备 |
CN102447604B (zh) * | 2010-09-30 | 2016-01-27 | 迈普通信技术股份有限公司 | 路由表信息存储方法以及路由设备 |
US8677186B2 (en) | 2010-12-15 | 2014-03-18 | Microsoft Corporation | Debugging in data parallel computations |
CN102609243A (zh) * | 2010-12-27 | 2012-07-25 | 微软公司 | 仿真指针 |
CN102609243B (zh) * | 2010-12-27 | 2014-12-10 | 微软公司 | 仿真指针 |
US8997066B2 (en) | 2010-12-27 | 2015-03-31 | Microsoft Technology Licensing, Llc | Emulating pointers |
US8677322B2 (en) | 2011-06-29 | 2014-03-18 | Microsoft Corporation | Debugging in a multiple address space environment |
CN107665281A (zh) * | 2017-09-27 | 2018-02-06 | 浙江大学 | 一种基于fpga的处理器模拟方法 |
Also Published As
Publication number | Publication date |
---|---|
US5946474A (en) | 1999-08-31 |
US6142682A (en) | 2000-11-07 |
WO1998057262A1 (en) | 1998-12-17 |
WO1998057262A8 (en) | 1999-06-03 |
AU8337198A (en) | 1998-12-30 |
EP0988592A1 (en) | 2000-03-29 |
CA2293560A1 (en) | 1998-12-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1266513A (zh) | 计算机处理器的模拟 | |
EP1119807B1 (en) | Program code conversion | |
US5212794A (en) | Method for optimizing computer code to provide more efficient execution on computers having cache memories | |
US5752038A (en) | Method and system for determining an optimal placement order for code portions within a module | |
KR100528278B1 (ko) | 데이터 블록들을 압축하여 메모리를 관리하는 방법 | |
US7784039B2 (en) | Compiler, compilation method, and compilation program | |
CN1278932A (zh) | 具有可变宽度指令的数字信号处理器 | |
US6216213B1 (en) | Method and apparatus for compression, decompression, and execution of program code | |
JP2002502516A (ja) | 変換後命令を使用する選択的エミュレーションインタープリテーション | |
CN115438114B (zh) | 存储格式转换方法、系统、装置、电子设备及存储介质 | |
US5940621A (en) | Language independent optimal size-based storage allocation | |
CN100428184C (zh) | 具有自驱动功能的指令仿真解析系统及其实现方法 | |
CN114428639A (zh) | 一种字节码指令集的指令精简方法和系统 | |
US6052530A (en) | Dynamic translation system and method for optimally translating computer code | |
CN1122212C (zh) | 实现多重返回位置的方法和装置 | |
US5642514A (en) | Method and system for constructing compact executable files by eliminating redundant debugging strings | |
CN1447938A (zh) | 程序连接方法 | |
JPH01118931A (ja) | プログラム変換方式 | |
EP0945795B1 (en) | Computer system having a multi-pointer branch instruction and method | |
US20050076172A1 (en) | Architecture for static frames in a stack machine for an embedded device | |
CN100498716C (zh) | 一种用于处理器仿真模型中的系统调用转换直通通道方法 | |
WO2005059738A2 (en) | Memory-efficient instruction compressing scheme | |
CN101320401B (zh) | 一种电子硬件芯片的获得方法和装置 | |
CN110109939B (zh) | 基于结构化查询语言sql的开发方法、设备及存储介质 | |
JPH02140825A (ja) | プログラムの再配置処理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |