發(fā)明領(lǐng)域
本發(fā)明涉及通常在微處理器中且特別在低功率微控制器單元中的存儲器保護的領(lǐng)域。
背景
本背景的呈現(xiàn)用于總地描述本公開的上下文的目的。就本背景包括目前已知的要素和不作為遞交時的現(xiàn)有技術(shù)的其他要素的工作而言,本描述既不明確地也不隱含地被承認(rèn)為針對本公開的現(xiàn)有技術(shù)。
許多處理器類型,包括許多微控制器單元(mcu),包含能夠獨立于處理器進行存儲器訪問的總線主設(shè)備/加速器。一個示例是直接存儲器訪問(dma)控制器。dma控制器是使其他硬件子系統(tǒng)(例如傳感器(其頻繁地被mcu使用))不被cpu干預(yù)而訪問系統(tǒng)存儲器的被共享的系統(tǒng)資源。實際上,當(dāng)cpu休眠時,dma能夠促進傳感器和系統(tǒng)存儲器之間的存儲器事務(wù)。這有利地使mcu在收集傳感器數(shù)據(jù)時消耗非常低量的功率。這對于由電池電源或其他低能量電源供電的mcu特別重要,例如增長的大量的物聯(lián)網(wǎng)(iot)裝置。
然而,dma控制器異步于cpu促進存儲器事務(wù)的能力在cpu睡眠時提出了安全挑戰(zhàn)。當(dāng)cpu不可用于實行訪問控制策略(或訪問掩碼)時,存在通過傳感器的安全漏洞的可能。因為所有通道對于可用的dma存儲器具有完整的視圖,依照它們對于系統(tǒng)存儲器的視圖以集裝箱化各個dma通道是不可能的。而且,攻擊者可以通過泄露的傳感器輸入用恒定的請求泛洪外圍總線來發(fā)動低級的拒絕服務(wù)攻擊。這足以壓制外圍總線的仲裁和調(diào)度機制以阻止處理器服務(wù)或控制另一外圍設(shè)備,例如機械致動器。或者這可以阻礙其他關(guān)鍵存儲器事務(wù)(例如攝像機饋送)的發(fā)生。
一種可能的解決方案是在每次外圍設(shè)備或其他硬件子系統(tǒng)嘗試使用dma時中斷cpu。一旦被喚醒,cpu能夠阻止缺少合適的安全屬性的任何存儲器訪問請求。但是這擊敗了上文討論的優(yōu)勢——使cpu能在處理器收集傳感器數(shù)據(jù)時睡眠。因為dma操作在被執(zhí)行,cpu不能保持睡眠。另一種可能的解決方案將要求rtos清除dma操作編程。這對于使用復(fù)雜的編程模型(例如存儲在系統(tǒng)存儲器中的命令連接列表)的dma操作成為一個挑戰(zhàn)。前述解決方案也將要求大的軟件開銷/介入而且極大地限制處理器的功率效率、性能和功能。
發(fā)明概述
本概述被提供以介紹在以下的具體實施方式和附圖中被進一步描述的主題。因此,本概述不應(yīng)該被認(rèn)為是描述實質(zhì)特征,也不應(yīng)該被用于限制所述主題的范圍。
描述了處理器以及使用該處理器的方法的實施例。各種硬件子系統(tǒng)作出或轉(zhuǎn)發(fā)存儲器訪問請求,而一個或多個非cpu存儲器可尋址保護單元(pu)在專用于硬件子系統(tǒng)作出或轉(zhuǎn)發(fā)那個請求的訪問保護策略的基礎(chǔ)上自主地允許或阻止那些請求。
附圖說明
參考以下描述以及附圖將能更好地理解本發(fā)明的這些和其他目標(biāo)、特征以及優(yōu)勢,在附圖中:
圖1是示出了處理器、總線主設(shè)備、外圍設(shè)備以及寄存器保護單元的集合的框圖;
圖2是示出了用于中央處理單元保護單元(cpupu)的訪問控制策略結(jié)構(gòu)的框圖;
圖3是示出了用于總線主設(shè)備保護單元(bmpu)的訪問控制策略結(jié)構(gòu)的框圖;
圖4是示出了用于外圍保護單元(ppu)的訪問控制策略結(jié)構(gòu)的框圖;
圖5是示出了ppu控制結(jié)構(gòu)索引拓?fù)涞目驁D;
圖6是示出了用于寄存器保護單元(rpu)的訪問控制策略結(jié)構(gòu)的框圖;
圖7是具體描述了存儲器訪問請求的組成部分的框圖;
圖8是具體描述根據(jù)本發(fā)明的一個實施例的硬件上下文的方面的框圖;
圖9是示出了安全屬性結(jié)構(gòu)的一個實施例的框圖;
圖10是示出了用于從cpu線程到主存儲器的訪問請求的守門過程的流程圖;
圖11是示出了用于從cpu線程或直接存儲器訪問(dma)通道到外圍設(shè)備的訪問請求的守門過程的流程圖;
圖12是示出了從ppu的視角看來用于到外圍設(shè)備的訪問請求的守門過程的流程圖;
圖13是示出了從bmpu的視角看來用于到外圍設(shè)備的訪問請求的守門過程的流程圖;
圖14是示出了執(zhí)行狀態(tài)、dma狀態(tài)和ppu訪問上下文的相互作用的時序圖。
具體實施方式
以下描述本發(fā)明的示例性的和說明性的實施例。為了清楚,并非在本說明書中描述實際實現(xiàn)的所有特征,因為本領(lǐng)域技術(shù)人員將理解,在任何這些實際實施例的開發(fā)中,為了實現(xiàn)特定的目標(biāo)而作出了多個實現(xiàn)的特定的決定,例如遵循系統(tǒng)相關(guān)和商業(yè)相關(guān)的約束,這些約束隨實現(xiàn)的不同而變化。此外,應(yīng)當(dāng)理解,此類開發(fā)努力可能是復(fù)雜且費時的,但對于獲益于本公開的本領(lǐng)域技術(shù)人員而言仍然是常規(guī)任務(wù)。對于優(yōu)選實施例的各種修改對于本領(lǐng)域技術(shù)人員將是顯而易見的,而且本文所定義的一般原理可被應(yīng)用到其它實施例。因此,本發(fā)明不旨在受限于本文中示出和描述的特定實施例,而應(yīng)被給予與本文中公開的原理和新穎特征一致的最廣范圍。
下文中所描述的實施例在應(yīng)用但不被限制到較低能量微控制器單元(mcu)時具有特定值。安全(受保護的)mcu應(yīng)用使用負(fù)責(zé)管理系統(tǒng)中的各種執(zhí)行上下文的管理程序或?qū)崟r操作系統(tǒng)(rtos)。正因如此,rtos本身形成了在活動時通常可以訪問所有系統(tǒng)存儲器的安全任務(wù)上下文。rtos控制在各種非安全用戶任務(wù)上下文之間的處理器執(zhí)行的切換。在一個實現(xiàn)中,這些用戶任務(wù)的每一個可以訪問系統(tǒng)存儲器的獨立子集。這使系統(tǒng)關(guān)鍵存儲器(例如rtos)免于受到每個用戶任務(wù)的影響,也使每個用戶任務(wù)免于受到其他用戶任務(wù)(集裝箱化)的影響。在具有兩個特權(quán)/安全水平的系統(tǒng)中,通過提高保護單元(pu)安全要求到特定的存儲器范圍,rtos屏蔽到給定的活動用戶任務(wù)的訪問。這個視角隨著每一個和每一次任務(wù)上下文切換而變化。
圖1示出了根據(jù)本發(fā)明的處理器100的一個實施例。處理器100包括中央處理單元(cpu)102、系統(tǒng)總線104以及通過總線互連108連接到總線104的多個總線主設(shè)備106和總線從設(shè)備(也被稱為總線矩陣)。系統(tǒng)總線104將cpu102連接至系統(tǒng)存儲器112。系統(tǒng)總線104配置為在處理器100的各種硬件子系統(tǒng)之間傳遞存儲器訪問請求160(圖6)。在一個實現(xiàn)中,總線包括攜載硬件上下文和子上下文標(biāo)識符以標(biāo)識形成存儲器訪問請求160的特定硬件子系統(tǒng)或資源的信號線。
總線主設(shè)備106是能夠啟動總線104上的事務(wù)的裝置。示例包括cpu102和直接存儲器訪問(dma)控制器110。總線從設(shè)備是接收來自于總線104的通信和命令但不啟動總線104上的事務(wù)的設(shè)備??偩€從設(shè)備的示例是諸如動態(tài)隨機存取存儲器(dram)或靜態(tài)隨機存取存儲器(sram)的系統(tǒng)存儲器(smem)112以及控制過程、接收輸入或產(chǎn)生輸出的存儲器映射的外圍設(shè)備114。對于通過外圍總線116連接到耦合至總線互連108的外圍總線橋118的外圍設(shè)備114,外圍總線橋118用作總線從設(shè)備。
如上所述,dma控制器110是總線主設(shè)備的一種類型。dma是計算機系統(tǒng)的一個長期存在的特點,允許存儲器事務(wù)在沒有cpu的輔助的情況下在某些硬件子系統(tǒng)(尤其是外圍設(shè)備)和計算機的主系統(tǒng)存儲器(例如隨機存取存儲器(ram))之間發(fā)生。缺少dma的可用性,存儲器轉(zhuǎn)移通常要求cpu執(zhí)行一個完整的讀或?qū)戄斎?輸出周期。在個人計算機中,聲卡、視頻卡以及驅(qū)動器頻繁地使用dma。在微控制器(mcu)中,傳感器和控制外圍設(shè)備頻繁地使用dma。
dma控制器110通常配備有多個通道120以服務(wù)多個硬件子系統(tǒng)的dma需求。每個通道120是對于使用通道120的硬件子系統(tǒng)的操作的可編程配置或上下文。多個通道120的可用性使cpu102能夠預(yù)編程多個配置。dma控制器110能夠通過仲裁和調(diào)度的機制和算法有效地從一個通道120切換至另一個。
作為dma控制器110的替代,dma可以通過總線主控來實施,在總線主控中總線主設(shè)備106而不是cpu102啟動事務(wù)。處理器100配備有總線仲裁機制以防止多個總線主設(shè)備106同時嘗試驅(qū)動總線104。
也可能有其他非dma總線主設(shè)備106,一些具有其自己的子上下文而不是dma通道120。例如,在一個實現(xiàn)中,集成圖形處理器具有多個內(nèi)部上下文,包括專用于圖形指令的一個和用于渲染紋理的另一個。
根據(jù)本發(fā)明的一個實施例,各種硬件子系統(tǒng)配備有保護單元(pu)。pu本身是硬件子系統(tǒng),其通過實行一組用于經(jīng)由系統(tǒng)存儲器地址(例如映射至系統(tǒng)存儲器的外圍設(shè)備)被訪問的系統(tǒng)存儲器和/或硬件子系統(tǒng)的訪問控制策略來充當(dāng)守門者。如在下文中進一步詳細(xì)描述的,每個訪問控制策略(其也能夠被稱為訪問掩碼)的范圍被限定至特定的軟件或硬件上下文。在一個實施例中,處理器100使用pu的多層系統(tǒng)以實行被不同程度的粒度表征的訪問控制策略。
pu定義了對于訪問存儲器中的各種界定的區(qū)域的要求。pu根據(jù)當(dāng)前活動處理器的執(zhí)行線程/任務(wù)(即,上下文)的安全屬性實施對這些存儲器區(qū)域的訪問限制。為了促進多個非安全上下文的執(zhí)行,為每一個上下文切換重新配置pu對于存儲器的視角。這可以被視為軟件控制的上下文切換。
一些處理器類型,例如微控制器單元(mcu),包含可以獨立于處理器進行存儲器訪問的總線主設(shè)備/加速器。一個示例是直接存儲器訪問(dma)控制器。dma控制器是可在rtos和各種用戶任務(wù)之間多用的共享系統(tǒng)資源。各種dma通道可與不同的軟件任務(wù)上下文相關(guān)聯(lián)。dma通道的配置通常在rtos上下文期間或在特定的用戶任務(wù)上下文期間發(fā)生。然而,一旦可操作,dma通道在與這些sw上下文異步的時刻變成活動的,且這在實行用于dma訪問的訪問控制策略中產(chǎn)生了挑戰(zhàn)。
在高水平層,cpu102配備有pu,在本文中被稱為cpupu150,一些技術(shù)人員愿意稱該pu為存儲器保護單元。cpupu150定義了對于訪問存儲器中的各種界定的區(qū)域的要求。cpupu150根據(jù)當(dāng)前活動的處理器執(zhí)行線程/任務(wù)(即,上下文)的安全屬性實施對這些存儲器區(qū)域的訪問限制。為了促進多個非安全上下文的執(zhí)行,為每一個上下文切換重新配置cpupu150對于存儲器的視角。這可以被視為軟件控制的上下文切換。
在中間水平層,大部分系統(tǒng)總線主設(shè)備106,包括dma控制器110,但不包括cpu102,配備有pu,在本文中被稱為總線主設(shè)備保護單元(bmpu)152。bmpu152被提供給能夠獨立于cpu102生成存儲器訪問的硬件模塊,例如二級處理器。一些總線主設(shè)備106,例如在啟動期間(在處理器100根據(jù)處理器的指令集架構(gòu)開始執(zhí)行指令之前)初始化系統(tǒng)的總線主設(shè)備,可能不會配備有bmpu152,因為假設(shè)它們不被預(yù)期可用于用戶軟件的直接使用。
在低水平層,外圍總線橋118配備有pu,在本文中被稱為外圍保護單元(ppu)154。最后,在更低水平層,要求在安全/非安全和/或有特權(quán)/無特權(quán)訪問之間的內(nèi)部界限的各個外圍設(shè)備156可配備有在本文中被稱為寄存器保護單元158的pu。
對于被引導(dǎo)朝向一些被作為目標(biāo)的資源(例如外圍設(shè)備)的存儲器訪問請求160,cpupu和bmpu應(yīng)用被粗糙水平的粒度表征的訪問控制策略。cpupu150或bmpu152通過其粗糙的過濾器允許的存儲器訪問請求160然后被一個或多個下游pu重新評估,該下游pu的訪問控制策略被相對更精細(xì)水平的粒度表征。例如,從總線主設(shè)備106裝置或cpu線程到配備有rpu158的外圍設(shè)備114的存儲器訪問請求160將受制于初始來自于cpupu150或bmpu152、隨后來自于ppu154且再次來自于rpu158的訪問控制策略管理。
在一個實現(xiàn)中,每個pu被合并至其相應(yīng)的硬件子系統(tǒng)內(nèi)。根據(jù)pu的守門功能,如果存儲器訪問請求160的源和安全屬性不滿足對于被作為目標(biāo)的存儲器區(qū)域的pu的訪問控制策略的要求,則每個pu阻止存儲器訪問請求160到達該pu相應(yīng)的硬件子系統(tǒng)。
而且在一個實現(xiàn)中,rtos編程安全管理單元(smu)162,即容納所有pu的而不是cpupu150的所有配置寄存器的配置外圍設(shè)備。smu162連接到將pu配置分配給每個bmpu152、一個或多個ppu154以及給任何rpu158的配置/狀態(tài)線164。配置/狀態(tài)線164還攜載狀態(tài)信息,包括從pu返回至smu162的任何錯誤信息。
圖2示出了用于cpupu102的訪問控制策略結(jié)構(gòu)166。根據(jù)一個實現(xiàn),cpu訪問控制策略結(jié)構(gòu)166包括多個訪問控制策略0..q168。分離的以及不同的訪問控制策略168被提供給每個線程或任務(wù),每個訪問控制策略168被關(guān)聯(lián)或被標(biāo)記線程id或其他軟件上下文標(biāo)識符170。隨著從在前的線程到隨后的線程的每個任務(wù)切換,實時操作系統(tǒng)(rtos)使得cpu102將隨后的線程的cpu線程id的索引編入至cpu訪問控制策略結(jié)構(gòu)166內(nèi),以選擇或檢索對應(yīng)的訪問控制策略168,訪問控制策略168然后被加載至cpupu150內(nèi)。
每個訪問控制策略168提供或關(guān)聯(lián)標(biāo)識可尋址系統(tǒng)存儲器的區(qū)域的多個存儲器區(qū)域0..n180(可尋址系統(tǒng)存儲器可包括映射至系統(tǒng)存儲器的外圍設(shè)備)以及與每個被標(biāo)識的存儲器區(qū)域相關(guān)聯(lián)的安全屬性182。安全屬性182可包括訪問是否被限定于有特權(quán)的和/或安全的線程、訪問是否是只讀的以及被處理器的和操作系統(tǒng)的架構(gòu)支持的任何其他訪問限制?!鞍踩珜傩浴笨砂c用于控制到被作為目標(biāo)的存儲器區(qū)域180的訪問的存儲器訪問請求160相關(guān)聯(lián)的任何屬性。
在一些實施例中,為cpu102提供多個cpupu,每個核至少有一個,或者在超線程的cpu中,每個虛擬核有一個cpupu??商峁┥踔粮嗟腸pupu以作為基于硬件的虛擬化支持的一部分。
圖3是示出了用于bmpu152的訪問控制策略結(jié)構(gòu)184的框圖,bmpu152用于支持硬件子上下文186的總線主設(shè)備106(例如dma控制器110)。bmpu152被連接、耦合、分配和/或合并至dma110或其他總線主設(shè)備106之中。
bmpu152提供了多個訪問控制策略0..p188給與其相關(guān)聯(lián)的總線主設(shè)備106或110的所有硬件子上下文186。在一個實現(xiàn)中,硬件子上下文186被攜載在總線信號線上的信號標(biāo)識,該信號在一個非常特定的實現(xiàn)中被稱為mastersid190信號。
有利地,對于硬件子上下文186(例如dma通道120)的精細(xì)粒度的支持使得處理器100盒狀放射或集裝箱化dma控制器110的每個通道120,從而使用通道1的硬件子系統(tǒng),例如,不能介入被通道0控制的存儲器或外圍設(shè)備。以此方式,bmpu152支持完全集裝箱化的dma通道操作。
如cpupu的訪問控制策略結(jié)構(gòu)166,bmpu的訪問控制策略結(jié)構(gòu)184提供或關(guān)聯(lián)標(biāo)識可尋址系統(tǒng)存儲器(其可包括映射至系統(tǒng)存儲器的外圍設(shè)備)的區(qū)域的多個存儲器區(qū)域0..n180以及與此相關(guān)聯(lián)的安全屬性182。但與cpupu的訪問控制策略結(jié)構(gòu)166不同的是,bmpu的訪問控制策略結(jié)構(gòu)184不按cpu線程區(qū)分訪問控制策略188。相反,bmpu的訪問控制策略結(jié)構(gòu)184按硬件子上下文186區(qū)分策略188。有利地,按dma通道120來實行策略,用于dma控制器110的bmpu152通過給予每個通道120系統(tǒng)存儲器112的限制的視角用于集裝箱化dma操作。bmpu152可被編程,例如,防止結(jié)合至通道1的外圍設(shè)備114訪問分配到結(jié)合至通道0的另一個外圍設(shè)備114的存儲器。
在服務(wù)外圍設(shè)備114或dma控制器110的bmpu152中,對應(yīng)于外圍設(shè)備114的存儲器區(qū)域通常配置為將對應(yīng)的存儲器訪問請求160傳遞至合適的ppu154。然而,在一些實現(xiàn)中,bmpu152可具有通道120,通道120完全阻止硬件子系統(tǒng)訪問外圍區(qū)域,從而始終防止存儲器訪問請求160通過該通道120到達外圍設(shè)備114。
對應(yīng)于不被專用的pu保護的系統(tǒng)存儲器112的存儲器區(qū)域配置有適于硬件子上下文186的被精細(xì)地調(diào)節(jié)的安全限制。當(dāng)dma控制器110被呈現(xiàn)有存儲器請求事務(wù)160時,dma控制器110為bmpu152提供其hw子上下文186,hw子上下文186是dma通道編號120,且bmpu(實時地)選擇合適的一組存儲器區(qū)域信息,因此bmpu能夠為給定的dma通道120實施特定的存儲器訪問權(quán)限。
bmpu152將總線主設(shè)備106的hw子上下文186的索引編入至bmpu訪問控制策略結(jié)構(gòu)184內(nèi)以為該總線主設(shè)備106標(biāo)識訪問控制策略188。當(dāng)bmpu152處理存儲器訪問請求160時,bmpu152將訪問請求160的被作為目標(biāo)的存儲器位置192和安全屬性194與訪問控制策略188進行比較,并且選擇性地允許或阻止請求160。bmpu152包含用于該主設(shè)備106的所有子上下文的訪問控制策略188,訪問控制策略188通過硬件上下文信號196被標(biāo)識和區(qū)分(圖7)。一旦bmpu152被配置,bmpu152就自主地實行其訪問控制策略198。這與cpupu150不同,cpupu150在每次cpu切換執(zhí)行至隨后的線程時被重新編程。bmpu152通過將區(qū)域?qū)傩耘c涉及諸如安全(armhnonsec信號)或特權(quán)水平(armhprot信號)的那些屬性的總線事務(wù)信號進行比較以實現(xiàn)訪問控制。
用于dma控制器110的bmpu152也設(shè)置穿過dma通道120之一的存儲器訪問請求160的安全屬性。在一個示例中,bmpu152配置為標(biāo)志整個一條通道120為總是有特權(quán)的。此外,該通道120結(jié)合至rtos。在rtos發(fā)出存儲器訪問請求160至dma控制器110之后,bmpu152斷言在系統(tǒng)總線104上的特權(quán)和/或安全線。然后,隨著存儲器訪問請求160成功穿過ppu154和/或rpu158,bmpu152具有本質(zhì)上的全訪問通過。
圖4是示出了用于ppu154的訪問控制策略結(jié)構(gòu)200的框圖。在描述該結(jié)構(gòu)200之前,應(yīng)當(dāng)注意ppu154可能有不同的類型。例如,ppu154的一種類型服務(wù)多個相對低速的外圍設(shè)備,例如在基于arm的實現(xiàn)中的基于高級外圍總線(apb)選擇的外圍設(shè)備。ppu154的另一種類型服務(wù)單個高速的外圍設(shè)備,例如在基于arm的實現(xiàn)中的高級高速總線(ahb)從屬外圍設(shè)備。這些不同可能導(dǎo)致不同的訪問控制策略結(jié)構(gòu)200將是顯而易見的。
關(guān)注圖4的實施例,ppu訪問控制策略結(jié)構(gòu)200被連接、耦合、分配和/或集成至外圍總線橋118或外圍設(shè)備156。根據(jù)多個硬件上下文0..m196,ppu訪問控制策略結(jié)構(gòu)200提供或被組織與每個硬件上下文196相關(guān)聯(lián)的一個或多個硬件子上下文0..p186、與每個硬件子上下文186相關(guān)聯(lián)的一個或多個存儲器區(qū)域0..n以及與每個存儲器區(qū)域0..n180相關(guān)聯(lián)的一組安全屬性182。例如,硬件上下文196的一個可以是特定的cpu核或虛擬核。另一硬件上下文196可以是dma控制器110,其具有多個通道120,每個通道120構(gòu)成一個硬件子上下文186。ppu154的范圍延伸至可訪問由ppu154服務(wù)的一組外圍設(shè)備114的所有總線主設(shè)備106。
當(dāng)被呈現(xiàn)有存儲器訪問請求160時,ppu154使用總線主設(shè)備(例如dma控制器110)和分配至dma通道的外圍設(shè)備的hw上下文和hw子上下文將索引編入至ppu訪問控制策略結(jié)構(gòu)內(nèi)。ppu154然后將訪問請求160的被作為目標(biāo)的存儲器位置192以及安全屬性194與訪問策略200進行比較并且選擇性地允許或阻止請求160。
圖5示出了該索引方法的一個實現(xiàn)。通過考慮外圍總線橋118通常服務(wù)多個外圍設(shè)備0..r114的事實,圖5向圖4添加了更多一層復(fù)雜性。因此,ppu訪問控制策略結(jié)構(gòu)200可以被表征為包括外圍設(shè)備區(qū)分的訪問控制策略0..r206的子上下文區(qū)分的組0..p204(在下文中“控制組”)的多個硬件上下文區(qū)分的群0..m202(在下文中“控制群”)。從另一個角度看,對外圍設(shè)備114的訪問被從合適的控制組204選擇的訪問控制策略208限制,合適的控制組204是從合適的控制群202選擇的,確保被選擇的訪問控制策略206對應(yīng)于合適的外圍設(shè)備114、合適的硬件子上下文186以及合適的硬件上下文196。
根據(jù)圖5的實現(xiàn),ppu154通過使用第一水平選擇邏輯210(例如一個復(fù)用器或一群復(fù)用器)為外圍設(shè)備選擇合適的訪問控制策略208以從每個控制群202中選擇已經(jīng)為給定的mastersid標(biāo)識符190創(chuàng)建的一組訪問控制策略204。每個被選擇的組212(或用于每個被選擇的組212的地址)然后被饋送至第二水平選擇邏輯214內(nèi),第二水平選擇邏輯214使用masterid標(biāo)識符216以選擇單獨的一組訪問控制策略218(或其地址)。單個被選擇的組218包括用于被外圍總線橋118服務(wù)的每個外圍設(shè)備114的獨立的策略。最后,第三水平選擇邏輯220使用外圍數(shù)字222(攜載在外圍選擇線上)以從單獨的被選擇的組218中選擇合適的訪問控制策略206(或其地址)。ppu154然后應(yīng)用被選擇的訪問控制策略206以阻止或允許存儲器訪問請求160。
將理解的是,存在許多等效的邏輯形式。例如,外圍數(shù)字222可以作為第一水平選擇邏輯210被使用,且硬件子上下文186可以作為第三水平選擇邏輯220被使用。在一個實施例中,選擇邏輯的每一層被同時應(yīng)用,與行、列以及表格屬性可以在數(shù)據(jù)庫中被使用以選擇特定的記錄的方式相似。
圖6示出了用于寄存器保護單元(rpu)的訪問控制策略結(jié)構(gòu)。rpu的訪問控制策略結(jié)構(gòu)224與ppu的訪問控制策略結(jié)構(gòu)200相似,除了寄存器區(qū)域226代替了ppu的存儲器區(qū)域180。在一些實施例中,rpu158也在位水平的粒度下提供保護。一個具體的應(yīng)用是用在控制通用io(gpio)的外圍設(shè)備。通常,這種外圍設(shè)備將具有32位寄存器,且每一個這種寄存器可涉及一些數(shù)量的io引腳。rpu然后定義為給定的hw子上下文集裝箱化各個引腳的多個訪問控制策略。
圖7示出了存儲器訪問請求160的組成部分,包括硬件上下文196字段或一組總線信號、安全屬性194字段或一組總線信號以及目標(biāo)存儲器位置192字段或一組總線信號。在一個實施例中,一個或多個存儲器訪問請求組成部分196、194、192被密封于在總線104上發(fā)送的數(shù)據(jù)分組內(nèi)。在另一實施例中,一個或多個存儲器訪問請求160組成部分196、194和192被攜載在系統(tǒng)總線104上且穿過總線互連108。
圖8是具體描述根據(jù)本發(fā)明的一個實施例的硬件上下文196的方面的框圖。至少,硬件上下文196涉及啟動了存儲器訪問請求160的主設(shè)備106(例如,cpu102、dma控制器110等等)。根據(jù)一個實現(xiàn),硬件上下文196包括主設(shè)備id或標(biāo)簽216。
主設(shè)備id/標(biāo)簽216可被表征為只提供硬件上下文196的外層。在該表征下,硬件上下文196也將包括內(nèi)層或硬件子上下文186。根據(jù)一個實現(xiàn),該內(nèi)層使用子上下文標(biāo)識符190被標(biāo)識,例如dma通道120。
圖9示出了安全屬性結(jié)構(gòu)194的一個實施例,安全屬性結(jié)構(gòu)194包括安全字段228、有特權(quán)字段230、非安全但只讀字段232以及無特權(quán)但只讀字段232。當(dāng)然,許多不同的安全結(jié)構(gòu)和架構(gòu)是可能的。如前面提到的,安全屬性194可以是用于控制對被作為目標(biāo)的存儲器區(qū)域180的訪問的與存儲器訪問請求160相關(guān)聯(lián)的任何屬性。
圖10是用于處理從cpu線程到主存儲器112的訪問請求160的守門程序的一個實施例的流程圖250。在框252中,cpu102中的核或虛擬核從第一線程切換至第二線程。該切換改變了軟件上下文。在框253中,響應(yīng)于軟件上下文切換,rtos標(biāo)識或選擇合適于該特定線程的訪問控制策略166,且重新編程cpupu150以使用cpupu150。當(dāng)?shù)诙€程在運行的一些時間(框254),第二線程請求到主存儲器112的存儲器訪問。在框256中,且在任何總線仲裁啟動之前,cpupu150實行訪問控制策略166以允許或阻止存儲器訪問請求160。如果cpupu150阻止請求160,則在框258中,cpupu150報告錯誤,錯誤之后被rtos處理。如果cpupu150允許請求160,則在框260中,cpu102為到系統(tǒng)總線104的訪問仲裁且發(fā)出到總線104的存儲器訪問請求160。主存儲器112不具有其自己的專用pu以用于對存儲器訪問請求160上應(yīng)用第二水平的守門。在框262中,訪問存儲器112。
圖11是用于處理從cpu線程或直接存儲器訪問(dma)通道120到外圍設(shè)備114的訪問請求160的守門程序的一個實施例的流程圖300。在框302中,cpu線程請求到dma連接的外圍設(shè)備的存儲器訪問。流程前進至框304。在總線仲裁啟動之前,cpupu150實行合適于發(fā)出了請求160的線程的訪問控制策略168以允許或阻止請求160。根據(jù)框306,如果cpupu150阻止了該請求,則在框308中cpupu150報告錯誤。如果cpupu150允許了該請求,則流程前進至框310。
在描述框310-312之前,注意來自bmpu152的獨立的存儲器訪問請求160。應(yīng)當(dāng)注意的是,流程圖300不旨在顯示框302和314中的動作均是相關(guān)的或均需要發(fā)生。使用一個流程圖300以示出來源于cpu102或另一總線主設(shè)備106的存儲器訪問請求160的處理旨在以簡明的方式示出相似的事件鏈如何跟隨兩種類型的請求160。
在框314中,bmpu152接收來自cpu102或其他硬件子系統(tǒng)的存儲器訪問請求160。bmpu152將硬件子上下文186的索引(例如dma通道標(biāo)識符190)編入至bmpu的訪問控制策略結(jié)構(gòu)184內(nèi)以選擇或檢索合適的訪問策略188。不需要索引主設(shè)備id/標(biāo)簽216,因為它隱含地與bmpu152相關(guān)聯(lián),bmpu152只存儲與它所連接的主設(shè)備id/標(biāo)簽216相關(guān)的訪問控制策略184。
bmpu152將安全屬性194和被作為目標(biāo)的存儲器位置與存儲在訪問控制策略188中的訪問策略配置信息進行比較以確定是否允許或阻止請求160。如果ppu154將是允許還是阻止請求160的最終仲裁者,則對于特定的硬件子上下文186,將關(guān)于外圍設(shè)備114的存儲器區(qū)域標(biāo)記為未檢查的(即,無施加的安全限制)。因此,訪問請求160通過。
根據(jù)框316,如果bmpu152阻止了該請求,則在框308中bmpu152報告錯誤。如果bmpu152允許了該請求,則流程前進至框310?,F(xiàn)在轉(zhuǎn)向框310-312,在框310中,相關(guān)的總線主設(shè)備106或cpu102仲裁對總線104的訪問且分派請求160至外圍設(shè)備114。在框318中,請求160被ppu154獲取,ppu154將硬件上下文196(包括硬件子上下文186,如果有的話)和外圍編號222的索引編入至ppu154的訪問控制策略結(jié)構(gòu)200內(nèi)以選擇或檢索合適的外圍訪問策略206。
值得注意的是,ppu154不需要能夠確定與硬件上下文196相關(guān)聯(lián)的實際的外圍設(shè)備114、cpu核或線程或存儲器訪問請求160的其他源。例如,處理器100可將與硬件上下文196相關(guān)聯(lián)的二進制值重新分配(綁定)至另一硬件資源。處理器100也可以將外圍編號222重新分配或綁定至不同的外圍設(shè)備114。ppu154不知道這樣的綁定,而是依賴于硬件上下文196(包括硬件子上下文186,如果有的話)以及外圍編號222以選擇或檢索合適的訪問控制策略206。另一方面,rtos追蹤硬件上下文196(包括硬件子上下文186,如果有的話)和相關(guān)聯(lián)的硬件資源之間以及外圍編號222和外圍設(shè)備114之間的關(guān)系。
因為ppu154不知道與cpu硬件上下文196相關(guān)聯(lián)的任何軟件線程,每次有軟件任務(wù)切換時,cpu102在ppu154處更新與cpu硬件上下文196相關(guān)聯(lián)的訪問控制策略320以匹配該線程。例如,剛好在作為安全實體運行的rtos線程變得不活動之前,cpu102更新ppu154和rpu158的與cpu硬件上下文196相關(guān)聯(lián)的訪問控制策略320以反映用于非安全用戶線程的期望的訪問控制策略。
在框322中,在檢索或選擇訪問控制策略206之后,ppu154對請求的安全屬性194和被作為目標(biāo)的存儲器位置與訪問控制策略206中的訪問策略配置信息進行比較以確定是否允許或阻止請求160。根據(jù)框322,如果ppu154阻止了請求,則在框308中ppu154報告錯誤。如果ppu154允許了請求,則流程前進至框312,其中滿足請求。
圖12是示出了從ppu154或rpu158的視角來看用于對外圍設(shè)備114的訪問請求160的守門過程的流程圖350。在框352中,ppu154或rpu158接收請求160以讀或?qū)懸粋€或多個外圍設(shè)備114寄存器或寄存器位。在框354中,ppu154(如果ppu154正在應(yīng)用守門程序350)使用masterid216、mastersid190以及peripheral_num222標(biāo)識符以將索引編入至ppu154的訪問控制策略結(jié)構(gòu)200內(nèi)以選擇或檢索定義到被作為目標(biāo)的外圍設(shè)備114的訪問權(quán)限的合適的訪問控制策略320??商娲?,rpu158(如果rpu154正在應(yīng)用守門程序350)使用masterid216以及mastersid190標(biāo)識符(但沒有peripheral_num222,因為外圍設(shè)備的范圍是其本身,不是也有其他外圍設(shè)備)以將索引編入至rpu158的訪問控制策略結(jié)構(gòu)200內(nèi)以選擇或檢索用于該外圍設(shè)備114的合適的訪問控制策略320。
在框356中,ppu154或rpu158將訪問請求160的特征(本文中稱為“安全屬性”)(例如,安全對非安全、數(shù)據(jù)對指令、讀對寫)與由用于被訪問請求160作為目標(biāo)的寄存器或寄存器位的訪問控制策略320提供的訪問限制進行比較。如果在框358中且基于該比較,允許訪問請求160,則在框360中,滿足訪問請求160。否則,在框308中,ppu154或rpu158報告錯誤。
圖13是示出了從bmpu152的視角看來用于到外圍設(shè)備114的訪問請求160的守門過程的流程圖400。在框402中,bmpu152接收訪問請求160。在框404中,bmpu152使用mastersid190標(biāo)識符以將索引編入至bmpu152的訪問控制策略結(jié)構(gòu)184內(nèi)以選擇或檢索訪問控制策略188以實施在給定的dma通道120上。在框406中,bmpu152將源屬性(例如,安全對非安全、數(shù)據(jù)對指令、讀對寫)與由用于被訪問請求160作為目標(biāo)的存儲器區(qū)域的訪問控制策略188提供的訪問限制進行比較。如果在框408中且基于該比較,允許訪問請求160,則在框410中,滿足訪問請求160。否則,在框308中,ppu154報告錯誤。
圖14是示出了執(zhí)行狀態(tài)、dma狀態(tài)和ppu訪問上下文的相互作用的時序圖412。頂部行示出了時序中的較早點414,在此時cpu102通過smu162預(yù)編程dma控制器110和bmpu152。隨后,dma控制器110配置為自主地、獨立于cpu102且沒有cpu102的干預(yù)地服務(wù)dma請求。同樣地,bmpu152配置為自主地、獨立于cpu102且沒有cpu102的干預(yù)地實行訪問控制策略184??墒挂恍ヾma請求優(yōu)先于其他請求之前的仲裁和調(diào)度機制確定在任何給定的時間哪一個dma通道120是活動的。在被cpu102預(yù)編程后,仲裁和調(diào)度機制也自主于cpu102起作用。
第二行示出了當(dāng)cpu102從第一非安全(ns)任務(wù)a轉(zhuǎn)變至休眠狀態(tài)、至安全(s)rtos活動狀態(tài)、至第二非安全(ns)任務(wù)b時的cpu執(zhí)行狀態(tài)416。任務(wù)a具有到存儲器和外圍設(shè)備的子集的訪問權(quán)限。任務(wù)a還可以訪問涉及dma通道0的dma配置寄存器。dma通道0同樣地可以訪問與任務(wù)a相同的存儲器和外圍設(shè)備的子集。任務(wù)b具有到存儲器和外圍設(shè)備的另一子集和到涉及dma通道1的dma配置寄存器的訪問權(quán)限。dma通道1同樣地可以訪問與任務(wù)b相同的存儲器和外圍設(shè)備的子集。rtos具有到所有存儲器、外圍設(shè)備以及所有dma通道120的dma配置寄存器的訪問權(quán)限。任務(wù)切換發(fā)生的每個時刻418,cpu102配置smu162以使用適于該任務(wù)的訪問控制策略來更新cpupu150、任何ppu154以及任何rpu158。
第三行通過示出獨立于cpu執(zhí)行狀態(tài)416的dma通道狀態(tài)450示出了cpu102和dma控制器110的異步操作。例如,當(dāng)任務(wù)a活動時、當(dāng)cpu102睡眠時以及當(dāng)rtos線程活動時,dma通道1被示為活動。當(dāng)cpu102睡眠時通道1的活動狀態(tài)示出了dma的硬件上下文196怎樣能在即使當(dāng)cpu102處于低功率不活動狀態(tài)時保持活動。
dma通道切換452至通道0(被如上討論的仲裁和調(diào)度機制驅(qū)動)被示為在與cpu執(zhí)行狀態(tài)450切換至任務(wù)b相同的時刻發(fā)生。另一dma通道切換454發(fā)生在任務(wù)b繼續(xù)運行時,該另一dma通道切換454也被如上討論的仲裁和調(diào)度機制驅(qū)動且這次返回至通道1。這些切換自主于cpu102且根據(jù)dma控制器110的仲裁和調(diào)度機制發(fā)生。
第四行(本身是一組行)是配置為不同通道120可訪問的外圍設(shè)備456的示例性圖解。在該特定的圖解中,當(dāng)dma通道1活動時,外圍設(shè)備p3、p5和p8被示為可訪問,而當(dāng)dma通道0活動時,只有外圍設(shè)備p0和p8被示為可訪問。第四行示出了這組可訪問的外圍設(shè)備456怎樣隨著每個dma通道切換而改變。
第五行根據(jù)硬件上下文196示出了ppu/rpu訪問上下文458,包括硬件子上下文186,以masterid216“點”mastersid190的形式被示出。該行示出了在存儲器映射的外圍設(shè)備114處的訪問上下文458能夠在任意時刻異步于處理器100在cpu102和各種dma通道120之間切換。此外,dma控制器110可要求訪問與任務(wù)a相同的外圍設(shè)備114。而且,cpu任務(wù),例如任務(wù)a,能夠提前調(diào)度其自己的dma操作,使得在任務(wù)a不再運行之后進行dma操作。尤其,ppu154或rpu158只知道m(xù)asterid216和mastersid190的數(shù)值編碼,不知道哪一個任務(wù)或通道與那些標(biāo)識符相關(guān)聯(lián)。
第六行通過與那些硬件上下文196相關(guān)聯(lián)的任務(wù)或特定的通道示出了ppu/rpu的訪問上下文460。因為rtos完全控制哪一個用戶任務(wù)上下文是活動的,并且能夠相應(yīng)地為每個切換更新處理器100和系統(tǒng)pu,在任何給定的pu處,以及rtos選擇將不同的軟件上下文綁定至該資源的時刻,rtos可只要求單個hw上下文資源196。例如,在該行的起始處,cpu任務(wù)a與cpu.0硬件上下文標(biāo)識符相關(guān)聯(lián)。之后,當(dāng)cpu102睡眠時,cpu任務(wù)a仍然與cpu.0硬件上下文標(biāo)識符相關(guān)聯(lián),即使任務(wù)a已經(jīng)完成。如上文指示的在對第五行的討論中,cpu任務(wù)a有可能已經(jīng)通過dma操作調(diào)用了之后呈現(xiàn)的訪問請求。這進一步示出了dma連接的外圍設(shè)備114的訪問上下文怎樣可以與cpu任務(wù)狀態(tài)異步。當(dāng)rtos變成活動的時,rtos變成與cpu.0硬件上下文標(biāo)識符相關(guān)聯(lián)。之后,cpu任務(wù)b變成與cpu.0硬件上下文標(biāo)識符相關(guān)聯(lián)。
盡管圖14示出了用于單核、單線程處理器100的簡化的時間線,本發(fā)明可適用于包含更復(fù)雜的架構(gòu)的實施例。在多核或多線程的處理器100中,每個核或虛擬核具有其自己的任務(wù)上下文。隨著核和其他硬件子系統(tǒng)使用外圍設(shè)備114調(diào)用事務(wù),那些事務(wù)被匯集在外圍總線116上。當(dāng)事務(wù)到達外圍總線116時,它們被串行化,正如它們在單核、單線程處理器100時那樣(除非外圍總線116提供多端口存儲器)。即使是多端口,每個端口每次只攜帶一個事務(wù),因此在簡單的和復(fù)雜的架構(gòu)中,可提供仲裁機制以按順序呈現(xiàn)這些事務(wù)。有利地,該串行化過程使得ppu154切換出任何給定的核所具有的不論什么訪問策略,且每個核隨著ppu154切換也能重新編程其自己的軟上下文或任務(wù)上下文。在具有多個外圍子系統(tǒng)的處理器100中,每個子系統(tǒng)具有其自己的ppu154,對ppu154的訪問能并行發(fā)生。在這種情形下,每個外圍子系統(tǒng)相互獨立于其他外圍子系統(tǒng)使事務(wù)串行化;且每個ppu154相互獨立于其他ppu154為其外圍子系統(tǒng)實現(xiàn)訪問控制。
需要注意的是,盡管外圍設(shè)備114通常配置為總線從設(shè)備,一些外圍設(shè)備114配置為總線主設(shè)備106,且一些類型的外圍設(shè)備114是具有從屬端口的總線主設(shè)備106。本發(fā)明適用于所有這些配置。在外圍設(shè)備114配置為總線主設(shè)備106但具有從屬端口的情況下,bmpu152控制對由外圍設(shè)備114生成的存儲器訪問請求160的訪問,且在外圍設(shè)備的從屬端口處的ppu154管轄嘗試訪問外圍設(shè)備114的存儲器訪問請求160。
上文公開的特定的實施例僅是示例性的,且本領(lǐng)域技術(shù)人員將理解其能夠容易地使用公開的概念和具體的實施例作為基礎(chǔ)以用于設(shè)計或修改其他結(jié)構(gòu)以實施與本發(fā)明相同的目的,且可在本申請中作出各種改變、替換和修改而不背離由所附的權(quán)利要求書中給出的本發(fā)明的范圍。