CN1332407A - 用以执行多重指令组的数据处理装置 - Google Patents

用以执行多重指令组的数据处理装置 Download PDF

Info

Publication number
CN1332407A
CN1332407A CN01101709.0A CN01101709A CN1332407A CN 1332407 A CN1332407 A CN 1332407A CN 01101709 A CN01101709 A CN 01101709A CN 1332407 A CN1332407 A CN 1332407A
Authority
CN
China
Prior art keywords
instruction
order
instruction group
carry out
group
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
Application number
CN01101709.0A
Other languages
English (en)
Inventor
高民晟
梁景哲
桂念慈
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Faraday Technology Corp
Original Assignee
Faraday Technology Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Faraday Technology Corp filed Critical Faraday Technology Corp
Publication of CN1332407A publication Critical patent/CN1332407A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种用以执行多重指令组的数据处理装置,包括一系统存储器,用以存储多个指令组的指令;一处理器核,用以执行这些指令组的主要指令;一程序计数寄存器,用以指示存储器中下一指令的地址;多个数据寄存器,用以存储指令的数据;一处理器状态寄存器,用以存储处理器的状态;一前置解码器,用以将非主要指令组翻译成为主要指令组;一快取存储器,用以存储主要指令;一解码器,用以将主要指令解码成控制处理器核的控制讯号;还包括一程序计数控制器和一总线。

Description

用以执行多重指令组的 数据处理装置
本发明是有关于一种数据处理装置(Data Processing Apparatus),特别是有关于一种用以执行多重指令组(Multiple Instruction Sets)的数据处理装置。
数据处理装置通常包括一处理器核,用以执行一预设指令组的程序指令。连同此处理器核外,还包括一系统存储器,以存储执行程序指令,以及一程序计数寄存器,用以指出在存储器中的下一指令的地址。然而,此一型式的装置仅允许执行一种类型的指令组。如能同时执行不只一个类型指令组的装置,则将会更具有弹性且功能更强大。
图1的框图示出了一传统执行两个指令组的数据处理装置的结构,其披露在名称为“Interoperability with multiple instruction sets”的美国第6,021,265号专利中。
如图1所示,在传统的数据处理装置中的一处理器核10包括一寄存器列(Register Bank)30、一布兹乘法器(Booth Multiplier)40、一位移器(Barrel Shifter)50、一32位运算逻辑单元(32-bit Arithmetic LogicUnit,ALU)60、以及一写入数据寄存器(Write Date Register)70。
此装置的其他的元件包括有一第一指令解码及逻辑控制器(Instruction Decoder & Controller)100,以及一第二指令解码及逻辑控制器110、一程序计数控制器(PC Controller)140、一程序计数器(Program Counter,PC)130、一多路复用器(Multiplexer)90、一数据读取寄存器120(Read-Data Register)、一指令流水线(InstructionPipeline)80、以及一存储系统20。
在此传统装置中,例如对于两个指令组,则需要分开的指令解码及逻辑控制方式。因此,第一指令解码及逻辑控制器100对第一指令组的程序指令进行解码,而第二指令解码及逻辑控制器110对第二指令组的程序指令进行解码。第一指令组的程序指令通常为32位,而第二指令组的程序指令通常为16位。如此,程序设计者可以使用具有较多功能的32位的指令组,或是使用16位的指令以在节省存储器大小之间做选择。
在其中必须包括一控制器,以便控制使用那一个指令解码器来进行现行程序指令的解码。这是藉由程序计数控制器140的设定,或是重新设定程序计数器130中的最大有效位(Most Significant Bit,MSB)或最小有效位(Least Significant Bit,LSB)来完成的。这样可控制多路复用器90以在第一及第二指令解码及逻辑控制器100及110做出选择。
在这种传统的装置中,指令组的类别是实时(Real time)决定的。也就是说,两个指令集可以混在一起,程序设计者可以在程序中任意决定要使用何种指令集,而不需要分别处理。然而,在硬件的设计上,传统装置却是需要两个解码器及逻辑控制器不停的解码与耗电。因此,这样的设计会造成处理器核10更多功率的消耗与需要更长的处理周期(Cycle)。这样将无法被目前追求的低功率与高震荡频率的趋势所接受。
另一个是设计成可以执行两个不同指令组的传统数据处理装置,其披露在名称为“Multiple instruetion set mapping”的美国第5,568,646号专利中。而其所披露的架构不需要控制器,以控制使用哪一个解码器对目前的程序指令作解码。也就是说,并不需要设定或是重新设定在程序计数器中的最大有效位(MSB)或是最小有效位(LSB)。
在一般的流水线式处理器(Pipeline processor)中,对于数据处理分为包括三个阶段,其一为取数阶段(Fetching Stage)、一为解码阶段(Decoding Stage)、另一为执行阶段(Executing stage)。在此专利中所披露的设计,系利用数据处理时的解码阶段。在一解码时钟脉冲中执行包括映射(Mapping)与产生控制信号(Decode)等两个步骤。不同的指令组指令系首先映射为一主要程序组指令,接着再根据此主要程序组指令解码产生控制讯号,以便控制处理器核执行此主要程序组指令。
然而,由于在解码阶段需要作映射的操作,将会大大的增加在解码阶段的周期时间(Cycle Time)。也就是,将很难进行高频率的设计。除此之外,其功率消耗也将会严重地增加。同样地,这种的硬件设计方式也将无法符合低功率和高频率趋势的需求。
因此,本发明提供一种用以处理多重指令组的数据处理装置,可以更符合低功率和高频率设计的目标。其包括一存储器,用以存储多个指令组的指令,一处理器核,用以执行这些指令组中的一主要指令组,一程序计数寄存器,用以指定存储器中所存储的下一指令的地址,多个数据寄存器,用以存储这些指令的数据,一处理器状态寄存器(PSR),用以存储处理器核的状态,其中该处理器状态寄存器包括一指令组选择标记(Instruction Set Selector,ISS),用以指示这些指令组中的现行指令组,一前置解码器(pre-decoder),用以将非主要指令翻译成为该主要指令,并将其输出,一快取存储器(Icache),用以存储该主要指令,一解码器(decoder),用以将主要指令予以解码,其中该处理核是用来执行由解码器解码的该主要指令,一程序计数器控制器,以调整程序计数寄存器使其符合长度不同于主要指令的指令,以及一总线,用来作为系统存储器与快取存储器之间的接口。
该处理器核执行来自于主要指令组A的指令,并将结果存储于数据寄存器R0~R14中,若其为一分支指令(Branch Instruction),则存入程序计数寄存器中。在执行完每一个指令之后,程序状态寄存器(PSR)会记录执行标记(Flags),指令组选择标记(ISS),执行模式(mode)等讯息。以维持最新的处理器状态。前置解码器依据指令组选择标记,将非主要指令组指令转换成主要指令。而后,快取存储器存储前置解码器的输出在数据存储器(Data Ram)并且将指令组选择标记存储在标签存储器(TagRam),而解码器则将快取存储器的指令组的指令解码成处理器核的控制讯号。在此一数据处理装置中,该处理器核仅处理主要指令组的指令。但是该处理器核可以利用预解码器及指令组选择标记,使其可以执行其他指令组的程序指令。
当指令组变换发生时,一个或多个指令会将分支地址(TargetAddress,TA)存入于数据寄存器的位31~1中,同时也将新的指令组选择标记(Instruction Select,IS)存入数据寄存器的位0中。接着,一特定的分支指令(Branch and Exchange,BX)会将寄存器的位31~1复写至程序计数器,程序计数器中位0则设定为0。同时,特定分支指令又将数据暂存中指令组选择标记(IS)复写至程序状态寄存器中的指令组选择标记(ISS)。在执行分支指令之后,程序计数器将定出新指令组的第一指令的地址,而指令组选择标记则指示一新的指令组模式。当程序计数器所定地址的新指令被输入该前置解码器时,新指令的预先解码方法则是由新的指令组选择标记的值所决定。如果该指令组选择标记指示一指令组B,则该预解码器将视该指令来自于指令组B,并利用前置解码器将此一输入指令转换成为指令组A的指令。然后,该前置解码器将输出该指令组A的指令至快取存储器。如果指令组选择标记指示一来自指令组A的指令,预解码器则会将其视之为来自于指令组A的输入指令,并将其传至快取存储器中。该快取存储器仅存储指令组A的指令。该解码器及该处理器核亦总是处理指令组A的指令。
为使本发明的上述和其他目的、特征、和优点能更明显易懂,下文特举较佳实施例,并结合附图作详细说明如下。
图1的框图示出了用以执行两个指令组的一传统数据处理装置的结构。
图2的框图示出了本发明的一较佳实施例用以处理多重指令组的一数据处理装置。
图3的流程图示出了本发明的较佳实施例执行指令的流程。
图4的流程图示出了本发明的较佳实施例指令转换的流程。
图5A和图5B示出了本发明的较佳实施例的快取存储器操作。
图6A示出了用以处理不同类别指令的传统架构。
图6B示出了根据本发明的较佳实施例的处理不同类别指令的架构。
图7A示出了已知的处理器针对混合指令时的处理方法。
图7B示出了根据本发明的较佳实施例的处理装置针对混合指令时的处理方法。
请参见图2,图2示出了依照本发明较佳实施例的一种用于执行多重指令组的数据处理装置,特别针对流水线式的处理器(Pipelineprocessor)。
本发明所提供的数据处理装置是用来处理执行多重指令组(Multiple Instruction Set)的。其包括一处理器核200、一存储器210、一程序计数器(Program Counter,PC)220、多个数据寄存器R0~R14、一处理器状态寄存器(Program Status Register,PSR)250、一快取存储器(Icache)280、至少一个前置解码器272、一解码器290、一程序计数控制器(PC Controller)225、以及一总线215。
存储器210是用来存储多重指令码(Multiple InstrtctionWord)(例如是A或B指令)或数据。程序计数寄存器(PC)220是用来定出存储于存储器210中,下一笔指令的地址。数据寄存器(R0~R14)230是用来存储指令的数据或结果。在数据寄存器230中的位中有两个部分。当一特定的分支指令(Branch Instruction)被执行时,一个或多个位将视为指令组选择位(Instruction Set Selection bits,下面称为IS)240,而其他的位则被视为目标地址(Target address,下面称为TA)245。指令组选择位IS将会存在处理器状态寄存器(Program Status Register,PSR),而目标地址TA将会存储在程序计数器(PC)220中。当转换指令组时,指令选择位(IS)为新指令组的标记,目标地址245为新指令组的开始地址。
处理器状态寄存器(PSR)250用以存储处理器核200的状态。此处理器状态寄存器250包括在指令组选择标记(Instruction Set Selector,下面称为ISS)260中的一或多个位,用以指出现行的指令组。为方便说明,在处理器状态寄存器(PSR)250中的指令组选择标记(ISS)260的一或多个位简称为PSR(ISS)。而PSR(ISS)可以依据数据寄存器R0~R14中的一个或多个IS位,由一特定的分支指令(Specified Branch Instruction)来设定。
前置解码器270包括一或多个次解码器(Sub-decoder)272,用以将一个或多个指令组翻译成一主要指令(Primary Instruction Word)。此主要指令系经过解码器290而由处理器核200所执行。在此实施例中,此处理器核200可简单地仅执行此主要指令即可。而本发明的数据处理装置,可藉由此前置解码器270执行许多不同类型的指令组。为简单地了解本发明的实施例,在下面皆以“A”为此主要指令,而其他的指令,则以指令“B”或“C”表示。其中,指令“B”或“C”系为此主要指令“A”的子组(Subset),而且由指令“B”可转换为指令“A”。而此次解码器272系由PSR(ISS)所控制,而前置解码器270的输出结果即为主要指令A。
快取存储器280用以存储主要指令。快取存储器中的标签存储器会存储线路(Memory Line)的标签位(tag bits)、合法位(Valid bit)和处理器状态寄存器中的指令组选择标记PSR(ISS)。快取存储器中的数据存储器则存储指令码(Instruction Word)。因为快取存储器只存储主要指令组A、所以在标签存储器中必需存储指令组选择标记(ISS)来分辨。以下将标签存储器中所存储的指令组选择标记简称为TAG(ISS)。而如果A指令的位宽度与其他指令不同,例如A指令位宽度为32位而B指令位宽度为16位,则快取存储器280的标签存储器520则需要在标签位(tag)中多加一个位、用以当TAG(ISS)指示为B指令组时、分辨在数据存储器中所存储的指令码是否为程序计数器所指示的指令。基本上,如果X不等于Y,则在快取存储器中的B指令的地址,将会不同于在存储器中的地址。例如,存储在存储器的B指令地址若是为(0,2,4,6)或(8,A,C,E)。当其存储在快取存储器中时,B指令的地址都将改变成(0,4,8,C)。所以在标签存储器中的标签位会多一个位来分辨其所存储的指令为(0,2,4,6)或者是(8,A,C,E)。
解码器290是用来对A指令解码。处理器核200则用来执行由解码器290所解码的A指令。程序计数控制器225对应于指令组选择标记PSR(ISS)260修正程序计数器的值(下面称为PC Value),以符合不同指令组的长度。总线215则为预解码器270以及存储器210的接口。
图3示出了本发明较佳实施例的指令执行流程图。在此例子中仅说明适用于处理器的两种类型的指令组。当然,本发明并不限于此。
在步骤320中,处理器核(Process Core)使用程序计数器的值(PCValue)从快取存储器中读取指令。多重指令存储于存储器中。例如,存储器同时存储A指令或B指令。其中,A指令的位为X,而B指令的位为Y。每一指令占据一个别的存储器地址。当处理器核执行指令时,程序计数器总是指向下一个指令的存储器地址。也就是说,在步骤320中,处理器核使用程序计数器以得到下一指令。
在接着的步骤330中,判断程序计数器所指示的下一指令是否为已存储于快取存储器中(hit),也就是图示所显示的“Icache Hit?”。而此判断步骤由三个条件所决定。第一个条件即在快取存储器中的合法位(Valid bit)是否为合法、此合法位代表在标签存储器中的标签位(tag)是否有效。第二条件即在快取存储器地址中的标签存储器的标签位(tagbits)是否等于在程序计数器内所存储的标签位(tag bits)。另外,第三个条件即为,在快取存储器地址中的TAG(ISS)是否等于在处理器状态寄存器中的PSR(ISS)。
若是以上三个条件都成立时,也就是Icache Hit,则代表所需要的指令已经存在快取存储器中的数据存储器中,且此存储的指令(CachedInstruction Word)类型与所需要的类型吻合。于是,紧接着步骤380,此快取存储器将会输出此指令码到解码器中,而解码器将会对此指令解码。
快取存储器的标签存储器的标签位(tag bits)为程序计数器中的m个位。而程序计数器内的N位可定址标签存储器输出标签位,而在程序计数器内的标签位(tag bits)可与在标签存储器输出的标签位作比较。若是程序计数器内的标签位(tag bits)等于在标签存储器输出的标签位,则代表所存储的指令的地址等于在程序计数器内的地址。为了判断标签位是否有效,上述的合法位将会在快取存储器开启时设定为无效(Invalid),而在指令暂存时设定为有效(Valid)。上述的TAG(ISS)代表所存取的指令的类别。而在指令暂存(Cached)时,将会存储整个线路(Memory Line)的指令类别,而此线路是针对流水线式线路而言,例如每个流水线的线路可同时传送四个指令。
而后在步骤390中,处理器核将执行指令并将结果存储在R0~R14中或程序计数器中。如果此指令是一分支指令(Branch Instruction),则需要改变程序计数器以控制执行的流程。
如果上述的三个条件并没有全部符合,也就是没有Icache Hit,也就是TAG(ISS)不等于PSR(ISS),或是指令并没有存在快取存储器中(Icache Miss)。当这样的情形发生时,如步骤340所示。此一总线将使用程序计数器的值以要求存储器,并等待存储器回覆所需要的线路,如步骤350所示。当指令由存储器回覆且输入前置解码器(Predecoder)中时,此前置解码器将会根据PSR(ISS)选择次解码器(Sub-decoder),并翻译(Iranslate)此输入的指令成为相关A指令,如步骤360所示。在步骤370中,前置解码器的输出将会存储于快取存储器中。而此快取存储器将会设定合法位、标签位、存储PSR(ISS)到TAG(ISS)中,并且存储前置解码器的输出到快取存储器中的数据存储器中。接着,指令将会如平常一般执行。
在执行过每一指令之后,处理器状态寄存器(Processor StatusRegister)将会更新以维持最新的标记、状态、模式以及ISS标记。而如步骤395中所述,程序计数器将会根据ISS值更新,以指出下一个指令的指令组。
参见图4,图4示出了本发明的一较佳实施例的指令组转换的步骤流程。
指令组的转换是由软件来控制,特别是由一特定的分支指令(Branchand Exchange Instruetion)来控制。当一个指令组转换发生时,在步骤400中,一个或多个指令将会将新指令组的分支地址(Target Address)写入寄存器R0~R14的目标地址(TA)区段中,并将新指令组的选择标记写入寄存器R0~R14的指令组选择位(IS)中。
在步骤410中,一特定的分支指令将寄存器R0~R14中的目标地址(TA)区段复写至程序计数器中,如下一步骤420所述。程序计数器中其他的位皆设定为0。同时,特定的分支指令将R0~R14中的IS部分复写至PSR的ISS区域。
在完成指定分支指令之后,程序计数器将新指令组中的第一指令予以定位,且PSR(ISS)将会指示出新的指令组模式。
在上述图3中的步骤330中,决定快取存储器是否命中(Hit),以及TAG(ISS)是否等于PSR(ISS),将会在下面的图5A与图5B中详细描述。请参照图5A与图5B,个图示出了快取存储器中的操作。在图5A中,示出了一般传统的快取存储器操作。其为没有结合PSR(ISS)作比较的例子。一地址信号510存储在程序计数器(PC)中,并且传到快取存储器520中。此地址信号510的m个位用以输入至标签存储器中并输出对应的标签位。而此地址信号510的N位用来与输出的标签位(tag bits)作比较(Comparison Operation)。而在标签存储器中的一合法位(Valid Bit),将表示所选择的输出的标签位有效或是无效。
图5B示出了本发明较佳实施例的快取存储器的操作方法,其中PSR(ISS)用来加入此比较操作(Comparison Operation)。一地址信号510存储在程序计数器中。地址信号中的m个位输入到标签存储器、而标签存储器则输出对应的标签位。在地址信号510中的N位,是与标签存储器所输出的标签位(tag bits)作比较。而在标签存储器中的一合法位(Valid Bit),将表示所输出的标签位有效或是无效。在此实施例中,PSR(ISS)将会用来判断是否与标签存储器中的TAG(ISS)相等。而PSR(ISS)即为前述的处理器状态寄存器(PSR)中的指令组选择标记(ISS)的一个或多个位。而TAG(ISS)则代表在标签存储器的ISS位。如果具有不同位数目的指令混在一起,例如,16位的指令与32位的指令混在一起,在地址信号510的另一额外的位可用来辨认指令的第一半或是第二半的部分。例如,如图5B所示,此演译方法系将原来使用N位是否等于指定的标签存储器的标签位,改变为在地址信号510上的N+1位是否等于在标签存储器的N+1个位。
如图2所示的具有一个或更多的次解码器272的前置解码器270用以将非主要指令转换(Translating)为主要指令,例如上述的A指令。为更详细描述,请参照图6A与图6B。图6A示出了已知的用以处理不同类别指令的传统架构。在每一个线路(Line)中有例如四个指令从总线(BusInterface Unit,BIU)610传来。藉由切换器(Switch)620选择,其中一个指令将会传送到快取存储器的数据存储器630中。为了执行指令,其中一个指令将会传送到解码器解码。而所传送的指令首先将会进行映射(Mapping),并接着进行解码(Decoding)。经过映射与解码,此指令将会传到处理器核(Processor Core)以便执行。在本发明的较佳实施例中,如图6B所示,经过切换器640的选择后,所选择的指令将同时传送到前置解码器650与切换器660。如果所选择的指令为B指令,由于其并非主要指令,因此前置解码器650将会转换(Translate)此B指令为一主要指令,例如A指令。此经过预先解码的指令将会传到切换器660。藉由从PSR所传来的ISS位,此指令将会接着传到快取存储器中的存储器670中。
根据图7A与图7B解释从总线中若是传来混合指令的线路,例如线路中同时存在A指令与B指令的情况。首先,请参照图7A,快取存储器将会以程序计数器的值为0要求总线BIU,而总线BIU将会对线路710回应包括四个“ABBA”指令格式的线路。而TAG(ISS)则将会一直记住首先遇到的指令的类别,而快取存储器的命中(Hit)也将会以TAG(ISS)为根据。例如,如此实施例所示,此TAG(ISS)系为指令A,因为在程序计数器的值为0的地址的指令为A指令。而在此快取存储器的数据存储器中填满了A指令类型。而此指令的顺序将会成为“AAAA”,如图所示。
经过了n个时钟脉冲后,总线BIU线路可能已经写入快取存储器,并且已经改变。中央微处理器将会开始执行程序计数器值PC=4的PSR(ISS)=B。但是在此阶段TAG(ISS)=A,其代表快取存储器将没有命中(Miss)。再一次,快取存储器将以PC=4要求总线BIU,而总线BIU也会再次回应“ABBA,四个指令格式的线路。接着,请参照图7B,PC=4的指令会经过前置解码器作转换,并存入到数据存储器中并输出至解码器。此时、TAG(ISS)=B,快取存储器的数据存储器系充满“B”,而其指令的顺序为“BBBB”。再经过n个时钟脉冲之后、中央微处理器开始执行PC=8的指令。此时、TAG(ISS)等于PSR(ISS)、代表快取存储器命中(Hit)、快取存储器即可输出指令至解码器。不管是指令类型的顺序为何,快取存储器将会判断正确的指令类别,并且转换至主要指令。在实际的操作中,这种在同一线路上混合不同指令类别的情形是相当少见的。
本发明的数据处理装置较传统的数据处理装置,具有多个优点。其中之一则是本发明的数据处理装置可以执行多重指令组的指令,其不限制于一个或两个指令组。如此,使得程序编译者在设计程序时具有极大的弹性。如果主要考虑效能,则可使用较强功能的指令、例如32位的指令。如果主要考虑存储器容量,则可以使用较省存储器的指令、例如16位的指令。
另一优点即为降低功率的消耗。在传统的装置中,所有的指令组都会具有分别指定的指令解码器与逻辑控制单元。这是非常昂贵且浪费功率的设计,因为多个指令解码器与逻辑控制单元需要不断地运作。然而,在本发明中,前置解码器仅需要在第一个指令取数时进行,而后便将转换后的结果存储在快取存储器中。一般而言、快取存储器命中机率为95%时,其代表在本发明中的前置解码器仅需要在100个指令取数中运作5次。此可大幅降低所消耗的功率。
另一个优点则是减少了解码阶段(Decode Stage)的周期时间(CycleTime)。在传统的装置中,不论是利用两个解码器或是利用映射(Mapping)来处理多重指令组、都会增加在解码阶段的周期时间。尤其是利用映射的方式、更会大大的增加解码阶段的周期时间。这些传统的装置,都会使得中央处理单元整体的周期时间增加。然而,在本发明中,无论多少个指令组,只使用一个指令解码器。该指令解码器仅对为主要指令组的指令型式进行解码、所以不会增加任何在解码阶段的周期时间。同时,在高频率的设计中,快取存储器一般是使用同步式存储器(SynchronousRam),所以前置解码器也不会增加在取数阶段(Fetch Stage)的周期时间。
本发明以较佳实施例披露如上,然其并非用以限定本发明,任何本领域的技术人员,在不脱离本发明的精神和范围内,可作各种的更动与润饰,因此本发明的保护范围以后附的权利要求范围界定。

