一种片上系统芯片及相应的监控方法

文档序号:6491054阅读:307来源:国知局
一种片上系统芯片及相应的监控方法
【专利摘要】本发明涉及一种片上系统芯片,其包括主设备、从设备、高速总线和监控装置。其中,所述主设备连接所述高速总线的第一端口,所述从设备连接所述高速总线的第二端口,从而使所述主设备具有访问所述从设备的能力。所述监控装置设置在所述高速总线的所述第一端口与所述主设备之间、和/或所述高速总线的所述第二端口与所述从设备之间,用于基于高速总线通讯协议以记录通过所述第一端口和/或所述第二端口的各个命令的状态信息。且当出现有一个命令的状态信息表示所述命令的操作处于超时状态时,则上报中断以定位所述高速总线出现问题的节点。
【专利说明】一种片上系统芯片及相应的监控方法
【技术领域】
[0001]本发明涉及芯片技术,特别是关于一种片上系统芯片(System On Chip, S0C)及相应的监控方法。
【背景技术】
[0002]随着芯片集成化趋势的发展,越来越多的芯片需要采用内部高速总线(BUS)来交互数据。随着多核化趋势发展以及芯片集成越来越多的功能,芯片内部的高速总线的复杂度也越来越高。而复杂的总线出现问题的概率也越来越高,对于其调试和定位一直是困扰芯片前端设计、EDA/FPGA/Emulator验证以及芯片软件开发、调试的主要问题。
[0003]目前,芯片内的高速总线协议一般都是基于多通道处理。例如,ARM (AdvancedRISC Machines)公司的 AXI (Advanced Extensible Interface)总线具有 5 个通道,其分为读命令通道(AR)、写命令通道(AW)、写数据通道(W)、读数据返回通道(R)、和写响应返回通道⑶。
[0004]图1为现有技术中利用高速总线(BUS)连接主设备(Master)和从设备(Slave)的示意图。如图1所示,主设备11和从设备12之间的高速总线13具有5个通道,即读命令通道(Read Address Channel) 14、读数据返回通道(Read Data Channel) 15、写命令通道(Write Address Channel) 16、写数据通道(Write Data Channel) 17、和写响应返回通道(Write Resp Channel) 18。其中,主设备11定义为命令和写数据的主动发起方和响应返回的接收方,而从设备12定义为命令的接收方和读数据以及响应的发起方。一般地,处理器作为主设备11,其具有主端口而与高速总线13的主端口连接配合,以主动读取数据;而存储器(memory)作为从设备12,其具有从端口而与高速总线13的从端口连接配合,以供主设备11来读取数据并返回响应。
[0005]图2为图1所示的高速总线中每个通道的时序图。如图2所示,每个通道都采用全握手机制,即当ready脉冲没有到来的时候,vaild脉冲就不会撤销,其也不能发出下一个命令。
[0006]图3为现有的片上系统芯片S0C(System On Chip)的示意图。如图3所示,片上系统芯片30包括多个主设备(master) 31、多个从设备(slave) 32、甚至多个高速总线(Bus) 33ο其中,图3中的表不输出方向的箭头方向表不主设备31的命令输出,而表不输入方向的箭头方向表示从设备32接收命令。每一根箭头方向都对应高速总线的5个通道。如果高速总线的任意节点,例如任意主设备,从设备或者总线的端口中任意一个或者多个通道出现问题,由于高速总线33互联将所有的主设备31和所有从设备32连接在一起,因此所有的主设备31都可以访问所有的从设备32,如果任意节点出现问题,则其会导致出现问题的节点扩展开。也就是说,只要有操作经过出现问题的节点,则该操作就无法完成。因此,只要一个节点出现问题,其就可能影响到整个系统,使整个片上系统芯片出现死锁状态。
[0007]当出现死锁状态时,则所有的任务都停止执行。而随着片上系统芯片的规模越来越大,总线互联越来越复杂的情况下,上述问题更加突出。此外,高速总线一般都可以一次性发出多个未完成的命令,而且支持命令乱序返回,因此其也进一步增加了定位出现问题的节点的难度。
[0008]目前业界已经开发出高速总线监控技术以解决上述问题。目前已知的总线监控技术其主要原理在于选择记录高速总线节点的所有行为,然后通过组包、压缩后形成数据流,送入片上系统芯片内部的缓存中进行存储,或者通过片上系统芯片的端口送到片外的存储模块以进行存储。该功能业界一般称为追踪(Trace)方法,类似于示波器做信号采样存储,然后事后恢复出来以供调试人员分析。
[0009]业界大的芯片公司,一般都采用自行开发总线调试的系统,包括工具链等。但是随着ARM芯片公司的产品的使用越来越广泛,ARM芯片公司定义的Coresight调试组件和系统中逐渐被很多公司使用。ARM芯片公司最近也开发出了对于其最高速的AXI高速总线的调试组件。
[0010]图4为现有技术中采用ARM芯片公司的总线调试技术的片上系统芯片的示意图。如图4所示,片上系统芯片40包括ARM处理器核心(ARM core) 41、存储器内容直接搬移模块(Direct Memory Access, DMA)42、数字信号处理器核心(DSP core)43、双通道同步动态随机存储控制器(DDR controller) 44、内部静态随机存储器(Internal SRAM) 45、和其他外围设备(Other Peripheral) 46。
[0011]其中,ARM处理器核心41、存储器内容直接搬移模块42、数字信号处理器核心43作为主设备(Master),而双通道同步静态随机存储控制器44、内部静态随机存储器45和其他的外围设备46作为从设备(slave)。主设备和从设备之间通过AXI高速总线47而连接。此外,AXI高速总线47与主设备和从设备进行连接的端口可以设置总线追踪(BusTrace)装置48,以记录经过该端口的各个命令。其中,总线追踪装置48可以根据实际需要设置在AXI高速总线47的一些端口上,以与主设备或者从设备连接。在此处,与ARM处理器核心41、存储器内容直接搬移模块42、数字信号处理器核心43、双通道同步静态随机存储控制器44、内部静态随机存储器45连接的AXI高速总线47的端口处设置了总线追踪装置48。
[0012]在片上系统芯片工作过程中,总线追踪装置48作为调试组件,其记录通过AXI高速总线47的对应端口的命令发出、返回响应等等事件,并将事件内容组成一个格式的帧,并且合并入每个总线追踪装置48分配的唯一的ID以作为标识。然后,记录的内容通过调试总线49输出。其中调试总线49可以是ARM公司定义的ATB调试总线,其独立于AXI高速总线47。然后通过ATB调试总线49,AXI高速总线47的各个端口的相关信息最后被存储在片上系统芯片40中的缓冲器(buffer)中,或者存储到片外的DDR存储器中,或者通过高速端口(High Speed 1/0)输出至片外。
[0013]测试人员可以通过ARM所提供的工具链,读取片上系统芯片中的缓冲器或者片外的DDR存储器,以读取其存储的内容,通过解析各个总线追踪装置48的ID以及帧格式,从而在还原对应的总线追踪装置48在一段时间内所记录的AXI总线47的对应端口的相关信
肩、O
[0014]上述ARM公司的总线调试技术,在原理上不能支持定时定位问题,而是属于事后的被动系统。在片上系统芯片运行中出现其他问题后,测试人员可以通过查看总线追踪装置48所导出的历史记录,在事后进行分析,从而定位出哪里出现了问题,其分析定位的工作量和要求都比较高。[0015]此外,由于总线追踪装置48所对应的存放空间有限,因此,使用上述调试技术一般要求能够找出出现问题附近时间点的一个或者多个触发条件来触发追踪开始或者停止,或者找到过滤条件,使总线追踪装置48只记录特殊条件满足情况下的总线行为。而触发条件或者过滤条件的寻找需要手工分析并进行设定,如果设定不对,则可能就不会记录到问题时间点附近的行为,那么就需要反复复现问题场景,因此其调试效率较低。
[0016]现有的基于追踪的总线监控技术,从原理上也不支持异常恢复,其只是对出现的问题进行记录,然后再后续供调试人员进行事后分析。
[0017]另,上述总线调试技术是采用实时将行为事件导出并进行存储,由于总线的操作一般都是比较快速的,因此在一段时间内,其事件会比较多。如果要在一段时间内记录足够的信息,保证不丢失,其会对存储空间和总线性能有一定的要求和代价。
[0018]如果事件内容是存储在片上系统芯片内,则片上系统芯片内的缓冲器需要有足够大的空间,则其将对应地增加功耗成本。
[0019]如果事件内容是存储在片外的DDR存储器内,则其需要占用DDR存储器的端口流量,而总线事件比较密集的时候一般也会是总线对DDR存储器访问比较密集的时候,其可能对DDR存储器带宽要求一般会同步增加变化,因此其对于系统性能有较大的影响。
[0020]如果事件内容是通过高速端口导出到片外,则对于PAD选型以及印刷电路板PCB设计具有较高的要求,同时片外的硬件需要向ARM公司进行购买,成本比较高。
[0021]此外,上述ARM公司的总线调试技术需要使用ARM公司的工具链支持,不能支持自行定位新的追踪内容,灵活性较差。
[0022]目前,业界还流行TI (Texas Instruments,德州仪器)公司开发的总线调试技术,其总线追踪技术与ARM公司的基本类似,其不同仅在于,TI公司的总线调试技术中,输入的事件是可来自于TI公司的VBUSM高速总线,而并不是ARM公司的AXI高速总线,而将总线追踪装置的记录内容导出到缓冲器的总线是采用TI公司自有的VBUSP测试总线,而并不是ARM公司的ATB测试总线。此外,TI公司的总线调试技术只支持将总线追踪装置输出的内容导入到片上系统芯片内部的缓冲器,其并不支持将总线追踪装置输出的内容导入到片外的DDR存储器或者利用高速端口导出片外。
[0023]TI公司的总线调试技术具有和ARM公司的总线调试技术相同的缺陷,且由于其并不支持将总线追踪装置输出的内容导入到片外的DDR存储器或者利用高速端口导出片外,因此其对于片内功耗成本的影响要更高于ARM公司的总线调试技术。
[0024]因此,如何快速定位到高速总线出现问题的节点并进行修复,是目前亟待解决的问题之一。

