一种总线访问出错保护方法

文档序号:9646532阅读:708来源:国知局
一种总线访问出错保护方法
【技术领域】
[0001]本发明涉及计算机技术领域,具体说涉及一种总线访问出错保护方法。
【背景技术】
[0002]访问出错的次数是衡量总线通信稳定程度的关键因素。目前针对总线出错的保护方法有两种,一种是通过硬件本身设计,来减少或者避免出错的机率。但是这种方式对相关硬件器件有特殊的要求,而且设计相对复杂。另个一种则是通过软件自身的设计来进行出错保护。
[0003]目前常用的软件方式是在逻辑上将访问的数据分块,对应每个数据块设置一个标识位,用来标记该数据块正处于在读、写或者是空闲的状态。然后,该标识位是共享的,在访问者访问数据块之前首先访问标识位。如果标识位为读/写状态,则等待直到标识位空闲。如果标识位为空闲,则将标识位标记为读/写并进一步对数据块执行读/写操作。最后在读/写操作结束后将标识位恢复为空闲状态。
[0004]上述设置同时也产生了一个问题。在多个访问者同时读取一个标识位的状态时,如果该标识位为空闲,则会导致多个访问者同时修改同一标识位以及同时访问一个数据块的情况发生,从而产生访问错误。进一步的,如果多个访问者的访问周期相同,那么多个访问者同时去访问或者操作该标识位的概率会增大,从而造成访问出错的次数增加。
[0005]因此,为了减少总线访问出错的次数,需要一种总线访问出错保护方法。

【发明内容】

