具有硬件互斥的控制電路設(shè)計(jì)方法
在控制系統(tǒng)設(shè)計(jì)時(shí),硬件互斥現(xiàn)象是很常見的,互斥電路功能可用硬件實(shí)現(xiàn),也可以用系統(tǒng)加軟件實(shí)現(xiàn)。用硬件電路來實(shí)現(xiàn)指定的控制功能比用軟件來實(shí)現(xiàn)穩(wěn)定性好,處理速度更快得多。隨著大規(guī)模集成電路技術(shù)發(fā)展,用硬件來處理特定的功能的發(fā)展趨勢(shì)日趨明顯,隨著SOPC技術(shù)的發(fā)展,軟體的硬化已日益成為人們研究的熱點(diǎn),專用功能的ASIC芯片越來越多。在進(jìn)行計(jì)算機(jī)操作系統(tǒng)設(shè)計(jì)時(shí),互斥理論用來處理并發(fā)過程對(duì)臨界資源的共享;在進(jìn)行控制系統(tǒng)設(shè)計(jì)時(shí),電路的不同邏輯狀態(tài)也常有互斥現(xiàn)象。如多個(gè)輸入信號(hào)共享一個(gè)處理電路而輸入信號(hào)同時(shí)作用于電路或多個(gè)信號(hào)同時(shí)互斥作用執(zhí)行機(jī)構(gòu)。同樣控制系統(tǒng)內(nèi)的互斥同步也可以用硬件來實(shí)現(xiàn),研究其互斥同步的硬件實(shí)現(xiàn)的理論和方法,則有追求高穩(wěn)定性、高處理速度的重要意義。硬件實(shí)現(xiàn)互斥同步速度快,穩(wěn)定性高,不必浪費(fèi)CPU的指令周期,但另一方面硬件實(shí)現(xiàn)功能固定,升級(jí)不方便,功能的軟體化與軟體的硬化是互相矛盾的兩個(gè)相對(duì)的方向。采用何種方法取決于被控對(duì)象和控制功能,控制功能專一,變化不頻繁,控制對(duì)象要求穩(wěn)定性高則用硬件實(shí)現(xiàn);控制功能易變,被控對(duì)象復(fù)雜,則用軟件實(shí)現(xiàn)。自1962年T.Dekker提出多處理器互斥問題以來,經(jīng)Edsger Dijkslra,Donald Knuth,Leslie Lamport,Gray Peterson等人的研究,已形成系統(tǒng)的理論,而互斥同步的硬件實(shí)現(xiàn)雖然業(yè)界早已有自覺或不自覺的實(shí)踐,但尚為形成理論化的成果。硬件互斥理論及其設(shè)計(jì)方法是數(shù)學(xué)理論,控制理論,算法的綜合,它的發(fā)展依賴于業(yè)界及學(xué)界大量的實(shí)踐及研究。
互斥理論基礎(chǔ)
互斥理論用來研究解決計(jì)算機(jī)操作系統(tǒng)進(jìn)程的并發(fā)與資源的共享的矛盾。并發(fā)性、共享性、不確定性是操作系統(tǒng)的主要特性,因此并發(fā)進(jìn)程之間必須相互制約。一次僅允許一個(gè)進(jìn)程使用的資源稱為臨界資源,在每個(gè)進(jìn)程中訪問臨界資源的那段程序代碼稱為臨界區(qū)。若能保證諸進(jìn)程互斥地進(jìn)入自已的臨界區(qū),便可實(shí)現(xiàn)它們對(duì)臨界資源的互斥訪問。進(jìn)程互斥就是兩個(gè)進(jìn)程不能同時(shí)訪問同一臨界資源的臨界區(qū)的現(xiàn)象。這種制約關(guān)系又可分為直接相互制約和間接相互制約。直接相互制約源于多個(gè)進(jìn)程相互合作完成某一項(xiàng)任務(wù),一組在異步環(huán)境下的并發(fā)進(jìn)程,各自的執(zhí)行結(jié)果互為對(duì)方的執(zhí)行條件,從而限制各進(jìn)程的執(zhí)行速度的過程稱為并發(fā)進(jìn)程的直接制約。直接制約的并發(fā)進(jìn)程相互合作的制約關(guān)系稱為同步關(guān)系。間接相互制約源于資源共享,由于共享某一公有資源而引起的在臨界區(qū)內(nèi)不允許并發(fā)進(jìn)程交叉執(zhí)行的現(xiàn)象,稱為由共享公有資源而造成的對(duì)并發(fā)進(jìn)程執(zhí)行速度的間接制約。這種制約關(guān)系稱為互斥(MutualExclusion)。
為了實(shí)現(xiàn)進(jìn)程互斥的同步,操作系統(tǒng)的進(jìn)程同步機(jī)制必須遵循如下準(zhǔn)則:空閑讓進(jìn),忙則等待,有限等待,讓權(quán)等待?;コ馔降谋举|(zhì)就是合理地為互斥進(jìn)程分配臨界資源。在軟件領(lǐng)域內(nèi),實(shí)現(xiàn)互斥編程的算法有銀行家算法,生產(chǎn)者-消費(fèi)者算法等,而在硬件設(shè)計(jì)中,軟件的方法可以借鑒和參考。需要對(duì)硬件互斥象進(jìn)行分析和轉(zhuǎn)換,進(jìn)行一些抽象化和具體化的過程。
邏輯電路互斥分析
邏輯電路的互斥分為兩種情況。其一:電路的多個(gè)輸入信號(hào)同時(shí)作用于控制電路則會(huì)引起輸出的混亂或誤動(dòng)作,另一方面,一個(gè)產(chǎn)品具有多種功能,而這些功能不能在同一時(shí)刻在該產(chǎn)品實(shí)現(xiàn),這種互斥現(xiàn)象本文定義為輸入互斥(Input-Mutual-Exclusion),亦即多個(gè)輸入信號(hào)對(duì)其臨界處理電路的互斥共享。如鍵盤編碼控制電路、多線組合邏編碼器、CPU的數(shù)據(jù)總線控制電路、內(nèi)存讀寫控制線路。前兩者屬于組合邏輯電路的互斥,后兩者屬于時(shí)序邏輯電路的互斥。其二:電路的多個(gè)輸出部件作用于同一資源會(huì)引起系統(tǒng)的誤動(dòng)作或燒毀系統(tǒng)設(shè)備。這種互斥現(xiàn)象本文定義為輸出互斥(Output-Mutual-ExcIusion),亦即多個(gè)輸出信號(hào)對(duì)其臨界的執(zhí)行機(jī)構(gòu)的互斥共享。如多個(gè)控制電路作用于同一執(zhí)行機(jī)構(gòu)的控制系統(tǒng),又如前述的CPU的數(shù)據(jù)總線控制電路、內(nèi)存讀寫控制線路從控制電路的輸出端看亦可歸入此類。輸人互斥和輸出互斥本質(zhì)上是無區(qū)別的,只是針對(duì)不同的電路部分而言,對(duì)于接收輸入信號(hào)的控制部分被共享則是輸入互斥,控制部分輸出多個(gè)信號(hào)共享系統(tǒng)外的臨界資源則是輸出互斥,這種劃分是基于系統(tǒng)的控制部分而言的。硬件系統(tǒng)互斥抽象地是信號(hào)(調(diào)用信號(hào)、請(qǐng)求信號(hào))與臨界資源(信號(hào)處理電路、執(zhí)行機(jī)構(gòu)等)的互斥共享。因此,將共享訪問或使用臨界資源的互斥信號(hào)定義為硬件互斥系統(tǒng)的顧客;一個(gè)被共享使用且具有一定功能的臨界資源體為服務(wù)者(executive-waiter);將信號(hào)與臨界資源的各種組合名為狀態(tài)(state)。
互斥電路同步的設(shè)計(jì)方法
對(duì)于互斥電路同步的設(shè)計(jì),需要對(duì)硬件互斥象進(jìn)行分析和轉(zhuǎn)換,進(jìn)行一些抽象化和具體化的過程。抽象化和具體化是邏輯思維的兩個(gè)相反過程,是人類進(jìn)行理性思維與科學(xué)研究的一般模式。抽象化是通過分析和綜合,建立起普遍適合于被研究對(duì)象的一般模型,并建立模型的普遍算法;具體化是從已建立的抽象模型出發(fā),用之指導(dǎo)研究具體的對(duì)象,完成具體的認(rèn)識(shí)和進(jìn)行具體實(shí)踐。在硬件系統(tǒng)的互斥同步設(shè)計(jì)的同時(shí),從具體到抽象的過程為:分析所要設(shè)計(jì)的系統(tǒng)的功能,指出哪些信號(hào)為顧客,那些資源為服務(wù)者,確定互斥體為何物,何為信號(hào)量,并劃分互斥過程為先后相繼的序列狀態(tài);用已有的軟件互斥理論的模型來分析硬件互斥問題,并設(shè)計(jì)出其互斥進(jìn)程同步程序的偽代碼,如此建立起其軟件互斥的模型和算法,即完成了從具體到抽象的思維過程。設(shè)計(jì)的具體化過程則如此:將互斥狀態(tài)轉(zhuǎn)為邏輯狀態(tài),將互斥進(jìn)程的請(qǐng)求轉(zhuǎn)化為互斥的邏輯信號(hào),將互斥體具體化為某個(gè)元件或某個(gè)電路部分電路的信號(hào)(Mutex),在Mutex作用下,各個(gè)互斥信號(hào)可實(shí)現(xiàn)互斥同步,若互斥過程有時(shí)間的分配,則Mutex與延時(shí)電路合一。信號(hào)量由傳感器產(chǎn)生或由延時(shí)電路產(chǎn)生,它控制Mutex的翻轉(zhuǎn),將互斥進(jìn)程同步過程具體化為系統(tǒng)硬件的邏輯動(dòng)作,這一過程既要進(jìn)行邏輯思維,也要進(jìn)行創(chuàng)造性的想象。不同的互斥現(xiàn)象的硬件實(shí)現(xiàn)的設(shè)計(jì)有所差別。 對(duì)于輸入互斥電路,在同步的實(shí)現(xiàn)方法上,分析其互斥關(guān)系,組合關(guān)系的互斥無時(shí)序限制,其狀態(tài)的轉(zhuǎn)換以輸入為條件,可以用組合邏輯電路實(shí)現(xiàn),通過規(guī)定輸入信號(hào)的優(yōu)先級(jí)別和邏輯功能的真值表,按優(yōu)先級(jí)別分配臨界資源,然后用卡諾圖來設(shè)計(jì)其實(shí)現(xiàn)電路。如優(yōu)先編碼器,對(duì)輸出同為0的兩種輸入狀態(tài)選用其中一個(gè)由各輸入信號(hào)組合輸出信號(hào)作為輸出使能信號(hào)實(shí)現(xiàn)互斥同步。然而,多數(shù)互斥具有時(shí)序關(guān)系,其狀態(tài)的轉(zhuǎn)換與時(shí)間有關(guān),必須通過時(shí)序電路來實(shí)現(xiàn),通過增加時(shí)鐘信號(hào)、使能信號(hào)、片選信號(hào)或其他指令信號(hào)作為輸入信號(hào),實(shí)現(xiàn)臨界資源的加鎖-解鎖,使之協(xié)調(diào)各級(jí)與門或三態(tài)門的動(dòng)作,實(shí)現(xiàn)互斥同步:對(duì)于CPU的內(nèi)部數(shù)據(jù)總線通過軟件的指令來完成,對(duì)于內(nèi)存單元,互斥通過讀與控制線和地址總線來實(shí)現(xiàn)。
輸出互斥類似于操作系統(tǒng)進(jìn)程的間接互斥,發(fā)生在控制部件之外,輸出信號(hào)之間具有互為條件的邏輯關(guān)系,如機(jī)床的聯(lián)動(dòng)控制,即一個(gè)狀態(tài)是另一個(gè)狀態(tài)使用臨界資源的條件,有時(shí)條件還有優(yōu)先次序。對(duì)于輸出互斥可設(shè)立一個(gè)控制部件,產(chǎn)生符合邏輯功能的具有互斥狀態(tài)的互斥信號(hào)或互斥函數(shù),類似于操作系統(tǒng)的互斥變量(Mutex),用以控制輸入信號(hào)的作用狀態(tài)或作用時(shí)間。這一互斥變量可以是一個(gè)延時(shí)部件的控制信號(hào),也可以是一個(gè)組合邏輯部件的控制信號(hào)如觸發(fā)器組件或具有CPU的智能部件的輸出信號(hào)。
對(duì)于具有復(fù)雜的狀態(tài)轉(zhuǎn)換關(guān)系的互斥系統(tǒng)的設(shè)計(jì),可以使用Petri Net和有限狀態(tài)機(jī)FSM來分析。兩者都是軟件工程里的圖形工具方法,也可以用來為解決互斥狀態(tài)建模。有限狀態(tài)機(jī)已為人所熟知,而Petri Net對(duì)于硬件工程帥也許比較陌生。PetriNet圖包含四個(gè)元素:Place,Transition,Arc和Token。Place是一種狀態(tài),中文意譯為"所",一般用圓圈表示。Transition是一個(gè)狀態(tài)向另一狀態(tài)轉(zhuǎn)移的過程,用矩形框表示,中文意譯為"遷移"。Arc豐要是連接Place及Transition的一個(gè)有方向的線段,可以從Place指向Transition或從Transition指向Place,但Place與Place或Transition與Transition之間不能有Arc相連,因?yàn)樗臓顟B(tài)不能直接變成另一個(gè)狀態(tài),中間一定要經(jīng)過一個(gè)過程,而過程與過程之間也會(huì)存在著一種狀態(tài)。Token指的就是一個(gè)物件或條件,可以代表任何東西,中文意譯為"令牌",用實(shí)心圓點(diǎn)表示。每個(gè)Place或Transition中可以有零個(gè)或多個(gè)Token,當(dāng)Token足夠時(shí)才能由一個(gè)狀態(tài)變成另一個(gè)狀態(tài)。除了以上四個(gè)元素之外,在進(jìn)階的Petri Net中,還會(huì)給每個(gè)Token不同的顏色及屬性,還會(huì)再加上時(shí)間及階層架構(gòu)。PetriNet用來分析復(fù)雜的,動(dòng)態(tài)的硬件互斥是非常有效的工具。有限狀態(tài)機(jī)適則合于用來分析靜態(tài)的硬件互斥。
輸出互斥同步的實(shí)現(xiàn)實(shí)例
以通信機(jī)房電源自動(dòng)交替方案來說明。功能要求:當(dāng)主電源(市電)有電時(shí),備用電源不得接通,當(dāng)主電源無電時(shí),備用電源自動(dòng)接通,主電源停電后來電時(shí)先斷開備用電源,再接通主電源。這個(gè)問題是輸出互斥問題,可以用有限狀態(tài)機(jī)FSM分析。
當(dāng)主電源(main power)有電時(shí),記為MP(1),無電時(shí),記為MP(0),當(dāng)備用電源(backuppower)有電時(shí),記為BP(1),無電時(shí),記為BP(0),則其邏輯功能如表1所列。
從上表可知,主電源是否有電的狀態(tài)MP可作為互斥變量,可用一個(gè)中間繼電器JZ,其線胞接在豐電源上,用它來控制J1和J2的開合,從而控制主電源與備用電源的自動(dòng)交替,J1接常閉觸點(diǎn),MP1時(shí)斷開,MP0時(shí)閉合,J2、J3接常開觸點(diǎn),在性能上J1的動(dòng)作速度要比J2快。其實(shí)現(xiàn)方案如圖1所示。在此MP是互斥變量,MP控制著JZ的動(dòng)作,JZ是瓦斥同步的執(zhí)行機(jī)構(gòu)。
輸入互斥同步的實(shí)現(xiàn)實(shí)例
要設(shè)計(jì)一個(gè)能進(jìn)行加法運(yùn)算和減法運(yùn)算的電路,就需要對(duì)輸入信號(hào):返算輸人變量實(shí)現(xiàn)互斥,可設(shè)立一個(gè)互斥變最用來控制電路的運(yùn)算功能。根據(jù)異或邏輯的規(guī)律:L=X1⊕X2,當(dāng)X1=0時(shí),L=X2的原碼,當(dāng)X1=1時(shí),L=X2的反碼,因此欲用一個(gè)電路求加法和減法D=A
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評(píng)論