共享装置的使用方法及资源共享系统与流程

文档序号:12801783阅读:192来源:国知局
共享装置的使用方法及资源共享系统与流程
本发明涉及一种资源共享机制,且特别涉及一种可避免竞争情况(racecondition)的共享装置的使用方法及资源共享系统。
背景技术
:一般而言,当资源被两个或以上的处理器同时存取时,会造成数据不完整或是无法同步的情形称之为竞争情况,尤其在处理器越多或是数据量越大的时候,问题产生的机率也就相对提高。因此必须使用传输保护机制来避免发生上述问题。其中仲裁者机制是普遍应用解决此问题的方法。一般仲裁者机制是由一个作为仲裁者的处理器来给予权限标记,拥有标记的处理器则拥有存取共享资源的权力。仲裁者会依照处理器的申请顺序,来订定存取排程,并且根据优先权顺序来避免相互竞争的发生。然而,现有的仲裁者机制存在有下述缺点。(1)仅针对处理器端与储存装置端进行监控,缺乏对仲裁者的监控机制。(2)无法因应不同的处理器来动态调整优先权顺序。即,由于每个处理器内部设定与固件不可能完全相同,并且对于储存装置的存取行为也不尽相同,无法对各处理器使用同一套判断标准来衡量优先权顺序。(3)在原先的仲裁者失去行为能力或是被关机时,只会依照已定义好的优先权顺序来进行递补,而在缺乏对仲裁者的监控机制以及无法动态调整优先权顺序的情况下,难以保证选出一个稳定且合适的新仲裁者。倘若选出的新仲裁者依旧传输效率不佳、时常当机,整个系统架构就会显得不稳且易出状况,甚至又需再更换一次仲裁者,造成整个仲裁者架构耗费太多时间在更换仲裁者,效率不彰。技术实现要素:本发明提供一种共享装置的使用方法及资源共享系统,可解决多个处理器同时存取共享装置所产生的竞争情况(racecondition)。本发明的共享装置的使用方法,包括:由仲裁者节点建立优先权顺序,当仲裁者节点同时接收到两个或两个以上处理器各自所传送的申请共享装置的使用权限的要求时,依据优先权顺序决定其中一个处理器具有共享装置的使用权限。在此,共享装置提供给多个处理器来使用,并且以其中一个处理器作为仲裁者节点。上述由仲裁者节点建立优先权顺序包括:依据各处理器的识别信息,并设定各个处理器的初始权重值;获得各处理器的状态诊断信息,其中状态诊断信息代表各处理器分别与仲裁者节点及共享装置之间的传输状态,而状态诊断信息包括一个或多个状态诊断码,且一个状态诊断码对应至一个状态权重值;对每一个处理器,基于其所对应的初始权重值、以及所包括的一个或多个状态诊断码对应的状态权重值,计算出各个处理器的优先权分数,以建立优先权顺序。本发明的资源共享系统,包括多个处理器以及共享装置。共享装置耦接至上述处理器,提供给上述处理器来使用。以其中一个处理器作为仲裁者节点,并且由仲裁者节点建立优先权顺序,包括:依据各处理器的识别信息设定各处理器的初始权重值;获得各处理器的状态诊断信息,其中状态诊断信息代表各处理器分别与仲裁者节点及共享装置之间的传输状态,状态诊断信息包括一个或多个状态诊断码,且一个状态诊断码对应至一个状态权重值;以及对各处理器,基于其所对应的初始权重值、以及所包括的所有状态诊断码的状态权重值,计算出各个处理器的优先权分数,以建立优先权顺序。并且,当仲裁者节点同时接收到两个或两个以上处理器各自所传送的申请共享装置的使用权限的要求时,依据优先权顺序决定其中一个处理器具有共享装置的使用权限。基于上述,利用每个处理器分别与仲裁者节点及共享装置之间的传输状态,并且配合各个处理器的特性来决定优先权顺序。据此,能够因不同处理器而给予适合的判断依据,做出一个适合整个资源共享系统的优先权顺序。通过上述方法可避免在多个处理器同时进行存取而发生竞争进而导致数据不完整,并且解决了存取效率与递补优先顺序的问题。为让本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合说明书附图作详细说明如下。附图说明图1是依照本发明一实施例的资源共享系统的方块图。图2a~图2d是依照本发明一实施例的连线状态诊断的示意图。图3是依照本发明一实施例的共享装置的使用方法的流程图。图4是依照本发明一实施例的汇整状态诊断信息的示意图。图5是依照本发明一实施例的处理器端的连线状态诊断的流程图。图6是依照本发明一实施例的仲裁者端的连线状态诊断的流程图。图7是依照本发明一实施例的仲裁者递补机制的示意图。附图标记说明:100:资源共享系统110:共享装置120_1:处理器(仲裁者节点)120_2~120_n、mpu.a、mpu.b、mpu.g:处理器130_1~130_n:储存空间140_1~140_n:优先权表格150_1~150_n:诊断码表格s305~s320:共享装置的使用方法各步骤s505~s530:处理器端的连线状态诊断各步骤s605~s630:仲裁者端的连线状态诊断各步骤具体实施方式图1是依照本发明一实施例的资源共享系统的方块图。请参照图1,资源共享系统100包括共享装置110以及多个处理器120_1~120_n,并且共享装置110允许所有处理器120_1~120_n对其进行存取。在本实施例中,为了方便说明仅绘示一个共享装置110,而在其他实施例中,资源共享系统100可以具备多个不同或相同的共享装置110。资源共享系统100可以是一台主机,也可以是由多台主机所构成的伺服器系统,并且不限定上述处理器120_1~120_n是设置在同一主机内。而当上述处理器120_1~120_n设置在不同的主机时,彼此之间可通过有线或无线的传输方式来进行沟通。处理器120_1~120_n例如为中央处理单元(centralprocessingunit,cpu)、图像处理单元(graphicprocessingunit,gpu)、物理处理单元(physicsprocessingunit,ppu)、可编程的微处理器(microprocessor)、嵌入式控制晶片、数字信号处理器(digitalsignalprocessor,dsp)、特殊应用集成电路(applicationspecificintegratedcircuits,asic)或其他类似装置。共享装置110可以是伺服器等具有储存装置的电子装置、或者是通用序列总线(universalserialbus,usb)储存碟等移动储存装置、亦可以是可拆卸的储存装置等。例如为非挥发性存储器(non-volatilememory)、随机存取存储器(randomaccessmemory,ram)或硬盘等储存装置。非挥发性存储器例如为电子可抹除可编程只读存储器(electricallyerasableprogrammablereadonlymemory,eeprom)。资源共享系统100具有仲裁者机制,即,在上述处理器120_1~120_n中设定其中一个来作为仲裁者节点。在本实施例中,以处理器120_1来作为仲裁者节点。由仲裁者节点120_1给予共享装置110的权限标记至处理器120_2~120_n其中一个。而拥有权限标记的处理器则拥有存取共享装置110的使用权限。每个处理器120_1~120_n内部都含有对应的储存空间130_1~130_n来分别存放优先权表格140_1~140_n(记录优先权顺序)以及诊断码表格150_1~150_n(记录状态诊断信息)。仲裁者节点120_1在建立优先权表格140_1之后,会与处理器120_2~120_n的优先权表格140_2~140_n进行同步。每个处理器120_1~120_n彼此间可通过任何方式(例如集成电路(inter-integratedcircuit,i2c)总线)连接着,并且可以互相传输需要的信息。例如,状态诊断信息或是优先权顺序均是由上述连线方法进行传输。由于每一个处理器120_2~120_n(非仲裁者节点120_1)除了与共享装置110之间传输数据之外,仅会与仲裁者节点120_1做权限申请,因此每一个处理器120_2~120_n内所储存的诊断码表格150_2~150_n中,只会记录自己与仲裁者节点120_1及与共享装置110之间的传输状态。另外,仲裁者节点120_1会记录其自身与处理器之间的传输状态,并且进一步汇整所有处理器120_2~120_n所回报的诊断码信息至诊断码表格 150_1。因此在仲裁者节点120_1的诊断码表格150_1中记录有其自身以及所有处理器120_2~120_n的传输状态。各诊断码表格150_2~150_n代表其分别与仲裁者节点120_1及与共享装置110之间的传输状态。诊断码表格150_2~150_n包括一个或多个状态诊断码,每一个状态诊断码对应至一种传输状态。状态诊断码是基于传输效率所定义出来的,包含在进行传输时会遇到的各种传输状态。例如,仲裁者节点120_1(仲裁者端)、处理器120_2~120_n(处理器端)及共享装置110(装置端)在进行传输的封包都会带有状态诊断码。而仲裁者端及处理器端在接收到状态诊断码时都会记录下来。底下列举几种范例做说明可能会发生的传输状态。状态诊断码“0x00”代表传输成功。状态诊断码“0x01”代表待决(pending)。即,传输正在执行当中,等待共享装置110回应。例如,表示共享装置110可能正在进行传输,其使用权限尚未被释放。状态诊断码“0x02”代表无法使用(notavailable)。即,仲裁者节点120_1并未有回应,或者与共享装置110传输的通道被其他传输所占用,导致无法进行传输。有可能是仲裁者节点120_1没有正确释放使用权限,或是上一个拥有使用权限的处理器仍占用该通道。状态诊断码“0x05”代表非法通道(illegalchannel)。即,无法与共享装置110建立传输连线,找不到任何通道与共享装置110进行连结。例如,在其中一个处理器获得共享装置110的使用权限后,找不到通道对装置进行存取,可能是硬件线路受阻或是损坏。状态诊断码“0x0a”代表逾时(timeout),其表示拥有共享装置110的使用权限的处理器未在规定时间内传输完成并向仲裁者节点120_1归还使用权限。状态诊断码“0x10”代表循环冗余检查(cyclicredundancycheck,crc)错误,其表示传输封包的crc检查失败。状态诊断码“0x11”代表否定认可(negativeacknowledgement,nak),即,仲裁者节点120_1在规定时间内未收到拥有共享装置110的使用权限的处理器的回应,代表该处理器可能出现异常而无法正确释放使用权限。状态诊断码“0x1f”代表身份确认(identification),即,仲裁者节点120_1确认各处理器120_2~120_n的身份。由于每一个处理器120_2~120_n不一 定相同,内部的固件版本、处理器核心数、处理器时脉、处理器种类、处理器用途也不一样,所以仲裁者节点120_1需要确认各处理器120_2~120_n的身份。而在整个资源共享系统100下,不论是仲裁者端、处理器端、装置端都有可能因为自身处理问题造成传输失败,因此通过连线状态诊断方式来随时监控各端的传输状态,并记录下对应的状态诊断码。图2a~图2d是依照本发明一实施例的连线状态诊断的示意图。在本实施例是以处理器120_2来进行说明,其他处理器亦以此类推。图2a及图2b表示处理器120_2与仲裁者节点120_1之间的传输范例,图2c及图2d表示处理器120_2与共享装置110之间的传输范例。在此,图2a~图2d所提及的传输状态仅为举例说明,并不以此为限。在图2a中,处理器120_2向仲裁者节点120_1发出一要求。当仲裁者节点120_1收到此要求时,会传送回应数据以及表示传输成功的状态诊断码“0x00”一并回送给处理器120_2。例如,假设处理器120_2向仲裁者节点120_1传送申请共享装置110的使用权限的要求,且处理器120_2接收到的状态诊断码为“0x00”,表示传输成功。同时,处理器120_2会将状态诊断码“0x00”记录到诊断码表格150_2。例如,仲裁者节点120_1的处理器代号为“mpu.a”,则将“0x00”记录到与“mpu.a”对应的栏位中。参照图2b,在处理器120_2向仲裁者节点120_1发出要求之后,倘若处理器120_2在一个设定的时间内没有接收到仲裁者节点120_1的回应,处理器120_2会自行产生状态诊断码“0x02”(无法使用),并记录“0x02”至诊断码表格150_2。另外,在处理器120_2向仲裁者节点120_1传送申请共享装置110的使用权限的要求之后,倘若已经有其他处理器正在使用共享装置110,则仲裁者节点120_1会回传状态诊断码“0x02”(无法使用)至处理器120_2,使得处理器120_2记录“0x02”至诊断码表格150_2。在图2c中,处理器120_2已获得共享装置110的使用权限并向共享装置110进行传输时,倘若处理器120_2找不到任何通道与共享装置110进行连结,则处理器120_2会产生状态诊断码“0x05”,并将其记录至诊断码表格150_2。在图2d中,处理器120_2已获得共享装置110的使用权限并向共享装 置110进行传输时,倘若连线通道没问题,但是处理器120_2无法从共享装置110端得到任何回应,此时,处理器120_2判定目前状态为待决状态,并产生状态诊断码“0x01”且将其记录至诊断码表格150_2。在如上所述的连线状态诊断的方式,通过已定义的状态诊断码来掌握处理器端分别与仲裁者端及与装置端之间的传输状态。此外,亦可一次传送多个状态诊断码,而不限于一个。另外,在有处理器端取得使用权限而开始对共享装置110进行传输时,仲裁者端会去监控处理器端的使用状态。例如,检查处理器端是否逾期未归还权限或是处理器端本身已经异常。以处理器120_2(取得使用权限)进行说明,仲裁者节点120_1在发现处理器120_2逾期未归还使用权限,会先在诊断码表格150_1中记录一笔状态诊断码“0x0a”至对应于处理器120_2的栏位。之后,仲裁者节点120_1发送请求来确认处理器120_2是否正常运作。若发现处理器120_2没有正常运作,则仲裁者节点120_1诊断码表格150_1中,再记录一笔状态诊断码“0x11”至对应于处理器120_2的栏位,并强制释放出使用权限。仲裁者节点120_1在汇整其自身以及处理器端全部的状态诊断码之后,便更可以进一步来决定优先权顺序,进而在发生竞争情况(racecondition)时或需要递补仲裁者时,基于优先权顺序来给予一个最佳选择以及最有效率的方法。底下即搭配上述资源共享系统100来说明共享装置110的使用方法各个步骤。图3是依照本发明一实施例的共享装置的使用方法的流程图。请参照图3,在步骤s305~s315中,由仲裁者节点120_1建立优先权顺序。具体而言,在步骤s305中,仲裁者节点120_1依据各处理器120_1~120_n的识别信息来设定各群组的初始权重值。例如,基于各处理器120_1~120_n的识别信息将这些处理器(包括仲裁者节点)120_1~120_n分群为多个群组,并设定各群组的初始权重值。在资源共享系统100的架构当中,每一个处理器的用途均不一样,有的处理器专门处理运算,有的只是负责存放不重要的数据,所以每个处理器对权限需求的轻重缓急也不一定相同。故,利用分群的方式,将需要优先处理的处理器分配至在高优先权的组别(例如以群组编号来表示);将较 不紧急以及需求性较低的处理器分配至低优先权的组别,再将此各群组编号转化成一个权重初始值,如表1所示。表1群组编号初始权重值1100295390485580......处理器端所对应的群组的初始权重值会因为不同特性的处理器而相异。例如某些处理器传输数据量较大,所以产生逾时的机率或出现crc错误的机率较高,因此在事先定义初始权重值的阶段,便可降低这一类型群组的初始权重值。目的是让此架构能够因不同处理器而给予适合的判断依据,做出一个适合整个架构的优先权顺序。仲裁者节点120_1向所有处理器120_2~120_n发送夹带有状态诊断码“0x1f”的询问信息,而处理器120_2~120_n在收到此询问信息之后会回传自己的识别信息至仲裁者节点120_1。在此,识别信息例如为固件版本、处理器编号、处理器内部设定、处理器核心数、处理器时脉、处理器种类、处理器用途其中之一或其组合。而仲裁者节点120_1再对照经由已定义的对应表(表2)找出各处理器(包括仲裁者节点)所属的群组编号,并将结果记录下来。表2所示的对应表是以固件版本为例。群组编号1对应至固件版本“25.01.xx”,群组编号2对应至固件版本“23.02.xx”等等。表2群组编号固件版本125.01.xx223.02.xx......n其他接着,在步骤s310中,仲裁者节点120_1获得各处理器(包括仲裁者 节点120_1、处理器120_2~120_n以及共享装置110)的状态诊断信息,并且给予每一个状态诊断码一个对应的状态权重值,如表3所示。由于处理器端在每笔对共享装置110的传输都伴随着状态诊断码,仲裁者端可随时同步处理器端的状态诊断码来作为更新优先权列表或是递补仲裁者端的依据。通过状态诊断码衡量处理器端、仲裁者端、装置端的传输效率。表3状态诊断码状态权重值0x000.00x010.10x020.20x030.30x040.4......0xff0.9例如,仲裁者节点120_1会定时自各处理器120_2~120_n接收其各自所记录的状态诊断信息。举例来说,图4是依照本发明一实施例的汇整状态诊断信息的示意图。请参照图4,在本实施中,仲裁者节点120_1的处理器代号为mpu.a。并且,为求方便说明,仅绘示出处理器120_2~120_5,其处理器代号分别为mpu.b、mpu.c、mpu.d、mpu.e。在诊断码表格150_2~150_5中,代号mpu.a对应的栏位用以记录各处理器120_2~120_5与仲裁者节点120_1之间进行传输所获得的状态诊断码;而代号device对应的栏位用以记录各处理器120_2~120_5与共享装置110之间进行传输所获得的状态诊断码。而仲裁者节点120_1在获得各处理器120_2~120_n的诊断码表格150_2~150_n之后,进行汇整而获得表4。表4所示为仲裁者节点120_1的诊断码表格150_1。在表4中,以诊断码表格150_2为例,将处理器120_2与仲裁者节点120_1之间进行传输所获得的状态诊断码“0x01”及“0x03”记录至诊断码表格150_1的处理器代号mpu.b(对应至处理器120_2)对应的栏位中。以此类推,将其他状态诊断信息中与仲裁者节点120_1(代号 mpu.a)相关的状态诊断码记录至诊断码表格150_1中对应的栏位。另外,由于共享装置110不具备任何判断能力所以无法自行发出状态诊断码,因此,由各处理器与共享装置110进行传输并基于传输状态来给予对应的状态诊断码。即,诊断码表格150_2~150_n中的代号device对应栏位中所记录的状态诊断码是代表共享装置110的状态。故,将诊断码表格150_2~150_n中的代号device对应栏位中所记录的状态诊断码记录至表4中的代号device对应栏位。表4代号状态诊断码mpu.a0x00mpu.b0x01,0x03mpu.c0x02,0x10mpu.d0x02,0x0ampu.e0x02……mpu.y0x02,0x03,0x04,0x0ddevice0x00,0x01在获得表4之后,在步骤s315中,仲裁者节点120_1计算出各处理器120_1~120_n的优先权分数,以建立优先权顺序。即,逐一对每一个处理器,基于其所对应的群组的初始权重值、以及其所包括的状态诊断码的状态权重值,计算出对应的优先权分数,以建立优先权顺序。而计算出各处理器的优先权分数是依据下列公式:priority_w=ini_w×(1+state_total_w)。上述priority_w代表处理器的优先权分数,ini_w代表处理器所对应的群组的初始权重值,state_total_w代表处理器所包括的所有状态权重值的加总。仲裁者节点120_1会搜集所有处理器端的状态诊断码,利用这些状态诊断码对应的状态权重值以及处理器端所对应的群组的初始权重值,来计算出优先权分数。以处理器120_2为例,其代号为mpu.b,群组编号为2。根据表3,群组编号2的初始权重值为95。根据表4,处理器120_2包括状态诊断码“0x01” 及“0x03”,并且根据表3可以得知其状态权重值分别为0.1与0.3。将上述初始权重值95以及状态权重值0.1、0.3代入上述公式可获得处理器120_2的优先权分数133,即,95×(1+(0.1+0.3))=133。以此类推,仲裁者节点120_1可算出每个处理器的优先权分数,并基此来建立优先权顺序,进而获得优先权表格140_1(表5)。在表5中,优先权分数越低,表示对应的处理器的优先权顺序越高;优先权分数越高,表示对应的处理器的优先权顺序越低。之后,由仲裁者节点120_1将优先权表格140_1同步至各个处理器。表5优先权顺序处理器代号优先权分数1mpu.a1002mpu.t1103mpu.g1204mpu.b1335mpu.z1776mpu.c190……nmpu.h245n+1mpu.y255而后,在步骤s320中,当仲裁者节点120_1同时接收到两个或两个以上处理器所传送的申请共享装置110的使用权限的要求时,依据优先权顺序决定由具有高优先权的处理器具有共享装置110的使用权限。以表5的处理器代号mpu.t及mpu.b为例,则由处理器代号mpu.t的处理器获得共享装置110的使用权限。底下再举例来详细说明连线状态诊断的方式。图5是依照本发明一实施例的处理器端的连线状态诊断的流程图。在本实施例中,以处理器120_2欲使用共享装置110来进行说明。在步骤s505中,处理器120_2向仲裁者节点120_1传送申请共享装置110的使用权限的要求。接着,在步骤s510中,处理器120_2基于仲裁者节点120_1的回应来记录对应的状态诊断码。在步骤s515中,处理器120_2根据仲裁者节点120_1的回应来判断是否取得使用权限。若处理器120_2取得使用权限之后,在步骤s520中,处理器120_2便可开始对共享装置110进行数据传输。接着,在步骤s525中,处理器120_2基于传输结果来记录共享装置110对应的状态诊断码。若处理器120_2未取得使用权限,如步骤s530所示,结束此次申请。步骤s505及步骤s510为处理器120_2与仲裁者节点120_1之间的连线状态诊断,可同时参照图2a以及图2b的说明。而在处理器120_2取得使用权限之后的步骤s520及步骤s525为处理器120_2与共享装置110之间的连线状态诊断,可同时参照图2c及图2d的说明。图6是依照本发明一实施例的仲裁者端的连线状态诊断的流程图。在本实施例中,以处理器120_2欲使用共享装置110来进行说明。在步骤s605中,仲裁者节点120_1自处理器120_2接收申请共享装置110的使用权限的要求。接着,在步骤s610中,仲裁者节点120_1解析上述要求而获得对应上述要求的状态诊断码,并记录此状态诊断码。例如,由于仲裁者节点120_1能够接收到处理器120_2所传送的要求,因此,会在诊断码表格140_1中的处理器120_2对应的栏位,记录下状态诊断码“0x00”以表示传输成功。之后,在步骤s615中,仲裁者节点120_1传送申请结果至处理器120_2。在只有处理器120_2发出要求的情况下,仲裁者节点120_1在确认共享装置110的使用权限已被释出之后,则传送允许使用共享装置110的回应以及状态诊断码“0x00”(表示传输成功)至处理器120_2。另一方面,仲裁者节点120_1在确认共享装置110的使用权限尚未被释出之后,则传送不允许使用共享装置110的回应以及状态诊断码“0x00”至处理器120_2。另外,在步骤s610中,倘若仲裁者节点120_1经分析后判断处理器120_2所传送的要求的申请内容的crc有误,则仲裁者节点120_1除了在诊断码表格140_1中的处理器120_2对应的栏位,记录状态诊断码“0x00”(表示传输成功)之外,亦会记录下状态诊断码“0x10”以表示crc错误。并且,在步骤s615中,仲裁者节点120_1会同时将状态诊断码“0x10”以及“0x00”传送至处理器120_2。由上述举例可以知道,可一次传送多个状态诊断码,而不限于一个。另外,倘若有其他处理器同时与处理器120_2发出要求的情况下,仲 裁者节点120_1则依据优先权表格140_1所记录的优先权顺序来决定由何者来取得共享装置110的使用权限。在允许处理器120_2使用共享装置110的情况下,在步骤s620中,仲裁者节点120_1记录处理器120_2回传的状态诊断码。并且,在步骤s625中,仲裁者节点120_1还会依据处理器120_2是否在规定时间内归还使用权限来记录对应的状态诊断码。在不允许处理器120_2使用共享装置110的情况下,如步骤s630所示,结束此次申请。而在判定传送申请权限的要求的处理器具有共享装置110的使用权限之后,仲裁者节点120_1会持续监控传送上述要求的处理器是否在规定时间内归还共享装置110的使用权限。并且,仲裁者节点120_1依据处理器是否在规定时间内归还共享装置110的使用权限来记录对应的状态诊断码。通过上述连线状态诊断的方式,可以全面地监控仲裁者端、处理器端、装置端,因此可以在问题发生之前进行仲裁者的递补或是其他应变措施。并且,仲裁者端每隔一段时间即会同步所有处理器端的状态诊断码,并且在同步之后重新计算各处理器的优先权分数以重新产生的优先权顺序,并且将重新产生的优先权顺序更新给各处理器。而当仲裁者节点对应的优先权分数超过预设的门槛值,则取消现有的仲裁者节点的资格,并以优先权分数最低的处理器来作为新的仲裁者节点。仲裁者节点除了一般使用情况(例如仲裁者节点被关机,或是失去心跳(heartbeat)封包)需要递补仲裁者节点之外,如果能在仲裁者节点失去仲裁能力之前就能检测出来,提早更换仲裁者,这才是一个稳健可靠的系统重要的指标。因此,当优先权表格中仲裁者节点的优先权分数不符合标准时,便会启动仲裁者递补机制,由优先权表格中优先权分数最低的处理器递补为新的仲裁者节点。图7是依照本发明一实施例的仲裁者递补机制的示意图。在本实施例中,假设原本的仲裁者节点为mpu.a,预设的门槛值为150。如图7所示,原本的仲裁者节点mpu.a的优先权分数已经超过150,故,仲裁者节点mpu.a会启动仲裁者递补机制,而以优先权表格中优先权分数最低的处理器mpu.b来作为新的仲裁者节点。又,优先权分数亦可作为启动错误通报机制的依据。例如,当处理器 或共享装置的优先权分数超过定义的标准阀值,就会启动错误通报机制,来停止对共享装置进行传输或者停止继续使用处理器,直到使用者或维护人员做状况排除。在新的仲裁者节点接手之后,对于后续的优先权分数的计算具有下列几种方式。底下以处理器mpu.a作为前一个仲裁者节点,处理器mpu.b作为新的仲裁者节点来进行说明,然,并不以此为限。新的仲裁者节点mpu.b可以重新设定优先权表格,即,不接续前一个仲裁者节点mpu.a所获得的优先权分数,而重新计算其他各处理器的优先权分数。另外,新的仲裁者节点mpu.b可沿用前一个仲裁者节点mpu.a所建立的优先权表格,以前一个仲裁者节点mpu.a所获得的各处理器的优先权分数来作为初始权重值,并接续计算后续的优先权分数。即,新的仲裁者节点mpu.b可将经由前一个仲裁者节点mpu.a计算而获得的各处理器的优先权分数,设定为初始权重值。之后,沿用公式priority_w=ini_w×(1+state_total_w)来持续获得状态诊断码,进而更新优先权分数。将先前获得的优先权分数设定为初始权重值的目的在于:可以掌握先前系统架构上的使用状态。而倘若其中一处理器(例如为处理器mpu.g)的优先权分数持续上升而超过定义的标准阀值(例如1000)时,仲裁者节点mpu.b会发送一通知信息来通报使用者,以由使用者来排除处理器mpu.g的问题。在状况排除后,由已排除问题的处理器mpu.g来发送一重置指令(例如,重置指令所包括的状态诊断码为0x20)给仲裁者节点mpu.b,使得仲裁者节点mpu.b清除处理器mpu.g旧有的优先权分数,并且以处理器mpu.g的识别信息来设定初始权重值(参照步骤s305的记载),以重新计算优先权分数。又,当对整个系统进行维修,而修复完全部分有问题的处理器、共享装置之后,使用者可直接对仲裁者节点mpu.b来下达一清空指令(例如,清空指令所包括的状态诊断码为0x21),以将优先权表格以及诊断码表格清空。另外,可针对允许使用共享装置以及不允许使用共享装置两种状况,分别设定对应的状态诊断码。例如,允许使用共享装置的状况对应的状态 诊断码为0x06,不允许使用共享装置的状况对应的状态诊断码为0x07。在仲裁者节点判定允许传送要求的处理器使用共享装置时,可在其自己的诊断码表格对应的处理器栏位中记录0x06,而在判定不允许时记录0x07。并且,进一步通过微调状态诊断码0x06与0x07对应的状态权重值,解决饥饿(starvation)现象。例如,将状态诊断码0x06的状态权重值设定为0.01,而状态诊断码0x07的状态权重值设定0,据此,在计算优先权分数时仲裁者节点会基于状态诊断码0x06的状态权重值,而将多次取得共享装置的使用权限的处理器的优先权分数提高。这是因为,在成功取得共享装置的使用权限的处理器相对会记录有较多的0x06,因此在计算优先权分数时会提高状态权重值的加总后的数值,使得优先权分数提高。据此,让其他处理器亦能够取得共享装置的使用权限。另外,在取得各处理器在经由连线状态诊断后所获得的状态诊断信息之前,当仲裁者节点同时接收到两个或两个以上处理器各自所传送欲使用共享装置的要求时,以各处理器的初始权重值来决定共享装置的使用权限。综上所述,利用每个处理器分别与仲裁者节点及共享装置之间的传输状态,并且配合各个处理器的特性来决定优先权顺序,可避免在多个处理器同时进行存取而发生竞争进而导致数据不完整,并且解决了存取效率与递补优先顺序的问题。依照每一个处理器的不同,来微调优先权的判断机制,再配合连线诊断机制来获得一个适当的优先权顺序。由优先权顺序作为各种冲突、问题、递补等机制的依据,让仲裁者端达到真正的公平而且适当的资源分配。由于对每笔传输做连线状态诊断,而获得状态诊断码,藉此掌握了每一个处理器与共享装置之间的传输状态。当维修人员进行维护时,可参照状态诊断码来获得问题发生点,以便进行状况排除。虽然本发明已以实施例公开如上,然其并非用以限定本发明,任何所属
技术领域
中技术人员,在不脱离本发明的精神和范围内,当可作些许的变动与润饰,故本发明的保护范围当视所附的权利要求所界定者为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1