[0006]为了减少访问出错的次数,本发明提供了一种总线访问出错保护方法,所述方法包括以下步骤:
[0007]获取进行访问的多个访问者的访问周期;
[0008]在所述访问者访问数据块的标识位时判断是否存在访问冲突;
[0009]当所述访问周期相同的多个所述访问者相互间存在所述访问冲突时改变一个或多个所述访问者对所述标识位的下一次访问的时间点以避免多个所述访问者的所述下一次访问产生所述访问冲突。
[0010]在一实施例中,当两个或两个以上的所述访问者同时访问同一所述标识位时所述访问者相互间存在所述访问冲突。
[0011]在一实施例中,在改变所述下一次访问的时间点的过程中分别为每个所述访问者设定不同时长的延时,使得每个所述访问者等待相应的所述延时后进行所述下一次访问。
[0012]在一实施例中,所述延时不等于所述访问周期的整数倍。
[0013]在一实施例中,所述延时小于所述访问周期。
[0014]在一实施例中,在所述访问者等待并再次访问之后仍以发生所述访问冲突的时间点为起始时间点按照所述访问周期执行所述访问者之后的访问操作。
[0015]在一实施例中,以所述访问者等待并再次访问的时间点为起始时间点按照所述访问周期执行所述访问者之后的访问操作。
[0016]在一实施例中,根据不同的所述访问者的访问优先级设定不同时长的所述延时,对所述访问优先级较高的所述访问者设定较小时长的所述延时。
[0017]在一实施例中,所述访问者包括主方以及一个或多个从方,在改变所述下一次访问的时间点的过程中保持所述主方的访问周期不变,分别将每个所述从方设定为等待不同时长的所述延时后再次访问,其中,任意所述从方的所述延时不等于所述访问周期。
[0018]在一实施例中,任意所述从方的所述延时大于所述访问周期。
[0019]与现有技术相比,根据本发明的方法可以有效减少总线访问出错的次数;同时,本发明的方法不需要增加硬件成本,具有较高的推广价值。
[0020]本发明的其它特征或优点将在随后的说明书中阐述。并且,本发明的部分特征或优点将通过说明书而变得显而易见,或者通过实施本发明而被了解。本发明的目的和部分优点可通过在说明书、权利要求书以及附图中所特别指出的步骤来实现或获得。
【附图说明】
[0021]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:
[0022]图1是根据本发明一实施例的执行流程图;
[0023]图2是现有技术中数据块标识位设置示意图。
【具体实施方式】
[0024]以下将结合附图及实施例来详细说明本发明的实施方式,借此本发明的实施人员可以充分理解本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程并依据上述实现过程具体实施本发明。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。
[0025]为了减少总线访问出错的次数,本发明提出了一种总线访问出错保护方法。接下来基于附图详细描述根据本发明一实施例的方法的执行流程。附图的流程图中示出的步骤可以在包含诸如一组计算机可执行指令的计算机系统中执行。虽然在流程图中示出了各步骤的逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0026]如图1所示,在本发明的方法中,最初执行步骤S100,开始步骤,开始总线访问。以背板总线访问为例,背板总线通信中,主要是要避免因主板和从板同时操作同一区域导致访问出错。已有的方案是把整个背板总线能够访问的区域先分成若干块,接在分配若干个标识字节对应每一块数据区域,该标识字节标识该数据块目前的状态。
[0027]如图2所示,数据块1标识位、数据块2标识位、数据块3标识位......数据块N标识位分别对应数据块1、数据块2、数据块3......数据块N。每当主板或者从板要去访问某一数据块(数据块1、数据块2、数据块3……或数据块N)时,必须先去读取该数据块的状态(访问数据块1标识位、数据块2标识位、数据块3标识位……或数据块N标识),从而确定此次操作是否有权限。当得到权限的一方操作完对应的数据块之后,重新置位标识符的值,表示本次操作已经完成,从而释放操作权限。没有获取权限的一方在下一个周期再对该数据块进行访问。
[0028]依照上述逻辑流程,在本实施例中,当总线访问开始(步骤S100)时,如果需要访问某一数据块,首先要执行步骤S101,识别标识位步骤,判断此次访问操作是否有权限。如果标识位为非空闲状态,则说明此时有其他用户(访问者)正在访问该数据块。此时执行步骤S102,等待步骤,等待一个访问周期后再次访问标识位。
[0029]如果标识位为空闲状态,则说明此时没有其他用户正在访问该数据块。但此时又会出现两种情况,一种情况是此时只有一个用户访问该标识位,这样该用户基于处于空闲的标识位就可以进一步的正常访问数据块。另一种情况是此时存在多个(两个或两个以上)的用户同时访问该标识位。由于当前时刻每个访问该标识位的用户都会基于标识位的空闲状态去进一步访问数据块,这就造成了多个用户同时访问一个数据块,从而产生了访问冲突。
[0030]针对上述情况,在本实施例中,在步骤S101之后,当标识位为空闲状态时,需要执行步骤S110,判断是否发生访问冲突。即当前时刻是否有多个用户同时访问标识位。如果当前时刻只有一个用户访问标识位(没有产生访问冲突),则该用户就可以继续执行步骤S103,标记标识位,将标识位标记为非空闲(获取访问权限,并阻止其他用户获取访问权限)。然后进一步的执行步骤S104,访问数据块,对数据块进行读/写操作。
[0031]当读/写操作完成时,执行步骤S105,恢复标识位,将标识位恢复为空闲状态(释放访问权限)。最后执行步骤S106,数据访问结束,结束本次对数据块的访问。
[0032]在步骤S110中,如果当前发生了访问冲突,即当某个时刻,多个用户在同一时刻要操作这一数据块。由于多个用户在操作前都去读标识位,此时多个用户都发现是有权限去操作该数据块的,结果多个用户都去操作该数据块,从而导致数据写入错误。
[0033]—般的,当发生上述数据写入错误(访问冲突)时,需要每个用户等待一个特定时长后再次进行数据块访问。但是,在很多访问机制的设计中,多个用户都是以一固定的周期对某一数据块进行操作。由于多个用户的访问周期都是固定的,从而使得这种同时操作的概率大大增加,出错的概率也增加,从而影响了通信的可靠性。
[0034]具体,例如在时刻T1用户A与用户B针对数据块1发生数据写入错误。用户A与用户B分别等待一个访问周期T2后再次访问数据块1。由于用户Α与用户B的等待的访问周期均为T2,此时数据写入错误就会再次发生。
[0035]为避免上一情况的发生,在本实施例中,当访问冲突发生后(步骤110判断结果为是),先执行步骤S111,判断发生访问冲突的各方用户的访问周期是否一致。如果发生访问冲突的各方用户的访问周期不一致,则可以执行步骤S112,各方分别等待各自的一个访问周期后再次执行步骤S101 (由于访问周期不一致,各方分别等待各自的一个访问周期后再次访问的时间点不会重合)。
[0036]当发生访问冲突的各方用户的访问周期一致时,则执行步骤S113,分别延时步骤,为每个用户(访问周期相同且发生访问冲突)分别设置不同时长的延时。然后执行步骤S114,令每个用户按照设定好的延时进行等待。等待过后再执行步骤S101。由于每个用户用于等待的延时的时长不同,因此步骤S114之后,每个用户再次识别标识位(S101)的时间点也就不会重合。
[0037]概括上述过程,就是当访问周期相同的多个访问者相互间存在访问冲突时改变一个或多个访问者对标识位的下一次访问的时间点以避免多个
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1