解决中央处理单元的内建自我测试的失败问题的方法

文档序号:6559547阅读:244来源:国知局
专利名称:解决中央处理单元的内建自我测试的失败问题的方法
技术领域
本发明是关于一种利用基本输入输出系统(Basic Input/Output System,以下简称BIOS)去解决中央处理单元(Central Process Unit,以下简称CPU)的内建自我测试(Build-in Self Test,以下简称BIST)的失败问题并令系统能发挥其最大效能的方法,尤指一种可在完全无需增设额外硬件,且无需将整个实体(Physical)CPU设定成禁能(Disable)状态的情形下,有效解决CPU的BIST失败的问题,且完全使用到所有测试未失败的逻辑(Logical)CPU,使系统得以发挥其最大效能的方法。
背景技术
随着超大规模集成电路(VLSI)制造技术的进步,许多电子元件已可被整合在一个单芯片中,致单芯片所能处理的运算愈来愈复杂,随之而来的问题是,若没有良好规划且严谨设计的测试技术来执行电路的测试,则所设计出的芯片品质将无法获得良好的品质保证。近年来,系统单芯片(System Ona Chip,以下简称SoC)技术已逐渐发展成熟,且被应用至许多电子产品中,所谓“系统单芯片”就是一个系统可被容纳于一个单芯片中,也即一个单芯片中包含中央处理单元(CPU)、输入输出单元(I/O Unit)及存储器(Memory)等元件,其中存储器又占其百分之八十以上的比例,因此,未来存储器的需求量将随着系统处理能力的复杂度增加而有增加的趋势,故如何更有效率地来测试SoC中的存储器,已变成一个不容忽视的课题。
由于,一个SoC中包含不同种类大大小小的存储器,若无法对这些存储器进行有效率的测试,则整个SoC的品质及效率将无法得到保证,因此,一种用以平行测试各种不同大小存储器的架构应运而生,这一测试架构称之为“内建自我测试”(Build-In SelfTest,以下简称BIST),是内建于SoC内部,采用自我测试的方式对SoC内部的电路进行测试,以有效节省测试成本,并大幅提升测试速度。
目前在SoC中,当CPU在做BIST却失败(Failure)时,采用下列三种应变作法(1)不支持任何自我测试失败的应变措施(即无动作);(2)仅将CPU做BIST失败时的错误信息(CPU BIST Error)记录在事件日志(Event Log)中,并于BIOS的开机自我测试(Power-On SelfTest,POST)时,显示此一错误信息或警示信息(Warning Message),让使用者得知这一事件,并决定下一步骤应如何处理;(3)支持BIST失败时的应变措施,也即若CPU发生BIST失败的问题,则将此实体的CPU设定成禁能(Disable)状态,并在记录这一事件后,经由基板管理控制器(Baseboard Management Controller,以下简称BMC)或在BIOS的开机自我测试(Power On SelfTest,POST)时,显示一“CPU BISTFailure”的警示信息,通知使用者进行后续处理,这一应变措施虽解决了CPU在做BIST失败时的部分问题,但仍具有下列缺点A.需藉额外设计的硬件(Hardware)执行使测试失败的CPU禁能的动作。现今的作法是利用一通用输出(General Purpose Output,以下简称GPO)接脚(Pin)连接至该实体CPU上编号SMI#的接脚(一个实体CPU只有一个编号SMI#的接脚),去对该实体CPU执行禁能的动作,该通用输出接脚大部分是由BMC所控制,故需增设硬件完成对该实体CPU执行禁能的动作,额外地增加了设计及制造的成本;B.整个实体CPU(即“双核心”(Dual Core)加上“超线程”(Hyper-Threading))将被禁能,故,该实体CPU内部良好(即测试未失败)的逻辑(Logical)CPU将无法被使用,致系统无法发挥其最大的效能(Performance)。依据CPU接脚的定义,当CPU的重置(Reset#)接脚的信号为有效(Active)时,若检测(Sample)到编号SMI#的接脚的信号为低电位(Low)时,该实体CPU的所有接脚将处于第三状态(Tri-State),相当于该实体CPU不存在的状态,也即该实体CPU将被设定为禁能状态。由于一个实体CPU只有一个编号SMI#的接脚,故当实体CPU被设定为禁能状态时,其内部所有的逻辑(Logical)CPU也将被设定为禁能状态,致系统无法发挥其最大的效能。
因此,如何设计出一种系统单芯片,无需藉额外增设硬件,即可在其进行自我测试且发生CPU测试失败时,仅将该测试失败的逻辑CPU设定为禁能状态,而无需将整个实体CPU设定为禁能状态,以有效降低设计及制造的成本,并令操作系统可完全使用到其它测试未失败的逻辑CPU,令系统能发挥其最大效能,即成为目前各系统单芯片业者亟待克服的一重要议题。

