CN103218237A - 使用基于rom的初始化单元和可编程微控制器的gpu的初始化 - Google Patents

使用基于rom的初始化单元和可编程微控制器的gpu的初始化 Download PDF

Info

Publication number
CN103218237A
CN103218237A CN2013100281212A CN201310028121A CN103218237A CN 103218237 A CN103218237 A CN 103218237A CN 2013100281212 A CN2013100281212 A CN 2013100281212A CN 201310028121 A CN201310028121 A CN 201310028121A CN 103218237 A CN103218237 A CN 103218237A
Authority
CN
China
Prior art keywords
initialization
ifr240
instruction
rom
initialization unit
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.)
Granted
Application number
CN2013100281212A
Other languages
English (en)
Other versions
CN103218237B (zh
Inventor
林肯·加利克
萨基特·吉姆卡
史蒂文·米勒
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of CN103218237A publication Critical patent/CN103218237A/zh
Application granted granted Critical
Publication of CN103218237B publication Critical patent/CN103218237B/zh
Active 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/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2105Dual mode as a secondary aspect
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2147Locking files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了使用基于ROM的初始化单元和可编程微控制器的GPU的初始化。用于实施用于GPU的初始化操作的方法包括当实施一个或多个初始化操作时检测错误。进一步地,方法包括解除将GPU耦连到存储器桥的通信链路上的抑制并使指示错误的调试输出显示给用户。

Description

使用基于ROM的初始化单元和可编程微控制器的GPU的初始化
技术领域
本发明的实施例总地涉及初始化,并且,更具体地,涉及使用基于ROM的初始化单元和可编程微控制器来初始化图形处理单元(GPU)。
背景技术
某些高级计算机系统用诸如图形处理单元(GPU)的专用处理器来增大通用CPU的处理能力。通常,在这种架构中,GPU初始化为在诸如快速外围部件互连
Figure BDA00002772252200011
链路的通信链路建立前以预定义方式来配置GPU。初始化GPU的一个传统方式是通过从GPU外部的只读存储器(ROM)读取指令并根据那些指令对GPU内的寄存器实施写操作。具体来说,经触发以在重置后的预定义时间执行的自ROM初始化部件(initialize-from-ROM IFR)在确定ROM存在后实施寄存器写操作。当IFR结束对寄存器的写入时,该IFR解除通信链路上的抑制(holdoff),允许通信发生。对于PCIe设备而言,解除抑制允许LTSSM链路调训(training)开始并且通常仅在IFR结束其寄存器写操作之后发生以确保这些写入不会被更广泛的系统内的其他程序或过程所干扰。
这种链路调训仅在全部寄存器写操作完成后开始的传统方法,对错误是不具有健壮性的,并且不可调试。具体来说,因为PCI链路调训仅在寄存器写入已完成之后开始,所以不能识别任何妨碍写操作完成的错误。进一步地,因为IFR仅从ROM读取并且写入到寄存器,单独的寄存器地址不得不在ROM内进行编码,由此必须是大的ROM。此外,IFR通常不能提供可对GPU的初始化和调试有帮助的诸如读-修改-写操作、轮询操作、分支、以及延时的附加的功能。
如前述所示出的,本领域所需要的是解决上文讨论的一个或多个缺点的初始化GPU的更有效的方式。
发明内容
本发明的一个实施例阐述了用于针对图形处理单元(GPU)实施初始化操作的方法。该方法包括当实施一个或多个初始化操作时检测错误。此外,该方法包括解除将GPU耦连到存储器的通信链路上的抑制,并由此允许一旦系统启动则经由软件调试错误,甚至使指示错误的调试输出显示给用户。在一个实施例中,该方法进一步包括编程微控制器以实施一个或多个初始化操作的至少一个。
其他实施例包括但不限于,包括使处理单元能够实现所公开的方法的一个或多个方面的指令的计算机可读介质以及配置为实现所公开的方法的一个或多个方面的系统。
附图说明
因此,可以详细地理解本发明的上述特征,并且可以参考实施例得到对如上面所简要概括的本发明更具体的描述,其中一些实施例在附图中示出。然而,应当注意的是,附图仅示出了本发明的典型实施例,因此不应被认为是对其范围的限制,本发明可以具有其他等效的实施例。
图1示出了配置为实现本发明的一个或多个方面的计算机系统;
图2示出了根据本发明的一个实施例的、配置为实施GPU初始化的子系统;
图3是根据本发明的一个实施例的、图2的ROM的更详细的图示;
图4是根据本发明的一个实施例的、用于经由IFR部件实施初始化和一旦错误的发生就解除PCIe链路的方法步骤的流程图;
图5是根据本发明的一个实施例的、用于一旦重置就配置GPU的方法步骤的流程图。
具体实施方式
系统概述
图1示出了配置为实现本发明的一个或多个方面的计算机系统。如所示,计算机系统100包括经由可以包括存储器桥105的互连路径通信的中央处理单元(CPU)102和系统存储器104。存储器桥105可以是例如北桥芯片,经由总线或其他通信路径106(例如超传输(HyperTransport)链路)连接到I/O(输入/输出)桥107。I/O桥107,其可以是例如南桥芯片,从一个或多个用户输入设备108(例如键盘、鼠标)接收用户输入并且经由路径106和存储器桥105将该输入转发到CPU102。并行处理子系统112经由示出为快速外围部件互连(PCIe)链路113的通信链路耦合到存储器桥105;在一个实施例中,并行处理子系统112是将像素传递到显示设备110(例如传统的基于阴极射线管或液晶显示器的监视器)的图形子系统。系统盘114也连接到I/O桥107。交换器116提供I/O桥107与诸如网络适配器118以及各种插卡120和121的其他部件之间的连接。其他部件(未明确示出),包括通用串行总线(USB)或其他端口连接、压缩磁盘(CD)驱动器、数字视频光盘(DVD)驱动器、胶片录制设备及类似部件,也可以连接到I/O桥107。
在一个实施例中,并行处理子系统112包含经优化用于图形和视频处理的电路,包括例如视频输出电路,并且构成图形处理单元(GPU)。在另一个实施例中,并行处理子系统112包含经优化用于通用处理的电路,同时保留本文所述的底层(underlying)的计算架构。在又一个实施例中,可以将并行处理子系统112与一个或多个其他系统元件集成,诸如存储器桥105、CPU102以及I/O桥107,以形成片上系统(SoC)。
应该理解,本文所示系统是示意性的,并且变化和修改都是可能的。连接拓扑,包括桥的数目和布置、CPU102的数目以及并行处理子系统112的数目,可根据需要修改。例如,在一些实施例中,系统存储器104直接连接到CPU102而不是通过桥,并且其他设备经由存储器桥105和CPU102与系统存储器104通信。在其他替代性拓扑中,并行处理子系统112连接到I/O桥107或直接连接到CPU102,而不是连接到存储器桥105。而在其他实施例中,I/O桥107和存储器桥105可能被集成到单个芯片上。大型实施例可以包括两个或两个以上的CPU102以及两个或两个以上的并行处理系统112。本文所示的特定部件是可选的;例如,任意数目的插卡或外围设备都可能得到支持。在一些实施例中,交换器116被去掉,网络适配器118和插卡120、121直接连接到I/O桥107。
图2示出了根据本发明的一个实施例的、配置为实施GPU初始化的子系统200。如所示,子系统200存在于图形卡202上并且包括但不限于,经由PCIe链路113耦连到存储器桥105的GPU200,以及ROM260。
GPU210包括导带(strap)245、自ROM初始化元件(“IFR”)240、微控制器250以及PCIe基地址寄存器#0(“BAR0)寄存器234。导带245可从GPU210突出并可包括可经读取以查明关于GPU210、图形卡202和/或子系统200的信息的设置。具体来说,导带245可由IFR240所读取以确定ROM260是否存在于子系统200内。在一些实施例中,IFR240可在其初始读取导带245以后不做任何事,并当导带245指示在子系统200内不存在ROM260时自动解除PCIe链路113上的抑制,从而支持未附有ROM的系统配置而不要求IFR的分开的硬件实现方案。
IFR240经由例如总线242可通信地与ROM260相耦连。IFR240进一步可通信地耦连到BAR0寄存器234。IFR240配置为在重置后以预定义时间从导带245进行读取以确定ROM260是否存在。一旦确定ROM260存在,IFR240从ROM260读取地址和数据并基于那些指令对BAR0寄存器234实施写和/或读-修改-写操作。进一步地,IFR240可配置为编程微控制器250,包括经由对间接到微控制器配置寄存器255的一个或多个BAR0寄存器234进行写入来实施诸如轮询操作、分支、延迟以及对资源的重复访问的高级初始化序列。这些高级初始化序列中的一个或多个可包含IFR240其自身不可实施的操作,因为IFR240仅能跨有限的接口集合进行预设计的操作。相比之下,微控制器可以是像CPU一样供应通用指令集并且系统具有更完整的接口集合的通用微控制器,其能够实施在硬件制造时间前未设想的操作。在编程微控制器250后,IFR240可经引导以经由ROM260中的指令开启(kick off)操作的执行,其使得微控制器切换(hand-off)寄存器235被写入但不限于此。
在一个实施例中,IFR240配置为当IFR240完成初始化步骤时自动解除PCIe链路113上的链路调训抑制。在替代实施例中,IFR240可配置为切换到微控制器250解除PCIe链路113的功能。例如,在BAR0寄存器234中的寄存器可用来存储关于IFR240解除PCIe链路113抑制还是要求微控制器250解除抑制的信息。在一个实施例中,使用IFR控制寄存器231,以及具体地,当被写入具体值时初始化链路调训的PCIe链路调训抑制寄存器236,以及指示IFR240的终端是否自动解除PCIe链路113的自动解除寄存器237,实现了链路抑制解除其自身。将PCIe链路113的解除切换到微控制器250包括禁止(disable)自动解除寄存器237以及恰当地留抑制寄存器236的值以用于微控制器250修改,从而延迟链路解除直到微控制器修改微控制器抑制寄存器236的值,例如,在读取自动解除寄存器237的值后,来确定在ROM260中的经编码的IFR指令以微控制器250实施解除的意图被写入。
微控制器250能够对GPU210上的任意位置进行读和写。进一步地,微控制器250包括IFR240可访问以编程微控制器250的微控制器配置寄存器255。在一些实施例中,为了促进微控制器250的编程,IFR240配置为实施以下操作中的一个或多个:读-修改-写操作、对相同地址的重复写操作和/或对递增地址的写操作。在进一步的实施例中,用于对相同地址的重复写操作和/或对递增地址的写操作的寄存器地址不单独地编码在ROM260中。
在一个实施例中,在IFR240已完成实施初始化操作之后,微控制器250执行微控制器配置寄存器255中的程序指令。在替代实施例中,当IFR240正在实施初始化操作时,微控制器250可开始执行微控制器配置寄存器255中程序指令。也就是说,微控制器250和IFR240可同时实施初始化操作。
BAR0寄存器234包括IFR错误状态寄存器232、用于间接访问PCIe配置说明寄存器233的寄存器、IFR配置寄存器231、微控制器切换寄存器235、以及在一些实施例中,用于访问ROM260的间接寄存器。如上文所描述的,IFR错误状态寄存器232存储关于在初始化过程期间所遭遇的错误的信息。例如,IFR错误状态寄存器232可存储指示用于指令的失败的奇偶校验检查的比特、不正确的ROM260尺寸或对其他可易检测的ROM260格式化错误的汇总(catch-all)。存储在IFR错误状态寄存器232中的信息可随后经由用于错误处理的图形卡202设备驱动程序进行检索、由工程师经由穿过用于图形卡202的PCIe BAR0地址空间的调试器进行查询和/或显示为调试输出。
PCIe配置说明寄存器233为GPU210提供配置空间。PCIe配置说明寄存器233包括但不限于物理地址偏移,在该处,寄存器234内存储的BAR0地址可作为系统的存储器子系统的一部分进行访问。通常,BAR0地址可保持由GPU210所使用的存储器地址或用于端口地址的偏移。为了初始化GPU210,除了其他方面,IFR240可访问经由由BAR0经由分开的接口给定的存储器偏移而不是虚拟存储器BAR0偏移可访问的GPU210内的BAR0地址并实施寄存器操作。
IFR配置寄存器231包括但不限于,PCIe链路调训抑制值236和自动解除值237。PCIe链路调训抑制值236当被写入具体值时初始化链路调训,并且自动解除值237指示终止IFR240的行为是否自动解除PCIe链路113上的抑制。如上文所描述的,链路抑制解除操作可切换到微控制器250。在这种情况下,IFR240禁止自动解除值237并且恰当地留抑制寄存器236的值以用于微控制器250修改,从而延迟链路抑制解除直到微控制器250对图形卡202的链路调训和PCIe设备枚举的发生做好准备为止。进一步地,当IFR240遭遇错误时,无论自动解除寄存器是否设置为解除抑制,IFR240均可自动终止并解除PCIe链路113上的抑制。IFR240通过将PCIe链路调训抑制值236的值设置为“禁止”来实施该类型的解除,从而解除PCIe链路113的抑制并强制链路调训开始。
PCIe链路调训抑制自动解除寄存器237可用来确定PCIe链路抑制解除是否被切换到微控制器250。如上文所描述的,当IFR240完成初始化时,IFR240可自动解除PCIe链路113上的抑制。然而可选地,IFR240相反可切换链路解除到微控制器250。ROM260可通过包括用于IFR240通过对自动解除寄存器237进行写入来禁止自动解除的指令来指示是否应发生这种切换、编程微控制器以及通过写入微控制器切换寄存器235来开启微控制器的执行,从而允许或禁止PCIe链路解除切换到微控制器250。
ROM260可包括固定功能段310,其允许IFR240验证ROM260是否损坏,以及某些附加的安全特征。可包括在固定功能段310内的验证和安全技术包括但不限于,总ROM尺寸值、校验和值、1s和/或0s的预定义序列。这些技术以及ROM260的其他方面在下文关于图3进行更详细的描述。ROM260可进一步包括扩展段319,其包含关于在初始化期间将实施的寄存器操作的信息。在一些实施例中,寄存器操作包括对BAR0寄存器234进行写入,以及对那些寄存器进行读-修改-写操作。ROM260的扩展段319可进一步包括用于编程微控制器250的指令,在一些实施例中还可经由对各种BAR0寄存器234进行写入来对其进行专门实施,以实施高级初始化序列,以及用于指示在扩展段本身中的数据是否损坏或不正确的比特。在各种实施例中,在扩展段中的错误以及在初始化过程期间所遭遇的其他错误(例如由IFR240中的漏洞(bug)所导致的错误)可自动触发IFR240对PCIe链路113的解除。在这种实例中,IFR240可使信息对于跨PCIe链路113可用的调试是有用的,并可经由显示设备110来显示给用户。这种信息可储存在IFR错误状态寄存器232中并从中进行检索。
图3是根据本发明的一个实施例的、图2的ROM260的更详细的图示。如所示,ROM260包括固定功能段310和扩展段319。固定功能段包括安全特征311和ROM验证值312。安全特征311可包括签名字和/或1s和/或0s的具体期望序列。ROM验证值可包括以字节指示ROM260的总尺寸的总ROM尺寸值和/或校验和值,该校验和值用于确定由预定义奇偶校验所屏蔽的、ROM中的总ROM尺寸字节数目的实际和是否等于校验和值。
通常,在识别ROM260的存在后,IFR240开始读取固定功能段310。具体来讲,IFR240首先读取并检验安全特征311。如果ROM260损坏或是假的,安全特征检验可能失败。在这种情况下,IFR240可终止,解除PCIe链路113上的抑制,并使得适当的调试输出显示给用户。如果安全特征311通过检验,那么IFR240继续读取固定功能段310。具体来讲,IFR240从固定功能段310检索验证值312。这些值可用来与LAST指令334的早期存在或不存在相组合来确定例如实际总ROM尺寸是否与所期望的尺寸相匹配。不匹配可能指示损坏或假的ROM260,并且还使得IFR240终止、解除PCIe链路113抑制并使得适当的调试输出显示给用户。
扩展段319包括数个不同类型的数据。如所示,数据包括IFR指令集320、微控制器指令集330以及其他指令329。IFR指令集320包括用于在初始化期间IFR240实施的操作的指令。在IFR指令集内,每个IFR指令322包括地址(“ADDR”)323和数据(“数据命令(DATA COMMAND)”)324。地址323指定寄存器地址(例如BAR0地址),数据324指示要由IFR240实施到地址323的寄存器写操作。在一些实施例中,数据324包括双字,并且每个IFR指令322均包括用于验证指令322的嵌入值。例如,数据324可包括与每个指令相关联的奇偶校验位,并且IFR240例如在默认情况下可配置为确定指令的奇偶校验是否与用于指令的奇偶校验位相匹配。奇偶校验位可指定偶数或奇数的奇偶校验并可由IFR240用来确定在指令322中的值一的比特的实际数目为偶数或奇数是否指示奇偶校验的失败。不匹配可指示损坏或假的ROM260。这种每指令奇偶校验检查可由IFR240用来检测错误并且尽可能早地终止以最大地限制存储器/寄存器空间的损坏程度。最后,在一些实施例中,“最终非微控制器编程(finalnon-microcontroller-programming)”指令325表示IFR指令集320的结束。
微控制器指令集330包括用于IFR240实施以编程微控制器250的操作的指令。在微控制器指令集330内,每个微控制器指令331均包括地址(“ADDR”)332和数据(“DATA COMMAND”)333。地址332指定微控制器配置寄存器255内的寄存器地址,并且数据333指示要由IFR240对地址332实施的写操作。例如,微控制器指令331可通过写入目标为微控制器的适当的原始机器码来指定IFR240编程微控制器250,以实施一个或多个轮询操作、要求分支的操作、要求延迟的操作以及要求对资源的重复访问的操作。在一些实施例中,每个微控制器指令331均可包括奇偶校验位。在这种实施例中,IFR240可配置为确定指令的奇偶校验是否与用于指令的奇偶校验位相匹配。不匹配可能指示损坏的或假的ROM260。替代实施例可能不在指令集320、329和330之间进行区分。例如,IFR240可经由BAR0地址寄存器空间内的、间接到微控制器配置寄存器255的寄存器编程微控制器250,允许微控制器经由IFR指令320而被编程。最后,在一些实施例中,“last”指令334表示全部IFR指令319的结束,并且区分将由IFR240所读取的ROM260图像的末端。
GPU初始化
如所描述的经改进的IFR240和经改进的用于将ROM260编码的指令集允许根据错误、更快的启动(boot-up)以及更紧凑的ROM260来解除PCIe链路113上的抑制。ROM260包括固定功能段310和扩展段319。固定功能段310包括信息,该信息允许IFR240确定ROM260是否是损坏的或假的并保护GPU210免受未经授权的访问。ROM260的扩展段319包括关于将由IFR240所实施的寄存器操作的信息,其可与微控制器250相配合行动。当IFR240正在实施初始化操作时,当IFR240遭遇ROM错误或一些其他错误时PCIe链路113上的抑制的解除被触发。由微控制器250而不是IFR240来实施诸如轮询操作、涉及分支的操作、涉及延迟的操作以及涉及对资源的重复访问的操作的高级初始化序列。具体来讲,ROM260可包括经改进的指令集,并且IFR240可使用该经改进的指令集来编程微控制器250以实施高级初始化序列。
图4是根据本发明的一个实施例的、用于经由IFR部件实施初始化和根据错误的发生解除PCIe链路的方法步骤的流程图。尽管结合图1-3描述了方法步骤,但是本领域的技术人员应理解的是,配置为以任何顺序实施该方法步骤的任何系统均落在本发明的范围内。
方法400在步骤410处开始,其中IFR240读取导带245以确定ROM260是否存在于系统200内。如果ROM260不存在,那么在步骤412处,IFR240终止操作,解除PCIe链路113上的抑制并且可选地使适当的调试输出(例如,指示ROM不存在)显示给用户。无论ROM是否存在,实施例还可解除链路调训上的抑制和终止之前实施图形卡202的其他固定功能初始化。
在步骤410处,如果IFR240检测到ROM260是存在的,那么在步骤415处,IFR240开始读取ROM260的固定功能段310以检验安全特征311。例如,IFR240可检验在固定功能段310中的特定位置处存在1s和/或0s的具体序列。检验安全特征311失败可指示ROM260是损坏的或假的,在步骤412处使IFR240终止操作,解除PCIe链路113,并使适当的调试输出显示给用户。
在步骤415处,如果IFR240成功检验了安全特征311,那么在步骤420处,IFR240从ROM260的固定功能段310读取一个或多个ROM验证值312。例如IFR240可从固定功能段310读取总ROM尺寸值和校验和值。总ROM尺寸值可以字节来指示ROM260的总尺寸,并可用来查明ROM260的实际尺寸是否与总ROM尺寸值相匹配。校验和值可指示由预定义奇偶校验所屏蔽的、在ROM260中的总ROM尺寸字节数的所期望的和,并可用于查明ROM260的实际校验和值是否等于校验和值的值。在固定功能段310中的总ROM尺寸值或校验和值匹配其相应的实际值的失败可指示ROM260是损坏的或假的,使IFR240如上文所描述的在步骤412处终止。在步骤420处,在方法400进一步行进前可检验一个或多个验证值。一个实施例不限于以任何特定的顺序实施311和312的安全和验证特征内的单独的步骤并可将其交错来加以实施。
在IFR240完成从固定功能段310的读取后,IFR240开始从ROM260的扩展段319读取数据。在步骤425处,IFR240读取与扩展段319的指令相关联的验证值,并且IFR240随后读取指令的实际双字,不限制为相同的读操作的部分。在一个实施例中,奇偶校验位可与指令相关联,并且在这种情况下,IFR420可读取奇偶校验位并确定该奇偶校验位的值是否与组成该指令的比特的实际奇偶校验相匹配。在进一步的实施例中,IFR420确定在指令内的比特是否与用于那些比特的预定义值相匹配。
在步骤430处,IFR240确定是否已达到ROM260图像的末端。在一个实施例中,该确定基于在步骤425处是否读取了“last”指令。更具体地,预定义类型的指令,其可在预定义ROM位置(例如在某地址发生的读-修改-写指令)处发生,可起最后的指令的作用,该最后的指令自身可将附加的写或读-修改-写操作进行编码。假定还未达到ROM260图像的末端,或如果指令是最后的写入,那么IFR240在步骤435处验证所读取的指令。例如,IFR240可将在步骤420处所读取的奇偶校验值与指令的实际奇偶校验加以比较。如果指令验证失败,那么ROM260可能是损坏的或假的。在这种情况下,在步骤412处IFR240终止,解除PCIe链路113抑制并使适当的调试输出显示给用户。
在步骤440处,IFR240确定是否遭遇任何其他验证问题。例如,IFR240可确定目前所读取的组成扩展段319的指令的字节数与IFR240目前读取的固定功能段310的字节数的算术和是否超过了总ROM尺寸值,或该和加上所要求的用于最后的指令334的字节数将超过总ROM尺寸值。给定还未达到最后的指令334,超过总ROM尺寸值可指示ROM260是损坏的或假的。此外,如果遭遇其他验证问题,那么在步骤412处IFR240终止,解除PCIe链路113,并将适当的调试输出显示给用户。如果IFR240在步骤430、435以及440处分别确定已达到ROM260图像的末端(在实施例中最后的指令334不将写或读-修改-写操作进行编码)、指令读取是有效的以及不存在其他验证问题,那么在步骤445处,IFR240执行指令,并且方法400返回到步骤425处,其中IFR240读取另一个指令。
现在回到步骤430处,如果IFR240确定已达到ROM260图像的末端并且实施例是最后的指令334不编码附加的操作这样的情况,那么方法前进至步骤450处,其中IFR240验证已读取的ROM。在替代实施例中,最后的指令将操作进行编码,IFR240实施该操作,并且随后方法前进至步骤450处。具体来讲,IFR240可确定在步骤420处所检索的一个或多个验证值是否与从实际ROM所确定的值相匹配。例如,IFR240可确定ROM值的实际总长度是否与从固定功能段310所读取的预定义总ROM尺寸验证值相匹配,或IFR可验证在固定功能段内指定的校验和。如果ROM260未通过验证,那么IFR在步骤412处终止,解除PCIe链路113上的抑制并使适当的调试输出显示给用户(例如,包括IFR240已完全处理了ROM的指示)。
可选地,如果验证了ROM260,那么IFR240在步骤460处可正常地退出并解除PCIe链路113抑制。
在一个实施例中,使用IFR240控制寄存器231来实现链路解除。具体地,对PCIe链路调训抑制寄存器236写入“禁止”值指示链路调训应开始,并且自动解除寄存器237的值确定IFR240的终止是否自动解除PCIe链路113。在这种情况下,如果IFR240遭遇错误并终止,那么错误还使IFR240无条件地强制PCIe链路调训抑制值236为“禁止”。也就是说,当遭遇错误时无论是否使能自动解除,均强制发生链路调训。这种方法确保:即使当自动解除被禁止时(例如,在失败条件不存在的情况下,当链路解除将被切换到微控制器250时),不论何时IFR240遭遇错误,IFR240触发链路调训抑制解除并可选地使适当的调试输出显示给用户。
图5是根据本公开的一个实施例的、用于一旦重置就配置GPU210的方法步骤的流程图。尽管结合图1-3描述了方法步骤,但是本领域的技术人员应理解的是,配置为以任何顺序实施该方法步骤的任何系统均落在本发明的范围内。
方法500在步骤510处开始,其中IFR240读取导带245以确定ROM260是否存在于系统200中。在一个实施例中,如果IFR240在步骤510处确定没有ROM260存在,那么IFR240可终止,解除PCIe链路113抑制,并将适当的调试输出显示给用户(例如,指示没有ROM260存在),类似于图4的步骤410和412。
假定在步骤510处,IFR240检测ROM260是存在的,那么在步骤520处,IFR240检验固定功能段310中的安全特征311和验证值312。例如,IFR240可检验1s和/或0s的具体序列存在于固定功能310中的特定位置,类似于图4的步骤415。在一些实施例中,检验311和/或312的特征的失败可被当做错误来对待,并且IFR240可终止,解除PCIe链路113抑制,并使调试输出显示给用户,类似于图4的步骤412。
如果IFR240在步骤515处成功地检验了安全和/或验证特征311/312,那么在步骤520处,IFR240读取在ROM260的扩展段319中的指令。在一些实施例中,ROM260的扩展段319包括指示需要被实施以初始化GPU210或图形卡202的寄存器操作的指令,包括将在由BAR0地址所涉及的寄存器上实施的寄存器操作。在一个实施例中,IFR240可进一步配置为检测错误,类似于图4的步骤435和440。在这种情况下,一旦检测到错误,IFR240可终止,解除PCIe链路113抑制并使适当的调试输出显示给用户,类似于图4的步骤412。
在步骤525处,在一个实施例中,IFR240确定是否已达到用于IFR240执行的寄存器操作的最终非微码编程指令325。在进一步的实施例中,最终非微码编程指令325可由在ROM260的扩展段319的预定义地址处发生的预定义指令所指示。如果没有达到最终非微码编程指令325,那么IFR240实施寄存器操作或在步骤515处所读取的指令中所指定的操作,并且方法返回步骤520。
如果在步骤525处,IFR确定在步骤520处所读取的指令322是用于IFR执行的不涉及编程微控制器的寄存器操作的最终非微码编程指令325,那么IFR实施在最终非微码编程指令325中所指示的操作。在一个实施例中,最终非微码编程指令325可以是任意正常的IFR指令324。
在步骤540处,IFR240继续读取ROM260的扩展段319中的指令,具体来讲,来自微控制器指令331的集合的指令,其指定由IFR240实施以编程微控制器250来实施复杂的初始化序列的寄存器操作。在一个实施例中,所使用的IFR240指令可以是相同的指令集322,并且微控制器可随后经由在映射到微控制器配置寄存器255的BAR0地址空间中的间接寄存器进行编程。在这种实施例中,被写入微控制器配置寄存器的数据可以是将实施扩展的初始化的微码250机器指令编码的写的序列。这种复杂的初始化序列可包括但不限于,轮询操作、涉及分支的操作、实际延迟的操作以及实际对资源的重复访问的操作。
在步骤545处,IFR240确定在步骤540处所读取的微控制器指令331是否是扩展段319的最后的指令334。在一个实施例中,IFR240可进一步配置为检测错误,如上所述,类似于图4的步骤435和440。在这种情况下,一旦检测到错误,IFR240可终止,解除PCIe链路113的抑制,并显示适当的调试输出,类似于图4的步骤412。
如果IFR240确定在步骤540处所读取的微控制器指令不是最后的指令334,那么在步骤550处,IFR240根据指令通过例如写入BAR0寄存器234来编程微控制器。方法500返回步骤540,其中IFR240读取ROM260的扩展段319中的另一个微控制器指令。在一个实施例中,IFR240通过写入微控制器配置寄存器255来编程微控制器250。在一些实施例中,IFR240配置为实施读-修改-写操作、对相同地址的重复写操作和/或对递增地址的写操作中的一个或多个以促进微控制器250的编程。在进一步的实施例中,用于对相同地址的重复写操作和/或对递增地址的写操作的寄存器地址不单独地编码在ROM260中—一系列的重复写入的起始地址可被明确地编码,例如,由IFR240所自动地计算为进一步的数据字的地址的余项从ROM来读取。
现在参考步骤545,如果IFR240确定已读取扩展段319的最后的指令334,那么IFR240在步骤545处执行最后的指令334。然后,IFR240解除PCIe链路113抑制,除非PCIe链路抑制解除已在ROM260中被指定为被切换到微控制器250的功能。在一个实施例中,使用IFR控制寄存器231来实现PCIe链路解除,具体来讲,使用指示链路调训是否应继续被延迟的PCIe链路调训抑制寄存器236以及指示IFR240的终止是否自动解除了PCIe链路113的抑制的自动解除寄存器237。在这种情况下,将PCIe链路解除切换到微控制器250包括禁止自动解除寄存器237以及恰当地留抑制寄存器236以用于微控制器250修改,从而延迟链路解除直到微控制器240修改抑制寄存器236。进一步地,在这种情况下,可通过在指示链路解除是否被切换到微控制器的微控制器切换寄存器235中附加的比特来控制禁止自动解除寄存器237以及恰当地留抑制寄存器236的过程。也就是说,在步骤530处,IFR240可根据从ROM260所读取的、指示链路解除是否被切换到微控制器250的指令来修改微控制器切换寄存器235的值,并且当或借助于执行通过写入寄存器235来初始化微控制器250的开启的最后的指令,IFR可进行该行为。
通常,在IFR240在步骤555处实施最后的指令后(在一些情况下,还解除PCIe链路113抑制),IFR240终止操作。IFR240终止操作之前、之后或同时,在步骤556处,微控制器250开始从其如经由微控制器配置寄存器255所写入的程序数据读取指令,并开始执行其读取的指令。在一些实施例中,指令可包括用于实施诸如轮询操作、涉及分支的操作、涉及延迟的操作、涉及对资源的重复访问的操作等等的复杂的初始化序列的指令。
如本文之前所述,PCIe链路解除可切换到微控制器250。在这种情况下,在步骤560处,在微控制器250完成执行从IFR240所接收的全部指令之后(或之前,如下文以进一步细节所描述的),微控制器250解除PCIe链路抑制。在一个实施例中,微控制器250可修改PCIe链路解除抑制寄存器236的值,从而解除PCIe链路113抑制并且开始PCIe链路调训。进一步地,在一个实施例中,微控制器250可配置为如果微控制器250遭遇错误那么终止、解除PCIe链路113抑制以及显示调试输出。如本文之前所描述的,错误可包括与ROM260相关的错误以及其他错误,诸如在GPU210的时钟的设置中的错误或与GPU210的总线相关的错误。
尽管在图5中以按顺序操作的方式示出了IFR240和微控制器250,但是在替代实施例中,IFR240和微控制器250可并发地操作以初始化GPU210。微控制器250可在其中IFR扩展段319指令使IFR对微控制器切换寄存器235写入具体值以开启执行的情况下,在由IFR240处理最后的指令前开始处理。这种通过IFR240和微控制器250的并发的初始化可加速整体启动过程。
在一些实施例中,微控制器250可以是通用微控制器。在替代实施例中,微控制器250可以是专用微控制器。尽管参考微控制器250进行了描述,但是本领域的技术人员应理解的是,可使用不同的初始化单元代替微控制器250以在IFR240实施初始化指令的同时来实施初始化操作和/或实施复杂的初始化操作。
总的来说,提供了用于一旦检测错误就解除抑制的方法,该抑制阻止跨间接或直接地将GPU耦连到存储器桥的链路的通信。具体来说,当实施初始化操作时,GPU的初始化单元可检测错误。一旦检测到错误,初始化单元可提早建立通信链路并为用户显示指示错误的调试输出。在一些实施例中,错误可包括ROM不存在以及ROM内的错误,诸如签名字与所期望值不匹配、ROM的总尺寸与所期望值不匹配、校验和与所期望值不匹配、奇偶校验与所期望的奇偶校验不匹配和/或ROM中的指令的长度与所期望值不匹配。
所公开的方法可进一步包括将微控制器进行编程以实施一个或多个初始化任务。初始化任务可包括诸如轮询操作、涉及分支的操作、涉及延迟的操作以及涉及对资源的重复访问的操作的操作。
在本发明的实施例中,有利地,当在初始化期间检测到错误时,初始化单元解除通信链路,从而允许调试输出得以显示或使其对于用户可访问,用户可随后调试错误。相比之下,现有技术的初始化单元缺乏错误解除(release-on-error)特征,错误发生时经常悬在启动处而不能够得以调试。在这种状况下,因为抑制未解除,所以通信链路不可用,并且GPU不像系统的其余部分那样。
进一步地,使用经由不单独编码在ROM中的寄存器地址所编程的微控制器许可了不是预定义操作的复杂的初始化操作、所减少的ROM尺寸以及更快的启动。所减少的ROM尺寸是有利的,因为ROM占位(footprint)是受限的。进一步地,微控制器可编程为实施复杂的初始化操作,其无法由现有技术的GPU初始化单元所实施,该操作包括轮询操作和涉及分支、延迟以及对资源的重复访问的操作。此外,微控制器可编程为实施不是在硬件制造时间之前所设想的预设计的操作的初始化操作。微控制器还可具有到ROM的更快的访问路径,允许其比初始化单元更迅速地进行基本初始化。
尽管前述内容涉及本发明的实施例,但在不脱离本发明基本范围的情况下可设计本发明的其他和进一步的实施例。例如,可通过硬件或软件或硬件与软件的组合来实现本发明的各方面。本发明的一个实施例可被实施为与计算机系统一起使用的程序产品。该程序产品的程序定义实施例的各功能(包括本文中描述的方法)并且可以被包含在各种计算机可读存储介质上。示出的计算机可读存储介质包括但不限于:(i)不可写入的存储介质(例如,计算机内的只读存储器设备,诸如可由CD-ROM驱动器读取的光盘只读存储器(CD-ROM)盘、闪存、只读存储器(ROM)芯片或任何类型的固态非易失性半导体存储器),在其上存储永久性信息;和(ii)可写入的存储介质(例如,磁盘驱动器或硬盘驱动器内的软盘或者任何类型的固态随机存取半导体存储器),在其上存储可更改的信息。当携带涉及本发明的功能的计算机可读指令时,这种计算机可读存储介质是本发明的实施例。
因此,前述描述和附图应看作是例示性的而非限制性的。

Claims (10)

1.一种用于针对图形处理单元(GPU)的实施初始化操作的计算机实现的方法,所述方法包括:
当实施一个或多个初始化操作时检测错误;
解除将所述GPU耦连到存储器桥的通信链路上的抑制;以及
使指示所述错误的调试输出显示给用户。
2.一种图形卡的初始化单元,配置为:
当实施一个或多个初始化操作时检测错误;
响应于所检测的错误,解除通信链路上的抑制;以及
使指示所述错误的调试输出显示给用户。
3.根据权利要求2所述的初始化单元,其中所述通信链路包括快速外围部件互连(PCIe)链路。
4.根据权利要求2所述的初始化单元,其中解除所述抑制包括除非解除所述通信链路上的所述抑制已被指派给第二初始化单元,否则终止第一初始化单元。
5.根据权利要求2所述的初始化单元,其中所述错误包括以下错误中的至少一个:未发现包括初始化指令的只读存储器(ROM)、所述ROM的签名与预定义签名不匹配、所述ROM的总尺寸与预定义尺寸不匹配、在所述ROM中包括的基于多个比特的校验和值与预定义值不匹配、在所述ROM中包括的基于多个比特的奇偶校验值与预定义值不匹配、已读取的指令的尺寸超过所述ROM的总尺寸、或所述已读取的指令的尺寸加上任何所要求的最后的一个或多个指令的尺寸超过所述ROM的总尺寸。
6.根据权利要求2所述的初始化单元,其中所述错误包括以下错误中的至少一个:与从包括初始化指令的ROM读取的指令相关联的奇偶校验值与用于组成一些或全部所述指令的比特的预定义奇偶校验不匹配、所述指令内的比特与用于这些比特的预定义值不匹配、或所述指令的双字数目与预定义数目不匹配。
7.根据权利要求2所述的初始化单元,其中所述初始化单元进一步配置为编程第二初始化单元以实施所述一个或多个初始化操作中的至少一个,允许至少一个初始化操作不是在硬件制造之前设想的预定义操作。
8.根据权利要求7所述的初始化单元,其中所述第二初始化单元包括微控制器,并且其中编程所述第二初始化单元包括实施以下操作中的一个或多个:读-修改-写操作、对相同地址的重复写操作或对递增地址的写操作。
9.根据权利要求8所述的初始化单元,其中所述一个或多个初始化操作包括以下操作中的至少一个:轮询操作、分支操作、对资源的重复访问操作或延迟操作。
10.根据权利要求9所述的初始化单元,其中所述初始化单元进一步配置为卸载至少一个初始化操作到所述第二初始化单元,并且其中所述初始化单元和所述第二初始化单元并发地实施各自的初始化操作。
CN201310028121.2A 2012-01-24 2013-01-24 使用基于rom的初始化单元和可编程微控制器的gpu的初始化 Active CN103218237B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/357,553 US8839039B2 (en) 2012-01-24 2012-01-24 Initialization of GPU using ROM-based initialization unit and programmable microcontroller
US13/357553 2012-01-24
US13/357,553 2012-01-24

Publications (2)

Publication Number Publication Date
CN103218237A true CN103218237A (zh) 2013-07-24
CN103218237B CN103218237B (zh) 2016-06-08

Family

ID=48742554

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310028121.2A Active CN103218237B (zh) 2012-01-24 2013-01-24 使用基于rom的初始化单元和可编程微控制器的gpu的初始化

Country Status (4)

Country Link
US (1) US8839039B2 (zh)
CN (1) CN103218237B (zh)
DE (1) DE102013200795A1 (zh)
TW (1) TWI494752B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106200423A (zh) * 2015-05-06 2016-12-07 上海汽车集团股份有限公司 零件的控制器的可变参数初始化方法及装置
CN106708592A (zh) * 2017-01-25 2017-05-24 北京鸿智电通科技有限公司 一种微控制器以及用于微控制器的代码烧录方法

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014085861A (ja) * 2012-10-24 2014-05-12 Canon Inc 表示システム、端末装置、表示装置、表示システムの制御方法、端末装置の制御方法、及び、表示装置の制御方法
CN106462712B (zh) * 2014-05-16 2020-02-07 索尼半导体解决方案公司 信息处理装置、信息处理方法和电子设备
US11586446B1 (en) * 2020-05-20 2023-02-21 Marvell Asia Pte Ltd System and methods for hardware-based PCIe link up based on post silicon characterization

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW200909677A (en) * 2007-08-29 2009-03-01 Yong-Han Liu Device for producing propulsion by arrangement of magnetic attraction/repulsion forces
CN101719262A (zh) * 2008-11-06 2010-06-02 威盛电子股份有限公司 绘图处理单元、元命令处理系统以及元命令执行方法
TW201108152A (en) * 2009-06-02 2011-03-01 Qualcomm Inc Displaying a visual representation of performance metrics for rendered graphics elements
US20110202154A1 (en) * 1997-07-09 2011-08-18 Advanced Audio Devices, Llc Personal digital stereo player

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5369744A (en) * 1989-10-16 1994-11-29 Hitachi, Ltd. Address-translatable graphic processor, data processor and drawing method with employment of the same
US6571363B1 (en) * 1998-12-30 2003-05-27 Texas Instruments Incorporated Single event upset tolerant microprocessor architecture
US6981176B2 (en) * 1999-05-10 2005-12-27 Delphi Technologies, Inc. Secured microcontroller architecture
JP3474139B2 (ja) * 2000-01-17 2003-12-08 インターナショナル・ビジネス・マシーンズ・コーポレーション コンピュータの電源制御方法、電源制御装置及びコンピュータ
US6681282B1 (en) * 2000-08-31 2004-01-20 Hewlett-Packard Development Company, L.P. Online control of a multiprocessor computer system
US7558958B2 (en) * 2002-06-13 2009-07-07 Microsoft Corporation System and method for securely booting from a network
US20080313442A1 (en) * 2007-06-13 2008-12-18 Jian Wei Debugging techniques for a programmable integrated circuit
US8839006B2 (en) * 2010-05-28 2014-09-16 Nvidia Corporation Power consumption reduction systems and methods

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110202154A1 (en) * 1997-07-09 2011-08-18 Advanced Audio Devices, Llc Personal digital stereo player
TW200909677A (en) * 2007-08-29 2009-03-01 Yong-Han Liu Device for producing propulsion by arrangement of magnetic attraction/repulsion forces
CN101719262A (zh) * 2008-11-06 2010-06-02 威盛电子股份有限公司 绘图处理单元、元命令处理系统以及元命令执行方法
TW201108152A (en) * 2009-06-02 2011-03-01 Qualcomm Inc Displaying a visual representation of performance metrics for rendered graphics elements

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106200423A (zh) * 2015-05-06 2016-12-07 上海汽车集团股份有限公司 零件的控制器的可变参数初始化方法及装置
CN106200423B (zh) * 2015-05-06 2018-08-21 上海汽车集团股份有限公司 零件的控制器的可变参数初始化方法及装置
CN106708592A (zh) * 2017-01-25 2017-05-24 北京鸿智电通科技有限公司 一种微控制器以及用于微控制器的代码烧录方法

Also Published As

Publication number Publication date
TW201405302A (zh) 2014-02-01
CN103218237B (zh) 2016-06-08
US8839039B2 (en) 2014-09-16
US20130191692A1 (en) 2013-07-25
TWI494752B (zh) 2015-08-01
DE102013200795A1 (de) 2013-07-25

Similar Documents

Publication Publication Date Title
CN107493685B (zh) 经由端口控制器自身的外部端口对端口控制器进行再编程
CN103119554B (zh) 提供平台无关的存储器逻辑
KR102408053B1 (ko) 시스템 온 칩, 모바일 기기 및 시스템 온 칩의 동작 방법
JP3437939B2 (ja) 以前にエラーに遭遇した装置に対するロード・オペレーションまたはストア・オペレーションの完了を阻止する方法及び機構
US7900036B2 (en) System and method for implementing boot/recovery on a data processing sysem
US9823972B2 (en) Mobile flash storage boot partition and/or logical unit shadowing
TW445416B (en) Upgrade card for a computer system and method of operating the same
CN103218237A (zh) 使用基于rom的初始化单元和可编程微控制器的gpu的初始化
TWI551994B (zh) 根據介面耦接的彈性埠口組配技術
CN110069361B (zh) 用于tpm故障切换的方法和装置
US9529686B1 (en) Error protection for bus interconnect circuits
CN111033630A (zh) 具有mbist的多处理器内核设备
KR20060046485A (ko) 메모리 카드 및 반도체 장치
TWI510912B (zh) 多核電路中之容錯
TW584800B (en) Method, computer and peripheral/expansion bus bridge for booting up with debug system
US20150100776A1 (en) Non-disruptive code update of a single processor in a multi-processor computing system
US20080250186A1 (en) Bus connecting device for connecting host with external device
US20140181495A1 (en) System on chip including boot shell debugging hardware and driving method thereof
US9946552B2 (en) System and method for detecting redundant array of independent disks (RAID) controller state from baseboard management controller (BMC)
TW201214126A (en) Embedded programmable module for host controller configurability
US8127181B1 (en) Hardware warning protocol for processing units
US9934045B1 (en) Embedded system boot from a storage device
US9262340B1 (en) Privileged mode methods and circuits for processor systems
US20220156211A1 (en) Dynamic provisioning of pcie devices at run time for bare metal servers
US7165172B1 (en) Facilitating cold reset and warm reset tasking in a computer system

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