片上系统、移动终端和用于操作片上系统的方法与流程

文档序号:11690993阅读:200来源:国知局
片上系统、移动终端和用于操作片上系统的方法与流程

示例实施例涉及片上系统(soc)和用于操作片上系统的方法,更具体地,涉及soc和用于在死锁状态(deadlockstate)下保护处理器的处理器状态信息的方法。



背景技术:

应用处理器(ap)用于诸如智能电话、平板计算机、笔记本计算机、导航装置等各种移动装置中。ap可被实现为片上系统(soc),soc是单个电子芯片,在其中复杂电子系统包括各种电路、功能块、存储器、逻辑等。

soc可包括用于控制系统的一个或多个处理器和包括由这一个或多个处理器控制的知识产权(ip)块的各种soc组件。ip块可包括各种电路、逻辑、或它们的组合。电路和逻辑可包括代码或至少一个指令或与代码或至少一个指令关联。ip块可包括主ip块和从ip块。ip块通过能够进行数据传递的事务接口连接在一起。事务正挂起的时间可以是发送请求的soc组件(例如,发送请求的主ip块)和发送响应的另一个soc组件(例如,发送响应的从ip块)之间的时间。

在操作过程期间,soc可落入死锁状态。例如,在解决方案开发过程期间,由于各种原因可导致出现soc内的死锁。死锁可包括soc内的soc组件(例如,soc中的ip块或其他组件)发送请求而不能够接收响应的不可操作状态。例如,当被请求的资源被另一个等待进程保持而这另一个等待进程也正在等待被又一个等待进程保持的另一个资源时,进程或线程会进入等待状态。如果进程永远无法改变其状态,则系统会处于死锁状态。在一些死锁状态下,在ip块发送请求之后处于永久挂起状态的同时,处理器(例如,被配置为执行操作系统(os)的主机处理器)可处于可操作状态。在其他死锁状态下,处理器可处于不可操作状态并且所有soc组件可处于死锁状态。在这些情况中的至少一些情况下,因为soc组件和一个或多个处理器处于死锁状态,所以会更难以分析死锁状态的成因。

在此背景部分中公开的以上信息只是用于增强对发明构思的背景的理解,因此它可能包含不构成对于本领域普通技术人员而言已经知晓的现有技术的信息。



技术实现要素:

一个或多个示例实施例提供soc、包括soc的移动终端和用于操作soc并且提取处理器状态信息以执行调试处理的方法。

另外的方面将在下面的具体实施方式中阐述,并且部分地,将通过本公开而清楚,或者可通过本发明构思的实践而获知。

根据一个或多个示例实施例,一种用于对片上系统(soc)的处理器执行死锁控制的soc包括:soc的处理器,包括多个中央处理器(cpu)核;第一总线,连接到处理器;图形处理单元(gpu),连接到第一总线;存储器控制器,连接到第一总线;第二总线,连接到处理器;隔离单元,包括逻辑电路,逻辑电路被配置为根据隔离信号保持输入至处理器的信号值;以及死锁控制器,连接到第一总线和第二总线。死锁控制器被配置为通过对隔离单元施加隔离信号将死锁状态下的处理器与第一总线隔离,经由第二总线提取死锁状态下被隔离的处理器的状态信息。

根据一个或多个示例实施例,一种用于对片上系统(soc)的处理器执行死锁控制的soc包括:soc的处理器、连接到处理器的主总线、连接到主总线的图形处理单元(gpu)、连接到主总线的存储器控制器、连接到处理器的调试路径总线和连接到调试路径总线的死锁控制器。死锁控制器被配置为检测处理器的死锁状态,复位主总线并且提取死锁状态下的处理器的状态信息。

根据一个或多个示例实施例,一种包括用于对片上系统(soc)的处理器执行死锁控制的soc的移动终端包括:显示器,连接到soc;相机模块;外部存储器,连接到soc的存储器控制器;以及soc。soc包括处理器、连接到处理器的主总线、连接到主总线的图形处理单元(gpu)、连接到主总线的存储器控制器、连接到处理器的调试路径总线和连接到调试路径总线的死锁控制器。死锁控制器被配置为检测处理器的死锁状态,复位主总线,以及提取死锁状态下的处理器的状态信息。

根据一个或多个示例实施例,一种用于控制片上系统(soc)中的处理器的死锁的方法,其中,soc包括处理器、主总线和连接到主总线的存储器控制器,所述方法包括:通过检测器检测处理器的死锁状态,其中,处理器连接到主总线和调试路径总线;将死锁状态下的处理器与主总线隔离;复位主总线;经由处理器中的调试电路和调试路径总线提取死锁状态下的处理器的状态信息;在保留所提取的处理器的状态信息的同时,复位处理器;以及在复位处理器之后,针对处理器的死锁状态执行调试处理。

前面的总体描述和后面的详细描述是示例和解释性的,旨在提供对所要求保护的主题的进一步解释。

附图说明

附图示出了本发明构思的示例实施例,并且与描述一起用来解释本发明构思的原理,其中,包括附图以提供对本发明构思的进一步理解,附图被包含于本说明书并构成本说明书的部分。

图1是根据一个或多个示例实施例的片上系统(soc)的框图。

图2是根据一个或多个示例实施例的死锁控制器的框图。

图3是示出根据一个或多个示例实施例的图1的隔离单元的框图。

图4、图5、图6、图7、图8和图9是根据一个或多个示例实施例的soc的顺序操作流程的框图。