发明内容
有鉴于前述传统系统单芯片中存在的诸多问题,发明人经过长久努力研究与实验,终于开发设计出本发明的一种利用基本输入输出系统去解决中央处理单元的内建自我测试的失败问题并令系统能发挥其最大效能的方法,以在无需增设额外硬件,且无需将整个实体CPU设定为禁能状态的情形下,能完全使用到其它测试未失败的逻辑CPU,令系统发挥其最大的效能。
本发明的主要目的,是通过BIOS的操作方式,利用系统的开机处理器(Boot Strap Processor,以下简称BSP)对所有的应用处理器(ApplicationProcessor,以下简称AP)发出初始检验信号(如INIT IPI及Startup IPI),且通过发出处理器中断(Startup Inter-Processor Interrupt,以下简称SIPI)信号,以获得所有AP的BIST状态值,所述BIST状态值是在CPU Hard Reset时,CPU自动执行BIST所产生;再通过对BIOS所提供的一多重处理器规范(Multi-Processor Specification,以下简称MPS)表(Table)及一进阶组态及电源接口(Advanced Configuration Power Interface,以下简称ACPI)表中代表可使用的CPU的旗标值(Flag)进行设定,以告知操作系统(OperationSystem,简称OS),目前还有哪些BIST未失败的逻辑(Logical)CPU可被OS使用,如此,OS即可完全使用到所有测试未失败的逻辑CPU,有效解决CPU自我测试失败的问题,并使系统得以发挥其最大的效能。
本发明的另一目的,是通过BIOS的操作方式,仅将BIST失败的逻辑CPU设定为禁能状态,而无需将整个实体CPU设定为禁能状态,如此,即可在完全无需增设额外硬件的情形下,有效解决CPU自我测试失败的问题。
为使审查员能对本发明的目的、技术特征及其功效有更进一步的认识与了解,现特举一实施例,并配合图式,详细说明如下。


图1所示是本发明一实施例的计算机系统中支持“超线程”的实体CPU与其逻辑CPU的关系示意图;图2所示是本发明另一实施例的计算机系统中支持“超线程”及“双核心”的实体CPU与其逻辑CPU的关系示意图;及图3所示是本发明的操作流程示意图。
主要组件符号说明实体的中央处理单元………10、11、30、40逻辑的中央处理单元………101、102、111、112、311、312、321、322、411、412、421、42具体实施方式
在本发明的一实施例中,是以设有二个中央处理单元(CPU,或称处理器)插接座(Socket)的一计算机系统为例加以说明,所述插接座上所插设的每个中央处理单元都支持“超线程”(Hyper-Threading)技术,且使用者只能在所述插接座上插设具相同CPU识别码(ID)的两个实体(Physical)CPU,或仅插设一个实体CPU于该计算机系统上。请参阅图1所示,计算机系统可供插设两个实体(Physical)CPU 10、11,且每一个实体CPU 10、11可分别包含有两个逻辑CPU,故,该计算机系统最多可拥有四个逻辑(Logical)CPU 101、102、111、112,其中,每个逻辑CPU 101、102、111、112都包含有一区域(Local)先进可程序中断控制器(Advanced ProgrammableInterrupt Controller,以下简称APIC),且所述Local APIC分别具有一识别码(以下简称Local APIC ID),以供逻辑CPU在做IPI Protocol信息的通信时,得以用来识别逻辑CPU,换言之,Local APIC ID是用来代表逻辑CPU。所述逻辑CPU 101、102、111、112是在一共享主机总线(Common Host Bus)上相互连接,并通过一处理器间的中断协议(Inter-Processor Interrupt Protocol,以下简称IPI Protocol)相互沟通,其中,该IPI Protocol可产生多个IPI信息,各该IPI信息中至少包含有一Local APIC ID字段,用以表示目的地逻辑CPU101、102、111或112,而逻辑CPU 101、102、111、112的Lcoal APIC ID,是由CPU的某些Pin脚(例如假如该计算机系统具有两个实体CPU的插接座时,是使用BR0 Pin脚去决定;假如该计算机系统具有四个实体CPU的插接座时,则使用BR0及BR1Pin脚去决定,依此类推。)的硬件线路接法决定,并在计算机系统开机时,自动记录在逻辑CPU的内部缓存器中。
在该实施例中,就在当发生一事件(Event)以便激活该计算机系统的基本输入输出系统初始化时,该事件(Event)例如为打开电源(Power ON)或CPU Hard Reset等,逻辑CPU 101、102、111、112将分别自动执行BIST,并在共享主机总线(Common Host Bus)上执行一对称协调(SymmetricArbitration)机制,在此机制下的胜出者(Winner)的逻辑CPU 101、102、111或112即被设定为一开机处理器(Boot Strap Processor,以下简称BSP),此时,作为BSP的逻辑CPU 101、102、111或112将发送出一存储器抓取周期(Memory Fetch Cycle)信号,以自该储存有该基本输入输出系统的闪存(BIOS Flash ROM)中,抓取并执行一指令(该指令是CPU在硬件重置(HardReset)后,所抓到的第一条指令),请参阅图3所示,该计算机系统再依下列步骤进行处理
701、该开机处理器(如第一逻辑CPU 101)对所有的应用处理器(Application Processor,以下简称AP)(如第二至四逻辑CPU 102、111、112,也即“非作为BSP”的所有逻辑CPU)发出初始检验信号(如INIT IPI及Startup IPI)及处理器中断(Startup Inter-Processor Interrupt,以下简称SIPI)信号,以取得作为所述AP的逻辑CPU 102、111、112的BIST状态值;其中,在此需特别注意,在计算机系统开机后,若判断出BSP的加强型累加(Extended Accumulate,简称EAX)寄存器(Register)所储存的值不等于0,即表示该BSP(如第一逻辑CPU 101)为BIST失败;702、判断BSP(如第一逻辑CPU 101)是否为BIST失败?若是,即依步骤703继续进行处理;否则,依步骤706进行后续处理;703、判断逻辑CPU 101、102、111及112是否均为BIST失败?若是,即依步骤705进行后续处理步骤;否则,依步骤704继续进行处理;704、将下一个逻辑CPU(如第三逻辑CPU 111)的一BSP指示位(IndicateBit)设为“1”,令该逻辑CPU(如第三逻辑CPU 111)作为该计算机系统的开机处理器(BSP),且将其它的逻辑CPU(如第一、第二及第四逻辑CPU 101、102及112)的BSP指示位均设为“0”,再对所有实体CPU进行硬件重置(Hard Reset),并重新依步骤701继续进行处理;705、停止(Halt)该计算机系统的操作,并产生一警示信息,显示在与该计算机系统相连接的一显示器上,用以通知使用者;706、依所述逻辑CPU 101、102、111、112的BIST状态,设定该基本输入输出系统(BIOS)所提供的一多重处理器规范(Multi-ProcessorSpecification,简称MPS)表及一进阶组态及电源接口(Advanced ConfigurationPower Interface,简称ACPI)表中用来代表各该可使用的逻辑CPU的旗标值(Flag),并激活该计算机系统的一操作系统(Operation System,以下简称OS);之后,该OS自该MPS表与ACPI表中读出所述旗标值,以正确地判断出已BIST成功的逻辑CPU,进而实际使用,令该计算机系统可发挥出最大效能。
承上述,在步骤706中,若任一逻辑CPU系为BIST失败时,即将对应该逻辑CPU的旗标值设为“0”,反之,若任一逻辑CPU为BIST成功时,即将对应该逻辑CPU的旗标值设为“1”。
在此须特别声明的是,在步骤704中,所述逻辑CPU被选择作为BSP的优先级,是依第一逻辑CPU 101、第三逻辑CPU 111、第二逻辑CPU 102及第四逻辑CPU 112的顺序逐一进行处理;但,所述优先级仅为本发明的一实施例,无论该顺序如何改变,只要符合步骤704中,可将下一个逻辑CPU作为开机处理器,都为本发明所欲保护的范围。
在该实施例中,对于支持“超线程”的中央处理单元(CPU)被致能(Enable)的情形而言,当该计算机系统的OS开始操作时,该OS可自该MPS表及ACPI表中取得所述CPU的数目,且依各该逻辑CPU的BIST状态的不同,而有下表所列的不同数值,其中ID#0、ID#1、ID#6及ID#7分别代表着逻辑CPU 101、102、111、112的Local APIC ID,F代表着BIST失败的逻辑CPU,G(B)代表着BIST未失败且被设定为BSP的逻辑CPU,G代表着BIST未失败的AP,而括号内的数值为传统作法下可供使用CPU的数目。在此须特别注意的是,在本实施例中,由于某些中央处理单元(CPU)与操作系统(OS)间的限制,该MPS表的旗标值只依ID#0及ID#6的BIST状态进行设定,而ID#1及ID#7是不可使用的逻辑CPU;但,该ACPI表则无此限制。


