CN108829525A - 可信平台遥测机制 - Google Patents

可信平台遥测机制 Download PDF

Info

Publication number
CN108829525A
CN108829525A CN201810384382.0A CN201810384382A CN108829525A CN 108829525 A CN108829525 A CN 108829525A CN 201810384382 A CN201810384382 A CN 201810384382A CN 108829525 A CN108829525 A CN 108829525A
Authority
CN
China
Prior art keywords
telemetry
queue
computing platform
firmware
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
Application number
CN201810384382.0A
Other languages
English (en)
Inventor
M·K·纳奇姆苏
M·J·库玛尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN108829525A publication Critical patent/CN108829525A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04QSELECTING
    • H04Q9/00Arrangements in telecontrol or telemetry systems for selectively calling a substation from a main station, in which substation desired apparatus is selected for applying a control signal thereto or for obtaining measured values therefrom
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/55Push-based network services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/50Network service management, e.g. ensuring proper service fulfilment according to agreements
    • H04L41/5003Managing SLA; Interaction between SLA and QoS
    • H04L41/5009Determining service level performance parameters or violations of service level contracts, e.g. violations of agreed response time or mean time between failures [MTBF]

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及可信平台遥测机制和相关联的方法、装置以及固件组件。提供可信遥测机制以从计算平台上的遥测数据源安全地收集平台遥测数据,该遥测数据源例如是机器专用寄存器(MSR)、设备寄存器、系统管理总线(SMBus)和存储控制器。使用各种机制从遥测数据源收集遥测数据,并以在计算平台上运行的软件不可存取的方式将该遥测数据安全地存储在计算平台上。还可以实现提交队列和完成队列模型以促进收集遥测数据。此外,提供了一种存储器映射输入输出(MMIO)别名使用方案,以促进使用各种存取机制从平台遥测数据源收集遥测数据。

Description

