多核處理器系統(tǒng)的制作方法
【專利摘要】本發(fā)明提供一種多核處理器系統(tǒng)。在混搭了高可靠應(yīng)用(112)和低可靠應(yīng)用(111)的狀態(tài)下運(yùn)用多核處理器系統(tǒng)(100)。多核處理器系統(tǒng)(100)處于CPU(#1)執(zhí)行低可靠應(yīng)用(111)并且CPU(#2)執(zhí)行高可靠應(yīng)用(112)的狀態(tài)。存儲器保護(hù)控制器(106#2)訪問用戶區(qū)域(121)內(nèi)的高可靠應(yīng)用存儲器區(qū)域(123),并且訪問保護(hù)區(qū)域(124)內(nèi)的高可靠應(yīng)用存儲器區(qū)域(125)。在由于低可靠應(yīng)用(111)進(jìn)行不正確寫入而破壞了高可靠應(yīng)用存儲器區(qū)域(123)的數(shù)據(jù)的情況下,CPU(#2)通過向高可靠應(yīng)用存儲器區(qū)域(123)復(fù)制高可靠應(yīng)用存儲器區(qū)域(125)的數(shù)據(jù)來復(fù)原數(shù)據(jù)。
【專利說明】多核處理器系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及保護(hù)軟件的多核處理器系統(tǒng)。
【背景技術(shù)】
[0002]近年來,采用在I個系統(tǒng)內(nèi)具有多個核的多核處理器系統(tǒng)的方式的設(shè)備逐漸增力口。當(dāng)使在I個系統(tǒng)內(nèi)具有I個核的單核處理器系統(tǒng)用的應(yīng)用程序軟件(以下,稱為“應(yīng)用”)在多核處理器系統(tǒng)中動作的情況下,存在發(fā)生較多故障的可能性。此外,即便是面向新的多核處理器系統(tǒng)開發(fā)出來的軟件,對于在多個核同時動作的并行動作狀態(tài)下的驗(yàn)證,測試者也難于驗(yàn)證全部的時機(jī)。接著,參照圖10、圖11,對在多核處理器系統(tǒng)中會引起怎樣的故障這樣的問題進(jìn)行說明。
[0003]圖10是表示使面向單核處理器系統(tǒng)的軟件在多核處理器系統(tǒng)中動作的情況的動作例的說明圖。在以附圖標(biāo)記1001表示的說明圖中,對使應(yīng)用1003在單核處理器系統(tǒng)中動作的情況進(jìn)行說明,在以附圖標(biāo)記1002表示的說明圖中,對使應(yīng)用1003在多核處理器系統(tǒng)中動作的情況進(jìn)行說明。
[0004]首先,在以附圖標(biāo)記1001表示的說明圖中,應(yīng)用1003內(nèi)的主線程1004調(diào)用函數(shù)f(X),并使用f (X)的結(jié)果。因此,主線程1004啟動執(zhí)行f (X)的卸載處理用的線程1005,在線程1005結(jié)束后,使用f (X)的結(jié)果,繼續(xù)執(zhí)行處理。其中,所謂線程,是指用于管理通過CPU進(jìn)行的處理的基本單位。
[0005]在應(yīng)用1003通過單核處理器系統(tǒng)動作的情況下,主線程1004在時刻tl起動線程1005。接著,線程1005在時刻t2結(jié)束f (X)的處理后,在時刻t3主線程1004使用結(jié)果。
[0006]接著,在以附圖標(biāo)記1002表示的說明圖中,對應(yīng)用1003在多核處理器系統(tǒng)中動作的情況進(jìn)行說明。應(yīng)用1003當(dāng)在多核處理器系統(tǒng)環(huán)境中沒有被動作驗(yàn)證就不安全的情況下,成為以附圖標(biāo)記1006表示的動作,當(dāng)在多核處理器系統(tǒng)環(huán)境中被動作驗(yàn)證就安全的情況下,成為以附圖標(biāo)記1007表示的動作。另外,在以下的說明中,將在多核處理器系統(tǒng)環(huán)境中沒有被動作驗(yàn)證就不安全的應(yīng)用稱為“低可靠應(yīng)用”,將在多核處理器系統(tǒng)環(huán)境中被動作驗(yàn)證就安全的應(yīng)用稱為“高可靠應(yīng)用”。另外,作為在多核處理器系統(tǒng)中,對對象的應(yīng)用是否具有可靠性進(jìn)行驗(yàn)證的方法,存在對各種時機(jī)進(jìn)行驗(yàn)證的方法。
[0007]在應(yīng)用1003為低可靠應(yīng)用的情況下,通過CPU (Central Processing Unit:中央處理單元)# I執(zhí)行的主線程1004在時刻tl,通過CPU # 2起動線程1005。CPU # 2假定分配了線程1005與其他線程的狀態(tài)。線程1005在時刻t3,結(jié)束f (X)的處理。
[0008]此外,由于CPU # I僅執(zhí)行主線程1004,因此主線程1004的分配時間相比于單核處理器系統(tǒng)時增多。結(jié)果,在比時刻t3更早的時刻t2,主線程1004使用f(x)的結(jié)果。由于在時刻t2,f (X)的處理還沒有結(jié)束,因此主線程1004讀入了預(yù)想之外的值,從而發(fā)生故障。
[0009]在應(yīng)用1003為高可靠應(yīng)用的情況下,主線程1004在使用f (X)的結(jié)果之前插入有同步處理。由此,主線程1004在時刻t2,在使用線程f (X)的結(jié)果前執(zhí)行同步處理。執(zhí)行了同步處理的主線程1004待機(jī)直到線程1005結(jié)束處理為止,從而能夠安全地執(zhí)行處理。
[0010]圖11是在多核處理器系統(tǒng)中調(diào)用在單核處理器系統(tǒng)中所調(diào)用的程序庫的情況的說明圖。以附圖標(biāo)記1101表示的說明圖表示程序庫A在單核處理器系統(tǒng)中動作的情況,以附圖標(biāo)記1102表示的說明圖表示程序庫A在多核處理器系統(tǒng)中動作的情況。
[0011]在以附圖標(biāo)記1101表示的說明圖中,應(yīng)用X調(diào)用程序庫A。此外,應(yīng)用Y調(diào)用程序庫A和程序庫B。這樣,在單核處理器系統(tǒng)中被調(diào)用的程序庫A也可以不進(jìn)行特殊的管理。
[0012]在以附圖標(biāo)記1102表示的說明圖中,通過CPU # I執(zhí)行應(yīng)用X,通過CPU # 2執(zhí)行應(yīng)用Y。在程序庫A具有共享資源的情況下,程序庫A采取對程序庫A的內(nèi)容(context)1103進(jìn)行排他控制這樣的對策。作為具體的對策,CPU# I上的程序庫A通過接口 1104
#1,使用 IPC (Inter-Processor Communication:進(jìn)程間通信)1105 #1、IPCl 105 # 2,來進(jìn)行與CPU # 2的程序庫A的排他控制。進(jìn)行這種對策的程序庫成為高可靠的程序庫,沒有進(jìn)行對策的程序庫成為低可靠的程序庫。
[0013]作為這種執(zhí)行高可靠應(yīng)用、低可靠應(yīng)用的情況的技術(shù),例如公開了以下技術(shù):對系統(tǒng)進(jìn)行域分割,分割為成為進(jìn)行安全動作的高可靠應(yīng)用組的安全域和成為沒有進(jìn)行安全動作的保證的低可靠應(yīng)用組的非安全域。安全域訪問存儲器內(nèi)的非安全域無法訪問的安全數(shù)據(jù)。(例如,參照下述專利文獻(xiàn)1、2。)。
[0014]此外,作為保護(hù)數(shù)據(jù)的技術(shù),例如公開了以下技術(shù):作為閃存存儲器的例子,找出未使用的預(yù)備塊作為保護(hù)區(qū)域用的錯誤塊。此外,作為保護(hù)數(shù)據(jù)的其他技術(shù),例如公開了以下技術(shù):設(shè)置備份存儲器的區(qū)域,來防止重要的程序和數(shù)據(jù)的破壞(例如,參照下述專利文獻(xiàn) 3、4。)。
[0015]專利文獻(xiàn)1:日本特表2006-506754號公報
[0016]專利文獻(xiàn)2:日本特開2004-171563號公報
[0017]專利文獻(xiàn)3:日本特開2004-310770號公報
[0018]專利文獻(xiàn)4:日本特開平5-108493號公報
【發(fā)明內(nèi)容】
[0019]在應(yīng)用上述的現(xiàn)有技術(shù)執(zhí)行高可靠應(yīng)用、低可靠應(yīng)用的情況下,多核處理器系統(tǒng)將高可靠應(yīng)用、低可靠應(yīng)用分開來進(jìn)行運(yùn)用。因此,存在應(yīng)用了現(xiàn)有技術(shù)的多核處理器系統(tǒng)難以將高可靠應(yīng)用和低可靠應(yīng)用混搭來加以運(yùn)用的這樣問題。
[0020]本發(fā)明為了消除上述現(xiàn)有技術(shù)中的問題點(diǎn),其目的在于,提供能夠?qū)⒏呖煽繎?yīng)用和低可靠應(yīng)用混搭來加以運(yùn)用的多核處理器系統(tǒng)。
[0021]為了解決上述的課題實(shí)現(xiàn)目的,根據(jù)本發(fā)明的一個方式,提出了一種多核處理器系統(tǒng),該多核處理器系統(tǒng)包括:多個CPU、存儲器以及被配置在多個CPU與存儲器之間的存儲器保護(hù)控制器,存儲器保護(hù)控制器在應(yīng)用程序執(zhí)行時根據(jù)多個CPU的訪問要求來訪問第I存儲器區(qū)域,并且訪問在系統(tǒng)啟動時確保的第2存儲器區(qū)域。
[0022]根據(jù)本發(fā)明的一個方式,取得了能夠?qū)⒏呖煽繎?yīng)用和低可靠應(yīng)用混搭來加以運(yùn)用的這樣的效果。
【專利附圖】
【附圖說明】[0023]圖1是表示本實(shí)施方式所涉及的多核處理器系統(tǒng)100在故障發(fā)生時的動作例與復(fù)原處理的動作例的說明圖。
[0024]圖2是表示多核處理器系統(tǒng)100的硬件例的框圖。
[0025]圖3是表示多核處理器系統(tǒng)100的功能例的框圖。
[0026]圖4是表示存儲器保護(hù)控制器106的內(nèi)部功能例的說明圖。
[0027]圖5是表示存儲器保護(hù)控制器106的登記例的說明圖。
[0028]圖6是表示多核處理器系統(tǒng)100在起動時的處理步驟的一例的流程圖。
[0029]圖7是表示多核處理器系統(tǒng)100在應(yīng)用切換時的處理步驟的一例的流程圖(其I )。
[0030]圖8是表示多核處理器系統(tǒng)100在應(yīng)用切換時的處理步驟的一例的流程圖(其2)。
[0031]圖9是表示多核處理器系統(tǒng)100在錯誤時的處理步驟的一例的流程圖。
[0032]圖10是表示使面向單核處理器系統(tǒng)的軟件在多核處理器系統(tǒng)中動作的情況的動作例的說明圖。
[0033]圖11是在多核處理器系統(tǒng)中調(diào)用在單核處理器系統(tǒng)中所調(diào)用的程序庫的情況的說明圖。
【具體實(shí)施方式】
[0034]下面,參照附圖來詳細(xì)地說明公開的多核處理器系統(tǒng)的實(shí)施方式。
[0035]圖1是表示本實(shí)施方式所涉及的多核處理器系統(tǒng)100在故障發(fā)生時的動作例和復(fù)原處理的動作例的說明圖。在圖1中,在以附圖標(biāo)記101表示的說明圖中,表示多核處理器系統(tǒng)100在故障發(fā)生時的動作例,在以附圖標(biāo)記102表不的說明圖中,表不多核處理器系統(tǒng)100的復(fù)原處理的動作例。
[0036]圖1中的多核處理器系統(tǒng)100包括為多個核的CPUsl03和存儲器104。多核處理器系統(tǒng)100假定為手機(jī)這樣的便攜終端。在CPUS103中,包括CPU # I和CPU # 2。以下,附加了接尾標(biāo)記“# η”的標(biāo)記表示與第η個CPU對應(yīng)的標(biāo)記。CPUsl03與存儲器104通過總線105而連接。此外,CPU # UCPU # 2能夠分別與存儲器保護(hù)控制器106 # 1、存儲器保護(hù)控制器106 # 2通信。
[0037]存儲器保護(hù)控制器106是進(jìn)行與2個方式中所指示的方式對應(yīng)的動作的裝置,該2個方式是指雙重訪問方式和訪問直通方式。在具有雙重訪問方式的指示的情況下,存儲器保護(hù)控制器106具有一邊訪問應(yīng)用原本的請求目的地地址一邊訪問受保護(hù)的存儲器區(qū)域內(nèi)的地址的功能。此外,在具有訪問直通方式的指示的情況下,存儲器保護(hù)控制器106訪問應(yīng)用原本的請求目的地地址。
[0038]此外,多核處理器系統(tǒng)100執(zhí)行低可靠應(yīng)用111和高可靠應(yīng)用112。具體而言,CPU
#I執(zhí)行低可靠應(yīng)用111, CPU # 2執(zhí)行高可靠應(yīng)用112。此外,多核處理器系統(tǒng)100在用戶區(qū)域121內(nèi),確保低可靠應(yīng)用存儲器區(qū)域122作為存放低可靠應(yīng)用111的內(nèi)容的區(qū)域。同樣地,多核處理器系統(tǒng)100在用戶區(qū)域121內(nèi),確保高可靠應(yīng)用存儲器區(qū)域123作為存放高可靠應(yīng)用112的內(nèi)容的區(qū)域。其中,所謂內(nèi)容是指成為CPU的寄存器的值的程序計數(shù)器、棧指針等這樣的應(yīng)用所使用的數(shù)據(jù)。
[0039]另外,多核處理器系統(tǒng)100確保成為不同于用戶區(qū)域121的區(qū)域的保護(hù)區(qū)域124,在保護(hù)區(qū)域124內(nèi),確保高可靠應(yīng)用存儲器區(qū)域125。高可靠應(yīng)用存儲器區(qū)域125存放與高可靠應(yīng)用存儲器區(qū)域123相同的數(shù)據(jù)。作為相同的數(shù)據(jù)的存放方法,CPU # 2在高可靠應(yīng)用112執(zhí)行的時機(jī),向存儲器保護(hù)控制器106 # 2進(jìn)行雙重訪問方式的登記。成為雙重訪問方式的存儲器保護(hù)控制器106 # 2在寫訪問發(fā)生的情況下,一邊將寫入內(nèi)容寫入高可靠應(yīng)用存儲器區(qū)域123,一邊還將該內(nèi)容寫入高可靠應(yīng)用存儲器區(qū)域125。
[0040]在以附圖標(biāo)記101表示的說明圖中,假定當(dāng)這樣在高可靠應(yīng)用存儲器區(qū)域123受到保護(hù)的狀態(tài)下,低可靠應(yīng)用111進(jìn)行不正確的寫入,破壞了高可靠應(yīng)用存儲器區(qū)域123的數(shù)據(jù)的情況。CPU # 2在執(zhí)行高可靠應(yīng)用112時打算并執(zhí)行讀入高可靠應(yīng)用存儲器區(qū)域123,但是高可靠應(yīng)用存儲器區(qū)域123的數(shù)據(jù)沒有表示正確的值,從而強(qiáng)制結(jié)束高可靠應(yīng)用112。例如,在高可靠應(yīng)用存儲器區(qū)域123的程序計數(shù)器被改寫為不正確的地址的情況下,CPU # 2打算執(zhí)行不正確的值作為執(zhí)行代碼,從而強(qiáng)制結(jié)束高可靠應(yīng)用112。
[0041]另外,除了由于進(jìn)行不正確寫入而強(qiáng)制結(jié)束高可靠應(yīng)用112的情況之外,還存在OS掛起的情況。通過圖9,對OS掛起的情況的動作進(jìn)行說明。
[0042]接著,在以附圖標(biāo)記102表示的說明圖中,表示數(shù)據(jù)破壞后的復(fù)原處理。當(dāng)CPU #2檢測到對高可靠應(yīng)用112發(fā)生了錯誤時,判定高可靠應(yīng)用112是否在執(zhí)行中。當(dāng)高可靠應(yīng)用112在執(zhí)行中的情況下,CPU # 2對高可靠應(yīng)用存儲器區(qū)域123與高可靠應(yīng)用存儲器區(qū)域125進(jìn)行比較,在存在差值的情況下,用高可靠應(yīng)用存儲器區(qū)域125覆寫高可靠應(yīng)用存儲器區(qū)域123。由此,進(jìn)行了不正確寫入的數(shù)據(jù)復(fù)原為正常的數(shù)據(jù),CPU # 2能夠繼續(xù)執(zhí)行高可靠應(yīng)用112,因此能夠保護(hù)高可靠應(yīng)用112。
[0043](多核處理器系統(tǒng)100的硬件)
[0044]圖2是表示多核處理器系統(tǒng)100的硬件例的框圖。在圖2中,多核處理器系統(tǒng)100包括:搭載有多個CPU的CPUsl03、R0M (Read Only Memory:只讀存儲器)201以及RAM(Random Access Memory:隨機(jī)訪問存儲器)202。此外,多核處理器系統(tǒng)100包括:快閃R0M203、快閃ROM控制器204以及快閃R0M205。另外,存儲器104可以是RAM202的全部,或者也可以是一部分。另外,存儲器104也可以包括R0M201、快閃R0M203以及快閃R0M205。
[0045]此外,多核處理器系統(tǒng)100包括顯示器206、I / F (Interface:接口)207以及鍵盤208,作為與用戶、其他設(shè)備之間的輸入輸出裝置。此外,各部分別通過總線105連接。
[0046]這里,CPUsl03管理多核處理器系統(tǒng)100的整體控制。CPUsl03是指將單核的處理器并列連接起來的全部的CPU。CPUS103包括CPU # I?CPU # X。其中,x是2以上的整數(shù)。此外,所謂多核處理器系統(tǒng),是指包括搭載有多個核的處理器的計算機(jī)的系統(tǒng)。搭載有多個核即可,可以是安裝有多個核的單一處理器,也可以是單核并列而成的處理器的處理器組。另外,在本實(shí)施方式中,以并列有作為單核的處理器的CPU為例進(jìn)行說明。
[0047]此外,CPU # I?CPU # X能夠分別與存儲器保護(hù)控制器106通信。另外,CPU
#I?CPU # X也可以分別具有專用的高速緩沖存儲器。
[0048]R0M201存儲有啟動(boot)程序等程序。RAM202作為CPUsl03的工作區(qū)域而使用。快閃R0M203存儲有OS (Operating System:操作系統(tǒng))等系統(tǒng)軟件、應(yīng)用程序軟件等。例如,在更新OS的情況下,多核處理器系統(tǒng)100通過I / F207接收新的OS,并將存放在快閃R0M203中的舊的OS更新為所接收的新的OS。
[0049]快閃ROM控制器204伴隨CPUsl03的控制,控制對快閃R0M205的數(shù)據(jù)讀/寫??扉WR0M205存儲通過快閃ROM控制器204的控制而寫入的數(shù)據(jù)。作為數(shù)據(jù)的具體例,也可以存放使用多核處理器系統(tǒng)100的用戶通過I / F207取得的圖像數(shù)據(jù)、影像數(shù)據(jù)或執(zhí)行本實(shí)施方式所涉及的軟件保護(hù)方法的程序??扉WROM205例如能夠采用存儲器卡、SD卡等。
[0050]顯示器206以光標(biāo)、圖標(biāo)或者工具欄為代表,顯示文本、圖像、功能信息等數(shù)據(jù)。例如,顯示器206能夠采用TFT液晶顯示器等。
[0051]I / F207 通過通信線路與 LAN (Local Area Network:局域網(wǎng)),WAN (Wide AreaNetwork:廣域網(wǎng))、因特網(wǎng)等網(wǎng)絡(luò)209連接,并經(jīng)由網(wǎng)絡(luò)209與其他的裝置連接。而且,I /F207對網(wǎng)絡(luò)209與內(nèi)部的接口進(jìn)行管理,并控制來自外部裝置的數(shù)據(jù)輸入輸出。在I /F207中,例如能夠使用調(diào)制解調(diào)器或LAN適配器等。
[0052]鍵盤208具有用于數(shù)字、各種指示等輸入的鍵,進(jìn)行數(shù)據(jù)的輸入。此外,鍵盤208也可以是觸摸面板式的書寫板或小鍵盤等。
[0053](多核處理器系統(tǒng)100的功能例)
[0054]接著,對多核處理器系統(tǒng)100的功能例進(jìn)行說明。圖3是表示多核處理器系統(tǒng)100的功能例的框圖。另外,多核處理器系統(tǒng)100能夠訪問高可靠白(white)列表301作為根據(jù)各功能訪問的存儲區(qū)域。
[0055]多核處理器系統(tǒng)100包括:確保部311、檢測部312、比較部313、通知部314、登記部315、檢測部316、檢測部317、比較部318以及復(fù)原部319。關(guān)于成為該控制部的功能(確保部311?復(fù)原部319),通過CPU # I?CPU # x執(zhí)行存儲在存儲裝置中的程序來實(shí)現(xiàn)其功能。所謂存儲裝置,具體而言是指例如圖2所示的R0M201、RAM202、快閃R0M203、快閃R0M205等?;蛘?,也可以通過其他的CPU經(jīng)由I / F207執(zhí)行來實(shí)現(xiàn)其功能。
[0056]此外,在圖3中,確保部311成為執(zhí)行高可靠應(yīng)用112的CPU # 2的功能,但是也可以是CPU # 1、CPU # 3?CPU # X中任意一個CPU的功能。此外,檢測部312?復(fù)原部319也可以是CPU # I?CPU # X的全部CPU所包含的功能。
[0057]另外,CPU # 2執(zhí)行管理程序# 2、OS # 2、內(nèi)核# 2。管理程序# 2是在CPU # 2等硬件上直接動作的程序。管理程序# 2是能夠執(zhí)行特權(quán)指令的程序,該特權(quán)指令是直接參照CPU # 2內(nèi)的寄存器、或者讀出CPU # 2內(nèi)的寄存器的信息、或者改寫CPU # 2內(nèi)的寄存器的信息的指令。內(nèi)核# 2是OS # 2的中核的功能,例如,能夠管理多核處理器系統(tǒng)100的資源,使線程等軟件能夠訪問硬件。
[0058]此外,雖然未圖示,但是OS # 2是控制CPU # 2的程序。例如,向應(yīng)用提供訪問多核處理器系統(tǒng)100內(nèi)的資源的程序庫、API (Application Programming Interface:應(yīng)用程序編程接口)等。
[0059]另外,雖然未圖示,但是CPU# 1、CPU# 3?CPU# X也執(zhí)行管理程序、OS、內(nèi)核。確保部311?通知部314、檢測部316被包含在內(nèi)核# 2的功能中,登記部315、檢測部317?復(fù)原部319被包含在管理程序# 2的功能中。
[0060]高可靠白列表301是登記規(guī)定應(yīng)用的列表。所謂登記的規(guī)定應(yīng)用,是指在多核處理器系統(tǒng)100中進(jìn)行了動作驗(yàn)證的高可靠應(yīng)用112。例如,高可靠應(yīng)用112是預(yù)先安裝在多核處理器系統(tǒng)100中的應(yīng)用。此外,也可以將制造多核處理器系統(tǒng)100的制造商,提供網(wǎng)絡(luò)209的通信運(yùn)營商等所提供的應(yīng)用登記為高可靠應(yīng)用。例如,當(dāng)從網(wǎng)絡(luò)209下載應(yīng)用時,在附帶有表示制造商或者通信運(yùn)營商所提供的情況的識別信息的情況下,多核處理器系統(tǒng)100也可以將下載的應(yīng)用登記到高可靠白列表301。[0061]另外,登記在高可靠白列表301的內(nèi)容例如也可以是應(yīng)用的名稱,此外在存在文件系統(tǒng)的情況下,也可以是存放應(yīng)用程序的文件路徑。
[0062]確保部311具有在系統(tǒng)啟動時確保第2存儲器區(qū)域的功能,該第2存儲器區(qū)域與在應(yīng)用執(zhí)行時多個CPU所訪問的第I存儲器區(qū)域?qū)?yīng)并且在多個CPU訪問第I存儲器區(qū)域時,同樣被訪問。其中,第I存儲器區(qū)域是成為執(zhí)行中應(yīng)用的訪問目的地的存儲器區(qū)域,為圖3所示的用戶區(qū)域121。此外,第2存儲器區(qū)域是成為保護(hù)用戶區(qū)域121的數(shù)據(jù)的區(qū)域的保護(hù)區(qū)域124。此外,作為確保第2存儲器的時機(jī),可以是系統(tǒng)啟動時,也可以是應(yīng)用被起動時。
[0063]此外,當(dāng)在多核處理器系統(tǒng)100中同時執(zhí)行的應(yīng)用的個數(shù)為N,在應(yīng)用執(zhí)行時被分配的存儲器區(qū)域?yàn)镸 [字節(jié)]的情況下,確保部311也可以根據(jù)NXM [字節(jié)]來確保第2存儲器區(qū)域的大小。例如,在Ν = 5,Μ=1 [Μ字節(jié)]的情況下,確保部311確保NXM = 5X1=5 [Μ字節(jié)]的區(qū)域作為用戶區(qū)域121。
[0064]此外,作為N的值,本實(shí)施方式所涉及的多核處理器系統(tǒng)100假定手機(jī)等,并且未假定同時起動多個應(yīng)用。作為N的最大值,例如,為8、16這樣的值。此外,N也可以是CPUsl03的個數(shù)。其中,所確保的區(qū)域的地址被存儲在CPU # 2的寄存器、高速緩沖存儲器、RAM202等存儲區(qū)域中。
[0065]檢測部312具有檢測起動應(yīng)用這樣的事件、結(jié)束應(yīng)用這樣的事件、或者切換應(yīng)用這樣的事件中的任意一個事件的功能。例如,檢測部312檢測起動了高可靠應(yīng)用112這樣的事件。另外,所檢測到的事件被存儲在CPU # 2的寄存器、高速緩沖存儲器、RAM202等存儲區(qū)域中。
[0066]比較部313具有:當(dāng)通過檢測部312檢測到事件的情況下,比較所執(zhí)行的應(yīng)用與登記在規(guī)定應(yīng)用列表中的應(yīng)用的功能。例如,比較部313比較所執(zhí)行的高可靠應(yīng)用112與登記在高可靠白列表301中的應(yīng)用。其中,比較結(jié)果被存儲在CPU # 2的寄存器、高速緩沖存儲器、RAM202等存儲區(qū)域中。
[0067]通知部314具有:當(dāng)比較部313進(jìn)行比較得到的比較結(jié)果表示一致時,針對來自所執(zhí)行的應(yīng)用的訪問,向管理程序# 2通知存儲器保護(hù)控制器106 # 2訪問第I存儲器區(qū)域和第2存儲器區(qū)域的指示的功能。例如,假定高可靠應(yīng)用112與登記在高可靠白列表301中的應(yīng)用表示一致的情況。這時,通知部314針對來自高可靠應(yīng)用112的訪問,向管理程序
#2通知存儲器保護(hù)控制器106 # 2訪問高可靠應(yīng)用存儲器區(qū)域123和高可靠應(yīng)用存儲器區(qū)域125的指示。
[0068]此外,當(dāng)比較部313進(jìn)行比較得到的比較結(jié)果表示不一致時,通知部314也可以針對來自所執(zhí)行的應(yīng)用的訪問,向管理程序# 2通知存儲器保護(hù)控制器106 # 2訪問第I存儲器區(qū)域的指示。
[0069]此外,當(dāng)應(yīng)用被起動且被起動的應(yīng)用的由比較部313比較得到的比較結(jié)果表示一致時,通知部314也可以通知在第2存儲器區(qū)域內(nèi)增加被起動的應(yīng)用所用的區(qū)域的指示。此夕卜,當(dāng)應(yīng)用結(jié)束且所結(jié)束的應(yīng)用的由比較部313比較得到的比較結(jié)果表示一致時,通知部314也可以通知解除第2存儲器區(qū)域內(nèi)結(jié)束了的應(yīng)用所用的區(qū)域的指示。另外,也可以將通知的內(nèi)容存儲在CPU # 2的寄存器、高速緩沖存儲器、RAM202等存儲區(qū)域。
[0070]登記部315具有向存儲器保護(hù)控制器106 # 2登記由通知部314通知的指示的功能。例如,登記部315在通知了作為第I訪問方式的雙重訪問方式的指示的情況下,向存儲器保護(hù)控制器106 # 2登記雙重訪問方式。具體而言,登記部315向存儲器保護(hù)控制器106
#2內(nèi)的寄存器進(jìn)行登記。
[0071]此外,登記部315在通知了作為第2訪問方式的訪問直通方式的指示的情況下,向存儲器保護(hù)控制器106 # 2登記訪問直通方式。另外,具體的登記內(nèi)容在圖4中進(jìn)行說明。另外,也可以將進(jìn)行了登記這樣的信息存儲在CPU # 2的寄存器、高速緩沖存儲器、RAM202等存儲區(qū)域中。
[0072]檢測部316具有檢測本CPU內(nèi)的強(qiáng)制結(jié)束了應(yīng)用情況的功能。例如,檢測部316檢測發(fā)生了表示訪問了不能訪問的存儲器的情況的段錯誤等并且強(qiáng)制結(jié)束了高可靠應(yīng)用112的情況。另外,強(qiáng)制結(jié)束了應(yīng)用這樣的信息被存儲在CPU # 2的寄存器、高速緩沖存儲器、RAM202等存儲區(qū)域中。
[0073]檢測部317具有檢測OS # 2掛起的情況的功能。例如,檢測部317對OS # 2進(jìn)行周期監(jiān)視,在沒有來自O(shè)S # 2的響應(yīng)的情況下,檢測OS # 2掛起的情況。另外,處于掛起中的OS成為異常狀態(tài),是沒有對請求進(jìn)行響應(yīng)的狀態(tài)。OS的掛起狀態(tài)也被稱為“內(nèi)核恐慌(kernel panic)”。另外,OS # 2掛起了的這樣的信息被存儲在CPU # 2的寄存器、高速緩沖存儲器、RAM202等存儲區(qū)域中。
[0074]比較部318具有:在檢測部316檢測到應(yīng)用的強(qiáng)制結(jié)束的情況下,或者在檢測部317檢測到OS # 2的掛起的情況下,對第I存儲器區(qū)域與第2存儲器區(qū)域進(jìn)行比較的功能。例如,比較部318對高可靠應(yīng)用存儲器區(qū)域123與高可靠應(yīng)用存儲器區(qū)域125的數(shù)據(jù)進(jìn)行比較。此外,比較部318在執(zhí)行中的應(yīng)用被登記在高可靠白列表301中的情況下,也可以比較第I存儲器區(qū)域與第2存儲器區(qū)域。另外,比較結(jié)果被存儲在CPU # 2的寄存器、高速緩沖存儲器、RAM202等存儲區(qū)域中。
[0075]復(fù)原部319具有根據(jù)比較部318比較得到的比較結(jié)果來復(fù)原第I存儲器區(qū)域的功能。例如,當(dāng)比較部318比較得到的比較結(jié)果表示不一致時,復(fù)原部319通過將比較結(jié)果的差值覆寫在第I存儲器區(qū)域上,來復(fù)原第I存儲器區(qū)域。另外,也可以將進(jìn)行了復(fù)原這樣的結(jié)果存儲在CPU # 2的寄存器、高速緩沖存儲器、RAM202等存儲區(qū)域中。
[0076]圖4是表示存儲器保護(hù)控制器106的內(nèi)部的功能例的說明圖。在圖4中,以存儲器保護(hù)控制器106 # I為例進(jìn)行說明,但是存儲器保護(hù)控制器106 # 2?存儲器保護(hù)控制器106 # X也包括與存儲器保護(hù)控制器106 # I相同的功能。存儲器保護(hù)控制器106 # I包括存儲部401 # 1、判定部402 # 1、轉(zhuǎn)換部403 # I。
[0077]存儲部401存儲對應(yīng)于存儲器保護(hù)控制器106的訪問方式和應(yīng)用的保護(hù)區(qū)域。具體而言,存儲部401 # I包括控制寄存器404 # 1、存放寄存器405 # I — I?存放寄存器405 # I —y。y為I以上的整數(shù)。
[0078]另外,作為具體的y的值,為CPU # I能夠同時執(zhí)行的應(yīng)用的個數(shù)的最大值即可。本實(shí)施方式所涉及的多核處理器系統(tǒng)100假定手機(jī)等,并且未假定如個人計算機(jī)那樣同時執(zhí)行多個應(yīng)用。因此,通過各CPU同時起動時的最大的應(yīng)用個數(shù)也成為未假定同時起動多個應(yīng)用的個數(shù)。其中,y為N以下的值。例如,y為4,或者8這樣的值。
[0079]控制寄存器404 # I包括訪問方式標(biāo)記、保護(hù)區(qū)域管理標(biāo)號這樣的2個字段。在訪問方式標(biāo)記字段中,存放表示對2處地址進(jìn)行訪問的雙重訪問方式或者進(jìn)行通常訪問的訪問直通方式中的任意一個的訪問方式信息的識別碼。例如,作為具體的識別碼,“I”也可以指代雙重訪問方式。當(dāng)對2處地址進(jìn)行訪問的情況下,在保護(hù)區(qū)域管理標(biāo)號字段中存放表示應(yīng)用存放寄存器405 # I — I?存放寄存器405 # I —y中的哪個存放寄存器405 # I的值。例如,當(dāng)在保護(hù)區(qū)域管理標(biāo)號字段中,存放了 “I”的情況下,轉(zhuǎn)換部403 # I使用存放寄存器405 # I — I的設(shè)定來進(jìn)行轉(zhuǎn)換。
[0080]存放寄存器405 # I — I?存放寄存器405 # I — y是按照每個應(yīng)用來存放保護(hù)區(qū)域的寄存器。此外,存放寄存器405 # I — I?存放寄存器405 # I — y分別對應(yīng)于管理標(biāo)號—I?管理標(biāo)號—y。接著,對存放寄存器405 # I的各字段進(jìn)行說明。存放寄存器405 # I包括:使用中位、應(yīng)用ID、掩碼地址、保護(hù)地址這樣的4個字段。
[0081]在使用中位字段中,存放表示該存放寄存器405 # I是否在使用中的位。在應(yīng)用ID字段中,存放通過CPU# I執(zhí)行中的應(yīng)用的識別信息。在掩碼地址字段中,存放表示應(yīng)用所訪問的存儲器范圍的地址。通過OS所具有的存儲器管理機(jī)構(gòu),來確定具體的存儲器范圍的大小。在保護(hù)地址字段中,存放通過CPU# I執(zhí)行中的應(yīng)用訪問保護(hù)區(qū)域的地址。另外,控制寄存器404 # 1、存放寄存器405 # I的具體的設(shè)定例之后在圖5中敘述。
[0082]判定部402 # I具有根據(jù)存儲在存儲部401 # I中的訪問方式信息來判定是否進(jìn)行地址轉(zhuǎn)換的功能。具體而言,如果訪問方式標(biāo)記字段是雙重訪問方式,則判定部402 # I對2處地址進(jìn)行訪問,如果訪問方式標(biāo)記字段是訪問直通方式,則判定部402直接訪問地址而不進(jìn)行地址轉(zhuǎn)換。
[0083]轉(zhuǎn)換部403 # I具有在通過判定部402 # I判定為雙重訪問方式的情況下,對一方的訪問目的地進(jìn)行地址轉(zhuǎn)換的功能。具體而言,轉(zhuǎn)換部403 # I參照與保護(hù)區(qū)域管理標(biāo)號字段中所設(shè)定的管理標(biāo)號對應(yīng)的存放寄存器405 # I的掩碼地址字段和保護(hù)地址字段,來進(jìn)行地址轉(zhuǎn)換。例如,轉(zhuǎn)換部403通過下述(I)式來對轉(zhuǎn)換后的地址進(jìn)行轉(zhuǎn)換。
[0084]轉(zhuǎn)換后的地址=轉(zhuǎn)換前的地址&掩碼地址+保護(hù)地址...(I)
[0085]具體而言,假定來自成為轉(zhuǎn)換前的地址的應(yīng)用的訪問目的地為0x05000100,掩碼地址字段為OxOOOOffff,保護(hù)地址字段為0x01000000的情況。這時,轉(zhuǎn)換部403根據(jù)(I)式,如以下那樣進(jìn)行轉(zhuǎn)換。
[0086]轉(zhuǎn)換后的地址=0x05000100& OxOOOOffff + 0x01000000 —轉(zhuǎn)換后的地址=0x01000100
[0087]另外,存儲器保護(hù)控制器106 # I也可以對來自CPU # I的讀請求訪問與寫請求訪問中的寫請求訪問進(jìn)行雙重訪問方式。其理由是,在沒有發(fā)生錯誤的狀態(tài)下,即便進(jìn)行與讀請求訪問相關(guān)的雙重訪問方式,也返回同一個值,因此,針對未進(jìn)行轉(zhuǎn)換的地址的讀訪問就足夠了。
[0088]圖5是表示存儲器保護(hù)控制器106的登記例的說明圖。圖5所示的多核處理器系統(tǒng)100執(zhí)行登記在高可靠白列表301中并成為高可靠應(yīng)用的應(yīng)用A、應(yīng)用C以及沒有登記在高可靠白列表301中并成為低可靠應(yīng)用的應(yīng)用B、應(yīng)用D、應(yīng)用E。應(yīng)用A和應(yīng)用B被分配給CPU # 1,應(yīng)用C?應(yīng)用E被分配給CPU # 2。進(jìn)而,CPU # I執(zhí)行應(yīng)用A,CPU # 2執(zhí)行應(yīng)用D0其中,應(yīng)用A?應(yīng)用E的應(yīng)用ID分別為0x0001,0x0002,0x0003,0x0004,0x0005o
[0089]內(nèi)核# I在OS啟動時,確保成為0x00000000?0x00500000的存儲器區(qū)域作為內(nèi)核占有區(qū)域501。接著,內(nèi)核# I在確保成為應(yīng)用的動作空間的用戶區(qū)域121之前,確保保護(hù)區(qū)域124。例如,假定多核處理器系統(tǒng)100的應(yīng)用同時執(zhí)行個數(shù)為N = 5,對于I個應(yīng)用所允許的存儲器大小M為I [M字節(jié)]。
[0090]這時,內(nèi)核#I 確保成為 NXM = 5X1 = 5[M 字節(jié)]的 0x01000000 ?0x0104ffff作為保護(hù)區(qū)域124。接著,內(nèi)核# I確保0x05000000?Oxffffffff作為用戶區(qū)域121。此夕卜,內(nèi)核# I對0x05000000-0x01000000 = 0x04000000進(jìn)行存儲,作為從用戶區(qū)域121向保護(hù)區(qū)域124的偏移地址(offset address)。另外,由于M= I [M字節(jié)],因此成為I個應(yīng)用所訪問的地址范圍的掩碼地址為OxOOOOfff。在本實(shí)施方式中,為了說明的簡單化,假定I個應(yīng)用訪問的地址范圍總是為固定的。
[0091]這時,保護(hù)區(qū)域124成為無法從應(yīng)用訪問的區(qū)域。因此,例如,在應(yīng)用A、應(yīng)用B想要通過OS # I訪問保護(hù)區(qū)域124的情況下,內(nèi)核# I發(fā)出表示訪問OS # I的管理外區(qū)域的情況的段錯誤。這樣,多核處理器系統(tǒng)100將保護(hù)區(qū)域124作為用戶區(qū)域121以外的區(qū)域,由此能夠防止通過低可靠應(yīng)用對保護(hù)區(qū)域124的不正確寫入。
[0092]另外,成為保護(hù)區(qū)域124的區(qū)域也可以不是連續(xù)范圍且不固定,只要存儲器保護(hù)控制器106能夠進(jìn)行管理即可,也可以通過分散來確保,還可以在多核處理器系統(tǒng)100的執(zhí)行中動態(tài)地進(jìn)行變化。在本實(shí)施方式中,為了說明的簡單化,以連續(xù)范圍且固定的方式對成為保護(hù)區(qū)域124的區(qū)域進(jìn)行說明。
[0093]此外,多核處理器系統(tǒng)100在起動應(yīng)用A?應(yīng)用E時,在用戶區(qū)域121內(nèi)確保存放各應(yīng)用的內(nèi)容的區(qū)域。具體而言,內(nèi)核# I在起動應(yīng)用A時確保應(yīng)用A存儲器區(qū)域502,在起動應(yīng)用B時確保應(yīng)用B存儲器區(qū)域503。此外,內(nèi)核# 2在起動應(yīng)用C時確保應(yīng)用C存儲器區(qū)域504,在起動應(yīng)用D時確保應(yīng)用D存儲器區(qū)域505,在驅(qū)動應(yīng)用E時確保應(yīng)用E存儲器區(qū)域506。應(yīng)用A存儲器區(qū)域502?應(yīng)用E存儲器區(qū)域506的開頭地址分別為0x05000000、0x05010000,0x05020000,0x05030000,0x05040000ο
[0094]此外,多核處理器系統(tǒng)100在起動高可靠應(yīng)用的情況下,在保護(hù)區(qū)域124內(nèi)也確保存儲器區(qū)域。具體而言,從內(nèi)核# I接受到指示的管理程序# I在起動應(yīng)用A時,確保應(yīng)用A存儲器區(qū)域507。
[0095]作為應(yīng)用A存儲器區(qū)域507的地址的設(shè)定方法,例如管理程序# I將從應(yīng)用A存儲器區(qū)域502的開頭地址減去對用戶區(qū)域121的偏移地址而得到的地址設(shè)定為應(yīng)用A存儲器區(qū)域507的開頭地址。具體而言,管理程序# I將應(yīng)用A存儲器區(qū)域502的開頭地址0x05000000-偏移地址0x04000000 = 0x01000000設(shè)定為應(yīng)用A存儲器區(qū)域507的開頭地址。
[0096]接著,管理程序# I在存放寄存器405 # I — I中設(shè)定值。具體而言,管理程序
#I在使用中位字段中設(shè)定使用中,在應(yīng)用ID字段中設(shè)定作為應(yīng)用A的應(yīng)用ID的0x0001。接著,管理程序# I在掩碼地址字段中設(shè)定OxOOOOffff,在保護(hù)地址字段中設(shè)定作為應(yīng)用A存儲器區(qū)域507的開頭地址的0x01000000。
[0097]同樣地,管理程序# 2在起動應(yīng)用C時,確保應(yīng)用C存儲器區(qū)域508。進(jìn)而,管理程序# 2在存放寄存器405 #2 — 1中設(shè)定值。具體而言,管理程序# 2在使用中位字段中設(shè)定使用中,在應(yīng)用ID字段中設(shè)定作為應(yīng)用C的應(yīng)用ID的0x0003。接著,管理程序# 2在掩碼地址字段中設(shè)定OxOOOOffff,在保護(hù)地址字段中設(shè)定作為應(yīng)用C存儲器區(qū)域508的開頭地址的0x01020000。[0098]在上述階段中,多核處理器系統(tǒng)100結(jié)束起動應(yīng)用的階段,并轉(zhuǎn)變到實(shí)際動作的狀態(tài)。CPU # I按照應(yīng)用A、應(yīng)用B、應(yīng)用A、...的順序執(zhí)行應(yīng)用。當(dāng)切換應(yīng)用事件發(fā)生并且CPU # I執(zhí)行應(yīng)用A時,由于在高可靠白列表301中登記有應(yīng)用A,因此內(nèi)核# I向管理程序# I發(fā)出指示,將訪問方式設(shè)定為雙重訪問方式。這時,內(nèi)核# I也將切換后的應(yīng)用ID包含在指內(nèi)容中。
[0099]接受了指示的管理程序# I向存儲器保護(hù)控制器106 # I登記雙重訪問方式。具體而言,管理程序# I將存儲器保護(hù)控制器106 # I的訪問方式標(biāo)記設(shè)定為雙重訪問方式。此外,管理程序# I將與所指示的應(yīng)用ID—致的存放寄存器405 # I的管理標(biāo)號設(shè)定為保護(hù)區(qū)域管理標(biāo)號字段。通過這樣的動作,多核處理器系統(tǒng)100與通過0S# I進(jìn)行應(yīng)用A、應(yīng)用B...的切換動作同步地,通過存儲器保護(hù)控制器106 # I進(jìn)行雙重訪問方式、訪問直通方式...的動作。
[0100]另外,通過該動作,當(dāng)應(yīng)用A在執(zhí)行中的情況下,多核處理器系統(tǒng)100對0x05000000和0x01000000這2個地址空間進(jìn)行訪問。通過2重訪問,存在總線訪問的性能劣化的可能性,但是對64 [位]系統(tǒng)的CPU通常進(jìn)行128 [位]帶寬的總線設(shè)定等,CPU訪問的帶寬為不全部使用總線的帶寬的大致的狀態(tài)。因此,在總線105內(nèi),通過與將2個64[位]的訪問集中為I個128 [位]的數(shù)據(jù)壓縮功能聯(lián)動,能夠避免總線訪問的性能的劣化。
[0101]同樣地,CPU # 2按照應(yīng)用C、應(yīng)用D、應(yīng)用E、應(yīng)用C、...的順序執(zhí)行應(yīng)用。例如,當(dāng)CPU # 2執(zhí)行應(yīng)用D時,由于在高可靠白列表301中沒有登記應(yīng)用D,因此發(fā)生切換應(yīng)用事件,內(nèi)核# 2向管理程序# 2發(fā)出指示,將訪問方式設(shè)定為訪問直通方式。這時,內(nèi)核# 2也將切換后的應(yīng)用ID包含在指示內(nèi)容中。接受到指示的管理程序# 2向存儲器保護(hù)控制器106 # 2登記訪問直通方式。具體而言,管理程序# 2將存儲器保護(hù)控制器106 # 2的訪問方式標(biāo)記設(shè)定為訪問直通方式。
[0102]接著,在圖6?圖9中,對進(jìn)行圖5中所說明的動作的流程圖進(jìn)行說明。另外,圖6所示的執(zhí)行起動時的處理步驟的一例的執(zhí)行主體也可以是CPU # I?CPU # X中任意一個CPU,但是為了說明的簡單化,假定CPU# I執(zhí)行的情況來進(jìn)行說明。此外,執(zhí)行圖7?圖9所示的切換應(yīng)用時的處理步驟和錯誤時的處理步驟的執(zhí)行主體是通過CPU # I?CPU # X的全部的CPU而執(zhí)行的,但是為了說明的簡單化,假定CPU # I執(zhí)行的情況來進(jìn)行說明。
[0103]圖6是表示多核處理器系統(tǒng)100在起動時的處理步驟的一例的流程圖。當(dāng)啟動開始(步驟S601)時,內(nèi)核# I起動存儲器管理機(jī)構(gòu)(步驟S602)。內(nèi)核# I通過存儲器管理機(jī)構(gòu),來確保NXM [字節(jié)]的地址空間(步驟S603)。
[0104]確保后,內(nèi)核# I向管理程序# I通知所確保的地址空間(步驟S604),進(jìn)行通常運(yùn)用(步驟S605),并結(jié)束起動時的處理。另外,作為通常運(yùn)用,是進(jìn)行用戶區(qū)域121的確保或者在啟動開始時起動所要起動的應(yīng)用。接受到地址空間的通知的管理程序# I將所通知的地址空間設(shè)定為保護(hù)區(qū)域124 (步驟S606),并結(jié)束起動時的處理。由此,多核處理器系統(tǒng)100能夠確保高可靠應(yīng)用的存儲器保護(hù)區(qū)域。
[0105]在圖7、圖8中表示多核處理器系統(tǒng)100在切換應(yīng)用時的處理步驟的一例。在圖7中表示內(nèi)核# I的處理步驟的一例,在圖8中表示管理程序# I的處理步驟的一例。
[0106]圖7是表示多核處理器系統(tǒng)100在切換應(yīng)用時的處理步驟的一例的流程圖(其I)。內(nèi)核# I判斷是否發(fā)生了事件(步驟S701)。在沒有發(fā)生事件的情況下(步驟S701:沒有發(fā)生事件),內(nèi)核# I在固定時間后,再次執(zhí)行步驟S701。另外,內(nèi)核# I也可以在固定時間中,執(zhí)行內(nèi)核# I的其他處理。
[0107]在發(fā)生了起動應(yīng)用事件的情況下(步驟S701:起動應(yīng)用事件),內(nèi)核# I判斷在高可靠白列表301中是否登記了已起動的應(yīng)用(步驟S702)。在已登記的情況下(步驟S702:是),內(nèi)核# I向管理程序# I通知管理標(biāo)號的增加指示(步驟S704)。另外,在步驟S704的處理中,內(nèi)核# I將已起動的應(yīng)用的應(yīng)用ID包含在指示內(nèi)容中。
[0108]通知后,內(nèi)核# I執(zhí)行通常時的處理(步驟S703),并轉(zhuǎn)移到步驟S701的處理。在沒有登記的情況下(步驟S702:否),內(nèi)核# I轉(zhuǎn)移到步驟S703的處理。另外,作為起動應(yīng)用事件在通常時的處理,例如是,在用戶區(qū)域121內(nèi),確保存放已起動的應(yīng)用的內(nèi)容的區(qū)域
的處理等。
[0109]在發(fā)生了結(jié)束應(yīng)用事件的情況下(步驟S701:結(jié)束應(yīng)用事件),內(nèi)核# I判斷在高可靠白列表301中是否登記有已結(jié)束的應(yīng)用(步驟S705)。在登記的情況下(步驟S705:是),內(nèi)核# I向管理程序# I通知管理標(biāo)號的解除指示(步驟S706)。另外,在步驟S706的處理中,內(nèi)核# I將已結(jié)束的應(yīng)用的應(yīng)用ID包含在指示內(nèi)容中。
[0110]通知后或者在沒有登記的情況下(步驟S705:否),內(nèi)核# I轉(zhuǎn)移到步驟S703的處理。另外,作為結(jié)束應(yīng)用事件在通常時的處理,例如是,解除在用戶區(qū)域121內(nèi)確保的、存放已結(jié)束的應(yīng)用的內(nèi)容的區(qū)域的處理等。
[0111]在發(fā)生了切換應(yīng)用事件情況下(步驟S701:切換應(yīng)用事件),內(nèi)核# I判斷在高可靠白列表301中是否登記有切換后的應(yīng)用(步驟S707)。在登記的情況下(步驟S707:是),內(nèi)核# I向管理程序# I通知雙重訪問方式指示(步驟S708)。另外,在步驟S708的處理中,內(nèi)核# I將切換后的應(yīng)用的應(yīng)用ID包含在指示內(nèi)容中。通知后,內(nèi)核# I轉(zhuǎn)移到步驟S703的處理。在沒有登記的情況下(步驟S707:否),內(nèi)核# I向管理程序# I通知訪問直通方式指示(步驟S709)。通知后,內(nèi)核# I轉(zhuǎn)移到步驟S703的處理。
[0112]另外,作為切換應(yīng)用事件在通常時的處理,例如有分派(dispatch)處理。所謂分派處理,是指將CPU的寄存器等退避到存放切換前的應(yīng)用的內(nèi)容的區(qū)域中,并將被退避到存放切換后的應(yīng)用的內(nèi)容的區(qū)域中的寄存器的值設(shè)定在CPU的寄存器中。
[0113]由此,多核處理器系統(tǒng)100對應(yīng)用的起動、結(jié)束、切換這樣的事件,能夠向存儲器保護(hù)控制器106指示設(shè)定變更。
[0114]圖8是表示多核處理器系統(tǒng)100在切換應(yīng)用時的處理步驟的一例的流程圖(其2)。另外,在圖8中,假定管理程序# I設(shè)定存儲器保護(hù)控制器106 # I內(nèi)的控制寄存器404
#1、存放寄存器405 # I。因此,在各步驟的說明中,為了說明的簡單化,省略設(shè)定目的地的寄存器為存儲器保護(hù)控制器106 # I內(nèi)的寄存器這樣的記述。
[0115]管理程序# I確認(rèn)指示內(nèi)容(步驟S801)。在指示內(nèi)容為管理標(biāo)號的增加指示的情況下(步驟S801:管理標(biāo)號的增加指示),管理程序# I判斷在存放寄存器405 # I —I?存放寄存器405 # I—y中是否存在未使用的存放寄存器405 # I (步驟S802)。
[0116]在存在未使用的存放寄存器405 # I的情況下(步驟S802:是),管理程序# I將發(fā)現(xiàn)的存放寄存器405 # I的使用中位字段設(shè)定為使用中(步驟S803)。接著,管理程序
#I將發(fā)現(xiàn)的存放寄存器405 # I的應(yīng)用ID字段設(shè)定為包含在指示內(nèi)容中的應(yīng)用ID (步驟S804)。另外,管理程序# I向發(fā)現(xiàn)的存放寄存器405 # I的保護(hù)地址字段設(shè)定未分配的地址(步驟S805),并轉(zhuǎn)移到步驟S801的處理。在不存在存放寄存器405 # I的情況下(步驟S802:否),管理程序# I轉(zhuǎn)移到步驟S801的處理。
[0117]另外,所謂在步驟S805的處理中的未分配的地址,是指在保護(hù)區(qū)域124內(nèi)沒有被分配為其他的高可靠應(yīng)用的存儲器區(qū)域的存儲器區(qū)域的地址。此外,在步驟S803?步驟S805的處理中,沒有掩碼地址字段的記述,但是假定本實(shí)施方式中的掩碼地址總是為固定值。因此,作為掩碼地址字段的設(shè)定場所,例如在前述的步驟S606中,管理程序# I在存放寄存器405 # I — I?存放寄存器405 # I — y的掩碼地址字段中設(shè)定OxOOOOffff。
[0118]在指示內(nèi)容為管理標(biāo)號的解除指示的情況下(步驟S801:管理標(biāo)號的解除指示),管理程序# I在存放寄存器405 # I —I?存放寄存器405 # I —y中,選擇應(yīng)用ID字段與包含在指示內(nèi)容中的應(yīng)用ID—致的存放寄存器405 # I (步驟S806)。選擇后,管理程序# I將所選擇的存放寄存器405 # I的保護(hù)地址字段的值設(shè)定為未分配的地址(步驟S807)。接著,管理程序# I將所選擇的存放寄存器405 # I的使用中位字段設(shè)定為未使用(步驟S808),并轉(zhuǎn)移到步驟S801的處理。
[0119]在指示內(nèi)容為雙重訪問方式指示的情況下(步驟S801:雙重訪問方式指示),管理程序# I將應(yīng)用ID字段與包含在指示內(nèi)容中的應(yīng)用ID—致的存放寄存器405 # I的管理標(biāo)號設(shè)定在保護(hù)管理標(biāo)號字段中(步驟S809)。接著,管理程序# I將訪問方式標(biāo)記設(shè)定為雙重訪問方式(步驟S810),并轉(zhuǎn)移到步驟S801的處理。
[0120]在指示內(nèi)容為訪問直通方式指示的情況下(步驟S801:訪問直通方式指示),管理程序# I將訪問方式標(biāo)記設(shè)定為訪問直通方式(步驟S811),并轉(zhuǎn)移到步驟S801的處理。這樣,多核處理器系統(tǒng)100對應(yīng)于應(yīng)用的起動、結(jié)束、切換這樣的事件,來變更對存儲器保護(hù)控制器106的設(shè)定,因此能夠與應(yīng)用的各事件同步地對訪問方式進(jìn)行變更。
[0121]接著,在圖9中,對錯誤時的處理步驟的一例進(jìn)行說明。在圖9所示的流程圖中,假定由于通過CPU # 2執(zhí)行的低可靠應(yīng)用的動作驗(yàn)證不充分,因此向其他的存儲器區(qū)域?qū)懭肓说涂煽繎?yīng)用,其結(jié)果發(fā)生了故障的情況。在由不良而引起的狀態(tài)中,具有兩種。
[0122]第I種狀態(tài)是由于單純的程序錯誤而使高可靠應(yīng)用結(jié)束的狀態(tài)。例如,在對于通過OS # I執(zhí)行的高可靠應(yīng)用,發(fā)生了錯誤的情況下,OS # I能夠檢測到錯誤的發(fā)生并向管理程序# I通知。第2種狀態(tài)是OS # I掛起的情況。當(dāng)OS # I掛起時,無法檢測高可靠應(yīng)用的故障狀態(tài)。因此,與OS # I獨(dú)立地動作的管理程序# I通過周期監(jiān)視,來檢測OS # I是否掛起。
[0123]圖9是表示多核處理器系統(tǒng)100在錯誤時的處理步驟的一例的流程圖。內(nèi)核# 2執(zhí)行低可靠應(yīng)用(步驟S901)。假定通過該執(zhí)行在用戶區(qū)域121中進(jìn)行不正確寫入從而發(fā)生了故障的情況。
[0124]在由于不正確寫入,導(dǎo)致發(fā)生了應(yīng)用強(qiáng)制結(jié)束等的輕微的故障的情況下,內(nèi)核# I檢測段錯誤(步驟S902)。檢測后,內(nèi)核# I暫時停止多核處理器系統(tǒng)100 (步驟S903),并向管理程序# I指示恢復(fù)通知(步驟S904)。
[0125]當(dāng)通過周期監(jiān)視,檢測到發(fā)生了 OS掛起等的重大故障的情況下,或者在指示了恢復(fù)通知的情況下,管理程序# I判斷在高可靠白列表301中是否登記有執(zhí)行中應(yīng)用(步驟S905)。在登記的情況下(步驟S905:是),管理程序# I對保護(hù)區(qū)域124內(nèi)的執(zhí)行中應(yīng)用的存儲器區(qū)域與用戶區(qū)域121內(nèi)的執(zhí)行中應(yīng)用的存儲器區(qū)域的數(shù)據(jù)進(jìn)行比較(步驟S906)。[0126]接著,管理程序# I判斷比較結(jié)果是否一致(步驟S907)。在不一致的情況下(步驟3907:否),管理程序# I對用戶區(qū)域121內(nèi)的執(zhí)行中應(yīng)用的數(shù)據(jù)進(jìn)行復(fù)原(步驟S908)。具體而言,管理程序# I將比較結(jié)果的差值覆寫在用戶區(qū)域121內(nèi)的執(zhí)行中應(yīng)用的存儲器區(qū)域中。由此,進(jìn)行了不正確寫入的數(shù)據(jù)復(fù)原為正常的數(shù)據(jù)。
[0127]當(dāng)在高可靠白列表301中沒有登記的情況下(步驟S905:否)、在比較結(jié)果一致的情況下(步驟S907:是)或者數(shù)據(jù)復(fù)原后,管理程序# I判斷0S# I是否在掛起中(步驟S909)。在掛起中的情況下(步驟S909:是),管理程序# I執(zhí)行0S# I的熱啟動(步驟S910),并結(jié)束錯誤時的處理。作為具體的熱啟動的方法,能夠應(yīng)用檢查點(diǎn)再啟動技術(shù)或休眠技術(shù)。
[0128]當(dāng)不在掛起中的情況下(步驟S909:否),管理程序# I向內(nèi)核# I通知多核處理器系統(tǒng)100的暫時停止解除(步驟S911),并結(jié)束錯誤時的處理。受理了暫時停止解除的內(nèi)核# I解除多核處理器系統(tǒng)100的暫時停止(步驟S912),并結(jié)束錯誤時的處理。這樣,當(dāng)由于不正確寫入引起的存儲器破壞的原因,而導(dǎo)致在高可靠應(yīng)用中發(fā)生錯誤的情況下,多核處理器系統(tǒng)100能夠復(fù)原數(shù)據(jù)并繼續(xù)進(jìn)行動作。
[0129]如以上說明的那樣,通過多核處理器系統(tǒng),確保與高可靠應(yīng)用訪問的第I存儲器區(qū)域不同的第2存儲器區(qū)域,并寫入相同的內(nèi)容。由此,即便低可靠應(yīng)用破壞第I存儲器區(qū)域而發(fā)生故障,多核處理器系統(tǒng)也能夠使用第2存儲器區(qū)域來恢復(fù),因此能夠?qū)⒏呖煽繎?yīng)用和低可靠應(yīng)用混搭來進(jìn)行執(zhí)行。
[0130]此外,本實(shí)施方式所涉及的多核處理器系統(tǒng)執(zhí)行的軟件保護(hù)方法能夠在多核處理器系統(tǒng)環(huán)境中安全地繼承單核處理器系統(tǒng)中的軟件資產(chǎn)。此外,本實(shí)施方式所涉及的多核處理器系統(tǒng)能夠在通常動作狀態(tài)下運(yùn)用,而不使例如在高可靠應(yīng)用執(zhí)行中不執(zhí)行低可靠應(yīng)用等這樣的、帶有偏見的不利的調(diào)度發(fā)生。此外,本實(shí)施方式所涉及的多核處理器系統(tǒng)在發(fā)生了故障的情況下發(fā)生恢復(fù)處理,在通常動作狀態(tài)不執(zhí)行負(fù)載所花費(fèi)的處理,因此整體的性能不會劣化。
[0131]此外,多核處理器系統(tǒng)能夠訪問存放規(guī)定的應(yīng)用的列表,也可以將所執(zhí)行的應(yīng)用與存放在列表中的應(yīng)用進(jìn)行比較。由此,多核處理器系統(tǒng)能夠判斷所執(zhí)行的應(yīng)用是否為高
可靠應(yīng)用。
[0132]此外,多核處理器系統(tǒng)在所執(zhí)行的應(yīng)用與存放在列表中的應(yīng)用一致的情況下,也可以按照訪問第I存儲器區(qū)域和第2存儲器區(qū)域的方式,在對應(yīng)于執(zhí)行應(yīng)用的CPU的存儲器保護(hù)控制器中進(jìn)行登記。由此,多核處理器系統(tǒng)能夠保護(hù)高可靠應(yīng)用的數(shù)據(jù)。
[0133]此外,多核處理器系統(tǒng)在所執(zhí)行的應(yīng)用與存放在列表中的應(yīng)用不一致的情況下,也可以按照訪問第I存儲器區(qū)域的方式,在對應(yīng)于執(zhí)行應(yīng)用的CPU的存儲器保護(hù)控制器中登記。由此,多核處理器系統(tǒng)針對可不進(jìn)行數(shù)據(jù)保護(hù)的低可靠應(yīng)用不保護(hù)數(shù)據(jù),能夠有效地使用用于數(shù)據(jù)保護(hù)而確保的保護(hù)區(qū)域。
[0134]此外,多核處理器系統(tǒng)也可以對本系統(tǒng)的異常檢測進(jìn)行響應(yīng),并根據(jù)第I存儲器區(qū)域和第2存儲器區(qū)域的比較結(jié)果,來復(fù)原第I存儲器區(qū)域。由此,多核處理器系統(tǒng)能夠恢復(fù)存在故障的應(yīng)用。
[0135]此外,多核處理器系統(tǒng)也可以將在多核處理器系統(tǒng)環(huán)境中進(jìn)行了動作驗(yàn)證的應(yīng)用作為高可靠應(yīng)用來保護(hù)。低可靠應(yīng)用存在自身破壞第I存儲器區(qū)域的情況,這時,即便通過存儲器保護(hù)控制器在第2存儲器區(qū)域中保護(hù)數(shù)據(jù),結(jié)果也破壞第2存儲器區(qū)域。在這種狀態(tài)下,即便復(fù)原第I存儲器區(qū)域的數(shù)據(jù),也會用被破壞的數(shù)據(jù)來覆寫,多核處理器系統(tǒng)無法進(jìn)行恢復(fù)。因此,多核處理器系統(tǒng)通過將驗(yàn)證為不存在不良的高可靠應(yīng)用作為對象,因此能夠恢復(fù)由于低可靠應(yīng)用的動作而發(fā)生的高可靠應(yīng)用的故障。
[0136]另外,在本實(shí)施方式所說明的多核處理器系統(tǒng)執(zhí)行的軟件保護(hù)方法中,說明了對象為應(yīng)用的情況,但是即便對象為程序庫,也能夠應(yīng)用本實(shí)施方式。
[0137]另外,本實(shí)施方式所說明的多核處理器系統(tǒng)執(zhí)行的軟件保護(hù)方法能夠通過在個人計算機(jī)或工作站等計算機(jī)上執(zhí)行預(yù)先準(zhǔn)備的程序來實(shí)現(xiàn)。此外,執(zhí)行軟件保護(hù)方法的軟件保護(hù)程序被記錄在能夠通過計算機(jī)讀取的硬盤、CD-ROM、DVD、存儲器卡等記錄介質(zhì)上,并通過計算機(jī)從記錄介質(zhì)中讀出,由此來執(zhí)行。此外也可以經(jīng)由因特網(wǎng)等的網(wǎng)絡(luò)來發(fā)布軟件保護(hù)程序。
[0138]此外,本實(shí)施方式所說明的存儲器保護(hù)控制器106也能夠通過標(biāo)準(zhǔn)單元與結(jié)構(gòu)化ASIC (Application Specific Integrated Circuit:專用集成電路)等面向特定用途的 IC(以下,簡單地稱為“ASIC”。)或FPGA等PLD (Programmable Logic Device:可編程邏輯器件)來實(shí)現(xiàn)。具體而言,例如,通過HDL記述對上述的存儲器保護(hù)控制器106的功能(存儲部401?轉(zhuǎn)換部403)進(jìn)行功能定義,對該HDL記述進(jìn)行邏輯合成,并給與ASIC和PLD,由此能夠制造存儲器保護(hù)控制器106。
[0139]附圖標(biāo)記說明:
[0140]# U # 2...CPU ;100...多核處理器系統(tǒng);104...存儲器;105...總線;
106...存儲器保護(hù)控制器;111...低可靠應(yīng)用;112...高可靠應(yīng)用;121...用戶區(qū)域;122...低可靠應(yīng)用存儲器區(qū)域;123...高可靠應(yīng)用存儲器區(qū)域;124...保護(hù)區(qū)域;
125...高可靠應(yīng)用存儲器區(qū)域;301...高可靠白列表;311...確保部;312...檢測部;
313...比較部;314...通知部;315...登記部;316...檢測部;317...檢測部;318...t匕較部;319...復(fù)原部。
【權(quán)利要求】
1.一種多核處理器系統(tǒng),其特征在于,包括: 多個CPU ; 存儲器;以及 存儲器保護(hù)控制器,其被配置在所述多個CPU與所述存儲器之間, 所述存儲器保護(hù)控制器在執(zhí)行應(yīng)用程序時根據(jù)所述多個CPU的訪問請求來訪問第I存儲器區(qū)域,并且訪問在系統(tǒng)啟動時被確保的第2存儲器區(qū)域。
2.根據(jù)權(quán)利要求1所述的多核處理器系統(tǒng),其特征在于,包括: 表,其存放規(guī)定應(yīng)用程序的列表;和 比較部,其比較被執(zhí)行的應(yīng)用程序與所述列表的應(yīng)用程序。
3.根據(jù)權(quán)利要求2所述的多核處理器系統(tǒng),其特征在于, 當(dāng)比較結(jié)果表示一致時,針對所述被執(zhí)行的應(yīng)用程序登記訪問所述第I存儲器區(qū)域和所述第2存儲器區(qū)域的指示。
4.根據(jù)權(quán)利要求2所述的多核處理器系統(tǒng),其特征在于, 當(dāng)比較結(jié)果表示不一致時,針對所述被執(zhí)行的應(yīng)用程序登記僅訪問所述第I存儲器區(qū)域的指示。
5.根據(jù)權(quán)利要求1至4中任意一項所述的多核處理器系統(tǒng),其特征在于, 響應(yīng)于本系統(tǒng)的異常的檢測,當(dāng)所述被執(zhí)行的應(yīng)用程序正在執(zhí)行時,根據(jù)所述第I存儲器區(qū)域與所述第2存儲器區(qū)域的比較結(jié)果來復(fù)原所述第I存儲器區(qū)域。
6.根據(jù)權(quán)利要求1至5中任意一項所述的多核處理器系統(tǒng),其特征在于, 所述規(guī)定應(yīng)用程序是在多核處理器系統(tǒng)環(huán)境中進(jìn)行了動作驗(yàn)證的應(yīng)用程序。
7.根據(jù)權(quán)利要求1至6中任意一項所述的多核處理器系統(tǒng),其特征在于, 當(dāng)所述多個CPU的個數(shù)為N,應(yīng)用程序執(zhí)行時被分配的所述存儲器的存儲器區(qū)域?yàn)镸字節(jié)時,所述第2存儲器區(qū)域的大小為NXM,其中,N為2以上的整數(shù),M為I以上的整數(shù)。
8.—種多核處理器系統(tǒng),其特征在于,包括: 多個CPU ; 存儲器;以及 存儲器保護(hù)控制器,其被配置在所述多個CPU與所述存儲器之間, 所述存儲器保護(hù)控制器在訪問方式信息表示第I訪問方式的情況下,執(zhí)行應(yīng)用程序中與對第I存儲器區(qū)域的訪問同樣地訪問第2存儲器區(qū)域, 所述存儲器保護(hù)控制器在訪問方式信息表示第2訪問方式的情況下,執(zhí)行應(yīng)用程序中僅訪問所述第I存儲器區(qū)域。
9.根據(jù)權(quán)利要求8所述的多核處理器系統(tǒng),其特征在于, 根據(jù)所述應(yīng)用程序與登記在列表中的應(yīng)用程序的比較結(jié)果來設(shè)定所述訪問方式信息。
10.根據(jù)權(quán)利要求9所述的多核處理器系統(tǒng),其特征在于, 當(dāng)所述比較結(jié)果表示一致時,所述訪問方式信息被設(shè)定為第I訪問方式, 當(dāng)所述比較結(jié)果表示不一致時,所述訪問方式信息被設(shè)定為第2訪問方式。
【文檔編號】G06F11/16GK103493022SQ201180069869
【公開日】2014年1月1日 申請日期:2011年3月28日 優(yōu)先權(quán)日:2011年3月28日
【發(fā)明者】山下浩一郎, 山內(nèi)宏真, 鈴木貴久, 栗原康志 申請人:富士通株式會社