在本发明的另一实施例中,是以一设有二个中央处理单元(CPU)插接座(Socket)的计算机系统为例加以说明,所述插接座上所插设的CPU,除了可支持“超线程”技术外,还支持“双核心”(Dual Core)技术,请参阅图2所示,该计算机系统可供插设两个实体(Physical)CPU 30、40,由于实体CPU 30、40分别包含有两个核心(Core),各核心(Core)分别包含有两个逻辑(Logical)CPU,故,在本实施例中,该计算机系统最多可同时拥有8个逻辑CPU 311、312、321、322、411、412、421及422,其中逻辑CPU 311、312、321及322的Local APIC ID分别为0、1、2、3,而逻辑CPU411、412、421及422的Local APIC ID分别为4、5、6、7。
如此,对于支持“双核心”及“超线程”技术的所述CPU均被致能(Enable)的情形而言,当该计算机系统开机时,该计算机系统的BSP将依如图3所示的步骤进行处理,在本实施例中,所述逻辑CPU的优先级是依逻辑CPU 311、411、321、421、312、412、322、422的顺序逐一进行处理;待该OS开始操作后,该OS在该MPS表及ACPI表中所取得的CPU数目;将依各该逻辑CPU的BIST状态的不同,而有下表所列的不同数值,其中ID#0、ID#1、ID#2、ID#3、ID#4、ID#5、ID#6及ID#7分别代表着逻辑CPU 311、312、321、322、411、412、421及422的Local APIC ID,而括号内的数值为传统作法下可使用CPU的数目。
在此须特别注意的是,在本实施例中,由于某些中央处理单元(CPU)与操作系统(OS)间的限制,因而该MPS表的旗标值仅依ID#0、ID#2、ID#4及ID#6的BIST状态进行设定,而ID#1、ID#3、ID#5及ID#7是不可使用的逻辑CPU;但,该ACPI表则无此限制。另,由于下表共有256个项目,倘若完整列出,则过于占据本面,也显得累赘,故,在此仅列出部分项目,其余则可依此类推。

