CN114489793A - 通过应用直接编程的用户定时器 - Google Patents
通过应用直接编程的用户定时器 Download PDFInfo
- Publication number
- CN114489793A CN114489793A CN202111189769.9A CN202111189769A CN114489793A CN 114489793 A CN114489793 A CN 114489793A CN 202111189769 A CN202111189769 A CN 202111189769A CN 114489793 A CN114489793 A CN 114489793A
- Authority
- CN
- China
- Prior art keywords
- user
- timer
- program information
- processor
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000015654 memory Effects 0.000 claims description 121
- 238000000034 method Methods 0.000 claims description 60
- 239000013598 vector Substances 0.000 claims description 52
- 238000012545 processing Methods 0.000 description 31
- 238000010586 diagram Methods 0.000 description 29
- 239000000463 material Substances 0.000 description 26
- 230000006870 function Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 10
- 238000007667 floating Methods 0.000 description 10
- 239000003795 chemical substances by application Substances 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 9
- 230000007246 mechanism Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000013459 approach Methods 0.000 description 6
- 230000000903 blocking effect Effects 0.000 description 6
- 230000005291 magnetic effect Effects 0.000 description 6
- 238000013519 translation Methods 0.000 description 6
- 230000006835 compression Effects 0.000 description 5
- 238000007906 compression Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000003068 static effect Effects 0.000 description 4
- 238000007792 addition Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000004519 manufacturing process Methods 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000003491 array Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 230000000737 periodic effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 101100534223 Caenorhabditis elegans src-1 gene Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 239000000470 constituent Substances 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
- 230000003111 delayed effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000001343 mnemonic effect Effects 0.000 description 1
- 229910052754 neon Inorganic materials 0.000 description 1
- GKAOGPIIYCISHV-UHFFFAOYSA-N neon atom Chemical compound [Ne] GKAOGPIIYCISHV-UHFFFAOYSA-N 0.000 description 1
- 230000000135 prohibitive effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/24—Handling requests for interconnection or transfer for access to input/output bus using interrupt
-
- 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/30098—Register arrangements
- G06F9/30101—Special purpose 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
- G06F9/3869—Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking
-
- 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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
-
- 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/4812—Task transfer initiation or dispatching by interrupt, e.g. masked
- G06F9/4825—Interrupt from clock, e.g. time of day
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请公开了通过应用直接编程的用户定时器。一种装置的实施例包括解码电路来对单个指令解码,该单个指令包括用于第一源操作对象的标识符的字段、用于目的地操作对象的标识符的字段、以及用于操作码的字段,该操作码指示出执行电路要对用户定时器编程,以执行电路,以根据操作码来执行解码的指令以从第一源操作对象所指示的位置取回定时器程序信息,并且基于所取回的定时器程序信息对由目的地操作对象所指示的用户定时器编程。公开并且要求保护了其他实施例。
Description
相关申请的交叉引用
本申请要求于2020年11月12日递交的标题为“USER TIMER DIRECTLY PROGRAMMEDBY APPLICATION”的美国临时专利申请63/113,106号的优先权,该美国临时专利申请通过引用完全并入,以用于所有目的。
技术领域
本公开总体上涉及处理器技术,以及定时器技术。
背景技术
应用常常要求定时器服务来调度未来某个时间点的特定功能。定时器服务的两个使用类别包括阻塞式和非阻塞式。在阻塞式使用中,应用暂停执行,直到定时器事件发生为止。阻塞式使用通常发生在应用空置并且需要等待事件来恢复执行时,从而节省电力并且可能允许其他任务运行。在非阻塞式使用中,应用继续执行并且通过某种异步机制获得定时器事件的通知。
发明内容
根据本公开的第一方面,提供了一种集成电路,包括:电路,用于:取回直接从用户级应用提供的定时器程序信息;并且基于所取回的定时器程序信息在硬件中对用户定时器进行编程。
根据本公开的第二方面,提供了一种方法,包括:取回直接从用户级应用提供的定时器程序信息;以及基于所取回的定时器程序信息在硬件中对用户定时器进行编程。
根据本公开的第三方面,提供了一种装置,包括:处理器;通信地耦合到所述处理器的存储器,以存储直接从用户级应用提供的定时器程序信息;以及通信地耦合到所述处理器和所述存储器的电路,所述电路用于:从所述存储器取回所述定时器程序信息,并且基于所取回的定时器程序信息在硬件中对用户定时器进行编程。
附图说明
在附图中以示例方式而非限制方式示出了本发明的各种实施例,在附图中:
图1是根据一个实施例的集成电路的示例的框图;
图2A至2C是根据一个实施例的方法的示例的流程图;
图3是根据一个实施例的装置的示例的框图;
图4是根据一个实施例的处理系统的示例的框图;
图5是根据一个实施例的用户定时器控制数据结构的示例的说明性图示;
图6A和6B是根据实施例的全局定时器和虚拟定时器的示例的说明性时间线;
图7是根据一个实施例的处理系统的另一示例的框图;
图8是根据一个实施例的硬件的示例的框图;
图9是根据一个实施例的方法的另一示例的流程图;
图10是根据一个实施例的方法的另一示例的流程图;
图11A是根据本发明的实施例的示出示例性有序管线和示例性寄存器重命名、无序发出/执行管线两者的框图。
图11B是根据本发明的实施例的示出要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发出/执行架构核心两者的框图;
图12A-12B示出更具体的示例性有序核心架构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一;
图13是根据本发明的实施例的处理器的框图,该处理器可以具有多于一个核心,可以具有集成的存储器控制器,并且可以具有集成的图形能力;
图14-17是示例性计算机架构的框图;并且
图18是根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。
具体实施方式
本文论述的实施例以各种方式提供了用于用户定时器的技术和机制。本文描述的技术可以被实现在一个或多个电子设备中。可利用本文描述的技术的电子设备的非限制性示例包括任何种类的移动设备和/或固定设备,例如相机、蜂窝电话、计算机终端、桌面型计算机、电子阅读器、传真机、一体机(kiosk)、膝上型计算机、上网本计算机、笔记本计算机、互联网设备、支付终端、个人数字助理、媒体播放器和/或记录器、服务器(例如,刀片式服务器、机架安装式服务器、其组合,等等)、机顶盒、智能电话、平板个人计算机、超便携个人计算机、有线电话、其组合,等等。更一般而言,本文描述的技术可用于包括可操作来提供通过应用直接编码的用户定时器的集成电路的各种电子设备中的任何一种。
在接下来的描述中,论述了许多细节以提供对本公开的实施例的更透彻说明。然而,本领域技术人员将会清楚,可以在没有这些具体细节的情况下实践本公开的实施例。在其他实例中,以框图形式而不是详细地示出公知的结构和设备,以避免模糊本公开的实施例。
注意,在实施例的相应附图中,以线条来表示信号。一些线条可能更粗,以指示出更大数目的构成信号路径,和/或在一端或多端具有箭头,以指示出信息流的方向。这种指示并不旨在是限制性的。更确切地说,这些线条与一个或多个示例性实施例结合使用以便于更容易理解电路或逻辑单元。由设计需要或偏好决定的任何所表示的信号可实际上包括可在任一方向上行进并且可利用任何适当类型的信号方案来实现的一个或多个信号。
在整个说明书中,以及在权利要求中,术语“连接”意指直接连接,例如连接的事物之间的电连接、机械连接或磁连接,而没有任何中间设备。术语“耦合”意指直接或间接连接,例如连接的事物之间的直接电连接、机械连接或磁连接,或者通过一个或多个无源或有源中间设备的间接连接。术语“电路”或“模块”可以指被布置为彼此协作以提供期望的功能的一个或多个无源和/或有源组件。术语“信号”可以指至少一个电流信号、电压信号、磁信号、或者数据/时钟信号。“一”、“一个”和“该”的含义包括复数引用。“在……中”的含义包括“在……中”和“在……上”。
术语“设备”通常可以指的是根据该术语的使用的上下文的装置。例如,设备可以指层或结构的堆叠、单个结构或层、具有有源和/或无源元件的各种结构的连接,等等。一般而言,设备是三维结构,该三维结构具有x-y-z笛卡儿坐标系中沿着x-y方向的平面和沿着z方向的高度。设备的平面也可以是包括该设备的装置的平面。
术语“缩放”一般是指将一设计(图解和布局)从一个工艺技术转换到另一工艺技术并随后减小布局面积。术语“缩放”一般也指在同一技术节点内减小布局和设备的大小。术语“缩放”还可以指相对于另一参数(例如电源电平)调整信号频率(例如,减慢或加速——即分别是缩小或放大)。
术语“基本上”、“接近”、“大致”、“近似”和“大约”一般指在目标值的+/-10%内。例如,除非在其使用的明确上下文中另有指明,否则术语“基本上等于”、“大约等于”和“大致等于”意指在这样描述的事物之间没有超过偶然的差异。在本领域中,这种差异通常不超过预定目标值的+/-10%。
要理解,这样使用的术语在适当的情况下是可互换的,使得本文描述的发明的实施例例如能够按与本文所示或以其他方式描述的那些不同的其他朝向来操作。
除非另有指明,否则使用序数形容词“第一”、“第二”和“第三”等等来描述共同对象只是表明相似对象的不同实例被引用,而并不是要暗示这样描述的对象必须在时间上、空间上、排名上或者以任何其他方式处于给定的序列中。
说明书中和权利要求中的术语“左”、“右”、“前”、“后”、“顶部”、“底部”、“之上”、“之下”等等(如果有的话)是用于描述性目的的,而并不一定用于描述永久的相对位置。例如,本文使用的术语“之上”、“之下”、“前侧”、“后侧”、“顶部”、“底部”、“上方”、“下方”和“在……上”指的是一个组件、结构或材料相对于设备内的其他引用的组件、结构或材料的相对位置,其中这种物理关系是值得注意的。这些术语在本文中仅用于描述性目的,并且主要是在设备z轴的上下文中使用的,因此可相对于设备的朝向。因此,如果该设备相对于提供的附图的上下文被上下颠倒的话,在本文提供的附图的上下文中在第二材料“之方”的第一材料也可以在第二材料的“之下”。在材料的上下文中,将一种材料设置在另一材料之上或之下可以是直接接触或者可以具有一种或多种居间的材料。另外,将一种材料设置在两种材料之间可以与这两个层直接接触或者可以具有一个或多个居间的层。相比之下,在第二材料“上”的第一材料是与该第二材料直接接触的。在组件装配的上下文中要做出类似的区分。
术语“在……之间”可以用于设备的z轴、x轴或y轴的上下文中。在两种其他材料之间的材料可以与这些材料的一者或两者接触,或者该材料可以通过一种或多种居间的材料与其他两种材料间隔开。在两种其他材料“之间”的材料因此可以与其他两种材料的任一者接触,或者该材料可以通过居间的材料耦合到其他两种材料。在两个其他设备之间的设备可以与这些设备的一者或两者直接连接,或者该设备可以通过一个或多个居间的设备与其他两个设备间隔开。
如在整个本说明书中和权利要求中所使用的,由术语“……中的至少一个”或者“……中的一个或多个”联接的项目的列表可以意指列出的术语的任何组合。例如,短语“A、B或C中的至少一个”可以意指A;B;C;A和B;A和C;B和C;或者A、B和C。要指出,附图的具有与任何其他图中的元素相同的标号(或名称)的那些元素可以按与所描述的方式相似的任何方式来操作或工作,但不限于此。
此外,本公开中论述的组合逻辑和时序逻辑的各种元素既可涉及物理结构(例如,与门、或门或者异或门),也可涉及实现逻辑结构(是所论述的逻辑的布尔等同物)的设备的合成的或者以其他方式优化的集合。
一些实施例提供了用于用户定时器的技术。一些实施例可以解决常规定时器的一个或多个缺点,主要是对于非阻塞式使用。一些实施例的目的可在于以下用途,包括:例如,在支持用户级线程的编程语言中的更好的抢占和公平性,在用户空间中对主机联网栈的更好的调度和抢占支持,和/或大规模地减小云工作负载的尾部时延。
在大多数或所有常规平台中,都有对定时器的硬件支持。例如,在IA32架构中,高级可编程中断控制器(advanced programmable interrupt controller,APIC)定时器和高精度事件定时器(high precision event timer,HPET)两者都提供这种能力。其他硬件定时器包括多媒体(multimedia,MM)定时器、可编程间隔定时器(programmable intervaltimer,PIT)、实时时钟(real-time clock,RTC)定时器,等等。然而,由于定时器事件是通过中断来传递的,并且定时器需要在许多应用之间被共享,所以操作系统(operatingsystem,OS)通常保留对硬件定时器的编程和处理,通过对未完成请求之中所要求的最早定时器事件进行编程,来将许多定时器事件复用到单个硬件单元中。
在常规模型中,应用需要进行系统调用来设定定时器事件(例如,POSIX timer_create和timer_settime)。在定时器期满之后,通常通过对于可能正在等待该事件的应用线程解除锁定,或者通过使用信号来将该事件异步地注入应用中,OS处理程序将确定该事件是否属于任何应用,并且最终将该事件递送给该应用。通过信号处理程序进行异步事件递送允许了应用将执行切换到要求延迟执行的功能。
常规硬件定时器的性能可能受到内核开销的挑战。定时器设定开销可能涉及设定定时器的系统调用,这些调用可持续至少几百纳秒。然而,如果定时器是周期性的(例如,如果定时器需要以固定的粒度进行装备),则可以使用单个系统调用,这将大大摊销其成本。事件递送开销(如前所述)包括硬件定时器事件被递送到OS,OS然后确定哪个线程在等待该事件并且最终递送该事件。在常规的系统中,事件递送开销平均起来可能要花至少几微秒,并且由于可能会将其延迟的其他不相关事件和系统活动,事件递送会遭受显著的抖动,从而导致与定时器期满的显著偏差达几十微秒或更多,这也是很常见的情况。
当定时器的粒度较小时,这些开销对软件来说可能是不能容忍的。例如,引起2微秒的设定和事件递送开销的5微秒定时器会在这些计时活动中浪费20%的处理器周期,从而降低负载系统的吞吐量。该开销使得这种方法的成本是难以承受的,例如,在抢占式调度中。此外,与内核递送相关联的抖动可能是显著的。例如,10微秒定时器可以在多达2倍(2x)至3倍(3x)的微秒(例如,20至30微秒)内被递送,减少了期望粒度定时器的好处。
有利的是,一些实施例可以提供用于可在具有最低限度的操作系统支持的情况下由应用直接编程的用户定时器能力的技术。虽然操作系统可以启用用户定时器能力并且为关联的状态提供上下文切换支持,但应用可利用新的指令直接装备用户定时器并且通过用户中断的递送而接收用户定时器事件。例如,可以在架构规范中描述用户定时器特征的实施例的可用性。指令集架构可以描述应用可用于设定定时器的(一个或多个)指令,以及用于设定中断的递送和启用该特征的操作系统支持。
有利的是,要求细粒度用户定时器的应用将通过对于定时器设定和事件递送两者,在关键路径中绕过内核,来最大限度地减少与设定定时器和定时器事件递送相关联的开销。由于绕过了内核,所以定时器事件的抖动也可得以减少。一些实施例可有益于多个软件栈,包括:例如,在支持用户级线程的编程语言和运行时中的更好的抢占和公平性,在用户空间中对主机联网栈的更好的调度和抢占支持,以及大规模地减小云工作负载的尾部时延。
一些实施例可以将与硬件定时器相关联的更多功能转移到用户空间中。一些实施例可以提供更好的性能和更低的时延,并且避免内核开销。一些实施例可以提供独立于底层OS接口的更高级别抽象概念。例如,一些实施例可以应用不依赖于OS能力和策略的特定应用策略,和/或避免基于内核的特征的冗长开发和发布周期。
为数据平面添加对于内核绕过的硬件支持的特征的其他示例包括直接向应用递送中断(例如,用户中断)和快速用户模式同步(用户处理器间中断(用户IPI))。这两个特征允许了应用直接服务于外部设备中断以及其他处理器中断。一些实施例为用户定时器的核心绕过提供了硬件支持,允许了应用直接编程和接收定时器事件。
参考图1,集成电路100的一个实施例可以包括电路113,该电路113被配置为取回从用户级应用直接提供的定时器程序信息,并且基于所取回的定时器程序信息在硬件中对用户定时器进行编程。例如,电路113可以被配置为基于所取回的定时器程序信息来装备用户定时器,和/或调度用户中断以将用户定时器事件直接递送给用户级应用。有利的是,电路113的实施例可以被配置为绕过内核以设定用户定时器,并且绕过内核来将用户定时器事件递送给用户级应用。
在一些实施例中,集成电路100还可以包括与电路113通信耦合的存储器115,以存储用户定时器的定时器程序信息。例如,存储器115可以包括寄存器,并且定时器程序信息可以指示出期望的时间延迟量或者期望的时间期限。在一些实施例中,电路113还可以被配置为基于存储在存储器115中的定时器程序信息来装备用户定时器,确定对于用户定时器是否达到编程的时间,并且如果确定是,则为用户定时器挂起用户定时器事件(例如,使得用户定时器事件成为待决的)。电路113还可以被配置为调度具有用户定时器向量的用户中断,以将用户定时器事件递送给用户级应用。
参考图2A至2C,方法200的一个实施例可以包括在方框221处取回从用户级应用直接提供的定时器程序信息并且在方框222处基于所取回的定时器程序信息在硬件中对用户定时器进行编程。例如,方法200可以包括在方框223处基于所取回的定时器程序信息来装备用户定时器,和/或在方框224处调度用户中断以将用户定时器事件直接递送给用户级应用。有利的是,方法200的一些实施例可以包括在方框225处绕过内核来设定用户定时器,并且在方框226处绕过内核来将用户定时器事件递送给用户级应用。
方法200的一些实施例还可以包括在方框227处在存储器中为用户定时器存储定时器程序信息。例如,在方框228处存储器可以包括寄存器,并且在方框229处定时器程序信息可以指示出期望的时间延迟量,或者在方框230处可指示出者期望的时间期限。方法200还可包括在方框231处基于存储在存储器中的定时器程序信息来装备用户定时器,在方框232处确定对于用户定时器是否达到编程的时间,并且如果确定是,则在方框233处为用户定时器挂起用户定时器事件。方法200的一些实施例还可以包括在方框234处调度具有用户定时器向量的用户中断,以将用户定时器事件递送给用户级应用。
参考图3,装置300的一个实施例可以包括:处理器331;与处理器331通信耦合的存储器333,以存储从用户级应用直接提供的定时器程序信息;以及与处理器331和存储器333通信耦合的电路335。电路335可以被配置为从存储器333取回定时器程序信息,并且基于所取回的定时器程序信息在硬件中对用户定时器进行编程。例如,电路335还可以被配置为基于所取回的定时器程序信息来装备用户定时器,和/或以内核级调度用户中断以将用户定时器事件直接递送给用户级应用。电路还可以被配置为绕过内核来设定用户定时器,并且绕过内核来将用户定时器事件递送给用户级应用。
装置300的一些实施例还可以包括硬件定时器337,以用作用户定时器的参考。例如,硬件定时器337可以包括参考时钟,并且定时器程序信息可以指示出参考时钟的周期数目或者参考时钟的时钟期限值。在一些实施例中,电路335还可以被配置为基于存储在存储器中的时钟期限值来装备用户定时器,确定参考时钟是否达到了时钟期限值,并且如果确定是,则为用户定时器挂起用户定时器事件。电路335还可以被配置为调度具有用户定时器向量的用户中断,以将用户定时器事件递送给用户级应用。
参考图4,系统400的一个实施例可以包括:存储器441,以存储与用户级应用相关联的用户定时器控制数据结构442;以及与存储器441通信耦合的处理器核心443,以基于存储在用户定时器控制数据结构442中的时间值来对用户定时器进行编程,确定参考时钟是否达到了用户定时器值,并且如果确定是,则设置用户定时器事件针对用户定时器被挂起的指示。例如,存储器441包括寄存器445,以存储用户定时器控制数据结构442。在一些实施例中,处理器核心443还可以被配置为从用户定时器控制数据结构442对用户期限和用户定时器向量进行解码。在一些实施例中,处理器核心443还可以被配置为调度用户中断以将用户定时器事件递送给用户级应用。例如,处理器核心443可以被配置为在当前请求服务的用户中断的位图中设置与用户定时器向量相对应的位,并且将用户中断的用户期限设置为零。其他实施例可以利用除了用户中断以外的技术以将用户定时器事件递送给用户级应用。
系统400的一些实施例还可以包括硬件时钟447,以用作用户定时器的参考时钟。在一些实施例中,处理器核心443可以被配置为当在用户定时器被编程之后已经经过的参考时钟的周期数目与存储在用户定时器控制数据结构442中的时间值相对应时,设置用户定时器事件针对用户定时器被挂起的指示。附加地,或者替代地,处理器核心443还可以被配置为在参考时钟达到与存储在用户定时器控制数据结构442中的时间值相对应的时钟值之后,设置用户定时器事件针对用户定时器被挂起的指示。
在一些实施例中,用户定时器特征可以定义64位值,该值对用户定时器事件的期望时间进行编码。软件通过将此值写入到寄存器中来装备定时器。当达到编程的时间时,用户定时器事件成为待决的。当被处理时,用户定时器事件会导致具有用户定时器向量的用户中断。
定时器装备示例
根据一些实施例,应用可以使用第3环(用户级)指令来直接装备定时器并且指定用户中断向量(绕过内核)。实施例可按多种方式支持这些指令,包括例如读取和写入与用户定时器特征相关联的寄存器(TMR)的专用指令(例如,RDTMR、WRTMR),以及读取和写入一般的用户控制寄存器(UCR)的通用指令(例如,RDUCR、WRUCR),其中UCR包括用户定时器寄存器。
根据一些实施例,软件可以按若干方式指定与用户定时器相关联的时间,包括基于延迟的方法和基于期限的方法。对于基于延迟的方法,用户定时器在参考时钟(例如,处理器时间戳计数器(processor timestamp counter,TSC))的与延迟相对应的某个数目的周期之后成为待决的。将延迟设置为零会禁用定时器。可选地,硬件可以支持周期性定时器子模式,其中,在延迟已经过并且用户定时器事件被递送之后,定时器被重新装备。
对于基于期限的方法,当参考时钟(例如,处理器TSC)达到与期限相对应的特定值时,定时器就会变成待决的。将用户期限设置为零会禁用定时器。在这种模式中,软件负责在用户定时器事件被递送之后重新装备定时器。
为了说明而不是限制的目的(例如,在不失一般性的情况下),以下示例的用户定时器的操作是利用TSC作为基于期限的方法的参考时钟来描述的。当TSC值达到期限时,用户定时器事件成为待决的。在用户定时器事件被处理之后,将利用具有由软件选择的用户定时器向量的用户中断来递送用户定时器事件。软件选择的用户定时器向量可以在与期限相同的寄存器中或者在不同的寄存器中指定。
图5示出了使用单个寄存器(例如,在本文中被称为UINT_TMR)的用户定时器控制数据结构的示例格式,该单个寄存器对用户期限和用户定时器向量两者进行编码。在这个示例中,以64个TSC周期的粒度来指定用户期限,其中低6位被假定为零。
事件递送示例
当逻辑处理器TSC大于或等于用户期限时,用户定时器事件成为待决的。将用户期限设置为过去的值,将在写入完成后挂起用户定时器事件。将零写入到用户期限会禁用用户定时器并且取消待决的用户定时器事件。
待决的用户定时器事件不会被处理,直到处理器处于第3环(例如,当前权限级别(current privilege level,CPL)=3)为止。注意,在操作系统上下文切换、系统调用、中断或故障的服务等等期间,该事件被保持待决。处理待决的用户定时器事件可能要求其他条件,包括用户中断可以被启用(例如,更新中断标志(update interrupt flag,UIF)=1)。
当用户定时器事件被处理时,通过在当前请求服务的用户中断的位图(例如,用户中断请求寄存器(user interrupt request register,UIRR))中设置与用户定时器向量相对应的位,并且然后将用户期限设置为零,来挂起用户中断。用户中断可以在处理之后立即被递送。
OS支持示例
根据一些实施例,可以通过添加专用能力位来列举对用户定时器能力的支持。例如,专用能力位可以由硬件通过CPUID指令中的额外能力位来列举。在一些实施例中,用户定时器能力可能仅在特定处理器模式中可用(例如在64位操作中)。
在一些实施例中,用户定时器特征可以由系统软件使用一般或专用寄存器(例如,在CR4中或者在架构模型特定寄存器(model-specific register,MSR)中)中的特定启用位来启用。可选地,对用户定时器的指令支持的可用性可以以软件已启用了该特征为条件。例如,用于使用用户定时器的指令可以在用户定时器未被启用时触发故障。
在一些实施例中,硬件可以提供扩展,以允许与用户时间相关联的状态的快速保存/恢复。例如,硬件可以为与用户定时器相关联的新状态组件提供对XSAVE/XSTORE架构的扩展,和/或提供特定指令来保存/恢复寄存器的列表(例如,包括与用户定时器相关联的那些寄存器)。
根据一些实施例,操作系统可以按各种方式中的任何一种来管理用户时间。例如,OS可以选择只启用一种模式或提供API来允许应用选择其需要的模式。两个示例状态管理策略包括全局定时器模式和虚拟定时器模式。
对于全局定时器模式,操作系统在上下文切换时保留用户编程。对于基于期限的定时器,操作将如下:1)当用户线程被取消调度时,其期限被保存起来;2)当该线程被重新调度时,同样的期限被恢复;3)如果期限在线程被取消调度的同时过去了,则该线程将在被重新调度后被立即通过用户中断来递送用户定时器事件。
对于虚拟定时器模式,操作系统在上下文切换时调整用户编程。对于基于期限的定时器,操作将如下:1)当用户线程被取消调度时,其期限与TSC之间的差量被保存起来;2)当线程被重新调度时,其期限被恢复为当前TSC和保存的差量之和。在这种模式中,线程得到由其不在运行的时间不断调整的期限。
图6A和图6B示出了当线程在时间0设置250微秒的定时器时,全局(图6A)和虚拟(图6B)定时器之间的比较结果。
用户中断示例
可以利用任何合适的技术来提供用户级中断。例如,处理系统(例如,单核心或多核心处理器)可以包括被设计来支持事件的处理逻辑,该事件可以被称为用户级中断。与普通中断不同的是,用户级中断在没有权限级转变的情况下被递送给相应的用户级应用,并且可能只在这种应用正被执行时被递送。
用户级中断事件可以调用CPU控制流修改机制,这可以被称为用户级中断递送。在一些实施方式中,用户级中断递送可以基于处理器状态(例如,当特定用户级应用正被执行时)并且由特定存储器数据结构的状态来触发,这些存储器数据结构可以由处理器和操作系统协作管理。这些和其他软件可配置机制和数据结构可以使得处理器能够直接向用户级应用递送特定I/O中断,而无需将控制流重定向到内核级软件。
在一些实施方式中,可被称为用户级APIC的存储器数据结构可以由处理器和操作系统协作管理。可以为正在由处理器执行的用户级应用的每个线程创建用户级APIC的单独实例。用户级APIC可以包括位图,该位图包括多个位标志。每个位标志可以指示出由与该位标志在位图中的位置相对应的向量所识别的用户级中断的状态。在说明性示例中,处理器可以设置位以指示出与该位标志在位图中的位置相对应的向量所识别的用户级中断当前是待决的。
操作系统可以进一步维护另一存储器数据结构,该存储器数据结构可以被称为用户级中断处理程序地址数据结构。可以为正在由处理器执行的用户级应用的每个线程创建用户级中断处理程序地址数据结构的单独实例。在特定实施方式中,用户级中断处理程序地址数据结构可以由包括用户级中断处理程序的多个地址的表格来表示,由中断向量来索引(该中断向量从中断描述符表(Interrupt Descriptor Table,IDT)类推,IDT可以被称为用户级IDT)。替代地,单个用户级中断处理程序地址可以被存储在处理器寄存器中,以识别将负责所有中断向量的用户级中断处理程序。在后一种场景中,用户级中断向量可以被推送到中断处理程序的堆栈上。例如,用户级中断处理程序地址数据结构指的是上面提到的包括多个用户级中断处理程序地址的表格,或者是上面提到的单个用户级中断处理程序地址,它可以被存储在一个或多个处理器寄存器中,或者被存储在系统存储器中。
响应于在相应的用户级应用正被执行的同时接收到用户级中断的通知,处理器可以通过调用由用户级中断处理程序地址数据结构所识别的用户级中断处理程序来通知该应用。当用户级中断处理程序完成执行时,控制流可以被返回到在用户级中断被递送时正在执行的软件模块。因此,用户级中断可以由用户级应用来递送和处理,而不引起权限级转换。
在特定实施方式中,处理器可以对用户级中断进行优先排序(例如,基于中断向量编号)。在说明性示例中,响应于接收到用户级中断的通知,处理器可以在与当前正在被处理器执行的用户级应用相关联的用户级APIC中设置与用户级中断向量相对应的位。然后,处理器可以调用由与用户级应用相关联的用户级中断处理程序地址数据结构所识别的用户级中断处理程序,以处理由用户级APIC所识别的一个或多个待决用户级中断之中具有最高优先级的待决用户级中断。
参考图7,处理系统700的一个实施例可以包括一个或多个处理器核心720,它们可以经由共享互连与系统存储器740耦合。处理系统700还可以包括芯片组730,该芯片组730支持存储器操作、输入/输出操作、配置、控制、内部或外部接口、连接或通信功能、和/或处理系统700的处理器核心720和/或其他组件的其他类似功能。芯片组730的个体元素可以被一起分组在单个芯片上,分散在多个芯片间,和/或被部分地、完全地、冗余地、或者根据分布式方法被集成到一个或多个处理器中,包括处理器核心720。
在特定实施例中,芯片组730可以包括中断逻辑732,该中断逻辑732可以实现用户级中断发布。替代得,中断逻辑732可以驻留在处理系统700的其他组件中。处理系统700还可以包括定时器逻辑734,该定时器逻辑734可以实现如本文所述的用户定时器特征。在各种实施例中,定时器逻辑734可以驻留在处理器核心720、芯片组730、或者处理系统700的其他组件中。
处理系统700还可以包括系统存储器740,该系统存储器740可以包括一个或多个介质,其上可存储信息,例如数据和/或程序代码,例如静态或动态随机访问存储器、基于半导体的只读存储器或闪存、磁盘或光盘存储器、或者可由处理器核心720读取的任何其他类型的介质。
处理系统700还可以包括一个或多个设备750,这些设备可以包括任何类型的I/O设备、外围设备、或者可发起中断请求的其他设备,例如键盘、鼠标、轨迹球、点击设备、监视器、打印机、媒体卡、网络接口、信息存储设备,等等。设备750可以体现为分立的组件,或者可以与其他设备集成。在特定实施方式中,设备750可以代表多功能I/O、外设或其他设备中的功能。
处理器核心720、芯片组730、系统存储器740和设备750可以通过一个或多个并行、顺序、管线式、异步、同步、有线、无线和/或其他总线或点对点连接或通信手段来直接或间接地彼此耦合。在图7的说明性示例中,芯片组730包括接口731,以通过任何这样的连接或其他通信手段从设备750接收信号、消息和/或事务,例如中断请求,或者将信号、消息和/或事务发送到设备750和/或系统700中的任何其他代理或组件。类似地,设备750可以包括相应的接口751,以向芯片组730和/或处理系统700的任何其他代理或组件发送和/或接收信号、消息和/或事务。在特定实施方式中,处理系统700还可以包括图7中未示出的各种其他组件。
在特定实施方式中,系统存储器740可以用于存储与正在被处理系统700执行的多个用户级线程相关联的多个用户级APIC数据结构742、多个用户级中断处理程序地址数据结构744、以及多个用户定时器控制数据结构(例如,UINT_TMR)746。替代地,用户级APIC数据结构742、用户级中断处理程序地址数据结构744和/或用户定时器控制数据结构746可以被存储在处理器核心720的寄存器中。与给定的用户线程相关联的用户级APIC数据结构742、用户级中断处理程序地址数据结构744和/或用户定时器控制数据结构746的基地址可以被存储在由操作系统采用的XSAVE区域中,以便在上下文切换时加载状态。在特定实施方式中,处理器核心720可以在上下文切换时,将存储在XSAVE区域中的用户级APIC数据结构742、用户级中断处理程序地址数据结构744和/或用户定时器控制数据结构746的基地址加载到特定处理器寄存器中。
普通中断通过其相应的独特的中断类型或中断编号来相互区分,这些中断类型或中断编号通常被称为“中断向量”。用户级中断可以与普通中断共享向量空间(因此每个中断向量都识别普通中断或用户级中断),或者它们可以被分配专用的用户级中断向量空间。分离向量空间允许了由每个用户级应用独立地确定用户级中断的优先级,从而促进用户线程在处理器核心720上的动态迁移。
处理器核心720可以被配置为使用与正在被处理器核心720执行的多个用户级线程相关联的多个用户级APIC数据结构742来跟踪待决的用户级中断。每个用户级APIC数据结构742可以包括位图,该位图包括多个位标志。位图内的每个位标志的位置可以对应于识别将由与用户级APIC数据结构相关联的用户级应用处理的用户级中断类型的中断编号。响应于接收到一个或多个用户级中断的通知(例如,以在发布的中断描述符中设置的一个或多个位的形式),处理器可以在与当前正在被处理器核心720执行的用户级应用相关联的用户级APIC数据结构中设置与用户级中断向量相对应的一个或多个位。用户线程的用户级APIC数据结构的基地址可以被存储在该线程的XSAVE区域中。例如,当用户定时器事件被处理时,通过在当前请求服务的用户中断的位图中设置与用户定时器向量相对应的位,并且然后将用户期限设置为零,来挂起用户中断。用户中断可以在处理之后立即被递送。
图8示出了硬件800的一个实施例,以处理诸如用户定时器指令之类的指令(例如,WRTMR、RDTMR、WRUCR、RDUCR,等等)。如图所示,存储装置843存储要执行的一个或多个用户定时器指令841。解码电路845可以被配置为对单个指令解码,该单个指令包括用于第一源操作对象的标识符的字段、用于目的地操作对象的标识符的字段、以及用于操作码的字段,该操作码指示出执行电路要对用户定时器进行编程。
用户定时器指令841之一被解码电路845接收。例如,解码电路845从提取逻辑/电路接收此指令。该指令包括用于操作码、源和目的地的字段。在一些实施例中,源和目的地是寄存器,而在其他实施例中,一个或多个是存储器位置。在一些实施例中,操作码详细说明了要执行哪个用户定时器操作。
解码电路845将指令解码成一个或多个操作。在一些实施例中,这个解码包括生成要被执行电路(例如执行电路849)执行的多个微操作。解码电路845还对指令前缀进行解码。
在一些实施例中,寄存器重命名、寄存器分配和/或调度电路847提供用于以下各项中的一个或多个的功能:1)将逻辑操作对象值重命名为物理操作对象值(例如,一些实施例中的寄存器别名表),2)向解码的指令分配状态位和标志,以及3)调度经解码的指令以在指令池之外的执行电路上执行(例如,在一些实施例中使用预留站)。
寄存器(寄存器文件)和/或存储器848存储数据作为要被执行电路849进行操作的指令的操作对象。示例性寄存器类型包括压缩数据寄存器、通用寄存器、以及浮点寄存器。
执行电路849执行经解码的指令。在图11B等中示出了示例性的详细执行电路。解码指令的执行使得执行电路849根据操作码来执行解码的指令。对于一些用户定时器指令,例如,解码指令的执行使得执行电路849从由第一源操作对象指示的位置取回定时器程序信息,并且基于所取回的定时器程序信息对由目的地操作对象指示的用户定时器进行编程。
在一些实施例中,还使得执行电路849根据用户定时器指令操作码来执行解码的指令,以基于所取回的定时器程序信息来对指示的用户定时器进行装备,和/或绕过内核来设定用户定时器。在一些实施例中,硬件800还包括硬件定时器851,以用作所指示的用户定时器的参考。例如,硬件定时器851可以包括参考时钟,并且定时器程序信息可以指示出参考时钟的周期数目或者参考时钟的时钟期限值。
在一些实施例中,引退/写回电路853在架构上将目的地寄存器提交到寄存器或存储器848中并且引退该指令。
用户定时器指令的格式的一个实施例是WRTMR DSTREG,SRC1。在一些实施例中,WRTMR是指令的操作码助记符。DSTREG是目的地用户寄存器操作对象的字段。SRC1是源操作对象的字段,以用于指示出存储用户定时器控制数据结构的用户控制寄存器或存储器位置。
图9示出了由处理器执行来处理用户定时器指令的方法860的实施例。例如,如图11B所示的处理器核心、如下文详述的管线等等执行此方法。
在861,提取指令。例如,提取用户定时器指令。用户定时器指令包括用于操作码的字段、用于目标用户定时器的目的地操作对象、以及用于用户定时器控制数据结构的源操作对象。在一些实施例中,该指令还包括用于写入掩码的字段。在一些实施例中,从指令缓存提取该指令。源操作对象和目的操作对象是压缩数据。用户定时器指令的操作码指示出要执行哪个用户定时器操作(例如,写入定时器寄存器、读取定时器寄存器,等等)。
在863,对提取的指令进行解码。例如,提取的用户定时器指令被解码电路解码,如本文详述的解码电路。
在865,取回与解码的指令的源操作对象相关联的数据值,并且调度解码的指令的执行。例如,当源操作对象中的一个或多个是存储器操作对象时,取回来自所指示的存储器位置的数据。
在867,由执行电路(硬件)执行解码的指令,例如本文所详述的执行电路。对于WRTMR指令,该执行将使得执行电路基于与源操作对象相关联的取回数据对由目的地操作对象指示的用户定时器进行编程。
在一些实施例中,在869提交或引退该指令。
在一些实施例中,解码的WRTMR指令的执行将使得执行电路在871基于与源操作对象相关联的取回数据对指示的用户定时器进行装备,和/或在873绕过内核来设定用户定时器。例如,与源操作对象相关联的数据可以在874指示出参考时钟的周期数目,或者在875指示出参考时钟的时钟期限值。
图10示出了由处理器执行以利用仿真或二进制转化来处理用户定时器指令的方法880的实施例。例如,如图11B所示的处理器核心、如下文详述的管线等等执行此方法。
在881,提取来自第一指令集的指令。例如,提取用户定时器指令。用户定时器指令包括用于操作码的字段、用于目标用户定时器的目的地操作对象、以及用于用户定时器控制数据结构的源操作对象。在一些实施例中,该指令还包括用于写入掩码的字段。在一些实施例中,从指令缓存提取该指令。源操作对象和目的地操作对象是压缩数据。用户定时器指令的操作码指示出要执行哪个用户定时器操作(例如,写入定时器寄存器、读取定时器寄存器,等等)。
在882,将所提取的第一指令集的指令转化成第二指令集的一个或多个指令。
在883,对经转化的第二指令集的一个或多个指令进行解码。在一些实施例中,转化和解码被合并。
在885,取回与解码的指令的源操作对象相关联的数据值。例如,当源操作对象中的一个或多个是存储器操作对象时,取回来自所指示的存储器位置的数据。
在887,由执行电路(硬件)执行第二指令集的(一个或多个)解码的指令,例如本文所详述的执行电路。对于WRTMR指令,该执行将使得执行电路基于与源操作对象相关联的取回数据对由目的地操作对象指示的用户定时器进行编程。
在一些实施例中,在889提交或引退该指令。
在一些实施例中,解码的WRTMR指令的执行将使得执行电路在891基于与源操作对象相关联的取回数据对指示的用户定时器进行装备,和/或在893绕过内核来设定用户定时器。例如,与源操作对象相关联的数据可以在894指示出参考时钟的周期数目,或者在895指示出参考时钟的时钟期限值。
本领域的技术人员将意识到,各种各样的设备都可从上述实施例中受益。以下示例性核心架构、处理器和计算机架构是可以有益地并入本文描述的技术的实施例的设备的非限制性示例。
示例性核心架构、处理器和计算机架构
可以按不同的方式、为了不同的目的、在不同的处理器中实现处理器核心。例如,这种核心的实施方式可以包括:1)旨在用于通用计算的通用有序核心;2)旨在用于通用计算的高性能通用无序核心;3)主要旨在用于图形和/或科学(吞吐量)计算的专用核心。不同处理器的实施方式可以包括:1)包括旨在用于通用计算的一个或多个通用有序核心和/或旨在用于通用计算的一个或多个通用无序核心的CPU;以及2)包括主要旨在用于图形和/或科学(吞吐量)的一个或多个专用核心的协处理器。这样的不同处理器导致不同的计算机系统架构,这些架构可以包括:1)协处理器在与CPU分开的芯片上;2)协处理器在与CPU相同的封装中、分开的管芯上;3)协处理器与CPU在同一管芯上(在此情况下,这种协处理器有时被称为专用逻辑,例如集成图形和/或科学(吞吐量)逻辑,或者被称为专用核心);以及4)片上系统,其可以在同一管芯上包括所描述的CPU(有时称为(一个或多个)应用核心或者(一个或多个)应用处理器)、上述的协处理器以及额外的功能。接下来描述示例性核心架构,然后是对示例性处理器和计算机架构的描述。
示例性核心架构
有序和无序核心框图
图11A是根据本发明的实施例示出示例性有序管线和示例性寄存器重命名、无序发出/执行管线两者的框图。图11B是根据本发明的实施例示出要被包括在处理器中的有序架构核心的示例性实施例和示例性寄存器重命名、无序发出/执行架构核心两者的框图。图11A-11B中的实线框示出了有序管线和有序核心,而虚线框的可选添加示出了寄存器重命名、无序发出/执行管线和核心。考虑到有序方面是无序方面的子集,将描述无序方面。
在图11A中,处理器管线900包括提取级902、长度解码级904、解码级906、分配级908、重命名级910、调度(也称为调遣或发出)级912、寄存器读取/存储器读取级914、执行级916、写回/存储器写入级918、异常处理级922、以及提交级924。
图11B示出了处理器核心990包括耦合到执行引擎单元950的前端单元930,并且执行引擎单元950和前端单元930这两者都耦合到存储器单元970。核心990可以是精简指令集计算(reduced instruction set computing,RISC)核心、复杂指令集计算(complexinstruction set computing,CISC)核心、超长指令字(very long instruction word,VLIW)核心、或者混合或替代核心类型。作为又一选项,核心990可以是专用核心,例如,网络或通信核心、压缩引擎、协处理器核心、通用计算图形处理单元(general purposecomputing graphics processing unit,GPGPU)核心、图形核心,等等。
前端单元930包括分支预测单元932,该分支预测单元932耦合到指令缓存单元934,指令缓存单元934耦合到指令转化后备缓冲器(translation lookaside buffer,TLB)936,指令TLB 936耦合到指令提取单元938,指令提取单元938耦合到解码单元940。解码单元940(或解码器)可以对指令进行解码,并且生成一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出,这些微操作、微代码入口点、微指令、其他指令或其他控制信号是从原始指令解码来的,或者以其他方式反映原始指令,或者是从原始指令得出的。可以利用各种不同的机制来实现解码单元940。合适机制的示例包括但不限于查找表、硬件实施方式、可编程逻辑阵列(programmable logic array,PLA)、微代码只读存储器(read only memory,ROM),等等。在一个实施例中,核心990包括微代码ROM或其他介质,其为特定宏指令存储微代码(例如,在解码单元940中或者以其他方式在前端单元930内)。解码单元940耦合到执行引擎单元950中的重命名/分配器单元952。
执行引擎单元950包括重命名/分配器单元952,该重命名/分配器单元952耦合到引退单元954和一组一个或多个调度器单元956。(一个或多个)调度器单元956表示任何数目的不同调度器,包括预留站、中央指令窗口,等等。(一个或多个)调度器单元956耦合到(一个或多个)物理寄存器文件单元958。(一个或多个)物理寄存器文件单元958中的每一个表示一个或多个物理寄存器文件,这些物理寄存器文件中的不同物理寄存器文件存储一个或多个不同的数据类型,例如标量整数、标量浮点、压缩整数、压缩浮点、向量整数、向量浮点、状态(例如,作为要执行的下一指令的地址的指令指针),等等。在一个实施例中,(一个或多个)物理寄存器文件单元958包括向量寄存器单元、写入掩码寄存器单元、以及标量寄存器单元。这些寄存器单元可以提供架构式向量寄存器、向量掩码寄存器、以及通用寄存器。(一个或多个)物理寄存器文件单元958与引退单元954交叠以说明可用来实现寄存器重命名和无序执行的各种方式(例如,利用(一个或多个)重排序缓冲器和(一个或多个)引退寄存器文件;利用(一个或多个)未来文件、(一个或多个)历史缓冲器、以及(一个或多个)引退寄存器文件;利用寄存器图和寄存器的池;等等)。引退单元954和(一个或多个)物理寄存器文件单元958耦合到(一个或多个)执行集群960。(一个或多个)执行集群960包括一组一个或多个执行单元962和一组一个或多个存储器访问单元964。执行单元962可以在各种类型的数据(例如,标量浮点、压缩整数、压缩浮点、向量整数、向量浮点)上执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集合的若干个执行单元,但其他实施例可以只包括一个执行单元或者全部执行所有功能的多个执行单元。(一个或多个)调度器单元956、(一个或多个)物理寄存器文件单元958和(一个或多个)执行集群960被示为可能是多个,因为特定实施例为特定类型的数据/操作创建单独的管线(例如,标量整数管线、标量浮点/压缩整数/压缩浮点/向量整数/向量浮点管线、和/或存储器访问管线,它们各自具有其自身的调度器单元、(一个或多个)物理寄存器文件单元和/或执行集群——并且在单独的存储器访问管线的情况下,实现了特定实施例,其中只有此管线的执行集群具有(一个或多个)存储器访问单元964)。还应当理解,在使用分开管线的情况下,这些管线中的一个或多个可以是无序发出/执行,并且其余的是有序的。
存储器访问单元964的集合耦合到存储器单元970,存储器单元970包括数据TLB单元972,数据TLB单元972耦合到数据缓存单元974,数据缓存单元974耦合到第2级(L2)缓存单元976。在一个示例性实施例中,存储器访问单元964可以包括加载单元、存储地址单元、以及存储数据单元,它们中的每一者耦合到存储器单元970中的数据TLB单元972。指令缓存单元934进一步耦合到存储器单元970中的第2级(L2)缓存单元976。L2缓存单元976耦合到一个或多个其他级别的缓存并且最终耦合到主存储器。
作为示例,示例性寄存器重命名、无序发出/执行核心架构可以实现管线900如下:1)指令提取938执行提取和长度解码级902和904;2)解码单元940执行解码级906;3)重命名/分配器单元952执行分配级908和重命名级910;4)(一个或多个)调度器单元956执行调度级912;5)(一个或多个)物理寄存器文件单元958和存储器单元970执行寄存器读取/存储器读取级914;执行集群960执行执行级916;6)存储器单元970和(一个或多个)物理寄存器文件单元958执行写回/存储器写入级918;7)在异常处理级922中可涉及各种单元;并且8)引退单元954和(一个或多个)物理寄存器文件单元958执行提交级924。
核心990可以支持一个或多个指令集(例如,x86指令集(带有已随着较新版本添加的一些扩展);加州森尼维尔市的MIPS技术公司的MIPS指令集;加州森尼维尔市的ARM控股公司的ARM指令集(带有可选的额外扩展,例如NEON)),包括本文描述的(一个或多个)指令。在一个实施例中,核心990包括逻辑以支持压缩数据指令集扩展(例如,AVX1、AVX2),从而允许由许多多媒体应用使用的操作利用压缩数据来执行。
应当理解,核心可以支持多线程处理(执行操作或线程的两个或更多个并行集合),并且可以按各种方式来支持多线程处理,包括时间切片式多线程处理、同时多线程处理(其中单个物理核心针对该物理核心在同时多线程处理的每个线程提供逻辑核心),或者这些的组合(例如,时间切片式提取和解码,然后是同时多线程处理,例如像Hyperthreading技术中那样)。
虽然在无序执行的上下文中描述寄存器重命名,但应当理解寄存器重命名可以用于有序架构中。虽然处理器的所示实施例还包括分开的指令和数据缓存单元934/974和共享的L2缓存单元976,但替代实施例可以针对指令和数据两者具有单个内部缓存,例如,第1级(L1)内部缓存或者多级别的内部缓存。在一些实施例中,系统可以包括内部缓存和在核心和/或处理器外部的外部缓存的组合。替代地,所有缓存可以在核心和/或处理器外部。
具体示例性有序核心架构
图12A-12B示出更具体的示例性有序核心架构的框图,该核心将是芯片中的若干个逻辑块(包括相同类型和/或不同类型的其他核心)之一。逻辑块通过高带宽互连网络(例如,环状网络)与某些固定功能逻辑、存储器I/O接口和其他必要I/O逻辑进行通信,这取决于应用。
图12A是根据本发明的实施例的单个处理器核心及其与片上互连网络1002的连接以及其第2级(L2)缓存的本地子集1004的框图。在一个实施例中,指令解码器1000支持具有压缩数据指令集扩展的x86指令集。L1缓存1006允许低时延访问以将存储器缓存到标量和向量单元中。虽然在一个实施例中(为了简化设计),标量单元1008和向量单元1010使用分开的寄存器集合(分别是标量寄存器1012和向量寄存器1014)并且将在它们之间传送的数据写入到存储器,然后从第1级(L1)缓存1006中读回这些数据,但本发明的替代实施例可以使用不同的方案(例如,使用单个寄存器集合或者包括允许数据在两个寄存器文件之间传送而不被写入和读回的通信路径)。
L2缓存的本地子集1004是全局L2缓存的一部分,全局L2缓存被划分成单独的本地子集,每个处理器核心有一个本地子集。每个处理器核心具有到其自身的L2缓存本地子集1004的直接访问路径。处理器核心所读取的数据被存储在其L2缓存子集1004中并且可以被快速访问,这与其他处理器核心访问其自身的本地L2缓存子集并行地进行。处理器核心所写入的数据被存储在其自身的L2缓存子集1004中并且在必要时从其他子集冲刷出。环状网络确保了共享数据的一致性。环状网络是双向的,以允许诸如处理器核心、L2缓存和其他逻辑块之类的代理在芯片内与彼此通信。每个环状数据路径在每个方向上是1012位宽的。
图12B是根据本发明的实施例的图12A中的处理器核心的一部分的扩展视图。图12B包括L1缓存1006的L1数据缓存1006A部分,以及关于向量单元1010和向量寄存器1014的更多细节。具体而言,向量单元1010是16宽向量处理单元(vector processing unit,VPU)(参见16宽ALU1028),其执行整数、单精度浮点和双精度浮点指令中的一个或多个。VPU支持利用调配单元1020调配寄存器输入,利用数值转换单元1022A-B进行数值转换,以及利用复制单元1024对存储器输入进行复制。写入掩码寄存器1026允许断言结果向量(predicatingresulting vector)写入。
图13是根据本发明的实施例的处理器1100的框图,该处理器1100可以具有多于一个核心,可以具有集成的存储器控制器,并且可以具有集成的图形能力。图13中的实线框示出了具有单个核心1102A、系统代理1110和一组一个或多个总线控制器单元1116的处理器1100,而虚线框的可选添加示出了具有多个核心1102A-N、系统代理单元1110中的一组一个或多个集成存储器控制单元1114以及专用逻辑1108的替代处理器1100。
因此,处理器1100的不同实施方式可以包括:1)其中专用逻辑1108是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个核心)并且核心1102A-N是一个或多个通用核心(例如,通用有序核心、通用无序核心或者两者的组合)的CPU;2)其中核心1102A-N是大量的主要旨在用于图形和/或科学(吞吐量)的专用核心的协处理器;以及3)其中核心1102A-N是大量的通用有序核心的协处理器。因此,处理器1100可以是通用处理器、协处理器或专用处理器,例如,网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量集成众核(many integrated core,MIC)协处理器(包括30个或更多个核心)、嵌入式处理器,等等。处理器可以被实现在一个或多个芯片上。处理器1100可以是一个或多个衬底的一部分和/或可以利用多种工艺技术中的任何一者被实现在一个或多个衬底上,这些工艺技术例如是BiCMOS、CMOS或NMOS。
存储器层次体系包括核心1102A-N内的相应缓存1104A-N的一个或多个级别、一组或者一个或多个共享缓存单元1106、以及耦合到该组集成存储器控制器单元1114的外部存储器(未示出)。该组共享缓存单元1106可以包括一个或多个中间级别缓存(例如第2级(L2)、第3级(L3)、第4级(4)或者其他级别的缓存),最后一级缓存(last level cache,LLC),和/或这些的组合。虽然在一个实施例中基于环的互连单元1112互连集成图形逻辑1108、该组共享缓存单元1106以及系统代理单元1110/(一个或多个)集成存储器控制器单元1114,但替代实施例也可以使用任何数目的公知技术来互连这种单元。在一个实施例中,在一个或多个缓存单元1106和核心1102A-N之间维持一致性。
在一些实施例中,核心1102A-N中的一个或多个能够进行多线程处理。系统代理1110包括协调和操作核心1102A-N的那些组件。系统代理单元1110可以包括例如功率控制单元(power control unit,PCU)和显示单元。PCU可以是或者可以包括对核心1102A-N和集成图形逻辑1108的功率状态进行调节所需要的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
核心1102A-N就架构指令集而言可以是同构的或者异构的;也就是说,核心1102A-N中的两个或更多个可以能够执行同一指令集,而其他的核心可以能够只执行该指令集的子集或者不同的指令集。
示例性计算机架构
图14-17是示例性计算机架构的框图。本领域中已知的用于膝上型电脑、桌面型电脑、手持PC、个人数字助理、工程工作站、服务器、网络设备、网络中心、交换机、嵌入式处理器、数字信号处理器(digital signal processor,DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备、以及各种其他电子设备的其他系统设计和配置,也是适当的。一般而言,能够包含本文公开的处理器和/或其他执行逻辑的各种各样的系统或电子设备一般是合适的。
现在参考图14,示出了根据本发明的一个实施例的系统1200的框图。系统1200可以包括一个或多个处理器1210、1215,它们耦合到控制器中心1220。在一个实施例中,控制器中心1220包括图形存储器控制器中心(graphics memory controller hub,GMCH)1290和输入/输出中心(Input/Output Hub,IOH)1250(它们可以在分开的芯片上);GMCH1290包括与存储器1240和协处理器1245耦合的存储器和图形控制器;IOH 1250将输入/输出(I/O)设备1260耦合到GMCH 1290。替代地,存储器和图形控制器中的一者或两者被集成在处理器内(如本文所述),存储器1240和协处理器1245直接耦合到处理器1210,并且控制器中心1220与IOH 1250在单个芯片中。
附加的处理器1215的可选性在图14中用虚线表示。每个处理器1210、1215可以包括本文描述的处理核心中的一个或多个并且可以是处理器1100的某个版本。
存储器1240可以例如是动态随机访问存储器(dynamic random access memory,DRAM)、相变存储器(phase change memory,PCM)、或者两者的组合。对于至少一个实施例,控制器中心1220经由多点分支总线(例如前端总线(frontside bus,FSB))、点到点接口(例如QuickPath Interconnect(QPI))或者类似的连接1295与(一个或多个)处理器1210、1215进行通信。
在一个实施例中,协处理器1245是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。在一个实施例中,控制器中心1220可以包括集成的图形加速器。
在物理资源1210、1215之间,就包括架构特性、微架构特性、热特性、功率消耗特性等等在内的价值度量的范围而言,可以有各种差异。
在一个实施例中,处理器1210执行控制一般类型的数据处理操作的指令。嵌入在这些指令内的可以是协处理器指令。处理器1210将这些协处理器指令识别为应当由附接的协处理器1245执行的类型。因此,处理器1210在协处理器总线或其他互连上向协处理器1245发出这些协处理器指令(或者表示协处理器指令的控制信号)。(一个或多个)协处理器1245接受并且执行所接收的协处理器指令。
现在参考图15,其中示出了根据本发明的实施例的第一更具体示例性系统1300的框图。如图15中所示,多处理器系统1300是点到点互连系统,并且包括经由点到点互连1350耦合的第一处理器1370和第二处理器1380。处理器1370和1380的每一者可以是处理器1100的某个版本。在本发明的一个实施例中,处理器1370和1380分别是处理器1210和1215,而协处理器1338是协处理器1245。在另一实施例中,处理器1370和1380分别是处理器1210和协处理器1245。
处理器1370和1380被示为分别包括集成存储器控制器(integrated memorycontroller,IMC)单元1372和1382。处理器1370还包括点到点(P-P)接口1376和1378作为其总线控制器单元的一部分;类似地,第二处理器1380包括P-P接口1386和1388。处理器1370、1380可以利用P-P接口电路1378、1388经由点到点(P-P)接口1350交换信息。如图15中所示,IMC 1372和1382将处理器耦合到相应的存储器,即存储器1332和存储器1334,存储器1332和存储器1334可以是在本地附接到相应的处理器的主存储器的一部分。
处理器1370、1380可以各自利用点到点接口电路1376、1394、1386、1398经由个体P-P接口1352、1354与芯片组1390交换信息。芯片组1390可以可选地经由高性能接口1339和互连1392与协处理器1338交换信息。在一个实施例中,协处理器1338是专用处理器,例如,高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器,等等。
共享缓存(未示出)可以被包括在任一处理器中,或者在两个处理器之外,但经由P-P互连与处理器连接,从而使得任一个或两个处理器的本地缓存信息在处理器被置于低功率模式中的情况下可以被存储在该共享缓存中。
芯片组1390可以经由接口1396耦合到第一总线1316。在一个实施例中,第一总线1316可以是外围组件互连(Peripheral Component Interconnect,PCI)总线,或者诸如快速PCI总线或另一种第三代I/O互连总线之类的总线,虽然本发明的范围不限于此。
如图15中所示,各种I/O设备1314可以耦合到第一总线1316以及总线桥1318,总线桥1318将第一总线1316耦合到第二总线1320。在一个实施例中,一个或多个附加的处理器1315(例如,协处理器、高吞吐量MIC处理器、GPGPU、加速器(例如,图形加速器或数字信号处理(DSP)单元)、现场可编程门阵列或者任何其他处理器)耦合到第一总线1316。在一个实施例中,第二总线1320可以是低引脚数(low pin count,LPC)总线。各种设备可以耦合到第二总线1320,包括例如键盘和/或鼠标1322、通信设备1327和存储单元1328,例如硬盘驱动器或者其他大容量存储设备,其中该存储单元1328在一个实施例中可以包括指令/代码和数据1330。另外,音频I/O 1324可以耦合到第二总线1320。注意其他架构是可能的。例如,取代图15的点到点架构,系统可以实现多点分支总线或者其他这种架构。
现在参考图16,其中示出了根据本发明的实施例的第二更具体示例性系统1400的框图。图15和图16中的相似元素带有相似的标号,并且图15的某些方面被从图16中省略以避免模糊图16的其他方面。
图16示出处理器1370、1380可以分别包括集成存储器和I/O控制逻辑(“CL”)1472和1482。因此,CL 1472、1482包括集成存储器控制器单元并且包括I/O控制逻辑。图16示出不仅存储器1332、1334耦合到CL 1472、1482,而且I/O设备1414也耦合到控制逻辑1472、1482。传统I/O设备1415耦合到芯片组1390。
现在参考图17,其中示出了根据本发明的实施例的SoC 1500的框图。图13中的相似元素带有相似的标号。另外,虚线框是更先进SoC上的可选特征。在图17中,(一个或多个)互连单元1502耦合到:应用处理器1510,其包括一组一个或多个核心1102A-N和(一个或多个)共享缓存单元1106;系统代理单元1110;(一个或多个)总线控制器单元1116;(一个或多个)集成存储器控制器单元1114;一组或一个或多个协处理器1520,其可以包括集成图形逻辑、图像处理器、音频处理器、以及视频处理器;静态随机访问存储器(static randomaccess memory,SRAM)单元1530;直接存储器访问(direct memory access,DMA)单元1532;以及显示单元1540,以用于耦合到一个或多个外部显示器。在一个实施例中,(一个或多个)协处理器1520包括专用处理器,例如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器,等等。
可以用硬件、软件、固件或者这种实现方案的组合来实现本文公开的机制的实施例。本发明的实施例可以被实现为在包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备、以及至少一个输出设备的可编程系统上执行的计算机程序或程序代码。
程序代码(例如图15中所示的代码1330)可以被应用到输入指令以执行本文描述的功能并且生成输出信息。输出信息可以按已知的方式被应用到一个或多个输出设备。对于本申请的目的,处理系统包括具有处理器的任何系统,例如:数字信号处理器(digitalsignal processor,DSP)、微控制器、专用集成电路(application specific integratedcircuit,ASIC)、或者微处理器。
可以用高级别程式或面向对象的编程语言来实现程序代码以与处理系统进行通信。如果期望,也可以用汇编或机器语言来实现程序代码。实际上,本文描述的机制在范围上不限于任何特定的编程语言。在任何情况下,该语言可以是经编译或者解译的语言。
至少一个实施例的一个或多个方面可以由被存储在机器可读介质上的表示处理器内的各种逻辑的代表性指令来实现,这些代表性指令当被机器读取时使得该机器制作逻辑来执行本文描述的技术。这种被称为“IP核心”的表现形式可以被存储在有形机器可读介质上并且被提供到各种客户或制造设施以加载到实际制作该逻辑或处理器的制作机器中。
这种机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非暂时性有形布置,包括诸如以下项之类的存储介质:硬盘,任何其他类型的盘(包括软盘、光盘、致密盘只读存储器(compact disk read-only memory,CD-ROM)、可改写致密盘(compact disk rewritable,CD-RW)、以及磁光盘),半导体设备(诸如,只读存储器(read-only memory,ROM),诸如动态随机访问存储器(dynamic random access memory,DRAM)、静态随机访问存储器(static random access memory,SRAM)之类的随机访问存储器(randomaccess memory,RAM),可擦除可编程只读存储器(erasable programmable read-onlymemory,EPROM),闪速存储器,电可擦除可编程只读存储器(electrically erasableprogrammable read-only memory,EEPROM),相变存储器(phase change memory,PCM)),磁卡或光卡,或者适合用于存储电子指令的任何其他类型的介质。
因此,本发明的实施例还包括非暂时性有形机器可读介质,其包含指令或者包含定义本文描述的结构、电路、装置、处理器和/或系统特征的设计数据,例如硬件描述语言(Hardware Description Language,HDL)。这种实施例也可被称为程序产品。
仿真(包括二进制转化、代码变形等等)
在一些情况下,指令转换器可以用于将指令从源指令集转换到目标指令集。例如,指令转换器可以将指令转化(例如,利用静态二进制转化、包括动态编译的动态二进制转化)、变形、仿真或者以其他方式转换到要被核心处理的一个或多个其他指令。可以用软件、硬件、固件或者其组合来实现指令转换器。指令转换器可以在处理器上、在处理器外、或者一部分在处理器上一部分在处理器外。
图18是根据本发明的实施例的与使用软件指令转换器来将源指令集中的二进制指令转换成目标指令集中的二进制指令相对比的框图。在所示的实施例中,指令转换器是软件指令转换器,虽然替代地,可以用软件、固件、硬件或者其各种组合来实现指令转换器。图18示出了高级别语言1602的程序可以利用x86编译器1604来编译以生成x86二进制代码1606,x86二进制代码1606可以由具有至少一个x86指令集核心的处理器1616原生执行。具有至少一个x86指令集核心的处理器1616表示任何这样的处理器:这种处理器可以通过兼容地执行或以其他方式处理(1)英特尔x86指令集核心的指令集的实质部分或者(2)目标为在具有至少一个x86指令集核心的英特尔处理器上运行的应用或其他软件的目标代码版本,来执行与具有至少一个x86指令集核心的英特尔处理器基本上相同的功能,以便实现与具有至少一个x86指令集核心的英特尔处理器基本上相同的结果。x86编译器1604表示可操作来生成x86二进制代码1606(例如,目标代码)的编译器,x86二进制代码1606在带有或不带有附加的链接处理的情况下可以在具有至少一个x86指令集核心的处理器1616上被执行。类似地,图18示出了高级别语言1602的程序可以利用替代指令集编译器1608来编译以生成替换指令集二进制代码1610,替代指令集二进制代码1610可以由没有至少一个x86指令集核心的处理器1614(例如,具有执行加州森尼维尔市的MIPS技术公司的MIPS指令集和/或执行加州森尼维尔市的ARM控股公司的ARM指令集的核心的处理器)原生执行。指令转换器1612用于将x86二进制代码1606转换成可由没有x86指令集核心的处理器1614原生执行的代码。这个经转换的代码不太可能与替代指令集二进制代码1610相同,因为能够做到这一点的指令转换器是难以制作的;然而,经转换的代码将实现一般操作并且由来自替代指令集的指令构成。因此,指令转换器1612表示通过仿真、模拟或任何其他过程允许不具有x86指令集处理器或核心的处理器或其他电子设备执行x86二进制代码1606的软件、固件、硬件或者其组合。
附加注释和示例
示例1包括一种集成电路,包括电路,来取回从用户级应用直接提供的定时器程序信息,并且基于取回的定时器程序信息在硬件中对用户定时器编程。
示例2包括如示例1所述的集成电路,其中所述电路还基于取回的定时器程序信息来装备所述用户定时器。
示例3包括如示例1至2中的任一项所述的集成电路,其中所述电路还调度用户中断以将用户定时器事件直接递送给所述用户级应用。
示例4包括如示例1至3中的任一项所述的集成电路,其中所述电路还绕过内核来设定所述用户定时器,并且绕过所述内核来将用户定时器事件递送给所述用户级应用。
示例5包括如示例1至4中的任一项所述的集成电路,还包括与所述电路通信耦合的存储器,以为所述用户定时器存储所述定时器程序信息。
示例6包括如示例5所述的集成电路,其中所述存储器包括寄存器。
示例7包括如示例5至6中的任一项所述的集成电路,其中所述定时器程序信息指示出期望的时间延迟量。
示例8包括如示例5至6中的任一项所述的集成电路,其中所述定时器程序信息指示出期望的时间期限。
示例9包括如示例5至8中的任一项所述的集成电路,其中所述电路还基于存储在所述存储器中的所述定时器程序信息来装备所述用户定时器,确定对于所述用户定时器是否达到编程的时间,并且如果确定是,则为所述用户定时器挂起用户定时器事件。
示例10包括如示例9所述的集成电路,其中所述电路还调度具有用户定时器向量的用户中断,以将所述用户定时器事件递送给所述用户级应用。
示例11包括一种方法,包括取回从用户级应用直接提供的定时器程序信息,并且基于取回的定时器程序信息在硬件中对用户定时器编程。
示例12包括如示例11所述的方法,还包括基于取回的定时器程序信息来装备所述用户定时器。
示例13包括如示例11至12中的任一项所述的方法,还包括调度用户中断以将用户定时器事件直接递送给所述用户级应用。
示例14包括如示例11至13中的任一项所述的方法,还包括绕过内核来设定所述用户定时器,并且绕过所述内核来将用户定时器事件递送给所述用户级应用。
示例15包括如示例11至14中的任一项所述的方法,还包括在存储器中为所述用户定时器存储所述定时器程序信息。
示例16包括如示例15所述的方法,其中所述存储器包括寄存器。
示例17包括如示例15至16中的任一项所述的方法,其中所述定时器程序信息指示出期望的时间延迟量。
示例18包括如示例15至16中的任一项所述的方法,其中所述定时器程序信息指示出期望的时间期限。
示例19包括如示例15至18中的任一项所述的方法,还包括基于存储在所述存储器中的所述定时器程序信息来装备所述用户定时器,确定对于所述用户定时器是否达到编程的时间,并且如果确定是,则为所述用户定时器挂起用户定时器事件。
示例20包括如示例19所述的方法,还包括调度具有用户定时器向量的用户中断,以将所述用户定时器事件递送给所述用户级应用。
示例21包括一种装置,包括处理器,与所述处理器通信耦合的存储器,以存储从用户级应用直接提供的定时器程序信息,以及与还包括处理器和还包括存储器通信耦合的电路,所述电路从所述存储器取回所述定时器程序信息,并且基于取回的定时器程序信息在硬件中对用户定时器编程。
示例22包括如示例21所述的装置,其中所述电路还基于取回的定时器程序信息来装备所述用户定时器。
示例23包括如示例21至22中的任一项所述的装置,其中所述电路还以内核级调度用户中断以将用户定时器事件直接递送给所述用户级应用。
示例24包括如示例21至23中的任一项所述的装置,其中所述电路还绕过内核来设定所述用户定时器,并且绕过所述内核来将用户定时器事件递送给所述用户级应用。
示例25包括如示例21至24中的任一项所述的装置,还包括硬件定时器,来用作所述用户定时器的参考。
示例26包括如示例25所述的装置,其中所述硬件定时器包括参考时钟。
示例27包括如示例26所述的装置,其中所述定时器程序信息指示出所述参考时钟的周期数目。
示例28包括如示例26所述的装置,其中所述定时器程序信息指示出所述参考时钟的时钟期限值。
示例29包括如示例28所述的装置,其中所述电路还基于存储在所述存储器中的所述时钟期限值来装备所述用户定时器,确定所述参考时钟是否达到了所述时钟期限值,并且如果确定是,则为所述用户定时器挂起用户定时器事件。
示例30包括如示例29所述的装置,其中所述电路还调度具有用户定时器向量的用户中断,以将所述用户定时器事件递送给所述用户级应用。
示例31包括一种系统,包括存储器,来存储与用户级应用相关联的用户定时器控制数据结构,以及与所述存储器通信耦合的处理器核心,来基于存储在所述用户定时器控制数据结构中的时间值来对用户定时器编程,确定参考时钟是否达到了用户定时器值,并且如果确定是,则设置指出用户定时器事件对于所述用户定时器来说待决的指示。
示例32包括如示例31所述的系统,其中所述存储器包括寄存器,来存储所述用户定时器控制数据结构。
示例33包括如示例31至32中的任一项所述的系统,其中所述处理器核心还从所述用户定时器控制数据结构解码出用户期限和用户定时器向量。
示例34包括如示例33所述的系统,其中所述处理器核心还调度用户中断以将所述用户定时器事件递送给所述用户级应用。
示例35。如示例34所述的系统,其中所述处理器核心还在当前请求服务的用户中断的位图中设置与所述用户定时器向量相对应的比特,并且将所述用户中断的用户期限设置为零。
示例36包括如示例31至35中的任一项所述的系统,还包括硬件时钟,来用作所述用户定时器的参考时钟。
示例37包括如示例36所述的系统,其中所述硬件定时器包括参考时钟。
示例38包括如示例37所述的系统,其中所述处理器核心还当在所述用户定时器被编程之后已经经过的所述参考时钟的周期数目与存储在所述用户定时器控制数据结构中的时间值相对应时,设置指出所述用户定时器事件对于所述用户定时器来说待决的指示。
示例39包括如示例37所述的系统,其中所述处理器核心还在所述参考时钟达到与存储在所述用户定时器控制数据结构中的时间值相对应的时钟值之后,设置指出所述用户定时器事件对于所述用户定时器来说待决的指示。
示例40包括一种装置,包括解码电路,来对单个指令解码,所述单个指令包括用于第一源操作对象的标识符的字段,用于目的操作对象的标识符的字段,以及用于操作码的字段,所述操作码指示出执行电路要对用户定时器编程,以及执行电路,来根据所述操作码来执行解码的指令以从所述第一源操作对象所指示的位置取回定时器程序信息,并且基于取回的定时器程序信息对所述目的操作对象所指示的用户定时器编程。
示例41包括如示例40所述的装置,其中所述执行电路还根据所述操作码来执行解码的指令以基于取回的定时器程序信息来装备所指示的用户定时器。
示例42包括如示例40至41中的任一项所述的装置,其中所述执行电路还根据所述操作码来执行解码的指令以绕过内核来设定所述用户定时器。
示例43包括如示例40至42中的任一项所述的装置,还包括硬件定时器,来用作所指示的用户定时器的参考。
示例44包括如示例43所述的装置,其中所述硬件定时器包括参考时钟。
示例45包括如示例44所述的装置,其中所述定时器程序信息指示出所述参考时钟的周期数目。
示例46包括如示例44所述的装置,其中所述定时器程序信息指示出所述参考时钟的时钟期限值。
示例47包括一种方法,包括提取指令,所述指令具有用于操作码、目的操作对象和源操作对象的字段,对所述指令解码,取回与所述源操作对象相关联的数据,调度所述指令的执行,并且执行解码的指令,以基于与所述源操作对象相关联的取回数据对所述目的操作对象所指示的用户定时器进行编程。
示例48包括如示例47所述的方法,还包括基于与所述源操作对象相关联的取回数据来装备所指示的用户定时器。
示例49包括如示例47至48中的任一项所述的方法,还包括绕过内核来设定所述用户定时器。
示例50包括如示例47至49中的任一项所述的方法,其中与所述源操作对象相关联的数据指示出参考时钟的周期数目。
示例51包括如示例47至49中的任一项所述的方法,其中与所述源操作对象相关联的数据指示出参考时钟的时钟期限值。
示例52包括一种装置,包括用于提取指令的装置,所述指令具有用于操作码、目的操作对象和源操作对象的字段,用于对所述指令解码的装置,用于取回与所述源操作对象相关联的数据的装置,用于调度所述指令的执行的装置,以及用于执行解码的指令以基于与所述源操作对象相关联的取回数据对所述目的操作对象所指示的用户定时器进行编程的装置。
示例53包括如示例52所述的装置,还包括用于基于与所述源操作对象相关联的取回数据来装备所指示的用户定时器的装置。
示例54包括如示例52至53中的任一项所述的装置,还包括用于绕过内核来设定所述用户定时器的装置。
示例55包括如示例52至54中的任一项所述的装置,其中与所述源操作对象相关联的数据指示出参考时钟的周期数目。
示例56包括如示例52至55中的任一项所述的装置,其中与所述源操作对象相关联的数据指示出参考时钟的时钟期限值。
示例57包括一种装置,包括用于取回从用户级应用直接提供的定时器程序信息的装置,以及用于基于取回的定时器程序信息在硬件中对用户定时器编程的装置。
示例58包括如示例57所述的装置,还包括用于基于取回的定时器程序信息来装备所述用户定时器的装置。
示例59包括如示例57至58中的任一项所述的装置,还包括用于调度用户中断以将用户定时器事件直接递送给所述用户级应用的装置。
示例60包括如示例57至59中的任一项所述的装置,还包括用于绕过内核来设定所述用户定时器的装置,以及用于绕过所述内核来将用户定时器事件递送给所述用户级应用的装置。
示例61包括如示例57至60中的任一项所述的装置,还包括用于在存储器中为所述用户定时器存储所述定时器程序信息的装置。
示例62包括如示例61所述的装置,其中所述存储器包括寄存器。
示例63包括如示例61至62中的任一项所述的装置,其中所述定时器程序信息指示出期望的时间延迟量。
示例64包括如示例61至62中的任一项所述的装置,其中所述定时器程序信息指示出期望的时间期限。
示例65包括如示例61至64中的任一项所述的装置,还包括用于基于存储在所述存储器中的所述定时器程序信息来装备所述用户定时器的装置,用于确定对于所述用户定时器是否达到编程的时间的装置,以及如果确定是,用于为所述用户定时器挂起用户定时器事件的装置。
示例66包括如示例65所述的装置,还包括用于调度具有用户定时器向量的用户中断以将所述用户定时器事件递送给所述用户级应用的装置。
本文描述了用于由应用直接编程的用户定时器的技术和架构。在以上描述中,出于说明目的,记载了许多具体细节以便提供对某些实施例的透彻理解。然而,本领域技术人员将会清楚,没有这些具体细节也可实现某些实施例。在其他情况中,以框图形式示出了结构和设备以避免模糊描述。
本说明书中提及“一个实施例”或“一实施例”的意思是联系该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书中各种地方出现短语“在一个实施例中”不一定都指的是同一实施例。
这里的详细描述的一些部分是按计算机存储器内的数据比特上的操作的算法和符号表示来呈现的。这些算法描述和表示是被计算领域的技术人员用来最有效地将其工作的实质传达给本领域其他技术人员的手段。算法在这里并且一般而言被设想为是通向期望结果的步骤的自洽序列。这些步骤是要求对物理量的物理操纵的那些步骤。通常(但并非一定),这些量采取能够被存储、传送、组合、比较和以其他方式操纵的电信号或磁信号的形式。已证明有时,主要是出于习惯用法的原因,将这些信号称为比特、值、元素、符号、字符、项、数字等等,是方便的。
然而,应当记住,所有这些和类似的术语都将与适当的物理量相关联并且只是应用到这些量的方便标签。除非从这里的论述清楚看出另有具体声明,否则要明白在整个说明书各处,利用诸如“处理”或“计算”或“运算”或“确定”或“显示”之类的术语的论述指的是计算机系统或类似的电子计算设备的动作和过程,这些动作和过程将计算机系统的寄存器和存储器内的被表示为物理(电子)量的数据操纵和变换成计算机系统存储器或寄存器或其他这种信息存储、传输或显示设备内的被类似地表示为物理量的其他数据。
某些实施例还涉及用于执行这里的操作的装置。此装置可以是为要求的目的而专门构造的,或者其可包括由存储在计算机中的计算机程序选择性地激活或重配置的通用计算机。这种计算机程序可被存储在计算机可读存储介质中,例如但不限于任何类型的盘(包括软盘、光盘、CD-ROM和磁光盘)、只读存储器(read-only memory,ROM)、随机访问存储器(random access memory,RAM)(例如动态RAM(dynamic RAM,DRAM))、EPROM、EEPROM、磁卡或光卡、或者适合用于存储电子指令并且耦合到计算机系统总线的任何类型的介质。
本文给出的算法和显示并不内在地与任何特定的计算机或其他装置相关。各种通用系统可与根据本文的教导的程序一起使用,或者可证明构造更专门的装置来执行所要求的方法步骤是方便的。对多种这些系统所要求的结构将从本文的描述中显现。此外,某些实施例不是参考任何特定的编程语言来描述的。将会明白,可以使用各种编程语言来实现如本文所述的这种实施例的教导。
除了本文描述的以外,还可对公开的实施例及其实现方式做出各种修改,而不脱离其范围。因此,应当从说明意义而不是限制意义上来解释本文的图示和示例。应当仅通过参考所附权利要求来衡量本发明的范围。
Claims (25)
1.一种集成电路,包括:
电路,用于:
取回直接从用户级应用提供的定时器程序信息;并且
基于所取回的定时器程序信息在硬件中对用户定时器进行编程。
2.根据权利要求1所述的集成电路,其中,所述电路进一步用于:
基于所取回的定时器程序信息来装备所述用户定时器。
3.根据权利要求1至2中任一项所述的集成电路,其中,所述电路进一步用于:
调度用户中断,以将用户定时器事件直接递送到所述用户级应用。
4.根据权利要求1至2中任一项所述的集成电路,其中,所述电路进一步用于:
绕过内核以设定所述用户定时器;并且
绕过所述内核以将用户定时器事件递送到所述用户级应用。
5.根据权利要求1至2中任一项所述的集成电路,还包括:
通信地耦合到所述电路的存储器,用于存储所述用户定时器的定时器程序信息。
6.根据权利要求5所述的集成电路,其中,所述存储器包括寄存器。
7.根据权利要求5所述的集成电路,其中,所述定时器程序信息指示期望的时间延迟量。
8.根据权利要求5所述的集成电路,其中,所述定时器程序信息指示期望的时间期限。
9.根据权利要求5所述的集成电路,其中,所述电路进一步用于:
基于存储在所述存储器中的定时器程序信息来装备所述用户定时器;
确定对于所述用户定时器是否达到所编程的时间,并且如果确定是,
则为所述用户定时器挂起用户定时器事件。
10.根据权利要求9所述的集成电路,其中,所述电路进一步用于:
调度具有用户定时器向量的用户中断,以将所述用户定时器事件递送到所述用户级应用。
11.一种方法,包括:
取回直接从用户级应用提供的定时器程序信息;以及
基于所取回的定时器程序信息在硬件中对用户定时器进行编程。
12.根据权利要求11所述的方法,还包括:
基于所取回的定时器程序信息来装备所述用户定时器。
13.根据权利要求11至12中任一项所述的方法,还包括:
调度用户中断以直接向所述用户级应用递送用户定时器事件。
14.根据权利要求11至12中任一项所述的方法,还包括:
绕过内核以设定所述用户定时器;以及
绕过所述内核以向所述用户级应用递送用户定时器事件。
15.根据权利要求11至12中任一项所述的方法,还包括:
将所述用户定时器的定时器程序信息存储在存储器中。
16.根据权利要求15所述的方法,其中,所述存储器包括寄存器。
17.根据权利要求15所述的方法,其中,所述定时器程序信息指示期望的时间延迟量。
18.根据权利要求15所述的方法,其中,所述定时器程序信息指示期望的时间期限。
19.根据权利要求15所述的方法,还包括:
基于存储在所述存储器中的定时器程序信息来装备所述用户定时器;
确定对于所述用户定时器是否达到所编程的时间,并且如果确定是,
则为所述用户定时器挂起用户定时器事件。
20.根据权利要求19所述的方法,还包括:
调度具有用户定时器向量的用户中断,以将所述用户定时器事件递送到所述用户级应用。
21.一种装置,包括:
处理器;
通信地耦合到所述处理器的存储器,用以存储直接从用户级应用提供的定时器程序信息;以及
通信地耦合到所述处理器和所述存储器的电路,所述电路用于:
从所述存储器取回所述定时器程序信息,并且
基于所取回的定时器程序信息在硬件中对用户定时器进行编程。
22.根据权利要求21所述的装置,其中,所述电路进一步用于:
基于所取回的定时器程序信息来装备所述用户定时器。
23.根据权利要求21至22中任一项所述的装置,其中,所述电路进一步用于:
在所述内核级调度用户中断,以将用户定时器事件直接递送到所述用户级应用。
24.根据权利要求21至22中任一项所述的装置,其中,所述电路进一步用于:
绕过内核以设定所述用户定时器;并且
绕过所述内核以将用户定时器事件递送到所述用户级应用。
25.根据权利要求21至22中任一项所述的装置,还包括:
硬件定时器,用作所述用户定时器的参考。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063113106P | 2020-11-12 | 2020-11-12 | |
US63/113,106 | 2020-11-12 | ||
US17/212,977 US12099841B2 (en) | 2020-11-12 | 2021-03-25 | User timer directly programmed by application |
US17/212,977 | 2021-03-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114489793A true CN114489793A (zh) | 2022-05-13 |
Family
ID=77640458
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111189769.9A Pending CN114489793A (zh) | 2020-11-12 | 2021-10-11 | 通过应用直接编程的用户定时器 |
Country Status (3)
Country | Link |
---|---|
US (1) | US12099841B2 (zh) |
EP (1) | EP4002103A1 (zh) |
CN (1) | CN114489793A (zh) |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5148544A (en) | 1987-07-01 | 1992-09-15 | Digital Equipment Corporation | Apparatus and method for control of asynchronous program interrupt events in a data processing system |
US6179489B1 (en) * | 1997-04-04 | 2001-01-30 | Texas Instruments Incorporated | Devices, methods, systems and software products for coordination of computer main microprocessor and second microprocessor coupled thereto |
US8019004B2 (en) * | 2006-12-22 | 2011-09-13 | Elbex Video Ltd. | Method and apparatus for converting coded serial video signal into serial IP video signal |
US8392661B1 (en) * | 2009-09-21 | 2013-03-05 | Tilera Corporation | Managing cache coherence |
US9116561B2 (en) * | 2013-05-06 | 2015-08-25 | Spirent Communications, Inc. | Time reference systems for CPU-based and optionally FPGA-based subsystems |
US9921984B2 (en) | 2014-12-23 | 2018-03-20 | Intel Corporation | Delivering interrupts to user-level applications |
US10924096B1 (en) * | 2020-03-03 | 2021-02-16 | Xilinx, Inc. | Circuit and method for dynamic clock skew compensation |
US11615042B2 (en) * | 2021-03-31 | 2023-03-28 | Nutanix, Inc. | Common framework for kernel-assisted device polling |
KR20240023335A (ko) * | 2022-08-12 | 2024-02-21 | 삼성디스플레이 주식회사 | 표시 장치 및 이의 구동 방법 |
-
2021
- 2021-03-25 US US17/212,977 patent/US12099841B2/en active Active
- 2021-09-03 EP EP21194806.2A patent/EP4002103A1/en active Pending
- 2021-10-11 CN CN202111189769.9A patent/CN114489793A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4002103A1 (en) | 2022-05-25 |
US20220147393A1 (en) | 2022-05-12 |
US12099841B2 (en) | 2024-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US12086603B2 (en) | Processor having multiple cores, shared core extension logic, and shared core extension utilization instructions | |
CN107408036B (zh) | 用户级分叉与结合处理器、方法、系统和指令 | |
US7849297B2 (en) | Software emulation of directed exceptions in a multithreading processor | |
US9032404B2 (en) | Preemptive multitasking employing software emulation of directed exceptions in a multithreading processor | |
US7725697B2 (en) | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts | |
US7870553B2 (en) | Symmetric multiprocessor operating system for execution on non-independent lightweight thread contexts | |
US20050120194A1 (en) | Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor | |
EP3588288B1 (en) | A multithreaded processor core with hardware-assisted task scheduling | |
CN115391037A (zh) | 高度可缩放的加速器 | |
WO2005022384A1 (en) | Apparatus, method, and instruction for initiation of concurrent instruction streams in a multithreading microprocessor | |
CN115904649A (zh) | 用户级处理器间中断 | |
US12099841B2 (en) | User timer directly programmed by application | |
CN114661635A (zh) | 具有错误时并行解压缩的经压缩的高速缓存存储器 | |
CN112148106A (zh) | 用于处理器的混合预留站的系统、装置和方法 | |
Li et al. | Lightweight chip multi-threading (LCMT): Maximizing fine-grained parallelism on-chip | |
US20240103868A1 (en) | Virtual Idle Loops | |
CN115858015A (zh) | 基于核心的推测性页故障列表 | |
CN114661636A (zh) | 具有错误时解压缩的经压缩的高速缓存存储器 | |
CN116089028A (zh) | 处理器中断扩展特征 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |