CN103218209B - 控制分支预测逻辑的方法和装置 - Google Patents
控制分支预测逻辑的方法和装置 Download PDFInfo
- Publication number
- CN103218209B CN103218209B CN201310024377.6A CN201310024377A CN103218209B CN 103218209 B CN103218209 B CN 103218209B CN 201310024377 A CN201310024377 A CN 201310024377A CN 103218209 B CN103218209 B CN 103218209B
- Authority
- CN
- China
- Prior art keywords
- branch prediction
- prediction logic
- state
- instruction
- supervisory routine
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 98
- 230000008569 process Effects 0.000 claims abstract description 79
- 238000012545 processing Methods 0.000 claims description 27
- 230000004044 response Effects 0.000 claims description 23
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 claims description 10
- 238000005457 optimization Methods 0.000 abstract description 3
- 238000004891 communication Methods 0.000 description 132
- 238000003860 storage Methods 0.000 description 32
- 238000010586 diagram Methods 0.000 description 17
- 238000013461 design Methods 0.000 description 13
- 239000000872 buffer Substances 0.000 description 12
- 238000004321 preservation Methods 0.000 description 11
- 238000006243 chemical reaction Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 238000011084 recovery Methods 0.000 description 9
- 230000005540 biological transmission Effects 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 238000009826 distribution Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 230000006835 compression Effects 0.000 description 2
- 238000007906 compression Methods 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000012634 fragment Substances 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000035772 mutation Effects 0.000 description 1
- 238000006386 neutralization reaction Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 238000011946 reduction process Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000002194 synthesizing effect Effects 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
-
- 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
- G06F9/3804—Instruction prefetching for branches, e.g. hedging, branch folding
- G06F9/3806—Instruction prefetching for branches, e.g. hedging, branch folding using address prediction, e.g. return stack, branch history buffer
-
- 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/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3848—Speculative instruction execution using hybrid branch prediction, e.g. selection between prediction techniques
-
- 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/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3842—Speculative instruction execution
- G06F9/3844—Speculative instruction execution using dynamic branch prediction, e.g. using branch history tables
-
- 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/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 or look ahead
- G06F9/3861—Recovery, e.g. branch miss-prediction, exception handling
- G06F9/3863—Recovery, e.g. branch miss-prediction, exception handling using multiple copies of the architectural state, e.g. shadow registers
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Microcomputers (AREA)
- Logic Circuits (AREA)
Abstract
本发明是控制分支预测逻辑的方法和装置。将管理程序和管理程序托管的一个或多个程序(例如,访客操作系统和/或用户进程或应用)配置成通过独立管理程序模式和访客模式和/或用户模式指令,选择性地保存和恢复分支预测逻辑的状态。这样的话,可以为从而托管的不同操作系统和用户应用采用不同分支预测策略,提供分支预测逻辑的更细粒度优化。
Description
技术领域
本发明一般涉及数据处理,尤其涉及处理器架构以及用在其中的分支预测逻辑。
背景技术
随着半导体技术在时钟速度的提高方面越来越接近实际极限地继续缓慢向前发展,设计师们越来越关注处理器架构中的并行性以便提高性能。在芯片级上,往往将多个处理核心布置在同一芯片上,它们以与独立处理器芯片,或某种程度上,与完全独立计算机几乎相同的方式起作用。另外,甚至在核心内,也通过专门用于处理特定类型的操作的多个执行单元的使用来应用并行性。在许多情况下也应用流水线,以便将可能需要多个时钟周期来执行的某些操作分解成几个阶段,以便使其他操作能够在较早操作完成之前开始。还采用多线程处理以便使多个指令流能够得到并行处理,从而在任何给定时钟周期中都能够进行更全面工作。
在处理器设计方面取得进步的另一个领域是分支预测的领域,该分支预测试图在执行条件分支指令之前,根据与分支指令相联系地执行的某种比较的结果,预测分支指令将分支到不同代码路径还是沿着相同代码路径继续下去。分支指令例如可以用于从高速缓存或更低级存储器中预取指令,以便当最终定下分支指令时缩短装载和执行那些指令的等待时间。另外,在高级流水线化架构中,分支预测可以用于在定下分支指令之前开始执行来自预测分支的指令,以便在定下分支指令之后可以尽可能早地提交那些指令的结果。
当正确预测了分支时,倘若在执行分支指令与为分支指令之后的执行预测的指令之间可能存在极短的等待时间,则可以使性质得到相当大提高。另一方面,当错误预测了分支时,则往往不得不刷新执行的流水线,并且使处理器的状态从根本上反绕,以便可以执行来自正确路径的指令。
因此,在技术上已经作了大量的努力来提高分支预测的精度,因此通过分支预测逻辑将错误分支预测的频率降到最低。许多分支预测逻辑实现例如依靠历史信息,并且基于如果上一次执行分支指令时发生了分支,则在下一次执行该分支指令时存在发生分支的可能性的假设。在许多实现中,例如,使用分支历史表来存储与特定分支指令相联系的条目,以便当遇到那些分支指令时,可以根据与这样的分支指令相联系存储的数据作出预测。
但是,在处理器中实现分支预测逻辑存在许多挑战。例如,提高分支预测逻辑的精度往往需要使用可以使分支预测减慢和增加实现逻辑所需的逻辑电路的数量的更复杂逻辑。关于基于历史的分支预测逻辑,精度往往与经由该逻辑存储的历史信息的数量成正比;但是,扩大分支历史表的存储容量需要附加逻辑电路。在许多应用中,希望使处理器芯片中专用于分支预测逻辑的逻辑电路的数量最小,例如,以便降低功耗和/或成本,或腾出额外的空间来实现其他功能。
另外,已经发现,分支预测算法往往不怎么适用于某些类型的程序代码。像,例如,二叉树搜索那样的一些程序代码实际上呈现随机分支特征,以及在分支指令的一次执行期间所作的分支判定可能提供不了在下一次执行该指令时将作出什么判定的见解。另外,在在处理核心中同时执行多个线程的多线程环境下,多个线程共享的分支预测表的有限大小可以导致历史信息随着遇到新分支指令而被频繁放弃,使得特定分支指令的历史信息到以后执行那个分支指令的时候可能不再处在分支预测表中。
事实上,已经发现,在一些情况下,当错误预测的百分比上升到错误预测的损失超过等待时间的水平时,分支预测实际上可能使性能下降,如果处理核心在尝试在适当代码路径中执行指令之前等待定下分支指令,则会出现该等待时间。
一些传统处理器设计提供了选择性禁用分支预测逻辑的能力。另外,一些传统处理器设计提供了保存和恢复分支预测逻辑的状态的能力。尤其,基于历史的分支预测逻辑趋向于随着收集到更多历史信息使精度随时间提高;但是,如果多个独立线程正在以有限的存储量访问分支预测逻辑,则一个线程的历史信息的收集可能使其他线程的历史信息被放弃。但是,通过保存和恢复分支预测逻辑的状态,往往可以为不同代码段“装填”分支预测逻辑,以便过去为那些代码段收集的历史信息在下一次执行那些代码段时更有可能驻留在分支预测逻辑中。
虽然选择性禁用分支预测逻辑和保存/恢复分支预测逻辑的状态的能力可以解决传统分支预测的一些缺点,但传统设计的特点是缺乏解决不同状况的灵活性,尤其在可以在上面执行具有极大不同运行特性的许多不同类型应用的更复杂和高性能数据处理系统中。
例如,许多高性能数据处理系统利用在往往称为管理程序的管理级软件的管理下使多个操作系统能够在公用硬件平台上得到托管的虚拟化。作为管理程序的访客运行的每种操作系统又可能托管在操作系统环境下以独立进程运行的一个或多个用户应用。运行具有不怎么适合从分支预测的观点推广的特性的不同算法的众多不同应用可能共存在这样的系统中,使得难以提供最佳地适合所有情形的分支预测策略。
因此,在技术上仍然明显需要以灵活和有效方式控制处理核心中的分支预测逻辑的方式。
发明内容
本发明通过提供模拟化支持解决了与现有技术相联系的这些和其他问题,该模拟化支持允许管理程序和管理程序托管的一个或多个程序(例如,访客操作系统和/或用户进程(process)或应用)两者,通过独立管理程序模式和访客模式和/或用户模式指令,选择性地保存和恢复分支预测逻辑的状态。这样的话,可以为托管的不同操作系统和用户应用采用不同分支预测策略,从而提供分支预测逻辑的更细粒度优化。
按照本发明的一个方面,数据处理系统中的分支预测逻辑可以通过如下步骤来控制:响应处理核心为驻留在数据处理系统中的管理程序执行的第一管理程序模式指令,在处理核心中保存分支预测逻辑的第一状态;响应处理核心为管理程序执行的第二管理程序模式指令,恢复分支预测逻辑的第一状态;响应处理核心为管理程序托管的程序执行的第三指令,保存分支预测逻辑的第二状态;以及响应处理核心执行的和管理程序托管的第四指令,恢复分支预测逻辑的第二状态。
表征本发明的这些和其他优点和特征阐述在附在本文中和形成本文的进一步部分的权利要求书中。但是,为了更好地理解本发明,以及通过其使用达到的优点和目的,应该参考附图以及描述本发明的示范性实施例的伴随描述性内容。
附图说明
图1是包括可用在按照本发明实施例的数据处理中的示范性计算机的示范性自动计算机械的框图;
图2是在图1的计算机中实现的示范性NOC的框图;
图3是更详细地例示图2的NOC当中的节点的示范性实现的框图;
图4是例示图2的NOC当中的IP块的示范性实现的框图;
图5是可以为按照本发明的分支预测逻辑的细粒度控制实现虚拟化支持的数据处理系统的框图;
图6是在图5中提及的专用寄存器中的示范性启用模式控制寄存器的框图;
图7是能够用在图5的数据处理系统中的示范性进程特有启用模式数据结构的框图;
图8是能够用在图5的数据处理系统中的示范性线程特有启用模式数据结构的框图;
图9是例示当利用选择性启用分支预测逻辑在管理程序、访客操作系统和用户模式程序代码之间进行背景切换时图5的数据处理系统执行的操作的示范性顺序的流程图;
图10是在图5中提及的专用寄存器中的示范性保存模式控制寄存器的框图;
图11是能够用在图5的数据处理系统中保存和恢复分支预测逻辑状态数据的示范性状态装载/存储单元的框图;
图12是例示当随着分支预测逻辑状态的保存和恢复在管理程序、访客操作系统和用户模式程序代码之间进行背景切换时图5的数据处理系统执行的操作的示范性顺序的流程图;
图13是例示如图12所提及为了保存分支预测逻辑状态而执行的操作的示范性顺序的流程图;以及
图14是例示如图12所提及为了恢复分支预测逻辑状态而执行的操作的示范性顺序的流程图。
具体实施方式
按照本发明的实施例通过多级虚拟化数据处理系统来利用分支预测逻辑的细粒度控制,为不同应用和工作负载优化分支预测,从而当处理不同类型的工作负载时提高整体数据处理系统性能。
在一些实施例中,例如,将管理程序和驻留在数据处理系统中和由管理程序托管的一个或多个访客操作系统配置成通过独立管理程序模式或访客模式指令选择性地启用或禁用分支预测逻辑。类似地,在一些实施例中,管理程序和管理程序托管的一个或多个程序(例如,访客操作系统和/或用户进程或应用),通过独立管理程序模式和访客模式和/或用户模式指令选择性地保存和恢复分支预测逻辑的状态。通过以这些方式之一或两者控制分支预测逻辑,可以为从而托管的不同操作系统和用户应用采用不同分支预测策略,提供用在数据处理系统的处理核心中的分支预测逻辑的更细粒度优化。
关于这方面,管理程序可以包括任何数量的管理模式程序,其能够虚拟化或托管一个或多个访客操作系统,并且可以在各种水平上的软件(例如,固件、内核等)实现。管理程序通常将数据处理系统中的底层硬件虚拟化并给出与从而托管的操作系统的接口,以便每个操作系统仿佛它是驻留在数据处理系统的物理硬件中的唯一操作系统似地工作。访客操作系统通常是底层管理程序托管和在操作系统环境下支持运行在一个或多个同时进程中的一个或多个用户应用的执行的操作系统、逻辑分区、虚拟机或它们的组合体。与管理程序类似,访客操作系统基本上将指定给访客操作系统的硬件资源虚拟化和分配给一个或多个用户应用和进程。用户应用又可以是能够运行在访客操作系统中的进程内的任何程序。
应该懂得,在许多数据处理环境下,如此使用的处理器架构支持以不同优先级和访问权限在上面同时执行不同级别的软件。在虚拟化环境下,管理程序的程序代码通常以监管程序或管理程序模式运行,而用户应用通常以较低优先级的用户模式运行。访客操作系统也可以监管程序模式运行或可以以在监管程序模式与用户模式之间的独立访客模式运行。
应该懂得,分支预测逻辑可以并入以使与分支指令相联系的等待时间最短为主要目标任何数量逻辑设计。许多分支预测逻辑设计利用分支历史表,以及许多可能包括像g-共享逻辑、链路堆栈逻辑、分支目标缓冲器等。
如上所述,在本发明的一些实施例中,任何或所有管理程序、访客操作系统、和用户应用和程序选择性地启用和禁用分支预测逻辑。关于这方面,启用或禁用分支预测逻辑可以被认为包括启用或禁用在特定分支预测逻辑设计中实现的所有或只有一部件子集。另外,禁用分支预测逻辑可以使分支预测逻辑得到重置,例如,在一些实施例中,从分支预测表中清除掉一些条目。但是,在其他实施例中,禁用分支预测逻辑可以与“暂停”逻辑类似,例如,以便不作预测,和不收集历史信息,但保留已经收集的历史信息、和分支预测逻辑的当前状态的其他特征直到该逻辑被重新启用,以便不会丢失状态或历史信息。
此外,如上所述,在本发明的一些实施例中,可以代表管理程序、访客操作系统和/或用户应用或程序选择性地保存和恢复分支预测逻辑的状态。可以保存或恢复的状态可以包括表征该逻辑的整体状态的在分支预测逻辑中保留的任何或所有数据,包括,例如,分支表条目、分支目标缓冲器数据、链路堆栈条目、g-共享数据等。
其他变种和变型对于本领域的普通技术人员来说是显而易见的。因此,本发明不局限于本文讨论的特定实现。
硬件和软件环境
现在转到附图,其中相同标号在几个视图中始终表示相同部分。图1例示了包括可用在按照本发明实施例的数据处理中的示范性计算机10的示范性自动计算机械。图1的计算机10包括至少一个计算机处理器12或“CPU”,以及通过高速存储器总线16和总线适配器18与12连接和与计算机10的其他部件连接的随机访问存储器14(“RAM”)。
存储在RAM14中的是应用程序20、执行像例如文字处理、电子表格、数据库操作、视频游戏、股市模拟、原子量子过程模拟或其他用户级应用那样的特定数据处理任务的用户级计算机程序指令的模块。此外存储在RAM14中的是操作系统22。可结合本发明的实施例使用的操作系统包括UNIXTM、LinuxTM、微软WindowsXPTM、AIXTM、IBM的i5/OSTM、和如本领域的普通技术人员可想到的其他操作系统。图1的例子中的操作系统22和应用程序20被显示在RAM14中,但这样软件的许多部件通常也存储在非易失性存储器中,例如,盘驱动器24上。
正如可以从下面更明显看到的那样,按照本发明的实施例可以在片上网络(NOC)集成电路器件或芯片内实现,这样,计算机10被例示成包括两个示范性NOC:视频适配器26和协处理器28。NOC视频适配器26可替代地可以称为图形适配器,它是特别为到像显示屏或计算机监视器那样的显示设备30的图形输出而设计的I/O适配器的例子。NOC视频适配器26通过高速视频总线32、总线适配器18、和也是高速总线的前侧总线34与处理器12连接。NOC协处理器28通过总线适配器18、和也是高速总线的前侧总线34和36与处理器12连接。图1的NOC协处理器1可以被优化成,例如,在主处理器12的命令下加速特定数据处理任务。
图1的示范性NOC视频适配器26和NOC协处理器28每一个都包括NOC,其包括集成处理器(“IP”)块、路由器、存储器通信控制器、和网络接口控制器,它们的细节将在下面结合图2-3作更详细讨论。NOC视频适配器和NOC协处理器每一个都是为使用并行处理以及需要快速随机访问共享存储器的程序优化的。但是,从本公开中受益的本领域普通技术人员应该懂得,本发明可以在除了NOC设备和设备框架之外的其他设备和设备架构中实现。因此,本发明不局限于NOC设备内的实现。
图1的计算机10包括通过扩展总线40和总线适配器18与处理器12和计算机10的其他部件耦合的盘驱动适配器38。盘驱动适配器38以盘驱动器24的形式将非易失性数据存储与计算机10连接,以及可以例如使用集成驱动电子设备(“IDE”)适配器、小型计算机系统接口(SCSI)适配器、和本领域的普通技术人员可想到的其他适配器来实现。正如本领域的普通技术人员可想到的那样,非易失性计算机存储器还可以实现成光盘驱动器、电可擦除可编程只读存储器(所谓的“EEPROM”或“闪速”存储器)、RAM驱动器等。
计算机10还包括通过,例如,控制到像计算机显示屏那样的显示设备的输出,以及来自像键盘和鼠标那样的用户输入设备44的用户输入的软件驱动器和计算机硬件,实现面向用户输入/输出的一个或多个输入/输出(“I/O”)适配器42。另外,计算机10还用于与其他计算机48数据通信和与数据通信网络50数据通信的通信适配器46。这样的数据通信可以通过RS-232连接件,通过像通用串行总线(“USB”)那样的外部总线,通过像IP数据通信网络那样的数据通信网络,和以本领域的普通技术人员可想到的其他方式串行实现。通信适配器实现一台计算机直接或通过数据通信网络将数据通信信息发送给另一台计算机的硬件级数据通信。适合用在计算机10中的通信适配器的例子包括用于有线拨号通信的调制解调器、用于有线数据通信网络通信的以太网(IEEE802.3)适配器、和用于无线数据通信网络通信的802.11适配器。
为了进一步说明,图2展示了按照本发明实施例的示范性NOC102的功能框图。图2中的NOC是在“芯片”100上,即,在集成电路上实现的。NOC102包括分组成互连节点的集成处理器(“IP”)块104、路由器110、存储器通信控制器106、和网络接口控制器108。每个IP块104通过存储器通信控制器106和网络接口控制器108适用于路由器110。每个存储器通信控制器106控制IP块与存储器之间的通信,每个网络接口控制器108控制通过路由器110的IP块间通信。
在NOC102中,每个IP块代表作为组装块用于NOC内的数据处理的同步或异步逻辑设计的可再用单元。术语“IP块”有时被解释成“知识产权块”,有效地将IP块指定成某一方拥有的设计,即,某一方授权给半导体电路的其他用户或设计者的知识产权。但是,在本发明的范围内,不要求IP受任何特定拥有者支配,因此,该术语在本说明书中总是被解释成“集成处理器块”。如本文所述,IP块是可以是或可以不是知识产权的主体的逻辑、单元或芯片布局设计的可再用单元。IP块是可以形成ASIC芯片设计或FPGA逻辑设计的逻辑核心。
通过类比描述IP块的一种方式是IP块对于NOC设计就像程序库对于计算机编程或具体集成电路部件对于印刷电路板设计。在按照本发明实施例的NOC中,IP块可以像通用门网表那样,像整个专用或通用微处理器那样,或以本领域的普通技术人员可想到的其他方式实现。与高级程序应用的汇编代码列表类似,网表是IP块逻辑功能的布尔代数表示(门、标准单元)。NOC也可以,例如,以用像Verilog或VHDL那样的硬件描述语言描述的可合成形式实现。除了网表和可合成实现之外,NOC也可以用较低级物理描述表达。像SERDES、PLL、DAC、ADC等那样的模拟IP块元件可以以像GDSII那样的晶体管布局格式分布。IP块的数字元件有时也以布局格式提供。还应该懂得,IP块以及按照本发明实现的其他逻辑电路可以以在各种细节水平上定义实现这样逻辑的电路安排的功能和/或布局的计算机数据文件,例如,逻辑定义程序代码的形式分发。因此,虽然在下文中以在全能集成电路器件、利用这样设备的数据处理系统、和其他有形、物理硬件电路中实现的电路安排为背景描述本发明,但从本公开中受益的本领域普通技术人员应该懂得,本发明也可以在程序产品内实现,以及本发明与用于分发程序产品的计算机可读存储介质的特定类型无关地同等应用。计算机可读存储介质的例子包括,但不限于,像易失性和非易失性存储设备、软盘、硬盘驱动器、CD-ROM、和DVD(及其他)那样的物理、可记录型介质。
图2的例子中的每个IP块104通过存储器通信控制器106适用于路由器110。每个存储器通信控制器是适用于提供IP块与存储器之间的数据通信的同步和异步逻辑电路的总成。这样IP块与存储器之间的通信的例子包括存储器装载指令和存储器存储指令。存储器通信控制器106将在下面参考图3作更详细描述。每个IP块104也通过网络接口控制器108适用于路由器110,网络接口控制器108通过IP块104之间的路由器110控制通信。IP块之间的通信的例子包括在并行应用中和在流水线应用中在IP块之间传送数据和处理数据的指令的消息。网络接口控制器108也将在下面参考图3作更详细描述。
各路由器110和它们之间的相应链路118实现NOC的网络操作。链路118可以是在连接所有路由器的物理、并行总线上实现的分组结构。也就是说,每种链路可以在宽到足以同时容纳包括所有首标信息和有效负载数据的整个数据交换分组的总线上实现。如果分组结构包括,例如,含有八字节首标和56个字节有效负载数据的64个字节,则对着每种链路的总线是64字节宽,512条线。另外,每种链路可以是双向的,以便如果链路分组结构包括64个字节,则总线实际上在每个路由器与网络中它的每个邻居之间包含1024条线。在这样的实现中,一个消息可以包括不止一个分组,但每个分组精确地与总线的宽度一致。在可替代实施例中,可以在只宽到足以容纳分组的一部分的总线上实现链路,使得将分组分割成多个小节(beat),例如,如果链路被实现成16个字节宽,或128条线,则将64字节分组分割成四个小节。应该懂得,不同的实现可以根据实际物理极限以及所希望的性能特征使用不同的总线宽度。如果路由器与总线的每个部分之间的连接被称为一个端口,则每个路由器包括五个端口,网络上的数据传输的四个方向各一个,第五个端口使路由器通过存储器通信控制器和网络接口控制器适用于特定IP块。
每个存储器通信控制器106控制IP块与存储器之间的通信。存储器可以包括片外主RAM112、通过存储器通信控制器106直接与IP块连接的存储器114、作为IP块116启用的片上存储器、和片上高速缓存。在NOC102中,例如,片上存储器114,116的任一个都可以实现成片上高速缓冲存储器。所有这些形式的存储器都可以布置在相同地址空间、物理空间或虚拟地址中,甚至对于直接附在IP块上的存储器也如此。因此,存储器寻址消息相对于IP块可以是完全双向的,因为这样的存储器可以直接从网络上的任何地点的任何IP块中寻址。IP块上的存储器116可以从那个IP块中或从NOC中的任何其他IP块中寻址。直接附在存储器通信控制器上的存储器114可以通过IP块寻址(该IP块通过那个存储器通信控制器适用于网络),以及也可以从NOC中的任何地方的任何其他IP块中寻址,。
NOC102包括例示了按照本发明实施例的NOC的两种可替代存储器架构的两个存储器管理单元(“MMU”)120,122。MMU120实现在IP块内,使IP块内的处理器可以在虚拟存储器中操作,而使NOC的整个其余架构可以在物理存储器地址空间中操作。MMU122是片外实现的,通过数据通信端口124与NOC连接。端口124包括在NOC与MMU之间传送信号所需的引脚和其他互连件,以及将消息分组从NOC分组格式转换成外部MMU122所需的总线格式的足够智能。MMU的外部地点意味着NOC的所有IP块中的所有处理器可以在虚拟存储器地址空间中操作,到片外存储器的物理地址的所有转换由片外MMU122管理。
除了使用MMU120,122例示的两种存储器架构之外,数据通信端口126还例示了可用在能够用在本发明实施例中的NOC中的第三存储器架构。端口126提供了NOC102的IP块104与片外存储器112之间的直接连接。当在处理路径中没有MMU时,这种架构使NOC的所有IP块都利用物理地址空间。在双向共享地址空间时,NOC的所有IP块可以通过通过直接与端口126连接的IP块引导、包括装载和存储的存储器寻址消息在地址空间中访问存储器。端口126包括在NOC与片外MMU112之间传送信号所需的引脚和其他互连件,以及将消息分组从NOC分组格式转换成片外MMU112所需的总线格式的足够智能。
在图2的例子中,将IP块之一指定成主接口处理器128。主接口处理器128提供NOC与可以安装NOC的主计算机10之间的接口,以及向NOC上的其他IP块提供数据处理服务,包括,例如,从主计算机接收和在NOC的IP块之间调度数据处理请求。NOC可以,例如,实现如上面参考图1的所述的较大型计算机10上的视频图形适配器26或协处理器28。在图2的例子中,主接口处理器128通过数据通信端口130与较大型主计算机连接。端口130包括在NOC与主计算机之间传送信号所需的引脚和其他互连件,以及将消息分组从NOC分组格式转换成主计算机10所需的总线格式的足够智能。在图1的计算机中的NOC协处理器的例子中,这样的端口提供了NOC协处理器28的链路结构与NOC协处理器28与总线适配器18之间的前侧总线36所需的协议之间的数据通信格式变换。
图3接着例示了更详细地例示用132笼统例示、在NOC102中的IP块104、存储器通信控制器106、网络接口控制器108和路由器110中实现的部件的功能框图。IP块104包括计算机处理器134和I/O功能136。在本例中,计算机存储器用IP块104中的随机访问存储器(“RAM”)138的片段表示。如上面参考图2所述的,存储器可以占据每个IP块上的内容可从NOC中的任何IP块寻访和访问的物理地址空间的片段。每个IP块中的处理器134、I/O能力136、和存储器138有效地将IP块实现成一般可编程微型计算机。但是,如上所述,在本发明的范围内,IP块一般代表作为组装块用于NOC内的数据处理的同步或异步逻辑设计的可再用单元。因此,将IP块实现成一般可编程微型计算机尽管是用于说明目的的普通实施例,但不会对本发明造成限制。
在图3的NOC102中,每个存储器通信控制器106包括多个存储器通信执行引擎140。启用每个存储器通信执行引擎140以便执行来自IP块104的存储器通信指令,包括网络与IP块104之间的双向存储器通信指令流141,142,144。存储器通信控制器执行的存储器通信指令不仅可以源自通过特定存储器通信控制器适用于路由器的IP块,而且可以源自NOC102中的任何地方的任何IP块104。也就是说,NOC中的任何IP块都可以生成存储器通信指令,并通过NOC的路由器将那种存储器通信指令发送给与另一个IP块相联系的另一个存储器通信控制器以便执行那种存储器通信指令。这样的存储器通信指令可以包括,例如,变换后备缓冲器控制指令、高速缓存控制指令、屏障指令、和存储器装载和存储指令。
启用每个存储器通信执行引擎140以便独立地和与其他存储器通信执行引擎并行地执行完整存储器通信指令。存储器通信执行引擎实现针对存储器通信指令的并发吞吐量优化的可伸缩存储器事务处理器。存储器通信控制器106支持为了同时执行多条存储器通信指令而全部同时运行的多个存储器通信执行引擎140。新存储器通信指令由存储器通信控制器106分配给存储器通信执行引擎140,存储器通信执行引擎140可以同时接受多个响应事件。在本例中,所有存储器通信执行引擎140都是相同的。因此,增减存储器通信控制器106可以同时管理的存储器通信指令的数量可以通过增减存储器通信执行引擎140的数量来实现。
在图3的NOC102中,启用每个网络接口控制器108以便将通信指令从命令格式转换成通过路由器110在IP块104之间传输的网络分组格式。通信指令可以由IP块104或由存储器通信控制器106以命令格式系统化,并以命令格式提供给网络接口控制器108。命令格式可以是与IP块104和存储器通信控制器106的架构寄存器文件相符的本机格式。网络分组格式通常是通过网络的路由器111传输所需的格式。每个这样的消息由一个或多个网络分组组成。在网络接口控制器从命令格式转换成分组格式的这样通信指令的例子包括在IP块与存储器之间的存储器装载指令和存储器存储指令。这样的通信指令也可以包括在IP块之间发送在并行应用中和在流水线应用中在IP块之间传送数据和处理数据的指令的消息的通信指令。
在图3的NOC102中,启用每个IP块以便通过IP块的存储器通信控制器向和从存储器发送基于存储器地址的通信信息,然后也通过它的网络接口控制器发送给网络。基于存储器地址的通信信息是IP块的存储器通信控制器的存储器通信执行引擎执行的像装载指令或存储指令那样的存储器访问指令。这样的基于存储器地址通信信息通常在IP块中发出,以命令格式系统化(formulated),并转交给存储器通信控制器以便加以执行。
许多基于存储器地址通信信息与消息业务一起执行,因为要访问的某个存储器可能处在物理存储器通信控制器地址空间中的任何地方上,芯片上或芯片外,直接附在NOC中的任何存储器通信控制器上,或最终通过NOC的IP块访问—与任何特定基于存储器地址通信信息出自哪个IP块无关。因此,在NOC102中,将与消息业务一起执行的所有基于存储器地址通信信息从存储器通信控制器传递到相关网络接口控制器,以便从命令格式转换成分组格式和在消息中通过网络发送。在转换成分组格式时,网络接口控制器还依赖于要通过基于存储器地址通信信息访问的一个或多个存储器地址识别分组的网络地址。利用存储器通地址寻址基于存储器地址的消息。每个存储器地址被网络接口控制器映射成网络地址,通常,负责一定范围物理存储器地址的存储器通信控制器的网络地点。存储器通信控制器106的网络地点自然也是那个存储器通信控制器的相关路由器110、网络接口控制器108、和IP块104的网络地点。每个网络接口控制器内的指令转换逻辑150能够为了通过NOC的路由器发送基于存储器地址通信信息而将存储器地址转换成网络地址。
一旦从网络的路由器110接收到消息业务,每个网络接口控制器108就审查每个分组是否有存储器指令。把包含存储器指令的每个分组交给与正在接收网络接口控制器相联系的存储器通信控制器106,存储器通信控制器106在将分组的其余有效负载发送给IP块作进一步处理之前执行存储器指令。这样,总是在IP块开始执行取决于特定存储器内容的消息当中的指令之前准备好存储器内容支持IP块的数据处理。
在图3的NOC102中,启用每个IP块104以便绕过其存储器通信控制器106,并且通过IP块的网络接口控制器108直接向网络发送IP块间、网络寻址通信信息146。网络寻址通信信息是通过网络地址引向另一个IP块的消息。如本领域的普通技术人员所想到,这样的消息发送流水线应用中的工作数据、SIMD应用中的IP块之间的单程序处理的多个数据等。这样的消息不同于基于存储器地址的通信信息,因为它们是知道通过NOC的路由器引向消息的网络地址的发出IP块一开始就网络寻址的。这样的网络寻址通信信息由IP块通过I/O功能136以命令格式传递给IP块的网络接口控制器,然后由网络接口控制器转换成分组格式并通过NOC的路由器发送给另一个IP块。这样的网络寻址通信信息146是双向的,取决于它们用在某特定应用中,潜在地转给NOC的每个IP块和从NOC的每个IP块转出。但是,启用每个网络接口控制器以便既将这样的通信信息发送给相关路由器又从相关路由器接收这样的通信信息,并启用每个网络接口控制器以便绕过相关存储器通信控制器106,既将这样的通信信息直接发送给相关IP块又从相关IP块直接接收这样的通信信息。
还启用图3的例子中的每个网络接口控制器108以便实现用类型表征网络分组的网络上的虚拟信道。每个网络接口控制器108包括虚拟信道实现逻辑148,虚拟信道实现逻辑148按类型分类每个通信指令,并且在以分组形式转交给路由器110以便在NOC上发送之前将指令的类型记录在网络分组格式的字段中。通信指令类型的例子包括IP块间基于网络地址消息、请求消息、对请求消息的响应、引向高速缓存的无效消息;存储器装载和存储消息;和对存储器装载消息的响应等。
图3的例子中的每个路由器110包括路由逻辑152、虚拟信道控制逻辑154、和虚拟信道缓冲器156。路由逻辑通常被实现成在由路由器110、链路118、和路由器之间的总线线路形成的网络中为数据通信实现数据通信协议堆栈的同步和异步逻辑的网络。路由逻辑152包括熟悉本领域的读者可以将片外网络与路由表相联系的功能,至少一些实施例中的路由表被认为太缓慢和麻烦难用在NOC中。实现成同步和异步逻辑的网络的路由逻辑可以配置成与单个时钟周期一样快地作出路由判定。本例中的路由逻辑通过选择转发在路由器中接收的每个分组的端口路由分组。每个分组包含使分组路由到网络地址。
在上面描述基于存储器地址的通信信息时,每个存储器地址被描述成由网络接口控制器映射成网络地址,即,存储器通信控制器的网络地点。存储器通信控制器106的网络地点自然也是那个存储器通信控制器的相关路由器110、网络接口控制器108、和IP块104的网络地点。因此,在IP块间或基于网络地址的通信信息中,因此,应用级数据处理将网络地址视作由NOC的路由器、链路、和总线线路形成的网络内的IP块的地点是常见的。图2例示了这样网络的一种组织是行和列的网格,其中每个网络地址可以实现成,例如,该网格的每组相关路由器、IP块、存储器通信控制器、和网络接口控制器的唯一标识符或该网格中的这样每组的x,y坐标。
在图3的NOC102中,每个路由器110实现两个或更多个虚拟通信信道,其中每个虚拟通信信道通过通信类型表征。通信指令类型,因此虚拟信道类型包括上述的那些:IP块间基于网络地址消息、请求消息、对请求消息的响应、引向高速缓存的无效消息;存储器装载和存储消息;和对存储器装载消息的响应等。为了支持虚拟信道,图3的例子中的每个路由器110还包括虚拟信道控制逻辑154和虚拟信道缓冲器156。虚拟信道控制逻辑154在每个接收的分组中检查它指定的通信类型,并针对那种通信类型将每个分组放在传出虚拟信道缓冲器中,以便通过端口发送给NOC上的相邻路由器。
每个虚拟信道缓冲器156具有有限存储空间。当在短时段内接收到许多分组时,虚拟信道缓冲器可以被填满—使得再也不能将分组放在缓冲器中。在其他协议中,将丢弃在缓冲器装满的虚拟信道上到达的分组。但是,在本例中利用总线线路的控制信号启用每个虚拟信道缓冲器156,以便通过虚拟信道控制逻辑劝告周围路由器暂停在虚拟信道中发送,也就是说,暂停发送特定通信类型的分组。当一个虚拟信道如此暂停时,所有其他虚拟信道不受影响-可以继续全容量地工作。控制信号一直通过每个路由器传回到每个路由器相关的网络接口控制器108。每个网络接口控制器被配置成根据这样信号的接收,拒绝从它的相关存储器通信控制器106或从它的相关IP块104接收暂停虚拟信道的通信指令。这样,虚拟信道的暂停影响实现虚拟信道的所有硬件,一直回到发出IP块。
暂停虚拟信道中的分组发送的一个效果是任何时候都不会丢弃分组。当路由器遇到在像,例如,互联网协议那样的一些不可靠协议下可能丢弃分组的状况时,图3的例子中的路由器可以通过它们的虚拟信道缓冲器156和它们的虚拟信道控制逻辑154暂停虚拟信道中分组的所有发送,直到缓冲器空间再次可用,从而没有任何必要丢弃分组。因此,图3的NOC可以利用极薄硬件层实现高度可靠网络通信协议。
图3的示范性NOC也可以配置成保持片上和片外存储器高速缓存之间的高速缓存一致性。每个NOC可以支持每一个对相同底层存储器地址空间操作的多个高速缓存。例如,高速缓存可以由IP块,由存储器通信控制器,或由NOC外部的高速缓存控制器控制。图2的例子中的片上存储器114,116的任一个也可以实现成片上高速缓存,以及在本发明的范围内,高速缓冲存储器也可以片外实现。
例示在图3中的每个路由器110包括五个端口,四个端口158A-D通过总线线路118与其他路由器连接,第五端口160通过网络接口控制器108和存储器通信控制器106将每个路由器与它的相关IP块104连接。正如从图2和3中的例示中可以看到的那样,NOC102的路由器110和链路118形成垂直和水平链路连接每个路由器中的垂直和水平端口的网格状网络。在图3的例示中,例如,端口158A,158C和160被命名为垂直端口,而端口158B和158D被命名为水平端口。
图4接着以另一种方式例示了按照本发明的IP块104的一种示范性实现,IP块104被实现成划分成指令单元(IU)162、执行单元(XU)164和辅助执行单元(AXU)166的处理元件。在例示的实现中,IU262包括从L1指令高速缓存(iCHCHE)170接收指令的多个指令缓冲器168。每个指令缓冲器168专用于多个,例如,四个对称多线程(SMT)硬件线程之一。有效到真正变换单元(iERAT)172与iCHCHE170耦合,用于将来自多个线程取出定序器174的指令取出请求变换成从较低位存储器中检索指令的真正地址。每个线程取出定序器174专用于特定硬件线程,和用于保证将相关线程要执行的指令取到iCHCHE中以便高度到适当执行单元。此外,如图4所示,取到指令缓冲器168中的指令也可以由分支预测逻辑176监视,分支预测逻辑176向每个线程取出定序器174提供暗示,以便使执行线程中分支引起的指令高速缓存丢失最少。
IU162还包括专用于每个硬件线程的相关性/发出逻辑块178,配置成定下相关性和控制指令从指令缓冲器168到XU164的发出。另外,在例示的实施例中,将单独相关性/发出逻辑块178配备在AXU166中,因此使不同线程能够同时将单独指令发给XU164和AXU166。在可替代实施例中,可以将逻辑180布置在IU162中,或可以完全省略它,以便逻辑178将指令发给AXU166。
XU164被实现成定点执行单元,包括与定点逻辑184、分支逻辑186和/或装载/存储逻辑188耦合的多个通用寄存器(GPR)182。装载/存储逻辑188与L1数据高速缓存(dCACHE)190耦合,以及由dERAT逻辑192提供有效到真正变换。XU164可以配置成实现几乎任何指令集,例如,所有或部分32b或64bPowerPC指令集。
AXU166起包括专用相关性/发出逻辑180以及一个或多个执行块194的逻辑执行单元的作用。AXU166可以包括任何数量的执行块,以及可以实现几乎任何类型的执行单元,例如,浮点单元,或像加密/解密单元、协处理器、矢量处理单元、图形处理单元、XML处理单元等那样的一个或多个专门执行单元。在例示的实施例中,AXU166包括与XU164的高速辅助接口,例如,以便支持AXU架构状态与XU架构状态之间的直接转变。
与IP块104的通信可以经由与NOC102耦合的网络接口控制器108,以上面结合图2讨论的方式管理。基于地址的通信,例如,访问L2高速缓冲存储器通信控制器可以与基于消息的通信一起提供。例如,每个IP块104可以包括专用内箱和/或外箱,以便管理IP块之间的节点间通信。
本发明的实施例可以在上面结合图1-4所述的硬件和软件环境内实现。从本公开中受益的本领域普通技术人员应该懂得,本发明可以在众多不同环境中实现,并且可以不偏离本发明的精神和范围地对上述硬件和软件实施例作其他修改。这样,本发明不局限于本文公开的特定硬件和软件环境。
分支预测逻辑的细粒度控制的虚拟化支持
由于保留和/或保证像能够提供精确分支预测结果的分支历史表数据那样的分支预测逻辑数据的重要性,按照本发明的实施例提供了访客模式和/或用户模式机构,以便启用和禁用结合管理程序模式机构操作的分支预测逻辑操作。
许多微处理器微架构包括完全或部分通过一个或多个分支历史表实现的硬件分支预测算法。(采取或未采取)分支结果的正确预测可以极大地影响整个CPU性能,尤其在失常微处理器中。因此,重要的是保证分支历史表内容和其他分支预测信息是准确的和代表未来代表流。
按照本发明的实施例扩展了管理程序代码控制分支预测逻辑操作的任何机构,例如,全局启用和禁用像分支历史表那样的分支预测逻辑的管理程序可访问控制寄存器。具体地,在仍然允许管理程序设置全局分支预测操作的时候,由于涉及到访客操作系统和/或用户自己的代码流,所以允许管理程序托管的访客操作系统的访客模式机构、和可选地,用户模式应用和进程控制分支预测逻辑。
在下文讨论的实施例中,可以支持几种功能,包括例如启用/禁用分支预测逻辑更新(例如,分支历史表更新)的用户模式和/或访客模式指令;根据进程标识符,启用/禁用分支预测逻辑更新(例如,分支历史表更新)的管理程序模式和/或访客模式指令;在应该推迟控制分支预测逻辑的环境下,限制访客操作系统和/或用户应用控制分支预测逻辑的访客模式和/或用户模式指令的管理程序启用/禁用;和用户模式控制的管理程序模式重置,以及其他特征。
同样,由于保留和/或保证像能够提供精确分支预测结果的分支预测历史表数据那样的分支预测逻辑数据的重要性,在一些实施例中也希望为细粒度机构保存和恢复分支预测逻辑状态提供保证。
通常,分支预测逻辑(例如,分支历史表)是给定处理核心内所有硬件线程和执行那些硬件线程的所有软件进程之间的共享资源。这可以导致分支历史表状态随着软件进程执行不同代码集翻来复去(thrash)的问题。使用软件实现使用散列算法、各种分支历史表大小、和其他技术来降低过程之间共享的影响;但是,这些技术的许多种非所希望地增加了分支预测逻辑的大小和复杂性。
相反,按照本发明的实施例可以为对保存和恢复分支预测逻辑的细粒度控制提供保证,这可以缩短该逻辑为在系统中执行的各种类型软件收集提高分支预测精度的历史信息的预热时间。这样的话,背景切换可以使软件能够利用那种进程特有的“预热”分支历史表来执行。另外,通过保存状态数据而不是使其被舍弃,为多种进程收集状态数据可以使分支预测逻辑的大小和复杂性得到降低。
正如下面更详细讨论的那样,按照本发明的实施例提供了例如保存和恢复分支历史表状态信息的指令,包括向/从存储器或其他存储介质保存/恢复分支预测逻辑状态的管理程序模式指令;向/从存储器保存/恢复分支预测逻辑状态的访客模式和/或用户模式指令;访客模式和/或用户模式保存/恢复指令的管理程序模式启用/禁用;和分支预测逻辑状态的管理程序模式重置。
现在转到图5,这个图形例示了可以为按照本发明的分支预测逻辑的细粒度控制实现虚拟化支持的数据处理系统200的示范性硬件和软件环境。从硬件202的角度来看,数据处理系统200包括多个处理器或处理单元204、存储器212和将数据处理系统与各种硬件资源,例如,外部网络、存储设备和网络等耦合的I/O层214,每个处理器或处理单元204包括分支预测逻辑208支持的一个或多个硬件线程206和一个或多个专用寄存器(SPR)210。
在这个示范性实施例中,支持分支预测逻辑的选择性启用和分支预测逻辑状态保存和恢复两者。这样,以及如下面所更详细讨论,实现成SPR的一个或多个控制寄存器可以用于控制分支预测逻辑的启用状态和与分支预测逻辑状态相联系的保存/恢复操作两者。更进一步,可以将保存的状态数据216存储在存储器212中以及与恢复操作相联系地检索。但是,应该懂得,按照本发明的一些数据处理系统可能只支持分支预测逻辑的选择性启用,而其他数据处理系统可能只支持分支预测逻辑状态保存恢复,因此,本文公开的实现不是实现本发明的唯一方式。
应该懂得,硬件线程、分支预测逻辑、和处理器/处理单元的分布在不同实施例中可能有差异。例如,处理器204可以实现成一个或多个多核心处理器芯片中的处理核心,每个处理器204可以包括任何数量的硬件线程。更进一步,多个线程可以共享或可以为不同线程复制分支预测逻辑。另外,分支预测逻辑可以与处理器中的特定控制单元相联系或可以是处理器那么宽。在一个实施例中,例如,处理器204可以实现成像上面结合图1-4所公开那样的NOC安排中彼此互连的IP块。因此,应该懂得,本发明可以用在将分支预测逻辑用在处理器或处理核心中的几乎任何硬件环境中,因此,本发明不局限于本文公开的特定硬件环境。
从软件的角度来看,数据处理系统实现虚拟化环境,其中也常称为分区管理器或虚拟机管理器的管理程序218托管一个或多个访客操作系统220,并提供访客操作系统220与硬件202之间的接口,以便将数据处理系统中的一部分硬件资源(例如,硬件线程、处理核心、处理器、存储器、I/O功能等)分配给访客操作系统220,和以便访客操作系统220非常像它们在非虚拟化环境下工作那样工作。每个访客操作系统220托管通常工作在独立进程中以便使不同应用之间的冲突降到最低的一个或多个用户应用或程序222。
与管理程序218、访客操作系统220和用户应用222相联系的可执行指令分别称为管理程序模式、访客模式和用户模式指令,每个处理器204都希望支持这些不同的指令模式,以便选择性地限制每种级别软件的活动和控制它们的相对优先级。尤其,管理程序218被赋予最高优先级模式,以及将递降优先级指定给访客操作系统220和用户应用222。
为了实现分支预测逻辑的选择性启用,数据处理系统220支持对分支预测逻辑的管理程序模式和访客模式控制两者,以便访客模式控制可以用于超越任何管理程序模式控制。另外,在一些实施例中,用户模式控制可以用于超越任何访客模式和/或管理程序模式控制。在一些实施例中,这样的控制可以应用于任何访客操作系统和/或用户应用,以便每当处理器或处理核心正在执行任何访客模式/用户模式指令时,将访客模式/用户模式控制用于控制分支预测逻辑,而将管理程序模式控制用于管理程序模式指令。可替代地,可以将访客模式/用户模式控制与特定访客操作系统和/或用户应用相联结,以便例如允许每个访客操作系统和/或用户应用与其他访客操作系统和/或用户应用分开地控制分支预测逻辑。
另外,可能希望允许管理程序和/或访客操作系统有效地“锁定”任何更高级软件的控制,以便访客操作系统或用户应用控制分支预测逻辑的能力可以被禁用,系统那么宽或局限于特定操作系统和/或用户应用。
在例示的实施例中,对分支预测逻辑的选择性控启用的控制通过对分支预测逻辑的启用状态的控制来实现。当启用状态指示分支预测逻辑已启用时,分支预测逻辑是激活的,以正常方式工作,而当启用状态指示分支预测逻辑被禁用时,分支预测逻辑基本上是“关闭”的,使得分支预测逻辑不会试图预测分支指令的结果,以及通常,不会根据处理器或处理核心正在执行的一种或多种指令流的受监视执行收集历史信息。例如,包括分支历史表的分支预测逻辑可以配置成中断将新条目高速缓存在分支历史表中或更新该表中的现有条目。
分支预测逻辑的启用状态可以,例如,使用分支预测逻辑访问的一个或多个基于硬件寄存器来控制,以便确定分支预测逻辑当前是否是激活的。作为一个例子,图6例示了一个示范性启用模式控制寄存器230,它包括当执行管理程序模式、访客模式和用户模式指令时,分别控制分支预测逻辑是否激活的管理程序启用字段232、访客启用字段234和用户启用字段236。所有三个字段232-236都是管理程序可写的,同时字段234和236是访客操作系统可写的,和字段236是用户应用可写的。
另外,两个锁定字段,即,访客锁定字段238和用户锁定字段240用于禁用访客操作系统(针对字段238)或用户应用(针对字段240)写到相应启用字段234,236中的能力,因此控制分支预测逻辑。通常,锁定字段238和240是管理程序可写的,和锁定字段240是访客操作系统可写的,但两个锁定字段是所有级别都可读的,使得,例如,访客操作系统或用户应用可以在作出改变逻辑的启用状态的尝试之前检验是否已经赋予控制分支预测逻辑的权限。
在一些应用中,可能希望结合背景切换保存和恢复控制寄存器230的所有或部分状态,以便例如访客操作系统和/或用户应用设置的启用状态只用在正在执行那些访客操作系统和/或用户应用的指令的时候,从而支持拥有每个访客操作系统和/或用户应用的能力。
可替代地,如图7所示,可能希望使用像包括多个条目252的进程特有启用模式表250那样的数据结构,该多个条目252将进程标识符254与使分支预测逻辑能够得到进程特有定制的用户启用和锁定字段256,258相联结。表250可以由管理程序或访客操作系统管理,以便配置什么进程,和那些进程中什么应用能够控制分支预测逻辑,以及在执行各自进程的同时允许或限制那些进程选择性地启用和禁用分支预测逻辑。在一些实施例中也可以使用类似数据结构来提供对多个访客操作系统的访客特有控制。
另外,如上所述,分支预测逻辑可以由在给定处理器核心中执行的多个硬件线程共享,以及在例示在图6-7中的实施例中,对分支预测逻辑的控制通常影响给定处理核心中利用分支预测逻辑的所有硬件线程。可替代地,如图8所例示,像表260那样的线程特有启用模式数据结构可以包括与不同线程相联系,和对于每个硬件线程,包括独立管理程序、访客和用户启用字段264,266,268和访客和用户锁定字段27,272的独立条目262,以便可以为不同硬件线程设置不同启用状态。然后可以将分支预测逻辑配置成访问表260,以便当执行与当前映射成给定虚拟线程的特定硬件线程相联系的指令时,确定是否应该激活该逻辑。
作为另一种替代,可以将启用控制数据结构虚拟化,并与特定虚拟线程相联系,以便每当给定硬件线程正在执行特定虚拟线程时,将与那个虚拟线程相联系的用户控制用于那个虚拟线程。例如,可以在到虚拟线程的背景切换期间为指定成执行这样的虚拟线程的处理核心将虚拟线程特有控制寄存器装入基于硬件的控制寄存器中,以便将处理核心配置成以虚拟线程规定的方式工作。
与如何保持启用状态相关控制数据无关,可以以图9的操作280的序列例示的一般方式在数据处理系统的操作期间选择性地启用分支预测逻辑,图9例示了数据处理系统中单个硬件线程的一般执行。应该懂得,驻留在数据处理系统中的其他硬件线程可以以类似方式执行。
在管理程序的级别上,如方框282-294所例示,在管理程序与一个或多个访客操作系统之间周期性地切换执行。具体地说,方框282针对线程打算执行的访客操作系统根据启用状态启用或禁用分支预测逻辑。应该懂得,由于从设置启用状态开始锁定访客操作系统,或由于访客操作系统未超越管理程序设置的默认状态,这种启用状态可以由访客操作系统指定,或可以由管理程序指定。
一旦选择性地启用或禁用了分支预测逻辑,就在某个时间段内运行或执行(方框284)访客操作系统,以便针对当前正在执行的访客操作系统,根据启用状态启用或禁用分支预测逻辑。该执行持续直到抢先中断,或如方框286所示,直到访客操作系统完成了它的指定时间片,从而将控制传递给方框288,针对管理程序根据启用状态启用或禁用分支预测逻辑。然后在某个时段内运行或执行管理程序(方框290),并在方框292中就返回执行最后访客操作系统还是换入另一个访客操作系统作出确定。如果作出换入另一个访客操作系统的决定,则将控制传递给方框294,以便进行交换,然后返回到方框282,以便将启用状态用于新访客操作系统地执行新访客操作系统。否则,方框292使控制返回到方框282,以便将启用状态用于当前访客操作系统地继续执行当前访客操作系统。
在访客操作系统的级别上,如方框296-308所例示,在访客操作系统与一个或多个用户应用之间周期性进行背景切换,具体地说,方框296针对线程打算执行的用户应用根据启用状态启用或禁用分支预测逻辑。应该懂得,由于从设置启用状态开始锁定用户应用,或由于用户应用未超越管理程序或访客操作系统设置的默认状态,这种启用状态可以由用户应用指定,或可以由管理程序或访客操作系统指定。
一旦选择性地启用或禁用了分支预测逻辑,就在某个时段内运行或执行(方框298)用户应用,以便针对当前正在执行的访客操作系统,根据启用状态启用或禁用分支预测逻辑。该执行持续直到抢先中断,或如方框300所示,直到用户应用完成了它的指定时间片,从而将控制传递给方框302,针对访客操作系统根据启用状态启用或禁用分支预测逻辑。然后在某个时段内运行或执行访客操作系统(方框304),并在方框306中就返回执行最后用户应用还是换入另一个用户应用作出确定。如果作出换入另一个用户应用的决定,则将控制传递给方框308,以便进行交换,然后返回到方框296,以便将启用状态用于新用户应用地执行新用户应用。否则,方框306使控制返回到方框296,以便将启用状态用于当前用户应用地继续执行当前用户应用。
因此,在按照本发明的实施例中,如果应用开发人员认识到正在开发的应用的某些部分或整个应用倾向于用无用历史信息破坏分支预测逻辑,例如,由于工作负载的随机和不可预测性质,则开发人员可以将应用配置成针对应用或其中的任何有问题部分选择性地禁用分支预测逻辑,使该应用的其他部分以及可能使用分支预测逻辑的任何其他程序的分支预测得到改进。同样,如果访客操作系统知道在启用的分支预测逻辑方面表现不怎么样的某些应用或应用的类型,或如果管理程序知道在分支预测方面表现不怎么样的某些应用或访客操作系统,则访客操作系统和/或管理程序在执行那些不兼容程序时可以选择性地禁用分支预测逻辑。
接着,在例示的实施例中,对保存和恢复分支预测逻辑的状态的控制通过使用管理程序模式以及访客模式和/或用户模式指令,例如,经由分支预测逻辑中的可寻址寄存器,或分支预测提供的一个或多个端口与能够存储高速缓存状态信息的存储器或其他缓冲器之间的移动指令来实现。例如,在一些实施例中,软件可以提供SPR中的地址,然后写入脱离(kick-off)位(例如,一位用于保存,一位用于恢复),以便通知微码单元或硬件辅助定序器向/从提供的存储器地址保存/恢复数据。在一些实施例中,保持地址和脱离位的相同SPR可以得到设置启用状态的上述管理程序/访客/用户机构保护。另外,如果未使用硬件辅助定序器,则软件指令可以通过设置存储器地址,写入脱离位,和递增地址直到所有数据都得到分支的指令之间的循环进行保存和恢复操作。
在一些实施例中,例如,如图10所例示,包括有关访客模式和用户模式指令的锁定字段312,314的保存模式控制寄存器310可以用于选择性地启用访客操作系统和/或用户应用或进程,以便保存和/或恢复分支预测逻辑状态数据。与启用/禁用功能一样,启用保存/恢复功能可以应用于所有访客操作系统和/或用户应用,或在按照本发明的一些实施例,可以专用于特定访客操作系统,用户应用和/或用户进程。
另外,如上所述,保存和恢复操作的实现可以主要用软件实现,例如,经由移动指令的循环,或可替代地,可以依靠分支预测逻辑中或要不然与分支预测逻辑耦合的专用逻辑,以便加速保存和恢复操作。例如,图11例示了包括多个条目322和与分支历史表装载/存储单元324耦合的示范性分支历史表320。装载/存储单元324可以用于,例如,从分支历史表320中复制一个或多个条目322作为存储器328中的状态数据326,以及通过将状态数据326中的条目复制回到分支历史表320中恢复分支历史表320。
可以在存储器328中保持多个状态数据326的副本,例如,根据不同用户应用、不同访客操作系统等。存储器328可以是数据处理系统的主存储器架构的一部分,或在一些实现中,可以是专用缓冲器,例如,处理核心中的专用缓冲器。装载/存储单元324可以实现成,例如,响应线程提供的输入数据,开始在分支历史表320与存储器通328之间传送所选数据的定序器或微码单元。
在一些实现中,整个分支历史表,以及可选地,包括分支预测逻辑的其他状态数据可以保存/恢复成状态数据。但是,在一些实施例中,可能希望只保存/恢复代表分支预测逻辑的状态的数据的子集,例如,跳过标记为无效的条目322,或只保存N个最常用或最近使用的条目。另外,如装载/存储单元324中的压缩/解压引擎330所例示,在一些实施例中可能希望压缩存储器328中的状态数据,以便减少保持状态数据所需的存储量,然后,当恢复回成分支预测逻辑时,解压压缩数据。在可替代实施例中可以使用加速或要不然降低保存和恢复分支预测逻辑的状态数据的性能影响的其他基于硬件方式。
与如何保存和恢复分支预测逻辑状态数据无关,图12结合保存和恢复分支预测逻辑状态数据例示了适用在数据处理系统中一般执行单个硬件线程的操作340的顺序。应该懂得,驻留在数据处理系统中的其他硬件线程可以以类似方式执行。
在管理程序的级别上,如方框342-360所例示,在管理程序与一个或多个访客操作系统之间周期性地切换执行。具体地说,方框342,例如,响应访客操作系统中的访客模式指令,为访客操作系统恢复存储的分支预测逻辑状态数据。一旦分支预测逻辑状态得到恢复,就在某个时段内运行或执行(方框346)访客操作系统,以便分支预测逻辑在正在执行访客操作系统的时候使用恢复的状态。该执行持续直到抢先中断,或如方框348所示,直到访客操作系统完成了它的指定时间片,从而将控制传递给方框350,以便例如响应访客操作系统中的访客模式指令,保存分支预测逻辑的状态。接着,方框352,例如,响应管理程序中的管理程序模式指令,为管理程序恢复存储的分支预测逻辑状态。然后,在某个时段内运行或执行(方框354)管理程序,此后,方框356例如响应管理程序中的管理程序模式指令,保存分支预测逻辑的状态。接着,在方框358中就返回执行最后访客操作系统还是换入另一个访客操作系统作出确定。如果作出换入另一个访客操作系统的决定,则将控制传递给方框360,以便进行交换,然后返回到方框342,为访客操作系统恢复分支预测逻辑状态。要不然,方框358将控制返还给方框342,以便为访客操作系统恢复分支预测逻辑状态。
在访客操作系统的级别上,如方框362-380所例示,在访客操作系统与一个或多个用户应用之间周期性地切换背景。具体地说,方框362,例如,响应用户应用中的用户模式指令,为用户应用恢复存储的分支预测逻辑状态数据。一旦分支预测逻辑状态得到恢复,就在某个时段内运行或执行(方框364)用户应用,以便分支预测逻辑在正在执行用户应用的时候使用恢复的状态。该执行持续直到抢先中断,或如方框368所示,直到用户应用完成了它的指定时间片,从而将控制传递给方框370,以便例如响应用户应用中的用户模式指令,保存分支预测逻辑的状态。接着,方框372例如响应访客操作系统中的访客模式指令,为访客操作系统恢复存储的分支预测逻辑状态。然后,在某个时段内运行或执行(方框374)访客操作系统,此后,方框376例如响应访客操作系统中的访客模式指令,保存分支预测逻辑的状态。接着,在方框378中就返回执行最后用户应用还是换入另一个用户应用作出确定。如果作出换入另一个用户应用的决定,则将控制传递给方框380,以便进行交换,然后返回到方框362,为用户应用恢复分支预测逻辑状态。要不然,方框378将控制返还给方框362,以便为用户应用恢复分支预测逻辑状态。
应该懂得,保存和/或恢复分支预测逻辑状态数据的指令可以在为保存或恢复与硬件线程执行的给定背景相联系的其他状态数据而执行的背景切换例程内实现。另外,应该懂得,管理程序、所选访客操作系统和/或所选用户应用可能无需保存或恢复分支预测逻辑状态数据,因此,这些所选实体可能在背景切换期间省略执行为这样的实体保存或恢复分支预测逻辑数据的任何指令。
图13-14更详细地例示了结合保存和恢复分支预测逻辑状态表,例如,分支历史表条目发生的操作。例如,图13例示了由程序例如管理程序、访客操作系统和/或用户应用为保存分支预测逻辑状态数据执行的保存分支历史表例程390。例如,方框392通过,例如,检验程序的相关锁定字段,首先确定是否允许保存分支预测逻辑状态。在一些情况下,例如,对于管理程序,可以总是授权程序保存分支预测逻辑状态,因此可以省略方框392。如果方框392不允许,则终止例程390。要不然,方框392将控制传递给方框394,以便保存分支预测逻辑状态,然后结束例程390。
类似地,图14例示了由程序,例如,管理程序、访客操作系统和/或用户应用为恢复分支预测逻辑状态数据执行的恢复分支历史表例程400。例如,方框402通过,例如,检验程序的相关锁定字段,首先确定是否允许恢复分支预测逻辑状态。在一些情况下,例如,对于管理程序,可以总是授权程序恢复分支预测逻辑状态,因此可以省略方框402。如果方框402不允许,则终止例程400。要不然,方框402将控制传递给方框404,以便通过,例如,清除所有老分支历史表条目重置分支预测逻辑状态,然后将控制传递给方框406,以便恢复分支预测逻辑状态,然后结束例程400。
因此,按照本发明的实施例通过分支预测逻辑状态数据的选择性启用/禁用和/或选择性地保存和恢复,为更细粒度控制分支预测逻辑提供了保证。可以认为,在一些实施例中,提供更细粒度控制使得能够更好地为不同类型的程序和工作负载优化分支预测逻辑,以及在一些情况下,可以允许使用较小和/或较不复杂分支预测逻辑,从而节约了成本和缩小了处理器芯片上分支预测逻辑占用的空间大小。
可以不偏离本发明的精神和范围地对公开的实施例作各种修改。因此,本发明取决于本文所附的权利要求书。
Claims (20)
1.一种控制数据处理系统中的分支预测逻辑的方法,该方法包含:
响应处理核心为驻留在数据处理系统中的管理程序执行的第一管理程序模式指令,在处理核心中保存分支预测逻辑的第一状态,其中保存分支预测逻辑的第一状态与离开管理程序的背景切换相联系地进行;
响应处理核心为管理程序执行的第二管理程序模式指令,恢复分支预测逻辑的第一状态,其中恢复分支预测逻辑的第一状态与到管理程序的背景切换相联系地进行;
响应处理核心为管理程序托管的程序执行的第三指令,保存分支预测逻辑的第二状态,以及其中保存分支预测逻辑的第二状态与离开程序的背景切换相联系地进行;以及
响应处理核心执行的管理程序托管的程序的第四指令,恢复分支预测逻辑的第二状态,其中恢复分支预测逻辑的第二状态与到程序的背景切换相联系地进行。
2.如权利要求1所述的方法,其中分支预测逻辑被配置成将分支预测数据高速缓存在分支预测表中,其中保存分支预测逻辑的第一状态包含将至少一个条目保存在分支预测表中,以及其中恢复分支预测逻辑的第一状态包含恢复分支预测表中的至少一个条目。
3.如权利要求2所述的方法,其中保存第一状态包含根据使用频率只将一个子集的条目保存在分支预测表中。
4.如权利要求2所述的方法,其中保存第一状态包含只将有效条目保存在分支预测表中。
5.如权利要求1所述的方法,其中保存第一状态包含压缩与第一状态相联系的数据和将压缩数据存储在存储器中,以及其中恢复第一状态包含解压存储器中的压缩数据。
6.如权利要求1所述的方法,其中保存第一状态包含使处理核心中的硬件逻辑保存第一状态。
7.如权利要求6所述的方法,其中硬件逻辑包含微码逻辑。
8.如权利要求1所述的方法,其中程序包含管理程序托管的访客操作系统,以及其中第三和第四指令是访客模式指令。
9.如权利要求1所述的方法,其中程序包含管理程序托管的用户进程,以及其中第三和第四指令是用户模式指令。
10.如权利要求9所述的方法,其中用户进程由管理程序托管的访客操作系统托管。
11.如权利要求1所述的方法,进一步包含响应处理核心为管理程序执行的第五管理程序模式指令,重置分支预测逻辑的状态。
12.如权利要求1所述的方法,进一步包含利用管理程序选择地禁止程序保存或恢复分支预测逻辑的状态。
13.一种电路安排,包含:
处理核心;以及
布置在处理核心中的分支预测逻辑模块;
其中处理核心被配置成响应处理核心为驻留在数据处理系统中的管理程序执行的第一管理程序模式指令,保存分支预测逻辑的第一状态,其中保存分支预测逻辑的第一状态与离开管理程序的背景切换相联系地进行;响应处理核心为管理程序执行的第二管理程序模式指令,恢复分支预测逻辑的第一状态,其中恢复分支预测逻辑的第一状态与到管理程序的背景切换相联系地进行;响应处理核心为管理程序托管的程序执行的第三指令,保存分支预测逻辑的第二状态,以及其中保存分支预测逻辑的第二状态与离开程序的背景切换相联系地进行;以及响应处理核心执行的管理程序托管的程序的第四指令,恢复分支预测逻辑的第二状态,其中恢复分支预测逻辑的第二状态与到程序的背景切换相联系地进行。
14.如权利要求13所述的电路安排,其中分支预测逻辑模块被配置成将分支预测数据高速缓存在分支预测表中,其中处理核心被配置成通过将至少一个条目保存在分支预测表中保存分支预测逻辑的第一状态,以及其中处理核心被配置成通过恢复分支预测表中的至少一个条目恢复分支预测逻辑的第一状态。
15.如权利要求13所述的电路安排,其中程序包含管理程序托管的访客操作系统,以及其中第三和第四指令是访客模式指令。
16.如权利要求13所述的电路安排,其中程序包含管理程序托管的用户进程,以及其中第三和第四指令是用户模式指令。
17.如权利要求16所述的电路安排,其中用户进程由管理程序托管的访客操作系统托管。
18.如权利要求13所述的电路安排,其中处理核心被配置成响应处理核心为管理程序执行的第五管理程序模式指令,重置分支预测逻辑的状态。
19.如权利要求13所述的电路安排,其中处理核心被配置成响应管理程序选择地禁止程序保存或恢复分支预测逻辑的状态。
20.一种数据处理系统,包含如权利要求13所述的电路安排。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/355,884 US8935694B2 (en) | 2012-01-23 | 2012-01-23 | System and method for selectively saving and restoring state of branch prediction logic through separate hypervisor-mode and guest-mode and/or user-mode instructions |
US13/355,884 | 2012-01-23 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103218209A CN103218209A (zh) | 2013-07-24 |
CN103218209B true CN103218209B (zh) | 2016-03-02 |
Family
ID=47748196
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310024377.6A Active CN103218209B (zh) | 2012-01-23 | 2013-01-23 | 控制分支预测逻辑的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US8935694B2 (zh) |
CN (1) | CN103218209B (zh) |
DE (1) | DE102013200503A1 (zh) |
GB (1) | GB2500456B (zh) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB201300608D0 (en) * | 2013-01-14 | 2013-02-27 | Imagination Tech Ltd | Indirect branch prediction |
US9520180B1 (en) | 2014-03-11 | 2016-12-13 | Hypres, Inc. | System and method for cryogenic hybrid technology computing and memory |
US10261826B2 (en) | 2014-06-02 | 2019-04-16 | International Business Machines Corporation | Suppressing branch prediction updates upon repeated execution of an aborted transaction until forward progress is made |
US10235172B2 (en) * | 2014-06-02 | 2019-03-19 | International Business Machines Corporation | Branch predictor performing distinct non-transaction branch prediction functions and transaction branch prediction functions |
US10503538B2 (en) | 2014-06-02 | 2019-12-10 | International Business Machines Corporation | Delaying branch prediction updates specified by a suspend branch prediction instruction until after a transaction is completed |
US10289414B2 (en) | 2014-06-02 | 2019-05-14 | International Business Machines Corporation | Suppressing branch prediction on a repeated execution of an aborted transaction |
US9742630B2 (en) * | 2014-09-22 | 2017-08-22 | Netspeed Systems | Configurable router for a network on chip (NoC) |
US10348563B2 (en) | 2015-02-18 | 2019-07-09 | Netspeed Systems, Inc. | System-on-chip (SoC) optimization through transformation and generation of a network-on-chip (NoC) topology |
US10063569B2 (en) * | 2015-03-24 | 2018-08-28 | Intel Corporation | Custom protection against side channel attacks |
US10218580B2 (en) | 2015-06-18 | 2019-02-26 | Netspeed Systems | Generating physically aware network-on-chip design from a physical system-on-chip specification |
CN105005737A (zh) * | 2015-07-31 | 2015-10-28 | 天津大学 | 一种面向分支预测攻击的微体系结构级安全防护方法 |
US10423418B2 (en) | 2015-11-30 | 2019-09-24 | International Business Machines Corporation | Method for maintaining a branch prediction history table |
US10013270B2 (en) | 2015-12-03 | 2018-07-03 | International Business Machines Corporation | Application-level initiation of processor parameter adjustment |
US10452124B2 (en) | 2016-09-12 | 2019-10-22 | Netspeed Systems, Inc. | Systems and methods for facilitating low power on a network-on-chip |
US10489296B2 (en) | 2016-09-22 | 2019-11-26 | International Business Machines Corporation | Quality of cache management in a computer |
US20180159786A1 (en) | 2016-12-02 | 2018-06-07 | Netspeed Systems, Inc. | Interface virtualization and fast path for network on chip |
US10063496B2 (en) | 2017-01-10 | 2018-08-28 | Netspeed Systems Inc. | Buffer sizing of a NoC through machine learning |
US10469337B2 (en) | 2017-02-01 | 2019-11-05 | Netspeed Systems, Inc. | Cost management against requirements for the generation of a NoC |
US10983910B2 (en) | 2018-02-22 | 2021-04-20 | Netspeed Systems, Inc. | Bandwidth weighting mechanism based network-on-chip (NoC) configuration |
US11144457B2 (en) | 2018-02-22 | 2021-10-12 | Netspeed Systems, Inc. | Enhanced page locality in network-on-chip (NoC) architectures |
US10547514B2 (en) | 2018-02-22 | 2020-01-28 | Netspeed Systems, Inc. | Automatic crossbar generation and router connections for network-on-chip (NOC) topology generation |
US11023377B2 (en) | 2018-02-23 | 2021-06-01 | Netspeed Systems, Inc. | Application mapping on hardened network-on-chip (NoC) of field-programmable gate array (FPGA) |
US11176302B2 (en) | 2018-02-23 | 2021-11-16 | Netspeed Systems, Inc. | System on chip (SoC) builder |
GB2574042B (en) * | 2018-05-24 | 2020-09-09 | Advanced Risc Mach Ltd | Branch Prediction Cache |
US10705848B2 (en) * | 2018-05-24 | 2020-07-07 | Arm Limited | TAGE branch predictor with perceptron predictor as fallback predictor |
WO2020051254A1 (en) * | 2018-09-05 | 2020-03-12 | Fungible, Inc. | Dynamically changing configuration of data processing unit when connected to storage device or computing device |
US10740140B2 (en) | 2018-11-16 | 2020-08-11 | International Business Machines Corporation | Flush-recovery bandwidth in a processor |
US11061681B2 (en) * | 2019-07-25 | 2021-07-13 | International Business Machines Corporation | Instruction streaming using copy select vector |
US11301254B2 (en) * | 2019-07-25 | 2022-04-12 | International Business Machines Corporation | Instruction streaming using state migration |
CN113722016A (zh) * | 2021-09-10 | 2021-11-30 | 拉卡拉支付股份有限公司 | 应用程序配置方法、装置、设备、存储介质及程序产品 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6108775A (en) * | 1996-12-30 | 2000-08-22 | Texas Instruments Incorporated | Dynamically loadable pattern history tables in a multi-task microprocessor |
CN1755660A (zh) * | 2004-09-28 | 2006-04-05 | 惠普开发有限公司 | 冗余处理器中的诊断存储器转储方法 |
US7849298B2 (en) * | 2002-12-05 | 2010-12-07 | International Business Machines Corporation | Enhanced processor virtualization mechanism via saving and restoring soft processor/system states |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4679141A (en) | 1985-04-29 | 1987-07-07 | International Business Machines Corporation | Pageable branch history table |
EP0218335A3 (en) | 1985-08-30 | 1989-03-08 | Advanced Micro Devices, Inc. | Control store for electronic processor |
US5228131A (en) | 1988-02-24 | 1993-07-13 | Mitsubishi Denki Kabushiki Kaisha | Data processor with selectively enabled and disabled branch prediction operation |
US5606715A (en) | 1995-06-26 | 1997-02-25 | Motorola Inc. | Flexible reset configuration of a data processing system and method therefor |
US5949995A (en) | 1996-08-02 | 1999-09-07 | Freeman; Jackie Andrew | Programmable branch prediction system and method for inserting prediction operation which is independent of execution of program code |
DE69727773T2 (de) | 1996-12-10 | 2004-12-30 | Texas Instruments Inc., Dallas | Verbesserte Verzweigungsvorhersage in einem Pipelinemikroprozessor |
US6108776A (en) | 1998-04-30 | 2000-08-22 | International Business Machines Corporation | Globally or selectively disabling branch history table operations during sensitive portion of millicode routine in millimode supporting computer |
US6223280B1 (en) | 1998-07-16 | 2001-04-24 | Advanced Micro Devices, Inc. | Method and circuit for preloading prediction circuits in microprocessors |
US6574712B1 (en) | 1999-11-08 | 2003-06-03 | International Business Machines Corporation | Software prefetch system and method for predetermining amount of streamed data |
US6877089B2 (en) | 2000-12-27 | 2005-04-05 | International Business Machines Corporation | Branch prediction apparatus and process for restoring replaced branch history for use in future branch predictions for an executing program |
JP3802038B2 (ja) | 2003-01-30 | 2006-07-26 | 富士通株式会社 | 情報処理装置 |
US7308571B2 (en) | 2004-10-06 | 2007-12-11 | Intel Corporation | Overriding processor configuration settings |
US20080114971A1 (en) | 2006-11-14 | 2008-05-15 | Fontenot Nathan D | Branch history table for debug |
US7650785B1 (en) * | 2006-11-17 | 2010-01-26 | Vibro-Meter, Inc. | Scan lock and track fluid characterization and level sensor apparatus and method |
US8171328B2 (en) * | 2008-12-31 | 2012-05-01 | Intel Corporation | State history storage for synchronizing redundant processors |
-
2012
- 2012-01-23 US US13/355,884 patent/US8935694B2/en active Active
-
2013
- 2013-01-10 GB GB1300405.6A patent/GB2500456B/en active Active
- 2013-01-15 DE DE102013200503A patent/DE102013200503A1/de not_active Ceased
- 2013-01-23 CN CN201310024377.6A patent/CN103218209B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6108775A (en) * | 1996-12-30 | 2000-08-22 | Texas Instruments Incorporated | Dynamically loadable pattern history tables in a multi-task microprocessor |
US7849298B2 (en) * | 2002-12-05 | 2010-12-07 | International Business Machines Corporation | Enhanced processor virtualization mechanism via saving and restoring soft processor/system states |
CN1755660A (zh) * | 2004-09-28 | 2006-04-05 | 惠普开发有限公司 | 冗余处理器中的诊断存储器转储方法 |
Also Published As
Publication number | Publication date |
---|---|
GB2500456B (en) | 2014-03-19 |
DE102013200503A1 (de) | 2013-07-25 |
CN103218209A (zh) | 2013-07-24 |
GB2500456A (en) | 2013-09-25 |
US20130191825A1 (en) | 2013-07-25 |
GB201300405D0 (en) | 2013-02-20 |
US8935694B2 (en) | 2015-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103218209B (zh) | 控制分支预测逻辑的方法和装置 | |
CN104067227B (zh) | 分支预测逻辑 | |
CN104854568B (zh) | 用于更新远程处理节点中的地址转换数据结构的转换管理指令 | |
US9354884B2 (en) | Processor with hybrid pipeline capable of operating in out-of-order and in-order modes | |
CN104375890B (zh) | 用于执行安全嵌入式容器的处理器扩展 | |
US9756118B2 (en) | Virtual performance monitoring decoupled from hardware performance-monitoring units | |
US9122465B2 (en) | Programmable microcode unit for mapping plural instances of an instruction in plural concurrently executed instruction streams to plural microcode sequences in plural memory partitions | |
US8495643B2 (en) | Message selection based on time stamp and priority in a multithreaded processor | |
US9317294B2 (en) | Concurrent multiple instruction issue of non-pipelined instructions using non-pipelined operation resources in another processing core | |
CN103870397A (zh) | 数据处理系统中访问数据的方法以及电路安排 | |
CN104331528A (zh) | 具有低功率数字信号处理(dsp)模式的通用处理单元 | |
CN107810477A (zh) | 解码的指令的重复使用 | |
CN105765525A (zh) | 加载和存储单元以及数据高速缓存的排序和带宽改进 | |
CN103562866A (zh) | 用于通过使用由可分割引擎实例化的虚拟核来支持代码块执行的寄存器文件段 | |
CN103635875A (zh) | 用于通过使用由可分区引擎实例化的虚拟核来支持代码块执行的存储器片段 | |
CN103547993A (zh) | 通过使用由可分割引擎实例化的虚拟核来执行指令序列代码块 | |
CN103582879B (zh) | 管理耦合设施中的操作员消息缓冲器 | |
CN102906720A (zh) | 启用/禁用计算环境的适配器 | |
CN103218309A (zh) | 多级指令高速缓存预取 | |
CN102906694A (zh) | 用于与适配器进行通信的加载指令 | |
CN103262035B (zh) | 组合式cpu/gpu体系结构系统中的装置发现和拓扑报告 | |
CN102906693A (zh) | 用于与适配器进行通信的存储/存储块指令 | |
CN104054054A (zh) | 程序对警告追踪中断设施的使用 | |
TW201820151A (zh) | 以複數個引擎作資源與互連結構的分散式分配以支援指令序列的執行 | |
CN103970511A (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 |