因此,对于本发明前述第一个实施例中两个支持“超线程”的实体CPU而言,若分别有一个逻辑CPU(即LocalAPICID#00及LocalAPICID#06)被致能,则其中被选择作为BSP的逻辑CPU(即LocalAPICID#00)在MPS表中的记录(Configuration Table Entry)将如下表所示,其CPUBootStrap字段的旗标值为1


另一未被选择作为BSP的逻辑CPU(即LocalAPICID#06)在MPS表中的配置记录(Configuration Table Entry)将如下表所示,其CPUBootStrap字段的旗标值为0

若在本发明前述第一个实施例的两个支持“超线程”的实体CPU中,仅一个实体CPU被致能,即两个逻辑CPU(即APIC ID#00及APIC ID#01)被致能,另两个逻辑CPU(即APIC ID#06及APIC ID#07)被设定为禁能状态,则在ACPI表中APIC ID为00的逻辑CPU的配置记录(Madt processorEntry)将如下表所示

在ACPI表中APIC ID为01的逻辑CPU的配置记录(Madt processorEntry)将如下表所示


在ACPI表中APIC ID为06的逻辑CPU的配置记录(Madt processorEntry)将如下表所示

在ACPI表中APIC ID为07的逻辑CPU的配置记录(Madt processorEntry)将如下表所示

据上述可知,本发明可在完全无需增设额外硬件的情形下,通过BIOS的操作方式,将BIST失败的逻辑CPU设定为禁能状态,而无需将整个实体CPU设定为禁能状态,并对MPS表及ACPI表中代表可使用的CPU的旗标值进行设定,如此,OS即可通过读取MPS表及ACPI表中的旗标值,得知目前还有那些BIST未失败的逻辑CPU可被OS使用,进而完全使用到所有的BIST未失败的逻辑CPU,有效解决CPU自我测试失败的问题,并使系统得以发挥其最大的效能。
以上所述,仅为本发明的具体实施例,但本发明的特征并不局限于此,任何熟悉该项技艺者在本发明领域内,可轻易想到的变化或修饰,都应涵盖在以下本发明的权利要求中。
权利要求
1.一种解决中央处理单元的内建自我测试的失败问题的方法,其特征在于包括通过一计算机系统的基本输入输出系统的操作方式,将该计算机系统上所设的至少一个实体处理器所包含的至少二个逻辑处理器中的一个逻辑处理器作为该计算机系统的开机处理器;将其它的逻辑处理器作为该计算机系统的应用处理器;对该基本输入输出系统提供的一多重处理器规范表及一进阶组态及电源接口表中代表可使用的处理器的旗标值进行设定,将内建自我测试失败的逻辑处理器设定成禁能状态;及令该计算机系统的操作系统自该多重处理器规范表与进阶组态及电源接口表中读出所述旗标值;判断是否已有内建自我测试成功的逻辑处理器;若是,即令该操作系统使用所述逻辑处理器。
2.如权利要求1所述的方法,其特征在于,所述基本输入输出系统的操作方式还包括令开机处理器对各应用处理器发出初始检验信号;令开机处理器对各应用处理器发出处理器中断信号,以取得该应用处理器的BIST状态值。
3.如权利要求2所述的方法,其特征在于,所述基本输入输出系统的操作方式还包括判断开机处理器的内建自我测试是否失败;若否,即依各处理器的内建自我测试状态,去设定多重处理器规范表与进阶组态及电源接口表中代表可使用的处理器的旗标值。
4.如权利要求2所述的方法,其特征在于,所述基本输入输出系统的操作方式还包括判断开机处理器的内建自我测试是否失败;若是,判断所述应用处理器的内建自我测试是否并非均为失败;若是,选取下一个逻辑处理器作为该计算机系统的开机处理器,再依权利要求1的步骤进行处理,以取得各应用处理器的内建自我测试的状态值。
5.如权利要求2所述的方法,其特征在于,所述基本输入输出系统的操作方式还包括判断开机处理器的内建自我测试是否失败;若是,判断所述应用处理器的内建自我测试是否均失败;若是,停止该计算机系统的操作,并发出一警示信息。
全文摘要
本发明是一种解决中央处理单元的内建自我测试的失败问题的方法,该方法通过基本输入输出系统的操作方式,对所提供的一多重处理器规范表及一进阶组态及电源接口表中代表可使用的中央处理单元的旗标值进行设定,以告知操作系统目前还有那些内建自我测试未失败的逻辑中央处理单元可被操作系统使用,如此,即可在完全无需增设额外硬件,且无需将整个实体中央处理单元(即“双核心”(Dual Core)及“超线程”(Hyper-Threading))设定成禁能状态的情形下,有效解决中央处理单元自我测试失败的问题,并完全使用到所有测试未失败的逻辑中央处理单元,使系统得以发挥其最大的效能。
文档编号G06F9/445GK101089824SQ20061009187
公开日2007年12月19日 申请日期2006年6月13日 优先权日2006年6月13日
发明者卢盈志 申请人:英业达股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1