可信平台遥测机制
背景技术
在处理器速度、存储器、存储装置和网络带宽技术方面的增长已经导致了具有不断增长容量的网络的扩建和部署。最近,诸如由亚马逊(例如,亚马逊弹性计算云(EC2)和简单存储服务(S3))以及微软(例如,蔚蓝和办公室365)提供的基于云的服务的引入,已经导致了针对公共网络架构的另外的网络扩建,除了部署海量数据中心以支持利用私人网络架构的这些服务之外。
基于云的服务典型地通过大量相互连接的高速服务器来促进实现,其中主机设施一般被称为服务器“场”或数据中心。这些服务器场和数据中心典型地包括大量到海量机架阵列和/或置于特殊设计的设施中的刀锋服务器。许多较大的基于云的服务经由跨地理区域或甚至在全球分布的多个数据中心托管。例如,微软蔚蓝在美国、欧洲和亚洲中的每一个都具有多个非常大的数据中心。亚马逊使用共置且分离的数据中心来托管其EC2和AWS服务,包括单独在美国就超过十二个AWS数据中心。
为了更有效地管理数据中心资源,收集并分析与各种数据中心资源有关的遥测数据,这被称为数据中心分析学或云分析学。遥测数据的示例是在处理器上消耗的L2/L3高速缓存量,与传统的CPU利用测量相比,其可以揭露多得多的关于处理器(和平台)利用和使用的详细信息。遥测数据还用于当数据中心资源被租用时验证服务级别协议(SLA)的性能度量,例如针对作为服务的基础架构(Iaas)SLA。
当前的方案是使用软件来收集遥测数据。例如,现代操作系统提供用于存取各种处理器性能数据、存储器利用、过程、线程等的单元。这通过在主机系统上的存储器中运行的软件代码来促进实现,该软件代码在本质上是不可信任的,因为这样的代码会被容易地操纵和/或攻击。例如,云服务提供商可以改变遥测数据来满足SLA需求,且对于客户而言将有很少的方式来反驳该数据。能够确保遥测数据准确且值得信任将是有利的。
附图说明
本发明的前述方面和许多伴随的优点将变得更容易理解,因为当结合附图时,通过参考随后的具体实施方式相同的内容将变得更好理解,在附图中,除非指定,否则贯穿各个视图相似的附图标记指代相似的部分。
图1是说明根据一个实施例用于使用基于固件的组件执行遥测测量的针对安全机制的架构的示意图;
图1a是说明图1架构的展开的示意图,其中遥测数据被存储在SRAM中;
图2a是说明第一配置的框图,在该第一配置下,遥测驱动器是在固件中实现的类型1管理程序的一部分;
图2b是说明第二配置的框图,在该第二配置下,在经由固件和软件的组合实现的分割的类型1管理程序的固件部分中实现遥测驱动器;
图2c是说明第三配置的框图,在该第三配置下,遥测驱动器是在固件中实现的操作系统虚拟化层的一部分;
图2d是说明第四配置的框图,在该第四配置下,在经由固件和软件的组合实现的分割的操作系统虚拟化层的固件部分中实现遥测驱动器;
图3是说明根据一个实施例在配置在固件中实现的安全遥测机制时执行的操作和逻辑的流程图;
图4是说明根据一个实施例用于经由基于固件的遥测驱动器获取遥测数据并向POD管理器转发该遥测数据的操作的流程图;
图5是说明用于存取遥测数据和该遥测数据的提供商的传统机制的框图;
图6是说明根据一个实施例使用提交队列和完成队列的遥测数据获取机制的组合架构和流程图;
图7是说明根据图6的实施例用于设置提交队列和完成队列的操作的流程图;
图8是根据一个实施例用于使用图6中的提交和完成队列模型实现用于从多个遥测数据提供商收集遥测数据的第一基于推送的机制的平台架构的示意图;
图8a是根据一个实施例用于使用图6的提交和完成队列模型实现用于从多个遥测数据提供商收集遥测数据的第二基于推送的机制的平台架构的示意图,其中通过遥测驱动器收集遥测数据,并且然后将该遥测数据推送到完成队列;
图9是用于实现存储器映射输入输出(MMIO)别名使用(aliasing)方案的平台架构的示意图,在该方案下,经由基板管理控制器中的MMIO地址来存取遥测数据;以及
图10是说明根据一个实施例用于使用图9的MMIO别名使用方案来收集遥测数据的操作的流程图。
具体实施方式
在本申请中描述了可信平台遥测机制以及相关联的方法、装置和固件组件的实施例。在随后的描述中,给出了许多特定细节以提供对本发明实施例的透彻理解。但是,相关领域的熟练技术人员将认识到,可以在没有这些特定细节中的一个或多个的情况下,或利用其它的方法、组件、材料等来实施本发明。在其他实例中,未详细示出或描述公知的结构、材料或操作以避免混淆本发明的方面。
贯穿本说明书提及的“一个实施例”或“实施例”指的是结合在本发明至少一实施例中包含的实施例描述的特定特征、结构或特性。从而,贯穿本说明书在各个地方中出现的短语“在一个实施例中”或“在实施例中”不必全部指代同一个实施例。此外,在一个或多个实施例中,可以以任何适当的方式组合特定的特征、结构或特性。
为了清楚起见,在本申请中的附图中的个别组件也可以通过其在附图中的标签而不是特定的附图标记来提及。此外,可以利用跟在意思是“典型的”“(typ)”之后的附图标记来示出指代特定类型的组件(与特定组件不同)的附图标记。将理解的是,这些组件的配置将是类似组件的典型,为了简单和清楚,这些类似组件可以在附图中存在但不示出,或者不利用单独的附图标记来标记的其它方式的类似组件。相反,不将“(typ)”解释为指代组件、元件等,并且典型地用于其公开的功能、实现、目的等。
根据本申请中公开的实施例的方面,公开了用于在计算平台上安全收集平台遥测数据的机制。通过结合安全通信信道使用可信固件组件来实现上述机制。上述机制对于在计算平台上运行的软件也是透明的,且被配置为使得它们无法被使用软件篡改或不会受到诸如经由网络存取计算平台而入侵的外部威胁。
图1示出了根据一个实施例包括用于实现可信遥测机制的设置的架构100。架构100包括计算平台102,计算平台102包括在图中位于软件/硬件分割条下面的部分中显示的各种硬件和固件组件,包括处理器104。处理器104包括包含N个处理器核心108(也被描述为核心1......核心N)的处理器核心106。每一个处理器核心108包括一组机器特定寄存器(MSR)110、级1(L1)高速缓存以及级2(L2)高速缓存。每一个处理器核心108耦合到一致性互连112,其中一对集成存储器控制器(IMC)114和116以及最后一级高速缓存(LLC)118耦合到该一致性互连112。处理器104进一步被描绘为包含输入/输出(I/O)接口120和122以及包括可管理性引擎/创新引擎(ME/IE)124的可管理性组件。
架构100进一步描绘了在诸如耦合到IMC 114和116的DDR4或DDR5双内联存储器模块(DIMM)、非易失性闪存设备130、网络接口控制器(NIC)132以及基板管理控制器(BMC)134的相应的存储器设备中分配的存储器地址空间126和128。各种平台固件136组件被存储在闪存设备130中,包括包含BIOS(基本输入输出系统)138的统一可扩展固件接口(UEFI)固件、可管理性引擎固件140、创新引擎固件142、NIC固件144以及管理程序固件146。如进一步示出的,管理程序固件146包括用于生成遥测数据149的遥测驱动器147。
计算平台102被进一步示出连接到各种系统组件,包括集中系统管理引擎(PSME)148和POD管理器(PODM)150。一般而言,BMC 134可以连接到PSME 148和/或POD管理器150。在BMC 134连接到PSME148的实施例中,PSME 148促进实现在BMC 134和POD管理器150之间的通信。POD管理器继而连接到促进实现在各种系统组件和远程管理站154之间的通信的网络152。NIC 132也耦合到网络152。
为了简单起见且减少凌乱,网络152被示出为单个云;但是,网络152是可以使用相同技术和协议或不同技术和协议的一个或多个网络的例证。例如,系统中的一些组件,例如BMC 134、PSME 148和POD管理器150可以使用与NIC 132访问的网络相分离的网络。在一个实施例中,由BMC 134、PSME 148和POD管理器150使用的网络是在计算平台上运行的软件不能够访问的专用网络。
在可选配置下,平台可以不包括BMC,但是BMC可以位于平台外部,例如由外部BMC156所描述的。在一个实施例中,外部BMC 156经由带外(OOB)通信信道连接到ME/IE 124。可选地,BMC可以使用网络连接来连接到平台。
在平台初始化期间,如下文所描述的,包括管理程序146的固件代码将被加载到平台的存储器地址空间中未向在平台上运行的任何软件暴露的安全区域中,例如由存储器地址空间126中的安全区域158所描绘的。为了描绘的目的,存储器地址空间126和128被示出为分离的地址空间,因为它们被示出为耦合到IMC 114和116。但是,在实践中,用于存取耦合到IMC 114和116的存储器设备的物理存储器地址空间被映射到一个或多个虚拟地址空间。如进一步示出的,存储器地址空间128被描绘为包含OS内核174和用户空间176,使用应用运行在用户空间176中。
在平台硬件初始化之后,启动诸如操作系统的软件,并且向上述软件暴露部分的虚拟存储器地址空间。上述暴露的部分虚拟存储器地址空间不包括安全区域158,并且从而软件不知道该地址空间的存在。此外,在一些实施例中,处理器104被配置为防止任何非特权的固件或软件存取安全区域158。
在描绘图1a中的架构100a的可选配置下,在SRAM 160中存储全部或一部分的遥测数据149。依然,不向在平台硬件102上运行的任何软件暴露SRAM 160的存储器地址空间,并且从而保护其免受平台软件的存取。在另一配置中,全部或部分的遥测数据被存储在作为平台硬件一部分的一组寄存器中。
计算平台102进一步被配置为托管各种软件组件,被描绘为m个操作系统162a……162m,每一个操作系统运行各自的应用164a……164m。一般而言,操作系统可以在本机上的平台硬件上或在虚拟机(VM)或容器上运行。在图2a中被示出为固件/软件架构200a的一个实施例中,管理程序固件146a被配置为用于托管多个虚拟机VM 1……VM M的类型1管理程序。在常规的方案下,针对类型1的管理程序的功能可以在软件层中实现。但是,在固件/软件架构200a下,类型1管理程序功能在固件层中实现。
在图2b中示出的固件/软件架构200b下,类型1管理程序功能在类型1管理程序固件146a和类型1管理程序软件202之间划分。在该实施例中,遥测驱动器147仍然在管理程序的固件部分中实现,并且管理程序软件202被实现为能够将数据向下传递到管理程序固件146a但是无法存取安全存储器区域158中的数据的抽象层。可选地,如果遥测数据149被存储在SRAM 160中,则同样避免管理程序软件202进行存取。
其他实施例支持基于容器的软件执行环境,在该环境下在容器中执行应用。近来已经在数据中心中广泛采用了对基于容器的执行环境的使用,例如基于Docker的容器。(要注意的是,还可以部署不使用Docker的其他基于容器的实现。)在图2C的固件/硬件架构200c和图2d的固件/硬件架构200d中示出了基于容器的软件执行环境的两个示例性实施例。在固件/硬件架构200c中,管理程序固件146c包括被配置为实现多个容器,如被描绘为容器1……容器M,的操作系统虚拟化层204。在固件/硬件架构200d下,操作系统虚拟化层206以软件被实现为位于管理程序固件146d之上的抽象层。虽然为了方便起见被示出为单个层,但是在一些实施例中,OS虚拟化层可以包括多层组件,例如位于OS内核之上的操作系统内核和虚拟化层。例如,在Docker架构下,Docker层位于主机OS和容器之间。在图2c和2d中的实施例下,每一个容器包括用于促进在容器内执行一个或多个应用164的一组二进制可执行文件和库(二进制文档/库)163。
在另一实施例(未示出)中,操作系统虚拟化层功能的实现在固件组件和软件组件之间划分。在固件/硬件架构200c和200d两者下,所有软件组件被防止存取存储器地址空间126的安全区域158,或可选择地被防止存取SRAM 160中的遥测数据149。
图3示出了根据一个实施例说明在平台初始化期间执行的操作和逻辑的流程图300。该过程以平台重置或冷启动事件开始,如在开始框302中示出的。在框304中,UEFIBIOS开始加载和执行。UEFI提供了使得平台固件能够通过UEFI固件模块的方式被扩展超过基本BIOS代码之外的可扩展固件接口,上述UEFI固件模块包括ME固件140、IE固件142和NIC固件144。在框306中,加载ME固件140。如果实现创新引擎,则在框308中加载IE固件142。然后,在框310中加载NIC固件144。
在可供替换的配置下,可以将管理程序固件146存储在机载计算平台上,例如利用在闪存130中存储的其他平台固件,或者可以通过网络152对其进行安全加载。如在决策框312中所示出的,确定管理程序固件是否是本地的或者是否要经由安全网络信道被加载。如果管理程序被存储在本地,则在框314中从机载存储装置对其进行加载。如果要通过网络对其进行安全加载,则在框316中建立安全网络信道,并且在框318中通过安全网络信道加载管理程序固件。在图1中描绘的一个实施例中,管理程序固件146被存储为从网络存储位置存取的iPXE固件镜像。iPXE支持各种加载机制,包括从iSCSI存储附加网络(SAN)存取iPXE固件镜像。iPXE固件镜像还可以经由HTTP从网络服务器、经由FCOE(以太网上光纤信道)从光纤信道以及在无限带宽网络上进行加载。在一个实施例中,对iPXE固件镜像进行加密,并且被存储在平台上的相应解密密钥用于对iPXE固件镜像进行解密。
在框320中,管理程序固件被加载到安全存储器中。例如,如果被本地存储,则管理程序固件146将被从闪存130加载到安全存储器158中,或者,如果被存储在网络中,则将通过网络进行加载并被加载到安全存储器158中。
在框322中,管理程序固件在自身和ME/IE之间建立安全信道。这在图1中被描绘为安全信道166。在一个实施例中,使用证书170和172来建立安全信道。在一个实施例中,证书170和172被存储在BMC 134中并且被从BMC 134获取。除了使用基于证书的安全方案,可以使用各种其他公知的方案来建立安全信道166,如本领域中的熟练技术人员将认识到的。
在框324中,完成平台固件加载,之后,在结束框326中加载软件和/或启动一个或多个操作系统。例如,在管理程序固件146实现类型1管理程序的情况下,将加载用于实现一个或多个虚拟机的软件,之后在VM上启动操作系统镜像。如果管理程序固件146被配置为在操作系统虚拟化层中实现,则加载相应的容器软件,之后加载并且启动在容器中运行的操作系统镜像。
图4示出了说明用于收集和安全地转发遥测数据的进行中操作的流程图400。如在框402和404中示出的,遥测驱动器收集涉及在计算平台上运行的软件的遥测数据并且将收集到的软件遥测数据存储在安全存储器中。并行地,在框406中遥测驱动器还从平台硬件寄存器收集遥测数据并且在框408中将收集到的硬件遥测数据存储在安全存储器中。
在框410中,ME/IE读取处理器核心MSR遥测数据。在框412中,遥测驱动器使用与ME/IE建立的安全信道来存取来自ME/IE的MSR遥测数据,并且然后,在框414中,将MSR遥测数据存储在安全存储器中。
如通过在图4中描述的循环所描绘的,一般而言,框402、404、406、408、410、412和414中的每一个操作在持续的基础上执行。定期地,或者响应于针对遥测数据的请求,遥测驱动器向BMC提供收集到的软件、硬件和处理器核心MSR遥测数据,如在框416中示出的。类似地,定期地或按需地,POD管理器存取收集到的来自BMC的软件、硬件和处理器核心MSR遥测数据,如在框418中示出的。
使用提交、完成队列模型的处理器遥测事件生成
如在图5中示出的,在今天的计算平台上存在许多遥测数据源。但是,一般而言,即使是在RAS特征级别上对暴露遥测信息也没有合并。此外,信息格式在平台生成之间可以不同。在平台供应商和操作系统之间也存在利益冲突;例如,OS想看见每一个错误,而供应商想要对错误进行抽象以避免不必要的支持电话。作为结果,相同的遥测特征在不同的计算平台上被不同地暴露。
根据本申请中公开的实施例的进一步方面,实现提交和完成队列模型,在该模型下队列命令被提交到提交队列、被从提交队列取回并被处理以生成和/或收集遥测数据。实现完成队列,在该完成队列中输入完成队列条目,该完成队列条目包含下列中的一个或多个:识别队列命令的数据、经由处理队列命令而生成和/或收集的遥测数据以及这样的遥测数据的位置,同时遥测数据的消费者读取该完成队列条目并且基于该完成队列条目中的数据来存取遥测数据。
在图6中示出了提交和完成队列模型的一个实施例。如所描绘的,该模型包括主机600和队列改变通知框602。在所说明的实施例中,提交队列604和完成队列606中的每一个在主机存储器608中实现。但是,这仅仅是示例性的,因为模型可以在其他存储器中实现,例如SRAM 160。在所说明的实施例中,提交队列604被实现为包含头部指针610和尾部指针612的循环FIFO(先进先出)队列。类似地,完成队列606被实现为包含头部指针614和尾部指针616的循环FIFO队列。
如通过带圆圈的数字和相关联的操作进一步描绘的,在该机制下处理遥测数据按照下面进行。首先,在提交队列604中当前由尾部指针612指向的时隙处提交队列命令,并且使尾部指针前进一个时隙。在所描绘的实施例中,通过表示BMC或IE的BMC/IE 605来提交队列命令;但是,这仅是示例性的,因为在主机上或与主机通信的其他管理控制器或管理实体能够发布该队列命令。
队列命令识别要由遥测数据提供商之一生成和/或转发的遥测数据。在第二操作中,BMC/IE 605按下提交队列门铃以向主机硬件通知已经向提交队列604提交了新的队列命令,如由提交队列尾部门铃618指示的。如由第三操作所描绘的,主机硬件(例如,主机上的IP块、处理器微代码或SMM)取回由头部指针610指向的先前提交的队列命令,并且使头部指针前进一个时隙。然后,在第四操作期间由遥测数据提供商处理该队列命令。
在一个示例中,BMC或IE请求主机硬件在特定的遥测队列号(缺省时可以是公用队列)中以10秒间隔提供存储器带宽信息,主机硬件接受该命令并且如果其能够提供所请求的操作,则做出响应,指示该命令是成功的。接下来,主机硬件开始将存储器带宽信息每10秒钟流式传送到该遥测队列号。
在另一示例中,每当处理器核心温度达到一阈值时,例如85℃,BMC或IE就请求主机硬件在遥测队列号中提供通知。(可供替换地,可以使用滤波器来识别特定核心或插座编号。)主机硬件监控处理器核心温度并且每当核心温度超过该阈值时,其向遥测队列号发送通知。
在完成对队列命令的处理之后,执行第五操作,在该第五操作下,在由尾部指针616当前指向的时间处向完成队列606输入完成队列条目并且使尾部指针前进一个时隙。一般而言,完成队列条目可以包括下列中的一个或多个:识别已经完成的队列命令的数据、经由处理队列命令而生成和/或收集的遥测数据或指向这样的遥测数据的指针。在这之后,在一个实施例中,在第六操作期间生成中断以向消费者通知新的遥测数据是可用的。可选地,在拉模型下,消费者将响应于轮询或门铃响声而定期地拉遥测数据。在第七操作期间,读取头部指针614的位置,并且使头部指针614前进一个时隙。然后,向消费者提交识别新头部的门铃响声,如由完成队列头部门铃620指示的。
在所描绘的实施例中,BMC/IE 605是遥测数据的消费者,但是,如前所述,这仅仅是示例性和非限制性的,因为在主机上的其他实体或与主机通信的其他实体可以是遥测数据的消费者。在各种方案下,提交和完成队列模型可以将生成的遥测数据放置在消费者能够存取的位置中,或者使适当的消费者知道经由门铃响声或中断可以获得遥测数据。在后面的这一方案下,消费者可以预先知道遥测数据在哪里(所以其能够从该位置获取该数据),或完成队列条目可以包含识别要获取的遥测数据的位置的信息。
如将由本领域的熟练技术人员所认识的,提交队列命令及处理队列命令通常是异步的,其中如果存在要做的任何未完成的工作(命令处理),则用于提交队列604的尾部指针612将在头部指针610“之前”。类似地,对于尚未完成的任何处理,头部指针614将在尾部指针616“之前”。此外,本领域的熟练技术人员将认识到,在循环FIFO时隙中的数据可以被实现为指向与队列自身分开存储的数据的指针。
图7示出了根据一个实施例用于设置提交队列和完成队列模型的流程图700。在框702中,识别要被用作数据提供商的遥测数据源。例如,在一个实施例中,基于已知的主机配置预先确定遥测数据源。在另一实施例中,可以动态地确定遥测数据源的全部或一部分,例如初始化主机的一部分。在框704中,识别一个或多个遥测数据消费者。然后,设置提交和完成队列,如由完成框706描绘的。
在可选的框708中,指导遥测数据提供商到哪里去提交其遥测数据(用于与推送模型一起使用,如下文所描述的)。如上文所讨论的,在一些实施例中,遥测数据提供商包括完成队列条目中识别其遥测数据在哪里的信息,或者消费者将预先知道要从哪里读取或“拉”遥测数据。
图8示出了说明当被应用于由BMC收集处理器遥测数据时提交和完成队列的示例性实现的架构800。除了具有先前讨论的类似附图标记的计算平台102的组件之外,计算平台102还包括具有相应寄存器806和808的PCIe(外围组件互连高速)接口802和804。IMC 114被进一步示出具有寄存器810,而IMC 116进一步包括寄存器812。NIC 132被进一步示出具有寄存器814。
在常规的方案下,BMC将从寄存器806、808、810、812和814中的每一个读取值,一般而言是定期的,并且与读取其他寄存器(未示出)一起。相反,在所描绘的实施例下,在计算平台上存在逻辑,例如位于IMC和PCIe接口中用于将存储在寄存器806、808、810、812和814中的相应遥测数据推送(即,写入)到SRAM 149、存储器地址空间128和/或其他寄存器(未示出)中(如通过“推”操作所描绘的)。当新数据被写入完成队列时隙时,队列完成门铃被按响。作为响应,BMC/IE 605,操作为消费者,读取已经被写入到该时隙中的数据,如通过“拉”操作所描绘的。在一个实施例中,遥测提供商将其数据发送至预定的地址,并且与要存储或缓冲遥测数据的地方相关联的逻辑将数据写在由完成队列中的条目识别的位置或遥测数据的消费者已知的预定位置。
在另一实施例中,消费者从由完成队列条目中的指针识别的位置(例如,存储器地址)拉遥测数据。例如,消费者将读取包括指针的完成队列条目,并且读取(拉)由该指针指向的遥测数据。
图8a示出了架构800a,在该架构下,将由遥测驱动器147收集的数据推送到SRAM149中的提交队列时隙中,并且随后响应于由BMC/IE605按响完成队列门铃而拉遥测数据。一般而言,该实施例以与图8中的实施例类似的方式操作,除了在该情况下遥测驱动器147收集数据并且然后将该数据推送到完成队列时隙中而不是推送到与寄存器806、808、810、812和814相关联的逻辑中。要注意的是,用于遥测驱动器147的代码仍然位于安全区域158中,而遥测数据149被存储在SRAM 149中。其一个原因在于,在一个实施例中,安全区域158被配置为使得仅允许管理程序固件146存取安全区域158。从而,为了从位于安全区域158之外的存储位置运行固件或软件,也不得不将遥测数据存储在位于安全区域158之外的其他地方。通过将数据存储在SRAM 160中,对于在计算平台上运行的软件,遥测数据仍然不可存取,这是由于SRAM 160的存在或可用性从未向任何软件暴露过,并且其也不是存储器地址空间126或128的一部分。
除了在图6中示出和在上文描述的单个提交和完成队列之外,可以使用多个提交和/或完成队列。例如,第一队列(遥测选择队列)可以用于BMC或IE,以告诉主机关于其想要存取哪些遥测项,而第二队列(遥测数据队列)可以供主机使用以基于在另一队列中选择的遥测项而流式传送遥测数据。在第一队列中,提交队列门铃被BME/IE按响并且被主机硬件消耗,并且响应队列门铃被主机硬件按响且被BMC/IE消耗。
在第二队列中,没有命令提交队列,只有完成队列,其中主机硬件提交遥测数据,其由BMC/IE获取。该门铃由主机硬件在其每次提交新数据时被按响,在一个实施例中,这将导致对BMC/IE的中断(如果由BMC/IE使能)。
图6示出了BMC/IE 605读取遥测数据。在另一实施例中,提交队列指示要使能或读取哪一个遥测数据,并且实际结果可能在主机硬件基于在遥测使能队列中指定的条件流式传送遥测数据的另一遥测队列上可用。
在当前的实现中,在主机和管理控制器之间的通信非常低。从而,使用管理控制器来卸载主机功能是非常困难的。在以下实施例下,实现了使用一个或多个存储器映射输入-输出(MMIO)存储器区域的机制,以便对管理控制器存储器区域的存取使用别名。在该方案下,可以使用各种机制来存取遥测数据并且将该遥测数据写入MMIO区域,使得遥测数据对于管理控制器而言看上去为其机载存储器的一部分,使得管理控制器能够直接存取该遥测数据。
图9示出了用于实现MMIO别名使用方案的一个实施例。存储器902的MMIO区域被划分成多个地址范围,其中每一个范围与相对应的存取机制相关联。在所描绘的示例中,这些包括MSR范围904、IMC范围906、系统管理总线(SMBus)范围908以及PCIe范围910。架构900进一步包括所使用的部分用于实现MMIO操作的MMIO逻辑框912。为了避免凌乱,在图9中在处理器104的顶部描绘了MMIO逻辑框912;但是,其是非计算核心的一部分并且耦合到处理器104上的IO互连,例如但不限于PCIe互连或通用路径互连(UPI),从而使得MMIO逻辑框912能够与计算平台102上的其他组件进行通信。
范围中的每一个使用相关联的存取机制来存取该范围中的数据。例如,MSR范围904被描绘为包括被标记为MSR核心1……MSR核心N的地址。类似地,IMC范围906被描绘为包括被标记为IMC寄存器1和IMC寄存器2的地址,而SMBus范围908被描绘为包括被标记为遥测1……遥测M的地址,以及PCIe范围910被描绘为包括标记有PCIe 1、PCIe2……PCIe Q的地址。一般而言,MMIO地址范围是管理控制器的板上存储器地址空间或是在平台板上且管理控制器能够存取的其它存储器地址空间。
图10中的流程图1000描绘了用于配置MMIO存取并且随后执行使得诸如管理控制器的遥测消费者能够仅仅通过向MMIO地址发布读取请求来存取遥测数据的持续操作的操作。在框1002、1004和1006中示出了配置操作,而在框1008、1010和1012中示出了持续操作。一般而言,可以在系统初始化期间或在运行时间期间执行配置操作。在运行时间期间执行持续操作。
在框1002中,识别遥测数据、位置和存取机制。在图9中示出的示例中,这些包括与处理器核心1-N、IMC寄存器810和812、PCIe寄存器806、808和814、以及与SMBus操作相关的各种遥测数据(未示出)相关联的MSR 110。这些中的每一个具有不同类型的存取机制,其也被识别。例如,在一个实施例中,通过ME/IE 124存取MSR 110。因此,MMIO逻辑912构建存取记录,该存取记录针对MSR 110定义通过ME/IE 124的存取机制,并且ME/IE 124被配置为实现该存取机制。IMC寄存器810和812可以分别经由IMC 114和116被存取。PCIe寄存器806、808和814可以通过PCIe架构被存取。SMBus数据可以经由用于存取SMBus(未示出)的处理器机制被存取。
在框1004中,在MMIO存储器区域中分配MMIO范围并且通过存取机制来划分MMIO存储器区域。通过存取机制来划分MMIO区域简化了用于实现MMIO操作的信息,而不是具有由遥测数据源MMIO地址识别的存取机制,地址的范围可以经由相对应的地址范围映射信息共享相同的存取机制。
在框1006中,MMIO逻辑框被编程为基于MMIO存储器划分来实现MMIO操作。这可以进一步涉及创建将给定的MMIO存储器地址映射到通过其存取机制定义的其位置的映射记录。例如,在系统启动期间,确定PCIe组件的数目,以便每一个PCI组件(包括其寄存器)在PCIe层级中具有唯一的地址。
一旦已经完成了框1002、1004和1006中的配置操作,可以执行持续运行时间操作,以使得诸如管理控制器(例如,BMC)的遥测数据消费者能够仅仅通过读取其自身的板上存储器就可以存取遥测数据。
在框1008中,遥测数据消费者向MMIO地址发布读取请求,经由该MMIO地址存取特定的遥测数据。在框1010中,与遥测数据相关联的存取机制用于存取遥测数据,这导致遥测数据被放在与消费者的读取请求相对应的MMIO地址中。然后,在框1012中,向遥测数据消费者返回遥测数据,以对读取请求进行服务。
返回到图9,使用双向“获得”箭头描绘各种遥测数据源。这些用于在逻辑上描绘向哪一个MMIO地址返回什么数据。如上文所讨论的,这经由合适的存取机制来实现。为了后面的讨论,假定BMC 134经由PCIe链路连接到ME/IE 124或处理器104,并且ME/IE 124在内部连接到一致互连112,在一个实施例中,该一致互连112是UPI互连。
我们将从PCIe遥测数据开始。BMC 134向在MMIO 902的PCIe范围910中被标记为PCIe 1的存储器地址发布读取请求。响应于在该存取处的读取请求,已经将逻辑编程(在前述配置操作期间),以使得从PCIe寄存器806获取数据。如果BMC 134经由PCIe互连连接到处理器104(但是不连接到ME/IE 124),则该数据在物理上通过PCIe互连架构被存取并且被返回到地址PCIe 1,在该点处向BMC 134返回PCIe寄存器806中的遥测数据,以对读取请求进行服务。如果BMC 134连接到ME/IE 124,则ME/IE 124将经由UPI到PCIe桥(未示出)存取数据。
类似的序列用于存取MSR、IMC和SMBus遥测数据中的任何一个;但是,存取机制不同,因为没有一个遥测数据源直接耦合到PCIe互连架构。在其下BMC 134连接到ME/IE 124的实现中,ME/IE 124能够经由一致互连112存取IMC寄存器810和812中的每一个。同样地,MSR 110可以经由一致互连112被存取。(要注意的是,一致互连112的一致性方面不用于这些目的,因为未使用用于支持存储器一致性的高速缓存和本地代理。)为了存取MSR 110和/或SMBus遥测数据,处理器104可能需要首先被设置到系统管理模式(SMM)。从而,用于存取这些遥测数据的存取机制将调用SMM中断,并且合适的SMM中断服务例程(ISR)将用于获取数据。这样的SMM ISR一般而言将被实现为BIOS 138的一部分。
除了前述附图描绘的实施例之外,还可以组合这些实施例的方面以收集遥测数据。例如,除了在图8和8a中示出的架构800和800a之外,生产者-消费者提交完成队列模型还可以应用于图1、1a和2a-2d的基于固件的架构或图9的MMIO架构。
如在本申请中使用的,包括随后的权利要求书,软件和固件是不同类型的代码和/或指令。一般而言,固件组件可以包括作为平台固件的一部分(例如UEFI固件代码的一部分)的代码或指令。一般而言,平台固件被加载和/或配置以在平台硬件初始化期间执行。相反,软件包括在平台硬件初始化之后执行的代码或指令,例如但不限于操作系统组件、在操作系统上运行的应用软件、管理程序或OS虚拟化层的软件部分以及用于实现由管理程序或OS虚拟化层托管的虚拟机或容器的软件代码。
在随后编号的条款中陈述本申请中描述的主题的另外的方面:
1.一种方法,包括:
实现用于从计算平台上的多个遥测数据源安全地收集平台遥测数据的可信遥测机制;
从所述多个遥测数据源收集遥测数据;以及
安全地存储收集到的遥测数据,
其中,所述可信遥测机制对于在所述计算平台上运行的软件不可存取,并且所述遥测数据被以对于在所述计算平台上运行的软件不可存取的方式安全地存储。
2.根据条款1所述的方法,其中,所述计算平台包括多个固件组件,并且其中,所述可信遥测机制包括所述多个固件组件中的至少一个。
3.根据条款2所述的方法,其中,所述固件包括作为统一可扩展固件接口(UEFI)固件组件的一部分的遥测驱动器。
4.根据条款2或3所述的方法,其中,所述计算平台包括系统存储器,并且所述多个固件组件中的至少一个包括遥测驱动器,所述方法进一步包括:
在所述系统存储器中实现对于在所述计算平台上运行的软件不可存取的安全区域;以及
将所述遥测驱动器加载到所述系统存储器的所述安全区域中。
5.根据条款4所述的方法,进一步包括将由所述遥测驱动器收集的遥测数据存储在所述系统存储器中的所述安全区域中。
6.根据条款4或5所述的方法,进一步包括将由所述遥测驱动器收集的遥测数据存储在下列中的至少一个中的安全区域中:所述计算平台上的静态随机存取存储器(SRAM)和多个寄存器。
7.根据条款4-6中的任何一项所述的方法,其中,所述计算平台包括具有多个机器专用寄存器(MSR)和被使能以存取所述多个MSR的可管理性组件的处理器,所述方法进一步包括:
在所述遥测驱动器和可管理性实体之间创建安全通信信道;
经由所述可管理性实体从所述多个MSR收集遥测数据;以及
通过所述安全通信信道向所述遥测驱动器传输所述遥测数据。
8.根据前述条款中的任何一个所述的方法,其中,所述计算平台包括具有多个机器专用寄存器(MSR)的处理器并且包括具有相应组的一个或多个组件寄存器的多个组件,所述方法进一步包括:
从至少一个MSR收集遥测数据;以及
从至少一个组件寄存器收集遥测数据。
9.根据前述条款中的任何一个所述的方法,进一步包括:
实现提交队列和完成队列,以促进收集所述遥测数据的至少一部分。
10.根据条款9所述的方法,进一步包括:
识别所述计算平台中的多个遥测数据源;
向所述提交队列中的时隙提交队列命令,所述队列命令识别遥测数据,所述遥测数据将由遥测数据提供商中的一个执行生成和转发动作中的至少一个;
从所述提交队列取回所述队列命令;
处理所述队列命令,以对由所述队列命令识别的遥测数据执行生成和转发动作中的至少一个;
向所述完成队列中的时序输入处理完成条目,所述处理完成条目包括下列中的至少一个:识别被处理的队列命令的数据、所述遥测数据以及所述遥测数据的位置;
使用包含在处理完成队列条目中的数据来存取所述遥测数据;以及安全地存储所述遥测数据。
11.根据前述条款中的任何一个所述的方法,进一步包括:
针对所述计算平台中的多个遥测数据源中的每一个实现存储器映射输入输出(MMIO)别名,每一个MMIO别名将遥测数据源映射到所述计算平台上的存储器中对于在所述计算平台上运行的软件不可存取的相对应的地址;
接收包含存储器地址的存储器读取请求,以存取所述存储器;
使用与所述存储器地址相关联的遥测数据存取机制,以使得由与针对所述存储器地址的MMIO别名相对应的遥测数据源提供的遥测数据被放置在所述存储器中由所述存储器地址定义的位置处;以及
返回所述遥测数据以对读取请求进行服务。
12.根据条款11所述的方法,进一步包括:
将所述存储器划分为多个区域;
将遥测数据存取机制与所述多个区域中的每一个相关联;
响应于接收到所述存储器读取请求,
识别所述存储器地址位于其中的区域;以及
使用与被被识别为存取所述遥测数据源的区域相关联的存取遥测数据存取机制。
13.一种计算平台,包括:
处理器,其包括至少一个存储器控制器;
一个或多个存储器设备,每一个耦合到所述处理器中的存储器控制器;
平台固件,包括用于促进收集平台遥测数据的一个或多个遥测固件组件;
其中,所述平台固件被配置为,在由处理器执行时:
将存储器设备中的存储器的一部分配置为安全存储器区域;
加载一个或多个固件组件以促进将平台遥测数据收集到所述安全存储器区域中;
执行所述安全存储器区域中的所述一个或多个遥测固件组件,以收集平台遥测数据。
14.根据条款13所述的计算平台,进一步包括:
存储在所述计算平台上的软件,所述软件被配置为由所述处理器执行,
其中,执行所述平台固件使得所述计算平台配置被分配用于执行所述软件的至少一个虚拟存储器空间,并且其中,防止所述软件存取存储器的安全区域。
15.根据条款13或14所述的计算平台,其中,搜书平台固件包括作为统一可扩展固件接口(UEFI)固件的一部分的遥测驱动器。
16.根据条款13-15中的任何一个所述的计算平台,其中,所述遥测固件被进一步配置为,在执行时,将收集到的遥测数据的至少一部分存储在所述安全存储器区域中。
17.根据条款13-16中的任何一个所述的计算平台,其中,所述遥测固件被进一步配置为,在执行时,将所述遥测数据的至少一部分存储在下列中的至少一个中:所述计算平台上的静态随机存取存储器(SRAM)和多个寄存器。
18.根据条款13-17中的任何一个所述的计算平台,其中,所述遥测固件包括遥测驱动器,其中,所述处理器包括多个机器专用寄存器(MSR)和被使能以存取所述多个MSR的可管理性组件,并且其中,所述平台固件被进一步配置为,在执行时:
在所述遥测驱动器和可管理性实体之间创建安全通信信道;
经由所述可管理性实体从所述多个MSR收集遥测数据;以及
通过所述安全通信信道向所述遥测驱动器传输所述遥测数据。
19.根据条款13-18中的任何一个所述的计算平台,其中,所述平台固件被进一步配置为,在执行时,实现提交队列和完成队列以促进收集所述遥测数据的至少一部分。
20.根据条款19所述的计算平台,其中,所述平台固件被进一步配置为,在执行时:
识别所述计算平台中的多个遥测数据源;
向所述提交队列中的时隙提交队列命令,所述队列命令识别遥测数据,所述遥测数据将由遥测数据提供商中的一个执行生成和转发动作中的至少一个;
从所述提交队列取回所述队列命令;
处理队列命令,以对由所述队列命令识别的遥测数据执行生成和转发动作中的至少一个;
将处理完成条目输入到所述完成队列中的时隙中,所述处理完成条目包括下列中的至少一个:识别被处理的队列命令的数据、所述遥测数据以及所述遥测数据的位置;
使用包含在处理完成队列条目中的数据来存取所述遥测数据;以及
将所述遥测数据安全地存储在所述计算平台上。
21.根据条款13-20中的任何一个所述的计算平台,其中,所述计算平台包括具有板上存储器的管理控制器,并且所述平台固件进一步被配置为,在执行时:
针对所述计算平台中的多个遥测数据源中的每一个实现存储器映射输入输出(MMIO)别名,每一个MMIO别名将遥测数据源映射到所述管理控制器的所述板上存储器中的相对应的地址;
接收包含存储器地址的存储器读取请求,以存取所述管理控制器的所述板上存储器;
使用与所述存储器地址相关联的遥测数据存取机制,以使得由与针对所述存储器地址的MMIO别名相对应的遥测数据源提供的遥测数据被放置在所述板上存储器中由所述存储器地址定义的位置处;以及
返回所述遥测数据以对读取请求进行服务。
22.根据条款21所述的计算平台,进一步包括:
将所述板上存储器划分为多个区域;
将遥测数据存取机制与所述多个区域中的每一个相关联;
响应于接收到所述存储器读取请求,
识别所述存储器地址位于其中的区域;以及
使用与被识别为存取所述遥测数据源的区域相关联的存取遥测数据存取机制。
23.一种具有存储在其上的固件指令的非暂时性机器可读介质,所述固件指令包括一个或多个遥测固件组件,所述固件指令被配置为由包括系统存储器的计算平台中的处理器执行,其中,所述固件指令在被执行时使得所述计算平台能够:
将系统存储器的一部分配置为安全存储器区域;
将一个或多个遥测固件组件加载到所述安全存储器区域中;
执行所述安全存储器区域中的所述一个或多个遥测固件组件以收集平台遥测数据。
24.根据条款23所述的非暂时性机器可读介质,进一步包括:
存储在所述计算平台上的软件,所述软件被配置为由所述处理器执行,
其中,所述固件指令的执行使得所述计算平台配置被分配用于所述软件的执行的至少一个虚拟存储器空间,并且其中,防止所述软件存取存储器的安全区域。
25.根据条款23或24的非暂时性机器可读介质,其中,所述一个或多个遥测固件组件包括作为统一可扩展固件接口(UEFI)固件的一部分的遥测驱动器。
26.根据条款23-25中的任何一个所述的非暂时性机器可读介质,其中,所述固件指令进一步被配置为,在执行时,将收集到的遥测数据的至少一部分存储在所述安全存储器区域中。
27.根据条款23-26中的任何一个所述的非暂时性机器可读介质,其中,所述固件指令被进一步配置为,在执行时,将收集到的遥测数据的至少一部分存储在下列中的至少一个中:所述计算平台上的静态随机存取存储器(SRAM)和多个寄存器。
28.根据条款23-27中的任何一个所述的非暂时性机器可读介质,其中,所述一个或多个遥测固件组件包括遥测驱动器,其中,所述处理器包括多个机器专用寄存器(MSR)和被使能以存取所述多个MSR的可管理性组件,并且其中,所述固件指令被进一步配置为,在执行时:
在所述遥测驱动器和可管理性实体之间创建安全通信信道;
经由所述可管理性实体从所述多个MSR收集遥测数据;以及
通过所述安全通信信道向所述遥测驱动器传输所述遥测数据。
29.根据条款23-28中的任何一个所述的非暂时性机器可读介质,其中,所述固件指令被进一步配置为,在执行时,实现提交队列和完成队列以促进收集所述遥测数据的至少一部分。
30.根据条款29所述的非暂时性机器可读介质,其中,所述固件指令被进一步配置为,在执行时:
识别所述计算平台中的多个遥测数据源;
向所述提交队列中的时隙提交队列命令,所述队列命令识别遥测数据,所述压测数据将由遥测数据提供商中的一个执行生成和转发动作中的至少一个;
从所述提交队列取回所述队列命令;
处理所述队列命令,以对由所述队列命令识别的遥测数据执行生成和转发动作中的至少一个;
将处理完成条目输入到所述完成队列中的时隙中,所述处理完成条目包括下列中的至少一个:识别被处理的队列命令的数据、所述遥测数据和所述遥测数据的位置;
使用包含在处理完成队列条目中的数据来存取所述遥测数据;以及
将所述遥测数据安全地存储在所述计算平台上。
31.一种方法,包括:
识别计算平台中的多个遥测数据源;
向提交队列中的时隙提交队列命令,所述队列命令识别遥测数据,所述遥测数据将由遥测数据提供商中的一个执行生成和转发动作中的至少一个;
从所述提交队列取回所述队列命令;
处理所述队列命令,以对由所述队列命令识别的遥测数据执行生成和转发动作中的至少一个;
将处理完成条目输入到完成队列中的时隙中,所述处理完成条目包括下列中的至少一个:被处理的队列命令、所述遥测数据和所述遥测数据的位置;以及
经由遥测数据消费者存取所述遥测数据。
32.根据条款31所述的方法,进一步包括将所述提交队列和完成队列中的每一个实现为包括头部指针和尾部指针的循环队列。
33.根据条款31或32所述的方法,进一步包括当所述队列命令被提交到所述提交队列时,按响提交队列门铃。
34.根据条款31-33中的任何一个所述的方法,进一步包括当处理完成条目被输入到所述完成队列时,按响完成队列门铃。
35.根据条款31-34中的任何一个所述的方法,其中,所述队列命令由管理控制器提交,所述管理控制器被包括在所述计算平台上或与所述计算平台通信。
36.根据条款31-35中的任何一个所述的方法,其中,所述遥测数据消费者包括管理控制器,所述管理控制器被包括在所述计算平台上或与所述计算平台通信。
37.根据条款31-36中的任何一个所述的方法,进一步包括:
当完全队列条目被输入到所述完成队列时,生成中断;以及
响应于所述中断而执行中断服务例程,所述中断服务例程用于对与所述完成队列条目相关联的遥测数据执行存取或转发动作中的至少一个。
38.根据条款31-37中的任何一个所述的方法,其中,处理所述队列命令将遥测数据推送到所述完成队列中的所述时隙中。
39.根据条款31-38中的任何一个所述的方法,其中,所述计算平台包括具有多个机器专用寄存器(MSR)的处理器,并且至少部分地经由被实现用于存取MSR中的遥测数据并且将所述遥测数据推送到所述完成队列中的所述时隙中的基于可信固件遥测驱动器来执行处理所述队列命令。
40.根据条款31-39中的任何一个所述的方法,其中,所述遥测数据消费者通过下列中的一个来存取所述遥测数据:从所述完成队列中的时隙读取遥测数据和从由所述完成队列中的时隙中的数据识别的位置读取所述遥测数据。
41.一种计算平台,包括:
处理器,其包括至少一个存储器控制器;
一个或多个存储器设备,每一个存储器设备耦合到所述处理器中的存储控制器;
所述计算平台,用于:
识别所述计算平台中的多个遥测数据源;
向提交队列中的时隙提交队列命令,所述队列命令识别遥测数据,所述遥测数据将由遥测数据提供商中的一个执行生成和转发动作中的至少一个;
从所述提交队列取回所述队列命令;
处理所述队列命令,以对由所述队列命令识别的遥测数据执行生成和转发动作中的至少一个;
将处理完成条目输入到完成队列中的时隙中,所述处理完成条目包括下列中的至少一个:被处理的队列命令、所述遥测数据和所述遥测数据的位置;以及
使得通过遥测数据消费者来存取所述遥测数据。
42.根据条款41所述的计算平台,其中计算平台进一步用于将所述提交队列和完成队列中的每一个实现为包括头部指针和尾部指针的循环队列。
43.根据条款41或42所述的计算平台,其中,所述计算平台进一步用于当队列命令被提交到所述提交队列时,按响提交队列门铃。
44.根据条款41-43中的任何一个所述的计算平台,其中,所述计算平台进一步用于当处理完成条目被输入到所述完成队列时,按响完成队列门铃。
45.根据条款41-44中的任何一个所述的计算平台,其中,所述队列命令由管理控制器提交,所述管理控制器被包括在所述计算平台上或与所述计算平台通信。
46.根据条款41-45中的任何一个所述的计算平台,其中,所述遥测数据消费者包括管理控制器,所述管理控制器被包括在所述计算平台上或与所述计算平台通信。
47.根据条款41-46中的任何一个所述的计算平台,其中,所述计算平台进一步用于:
当完成队列条目被输入到所述完成队列时,生成中断;以及
响应于所述中断而执行中断服务例程,所述中断服务例程用于对与所述完成队列条目相关联的遥测数据执行存取和转发动作中的至少一个。
48.根据条款41-47中的任何一个所述的计算平台,其中,处理所述队列命令将遥测数据推送到所述完成队列中的时隙中。
49.根据条款41-48中的任何一个所述的计算平台,其中,所述处理器包括多个机器专用寄存器(MSR),并且至少部分地经由被实现为存取MSR中的遥测数据并将所述遥测数据推送到所述完成队列中的时隙中的基于可信固件的遥测驱动器来执行处理所述队列命令。
50.根据条款41-49中的任何一个所述的方法,其中,所述遥测数据消费者被使能以通过下列中的一个来存储所述遥测数据:从所述完成队列中的时序读取所述遥测数据和从由所述完成队列中的时隙中的数据识别的位置读取所述遥测数据。
51.一种非暂时性机器可读介质,具有存储在其上的指令,所述指令被配置为由包括至少一个存储器设备的计算平台中的一个或多个处理元件执行,其中,所述指令在被执行时使得所述计算平台执行条款31-40中的任何一个的方法。
52.一种方法,包括:
针对计算平台中的多个遥测数据源中的每一个实现存储器映射输入输出(MMIO)别名,每一个MMIO别名将遥测数据源映射到所述计算平台上的存储器中的相对应的地址;
接收包括地址的存储器读取请求,以存取所述存储器;
使用与所述存储器地址相关联的遥测数据存取机制,以使得由与针对所述存储器地址的MMIO别名相对应的遥测数据源提供的遥测数据被放置在所述存储器地址中;以及
返回所述遥测数据以对读取请求进行服务。
53.根据条款52所述的方法,其中,所述存储器位于所述计算平台上的管理控制器中。
54.根据条款52或53所述的方法,进一步包括:
将所述存储器划分为多个区域;
将遥测数据存取机制与所述多个区域中的每一个相关联;
响应于接收到所述存储器读取请求,
识别所述存储器地址位于其中的区域;以及
使用与被识别为存取所述遥测数据源的区域相关联的存取遥测数据存取机制。
55.根据条款52-54中任何一个所述的方法,其中,所述计算平台包括具有多个机器专用寄存器(MSR)的处理器,并且其中,所述遥测数据存取机制存取包括MSR的遥测数据源。
56.根据条款52-55中任何一个所述的方法,其中,所述计算平台包括具有至少一个存储器控制器的处理器,每一个存储器控制器具有至少一个相关联的寄存器,并且其中,所述遥测数据存取机制存取与存储器控制器相关联的寄存器。
57.根据条款52-56中的任何一个所述的方法,其中,所述计算平台包括具有系统管理总线(SMBus)的处理器,并且其中,所述遥测数据存取机制存取由经由所述SMBus存取的遥测数据源生成的遥测数据。
58.根据条款52-57中的任何一个所述的方法,其中,通过如下操作来经由所述SMBus存取所述遥测数据:
调用系统管理模式(SMM)中断;
响应于所述SMM中断,将处理器置于SMM中;
执行SMM中断服务例程(ISR)以对所述SMM中断进行服务,所述SMM ISR将经由SMBus从所述遥测数据源存取的遥测数据返回。
59.根据条款52-57中的任何一个所述的方法,其中,所述计算平台包括多个外围组件互连高速(PCIe)设备,每一PCIe设备具有一个或多个相关联的寄存器,并且所述遥测数据存取机制存取PCIe设备寄存器中的遥测数据。
60.一种计算平台,包括:
处理器,其包括至少一个存储器控制器;
一个或多个存储器设备,每一存储器设备耦合到所述处理器中的存储器控制器;
所述计算平台用于,
针对计算平台中的多个遥测数据源中的每一个实现存储器映射输入输出(MMIO)别名,每一个MMIO别名将遥测数据源映射到所述计算平台上的存储器中的相对应的地址;
接收包括地址的存储器读取请求,以存取所述存储器;
使用与所述存储器地址相关联的遥测数据存取机制,以使得由与针对所述存储器地址的MMIO别名相对应的遥测数据源提供的遥测数据被放置在所述存储器地址中;以及
返回所述遥测数据以对读取请求进行服务。
61.根据条款60所述的计算平台,其中,所述计算平台进一步包括具有板上存储器的管理控制器,并且所述MMIO别名被映射到所述管理控制器中的所述板上存储器。
62.根据条款60或61所述的计算平台,其中,所述计算平台进一步用于:
将所述存储器划分为多个区域;
将遥测数据存取机制与所述多个区域中的每一个相关联;
响应于接收到所述存储器读取请求,
识别所述存储器地址位于其中的区域;以及
使用与被识别为存取所述遥测数据源的区域相关联的存取遥测数据存取机制。
63.根据条款60-63中的任何一个所述的计算平台,其中,所述处理器包括多个机器专用寄存器(MSR),并且其中,所述遥测数据存取机制存取包括MSR的遥测数据源。
64.根据条款60-63中任何一个所述的计算平台,其中,每一个存储器控制器具有至少一个相关联的寄存器,并且其中,所述遥测数据存取机制存取与存储器控制器相关联的寄存器。
65.根据条款60-64中的任何一个所述的计算平台,其中,所述计算平台包括具有系统管理总线(SMBus)的处理器,并且其中,所述遥测数据存取机制存取由经由SMBus存取的遥测数据源生成的遥测数据。
66.根据条款60-65中的任何一个所述的计算平台,其中,通过如下操作经由所述SMBus存取所述遥测数据:
调用系统管理模式(SMM)中断;
响应于所述SMM中断,将所述处理器置于SMM中;
执行SMM中断服务例程(ISR)以对所述SMM中断进行服务,所述SMM ISR将经由所述SMBus从所述遥测数据源存取的遥测数据返回。
67.根据条款60-66中的任何一个所述的计算平台,其中,所述计算平台包括多个外围组件互连高速(PCIe)设备,每一个PCIe设备具有一个或多个相关联的寄存器,并且所述遥测数据存取机制存取PCIe设备寄存器中的遥测数据。
68.一种非暂时性机器可读介质,具有存储在其上的指令,所述指令被配置为由包括至少一个存储器设备的计算平台中的一个或多个处理元件执行,其中,所述指令在被执行时使得所述计算平台执行条款52-59中的任何一个所述的方法。
此外,本说明书中的实施例不仅可以在半导体芯片中而且可以在机器可读介质中实现。例如,上文描述的设计可以被存储在与用于设计半导体设备的设计工具相关联的机器可读介质上和/或嵌入到与用于设计半导体设备的设计工具相关联的机器可读介质中。示例包括VHSIC硬件描述语言(VHDL)语言、Verilog语言或SPICE语言格式的网表。一些网表示例包括:行为级别网表、寄存器传输级别(RTL)网表、门级网表以及晶体管级别网表。机器可读介质还包括具有诸如GDS-II文件的布局信息的介质。此外,可以在用于执行上文描述的教导的方法的仿真环境中使用用于半导体芯片设计的网表文件或其他机器可读介质。
虽然已经参考特定的实现描述了一些实施例,但是根据一些实施例,其他的实现是可能的。此外,在附图中说明的和/或在本申请中描述的元件或其他特征的布置和/或顺序无需以所描绘和描述的特定方式布置。根据一些实施例,许多其他布置是可能的。
在图中示出的每一个系统中,在一些情况下,上述元件可以各自具有相同的附图标记或不同的附图标记以表明所表示的元件可以是不同的和/或相似的。但是,元件可以足够地灵活以具有不同的实现并且与在本申请中示出或描述的一些或全部系统一起工作。附图中示出的各种元件可以是相同的或不同的。哪一个被称为第一元件以及哪一个被称为第二元件是任意的。
在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其派生物。应该理解的是,这些术语并不意在作为彼此的同义词。而是,在特定的实施例中,“连接”可以用于指示两个或更多元件彼此直接物理或电接触。“耦合”可以指代两个或更多元件直接物理或电接触。但是,“耦合”还可以指代两个或更多元件彼此未直接接触,但是仍然彼此合作或交互。
实施例是本发明的实现或示例。在说明书中提及的“实施例”、“一个实施例”、“一些实施例”、或“其他实施例”指的是结合实施例描述的特定特征、结构或特性被包括在本发明的至少一些实施例中但是未必被包括在本发明的所有实施例中。各种出现“实施例”、“一个实施例”或“一些实施例”不必全部指代相同的实施例。
并非在本申请中描述及描绘的所有组件、特征、结构、特性等都需要被包含在特定实施例或多个实施例中。如果说明书声明组件、特征、结构或特性“也许”、“可能”、“能够”或“可以”被包括,例如,则不要求包含该特定的组件、特征、结构或特性。如果说明书或权利要求书提及“一”或“一个”元件,这并不是指仅存在该元件中的一个。如果说明书或权利要求书提及“另外的”元件,则这并不排除存在超过一个的另外的元件。
斜体字母,例如在前述具体实施方式中的‘m’、‘n’‘M’、‘N’等用于描述整数数字,并且特定字母的使用并不限于特定的实施例。此外,可以在单独的权利要求中使用相同的字母来表示单独的整数数字,或者可以使用不同的字母。此外,在具体实施方式中使用特定的字母可以与在具体实施方式中的相同主题有关的权利要求中使用的字母相匹配或者可以不相匹配。
如上文所讨论的,可以通过诸如由处理器等执行的固件代码或指令的相对应的固件组件促进实现实施例的各个方面。固件的部分也可以在嵌入式处理器等上执行。从而,本发明的实施例可以用作或用于支持固件组件、模块、代码和/或指令,该固件组件、模块、代码和/或指令在一些形式的处理器、处理核心或嵌入式处理器上执行或者被以其它方式实现或实施在非暂时性计算机可读或机器可读存储介质上或介质中。非暂时性计算机可读或机器可读存储介质包括用于以机器(例如,计算机)可读的形式存储或发送信息的任何机制。例如,非暂时性计算机可读或机器可读存储介质包括以计算机或计算机器(例如,计算设备、电子系统等)可以存取的形式提供(即,存储和/或发送)信息的任何机制,例如可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪存设备等)。内容可以是直接可执行的(“对象”或“可执行”形式)、源代码、或差代码(“增量”或“补丁”代码)。非暂时性计算机可读或机器可读存储介质还可以包括可以从其处下载内容的存储装置或数据库。非暂时性计算机可读或机器可读存储介质还可以包括在销售或运输时具有存储在其上的内容的设备或产品。从而,运输具有所存储的固件代码和/或指令的设备可以被理解为提供包括具有在本申请中描述的这样的内容的非暂时性计算机可读或机器可读存储介质的制品。
在上文被称为在本申请中描述的过程、服务器或工具的各种组件可以是用于执行所描述功能的模块。由本申请中描述的各种组件执行的操作和功能可以通过在处理元件上运行的软件、经由嵌入式硬件等、或硬件和软件的任何组合实现。这样的组件可以被实现为软件模块、硬件模块、特殊目的硬件(例如,专用硬件、ASIC、DSP等)、嵌入式控制器、硬连线电路、硬件逻辑等。可以经由包含非暂时性计算机可读或机器可读存储介质的制品来提供软件内容(例如,数据、指令、配置信息等),其提供表示可以被执行的指令的内容。上述内容可以导致计算机执行本申请中描述的各种功能/操作。
如本申请中所使用的,通过术语“至少一个”连接的项列表可以指代所列出的术语的任何组合。例如,短语“A、B或C中的至少一个”可以指代A;B;C;A和B;A和C;B和C;或A,B和C。
上文对本发明所描绘实施例的描述,包括在摘要中所描述的,并不意在是穷举的或将本发明限制在所公开的精确形式。虽然为了说明的目的描述了本发明的特定实施例和示例,但是在本发明范围之内的各种等同修改是可能的,如相关领域中的熟练技术人员将认识到的。
可以根据上文的具体实施方式对本发明进行这些修改。随后的权利要求书中使用的术语不应该被解释为将本发明限制在说明书和附图中所公开的特定实施例。而是,本发明的范围将完全通过随后的权利要求书来确定,其将根据所建立的权利要求书解释的原则来解释。

Claims (30)

1.一种方法,包括:
实现用于从计算平台上的多个遥测数据源安全地收集平台遥测数据的可信遥测机制;
从所述多个遥测数据源收集遥测数据;以及
安全地存储收集到的遥测数据,
其中,所述可信遥测机制对于在所述计算平台上运行的软件不能够存取,并且所述遥测数据被以对于在所述计算平台上运行的软件不能够存取的方式安全地存储。
2.根据权利要求1所述的方法,其中,所述计算平台包括多个固件组件,并且其中,所述可信遥测机制包括所述多个固件组件中的至少一个。
3.根据权利要求2所述的方法,其中,所述固件包括作为统一可扩展固件接口(UEFI)固件组件的一部分的遥测驱动器。
4.根据权利要求2所述的方法,其中,所述平台包括系统存储器,并且所述多个固件组件中的至少一个包括遥测驱动器,所述方法进一步包括:
在所述系统存储器中实现对于在所述计算平台上运行的软件不能够存取的安全区域;以及
将所述遥测驱动器加载到所述系统存储器的所述安全区域中。
5.根据权利要求4所述的方法,进一步包括将由所述遥测驱动器收集的遥测数据存储在所述系统存储器中的所述安全区域中。
6.根据权利要求4所述的方法,进一步包括将由所述遥测驱动器收集的遥测数据存储在下列中的至少一个中的安全区域中:所述计算平台上的静态随机存取存储器(SRAM)和多个寄存器。
7.根据权利要求4所述的方法,其中,所述平台包括处理器,所述处理器具有多个机器专用寄存器(MSR)和被使能以存取所述多个MSR的可管理性组件,所述方法进一步包括:
在所述遥测驱动器和可管理性实体之间创建安全通信信道;
经由所述可管理性实体从所述多个MSR收集遥测数据;以及
通过所述安全通信信道向所述遥测驱动器传输所述遥测数据。
8.根据前述权利要求中的任何一项所述的方法,其中,所述平台包括具有多个机器专用寄存器(MSR)的处理器并且包括具有一个或多个组件寄存器的相应集合的多个组件,所述方法进一步包括:
从至少一个MSR收集遥测数据;以及
从至少一个组件寄存器收集遥测数据。
9.根据前述权利要求中的任何一项所述的方法,进一步包括:
实现提交队列和完成队列,以促进对所述遥测数据的至少一部分的收集。
10.根据权利要求9所述的方法,进一步包括:
识别所述计算平台中的多个遥测数据源;
向所述提交队列中的时隙提交队列命令,所述队列命令标识将由遥测数据提供商中的一个执行生成和转发动作中的至少一个的遥测数据;
从所述提交队列取回所述队列命令;
处理所述队列命令,以对由所述队列命令标识的遥测数据执行生成和转发动作中的至少一个;
将处理完成条目输入到所述完成队列中的时隙中,所述处理完成条目包括下列中的至少一个:标识被处理的队列命令的数据、所述遥测数据以及所述遥测数据的位置;
使用包含在处理完成队列条目中的数据来对所述遥测数据进行存取;以及
安全地存储所述遥测数据。
11.根据前述权利要求中的任何一项所述的方法,进一步包括:
针对所述计算平台中的多个遥测数据源中的每一个实现存储器映射的输入输出(MMIO)别名,每一个MMIO别名将遥测数据源映射到所述计算平台上的存储器中的对于在所述计算平台上运行的软件不能够存取的相对应的地址;
接收包括存储器地址的存储器读取请求,以存取所述存储器;
采用与所述存储器地址相关联的遥测数据存取机制,以使得由与针对所述存储器地址的所述MMIO别名相对应的所述遥测数据源提供的遥测数据被放置在所述存储器中由所述存储器地址定义的位置处;以及
返回所述遥测数据以对所述读取请求进行服务。
12.根据权利要求11所述的方法,进一步包括:
将所述存储器划分成多个区域;
将遥测数据存取机制与所述多个区域中的每一个相关联;
响应于接收到所述存储器读取请求,
识别所述存储器地址位于其中的区域;以及
采用与被识别的区域相关联的存取遥测数据存取机制来对所述遥测数据源进行存取。
13.一种计算平台,包括:
处理器,其包括至少一个存储器控制器;
一个或多个存储器设备,每一个存储器设备耦合到所述处理器中的存储器控制器;
平台固件,其包括用于促进对平台遥测数据的收集的一个或多个遥测固件组件;
其中,所述平台固件在由所述处理器执行时,被配置为,
将存储器设备中的存储器的一部分配置为安全存储器区域;
加载一个或多个固件组件以促进将平台遥测数据收集到所述安全存储器区域中;
执行所述安全存储器区域中的所述一个或多个遥测固件组件,以收集平台遥测数据。
14.根据权利要求13所述的计算平台,进一步包括:
存储在所述计算平台上的软件,所述软件被配置为由所述处理器执行,
其中,执行所述平台固件使得所述计算平台对被分配用于所述软件的执行的至少一个虚拟存储器空间进行配置,并且其中,所述软件被阻止对存储器的安全区域进行存取。
15.根据权利要求13或14所述的计算平台,其中,所述平台固件包括作为统一可扩展固件接口(UEFI)固件的一部分的遥测驱动器。
16.根据权利要求13-15中的任何一项所述的计算平台,其中,所述遥测固件被进一步配置为,在执行时,将收集到的遥测数据的至少一部分存储在所述安全存储器区域中。
17.根据权利要求13-16中的任何一项所述的计算平台,其中,所述遥测固件被进一步配置为,在执行时,将所述遥测数据的至少一部分存储在下列中的至少一个中:所述计算平台上的静态随机存取存储器(SRAM)和多个寄存器。
18.根据权利要求13-17中的任何一项所述的计算平台,其中,所述遥测固件包括遥测驱动器,其中,所述处理器包括多个机器专用寄存器(MSR)和被使能以存取所述多个MSR的可管理性组件,并且其中,所述平台固件被进一步配置为,在执行时:
在所述遥测驱动器和可管理性实体之间创建安全通信信道;
经由所述可管理性实体从所述多个MSR收集遥测数据;以及
通过所述安全通信信道向所述遥测驱动器传输所述遥测数据。
19.根据权利要求13-18中的任何一项所述的计算平台,其中,所述平台固件被进一步配置为,在执行时,实现提交队列和完成队列以促进对所述遥测数据的至少一部分的收集。
20.根据权利要求19所述的计算平台,其中,所述平台固件被进一步配置为,在执行时:
识别所述计算平台中的多个遥测数据源;
向所述提交队列中的时隙提交队列命令,所述队列命令标识将由遥测数据提供商中的一个执行生成和转发动作中的至少一个的遥测数据;
从所述提交队列取回所述队列命令;
处理所述队列命令,以对由所述队列命令标识的遥测数据执行生成和转发动作中的至少一个;
将处理完成条目输入到所述完成队列中的时隙中,所述处理完成条目包括下列中的至少一个:标识被处理的队列命令的数据、所述遥测数据以及所述遥测数据的位置;
使用包含在处理完成队列条目中的数据来对所述遥测数据进行存取;以及
将所述遥测数据安全地存储在所述计算平台上。
21.根据权利要求13-20中的任何一项所述的计算平台,其中,所述计算平台包括具有板上存储器的管理控制器,并且所述平台固件进一步被配置为,在执行时:
针对所述计算平台中的多个遥测数据源中的每一个实现存储器映射的输入输出(MMIO)别名,每一个MMIO别名将遥测数据源映射到所述管理控制器的所述板上存储器中的相对应的地址;
接收包括存储器地址的存储器读取请求,以对所述管理控制器的所述板上存储器进行存取;
采用与所述存储器地址相关联的遥测数据存取机制,以使得由与针对所述存储器地址的所述MMIO别名相对应的遥测数据源提供的遥测数据被放置在所述板上存储器中由所述存储器地址定义的位置处;以及
返回所述遥测数据以对所述读取请求进行服务。
22.根据权利要求21所述的计算平台,进一步包括:
将所述板上存储器划分为多个区域;
将遥测数据存取机制与所述多个区域中的每一个相关联;
响应于接收到所述存储器读取请求,
识别所述存储器地址位于其中的区域;以及
采用与被识别的区域相关联的存取遥测数据存取机制来对所述遥测数据源进行存取。
23.一种具有存储在其上的固件指令的非暂时性机器可读介质,所述固件指令包括一个或多个遥测固件组件,所述固件指令被配置为由包括系统存储器的计算平台中的处理器执行,其中,所述固件指令当被执行时使得所述计算平台能够用于:
将所述系统存储器的一部分配置为安全存储器区域;
将一个或多个遥测固件组件加载到所述安全存储器区域中;
执行所述安全存储器区域中的所述一个或多个遥测固件组件以收集平台遥测数据。
24.根据权利要求23所述的非暂时性机器可读介质,进一步包括:
存储在所述计算平台上的软件,所述软件被配置为由所述处理器执行,
其中,所述固件指令的执行使得所述计算平台对被分配用于所述软件的执行的至少一个虚拟存储器空间进行配置,并且其中,所述软件被阻止对存储器的安全区域进行存取。
25.根据权利要求23或24所述的非暂时性机器可读介质,其中,所述一个或多个遥测固件组件包括作为统一可扩展固件接口(UEFI)固件的一部分的遥测驱动器。
26.根据权利要求23-25中的任何一项所述的非暂时性机器可读介质,其中,所述固件指令进一步被配置为,在执行时,将收集到的遥测数据的至少一部分存储在所述安全存储器区域中。
27.根据权利要求23-26中的任何一项所述的非暂时性机器可读介质,其中,所述固件指令被进一步配置为,在执行时,将收集到的遥测数据的至少一部分存储在下列中的至少一个中:所述计算平台上的静态随机存取存储器(SRAM)和多个寄存器。
28.根据权利要求23-27中的任何一项所述的非暂时性机器可读介质,其中,所述一个或多个遥测固件组件包括遥测驱动器,其中,所述处理器包括多个机器专用寄存器(MSR)和被使能以存取所述多个MSR的可管理性组件,并且其中,所述固件指令被进一步配置为,在执行时:
在所述遥测驱动器和可管理性实体之间创建安全通信信道;
经由所述可管理性实体从所述多个MSR收集遥测数据;以及
通过所述安全通信信道向所述遥测驱动器传输所述遥测数据。
29.根据权利要求23-28中的任何一项所述的非暂时性机器可读介质,其中,所述固件指令被进一步配置为,在执行时,实现提交队列和完成队列以促进对所述遥测数据的至少一部分的收集。
30.根据权利要求29所述的非暂时性机器可读介质,其中,所述固件指令被进一步配置为,在执行时:
识别所述计算平台中的多个遥测数据源;
向所述提交队列中的时隙提交队列命令,所述队列命令标识将由遥测数据提供商中的一个执行生成和转发动作中的至少一个的遥测数据;
从所述提交队列取回所述队列命令;
处理所述队列命令,以对由所述队列命令标识的遥测数据执行生成和转发动作中的至少一个;
将处理完成条目输入到所述完成队列中的时隙中,所述处理完成条目包括下列中的至少一个:标识被处理的队列命令的数据、所述遥测数据以及所述遥测数据的位置;以及
使用包含在处理完成队列条目中的数据来对所述遥测数据进行存取;以及
将所述遥测数据安全地存储在所述计算平台上。
CN201810384382.0A 2017-05-03 2018-04-26 可信平台遥测机制 Pending CN108829525A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/585,936 2017-05-03
US15/585,936 US10958990B2 (en) 2017-05-03 2017-05-03 Trusted platform telemetry mechanisms inaccessible to software

Publications (1)

Publication Number Publication Date
CN108829525A true CN108829525A (zh) 2018-11-16

Family

ID=64013767

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810384382.0A Pending CN108829525A (zh) 2017-05-03 2018-04-26 可信平台遥测机制

Country Status (2)

Country Link
US (1) US10958990B2 (zh)
CN (1) CN108829525A (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10496507B2 (en) * 2017-09-21 2019-12-03 American Megatrends International, Llc Dynamic personality configurations for pooled system management engine
US10917353B2 (en) * 2018-02-28 2021-02-09 Microsoft Technology Licensing, Llc Network traffic flow logging in distributed computing systems
US11194588B2 (en) * 2018-07-09 2021-12-07 Dell Products L.P. Information handling systems and method to provide secure shared memory access at OS runtime
US11308203B2 (en) * 2019-01-11 2022-04-19 Microsoft Technology Licensing, Llc Side-channel protection
CN110795274A (zh) * 2019-10-23 2020-02-14 北京电子工程总体研究所 一种抗单粒子翻转的遥测数据存取方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521111A (zh) * 2010-11-03 2012-06-27 微软公司 装置内故障数据的报告
WO2016126347A1 (en) * 2015-02-04 2016-08-11 Intel Corporation Technologies for scalable security architecture of virtualized networks
CN105981333A (zh) * 2013-12-13 2016-09-28 国际商业机器公司 安全应用调试
US20160378686A1 (en) * 2015-06-24 2016-12-29 Intel Corporation Memory encryption exclusion method and apparatus

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060116557A1 (en) * 2004-11-30 2006-06-01 Alere Medical Incorporated Methods and systems for evaluating patient data
US9430938B2 (en) * 2013-03-04 2016-08-30 Hello Inc. Monitoring device with selectable wireless communication
WO2015057974A2 (en) * 2013-10-16 2015-04-23 Milacron Llc Remote machine monitoring systems and services
US9769050B2 (en) * 2014-12-23 2017-09-19 Intel Corporation End-to-end datacenter performance control
US9870282B2 (en) * 2015-05-11 2018-01-16 Dell Products, L.P. Systems and methods for providing service and support to computing devices with boot failure
US9740876B1 (en) * 2015-09-15 2017-08-22 Symantec Corporation Securely storing and provisioning security telemetry of multiple organizations for cloud based analytics
US10572650B2 (en) * 2016-02-29 2020-02-25 Intel Corporation Technologies for independent service level agreement monitoring
US10390114B2 (en) * 2016-07-22 2019-08-20 Intel Corporation Memory sharing for physical accelerator resources in a data center
US9996477B2 (en) * 2016-09-14 2018-06-12 Western Digital Technologies, Inc. Asynchronous drive telemetry data notification
US20180098136A1 (en) * 2016-09-30 2018-04-05 Intel Corporation Push telemetry data accumulation
US20180150256A1 (en) * 2016-11-29 2018-05-31 Intel Corporation Technologies for data deduplication in disaggregated architectures
US10917706B2 (en) * 2016-12-15 2021-02-09 Microsoft Technology Licensing, Llc Configurable IoT device data collection
US10323923B2 (en) * 2016-12-20 2019-06-18 Com Dev Ltd. Resistive telemetry system and method
US20180262407A1 (en) * 2017-03-09 2018-09-13 Arijit Biswas Telemetry Architecture for Integrated Circuits and Cloud Infrastructure

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102521111A (zh) * 2010-11-03 2012-06-27 微软公司 装置内故障数据的报告
CN105981333A (zh) * 2013-12-13 2016-09-28 国际商业机器公司 安全应用调试
WO2016126347A1 (en) * 2015-02-04 2016-08-11 Intel Corporation Technologies for scalable security architecture of virtualized networks
US20160378686A1 (en) * 2015-06-24 2016-12-29 Intel Corporation Memory encryption exclusion method and apparatus

Also Published As

Publication number Publication date
US10958990B2 (en) 2021-03-23
US20180324052A1 (en) 2018-11-08

Similar Documents

Publication Publication Date Title
Zhang et al. {FlashShare}: Punching Through Server Storage Stack from Kernel to Firmware for {Ultra-Low} Latency {SSDs}
US10027674B2 (en) Determining virtual adapter access controls in a computing environment
CN108829525A (zh) 可信平台遥测机制
EP3519953B1 (en) Intermediate host integrated circuit between a virtual machine instance and customer programmable logic
US20200028935A1 (en) Workload rebalancing in heterogeneous resource environments
CN108008911A (zh) 读写请求处理方法及装置
CN109791508A (zh) 具有多个可重配置区域的可配置逻辑平台
CN110063051A (zh) 可重新配置的服务器
CN109558168A (zh) 低等待时间加速器
CN106030548B (zh) 用于可信计算的多节点中枢
US10042653B2 (en) Ascertaining configuration of a virtual adapter in a computing environment
US9959227B1 (en) Reducing input/output latency using a direct memory access (DMA) engine
US11550736B1 (en) Tensorized direct memory access descriptors
CN110383255A (zh) 管理对物理设备的客户分区访问
Roozbeh Toward Next-generation Data Centers: Principles of Software-Defined “Hardware” Infrastructures and Resource Disaggregation
US20240086299A1 (en) Development platform validation with simulation
Roozbeh Realizing Next-Generation Data Centers via Software-Defined “Hardware” Infrastructures and Resource Disaggregation: Exploiting your cache
KR102444562B1 (ko) 계층적 메모리 시스템
Roozbeh Toward Next-generation Data Centers
US20240184612A1 (en) Virtual machine live migration with direct-attached non-volatile memory express device
US10929063B1 (en) Assisted indirect memory addressing
CN114722259A (zh) 数据处理系统、方法和装置
US20200272578A1 (en) Managing direct memory access
Benatallah et al. TCC: State of the Transactions

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