CN114691199A - 指令转换装置及其转换方法和系统以及处理器 - Google Patents
指令转换装置及其转换方法和系统以及处理器 Download PDFInfo
- Publication number
- CN114691199A CN114691199A CN202011588885.3A CN202011588885A CN114691199A CN 114691199 A CN114691199 A CN 114691199A CN 202011588885 A CN202011588885 A CN 202011588885A CN 114691199 A CN114691199 A CN 114691199A
- Authority
- CN
- China
- Prior art keywords
- instruction
- conversion
- processor
- executed
- augmentation
- 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
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/3017—Runtime instruction translation, e.g. macros
Abstract
本发明涉及一种指令转换装置及其转换方法和系统以及处理器。该转换装置包括监测器,该监测器用以判断待执行指令是否属于与处理器所具备指令集架构为同一类型但属于新指令集或扩充指令集中的扩增指令。若该待执行指令为该扩增指令时,经由转换系统将该待执行指令转换为转换指令序列后传送至该处理器执行。由此,可延长电子设备的使用年限。
Description
技术领域
本发明有关于一种实现计算机指令兼容的技术,且特别有关于指令的转换装置及其转换方法和系统以及处理器。
背景技术
随着计算机指令集系统技术的不断发展,支持各指令集架构的系列处理器所执行的指令集会逐渐更新版本,导致旧版的处理器硬件架构无法支持同类型指令集架构的新指令集或扩充指令集的指令。若新指令集中的指令无法由处理器正确辨识的话,处理器将无法正确运用这些新指令甚至发生执行错误,这样将导致使用者的困扰。
因此,当某一系列或型号的处理器无法支持新指令集或扩充指令集的指令时,通常便需要淘汰掉这些旧版处理器,从而形成资源的浪费,且变相缩短了使用到这些旧版处理器的电子设备的使用年限。
发明内容
本发明提供一种指令转换装置及其转换方法,用以对相对于旧版处理器所具备指令集架构为同类型但属于新指令集或扩充指令集中的扩增指令转换为可以让旧版处理器正确执行的转换指令序列,并在旧版处理器执行转换指令序列后能正确模拟扩增指令所指式的操作,从而延长使用旧版处理器的电子设备使用年限。
本发明的指令转换装置包括监测器。监测器用以判断待执行指令是否为可支持指令或为扩增指令。其中,若所述待执行指令为所述可支持指令时,经由一处理器执行所述待执行指令。若所述待执行指令为所述扩增指令时,经由转换系统将所述待执行指令转换为一个转换指令序列并提供至所述处理器执行。
本发明的转换方法包括下列步骤。判断待执行指令是否为可支持指令或为扩增指令。若所述待执行指令为所述可支持指令时,经由处理器执行所述待执行指令;以及,若所述待执行指令为所述扩增指令时,经由转换系统将所述待执行指令转换为一个转换指令序列并提供给所述处理器执行。
基于上述,本发明实施例所述的指令转换装置及其转换方法利用监测器来判断应用程序中的待执行指令是否为处理器可支持指令或是扩增指令,且在此待执行指令判断为扩增指令时,利用本发明实施例设置的转换系统将此待执行指令转换为处理器可运行的一个转换指令序列,并将此转换指令序列提供给处理器执行。
本发明实施例还可通过转换缓存器将扩增指令对应的转换指令序列进行缓存,且在后续发现目前将执行的待执行指令为转换过的相同扩增指令时,可将转换缓存器中对应的转换指令序列提供给处理器管线级电路运行,而免去重复性地由转换系统进行转换。因此,运用本发明实施例的旧版处理器可通过该转换系统来对扩增指令进行转换且运行其功能,从而延长电子设备的使用年限。
附图说明
图1是依照本发明第一实施例的一种电子装置以及位于电子装置中的转换装置的示意图。
图2A是依照本发明第二实施例的一种电子装置以及位于电子装置中的转换装置的示意图。
图2B是依照本发明第二实施例的一种电子装置的模拟寄存器文件的内部寄存器的映射关系的示意图。
图2C是依照本发明第三实施例的一种电子装置以及位于电子装置中的转换装置的示意图。
图2D绘示四核心处理器设置转换缓存器的示意图。
图2E绘示转换缓存器的另一种设置方式。
图3A是处理器内部监测器第一个实施例的功能方块图。
图3B是本发明监测器第二种实施方式的方块图。
图3C是本发明监测器第三种实施方式的方块图。
图4A是本发明实施例中处理器内部的详细结构图。
图4B是依照本发明处理器再一种实施方式的结构图。
图4C是依照本发明处理器另一种实施方式的结构图。
图5是依照本发明实施例的转换方法的流程图。
图6是依照本发明另一实施例的转换方法的流程图。
图7是图1中扩增指令数据库152的结构示意图。
图8例示本发明实施例中的转换缓存器的结构示意图。
其中,附图中符号的简单说明如下:
100:电子装置;110:处理器;120:作业系统;130:应用程序;132:待执行指令;140:监测器;1402:指令判断单元;150:转换系统;152:扩增指令数据库;154:事件处理模块;116:专用硬件;160:执行器;1602:重命名单元;1604:保留站;1606:执行单元;1608:访存单元;171、172、173、174、175、275、276、277:箭头;280:转换缓存器;290:模拟寄存器文件;295:模拟储存单元;310:指令解码器;3402:指令解析单元;3404:微指令序列调用单元;340:私有寄存器;410:转换后备缓冲器;420:指令快取;430:分支预测器;440:重新排序缓存区;4402:指令提交单元;4404:微指令缓存区;450:微码存储器;460:微码控制单元;470:微指令序列储存单元;S502、S504、S506、S508、S510、S512、S514、S516:步骤;S602、S604、S606、S608、S610、S612、S614、S616、S618:步骤;702、802:控制单元;704、804:扩增指令转换表;7042、8042:扩增指令标签;70422、80422:命中扩增指令标签的转换指令序列指针;7044、8044:转换指令序列指针;706、806:转换指令序列表;7062、8062:转换指令序列;70622、80622:命中扩增指令标签所需的转换指令序列;708、808:虚线箭头。
具体实施方式
本说明书及权利要求书中包含某些术语与专有名词定义如下:
可支持指令:是指相对于某一系列或型号的处理器而言属于原生指令(nativeinstruction)、或可辨识且解译为原生指令且执行的指令。
不可支持指令:是指相对于某一系列或型号处理器目前所具备指令集架构而言为同类型但属于新指令集或扩充指令集中,因而无法正确识别的指令、错误的指令、或与该处理器属于不同指令集架构的指令(例如对X86处理器而言,ARM指令集架构或RISC指令集架构中的指令即是不同指令集架构的指令)等三种类型的指令。
扩增指令:是指不可支持指令中,相对于某一系列或型号处理器目前所具备指令集架构而言为同一类型但属于新指令集或扩充指令集里所以无法正确识别的指令。举例来说,相对于Pentium M处理器而言,AVX/AVX-512中的指令(例如VADDSD或VADDPS等)即是扩增指令。
不可转换指令:是指不可支持指令中的错误指令、或与该处理器属于不同指令集架构的指令两种类型的指令。
转换指令序列(instruction sequence):是指处理器设计者针对扩增指令所指示操作,依据处理器原生指令或可支持指令事先编译而组成的指令序列,且包含于转换指令序列的原生指令或可支持指令于处理器执行后,可以达到与执行该扩增指令相同的执行结果。
此处应强调的是,上述可支持指令、不可支持指令、扩增指令、不可转换指令、转换指令序列等皆是针对某一系列或型号的处理器而言。举例来说,该系列或型号的处理器可为具备例如ARM Cortex系列指令集的精简指令集运算(Reduced Instruction SetComputing,RISC)、Intel/AMD公司的X86指令集的复杂指令集运算(Complex InstructionSet Computing,CISC)等指令集的处理器、支持MIPS(Microprocessor withoutInterlocked Pipeline Stages)或RISC-V(RISC-Five)指令集架构的处理器、能同时支持两种指令集架构(例如ARM与X86指令集架构)的处理器、或是具备RISC/CISC之外的其他指令集架构的处理器,本发明在处理器所支持的指令集架构的类型上并不做特别限定。本领域技术人员应可理解,集成电路制造商可能会依其需求调整处理器所支持的指令集架构的内容,本发明对此并不做任何限制。
关于上述自定义名词应说明的是,结合本发明的技术思想,本领域技术人员可自行定义不同的技术名词,但是应区分的是上述自定义名词应从技术实现功能的角度出发理解,而不应以名词名称作区分,本发明并不限制与此。本领域技术人员应可理解,集成电路制造商可能会用不同的名词来定义某一特定的概念和/或称呼某一特定的组件。本说明书及权利要求书并不以名称的差异来作为区分的方式,而是以在功能上的差异来作为区分的准则。在通篇说明书及权利要求书当中所提及的“包含”及“包括”一词为开放式的用语,故应解释成“包含但不仅限定于”。此外,“耦接”一词在本说明书中包含任何直接及间接的电性连接手段。因此,若文中描述一第一装置耦接至一第二装置,则代表该第一装置可直接电性连接至该第二装置,或经由其它装置或连接手段而间接地电性连接至该第二装置。本领域技术人员应知,上述叙述的变化皆不脱离本发明精神,且应包含于本发明权利要求书内。
本发明实施例中所提及在处理器中进行编译并执行的指令,是指程序设计者利用中/高阶程序语言(例如C语言/C++语言/C#语言、Java语言、Python语言…等)所撰写的程序,经过编译器(compiler)或直译器(interpreter)处理后所产生的机器指令(或机器代码)。本领域技术人员应理解的是,为了图示绘示和方便说明之故,本发明实施例中所述及处理器所执行的指令是指由编译器或直译器处理后的机器指令,往后不再对此项差异进行说明。
如前所述,当待执行指令是属于新指令集或扩充指令集的扩增指令时,由于处理器无法对其正确解译(decode),因此会解译出一个空指令(No Operation或No OperationPerformed,NOP)并引发未定义指令(Undefined instruction)的例外(Exception),而在这个对应于扩增指令的空指令被提交时便会调用对应于这个未定义指令的例外服务程序来处理这个例外情况,随后再回报予作业系统与应用程序。本案发明人巧妙利用这个特性,在扩增指令对应的空指令被提交时,将调用未定义指令中断服务程序的过程,转向去对转换系统提出指令转换请求,以取得对应于扩增指令的转换指令序列(如上所述,转换指令序列系由处理器的原生指令或可支持指令所组成),以达成模拟扩增指令执行结果的目的,以下将通过图式与对应说明以对本发明实施例做详尽阐述。
图1是依照本发明第一实施例的一种电子装置100以及位于电子装置100中的转换装置的示意图,电子装置100例如是平板电脑、智能手机、计算机、服务器…等消费性电子装置。图1的电子装置100具备处理器110,且处理器110用以运行作业系统(OperatingSystem,OS)120以及应用程序130。于电子装置100开机时,可利用基本输出输入系统(BIOS)进行自我检查与初始化,随后通过处理器110运行作业系统120。作业系统120主要由处理器110执行,用以统筹各个应用程序130的运行。应用程序130由众多待执行指令132组成,这些待执行指令132通过处理器110的执行来实现应用程序所指示的功能。详细来说,处理器110将应用程序130对应的待执行指令132从储存介质(例如硬盘,未显示)读取到动态随机存取存储器(未显示)后,再依程序顺序执行。如前所述,处理器110所执行的指令132是由应用程序编译器或直译器处理后的机器指令,并非由程序设计者所撰写的原始程序。
当处理器110执行到作业系统120或应用程序130的一待执行指令132时,监测器140判断待执行指令132(如图1箭头171所示)是否为可支持指令或为不可支持指令。若监测器140判断该待执行指令132为可支持指令时,经由该处理器110执行该指令132(例如经由箭头172所示方向送往执行器160执行)并返回执行结果至应用程序130(图1箭头173所示)。可支持指令的执行为本领域技术人员的已知技术,本说明书不详细描述。此外,若监测器140判断该待执行指令是不可转换指令,则会在处理器110内部引发非法/未定义指令的例外情形,处理器110会通过未定义指令中断向量(例如#UD)调用对应的例外服务程序进行处理,最后向作业系统120与应用程序130报告错误或执行异常的状况(亦经由图1箭头173所示的方向)。关于如何处理上述不可转换指令,应为本领域技术人员的已知技术且不属本发明解决的重点,此处不赘述。再者,若监测器140判定该待执行指令132是扩增指令后,扩增指令会被传送至转换系统150(经由箭头174的方向所示),并于查询扩增指令数据库152(其内包括多个对应于扩增指令的转换指令序列)进行查询以取得对应的转换指令序列(如前所述,由至少一个原生指令所组成)后,将转换指令序列回传至处理器110执行(经由箭头175的方向所示)。后面会利用图3A-3C与图4A-4C对监测器140判定待执行指令132是否为扩增指令、以及当待执行指令132被判定为扩增指令后,经由转换系统150的协助以对扩增指令进行转换,并取得转换指令序列的运作方式做更详尽的描述。在另一实施例中,若监测器140判定该待执行指令132是扩增指令后,会将扩增指令的全部内容,包含待执行指令132的格式信息、运算元…等信息全部传送至转换系统150以进行转换操作,在另一实施例中可以仅传送待执行指令132的格式信息给转换系统,本发明对此不做限制。
为了方便说明的目的,本发明实施例运用X86处理器架构做说明,但本发明并不受限于X86处理器的应用。从上面的叙述可知,虽然处理器110具备X86指令集,但是处理器110的硬件结构无法正确解译X86新指令集或扩充指令集中的扩增指令,因此发生扩增指令虽然仍是属于X86指令集,但处理器110却无法利用自身现有的X86指令集来进行解译并正确执行此扩增指令的情形。因此,本发明实施例通过监测器140于判断待执行指令132属于X86新指令集或扩充指令集中的扩增指令时,经由转换系统150将前述待执行指令132转换为一个转换指令序列后提供至X86处理器110。X86处理器110内部的执行器160则执行由转换系统150回传的对应于扩增指令的转换指令序列(在某些实例中,会先将对组成转换指令序列的原生指令进行解译后再执行之,在另一实施例中转换指令序列可以直接执行),从而获得对应于待执行指令132的模拟执行结果。由此,本发明实施例的旧版处理器可通过转换系统150来对新指令集或扩充指令集中的扩增指令进行转换以产生转换指令序列,随后再执行该转换指令序列所指定操作,从而延长电子设备的使用年限。
处理器110例如可以是一核或多核的中央处理器单元(Central ProcessingUnit,CPU)、微处理器(micro-processor)、或是其他可程序化的处理单元(Processingunit)、数字信号处理器(Digital Signal Processor,DSP)、可程序化控制器、专用集成电路(Application Specific Integrated Circuits,ASIC)、可程序化逻辑装置(Programmable Logic Device,PLD)或其他类似装置,本发明对处理器架构与类型不做限制。
在图1的实施例中,上述监测器140被配置在处理器110内部,并可由硬件模块实现。但是需要说明的是,上述监测器140判断上述待执行指令132是否为可支持指令或为扩增指令可依据本领域技术人员的设计需求,而采用其他电路结构设计或是相应的固件/软件程序自行配置而实现此判断功能。举例来说,上述监测器140可通过驱动更新的方式实现。假设希望让某个旧款处理器来支持新版指令集,因为旧版处理器没有包含类似于监测器140的硬件,因此不仅无法解译新版指令集里的指令,也无法通过设置模拟旗标EF的方式来呼叫转换系统150协助将扩增指令转换为转换指令序列的操作。然而,如果把监测器140的功能编译为软件程序码且成为驱动程序(driver)的一部分后,当旧款处理器引发未定义指令(例如#UD)的例外时,可在获知此例外后利用回调函数(callback function)的方式至作业系统120呼叫转换系统150,并在转换系统150判断目前的指令为新指令集中的扩增指令所以需要转换协助时,由转换系统150协助对扩增指令进行转换,随后再回传对应的转换指令序列回旧版处理器执行。至于包含转换系统150的驱动程序,可以通过实时更新(LiveUpdate)的方式来进行,而处理器设计厂商可以在针对新指令集中的扩增指令用旧版处理器本地令编译好转换指令序列后,即通知旧版处理器的使用者经由实时更新处理器驱动程序的途径,让旧版处理器具备支持新指令集/扩充指令集中的能力。应当理解的是,只要是能实现上述判断功能的任一单元模块或是软件程序都应该认为是上述监测器140的相应变形。总的来说,只要是能实现判断待执行指令是否为可支持指令或为扩增指令的任何硬件单元和/或软件程序,都应该认为是本实施例中的监测器140,本发明对此不做任何限制。
接下来搭配图7来说明转换系统150的运作。图7是图1中扩增指令数据库152的结构示意图。转换系统150可以包括扩增指令数据库152,而扩增指令数据库152的内部结构可如图7所示。图7中的扩增指令数据库152包括一控制单元702、扩增指令转换表704、以及转换指令序列表706。控制单元702负责扩增指令数据库152的转换操作,并回传对应的转换指令序列至处理器110,这部分后面会再详述。扩增指令转换表704包含扩增指令标签7042与转换指令序列指针7044两个部分,分别用来储存扩增指令的格式信息、以及扩增指令对应的转换指令序列于扩增指令数据库152中的储存地址。转换指令序列表706则储存所有扩增指令的转换指令序列7062,并通过转换指令序列指针7044而调用。
控制单元702可依据扩增指令的格式信息,包含前缀(prefix,PRE)、转义码(escape code,EOP)、操作码(opcode,MOP)、以及针对各个扩增指令所需的其他解译需要的信息(Other Decode Information,ODI)等,并与扩增指令转换表704中的扩增指令标签7042进行比对,如果比对成功后(也就是扩增指令的格式信息与某个扩增指令标签7042发生命中(Hit)的情形),依据比对成功的扩增指令标签7042对应的转换指令序列指针7044,前往转换指令序列表706调用需的转换指令序列7062。举例来说,如果处理器110传送过来的待执行指令132的信息中,前缀/转换码/操作码/其他解译信息分别为PRE_J/EOP_J/MOP_J/ODI_J(J为介于1与N之间的整数),因此控制单元702将依据此PRE_J/EOP_J/MOP_J/ODI_J的扩增指令格式信息对扩增指令标签7042里的每个扩增指令标签进行比对。如图7所示,由于该笔扩增指令格式信息已储存在扩增指令数据库152中因此发生命中(如标号70422所示),于是可以从命中的扩增指令标签70422取得对应的转换指令序列指针70442,接着再利用转换指令序列指针70442所指示的地址前往转换指令序列表706寻找所需的转换指令序列,亦即依据虚线箭头708所示找到转换指令序列指针70442所需的转换指令序列7062。如图7所示,转换指令序列7062由三个可由处理器110所执行的原生指令或可支持指令所组成(亦即InstSeqJ_NatInst 1、InstSeqJ_NatInst 2、以及InstSeqJ_NatInst 3)。最后,控制单元702将由这三条可支持指令所组成的转换指令序列7062,经由箭头175所指示的方向传给处理器110进行解译、或直接送往执行器160执行。在一实施例中,处理器110除了还可传送待执行指令132的工作环境信息、以及目前处理器110的工作环境信息等资讯传给转换系统150,以判断该待执行指令132(目前为扩增指令)是否能在处理器110目前的工作状态下执行。举例来说,控制单元702可在判断该扩增指令无法(或不适合)在处理器110目前工作环境下执行时(例如扩增指令要在保护模式(protected mode)下运行,但目前的处理器却式处于真实模式(real mode)中),呼叫对应的中断服务程序来通知作业系统120/应用程序130发生异常/例外。在一实施例中,处理器110仅传送扩增指令一部分给转换系统150,例如前缀/转义码/操作码(PRE/EOP/MOP)进行比对后回传对应的转换指令序列给处理器110,而处理器110则在取得转换指令序列(只包含PRE/EOP/MOP等部分)后,由于模拟旗标EF已被设置(表示目前处理器110正在调用转换系统150处理扩增指令的转换操作中),所以在将转换指令序列与先前储存在私有寄存器340的待执行指令132(目前为扩增指令)的运算元(operands)结合后,再送往后续的管线级电路(例如执行器160)处理。在又一实施例中,在待执行指令132的全部信息被传送给转换系统时,控制单元702可以将取得的转换指令序列与待执行指令132的运算元相关信息相结合,以产生处理器110可解译后执行的宏指令、或可直接执行的微指令后再回传给处理器110。本领域技术人员可依据实际运用决定用待执行指令132那些部分进行比对、以及要形成宏指令或微指令给处理器110执行,本发明对此不予限制。
应注意的是,由于每一转换指令序列至少由一个处理器110原生指令或可支持指令所组成,例如由转换指令序列指针InstSeq1_Pointer所指示的转换指令序列就由两个原生指令InstSeq1_NatInst 1与InstSeq1_NatInst 2所组成,但是由转换指令序列指针InstSeqN_Pointer所指示的转换指令序列就只由一个原生指令InstSeqN_NatInst 1所组成,因此本实施例所述的转换指令序列是可由处理器110执行的二进制代码(binary code)所构筑,并符合X86程序集的相关规则。在一实施例中,扩增指令转换表704中的扩增指令标签7042可以是对前缀(PRE)、转义码(EOP)、操作码(MOP)、以及其他解译所需信息(ODI)做进一步处理后的编码,例如对PRE/EOP/MOP/ODI进行加密或哈希(Hashing)处理,以对扩增指令的转换过程进行保护,这部分应为本领域技术人员所熟知故不再赘述。在另一实施例中,这些扩增指令以及扩增指令相对应的转换指令序列可依据需求而增加、删除、或更新至扩增指令数据库152中。举例来说,可以通过固件更新的方式增加扩增指令转换表704与转换指令序列表706的大小,例如可以在扩增指令转换表704中增加PRE_N+1/EOP_N+1/MOP_N+1/ODI_N+1的扩增指令格式信息与对应的转换指令序列InstSeqN+1_NatInst 1…InstSeqN+1_NatInst M(N与M皆为大于1的整数),并以转换指令序列指针InstSeqN+1_Pointer则指向与该转换指令序列(上述的扩增指令格式信息、转换指令序列、以及转换指令序列指针皆未显示在图7中),这两个表格可以在修改完毕后,经由固件更新覆写原先在扩增指令数据库152内的表格内容。应注意的是,图7虽使用两个表格(亦即扩增指令转换表704与转换指令序列表706)来储存扩增指令标签与对应的转换指令序列,但本领域技术人员应知,如果处理器110可支持指令或原生指令的长度不会太长的话,由其组成的转换指令序列可以直接储存在对应的扩增指令标签后面(例如取代转换指令序列指针的位置),这样当控制单元702发现某个扩增指令标签发生命中时,便直接到后面的栏位取得扩增指令序列。本领域技术人员可依依据实际的应用,来决定是否要保留转换指针序列指针、及/或扩增指令序列的储存方式,本发明对此不做限制。
在一实施例中,转换系统150储存于电子装置100的基本输出输入系统中,并且在包含处理器110的系统开机时,基本输出输入系统将转换系统150加载至作业系统120中。在另一实施例中,转换系统150可设置于处理器110的驱动软件中,并由作业系统120运行后将其加载进系统内存;在又一实施例中,转换系统150可编译至作业系统120的核心(Kernel)中,并在作业系统120执行后等候调用。在复一实施例中,可以在转换系统150于转换操作运作期间,通知作业系统120禁止其他中断产生以干扰转换作业的进行。上述实施例的变化皆不脱离本发明精神,且应包含于本发明权利要求书之内。
转换系统150还可以包括事件处理模块154。当转换系统150在转换的过程中发生异常或例外(例如转换指令序列不存在扩增指令数据库152、或是目前所转换的扩增指令无法(或不适合)在处理器110目前工作环境下执行)时,将由事件处理模块154将产生异常/例外结果,并将此异常/例外结果通知应用程序130与作业系统120并进行相应补救步骤,从而避免整个电子装置100因为此异常或例外而发生当机情形。举例来说,该异常/例外结果可为一数字异常标志指令,并返回该数字异常标志指令至应用程序130。在另一实施例中,该应用程序130或是作业系统120可跳过发生异常/例外的指令、显示该指令所指示功能无法执行、或报告错误等。
图2A是依照本发明第二实施例的一种电子装置200以及位于电子装置200中的转换装置的示意图,图2A中具有与图1相同编号的元件/模块其功能是相同的因此不再赘述。图1实施例与图2A实施例之间的不同处,在于电子装置200还包含一转换缓存器280用以储存转换系统150针对扩增指令所提供的转换指令序列。如图2A所示,当监测器140判断目前的待执行指令132为扩增指令时,监测器将通过箭头174所示的方向传送待执行指令132(或是待执行指令132的格式信息)至转换系统150,而转换系统150于扩增指令数据库152中进行查询并调用对应的转换指令序列后,经由箭头276所指示的方向将转换指令序列回传给处理器110。处理器110可以将该转换指令序列直接储存在转换缓存器280中(如果转换指令序列是微指令序列),接着再如箭头277所显示的方向将转换指令序列送往执行器160执行;在一实施例中,处理器110可以对该转换指令序列进行解译后(如果转换指令序列是宏指令序列)再储存于转换缓存器280,随后如箭头277所显示的方向将解译后的转换指令序列送往执行器160执行(这部分实施细节后面会再详述)。值得注意的是,由于转换缓存器280会储存先前调用过的转换指令序列,因此往后在监测器140判断待执行指令132为扩增指令时,可以先利用待执行指令的格式信息去查询转换缓存器280中是否已储存对应于该扩增指令的转换指令序列,如果在转换缓存器280发现已储存对应的转换指令序列后,便取出且执行该转换指令序列以与待执行指令的运算元信息结合后送往执行器160执行。
图8例示本发明实施例中的转换缓存器280的结构,其包括一控制单元802、扩增指令储存表804、以及转换指令序列表806。扩增指令储存表804包含有效位8042、扩增指令标签8044、与转换指令序列指针8046三个部分。当有效位8042被设置时(例如设置为1时),表示后面所储存的扩增指令标签8044与转换指令序列指针8046是有效的数据;相反的,当有效位8042被清除时(例如清除为0时),表示后面所储存的扩增指令标签8044与转换指令序列指针8046是无效数据(在图8的扩增指令储存表804以“Don’t Care”来表示),因此若有新的扩增指令与转换指令序列要储存进来时,可以选择有效位为0的栏位进行覆写。转换指令序列表806包含有效位8062与扩增指令序列8064两部分,有效位8062与扩增指令储存表804的有效位8042具有相同的值(若两者的值不同则表示后面的扩增指令序列8064属无效数据,这样可对数据正确性多一层保护),扩增指令序列8064则储存事先对扩增指令所编译的转换指令序列。当处理器110判断待执行指令132为扩增指令时,首先将利用待执行指令132的格式信息送往转换缓存器280进行查询。随后,控制单元802利用该扩增指令格式信息,与扩增指令储存表804中的有效扩增指令标签8044进行比对(例如扩增指令标签8044对应的有效位8042被设置为1),如果比对成功(也就是扩增指令的格式信息与某个扩增指令标签8044发生命中(Hit)的情形)则依据比对成功的扩增指令标签8042的转换指令序列指针8046所指示的储存地址,前往转换指令序列表806调用需的转换指令序列8062。举例来说,如果处理器110传送过来的扩增指令格式信息,亦即前缀/转换码/操作码/其他解译信息分别为PRE_J/EOP_J/MOP_J/ODI_J,因此控制单元802将依据此PREJ/EOP_J/MOP_J/ODI_J的扩增指令格式信息对有效的扩增指令标签8042里的每个标签进行比对,如图8所示,由于该笔扩增指令的微指令序列已储存在转换缓存器280中因此发生命中(如标号80442所示),于是可以从命中的扩增指令标签80442取得对应的转换指令序列指针80462,接着再利用转换指令序列指针80462所指示的地址前往转换指令序列表806寻找所需的转换指令序列(微指令序列),亦即依据虚线箭头808所示找到转换指令序列指针80462所需的转换指令序列8062,如图8所示,转换指令序列8062由三个可由处理器110所执行的原生指令或可支持指令所组成(亦即InstSeqJ_NatInst 1、InstSeqJ_NatInst 2、以及InstSeqJ_NatInst 3)。最后,控制单元802将由这三条原生指令所组成的转换指令序列8062,经由箭头275所指示的方向传给处理器110进行解译、或直接送往执行器160执行(经由箭头277所指示的方向)。当然,如前所述,若转换指令序列指针80462指向的转换指令序列8062其有效位8062若为0的话,则表示转换指令序列8062为无效数据,此情形亦属于转换缓存器280未储存对应转换指令序列,因此将通知处理器110去请求转换系统150的协助。另一方面,如果监测器140送往转换缓存器280进行查询的扩增指令格式信息并未发生命中(Miss),表示该条扩增指令先前未曾转换过,因此也未储存在转换缓存器280中,所以该条扩增指令的格式信息将被送往转换系统150进行转换处理(经由箭头174所指示的方向),这部分的转换处理已在前面说明过因此不再赘述。在一实施例中,扩增指令标签8044可以只用一部分的格式信息来组成,例如只用前缀/转义码/操作码(PRE/EOP/MOP)进行比对、或是更少的栏位来进行比对,这些部分应为本领域技术人员所熟知故不再赘述。
在另一实施例中,图8的有效位可以用时间邮戳(Time Stamp)所取代,并搭配最近最少使用算法(Least Recently Used,LRU)演算法来取代储存其内的扩增指令与对应的转换指令序列。举例来说,当转换缓存器280被初始化后,可以将时间邮戳清除为0,往后若有扩增指令的转换指令序列需要储存时,可以寻找时间邮戳为0的栏位并将扩增指令格式信息与转换指令序列依据图8的方式进行储存后,再开始递增对应的时间邮戳。接下来若有新的扩增指令序列要储存时,首先去寻找时间邮戳为0的栏位并将扩增指令格式信息与转换指令序列进行储存后,也开始递增时间邮戳。当转换缓存器280的空间已用尽时,若再有新的扩增指令序列要储存时,可以寻找时间邮戳数值最大的栏位,并将扩增指令与转换指令序列取代之。在另一实施例中,若储存在转换缓存器280的扩增指令被再次调用时,可以重设该扩增指令的时间邮戳后再进行递增,这样可让重复使用机率较高的扩增指令与转换序列尽可能维持在转换缓存器280中,不会因为是最早被储存就被新的扩增指令与转换指令序列所取代。应注意的是,上述取代扩增指令与对应转换指令序列的演算法可以有其他替代方式,例如最近最少使用演算法(Least Frequently Used,LFU)、非最近使用算法(NotMost Recently Used,NMRU)、或先进先出算法First In,First Out,FIFO)…等,本领域技术人员可依据实际应用情形选择适用的演算法,本发明对此并无限制。在又一实施例中,可以同时运用时间邮戳与有效位,以使转换缓冲器280的调用与保护更完善,本领域技术人员可依据实际应用选择实施方式,但所有不脱离本发明实施例精神所为的等效变更,皆应包含于本发明权利要求书之中。
以下针对转换缓存器280的设置位置做更进一步的描述。图2A所绘示的转换缓存器280虽设置于处理器110内部,但转换缓存器280的位置可以有许多变化。图2D绘示四核心处理器110设置转换缓存器280的示意图(四个核心分别标注为核心A、核心B、核心C、核心D),其中转换缓存器280位于处理器110每个核心的内部,因此所储存的转换指令序列由原生指令经处理器110的解译器(decoder)解译后的微指令序列(亦为二进制代码),但扩增指令标签仍可以是扩增指令的PRE/EOP/MOP/ODI等格式信息(它们基本上也是二进制编码),任何可以被控制单元802用来比对的编码皆可运用于本发明实施例中。当监测器140判断前述待执行指令132是扩增指令时,会依据箭头275指向转换缓存器280的方向,将扩增指令格式信息送往转换缓存器280,以查询该扩增指令的转换指令序列是否已经缓存其中。若在转换缓存器280中发现该扩增指令所对应转换指令序列的微指令(例如比对结果是命中(hit))时,这些微指令序列将被读出并在与目前待执行指另132的运算元信息结合后馈入执行器160去执行(如箭头277所示),不用再经过转换系统150的转换过程。相对地,若前述待执行指令132是扩增指令,但转换缓存器280没有缓存对应于该扩增指令的微指令时,如前文所述,处理器110将传送该待执行指令132(或仅有待执行指令132的格式信息)至转换系统150(如箭头174所示),再经由转换系统150的处理以取得对应于该扩增指令的转换指令序列(经由箭头276的指示),并在经过处理器110解译并取得微指令二进制代码后(若转换指令序列宏指令),依据箭头276的方向储存在转换缓存器280中且送往执行器160执行。在另一实施例中,若转换系统150回传给处理器110的转换指令序列是微指令序列,由于不需要再次经过解译处理,因此将直接储存至转换缓存器280中与直接馈入执行器160去执行(如箭头277所示)。在图2D的架构下,处理器110各个核心各自储存自己曾转换过的对应于扩增指令的转换指令序列,但是无法与其他处理器110核心共享转换指令序列。
图2E绘示转换缓存器的另一种设置方式。如图2E所示,除了在每个处理器110核心中设置上述转换缓存器280之外,在处理器110的非核心区域(uncore region,例如L3快取)又设置有一共享转换缓存器280S,并储存处理器110所有核心曾调用过的扩增指令转换指令序列的。由于储存在非核心区域的信息可被其他处理器110核心所共享,因此每个储存在共享转换缓存器280S的扩增指令对应的转换指令序列都可被其他处理器110核心所调用,不论它原先是依据哪个处理器110核心的需求而去呼叫转换系统150所取得的转换指令序列。当其他处理器110核心的监测器140发现一个待执行指令132为扩增指令并需要调用对应的转换指令序列时,可以先将该待执行指令132(或仅其格式信息)送往位于非核心区域的共享转换缓存器280S以查询其是否已储存对应于该扩增指令的转换指令序列(共享转换缓存器280S亦可利用图8的架构来取得所需的转换指令序列,只是转换指令序列都是由宏指令组成)。如果查询结果是命中(Hit),即直接从共享转换缓存器280S调出先前储存的转换指令序列并送往该处理器110核心,而该处理器110核心随即将转换指令序列送往指令快取,并在解译转换指令序列中的可支持指令成为微指令序列后,送往管线级(例如执行器160)执行且储存于处理器110核心自身的转换缓存器280中。另一方面,若位于非核心区域的共享转换缓存器280S没储存对应于扩增指令的转换指令序列,再转向转换系统150提出转换请求,并在取得所需的扩增指令序列后,对应于该扩增指令的转换指令序列将储存在位于非核心区域的共享转换缓存器280S,并且被送往发出转换需求的处理器110核心,于是储存在此非核心区域的共享转换缓存器280S的转换指令序列,便可与处理器110其它核心共用,进而免去重复性地由转换系统150进行转换的操作。此外,上述位于非核心区域的共用转换缓存器280S亦可通过处理器的驱动更新配置相应的缓存区域与大小。关于上述缓存扩增指令的转换代码及其相应的转换缓存器设计和配置,本领域技术人员可根据实际情况或需要自行设置或配置,本发明对此不做任何限制。
在另一实施例中,不论转换缓存器280是设置在处理器核心内部或设置于非核心区域(亦即共享转换缓存器280)让所有处理器核心共享转换指令序列,储存其中的转换指令序列都可以保持其中且不因处理器110的工作环境变更(Context switch)而被覆写或变更其内容,这样可以让扩增指令对应的转换指令序列尽可能给更多的应用程序130使用,而不会因处理器110自身的工作环境切换而导致不必要的指令转换操作。
电子装置200中的转换装置还包括模拟寄存器文件290。模拟寄存器文件290是为了执行扩增指令所设立的额外寄存器文件(register file),可做指示待执行指令132是否为扩增指令的旗标、或作为存储处理器的执行结果…等用途。图2B是依照本发明第二实施例的一种电子装置的模拟寄存器文件290的内部寄存器的映射关系的示意图。如图2B所示,处理器110的模拟寄存器文件290内部存在一组256位模拟寄存器Ereg0、Ereg1…Eregn+0、Eregn+1…Ereg62、Ereg63(亦即共64个256-bit模拟寄存器),该组256位寄存器可以被处理器110特定的微操作读写和运算。现假设处理器110内部的所有寄存器最多只有256位,因此当扩增指令的某个运算元(Operand)指示一组512位的目的寄存器时,由于处理器110目前的寄存器都无法完整储存这个512位目的寄存器的内容,所以也会在执行上发生问题。然而,通过模拟寄存器文件290里的模拟寄存器来模拟这个512位目的寄存器,便可以顺利解决上述的问题。举例来说,若这个512位寄存器的目的寄存器是TregN,因此可以利用模拟寄存器文件290中的两个256位模拟寄存器Eregn+0与Eregn+1来分别映射至512位寄存器TregN的高256位(high 256bits)与低256位(low 256bits)两部分。举例来说,包含512位目的寄存器的扩增指令为:
VADDPS zmm1,zmm2,zmm3…(1)
其中zmm1,zmm2,zmm3皆为512位寄存器,上述扩增指令(1)基本上可用下列两条原生指令来模拟:
Addps_IO em1,em2,em3;…(2)
Addps_hi em4,em5,em6;…(3)
其中的zmm1、zmm2、zmm3各自通过emm1/emm4、emm2/emm5、emm3/emm6来模拟其高256位与低256位的运算元。由于256位寄存器可以被处理器110所访存,因此扩增指令(1)需的执行结果,可通过在处理器110上执行两条可支持指令(2)与(3)的方式来产生执行结果。此处应说明的是,本说明书中采用256位寄存器映射模拟512位寄存器,但并不表示只限制于这两种寄存器之间的模拟。还需要说明的是,关于实现寄存器之间的映射,应是本领域技术人员的常规应用,本说明书在此并不做详细介绍。
此处应当说明的是,如图2A所示,上述模拟寄存器文件290还耦接至执行器160。应当理解的是,上述模拟寄存器文件290是存储被监测器140判定为扩增指令的待执行指令132在执行时的相关信息(包含执行结果),这些信息将持续保留在模拟寄存器中并提供后续的操作使用(例如后续的指令与目前的扩增指令在执行上有相依性(dependency)时)。换句话说,当处理器110执行完一条扩增指令A时,会将执行结果存储至模拟寄存器文件290。如果处理器110继续执行下一条指令B时,若需要用到扩增指令A的执行结果,执行器160可从模拟寄存器文件290读取该执行结果并执行相应运算。举例来说,若扩增指令A是上述的扩增指令(1),因此在执行完毕后,若其执行结果储存于模拟512位的zmm1寄存器的两个256位emm1/emm4寄存器中,所以若后续的指令B需参考zmm1寄存器的内容时,可以通过目的寄存器zmm1与模拟寄存器emm1/emm4的映射关系来取得zmm1寄存器的内容,关于此部分内容,应属于本领域技术人员的已知技术,本说明书在此不做详细描述。
请参照图2C,其绘示本发明第三实施例的一种电子装置300以及位于电子装置300中的转换装置的示意图。相较于图1与图2A的电子装置100/200,本实施例的模拟寄存器文件290与一私有寄存器340可以合并为一个模拟储存单元295,其中的内容会保留给后续的指令参考,不需要跟着处理器110工作环境的变化而被覆写或清除,本领域技术人员可以依据实际情形决定两者合并与否。在另一实施例中,私有寄存器340可以并入监测器140中。关于私有寄存器340的运用方式会在后续利用图4A-4C以及图3A-3C做更详尽的叙述。
接下来先利用图3A与图4A对处理器110内部的运作方式做更详细的说明。图4A是本发明实施例中处理器110内部的详细结构图,除了前面提过的监测器140、转换缓存器280、执行器160、模拟寄存器文件290以外,还包括指令转换后备缓冲器(lookasidebuffer)ITLB 410、指令快取420、分支预测器(branch predictor)430、重新排序(re-order)缓存区440、微码存储器450、微码控制单元460、以及私有寄存器340。指令转换后备缓冲器ITLB 410可被用以撷取需执行指令,例如支持应用程序所指示功能的指令(亦即待执行指令132)。指令快取420用以通过页表快取或转址旁路快取的方式从指令转换后备缓冲器410中获得需要执行的指令。分支预测器430与指令快取420偕同运作,分支预测器430预测指令是否会产生分支,并在预测有分支产生时将分支指令存入指令快取420。私有寄存器340中包含一个模拟旗标(Emulation Flag,EF),以指示目前的待执行指令132是否为可解译的扩增指令。此外,私有寄存器340亦包含可储存待执行指令132的空间,以在需要调用转换系统150协助扩增指令的转换时,将待执行指令132(或待执行指令132的格式信息)提供给转换系统150进行查询。模拟旗标EF的运用与扩增指令的储存后文会再详述。再者,执行器160还包含重命名单元(Renaming unit)162、保留站(Reservation station)164、执行单元166、以及访存单元168,用以执行指令解码器310对待执行指令132所解译的微指令序列,以完成待执行指令132所指示的操作。图3A是处理器110内部监测器140第一个实施例的功能方块图,其包含指令解码器310与指令判断单元1402。指令解码器310还包含一指令解析单元3402与微指令序列调用单元3404,其中指令解析单元3402与指令判断单元1402耦接、指令判断单元1402则进一步与模拟寄存器耦接,而微指令序列调用单元3404则与微指令序列储存单元470耦接。应注意的是,转换缓存器280与微指令序列调用单元3404以及指令判断单元1402耦接,并在模拟旗标EF被设置时储存由微指令序列调用单元3404所送来的微指令(μop)序列,作为往后遇到相同扩增指令时的参考。
当待执行指令132从指令快取420送往监测器140时,指令解码器310中的指令解析单元3402会先对待执行指令132进行格式分析,从而切割出前缀(PRE)、转义码(EOP)、操作码(MOP)以及其它译码(ODI)等格式信息后,再将格式信息同时送往微指令序列调用单元3404与指令判断单元1402。指令解码器中310的微指令序列调用单元3404随后对格式信息进行解码以得知待执行指令132所指示的操作,并据以从微指令序列储存单元470调用对应微指令(μop)序列,并在结合待执行指令132的运算元(operands)相关信息(例如运算元的寻址信息)以产生微指令指令后送往执行器160(例如送往重命名单元1602)。该微指令序列在运算元的重命名处理后,同时被送往保留站1604与重新排序缓存区440,保留站1604根据上述微指令序列的类型发送给执行单元166或访存单元168做进一步处理。重新排序缓存区440包含一指令提交单元(retire unit)4402与微指令缓存区4404,其中微指令缓存区4404包含多个指令条目(entry),用以储存由重命名单元1602传送过来的微指令序列,而指令提交单元4402则在微指令执行完毕后,由执行单元1606或访存单元1608通知重新排序缓冲去440依据原始的程序顺序进行指令提交(retire)。
接下来说明当处理器110所执行的待执行指令132为扩增指令的处理情形。图3A的指令判断单元1402依据格式信息(例如从待执行指令)来判断该待执行指令132是否为扩增指令,若该待执行指令132为扩增指令则设置模拟旗标EF,并指示模拟寄存器340储存待执行指令132。另一方面,如前所述,当待执行指令132为扩增指令时,微指令序列调用单元3404因无法正确解译格式信息所以将产生一空指令(NOP)。因此当在该空指令为重新排序缓存区440中最老的指令时,指令提交单元4402会去检查模拟旗标EF并发现模拟旗标EF已被设置,所以指令提交单元4402会去引发调用转换系统150的中断服务程序来进行扩增指令的转换。在一实施例中,用来调用转换系统150的中断服务程序,可以修改调用处理指令解译错误例外情形时所调用的对应于#UD的中断服务程序、或自行定义令一个中断服务程序来达成。举例来说,当引发#UD的空指令被提交且调用对应于#UD的中断服务程序时,可以修改对应#UD中断服务程序先去检查模拟旗标EF的状态,并于模拟旗标EF被设置时通过作业系统120向转换系统150提出转换请求、或是在模拟旗标EF未被设置时调用已知用以处理指令解译错误的例外处理程序。在另一实施例中,当引发指令解译错误的空指令被提交时,提交单元4402将先判断模拟旗标EF的状态并在模拟旗标EF被设置时通过自行定义的中断服务程序(例如由处理器110设计者在中断向量表的自订编号中挑选一个向量编号(如20H),并自行定义一中断向量#NE(NE为Non-support instruction Emulator的缩写)去经由作业系统120呼叫转换系统150。值得注意的是,中断服务程序呼叫转换系统150时必须将待执行指令132(或是待执行指令132的格式信息)当作参数传给转换系统150、或是将待执行指令132的储存地址(例如储存在私有寄存器340的寄存器地址、或是将待执行指令储存在转换系统150可访存的空间的储存地址)通知转换系统150。再者,调用转换系统150所使用的中断服务程序(亦即对应#UD中断服务程序或自行定义的中断服务程序#NE),可以是储存在微码唯读存储器450中的微码并由微码控制单元460调用(在一实施例中还可由微码控制单元460可用状态机与组合逻辑电路构筑)、或是通过储存在微码存储器450中的微码所指示的地址去调用。在一实施例中,通过中断请求转换系统150转换扩增指令的方式,可以经由系统呼叫(System call)来呼叫作业系统120执行转换系统150,例如把转换系统150作为一回调函数(callback function),待执行指令132(或格式信息)则被当成参数传给该回调函数,并于回调函数处理完待执行指令132的转换程序后将转换指令序列回传处理器110。此外,在一实施例中是通过内部中断(internal interrupt)或是陷阱(Trap)来调用转换系统150,例如处理器110设计者自行定义一中断向量#NE,并由此进入作业系统的核心(Kernel)去回调转换系统150,本领域技术人应知这部分的技术细节故不再赘述。在又一实施例中,重新排序缓存区440的每个指令条目(entry)还包含一模拟标识字段,用于保存微指令中的模拟标识EF。于是当待执行指令132是扩增指令导致指令解译器310中的微指令序列调用单元3404无法进行解译而产生一空指令时,此时的指令判断单元1402会判定待执行指令132是扩增指令所以设置模拟旗标EF,所以被设置的模拟旗标EF将跟随这个空指令被送往重命名单元162与重新排序缓存区440。是以,当重新排序缓冲区440的指令提交单元4402提交这条空指令时,会发现跟随这条空指令的模拟旗标EF被设置,所以将调用中断服务程序来呼叫转换系统150,以对待执行指令132(亦为扩增指令)进行转换。值得注意的是,如果空指令所伴随的模拟旗标EF并未被设置时,指令提交单元4402将通过中断向量#UD(Un-Defined)呼叫对应的中断服务程序,来处理这个指令解译错误的例外状况,此为已知的例外处理方式故不再赘述。
当转换指令序列从转换系统150传到处理器110时,可以通过跳跃(Jump)或呼叫(Call)来进行,由于转换指令序列是处理器110可正确执行的指令,因此需要清除私有寄存器340中的模拟旗标EF,例如让转换序列的第一个指令去清除模拟旗标EF、或是在转换指令序列的最后一条指令执行完毕后去清除模拟指标EF,表示目前待执行指令132的模拟操作已完成。因此,若后续又有待执行指令132是扩增指令时,将再重新设置模拟旗标EF并重新启动扩增指令对应的转换指令序列的调用操作。此外,如前所述,当处理器110接收到转换指令序列(由宏指令所组成),先对其解译成微指令序列后储存在转换缓存器280中并送往后续的管线级电路执行。再者,当待执行指令132所对应的转换指令序列已储存在转换缓存器280时,转换缓存器280将发送一清除(Clear)信号至私有寄存器340来清除储存其中的模拟旗标EF与或扩增指令,表示目前的转换指令序列已取得,不用再去呼叫转换系统150进行转换操作。
以下针对处理器110通过管脚(Pins)来接收转换指令序列的方式进行说明。在一实施例中,处理器110可以通过现有的数据传输管脚(Data pins)来接收转换指令序列。在另一实施例中,处理器110可特别设计至少一个特定管脚(PIN),使得经由转换系统150转换后的转换指令序列可直接通过处理器110的特定管脚PIN直接馈入处理器110中。在又一实施例中,当转换指令序列是由微指令组成时,可将其直接送入转换缓存器280储存,随后再送往管线级电路(例如执行器160中的重命名单元162…等)执行。在复一实施例中,当转换指令序列是由宏指令组成时,将馈入指令快取420中,随后再经由指令解码器310解译成微指令序列后储存在转换缓存器中且送往管线级电路执行。在一实施例中,特定管脚可以与其他指令通过共用输出/入管脚(common I/O pins)的方式构筑,并经由模拟旗标EF来决定所输入的信息是否为转换指令序列,本领域技术人员可依据实际应用决定实施方式,本发明对此不予限制。再又一实施例中,可设置一处理器110读取微指令型态转换指令序列的专用缓冲区,并通过对模型特别寄存器(Model Specific Register,MSR)进行读写的控制单元(例如用软件来构筑)来完成这项功能。举例来说,当要读取微指令型态的转换指令序列时,可以将模型特别寄存器的地址写入一第一寄存器(例如ECX)、以及将专用缓冲区的物理地址写入一第二寄存器(例如EDX:EAX),接着执行写模型特别寄存器指令(WRMSR)将专用缓冲区内的转换指令序列存储到上述模型特别寄存器中,最后处理器110执行读模型特别寄存器指令(RDMSR),以从上述模型特别寄存器中读取转换指令序列,并将读取到的转换指令序列存储到转换缓冲区280中。是以,在这个实施例中,可以不用新增管脚也可以直接传送微指令型态的转换指令序列给处理器110。此外,如果转换指令序列不只包含一条微指令,可以重复上述步骤以取得完整的微指令序列。
在一实施例中,可以将微码控制单元460可用状态机与组合逻辑电路来构筑以读取微码存储器450;在另一实施例中,可以将调用中断服务程序的操作独立架构为一个中断控制单元或模块(例如RISC/RISC-V架构下的中断控制单元),再又一实施例中,可通过储存在微码存储器450中的微码所指示的地址去调用,本领域技术人员可依据实际应用做选择,本发明对此不做限定。在复一实施例中,可以通过一中断预处理单元(例如将微码控制单元460架构为中断预处理单元、或是将RISC/RISC-V架构下的中断控制单元改为中断预处理单元),以在对应于待执行指令132(目前扩增指令)的空指令被提交时,去呼叫对应的中断服务程序以调用模拟模块122。此外,本发明实施例所提到对应于#UD的中断服务程序编号可视不同处理器架构而变,例如在X86处理器是06H,但在ARM处理器是0x4H;此外,每个处理器指令架构保留给处理器设计者的自行定义向量范围亦不同(例如X86处理器是在0x20H~0xFFH之后),处理器设计者可在选择指令集架构后,自行从中选择一者定义#NE中断并撰写中断服务程序,本发明对此不予限制。
图3B是本发明监测器第二种实施方式的方块图,图3B中具有与图3A相同编号的元件/模块其功能是相同的因此不再赘述。相较于图3A,图3B的监测器140B与指令解码器310被分开为不同的两个模块,并共同输入待执行指令132。因此,监测器140B也需包含指令解析单元3402来解析待执行指令132的格式,并把格式信息交由指令判断单元1402判断待执行指令132是否扩增指令。另一方面,指令解码器310仍包含指令解析单元3402与微指令序列调用单元3404,而微指令序列则依据微指令序列调用单元3404对待执行指令132的格式信息进行解码结果从微指令储存单元470调用所需的微指令序列。由于图3B把指令解码器310与监测器140B分开,因此在设计上可以用两个独立模块构筑于处理器110中,其中指令解码器310沿用已知的指令解码器(instruction decoder)架构即可,监测器140B则可以把指令解码器310中的指令解析单元3402复制一份过来,而指令判断单元1402仍是依据需要转换扩增指令进行设计与判断。在一实施例中,由于扩增指令是具备固定格式内容的已知公开信息,因此处理器110设计者可以在分析扩增指令的格式信息后,利用组合逻辑电路或其他类似的设计方式来构筑指令判断单元1402以进行扩增指令的判断。
图3C是本发明监测器第三种实施方式的方块图,图3C中具有与图3A/3B相同编号的元件/模块其功能是相同的因此不再赘述。相较于图3A,图3C的监测器140C亦与指令解码器310被分开为不同的两个模块,并共同输入待执行指令132。因此,监测器140C也要包含指令解析单元3402来解析待执行指令132的格式,并把格式信息交由指令判断单元1402判断待执行指令132是否扩增指令。但与图3B的监测器140B不同的是,指令判断单元1402会把模拟旗标EF的状态送往执行器160(例如重命名单元1602)与转换缓存器280,此外,执行指令132的格式信息也会被送往转换缓存器280以进行比对,并于比对成功时(也就是目前是扩增指令的待执行指令132所对应的转换指令序列储存在转换缓存器280时),在调用转换指令序列后发送清除(Clear)信号至私有寄存器340以清除模拟旗标EF与储存其中的执行指令132格式信息,来表示目前的转换指令序列已取得,不用再去呼叫转换系统150来进行待执行指令132的转换。应注意的是,由于图3C的指令解码器310与监测器140C也是两个分开的模块,因此在设计上也可以用两个独立模块构筑于处理器110中。
图4B是依照本发明处理器再一种实施方式的结构图,图4B中具有与图4A相同编号的元件/模块其功能是相同的因此不再赘述。相较于图4A,图4B的监测器140B在沿用图4A的监测器140的架构下,将模拟旗标EF与跟着微指令一起被送往重命名单元1602,因此重命名单元1602与微指令缓存区4404要多用一个位来表示这个模拟旗标EF(实际实施上可利用重命名单元1602一个保留位来表示这个模拟旗标EF,未必需要在硬件上做新增),所以指令提交单元4402在提交指令时就可以直接查询跟随指令的模拟旗标EF,不用再去私有寄存器340去进行查询。此外,转换缓存器280亦在模拟旗标EF被设置时,储存由微指令序列调用单元3404所送来的微指令(μop)序列,作为往后遇到相同扩增指令时的参考。是以,当待执行指令132所对应的转换指令序列已储存在转换缓存器280时,对应的转换指令序列被发送后亦发送一清除(Clear)信号至私有寄存器340来清除模拟旗标EF与格式信息(或待执行指令132),表示目前的转换指令序列已取得,不用再去呼叫转换系统150进行转换操作。此外,若待执行指令132对应的转换指令序列未储存在转换缓存器280时,则需要呼叫转换系统150进行待执行指令132的转换操作,并在转换指令序列从转换系统150传到处理器110时,通过跳跃(Jump)或呼叫(Call)来进行载入转换指令序列至处理器110的指令快取420,最后清除私有寄存器340中的模拟旗标EF与格式信息(或待执行指令132)并结束对待执行指令的转换流程。在一实施例中,如先前所述,处理器110可特别设计特定管脚或使用模型特别寄存器,使得经由转换系统150转换后的转换指令序列(由微指令所组成)可直接通过处理器110的特定管脚直接馈入处理器110中,随后再直接送入转换缓存器280储存后,最后送往管线级电路执行。
图4C是依照本发明处理器另一种实施方式的结构图,图4C中具有与图4A/4B相同编号的元件/模块其功能是相同的因此不再赘述。相较于图4A/4B,图4C的转换系统150所回传的转换指令序列是由处理器110可支持指令的微指令序列所组成,因此可直接馈入转换缓存器280,随后送往管线级电路执行,不用再经过指令解译的操作。监测器140C在沿用图4A的监测器140的架构下,将模拟旗标EF与跟着微指令序列一起被送往重命名单元1602,因此重命名单元1602与微指令缓存区4404要多用一个位来表示这个模拟旗标EF(实际实施上可利用重命名单元1602一个保留位来表示这个模拟旗标EF,未必需要在硬件上做新增),所以指令提交单元4402在提交指令时就可以直接查询跟随指令的模拟旗标EF,不用再去私有寄存器340去进行查询。此外,转换缓存器280亦在模拟旗标EF被设置时,储存由微指令序列调用单元3404所送来的微指令(μop)序列,作为往后遇到相同扩增指令时的参考。是以,当待执行指令132所对应的转换指令序列已储存在转换缓存器280时,对应的转换指令序列被发送后亦发送一清除(Clear)信号至私有寄存器340来清除模拟旗标EF与格式信息(或待执行指令132),表示目前的转换指令序列已取得,不用再去呼叫转换系统150进行转换操作。此外,若待执行指令132对应的转换指令序列未储存在转换缓存器280时,则需要呼叫转换系统150进行待执行指令132的转换操作,并在转换指令序列从转换系统150传到处理器110时,通过跳跃(Jump)或呼叫(Call)来进行载入转换指令序列至处理器110的指令快取420,随后清除私有寄存器340中的模拟旗标EF与格式信息(或待执行指令132)。
应注意的是,图4A/4B/4C的私有寄存器340也可以并入监测器140/140B/140C中;在另一实施一中,转换缓存器280亦可与私有寄存器340合并;在又一实施例中,转换缓存器280则可并入监测器140/140B/140C中,本发明对此不予限制。
图5是依照本发明实施例的转换方法的流程图。转换方法适用于前述实施例所述的电子装置100中的转换装置。请同时参照图1与图5,于步骤S502中,处理器110接收来自应用程序130一待执行指令132。于步骤S504,判断待执行指令132是否为可支持指令(例如原生指令)。若判断待执行指令132为可支持指令时(例如步骤S504的判断结果为“是”)则进入步骤S506,如图1中所示的执行器160执行该可支持指令并返回执行结果至应用程序130(如图1箭头173所示)。若判断待执行指令132为不可支持指令时(例如步骤S504的判断结果为“否”),则进入步骤S508以判断待执行指令132是否为扩增指令(亦即新指令集或扩充指令集中的指令)。若判断待执行指令132为扩增指令(例如步骤S508的判断结果为“是”)时则进入步骤S510,如图1中所示的监测器140设置模拟旗标EF为致能(例如:设置模拟旗标EF为“1”)。随后进入步骤S512,经由如图1中所示的转换系统150将所述待执行指令132(目前为扩增指令)转换为一个转换指令序列并回传至处理器110执行(如图1箭头175所示)后,并返回执行结果至应用程序130(如图1箭头173所示)。若在步骤S508判断待执行指令132不为扩增指令(例如为“否”),则进入步骤S514报告该待执行指令132为错误指令或执行异常,进而结束该待执行指令132的执行,如步骤S516所示。
图6是依照本发明另一实施例的转换方法的流程图。转换方法适用于前述实施例所述的电子装置200中的转换装置。请同时参照图2A与图6,于步骤S602中,处理器110接收来自应用程序130一待执行指令132。于步骤S604,判断待执行指令132是否为可支持指令(例如原生指令)。若判断待执行指令132为可支持指令时,则进入步骤S606,如图2A中所示的执行器160执行该可支持指令并返回执行结果至应用程序130(如图2A箭头173所示)。若判断待执行指令132为不可支持指令时,则进入步骤S608,继续判断待执行指令132是否为扩增指令(亦即新指令集或扩充指令集中的指令)。若判断待执行指令132不为扩增指令(如步骤S608的判断结果为“否”),则进入步骤S614报告该待执行指令132为错误指令或执行异常,进而结束该待执行指令132的执行。若在步骤S608判断待执行指令132为扩增指令则进入步骤S610,进一步判断如图2A中所示的转换缓存器280是否已缓存该扩增指令的转换指令序列。若在步骤S608判断转换缓存器280已缓存该扩增指令的转换指令序列(如判断为“是”),则进入步骤S612获取该扩增指令的转换指令序列以与目前待执行指令132的运算元信息结合并清除模拟旗标EF,将该转换指令序列送至处理器110管线级电路执行后再返回执行结果至应用程序130(如图2A箭头173所示)。若在步骤S610判断未缓存该扩增指令的转换指令序列(如判断为“否”)则进入步骤S618,经由如图2A中所示的转换系统150将所述扩增指令转换为所需的转换指令序列送至处理器110执行(如图2A箭头175所示)后并返回执行结果至应用程序130(如图2A箭头173所示),该转换指列序列亦被缓存转换缓存器280中。
综上所述,本发明实施例所述的转换装置以及转换方法利用监测器来判断应用程序中的待执行指令是否为处理器可支持指令或是扩增指令,且在此待执行指令判断为扩增指令时,利用本发明实施例设置的转换系统将此待执行指令转换为处理器可执行的转换指令序列,并将此转换指令序列提供给处理器运行。并且,本发明实施例还可通过转换缓存器将扩增指令对应的转换指令序列进行缓存,且在后续运行时发现相同的扩增指令时,将转换缓存器中对应的转换指令序列与待执行指令的运算元信息结合后提供给处理器运行,从而免去重复性地由转换系统进行转换的操作。因此,本发明实施例利用具备较旧版本的指令集的处理器,来对新指令集或扩充指令集中的扩增指令进行转换且运行其功能,从而延长电子设备的使用年限。
以上所述仅为本发明较佳实施例,然其并非用以限定本发明的范围,任何熟悉本项技术的人员,在不脱离本发明的精神和范围内,可在此基础上做进一步的改进和变化,因此本发明的保护范围当以本申请的权利要求书所界定的范围为准。
Claims (57)
1.一种指令转换装置,其特征在于,包括:
监测器,用以判断待执行指令是否为可支持指令或为扩增指令,
其中,若该待执行指令为该可支持指令时,经由处理器执行该待执行指令;以及
若该待执行指令为该扩增指令时,经由转换系统将该待执行指令转换为一个转换指令序列至该处理器执行。
2.如权利要求1所述的指令转换装置,其中该处理器包括:
执行器,耦接该监测器,
其中,在该待执行指令为可支持指令时,该执行器执行该待执行指令,
并且,在该待执行指令为扩增指令时,该执行器依据该转换系统转换的该扩增指令的至少一个转换指令序列来执行该待执行指令。
3.如权利要求1所述的指令转换装置,其中该处理器:
缓存该转换系统转换的该扩增指令的转换指令序列,
并且,若该待执行指令是该扩增指令、且已缓存该扩增指令的该转换指令序列时,依据缓存的该转换指令序列来执行该待执行指令。
4.如权利要求3所述的指令转换装置,其中:
若没有缓存该扩增指令的该转换指令序列时,该监测器传送该扩增指令经由该转换系统转换该扩增指令而获得该转换指令序列,缓存该转换指令序列,并由该处理器来执行该待执行指令。
5.如权利要求3所述的指令转换装置,其中在该处理器已缓存该扩增指令的该转换指令序列时,该处理器中的执行器直接执行该转换指令序列。
6.如权利要求4所述的指令转换装置,其中在该处理器没有缓存该扩增指令的该转换指令序列时,该处理器设置模拟旗标,且在该模拟旗标被致能的情况下经由该转换系统转换该扩增指令而获得该转换指令序列,缓存该转换指令序列至该处理器,并由该处理器执行该待执行指令。
7.如权利要求1所述的指令转换装置,其中该转换系统包括:
事件处理模块,
其中在该转换系统转换不可转换指令却发生异常或例外时,该事件处理模块产生例外结果,并将该例外结果通知应用程序。
8.如权利要求1所述的指令转换装置,其中该监测器依据前缀码、跳脱码以及操作码判断该待执行指令是否为该可支持指令或为该扩增指令。
9.如权利要求1所述的指令转换装置,其中该可支持指令以及该扩增指令为相同类型指令。
10.如权利要求9所述的指令转换装置,其中该可支持指令以及该扩增指令同为x86指令、ARM指令、MIPS指令、或RISC-V指令。
11.如权利要求1所述的指令转换装置,其中转换后的支持指令代码为微指令,该支持指令代码经转换后直接提供至该处理器执行而不经过指令解码器。
12.如权利要求1所述的指令转换装置,在该待执行指令为扩增指令时,该处理器产生空指令,并在提交该空指令后向该转换系统要求该扩增指令的支持指令代码。
13.如权利要求1所述的指令转换装置,其中该转换系统储存于基本输出输入系统中,并且在包含该处理器的系统开机时加载至作业系统中。
14.如权利要求1所述的指令转换装置,其中该扩增指令的该转换指令序列是由该转换系统通过该处理器的至少一个管脚直接馈入该处理器。
15.一种转换方法,其特征在于,包括:
判断待执行指令是否为可支持指令或为扩增指令;
若该待执行指令为该可支持指令时,经由处理器执行该待执行指令;以及
若该待执行指令为该扩增指令时,经由转换系统将该待执行指令转换为一个转换指令序列至该处理器执行。
16.如权利要求15所述的转换方法,其中该处理器包括:
执行器,耦接监测器,
其中,在该监测器判断该待执行指令为可支持指令时,该执行器执行该待执行指令,
并且,在该监测器判断该待执行指令为扩增指令时,该执行器依据该转换系统转换的该扩增指令的至少一个转换指令序列来执行该待执行指令。
17.如权利要求15所述的转换方法,还包括:
通过该处理器缓存该转换系统转换的该扩增指令的转换指令序列;
若该待执行指令是该扩增指令、且已缓存该扩增指令的该转换指令序列时,依据已缓存的该转换指令序列来执行该待执行指令。
18.如权利要求17所述的转换方法,还包括:
若没有缓存该扩增指令的该转换指令序列时,传送该扩增指令经由该转换系统转换该扩增指令而获得该转换指令序列,缓存该转换指令序列,并由该处理器来执行该待执行指令。
19.如权利要求16所述的转换方法,还包括:
在已缓存该扩增指令的该转换指令序列时,通过该处理器直接执行该转换指令序列。
20.如权利要求16所述的转换方法,还包括:
在没有缓存该扩增指令的该转换指令序列时,经由该转换系统转换该扩增指令而获得该转换指令序列,缓存该转换指令序列至该处理器,并由该处理器执行该待执行指令。
21.如权利要求16所述的转换方法,还包括:
在该转换系统转换不可转换指令却发生异常或例外时,经由事件处理模块产生例外结果,并将该例外结果通知应用程序。
22.如权利要求16所述的转换方法,判断该待执行指令是否为该可支持指令或为该扩增指令的步骤包括:
依据前缀码、跳脱码以及操作码判断该待执行指令是否为该可支持指令或为该扩增指令。
23.如权利要求16所述的转换方法,其中该可支持指令以及该扩增指令为相同类型指令。
24.如权利要求16所述的转换方法,其中转换后的该转换指令序列为二进制代码,该转换指令序列经转换后直接提供至该处理器执行而不经过指令解码器。
25.如权利要求16所述的转换方法,还包括:
在该待执行指令为扩增指令时,该处理器产生空指令,并在提交该空指令后向该转换系统要求该扩增指令的支持指令代码。
26.如权利要求16所述的转换方法,其中该转换系统储存于基本输出输入系统中,并且在包含该处理器的系统开机时加载至作业系统中。
27.如权利要求16所述的转换方法,其中该扩增指令的支持指令代码是由该转换系统通过该处理器的至少一个管脚直接馈入该处理器。
28.一种指令转换系统,其特征在于,包括:
处理器,接收来自应用程序的待执行指令,解码上述待执行指令并判断该指令为扩增指令后;
传递上述待执行指令信息至外部转换系统,经由该转换系统将该指令转换为一个转换指令序列至处理器执行。
29.如权利要求28所述的指令转换系统,其中,
上述处理器还包含监测器,用以判断上述待执行指令是否为扩增指令。
30.如权利要求29所述的指令转换系统,其中,
上述处理器还包含转换缓存器,用以缓存上述转换指令序列。
31.如权利要求30所述的指令转换系统,其中,若上述监测器判断上述待执行指令为扩增指令,判断上述转换缓存器是否已缓存该待执行指令的上述转换指令序列。
32.如权利要求31所述的指令转换系统,其中,若上述监测器判断上述待执行指令为扩增指令,且上述转换缓存器已缓存该待执行指令的转换指令序列,传递上述转换指令序列至处理器执行。
33.如权利要求31所述的指令转换系统,其中,若上述监测器判断上述待执行指令为扩增指令,且上述转换缓存器未缓存该待执行指令的转换指令序列,上述监测器设置转换旗标为致能。
34.如权利要求33所述的指令转换系统,其中,若上述监测器判断上述待执行指令为扩增指令,且上述转换缓存器未缓存该待执行指令的上述转换指令序列,上述监测器设置转换旗标为致能并传递上述待执行指令至处理器的重新排序缓存器。
35.如权利要求34所述的指令转换系统,其中,若上述监测器判断上述待执行指令为扩增指令,且上述转换缓存器未缓存该待执行指令的上述转换指令序列,上述监测器传递上述待执行指令至重新排序缓存器,上述重新排序缓存器通过中断请求来通知上述转换系统。
36.如权利要求35所述的指令转换系统,其中,若上述监测器判断上述待执行指令为扩增指令,且上述转换缓存器未缓存该待执行指令的上述转换指令序列,上述监测器设置转换旗标为致能并传递上述待执行指令至重新排序缓存器,上述重新排序缓存器通过中断请求来通知转换系统,上述转换系统该指令转换为一个转换指令序列至处理器执行。
37.一种指令转换方法,其特征在于,包括:
判断待执行指令是否为扩增指令,其中该扩增指令不属于目前处理器的可支持指令,但属于与该目前处理器所具备指令集的相同类型指令集的新指令集或扩充指令集;
若该待执行指令为该扩增指令时,传送该扩增指令的格式信息至转换系统,随后该转换系统传回一个转换指令序列至该处理器执行。
38.如权利要求37所述的指令转换方法,其中该格式信息包含该待执行指令的操作码、或该扩增指令的全部内容。
39.如权利要求37所述的指令转换方法,其中该可支持指令与该扩增指令同为x86指令集架构下的指令、同为ARM指令集架构下的指令、同为MIPS指令集架构下的指令、或同为RISC-V指令集架构下的指令。
40.如权利要求37所述的指令转换方法,其中该目前处理器执行该转换指令序列后再回传该待执行指令的执行结果。
41.如权利要求37所述的指令转换方法,其中该转换系统储存于基本输出输入系统、该目前处理器的驱动程序、或作业系统的核心中,并且在包含该目前处理器的系统开机时加载至该系统的内存中。
42.如权利要求37所述的指令转换方法,其中该转换系统于包含该目前处理器的作业系统下执行。
43.如权利要求42所述的指令转换方法,其中该目前处理器经由系统呼叫来呼叫该作业系统执行该转换系统。
44.如权利要求42所述的指令转换方法,其中该处理器通过内部中断或是陷阱以经由该作业系统执行该转换系统。
45.如权利要求37所述的指令转换方法,其中该转换指令序列由目前处理器的原生指令,依据该扩增指令的该格式信息事先编译而成。
46.如权利要求37所述的指令转换方法,其中该转换指令序列储存于基本输出输入系统、该目前处理器的驱动程序、或作业系统的核心中,并且在包含该目前处理器的系统开机时加载至该系统的内存中。
47.如权利要求37所述的指令转换方法,其中该处理器缓存该扩增指令的转换指令序列,并且在该扩增指令再次被送往该目前处理器执行时,该目前处理器依据缓存的该转换指令序列来执行该扩增指令。
48.一种可执行扩增指令的处理器,其特征在于,该扩增指令不属于目前处理器的可支持指令,但属于与该目前处理器所具备指令集的相同类型指令集的新指令集或扩充指令集,该处理器包括:
监测器,判断该处理器需执行的待执行指令是否为该扩增指令;
中断控制单元,用以当该对应于该扩增指令的空指令提交时,引发中断而去呼叫转换系统,其中该扩增指令的格式信息被传送至该转换系统,且该转换系统因应于该格式信息产生对应于该扩增指令的转换指令序列并送往该处理器;以及
执行器,执行对应于该扩增指令的该转换指令序列以回传对应于该待执行指令的执行结果。
49.如请求48所述的处理器,其中该格式信息包含该待执行指令的操作码、或该扩增指令的全部内容。
50.如权利要求48所述的处理器,其中该可支持指令与该扩增指令同为x86指令集架构下的指令、同为ARM指令集架构下的指令、同为MIPS指令集架构下的指令、或同为RISC-V指令集架构下的指令。
51.如权利要求48所述的处理器,其中该转换系统储存于基本输出输入系统、该处理器的驱动程序、或作业系统的核心中,并且在包含该处理器的系统开机时加载至该系统的内存中。
52.如权利要求48所述的处理器,其中该转换系统于包含该目前处理器的作业系统下执行。
53.如权利要求52所述的处理器,其中该处理器经由系统呼叫来呼叫该作业系统执行该转换系统。
54.如权利要求52所述的处理器,其中该处理器通过内部中断或是陷阱以经由该作业系统执行该转换系统。
55.如权利要求48所述的处理器,其中该转换指令序列由目前处理器的原生指令,依据该扩增指令的该格式信息事先编译而成。
56.如权利要求48所述的处理器,其中该转换指令序列储存于基本输出输入系统、该目前处理器的驱动程序、或作业系统的核心中,并且在包含该目前处理器的系统开机时加载至该系统的内存中。
57.如权利要求48所述的处理器,其中该处理器包含转换缓存器以缓存该扩增指令的转换指令序列,并且在该扩增指令再次被送往该目前处理器执行时,该目前处理器依据缓存的该转换指令序列来执行该扩增指令而非呼叫该转换系统。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011588885.3A CN114691199A (zh) | 2020-12-29 | 2020-12-29 | 指令转换装置及其转换方法和系统以及处理器 |
US17/471,170 US11816487B2 (en) | 2020-12-29 | 2021-09-10 | Method of converting extended instructions based on an emulation flag and retirement of corresponding microinstructions, device and system using the same |
US17/471,167 US11803381B2 (en) | 2020-12-29 | 2021-09-10 | Instruction simulation device and method thereof |
US18/465,189 US20240004658A1 (en) | 2020-12-29 | 2023-09-12 | Instruction simulation device and method thereof |
US18/474,207 US20240012649A1 (en) | 2020-12-29 | 2023-09-25 | Instruction conversion method, instruction conversion system, and processor |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011588885.3A CN114691199A (zh) | 2020-12-29 | 2020-12-29 | 指令转换装置及其转换方法和系统以及处理器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114691199A true CN114691199A (zh) | 2022-07-01 |
Family
ID=82131530
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011588885.3A Pending CN114691199A (zh) | 2020-12-29 | 2020-12-29 | 指令转换装置及其转换方法和系统以及处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114691199A (zh) |
-
2020
- 2020-12-29 CN CN202011588885.3A patent/CN114691199A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6934832B1 (en) | Exception mechanism for a computer | |
US7047394B1 (en) | Computer for execution of RISC and CISC instruction sets | |
US7941647B2 (en) | Computer for executing two instruction sets and adds a macroinstruction end marker for performing iterations after loop termination | |
US8788792B2 (en) | Apparatus for executing programs for a first computer architecture on a computer of a second architecture | |
US7124286B2 (en) | Establishing an operating mode in a processor | |
US5781750A (en) | Dual-instruction-set architecture CPU with hidden software emulation mode | |
US9146740B2 (en) | Branch prediction preloading | |
KR101793318B1 (ko) | 명령어 에뮬레이션 프로세서, 방법 및 시스템 | |
US5812823A (en) | Method and system for performing an emulation context save and restore that is transparent to the operating system | |
JP2008123545A (ja) | 複数の命令セットを用いるデータ処理 | |
US7089539B2 (en) | Program instruction interpretation | |
US11119778B2 (en) | Apparatus and method for controlling execution of instructions | |
EP0927929B1 (en) | Direct vectored legacy instruction set emulation | |
KR100864891B1 (ko) | 다중 명령 세트 시스템에서의 미처리된 연산 처리 | |
CN114691199A (zh) | 指令转换装置及其转换方法和系统以及处理器 | |
US11816487B2 (en) | Method of converting extended instructions based on an emulation flag and retirement of corresponding microinstructions, device and system using the same | |
CN114691200A (zh) | 指令模拟装置及其方法 | |
CN114691203A (zh) | 执行新增指令的方法及系统 | |
CN114691202A (zh) | 转换指令的方法及系统 | |
CN114691206A (zh) | 执行新增指令的方法及系统 | |
CN114691207A (zh) | 执行新增指令的方法及系统 | |
CN114691201A (zh) | 执行新增指令的方法及系统 | |
WO2014081606A1 (en) | Instruction code translator for dynamic translation system |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Applicant after: Shanghai Zhaoxin Semiconductor Co.,Ltd. Address before: Room 301, 2537 Jinke Road, Zhangjiang High Tech Park, Pudong New Area, Shanghai 201203 Applicant before: VIA ALLIANCE SEMICONDUCTOR Co.,Ltd. |