CN1601462A - 处理器的扩展寄存器空间装置和方法 - Google Patents
处理器的扩展寄存器空间装置和方法 Download PDFInfo
- Publication number
- CN1601462A CN1601462A CN 03154427 CN03154427A CN1601462A CN 1601462 A CN1601462 A CN 1601462A CN 03154427 CN03154427 CN 03154427 CN 03154427 A CN03154427 A CN 03154427A CN 1601462 A CN1601462 A CN 1601462A
- Authority
- CN
- China
- Prior art keywords
- processor
- instruction
- register
- register space
- field
- 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
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/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
- G06F9/30138—Extension of register space, e.g. register cache
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本发明公开了一种访问与处理器相关联的扩展寄存器空间的方法和装置。在示例方法中,将指令的编码字段的第一部分和一个与扩展寄存器空间相关联的值进行比较。如果编码字段的第一部分和与扩展寄存器空间相关联的值匹配,则将该指令的第一操作数与编码字段的第二部分关联。
Description
技术领域
本发明总体上涉及微处理器,特别涉及在不需要修改与处理器相关的指令集编码的条件下扩展可由该处理器使用的寄存器空间的设备和方法。
发明背景
处理器的结构寄存器组或者寄存器空间通常物理地集成在处理器内(片上,on-chip)。寄存器空间或寄存器可用于提高处理器执行指令和数值运算的速度。众所周知,构成寄存器空间的寄存器不是共享资源,因此访问寄存器的速度要快于访问其它在物理上位于处理器芯片外部或与处理器芯片分离(片外,off-chip)和/或由其它代理资源(agentresource)共享的资源的速度。处理器的寄存器空间不受存储器同步方案(memory coherency scheme)(例如那些在多处理器系统中使用的存储器同步方案)和与管理共享存储器资源相关的其它操作开销的影响。另外,在寄存器文件(register file)很大的情况下使用存储栈(memorystack)会带来与地址计算相关的额外开销。
一些微处理器或者处理器提供了相对有限的寄存器空间或结构寄存器组。例如,统称为IA-32处理器的32位Intel处理器家族提供8个片上32位通用寄存器。不幸的是,许多通常用于提高处理器的有效每时钟周期指令(IPC)速率的编译器优化一般都需要多于8个的通用寄存器。此外,更多数量的寄存器总是有好处的,因为更多数量的寄存器可以实现在使用更少基于内存的操作的情况下使程序得以执行,因此可以减少与访问基于堆栈的操作数相关的开销,这样就可减少缓存占用和带宽(即缓存端口)开销。减少由处理器执行的基于堆栈的内存操作的数量可以释放大量可被其它加载、存储和预取指令使用的缓存空间和带宽,这样可以显著提高处理器的IPC速率。
重新设计处理器使其拥有更大的寄存器空间是一件相对简单的事情,然而这样的处理器重新设计一般都需要改变指令集编码,以使重新设计的处理器能够有效利用额外增加的寄存器空间。此外,指令集编码的改变一般不具备与具有较小寄存器空间的处理器的早期版本指令集编码的向后兼容性。
附图说明
图1是一个使用了在此所述的扩展寄存器空间装置和方法的示例处理器系统的方框图;
图2是图1中所示处理器的详细框图;
图3是一个框图,描述了图1和2中所示处理器使用指令编码访问扩展寄存器空间的示例方式;
图4是一个流程图,描述了图1和2中所示处理器通过处理指令编码来访问扩展寄存器空间的示例方式;
图5是一个框图,描述了图1和2中所示处理器使用指令编码访问扩展寄存器空间的另一个示例方式。
优选实施例说明
图1是一个使用了在此所述的扩展寄存器空间装置和方法的示例处理器系统10的框图。如图1所示,处理器系统10包括与互连总线或网络14连接的处理器12。处理器12包括结构寄存器组或寄存器空间16,如图1中所示,其完全集成在芯片上,但也可以完全或者部分地位于芯片之外,并通过专用电连接和/或通过互连网络或总线14与处理器12连接。处理器12可以是任何合适的处理器、处理单元或微处理器,例如IntelItanium处理器、Intel X-Scale处理器、Intel Pentium处理器等。但是,在下文所述的示例中,处理器12是统称为IA-32处理器的32位Intel处理器。
在图1所述的示例中,不管寄存器空间16被实施为片上(on-chip)、片外(off-chip)还是片上和片外的组合,寄存器空间16均被扩展以提供多于目前现有的IA-32处理器所提供的8个32位通用寄存器。尽管在图1中没有表示出来,系统10可以是一个多处理器系统,包括一个或者多个另外的与处理器12相同或相似并与互连总线或网络14连接的处理器。
图1中的处理器12与芯片组18连接,芯片组18包括一个内存控制器20和一个输入/输出(I/O)控制器22。众所周知,芯片组通常提供I/O和内存管理功能,并提供若干可被一个或多个与芯片组连接的处理器访问或使用的通用和/或专用寄存器、计时器等。内存控制器20的功能是使处理器12(或多处理器情况下的多个处理器)能够访问系统内存24,系统内存24可以包括任何期望类型的易失性存储器,例如静态随机访问存储器(SRAM)、动态随机访问存储器(DRAM)等。I/O控制器22的功能是使处理器12能够通过I/O总线30与外围输入/输出(I/O)设备26和28通讯。I/O设备26和28可以是任何期望类型的I/O设备,例如键盘、视频显示器或监视器、鼠标等。尽管内存控制器20和I/O控制器22在图1中表示为在芯片组18内的单独的功能模块,但由这些模块实现的功能既可以集成在一个半导体电路内,也可以使用两个或者更多单独的集成电路来实现。
图2是图1中所示处理器12的更详细的框图。在图2所示的示例中,处理器12的寄存器空间16包括8个当前由现有的IA-32处理器提供的片上通用寄存器36和一个扩展的片上寄存器空间或者寄存器组38。此外,处理器12还包括指令处理硬件和/或逻辑电路40,除了与公知的IA-32处理器一起提供的流水线(pipeline)硬件之外,指令处理硬件和/或逻辑电路40还包括两个解码模块42和44,用于对指令或指令的一部分进行并行处理或解码。此外,处理器12还包括微码(microcode)46,它的功能是使处理器12不但能够实现公知的IA-32处理器的功能,而且使处理器12能够利用扩展寄存器空间38执行现有的IA-32指令集编码。
图3是一个框图,描述了图1和2中所示处理器12使用现有的或标准的IA-32指令编码访问扩展寄存器空间38的示例方式。如图3所示,IA-32处理器的标准指令的编码字段50包括可选的前缀字段52、操作码字段54、Mr/m字段56、Sib字段58、偏移寻址字段60和直接寻址字段62。由于图3所示的IA-32处理器指令编码字段50是众所周知的,所以无需对这些字段进行进一步的详细描述。然而,为便于理解在此所述的示例,下文给出了一些关于这些字段的功能和操作的进一步的描述。
操作码字段54包含二进制编码,在本示例中该二进制编码是1字节或8位的编码,这是执行像算术操作、内存访问操作、寄存器内容操作(例如移位)或这些操作的任意组合这样的特定处理器操作所需要的。其中,Mr/m字段56是一个1字节的字段,它决定了执行指令(例如,由像图1中所示处理器12这样的处理器执行的指令)时所采用的寻址模式。例如,根据Mr/m字段56内各位的状态而采用偏移偏移寻址模式或直接寻址模式。众所周知,偏移寻址模式利用偏移字段60的内容来寻址与另一个地址(例如,指令的起始地址)相关的指令相关联的操作数。另一方面,直接寻址模式利用直接寻址字段62,根据直接寻址字段62的内容来寻址与指令相关的操作数。换句话说,如果使用了直接寻址字段62,其一般包含与指令的操作数相关的绝对(与“相对”相反)内存地址。
图3中所述的示例指令是一个进位加指令,为便于记忆,该指令可表示为ADC。众所周知,对于IA-32处理器,ADC指令需要两个操作数,其中一个称为源(SRC)操作数,另一个称为目的(DEST)操作数。对于现有的IA-32处理器,这两个操作数的其中之一(即SRC或DEST)必须位于片上寄存器内,而另一个可以位于系统内存内。当现有的IA-32处理器执行ADC指令时,会产生SRC、DEST及进位标志(CF)的内容之和,并将该和存储在与DEST操作数相关的位置上。为便于记忆,这个操作可表示为DEST<=DEST+SRC+CF。这样,DEST位置既作为操作数的存储位置,又作为指令结果的存储位置。对于允许多于1个内存操作数的处理器架构,在此所述的方法可单独应用于各个内存操作数。
当执行ADC指令的时候,现有或己知的IA-32处理器将Mr/m字段56的第3到第5位解释为8个公知或传统的通用片上寄存器(例如,寄存器0到7)之一的地址。根据ADC指令使用的特定编码,在Mr/m字段56表示的寄存器地址可以是SRC操作数的位置,也可以是DEST操作数的位置。在标号66中所表示的示例中,片上寄存器为DEST操作数,现有的IA-32处理器使用偏移字段60为SRC操作数确定其在系统内存部分(例如,图1所示内存24的一部分)中的地址。另一方面,在标号68所表示的示例中,片上寄存器为SRC操作数,现有的IA-32处理器采用偏移字段60为DEST操作数确定其在系统内存中的地址。
对于图2中的示例IA-32处理器,寄存器空间16(图1)被扩展,这样其包含的寄存器就多于目前由IA-32处理器提供的8个传统的通用寄存器。在图2所示的示例中,扩展之后的寄存器空间16包含另外1024个32位寄存器。然而,可以使用任意其它数量的附加寄存器。如以下结合图4详细描述的那样,在此描述的设备和方法使图3所示的指令编码字段50可以使用处理器12的寄存器空间16。特别是当以图3所示的偏移寻址模式执行ADC指令时,处理器12读取偏移字段60中最高的(即顶端的)20位作为页标识或标记,然后将该页标识或标记和一个与扩展寄存器空间38相关的预定标识值进行比较。如以下结合图4详细描述的那样,如果从偏移字段60中读取的页标识或标记和与扩展寄存器空间38相关的标识值匹配,则处理器12利用偏移字段60的低12位来在扩展寄存器空间38内访问该指令的的两个操作数中的一个,以处理该指令。
如图3所示,偏移字段60的低12位或偏移值被用作寄存器空间38的寄存器索引。具体来说,位2到7用于确定1024个32位寄存器的地址。最低的两个位(即0和1)被忽略了,因为这些位对应于(即可以用于个别寻址或选择)构成各个32位寄存器字(word)的四个字节。这样,如果Mr/m字段56的位3至5确定了SRC操作数的地址,则偏移字段60的位2到11就被处理器12用于确定扩展寄存器空间38内的DEST操作数的地址。另一方面,如果Mr/m字段56的位3至5确定了DEST操作数的地址,则偏移字段60的位2到11就被处理器12用于确定扩展寄存器空间38内的SRC操作数的地址。
尽管在图3所示的示例中,在处理器12的内存映象中采用了与一个4KB页或1024个32位字相对应的一个单个的页标识或标记,但是也可以使用附加的页标识或标记,使处理器12能够访问位于扩展寄存器空间38内的多于1024个的32位寄存器。与此类似,也可以在扩展寄存器空间38内提供少于1024个的32位寄存器,在这种情况下,由偏移字段60的低12位提供的一些寄存器地址可以不使用,或可以忽略。或者,也可以使用具有多于20个位的标记来访问扩展寄存器空间38内的寄存器。在这种情况下,偏移字段60的偏移或者寄存器索引部分所具有的位数将少于20,这样可实现寻址并访问数量上少于1024个的32位寄存器。此外,尽管图3所示的示例是基于进位加指令的,但是也可以使用任何其它使用内存操作数的指令。再者,尽管图3所示的示例是基于IA-32处理器的指令集,但是也可以使用与其它的处理器类型相关的指令集。特别是对于那些基于其它指令集和处理器类型的实施例,可以使用与原有的寄存器地址和内存地址相关的字段代替IA-32的“M/rm”字段和“偏移”字段。
在图1-3所述的示例中,处理器12是一个IA-32处理器,寄存器空间16包括8个传统上由公知的IA-32处理器提供的通用片上寄存器和另外1024个IA-32处理器先前没有提供的32位片上寄存器。为了使处理器12能够使用与现有的IA-32处理器(即没有扩展寄存器空间38的处理器)兼容的指令编码来访问扩展寄存器空间38,处理器12包括微架构(microarchitecture)(例如微码),以使处理器12能够执行如下结合图4详细描述的指令处理技术。此外,计算机系统10的操作系统(OS)和/或基本输入/输出系统(BIOS)配置为:计算机系统10的内存映象保留了与扩展寄存器空间38相关联的内存页(memory page),由处理器12专用。换句话说,通常由IA-32处理器用于寻址系统内存24中的内存物理页地址的内存页标识改为由处理器12专门(即不与系统10中的其它资源共享)用于寻址扩展寄存器空间38中的寄存器。
图4是一个流程图,描述了图1和2中所示处理器12通过处理现有或标准的IA-32指令编码来访问扩展寄存器空间38的示例方式。图4所示流程图特别描述了一种示例方式,其中处理器12的指令处理硬件或逻辑电路40内的前端指令处理流水线被配置为在处理像图3所示的指令这样的标准IA-32指令编码时工作。如图4所示,处理器12访问缓存(块100),取出将要处理的下一条指令(块102),并对将要处理的指令的长度进行解码(块104)。众所周知,对指令的长度进行解码可使处理器将指令解析为它的部分编码字段(即操作码字段、Mr/m字段和偏移字段等)。然后,对将由处理器12处理的指令进行解码(块106和108)、重命名(块110),并将其放入队列等待执行(块112)。与图4中的块100-112相关的行为是目前由现有的IA-32处理器所采用的,且是公知的,所以在此不再进行更详细的描述。
处理器12在进行与图4所示块100-112相关的指令处理操作时并行地执行另外的操作。处理器12使用解码模块42和44来执行与块106和108相关的解码操作。此外,解码模块42和44被用于确定偏移字段60的页标识或标记部分是否和与处理器12的扩展寄存器空间38相关的标识值或标记匹配(块114)。如果偏移字段60的标记部分和与处理器12的扩展寄存器空间38相关的标记不匹配,则对当前正在被处理的指令进行并行解码(即,与块106和108并行)的解码硬件或逻辑电路不再对该指令采取进一步的动作。另一方面,如果偏移字段60的页标识或标记部分和与扩展寄存器空间38相关的标记匹配,则处理器使用解码器42和44中的一个对Mr/m字段56的寄存器指针位(即位3至5)和偏移字段60的寄存器索引位(即低12位)进行解码(块116),以确定是SRC操作数还是DEST操作数位于扩展寄存器空间38内,从而可以通过偏移字段60的寄存器索引部分进行寻址。
由图4中的示例可以看出,通过提供另外的与指令解码操作(例如块106和108)并行地进行寄存器解码操作(例如块116)的解码硬件和/或逻辑电路,可以减少对使用扩展寄存器空间38的指令进行解码所需的时钟周期数。例如,对于图2所示的示例处理器12,解码器42和44中的其中之一可用于寄存器解码操作,而解码器42和44中的另外一个可用于指令解码操作。然而,指令使用的寻址模式会影响进行指令解码操作和寄存器解码操作时的并行程度。例如,对于图3中所显示和描述的示例指令,使用的是偏移寻址。对于偏移寻址,操作数地址被直接编码到指令中(即偏移字段60和/或Mr/m字段56中),因此能够基本上并行地对指令中的编码字段进行处理。
在偏移字段60的页标识或标记部分包含在寄存器内(即标记值保存在寄存器中)的情况下,例如,通过基址寄存器(base register)进行间接寻址,可以采用图4所示的方法来比较保存在基址寄存器中的值和与扩展寄存器空间38相关的标记或值(块114)。然而,这样的比较是推测性的,因为该比较是在指令处理流水线的前端进行的,随后的处理器操作可能会改变保存在基址寄存器中的值。这样,对于间接寻址或其它更复杂的寻址模式,更适合将处理器12配置为跟踪基址寄存器的改变,且当识别到基址寄存器值的改变时,重新开始执行受该改变影响的任何指令。在任何情况下,改变基址寄存器的页标识或标记部分(即高20位)的情况相对来讲很少会发生,因此重新开始执行指令及类似情况对处理器12的总体执行速度或有效IPC速率的影响也很小。
由以上示例可以看出,可以使用标准的或公知的IA-32指令集或编码,使具有扩展寄存器空间(例如,处理器12的扩展寄存器空间38)的IA-32处理器能够使用扩展寄存器空间来保存传统上保存在系统内存中(例如,片外共享内存中)的操作数值。使用基于寄存器的操作来代替基于内存的操作可减少使用基于堆栈的操作和其它的内存访问开销,因此对于具有扩展寄存器空间的处理器,可提高其IPC速率。
为像以上参照图1-4所述的示例处理器这样的具有扩展寄存器空间的处理器编写的软件具有与只有8个传统片上通用寄存器的现有IA-32处理器的向后兼容性(即可以天然地在其上运行或被其执行)。要想具有这样的向后兼容性,对利用扩展寄存器组的软件或者指令进行编译,将需要访问扩展寄存器组中寄存器的指令简化为内存访问操作。然而,由现有的IA-32处理器执行的BIOS和/或操作系统必须确保被用作寄存器空间的系统内存对于现有的IA-32处理器来说是可用的。换句话说,如果软件是为具有额外的1024个32位片上寄存器的IA-32处理器编写的,则在目前的只有8个片上通用寄存器的IA-32处理器上执行这样的软件需要现有IA-32处理器的BIOS和/或OS在其系统内存内映射一个与扩展寄存器标记具有相同基址的页(即1024个32位字)页。然而,在现有的IA-32处理器上执行利用扩展寄存器空间38的软件不会产生性能优势(例如IPC速率的提高),因为在扩展寄存器空间中寻址的操作数在物理上位于系统内存中,因此对这些操作数的访问会导致内存操作和与之相关的处理开销。
如上所述,如果需要,可以在处理器12中提供多于1024个32位字或少于1024个32位字(例如,多于一个页)的扩展寄存器空间38。例如,在处理器12执行使用扩展寄存器空间38中多页寄存器空间的单线程或单进程的情况下,图4所示的标记匹配或比较(块114)将在该线程中执行的各个指令的偏移字段60的标记部分和与该多页寄存器空间对应的标识值或标记进行比较。如果这些标识或标记中的任意一个与偏移字段60的标记部分匹配,则处理器12执行以上参照图4所述的寄存器解码(块116)。
另一方面,在处理器12使用它的操作系统执行多个线程或者多个进程的情况下,各个线程或者进程可与不同的页标识或标记相关联,这样各个线程或进程就具有自己的寄存器空间页。因此,在处理器12执行多个线程或者多个进程的情况下,各个线程或者进程可与不同的页标识或标记相关联,图4所示的标记匹配或比较(块114)将偏移字段60的标记部分和与用于当前线程或进程的页对应的标识进行比较。
此外,处理器12可以执行多个线程或者进程,在这里,部分或者所有线程或进程使用扩展寄存器空间38中的多个页。换句话说,可以有多个线程,且这些线程中的每一个均可以访问扩展寄存器空间38中的多于1个的页。在这种情况下,标记匹配或比较(块114)将偏移字段60的标记部分和与当前线程相关的标识值或标记进行比较。
对于具有扩展寄存器空间38的单线程或多线程处理器(即同时执行多个进程的处理器),优选的,操作系统响应于上下文切换(contextswitch,即从一个进程和线程的执行切换到另一个进程和线程),保存和恢复各个线程或进程的扩展寄存器空间38。此外,通过将传统的寄存器映射到扩展寄存器空间38中,可以实现在8个传统的片上通用寄存器和扩展寄存器空间38之间高效地传送操作数。这8个与公知IA-32处理器相关的传统寄存器可在物理上和逻辑上保持与扩展寄存器空间38的分离,可以利用Mr/m字段56的特殊编码来指示源或目的操作数位于这8个传统片上寄存器的其中之一中。
利用具有基于追踪缓存(trace cache)的微架构的处理器,可以进一步优化扩展寄存器空间38的使用。特别是当具有基于追踪缓存的微架构的处理器识别到需要访问扩展寄存器空间38的指令时,与该指令和其需要访问的扩展寄存器空间相关的信息可以保存在微码追踪记录(microcode trace)内,使得在随后调用该指令时能够更有效地处理该指令
图5是一个框图,描述了图1所示处理器12使用标准IA-32指令的指令编码字段150访问扩展寄存器空间38的另一个示例方式。如图5所示,该示例指令包含标准的IA-32处理器指令编码字段(即只有8个片上通用寄存器的IA-32处理器使用的编码字段)。与图3所示指令一样,示例编码字段150包括前缀字段152、操作码字段154、Mr/m字节或字段156、Sib字段158、偏移寻址字段160和直接寻址字段162。
如图5所示,处理器12利用Mr/m字段156的位3至5和偏移字段160的偏移部分(即位0至11)163来访问三个不同寄存器中的三个操作数。在图5所示的示例中,位于Mr/m字段156和偏移字段160的偏移部分163中的位被解码为三个操作数进位加(ADC)指令164。然而,图5所示的原理可应用于其它任何指令。为方便记忆,ADC指令164可表示为DEST<=SRC1+SCR2+CF。
为了处理图5所示的指令,处理器12执行寄存器解码处理(图4中的块116),从而使用Mr/m字段156的位3至5与偏移163的位10和11来确定目的(DEST)操作数的地址,偏移163的位5至9用于确定第一个源操作数(SRC1)的地址,且偏移163的位0到4用于确定第二个源操作数(SRC2)的地址。因此,图5所示三个操作数各表示为一个5位的值,结果,各个操作数可以随机地使用位于处理器12的扩展寄存器空间38内的32个寄存器中的任何一个。
图5中所示使处理器12能够访问扩展寄存器空间的示例方式与图4所示技术相似。然而,通过图3和图5的对比可以发现,偏移字段的各个位的解码方式使得利用公知的IA-32处理器上的标准IA-32编码编写的软件具备天然的向后兼容性。
另一方面,使用标准的IA-32指令编码为图5所示那样的处理器编写的软件不具备与公知的IA-32处理器的天然向后兼容性。然而,通过使用修正的异常处理程序(exception handler)可以获得向后兼容性。特别地,因为伪内存偏移的标记字段指向一个未映射的内存地址,所以可以使用故障处理程序来检查试图访问该未映射内存的指令,并模拟该指令的功能。完成之后,故障处理程序将程序执行返回到该模拟指令之后的指令。当然,由于使用故障处理程序来模拟各个试图访问不具备扩展寄存器空间的处理器中的扩展寄存器空间的软件指令,所以会导致性能的降低。
尽管在此描述了本发明的方法和设备的特定实施例,但本发明的范围不限于此。相反,本发明涵盖所有正当地落在所附权利要求字面含义及其等同物的范围内的实施方式。
Claims (45)
1.一种访问与处理器相关联的扩展寄存器空间的方法,该方法包括:
比较指令的第一编码字段的第一部分和一个与所述扩展寄存器空间相关联的值;以及
如果所述第一编码字段的第一部分和所述的与扩展寄存器空间相关联的值匹配,则将指令的所述第一操作数与所述第一编码字段的第二部分关联。
2.如权利要求1所述的方法,其中,比较第一编码字段的第一部分和与扩展寄存器空间相关联的值包括:比较指令的偏移字段的一部分和所述的与扩展寄存器空间相关联的值。
3.如权利要求2所述的方法,其中,比较指令的偏移字段的一部分和与扩展寄存器空间相关联的值包括:比较偏移字段的页标识部分和与扩展寄存器空间相关联的页标识。
4.如权利要求3所述的方法,其中,比较偏移字段的页标识部分和与扩展寄存器空间相关联的页标识包括:比较偏移字段的预定数目的最高有效位和与扩展寄存器空间相关联的页标识。
5.如权利要求1所述的方法,其中,如果第一编码字段的第一部分和与扩展寄存器空间相关联的值匹配则将指令的第一操作数与第一编码字段的第二部分关联包括:将源操作数和目的操作数的其中之一与第一编码字段的第二部分关联。
6.如权利要求1所述的方法,还包括将与处理器相关联的内存配置为:由处理器独占地使用与扩展寄存器空间对应的内存部分。
7.如权利要求6所述的方法,还包括响应于上下文切换而将来自扩展寄存器空间的信息保存在内存中与扩展寄存器空间对应的部分中。
8.如权利要求1所述的方法,还包括将指令的第二编码字段的一部分与指令的第二操作数关联。
9.如权利要求8所述的方法,其中,将第二编码字段的一部分与第二操作数关联包括:将Mr/m字段的一部分与源操作数和目的操作数的其中之一关联。
10.如权利要求1所述的方法,还包括:如果第一编码字段的第一部分和与扩展寄存器空间相关联的值匹配,则将第一编码字段的第三和第四部分及指令的第二编码字段的一部分与第二和第三操作数关联。
11.一种访问与处理器相关联的寄存器空间的方法,该方法包括:
比较指令的偏移字段的第一部分和与寄存器空间相关联的值;以及
如果偏移字段的第一部分和与寄存器空间相关联的值匹配,则将指令的操作数与偏移字段的第二部分关联。
12.如权利要求11所述的方法,其中,比较偏移字段的第一部分和与寄存器空间相关联的值包括:比较偏移字段的标记部分和与寄存器空间相关联的标记。
13.如权利要求12所述的方法,其中,比较偏移字段的标记部分和与寄存器空间相关联的标记包括:比较偏移字段的预定数目的最高有效位和与寄存器空间相关联的标记。
14.如权利要求11所述的方法,其中,如果偏移字段的第一部分和与寄存器空间相关联的值匹配则将指令的操作数与偏移字段的第二部分关联包括:将源操作数和目的操作数的其中之一与偏移字段的第二部分关联。
15.如权利要求11所述的方法,还包括将系统内存配置为与寄存器空间对应的系统内存部分不共享。
16.如权利要求11所述的方法,还包括:如果偏移字段的第一部分和与寄存器空间相关联的值匹配,则将偏移字段的第三和第四部分及Mr/m字段的一部分与第二和第三操作数关联。
17.一种处理需要访问与处理器相关联的寄存器空间的指令的方法,该方法包括:
比较指令的第一编码字段的标记部分和与寄存器空间相关联的值;以及
对指令进行解码,使指令的第一和第二操作数分别与寄存器空间中的第一和第二寄存器关联。
18.如权利要求17所述的方法,其中,比较指令的第一编码字段的标记部分和与寄存器空间相关联的值包括:比较偏移字段的一部分和与寄存器空间相关联的值
19.如权利要求17所述的方法,其中,对指令进行解码以使指令的第一和第二操作数分别与第一和第二寄存器关联包括:将第一编码字段的寄存器索引部分与第一操作数关联,并将指令的第二编码字段的一部分与第二操作数关联。
20.如权利要求19所述的方法,其中,将第一编码字段的寄存器索引部分与第一操作数关联并将指令的第二编码字段的一部分与第二操作数关联包括:将偏移字段的一部分与第一操作数关联,并将Mr/m字段的一部分与第二操作数关联。
21.如权利要求17所述的方法,还包括跟踪基址寄存器中的变化,并响应于检测到影响指令的变化而重新开始执行指令。
22.如权利要求17所述的方法,还包括比较指令的第一编码字段的标记部分和各与寄存器空间的一部分相关联的多个值。
23.如权利要求17所述的方法,还包括响应于上下文切换而保存寄存器空间中存储的信息。
24.如权利要求17所述的方法,还包括将不在寄存器空间内的寄存器映射到寄存器空间中。
25.如权利要求17所述的方法,还包括使用微码追踪记录来存储与访问寄存器空间相关的信息。
26.如权利要求17所述的方法,还包括响应于指令试图访问未映射的内存地址而在故障处理程序中模拟该指令的功能。
27.一种处理器,包括:
寄存器空间;
指令解码流水线;以及
微码,使处理器处理指令解码流水线中需要访问寄存器空间的指令,以比较指令的第一编码字段的第一部分和与寄存器空间相关联的值,并且如果第一编码字段的第一部分和与寄存器空间相关联的值匹配,则将指令的第一操作数与第一编码字段的第二部分关联。
28.如权利要求27的处理器,其中,寄存器空间包括第一和第二部分,且第一部分包含的寄存器少于第二部分。
29.如权利要求27的处理器,其中,寄存器空间在物理上集成在处理器内。
30.如权利要求27的处理器,其中,指令解码流水线包括多个用于对指令进行并行解码的解码器。
31.如权利要求27的处理器,其中,第一编码字段是偏移寻址字段,且第一编码字段的第一部分是内存页标识和标记的其中之一。
32.如权利要求27的处理器,其中,第一编码字段的第二部分是寄存器索引和偏移的其中之一。
33.一种计算机系统,包括:
内存控制器;
与内存控制器连接的系统内存;以及
具有寄存器空间且与内存控制器连接的处理器,其中,处理器被编程为:处理需要访问寄存器空间的指令,比较指令的编码字段的第一部分和与寄存器空间相关联的值,并且如果编码字段的第一部分和与寄存器空间相关联的值匹配,则将指令的操作数与编码字段的第二部分关联。
34.如权利要求33所述的计算机系统,其中,寄存器空间部分的一部分对应于系统内存的一个页。
35.如权利要求33所述的计算机系统,其中,寄存器空间在物理上集成在处理器内。
36.如权利要求33所述的计算机系统,其中,寄存器空间包括第一和第二部分,且第一部分包含的寄存器少于第二部分。
37.一种处理计算机可读指令的方法,该方法包括:
提供具有第一数目的寄存器的第一处理器;
在与第二处理器相关联的指令集中定义字段,其中第二处理器具有第二数目的寄存器,且第二数目小于第一数目,使得所述指令集中在由第二处理器执行时访问片外资源的指令在由第一处理器执行时访问片上资源。
38.如权利要求37所述的方法,其中,提供具有第一数目的寄存器的第一处理器包括:提供具有多于8个通用寄存器的处理器。
39.如权利要求37所述的方法,其中,在指令集中定义字段包括:在指令集的偏移字段中定义标记。
40.如权利要求39所述的方法,其中,在与第二处理器相关联的指令集中定义字段,其中第二处理器具有第二数目的寄存器,且第二数目小于第一数目,使得所述指令集中在由第二处理器执行时访问片外资源的指令在由第一处理器执行时访问片上资源包括:利用所述字段的一部分来访问片上资源。
41.一种执行指令的方法,包括:
提供具有扩展的芯片结构寄存器组的处理器;
使用扩展芯片结构寄存器组中的第一寄存器的地址对指令进行编码;
只使用来自第一寄存器的数据和来自与处理器相关联的第二片上寄存器的数据执行该指令。
42.如权利要求41所述的方法,其中,第二寄存器在扩展寄存器组内。
43.如权利要求41所述的方法,其中,第二寄存器在与处理器相关联的第二芯片结构寄存器组内。
44.一种处理器,包括:
第一组寄存器;
扩展的寄存器组;
解码器,用于对指令进行解码,从而仅使用来自第一组寄存器和扩展寄存器组中至少一个的数据来执行该指令。
45.如权利要求44的处理器,其中,解码器包括:
第一解码器,用于对指令的操作码字段进行解码;以及
第二解码器,与第一解码器对指令的操作码字段进行解码基本同时地对指令的标记部分进行解码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031544274A CN100338571C (zh) | 2003-09-27 | 2003-09-27 | 处理器的扩展寄存器空间装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB031544274A CN100338571C (zh) | 2003-09-27 | 2003-09-27 | 处理器的扩展寄存器空间装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1601462A true CN1601462A (zh) | 2005-03-30 |
CN100338571C CN100338571C (zh) | 2007-09-19 |
Family
ID=34659979
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB031544274A Expired - Fee Related CN100338571C (zh) | 2003-09-27 | 2003-09-27 | 处理器的扩展寄存器空间装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100338571C (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102033735A (zh) * | 2009-09-30 | 2011-04-27 | 英特尔公司 | 使用寄存器扩展在中央处理单元中管理和实现元数据 |
CN102262595A (zh) * | 2011-07-29 | 2011-11-30 | 航天恒星科技有限公司 | 一种微处理器扩展寻址方法 |
CN103019972A (zh) * | 2012-11-23 | 2013-04-03 | 广东威创视讯科技股份有限公司 | 一种利用总线进行通讯的方法和装置 |
CN102124443B (zh) * | 2008-08-15 | 2014-05-07 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
WO2014187348A1 (zh) * | 2013-08-23 | 2014-11-27 | 中兴通讯股份有限公司 | 报文处理方法和装置 |
CN104461939A (zh) * | 2014-12-16 | 2015-03-25 | 清华大学 | 扩展处理器寄存器堆容量的方法 |
CN104572020A (zh) * | 2014-12-31 | 2015-04-29 | 中国电子科技集团公司第三十八研究所 | 一种寄存器堆分页式扩展装置及其实现方法 |
CN107273095A (zh) * | 2011-04-01 | 2017-10-20 | 英特尔公司 | 用于对齐寄存器的系统、装置和方法 |
CN108595258A (zh) * | 2018-05-02 | 2018-09-28 | 北京航空航天大学 | 一种gpgpu寄存器文件动态扩展方法 |
CN110532030A (zh) * | 2019-08-01 | 2019-12-03 | 安凯(广州)微电子技术有限公司 | 一种cpu中优化寄存器访问的方法 |
WO2020108496A1 (zh) * | 2018-11-30 | 2020-06-04 | 上海寒武纪信息科技有限公司 | 原子操作中的数据处理方法及装置 |
CN111258950A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 原子访存方法、存储介质、计算机设备、装置和系统 |
WO2022067510A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 一种处理器、处理方法及相关设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5023773A (en) * | 1988-02-10 | 1991-06-11 | International Business Machines Corporation | Authorization for selective program access to data in multiple address spaces |
CA2284247C (en) * | 1989-09-01 | 2005-12-06 | Amdahl Corporation | Programmable computer with automatic translation between source and object code |
US5075845A (en) * | 1989-12-22 | 1991-12-24 | Intel Corporation | Type management and control in an object oriented memory protection mechanism |
-
2003
- 2003-09-27 CN CNB031544274A patent/CN100338571C/zh not_active Expired - Fee Related
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102124443B (zh) * | 2008-08-15 | 2014-05-07 | 飞思卡尔半导体公司 | 在单指令多数据(simd)数据处理器中提供扩展寻址模式 |
TWI499973B (zh) * | 2009-09-30 | 2015-09-11 | Intel Corp | 利用暫存器擴充來管理與施用中央處理單元中之元資料的技術 |
CN102033735A (zh) * | 2009-09-30 | 2011-04-27 | 英特尔公司 | 使用寄存器扩展在中央处理单元中管理和实现元数据 |
CN102033735B (zh) * | 2009-09-30 | 2015-06-17 | 英特尔公司 | 使用寄存器扩展在中央处理单元中管理和实现元数据 |
CN107273095B (zh) * | 2011-04-01 | 2020-12-29 | 英特尔公司 | 用于对齐寄存器的系统、装置和方法 |
CN107273095A (zh) * | 2011-04-01 | 2017-10-20 | 英特尔公司 | 用于对齐寄存器的系统、装置和方法 |
CN102262595A (zh) * | 2011-07-29 | 2011-11-30 | 航天恒星科技有限公司 | 一种微处理器扩展寻址方法 |
CN103019972A (zh) * | 2012-11-23 | 2013-04-03 | 广东威创视讯科技股份有限公司 | 一种利用总线进行通讯的方法和装置 |
CN103019972B (zh) * | 2012-11-23 | 2016-05-25 | 广东威创视讯科技股份有限公司 | 一种利用总线进行通讯的方法和装置 |
CN104426761A (zh) * | 2013-08-23 | 2015-03-18 | 中兴通讯股份有限公司 | 报文处理方法和装置 |
WO2014187348A1 (zh) * | 2013-08-23 | 2014-11-27 | 中兴通讯股份有限公司 | 报文处理方法和装置 |
CN104426761B (zh) * | 2013-08-23 | 2019-02-26 | 中兴通讯股份有限公司 | 报文处理方法和装置 |
CN104461939A (zh) * | 2014-12-16 | 2015-03-25 | 清华大学 | 扩展处理器寄存器堆容量的方法 |
CN104572020B (zh) * | 2014-12-31 | 2017-03-15 | 中国电子科技集团公司第三十八研究所 | 一种寄存器堆分页式扩展装置及其实现方法 |
CN104572020A (zh) * | 2014-12-31 | 2015-04-29 | 中国电子科技集团公司第三十八研究所 | 一种寄存器堆分页式扩展装置及其实现方法 |
CN108595258B (zh) * | 2018-05-02 | 2021-07-27 | 北京航空航天大学 | 一种gpgpu寄存器文件动态扩展方法 |
CN108595258A (zh) * | 2018-05-02 | 2018-09-28 | 北京航空航天大学 | 一种gpgpu寄存器文件动态扩展方法 |
WO2020108496A1 (zh) * | 2018-11-30 | 2020-06-04 | 上海寒武纪信息科技有限公司 | 原子操作中的数据处理方法及装置 |
CN111258950A (zh) * | 2018-11-30 | 2020-06-09 | 上海寒武纪信息科技有限公司 | 原子访存方法、存储介质、计算机设备、装置和系统 |
CN111258950B (zh) * | 2018-11-30 | 2022-05-31 | 上海寒武纪信息科技有限公司 | 原子访存方法、存储介质、计算机设备、装置和系统 |
CN110532030A (zh) * | 2019-08-01 | 2019-12-03 | 安凯(广州)微电子技术有限公司 | 一种cpu中优化寄存器访问的方法 |
CN110532030B (zh) * | 2019-08-01 | 2023-07-07 | 广州安凯微电子股份有限公司 | 一种cpu中优化寄存器访问的方法 |
WO2022067510A1 (zh) * | 2020-09-29 | 2022-04-07 | 华为技术有限公司 | 一种处理器、处理方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN100338571C (zh) | 2007-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20230273846A1 (en) | Hardware apparatuses and methods for memory corruption detection | |
US7676654B2 (en) | Extended register space apparatus and methods for processors | |
US10346306B2 (en) | Processor and method for memory performance monitoring utilizing a monitor flag and first and second allocators for allocating virtual memory regions | |
KR101839479B1 (ko) | 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들 | |
CN100338571C (zh) | 处理器的扩展寄存器空间装置和方法 | |
WO2018093439A2 (en) | Processors, methods, systems, and instructions to load multiple data elements to destination storage locations other than packed data registers | |
EP3550437B1 (en) | Adaptive spatial access prefetcher apparatus and method | |
KR101787851B1 (ko) | 다중 페이지 크기 변환 색인 버퍼(tlb)용 장치 및 방법 | |
US10108554B2 (en) | Apparatuses, methods, and systems to share translation lookaside buffer entries | |
JP2019197531A (ja) | 連鎖タイル演算を実施するためのシステムおよび方法 | |
EP3719655B1 (en) | Apparatuses, methods, and systems to accelerate store processing | |
US11915000B2 (en) | Apparatuses, methods, and systems to precisely monitor memory store accesses | |
CN115827065A (zh) | 使用早期和后期地址以及循环计数寄存器来跟踪架构状态的流引擎 | |
CN113535236A (zh) | 基于指令集体系结构的和自动的加载跟踪的方法和装置 | |
US11169809B2 (en) | Method and apparatus for converting scatter control elements to gather control elements used to sort vector data elements | |
JP2017538215A (ja) | 逆分離演算を実行するための命令及びロジック | |
US10956327B2 (en) | Systems and methods for mitigating dram cache conflicts through hardware assisted redirection of pages (HARP) | |
US10853078B2 (en) | Method and apparatus for supporting speculative memory optimizations | |
US10824496B2 (en) | Apparatus and method for vectored machine check bank reporting | |
US20200210186A1 (en) | Apparatus and method for non-spatial store and scatter instructions | |
CN114691598A (zh) | 用于处理器的独立于存储器的和可缩放状态组件初始化 | |
CN111512309A (zh) | 用于抵抗交叉特权线性探查的系统、方法和装置 | |
CN113568663A (zh) | 代码预取指令 | |
BR102022023763A2 (pt) | Aparelho e método para detecção de constante durante operações de compactação | |
CN114676090A (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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070919 Termination date: 20100927 |