專利名稱:一種用于光盤驅(qū)動(dòng)器處理中斷要求的方法
技術(shù)領(lǐng)域:
本發(fā)明提供一種處理中斷要求的方法,特別是指一種在光盤驅(qū)動(dòng)器進(jìn)行一需較長時(shí)間的控制操作或運(yùn)算過程中處理中斷要求的方法。
背景技術(shù):
隨著計(jì)算機(jī)裝置的普及而使得計(jì)算機(jī)裝置的應(yīng)用范圍隨之?dāng)U大,除了一般商業(yè)性用途以外,個(gè)人計(jì)算機(jī)也進(jìn)入家庭以提供例如多媒體娛樂之類的功能。由于多媒體娛樂需要龐大的影像數(shù)據(jù)以及聲音數(shù)據(jù)來產(chǎn)生所需的聲光效果,因此進(jìn)一步帶動(dòng)數(shù)據(jù)存儲(chǔ)技術(shù)的發(fā)展。為了讓使用者能夠更方便地存儲(chǔ)數(shù)字?jǐn)?shù)據(jù),各種數(shù)據(jù)存儲(chǔ)裝置相繼地出現(xiàn)。其中光盤(Optical Disk)由于本身成本低、體積小及容量大的特性,所以近年來已成為使用者用來紀(jì)錄數(shù)據(jù)的工具。除了一般文件數(shù)據(jù)或程序數(shù)據(jù)外,光盤亦被廣泛地用來存儲(chǔ)多媒體數(shù)據(jù),例如聲音數(shù)據(jù)(Audio Stream)及影像數(shù)據(jù)(Video Stream)等。而光盤上所記錄的數(shù)據(jù)則需要使用一光盤驅(qū)動(dòng)器(Optical Disk Drive)以進(jìn)行存取。
請(qǐng)參考圖1。圖1為一公知光盤驅(qū)動(dòng)器120配合主機(jī)110工作時(shí)的示意圖。主機(jī)110可以為一計(jì)算機(jī)主機(jī)。光盤驅(qū)動(dòng)器120通常連接到主機(jī)110,以接收主機(jī)110的控制指令而工作。光盤驅(qū)動(dòng)器120中包含有一控制電路122,用來主控光盤驅(qū)動(dòng)器120的工作。除此之外,光盤驅(qū)動(dòng)器120中還設(shè)有一非易失性的記憶存儲(chǔ)器124(如閃速存儲(chǔ)器)、一緩沖存儲(chǔ)器126(如易失性的隨機(jī)存取存儲(chǔ)器或是寄存器等)、以及一用來實(shí)現(xiàn)光盤驅(qū)動(dòng)器120的功能的伺服模塊140。緩沖存儲(chǔ)器126用來暫存光盤驅(qū)動(dòng)器120工作期間必需的數(shù)據(jù);而伺服模塊140中包含有一主軸馬達(dá)142、一讀取頭146等機(jī)電元件。主軸馬達(dá)142用來帶動(dòng)光盤150轉(zhuǎn)動(dòng);讀取頭146則可沿一滑軌144滑動(dòng),以存取光盤150上不同軌道(Track)上的數(shù)據(jù)。
一般而言,主機(jī)110僅需發(fā)出高層次的控制指令至光盤驅(qū)動(dòng)器120中的控制電路122,控制電路122便會(huì)依據(jù)該控制指令來執(zhí)行非易失性記憶存儲(chǔ)器124中的固件程序代碼130??刂齐娐?22執(zhí)行固件程序代碼130中所記錄的相對(duì)應(yīng)的控制程序,以控制伺服模塊140實(shí)際執(zhí)行光盤驅(qū)動(dòng)器120的主要功能。
舉例來說,當(dāng)主機(jī)110要讀取光盤150上的數(shù)據(jù)時(shí),會(huì)傳送一數(shù)據(jù)讀取指令至光盤驅(qū)動(dòng)器120以及指定該數(shù)據(jù)在光盤150上的地址。接著控制電路122就會(huì)執(zhí)行光盤驅(qū)動(dòng)器120本身的固件程序代碼130,用來協(xié)調(diào)伺服模塊140中主軸馬達(dá)142、讀取頭146等元件的工作。例如,控制主軸馬達(dá)142達(dá)到一特定的轉(zhuǎn)速、移動(dòng)讀取頭146至一預(yù)定軌道以接收光盤150所反射的激光等。伺服模塊140由光盤150所讀取到的數(shù)據(jù),會(huì)暫存至緩沖存儲(chǔ)器126中,接著由控制電路122傳送至主機(jī)110。
請(qǐng)參閱圖2。圖2為公知技術(shù)中光盤驅(qū)動(dòng)器120依主機(jī)110的一讀取指令讀取光盤150上數(shù)據(jù)的流程圖200。流程圖200包含有下列步驟步驟202開始。光盤驅(qū)動(dòng)器120利用控制電路122接收及解讀由主機(jī)110傳送過來的一讀取指令I(lǐng)nstruction_A。
步驟204光盤驅(qū)動(dòng)器120依據(jù)該讀取指令I(lǐng)nstruction_A進(jìn)行一數(shù)據(jù)讀取程序。
步驟206利用控制電路122判斷欲讀取的數(shù)據(jù)是否位于緩沖存儲(chǔ)器126中,若是,則進(jìn)行步驟212;若否,則進(jìn)行步驟208。
步驟208利用控制電路122執(zhí)行固件程序代碼130以控制伺服模塊140進(jìn)行尋軌操作。
步驟210利用伺服模塊140讀取光盤150上該讀取指令I(lǐng)nstruction_A所指定的數(shù)據(jù),并將讀取到的數(shù)據(jù)暫存在緩沖存儲(chǔ)器126中。
步驟212利用控制電路122將緩沖存儲(chǔ)器126中相對(duì)應(yīng)的數(shù)據(jù)傳送至主機(jī)110,以響應(yīng)該讀取指令。
步驟214結(jié)束。
上述光盤驅(qū)動(dòng)器120依據(jù)主機(jī)110的一讀取指令,讀取光盤150上數(shù)據(jù)的詳細(xì)工作方式為本領(lǐng)域的技術(shù)人員所熟知,在不影響本發(fā)明技術(shù)公開的情況下,在此不再贅述。
一般而言,主機(jī)110傳送一讀取指令至光盤驅(qū)動(dòng)器120后,會(huì)等到光盤驅(qū)動(dòng)器120回傳該讀取指令所要求的數(shù)據(jù)后,才傳送下一個(gè)讀取指令至光盤驅(qū)動(dòng)器120。當(dāng)主機(jī)110需要光盤150上的大量數(shù)據(jù)時(shí)(例如撥放光盤150上的音像數(shù)據(jù)),主機(jī)110會(huì)不斷地傳送讀取指令至光盤驅(qū)動(dòng)器120,來獲得光盤150上的數(shù)據(jù)。
在公知技術(shù)中,光盤驅(qū)動(dòng)器120通常會(huì)利用緩沖存儲(chǔ)器126提供數(shù)據(jù)快取(Cache)的功能。舉例而言,若光盤150為一音像光盤(VCD),由于主機(jī)110所欲讀取的數(shù)據(jù)通常是光盤150上連續(xù)性的音像數(shù)據(jù)。因此,當(dāng)光盤驅(qū)動(dòng)器120接收到主機(jī)110的一讀取指令后,不僅會(huì)將該讀取指令所要求的數(shù)據(jù)暫存在緩沖存儲(chǔ)器126中,亦會(huì)將后續(xù)的數(shù)據(jù)一并暫存在緩沖存儲(chǔ)器126中,以供光盤驅(qū)動(dòng)器120接收到后續(xù)的讀取指令時(shí)進(jìn)行數(shù)據(jù)快取之用。即,在步驟202中,當(dāng)主機(jī)110傳送該讀取指令I(lǐng)nstruction_A至光盤驅(qū)動(dòng)器120時(shí),光盤驅(qū)動(dòng)器120會(huì)進(jìn)行步驟206,先檢查緩沖存儲(chǔ)器126中是否已存在該讀取指令I(lǐng)nstruction_A所指定的數(shù)據(jù)。倘若欲讀取的數(shù)據(jù)已存在緩沖存儲(chǔ)器126中,則僅需進(jìn)行步驟212,將緩沖存儲(chǔ)器126中的數(shù)據(jù)傳送至主機(jī)110以響應(yīng)該讀取指令I(lǐng)nstruction_A,而不需從光盤150上讀取該讀取指令I(lǐng)nstruction_A所指定的數(shù)據(jù),因此可提升光盤驅(qū)動(dòng)器120響應(yīng)主機(jī)110的速度。
通常在公知技術(shù)中,光盤驅(qū)動(dòng)器120的緩沖存儲(chǔ)器126會(huì)設(shè)有一數(shù)據(jù)量閾值。當(dāng)光盤驅(qū)動(dòng)器120將緩沖存儲(chǔ)器126的空間填滿或達(dá)到一特定水平后,緩沖存儲(chǔ)器126中所存儲(chǔ)的數(shù)據(jù)會(huì)陸續(xù)因?yàn)橹鳈C(jī)110所發(fā)出的讀取指令,而被傳送到主機(jī)110。只要緩沖存儲(chǔ)器126中的數(shù)據(jù)量高于該數(shù)據(jù)量閾值時(shí),光盤驅(qū)動(dòng)器120都不需進(jìn)行數(shù)據(jù)補(bǔ)充的操作。直到緩沖存儲(chǔ)器126中暫存的數(shù)據(jù)量等于或低于該數(shù)據(jù)量閾值時(shí),光盤驅(qū)動(dòng)器120便會(huì)讀取光盤150上的后續(xù)數(shù)據(jù),將緩沖存儲(chǔ)器126中的數(shù)據(jù)量填滿或是使之達(dá)到該特定水平。
因此,在步驟206中,公知技術(shù)若判斷出該讀取指令I(lǐng)nstruction_A所指定的數(shù)據(jù)存在緩沖存儲(chǔ)器126中,還會(huì)判斷扣掉該讀取指令I(lǐng)nstruction_A所要求的數(shù)據(jù)后,緩沖存儲(chǔ)器126中所剩余的數(shù)據(jù)量是否會(huì)降到等于或低于該數(shù)據(jù)量閾值。若控制電路122判斷出一旦將該讀取指令I(lǐng)nstruction_A所指定的數(shù)據(jù)傳送至主機(jī)110后,緩沖存儲(chǔ)器126當(dāng)中所剩余的數(shù)據(jù)量便會(huì)等于或低于該數(shù)據(jù)量閾值,則控制電路122會(huì)依據(jù)固件程序代碼130的主環(huán)路以控制伺服模塊140讀取光盤150上的后續(xù)數(shù)據(jù),并暫存到緩沖存儲(chǔ)器126中,使緩沖存儲(chǔ)器126中的數(shù)據(jù)量填滿或是使之達(dá)到該特定水平。
而要讀取光盤150的數(shù)據(jù)前,光盤驅(qū)動(dòng)器120需進(jìn)行尋軌(Seeking)的操作,以將讀取頭146移到適當(dāng)?shù)奈恢?。所謂尋軌操作,簡而言之就是將讀取頭146沿滑軌144移動(dòng)到欲讀取數(shù)據(jù)所屬的一軌道的過程。通常尋軌操作所耗費(fèi)的時(shí)間需數(shù)微秒至上百微秒(ms),若是長距離尋軌(Long-Seeking)操作則需要的時(shí)間可能長達(dá)數(shù)倍之多。光盤驅(qū)動(dòng)器120利用緩沖存儲(chǔ)器126提供的數(shù)據(jù)快取功能,能使數(shù)據(jù)傳輸?shù)倪^程較平順。只有在欲讀取的數(shù)據(jù)不在緩沖存儲(chǔ)器126中,或是只有部分在緩沖存儲(chǔ)器126中,而其他的部分需要從光盤150上讀取,光盤驅(qū)動(dòng)器120才需進(jìn)行步驟208的尋軌操作。
然而,在公知光盤驅(qū)動(dòng)器120的固件程序代碼130的結(jié)構(gòu)下,當(dāng)光盤驅(qū)動(dòng)器120依據(jù)固件程序代碼130的主環(huán)路進(jìn)行步驟208的尋軌過程當(dāng)中,若接收到主機(jī)110傳送過來的一讀取指令I(lǐng)nstruction_B而產(chǎn)生一中斷要求時(shí),該中斷要求會(huì)暫時(shí)被擱置。等到控制電路122依據(jù)固件程序代碼130的主環(huán)路完成該例行性程序(即步驟208)后,光盤驅(qū)動(dòng)器120才會(huì)響應(yīng)該中斷要求,對(duì)該讀取指令I(lǐng)nstruction_B進(jìn)行解讀與處理。實(shí)際上,不只是尋軌操作,在公知固件程序代碼130的結(jié)構(gòu)中,對(duì)于光盤驅(qū)動(dòng)器120在進(jìn)行需要較長時(shí)間的控制操作或運(yùn)算的過程中所產(chǎn)生的中斷要求的處理方式,都是先將該中斷要求擱置,等到進(jìn)行中的程序完成后才處理。而一般光盤驅(qū)動(dòng)器的工作中,如調(diào)整主軸馬達(dá)142的轉(zhuǎn)速、以及重新讀取(Retry)等等,都是需要較長時(shí)間的控制操作或運(yùn)算的例子。
如公知技術(shù)所熟知,光盤驅(qū)動(dòng)器120響應(yīng)一讀取指令的速度,比光盤驅(qū)動(dòng)器120進(jìn)行尋軌的速度要快很多。例如,假設(shè)主機(jī)110通過IDE或SCSI總線接口傳輸數(shù)據(jù)的速度是1M字節(jié)/秒,而主機(jī)110所傳送的每個(gè)讀取指令所要求的數(shù)據(jù)長度是20k字節(jié),則相當(dāng)于光盤驅(qū)動(dòng)器120響應(yīng)一個(gè)讀取指令的時(shí)間只需要20微秒(ms)。
如前所述,若主機(jī)110在光盤驅(qū)動(dòng)器120進(jìn)行需要較長時(shí)間的控制操作或運(yùn)算的過程中,傳送該讀取指令I(lǐng)nstruction_B至光盤驅(qū)動(dòng)器120,則該讀取指令I(lǐng)nstruction_B需等待光盤驅(qū)動(dòng)器120完成進(jìn)行中的程序后才會(huì)得到響應(yīng)。因此,即使該讀取指令I(lǐng)nstruction_B所要求的數(shù)據(jù)位于緩沖存儲(chǔ)器126中,光盤驅(qū)動(dòng)器120仍須等到該控制操作或運(yùn)算完成后,光盤驅(qū)動(dòng)器120才會(huì)處理該中斷要求,使得主機(jī)110可能因數(shù)據(jù)中斷而造成延遲的現(xiàn)象。例如,在公知技術(shù)中,當(dāng)主機(jī)110利用光盤驅(qū)動(dòng)器120讀取一音像光盤上的數(shù)據(jù),以進(jìn)行音像播放的過程中,若主機(jī)110所需要的數(shù)據(jù)有中斷的情況,則可能造成音像播放的過程產(chǎn)生停格或延遲的不良現(xiàn)象。
為降低延遲的影響,公知技術(shù)應(yīng)用狀態(tài)機(jī)(State Machine)的程序設(shè)計(jì)方式來設(shè)計(jì)固件程序代碼130。狀態(tài)機(jī)方式將需較長時(shí)間的光盤驅(qū)動(dòng)器120的控制操作或運(yùn)算過程,分割成許多階段(Stage)來進(jìn)行。因此,每一階段所使用的時(shí)間便會(huì)大幅降低,而光盤驅(qū)動(dòng)器120便可以利用階段的間隔來處理相對(duì)應(yīng)于主機(jī)110發(fā)出的讀取指令的中斷要求,減少該讀取指令等候處理的時(shí)間。
然而,應(yīng)用狀態(tài)機(jī)方式所設(shè)計(jì)的固件程序代碼較為復(fù)雜,使得固件程序代碼維護(hù)與更新時(shí)的困難度與成本增加,進(jìn)而影響到產(chǎn)品進(jìn)入市場(chǎng)的時(shí)間點(diǎn)。
發(fā)明內(nèi)容
因此本發(fā)明的主要目的在于提供一種在一光盤驅(qū)動(dòng)器并行處理一需較長時(shí)間的控制操作或運(yùn)算過程,以及一中斷要求的方法,以解決上述問題。
本發(fā)明的較佳實(shí)施例中提供一種在一光盤驅(qū)動(dòng)器進(jìn)行一需較長時(shí)間的控制操作或運(yùn)算過程中處理一中斷要求的方法,該方法包含有在該控制操作或運(yùn)算進(jìn)行的同時(shí),進(jìn)行以下步驟利用該光盤驅(qū)動(dòng)器接收一控制電路所傳來的該中斷要求;檢查該中斷要求是否為一讀取指令;若該中斷要求為一讀取指令,檢查該讀取指令所指定的欲讀取數(shù)據(jù)是否存在于一緩沖器內(nèi);以及若該欲讀取數(shù)據(jù)存在于該緩沖器內(nèi),響應(yīng)于該中斷要求,傳送該緩沖器內(nèi)相對(duì)應(yīng)的數(shù)據(jù)至該控制電路。
本發(fā)明的優(yōu)點(diǎn)的一是光盤驅(qū)動(dòng)器會(huì)在中斷要求發(fā)生時(shí)處理讀取指令,因此,即使光盤驅(qū)動(dòng)器在進(jìn)行一需較長時(shí)間的控制操作或運(yùn)算過程之中,亦可以快速地響應(yīng)主機(jī)的讀取指令,而大幅降低數(shù)據(jù)延遲的情況。
本發(fā)明的另一優(yōu)點(diǎn)是不需使用狀態(tài)機(jī)的固件程序代碼設(shè)計(jì)方式,可降低固件程序代碼的復(fù)雜度,以及提升維護(hù)與更新時(shí)的便利性。
圖1為公知一光盤驅(qū)動(dòng)器配合一主機(jī)工作時(shí)的示意圖。
圖2為公知一光盤驅(qū)動(dòng)器依一主機(jī)的一讀取指令讀取一光盤上數(shù)據(jù)的流程圖。
圖3為本發(fā)明的一光盤驅(qū)動(dòng)器配合一主機(jī)工作時(shí)的示意圖。
圖4為本發(fā)明的一光盤驅(qū)動(dòng)器在進(jìn)行一需較長時(shí)間的控制操作或運(yùn)算過程中處理一中斷要求的流程圖。
附圖符號(hào)說明110 主機(jī)120、320光盤驅(qū)動(dòng)器122 控制電路124 記憶存儲(chǔ)器126 緩沖存儲(chǔ)器130、330固件程序代碼140 伺服模塊142 主軸馬達(dá)144 滑軌146 讀取頭150 光盤具體實(shí)施方式
請(qǐng)參考圖3。圖3為本發(fā)明的光盤驅(qū)動(dòng)器320配合一主機(jī)110工作時(shí)的示意圖。光盤驅(qū)動(dòng)器320與圖1的光盤驅(qū)動(dòng)器120很相似,因此兩光盤驅(qū)動(dòng)器中相同的元件以同樣的編號(hào)表示,而光盤驅(qū)動(dòng)器320的元件配置方式均與光盤驅(qū)動(dòng)器120類似,為簡潔起見,在此不再贅述。
而本發(fā)明的光盤驅(qū)動(dòng)器320與公知光盤驅(qū)動(dòng)器120的不同點(diǎn),在于光盤驅(qū)動(dòng)器320的固件程序代碼330在光盤驅(qū)動(dòng)器320進(jìn)行一需較長時(shí)間的控制操作或運(yùn)算過程中,處理一中斷要求的方式與公知技術(shù)不同。以下以流程圖方式說明固件程序代碼330的工作情形。
圖4表示本發(fā)明的光盤驅(qū)動(dòng)器320在進(jìn)行一需較長時(shí)間的控制操作或運(yùn)算過程中處理一中斷要求的流程圖400。流程圖400包含有下列步驟步驟402開始。光盤驅(qū)動(dòng)器320在進(jìn)行一需較長時(shí)間的控制操作或運(yùn)算過程(例如尋軌操作、調(diào)整主軸馬達(dá)142的轉(zhuǎn)速等等)中,接收到主機(jī)110所傳送過來的一指令I(lǐng)nstruction_C而產(chǎn)生一中斷要求。
步驟404控制電路122解譯該中斷要求所對(duì)應(yīng)的該指令I(lǐng)nstruction_C的內(nèi)容。
步驟406利用控制電路122判斷該指令I(lǐng)nstruction_C是否為一讀取指令,若是,則進(jìn)行步驟408;若否,則進(jìn)行步驟414。
步驟408判斷該讀取指令所欲指定的數(shù)據(jù)是否位于緩沖存儲(chǔ)器126中,若是,則進(jìn)行步驟410;若否,則進(jìn)行步驟414。
步驟410利用控制電路122將緩沖存儲(chǔ)器126中被該讀取指令所指定的數(shù)據(jù)傳送至主機(jī)110。
步驟412控制電路122清除該中斷要求。
步驟414結(jié)束。固件程序代碼330的流程回到原先所執(zhí)行的主環(huán)路中。
在本發(fā)明的一較佳實(shí)施例中,光盤驅(qū)動(dòng)器320在進(jìn)行一需較長時(shí)間的控制操作或運(yùn)算的過程中,應(yīng)用本發(fā)明所提出的光盤驅(qū)動(dòng)器處理一中斷要求的方法,以使光盤驅(qū)動(dòng)器320傳輸光盤150的數(shù)據(jù)至主機(jī)110的過程更平順。為了方便說明起見,以下舉光盤驅(qū)動(dòng)器320進(jìn)行尋軌操作的過程為例,說明流程圖400的工作方式。請(qǐng)注意,本發(fā)明的光盤驅(qū)動(dòng)器處理一中斷要求的方法并不限定在光盤驅(qū)動(dòng)器進(jìn)行尋軌操作的過程,事實(shí)上,本發(fā)明的光盤驅(qū)動(dòng)器處理一中斷要求的方法,可應(yīng)用于光盤驅(qū)動(dòng)器320進(jìn)行任何控制操作或運(yùn)算的過程中。
如前所述,當(dāng)光盤驅(qū)動(dòng)器320在處理一讀取指令I(lǐng)nstruction_A時(shí),檢查出該讀取指令I(lǐng)nstruction_A所指定的數(shù)據(jù)位于緩沖存儲(chǔ)器126中,同時(shí)亦判斷出扣除掉該讀取指令I(lǐng)nstruction_A所要求的數(shù)據(jù)后,緩沖存儲(chǔ)器126中暫存的數(shù)據(jù)量會(huì)降到等于或低于一預(yù)設(shè)閾值。因此,光盤驅(qū)動(dòng)器320一方面會(huì)利用控制電路122將緩沖存儲(chǔ)器126中相對(duì)應(yīng)于該讀取指令I(lǐng)nstruction_A的數(shù)據(jù)傳送至主機(jī)110,另一方面,光盤驅(qū)動(dòng)器320的控制電路122亦會(huì)依據(jù)固件程序代碼330的主環(huán)路以控制伺服模塊140進(jìn)行一例行性的程序,亦即進(jìn)行尋軌操作,使光盤驅(qū)動(dòng)器320能讀取光盤150上的后續(xù)數(shù)據(jù)并暫存在緩沖存儲(chǔ)器126中。
然而,光盤驅(qū)動(dòng)器320傳送該讀取指令I(lǐng)nstruction_A所指定的數(shù)據(jù)至主機(jī)110所需要的時(shí)間,通常比光盤驅(qū)動(dòng)器320進(jìn)行尋軌的時(shí)間要短很多。因此,主機(jī)110很有可能在控制光盤驅(qū)動(dòng)器320的伺服模塊140完成尋軌的操作前,就將該讀取指令I(lǐng)nstruction_A的數(shù)據(jù)處理完畢,并傳送另一讀取指令I(lǐng)nstruction_C至光盤驅(qū)動(dòng)器320,要求讀取后續(xù)的數(shù)據(jù)。
因此,在步驟402中,光盤驅(qū)動(dòng)器320的控制電路122在監(jiān)控伺服模塊140進(jìn)行尋軌操作的過程中,會(huì)接收到主機(jī)110所傳送過來的該指令I(lǐng)nstruction_C而產(chǎn)生一中斷要求。接著,在步驟404中,控制電路122會(huì)在該中斷要求產(chǎn)生后,立即解譯該中斷要求所對(duì)應(yīng)的該指令I(lǐng)nstruction_C的內(nèi)容。
在步驟406中,當(dāng)控制電路122解譯完該指令I(lǐng)nstruction_C的內(nèi)容后,會(huì)判斷該指令I(lǐng)nstruction_C是否為一讀取指令。倘若主機(jī)110此時(shí)所傳送過來的該指令I(lǐng)nstruction_C并非為一讀取指令,則控制電路122會(huì)先處理完進(jìn)行中的尋軌操作后,再依該指令的優(yōu)先順序響應(yīng)該指令。在此假設(shè)該指令I(lǐng)nstruction_C為一讀取指令以說明接下來的步驟。
在步驟408中,當(dāng)控制電路122判斷出該指令I(lǐng)nstruction_C為一讀取指令后,控制電路122會(huì)接著檢查該讀取指令I(lǐng)nstruction_C所欲讀取的數(shù)據(jù)是否在緩沖存儲(chǔ)器126中。
倘若該讀取指令I(lǐng)nstruction_C所指定的數(shù)據(jù)不在緩沖存儲(chǔ)器126內(nèi),則表示光盤驅(qū)動(dòng)器320需從光盤150上讀取數(shù)據(jù),但由于伺服模塊140正進(jìn)行尋軌操作,無法再啟動(dòng)另外一尋軌操作。因此,很明顯地,該讀取指令I(lǐng)nstruction_C需等待伺服模塊140完成進(jìn)行中的尋軌操作后,再視需要決定是否需要進(jìn)行。因?yàn)樗欧K140所進(jìn)行中的該尋軌操作的目的,為了讀取光盤150上的后續(xù)數(shù)據(jù)以補(bǔ)充緩沖存儲(chǔ)器126的數(shù)據(jù)量。倘若該例行性程序與該讀取指令I(lǐng)nstruction_C所欲讀取的數(shù)據(jù)相同,或是該例行應(yīng)程序所欲讀取的數(shù)據(jù)涵蓋了該讀取指令I(lǐng)nstruction_C所需要的數(shù)據(jù),則很明顯地,光盤驅(qū)動(dòng)器320不需要為了該讀取指令320又重復(fù)進(jìn)行一次尋軌操作。
另一方面,倘若該讀取指令I(lǐng)nstruction_C所指定的數(shù)據(jù)只有部分在緩沖存儲(chǔ)器126中,則在本發(fā)明的一實(shí)施例中,控制電路122可先將在緩沖存儲(chǔ)器126中的那一部份數(shù)據(jù)傳送回主機(jī)110。而該讀取指令I(lǐng)nstruction_C所要求的其他數(shù)據(jù)則同樣等到伺服模塊140完成進(jìn)行中的尋軌操作后,再視需要決定如何處理。在本發(fā)明的另一實(shí)施例中,控制電路122可等到該讀取指令I(lǐng)nstruction_C所要求的數(shù)據(jù)都準(zhǔn)備好后再一并傳送到主機(jī)110。
再者,在步驟408中,若該讀取指令I(lǐng)nstruction_C所指定的數(shù)據(jù)都在緩沖存儲(chǔ)器126中,則控制電路122會(huì)進(jìn)行步驟410。
在步驟410中,控制電路122會(huì)在進(jìn)行尋軌操作的同時(shí),將緩沖存儲(chǔ)器126中相對(duì)應(yīng)于該讀取指令I(lǐng)nstruction_C的數(shù)據(jù),傳送至主機(jī)110,相當(dāng)于并行處理進(jìn)行中的該尋軌操作與響應(yīng)該讀取指令I(lǐng)nstruction_C。由于控制電路122中監(jiān)控伺服模塊140進(jìn)行尋軌操作的電路,以及負(fù)責(zé)與主機(jī)110間傳輸數(shù)據(jù)的電路互不沖突,因此并行處理兩種操作不會(huì)對(duì)光盤驅(qū)動(dòng)器320的功能造成負(fù)面影響。因此,主機(jī)110便不會(huì)因所需的數(shù)據(jù)中斷,而使工作受到影響或延遲。
等到控制電路122將該讀取指令I(lǐng)nstruction_C所需的數(shù)據(jù)完全傳送至主機(jī)110后,控制電路122會(huì)進(jìn)行步驟412,將對(duì)應(yīng)于該讀取指令I(lǐng)nstruction_C的中斷要求清除。
在步驟414中,控制電路122所執(zhí)行的固件程序代碼330的流程會(huì)回到原先所執(zhí)行的主環(huán)路中。如前所述,由于進(jìn)行尋軌操作需要的時(shí)間比將數(shù)據(jù)傳送回主機(jī)110的時(shí)間長,因此,當(dāng)控制電路122完成響應(yīng)該讀取指令I(lǐng)nstruction_C的操作時(shí),伺服模塊140有可能尚未完成該尋軌操作。
同理,若此時(shí)伺服模塊140尚未完成該尋軌操作,而主機(jī)110又處理完畢該讀取指令I(lǐng)nstruction_C的數(shù)據(jù),并傳送另一讀取指令I(lǐng)nstruction_D至光盤驅(qū)動(dòng)器320,則控制電路120會(huì)重復(fù)進(jìn)行上述步驟404到步驟412的流程,以即時(shí)響應(yīng)該讀取指令I(lǐng)nstruction_D。
由上述可知,本發(fā)明的光盤驅(qū)動(dòng)器320在進(jìn)行一需較長時(shí)間的控制操作或運(yùn)算過程中處理一中斷要求的方式,并不會(huì)中斷原先進(jìn)行中的該控制操作或運(yùn)算過程,又能即時(shí)處理與響應(yīng)主機(jī)110傳送過來的數(shù)據(jù)讀取指令。由于本發(fā)明的固件程序代碼330不使用狀態(tài)機(jī)的程序設(shè)計(jì)方式,不需要將一需較長時(shí)間的控制操作或運(yùn)算分割成許多不同階段來處理,因此,固件程序代碼330的復(fù)雜性可大幅降低。
另外,當(dāng)一中斷要求發(fā)生時(shí),控制電路122僅需使用少許運(yùn)算能量就能解譯該中斷要求所相對(duì)應(yīng)的指令,因此,一但該指令并非一讀取指令,控制電路122暫時(shí)不會(huì)加以處理,故伺服模塊140的操作并不會(huì)受到影響。而當(dāng)該指令為一讀取指令時(shí),控制電路122亦僅需簡單檢查其所需要的數(shù)據(jù)是否位于緩沖存儲(chǔ)器126中,若否,則控制電路122亦暫不處理該指令;若該讀取指令所需要的數(shù)據(jù)位于緩沖存儲(chǔ)器126中,則控制電路122在將緩沖存儲(chǔ)器126中相對(duì)應(yīng)的數(shù)據(jù)傳送到主機(jī)110的過程中,由于控制電路122中負(fù)責(zé)傳輸數(shù)據(jù)的電路與控制伺服模塊140工作的電路并不沖突,故亦不會(huì)影響到伺服模塊140的正常工作。
相較于公知技術(shù)中,光盤驅(qū)動(dòng)器120等到伺服模塊140完成進(jìn)行中的尋軌操作后,才利用控制電路122解譯并響應(yīng)該中斷要求所對(duì)應(yīng)的指令的作法,很有可能使主機(jī)110因所需的數(shù)據(jù)中斷而影響工作的進(jìn)行。
本發(fā)明的方法除了可大幅提升光盤驅(qū)動(dòng)器320與主機(jī)110間傳輸音像光盤數(shù)據(jù)時(shí)的順暢性外,亦因不需采用狀態(tài)機(jī)的方式設(shè)計(jì)固件程序代碼330,故固件程序代碼330的復(fù)雜性與維護(hù)、更新時(shí)的成本均比采用狀態(tài)機(jī)方式設(shè)計(jì)的固件程序代碼低。
以上所述僅為本發(fā)明的較佳實(shí)施例,凡依本發(fā)明權(quán)利要求所進(jìn)行的等效變化與修改,皆應(yīng)屬本發(fā)明的涵蓋范圍。
權(quán)利要求
1.一種在光盤驅(qū)動(dòng)器進(jìn)行控制操作或運(yùn)算過程中處理中斷要求的方法,該方法包含有在該控制操作或運(yùn)算進(jìn)行的同時(shí),進(jìn)行以下步驟利用該光盤驅(qū)動(dòng)器接收一控制電路所傳來的該中斷要求;檢查該中斷要求是否為一讀取指令;若該中斷要求為一讀取指令,檢查該讀取指令所指定的欲讀取數(shù)據(jù)是否存在于一緩沖器內(nèi);以及若該欲讀取數(shù)據(jù)存在于該緩沖器內(nèi),響應(yīng)于該中斷要求,傳送該緩沖器內(nèi)相對(duì)應(yīng)的數(shù)據(jù)至該控制電路。
2.如權(quán)利要求1所述的方法,其中該緩沖器為該光盤驅(qū)動(dòng)器的一易失性存儲(chǔ)器。
3.如權(quán)利要求1所述的方法,其中該緩沖器為該光盤驅(qū)動(dòng)器的一寄存器。
4.如權(quán)利要求1所述的方法,其中該控制電路為一計(jì)算機(jī)主機(jī)。
5.如權(quán)利要求1所述的方法,其還包含有若該讀取指令所指定的欲讀取數(shù)據(jù)不存在于該緩沖器內(nèi),則暫不處理該中斷要求。
6.一種存儲(chǔ)媒體,存儲(chǔ)有程序代碼,該程序代碼用以控制光盤驅(qū)動(dòng)器在進(jìn)行控制操作或運(yùn)算過程的同時(shí)進(jìn)行以下步驟接收一控制電路所傳來的該中斷要求;檢查該中斷要求是否為一讀取指令;若該中斷要求為一讀取指令,檢查該讀取指令所指定的欲讀取數(shù)據(jù)是否存在于一緩沖器內(nèi);以及若該欲讀取數(shù)據(jù)存在于該緩沖器內(nèi),響應(yīng)于該中斷要求,傳送該緩沖器內(nèi)相對(duì)應(yīng)的數(shù)據(jù)至該控制電路。
7.如權(quán)利要求6所述的存儲(chǔ)媒體,其為一非易失性存儲(chǔ)器。
全文摘要
一種在光盤驅(qū)動(dòng)器進(jìn)行控制操作或運(yùn)算過程中處理中斷要求的方法,該方法包含有在該控制操作或運(yùn)算進(jìn)行的同時(shí),進(jìn)行以下步驟利用該光盤驅(qū)動(dòng)器接收一控制電路所傳來的該中斷要求;檢查該中斷要求是否為一讀取指令;若該中斷要求為一讀取指令,檢查該讀取指令所指定的欲讀取數(shù)據(jù)是否存在于一緩沖器內(nèi);以及若該欲讀取數(shù)據(jù)存在于該緩沖器內(nèi),響應(yīng)于該中斷要求,傳送該緩沖器內(nèi)相對(duì)應(yīng)的數(shù)據(jù)至該控制電路。
文檔編號(hào)G06F13/14GK1617117SQ20031011564
公開日2005年5月18日 申請(qǐng)日期2003年11月10日 優(yōu)先權(quán)日2003年11月10日
發(fā)明者陳炳盛, 呂柏青 申請(qǐng)人:聯(lián)發(fā)科技股份有限公司