TWI437488B - 微處理器及適用於微處理器之操作方法 - Google Patents
微處理器及適用於微處理器之操作方法 Download PDFInfo
- Publication number
- TWI437488B TWI437488B TW099125571A TW99125571A TWI437488B TW I437488 B TWI437488 B TW I437488B TW 099125571 A TW099125571 A TW 099125571A TW 99125571 A TW99125571 A TW 99125571A TW I437488 B TWI437488 B TW I437488B
- Authority
- TW
- Taiwan
- Prior art keywords
- address
- load
- store
- data
- storing
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3648—Software debugging using additional hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Debugging And Monitoring (AREA)
Description
本發明係關於微處理器,特別是關於微處理器所提供之除錯中斷點設備(debug breakpoint facilities)。
x86架構跟大部分微處理器架構一樣會提供程式設計者一種方法使得程式設計者能夠在一個或多個位址範圍的存取(access)路徑上指定除錯中斷點。具體而言,中斷點位址範圍係為虛擬位址範圍(在x86語法(parlance)中稱為線性位址)。在某些微處理器中,載入單元(load unit)執行檢查動作用以判斷一載入位址是否存取一中斷點範圍。
有時一載入指令(load)會跨越(span)兩條快取線,因此載入指令必須分成兩個片段(如第4圖所示),使得各個片段係沿著載入管線(load pipeline)傳送(send down)用以存取資料快取。第一片段係沿著載入管線傳送並使用初始載入位址與第一大小來存取資料快取,以便從第一相關快取線(implicated cache line)中取得資料,其中第一大小係指與第一片段有關之位元組數目。接著,第二片段係沿著載入管線傳送並使用一遞增後的初始載入位址與第二大小來存取資料快取,以便從第二相關快取線中取得資料,其中第二大小係指與第二片段有關之位元組數目。由於載入單元必須對照中斷點範圍檢查各個片段,所以上述情況會使得中斷點檢查變得更複雜,細節將在以下做進一步說明。
以下將提供一些習知技術資訊以便更了解本發明。各個載入佇列項目(load queue entry)包含一位址欄位之儲存空間。一開始,載入單元將載入虛擬位址(load virtual address)載入至位址欄位。載入單元接著將載入虛擬位址轉譯成載入實體位址(load physical address)以便存取資料快取,接著再將位址欄位中之虛擬位址替換為實體位址。在各個載入佇列項目中包含一單一位址欄位可有效降低載入佇列之儲存需求,並且可節省晶片之實際面積(real estate space)以及功率消耗。然而,單一位址欄位在快取線跨越(cache-line-spanning)/雙片段(two piece)載入情況下會產生問題,因為當載入管線處理第一片段時,單一位址欄位會重寫(clobber)虛擬位址,使得第二片段不再具有虛擬位址來執行中斷點檢查。
其中一種解決上述問題的方法就是在各個載入佇列項目中包含兩個位址欄位。如此,實體位址可被寫入至第二位址欄位用以避免重寫虛擬位址,或是各個位址欄位可對應至不同的片段使得各個片段具有自己的虛擬位址,並且可在不影響另一片段的情況下重寫自己的虛擬位址。然而此方法並不理想,因為第二位址欄位所佔用之額外的儲存空間會增加晶片之實際面積以及功率消耗。
為了避免額外的位址儲存空間,另一種解決方法就是再額外通過一次載入管線,即執行額外的管線循環(additional passes)。換言之,第一、第二片段係依序沿著載入管線傳送用以執行中斷點檢查,接著第一、第二片段係依序沿著載入管線傳送用以產生實體位址並存取資料快取。然而此方法也不甚理想,因為會降低整體的執行速度。
本發明提供一種微處理器,用以對一跨越快取線之載入/儲存指令執行一中斷點檢查,載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中資料之一第一片段係位於一第一快取線中,並且資料之一第二片段係位於一第二快取線中。微處理器包括一中斷點暫存器、一佇列以及具有一載入/儲存單元之一載入/儲存單元管線。中斷點暫存器用以儲存一中斷點位址。佇列包括複數佇列項目,佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中位址與載入/儲存指令有關,並且指標用以表示載入/儲存虛擬位址之一分頁位址部分與中斷點位址之一分頁位址部分是否相符合。載入/儲存單元管線耦接至中斷點暫存器與佇列,其中載入/儲存單元管線於一第一管線循環期間執行跨越快取線之載入/儲存指令以便透過一快取記憶體來存取資料之第一片段,並且載入/儲存單元管線於一第二管線循環期間執行跨越快取線之載入/儲存指令以便透過快取記憶體來存取資料之第二片段。其中在第一管線循環期間,載入/儲存單元使用載入/儲存虛擬位址來執行一第一片段中斷點檢查,將指標儲存至第二儲存空間,並且將一載入/儲存實體位址儲存至第一儲存空間,其中載入/儲存實體位址係由載入/儲存虛擬位址轉譯而成。其中在第二管線循環期間,載入/儲存單元使用來自第二儲存空間之指標與來自第一儲存空間之載入/儲存實體位址的一遞增分頁偏移部分,用以執行一第二片段中斷點檢查。其中載入/儲存單元不使用超過兩個管線循環來存取快取記憶體以及對載入/儲存指令執行中斷點檢查。其中只有佇列項目中之每一者中的第一儲存空間係用以儲存與載入/儲存指令有關之位址。
本發明提供一種適用於微處理器之操作方法。微處理器包括一快取記憶體用以對一跨越快取線之載入/儲存指令執行一中斷點檢查,載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中資料之一第一片段係位於一第一快取線中,並且資料之一第二片段係位於一第二快取線中。微處理器更包括一中斷點暫存器用以儲存一中斷點位址。微處理器更包括具有複數佇列項目之一佇列,佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中位址與載入/儲存指令有關,並且指標用以表示載入/儲存虛擬位址之一分頁位址部分與中斷點位址之一分頁位址部分是否相符合。微處理器更包括具有一載入/儲存單元之一載入/儲存單元管線。上述方法包括在一第一管線循環期間執行與資料之第一片段有關之一第一片段中斷點檢查,其中執行第一片段中斷點檢查之步驟包括比較中斷點位址與載入/儲存虛擬位址;將指標儲存至第二儲存空間;以及將一載入/儲存實體位址儲存至第一儲存空間,其中載入/儲存實體位址係由載入/儲存虛擬位址轉譯而成。上述方法更包括在一第二管線循環期間執行與資料之第二片段有關之一第二片段中斷點檢查,其中執行第二片段中斷點檢查之步驟包括檢查來自第二儲存空間之指標,並且比較中斷點位址之一分頁偏移部分與來自第一儲存空間之載入/儲存實體位址的一遞增分頁偏移部分。其中不使用超過兩個管線循環來存取快取記憶體以及對載入/儲存指令執行中斷點檢查。其中只有佇列項目中之每一者中的第一儲存空間係用以儲存與載入/儲存指令有關之位址。
本發明提供另一種微處理器,用以對一跨越快取線之載入/儲存指令執行一中斷點檢查,載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中資料之一第一片段係位於一第一快取線中,並且資料之一第二片段係位於一第二快取線中。微處理器包括一中斷點暫存器以及一載入/儲存單元。中斷點暫存器用以儲存一中斷點位址。載入/儲存單元耦接至中斷點暫存器。載入/儲存單元包括一分頁位址比較器、一第一分頁偏移比較器、一遞增器以及一第二分頁偏移比較器。分頁位址比較器比較載入/儲存虛擬位址之一分頁位址部分與中斷點位址之一分頁位址部分,用以產生一第一指標。第一分頁偏移比較器比較載入/儲存虛擬位址之一分頁偏移部分與中斷點位址之一分頁偏移部分,用以產生一第二指標。遞增器將載入/儲存虛擬位址之分頁偏移部分遞增一條快取線之大小,用以產生一遞增分頁偏移部分。第二分頁偏移比較器比較中斷點位址之分頁偏移部分與遞增分頁偏移部分,用以產生一第三指標。其中若第一指標係為真值並且第二與第三指標中之至少一者係為真值時,則載入/儲存單元表示載入/儲存指令之一中斷點。
本發明提供另一種適用於微處理器之操作方法,用以對一跨越快取線之載入/儲存指令執行一中斷點檢查,載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中資料之一第一片段係位於一第一快取線中,並且資料之一第二片段係位於一第二快取線中。微處理器包括一中斷點暫存器用以儲存一中斷點位址。上述方法包括:(1)比較載入/儲存虛擬位址之一分頁位址部分與中斷點位址之一分頁位址部分,用以產生一第一指標;(2)比較載入/儲存虛擬位址之一分頁偏移部分與中斷點位址之一分頁偏移部分,用以產生一第二指標;(3)將載入/儲存虛擬位址之分頁偏移部分遞增一條快取線之大小,用以產生一遞增分頁偏移部分;(4)比較中斷點位址之分頁偏移部分與遞增分頁偏移部分,用以產生一第三指標;以及(5)若第一指標係為真值並且第二與第三指標中之至少一者係為真值時,則表示載入/儲存指令之一中斷點。
本發明提供另一種微處理器,用以計算一指定之虛擬記憶體位址範圍的存取次數,其中存取指定之虛擬記憶體位址範圍的步驟包括執行一跨越快取線之載入/儲存指令,載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中資料之一第一片段係位於一第一快取線中,並且資料之一第二片段係位於一第二快取線中。微處理器包括一暫存器、一計數器、一佇列以及具有一載入/儲存單元之一載入/儲存單元管線。暫存器用以儲存一資訊,資訊用以指定一虛擬位址範圍,並且資訊包括一範圍位址用以指定一起始虛擬位址範圍,其中虛擬記憶體位址範圍係位於一虛擬記憶體分頁中。計數器用以儲存一計數值,計數值代表虛擬位址範圍之存取次數,並且虛擬位址範圍係由暫存器中之資訊所指定。佇列包括複數佇列項目,佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中位址與載入/儲存指令有關,並且指標用以表示載入/儲存虛擬位址之一分頁位址部分與中斷點位址之一分頁位址部分是否相符合。載入/儲存單元管線耦接至暫存器與佇列,其中載入/儲存單元管線於一第一管線循環期間將資料之第一片段載入/儲存至一快取記憶體或從快取記憶體中載入/儲存資料之第一片段,並且載入/儲存單元管線於一第二管線循環期間將資料之第二片段載入/儲存至快取記憶體或從快取記憶體中載入/儲存資料之第二片段。其中在第一管線循環期間,載入/儲存單元使用載入/儲存虛擬位址來判斷資料之第一片段是否落在虛擬位址範圍內,將指標儲存至第二儲存空間,並且將一載入/儲存實體位址儲存至第一儲存空間,其中載入/儲存實體位址係由載入/儲存虛擬位址轉譯而成。其中在第二管線循環期間,載入/儲存單元使用來自第二儲存空間之指標與來自第一儲存空間之載入/儲存實體位址的一遞增分頁偏移部分,用以判斷資料之第二片段是否落在虛擬位址範圍內。其中若載入/儲存單元判斷資料之第一與第二片段中之任一者係位於虛擬位址範圍內,則載入/儲存單元將計數器遞增。其中載入/儲存單元不使用超過兩個管線循環來存取快取記憶體以及判斷資料之第一與第二片段中之任一者是否位於虛擬位址範圍內。其中只有佇列項目中之每一者中的第一儲存空間係用以儲存與載入/儲存指令有關之位址。
本發明提供另一種適用於微處理器之操作方法,用以計算一指定之虛擬記憶體位址範圍的存取次數,其中存取指定之虛擬記憶體位址範圍的步驟包括執行一跨越快取線之載入/儲存指令,載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中資料之一第一片段係位於一第一快取線中,並且資料之一第二片段係位於一第二快取線中,微處理器包括一暫存器用以儲存一資訊,資訊用以指定一虛擬位址範圍並且包括一範圍位址用以指定一起始虛擬位址範圍,其中虛擬記憶體位址範圍係位於一虛擬記憶體分頁中,微處理器更包括一計數器用以儲存一計數值,計數值代表虛擬位址範圍之存取次數,並且虛擬位址範圍係由暫存器中之資訊所指定,微處理器更包括具有複數佇列項目之一佇列,佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中位址與載入/儲存指令有關,並且指標表示載入/儲存虛擬位址之一分頁位址部分與中斷點位址之一分頁位址部分是否相符合,微處理器更包括具有一載入/儲存單元之一載入/儲存單元管線。上述方法包括在一第一管線循環期間:(1)將資料之第一片段載入/儲存至一快取記憶體或從快取記憶體中載入/儲存資料之第一片段;(2)使用載入/儲存虛擬位址來判斷資料之第一片段是否位於虛擬位址範圍內;(3)將指標儲存至第二儲存空間;以及(4)將一載入/儲存實體位址儲存至第一儲存空間,其中載入/儲存實體位址係由載入/儲存虛擬位址轉譯而成。上述方法更包括在一第二管線循環期間:(5)將資料之第二片段載入/儲存至快取記憶體或從快取記憶體中載入/儲存資料之第二片段;(6)使用來自第二儲存空間之指標與來自第一儲存空間之載入/儲存實體位址的一遞增分頁偏移部分,用以判斷資料之第二片段是否落在虛擬位址範圍內;(7)若載入/儲存單元判斷資料之第一與第二片段中之任一者係位於虛擬位址範圍內,則將計數器遞增。其中不使用超過兩個管線循環來執行步驟(1)到(7)。其中只有佇列項目中之每一者中的第一儲存空間係用以儲存與載入/儲存指令有關之位址。
本發明提供另一種微處理器,用以禁止複數程式存取一指定之虛擬記憶體位址範圍,其中存取指定之虛擬記憶體位址範圍的步驟包括執行一跨越快取線之載入指令,載入指令指定一資料之一載入虛擬位址,其中資料之一第一片段係位於一第一快取線中,並且資料之一第二片段係位於一第二快取線中。微處理器包括一暫存器、一佇列以及具有一載入單元之一載入管線。暫存器用以儲存一資訊,資訊用以指定一虛擬記憶體位址範圍,並且資訊包括一範圍位址用以指定一起始虛擬記憶體位址範圍,其中虛擬記憶體位址範圍係位於一虛擬記憶體分頁中。佇列包括複數佇列項目,佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中位址與載入指令有關,並且指標用以表示載入虛擬位址之一分頁位址部分與中斷點位址之一分頁位址部分是否相符合。載入管線耦接至暫存器與佇列,其中載入管線於一第一管線循環期間從一快取記憶體中讀取資料之第一片段,並且載入管線於一第二管線循環期間從快取記憶體中讀取資料之第二片段。其中在第一管線循環期間,載入單元使用載入虛擬位址來判斷資料之第一片段是否落在虛擬記憶體位址範圍內,將指標儲存至第二儲存空間,並且將一載入實體位址儲存至第一儲存空間,其中載入實體位址係由載入虛擬位址轉譯而成。其中在第二管線循環期間,載入單元使用來自第二儲存空間之指標與來自第一儲存空間之載入實體位址的一遞增分頁偏移部分,用以判斷資料之第二片段是否落在虛擬記憶體位址範圍內。其中若載入單元判斷資料之第一與第二片段中之任一者係位於虛擬記憶體位址範圍內,並且程式禁止存取虛擬記憶體位址範圍,則載入單元禁止將資料載入至載入指令所指定之一目標暫存器。其中載入單元不使用超過兩個管線循環來讀取來自快取記憶體之資料的第一與第二片段以及判斷資料之第一與第二片段中之任一者是否位於虛擬記憶體位址範圍內。其中只有佇列項目中之每一者中的第一儲存空間係用以儲存與載入指令有關之位址。
本發明提供另一種適用於微處理器之操作方法,用以禁止複數程式存取一指定之虛擬記憶體位址範圍,其中存取指定之虛擬記憶體位址範圍的步驟包括執行一跨越快取線之載入指令,載入指令指定一資料之一載入虛擬位址,其中資料之一第一片段係位於一第一快取線中,並且資料之一第二片段係位於一第二快取線中,微處理器包括一暫存器用以儲存一資訊,資訊用以指定一虛擬記憶體位址範圍並且包括一範圍位址用以指定一起始虛擬記憶體位址範圍,其中虛擬記憶體位址範圍係位於一虛擬記憶體分頁中,微處理器更包括具有複數佇列項目之一佇列,佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中位址與載入指令有關,並且指標表示載入虛擬位址之一分頁位址部分與中斷點位址之一分頁位址部分是否相符合,微處理器更包括具有一載入單元之一載入管線。上述方法包括在一第一管線循環期間:(1)從一快取記憶體中讀取資料之第一片段;(2)使用載入虛擬位址來判斷資料之第一片段是否位於虛擬記憶體位址範圍內;(3)將指標儲存至第二儲存空間;以及(4)將一載入實體位址儲存至第一儲存空間,其中載入實體位址係由載入虛擬位址轉譯而成。上述方法包括在一第二管線循環期間:(5)從快取記憶體中讀取資料之第二片段;(6)使用來自第二儲存空間之指標與來自第一儲存空間之載入實體位址的一遞增分頁偏移部分,用以判斷資料之第二片段是否落在虛擬記憶體位址範圍內;(7)若載入單元判斷資料之第一與第二片段中之任一者係位於虛擬記憶體位址範圍內,並且程式無法存取虛擬記憶體位址範圍,則禁止將資料載入至由載入指令所指定之一目標暫存器。其中不使用超過兩個管線循環來執行步驟(1)到(7)。其中只有佇列項目中之每一者中的第一儲存空間係用以儲存與載入指令有關之位址。
為讓本發明之上述和其他目的、特徵、和優點能更明顯易懂,下文特舉出較佳實施例,並配合所附圖式,作詳細說明如下:
本發明提供一種能夠解決上述問題的方法,此方法不需使用額外的管線循環,而是需要在每個載入佇列項目中設置每個中斷點暫存器之一單一附加位元(single additional bit)以及需要些許的附加邏輯電路。本發明實施例具有以下幾點特徵:(1)中斷點範圍不能跨越分頁邊界(page boundaries);(2)兩個片段所具有之不同的位址位元不會被轉譯(虛擬轉譯成實體)。因此,只要兩條快取線位於相同的實體分頁,第一與第二片段中被轉譯的虛擬位址位元皆會與一中斷點範圍之對應位元相符或皆不相符。具體而言,當載入管線處理第一片段時(即對第一片段之虛擬位址執行中斷點檢查、產生實體位址、存取快取記憶體以及將載入佇列項目之位址欄位中的虛擬位址替換為實體位址),載入管線也將一命中分頁指標(hit_page indication)儲存至載入佇列項目中,上述命中分頁指標用以表示第一片段之虛擬分頁位元(即必須被轉譯用以取得實體分頁之虛擬位址位元)是否與對應之中斷點位址位元相符。當載入管線處理第二片段執行中斷點檢查時,載入管線使用命中分頁指標作為一替代指標(surrogate),用以取代比較第二片段之虛擬分頁位元與對應之中斷點位址位元的動作。值得注意的是,雖然虛擬位址在載入單元處理第一片段時已經被實體位址重寫,因而導致無法執行上述比較第二片段之虛擬分頁位元與對應之中斷點位址位元的動作,但藉由使用命中分頁指標,此種情況是可以接受的。
請參考第1圖,第1圖係為本發明實施例之微處理器100的方塊圖。微處理器100包括以管線型式耦接成之指令快取106、指令解碼器108、暫存器別名表(register alias table;RAT)134、保留站(reservation station)136以及執行單元138。執行單元138包括一記憶體子系統182,記憶體子系統182包括一載入佇列181、載入單元185、儲存佇列184以及儲存單元183。微處理器100也包括耦接至記憶體子系統182之資料快取186。微處理器100也包括耦接至執行單元138之中斷點暫存器162。微處理器100還包括耦接至暫存器別名表134、保留站136、中斷點暫存器162與執行單元138之重新排序緩衝器(reorder buffer;ROB)172。以下將配合第2~3圖以及第5~6圖描述載入單元185之細部運作。
請參考第2圖,第2圖係為本發明實施例之第1圖中微處理器100之載入單元185的方塊圖。載入單元185接收一載入指令與位址運算元並計算來自位址運算元中之一載入虛擬位址234。
第2圖顯示了第1圖中微處理器100之中斷點暫存器162。在一實施例中,中斷點暫存器162包含x86架構之除錯中斷點暫存器,使得程式設計者能夠藉由此除錯中斷點暫存器來指定一個或多個位址範圍。
第2圖顯示了第1圖中微處理器100之載入佇列181中的載入佇列項目222。載入佇列181包括複數載入佇列項目222,第2圖只顯示其中一個已被分配到一載入指令之載入佇列項目222,並且第1圖中微處理器100之保留站136將此載入指令發送至載入單元185。各個載入佇列項目222包含一位址欄位(address field)224、一第一指標欄位(first indicator field)228以及一第二指標欄位(second indicator field)226。第一指標欄位228表示載入指令之第一片段的載入虛擬位址234是否落在被指定在中斷點暫存器162中之任一中斷點位址範圍內。第二指標欄位226表示載入指令之第一片段的虛擬分頁位址位元(將在以下描述)是否與中斷點位址232中之一者的對應位元相符。
載入單元185中之轉譯查詢緩衝器(Translation Lookaside Buffer;TLB) 218根據所接收之載入虛擬位址234輸出一載入實體位址236,並且熟知虛擬記憶體系統技藝者應能理解,載入實體位址236具有被轉譯成實體分頁位址之載入虛擬位址234的虛擬分頁位址位元。2:1多工器208之一輸入端接收載入虛擬位址234,另一輸入端接收載入實體位址236。當載入單元185產生載入虛擬位址234時,載入單元185控制2:1多工器208用以將載入虛擬位址234載入至載入佇列項目222中的位址欄位224。當轉譯查詢緩衝器218產生載入實體位址236時,載入單元185將載入實體位址236載入至位址欄位224。
載入單元185包括分頁比較器204用以接收載入虛擬位址234之較高位元(upper bits)。在一實施例中,載入虛擬位址234之較高位元包括虛擬位址位元[47:12]。在4千位元組(KB)記憶體分頁的情況下,虛擬位址位元[47:12]係稱為虛擬分頁位址位元並且用以指定虛擬記憶體分頁。在一虛擬記憶體系統中,虛擬分頁位址位元係為必須由一虛擬記憶體分頁位址轉譯成一實體憶體分頁位址的位元。分頁比較器204也接收來自中斷點暫存器162之中斷點位址232。具體而言,分頁比較器204接收中斷點位址232之較高位元,並且上述中斷點位址232之較高位元對應至分頁比較器204所接收之載入虛擬位址234之較高位元。分頁比較器204比較載入虛擬位址234之較高位元與各個中斷點位址232之較高位元,並且產生一符合信號(match signal)252。若上述比較動作有產生符合結果,則符合信號252係為真值(true)。
載入單元185包括一2:1多工器212。2:1多工器212具有一輸入端接收分頁比較器204所輸出之符合信號252,而另一輸入端接收來自載入佇列項目222之第二指標欄位226的數值。控制邏輯電路248產生一第二片段控制信號(piece2 control signal)254用以控制2:1多工器212。第二片段控制信號254在處理第二片段這段期間係為真值,而在處理第一片段這段期間係為偽值(false)。因此,當載入指令之第一片段被處理時,第二片段控制信號254會控制2:1多工器212選擇符合信號252;而當載入指令之第二片段被處理時,第二片段控制信號254會控制2:1多工器212選擇第二指標欄位226。2:1多工器212將所選擇之輸入值提供至一命中分頁輸出(hit-page output)262。當載入單元185在處理第一片段時,控制邏輯電路248會使得命中分頁輸出262的值被載入至載入佇列項目222中之第二指標欄位226。
載入單元185也包括一遞增器216用以接收來自載入佇列項目222之位址欄位224的較低位元(lower bits)。在一實施例中,較低位元包括位元[11:0]。由於位元[11:0]用以指定一4千位元組分頁中之偏移量,因此位元[11:0]係稱為偏移位元(offset bits)。遞增器216將偏移位元的最低有效快取線位元遞增,並且藉由此遞增動作連帶將其他較低/偏移位元遞增。在一實施例中,一條快取線的大小係為64位元,因此位元[5:0]用以指定一快取線中之偏移量,而位元[6]即為最低有效快取線位元。遞增器216將遞增結果238輸出至2:1多工器214之一輸入端。2:1多工器214之另一輸入端接收載入虛擬位址234之對應的較低/偏移位元。當載入指令之第二片段被處理時,第二片段控制信號254會控制2:1多工器214選擇遞增結果238;而當載入指令之第一片段被處理時,第二片段控制信號254會控制2:1多工器214選擇載入虛擬位址234之較低/偏移位元。2:1多工器214將所選擇之輸入值提供至一輸出端,該輸出端為較低/偏移位元255。
載入單元185也包括偏移量比較器206用以從2:1多工器214的輸出端接收較低/偏移位元255。偏移量比較器206也接收中斷點位址232之較低位元以及來自中斷點暫存器162的資訊,其中上述中斷點位址232之較低位元對應至來自2:1多工器214的較低/偏移位元255,並且上述資訊係顯示中斷點虛擬位址範圍之大小。偏移量比較器206比較所接收的位元並產生一命中偏移信號(hit-offset signal)264。若上述比較動作有產生符合結果(即較低/偏移位元255落在任一被指定在中斷點暫存器162中的範圍內),則命中偏移信號264係為真值。在一實施例中,偏移量比較器206只會比較位元[11:2]並且另外檢查與載入指令以及中斷點位址232有關之位元組致能(byte enables),用以產生命中偏移信號264。
雙輸入及閘(2-input AND Gate) 242接收命中分頁輸出262與命中偏移信號264用以產生一brk1or2信號266。若第一片段之載入虛擬位址234落在被指定在中斷點暫存器162中之任一中斷點位址範圍內,則brk1or2信號266在處理第一片段這段期間係為真值。若第二片段之載入虛擬位址234(實際上是第一片段之具有已遞增之最低有效快取線位元的載入虛擬位址234)落在被指定在中斷點暫存器162中之任一中斷點位址範圍內,則brk1or2信號266在處理第二片段這段期間係為偽值。當載入單元185在處理第一片段時,控制邏輯電路248會使得brk1or2信號266的值被載入至載入佇列項目222中之第一指標欄位228。
雙輸入或閘(2-input OR Gate) 244接收brk1or2信號266與來自載入佇列項目222之第一指標欄位228的數值,用以產生一結果信號268。雙輸入及閘246接收第二片段控制信號254與雙輸入或閘244所輸出之結果信號268,用以產生一brk信號272。因此在處理第二片段這段期間,若第一或第二片段中之任一者觸發一中斷點,則雙輸入及閘246會產生一為真值之brk信號272。雙輸入及閘246將brk信號272提供至第1圖的微處理器100中之重新排序緩衝器172,並且重新排序緩衝器172根據所接收之brk信號272設置與載入指令有關之一項目中的位元,使得微處理器100可在載入指令準備引退時執行(take)一除錯中斷點異常(debug breakpoint exception)。
請參考第3圖,第3圖係為包含第2圖之載入單元185之第1圖的微處理器100的操作流程圖。流程從步驟302開始。
在步驟302中,一程式設計者使用一個或多個中斷點位址範圍來設定中斷點暫存器162。流程前進至步驟304。
在步驟304中,載入單元185接收一載入指令,其中此載入指令跨越一快取線邊界但不跨越一分頁邊界。載入單元185根據所接收之載入指令,將載入指令之第一片段沿著載入管線傳送用以進行處理。在一實施例中若載入指令跨越兩個分頁,則載入單元185執行上述較慢的方法(即使用額外的管線循環)。流程同時前進至步驟306與312。
在步驟306中,載入單元185對第一片段之載入虛擬位址234執行中斷點檢查。換言之,第2圖中之載入單元185會產生第一片段之命中分頁輸出262與brk1or2信號266。流程前進至步驟308。
在步驟308中,載入單元185將命中分頁輸出262儲存至第二指標欄位226,並且將brk1or2信號266儲存至第一指標欄位228。流程從步驟308前進至步驟318。
在步驟312中,轉譯查詢緩衝器218產生載入實體位址236。流程從步驟312同時前進至步驟314與316。
在步驟314中,載入單元185使用載入實體位址236來存取第1圖之微處理器100中之資料快取186,用以取得由載入指令之第一片段所指定的快取資料。流程前進至步驟318。
在步驟316中,載入單元185將載入佇列項目222之位址欄位224中的載入虛擬位址234替換為載入實體位址236。流程前進至步驟318。
在步驟318中,載入單元185將載入指令之第二片段沿著載入管線傳送用以進行處理。流程前進至步驟322。
在步驟322中,第2圖之遞增器216將載入實體位址236之最低有效快取線位元遞增用以產生遞增結果238。流程從步驟322同時前進至步驟324與326。
在步驟324中,載入單元185使用第二指標欄位226與遞增結果238來對第二片段執行一中斷點檢查。換言之,2:1多工器212選擇第二指標欄位226,而2:1多工器214選擇遞增結果238,並且2:1多工器214將遞增結果238提供至偏移量比較器206,用以產生第二片段之命中偏移信號264。如前文所述,第二指標欄位226與命中偏移信號264係用以產生第二片段之brk1or2信號266。流程前進至步驟328。
在步驟326中,載入單元185使用遞增結果238來存取資料快取186,用以取得由載入指令之第二片段所指定的快取資料。流程前進至步驟328。
在步驟328中,載入單元185藉由brk信號272發出一中斷點訊息。流程前進至步驟332。
在步驟332中,載入單元185完成載入指令之執行動作(即告知重新排序緩衝器172已經完成載入指令之執行動作)。流程結束於步驟332。
如第1圖到第4圖所述,微處理器100的優點在於只需使用兩個管線循環(two passes)就能夠檢查載入指令之中斷點,其中此載入指令跨越一快取線邊界但不跨越一分頁邊界。此外,由於微處理器100不需在各個載入佇列項目222中包含一第二位址欄位,因此不會增加晶片之實際面積以及功率消耗。相反地,微處理器100只需在各個載入佇列項目222中設置每個中斷點暫存器162之一單一附加位元以及需要些許的附加邏輯電路(即2:1多工器214與雙輸入及閘242)。
請參考第5圖,第5圖係為本發明另一實施例之第1圖中微處理器100之載入單元185的方塊圖。此實施例的優點在於可在處理第一片段時對兩個片段執行中斷點檢查,並且這兩個片段共享(share)分頁比較器204。以下將描述第5圖與第2圖中之載入單元185的差異。
如第5圖所示,載入單元185不包括第2圖中之2:1多工器212、2:1多工器214、雙輸入及閘242、雙輸入或閘244、雙輸入及閘246或第二指標欄位226。
第5圖之載入單元185包括偏移量比較器206,第5圖之偏移量比較器206與第2圖之偏移量比較器206類似,皆用以對載入指令之第一片段的較低/偏移位元執行一範圍檢查。換言之,在此實施例中,偏移量比較器206比較所接收之載入虛擬位址234的較低/偏移位元與中斷點位址232的較低/偏移位元,用以對載入指令之第一片段執行範圍檢查並產生一第一片段命中偏移信號562,其中若較低/偏移位元255落在任一被指定在中斷點暫存器162中的範圍內,則第一片段命中偏移信號562係為真值。第5圖之載入單元185也包括偏移量比較器506,用以對載入指令之第二片段的較低/偏移位元執行一類似的範圍檢查。在此實施例中,遞增器216接收載入虛擬位址234之較低/偏移位元。偏移量比較器506比較所接收之遞增結果238與中斷點位址232之較低/偏移位元,用以對載入指令之第二片段執行範圍檢查並產生一第二片段命中偏移信號564,其中若遞增結果238(即載入指令之第二片段的較低/偏移位元)落在任一被指定在中斷點暫存器162中的範圍內,則第二片段命中偏移信號564係為真值。
雙輸入或閘582接收第一片段命中偏移信號562與第二片段命中偏移信號564用以產生一第一輸出信號586。雙輸入及閘584接收命中分頁輸出262與第一輸出信號586用以產生一第二輸出信號588,其中若第一或第二片段中之任一者觸發一中斷點,則第二輸出信號588係為真值。雙輸入及閘584將第二輸出信號588提供至第一指標欄位228,其中第一指標欄位228在處理第二片段時係輸出作為brk信號272。
請參考第6圖,第6圖係為包含第5圖之載入單元185之第1圖的微處理器100的操作流程圖,其中第6圖與第3圖中之步驟302、304、312、316、318、326以及332相同。以下將描述第6圖與第3圖之間的差異。
流程從步驟304同時前進至步驟605、606、607與312。
在步驟605中,分頁比較器204執行分頁位元比較。流程前進至步驟608。
在步驟606中,偏移量比較器206執行第一片段之偏移位元比較。流程前進至步驟608。
在步驟607中,偏移量比較器506執行第二片段之偏移位元比較。流程前進至步驟608。
在步驟608中,雙輸入或閘582與雙輸入及閘584產生第二輸出信號588,並且在處理完第一片段時將第二輸出信號588儲存至第一指標欄位228。流程從步驟608前進至步驟318。
流程從步驟312同時前進至步驟614與316。
在步驟614中,載入單元185使用步驟312中所產生之第一片段的載入實體位址236來存取資料快取186。流程前進至步驟318用以將載入指令之第二片段沿著載入管線傳送用以進行處理。
流程從步驟318前進至步驟326。在一實施例中,在步驟326,當處理第二片段時,遞增器216將載入實體位址236之最低有效快取線位元遞增用以產生遞增結果238,並使用此遞增結果238來存取資料快取186。在另一實施例中,當處理第一片段時,轉譯查詢緩衝器218所產生之載入實體位址236的較高位元與遞增結果238之遞增的較低/偏移位元係為串接位元,並且儲存於位址欄位224之遞增的實體位址係用以存取資料快取186。流程從步驟326前進至步驟628。
在步驟628中,載入單元185藉由brk信號272發出一中斷點訊息,其中brk信號272係為第一指標欄位228之輸出值。流程從步驟628前進至步驟332。流程結束於步驟332。
值得注意的是,在第2圖與第3圖之實施例中,必須加入至各個載入佇列項目222中之第二指標欄位226的數量係隨著中斷點暫存器162之數量的增加而增加。因此,若一微處理器具有相對較多的中斷點暫存器162,則可能無法在載入佇列項目222中加入額外的儲存空間。然而,在第5圖與第6圖之實施例中,載入佇列項目222中所需之儲存空間並不會隨著中斷點暫存器162之數量的增加而增加。此優點可藉由增加額外之偏移量比較器506來實現。
本發明之實施例不限定於執行載入指令,亦能執行跨越兩條快取線之儲存指令。具體而言,第5圖與第6圖之實施例係適用於執行儲存指令。
此外,本發明之實施例不限定於執行除錯中斷點檢查,亦能檢查一跨越兩條快取線之記憶體指令是否落在與一除錯中斷點範圍不同的一虛擬位址範圍內。舉例而言,本發明之實施例可檢查一跨越快取線之記憶體指令是否落在一個或多個使用者定義的虛擬位址範圍內,用以計算位址範位之存取次數以便執行軟體評測(software profiling)、效能測試(performance measurement)或非侵入式程式碼除錯(non-invasive code debugging),其中非侵入式程式碼除錯係指在不產生一中斷點異常之情況下偵測一虛擬位址範圍的存取次數。載入單元可包括一計數器,其中載入單元在每次虛擬位址範圍被存取時遞增上述計數器,而不是藉由產生一中斷點異常來偵測虛擬位址範圍的存取次數。上述應用特別對難以從一外部匯流排偵測記憶體存取次數之多處理器核心配置(multi-processor core configurations)有益。此外,作業系統可定義一個或多個幾乎所有特權程式(privileged programs)無法存取之虛擬位址範圍,並且可透過本發明之實施例來檢查一跨越快取線之記憶體指令是否落在此禁止存取範圍內,如果是的話,則微處理器產生一中斷點異常。
本發明雖以各種實施例揭露如上,然其僅為範例參考而非用以限定本發明的範圍,任何熟習此項技藝者,在不脫離本發明之精神和範圍內,當可做些許的更動與潤飾。舉例而言,可使用軟體來實現本發明所述之裝置與方法的功能、構造、模組、模擬、描述及/或測試。此目的可透過使用一般程式語言(例如C、C++)、硬體描述語言(包括Verilog或VHDL硬體描述語言等等)、或其他可用的程式來實現。上述軟體可被設置在任何電腦可用的媒體,例如半導體、磁碟、光碟(例如CD-ROM、DVD-ROM等等)中。本發明實施例中所述之裝置與方法可被包括在一半導體智慧財產權核心(semiconductor intellectual property core),例如以硬體描述語言(HDL)實現之微處理器核心中,並被轉換為硬體型態的積體電路產品。此外,本發明所描述之裝置與方法可透過結合硬體與軟體的方式來實現。因此,本發明不應上述被本文中之任一實施例所限定,而當視後附之申請專利範圍與其等效物所界定者為準。特別是,本發明係實現於一般用途電腦之微處理器裝置中。最後,任何熟知技藝者,在不脫離本發明之精神和範圍內,當可作些許更動與潤飾,因此本發明之保護範圍當視後附之申請專利範圍所界定者為準。
100...微處理器
106...指令快取
108...指令解碼器
134...暫存器別名表
136...保留站
138...執行單元
162...中斷點暫存器
172...重新排序緩衝器
181...載入佇列
182...記憶體子系統
183...儲存單元
184...儲存佇列
185...載入單元
186...資料快取
204...分頁比較器
206、506...偏移量比較器
208、212、214...2:1多工器
216...遞增器
218...轉譯查詢緩衝器
222...載入佇列項目
224...位址欄位
226...第二指標欄位
228...第一指標欄位
232...中斷點位址
234...載入虛擬位址
236...載入實體位址
238...遞增結果
242、246、584...雙輸入及閘
244、582...雙輸入或閘
248...控制邏輯電路
252...符合信號
254...第二片段控制信號
255...輸出端
262...命中分頁輸出
264...命中偏移信號
266...brk1or2信號
268...結果信號
272...brk信號
562...第一命中偏移信號
564...第二命中偏移信號
586...第一輸出信號
588...第二輸出信號
第1圖係為本發明實施例之微處理器的方塊圖;
第2圖係為本發明實施例之第1圖的微處理器之載入單元的方塊圖;
第3圖係為包含第2圖之載入單元之第1圖中微處理器的操作流程圖;
第4圖係為本發明實施例之跨越快取線之載入指令的方塊圖;
第5圖係為本發明另一實施例之第1圖中微處理器之載入單元的方塊圖;
第6圖係為包含第5圖之載入單元之第1圖的微處理器的操作流程圖。
Claims (25)
- 一種微處理器,用以對一跨越快取線之載入/儲存指令執行一中斷點檢查,上述載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中上述資料之一第一片段係位於一第一快取線中,並且上述資料之一第二片段係位於一第二快取線中,上述微處理器包括:一中斷點暫存器,用以儲存一中斷點位址;一佇列,包括複數佇列項目,上述佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中上述位址與上述載入/儲存指令有關,並且上述指標用以表示上述載入/儲存虛擬位址之一分頁位址部分與上述中斷點位址之一分頁位址部分是否相符合;以及一載入/儲存單元管線,具有一載入/儲存單元,並耦接至上述中斷點暫存器與上述佇列,其中上述載入/儲存單元管線於一第一管線循環期間執行上述跨越快取線之載入/儲存指令以便透過一快取記憶體來存取上述資料之上述第一片段,並且上述載入/儲存單元管線於一第二管線循環期間執行上述跨越快取線之載入/儲存指令以便透過上述快取記憶體來存取上述資料之上述第二片段;其中在上述第一管線循環期間,上述載入/儲存單元使用上述載入/儲存虛擬位址來執行一第一片段中斷點檢查,將上述指標儲存至上述第二儲存空間,並且將一載入/儲存實體位址儲存至上述第一儲存空間,其中上述載入/儲存實體位址係由上述載入/儲存虛擬位址轉譯而成;其中在上述第二管線循環期間,上述載入/儲存單元使用來自上述第二儲存空間之上述指標與來自上述第一儲存空間之上述載入/儲存實體位址之一遞增分頁偏移部分,用以執行一第二片段中斷點檢查;其中上述載入/儲存單元不使用超過兩個上述管線循環來存取上述快取記憶體以及對上述載入/儲存指令執行上述中斷點檢查;其中只有上述佇列項目中之每一者中的上述第一儲存空間係用以儲存與上述載入/儲存指令有關之上述位址。
- 如申請專利範圍第1項所述之微處理器,其中在上述第一管線循環期間,上述載入/儲存單元管線使用上述載入/儲存實體位址來存取上述快取記憶體以便載入/儲存上述資料之上述第一片段,並且在上述第二管線循環期間,上述載入/儲存單元管線使用上述載入/儲存實體位址之上述遞增分頁偏移部分來存取上述快取記憶體以便載入/儲存上述資料之上述第二片段,上述載入/儲存實體位址係由上述載入/儲存虛擬位址轉譯而成,並且上述載入/儲存實體位址係來自於上述第一儲存空間。
- 如申請專利範圍第1項所述之微處理器,其中上述載入/儲存單元管線包括:複數分頁位址比較器,比較上述載入/儲存虛擬位址之上述分頁位址部分與上述中斷點位址之上述分頁位址部分用以產生一第一數值,上述第一數值用以表示上述載入/儲存虛擬位址之上述分頁位址部分與上述中斷點位址之上述分頁位址部分是否相符合,其中上述載入/儲存單元將上述第一管線循環期間所產生之上述第一數值儲存至上述第二儲存空間;:一多工器,耦接至上述分頁位址比較器,上述多工器選擇上述分頁位址比較器於上述第一管線循環期間所產生之上述第一數值,用以執行上述第一片段中斷點檢查,並且在上述第二管線循環期間選擇來自上述第二儲存空間之上述指標,用以執行上述第二片段中斷點檢查;以及複數分頁偏移比較器,於上述第一管線循環期間比較上述載入/儲存虛擬位址之一分頁偏移部分與上述中斷點位址之一分頁偏移部分,用以產生一第二數值,其中上述第二數值用以表示上述載入/儲存虛擬位址之上述分頁偏移部分與上述中斷點位址之上述分頁偏移部分是否相符合,並且於上述第二管線循環期間比較來自上述第一儲存空間之上述載入/儲存實體位址之上述遞增分頁偏移部分與上述中斷點位址之上述分頁偏移部分,用以產生一第三數值,其中上述第三數值用以表示上述載入/儲存實體位址之上述遞增分頁偏移部分與上述中斷點位址之上述分頁偏移部分是否相符合。
- 如申請專利範圍第3項所述之微處理器,其中上述載入/儲存單元於上述第一管線循環期間使用上述分頁位址比較器所產生之上述第一數值與上述分頁偏移比較器所產生之上述第二數值來執行上述第一片段中斷點檢查,並且上述載入/儲存單元於上述第二管線循環期間使用來自上述第二儲存空間之上述指標與上述分頁偏移比較器所產生之上述第三數值來執行上述第二片段中斷點檢查。
- 一種適用於微處理器之操作方法,上述微處理器包括一快取記憶體用以對一跨越快取線之載入/儲存指令執行一中斷點檢查,上述載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中上述資料之一第一片段係位於一第一快取線中,並且上述資料之一第二片段係位於一第二快取線中,上述微處理器更包括一中斷點暫存器用以儲存一中斷點位址,上述微處理器更包括具有複數佇列項目之一佇列,上述佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中上述位址與上述載入/儲存指令有關,並且上述指標用以表示上述載入/儲存虛擬位址之一分頁位址部分與上述中斷點位址之一分頁位址部分是否相符合,上述微處理器更包括具有一載入/儲存單元之一載入/儲存單元管線,上述方法包括:在一第一管線循環期間:執行與上述資料之上述第一片段有關之一第一片段中斷點檢查,其中上述執行上述第一片段中斷點檢查之步驟包括比較上述中斷點位址與上述載入/儲存虛擬位址;將上述指標儲存至上述第二儲存空間;以及將一載入/儲存實體位址儲存至上述第一儲存空間,其中上述載入/儲存實體位址係由上述載入/儲存虛擬位址轉譯而成;以及在一第二管線循環期間:執行與上述資料之上述第二片段有關之一第二片段中斷點檢查,其中上述執行上述第二片段中斷點檢查之步驟包括檢查來自上述第二儲存空間之上述指標,並且比較上述中斷點位址之一分頁偏移部分與來自上述第一儲存空間之上述載入/儲存實體位址之一遞增分頁偏移部分;其中不使用超過兩個上述管線循環來存取上述快取記憶體以及對上述載入/儲存指令執行上述中斷點檢查;其中只有上述佇列項目中之每一者中的上述第一儲存空間係用以儲存與上述載入/儲存指令有關之上述位址。
- 如申請專利範圍第5項所述之適用於微處理器之操作方法,其中在上述第一管線循環期間使用上述載入/儲存實體位址來存取上述快取記憶體以便載入/儲存上述資料之上述第一片段,並且在上述第二管線循環期間使用上述載入/儲存實體位址之上述遞增分頁偏移部分來存取上述快取記憶體以便載入/儲存上述資料之上述第二片段,其中上述載入/儲存實體位址係由上述載入/儲存虛擬位址轉譯而成,並且上述載入/儲存實體位址係來自於上述第一儲存空間。
- 如申請專利範圍第5項所述之適用於微處理器之操作方法,其中於上述第一管線循環期間比較上述中斷點位址與上述載入/儲存虛擬位址之步驟包括比較上述載入/儲存虛擬位址之上述分頁位址部分與上述中斷點位址之上述分頁位址部分用以產生一第一數值,上述第一數值表示上述載入/儲存虛擬位址之上述分頁位址部分與上述中斷點位址之上述分頁位址部分是否相符合;其中將上述指標儲存至上述第二儲存空間之步驟包括將上述第一數值儲存至上述第二儲存空間。
- 如申請專利範圍第7項所述之適用於微處理器之操作方法,其中上述執行上述第一片段中斷點檢查之步驟包括選擇上述第一數值用以執行上述第一片段中斷點檢查;其中上述執行上述第二片段中斷點檢查之步驟包括選擇來自上述第二儲存空間之上述指標用以執行上述第二片段中斷點檢查。
- 如申請專利範圍第8項所述之適用於微處理器之操作方法,其中上述執行上述第一片段中斷點檢查之步驟包括使用一第二數值與上述第一數值來執行上述第一片段中斷點檢查,其中上述第二數值係藉由比較上述載入/儲存虛擬位址之上述分頁偏移部分與上述中斷點位址之上述分頁偏移部分而產生,並且上述第二數值表示上述載入/儲存虛擬位址之上述分頁偏移部分與上述中斷點位址之上述分頁偏移部分是否相符合;其中上述執行上述第二片段中斷點檢查之步驟包括使用來自上述第二儲存空間之上述指標與一第三數值來執行上述第二片段中斷點檢查,其中上述第三數值係藉由比較來自上述第一儲存空間之上述載入/儲存實體位址之上述遞增分頁偏移部分與上述中斷點位址之上述分頁偏移部分而產生,並且上述第三數值表示上述遞增載入/儲存實體位址之上述分頁偏移部分與上述中斷點位址之上述分頁偏移部分是否相符合。
- 一種微處理器,用以對一跨越快取線之載入/儲存指令執行一中斷點檢查,上述載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中上述資料之一第一片段係位於一第一快取線中,並且上述資料之一第二片段係位於一第二快取線中,上述微處理器包括:一中斷點暫存器,用以儲存一中斷點位址;以及一載入/儲存單元,耦接至上述中斷點暫存器,上述載入/儲存單元包括:一分頁位址比較器,比較上述載入/儲存虛擬位址之一分頁位址部分與上述中斷點位址之一分頁位址部分,用以產生一第一指標;一第一分頁偏移比較器,比較上述載入/儲存虛擬位址之一分頁偏移部分與上述中斷點位址之一分頁偏移部分,用以產生一第二指標;一遞增器,將上述載入/儲存虛擬位址之上述分頁偏移部分遞增一條快取線之大小,用以產生一遞增分頁偏移部分;以及一第二分頁偏移比較器,比較上述中斷點位址之上述分頁偏移部分與上述遞增分頁偏移部分,用以產生一第三指標;其中若上述第一指標係為真值並且上述第二與第三指標中之至少一者係為真值時,則上述載入/儲存單元表示上述載入/儲存指令之一中斷點。
- 如申請專利範圍第10項所述之微處理器,其中上述載入/儲存指令並不跨越一記憶體分頁邊界。
- 如申請專利範圍第10項所述之微處理器,更包括:一佇列,包括複數佇列項目,上述佇列項目中之每一者包括一儲存空間用以儲存與上述載入/儲存指令有關之一位址,其中只有上述佇列項目中之每一者中的上述儲存空間係用以儲存與上述載入/儲存指令有關之上述位址。
- 如申請專利範圍第12項所述之微處理器,其中上述載入/儲存單元於一第一管線循環期間執行以下步驟:將上述載入/儲存虛擬位址轉譯成一載入/儲存實體位址;使用上述載入/儲存實體位址來存取上述微處理器之一快取記憶體,以便載入/儲存上述資料之上述第一片段;以及將上述載入/儲存實體位址儲存至上述載入/儲存指令之上述佇列項目中的上述儲存空間;其中上述載入/儲存單元於一第二管線循環期間執行以下步驟:使用上述遞增分頁偏移部分來存取上述快取記憶體,以便載入/儲存上述資料之上述第二片段;其中上述載入/儲存單元不使用超過兩個上述管線循環來存取上述快取記憶體以及對上述載入/儲存指令執行上述中斷點檢查,其中上述存取上述快取記憶體的步驟包括將上述資料之上述第一與第二片段載入/儲存至上述快取記憶體或從上述快取記憶體中載入/儲存上述資料之上述第一與第二片段。
- 一種適用於微處理器之操作方法,用以對一跨越快取線之載入/儲存指令執行一中斷點檢查,上述載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中上述資料之一第一片段係位於一第一快取線中,並且上述資料之一第二片段係位於一第二快取線中,上述微處理器包括一中斷點暫存器用以儲存一中斷點位址,上述方法包括:(1) 比較上述載入/儲存虛擬位址之一分頁位址部分與上述中斷點位址之一分頁位址部分,用以產生一第一指標;(2) 比較上述載入/儲存虛擬位址之一分頁偏移部分與上述中斷點位址之一分頁偏移部分,用以產生一第二指標;(3) 將上述載入/儲存虛擬位址之上述分頁偏移部分遞增一條快取線之大小,用以產生一遞增分頁偏移部分;(4) 比較上述中斷點位址之上述分頁偏移部分與上述遞增分頁偏移部分,用以產生一第三指標;以及(5) 若上述第一指標係為真值並且上述第二與第三指標中之至少一者係為真值時,則表示上述載入/儲存指令之一中斷點。
- 如申請專利範圍第14項所述之適用於微處理器之操作方法,其中上述載入/儲存指令並不跨越一記憶體分頁邊界。
- 如申請專利範圍第14項所述之適用於微處理器之操作方法,其中上述微處理器更包括具有複數佇列項目之一佇列,上述佇列項目中之每一者包括一儲存空間用以儲存與上述載入/儲存指令有關之一位址,其中只有上述佇列項目中之每一者中的上述儲存空間係用以儲存與上述載入/儲存指令有關之上述位址。
- 如申請專利範圍第14項所述之適用於微處理器之操作方法,更包括:(6) 將上述載入/儲存虛擬位址轉譯成一載入/儲存實體位址;(7) 使用上述載入/儲存實體位址來存取上述微處理器之一快取記憶體以便載入/儲存上述資料之上述第一片段;(8) 將上述載入/儲存實體位址儲存至上述載入/儲存指令之上述佇列項目中的上述儲存空間;以及(9) 使用上述遞增分頁偏移部分來存取上述快取記憶體以便載入/儲存上述資料之上述第二片段。
- 如申請專利範圍第17項所述之適用於微處理器之操作方法,其中於一第一管線循環期間執行上述步驟(6)、(7)以及(8),並且於一第二管線循環期間執行上述步驟(9);其中不使用超過兩個上述管線循環來存取上述快取記憶體以及對上述載入/儲存指令執行上述中斷點檢查,其中上述存取上述快取記憶體的步驟包括將上述資料之上述第一與第二片段載入/儲存至上述快取記憶體或從上述快取記憶體中載入/儲存上述資料之上述第一與第二片段。
- 如申請專利範圍第14項所述之適用於微處理器之操作方法,其中於一第一管線循環期間執行上述步驟(1)、(2)、(3)以及(4),並且於一第二管線循環期間執行上述步驟(5)。
- 一種微處理器,用以計算一指定之虛擬記憶體位址範圍的存取次數,其中存取上述指定之虛擬記憶體位址範圍的步驟包括執行一跨越快取線之載入/儲存指令,上述載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中上述資料之一第一片段係位於一第一快取線中,並且上述資料之一第二片段係位於一第二快取線中,上述微處理器包括:一暫存器,用以儲存一資訊,上述資訊用以指定一虛擬位址範圍,並且上述資訊包括一範圍位址用以指定一起始虛擬位址範圍,其中上述虛擬記憶體位址範圍係位於一虛擬記憶體分頁中;一計數器,用以儲存一計數值,上述計數值代表上述虛擬位址範圍之存取次數,並且上述虛擬位址範圍係由上述暫存器中之上述資訊所指定;一佇列,包括複數佇列項目,上述佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中上述位址與上述載入/儲存指令有關,並且上述指標用以表示上述載入/儲存虛擬位址之一分頁位址部分與上述中斷點位址之一分頁位址部分是否相符合;以及具有一載入/儲存單元之一載入/儲存單元管線,耦接至上述暫存器與上述佇列,其中上述載入/儲存單元管線於一第一管線循環期間將上述資料之上述第一片段載入/儲存至一快取記憶體或從上述快取記憶體中載入/儲存上述資料之上述第一片段,並且上述載入/儲存單元管線於一第二管線循環期間將上述資料之上述第二片段載入/儲存至上述快取記憶體或從上述快取記憶體中載入/儲存上述資料之上述第二片段;其中在上述第一管線循環期間,上述載入/儲存單元使用上述載入/儲存虛擬位址來判斷上述資料之上述第一片段是否落在上述虛擬位址範圍內,將上述指標儲存至上述第二儲存空間,並且將一載入/儲存實體位址儲存至上述第一儲存空間,其中上述載入/儲存實體位址係由上述載入/儲存虛擬位址轉譯而成;其中在上述第二管線循環期間,上述載入/儲存單元使用來自上述第二儲存空間之上述指標與來自上述第一儲存空間之上述載入/儲存實體位址的一遞增分頁偏移部分,用以判斷上述資料之上述第二片段是否落在上述虛擬位址範圍內;其中若上述載入/儲存單元判斷上述資料之上述第一與第二片段中之任一者係位於上述虛擬位址範圍內,則上述載入/儲存單元將上述計數器遞增;其中上述載入/儲存單元不使用超過兩個上述管線循環來存取上述快取記憶體以及判斷上述資料之上述第一與第二片段中之任一者是否位於上述虛擬位址範圍內;其中只有上述佇列項目中之每一者中的上述第一儲存空間係用以儲存與上述載入/儲存指令有關之上述位址。
- 一種適用於微處理器之操作方法,用以計算一指定之虛擬記憶體位址範圍的存取次數,其中存取上述指定之虛擬記憶體位址範圍的步驟包括執行一跨越快取線之載入/儲存指令,上述載入/儲存指令指定一資料之一載入/儲存虛擬位址,其中上述資料之一第一片段係位於一第一快取線中,並且上述資料之一第二片段係位於一第二快取線中,上述微處理器包括一暫存器用以儲存一資訊,上述資訊用以指定一虛擬位址範圍並且包括一範圍位址用以指定一起始虛擬位址範圍,其中上述虛擬記憶體位址範圍係位於一虛擬記憶體分頁中,上述微處理器更包括一計數器用以儲存一計數值,上述計數值代表上述虛擬位址範圍之存取次數,並且上述虛擬位址範圍係由上述暫存器中之上述資訊所指定,上述微處理器更包括具有複數佇列項目之一佇列,上述佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中上述位址與上述載入/儲存指令有關,並且上述指標表示上述載入/儲存虛擬位址之一分頁位址部分與上述中斷點位址之一分頁位址部分是否相符合,上述微處理器更包括具有一載入/儲存單元之一載入/儲存單元管線,上述方法包括:在一第一管線循環期間:(1) 將上述資料之上述第一片段載入/儲存至一快取記憶體或從上述快取記憶體中載入/儲存上述資料之上述第一片段;(2) 使用上述載入/儲存虛擬位址來判斷上述資料之上述第一片段是否位於上述虛擬位址範圍內;(3) 將上述指標儲存至上述第二儲存空間;以及(4) 將一載入/儲存實體位址儲存至上述第一儲存空間,其中上述載入/儲存實體位址係由上述載入/儲存虛擬位址轉譯而成;在一第二管線循環期間:(5) 將上述資料之上述第二片段載入/儲存至上述快取記憶體或從上述快取記憶體中載入/儲存上述資料之上述第二片段;(6) 使用來自上述第二儲存空間之上述指標與來自上述第一儲存空間之上述載入/儲存實體位址的一遞增分頁偏移部分,用以判斷上述資料之上述第二片段是否落在上述虛擬位址範圍內;(7) 若上述載入/儲存單元判斷上述資料之上述第一與第二片段中之任一者係位於上述虛擬位址範圍內,則將上述計數器遞增;其中不使用超過兩個上述管線循環來執行上述步驟(1)到(7);其中只有上述佇列項目中之每一者中的上述第一儲存空間係用以儲存與上述載入/儲存指令有關之上述位址。
- 一種微處理器,用以禁止複數程式存取一指定之虛擬記憶體位址範圍,其中存取上述指定之虛擬記憶體位址範圍的步驟包括執行一跨越快取線之載入指令,上述載入指令指定一資料之一載入虛擬位址,其中上述資料之一第一片段係位於一第一快取線中,並且上述資料之一第二片段係位於一第二快取線中,上述微處理器包括:一暫存器,用以儲存一資訊,上述資訊用以指定一虛擬記憶體位址範圍,並且上述資訊包括一範圍位址用以指定一起始虛擬記憶體位址範圍,其中上述虛擬記憶體位址範圍係位於一虛擬記憶體分頁中;一佇列,包括複數佇列項目,上述佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中上述位址與上述載入指令有關,並且上述指標用以表示上述載入虛擬位址之一分頁位址部分與上述中斷點位址之一分頁位址部分是否相符合;以及一載入管線,具有一載入單元,並耦接至上述暫存器與上述佇列,其中上述載入管線於一第一管線循環期間從一快取記憶體中讀取上述資料之上述第一片段,並且上述載入管線於一第二管線循環期間從上述快取記憶體中讀取上述資料之上述第二片段;其中在上述第一管線循環期間,上述載入單元使用上述載入虛擬位址來判斷上述資料之上述第一片段是否落在上述虛擬記憶體位址範圍內,將上述指標儲存至上述第二儲存空間,並且將一載入實體位址儲存至上述第一儲存空間,其中上述載入實體位址係由上述載入虛擬位址轉譯而成;其中在上述第二管線循環期間,上述載入單元使用來自上述第二儲存空間之上述指標與來自上述第一儲存空間之上述載入實體位址的一遞增分頁偏移部分,用以判斷上述資料之上述第二片段是否落在上述虛擬記憶體位址範圍內;其中若上述載入單元判斷上述資料之上述第一與第二片段中之任一者係位於上述虛擬記憶體位址範圍內,並且上述程式禁止存取上述虛擬記憶體位址範圍,則上述載入單元禁止將上述資料載入至上述載入指令所指定之一目標暫存器;其中上述載入單元不使用超過兩個上述管線循環來讀取來自上述快取記憶體之上述資料的上述第一與第二片段以及判斷上述資料之上述第一與第二片段中之任一者是否位於上述虛擬記憶體位址範圍內;其中只有上述佇列項目中之每一者中的上述第一儲存空間係用以儲存與上述載入指令有關之上述位址。
- 如申請專利範圍第22項所述之微處理器,其中若上述載入單元判斷上述資料之上述第一與第二片段中之任一者係位於上述虛擬記憶體位址範圍內,並且上述程式禁止存取上述虛擬記憶體位址範圍,則上述載入單元產生一中斷點異常。
- 一種適用於微處理器之操作方法,用以禁止複數程式存取一指定之虛擬記憶體位址範圍,其中存取上述指定之虛擬記憶體位址範圍的步驟包括執行一跨越快取線之載入指令,上述載入指令指定一資料之一載入虛擬位址,其中上述資料之一第一片段係位於一第一快取線中,並且上述資料之一第二片段係位於一第二快取線中,上述微處理器包括一暫存器用以儲存一資訊,上述資訊用以指定一虛擬記憶體位址範圍並且包括一範圍位址用以指定一起始虛擬記憶體位址範圍,其中上述虛擬記憶體位址範圍係位於一虛擬記憶體分頁中,上述微處理器更包括具有複數佇列項目之一佇列,上述佇列項目中之每一者包括用以儲存一位址之一第一儲存空間與用以儲存一指標之一第二儲存空間,其中上述位址與上述載入指令有關,並且上述指標表示上述載入虛擬位址之一分頁位址部分與上述中斷點位址之一分頁位址部分是否相符合,上述微處理器更包括具有一載入單元之一載入管線,上述方法包括:在一第一管線循環期間:(1) 從一快取記憶體中讀取上述資料之上述第一片段;(2) 使用上述載入虛擬位址來判斷上述資料之上述第一片段是否位於上述虛擬記憶體位址範圍內;(3) 將上述指標儲存至上述第二儲存空間;以及(4) 將一載入實體位址儲存至上述第一儲存空間,其中上述載入實體位址係由上述載入虛擬位址轉譯而成;在一第二管線循環期間:(5) 從上述快取記憶體中讀取上述資料之上述第二片段;(6) 使用來自上述第二儲存空間之上述指標與來自上述第一儲存空間之上述載入實體位址的一遞增分頁偏移部分,用以判斷上述資料之上述第二片段是否落在上述虛擬記憶體位址範圍內;(7) 若上述載入單元判斷上述資料之上述第一與第二片段中之任一者係位於上述虛擬記憶體位址範圍內,並且上述程式無法存取上述虛擬記憶體位址範圍,則禁止將上述資料載入至由上述載入指令所指定之一目標暫存器;其中不使用超過兩個上述管線循環來執行上述步驟(1)到(7);其中只有上述佇列項目中之每一者中的上述第一儲存空間係用以儲存與上述載入指令有關之上述位址。
- 如申請專利範圍第24項所述之適用於微處理器之操作方法,更包括:若上述載入單元判斷上述資料之上述第一與第二片段中之任一者係位於上述虛擬記憶體位址範圍內,並且上述程式無法存取上述虛擬記憶體位址範圍,則產生一中斷點異常。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US23627509P | 2009-08-24 | 2009-08-24 | |
US12/607,301 US8539209B2 (en) | 2009-08-24 | 2009-10-28 | Microprocessor that performs a two-pass breakpoint check for a cache line-crossing load/store operation |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201108107A TW201108107A (en) | 2011-03-01 |
TWI437488B true TWI437488B (zh) | 2014-05-11 |
Family
ID=43606200
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW099125571A TWI437488B (zh) | 2009-08-24 | 2010-08-02 | 微處理器及適用於微處理器之操作方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US8539209B2 (zh) |
TW (1) | TWI437488B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140101412A1 (en) * | 2012-10-04 | 2014-04-10 | Ricardo Ramirez | Speculative privilege elevation |
US10318427B2 (en) * | 2014-12-18 | 2019-06-11 | Intel Corporation | Resolving memory accesses crossing cache line boundaries |
CN107922919A (zh) | 2015-05-29 | 2018-04-17 | 勃林格殷格翰国际公司 | 连续培养中的细胞控制的灌注 |
CN105446777B (zh) * | 2015-11-18 | 2019-06-04 | 上海兆芯集成电路有限公司 | 高速缓存行的非对齐加载指令的推测并行执行方法 |
US10268558B2 (en) * | 2017-01-13 | 2019-04-23 | Microsoft Technology Licensing, Llc | Efficient breakpoint detection via caches |
US10740220B2 (en) | 2018-06-27 | 2020-08-11 | Microsoft Technology Licensing, Llc | Cache-based trace replay breakpoints using reserved tag field bits |
US11061810B2 (en) * | 2019-02-21 | 2021-07-13 | International Business Machines Corporation | Virtual cache mechanism for program break point register exception handling |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS63197248A (ja) * | 1987-02-12 | 1988-08-16 | Matsushita Electric Ind Co Ltd | マイクロプロセツサ |
JPH06290076A (ja) * | 1993-04-05 | 1994-10-18 | Nec Ic Microcomput Syst Ltd | デバッグ装置 |
US6009510A (en) * | 1998-02-06 | 1999-12-28 | Ip First Llc | Method and apparatus for improved aligned/misaligned data load from cache |
US20070033577A1 (en) * | 2005-08-08 | 2007-02-08 | Arackal Paulose K | Method and apparatus for debugging program code |
-
2009
- 2009-10-28 US US12/607,301 patent/US8539209B2/en active Active
-
2010
- 2010-08-02 TW TW099125571A patent/TWI437488B/zh active
Also Published As
Publication number | Publication date |
---|---|
TW201108107A (en) | 2011-03-01 |
US20110047314A1 (en) | 2011-02-24 |
US8539209B2 (en) | 2013-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI437488B (zh) | 微處理器及適用於微處理器之操作方法 | |
TWI770009B (zh) | 原子式儲存至寬於原生支援資料寬度之記憶體資料的處理器、方法、系統與指令 | |
TWI788774B (zh) | 用於記憶體損毀偵測的硬體設備和方法 | |
JP5661863B2 (ja) | 実行装置内のデータ転送のシステムおよび方法 | |
US8464032B2 (en) | Microprocessor integrated circuit with first processor that outputs debug information in response to reset by second processor of the integrated circuit | |
KR101461378B1 (ko) | 동기화 simd 벡터 | |
US8429377B2 (en) | Optimizing TLB entries for mixed page size storage in contiguous memory | |
US10289554B2 (en) | Supporting fault information delivery | |
KR100421749B1 (ko) | 비폴팅로드명령실행방법및그장치 | |
US20160092371A1 (en) | Method and Apparatus For Deterministic Translation Lookaside Buffer (TLB) Miss Handling | |
EP2645237A2 (en) | Deadlock/livelock resolution using service processor | |
JP5922317B2 (ja) | 変換索引バッファ(tlb)のための重複検査 | |
JP2011227880A (ja) | プレロード命令制御 | |
KR20150139931A (ko) | 더 넓은 레지스터에의 모드 의존형 부분 폭 로드 프로세서들, 방법들, 및 시스템들 | |
CN110291507B (zh) | 用于提供对存储器系统的加速访问的方法和装置 | |
US20080141002A1 (en) | Instruction pipeline monitoring device and method thereof | |
US8214602B2 (en) | Efficient load queue snooping | |
US7100006B2 (en) | Method and mechanism for generating a live snapshot in a computing system | |
US5455925A (en) | Data processing device for maintaining coherency of data stored in main memory, external cache memory and internal cache memory | |
GB2409906A (en) | Testing agents in a computer system using harassing transactions from a library | |
CN101894010B (zh) | 微处理器及适用于微处理器的操作方法 | |
EP4020233B1 (en) | Automated translation lookaside buffer set rebalancing | |
Becker | Short burst software transparent on-line MBIST | |
WO2018057135A1 (en) | Interrupt-vector translation lookaside buffer | |
US20080140993A1 (en) | Fetch engine monitoring device and method thereof |