CN115048326A - 用于管理总线通信协议的选择 - Google Patents
用于管理总线通信协议的选择 Download PDFInfo
- Publication number
- CN115048326A CN115048326A CN202210122076.6A CN202210122076A CN115048326A CN 115048326 A CN115048326 A CN 115048326A CN 202210122076 A CN202210122076 A CN 202210122076A CN 115048326 A CN115048326 A CN 115048326A
- Authority
- CN
- China
- Prior art keywords
- communication protocol
- address
- determining
- response
- controller
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 148
- 230000005540 biological transmission Effects 0.000 claims abstract description 128
- 230000004044 response Effects 0.000 claims abstract description 104
- 230000015654 memory Effects 0.000 claims description 178
- 238000000034 method Methods 0.000 claims description 106
- 238000007726 management method Methods 0.000 description 115
- VOXZDWNPVJITMN-ZBRFXRBCSA-N 17β-estradiol Chemical compound OC1=CC=C2[C@H]3CC[C@](C)([C@H](CC4)O)[C@@H]4[C@@H]3CCC2=C1 VOXZDWNPVJITMN-ZBRFXRBCSA-N 0.000 description 74
- 238000010586 diagram Methods 0.000 description 67
- 238000012545 processing Methods 0.000 description 50
- 238000006073 displacement reaction Methods 0.000 description 39
- 238000007667 floating Methods 0.000 description 32
- 238000013461 design Methods 0.000 description 29
- 239000003795 chemical substances by application Substances 0.000 description 19
- 239000000872 buffer Substances 0.000 description 18
- 230000008569 process Effects 0.000 description 13
- 230000006870 function Effects 0.000 description 11
- 230000003416 augmentation Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 8
- 230000002093 peripheral effect Effects 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 8
- 230000000873 masking effect Effects 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000014616 translation Effects 0.000 description 7
- 238000013501 data transformation Methods 0.000 description 6
- 230000007613 environmental effect Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 230000001105 regulatory effect Effects 0.000 description 6
- 230000008901 benefit Effects 0.000 description 5
- 230000001413 cellular effect Effects 0.000 description 5
- 230000008859 change Effects 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000000295 complement effect Effects 0.000 description 5
- 230000036961 partial effect Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 239000004744 fabric Substances 0.000 description 4
- 238000010348 incorporation Methods 0.000 description 4
- 230000002829 reductive effect Effects 0.000 description 4
- 230000006399 behavior Effects 0.000 description 3
- 230000001427 coherent effect Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000007795 chemical reaction product Substances 0.000 description 2
- 238000001816 cooling Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 238000010187 selection method Methods 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 244000061520 Angelica archangelica Species 0.000 description 1
- 240000001436 Antirrhinum majus Species 0.000 description 1
- 235000001287 Guettarda speciosa Nutrition 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 210000005100 blood-tumour barrier Anatomy 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000010276 construction 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
- 238000001914 filtration Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000007788 liquid Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 239000003607 modifier Substances 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
- 238000005192 partition Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000004088 simulation Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- 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/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/404—Coupling between buses using bus bridges with address mapping
-
- 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/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0026—PCI express
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Small-Scale Networks (AREA)
- Information Transfer Systems (AREA)
- Multi Processors (AREA)
- Power Sources (AREA)
Abstract
一种装置可以包括控制器,用于系统管理总线。控制器可以用于:检测与系统管理总线关联的触发事件;响应于检测到触发事件,在系统管理总线上发送广播地址,其中,广播地址不用在第一通信协议中;以及响应于确定所发送的广播地址被确认,使用第二通信协议以用于系统管理总线上的传输。描述并要求保护其他实施例。
Description
技术领域
实施例总体上涉及计算设备。更具体地说,实施例涉及选择用于管理总线的通信协议。
背景技术
一些计算系统可以包括总线,以提供系统组件之间的数据通信。例如,处理器可以使用内部数据总线,以与其他系统组件(例如,存储器设备、存储设备、网络设备等)进行通信。
附图说明
图1是根据本发明实施例的系统的部分的框图。
图2是根据本发明实施例的处理器的框图。
图3是根据本发明另一实施例的多域处理器的框图。
图4是包括多个内核的处理器的实施例。
图5是根据本发明一个实施例的处理器内核的微架构的框图。
图6是根据另一实施例的处理器内核的微架构的框图。
图7是根据又一实施例的处理器内核的微架构的框图。
图8是根据再一实施例的处理器内核的微架构的框图。
图9是根据本发明另一实施例的处理器的框图。
图10是根据本发明实施例的代表性SoC的框图。
图11是根据本发明实施例的另一示例SoC的框图。
图12是可以使用实施例的示例系统的框图。
图13是可以使用实施例的另一示例系统的框图。
图14是代表性计算机系统的框图。
图15A-图15B是根据本发明实施例的系统的框图。
图16是示出根据实施例的用以制造集成电路以执行操作的IP内核开发系统的框图。
图17A-图17B是示出根据本发明实施例的通用矢量友好指令格式及其指令模板的框图。
图18A-图18D是示出根据本发明实施例的示例性特定矢量友好指令格式的框图。
图19是根据本发明一个实施例的寄存器架构的框图。
图20A是示出根据本发明实施例的示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线二者的框图。
图20B是示出根据本发明实施例的待包括于处理器中的有序架构内核和示例性寄存器重命名、乱序发布/执行架构内核的示例性实施例的框图。
图21A-图21B示出更具体的示例性有序内核架构的框图,所述内核将是芯片中的(包括相同类型和/或不同类型的其他内核的)若干逻辑块之一。
图22是根据本发明实施例的可以具有多于一个的内核、可以具有集成存储器控制器并且可以具有集成图形的处理器的框图。
图23-图24是示例性计算机架构的框图。
图25是根据本公开的实施例的对比使用软件指令转换器以将源指令集中的二进制指令转换为目标指令集中的二进制指令的框图。
图26是根据一个或多个实施例的示例系统的图。
图27是根据一个或多个实施例的示例系统的图。
图28是根据一个或多个实施例的示例方法的流程图。
图29是根据一个或多个实施例的示例方法的流程图。
图30是根据一个或多个实施例的示例方法的流程图。
图31是根据一个或多个实施例的示例存储介质的示图。
具体实施方式
一些计算系统可以包括用于系统组件的管理中使用的专用总线。例如,系统管理总线(“SMBus”)是由控制器(例如,处理器)用以与系统组件(本文也称为“从属”设备)进行通信的单端两线总线。这些从属设备可以包括电源模块、扩展卡、冷却风扇、温度传感器等。在一些示例中,管理总线可以形成与计算系统的主数据总线(也称为“带内”路径)分离的路径(也称为“带外”路径)。
在一些计算系统中,系统管理总线可以与一种或多种通信协议兼容。例如,由系统管理总线使用的一种通信协议是集成电路间(I2C)协议。在另一示例中,MIPI I3C是较新的通信协议,其建立于I2C协议的顶部上,并且其与I2C协议相比提供更高的带宽、带内中断和其他优势。存在与I2C协议相似并向后兼容的I3C协议的一些方面。然而,一些不同的方面可能创建这些协议之间的不兼容性。例如,如果I2C设备使用时钟延长,或者如果它们缺少用于在特定频率中过滤消息的尖峰滤波器,则I2C设备可能无法在I3C协议总线上工作。因此,使用I3C协议连接到常规总线的I2C设备可能遭受故障或错误。
本文描述的实施例可以包括用于为耦合到总线的设备选择通信协议的装置、系统、技术或过程。在本文描述的一些实施例中,控制器设备可以检测指示从属设备待连接到系统管理总线的事件(也称为“触发事件”),并且响应于此,可以执行选择过程以在用于对从属设备的连接的第一与第二通信协议之间(例如,在I2C与I3C协议之间)进行选取。该选择过程可以包括:在系统管理总线上发送一个或多个广播地址的传输,以及监听来自从属设备的确认。在一些实施例中,广播地址不用在第一协议中,而是用在第二协议中。故此,确认的接收可以指示从属设备与第二协议兼容。因此,控制器可以响应于接收到确认选择第二协议,或者如果没有接收到适当的确认,则可以选择第一协议。以此方式,一些实施例可以提供自动检测以及与使用不同协议的设备的兼容性而不损失功能。以下将参照图26-图31进一步描述一些实施例的各种细节。此外,在下文参照图1-图25描述示例性系统和架构。
示例性系统和架构
虽然参照特定实现方式描述以下实施例,但是实施例不限于此。具体而言,预期本文描述的实施例的相似技术和教导可以应用于其他类型的电路、半导体器件、处理器、系统等。例如,可以在包括服务器计算机(例如,塔式、机架式、刀片式、微服务器等)、通信系统、存储系统、任何配置的台式计算机、膝上型、笔记本和平板计算机(包括2:1平板、手机平板等)的任何类型的计算机系统中实现所公开的实施例。
此外,所公开的实施例也可以用在其他设备(例如,手持设备、片上系统(SoC)和嵌入式应用)中。手持设备的一些示例包括蜂窝电话(例如,智能手机)、互联网协议设备、数码相机、个人数字助理(PDA)和手持PC。嵌入式应用可以典型地包括微控制器、数字信号处理器(DSP)、网络计算机(NetPC)、机顶盒、网络集线器、广域网(WAN)交换机、可穿戴设备或任何其他可以执行以下教导的功能和操作的系统。此外,可以在具有标准语音功能的移动终端(例如,移动电话、智能手机和手机平板)和/或在没有标准无线语音功能通信能力的非移动终端(例如,许多可穿戴设备、平板、笔记本、台式机、微型服务器、服务器等)中实现实施例。
现在参照图1,示出的是根据本发明实施例的系统的部分的框图。如图1所示,系统100可以包括各种组件,包括处理器110,其如图所示是多核处理器。处理器110可以经由外部电压调节器160耦合到电源150,外部电压调节器160可以执行第一电压转换以向处理器110提供初级调节电压Vreg。
如所见,处理器110可以是包括多个内核120a-120n的单个管芯处理器。此外,每个内核可以与集成电压调节器(IVR)125a-125n关联,IVR 125a-125n接收初级调节电压并生成操作电压以提供给与IVR关联的处理器的一个或多个代理。因此,可以提供IVR实现方式,以允许每个单独内核的电压且因此功率和性能的细粒度控制。故此,每个内核可以在独立的电压和频率处进行操作,赋能极大的灵活性并为平衡功耗与性能提供广泛的机会。在一些实施例中,多个IVR的使用赋能将组件分组到分离的功率平面中,以使得功率由IVR调节并仅提供给群组中的那些组件。在功率管理期间,一个IVR的给定电源平面可以当处理器置于特定低功率状态时断电或关闭,而另一IVR的另一功率平面保持活动或完全供电。相似地,内核120可以包括或关联于独立时钟生成电路(例如,一个或多个锁相环(PLL)),以独立地控制每个内核120的操作频率。
仍参照图1,处理器内可以存在附加组件,包括输入/输出接口(IF)132、另一接口134和集成存储器控制器(IMC)136。如所见,这些组件中的每一个可以由另一集成电压调节器125x供电。在一个实施例中,接口132可以赋能用于在包括包含物理层、链路层和协议层的多个层的缓存一致性协议中提供点对点(PtP)链路的快速路径互连(QPI)互连的操作。进而,接口134可以经由外围组件互连快速(PCIeTM)协议进行通信。
还示出的是功率控制单元(PCU)138,其可以包括包含硬件、软件和/或固件以执行关于处理器110的功率管理操作的电路。如所见,PCU 138经由数字接口162向外部电压调节器提供控制信息160,以使电压调节器生成适当的调节电压。PCU 138还经由另一数字接口163向IVR 125提供控制信息,以控制所生成的操作电压(或使对应IVR在低功率模式下被禁用)。在各种实施例中,PCU 138可以包括各种功率管理逻辑单元,以执行基于硬件的功率管理。这种功率管理可以完全是处理器控制的(例如,由各种处理器硬件,并且可以由工作负载和/或功率、热或其他处理器约束触发),和/或功率管理可以响应于外部源(例如,平台或功率管理源或系统软件)而被执行。
在图1中,PCU 138示出为作为处理器的分离逻辑而存在。在其他情况下,PCU 138可以在内核120中的给定的一个或多个上执行。在一些情况下,PCU 138可以实现为微控制器(专用或通用)或其他被配置为执行其自己的专用功率管理代码(有时称为P代码)的控制逻辑。在又其他实施例中,可以在处理器外部(例如,通过分离的功率管理集成电路(PMIC)或处理器外部的另一组件的方式)实现待由PCU 138执行的功率管理操作。在又其他实施例中,可以在BIOS或其他系统软件内实现待由PCU 138执行的功率管理操作。
实施例可以特别适用于多个内核中的每一个可以在独立的电压和频率点处进行操作的多核处理器。如本文所使用的那样,术语“域”用以表示在相同电压和频率点处进行操作的硬件和/或逻辑的集合。此外,多核处理器可以还包括其他非内核处理引擎(例如,固定功能单元、图形引擎等)。这种处理器可以包括除了内核之外的独立域(例如,与图形引擎关联的一个或多个域(在本文中称为图形域)和与非内核电路关联的一个或多个域(在本文中称为系统代理))。虽然可以在单个半导体管芯上形成多域处理器的许多实现方式,但是可以由不同域可以存在于单个封装的不同半导体管芯上的多芯片封装实现其他实现方式。
虽然为了易于说明而未示出,但是应理解,附加组件(例如,非内核逻辑)和其他组件(例如,内部存储器(例如,一个或多个级的缓存存储器层次结构)等)可以存在于处理器110内。此外,虽然用集成电压调节器在图1的实现方式中示出,但是实施例不限于此。例如,可以从外部电压调节器160或一个或多个附加外部调节电压源向片上资源提供其他调节电压。
注意,本文描述的功率管理技术可以独立于并互补于基于操作系统(OS)的功率管理(OSPM)机制。根据一种示例OSPM技术,处理器可以在各种性能状态或等级(所谓的P-状态(即,从P0到PN))进行操作。通常,P1性能状态可以对应于OS可以请求的最高保证性能状态。除了该P1状态,OS还可以请求更高性能状态(即,P0状态)。该P0状态可以因此是机会性、超频或涡轮模式状态,其中,当功率和/或热预算可用时,处理器硬件可以将处理器或其至少部分配置为以高于所保证的频率进行操作。在许多实现方式中,处理器可以包括在制造期间融合或以其他方式写入处理器的P1保证最大频率之上的多个所谓的分隔(bin)频率,其超过特定处理器的最大峰值频率。此外,根据一种OSPM机制,处理器可以在各种功率状态或等级处进行操作。关于功率状态,OSPM机制可以指定不同的功耗状态(通常称为C状态、C0、C1到Cn状态)。当内核是活动的时,它运行在C0状态,而当内核是空闲的时,它可以被置于内核低功率状态(也称为内核非零C状态(例如,C1-C6状态)),其中,每个C状态处于较低的功耗等级(以使得C6是比C1更深的低功率状态,依此类推)。
应理解,在不同实施例中,可以单独地或组合地使用许多不同类型的功率管理技术。作为代表性示例,功率控制器可以控制处理器以通过某种形式的动态电压频率缩放(DVFS)受功率管理,其中,一个或多个内核或其他处理器逻辑的操作电压和/或操作频率可以动态地受控制以在特定情况下减少功耗。在示例中,可以使用可从加利福尼亚州圣克拉拉的英特尔公司获得的增强型英特尔SpeedStepTM技术执行DVFS,以在最低功耗等级提供最佳性能。在另一示例中,可以使用Intel TurboBoostTM技术执行DVFS,以赋能一个或多个内核或其他计算引擎基于条件(例如,工作负载和可用性)以高于保证的操作频率进行操作。
可以在特定示例中使用的另一功率管理技术是不同计算引擎之间的工作负载的动态交换。例如,处理器可以包括以不同功耗等级进行操作的非对称内核或其他处理引擎,以使得在功率受约束的情况下,可以动态地切换一个或多个工作负载以在较低功率内核或其他计算引擎上执行。另一示例性功率管理技术是硬件占空比(HDC),其可以使内核和/或其他计算引擎根据占空比而被周期性地启用和禁用,以使得可以让一个或多个内核在占空比的非活动时段期间是非活动的,而在占空比的活动时段期间是活动的。
当操作环境中存在约束时,也可以使用功率管理技术。例如,当遭遇功率和/或热约束时,可以通过减少操作频率和/或电压减少功率。其他功率管理技术包括:遏制指令执行速率或限制指令的调度。仍更进一步,给定指令集架构的指令可能包括关于功率管理操作的明示或隐含方向。虽然用这些特定示例进行描述,但是应理解,在特定实施例中可以使用许多其他功率管理技术。
实施例可以实现于包括服务器处理器、桌面处理器、移动处理器等的用于各种市场的处理器中。现在参照图2,示出的是根据本发明实施例的处理器的框图。如2图所示,处理器200可以是包括多个内核210a-210n的多核处理器。在一个实施例中,每个这样的内核可以是独立的功率域,并且可以被配置为基于工作负载进入和退出活动状态和/或最大性能状态。一个或多个内核210可以与其他内核是异构的,例如,具有不同的微架构、指令集架构、流水线深度、功率和性能能力。各种内核可以经由互连215耦合到包括各种组件的系统代理220。如所见,系统代理220可以包括共享缓存230,其可以是最后级缓存。此外,系统代理可以包括集成存储器控制器240,以例如经由存储器总线与系统存储器(图2中未示出)进行通信。系统代理220还包括各种接口250和功率控制单元255,其可以包括用于执行本文描述的功率管理技术的逻辑。
此外,接口250a-250n可以对各种片外组件(例如,外围设备、海量存储等)进行连接。虽然在图2的实施例中以这种特定的实现方式示出,但是本发明的范围不受限于此。
现在参照图3,示出的是根据本发明另一实施例的多域处理器的框图。如图3的实施例所示,处理器300包括多个域。具体而言,内核域310可以包括多个内核310a-310n,图形域320可以包括一个或多个图形引擎,并且系统代理域350也可以存在。在一些实施例中,系统代理域350可以通过独立于内核域的频率执行,并且可以始终保持通电以处理电源控制事件和功率管理,以使得可以控制域310和320动态地进入且退出高功率和低功率状态。域310和320中的每一个可以在不同的电压和/或功率进行操作。注意,虽然仅用三个域示出,但是应理解,本发明的范围不限于此,并且在其他实施例中可以存在附加域。例如,可以存在均包括至少一个内核的多个内核域。
通常,除了各种执行单元和附加处理元件之外,内核310a-310n中的每一个可以还包括低级缓存。进而,各种内核可以耦合到彼此并且耦合到由最后级缓存(LLC)340a-340n的多个单元形成的共享缓存存储器。在各种实施例中,可以在内核与图形引擎以及各种媒体处理电路之间共享LLC 340。如所见,环形互连330因此将内核耦合在一起,并提供内核、图形域320和系统代理域350之间的互连。在一个实施例中,互连330可以是内核域的部分。然而,在其他实施例中,环形互连可以是它自己的域。
如进一步所见,系统代理域350可以包括显示控制器352,其可以提供对关联显示器的控制和接口。如进一步所见,系统代理域350可以包括功率控制单元355,其可以包括用于执行本文描述的功率管理技术的逻辑。
如图3中进一步所见,处理器300可以还包括集成存储器控制器(IMC)370,其可以提供对系统存储器(例如,动态随机存取存储器(DRAM))的接口。可以存在多个接口380a-380n,以实现处理器与其他电路之间的互连。例如,在一个实施例中,可以提供至少一个直接介质接口(DMI)接口以及一个或多个PCIeTM接口。此外,为了提供其他代理(例如,附加处理器或其他电路)之间的通信,也可以提供一个或多个QPI接口。虽然在图3的实施例中以这种高等级示出,但是应理解,本发明的范围不限于此。
参照图4,示出包括多个内核的处理器的实施例。处理器400包括任何处理器或处理设备(例如,微处理器、嵌入式处理器、数字信号处理器(DSP)、网络处理器、手持处理器、应用处理器、协处理器、片上系统(SoC))或其他用于执行代码的设备)。在一个实施例中,处理器400包括至少两个内核——内核401和402,其可以包括非对称内核或对称内核(所示实施例)。然而,处理器400可以包括任何数量的可以是对称或不对称的处理元件。
在一个实施例中,处理元件指代用于支持软件线程的硬件或逻辑。硬件处理元件的示例包括:线程单元、线程槽、线程、进程单元、上下文、上下文单元、逻辑处理器、硬件线程、内核和/或任何其他能够保持用于处理器的状态(例如,执行状态或架构状态)的元件。换言之,在一个实施例中,处理元件指代能够独立地与代码(例如,软件线程、操作系统、应用或其他代码)关联的任何硬件。物理处理器典型地指代潜在地包括任何数量的其他处理元件(例如,内核或硬件线程)的集成电路。
内核一般指代能够维持独立架构状态的位于集成电路上的逻辑,其中,每个独立维持的架构状态与至少一些专用执行资源关联。与内核相比,硬件线程典型地指代能够维持独立架构状态的位于集成电路上的任何逻辑,其中,独立维持的架构状态共享对执行资源的访问。可见,当特定资源被共享而其他资源专用于架构状态时,硬件线程和内核的命名法之间的界线重叠。更一般地,操作系统将内核和硬件线程视为单独的逻辑处理器,其中,操作系统能够单独地调度每个逻辑处理器上的操作。
如图4所示,物理处理器400包括两个内核:内核401和402。在此,内核401和402认为是对称内核(即,具有相同配置、功能单元和/或逻辑的内核)。在另一实施例中,内核401包括乱序处理器内核,而内核402包括有序处理器内核。然而,可以从任何类型的内核(例如,本机内核、软件管理的内核、适用于执行本机指令集架构(ISA)的内核、适用于执行转译后的ISA的内核、共同设计的内核或其他已知的内核)单独地选择内核401和402。又为了进一步讨论,以下更详细地描述内核401中所示的功能单元,因为内核402中的单元以相似方式进行操作。
如所描绘的,内核401包括两个架构状态寄存器401a和401b,其可以与两个硬件线程(也称为硬件线程槽)关联。因此,软件实体(例如,操作系统)在一个实施例中潜在地将处理器400视为四个分离的处理器(即,能够同时执行四个软件线程的四个逻辑处理器或处理元件)。如上所述,第一线程与架构状态寄存器401a关联,第二线程与架构状态寄存器401b关联,第三线程可以与架构状态寄存器402a关联,并且第四线程可以与架构状态寄存器402b关联。在此,架构状态寄存器(401a、401b、402a和402b)可以与处理元件、线程槽或线程单元关联,如上所述。如图所示,架构状态寄存器401a在架构状态寄存器401b中受复制,因此单独架构状态/上下文能够被存储以用于逻辑处理器401a和逻辑处理器401b。在内核401中,也可以为线程401a和401b复制其他更小的资源(例如,分配器和重命名器块430中的指令指针和重命名逻辑)。可以通过分区共享一些资源(例如,重新排序/退离单元435中的重新排序缓冲器、分支目标缓冲器和指令翻译后备缓冲器(BTB和I-TLB)420、加载/存储缓冲器和队列)。其他资源(例如,通用内部寄存器、页表基址寄存器、低级数据缓存和数据TLB450、执行单元440和重新排序/退离单元435的部分)潜在地是完全共享的。
处理器400一般包括可以完全共享、通过分区共享或由/对处理元件专用的其他资源。在图4中,示出具有处理器的说明性逻辑单元/资源的纯示例性处理器的实施例。注意,处理器可以包括或省略任何这些功能单元中,又包括任何其他未描绘的已知功能单元、逻辑或固件。如图所示,内核401包括简化的代表性乱序(OOO)处理器内核。但是在不同的实施例中,可以使用有序处理器。
内核401还包括解码模块425,其耦合到获取单元以对获取的元素进行解码。在一个实施例中,获取逻辑包括分别与线程槽401a、401b关联的单独定序器。通常,内核401与定义/指定处理器400上可执行的指令的第一ISA关联。一般,作为第一ISA的部分的机器代码指令包括指令的部分(称为操作码),其引用/指定待执行的指令或操作。解码模块425包括从这些指令的操作码识别它们并且在流水线上传递解码的指令以用于由第一ISA定义的处理的电路。例如,解码器模块425在一个实施例中包括被设计为或适用于识别特定指令(例如,事务指令)的逻辑。作为解码器模块425进行的识别的结果,架构或内核401采取特定的、预定义的动作以执行与适当指令关联的任务。重要的是要注意,可以响应于单个或多个指令执行本文描述的任何任务、块、操作和方法;其中的一些可能是新的或旧的指令。
在一个示例中,分配器和重命名器块430包括分配器,其用于保留资源(例如,寄存器文件)以存储指令处理结果的。然而,线程401a和401b潜在地有乱序执行的能力,其中,分配器和重命名器块430还保留其他资源(例如,重新排序缓冲器)以跟踪指令结果。重命名器块430可以还包括寄存器重命名器,以将程序/指令引用寄存器重命名为处理器400内部的其他寄存器。重新排序/退离单元435包括例如上述重新排序缓冲器、加载缓冲器和存储缓冲器的组件,以支持乱序执行和乱序执行的指令的稍后有序退离。
调度器和执行单元块440在一个实施例中包括调度器单元,以调度执行单元上的指令/操作。例如,浮点指令在具有可用浮点执行单元的执行单元的端口上受调度。还包括与执行单元关联的寄存器文件,以存储信息指令处理结果。示例性执行单元包括浮点执行单元、整数执行单元、跳转执行单元、加载执行单元、存储执行单元和其他已知执行单元。
更低级数据缓存和数据转译后备缓冲器(D-TLB)450耦合到执行单元440。数据缓存用于存储最近使用/操作的元素(例如,在存储器一致性状态下潜在地保存的数据操作数)。D-TLB用于存储最近的虚拟/线性到物理地址转译。作为特定示例,处理器可以包括页表结构,以将物理存储器分成多个虚拟页。
在此,内核401和402共享对更高级或更远缓存410的访问,缓存410用于缓存最近获取的元素。注意,更高级或更远指代缓存等级增加或更远离执行单元。在一个实施例中,更高级缓存410是最后级数据缓存——处理器400上的存储器层次结构中的最后缓存——例如第二级或第三级数据缓存。然而,更高级缓存410不限于此,因为它可以关联于或包括指令缓存。踪迹缓存——一种类型的指令缓存——另外可以耦合在解码器模块425之后,以存储最近解码的踪迹。
在所描绘的配置中,处理器400还包括总线接口405和功率控制单元460,其可以根据本发明的实施例执行功率管理。在此情况下,总线接口405用于与处理器400外部的设备(例如,系统存储器和其他组件)进行通信。
存储器控制器470可以与其他设备(例如,一个或许多存储器)进行接口。在示例中,总线接口405包括环形互连,其具有用于与存储器进行接口的存储器控制器和用于与图形处理器接口的图形控制器。在SoC环境中,甚至更多的设备(例如,网络接口、协处理器、存储器、图形处理器和任何其他已知的计算机设备/接口)可以集成在单个管芯或集成电路上,以提供具有高功能和低功耗的小形数。
现在参照图5,示出的是根据本发明一个实施例的处理器内核的微架构的框图。如图5所示,处理器内核500可以是多级流水线乱序处理器。内核500可以基于可以从集成电压调节器或外部电压调节器接收的所接收的操作电压在各种电压工作。
如图5可见,内核500包括前端单元510,其可以用以获取待执行的指令并准备它们以用于稍后在处理器流水线中使用。例如,前端单元510可以包括获取单元501、指令缓存503和指令解码器505。在一些实现方式中,前端单元510可以还包括踪迹缓存连同微码存储以及微操作存储。获取单元501可以例如从存储器或指令缓存503获取宏指令,并且将它们馈送到指令解码器505,以将它们解码为原语(即,用于由处理器执行的微操作)。
耦合在前端单元510与执行单元520之间的是乱序(OOO)引擎515,其可以用以接收微指令并准备它们以用于执行。更具体而言,OOO引擎515可以包括各种缓冲器,以重新排序微指令流并分配执行所需的各种资源,以及提供将逻辑寄存器重命名到各种寄存器文件(例如,寄存器文件530和扩展寄存器文件535)内的存储位置上。寄存器文件530可以包括用于整数和浮点操作的分离寄存器文件。出于配置、控制和附加操作的目的,机器特定寄存器(MSR)538的集合也可以存在并且对内核500内(以及内核外部)的各种逻辑是可访问的。
执行单元520中可以存在各种资源(包括例如各种整数、浮点和单指令多数据(SIMD)逻辑单元等其他专用硬件)。例如,此类执行单元可以包括一个或多个算术逻辑单元(ALU)522和一个或多个矢量执行单元524等其他此类执行单元。
来自执行单元的结果可以提供给退离逻辑(即,重新排序缓冲器(ROB)540)。更具体而言,ROB 540可以包括用于接收与被执行的指令关联的信息的各种阵列和逻辑。ROB540然后检查该信息,以确定指令是否可以有效地被退离以及结果数据是否提交到处理器的架构状态,或者是否发生一个或多个阻止指令的适当退离的异常。当然,ROB 540可以处理与退离关联的其他操作。
如图5所示,ROB 540耦合到缓存550,其在一个实施例中可以是低级缓存(例如,L1缓存),但是本发明的范围不限于此。此外,执行单元520可以直接耦合到缓存550。从缓存550,与更高级缓存、系统存储器等的数据通信可以发生。虽然在图5的实施例中以这种高级示出,但是应理解,本发明的范围不限于此。例如,虽然图5的实现方式是关于乱序机器(例如,x86指令集架构(ISA)),但是本发明的范围不限于此。也就是说,可以在有序处理器、精简指令集计算(RISC)处理器(例如,基于ARM的处理器)或可以经由仿真引擎和关联的逻辑电路仿真不同ISA的指令和操作的另一类型的ISA的处理器中实现其他实施例。
现在参照图6,示出的是根据另一实施例的处理器内核的微架构的框图。在图6的实施例中,内核600可以是不同微架构的低功率内核(例如,具有被设计为减少功耗的相对有限流水线深度的基于AtomTM的处理器)。可见,内核600包括指令缓存610,其耦合以向指令解码器615提供指令。分支预测器605可以耦合到指令缓存610。注意,指令缓存610也可以耦合到另一级的缓存存储器(例如,L2缓存(为了易于图6中的说明而未示出))。进而,指令解码器615将解码的指令提供给发布队列(IQ)620,以用于存储和交付到给定的执行流水线。微码ROM 618耦合到指令解码器615。
浮点流水线630包括浮点(FP)寄存器文件632,其可以包括给定位宽(例如,128、256或512位)的多个架构寄存器。流水线630包括浮点调度器634,以调度指令以用于流水线的多个执行单元之一上的执行。在所示实施例中,这样的执行单元包括算术逻辑单元(ALU)635、混洗单元636和浮点(FP)加法器638。进而,这些执行单元中生成的结果可以提供回到寄存器文件632的缓冲器和/或寄存器。当然应理解,虽然用这些少数示例执行单元示出,但是在另一实施例中可以存在附加的或不同的浮点执行单元。
也可以提供整数流水线640。在所示实施例中,流水线640包括整数(INT)寄存器文件642,其可以包括具有给定位宽(例如,128或256位)的多个架构寄存器。流水线640包括整数执行(IE)调度器644,以调度指令以用于流水线的多个执行单元之一上的执行。在所示实施例中,这样的执行单元包括ALU 645、移位器单元646和跳转执行单元(JEU)648。进而,这些执行单元中生成的结果可以提供回到寄存器文件642的缓冲器和/或寄存器。当然,应理解,虽然用这些少数示例执行单元示出,但是在另一实施例中可以存在附加的或不同的整数执行单元。
存储器执行(ME)调度器650可以调度存储器操作以用于也耦合到TLB 654的地址生成单元(AGU)652中的执行。如所见,这些结构可以耦合到数据缓存660,其可以是进而耦合到包括L2缓存存储器的附加级的缓存存储器层次结构的L0和/或L1数据缓存。
为了提供对乱序执行的支持,除了重新排序缓冲器680之外,还可以提供分配器/重命名器670,其被配置为重新排序乱序执行的指令以用于按序退离。虽然在图6的说明中以这种特定的流水线架构示出,但是应理解,许多变化和替代方案是可能的。
注意,在具有例如根据图5和图6的微架构的不对称内核的处理器中,出于功率管理原因,可以在内核之间动态地交换工作负载,因为这些内核虽然具有不同的流水线设计和深度,但是可以是相同或有关的ISA。可以通过对用户应用(并且还可能地,内核(kernel))透明的方式执行这种动态内核交换。
参照图7,示出的是根据又一实施例的处理器内核的微架构的框图。如图7所示,内核700可以包括多级有序流水线,以在非常低的功耗等级执行。作为一个这样的示例,内核700可以具有根据可得自加利福尼亚州桑尼维尔的ARM Holdings,LTD.的ARM Cortex A53设计的微架构。在实现方式中,可以提供被配置为执行32位和64位代码二者的8级流水线。内核700包括获取单元710,其被配置为获取指令并且将它们提供给解码单元715,解码单元715可以对指令(例如,给定ISA(例如,ARMv8 ISA)的宏指令)进行解码。进一步注意,队列730可以耦合到解码单元715以存储解码的指令。解码的指令提供给发布逻辑725,其中,解码的指令可以发布给多个执行单元中的给定一个。
进一步参照图7,发布逻辑725可以向多个执行单元之一发布指令。在所示实施例中,这些执行单元包括整数单元735、乘法单元740、浮点/矢量单元750、双发布单元760和加载/存储单元770。这些不同执行单元的结果可以提供给回写(WB)单元780。应理解,虽然为了易于说明而示出单个回写单元,但是在一些实现方式中,分离的回写单元可以与执行单元中的每一个关联。此外,应理解,以高级表示虽然图7所示的单元和逻辑中的每一个,但是特定实现方式可以包括更多或不同的结构。使用具有如图7所示的流水线的一个或多个内核设计的处理器可以实现于从移动设备扩展到服务器系统的许多不同的终端产品中。
参照图8,示出的是根据再一实施例的处理器内核的微架构的框图。如图8所示,内核800可以包括多级多发布乱序流水线,以在非常高的性能等级执行(这可能以比图7的内核700更高的功耗等级发生)。作为一个这样的示例,处理器800可以具有根据ARM CortexA57设计的微架构。在实现方式中,可以提供15(或更大)级流水线,其被配置为执行32位和64位代码二者。此外,流水线可以提供3(或更大)宽和3(或更大)发布操作。内核800包括获取单元810,其被配置为获取指令并且将它们提供给耦合到缓存820的解码器/重命名器/分派器单元815。单元815可以对指令(例如,ARMv8指令集架构的宏指令)进行解码,重命名指令内的寄存器引用,并且将指令(最终)分派给选定的执行单元。解码的指令可以存储在队列825中。注意,虽然为了易于说明而在图8中示出单个队列结构,但是应理解,可以为多个不同类型的执行单元中的每一个提供分离的队列。
也在图8中示出的是发布逻辑830,存储在队列825中的解码的指令可以从发布逻辑830发布到选定的执行单元。发布逻辑830也可以实现于特定实施例中,其中,分离的发布逻辑用于发布逻辑830耦合到的多个不同类型的执行单元中的每一个。
解码的指令可以发布到多个执行单元中的给定的一个。在所示实施例中,这些执行单元包括一个或多个整数单元835、乘法单元840、浮点/矢量单元850、分支单元860和加载/存储单元870。在一实施例中,浮点/矢量单元850可以被配置为处理128或256位的SIMD或矢量数据。仍更进一步,浮点/矢量执行单元850可以执行IEEE-754双精度浮点操作。这些不同的执行单元的结果可以提供给回写单元880。注意,在一些实现方式中,分离的回写单元可以与执行单元中的每一个关联。此外,应理解,以高级表示虽然图8所示的单元和逻辑中的每一个,但是特定实现方式可以包括更多或不同的结构。
注意,在例如根据图7和图8的微架构的处理器的具有不对称内核的处理器中,出于功率管理的原因,可以动态地交换工作负载,因为这些内核虽然具有不同的流水线设计和深度,但是可以是相同或有关的ISA。可以通过对用户应用(并且还可能地,内核(kernel))透明的方式执行这种动态内核交换。
可以在从移动设备扩展到服务器系统的许多不同的终端产品中实现使用具有如在图5-图8中的任何一个或多个中的流水线的一个或多个内核设计的处理器。现在参照图9,示出的是根据本发明另一实施例的处理器的框图。在图9的实施例中,处理器900可以是包括多个域的SoC,域中的每一个可以受控制以在独立的操作电压和操作频率进行操作。作为具体说明性示例,处理器900可以是基于Architecture CoreTM的处理器(例如,i3、i5、i7或可得自英特尔公司的另一此类处理器)。然而,其他低功耗处理器(例如,可得自加利福尼亚州桑尼维尔的Advanced Micro Devices,Inc.(AMD)、来自ARM Holdings,Ltd.的基于ARM的设计或其被许可人或来自加利福尼亚州桑尼维尔的MIPS Technologies,Inc.的基于MIPS的设计或其被许可人或采用者)可以另外存在于其他实施例中(例如,Apple A7处理器、Qualcomm Snapdragon处理器或Texas Instruments OMAP处理器)。这样的SoC可以用在低功率系统(例如,智能手机、平板计算机、平板计算机、电话平板计算机、UltrabookTM计算机或其他便携式计算设备)中,其可以结合具有基于异构系统架构的处理器设计的异构系统架构。
在图9所示的高级视图中,处理器900包括多个内核单元910a-910n。每个内核单元可以包括一个或多个处理器内核、一个或多个缓存存储器和其他电路。每个内核单元910可以支持一个或多个指令集(例如,x86指令集(带有已添加有较新版本的一些扩展);MIPS指令集;ARM指令集(带有可选附加扩展(例如,NEON))或其他指令集或其组合)。注意,一些内核单元可以是(例如,不同的设计的)异构资源。此外,每个这样的内核可以耦合到缓存存储器(未示出),其在一个实施例中可以是共享二级(L2)缓存存储器。非易失性存储器930可用以存储各种程序和其他数据。例如,该存储可用以存储至少部分微代码、引导信息(例如,BIOS)、其他系统软件等。
每个内核单元910还可以包括接口(例如,总线接口单元),以赋能与处理器的附加电路的互连。在一个实施例中,每个内核单元910耦合到可以充当主缓存一致管芯上互连的一致组构,其进而耦合到存储器控制器935。进而,存储器控制器935控制与存储器(例如,DRAM)(在图9中为易于说明而未示出)的通信。
除了内核单元之外,处理器内还存在附加处理引擎,包括至少一个图形单元920,其可以包括一个或多个图形处理单元(GPU),以执行图形处理并且可能地对图形处理器执行通用操作(所谓的GPGPU操作)。此外,可以存在至少一个图像信号处理器925。信号处理器925可以被配置为处理从SoC内部或芯片外的一个或多个捕获设备接收到的传入图像数据。
也可存在其他加速器。在9的说明中,视频编码器950可以执行编码操作,包括对于视频信息的编码和解码(例如,为高清晰度视频内容提供硬件加速支持)。还可提供显示控制器955以加速显示操作,包括:为系统的内部和外部显示器提供支持。此外,可以存在安全处理器945,以执行安全操作(例如,安全引导操作、各种加密操作等)。
单元中的每一个可以使其功耗经由功率管理器940受控制,功率管理器940可以包括用于执行本文描述的各种功率管理技术的控制逻辑。
在一些实施例中,处理器900可以还包括非一致组构,其耦合到各种外围设备可以耦合到的一致组构。一个或多个接口960a-960d赋能与一个或多个片外设备的通信。这些通信可以经由各种通信协议(例如,PCIeTM、GPIO、USB、I2C、UART、MIPI、SDIO、DDR、SPI、HDMI等其他类型的通信协议)。虽然在图9的实施例中以这种高等级示出,但是应理解,本发明的范围不限于此。
现在参照图10,示出的是代表性SoC的框图。在所示实施例中,SoC 1000可以是多核SoC,其被配置用于低功率操作以受优化以用于结合到智能手机或其他低功率设备(例如,平板计算机或其他便携式计算设备)中。作为示例,可以使用非对称或不同类型的内核(例如,较高功率和/或低功率内核的组合(例如,乱序内核和有序内核))实现SoC 1000。在不同的实施例中,这些内核可以基于ArchitectureTM内核设计或ARM架构设计。在其他实施例中,可以在给定的SoC中实现Intel和ARM内核的混合。
如图10可见,SoC 1000包括具有多个第一内核1012a-1012d的第一内核域1010。在一个示例中,这些内核可以是低功率核(例如,有序内核)。在一个实施例中,这些第一内核可以实现为ARM Cortex A53内核。进而,这些内核耦合到内核域1010的缓存存储器1015。此外,SoC 1000包括第二内核域1020。在图10的说明中,第二内核域1020具有多个第二内核1022a-1022d。在一个示例中,这些核可以是比第一内核1012更高功耗的内核。在一个实施例中,第二核可以是乱序内核,其可以实现为ARM Cortex A57核。进而,这些内核耦合到内核域1020的缓存存储器1025。注意,虽然图10所示的示例包括在每个域中包括4个内核,但是应理解,在其他示例中,在给定域中可以存在更多或更少的内核。
进一步参照图10,还提供图形域1030,其可以包括一个或多个图形处理单元(GPU),其被配置为独立地执行例如由内核域1010和1020的一个或多个内核提供的图形工作负载。作为示例,除了提供图形和显示渲染操作之外,GPU域1030还可以用以为各种屏幕尺寸提供显示支持。
如所见,各种域耦合到一致性互连1040,一致性互连1040在一个实施例中可以是进而耦合到集成存储器控制器1050的缓存一致性互连组构。在一些示例中,一致性互连1040可以包括共享缓存存储器(例如,L3缓存)。在实施例中,存储器控制器1050可以是直接存储器控制器,以提供与片外存储器的通信的多个信道(例如,DRAM(在图10中为了易于说明而未示出)的多个信道)。
在不同的示例中,内核域的数量可以变化。例如,对于适合于并入移动计算设备的低功率SoC,可以存在例如图10所示的有限数量的内核域。此外,在这样的低功率SoC中,包括更高功率内核的内核域1020可以具有更少数量的此类内核。例如,在一种实现方式中,可以提供两个内核1022,以赋能以减少的功耗等级的操作。此外,不同的内核域也可以耦合到中断控制器,以赋能不同域之间的工作负载的动态交换。
在又其他实施例中,可以存在更多数量的内核域以及附加可选IP逻辑,其中,SoC可以扩展到更高的性能(和功率)等级以用于结合到其他计算设备(例如,台式机、服务器、高性能计算系统、基站等)中。作为一个这样的示例,可以提供均具有给定数量的乱序内核的4个内核域。仍更进一步,除了可选GPU支持(其作为示例可以采取GPGPU的形式)之外,还可以提供一个或多个加速器,以对于特定功能(例如,web服务、网络处理、交换等)提供优化的硬件支持。此外,可以存在输入/输出接口,以将此类加速器耦合到片外组件。
现在参照图11,示出的是另一示例SoC的框图。在图11的实施例中,SoC 1100可以包括各种电路,以赋能用于多媒体应用、通信和其他功能的高性能。故此,SoC 1100适合于并入广泛各种便携式和其他设备(例如,智能手机、平板计算机、智能电视等)中。在所示示例中,SoC 1100包括中央处理器单元(CPU)域1110。在一个实施例中,多个单独处理器内核可以存在于CPU域1110中。作为一个示例,CPU域1110可以是具有4个多线程内核的四核处理器。这样的处理器可以是同构或异构处理器(例如,低功率和高功率处理器内核的混合)。
进而,提供GPU域1120以在一个或多个GPU中执行高级图形处理,以处理图形并计算API。除了在多媒体指令的执行期间可能发生的高级计算之外,DSP单元1130还可以提供一个或多个低功率DSP以用于处理低功率多媒体应用(例如,音乐播放、音频/视频等)。进而,通信单元1140可以包括用于经由各种无线协议(例如,蜂窝通信(包括3G/4G LTE)、无线局域协议(例如,蓝牙TM、IEEE 802.11等))提供连接性的组件。
仍更进一步,多媒体处理器1150可以用以执行包括用户手势的处理的高清晰度视频和音频内容的捕获和回放。传感器单元1160可以包括多个传感器和/或传感器控制器,以与给定平台中存在的各种片外传感器进行接口。图像信号处理器(ISP)1170可以关于来自平台的一个或多个相机(包括静止相机和视频相机)的所捕获的内容执行图像处理。
显示处理器1180可以提供对于对给定像素密度的高清晰度显示器的连接的支持,包括用于以无线方式传递内容以用于该显示器上的回放的能力。仍更进一步,定位单元1190可以包括全球定位系统(GPS)接收机,其带有对于多个GPS星座的支持,以向应用提供使用该GPS接收机获得的高度准确的定位信息。应理解,虽然在图11的示例中用该特定组件集合示出,但是许多变化和替代方案是可能的。
现在参照图12,示出的是可以使用实施例的示例系统的框图。如所见,系统1200可以是智能手机或其他无线通信器。基带处理器1205被配置为关于待从系统发送或由系统接收的通信信号执行各种信号处理。进而,基带处理器1205耦合到应用处理器1210,应用处理器1210可以是系统的主CPU,以除了用户应用(例如,许多公知的社交媒体和多媒体app)之外还执行OS和其他系统软件。应用处理器1210也可以被配置为对于设备执行各种其他计算操作。
进而,应用处理器1210可以耦合到用户接口/显示器1220(例如,触摸屏显示器)。此外,应用处理器1210可以耦合到存储器系统,其包括非易失性存储器(即,闪存1230)和系统存储器(即,动态随机存取存储器(DRAM)1235)。如进一步所见,应用处理器1210进一步耦合到捕获设备1241(例如,可以记录视频和/或静止图像的一个或多个图像捕获设备)。
仍然参照图12,包括订户身份模块且可能包括安全存储和密码处理器的通用集成电路卡(UICC)1246也耦合到应用处理器1210。系统1200还可以包括安全处理器1250,其可以耦合到应用处理器1210。多个传感器1225可以耦合到应用处理器1210,以赋能输入各种感测信息(例如,加速度计和其他环境信息)。音频输出设备1295可以提供接口,以例如以语音通信、播放或流式传输音频数据等的形式输出声音。
如进一步所示,提供近场通信(NFC)非接触式接口1260,其经由NFC天线1265在NFC近场中进行通信。虽然在图12中示出分离的天线,但是应理解,在一些实现方式中,可以提供一个天线或不同天线集合,以赋能各种无线功能。
功率管理集成电路(PMIC)1215耦合到应用处理器1210,以执行平台级功率管理。为此,PMIC 1215可以向应用处理器1210发布功率管理请求,以根据期望进入特定低功率状态。此外,基于平台约束,PMIC 1215也可以控制系统1200的其他组件的功率等级。
为了使得通信能够被发送和接收,各种电路可以耦合在基带处理器1205与天线1290之间。具体而言,可以存在射频(RF)收发机1270和无线局域网(WLAN)收发机1275。通常,RF收发机1270可以用以根据给定的无线通信协议(例如,3G或4G无线通信协议、例如根据码分多址(CDMA)、全球移动通信系统(GSM)、长期演进(LTE)或其他协议的无线通信协议)接收和发送无线数据和呼叫。此外,可以存在GPS传感器1280。也可以提供其他无线通信(例如,无线电信号(例如,AM/FM和其他信号)的接收或发送)。此外,经由WLAN收发机1275,也可以实现本地无线通信。
现在参照图13,示出的是可以与实施例一起使用的另一示例系统的框图。在图13的说明中,系统1300可以是移动低功率系统(例如,平板计算机、2:1平板、手机平板或其他可转换或单机平板系统)。如图所示,SoC 1310存在,并且可以被配置为操作为用于设备的应用处理器。
各种设备可以耦合到SoC 1310。在所示的说明中,存储器子系统包括耦合到SoC1310的闪存1340和DRAM 1345。此外,触摸面板1320耦合到SoC 1310,以提供显示能力和经由触摸(包括:在触摸面板1320的显示器上提供虚拟键盘)的用户输入。为了提供有线网络连接性,SoC 1310耦合到以太网接口1330。外围中枢1325耦合到SoC 1310,以赋能与各种外围设备进行接口,例如,可以通过各种端口或其他连接器中的任何一个耦合到系统1300。
除了SoC 1310内的内部功率管理电路和功能之外,PMIC 1380还耦合到SoC 1310,以例如基于系统是由电池1390供电还是由AC电源经由AC适配器1395供电提供基于平台的功率管理。除了这个基于电源的功率管理之外,PMIC 1380也可以进一步基于环境和使用条件执行平台功率管理活动。更进一步,PMIC 1380可以将控制和状态信息传送到SoC 1310,以在SoC 1310内引起各种功率管理动作。
仍然参照图13,为了提供无线能力,WLAN单元1350耦合到SoC 1310并进而耦合到天线1355。在各种实现方式中,WLAN单元1350可以提供根据一个或多个无线协议的通信。
如进一步所示,多个传感器1360可以耦合到SoC 1310。这些传感器可以包括各种加速度计、环境和其他传感器(包括用户手势传感器)。最后,音频编解码器1365耦合到SoC1310,以提供对音频输出设备1370的接口。当然应理解,虽然在图13中用该特定实现方式示出,但是许多变化和替代方案是可能的。
现在参照图14,示出的是代表性计算机系统1400(例如,笔记本、UltrabookTM或其他小形数系统)的框图。处理器1410在一个实施例中包括微处理器、多核处理器、多线程处理器、超低压处理器、嵌入式处理器或其他已知处理元件。在所示实现方式中,处理器1410充当主处理单元和中央中枢,以用于与系统1400的各种组件中的许多组件进行通信,并且可以包括如本文描述的功率管理电路。作为一个示例,处理器1410实现为SoC。
处理器1410在一个实施例中与系统存储器1415进行通信。作为说明性示例,经由多个存储器设备或模块实现系统存储器1415,以提供给定量的系统存储器。
为了提供信息(例如,数据、应用、一个或多个操作系统等)的持久存储,海量存储1420也可以耦合到处理器1410。在各种实施例中,为了赋能更薄和更轻的系统设计以及改进系统响应性,可以经由SAD实现这种海量存储,或者可以主要使用硬盘驱动器(HDD)实现海量存储,其中,较小量的SAD存储用于充当SAD缓存,以赋能在关闭事件期间的上下文状态和其他此类信息的非易失性存储,以使得在重新发起系统活动时快速开启可以发生。也如图14所示,闪存设备1422可以例如经由串行外围接口(SPI)耦合到处理器1410。该闪存设备可以提供包括基本输入/输出软件(BIOS)以及系统的其他固件的系统软件的非易失性存储。
系统1400内可以存在各种输入/输出(I/O)设备。图14的实施例中具体地示出的是显示器1424,其可以是进一步提供触摸屏1425的高清晰度LCD或LED面板。在一个实施例中,显示器1424可以经由可以实现为高性能图形互连的显示互连耦合到处理器1410。触摸屏1425可以经由另一互连(其在一个实施例中可以是I2C互连)耦合到处理器1410。如图14进一步所示,除了触摸屏1425之外,通过触摸方式的用户输入还可以经由触摸板1430发生,触摸板1430可以被配置在机箱内并且也可以耦合到与触摸屏1425相同的I2C互连。
出于感知计算和其他目的,各种传感器可以存在于系统内,并且可以通过不同方式耦合到处理器1410。特定惯性和环境传感器可以例如经由I2C互连通过传感器中枢1440耦合到处理器1410。在图14所示的实施例中,这些传感器可以包括加速度计1441、环境光传感器(ALS)1442、罗盘1443和陀螺仪1444。其他环境传感器可以包括一个或多个热传感器1446,其在一些实施例中经由系统管理总线(SMBus)总线耦合到处理器1410。
也如图14可见,各种外围设备可以经由低引脚计数(LPC)互连耦合到处理器1410。在所示实施例中,各种组件可以通过嵌入式控制器1435耦合。这些组件可以包括(例如,经由PS2接口耦合的)键盘1436、风扇1437和热传感器1439。在一些实施例中,触摸板1430也可以经由PS2接口耦合到EC 1435。此外,安全处理器(例如,可信平台模块(TPM)1438)也可以经由该LPC互连耦合到处理器1410。
系统1400可以通过包括无线的各种方式与外部设备进行通信。在图14所示的实施例中,存在各种无线模块,其中的每一个可以对应于被配置用于特定无线通信协议的无线电。用于短距离(例如,近场)中的无线通信的一种方式可以是经由NFC单元1445,其可以在一个实施例中经由SMBus与处理器1410进行通信。注意,经由该NFC单元1445,彼此紧密靠近的设备可以进行通信。
如图14进一步可见,附加无线单元可以包括其他短距离无线引擎,包括WLAN单元1450和蓝牙TM单元1452。使用WLAN单元1450,可以实现Wi-FiTM通信,而经由蓝牙TM单元1452,短距离蓝牙TM通信可以发生。这些单元可以经由给定链路与处理器1410进行通信。
此外,例如,根据蜂窝或其他无线广域协议的无线广域通信可以经由WWAN单元1456发生,WWAN单元1456进而可以耦合到订户身份模块(SIM)1457。此外,为了赋能接收和使用位置信息,GPS模块1455也可以存在。注意,在图14所示的实施例中,WWAN单元1456和集成捕捉设备(例如,相机模块1454)可以经由给定链路进行通信。
为了提供音频输入和输出,可以经由数字信号处理器(DSP)1460实现音频处理器,数字信号处理器(DSP)1460可以经由高清晰度音频(HDA)链路耦合到处理器1410。相似地,DSP 1460可以与集成编码器/解码器(CODEC)和放大器1462进行通信,放大器1462进而可以耦合到可以在机箱内实现的输出扬声器1463。相似地,放大器和编解码器1462可以耦合,以接收来自麦克风1465的音频输入,麦克风1465在一个实施例中可以经由双阵列麦克风(例如,数字麦克风阵列)被实现,以提供高质量音频输入,以赋能系统内的各种操作的语音激活式控制。还要注意,音频输出可以从放大器/编解码器1462提供给耳机插孔1464。虽然在图14的实施例中用这些特定组件示出,但是应理解,本发明的范围不限于此。
可以在许多不同系统类型中实现实施例。现在参照图15A,示出的是根据本发明实施例的系统的框图。如图15A所示,多处理器系统1500是点对点互连系统,并且包括经由点对点互连1550耦合的第一处理器1570和第二处理器1580。如图15A所示,处理器1570和1580中的每一个可以是包括第一和第二处理器内核(即,处理器内核1574a和1574b以及处理器内核1584a和1584b)的多核处理器,但是潜在地,处理器中可以存在更多内核。处理器中的每一个可以包括PCU或其他功率管理逻辑,以执行本文所描述的基于处理器的功率管理。
仍然参照图15A,第一处理器1570还包括集成存储器控制器(IMC)1572和点对点(P-P)接口1576和1578。相似地,第二处理器1580包括IMC 1582和P-P接口1586和1588。如图15所示,IMC 1572和1582将处理器耦合到相应存储器(即,存储器1532和存储器1534),其可以是在本地附接到相应处理器的系统存储器(例如,DRAM)的部分。第一处理器1570和第二处理器1580可以分别经由P-P互连1562和1564耦合到芯片组1590。如图15A所示,芯片组1590包括P-P接口1594和1598。
此外,芯片组1590包括接口1592,以通过P-P互连1539将芯片组1590与高性能图形引擎1538耦合。进而,芯片组1590可以经由接口1596耦合到第一总线1516。如图15A所示,连同将第一总线1516耦合到第二总线1520的总线桥1518,各种输入/输出(I/O)设备1514可以耦合到第一总线1516。在一个实施例中,包括例如键盘/鼠标1522、通信设备1526和数据存储单元1528(例如,盘驱动器或其他可以包括代码1530的海量存储设备)的各种设备可以耦合到第二总线1520。此外,音频I/O 1524可以耦合到第二总线1520。实施例可以结合到包括移动设备(例如,智能蜂窝电话、平板计算机、上网本、UltrabookTM等)的其他类型的系统中。
现在参照图15B,示出的是根据本发明实施例的第二更具体示例性系统1501的框图。图15A和图15B中的相同要素承载相同附图标记,并且已经从图15B中省略图15A的特定方面,以避免混淆图15B的其他方面。
图15B示出处理器1570、1580可以分别包括集成存储器和I/O控制逻辑(“CL”)1571和1581。因此,控制逻辑1571和1581包括集成存储器控制器单元并且包括I/O控制逻辑。图15B示出不仅存储器1532、1534耦合到控制逻辑1571和1581,而且I/O设备1513也耦合到控制逻辑1571和1581。遗留I/O设备1515耦合到芯片组1590。
可以通过表示和/或定义集成电路(例如,处理器)内的逻辑的机器可读介质上存储的代表性代码实现至少一个实施例的一个或多个方面。例如,机器可读介质可以包括表示处理器内的各种逻辑的指令。当由机器读取时,指令可以使机器建造逻辑以执行本文描述的技术。称为“IP内核”的这种表示是用于可以作为描述集成电路结构的硬件模型存储在有形机器可读介质上的集成电路的逻辑的可重用单元。硬件模型可以提供给各种客户或制造设施,其将硬件模型加载在制造集成电路的建造机器上。可以建造集成电路,以使得电路执行与本文描述的任何实施例关联描述的操作。
图16是示出根据实施例的可以用以制造集成电路以执行操作的IP内核开发系统1600的框图。IP内核开发系统1600可以用以生成模块化可重用设计,其可以结合到更大的设计中或用以构建整个集成电路(例如,SoC集成电路)。设计设施1630可以通过高级编程语言(例如,C/C++)生成IP内核设计的软件仿真1610。软件仿真1610可以用以设计、测试和验证IP内核的行为。可以然后从仿真的模型创建或合成寄存器转移级(RTL)设计。RTL设计1615是包括使用建模的数字信号执行的关联逻辑的对硬件寄存器之间的数字信号流进行建模的集成电路行为的抽象。除了RTL设计1615之外,还可以创建、设计或合成在逻辑级或晶体管级的更低级设计。因此,初始设计和仿真的具体细节可以变化。
RTL设计1615或等同物可以由设计设施进一步合成为硬件模型1620,其可以是硬件描述语言(HDL)或物理设计数据的某种其他表示。可以进一步仿真或测试HDL以验证IP内核设计。可以使用非易失性存储器1640(例如,硬盘、闪存或任何非易失性存储介质)存储IP内核设计以用于交付给第三方建造设施1665。或者,可以通过有线连接1650或无线连接1660(例如,经由互联网)发送IP内核设计。建造设施1665可以然后建造至少部分基于IP内核设计的集成电路。所建造的集成电路可以被配置为根据本文描述的组件和/或过程执行操作。
以下描述的图17A-图25详述用于实现本文描述的组件和/或过程的实施例的示例性架构和系统。在一些实施例中,本文描述的一个或多个硬件组件和/或指令如下文详述受仿真,或者实现为软件模块。
上面详述的指令的实施例体现可以体现于以下详述的“通用矢量友好指令格式”中。在其他实施例中,不利用这种格式,而是使用另一指令格式,然而,写入掩码寄存器、各种数据变换(混合、广播等)、寻址等的以下描述通常适用于上述指令的实施例的描述。此外,下文详述示例性系统、架构和流水线。上述指令的实施例可以在这样的系统、架构和流水线上加以执行,但不限于所详述的那些。
指令集可以包括一种或多种指令格式。给定的指令格式可以定义各种字段(例如,位的数量、位的位置),以指定待执行的操作(例如,操作码)和待执行该操作的操作数和/或其他数据字段(例如,掩码)等。通过指令模板(或子格式)的定义进一步细分一些指令格式。例如,给定指令格式的指令模板可以定义为具有指令格式的字段的不同子集(所包括的字段典型地处于相同的顺序,但是至少一些具有不同的位位置,因为存在更少的所包括的字段),和/或定义具有不同地解释的给定字段。因此,ISA的每个指令使用给定的指令格式(且如果已定义,则以该指令格式的指令模板中的给定一个)加以表达,并包括用于指定操作和操作数的字段。例如,示例性ADD指令具有特定操作码和指令格式,包括用于指定操作的操作码字段码和用于选择操作数(源1/目标和源2)的操作数字段;并且在指令流中出现此ADD指令将在选择特定操作数的操作数字段中具有特定内容。称为高级矢量扩展(AVX)(AVX1和AVX2)并使用矢量扩展(VEX)编码方案的SIMD扩展集合已经发行和/或公布(例如,参见英特尔64和IA-32架构软件开发人员手册,2014年9月;并参见英特尔高级矢量扩展编程参考,2014年10月)。
示例性指令格式
可以通过不同的格式体现本文描述的指令的实施例。此外,下文详述示例性系统、架构和流水线。指令的实施例可以在这样的系统、架构和流水线上加以执行,但不限于详述的那些。
通用矢量友好指令格式
矢量友好指令格式是适合于矢量指令的指令格式(例如,存在特定于矢量操作的特定字段)。虽然描述通过矢量友好指令格式支持矢量和标量操作二者的实施例,但是替选实施例仅使用矢量友好指令格式的矢量操作。
图17A-图17B是示出根据本发明实施例的通用矢量友好指令格式及其指令模板的框图。如图17A是示出根据本发明实施例的通用矢量友好指令格式及其类A指令模板的框图;而图17B是示出根据本发明实施例的通用矢量友好指令格式及其类B指令模板的框图。具体而言,定义类A和类B指令模板的通用矢量友好指令格式1700,二者包括无存储器访问1705指令模板和存储器访问1720指令模板。矢量友好指令格式的上下文中通用的术语指代不与任何特定指令集绑定的指令格式。
虽然将描述矢量友好指令格式支持以下项的本发明的实施例,但是替选实施例可以支持带有更多、更少或不同数据元素宽度(例如,128位(16字节)数据元素宽度)的更多、更少和/或不同矢量操作数大小(例如,256字节矢量操作数):带有32位(4字节)或64位(8字节)数据元素宽度(或大小)的64字节矢量操作数长度(或大小)(并且因此,由16个双字大小元素或替代地8个四字大小元素组成的64字节矢量);带有16位(2字节)或8位(1字节)数据元素宽度(或大小)的64字节矢量操作数长度(或大小);带有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的32字节矢量操作数长度(或大小);和带有32位(4字节)、64位(8字节)、16位(2字节)或8位(1字节)数据元素宽度(或大小)的16字节矢量操作数长度(或大小)。
图17A中的类A指令模板包括:1)在无存储器访问1705指令模板内,示出无存储器访问、完全取整控制类型操作1710指令模板和无存储器访问、数据变换类型操作1715指令模板;和2)在存储器访问1720指令模板内,示出存储器访问、时间1725指令模板和存储器访问、非时间1730指令模板。图17B中的类B指令模板包括:1)在无存储器访问1705指令模板内,示出无存储器访问、写入掩码控制、部分取整控制类型操作1712指令模板和无存储器访问、写入掩码控制、vsize类型操作1717指令模板;和2)在存储器访问1720指令模板内,示出存储器访问、写入掩码控制1727指令模板。
通用矢量友好指令格式1700包括按图17A-图17B所示的顺序列出的以下字段。
格式字段1740——该字段中的特定值(指令格式标识符值)唯一地标识矢量友好指令格式以及因此指令流中的矢量友好指令格式的指令的出现。因此,该字段是可选的,因为对于仅具有通用矢量友好指令格式的指令集,不需要它。
基本操作字段1742——其内容区分不同的基本操作。
寄存器索引字段1744——其内容直接或通过地址生成指定源操作数和目标操作数的位置,而无论它们在寄存中还是存储器中。它们包括足够数量的位,以从PxQ(例如,32x512、16x128、32x1024、64x1024)寄存器文件选择N个寄存器。虽然在一个实施例中,N可以是多达三个源和一个目标寄存器,但是替选实施例可以支持更多或更少的源和目标寄存器(例如,可以支持多达两个源,其中,这些源之一也充当目标;可以支持多达到三个源,其中,这些源之一也充当目标;可以支持多达两个源和一个目标)。
修饰符字段1746——其内容区分指定存储器访问与不指定存储器访问的通用矢量指令格式的指令的出现;即,在无存储器访问1705指令模板与存储器访问1720指令模板之间。存储器访问操作读取和/或写入存储器层次结构(在一些情况下,使用寄存器中的值指定源和/或目标地址),而非存储器访问操作不这样做(例如,源和目标是寄存器)。虽然在一个实施例中,该字段还在用于执行存储器地址计算的三种不同方式之间进行选择,但是替选实施例可以支持用于执行存储器地址计算的更多、更少或不同的方式。
扩充操作字段1750——其内容区分除了基本操作之外还要执行的各种不同操作中的哪一个。该字段是特定于上下文的。在本发明的一个实施例中,该字段划分为类字段1768、α字段1752和β字段1754。扩充操作字段1750允许在单个指令中而不是2、3或4个指令中执行共同的操作群组。
缩放字段1760——其内容允许缩放索引字段的内容以用于存储器地址生成(例如,用于使用2scale*索引+基址的地址生成)。
位移字段1762A——其内容用作存储器地址生成的部分(例如,用于使用2scale*索引+基址+位移的地址生成)。
位移因子字段1762B(注意,位移字段1762A直接在位移因子字段1762B上的并置指示使用其中一个或另一个)——其内容用作地址生成的部分;它指定待按存储器访问的大小(N)缩放的位移因子,该因子——其中,N是存储器访问中的字节的数量(例如,用于使用2scale*索引+基址+缩放位移的地址生成)。冗余的低阶位被忽略,并且因此,位移因子字段的内容乘以存储器操作数总大小(N),以生成待在计算有效地址中使用的最终位移。N的值由处理器硬件在运行时基于(本文稍后描述的)完整操作码字段1774和数据操纵字段1754C确定。位移字段1762A和位移因子字段1762B在它们不用于无存储器访问1705指令模板的意义上是可选的,和/或不同的实施例可以仅实现二者之一或不实现二者。
数据元素宽度字段1764——其内容区分待使用多个数据元素宽度中的哪一个(在一些实施例中,用于所有指令;在其他实施例中,仅用于一些指令)。如果仅支持一个数据元素宽度和/或使用操作码的一些方面支持数据元素宽度,则该字段是可选的。
写入掩码字段1770——其内容在每数据元素位置的基础上控制目标矢量操作数中的该数据元素位置是否反映基本操作和扩充操作的结果。类A指令模板支持合并写入掩码化,而类B指令模板支持合并和归零写入掩码化。当合并时,矢量掩码允许在执行(由基本操作和扩充操作指定的)任何操作期间保护目标中的任何元素集免受更新;在其他实施例中,保留目标的每个元素的旧值,其中,对应掩码位具有0。相反,当归零矢量掩码允许在执行(由基本操作和扩充操作指定的)任何操作期间将目标中的任何元素集归零;在一个实施例中,当对应掩码位具有0值时,目标的元素设置为0。此功能的子集是用于控制正在执行的操作的矢量长度(即,从第一个到最后一个的正受修改的元素的跨度)的能力;然而,受修改的元素不一定是连续的。因此,写入掩码字段1770允许部分矢量操作,包括加载、存储、算术、逻辑等。虽然描述本发明写入掩码字段1770的内容选择包含待使用的写入掩码的多个写入掩码寄存器之一(并且因此写入掩码字段1770的内容间接标识待执行的掩码化)的实施例,但是替选实施例替代地或附加地允许掩码写入字段1770的内容直接指定待执行的掩码化。
立即数字段1772——其内容允许指定立即数。该字段是可选的,因为它不存在于不支持立即数的通用矢量友好格式的实现方式中,并且它不存在于不使用立即数的指令中。
类字段1768——其内容在不同类的指令之间进行区分。参照图17A-图17B,该字段的内容在类A指令与类B指令之间进行选择。在图17A-图17B中,圆角正方形用以指示特定值存在于字段中(例如,图17A-图17B中分别用于类字段1768的类A 1768A和类B 1768B)。
类A的指令模板
在类A的非存储器访问1705指令模板的情况下,α字段1752解释为RS字段1752A,其内容区分待执行不同扩充操作类型中的哪一种(例如,对于无存储器访问、取整类型操作1710和无存储器访问、数据变换类型操作1715指令模板,分别指定取整1752A.1和数据变换1752A.2),而β字段1754区分待执行所指定的的哪个操作。在无存储器访问1705指令模板中,不存在缩放字段1760、位移字段1762A和位移缩放字段1762B。
无存储器访问指令模板——完全取整控制类型操作
在无存储器访问完全取整控制类型操作1710指令模板中,β字段1754解释为取整控制字段1754A,其内容提供静态取整。虽然在本发明的描述的实施例中,取整控制字段1754A包括抑制所有浮点异常(SAE)字段1756和取整操作控制字段1758,但是替选实施例可以支持可以将这两个概念编码到相同的字段中,或仅具有概念/字段中的一个或另一个(例如,可以仅具有取整操作控制字段1758)。
SAE字段1756——其内容区分是否禁用异常事件报告;当SAE字段的1756内容指示启用抑制时,给定指令不报告任何种类的浮点异常标志,并且不引发任何浮点异常处理程序。
取整操作控制字段1758——其内容区分要执行取整操作群组中的哪一个(例如,向上取整、向下取整、向零取整和向最近取整)。因此,取整操作控制字段1758允许在每指令的基础上改变取整模式。在处理器包括用于指定取整模式的控制寄存器的本发明的一个实施例中,取整操作控制字段1750的内容超控该寄存器值。
无存储器访问指令模板——数据转译类型操作
在无存储器访问数据变换类型操作1715指令模板中,β字段1754解释为数据变换字段1754B,其内容区分待执行多个数据变换中的哪一个(例如,无数据变换、混合、广播)。
在类A的存储器访问1720指令模板的情况下,α字段1752解释为驱逐提示字段1752B,其内容区分待使用驱逐提示中的哪一个(在图17A中,对于存储器访问、时间1725指令模板和存储器访问,非时间1730指令模板,分别指定时间1752B.1和非时间1752B.2),而β字段1754解释为数据操纵字段1754C,其内容区分待执行多个数据操纵操作(也称为原语)中的哪一个(例如,无操作;广播;源的上转换;和目标的下转换)。存储器访问1720指令模板包括缩放字段1760,并且可选地包括位移字段1762A或位移缩放字段1762B。
在转换支持的情况下,矢量存储器指令执行来自存储器的矢量加载和去往存储器的矢量存储。如常规矢量指令一样,矢量存储器指令以数据元素式方式将数据从/向存储器转移,其中,实际转移的元素由选择为写入掩码的矢量掩码的内容决定。
存储器访问指令模板——时间
时间数据是可能足够快地待重用以受益于缓存化的数据。然而,这是提示,并且不同的处理器可能以不同的方式(包括:完全忽略提示)实现它。
存储器访问指令模板——非时间
非时间数据是不太可能足够快地待重用以受益于第1级缓存中的缓存化的数据,并且应被给予关于驱逐的优先级。然而,这是提示,并且不同的处理器可能以不同的方式(包括:完全忽略提示)实现它。
类B的指令模板
在类B的指令模板的情况下,α字段1752解释为写入掩码控制(Z)字段1752C,其内容区分由写入掩码字段1770控制的写入掩码化应合并还是归零。
在类B的非存储器访问1705指令模板的情况下,β字段1754的部分解释为RL字段1757A,其内容区分待执行不同扩充操作类型中的哪一种(例如,对于无存储器访问、写入掩码控制、部分取整控制类型操作1712指令模板和无存储器访问、写入掩码控制、VSIZE类型操作1717指令模板,分别指定取整1757A.1和矢量长度(VSIZE)1757A.2),而β字段1754的其余部分区分待执行所指定的类型的操作中的哪一个。在无存储器访问1705指令模板中,不存在缩放字段1760、位移字段1762A和位移缩放字段1762B。
在无存储器访问、写入掩码控制、部分取整控制类型操作1710指令模板中,β字段1754的其余部分解释为取整操作字段1759A,并且异常事件报告被禁用(给定指令不报告任何种类的浮点异常标志,并且不引发任何浮点异常处理程序)。
取整操作控制字段1759A——正如取整操作控制字段1758,其内容区分待执行取整操作群组中的哪一个(例如,向上取整、向下取整、向零取整和向最近取整)。因此,取整操作控制字段1759A允许在每指令的基础上改变取整模式。在处理器包括用于指定取整模式的控制寄存器的本发明的一个实施例中,取整操作控制字段1750的内容超控该寄存器值。
在无存储器访问、写入掩码控制、VSIZE类型操作1717指令模板中,β字段1754的其余部分解释为矢量长度字段1759B,其内容区分待执行多个数据矢量长度中的哪一个(例如,128、256或512字节)。
在类B的存储器访问1720指令模板的情况下,β字段1754的部分解释为广播字段1757B,其内容区分是否待执行广播类型数据操纵操作,而β字段1754的其余部分解释为矢量长度字段1759B。存储器访问1720指令模板包括缩放字段1760,并且可选地包括位移字段1762A或位移缩放字段1762B。
关于通用矢量友好指令格式1700,示出完整操作码字段1774,其包括格式字段1740、基本操作字段1742和数据元素宽度字段1764。虽然示出完整操作码字段1774包括所有这些字段的一个实施例,但是在并非支持它们中的全部的实施例中,完整操作码字段1774包括少于全部的这些字段。完整操作码字段1774提供操作代码(操作码)。
扩充操作字段1750、数据元素宽度字段1764和写入掩码字段1770允许以通用矢量友好指令格式在每指令的基础上指定这些特征。
写入掩码字段和数据元素宽度字段的组合创建类型化指令,因为它们允许基于不同的数据元素宽度应用掩码。
类A和类B内发现的各种指令模板在不同情况下是有益的。在本发明的一些实施例中,不同的处理器或处理器内的不同内核可以支持仅类A、仅类B或二者。例如,针对通用计算的高性能通用乱序内核可以仅支持类B,主要针对图形和/或科学(吞吐量)计算的内核可以仅支持类A,而针对二者的内核可以支持二者(当然,具有来自这两个类的模板和指令的某种混合但是并非来自这两个类的所有模板和指令的内核处于本发明的范围内)。此外,单个处理器可以包括多个内核,其全部支持相同的类,或者其中,不同的内核支持不同的类。例如,在带有分离的图形和通用内核的处理器中,主要针对图形和/或科学计算的图形内核之一可以仅支持类A,而通用内核中的一个或多个可以是针对仅支持类B的通用计算的带有乱序执行和寄存器重命名的高性能通用内核。另一没有分离的图形内核的处理器可以包括支持类A和类B二者的一个更多通用有序或乱序内核。当然,在本发明的不同实施例中,来自一个类的特征也可以实现于另一类中。以高级语言编写的程序将被置于(例如,及时编译或静态编译为)各种不同的可执行形式,包括:1)仅具有用于执行的目标处理器所支持的类的指令的形式;或2)具有使用所有类的指令的不同组合编写的替代例程并具有基于当前正在执行代码的处理器所支持的指令选择要执行的例程的控制流代码的形式。
示例性特定矢量友好指令格式
图18A-图18C是示出根据本发明实施例的示例性特定矢量友好指令格式的框图。图18A示出特定矢量友好指令格式1800,其在其指定字段的位置、大小、解释和顺序以及用于这些字段中的一些的值的意义上是特定的。特定矢量友好指令格式1800可以用以扩展x86指令集,并且因此一些字段与现有x86指令集及其扩展(例如,AVX)中使用的字段相似或相同。这种格式与带有扩展的现有x86指令集的前缀编码字段、实际操作码字节字段、MODR/M字段、SIB字段、位移字段和立即数字段保持一致。示出来自图18A-图18C的字段映射到的来自17A-图17B的字段。
应理解,虽然出于说明性目的在通用矢量友好指令格式1700的上下文中参照特定矢量友好指令格式1800描述本发明的实施例,但是除非在声明的情况下,否则本发明不限于特定矢量友好的指令格式1800。例如,通用矢量友好指令格式1700预期用于各种字段的各种可能大小,而特定矢量友好指令格式1800示出为具有特定大小的字段。通过特定示例的方式,虽然数据元素宽度字段1764以特定矢量友好指令格式1800示出为一位字段,但是本发明不限于此(即,通用矢量友好指令格式1700预期其他大小的数据元素宽度字段1764)。
通用矢量友好指令格式1700包括以图18A所示的顺序在下文列出的以下字段。
EVEX前缀(字节0-3)1802——以四字节形式编码。
格式字段1740(EVEX字节0,位[7:0])——第一字节(EVEX字节0)是格式字段1740,并且它包含0x62(在本发明的一个实施例中,用于区分矢量友好指令格式的唯一值)。
第二至第四字节(EVEX字节1-3)包括提供特定能力的多个位字段。
REX字段1805(EVEX字节1,位[7-5])——由EVEX.R位字段(EVEX字节1,位[7]-R)、EVEX.X位字段(EVEX字节1,位[6]–X)和EVEX.B字节1,位[5]–B)构成。EVEX.R、EVEX.X和EVEX.B位字段提供与对应VEX位字段相同的功能,并使用1s补码形式(即,ZMM0编码为1111B,ZMM15编码为0000B)加以编码。指令的其他字段对本领域已知的寄存器索引的低三位(rrr、xxx和bbb)进行编码,以使得可以通过添加EVEX.R、EVEX.X和EVEX.B形成Rrrr、Xxxx和Bbbb。
REX'字段1810——这是REX'字段1810的第一部分并且是EVEX.R'位字段(EVEX字节1,位[4]-R'),其用以对扩展的32寄存器集合中的高16或低16个进行编码。在本发明的一个实施例中,该位以及如下所指示的其他位以位反转格式被存储,以与实际操作码字节为62的BOUND指令(在公知x86 32位模式下)区分,但是在(以下所描述的)MOD R/M字段中不接受MOD字段中的11的值;本发明的替选实施例不以反转格式存储该位和以下其他所指示的位。1的值用以对低16个寄存器进行编码。换言之,通过组合EVEX.R'、EVEX.R和来自其他字段的其他RRR组合形成R'Rrrr。
操作码映射字段1815(EVEX字节1,位[3:0]–mmmm)——其内容对隐含的前导操作码字节(0F、0F 38或0F 3)进行编码。
数据元素宽度字段1764(EVEX字节2,位[7]-W)——由符号EVEX.W表示。EVEX.W用以定义数据类型(32位数据元素或64位数据元素)的粒度(大小)。
EVEX.vvvv 1820(EVEX字节2,位[6:3]-vvvv)——EVEX.vvvv的作用可以包括以下:1)EVEX.vvvv对以反转(1s补码)形式指定并且对带有2个或更多源操作数的指令有效的第一源寄存器操作数进行编码;2)EVEX.vvvv对以1s补码形式指定以用于特定矢量移位的目标寄存器操作数进行编码;或3)EVEX.vvvv不对任何操作数进行编码,该字段被保留并且应包含1111b。因此,EVEX.vvvv字段1820对以反转(1s补码)形式存储的第一源寄存器指定符的4个低阶位进行编码。取决于指令,额外不同的EVEX位字段用以将指定符大小扩展到32个寄存器。
EVEX.U 1768类字段(EVEX字节2,位[2]-U)——如果EVEX.U=0,则它指示类A或EVEX.U0;如果EVEX.U=1,则它指示类B或EVEX.U1。
前缀编码字段1825(EVEX字节2,位[1:0]-pp)——为基本操作字段提供附加位。除了以EVEX前缀格式提供对遗留SSE指令的支持之外,这还具有压缩SIMD前缀的益处(并非需要一个字节以表达SIMD前缀,EVEX前缀只需要2位)。在一个实施例中,为了支持使用遗留格式和EVEX前缀格式二者的SIMD前缀(66H、F2H、F3H)的遗留SSE指令,这些遗留SIMD前缀被编码到SIMD前缀编码字段中;并在运行时扩展为遗留SIMD前缀,然后提供给解码器的PLA(因此PLA可以执行这些遗留指令的遗留和EVEX格式二者而无需修改)。虽然较新的指令可以直接使用EVEX前缀编码字段的内容作为操作码扩展,但是特定实施例关于一致性以相似方式扩展但允许由这些遗留SIMD前缀指定不同的含义。替选实施例可以重新设计PLA以支持2位SIMD前缀编码,并且因此不需要扩展。
α字段1752(EVEX字节3,位[7]-EH;也称为EVEX.EH、EVEX.rs、EVEX.RL、EVEX.写入掩码控制和EVEX.N;也用α示出)-如前所述,此字段是特定于上下文的。
β字段1754(EVEX字节3,位[6:4]-SSS,也称为EVEX.s2-0、EVEX.r2-0、EVEX.rr1、EVEX.LL0、EVEX.LLB;也用βββ示出)——如前所述,此字段是特定于上下文的。
REX'字段1810——这是REX'字段的剩余部分并且是EVEX.V'位字段(EVEX字节3,位[3]-V'),其可以用以对扩展的32寄存器集合的高16或低16个进行编码。以位反转格式存储该位。1的值用以对低16个寄存器进行编码。换言之,通过组合EVEX.V'、EVEX.vvvv形成V'VVVV。
写入掩码字段1770(EVEX字节3,位[2:0]-kkk)——其内容指定写入掩码寄存器中的寄存器的索引,如前所述。在本发明的一个实施例中,特定值EVEX.kkk=000具有暗指对于特定指令不使用写入掩码的特殊行为(这可以通过包括使用硬连线到所有指令的写入掩码或绕过掩码化硬件的硬件的多种方式被实现)。
实际操作码字段1830(字节4)也称为操作码字节。在该字段中指定操作码的部分。
MOD R/M字段1840(字节5)包括MOD字段1842、Reg字段1844和R/M字段1846。如前所述,MOD字段1842的内容在存储器访问与非存储器访问操作之间进行区分。Reg字段1844的作用可以概括为两种情况:对目标寄存器操作数或源寄存器操作数进行编码,或者被视为操作码扩展而不用以对任何指令操作数进行编码。R/M字段1846的作用可以包括:对引用存储器地址的指令操作数进行编码,或者对目标寄存器操作数或源寄存器操作数进行编码。
缩放、索引、基本(SIB)字节(字节6)——如前所述,缩放字段的1850内容用于存储器地址生成。SIB.xxx 1854和SIB.bbb1856——先前已经关于寄存器索引Xxxx和Bbbb引用这些字段的内容。
位移字段1762A(字节7-10)——当MOD字段1842包含10时,字节7-10是位移字段1762A,并且它以与遗留32位位移(disp32)相同地工作,并且以字节粒度工作。
位移因子字段1762B(字节7)——当MOD字段1842包含01时,字节7是位移因子字段1762B。该字段的位置与以字节粒度工作的遗留x86指令集8位位移(disp8)的位置相同。由于disp8是符号扩展的,因此它只能在-128至127字节偏移之间进行寻址;就64字节缓存行而言,disp8使用只能设置为四个真正有用的值-128、-64、0和64的8位;由于经常需要更大的范围,因此使用disp32;然而,disp32需要4个字节。与disp8和disp32相比,位移因子字段1762B是disp8的重新解释;当使用位移因子字段1762B时,实际位移由位移因子字段的内容乘以存储器操作数访问的大小(N)确定。这种类型的位移称为disp8*N。这减少平均指令长度(用于位移但是带有更大范围的单个字节)。这种压缩的位移基于有效位移是存储器访问的粒度的倍数的假设,并且因此不需要对地址偏移的冗余低阶位进行编码。换言之,位移因子字段1762B替代遗留x86指令集的8位位移。因此,位移因子字段1762B的与x86指令集8位位移相同的方式加以编码(因此没有ModRM/SIB编码规则的改变),其中,仅例外是disp8被重载为disp8*N。换言之,不存在编码规则或编码长度的改变,而仅存在硬件对位移值的解释的改变(这需要通过存储器操作数的大小缩放位移以获得逐字节地址偏移)。立即数字段1772如前所述进行操作。
完整操作码字段
图18B是示出根据本发明的一个实施例的构成完整操作码字段1774的特定矢量友好指令格式1800的字段的框图。具体而言,完整操作码字段1774包括格式字段1740、基本操作字段1742和数据元素宽度(W)字段1764。基本操作字段1742包括前缀编码字段1825、操作码映射字段1815和真正操作码字段1830。
寄存器索引字段
图18C是示出根据本发明的一个实施例的构成寄存器索引字段1744的特定矢量友好指令格式1800的字段的框图。具体而言,寄存器索引字段1744包括REX字段1805、REX'字段1810、MODR/M.reg字段1844、MODR/M.r/m字段1846、VVVV字段1820、xxx字段1854和bbb字段1856。
扩充操作字段
图18D是示出根据本发明一个实施例的构成扩充操作字段1750的特定矢量友好指令格式1800的字段的框图。当类(U)字段1768包含0时,它表示EVEX.U0(类A 1768A);当它包含1时,它表示EVEX.U1(类B 1768B)。当U=0且MOD字段1842包含11(表示无存储器访问操作)时,α字段1752(EVEX字节3,位[7]–EH)解释为rs字段1752A。当rs字段1752A包含1(取整1752A.1)时,β字段1754(EVEX字节3,位[6:4]-SSS)解释为取整控制字段1754A。取整控制字段1754A包括一位SAE字段1756和两位取整操作字段1758。当rs字段1752A包含0(数据变换1752A.2)时,β字段1754(EVEX字节3,位[6:4]-SSS)解释为三位数据变换字段1754B。当U=0且MOD字段1842包含00、01或10(表示存储器访问操作)时,α字段1752(EVEX字节3,位[7]–EH)解释为驱逐提示(EH)字段1752B,并且β字段1754(EVEX字节3,位[6:4]-SSS)解释为三位数据操纵字段1754C。
当U=1时,α字段1752(EVEX字节3,位[7]-EH)解释为写入掩码控制(Z)字段1752C。当U=1且MOD字段1842包含11(表示无存储器访问操作)时,部分β字段1754(EVEX字节3,位[4]-S0)解释为RL字段1757A;当它包含1(取整1757A.1)时,其余β字段1754(EVEX字节3,位[6-5]-S2-1)解释为取整操作字段1759A,而当RL字段1757A包含0(VSIZE 1757.A2)其余β字段1754(EVEX字节3,位[6-5]-S2-1)解释为矢量长度字段1759B(EVEX字节3,位[6-5]-L1-0)。当U=1且MOD字段1842包含00、01或10(表示存储器访问操作)时,β字段1754(EVEX字节3,位[6:4]-SSS)解释为矢量长度字段1759B(EVEX字节3,位[6-5]-L1-0)和广播字段1757B(EVEX字节3,位[4]-B)。
示例性寄存器架构
图19是根据本发明一个实施例的寄存器架构1900的框图。在所示实施例中,存在512位宽的32个矢量寄存器1910;这些寄存器称为zmm0至zmm31。低16个zmm寄存器的低阶256位重叠在寄存器ymm0-16上。低16个zmm寄存器的低阶128位(ymm寄存器的低阶128位)重叠在寄存器xmm0-15上。特定矢量友好指令格式1800对这些重叠的寄存器文件进行操作,如下表所示。
换言之,矢量长度字段1759B在最大长度与一个或多个其他较短长度之间进行选择,其中,每个这样的较短长度是前一长度的一半;没有矢量长度字段1759B的指令模板对最大矢量长度进行操作。此外,在一个实施例中,特定矢量友好指令格式1800的类B指令模板对封装的或标量单/双精度浮点数据和封装的或标量整数数据进行操作。标量操作是对zmm/ymm/xmm寄存器中的最低阶数据元素位置执行的操作;取决于实施例,高阶数据元素位置要么保持与它们在指令之前相同,要么归零。
写入掩码寄存器1915——在所示实施例中,存在大小方面均64位的8个写入掩码寄存器(k0至k7)。在替选实施例中,写入掩码寄存器1915在大小方面是16位。如前所述,在本发明的一个实施例中,矢量掩码寄存器k0不能用作写入掩码;当通常将指示k0的编码用于写入掩码时,它选择0xFFFF的硬连线写入掩码,有效地禁用用于该指令的写入掩码化。
通用寄存器1925——在所示实施例中,存在十六个64位通用寄存器,其与现有x86寻址模式一起用以寻址存储器操作数。这些寄存器由名称RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8至R15引用。
标量浮点栈寄存器文件(x87栈)1945,在其上混叠MMX封装整数平面寄存器文件1950——在所示实施例中,x87栈是用以使用x87指令集扩展对32/64/80位浮点数据执行标量浮点操作的八元素栈;而MMX寄存器用以对64位封装整数数据执行操作以及保存用于在MMX与XMM寄存器之间执行的一些操作的操作数。
本发明的替选实施例可以使用更宽或更窄的寄存器。此外,本发明的替选实施例可以使用更多、更少或不同的寄存器文件和寄存器。
示例性内核架构、处理器和计算机架构
可以通过不同的方式、出于不同的目的并且在不同的处理器中实现处理器内核。例如,此类内核的实现方式可以包括:1)针对通用计算的通用有序核;2)针对通用计算的高性能通用乱序内核;3)主要针对图形和/或科学(吞吐量)计算的专用内核。不同处理器的实现方式可以包括:1)CPU,其包括一个或多个针对通用计算的通用有序内核和/或一个或多个针对通用计算的通用乱序内核;和2)协处理器,其包括一个或多个主要针对图形和/或科学(吞吐量)的专用内核。这些不同的处理器导致不同的计算机系统架构,其可以包括:1)与CPU分离的芯片上的协处理器;2)与CPU相同的封装中的分离管芯上的协处理器;3)与CPU相同的管芯上的协处理器(在此情况下,这种协处理器有时称为专用逻辑(例如,集成图形和/或科学(吞吐量)逻辑),或称为专用内核);4)片上系统,其可以在同一管芯上包括所描述的CPU(有时称为应用内核或应用处理器)、上述协处理器和附加功能。接下来描述示例性内核架构,后接示例性处理器和计算机架构的描述。
示例性内核架构
有序和乱序内核框图
图20A是示出根据本发明实施例的示例性有序流水线和示例性寄存器重命名、乱序发布/执行流水线二者的框图。图20B是示出根据本发明的实施例的待包括于处理器中的有序架构内核的示例性实施例和示例性寄存器重命名、乱序发布/执行架构内核二者的框图。图20A-图20B中的实线框示出有序流水线和有序内核,而虚线框的可选添加示出寄存器重命名、乱序发布/执行流水线和内核。考虑到有序方面是乱序方面的子集,将描述乱序方面。
在图20A中,处理器流水线2000包括获取级2002、长度解码级2004、解码级2006、分配级2008、重命名级2010、调度(也称为指派或发布)级2012、寄存器读取/存储器读取级2014、执行级2016、回写/存储器写入级2018、异常处理级2022和提交级2024。
图20B示出处理器内核2090,其包括耦合到执行引擎单元2050的前端单元2030,并且二者耦合到存储器单元2070。内核2090可以是精简指令集计算(RISC)内核、复杂指令集计算(CISC)内核、超长指令字(VLIW)内核或混合或替代内核类型。作为又一选项,内核2090可以是专用内核(例如,网络或通信内核、压缩引擎、协处理器内核、通用计算图形处理单元(GPGPU)内核、图形内核等)。
前端单元2030包括分支预测单元2032,分支预测单元2032耦合到指令缓存单元2034,指令缓存单元2034耦合到指令转译后备缓冲器(TLB)单元2036,指令转译后备缓冲器(TLB)单元2036耦合到指令获取单元2038,指令获取单元2038耦合到解码单元2040。解码单元2040(或解码器)可以对指令进行解码,并生成解码自、或以其他方式反映、或导出自原始指令的一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号作为输出。可以使用各种不同的机制实现解码单元2040。合适的机制的示例包括但不限于查找表、硬件实现方式、可编程逻辑阵列(PLA)、微码只读存储器(ROM)等。在一个实施例中,内核2090包括微码ROM或存储用于(例如,解码单元2040中,或以其他方式,前端单元2030内的)特定宏指令的微代码的其他介质。解码单元2040耦合到执行引擎单元2050中的重命名/分配器单元2052。
执行引擎单元2050包括重命名/分配器单元2052,其耦合到退离单元2054和一个或多个调度器单元2056的集合。调度器单元2056表示任何数量的不同调度器,包括保留站、中央指令窗口等。调度器单元2056耦合到物理寄存器文件单元2058。物理寄存器文件单元2058中的每一个表示一个或多个物理寄存器文件,其中的不同寄存器文件存储一种或多种不同的数据类型(例如,标量整数、标量浮点、封装整数、封装浮点、矢量整数、矢量浮点,状态(例如,作为待执行的下一指令的地址的指令指针)等)。在一个实施例中,物理寄存器文件单元2058包括矢量寄存器单元、写入掩码寄存器单元和标量寄存器单元。这些寄存器单元可以提供架构矢量寄存器、矢量掩码寄存器和通用寄存器。物理寄存器文件单元2058与退离单元2054重叠,以示出可以(例如,使用重新排序缓冲器和退离寄存器文件;使用未来文件、历史缓冲器和退离寄存器文件;使用寄存器映射和寄存器池;等)实现寄存器重命名和乱序执行的各种方式。退离单元2054和物理寄存器文件单元2058耦合到执行集群2060。执行集群2060包括一个或多个执行单元2062的集合和一个或多个存储器访问单元2064的集合。执行单元2062可以且对各种类型的数据(例如,标量浮点、封装整数、封装浮点、矢量整数、矢量浮点)执行各种操作(例如,移位、加法、减法、乘法)。虽然一些实施例可以包括专用于特定功能或功能集合的数个执行单元,但是其他实施例可仅包括一个执行单元或全部执行所有功能的多个执行单元。调度器单元2056、物理寄存器文件单元2058和执行集群2060示出为可能地是多个,因为特定实施例对于特定类型的数据/操作创建分离的流水线(例如,标量整数流水线、标量浮点/封装整数/封装浮点/矢量整数/矢量浮点流水线和/或存储器访问流水线,其均具有它们自己的调度程序单元、物理寄存器文件单元和/或执行集群——并且在分离的存储器访问流水线的情况下,实现仅该流水线的执行集群具有存储器访问单元2064的特定实施例)。还应理解,在使用分离的流水线的情况下,这些流水线中的一个或多个可以是乱序发布/执行,而其余是有序的。
存储器访问单元2064的集合耦合到存储器单元2070,其包括TLB单元2072,TLB单元2072耦合到数据缓存单元2074,数据缓存单元2074耦合到层级2(L2)缓存单元2076。在一个示例性实施例中,存储器访问单元2064可以包括加载单元、存储地址单元和存储数据单元,其中的每一个耦合到存储器单元2070中的数据TLB单元2072。指令缓存单元2034进一步耦合到存储器单元2070中的层级2(L2)缓存单元2076。L2缓存单元2076耦合到一个或多个其他层级的缓存,并最终耦合到主存储器。
通过示例的方式,示例性寄存器重命名、乱序发布/执行内核架构可以如下实现流水线2000:1)指令获取2038执行获取和长度解码级2002和2004;2)解码单元2040执行解码级2006;3)重命名/分配器单元2052执行分配级2008和重命名级2010;4)调度器单元2056执行调度级2012;5)物理寄存器文件单元2058和存储器单元2070执行寄存器读取/存储器读取级2014;执行集群2060对执行级2016进行执行;6)存储器单元2070和物理寄存器文件单元2058执行回写/存储器写入级2018;7)在异常处置级2022中可能涉及各种单元;以及8)退离单元2054和物理寄存器文件单元2058执行提交级2024。
内核2090可以支持一个或多个指令集(例如,x86指令集(带有已经添加有新版本的一些扩展);加利福尼亚州桑尼维尔MIPS Technologies的MIPS指令集;加利福尼亚州桑尼维尔ARM Holdings的ARM指令集(带有可选附加扩展(例如,NEON)),包括本文描述的指令。在一个实施例中,内核2090包括用于支持封装数据指令集扩展(例如,AVX1、AVX2)的逻辑,由此允许使用封装数据执行由许多多媒体应用使用的操作。
应理解,内核可以支持多线程(执行两个或更多个并行的操作或线程集合),并且可以通过包括以下方式的多种方式这样做:时间切片式多线程、同时多线程(其中,单个物理内核提供用于物理内核正同时多线程化的线程中的每一个的逻辑内核)、或其组合(例如,时间切片式获取和解码以及此后的同时多线程化(例如,在超线程技术中))。
虽然在乱序执行的上下文中描述寄存器重命名,但是应理解,寄存器重命名可以用在有序架构中。虽然处理器的所示实施例还包括分离的指令和数据缓存单元2034/2074和共享的L2缓存单元2076,但是替选实施例可以具有用于指令和数据二者的单个内部缓存(例如,比如层级1(L1)内部缓存、或多个层级的内部缓存)。在一些实施例中,系统可以包括内部缓存和处于内核和/或处理器外部的外部缓存的组合。替代地,所有缓存可以处于内核和/或处理器的外部。
具体示例性有序内核架构
图21A-图21B示出更具体的示例性有序内核架构的框图,所述内核将是芯片中的(包括相同类型和/或不同类型的其他内核的)若干逻辑块之一。取决于应用,逻辑块通过高带宽互连网络(例如,环形网络)与一些固定功能逻辑、存储器I/O接口和其他必要的I/O逻辑进行通信。
图21A是根据本发明的实施例的单个处理器内核连同对与管芯上互连网络2102的连接以及其二级(L2)缓存2104的本地子集的的框图。在一个实施例中,指令解码器2100支持带有封装数据指令集扩展的x86指令集。L1缓存2106允许缓存存储器对标量和矢量单元的低时延访问。虽然在一个实施例中(为了简化设计),标量单元2108和矢量单元2110使用分离的寄存器集合(分别,标量寄存器2112和矢量寄存器2114)并且在它们之间转移的数据写入存储器且然后从一级(L1)缓存2106读回,但本发明的替选实施例可以使用不同的方法(例如,使用单个寄存器集合或包括允许数据在两个寄存器文件之间转移而不被写入和读回的通信路径)。
L2缓存2104的本地子集是每处理器内核一个的划分为分离的本地子集的全局L2缓存的部分。每个处理器内核具有对其自己的L2缓存2104的本地子集的直接访问路径。由处理器内核读取的数据存储在其L2缓存子集2104中,并且可以与访问它们自己的本地L2缓存子集的其他处理器内核并行而快速地加以访问。由处理器内核写入的数据存储在其自己的L2缓存子集2104中,并在必要时从其他子集刷新。环形网络确保关于共享数据的一致性。环形网络是双向的,以允许代理(例如,处理器内核、L2缓存和其他逻辑块等)在芯片内相互进行通信。每个环形数据路径是每个方向1012位宽。
图21B是根据本发明的实施例的图21A的处理器内核的部分的放大视图。图21B包括L1缓存2104的L1数据缓存2106A部分以及关于矢量单元2110和矢量寄存器2114的更多细节。具体而言,矢量单元2110是16宽矢量处理单元(VPU)(参见16宽ALU 2128),其执行一个或多个整数、单精度浮点数和双精度浮点数指令。VPU支持用混合单元2120混合寄存器输入,用数字转换单元2122A-B进行数字转换,以及用复制单元2124对存储器输入进行复制。写入掩码寄存器2126允许预测所得矢量写入。
图22是根据本发明实施例的可以具有多于一个的内核、可以具有集成存储器控制器并且可以具有集成图形的处理器2200的框图。图22中的实线框示出具有单个内核2202A、系统代理2210、一个或多个总线控制器单元2216的集合的处理器2200,而虚线框的可选添加示出具有多个内核2202A-N、系统代理单元2210中的一个或多个集成存储器控制器单元2214的集合和专用逻辑2208的替选处理器2200。
因此,处理器2200的不同实现方式可以包括:1)CPU,其中,专用逻辑2208是集成图形和/或科学(吞吐量)逻辑(其可以包括一个或多个内核),并且内核2202A-N是一个或多个通用内核(例如,通用有序内核、通用乱序内核、二者的组合);2)协处理器,其中,内核2202A-N是主要针对图形和/或科学(吞吐量)的大数量的专用内核;和3)协处理器,其中,内核2202A-N是大数量的通用有序内核。因此,处理器2200可以是通用处理器、协处理器或专用处理器(例如,比如网络或通信处理器、压缩引擎、图形处理器、GPGPU(通用图形处理单元)、高吞吐量多集成内核(MIC)协处理器(包括30个或更多个内核)、嵌入式处理器等)。可以在一个或多个芯片上实现处理器。处理器2200可以是一个或多个基板的部分,和/或可以在一个或多个基板上使用多种工艺技术(例如,BiCMOS、CMOS或NMOS)中的任何一种来实现。
存储器层次结构包括核内的一个或多个级缓存、一个或多个共享缓存单元2206或集合、以及耦合到集成存储器控制器单元2214的集合的外部存储器(未示出)。共享缓存单元2206的集合可以包括一个或多个中级缓存(例如,2级(L2)、3级(L3)、4级(L4)或其他级缓存、最后级缓存(LLC)和/或其组合)。虽然在一个实施例中,基于环的互连单元2212互连集成图形逻辑2208、共享缓存单元2206的集合和系统代理单元2210/集成存储器控制器单元2214,但是替选实施例可以使用任何数量的公知技术以用于互连这些单元。在一个实施例中,在一个或多个缓存单元2206与内核2202-A-N之间保持一致性。
在一些实施例中,内核2202A-N中的一个或多个有多线程处理的能力。系统代理2210包括那些协调并且操作内核2202A-N的组件。系统代理单元2210可以包括例如功率控制单元(PCU)和显示单元。PCU可以是或包括调节内核2202A-N和集成图形逻辑2208的功率状态所需的逻辑和组件。显示单元用于驱动一个或多个外部连接的显示器。
内核2202A-N就架构指令集而言可以是同构的或异构的;也就是说,内核2202A-N中的两个或更多个可以能够执行相同的指令集,而其他核可能仅能够执行该指令集的子集或不同的指令集。
示例性计算机架构
图23-图24是示例性计算机架构的框图。用于膝上型设备、台式机、手持式PC、个人数字助理、工程工作站、服务器、网络设备、网络集线器、交换机、嵌入式处理器、数字信号处理器(DSP)、图形设备、视频游戏设备、机顶盒、微控制器、蜂窝电话、便携式媒体播放器、手持设备和各种其他电子设备的本领域已知的其他系统设计和配置也是合适的。通常,能够并入本文所公开的处理器和/或其他执行逻辑的大量系统或电子设备通常是合适的。
现在参照图23,示出的是根据本发明一个实施例的系统2300的框图。系统2300可以包括一个或多个处理器2310、2315,其耦合到控制器中枢2320。在一个实施例中,控制器中枢2320包括图形存储器控制器中枢(GMCH)2390和输入/输出中枢(IOH)2350(其可以处于分离的芯片上);GMCH 2390包括存储器2340和协处理器2345耦合到的存储器和图形控制器;IOH 2350将输入/输出(I/O)设备2360耦合到GMCH 2390。替代地,存储器和图形控制器之一或二者集成在处理器内(如本文所述),存储器2340和协处理器2345直接耦合到处理器2310和带有IOH 2350的单个芯片中的控制器中枢2320。
在图23中用虚线表示附加处理器2315的可选性质。每个处理器2310、2315可以包括本文描述的处理内核中的一个或多个,并且可以是处理器2200的某个版本。
存储器2340可以是例如动态随机存取存储器(DRAM)、相变存储器(PCM)或二者的组合。对于至少一个实施例,控制器中枢2320经由多点总线(例如,前端总线(FSB))、点对点接口(例如,QuickPath互连(QPI))或相似连接2395与处理器2310、2315进行通信。
在一个实施例中,协处理器2345是专用处理器(例如,比如高吞吐量MIC处理器、网络或通信处理器、压缩引擎、图形处理器、GPGPU、嵌入式处理器等)。在一个实施例中,控制器中枢2320可以包括集成图形加速器。
就包括架构、微架构、热、功耗特性等的优点的一系列度量而言,物理资源2310、2315之间可能存在各种差异。
在一个实施例中,处理器2310执行控制通用类型的数据处理操作的指令。嵌入在指令内的可以是协处理器指令。处理器2310将这些协处理器指令识别为应由所附接的协处理器2345执行的类型。因此,处理器2310在协处理器总线或其他互连上向协处理器2345发布这些协处理器指令(或表示协处理器指令的控制信号)。协处理器2345接受并执行接收到的协处理器指令。
现在参照图24,示出的是根据本发明实施例的SoC 2400的框图。图22中的相似要素承载相同的附图标记。此外,虚线框是更高级SoC上的可选特征。在图24中,互连单元2402耦合到:应用处理器2410,其包括一个或多个内核202A-N的集合和共享缓存单元2206;系统代理单元2210;总线控制器单元2216;集成存储器控制器单元2214;一个或多个协处理器2420的集合,其可以包括集成图形逻辑、图像处理器、音频处理器和视频处理器;静态随机存取存储器(SRAM)单元2430;直接存储器访问(DMA)单元2432;和显示单元2440,其用于耦合到一个或多个外部显示器。在一个实施例中,协处理器2420包括专用处理器(例如,比如网络或通信处理器、压缩引擎、GPGPU、高吞吐量MIC处理器、嵌入式处理器等)。
可以通过硬件、软件、固件或此类实现方式方法的组合实现本文所公开的机制的实施例。本发明的实施例可以实现为可包括至少一个处理器、存储系统(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备的编程系统上执行的计算机程序或程序代码。
程序代码可以应用于输入指令,以执行本文所述的功能并生成输出信息。输出信息可以通过已知方式应用于一个或多个输出设备。出于本申请的目的,处理系统包括具有处理器的任何系统,比如,例如;数字信号处理器(DSP)、微控制器、专用集成电路(ASIC)或微处理器。
可以用高级过程或面向对象的编程语言实现程序代码,以与处理系统进行通信。如果需要,则也可以通过汇编语言或机器语言实现程序代码。事实上,本文描述的机制在范围方面不限于任何特定编程语言。在任何情况下,语言可以是编译型或解释型语言。
可以通过机器可读介质上存储的代表性指令实现至少一个实施例的一个或多个方面,指令表示处理器内的各种逻辑,其当由机器读取时使机器制造逻辑以执行本文所描述的技术。称为“IP内核”的这些表示法可以存储在有形机器可读介质上,并提供给各种客户或制造设施,以加载到实际制作逻辑或处理器的制造机器中。
这些机器可读存储介质可以包括但不限于由机器或设备制造或形成的物品的非瞬时、有形布置,包括存储介质(例如,硬盘、任何其他类型的盘(包括软盘、光盘、压缩盘只读存储器(CD-ROM)、可重写压缩盘(CD-RW)和磁光盘)、半导体器件(例如,只读存储器(ROM)、随机存取存储器(RAM)(例如,动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM))、可擦除可编程只读存储器(EPROM)、闪存、电可擦除可编程只读存储器(EEPROM)、相变存储器(PCM)、磁卡或光卡)或适合于存储电子指令的任何其他类型的介质)。
因此,本发明的实施例还包括包含指令或包含设计数据(例如,定义本文描述的结构、电路、装置、处理器和/或系统特征的硬件描述语言(HDL))的非瞬时有形机器可读介质。这些实施例也可以称为程序产品。
用于管理总线通信协议的选择
在一个或多个实施例中,控制器设备可以检测与管理总线关联的触发事件(例如,从属设备待连接到管理总线)。响应于触发事件,控制器可以在管理总线上发送广播地址的一个或多个传输,并且可以监听来自从属设备的确认。在一些实施例中,广播地址不用在第一协议中,而是用在第二协议中。在接收到广播地址的一个或多个确认时,控制器可以选择第二协议以用于与从属设备的通信。然而,如果广播地址并未正确地被确认,则控制器可以尝试使用第一协议建立连接。以此方式,一些实施例可以提供自动检测以及与使用不同协议的设备的兼容性而不损失功能。
此外,一些实施例可以提供多协议从属设备,其包括用于在用于管理总线的第一与第二协议之间进行选择的逻辑。从属设备可以每第二协议发送加入消息,并且可以确定是否响应于加入消息接收到确认。如果接收到确认,则从属设备可以禁用内部尖峰滤波器,并且可以选择用于管理总线的第二协议。然而,如果没有接收到确认,则从属设备可以监听第一和第二协议二者中的总线业务,并且可以基于检测到的业务的类型选择协议。以此方式,不需要为特定协议预先配置用于从属设备的总线槽。此外,控制器设备与从属设备之间不需要在先同步。此外,倘若在协议协商完成之后重置控制器设备和/或从属设备,那么该技术可以透明地恢复总线操作。以下将参照图26-图31进一步描述一些实施例的各种细节。
图26——示例系统
现在参照图26,示出的是根据一个或多个实施例的系统2600的框图。在一些实施例中,系统2600可以是计算设备的全部或部分。例如,系统2600可以是蜂窝电话、计算机、服务器、网络设备、片上系统(SoC)、控制器、分布式系统等。
如图26所示,系统2600可以包括控制器设备2610,其经由总线链路2630A-2630N(也称为“总线链路2630”)耦合到任何数量的从属设备2620A-2620N(也称为“从属设备2620”)。在一些实施例中,控制器设备2610可以是由总线链路2630形成的系统管理总线的主控制器,并且可以经由关联总线链路2630与每个从属设备2620建立且进行通信。在一些实施例中,控制器设备2610可以选择多个通信协议之一,以在每个总线链路2630中使用。例如,控制器设备2610可以与I2C和I3C协议二者兼容。每个从属设备2620可以使用I3C协议(称为“13C设备”)或者可以使用I2C协议(称为“12C设备”)。此外,控制设备2610可以选择I2C协议或I3C协议以分别与I2C设备或I3C设备进行通信。
在一些实施例中,可以在硬件中实现控制器设备2610、从属设备2620和总线链路2630。例如,控制器设备2610可以是中央处理单元(CPU)、片上系统(SoC)、基板管理控制器(BMC)等。此外,从属设备2620可以包括电源模块、扩展卡、冷却风扇、温度传感器等。在一些实施例中,每个总线链路2630可以是单端两线系统管理总线。在一些示例中,总线链路2630可以安装在或包括于系统2600的主板上。
如图26进一步所示,控制器设备2610可以包括协议逻辑2615,以选择待在每个总线链路2630上使用的通信协议。在一个或多个实施例中,协议逻辑2615可以检测与特定总线链路2630关联的触发事件。例如,协议逻辑2615可以检测到新的从属设备2620已经连接到总线链路2630,先前连接的从属设备2620已经被重置或加电,用于建立或重置总线链路2630的命令已经被接收,控制器设备2610启动或重新启动,控制器设备2610已经进入或退出特定功率状态,控制器设备2610在运行时期间受热插拔,等。在一些示例中,存在性检测中断可以检测指示从属设备2620已经添加到系统2600的触发事件。
响应于触发事件,协议逻辑2615可以使控制器设备2610在管理总线上发送广播地址。在一些实施例中,广播地址可以是仅由多个通信协议中的较新协议使用的保留地址。例如,广播地址“0x7e”可以在I3C协议中用作广播通知,但不用在I2C协议中。因此,I3C设备将在接收到广播地址“0x7e”的传输时发送确认,而I2C设备将忽略(即,不确认)广播地址“0x7e”。因此,协议逻辑2615可以至少部分地基于从从属设备2620接收到确认选择I3C协议。然而,如果广播地址未被确认,则控制设备2610可以发送设备地址,以确定从属设备2620是否可以在I2C协议下进行通信。
在一些实施例中,协议逻辑2615可以包括(或以其他方式提供)第一确认计数器2617和第二确认计数器2619。第一确认计数器2617可以存储由控制器设备2610(例如,在I3C协议下)响应于所发送的广播地址接收到的第一确认计数。此外,第二确认计数器2619可以存储由控制器设备2610(例如,在I2C协议下)响应于所发送的设备地址接收到的第二确认计数。
在一些实施例中,控制器设备2610可以发送广播地址的多个传输,并且可以仅在(例如,第一确认计数器2617中存储的)接收到的确认的数量超过第一阈值等级时选择I3C协议。可以基于总线链路2630中的预期错误率选择第一阈值等级和/或传输的数量。以此方式,并非基于接收到归因于总线上的噪声和/或失真导致的错误解释或损坏的单个消息而执行协议选择。因此,一些实施例可以减少或消除由管理总线中的数据错误引起的不正确的协议选择。以下参照图28描述可以由控制器设备2610的协议逻辑2615执行的示例协议选择过程。
在一些实施例中,选择特定通信协议可以包括:配置管理总线的各种参数或设置。例如,选择不同的通信协议可以涉及:使用信号电压电平、时钟频率、命令、消息格式和响应等的不同配置。此外,选择特定协议可以包括:允许使用不能在不同协议下使用的特征(例如,时钟延长)。
在一些实施例中,从属设备可以与多种通信协议兼容(在本文中称为“多协议设备”)。例如,参照图26,从属设备2620N是与I2C和I3C协议兼容的多协议设备。此外,在一些实施例中,从属设备2620N可以包括检测逻辑2625,以当建立总线链路2630时在I2C与I3C协议之间进行选择。以下参照图29描述可以由从属设备2620的检测逻辑2625执行以选择选择通信协议的的示例协议选择过程。
图27——示例计算系统
现在参照图27,示出的是根据一个或多个实施例的计算系统2700的框图。在一些实施例中,计算系统2700通常可以对应于(图26所示的)系统2600的示例实现方式。
如图所示,计算系统2700可以包括处理器2710、存储器2720、基板管理控制器(BMC)2730和任何数量的从属设备2740A-2740N(也称为“从属设备2740”)。处理器2710可以是硬件处理设备(例如,中央处理单元(CPU)、片上系统(SoC)等)。存储器2720可以包括任何类型的易失性存储器(例如,动态RAM(DRAM)、同步动态RAM(SDRAM)等)。BMC 2730可以是硬件控制器,其与计算系统2700的主要处理路径分离,并且其可以用以远程管理计算系统2700。例如,远程用户可以连接到BMC 2730,以监控系统2700的状态,以引起系统2700的上电或断电等。
在一些实施例中,处理器2710和每个从属设备2740可以耦合到数据总线链路2715(例如,外围组件互连高速(PCIe)总线)。数据总线链路2715可以是处理器2710与从属设备2740之间的主要数据途径(也称为“带内”路径)。
在一些实施例中,BMC 2730和每个从属设备2740可以经由管理总线链路2735耦合。管理总线链路2735可以形成系统管理总线,其为与数据总线链路2715分离的“带外”路径。在一些实施例中,BMC2730可以是用于连接到从属设备2740的系统管理总线的控制器设备。例如,BMC 2730和从属设备2740可以分别对应于图26所示的控制器设备2610和从属设备2620的示例实现方式。因此,BMC 2730可以包括协议逻辑(例如,图26所示的协议逻辑2615),以选择待在每个管理总线链路2735上使用的通信协议。以下参照图28描述可以由BMC 2730执行的示例协议选择过程。
在一些实施例中,一个或多个从属设备2740可以是与I2C和I3C协议二者兼容的多协议设备。因此,多协议从属设备2740可以包括检测逻辑(例如,图26所示的检测逻辑2625),以当建立管理总线链路2735时在I2C与I3C协议之间进行选择。以下参照图29描述可以由从属设备2740执行的示例协议选择过程。
注意,虽然图27示出在BMC 2730中实现管理总线控制器的示例,但是实施例不限于此。例如,预期可以在计算系统2700内部或外部的任何其他设备或组件(例如,处理器2710、总线控制器、扩展卡、远程设备等)中实现系统管理总线的控制器设备(也称为“主设备”)。
图28——用于由控制器设备选择协议的方法
现在参照图28,示出的是根据一个或多个实施例的用于选择通信协议的方法2800的流程图。在各种实施例中,方法2800可以由可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合的处理逻辑执行。在固件或软件实施例中,方法2800可以由存储在非瞬时机器可读介质(例如,光学、半导体或磁存储设备)中的计算机执行指令实现。机器可读介质可以存储数据,所述数据如果由至少一个机器使用则使所述至少一个机器制造至少一个集成电路以执行方法。为了说明的缘故,可以参照示出根据一个或多个实施例的示例的图26-图27在以行描述方法2800中涉及的动作。然而,本文讨论的各种实施例的范围不限于此。
在一些实施例中,方法2800可以由系统管理总线的控制器设备执行,以选择多个通信协议之一。例如,方法2800可以由(如图26所示的)控制器设备2610、由(如图27所示的)BMC 2730等执行。在一些实施例中,方法2800可以由控制器设备执行,以在I2C和I3C协议之间进行选择,并且在计算设备的系统管理总线中使用所选择的协议。然而,实施例不限于I2C和I3C协议,并且可以通过相似方式应用于其他协议。
块2810可以包括:检测与管理总线关联的触发事件。例如,参照图26,协议逻辑2615可以检测与特定总线链路2630关联的触发事件(例如,新的从属设备2620已经连接到总线链路2630,先前连接的从属设备2620已经被重置或加电,用于建立或重置总线链路2630的命令已经被接收,控制器设备2610启动或重新启动,控制器设备2610已经进入或退出特定功率状态,控制器设备2610在运行时期间受热插拔,等)。
块2820可以包括:将管理总线设置为与第一协议关联的第一电压电平。块2830可以包括:将第一和第二确认计数器设置为零值。例如,参照图26,响应于检测到的触发事件,控制器设备2610可以最初在管理总线中使用与I2C协议关联的第一电压电平(例如,3.2伏)。此外,控制器设备2610可以将第一确认计数器2617和第二确认计数器2619设置为零值。
块2840可以包括:在管理总线上发送广播地址。判决块2850可以包括:确定是否响应于所发送的广播地址接收到确认(“ACK”)。例如,参照图26,控制器设备2610可以在耦合到从属设备2620N的总线链路2630N上发送广播地址的初始传输,并且可以确定从属设备2620N是否已经发送所发送的广播地址的确认。在一些实施例中,所发送的广播地址可以仅由多个通信协议中的较新协议使用。例如,广播地址“0x7e”可以由使用I3C协议的从属设备确认,但是不由使用I2C协议的从属设备确认。
如果在判决块2850确定响应于广播地址的初始传输接收到确认(“是”),则方法2800可以在块2880继续,包括:发送广播地址的数量N的传输。判决块2885可以包括:确定关于广播地址的N个传输接收到的第一确认计数是否超过第一阈值。例如,如图26所示,协议逻辑2615可以使控制器设备2610在总线链路2630上发送广播地址的N个传输,其中,N是由协议逻辑2615存储或指定的整数。此外,第一确认计数器2617可以递增,以指示接收到的对广播地址的N个传输的确认的数量。控制器设备2610可以确定第一确认计数器2617的计数是否超过第一阈值(例如,由协议逻辑2615存储或指定的阈值)。
如果在判决块2885确定关于广播地址的传输接收到的第一确认计数不超过第一阈值(“否”),则方法2800可以返回块2840(即,再次发送广播地址)。然而,如果在判决块2885确定关于广播地址的N个传输接收到的第一确认计数超过第一阈值(“是”),则方法2800可以在块2890继续,包括:将管理总线设置为与第二协议关联的第二电压电平。块2895可以包括:选择用于管理总线的第二协议。例如,参照图26,响应于确定第一确认计数器2617的值超过第一阈值,控制器设备2610可以使用与I3C协议关联的第二电压电平(例如,1.8伏),以通过对应总线链路2630与从属设备2820进行通信。此外,控制器设备2610可以选择I3C协议,以用于跨越总线链路2630与从属设备2820的随后通信。在一些实施例中,(例如,与I3C协议关联的)第二电压电平可以低于(例如,与I2C协议关联的)第一电压电平。在块2895之后,可以完成方法2800。
返回判决块2850,如果确定并未响应于广播地址的初始传输接收到确认(“否”),则方法2800可以在块2860继续,包括:在管理总线上发送一系列设备地址。判决块2865可以包括:确定是否响应于所发送的设备地址中的特定设备地址接收到确认。例如,参照图26,控制器设备2610可以在耦合到从属设备2620N的总线链路2630N上发送一系列设备地址,并且可以确定从属设备2620N是否已经发送对于所发送的设备地址中的特定设备地址的确认。在一些实施例中,所发送的一系列设备地址可以包括每个从属设备2620的可能设备地址。此外,在I2C协议下,从属设备2620必须确认包括其分配的设备地址(例如,在设备的制造之时分配的唯一标识符)的消息。因此,如果接收所发送的系列的从属设备2620N然后确认特定设备地址,则可以确定这是标识该从属设备的设备地址。
如果在判决块2865确定没有响应于任何一系列设备地址接收到确认(“否”),则方法2800可以返回块2830(即,将第一和第二确认计数器重置回到零值,并且然后在块2840再次发送广播地址)。然而,如果在判决块2865确定响应于特定设备地址的传输而接收到确认(“是”),则方法2800可以在块2870继续,包括:发送所确认特定的设备地址的数量M的传输。判决块2875可以包括:确定关于特定设备地址的数量M的传输接收到的第二确认计数是否超过第二阈值。例如,参照图26,协议逻辑2615可以使控制器设备2610可以在总线链路2630上发送特定设备地址的数量M的传输,其中,M是由协议逻辑2615存储或指定的整数。此外,第二确认计数器可以递增2619以指示接收到的对特定设备地址的M个传输的确认的数量。控制器设备2610可以确定第二确认计数器2619的计数是否超过第二阈值(例如,由协议逻辑2615存储或指定的阈值)。
如果在判决块2875确定关于特定设备地址的M个传输接收到的第二确认计数不超过第二阈值(“否”),则方法2800可以返回块2880(即,再次发送广播地址)。然而,如果在判决块2875确定关于特定设备地址的M个传输接收到的第二确认计数超过第二阈值(“是”),则方法2800可以在块2878继续,包括:选择用于管理总线的第一协议。例如,参照图。参照图26,响应于确定第二确认计数器2619的值超过第二阈值,控制器设备2610可以选择I2C协议,以用于跨越总线链路2630与从属设备2820的随后通信。在块2878之后,可以完成方法2800。
在一些实施例中,可以基于一个或多个参数预先定义和/或动态调整块2875和2885中所比较的值(即,第一阈值等级、数量N、第二阈值和数量M)。例如,如果预计总线链路2630(例如,归因于环境条件、来自其他设备的干扰等)遭受相对高的错误率,则可以将第一或第二阈值设置为相对高的等级。在另一示例中,基于特定总线链路2630中测量的错误率,或者如果方法2800不能使用先前阈值和传输值达到结论性结果(例如,如果块2830-2895在不选择协议的情况下加以执行达多个周期),则可以动态地调整所比较的值。
图29——用于由从属设备选择协议的方法
现在参照图29,示出的是根据一个或多个实施例的用于选择通信协议的方法2900的流程图。在各种实施例中,方法2900可以由可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合的处理逻辑执行。在固件或软件实施例中,方法2900可以由存储在非瞬时机器可读介质(例如,光学、半导体或磁存储设备)中的计算机执行指令实现。机器可读介质可以存储数据,所述数据如果由至少一个机器使用则使所述至少一个机器制造至少一个集成电路以执行方法。为了说明的缘故,可以参照示出根据一个或多个实施例的示例的图26-图27在以行描述方法2900中涉及的动作。然而,本文讨论的各种实施例的范围不限于此。
在一些实施例中,方法2900可由多协议从属设备(例如,图26所示的从属设备2610N)执行,以在第一与第二协议(例如,I2C和I3C协议)之间进行选择,并在系统管理总线中使用所选择的协议。块2910可以包括:每第二协议发送加入消息。判决块2920可以包括:确定是否响应于所发送的加入消息接收到确认(“ACK”)。例如,参照图26,从属设备2620N可以按照I3C定义的热加入带内中断(IBI)宣布其在总线链路2630N上的存在性,并且可以确定是否(例如,从控制器设备2610)接收到加入消息的确认。在一些实施例中,从属设备2620N可以多次(例如,3次)发送加入消息,并且如果接收到的确认的数量超过预订阈值,则可以确定加入消息被正确地确认。
如果在判决块2920确定响应于加入消息接收到正确的确认(“是”),则方法2900可以在块2930继续,包括:禁用从属设备的尖峰滤波器。块2940可以包括:使用第二协议以用于管理总线。例如,参照图26,响应于确定加入消息被正确地确认,从属设备2620N可以禁用内部尖峰滤波器,并且可以使用I3C协议以用于通过总线链路2630N的通信。在一些实施例中,尖峰滤波器可以是从属设备2620N的组件,其在由I3C通信使用的频率范围中阻止传入总线业务。因此,禁用尖峰滤波器可以允许从属设备2620N跨越总线链路2630N接收并且响应于I3C消息。在块2940之后,可以完成方法2900。
返回判决块2920,如果确定没有响应于加入消息接收到正确的确认(“否”),则方法2900可以在块2950继续,包括:使用第一和第二协议二者监听总线业务。例如,参照图26,从属设备2620N可以使用I2C和I3C协议二者监听总线链路2630N上的业务。在一些实施例中,从属设备2620N可以包括独立地监听总线链路2630N上的业务的I2C监听电路和I3C监听电路。
判决块2960可以包括:确定是否在总线链路上接收到广播地址。例如,参照图26,从属设备2620N可以确定是否已经在总线链路2630N上接收到I3C广播地址(例如,“0x7e”)。
如果在判决块2960确定在总线链路上接收到广播地址,则方法2900可以在块2930和2940继续(如上所述)。然而,如果在判决块2960确定没有接收到广播地址,则方法2900可以在判决块2970继续,包括:确定是否在总线链路上接收到设备地址。例如,参照图26,从属设备2620N可以确定已经接收到I3C广播地址,并且响应于此,可以禁用尖峰滤波器并且使用I3C协议以跨越总线链路2630N进行通信。替代地,从属设备2620N可以确定尚未接收到I3C广播地址,并且响应于此,可以确定是否在总线链路2630N上接收到I2C设备地址。
如果在判决块2970确定在总线链路上接收到设备地址,则方法2900可以在块2980继续,包括:使用用于管理总线的第一协议。例如,参照图26,从属设备2620N可以确定已经接收到其分配的设备地址,并且响应于此,可以使用I2C协议以跨越总线链路2630N进行通信。在块2980之后,可以完成方法2900。
图30——用于选择协议的方法
现在参照图30,示出的是根据一个或多个实施例的用于选择通信协议的方法3000的流程图。在各种实施例中,方法3000可以由可以包括硬件(例如,处理设备、电路、专用逻辑、可编程逻辑、微代码等)、软件(例如,在处理设备上运行的指令)或其组合的处理逻辑执行。在固件或软件实施例中,方法3000可以由存储在非瞬时机器可读介质(例如,光学、半导体或磁存储设备)中的计算机执行指令实现。机器可读介质可以存储数据,所述数据如果由至少一个机器使用则使所述至少一个机器制造至少一个集成电路以执行方法。为了说明的缘故,可以参照示出根据一个或多个实施例的示例的图26-图27在以行描述方法3000中涉及的动作。然而,本文讨论的各种实施例的范围不限于此。
在一些实施例中,方法3000可以由系统管理总线的控制器设备执行,以选择多个通信协议之一。例如,方法3000可以由(如图26所示的)控制器设备2610、由(如图27所示的)BMC 2730等执行。在一些实施例中,方法3000可以由控制器设备执行,以在I2C和I3C协议之间进行选择,并且在计算设备的系统管理总线中使用所选择的协议。然而,实施例不限于I2C和I3C协议,并且可以通过相似方式应用于其他协议。
块3010可以包括:由控制器设备检测与作为单端两线总线的管理总线关联的触发事件。例如,参照图26,协议逻辑2615可以检测与特定总线链路2630关联的触发事件。
块3020可以包括,响应于检测到触发事件测,控制器设备在管理总线上发送广播地址,其中,广播地址不用在第一通信协议中。例如,参照图26,控制器设备2610可以在耦合到从属设备2620N的总线链路2630N上发送I3C广播地址“0x7e”的一个或多个传输。
块3030可以包括:由控制器设备确定所发送的广播地址是否被确认。例如,参照图26,控制器设备2610可以确定从属设备2620N是否已经经由总线链路2630N发送所发送的I3C广播地址“0x7e”的一个或多个确认。
块3040可以包括:响应于确定所发送的广播地址被确认,控制器设备使用第二通信协议以用于管理总线上的传输。例如,参照图26,控制器设备2610可以调整第一确认计数器2617,以指示接收到的对所发送的I3C广播地址的确认的数量。控制器设备2610可以确定第一确认计数器2617的计数超过第一阈值,并且响应于此,可以选择并且使用用于总线链路2630N的I3C协议。在一些实施例中,控制器设备2610也可以使用与I3C协议关联的电压电平(例如,1.8伏),以跨越总线链路2630N与从属设备2620N进行通信。在块3040之后,可以完成方法3000。
图31——示例存储介质
现在参照图31,示出的是存储可执行指令3110的存储介质3100。在一些实施例中,存储介质3100可以是非瞬时机器可读介质(例如,光学介质、半导体、磁存储设备等)。可执行指令3110可以是可由处理装置执行的,以执行图28-图30所示的方法。此外,可执行指令3110可由至少一个机器使用以制造至少一个集成电路以执行图28-图30所示的方法。
以下条款和/或示例涉及进一步的实施例。
在示例1中,一种用于选择通信协议的装置可以包括控制器,其用于系统管理总线。所述控制器可以用于:检测与所述系统管理总线关联的触发事件;响应于检测到所述触发事件,在所述系统管理总线上发送广播地址,其中,所述广播地址不用在第一通信协议中;以及响应于确定所发送的广播地址被确认,使用第二通信协议以用于所述系统管理总线上的传输。
在示例2中,如示例1所述的主题可以可选地包括,所述第一通信协议是I2C通信协议,并且所述第二通信协议是I3C通信协议。
在示例3中,如示例1-2所述的主题可以可选地包括,所述控制器用于:在所述广播地址的第一传输中发送所述广播地址;响应于确定所述广播地址的所述第一传输被确认,发送所述广播地址的多个传输;确定关于所述广播地址的所述多个传输接收到的第一确认计数是否超过第一阈值;以及响应于确定所述第一确认计数超过所述第一阈值,选择所述第二通信协议以用于所述管理总线上的传输。
在示例4中,如示例1-3所述的主题可以可选地包括,所述控制器用于:响应于确定所述第一确认计数不超过所述第一阈值,发送所述广播地址的至少一个附加传输。
在示例5中,如示例1-4所述的主题可以可选地包括,所述控制器用于:在发送所述广播地址的所述第一传输之前,将所述管理总线设置为与所述第一通信协议关联的第一电压电平;以及响应于确定所述第一确认计数超过所述第一阈值,将所述管理总线设置为与所述第二通信协议关联的第二电压电平,其中,所述第二电压电平低于所述第一电压电平。
在示例6中,如示例1-5所述的主题可以可选地包括,所述控制器用于:响应于确定所述广播地址的所述第一传输未被确认,在所述系统管理总线上发送设备地址;确定所发送的设备地址是否被确认;以及响应于确定所发送的设备地址被确认,选择所述第一通信协议以用于所述管理总线上的传输。
在示例7中,如示例1-6所述的主题可以可选地包括,所述控制器用于:在所述设备地址的第一传输中发送所述设备地址;响应于确定所述设备地址的所述第一传输被确认,发送所述设备地址的多个传输;确定关于所述设备地址的所述多个传输接收到的第二确认计数是否超过第二阈值;以及响应于确定所述第二确认计数超过所述第二阈值,选择所述第一通信协议以用于所述管理总线上的传输。
在示例8中,如示例1-7所述的主题可以可选地包括,所述控制器用于:响应于确定所述第二确认计数不超过所述第二阈值,发送所述广播地址的至少一个附加传输。
在示例9中,一种用于选择通信协议的方法可以包括:由控制器设备检测与作为单端两线总线的管理总线关联的触发事件;响应于检测到所述触发事件,所述控制器设备在所述管理总线上发送广播地址,其中,所述广播地址不用在第一通信协议中;由所述控制器设备确定所发送的广播地址是否被确认;以及响应于确定所发送的广播地址被确认,所述控制器设备选择第二通信协议以用于所述管理总线上的传输。
在示例10中,如示例9所述的主题可以可选地包括,所述第一通信协议是I2C通信协议,并且所述第二通信协议是I3C通信协议。
在示例11中,如示例9-10所述的主题可以可选地包括,发送所述广播地址包括:发送所述广播地址的第一传输,并且所述方法包括:响应于确定所述广播地址的所述第一传输被确认,所述控制器设备发送所述广播地址的多个传输;由控制器设备确定关于所述广播地址的所述多个传输接收到的第一确认计数是否超过第一阈值;以及响应于确定所述第一确认计数超过所述第一阈值,所述控制器设备选择所述第二通信协议以用于所述管理总线上的传输。
在示例12中,如示例9-11所述的主题可以可选地包括:响应于确定所述第一确认计数不超过所述第一阈值,所述控制器设备发送所述广播地址的至少一个附加传输。
在示例13中,如示例9-12所述的主题可以可选地包括:在发送所述广播地址的所述第一传输之前,所述控制器设备将所述管理总线设置为与所述第一通信协议关联的第一电压电平;以及响应于确定所述第一确认计数超过所述第一阈值,所述控制器设备将所述管理总线设置为与所述第二通信协议关联的第二电压电平,其中,所述第二电压电平低于所述第一电压电平。
在示例14中,如示例9-13所述的主题可以可选地包括:响应于确定所述广播地址的所述第一传输未被确认,所述控制器设备在所述系统管理总线上发送设备地址;由所述控制器设备确定所发送的设备地址是否被确认;以及响应于确定所发送的设备地址被确认,所述控制器设备选择所述第一通信协议以用于所述管理总线上的传输。
在示例15中,如示例9-14所述的主题可以可选地包括,发送所述广播地址包括:发送所述广播地址的第一传输,并且所述方法包括:响应于确定所述设备地址的所述第一传输被确认,所述控制器设备发送所述设备地址的多个传输;由所述控制器设备确定针关于所述设备地址的所述多个传输接收到的第二确认计数是否超过第二阈值;以及响应于确定所述第二确认计数超过所述第二阈值,所述控制器设备选择所述第一通信协议以用于所述管理总线上的传输。
在示例16中,如示例9-15所述的主题可以可选地包括:响应于确定所述第二确认计数不超过所述第二阈值,所述控制器设备发送所述广播地址的至少一个附加传输。
在示例17中,一种计算设备可以包括:一个或多个处理器;和存储器,其具有其中存储的多个指令,所述多个指令当由所述一个或多个处理器执行时,使所述计算设备执行如示例9至16中任一项所述的方法。
在示例18中,至少一个机器可读介质具有其上存储的数据,所述数据如果由至少一个机器使用,则使所述至少一个机器执行如示例9至16中任一项所述的方法。
在示例19中,一种电子设备可以包括:用于执行如示例9至示例16中任一项所述的方法的装置。
在示例20中,一种用于选择通信协议的系统可以包括:处理器,其用于执行指令;系统管理总线;和控制器,其用于系统管理总线。所述控制器可以用于:检测与所述系统管理总线关联的触发事件;响应于检测到所述触发事件,在所述系统管理总线上发送广播地址,其中,所述广播地址不用在第一通信协议中;以及响应于确定所发送的广播地址被确认,使用第二通信协议以用于所述系统管理总线上的传输。
在示例21中,如示例20所述的主题可以可选地包括,所述第一通信协议是I2C通信协议,并且所述第二通信协议是I3C通信协议。
在示例22中,如示例20-21所述的主题可以可选地包括,所述控制器用于:在所述广播地址的第一传输中发送所述广播地址;响应于确定所述广播地址的所述第一传输被确认,发送所述广播地址的多个传输;确定关于所述广播地址的所述多个传输接收到的第一确认计数是否超过第一阈值;以及响应于确定所述第一确认计数超过所述第一阈值,选择所述第二通信协议以用于所述管理总线上的传输。
在示例23中,如示例20-22所述的主题可以可选地包括,所述控制器用于:响应于确定所述广播地址的所述第一传输未被确认,在所述系统管理总线上发送设备地址;确定所发送的设备地址是否被确认;以及响应于确定所发送的设备地址被确认,选择所述第一通信协议以用于所述管理总线上的传输。
在示例24中,如示例20-23所述的主题可以可选地包括,所述控制器用于:在所述设备地址的第一传输中发送所述设备地址;响应于确定所述设备地址的所述第一传输被确认,发送所述设备地址的多个传输;确定关于所述设备地址的所述多个传输接收到的第二确认计数是否超过第二阈值;以及响应于确定所述第二确认计数超过所述第二阈值,选择所述第一通信协议以用于所述管理总线上的传输。
在示例25中,一种用于选择通信协议的装置可以包括:用于检测与作为单端两线总线的管理总线关联的触发事件的部件;用于响应于检测到所述触发事件而在所述管理总线上发送广播地址的部件,其中,所述广播地址不用在第一通信协议中;用于确定所发送的广播地址是否被确认的部件;和用于响应于确定所发送的广播地址被确认而选择第二通信协议以用于所述管理总线上传输的部件。
在示例26中,如示例25所述的主题可以可选地包括,所述第一通信协议是I2C通信协议,并且所述第二通信协议是I3C通信协议。
在示例27中,如示例25-26所述的主题可以可选地包括,发送所述广播地址包括:发送所述广播地址的第一传输,并且所述装置包括:用于响应于确定所述广播地址的所述第一传输被确认而发送所述广播地址的多个传输的部件;用于确定关于所述广播地址的所述多个传输接收到的第一确认计数是否超过第一阈值部件;和用于响应于确定所述第一确认计数超过所述第一阈值而选择所述第二通信协议以用于所述管理总线上的传输的部件。
在示例28中,如示例27所述的主题可以可选地包括:用于响应于确定所述第一确认计数不超过所述第一阈值而发送所述广播地址的至少一个附加传输的部件。
在示例29中,如示例27-28所述的主题可以可选地包括:用于在发送所述广播地址的所述第一传输之前将所述管理总线将管理总线设置为设置为与所述第一通信协议关联的第一电压电平的部件;和用于响应于确定所述第一确认计数超过所述第一阈值而将所述管理总线设置为与所述第二通信协议关联的第二电压电平的部件,其中,所述第二电压电平低于所述第一电压电平。
在示例30中,如示例27-29所述的主题可以可选地包括:用于响应于确定所述广播地址的所述第一传输未被确认而在所述系统管理总线上发送设备地址的部件;用于确定所发送的设备地址是否被确认的部件;和用于响应于确定所发送的设备地址被确认而选择所述第一通信协议以用于所述管理总线上的传输的部件。
在本文描述的一些实施例中,控制器设备可以检测与管理总线关联的触发事件,并且响应于此,可以执行选择过程以在第一与第二通信协议之间进行选择,以用于对从属设备的连接。选择可以包括:在系统管理总线上发送广播地址的一个或多个传输,其中,广播地址用在第二协议中但是不用在第一协议中。控制器可以响应于接收到确认选择第二协议,或者如果没有接收到正确的确认,则可以选择第一协议。以此方式,一些实施例可以提供自动检测以及与使用不同协议的设备的兼容性而不损失功能。
此外,一些实施例可以提供一种多协议从属设备,其包括用于在用于管理总线的第一与第二协议之间进行选择的逻辑。从属设备可以每第二协议发送加入消息,并且可以确定是否响应于加入消息接收到确认。如果接收到确认,则从属设备可以禁用内部尖峰滤波器,并且可以选择用于管理总线的第二协议。然而,如果没有接收到确认,则从属设备可以监听第一和第二协议二者中的总线业务,并且可以基于检测到的业务的类型选择协议。以此方式,不需要为特定协议预先配置用于从属设备的总线槽。此外,在控制器设备与从属设备之间无需在先同步。此外,倘若在协议协商完成之后重置控制器设备和/或从属设备,那么该技术可以透明地恢复总线操作。
注意,虽然图26-图31示出各种示例实现方式,但是其他变型是可能的。例如,预期可以在参照图1-图25描述的示例设备和系统中实现一个或多个实施例。注意,提供图1-图31所示的示例是为了说明的缘故,而非旨在限制任何实施例。具体而言,虽然为了清楚可以通过简化形式示出实施例,但是实施例可以包括任何数量和/或布置的组件。例如,预期一些实施例可以除了所示出的组件之外还包括任何数量的组件,并且所示组件的不同布置可以出现在特定实现方式中。此外,预期图1-图31所示的示例中的细节可以用在一个或多个实施例中的任何地方。
应理解,以上示例的各种组合是可能的。实施例可以用在许多不同类型的系统中。例如,在一个实施例中,通信设备可以被布置为执行本文描述的各种方法和技术。当然,本发明的范围不限于通信设备,相反,其他实施例可以针对用于处理指令的其他类型的装置或包括指令的一个或多个机器可读介质,所述指令响应于在计算设备上被执行而使设备执行本文描述的方法和技术中的一种或多种。
说明书通篇对“一个实施例”或“实施例”的引用意指结合实施例描述的特定特征、结构或特性包括于本发明所涵盖的至少一个实现方式中。因此,短语“一个实施例”或“在实施例中”的出现不一定指代相同实施例。此外,特定特征、结构或特性可以通过除了所示的特定实施例之外的其他合适的形式被建立,并且所有这些形式可以被涵盖在本申请的权利要求内。
虽然已经关于有限数量的实施例描述了本发明,但是本领域的技术人员将据此理解大量修改和变型。所附权利要求旨在涵盖落入本发明的真实精神和范围内的所有这些修改和变型。
Claims (25)
1.一种用于选择通信协议的装置,包括:
控制器,用于系统管理总线,所述控制器用于:
检测与所述系统管理总线关联的触发事件;
响应于检测到所述触发事件,在所述系统管理总线上发送广播地址,其中,所述广播地址不用在第一通信协议中;以及
响应于确定所发送的广播地址被确认,使用第二通信协议以用于所述系统管理总线上的传输。
2.如权利要求1所述的装置,其中,所述第一通信协议是I2C通信协议,并且其中,所述第二通信协议是I3C通信协议。
3.如权利要求1所述的装置,所述控制器用于:
在所述广播地址的第一传输中发送所述广播地址;
响应于确定所述广播地址的所述第一传输被确认,发送所述广播地址的多个传输;
确定关于所述广播地址的所述多个传输接收到的第一确认计数是否超过第一阈值;以及
响应于确定所述第一确认计数超过所述第一阈值,选择所述第二通信协议以用于所述管理总线上的传输。
4.如权利要求3所述的装置,所述控制器用于:
响应于确定所述第一确认计数不超过所述第一阈值,发送所述广播地址的至少一个附加传输。
5.如权利要求3所述的装置,所述控制器用于:
在发送所述广播地址的所述第一传输之前,将所述管理总线设置为与所述第一通信协议关联的第一电压电平;以及
响应于确定所述第一确认计数超过所述第一阈值,将所述管理总线设置为与所述第二通信协议关联的第二电压电平,其中,所述第二电压电平低于所述第一电压电平。
6.如权利要求3所述的装置,所述控制器用于:
响应于确定所述广播地址的所述第一传输未被确认,在所述系统管理总线上发送设备地址;
确定所发送的设备地址是否被确认;以及
响应于确定所发送的设备地址被确认,选择所述第一通信协议以用于所述管理总线上的传输。
7.如权利要求6所述的装置,所述控制器用于:
在所述设备地址的第一传输中发送所述设备地址;
响应于确定所述设备地址的所述第一传输被确认,发送所述设备地址的多个传输;
确定关于所述设备地址的所述多个传输接收到的第二确认计数是否超过第二阈值;以及
响应于确定所述第二确认计数超过所述第二阈值,选择所述第一通信协议以用于所述管理总线上的传输。
8.如权利要求7所述的装置,所述控制器用于:
响应于确定所述第二确认计数不超过所述第二阈值,发送所述广播地址的至少一个附加传输。
9.一种用于选择通信协议的方法,包括:
由控制器设备检测与作为单端两线总线的管理总线关联的触发事件;
响应于检测到所述触发事件,所述控制器设备在所述管理总线上发送广播地址,其中,所述广播地址不用在第一通信协议中;
由所述控制器设备确定所发送的广播地址是否被确认;以及
响应于确定所发送的广播地址被确认,所述控制器设备选择第二通信协议以用于所述管理总线上的传输。
10.如权利要求9所述的方法,其中,所述第一通信协议是I2C通信协议,并且其中,所述第二通信协议是I3C通信协议。
11.如权利要求9所述的方法,其中,发送所述广播地址包括:发送所述广播地址的第一传输,并且所述方法包括:
响应于确定所述广播地址的所述第一传输被确认,所述控制器设备发送所述广播地址的多个传输;
由控制器设备确定关于所述广播地址的所述多个传输接收到的第一确认计数是否超过第一阈值;以及
响应于确定所述第一确认计数超过所述第一阈值,所述控制器设备选择所述第二通信协议以用于所述管理总线上的传输。
12.如权利要求11所述的方法,包括:
响应于确定所述第一确认计数不超过所述第一阈值,所述控制器设备发送所述广播地址的至少一个附加传输。
13.如权利要求11所述的方法,包括:
在发送所述广播地址的所述第一传输之前,所述控制器设备将所述管理总线设置为与所述第一通信协议关联的第一电压电平;以及
响应于确定所述第一确认计数超过所述第一阈值,所述控制器设备将所述管理总线设置为与所述第二通信协议关联的第二电压电平,其中,所述第二电压电平低于所述第一电压电平。
14.如权利要求11所述的方法,包括:
响应于确定所述广播地址的所述第一传输未被确认,所述控制器设备在所述系统管理总线上发送设备地址;
由所述控制器设备确定所发送的设备地址是否被确认;以及
响应于确定所发送的设备地址被确认,所述控制器设备选择所述第一通信协议以用于所述管理总线上的传输。
15.如权利要求14所述的方法,其中,发送所述设备地址包括:发送所述设备地址的第一传输,并且所述方法包括:
响应于确定所述设备地址的所述第一传输被确认,所述控制器设备发送所述设备地址的多个传输;
由所述控制器设备确定关于所述设备地址的所述多个传输接收到的第二确认计数是否超过第二阈值;以及
响应于确定所述第二确认计数超过所述第二阈值,所述控制器设备选择所述第一通信协议以用于所述管理总线上的传输。
16.如权利要求15所述的方法,包括:
响应于确定所述第二确认计数不超过所述第二阈值,所述控制器设备发送所述广播地址的至少一个附加传输。
17.一种计算设备,包括:
一个或多个处理器;和
存储器,其中存储有多个指令,所述指令在由所述一个或多个处理器执行时,使所述计算设备执行如权利要求9-16中任一项所述的方法。
18.至少一种机器可读介质,其上存储有数据,所述数据如果由至少一个机器使用,则使所述至少一个机器执行如权利要求9-16中任一项所述的方法。
19.一种电子设备,包括用于执行如权利要求9-16中任一项所述的方法的部件。
20.一种用于选择通信协议的系统,包括:
处理器,用于执行指令;
系统管理总线;和
控制器,用于所述系统管理总线,所述控制器用于:
检测与所述系统管理总线关联的触发事件;
响应于检测到所述触发事件,在所述系统管理总线上发送广播地址,其中,所述广播地址不用在第一通信协议中;以及
响应于确定所发送的广播地址被确认,使用第二通信协议以用于所述系统管理总线上的传输。
21.如权利要求20所述的系统,其中,所述第一通信协议是I2C通信协议,并且其中,所述第二通信协议是I3C通信协议。
22.如权利要求20所述的系统,所述控制器用于:
在所述广播地址的第一传输中发送所述广播地址;
响应于确定所述广播地址的所述第一传输被确认,发送所述广播地址的多个传输;
确定关于所述广播地址的所述多个传输接收到的第一确认计数是否超过第一阈值;以及
响应于确定所述第一确认计数超过所述第一阈值,选择所述第二通信协议以用于所述管理总线上的传输。
23.如权利要求22所述的系统,所述控制器用于:
响应于确定所述广播地址的所述第一传输未被确认,在所述系统管理总线上发送设备地址;
确定所发送的设备地址是否被确认;以及
响应于确定所发送的设备地址被确认,选择所述第一通信协议以用于所述管理总线上的传输。
24.如权利要求23所述的系统,所述控制器用于:
在所述设备地址的第一传输中发送所述设备地址;
响应于确定所述设备地址的所述第一传输被确认,发送所述设备地址的多个传输;
确定关于所述设备地址的所述多个传输接收到的第二确认计数是否超过第二阈值;以及
响应于确定所述第二确认计数超过所述第二阈值,选择所述第一通信协议以用于所述管理总线上的传输。
25.如权利要求24所述的系统,所述控制器用于:
响应于确定所述第二确认计数不超过所述第二阈值,发送所述广播地址的至少一个附加传输。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202163158696P | 2021-03-09 | 2021-03-09 | |
US63/158,696 | 2021-03-09 | ||
US17/358,363 US20210318981A1 (en) | 2021-03-09 | 2021-06-25 | Selection of Communication Protocol for Management Bus |
US17/358,363 | 2021-06-25 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048326A true CN115048326A (zh) | 2022-09-13 |
Family
ID=78006353
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210122076.6A Pending CN115048326A (zh) | 2021-03-09 | 2022-02-09 | 用于管理总线通信协议的选择 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20210318981A1 (zh) |
JP (1) | JP2022138116A (zh) |
CN (1) | CN115048326A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024082831A1 (zh) * | 2022-10-21 | 2024-04-25 | 超聚变数字技术有限公司 | 一种服务器中处理器信息的带外查询/配置方法及服务器 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FI129883B (fi) * | 2020-03-04 | 2022-10-14 | Teknoware Oy | Menetelmiä ja järjestelyjä elektronisten laitteiden välisen tietoliikenteen järjestämiseksi liikennevälineessä |
US20230198607A1 (en) * | 2021-12-21 | 2023-06-22 | Verizon Patent And Licensing Inc. | Systems and methods for providing messaging for unmanned aerial vehicles |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11366776B1 (en) * | 2021-04-13 | 2022-06-21 | Renesas Electronics America Inc. | Network device configuration based on slave device type |
-
2021
- 2021-06-25 US US17/358,363 patent/US20210318981A1/en active Pending
-
2022
- 2022-02-02 JP JP2022014596A patent/JP2022138116A/ja active Pending
- 2022-02-09 CN CN202210122076.6A patent/CN115048326A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024082831A1 (zh) * | 2022-10-21 | 2024-04-25 | 超聚变数字技术有限公司 | 一种服务器中处理器信息的带外查询/配置方法及服务器 |
Also Published As
Publication number | Publication date |
---|---|
US20210318981A1 (en) | 2021-10-14 |
JP2022138116A (ja) | 2022-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11093278B2 (en) | Modifying processor frequency based on interrupt rate | |
US20200218677A1 (en) | Management of Processor Performance Based on User Interrupts | |
CN113272889A (zh) | 基于用户活动调整显示刷新率 | |
EP3674847B1 (en) | Controlling power state demotion in a processor | |
EP3547116B1 (en) | Branch prediction based on coherence operations in processors | |
CN113474745A (zh) | 在处理器中执行软扼制和硬扼制 | |
US20210318981A1 (en) | Selection of Communication Protocol for Management Bus | |
WO2019067126A1 (en) | CONTROL BLOCKS FOR PROCESSOR FEED MANAGEMENT | |
US11188138B2 (en) | Hardware unit for controlling operating frequency in a processor | |
US20210064110A1 (en) | Control blocks for processor power management | |
CN113849869A (zh) | 为持续性存储器生成密钥 | |
EP4155914A1 (en) | Caching based on branch instructions in a processor | |
US20220269330A1 (en) | System for power throttling | |
US20200004584A1 (en) | Hardware Queue Manager for Scheduling Requests in a Processor | |
US20230111694A1 (en) | Selection of power supply for a host system | |
CN114661349A (zh) | 用于代码预取的指令和逻辑 | |
US10796626B2 (en) | Expanded refresh rates for a display service | |
US11514551B2 (en) | Configuration profiles for graphics processing unit | |
US11354213B2 (en) | Utilization metrics for processing engines | |
EP4057151A1 (en) | Selection of communication protocol for management bus | |
US20240111598A1 (en) | Sequencing circuit for a processor | |
CN115525135A (zh) | 处理器中的虚拟分区的功率限制 | |
CN116303210A (zh) | 用于计算机处理器的寄存器接口 | |
CN114661346A (zh) | 用于平方差之和的指令和逻辑 | |
CN113396375A (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 |