CN1332407A - 用以执行多重指令组的数据处理装置 - Google Patents
用以执行多重指令组的数据处理装置 Download PDFInfo
- 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
Links
- 238000012545 processing Methods 0.000 claims description 31
- 238000000034 method Methods 0.000 description 10
- 238000013461 design Methods 0.000 description 8
- 238000013507 mapping Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 229910052799 carbon Inorganic materials 0.000 description 4
- 230000009466 transformation Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 239000003550 marker Substances 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 240000001439 Opuntia Species 0.000 description 1
- 230000009514 concussion Effects 0.000 description 1
- 239000004744 fabric Substances 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000005039 memory span Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000008672 reprogramming Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/30145—Instruction analysis, e.g. decoding, instruction word fields
- G06F9/30149—Instruction analysis, e.g. decoding, instruction word fields of variable length 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/3017—Runtime instruction translation, e.g. macros
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3818—Decoding for concurrent execution
- G06F9/382—Pipelined 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所述的用以执行多重指令组的数据处理装置,其中该指令组选择标记可以依据一个或多个数据寄存器的指令组位,而被一特定分支指令设定。
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)
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)
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)
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 |
-
2000
- 2000-12-27 US US09/749,674 patent/US20020004897A1/en not_active Abandoned
-
2001
- 2001-01-21 CN CN01101709.0A patent/CN1332407A/zh active Pending
Cited By (7)
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 |