CN101276286B - 用于加速视频子系统初始化的系统、方法和装置 - Google Patents

用于加速视频子系统初始化的系统、方法和装置 Download PDF

Info

Publication number
CN101276286B
CN101276286B CN2008101003618A CN200810100361A CN101276286B CN 101276286 B CN101276286 B CN 101276286B CN 2008101003618 A CN2008101003618 A CN 2008101003618A CN 200810100361 A CN200810100361 A CN 200810100361A CN 101276286 B CN101276286 B CN 101276286B
Authority
CN
China
Prior art keywords
ram
video
speed cache
subsystem
processor
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.)
Expired - Fee Related
Application number
CN2008101003618A
Other languages
English (en)
Other versions
CN101276286A (zh
Inventor
R·C·斯旺森
M·A·罗思曼
M·布鲁苏
V·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 CN101276286A publication Critical patent/CN101276286A/zh
Application granted granted Critical
Publication of CN101276286B publication Critical patent/CN101276286B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation
    • 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/4401Bootstrapping

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

在一些实施例中,本发明包括通过在引导过程初期对视频卡进行初始化来加速平台的引导。在一实施例中,处理器高速缓存将被用作当作RAM的高速缓存(CAR)。视频图形适配器(VGA)卡的初始化使用CAR而非系统RAM来执行初始化。在视频初始化过程中,固件代码的一部分、中断向量表和处理程序被从闪速存储器映射到CAR中,以模拟系统RAM的行为。VGA初始化可以在系统RAM初始化之前发生,以便支持在初期给用户提供可视反馈。还描述和声明了其它实施例。

Description

用于加速视频子系统初始化的系统、方法和装置
技术领域
本发明的实施例总体上涉及计算系统,特别是通过在初期初始化视频卡来加速平台的引导。
背景技术
存在多种对计算设备进行引导(booting)的机制。特别是在服务器中,引导视频部件可能很慢,导致缺乏面向用户或操作者的早期可视反馈。在引导周期中越早出现视频反馈的系统看起来似乎引导得越快,并能给用户提供额外的引导状态。桌面和移动系统倾向于具有比服务器更快的引导速度。缺乏可视反馈可能会导致出现系统似乎根本没有引导的表象。在现有系统中,桌面和移动系统具有比服务器复杂度低的存储器子系统,因此花费更少的时间引导BIOS。服务器系统具有更加复杂的存储器子系统,因此BIOS初始化存储器子系统并且最终引导系统将花费更长的时间。
在现有系统中,许多任务要求在视频子系统被初始化之前被执行。因此,用户在视频子系统引导之前不能够看到引导过程的视频状态。服务器在视频可被初始化之前平均用时20-50+秒。不熟悉延迟的视频响应时间的用户可能会认为服务器引导失败并且错误地重新按动电源按钮。
发明内容
根据本发明的一个方面,涉及一种用于初期视频子系统初始化的系统,包括:耦合到高速缓存的处理器;通信地耦合到所述处理器的系统随机存取存储器(RAM);耦合到所述处理器的固件中心,包括其上存储有固件代码的固件存储器,所述固件代码包括基本输入输出系统(BIOS);经由视频子系统部件通信地耦合到所述处理器的视频控制台;所述高速缓存的第一部分,其被用作当作RAM的高速缓存,并且存储所述BIOS的第一部分、包括用于与所述视频子系统部件通信的中断向量表和中断处理程序的BIOS代码的第二部分、以及从所述视频子系统部件中获得的option-ROM初始化代码,其中,在引导过程中,所述视频子系统部件将在系统RAM被初始化之前执行来自于所述高速缓存的初始化代码。
根据本发明的另一个方面,涉及一种用于加速平台中的视频子系统初始化的方法,包括:在引导过程中的加电自检(POST)期间,配置一部分高速缓存作为当作RAM的高速缓存;配置一部分当作RAM的高速缓存用来存储一部分固件代码;在一部分当作RAM的高速缓存中存储视频子系统初始化代码;在系统RAM被初始化之前,在POST期间开始执行当作RAM的高速缓存中的所述视频子系统初始化代码,其中,所述视频子系统初始化代码访问当作RAM的高速缓存而非系统RAM;将当作RAM的高速缓存中的视频子系统代码和固件代码拷贝到系统RAM中的适当位置;完成所述引导过程。
根据本发明的又一个方面,涉及一种用于加速平台中的视频子系统初始化的装置:用于在引导过程中的加电自检(POST)期间,配置一部分高速缓存作为当作RAM的高速缓存的模块;用于配置一部分当作RAM的高速缓存用来存储一部分固件代码的模块;用于在一部分当作RAM的高速缓存中存储视频子系统初始化代码的模块;用于在系统RAM被初始化之前,在POST期间开始执行当作RAM的高速缓存中的所述视频子系统初始化代码的模块,其中,所述视频子系统初始化代码访问当作RAM的高速缓存而非系统RAM;用于将当作RAM的高速缓存中的视频子系统代码和固件代码拷贝到系统RAM中的适当位置的模块;用于完成所述引导过程的模块。
附图说明
从下面对本发明的详细说明中,本发明的特征和优势将变得更加明显,其中:
图1是一个实施例所使用的协议架构;
图2是根据所要求保护的主题而使用的用于物理互连的装置的方框图;
图3A-C是由多个实施例所使用的系统的多个实施例;
图4说明依照本发明的实施例的四插槽(socket)系统;
图5说明在本发明实施例中视频初始化过程中可能的时间节约;
图6是对传统随机存取存储器(RAM)的说明,其中示出了,依照本发明的实施例,数据被映射到当作RAM的高速缓存(Cache as RAM,CAR)中;
图6A说明依照本发明的实施例,RAM中的数据到CAR中的数据的映射;
图7是说明依照本发明的实施例,可扩展固件接口(EFI)系统的执行流程的方框图;以及
图8是说明依照本发明的实施例,使用当作RAM的高速缓存(CAR)来初始化视频子系统的示例性方法的流程图。
具体实施方式
本发明的实施例是一种系统和方法,涉及使用处理器存储器或高速缓存的平台的视频部件的早期初始化。在至少一个实施例中,本发明旨在利用具有与处理器直接耦合的存储器或高速缓存的平台来加速视频初始化。在一实施例中,被以点对点(pTp)架构配置的平台使得能够加速视频初始化,由此在引导或重启过程中为用户提供了可视反馈。
说明书中对本发明的“一个实施例”或“实施例”的引用是指结合该实施例而描述的特定特征、结构或特点包含在本发明的至少一个实施例中。因此,在说明书中多处出现的短语“在一个实施例中”并不必然都指同一个实施例。
为了便于说明,阐述了许多具体的配置和细节,以便提供对本发明的全面理解。然而,对于本领域技术人员而言显而易见的是,本发明的实施例无需在此描述的具体细节也可以被实现。此外,为了避免使本发明难以理解,公知的特征被省略或简化。在该说明书中可以给出各种示例。这些仅仅是对本发明的具体实施例的描述。本发明的范围并不限于所给出的示例。
当前技术发展的一个领域涉及可靠性、可用性和可服务性(RAS)。基于前端总线(FSB)架构的当前系统不允许热插拔单独的总线部件。同样地,当前系统由于要传递初始化值而受限于引脚,并且也由于初始通电配置(Power-On Configuration,POC)值不正确而要执行多次热启动。
在一实施例中,一种点对点(pTp)架构平台支持分层的协议方案,这将在下面进一步讨论。图1示出了底层网络的高速缓存一致性(cachecoherence)协议的抽象视图的一个例子。
图1是一个实施例所利用的协议架构。该架构描述了耦合到网络结构(network fabric)的多个缓存代理(caching agent)和本地代理(home agent)。例如,该网络结构遵守分层协议方案,可包括以下之一或全部:链路层、物理层、协议层、路由层或传输层。对于点对点网络,该结构便于从一种协议(本地或缓存代理)传输消息到另一种协议。一方面,该图描述了底层网络的高速缓存一致性协议的抽象视图。
图2是根据这里所述的本发明实施例而利用的物理互连装置的方框图。一方面,该装置描述了用于处理器、芯片组和/或IO桥接部件的高速缓存一致的、基于链路的互连方案的物理层。例如,可以由集成设备的每个物理层执行物理互连。具体地,物理层在包含两个单向链路的物理互连上的两个端口之间提供了通信。具体地,一个单向链路204从第一集成设备的第一发送端口250a到第二集成设备的第一接收端口250b。同样地,第二单向链路206从第二集成设备的第一发送端口250b到第一集成设备的第一接收端口250a。然而,所要求保护的主题不限于这两个单向链路。本领域技术人员将理解所要求保护的主题支持任何已知的信号传输技术,比如双向链路等。
图3A-C描述了具有一个或多个处理器的点对点系统。所要求保护的主题可以包括几种实施例,比如,具有一个处理器306(图3A)、具有两个处理器(P)302(图3B)、以及具有四个处理器(P)304(图3C)。在实施例302和304中,每一个处理器耦合到一个存储器(M)321,并且通过网络结构与每一个处理器323连接,该网络结构可以包括以下之一或者全部:链路层、协议层、路由层、传输层和物理层。该结构使在点对点网络中从一种协议(本地或缓存代理)传输消息到另一种协议变得便利。如前所述,该网络结构的系统支持结合图1-3所描述的任何实施例。
在实施例306中,单处理器P 323通过对应于分层协议方案的网络结构耦合到被标为IO+M+F的图形和存储器控制器325。所述图形和存储器控制器可以具有可编程属性寄存器(PAM),以将存储器访问映射到合适的存储单元(memory location)。所述图形和存储器控制器耦合到存储器并且可以通过快速外围组件互连(PCI)链路来实现接收和发送。同样地,所述图形和存储器控制器耦合到输入/输出控制中心(ICH)327。此外,ICH 327通过少针脚型(LPC)总线耦合到固件中心(FWH)329。另外,对于一个不同的单处理器实施例,处理器将具有外部网络结构链接。该处理器可以包含具有分离或共享的高速缓存的多个核心,每个核心耦合到X-bar路由器和非路由全局链接接口。X-bar路由器是一插槽中多个核心之间的pTp互连。X-bar是一种“十字条(cross-bar)”,也就是每一个部件与其它每一个部件之间都有十字链接或连接。这明显地快于pTp互连链接,并且能够在片上实现,促进并行通信。因此,该外部网络结构链接耦合到X-bar路由器和非路由全局链接接口。
多处理器系统的实施例包括多个处理器节点323,通过点对点网络331(由处理节点之间的粗线表示)互连。对于本论述,术语“处理节点”和“计算节点”可以互换使用。处理器之间的链路通常是全宽或最大宽度,从处理器到IO中心(IOH)芯片组(CS)的链路通常是半宽。每个处理节点323包括耦合到构成系统主存储器的相关存储器321的一个或多个中央处理器323。在可替换的实施例中,存储器321可以被物理地合并成一个能够被所有的处理节点323访问的主存储器。每个处理节点323也可以包括与存储器321有接口的存储器控制器325。每个处理节点323,包括与其相关联的存储器控制器325,能够被实现在同一个芯片上。在可替换的实施例中,每个存储器控制器325可以被实现在与其相关联的处理节点323分离的一个芯片上。
每个存储器321可以包括一种或多种存储设备,比如,双列直插存储模组(DIMM)、动态随机存取存储(DRAM)设备、同步动态随机存取存储器(SDRAM)设备、双倍数据率(DDR)SDRAM设备、或者其它的适合于服务器或一般应用的易失性或非易失性存储设备。
该系统也可以包括一个或多个输入/输出(I/O)控制器327,以便为处理节点323和其它系统部件提供访问I/O设备(例如,闪速存储器(Flashmemory)或固件中心(FWH)329)的接口。在一实施例中,每一个I/O控制器327可以耦合到一个或多个处理节点。在I/O控制器327和其相应的处理节点323之间的链路被作为I/O链路。I/O设备可以包括工业标准架构(ISA)设备、外围组件互连(PCI)设备、PCI Express设备、通用串行总线(USB)设备、小型计算机系统接口(SCSI)设备或其它适用于服务器或一般应用的标准的或专有的I/O设备。I/O设备可以是有线或无线设备。在一个实施例中,I/O设备可以包括无线发射器和无线发射接收器。
该系统可以是服务器、多处理器桌面计算设备、嵌入式系统、网络设备、或其中通过广域网远程连接多个处理节点的分布式计算设备。
在图3C所示的实施例中,网络331为处理节点323提供部分连通性。因此,每一个处理节点323直接连接到其它处理节点中的一些但也许不是全部。一个处理节点323通过直接链路或间接连接(如,使用另一个处理器作为中间者)连接到另一个处理节点。
网络331传递的一种消息是侦听消息(snoop message),其包含关于存储器事务(memory transaction)的信息,所述存储器事务可能影响高速缓存(未示出)中数据项的一致性状态。存储器事务是指需要访问任何存储器设备321或任何高速缓存的事务。当任何处理节点执行存储器事务时,该处理节点在网络321上发送一条侦听消息(或等同的,侦听请求),以请求所有其它节点检验或更新存储在其各自的本地高速缓存中的数据项的一致性状态。I/O控制器327当执行直接存储器存取(DMA)时也发送和接收侦听消息。因此,任何处理节点323和I/O控制器327都可以是一个侦听消息的请求节点也可以是另一个侦听消息的目的节点。
当第一处理节点给没有直接与第一处理节点连接的第二处理节点发送侦听消息时,第一和第二处理节点使用第三处理节点作为转发节点。在该情况下,第三处理节点作为一个转发节点向第一和第二处理节点转发侦听消息。该转发可以通过一种扇出(fan-out)机制来执行,该机制复制输入的侦听消息并且向不同的目标转发复制的消息。
图4是说明依照本发明实施例的具有点对点(pTp)互连架构的四插槽系统的方框图。
处理器410、420、430和440可以包括任意数目的核心。处理器410、420、430和440中的每一个都有一个与之耦合的存储器,分别为415、425、435和445。每一个处理器410、420、430和440也可以耦合到本地高速缓存。为了实现本发明的实施例,自引导处理器(boot strap processor,BSP)410必须具有局部高速缓存。处理器之间的点线表示pTp互连总线。处理器和其存储器之间的粗体线表示FBD(全缓冲DIMM)连接。该示例中的部分处理器410和430可以通过pTp互连总线与输入/输出中心(IOH)450连接。IOH 450可以通过如灰线所示的多个快速外围部件互连(PCI-e)总线耦合到多个设备(未示出)。IOH 450可以通过如虚线所示的直接媒体接口(DMI)总线耦合到输入/输出控制中心(ICH)460。ICH 460可以耦合到固件中心(FWH)470和视频图形适配器(VGA)480。
在现有系统中,由于所请求的资源不能在早期获得,因此视频初始化要花费很长的时间。特别是,视频需要卡的存储器进行映像(shadow)和初始化。典型地,这需要一直等待直到存储器访问代码被初始化。在本发明的实施例中,与处理器耦合的高速缓存被用于初始化视频。例如,在一示例性实施例中,处理器410是平台的自引导处理器(BSP)。在该示例pTp架构中,处理起410与高速缓存耦合。服务器处理器中的高速缓存的数量可以改变。该高速缓存可以作为当作RAM的高速缓存(CAR)。在一些实施例中,具有很少高速缓存的服务器可以使用2-4MB高速缓存作为RAM。一些服务器可以有25MB的高速缓存。视频初始化通常要求少于256K的存储器。在使用CAR的情况下,PCI子系统相信高速缓存是主板上的物理存储器。在Vincent J.Zimmer等人的名为“Using A Processor Cache As RAMDuring Platform Initialization”的共有未决专利申请公开US 2004-0103272A1(Ser.No.10/306,327)中对当作RAM的高速缓存(CAR)有更加全面的描述。必要时,为了视频初始化,将使用虚设(dummy)中断向量表来设置一些高速缓存。当视频ROM被初始化时,其假定基于零的中断向量表,以便使用INT10中断服务。
图5说明了在本发明实施例的视频初始化过程中可能节约的时间。在现有系统中,视频将在501处被完全初始化。通过在RAM存储器被初始化之前开始视频的初始化,本发明的实施例可以在503处加速视频初始化。这使得能够给用户提供视频反馈。例如,在本发明的实施例中,如果没有找到系统存储器,则能够可视地通知用户。但在现有系统中这是不可能的,因为只有在系统RAM被找到并完成初始化之后才能对视频进行初始化。在现有系统中,只能使用声音通知,也就是蜂鸣声,来通知用户没有找到存储器。
图6是对传统的随机存取存储器(RAM)700的说明。当系统第一次引导时,从闪速存储器(未示出)执行代码。处理器没有对该可执行代码进行缓存,而是其通常直接从固件中心或闪速存储器执行。闪速存储器比系统存储器(RAM)700或高速缓存730慢。因此,初期的启动操作通常很慢。在典型的系统中,要被初始化以用于一般应用的系统RAM 700在701处。较高位的存储器705被保留以用于指定的系统ROM(BIOS或固件代码)和其它引导所需的数据。在固件代码之下的常规存储器703可以被保留以用于PCI和APIC(高级可编程中断控制器)功能。在典型的引导过程中,固件代码被从闪存拷贝到常规RAM 705中。存储器通常也配置有固件预留高位存储器(firmware reserved high memory)707。在现有系统中,视频初始化在开始之前必须等待,直到系统RAM 701被初始化。
图6A示出了依照本发明的实施例,RAM中的数据映射到CAR中的数据。RAM中的固件代码707被映射到高速缓存730中的一个区域,被称为当作RAM的高速缓存(CAR)710,在其中的707a处。系统存储器(RAM)701中通常被用于初始化视频子系统的区域可以被映射到CAR存储器范围A0000-FFFFF701a。通常位于较低位的存储器中的中断向量表709被映射到CAR 709a。位于RAM 713中的基地址单元(BAR)可以指向713中的其它单元。然而,在本发明的实施例中,基于PAM 326将存储器访问重定向到高速缓存730,BAR被重新映射以指向CAR 713a。被映射到CAR 713a中的存储器的数据通常用于附加设备。CAR存储器711可以用作存储器缓存区(scratch-pad),以通过堆栈传送数据。例如,‘C’调用通常通过堆栈(被存储器所支持)传送信息,不同于采用寄存器传送数据,后者受大小等限制。PAM寄存器326被设置,以将RAM映射到CAR 701a,使得通常要访问RAM来运行的任何设备将转而使用CAR中的存储器。
本发明的实施例可以在具有可扩展固件接口(EFI)架构的平台上实现。参考图7,示出了说明根据本发明实施例的EFI系统的执行流程的方框图。为了便于讨论,重点在启动平台所需的处理过程上。
在现有的多核心系统中,选定一个处理器用于对平台进行引导,该处理器被称为自引导处理器(BSP)。当引导时,BSP将连续执行所有的引导任务。典型地,在具有可扩展固件接口(EFI)架构的平台中,在早期引导过程中执行安全处理(SEC)610阶段。
在SEC阶段610,预验证器(pre-verifier)或度量信任核心根(Core Root ofTrust for Measurement,CRTM)611可以在加电时被运行。典型的预验证器是一个对环境进行初始化和检查的模块。在现有系统中,预验证器和SEC阶段是度量信任核心根(CRTM),即用于启动可信平台模块(TPM)并执行BIOS的哈希扩展的足够代码。可以在URL www*trustedcomputinggroup*org上找到有关TPM的更多信息。在PEI阶段620中,处理器621、芯片组623和主板625可以被初始化。主板625负责主板部件的基本初始化以及寻找并初始化系统存储器(RAM)。一旦系统存储器被初始化,BIOS可以被从闪存中拷贝到系统RAM中,并且从RAM中执行。在PEI阶段620末端,通常通过被称为DxeIpl的模块来启动驱动执行环境(DXE)分派器633,以开始DXE阶段630。然而,直到系统RAM被找到并且被初始化,才能启动DXE分派器。注意为避免无意中形成超链接,在该文档中URL中的句点已被星号代替。
在本发明的实施例中,在进行到驱动执行环境(DXE)阶段630之前,PEI阶段620的操作可以从当作RAM的高速缓存(CAR)上运行。在引导设备选择(BDS)阶段,DXE分派器启动引导分派器641。在过渡系统加载(transient system load,TDL)阶段650,引导OS。
引导设备选择(BDS)阶段640负责选择适当的操作系统。在OS运行时(RT阶段660)期间系统故障时,比如
Figure GSB00000254194200091
中所谓的BSOD(表示死机的蓝屏)或Unix/Linux中所谓的应急(Panic),在后生命期(AL阶段670)中,可以重新构建固件PEI和DXE流,以便允许进行缺少OS时的恢复活动。
在现有系统中,视频初始化无法开始,直到至少DXE阶段630,以等待系统RAM被找到并被初始化。在本发明的实施例中,使用当作RAM的高速缓存(CAR),可以在PEI阶段620中执行视频初始化。
图8是使用CAR来初始化视频子系统的示例性方法的流程图。在一实施例中,平台像往常一样从闪速存储器开始引导。在框800,开始加电自检(POST)操作。在框801,系统软件(BIOS)设置用作RAM的高速缓存(CAR)。在初期的POST处理过程中,处理器高速缓存被配置为从闪速存储器对BIOS映像的一部分(通常为PEI部分)进行缓存,并且将映像放入CAR(707a)中。在此种情况下,所使用的RAM是快速高速缓存(710),而不是系统RAM(700)或DIMM。特别地,当作RAM的高速缓存被配置成包含固件高位存储器指令和数据(707a)以及一部分存储器713a,以用于对来自视频卡的option-ROM数据进行缓存。在一实施例中,在框803,系统软件利用从CAR获得的存储器对PCI基地址寄存器(BAR)和视频设备的PCI配置空间进行编程。
为了初始化视频,必须启用可编程属性映射(PAM)寄存器(326),以允许视频初始化对存储器的某些区域进行解码。在框805,系统软件对PAM寄存器(326)进行编程,指示真实的存储器是可用的。如图3A所示,PAM寄存器(326)可以位于存储器控制中心(MCH)或输入/输出中心(IOH)326中。该存储器控制中心包括控制地址空间映射的内部寄存器(“PAM寄存器”)。这些寄存器控制地址生成器是到非易失性存储器中寻找指令和数据还是到主存储器中进行寻找。可替代地,如图3A所示,PAM寄存器(326)可以位于IOH(325)中,并控制地址生成器是到FWH(329)中的非易失性存储器寻找指令和数据还是到主存储器(321)中进行寻找。为了强制视频子系统在CAR中寻找,PAM中的指针指向用作RAM的高速缓存,而不是非易失性存储器或系统RAM,而视频设备对此并不知情。在框807,系统软件在包含有VGA控制器的相关桥接器中设置VGA解码位。在框809,建立中断向量表(IVT)以包含虚设INT10处理程序(handler),并且视频ROM被拷贝到CAR存储器中。当控制被传给视频卡时,将使用BAR存储器分配,并且将自身映像到被认为是传统RAM的常规存储器段中。常规的存储器段在存储器映射中低于1MB,地址为0xC0000或0xD0000(“C”或“D”段,约786K的存储器地址)。当视频卡对自身进行映像时,视频卡从它自己被映射的闪存内容中获取内容并将其移动到“C”或“D”段。这反映了存储器的原有分配,其中附加设备尽力在低于1MB存储器范围的某些存储器区域中对内容进行映像。
该存储器(707a)由BAR指派。一旦新的存储器映射、中断向量表和处理程序被映射到高速缓存(709a),控制可以传给现在将从CAR 713a运行的视频卡的option-ROM。在初始化期间,该option-ROM将只访问高速缓存而非系统RAM。在框813,一旦视频初始化(视频同步)完成,所连接的视频监视器将变为可操作。当视频卡试图访问存储器时,所有的存储器访问将被重定向到高速缓存而非系统RAM。
一旦系统RAM完全被初始化(典型地在加电自检(POST)末期),被缓存的存储器和固件函数被拷贝回系统存储器和BAR,中断向量和PAM被重置以将存储器访问映射到系统RAM或者物理DIMM。在这时,BIOS将被从闪速存储器中拷贝到RAM中。在BIOS被拷贝到系统存储器中之前,在高速缓存中创建的变量也必须被拷贝到系统存储器中。特别地,当前位于CAR中的状态和视频存储器被拷贝到已被BIOS找到并且初始化的真正的存储器(RAM)中。中断向量表INT10处理程序的值被拷贝到RAM中并且被用于设置真正的向量表。MCH中的存储器类型范围寄存器(MTRR)被设置为不能对存储器范围进行缓存。因此,该高速缓存是无效的。MTRR被设置为从RAM进行常规操作,并且POST继续。
在实施例中,处理器被配置为保留高速缓存730的一部分,作为当作RAM的高速缓存710。该架构禁止该部分高速缓存的高速缓存转储清除(cache flushing)。
也可以实现平台的其它实施例,其中的系统处理器带有足够大的高速缓存。可以理解,示例性实施例示出的平台具有多个处理器和多核心、使用点对点互连架构。然而,其它的平台架构也可以实现本发明的实施例。
再参考图4,在一个具有pTp架构的平台中,必须在引导过程中执行重要的pTp互连的初始化。在一实施例中,视频初始化在pTp互连初始化之前被执行。例如,处理器410被识别为BSP。耦合到BSP 410的高速缓存将被用于模拟通常用来进行视频子系统初始化的系统存储器。通信路径将通过IOH 450和ICH 460直接从处理器410到视频卡480。
在其它多处理器系统中,BSP的选择可以基于加电后哪个处理器赢得了对给定寄存器的访问。获胜者被识别为BSP并且将执行启动任务,包括上面讨论的将高速缓存用作RAM的实现。在多处理器平台中,很重要的一点是,要始终使用BSP中的高速缓存作为当作RAM的高速缓存来进行视频初始化。
这里描述的技术不限于任何特定的硬件或者软件配置;这些技术可以适用于任何计算、消费电子或者处理环境。这些技术可以以软件、硬件或者二者的组合来实现。
对于仿真,程序代码可以采用硬件描述语言或者其他实质上给出关于所设计硬件预期会如何工作的模型的功能描述语言来描述硬件。程序代码可以是汇编或者机器语言,或者是可被编译或解释的数据。此外,在本领域内提及软件时,不管其是何种形式,通常将其看作执行某个动作或者引起某个结果。这种表达仅仅是一种简洁方式,用于叙述处理系统执行程序代码导致处理器执行某个动作或者产生某个结果。
每个程序都可以用高级的过程或面向对象的编程语言来实现以与处理系统进行通信。然而,如果希望的话,程序也可以使用汇编或机器语言来实现。无论如何,所述语言可以被编译或解释。
程序指令可以用于令使用所述指令编程的通用或专用处理系统执行此处所描述的操作。可替换地,所述操作可以由含有用于执行该操作的硬线逻辑的特定硬件部件来执行,或者通过被编程的计算机部件和定制的硬件部件的任意组合来执行。此处所描述的方法可以作为计算机程序产品来提供,其可以包括其上存储有指令的机器可访问介质,所述指令可以用于对处理系统或其它电子设备进行编程以执行所述方法。
例如,程序代码或指令可以被存储在易失性和/或非易失性存储器中,例如存储设备和/或相关的机器可读或机器可访问介质,包括固态存储器、硬盘驱动器、软盘、光存储、磁带、闪速存储器、记忆棒、数字视频盘、数字多用盘(DVD)等。还有更多奇异的介质,比如机器可访问的生物状态保存装置。机器可读介质包括任何以机器可读的形式存储、发送或接收信息的机制,并且该介质可以包括有形介质,其中编码有程序代码的电的、光的、声的或其它形式的传播信号或载波可以经过该有形介质,例如天线、光纤、通信接口等。程序代码可以以分组、串行数据、并行数据、传播信号等形式被发送,并且可以使用压缩或加密格式。
程序代码可以被实现为在可编程机器上执行的程序,所述可编程机器例如移动或固定计算机、个人数字助理、机顶盒、移动电话和寻呼机、消费电子设备(包括DVD播放器、个人视频录像机、个人视频播放器、卫星接收器、立体声接收器、有线电视接收器)和其它电子设备,每个设备均包括处理器、可以由处理器读取的易失性和/或非易失性存储器、至少一个输入设备和/或一个或多个输出设备。程序代码可以被应用于使用输入设备输入的数据,以执行所描述的实施例并且产生输出信息。输出信息可以应用于一个或多个输出设备。本领域技术人员可以理解,所公开的主题的实施例可以用各种计算机系统配置来实现,包括多处理器或多核处理器系统、小型计算机、大型计算机以及可以嵌入几乎任何设备的普适或微型计算机或处理器。所公开的主题的实施例也能够实现在分布式计算环境中,在该环境中任务或部分任务可以由通过通信网络链接的远程处理设备执行。
虽然操作可以被描述为顺序的处理过程,但实际上,一些操作也可以被并行地、并发地、和/或在分布式环境中执行,其中程序代码存储在本地和/或远程以供单或多处理器机器访问。另外,在一些实施例中,操作顺序可以被重新编排,而不背离所公开的主题的实质。程序代码可以通过嵌入式控制器使用或与嵌入式控制器结合使用。
虽然已参照所说明的实施例对本发明进行了描述,但该描述不应被解释为是限制性的。对所说明的实施例的各种修改以及本发明的其它实施例对于本发明所属领域技术人员来说都是显而易见的,它们均落入本发明的实质和范围之内。

Claims (17)

1.一种用于初期视频子系统初始化的系统,包括:
耦合到高速缓存的处理器;
通信地耦合到所述处理器的系统随机存取存储器(RAM);
耦合到所述处理器的固件中心,包括其上存储有固件代码的固件存储器,所述固件代码包括基本输入输出系统(BIOS);
经由视频子系统部件通信地耦合到所述处理器的视频控制台;
所述高速缓存的第一部分,其被用作当作RAM的高速缓存,并且存储所述BIOS的第一部分、包括用于与所述视频子系统部件通信的中断向量表和中断处理程序的BIOS代码的第二部分、以及从所述视频子系统部件中获得的option-ROM初始化代码,
其中,在引导过程中,所述视频子系统部件将在系统RAM被初始化之前执行来自于所述高速缓存的初始化代码,并且其中,所述中断向量表包含虚设INT10处理程序,以使得所述视频子系统的操作能够在系统RAM的初始化之前。
2.如权利要求1所述的系统,其中,所述处理器是在具有多处理器架构的平台中的自引导处理器。
3.如权利要求1所述的系统,其中,所述处理器被识别为在具有点对点互连、多处理器和多核心架构的平台中的自引导处理器,其中,所述视频子系统在所述点对点互连部件完成初始化之前被初始化。
4.如权利要求1所述的系统,其中,所述BIOS遵循可扩展固件接口架构,并且视频子系统初始化是在引导过程中在可扩展固件接口前初始化阶段期间执行的。
5.如权利要求1所述的系统,其中,一旦被初始化,所述视频控制台即可用于显示关于所述引导过程的状态消息,包括关于系统RAM初始化的状态。
6.一种用于加速平台中的视频子系统初始化的方法,包括:
在引导过程中的加电自检(POST)期间,配置一部分高速缓存作为当作RAM的高速缓存;
配置一部分当作RAM的高速缓存用来存储一部分固件代码;
在一部分当作RAM的高速缓存中存储视频子系统初始化代码;
在系统RAM被初始化之前,在POST期间开始执行当作RAM的高速缓存中的所述视频子系统初始化代码,其中,所述视频子系统初始化代码访问当作RAM的高速缓存而非系统RAM,并且其中,建立了中断向量表以包含虚设INT10处理程序,以使得所述视频子系统的操作能够在系统RAM的初始化之前;
将当作RAM的高速缓存中的视频子系统代码和固件代码拷贝到系统RAM中的适当位置;
完成所述引导过程。
7.如权利要求6所述的方法,其中,所述平台包括多个处理器和核心,一个处理器被指定作为自引导处理器,并且其中,被用作当作RAM的高速缓存的所述高速缓存耦合到所述自引导处理器。
8.如权利要求7所述的方法,其中,所述平台遵循点对点互连架构。
9.如权利要求6所述的方法,其中,所述平台遵循可扩展固件接口架构,进一步包括:
在开始所述引导过程的驱动执行环境阶段之前,完成所述视频子系统初始化代码的执行。
10.如权利要求6所述的方法,其中,配置一部分高速缓存进一步包括:
设置可编程属性寄存器,以将存储器访问映射到高速缓存;
对基地址寄存器进行编程,以映射到部分高速缓存;
生成中断向量表的拷贝,并且将该表存储在高速缓存中零位置处,其中,将存储器访问映射到高速缓存强制使用该拷贝的表。
11.如权利要求6所述的方法,进一步包括:
在系统RAM被初始化之前,在所述引导过程期间在与所述视频子系统相关联的视频控制台上提供所述引导过程的可视状态。
12.一种用于加速平台中的视频子系统初始化的装置:
用于在引导过程中的加电自检(POST)期间,配置一部分高速缓存作为当作RAM的高速缓存的模块;
用于配置一部分当作RAM的高速缓存用来存储一部分固件代码的模块;
用于在一部分当作RAM的高速缓存中存储视频子系统初始化代码的模块;
用于在系统RAM被初始化之前,在POST期间开始执行当作RAM的高速缓存中的所述视频子系统初始化代码的模块,其中,所述视频子系统初始化代码访问当作RAM的高速缓存而非系统RAM,并且其中,建立了中断向量表以包含虚设INT10处理程序,以使得所述视频子系统的操作能够在系统RAM的初始化之前;
用于将当作RAM的高速缓存中的视频子系统代码和固件代码拷贝到系统RAM中的适当位置的模块;
用于完成所述引导过程的模块。
13.如权利要求12所述的装置,其中,所述平台包括多个处理器和核心,一个处理器被指定作为自引导处理器,并且其中,被用作当作RAM的高速缓存的所述高速缓存耦合到所述自引导处理器。
14.如权利要求13所述的装置,其中,所述平台遵循点对点互连架构。
15.如权利要求12所述的装置,其中,所述平台遵循可扩展固件接口架构,进一步包括用于执行以下操作的指令:
用于在开始所述引导过程的驱动执行环境阶段之前,完成所述视频子系统初始化代码的执行的模块。
16.如权利要求12所述的装置,其中,用于配置一部分高速缓存的模块进一步包括:
用于设置可编程属性寄存器,以将存储器访问映射到高速缓存的模块;
用于对基地址寄存器进行编程,以映射到部分高速缓存的模块;
用于生成中断向量表的拷贝,并且将该表存储在高速缓存中零位置处的模块,其中,将存储器访问映射到高速缓存强制使用该拷贝的表。
17.如权利要求12所述的装置,进一步包括:
用于在系统RAM被初始化之前,在所述引导过程期间在与所述视频子系统相关联的视频控制台上提供所述引导过程的可视状态的模块。
CN2008101003618A 2007-03-30 2008-03-28 用于加速视频子系统初始化的系统、方法和装置 Expired - Fee Related CN101276286B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/731,525 US7987348B2 (en) 2007-03-30 2007-03-30 Instant on video
US11/731,525 2007-03-30

Publications (2)

Publication Number Publication Date
CN101276286A CN101276286A (zh) 2008-10-01
CN101276286B true CN101276286B (zh) 2012-06-27

Family

ID=39484569

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2008101003618A Expired - Fee Related CN101276286B (zh) 2007-03-30 2008-03-28 用于加速视频子系统初始化的系统、方法和装置

Country Status (3)

Country Link
US (1) US7987348B2 (zh)
EP (1) EP1975790A3 (zh)
CN (1) CN101276286B (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7661023B2 (en) * 2007-07-18 2010-02-09 International Business Machines Corporation System and method for verification of cache snoop logic and coherency between instruction & data caches for processor design verification and validation
US7647539B2 (en) * 2007-07-18 2010-01-12 International Business Machines Corporation System and method of testing using test pattern re-execution in varying timing scenarios for processor design verification and validation
US8127192B2 (en) * 2007-07-18 2012-02-28 International Business Machines Corporation Predicting lwarx and stwcx instructions in test pattern generation and simulation for processor design verification/validation in interrupt mode
US7689886B2 (en) * 2007-07-18 2010-03-30 International Business Machines Corporation System and method for predicting lwarx and stwcx instructions in test pattern generation and simulation for processor design verification and validation
US7747908B2 (en) * 2007-07-18 2010-06-29 International Business Machines Corporation System and method for creating different start cache and bus states using multiple test patterns for processor design verification and validation
US7739570B2 (en) * 2007-07-18 2010-06-15 International Business Machines Corporation System and method for increasing error checking performance by calculating CRC calculations after multiple test patterns for processor design verification and validation
US8145893B2 (en) * 2007-10-26 2012-03-27 Intel Corporation Hot-plugging a memory device
US8195927B2 (en) * 2007-10-31 2012-06-05 International Business Machines Corporation Expedient preparation of memory for video execution
US8185694B2 (en) * 2008-07-25 2012-05-22 International Business Machines Corporation Testing real page number bits in a cache directory
US20110131381A1 (en) * 2009-11-27 2011-06-02 Advanced Micro Devices, Inc. Cache scratch-pad and method therefor
CN101776986B (zh) * 2010-02-03 2011-12-14 青岛海信移动通信技术股份有限公司 一种启动程序时等待信息的显示控制方法和装置
US9208112B1 (en) * 2010-04-22 2015-12-08 American Megatrends, Inc. Permanent allocation of a large host memory
US20120060023A1 (en) * 2010-09-06 2012-03-08 Samsung Electronics Co., Ltd. Methods for booting an operating system using non-volatile memory
US8847967B2 (en) 2010-11-08 2014-09-30 Dell Products, Lp System and method for providing instant video in an information handling system
CN102006241B (zh) * 2010-12-17 2013-11-27 曙光信息产业股份有限公司 一种多个应用共享一个缓冲区的报文接收方法
US8490116B2 (en) * 2010-12-17 2013-07-16 Phoenix Technologies Ltd. Emulating legacy video using UEFI
WO2013075338A1 (zh) * 2011-11-25 2013-05-30 华为技术有限公司 一种机顶盒中呈现自定义内容的方法和机顶盒
CN104025026B (zh) * 2011-12-29 2019-07-26 英特尔公司 访问用于配置空间的配置和状态寄存器
CN102541607A (zh) * 2011-12-31 2012-07-04 曙光信息产业股份有限公司 基于uefi框架的bios配置方法和装置
US20140068239A1 (en) * 2012-08-28 2014-03-06 Han-Sheng YANG Method for booting icon lockout
EP3126990A4 (en) * 2014-04-02 2017-11-29 Continental Automotive GmbH Early rear view camera video display in a multiprocessor architecture
FR3048293B1 (fr) * 2016-02-29 2018-07-06 Sagemcom Broadband Sas Procede de programmation d'une animation lors de la phase de demarrage d'un dispositif electronique et dispositif electronique associe
CN106951358A (zh) * 2017-02-07 2017-07-14 深圳市智微智能科技开发有限公司 一种基于uefi标准的计算机系统上电自检时的快速显示状态信息方法及系统
KR102623918B1 (ko) * 2017-12-25 2024-01-11 인텔 코포레이션 프리-메모리 초기화 멀티스레드 병렬 컴퓨팅 플랫폼
US11113188B2 (en) 2019-08-21 2021-09-07 Microsoft Technology Licensing, Llc Data preservation using memory aperture flush order
CN110941452B (zh) * 2019-10-11 2022-02-18 合肥联宝信息技术有限公司 一种配置方法、bios芯片和电子设备
US11768691B2 (en) * 2020-09-18 2023-09-26 Intel Corporation Boot process for early display initialization and visualization
US20240037694A1 (en) * 2022-07-29 2024-02-01 Dell Products L.P. Seamless video in heterogeneous core information handling system

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477642B1 (en) * 1999-06-18 2002-11-05 Phoenix Technologies Ltd. Method and apparatus for extending BIOS control of screen display beyond operating system boot process

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5809531A (en) * 1992-09-21 1998-09-15 Intel Corporation Computer system for executing programs using an internal cache without accessing external RAM
US6374338B1 (en) * 1999-06-25 2002-04-16 International Business Machines Corporation Method for performing configuration tasks prior to and including memory configuration within a processor-based system
AU1958701A (en) 1999-12-08 2001-06-18 Insyde Software, Inc. A system and method for the delivery, retrieval and display of content prior to operating system loading
US6487656B1 (en) 1999-12-10 2002-11-26 Phoenix Technologies Ltd. System and method for providing functionalities to system BIOS
US6195749B1 (en) * 2000-02-10 2001-02-27 Advanced Micro Devices, Inc. Computer system including a memory access controller for using non-system memory storage resources during system boot time
US6704840B2 (en) * 2001-06-19 2004-03-09 Intel Corporation Computer system and method of computer initialization with caching of option BIOS
US7127579B2 (en) * 2002-03-26 2006-10-24 Intel Corporation Hardened extended firmware interface framework
US7379982B2 (en) * 2002-04-15 2008-05-27 Bassam Tabbara System and method for custom installation of an operating system on a remote client
US7254676B2 (en) 2002-11-15 2007-08-07 Intel Corporation Processor cache memory as RAM for execution of boot code
US20040103272A1 (en) * 2002-11-27 2004-05-27 Zimmer Vincent J. Using a processor cache as RAM during platform initialization
US6963344B1 (en) * 2002-12-24 2005-11-08 Nvidia Corporation Method and system for utilizing graphics memory to provide storage for video BIOS initialization
US7032108B2 (en) 2003-05-02 2006-04-18 Egenera, Inc. System and method for virtualizing basic input/output system (BIOS) including BIOS run time services
US7475233B2 (en) 2003-05-20 2009-01-06 Intel Corporation Method and apparatus for displaying a language specific text string in a pre-boot environment
JP2004348677A (ja) 2003-05-26 2004-12-09 Sony Corp プログラムおよび情報処理方法
US7194660B2 (en) 2003-06-23 2007-03-20 Newisys, Inc. Multi-processing in a BIOS environment
US7149890B2 (en) * 2003-11-21 2006-12-12 Intel Corporation Initializing system memory
US7370186B1 (en) * 2003-12-01 2008-05-06 Nvidia Corporation Multi-tasking bootstrap system and method
US20050132160A1 (en) 2003-12-15 2005-06-16 Everett Gerald L. Platform independent method for establishing a run-time data area
US20050172113A1 (en) * 2004-01-30 2005-08-04 Ati Technologies, Inc. Method and apparatus for basic input output system loading
TWI280487B (en) 2004-12-15 2007-05-01 Via Tech Inc Power-on method for computer system with hyper-threading processor
US20070011507A1 (en) * 2005-06-03 2007-01-11 Intel Corporation System and method for remote system support
TWI270818B (en) * 2005-06-30 2007-01-11 Via Tech Inc Boot method for quickly activating a computer system
TWI286703B (en) 2005-07-22 2007-09-11 Mitac Technology Corp Method using foreground image data to display and background program to load and execute computer program
US7793091B2 (en) 2005-08-26 2010-09-07 Sytex, Inc. Method, computer-readable media, devices and systems for loading a selected operating system of interest
US7493460B2 (en) * 2005-09-07 2009-02-17 Intel Corporation Preboot memory of a computer system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477642B1 (en) * 1999-06-18 2002-11-05 Phoenix Technologies Ltd. Method and apparatus for extending BIOS control of screen display beyond operating system boot process

Also Published As

Publication number Publication date
US7987348B2 (en) 2011-07-26
EP1975790A3 (en) 2009-06-10
EP1975790A2 (en) 2008-10-01
US20080244250A1 (en) 2008-10-02
CN101276286A (zh) 2008-10-01

Similar Documents

Publication Publication Date Title
CN101276286B (zh) 用于加速视频子系统初始化的系统、方法和装置
CN101311894B (zh) 多处理器/多内核消息传递机中的推测预取方法和装置
US10860332B2 (en) Multicore framework for use in pre-boot environment of a system-on-chip
US8078862B2 (en) Method for assigning physical data address range in multiprocessor system
US5682512A (en) Use of deferred bus access for address translation in a shared memory clustered computer system
KR101343714B1 (ko) 공유된 비휘발성 메모리 아키텍쳐
US6457099B1 (en) Programmable dedicated application card
TWI506559B (zh) 可動態和選擇性停用核心以及重新設定之多核心微處理器及其方法
US7779244B2 (en) Multi-socket boot
CN114580344B (zh) 测试激励生成方法、验证方法、验证系统及相关设备
US20080162873A1 (en) Heterogeneous multiprocessing
US10866737B2 (en) Apparatus, method and system to store information for a solid state drive
US7761696B1 (en) Quiescing and de-quiescing point-to-point links
JPH05189383A (ja) マルチプロセッサデータ処理システム及びインターフェース装置
JPH10333990A (ja) キャッシュメモリの検査方法
JP2003296191A (ja) 汎用プロセッサおよび周辺装置のプロセッサとして動作可能な集積回路
JP2010250863A (ja) 複数ノード間での通信方法、相互接続ポートおよび相互接続システム
US7627718B2 (en) Frozen ring cache
JP7287947B2 (ja) ダイレクト・メモリ・アドレス変換の効率的なテストのための集積回路、およびコンピュータ実装方法
US20130007768A1 (en) Atomic operations on multi-socket platforms
US7552269B2 (en) Synchronizing a plurality of processors
KR102551076B1 (ko) 멀티모달 인터페이스
US20180060080A1 (en) Hardware for System Firmware Use
CN116368467A (zh) 协调的初始化系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120627

Termination date: 20190328