图10是根据一个或多个示例实施例的用于操作soc的处理的流程图。

图11是示出根据一个或多个示例实施例的在cpu复位后的处理器的cpu核状态的示图。

图12是示出根据一个或多个示例实施例的死锁状态下的处理器的cpu核状态的示图。

图13是示出根据一个或多个示例实施例的包括soc的电子装置的示图。

具体实施方式

在下面的描述中,出于解释的目的,阐述众多具体细节以提供对各种示例实施例的透彻理解。然而,清楚的是,可在没有这些具体细节的情况下或者用一个或多个等同布置来实践各种示例实施例。在其他情形下,以框图形式示出公知的结构和装置,以避免不必要地模糊各种示例实施例。

除非另外指明,否则示出的示例实施例将被理解为提供不同细节的示例特征。因此,除非另外指明,否则在不脱离所公开的示例实施例的情况下,特征、组件、模块、单元等,和/或各种示例的其他方面可被另外地组合、分开、互换和/或重排。另外,在附图中,出于清晰和描述的目的,可夸大块、组件、元件等的大小和相对大小。另外,相同的参考标号可表示相同的或相似的元件。

当组件、模块、单元等被称为“在”另一组件、模块、单元等“上”、“连接到”或“结合到”另一组件、模块、单元等时,它可以直接在所述另一组件、模块、单元等上、直接连接到或直接结合到所述另一组件、模块、单元等,或者可存在中间组件、模块、单元等。然而,当组件、模块、单元等被称为“直接在”另一组件、模块、单元等“上”、“直接连接到”或“直接结合到”另一组件、模块、单元等时,不存在中间组件、模块、单元等。出于本公开的目的,可将“x、y和z中的至少一个”以及“从由x、y和z组成的组中选择的至少一个”解释为仅x、仅y、仅z,或者x、y和z中的两个或多个的任意组合,例如,诸如xyz、xyy、yz和zz。相同的标号始终表示相同的元件。如这里使用的,术语“和/或”包括一个或多个相关列出项的任意组合和全部组合。

虽然术语“第一”、“第二”等在这里可用于描述各种元件、组件、模块、单元等,但是这些元件、组件、模块、单元等不受这些术语的限制。这些术语用于将一个元件、组件、模块、单元等与另一元件、组件、模块、单元等区分。因此,在不脱离本公开的教导的情况下,下面讨论的第一元件、第一组件、第一模块、第一单元等可被称为第二元件、第二组件、第二模块、第二单元等。

这里使用的术语是出于描述特定实施例的目的,而不意图限制。如这里使用的,除非上下文另外清楚地指出,否则单数形式也旨在包括复数形式。此外,当在本说明书中使用时,术语“包括”和/或“包含”说明存在所述特征、整体、步骤、操作、元件、组件和/或它们的组,但是不排除存在或添加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组。

除非另有定义,否则这里使用的所有术语(包括技术术语和科学术语)具有与本公开所属领域的普通技术人员通常理解的含义相同的含义。术语(诸如在通用字典中定义的术语)应被解释为具有与它们在相关领域的语境中的含义一致的含义,并且将不以理想化或过于正式的意义来解释,除非这里明确地如此定义。

图1是根据一个或多个示例实施例的片上系统(soc)的框图。

参照图1,soc100可包括处理器110、第一总线130、第二总线135、死锁控制器120、存储器控制器140、图形处理单元(gpu)150、知识产权(ip)块160和内部存储器170。内部存储器170可以是soc100中包括的系统存储器,例如,通过第一总线130连接到处理器110的存储器。ip块160可包括诸如主ip块和从ip块的一个或多个ip块。

处理器110可包括一个或多个中央处理器(cpu),cpu处理从诸如内部存储器170和外部存储器180获取的代码、指令、程序和/或数据。外部存储器180可以是通过连接接口(例如,存储器控制器140和第一总线130)连接到soc100的存储器。soc100可包括各种soc组件,这些soc组件包括ip块160,ip块160被配置为处理诸如一个或多个专用指令集处理器(asip)的指定操作和功能。处理器110可控制soc100的系统。

处理器110可包括一个或多个集群112,这一个或多个集群112中的每个可包括包含第一cpu核112a的多个cpu核。cpu核被配置为处理计算机程序、软件应用等的指令。例如,cpu核可获取指令和/或数据,处理所获取的指令和/或数据,并且将数据存储在cpu核的寄存器中。计算机程序和软件应用可以是存储在soc100中或soc100外部的任何指令集。还,计算机程序和/或软件应用可以是在用户开发环境下开发的软件程序。

如图1中看到的,处理器110包括包含四个cpu核的一个集群112,但示例实施例不限于此。例如,处理器110可包括多个集群。这多个集群可包括异构集群,例如,第一类型集群和第二类型集群。第一类型集群可以是小集群,而第二类型集群可以是大集群,相比于小集群,大集群具有相对高性能的cpu核。第一类型集群中的核的处理速度可比第二类型集群中的核的处理速度更慢。

处理器110还可包括高速缓冲存储器114和调试电路116。根据一个或多个示例实施例,多个集群可连接到单个高速缓冲存储器,但示例实施例不限于此。高速缓冲存储器114可暂时存储频繁使用的数据,从而减少用于从外部存储器180或内部存储器170读取数据的访问时间。高速缓冲存储器114可增强处理器110的处理能力,因为cpu核可比内部存储器170和外部存储器180更快速地访问高速缓冲存储器114。例如,高速缓冲存储器114可包括不同级(诸如,l2或l3高速缓冲)。

调试电路116可基于调试控制信号提供用于调试处理的对cpu核的访问。另外,调试电路116可得到一个或多个集群112的cpu核的状态信息。调试电路116可访问每个cpu核,以获取cpu核的寄存器中的值。

处理器110可顺序地读取内部存储器170或外部存储器180中存储的指令并且根据每个计算周期的指令来执行计算操作。处理器110可基于计算结果来控制soc100中的其他soc组件。

另外,通过第一总线130连接的soc组件(诸如,存储器控制器140、gpu150、ip块160和内部存储器170)可由处理器110控制。以这种方式,第一总线130可以是soc的主总线,如此,第一总线130可在下文中被称为主总线130。通过主总线130连接的soc组件可通过包括主总线130的总线与处理器110或其他soc组件通信。死锁控制器120可通过第二总线135连接到处理器110。死锁控制器120可通过调试电路116获取cpu核的寄存器的值。例如,死锁控制器120可经由第二总线135获取cpu核的寄存器的值。

soc的各种组件可经由一个或多个连接接口(诸如,一个或多个端口接口)连接到主总线130。例如,为此目的,这一个或多个连接接口(例如,连接接口110a、130a)可被配置为将各种组件与主总线130隔离(诸如,将处理器110从经由主总线130传递的信号(例如,复位信号)隔离)。尽管被示出为主总线130的部分,但连接接口130a的“可配置方面”可位于处理器110中,可以是被配置为向主总线130授予组件访问权限的总线控制器(未示出)或总线仲裁器的组件,或者可被设置为它们的组合。还注意到,处理器110的一个或多个集群112可经由主总线130向ip块160中的一个或多个分配事务。第二总线135可以是调试路径总线。如此,第二总线135可在下文中被称为调试路径总线135。调试路径总线135可以是用于调试处理的总线。以这种方式,调试路径总线135可在调试模式下进行操作。例如,处理器110的调试电路116可通过调试路径总线135与死锁控制器120进行通信。注意到,调试路径总线135可独立于主总线130。也就是说,调试路径总线135可以不是主总线130的组件。

存储器控制器140可提供外部存储器180和包括处理器110的其他内部soc组件之间的接口。存储器控制器140可控制外部存储器180。存储器控制器140可控制处理器110和外部存储器180之间的数据交换。例如,响应于主机处理器(例如,处理器110)的请求,存储器控制器140可将数据写入外部存储器180的地址中或者从外部存储器180读取数据。主机处理器可以是对操作系统(os)进行操作的处理器,并且处理110可用作主机处理器。除了处理器110之外,主机可包括主ip块(诸如,gpu150和显示控制器)。一个或多个示例实施例示出通过调试路径总线135获取死锁状态下的处理器110的处理器状态信息;然而,可针对诸如gpu150的其他类型的处理器应用获取处理器状态信息的这种配置。

外部存储器180可以是存储各种数据(诸如,操作系统(os)、程序、应用和/或其他类型的数据)的存储介质。外部存储器180可以是dram,但示例实施例不限于此。例如,外部存储器180可包括易失性存储器和/或非易失性存储器,例如,闪存存储器、相变ram(pram)、磁性ram(mram)、阻性ram(rram)和铁电ram(feram)或甚至硬盘驱动或任何其他合适的信息仓库中的至少一种。

ip块160可以是被配置为执行soc100中的各种功能和操作的soc组件,并且如上所述可被分类为主ip块和从ip块。还设想到,主ip块可用作从ip块,或反之亦然。例如,ip块160可包括直接内存存取(dma)、音频控制器、显示控制器作为主ip块,并且可包括通用异步接收器/发送器(uart)、定时器、内置集成电路(i2c)控制器和串行外围接口(spi)控制器作为从ip块。

内部存储器170可包括只读存储器(rom)和/或随机存取存储器(ram)。rom可存储永久数据和/或程序,并且可包括可擦除可编程rom(eprom)、电可擦除可编程rom(eeprom)等。ram在供电时可以是暂态存储装置。例如,ram可暂时存储程序、数据和指令等。示例可包括动态ram(dram)、静态ram(sram)等。

如之前提到的,处理器110的一个或多个集群112可经由主总线130向ip块160分配事务。当软件程序正在运行时,在soc100中可出现死锁状态。死锁状态可以是包括处理器110和soc中的至少一个组件之间的死锁的处理器死锁。在分配由处理器110的一个或多个集群112产生的事务的过程中,会出现处理器死锁。

例如,soc中的组件可包括主总线130、存储器控制器140、ip块160和内部存储器170中的至少一个。当如上所述在soc100中出现死锁状态时,处理器110和各种其他soc组件可落入死锁状态,从而变得不可操作。在soc的处理器110、主总线130和可能其他组件处于死锁状态的情况下,会难以查明死锁状态的成因。为了解决死锁状态,可对soc100进行复位。然而,注意的是,如果复位soc100,则还将复位(或者改变或修改)处理器110的状态信息。例如,在死锁状态时cpu核中的寄存器的值会丢失。然而,这种信息的丢失会导致调试死锁状态的成因的效率较低。

根据一个或多个示例实施例,死锁控制单元120可被设置成确定soc100的死锁状态并且从cpu核112a中的至少一个获取状态信息。可在复位soc100或soc100的处理器110之前执行这些处理中的一个或多个。将参照图2更详细地描述死锁控制单元120的示例操作。

图2是根据一个或多个示例实施例的死锁控制器的框图。图3是示出根据一个或多个示例实施例的图1的隔离单元的框图。

参照图2,死锁控制器120可包括控制电路121、检测器122、隔离器124、复位器126和信息提取器128。控制电路121、检测器122、隔离器124、复位器126和信息提取器128中的一个或多个可以是被配置为执行这里描述的操作的块单元,并且可被实现为有限状态机(fsm)或处理器。换句话讲,控制电路121可被配置为存储soc100的一个或多个组件的状态(诸如处理器110的一个或多个状态)。组件的状态可响应于触发条件(诸如处理器110的死锁条件)而改变。鉴于死锁控制器120是soc100的组件,因此控制电路121、检测器122、隔离器124、复位器126和信息提取器128可在如上所述的处理器或fsm中实现。

根据一个或多个示例实施例,fsm可包括使fsm能够执行控制电路121、检测器122、隔离器124、复位器126和信息提取器128的操作的程序和时序逻辑电路。如果fsm被实现为时序逻辑电路,则各个块单元(例如,控制电路121、检测器122、隔离器124、复位器126和信息提取器128)可被配置为执行相应操作的单独逻辑电路。另外,逻辑电路可被配置为执行块单元的两个或多个操作。例如,检测器122和复位器126可被实现为逻辑电路,隔离器124和信息提取器128可被实现为单独的逻辑电路。一个或多个块单元(例如,隔离器124和信息提取器128)可被实现为软件程序。

控制电路121可控制检测器122、隔离器124、复位器126和信息提取器128的操作。如上所述,控制电路121可被实现为fsm。另外,死锁控制器120可被实现为处理器,并且以这种方式,可被称为“死锁控制处理器”。为此目的,检测器122、隔离器124、复位器126和信息提取器128可对应于死锁控制处理器的各个操作。

单元块可被实现为硬件、软件、固件或它们的组合。针对软件实现,一个或多个指令或计算机可读代码可被存储在计算机可读存储介质上,以执行单元块的操作。计算机可读存储介质可包括有助于存储和获取数据和程序以执行死锁控制单元120的至少一个操作的介质。

检测器122可检测soc100的死锁状态。例如,检测器122可包括时间计数器(未示出)。时间计数器可响应于初始化信号来初始化计数。可周期性提供(诸如从处理器110周期性地提供)初始化信号。如果检测器122无法在设置于检测器122中的时间计数器(未示出)到期之前接收初始化信号,则时间计数器将到期并且时间计数器的操作可停止。如果时间计数器到期,则指示时间计数器到期的信号可被发送到控制电路121。指示时间计数器到期的信号可以是用于检测soc100的死锁状态的信号。

例如,soc100可在运行软件程序的同时处于死锁状态。以这种方式,包括处理器110的soc100的组件可转变成等待状态(或完全停止操作),从而变成非响应性。以这种方式,向时间计数器提供初始化信号的soc组件在死锁状态下可变得不可操作,如此,将无法向检测器122提供初始化信号。如此,指示时间计数器到期的信号可用作用于检测soc100的死锁状态(诸如,处理器110的死锁状态)的信号。

隔离器124可响应于死锁状态(包括处理器110的死锁状态)的检测将处理器110与主总线130隔离。例如,隔离器124可在死锁状态下隔离处理器110的接口信号。在示例中,隔离器124可包括将处理器110与主总线130隔离的箝位(clamping)配置(例如,布线)。通过使用箝位操作或其他信号保持方案,可固定主总线130上的接口信号,使得主总线130上的复位信号不影响处理器110的接口信号并且cpu核112a的寄存器的值可保持相同。例如,箝位操作或其他信号保持方案可应用于将处理器110连接到主总线130的通信接口130a。

另外,包括处理器(诸如,被专门配置为处理图形处理任务的gpu150)的其他soc组件可被配置为与主总线130隔离,以提取死锁状态下的处理器状态信息。例如,尽管未示出,但可在主总线130和gpu150之间配置与图1的隔离单元190类似的隔离单元。另外,调试路径总线135可连接到gpu150的调试电路(未示出),从而当确定soc100处于死锁状态时,死锁控制器120可提取gpu150的状态信息。

下文中,将根据一个或多个示例实施例描述隔离处理器110和主总线130的方法。图3是示出根据一个或多个示例实施例的图1的隔离单元的框图。

参照图3,可在连接处理器110的连接接口110a和主总线130的连接接口130a之间实现隔离单元190。对于说明性示例,可通过处理器110的连接接口110a和主总线130的连接接口130a来分别实现四个通道ch_1、ch_2、ch_3和ch_4。当隔离单元190的第一逻辑门190a没有接收到具有启用值“1”的隔离信号时,隔离单元190将信号从处理器110的第一通道ch_1转发到主总线130的第一通道ch_1。当隔离单元130的第二逻辑门190b没有接收到具有启用值“1”的隔离信号时,隔离单元190将信号从处理器110的第二通道ch_2转发到主总线130的第二通道ch_2。当隔离单元130的第三逻辑门190c没有接收到具有启用值“1”的隔离信号时,隔离单元190将信号从主总线130的第三通道ch_3转发到处理器110的第三通道ch_3。当隔离单元130的第四逻辑门190d没有接收到具有启用值“1”的隔离信号时,隔离单元190将信号从主总线130的第四通道ch_4转发到处理器110的第四通道ch_4。隔离单元190可被配置为接收具有禁用值“0”的隔离信号或具有启用值“1”的隔离信号。出于处理器110和主总线130之间的隔离的目的,根据不同配置,值“0”可以是启用值,值“1”可以是禁用值。

可通过在处理器110的连接接口110a中配置四个焊盘(pad)110a1、110a2、110a3和110a4并且在主总线130的连接口130a中构造四个焊盘130a1、130a2、130a3和130a4来实现根据隔离信号将处理器110和主总线130互连的四个通道ch_1、ch_2、ch_3和ch_4。

另外,第一通道ch_1和第二通道ch_2是第一方向通道,通过第一方向通道,信号从处理器110的连接接口110a被发送到主总线130的连接接口130a。第三通道ch_3和第四通道ch_4是第二方向通道,通过第二方向通道,信号从主总线130的连接接口130a被发送到处理器110的连接接口110a。

隔离单元190可包括逻辑电路,例如,逻辑门190a、190b、190c和190d。逻辑门190a和190c可以是包括将接收到的隔离信号反相的反相器的与门,逻辑门190b和190d可以是或门。然而,方面不限于此,可存在各种其他逻辑门(诸如,与非门、或非门、异或(xor)门、异或非(enor)门、非门及它们的组合),使得隔离单元190根据隔离信号来执行信号隔离操作。

参照图3,可通过将连接接口110a的第一焊盘110a1的输出连接到与门190a的第一输入并且将与门190a的输出连接到连接接口130a的第一焊盘130a1的输入来形成第一通道ch_1。如上所述,由与门190a的第二输入接收的隔离信号可被反相器反相。可通过将连接接口130a的第三焊盘130a3的输出连接到与门190c的第一输入并且将与门190c的输出连接到连接接口110a的第三焊盘110a3的输入来形成第三通道ch_3。如上所述,由与门190c的第二输入接收的隔离信号可被反相器反相。可通过将连接接口110a的第二焊盘110a2的输出连接到或门190b的第一输入并且将或门190b的输出连接到连接接口130a的第二焊盘130a2的输入来形成第二通道ch_2。或门190b的第二输入可接收隔离信号。可通过将连接接口130a的第四焊盘130a4的输出连接到或门190d的第一输入并且将或门190d的输出连接到连接接口110a的第四焊盘110a4的输入来形成第四通道ch_4。或门190d的第二输入可接收隔离信号。

根据一个或多个示例实施例,可不实现第一通道ch_1和第二通道ch_2中的一个,并且可不实现第三通道ch_3和第四通道ch_4中的一个。因此,可在处理器110和主总线130之间仅配置两个信令通道来交换数据信号。

当与门190a接收到具有禁用值“0”的隔离信号时,与门190a的第二输入将禁用值“0”反相成值“1”。因此,输入至与门190a的第一输入的信号的值被输出到主总线130的第一通道ch_1。类似地,当与门190c接收到具有禁用值“0”的隔离信号时,与门190c的第二输入将禁用值“0”反相成值“1”。因此,输入至与门190c的第一输入的信号的值被输出到处理器110的第三通道ch_3。

当与门190a接收到具有启用值“1”的隔离信号时,与门190a的第二输入将启用值“1”反相成值“0”。因此,不管输入至与门190a的第一输入的信号的值如何,与门都将值“0”输出到主总线130。第一焊盘110a1处的信号值的改变不影响第一焊盘130a1的输入值。因此,第一焊盘130a1处的信号被保留(信号保持)或固定。这种状况可被称为处理器110的第一通道ch_1和主总线130的第一通道ch_1之间的隔离。类似地,当与门190c接收到具有启用值“1”的隔离信号时,与门190a的第二输入将启用值“1”反相成值“0”。因此,不管输入至与门190c的第一输入的信号的值如何,与门都将值“0”输出到处理器110。第三焊盘130a3处的信号值的改变不影响第三焊盘110a3的输入值。因此,第三焊盘110a3处的信号被保留(信号保持)或固定。这种状况可被称为处理器110的第三通道ch_3和主总线130的第三通道ch_3之间的隔离。

当或门190b接收到具有禁用值“0”的隔离信号时,输入至或门190b的第一输入的信号的值被输出到主总线130的第二通道ch_2。当或门190d接收到具有禁用值“0”的隔离信号时,输入至或门190d的第一输入的信号的值被输出到处理器110的第四通道ch_4。

当或门190b接收到具有启用值“1”的隔离信号时,不管输入至或门190b的第一输入的信号的值如何,或门190b都将值“1”输出到主总线130的第二通道ch_2。第二焊盘110a2处的信号值的改变不影响第二焊盘130a2的输入值。因此,第二焊盘130a2处的信号被保留(信号保持)或固定。这种状况可被称为处理器110的第二通道ch_2和主总线130的第二通道ch_2之间的隔离。类似地,当或门190d接收到具有启用值“1”的隔离信号时,不管输入至或门190d的第一输入的信号的值如何,或门190d都将值“1”输出到处理器110的第四通道ch_4。第四焊盘130a4处的信号值的改变不影响第四焊盘110a4的输入值。因此,第四焊盘110a4处的信号被保留(信号保持)或固定。这种状况可被称为处理器110的第四通道ch_4和主总线130的第四通道ch_3之间的隔离。

根据一个或多个示例实施例,只有从主总线130输出到处理器110的信号可被隔离。更具体地讲,第一通道ch_1和第二通道ch_2都可不具有隔离配置。当主总线和除了处理器110外的soc组件的复位是意在保护处理器110的状态信息时,可通过提供隔离信号来仅隔离第二方向通道ch_3和ch_4。

参照图1和图2,根据一个或多个示例实施例,通过隔离器124隔离处理器110使得在不复位处理器110的情况下能够复位其他soc组件(包括例如主总线130和ip块160)。以这种方式,即便总线130被复位,也可保留处理器110的状态。如之前提到的,当处理器110没有与主总线130隔离时,复位主总线130导致处理器110的状态信息发生改变。如此,在没有隔离的情况下,通过复位其他soc组件,处理器110的集群112和接口信号被浮置,并且复位操作不可使soc组件稳定。例如,如果在没有复位处理器110的情况下复位主总线130,则当复位主总线130时或者在复位主总线130之后,处理器110的状态可改变。

为了保持处理器110的状态,隔离区124可将处理器110与主总线130隔离。隔离器124可保持或固定处理器110上的接口信号,以免事务状态因复位而改变。例如,处理器110上的接口信号的状态被保持为死锁状态下的状态,并且因为处理器110上的接口信号保持相同,所以处理器110的状态不因主总线130上的复位序列(或信号)而改变。例如,功率控制中使用的箝位或信号保持方案可实现如图3所示的这个隔离处理。

如果另一内部存储器(未示出)连接到死锁控制器120,则死锁控制器120可在不复位主总线130和其他soc组件(诸如,ip块160)的情况下,提取死锁状态下的cpu核中的至少一个(例如,cpu核112a)的状态信息。死锁控制器120可检测处理器110的死锁状态并且可提取死锁状态下cpu核的状态信息,并且将所提取的状态信息存储在连接到死锁控制器120的内部存储器中。然而,这种配置需要为死锁状态而预留的另一内部存储器。

复位器126可在处理器110和主总线130之间的隔离处理之后复位(除了处理器110外的)soc组件。复位器126可与检测器122的操作关联地实现。如果检测器122的时间计数器到期,则复位器126可被配置为复位soc100的所有组件(包括处理器110)。然而,根据一个或多个示例实施例,如果例如调试控制位被设置成启用位(例如,“1”),则复位器126可在不复位处理器110的情况下复位包括主总线130的soc组件,可设想到,可与这里描述的示例实施例关联地利用任何其他合适的触发机制。根据一个或多个示例实施例,控制电路121可设置调试控制位并且将调试控制位存储在死锁控制器120的内部存储器中。对于调试控制位,如果调试控制位被设置成启用位,则隔离器124可将处理器110与主总线130隔离,并且复位器126可在不复位处理器110的情况下复位包括主总线130的soc组件。如果调试控制位被设置成禁用位(例如,“0”),则可不将处理器110与主总线130隔离并且可复位包括处理器110的soc组件。

信息提取器128可通过调试电路116和作为调试路径总线的第二总线135提取处理器110的一个或多个集群112中的cpu核中的至少一个的状态信息。可在不复位处理器110的情况下,在复位soc组件之后提取状态信息。如果一些cpu核处于死锁状态而其他cpu核处于与死锁状态不同的状态(例如,不处于死锁状态),则信息提取器128可提取死锁状态下的cpu核的状态信息。为此目的,信息提取器128可忽略处于与死锁状态不同的状态下的cpu核的状态信息。

死锁状态下cpu核的状态信息可提供有助于分析死锁状态的成因的信息。以这种方式,死锁状态下的cpu核的状态信息可用于确定死锁状态的成因、重构死锁的状态和/或解决死锁状态的问题。所提取的死锁状态下的cpu核的状态信息可包括存储在死锁状态下的cpu核的寄存器中的信息。寄存器可包括通用寄存器(gpr)、专用寄存器(spr)、浮点寄存器(fpr)等。spr可包括程序计数器(pc)、堆栈指针(sp)、状态寄存器、信息等。gpr可存储数据和地址。例如,与算术运算和计算关联的值可被存储在gpr中。pc可存储如果不是死锁状态的话将会执行的下一指令的存储器地址。sp可将最近的程序请求的地址存储在堆栈中,堆栈是从上到下存储数据的专用缓冲器。

图4至图9是根据一个或多个示例实施例的soc操作的顺序操作流程的框图。图10是根据一个或多个示例实施例的用于操作soc的处理的流程图。以这种方式,将参照图1至图10描述操作soc的示例处理。

参照图4和图10,在操作s100,如果soc100中出现死锁状态,则死锁控制器120可通过检测器122检测死锁状态。在示例情况下,在soc100中运行专用软件程序或编程逻辑的同时,处理器110的cpu核中的至少一个可被死锁,从而当发送由处理器110产生的事务时不能与一个或多个其他soc组件通信。如果处理器110无法接收响应,则可将该事务永久挂起。这样会使处理器110和soc100的一个或多个其他soc组件停止。

根据一个或多个示例实施例,只要死锁状态不影响调试逻辑(例如,调试电路116和连接到调试电路116的调试路径总线135),则即使处理器110和其他soc组件处于死锁状态(见图3),死锁控制器120仍可保持操作。

检测器122可包括能由初始化信号进行周期地初始化的时间计数器。如果检测器122在一定时间段内没有接收到初始化信号,则时间计数器将不被初始化,并且时间计数器将根据到期设置而到期。如果时间计数器到期,则检测器122可将时间计数器到期信号发送到控制器121。时间计数器到期信号可对应于soc100被死锁的信号。

一旦检测到soc100的死锁状态,在操作s110,可用作运行操作系统的cpu的处理器110就与主总线130隔离(如图5所示)。例如,响应于用于检测soc100的死锁状态的信号,死锁控制器120的控制器121可触发隔离器124,以将隔离信号发送到连接在处理器110和主总线130之间的用于在死锁状态下隔离处理器110的接口信号的隔离单元190。隔离处理可包括保持连接到处理器110的主总线130的接口信号的状态或者固定接口信号,使得事务的状态不改变。另外,即使将复位序列施加到主总线130上用于复位主总线130和soc100的其他组件,隔离处理也可保持处理器110的状态。

尽管图5示出处理器110和主总线130之间的隔离,但死锁控制器120可执行处理器110和调试路径总线135之间的隔离处理。然而,在复位主总线130和其他soc组件(诸如,内部存储器170和ip块160)之后,可去除处理器110和调试路径总线135之间的隔离,以启用调试路径。

在将处理器110与主总线130隔离之后,在操作s120,如图6和图10所示复位除了处理器110以外的soc组件。参照图6,死锁控制器120的控制器121可操作复位器126来复位除了处理器110以外的soc组件。即使当处理器110和soc组件的部分处于死锁状态时,也会难以识别哪个soc组件处于死锁状态,因为处理器110也处于死锁状态。因此,如果检测到死锁状态,则可复位所有的soc组件(除了处理器110以外)。也就是说,因为可通过复位连接到处理器110的主总线130来改变处理器110的状态,所以在执行图6所示的复位处理之前,将处理器110与主总线130隔离。

参照图7和图10,在复位soc组件(除了处理器110以外)之后,在操作s130,死锁控制器120可经由调试路径总线135和调试电路116提取处理器110的至少一个cpu核的状态信息。调试路径总线135可独立于主总线130,并且可不受主总线130的状态(例如,施加到主总线130上的复位信号)的影响。如果在操作s110已经将调试路径总线135与处理器110隔离,则调试路径总线135将被恢复成将处理器110连接到死锁控制单元120。如图6中所示,死锁控制器120的控制电路121可操作信息提取器128,以通过处理器110中的调试电路116和调试路径总线135提取死锁状态下的一个或多个cpu核的状态信息。

在提取状态信息的处理期间,可如图7所示保持处理器110和主总线130之间的隔离。所提取的至少一个cpu核的状态信息可以是存储在该cpu核的寄存器中的数据。例如,程序计数器、通用寄存器、链路寄存器、堆栈指针、状态寄存器和其他寄存器的值可被包括在所提取的状态信息中。另外,还可提取高速缓冲行信息。另外,可将所提取的至少一个cpu核的状态信息存储在已经根据死锁控制器120的控制被复位的存储器(例如,内部存储器170)中。如参照图7所见,可通过存储器控制器140将所提取的状态信息存储在内部存储器170中或外部存储器180中。

参照图8和图10,在提取死锁状态下的处理器110的至少一个cpu核的状态信息并且将所提取的状态信息存储在存储器中之后,可在操作s140复位处理器110。以这种方式,可再次复位其他soc组件;然而,不复位存储在存储器中的所提取的状态信息。例如,当与操作s140关联地复位soc组件时,可执行一定处理来保持存储在存储器中的状态信息。如果存储器是dram,则可在复位soc之后执行自刷新处理来保持存储的状态信息。

参照图9和图10,在操作s150,死锁控制单元120可在执行操作s140的系统复位处理之后执行调试处理来调试死锁状态。控制电路121可获取死锁状态下的至少一个cpu核的状态信息,并且通过存储器控制器140将它存储在存储器(例如,内部存储器170或外部存储器180)中。

可由可通过例如联合测试行动小组(jtag)接口(未示出)连接到soc100的外部调试器来执行调试处理。然而,根据一个或多个示例实施例,死锁控制器120可启动soc100内的自调试处理。例如,如图9中所示,死锁控制器120的控制器121可获取存储在存储器(例如,内部存储器170)中的状态信息,并且通过分析获取的状态信息来执行调试处理。可通过除了控制电路121外的调试单元来执行自调试处理。例如,处理器110的至少一个cpu核(在被复位之后)可在从存储器(例如,内部存储器170)获取状态信息之后执行调试。

现在,将更详细地描述soc100中执行的自调试处理的示例。如果所提取的至少一个cpu核的状态信息被存储在已经被复位的存储器中(见图7),则可复位整个soc(见图8),并且可重启处理器110(见图9)。处理器110的重启可以不是普通的重启,而是用于执行软件顺序以报告处理器110的前一死锁状态信息的重启处理。例如,死锁控制器120的控制电路121可基于存储在存储器170中的处理器110的状态信息和来自处理器110的报告来分析死锁状态的成因。控制电路121还可执行调试处理,以重构处理器110的死锁的状态。

