CN1278224C - 在多处理器宿主系统上进行多处理器仿真的方法和系统 - Google Patents
在多处理器宿主系统上进行多处理器仿真的方法和系统 Download PDFInfo
- Publication number
- CN1278224C CN1278224C CN03156991.9A CN03156991A CN1278224C CN 1278224 C CN1278224 C CN 1278224C CN 03156991 A CN03156991 A CN 03156991A CN 1278224 C CN1278224 C CN 1278224C
- Authority
- CN
- China
- Prior art keywords
- thread
- host
- processor
- threads
- emulation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45537—Provision of facilities of other operating environments, e.g. WINE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
Abstract
一种用于在宿主计算系统上执行为目标指令集体系结构编写的多处理器程序的方法(和系统),该宿主计算系统具有多个被设计来处理第二指令集体系结构的指令的处理器,该方法包括将被设计用来在目标计算系统的处理器上运行的程序的每个部分表示为将在宿主计算系统上被执行的一个或多个程序线程。
Description
技术领域
本发明一般地涉及计算机系统,具体地涉及一种在一个多重处理计算系统(multiprocessing computing system)上再现另一个多重处理计算系统的行为的方法(和系统)。
技术背景
人们很早就认识到,需要在一个计算机系统上仿真(emulate)另一个计算机系统的行为。为此提出过几种方案。在作为参考包含于此的美国专利No.5,832,205中有对这些技术的综述。
美国专利No.5,832,205的解决方案包括一个组合的硬件/软件方案,它在一个处理器上进行对另一个处理器的指令集的仿真。该方案允许硬件设计纳入有助于目标指令集的执行的特征。然而,由于同一个原因,它无法同样有效地仿真所有系统。
作为参考包含于此的SimOS(例如,参见Stephen A.Herrod,“UsingComplete Machine Simulation to Understand Computer SystemBehavior”,博士论文,斯坦福大学,1998年2月)和SimICS(例如,参见Peter S.Magnusson,“A Design For Efficient Simulation of aMultiprocessor”,第一届国际计算机和电信系统的建模、分析和仿真(MASCOTS)研讨会会议记录,La Jolla,加利福尼亚,1993年1月,69-78页)是无需特殊硬件特征而能进行仿真的例子。然而,它们的性能却不如美国专利No.5,832,205的有效。
一般而言,这些系统使用了多级转换。已有人描述过这样的技术(例如,参见Jim Turley,“Alpha Runs x86 Code with FX132”,1996年3月5日,Microprocessor Report),其中转换的程度(范围)根据代码执行的程度(范围)而变化。
然而,今天的计算机系统包含不止一个处理器(如与单处理器系统相对的多处理器系统)。传统计技术尚未很好地解决这些多处理器系统的仿真。
另外,除了在这样的系统上仿真多个处理器以外,其它方面需要仿真的有处理器之间的各种形式的通信,以及决定多个处理器对存储器位置访问顺序的规则。
SimOS和SimICS都试图仿真多处理器系统的行为。但是它们没有使用多处理器系统作为宿主(host)计算系统。
因而,传统技术没有解决在多处理器系统中的多处理器仿真的问题。
这就是说,传统技术(及指令集结构)常局限于(并指的是)被仿真单个处理器系统,而今天的大多数系统是多处理器系统,尤其大系统(如超出个人计算机(PC)领域之外的)更是如此。因此,被用于以一个处理器简单地仿真另一个处理器的技术在多处理器系统环境中无法使用。就是说,当有多个处理器存在时,为单处理器系统设计的传统仿真技术不起作用。
发明内容
鉴于传统方法和结构的上述及其它问题、障碍和缺点,本发明的一个目标是提供一种方法和结构,其中利用某种处理器指令集和存储器结构,使得一个多处理器系统可以有效地仿真使用其它处理器指令的另一个多处理器系统的行为。
根据本发明的第一个方面,一种用于在具有被设计用来处理第二指令集结构的指令的多个处理器的宿主计算系统上执行为目标指令集结构所编写的程序的方法(和系统),包括,将设计用来在目标计算系统的处理器上运行的程序的每个部分表示为将在宿主计算系统上执行的一个或多个程序线程(thread),以及调度所述线程,以便在宿主系统的一个或多个处理器上执行。
根据本发明的第二个方面,一个系统(和方法),包括:将目标系统的硬件资源映射到软件线程的装置;将线程映射到宿主系统的硬件资源的装置;将目标系统的状态信息映射到宿主系统的存储器中的装置;以及通过将仿真任务划分为大量线程而提高仿真性能的装置。
根据本发明的第三个方面,一种多处理器系统的宿主计算机的线程处理装置,包括:一个线程池,用于保持线程;一个线程处理器中,用于访问宿主系统的存储器,并决定从线程池中选择哪个线程用于仿真;一个线程生成器,用于创建新线程,并将所述新线程放入线程池;以及一个线程调度器,用于对线程池中保持的线程进行调度,该调度器扫描正在等待的线程并按照优先级次序将下一个线程分配给可用的处理器。
根据本发明的第四个方面,一种以有形的方式体现机器可读指令的程序的信号承载介质,该程序由数字处理设备执行来完成在具有被设计用来处理第二指令集结构的指令的多个处理器的宿主计算系统上执行为目标指令集结构而编写的程序的方法,该方法包括把设计用来在目标计算系统的一个处理器上运行的程序的每一部分表现为在宿主计算系统上执行的一个或多个程序线程。
使用本发明的独有的和非显而易见的方面,对具有多个处理器的系统的仿真可以被高效地进行。进一步地,本发明使用宿主计算机进行该仿真。
此外,本发明的一个关键特征是摆脱了宾客系统(guest system)是一件硬件的概念。代之以,本发明将宾客系统当作一个软件。
这样,宾客(guest)被更抽象地视为具有多个并行的、需要执行的线程,然后这些线程被映射到宿主机的硬件资源中。这从本质上消除了通常把程序中的并行性映射到宾客的硬件、然后宾客的硬件由宿主(机)的硬件仿真的中间步骤。本发明消除该中间步骤,即使知道在宾客上可能实际上存在硬件,其可能已映射到宿主的硬件。
因而,本发明消除了将宾客(机)的应用的软件线程映射到宾客的硬件的步骤。其后,宾客的这些线程中的每一个都被调度,用于在宿主的一个或多个处理器上运行。
本发明的另一个优点是建造和调试这样一个系统更容易了,因为不再需要操心使宾客机的硬件细节正确。
附图说明
通过下面参照附图对本发明的优选实施例的详细描述,会使本发明的上述和其它的目的、方面和优点得到更好的理解,在附图中:
图1示出一个目标多处理器计算系统100,包括多个处理单元、一个存储器子系统、一个一致性总线(coherent bus)互连,和一个输入/输出(I/O)处理器;
图2示出在图1所示系统100上执行的各种指令的一个分类方案200;
图3示出一个宿主多处理器计算系统300,包括多个宿主处理单元,一个宿主存储器子系统,一个一致性宿主总线互连,和一个宿主I/O处理器;
图4示出将目标系统100中的各种资源映射到400宿主系统300的存储器中;
图5示出宿主系统300上的一个线程处理软件结构500;
图6示出一个系统,其中存储器访问使用特定于线程的存储器可以被更快地进行;
图7示出一个系统700,用于将目标系统的功能简单地映射到宿主系统的各线程中;
图8示出一个系统800,用于从图7所示线程到多重处理宿主系统中的处理器的普通映射(trivial mapping);
图9示出一个系统900,用于将图7所示线程更有效地映射到多重处理宿主系统中的处理器;
图10示出一个更一般的系统1000,其可以被映射到一个多重处理宿主系统上;
图11示出一个仿真方案1100,它将转换(结果)缓存以便重用(reuse)。
图12示出一个系统1200,用于产生并行转换线程;
图13示出一个系统1300,它是图9的增强,以容纳附加的转换线程;以及
图14示出一种信号承载介质1400(例如存储介质),用于保存按照本发明的程序的步骤。
具体实施方式
现在参照附图,更具体地说参照图1至14,其中示出了根据本发明的方法和结构的优选实施例。
图1示出了一个用于被仿真的一般多重处理系统100。它包括多个处理器110A至110D,其中每一个都可能有自己的局部高速缓存(localcaches),并通过某互连网络120与存储器分层体系结构(memoryhierarchy)130连接,该存储器分层体系结构可能包括由主存储器(未示出)支持(备份)的附加的高速缓存级别。该系统也可以通过I/O处理器140访问包括盘(磁盘、光盘)和通信网络的I/O设备,该I/O处理器将来自系统的进向请求格式化为设备能理解的形式。显然,该系统不限于如图所示的4个处理器等,而是事实上可以使用任何数量的处理器等。
图1中的每个处理器110A-110D都可以被看作好像正在执行影响到系统100的状态的指令。每个指令的效果可按如图2的方案200所示进行分类。
例如,一个指令可以根据其是否只影响执行它的处理器的局部资源还是影响在所有处理器中所共享的资源,而宽范地划分为“局部资源指令”或“共享资源指令”。局部资源的例子有每个处理器局部的通用寄存器、浮点寄存器、处理器状态寄存器和控制寄存器。共享资源可以包括存储器和I/O设备。
对共享资源的仿真必须格外小心,因为多个处理器可能试图在一个给定的期间访问这些资源。重要的是,在仿真的系统中共享资源的访问的顺序应当与被仿真的系统中可能发生的顺序相同。
为了对此进行有效的管理,共享资源指令进一步被划分为(a)“排它指令”,意即它们访问由执行处理器独占(排它)使用的共享资源,(b)“共享读指令”,意即该指令所使用的共享资源只被读取而不被改变,以及(c)“通信指令”,其包括所有其它共享资源指令。之所以称为通信指令,是因为它们通常被用于从一个处理器到另一个处理器之间传递信息,如一个处理器写入一个值,而另一个或多个处理器读取该值。
图3显示了一个希望在其上进行仿真的宿主系统300。它在物理结构上与图1的目标系统100相似,尽管某些细节可能不同。
例如,宿主处理器的指令集可能与目标处理器的不同。处理器310A至310D的数量和存储器大小也可能不同。访问共享资源的互连网络320在形式上和功能上都可能不同。我们将假设宿主系统被配置为SMP(symmetric multiprocessing,对称多重处理)配置。这一点隐含的意思之一是宿主(机)中的所有处理器310A至310D都将访问相同的存储器,并在访问存储器位置时具有大体相似的延迟。图中也示出了宿主I/O处理器340,它与图1所示处理器140相似。
目标系统中每个资源的状态是通过分配宿主系统300的存储器的区域而被建模的。这里假设仿真是在共享虚拟存储器操作系统环境中进行的。这提供了可以容纳目标系统的所有真实资源的宿主存储器大小(尺寸)。
图4示出了宿主(机)300的虚拟存储器(VM)400的分解,它仿真了目标系统100的各种资源。VM 400包括共享资源410(如目标真实存储器)、处理器局部资源420(如通用寄存器、浮点寄存器、程序计数器、控制寄存器等)、I/O局部资源和仿真程序存储器。
我们注意到,64位虚拟寻址宿主(机)完全可以适应数十甚至数百千兆字节的真实存储器,以及数百个处理器的局部资源,而仍然有足够的可用寻址能力用于仿真程序本身。
除了共享存储器SMP,我们还将假设操作系统支持多线程。此种支持的一个例子是Unix操作系统中的p-threads软件包(例如,参见BradfordNichols等人的“Pthreads Programming:A POSIX Standard for BetterMultiprocessing,”(O’Reilly Nutshell),1996年9月)。这样的软件包(package)允许在软件中创建并行执行的多个程序流,同时也允许在这些程序流之间安全地共享变量。此外,这些软件包通常也提供了工具(手段)来繁育(spawn)新线程,“杀死”(终止)线程,以及中断或唤醒线程。
我们注意到,存在如图1至4所示的系统,本发明可以示例性地在其上实施。确实,本发明的一个目的就是实施本发明,而无需更改宿主系统中的物理硬件(如插入任何硬件修改),从而根据本发明进行仿真。
图5示出了根据本发明的一个线程处理系统500。系统500包括一个线程处理器510、一个线程生成器520、一个线程池530和一个线程调度器(scheduler)400。
如图5所示,线程处理器(引擎)510决定从线程池530中选择哪个线程用于仿真,以此处理(调度)线程池530中保持的线程。
在处理线程的操作中,有时线程处理器决定必须创建一些新线程。因而,线程被线程生成器520创建,并被放置在线程池530中。线程调度器540扫描等待的线程,并按优先次序将下一个线程分配给一个可用的处理器。
线程在一个处理器中的执行涉及到读宿主虚拟存储器400中的某些位置,并修改这些或其它位置。因此,线程处理器与宿主虚拟存储器400交互,从而也把宾客系统的存储器映射到宿主的存储器中。对于该线程处理器可用的只是宿主虚拟存储器,因此会发生这种映射。
我们注意到,如果图5所示的模型不可用,则在传统系统中所发生的将是事先确定什么线程存在(例如,假设每一个宿主处理器是一个线程),然后使用宿主上可用的(线程)进行一到一的映射。如上所述,这种技术存在许多问题。
因此,本发明使用了创造性的线程处理器500,以决定需要创建和调度什么线程。
假设一个大的线程池500,随着可用来处理这些线程的处理器的数量的增加,系统的效率提高。然而,这种效率可能会受到如图2中所定义的通信类型的指令的数量的限制。
即使目标系统的整个真实存储器是共享的,也常常能够将该存储器进一步划分为三个类别,这三个类别与图2所示共享资源指令的三个子类相对应。
这些区域是(a)“排它访问区域”,(b)“只读区域”,和(c)“其它共享区域”。排它访问区域是只能由单个线程访问的那些区域。只读区域可以被多个线程访问,但从来不被修改。因此,复制这些区域,并将一个拷贝(复本)包括作为该线程的局部排它区域的一部分是允许的。
其它共享区域应当以不同方式对待。例如,如果为了有效的局部访问而制作了复本,则重要的是一个线程所作的更改应当正确地传达给所有其他可能正在访问或将在未来访问该相同区域的线程。
图6示出了使用特定于线程的存储器610如何可以使存储器访问的速度更快。就是说,线程处理器510可以访问线程指定(局部)存储器而进行快速访问,而宿主虚拟存储器的共享部分是以受保护访问方式被访问的。
因此,为了提高效率,存储器可以被划分为多个(例如两个)部分。第一个部分是通信最少的部分,而第二个部分是在线程之间有大量通信的部分。
因而,如果存储器的一些部分是专用于每个线程的,则可以使这些部分成为快速访问存储器,而需要彼此“对话”(例如,需要被共享)且可能不需要快速访问(例如,由于必须检查它们的权限,以确定是否允许这种访问等)的线程则被形成宿主虚拟存储器的一个共享部分。因此,通过把存储器划分为两个部分,就可实现更快的总的存储器访问速度。
图7示出了把仿真一个目标多重处理系统的任务(功能)直接映射700到宿主系统的线程。
每个处理器710A、710B、710C、710D等及其资源都分别被仿真作为线程720A、720B、720C、720D等。同时示出的还有I/O处理器730和I/O线程740。显然,本发明不要求处理仅仅是与传统意义上的处理器有关的处理,而是也包括I/O处理器、IBM 390系统的通道、某些系统中的协处理器等。
另外,提供了一个系统线程750,它包括目标系统的所有不是特定于处理器的功能760,以及所有仿真系统本身的功能,包括处理线程创建、线程间通信、调试和性能监视方面的任务。
我们注意到,图7所示概念可以在单个处理器上实现,其中一个单个处理器处理来自宿主的(多个)线程。就是说,使用单个处理器,可以认为该概念是一个多重程序设计系统(multiprogramming system),其中在单个处理器上不断地发生各种线程之间的切换。仿真系统本身处于包含前述线程软件包的共享存储器SMP操作系统之下。
图8示出了一个多处理器系统,其中的线程软件包可被编写为将每个线程820A、820B、820C、820D等映射到宿主处理器810A、810B、810C、810D等中的一个(与上述单处理器的情况形成对比)。此外还示出了I/O线程840被映射到宿主处理器810E,以及系统线程850被映射到宿主处理器810F。
图8所示方法的优点是,进行仿真的各宿主处理器之间的物理通信限于各线程本身之间所发生的通信。由于线程紧密地映射到该被仿真的目标系统的结构,因而宿主的通信行为与目标系统的通信行为是相似的。
然而,伴随图8所示此种方法的一个缺点(例如,该方法暗示了线程和宿主处理器之间的一对一的关系)是宿主系统有可能未充分利用。就是说,在每个宿主处理器都分别专用于一个单个线程的系统中,如果被仿真的目标处理器中的一个处于空闲状态,则相应的宿主处理器也不会被充分利用。
该技术的另一个缺点是其可伸缩性。如果宿主系统具有比目标系统多很多的处理器,则很多额外的处理器就不能被适当利用。相反,如果宿主系统具有较少的处理器,则线程到处理器的一对一映射将只能通过将多个目标处理器映射到相同线程来实现。
图9示出了一个系统900,它提供了避免上述某些问题的解决方案,其中包括一个宿主处理器簇(cluster)910、一个线程调度器920、一个仿真线程簇930。正如下面将要讨论的,由于图9所示系统采取行动平衡各宿主处理器的负载,更高的效率得以产生。确实,可能会有某些期间,其中某些处理器完全空闲而某些则完全超负荷。包括线程调度器920的图9所示系统用于使负载平滑(平衡)。更具体地说,线程调度器920决定何时把哪个线程放在何处(例如哪个宿主处理器),从而使负载均衡最优化。
这样,如前所述,当线程的数量增多时,动态线程映射相对于静态映射的优势将增大。因而,有可能重新构造仿真系统,以提供更多的并行线程,而不是如图7所示的每个处理器一个线程的方案。
图10示出如何把一个更一般的系统1000映射(仿真)到多重处理宿主系统上。系统1000可以包括一个宿主处理器簇1010、一个线程调度器1020、一个或多个仿真线程簇1030和多个宿主应用线程1040。
就是说,本发明不仅可用于多重处理主机,也可用于如图10所示类似于IBM 390系统的主机,其中有一个簇配置,它具有多个不同的相互之间通信的多处理器。因此,即使这样的系统也可以在上述类型的多重处理宿主上被仿真。
此外,本发明系统不仅限于仿真。就是说,该特定系统不仅限于进行仿真,而是例如,应用(如Linux)可以直接在该宿主上运行,此时应用并没有处于仿真之中而是在宿主上作本机运行。在这种情况下,宿主应用线程1040可以在宿主上运行,并由线程调度器1020调度/管理(该线程调度器也管理仿真线程簇的线程)。因此,本发明不仅对于仿真,而且对于直接在宿主上运行应用都有极大的用处。
我们注意到,Herrod的关于SimOS的上述文章和美国专利No.5,832,205已指出,仿真系统的性能可以通过如下进行缓存而得到极大提高。
就是说,如果预期一组指令将被执行数次,则首先将其由目标指令集转换为宿主指令集,然后将转换结果(translation)保存在一个称为“转换高速缓存”的特殊存储器区域中。当此后遇到此组指令的地址时,则直接执行本机宿主指令。通过避免重新取目标指令和重新转换这些指令,指令组的执行显著加快。通过分析这组指令并使产生的转换结果最优化,可以获得进一步的益处。此种最优化的一些例子可参见作为参考包含于此的美国专利No.5,832,205。
通过缓存转换结果而获得的益处既依赖于转换指令组所需要的努力,也依赖于被转换的(指令)组最终被执行的次数。由于对大多数代码而言,后者是无法预测的,因而使用了试探法(heuristics)来决定潜在的转换候选对象。
图11显出了执行以上操作的一个方法1100,一个简单的试探法是记录一个给定指令组过去执行的次数,并在该计数超过预定阈值时转换该(指令)组。
图11示出一个转换表1110,它是由下一次被执行的指令组的地址索引的。
在步骤1120中,如果在转换表1110中有相应于此地址的有效的条目,则它指向已转换的本机指令应当从中读取并执行的位置。
如果没有如步骤1120所确定的有效条目,则目标指令直接被解释(步骤1130),并且与该指令组相关联的计数器被递增(步骤1140)。
如果该计数器超过了一个阈值(步骤1150),例如如果该组已被解释了5次,则该指令组即被调度进行转换(步骤1160)。
如果在步骤1120中,确定该指令已经被转换(即判断结果为“是”),则通过访问转换高速缓存1175,在步骤1170中执行缓存的指令组转换结果。
然后,在步骤1180中,确定下一个要被仿真的指令组。
在如美国专利No.5,832,205所描述的系统中,被仿真的线程执行转换或是在发现临界条件满足之时,或是在下次执行程序组之前。线程执行转换所花费的时间本来可能被用于开始执行下一组指令,因此它代表了系统的一种开销。
一个更有效的方法是线程简单地把指令组放入转换池(如1190),并继续下一组指令的执行。这样,当转换已经被完成时,转换的目标(object)被放入转换高速缓存,带有转换表1110中的一个指针,正如下面将讨论的图12所示的。
图12示出了用于产生并行转换线程的系统1200。
在图12中,另一个称为转换池管理器(即图12所示的1210)的线程,监视转换池(图11所示的1190),以挑选需要转换的指令组,并独立于处理器线程的执行。进一步讲,转换池管理器1210本身也不需要执行转换。
由于转换一组指令的处理过程大体上独立于转换另一组指令的处理过程,转换池管理器1210可以繁育(spawn)几个线程,其中每个线程都对来自转换池的一组指令执行转换,如图12所示。
在图12中,转换池管理器1210从转换池1190中选择一个指令组进行转换。转换池管理器1210更新转换表1110,然后轮流将线程提供给转换线程调度器1220。转换线程调度器调度转换线程1230A、1230B、1230C、1230D等,并将它们写入转换高速速缓存1240。
此系统/操作的效果本质上是将仿真任务进一步划分为可由宿主多重处理系统更好地利用的独立平行线程。因而,图12的系统利用了转换特性,把它纳入其中,并将它映射到本发明系统的框架中。因而,这种缓存转换结果(并实际上执行该转换)的特性加强了由本发明系统进行的仿真(以及所处理的线程类型)。
图13示出了系统1300,它包括一个宿主处理器簇1310、一个线程调度器1320和一个仿真线程簇1330。图13是图9的修改视图,它具有可以提高宿主系统的性能和利用率的附加的线程。这种附加线程的益处进一步延伸到如图10所示的多簇大型机仿真系统。因而,尽管图13为了清楚和简洁的缘故,只示例性地示出了一个仿真线程簇,可以如图10所示提供多个这样的仿真线程簇,以及如图10所示的各宿主应用线程1040。
除了如上所述的硬件/软件环境,本发明的另一个不同方面包括一个由计算机实施的、用于完成上述方法的方法。作为一个例子,该方法可以在如上讨论的特定环境中实施。
例如,这样一种方法可以通过操作多处理器系统中的、如数字数据处理器所体现的计算机,以执行机器可读的指令序列而实现。这些指令可以存在(驻留)于各类信号承载介质中。
因此,本发明的这个方面被指向编程产品,包括以有形的方式体现机器可读的指令的程序的信号承载介质,该指令程序可以由包含处理器/中央处理单元(CPU)和上述硬件的多重处理系统中的一个或多个数字数据处理器执行,以实施本发明的方法。
例如,该信号承载介质可以包括CPU中包含的RAM,如由快速访问存储装置所代表的。可替代地,该指令也可以被包含在其它信号存储介质中,如包含在可由CPU直接或间接访问的磁性数据存储盘1400(图14)中。
不管是包含在磁盘1400中,还是包含在计算机/CPU中,或包含在其它地方,该指令可以被存储在各种机器可读的数据存储介质中,如DASD存储(如传统的“硬盘驱动器”或RAID阵列)、磁带、电子只读存储器(如ROM、EPROM或EEPROM)、光存储设备(如CD-ROM、WORM、DVD、数字光带等)、纸质“穿孔”卡或其它适当的信号承载介质,包括传输介质,如数字的和模拟的和通信链路和无线链路。在本发明的一个说明性实施例中,机器可读的指令包括软件目标代码,该目标代码是由诸如C等语言编译而成的。
尽管本发明被按照几个优选实施例进行了说明,但本领域的专业人士能够认识到,实施本发明时,可以在所附权利要求的精神和范围内进行修改。
我们注意到,如上所述,本发明有很多益处,包括有效的仿真。此外,本发明可以被用作进行有助于负载均衡的“虚拟化”(virtualization)的基础。虚拟化可以采取各种形式,包括负载均衡。例如,虚拟化也可用于容错,其中在一个具有一对一映射(或其它映射方案)的系统中,如果一个处理器发生故障,系统仍可以继续工作,因为发生故障的系统可以得到抽象,并可以有一个较小的宿主处理器池。因而,另一个处理器可以承担起发生故障的处理器的职责。
本发明的另一个可能应用是在节能方面。就是说,当确定在多处理器系统中消耗了过多能量后,某些处理器可以关闭,而整个仿真系统的功能可以在较低的能量水平上维持。在这种情况下,被关闭的处理器的功能可以被转移到另一个处理器上。通过本发明做到这一点比较容易,因为每个处理器被视为一个线程,而不是线程到处理器的一对一映射。
就是说,本发明的方案是多对多映射,而不是上述Herrod文章中SimOS技术的多对一映射,或美国专利No.5,832,205的一对一映射方案。
此外,应当注意,申请人的意图是涵盖所有权利要求元素的等同物,即在获得权力的过程中进行了修改。
Claims (15)
1.一种在一个宿主计算系统上执行为目标指令集体系结构编写的程序的方法,该宿主计算系统具有多个被设计用来处理一个第二指令集体系结构的指令的处理器,该方法包括:
将设计用来在目标计算系统的一个处理器上运行的该程序的每个部分表示为将在宿主计算系统上执行的一个或多个程序线程;以及
调度所述线程,以便在宿主系统的一个或多个处理器上执行。
2.根据权利要求1所述的方法,其特征在于,进一步包括:
将目标系统的不是特定于目标系统的一个处理器的功能表示为将由宿主系统上的一个或多个处理器执行的一个或多个线程。
3.根据权利要求1所述的方法,其特征在于,线程的数量超过该宿主系统中的处理器的数量。
4.根据权利要求1所述的方法,其特征在于,当一个给定指令组被解释了一个预先确定的次数之后,将该指令组从该目标指令集转换到该第二个指令集。
5.根据权利要求4所述的方法,其特征在于,该解释处理过程被作为多处理器系统中的一个线程执行。
6.根据权利要求1所述的方法,其特征在于,在一个给定时间所述处理器的多个功能被表示为多个线程。
7.根据权利要求1所述的方法,其特征在于,进一步包括:
动态创建线程。
8.根据权利要求4所述的方法,其特征在于,进一步包括:
同时识别一个第一线程的转换结果和执行一个第二线程。
9.根据权利要求4所述的方法,其特征在于,进一步包括:
同时转换一个第一线程和执行一个第二线程。
10.根据权利要求1所述的方法,其特征在于,进行所述线程到所述处理器的多对多映射。
11.根据权利要求1所述的方法,其特征在于,当仿真线程正在被执行时,一个宿主应用正在运行。
12.一种用于一个多处理器系统的仿真的方法,包括:
将一个目标系统的多个硬件资源映射到多个软件线程;
将所述多个软件线程映射到一个宿主系统的多个硬件资源;
将该目标系统的状态信息映射到该宿主系统的一个存储器;以及
通过将多个仿真任务划分为大量线程,而改善仿真的性能。
13.一种用于一个多处理器系统的仿真的系统,包括:
用于将一个目标系统的多个硬件资源映射到多个软件线程的装置;
用于将所述多个软件线程映射到一个宿主系统的多个硬件资源的装置;
用于将该目标系统的状态信息映射到该宿主系统的一个存储器的装置;以及
用于通过将多个仿真任务划分为大量线程改善仿真的性能的装置。
14.一种用于在一个宿主计算系统上执行为目标指令集体系结构编写的程序的系统,该宿主计算系统具有多个被设计来处理一个第二指令集体系结构的指令的处理器,该系统包括:
一个表示单元,用于将被设计用来在该目标计算系统的一个处理器上运行的程序的每个部分表示为将在该宿主计算系统被执行的一个或多个程序线程;以及
一个调度单元,用于调度所述线程,以便在宿主系统的一个或多个处理器上执行。
15.一种用于多处理器系统的宿主计算系统的线程处理装置,包括:
一个用于保持多个线程的线程池;
一个线程处理器,用于访问所述宿主计算系统的存储器,并决定选择该线程池中的哪个线程以进行仿真;
一个线程生成器,用于创建新线程,并将所述新线程放入所述线程池中;以及
一个线程调度器,用于调度保持在所述线程池中的所述多个线程,所述调度器扫描等待的多个线程,并按照优先次序将下一个线程分配给所述多处理器系统的一个可用处理器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/244,414 | 2002-09-17 | ||
US10/244,414 US7496494B2 (en) | 2002-09-17 | 2002-09-17 | Method and system for multiprocessor emulation on a multiprocessor host system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1490717A CN1490717A (zh) | 2004-04-21 |
CN1278224C true CN1278224C (zh) | 2006-10-04 |
Family
ID=31991892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN03156991.9A Expired - Fee Related CN1278224C (zh) | 2002-09-17 | 2003-09-17 | 在多处理器宿主系统上进行多处理器仿真的方法和系统 |
Country Status (3)
Country | Link |
---|---|
US (2) | US7496494B2 (zh) |
JP (1) | JP2004110809A (zh) |
CN (1) | CN1278224C (zh) |
Families Citing this family (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9020801B2 (en) * | 2003-08-11 | 2015-04-28 | Scalemp Inc. | Cluster-based operating system-agnostic virtual computing system |
US7669203B2 (en) * | 2003-12-19 | 2010-02-23 | Intel Corporation | Virtual multithreading translation mechanism including retrofit capability |
CA2827035A1 (en) | 2004-11-08 | 2006-05-18 | Adaptive Computing Enterprises, Inc. | System and method of providing system jobs within a compute environment |
US7818724B2 (en) * | 2005-02-08 | 2010-10-19 | Sony Computer Entertainment Inc. | Methods and apparatus for instruction set emulation |
US9075657B2 (en) | 2005-04-07 | 2015-07-07 | Adaptive Computing Enterprises, Inc. | On-demand access to compute resources |
US9231886B2 (en) | 2005-03-16 | 2016-01-05 | Adaptive Computing Enterprises, Inc. | Simple integration of an on-demand compute environment |
WO2006103395A1 (en) * | 2005-03-30 | 2006-10-05 | Transitive Limited | Preparing instruction groups in a processor having multiple issue ports |
GB2424727B (en) | 2005-03-30 | 2007-08-01 | Transitive Ltd | Preparing instruction groups for a processor having a multiple issue ports |
GB2427045B (en) * | 2005-06-06 | 2007-11-21 | Transitive Ltd | Method and apparatus for converting program code with access coordination for a shared resource |
US20060294401A1 (en) * | 2005-06-24 | 2006-12-28 | Dell Products L.P. | Power management of multiple processors |
US7870307B2 (en) * | 2006-01-30 | 2011-01-11 | Sony Computer Entertainment Inc. | DMA and graphics interface emulation |
GB2435335A (en) * | 2006-02-21 | 2007-08-22 | Sony Computer Entertainment Inc | Multi-processor emulation by a multi-processor |
JP5217128B2 (ja) * | 2006-08-01 | 2013-06-19 | 日本電気株式会社 | エミュレーション装置及びエミュレーション方法 |
US9558019B2 (en) | 2007-03-22 | 2017-01-31 | Invention Science Fund I, Llc | Coordinating instances of a thread or other service in emulation |
US8495708B2 (en) * | 2007-03-22 | 2013-07-23 | The Invention Science Fund I, Llc | Resource authorizations dependent on emulation environment isolation policies |
US9378108B2 (en) | 2007-03-22 | 2016-06-28 | Invention Science Fund I, Llc | Implementing performance-dependent transfer or execution decisions from service emulation indications |
US20080235001A1 (en) * | 2007-03-22 | 2008-09-25 | Searete Llc, A Limited Liability Corporation Of The State Of Delaware | Implementing emulation decisions in response to software evaluations or the like |
US8438609B2 (en) | 2007-03-22 | 2013-05-07 | The Invention Science Fund I, Llc | Resource authorizations dependent on emulation environment isolation policies |
US8874425B2 (en) | 2007-03-22 | 2014-10-28 | The Invention Science Fund I, Llc | Implementing performance-dependent transfer or execution decisions from service emulation indications |
US20080244538A1 (en) * | 2007-03-26 | 2008-10-02 | Nair Sreekumar R | Multi-core processor virtualization based on dynamic binary translation |
US11720290B2 (en) | 2009-10-30 | 2023-08-08 | Iii Holdings 2, Llc | Memcached server functionality in a cluster of data processing nodes |
US20120317377A1 (en) * | 2011-06-09 | 2012-12-13 | Alexander Palay | Dual flash translation layer |
US8688661B2 (en) | 2012-06-15 | 2014-04-01 | International Business Machines Corporation | Transactional processing |
US9317460B2 (en) | 2012-06-15 | 2016-04-19 | International Business Machines Corporation | Program event recording within a transactional environment |
US9367323B2 (en) | 2012-06-15 | 2016-06-14 | International Business Machines Corporation | Processor assist facility |
US9384004B2 (en) | 2012-06-15 | 2016-07-05 | International Business Machines Corporation | Randomized testing within transactional execution |
US8682877B2 (en) | 2012-06-15 | 2014-03-25 | International Business Machines Corporation | Constrained transaction execution |
US9336046B2 (en) | 2012-06-15 | 2016-05-10 | International Business Machines Corporation | Transaction abort processing |
US9348642B2 (en) | 2012-06-15 | 2016-05-24 | International Business Machines Corporation | Transaction begin/end instructions |
US9436477B2 (en) | 2012-06-15 | 2016-09-06 | International Business Machines Corporation | Transaction abort instruction |
US9361115B2 (en) | 2012-06-15 | 2016-06-07 | International Business Machines Corporation | Saving/restoring selected registers in transactional processing |
US9448796B2 (en) | 2012-06-15 | 2016-09-20 | International Business Machines Corporation | Restricted instructions in transactional execution |
US9740549B2 (en) | 2012-06-15 | 2017-08-22 | International Business Machines Corporation | Facilitating transaction completion subsequent to repeated aborts of the transaction |
US10437602B2 (en) | 2012-06-15 | 2019-10-08 | International Business Machines Corporation | Program interruption filtering in transactional execution |
US9442737B2 (en) | 2012-06-15 | 2016-09-13 | International Business Machines Corporation | Restricting processing within a processor to facilitate transaction completion |
US20130339680A1 (en) | 2012-06-15 | 2013-12-19 | International Business Machines Corporation | Nontransactional store instruction |
US9772854B2 (en) | 2012-06-15 | 2017-09-26 | International Business Machines Corporation | Selectively controlling instruction execution in transactional processing |
US11132277B2 (en) * | 2012-12-28 | 2021-09-28 | Iii Holdings 2, Llc | System and method for continuous low-overhead monitoring of distributed applications running on a cluster of data processing nodes |
US9703562B2 (en) | 2013-03-16 | 2017-07-11 | Intel Corporation | Instruction emulation processors, methods, and systems |
CN103336684B (zh) * | 2013-07-18 | 2016-08-10 | 上海寰创通信科技股份有限公司 | 一种并发处理ap消息的ac及其处理方法 |
US9251088B2 (en) | 2013-10-30 | 2016-02-02 | Globalfoundries Inc. | Mechanisms for eliminating a race condition between a hypervisor-performed emulation process requiring a translation operation and a concurrent translation table entry invalidation |
US10007497B2 (en) * | 2015-04-10 | 2018-06-26 | Google Llc | Binary translation on shared object level |
JP6678185B2 (ja) * | 2015-04-10 | 2020-04-08 | グーグル エルエルシー | ネイティブ・クライアントへのバイナリ変換 |
JP6234640B2 (ja) * | 2015-05-28 | 2017-11-22 | 三菱電機株式会社 | シミュレーション装置及びシミュレーション方法及びシミュレーションプログラム |
DE102016203283A1 (de) * | 2016-02-29 | 2017-08-31 | Robert Bosch Gmbh | Verfahren zum Betreiben eines Mikroprozessors |
WO2018006928A1 (en) * | 2016-07-04 | 2018-01-11 | Huawei Technologies Co., Ltd. | Techniques for performance evaluation of an electronic hardware design on a computer simulation server |
CN113760512B (zh) * | 2021-09-08 | 2023-07-11 | 北京世冠金洋科技发展有限公司 | 仿真模型的执行方法及装置、存储介质及电子设备 |
Family Cites Families (73)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4392196A (en) * | 1980-08-11 | 1983-07-05 | Harris Corporation | Multi-processor time alignment control system |
JPS59167756A (ja) | 1983-01-31 | 1984-09-21 | Nec Corp | 仮想計算機のデイスパツチ制御方式 |
US4564903A (en) * | 1983-10-05 | 1986-01-14 | International Business Machines Corporation | Partitioned multiprocessor programming system |
JPH0814795B2 (ja) | 1986-01-14 | 1996-02-14 | 株式会社日立製作所 | マルチプロセッサ仮想計算機システム |
JPS63226740A (ja) | 1986-12-08 | 1988-09-21 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | マルチプロセツサ・コンピユータ・システムの並列シミユレーシヨン方法 |
US5055999A (en) * | 1987-12-22 | 1991-10-08 | Kendall Square Research Corporation | Multiprocessor digital data processing system |
US6920416B1 (en) * | 1989-08-28 | 2005-07-19 | Texas Instruments Incorporated | Electronic systems testing employing embedded serial scan generator |
US5307477A (en) * | 1989-12-01 | 1994-04-26 | Mips Computer Systems, Inc. | Two-level cache memory system |
US5179702A (en) * | 1989-12-29 | 1993-01-12 | Supercomputer Systems Limited Partnership | System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling |
JP2839201B2 (ja) * | 1990-07-30 | 1998-12-16 | 株式会社日立製作所 | 仮想計算機システム |
EP0550286A3 (en) * | 1992-01-03 | 1993-11-03 | Amdahl Corp | 2-level multi-processor synchronization protocol |
US5675762A (en) * | 1992-04-03 | 1997-10-07 | International Business Machines Corporation | System for locking down part of portion of memory and updating page directory with entry corresponding to part of portion of the memory locked down |
JPH0784883A (ja) * | 1993-09-17 | 1995-03-31 | Hitachi Ltd | 仮想計算機システムのアドレス変換バッファパージ方法 |
US5392408A (en) * | 1993-09-20 | 1995-02-21 | Apple Computer, Inc. | Address selective emulation routine pointer address mapping system |
US5983012A (en) * | 1993-09-28 | 1999-11-09 | Bull Hn Information Systems Inc. | Executing programs of a first system on a second system |
US5581705A (en) | 1993-12-13 | 1996-12-03 | Cray Research, Inc. | Messaging facility with hardware tail pointer and software implemented head pointer message queue for distributed memory massively parallel processing system |
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 |
US5440710A (en) * | 1994-03-08 | 1995-08-08 | Exponential Technology, Inc. | Emulation of segment bounds checking using paging with sub-page validity |
US5692193A (en) | 1994-03-31 | 1997-11-25 | Nec Research Institute, Inc. | Software architecture for control of highly parallel computer systems |
US5574922A (en) * | 1994-06-17 | 1996-11-12 | Apple Computer, Inc. | Processor with sequences of processor instructions for locked memory updates |
US5699538A (en) | 1994-12-09 | 1997-12-16 | International Business Machines Corporation | Efficient firm consistency support mechanisms in an out-of-order execution superscaler multiprocessor |
US5692153A (en) | 1995-03-16 | 1997-11-25 | International Business Machines Corporation | Method and system for verifying execution order within a multiprocessor data processing system |
US5655100A (en) * | 1995-03-31 | 1997-08-05 | Sun Microsystems, Inc. | Transaction activation processor for controlling memory transaction execution in a packet switched cache coherent multiprocessor system |
US5751982A (en) * | 1995-03-31 | 1998-05-12 | Apple Computer, Inc. | Software emulation system with dynamic translation of emulated instructions for increased processing speed |
US5619665A (en) * | 1995-04-13 | 1997-04-08 | Intrnational Business Machines Corporation | Method and apparatus for the transparent emulation of an existing instruction-set architecture by an arbitrary underlying instruction-set architecture |
US5678032A (en) * | 1995-09-06 | 1997-10-14 | Bull Hn Information Systems Inc. | Method of optimizing the execution of program instuctions by an emulator using a plurality of execution units |
US6047323A (en) * | 1995-10-19 | 2000-04-04 | Hewlett-Packard Company | Creation and migration of distributed streams in clusters of networked computers |
US6091897A (en) * | 1996-01-29 | 2000-07-18 | Digital Equipment Corporation | Fast translation and execution of a computer program on a non-native architecture by use of background translator |
US5768593A (en) * | 1996-03-22 | 1998-06-16 | Connectix Corporation | Dynamic cross-compilation system and method |
US6031992A (en) | 1996-07-05 | 2000-02-29 | Transmeta Corporation | Combining hardware and software to provide an improved microprocessor |
US5761734A (en) * | 1996-08-13 | 1998-06-02 | International Business Machines Corporation | Token-based serialisation of instructions in a multiprocessor system |
US5832205A (en) * | 1996-08-20 | 1998-11-03 | Transmeta Corporation | Memory controller for a microprocessor for detecting a failure of speculation on the physical nature of a component being addressed |
JP3022398B2 (ja) | 1997-05-09 | 2000-03-21 | 日本電気株式会社 | 仮想計算機方式 |
US6075938A (en) * | 1997-06-10 | 2000-06-13 | The Board Of Trustees Of The Leland Stanford Junior University | Virtual machine monitors for scalable multiprocessors |
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 |
JP3675623B2 (ja) | 1997-10-31 | 2005-07-27 | 株式会社東芝 | プログラム開発支援装置及び方法並びにプログラム開発支援用ソフトウェアを記録した記録媒体 |
US6381682B2 (en) * | 1998-06-10 | 2002-04-30 | Compaq Information Technologies Group, L.P. | Method and apparatus for dynamically sharing memory in a multiprocessor system |
JP2002505471A (ja) | 1998-02-26 | 2002-02-19 | サンマイクロシステムズ インコーポレーテッド | 遠隔処理の中断および継続の方法と装置 |
US6289419B1 (en) * | 1998-03-06 | 2001-09-11 | Sharp Kabushiki Kaisha | Consistency control device merging updated memory blocks |
JPH11259437A (ja) | 1998-03-12 | 1999-09-24 | Hitachi Ltd | 不要バリア命令の削減方式 |
US6075937A (en) * | 1998-03-18 | 2000-06-13 | International Business Machines Corporation | Preprocessing of stored target routines for controlling emulation of incompatible instructions on a target processor and utilizing target processor feedback for controlling non-sequential incompatible instruction emulation |
US6189141B1 (en) * | 1998-05-04 | 2001-02-13 | Hewlett-Packard Company | Control path evaluating trace designator with dynamically adjustable thresholds for activation of tracing for high (hot) activity and low (cold) activity of flow control |
US6240490B1 (en) * | 1998-07-20 | 2001-05-29 | International Business Machines Corporation | Comprehensive multilevel cache preloading mechanism in a multiprocessing simulation environment |
US6158049A (en) * | 1998-08-11 | 2000-12-05 | Compaq Computer Corporation | User transparent mechanism for profile feedback optimization |
US6289369B1 (en) * | 1998-08-25 | 2001-09-11 | International Business Machines Corporation | Affinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system |
US6738974B1 (en) * | 1998-09-10 | 2004-05-18 | International Business Machines Corporation | Apparatus and method for system resource object deallocation in a multi-threaded environment |
US6430657B1 (en) * | 1998-10-12 | 2002-08-06 | Institute For The Development Of Emerging Architecture L.L.C. | Computer system that provides atomicity by using a tlb to indicate whether an exportable instruction should be executed using cache coherency or by exporting the exportable instruction, and emulates instructions specifying a bus lock |
US20020147969A1 (en) * | 1998-10-21 | 2002-10-10 | Richard A. Lethin | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
EP0997815A3 (en) * | 1998-10-29 | 2004-05-26 | Texas Instruments Incorporated | Interactive translation system and method |
US6351844B1 (en) * | 1998-11-05 | 2002-02-26 | Hewlett-Packard Company | Method for selecting active code traces for translation in a caching dynamic translator |
US6339752B1 (en) * | 1998-12-15 | 2002-01-15 | Bull Hn Information Systems Inc. | Processor emulation instruction counter virtual memory address translation |
JP3604029B2 (ja) | 1999-01-12 | 2004-12-22 | 日本電気株式会社 | マルチスレッドプロセッサ |
US6826748B1 (en) * | 1999-01-28 | 2004-11-30 | Ati International Srl | Profiling program execution into registers of a computer |
JP4072271B2 (ja) | 1999-02-19 | 2008-04-09 | 株式会社日立製作所 | 複数のオペレーティングシステムを実行する計算機 |
US6341371B1 (en) * | 1999-02-23 | 2002-01-22 | International Business Machines Corporation | System and method for optimizing program execution in a computer system |
US6470492B2 (en) * | 1999-05-14 | 2002-10-22 | Hewlett-Packard Company | Low overhead speculative selection of hot traces in a caching dynamic translator |
US6529862B1 (en) * | 1999-06-30 | 2003-03-04 | Bull Hn Information Systems Inc. | Method and apparatus for dynamic management of translated code blocks in dynamic object code translation |
US6263302B1 (en) | 1999-10-29 | 2001-07-17 | Vast Systems Technology Corporation | Hardware and software co-simulation including simulating the cache of a target processor |
US6986128B2 (en) | 2000-01-07 | 2006-01-10 | Sony Computer Entertainment Inc. | Multiple stage program recompiler and method |
JP2001249824A (ja) * | 2000-03-02 | 2001-09-14 | Hitachi Ltd | 論理エミュレーションプロセッサおよびそのモジュールユニット |
US6978233B1 (en) * | 2000-03-03 | 2005-12-20 | Unisys Corporation | Method for emulating multi-processor environment |
US6539464B1 (en) * | 2000-04-08 | 2003-03-25 | Radoslav Nenkov Getov | Memory allocator for multithread environment |
US6480845B1 (en) * | 2000-06-14 | 2002-11-12 | Bull Hn Information Systems Inc. | Method and data processing system for emulating virtual memory working spaces |
US6763328B1 (en) * | 2000-06-15 | 2004-07-13 | Bull Hn Information Systems Inc. | Method and data processing system for emulating virtual memory utilizing threads |
US6931636B2 (en) * | 2000-08-08 | 2005-08-16 | Texas Instruments Incorporated | Multiprocessor emulation support using dynamic linking |
US6501992B1 (en) * | 2000-10-17 | 2002-12-31 | Medtronic, Inc. | Radiopaque marking of lead electrode zone in a continuous conductor construction |
US6993754B2 (en) * | 2001-11-13 | 2006-01-31 | Hewlett-Packard Development Company, L.P. | Annotations to executable images for improved dynamic optimization functions |
US6728846B2 (en) * | 2000-12-22 | 2004-04-27 | Bull Hn Information Systems Inc. | Method and data processing system for performing atomic multiple word writes |
JP2002312180A (ja) * | 2001-04-11 | 2002-10-25 | Hitachi Ltd | 動的命令変換機能を有するプロセッサシステム、該プロセッサシステムを備えたコンピュータにて実行されるバイナリートランスレーションプログラム及びそのプロセッサシステムを実装した半導体デバイス |
US7047521B2 (en) * | 2001-06-07 | 2006-05-16 | Lynoxworks, Inc. | Dynamic instrumentation event trace system and methods |
US6915513B2 (en) * | 2001-11-29 | 2005-07-05 | Hewlett-Packard Development Company, L.P. | System and method for dynamically replacing code |
US6961806B1 (en) * | 2001-12-10 | 2005-11-01 | Vmware, Inc. | System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems |
US20030171907A1 (en) * | 2002-03-06 | 2003-09-11 | Shay Gal-On | Methods and Apparatus for Optimizing Applications on Configurable Processors |
-
2002
- 2002-09-17 US US10/244,414 patent/US7496494B2/en not_active Expired - Fee Related
-
2003
- 2003-08-25 JP JP2003300612A patent/JP2004110809A/ja active Pending
- 2003-09-17 CN CN03156991.9A patent/CN1278224C/zh not_active Expired - Fee Related
-
2009
- 2009-02-19 US US12/388,728 patent/US7844446B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US20090157377A1 (en) | 2009-06-18 |
US7496494B2 (en) | 2009-02-24 |
US20040054517A1 (en) | 2004-03-18 |
JP2004110809A (ja) | 2004-04-08 |
US7844446B2 (en) | 2010-11-30 |
CN1490717A (zh) | 2004-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1278224C (zh) | 在多处理器宿主系统上进行多处理器仿真的方法和系统 | |
US9459850B2 (en) | Adaptive cloud aware just-in-time (JIT) compilation | |
US10592430B2 (en) | Memory structure comprising scratchpad memory | |
Hildebrand et al. | Autotm: Automatic tensor movement in heterogeneous memory systems using integer linear programming | |
CN1308826C (zh) | 用于smt处理器上的cpi调度的系统和方法 | |
US6871341B1 (en) | Adaptive scheduling of function cells in dynamic reconfigurable logic | |
CN1308825C (zh) | 用于在smt处理器中进行cpi负载平衡的系统和方法 | |
Mukkara et al. | Whirlpool: Improving dynamic cache management with static data classification | |
US9495136B2 (en) | Using aliasing information for dynamic binary optimization | |
Vijaykumar et al. | A case for richer cross-layer abstractions: Bridging the semantic gap with expressive memory | |
US7788658B2 (en) | Computer code partitioning for enhanced performance | |
CN1492323A (zh) | 多处理器地址转换的高效仿真方法和系统 | |
JP2013524386A (ja) | ランスペース方法、システムおよび装置 | |
CN1641590A (zh) | 通过硬件资源利用报告优化性能的方法和数据处理系统 | |
Bruno et al. | A study on garbage collection algorithms for big data environments | |
Wang et al. | Endurance-aware allocation of data variables on NVM-based scratchpad memory in real-time embedded systems | |
Pellegrini et al. | Autonomic state management for optimistic simulation platforms | |
CN1508690A (zh) | 使能跟踪重复指令的方法和系统 | |
Sondag et al. | Predictive thread-to-core assignment on a heterogeneous multi-core processor | |
Nematollahi et al. | Efficient nearest-neighbor data sharing in GPUs | |
Krylov et al. | The evolution of garbage collection in v8: google's javascript engine | |
Budimlic et al. | Characterizing application execution using the open community runtime | |
Zhang et al. | G10: Enabling An Efficient Unified GPU Memory and Storage Architecture with Smart Tensor Migrations | |
CN1570862A (zh) | 运行时间多态性 | |
Bhattacharya | Enhancing the usage of the Shared Class Cache |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20061004 |
|
CF01 | Termination of patent right due to non-payment of annual fee |