CN101189575A - 定序器地址管理 - Google Patents
定序器地址管理 Download PDFInfo
- Publication number
- CN101189575A CN101189575A CNA2006800199875A CN200680019987A CN101189575A CN 101189575 A CN101189575 A CN 101189575A CN A2006800199875 A CNA2006800199875 A CN A2006800199875A CN 200680019987 A CN200680019987 A CN 200680019987A CN 101189575 A CN101189575 A CN 101189575A
- Authority
- CN
- China
- Prior art keywords
- sequencer
- logic
- physics
- thread
- address
- 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 137
- 238000013507 mapping Methods 0.000 claims abstract description 105
- 238000006243 chemical reaction Methods 0.000 claims description 42
- 238000009826 distribution Methods 0.000 claims description 12
- 230000000694 effects Effects 0.000 claims description 9
- 230000005055 memory storage Effects 0.000 claims description 5
- 230000015572 biosynthetic process Effects 0.000 claims description 2
- 230000007246 mechanism Effects 0.000 abstract description 19
- 238000013519 translation Methods 0.000 abstract description 18
- 238000010586 diagram Methods 0.000 description 59
- 230000008447 perception Effects 0.000 description 35
- 238000003860 storage Methods 0.000 description 30
- 230000008569 process Effects 0.000 description 24
- 238000007726 management method Methods 0.000 description 22
- 230000015654 memory Effects 0.000 description 18
- 230000009471 action Effects 0.000 description 17
- 238000000605 extraction Methods 0.000 description 17
- 238000004422 calculation algorithm Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 238000005192 partition Methods 0.000 description 13
- 238000012545 processing Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 12
- 238000012546 transfer Methods 0.000 description 11
- 238000013467 fragmentation Methods 0.000 description 8
- 238000006062 fragmentation reaction Methods 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 6
- 231100000614 poison Toxicity 0.000 description 6
- 230000011218 segmentation Effects 0.000 description 6
- 230000007096 poisonous effect Effects 0.000 description 5
- 230000001133 acceleration Effects 0.000 description 4
- 238000013475 authorization Methods 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- YGYGASJNJTYNOL-CQSZACIVSA-N 3-[(4r)-2,2-dimethyl-1,1-dioxothian-4-yl]-5-(4-fluorophenyl)-1h-indole-7-carboxamide Chemical compound C1CS(=O)(=O)C(C)(C)C[C@@H]1C1=CNC2=C(C(N)=O)C=C(C=3C=CC(F)=CC=3)C=C12 YGYGASJNJTYNOL-CQSZACIVSA-N 0.000 description 3
- 230000032683 aging Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000004321 preservation Methods 0.000 description 3
- 231100000331 toxic Toxicity 0.000 description 3
- 230000002588 toxic effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 2
- 238000004220 aggregation Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003760 hair shine Effects 0.000 description 2
- 238000007689 inspection Methods 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 230000008054 signal transmission Effects 0.000 description 2
- 230000005532 trapping Effects 0.000 description 2
- 208000032826 Ring chromosome 3 syndrome Diseases 0.000 description 1
- 230000033228 biological regulation Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000005520 cutting process Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 238000005265 energy consumption Methods 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000007429 general method Methods 0.000 description 1
- 239000004615 ingredient Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000003801 milling Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000002574 poison Substances 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 239000000725 suspension Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- 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/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30043—LOAD or STORE instructions; Clear instruction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30076—Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
-
- 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, look ahead
-
- 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, look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
-
- 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, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
- G06F9/3889—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
- G06F9/3891—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute organised in groups of units sharing resources, e.g. clusters
-
- 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/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Abstract
所公开的是一种在多定序器多线程系统中用于管理和转换逻辑定序器地址与物理或逻辑定序器之间的映射的系统、方法和机制的实施例。一种映射管理器可以管理逻辑定序器地址或页至系统的实际定序器或帧的分配和映射。与映射管理器关联的配给逻辑可以在执行此类映射时将定序器属性纳入考虑。与映射管理器关联的重定位逻辑可以在重新映射实际定序器时管理上下文信息倒出到后备存储器以及从后备存储器填充上下文信息。可以单独分配定序器,或可以将这些定序器作为分区的块的一部分来分配。映射管理器还可以包括转换逻辑,该转换逻辑在每次用户程序中使用逻辑定序器地址时提供映射的定序器的标识符。还描述了其他实施例并且对这些其他实施例要求权利。
Description
技术领域
本公开一般涉及信息处理系统,更确切地来说涉及多定序器系统中的逻辑定序器地址转换和管理。
背景技术
为了提高信息处理系统(例如包括微处理器的那些系统)的性能,已经采用了多种硬件和软件技术。在硬件方面,改善微处理器性能的微处理器设计方法包括增加的时钟速度、流水线化、分支预测、超标量执行、无序执行和高速缓存。许多此类方法导致了增加的晶体管数,并且甚至在某些情况中导致了晶体管数增加的速率大于改善的性能的速率。
相对于通过附加的晶体管来设法提高性能,其他性能增强方式包括软件技术。已用来改善处理器性能的一种软件方法公知为“多线程”。在软件多线程中,可以将一个指令流分成多个可以并行执行的指令流。或者,可以并行地执行多个独立软件流。
在一种公知为时间片多线程或时分复用(“TMUX”)多线程的方法中,单个处理器在固定的一段时间之后在多个线程之间进行切换。在另一种方法中,单个处理器在发生触发事件(例如长等待时间的高速缓存未命中)时在多线程之间切换。在后一种公知为基于事件切换多线程(“SoEMT”)的方法中,在给定的时间最多仅一个线程是活动的。
多线程越来越多地在硬件中得到支持。例如,在一种方法中,多处理器系统(例如芯片多处理器(“CMP”)系统)中的处理器可以并行地分别对多个软件线程的其中一个操作。在另一种称为同时多线程(“SMT”)的方法中,使单个物理处理器对于操作系统和用户程序看上去像是多个逻辑处理器。对于SMT,多个软件线程可以并行在单个处理器上活动并执行而不进行切换。即,每个逻辑处理器保存一组完整的体系结构状态,但是物理处理器的许多其他资源,例如高速缓存、执行单元、分支预测器、控制逻辑和总线是共享的。因此,对于SMT,来自多个软件线程的指令并行在每个逻辑处理器上执行。
对于支持软件线程的并行执行的系统(例如SMT和/或CMP系统),操作系统应用程序可以控制软件线程在线程执行资源上的调度和执行。对于允许用户经由用户级指令显式地控制软件线程的系统,此类指令可以指示线程执行资源的名称或地址。
附图说明
可以参考如下附图来理解本发明的实施例,附图中相似的编号指示相似的部件。这些附图无意作为限制,而是提供来说明在多定序器系统中用于管理并转换逻辑定序器(sequencer)地址至物理定序器的映射的设备、系统和方法的所选实施例。
图1是图示多定序器系统的多种实施例的框图。
图2是呈示多定序器系统的通用并行编程方法的图形表示的框图。
图3是图示每个定序器具有唯一标识符的多定序器系统的至少一个实施例的框图。
图4是图示多定序器系统的至少一个实施例的框图,该多定序器系统包括用于管理逻辑定序器地址至物理定序器地址的映射的映射管理器。
图5是图示多定序器系统的至少一个实施例的框图,该多定序器系统包括用于管理虚拟化逻辑定序器地址至物理定序器地址的映射的映射管理器。
图6是图示映射结构的至少一个实施例的进一步细节的框图。
图7是图示用于将实际定序器帧映射到虚拟化逻辑定序器地址的示范方案的至少一个实施例的数据流程图。
图8是图示图7所示的样本方案的样本映射结构的内容的框图。
图9是图示用于映射管理器的配给(rationing)逻辑的至少一个实施例的框图。
图10是图示用于将虚拟定序器地址转换至实际定序器标识符的方法的至少一个实施例的数据流程图。
图11是图示转换加速结构的至少一个实施例的样本项的框图。
图12是图示用于定序器配给的方法的至少一个实施例的控制和数据流的流程图。
图13是图示用于处理逻辑定序器地址的页表未命中的方法的至少一个实施例的控制和数据流的流程图。
图14是图示包括异步定序器的多定序器多线程系统(multithreading system)的至少一个实施例的框图。
图15是图示能够执行公开的技术的系统的至少一个实施例的进一步细节的框图。
图16是支持用户级定序器感知(sequencer-aware)操作的多定序器系统的另一个实施例的框图。
具体实施方式
下文论述描述用于管理支持用户级定序器运算的多定序器系统的逻辑定序器地址映射的方法、系统和机制的所选实施例。本文描述的这些机制和方法实施例可以利用单核或多核多线程系统来使用。
在下文描述中,阐述了如定序器分配方法、多线程环境、系统配置、多定序器系统中的定序器的数量和拓扑、微体系结构以及指令名称和参数等的多种特定细节,以便提供对本发明实施例的更透彻理解。然而,本领域技术人员将认识到,本发明也可以在没有这些特定细节的情况下实施。此外,未详细示出一些公知的结构、电路等,以免不必要地妨碍了对本发明的理解。
如本文所使用的,本文可互换地称为“定序器”的线程单元是不同的线程执行资源,并且可以是任何能够执行线程的物理或逻辑单元。它可以包括用于确定给定线程的要执行的下一个指令的下一个指令指针逻辑。定序器可以是逻辑线程单元或物理线程单元。下文结合图1立即论述逻辑与物理线程单元之间的这种区别。
图1是图示支持线程的用户级控制的多定序器系统的实施例110、115、150、170的所选特征的框图。图1图示SMT多定序器多线程系统110的所选特征,其中每个定序器是与在其他逻辑处理器上执行其他线程并行地执行线程的逻辑处理器。图1还图示通过基于事件切换(SoeMT)机制支持多个逻辑定序器的多定序器系统115的至少一个实施例,该系统通过例如时分复用类型的切换机制的基于事件切换(SoeMT)机制来支持多个逻辑定序器,使得每个逻辑处理器轮流运行它的线程-在这种系统115上一次仅一个线程执行。
图1还图示多核多线程系统150、170的所选特征。多核多线程系统的物理核可以是单定序器核(例如,参见系统150)或可以是多定序器核(例如参见系统170)。下文稍后论述此类多核多线程实施例,而下面立即论述单核多定序器系统110、115。
在SMT系统110中,使单个物理处理器104看上去像是多线程上下文,本文称为TC1至TCn(未示出)。N个线程上下文的每个线程上下文实际是一个定序器。当使这些线程上下文的至少一些(例如n个中的m个)对于操作系统和/或用户程序可见时,这些线程上下文有时称为逻辑处理器(未示出),本文中称为LP1至LPm。每个线程上下文TC1至TCn分别保存一组体系结构状态AS1-ASn。对于至少一个实施例,体系结构状态包括数据寄存器、段寄存器、控制寄存器、调试寄存器和大多数的型号专用寄存器。线程上下文TC1-TCn共享物理处理器104的大多数其他资源,例如高速缓存、执行单元、分支预测器、控制逻辑和总线。
虽然此类特征可以被共享,但是多线程系统110中的每个线程上下文可以独立地生成下一个指令地址(并执行例如从指令高速缓存、执行指令高速缓存或跟踪高速缓存提取)。因此,处理器104包括逻辑上独立的下一个指令指针和用于提取每个线程上下文的指令的提取逻辑120,即使多个逻辑定序器可以在单个物理提取/解码单元122中实现。对于SMT实施例,术语“定序器”涵盖用于线程上下文的至少下一个指令指针和提取逻辑120,以及用于该线程上下文的相关体系结构状态AS的至少一些。应该注意SMT系统110的定序器无需是对称的。例如,相同物理处理器的两个SMT定序器可以在它们各自保存的体系结构状态信息的数量上有所不同。
因此,对于至少一个实施例,多定序器系统110是支持并行多线程的单核处理器104。对于此实施例,每个定序器是具有其自己的指令下一个指令指针和提取逻辑以及其自己的体系结构状态信息的逻辑处理器,尽管同一个物理处理器核104执行所有线程指令。对于此实施例,逻辑处理器保存其自己版本的体系结构状态,尽管可以在并行执行的线程之间共享单个处理器核104的执行资源。
图1还图示能够执行多线程化的代码的多定序器系统115的备选实施例。实施例115标记为基于事件切换多线程(“SOEMT”)实施例。对于此实施例115,每个定序器与前一个实施例110的定序器相似,因为每个定序器是具有其体系结构状态信息和自己的指令下一个指令指针的逻辑处理器。但是,系统115与上面论述的110不同,因为这些定序器均与其他定序器共享物理处理器核104中的单个提取/解码单元122中的相同物理提取逻辑120。可以基于多种的基于事件切换策略来切换提取逻辑120从而为系统115的不同定序器进行提取。基于事件切换的触发可以是特定时间量或机器周期的通过,例如时分复用(TMUX)。对于其他实施例,SOEMT触发可以是其他事件,例如高速缓存未命中事件、页故障、长等待时间指令等。
图1还图示多核多线程系统150、170的至少两个实施例。对于图1图示的多核系统150、170的至少一些实施例,系统可以使用作为构件的处理器104。每个定序器可以是分别具有驻留在单个芯片封装160、180中的多个核1041-104n、1041-104m的处理器核104。对于图1所示的系统150,每个核104i(i=0至n)可以是单线程化的定序器。对于图1所示的系统170,每个核104j(j=1至m)可以是多定序器处理器核。
图1中以虚线表示芯片封装160、180,以指示多核系统150、170的所示单芯片实施例仅仅是说明性的。对于其他实施例,多核系统的处理器核可以驻留在单独的芯片中,或可以作为SOEMT多定序器系统来组织。
图1所示的第一多核多线程系统150可以包括两个或两个以上单独的物理处理器1041-104n,这些处理器能够执行不同的线程,使得这些不同的线程的至少一部分的执行可以同时进行。每个处理器1041至104n包括用于提取其相应的线程的指令信息的物理上独立的提取单元122。在每个处理器1041-104n执行单个线程的实施例中,提取/解码单元122实现单个下一个指令指针和提取逻辑120。
图1还图示包括多个SMT系统110的多核多线程系统170。对于这种实施例170,每个处理器1041-104m支持多个线程上下文。例如,每个处理器1041-104m是支持k个定序器使得系统170实际实现m*k个定序器的SMT处理器。此外,系统170的提取/解码单元122为每个支持的线程上下文实现不同的下一个指令指针和提取逻辑120。
为了易于说明,下文论述着重于多核系统150的实施例。但是,这种着重论述不应被视为限制,因为下文描述的机制在多核或单核多定序器系统中都可以执行。还可以利用单定序器核或多定序器核实现单核或多核系统。对于每个多定序器核,可以利用一种或多种多线程技术,包括SMT和/或SoeMT。将理解图1所示的系统110、115、150、170可以包括附加特征,例如图1未示出的存储器系统、执行单元等。
可以将图1所示的系统实施例110、115、150、170的每个定序器104与唯一的标识符关联(下文结合图3对此进行论述)。系统110、150的多种实施例可以包括不同数量N的总定序器。
图1所示的系统110、115、150、170的实施例均可以支持定序器之间的信号传送。如本文所使用的,术语“定序器运算”用于指用于两个定序器之间的服务的定序器间信号传送。定序器运算的体系结构支持可以包括对指令集体系结构的扩充,以便提供一个或多个指令来允许用户指示定序器之间的控制和状态传输的操纵。如果用户级指令是包含作为参数的逻辑定序器地址的定序器运算指令或任何其他类型的指令,则称其为“定序器感知”,其中可以将参数编码成指令运算数和/或在指令执行时隐含地引用它。此类指令可以包括支持向另一个定序器传送信号(本文称为“SXFR”或纤程传输指令)或支持建立客户端定序器以监视此类信号(本文称为纤程监视器“SEMONITOR”指令)的定序器运算指令。
定序器感知指令还可以包括包含作为参数的逻辑定序器地址的其他指令(例如定序器感知状态保存和恢复指令)。在执行这种状态保存指令时,第一定序器可以创建第二定序器的体系结构状态的快照副本。定序器感知恢复指令可以指定将保存体系结构状态加载到指定的定序器。
每个定序器感知指令还可以可选地包含作为参数的多于一个逻辑定序器地址。例如,定序器感知指令可以包含作为参数的多个逻辑定序器地址的集合。可以利用这种方法来将定序器间信号从一个定序器组播或广播到多个其他定序器。为了简化下文论述,除非另行指出,否则下文提出的示例可以指单播情况:第一定序器执行指定单个其他逻辑定序器地址的定序器感知指令。这种方法是为了描述方便和仅说明目的而提出的,而不应视为限制。本领域技术人员将认识到也可以将本文论述的机制的实施例应用于广播和组播定序器感知指令。
为了描述方便,下文论述中可能使用SXFR作为说明性定序器间信号传送指令的指令术语。相似地,为了描述方便且无限制,分别使用SSAVE、SRSTOR作为定序器感知体系结构状态保存指令和定序器感知体系结构状态恢复指令的指令术语。本领域技术人员将认识到可以在不背离所附权利要求的范围的前提下利用信号传送指令的许多其他变型和术语以及上下文保存指令和上下文恢复指令和其他定序器感知指令。
因此,对于本文描述的方法、机制和系统的实施例,定序器运算操作的体系结构的用户可见特征至少是一组允许用户产生用于定序器之间的服务的信号的规范指令。这种信号传送可由指令触发,该指令包含对其执行后续控制转移的定序器104的名称或逻辑地址(作为参数)。如本文使用的,将用于生成用户级线程控制转移的信号的定序器称为源定序器,本文将所生成的信号的接收方称为目的地定序器。
现在简要地参考图2以便论述一些基本概念,这些基本概念可由本文论述的至少一些实施例结合。图2是图示多定序器多线程系统上的并行程序设计方法的图形表示的框图。
可以在称为并行程序设计的方法中使用shared-存储器多处理范型(multiprocessing paradigm)。根据该方法,应用程序程序设计员可以将有时称为“应用程序”或“进程”的软件程序拆分成要并行运行的多个任务,以便表现软件程序的并行性。相同软件程序的所有线程(“进程”)共享存储器地址空间的共用逻辑视图。
图2图示对于操作系统240可见的进程200、220。这些进程200、220可以是不同的软件应用程序,例如字处理程序和电子邮件管理程序。通常,每个进程在不同的地址空间中工作。
操作系统(“OS”)240通常负责为进程(例如图2中所示的进程220)管理用户创建的任务。因此,操作系统240可以为与进程220关联的每个用户定义的任务创建不同的线程225、226,并可以将线程225、226映射到线程执行资源。
因此,图2图示与进程220关联且与进程220共享相同的虚拟存储器地址空间的用户线程225、226。因此图2所示的进程220的线程225、226表示不同的用户定义的任务。本文有时将此类线程称为“OS线程”,以表示它们是由OS 240创建、管理和调度的。或者,还可以可互换地将此类线程称为“用户线程”或“用户任务”以指表示一个用户任务的OS管理的线程的概念。
可以由OS 240创建、管理和调度用户线程225、226。就用户线程225、226的调度而言,OS 240可以包括调度用于执行的线程225、226并将每个线程225、226映射到一个或多个逻辑定序器地址的调度器。因此,图2图示一种传统线程化方案,其中操作系统240负责将每个用户线程225、226映射到单个逻辑定序器地址。通常,逻辑定序器地址对应于可以例如包括一个不同的下一个指令指针的单个定序器。
但是,图2还图示多线程的较新方法。图2图示可以将例如图2所示的线程225的单个OS线程与不能由操作系统240创建、调度或以其它方式管理的多个用户级线程280和282关联。可以将此类线程称为“纤程(shred)”,以便将它们与OS线程相区分。
纤程280、282可能对于OS 240的调度器不可见,因此OS 240常常不管理关联的OS线程(例如与纤程280和282关联的OS线程225)何时或如何调度纤程在分配的逻辑定序器地址上运行。OS线程225本身常常负责调度何时和如何运行它的纤程280、282的其中之一。虽然图2中图示两个此类纤程280、282,但是可以将任何数量的此类纤程与单个OS线程关联。
对于至少一个实施例,程序设计员可以将一个或多个定序器感知指令编码成属于OS线程的纤程。此类指令在OS线程的操作期间被执行时可以在无需OS 240调度逻辑的介入情况下,促使纤程的创建、控制转移、定序器运算、上下文保存、上下文恢复或其他操作。
图3是图示多线程系统300的至少一个实施例的框图,该多线程系统300包括本文称为“定序器”的多个线程执行资源320、322、324、326。定序器320、322、324、326可以是任何类型的线程执行资源,包括例如单定序器核、SMT逻辑处理器(例如上文结合图1对TC1-TCn的论述)或SOEMT核(例如参见图1的115)等。所有此类实例表示支持一个或多个线程的执行的硬件特征。同样地,本文将包括SMT逻辑处理器的任何此类线程执行资源称为“物理定序器”。
图3图示四个物理定序器320、322、324、326。这些定序器320、322、324、326的每一个与一个唯一的定序器标识符(SEQ0、SEQ1、SEQ2、SEQ3)关联。本领域技术人员将认识到图3图示四个物理定序器320-326仅出于举例的目的,而不应视为限制。利用本文描述的技术的系统包括能够并行执行指令的任何数量的物理定序器。
图3还图示来自用户程序340的一个或多个指令345支持用户级定序器感知操作。定序器感知指令345包含用于标识定序器的逻辑定序器地址,例如L_Seq0、L_Seq1、L_Seq2和L_Seq3。对于下文论述的余下部分,可以互换地使用术语“逻辑定序器地址”和“虚拟定序器地址”。
对于至少一个实施例,假定用户程序340的指令345由OS管理的线程来管理。因此本文可以可互换地将程序340称为线程。响应此指令345(即当执行指令345时),映射管理器302可以执行查询以确定指令345中指定的逻辑定序器地址标识哪个物理定序器320-326。对于映射管理器302的至少一个实施例,该查询可以在硬件或固件中实现或通过硬件或固件来协助实现该查询,或通过以适合的特权级将故障处理到软件处理程序来实现该查询。
图3图示系统300的实施例,该系统提供逻辑定序器地址的稍微简单的虚拟化。即,对于应用程序程序设计员可用的多个逻辑定序器地址静态地绑定到有限数量的物理定序器320-326。因此图3图示物理定序器与应用程序中可以利用的逻辑定序器地址之间1:1的映射。
因此映射管理器302可以管理物理定序器320-326与一个或多个线程340使用的逻辑定序器地址之间的映射。对于至少一个实施例,映射管理器302是操作系统程序或其他软件应用程序。对于此实施例,映射管理器320可以在操作的特权级处理映射。例如,可以将实际定序器与逻辑定序器地址之间的映射的管理作为特权操作由OS内核或驱动程序来处理。
但是,映射管理器320的备选实施例可以在多种抽象级上管理映射。例如,映射管理器302可以是由硬件和/或固件且由微体系结构级重命名支持的体系结构查询表,例如对于至少一个其他实施例,映射管理器302可以是虚拟机或管理程序中的虚拟化管理软件机制。或者对于至少一个其他实施例,映射管理器302可以是将映射管理器功能作为用户线程(例如225)或进程(例如220)的一部分来执行的用户级非特权软件代码。
现在参考图16,图16是图示支持用户级定序器感知操作的多定序器系统1600的另一个实施例的某些体系结构特征的框图。图16还图示系统1600包括定序器1620、1640。图16图示的定序器的数量和类型不应视为限制。虽然图示了仅两种类型的定序器1620、1640,但是系统1600的备选实施例可以包括附加类型的定序器。此外,对于系统1600的备选实施例的每种定序器类型的数量的上下限来说,图16所示的定序器的每种类型1620、1640的数量不应视为限制。采用较少和较多数量的每种定序器类型1620、1640均可。
图16图示该系统包括(1+s)*t个定序器。虽然图16图示总计第一定序器类型t(1620)与第二定序器类型s(1640)之间t至(s*t)的绑定关系,其中t=4,s=3,这种图示不应视为限制。对于备选实施例,t和s可以更改为使t>0和s≥0的任何数量。
图16中标记为“T”且本文中称为“T-定序器”的第一定序器类型1620可以直接由OS来管理,OS可以调度要在T-定序器上运行的OS线程。图16中标记为“S”且在本文中称为“S-定序器”的第二定序器类型1640不直接由OS管理。S-定序器1640而是可以直接由线程中的用户代码管理-它可以直接由要运行与线程关联的纤程的线程来调度。
在体系结构上,每个OS管理的线程可以对应于1个不同的多定序器集合体1650(本文称为“元处理器”)。每个元处理器1650可以包括1个逻辑T定序器1620和s个逻辑S定序器。图16示出t个元处理器,其中t=4。每个图示的元处理器包括s个S定序器,其中s=3。因此,每个元处理器1650包括总计s+1个定序器(即s个S-定序器加1个T-定序器)。OS可以负责将线程调度到元处理器1650,并且该线程还可以调度并在该元处理器的(1+s)个定序器上同步地运行它的多个纤程。图1 6不应视为限制系统的元处理器1650的数量,也不应视为限制与每个元处理器1650关联的S定序器1640的数量。图1 6中示出t和s的特定值仅出于图示的目的。
对于向用户级定序器感知操作(例如图3所示的实施例300和图1 6所示的实施例1600)提供支持的多定序器系统,定序器实际上是一种不同形式的体系结构资源。与寄存器资源、存储器资源和其他公知的常见体系结构资源一样,定序器资源可以具有不同的体系结构命名空间,并且可以接受虚拟化管理。
在体系结构上,定序器资源可以包括但不限于至少三个组成部分:引用名、定序器状态上下文和能力描述符。能力描述符可以包括例如调度约束和要求的有关定序器的属性信息,以及例如它是T-定序器还是S-定序器的其他相关特性。在体系结构上,对于(1+s)个定序器的元处理器1650中任何两个定序器,相应的定序器资源在引用名上是不同的,并且它们还可能在上下文组成和/或能力描述符信息方面是不同的。例如,一个定序器的体系结构状态集不同于另一个定序器的体系结构状态集。
对于给定元处理器1650,可以为所有(1+s)个逻辑定序器定义上述的定序器感知指令(例如SXFR、SSAVE和SRTOR)。即,在指令执行期间,该指令可以具有编码为运算数的一个或多个逻辑定序器地址或能以其他方式设置对一个或多个逻辑定序器地址的引用。
在体系结构上,元处理器1650中1个T-定序器1620和s个S-定序器1640的无缝静态绑定仅是逻辑的(或有时等效地称为“虚拟的”)。即,可以静态地确定给定元处理器中的逻辑定序器地址,该地址的范围可以是例如从0到s。但是,出于论述备选实施例的目的,注意图16图示系统1600具有包括K个物理定序器Seq 0-Seq k的执行资源1680。可以将执行资源1680的定序器均耦合到关联的高速缓存分层结构。虽然图16分别图示了,但是本领域技术人员将认识到定序器Seq 0-Seq k的高速缓存层次结构1692可以包括芯片上高速缓存以及芯片外高速缓存或取代芯片内高速缓存而包括芯片外高速缓存。图16图示定序器Seq 0-Seq k中的每一个还可以具有对所有定序器共享的共享存储器的访问权。
在K>0以及更常见的是K≥t的情况下,可以在运行时期间动态地更改(1+s)*t个逻辑定序器至K个物理定序器之间的映射。因此,对于此类实施例,可以在运行时期间动态地更改对应于一个或多个元处理器1650的一个或多个逻辑T-定序器1620和关联的一个或多个其他S-定序器1640的物理定序器的确切分组。
还可以将逻辑定序器地址至物理定序器的动态映射称为“虚拟化”。逻辑定序器地址的虚拟化是一种使可能需要多个定序器才能执行的线程能够通过动态物理定序器分配来执行的技术。逻辑定序器地址的虚拟化是指将逻辑定序器地址(线程见到的)与物理定序器标识符(物理多定序器处理器实现见到的物理定序器)分离的抽象。因为这种分离,应用程序设计员只需要知道逻辑定序器地址。
与上文结合图3论述的实施例300一样,图16所示的系统1600的定序器感知指令可以指定目的地定序器的逻辑定序器地址。但是,对于系统1600的至少一个实施例,将逻辑定序器地址动态地映射到物理定序器而非静态地映射到物理定序器。可以通过映射管理器1670来管理逻辑定序器地址至物理定序器的动态映射。对于至少一个实施例,映射管理器1670可以与上文结合图3论述的映射管理器302一致。在执行期间,逻辑定序器地址的映射可以(或可以不)从一个物理定序器更改到另一个物理定序器。
除了管理逻辑定序器地址至物理定序器的动态映射外,映射管理器1670还可以管理系统1600的定序器资源的多种不同方面。此外,映射管理器1670还可以管理元处理器1650中的T-定序器1640与一个或多个S-定序器1640之间的绑定。此外,映射管理器还可以管理定序器状态上下文和定序器能力描述符。
对于支持定序器感知指令的多定序器系统,可以独立于给定系统提供的物理定序器的数量而在体系结构上定义逻辑定序器地址空间的大小(即,可以在定序器感知指令中使用的不同逻辑定序器地址的总数)。例如,可以使用32位值表示逻辑定序器地址,而不管是否可以使用较少的位数来表示多定序器系统的定序器的实际数量。对于此类示范实施例,可以使用k位,其中k=32来表示最多2=2个逻辑定序器地址,而不管系统包括多少个物理定序器。
在描述例如图16所公开的1600的多定序器系统体系结构时,作为便利的方式使用“k-位定序器可寻址性”的概念来表示一个元处理器(例如图16的1650)上一个线程(例如图2中的225或226)可以引用总数为2k个逻辑定序器地址,其中该一个元处理器包括一个T定序器和(2k-1)个S-定序器。相反,可以将(1+s)个定序器1620、1640的元处理器1650称为具有log(1+s)位可寻址定序器空间。因此,图16图示一种多定序器系统1600,其中称每个元处理器1650具有2位可寻址逻辑定序器地址空间。
图4和图5图示多线程多定序器系统的至少两个相应备选实施例400、500,这些多线程多定序器系统支持用户级定序器感知指令中使用的物理定序器至逻辑定序器地址的动态映射。图4和图5中相似的部件具有相似的引用编号。
对于支持逻辑到物理定序器的动态映射的系统400、500,应用程序设计员无需知道执行期间何时以及哪些物理定序器将可用于运行它们的应用程序。他们只需使用他们的应用程序中的逻辑定序器地址。如上所解释的,可能期望允许多定序器系统400、500的程序视图包括实际超出系统400、500的物理定序器420-426的数量(N)的多个(M)逻辑定序器地址(“Virt.0”-“Virt.M”)。对于此类实施例,映射管理器402、502可以负责将M个逻辑定序器地址映射到N个物理定序器标识符,其中M>N。对于其他实施例,M=N或M<N,并且映射管理器402、502可以执行与上文针对图3所示的实施例描述的映射相似或潜在地更简单的映射。
由映射管理器402、502以对应用程序透明的方式“在后台”处理逻辑定序器地址至物理定序器的动态映射。如结合图4和图5使用的,“物理定序器”是给定物理多定序器硬件系统中实现的实际定序器(例如参见420-426)。
图4和图5图示系统400、500可以包括耦合到执行资源490的存储媒介460。存储媒介460可以是具有多级的分层结构的存储器子系统,其中多级的分层结构可以包括但不限于多级高速缓存存储器、微代码或例如只读存储器(“ROM”)的固件存储装置、例如动态随机访问存储器等的系统存储器、例如闪速存储器(例如存储棒等)的非易失性存储器、磁盘或光盘。如图所示,存储媒介460可以存储应用程序440和映射管理器402、502。
映射管理器402、502主要可以负责定序器虚拟化管理任务。如上文解释的,映射管理器402、502不一定如图4和图5中所示的那些实施例中的情况为存储在存储媒介460中的软件程序。对于其他实施例,映射管理器402、502可以存在于任何多种硬件和软件抽象级中。此类抽象的范围可以是从微体系结构级、虚拟机或管理程序体系结构级、0S内核或驱动程序级到非特权用户代码级。
因此映射管理器402、502可以执行多种虚拟化任务。映射管理器420、520可以包括映射机制以及调度机制。映射机制可以包括配给逻辑485和转换逻辑486。调度机制可以包括调度逻辑487。
转换逻辑486可以尝试为引用逻辑定序器地址的每个定序器感知指令提供地址转换。对于提供逻辑定序器地址到物理定序器的动态映射的系统400、500,可以由转换逻辑486为每个定序器感知指令对逻辑定序器地址的引用执行逻辑定序器地址(应用程序440使用的)到物理定序器标识符的转换。
图5图示映射管理器502的备选实施例,该映射管理器502可以利用映射结构580来保存映射信息并执行逻辑定序器地址到物理定序器标识符的转换。对于至少一个实施例,映射结构580可以驻留在存储媒介460中。通常,对于包括作为运算数的逻辑定序器地址或以其他方式引用逻辑定序器地址的任何指令,由映射管理器520通过映射结构580中的查询来转换逻辑定序器地址。对于至少一个实施例,可以使用操作系统的系统级支持来执行此转换查询。对于至少一个备选实施例,可以通过线程级的应用程序专用虚拟化来执行转换查询。对于另一个备选实施例,可以由虚拟机监视器或管理程序来执行转换查询。
图5还图示转换逻辑486可以利用可选的机制来加速逻辑定序器地址至物理定序器标识符的转换。图5图示系统的执行资源490还可以包括用于协助这种加速的可选转换加速结构518。对于至少一个实施例,转换加速结构518可以作为高速缓存或缓冲器来工作以保存映射结构580的项的子集。对转换加速结构518使用虚线是要表示这种结构518的可选特性。
如果在执行查询之后转换逻辑486无法找到物理定序器或无法找到逻辑定序器地址的映射信息,则可以触发故障。因此在逻辑定序器地址转换未命中(本文称为“LSAT未命中”)时发生这种故障。LSAT未命中故障可以触发至处理程序(例如配给逻辑485)的控制转移,以便为导致该故障的逻辑定序器地址分配物理定序器。
关于这些故障,可以利用故障语义在体系结构上定义定序器感知指令(例如SXFR、SSAVE、SRTOR等),以便在查询无法找到逻辑定序器地址的映射消息之后转换逻辑486无法找到物理定序器的情况下生成故障状况。响应该故障,可以将控制转移到故障处理程序(例如配给逻辑485)。换言之,可以在转换逻辑486和/或映射结构580在逻辑至物理定序器转换查询中失败时产生LSAT故障状况。
对于映射管理器402、502的多种实施例,可以采用不同方式来处理LSAT未命中故障。对于映射管理器402、502是直接以硬件实现的至少一个实施例,映射管理器402、502可以作为处理故障状况的硬件状态机来实现。
对于另一个实施例,LSAT未命中触发的故障可以是微体系结构故障状况,该故障状况由微代码流在微体系结构级处理。微代码流可以是存储在例如存储媒介460的ROM部分的微代码存储装置中的微指令序列。对于至少一个实施例,LSAT未命中故障状况可能导致微代码控制转移,从而跳到实现映射管理器402、502的配给逻辑486的专用微代码流。
对于再一个实施例,可以为虚拟机的体系结构特权级定义LSAT未命中触发的故障状况。该故障状况触发至虚拟机监视器或管理程序的控制转移。对于此实施例,访客软件(例如访客操作系统)上的LSAT未命中故障状况可以触发至主机虚拟机监视器或管理程序的控制转移(例如“VMEXIT”)。虚拟机监视器或管理程序可以实现映射管理器402、502,然后映射管理器402、502来处理故障。
对于再一个实施例,与存储器页故障相似,在操作系统的体系结构特权级(例如IA32体系结构中的ring-0特权级)定义LSAT故障。对于至少一个实施例,LSAT未命中因此可以触发系统级故障。图4和图5图示了此实施例。对于此实施例,定序器地址转换故障可以导致至OS内核或设备驱动程序中的系统级的映射管理器402、502软件处理程序的控制转移。有时在一些体系结构中还可以可互换地将系统特权级称为管理程序特权级。这种系统级LSAT未命中故障可以类似于例如在加载指令的页未命中时触发的存储器页故障。响应系统级LSAT故障状况,可以调用可以是操作系统或设备驱动程序处理程序的映射管理器402、502来处理该故障。
对于再一个实施例,可以在与用户级或非管理程序级代码关联的体系结构特权级(例如IA32体系结构中的ring-3特权级)定义LSAT故障状况。例如,可以将故障状况定义为用户级故障类似类型的“产品事件(yield event)”,当该事件发生时,可以触发控制向实现映射管理器402、502的配给逻辑486的用户级处理程序代码的转移。对于此实施例,可以通过包含故障发生定序器感知指令的相同用户程序来处理LSAT未命中故障状况。
对于上文论述的一个或多个实施例,可以采用同步或异步方式处理定序器感知指令的执行期间逻辑定序器地址转换未命中(本文中称为“LSAT未命中”)时发生的故障。对于异步方法,定序器未命中可以触发故障状况(如上所述),并且可以服务于定序器未命中,使得该故障作为触发向映射管理器420、520转移控制的异步事件,更确切来说对于至少一个实施例,触发控制向包括配给逻辑485的处理程序代码的转移。故障处理是事件驱动的(LSAT未命中时发生),以及对应的至故障处理程序的控制转移本质上是异步的。
但是,对于至少一个备选实施例,体系结构可以定义定序器感知指令的非故障变化。LSAT未命中,而不是产生导致至处理程序的异步控制转移的故障,可以被记录以进行后来的同步处理。可以通过例如设置“有毒位(poison bit)”或其他未命中指示符来记录该未命中。在这种情况中,可以在执行期间后来通过软件检查未命中指示符。如果检测未命中指示符为设置,则可以在此时处理该未命中。以此方式,能以同步方式处理未命中指示符中指示的故障状况。
对于此实施例,如果非故障定序器感知指令的执行引起LSAT未命中,则该指令不生成体系结构故障。而是可以记录该未命中以供后来处理,并且指令完成执行。对于此实施例,可以采用与设置状况位相似的方式作为体系结构状态的一部分来记录未命中。可以将设为记录LSAT转换未命中的体系结构状态的一个或多个位称为“有毒”状态。对于至少一个实施例,表示“有毒”状态的体系结构状态可能是多于1位的。对于此类至少一些实施例,除了是否发生LSAT未命中外,还可以利用多位状态对附加信息编码,例如指示LSAT故障状况的潜在原因的特定诊断信息或提示和/或有关导致故障状况的定序器指令的一些信息。
对于非故障实施例,在非故障定序器感知指令的退出(retirement)完成之后,软件可以检查有毒状态。如果记录了转换未命中,则软件可以执行向处理程序的同步控制转移,然后该处理程序可以处理转换未命中故障。对于至少一个实施例,定序器感知指令的非故障变化的行为在某种程度上类似于可从英特尔公司获得的Itanium和Itanium2微处理器的体系结构中的LD.S和CHK.S的使用模型,其中LD.S指令可以探测存储器页故障,即使在发生虚拟存储器转换中的故障时仍不会导致页故障。相反,LD.S完成指令执行,但是设置有毒位(称为NAT位)。可以在用户应用程序软件中后来由CHK.S指令检查有毒位,这可以导致向用户级处理程序的控制转移。
总之,对于许多不同实施例,当转换逻辑486无法找到物理定序器或无法找到定序器感知指令中指定的逻辑定序器地址的映射信息(本文称为“LSAT未命中”)时,故障行为可以是触发向故障处理程序的控制转移的异步体系结构事件,或者可以导致记录有毒状态,该有毒状态可以同步地被软件检查到。可以在不同实施例中为不同的特权级(例如虚拟机监视器和管理程序级、系统特权级和用户级)来定义此类故障行为。
对于图4实施例400和图5实施例500,除了转换外,映射管理器402、502还可以执行映射管理。对于至少一个实施例,可以由配给逻辑485执行映射管理的至少一部分。例如当遇到LSAT未命中时,可以调用配给逻辑485。配给逻辑485可以将物理定序器映射到定序器感知指令中指定的逻辑定序器地址。本文将映射到物理定序器的逻辑定序器称为“活动的逻辑定序器”,又可以将对应的物理定序器称为“脏物理定序器”。可以将未映射到逻辑定序器的物理定序器称为“可用”或“闲置”或“空闲”。
对于至少一个实施例,配给逻辑可以从对应的脏物理定序器将活动的逻辑定序器的上下文腾空到后备存储器(下文将结合图7对此详细阐述),然后将作为结果的可用物理定序器赋予其访问刚刚发生LSAT未命中的逻辑定序器。例如,当没有附加的物理定序器是闲置的且可用于映射时,可以由配给逻辑485来执行此类上下文交换动作。
即,执行资源490包括有限数量N的物理定序器420-426,映射管理器402、502可以在这些物理定序器420-426上映射和调度M个逻辑定序器用于执行。逻辑定序器上活动的用户线程(例如图2中的225)调度的每个活动的纤程(例如,图2中的280和/或282)需要将在其上运行的物理定序器。因此,映射管理器402、502可以管理物理定序器至逻辑定序器的分配和映射,以便在执行调度到这些逻辑定序器的纤程时向前推进。
在执行上文描述的映射和分配功能时,映射管理器402、502的配给逻辑485可以将物理定序器(420-426)分配给逻辑定序器地址。配给逻辑485通过如下操作努力地将定序器利用最大化:1)再划分定序器以容纳来自相同线程的多个纤程以及来自多个进程的多个线程,以及2)有效率地分配定序器,以便将尽可能多的频繁被引用的逻辑定序器的工作集映射到物理定序器。配给逻辑485可以使用多种方法的任何一种来管理虚拟至物理定序器映射。此类方法可以包括基址和边界(base and bounds)、分段、分页等。此列表无意作为穷举,而是说明性的列举。
基址和边界
图4图示的映射管理器402可以支持基址和边界方法来管理虚拟至物理定序器映射。对于此实施例,映射管理器402采用静态分区方法,该方法为每个线程(或等效地为每个元处理器)指定物理定序器的静态分区。映射管理器402可以利用硬件映射结构415来执行该映射。
对于至少一个实施例,映射结构415包括至少两个寄存器:基址寄存器416和边界寄存器417。基址寄存器416可以保存线程的基址定序器标识符值。边界寄存器417可以保存该线程的最大定序器标识符值。边界寄存器值表示该线程可以访问的最高有效虚拟定序器地址。基址寄存器416和边界寄存器417一起定义了线程的物理定序器的范围。可以在加载或交换线程时由映射管理器402加载基址寄存器416和边界寄存器417的值。
依据基址和边界方法,线程仅可以访问它的基址寄存器416和边界寄存器417的值指示的物理定序器标识符的范围中的那些物理定序器。
范围检查可以基于对线程中逻辑定序器地址的每个引用来执行。对于对逻辑定序器地址的每个线程引用,线程具有它对从0到边界寄存器417中的值的逻辑地址范围具有访问权的错觉。但是,线程在物理上对如下范围中的物理定序器具有访问权:基址寄存器416中的值表示的下限到基址寄存器416中的值加边界寄存器417中的值的和计算的上限。将定序器地址与边界寄存器417中的上限值比较。如果地址不在该上下限内,则可以对映射管理器402生成转换故障。
分段
映射管理器402可支持的一种备选动态逻辑定序器地址管理方法可以将基址和边界方法与分段方法结合。对于此实施例,执行资源490可以对应于每个“段”包括一组基址寄存器416和边界寄存器417。因此,x个段的映射结构415可以将x个基址寄存器416和x个关联的边界寄存器417结合,其中每个寄存器对416、417与一个“段”关联。
“段”是逻辑定序器地址的逻辑聚集块。逻辑定序器地址的每个聚集块被称为段,并可以将其与它自己的基址寄存器416和边界寄存器417关联。在一些实施例中,基址寄存器416被称为段基址寄存器,边界寄存器417被称为段边界寄存器。在至少一些实施例中,使用段来将物理定序器分成不同的组,每个组具有特殊的能力特征,例如功率性能特征(例如一个段中的定序器可能比另一个段中的定序器快或慢)或定序器类型(例如一个段中的定序器可能作为T-定序器被映射,另一个段中的定序器可能作为S-定序器被映射)。
基于分页的逻辑定序器地址管理
图5图示映射管理器520的实施例,该映射管理器520采用基于分页的方法来管理逻辑定序器地址的动态映射。
图5图示可以将物理定序器420-426组织为大小均匀的小分区,称为“帧”510。虽然图5中仅图示了两个帧510,但是此图示不应被视为限制。映射管理器502可以管理任何数量的帧的虚拟至物理映射。此外,这些帧可以包括任何数量的定序器。
映射管理器502可以实施基于分页的方法,其中还可以将动态映射的逻辑定序器地址的逻辑定序器地址空间划分成多个等大小的分区,称为“页”。页中的逻辑定序器的数量与帧的逻辑定序器的数量相同。因此,逻辑定序器地址空间实际是给定帧大小的逻辑定序器页的集合。
小的页可能潜在地增加页表的大小,而大的页可能潜在地导致内部碎片的相对较高实例。配给逻辑486可以分配物理定序器,并以页级粒度映射逻辑定序器。对于图5所示的示范实施例,每个帧具有两个物理定序器。
对基于页的逻辑定序器地址空间的体系结构支持可以包括用于存储指向页表的指针的寄存器525或其他结构。对于至少一个实施例,预想将页表保存在存储媒介460(例如存储器)的映射结构580中。对于至少一个实施例,还假定将加载指针寄存器525中的值以指示页表的存储器基地址或位置。对基于页的逻辑定序器地址空间的体系结构支持还可以包括用于保存页表大小的值的寄存器526或其他结构。
可以使用分页机制来将物理定序器420-426分成与定序器分配的基本单元相等大小或不相等大小的固定大小的分区。对于定序器的相等大小的固定分区,可以将每个分区分配给一个线程。此方法可能导致内部碎片,因为并不是所有线程都需要访问相同数量的定序器。但是此方法的好处在于,映射管理器402、502的配给逻辑485采用的布置算法可以更灵活,因为所有分区都是等大小的,所以将线程实际分配给哪个特定可用分区不是问题。
为分页机制使用相等大小的分区使得使用简单的位图就能够将小的逻辑定序器工作集从大且空闲的逻辑定序器地址集映射到小的物理定序器集。在分段方法中实现不了这种好处,其中段表示连续编号的物理定序器集。在分段方法中,映射管理器402、502无法将少量不相交子集的逻辑定序器地址映射到物理定序器。
或者,可以由映射管理器402、502分配大小变化的固定集合的页。对于此方法,可以为线程分配对于该线程足够大的最小可用分区。因为配给逻辑485可以将较小分区分配给需要较小定序器块的那些线程,所以内部碎片少于采用相等大小的固定分区方法的情况。即,将每个线程分配到该线程将在其中适合的最小可用分区。该方法可能潜在地导致外部碎片。即,在即使可用物理定序器420-426的总和对于线程的物理定序器需求是足够的,但是没有用于该线程的足够大的物理定序器的单个分区可用时,可能产生外部碎片。因此,配给逻辑485在可变长度的固定分区的布置算法中灵活性不如采用相等大小的分区。
或者,映射管理器402、502可以支持定序器分区可以是可变大小的且可以动态地生成定序器分区的分区方法。对于此方法,配给逻辑485可以为每个线程精确地分配适合数量的定序器。对于可为线程采用多于一个定序器的系统,动态定序器分配和取消分配可能导致外部碎片。为了避免这种外部碎片,采用动态定序器分区方法的系统的映射管理器402-502可以实现紧缩。这种紧缩具有相对较高的相关开销,因为它涉及一个或多个线程的所有定序器状态上下文的重定位(例如图9的重定位逻辑910),因此它们可以与其他分配的定序器是“连续的”,并且因此可以在连续块中保留空闲的物理定序器。对于至少一些实施例,调用重定位逻辑910以重定位和重新映射定序器以满足与逻辑至物理定序器映射关联的某种能力需求。例如,对于一个实施例,无论何时,只要底层物理定序器超出某个热阈值,就可以将逻辑定序器与需要重新映射的能力描述符关联。对于至少一个实施例,有时将910执行的作为结果的重定位操作称为“定序器跳跃”。
采用动态定序器映射的系统中的映射管理器402、502的配给逻辑485可以实施多种映射技术的任何一种。可以为任何分配单元(例如各个物理定序器、段、页等)采用这些映射技术。下文提出此类方法的部分列举。但是,本领域技术人员将认识到配给逻辑485在执行逻辑至物理定序器映射时还可以附加地将定序器的能力属性纳入考虑。下文结合图13进一步论述此类基于能力属性的映射考虑。
通常,遵循动态定序器分配和映射方法的系统中的配给逻辑485所采用的映射算法可以包括如下(但是此列表无意作为穷举的列表):
a.最佳适应算法。映射管理器402、502扫描所有空闲物理定序器分区,并选择大小最接近请求线程所需大小的物理定序器分区。这种算法可以产生相对紧密的适应,因此有效率地使用实际定序器-可以为线程分配足够大的最小可用分区。
b.首次适应算法。映射管理器402、502选择足够大的第一可用定序器分区。
c.下次适应算法。映射管理器402、502从先前最后一次分配的位置开始扫描定序器的分区,并选择足够大的下一个可用分区。
无论将定序器如何分区,映射管理器402、502都可以包括配给逻辑485,配给逻辑485用于在每次第一程序中对逻辑定序器地址的引用发生LSAT未命中时管理将物理定序器或物理定序器的分区动态映射到线程。可以由转换逻辑486来转换程序对逻辑定序器地址的后续引用,而不会发生LSAT未命中。
虽然上文论述的一些分区方案表面上像是与公知的存储器管理技术相似,但是将此类技术应用于定序器涉及独特的挑战。与寄存器和存储器虚拟化方案对比,定序器不只是涉及数据存储的空间上下文。而是每个定序器都是涉及许多更多特性并因此涉及更多复杂考虑的执行资源。
为了进一步说明物理定序器作为动态映射的资源的唯一特征的至少一些特征,下文论述将物理定序器称为定序器分配的基本单元。但是,本领域技术人员将认识到下文论述还适用于其他分配单元,包括物理定序器的段和/或帧。
线程可以包括多个定序器感知指令。我们使用值Y来反映线程中的这些指令中引用的唯一逻辑定序器地址的数量。映射管理器402、502可以动态地将物理定序器映射到该线程的Y个逻辑定序器地址的每个逻辑定序器地址。对于包括总数Y个唯一逻辑定序器地址的线程,只要有为该线程分配的至少一个物理定序器,该线程就可以向前推进。映射管理器402、502可以通过在单个物理定序器上复用多个(Y个)逻辑定序器上下文来实现这一点。换言之,在OS赋予的线程的量程期间,映射管理器402、502可以交替地将线程的多个(Y个)定序器上下文的每个定序器上下文映射到Z个物理定序器,其中Z可以仅为1。可以对任何数量的Y个逻辑定序器地址和Z个物理定序器、其中Y>Z执行这种复用。
对于至少一个实施例,为了处理Y>Z的复用情况,多定序器多线程系统500可以包括逻辑定序器上下文队列(“LSCQ”)527。对于至少一个实施例,LSCQ 527可以是一种数据结构。对于图5所示的实施例500,LSCQ 527存储在存储媒介460中,存储媒介460可以是存储器系统,并且可以是后备存储器575的一部分。对于至少一个实施例,LSCQ 527包括至少Y-Z个项,并且可以包括最多Y个项。每个项能够保存逻辑定序器的上下文信息,以及例如能力属性信息(例如定序器跳跃需求和定序器调度需求)的其他信息。
当对具有Y个逻辑定序器地址的线程复用以在Z个物理定序器上运行时,任何时候只要转出逻辑定序器并将新逻辑定序器转入到物理定序器,映射管理器402、502则执行定序器上下文切换。在这种上下文切换期间,将脏物理定序器(与Y个逻辑定序器的活动逻辑定序器关联的物理定序器)的当前上下文保存到LSCQ 527的对应项中。然后,复制新逻辑定序器的上下文,或将新逻辑定序器的上下文“转入”到物理定序器。
因此在逻辑定序器地址至物理定序器的X>Z复用期间,映射管理器402、502可以执行当前逻辑定序器的上下文保存操作(转出当前逻辑定序器)和新逻辑定序器的上下文恢复操作(转入新逻辑定序器)。假定,映射管理器402、502将复用的Y个逻辑定序器上下文保存到LSCQ 527和从LSCQ 527恢复复用的Y个逻辑定序器上下文。
当为第一线程执行OS级线程切换时,OS可以执行SSAVE操作将该线程的Z个物理处理器的上下文、以及已经保存到LSCQ 527的与该线程关联的Y-Z个非活动逻辑定序器地址的任何上下文信息保存到OS内核保存区域作为总线程上下文。当后来线程切换时,OS内核可以执行SRSTOR操作以恢复包括所有Y个逻辑定序器上下文的线程上下文。本文将OS内核可以执行的此类操作称为虚拟化的SSAVE和SRSTOR操作。此类SSAVE和SRSTOR操作可以由OS来执行。对于至少一些实施例,可以在不同特权级(包括上文描述的虚拟机监视器和微代码层)上执行虚拟化的SSAVE和SRSTOR机制。
在SRSTOR操作期间,OS可以从OS内核的线程保存区域将线程的Y个逻辑定序器上下文的其中Z个逻辑定序器上下文恢复到现在可为线程所用的Z个物理定序器。(Z可以是现在与线程先前处于活动时相比有所不同的数值;最小Z=1)。将线程的Y个虚拟定序器状态的余下虚拟定序器状态存储到线程的LSCQ 527的Y-Z项中。对于至少另一个实施例,在SRSTOR操作期间,SRSTOR操作将所有Y个逻辑定序器上下文从内核线程的上下文保存区域恢复到Y项LSCQ 527中,而非将Z个逻辑定序器上下文直接保存到对应的Z个物理定序器中。对于此类实施例,可以使用各种策略将Y个逻辑定序器上下文映射和调度到Z个物理定序器。此类策略可以包括按需分配。对于按需分配,当引用逻辑定序器时,将其调度出LSCQ 527,并且映射管理器402、502尝试在Z个物理定序器中查找闲置的物理定序器以用于映射到逻辑定序器。如果没有闲置的物理定序器,则映射管理器402、502可以选择脏物理定序器,执行定序器上下文“交换”以将该上下文保存到LSCQ 527中的对应逻辑处理器的适合项中,然后调度新的逻辑定序器以用于映射到刚刚腾空的物理定序器。
或者,在复用期间,贯穿线程的所有量程(quanta),映射管理器402、502可以调度Y个逻辑定序器以在Z个物理定序器上执行。映射管理器402、502可以采用调度方法,例如使用子量程的简单的基于时间的轮换方法。每个子量程可以是线程调度的OS量程的分数或再划分。或者,映射管理器402、502可以采用不同的调度方法,例如事件驱动的方法。对于事件驱动的方法,可以在发生高速缓存未命中或其他相对较长等待时间事件时从物理定序器转出逻辑定序器。对于事件驱动的方法,还可以在发生因能力约束检查而产生的事件(例如脏物理定序器超过需要将映射的逻辑定序器腾空到LSCQ527以便进行重新调度的热阈值(这可以包括定序器跳跃))时,从物理定序器转出逻辑定序器。
对于至少一个实施例,映射管理器402、502执行的LSCQ 527管理可以是操作系统的一部分。对于此实施例,OS可以负责管理LSCQ 527和负责在Z个物理定序器上调度Y个逻辑定序器上下文。
图6还图示映射管理器502(图5)可以保存的映射结构580的详细信息。本文中图6是与图5结合来论述的。转换逻辑486(图5)可以参考映射结构580来执行逻辑至物理定序器的地址转换。当为逻辑定序器地址分配物理定序器或取消其分配(包括重定位)时,可以由配给逻辑485(图5)来管理映射结构中的项。
映射结构580可以包括用于每个线程的映射表610。例如,图6图示分别与线程A、B、C和D关联的映射结构610a、610b、610c和610d。虽然图6中仅图示四个特定线程,但是图6示例不应被视为限制。图6图示支持基于分页的逻辑定序器地址映射方法的映射管理器(例如图5所示的映射管理器502)可以容纳任何数量x的线程。
对于至少一个实施例,映射结构580还可以包括空闲定序器帧列表620,在定序器感知指令中引用新逻辑定序器地址时映射管理器520可以通过该空闲定序器帧列表620来跟踪当前未分配因此可用于分配的那些物理帧。
对于图6所示的示例(该示例仅出于说明目的而不应视为限制),每个映射表610是对应于对应线程的每个页包含一个项的定序器页表。因此,图6的示例对应于线程A和线程B分别包括三个页,对应于线程C和线程D分别包括四个页。下文论述中可以将定序器页表610简称为“页表”。
图6图示线程页表610的每个项630可以包括定序器页帧地址字段632。映射管理器502可以在为对应于项632的页分配物理定序器时向页帧地址字段632中输入值。(对于至少一个实施例,由配给逻辑485为初始分配将值输入到地址字段632或由重定位逻辑(参见图9的910)为重定位将值输入到地址字段632。页帧地址字段632的值指示映射的定序器所属于的页帧的页帧地址。对于当前活动的线程,页帧地址字段632的值可以指示对应线程的页所分配到的物理定序器帧的基地址。对于未完成执行但是已经换出而为另一个线程腾出空间的线程,定序器页帧地址字段632的值将指针地址提供到保存在后备存储器575(例如参见图5中的后备存储器575))中的线程的未映射定序器页上下文信息。
图6图示项630还可以包括存在/不存在字段634。存在/不存在字段634的值可以标识线程页的上下文信息是驻留在物理定序器帧上还是驻留在后备存储器575中。因此映射管理器502可以利用存在/不存在字段的值来确定定序器页帧地址字段632的内容是否是物理定序器帧的基地址或确定它是否指示逻辑定序器页在后备存储器575中的位置。对于某些实施例,可以检查存在位的值来触发页故障。
图6图示每个项630还可以包括附加的字段。对于一些实施例,这些附加字段的其中一个或多个可以保存能力属性的描述符,这些能力属性指示与项630表示的虚拟定序器帧关联的属性或约束。例如,项630可以包括映射管理器502的保护逻辑和可选的共享逻辑(参见图9的912、914)可以利用的保护字段636。
当然,多种实施例可以包括附加的或与图6所示的那些字段不同的字段。例如,项630可以包括调度字段638。调度字段638可以保存关联的逻辑定序器帧的调度信息。调度信息可以包括例如一个或多个基于年龄的提示,该提示指示要在何时或以何种频度重新调度定序器帧用于映射或重新映射(包括例如定序器跳跃的重定位)。此外或作为备选,调度信息638可以包括指示一个或多个其上调度逻辑定序器帧的物理处理器所期望的一个或多个特征的能力信息。例如,基于能力的调度信息可以包括对于目标物理定序器帧来说期望的最小性能或最大每个指令的能量(energy-per-instruction)度量。
简要参考图10,其中图示用于将逻辑定序器地址1030转换至物理定序器标识符1040的方法1000的至少一个实施例。对于至少一个实施例,该方法1000可以由映射管理器的转换逻辑(例如参见图5所示的映射管理器502的转换逻辑486)执行。
图10是图示用于利用映射结构(例如参见图5的580)来执行逻辑定序器地址转换的通用方法1000的至少一个实施例的数据和控制流的流程图。更确切地来说,图10图示使用一个或多个页表1010作为映射结构580(图5)。
方法1000可以用于执行包括多个定序器(例如参见如图5的420-426)的多线程系统的逻辑定序器地址转换。该方法1000可以由与图5所示的映射管理器502一致的映射管理器1020来执行。对于至少一个实施例,该方法1000可以由映射管理器的转换逻辑(例如参见图5中的映射管理器502的485)来执行。对于至少一个实施例,映射管理器1020可以是操作系统程序,以便方法1000由操作系统来执行。对于至少另一个实施例,该方法1000可以由为用户级例行程序的映射管理器1020来执行,该用户级例行程序由例如应用程序设计员编写。对于至少另一个实施例,该方法1000可以由为虚拟机监视器或管理程序的映射管理器1020来执行。对于至少一个实施例,可以通过使用转换加速结构(例如参见图5所示的518)来加速由映射管理器1020执行的方法1000。
应该注意上文结合图5引述的物理定序器420-426无需是对称的,它们的数量不应视为限制。就对称而言,物理定序器的其中一个或多个物理定序器可以在任何特征或效用的度量方面不同于其他物理定序器的其中一个或多个物理定序器。对于至少一些实施例,物理定序器特征或效用的度量可以包括尺寸、字和/或数据路径大小、拓扑、存储器类型和/或大小、功耗、功能单元的数量、通信体系结构(多分路对点到点互连)、工作频率、大小、每个周期的指令、每个指令的能量消耗、热特征、指令集支持方面的能力、OS可见性或任何其他与功能、性能、足印、功率、热度量等相关的其他度量。这些特征仅是出于说明目的的,而不应视为限制。它们作为示例的部分列举而提供,以便说明非对称多定序器系统中的两个物理定序器可以在上文的特征或度量的任何其中之一或任何组合方面有所不同。对于至少一些实施例,可以将这些特征的其中一些表示为逻辑定序器的能力描述符的一部分,并可以在逻辑至物理定序器映射时检查它们。
就定序器的数量而言,可以对任何数量的定序器采用转换方法1000。例如,可以对包括4、8、16、32、64、128个或更多个定序器的多定序器系统实现转换方法1000。
图10图为了执行转换,映射管理器1020可以接收(1050)包含逻辑页编号1032和偏移量1034的逻辑定序器地址1030。逻辑定序器地址1030因此实际将线程对逻辑定序器地址的使用映射到页内的逻辑页编号和偏移量。图10图示可能已经在线程(例如线程N)的定序器感知指令中指定了的逻辑定序器地址1030。
图10一般地图示映射管理器1020可以利用与线程N关联的适合线程定序器页表1010来将逻辑定序器地址1030转换至物理定序器标识符1040。具体来说,图10图示在1052,映射管理器1020利用逻辑定序器地址1030的页编号1032(“001”)作为对页表1010的索引。在1054将页表1010的索引项处的值(“111”)输入到转换的物理定序器标识符1040的指定的页帧部分1042中。
图10还图示在1056,映射管理器1020可以将逻辑定序器地址1030的偏移量1034(“010”)直接复制到转换的物理定序器标识符1040的指定的偏移量部分1044。
总之,图10因此图示用于将逻辑定序器地址转换至物理定序器标识符的方法1000可以包括如下步骤:接收(1050)逻辑定序器地址1030;利用(1052)逻辑定序器地址1030的一部分1032作为对页表1010的索引以确定页编号(“111”);将页编号输入(1054)到转换的定序器标识符1040的指定的部分1042;以及将逻辑定序器地址1030的另一个部分1034复制(1056)到转换的定序器标识符1040的偏移量部分1044。
图6和图10所示的示例不应视为意味着虚拟定序器地址转换方法1000局限于限于单层次的页表的方法。例如,图6图示页表项630可以包括附加位640。对于至少一个实施例,可以利用一个或多个附加位640来对于至少一个备选实施例指示附加的页表层次。此外,映射管理器1020还可以实施包括多层次的页表的方法。
用于转换的可选硬件加速
返回到图5,可以看到支持动态映射的逻辑定序器地址的转换的多定序器多线程系统500的至少一个实施例可以包括可选的转换加速结构518。
对于至少一个实施例,结构518可以是定序器地址转换后备缓冲器(“STLB”),该定序器地址转换后备缓冲器(“STLB”)将页表的项或其他类型的映射结构580缓存。将这些项缓存在执行资源490的硬件结构518中可以加快转换的速度。加速的一个原因是定序器420-426对结构518具有访问权,不会耗费时间来访问驻留在存储媒介460上的映射结构580。例如,对于图10所示的转换示例,假定图5的STLB 518包括页表1010的项001的内容。在此情况中,查询和转换可以由执行资源490(图5)内的STLB逻辑来执行,而无需访问线程N的驻留在存储媒介460中的页表1010。
图11是图示用于转换加速结构1100的格式的至少一个实施例的框图。加速结构(例如图5所示的518)的项可以依照图11所示的加速结构1100的格式。为图11所示的STLB的实施例的项图示的字段1102-1110仅出于说明目的而提出。对于其他实施例,可以将附加或不同的信息缓存在硬件加速结构1100中。
对于图11所示的实施例,结构1100的项包括如下字段:有效字段1102、逻辑页标识符(例如参见图10的1032)1104、和物理页帧字段1110(例如参见图10的1042)。
对于至少一个实施例,可以在发生至新线程的上下文更改时,将线程专用的定序器页表(例如参见图10的1010)的基地址加载到寄存器1120中。寄存器1120可以是控制寄存器。任何时候,只要发生线程上下文更改(由控制寄存器1120的修改来指示),就可以刷新硬件加速结构1100的内容。
简要地参考图5和图11,应该理解,对于至少一个实施例,每个定序器420-426可以同步地执行不同的线程。因此,对于至少一个实施例,可以为每个定序器420-426指定STLB 1100和控制寄存器1120。因此,图5所示的硬件加速结构可以包括多个STLB 1110和控制寄存器1120,其各对应于每一个定序器420-426。
继续参考图5以及图9,其中图示为了管理对活动线程分配和映射物理定序器,映射管理器502可以包括配给逻辑485。(图5和图9中相似的部件具有相似的引用数字。)配给逻辑485可以包括用于在活动线程中分配物理定序器420-426的逻辑。
除了执行逻辑定序器地址至物理定序器的初始分配的逻辑外,图9图示配给逻辑485还可以包括用于执行如下定序器管理功能的逻辑:重定位、保护和共享。下面的段落将进一步详细地论述这些对象的每个对象。
就重定位逻辑910而言,其情况可以是在最初引用逻辑定序器地址的线程完成执行之前可能需要修改逻辑定序器地址与物理定序器之间的映射。如果映射管理器502确定应该将第二虚拟定序器上下文换入物理定序器,则将当前映射的逻辑定序器的状态换出后备存储器575。这种交换可以由重定位逻辑910来执行。例如它可以在紧缩期间执行。
对于此类情况,重定位逻辑910执行用于管理上下文和映射信息以使逻辑定序器的关联状态可以在后来换回当前物理定序器或另一个物理定序器的逻辑。因此重定位逻辑910包括用于管理如映射结构(参见图5的580)所反映的与每个逻辑至物理定序器映射关联的上下文信息的逻辑。此外,配给逻辑485包括用于修改映射的逻辑。对于至少一个实施例,此功能还可以由重定位逻辑910来提供。对于至少一个实施例,其中映射管理器502实现可能发生外部碎片的物理定序器分配算法(例如上文的最佳适应算法)),重定位逻辑910可以包括用于1)重定位属于与连续块所属线程相同的线程的物理定序器以及2)相应地修改映射信息的逻辑。
图9图示配给逻辑485还可以包括保护逻辑912。对于至少一个实施例,保护逻辑912阻止对物理定序器的非期望访问。对于至少一个实施例,这通过阻止一个应用程序线程引用当前与另一个线程关联的逻辑定序器地址来实现。保护逻辑912可以利用与物理定序器关联的逻辑定序器地址的上下文信息来确定尝试的访问是否是由与相同线程上下文关联的指令生成的。如果不是,则保护逻辑912阻止该访问。因此,保护逻辑912检查并实施保护以阻止执行期间另一个定序器或定序器帧对一个定序器或定序器帧的非期望访问。
图9图示配给逻辑485还可以包括共享逻辑914。此共享逻辑914是可选的,如图5中以虚线表示。共享逻辑914可以使两个或两个以上线程能够共享相同的物理定序器。对于使线程能够访问一个或多个定序器的共同集合的实施例,共享逻辑914实施控制允许的共享类型的指定的参数和约束。
因此,在第一线程是活动的情况下,如果不同的线程尝试访问逻辑定序器地址,则保护逻辑912可以阻止此类访问。或者,如果允许共享使得多个活动的线程能够访问相同的物理定序器,则可选的共享逻辑914可以实施共享参数和约束。
现在参考图12,以进一步论述配给逻辑485执行的定序器分配的至少一个实施例。此分配可以包括如下部分:初始分配物理定序器;重新映射物理定序器;以及维护/更新映射信息。
图12是图示用于定序器配给的方法1200的至少一个实施例的控制和数据流的流程图。对于至少一个实施例,该方法1200可以由映射管理器(例如参见图5的580)来执行。更具体来说,对于至少一个实施例,该方法1200可以由配给逻辑(例如参见图5的485)来执行。
图12图示该方法开始于框1202,并进行到框1204。在框1204,该方法接收作为参数提供到源定序器104a上执行的定序器感知指令的目的地定序器的逻辑地址。
处理然后进行到框1206,其中在映射结构1250中执行查询。映射结构1250可以是如图5所示的结构580的映射结构,它被存储在存储媒介(例如图5的460)中。如果映射结构1250包括逻辑定序器地址的有效项,使得能够获取已经分配的物理定序器标识符,则称为查询1206的结果为命中。否则,结果是“未命中”。
对于至少另一个实施例,框1206处执行的查询最初可以在加速结构(例如图5所示的结构518)中执行。如果发生命中,则处理立即进行到框1212。如果未发生命中,则在框1206,该方法可以在存储媒介中存储的映射结构中执行查询,如上文解释的。
在框1208,确定结果是否是未命中。除了上文结合框1206论述的确定映射结构(和/或加速结构)中的未命中外,在框1208处的处理也可能确定结果是“未命中”,即使对于指定的逻辑定序器地址存在页表项或加速结构项。即,当页表项的存在/不存在字段634的内容指示指定的逻辑定序器地址的内容信息已经倒出(spill)到后备存储器(参见图13的框512和后备存储器550)时,则在框1208确定 “未命中”。
图12图示作为判定框1208的结果,对于未命中的情况处理进行到框1210而对于命中的情况处理进行到框1209。对于命中的情况,在框1212执行定序器感知指令的支持。对于至少一个实施例,在框1212执行的支持包括将用于定序器运算指令的信号发送到在框1206查询期间获得的物理定序器标识符标识的目的地定序器104n。作为此信号的结果,可以按定序器运算指令中所指示的实现期望的对目的地定序器104n的信号传递。从框1212,处理在框1214结束。
图12图示在框1208确定未命中的情况下处理进行到框1210。在框1210,可以调用未命中故障处理程序。然后处理在框1214结束。
图13是图示用于可作为框1210处理的结果调用的未命中处理的方法1300的至少一个实施例的控制流和数据流的流程图。本领域技术人员将理解,可以在框1210不直接调用故障处理程序,而是在框1210诱捕(trip)定序器页故障。对于此实施例,可以作为框1210诱捕的故障的结果调用故障处理程序;然后故障处理程序可以调用图13所示的方法1300。
图13图示配给逻辑485可执行的方法1300,它一般用于为图12的框1204处接收的逻辑定序器地址分配物理定序器。在进一步论述图13之前,应该注意,对于至少一个备选实施例,对于除如图12的框1208处检测到的“未命中”之外的情况也可以调用图13的方法1300。对于至少一个实施例,可以调用方法1300以便配给逻辑485可以执行对物理定序器分配的基于能力属性的监视、实施和优化。这种基于能力属性的监视可以检测违规状况,并由此产生“未命中”状况。
作为不同的体系结构资源,可寻址逻辑定序器420-426在空间和时间属性上都不同于可寻址逻辑存储器位置。在空间上,应用程序使用的逻辑定序器地址包括给定单个定序器指令集体系结构的寄存器状态的上下文状态信息。(例如,参见图1所示的体系结构状态AS)。在时间上,逻辑定序器地址对应于控制流程的不同计算流,其可以具有程度变化的及时性(例如调度)需求。
因此,从逻辑定序器地址至物理定序器地址的映射不仅涉及到将逻辑定序器上下文映射到的物理定序器的分配,而且还涉及分配时间量程以使用逻辑定序器运行纤程来确保程序向前推进的方式运行逻辑定序器。对于至少一个实施例,可以在逻辑定序器描述符630中表示作为字段638中的调度提示的时间需求,该时间需求可以引起方法1300的基于时间的周期性激活,以将对应的逻辑定序器地址从一个物理定序器集合重新映射到另一个集合。对于至少一个实施例,将M个逻辑定序器上下文重新映射到N个物理定序器可以实现轮换调度策略,该轮换调度策略可以周期性且顺序地使M个逻辑定序器上下文循环遍历N个物理定序器。对于至少一个实施例,在换出之前逻辑定序器在物理定序器上运行所经历的调度量程是OS分配给线程的OS量程的再划分。这种策略可以确保线程中的所有逻辑定序器整体向前推进。
图13图示逻辑定序器的状态信息经过倒出1308(保存)到后备存储器1275以及从后备存储器1275填充1310(恢复)。后备存储器1275可以是任何存储结构,包括存储器。
对于至少一个实施例,经过倒出1308和填充1310的逻辑定序器状态信息可以包括上下文信息。此类上下文信息可以包括例如,定序器上体系结构上定义的寄存器的所有寄存器状态。对于至少一个实施例,逻辑状态定序器信息还可以可选地包括与调度相关的时间信息,例如用于调度的最小必需量程和/或期望的频率。
除了此信息外,映射管理器(例如参见图5的502)的配给逻辑(例如参见图5的485)还可以对与定序器能力属性和特征相关的某些物理定序器信息具有访问权,这些定序器能力属性和特征例如是温度、功能、性能、功率、功能单元的组合和定序器执行状态等。
因此可以调用图13的方法1300以便使映射管理器能够在分配或重新映射物理定序器时将此类基于功能属性的逻辑和/或物理定序器状态信息纳入考虑。例如,可以在物理定序器的执行状态指示它被停止并且不向前推进时触发该方法1300。此类执行状态可能发生在例如定序器遇到长等待时间事件(例如高速缓存未命中)或等待同步对象的锁定时,
通过相同的令牌,当由于页表1250中未命中而调用方法1300时,可以将物理定序器属性纳入考虑以便通知、加强或优化为分配和再分配而进行的物理定序器选择。对于在图13所示的方法1300的执行期间可以被配给逻辑485纳入考虑的多种类型的物理定序器属性的示例,直接参考图14。
图14图示多定序器多线程系统1400一般可以包括映射管理器1420和至少两种不同类型的物理定序器1410、1412。(当然对于至少另一个实施例,多定序器多线程系统仅包括一种类型的定序器)。图3中使用虚线和省略号来指示每种类型的附加定序器1410、1412是可选的。
系统1400可以包括一个或多个每种类型的定序器。因此,每种定序器类型1410、1412可以与一组特定的能力属性关联。因为定序器类型是不同的,所以称为它们是“非对称的”-这些属性在定序器类型之间可能有相当大的不同。例如对于至少一个实施例,定序器1410、1412可以在功耗度量方面不同。对于至少另一个实施例,定序器1410、1412可以在功能度量方面不同。例如,第一定序器1410可以实现其OS可以运行系统级特权代码和用户级特权代码的T-定序器所需的所有功能,而第二定序器1412只能实现S-定序器所需的功能,S-定序器只需运行用户级特权代码而无需运行系统级特权代码。又如,第一定序器类型1410可以实现给定指令集的一组完整的功能能力。但是,第二定序器类型1412可以包括不建议使用的功能(deprecated functionality),例如仅实现指令集的功能的一个子集。例如,一个[不建议使用的]定序器能够执行整数和浮点指令,但是无法执行指令扩充(例如流SIMD扩充3(“SSE3”))的单指令多数据(“SIMD”)集。另一方面,另一个定序器能够执行第一定序器能够执行的所有指令,同时还可以执行SSE3指令。
作为功能度量的取代或附加方式,非对称定序器类型1410、1412还可以在功耗和/或温度属性方面不同。例如,第二定序器类型1412可能需要较少功率或可以比第一定序器类型1410慢得多地执行计算。而且在执行定序器配给时,映射管理器1420还可以将温度纳入考虑。例如,如果具体定序器逼近高温阈值,则可以调用图13的方法1300以便将虚拟定序器地址重新映射到较凉的不同的实际定序器。这些功能属性(功率需求、速度、功能能力、温度、执行状态等)对于软件映射管理器502都是可获取的,并且它们可以被利用来告知映射进程(本文有时称为“定序器配给”),下文对此予以进一步论述。
返回图13,现在论述方法1300。图13图示方法开始于框1302并进行到框1304。在框1304,标识要分配给逻辑定序器地址(在图12的框1204接收到)的定序器或定序器帧。同样的,术语“定序器”将被理解为意味着单个定序器或帧中的多个定序器。下文论述中可以互换地使用术语“定序器”和“定序器帧”。
对于多种实施例,可以在框1304采用多种方法来确定潜在的定序器。通常,确定1304可以包括通过定序器属性信息来通知的传统选择方法。
对于至少一个实施例,如果当前有一个或多个空闲定序器(例如参见图6和图8所示的空闲列表620),则在框1304选择空闲定序器。如果一个定序器是空闲的,则选择它。对于至少一个实施例,利用下文描述的属性分析来确定在框1304应该选择这些空闲定序器的哪个空闲定序器。
如果没有定序器是空闲的,则在框1304选择当前活动的(有时称为“牺牲者”)定序器。可以在框1304采用任何公知的置换算法,aka牺牲者选择(aka victim selection)算法来选择活动的(或“脏”)定序器作为“牺牲者”。此类算法可以包括但不限于最近未用(Not-Recently-Used)、先进先出(First-in-First-Out)、最近最少使用(Least-Recently-Used)、不经常使用(Not-Frequently-Used)、老化(Aging)、工作集(Working Set)、时钟(Clock)和工作集时钟(WorkingSet Clock(“WSClock”))。可以使用任何此类方法以在框1304选择要收回到后备存储器1275的定序器,以便为进入的定序器留出空间(进入的定序器是在框1210导致方法1300的调用的逻辑定序器)。
无论是否从空闲列表选择定序器或是无论是否根据置换算法选择牺牲者定序器,都可选地在框1304由通过能力属性分析通知该牺牲者选择。
可以在框1304执行能力属性分析,以便确定物理定序器的当前属性是否使它更可能或不太可能是用于分配或再分配的候选。例如,可以利用能力属性分析在空闲列表的项中进行选择,以便选择能够执行一组特定功能或较其他项具有较低功率或温度等的项。或者,可以利用能力属性分析在置换算法考虑的物理定序器中进行选择,以便选择更可能用于倒出的候选的物理定序器。例如,能力属性分析可以指示如果物理定序器当前没有向前推进(即由于长等待时间高速缓存未命中而发生停止或等待以争用同步对象的锁定),则它是好的候选。
从框1304,处理进行到框1306。在框1306,确定是否应该将所选的牺牲者的状态换出到后备存储器1275。如果已经从空闲列表中选择了牺牲者,则在框1306的确定评估为“假”。在此情况中,处理进行到框1312。
但是如果牺牲者定序器当前是活动的,则处理从框1306进行到框1308。在框1308,将定序器的上下文状态倒出到后备存储器1275。对于采用定序器帧的实施例,将牺牲者定序器帧中的所有定序器的上下文状态倒出到后备存储器1275。然后处理进行到框1310。
在框1310,从后备存储器1275中检索定序器的上下文状态(或故障定序器帧中的所有定序器)。将上下文信息提供到在框1304选择的物理定序器。以此方式,将牺牲者定序器的上下文状态倒出(1310)到后备存储器1275,并将新逻辑定序器地址的上下文状态从后备存储器1275填充到牺牲者物理定序器。
从框1310,处理进行到框1312。如果所选的物理定序器当前不是活动的,则也可以直接从框1306到达框1312。在框1312,更新一个或多个转换结构来反映对所选的物理定序器的新逻辑定序器地址分配。对于至少一个实施例,在框1312更新映射结构1250。
对于以一个或多个定序器页表形式实现映射结构1250的实施例,更新导致定序器页故障的线程的定序器页表以反映逻辑定序器地址至物理定序器地址的新定序器映射。对于此类实施例,将在框1312修改的每个页表项的存在字段(参见图6的634)设为指示无需从后备存储器1275中检索该页的上下文信息。
此外,还将在框1308倒出到后备存储器1275的定序器的页表项的存在字段修改为指示将上下文信息存储在后备存储器而非存储在物理定序器中。
最后,对于采用可选硬件转换加速结构1318(例如图11所示的STLB 1100)的实施例,在框1312还可以执行如下步骤:由于线程上下文切换而刷新转换加速结构1218。然后处理在框1314处结束。
图7和图8提出一个特定示例以便进一步图示上文结合图12和13一般性论述的方法1300的一些处理。图7图示配给逻辑485为图6所示的样本线程、线程A-D执行的样本定序器配给方案。图7图示样本定序器配给方案期间执行的一系列动作AA-AF。此类动作反映如图12和图13提出的用于分配物理定序器的通用方法1200、1300的特定示例。因此,下文参考图12和图13论述图7和图8。
图7图示包括12个可用物理定序器帧的样本实施例。图7的动作AA说明初始状态,其中这些物理帧都尚未映射到逻辑定序器地址。
图7的动作AB说明为线程A的三个页分配三个定序器帧、帧0-2。确切地说,图7图示在动作AB处,将线程A的页0(称为“A0”)映射到帧0。可以响应接收到包含线程A的页编号1的逻辑定序器地址的第一次发生来执行线程A的页0的这种初始映射。(参见图10中的逻辑定序器地址1030的页编号1032)。
在图12的框1204处可以由配给逻辑接收此逻辑定序器地址。因为该页尚未映射到物理定序器,所以图12的框1206处的表查询的结果是未命中,并且因此处理进行到框1210,然后进行到图13的框1304。在图13,为该页选择物理定序器帧。如图7所示,在框1304为图7所示的示例选择定序器帧0。
相似地,图7的动作AB说明可以采用相似的方式执行线程A的页1和2的初始映射。
图7还图示可以采用相似的方式在图7的动作AC分配线程B的页的初始映射。即,图7图示可以在图7的动作C将线程B的页0、1和2映射到定序器3、4和5。
图7还图示可以采用相似的方式在图7的动作AD分配线程C的页的初始映射。即,图7图示可以在图7的动作AD将线程C的页0、1、2和3映射到定序器6、7、8和9。
图7图示可以在动作AE由配给逻辑执行换出处理。可以响应接收到包含尚未映射的页的逻辑定序器地址来执行此处理。因此,如上文论述地,可以在框1204接收逻辑定序器地址。然后执行框1206和1210。对图13的参考示出同样地在框1304为该页选择定序器。对于图7所示的示例,在框1204接收到对线程D的第一次引用时仅有两个定序器剩余。
但是,线程D包括四个逻辑定序器地址,并且假定线程D的能力属性的调度需求因此至少需要四个物理定序器。对于至少一个实施例,线程所需的物理定序器的最小数量由配给逻辑在框1304确定。对于至少一个实施例,线程所需的逻辑定序器的数量在体系结构上通过能力报告指令来提供。例如可以通过执行能力报告指令(例如CPUID指令)来确定此数量,该指令报告单个线程可以访问的逻辑定序器地址的数量。
因此,在框1304选择要换出的活动的“牺牲者”定序器。如上文论述地,可以将定序器属性纳入考虑以便确定要换出哪个(哪些)定序器。例如,配给逻辑可以在框1304确定线程B由于长等待时间高速缓存未命中而被停止以及未在向前推进,并且确定因此应该选择它的定序器帧来换出以便为线程D腾出空间。
图7图示在动作AE处将物理定序器帧3、4和5的上下文状态换出到后备存储器。相似地,图13图示在框1308发生线程上下文保存到后备存储器。如果线程D本身先前已经是活动的,但是在线程终止之前已经换出到后备存储器1275,则从后备存储器1275将它的上下文恢复到腾空的物理定序器。
但是,对于图7所示的示例,动作AF指示线程D的页的初始映射。因此,无需从后备存储器1275恢复线程D的上下文状态,而是利用初始值将其初始化。因此,图13中以点划线表示框1310,以指示它并非是在所有情况中都一定要执行的。
图7的动作AF指示分别将线程D的页0、1、2和3映射到物理定序器3、4、5和10。
图8图示图7所示的示范方案的动作AF之后定序器页表610a-610d的内容。图8图示线程A的页表610a指示将线程A的页0、1和2分别映射到物理页帧0、1和2。页表610a的每个项的“存在/不存在”字段(参见图6的634)的值(P″)指示物理定序器帧上而非后备存储器中加载页的上下文信息。
相似地,图8图示线程C的页表610c指示分别将线程C的页0、1、2和3映射到物理页帧6、7、8和9。线程D的页表610d指示分别将线程D的页0、1、2、3映射到物理定序器3、4、5和10。同样地,表610c和表610d的每个项的存在/不存在字段(参见图6的634)的值指示保存有当前上下文的物理定序器帧。
图8还图示线程B的页表610b指示页表610b的每个项的存在/不存在字段634中的不存在值“A”。因此,可以在后备存储器1275的指示的地址(分别是为xxx、yyy、zzz)中找到线程B的页的上下文。
对于至少一个实施例,在图13的框1312由配给逻辑执行线程页表610a-610b(包括存在/不存在字段)的更新。
最后,图8图示空闲帧列表620指示物理定序器帧11仍未分配。
图15图示能够执行所公开的技术的计算系统1500的至少一个实施例。计算系统1500包括至少一个处理器核1504和存储器系统1540。存储器系统1540可以包括较大且相对较慢的存储装置1502以及一个或多个较小且相对较快的高速缓存(例如指令高速缓存1544和/或数据高速缓存1542)。存储装置1502可以存储用于控制处理器1504的操作的指令1510和数据1512。存储装置1502的至少一个实施例还可以包括映射结构1580。
存储器系统1540应视为存储器的规范化表示,并且包括多种形式的存储器,例如硬盘驱动器、CD-ROM、随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、闪速存储器和相关的电路。存储器系统1540可以存储处理器1504可执行的数据信号表示的指令1510和/或数据1512。指令1510和/或数据1512可以包括用于执行本文论述的任何或所有技术的代码和/或数据。
处理器1504可以包括向执行核1530提供指令信息的前端1520。可以在高速缓存1525中缓冲所提取的指令信息,以等待被指令核1530执行。前端1520可以按程序次序将指令信息提供到指令核1530。对于至少一个实施例,前端1520包括确定要执行的下一个指令的提取/解码单元322。对于系统1500的至少一个实施例,提取/解码单元122可以包括单个下一个指令指针和提取逻辑120。但是,在每个处理器1504支持多个线程上下文的实施例中,提取/解码单元122为每个支持的线程上下文实现不同的下一个指令指针和提取逻辑120。图15中的点划线表示多处理器系统中的附加下一个指令指针和提取逻辑120的可选特性。
可以采用硬件、硬件仿真软件或其他软件、固件或此类实现方法的组合来实现本文描述的这些方法的实施例。可以实现本发明的实施例用于可编程系统,该可编程系统包括至少一个处理器、数据存储系统(包括易失性和非易失性存储器和/或存储部件)、至少一个输入装置和至少一个输出装置。出于此应用的目的,处理系统包括具有处理器(例如数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器)的任何系统。
可以将程序存储在通用或专用可编程处理系统可读的存储媒介或装置(例如硬盘驱动器、软盘驱动器、只读存储器(ROM)、CD-ROM装置、闪速存储器装置、数字多功能光盘(DVD)或其他存储装置)上。对于处理系统中的处理器可访问的指令用于在处理系统读取存储媒介或装置以执行本文描述的过程时配置和操作处理系统。还可以考虑将本发明的实施例实现为机器可读存储媒介,配置为与处理系统一起使用,其中存储媒介配置为使处理系统以特定且预定义的方式工作以执行本文描述的功能。
示例系统1500是基于可从英特尔公司获得的Pentium、PentiumPro、PentiumII、PentiumIII、Pentium4以及Itanium和Itanium2微处理器的处理系统的代表,但是也可以使用其他系统(包括具有其他微处理器的个人计算机(PC)、工程设计工作站、个人数字助理和其他手持设备、机顶盒等)。对于一个实施例,示例系统可以执行可从微软公司获得的一种版本的WindowsTM操作系统,但是例如也可以使用其他操作系统和图形用户界面。
虽然示出和描述了本发明的具体实施例,但是对于本领域技术人员来说,显然在不背离所附权利要求的范围的前提下可以进行更改和修改。例如,可以采用与上文论述的那些方式有所不同的方式组织图5所示的映射结构580。例如,可以将映射结构580组织为倒置的定序器页表,它是具有数量等于物理定序器帧数量的表项的散列表。而且各具有映射结构580的表项,该表项可以与虚拟页至页帧映射的链接列表关联。
又如,映射管理器(参见图5的502)可以支持将分段与分页组合的混合映射方案。对于此方法,映射管理器可以在进程中利用每个段的不同页表,以使页的数量可以针对不同段而有所不同。
对于另一个备选实施例,该映射管理器可以不仅在执行定序器配给时将定序器属性信息纳入考虑,而且还可以将物理定序器本身执行的超时动作纳入考虑。即,对定序器进行编程以在超时事件发生时调用事件处理程序。该超时事件可以是例如指示定序器未在向前推进的任何事件(长等待时间最后一级高速缓存未命中、等待同步对象的锁定等)。如果定序器超时,则用于超时事件的事件处理程序可以执行产品以便将该定序器的当前指令流放入到“未决队列”中,并将物理定序器放回到空闲列表中。或者,对于如上文所述支持LSCQ的备选实施例,超时可以导致当前活动的逻辑定序器被倒出到LSCQ中,并且映射管理器502然后可以从LSCQ中查找置换逻辑定序器上下文。这可以由调度逻辑(参见图4和图5的487)来执行。调度逻辑487可以调度置换逻辑上下文以在腾空的物理定序器上运行。
并不执行产品或除执行产品之外,事件处理程序可以向下一个虚拟定序器或定序器页发送活跃度(live-ness)定序器检查。实际上,发送此类活跃度查询提供老化机制(与锁定或WSClock相似)以支持按可预测的时间期间将线程的所有虚拟定序器分页。
相应地,本领域技术人员将认识到在更广的方面在不背离本发明的前提下可以进行更改和修改。所附权利要求将落在本发明真正范围内的所有此类更改和修改涵盖在其范围内。
Claims (21)
1.一种方法,包括:
接收用户指令中指定的逻辑定序器地址;
将所述逻辑定序器地址分配给多个物理定序器帧的其中之一;
接收与第二用户指令关联的逻辑定序器地址;以及
提供指示所分配的物理定序器帧的标识符。
2.如权利要求1所述的方法,还包括:
在映射结构中记录所述逻辑定序器地址与所分配的物理定序器帧的标识符的映射。
3.如权利要求2所述的方法,其特征在于:
所述提供还包括参考所述映射结构来确定所分配的物理定序器帧。
4.如权利要求2所述的方法,其特征在于:
所述映射结构驻留在存储装置中。
5.如权利要求4所述的方法,还包括:
将所述映射结构的至少一部分缓存在硬件缓冲器中。
6.如权利要求5所述的方法,其特征在于:
所述提供还包括参考所述硬件缓冲器来确定所分配的物理定序器帧。
7.如权利要求1所述的方法,其特征在于:
所述物理定序器帧仅包括单个物理定序器。
8.如权利要求1所述的方法,其特征在于,:
所述分配还包括确定所述多个物理定序器帧的至少一个物理定序器帧当前是否未被分配。
9.如权利要求1所述的方法,其特征在于:
所述分配还包括从多个活动的定序器中选择牺牲者。
10.如权利要求1所述的方法,其特征在于:
所述分配还包括评估所述多个物理定序器帧的一个或多个属性。
11.一种用于多定序器多线程系统的映射管理器,包括:
用于将逻辑定序器地址分配给物理定序器的配给逻辑;以及
用于接收所述逻辑定序器地址并提供与分配的物理定序器关联的标识符的转换逻辑。
12.如权利要求11所述的映射管理器,其特征在于:
所述配给逻辑还包括用于在某些预定条件下允许第一定序器访问第二定序器的共享逻辑。
13.如权利要求11所述的映射管理器,还包括:
用于将定序器的上下文信息交换到后备存储器的重定位逻辑。
14.如权利要求11所述的映射管理器,还包括:
用于在未得到许可的情况下阻止第一定序器访问第二定序器的保护逻辑。
15.如权利要求11所述的映射管理器,其特征在于:
所述转换逻辑还用于响应用户指令中的引用来接收所述逻辑定序器地址。
16.如权利要求11所述的映射管理器,还包括:
用于调度一组逻辑定序器以用于在一组较小物理定序器上执行的调度逻辑。
17.一种多定序器多线程系统,包括:
用于存储用户程序的存储器系统;
能够实现并行线程执行的多个物理定序器;以及
用于将逻辑定序器的地址映射到物理定序器帧的映射管理器。
18.如权利要求17所述的系统,其特征在于:
所述实际定序器帧仅包括一个定序器。
19.如权利要求17所述的系统,其特征在于:
所述映射管理器还用于响应接收到所述逻辑定序器地址而提供与所述物理定序器帧关联的标识符。
20.如权利要求17所述的系统,还包括:
用于存储与所述逻辑定序器关联的上下文信息的后备存储器。
21.如权利要求17所述的系统,还包括:
用于存储所述逻辑定序器的上下文信息的逻辑定序器上下文队列。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/100,032 | 2005-04-05 | ||
US11/100,032 US7743233B2 (en) | 2005-04-05 | 2005-04-05 | Sequencer address management |
PCT/US2006/013263 WO2006108169A2 (en) | 2005-04-05 | 2006-04-05 | Sequencer address management |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101189575A true CN101189575A (zh) | 2008-05-28 |
CN101189575B CN101189575B (zh) | 2010-05-19 |
Family
ID=36649509
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2006800199875A Expired - Fee Related CN101189575B (zh) | 2005-04-05 | 2006-04-05 | 定序器地址管理 |
Country Status (6)
Country | Link |
---|---|
US (1) | US7743233B2 (zh) |
JP (1) | JP5058970B2 (zh) |
KR (2) | KR100996753B1 (zh) |
CN (1) | CN101189575B (zh) |
DE (1) | DE112006000807B4 (zh) |
WO (1) | WO2006108169A2 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136047A (zh) * | 2011-11-30 | 2013-06-05 | 大唐联诚信息系统技术有限公司 | 一种多线程管理方法及架构 |
CN106650923A (zh) * | 2015-10-08 | 2017-05-10 | 上海兆芯集成电路有限公司 | 具有神经存储器与神经处理单元阵列与定序器的神经网络单元 |
CN108780425A (zh) * | 2016-03-10 | 2018-11-09 | 微软技术许可有限责任公司 | 受保护指针 |
CN111414313A (zh) * | 2019-01-07 | 2020-07-14 | 爱思开海力士有限公司 | 数据存储装置及数据存储装置的操作方法 |
CN111712793A (zh) * | 2018-02-14 | 2020-09-25 | 华为技术有限公司 | 线程处理方法和图形处理器 |
CN115190102A (zh) * | 2022-07-22 | 2022-10-14 | 北京象帝先计算技术有限公司 | 信息广播方法、装置、电子单元、soc及电子设备 |
Families Citing this family (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7743233B2 (en) | 2005-04-05 | 2010-06-22 | Intel Corporation | Sequencer address management |
US8079035B2 (en) * | 2005-12-27 | 2011-12-13 | Intel Corporation | Data structure and management techniques for local user-level thread data |
US20070204266A1 (en) * | 2006-02-28 | 2007-08-30 | International Business Machines Corporation | Systems and methods for dynamically managing virtual machines |
JP2008152594A (ja) * | 2006-12-19 | 2008-07-03 | Hitachi Ltd | マルチコアプロセッサ計算機の高信頼化方法 |
US8074274B2 (en) * | 2006-12-29 | 2011-12-06 | Intel Corporation | User-level privilege management |
US8959516B2 (en) | 2007-07-30 | 2015-02-17 | International Business Machines Corporation | Methods and systems for coordinated financial transactions in distributed and parallel environments |
US7904696B2 (en) * | 2007-09-14 | 2011-03-08 | Intel Corporation | Communication paths for enabling inter-sequencer communication following lock competition and accelerator registration |
US8719547B2 (en) | 2009-09-18 | 2014-05-06 | Intel Corporation | Providing hardware support for shared virtual memory between local and remote physical memory |
US8669990B2 (en) * | 2009-12-31 | 2014-03-11 | Intel Corporation | Sharing resources between a CPU and GPU |
JP5533206B2 (ja) * | 2010-04-30 | 2014-06-25 | 富士通株式会社 | 検証支援プログラム、検証支援装置、および検証支援方法 |
US8639993B2 (en) | 2010-11-11 | 2014-01-28 | Microsoft Corporation | Encoding data to enable it to be stored in a storage block that includes at least one storage failure |
US9081660B2 (en) | 2011-08-09 | 2015-07-14 | Sandisk Technologies Inc. | Method and system for efficiently swapping pieces into and out of DRAM |
US8863141B2 (en) | 2011-12-14 | 2014-10-14 | International Business Machines Corporation | Estimating migration costs for migrating logical partitions within a virtualized computing environment based on a migration cost history |
US8694995B2 (en) | 2011-12-14 | 2014-04-08 | International Business Machines Corporation | Application initiated negotiations for resources meeting a performance parameter in a virtualized computing environment |
US10303618B2 (en) * | 2012-09-25 | 2019-05-28 | International Business Machines Corporation | Power savings via dynamic page type selection |
US9130979B2 (en) * | 2012-12-11 | 2015-09-08 | Microsoft Technology Licensing, Llc | Systems and methods for using virtual machines to sequence native applications into virtual packages and for reimaging virtual machines |
US9619364B2 (en) | 2013-03-14 | 2017-04-11 | Nvidia Corporation | Grouping and analysis of data access hazard reports |
CN106687965B (zh) | 2013-11-13 | 2019-10-01 | 凡弗3基因组有限公司 | 用于传送并且预处理测序数据的系统和方法 |
US9886736B2 (en) * | 2014-01-20 | 2018-02-06 | Nvidia Corporation | Selectively killing trapped multi-process service clients sharing the same hardware context |
US10152312B2 (en) | 2014-01-21 | 2018-12-11 | Nvidia Corporation | Dynamic compiler parallelism techniques |
US9817664B2 (en) | 2015-02-19 | 2017-11-14 | Apple Inc. | Register caching techniques for thread switches |
US10453427B2 (en) | 2017-04-01 | 2019-10-22 | Intel Corporation | Register spill/fill using shared local memory space |
GB201717303D0 (en) | 2017-10-20 | 2017-12-06 | Graphcore Ltd | Scheduling tasks in a multi-threaded processor |
US10606641B2 (en) | 2017-10-20 | 2020-03-31 | Graphcore Limited | Scheduling tasks in a multi-threaded processor |
Family Cites Families (29)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4320453A (en) * | 1978-11-02 | 1982-03-16 | Digital House, Ltd. | Dual sequencer microprocessor |
US5627987A (en) * | 1991-11-29 | 1997-05-06 | Kabushiki Kaisha Toshiba | Memory management and protection system for virtual memory in computer system |
US5559977A (en) * | 1992-08-04 | 1996-09-24 | Intel Corporation | Method and apparatus for executing floating point (FP) instruction pairs in a pipelined processor by stalling the following FP instructions in an execution stage |
US5359570A (en) * | 1992-11-13 | 1994-10-25 | Silicon Storage Technology, Inc. | Solid state peripheral storage device |
DE69425310T2 (de) * | 1993-10-18 | 2001-06-13 | Via Cyrix Inc | Mikrosteuereinheit für einen superpipeline-superskalaren Mikroprozessor |
US5701450A (en) * | 1994-02-25 | 1997-12-23 | Seagate Technology, Inc. | System including ATA sequencer microprocessor which executes sequencer instructions to handle plurality of real-time events allowing to perform all operations without local microprocessor intervention |
JP3231571B2 (ja) * | 1994-12-20 | 2001-11-26 | 日本電気株式会社 | 順序付きマルチスレッド実行方法とその実行装置 |
US5812741A (en) * | 1996-02-14 | 1998-09-22 | Jack Kennedy Metal Products And Buildings, Inc. | Serial sequencers connected in parallel |
US5961639A (en) * | 1996-12-16 | 1999-10-05 | International Business Machines Corporation | Processor and method for dynamically inserting auxiliary instructions within an instruction stream during execution |
WO1998043193A2 (en) * | 1997-03-21 | 1998-10-01 | University Of Maryland | Spawn-join instruction set architecture for providing explicit multithreading |
CN1206145A (zh) * | 1997-06-30 | 1999-01-27 | 索尼公司 | 带有流水线处理电路的信号处理器及其方法 |
US6243735B1 (en) | 1997-09-01 | 2001-06-05 | Matsushita Electric Industrial Co., Ltd. | Microcontroller, data processing system and task switching control method |
US6263404B1 (en) * | 1997-11-21 | 2001-07-17 | International Business Machines Corporation | Accessing data from a multiple entry fully associative cache buffer in a multithread data processing system |
US6209066B1 (en) * | 1998-06-30 | 2001-03-27 | Sun Microsystems, Inc. | Method and apparatus for memory allocation in a multi-threaded virtual machine |
US7409694B2 (en) * | 1998-09-09 | 2008-08-05 | Microsoft Corporation | Highly componentized system architecture with loadable virtual memory manager |
US6374314B1 (en) * | 1998-09-28 | 2002-04-16 | Raytheon Company | Method for managing storage of data by storing buffer pointers of data comprising a sequence of frames in a memory location different from a memory location for pointers of data not comprising a sequence of frames |
US6349363B2 (en) * | 1998-12-08 | 2002-02-19 | Intel Corporation | Multi-section cache with different attributes for each section |
US6389449B1 (en) | 1998-12-16 | 2002-05-14 | Clearwater Networks, Inc. | Interstream control and communications for multi-streaming digital processors |
US6349380B1 (en) * | 1999-03-12 | 2002-02-19 | Intel Corporation | Linear address extension and mapping to physical memory using 4 and 8 byte page table entries in a 32-bit microprocessor |
US6578133B1 (en) * | 2000-02-24 | 2003-06-10 | Stanley M. Hyduke | MIMD array of single bit processors for processing logic equations in strict sequential order |
US6931641B1 (en) | 2000-04-04 | 2005-08-16 | International Business Machines Corporation | Controller for multiple instruction thread processors |
FR2809508B1 (fr) * | 2000-05-23 | 2002-08-30 | Thomson Csf | Systeme et methode de gestion d'une architecture multi-ressources |
US6665755B2 (en) * | 2000-12-22 | 2003-12-16 | Nortel Networks Limited | External memory engine selectable pipeline architecture |
US6810472B2 (en) * | 2002-06-24 | 2004-10-26 | Intel Corporation | Page handling efficiency in a multithreaded processor |
US7562362B1 (en) * | 2003-06-18 | 2009-07-14 | Apple Inc. | User control of task priority |
KR100591755B1 (ko) * | 2003-07-22 | 2006-06-22 | 삼성전자주식회사 | 복수의 스레드를 동시에 처리하는 장치 및 방법 |
JP2005044363A (ja) * | 2003-07-22 | 2005-02-17 | Samsung Electronics Co Ltd | 複数のスレッドを同時に処理する装置及び方法 |
WO2005022381A2 (en) * | 2003-08-28 | 2005-03-10 | Mips Technologies, Inc. | Integrated mechanism for suspension and deallocation of computational threads of execution in a processor |
US7743233B2 (en) | 2005-04-05 | 2010-06-22 | Intel Corporation | Sequencer address management |
-
2005
- 2005-04-05 US US11/100,032 patent/US7743233B2/en not_active Expired - Fee Related
-
2006
- 2006-04-05 KR KR1020077025166A patent/KR100996753B1/ko not_active IP Right Cessation
- 2006-04-05 KR KR1020097012951A patent/KR101136610B1/ko not_active IP Right Cessation
- 2006-04-05 JP JP2008505619A patent/JP5058970B2/ja not_active Expired - Fee Related
- 2006-04-05 WO PCT/US2006/013263 patent/WO2006108169A2/en active Application Filing
- 2006-04-05 DE DE112006000807.2T patent/DE112006000807B4/de not_active Expired - Fee Related
- 2006-04-05 CN CN2006800199875A patent/CN101189575B/zh not_active Expired - Fee Related
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103136047A (zh) * | 2011-11-30 | 2013-06-05 | 大唐联诚信息系统技术有限公司 | 一种多线程管理方法及架构 |
CN103136047B (zh) * | 2011-11-30 | 2016-08-17 | 大唐联诚信息系统技术有限公司 | 一种多线程管理方法及架构 |
CN106650923A (zh) * | 2015-10-08 | 2017-05-10 | 上海兆芯集成电路有限公司 | 具有神经存储器与神经处理单元阵列与定序器的神经网络单元 |
CN106650923B (zh) * | 2015-10-08 | 2019-04-09 | 上海兆芯集成电路有限公司 | 具有神经存储器与神经处理单元与定序器的神经网络单元 |
CN108780425A (zh) * | 2016-03-10 | 2018-11-09 | 微软技术许可有限责任公司 | 受保护指针 |
CN111712793A (zh) * | 2018-02-14 | 2020-09-25 | 华为技术有限公司 | 线程处理方法和图形处理器 |
CN111712793B (zh) * | 2018-02-14 | 2023-10-20 | 华为技术有限公司 | 线程处理方法和图形处理器 |
CN111414313A (zh) * | 2019-01-07 | 2020-07-14 | 爱思开海力士有限公司 | 数据存储装置及数据存储装置的操作方法 |
CN111414313B (zh) * | 2019-01-07 | 2023-09-15 | 爱思开海力士有限公司 | 数据存储装置及数据存储装置的操作方法 |
CN115190102A (zh) * | 2022-07-22 | 2022-10-14 | 北京象帝先计算技术有限公司 | 信息广播方法、装置、电子单元、soc及电子设备 |
CN115190102B (zh) * | 2022-07-22 | 2024-04-16 | 北京象帝先计算技术有限公司 | 信息广播方法、装置、电子单元、soc及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
US7743233B2 (en) | 2010-06-22 |
CN101189575B (zh) | 2010-05-19 |
KR100996753B1 (ko) | 2010-11-25 |
KR101136610B1 (ko) | 2012-04-23 |
JP5058970B2 (ja) | 2012-10-24 |
KR20090081436A (ko) | 2009-07-28 |
WO2006108169A2 (en) | 2006-10-12 |
WO2006108169A3 (en) | 2007-04-12 |
DE112006000807T5 (de) | 2008-01-31 |
DE112006000807B4 (de) | 2014-01-30 |
KR20070121812A (ko) | 2007-12-27 |
US20060224858A1 (en) | 2006-10-05 |
JP2008536224A (ja) | 2008-09-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101189575B (zh) | 定序器地址管理 | |
CN101038543B (zh) | 用于持续性用户级线程的设备、系统和方法 | |
CN100444135C (zh) | 用于短暂高速缓存存储的方法和处理器 | |
CN101251792B (zh) | 用于受应用管理的线程单元的结构化异常处理 | |
US7725689B2 (en) | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts | |
US8079035B2 (en) | Data structure and management techniques for local user-level thread data | |
CN1538296B (zh) | 用于调度协处理器的处理的方法和系统 | |
CN100555247C (zh) | 在多核/多线程处理器中高速缓存的公平共享 | |
CN101160565B (zh) | 无操作系统干预情况下调度os隔离定序器上的线程的机制 | |
US8990531B2 (en) | Multiple time granularity support for online classification of memory pages based on activity level | |
US8291430B2 (en) | Optimizing system performance using spare cores in a virtualized environment | |
CN103562866A (zh) | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 | |
CN103635875A (zh) | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 | |
CN103547993A (zh) | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 | |
GB2416886A (en) | Distributed computing | |
CN102597972A (zh) | 虚拟计算机系统、区域管理方法及程序 | |
CN101027642A (zh) | 处理器 | |
Cavé et al. | Traleika glacier: A hardware-software co-designed approach to exascale computing | |
Cristóbal-Salas et al. | Incomplete Information Processing for Optimization of Distributed Applications. | |
De Villiers | Micro-kernel support for a lightweight extensible workstation operating system | |
LINUX | VIRTUAL MEMORY MANAGEMENT IN THE |
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 |
Granted publication date: 20100519 Termination date: 20160405 |
|
CF01 | Termination of patent right due to non-payment of annual fee |