在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > SPARC V8處理器斷點調試的設計與實現研究

            SPARC V8處理器斷點調試的設計與實現研究

            作者: 時間:2017-06-04 來源:網絡 收藏

            在嵌入式的交叉調試過程中,開發(fā)人員的調試手段有斷點、觸發(fā)和跟蹤三種,其中斷點是經常使用的調試手段。開發(fā)人員使用斷點控制所要調試程序的運行和停止,使程序運行到自己想要調試的位置,通過觀察在斷點處的程序變量以及寄存器和存儲器的值,檢測所調試的程序運行是否正確。

            本文引用地址:http://www.biyoush.com/article/201706/348387.htm

              斷點按照其實現方法分為軟件斷點和硬件斷點,本文研究對象是軟件。對于不同的嵌入式處理器或調試工具而言,軟件斷點的實現方法基本一樣,都是通過在所要設置斷點的地址上將其內存內容替換為指令陷阱,當這個指令被執(zhí)行時就會產生軟件中斷,使處理器進入調試狀態(tài)(或監(jiān)控狀態(tài))。

              隨著嵌入式計算機應用的發(fā)展,目前大部分處理器都內嵌有高速緩存(Cache)和內存管理單元(),并由Cache、主存和磁盤構成三級存儲系統(tǒng)。交叉調試中斷點的實現與處理器中存儲系統(tǒng)的構成有緊密的關系。的存在使設置/移除斷點時要考慮斷點地址是虛擬地址還是物理地址,如果是虛擬地址則要進行虛實地址的轉換。Cache的存在使設置/移除斷點時要考慮Cache一致性的問題。如果所要設置的斷點地址被Cache命中,則當用特定指令替換斷點地址上的內存內容來實現斷點功能時,就會使主存上的內容與Cache對應單元中的內容不一致,從而造成Cache與主存的不一致問題。這些問題的存在直接影響斷點功能的正確實現。

              斷點功能是交叉調試器的重要組成部分,在開發(fā)交叉調試器的過程中不可避免地會遇到上述問題。本文分析了一款具有Cache和的SPARC V8處理器,主要研究其分級存儲系統(tǒng)對實現斷點功能的影響,提出了行之有效的解決辦法,并應用到該處理器的調試工具中。

            1 Cache和MMU引起的問題

            1.1 Cache引起的問題

              Cache是一種高速緩沖存儲器,在存儲系統(tǒng)的層次結構中引入Cache是為了解決CPU與主存之間的速度差異,以提高CPU工作效率。通過在主存和高速CPU之間設置一個小容量的高速存儲器,并在其中儲存一份CPU最近訪問的主存儲器“內容拷貝”,使CPU在重復讀取這部分內容時可以通過訪問Cache完成數據的讀寫。由于Cache的速度快于主存的速度,從而縮短了數據讀寫的等待時間,系統(tǒng)的整體性能也得到提高。但同時它又帶來了一些其他問題,如本文提到的一致性問題。

              Cache由控制部分和存儲器部分組成,如圖1所示,虛框內為控制部分??刂撇糠謱碜訡PU的數據讀寫請求傳遞給存儲器進行相應處理??刂撇糠值闹饕δ苁桥袛嘁L問的數據是否在Cache中命中。命中時進行Cache的尋址;未命中則按照替換策略將主存中的數據塊載入到Cache存儲器對應的數據塊中。

            在某個內存地址上設置軟件斷點時,用軟中斷指令替換設置斷點處的內存指令后,還要考慮該地址是否曾Cache命中,否則就會造成Cache不一致的問題。Cache數據與主存不一致是指:在采用Cache的系統(tǒng)中,同樣一個數據可能存在于Cache中,也存在于主存中,兩者數據相同則具有一致性,數據不相同就叫做不一致性。如果不能保證數據的一致性,則程序的運行就會出錯。因此實現軟件斷點必須解決Cache一致性問題。

            1.2 MMU引起的斷點調試問題

              現代計算機系統(tǒng)普遍采用了分級存儲與虛擬存儲技術相結合的存儲管理體系。虛擬存儲是在存儲層次結構基礎上,通過存儲器管理部件MMU進行虛擬地址和物理地址自動變換而實現的,對每個編程者是透明的。MMU主要完成以下工作:(1)虛擬地址到物理地址的映射;(2)存儲器訪問權限的控制;(3)設置虛擬存儲空間的Cache特性。

              在進行虛實地址轉換時,處理器發(fā)出虛擬地址給MMU并被鎖存于一個內部寄存器中。該虛擬地址與TLB中的虛擬地址標志進行比較。如果匹配,則TLB命中,物理地址可以直接產生;如果不匹配,則進行TLB行未命中處理,這時MMU會產生一個Table walk的動作,從CPU接管地址和數據總線,通過到主存查詢頁表的方法實現從虛擬地址到物理地址的轉換,同時通過替換算法將新的地址信息存于TLB中[1][5]。

              啟用MMU存儲管理單元的處理器上運行的程序采用虛擬地址,調試時設置的斷點地址用的是程序中的地址,也即虛擬地址。而CPU訪問數據或讀取指令的地址為物理地址。通常虛擬地址和物理地址不相同,調試器需用軟件實現從虛擬地址到物理地址的轉換,才能使斷點設置在對應的物理地址上,實現斷點調試的功能。

            2 存在問題的解決方法

              本文以一款SPARC V8結構的處理器為例,詳細分析如何解決層次存儲系統(tǒng)對斷點實現所產生的影響。該處理器包含了一個32位的整數單元(IU)、Cache子系統(tǒng)、SRMMU(SPARC reference MMU)、AMBA總線、存儲控制器、UART和Watchdog等。

              在該處理器的存儲系統(tǒng)中,采用了分離的指令Cache和數據Cache,即哈佛結構。哈佛結構消除了取數和取指之間的競爭,提高了Cache的命中率和處理器的性能。處理器存儲系統(tǒng)的組織方式為虛擬地址Cache,如圖2所示。在命中時可以省去MMU虛實地址轉換的時間。但虛擬Cache可能會導致同一物理地址有不同的虛擬地址來訪問,并且當系統(tǒng)進程切換時,同一虛擬地址可以指向不同的物理地址。因此在一個地址標識(Tag)中要增加一個進程標識(context number)。這樣多個進程的數據可以放在一個Cache中,由進程標識來確定Cache中各行的數據是屬于哪個進程。


            2.1 CACHE一致性問題的解決方法

              用軟中斷指令替換設置斷點處的內存指令實現斷點調試功能的同時,會造成Cache一致性的問題。雖然關掉Cache就可以解決一致性的問題,并且能夠減小程序開發(fā)的復雜度,但是一個高性能的系統(tǒng)是需要Cache的,關掉Cache會大大降低系統(tǒng)的性能。因此,可以采用以下方法解決設置/移除斷點時Cache一致性的問題:

              (1)利用MMU將可能出現一致性問題的存儲區(qū)設為Cache不能訪問的區(qū)域,即non-able area。這種方法雖然比較保守,完全與Cache的設計初衷相悖,但是這種方法最為保險。

              (2)讓存儲此斷點地址數據的Cache存儲單元失效,使CPU重新讀取主存的內容來更新Cache,保證Cache中的內容與主存的內容一致,以此來解決Cache一致性的問題。顯然第二種方法效率比第一種高,能夠發(fā)揮Cache的處理能力。

            在本文討論的SPARC架構處理器中,可以利用Cache Tag寄存器實現解決Cache一致性問題的第二種方案。通過檢測Cache Tag寄存器,判斷設置/移除斷點的地址是否曾Cache命中。如果Cache命中,則利用Cache Tag寄存器中的Valid有效位將存儲此地址數據的Cache行置為無效;如果沒有命中,則不對Cache做任何處理。

            在該處理器中,Cache可配置的模式有直接映射模式和2~4組相聯的多組映射模式;可選的替換算法是LRU、LRR和偽隨機。這里以直接相聯映射模式的指令緩存ICache為例,簡述如何利用Cache Tag寄存器解決設置/移除斷點時Cache的一致性問題。

            在直接相聯映射方式中,存儲器中的每個區(qū)大小與Cache存儲器的大小相等,區(qū)中的行與Cache存儲器中的行一一對應。Cache分為Tag部分和Data部分,Tag部分用來存儲標志位,與內存地址的標志位比較來判斷Cache是否命中;Data部分用來存儲與地址相對應的數據。如圖3所示,ITag寄存器中的Valid[7:0]表示IData中相應的word是否有效;W0~W7表示IData中一行有8個word。當在某個地址設置/移除斷點時,根據這個地址訪問相對應的ITag寄存器,找到相對應的行,并將該行的ATAG位及有效位Valid取出。將ATAG位與地址中的Tag位進行比較,如果兩者相等且對應的有效位為1,則表明訪問的指令/數據在Data中,即Cache命中。Cache命中時要將該有效位清0,使Cache中的該行失效,然后再進行內存指令的替換。如果不相等或有效位為0,則訪問的數據不在Data中,即Cache未命中,這時就直接進行內存指令的替換。


            本文通過使斷點地址命中的Cache失效的方法,使處理器訪問斷點地址時訪問主存,從而解決了斷點調試中Cache的一致性問題,并且最大程度地發(fā)揮了Cache的作用。

            2.2 MMU地址轉換問題的解決辦法

              處理器啟用MMU后,在調試器中設置軟件斷點產生了虛實地址轉換問題。該問題的解決方法就是根據MMU的工作原理,在調試器中實現虛擬地址與物理地址的轉換功能,取得虛擬地址對應的物理地址,并在該地址設置軟中斷指令,實現斷點調試的功能。

              本文研究的處理器選用SRMMU來管理內存。SRMMU采用頁式存儲管理,主存中的3級頁表用來存儲全部的地址轉換信息,通過頁表中頁表項的最低兩位ET來判斷是否要繼續(xù)查找頁表。SRMMU可實現不同級數的頁表的訪問,最少1級,最多4級[1]。

              SRMMU中虛擬地址到物理地址的轉換過程如圖4所示。虛擬地址Vaddr為所要設置/移除的斷點地址;CTP和CTXNR都是SRMMU的寄存器,其中CTP為進程表的首地址,CTXNR為進程號;頁表中的存儲項如為PTD(Page Table Descriptors),則PTD是指向下一級頁表的指針,如為PTE(Page Table Entry),則PTE是實地址的頁號。在查找過程中由CTP和CTXNR得到頁表的入口地址,讀取該地址的內存內容判斷是PTD還是PTE。如果得到PTE則不需再查找,這樣每頁有4GB的尋址空間;如果在level-1找到PTE,,則每頁有16MB的尋址空間;如果在level-2找到PTE,則每頁有256KB的尋址空間;如果在level-3找到PTE,則每頁有4KB的尋址空間;如果找不到PTE,則提示錯誤。得到PTE后,由PTE中的Physical Page Number加上虛擬地址Vaddr的offset偏移地址,就可以得出實際的物理地址。

            在實現斷點調試功能時,本文依據上述SRMMU虛實地址的轉換原理,實現了一個軟件SRMMU模塊,用于仿真處理器硬件SRMMU的頁表查詢處理過程,在調試器中實現了虛實地址轉換的功能。通過該方法,本文解決了斷點調試中MMU產生的虛實地址轉換問題,使設計的調試器可以正確處理用虛擬地址設置的斷點。

              為了提高存儲器的速度和存儲容量,目前大部分處理器中,既有MMU也有Cache。本文通過對Cache的工作原理和MMU執(zhí)行機制的詳細研究,分析了開發(fā)人員在實現斷點功能時所遇到的Cache一致性和MMU的地址轉換等問題,并以一款SPARC V8處理器為例,剖析了軟件斷點的實現方法,并成功應用到該處理器的調試器設計中。本文雖然僅討論SPARC V8架構的存儲系統(tǒng)設計對軟件斷點功能實現的影響,但對于研究其他采用層次存儲系統(tǒng)架構處理器的軟件斷點的設計實現也具有一定的參考價值。



            評論


            相關推薦

            技術專區(qū)

            關閉