Claims (8)

1.一种用以执行多重指令组的数据处理装置,包括:
一存储器,用以存储多个指令组的多个指令;
一处理器核,用以执行这些指令中的一主要指令;
一程序计数寄存器,用以定出存储于该存储器中,下一个指令的地址;
多个数据寄存器,用以存储这些指令的数据;
一处理器状态寄存器,用以存储该处理器核的一状态,其中该处理器核包括一指令组选择标记,以指示出这些指令组的现行指令;
一前置解码器,用以将至少一个这些指令组转换成该主要指令;
一快取存储器,用以存储该主要指令,其中该快取存储器包括一指令组选择标记,以指示出所存储指令线路的指令类别;
一解码器,用以将该主要指令予以解码,其中该处理器核是用来执行用该解码器解码的主要指令;
一程序计数控制器,对应该指令组选择标记,以修正一程序计数器值,以调整与该主要指令不同指令的长度;以及一总线,作为该快取存储器及系统存储器之间的接口。
2.如权利要求1所述的用以执行多重指令组的数据处理装置,每一个数据寄存器具有两个位部分,其中至少一个位被视为一指令组选择位,以及另一位被视为一目标地址。
3.如权利要求2所述的用以执行多重指令组的数据处理装置,该目标地址为该指令组的一起始地址。
4.如权利要求2所述的用以执行多重指令组的数据处理装置,其中依据在这些数据寄存器中的指令选择位,该指令组选择被设定为一特定的分支指令。
5.如权利要求1所述的用以执行多重指令组的数据处理装置,其中该前置解码器包括至少一个次解码器,以将至少一个指令组翻译成该主要指令。
6.如权利要求1所述的用以执行多重指令组的数据处理装置,其中该快取存储器增加一个指令组选择位,以指出所存储指令的指令类别。
7.如权利要求1所述的用以执行多重指令组的数据处理装置,其中该指令选择器包括至少一位。
8.如权利要求1所述的用以执行多重指令组的数据处理装置,其中该指令组选择标记可以依据一个或多个数据寄存器的指令组位,而被一特定分支指令设定。
CN01101709.0A 2000-07-05 2001-01-21 用以执行多重指令组的数据处理装置 Pending CN1332407A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US21580000P 2000-07-05 2000-07-05
US60/215,800 2000-07-05

Publications (1)

Publication Number Publication Date
CN1332407A true CN1332407A (zh) 2002-01-23

Family

ID=22804445

Family Applications (1)

Application Number Title Priority Date Filing Date
CN01101709.0A Pending CN1332407A (zh) 2000-07-05 2001-01-21 用以执行多重指令组的数据处理装置

Country Status (2)

Country Link
US (1) US20020004897A1 (zh)
CN (1) CN1332407A (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1293462C (zh) * 2003-07-23 2007-01-03 凌阳科技股份有限公司 一种执行不同长度指令集的处理器及方法
US7194601B2 (en) 2003-04-03 2007-03-20 Via-Cyrix, Inc Low-power decode circuitry and method for a processor having multiple decoders
CN100382300C (zh) * 2005-05-11 2008-04-16 智元科技股份有限公司 可修改脚位功能的集成电路元件
CN102543169A (zh) * 2003-09-09 2012-07-04 硅存储技术公司 统一的多级单元存储器
CN110663225A (zh) * 2017-05-24 2020-01-07 Wago管理有限责任公司 数据总线用户设备的初始化

Families Citing this family (64)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7493470B1 (en) 2001-12-07 2009-02-17 Arc International, Plc Processor apparatus and methods optimized for control applications
US7278137B1 (en) 2001-12-26 2007-10-02 Arc International Methods and apparatus for compiling instructions for a data processor
US20070005942A1 (en) * 2002-01-14 2007-01-04 Gil Vinitzky Converting a processor into a compatible virtual multithreaded processor (VMP)
CN1625731A (zh) * 2002-01-31 2005-06-08 Arc国际公司 具有多种长度指令集体系结构的可配置数据处理器
WO2004049152A1 (en) * 2002-11-26 2004-06-10 Mplicity Ltd. A processor capable of multi-threaded execution of a plurality of instruction-sets
US6952754B2 (en) * 2003-01-03 2005-10-04 Intel Corporation Predecode apparatus, systems, and methods
GB2402764B (en) * 2003-06-13 2006-02-22 Advanced Risc Mach Ltd Instruction encoding within a data processing apparatus having multiple instruction sets
US7229597B2 (en) 2003-08-05 2007-06-12 Basfd Catalysts Llc Catalyzed SCR filter and emission treatment system
US7707389B2 (en) * 2003-10-31 2010-04-27 Mips Technologies, Inc. Multi-ISA instruction fetch unit for a processor, and applications thereof
TWI366234B (en) * 2004-06-30 2012-06-11 Intel Corp Method, apparatus and system to control temperature of a wafer edge or wafer edge support during heating, and machine-readable medium having data therein
US7769983B2 (en) * 2005-05-18 2010-08-03 Qualcomm Incorporated Caching instructions for a multiple-state processor
US8081474B1 (en) 2007-12-18 2011-12-20 Google Inc. Embossed heat spreader
US20080126690A1 (en) * 2006-02-09 2008-05-29 Rajan Suresh N Memory module with memory stack
US10013371B2 (en) 2005-06-24 2018-07-03 Google Llc Configurable memory circuit system and method
US8359187B2 (en) * 2005-06-24 2013-01-22 Google Inc. Simulating a different number of memory circuit devices
US20080028136A1 (en) * 2006-07-31 2008-01-31 Schakel Keith R Method and apparatus for refresh management of memory modules
US9171585B2 (en) 2005-06-24 2015-10-27 Google Inc. Configurable memory circuit system and method
US20080082763A1 (en) 2006-10-02 2008-04-03 Metaram, Inc. Apparatus and method for power management of memory circuits by a system or component thereof
US7386656B2 (en) 2006-07-31 2008-06-10 Metaram, Inc. Interface circuit system and method for performing power management operations in conjunction with only a portion of a memory circuit
US9507739B2 (en) 2005-06-24 2016-11-29 Google Inc. Configurable memory circuit system and method
US8244971B2 (en) 2006-07-31 2012-08-14 Google Inc. Memory circuit system and method
US8090897B2 (en) * 2006-07-31 2012-01-03 Google Inc. System and method for simulating an aspect of a memory circuit
US8397013B1 (en) 2006-10-05 2013-03-12 Google Inc. Hybrid memory module
US9542352B2 (en) * 2006-02-09 2017-01-10 Google Inc. System and method for reducing command scheduling constraints of memory circuits
US8438328B2 (en) 2008-02-21 2013-05-07 Google Inc. Emulation of abstracted DIMMs using abstracted DRAMs
US8796830B1 (en) 2006-09-01 2014-08-05 Google Inc. Stackable low-profile lead frame package
US8055833B2 (en) 2006-10-05 2011-11-08 Google Inc. System and method for increasing capacity, performance, and flexibility of flash storage
US8386722B1 (en) 2008-06-23 2013-02-26 Google Inc. Stacked DIMM memory interface
KR101318116B1 (ko) * 2005-06-24 2013-11-14 구글 인코포레이티드 집적 메모리 코어 및 메모리 인터페이스 회로
US8130560B1 (en) 2006-11-13 2012-03-06 Google Inc. Multi-rank partial width memory modules
US8041881B2 (en) * 2006-07-31 2011-10-18 Google Inc. Memory device with emulated characteristics
US8111566B1 (en) 2007-11-16 2012-02-07 Google, Inc. Optimal channel design for memory devices for providing a high-speed memory interface
US7609567B2 (en) 2005-06-24 2009-10-27 Metaram, Inc. System and method for simulating an aspect of a memory circuit
US8060774B2 (en) 2005-06-24 2011-11-15 Google Inc. Memory systems and memory modules
US8335894B1 (en) 2008-07-25 2012-12-18 Google Inc. Configurable memory system with interface circuit
US8327104B2 (en) 2006-07-31 2012-12-04 Google Inc. Adjusting the timing of signals associated with a memory system
US8089795B2 (en) 2006-02-09 2012-01-03 Google Inc. Memory module with memory stack and interface with enhanced capabilities
US8077535B2 (en) 2006-07-31 2011-12-13 Google Inc. Memory refresh apparatus and method
US7958335B2 (en) * 2005-08-05 2011-06-07 Arm Limited Multiple instruction set decoding
JP5242397B2 (ja) 2005-09-02 2013-07-24 メタラム インコーポレイテッド Dramをスタックする方法及び装置
US9632929B2 (en) 2006-02-09 2017-04-25 Google Inc. Translating an address associated with a command communicated between a system and memory circuits
US7724589B2 (en) * 2006-07-31 2010-05-25 Google Inc. System and method for delaying a signal communicated from a system to at least one of a plurality of memory circuits
US20080028137A1 (en) * 2006-07-31 2008-01-31 Schakel Keith R Method and Apparatus For Refresh Management of Memory Modules
US20080025136A1 (en) * 2006-07-31 2008-01-31 Metaram, Inc. System and method for storing at least a portion of information received in association with a first operation for use in performing a second operation
US7500210B2 (en) * 2006-11-15 2009-03-03 Mplicity Ltd. Chip area optimization for multithreaded designs
US8719807B2 (en) * 2006-12-28 2014-05-06 Intel Corporation Handling precompiled binaries in a hardware accelerated software transactional memory system
US7711927B2 (en) * 2007-03-14 2010-05-04 Qualcomm Incorporated System, method and software to preload instructions from an instruction set other than one currently executing
US8209479B2 (en) * 2007-07-18 2012-06-26 Google Inc. Memory circuit system and method
US20090044159A1 (en) * 2007-08-08 2009-02-12 Mplicity Ltd. False path handling
US8080874B1 (en) 2007-09-14 2011-12-20 Google Inc. Providing additional space between an integrated circuit and a circuit board for positioning a component therebetween
US9075622B2 (en) * 2008-01-23 2015-07-07 Arm Limited Reducing errors in pre-decode caches
US7925866B2 (en) * 2008-01-23 2011-04-12 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
US7925867B2 (en) * 2008-01-23 2011-04-12 Arm Limited Pre-decode checking for pre-decoded instructions that cross cache line boundaries
US8347067B2 (en) * 2008-01-23 2013-01-01 Arm Limited Instruction pre-decoding of multiple instruction sets
US7917735B2 (en) * 2008-01-23 2011-03-29 Arm Limited Data processing apparatus and method for pre-decoding instructions
US8037286B2 (en) * 2008-01-23 2011-10-11 Arm Limited Data processing apparatus and method for instruction pre-decoding
US7747839B2 (en) * 2008-01-23 2010-06-29 Arm Limited Data processing apparatus and method for handling instructions to be executed by processing circuitry
GB2460280A (en) * 2008-05-23 2009-11-25 Advanced Risc Mach Ltd Using a memory-abort register in the emulation of memory access operations
CN101776877A (zh) * 2009-01-12 2010-07-14 鸿富锦精密工业(深圳)有限公司 可编程逻辑控制器程序编辑系统及方法
EP2441007A1 (en) * 2009-06-09 2012-04-18 Google, Inc. Programming of dimm termination resistance values
GB2484489A (en) * 2010-10-12 2012-04-18 Advanced Risc Mach Ltd Instruction decoder using an instruction set identifier to determine the decode rules to use.
KR102180972B1 (ko) * 2014-04-23 2020-11-20 에스케이하이닉스 주식회사 메모리 컨트롤 유닛 및 그것을 포함하는 데이터 저장 장치
US10885985B2 (en) * 2016-12-30 2021-01-05 Western Digital Technologies, Inc. Processor in non-volatile storage memory
US10114795B2 (en) * 2016-12-30 2018-10-30 Western Digital Technologies, Inc. Processor in non-volatile storage memory

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5115500A (en) * 1988-01-11 1992-05-19 International Business Machines Corporation Plural incompatible instruction format decode method and apparatus
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
GB2289354B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Multiple instruction set mapping
GB2289353B (en) * 1994-05-03 1997-08-27 Advanced Risc Mach Ltd Data processing with multiple instruction sets
GB2307072B (en) * 1994-06-10 1998-05-13 Advanced Risc Mach Ltd Interoperability with multiple instruction sets
US5598546A (en) * 1994-08-31 1997-01-28 Exponential Technology, Inc. Dual-architecture super-scalar pipeline
US5638525A (en) * 1995-02-10 1997-06-10 Intel Corporation Processor capable of executing programs that contain RISC and CISC instructions
JP3790607B2 (ja) * 1997-06-16 2006-06-28 松下電器産業株式会社 Vliwプロセッサ
US6021484A (en) * 1997-11-14 2000-02-01 Samsung Electronics Co., Ltd. Dual instruction set architecture
US6101592A (en) * 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7194601B2 (en) 2003-04-03 2007-03-20 Via-Cyrix, Inc Low-power decode circuitry and method for a processor having multiple decoders
CN1293462C (zh) * 2003-07-23 2007-01-03 凌阳科技股份有限公司 一种执行不同长度指令集的处理器及方法
CN102543169A (zh) * 2003-09-09 2012-07-04 硅存储技术公司 统一的多级单元存储器
CN102543169B (zh) * 2003-09-09 2016-03-30 硅存储技术公司 统一的多级单元存储器
CN100382300C (zh) * 2005-05-11 2008-04-16 智元科技股份有限公司 可修改脚位功能的集成电路元件
CN110663225A (zh) * 2017-05-24 2020-01-07 Wago管理有限责任公司 数据总线用户设备的初始化
CN110663225B (zh) * 2017-05-24 2022-02-18 Wago管理有限责任公司 数据总线用户设备的初始化

Also Published As

Publication number Publication date
US20020004897A1 (en) 2002-01-10

Similar Documents

Publication Publication Date Title
CN1332407A (zh) 用以执行多重指令组的数据处理装置
US6081884A (en) Embedding two different instruction sets within a single long instruction word using predecode bits
KR101503554B1 (ko) 에일리어스 어드레싱을 이용한 가변 길이 인스트럭션 인코딩의 구현
US5142635A (en) Method and circuitry for performing multiple stack operations in succession in a pipelined digital computer
JP3798404B2 (ja) 2レベルの分岐予測キャッシュによる分岐予測
US4293907A (en) Data processing apparatus having op-code extension register
US6275927B2 (en) Compressing variable-length instruction prefix bytes
US5630082A (en) Apparatus and method for instruction queue scanning
EP0405489A2 (en) Resource conflict detection method and apparatus included in a pipelined processing unit
JP2001521241A (ja) 分岐予測を迅速に特定するための命令キャッシュ内のバイト範囲に関連する分岐セレクタ
WO1997025669A1 (en) Method and apparatus to translate a first instruction set to a second instruction set
JP3803723B2 (ja) 分岐予測を選択する分岐セレクタを採用する分岐予測機構
US6260134B1 (en) Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
CN1708745A (zh) 减少多线程处理器中寄存器文件端口的方法和装置
US5832258A (en) Digital signal processor and associated method for conditional data operation with no condition code update
US5968163A (en) Microcode scan unit for scanning microcode instructions using predecode data
US6460132B1 (en) Massively parallel instruction predecoding
US6212621B1 (en) Method and system using tagged instructions to allow out-of-program-order instruction decoding
Xie et al. A code decompression architecture for VLIW processors
US6460116B1 (en) Using separate caches for variable and generated fixed-length instructions
KR100603067B1 (ko) 분기 예측의 타입을 분류하기 위해 복귀 선택 비트들을 이용하는 분기 예측
JP2738365B2 (ja) マイクロコンピュータ用プログラム変換方法及びそのプログラムを用いたマイクロコンピュータ
JP2001005675A (ja) プログラム変換装置及びプロセッサ
EP1861765B1 (en) Power saving methods and apparatus to selectively enable comparators in a cam renaming register file based on known processor state
US6289428B1 (en) Superscaler processor and method for efficiently recovering from misaligned data addresses

Legal Events

Date Code Title Description
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C06 Publication
PB01 Publication
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication