專利名稱:規(guī)定存取屬性的存儲(chǔ)器保護(hù)方法和電路的制作方法
背景技術(shù):
1.發(fā)明領(lǐng)域本發(fā)明涉及一種存儲(chǔ)器保護(hù)技術(shù),它尤其涉及用于單獨(dú)由地址范圍規(guī)定有關(guān)存取的屬性的一種方法和電路。
2.相關(guān)技術(shù)的描述微處理器和其他的數(shù)據(jù)處理裝置通過(guò)將地址發(fā)給邏輯地址空間中的存儲(chǔ)器或其他設(shè)備(在下文中簡(jiǎn)稱為“設(shè)備”)來(lái)執(zhí)行讀、寫等的存取。根據(jù)地址,經(jīng)??梢远x各個(gè)邏輯區(qū)域在哪些區(qū)域中允許讀、寫,在哪些區(qū)域只可以允許讀取,或者在哪些區(qū)域中不允許讀、寫。例如,有關(guān)存取的這些特征(在下文中稱作“存取屬性”或簡(jiǎn)稱為“屬性”)有時(shí)可以以稱作“頁(yè)”的邏輯區(qū)域?yàn)閱卧獊?lái)加以設(shè)置。通過(guò)設(shè)置屬性來(lái)禁止或限制設(shè)備的數(shù)據(jù)的重寫或讀取,這通常被稱作“保護(hù)”。
第6,021,476號(hào)美國(guó)專利中指出存儲(chǔ)器保護(hù)電路的一個(gè)例子,在該存儲(chǔ)器保護(hù)電路中,由地址范圍單獨(dú)規(guī)定屬性。在根據(jù)該美國(guó)專利的這種電路中,可以規(guī)定多個(gè)邏輯區(qū)域的每個(gè)地址范圍,并為每個(gè)邏輯區(qū)域固定不變地預(yù)定優(yōu)先權(quán)。當(dāng)由微處理器發(fā)出的地址包含在多個(gè)邏輯區(qū)域的一個(gè)地址范圍中時(shí),選擇具有最高優(yōu)先權(quán)的邏輯區(qū)域(在下文中也稱作“最高優(yōu)先權(quán)區(qū)域),并根據(jù)為該邏輯區(qū)域確定的屬性來(lái)執(zhí)行存取。
例如,在4KB的操作系統(tǒng)(在下文中描述為“OS”)程序區(qū)域和12KB的用戶程序區(qū)域被映射入16KB的RAM的情況下,16KB的區(qū)域一般首先被分成四個(gè)區(qū)域(每個(gè)區(qū)域?yàn)?KB),然后,它們中的一個(gè)區(qū)域被分配給“OS程序區(qū)域”,而剩余的三個(gè)區(qū)域被分配給“用戶程序區(qū)域”。這至少要求四次設(shè)置操作。但是,在上述的美國(guó)專利的情況下,如果16KB的整個(gè)區(qū)域被映射入“用戶程序區(qū)域”,然后只映射其4KB的部分以便在“OS程序區(qū)域”中重疊,且該4KB的優(yōu)先權(quán)被設(shè)置得更高,那么,就可以達(dá)到這個(gè)目的。這只要求對(duì)兩個(gè)區(qū)域進(jìn)行定義,從而簡(jiǎn)化了設(shè)置。
但是,發(fā)明者已經(jīng)認(rèn)識(shí)到,由于在上述專利中為邏輯區(qū)域提供固定的優(yōu)先權(quán),因此,在改變存儲(chǔ)器映射之后的設(shè)置變化方面有改進(jìn)的余地。例如,考慮一種情況其中,包含地址0xffff8000(0xffff8000指出十六進(jìn)制符號(hào)中的ffff8000;在下文中,“0x”用類似的方式代表十六進(jìn)制)~0xfffff7ff的30KB邏輯區(qū)域的屬性是完全存取,這意味著可讀取、可寫入和可高速緩存;包含地址0xfffff800~0xffffffff的2KB邏輯區(qū)域的屬性是只讀和可高速緩存。在上述的美國(guó)專利的情況下,當(dāng)屬性事先被固定為邏輯區(qū)域0<邏輯區(qū)域1<邏輯區(qū)域2時(shí),也就是說(shuō),當(dāng)邏輯區(qū)域2被固定為最高優(yōu)先權(quán)區(qū)域時(shí),進(jìn)行以下設(shè)置關(guān)于邏輯區(qū)域0地址范圍是32KB,從0xffff8000到0xffffffff。
屬性是完全存取和可高速緩存。
關(guān)于邏輯區(qū)域1地址范圍是2KB,從0xfffff800到0xffffffff。
屬性是只讀和可高速緩存。
這里,考慮存儲(chǔ)器映射變化的一種情況其中,30KB完全存取和可高速緩存的邏輯區(qū)域中只有6KB的屬性被改變成只讀和不可高速緩存。然后,將進(jìn)行以下設(shè)置關(guān)于邏輯區(qū)域0地址范圍是32KB,從0xffff8000到0xffffffff。
屬性是完全存取和可高速緩存。
關(guān)于邏輯區(qū)域1地址范圍是8KB,從0xffffe000到0xffffffff。
屬性是只讀和不可高速緩存。
關(guān)于邏輯區(qū)域2地址范圍是2KB,從0xfffff800到0xffffffff。
屬性是只讀和可高速緩存。
這里,在存儲(chǔ)器映射變化之前是只讀和可高速緩存的2KB邏輯區(qū)域即使在存儲(chǔ)器映射變化之后也保留相同的地址范圍和只讀與可高速緩存的相同屬性,但是,關(guān)于那個(gè)邏輯區(qū)域,在存儲(chǔ)器映射變化之前為邏輯區(qū)域1設(shè)置的地址范圍和屬性必須被改變成邏輯區(qū)域2的設(shè)置。這樣,在存儲(chǔ)器保護(hù)電路由微處理器的程序來(lái)設(shè)置的情況下,程序的變化很復(fù)雜,因而要求工作極其仔細(xì)。
而且,在程序通過(guò)動(dòng)態(tài)地改變屬性來(lái)保護(hù)存儲(chǔ)器的情況下,自然希望較少處理步驟用于設(shè)置變化。
發(fā)明概述本發(fā)明鑒于前述各個(gè)問(wèn)題而產(chǎn)生,其一個(gè)目的是簡(jiǎn)化改變存儲(chǔ)器保護(hù)電路設(shè)置所必需的程序修改,或減少設(shè)置改變所需的處理步驟的數(shù)目。
根據(jù)本發(fā)明的一個(gè)較佳實(shí)施例涉及一種存儲(chǔ)器保護(hù)電路,該存儲(chǔ)器保護(hù)電路在邏輯地址空間中控制來(lái)自數(shù)據(jù)處理裝置(例如,微處理器)對(duì)設(shè)備的存取。該電路包括一個(gè)地址范圍寄存器單元,它分別規(guī)定邏輯地址空間中的多個(gè)邏輯區(qū)域的地址范圍;一個(gè)屬性寄存器單元,它規(guī)定每個(gè)邏輯區(qū)域的一個(gè)存取屬性;一個(gè)地址比較單元,它判斷該設(shè)備的存取請(qǐng)求地址是否被包含在每個(gè)邏輯區(qū)域中;一個(gè)優(yōu)先權(quán)寄存器單元,它規(guī)定每個(gè)邏輯區(qū)域的存取優(yōu)先權(quán);一個(gè)屬性確定單元,當(dāng)存在被判斷為包含存取請(qǐng)求地址的一個(gè)或多個(gè)邏輯區(qū)域時(shí),它規(guī)定并輸出為一個(gè)邏輯區(qū)域規(guī)定的一個(gè)屬性,該區(qū)域具有最高的優(yōu)先權(quán);以及,一個(gè)寄存器設(shè)置單元,它能夠重復(fù)設(shè)置地址范圍寄存器單元、屬性寄存器單元和優(yōu)先權(quán)寄存器單元。
該“設(shè)備”的代表是前面所述的一個(gè)存儲(chǔ)器。但是,該設(shè)備不一定是存儲(chǔ)器,只要它是經(jīng)由類似于存儲(chǔ)器映射的邏輯地址空間進(jìn)行存取。例如,該設(shè)備可能是存儲(chǔ)器映射I/O設(shè)備。進(jìn)而,那些外形在存儲(chǔ)器與I/O設(shè)備之間不可區(qū)別的任選的設(shè)備(例如,各種擴(kuò)展總線卡)都是“設(shè)備”,只要它們中的至少一部分被映射入邏輯地址空間就可以了。
同樣,“存儲(chǔ)器保護(hù)電路”不一定要將存儲(chǔ)器作為其保護(hù)的目標(biāo),而是一些電路的一般術(shù)語(yǔ),這些電路用與存儲(chǔ)器映射到邏輯地址空間相同的方法來(lái)保護(hù)被映射到邏輯地址空間的任意的設(shè)備。
由于這種電路可以不定地和重復(fù)地設(shè)置邏輯區(qū)域的各種優(yōu)先權(quán),因此,因保護(hù)設(shè)置的改變而必需的地址范圍和屬性設(shè)置的改變變得簡(jiǎn)單了。
該電路還可包括一個(gè)保護(hù)出錯(cuò)單元,當(dāng)判斷各個(gè)邏輯區(qū)域都不包含存取請(qǐng)求地址時(shí),或當(dāng)存取請(qǐng)求地址的存取屬性不屬于允許性質(zhì)時(shí),該保護(hù)出錯(cuò)單元輸出保護(hù)出錯(cuò)信號(hào)。這種結(jié)構(gòu)可以由,例如門元件實(shí)現(xiàn),當(dāng)例如地址比較單元所得出的所有的比較結(jié)果指出“不包含”時(shí),該門元件將保護(hù)出錯(cuò)信號(hào)作為有效而輸出。
該電路還可包括一個(gè)單元,當(dāng)存取請(qǐng)求地址的存取屬性指出“禁止存取”時(shí),該單元輸出保護(hù)出錯(cuò)信號(hào)。舉例來(lái)說(shuō),在存取請(qǐng)求地址的屬性是“只讀”而數(shù)據(jù)處理裝置正在激活對(duì)該存取請(qǐng)求地址的寫操作的情況下,輸出保護(hù)出錯(cuò)信號(hào)。
該電路還可包括一個(gè)選擇單元。當(dāng)判斷各個(gè)邏輯區(qū)域都不包含存取請(qǐng)求地址時(shí),該選擇單元選擇一個(gè)預(yù)定的存取屬性。例如,這種存取將會(huì)是“不能存取(禁止讀和寫)”。特別是,可以提供一個(gè)默認(rèn)屬性寄存器單元,當(dāng)判斷各個(gè)邏輯區(qū)域都不包含存取請(qǐng)求地址時(shí),該默認(rèn)屬性寄存器單元設(shè)置一個(gè)屬性,以及寄存器設(shè)置單元,它能夠重復(fù)設(shè)置所述的默認(rèn)屬性寄存器單元。
根據(jù)本發(fā)明的另一個(gè)較佳實(shí)施例也涉及一種存儲(chǔ)器保護(hù)電路,它在邏輯地址空間中控制來(lái)自數(shù)據(jù)處理裝置對(duì)設(shè)備的存取。這種電路包括一個(gè)地址范圍寄存器單元,它按允許重疊的一種方式來(lái)設(shè)置邏輯地址空間中的多個(gè)邏輯區(qū)域的地址范圍;以及一個(gè)優(yōu)先權(quán)寄存器單元,它規(guī)定多個(gè)邏輯區(qū)域中的每個(gè)邏輯區(qū)域的存取優(yōu)先權(quán),以便可以在外部重置存取優(yōu)先權(quán)。在這種結(jié)構(gòu)中,當(dāng)對(duì)設(shè)備的存取請(qǐng)求地址同時(shí)包含在多個(gè)邏輯區(qū)域中時(shí),其優(yōu)先權(quán)最高的一個(gè)邏輯區(qū)域選為存取目的地。
根據(jù)本發(fā)明的另一個(gè)較佳實(shí)施例涉及一種存儲(chǔ)器保護(hù)方法。該方法包括按允許重疊的方式來(lái)設(shè)置邏輯地址空間中的多個(gè)邏輯區(qū)域的地址范圍;當(dāng)一個(gè)存取請(qǐng)求地址同時(shí)包含在多個(gè)邏輯區(qū)域中時(shí),通過(guò)參考各個(gè)邏輯區(qū)域的優(yōu)先權(quán)來(lái)確定優(yōu)先權(quán)最高的一個(gè)邏輯區(qū)域;識(shí)別優(yōu)先權(quán)被確定為最高的邏輯區(qū)域的一個(gè)存取屬性;根據(jù)所識(shí)別的存取屬性來(lái)產(chǎn)生存??;并適當(dāng)?shù)刂刂枚鄠€(gè)邏輯區(qū)域中的每個(gè)邏輯區(qū)域中的屬性。
而且,本發(fā)明的概述不一定要描述所有必要的特點(diǎn),因此本發(fā)明也可以是這些所述特點(diǎn)的次組合。
附圖簡(jiǎn)述
圖1是電路方框圖,展示了根據(jù)本發(fā)明的第一個(gè)實(shí)施例的存儲(chǔ)器保護(hù)電路的結(jié)構(gòu)。
圖2是根據(jù)第一和第二個(gè)實(shí)施例的存儲(chǔ)器保護(hù)電路所應(yīng)用的邏輯區(qū)域容量的一個(gè)例子。
圖3表現(xiàn)了根據(jù)第一和第二個(gè)實(shí)施例的存儲(chǔ)器保護(hù)電路所應(yīng)用的存取屬性的一個(gè)例子。
圖4表現(xiàn)了根據(jù)第一和第二個(gè)實(shí)施例的存儲(chǔ)器保護(hù)電路所應(yīng)用的優(yōu)先權(quán)的一個(gè)例子。
圖5是電路方框圖,展示了根據(jù)本發(fā)明的第二個(gè)實(shí)施例的存儲(chǔ)器保護(hù)電路的結(jié)構(gòu)。
具體實(shí)施例方式
現(xiàn)在將根據(jù)一些較佳實(shí)施例來(lái)描述本發(fā)明,這并非意在限制本發(fā)明的范圍,而是例示本發(fā)明。實(shí)施例中所描述的所有特點(diǎn)及其組合對(duì)于本發(fā)明而言并不一定是必需的。
第一個(gè)實(shí)施例圖1是電路方框圖,展示了根據(jù)本發(fā)明的一個(gè)實(shí)施例的存儲(chǔ)器保護(hù)電路的結(jié)構(gòu)。參考圖1,存儲(chǔ)器保護(hù)電路1連接到微處理器2、存儲(chǔ)器3和存儲(chǔ)器控制電路4,并允許設(shè)置四個(gè)邏輯區(qū)域A、B、C和D。對(duì)應(yīng)于這四個(gè)邏輯區(qū)域,配置了四個(gè)基址寄存器電路5a~5d、容量寄存器電路6a~6d、存取屬性寄存器電路7a~7d、地址比較電路8a~8d、優(yōu)先權(quán)寄存器電路9a~9d。并且,存在一個(gè)屬性判定電路10和一個(gè)寄存器設(shè)置電路11。
四個(gè)基址寄存器5a~5d分別存儲(chǔ)邏輯區(qū)域A~D的基地址的32位中的高24位?;刂返牡?位在這里“不用在意”,這意味著它們不被參考。這樣,在確定基地址中,所有這些8個(gè)位都被視作0。
四個(gè)容量寄存器6a~6d分別存儲(chǔ)代表邏輯區(qū)域A~D的容量的容量代碼。
圖2是本實(shí)施例中采用的邏輯區(qū)域容量的編碼的一個(gè)例子,并表現(xiàn)了四個(gè)容量寄存器6a~6b中的每個(gè)容量寄存器所持的容量代碼與各個(gè)邏輯區(qū)域的容量之間的關(guān)系。這里,0b01010中的“0b”表示一個(gè)二進(jìn)制數(shù)字,下文將使用類似的符號(hào)。例如,在值0xfffff8保留在對(duì)應(yīng)于邏輯區(qū)域A的基址寄存器5a中和容量代碼0b01010保留在容量寄存器6a中的情況下,邏輯區(qū)域A的地址范圍將是2KB,從0xfffff800到0xffffffff。將注意到,如圖2所示,通過(guò)分配0b00000,可以將地址范圍設(shè)置為零。
四個(gè)存取屬性寄存器電路7a~7d分別存儲(chǔ)器邏輯區(qū)域A~D的存取屬性代碼Aa~Ad。圖3是本發(fā)明中所采用的各種屬性的編碼的一個(gè)例子,并表現(xiàn)了存取屬性寄存器電路7a~7d中的每個(gè)存取屬性寄存器電路所持的存取屬性代碼與各個(gè)邏輯區(qū)域的屬性之間的關(guān)系。這里,可以設(shè)置“不能存取”、“只讀”和“完全存取”,但保留其他設(shè)置,且不可設(shè)定。
從四個(gè)基址寄存器5a~5d輸出的基地址(即32位地址的高24位)分別輸入到四個(gè)地址比較電路8a~8d。從四個(gè)容量寄存器6a~6d輸出的容量代碼分別輸出到這些地址比較電路8a~8d。而且,經(jīng)由地址總線13從微處理器2輸出的一個(gè)地址(在下文中被稱作“存取請(qǐng)求地址”)輸入到所有的地址比較電路8a~8d。
對(duì)應(yīng)于邏輯區(qū)域A的地址比較電路8a判斷存取請(qǐng)求地址是否包含在邏輯區(qū)域A的地址范圍中,并且,只有當(dāng)判斷結(jié)果是“包含”時(shí),才將一個(gè)瞬時(shí)干擾信號(hào)(hit signal)Ha輸出到屬性判定電路10。同樣,對(duì)應(yīng)于邏輯區(qū)域B~D的地址比較電路8b~8d分別輸出邏輯區(qū)域B~D的瞬時(shí)干擾信號(hào)Hb~Hd。
四個(gè)優(yōu)先權(quán)寄存器電路9a~9d分別存儲(chǔ)邏輯區(qū)域A~D的優(yōu)先權(quán)代碼Pa~Pd。圖4是本實(shí)施例中所采用的各種優(yōu)先權(quán)的編碼的一個(gè)例子,并表現(xiàn)了每個(gè)優(yōu)先權(quán)寄存器電路9a~9d存儲(chǔ)的優(yōu)先權(quán)代碼與邏輯區(qū)域A~D的優(yōu)先權(quán)之間的關(guān)系。
寄存器設(shè)置電路11從微處理器2接收存取控制線12上的存取控制信號(hào),地址總線13上的地址,數(shù)據(jù)總線14上的數(shù)據(jù)。這些信號(hào)相應(yīng)地設(shè)置基址寄存器電路5a~5d、容量寄存器電路6a~6d、存取屬性寄存器電路7a~7d和優(yōu)先權(quán)寄存器電路9a~9d。
屬性判定電路10接收分別從四個(gè)地址比較電路8a~8d輸出的所述瞬時(shí)干擾信號(hào)Ha~Hd、分別從四個(gè)優(yōu)先權(quán)寄存器電路9a~9d輸出的優(yōu)先權(quán)代碼Pa~Pd和分別從四個(gè)存取屬性寄存器電路7a~7d輸出的存取屬性代碼Aa~Ad。
根據(jù)瞬時(shí)干擾信號(hào)Ha~Hd,屬性判定電路10首先確定邏輯區(qū)域A~D中的哪個(gè)或哪些邏輯區(qū)域包含存取請(qǐng)求地址。然后,屬性判定電路10從包含該地址的各個(gè)邏輯區(qū)域中選擇最高優(yōu)先權(quán)區(qū)域,規(guī)定對(duì)應(yīng)于所選區(qū)域的存取屬性,并利用屬性輸出線15輸出規(guī)定的屬性的代碼。這里將注意到,當(dāng)存取請(qǐng)求地址不包含在邏輯區(qū)域A~D中的任何邏輯區(qū)域中時(shí),屬性判定電路10輸出指出“不能存取”的一個(gè)存取屬性代碼0b00,同時(shí),將保護(hù)出錯(cuò)信號(hào)20輸出為“有效”。這個(gè)保護(hù)出錯(cuò)信號(hào)20輸入到一個(gè)中斷信號(hào)輸入或微處理器2的類似物,以便激活必要的錯(cuò)誤處理程序。這樣,當(dāng)錯(cuò)誤地嘗試存取沒有分配設(shè)備的一個(gè)邏輯區(qū)域時(shí),這種結(jié)構(gòu)可以避免任何異常操作。存儲(chǔ)器控制電路4根據(jù)輸出的屬性代碼來(lái)允許、限制或禁止對(duì)存取請(qǐng)求地址的存取。利用讀使能信號(hào)16來(lái)進(jìn)行從存儲(chǔ)器3的讀操作,并利用寫使能信號(hào)17來(lái)對(duì)其進(jìn)行寫操作。
下文將詳細(xì)描述采用上述結(jié)構(gòu)的設(shè)置的一些實(shí)際的例子設(shè)置例1為了給從0x00000000到0x000007ff的地址范圍的2KB邏輯區(qū)域建立“只讀”并給從0x00000800到0xffffffff的地址范圍建立“不能存取”,可執(zhí)行以下的設(shè)置關(guān)于邏輯區(qū)域A基址寄存器電路5a0x000000(基地址是0x00000000。)容量寄存器電路6a0b11111(容量是4GB。)存取屬性寄存器電路7a0b00(不能存取)優(yōu)先權(quán)寄存器電路9a0b00(優(yōu)先權(quán)最低。)關(guān)于邏輯區(qū)域B基址寄存器電路5b0x000000(基地址是0x00000000。)容量寄存器電路6b0b01010(容量是2KB。)存取屬性寄存器電路7b0b10(只讀)優(yōu)先權(quán)寄存器電路9b0b01(優(yōu)先權(quán)高于邏輯區(qū)域A的優(yōu)先權(quán)。)關(guān)于邏輯區(qū)域C容量寄存器電路6c0b00000(容量是0B。)關(guān)于邏輯區(qū)域D容量寄存器電路6d0b00000(容量是0B。)將注意到,由于邏輯區(qū)域C和D的容量被設(shè)置為0B,因此,可以任意地設(shè)置其基址寄存器電路5c與5d、存取屬性寄存器電路7c與7d,以及優(yōu)先權(quán)寄存器電路9c與9d。
在這些設(shè)置下,如果微處理器2嘗試寫到地址0x00000000,則將在邏輯區(qū)域A和B處發(fā)生沖突,并將選擇其優(yōu)先權(quán)高于邏輯區(qū)域A的邏輯區(qū)域B,然后,將選擇對(duì)應(yīng)于邏輯區(qū)域B的存取屬性“只讀”,屬性代碼“0b10”將在屬性輸出線15上輸出。另一方面,指出寫操作的存取控制信號(hào)經(jīng)由存取控制線12從微處理器2輸入到存儲(chǔ)器控制電路4。
盡管微處理器2嘗試寫入,但存儲(chǔ)器控制電路4判斷存取請(qǐng)求地址被包含在其屬性是“只讀”的邏輯區(qū)域B中,因此使到存儲(chǔ)器3的寫使能信號(hào)無(wú)效。結(jié)果,禁止了對(duì)地址的寫操作。
當(dāng)如以上情況沒有實(shí)現(xiàn)所需的存取時(shí),屬性判定電路10可以通過(guò)使保護(hù)出錯(cuò)信號(hào)20有效來(lái)通知微處理器2??梢酝ㄟ^(guò)利用一條路徑(未示出)將存取控制線12連接到屬性判定電路10,隨后通過(guò)讓屬性判定電路10判斷有關(guān)其自身的存取類型,來(lái)實(shí)現(xiàn)這一點(diǎn)。當(dāng)然,可以由存儲(chǔ)器控制電路4來(lái)作出該判斷,并且,在那種情況下,這個(gè)存儲(chǔ)器控制電路4可以通過(guò)一條路徑(這里未示出)來(lái)使保護(hù)出錯(cuò)信號(hào)20有效。
設(shè)置例2接下來(lái),考慮一種情況其中,從0x00000800到0x00001fff的地址范圍的6KB邏輯區(qū)域的存取屬性被改變成“完全存取”,且其他邏輯區(qū)域的存取屬性沒有改變。然后,進(jìn)行以下的設(shè)置改變關(guān)于邏輯區(qū)域B優(yōu)先權(quán)寄存器電路9b0b10關(guān)于邏輯區(qū)域C基址寄存器電路5c0x000000(基地址是0x00000000。)容量寄存器電路6c0b01100(容量是8KB。)存取屬性寄存器電路7c0b11(完全存取)優(yōu)先權(quán)寄存器電路9c0b01(優(yōu)先權(quán)低于邏輯區(qū)域B的優(yōu)先權(quán)。)以上是本實(shí)施例中的存取控制的設(shè)置的一些例子。
為了闡明本實(shí)施例的效果,下文將考慮一些設(shè)置,在這些設(shè)置中,不存在圖1中的四個(gè)優(yōu)先權(quán)寄存器電路9a~9d。這里,事先固定邏輯區(qū)域的優(yōu)先權(quán),并假設(shè)邏輯區(qū)域A<邏輯區(qū)域B<邏輯區(qū)域C<邏輯區(qū)域D,因此,邏輯區(qū)域D是最高優(yōu)先權(quán)區(qū)域。以下的設(shè)置例子1和2與上述的設(shè)置例子相同。
設(shè)置例1關(guān)于邏輯區(qū)域A基址寄存器電路5a0x000000(基地址是0x00000000。)容量寄存器電路6a0b11111(容量是4GB。)存取屬性寄存器電路7a0b00(不能存取)關(guān)于邏輯區(qū)域B基址寄存器電路5b0x000000(基地址是0x00000000。)容量寄存器電路6b0b01010(容量是2KB。)存取屬性寄存器電路7b0b10(只讀)關(guān)于邏輯區(qū)域C容量寄存器電路6c0b00000(容量是0B。)關(guān)于邏輯區(qū)域D容量寄存器電路6d0b00000(容量是0B。)將注意到,由于邏輯區(qū)域C和D的容量也被設(shè)置為0B,因此,可以任意地對(duì)它們的基址寄存器電路5c與5d、存取屬性寄存器電路7c與7d進(jìn)行設(shè)置。
設(shè)置例2關(guān)于邏輯區(qū)域B基址寄存器電路5b0x000000(基地址是0x00000000。)容量寄存器電路6b0b01100(容量是8KB。)存取屬性寄存器電路7b0b11(完全存取)關(guān)于邏輯區(qū)域C基址寄存器電路5c0x000000(基地址是0x00000000。)容量寄存器電路6c0b01010(容量是2KB。)存取屬性寄存器電路7c0b10(只讀)從上文中可見,與使用根據(jù)本實(shí)施例的存儲(chǔ)器保護(hù)電路1的情況相比,將會(huì)有更多的寄存器要求在設(shè)置改變中重新設(shè)置。而且,以上的情況要求對(duì)具有較大數(shù)量的位的寄存器(例如,基址寄存器電路5c)進(jìn)行重新設(shè)置,因此也在這方面存有缺點(diǎn)。另一方面,本實(shí)施例還具有優(yōu)先權(quán)代碼通??梢杂蓸O少數(shù)量的位來(lái)規(guī)定的這點(diǎn)優(yōu)點(diǎn)。本實(shí)施例只關(guān)注讀、寫屬性,但將要注意,當(dāng)還存在更多類型的屬性時(shí),在設(shè)置改變中要求進(jìn)行重新設(shè)置的寄存器電路的數(shù)量將會(huì)有更大的差異。
第二個(gè)實(shí)施例圖5是電路方框圖,展示了根據(jù)本發(fā)明的另一個(gè)實(shí)施例的一種存儲(chǔ)器保護(hù)電路的結(jié)構(gòu)。在圖5中,為與第一個(gè)實(shí)施例中的結(jié)構(gòu)相同的結(jié)構(gòu)提供相同的參考數(shù)字,下文將只討論差異。
在此第二個(gè)實(shí)施例中,又提供一個(gè)默認(rèn)屬性寄存器電路30,來(lái)自它的一個(gè)輸出饋送到屬性判定電路10。默認(rèn)屬性寄存器電路30由寄存器設(shè)置電路11設(shè)置。
當(dāng)判斷各個(gè)邏輯區(qū)域都不包含存取請(qǐng)求地址時(shí),默認(rèn)屬性寄存器電路30預(yù)先設(shè)置要選擇的一個(gè)屬性(在下文中被稱作“默認(rèn)屬性”)。在第一個(gè)實(shí)施例中,固定不變地返回“不能存取”,但是,例如對(duì)應(yīng)于“不能存取”的“0b00”或?qū)?yīng)于“只讀”的“0b10”可以由默認(rèn)屬性寄存器電路30設(shè)置。作為另一個(gè)例子,例如,如果指出圖3中的“設(shè)置不可能”(不可設(shè)置)的“0b01”作為一個(gè)默認(rèn)屬性返回,則通過(guò)判斷是“盡管某些邏輯區(qū)域中有存取請(qǐng)求地址也完全拒絕存取”還是“任何邏輯區(qū)域中都沒有存取請(qǐng)求地址”,微處理器2容易做出錯(cuò)誤分析。
根據(jù)只起示范作用的一些較佳實(shí)施例來(lái)描述了本發(fā)明。精通該技術(shù)領(lǐng)域的人應(yīng)該理解,這些只是起示范的作用,還存在其他許多各不相同的修改。以下是其中的一些例子。
直接傳送給該實(shí)施例中的微處理器2的保護(hù)出錯(cuò)信號(hào)20可以在將它間接通知給微處理器2之前已輸入到一個(gè)中斷控制器或另一個(gè)元件。此外,將該信號(hào)傳送給微處理器2不總是必要的。
在目前的這些實(shí)施例中,微處理器2被認(rèn)為是存取存儲(chǔ)器3的一個(gè)實(shí)體。但是,這種實(shí)體當(dāng)然不只有微處理器2。例如,實(shí)體可以是任意的外部處理器或DMA(直接存儲(chǔ)器存取)控制器或任何類似的元件。在這類情況下,例如,可以從總線判優(yōu)器獲取有關(guān)實(shí)體正在存取存儲(chǔ)器3的信息,并可以根據(jù)這樣獲取的信息改變來(lái)自存取屬性寄存器電路7a~7d的輸出。例如,可能有一種情況是允許從微處理器2對(duì)某個(gè)特定的邏輯區(qū)域進(jìn)行完全存取,而其他的總線主控器要求只讀設(shè)置。在這種情況下,可以提供存取屬性寄存器電路7a~7d中的每?jī)蓚€(gè)存取屬性寄存器電路,并可以根據(jù)這些總線主控器來(lái)選擇輸出。
都具有目前這些實(shí)施例中的2位配置的優(yōu)先權(quán)寄存器電路9a~9d可以統(tǒng)一成8位或更多位的一個(gè)寄存器。在這種情況下,同時(shí)切換所有優(yōu)先權(quán),以便可以避免發(fā)生臨界定時(shí)(例如,當(dāng)為多個(gè)邏輯區(qū)域設(shè)置相同的優(yōu)先權(quán)時(shí))。寄存器的這種統(tǒng)一或集成同樣可應(yīng)用于任何其他的寄存器。
雖然已利用示范性實(shí)施例來(lái)描述本發(fā)明,但是,應(yīng)該理解,在不脫離由所附權(quán)利要求定義的本發(fā)明的范圍的前提下,精通該技術(shù)領(lǐng)域的人可以進(jìn)行許多修改和替換。
權(quán)利要求
1.一種存儲(chǔ)器保護(hù)電路,它在邏輯地址空間中控制來(lái)自數(shù)據(jù)處理裝置例如微處理器對(duì)設(shè)備的存取,其特征在于,所述電路包括地址范圍寄存器單元,它分別規(guī)定邏輯地址空間中的多個(gè)邏輯區(qū)域的地址范圍;屬性寄存器單元,它規(guī)定每個(gè)邏輯區(qū)域的一個(gè)存取屬性;地址比較單元,它判斷設(shè)備的存取請(qǐng)求地址是否包含在每個(gè)邏輯區(qū)域中;優(yōu)先權(quán)寄存器單元,它規(guī)定每個(gè)邏輯區(qū)域的存取的優(yōu)先權(quán);屬性確定單元,當(dāng)一個(gè)或多個(gè)邏輯區(qū)域判斷為包含存取請(qǐng)求地址時(shí),它規(guī)定并輸出為其優(yōu)先權(quán)是各個(gè)邏輯區(qū)域中最高的一個(gè)邏輯區(qū)域規(guī)定的一個(gè)屬性;以及,寄存器設(shè)置單元,它能夠重復(fù)設(shè)置所述地址范圍寄存器單元、所述屬性寄存器單元和所述優(yōu)先權(quán)寄存器單元。
2.如權(quán)利要求1所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,所述地址范圍寄存器單元能夠設(shè)置無(wú)地址范圍的狀態(tài)。
3.如權(quán)利要求1所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,還包括一個(gè)保護(hù)出錯(cuò)單元,當(dāng)判斷各個(gè)邏輯區(qū)域都不包含存取請(qǐng)求地址時(shí),或當(dāng)存取請(qǐng)求地址的一個(gè)存取屬性指出禁止存取時(shí),該保護(hù)出錯(cuò)單元輸出一個(gè)保護(hù)出錯(cuò)信號(hào)。
4.如權(quán)利要求2所述的一種存儲(chǔ)器保護(hù)電路,其特征在于還包括一個(gè)保護(hù)出錯(cuò)單元,當(dāng)判斷各個(gè)邏輯區(qū)域都不包含存取請(qǐng)求地址時(shí),或當(dāng)存取請(qǐng)求地址的一個(gè)存取屬性指出禁止存取時(shí),該保護(hù)出錯(cuò)單元輸出一個(gè)保護(hù)出錯(cuò)信號(hào)。
5.如權(quán)利要求1所述的一種存儲(chǔ)器保護(hù)電路,其特征在于還包括一個(gè)選擇單元,當(dāng)判斷各個(gè)邏輯區(qū)域都不包含存取請(qǐng)求地址時(shí),該選擇單元選擇一個(gè)預(yù)定的存取屬性。
6.如權(quán)利要求2所述的一種存儲(chǔ)器保護(hù)電路,其特征在于還包括一個(gè)選擇單元,當(dāng)判斷各個(gè)邏輯區(qū)域都不包含存取請(qǐng)求地址時(shí),該選擇單元選擇一個(gè)預(yù)定的存取屬性。
7.如權(quán)利要求3所述的一種存儲(chǔ)器保護(hù)電路,其特征在于還包括一個(gè)選擇單元,當(dāng)判斷各個(gè)邏輯區(qū)域都不包含存取請(qǐng)求地址時(shí),該選擇單元選擇一個(gè)預(yù)定的存取屬性。
8.如權(quán)利要求4所述的一種存儲(chǔ)器保護(hù)電路,其特征在于還包括一個(gè)選擇單元,當(dāng)判斷各個(gè)邏輯區(qū)域都不包含存取請(qǐng)求地址時(shí),該選擇單元選擇一個(gè)預(yù)定的存取屬性。
9.一種存儲(chǔ)器保護(hù)電路,它在邏輯地址空間中控制來(lái)自數(shù)據(jù)處理裝置對(duì)設(shè)備的存取,其特征在于,所述電路包括地址范圍寄存器單元,它按允許重疊的一種方式來(lái)設(shè)置邏輯地址空間中的多個(gè)邏輯區(qū)域的地址范圍;以及,優(yōu)先權(quán)寄存器單元,它規(guī)定多個(gè)邏輯區(qū)域中的每個(gè)邏輯區(qū)域的存取優(yōu)先權(quán),以便可以在外部重置存取優(yōu)先權(quán);其中,當(dāng)對(duì)設(shè)備的存取請(qǐng)求地址同時(shí)包含在多個(gè)邏輯區(qū)域中時(shí),將其優(yōu)先權(quán)最高的一個(gè)邏輯區(qū)域選為存取目的地。
10.如權(quán)利要求1所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,所述地址范圍寄存器單元包括指出邏輯區(qū)域的開始地址的基址寄存器單元;以及,規(guī)定邏輯區(qū)域的容量的容量寄存器單元。
11.如權(quán)利要求9所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,所述地址范圍寄存器單元包括指出邏輯區(qū)域的開始地址的基址寄存器單元;以及,規(guī)定邏輯區(qū)域容量的容量寄存器單元。
12.如權(quán)利要求10所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,所述容量寄存器單元通過(guò)離散值來(lái)規(guī)定邏輯區(qū)域的容量。
13.如權(quán)利要求11所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,所述容量寄存器單元通過(guò)離散值來(lái)規(guī)定邏輯區(qū)域的容量。
14.如權(quán)利要求1所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,所述屬性寄存器單元獲取有關(guān)數(shù)據(jù)處理裝置的信息,并根據(jù)所獲取的信息來(lái)改變來(lái)自其的一個(gè)輸出。
15.如權(quán)利要求3所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,將保護(hù)出錯(cuò)信號(hào)直接通知給數(shù)據(jù)處理裝置。
16.如權(quán)利要求4所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,將保護(hù)出錯(cuò)信號(hào)直接通知給數(shù)據(jù)處理裝置。
17.如權(quán)利要求3所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,將保護(hù)出錯(cuò)信號(hào)經(jīng)由其他元件間接通知給數(shù)據(jù)處理裝置。
18.如權(quán)利要求4所述的一種存儲(chǔ)器保護(hù)電路,其特征在于,將保護(hù)出錯(cuò)信號(hào)經(jīng)由其他元件間接通知給數(shù)據(jù)處理裝置。
19.一種存儲(chǔ)器保護(hù)方法,其特征在于,包括按允許重疊的一種方式來(lái)設(shè)置邏輯地址空間中的多個(gè)邏輯區(qū)域的地址范圍;當(dāng)一個(gè)存取請(qǐng)求地址同時(shí)包含在多個(gè)邏輯區(qū)域中時(shí),通過(guò)參考邏輯區(qū)域的優(yōu)先權(quán)來(lái)確定其優(yōu)先權(quán)最高的一個(gè)邏輯區(qū)域;識(shí)別其優(yōu)先權(quán)被確定為最高的邏輯區(qū)域的一個(gè)存取屬性;根據(jù)所識(shí)別的存取屬性來(lái)產(chǎn)生存??;以及,適當(dāng)?shù)刂刂枚鄠€(gè)邏輯區(qū)域中的每個(gè)邏輯區(qū)域中的優(yōu)先權(quán)。
20.如權(quán)利要求19所述的一種存儲(chǔ)器保護(hù)方法,其特征在于,還包括為多個(gè)邏輯區(qū)域中的每個(gè)邏輯區(qū)域設(shè)置存取屬性。
全文摘要
提供為多個(gè)邏輯區(qū)域規(guī)定各自的優(yōu)先權(quán)的多個(gè)優(yōu)先權(quán)寄存器電路,以便可以改變多個(gè)邏輯區(qū)域的優(yōu)先權(quán)。即使存儲(chǔ)器映射中有變化,與優(yōu)先權(quán)固定的情況相比,設(shè)置改變的自由度也很高。這樣,通過(guò)改變涉及相對(duì)較低位數(shù)的優(yōu)先權(quán)的處理,更有可能達(dá)到該目的。
文檔編號(hào)G06F12/14GK1395175SQ02140319
公開日2003年2月5日 申請(qǐng)日期2002年6月25日 優(yōu)先權(quán)日2001年6月25日
發(fā)明者藤井善也 申請(qǐng)人:三洋電機(jī)株式會(huì)社