本發(fā)明涉及用于在至少一個(gè)計(jì)算單元中寫入以及讀取數(shù)據(jù)集的方法以及計(jì)算單元或者計(jì)算單元復(fù)合體以及用于方法執(zhí)行的計(jì)算機(jī)程序。
背景技術(shù):
在機(jī)動(dòng)車中控制設(shè)備被用作計(jì)算單元,以便有效地實(shí)現(xiàn)機(jī)動(dòng)車的各種功能。在這些控制設(shè)備的運(yùn)行的范圍中,一般來說需要寫入以及讀取不同的數(shù)據(jù)。為了維持這些數(shù)據(jù)的一致性應(yīng)注意的是,讀取和寫入過程、即必須讀取或者寫入數(shù)據(jù)的不同過程不相互妨礙或影響。
從de10229520a1中例如已知如下方法,在所述方法中針對(duì)兩個(gè)不一樣快的任務(wù)程序或者過程在合適的時(shí)間點(diǎn)復(fù)制參量,使得參量的復(fù)制以時(shí)間上等距的間隔來進(jìn)行,以便保證數(shù)據(jù)一致性。
技術(shù)實(shí)現(xiàn)要素:
根據(jù)本發(fā)明提出具有獨(dú)立專利權(quán)利要求的特征的用于寫入以及讀取數(shù)據(jù)集的方法以及計(jì)算單元或者計(jì)算單元復(fù)合體以及用于方法執(zhí)行的計(jì)算機(jī)程序。有利的設(shè)計(jì)方案是從屬權(quán)利要求以及隨后的說明書的主題。
根據(jù)本發(fā)明的方法用于在使用一個(gè)或多個(gè)寫入過程以及一個(gè)或多個(gè)讀取過程時(shí)在具有一定數(shù)量的存儲(chǔ)空間的至少一個(gè)計(jì)算單元中寫入以及讀取數(shù)據(jù)集。在此,在每個(gè)寫入過程中數(shù)據(jù)集的映像被寫入到存儲(chǔ)空間中并且在每個(gè)讀取過程中數(shù)據(jù)集的在相應(yīng)的讀取過程的起始時(shí)間點(diǎn)最后完整地被寫入的映像從所寫上的存儲(chǔ)空間中被讀取。數(shù)據(jù)集的內(nèi)容通常在這種寫入過程中變化。所述至少一個(gè)計(jì)算單元尤其可以是機(jī)動(dòng)車的、例如機(jī)動(dòng)車的控制設(shè)備中的至少一個(gè)計(jì)算單元。
為了確保數(shù)據(jù)集的一致性可以針對(duì)每個(gè)讀取過程創(chuàng)建在數(shù)據(jù)集的副本的意義上的被讀取的自身的映像。同樣可以在每個(gè)寫入過程中寫入數(shù)據(jù)集的自身的映像,所述映像在寫入結(jié)束之后被復(fù)制到數(shù)據(jù)集上。然而在此應(yīng)注意的是,在所寫入的映像到數(shù)據(jù)集的復(fù)制過程期間不創(chuàng)建針對(duì)讀取過程的映像并且在創(chuàng)建針對(duì)讀取過程的映像期間不將所寫入的映像復(fù)制到數(shù)據(jù)集上,以便確保數(shù)據(jù)集的一致性。這也被稱為互相排斥(英文:mutualexclusion)。然而,這導(dǎo)致長的持續(xù)時(shí)間,在所述持續(xù)時(shí)間期間計(jì)算性能保持不被使用。
而在所提出的方法中,計(jì)算性能保持不被使用的持續(xù)時(shí)間被顯著減少。這通過如下方式來實(shí)現(xiàn),即不必針對(duì)每個(gè)讀取過程創(chuàng)建自身的映像,在所述創(chuàng)建期間可能必須等待所寫入的映像到數(shù)據(jù)集上的復(fù)制。作為替代,讀取過程現(xiàn)在可以簡單地從所屬的存儲(chǔ)空間中讀取最后完整地被寫入的映像、即最當(dāng)前的完整的映像,而不必等待所寫入的映像的可能的復(fù)制過程。
所提出的方法對(duì)于多個(gè)如下過程來說也是特別有利的,所述過程同時(shí)讀取以及寫入并且尤其在使用靜態(tài)分配的存儲(chǔ)器(即可以被所述過程使用的存儲(chǔ)空間的數(shù)量被預(yù)先規(guī)定)的情況下尤其在多核單元的多個(gè)計(jì)算內(nèi)核上實(shí)施。
優(yōu)選地,在每個(gè)寫入過程中數(shù)據(jù)集的映像被寫入到如下存儲(chǔ)空間中,不從所述存儲(chǔ)空間讀取并且在另一寫入過程的范圍中不寫入到所述存儲(chǔ)空間中。以這種方式可以實(shí)現(xiàn)的是,讀取過程在寫入過程期間不被妨礙或者中斷。為了確保寫入過程不寫入到恰好從其中讀取的存儲(chǔ)區(qū)域中,例如可以規(guī)定:讀取過程在讀取期間相應(yīng)地通知:涉及的存儲(chǔ)空間恰好被使用。這在另一寫入過程中也可以以這種方式來實(shí)現(xiàn)。
有利地,不在寫入過程中將數(shù)據(jù)集的映像中寫入到數(shù)據(jù)集的映像最后完整地被寫入到其中的那個(gè)存儲(chǔ)空間中。以這種方式可以確保:針對(duì)由讀取過程來使用總是保證數(shù)據(jù)集的最當(dāng)前的映像。
有利的是,可以從相應(yīng)的存儲(chǔ)空間中同時(shí)在不同的讀取過程的范圍中讀取數(shù)據(jù)集的每個(gè)映像。這實(shí)現(xiàn)特別有效的存儲(chǔ)器利用。
優(yōu)選地使數(shù)據(jù)集的最后完整地被寫入的映像借助于參閱該映像對(duì)于隨后的讀取過程來說能夠讀取。這種參閱例如可以借助于所謂的全局指示器或指針來進(jìn)行,想要使用最當(dāng)前的映像的每個(gè)讀取過程于是可以將所述指示器或指針復(fù)制到其自身的局部指示器或者指針中。以這種方式因此可以非常簡單地使最當(dāng)前的或者最后被寫入的映像對(duì)于讀取過程來說能夠讀取。
有利地,在初始化至少一個(gè)計(jì)算單元時(shí)將數(shù)據(jù)集的映像寫入到存儲(chǔ)空間中。通過這種方式,在所述至少一個(gè)計(jì)算單元初始化或者啟動(dòng)之后尚未有寫入過程將映像寫入到存儲(chǔ)空間中時(shí),則也給讀取過程提供映像用于讀取。
適宜地,寫入過程和讀取過程的至少一個(gè)提高了一的數(shù)量被用作存儲(chǔ)空間的數(shù)量。以這種方式對(duì)于如下情況來說也提供足夠的存儲(chǔ)空間:同時(shí)每個(gè)讀取過程想要從另一存儲(chǔ)區(qū)域中讀取,這可能當(dāng)在讀取過程中的每個(gè)的起始時(shí)間點(diǎn)已經(jīng)有新的最當(dāng)前的映像可用時(shí)發(fā)生,并且每個(gè)寫入過程想要寫入。所述一個(gè)附加的存儲(chǔ)空間在此被設(shè)置用于最當(dāng)前的映像,所述映像優(yōu)選地不應(yīng)被覆寫。在此應(yīng)思考的是,在機(jī)動(dòng)車中的計(jì)算單元的情況下一般來說使用autosar(汽車開放系統(tǒng)架構(gòu))標(biāo)準(zhǔn),在所述autosar標(biāo)準(zhǔn)的情況下動(dòng)態(tài)地產(chǎn)生存儲(chǔ)空間是不可能的并且因此存儲(chǔ)空間的合適的數(shù)量應(yīng)從一開始就夠用。
此外,對(duì)于所提出的方法來說適宜的是,存儲(chǔ)區(qū)域可以基元地被預(yù)留,即例如從存儲(chǔ)區(qū)域讀取的讀取過程的請(qǐng)求可以不打斷地被實(shí)施。因此在用于讀取的請(qǐng)求期間不能開始將映像寫入到涉及的存儲(chǔ)空間中的寫入過程。
根據(jù)本發(fā)明的計(jì)算單元、例如機(jī)動(dòng)車的控制設(shè)備以及根據(jù)本發(fā)明的計(jì)算單元復(fù)合體尤其在編程技術(shù)上被設(shè)立用于執(zhí)行根據(jù)本發(fā)明的方法。
所述方法以計(jì)算機(jī)程序的形式的實(shí)現(xiàn)也是有利的,因?yàn)橛绕洚?dāng)實(shí)施的控制設(shè)備還用于另外的任務(wù)并且因此本來存在時(shí)這引起特別低的成本。用于提供計(jì)算機(jī)程序的合適的數(shù)據(jù)載體尤其是磁性的、光學(xué)的和電氣的存儲(chǔ)器、諸如硬盤、閃存存儲(chǔ)器、eeprom、dvd以及其他等等。程序通過計(jì)算機(jī)網(wǎng)絡(luò)(因特網(wǎng)、內(nèi)聯(lián)網(wǎng)等)的下載也是可以的。
本發(fā)明的另外的優(yōu)點(diǎn)和設(shè)計(jì)方案由說明書和所附的附圖得出。
本發(fā)明根據(jù)實(shí)施例示意性地被示出在附圖中并且下面參照附圖來描述。
附圖說明
圖1示意性地示出用于寫入以及讀取數(shù)據(jù)集的非根據(jù)本發(fā)明的方法的流程。
圖2至7示意性地示出在一種優(yōu)選的實(shí)施方式中在不同時(shí)間點(diǎn)的根據(jù)本發(fā)明的方法的流程。
具體實(shí)施方式
在圖1中示意性地示出用于寫入以及讀取數(shù)據(jù)集的非根據(jù)本發(fā)明的方法的流程。示例性地示出寫入到數(shù)據(jù)集100中的寫入過程300和讀取數(shù)據(jù)集100的三個(gè)讀取過程311、312、313。
寫入過程或讀取過程例如可以是在機(jī)動(dòng)車的運(yùn)行中的不同應(yīng)用或者應(yīng)用的不同步驟,所述不同應(yīng)用或者應(yīng)用的不同步驟想要對(duì)數(shù)據(jù)集進(jìn)行訪問。數(shù)據(jù)集例如可以是如下信息,所述信息一方面一再被更新并且所述信息另一方面一再盡可能以其最當(dāng)前的版本被需要。
為了寫入到數(shù)據(jù)集100中,現(xiàn)在這里可以首先由寫入過程將映像101寫入到存儲(chǔ)區(qū)域201中。在寫入過程300已完成映像101之后,該映像101可以被復(fù)制到數(shù)據(jù)集100上,使得數(shù)據(jù)集100是當(dāng)前的。
為了讀取數(shù)據(jù)集100,數(shù)據(jù)集100的自身的映像102、103或者104可以由讀取過程311、312、313中的每個(gè)分別被復(fù)制到所分配的存儲(chǔ)區(qū)域202、203或者204中并且從那里被讀取。
在此應(yīng)注意的是,在所寫入的映像101被復(fù)制到數(shù)據(jù)集100上期間以及從數(shù)據(jù)集100復(fù)制映像102、103、104之一期間,對(duì)于這些復(fù)制過程中的每個(gè)來說必須排斥其他的過程,以便得以維持?jǐn)?shù)據(jù)集100的一致性。在該互相排斥期間被排斥的過程與此相應(yīng)地不能工作,由此性能丟失或者保持不被使用。
在圖2至7中示意性地示出在一種優(yōu)選的實(shí)施方式中在不同時(shí)間點(diǎn)的根據(jù)本發(fā)明的方法的流程。這里也示例性地示出寫入到數(shù)據(jù)集100中的寫入過程300和讀取數(shù)據(jù)集100的三個(gè)讀取過程311、312、313??傆?jì)設(shè)置五個(gè)存儲(chǔ)空間201、202、203、204、205、即存在多于寫入和讀取過程的存儲(chǔ)空間。所述方法在此可以被實(shí)施在計(jì)算單元180、例如控制設(shè)備上。為了清楚起見,計(jì)算單元僅在圖2中被示出。
在圖2中現(xiàn)在示出在一個(gè)時(shí)間點(diǎn)、例如直接在所述方法被實(shí)施在其上的計(jì)算單元180的初始化之后的方法。在此,映像111被寫入到存儲(chǔ)空間中的一個(gè)中,在所述存儲(chǔ)空間中在該時(shí)間點(diǎn)尚未有存儲(chǔ)空間被使用,所述一個(gè)在此為存儲(chǔ)空間201。在該時(shí)間點(diǎn)是數(shù)據(jù)集100的唯一的并且因此也是最當(dāng)前的映像的該映像111的寫入例如可以被集成到計(jì)算單元的初始化過程中。
此外,創(chuàng)建例如所謂的指針或指示器形式的參閱250,所述參閱例如總是說明數(shù)據(jù)集的最當(dāng)前的映像在哪個(gè)存儲(chǔ)空間中、在此即映像111在存儲(chǔ)空間201中并且對(duì)于讀取過程311、312、313來說是可見的。
在圖3中現(xiàn)在示出通過寫入過程300來寫入映像。寫入過程為此選擇如下存儲(chǔ)空間,最當(dāng)前的映像111不處于所述存儲(chǔ)空間中并且也不從所述存儲(chǔ)空間讀取,并且將數(shù)據(jù)集的映像寫入到該存儲(chǔ)空間、這里存儲(chǔ)空間202中。
在圖4中現(xiàn)在示出映像111通過讀取過程311的讀取,而寫入過程300繼續(xù)寫入到存儲(chǔ)空間202中。讀取過程311通過參閱250知道:最當(dāng)前的映像處于哪個(gè)存儲(chǔ)空間中,在此所述讀取過程可以讀取的映像111處于存儲(chǔ)空間201中。
在讀取過程311從存儲(chǔ)區(qū)域201讀取期間,所謂的信號(hào)271可以被設(shè)定,以便想要寫入到存儲(chǔ)空間中的寫入過程知道:哪個(gè)存儲(chǔ)空間恰好在使用中并且因此不允許被寫入。
在圖5中,附加于圖4地示出映像111通過讀取過程312的讀取。讀取過程312基于參閱250也知道:數(shù)據(jù)集的最當(dāng)前的映像處于哪個(gè)存儲(chǔ)空間中。讀取過程312也設(shè)定信號(hào)272,以便將存儲(chǔ)空間201標(biāo)記為被使用的。
在讀取過程結(jié)束之后于是也可以刪除相應(yīng)的信號(hào)。以這種方式,為了寫入過程的寫入或者覆寫釋放不再從其中讀取并且不是具有最當(dāng)前的映像的存儲(chǔ)空間的存儲(chǔ)空間。因?yàn)樾碌淖x取過程總是讀取最當(dāng)前的映像,所以這種更老的映像也可以毫不猶豫地被覆寫。
現(xiàn)在在圖6中寫入過程300完成寫入到存儲(chǔ)空間202中并且已經(jīng)處于將新的映像寫入到存儲(chǔ)空間203中。在存儲(chǔ)空間202中完整地被寫入的映像112現(xiàn)在是最當(dāng)前的映像,因此參照250現(xiàn)在指向存儲(chǔ)空間202。以映像的讀取開始的讀取過程因此讀取存儲(chǔ)空間202中的映像212,如這在這里所示出的情況下在讀取過程311中是該情況。相應(yīng)地,信號(hào)271在存儲(chǔ)空間202中也被設(shè)定。
然而,讀取過程312例如尚未完成讀取存儲(chǔ)空間201中的映像111,使得讀取過程312繼續(xù)對(duì)存儲(chǔ)空間201進(jìn)行訪問。盡管已經(jīng)存在數(shù)據(jù)集的一個(gè)更當(dāng)前的映像,存儲(chǔ)空間201因此還不能重新被寫上。
在圖7中現(xiàn)在示出如下情況,在所述情況下三個(gè)讀取過程311、312、313中的每個(gè)從不同存儲(chǔ)空間、這里存儲(chǔ)空間201、202、203讀取相應(yīng)的映像112、111或者113。所述讀取在此借助于信號(hào)272、271、273來示出,這導(dǎo)致所述三個(gè)存儲(chǔ)空間311、312、313尚不允許重新被寫入。
此外,最當(dāng)前的映像然而從現(xiàn)在起已經(jīng)是存儲(chǔ)空間204中的映像114,這借助于參閱250來示出。因?yàn)閷懭脒^程300已經(jīng)重新寫入映像,所以所述寫入過程為此必須對(duì)存儲(chǔ)空間205進(jìn)行訪問,因?yàn)樗惺S嗟拇鎯?chǔ)空間出于所提到的原因尚不允許被寫入。這表明為什么存儲(chǔ)空間的數(shù)量應(yīng)當(dāng)比總計(jì)存在的過程高出一個(gè)。以這種方式不出現(xiàn)等待時(shí)間。
尤其應(yīng)注意的是,在所提出的方法中想要讀取數(shù)據(jù)集100的每個(gè)讀取過程可以在沒有等待時(shí)間的情況下對(duì)數(shù)據(jù)集100的最當(dāng)前的映像進(jìn)行訪問并且讀取該映像。然而,每個(gè)寫入過程同時(shí)也可以在沒有等待時(shí)間的情況下將映像寫入到存儲(chǔ)空間中。通過使用參閱在此也可以保證:每個(gè)讀取過程從在讀取過程的開始的時(shí)間點(diǎn)最當(dāng)前的映像讀取。
此外,在所提出的方法中有利的是,與在圖1中所示出的方法相比不再必須復(fù)制到數(shù)據(jù)集100中,這可以引起針對(duì)讀取過程的長的等待時(shí)間。總的來說,通過所提出的方法不僅減少系統(tǒng)中的跳動(dòng),而且減少系統(tǒng)中的總線負(fù)載,因?yàn)椴辉俦仨毊a(chǎn)生附加的副本。此外,可用的系統(tǒng)性能更好地被充分利用。