CN108415860A - 在总线队列之间分配主设备任务 - Google Patents
在总线队列之间分配主设备任务 Download PDFInfo
- Publication number
- CN108415860A CN108415860A CN201810053338.1A CN201810053338A CN108415860A CN 108415860 A CN108415860 A CN 108415860A CN 201810053338 A CN201810053338 A CN 201810053338A CN 108415860 A CN108415860 A CN 108415860A
- Authority
- CN
- China
- Prior art keywords
- task
- bus
- queue
- main equipment
- instruction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1642—Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/366—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using a centralised polling arbiter
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2002—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant
- G06F11/2007—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where interconnections or communication control functionality are redundant using redundant communication media
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
- G06F13/4031—Coupling between buses using bus bridges with arbitration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Bus Control (AREA)
Abstract
示例包括在总线队列之间分配主设备任务。一些示例包括在多个总线队列之间分配主设备的多个任务,每个总线队列用于计算***的多条总线中的相应一条总线,选择用于在总线队列中的一个总线队列的前端处的任务的仲裁超时时间,并且从总线仲裁器请求对总线中的一条总线的访问权。
Description
背景技术
计算***可以包括总线,诸如内部集成电路(I2C)总线或双线接口(TWI)总线,用于连接计算***内部的不同设备。在这样的示例中,发起设备(本文中可被称为“主”设备)可以使用总线与另一设备(本文中可被称为“从”设备)通信,以执行用于计算***的任务。在一些示例中,多个主设备可以连接到相同的总线,一个主设备能够在给定的时间使用该总线。在这样的示例中,可以使用总线仲裁器在主设备之间仲裁对总线的访问。
附图说明
下面的具体描述参考附图,其中:
图1是包括用于在计算***的相应总线的多个总线队列之间分配任务的主设备的示例计算***的框图;
图2是包括用于在计算***的相应总线的总线队列之间分配任务的多个主设备的示例计算***的框图;
图3是包括在计算***的相应总线的多个总线队列之间分配主设备任务的计算***的示例方法的流程图;并且
图4是包括请求用于主设备的总线队列的前端处的任务的总线访问权的计算***的示例方法的流程图。
具体实施方式
如上所述,在一些示例中,可以使用总线仲裁器在具有对计算机***中的总线的访问权(access)的多个主设备之间仲裁对总线的访问权。在这样的示例中,对于每个主设备,在访问总线之前,主设备向总线仲裁器提供请求来请求对总线的访问权,并且然后等待总线仲裁器是否授予它对总线的访问权。在这样的示例中,主设备可以等待来自总线仲裁器的应答预定长度的时间(本文中可被称为“仲裁超时时间”)。如果主设备在作出请求后在仲裁超时时间内没有收到来自总线仲裁器的对总线的访问权,则然后主设备可以确定它没有获得对总线的访问权。
在一些示例中,仲裁超时时间可被设置为足够大的值,以允许足够的时间让当前正在使用总线的任何其他主设备在请求的时候完成其事务,使得总线仲裁器然后可以在仲裁超时时间失效(lapse)之前将访问权给与正在请求的主设备。在这样的示例中,仲裁超时时间可以被设置为固定时间,该固定时间为基于或者近似于任何主设备完成涉及总线的事务可能花费的最坏情况的时间。然而,这可能会导致主设备在请求对总线的访问权之后空闲等待长时间段。
为了解决这些问题,在本文描述的示例中,计算***的主设备可以执行涉及总线访问的任务,并且在各个总线队列之间分配这些任务,各个总线队列中的每个专用于存储用于计算***中的不同总线的任务。示例可进一步包括基于任务的属性选择用于每个任务的合适的仲裁超时时间,并且从总线队列中的一个总线队列移动到下一个总线队列,每当相应的队列被访问时开始处理在每个总线队列的前端处的任务。在这样的示例中,当所选择的用于在总线队列中的一个总线队列的前端处的任务的仲裁超时时间失效,而主设备没有接收到用于该任务的对总线的访问权的请求时,则主设备然后可以暂停处理该总线队列中的任务,并且移动到下一总线队列。
例如,主设备可以在多个总线队列之间分配任务,每个总线队列用于计算机***中的总线中的相应一条。在分配之后,主设备开始处理在第一总线队列的前端处的第一任务,并基于第一任务的属性选择用于第一任务的第一仲裁超时时间。主设备然后可以针对第一任务从总线仲裁器请求对第一总线的访问权。响应于确定所选择的第一仲裁超时时间已经失效而主设备没有从总线仲裁器接收到对第一总线的所请求的访问权,主设备可以暂停处理第一总线队列中的任何任务,并且开始处理在第二总线队列(用于第二总线)的前端处的第二任务,选择用于第二任务的第二仲裁超时时间,并且针对第二任务从总线仲裁器请求对第二总线的访问权。
以这种方式,在本文描述的示例中,当给定的主设备请求由另一主设备正在使用的(即,忙碌的)第一总线时,给定的主设备可跳转到具有用于另一总线的任务的另一队列,并尝试获取对另一总线的访问权,而不是为了对当前正在使用的第一总线的访问权而空闲地等待长时间(例如,基于最坏情况的超时时间段)。这样的示例可具有积极的结果,因为另一总线不被占用第一总线的同一主设备占用,所以如果第一总线忙碌,则另一总线也忙碌的可能性较小。此外,在总线数量多于主设备的示例中,在任意给定的时刻,总线中的至少一条可以是空闲的。这样的示例可以通过尝试并行使用不同的总线,来提高总线利用率,通过尝试查找可用的总线来使用而不是长时间等待忙碌的总线,来减少主设备的等待时间。以这种方式,本文描述的示例可以避免计算***的总线和计算***的主设备两者中的空闲时间段。
现在参考附图,图1是包括在用于计算***100的各个总线的多个总线队列之间分配任务的主设备102的示例计算***100的框图。在图1的示例中,计算***100可以由至少一个计算设备来实现。在一些示例中,计算***100可以是(或可被包含在)储存箱体,用于存放和管理存储驱动器(或其他存储设备)。在一些示例中,包括或实现计算***100的储存箱体可以是一存储阵列的储存箱体,该储存箱体用于存放多个存储驱动器(例如,硬盘驱动器(HDD)、固态驱动器(SSD)或它们的组合)和阵列控制器,该阵列控制器用于管理在一起作为存储阵列(例如,在阵列控制器的控制下作为存储阵列)的多个存储驱动器的利用。
在图1的示例中,计算***100可以包括由主设备102可用的多条总线(例如,I2C总线或TWI总线)。主设备102可以直接或间接(例如,通过多路转接器等)连接到多条总线,使得主设备102能够通过总线与连接到总线的其他设备(例如,从设备)通信。多条总线可以包括第一总线130和第二总线132,并且主设备102可以连接到如上所述的第一总线130和第二总线132中的每条总线。
在本文描述的示例中,主设备可以是用于作为主设备进行操作的任何合适的计算设备,该操作包括使用计算***的总线与连接到这些总线的从设备通信。例如,主设备可以包括一个或多个集成电路,以实现本文描述的功能。在一些示例中,本文的主设备可以是微控制器。在一些示例中,本文的主设备可以是单线程的(例如,利用执行的单个处理线程)。
在图1的示例中,主设备102可以是微处理器或连接到计算***100的总线(例如,总线130、132等)以与连接到这些总线的从设备通信的其他计算设备。主设备102可以包括至少一个处理资源110和至少一个机器可读存储介质120,该至少一个机器可读存储介质120包括(例如,编码有)指令121,指令121由至少一个处理资源110可执行以实现本文关于图1描述的功能。如图1所示,指令121可以至少包括指令122、124、126和128。在一些示例中,指令121(至少包括指令122、124、126和128)可以实现用于主设备102的总线调度器。
在本文描述的示例中,由主设备102可使用的多条总线(例如,包括总线130和132)中的每条每次可由计算***100的一个主设备使用。在这样的示例中,计算***100的总线仲裁器可以在计算***100的主设备之间进行仲裁,以实现每次一条的总线访问策略。例如,计算***100可以包括用于执行仲裁的总线仲裁器135。总线仲裁器135可以由硬件组件(例如,电子电路)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)等实现,或者由任何其他合适的组件实现。在一些示例中,总线仲裁器135可以通过通信信道(例如,迹线(trace)、导线等)与主设备102和计算***100的其他主设备通信,该通信信道与在其上主设备可与从设备通信的总线分离。在这样的示例中,主设备可以与总线仲裁器135进行带外通信(即,通过除了总线以外的通道)。
在本文描述的示例中,每个主设备能够独立地从总线仲裁器135请求对指定总线的访问权,并且总线仲裁器135能够决定是否授权每个接收的请求(例如,基于所请求的总线是否空闲、基于接收的其他请求等)。响应于来自主设备的请求,总线仲裁器能够决定是否授权该请求,并(在适当时)向正在请求的主设备提供授予对所请求的总线的总线访问权(或锁定)的响应。在一些示例中,总线仲裁器能够(在适当时)提供指示主设备没有被授予对所请求的总线的访问权(或锁定)的响应。这些响应的形式可以采用任何合适的形式(例如,用于授予锁定总线的令牌等)。
在图1的示例中,主设备102可以包括任务列表140,任务列表140用于存储每个要使用计算***100的总线中的一条(例如,总线130、132等)来执行的任务。在一些示例中,任务列表140可以被存储在主设备102的存储器中,诸如,在存储介质120上或者在主设备102的至少一个其他机器可读存储介质中。主设备102(例如,指令121和/或由处理资源110执行的存储介质120的其他指令)可以存储任务列表140中要被执行的任务。例如,主设备102可以在任务列表140中存储用于从计算***100的相应从设备读取、写入到计算***100的相应从设备、或访问计算***100的相应从设备或在计算***100的相应从设备上执行任何操作的各种任务。在一些示例中,主设备102可以从计算***100的另一组件接收请求,以执行涉及访问从设备的任务,并且主设备可以在任务列表140中存储用于这样的请求的相应任务。在一些示例中,主设备102可以在主设备102的引导时间在任务列表140中存储多个任务。本文描述的示例中,从设备可以包括主设备102可通过计算***的总线(例如,I2C或TWI总线)访问的计算***的任何设备。从设备的一些示例可以包括温度传感器、NVRAM存储设备、电源、风扇模块、机架传感器(例如,存储器)、压力传感器、或任何其他合适的设备(例如,存储器、传感器等)。在这样的示例中,任务列表140的任务可以包括基于所涉及的从设备的类型的各种不同类型的任务,诸如从温度传感器从设备读取温度值,或者在另一类型的从设备中设置实时时钟。
在图1的示例中,主设备102可以包括多个总线队列,每个总线队列用于可由主设备102用来与计算***100中的从设备通信的总线中的相应一条。例如,在图1的示例中,由主设备102可用的计算***100的总线可以包括第一总线130和第二总线132,并且主设备102可以包括用于第一总线130的第一总线队列150和用于第二总线132的第二总线队列152。在本文描述的示例中,“用于”给定总线的总线队列可以是专用于专门地存储要在给定总线上被执行的任务的总线队列。例如,总线队列150可专用于专门地存储要在相应总线130上被执行的任务,并且总线队列152可专用于专门地存储要在相应总线132上被执行的任务。为了说明目的,图1的示例分别示出了两条总线130和132以及用于这两条总线的主设备102的两个总线队列。然而,在其他示例中,如上所述,计算***100可以包括由主设备102可使用的多于两条的总线,并且在这样的示例中,主设备可以包括用于这些总线中的每条总线的不同的各个总线队列(例如,用于四条总线的四个总线队列、用于五条总线的五个总线队列等)。在一些示例中,总线队列中的每个总线队列可以被存储在主设备102的存储器中,诸如,在存储介质120上或者在主设备102的至少一个其他机器可读存储介质中。总线队列中的每个总线队列可以通过合适的数据结构(例如,先进先出(FIFO)数据结构)来实现,并且当不为空时,总线队列可具有在该队列的前端处的任务,该任务为要从该队列中移除的下一任务。如下所述,可以对总线队列中的任务进行排序。
在本文描述的示例中,任务可以通过任意合适的数据结构来实现,并且可以包括至少一个命令(诸如,可用于使任务被执行的代码或其他机器可读信息)和多个属性。例如,在图1的示例中,主设备102可以在任务列表140中存储包括至少一个命令和属性171的任务160以及包括至少一个命令和属性173的任务162。尽管出于说明的目的在任务列表140中示出了两个任务,但是任务列表140可以包括多于两个的任务(例如,任意合适数量的任务)。
在本文描述的示例中,任务的属性可以包括例如总线标识符、状态、等待时间、优先级、重试状态、任务类型或它们的任意组合。任务的总线标识符属性可以指示哪条总线将被用于执行任务(例如,哪条总线可用于与合适的从设备通信以执行任务)。任务的状态属性可以指示任务是否准备好被分配到总线队列进行处理。例如,状态属性可以是“等待”值(即,本文的“等待状态”)或“就绪”值(即,本文的“就绪状态”)中的任一个,“等待”值指示任务当前没准备好被分配到总线队列并由主设备使用总线进行处理,“就绪”值指示任务当前已准备好被分配到总线队列并由主设备使用总线进行处理。任务的等待时间属性可以指示直到任务准备好从等待状态转变为就绪状态以进行分配并进行处理的时间的量。优先级属性可以指示任务的相对优先级。例如,优先级属性可以具有“高”优先级值或“低”优先级值(或任意其他合适数量的相对优先级值)。重试状态属性可以指示针对任务从总线仲裁器请求合适的总线的次数(例如,0或更多),其中针对该请求主设备没有接收到用于任务的对总线的访问权。任务类型属性可以指示任务是否为周期性任务(按照一定周期重复执行)、一次尝试任务(尝试当前单个调度周期,并且如果不成功则不重新调度)或者一次完成任务(重新尝试,直至成功完成)。周期性任务可以进一步具有周期性时间属性,该周期性时间属性指示任务多久被调度一次(例如,每500毫秒(ms)或任意其他合适的时间)以用于执行。
作为示例,指令122可以设置任务的属性,作为在任务列表140中存储任务的过程的一部分。例如,指令122可以在任务列表140中存储具有属性171的任务160,属性171包括指示等待状态、200ms的等待时间、高优先级、0的重试状态、周期性任务类型以及500ms的周期的属性。作为另一示例,指令122可以在任务列表140中存储具有属性173的任务162,属性173包括指示等待状态、200ms的等待时间、低优先级、0的重试状态以及一次尝试任务类型的属性。
指令122可以基于自等待时间属性的上次刷新以来过去的时间,周期性地调整或刷新主设备102的任务列表140中的每个任务的等待时间属性。例如,当指令122调整等待时间时,指令122可以确定自从上次调整以来已经过去100ms,并且相应地将每个等待时间减少100ms。在上面的示例中,将给予任务160和162中的每个任务100ms的新的等待时间属性。由于等待时间仍大于0,因此指令122可以确定,针对任务160和162中的任一个任务,不将等待状态改变为就绪状态。在下一次周期性调整时,指令122可以基于过去的时间再次调整等待时间属性,如上所述。例如,指令122可以通过将等待时间再次减少100ms来调整等待时间,从而将任务160和162的等待时间调整为0。在这样的示例中,指令122可以检测到任务160和162的等待时间为0,并且作为响应,指令122可以针对任务160和162中的每个任务,将任务状态从等待状态改变为就绪状态。指令122可以针对任务列表140中的任何其他任务同样地更新等待时间并改变状态。
在上述示例中,在调整之后,指令122可以确定任务列表140的多个任务中的每个任务具有指示任务当前准备好被分配到总线队列并进行处理的属性(例如,可以具有指示就绪状态的状态属性)。响应于该确定,指令122可以在主设备102的多个总线队列之间分配主设备的多个任务。在一些示例中,任务列表140的其他任务可以不具有指示它们准备好被分配并进行处理的属性(例如,具有等待状态属性而不是就绪状态属性),并且指令122可以将这些任务留在任务列表140中,而不是在具有确定的多个任务(例如,具有就绪状态属性)的总线队列之间分配它们。
在一些示例中,为了分配任务列表140的所确定的多个任务,指令122可以从任务列表140中移除任务中的每一个,并基于任务的总线标识符属性将任务存储在合适的总线队列中。例如,对于所确定的多个任务中的每个任务,指令122可以访问该任务的总线标识符属性,从任务列表140中移除该任务,并且将该任务***到用于由总线标识符属性指示的总线的总线队列中。继续上述示例,其中图1的任务160和162被确定为准备好被分配,指令122可以确定任务160的属性171包括指示第一总线130的总线标识符。作为响应,指令122可以将任务160存储在用于第一总线130的第一总线队列150中,如图1所示。指令122可以确定任务162的属性173包括指示第二总线132的总线标识符,并且作为响应,可以将任务162存储在用于第一总线132的第二总线队列152中,如图1所示。尽管为了说明的目的,本文已经关于图1描述了在两个总线队列之间分配两个任务,但是任务列表140的多于两个的任务可以在两个或更多个总线队列之间如上所述被分配。
在一些示例中,在总线队列之间分配多个任务之后,并且在开始处理分配到总线队列任务的任何任务之前,指令122可以对总线队列中的每个总线队列中的任务进行排序。例如,对于多个任务中的任何任务已经被分配到其中的总线队列中的每个总线队列,指令122可以基于任务的相应优先级属性,对分配到该相应总线队列的任务进行排序。例如,指令122可以对分配到第一总线队列150的任务进行排序,使得具有高优先级属性的任何任务出现在该总线队列的具有低优先级属性的任何任务之前(即,更靠近该总线队列的前端)。指令122可以在分配之后对总线队列中的每个总线队列执行类似的排序,并且当使用其他优先级属性值时,指令122可以进行排序,使得具有较高优先级的任务比具有较低优先级值的任务更靠近前端。
在分配和排序之后,指令121可以在限定的序列中对主设备102的所有总线队列迭代多次,依次访问每个总线队列,并且在每个非空总线队列处,针对在总线队列的前端处的任务从总线仲裁器135请求对合适的总线的访问权。在这样的示例中,当总线访问权被授予时,指令121可以使任务被执行,并且然后从总线队列中被移除,从而将该总线队列中的另一任务(如果有的话)推到该总线队列的前端。在移除任务之后,指令121可以前进到访问在序列中的下一总线队列。此外,在按顺序迭代访问总线队列的这样的示例中,当主设备102在所选择的用于任务的仲裁超时时间内,未能获得用于在所访问的总线队列的前端处的任务的所请求的总线访问权时(如下所述),那么指令121可以暂停处理该总线队列中的所有任务,并且前进到访问在序列中的下一队列。在一些示例中,指令121可以在限定的序列中对总线队列迭代任意合适的次数(例如,预定数量的次数)。迭代可以包括指令121在从序列中的最后一个总线队列到序列中的第一个总线队列的循环中前进(当总循环的数量没有完成时)。下面进一步详细描述上述过程的方面。
例如,如上所述,在总线队列之间分配任务以及对各个总线队列中的任务进行排序之后,指令124可以访问第一总线队列150,并且开始处理在第一总线队列150的前端151处的第一任务160。在这样的示例中,开始处理第一任务160可以包括基于第一任务的属性171选择用于第一任务160的第一仲裁超时时间。
在本文描述的示例中,仲裁超时时间可以是主设备从总线仲裁器接收响应可以等待的预定量的时间,该响应是响应于从主设备到总线仲裁器的对用于给定任务的总线的访问权的请求而授予对总线的访问权的响应。仲裁超时时间可以是在停止处理给定任务并继续前进以访问不包括给定任务的另一总线队列之前,主设备可以等待用于给定任务的所请求的访问权的时间量。在一些示例中,仲裁超时时间可以限定主设备在单个总线访问权请求之后并且在开始任务本身的实体(substance)之前(即,仲裁超时时间不是用于完成任务本身实体的超时时间)通过单个总线访问请求等待总线仲裁器授予所请求的总线访问权的时间量。在本文描述的示例中,在针对给定任务从总线仲裁器请求对总线的访问权之后,主设备可以等待仲裁超时时间以被授予所请求的总线访问权,而不处理任何其他任务或者做除了监视自总线访问权请求以来仲裁超时时间的失效以外的其他工作。在一些示例中,被授予对总线的访问权可以被称为获得关于总线的锁。
在其他示例中,当用于单个任务的一个或多个针对总线的请求从一个主设备提供到总线仲裁器时,仲裁超时时间可以限定主设备等待总线仲裁器针对单个任务授予所请求的总线访问权的时间量。例如,总线仲裁器能提供拒绝所请求的总线访问权的响应。在这样的示例中,主设备(例如,主设备102的指令126)可以响应于拒绝并且在从第一请求的时间开始经过仲裁超时时间之前,再次从总线仲裁器请求总线。在一些示例中,主设备(例如,主设备102的指令126)可以响应于拒绝并且在从第一请求的时间开始经过仲裁超时时间之前,请求总线两次或更多次。在这样的示例中,主设备可以在从针对任务的第一次请求开始经过仲裁超时时间之后(不管用于任务的多少个请求被提供到总线仲裁器),停止等待被授予访问权。
回到图1的示例,如上所述,指令124可以开始处理在第一总线队列150的前端151处的第一任务160,基于第一任务的属性171选择用于第一任务160的第一仲裁超时时间。也就是说,处理第一任务160可以包括选择用于第一任务160的仲裁超时时间的指令124。在一些示例中,较大的仲裁超时时间可以提供接收对总线的访问权的更大的机会,但是也可能增加等待所花费的时间,在等待所花费的时间中其他任务没有被执行。这样,在本文描述的示例中,指令124可以基于任务的属性选择用于任务的合适的仲裁超时时间。在本文描述的示例中,指令124可以基于给定任务的优先级属性、(在选择时)给定任务的重试状态属性、或它们的组合,来选择用于给定任务的仲裁超时时间。例如,指令124可以具有一组预定仲裁超时时间,该组预定仲裁超时时间可以基于这些属性的某些组合被选择。
例如,对于具有低优先级属性和0的重试状态的任务(指示自该任务上次被分配到总线队列以来,为了获得用于该任务的总线访问权0次尝试已经失败),指令124可以为该任务选择相对低的仲裁超时时间,诸如10ms。指令124可以在预定超时时间中选择最短的仲裁超时时间,用于具有0次重试的低优先级的任务。在这样的示例中,对于具有高优先级属性和0的重试状态的任务,指令124可以为该任务选择较长的仲裁超时时间(例如25ms),可以长于用于具有0的重试状态的低优先级任务的仲裁超时时间,但短于具有大于0的重试状态的任务。
在一些示例中,任务的重试状态越大,指令124可以选择用于该任务的仲裁超时时间就越长。例如,对于具有1的重试状态的任务,指令124可以选择100ms的仲裁超时时间,并且对于具有2的重试状态的任务,指令124可以选择1秒的仲裁超时时间,等等。在一些示例中,当重试状态在0以上时,指令124可以基于优先级属性选择不同的仲裁超时时间,或者当重试状态大于0时,指令124可以仅仅基于重试状态(不考虑优先级属性)选择仲裁超时时间。尽管为了说明的目的本文已经描述了各种示例,但是指令124可以以任何合适的方式基于任务的属性为任务选择仲裁超时时间。
回到图1的示例,如上所述,指令124可以开始处理第一任务160,包括指令124用于基于第一任务160的属性171选择用于第一任务160的第一仲裁超时时间。在上述示例中,属性171可以包括高的优先级、0的重试状态,并且因此,指令124可以基于这些属性为第一任务160选择25ms的第一仲裁超时时间(或者在其他示例中,基于属性171的任何其他合适的仲裁超时时间)。
在指令124为第一任务160选择第一仲裁超时时间之后,指令126可以从总线仲裁器135请求182对第一总线130的访问权。如上所述,主设备102然后可以等待来自总线仲裁器135的对请求的响应,并且指令126可以在所选择的第一仲裁超时时间(例如,25ms)失效之前,监视在请求之后所请求的访问权是否被授予主设备102。在一些示例中,主设备102可以等待所请求的访问权被授予,而不处理任何其他任务或者做除了监视自总线访问权请求以来仲裁超时时间的流逝以外的其他工作(或者如上所述,响应于拒绝,发送用于总线的附加请求)。在本文描述的示例中,确定所选择的第一仲裁超时时间已经失效而主设备没有从总线仲裁器接收到对第一总线的访问权可以包括:在单个请求之后(例如,总线仲裁器没有明确的拒绝访问权)或者在从针对总线的第一次请求开始在所选择的同一第一仲裁超时时间内针对同一任务的多个请求之后(例如,响应于来自总线仲裁器的明确拒绝),确定所选择的第一仲裁超时时间已经失效而主设备没有从总线仲裁器接收到对第一总线的访问权。
在一些示例中,第一总线130可能是忙碌的,例如,正在被计算***100的在主设备102的请求182之前被授予访问权的另一主设备使用。在一些示例中,第一总线130可以在请求182之后保持忙碌达第一仲裁超时时间的时长。在这样的示例中,指令126可以确定所选择的第一仲裁超时时间(例如,25ms)已经失效(例如,自请求182的时间以来)而主设备102没有从总线仲裁器135接收到对第一总线130的访问权。
在这样的示例中,响应于确定所选择的第一仲裁超时时间已经失效而主设备102没有从总线仲裁器135接收到对第一总线130的访问权,指令128可以改变第一任务130的属性171,暂停处理在第一总线队列150中的包括任务160的任何任务,并且访问总线队列中的另一个。此外,响应于该确定,指令124可以开始处理在另一总线队列的前端处的任务。
例如,响应于确定所选择的第一仲裁超时时间已经失效而主设备102没有从总线仲裁器135接收到对第一总线130的请求访问权,指令128可以改变第一任务130的属性171,使得主设备102在第一任务130再次被主设备102处理时(例如,在经过总线队列的序列的下一循环上)为第一任务130选择不同的仲裁超时时间。例如,指令128可以将属性171的重试状态从0改变为1(指示自该任务上次被分配到总线队列以来,为了获得针对该任务的总线访问权1次尝试已经失败),使得当指令124随后再次开始处理任务160时,改变的属性可以使指令124为任务160选择不同的仲裁时间(例如,根据上述示例的100ms)。
此外,响应于确定所选择的第一仲裁超时时间已经失效而主设备102没有从总线仲裁器135接收到对第一总线130的请求访问权(并且在一些示例中改变属性之后),指令128可以暂停处理第一总线队列150中的任何任务,包括暂停第一任务160。在本文描述的示例中,暂停处理给定总线队列中的任何任务可以包括:停止请求或等待被授予对给定总线队列专用的总线的访问权。例如,在图1的示例中,响应于该确定,指令121将不会针对第一任务160或针对第一总线队列150中的任何其他任务再次立即请求对第一总线130的访问权,并且指令121也不会立即开始处理总线队列150中的另一任务(例如,包括选择仲裁超时时间)。相反,指令128可以暂停处理总线队列150中的所有任务(如上所述),并且然后访问主设备102的另一总线队列。
例如,响应于确定所选择的第一仲裁超时时间已经失效而主设备102没有从总线仲裁器135接收到对第一总线130的请求访问权,指令128可以访问总线队列中的另一个,并且指令124可以开始处理在另一总线队列的前端处的任务(如果存在另一总线队列的前端处任务)。例如,响应于该确定,指令128可以访问第二总线队列152,第二总线队列152专用于第二总线132并且至少包括在总线队列152的前端处的第二任务162。在这样的示例中,指令124然后可以开始处理在第二总线队列152的前端处的第二任务162,其中开始处理可以包括:基于第二任务162的属性173选择用于第二任务162的第二仲裁超时时间的指令124,如上所述。在上述示例中,属性173可以包括低的优先级、0的重试状态,并且因此,指令124可以基于这些属性选择用于第二任务162的10ms的第二仲裁超时时间(或者在其他示例中,基于属性173的任何其他合适的仲裁超时时间)。在这样的示例中,如上所述,基于第一任务160和第二任务162不同的属性,为第一任务160选择的第一仲裁超时时间可以不同于为第二任务162选择的第二仲裁超时时间。在其他示例中,第一仲裁超时时间和第二仲裁超时时间可以相同(例如,在它们各自的优先级和重试状态属性相同的情况下)。
如上所述,指令121可以在限定的序列中对主设备102的所有总线队列迭代多次,依次访问每个总线队列,并且在每个总线队列处,开始处理在总线队列的前端处的任务。在图1的示例中,总线队列的序列可以包括第一总线队列150,随后是第二总线队列152,并且然后接着是主设备102的任何其他总线队列的序列。
在这样的示例中,在迭代地访问主设备102的总线队列中的每个总线队列之后(即,用于开始处理在各个队列的前端处的任何各个任务),指令124可以返回访问第一总线队列150。在上述示例中,其中在第一仲裁超时时间内没有获得用于任务160的总线访问权,当指令124返回访问第一总线队列150时,指令124可以返回并且重新开始处理第一任务160,并基于第一任务160的改变的属性171选择用于第一任务160的第三仲裁超时时间。在一些示例中,第三仲裁超时时间可以大于先前为第一任务160选择的第一仲裁超时时间。例如,改变的属性171可以包括1的重试状态,如上所述,并且因此,指令124可以选择100ms的第三仲裁超时时间(根据上述示例)。
如上所述,指令121可以通过总线队列的序列执行多个循环,迭代地访问每个总线队列,并且在每个被访问的总线队列处,开始处理在总线队列的前端处的任务(如果有的话),如上所述。在多个循环(其可以是预定阈值数量的循环)之后,总线队列中的一些或全部可以是空的,它们的所有任务通过上述指令121的处理已经被移除。然而,在一些示例中,在多个循环结束时,来自任务列表140的任务可以留在总线队列中的一些或全部中。
例如,在一个示例中,其中指令121执行预定阈值数量的循环,在对主设备102的总线队列中的每个总线队列迭代地访问阈值数量的次数之后,对于总线队列中的每个总线队列,指令122可以从总线队列中移除留在总线队列中的每个任务。在一些示例中,根据任务的任务类型属性,任务可以被丢弃,或者任务可以被返回到任务列表140。例如,对于留在总线队列中的任何总线队列中的每个任务,在任务的属性指示该任务是周期性任务或一次完成任务时,指令122可以将任务返回到任务列表140,并且在任务的属性指示该任务是一次尝试任务时,指令122可以将任务从队列中移除而不将任务返回到任务列表140。在一些示例中,当从总线队列中移除的任务未完成时,指令122可以记录或报告与未完成的任务有关的错误。
例如,当任务的属性指示该任务是周期性任务时,指令122可以将该任务返回到任务列表140,并将其状态设置为等待状态,并将其等待时间设置为等于该任务的周期性时间属性。对于周期性任务,如上所述,当任务成功完成时,指令122也可以将具有改变的属性的任务返回到任务列表140。在一些示例中,当任务的属性指示该任务是一次完成任务时,指令122可以将该任务返回到任务列表140,并将其状态设置为等待状态,并将其等待时间设置为等于该任务的周期性时间属性(或以任何其他的方式将等待时间设置为任何其他合适的时间)。在一些示例中,当一次完成任务成功完成时,指令121可以将该任务从它的总线队列中移除并丢弃它。在一些示例中,当任务的属性指示该任务是一次尝试任务时,在阈值数量的迭代结束时,指令122可以将该任务从总线队列中移除并丢弃该任务而不将该任务返回到任务列表140。对于一次尝试任务,如果该任务被成功完成,指令122也可以将该任务从总线队列中移除并丢弃它。
如本文所使用的,“计算设备”可以是控制器、微控制器、集成电路、服务器、箱体(例如,存储箱体)、台式或膝上型计算机、交换机、路由器,或包括处理资源的任何其他处理设备或装置。在本文描述的示例中,处理资源可以包括例如包含在单个计算设备中或跨多个计算设备分布的一个处理器或多个处理器。如本文使用的,“处理器”可以是中央处理单元(CPU)、基于半导体的微处理器、图形处理单元(GPU)、被配置为取得并执行指令的现场可编程门阵列(FPGA)、适合于取得并执行在机器可读存储介质上存储的指令的其它电子电路、或它们的组合中的至少一个。在本文描述的示例中,该至少一个处理资源110可以取得、解码和执行在存储介质120上存储的指令,以执行与在存储介质120上存储的指令有关的上述功能。在其他示例中,存储介质120的指令中的任何指令的功能可以以电子电路的形式、以在机器可读存储介质上编码的可执行指令的形式、或它们的组合来实现。存储介质可以位于执行机器可读指令的计算设备中,或远离计算设备但对计算设备可访问(例如,通过计算机网络可访问)以用于执行。在图1的示例中,存储介质120可以通过一个机器可读存储介质或多个机器可读存储介质来实现。
在其他示例中,与介质120的指令有关的上述功能可以通过一个或多个引擎实现,该一个或多个引擎可以是硬件和编程的任何组合以实现该一个或多个引擎的功能。在本文描述的示例中,硬件和编程的这种组合可以以若干不同的方式来实现。例如,用于引擎的编程可以是存储在至少一个非暂时性机器可读存储介质上的处理器可执行指令,并且用于引擎的硬件可以包括至少一个处理资源以执行这些指令。在一些示例中,硬件也可以包括其他电子电路,以至少部分地实现引擎中的至少一个。在一些示例中,该至少一个机器可读存储介质可以存储指令,该指令在被该至少一个处理资源执行时,至少部分地实现引擎中的一些或全部。在这样的示例中,至少部分地实现计算***100的计算设备可以包括存储指令的该至少一个机器可读存储介质以及用于执行指令的该至少一个处理资源。在其他示例中,引擎可以通过电子电路来实现。
如本文所使用的,“机器可读存储介质”可以是用于包含或存储诸如可执行指令、数据等的信息的任何电子存储装置、磁性存储装置、光存储装置或其他物理存储装置。例如,本文描述的任何机器可读存储介质可以是任何随机存取存储器(RAM)、易失性存储器、非易失性存储器、闪存、存储驱动器(例如,硬盘驱动器)、固态驱动器(SSD)、任何类型的存储盘(例如,光盘、DVD等)等,或它们的组合。此外,本文描述的任何机器可读存储介质可以是非暂时性的。在本文描述的示例中,机器可读存储介质可以是物品(或制品)的一部分。物品或制品可以指任何被制造的单个部件或多个部件。
在一些示例中,介质120的指令可以是安装包的一部分,当该安装包被安装时可以由处理资源110执行以实现上述功能。在这样的示例中,存储介质120可以是便携式介质,诸如CD、DVD或闪存盘,或者是由服务器维护的存储器,从该服务器可下载和安装安装包。在其他示例中,介质120的指令可以是已经安装在包括处理资源110的计算***100的计算设备上的一个应用程序、多个应用程序、或一个或多个组件的一部分。在这样的示例中,存储介质120可以包括存储器,诸如硬盘驱动器、固态驱动器、非易失性存储器设备等。在一些示例中,本文关于图1描述的功能可以结合本文关于图2至图4中的任意一个图描述的功能被提供。
图2是包括用于在计算***200的相应总线的总线队列之间分配任务的多个主设备的示例计算***200的框图。在图2的示例中,计算***200可以由至少一个计算设备来实现。在一些示例中,计算***200可以是(或可被包含在)储存箱体,用于存放和管理存储设备,如上面关于图1的计算***100所描述的。
在图2的示例中,计算***200可以包括由主设备202、204和206中的每个主设备可用的多条总线(例如,I2C总线或TWI总线)。主设备202、204和206中的每个主设备可以直接或间接(例如,通过多路转接器等)连接到多条总线,使得主设备202、204和206中的每个主设备能够通过总线与连接到该总线的其他设备(例如,从设备)通信。多条总线可以包括如上面关于图1所描述的第一总线130和第二总线132,以及第三总线134。主设备202、204和206中的每个主设备可以连接到如上所述的总线130、132和134中的每条。尽管图3中图示了三条总线,但是计算***200可以包括任意数量的由主设备可用的两条或更多条总线。尽管图3中图示了三个主设备连接到计算***200的总线,但是在一些示例中,计算***200可以包括任意数量的两个或更多个主设备。
在图2的示例中,主设备202可以包括至少一个处理资源110和至少一个机器可读存储介质120,如上面关于图1所描述的。该至少一个存储介质120可以包括(例如,可以被编码有)调度器指令221,调度器指令221由至少一个处理资源110可执行以实现本文关于图2所描述的功能。调度器指令221可以至少包含指令122、124、126和128,如上面关于图1所描述的,并且调度器指令221可以实现用于主设备202的总线调度器。
如上面关于图1所描述的,由主设备202、204、206等可用的多条总线130、132、134等每条总线一次可由计算***100的一个主设备使用,并且总线仲裁器135可以在主设备之间仲裁。计算***200的总线仲裁器135可以如上面关于图1的计算***100所描述的那样来实现,并且可以通过通信信道(例如,迹线、导线等)与主设备202、204、206等中的每个主设备通信,该通信信道与在其上主设备可与从设备通信的总线分离。如上所述,主设备能够独立地从总线仲裁器135请求对指定总线的访问权,并且总线仲裁器135能够决定是否授权每个接收的请求。
如上面关于图1的主设备102所描述的,主设备202可以包括任务列表140,任务列表140用于存储每个要使用计算***200的总线中的一条来执行的任务,并且任务列表140可以被存储在主设备202的存储器中。主设备202可以存储任务列表140中要被执行的任务,如上面关于图1所描述的。如上面关于图1的主设备102所描述的,主设备202可以包括多个总线队列,每个总线队列用于可由主设备202用来与计算***200中的从设备通信的总线中的相应一条总线。例如,在图2的示例中,主设备202可以包括用于第一总线130的第一总线队列150、用于第二总线132的第二总线队列152和用于第三总线134的第三总线队列154。为了说明目的,图2的示例分别示出了三条总线以及用于这三条总线的主设备202的三个总线队列。然而,在其他示例中,计算***200可以包括由主设备202可用的任意数量的两条或更多条总线,并且可以包括用于这些总线中的每条总线的不同的相应的总线队列。在一些示例中,总线队列中的每个总线队列可以被存储在主设备202的存储器中。
在图2的示例中,任务可以如上面所描述的那样被实现,并且可以包括如上所述的各种属性。例如,在图2的示例中,主设备202可以在任务列表140中存储至少包括任务160、162、164、166、168和169的多个任务。这些任务中的每个任务可以包括至少一个相应的命令。任务160、162、164、166、168和169也可以分别包括属性171、173、175、177、178和179。在示例中,任务列表140可以包括任意合适数量的任务。
对于任务列表140中的任务,指令122可以周期性地调整或刷新每个任务的等待时间属性,如上面关于图1所描述的。在每个周期性地调整之后,指令122可以检测到调整的等待时间为0的任何任务,并且作为响应,可以针对这些任务将任务状态从等待状态改变为就绪状态。例如,在一个或多个等待时间调整之后,指令122可以针对任务160、162、164、166和168(例如,但不针对任务169)将任务状态从等待状态改变为就绪状态。
在这样的示例中,指令122可以确定任务列表140的多个任务(即,任务160、162、164、166和168)中的每个任务具有指示任务当前准备好被分配到总线队列并进行处理的属性(例如,可具有就绪状态属性)。响应于该确定,指令122可以在多个总线队列150、152和154之间分配多个任务,每个总线队列专用于存储总线130、132和134中的相应一条总线的任务。指令122可以在总线队列之间分配任务,如上面关于图1所描述的。例如,指令122可以确定多个任务中的每个任务的总线标识符,并且将每个任务分配到用于在该任务中识别出的总线的总线队列。在图2的示例中,任务160和164的属性可以识别第一总线130,并且指令122可以从任务列表140中移除任务160和164,并将它们分配到总线队列150。在这样的示例中,任务166的属性可以识别第二总线132,并且指令122可以从任务列表140中移除任务166,并将其分配到总线队列152。此外,在这样的示例中,任务162和168的属性可以识别第三总线134,并且指令122可以从任务列表140中移除任务162和168,并将它们分配到总线队列154。在一些示例中,在总线队列之间分配多个任务之后,并且在开始处理分配到总线队列任务的任何任务之前,指令122可以对总线队列中的每个总线队列中的任务进行排序,如上所述。
在分配和排序之后,指令221可以在限定的序列中对主设备202的所有总线队列迭代多次,依次访问每个总线队列,并且对于每个访问的总线队列,尝试处理在总线队列的前端处的任务(如果有的话),如上面关于图1的指令121所描述的。
例如,在分配之后,指令124可以根据限定的序列184迭代地访问多个总线队列中的每个总线队列,迭代地访问可以包括在访问序列中的最后一个总线队列之后回到访问序列中的第一总线队列的循环,如上所述。例如,在图2的示例中,总线队列的序列可以从第一总线队列150开始,随后是第二总线队列152,并且随后是第三总线队列154。在其中不存在用于主设备202的另外的总线队列的示例中,在序列中第一总线队列150可以跟随第三总线队列154,形成循环。在其中存在附加的一个或多个总线队列跟随总线队列154的其他示例中,该序列可以在到达总线队列中的最后一个之后返回到第一总线队列150。
如上所述,指令124可以根据限定的序列184迭代地访问多个总线队列中的每个总线队列,并且在每次访问非空总线队列时,下面描述的某些处理可由指令221执行。例如,在每次访问具有在前端处的任务(例如,诸如在总线队列150的前端151处的任务160)的相应总线队列时,指令124可以开始处理在总线队列的前端处的任务。在这样的示例中,为了开始处理在所访问的总线队列的前端处的任务,指令124可以基于任务的属性选择用于任务的仲裁超时时间(如上面关于图1所描述的),并且指令126可以针对任务从总线仲裁器135请求专用于相应的总线队列的相应总线的访问权。例如,在任务160位于总线队列150的前端151的情况下,当指令221访问总线队列150时,指令124可以基于属性171选择用于任务160的仲裁超时时间,如上所述,并且指令126可以从总线仲裁器135针对任务160请求对总线130的访问权。
在这样的示例中,在这些总线访问权中的一个或多个中,主设备202可能无法在所选择的仲裁超时时间内从总线仲裁器135获得所请求的对总线的访问权。在这样的示例中,指令221可以暂停处理相应总线队列中的任务和任何其他任务,并且前进到总线队列中的下一总线队列用于下一总线队列的访问。在一些进一步的细节中,在访问具有在总线队列的前端处的任务的相应总线队列时,指令124可以开始处理在总线队列的前端处的任务(包括基于任务的属性选择用于任务的仲裁超时时间),并且在选择之后,指令126可以针对任务从总线仲裁器135请求专用于相应总线队列的相应总线(例如,用于总线队列150中的任务的总线130)的访问权。在一些示例中,在该总线队列访问时,指令126可以确定所选择的仲裁超时时间已经失效而主设备没有从总线仲裁器135接收到对总线的所请求的访问权。在这样的示例中,响应于该确定,指令128可以暂停处理当前被访问的总线队列中的任务和任何其他任务,并且前进到总线队列中的下一总线队列用于下一总线队列的访问。
在其他示例中,在总线访问权中的一个或多个中,主设备202可以在所选择的仲裁超时时间内从总线仲裁器135获得所请求的总线访问权。在这样的示例中,指令221可以使用相应总线使在总线队列的前端处的任务被执行(例如,包括通过总线与从设备通信),并且然后暂停处理该总线队列中的任何其他任务,并前进到总线队列中的下一总线队列用于下一访问。在一些进一步的细节中,在访问具有在总线队列的前端处的任务的相应总线队列时,指令124可以开始处理在总线队列的前端处的任务(基于任务的属性选择用于任务的仲裁超时时间),在选择之后,指令126可以针对任务从总线仲裁器135请求专用于相应总线队列的相应总线的访问权。在一些示例中,在该总线队列访问时,指令126可以确定主设备202在所选择的仲裁超时时间失效之前已经从总线仲裁器接收到对相应总线的访问权。响应于接收到该访问权,指令128可以使用相应的总线来执行任务,并且一旦任务完成或者已经无法完成(包括任何重试),则指令128可以暂停处理相应的总线队列中的任何其他任务,并前进到总线队列中的下一总线队列用于下一访问。在这样的示例中,当针对给定任务获得对总线的访问权时,一旦任务被尝试,则指令221可以移动以访问下一总线队列。
当指令221在限定的序列中对主设备202的所有总线队列迭代多次(例如,预定阈值数量的次数,诸如4次,或者任意其他合适的数量)之后,指令122可以针对总线队列中的每个总线队列移除留在总线队列中的每个任务。例如,对于留在总线队列中的任何总线队列中的每个任务,在任务的属性指示该任务是周期性任务或一次完成任务时,指令122可以将该任务返回到任务列表140,并且在任务的属性指示该任务是一次尝试任务时,指令122可以将该任务从队列中移除而不将该任务返回到任务列表140,如上面关于图1所描述的。
在一些示例中,计算***200的一个或多个其他主设备可具有等同于调度器指令221的可执行指令,使得这些其他主设备可执行上面关于调度器指令221所描述的功能。例如,主设备204可以包括至少一个处理资源212和包括调度器指令215的至少一个非暂时性机器可读存储介质214,调度器指令215由该至少一个处理资源212可执行以实现上面关于调度器指令221所描述的功能。在这样的示例中,主设备204的调度器指令215等同于主设备202的调度器指令221。
在一些示例中,与指令221或215有关的上述功能可以通过一个或多个引擎实现,该一个或多个引擎可以是硬件和编程的任何组合以实现该一个或多个引擎的功能,如上所述。在一些示例中,本文关于图2描述的功能可以结合本文关于图1、图3和图4中的任意一个图描述的功能被提供。
图3是包括在计算***的相应总线的多个总线队列之间分配主设备任务的计算***的示例方法300的流程图。尽管下面参考图1的计算***100描述了方法300的执行,但是用于执行方法300的其他合适的***可以被使用(例如,图2的计算***200)。此外,方法300的实现不限于这样的示例。
在方法300的305处,计算***100的主设备102的指令122,当由主设备102的处理资源执行时,可以在多个总线队列150、152等之间分配主设备102的多个任务,每个总线队列专用于计算***110的总线130、132等中的相应的一条总线,主设备102可以使用总线与从设备通信。在这样的示例中,第一总线队列150可以专用于第一总线130,并且第二总线队列152可以专用于第二总线132。在分配之后,在310处,指令124当被执行时,可以开始处理在第一总线队列150的前端151处的第一任务160,包括基于第一任务160的属性171选择用于第一任务160的第一仲裁超时时间。
在315处,在选择之后,主设备102的指令126当被执行时,可以从计算***100的总线仲裁器135请求对第一总线130的访问权。在320处,指令126当被执行时,可以确定所选择的第一仲裁超时时间已经失效而主设备102没有从总线仲裁器135接收到对第一总线130的访问权。在325处,响应于确定所选择的第一仲裁超时时间已经失效而主设备102没有从总线仲裁器135接收到对第一总线130的访问权,指令128当被执行时,可以改变第一任务160的属性,使得主设备102在第一任务160再次被主设备102处理时选择用于第一任务160的不同的仲裁超时时间。在330处,指令128当被执行时,也可以响应于该确定,暂停处理第一总线队列150中的任何任务。在335处,指令124,当被执行时,可以开始处理在第二总线队列152的前端处的第二任务162,包括基于第二任务162的属性173选择用于第二任务162的第二仲裁超时时间。
尽管图3的流程图示出了执行某些功能的特定顺序,但方法300并不限于该顺序。例如,流程图中连续示出的功能可以以不同的顺序执行,可以同时执行或者部分同时执行,或它们的组合。在一些示例中,本文关于图3描述的功能可以结合本文关于图1、图2和图4中的任意一个图描述的功能被提供。
图4是包括请求用于主设备的总线队列的前端处的任务的总线访问权的计算***的示例方法400的流程图。尽管下面参考图1的计算***100描述了方法400的执行,但是用于执行方法400的其他合适的***可以被使用(例如,图2的计算***200)。此外,方法400的实现不限于这样的示例。
在方法400的405处,计算***100的主设备102的指令122,当由主设备102的至少一个处理资源110执行时,可以调整主设备102的任务列表140中的任务集合中的每个任务的等待时间属性,如上面关于图1所描述的。在410处,指令122,当被执行时,可以确定任务列表140的多个任务(即,任务集合中的一些或全部)具有指示任务当前准备好被分配的属性(例如,就绪状态属性,如上所述)。在这样的示例中,在410处,指令122当被执行时,可以在总线队列之间分配具有指示任务当前准备好被分配的属性的集合中的每个任务。在这样的示例中,多个总线队列中的每个总线队列可以专用于总线中的相应的一条总线,如上所述。在一些示例中,在410处,在分配第一任务之后和在开始处理第一任务之前,针对总线队列中的每个总线队列,指令122可以基于任务的各自优先级属性对分配到相应总线队列的任务进行排序,如上所述。
如上面关于图1和图2所描述的,在分配任务和对任务进行排序之后,主设备102的指令121可以在限定的序列中对主设备102的所有总线队列迭代多次,依次访问每个总线队列,并且在每个非空总线队列处,针对在总线队列的前端处的任务从总线仲裁器135请求对合适的总线的访问权。在这样的示例中,指令121可以对该限定的序列迭代预定数量的次数(例如,阈值数量的次数),本文中可以用“N”表示。
在这样的示例中,在415处,指令121可以确定总线队列的序列是否被访问了“N”次。如果不是,则方法400可以进行至425,其中指令124当被执行时,可以开始处理在序列中的第一总线队列150的前端151处的第一任务160。在这样的示例中,开始处理可以包括指令124基于第一任务160的属性171选择用于第一任务160的第一仲裁超时时间。指令124可以在将任务分配到总线队列之后开始该处理。
在430处,在选择用于第一任务160的第一仲裁超时时间之后,指令126当由主设备102执行时,可以从计算***100的总线仲裁器135请求对第一总线130的访问权。在435处,指令126当被执行时,可以确定主设备102是否已经接收到所请求的对第一总线130的访问权。如果是,则在440处,指令128可以使任务在所获得的第一总线130上执行,并且然后在460处访问序列中的下一总线队列。然而,如果主设备102还没有接收到所请求的对第一总线130的访问权,则指令126可以在445处确定所选择的第一仲裁超时时间是否已经失效而主设备102没有接收到对第一总线的访问权。如果不是,则方法400可以返回到435。
然而,在450处,响应于确定所选择的第一仲裁超时时间已经失效而主设备102没有从总线仲裁器135接收到对第一总线130的访问权,指令128当被执行时可以改变第一任务160的属性171,使得主设备102在第一任务160再次被主设备102处理时(例如,在下一循环中)选择用于第一任务160的不同的仲裁超时时间。此外,同样响应于该确定,在455处,指令128可以暂停处理第一总线队列130中的任何任务,并且在460处访问序列中的下一总线队列。
在这样的示例中,方法400可以前进到425(当总线队列还没有被访问“N”次时),并且在425处,指令124可以开始处理在第二总线队列152的前端处的第二任务162,开始处理包括基于第二任务162的属性173选择用于第二任务162的第二仲裁超时时间,如上所述。
在其中第一任务160的处理由于没有获得总线访问权而被暂停的示例中,在迭代地访问序列中的总线队列中的每个总线队列之后,在425处,指令124可以重新开始处理第一总线队列150中的第一任务160。在这样的示例中,指令124可以基于第一任务160的改变的属性选择用于第一任务160的第三仲裁超时时间,并且使得第三仲裁超时时间大于第一仲裁超时时间(如上所述)。
在一些示例中,在415处,指令122可以确定总线队列何时已经被访问阈值数量的次数(即,“N”次)。在这样的示例中,在迭代地访问总线队列中的每个总线队列达阈值数量的次数之后,在420处,对于总线队列中的每个总线队列,指令122可以移除留在总线队列中的每个任务。在一些示例中,移除可以包括:指令122将具有指示任务是周期性任务或一次完成任务的属性的每个任务返回到任务列表140,并且将具有指示任务是一次尝试任务的属性的每个任务从总线队列中移除而不返回到任务列表140。
尽管图4的流程图示出了执行某些功能的特定顺序,但方法400并不限于该顺序。例如,流程图中连续示出的功能可以以不同的顺序执行,可以同时执行或者部分同时执行,或它们的组合。在一些示例中,本文关于图4描述的功能可以结合本文关于图1至图3中的任意一个描述的功能被提供。在本说明书(包括任何所附的权利要求、摘要和附图)中公开的所有特征,和/或这样公开的任何方法或过程的所有要素,可以以任何组合被结合,除非组合中这些特征和/或要素中的至少一些是互相排斥的。
Claims (19)
1.一种物品,包括至少一个非暂时性机器可读存储介质,所述非暂时性机器可读存储介质包括由计算***的主设备的至少一个处理资源可执行的指令,所述计算***具有由所述主设备可使用的多条总线,所述多条总线包括第一总线和第二总线,其中所述指令可执行用于:
在多个总线队列之间分配所述主设备的多个任务,每个总线队列用于所述总线中的相应的一条,所述总线队列包括用于所述第一总线的第一总线队列和用于所述第二总线的第二总线队列;
在所述分配之后,开始处理在所述第一总线队列的前端处的第一任务,所述开始处理包括基于所述第一任务的属性选择用于所述第一任务的第一仲裁超时时间;
从总线仲裁器请求对所述第一总线的访问权;
响应于确定所选择的第一仲裁超时时间已经失效而所述主设备没有从所述总线仲裁器接收到对所述第一总线的访问权:
暂停处理所述第一总线队列中的任何任务;以及
开始处理在所述第二总线队列的前端处的第二任务,所述开始处理包括选择用于所述第二任务的第二仲裁超时时间。
2.根据权利要求1所述的物品,其中所述指令进一步包括指令,用于:
在所述分配之后和在开始处理所述第一任务之前,针对所述总线队列中的每个总线队列,基于所述任务的各自优先级属性,对分配到相应总线队列的所述任务进行排序。
3.根据权利要求1所述的物品,其中所述指令进一步包括指令,用于:
调整所述主设备的任务列表中的每个任务的等待时间属性,所述任务列表包括所述多个任务;
其中用于分配的所述指令包括指令用于:
在所述调整之后,确定所述多个任务中的每个任务具有指示所述任务当前准备好被分配的属性;并且
对具有指示所述任务当前准备好被分配的属性的所述多个任务中的每个任务进行分配,其中所述任务列表中的其他任务具有指示所述任务没有准备好被分配的属性。
4.根据权利要求1所述的物品,其中所述指令进一步包括指令,用于:
响应于所述确定,改变所述第一任务的所述属性,使所述主设备在所述第一任务由所述主设备再次处理时,选择用于所述第一任务的不同的仲裁超时时间。
5.根据权利要求4所述的物品,其中所述指令进一步包括指令,用于:
在迭代地访问所述总线队列中的每个总线队列以开始处理在相应队列的前端处的任何相应任务之后,返回所述第一总线队列,以重新开始处理所述第一任务,包括基于所述第一任务的所改变的属性选择用于所述第一任务的第三仲裁超时时间,其中所述第三仲裁超时时间大于所述第一仲裁超时时间。
6.根据权利要求1所述的物品,其中所述多个任务中的每个任务包括相应的属性,所述相应的属性包括优先级和重试状态属性,并且
其中用于所述任务中的给定任务的仲裁超时时间的每个选择是基于所述给定任务在所述选择时的所述优先级和重试状态属性的组合。
7.根据权利要求1所述的物品,其中所述第一仲裁超时时间和所述第二仲裁超时时间是不同的。
8.一种计算***,包括:
多个主设备,所述多个主设备包括给定主设备;
多条总线,每条总线由所述多个主设备中的每个主设备可使用;以及
总线仲裁器;
其中所述给定主设备包括至少一个处理资源和至少一个非暂时性机器可读存储介质,所述非暂时性机器可读存储介质包括由所述至少一个处理资源可执行的调度器指令以:
在多个总线队列之间分配主设备的多个任务,每个总线队列专用于存储多条总线中的相应一条总线的任务;以及
在所述分配之后,迭代地访问所述多个总线队列中的每个总线队列;以及
针对具有在相应总线队列的前端处的任务的所述相应总线队列的至少一次访问:
开始处理在所述前端处的所述任务,所述开始处理包括基于所述任务的属性选择用于所述任务的仲裁超时时间;
在所述选择之后,针对所述任务从所述总线仲裁器请求对相应总线的访问权,所述相应总线队列专用于所述相应总线;以及
响应于确定所选择的仲裁超时时间已经失效而所述主设备没有从所述总线仲裁器接收到所请求的对所述相应总线的访问权:
暂停处理所述任务和所述相应总线队列中的任何其他任务;并且
前进到所述总线队列中的下一总线队列以用于下一总线队列的访问。
9.根据权利要求8所述的计算***,其中,在对所述总线队列中的每个总线队列迭代地访问达阈值数量的次数之后,所述调度器指令用于:
针对所述总线队列中的每个总线队列,移除留在所述总线队列中的每个任务。
10.根据权利要求9所述的计算***,其中:
所述给定主设备包括任务列表;
用于分配的所述指令用于在所述多个总线队列之间分配来自所述任务列表的所述多个任务;以及
用于移除留在所述总线队列中的每个任务的所述指令包括指令,针对留在所述总线队列中的任何总线队列中的每个任务,用于:
当所述任务的所述属性指示所述任务是周期性任务或一次完成任务时,将所述任务返回到所述任务列表;以及
当所述任务的所述属性指示所述任务是一次尝试任务时,从所述队列移除所述任务,而不将所述任务返回到所述任务列表。
11.根据权利要求8所述的计算***,其中所述调度器指令是可执行的,针对具有在相应总线队列的前端处的任务的所述相应总线队列的至少一次其他访问,用于:
开始处理在所述前端处的所述任务,所述开始处理包括基于所述任务的属性选择用于所述任务的仲裁超时时间;
在所述选择之后,针对所述任务从所述总线仲裁器请求对相应总线的访问权,所述相应总线队列专用于所述相应总线;以及
响应于在所选择的仲裁超时时间失效之前从所述总线仲裁器接收到对所述相应总线的访问权:
使用所述相应总线使所述任务被执行;
暂停处理所述相应总线队列中的任何其他任务;并且
前进到所述总线队列中的下一总线队列以用于下一访问。
12.根据权利要求8所述的计算***,其中所述调度器指令是可执行的,针对具有在相应总线队列的前端处的任务的所述相应总线队列的每次访问,用于:
基于所述任务的属性,选择用于所述任务的仲裁超时时间;并且
从所述总线仲裁器并且针对所述任务请求对所述相应总线的访问权,所述相应总线队列专用于所述相应总线。
13.根据权利要求8所述的计算***,其中所述多个主设备中的另一主设备包括:
至少一个其他处理资源;以及
至少一个其他非暂时性机器可读存储介质,所述至少一个其他非暂时性机器可读存储介质包括由所述至少一个其他处理资源可执行的调度器指令,其中所述另一主设备的所述调度器指令等同于所述给定主设备的所述调度器指令。
14.一种计算***的主设备的方法,所述计算***具有由所述主设备可使用的多条总线,所述多条总线包括第一总线和第二总线,所述方法包括:
使用所述主设备的处理器,在多个总线队列之间分配所述主设备的多个任务,每个总线队列专用于所述总线中的相应的一条总线,所述总线队列包括专用于所述第一总线的第一总线队列和专用于所述第二总线的第二总线队列;
在所述分配之后,开始处理在所述第一总线队列的前端处的第一任务,所述开始处理包括基于所述第一任务的属性选择用于所述第一任务的第一仲裁超时时间;
在所述选择之后,所述主设备从所述计算***的总线仲裁器请求对所述第一总线的访问权;
响应于确定所选择的第一仲裁超时时间已经失效而所述主设备没有从所述总线仲裁器接收到对所述第一总线的访问权:
改变所述第一任务的所述属性,使所述主设备在所述第一任务由所述主设备再次处理时选择用于所述第一任务的不同的仲裁超时时间;
暂停处理所述第一总线队列中的任何任务;并且
开始处理在所述第二总线队列的前端的第二任务,所述开始处理包括基于所述第二任务的属性选择用于所述第二任务的第二仲裁超时时间。
15.根据权利要求14所述的方法,进一步包括:
在迭代地访问所述总线队列中的每个总线队列之后,重新开始处理在所述第一总线队列中的所述第一任务,所述重新开始处理包括:
基于所述第一任务的所改变的属性,选择用于所述第一任务的第三仲裁超时时间,其中所述第三仲裁超时时间大于所述第一仲裁超时时间。
16.根据权利要求14所述的方法,进一步包括:
调整所述主设备的任务列表中的任务集合中的每个任务的等待时间属性,其中所述任务集合包括所述多个任务;
其中所述分配包括:
在所述总线队列之间分配所述集合中的具有指示所述任务当前准备好被分配的属性的每个任务。
17.根据权利要求14所述的方法,进一步包括:
在所述分配之后和在开始处理所述第一任务之前,针对所述总线队列中的每个总线队列,基于所述任务的各自优先级属性对分配到所述相应总线队列的所述任务进行排序。
18.根据权利要求14所述的方法,进一步包括:
在对所述总线队列中的每个总线队列迭代地访问达阈值数量的次数之后:
针对所述总线队列中的每个总线队列,移除留在所述总线队列中的每个任务。
19.根据权利要求18所述的方法,其中,针对所述总线队列中的每个总线队列,所述移除包括:
将具有指示所述任务是周期性任务或一次完成任务的属性的每个任务返回到所述任务列表;以及
将具有指示所述任务是一次尝试任务的属性的每个任务从所述总线队列移除,而不返回到所述任务列表。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/428,319 | 2017-02-09 | ||
US15/428,319 US10496577B2 (en) | 2017-02-09 | 2017-02-09 | Distribution of master device tasks among bus queues |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108415860A true CN108415860A (zh) | 2018-08-17 |
CN108415860B CN108415860B (zh) | 2021-06-04 |
Family
ID=60673663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810053338.1A Active CN108415860B (zh) | 2017-02-09 | 2018-01-19 | 机器可读存储介质、计算***及计算***的主设备的方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10496577B2 (zh) |
EP (1) | EP3361388B1 (zh) |
CN (1) | CN108415860B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306939A (zh) * | 2020-10-29 | 2021-02-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种总线调用方法、装置、设备及存储介质 |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190163493A1 (en) * | 2017-11-30 | 2019-05-30 | Western Digital Technologies, Inc. | Methods, systems and devices for recovering from corruptions in data processing units |
US11360809B2 (en) * | 2018-06-29 | 2022-06-14 | Intel Corporation | Multithreaded processor core with hardware-assisted task scheduling |
CN111045813B (zh) * | 2019-12-27 | 2024-01-02 | 京北方信息技术股份有限公司 | 一种任务分发***及方法 |
CN114461550A (zh) * | 2021-12-16 | 2022-05-10 | 加弘科技咨询(上海)有限公司 | 基于i2c通信的多主控设备访问仲裁***及方法 |
Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5719882A (en) * | 1992-04-28 | 1998-02-17 | Hewlett-Packard Company | Reliable datagram packet delivery for simple network management protocol (SNMP) |
CN1193410A (zh) * | 1995-06-15 | 1998-09-16 | 英特尔公司 | 在多处理器***中的处理器之间传送消息的方法与装置 |
US6073199A (en) * | 1997-10-06 | 2000-06-06 | Cisco Technology, Inc. | History-based bus arbitration with hidden re-arbitration during wait cycles |
US20020099892A1 (en) * | 2000-11-30 | 2002-07-25 | Olarig Sompong P. | Adaptive bus arbiter |
US20030214952A1 (en) * | 2002-05-20 | 2003-11-20 | Transwitch Corporation | Method and apparatus for guaranteeing a minimum cell rate (MCR) for asynchronous transfer mode (ATM) traffic queues |
CN1479542A (zh) * | 2002-08-30 | 2004-03-03 | 深圳市中兴通讯股份有限公司上海第二 | 一种公平的总线仲裁方法及仲裁装置 |
CN1503947A (zh) * | 1999-12-28 | 2004-06-09 | ض� | 动态优先级外部事务处理*** |
US20060274372A1 (en) * | 2005-06-02 | 2006-12-07 | Avaya Technology Corp. | Fault recovery in concurrent queue management systems |
CN1959644A (zh) * | 2005-10-27 | 2007-05-09 | 国际商业机器公司 | 在数据处理***中仲裁线程访问共享资源的***和方法 |
US20090006889A1 (en) * | 2007-06-27 | 2009-01-01 | International Business Machines Corporation | I2C Failure Detection, Correction, and Masking |
CN101344871A (zh) * | 2008-08-20 | 2009-01-14 | 北京中星微电子有限公司 | 一种保证访问先后顺序的总线仲裁单元及其实现方法 |
CN101510181A (zh) * | 2009-03-19 | 2009-08-19 | 北京中星微电子有限公司 | 一种总线仲裁方法和总线仲裁装置 |
CN102203752A (zh) * | 2008-07-29 | 2011-09-28 | Vl有限公司 | 具有多个队列之间的仲裁的数据处理电路 |
CN102272744A (zh) * | 2009-01-02 | 2011-12-07 | 国际商业机器公司 | 用于事务存储器管理中的冲突仲裁的优先化 |
CN102834816A (zh) * | 2010-04-14 | 2012-12-19 | 高通股份有限公司 | 用以减少存取等待时间的总线仲裁技术 |
US20130111090A1 (en) * | 2011-10-31 | 2013-05-02 | William V. Miller | Queue arbitration using non-stalling request indication |
CN104798045A (zh) * | 2013-02-28 | 2015-07-22 | 甲骨文国际公司 | 用于在并行优先级队列中使用定序器的***和方法 |
Family Cites Families (60)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5237696A (en) | 1988-04-13 | 1993-08-17 | Rockwell International Corporation | Method and apparatus for self-timed digital data transfer and bus arbitration |
US4979099A (en) | 1988-10-25 | 1990-12-18 | Apollo Computer Inc. | Quasi-fair arbitration scheme with default owner speedup |
US4972313A (en) | 1989-08-07 | 1990-11-20 | Bull Hn Information Systems Inc. | Bus access control for a multi-host system using successively decremented arbitration delay periods to allocate bus access among the hosts |
DE69030640T2 (de) | 1989-11-03 | 1997-11-06 | Compaq Computer Corp | Multiprozessorarbitrierung in für Einzelprozessor bestimmten Arbitrierungsschemas |
US5230044A (en) | 1990-07-02 | 1993-07-20 | Digital Equipment Corporation | Arbitration apparatus for shared bus |
US5191656A (en) | 1991-08-29 | 1993-03-02 | Digital Equipment Corporation | Method and apparatus for shared use of a multiplexed address/data signal bus by multiple bus masters |
US5237695A (en) | 1991-11-01 | 1993-08-17 | Hewlett-Packard Company | Bus contention resolution method for network devices on a computer network having network segments connected by an interconnection medium over an extended distance |
US5418920A (en) | 1992-04-30 | 1995-05-23 | Alcatel Network Systems, Inc. | Refresh control method and system including request and refresh counters and priority arbitration circuitry |
US5596729A (en) | 1995-03-03 | 1997-01-21 | Compaq Computer Corporation | First arbiter coupled to a first bus receiving requests from devices coupled to a second bus and controlled by a second arbiter on said second bus |
US5572686A (en) | 1995-06-05 | 1996-11-05 | Apple Computer, Inc. | Bus arbitration scheme with priority switching and timer |
US6385678B2 (en) | 1996-09-19 | 2002-05-07 | Trimedia Technologies, Inc. | Method and apparatus for bus arbitration with weighted bandwidth allocation |
US6006289A (en) | 1996-11-12 | 1999-12-21 | Apple Computer, Inc. | System for transferring data specified in a transaction request as a plurality of move transactions responsive to receipt of a target availability signal |
US5875342A (en) | 1997-06-03 | 1999-02-23 | International Business Machines Corporation | User programmable interrupt mask with timeout |
US5937199A (en) | 1997-06-03 | 1999-08-10 | International Business Machines Corporation | User programmable interrupt mask with timeout for enhanced resource locking efficiency |
US6205524B1 (en) | 1998-09-16 | 2001-03-20 | Neomagic Corp. | Multimedia arbiter and method using fixed round-robin slots for real-time agents and a timed priority slot for non-real-time agents |
US6157978A (en) | 1998-09-16 | 2000-12-05 | Neomagic Corp. | Multimedia round-robin arbitration with phantom slots for super-priority real-time agent |
US6473424B1 (en) | 1998-12-02 | 2002-10-29 | Cisco Technology, Inc. | Port aggregation load balancing |
US6311232B1 (en) | 1999-07-29 | 2001-10-30 | Compaq Computer Corporation | Method and apparatus for configuring storage devices |
US6636914B1 (en) | 1999-11-05 | 2003-10-21 | Apple Computer, Inc. | Method and apparatus for arbitration and fairness on a full-duplex bus using dual phases |
US6738845B1 (en) | 1999-11-05 | 2004-05-18 | Analog Devices, Inc. | Bus architecture and shared bus arbitration method for a communication device |
US6745293B2 (en) * | 2000-08-21 | 2004-06-01 | Texas Instruments Incorporated | Level 2 smartcache architecture supporting simultaneous multiprocessor accesses |
US6738923B1 (en) | 2000-09-07 | 2004-05-18 | International Business Machines Corporation | Network station adjustable fail-over time intervals for booting to backup servers when transport service is not available |
US6760802B2 (en) | 2000-09-08 | 2004-07-06 | Texas Instruments Incorporated | Time-out counter for multiple transaction bus system bus bridge |
JP2003186824A (ja) | 2001-12-18 | 2003-07-04 | Canon Inc | バス使用権優先度調整装置およびシステム |
US6845417B2 (en) | 2002-01-09 | 2005-01-18 | Hewlett-Packard Development Company, L.P. | Ensuring fairness in a multiprocessor environment using historical abuse recognition in spinlock acquisition |
US7359397B2 (en) | 2002-04-19 | 2008-04-15 | Seagate Technology Llc | Prioritizing transfers across an interface |
US7024492B2 (en) | 2002-05-24 | 2006-04-04 | Convedia Corporation | Media bus interface arbitration for a data server |
US6671275B1 (en) | 2002-08-02 | 2003-12-30 | Foundry Networks, Inc. | Cross-point switch with deadlock prevention |
US20040022263A1 (en) | 2002-08-02 | 2004-02-05 | Xiaodong Zhao | Cross point switch with out-of-band parameter fine tuning |
US7096289B2 (en) | 2003-01-16 | 2006-08-22 | International Business Machines Corporation | Sender to receiver request retry method and apparatus |
US20050157865A1 (en) | 2004-01-21 | 2005-07-21 | Yeager C. D. | System and method of managing a wait list queue |
US7908416B2 (en) | 2004-06-01 | 2011-03-15 | Ssd Company Limited | Data processing unit and bus arbitration unit |
JP4441362B2 (ja) | 2004-09-10 | 2010-03-31 | 株式会社日立製作所 | ポート割当装置及びポート割当方法 |
US7366811B2 (en) | 2004-12-23 | 2008-04-29 | International Business Machines Corporation | Bus arbitration system |
US7380040B2 (en) | 2005-04-14 | 2008-05-27 | Texas Instruments Incorporated | Software programmable dynamic arbitration scheme |
US7555005B2 (en) | 2005-04-14 | 2009-06-30 | Texas Instruments Incorporated | Area efficient implementation of the consecutive access counter |
US20070067531A1 (en) | 2005-08-22 | 2007-03-22 | Pasi Kolinummi | Multi-master interconnect arbitration with time division priority circulation and programmable bandwidth/latency allocation |
US7840969B2 (en) | 2006-04-28 | 2010-11-23 | Netapp, Inc. | System and method for management of jobs in a cluster environment |
US20080049254A1 (en) | 2006-08-24 | 2008-02-28 | Thomas Phan | Method and means for co-scheduling job assignments and data replication in wide-area distributed systems |
US8032730B2 (en) | 2008-05-15 | 2011-10-04 | Hitachi, Ltd. | Method and apparatus for I/O priority control in storage systems |
US20100064072A1 (en) | 2008-09-09 | 2010-03-11 | Emulex Design & Manufacturing Corporation | Dynamically Adjustable Arbitration Scheme |
US8370552B2 (en) | 2008-10-14 | 2013-02-05 | Nvidia Corporation | Priority based bus arbiters avoiding deadlock and starvation on buses that support retrying of transactions |
US8250197B2 (en) | 2008-10-28 | 2012-08-21 | Vmware, Inc. | Quality of service management |
US8266477B2 (en) | 2009-01-09 | 2012-09-11 | Ca, Inc. | System and method for modifying execution of scripts for a job scheduler using deontic logic |
US20110320706A1 (en) | 2009-03-12 | 2011-12-29 | Hitachi, Ltd. | Storage apparatus and method for controlling the same |
JP2010286983A (ja) | 2009-06-10 | 2010-12-24 | Renesas Electronics Corp | バス調停回路及びバス調停方法 |
GB2475897A (en) | 2009-12-04 | 2011-06-08 | Creme Software Ltd | Resource allocation using estimated time to complete jobs in a grid or cloud computing environment |
US8560796B2 (en) | 2010-03-29 | 2013-10-15 | Freescale Semiconductor, Inc. | Scheduling memory access requests using predicted memory timing and state information |
US8572322B2 (en) | 2010-03-29 | 2013-10-29 | Freescale Semiconductor, Inc. | Asynchronously scheduling memory access requests |
US20140358858A1 (en) | 2012-03-15 | 2014-12-04 | Peter Thomas Camble | Determining A Schedule For A Job To Replicate An Object Stored On A Storage Appliance |
US9164849B2 (en) | 2012-04-30 | 2015-10-20 | Hewlett-Packard Development Company, L.P. | Backup jobs scheduling optimization |
US10402348B2 (en) | 2013-04-12 | 2019-09-03 | Texas Instruments Incorporated | Method and system for using feedback information for selecting a routing bus for a memory transaction |
US10897506B2 (en) | 2014-07-02 | 2021-01-19 | Hewlett Packard Enterprise Development Lp | Managing port connections |
US9600337B2 (en) | 2014-09-30 | 2017-03-21 | Nimble Storage, Inc. | Congestion avoidance in network storage device using dynamic weights |
US9483187B2 (en) | 2014-09-30 | 2016-11-01 | Nimble Storage, Inc. | Quality of service implementation in a networked storage system with hierarchical schedulers |
US10545791B2 (en) | 2014-09-30 | 2020-01-28 | Hewlett Packard Enterprise Development Lp | Methods to apply IOPS and MBPS limits independently using cross charging and global cost synchronization |
US10534542B2 (en) | 2014-09-30 | 2020-01-14 | Hewlett Packard Enterprise Development Lp | Dynamic core allocation for consistent performance in a non-preemptive scheduling environment |
US10394606B2 (en) | 2014-09-30 | 2019-08-27 | Hewlett Packard Enterprise Development Lp | Dynamic weight accumulation for fair allocation of resources in a scheduler hierarchy |
US9489141B2 (en) | 2014-12-18 | 2016-11-08 | Nimble Storage, Inc. | Efficient scheduling of Input/Output requests to reduce latency and maximize throughput in a flash storage device |
US10191879B2 (en) | 2015-03-31 | 2019-01-29 | Veritas Technologies Llc | System and method for creating snapshots in openflame environment |
-
2017
- 2017-02-09 US US15/428,319 patent/US10496577B2/en active Active
- 2017-12-15 EP EP17207606.9A patent/EP3361388B1/en active Active
-
2018
- 2018-01-19 CN CN201810053338.1A patent/CN108415860B/zh active Active
Patent Citations (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5719882A (en) * | 1992-04-28 | 1998-02-17 | Hewlett-Packard Company | Reliable datagram packet delivery for simple network management protocol (SNMP) |
CN1193410A (zh) * | 1995-06-15 | 1998-09-16 | 英特尔公司 | 在多处理器***中的处理器之间传送消息的方法与装置 |
US6073199A (en) * | 1997-10-06 | 2000-06-06 | Cisco Technology, Inc. | History-based bus arbitration with hidden re-arbitration during wait cycles |
CN1503947A (zh) * | 1999-12-28 | 2004-06-09 | ض� | 动态优先级外部事务处理*** |
US20020099892A1 (en) * | 2000-11-30 | 2002-07-25 | Olarig Sompong P. | Adaptive bus arbiter |
US20030214952A1 (en) * | 2002-05-20 | 2003-11-20 | Transwitch Corporation | Method and apparatus for guaranteeing a minimum cell rate (MCR) for asynchronous transfer mode (ATM) traffic queues |
CN1479542A (zh) * | 2002-08-30 | 2004-03-03 | 深圳市中兴通讯股份有限公司上海第二 | 一种公平的总线仲裁方法及仲裁装置 |
US20060274372A1 (en) * | 2005-06-02 | 2006-12-07 | Avaya Technology Corp. | Fault recovery in concurrent queue management systems |
CN1959644A (zh) * | 2005-10-27 | 2007-05-09 | 国际商业机器公司 | 在数据处理***中仲裁线程访问共享资源的***和方法 |
US20090006889A1 (en) * | 2007-06-27 | 2009-01-01 | International Business Machines Corporation | I2C Failure Detection, Correction, and Masking |
CN102203752A (zh) * | 2008-07-29 | 2011-09-28 | Vl有限公司 | 具有多个队列之间的仲裁的数据处理电路 |
CN101344871A (zh) * | 2008-08-20 | 2009-01-14 | 北京中星微电子有限公司 | 一种保证访问先后顺序的总线仲裁单元及其实现方法 |
CN102272744A (zh) * | 2009-01-02 | 2011-12-07 | 国际商业机器公司 | 用于事务存储器管理中的冲突仲裁的优先化 |
CN101510181A (zh) * | 2009-03-19 | 2009-08-19 | 北京中星微电子有限公司 | 一种总线仲裁方法和总线仲裁装置 |
CN102834816A (zh) * | 2010-04-14 | 2012-12-19 | 高通股份有限公司 | 用以减少存取等待时间的总线仲裁技术 |
US20130111090A1 (en) * | 2011-10-31 | 2013-05-02 | William V. Miller | Queue arbitration using non-stalling request indication |
CN104798045A (zh) * | 2013-02-28 | 2015-07-22 | 甲骨文国际公司 | 用于在并行优先级队列中使用定序器的***和方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112306939A (zh) * | 2020-10-29 | 2021-02-02 | 山东云海国创云计算装备产业创新中心有限公司 | 一种总线调用方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
EP3361388A1 (en) | 2018-08-15 |
US10496577B2 (en) | 2019-12-03 |
US20180225242A1 (en) | 2018-08-09 |
CN108415860B (zh) | 2021-06-04 |
EP3361388B1 (en) | 2020-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108415860A (zh) | 在总线队列之间分配主设备任务 | |
CN107018091B (zh) | 资源请求的调度方法和装置 | |
EP2515232B1 (en) | Priority level arbitration method and device | |
CN102291423B (zh) | 控制物理层芯片的方法及控制电路 | |
CN1728118B (zh) | 资源分配管理方法和设备 | |
CN105205020B (zh) | 对直接存储器存取通道请求进行判优 | |
CN109558234A (zh) | 一种定时任务调度方法和装置 | |
WO2007031912A1 (en) | Method and system for bus arbitration | |
EP1253518B1 (en) | Memory access arbitration guaranteeing a desired data transfer rate | |
US8650270B2 (en) | Distributed computing with multiple coordinated component collections | |
US5528766A (en) | Multiple arbitration scheme | |
US20070255835A1 (en) | Resource reservation for massively parallel processing systems | |
JP2012142012A5 (zh) | ||
WO2020113310A1 (en) | System and method for resource partitioning in distributed computing | |
US20060026329A1 (en) | System and method for an arbiter rewind | |
EP0550147A1 (en) | Method and apparatus for arbitration based on the availability of resources | |
CN101501592A (zh) | 在过程控制***中用于用户可配置资源仲裁的***和方法 | |
US8213461B2 (en) | Method of designating slots in a transmission frame for controlling transmission of data over an interconnect coupling a plurality of master units with a plurality of slave units | |
WO2019006907A1 (en) | SYSTEMS AND METHODS FOR ASSIGNING COMPUTER RESOURCES IN A DISTRIBUTED COMPUTER SYSTEM | |
US20060277349A1 (en) | Method of accessing information and system therefor | |
JP4455540B2 (ja) | バスシステム及び調停方法 | |
CN106775493B (zh) | 一种存储控制器及io请求处理方法 | |
CN104854845B (zh) | 使用高效的原子操作的方法和装置 | |
US20120331240A1 (en) | Data processing device and data processing arrangement | |
US20040193767A1 (en) | Method and apparatus for bus access allocation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |