CN101849222A - 使用别名寻址的可变长度指令编码的实现 - Google Patents
使用别名寻址的可变长度指令编码的实现 Download PDFInfo
- Publication number
- CN101849222A CN101849222A CN200880110576A CN200880110576A CN101849222A CN 101849222 A CN101849222 A CN 101849222A CN 200880110576 A CN200880110576 A CN 200880110576A CN 200880110576 A CN200880110576 A CN 200880110576A CN 101849222 A CN101849222 A CN 101849222A
- Authority
- CN
- China
- Prior art keywords
- instruction
- address space
- address
- length
- visit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 claims abstract description 29
- 230000015654 memory Effects 0.000 claims abstract description 20
- 230000004044 response Effects 0.000 claims abstract description 15
- 238000012545 processing Methods 0.000 claims description 20
- 230000009466 transformation Effects 0.000 claims description 17
- 238000012546 transfer Methods 0.000 claims description 2
- 230000007704 transition Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 14
- 230000008859 change Effects 0.000 description 4
- 230000008569 process Effects 0.000 description 4
- 238000013519 translation Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000033228 biological regulation Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000005764 inhibitory process Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000013507 mapping Methods 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/30181—Instruction operation extension or modification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/04—Addressing variable-length words or parts of words
-
- 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/30181—Instruction operation extension or modification
- G06F9/30189—Instruction operation extension or modification according to execution mode, e.g. mode flag
-
- 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/30181—Instruction operation extension or modification
- G06F9/30196—Instruction operation extension or modification using decoder, e.g. decoder per instruction set, adaptable or programmable decoders
-
- 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/3802—Instruction prefetching
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
- Advance Control (AREA)
Abstract
一种操作使用别名地址空间来实施在传统处理器上的可变长度指令编码的数字处理器和方法。该方法包括在所述存储器中保存代码序列的指令;产生代码序列的指令地址;响应于在第一地址空间和第二地址空间之间的指令地址的转变,自动地在第一操作模式和第二操作模式之间切换,其中第一和第二地址空间中的地址访问公共存储空间;在第一操作模式中,访问第一地址空间中的指令;在第二操作模式中,访问第二地址空间中的指令;执行所述代码序列中被访问的指令。在第一和第二操作模式中可以使用不同指令长度的指令。
Description
技术领域
本发明涉及在传统的处理器上的可变长度指令编码,更具体的,涉及使用使用别名地址空间的可变长度指令编码以实施自动的模式切换。
背景技术
大多数现代的嵌入式处理器使用它们的指令集的可变长度指令编码来获得紧凑的代码大小。根据现有的传统处理器,已经研发了两种方法。
对于新设计的指令集,其中代码大小是一项重要的设计标准,可以使用混合尺寸编码。在这种情况中,短和长的指令共享相同的编码空间。结果,对于解码和执行不同大小的指令不需要模式切换。
对于在进行代码尺寸减小之前使用的指令集,编码空间可能已经太拥挤以致不能允许新的操作代码。通常创建新的操作模式,其中处理器解码和执行新引入的指令,而不是从头开始重新设计指令集。
对于第二种情况,在处理器解码和执行新指令类型之前,该处理器需要被置于新模式。通常从传统模式到新模式的这种模式改变是通过设置或重设在指定配置寄存器中的模式位而获得。该方法具有缺点。模式位必须在处理器开始解码和执行新指令之前被置位。传统模式中的指令必须设置该位以切换到新模式,反之亦然。这暗示了如果传统代码模块中的任一个被重新使用,那么它们必须被修改以执行这种模式改变。例如,当使用预编译的库模块时,这具有实际的局限性。该模式位还暗示了在代码尺寸和用于执行添加的模式改变指令所需的周期方面的一定开销。另外,每次改变模式时,流水线处理器必须让流水线在其开始解码来自不同模式的指令之前排空。如果模式切换频繁的话,这可能影响性能。
相应的,需要一种用于传统处理器中的可变长度指令编码的改进方法和装置。
发明内容
根据本发明的第一方面,提供用于操作数字处理器的方法,该处理器包括存储器、程序定序器和执行单元。该方法包括在存储器中保存代码序列的指令;产生该代码序列的指令地址,响应于在第一地址空间和第二地址空间之间的指令地址的转变,在第一操作模式和第二操作模式之间自动切换,其中第一和第二地址空间中的地址访问公共存储空间;在第一操作模式中,访问在第一地址空间中的指令;在第二操作模式中,访问在第二地址空间中的指令;和执行代码序列中被访问的指令。
第一和第二操作模式可以使用相同和不同指令长度的指令。特别是,第一操作模式可以使用一个或多个指令长度并且第二操作模式可以使用一个或多个指令长度。在第一和第二模式中的指令长度在任意组合中可以是相同或不同。在一些实施例中,第一模式被配置用于执行第一指令长度的指令,第二模式被配置用于执行第一指令长度、第二指令长度和第三指令长度的指令。
根据本发明的第二方面,数字处理器装置包括被配置成保存代码序列的指令的存储器,被配置成产生代码序列的指令地址并响应于在第一地址空间和第二地址空间之间的指令地址的转变在第一操作模式和第二操作模式之间自动切换的程序定序器,其中第一和第二地址空间中的地址访问公共存储空间;其中,在第一操作模式中,访问在第一地址空间中的指令;在第二操作模式中,访问在第二地址空间中的指令;和配置用于执行代码序列中被访问的指令的执行单元。
附图说明
为了更好地理解本发明,参考附图,其通过引用被合并到这里,其中:
图1是根据本发明的实施例的数字处理器装置的示意性框图;
图2是说明访问公共物理存储空间的第一地址空间和第二地址空间的示意图;
图3是说明根据本发明的实施例的指令寻址的示意图;
图4是说明虚拟存储器的示意图;
图5是说明根据本发明实施例的处理器操作的方法的流程图;
图6是说明根据本发明实施例的指令对齐缓冲器的示意性框图;
图7是说明根据本发明实施例的传统模式和签证模式(visa mode)中存储器存取的示意图;
图8是说明根据本发明实施例的指令对齐的示意图。
具体实施方式
本发明不限于在下面的描述中阐述的或在附图中图示说明的元件的结构和排布的细节上的应用。本发明可以具有其它实施例且能够以多种方式来实现或实施。而且,这里使用的措词和术语是说明性的目的,不应该被认为是限制性的。“包括”、“包含”、或“具有”、“含有”、“涉及”、及其变化词在这里的使用意味着包含在下文中列出的项目及其等效物以及附加项目。
在图1中示出根据本发明的实施例的数字处理器10的示意性框图。数字处理器装置10包括核处理器11和存储器14。程序定序器12产生用于执行应用程序的指令地址序列。程序流可以访问顺序的地址,但是典型地包括一个或多个程序结构,例如环、子程序、跳转和/或中断,这产生非顺序式程序流。由程序定序器12提供指令地址给地址翻译单元16,其将逻辑指令地址转换成用于访问物理存储器的物理地址。如下面讨论的,可以使用别名地址空间来实施自动的模式切换。在一些实施例中,使用标准字地址空间和短字地址空间以便在模式之间区分。在另一个实施例中,使用虚拟地址空间的不同虚拟页来在模式之间区分。
物理地址被提供给存储器14,其将指令返回到指令对齐缓冲器20。如下面讨论的,存储器14可以每时钟周期返回多于一个的指令,并且指令对齐缓冲器20选择正确的指令执行。IAB控制器22按照如下所述控制指令对齐缓冲器20。解码器30解码指令并提供控制信号给用于执行当前指令的执行单元32。在图1的实施例中,核处理器11包括程序定序器12、地址翻译单元16、指令对齐缓冲器20、IAB控制器22、解码器30和执行单元32。指令所需要的操作数被单独访问。
如图1所示,程序定序器12提供模式信号给IAB控制器22和解码器30。第一操作模式和第二操作模式对应于可以由数字处理器装置10执行的不同指令集。第一和第二操作模式可以使用相同或不同指令长度的指令。特别的,第一操作模式可以使用一个或多个指令长度和第二操作模式可以使用一个或多个指令长度。在第一和第二模式中的指令长度在任意组合中可以是相同或不同。在一些实施例中,第一模式被配置用于执行第一指令长度的指令,第二模式被配置用于执行第一指令长度、第二指令长度和第三指令长度的指令。在这些实施例中,第二和第三指令长度短于第一指令长度。
在一些实施例中,第一模式,也被称为“传统”模式,对应于现有的指令集,第二模式,也被称为“签证”模式,对应于新的指令集。新指令集可以包括现有的指令集的指令和新指令。例如,新指令的至少一部分可以具有比现有的指令更短的指令长度以减小代码大小。
解码器30被配置用于确定每一个指令的长度和提供指令长度信号给IAB控制器22和程序定序器12。执行单元32被配置用于提供转移地址(branch address)给程序定序器12。如下面讨论的,所采用的分支可以触发模式切换。
在图1的实施例中,第一模式使用48位的固定指令长度。第二模式使用可变长度指令,包括48位指令、32位指令和16位指令。程序定序器12根据正在执行的当前指令的地址自动切换至第一模式和第二模式并且在第一模式和第二模式之间自动切换。根据本发明的实施例,使用别名地址以在第一模式和第二模式之间区分。
在图2中示出了说明存储器14的别名地址的示意图。在图2中,物理存储器14具有4兆的容量,被分成两个块70和72,每一个块是2兆。通过第一地址空间74或第二地址空间76可访问存储器14。在该实施例中,第一地址空间74被称为“标准字”地址空间,第二地址空间76被称为“短字”地址空间。在标准字寻址中,从存储器14中的0x00020000至0x0002AAAA和0x00030000至0x0003AAAA范围的地址中读取48位字。在短字寻址中,从存储器14中的0x00040000至0x0007FFFF范围的地址中读取16位字。在短字寻址中可以从存储器14中读取多于1个的16位字,典型的是3个。如图2所示,第一地址空间74和第二地址空间76使用不同地址范围但是访问公共物理存储空间。
在图2的实施例中,第一地址空间中的地址和第二地址空间中的地址访问相同范围的物理存储器地址。在另一个实施例中,第一地址空间中的地址和第二地址空间中的地址访问物理存储地址的不同但有重叠的范围。因此,第一地址空间可以大于或小于第二地址空间。然而,第一地址空间和第二地址空间的至少一部分对应于相同的物理存储空间。第二地址空间有时候也被称为关于第一地址空间的别名地址空间,反之亦然。
示出根据本发明的实施例的传统编码和使用别名寻址的签证编码的示意图被示在图3中。图2的块72被示在图3中。用于应用程序的代码80可以保存在物理存储器14的指定地址空间。代码80包括传统代码段82和84的指令和签证代码段86和88的指令。如图所示,代码段82、84、86和88占据物理存储器14中的不同但连续的区域。使用标准字地址空间中的地址可访问传统代码段82和84,使用短字地址空间中的地址可访问签证代码段86和88。结果,程序定序器12可根据当前指令地址是在标准字地址空间还是在短字地址空间中,来确定操作模式。
图4示出了说明虚拟寻址的示意图。物理地址空间100包括物理页102、104、106等。核处理器110通过访问虚拟地址空间120来操作,该地址空间典型地大于物理地址空间100。虚拟地址空间120可以包括虚拟页130、131、132、133、134、135、136等。当核处理器110访问虚拟地址空间120中的位置时,该虚拟地址通过地址翻译单元16(图1)被转换成物理地址,从而对应的物理存储位置被访问。在一些情况中,所要求的数据在低级存储器(例如磁盘存储)中被访问,并且被传送到物理存储器。在虚拟页和物理页之间的映射被保持在页表中。在该页表被适当地配置之后,在图4的实例中,虚拟页131指向物理页102,虚拟页133和136指向物理页104,虚拟页135指向物理页106。如图所示,两个或多个虚拟页可以指向相同的物理页。
根据本发明的实施例,代码序列的指令可以保存在物理存储器的区域中,例如物理页104。核处理器110产生代码序列的指令地址作为虚拟地址。对应于第一操作模式的代码序列的虚拟地址可以在虚拟页133中,对应于第二操作模式的代码序列的虚拟地址可以在虚拟页136中。例如,在虚拟页133中的指令可以具有相同的指令长度,在虚拟页136中的指令可以具有混合的指令长度。当代码序列从虚拟页133中的指令地址转移到虚拟页136中的指令地址时,核处理器110检查分支目标的地址空间中的变化,如果需要的话,并且自动地从第一操作模式切换到第二操作模式。类似的,当在虚拟页136中的代码序列转移到虚拟页133中的指令时,核处理器110检查分支目标的地址空间中的变化(如果需要的话),并且自动地从第二操作模式切换到第一操作模式。在第一和第二操作模式中,由于不同的指令长度而导致可以不同地访问指令。
图5示出了根据本发明的实施例的操作数字处理器装置的方法的流程图。在步骤200,代码序列的指令被保存在存储器中,例如图1中示出的存储器14。第一操作模式的指令和第二操作模式的指令可以保存在物理存储器14的连续区域中。当代码序列被调用执行时,在步骤202产生指令地址。
明显的是,复位时,定序器应该被初始化以在给定模式中操作。因为处理器通常被设计成向后兼容,在该实施例中,在复位时定序器被初始化至传统操作模式。
在步骤204中,确定下一个指令地址是否表示从第一地址空间到第二地址空间的转变。如果下一个指令地址表示从第一地址空间到第二地址空间的转变,则程序定序器12(图1)在步骤206自动地切换到第二操作模式并且前进到步骤220。如果下一个指令地址没有表示从第一地址空间到第二地址空间的转变,则在步骤208确定是否该下一个指令地址表示从第二地址空间到第一地址空间的转变。如果该下一个指令地址表示从第二地址空间到第一地址空间的转变,则程序定序器12在步骤210自动地切换到第一操作模式并且前进到步骤220。如果该下一个指令地址没有表示从第二地址空间到第一地址空间的转变,则过程前进到步骤220而没有模式切换。在地址空间之间的转变可以由在地址空间之间转移的分支指令来指示。
在步骤220中,程序定序器12使用适当的操作模式获取下一个指令并且发送该指令到执行单元用于执行。该过程然后返回到步骤202以产生下一个指令地址。
在如上所述的实施例中,第一或传统操作模式被配置用于执行固定为48位的第一指令长度的指令,第二或签证操作模式被配置用于执行具有可变指令长度的指令,包括48位指令、32位指令和16位指令。存储器14可以被组织为4列的16位字。在传统模式中,在每一个时钟周期上获取48位的指令并且将该指令提供给核处理器11用于解码和执行。鉴于存储器的组织化,使用指令对齐缓冲器20来对齐保存在存储器14的不同行中的48位的指令。因为所有指令都是48位,所以不需要指令长度信息并且在每一时钟周期上使程序计数器增加对应于48位的值。
在签证模式中,48位、32位和16位的指令被混合在存储器14中,混合的指令被保存在存储器14的连续位置中以获得高的代码密度。当执行代码序列时,事先不知道下一个指令的指令长度。因此,参考图1,当解码器30部分地解码指令时,确定指令长度并且提供指令长度信息给IAB控制器22和程序定序器12。IAB控制器22使用该指令长度信息以便控制将要提供给解码器30的下一个指令的对齐。程序定序器12使用该指令长度信息以便将该程序计数器递增一个对应于1、2或3个16位字的值,这取决于当前指令的解码长度。
因为事先不知道下一个指令的长度,在每一个时钟周期上从存储器14获取对应于最大长度指令的多个字。在上面的例子中,在签证模式中在每一个时钟周期上从存储器14获取3个16位的字。指令对齐缓冲器20使用来自解码器30的指令长度信息以在每一个时钟周期上对齐指令。因为事先不知道下一个指令的长度,由指令对齐缓冲器20在每一个时钟周期上提供3个16位字给解码器30。
图6中示出了指令对齐缓冲器20的实施例的框图。缓冲器300具有5个16位字的容量并且包括16位的位置310、311、312、313、和314。多路复用器320提供数据给缓冲器300的每一个16位的位置。到缓冲器300的输入可以来自存储器、缓冲器300的输出、或者其它输入源。一个16位的位置的输出可以被写入到不同的16位的位置以有效地在缓冲器300中移动(shift)指令。
在第一或传统操作模式中,在每一个时钟周期上从存储器中读取3个16位的字并且将其提供给解码器30。因为在传统模式中每一个指令都是48位,所以不需要指令对齐。
在第二或签证操作模式中,在每一个时钟周期上从存储器中读取3个16位的字并且将其写入到缓冲器300中。在任一时钟周期上从存储器中读取的48位可以包含混合的指令长度。因为事先不知道3个16位的字的内容,所以将48位提供给解码器30。在部分解码之后,基于规定的指令编码,确定指令长度。如果缓冲器300不能容纳从存储器读取的3个新的16位的字,则延迟获取操作。
在图7中示出包含用于在传统模式操作的48位指令的存储器块400。在该实施例中,存储器块400包括4列的16位的字。在图7中还示出了包含用于在签证模式操作的混合的长度指令的存储器块410。在该实施例中,高、中和低位(order)的16位字在传统和签证模式中不同地布置(不同的旋转)。响应于指令长度信号,从存储器块410中获取指令,将其放置在缓冲器300中并且在该缓冲器300中移动,如图8所示。在连续的时钟周期上的缓冲器300的内容被示出在图8中。在连续的时钟周期上执行混合长度的指令。
如果该指令被解码为48位的指令,则从缓冲器300的位置312、313和314中删除指令的3个16位的字。在下一个时钟周期上从存储器读取的3个16位的字被写入到缓冲器300的高位位置312、313和314(见图8中的周期n和n+1)。
如果指令被解码成32位的指令,从缓冲器300的位置313和314中删除指令的2个16位的字,并且在缓冲器300中的剩余16位字向左边移动两个位置(见图8中的周期n+1和n+2)。
如果指令被解码成16位的指令,删除缓冲器300的高位位置314中的16位的字并且将在缓冲器300中的剩余16位字向左移动1个位置(见图8的周期n+4和n+5)。因此,指令对齐缓冲器20的操作取决于当前指令的解码的指令长度。
当缓冲器300不能容纳从存储器中获取的3个16位的字时,在任一周期上抑制或停止指令的获取。在图8示出了一个例子。在周期n+6,缓冲器300不能容纳16位的字8H、8M和8L(见图7)并且抑制获取。
汇编器可以被配置成在传统模式或签证模式中操作。由在签证模式中操作的汇编器汇编的源代码产生可以具有混合的各种长度的指令的二进制代码。所有这些指令被放置在存储器14的短字地址空间中。在传统模式中汇编的相同代码产生具有一致长度的48位的指令的二进制代码。因此汇编的整个代码被放置在存储器14的标准字地址空间中。这两种类型的代码可以被链接在一起。可执行文件包含在传统模式中汇编的指令和在签证模式中汇编的指令,以对在传统模式中产生的代码段的分支目标是标准字地址和对在签证模式中产生的代码段的分支目标是短字地址的方式解决分支目标参考。如前面提及的,在复位中处理器被初始化至传统模式。相应的,在传统模式中汇编由处理器在复位事件之后立即执行的复位ISR(中断子程序)。两个地址空间使能程序定序器以检查代码类型并且动态地切换操作模式以在不同操作模式中正确地解码指令。
因此具有本发明的至少一个实施例的所描述的几个方面,对于本领域的技术人员来说很容易进行各种改变、修改和改进。这样的改变、修改和改进被认为是本公开的一部分并且在本发明的精神和范围内。相应的,前面的描述和附图仅仅是举例。
Claims (29)
1.一种操作包括存储器、程序定序器和执行单元的数字处理器的方法,包括:
在所述存储器中保存代码序列的指令;
产生该代码序列的指令地址;
响应于在第一地址空间和第二地址空间之间的指令地址的转变,自动地在第一操作模式和第二操作模式之间切换,其中第一和第二地址空间中的地址访问公共存储空间;
在第一操作模式中,访问第一地址空间中的指令;
在第二操作模式中,访问第二地址空间中的指令;和
执行所述代码序列中的被访问的指令。
2.根据权利要求1所述的方法,其中自动地切换包括响应于从第一地址空间到第二地址空间的指令地址的转变,从第一模式切换到第二模式,和响应于从第二地址空间到第一地址空间的指令地址的转变,从第二模式切换到第一模式。
3.根据权利要求1所述的方法,其中访问在第一地址空间中的指令包括访问第一指令长度的指令,且其中访问在第二地址空间中的指令包括访问第二指令长度的指令。
4.根据权利要求3所述的方法,其中访问在第二地址空间中的指令还包括访问在第二地址空间中的第一指令长度的指令。
5.根据权利要求4所述的方法,还包括确定在第二模式中的当前指令长度并且根据当前指令长度对齐下一个指令。
6.根据权利要求5所述的方法,其中对齐指令包括响应于当前指令长度,移动指令对齐缓冲器中的指令。
7.根据权利要求3所述的方法,其中访问指令还包括在每一个时钟周期上访问对应于最长指令长度的多个位。
8.根据权利要求3所述的方法,其中访问在第二地址空间中的指令还包括访问在第二地址空间中的第一指令长度的指令和第三指令长度的指令。
9.根据权利要求8所述的方法,其中第一指令长度大于第二和第三指令长度。
10.根据权利要求1所述的方法,其中自动地切换包括检查分支指令的目标地址,和当分支指令的目标地址表示在第一地址空间和第二地址空间之间的转变时在第一和第二模式之间切换。
11.根据权利要求8所述的方法,其中访问在第二地址空间中的指令包括访问在存储器的连续位置中的混合指令长度的指令。
12.根据权利要求3所述的方法,其中访问在第二地址空间中的指令还包括访问在第二地址空间中的第三指令长度的指令。
13.根据权利要求8所述的方法,其中该第一指令长度是48位,该第二指令长度是32位和该第三指令长度是16位。
14.根据权利要求1所述的方法,其中第一地址空间是标准字地址空间和该第二地址空间是短字地址空间。
15.根据权利要求1所述的方法,其中该第一地址空间是虚拟地址空间的第一虚拟页且该第二地址空间是虚拟地址空间的第二虚拟页。
16.一种数字处理器装置,包括:
被配置用于保存代码序列的指令的存储器;
程序定序器,被配置用于产生所述代码序列的指令地址并响应于在第一地址空间和第二地址空间之间的指令地址的转变,自动地在第一操作模式和第二操作模式之间切换,其中所述第一和第二地址空间中的地址访问公共存储空间;其中在第一操作模式中,访问在第一地址空间中的指令;在第二操作模式中,访问在第二地址空间中的指令;和
被配置用于执行所述代码序列中被访问的指令的执行单元。
17.根据权利要求16所述的数字处理器装置,其中该程序定序器被配置用于响应于从第一地址空间到第二地址空间的指令地址的转变,从第一模式切换到第二模式,和响应于从第二地址空间到第一地址空间的指令地址的转变,从第二模式切换到第一模式。
18.根据权利要求16所述的数字处理器装置,其中该程序定序器被配置用于访问在第一地址空间中的第一指令长度的指令,和访问在第二地址空间中的第二指令长度的指令。
19.根据权利要求18所述的数字处理器装置,其中所述程序定序器还被配置用于访问在第二地址空间中的第一指令长度的指令。
20.根据权利要求18所述的数字处理器装置,其中所述程序定序器还被配置用于访问在第二地址空间中的第一指令长度的指令和第三指令长度的指令
21.根据权利要求20所述的数字处理器装置,其中所述第一指令长度大于第二和第三指令长度。
22.根据权利要求20所述的数字处理器装置,其中该第一指令长度是48位,该第二指令长度是32位和该第三指令长度是16位。
23.根据权利要求18所述的数字处理器装置,其中所述程序定序器还被配置用于在每一个时钟周期上获取对应于最大长度指令的多个位。
24.根据权利要求18所述的数字处理器装置,还包括用于确定在第二模式中的当前指令长度的解码器,和用于响应于当前指令长度对齐下一个指令的指令对齐缓冲器。
25.根据权利要求24所述的数字处理器装置,其中所述指令对齐缓冲器还被配置用于响应于当前指令长度而移动指令。
26.根据权利要求16所述的数字处理器装置,其中所述程序定序器被配置用于检查分支指令的目标地址,且响应于检查到该分支指令的目标地址表示在第一地址空间和第二地址空间之间的转变而在第一和第二模式之间切换。
27.根据权利要求16所述的数字处理器装置,其中第一地址空间是标准字地址空间和该第二地址空间是短字地址空间。
28.根据权利要求16所述的数字处理器装置,其中该第一地址空间是虚拟地址空间的第一虚拟页且该第二地址空间是虚拟地址空间的第二虚拟页。
29.一种操作包括存储器、程序定序器和执行单元的数字处理器的方法,包括:
在所述存储器中保存代码序列的指令;
产生代码序列的指令地址;
响应于在第一地址空间和第二地址空间之间的转移,自动地在第一操作模式和第二操作模式之间切换,其中第一和第二地址空间中的地址访问公共存储空间;
在第一操作模式中,访问第一地址空间中的第一指令长度的指令;
在第二操作模式中,访问第二地址空间中的第一指令长度、第二指令长度和第三指令长度的指令;和
执行所述代码序列中被访问的指令。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/890,907 US7836285B2 (en) | 2007-08-08 | 2007-08-08 | Implementation of variable length instruction encoding using alias addressing |
US11/890907 | 2007-08-08 | ||
PCT/US2008/008725 WO2009020513A1 (en) | 2007-08-08 | 2008-07-17 | Implementation of variable length instruction encoding using alias addressing |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101849222A true CN101849222A (zh) | 2010-09-29 |
CN101849222B CN101849222B (zh) | 2014-01-29 |
Family
ID=39940664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880110576.6A Expired - Fee Related CN101849222B (zh) | 2007-08-08 | 2008-07-17 | 使用别名寻址的可变长度指令编码的实现 |
Country Status (7)
Country | Link |
---|---|
US (2) | US7836285B2 (zh) |
EP (1) | EP2186001B1 (zh) |
JP (1) | JP5329541B2 (zh) |
KR (1) | KR101503554B1 (zh) |
CN (1) | CN101849222B (zh) |
TW (2) | TWI451329B (zh) |
WO (1) | WO2009020513A1 (zh) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2007149876A2 (en) * | 2006-06-20 | 2007-12-27 | Datalogic Scanning, Inc. | Imaging scanner with multiple image fields |
US20100312991A1 (en) * | 2008-05-08 | 2010-12-09 | Mips Technologies, Inc. | Microprocessor with Compact Instruction Set Architecture |
US20090282220A1 (en) * | 2008-05-08 | 2009-11-12 | Mips Technologies, Inc. | Microprocessor with Compact Instruction Set Architecture |
US9274796B2 (en) | 2009-05-11 | 2016-03-01 | Arm Finance Overseas Limited | Variable register and immediate field encoding in an instruction set architecture |
US8335910B2 (en) * | 2009-05-19 | 2012-12-18 | Via Technologies, Inc. | Early release of cache data with start/end marks when instructions are only partially present |
US8874888B1 (en) | 2011-01-13 | 2014-10-28 | Google Inc. | Managed boot in a cloud system |
US20120185688A1 (en) * | 2011-01-13 | 2012-07-19 | Google Inc. | Processor mode locking |
US8533343B1 (en) | 2011-01-13 | 2013-09-10 | Google Inc. | Virtual network pairs |
US9135037B1 (en) | 2011-01-13 | 2015-09-15 | Google Inc. | Virtual network protocol |
US8812586B1 (en) | 2011-02-15 | 2014-08-19 | Google Inc. | Correlating status information generated in a computer network |
US9063818B1 (en) | 2011-03-16 | 2015-06-23 | Google Inc. | Automated software updating based on prior activity |
US9237087B1 (en) | 2011-03-16 | 2016-01-12 | Google Inc. | Virtual machine name resolution |
US8533796B1 (en) | 2011-03-16 | 2013-09-10 | Google Inc. | Providing application programs with access to secured resources |
US8261295B1 (en) | 2011-03-16 | 2012-09-04 | Google Inc. | High-level language for specifying configurations of cloud-based deployments |
US9378560B2 (en) * | 2011-06-17 | 2016-06-28 | Advanced Micro Devices, Inc. | Real time on-chip texture decompression using shader processors |
US9075979B1 (en) | 2011-08-11 | 2015-07-07 | Google Inc. | Authentication based on proximity to mobile device |
US8966198B1 (en) | 2011-09-01 | 2015-02-24 | Google Inc. | Providing snapshots of virtual storage devices |
US9069616B2 (en) | 2011-09-23 | 2015-06-30 | Google Inc. | Bandwidth throttling of virtual disks |
US8958293B1 (en) | 2011-12-06 | 2015-02-17 | Google Inc. | Transparent load-balancing for cloud computing services |
US8800009B1 (en) | 2011-12-30 | 2014-08-05 | Google Inc. | Virtual machine service access |
US8983860B1 (en) | 2012-01-30 | 2015-03-17 | Google Inc. | Advertising auction system |
US9672052B1 (en) | 2012-02-16 | 2017-06-06 | Google Inc. | Secure inter-process communication |
US8996887B2 (en) | 2012-02-24 | 2015-03-31 | Google Inc. | Log structured volume encryption for virtual machines |
US8677449B1 (en) | 2012-03-19 | 2014-03-18 | Google Inc. | Exposing data to virtual machines |
US9069806B2 (en) | 2012-03-27 | 2015-06-30 | Google Inc. | Virtual block devices |
US9430255B1 (en) | 2013-03-15 | 2016-08-30 | Google Inc. | Updating virtual machine generated metadata to a distribution service for sharing and backup |
US10235219B2 (en) * | 2015-07-27 | 2019-03-19 | Sony Interactive Entertainment America Llc | Backward compatibility by algorithm matching, disabling features, or throttling performance |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
EP0747808A2 (en) * | 1995-06-07 | 1996-12-11 | International Business Machines Corporation | Processor capable of supporting two distinct instruction set architectures |
CN1278932A (zh) * | 1997-09-17 | 2001-01-03 | 索尼电子有限公司 | 具有可变宽度指令的数字信号处理器 |
US6571330B1 (en) * | 2000-01-14 | 2003-05-27 | Advanced Micro Devices, Inc. | Address size and operand size prefix overrides for default sizes defined by an operating mode of a processor |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6273333A (ja) * | 1985-09-26 | 1987-04-04 | Nec Corp | エミュレーション制御装置 |
US5115500A (en) * | 1988-01-11 | 1992-05-19 | International Business Machines Corporation | Plural incompatible instruction format decode method and apparatus |
GB2307072B (en) * | 1994-06-10 | 1998-05-13 | Advanced Risc Mach Ltd | Interoperability with multiple instruction sets |
US5638525A (en) * | 1995-02-10 | 1997-06-10 | Intel Corporation | Processor capable of executing programs that contain RISC and CISC instructions |
US5826074A (en) * | 1996-11-22 | 1998-10-20 | S3 Incorporated | Extenstion of 32-bit architecture for 64-bit addressing with shared super-page register |
US5881258A (en) * | 1997-03-31 | 1999-03-09 | Sun Microsystems, Inc. | Hardware compatibility circuit for a new processor architecture |
JPH1173315A (ja) * | 1997-08-28 | 1999-03-16 | Saibaa Lab:Kk | 可変長命令プロセサ |
JP2000010863A (ja) * | 1998-06-24 | 2000-01-14 | Sony Computer Entertainment Inc | 情報処理装置および方法、並びに提供媒体 |
US6167459A (en) * | 1998-10-07 | 2000-12-26 | International Business Machines Corporation | System for reassigning alias addresses to an input/output device |
US7065633B1 (en) * | 1999-01-28 | 2006-06-20 | Ati International Srl | System for delivering exception raised in first architecture to operating system coded in second architecture in dual architecture CPU |
US6820189B1 (en) * | 1999-05-12 | 2004-11-16 | Analog Devices, Inc. | Computation core executing multiple operation DSP instructions and micro-controller instructions of shorter length without performing switch operation |
US7171543B1 (en) * | 2000-03-28 | 2007-01-30 | Intel Corp. | Method and apparatus for executing a 32-bit application by confining the application to a 32-bit address space subset in a 64-bit processor |
US6671791B1 (en) * | 2001-06-15 | 2003-12-30 | Advanced Micro Devices, Inc. | Processor including a translation unit for selectively translating virtual addresses of different sizes using a plurality of paging tables and mapping mechanisms |
JP4073721B2 (ja) * | 2002-06-28 | 2008-04-09 | 株式会社ルネサステクノロジ | データ処理装置 |
US7149873B2 (en) * | 2003-10-24 | 2006-12-12 | Hewlett-Packard Development Company, L.P. | Methods and apparatus for a dual address space operating system |
US7421568B2 (en) * | 2005-03-04 | 2008-09-02 | Qualcomm Incorporated | Power saving methods and apparatus to selectively enable cache bits based on known processor state |
GB2435116B (en) | 2006-02-10 | 2010-04-07 | Imagination Tech Ltd | Selecting between instruction sets in a microprocessors |
-
2007
- 2007-08-08 US US11/890,907 patent/US7836285B2/en active Active
-
2008
- 2008-07-15 TW TW097126741A patent/TWI451329B/zh not_active IP Right Cessation
- 2008-07-15 TW TW103125987A patent/TWI520059B/zh not_active IP Right Cessation
- 2008-07-17 KR KR1020107004979A patent/KR101503554B1/ko active IP Right Grant
- 2008-07-17 WO PCT/US2008/008725 patent/WO2009020513A1/en active Application Filing
- 2008-07-17 EP EP08794539.0A patent/EP2186001B1/en not_active Not-in-force
- 2008-07-17 CN CN200880110576.6A patent/CN101849222B/zh not_active Expired - Fee Related
- 2008-07-17 JP JP2010519909A patent/JP5329541B2/ja not_active Expired - Fee Related
-
2010
- 2010-10-08 US US12/900,993 patent/US8332621B2/en active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
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 |
EP0747808A2 (en) * | 1995-06-07 | 1996-12-11 | International Business Machines Corporation | Processor capable of supporting two distinct instruction set architectures |
CN1278932A (zh) * | 1997-09-17 | 2001-01-03 | 索尼电子有限公司 | 具有可变宽度指令的数字信号处理器 |
US6571330B1 (en) * | 2000-01-14 | 2003-05-27 | Advanced Micro Devices, Inc. | Address size and operand size prefix overrides for default sizes defined by an operating mode of a processor |
US7149878B1 (en) * | 2000-10-30 | 2006-12-12 | Mips Technologies, Inc. | Changing instruction set architecture mode by comparison of current instruction execution address with boundary address register values |
Also Published As
Publication number | Publication date |
---|---|
TWI451329B (zh) | 2014-09-01 |
US8332621B2 (en) | 2012-12-11 |
WO2009020513A1 (en) | 2009-02-12 |
US20110078423A1 (en) | 2011-03-31 |
US7836285B2 (en) | 2010-11-16 |
KR20100061463A (ko) | 2010-06-07 |
JP5329541B2 (ja) | 2013-10-30 |
CN101849222B (zh) | 2014-01-29 |
EP2186001A1 (en) | 2010-05-19 |
US20090043990A1 (en) | 2009-02-12 |
JP2010536089A (ja) | 2010-11-25 |
TW200907796A (en) | 2009-02-16 |
TWI520059B (zh) | 2016-02-01 |
EP2186001B1 (en) | 2018-06-13 |
KR101503554B1 (ko) | 2015-03-17 |
TW201445442A (zh) | 2014-12-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101849222B (zh) | 使用别名寻址的可变长度指令编码的实现 | |
US11748270B2 (en) | Tracking streaming engine vector predicates to control processor execution | |
US7865692B2 (en) | Methods and apparatus for automated generation of abbreviated instruction set and configurable processor architecture | |
KR101419668B1 (ko) | 데이터 처리회로 및 데이터 처리방법 | |
CN101344840B (zh) | 一种微处理器及在微处理器中执行指令的方法 | |
CN101627366B (zh) | 预加载指令的方法及装置 | |
US7162617B2 (en) | Data processor with changeable architecture | |
CN102033734B (zh) | 数据处理引擎 | |
US11934833B2 (en) | Stream data unit with multiple head registers | |
WO1995008798A1 (en) | Instruction mapping system and method of manufacture | |
US20230385063A1 (en) | Streaming engine with early exit from loop levels supporting early exit loops and irregular loops | |
CN115904501A (zh) | 具有在每个维度上可选择的多维循环寻址的流引擎 | |
CN102541745B (zh) | 微控制器数据存储器的寻址方法和微控制器 | |
JP2001273141A (ja) | コンピュータシステム、仮想マシン、オブジェクトの実行時表現方法、記憶媒体及びプログラム伝送装置 | |
US11500784B2 (en) | Pseudo-first in, first out (FIFO) tag line replacement | |
US20230065512A1 (en) | Pseudo-First In, First Out (FIFO) Tag Line Replacement | |
TW490635B (en) | Method and device executing orders with symbolic reference | |
KR19990037395A (ko) | 두개의 워드 명령을 단일 주기 동안 실행하는 시스템 및 방법 | |
JPS6217835A (ja) | マイクロプログラムのアドレス制御方式 | |
CN1556468A (zh) | 带有寄存器预读写优化硬件栈的数字信号处理器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140129 |