所存储的至少一个cpu核的状态信息可以是所述至少一个cpu核处于死锁状态时(或者与死锁状态关联)的程序计数器、堆栈指针、通用寄存器等的值。使用程序计数器的值,可得到在死锁之前由相应cpu核所执行的程序代码的地址。另外,使用通用寄存器和堆栈指针的值,可提取并且分析调用堆栈,以确定程序代码是如何被执行的。例如,利用程序计数器的值,可识别是特定功能的特定指令造成死锁。可通过通用寄存器的值来识别相应的地址。另外,利用堆栈指针的值,可识别通向相应的函数和数据的调用路径。

图11是示出根据一个或多个示例实施例的在cpu复位后处理器的cpu核状态的示图。

如图11中所示,cpu核1000可从死锁状态被复位。如果cpu核1000被复位,则一些寄存器的值和cpu数据被从处于死锁状态的寄存器的值和cpu数据改变、破坏、或去除。尽管cpu核1000的寄存器的一些值(例如,程序计数器1020的值和一些通用寄存器(gpr)1040的值)可以是能恢复的,但是一些寄存器的其他值和cpu数据可能不是能恢复的。例如,通过cpu核1000的复位,堆栈指针(sp)1010的值和其他cpu数据1030的值会丢失并且不能恢复。另外,一些gpr1050的值可能是不能恢复的。gpr1040之中的一些gpr可用于存储能恢复的寄存器的操作,而因为存储了能恢复的寄存器的操作,因此通过cpu核1000的复位,死锁状态下的这些gpr的状态信息会不能恢复。在诸如外部调试装置的应用的硬件(hw)支持下,程序计数器(pc)1020的值可以是能恢复的;然而,在一些情形下,pc的值也可能是不能恢复的。sp1010、其他cpu数据1030和gpr1050的值被称为不能恢复的cpu数据。

图12是示出根据一个或多个示例实施例的死锁状态下的处理器的cpu核状态的示图。

参照图12,cpu核1100处于死锁状态并且保持处于死锁状态的寄存器的值和其他数据。如上所述,在复位cpu核1100之后,堆栈指针(sp)1110、程序计数器(pc)1120、通用寄存器(gpr)1140、1150和其他cpu数据1130的值可以是能恢复的,因为在复位cpu核1100之前提取了这些值并且将这些值存储在指定存储器(例如,图1的内部存储器170或外部存储器180)中。例如,基于存储在指定存储器中用于调试处理的相应值,寄存器1150的值和其他cpu数据1130(诸如,与安全、权限等相关的寄存器值和其他cpu数据值)可以是能恢复的。在cpu核1100的复位后,sp1110、其他cpu数据1130和gpr1150的值是不能恢复的。由于这些cpu数据的保存在调试处理中是有价值的,因此可由死锁控制器(例如,图1中示出的死锁控制器120)提取这些cpu数据并且在复位处理之后将这些cpu数据存储在存储器(例如,内部存储器170或外部存储器180)中以待恢复。

图13是示出根据一个或多个示例实施例的电子装置的示图。

参照图13,soc100可用于实施各种电子装置(诸如,电子装置1210、1220和1230、个人计算机(pc)、移动电子装置、数据服务器等)。移动电子装置可被实施为膝上型计算机、移动电话、平板pc、个人数字助理(pda)、数字摄像机、便携式多媒体播放器(pmp)、个人导航装置或便携式导航装置(pnd)、手持游戏控制台、移动互联网装置(mid)、电子书阅读器装置等。

电子装置200(例如,电子装置1210、1220或1230)可包括soc100、电源210、存储器220、外部存储器180、输入/输出端口240、网络装置260和显示器270。还设想到,电子装置200还可包括相机模块280。

soc100可以是图1中示出的soc100,并且可被实现为应用处理器(ap)。soc100可包括包含运行操作系统的cpu的一个或多个处理器。这一个或多个处理器可控制元件210、220、180、240、250、260、270和280。电源210可向soc100和元件210、220、180、240、250、260、270和280中的至少一个供电。

存储器220可以是硬盘驱动器或固态驱动器。存储器180可存储用于控制soc100的程序代码。存储器180可以是能存储数据的非易失性存储器或易失性存储器。例如,非易失性存储器可包括闪存存储器、嵌入式多媒体卡(emmc)和通用闪存存储器(ufs)。易失性存储器可包括dram。

输入/输出端口240可以是用于连接指示装置(诸如,计算机鼠标或触摸板)的端口、用于连接输出装置(诸如,显示器270或打印机)的端口、用于连接输入装置(诸如,键区或键盘)的端口、用于连接usb闪存驱动器的端口等。

可在安全数字(sd)卡、多媒体卡(mmc)或emmc中实施扩展卡250。扩展卡250可以是用户识别模块(sim)卡或全球用户识别模块(usim)卡。网络装置260可以是用于将电子装置连接到有线网络或无线网络以在外部和电子装置之间进行通信的装置。

显示器270可被配置为显示从存储器装置220、外部存储器180、输入/输出端口240、扩展卡250和/或网络装置260输出的数据。相机模块280可以是被配置为将光学图像变成电子图像的模块。以这种方式,从相机模块280输出的电子图像可被存储在存储器装置220、外部存储器180和/或扩展卡250中。另外,可通过显示器270显示从相机模块280输出的电子图像。

尽管已经在这里描述了一些示例实施例和实现方式,但通过本描述,其他实施例和修改形式将是清楚的。因此,本发明构思不限于这些实施例,而是限于所提出的权利要求和各种显而易见的修改形式和等同布置的更广范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1