【发明内容】

[0025]因此,本发明提供一种片上系统芯片及相应的监控方法,以在出现异常时主动上报、快速定位出现异常的节点并复位出现异常的节点。
[0026]具体地,本发明实施例提供一种片上系统芯片,其包括主设备、从设备、高速总线和监控装置。其中,所述主设备连接所述高速总线的第一端口,而所述从设备连接所述高速总线的第二端口,从而使所述主设备具有访问所述从设备的能力。所述监控装置设置在所述高速总线的所述第一端口与所述主设备之间、和/或所述高速总线的所述第二端口与所述从设备之间,用于基于高速总线通讯协议以记录通过所述第一端口和/或所述第二端口的各个命令的状态信息。且当出现有一个命令的状态信息表示所述命令的操作处于超时状态时,则上报中断以定位所述高速总线出现问题的节点。
[0027]本发明实施例另提供一种应用于片上系统芯片的监控方法,其中,所述片上系统芯片包括主设备、从设备、高速总线、及监控装置,所述主设备连接所述高速总线的第一端口,所述从设备连接所述高速总线的第二端口从而使所述主设备具有访问所述从设备的能力,而所述监控装置设置在所述高速总线的所述第一端口与所述主设备之间、和/或所述高速总线的所述第二端口与所述从设备之间。其中,所述监控方法包括:利用所述监控装置基于高速总线通讯协议而记录通过所述第一端口和/或所述第二端口的各个命令的状态信息;当出现有一个命令的状态信息表示所述命令的操作处于超时状态时,所述监控装置上报中断以定位所述高速总线出现问题的节点。
[0028]本发明上述各个实施例可达成如下有益效果:通过在高速总线的端口处设置的监控装置来记录各个命令的状态,并在命令超时时上报中断,从而能够非常快速地在复杂的总线互联系统中定位出出现问题的节点在哪里,并通过分析监控装置所提供的各个命令的状态找到出现问题的原因是由命令的发起方还是接收方异常而引起,并根据命令的状态找出出现的问题是在哪个阶段。本发明是主动上报异常,而现有技术是在后期通过被动式的解析和分析出现异常的节点,因此本发明极大地提高了定位效率、不需要重现场景,也不需要将所有的数据导出进行分析,其极大地减少了工作量。
[0029]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其他目的、特征和优点能够更明显易懂,以下特举较佳实施例,并配合附图,详细说明如下。
【专利附图】

【附图说明】
[0030]图1为现有技术中利用高速总线连接主设备和从设备的示意图;
[0031]图2为图1所示的高速总线中每个通道的时序图;
[0032]图3为现有的片上系统芯片SOC(System On Chip)的示意图;
[0033]图4为现有技术中采用ARM芯片公司的总线调试技术的片上系统芯片的示意图;
[0034]图5为本发明实施例的片上系统芯片的示意图;
[0035]图6为图5所示的监控装置的示意图;
[0036]图7为图6所示的监控装置分配同一身份序号ID的不同命令给不同缓冲器的操作示意图;
[0037]图8为图6所示的监控装置中任一个缓冲器的示意图;
[0038]图9为缓冲器记录的读命令的命令状态的示意图;
[0039]图10为缓冲器记录的写命令的命令状态的示意图;
[0040]图11为当监控装置所对应的模块为命令的接受方时,监控装置进行异常复位方法的流程示意图;
[0041]图12为当监控装置所对应的模块为命令的发起方时,监控装置进行异常复位方法的流程示意图;
[0042]图13为本发明实施例的对发生异常的节点进行复位的示意图;[0043]图14为本发明实施例的监控装置与总线追踪装置结合应用的示意图。
【具体实施方式】
[0044]为更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的片上系统芯片其【具体实施方式】、方法、步骤及功效,详细说明如后。
[0045]有关本发明的前述及其他技术内容、特点及功效,在以下配合参考图式的较佳实施例详细说明中将可清楚的呈现。通过【具体实施方式】的说明,当可对本发明为达成预定目的所采取的技术手段及功效得以更加深入且具体的了解,然而所附图式仅是提供参考与说明之用,并非用来对本发明加以限制。
[0046]图5为本发明实施例的片上系统芯片的示意图。如图5所示,本发明的片上系统芯片100包括主设备110、从设备120、高速总线130、和监控装置140,主设备110连接高速总线130的第一端口,第一端口即主设备110接入高速总线130的端口,从设备120连接高速总线130的第二端口,第二端口即从设备120接入高速总线130的端口,从而使主设备110具有访问从设备120的能力。在本实施例中,具体以三个高速总线(BUS0、BUS1和BUS2)相互连接为例来介绍本发明,需要说明的是,本领域技术人员应当知道,在芯片采用内部高速总线交互数据时,通常包括至少一个主设备110、至少一个从设备120、至少一个高速总线130、和至少一个监控装置140,因此,图5作为一种【具体实施方式】,不用于限制本发明。在图5中,每个高速总线130均连接两个主设备110和两个从设备120。主设备110是连接在高速总线130的第一端口上(例如每个总线130的m0或者ml端口),而从设备120是连接在高速总线130的第二端口上(例如每个总线130的sO或者Si端口)。此外,高速总线130之间还通过其他的第一端口与第二端口进行相互连接以在不同的高速总线130之间进行数据传输,例如高速总线BUSO的通过第一端口 m2与高速总线BUS2的第二端口 s4进行连接,从而将BUS2的数据传输给BUS0,这里可以将BUS2视作BUSO的主设备,而高速总线BUSO的第二端口 s2与高速总线BUS2的第一端口 m4连接,从而实现高速总线BUSO与高速总线BUS2的相互连接;类似地,高速总线BUSl与高速总线BUS2也通过相同的方式进行连接,从而实现三个高速总线130的相互连接,因此,其中任意一个主设备110都可以通过互联的三个高速总线130实现对任意一个从设备120的访问。
[0047]在高速总线130的第一端口和/或第二端口处设置监控装置140,以记录通过第一端口和/或第二端口的各个命令的状态信息,且当出现有一个命令的状态信息表示该命令的操作处于超时状态时,则上报中断以快速定位高速总线130上出现问题的节点,本领域技术人员应当知道,这里的节点就是指连接在高速总线130上的主设备110或者从设备120,根据出现问题的节点信息,可以定位具体是主设备110还是从设备120出的问题。此夕卜,监控装置140在上报中断快速定位高速总线130出现问题的节点后,该节点处的监控装置140可以代替对应的主设备110或从设备120以虚拟方式完成处于超时状态的命令,并对对应的主设备110或者从设备120执行复位操作。也就是说,在本发明中,监控装置140可以监控是否有异常状况发生,追踪异常发生地,以及进行复位操作(Debug RecoveryTrace, DRT)。
[0048]本发明可以在每个高速总线130的每个端口处均设置一个监控装置140,以分别记录通过每个端口的各个命令的状态信息。当然,其也可以根据实际需要只在高速总线130的某些端口处设置监控装置140。本领域技术人员可以理解的是,由于异常一般只经常发生在主设备110和从设备120上,而各个高速总线130本身一般是不会发生异常,因此可只在高速总线130的与主设备110或者从设备120连接的端口处设置监控装置140。在本发明实施例中,高速总线BUSO的两个与主设备相连的第一端口 m0和ml处分别设置了监控装置140,高速总线BUSl的两个与主设备相连的第一端口 m0和ml以及两个与从设备相连的第二端口 sO和Si处分别设置了监控装置140,而高速总线BUS2的两个与主设备相连的第一端口 m0和ml以及两个与从设备相连的第二端口 sO和si处分别设置了监控装置140,以分别记录对应的主设备110和从设备发送/接收的各个命令的状态。
[0049]基于高速总线通讯协议,高速总线130基本上都支持命令和数据分离,因此在数据并没有传输完成前(即读或者写操作),命令是可以提前发出。而基于系统的可实现性,高速总线130的各个端口能够提前发出的命令个数是有一定限度的,这个限度一般可以称为最大的未完结命令(outstanding)的数目。例如最大的未完结命令的数目为4,则其表示可以在读/写操作没有完成的情况下,能够支持发出四个命令,而第五个命令必须等待第一个命令所对应的数据读或者写操作完成后才能发出。
[0050]基于高速总线130的各个端口支持的最大的未完结命令的数目的限制,对应的监控装置140中需要设置数量匹配最大的未完结命令数目的缓冲器,以记录未完成命令数目个命令的状态信息,所述状态信息包括各个命令的状态、地址Addr、身份讯号ID等等信息。如果命令正常完成,且后续有命令继续带来,则监控装置140中的缓冲器可被依次覆盖。
[0051]图6为图5所示的监控装置的示意图。在此,以一个连接在总线的端口,且支持读命令的最大的未完成命令数目为4,写命令的最大的未完成命令数目为4的监控装置为例,来介绍本发明。
[0052]如图6所示,监控装置200包括读缓冲模块210、写缓冲模块220、重置(RESET)模块230和控制(CTRL)模块240。其中,读缓冲模块210包括多个读缓冲器(Read Buffer,RBUF) 211,而写缓冲模块220包括多个写缓冲器(Write Buffer,WBUF) 221。为了支持最大的未完成命令数目为4的读/写命令,因此在本实施例中,读缓冲模块210包括4个读缓冲器211,例如读缓冲器RBUF0、RBUF1、RBUF2、RBUF3,分别用于记录分配至读缓冲器211的读命令的状态信息;而写缓冲模块220包括4个写缓冲器221,例如写缓冲器WBUFO、WBUFUWBUF2、WBUF3,分别用于记录分配至写缓冲器221的写命令的状态信息。重置模块230分别连接读缓冲模块210和写缓冲模块220以重置读缓冲模块210中的读缓冲器211和/或写缓冲模块220中的写缓冲器221。而控制模块240分别连接读缓冲模块210和写缓冲模块220以控制读缓冲模块210中的读缓冲器211和/或写缓冲模块220中的写缓冲器221以虚拟方式完成主设备110或者从设备120的未完成的读命令或者写命令。
[0053]监控装置200的输入包括第一端口信息/第二端口信息以及软件配置参数,其中第一端口信息/第二端口信息包括读/写命令、读/写数据、写响应、读响应等等信息。而监控装置200的输出为其内的各个缓冲器(读缓冲器211及/或写缓冲器221)中存储的各个命令的状态信息,例如读/写超时中断、读/写命令超时状态、读/写缓冲器状态、读/写命令状态、读/写命令顺序(order)、读/写命令身份序号(ID)信息、读/写命令地址(addr)信息、复位主设备/从设备时模拟主设备/从设备生成的信号、读/写命令延时等等。[0054]由于监控装置200需要支持高速总线,而高速总线的未完成命令数目内的命令一般都支持不同的身份序号ID,即源端发出的命令具有对应的身份序号ID,不同身份序号ID之间的命令可以以乱序的方式而执行并返回响应,而同一个身份序号的不同命令之间必须以顺序的方式执行并返回响应。因此,监控装置200需要支持以乱序和顺序的方式来分别处理不同的命令,其需要解决如何将命令放入哪个缓冲器内,以及如何找到当前的操作是对应哪个命令的问题。
[0055]在本发明中,在分配各个命令至不同的缓冲器时,属于不同身份序号ID的命令分别分配给不同的缓冲器;而属于同一身份讯号的不同命令在分配给不同的缓冲器时,还进一步按照顺序分配对应的操作顺序order,以标识同一身份序号ID的不同命令的先后顺序。而后续的数据、响应操作在总线协议中都会含有身份序号ID标识,当监控装置200监控到高速总线的端口的操作后,其可以根据身份序号ID标识,找到其内部符合身份序号ID标识的所有缓冲器,然后找到这些缓冲器中操作顺序order最小的缓冲器,更新其对应的状态息,判断其是否超时。
[0056]图7为图6所示的监控装置分配同一身份序号ID的不同命令给不同缓冲器的操作示意图。如图7所示,数字代表对应各个命令的操作顺序order ;缓冲器中有数字,则代表对应的缓冲器存储过命令;实线圆框代表新命令的存储;虚线圆框代表命令完成;而虚线方框代表命令的操作顺序order发生改变。
[0057]如图7所示,在Tl时刻,第一个命令发出,其存储在缓冲器bufferO中,且其操作顺序order为O ;在T2时刻,第一个命令并未完成,第二个命令发出,其存储在缓冲器bufferl中,且其操作顺序order为I ;在T3时刻,第一个命令和第二个命令都并未完成,第三个命令发出,其存储在缓冲器buffer2中,且其操作顺序order为2 ;在T4时刻,第二个命令完成,即存储在缓冲器bufferl中的命令完成,此时所有命令的操作顺序order保持不变;在了5时刻,再来一个新命令时,由于原本存储在缓冲器bufferl中的第二个命令已经完成(其操作顺序order为I),因此其他缓冲器中存储的命令如果其操作顺序order小于原本存储在缓冲器bufferl中的第二个命令的操作顺序(为I),例如,缓冲器bufferO中存储的第一个命令的操作顺序order为0,则其操作顺序保持不变;而其他缓冲器中存储的命令如果其操作顺序order大于原本存储在缓存器bufferl中的第二个命令的操作顺序order (为I),例如,缓冲器bufferO中存储的第三个命令的操作顺序order原本为2,则将其操作顺序order减I,即缓冲器bufferO中存储的第三个命令的操作顺序order变为I,而新命令存储在缓冲器bufferl中,且其操作顺序为2。
[0058]图7所不的分配操作顺序order的方式是针对属于同一身份序号ID的不同命令,即按照顺序的方式来处理这些属于同一身份序号ID的不同命令;而对于属于不同身份序号ID的命令,按照乱序得方式分别对其分配不同的缓冲器即可。
[0059]图8为图6所示的监控装置中任一个缓冲器的示意图。如图8所示,缓冲器300的输入包括命令信息、所有缓冲器信息、和软件配置参数;而缓冲器的输出包括单个缓冲器信息、读延时、读超时状态、读超时中断、读命令跳转状态、未完成的数据量等等。
[0060]如图8所示,缓冲器300内包括命令有效发出单元310、命令状态单元321、命令身份序号存储单元322、命令操作顺序单元323、未处理的数据量(beat数)单元324、命令处理完毕单元325、命令跳转状态单元326、读命令延时单元327、超时状态单元328、超时中断单元329、缓冲器状态单元331、和命令地址存储单元332。其中,命令有效发出单元310用以记录分配到缓冲器300的命令是否有效写入缓冲器300中;命令状态单元321用以记录分配到缓冲器300的命令的状态信息是占用还是空闲;命令身份序号存储单元322用以记录分配到缓冲器300的命令的身份序号ID ;命令操作顺序单元323用以记录分配到缓冲器300的命令的操作顺序order ;未处理完的数据量单元324用以记录分配到缓冲器300的命令所对应的数据中未处理完的数据量(beat数);命令处理完毕单元325用以记录分配到缓冲器300的命令是否在配置的时间内完成;命令跳转状态单元326用以记录分配到缓冲器300的命令当前的具体状态;读命令延时单元327用以记录分配到缓冲器300的命令在配置的时间内完成时,则获得命令延时;超时状态单元328用以记录分配到缓冲器300中的命令的超时状态;超时中断单元329用以在所述命令的状态跳转到超时状态时,上报中断;缓冲器状态单元331用以记录缓冲器的状态;而命令地址存储单元332用以记录分配到缓冲器的命令的存储地址。
[0061]从图8可知,在本发明中,缓冲器300可以至少记录分配到该缓冲器的命令的状态、身份序号ID、未处理完的数据量(beat数)、操作顺序order。这四个信息是各个缓冲器必须要记录的。当然,各个缓冲器还可以设计为进一步记录分配到该缓冲器的命令的存储地址、缓冲器状态等等其它相关内容,这些可维可测的要求可以按照实际需要而进行选择。
[0062]在本发明中,可以分别利用缓冲器来记录分配到缓冲器的命令的状态(其记录在命令跳转状态单元326),以AXI高速总线协议中的读命令为例,通过缓冲器的记录,其命令状态图9所示。其中,图9所示的各个状态含义如下:
[0063]IDLE:空闲状态,缓冲器中还未存储读命令;
[0064]RCM_ACT:读命令有效发出,但未被接收,即arvalid有效,arready无效;
[0065]RCM_ACK:读命令有效发出并被接收,即arvalid和arready都有效;
[0066]RDAT_ACT:读命令是被处理的命令,读数据有效发出,但未被接收,即rid匹配,rlow 为 I, rvalid 有效,rready 无效;
[0067]RDAT_ACK:读命令是被处理的命令,读数据有效发出,且被接收,即rid匹配,rlow为I, rvalid和rready均有效;但没有读出最后一个数据,即rlast无效;
[0068]RDAT_FSH:读命令是被处理的命令,且发出最后一个数据并被接收,即rid匹配,rlow为I, rvalid、rready和rlast均有效;当缓冲器再次被读命令占用时,直接从该状态跳转,否则保持该状态。
[0069]以AXI高速总线协议中的写命令为例,通过缓冲器的记录,其命令状态如图10所示,其中,图10所示的各个状态的含义如下:
[0070]WIDLE:空闲状态,缓冲器未存储过写命令;
[0071]WAIT_WACT:写命令有效发出,数据未发出;
[0072]WDAT_ACT:处理写命令,且写数据有效发出,但未被接收,即id匹配,wlow为1,wvalid 有效,wready 无效;
[0073]WDAT_ACK:处理写命令,且写数据有效发出,并且被接收,即id匹配,wlow为1,wvalid> wready 有效,wlast 无效;
[0074]WDAT_FSH:处理写命令,且写数据有效发出,并且被接收,而且是最后一个写数据,即 id 匹配,wlow 为 I, wvalid、wready> wlast 有效;[0075]WCM_ACT:命令有效发出,但未被接收,即awvalid有效,awready无效;
[0076]WCM_ACK:命令有效发出,并且被接收,即awvalid和awready均有效;
[0077]WLST_FSH:写数据完成;
[0078]BRSP_ACT:处理写命令,写响应有效发出,但未被接收,即bid匹配,blow为1,bvalid 有效,bready 无效;
[0079]BRSP_FSH:处理写命令,写响应有效发出,并且被接收,即bid匹配,blow为1,bvalid和bready均有效;而当缓冲器再次被写命令占用时,则直接从该状态跳转,否则保持该状态。
[0080]通过上述对命令的各个状态的记录,监控装置可以记录各个命令是否可在配置的时间内完成。如果在配置的时间内没有跳转到完成状态,则监控装置可直接主动上报中断。在本发明中,每一个监控装置均对应一个相应的主设备或者从设备,因此本发明可以根据主动上报中断的监控装置的位置,而快速地定位是哪个主设备或者从设备出现了问题。
[0081 ] 此外,本发明的片上系统芯片还可以利用监控装置而查询流经监控装置的各个命令的状态。通过查询各个命令的状态,从而查询出出现超时的命令,查询超时的原因是由命令的发起方还是接收方(其对应于高速总线上的端口所连接的主设备或者从设备)而引起的,此外,可以进一步通过命令的身份序号ID而查出现超时的命令是由哪个主模块所引起的或者通过命令的地址而查询出现超时的命令是由哪个从模块引起的,从而非常方便地定位出高速总线上出现问题的节点。
[0082]举例而言,如图5所示,当利用高速总线BUSl的第二端口 sO所对应的监控装置DRT4监控到流经第二端口 sO的命令出现超时,则监控装置DRT4会上报中断,且本发明的片上系统芯片可以根据上报的中断而确定此命令的超时原因是由命令的发起方还是接收方所引起的,且具体是哪个模块所引起的,例如从监控装置DRT4中的缓冲器的指示,得到命令CMD3超时,并且命令CMD3的状态指示是由于命令发起方引起的(如命令跳转状态停留在WCM_ACK状态而超时),而系统中命令CMD3的身份序号ID对应的高速总线BusO的第一端口 ml,那么可以定位到是高速总线BusO的第一端口 ml所连接的主设备的写命令发出去了,但是并没有发写数据而引起的系统异常。当然,本领域技术人员可以理解的是,图5中高速总线BusO的第一端口 ml所连接的监控装置DRTl也可以直接主动上报中断,通知片上系统芯片高速总线BusO的第一端口 ml所连接的主设备有一个命令出现了问题,且其问题在于写命令发出去了,但是并没有发写数据。此外,本发明的监控装置还可以进一步对出现问题的高速总线的节点进行复位,以使片上系统芯片可以正常进行工作。
[0083]具体地,当监控装置上报中断时,片上系统芯片可以通知对应的监控装置其对应的模块(即对应的主设备或者从设备)要进行异常复位,而由监控装置代替对应的模块继续完成总线操作,从而保证不影响高速总线上的其它模块的相关操作的完成。当对应的模块为命令的接受方时,其对应的监控装置会代替对应的接受方而发出返回响应,且发出的返回响应其上会带有错误标志,以保证在传输完成的情况下,能让片上系统芯片识别出这是一个代替返回响应的操作。而当对应的模块为命令的发起方时,其对应的监控装置会代替对应的发起方而发出代替的写操作,且其进一步通过标识信号而让对应的写操作完成,但是数据并不会真正地写入至从设备中,以避免发出代替写操作的监控装置成为真正的命令发起方。在利用监控装置完成代替操作后,则片上系统芯片进一步会对对应的模块执行重置操作,从而使对应的模块复位。
[0084]以下以支持AXI高速总线协议的监控装置为例来接介绍本发明。图11为当监控装置所对应的模块为命令的接受方时,所述监控装置进行异常复位方法的流程示意图。如图11所示,当监控装置所对应的模块为命令的接受方时,监控装置进行异常复位方法包括:
[0085]系统软件判断流经监控装置的命令是否都已经处理完毕;在此,可以通过超时上报得知流经监控装置的命令是否都已经处理完毕,如果超时上报未完成,说明有命令未处理完O
[0086]然后,当系统软件判断为否时,还需要进一步判断命令未处理完是否是由于接受方引起的;在此,可以通过查询监控装置中的缓冲器的命令跳转状态得知命令未处理完是否是由于接受方引起的。
[0087]当系统软件判断是由于接受方引起的超时,则系统软件会通过配置统一的系统控制器通知监控装置开始进行重置操作,监控装置则开始找出未完成的读命令的操作顺序rorder最小的命令缓冲器;
[0088]监控装置根据找到的命令缓冲器中的rid和未完成数据量等信息,将所述命令的状态信息中的rst_rvalid拉为高,直至所述命令的数据处理完毕,同时反馈dec_err信息;
[0089]在发出所述命令的最后一个数据时,同时发出rlast信息;
[0090]然后监控装置返回重新执行上述判断,直至流经监控装置的所有命令都已经处理完毕。
[0091]当监控装置完成上述操作后,会自动返回标志到统一的系统控制器,然后统一的系统控制器可以对监控装置对应的从设备进行复位。当然,也可以设计成当系统软件通过配置统一的系统控制器通知监控装置开始进行重置操作的同时,一并对从设备进行复位。此外,在对从设备解除复位操作时,需要先解除对从设备的复位操作,然后再开始对监控装置进行退出重置操作。
[0092]图12为当监控装置所对应的模块为命令的发起方时,所述监控装置进行异常复位方法的流程示意图。如图12所示,当监控装置所对应的模块为命令的发起方时,监控装置进行异常复位方法包括:
[0093]系统软件判断流经监控装置的命令是否都已经处理完毕;在此,可以通过超时上报得知流经监控装置的命令是否都已经处理完毕,如果超时上报未完成,说明有命令未处
理完O
[0094]然后,当系统软件判断为否时,还需要进一步判断命令未处理完是否是由于发起方引起的;在此,可以通过查询监控装置中的缓冲器的命令跳转状态得知命令未处理完是否是由于发起方引起的。
[0095]当系统软件判断是由于发起方引起的超时,则系统软件会通过配置统一的系统控制器通知监控装置开始进行重置操作,监控装置开始查找写命令的操作顺序《order最小的命令缓冲器;
[0096]监控装置根据找到的命令缓冲器中的Wid和未完成数据量等信息,将所述命令的状态信息中的rst_Wvalid拉为高,直至所述命令的数据处理完毕;
[0097]在发出所述命令的最后一个数据时,同时发出wlast信息;[0098]然后监控装置返回重新执行上述判断,直至流经监控装置的所有命令都已经处理完毕。
[0099]当监控装置完成上述操作后,会自动返回标志到统一的系统控制器,然后统一的系统控制器可以对监控装置对应的主设备进行复位。当然,也可以设计成当系统软件通过配置统一的系统控制器通知监控装置开始进行重置操作的同时,一并对主设备进行复位。此外,在对主设备解除复位操作时,需要先解除对主设备的复位操作,然后再开始对监控装置退出重置操作。
[0100]本发明利用监控装置支持异常复位的功能,可以在片上系统芯片支持复位某一个高速总线所连接的某一主设备或者某一从设备,对总线操作不会造成死锁影响,而所有的总线操作虽然不一定是正确的完成,但是其都可以利用监控装置而完成。在利用监控装置对发生超时的命令进行替代操作后,可以进一步地重置复位对应的主设备或者从设备,使其可以重新开始工作。因此,在本发明中,特别是对于多核系统中,一个核的异常并不会导致整个系统都死锁。当发生异常的核复位后,可以重新加载运行,当然对应的软件需要有一定的错误恢复能力来保证系统级的恢复。
[0101]图13为本发明实施例的对发生异常的节点进行复位的示意图。如图13所示,当高速总线BUSl的第二端口 sO处的监控装置DRT4上报中断超时时,片上系统芯片400中的系统控制器410通过分析监控装置DRT4中的命令的状态信息可知,异常是由于高速总线BUSO的第一端口 ml处的主设备420所导致的,则系统控制器410会通知高速总线BUSO的第一端口 ml处的监控装置DRTl,代替主设备420而将其未完成的写操作做完,或者将未接受完的读操作和响应接受完,然后对发生异常的主设备420进行重置复位,以修复异常。
[0102]如上所述,本发明的监控装置DRT可以利用其内的缓冲器存储命令的状态,并在发生命令超时时上报中断。由于监控装置DRT中的缓冲器的数量一般设计为对应于未完成命令outstanding的数目,因此监控装置只能记录未完成的命令和已经完成的outstanding数量内的命令,如果超出,则已经完成的命令就会被覆盖住。而现有的总线追踪技术虽然不能实时报错和异常恢复,但是其可以记录较长一段时间内的所有命令操作,而这是监控装置DRT所不能完成的。在此,可以将监控装置DRT与总线追踪装置结合在一起,从而即可以记录较长一段时间内的所有命令操作,又可以实时报错和异常恢复。
[0103]图14为本发明实施例的监控装置与总线追踪装置结合应用的示意图。如图14所示,监控装置510可以进一步增加一个高速总线第一端口,用以和调试总线(例如ATB调试总线)550相连接,因此监控装置510可以通过调试总线550而将其记录的所有完成的命令或者超时的命令送出到系统。其中ATB调试总线550可以为Trace Funnel总线。
[0104]此外,监控装置510还可以进一步增加一个交叉触发端口,其与其他的总线追踪装置,例如数字信号处理器核心的总线追踪装置(DSP Core Trace) 520、ARM处理器核心的总线追踪装置(ARM Core Trace) 530等等,通过交叉触发矩阵(Cross Trigger Matrix,CTM) 540而连接在一起,其中监控装置510可以通过交叉触发矩阵540而与其它的总线追踪装置相互触发开始或者停止记录总线的对应端口的命令和命令状态。然后,再利用与监控装置510和其他的总线追踪装置相连的ATB调试总线550,例如Trace Funnel总线,而将记录的命令和命令状态导出。此外,本领域技术人员可以理解的是,交叉触发矩阵540也可以用来在多个监控装置DRT之间相互触发开始和停止。[0105]综上所述,本发明的片上系统芯片在高速总线的端口处设置监控装置DRT来记录命令的状态,并在命令超时时上报中断,从而能够非常快速地在复杂的总线互联系统中定位出出现问题的节点在哪里,并找到出现问题的原因是由命令的发起方还是接收方异常而引起,并根据命令的状态找出出现的问题是在哪个阶段。本发明是主动上报异常并复位异常(即主动性的异常处理方式),而现有技术是在后期通过被动式的解析和分析出现异常的节点,因此本发明极大地提高了定位效率、不需要重现场景,也不需要将所有的数据导出进行分析,其极大地减少了工作量。
[0106]另,本发明还可以通过监控装置对出现异常的节点进行复位,其能够支持复杂系统中的节点异常恢复,其在多核系统中的作用特别大,特别是对于那些对可靠性要求高的系统。其中,监控装置可以在出现超时的命令时上报中断,从而知道是哪一个节点出现了异常,然后复位此节点。在复位后,软件可以解复位重新加载,开始运行,只要系统中的软件架构对应支持恢复后的软件操作即可,其可以避免整个系统死锁现象的发生。
[0107]另本发明还可以将监控装置与总线追踪装置配合使用,提高了其兼容性,从而即可以记录较长一段时间内的所有命令操作,又可以实时报错和异常恢复。
[0108]以上所述,仅是本发明的较佳实施例而已,并非对本发明作任何形式上的限制,虽然本发明已以较佳实施例揭露如上,然而并非用以限定本发明,任何熟悉本专业的技术人员,在不脱离本发明技术方案范围内,当可利用上述揭示的技术内容作出些许更动或修饰为等同变化的等效实施例,但凡是未脱离本发明技术方案内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化与修饰,均仍属于本发明技术方案的范围内。
【权利要求】
1.一种片上系统芯片,其特征在于,其包括:主设备、从设备、高速总线、及监控装置; 所述主设备连接所述高速总线的第一端口,所述从设备连接所述高速总线的第二端口,从而使所述主设备具有访问所述从设备的能力; 所述监控装置设置在所述高速总线的所述第一端口与所述主设备之间、和/或所述高速总线的所述第二端口与所述从设备之间,用于基于高速总线通讯协议以记录通过所述第一端口和/或所述第二端口的各个命令的状态信息,且当出现有一个命令的状态信息表示所述命令的操作处于超时状态时,则上报中断以定位所述高速总线出现问题的节点。
2.如权利要求1所述的片上系统芯片,其特征在于,在所述监控装置在上报中断以定位所述高速总线出现问题的节点的步骤之后,所述节点处的所述监控装置代替对应的所述主设备或所述从设备以虚拟方式完成处于超时状态的所述命令,并对对应的所述主设备或者所述从设备执行复位操作。
3.如权利要求2所述的片上系统芯片,其特征在于,所述监控装置包括: 读缓冲模块,其包括至少一个读缓冲器,用于记录分配至所述读缓冲器的读命令的状态息; 写缓冲模块,其包括至少一个写缓冲器,用于记录分配至所述写缓冲器的写命令的状态息; 控制模块,分别连接所述 读缓冲模块和所述写缓冲模块以控制所述读缓冲模块中的所述读缓冲器和/或所述写缓冲模块中的所述写缓冲器以虚拟方式完成所述主设备或者所述从设备的未完成的读命令或者写命令; 重置模块,分别连接所述读缓冲模块和所述写缓冲模块以重置所述读缓冲模块中的所述读缓冲器和/或所述写缓冲模块中的所述写缓冲器。 其中,在所述读缓冲模块中的所述读缓冲器和/或所述写缓冲模块中的所述写缓冲器中,每一个缓冲器分别记录分配到所述缓冲器中的命令的状态、身份序号、未处理完的数据量和操作顺序。
4.如权利要求3所述的片上系统芯片,其特征在于,所述读缓冲模块中的所述读缓冲器的数量和所述写缓冲模块中的所述写缓冲器的数量,分别与所述第一端口和所述第二端口各自支持的最大的未完结命令的数目相等,且所述第一端口支持的最大的未完结命令的数目和所述第二端口支持的最大的未完结命令的数目相同。
5.如权利要求4所述的片上系统芯片,其特征在于,所述监控装置的输入包括第一端口信息/第二端口信息,而所述监控装置的输出包括其内的各个缓冲器中分配的各个命令的状态信息和上报中断。
6.如权利要求5所述的片上系统芯片,其特征在于,所述第一端口信息/第二端口信息包括读/写命令、读/写数据、写响应或者读响应。
7.如权利要求5所述的片上系统芯片,其特征在于,所述各个缓冲器分配的各个命令的状态信息包括读/写超时中断、读/写命令超时状态、读/写缓冲器状态、读/写命令状态、读/写命令顺序、读/写命令身份序号信息、读/写命令地址信息、复位主设备/从设备时模拟主设备/从设备生成的信号、读/写命令延时。
8.如权利要求5所述的片上系统芯片,其特征在于,所述监控装置分配各个命令至其内的各个缓冲器以使各个缓冲器分别记录分配的命令的状态信息,其中,属于不同身份序号的命令分别分配给不同的缓冲器;而属于同一身份序号的不同命令分配给不同的缓冲器时,进一步按照顺序分配对应的操作顺序,以标识同一身份序号的不同命令的先后顺序。
9.如权利要求5所述的片上系统芯片,其特征在于,所述缓冲器包括: 命令有效发出单元,用以记录分配到所述缓冲器的命令是否有效写入所述缓冲器中; 命令状态单元,用以记录分配到所述缓冲器的命令的状态信息是占用还是空闲; 命令身份序号存储单元,用以记录分配到所述缓冲器的命令的身份序号; 命令操作顺序单元,用以记录分配到所述缓冲器的命令的操作顺序; 未处理完的数据量单元,用以记录分配到所述缓冲器的命令所对应的数据中未处理完的数据量; 命令处理完毕单元,用以记录分配到所述缓冲器的命令是否在配置的时间内完成; 命令跳转状态单元,用以记录分配到所述缓冲器的命令当前的具体状态; 读命令延时单元,用以记录分配到所述缓冲器的命令在配置的时间内完成时,则获得命令延时; 超时状态单元,用以记录分配到所述缓冲器中的命令的超时状态; 超时中断单元,用以在命令的状态跳转到超时状态时,上报中断; 缓冲器状态单元,用以记录所述缓冲器的状态;以及 命令地址存储单元,用以记录分配到所述缓冲器的命令的存储地址。
10.如权利要求9所述的片上系统芯片,其特征在于,分配至所述缓冲器的命令为读命令时,则所述缓冲器记录的所述读命令的状态包括IDLE、RCM_ACT、RCM_ACK、RDAT_ACT、RDAT_ACK, RDAT_FSH0
11.如权利要求9所述的片上系统芯片,其特征在于,分配至所述缓冲器的命令为写命令时,则所述缓冲器记录的所述写命令的状态包括WIDLE、WAIT_WACT、WDAT_ACT、WDAT_ACK、WDAT_FSH、WCM_ACT、WCM_ACK、WLST_FSH、BRSP_ACT、BRSP_FSH。
12.如权利要求1-11任一项所述的片上系统芯片,其特征在于,所述监控装置进一步连接至调试总线,用以将其所记录的各个命令的状态信息导出,从而存储所述监控装置所记录的各个命令的状态信息。
13.如权利要求1-11任一项所述的片上系统芯片,其特征在于,所述高速总线的所述端口处可以进一步设置总线追踪装置,以记录经过所述端口的各个命令,其中,所述总线追踪装置与所述监控装置相互配合,以记录经过所述端口的各个命令以及各个命令的状态信息O
14.一种应用于片上系统芯片的监控方法,其特征在于,所述片上系统芯片包括主设备、从设备、高速总线、及监控装置,所述主设备连接所述高速总线的第一端口,所述从设备连接所述高速总线的第二端口从而使所述主设备具有访问所述从设备的能力,而所述监控装置设置在所述高速总线的所述第一端口与所述主设备之间、和/或所述高速总线的所述第二端口与所述从设备之间;其中,所述监控方法包括: 利用所述监控装置基于高速总线通讯协议而记录通过所述第一端口和/或所述第二端口的各个命令的状态信息; 当出现有一个命令的状态信息表示所述命令的操作处于超时状态时,所述监控装置上报中断以定位所述高速总线出现问题的节点。
15.如权利要求14所述的监控方法,其特征在于,在所述监控装置上报中断以定位所述高速总线出现问题的节点的步骤之后,所述节点处的所述监控装置代替对应的所述主设备或所述从设备以虚拟方式完成处于超时状态的所 述命令,并对对应的所述主设备或所述从设备执行复位操作。
【文档编号】G06F11/30GK103810074SQ201210457400
【公开日】2014年5月21日 申请日期:2012年11月14日 优先权日:2012年11月14日
【发明者】牟澄磊, 韩奇 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1