CN109690536A - 将多核指令踪迹从虚拟平台仿真器取到性能模拟模型的方法和系统 - Google Patents
将多核指令踪迹从虚拟平台仿真器取到性能模拟模型的方法和系统 Download PDFInfo
- Publication number
- CN109690536A CN109690536A CN201780039897.0A CN201780039897A CN109690536A CN 109690536 A CN109690536 A CN 109690536A CN 201780039897 A CN201780039897 A CN 201780039897A CN 109690536 A CN109690536 A CN 109690536A
- Authority
- CN
- China
- Prior art keywords
- instruction
- code
- virtual platform
- psm
- processor
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 50
- 238000004088 simulation Methods 0.000 title claims abstract description 35
- 238000013461 design Methods 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims description 16
- 244000035744 Hura crepitans Species 0.000 claims description 8
- 238000013480 data collection Methods 0.000 claims description 2
- 238000012423 maintenance Methods 0.000 claims description 2
- 230000006870 function Effects 0.000 description 31
- 238000010586 diagram Methods 0.000 description 29
- 239000003795 chemical substances by application Substances 0.000 description 26
- 230000015654 memory Effects 0.000 description 26
- 238000012360 testing method Methods 0.000 description 19
- 230000008569 process Effects 0.000 description 17
- 230000006399 behavior Effects 0.000 description 9
- 238000003860 storage Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 5
- 230000004044 response Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 150000001875 compounds Chemical class 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 238000005094 computer simulation Methods 0.000 description 2
- 239000000470 constituent Substances 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 239000004615 ingredient Substances 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005389 magnetism Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 239000011800 void material Substances 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3457—Performance evaluation by simulation
- G06F11/3461—Trace driven simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
提供了一种用于模拟多核处理器设计的系统和方法。所述系统包括输入/输出接口、处理器、虚拟平台仿真器以及包括至少一个流水线模型的性能模拟模型。所述输入/输出接口接收包括多个指令块的代码指令。所述处理器执行代码,以指示所述虚拟平台仿真器仿真执行所述多个指令块中的一个指令块,以基于所述指令块生成多个块导出代码指令的流。当检测到所述指令块的指令分支中的误预测分支时,所述处理器指示所述虚拟平台仿真器向所述流添加多个虚设代码指令。当检测到清空流水线事件时,所述处理器指示所述虚拟平台仿真器按照多个先前执行的指令的原始执行顺序向所述流添加所述先前执行的指令;为响应从所述流水线模型接收的多个连续单独指令请求中的每个请求,相继单独取出并传送所述多个块导出代码指令中的每个指令、所述多个虚设代码指令中以及所述多个先前执行的指令中的至少一个指令,以在所述流水线模型中执行并提交。
Description
背景技术
本发明在其一些实施例中涉及一种用于模拟硬件处理器设计的方法,并且更具体地涉及但不限定于一种由虚拟平台仿真器和多核流水线模型来模拟多核处理器设计的方法。
新微处理器的开发是一个昂贵且耗时的过程。在多核架构中,这个问题甚至更具挑战性。其中,这里称为中央处理器(central processing unit,简称CPU)的单核或多核硬件处理器的整体性能取决于多个独立的核心处理器。要求每个新CPU设计都满足性能目标和/或指标,例如特定数量的指令/时钟周期(instruction per cycle,简称IPC)、第一层(layer one,简称L1)和/或第二层(layer 2,简称L2)缓存的特定命中率、执行多个操作系统(operating system,简称OS)的能力、每秒百万条指令(million instructions persecond,简称MIPS)的执行数量、运行多个CPU基准测试应用程序的能力以及其他性能指标。
为了减少CPU设计的时间和成本,最好能够在制造CPU之前预测CPU设计是否符合性能目标。为了预测提出的设计是否达到既定目标,可以创建一个模型来模拟设计的性能。
CPU的性能目标可以用基准测试测量。所述基准测试包含可执行程序代码,在执行所述程序代码时在CPU上生成处理负荷并自动测量各种性能指标。可以通过执行基准测试的CPU的模型来完成预测制造的CPU的最终性能。
模型可以是在计算处理器上执行的软件代码,所述计算处理器模拟建模的CPU的行为。例如,可以由CPU模型执行CPU基准测试程序代码。
模型执行清空事件和分支误预测的方式影响着所述模型准确预测CPU性能的程度。
当CPU检测到错误时发生清空事件。例如在写入计算值的指令完成之前从寄存器读取计算值,在本领域中称为写后读(read-after-write,简称RAW)冲突。在检测到清空事件之后,将会清空已经在流水线中的指令。这意味着CPU不会提交指令的执行结果。
当分支指令依赖于计算时会发生分支误预测,并且处理器在完成计算之前会错误地预测分支结果。
虽然各个现有模型可以提供CPU模型的一部分关键特性,但目前没有提供完整解决方案的单一模型。
一些现有产品为这里描述的挑战提供了部分答案。例如,ASIM和ZSIM是模拟器,但它们不能在未修改的通用OS中运行,也不能准确模拟多线程和/或多进程基准测试。SimOS可以在多个OS中运行应用程序,但难以用于特定的CPU设计。SimpleScalar支持多线程和多进程基准测试,但基准测试的结果可能无法反映建模的CPU的性能。
发明内容
本发明的目的是提供一种用于模拟处理器设计的系统、计算机程序产品和方法。
上述及其它目的通过独立权利要求的特征来实现。根据从属权利要求、说明书以及附图,进一步的实现形式是显而易见的。
根据本发明的第一方面,提供了一种用于模拟多核处理器设计的系统,包括:输入/输出接口、处理器、虚拟平台仿真器以及包括至少一个流水线模型的性能模拟模型,其中,所述输入/输出接口用于接收包括多个指令块的代码指令。所述处理器用于执行代码,以指示所述虚拟平台仿真器仿真执行所述多个指令块中的一个指令块,以基于所述指令块生成多个块导出代码指令的流。当检测到所述指令块的指令分支中的误预测分支时,指示所述虚拟平台仿真器向所述流添加多个虚设代码指令。当(在指令块中)检测到清空流水线事件时,指示所述虚拟平台仿真器按照多个先前执行的指令的原始执行顺序向所述流添加所述先前执行的指令;为响应从所述流水线模型接收的多个连续单独指令请求中的每个请求,相继单独取出并传送所述多个块导出代码指令中的每个指令、所述多个虚设代码指令中以及所述多个先前执行的指令中的至少一个指令,以在所述流水线模型中执行并提交。
优选地,将所述多个块导出代码指令的流存储在虚拟平台仿真器的内存或缓存中。
所述方面提出了用于模拟处理器设计的系统的优点,包括由分支误预测和流水线清空引起的实时处理延迟。
根据本发明的第二方面,提供了一种用于模拟处理器设计的方法,包括:接收包括多个指令块的代码指令;指示虚拟平台仿真器仿真执行所述多个指令块中的一个指令块,以基于所述指令块生成多个块导出代码指令的流。当检测到所述指令块的指令分支中的误预测分支时,指示所述虚拟平台仿真器向所述流添加多个虚设代码指令。当检测到清空流水线事件时,指示所述虚拟平台仿真器按照多个先前执行的指令的原始执行顺序向所述流添加所述先前执行的指令;以及为响应从所述流水线模型接收的多个连续单独指令请求中的每个请求,相继单独取出并传送所述多个块导出代码指令中的每个指令、所述多个虚设代码指令中以及所述多个先前执行的指令中的至少一个指令,以在所述流水线模型中执行并提交。所述方面提供了用于模拟处理器设计的方法的优点,包括由分支误预测和流水线清空引起的实时处理延迟。在第一和/或第二方面的进一步实现方式中,处理器用于通过多个API指令来指示所述虚拟平台仿真器。所述实现方式提出了提供规定的一组函数调用使所述虚拟平台仿真器能够向所述流水线模型提供指令执行踪迹的优点。
在第一和/或第二方面的进一步的实现方式中,处理器用于为仿真多核处理器的多个仿真核中的每个仿真核并行执行代码。
在第一和/或第二方面的进一步的实现方式中,处理器用于为所述多个仿真核中的每个仿真核或者多个硬件线程中的每个硬件线程维护已取指令的历史列表,在检测到所述清空流水线事件时,移动位置指针或索引以指向所述历史列表最早清空的指令,从所述历史列表中获取新的已取指令,将已取指令的指针前进到所述历史列表中的下个指令,并且当到达所述历史列表的末尾,返回从所述虚拟平台仿真器取出指令的正常操作。所述实现方式提出了能够指示清空已加载指令的流水线模型并通过维护已取指令的历史列表来以最小延迟取出新指令的优点。
在第一和/或第二方面的进一步的实现方式中,当检测到所述误预测分支时,所述系统用于进入沙盒模式,其中,在所述流水线模型中执行和提交的至少一个错误指令是由所述虚拟平台仿真器发送的,在识别出误预测时,所述系统用于指示在所述虚拟平台仿真器的代理层处回滚到所述指令分支以进行正确的分支决策。所述实现方式提出了流水线模型能够在建模的处理器设计中模拟分支误预测的检测和恢复的优点。
在第一和/或第二方面的进一步的实现方式中,在仿真所述多个块导出代码指令时检测所述误预测分支,其中,所述多个先前执行的指令包括在所述流水线模型中执行但不提交的至少一个错误指令;所述处理器用于执行所述代码,以指示清空所述流水线模型来响应对所述分支误预测的识别,并指示在所述虚拟平台仿真器的代理层处回滚到所述指令分支。
在第一和/或第二方面的进一步的实现方式中,处理器还用于更新从所述多个块导出代码指令清空的指令数据集,并且指示所述虚拟平台仿真器像添加所述多个先前执行的代码指令一样添加所述指令数据集中的指令。所述实现方式提供了当流水线模型请求错误指令时,例如当流水线模型错误地预测了分支时,虚拟平台仿真器能够将虚设指令发送给流水线模型的优点。在第一和/或第二方面的进一步的实现方式中,处理器用于仅当请求的指令是所述指令块的一员时,指示所述虚拟平台仿真器仿真执行所述指令块来响应来自所述流水线模型的所述指令请求。
在第一和/或第二方面的进一步的实现方式中,所述虚拟平台仿真器包括调度器,用于调度下个指令块的处理,其中,所述调度器用于当从所述流水线模型接收的指令请求包括作为所述下个指令块的一员的代码指令时,指示所述虚拟平台仿真器仿真执行所述下个指令块。
除非另有定义,否则本文所使用的所有技术和/或科学术语的含义与本发明所属领域的普通技术人员所公知的含义相同。与本文所描述的方法和材料类似或者相同的方法和材料可以用于本发明实施例的实践或测试,下文描述示例性的方法和/或材料。若存在冲突,则以包括定义在内的专利说明书为准。另外,材料、方法以及示例都只是用于说明,并非必要限定。
附图说明
此处仅作为示例,结合附图描述了本发明的一些实施例。现在具体结合附图,需要强调的是所示的项目作为示例,为了说明性地讨论本发明的实施例。这样,根据附图说明,如何实践本发明实施例对本领域技术人员而言是显而易见的。
在附图中:
图1为本发明实施例一种用于模拟处理器设计的方法流程图;
图2为本发明实施例一种用于模拟处理器设计的示例性系统示意图;
图3A为本发明实施例虚拟平台仿真器与流水线模型之间的连接的示意图;
图3B为本发明实施例一种应用编程接口的示意图;
图3C为本发明实施例流水线模型从虚拟平台仿真器取出代码指令的示意图;
图3D为本发明实施例的调度执行多个内核上代码指令的示意图;
图4A为根据本发明实施例分支误预测时流水线模型的状态的示意图;
图4B为本发明实施例流水线模型从虚拟平台仿真器相继取出指令的示意图;
图4C为本发明实施例当发生分支误预测时流水线模型和虚拟平台仿真器中执行指令的程序计数器和顺序的示意图;
图5A为本发明实施例清空事件时模拟仿真系统的程序计数器和内核流水线的状态的示意图;图5B为本发明实施例在清空事件之前和之后流水线模型的示意图;
图5C为本发明实施例当发生清空事件时流水线模型和虚拟平台仿真器中执行指令的程序计数器和顺序的示意图;
图6是本发明实施例多个流水线模型内核控制多个虚拟平台仿真器内核的示意图。
具体实施方式
本发明在其一些实施例中涉及一种用于模拟硬件处理器设计的方法,并且更具体地涉及但不限定于一种由虚拟平台仿真器和多核流水线模型来模拟多核处理器设计的方法。
此处称为性能模拟模型(performance simulation model,简称PSM)的架构时序模拟模型用于在开发的早期阶段探索和优化多核CPU微架构设计的性能。这些模型可以是在主机平台的硬件处理器上执行的软件代码。
现代CPU可以包括单核或多核。其中,每个内核可以包括单个或多个硬件线程,并且应用基准测试可能需要在多个软件线程和/或多个进程上运行。这又需要在操作系统(operating system,简称OS)下运行基准测试。
PSM通常无法在未修改的OS中运行未修改的基准测试。这将要求PSM实施建模的CPU的非常准确和详细的功能行为,例如内存管理、通过网络接口的通信管理等。
存在虚拟平台仿真器(virtual platform emulator,简称VPE)如QEMU在未修改的OS、基本未修改的基准测试程序和模型详细功能行为下运行。
VPE和PSM之间的集成使得功能与时序分离。VPE知道与功能有关的所有信息,但对时序一无所知,而PSM对功能一无所知,但知道与时序有关的所有信息。
但是,VPE对指令的处理在代码粒度方面难以控制。VPE的最小代码粒度是指令块,包括相当于分支的指令集或最大大小的指令集。VPE调度器可以将整个指令块的执行分配给单个内核,并将下个指令块调度给不同的内核。VPE不用于保证在多个内核间执行代码指令的任何顺序,且虚拟平台有时会切换为执行不同内核的指令块。此外,未来虚拟平台的实施方式可以在不同线程上并行执行不同内核的不同指令。多核CPU具有不同的调度器代码粒度,并且可以将单个指令从块调度到多个内核。因此,VPE很难模拟多核CPU。
此外,VPE可能不会模拟内核流水线操作,例如分支误预测和流水线清空。
代码块是指代码指令组,例如一组除分支指令以外的所有代码指令。
另一类CPU模型是PSM。PSM是一种计算机程序。当在处理器上执行时,PSM在时钟周期的基础上模拟CPU的一个或多个硬件线程,在此称为内核。CPU的每个内核可以并行执行一个单独的软件线程。
PSM可以用于测试和基准测试建模的CPU设计的性能,包括误预测和/或清空事件时的建模的CPU行为等。
当内核错误地预测了确定分支指令的计算结果时,CPU中发生分支误预测。为了提高代码的执行速度,CPU在执行前取出指令。当遇到分支指令时,以下指令取决于执行哪个分支。CPU可以基于历史先例和/或任何其他方法来预测分支指令的结果。
CPU识别出在完成执行分支计算后发生了误预测。为了从误预测中恢复,CPU将程序计数器(program counter,简称PC)重置为正确分支的地址。将正确的指令取到流水线中,并且不会提交流水线中任何误取的指令。将内核的状态,包括寄存器的值,重置或回滚到执行错误的分支指令之前的状态。
当CPU检测到错误事件,例如,RAW冲突、提交的等待中断(wait for interrupt,简称WFI,清空事件可能会导致在先前写入之前执行无序读取(两者访问相同的地址)等等)。例如,当同一寄存器的写指令比读指令提前一个时钟周期时,可能会发生RAW冲突。例如,当CPU需要五个时钟周期来执行每条指令时,每个内核流水线在五个连续时钟周期内对每条指令执行以下五个操作:取指令,解码指令,执行,访问内存和写回寄存器。写指令在第5个时钟周期向寄存器写入一个值(写回寄存器)。但是,紧跟着写指令的读指令也会在第5个时钟周期读取寄存器(访问内存),可能会从寄存器中读取错误的值。
当CPU检测到清空事件时,例如根据“读”指令在“写入”指令之后的特定顺序,重取或重放读指令,以便执行正确的读操作。由于RAW,内核流水线中已存在的指令可能会错误,因此不会提交和/或清空这些指令。为了最小化在检测到冲突之后重取指令所引起的延迟,CPU可以将最近取的指令存储在短期内存或缓存中,例如L1缓存和/或L2缓存,以便可以在清空事件中进行重取。
为了并行执行代码指令,CPU会取单个指令的流,并将每个指令分配给处理核。PSM可以通过处理单个指令和/或CPU的多个内核来对多核CPU的单个内核进行建模。
如上所述,CPU的性能模拟必须模拟实时行为,包括将单个指令取到多个并行执行的内核、从分支误预测中恢复和从清空事件恢复等。然而,尽管VPE和PSM分别提供了一部分功能,但都没有提供CPU性能的完整模拟。
VPE可以取出块中指令并进行编码,这不允许建模并行内核处理。VPE缺乏模拟分支误预测、流水线清空和单个代码指令处理的能力。
PSM不仿真VPE服务,例如内存管理、功率管理、设备管理、寄存器管理等。PSM还缺乏运行未修改的大型OS和应用程序的灵活性和可扩展性。这限制了在运行各种OS时测试CPU模型是否满足设计目标的能力。
在示例性实施例中,VPE和PSM通过代理层结合一起,形成模拟建模的CPU的性能的集成模型。所述集成模型可以在未修改的OS中执行未修改的基准测试,取出并模拟单个代码指令的执行,并模拟多个内核流水线时序行为,包括分支误预测和清空事件。
可选地,代理层可以提供来自应用编程接口(application programminginterface,简称API)的功能调用。所述功能调用能够实现VPE和PSM之间的互操作,例如API函数调用将单个指令从VPE取到PSM以通过PSM控制VPE的进程,使VPE操作与清空事件和分支误预测的PSM建模同步等等。
可选地,VPE包括用于确定从处理一个代码指令块到处理下个代码指令块的进程的调度器,并且关闭所述调度器并用修改的调度器代替所述调度器。修改的调度器根据从PSM接收包括作为下个指令块的一员的代码指令的指令取出请求来确定处理下个代码指令块的进程。
可选地,将VPE调度器修改为处理整个代码指令块,并且仅当从PSM接收到来自下一块的指令的取出请求时才继续下个代码指令块。有利地是,PSM根据指令取出请求来控制VPE的进程。
可选地,VPE通过执行VPE上的指令而生成的跟踪信息来响应指令取出请求。跟踪信息可以包括操作码、虚拟和/或物理程序计数器地址、下个指令的虚拟和/或物理程序计数器、用于加载和/或存储指令的虚拟和/或物理地址等等。
在示例性实施例中,由于误预测,集成平台可以通过PSM请求错误指令来模拟分支误预测,并且VPE进入沙盒模式。其中,将虚设指令取到PSM并暂停根据指令取出请求的进程直到PSM纠正误预测并请求正确的指令为止。有利地是,通过识别误预测,一旦PSM检测到误预测,VPE准备取出正确的代码指令。
在示例性实施例中,通过PSM请求VPE重取最近的指令并停止提交发生清空事件的内核流水线中的指令,集成平台可以模拟清空事件。有利地,通过请求重取指令并且不提交流水线中的指令,PSM模拟CPU内核的行为。
VPE可以是主机CPU上执行的软件代码,主机CPU仿真包括建模的CPU、外围设备(例如虚拟和物理内存)、外围输入输出设备(例如网络接口卡(network interface card,简称NIC)、块设备、键盘和/或屏幕等的电子系统。VPE可以在详细程度上仿真建模的CPU,使得包含可在建模的CPU上执行的机器代码的可执行软件代码可以在VPE上执行而无需任何修改。例如,可以由VPE执行用于测试CPU性能的基准测试软件代码。
VPE提供用于执行包括虚拟CPU的机器代码的接口,包括多个处理器内核、寄存器、功率管理、虚拟和物理内存、页表、互连总线中断模型、网络连接等。VPE可能与OS无关,可以使用多个OS测试CPU的性能目标。
可以在主机CPU上执行VPE。其中,VPE仿真的CPU可能与主机CPU完全不同且无关。当在VPE上执行代码时,VPE会将建模的CPU的可执行代码指令转换为主机CPU本地的机器代码,导致执行本地代码并根据执行结果更新建模的CPU状态。
虽然VPE可通过可执行代码和/或操作系统来仿真CPU架构和接口,但它无法建模CPU微架构组件(如流水线和缓存)以及在发生清空事件或分支误预测时的行为,因此预测CPU设计性能的效用有限。此外,由于代码指令在块中执行,难以控制VPE的进程,因此会连续执行代码块中的所有指令。
在一个示例性实施例中,由PSM按照下列方式控制VPE的进程:为响应来自PSM的指令取出请求,VPE从主机中的内存等中取出可执行指令块,处理整个块,并且将具有跟踪信息的所请求的指令返回给PSM。所述处理包括通过将可执行指令转换成用于主机CPU执行的机器代码来执行VPE仿真的CPU中的指令,并存储包括PSM执行每个指令所需的所有信息的仿真执行的指令踪迹。
根据来自PSM的取出请求来提供来自同一块的后续指令。VPE不会继续执行另一代码指令块直到PSM请求来自另一块的指令。
可选地,由PSM和VPE按照以下方式建模CPU分支误预测:如上所述,当PSM错误地预测分支指令时,所得到的发送给VPE的指令取出请求会错误。如上所述,VPE已经执行了块中的所有指令,将所请求的指令标识为错误,并且进入操作模式,在此称为沙盒模式。
沙盒模式包括VPE向PSM发送虚设、无操作(no operation,简称NOP)和/或假指令(这里称为虚设指令),以响应错误的取出请求并根据来自PSM的取出请求中止进程。为了防止正确的指令改变VPE PC和/或寄存器的状态,发送虚设指令代替正确的指令。当从PSM收到正确的指令取出请求时,VPE退出沙盒模式。
当PSM继续处理已经在流水线中的指令时,计算误预测的分支指令,且PSM据此检测误预测。然后PSM执行对代理层API的函数调用以从误预测中恢复。API函数,在此称为rollback(),通知VPE将程序计数器从虚设指令回滚到正确的分支指令地址,并取出正确的指令。
可选地,通过以下方式由集成模型建模CPU清空事件:当PSM检测到冲突例如RAW时,对代理层API进行函数调用,在此称为replay(),重取最近取的一组指令。PSM不会提交流水线中已存在的与冲突相关的指令,且重新执行并提交重取的指令。例如,通过重取RAW冲突中的读操作,有足够的时间来完全处理写指令从而消除冲突。
可选地,PSM和VPE之间的代理层可以是在主机CPU上执行的一组可执行代码指令,例如,如下所述的模拟仿真系统200。代理层可以包括API函数调用,例如,rollback()函数(当由PSM消息调用到VPE时使PC回滚到纠正的分支指令)以及replay()函数调用(当由PSM调用时重取一组先前取出的指令)等等。代理层还可以向PSM提供内存管理服务,例如将先前取出的指令存储在主机的非易失性存储器中以支持replay()函数调用和管理主机的物理和虚拟内存等等。
与现有技术相比,本发明在其一些实施例中有许多优点。VPE和PSM的集成为微处理器设计人员提供了一个工具。所述工具通过仿真建模的CPU代码指令接口将功能与时序分离,与多个OS兼容,且为多核流水线活动的时钟周期级时序建模。具体地,可以针对分支误预测、流水线清空以及清空指令的重取为多个流水线的吞吐量和操作行为进行建模。
在详细解释本发明的至少一个实施例之前,应当理解,本发明不必将其应用限于下面描述中阐述的和/或在附图和/或举例中说明的部件和/或方法的结构和布置的细节。本发明可以有其它实施例或可以采用各种方式实践或执行。
本发明可以是系统、方法和/或计算机程序产品。所述计算机程序产品可以包括具有计算机可读程序指令的一个(或多个)计算机可读存储介质,所述指令用于使处理器执行本发明的各个方面。
所述计算机可读存储介质可以是有形设备,所述有形设备可以保存和存储指令执行设备使用的指令。例如,所述计算机可读存储介质可以是但不限于电子存储设备、磁性存储设备、光存储设备、电磁存储设备、半导体存储设备或这几者的任意合适组合。
可以从计算机可读存储介质中将此处描述的计算机可读程序指令下载到各个计算/处理设备上,或通过网络下载到外部计算机或外部存储设备上。所述网络为因特网、局域网、广域网和/或无线网等。
所述计算机可读程序指令可以完全在用户电脑上执行或部分在用户电脑上执行,或作为独立的软件包,部分在用户电脑上执行部分在远端电脑上执行,或完全在远端电脑或服务器上执行。在后面的场景中,远端电脑可以通过任何类型的网络与用户电脑连接,包括局域网(local area network,简称LAN)或广域网(wide area network,简称WAN),或者可以(例如,使用因特网服务提供方提供的因特网)在外部电脑上建立所述连接。在一些实施例中,包括可编程逻辑电路、现场可编程门阵列(field programmable gate array,简称FPGA)或可编程逻辑阵列(programmable logic array,简称PLA)等的电子电路可以利用计算机可读程序指令的状态信息执行所述计算机可读程序指令以个性化所述电子电路,以便执行本发明的各方面。此处,结合本发明实施例的方法、装置(系统)以及计算机程序产品的流程图和/或框图描述本发明的各方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中的框的组合可以由计算机可读程序指令来实现。
附图中的流程图和框图示出了根据本发明的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。此时,流程图或框图中的每个框都可以代表一个模块、分段或部分指令,所述部分指令包括一个或多个用于实现特定逻辑功能的可执行指令。在一些可选的实现方式中,框中指出的功能可以不按照图中的顺序实现。例如,事实上,连续展示的两个框可以大体上同时执行,或者有时候可以按照相反的顺序执行,这取决于所涉及的功能。还应注意的是,框图和/或流程图中每一个框以及框图和/或流程图中框的组合可以由基于专用硬件的系统执行,所述系统执行指定的功能或动作,或者执行专用硬件和计算机指令的组合。现参考图1,图1是根据本发明实施例用于模拟CPU的模拟仿真方法100的流程图,包括对分支误导和清空事件的处理。
模拟仿真方法100可以通过CPU上执行的代码指令执行,例如通过如下图2所述的模拟仿真系统200的一个或多个处理器204上执行的代码指令来执行。
模拟仿真方法100始于以下操作:当VPE从PSM接收到用于取可执行指令的请求时,作为响应,所述VPE处理如上所述的指令块并将所请求的指令返回给PSM。例如,如下所述,处理器204上执行的来自PSM 212的代码指令可以指示发送请求并接收指令,并且如下所述,处理器204上执行的来自VPE 211的代码指令可以指示对所述请求作出响应。
如下所述,当取出请求包含分支误导时,VPE代理层将返回虚设指令来代替请求的指令直到PSM请求取出正确的指令为止。如下所述,当检测到清空事件时将发送重取最近指令的请求。可选地,模拟仿真方法100包括多个内核并行运行的方法。例如,如下面在图6中所描述的,PSM可以对多个内核进行建模,其中每个建模的内核可以控制相应VPE内核的进程。
现参考图2,图2是本发明实施例模拟CPU的示例性模拟仿真系统200的示意图。模拟仿真系统200包括输入/输出(input/output,简称I/O)接口202、一个或多个处理器204和存储器208。
模拟仿真系统200用于接收可在建模的CPU上执行的代码指令,例如来自如下所述的用户设备260的代码指令,并且在执行所接收的代码指令时模拟建模的CPU的性能,例如通过在一个或多个处理器204上执行存储器208中的代码。
模拟仿真系统200可以包括服务器、台式计算机、嵌入式计算系统、工业计算机、加固计算机、笔记本电脑、云计算机、私有云、公共云、混合云和/或任何其他类型的计算系统等等。可选地,模拟仿真系统200包括代替I/O 202、一个或多个处理器204和存储器208的虚拟机(virtual machine,简称VM)。
I/O 202可以包括一个或多个输入接口,如网络接口卡(network interfacecard,简称NIC)、块设备、键盘、软键盘、语音-文本系统和或其他任意数据输入接口。I/O202可以包括一个或多个输出接口,如屏幕、触摸屏、视频显示器和/或其他任意视觉显示设备。
一个或多个处理器204可以包括一个或多个硬件处理器、多核处理器和/或任意其他类型的CPU。
存储器208可以包括一个或多个非瞬时持久性存储设备,例如硬盘驱动器和闪存阵列等。
可选地,模拟仿真系统200经由I/O 202与网络230连接。例如,I/O 230可以是网络接口卡(network interface card,简称NIC)、无线路由器和/或任意其他类型的用于与网络230通信的网络接口。
网络230可以是任意类型的数据网络,例如局域网(local area network,简称LAN)、以太网LAN、光纤LAN、数字订户线(digital subscriber line,简称DSL)、无线LAN、宽带连接、使用因特网服务提供方(Internet service provider,简称ISP)的网络连接和/或任意其他类型的计算机网络。网络230可以采用任意类型的数据组网协议,包括传输控制协议/互联网协议(Transmission Control Protocol/Internet Protocol,简称TCP/IP)和用户数据报协议(user datagram protocol,简称UDP)等。
可选地,用户设备260可以通过网络230等与模拟仿真系统200连接。用户设备260可以是智能手机、计算机和/或任意其他计算平台。用户设备260可用于通过网络230向模拟仿真系统200发送多个代码指令以在建模的CPU上执行,例如用于测试建模的CPU设计的性能的OS和基准测试应用。
可通过一个或多个处理器204执行来自存储器208中一个或多个软件模块(例如,进程管理器210、虚拟平台仿真器211、流水线模型212和/或代理层213)的代码来执行模拟仿真方法100。其中软件模块是指存储在存储器208等非瞬时介质中并且由一个或多个处理器204等处理器执行的多个程序指令。
现再次参考图1。如101中所示,模拟仿真方法100始于根据请求发送代码指令。例如一个或多个处理器204上执行的来自PSM 212的代码指令可以指示发送请求以从VPE 211取出代码指令。
可选地,取出请求和/或PSM 212和VPE 211之间的所有消息传递和通信可以是代理层API函数调用,包括一个或多个处理器204上执行的来自代理层213的代码指令。代理层213可以包括代码指令。当在一个或多个处理器204上执行时,所述代码指令指示接收和发送消息,例如取出代码指令的请求以及对包括所请求的代码指令的请求的响应等等。
现参考图3A,图3A为本发明实施例代码模块VPE 211、PSM 212和代理层213之间的连接的示意图。如320所示,VPE 211中的多个虚拟内核可以通过代理层213与PSM 212中相应的流水线内核330通信。如下面在图3B所示,由一个或多个处理器204上执行的代理层213中的代码指令来实现所述通信。所述虚拟平台仿真器211包括CPU内核320、内存214和设备216。
现参考图3B,图3B为本发明实施例由代理层213向PSM 212和VPE 211提供的服务的示意图。
如213所示,可选地,当在一个或多个处理器204上执行来自代理层213的代码指令时指示以下一组动作:PSM 212和VPE 211之间用于发送消息、通信、数据、指令取出请求和/或请求的指令的API函数调用。存储指令踪迹,包括制作由PSM 212取出的所有指令和对应踪迹的临时副本,例如,在本地内存缓存和/或存储器208中的先入先出(first in firstout,简称FIFO)记录中存储踪迹。执行replay()API函数调用,包括重取先前取出的指令,例如从上述指令踪迹和/或VPE 211中取出指令。管理虚拟和/或物理PC,例如指示代理层213根据PSM 212的replay()函数调用改变相应PC的值。管理虚拟和/或物理存储器地址,例如,从VPE 211接收用于根据虚拟地址取出代码块的请求,并将所述虚拟地址转换为存储器208中的物理地址。管理功率状态,例如,当检测到VPE 211和/或PSM 212已经完整执行了一组代码指令时,指示VPE 211和/或PSM 212停止操作。跟踪数据包,例如,对VPE 211和/或PSM 212之间经过的数据包进行记录。跟踪磁盘I/O,例如,对VPE 211检索的存储器208的内容进行记录。另外,代理层213可以包括指示PSM 212和VPE 211之间任何通信和/或交互的任何其他代码指令。
现参考图3C,图3C是本发明实施例将代码指令从VPE 211取到PSM 212的示意图。如351所示,一个或多个处理器204上执行的来自PSM 212的代码指令指示向VPE 211发送取出指令请求。如352所示,一个或多个处理器204上执行的来自VPE 211的代码指令指示取回代码指令块,如上所述地对块中的指令进行处理,并且如353所示向PSM 212发送所请求的指令。如354和355所示,PSM 212请求并接收其他指令。
可选地,VPE 211存储生成的代码指令的踪迹直到PSM 212请求相应的代码指令。
可选地,根据相应指令的PC识别待取指令,例如通过一个或多个处理器204上执行的来自PSM 212的代码指令为所请求的指令指定PC。
可选地,一个或多个处理器204上执行的来自VPE 211的代码指令指示关闭VPE211的调度器并开启根据来自PSM 212的代码取出请求而进行的修改的调度器。调度器可以是一个或多个处理器204上执行的VPE 211中的指示每个VPE内核的进程的代码指令。修改的调度器指示取出代码指令块以根据如上所述的来自PSM 212的取出请求进行处理。
现参考图3D,图3D是本发明实施例调度执行多个内核上的代码指令的示意图。如371所示,在一个VPE 211内核上调度和执行整个代码指令块,随后在另一个VPE 211内核上执行下一代码指令块。如372所示,PSM 212内核单独执行代码指令或者以比代码块更小的组执行代码指令。
现再次参考图1。如102所示,VPE 211检测由PSM 212请求的代码指令的分支误预测。例如,一个或多个处理器204上执行的来自PSM 212的代码指令指示将预测的分支指令与分支指令的计算进行对比,其中不匹配即为误预测。
可选地,代理层213通过所请求的指令的PC与从VPE 211取出的指令的PC之间的不匹配来检测误预测。
如上所述,如图1所示,在步骤103中,可选地,VPE 211进入沙盒模式来响应检测到的误预测。VPE 211可以通过发送虚设指令且当接收到具有正确分支PC的取出请求时退出沙盒模式来响应来自PSM 212的取出请求和后续取出请求。
当PSM 212取出虚设指令时,将虚设指令输入到内核流水线。在流水线的提交阶段之前,PSM212检测如上所述的误预测,并且执行以下动作以从所述误预测中恢复。识别分支误预测的位置,并将恢复消息发送到PSM 212来指示PSM 212回滚到分支点。可以将恢复消息作为代理层API rollback()函数调用发送。PSM 212不提交所述虚设指令。
现参考图4A,图4A为本发明实施例分支误预测时PSM 212PC的状态的示意图。其中,每个圆圈表示内核流水线中的指令。如401所示,由于误预测,PSM 212向VPE 211请求待取的错误指令。如402所示,由于检测到误预测,PSM 212将PC设置为正确的分支指令,并且如403所示,取出正确的指令。
现参考图4B,图4B是本发明实施例PSM 212从VPE 211顺序取出指令的示意图。如451所示,粗箭头表示PSM 212内的消息。如452所示,中箭头表示来自PSM 212的取出请求。如453所示,细箭头表示来自VPE 211的取出答复。如上所述,如310所示,代理层213向VPE211和PSM 212提供互操作性服务。
现参考图4C,图4C为本发明实施例当发生分支误预测时在PSM 212和VPE 211中执行指令的程序计数器(program counter,简称PC)和顺序的示意图。
471表示具有编号为10到81的PC的CPU中指令的执行顺序。472表示具有编号为10到81的PC的VPE 211中的指令的执行顺序。473表示当分支误预测发生时具有编号为10到81的PC的PSM 212中指令的执行顺序。474表示执行rollback()API后PSM 212中指令的执行顺序。
如471所示,具有标记为“BZ LABEL”的PC 13的指令是条件分支指令,并且以下正确的指令位于PC 80。
如472所示,一个或多个处理器204上执行的来自VPE 211的代码指令指示正确地计算位于PC 13处的分支,并且以下指令位于PC 80。
如473所示,一个或多个处理器204上执行的PSM 212中的代码指令指示PC 13处的误预测分支,并且从VPE 211取出具有PC 14、PC 15和PC 16的指令。
如上所述,如474所示,一个或多个处理器204上执行的PSM 212中的代码指令指示调用API函数rollback(),使得在PC 80处取出正确的指令,且不提交误取的指令。
现再次参考图1。如104所示,例如通过一个或多个处理器204上执行的来自PSM212的代码指令指示冲突检测来生成或检测清空事件。可选地,PSM 212在正常操作时生成一个或多个清空流水线事件,然后检测所生成的流水线清空事件。可选地,清空流水线事件可以是分支误预测和/或流水线冲突的结果,例如加载/存储数据缓存未命中、用于无序或RAW冲突的内存消歧、停止的流水线等等。
如105所示,为响应检测到的清空事件,重取先前取出的指令,并且不提交流水线中与冲突相关的指令的结果。例如,一个或多个处理器204上执行的来自PSM 212的代码指令、来自代理层213的代码指令和/或来自VPE 211的代码指令可以指示以下内容:当PSM212检测到清空事件时,可选地,PSM 212调用replay()API函数调用来请求重取或重放当前在PSM 212内核流水线中最近取出的指令。可选地,如上所述,代理层213通过函数replay()将最近取出的指令从本地缓存返回到PSM 212。可选地,代理层213通过函数replay()将最近取出的指令从VPE 211返回到PSM 212。可选地,VPE 211维护最近取出的指令的缓存,其包括当前在PSM 212流水线中的指令,例如本地缓存和/或存储器208中存储的历史事务记录。VPE 211将重取的指令发送到PSM 212。PSM 212不提交流水线中与冲突相关的指令,但执行并提交重取的指令。
如106所示,当取出并执行已取出的指令时,完成模拟仿真方法100。
现参考图5A,图5A为本发明实施例清空事件时模拟仿真系统200的PC和内核流水线的状态的示意图。如501所示,每个圆圈表示PSM 212内核流水线中的指令,例如通过一个或多个处理器204上执行的来自PSM 212的代码指令。如502所示,如上所述,检测到清空事件。如503所示,曲线箭头表示检测到的清空事件的结果。其中如上所述,重取先前取出的指令。现再次参考图5B,图5B是本发明实施例在清空事件之前和之后PSM 212内核流水线的示意图。如551所示,每个正方形都表示内核流水线中的代码指令。其中,由PSM 212从左向右处理代码指令。如552所示,在检测清空事件之前,最近处理的指令在此称为最新指令,是流水线中最右侧的指令。如553所示,在同一内核流水线中检测清空事件之后不会提交流水线中指令的执行,并且由于replay()API函数调用,如上所述,重取最新的指令且最新的指令现在处于较早的流水线位置。
现参考图5C,图5C为本发明实施例当发生清空事件时在PSM 212和VPE 211中执行指令的PC和顺序的示意图。
571表示具有编号为10到81的PC的CPU的内核流水线中指令的PC。572表示具有编号为10到81的PC的VPE 211中的执行的指令的PC。573表示当清空事件发生时具有编号为10到81的PC的PSM 212的内核流水线中指令的PC。574表示执行replay()API后PSM 212中提交的指令的PC。
如571所示,由于在PC 11处写入R1,寄存器“R1”的值可能不正确。因此具有标记为“load R3←[R1]”的PC 13的指令会生成冲突。
如572所示,一个或多个处理器204上执行的来自VPE 211的代码指令指示正确计算“R1”的值。
如573所示,一个或多个处理器204上执行的PSM 212中的代码指令指示检测可能的冲突,并且通过调用如上所述的API函数调用replay()重取所述示例中具有PC 13-16的最近的指令。如574所示,一个或多个处理器204上执行的PSM 212中的代码指令中指示不提交PC 13-16,仅提交重取的指令PC 13-16。
现参考图6,图6是本发明实施例多个PSM内核流水线控制多个VPE 211内核的示意图。粗箭头线表示当VPE 211从代码块中检索指令并取到PSM 212时指令的移动。PSM 212包括代码指令。当在一个或多个处理器204上执行时,所述代码指令指示多个CPU内核流水线模型。其中,每个内核流水线模型控制相应的VPE 211内核的进程。例如,如601和602所示,PSM内核“0”控制相应VPE 211内核“0”的进程。如603和604所示,PSM 212内核“1”控制VPE211内核“1”。当在一个或多个处理器204上执行时,进程管理器210中的代码指令可以指示将代码指令分配给单独的PSM 212内核流水线。
对本发明各个实施例的描述只是为了说明的目的,而这些描述并不旨在穷举或限于所公开的实施例。在不脱离所描述的实施例的范围和精神的情况下,本领域技术人员可以清楚理解许多修改和变化。相比于市场上可找到的技术,选择此处使用的术语可最好地解释本实施例的原理、实际应用或技术进步,或使本领域其他技术人员理解此处公开的实施例。
希望在从本申请逐渐成熟的专利的有效期内,可以开发很多相关的处理器仿真器和流水线模型,并且术语VPE和PSM的范围旨在先验地包括所有此类新技术。
本文所使用的术语“约”是指±10%。
术语“包括”、“包含”、“具有”以及其变化形式表示“包含但不限于”。这个术语包括了术语“由……组成”以及“本质上由……组成”。
短语“主要由…组成”意指组成物或方法可以包含额外成分和/或步骤,但前提是所述额外成分和/或步骤不会实质上改变所要求的组成物或方法的基本和新颖特性。
除非上下文中另有明确说明,此处使用的单数形式“一个”和“所述”包括复数含义。例如,术语“化合物”或“至少一个化合物”可以包含多个化合物,包含其混合物。
此处使用的词“示例性的”表示“为一个例子、示例或说明”。任何“示例性的”实施例并不一定理解为优先于或优越于其他实施例,和/或并不排除其他实施例特点的结合。
此处使用的词语“可选地”表示“在一些实施例中提供且在其他实施例中没有提供”。本发明的任意特定的实施例可以包含多个“可选的”特征,除非这些特征相互矛盾。
在整个本申请案中,本发明的各种实施例可以范围格式呈现。应理解,范围格式的描述仅为了方便和简洁起见,并且不应该被解释为对本发明范围的固定限制。因此,对范围的描述应被认为是已经具体地公开所有可能的子范围以及所述范围内的个别数值。例如,对例如从1到6的范围的描述应被认为是已经具体地公开子范围,例如从1到3、从1到4、从1到5、从2到4、从2到6、从3到6等,以及所述范围内的个别数字,例如1、2、3、4、5和6。不管范围的宽度如何,这都适用。
当此处指出一个数字范围时,表示包含了在指出的这个范围内的任意所列举的数字(分数或整数)。短语“在第一个所指示的数和第二个所指示的数范围内”以及“从第一个所指示的数到第二个所指示的数范围内”在这里互换使用,表示包括第一个和第二个所指示的数以及二者之间所有的分数和整数。
应了解,为简洁起见在单独实施例的上下文中描述的本发明的某些特征还可以组合提供于单个实施例中。相反地,为简洁起见在单个实施例的上下文中描述的本发明的各个特征也可以单独地或以任何合适的子组合或作为本发明的任何合适的其它实施例提供。在各个实施例的上下文中描述的某些特征未视为那些实施例的基本特征,除非没有这些元素所述实施例无效。
Claims (10)
1.一种用于模拟多核处理器设计的系统(200),其特征在于,包括:
输入/输出接口(202);
处理器(204);
虚拟平台仿真器(211);以及
性能模拟模型(212),其中,所述性能模拟模型(212)包括至少一个流水线模型(330);所述输入/输出接口(202)用于接收包括多个指令块的代码指令;
所述处理器(204)用于执行代码,以执行以下操作:
指示所述虚拟平台仿真器(211)仿真执行所述多个指令块中的一个指令块,以基于所述指令块生成多个块导出代码指令的流;
当检测到所述指令块的指令分支中的误预测分支时,指示所述虚拟平台仿真器(211)向所述流添加多个虚设代码指令;以及
当检测到清空流水线事件时,指示所述虚拟平台仿真器(211)按照多个先前执行的指令的原始执行顺序向所述流添加所述先前执行的指令;为响应从所述流水线模型接收的多个连续单独指令请求中的每个请求,相继单独取出并传送所述多个块导出代码指令中的每个指令、所述多个虚设代码指令中以及所述多个先前执行的指令中的至少一个指令,以在所述流水线模型中执行并提交。
2.根据权利要求1所述的系统(200),其特征在于,所述处理器用于通过多个应用编程接口指令来指示所述虚拟平台仿真器。
3.根据上述权利要求中任一项所述的系统(200),其特征在于,所述处理器用于为多核处理器的多个仿真核中的每个仿真核并行执行所述代码。
4.根据权利要求3所述的系统(200),其特征在于,所述处理器用于为所述多个仿真核中的每个仿真核维护已取指令的历史列表,在检测到所述清空流水线事件时,移动位置指针或索引以指向所述历史列表最早清空的指令,从所述历史列表中获取新的已取指令,将已取指令的指针前进到所述历史列表中的下个指令,并且当到达所述历史列表的末尾,返回从所述虚拟平台仿真器取出指令的正常操作。
5.根据上述权利要求中的任一项所述的系统(200),其特征在于,当检测到所述误预测分支时,所述系统用于进入沙盒模式,其中,在所述流水线模型中执行和提交的至少一个错误指令是由所述虚拟平台仿真器发送的,在识别出误预测时,指示在所述虚拟平台仿真器(211)的代理层处回滚到所述指令分支以进行正确的分支决策。
6.根据上述权利要求中任一项所述的系统(200),其特征在于,在仿真所述多个块导出代码指令时检测所述误预测分支,所述多个先前执行的指令包括在所述流水线模型中执行但不提交的至少一个错误指令;所述处理器用于执行所述代码,以指示清空所述流水线模型来响应对所述分支误预测的识别,并指示在所述虚拟平台仿真器(211)的代理层处回滚到所述指令分支。
7.根据上述权利要求中的任一项所述的系统(200),其特征在于,还包括更新尚未提交的且未从所述多个块导出代码指令清空的指令数据集,并且指示所述虚拟平台仿真器(211)像添加所述多个先前执行的代码指令一样添加所述指令数据集中的指令。
8.根据上述权利要求中任一项所述的系统(200),其特征在于,所述处理器用于仅当请求的指令是所述指令块的一员时,指示所述虚拟平台仿真器(211)仿真执行所述指令块来响应来自所述流水线模型的所述指令请求。
9.根据上述权利要求中的任一项所述的系统(200),其特征在于,所述虚拟平台仿真器(211)包括调度器,用于调度下个指令块的处理,其中,所述调度器用于当从所述流水线模型接收的指令请求包括作为所述下个指令块的一员的代码指令时,指示所述虚拟平台仿真器仿真执行所述下个指令块。
10.一种用于模拟多核处理器设计的方法,其特征在于,包括:
接收包括多个指令块的代码指令;
指示虚拟平台仿真器(211)仿真执行所述多个指令块中的一个指令块,以基于所述指令块生成多个块导出代码指令的流;
当检测到所述指令块的指令分支中的误预测分支时,指示所述虚拟平台仿真器(211)向所述流添加多个虚设代码指令;
当检测到清空流水线事件时,指示所述虚拟平台仿真器(211)按照多个先前执行的指令的原始执行顺序向所述流添加所述先前执行的指令;以及
为响应从所述流水线模型接收的多个连续单独指令请求中的每个请求,相继单独取出并传送所述多个块导出代码指令中的每个指令、所述多个虚设代码指令中以及所述多个先前执行的指令中的至少一个指令,以在所述流水线模型中执行并提交。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/EP2017/053462 WO2018149495A1 (en) | 2017-02-16 | 2017-02-16 | A method and system to fetch multicore instruction traces from a virtual platform emulator to a performance simulation model |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109690536A true CN109690536A (zh) | 2019-04-26 |
CN109690536B CN109690536B (zh) | 2021-03-23 |
Family
ID=58046683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201780039897.0A Expired - Fee Related CN109690536B (zh) | 2017-02-16 | 2017-02-16 | 将多核指令踪迹从虚拟平台仿真器取到性能模拟模型的方法和系统 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN109690536B (zh) |
WO (1) | WO2018149495A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324948A (zh) * | 2020-02-10 | 2020-06-23 | 上海兆芯集成电路有限公司 | 模拟方法及模拟系统 |
CN113515348A (zh) * | 2021-07-16 | 2021-10-19 | 江苏师范大学 | 一种基于时机动作流的模拟器建模方法及装置 |
CN116070565A (zh) * | 2023-03-01 | 2023-05-05 | 摩尔线程智能科技(北京)有限责任公司 | 一种模拟多核处理器的方法及装置、电子设备和存储介质 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115421861B (zh) * | 2022-09-14 | 2023-10-31 | 北京计算机技术及应用研究所 | 一种通用的TMS320C55x处理器指令集虚拟化仿真方法 |
CN115421863B (zh) * | 2022-09-14 | 2023-04-28 | 北京计算机技术及应用研究所 | 一种通用的mips64处理器指令集虚拟化仿真方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
CN101373427A (zh) * | 2007-08-24 | 2009-02-25 | 松下电器产业株式会社 | 程序执行控制装置 |
CN102360282A (zh) * | 2011-09-26 | 2012-02-22 | 杭州中天微系统有限公司 | 快速处置分支指令预测错误的流水线处理器装置 |
CN103530471A (zh) * | 2013-10-23 | 2014-01-22 | 中国科学院声学研究所 | 一种基于模拟器的关键路径分析方法 |
EP2731008A1 (en) * | 2012-11-12 | 2014-05-14 | Fujitsu Limited | Resource contention in multiple cores |
-
2017
- 2017-02-16 WO PCT/EP2017/053462 patent/WO2018149495A1/en active Application Filing
- 2017-02-16 CN CN201780039897.0A patent/CN109690536B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101002169A (zh) * | 2004-05-19 | 2007-07-18 | Arc国际(英国)公司 | 微处理器架构 |
CN101373427A (zh) * | 2007-08-24 | 2009-02-25 | 松下电器产业株式会社 | 程序执行控制装置 |
CN102360282A (zh) * | 2011-09-26 | 2012-02-22 | 杭州中天微系统有限公司 | 快速处置分支指令预测错误的流水线处理器装置 |
EP2731008A1 (en) * | 2012-11-12 | 2014-05-14 | Fujitsu Limited | Resource contention in multiple cores |
CN103530471A (zh) * | 2013-10-23 | 2014-01-22 | 中国科学院声学研究所 | 一种基于模拟器的关键路径分析方法 |
Non-Patent Citations (2)
Title |
---|
BHARGAVA P等: "accurately modeling speculative instruction fetching in trace-driven simulation", 《1999 IEEE INTERNATIONAL PERFORMANCE, COMPUTING AND COMMUNICATIONS CONFERENCE》 * |
MODI H等: "accurate modeling of aggressive speculation in modern microprocessor architectures", 《13TH IEEE INTERNATIONAL SYMPOSIUM ON MODELING, ANALYSIS, AND SIMULATION OF COMPUTER AND TELECOMMUNICATION SYSTEMS》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324948A (zh) * | 2020-02-10 | 2020-06-23 | 上海兆芯集成电路有限公司 | 模拟方法及模拟系统 |
CN111324948B (zh) * | 2020-02-10 | 2023-04-25 | 上海兆芯集成电路有限公司 | 模拟方法及模拟系统 |
CN113515348A (zh) * | 2021-07-16 | 2021-10-19 | 江苏师范大学 | 一种基于时机动作流的模拟器建模方法及装置 |
CN113515348B (zh) * | 2021-07-16 | 2023-11-14 | 江苏师范大学 | 一种基于时机动作流的模拟器建模方法及装置 |
CN116070565A (zh) * | 2023-03-01 | 2023-05-05 | 摩尔线程智能科技(北京)有限责任公司 | 一种模拟多核处理器的方法及装置、电子设备和存储介质 |
CN116070565B (zh) * | 2023-03-01 | 2023-06-13 | 摩尔线程智能科技(北京)有限责任公司 | 一种模拟多核处理器的方法及装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109690536B (zh) | 2021-03-23 |
WO2018149495A1 (en) | 2018-08-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109690536A (zh) | 将多核指令踪迹从虚拟平台仿真器取到性能模拟模型的方法和系统 | |
TWI551986B (zh) | 用於自較低特殊權限狀態控制執行階段檢測設施之操作之電腦程式產品、方法及其系統 | |
CN102103483B (zh) | 汇聚和散布多个数据元素 | |
US8855994B2 (en) | Method to simulate a digital system | |
CN104054053B (zh) | 用于促进计算环境中的处理的方法和系统 | |
CN104169889B (zh) | 在事务执行模式中的运行时间检测采样的方法和系统 | |
US8170859B1 (en) | Methods, apparatuses and computer program products for simulating arbitrary unmodified code | |
CN109313567A (zh) | 虚拟化精确的基于事件的采样 | |
CN110520837A (zh) | 基于重命名寄存器恢复的寄存器上下文还原 | |
CN104364771B (zh) | 修改来自较小特权状态的运行时间仪表控制 | |
CN103562874B (zh) | 解除配置存储级内存命令 | |
CN104011681A (zh) | 向逻辑分区提供反映处理器核的独占使用的硬件线程特定信息 | |
CN104054054B (zh) | 用于促进计算环境中的处理的方法、系统及存储介质 | |
EP3662372B1 (en) | Tentative execution of code in a debugger | |
US11003452B2 (en) | Effectiveness and prioritization of prefetches | |
CN104169888A (zh) | 运行时间仪表定向采样 | |
CN104169886B (zh) | 通过地址的运行时间检测间接采样的方法和系统 | |
CN103562864B (zh) | 执行开始操作员消息命令 | |
CN104169887B (zh) | 通过指令操作码的运行时间检测间接采样的方法和系统 | |
CN109964207A (zh) | 用于时间行程调试和分析的基于高速缓存的跟踪 | |
CN103597462B (zh) | 发送操作员消息命令到耦合设施 | |
CN103562877B (zh) | 处理操作员消息命令 | |
JP5542643B2 (ja) | シミュレーション装置及びシミュレーションプログラム | |
CN104380265B (zh) | 运行时间检测控制发出指令 | |
WO2006054265A2 (en) | Co-simulation of a processor design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210323 Termination date: 20220216 |