專利名稱:軟件模擬序網(wǎng)n+1個(gè)并行程序的結(jié)構(gòu)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)技術(shù),尤其涉及計(jì)算機(jī)軟件的一種模塊結(jié)構(gòu)類型。
在先有技術(shù)中,對(duì)并行流程圖的看法是“N個(gè)流程和數(shù)據(jù)的互連”,先有發(fā)明序網(wǎng)計(jì)算機(jī)認(rèn)為并行流程圖實(shí)際有N+1個(gè)序,以及在N+1個(gè)序的結(jié)構(gòu)下的分布數(shù)據(jù)令牌結(jié)構(gòu),如圖1A所示,稱為序網(wǎng)。在用計(jì)算機(jī)實(shí)現(xiàn)并行流程圖時(shí),先有發(fā)明認(rèn)為N+1個(gè)序是基本要素,必須有N+1個(gè)硬件的流來(lái)對(duì)應(yīng),是(并行)計(jì)算機(jī)可以運(yùn)行的基本特點(diǎn)。在N+1個(gè)流序的結(jié)構(gòu)條件下,為了維持并行流程圖的功能,先有技術(shù)采用了一種分布令牌結(jié)構(gòu),和第N+1個(gè)流序執(zhí)行(數(shù)據(jù))令牌一致化的結(jié)構(gòu)。因此,先有發(fā)明生成一種具有N+1個(gè)流的計(jì)算機(jī)結(jié)構(gòu),該結(jié)構(gòu)也是圖1A的形式,并定義為序網(wǎng)計(jì)算機(jī)。
序網(wǎng)計(jì)算機(jī)結(jié)構(gòu)包括N+1個(gè)并行程序和分布數(shù)據(jù)令牌的連接結(jié)構(gòu)。由于從程序角度看,序網(wǎng)只是用N+1個(gè)并行程序(代替原來(lái)N個(gè)程序)的運(yùn)行控制方法。因此,本文從運(yùn)行控制角度,稱序網(wǎng)結(jié)構(gòu)為“并程”或“N+1并程”。同時(shí),將過(guò)去技術(shù)中,以N個(gè)并行程序的處理結(jié)構(gòu),稱為“N并程”。盡管并程或N并程概念不同,其分支程序間要傳送的數(shù)據(jù)是一樣的,本發(fā)明將上述并程和N并程的互連數(shù)據(jù)稱為并程數(shù)據(jù),在下面描述也會(huì)簡(jiǎn)稱為數(shù)據(jù)。
N+1并程結(jié)構(gòu)如圖1A所示,并程包括N+1個(gè)程序100、101、102、103(本圖和本發(fā)明描述中取N=3,以后不再作說(shuō)明),和四個(gè)分布(數(shù)據(jù))令牌108。新增加的第N+1個(gè)程序100又稱為一致化程序。分布(數(shù)據(jù))令牌108在程序中表現(xiàn)為三種新的指令,包括寫數(shù)據(jù)指令TSET 104,讀數(shù)據(jù)指令TTST 105,和并程數(shù)據(jù)一致化指令TCOS 106。圖中,箭頭表示數(shù)據(jù)傳送路徑,標(biāo)記107表示分布令牌的一致化操作。其運(yùn)行原理如下●當(dāng)S1、S2、或S3程序運(yùn)行到寫數(shù)據(jù)指令TSET 104時(shí),表示寫數(shù)據(jù)。在寫數(shù)據(jù)的同時(shí),設(shè)置令牌=1,表示該并程數(shù)據(jù)的一致化操作允許執(zhí)行。
●當(dāng)一致化程序100運(yùn)行到一致化指令TCOS 106時(shí),執(zhí)行一個(gè)并程數(shù)據(jù)的一致化操作。在執(zhí)行該分布數(shù)據(jù)令牌的一致化操作107時(shí),一致化操作是數(shù)據(jù)和令牌從源104出發(fā),在該分布數(shù)據(jù)令牌108內(nèi)的廣播。在一致化傳送中要測(cè)試令牌,若令牌無(wú)效,該一致化傳送重新執(zhí)行。直至出現(xiàn)有效令牌,才進(jìn)入下一條指令。
●當(dāng)S1、S2、或S3程序運(yùn)行到讀數(shù)據(jù)指令TTST時(shí),表示讀數(shù)據(jù)。在讀數(shù)據(jù)的同時(shí),進(jìn)行令牌測(cè)試。若令牌無(wú)效,則程序要重新讀數(shù)據(jù),直至出現(xiàn)有效的令牌,才進(jìn)入下一條指令。
顯然,在多機(jī)結(jié)構(gòu)下,N+1并程依靠一個(gè)新增的一致化程序100,在分布數(shù)據(jù)令牌結(jié)構(gòu)的支持下,實(shí)現(xiàn)了并程內(nèi)部的并行計(jì)算,包括并程分支程序的同步和數(shù)據(jù)傳送。其中,一個(gè)數(shù)據(jù)的傳送需要三條分布在不同程序中的指令,二次同步協(xié)調(diào)。它們是寫數(shù)據(jù)(產(chǎn)生令牌),令牌一致化(對(duì)寫令牌檢測(cè)和協(xié)調(diào)),讀數(shù)據(jù)(對(duì)一致化令牌檢測(cè)和協(xié)調(diào))。一致化程序100的特點(diǎn)是驅(qū)動(dòng)并程數(shù)據(jù)的序運(yùn)行,沒有數(shù)值計(jì)算內(nèi)容。
事實(shí)上,在多機(jī)結(jié)構(gòu)下,N+1并程依靠一個(gè)新增的一致化程序100,另外還支持了并程的嵌套功能。在結(jié)構(gòu)上,并程的嵌套是二個(gè)并程有父子關(guān)系,父并程的N+1個(gè)分支程序同時(shí)為子并程的N+1個(gè)分支程序所調(diào)用(中斷)。在數(shù)值計(jì)算模型上,如果父子并程沒有數(shù)據(jù)連接關(guān)系(如來(lái)自外部中斷事件的子并程),嵌套時(shí)可以在父級(jí)N+1個(gè)分支程序的任何位置。如果父子并程有數(shù)據(jù)關(guān)系(程序結(jié)構(gòu)的需要),即算法要求子(嵌套)并程和父級(jí)并程有上下文關(guān)系。舉例來(lái)說(shuō),如果在1號(hào)分支程序中發(fā)出的一個(gè)子并程的嵌套調(diào)用,子并程計(jì)算需要父并程所有N+1個(gè)并程分支程序準(zhǔn)備一定數(shù)據(jù),表示父級(jí)各個(gè)分支程序各自要運(yùn)行過(guò)某個(gè)程序點(diǎn),才能允許子并程的調(diào)用,這是數(shù)據(jù)的上下文聯(lián)系的需要。這實(shí)際上表示子并程的調(diào)用(嵌套)是串型的,表示子并程調(diào)用包括二個(gè)參量在父并程分支程序中的子并程調(diào)用指令(編程很方便),和父并程運(yùn)行順序相關(guān)的調(diào)用許可控制。
上述N+1個(gè)程序點(diǎn)定義了子并程調(diào)用位置的許可區(qū)。用N個(gè)分支程序控制這個(gè)上下文關(guān)系比起用一致化程序100來(lái)控制要難一個(gè)量級(jí)??刂瓢ù_立許可位置,和并程數(shù)據(jù)序的關(guān)系,以及實(shí)際的執(zhí)行,其中,并程數(shù)據(jù)序就是上下文的數(shù)據(jù)。實(shí)際的許可執(zhí)行方法很多,可以用一個(gè)并程數(shù)據(jù)加上特定的解釋來(lái)代替子并程調(diào)用許可信號(hào),也可以專門設(shè)置新的指令。
因此,支持子并程嵌套調(diào)用的關(guān)鍵是父并程有一個(gè)并程數(shù)據(jù)序的實(shí)際執(zhí)行過(guò)程,和一個(gè)程序結(jié)構(gòu)來(lái)控制并程數(shù)據(jù)序的運(yùn)行。有了上述二個(gè)特征,子并程的許可可以在程序控制下靈活處理,并且可以編程定義和上下文數(shù)據(jù)的有序關(guān)系。并程嵌套能力對(duì)于程序的通用性結(jié)構(gòu)能力至關(guān)重要,顯然,并程的第N+1個(gè)程序是支持并程嵌套的關(guān)鍵條件。
序網(wǎng)計(jì)算機(jī)的并程模塊有下列特征●序網(wǎng)計(jì)算機(jī)的并程模塊結(jié)構(gòu)簡(jiǎn)潔●并行模塊具備一個(gè)數(shù)據(jù)序特征,支持并程的并行計(jì)算,數(shù)據(jù)序來(lái)自第N+1個(gè)程序Sc。
●多個(gè)并程模塊之間允許結(jié)構(gòu)上的嵌套。
●各分支程序是獨(dú)立的程序模塊結(jié)構(gòu)。
進(jìn)一步,可以創(chuàng)建單機(jī)調(diào)用并程的指令,實(shí)現(xiàn)并程模塊之間的嵌套結(jié)構(gòu)。創(chuàng)建在第N+1程序中的子并程調(diào)用許可功能,實(shí)現(xiàn)子并程的調(diào)用許可。
●創(chuàng)建單機(jī)中的調(diào)用并程指令,實(shí)現(xiàn)并程調(diào)用。
●一條調(diào)用指令有1到N個(gè)并行的并發(fā)調(diào)用能力。
●利用現(xiàn)有的并程數(shù)據(jù)結(jié)構(gòu)來(lái)代替子并程調(diào)用許可。
序網(wǎng)計(jì)算機(jī)技術(shù)明確了并行流程圖有N+1個(gè)并程分支程序,但是,目前大多數(shù)人對(duì)并行流程圖的概念還是N個(gè)流程。這個(gè)觀念的差異,在多機(jī)結(jié)構(gòu)下,限制了并行技術(shù)的發(fā)展;在單機(jī)環(huán)境下,這種差異變小,不易分辨。但是,在一些特定的情況下,這種概念差異就會(huì)在具體結(jié)構(gòu)中表現(xiàn)出來(lái)。
本發(fā)明是從序網(wǎng)計(jì)算機(jī)的N+1并程分支程序的角度來(lái)看并程進(jìn)入下列單機(jī)環(huán)境的二種結(jié)構(gòu)。
根據(jù)并行計(jì)算的流序匹配原理,并行模塊的本質(zhì)是有N+1個(gè)序,計(jì)算機(jī)需要N+1個(gè)硬件的流支持,實(shí)現(xiàn)N+1個(gè)流序匹配。在單機(jī)環(huán)境下,計(jì)算機(jī)只有一個(gè)流,因此,必須先把N+1個(gè)序合并成一個(gè)序,才能實(shí)現(xiàn)流序匹配。合并的核心是對(duì)N+1個(gè)序進(jìn)行時(shí)分處理。同時(shí),盡管過(guò)去在理解上是做N個(gè)序的合并,實(shí)質(zhì)上做的還是N+1個(gè)序的合并,存在一種實(shí)際操作和概念理解上的差異。
先有技術(shù)有下列二種合并N+1個(gè)序?yàn)橐粋€(gè)序的方法,形成不同的結(jié)構(gòu)。圖1B所示的是一種直接組合的簡(jiǎn)單結(jié)構(gòu),沒有并程分支程序的獨(dú)立結(jié)構(gòu)問(wèn)題,使上述實(shí)際操作和概念理解上的差異被掩蓋了。由于圖1C要求獨(dú)立的分支程序結(jié)構(gòu),上述差異的影響充分表現(xiàn)出來(lái),形成一種N并程結(jié)構(gòu),即用N并程結(jié)構(gòu)代替N+1并程的實(shí)際結(jié)構(gòu)。
圖1B是直接合并N+1個(gè)序成為一個(gè)序的結(jié)構(gòu)圖。這是將N+1個(gè)分支程序合并成一個(gè)不可分割的串型程序的方法。其運(yùn)算結(jié)果不變,但運(yùn)行過(guò)程不同,因此,是一個(gè)計(jì)算過(guò)程范疇的問(wèn)題。
如圖1B所示,S1 111,S2 112,S3 113是三個(gè)程序,各自都已經(jīng)拆散成多個(gè)程序段114-125。各段右側(cè)的圈表示該程序段產(chǎn)生的并程數(shù)據(jù)(由寫數(shù)據(jù)指令104產(chǎn)生),箭頭線指向該并程數(shù)據(jù)在其他程序段需要應(yīng)用(讀數(shù)據(jù)指令105)的位置。然后,將這些拆散的段組合,組合的必要條件是組合后的序和全部N+1個(gè)序匹配(因此,拆散時(shí)的分段方法也是有要求的)。顯然,所有的箭頭線必須是向下,而不能向上。該特點(diǎn),就是并程數(shù)據(jù)一致化序Sc 110中的序。合并后成為一個(gè)程序126是一個(gè)串型的程序,是一個(gè)不可分割的模塊。
N并程概念是沒有第N+1個(gè)序Sc 110,由于Sc和數(shù)值計(jì)算結(jié)果沒有關(guān)系,加上在單機(jī)環(huán)境下,不再需要一致化數(shù)據(jù)的傳送,只要合并后的單機(jī)程序126滿足全部N+1個(gè)序的關(guān)系即可,因此,對(duì)N并程或N+1并程二個(gè)概念來(lái)講,上述的合并實(shí)現(xiàn)數(shù)值計(jì)算的結(jié)果可以是一樣的。這是造成N+1概念長(zhǎng)期沒有得到重視的原因之一。
在單機(jī)環(huán)境下,本圖所示的合并方式是最常用的方法。通俗的講,第N+1個(gè)流序就是數(shù)據(jù)先寫后讀的排序模式。經(jīng)過(guò)合并處理,一個(gè)并程模塊變成一個(gè)單機(jī)中常見的(子)程序模塊。
如果一個(gè)經(jīng)過(guò)合并處理的并程模塊是一個(gè)中斷程序或子程序,正在運(yùn)行的程序也是一個(gè)經(jīng)過(guò)合并處理的并程模塊,就相當(dāng)于實(shí)現(xiàn)了并程模塊的嵌套。一個(gè)子并程調(diào)用在(多機(jī)的)序網(wǎng)計(jì)算機(jī)環(huán)境中,有分布的調(diào)用指令和串型的調(diào)用許可二個(gè)條件,以便適應(yīng)上下文的算法需要;但是,在單機(jī)環(huán)境的圖1B結(jié)構(gòu)下,N+1個(gè)序合并成一個(gè)序,調(diào)用指令的位置隱含了調(diào)用許可,以滿足上下文的算法需要。當(dāng)然,所有描述只是眾所周知的單機(jī)中斷程序或調(diào)用子程序在本發(fā)明視角下的一種解釋。
N+1個(gè)序直接合并成一個(gè)序的并程模塊結(jié)構(gòu)非常簡(jiǎn)單,可以支持并行計(jì)算(同步等運(yùn)行),可以支持并程間的可嵌套性能,都是圖1B方法的優(yōu)勢(shì)。但是,第N+1個(gè)序Sc中的并程數(shù)據(jù)序必須有固定的序結(jié)構(gòu),子并程的調(diào)用位置也必須固定是不足之處,使上述直接合并方法比較適合于計(jì)算,而不適合多程序的管理。各并程分支程序沒有獨(dú)立的模塊結(jié)構(gòu)也是一個(gè)不足,不能實(shí)現(xiàn)(某些特定場(chǎng)合下)各分支程序加載或卸載等功能。
綜上所述,該結(jié)構(gòu)有下列特點(diǎn)●并程模塊結(jié)構(gòu)簡(jiǎn)單。
●并程模塊支持并行計(jì)算,但計(jì)算功能受并程數(shù)據(jù)序固定化的約束。
●并程模塊允許并程間嵌套。
●并程模塊中各并程分支程序的程序結(jié)構(gòu)不是獨(dú)立模塊。
在某些實(shí)際應(yīng)用中需要并程各分支程序在機(jī)器碼層保持獨(dú)立的模塊結(jié)構(gòu)(例如需要對(duì)分支程序加載和卸載操作),先有技術(shù)基于并行流程圖有N個(gè)流程的概念,產(chǎn)生如圖1C所示的N并程結(jié)構(gòu)。N并程的N個(gè)分支程序有獨(dú)立結(jié)構(gòu)。在單機(jī)環(huán)境下,一個(gè)簡(jiǎn)單的設(shè)想是讓N個(gè)分支程序時(shí)分運(yùn)行,時(shí)分需要一個(gè)N并程管理模塊,形成如圖1C所示的,包括一個(gè)N并程管理模塊130和N個(gè)獨(dú)立結(jié)構(gòu)的N并程分支程序131、132、133的結(jié)構(gòu)。要保持N個(gè)獨(dú)立并程分支程序和傳統(tǒng)程序概念一致,N并程管理模塊130不能是一個(gè)簡(jiǎn)單的時(shí)分問(wèn)題,需要解決下列問(wèn)題●N并程分支程序的時(shí)分管理。
這是一個(gè)眾所周知的算法模型。N并程管理模塊130是父級(jí)結(jié)構(gòu),N個(gè)并程分支程序是子級(jí)。模塊130進(jìn)行時(shí)分調(diào)度,選定一個(gè)并程分支程序運(yùn)行。該分支程序在運(yùn)行中,如果條件不能滿足,不能運(yùn)行時(shí),分支程序自動(dòng)進(jìn)入懸掛,并退回到模塊130,使可以另選下一個(gè)并程分支程序。如此往返,一直到全部并程分支程序執(zhí)行完畢,并有N并程管理模塊130運(yùn)行結(jié)束,退出。因此,單純的時(shí)分管理結(jié)構(gòu)并不復(fù)雜。
如果N個(gè)程序是并行計(jì)算程序,相互的數(shù)據(jù)交換使必須有一個(gè)正確的并程數(shù)據(jù)序存在,上述時(shí)分算法結(jié)構(gòu)可以使N并程全部執(zhí)行完畢,但實(shí)際執(zhí)行的并程數(shù)據(jù)序,在時(shí)分模塊130的處理下是不加控制的,即實(shí)際的并程數(shù)據(jù)序是不確定的。不能確定的并程數(shù)據(jù)序,使實(shí)現(xiàn)N并程相互間的嵌套需要的上下文控制變得十分困難。同時(shí),由于沒有第N+1個(gè)程序,使分布在各分支程序中的調(diào)用N并程的指令也不能通過(guò)許可來(lái)排序,影響了N并程之間的嵌套能力。
●N并程分支程序的運(yùn)行同步。
根據(jù)本發(fā)明的觀點(diǎn),同步過(guò)程的本質(zhì)是執(zhí)行一個(gè)正確的并程數(shù)據(jù)序N并程的結(jié)構(gòu)沒有第N+1個(gè)一致化程序和指令,因此,一個(gè)數(shù)據(jù)的傳送從“寫”“一致化”和“讀”三步的一般狀況,轉(zhuǎn)為二步結(jié)構(gòu)。如“寫_一致化”和“讀”。寫_一致化在各個(gè)分支程序中啟動(dòng),在客觀上,各個(gè)分布的寫_一致化操作仍必須有一個(gè)正確的并程數(shù)據(jù)序關(guān)系。在讀數(shù)據(jù)發(fā)現(xiàn)檢測(cè)無(wú)效時(shí),該分支程序要退出,返回到父級(jí)的N并程時(shí)分管理模塊130。通過(guò)時(shí)分管理模塊的調(diào)度,可以使全部的分支程序得到執(zhí)行,完成N并程的運(yùn)行。其中,要求各分支程序之間的數(shù)據(jù)序在邏輯上是一致的,不能出錯(cuò)。
●N并程分支程序間的數(shù)據(jù)通訊。
并程分支程序間的通訊有很多方法,在采用通訊包結(jié)構(gòu)的情況下,通訊包的結(jié)構(gòu)和解釋也進(jìn)入了模塊130的結(jié)構(gòu)。他們和程序同步管理是不同的處理。當(dāng)然,數(shù)據(jù)通訊也可以脫離于N并程管理模塊130的結(jié)構(gòu)范圍,獨(dú)立處理。
N并程在先有技術(shù)中是軟件設(shè)計(jì),有些結(jié)構(gòu)并不公開,因此本發(fā)明的評(píng)論不能完全。但是,從根本上講,N并程運(yùn)行缺少并程數(shù)據(jù)序和獨(dú)立的第N+1個(gè)程序,影響了N并程的可嵌套性和并行計(jì)算能力。另外,實(shí)際上N并程運(yùn)行時(shí),其內(nèi)部也必須有類似于處理第N+1個(gè)流序的內(nèi)容,并通過(guò)其他結(jié)構(gòu)來(lái)表現(xiàn)。例如,消息隊(duì)列是一種進(jìn)程間的通訊方式,是一種互連信息的排隊(duì),但它不是程序,沒有程序那樣主動(dòng)運(yùn)行的驅(qū)動(dòng)能力。
N并程的情況綜述如下●N并程管理模塊處理功能太多,結(jié)構(gòu)復(fù)雜。
●N并程支持并行計(jì)算,但由于其分支程序連接是基于通訊,有粒度和并行功能的限制。
●N并程之間的嵌套關(guān)系有困難。
●N并程分支程序有獨(dú)立結(jié)構(gòu),支持分支程序的加載和卸載。
N并程和圖1A所示的序網(wǎng)功能相比,在并行性能上還不如多機(jī)系統(tǒng)。情況如下●單機(jī)環(huán)境和多機(jī)環(huán)境差別。
●N并程結(jié)構(gòu)相當(dāng)復(fù)雜。
●N并程運(yùn)行中沒有并程數(shù)據(jù)序,沒有并程數(shù)據(jù)序處理同步和計(jì)算的能力。
●N并程沒有第N+1個(gè)程序可以支持“子N并程”的調(diào)用許可,不能和并程數(shù)據(jù)序結(jié)合,難以實(shí)現(xiàn)嵌套需要的上下文處理。
●N并程有獨(dú)立的分支程序結(jié)構(gòu)。本發(fā)明的目的先有序網(wǎng)計(jì)算機(jī)技術(shù)表明,N+1并程是并行流程圖的自然特征。在該自然結(jié)構(gòu)下,并程有N+1個(gè)在同一個(gè)層次上運(yùn)行的分支程序,由N+1個(gè)并程分支程序控制和實(shí)現(xiàn)同步和數(shù)據(jù)傳送,并支持并程的嵌套。本發(fā)明進(jìn)入單機(jī)環(huán)境,要求能保持上述N+1并程分支程序獨(dú)立運(yùn)行、以及運(yùn)行中的同步和數(shù)據(jù)處理,支持并程的嵌套結(jié)構(gòu)的特點(diǎn)。如果可以保持這些性能,在結(jié)構(gòu)上只要增加一個(gè)N+1個(gè)并程分支程序的時(shí)分管理模塊即可。單純的時(shí)分管理比較容易處理,只需要將序網(wǎng)計(jì)算機(jī)的N+1個(gè)分支程序的等待狀態(tài),轉(zhuǎn)化為懸掛、就緒等類似于進(jìn)程的狀態(tài)結(jié)構(gòu)。時(shí)分管理模塊和N+1個(gè)并程分支程序肯定是不同層的。和先有技術(shù)圖1C所示的N并程結(jié)構(gòu)相比,本發(fā)明的第N+1個(gè)并程分支程序是一個(gè)主動(dòng)運(yùn)行的、執(zhí)行并程數(shù)據(jù)序,和支持N+1并程嵌套的程序。顯然,符合其結(jié)構(gòu)的自然本性。從而使本發(fā)明的N+1并程結(jié)構(gòu)成為一種一般性結(jié)構(gòu)并程是一種符合模型自然特征的結(jié)構(gòu),在多機(jī)系統(tǒng)中,序網(wǎng)計(jì)算機(jī)是一種符合這個(gè)自然規(guī)律的計(jì)算機(jī)模型。在單機(jī)環(huán)境中,也應(yīng)當(dāng)建立符合這個(gè)自然規(guī)律的特征。
因此,本發(fā)明的目的是創(chuàng)建一種單機(jī)環(huán)境下的具備N+1個(gè)運(yùn)行程序的并程結(jié)構(gòu)。其中,第N+1個(gè)并程分支程序是一個(gè)執(zhí)行并程數(shù)據(jù)序的程序和支持并程嵌套結(jié)構(gòu)的程序。
根據(jù)本發(fā)明的目的創(chuàng)建的一種單機(jī)環(huán)境下的并程結(jié)構(gòu)包括●簡(jiǎn)單的處理N+1個(gè)并程分支程序的并程時(shí)分管理結(jié)構(gòu);●第N+1個(gè)并程分支程序建立并程數(shù)據(jù)序,實(shí)現(xiàn)并行計(jì)算中的運(yùn)行同步和數(shù)據(jù)傳送功能;●支持并程和并程間的嵌套關(guān)系;以及●并程N(yùn)+1個(gè)分支程序是獨(dú)立的模塊化結(jié)構(gòu)。
上述四項(xiàng)功能,不僅在單項(xiàng)上集中了圖1A,圖1B和圖1C的優(yōu)點(diǎn),更有綜合后的創(chuàng)新優(yōu)勢(shì)。
本發(fā)明的目的是建立一種將并行功能合理分配的結(jié)構(gòu),在完成上述并行性能后,還進(jìn)一步創(chuàng)造出新的計(jì)算資源。包括●由第N+1個(gè)程序控制的“并程數(shù)據(jù)序”,和子并程調(diào)用許可,表現(xiàn)并程運(yùn)行的過(guò)程特征。
●有余力的第N+1個(gè)程序資源。
●有余力的并程時(shí)分管理模塊。
本發(fā)明自此開始進(jìn)入本發(fā)明的結(jié)構(gòu)描述。本發(fā)明的新穎獨(dú)特的特征、使用方法、發(fā)明目的等內(nèi)容在參照以下將要詳細(xì)描述的實(shí)施例和相關(guān)的附圖后,會(huì)得到很好的理解。其中圖1A是先有技術(shù)序網(wǎng)計(jì)算機(jī)的結(jié)構(gòu)和功能圖。
圖1B是先有技術(shù)直接合并N+1個(gè)序成為一個(gè)序的結(jié)構(gòu)圖。
圖1C是先有技術(shù)N并程結(jié)構(gòu)圖。
圖2A是本發(fā)明的N+1并程結(jié)構(gòu)圖。
圖2B是本發(fā)明的N+1并程的實(shí)用化結(jié)構(gòu)圖。
圖2C是本發(fā)明的并程標(biāo)志圖。
圖2D是本發(fā)明的一個(gè)并程數(shù)據(jù)標(biāo)志圖。
圖3A是本發(fā)明并程管理程序的流程圖。
圖3B是本發(fā)明的寫數(shù)據(jù)子程序流程圖。
圖3C是本發(fā)明的數(shù)據(jù)一致化子程序流程圖。
圖3D是本發(fā)明的讀數(shù)據(jù)子程序流程圖。
圖3E是本發(fā)明的N+1并程分支程序的結(jié)構(gòu)圖。
下面,結(jié)合附圖,我們將進(jìn)一步清楚地說(shuō)明本發(fā)明的各種目的和優(yōu)點(diǎn)。
本發(fā)明的結(jié)構(gòu)包括時(shí)分管理模塊201,N+1個(gè)并程分支程序模塊207,并程分支程序懸掛處理202。參照?qǐng)D1A,本發(fā)明在單機(jī)環(huán)境下實(shí)現(xiàn)并程的方法是保持N+1個(gè)獨(dú)立的并程分支程序結(jié)構(gòu)207,保留圖1A具備的自動(dòng)的并程分支程序間的運(yùn)行同步和數(shù)據(jù)傳送能力,在這個(gè)基礎(chǔ)上,再進(jìn)行分支程序的時(shí)分管理。時(shí)分管理就是利用并程分支程序的懸掛、就緒、和運(yùn)行狀態(tài),控制分支程序的分時(shí)運(yùn)行。
每一次,N+1個(gè)并程分支程序模塊207中只有一個(gè)分支程序可以運(yùn)行。該分支程序中原有的讀并程數(shù)據(jù)、寫并程數(shù)據(jù)和并程數(shù)據(jù)一致化三類序網(wǎng)指令,在本發(fā)明中用三個(gè)軟件子程序來(lái)代替。其中,寫并程數(shù)據(jù)子程序能直接執(zhí)行,而讀并程數(shù)據(jù)、并程數(shù)據(jù)一致化子程序包含可執(zhí)行條件的檢查。如果數(shù)據(jù)無(wú)效,則檢查時(shí)將發(fā)現(xiàn)分支程序不可繼續(xù)運(yùn)行。模塊207中的該分支程序停頓,轉(zhuǎn)模塊202,對(duì)該分支程序進(jìn)行懸掛處理。如果該并程分支程序運(yùn)行結(jié)束,則通過(guò)208轉(zhuǎn)模塊201。
模塊207中沒有運(yùn)行的并程分支程序處于“運(yùn)行ON”或“關(guān)閉OFF”狀態(tài),運(yùn)行ON狀態(tài)又分懸掛、就緒二種情況。每個(gè)分支程序都有相應(yīng)的數(shù)據(jù)、程序地址等專用存儲(chǔ)區(qū)。這些概念在眾所周知的進(jìn)程或線程管理中很普遍。其中,第N+1個(gè)分支程序203盡管執(zhí)行的是并程數(shù)據(jù)的序,是新的內(nèi)容,但在懸掛、就緒等處理方式上是一樣的。
分支程序懸掛處理模塊202接受來(lái)自并程分支程序模塊207的分支程序不能運(yùn)行的信息,包括讀無(wú)效和一致化無(wú)效二種情況。一致化無(wú)效是因?yàn)樵摬⒊虜?shù)據(jù)沒有被寫過(guò),讀無(wú)效是因?yàn)樵摬⒊虜?shù)據(jù)沒有被一致化操作過(guò)。二種情況都在相關(guān)子程序檢查并程數(shù)據(jù)標(biāo)志時(shí)發(fā)生,表示該分支程序不能繼續(xù)運(yùn)行。分支程序懸掛處理模塊202處理當(dāng)前并程分支程序的懸掛,現(xiàn)場(chǎng)保護(hù)等內(nèi)容,然后轉(zhuǎn)模塊201。
時(shí)分模塊201的目標(biāo)是選定一個(gè)新的并程分支程序。時(shí)分模塊具備全部并程分支程序的狀態(tài)信息,主要是各分支程序的懸掛,就緒和開關(guān)狀態(tài)。這些信息不斷地在修改,例如寫并程數(shù)據(jù)子程序需要檢查該數(shù)據(jù)位置是否曾發(fā)生過(guò)一致化無(wú)效,使一致化程序PPc 203進(jìn)入了懸掛狀態(tài);如果是曾有懸掛處理,現(xiàn)在需要修改相關(guān)并程分支程序的懸掛狀態(tài)為就緒狀態(tài)。時(shí)分模塊按照一定的優(yōu)先權(quán)規(guī)則選出模塊207中下一個(gè)處理就緒狀態(tài)的并程分支程序,然后,進(jìn)行該分支程序的恢復(fù)處理,并進(jìn)入該分支程序運(yùn)行。時(shí)分管理模塊不直接處理并程分支程序的同步或數(shù)據(jù)通訊。模塊207選出下一個(gè)并程分支程序的方法,根據(jù)需求的不同,模塊207可以有各種不同的優(yōu)先權(quán)規(guī)則設(shè)計(jì)方案。例如,在按時(shí)間排隊(duì)來(lái)建立優(yōu)先權(quán)時(shí),先啟動(dòng)的分支程序可以優(yōu)先執(zhí)行。
當(dāng)全部分支程序運(yùn)行結(jié)束后,時(shí)分管理模塊201才停止選擇。當(dāng)全部并程分支程序處于懸掛狀態(tài)時(shí),表示整個(gè)并程不能運(yùn)行,時(shí)分管理模塊201也停止選擇,執(zhí)行退回到上一級(jí)并程或等待輸入數(shù)據(jù)等操作。
本發(fā)明和圖1C的結(jié)構(gòu)的核心區(qū)別在于,并程有第N+1個(gè)獨(dú)立運(yùn)行的并程分支程序203,和N+1個(gè)程序的運(yùn)行特征,N+1個(gè)并程分支程序有同等地位。其中,第N+1個(gè)并程分支程序執(zhí)行一個(gè)并程數(shù)據(jù)的序,用(數(shù)據(jù))一致化操作表示。它突出了并程的數(shù)據(jù)序特征和獨(dú)立的結(jié)構(gòu),和其他N個(gè)分支程序處理的計(jì)算內(nèi)容完全不同。
在先有技術(shù)中,第N+1個(gè)程序是含有“數(shù)據(jù)和令牌一致化”指令的程序,完成多機(jī)之間的數(shù)據(jù)一致化和令牌一致化(傳送和判別)操作。在單機(jī)軟件環(huán)境下,該指令轉(zhuǎn)為一致化子程序,令牌也改為并程數(shù)據(jù)標(biāo)志,用存儲(chǔ)器來(lái)代替,令牌的判別也改為軟件來(lái)判別標(biāo)志內(nèi)容。同時(shí),在單機(jī)環(huán)境下,數(shù)據(jù)和令牌共同傳送的情況也變了,并程數(shù)據(jù)的傳送(一致化)操作已經(jīng)不需要了,但是,令牌一致化的處理仍舊需要。在軟件方式下,令牌一致化就是對(duì)并程數(shù)據(jù)標(biāo)志位的操作。
第N+1個(gè)分支程序中的令牌一致化操作是和并程數(shù)據(jù)對(duì)應(yīng)的,直接通過(guò)第N+1個(gè)程序控制并程數(shù)據(jù)一個(gè)個(gè)地一致化。并程數(shù)據(jù)一致化可以執(zhí)行的條件是該并程數(shù)據(jù)已經(jīng)被其他并程分支程序?qū)戇^(guò),否則該并程分支程序就要懸掛;一致化執(zhí)行后,則表示該并程數(shù)據(jù)被其他并程分支程序讀取時(shí)呈有效,否則那些讀并程分支程序就要進(jìn)入懸掛。
第N+1個(gè)分支程序是一個(gè)程序,對(duì)一個(gè)程序資源來(lái)講,完成一致化操作,建立并程數(shù)據(jù)序后,仍有很多程序的資源有待利用。當(dāng)然這些資源的運(yùn)用已經(jīng)超越了一個(gè)純粹的并行流程圖計(jì)算的需要。在并程嵌套和子并程調(diào)用方面,第N+1個(gè)程序可以連接和控制子并程的調(diào)用許可和并程數(shù)據(jù)序的關(guān)系,在此,并程數(shù)據(jù)序可以為子并程調(diào)用提供算法需要的數(shù)據(jù)的上下文關(guān)系。本發(fā)明第N+1個(gè)程序有主動(dòng)運(yùn)行的驅(qū)動(dòng)能力,因此,可以通過(guò)N+1個(gè)程序直接實(shí)現(xiàn)分支程序的同步和并程數(shù)據(jù)狀態(tài)的管理,并支持并程嵌套。
在單機(jī)中,并程的三個(gè)序網(wǎng)指令是用三個(gè)子程序來(lái)代替的,子程序在程序中代替原來(lái)的讀、寫、和一致化指令。因此,N+1個(gè)并程207內(nèi)部包含了三種特有的并程子程序,處理并程數(shù)據(jù)的讀、寫和一致化操作。子程序具備令牌的設(shè)置、檢測(cè)、和處理能力,支持并程分支程序的同步和并程數(shù)據(jù)的傳送。在軟件模擬情況下,每一個(gè)并程數(shù)據(jù)需要有相關(guān)的并程數(shù)據(jù)標(biāo)志。
獨(dú)立的并程分支程序模塊結(jié)構(gòu)是本發(fā)明的目標(biāo)之一,無(wú)論在在程序的編程階段,程序的機(jī)器碼階段,它們都是獨(dú)立的模塊結(jié)構(gòu)。
本發(fā)明的時(shí)分管理模塊201可以和N+1個(gè)分支程序207一起封裝,成為并程模塊200的一部分,因此,并程在運(yùn)行中無(wú)需操作系統(tǒng)的管理。由于并程內(nèi)部具備了時(shí)分、同步、數(shù)據(jù)互連管理,因此,可以組成并程間的多級(jí)嵌套結(jié)構(gòu)。
本發(fā)明并程的用戶編程界面是N+1個(gè)并程分支程序207。其中N個(gè)程序是常規(guī)的單機(jī)程序,在N個(gè)程序中,通過(guò)對(duì)并程數(shù)據(jù)的讀和寫來(lái)實(shí)現(xiàn)程序之間的數(shù)據(jù)互連,和共享存儲(chǔ)器的讀寫概念一致。在編譯階段,編譯軟件將共享存儲(chǔ)器的讀或?qū)戅D(zhuǎn)為調(diào)用一個(gè)(讀/寫)子程序形式,并建立和并程數(shù)據(jù)相關(guān)的并程數(shù)據(jù)標(biāo)志存儲(chǔ)區(qū)。第N+1個(gè)程序是上述并程數(shù)據(jù)的一致化操作,沒有數(shù)值計(jì)算的內(nèi)容。一個(gè)一致化操作包含一個(gè)并程數(shù)據(jù),用戶編程只需要順序列寫并程數(shù)據(jù)或含并程數(shù)據(jù)的一致化指令。和圖1C的N并程方式相比,并程數(shù)據(jù)的序是一種新的輸入信息類型,并通過(guò)程序來(lái)驅(qū)動(dòng)這個(gè)序的執(zhí)行。
模塊的運(yùn)行過(guò)程如下時(shí)分管理模塊201的功能是定義一個(gè)并程分支程序進(jìn)入運(yùn)行。全部N+1個(gè)并程分支程序中,第N+1個(gè)并程分支程序203和其他N個(gè)并程分支程序執(zhí)行的功能是不同的。
模塊201定義N個(gè)并程分支程序204、205、206的運(yùn)行情況如下并程分支程序進(jìn)入程序運(yùn)行后,如果條件滿足,可以一直運(yùn)行到結(jié)束,在分支程序結(jié)束后返回時(shí)分管理模塊201。時(shí)分管理模塊201再?zèng)Q策,進(jìn)入下一個(gè)就緒的并程分支程序。
如果并程分支程序運(yùn)行遇到讀或?qū)憯?shù)據(jù),處理如下
●在讀數(shù)據(jù)時(shí),如果該并程數(shù)據(jù)有效,則讀數(shù)據(jù)完成,進(jìn)入下一條指令。如果發(fā)現(xiàn)該并程數(shù)據(jù)無(wú)效(這個(gè)數(shù)據(jù)要來(lái)自另外一個(gè)并程分支程序),分支程序?qū)⒉荒芾^續(xù)運(yùn)行,讀數(shù)據(jù)的子程序自動(dòng)在該數(shù)據(jù)的數(shù)據(jù)標(biāo)志中設(shè)置“曾讀無(wú)效”標(biāo)志,轉(zhuǎn)模塊202。模塊202中保護(hù)該并程分支程序現(xiàn)場(chǎng),使退出該分支程序,再轉(zhuǎn)時(shí)分管理模塊201,重新選擇新的處于就緒狀態(tài)的并程分支程序。
●在寫數(shù)據(jù)后,要設(shè)置數(shù)據(jù)的“一致化有效”標(biāo)志。同時(shí),還需要檢查該數(shù)據(jù)的“曾一致化無(wú)效”標(biāo)志(表示第N+1個(gè)并程分支程序203已經(jīng)處理過(guò)此數(shù)據(jù)而沒有成功,并進(jìn)入了懸掛狀態(tài))。如果有標(biāo)志,寫數(shù)據(jù)的子程序則將一致化分支程序的狀態(tài)從懸掛改為就緒,然后返回。該并程分支程序繼續(xù)運(yùn)行。寫數(shù)據(jù)子程序不能使并程分支程序進(jìn)入懸掛。
模塊201定義第N+1個(gè)并程分支程序203的運(yùn)行情況如下在執(zhí)行某個(gè)并程數(shù)據(jù)的一致化前,需要對(duì)該數(shù)據(jù)的“一致化有效”標(biāo)志進(jìn)行測(cè)試。
●如果標(biāo)志無(wú)效,一致化子程序設(shè)置“曾一致化無(wú)效”標(biāo)志,然后轉(zhuǎn)模塊202。模塊202保護(hù)并程分支程序203現(xiàn)場(chǎng),使退出該分支程序。再轉(zhuǎn)時(shí)分管理模塊201,重新選擇新的處于就緒狀態(tài)的并程分支程序。
●如果標(biāo)志有效,轉(zhuǎn)入數(shù)據(jù)一致化的執(zhí)行。單機(jī)環(huán)境下沒有數(shù)據(jù)的傳送,一致化操作的實(shí)質(zhì)是處理標(biāo)志位。包括設(shè)置“讀有效”的標(biāo)志;檢查所有N個(gè)并程分支程序在該數(shù)據(jù)的“曾讀無(wú)效”標(biāo)志,并根據(jù)檢查結(jié)果,使有關(guān)并程分支程序的狀態(tài)從懸掛轉(zhuǎn)為就緒,然后返回。一致化分支程序繼續(xù)運(yùn)行。
當(dāng)時(shí)分管理模塊201完成了全部N+1個(gè)并程分支程序203、204、205、206的運(yùn)行之后,表示并程運(yùn)行結(jié)束。
因此,總結(jié)本發(fā)明的并程特征如下在單機(jī)環(huán)境下,一個(gè)并程將包括N+1個(gè)并程分支程序模塊,和一個(gè)時(shí)分管理程序模塊201。另外,還有三個(gè)“寫,讀,和一致化”子程序。
●根據(jù)并程的同步處理規(guī)則,讀數(shù)據(jù)無(wú)效等待需要在單機(jī)中用軟件仿造實(shí)現(xiàn)。
●根據(jù)并程的數(shù)據(jù)令牌傳送規(guī)則,一致化無(wú)效也需要在單機(jī)中用軟件仿造實(shí)現(xiàn)。
并程分支程序管理模塊201的功能只需要包括因單機(jī)環(huán)境而產(chǎn)生的時(shí)分管理。
●利用并程的同步處理建立的各并程分支程序的等待和運(yùn)行狀態(tài)。
●時(shí)分管理將并程分支程序的等待轉(zhuǎn)為就緒,懸掛,和運(yùn)行的管理。
上述關(guān)于本發(fā)明的結(jié)構(gòu)描述,實(shí)際上已經(jīng)包括了支持并程嵌套的二個(gè)基本結(jié)構(gòu)條件●并程有第N+1個(gè)獨(dú)立的程序●第N+1個(gè)程序中管理并程數(shù)據(jù)序運(yùn)行子并程調(diào)用需要實(shí)現(xiàn)和父級(jí)并程中N+1個(gè)分支程序的上下文連接。包括下列二個(gè)可調(diào)用條件,●在父級(jí)并程分支程序中的子并程調(diào)用指令●與并程數(shù)據(jù)序(代表上下文數(shù)據(jù))一起排序的子并程調(diào)用許可。
并程的第N+1個(gè)分支程序可以編程,控制和實(shí)現(xiàn)子并程的調(diào)用許可,并實(shí)現(xiàn)和并程數(shù)據(jù)序的混合。因此,N+1并程是一種支持并程嵌套的結(jié)構(gòu)。
顯然,本發(fā)明的結(jié)構(gòu)特征包括●簡(jiǎn)單的處理N+1個(gè)并程分支程序的并程時(shí)分管理結(jié)構(gòu);●第N+1個(gè)并程分支程序建立并程數(shù)據(jù)序,實(shí)現(xiàn)運(yùn)行同步和數(shù)據(jù)傳送功能;●支持并程和并程間的嵌套關(guān)系;以及●并程N(yùn)+1個(gè)分支程序是獨(dú)立的模塊化結(jié)構(gòu)。
上述特征是序網(wǎng)計(jì)算機(jī)的多機(jī)并程優(yōu)點(diǎn)移植到了單機(jī)的環(huán)境。
在單機(jī)程序中,圖2A表示圖1A的并程模塊結(jié)構(gòu)和功能可以用單機(jī)的串型程序?qū)崿F(xiàn)。為了實(shí)現(xiàn)和上下程序的連接,需要在圖2A的基礎(chǔ)上增加一個(gè)并程進(jìn)入/退出管理模塊210,如圖2B所示。
圖2A實(shí)際上顯示了并程已經(jīng)具備一個(gè)微型化的進(jìn)程(或線程)管理能力。因此,每一個(gè)實(shí)際應(yīng)用的并程需要初始化。每一個(gè)并程有一個(gè)對(duì)應(yīng)的并程標(biāo)志區(qū),初始化就是對(duì)全部并程標(biāo)志作初始數(shù)值的填充處理,如在運(yùn)行開始要建立N+1個(gè)并程分支程序的初始化結(jié)構(gòu)參數(shù),包括N個(gè)分支程序的數(shù)目、各分支程序的入口地址、以及其他初始化參量等。這些處理,需要一個(gè)并程進(jìn)入管理模塊。
并程的退出也需要根據(jù)情況做不同的處理。當(dāng)并程作為一個(gè)子程序,運(yùn)行完畢后退出,就和常規(guī)的子程序返回一樣。如果并程是在全部分支程序懸掛的狀態(tài)下退出,就可能有多種不同的原因。一種可能是該并程是由父級(jí)并程分支程序中的一個(gè)并程調(diào)用指令啟動(dòng)的,該并程全部分支程序懸掛實(shí)際上表示該父級(jí)并程分支程序進(jìn)入懸掛狀態(tài),父級(jí)并程分支程序需要退出,轉(zhuǎn)其他的父級(jí)并程分支程序運(yùn)行。另一種情況是本并程需要等待外部的輸入信息,因此,就需要并程進(jìn)入循環(huán)等待狀態(tài)。第三種情況是并程在設(shè)計(jì)或運(yùn)行中出了錯(cuò),需要轉(zhuǎn)入有控制的自動(dòng)糾錯(cuò)處理或顯示出錯(cuò)的處理。這些處理,需要一個(gè)并程退出的管理模塊。
因此,根據(jù)本發(fā)明的實(shí)施例包括一個(gè)并程進(jìn)入/退出管理模塊210。該并程進(jìn)入/退出模塊210和時(shí)分管理模塊201在實(shí)際設(shè)計(jì)中可以組合在一起。
單機(jī)中,一個(gè)實(shí)用的并程封裝結(jié)構(gòu)包括模塊210和模塊200。在用戶編寫N+1個(gè)并程分支程序后,并程的編譯工具在編譯過(guò)程中自動(dòng)的為每一個(gè)并程添加并程進(jìn)入/退出模塊210、時(shí)分管理模塊201、其中包括并程標(biāo)志和全部并程數(shù)據(jù)標(biāo)志的存儲(chǔ)器空間,最后還要用三個(gè)子程序來(lái)替代用戶編程中采用的共享存儲(chǔ)器讀寫的表達(dá)格式。
和先有技術(shù)中,并程在軟件中以圖1B和圖1C的方式出現(xiàn),本發(fā)明的圖2B的方式是一種更一般性的結(jié)構(gòu)。
由于并程具備組合分支程序的能力、一般性結(jié)構(gòu),和可嵌套特征,本發(fā)明認(rèn)為并程將成為今后建?;虺绦蛟O(shè)計(jì)的一種通用元件。從子程序計(jì)算到系統(tǒng)程序,從操作系統(tǒng)到用戶程序,到處都有或者是性能簡(jiǎn)化的、或者是性能加強(qiáng)的并程模塊。
每一個(gè)并程都有一個(gè)并程數(shù)據(jù)區(qū)和一個(gè)并程專用標(biāo)志區(qū)。并程數(shù)據(jù)區(qū)保存并程內(nèi)部互連的并程數(shù)據(jù),并且可以和并程外部進(jìn)行交換。并程專用標(biāo)志包括并程標(biāo)志(圖2C)和并程數(shù)據(jù)標(biāo)志(圖2D)。
圖2C是并程標(biāo)志結(jié)構(gòu)圖。并程標(biāo)志支持軟件實(shí)現(xiàn)時(shí)分處理過(guò)程。一個(gè)并程只有一組并程標(biāo)志,包括并程類型標(biāo)志220,并程分支程序開關(guān)標(biāo)志221(N+1 bits),并程分支程序就緒/懸掛標(biāo)志222(N+1 bits),以及N+1組并程分支程序的懸掛狀態(tài)保護(hù)223(指令地址,寄存器數(shù)據(jù),堆棧區(qū)內(nèi)容等)。
并程類型標(biāo)志220是一種表示并程的特征的標(biāo)記。例如可以用于指示一旦全部并程分支程序發(fā)生懸掛,是出錯(cuò)原因,或是父級(jí)并程分支程序的懸掛原因,或是程序循環(huán)等待輸入的原因等。標(biāo)志位可以根據(jù)并程類型發(fā)展的需要來(lái)建立。
并程分支程序開關(guān)標(biāo)志221表示并程分支程序進(jìn)入運(yùn)行和退出的狀態(tài),有N+1位,在并程初始進(jìn)入時(shí),N+1個(gè)位全部打開ON,一旦一個(gè)并程分支程序結(jié)束,則關(guān)閉該并程分支程序OFF,全部并程分支程序關(guān)閉表示并程運(yùn)行結(jié)束。
并程分支程序就緒/懸掛標(biāo)志222表示并程分支程序的運(yùn)行條件,共N+1位表示N+1個(gè)并程分支程序。一旦分支程序因?yàn)椴⒊虜?shù)據(jù)無(wú)效而不能運(yùn)行,就進(jìn)入懸掛狀態(tài)。一旦并程數(shù)據(jù)有效,則該分支程序狀態(tài)就修改為就緒。如果出現(xiàn)有分支程序開關(guān)是ON,而全部分支程序狀態(tài)為懸掛,表示并程沒有結(jié)束,但無(wú)法運(yùn)行。
每一個(gè)并程還有N+1組并程分支程序的懸掛狀態(tài)保護(hù)223,包括分支程序中斷的地址,各寄存器的數(shù)據(jù),堆棧區(qū)內(nèi)容,以及其他返回需要的并程分支程序信息。
并程標(biāo)志區(qū)是并程專屬的,動(dòng)態(tài)的,在并程啟動(dòng)前并程標(biāo)志要加載,各并程分支程序的入口地址也要加載,并根據(jù)并程的分支程序結(jié)構(gòu)數(shù)目進(jìn)行打開(ON)設(shè)置。在懸掛和返回時(shí)需要保護(hù)和加載。但是當(dāng)并程結(jié)束后,這些標(biāo)志就沒有用了。
圖2D是一個(gè)并程數(shù)據(jù)標(biāo)志結(jié)構(gòu)圖。并程數(shù)據(jù)標(biāo)志用于軟件實(shí)現(xiàn)并程分支程序的同步和數(shù)據(jù)傳送過(guò)程。每一個(gè)并程數(shù)據(jù)(或并程數(shù)據(jù)塊)都有一個(gè)對(duì)應(yīng)的并程數(shù)據(jù)標(biāo)志,包括一致化有效(1 bit),讀有效(1 bit),曾讀無(wú)效(N bits),和曾一致化無(wú)效(1 bit),四種標(biāo)志。
一致化有效標(biāo)志225共一位,表示該數(shù)據(jù)已經(jīng)由某個(gè)并程分支程序?qū)戇^(guò),使該數(shù)據(jù)允許進(jìn)行一致化操作。它在寫數(shù)據(jù)后建立有效標(biāo)記,并在一致化操作前測(cè)試,測(cè)試無(wú)效使并程一致化分支程序進(jìn)入懸掛狀態(tài)。一致化有效標(biāo)志225也可以設(shè)置N位,指示出寫該數(shù)據(jù)的分支程序。
讀有效標(biāo)志226共一位,表示該數(shù)據(jù)已經(jīng)一致化,是有效數(shù)據(jù),允許各并程分支程序讀取。它在一致化操作后建立有效標(biāo)記,并在讀數(shù)據(jù)前測(cè)試,測(cè)試無(wú)效使該讀無(wú)效的并程分支程序進(jìn)入懸掛狀態(tài)。
曾讀無(wú)效標(biāo)志227共N位,表示該數(shù)據(jù)曾經(jīng)被并程分支程序讀過(guò),但是數(shù)據(jù)無(wú)效。N位分別表示N個(gè)并程分支程序的曾讀無(wú)效。它們?cè)谧x過(guò)程檢測(cè)無(wú)效后建立標(biāo)志,在寫數(shù)據(jù)后測(cè)試,測(cè)試有效改懸掛的并程分支程序?yàn)榫途w狀態(tài)。
曾一致化無(wú)效標(biāo)志228共一位,表示該數(shù)據(jù)曾經(jīng)被執(zhí)行一致化操作,但是當(dāng)時(shí)數(shù)據(jù)無(wú)效,一致化實(shí)際沒有執(zhí)行。它在一致化檢測(cè)無(wú)效后建立標(biāo)志,在一致化操作成功后測(cè)試標(biāo)志,若有標(biāo)志,則懸掛狀態(tài)的并程一致化分支程序標(biāo)志為就緒狀態(tài)。
并程數(shù)據(jù)標(biāo)志在并程運(yùn)行過(guò)程中需要,并程結(jié)束就不再有用了。因此,需要有事先的標(biāo)志清理,事后的工作存儲(chǔ)區(qū)釋放。
對(duì)并程標(biāo)志來(lái)講,圖1B所示的方法是不需要這些標(biāo)志的,可以節(jié)省存儲(chǔ)器空間和程序運(yùn)行時(shí)間,結(jié)構(gòu)也簡(jiǎn)單。通過(guò)引入并程標(biāo)志和管理模塊,用軟件方法將并程功能全部移植進(jìn)單機(jī)環(huán)境,使圖2A和圖1B的N個(gè)程序的建模幾乎完全一致,但分支程序卻保持了獨(dú)立結(jié)構(gòu)。同時(shí),由于多了第N+1個(gè)程序的資源,本發(fā)明的并程將支持一些現(xiàn)在單機(jī)軟件技術(shù)不能解決功能。
圖3A是并程管理程序流程圖。本流程圖包括并程進(jìn)入和退出管理模塊210和時(shí)分管理模塊200。其功能是●使并程對(duì)外呈一個(gè)串型程序段,可以用Jump或Call方式進(jìn)入,以及用return方式退出。
●實(shí)現(xiàn)并程N(yùn)+1個(gè)分支程序的時(shí)分管理,支持同步。
●實(shí)現(xiàn)并程標(biāo)志的管理。
●并程分支程序排隊(duì)的優(yōu)先模式。
●流程圖處理下列并程管理標(biāo)志●并程標(biāo)志管理(并程分支程序開關(guān),懸掛/就緒,類型標(biāo)志)。
●并程分支程序現(xiàn)場(chǎng)保護(hù)存儲(chǔ)區(qū)(全部并程分支程序的中斷地址,寄存器,堆棧區(qū)內(nèi)容等信息)。
流程圖的工作原理如下流程圖有二個(gè)入口,分別為初始化處理入口300,和并程分支程序懸掛或退出返回入口302。初始化處理入口300由外部程序的調(diào)度來(lái)啟動(dòng),并程分支程序懸掛或退出返回302來(lái)自分支程序中讀數(shù)據(jù)無(wú)效或一致化數(shù)據(jù)無(wú)效的子程序,“分支程序退出返回”302來(lái)自分支程序運(yùn)行結(jié)束后的返回指令。其中
●初始化處理300包括并程參量的加載處理和并程標(biāo)志區(qū)的清0處理。初始化加載包括打開并程的N+1分支程序標(biāo)志ON,設(shè)置各并程分支程序的入口地址,設(shè)置相應(yīng)的寄存器數(shù)據(jù)初始值等;清并程標(biāo)志區(qū)是將并程標(biāo)志區(qū)和并程數(shù)據(jù)標(biāo)志清0區(qū)。
●模塊302的入口表示并程運(yùn)行需要時(shí)分管理模塊201定義一個(gè)新的可執(zhí)行并程分支程序。
二個(gè)入口經(jīng)過(guò)301后,進(jìn)入并程分支程序結(jié)束檢查步驟303,檢查并程的開關(guān)標(biāo)志221。如果有一個(gè)并程分支程序是開ON,進(jìn)入步驟305,進(jìn)行分支程序的懸掛狀態(tài)檢查。如果全部為關(guān)OFF,表示并程運(yùn)行已經(jīng)結(jié)束,轉(zhuǎn)并程結(jié)束步驟304,處理并程結(jié)束的記錄以及和外部程序的連接方式。
并程分支程序的懸掛檢查步驟305檢查并程就緒/懸掛標(biāo)志222。如果步驟305檢查結(jié)果是全部并程分支程序處于懸掛狀態(tài),表示盡管有并程沒有執(zhí)行完,但該并程已不能運(yùn)行下去了。轉(zhuǎn)步驟306查找并程不能運(yùn)行的原因,并根據(jù)原因處理轉(zhuǎn)入步驟310,處理并程的退出。并程不能運(yùn)行的原因可能是●在正常運(yùn)行情況下,表示該并程是父級(jí)并程分支程序中發(fā)動(dòng)的并程調(diào)用,是并程嵌套?,F(xiàn)在并程不能運(yùn)行表示該父級(jí)并程分支程序的懸掛狀態(tài)。因此,需要退回到父級(jí)并程的時(shí)分管理模塊去處理,調(diào)度另外一個(gè)父級(jí)并程分支程序。因此,該并程要在攜帶懸掛標(biāo)志的情況下退出,以便讓該并程模塊所在的父級(jí)并程分支程序進(jìn)入懸掛。
●在并程模塊有錯(cuò)誤的情況下,則進(jìn)入出錯(cuò)處理。
●程序設(shè)計(jì)為掃描循環(huán),等待外部如鍵盤輸入。
●其他本發(fā)明不作進(jìn)一步探討的原因。
如果步驟305檢查結(jié)果是有一個(gè)以上的并程分支程序處于就緒狀態(tài),則進(jìn)入分支程序排隊(duì)處理步驟307。分支程序排隊(duì)處理步驟307選擇一個(gè)就緒的并程分支程序,然后轉(zhuǎn)選定分支程序的加載步驟308。選擇方法實(shí)際上是一種處于就緒狀態(tài)的分支程序的排隊(duì)規(guī)則,可以設(shè)計(jì)各種優(yōu)先規(guī)則。優(yōu)先規(guī)則在編程時(shí)指定,在編譯時(shí)實(shí)現(xiàn)。其中最簡(jiǎn)單的優(yōu)先規(guī)則是循環(huán)排隊(duì)的方法。步驟307按照循環(huán)順序,進(jìn)行并程分支程序就緒狀態(tài)的檢查。
步驟308是在步驟307確定了下一個(gè)運(yùn)行的并程分支程序后,處理該并程分支程序參量的加載,恢復(fù)該并程分支程序先前懸掛時(shí)的狀態(tài),加載完成后,轉(zhuǎn)入步驟309進(jìn)入該選定的并程分支程序運(yùn)行。
N+1并程分支程序的時(shí)分運(yùn)行是并程的基本方法。根據(jù)不同的應(yīng)用場(chǎng)合,可以對(duì)并程的結(jié)構(gòu)作不同的修改和發(fā)展。時(shí)分處理程序既可以屬于操作系統(tǒng),也可以進(jìn)入用戶程序。
根據(jù)本圖所表示的流程,一個(gè)熟練的軟件工程師編制一個(gè)實(shí)際運(yùn)行的程序是沒有困難的,同時(shí),在本圖核心流程的基礎(chǔ)上進(jìn)行改動(dòng)或修改也是可能的,可以想象的。變化包括各個(gè)方向,例如,一種時(shí)分方式的發(fā)展是在上述自動(dòng)時(shí)分方法處理分支程序時(shí),再加入一個(gè)時(shí)間片的切換條件。使得當(dāng)一個(gè)并程分支程序(即一個(gè)進(jìn)程)的運(yùn)行時(shí)間不到時(shí)間片數(shù)值出現(xiàn)懸掛時(shí),則自動(dòng)切換;當(dāng)一個(gè)并程分支程序(即一個(gè)進(jìn)程)的運(yùn)行時(shí)間超過(guò)時(shí)間片數(shù)值時(shí),則強(qiáng)制切換。
根據(jù)先有技術(shù)序網(wǎng)的工作原理狀況,要求在讀數(shù)據(jù)指令,寫數(shù)據(jù)指令和一致化指令過(guò)程中對(duì)數(shù)據(jù)進(jìn)行有效狀態(tài)的檢測(cè)。在先有技術(shù)的多機(jī)環(huán)境下,檢測(cè)結(jié)果是和一個(gè)中斷程序相連接的。在本發(fā)明中,軟件模擬的子程序根據(jù)檢測(cè)結(jié)果直接和相應(yīng)的處理程序連接,實(shí)現(xiàn)并程分支程序的數(shù)據(jù)一致化處理和程序的同步處理。
本發(fā)明的圖3B,C,D是一種采用軟件來(lái)模擬三種序網(wǎng)指令及其處理的實(shí)施例。軟件模擬數(shù)據(jù)令牌要求對(duì)每一個(gè)數(shù)據(jù)建立并程數(shù)據(jù)標(biāo)志(如圖2D所示);并在并程數(shù)據(jù)的讀、寫和一致化操作時(shí),增加檢測(cè)標(biāo)志的操作和根據(jù)標(biāo)志位的處理操作。其結(jié)果軟件模擬的讀數(shù)據(jù),寫數(shù)據(jù)和數(shù)據(jù)一致化指令是三個(gè)獨(dú)立的子程序。各子程序的流程圖在圖3B、圖3C、圖3D中展示,其中,并程分支程序的懸掛處理模塊202也在子程序中用軟件模擬了。
圖3B是寫數(shù)據(jù)子程序的流程圖。并程的寫數(shù)據(jù)指令在數(shù)值計(jì)算中是取一個(gè)并程數(shù)據(jù)的操作,在單機(jī)中是一個(gè)子程序,或是C語(yǔ)言環(huán)境下的一條語(yǔ)句。在用軟件仿真寫數(shù)據(jù)指令的情況下,子程序需要增加數(shù)據(jù)狀態(tài)標(biāo)志的處理,和一個(gè)“曾一致化無(wú)效”的判斷,以及判斷后的處理。
寫數(shù)據(jù)子程序的流程圖工作原理如下寫數(shù)據(jù)子程序首先進(jìn)入寫數(shù)據(jù)步驟320,實(shí)現(xiàn)一個(gè)并程數(shù)據(jù)的寫操作。然后進(jìn)入“曾一致化無(wú)效”的檢查步驟321。步驟321程序檢查該數(shù)據(jù)“曾一致化無(wú)效”標(biāo)志228。如果步驟321中該標(biāo)志228為有效,表示該數(shù)據(jù)曾有過(guò)數(shù)據(jù)一致化操作,但因?yàn)橐恢禄瘶?biāo)志無(wú)效,使該一致化操作實(shí)際上沒有能執(zhí)行,導(dǎo)致了一致化并程分支程序進(jìn)入懸掛狀態(tài)?,F(xiàn)在,由于寫數(shù)據(jù)步驟320已經(jīng)執(zhí)行,數(shù)據(jù)已經(jīng)有效了,可以進(jìn)入步驟323。步驟323,處理一致化程序的就緒。所謂就緒,就是改就緒標(biāo)志222中該一致化并程分支程序的狀態(tài)位為就緒(原來(lái)是懸掛),然后轉(zhuǎn)入步驟322。如果步驟321中該標(biāo)志228為無(wú)效,表示該數(shù)據(jù)沒有執(zhí)行過(guò)數(shù)據(jù)一致化操作,直接轉(zhuǎn)步驟322。步驟322是建立“一致化有效”標(biāo)志225,表示數(shù)據(jù)有效,使允許一致化并程分支程序100對(duì)該數(shù)據(jù)執(zhí)行一致化的操作。然后,轉(zhuǎn)步驟324。步驟324是寫數(shù)據(jù)子程序的返回。
圖3C是數(shù)據(jù)一致化子程序的流程圖。并程的數(shù)據(jù)一致化指令在數(shù)值計(jì)算中是一個(gè)并程數(shù)據(jù)的傳送操作,也是確立一個(gè)并程數(shù)據(jù)有效的操作,在單機(jī)中是一個(gè)子程序。在用軟件仿真寫數(shù)據(jù)指令的情況下,子程序需要增加數(shù)據(jù)狀態(tài)標(biāo)志的處理,一致化令牌有效檢查,和曾讀無(wú)效檢查,以及檢查后的處理。
數(shù)據(jù)一致化子程序的流程圖工作原理如下數(shù)據(jù)一致化子程序首先進(jìn)入步驟330。檢查該數(shù)據(jù)的“一致化有效”標(biāo)志225。如果步驟330中該數(shù)據(jù)的“一致化有效”標(biāo)志無(wú)效,表示數(shù)據(jù)還沒有被寫過(guò),因此,該并程分支程序不能運(yùn)行,要懸掛。程序進(jìn)入步驟332。步驟332設(shè)置“曾一致化無(wú)效”標(biāo)志228,然后進(jìn)入步驟333進(jìn)行當(dāng)前一致化分支程序的懸掛處理。內(nèi)容是保存一致化并程分支程序的當(dāng)前運(yùn)行狀態(tài),以便在今后該并程分支程序返回時(shí)使用。步驟333是軟件實(shí)現(xiàn)模塊202的方法。然后轉(zhuǎn)步驟334退出該并程分支程序,轉(zhuǎn)并程分支程序懸掛入口302,以便重新選擇新的并程分支程序。
如果對(duì)該數(shù)據(jù)的“一致化有效”標(biāo)志225檢查后,該數(shù)據(jù)的“一致化有效”標(biāo)志有效,表示數(shù)據(jù)已經(jīng)被寫過(guò),數(shù)據(jù)的一致化可以運(yùn)行。轉(zhuǎn)步驟331。步驟331執(zhí)行數(shù)據(jù)和令牌的一致化操作。在單機(jī)軟件模擬中,沒有實(shí)際的數(shù)據(jù)傳送,僅僅是“讀有效”標(biāo)志226的設(shè)置。轉(zhuǎn)步驟335檢查該數(shù)據(jù)的“曾讀無(wú)效”標(biāo)志227,曾讀無(wú)效標(biāo)志227有N位,分別代表N個(gè)不同的并程分支程序(第N+1個(gè)一致化并程分支程序用“曾一致化無(wú)效”標(biāo)志)。如果步驟335中“曾讀無(wú)效”標(biāo)志227有效(指標(biāo)志227的N個(gè)標(biāo)志位中至少有一位有效,最多為N個(gè)標(biāo)志位全有效),說(shuō)明某些并程分支程序出現(xiàn)過(guò)曾讀無(wú)效情況,并已經(jīng)轉(zhuǎn)入了懸掛狀態(tài)。由于已經(jīng)有步驟331執(zhí)行一致化操作,因此,轉(zhuǎn)步驟336,步驟336是根據(jù)“曾讀無(wú)效”標(biāo)志227的內(nèi)容,使相關(guān)的并程分支程序狀態(tài)從懸掛轉(zhuǎn)入就緒,然后轉(zhuǎn)步驟337。如果步驟335中“曾讀無(wú)效”標(biāo)志227沒有任何標(biāo)志(指標(biāo)志227的N個(gè)標(biāo)志位中全部無(wú)效),則說(shuō)明沒有出現(xiàn)過(guò)曾讀無(wú)效情況。此時(shí)便直接轉(zhuǎn)步驟337。
步驟337是數(shù)據(jù)一致化子程序的返回。
圖3D是讀數(shù)據(jù)子程序的流程圖。并程的讀數(shù)據(jù)指令在數(shù)值計(jì)算中是取一個(gè)并程數(shù)據(jù)的操作,在單機(jī)中是一個(gè)子程序。在用軟件仿真讀數(shù)據(jù)指令的情況下,子程序需要增加數(shù)據(jù)狀態(tài)標(biāo)志的處理,和一個(gè)數(shù)據(jù)有效性的判斷,以及判斷后的處理。
讀數(shù)據(jù)子程序的流程圖工作原理如下讀數(shù)據(jù)子程序首先進(jìn)入步驟340,檢查該數(shù)據(jù)的“讀有效”標(biāo)志。如果步驟340中該數(shù)據(jù)的“讀有效”標(biāo)志有效,表示數(shù)據(jù)已經(jīng)被寫過(guò),被一致化傳送過(guò),程序進(jìn)入讀數(shù)據(jù)步驟341。步驟341是常規(guī)的單機(jī)程序的讀數(shù)據(jù)方式,讀數(shù)據(jù)后進(jìn)入步驟342。步驟342是讀數(shù)據(jù)子程序的返回。如果步驟340中該數(shù)據(jù)的“讀有效”標(biāo)志無(wú)效,表示該數(shù)據(jù)現(xiàn)在無(wú)效(該并程分支程序要懸掛)。程序進(jìn)入步驟343。
步驟343是設(shè)置“曾讀無(wú)效”標(biāo)志227,“曾讀無(wú)效”標(biāo)志227有N位,分別對(duì)應(yīng)不同的并程分支程序。本步驟在該并程數(shù)據(jù)標(biāo)志227內(nèi)設(shè)置和該并程分支程序相應(yīng)的“曾讀無(wú)效”標(biāo)志。然后轉(zhuǎn)步驟344。
步驟344是當(dāng)前并程分支程序的懸掛處理。內(nèi)容是保存并程分支程序的當(dāng)前運(yùn)行狀態(tài),以便在今后該并程分支程序返回時(shí),可以從懸掛點(diǎn)切入繼續(xù)運(yùn)行。步驟344是軟件實(shí)現(xiàn)模塊202的方法。然后轉(zhuǎn)步驟345。步驟345是退出該并程分支程序,轉(zhuǎn)并程分支程序懸掛入口302,重新選擇新的并程分支程序。
圖3E是并程的分支程序結(jié)構(gòu)。并程有N+1個(gè)并程分支程序,PPc 350、PP1 351、PP2 352、PP3 354,它們都是獨(dú)立的程序模塊結(jié)構(gòu)。獨(dú)立性不僅表現(xiàn)在編程階段,一直到編譯以后的機(jī)器碼階段,上述N+1個(gè)并程仍舊有獨(dú)立程序模塊結(jié)構(gòu)。各并程分支程序啟動(dòng)運(yùn)行是由模塊201指定。各并程分支程序運(yùn)行結(jié)束,轉(zhuǎn)入步驟354。步驟354是一個(gè)轉(zhuǎn)移到退出返回入口302的操作,表示一個(gè)并程分支程序運(yùn)行結(jié)束,轉(zhuǎn)交時(shí)分管理模塊201處理。
N+1個(gè)并程內(nèi)部包含了三種特有的并程子程序,處理并程數(shù)據(jù)的讀、寫和一致化操作。由于在單機(jī)中全部用軟件來(lái)模擬,每一個(gè)并程數(shù)據(jù)需要有相關(guān)的并程數(shù)據(jù)標(biāo)志。一旦讀或一致化子程序經(jīng)測(cè)試,判定該并程分支程序不能繼續(xù)執(zhí)行,則由模塊202處理并程分支程序的懸掛,然后退回到時(shí)分管理程序201。一旦寫或一致化子程序經(jīng)測(cè)試,判定原來(lái)在該并程數(shù)據(jù)進(jìn)入懸掛的其他并程分支程序條件已經(jīng)滿足,則子程序改其他處理并程分支程序的狀態(tài)為就緒,然后返回。這些子程序處理的流程,在圖3B、圖3C、圖3D中已經(jīng)描述。一旦組成了一個(gè)N+1并程,并程分支程序就包含了這些子程序的調(diào)用特征。
本發(fā)明的軟件模擬并程需要相關(guān)的并程標(biāo)志。和圖1B相比,它們是要在單機(jī)環(huán)境下保持并程結(jié)構(gòu)和功能產(chǎn)生的增量。
N+1個(gè)并程分支程序207是用戶的編程界面。其中N個(gè)并程分支程序PP1 351,PP2 352,PP3 353是常規(guī)的單機(jī)編程,僅僅是加入共享存儲(chǔ)器方式的并程數(shù)據(jù)讀寫。它們?cè)诰幾g時(shí),改為用上述子程序格式來(lái)代替共享存儲(chǔ)器讀寫。由于這是編程中的關(guān)鍵差別,因此,可以認(rèn)為本發(fā)明的編程和習(xí)慣編程方式一致。
第N+1個(gè)并程分支程序PPc 350也是一個(gè)獨(dú)立的程序。它和常規(guī)的程序不同,沒有任何數(shù)值計(jì)算的工作。它包括一個(gè)并程數(shù)據(jù)的序,和將并程數(shù)據(jù)進(jìn)行“一致化”的操作。由于如圖3C所示,存在一個(gè)一致化操作的子程序P_CONSIS_SUB,PPc并程分支程序?qū)嶋H是對(duì)并程所包含的m個(gè)數(shù)據(jù)進(jìn)行如下的操作START123;并程123的第N+1個(gè)分支程序進(jìn)入PP123_DATA1 ;定義并程123的第1個(gè)并程數(shù)據(jù)P_CONSIS_SUB;并程123的第1個(gè)并程數(shù)據(jù)一致化PP123_DATA2 ;定義并程123的第2個(gè)并程數(shù)據(jù)P_CONSIS_SUB;并程123的第2個(gè)并程數(shù)據(jù)一致化.......
PP123_DATAm ;定義并程123的第m個(gè)并程數(shù)據(jù)P_CONSIS_SUB;并程123的第m個(gè)并程數(shù)據(jù)一致化END123 ;并程123的第N+1個(gè)分支程序結(jié)束其中,PP123_DATA1定義了一個(gè)編號(hào)為123的并程的第一個(gè)并程數(shù)據(jù)。實(shí)際上是定義了并程數(shù)據(jù)的相關(guān)參量供一致化子程序P_CONSIS_SUB的執(zhí)行。
上述是一個(gè)最簡(jiǎn)單的,也是最基本的第N+1個(gè)程序的例子。其最大特點(diǎn)是它是一個(gè)程序,能驅(qū)動(dòng)并程數(shù)據(jù)一致化的有序執(zhí)行,起到了協(xié)調(diào)N+1個(gè)并程分支程序的同步運(yùn)行。在結(jié)構(gòu)上,并程數(shù)據(jù)和并程數(shù)據(jù)的序能獨(dú)立出來(lái)。作為程序,并程數(shù)據(jù)一致化的有序執(zhí)行只是很簡(jiǎn)單的功能,還可以有許多可以發(fā)展的資源,例如實(shí)現(xiàn)并程數(shù)據(jù)的序的變化,增加或減少并程數(shù)據(jù),以及插入子并程調(diào)用許可指令等等。
一個(gè)熟練的軟件工程師編制程序?qū)崿F(xiàn)上述N+1個(gè)并程分支程序的軟件應(yīng)該沒有困難,同時(shí),在本發(fā)明所示的流程圖基礎(chǔ)上進(jìn)行改動(dòng)或修改也是可能的。
先有技術(shù)和本發(fā)明并程結(jié)構(gòu)的描述集中在并行流程圖的計(jì)算功能上,但是本發(fā)明的真正所得的并非僅僅是一個(gè)并行流程圖的數(shù)值計(jì)算內(nèi)涵,而是并程在單機(jī)中的新結(jié)構(gòu)所內(nèi)含的價(jià)值。這種價(jià)值可能現(xiàn)在還沒有一個(gè)類似于并行流程圖的功能可以表達(dá)。它除了產(chǎn)生并程數(shù)據(jù)序、支持并程嵌套結(jié)構(gòu)的特征外,還包括本發(fā)明的并程結(jié)構(gòu)所產(chǎn)生的新資源。這是指,在用戶繼續(xù)面對(duì)N(或N+1)個(gè)獨(dú)立模塊結(jié)構(gòu)的并程分支程序的情況下,出現(xiàn)一個(gè)一致化并程分支程序PPc 350的程序資源,和一個(gè)有富裕能力的并程管理模塊(包括模塊201和210)資源。
本發(fā)明提出一些新資源的實(shí)施例如下1.并程模塊的“并程數(shù)據(jù)+序”特征第N+1個(gè)并程分支程序執(zhí)行并程數(shù)據(jù)序,使并程數(shù)據(jù)序成為并程封裝的外部特征。也就是說(shuō),如果并程作為一個(gè)面向?qū)ο蟮念惢驅(qū)ο蟮膬?nèi)部結(jié)構(gòu)的話,它的封裝的外部特征不只有數(shù)據(jù)一種要素,而轉(zhuǎn)為具備并程數(shù)據(jù)和并程數(shù)據(jù)序二種要素。其結(jié)果是面向?qū)ο蠹夹g(shù)中的類或?qū)ο蟪霈F(xiàn)實(shí)時(shí)特征,表現(xiàn)為有時(shí)間來(lái)調(diào)制的事件的序。例如,這些數(shù)據(jù)的時(shí)間關(guān)系指示某個(gè)有序的系列化操作,是不能改變先后關(guān)系的。
“并程數(shù)據(jù)+序”能更好地反映對(duì)象的動(dòng)態(tài)執(zhí)行特征,有助于支持面向?qū)ο蠹夹g(shù)的創(chuàng)新。而現(xiàn)有面向?qū)ο蟮募夹g(shù),類的封裝僅有數(shù)據(jù)一種要素,相當(dāng)于本發(fā)明的并程結(jié)構(gòu)放棄了序要素的一個(gè)特例。
2.并程分支程序的在線增減在并程有了并程數(shù)據(jù)序特征情況下,一個(gè)符合并程數(shù)據(jù)序新并程分支程序可以方便的加入并程,相當(dāng)于并程結(jié)構(gòu)的一個(gè)旁路程序。旁路程序和并程有共享的并程數(shù)據(jù)序、有獨(dú)立的結(jié)構(gòu)、可以用于類的繼承,數(shù)據(jù)采集,軟件測(cè)試,運(yùn)行監(jiān)控等各種用途。
3.在用戶程序中,并程可以提高運(yùn)行響應(yīng)速度。
假設(shè)一個(gè)用戶程序中有三段程序分別接受三個(gè)外來(lái)的數(shù)據(jù),數(shù)據(jù)到達(dá)是隨機(jī)的。在串型程序下,將在第一個(gè)數(shù)據(jù)位置停頓,而不能運(yùn)行其他二個(gè)接收程序的準(zhǔn)備段。如果改串型程序?yàn)楸景l(fā)明的有三個(gè)分支程序的并程結(jié)構(gòu),則程序?qū)⑼瓿扇咳齻€(gè)程序的接收準(zhǔn)備階段后,才進(jìn)入等待。并且,一旦有一個(gè)數(shù)據(jù)先到,先到數(shù)據(jù)所在的并程分支程序就可以進(jìn)入運(yùn)行。
4.并程是計(jì)算過(guò)程的一般性結(jié)構(gòu)本發(fā)明的并程結(jié)構(gòu)第一次實(shí)現(xiàn)了并行程序的組裝模塊。其中,各分支程序的懸掛、就緒等類進(jìn)程的處理方法進(jìn)入了并程的內(nèi)部結(jié)構(gòu)。第N+1個(gè)分支程序突出了整個(gè)并程的并程數(shù)據(jù)序特征,實(shí)際上,第N+1個(gè)分支程序運(yùn)行的并程數(shù)據(jù)序和并程的數(shù)值計(jì)算結(jié)果沒有關(guān)系,其意義已經(jīng)不在完成一個(gè)并行流程圖的計(jì)算,而是表現(xiàn)并程計(jì)算過(guò)程的特征。本發(fā)明的并程是計(jì)算過(guò)程的一般性結(jié)構(gòu),通過(guò)結(jié)構(gòu)參量的變化可以形成如圖1B,圖1C這些不同的并程實(shí)施例。
一條單機(jī)調(diào)用指令就可以啟用這個(gè)并程,使并程的應(yīng)用極其方便。
5.單個(gè)并程數(shù)據(jù)轉(zhuǎn)為數(shù)據(jù)塊變化。
并程數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)為數(shù)據(jù)塊結(jié)構(gòu)變化的并程結(jié)構(gòu)差別在于從圖3D所示的一個(gè)并程數(shù)據(jù)有一個(gè)并程數(shù)據(jù)標(biāo)志結(jié)構(gòu)轉(zhuǎn)為一批并程數(shù)據(jù)設(shè)立一個(gè)并程數(shù)據(jù)標(biāo)志的結(jié)構(gòu)。可以通過(guò)設(shè)計(jì)一組新的子程序類型來(lái)實(shí)現(xiàn),但在編程概念上仍可以是共享存儲(chǔ)器的結(jié)構(gòu)。
6.其他象多個(gè)并程間的嵌套結(jié)構(gòu)、并行程序的并發(fā)調(diào)用等,都是本發(fā)明并程結(jié)構(gòu)特有的功能,可以支持計(jì)算機(jī)軟件的各種需求。
并程和并程調(diào)用產(chǎn)生了新的結(jié)構(gòu)資源,但是在使用方法上和先有技術(shù)相似,一個(gè)熟練的軟件工程師應(yīng)該能理解和實(shí)現(xiàn)這些新資源的運(yùn)用。并且隨著研究的深入,更多的應(yīng)用將會(huì)被開發(fā)和實(shí)現(xiàn)。
權(quán)利要求
1.一種基于單機(jī)環(huán)境的并程結(jié)構(gòu)模塊,其特征在于包括N+1個(gè)并程分支程序模塊(N≥1),通過(guò)N+1個(gè)獨(dú)立結(jié)構(gòu)的分支程序時(shí)分運(yùn)行(突出和并行運(yùn)行的時(shí)分區(qū)別)實(shí)現(xiàn)并程模塊的運(yùn)行,在每個(gè)所述的并程分支程序的讀并程數(shù)據(jù)、寫并程數(shù)據(jù)、和并程數(shù)據(jù)一致化三類序網(wǎng)指令的子程序支持下,完成并程分支程序的數(shù)據(jù)傳送和同步;和一個(gè)管理程序模塊,用于響應(yīng)來(lái)自所述并程分支程序的信息,支持并程分支程序的懸掛、就緒、和運(yùn)行狀態(tài)。
2.根據(jù)權(quán)利要求1所述的并程結(jié)構(gòu)模塊,進(jìn)而包括一個(gè)并程分支程序懸掛處理模塊,用于處理當(dāng)前并程分支程序的懸掛、就緒、和運(yùn)行狀態(tài)。
3.根據(jù)權(quán)利要求1的并程結(jié)構(gòu)模塊,進(jìn)而包括一個(gè)并程進(jìn)入/退出模塊,所述并程進(jìn)入/退出模塊響應(yīng)所述時(shí)分管理程序模塊的請(qǐng)求,對(duì)每個(gè)實(shí)際應(yīng)用的并程進(jìn)行初始化處理和對(duì)并程的退出進(jìn)行處理。
4.根據(jù)權(quán)利要求1所述的并程結(jié)構(gòu)模塊,其中,第N+1個(gè)并程分支程序執(zhí)行一個(gè)并程數(shù)據(jù)的序,用數(shù)據(jù)一致化操作表示。
5.根據(jù)權(quán)利要求4的并程結(jié)構(gòu)模塊,其中,所述第N+1個(gè)分支程序中的令牌一致化操作和并程數(shù)據(jù)對(duì)應(yīng),直接通過(guò)所述第N+1個(gè)程序控制并程數(shù)據(jù)一個(gè)個(gè)地一致化,其中,并程數(shù)據(jù)一致化可以執(zhí)行的條件是該并程數(shù)據(jù)已經(jīng)被其他并程分支程序?qū)戇^(guò),否則該并程分支程序就要懸掛,一致化執(zhí)行后,表示該并程數(shù)據(jù)被其他并程分支程序讀取時(shí)呈有效,否則那些讀并程分支程序就要進(jìn)入懸掛。
6.根據(jù)權(quán)利要求5的并程結(jié)構(gòu)模塊,其中,在并程嵌套和子并程調(diào)用時(shí),所述第N+1個(gè)程序可以連接和控制子并程的調(diào)用許可和并程數(shù)據(jù)序的關(guān)系。
7.根據(jù)權(quán)利要求5的并程結(jié)構(gòu)模塊,其中,所述N+1個(gè)并程包括三種并程子程序,用于處理并程數(shù)據(jù)的讀、寫、和一致化操作,所述子程序具備令牌的設(shè)置、檢測(cè)、和處理能力,并支持并程分支程序的同步和并程數(shù)據(jù)的傳送。
8.一種基于單機(jī)環(huán)境的N+1個(gè)并程分支程序(N≥1)的運(yùn)行方法,其特征在于包括以下步驟初始化處理;進(jìn)行所述并程分支程序結(jié)束檢查,檢查所述并程分支程序的開關(guān)標(biāo)志,其中如果全部并程分支程序?yàn)殛P(guān),表示并程運(yùn)行已經(jīng)結(jié)束,則處理并程結(jié)束的記錄以及和外部程序的連接方式;和如果有一個(gè)并程分支程序是開,則進(jìn)行分支程序的懸掛狀態(tài)檢查;其中,如果檢查結(jié)果是全部并程分支程序處于懸掛狀態(tài),則表示盡管有并程沒有執(zhí)行完,但該并程分支程序已不能運(yùn)行下去,從而查找并程分支程序不能運(yùn)行的原因,并根據(jù)該原因處理并程分支程序的退出;如果檢查結(jié)果是有一個(gè)以上的并程分支程序處于就緒狀態(tài),則進(jìn)入并程分支程序排隊(duì)處理;選擇一個(gè)就緒的并程分支程序進(jìn)行分支程序排隊(duì)處理;選定并程分支程序以便對(duì)其參量加載并恢復(fù)該并程分支程序先前懸掛時(shí)的狀態(tài);和進(jìn)入該選定的并程分支程序運(yùn)行。
9.根據(jù)權(quán)利要求8所述的并程運(yùn)行方法,其中,所述初始化處理包括并程分支程序的參量的加載處理和并程分支程序的標(biāo)志區(qū)的清0處理。
10.根據(jù)權(quán)利要求9所述的并程運(yùn)行方法,其中,所述并程分支程序的參量的加載處理包括打開并程分支程序的N+1分支程序標(biāo)志ON;設(shè)置各并程分支程序的入口地址;設(shè)置相應(yīng)的寄存器數(shù)據(jù)初始值;和將并程標(biāo)志區(qū)和并程分支程序數(shù)據(jù)標(biāo)志清0。
11.根據(jù)權(quán)利要求8所述的并程運(yùn)行方法,其中所述并程分支程序包括一個(gè)寫數(shù)據(jù)子程序,其包括以下步驟對(duì)一個(gè)并程數(shù)據(jù)進(jìn)行寫操作;檢查該數(shù)據(jù)“曾一致化無(wú)效”標(biāo)志;如果該標(biāo)志為有效,表示該數(shù)據(jù)曾有過(guò)數(shù)據(jù)一致化操作,但因?yàn)橐恢禄瘶?biāo)志無(wú)效,使該一致化操作實(shí)際上沒有能執(zhí)行,導(dǎo)致一致化并程分支程序進(jìn)入懸掛狀態(tài);在數(shù)據(jù)有效的情況下,將就緒標(biāo)志中該一致化并程分支程序的狀態(tài)位從懸掛改為就緒;在數(shù)據(jù)無(wú)效的情況下,建立“一致化有效”標(biāo)志,使允許一致化并程分支程序?qū)υ摂?shù)據(jù)執(zhí)行一致化的操作;和寫數(shù)據(jù)子程序返回。
12.根據(jù)權(quán)利要求8所述的并程運(yùn)行方法,其中所述并程分支程序包括一個(gè)寫數(shù)據(jù)子程序,其包括以下步驟檢查該數(shù)據(jù)的“一致化有效”標(biāo)志;其中,如果該數(shù)據(jù)的“一致化有效”標(biāo)志無(wú)效,則懸掛該并程分支程序;設(shè)置“曾一致化無(wú)效”標(biāo)志;進(jìn)行當(dāng)前一致化分支程序的懸掛處理,保存一致化并程分支程序的當(dāng)前運(yùn)行狀態(tài),以便在今后該并程分支程序返回時(shí)使用;和退出該并程分支程序,轉(zhuǎn)并程分支程序懸掛入口,以便重新選擇新的并程分支程序;如果該數(shù)據(jù)的“一致化有效”標(biāo)志有效,則執(zhí)行數(shù)據(jù)和令牌的一致化操作;檢查該數(shù)據(jù)的N位“曾讀無(wú)效”標(biāo)志;以及數(shù)據(jù)一致化子程序的返回。
13.根據(jù)權(quán)利要求12所述的并程運(yùn)行方法,其中,在所述檢查該數(shù)據(jù)的N位“曾讀無(wú)效”標(biāo)志步驟中,如果“曾讀無(wú)效”標(biāo)志有效,則根據(jù)“曾讀無(wú)效”標(biāo)志的內(nèi)容,使相關(guān)的并程分支程序狀態(tài)從懸掛轉(zhuǎn)入就緒。
14.根據(jù)權(quán)利要求8所述的并程運(yùn)行方法,其中所述并程分支程序包括一個(gè)讀數(shù)據(jù)子程序,其包括以下處理步驟檢查該數(shù)據(jù)的“讀有效”標(biāo)志,如果該數(shù)據(jù)的“讀有效”標(biāo)志有效,讀數(shù)據(jù);以及讀數(shù)據(jù)子程序的返回。
15.根據(jù)權(quán)利要求14所述的并程運(yùn)行方法,其中,在所述檢查讀數(shù)據(jù)的“讀有效”標(biāo)志步驟中,還包括以下步驟如果該數(shù)據(jù)的“讀有效”標(biāo)志無(wú)效,設(shè)置N位“曾讀無(wú)效”,分別對(duì)應(yīng)不同的并程分支程序;對(duì)當(dāng)前并程分支程序進(jìn)行懸掛處理,保存并程分支程序的當(dāng)前運(yùn)行狀態(tài),以便在今后該并程分支程序返回時(shí),可以從懸掛點(diǎn)切入繼續(xù)運(yùn)行;以及退出該并程分支程序,轉(zhuǎn)并程分支程序懸掛入口,重新選擇新的并程分支程序。
全文摘要
本發(fā)明涉及軟件創(chuàng)建并程的嵌套結(jié)構(gòu)和并程的調(diào)用。并程是從程序角度對(duì)先有技術(shù)序網(wǎng)的一種看法,也包括N+1個(gè)并程分支程序模塊和(數(shù)據(jù))令牌結(jié)構(gòu)。根據(jù)本發(fā)明的單機(jī)環(huán)境,并程轉(zhuǎn)化為一種用時(shí)分方式運(yùn)行并程分支程序的結(jié)構(gòu),其中,通過(guò)分支程序中出現(xiàn)的讀、一致化、寫三種處理數(shù)據(jù)的子程序,實(shí)現(xiàn)各并程分支程序的懸掛、就緒處理,并由時(shí)分處理程序模塊管理分支程序的運(yùn)行。并程運(yùn)行過(guò)程將出現(xiàn)一個(gè)并程數(shù)據(jù)序的執(zhí)行過(guò)程,支持并程模塊的并行和嵌套。本發(fā)明并程結(jié)構(gòu)簡(jiǎn)化了時(shí)分管理模塊程序結(jié)構(gòu),還產(chǎn)生了第N+1個(gè)分支程序資源。
文檔編號(hào)G06F9/52GK1448840SQ0210816
公開日2003年10月15日 申請(qǐng)日期2002年3月28日 優(yōu)先權(quán)日2002年3月28日
發(fā)明者徐肇昌, 吳東明 申請(qǐng)人:徐肇昌