專利名稱:具有可編程等待狀態(tài)的微處理設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及到微處理設(shè)備,特別涉及與外部設(shè)備進(jìn)行I/O的可編程等待狀態(tài)方案。
(2)背景技術(shù)通常,每當(dāng)數(shù)據(jù)在同系統(tǒng)的兩臺(tái)設(shè)備(例如微處理單元和存儲(chǔ)器件)之間交換時(shí),系統(tǒng)必須確認(rèn)兩臺(tái)設(shè)備之間的交互必須是同步的。例如,最近,在微處理器和微控制器的制造中使用了允許高速運(yùn)作的技術(shù)。時(shí)鐘速度達(dá)到300MHz或者更高成為很普通的事。然而外部設(shè)備,特別是存儲(chǔ)器件象閃存(FLASH)、靜態(tài)存取存儲(chǔ)器(SRAM)以及電可擦除只讀存儲(chǔ)器(EEPROM),通常不具備這么高的時(shí)鐘速度。
一種與慢速設(shè)備同步的通常方法是通過使用等待狀態(tài)改變微處理器件對(duì)每一設(shè)備訪問的總線周期持續(xù)時(shí)間,有時(shí)稱為“總線伸展”。系統(tǒng)地址譯碼器對(duì)地址譯碼,并且決定哪塊存儲(chǔ)器被選擇。系統(tǒng)控制邏輯接著決定該存儲(chǔ)器是否是需要一個(gè)等待狀態(tài),并且如果需要就對(duì)一根等待信號(hào)線加電。微處理核心在一個(gè)時(shí)鐘周期中對(duì)信號(hào)線采樣,并且如果該線被加電,就進(jìn)入到一個(gè)時(shí)鐘周期的等待狀態(tài)(本質(zhì)上就是不做任何事的狀態(tài))。微處理核心在下一個(gè)時(shí)鐘周期再對(duì)信號(hào)線采樣,并且當(dāng)?shù)却盘?hào)線被取消(不加電)時(shí),繼續(xù)運(yùn)行。這樣就提供給慢速的存儲(chǔ)器器件足夠的內(nèi)部時(shí)間來對(duì)地址譯碼,訪問存儲(chǔ)器,以及使得在其輸出緩沖里的數(shù)據(jù)能保持穩(wěn)定。
一種使用等待狀態(tài)的已有技術(shù)包括在自身的存儲(chǔ)器件中存入等待狀態(tài)數(shù)值。計(jì)算器件包括的邏輯電路訪問這個(gè)數(shù)值來決定總線周期需要擴(kuò)充的時(shí)間。這個(gè)方法需要含有存儲(chǔ)等待狀態(tài)數(shù)值的邏輯電路和將數(shù)值提供給計(jì)算器件的特殊器件。
另一個(gè)使用等待狀態(tài)的方法被應(yīng)用在中斷驅(qū)動(dòng)的I/O設(shè)備中。在程序解碼器的邏輯部分偵測(cè)某些I/O指令的發(fā)生,并且依據(jù)指令聲明等待信號(hào)將微處理器操作掛起一周期時(shí)間。這種方法對(duì)存取低速I/O設(shè)備很有用,微處理器在中斷指令返回期間暫停,給了低速I/O設(shè)備執(zhí)行操作的時(shí)間。
一個(gè)上面沒有提及的問題是存取多存儲(chǔ)器設(shè)備,一個(gè)讀訪問第一設(shè)備的操作在開始訪問另一設(shè)備操作之前沒有給予足夠的時(shí)間來完成,導(dǎo)致總線沖突。這個(gè)問題由來是因?yàn)楫?dāng)訪問另一設(shè)備操作發(fā)生時(shí),第一設(shè)備的輸出驅(qū)動(dòng)還在驅(qū)動(dòng)這兩個(gè)設(shè)備公共的數(shù)據(jù)總線。除非在第二設(shè)備執(zhí)行訪問之前有足夠的時(shí)間經(jīng)過,否則兩個(gè)設(shè)備都會(huì)試圖驅(qū)動(dòng)總線。其結(jié)果是數(shù)據(jù)混淆以及增加了由于驅(qū)動(dòng)電路同時(shí)訪問帶來的能量消耗。然而,這樣的問題自身并不是經(jīng)常出現(xiàn)。例如,從同一設(shè)備中連續(xù)發(fā)出的讀操作不會(huì)引起所述驅(qū)動(dòng)電路的問題。一個(gè)寫操作和跟隨的讀操作,同樣地,也不會(huì)引起所述驅(qū)動(dòng)電路的問題。
我們所需要的是在微計(jì)算結(jié)構(gòu)中加入控制電路,來偵測(cè)對(duì)多存儲(chǔ)的訪問以及根據(jù)I/O所執(zhí)行操作的類型插入等待狀態(tài)。我們期望能有這樣的電路,可以偵測(cè)哪個(gè)存儲(chǔ)器被訪問以及適時(shí)插入等待狀態(tài)。我們更期待有這樣的電路能依照?qǐng)?zhí)行的I/O操作序列來插入等待狀態(tài)。
(3)發(fā)明內(nèi)容在具有第一和第二外部存儲(chǔ)器的計(jì)算設(shè)備中,一種訪問存儲(chǔ)器的方法包括將第一等待狀態(tài)值與第一存儲(chǔ)器關(guān)聯(lián),并且將第二等待狀態(tài)值與第二存儲(chǔ)器關(guān)聯(lián),接著選擇與被選擇的存儲(chǔ)器之一相關(guān)的等待狀態(tài)值,并且讀該存儲(chǔ)器。并且在繼續(xù)讀步驟和下一步I/O操作之前,CPU被置成與所選的等待狀態(tài)值成比例的周期時(shí)間的等待狀態(tài);例如等待狀態(tài)x時(shí)鐘周期。
然而,如果下一步I/O操作是針對(duì)CPU內(nèi)部存儲(chǔ)器,那么CPU在I/O操作之前不進(jìn)入等待狀態(tài),而是立刻處理該I/O操作。如果接著內(nèi)部I/O操作之后的讀操作是針對(duì)于最初選定的外部存儲(chǔ)器,那么不進(jìn)入等待狀態(tài)而訪問立刻進(jìn)行。如果接著內(nèi)部I/O操作之后的讀操作是針對(duì)于不同的外部存儲(chǔ)器,那么將進(jìn)入的等待狀態(tài)時(shí)間周期是與最初選定的外部存儲(chǔ)器關(guān)聯(lián)的等待狀態(tài)成比例,從完成讀操作的計(jì)時(shí)開始。
根據(jù)本發(fā)明,一種微處理設(shè)備包括連接外部存儲(chǔ)器、核心邏輯和存儲(chǔ)控制器的系統(tǒng)總線。等待狀態(tài)電路生成一使核心邏輯進(jìn)入等待狀態(tài)的等待信號(hào)。連接等待狀態(tài)電路的是外部總線電路,用來偵測(cè)在系統(tǒng)總線上發(fā)生的存儲(chǔ)訪問序列以及激活等待狀態(tài)電路,并因而使核心邏輯進(jìn)入等待狀態(tài)。連接外部總線電路的是用來存儲(chǔ)每一存儲(chǔ)器件數(shù)據(jù)流等待狀態(tài)值的數(shù)據(jù)裝置。
數(shù)據(jù)裝置對(duì)選中的存儲(chǔ)器件響應(yīng)而輸出數(shù)據(jù)流等待狀態(tài)值給外部總線電路。外部總線電路偵測(cè)出外部讀操作的發(fā)生,該操作后面跟著訪問另一個(gè)外部存儲(chǔ)器的操作,并且初始化數(shù)據(jù)流等待狀態(tài)周期,該周期與被訪問的存儲(chǔ)器關(guān)聯(lián)的等待狀態(tài)值成比例,例如等待狀態(tài)為x時(shí)鐘周期。然而,如果外部總線電路偵測(cè)到一寫操作,后面跟著一讀操作,那么沒有數(shù)據(jù)流等待狀態(tài)發(fā)生,雖然一個(gè)標(biāo)準(zhǔn)的等待狀態(tài)可能仍然發(fā)生。類似的,如果一外部讀操作,后面跟著一內(nèi)部訪問,那么沒有數(shù)據(jù)流等待狀態(tài)發(fā)生。
(4)
圖1是本發(fā)明數(shù)據(jù)處理系統(tǒng)的方框圖。
圖2是如圖1所示的外部總線確認(rèn)邏輯方框圖。
圖3-6是說明根據(jù)本發(fā)明存儲(chǔ)訪問方案采用的多種數(shù)據(jù)處理系統(tǒng)操作配置時(shí)序圖。
圖7是數(shù)據(jù)處理系統(tǒng)的替代實(shí)施例方框圖。
(5)具體實(shí)施方式
參照?qǐng)D1,本發(fā)明的數(shù)據(jù)處理系統(tǒng)100包括多種安排在系統(tǒng)總線120周圍的各種子系統(tǒng)。微處理單元110例如微控制器或類似的,包括核心邏輯112和內(nèi)部存儲(chǔ)器114。內(nèi)部時(shí)鐘156提供了時(shí)鐘信號(hào)s130給驅(qū)動(dòng)器微處理單元110。在核心邏輯112和存儲(chǔ)器114之間的數(shù)據(jù)傳輸發(fā)生在內(nèi)部總線116上。內(nèi)部總線和系統(tǒng)總線120相連,來提供數(shù)據(jù)向微處理單元110外部的傳輸。離開總線116的是輸送給存儲(chǔ)控制器152的存儲(chǔ)器地址線s140。核心邏輯112提供了數(shù)據(jù)選擇信號(hào)s142,表明了核心需要數(shù)據(jù)傳輸(讀或?qū)?。特別地,信號(hào)s142 HI表明了一數(shù)據(jù)傳輸周期,而信號(hào)s142 L0表明了一地址周期。數(shù)據(jù)選擇信號(hào)輸送給了存儲(chǔ)控制器152以及等待狀態(tài)生成器160。
連接系統(tǒng)總線120的是外部存儲(chǔ)器130和132。典型的外部存儲(chǔ)器包括EEPROM、FLASH和SRAM。存儲(chǔ)器130和132被典型的控制信號(hào)控制,例如片選信號(hào)s100,存儲(chǔ)器132的輸出允許信號(hào)s104和寫允許信號(hào)s106。這些信號(hào)依據(jù)I/O操作和出現(xiàn)在地址線s140上的地址由存儲(chǔ)控制器152產(chǎn)生。存儲(chǔ)控制器也提供外部讀信號(hào)s108,表明了從存儲(chǔ)器到微處理單元110的讀周期。存儲(chǔ)控制器也提供連續(xù)的讀信號(hào)s110,表明了發(fā)生在同一先前訪問的存儲(chǔ)器上的讀操作。
等待狀態(tài)生成器160提供了輸送給核心邏輯112的等待信號(hào)s150(激活HI)。對(duì)信號(hào)s150加電引起核心邏輯進(jìn)入等待狀態(tài),而不對(duì)信號(hào)s150加電則允許核心邏輯繼續(xù)工作。等待狀態(tài)生成器160從標(biāo)準(zhǔn)的等待狀態(tài)寄存器接收等待狀態(tài)數(shù)值。等待狀態(tài)生成器160也接收數(shù)據(jù)選擇信號(hào)s142,表明了數(shù)據(jù)傳輸將開始。根據(jù)傳統(tǒng)的操作,當(dāng)外部存儲(chǔ)器被訪問時(shí),等待信號(hào)s150就被生成,以便讓微處理單元110進(jìn)入等待狀態(tài),從而使外部存儲(chǔ)器位置有足夠的時(shí)間周期被訪問。這種時(shí)間周期是基于標(biāo)準(zhǔn)等待狀態(tài)寄存器150生成值。
根據(jù)本發(fā)明,有用于存儲(chǔ)不同存儲(chǔ)器類型的等待狀態(tài)數(shù)值的外部存儲(chǔ)選擇邏輯140。通常,每一存儲(chǔ)器類型都和一地址范圍關(guān)聯(lián)。給定數(shù)據(jù)的地址表明了存儲(chǔ)數(shù)據(jù)的存儲(chǔ)器類型。因此,地址線s140輸送給外部選擇邏輯140,外部選擇邏輯140再輸出對(duì)應(yīng)于線上地址的存儲(chǔ)器件的等待狀態(tài)數(shù)值??梢?,每一存儲(chǔ)器都有兩個(gè)相關(guān)聯(lián)的等待狀態(tài)數(shù)值,標(biāo)準(zhǔn)等待狀態(tài)數(shù)值和數(shù)據(jù)流等待狀態(tài)數(shù)值。標(biāo)準(zhǔn)等待狀態(tài)數(shù)值是用于讓CPU進(jìn)入一定時(shí)間周期等待狀態(tài)的已有技術(shù)等待狀態(tài)數(shù)值,使得地址數(shù)據(jù)有足夠的時(shí)間被取出,并在系統(tǒng)總線120上驅(qū)動(dòng)。對(duì)應(yīng)于給定地址的標(biāo)準(zhǔn)等待狀態(tài)數(shù)值被存儲(chǔ)在寄存器150中,并且從那里輸送到等待狀態(tài)生成器160。
外部選擇邏輯140也提供了存儲(chǔ)在數(shù)據(jù)流寄存器142中的數(shù)據(jù)流等待狀態(tài)數(shù)值。數(shù)據(jù)流寄存器上的三位數(shù)據(jù)流s160被輸送到外部總線邏輯170中。另外,外部總線邏輯接收外部讀信號(hào)s108,連續(xù)讀信號(hào)s110,數(shù)據(jù)選擇信號(hào)s142,和從等待狀態(tài)生成器160中出來的等待信號(hào)s150?;谶@些輸入信號(hào),外部總線邏輯170將產(chǎn)生ACK信號(hào)s152(激活HI)來輸送給等待狀態(tài)生成器,從而當(dāng)ACK信號(hào)s152為L(zhǎng)0時(shí),使等待信號(hào)s150加電。
地址范圍和等待狀態(tài)數(shù)值來自于用戶提供程序碼180。在實(shí)施例中,外部存儲(chǔ)選擇邏輯140包括多種可以通過存儲(chǔ)器映射方案訪問的寄存器,其特征在于,寄存器具有在程序的控制下可訪問的相關(guān)地址。用戶可以通過設(shè)定地址范圍和對(duì)應(yīng)等待狀態(tài)數(shù)值來對(duì)寄存器編程,可以是標(biāo)準(zhǔn)的或數(shù)據(jù)流的。
繼續(xù)描述圖1,在重置電路154上有電源,來提供重置信號(hào)s120和它的補(bǔ)碼信號(hào)s122。還有提供時(shí)鐘信號(hào)s130和其補(bǔ)碼s132。
參照?qǐng)D2,展示了包括外部總線邏輯170的電路。計(jì)數(shù)邏輯由被時(shí)鐘信號(hào)s130計(jì)時(shí)的觸發(fā)器202、204和206組成。計(jì)數(shù)邏輯輸出由單獨(dú)觸發(fā)器的反相輸出組成。這些輸出輸送到比較器電路220,它包括三個(gè)和與非門連接的異或門(XOR)。每個(gè)異或門的輸出被連接到觸發(fā)器202-206的反相輸出上,而例外的是觸發(fā)器204的輸出是由緩沖254驅(qū)動(dòng),隨后輸送給比較器電路220。比較器的另一輸入來源于數(shù)據(jù)流位s160。比較器220的輸出輸送給了與非門260的一個(gè)輸入。
數(shù)據(jù)流位s160在邏輯電路222中一起進(jìn)行或操作?;虿僮鞯慕Y(jié)果輸送給了與非門260的另一個(gè)輸入。
等待信號(hào)s150和外部讀信號(hào)s108分別輸送給了反相器267和268,其輸出通過與非門266連接。反相器和與非門一起作為一個(gè)或門工作。與非門266的輸出輸送給與門264的一個(gè)輸入。數(shù)據(jù)選擇信號(hào)s142和與門264的另一個(gè)輸入連接。與門264的一輸出和與非門262的一輸入相連接。與非門262的另一輸入與觸發(fā)器208的輸出相連接。
數(shù)據(jù)選擇信號(hào)s142也通過反相器265反相,并且通過或門263與連續(xù)讀信號(hào)s110相或。或門263輸出和與非門262的輸出通過與門261相連接,與門261的輸出輸送給與非門260的第三輸入。與非門260依次又輸送到產(chǎn)生ACK信號(hào)s152的觸發(fā)器208。
回到計(jì)數(shù)邏輯,觸發(fā)器202通過反相器251被與非門250驅(qū)動(dòng)。與非門接收觸發(fā)器202的反相輸出和觸發(fā)器208的反相輸出。繼續(xù)向前,或非門253接收到觸發(fā)器202的反相輸出和觸發(fā)器208的非反相輸出?;蚍情T253的輸出輸送給了復(fù)用器210的輸入1。復(fù)用器210的其他輸入連接到時(shí)鐘信號(hào)s130。復(fù)用器的輸出輸送給了觸發(fā)器204。
觸發(fā)器204的反相輸出輸送(通過緩沖254)給了與非門255和反相器256,復(fù)用器210的選擇器控制。與非門255也接收觸發(fā)器208的反相輸出。與非門250和255的輸出連接到了與非門258上。反相器256連接在與門259,與門259也接收通過反相器257從觸發(fā)器202反相輸出的輸入信號(hào)和從觸發(fā)器208反相輸出的輸入信號(hào)。門258和259的輸出分別輸送給了復(fù)用器212的輸入0和1。復(fù)用器212的輸出給了觸發(fā)器206的輸入,觸發(fā)器206的反相輸出作為了復(fù)用器212的選擇輸出。
外部總線邏輯170的運(yùn)作將在下面解釋。通常,為了外部存儲(chǔ)器訪問,對(duì)應(yīng)于被訪問的存儲(chǔ)器的數(shù)據(jù)流數(shù)值從外部選擇邏輯140中載入,并送給寄存器142。經(jīng)過一個(gè)讀周期,計(jì)數(shù)邏輯(觸發(fā)器202、204和206)將開始增加至數(shù)據(jù)流數(shù)值(信號(hào)s160)。在計(jì)數(shù)期間,ACK信號(hào)s152是不加電(L0)的,表明了系統(tǒng)總線120仍然被讀存儲(chǔ)器的輸出緩沖驅(qū)動(dòng)。作為回應(yīng),等待狀態(tài)生成器160加電等待信號(hào)s150,使得微控制器110進(jìn)入等待狀態(tài)。一旦計(jì)數(shù)達(dá)到數(shù)據(jù)流值s160,計(jì)數(shù)將復(fù)位,并且ACK信號(hào)s152將為HI,表明系統(tǒng)總線120空閑。
外部總線邏輯170的不同操作配置可以結(jié)合圖3-6描述的時(shí)序圖來進(jìn)行最佳的解釋。時(shí)序圖是如圖2所示的外部總線邏輯170的模擬產(chǎn)物。模擬是通過使用Cadence制造的VeriLog XL模擬器來實(shí)現(xiàn)的。
參照?qǐng)D1、2和3,假設(shè)存儲(chǔ)器130(MEM0)是一8位存儲(chǔ)器,它的地址最高位等于“0x010”。外部選擇邏輯140被編程為地址從0x010開始時(shí),對(duì)應(yīng)數(shù)據(jù)流等待狀態(tài)數(shù)值為5。圖3所示的時(shí)序圖說明了一個(gè)寫操作后面跟著兩個(gè)連續(xù)的對(duì)存儲(chǔ)器MEM0的讀操作信號(hào)。另外,寫和讀操作涉及到16位字,但每個(gè)I/O操作是由兩個(gè)8位存儲(chǔ)訪問(低位和高位)組成。
圖3中時(shí)序圖的頂部展示了存儲(chǔ)地址信號(hào)s140和時(shí)鐘信號(hào)s130。片選s100(CSO,激活L0)表明了MEM0被選中。第一訪問地址是0x01000500。這地址在地址總線s140上被選中,外部選擇邏輯140輸出5給數(shù)據(jù)流寄存器142。接著,數(shù)據(jù)流位s160被置為5。
在時(shí)間周期t1,寫允許信號(hào)s106在當(dāng)高位字節(jié)和低位字節(jié)被寫進(jìn)存儲(chǔ)位置0x01000500時(shí),被兩次加電(激活L0)。因?yàn)槭菍懖僮?,?shù)據(jù)傳輸信號(hào)s142被加電,并且外部讀信號(hào)s108為不加電(激活L0)。雖然根據(jù)本發(fā)明實(shí)施例的邏輯電路170、ACK信號(hào)s152依然被加電,并且計(jì)數(shù)輸出(觸發(fā)器202、204和206的輸出)在寫周期結(jié)束依然是低電平,標(biāo)志為如圖3所示的事件A3,表明了系統(tǒng)總線120空閑。觀察在周期t1中,等待信號(hào)s150仍然由等待狀態(tài)生成器160加電。這是標(biāo)準(zhǔn)等待狀態(tài)的結(jié)果,對(duì)應(yīng)于寫操作產(chǎn)生。
注意,連續(xù)讀信號(hào)s110在事件A3處由存儲(chǔ)控制器152加電,因?yàn)橐粋€(gè)訪問同一存儲(chǔ)器(MEM0)的操作被執(zhí)行,即一個(gè)讀操作。在時(shí)間周期t2中,讀操作發(fā)生于輸出允許信號(hào)s104在事件B3處轉(zhuǎn)到L0來輸出訪問字的第一字節(jié)。同樣在事件B3處,外部讀信號(hào)s108變?yōu)長(zhǎng)0,表明了一外部讀訪問發(fā)生。第二字節(jié)在事件C3處讀取。再次,在周期t2中標(biāo)準(zhǔn)等待狀態(tài)出現(xiàn),來提供足夠的時(shí)間完成讀操作。
在事件D3,新地址被加電,即0x01000500。再次,因?yàn)樵L問同一存儲(chǔ)器(MEM0),連續(xù)讀信號(hào)s110被加電。因此,根據(jù)本發(fā)明,計(jì)數(shù)器不開始計(jì)數(shù),并且,觸發(fā)器208還是繼續(xù)輸出HI,因而對(duì)ACK信號(hào)s152加電,表明系統(tǒng)總線120空閑。
結(jié)束討論圖3前,在時(shí)間周期t3期間,兩個(gè)讀訪問在事件E3和F3處發(fā)生,來讀取存儲(chǔ)在存儲(chǔ)位置0x01000500的構(gòu)成字的兩字節(jié)。該操作伴隨著在同周期中的標(biāo)準(zhǔn)等待狀態(tài),由等待信號(hào)s150被加電所指示。
從前面討論的圖3中,可以了解外部總線邏輯170在完成寫周期時(shí)沒有始發(fā)一等待狀態(tài),因?yàn)榭偩€沖突不是個(gè)問題。另外,對(duì)從同一存儲(chǔ)器中來的連續(xù)讀信號(hào),總線邏輯也不始發(fā)等待狀態(tài)。
參照?qǐng)D1、2和4,假設(shè)存儲(chǔ)器130(MEM0)是一8位存儲(chǔ)器,它的地址最高位等于“0x010”。進(jìn)一步假設(shè)外部選擇邏輯140被編程為地址從0x010開始時(shí),對(duì)應(yīng)數(shù)據(jù)流等待狀態(tài)數(shù)值為5。圖4所示的時(shí)序圖說明了一個(gè)從MEM0來的讀操作時(shí)限,其后面跟著對(duì)存儲(chǔ)器MEM0寫操作和從MEM0來的讀操作。如圖3,寫和讀操作涉及到16位字,因而每個(gè)I/O操作是由兩個(gè)8位存儲(chǔ)訪問(低位和高位)組成。
在圖4中我們可以看出,在時(shí)間周期t1,產(chǎn)生的讀操作伴隨著相應(yīng)的標(biāo)準(zhǔn)等待狀態(tài)。當(dāng)在事件A4處完成了讀操作,輸出允許信號(hào)s104不加電,并且外部讀信號(hào)s108同樣不加電,ACK信號(hào)s152不加電,引起計(jì)數(shù)器(觸發(fā)器202、204、206)開始計(jì)數(shù)和使等待狀態(tài)生成器160加電等待狀態(tài)信號(hào)s 150來表明系統(tǒng)總線120正忙著。結(jié)果,CPU110進(jìn)入等待狀態(tài)。
與已有技術(shù)相比,下一步I/O操作將在事件B4處開始,會(huì)因?yàn)镃PU試圖在MEM0輸出緩沖仍然占用系統(tǒng)總線120進(jìn)行它的讀操作的情況下,同時(shí)在系統(tǒng)總線上驅(qū)動(dòng)自身輸出數(shù)據(jù),而導(dǎo)致總線爭(zhēng)奪。而根據(jù)本發(fā)明,由于在事件B4處進(jìn)入等待狀態(tài)替代了原來操作,MEM0的輸出緩沖有足夠的時(shí)間(5個(gè)時(shí)鐘周期)來釋放系統(tǒng)總線,因而當(dāng)寫操作開始執(zhí)行時(shí),總線已經(jīng)空閑,并且也沒有在微控制器和MEM0之間由于爭(zhēng)奪而產(chǎn)生混淆數(shù)據(jù)的危險(xiǎn)。
在事件C4處,當(dāng)計(jì)數(shù)器計(jì)數(shù)到5,并且比較器220偵測(cè)到等值的數(shù)據(jù)流s160,觸發(fā)器208輸出HI給再次加電ACK信號(hào)s152。作為回應(yīng),等待狀態(tài)生成器160應(yīng)該如虛線所示不加電等待信號(hào)s150。而在隨后的寫操作期間,標(biāo)準(zhǔn)等待狀態(tài)被插入到t2時(shí)間周期。在寫周期結(jié)束(事件D4)時(shí),計(jì)數(shù)器并沒啟動(dòng),因?yàn)锳CK信號(hào)s152仍然是HI,因?yàn)橥獠窟x擇信號(hào)被加電,并且因而在下一步I/O操作前沒有等待狀態(tài)發(fā)生。回顧外部總線邏輯170在寫操作結(jié)束時(shí)沒有啟動(dòng)計(jì)數(shù)器。因而,可以看見在從存儲(chǔ)位置為0x010001f8讀取時(shí),標(biāo)準(zhǔn)等待狀態(tài)在t3時(shí)間周期仍然產(chǎn)生。
概括一下,圖4的時(shí)序圖展示了本發(fā)明依據(jù)剛完成的操作有選擇地加電等待狀態(tài)。在外部讀操作情況下且如果數(shù)據(jù)流寄存器含有非零值,則產(chǎn)生等待狀態(tài)以允許輸出驅(qū)動(dòng)釋放總線。在寫操作的情況下,不發(fā)出等待狀態(tài)。
參照?qǐng)D1、2和5,假設(shè)存儲(chǔ)器130(MEM0)是一8位存儲(chǔ)器,它的地址最高位等于“0x010”。進(jìn)一步假設(shè)內(nèi)部存儲(chǔ)器114具有最高位為“0x000”的地址。外部選擇邏輯140被編程為地址從0x010開始時(shí),對(duì)應(yīng)數(shù)據(jù)流等待狀態(tài)數(shù)值為5。圖5所示的時(shí)序圖說明了一個(gè)從MEM0來的讀操作信號(hào),其后面跟著從內(nèi)部存儲(chǔ)器114來的連續(xù)三個(gè)寫操作和從MEM0來的另一個(gè)讀操作。對(duì)MEM0讀操作涉及到16位字,但每個(gè)I/O操作是由兩個(gè)8位存儲(chǔ)訪問(低位和高位)組成。
圖5中時(shí)序圖的頂部展示了存儲(chǔ)地址信號(hào)s140和時(shí)鐘信號(hào)s130。在t1時(shí)間周期中,第一讀訪問是對(duì)位置為0x010001e8的外部存儲(chǔ)器MEM0的。注意,每一標(biāo)準(zhǔn)等待狀態(tài)操作的等待信號(hào)s150在相同的時(shí)間周期被加電。
事件A5處讀操作的結(jié)果是,ACK信號(hào)s152變成L0,而引發(fā)計(jì)數(shù)器開始計(jì)數(shù)?;叵胍幌?,ACK L0表明系統(tǒng)總線120不空閑。然而可以看見等待信號(hào)s150仍然未被加電;原因是后來的讀操作是對(duì)內(nèi)部存儲(chǔ)器114,該存儲(chǔ)器不依靠由MEM0輸出驅(qū)動(dòng)器釋放的系統(tǒng)總線120。
回到圖1,當(dāng)一內(nèi)部存儲(chǔ)地址被偵測(cè)到,外部存儲(chǔ)選擇140載入一個(gè)零數(shù)值給標(biāo)準(zhǔn)等待狀態(tài)寄存器150。這輸送給等待狀態(tài)生成器160,生成器維持等待信號(hào)s150不加電狀態(tài)以作為對(duì)接收的零標(biāo)準(zhǔn)等待狀態(tài)值的響應(yīng),而不管ACK信號(hào)s152的邏輯狀態(tài)。因?yàn)楹诵倪壿?12可以在單個(gè)時(shí)鐘周期里訪問內(nèi)部存儲(chǔ)器,所以并沒有必要產(chǎn)生等待狀態(tài)。
而在從0x00000ec8,0x00000ecc和0x00000ed0三個(gè)地址開始的內(nèi)部讀操作持續(xù)時(shí)間中,計(jì)數(shù)器繼續(xù)計(jì)數(shù)。維持這樣的活動(dòng)是因?yàn)镸EM0的輸出驅(qū)動(dòng)還需要時(shí)間釋放系統(tǒng)總線,并且如果微處理單元110想訪問外部存儲(chǔ)器,它必須進(jìn)入等待狀態(tài),直到計(jì)數(shù)器完成;即達(dá)到的計(jì)數(shù)值和數(shù)據(jù)流值s160相同。否則,總線爭(zhēng)奪就會(huì)發(fā)生。
另一方面,如果同一外部存儲(chǔ)器被訪問,那么就沒有必要進(jìn)入等待狀態(tài)。這在圖5中有精確的情況描述。注意在事件B5處,連續(xù)讀信號(hào)s110變?yōu)長(zhǎng)0,表明了MEM0被再次訪問。這引起ACK信號(hào)s152變?yōu)镠I,立刻重置計(jì)數(shù)器(觸發(fā)器202、204、206)為0。在隨時(shí)間周期t2和t3后跟著從MEM0中地址為0x010001ea和0x01000258開始的兩條讀操作以及伴隨著對(duì)應(yīng)的標(biāo)準(zhǔn)等待狀態(tài)。
概括圖5帶來的要點(diǎn),可以理解當(dāng)內(nèi)部存儲(chǔ)器訪問跟隨著從外部存儲(chǔ)器的讀操作,計(jì)數(shù)器依然被激活,但CPU沒有進(jìn)入等待狀態(tài)。這將使后來的外部存儲(chǔ)器訪問成為可能,這時(shí)CPU被迫等待計(jì)數(shù)的完成以便系統(tǒng)總線可以被釋放。然而,如果外部訪問是對(duì)于同一外部存儲(chǔ)器,那么計(jì)數(shù)立刻停止,提供沒有等待狀態(tài)的外部存儲(chǔ)器訪問。
參照?qǐng)D1、2和6,假設(shè)存儲(chǔ)器130(MEM0)是一8位存儲(chǔ)器,它的地址最高位等于“0x010”,并且存儲(chǔ)器132(MEM1)是另一最高位地址為“0x011”的8位存儲(chǔ)器。進(jìn)一步假設(shè)外部選擇邏輯140被編程為針對(duì)MEM0對(duì)應(yīng)數(shù)據(jù)流等待狀態(tài)數(shù)值為1,并且針對(duì)MEM1數(shù)據(jù)流等待狀態(tài)數(shù)值為5。圖6所示的時(shí)序圖說明了一個(gè)對(duì)MEM1寫操作的定時(shí),其后面跟著從MEM0的讀操作和從MEM1的讀操作以及從MEM0的4個(gè)讀操作。對(duì)MEM0讀操作涉及到8位數(shù)據(jù),因此每一I/O操作需要單個(gè)訪問。對(duì)MEM1的寫和讀操作涉及32位字。但每個(gè)I/O操作是由4個(gè)8位存儲(chǔ)訪問組成。
在時(shí)間周期t1,MEM1被選中,由片選信號(hào)s102被加電所標(biāo)識(shí)。四個(gè)寫訪問對(duì)位置0x01100040進(jìn)行操作??梢岳斫?,被選中的數(shù)據(jù)流s160是5。還應(yīng)注意的是在周期t1’中的等待狀態(tài)歸因于標(biāo)準(zhǔn)等待狀態(tài)的生成。
當(dāng)在事件A6的寫周期完成,MEM0中的地址0x01000270被選中,伴隨著對(duì)應(yīng)數(shù)據(jù)流s160改變?yōu)?。當(dāng)MEM1重新被選中地址0x01100040時(shí),讀操作開始于B6,并且在C6處完成。計(jì)數(shù)器繼續(xù)計(jì)數(shù),使得觸發(fā)器208變成L0,從而依次引起等待狀態(tài)發(fā)生。因?yàn)閿?shù)據(jù)流是1,計(jì)數(shù)器計(jì)數(shù)1,并且觸發(fā)器208在D6處變?yōu)镠I。在事件C6和D6之間的這一等待狀態(tài)允許MEM0輸出驅(qū)動(dòng)釋放系統(tǒng)總線120,以便后來的在事件D6處對(duì)MEM1的讀出可繼續(xù)進(jìn)行而沒有總線沖突的危險(xiǎn)。因而在時(shí)間周期t2期間的等待狀態(tài)歸因于從讀MEM0中來的數(shù)據(jù)流和在讀MEM1期間到標(biāo)準(zhǔn)等待狀態(tài)生成的數(shù)據(jù)流。
當(dāng)MEM1在H6處被選中時(shí),可以理解數(shù)據(jù)流s160又一次被設(shè)為數(shù)據(jù)流值為5。當(dāng)在H6處完成讀操作,計(jì)數(shù)器開始計(jì)數(shù),這次計(jì)數(shù)到5。ACK信號(hào)s152對(duì)應(yīng)于時(shí)間周期變成L0,表明MEM1釋放了系統(tǒng)總線。一達(dá)到計(jì)數(shù)值5,ACK信號(hào)s152變?yōu)镠I,并且對(duì)MEM0的讀操作繼續(xù)在位置0x0100274上進(jìn)行(事件F6)。再次,時(shí)間周期t3中的等待狀態(tài)由數(shù)據(jù)流等待狀態(tài)和標(biāo)準(zhǔn)等待狀態(tài)組成。在G6處發(fā)生對(duì)同一MEM0的后續(xù)讀操作,也不需要在每一讀操作后有數(shù)據(jù)流等待狀態(tài)。而標(biāo)準(zhǔn)等待狀態(tài)仍然生成。
從前面所討論的圖6中,可以理解數(shù)據(jù)流值s160的變化依賴于被訪問的存儲(chǔ)器。數(shù)據(jù)流值能在每一存儲(chǔ)器設(shè)備基礎(chǔ)上被用戶選擇。這允許在慢速存儲(chǔ)器上使用長(zhǎng)延遲,并且在快速存儲(chǔ)器上使用短延遲,而不是必須使用對(duì)應(yīng)最慢速存儲(chǔ)器的單一、最壞情況下延遲。這種方法避免了在不同存儲(chǔ)器件之間的總線沖突,而同時(shí)將涉及不同存儲(chǔ)器的連續(xù)I/O操作延遲最小化。
本發(fā)明的數(shù)據(jù)流等待狀態(tài)方法適用于具有多內(nèi)部存儲(chǔ)器類型的結(jié)構(gòu),每個(gè)存儲(chǔ)器潛在地競(jìng)爭(zhēng)對(duì)內(nèi)部總線116的訪問權(quán),并且每個(gè)完成讀周期后都具有不同的釋放數(shù)據(jù)總線的時(shí)間要求。例如,圖7展示了圖1的一種變化,微處理器包括了內(nèi)部存儲(chǔ)器114A和114B兩部分??梢岳斫鈭D7所示的結(jié)構(gòu)中的內(nèi)部總線116和外部總線120所引起的總線沖突的潛在性相等。在前面所討論圖3-6中的原則很容易被本領(lǐng)域的普通技術(shù)人員應(yīng)用于多內(nèi)部存儲(chǔ)結(jié)構(gòu)中去,例如如圖7中所示的結(jié)構(gòu)。
權(quán)利要求
1.在具有第一存儲(chǔ)器和第二存儲(chǔ)器的計(jì)算設(shè)備中,第一和第二存儲(chǔ)器連接在公共數(shù)據(jù)總線上,一種訪問第一和第二存儲(chǔ)器的方法,其特征在于,包括以下幾步將第一等待狀態(tài)值和第一存儲(chǔ)器相關(guān)聯(lián);將第二等待狀態(tài)值和第二存儲(chǔ)器相關(guān)聯(lián);從所選的存儲(chǔ)器之一讀取數(shù)據(jù);當(dāng)完成讀步驟,置計(jì)算設(shè)備為等待狀態(tài),其等待時(shí)間周期與所選擇的存儲(chǔ)器相應(yīng)的等待狀態(tài)值成比例;并且當(dāng)在時(shí)間周期到期,對(duì)第一和第二存儲(chǔ)器的另一個(gè)執(zhí)行下一步I/O操作。
2.如權(quán)利要求1所述的方法,其特征在于,所述寫入存儲(chǔ)器之一的步驟先于讀取步驟執(zhí)行,而后緊接著讀取步驟。
3.如權(quán)利要求1所述的方法,其特征在于,從所選存儲(chǔ)器之一讀取數(shù)據(jù)的步驟包括連續(xù)從那里讀取多個(gè)數(shù)據(jù)。
4.如權(quán)利要求1所述的方法,其特征在于,置所述計(jì)算設(shè)備為等待狀態(tài)的步驟包括選取與所選存儲(chǔ)器相應(yīng)的等待狀態(tài)值,并且對(duì)一個(gè)數(shù)進(jìn)行計(jì)數(shù),直到等于該值。
5.如權(quán)利要求1所述的方法,其特征在于,所述第一和第二存儲(chǔ)器是外部存儲(chǔ)器。
6.如權(quán)利要求1所述的方法,其特征在于,所述第一和第二存儲(chǔ)器是內(nèi)部存儲(chǔ)器。
7.如權(quán)利要求1所述的方法,其特征在于,所述第一和第二等待狀態(tài)值是基于所述第一和第二存儲(chǔ)器各自的輸出電路的特性。
8.如權(quán)利要求7所述的方法,其特征在于,所述第一和第二等待狀態(tài)值是進(jìn)一步基于所述計(jì)算設(shè)備使用的時(shí)鐘頻率。
9.如權(quán)利要求7所述的方法,其特征在于,所述特性是指輸出電路在讀操作后,達(dá)到高阻抗?fàn)顟B(tài)所需的時(shí)間。
10.一種微處理設(shè)備,其特征在于,包括系統(tǒng)總線(120);連接在系統(tǒng)總線上的邏輯電路(110、152),該邏輯電路至少具有第一內(nèi)部存儲(chǔ)器(114a)和第一信號(hào)(s108)的第一輸出,第一信號(hào)在對(duì)外部存儲(chǔ)器進(jìn)行讀操作期間具有第一邏輯狀態(tài),否則具有第二邏輯狀態(tài);至少第一外部存儲(chǔ)器(130)與系統(tǒng)總線相連接;等待狀態(tài)電路(160)具有和所述邏輯電路(110、152)相連接的第二信號(hào)(s150)的第二輸出,由此所述邏輯電路響應(yīng)于第二信號(hào)被加電,而進(jìn)入等待狀態(tài);外部總線控制電路(170)含有計(jì)數(shù)電路(202、204、206),比較電路(220),和與等待狀態(tài)電路(160)相連的第三信號(hào)(s152)的第三輸出,其特征在于,等待狀態(tài)電路響應(yīng)于第三信號(hào)的被加電和不加電,對(duì)第二信號(hào)加電和不加電;并且數(shù)據(jù)裝置(140、142)用來存儲(chǔ)多個(gè)等待狀態(tài)值,其中的一個(gè)所述等待狀態(tài)值對(duì)應(yīng)于所述第一外部存儲(chǔ)器(130);外部總線控制電路(170)作為第一信號(hào)(s108)狀態(tài)的一個(gè)函數(shù),對(duì)第三信號(hào)(s152)加電;計(jì)數(shù)電路(202、204、206)響應(yīng)于第一信號(hào)從第一邏輯狀態(tài)轉(zhuǎn)換到第二邏輯狀態(tài)的改變開始計(jì)數(shù)序列;比較電路(220)具有與數(shù)據(jù)裝置(140、142)相連的第一輸入,來接收所選的等待狀態(tài)數(shù)值之一,并且連接第二輸入用來接收從計(jì)數(shù)器輸出的計(jì)數(shù);當(dāng)比較電路的輸入相等時(shí),比較電路就不加電第三信號(hào)。
11.如權(quán)利要求10所述的微處理器,其特征在于,所述邏輯電路(110,152)生成存儲(chǔ)地址(s140),并且數(shù)據(jù)裝置(140、142)包括了用于響應(yīng)于所生成的存儲(chǔ)器地址而產(chǎn)生等待狀態(tài)值之一的選擇器(140)。
12.如權(quán)利要求10所述的微處理器,其特征在于,所述邏輯電路(110,152)包括了第四信號(hào)(s110)的第四輸出,表明了對(duì)同一存儲(chǔ)器的連續(xù)讀操作,第四輸出和外部總線控制電路(170)相連,外部總線控制電路作為第四信號(hào)的狀態(tài)的一個(gè)函數(shù),進(jìn)一步對(duì)第三信號(hào)加電。
13.如權(quán)利要求10所述的計(jì)算設(shè)備,其特征在于,所述計(jì)算設(shè)備進(jìn)一步包括用于將等待狀態(tài)數(shù)有選擇地載入到數(shù)據(jù)裝置(140、142)中的編程裝置(180)。
全文摘要
本發(fā)明是涉及用微控制器(110)來控制數(shù)據(jù)總線(120),考慮到了存儲(chǔ)器輸出驅(qū)動(dòng)器在輸出操作后需要有限的時(shí)間來電釋放總線的事實(shí)。每一存儲(chǔ)器(130、132)有與之相應(yīng)的等待狀態(tài)數(shù)來有選擇地置微處理器(110)在緊接讀操作之后并在下一個(gè)I/O操作時(shí)之前進(jìn)入可變長(zhǎng)度的等待狀態(tài)。
文檔編號(hào)G06F13/16GK1338076SQ99816463
公開日2002年2月27日 申請(qǐng)日期1999年12月9日 優(yōu)先權(quán)日1999年3月10日
發(fā)明者M·奧勒斯 申請(qǐng)人:愛特梅爾股份有限公司