CN105094084B - 支持多核控制器上的相干数据访问的服务和系统 - Google Patents
支持多核控制器上的相干数据访问的服务和系统 Download PDFInfo
- Publication number
- CN105094084B CN105094084B CN201510247420.4A CN201510247420A CN105094084B CN 105094084 B CN105094084 B CN 105094084B CN 201510247420 A CN201510247420 A CN 201510247420A CN 105094084 B CN105094084 B CN 105094084B
- Authority
- CN
- China
- Prior art keywords
- designator
- buffering area
- reading
- read
- coherence data
- 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.)
- Active
Links
Classifications
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- 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/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
- G06F13/4234—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus
- G06F13/4243—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus being a memory bus with synchronous protocol
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Manufacturing & Machinery (AREA)
- Quality & Reliability (AREA)
- Automation & Control Theory (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明公开了支持多核控制器上的相干数据访问的服务和系统。用于访问控制器上的相干数据的系统和方法。该系统和方法包括每个均可以被读取或写入的第一缓冲区和第二缓冲区以及指示第一或第二缓冲区中的哪个被读取而第一或第二缓冲区中的另一个被写入的指示符。该系统和方法也包括读同步协议和写同步协议,该读同步协议允许从指示符指示是读缓冲区的缓冲区读取相干数据,该写同步协议允许向指示符指示是写缓冲区的缓冲区写入相干数据。
Description
技术领域
本发明大体涉及用于支持在多核控制器上的相干数据访问的系统和方法,并且更具体地涉及提供两个缓冲区、指示符和同步协议的系统和方法,该同步协议允许从一个缓冲区读取而写入另一缓冲区,并且其中读和写任务在这两个缓冲区之间切换。
背景技术
现代车辆使用各种嵌入式电子控制器来改善车辆的性能、舒适性、安全性等等。这样的控制器包括发动机控制器、悬挂控制器、转向控制器、动力系控制器、气候控制控制器、信息娱乐系统控制器、底盘系统控制器等等。这些控制器通常需要执行其控制功能的专用软件和算法。
车辆电子控制器的当前趋势是针对在公共控制器上操作的不同功能提供多个软件应用。例如,适应性巡航控制(ACC)系统、车道定中系统、稳定性控制系统等等均是本领域公知的并且全部以某种方式自动地控制车辆转向和/或制动。这些系统经常使用相同的传感器输入和其他变量(有时被称为全球变量),当其被存储在存储器中时能够被多于一个的软件应用使用。例如,ACC系统在其在处理器上操作期间可以读取传感器数据并且将传感器数据写入到控制器存储器中,并且车道定中系统和其他软件应用当它们在处理器上运行时可以读取该数据。因此,这在许多情况下是有意义的,例如在同一处理器上运行多个软件应用的这些情况。
提供在公共控制器上运行的多个相关软件应用对于减少系统硬件和成本具有明显优势。然而,在同一处理器上操作不同软件应用增加控制器的复杂性,这是因为运行不同软件应用且防止软件应用彼此干涉所需的调度。当车辆OEM在已经具有由供应商提供的软件的控制器上提供额外软件时,这样的在单个处理器上操作的混合使用的应用进一步增加了复杂性。
在多个相关软件应用和/或多核计算机环境中,如果执行的一个或更多个软件应用试图在相同的关键资源上同时操作,则会产生问题。例如当软件应用试图同时访问需要被原子化地更新的共享数据记录时,其会导致竞态条件,进而会导致程序错误。同步程序被用于防止这些条件发生。公知的同步方法使用锁定机制或无锁机制来提供对关键资源的软件应用访问以便防止竞态条件和类似问题的发生。
锁定机制使用的方法是一次仅允许一个软件应用来获取锁以及随后在关键资源上进行处理操作。当软件应用持有至关键资源的锁时,试图访问该关键资源的其他软件应用将被暂停并被置于等待队列中。一旦锁被释放,则在等待队列开头处的下一软件应用将得到锁并被允许前进到处理操作。虽然上文讨论的锁定同步方法防止了竞态条件,但是软件应用的必要暂停减慢了处理。此外,如果持有锁的软件应用无法完成处理,则程序会变得无响应。
另一公知方法(通常被称为无锁同步)确保仅一个软件应用能够更新关键资源。如果在第一个软件应用正在更新关键资源的同时第二个软件应用试图更新,则第二个软件应用的企图将失败。如果第二个软件应用失败,则在第一个软件应用完成对关键资源的更新之后第二个软件应用将重新起动更新企图。虽然无锁同步相比于锁定同步能够产生更好的执行性能,但是它并不总是有可能执行用于一些关键资源。其它公知方法(例如那些无等待的方法)需要过多的存储器并且需要数据组的最少三个副本。
发明内容
下述公开内容描述了用于访问控制器上的相干数据的系统和方法。该系统和方法包括每个均可以被读取或写入的第一缓冲区和第二缓冲区以及指示出第一或第二缓冲区中的哪个被读取而第一或第二缓冲区中的另一个被写入的指示符。该系统和方法也包括读同步协议和写同步协议,该读同步协议允许从指示符指示出是读缓冲区的缓冲区读取相干数据,该写同步协议允许向指示符指示出是写缓冲区的缓冲区写入相干数据。
方案1.一种用于访问控制器上的相干数据的方法,所述方法包括:
提供第一缓冲区和第二缓冲区,每个缓冲区都可以被读取或写入;
提供指示符,所述指示符指示所述第一或第二缓冲区中的哪个被读取而所述第一或第二缓冲区中的另一个被写入;
执行读同步协议,所述读同步协议允许从所述指示符指示是所述读缓冲区的缓冲区读取所述相干数据;以及
执行写同步协议,所述写同步协议允许向所述指示符指示是所述写缓冲区的缓冲区写入所述相干数据。
方案2. 根据方案1所述的方法,其中,必须被一起写入的所述相干数据被归类成数据组。
方案3. 根据方案1所述的方法,其中,所述相干数据是可执行程序的原子级元素。
方案4. 根据方案1所述的方法,其中,一旦完成写过程,所述指示符从指示所述写缓冲区切换成指示所述写缓冲区作为所述读缓冲区。
方案5. 根据方案1所述的方法,其中,执行所述读同步协议进一步包括将所述指示符本地地存储在读线程中以便防止发生由于所述指示符改变了哪个缓冲区是所述读缓冲区且哪个缓冲区是所述写缓冲区的指示而导致的讹误。
方案6. 根据方案5所述的方法,其中,执行所述读同步协议进一步包括确定在所述读期间所述指示符是否改变哪个缓冲区是所述读缓冲区且哪个缓冲区是所述写缓冲区的指示,并且如果是,则再次本地存储所述指示符并且再次读取以便获得最新更新的相干数据。
方案7. 根据方案1所述的方法,其中,执行所述写同步协议进一步包括锁定主核的操作系统调度程序,使得所述相干数据可以被写入到所述写缓冲区而不会有更高优先级任务的先占,从而使得尽可能快地执行所述相干数据的写入。
方案8. 一种用于访问车辆控制器上的相干数据的方法,所述方法包括:
提供第一缓冲区和第二缓冲区,每个缓冲区都可以被读取或写入;
提供指示符,所述指示符指示所述第一或第二缓冲区中的哪个被读取而所述第一或第二缓冲区中的另一个被写入,其中,在完成到所述写缓冲区的写入之后所述指示符切换所述指示;
执行读同步协议,所述读同步协议允许从所述指示符指示是所述读缓冲区的缓冲区读取相干数据;以及
执行写同步协议,所述写同步协议允许向所述指示符指示是所述写缓冲区的缓冲区写入相干数据。
方案9. 根据方案8所述的方法,其中,必须被一起写入的所述相干数据被归类成数据组。
方案10. 根据方案8所述的方法,其中,所述相干数据是可执行程序的原子级元素。
方案11. 根据方案8所述的方法,其中,多个软件应用控制车辆功能。
方案12. 根据方案8所述的方法,其中,执行所述读同步协议进一步包括锁定主核的操作系统调度程序以便确保在所述读同步协议期间不发生任务先占,以及将所述指示符本地地存储在读线程中以便防止发生由于所述指示符改变哪个缓冲区是所述读缓冲区且哪个缓冲区是所述写缓冲区的指示而导致的讹误。
方案13. 根据方案12所述的方法,其中,所述读同步协议进一步包括确定在所述读期间所述指示符是否改变哪个缓冲区是所述读缓冲区且哪个缓冲区是所述写缓冲区的指示,并且如果是,则再次本地地存储所述指示符并且再次读取以便获得最新更新的相干数据。
方案14. 根据方案8所述的方法,其中,所述写同步协议进一步包括锁定主核的所述OS调度程序使得所述相干数据可以尽可能快地被写入到所述写缓冲区而不会被更高优先级的OS任务先占,以及在完成写入且所述指示符已经切换之后释放所述主核的所述调度。
方案15. 一种用于访问控制器上的相干数据的系统,所述系统包括:
第一和第二缓冲区,每个缓冲区都可以被读取或写入;
指示符,所述指示符指示所述第一或第二缓冲区中的哪个被读取而所述第一或第二缓冲区中的另一个被写入;
读同步协议,所述读同步协议允许从所述指示符指示是所述读缓冲区的缓冲区读取相干数据;以及
写同步协议,所述写同步协议允许向所述指示符指示是所述写缓冲区的缓冲区写入相干数据。
方案16. 根据方案15所述的系统,其中,所述相干数据是可执行程序的原子级元素。
方案17. 根据方案15所述的系统,其中,一旦完成写过程,所述指示符切换指示所述写缓冲区到指示所述写缓冲区作为所述读缓冲区。
方案18. 根据方案17所述的系统,其中,所述读同步协议进一步包括确定在读期间所述指示符是否已经切换,并且如果是,则再次存储所述指示符并且再次读取以便获得最新更新的相干数据。
方案19. 根据方案15所述的系统,其中,所述写同步协议进一步包括锁定主核的所述OS调度程序使得所述相干数据可以尽可能快地被写入到所述写缓冲区而不会被更高优先级的OS任务先占。
结合附图从下述描述和所附权利要求中将显而易见到本发明的附加特征。
附图说明
图1是必须由同一供应商线程(runnable)一起(即相干地)更新的相干数据的示图;
图2是包括两个缓冲区和一个指示符的系统的示图;
图3是图2中所示的系统的读部分的同步协议的流程图;
图4是图2所示的系统的写部分的同步协议的流程图;
图5是利用图2的系统的具体软件线程R1的示图;
图6是示出图5的软件线程R1随时间的时间线以及试图读取由R1提供的相干数据的另一软件线程R2;
图7是示出软件线程R1和第二个软件线程R2随时间的另一时间线;以及
图8是示出软件线程R1和R2随时间的另一时间线。
具体实施方式
涉及用于支持在多核控制器上的相干数据访问的系统和方法的本发明实施例的下述讨论实质上仅是示例性的并且绝无意图限制本发明或其应用或使用。例如,虽然讨论的是车辆应用,但是这里描述的系统和方法可以被用于任意计算环境中。
图1是必须由同一线程或软件应用一起更新的相干数据10的示图。如这里所用的,“线程(runnable)”包括小的可执行的软件组分或软件功能。包括相干数据14、16和18的数据组12必须被更新成使得数据14、16和18由同一供应商线程Ra(由框50代表)一起(即,相干地)更新。例如数据14、16和18可以代表车辆的x-、y-和Z-轴全球定位卫星(GPS)位置数据。包括相关数据22和24的数据组20必须被更新成使得数据22和24由同一供应商线程(由框52代表)一起更新。例如数据22和24可以代表发动机汽缸位置和凸轮轴相位位置。如对于本领域技术人员所显而易见的,在车辆电子控制单元(ECU)中可以存在很多种的相干数据组。数据组30包括必须由同一供应商线程(由框56代表)一起更新的相关数据32和34,并且数据组40包括必须由同一供应商线程(由框54代表)一起更新的相关数据42和44。
每个数据14、16、18、22、24、32、34、42和44均是可执行程序的基本或者原子化的积木式元件。虽然数据组12、20、30和40必须被一起写入,但是数据14、16、18、22、24、32、34、42和44可以根据不同组被一起读取。在框50处,数据14、16和18被一起全部写入或更新。例如,如果数据14、16和18代表车辆的x-、y-和z-坐标,例如经度、纬度和高度,则如果数据16和18已经被更新而14没有被更新,车辆的位置就可能没有被精确地确定。因此,在这种情况下重要的是一起更新数据14、16和18。在框52处的另一示例中,针对具体应用,数据22和24被一起写入并且数据32独自被读取。在框54处的另一示例中,数据34独自被读取并且数据42和44由具体应用写入。在框56处的另一示例中,数据14、16和22一起由具体应用读取并且数据32和34一起由该具体应用写入。在框56处由供应商线程读取的数据14和16必须是相干的,从而意味着在框56处由供应商线程读取的14和16必须在先前时间在框50处相干地由供应商线程更新,例如上面讨论的车辆的经度和纬度坐标。在框58处的另一示例中,数据16和18被一起读取并且它们必须在框50处由供应商线程相干地更新,数据24独自被读取,并且数据42和44在框54处已经由供应商线程相干地更新之后被一起读取。示例50、52、54、56和58示出了在计算环境中读相干性可以以多种方式发生。此外,不同的线程可以读取相干数据的不同版本。例如,在框56处的数据16可以不是在框58处读取的同一数据16。因此,线程可以使用存储器中的分散数据真正并行地执行,而不需要使用本领域公知的锁定同步或无锁同步方法,从而避免与这些方法相关联的且在上文指出的问题。
本领域公知的且在上文讨论的锁定同步涉及对数据访问的锁定同步。在本申请中,提出锁定操作系统(OS)调度程序来同步协议,如下文所述。锁定OS调度程序是为了防止当前软件执行被同核上的更高优先级的OS任务先占。这是为了确保能够尽可能快地完成对相干数据的读或写访问。
图2是系统70的图示,其允许数据组12、20、30和40以快速、可靠且不需要大量存储器并使用两个缓冲区的方式被一起写入。系统70包括第一缓冲区72、第二缓冲区74和指示符76。指示符76指示从缓冲区72和74中的哪个读取。当线程Rr读取时,该线程将确定指示符76正指示缓冲区72或74中的哪个缓冲区作为缓冲区以从其读取。线程将从被指示的缓冲区72或74读取所想要的相干数据。当线程Rw写入时,线程确定指示符76指示缓冲区72或74中的哪个缓冲区以从其读取,并且写入指示符76没有指示或指向的缓冲区72或74。换言之,指示符总是指向读缓冲区,因此另一缓冲区被隐含地指示为是写缓冲区。下述同步协议与缓冲区72和74(一个用于读且另一个用于更新/写)结合使用,并且指示符76允许系统70利用单个写入器(其是用于安全关键软件应用的广泛使用的设计标准),从而保持成本较低同时提供更新的核数据而不需要如上所述的锁定机制的延迟、等待时间、昂贵部件或潜在的线程错误。
回到图2,在时间t0,如点82处所示,缓冲区74正被指示符76指向作为缓冲区以从其读取,如箭头78所示。缓冲区72被指示符76指示作为要被写入或更新的缓冲区,如虚线箭头80所示。在时间t1,如点84处所示,完成了向缓冲区72的写入,并且指示符76切换。因此,指示符76指向缓冲区72作为缓冲区以要从其读取,如箭头78所示,而缓冲区74被指向作为要写入的缓冲区。在时间t2,如点86处所示,指示符再次切换,从而缓冲区74具有箭头78指向缓冲区74作为读缓冲区,而缓冲区72被指示符76指示作为写缓冲区,如虚线箭头80所示。以此方式,相干数据永远不会被阻塞进入线程,同时仅被部分更新时相干数据被读取的风险不会发生。因此,在操作中,系统70在任意时间均提供单个写入,具有并行多个读取的能力,不需要全球(即多核)调度控制,并且对相干数据的访问可以以不同的操作系统任务速率和在不同核上进行。
图3是用于系统70的读部分的同步协议或算法90的流程图,其操作以防止指示符76在不同核或线程上的并行访问。在框92处,主核(仅针对主核)(即正执行当前代码的核)的操作系统(OS)调度程序被锁定以确保将不会发生更高优先级的任务的先占。在框94处,指示符76被本地存储在读线程中以便防止发生由于上述指示符76的切换过程而导致的讹误。接着,在框96处,从被指示的读缓冲区读取相干数据。在判定菱形框98处,算法检查以看指示符76是否已经切换到一个不同的缓冲区。如果指示符76现在正指向一个不同的缓冲区,则这意味着刚刚读的缓冲区已经变成在前一读访问96期间某个时刻的写缓冲区,因此,刚刚读取的数据可能不是相干的。如果指示符76已经再次切换要读取的数据需求,则算法返回到框94并且再次本地存储指示符,从而提供最新更新的相干数据。如果在判定菱形框98处,自从在框94处指示符已经被本地存储,指示符76还没有切换缓冲区,则数据读相干性被保证,OS调度程序被释放,从而意味着在框100处在主核上已经完成了相干数据读访问。
图4是用于上述系统70的写部分的同步协议或算法110的流程图。在框112处,主核的OS调度程序被锁定使得防止了更高优先级任务的先占。在框114处,相干数据被写入到由指示符76指示作为写缓冲区的缓冲区。在框116处,指示符76切换成指示被更新数据作为读缓冲区,因为在框114处刚刚完成了新写入。在框118处,在主核上释放OS调度程序。缓冲区72和74使用算法90和110以关于图2在上文所述方式从成为读缓冲区和写缓冲区切换。写算法110比读算法90简单,因为写算法110不需要涉及读过程。读算法90检查以看指示符76何时切换,其会良好地工作,因为写算法110虽然更简单但是比读算法90花费更长时间来完成。再次,锁定OS调度程序的目的是为了确保能够尽可能快地完成对相干数据的写访问或读访问。
图5示出了在框120处所示的软件线程R1,其以2.5毫秒的任务速率运行并且在框122处提供一组相干信号S,这是一组必须被相干地访问的信号,例如上述x-、y-和z-坐标。针对该组相干信号S产生例如上述缓冲区74和76的两个缓冲区。在产生缓冲区72和74的同时,产生如指示符76示出的“读_索引”变量以便指示这两个缓冲区72和74中的哪个应该被用于读访问。另一缓冲区将仅在该时刻被用于写访问。切换发生如在上面图2中所描述的,即在一个缓冲区将是读缓冲区且另一缓冲区将是写缓冲区的任意时刻。
图6-8示出了示例性时间线,其示出了随时间操作的图5的软件线程R1。在图6中,在框132、134和136处R1每2.5毫秒执行一次。因此,一旦在框132处R1执行,则2.5毫秒之后R1将在框134处再次执行,在那之后2.5毫秒R1然后将在框136处再次执行。在框132、134和136处的每次执行结束时,指示符76切换读缓冲区和写缓冲区,因为R1每2.5毫秒产生一组新信号S。在框132、134和136处的R1执行期间的任意时刻处可以产生个体信号S。在框138处,另一软件线程R2需要异步地且相干地读取S。在框138处软件线程R2比较“读_索引”,即使用算法90在读开始和读结束处的指示符76的指示。如果指示符76没有变化,则成功地完成了相干数据读取,这是因为读缓冲区总是包含相干数据。
图7是示出软件线程R1和R2的另一时间线。如图7中所示,如果在读访问期间指示符76已经从例如指向缓冲区72切换到指向缓冲区74,则在框140处重复由软件线程R2读取的数据,直到在框132处从指示符76没有检测到在读开始和读结束之间的变化。
图8是示出软件线程R1和R2的另一时间线,其示出了在框132处R1的延长的执行时间,其中在框138处在第二软件线程R2读取期间更新信号S。第二软件线程R2在框140处再次读取,并且于在框134(此时指示符76切换)处在执行结束处再次更新S之前在框140处R2完成读取。
这里描述的系统和方法提供的优点在于,系统是免等待的且无锁的并且确保在存在并行访问的情况下将进行读和写而没有优先级调换。确保了访问的数据是相干的。
如本领域技术人员将很好理解的,这里讨论的描述本发明的一些不同步骤和过程可以是指由计算机、处理器或使用电现象操纵和/或转换数据的其他电子计算装置来执行的操作。那些计算机和电子装置可以使用各种易失性和/或非易失性存储器,包括其上存储有可执行程序的非瞬时计算机可读介质,所述程序包括能够由计算机或处理器执行的各种代码或者可执行指令,其中存储器和/或计算机可读介质可以包括所有形式和类型的存储器和其他的计算机可读介质。
前文公开的讨论只是描述了本发明的示例性实施例。本领域的技术人员从这样的讨论且从附图和权利要求中将容易地认识到,能够在不背离如所附权利要求中所限定的本发明的精神和范围而做出各种改变、修改和变型。
Claims (19)
1.一种用于访问控制器上的相干数据的方法,所述方法包括:
提供第一缓冲区和第二缓冲区,每个缓冲区都可以被读取或写入;
提供指示符,所述指示符指示所述第一或第二缓冲区中的哪个被读取而所述第一或第二缓冲区中的另一个被写入;
执行读同步协议,所述读同步协议允许从所述指示符指示是所述读缓冲区的缓冲区读取所述相干数据;以及
执行写同步协议,所述写同步协议允许向所述指示符指示是所述写缓冲区的缓冲区写入所述相干数据。
2.根据权利要求1所述的方法,其中,必须被一起写入的所述相干数据被归类成数据组。
3.根据权利要求1所述的方法,其中,所述相干数据是可执行程序的原子化元素。
4.根据权利要求1所述的方法,其中,一旦完成写过程,所述指示符从指示所述写缓冲区切换成指示所述写缓冲区作为所述读缓冲区。
5.根据权利要求1所述的方法,其中,执行所述读同步协议进一步包括将所述指示符本地地存储在读线程中以便防止发生由于所述指示符改变了哪个缓冲区是所述读缓冲区且哪个缓冲区是所述写缓冲区的指示而导致的讹误。
6.根据权利要求5所述的方法,其中,执行所述读同步协议进一步包括确定在所述读取所述相干数据的期间所述指示符是否改变哪个缓冲区是所述读缓冲区且哪个缓冲区是所述写缓冲区的指示,并且如果是,则再次本地存储所述指示符并且再次读取以便获得最新更新的相干数据。
7.根据权利要求1所述的方法,其中,执行所述写同步协议进一步包括锁定主核的操作系统调度程序,使得所述相干数据可以被写入到所述写缓冲区而不会有更高优先级任务的先占,从而使得尽可能快地执行所述相干数据的写入。
8.一种用于访问车辆控制器上的相干数据的方法,所述方法包括:
提供第一缓冲区和第二缓冲区,每个缓冲区都可以被读取或写入;
提供指示符,所述指示符指示所述第一或第二缓冲区中的哪个被读取而所述第一或第二缓冲区中的另一个被写入,其中,在完成到所述写缓冲区的写入之后所述指示符切换所述指示;
执行读同步协议,所述读同步协议允许从所述指示符指示是所述读缓冲区的缓冲区读取相干数据;以及
执行写同步协议,所述写同步协议允许向所述指示符指示是所述写缓冲区的缓冲区写入相干数据。
9.根据权利要求8所述的方法,其中,必须被一起写入的所述相干数据被归类成数据组。
10.根据权利要求8所述的方法,其中,所述相干数据是可执行程序的原子化元素。
11.根据权利要求8所述的方法,其中,多个软件应用控制车辆功能。
12.根据权利要求8所述的方法,其中,执行所述读同步协议进一步包括锁定主核的操作系统调度程序以便确保在所述读取所述相干数据的期间不发生任务先占,以及将所述指示符本地地存储在读线程中以便防止发生由于所述指示符改变哪个缓冲区是所述读缓冲区且哪个缓冲区是所述写缓冲区的指示而导致的讹误。
13.根据权利要求12所述的方法,其中,所述读同步协议进一步包括确定在所述读取所述相干数据的期间所述指示符是否改变哪个缓冲区是所述读缓冲区且哪个缓冲区是所述写缓冲区的指示,并且如果是,则再次本地地存储所述指示符并且再次读取以便获得最新更新的相干数据。
14.根据权利要求8所述的方法,其中,所述写同步协议进一步包括锁定主核的操作系统调度程序使得所述相干数据可以尽可能快地被写入到所述写缓冲区而不会被更高优先级的操作系统任务先占,以及在完成写入且所述指示符已经切换之后释放所述主核的所述调度。
15.一种用于访问控制器上的相干数据的系统,所述系统包括:
第一和第二缓冲区,每个缓冲区都可以被读取或写入;
指示符,所述指示符指示所述第一或第二缓冲区中的哪个被读取而所述第一或第二缓冲区中的另一个被写入;
读同步协议,所述读同步协议允许从所述指示符指示是所述读缓冲区的缓冲区读取相干数据;以及
写同步协议,所述写同步协议允许向所述指示符指示是所述写缓冲区的缓冲区写入相干数据。
16.根据权利要求15所述的系统,其中,所述相干数据是可执行程序的原子化元素。
17.根据权利要求15所述的系统,其中,一旦完成写过程,所述指示符切换指示所述写缓冲区到指示所述写缓冲区作为所述读缓冲区。
18.根据权利要求17所述的系统,其中,所述读同步协议进一步包括确定在所述读取所述相干数据的期间所述指示符是否已经切换,并且如果是,则再次存储所述指示符并且再次读取以便获得最新更新的相干数据。
19.根据权利要求15所述的系统,其中,所述写同步协议进一步包括锁定主核的操作系统调度程序使得所述相干数据可以尽可能快地被写入到所述写缓冲区而不会被更高优先级的操作系统任务先占。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/278797 | 2014-05-15 | ||
US14/278,797 US9720742B2 (en) | 2014-05-15 | 2014-05-15 | Service and system supporting coherent data access on multicore controller |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105094084A CN105094084A (zh) | 2015-11-25 |
CN105094084B true CN105094084B (zh) | 2018-04-13 |
Family
ID=54361848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510247420.4A Active CN105094084B (zh) | 2014-05-15 | 2015-05-15 | 支持多核控制器上的相干数据访问的服务和系统 |
Country Status (3)
Country | Link |
---|---|
US (1) | US9720742B2 (zh) |
CN (1) | CN105094084B (zh) |
DE (1) | DE102015107654A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9871610B2 (en) * | 2015-10-30 | 2018-01-16 | Citrix Systems, Inc. | Method for packet scheduling using multiple packet schedulers |
DE112015007095B4 (de) * | 2015-12-03 | 2018-11-22 | Mitsubishi Electric Corporation | Multiplexsystem |
CN107305525A (zh) * | 2016-04-22 | 2017-10-31 | 上海真虹信息科技有限公司 | 一种基于双缓冲同步机制的测试数据处理方法 |
CN107678862B (zh) * | 2017-10-10 | 2021-04-13 | 中电科航空电子有限公司 | 一种解决arinc661规范中竞态条件的方法 |
FR3084500B1 (fr) * | 2018-07-26 | 2020-07-03 | Thales | Procede et dispositif electronique d'installation logicielles avioniques sur une plateforme comprenant un processeur multicoeurs, programme d'ordinateur et systeme electronique associes |
CN109976675B (zh) * | 2019-04-01 | 2023-02-03 | 广州市百果园信息技术有限公司 | 一种数据更新、读取方法、装置、设备及存储介质 |
US11975714B2 (en) | 2019-11-01 | 2024-05-07 | GM Global Technology Operations LLC | Intelligent vehicles with distributed sensor architectures and embedded processing with computation and data sharing |
WO2021189382A1 (en) * | 2020-03-26 | 2021-09-30 | Nokia Shanghai Bell Co., Ltd. | Scheduling release feedback |
Family Cites Families (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4399467A (en) * | 1981-10-13 | 1983-08-16 | Ncr Canada Ltd. | Method and apparatus for image data compression and decompression |
US5365283A (en) * | 1993-07-19 | 1994-11-15 | Texas Instruments Incorporated | Color phase control for projection display using spatial light modulator |
US5727233A (en) * | 1994-08-02 | 1998-03-10 | Apple Computer, Inc. | Byte-mode and burst-mode data transfer mechanism for a high-speed serial interface |
US6173442B1 (en) | 1999-02-05 | 2001-01-09 | Sun Microsystems, Inc. | Busy-wait-free synchronization |
US7984248B2 (en) * | 2004-12-29 | 2011-07-19 | Intel Corporation | Transaction based shared data operations in a multiprocessor environment |
US7577798B1 (en) | 2004-12-30 | 2009-08-18 | Sun Microsystems, Inc. | Space-adaptive lock-free queue using pointer-sized single-target synchronization |
JP4749002B2 (ja) * | 2005-02-25 | 2011-08-17 | ルネサスエレクトロニクス株式会社 | データ転送装置、画像処理装置及びデータ転送制御方法 |
US7484028B2 (en) * | 2005-12-20 | 2009-01-27 | Fujitsu Limited | Burst-capable bus bridges for coupling devices to interface buses |
US9448856B2 (en) | 2005-12-30 | 2016-09-20 | Level 3 Communications, Llc | Lock-free dual queue with condition synchronization and time-outs |
US7571301B2 (en) | 2006-03-31 | 2009-08-04 | Intel Corporation | Fast lock-free post-wait synchronization for exploiting parallelism on multi-core processors |
US7747996B1 (en) | 2006-05-25 | 2010-06-29 | Oracle America, Inc. | Method of mixed lock-free and locking synchronization |
JP5448355B2 (ja) * | 2007-05-23 | 2014-03-19 | 京セラドキュメントソリューションズ株式会社 | ステッピングモータ制御装置、画像形成装置、ステッピングモータ、およびステッピングモータの制御方法 |
US8804212B2 (en) * | 2007-05-23 | 2014-08-12 | Kyocera Document Solutions Inc. | Stepping motor control device capable of reducing load on CPU |
US8279796B1 (en) * | 2007-11-16 | 2012-10-02 | Bnsf Railway Company | Multiple-channel software defined radios and systems using the same |
US8095727B2 (en) | 2008-02-08 | 2012-01-10 | Inetco Systems Limited | Multi-reader, multi-writer lock-free ring buffer |
US20100125695A1 (en) * | 2008-11-15 | 2010-05-20 | Nanostar Corporation | Non-volatile memory storage system |
US8321635B2 (en) * | 2010-11-08 | 2012-11-27 | Lsi Corporation | Synchronizing commands for preventing data corruption |
US8504864B2 (en) | 2010-12-01 | 2013-08-06 | GM Global Technology Operations LLC | Data sensor coordination using time synchronization in a multi-bus controller area network system |
US9619417B2 (en) * | 2011-06-17 | 2017-04-11 | Alcatel Lucent | Method and apparatus for remote delivery of managed USB services via a mobile computing device |
US9378072B2 (en) * | 2014-05-30 | 2016-06-28 | GM Global Technology Operations LLC | Mechanisms and apparatus for embedded controller reconfigurable inter-processor communications |
-
2014
- 2014-05-15 US US14/278,797 patent/US9720742B2/en active Active
-
2015
- 2015-05-15 DE DE102015107654.3A patent/DE102015107654A1/de active Pending
- 2015-05-15 CN CN201510247420.4A patent/CN105094084B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US9720742B2 (en) | 2017-08-01 |
US20150331829A1 (en) | 2015-11-19 |
CN105094084A (zh) | 2015-11-25 |
DE102015107654A1 (de) | 2015-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105094084B (zh) | 支持多核控制器上的相干数据访问的服务和系统 | |
US9378069B2 (en) | Lock spin wait operation for multi-threaded applications in a multi-core computing environment | |
EP1960878A2 (en) | Coordinating access to memory locations for hardware transactional memory transactions and software transactional memory transactions | |
US9218288B2 (en) | Monitoring a value in storage without repeated storage access | |
US9542112B2 (en) | Secure cross-process memory sharing | |
CN102629221B (zh) | 用于分布式共享存储的任务同步方法、装置及系统 | |
JP2013171547A (ja) | 車両用制御装置 | |
US9335947B2 (en) | Inter-processor memory | |
WO2017188109A1 (ja) | 車両制御装置、及び車両システム | |
CN103329102A (zh) | 多处理器系统 | |
CN111201521A (zh) | 具有应用控制的早期写确认支持的存储器访问代理系统 | |
EP3274896B1 (en) | Configuration of a memory controller for copy-on-write with a resource controller | |
US10901914B2 (en) | Method for writing multiple copies into storage device, and storage device | |
US8972667B2 (en) | Exchanging data between memory controllers | |
US20180157605A1 (en) | Configuration of a memory controller for copy-on-write | |
JP2015067107A (ja) | 車両用制御装置 | |
WO2022009741A1 (ja) | 電子制御装置 | |
CN107315631B (zh) | 一种任务调度方法及装置 | |
US9003129B1 (en) | Techniques for inter-storage-processor cache communication using tokens | |
KR102377729B1 (ko) | 멀티 코어 프로세서 및 그것의 동작 방법 | |
US9785471B1 (en) | Execution of serialized work data with interlocked full area instructions | |
US9135058B2 (en) | Method for managing tasks in a microprocessor or in a microprocessor assembly | |
JP5703505B2 (ja) | バスパーティション構造を備えるコンピュータ | |
KR102498319B1 (ko) | 반도체 장치 | |
CN106033520B (zh) | 一种数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |