TW201531865A - 用於藉由較少位元來表示處理器上下文的方法和裝置 - Google Patents
用於藉由較少位元來表示處理器上下文的方法和裝置 Download PDFInfo
- Publication number
- TW201531865A TW201531865A TW103138879A TW103138879A TW201531865A TW 201531865 A TW201531865 A TW 201531865A TW 103138879 A TW103138879 A TW 103138879A TW 103138879 A TW103138879 A TW 103138879A TW 201531865 A TW201531865 A TW 201531865A
- Authority
- TW
- Taiwan
- Prior art keywords
- identification word
- compressed
- processor
- uncompressed
- translation table
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/461—Saving or restoring of program or task context
-
- 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
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
-
- 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
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本發明的各實施方式總體上涉及用於藉由較少位元來表示處理器上下文的方法和裝置。具體地,根據至少一個示例實施方式,一種方法和對應處理器元件包括維護將未壓縮的進程上下文識別字映射到對應壓縮的識別字的翻譯表,所述未壓縮的進程上下文識別字和所述對應壓縮的識別字與位址空間或對應電腦進程相關聯。所述壓縮的識別字被用於探測或存取執行與電腦進程相關聯的操作時所述處理器元件的一個或多個結構。
Description
本發明的各實施方式總體上涉及電腦領域,具體地涉及用於藉由較少位元來表示處理器上下文的方法和裝置。
儘管在微處理器架構和設計中取得的顯著優勢在微處理器速度和功耗效率方面產生了顯著改進,但是微處理器技術領域中正在研究的工作仍然在尋找進一步改進微處理器晶片的性能和速度的方式。
許多微處理器支援處理多個進程,並且在其之間切換而不使處理器記憶體中存儲的對應軟體上下文資料無效或沖洗(flush)。通常,與對應電腦進程相關聯的軟體上下文識別字被用於引用並存取與對應電腦進程相關聯的記憶體空間。根據至少一個示例實施方式,壓縮的軟體上下文識別字(下文還被稱作壓縮的進程上下文識別字)被用於存取與對應電腦進程相關聯的記憶體空間。
根據至少一個示例實施方式,一種方法和對應處理器元件包括維護將未壓縮的進程上下文識別字映射到對應壓縮的識別字的翻譯表,所述未壓縮的進程上下文識別字和所述對應壓縮的識別字與位址空間
或對應電腦進程相關聯。所述壓縮的識別字被用於探測或存取執行與電腦進程相關聯的操作時所述處理器元件的一個或多個結構。
該操作與未壓縮的軟體上下文識別字相關聯,並且翻譯資料結構在每次處理器元件的一個或多個結構被存取時被探測。可選擇地,與處理器元件中當前運行的電腦進程相關聯的壓縮的軟體上下文識別字被存儲在一個或多個暫存器中。如此,僅當一個或多個暫存器中存儲的壓縮的軟體上下文識別字無效時,翻譯資料結構才被探測。
當執行該操作時,針對對應壓縮的軟體上下文識別字搜索處理器元件的記憶體元件(例如,記憶體暫存器)。在找到壓縮的識別字時,確定壓縮的識別字是否有效,並且在確定找到的壓縮的識別字有效之後,該有效的壓縮的識別字被用於存取執行該操作時處理器元件的一個或多個結構。然而,如果找到的壓縮的識別字被確定無效,則針對被映射到與該操作相關聯的未壓縮的進程上下文識別字的其他壓縮的識別字搜索該翻譯資料結構。如果在翻譯資料結構中找到匹配壓縮的識別字,則該匹配壓縮的識別字被用於存取處理器元件的一個或多個結構。該匹配識別字還可以被存儲在處理器元件的記憶體元件(例如,記憶體暫存器)中以促進將來存取。如果在翻譯資料結構中沒有找到匹配壓縮的識別字,則新的壓縮的識別字被映射到與操作相關聯的未壓縮的進程上下文識別字,並且用於存取執行操作時處理器元件的一個或多個結構。
處理器元件可以是多核處理器。翻譯資料結構可以在該多核處理器內的兩個或更多內核處理器之間共用。可選擇地,該多核處理器內的每個內核處理器獨立於任何其他內核處理器來維護翻譯資料結構。
根據至少一個示例實施方式,未壓縮的進程上下文識別字包括一個或多個未壓縮的欄位。所述未壓縮的進程上下文識別字內的至少一個未壓縮的欄位被翻譯成對應壓縮的識別字內的對應壓縮的欄位。基於忽略所述至少一個未壓縮的欄位的指示,未壓縮的進程上下文識別字內的至少一個未壓縮的欄位不被翻譯成對應壓縮的識別字內的壓縮的欄位。
112‧‧‧安全狀態
114‧‧‧異常級別
116‧‧‧ASID
117‧‧‧壓縮的ASID
118‧‧‧VMID
119‧‧‧壓縮的VMID
160‧‧‧硬體結構
170‧‧‧資料結構
175‧‧‧記憶體位址
190‧‧‧記憶體位置空間
195‧‧‧資料
210‧‧‧翻譯表
210a‧‧‧翻譯表
210b‧‧‧翻譯表
310‧‧‧方塊
320‧‧‧方塊
330‧‧‧方塊
334‧‧‧方塊
338‧‧‧方塊
340‧‧‧方塊
350‧‧‧方塊
354‧‧‧方塊
358‧‧‧方塊
360‧‧‧方塊
上述將在下面如圖式中所展示的對示例實施方式的更具體的描述中變得清楚,在圖式中類似參考符號指代所有不同視圖中的相同元件。這些圖不必是按比例的,相反,下文討論的重點放在展示本發明的實施方式上。
第1A圖是根據至少一個示例實施方式圖示軟體上下文識別字的框圖;第1B圖是根據至少一個示例實施方式圖示將標識運行程式的軟體上下文識別字連結到對應記憶體空間或其中存儲的資料的示圖;第2A圖至第2C圖是圖示硬體結構中壓縮軟體上下文識別字的翻譯表和使用的示例實現方式的示圖;以及第3圖是圖示採用壓縮軟體上下文識別字的方法的流程圖。
本發明示例實施方式的詳細描述如下。
許多微處理器支援處理多個進程,並且在其之間切換而不使處理器記憶體中存儲的對應軟體上下文資料無效或沖洗。此外,許多微處理器實現同時允許支援多個軟體環境的虛擬擴展。藉由物理處理器支援
多個軟體環境和/或多個進程使得處理器能夠處理複雜的軟體應用。
微處理器通常利用特定識別字來在不同的電腦進程以及不同的軟體環境之間進行區分。例如,許多作業系統使用位址空間識別字(ASID)來標識與運行程式相關聯的記憶體空間。虛擬機器識別字(VMID)還可以被用於標識虛擬機器。這種識別字或等同物以及其他潛在的識別字或參數通常用於標識軟體上下文。
第1A圖是根據至少一個示例實施方式圖示軟體上下文識別字集的框圖。該軟體上下文識別字集包括位址空間識別字(ASID)116和虛擬機器識別字(VMID)118。該軟體上下文識別字集可以進一步包括安全狀態112。該安全狀態112指示例如對應軟體上下文的非安全或安全(NS/S)狀態。該軟體上下文識別字集還可以包括異常級別(EL)114。該EL 114還可以被稱為特權級別、優先權級別等,指示對應軟體進程的優先權。在ARM架構中,例如,安全狀態112可以是一位元參數,異常級別(EL)114可以是二位元參數,ASID 116可以是16位元識別字,以及VMID可以是16位元識別字。本領域通常知識者應當理解該軟體上下文識別字集可以被不同地設計。例如,與第1A圖所示的識別字或參數的組合相比,該軟體上下文識別字集可以包括識別字或參數的不同組合。同樣,與第1A圖中所述的識別字/參數相比,該識別字/參數可以具有不同的名稱、不同的大小或者以不同的順序。
第1B圖是根據至少一個示例實施方式圖示將標識運行程式的軟體上下文識別字連結到對應記憶體空間或其中存儲的資料的示圖。現代微處理器通常使用軟體上下文識別字(例如,ASID和VMID)在硬體結構
中標識與特定程式相關聯的記憶體空間190或其中存儲的資料195。硬體結構160可以是資料快取記憶體(D-Cache),指令快取記憶體(I-Cache),翻譯後援緩衝器(TLB),微TLB(μTLB),頁表步行器(walker)快取記憶體等或其組合。根據至少一個示例實施方式,硬體結構160針對每個運行程式存儲一個或多個軟體上下文識別字,例如,ASID 116和VMID 118。對應於運行程式的軟體上下文識別字被連結至指示記憶體位置空間190中存儲與該運行程式相關聯的資料195的記憶體位址175。對應於給定運行程式的軟體上下文識別字以及對應記憶體位址175可以根據資料結構170(例如,表、鏈表、樹等)存儲在硬體結構160中。例如,資料結構可以是表,其中該表的每行或每列存儲與相同運行程式相關聯的軟體上下文識別字和記憶體位址175。可選擇地,與給定運行程式相關聯的軟體上下文識別字可以藉由鏈表或本領域通常知識者已知的任意其他適當的資料結構連結至對應記憶體位址175。
軟體上下文識別字的使用允許多個軟體上下文同時駐留在相同微處理器或內核記憶體中。在硬體結構160中缺少這種軟體上下文識別字的情況下,硬體結構160需要在出現軟體上下文變化時被完全沖洗。換言之,如果硬體結構160存儲了僅與當前運行程式相關聯的記憶體位址175,則在軟體上下文變化時此記憶體位址175被刪除,並且新的記憶體位址被存儲。隨著軟體上下文的每次變化而沖洗硬體結構160降低了性能。例如,當控制被返回先前軟體上下文時,如果對應軟體上下文識別字存儲在硬體結構160中則可以避免沖洗硬體結構160以參考對應記憶體位置空間190。
內容可定址記憶體(CAM)結構通常具有標籤,諸如快取
記憶體標籤,其用於探測微處理器的硬體結構。在CAM結構中,軟體上下文識別字可以被併入標籤中。如此,標籤之間的匹配指示硬體結構的成功探測。在隨機存取記憶體(RAM)中,查找操作通常基於記憶體位址執行。如此,在RAM中,標籤可以用於靜態地指派隨機存取記憶體中被分配給特定軟體上下文的特定區域。換言之,記憶體位址可以被分組成多個區域,並且每個區域可以被指派特定軟體上下文。
雖然在微處理器或內核處理器中同時維護多個軟體上下文增強了處理器性能,但是存儲對應軟體上下文識別字在微處理器或內核處理器內的記憶體使用方面表現出負擔。例如,考慮到第1A圖中所述的軟體上下文識別字,ASID 116和VMID 118通常各自使用16位元表示,EL 114使用二位元表示,以及安全狀態使用一位元限定。如此,35位元用於在單個硬體結構160中存儲與單個運行程式相關聯的軟體上下文識別字。藉由35位元,總共235或者320億種不同的軟體上下文可以被限定。然而,現代微處理器通常同時運行顯著較少的軟體上下文。此外,針對給定軟體上下文,對應軟體上下文識別字可以被存儲在微處理器的多個硬體結構160中,例如,D-Cache、I-Cache、頁表步行器快取記憶體、TLB和μTLB。事實上,軟體上下文識別字的存儲引發了顯著的硬體成本,其可以表示處理器內核區域中的顯著部分。
根據至少一個示例實施方式,軟體上下文識別字被翻譯成藉由較少位元表示的壓縮識別字,從而產生處理器空間區域的更有效使用。翻譯表(TT)用於將與給定運行程式相關聯的未壓縮軟體上下文識別字(例如,ASID 116、VMID 118等)映射至對應的壓縮軟體上下文識別字。
微處理器採用壓縮的軟體上下文識別字來表示硬體結構160中的對應軟體上下文。例如,給定安全狀態112、EL 114、ASID 116和VMID 118的組合,對應壓縮的軟體上下文識別字可以被存儲在翻譯表中。如果翻譯表內不存在對應壓縮的軟體上下文識別字,則處理器分配新壓縮的軟體上下文識別字並且將其映射至翻譯表內軟體上下文識別字的給定組合。
第2A圖至第2C圖是圖示硬體結構160中壓縮的軟體上下文識別字的翻譯表210和使用的示例實現方式的示圖。根據第2A圖中所示的示例實現方式,翻譯表210的每行將與給定運行程式相關聯的一個或多個未壓縮的軟體上下文識別字(例如,安全狀態112、EL 114、ASID 116和VMID 118)映射到對應壓縮的軟體上下文識別字215。在硬體結構160內,每個壓縮的軟體上下文識別字215被連結到與該相同壓縮的軟體上下文識別字215引用的運行程式相關聯的記憶體空間的記憶體位址175。即,在硬體結構160內採用對應壓縮的軟體上下文識別字215而不是使用未壓縮的軟體上下文識別字來引用給定運行程式的軟體上下文。
在第2B圖中所示的示例實現方式中,壓縮的軟體上下文識別字215不存儲在翻譯表210內,而是由翻譯表210內對應未壓縮的軟體上下文識別字的索引表示。換言之,壓縮的軟體上下文識別字基於對應未壓縮的軟體上下文識別字在翻譯表210內存儲的位置進行定義。在硬體結構160中,將指示與給定運行程式相關聯的記憶體空間的記憶體位址175與對應壓縮的軟體上下文識別字215連結。
在第2C圖中,採用了兩個翻譯表210a和210b或者資料結構。根據示例實現方式,一個或多個未壓縮的軟體上下文識別字被分別壓縮。
例如,針對每個軟體上下文的ASID 116被壓縮成對應壓縮的ASID 117,例如,ASID_MAP,並且VMID 118被壓縮成對應壓縮的VMID 119,例如,VMID_MAP。
翻譯表210a包括與對應軟體上下文相關聯的ASID 116的值。針對每個ASID 116,對應壓縮的參數ASID_MAP 117被限定為翻譯表210a內對應ASID 116的索引。翻譯表210b包括與對應軟體上下文相關聯的VMID 118的值。針對每個VMID 118,對應壓縮的參數VMID_MAP 119被限定為翻譯表210b內對應VMID 118的索引。壓縮的軟體上下文識別字215繼而根據對應壓縮的參數ASID_MAP 117和VMID_MAP 119被限定為例如兩者的串聯(concatenation)。在硬體結構160中,將指示與給定運行程式相關聯的記憶體空間的記憶體位址175與對應壓縮的軟體上下文識別字215連結。
根據示例實現方式,表210a具有64個條目,其中壓縮的ASID識別字117從0運行至63。同樣,表210b具有16個條目,其中壓縮的VMID識別字119從0運行至15。例如,假設在給定時間點,表210a只有頭四行(例如,索引0至3)具有有效ASID識別字116,並且表210b只有三行(例如,索引0至2)包括有效VMID識別字118。當針對給定軟體上下文指派新壓縮的識別字時,對應未壓縮的ASID 116被添加在表210a的下一可用行(例如,第五行)中,並且對應壓縮的ASID識別字117是000100。同樣,對應未壓縮的VMID 116被添加在表210b的下一可用行(例如,第四行)中,並且對應壓縮的VMID識別字119是0011。壓縮的ASID 117和壓縮的VMID 119可用藉由簡單地增加指示具有表210a和210b的有效未壓縮的識別字的最後一行的索引的計數器來進行限定。藉由將壓縮的ASID 117與壓縮的VMID 119連在一起,對應壓
縮的識別字215被限定為0001000011。
本領域通常知識者應當理解未壓縮的軟體上下文識別字(例如,116和118)與對應壓縮的軟體上下文識別字(例如,117、119和/或215)之間的映射可以藉由不同於翻譯表210、210a或210b的其他資料結構實現。例如,未壓縮的軟體上下文識別字(例如,116和118)可以藉由一個或多個指標被映射到對應壓縮的軟體上下文識別字(例如,117、119和/或215)。通常,微處理器或內核處理器維護未壓縮的軟體上下文識別字(例如,116和118)與對應壓縮的軟體上下文識別字(例如,117、119和/或215)之間的映射。維護所述映射包括生成、更新和存儲所述映射。在執行與對應標識的軟體上下文相關聯的操作時,與給定軟體上下文相關聯的壓縮的軟體上下文識別字被用於探測微處理器或內核處理器的一個或多個硬體結構160。
存取與軟體上下文相關聯的位址空間可以從提取、載入、存儲或相同軟體上下文內執行的其他操作開始。當基於壓縮的軟體上下文識別字215存取位址空間時,一個選項是基於例如每個此類位址空間存取上的翻譯表將與軟體上下文相關聯的未壓縮的軟體上下文識別字查找或翻譯成對應壓縮的軟體上下文識別字。這種翻譯通常涉及CAM查找,由此,頻繁的CAM查找導致高功耗。可選擇方式是針對特定暫存器中的當前軟體上下文保持壓縮的軟體上下文識別字的表示。換言之,針對當前運行的程式,對應壓縮的軟體上下文識別字被存儲在特定暫存器中。對應未壓縮的軟體上下文識別字(例如,ASID 116和/或VMID 118)還存儲在其他特定暫存器中。因此,對位址空間的任何存取利用特定暫存器中存儲的當前壓縮的識
別字和/或其他特定暫存器中存儲的對應未壓縮的識別字以使用此識別字來探測任何相關硬體結構。特定暫存器還可以包括指示所存儲的壓縮的上下文識別字是否有效的一個或多個位元。
隨著軟體上下文變化,特定暫存器的內容被修改以存儲與微處理器或內核處理器中運行的新程式相關聯的壓縮和未壓縮的軟體上下文識別字。換言之,每當軟體上下文變化或無效時,新的軟體上下文的未壓縮的軟體上下文識別字在特定暫存器中生成和/或存儲。每次新的軟體上下文被創建(例如,新的程式在微處理器或內核處理器中運行),執行未壓縮的軟體上下文識別字的生成和/或存儲。根據示例實施方式,當與新的軟體上下文相關聯的第一提取、存儲或其他指令開始時,在特定暫存器中生成和/或存儲新的未壓縮的軟體上下文識別字。
根據至少一個示例實施方式,為了減少特定暫存器中新的壓縮和未壓縮的軟體上下文識別字的頻繁載入或生成,作業系統考慮向不同軟體進程指派ASID 116的方法。例如,ASID 116可以藉由與使用者空間和作業系統空間相同的方式進行指派。如此,回應於系統調用,ASID可以不變化。因此,回應於系統調用,特定暫存器中存儲的對應壓縮的軟體上下文識別字215被無效。
根據至少一個示例實施方式,壓縮的識別字生成的方式取決於相同壓縮的識別字如何限定。例如,考慮如第2C圖所示的兩個翻譯表,例如,210a指示壓縮的ASID 117並且210b指示壓縮的VMID 119,作業系統可以指定待在多個進程之間共用的相同位址。在此情況下,共用的位址與指示符(例如,全域位元)相關聯。如果指示符被設置,則在探測具有上下
文識別字的處理器內核結構方面忽略ASID。同樣,如第2C圖中所示,針對不同未壓縮的軟體上下文識別字使用不同的翻譯表允許標識未壓縮的識別字215對應於ASID 116的一部分。
根據至少一個示例實施方式,當作業系統使得超級調用或控制轉移到管理程式或安全狀態時,微處理器中運行的軟體上下文由於VMID變化而變化。然而,如果管理程式或安全狀態被實現為單個軟體上下文,則微處理器中運行的軟體上下文可以基於特權或異常級別114進行確定。如此,特定暫存器中存儲的壓縮的軟體上下文識別字在作業系統切換到管理程式或安全狀態之後無效。相反,與管理程式和安全狀態相關聯的預定和固定壓縮的軟體上下文識別字被採用而不需要無效特定暫存器中先前存儲的壓縮的軟體上下文識別字。當作業系統切換回作業系統時,仍然存儲在特定暫存器中的壓縮的軟體上下文識別字繼而被用於存取記憶體空間。
根據至少一個示例實施方式,當翻譯表滿並且其中沒有更多空間可用於新的軟體上下文識別字時,該翻譯表的條目、特定暫存器和任意相關聯的硬體結構被無效。這種條目的無效還可以例如藉由微處理器或內核處理器中運行的軟體從外部開始。
第3圖是根據至少一個示例實施方式圖示分配並採用壓縮軟體上下文識別字的方法的流程圖。在方塊310,載入與進程相關聯的指令。該進程(以及對應載入的指令)與對應未壓縮的軟體上下文識別字(例如,安全狀態112、異常級別114、ASID 116、VMID 118或其組合)相關聯。在方塊320,檢驗特定暫存器中存儲的當前壓縮的軟體上下文識別字215的有
效性。例如,在檢測特定暫存器中存儲的當前壓縮的軟體上下文識別字215的有效性方面,檢測對應指示符。可選擇地,當前壓縮的軟體上下文識別字的有效性基於當前壓縮的軟體上下文識別字的值或者對應壓縮的ASID 117和對應壓縮的VMID 119的值進行確定,例如,當對應壓縮的ASID 117和對應壓縮的VMID 119均等於0時,當前壓縮的軟體上下文識別字被確定為無效。
如果在方塊320當前壓縮的軟體上下文識別字被確定為有效,則在方塊360基於當前壓縮的軟體上下文識別字被確定為有效存取記憶體空間作為執行操作的一部分。根據示例實現方式,針對其中進程指示虛擬機器或安全狀態(例如,EL=2或3)的情況限定預定壓縮的軟體上下文識別字。此預定壓縮的軟體上下文識別字分別從翻譯表存儲。如此,如果在方塊320內容壓縮的軟體上下文識別字被確定為無效,則在方塊330檢測對應於該進程的異常級別114。如果異常級別114被確定指示管理程式或進程運行安全監視器,則在方塊334對應預定壓縮的軟體上下文識別字被確定為待用於存取記憶體空間的壓縮的軟體上下文識別字215。在方塊360,記憶體空間繼而使用預定壓縮的軟體上下文識別字進行存取。如果異常級別114被確定指示使用者或作業系統進程(例如,EL=0或1),則對應於所載入指令的未壓縮的軟體上下文識別字在方塊338被讀取並且用於在方塊340針對對應壓縮的軟體上下文識別字215探測翻譯表。
當在方塊340探測翻譯表時,針對對應於載入指令的軟體上下文識別字檢測翻譯表。如果在方塊340在翻譯表中找到對應於載入指令的軟體上下文識別字,則從翻譯表確定對應壓縮的軟體上下文識別字215,並
且在360該壓縮的軟體上下文識別字215被獲取並用於存取記憶體空間。如果採用多個翻譯表(例如,如第2C圖所示),則在方塊取得或獲取壓縮的軟體上下文識別字215可以包括將多個壓縮的識別字(例如,117和119)連接成壓縮的軟體上下文識別字215。
然而,如果在方塊340在翻譯表中沒有找到對應於載入指令的未壓縮的軟體上下文識別字,未壓縮的軟體上下文識別字和對應壓縮的軟體上下文識別字(例如,215或117和119)被分配在翻譯表中。在方塊350,針對可用空間檢測翻譯表(例如,210、210a、210b)以分配對應於載入指令的軟體上下文識別字。如果在方塊350發現翻譯表已滿,則在方塊354沖洗翻譯表(例如,刪除對應內容),並且在經沖洗的翻譯表中載入對應於載入指令的未壓縮的軟體上下文識別字並且對應壓縮的識別字被指派給載入的未壓縮的軟體上下文識別字。一旦對應壓縮的軟體上下文識別字(例如,215、117或119)被指派,則在方塊360壓縮的軟體上下文識別字215用於存取記憶體空間。如果發現翻譯表未滿,則在方塊358在翻譯表中載入對應於載入指令的未壓縮的軟體上下文識別字並且將對應壓縮的識別字指派給經載入的未壓縮的軟體上下文識別字。繼而,在方塊360,壓縮的軟體上下文識別字215用於存取與其進程或經載入的指令相關聯的記憶體空間。
翻譯表中的軟體上下文識別字可以藉由若干不同方式被無效。當翻譯表已滿時,由於所有條目已被分配或者許多表中對應於欄位的一個表已滿,翻譯表被沖洗,其自動無效翻譯表中的所有條目。可選擇地,特定處理器內核操作可以使得軟體上下文識別字被無效。例如,在ARM處理器晶片中,處理器內核可以發佈針對特定VMID的TLB擊落指令。因此,
對應於特定VMID的所有位址翻譯從內核處理器移除。如此,對應於被無效的特定VMID的所有壓縮的識別字被無效。經無效的壓縮的識別字不被重用,直到或除非整個翻譯表被沖洗。如此,避免了翻譯表中與經無效的壓縮的識別字有關的任何正確性問題。同樣,當無效翻譯表中的壓縮識別字時,如果經無效的壓縮的識別字存儲在記憶體暫存器中,也在記憶體暫存器中無效該相同的壓縮的識別字。因此,經無效的壓縮的軟體上下文識別字不用於探測微處理器的硬體結構(例如,記憶體)。
本領域通常知識者應當理解,針對第3圖所述方法的實施方式可以藉由不同方式實現,取決於限定的未壓縮的軟體上下文識別字以及實現從未壓縮的識別字翻譯成壓縮的識別字的方式。
雖然本發明已經針對其示例實施方式具體示出並描述,但是本領域通常知識者應當理解可以對形式和細節進行各種修改,而不脫離所附權利要求書包括的本發明的範圍
310‧‧‧方塊
320‧‧‧方塊
330‧‧‧方塊
334‧‧‧方塊
338‧‧‧方塊
340‧‧‧方塊
350‧‧‧方塊
354‧‧‧方塊
358‧‧‧方塊
360‧‧‧方塊
Claims (26)
- 一種用於處理一處理器元件內進程的方法,所述方法包括:維護將未壓縮的進程上下文識別字映射到對應壓縮的識別字的一翻譯表,所述未壓縮的進程上下文識別字和所述對應壓縮的識別字與位址空間或對應電腦進程相關聯;以及採用所述壓縮的識別字來探測執行操作時所述處理器元件的一個或多個結構。
- 如請求項1所述的方法,其中所述處理器元件的所述一個或多個結構包括一資料快取記憶體、一指令快取記憶體、一頁表步行器快取記憶體、一翻譯後援緩衝器(TLB)和一微翻譯後援緩衝器(μTLB)中的至少一個。
- 如請求項1所述的方法,進一步包括將與所述處理器元件中運行的電腦進程相關聯的一壓縮的識別字存儲在一暫存器內。
- 如請求項3所述的方法,其中執行所述操作包括:確定所述暫存器中存儲的所述壓縮的識別字是否有效;以及在確定所述壓縮的識別字有效之後,使用有效的所述壓縮的識別字來探測執行所述操作時所述處理器元件的一個或多個結構。
- 如請求項4所述的方法,進一步包括:在確定所述壓縮的識別字無效之後,基於與所述操作相關聯的一未壓縮的進程上下文識別字,針對被映射到所述未壓縮的進程上下文識別字的一個其他壓縮的識別字搜索所述翻譯表;如果在所述翻譯表中找到所述一個其他壓縮的識別字,則使用所 述一個其他壓縮的識別字來探測執行所述操作時所述內核處理器的一個或多個結構;以及如果在所述翻譯表中沒有找到所述一個其他壓縮的識別字,則在所述翻譯表中生成被映射到所述未壓縮的進程上下文識別字的一新的壓縮的識別字,並且使用生成的所述新的壓縮的識別字來探測執行所述操作時所述處理器元件的一個或多個結構。
- 如請求項1所述的方法,進一步包括生成所述翻譯表。
- 如請求項1所述的方法,其中所述處理器元件是一多核處理器,並且所述翻譯表在所述多核處理器內的兩個或更多個內核處理器之間共用。
- 如請求項1所述的方法,其中所述處理器元件是一多核處理器,並且所述多核處理器內的每個內核處理器獨立於任何其他內核處理器來維護一翻譯表。
- 如請求項1所述的方法,其中每個未壓縮的進程上下文識別字包括一個或多個未壓縮的欄位。
- 如請求項9所述的方法,其中每個未壓縮的進程上下文識別字內的至少一個未壓縮的欄位被翻譯成所述對應壓縮的識別字內的一壓縮的欄位。
- 如請求項9所述的方法,其中基於忽略所述至少一個未壓縮的欄位一的指示,每個未壓縮的進程上下文識別字內的至少一個未壓縮的欄位不被翻譯成所述對應壓縮的識別字內的一壓縮的欄位。
- 如請求項9所述的方法,其中每個未壓縮的進程上下文識別字包括多 個未壓縮的欄位,並且其中生成每個未壓縮的進程上下文識別字包括:將所述未壓縮的進程上下文識別字的兩個或更多個未壓縮的欄位翻譯成對應兩個或更多個壓縮的欄位;以及將所述兩個或更多個壓縮的欄位連接以生成所述壓縮的進程識別字。
- 如請求項1所述的方法,其中一壓縮的識別字與電腦進程的一類別相關聯。
- 一種電腦晶片,包括:一個或多個內核處理器,所述一個或多個內核處理器中的至少一個內核處理器被配置為:維護將未壓縮的進程上下文識別字映射到對應壓縮的識別字的一翻譯表,所述未壓縮的進程上下文識別字和所述對應壓縮的識別字與位址空間或對應電腦進程相關聯;以及採用所述壓縮的識別字來探測執行所述處理器晶片內的操作時所述一個或多個內核處理器的所述至少一個內核處理器的一個或多個結構。
- 如請求項14所述的處理器晶片,其中所述處理器元件的所述一個或多個結構包括一資料快取記憶體、一指令快取記憶體、一頁表步行器快取記憶體、一翻譯後援緩衝器(TLB)和一微翻譯後援緩衝器(μTLB)中的至少一個。
- 如請求項14所述的處理器晶片,其中所述一個或多個內核處理器的 所述至少一個內核處理器包括一暫存器被配置為存儲與所述內核處理器中運行的電腦進程相關聯的一壓縮的識別字。
- 如請求項16所述的處理器晶片,其中執行所述操作時,所述一個或多個內核處理器的所述至少一個內核處理器進一步被配置為:確定所述暫存器中存儲的所述壓縮的識別字是否有效;以及在確定所述壓縮的識別字有效之後,使用有效的所述壓縮的識別字來探測執行所述操作時所述一個或多個內核處理器的所述至少一個內核處理器的一個或多個結構。
- 如請求項17所述的處理器晶片,其中所述一個或多個內核處理器的所述至少一個內核處理器進一步被配置為:在確定找到的所述壓縮的識別字無效之後,基於與所述操作對應的一未壓縮的進程上下文識別字,針對被映射到所述未壓縮的進程上下文識別字的一個其他壓縮的識別字搜索所述翻譯表;如果在所述翻譯表中找到所述一個其他壓縮的識別字,則使用所述一個其他壓縮的識別字來探測執行所述操作時所述一個或多個內核處理器的所述至少一個內核處理器的一個或多個結構;以及如果在所述翻譯表中沒有找到所述一個其他壓縮的識別字,則在所述翻譯表中生成被映射到所述未壓縮的進程上下文識別字的一新的壓縮的識別字,並且使用生成的所述新的壓縮的識別字來探測執行所述操作時所述一個或多個內核處理器的所述至少一個內核處理器的一個或多個結構。
- 如請求項14所述的處理器晶片,其中所述一個或多個內核處理器的 所述至少一個內核處理器進一步被配置為生成所述翻譯表。
- 如請求項14所述的處理器晶片,其中所述處理器晶片是一多核處理器,並且兩個或更多個內核處理器被配置為共用相同翻譯表。
- 如請求項14所述的處理器晶片,其中所述處理器晶片是一多核處理器,並且每個內核處理器被配置為獨立於任何其他內核處理器來維護一翻譯表。
- 如請求項14所述的處理器晶片,其中每個未壓縮的進程上下文識別字包括一個或多個未壓縮的欄位。
- 如請求項22所述的處理器晶片,其中所述一個或多個內核處理器的所述至少一個內核處理器被配置為將每個未壓縮的進程上下文識別字內的至少一個未壓縮的欄位翻譯成對應所述壓縮的識別字內的一壓縮的欄位。
- 如請求項22所述的處理器晶片,其中所述一個或多個內核處理器的所述至少一個內核處理器被配置為基於忽略所述至少一個未壓縮的欄位的一指示,不將每個未壓縮的進程上下文識別字內的至少一個未壓縮的欄位翻譯成對應所述壓縮的識別字內的一壓縮的欄位。
- 如請求項22所述的處理器晶片,其中每個未壓縮的進程上下文識別字包括多個未壓縮的欄位,並且其中所述一個或多個內核處理器的所述至少一個內核處理器被配置為:將所述未壓縮的進程上下文識別字的兩個或更多個未壓縮的欄位翻譯成對應兩個或更多個壓縮的欄位;以及將所述兩個或更多個壓縮的欄位連接以生成所述壓縮的進程識 別字。
- 如請求項14所述的處理器晶片,其中一壓縮的識別字與電腦進程的類別相關聯。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/080,389 US9323715B2 (en) | 2013-11-14 | 2013-11-14 | Method and apparatus to represent a processor context with fewer bits |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201531865A true TW201531865A (zh) | 2015-08-16 |
TWI541661B TWI541661B (zh) | 2016-07-11 |
Family
ID=53044846
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW103138879A TWI541661B (zh) | 2013-11-14 | 2014-11-10 | 用於藉由較少位元來表示處理器上下文的方法和裝置 |
Country Status (5)
Country | Link |
---|---|
US (1) | US9323715B2 (zh) |
KR (1) | KR101694591B1 (zh) |
CN (1) | CN104636203B (zh) |
HK (1) | HK1207436A1 (zh) |
TW (1) | TWI541661B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9703722B2 (en) * | 2014-11-14 | 2017-07-11 | Cavium, Inc. | Method and system for compressing data for a translation look aside buffer (TLB) |
US9870328B2 (en) | 2014-11-14 | 2018-01-16 | Cavium, Inc. | Managing buffered communication between cores |
US9501425B2 (en) | 2014-11-14 | 2016-11-22 | Cavium, Inc. | Translation lookaside buffer management |
US9665505B2 (en) | 2014-11-14 | 2017-05-30 | Cavium, Inc. | Managing buffered communication between sockets |
US9779028B1 (en) | 2016-04-01 | 2017-10-03 | Cavium, Inc. | Managing translation invalidation |
US10540292B2 (en) * | 2016-06-08 | 2020-01-21 | Google Llc | TLB shootdowns for low overhead |
CN108710584B (zh) * | 2018-05-22 | 2021-08-31 | 郑州云海信息技术有限公司 | 一种提高tlb刷新效率的方法 |
US11327759B2 (en) | 2018-09-25 | 2022-05-10 | Marvell Asia Pte, Ltd. | Managing low-level instructions and core interactions in multi-core processors |
US11216385B2 (en) * | 2019-05-15 | 2022-01-04 | Samsung Electronics Co., Ltd. | Application processor, system-on chip and method of operating memory management unit |
US11119945B1 (en) | 2020-04-23 | 2021-09-14 | International Business Machines Corporation | Context tracking for multiple virtualization layers in a virtually tagged cache |
US11625479B2 (en) * | 2020-08-27 | 2023-04-11 | Ventana Micro Systems Inc. | Virtually-tagged data cache memory that uses translation context to make entries allocated during execution under one translation context inaccessible during execution under another translation context |
US11620377B2 (en) | 2020-08-27 | 2023-04-04 | Ventana Micro Systems Inc. | Physically-tagged data cache memory that uses translation context to reduce likelihood that entries allocated during execution under one translation context are accessible during execution under another translation context |
WO2023064590A1 (en) * | 2021-10-17 | 2023-04-20 | SiFive, Inc. | Software indirection level for address translation sharing |
Family Cites Families (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3952216B2 (ja) * | 1995-11-27 | 2007-08-01 | 富士通株式会社 | 翻訳装置及び辞書検索装置 |
US5696927A (en) * | 1995-12-21 | 1997-12-09 | Advanced Micro Devices, Inc. | Memory paging system and method including compressed page mapping hierarchy |
FI111493B (fi) * | 2000-09-22 | 2003-07-31 | Nokia Corp | Kontekstitunnisteen määrittäminen otsikkokenttien kompressoinnissa |
US6813522B1 (en) * | 2000-12-29 | 2004-11-02 | Emc Corporation | Method of sharing memory in a multi-processor system including a cloning of code and data |
US6728858B2 (en) * | 2001-03-30 | 2004-04-27 | Intel Corporation | Method and apparatus including heuristic for sharing TLB entries |
GB2416099B (en) * | 2001-10-24 | 2006-05-31 | Accenture Global Services Gmbh | Data processing system and method |
EP1394999A1 (en) * | 2002-08-07 | 2004-03-03 | Infineon Technologies AG | Method for routing of data packets and routing apparatus |
US7552254B1 (en) * | 2003-07-30 | 2009-06-23 | Intel Corporation | Associating address space identifiers with active contexts |
JP4625337B2 (ja) * | 2004-02-23 | 2011-02-02 | 株式会社リコー | プロセス管理装置、プロセス管理方法及びプロセス管理プログラム |
US7136943B2 (en) * | 2004-03-18 | 2006-11-14 | International Business Machines Corporation | Method and apparatus for managing context switches using a context switch history table |
JP4788124B2 (ja) * | 2004-09-16 | 2011-10-05 | 株式会社日立製作所 | データ処理システム |
US20060136608A1 (en) | 2004-12-22 | 2006-06-22 | Gilbert Jeffrey D | System and method for control registers accessed via private operations |
JP2007011580A (ja) * | 2005-06-29 | 2007-01-18 | Toshiba Corp | 情報処理装置 |
US7602778B2 (en) | 2005-06-29 | 2009-10-13 | Cisco Technology, Inc. | System and methods for compressing message headers |
CN100573476C (zh) * | 2005-09-25 | 2009-12-23 | 深圳市朗科科技股份有限公司 | 闪存介质数据管理方法 |
CA2693923C (en) * | 2007-07-19 | 2013-01-29 | Research In Motion Limited | Method and system for reducing contexts for context based compression systems |
US8885644B2 (en) * | 2008-02-28 | 2014-11-11 | Alcatel Lucent | Compressed IP flow recognition for in-line, integrated mobile DPI |
US20090320031A1 (en) * | 2008-06-19 | 2009-12-24 | Song Justin J | Power state-aware thread scheduling mechanism |
US8024620B2 (en) * | 2008-07-25 | 2011-09-20 | Freescale Semiconductor, Inc. | Dynamic address-type selection control in a data processing system |
US8402279B2 (en) | 2008-09-09 | 2013-03-19 | Via Technologies, Inc. | Apparatus and method for updating set of limited access model specific registers in a microprocessor |
US8000245B2 (en) * | 2009-01-29 | 2011-08-16 | Alcatel Lucent | Internet protocol header compression reordering |
US8185717B2 (en) * | 2009-07-20 | 2012-05-22 | Mips Technologies, Inc. | Apparatus and method for profiling software performance on a processor with non-unique virtual addresses |
US20140195287A1 (en) * | 2009-08-21 | 2014-07-10 | Christopher Ian Fraser | Gesture based electronic signature |
DE102009059939A1 (de) * | 2009-12-22 | 2011-06-30 | Giesecke & Devrient GmbH, 81677 | Verfahren zum Komprimieren von Bezeichnern |
US20110161620A1 (en) * | 2009-12-29 | 2011-06-30 | Advanced Micro Devices, Inc. | Systems and methods implementing shared page tables for sharing memory resources managed by a main operating system with accelerator devices |
US8832381B2 (en) * | 2011-02-21 | 2014-09-09 | Advanced Micro Devices, Inc. | Cache and a method for replacing entries in the cache |
US9049073B2 (en) * | 2011-06-28 | 2015-06-02 | Rovi Guides, Inc. | Systems and methods for initializing allocations of transport streams based on historical data |
US8553688B2 (en) * | 2011-07-28 | 2013-10-08 | Cisco Technology, Inc. | Dynamic allocation of context identifiers for header compression |
US8868674B2 (en) * | 2011-11-30 | 2014-10-21 | Exar Corporation | Streaming and bulk data transfer transformation with context switching |
US8640230B2 (en) * | 2011-12-19 | 2014-01-28 | International Business Machines Corporation | Inter-thread communication with software security |
WO2013095515A1 (en) | 2011-12-22 | 2013-06-27 | Intel Corporation | Packed data operation mask register arithmetic combination processors, methods, systems, and instructions |
US9152572B2 (en) * | 2011-12-30 | 2015-10-06 | Intel Corporation | Translation lookaside buffer for multiple context compute engine |
US9047561B2 (en) * | 2012-05-30 | 2015-06-02 | Sap Se | Contextual network access optimizer |
CN103577301B (zh) * | 2012-07-20 | 2017-12-05 | 腾讯科技(深圳)有限公司 | 一种显示进程信息的方法和终端 |
US9117502B2 (en) * | 2013-02-06 | 2015-08-25 | Fixnetix Ltd. | System and method for memory management of unique alpha-numeric order identifiers subjected to hashing and truncation for mapping to limited memory space |
US9020436B2 (en) * | 2013-03-13 | 2015-04-28 | Intel Corporation | System and method for automated pairing between remote control and controllable device using compressed identifiers |
WO2014185729A1 (en) * | 2013-05-15 | 2014-11-20 | Lg Electronics Inc. | Apparatus for transmitting broadcast signals, apparatus for receiving broadcast signals, method for transmitting broadcast signals and method for receiving broadcast signals |
JP6266802B2 (ja) * | 2013-11-13 | 2018-01-24 | エルジー エレクトロニクス インコーポレイティド | 放送信号送信装置、放送信号受信装置、放送信号送信方法、及び放送信号受信方法 |
-
2013
- 2013-11-14 US US14/080,389 patent/US9323715B2/en not_active Expired - Fee Related
-
2014
- 2014-11-10 TW TW103138879A patent/TWI541661B/zh active
- 2014-11-13 KR KR1020140157977A patent/KR101694591B1/ko active IP Right Grant
- 2014-11-13 CN CN201410641566.2A patent/CN104636203B/zh active Active
-
2015
- 2015-08-18 HK HK15107950.6A patent/HK1207436A1/zh not_active IP Right Cessation
Also Published As
Publication number | Publication date |
---|---|
CN104636203A (zh) | 2015-05-20 |
US9323715B2 (en) | 2016-04-26 |
KR20150056058A (ko) | 2015-05-22 |
KR101694591B1 (ko) | 2017-01-09 |
US20150134931A1 (en) | 2015-05-14 |
TWI541661B (zh) | 2016-07-11 |
HK1207436A1 (zh) | 2016-01-29 |
CN104636203B (zh) | 2018-05-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI541661B (zh) | 用於藉由較少位元來表示處理器上下文的方法和裝置 | |
US20220050791A1 (en) | Linear to physical address translation with support for page attributes | |
US9086989B2 (en) | Extending processor MMU for shared address spaces | |
US10649907B2 (en) | Apparatus and method for handling page invalidate requests in an address translation cache | |
Yaniv et al. | Hash, don't cache (the page table) | |
JP5608594B2 (ja) | プレロード命令制御 | |
US9092359B2 (en) | Identification and consolidation of page table entries | |
US8296547B2 (en) | Loading entries into a TLB in hardware via indirect TLB entries | |
US9152572B2 (en) | Translation lookaside buffer for multiple context compute engine | |
US10191853B2 (en) | Apparatus and method for maintaining address translation data within an address translation cache | |
US7734892B1 (en) | Memory protection and address translation hardware support for virtual machines | |
US10146545B2 (en) | Translation address cache for a microprocessor | |
Zhao et al. | Umbra: Efficient and scalable memory shadowing | |
US8190652B2 (en) | Achieving coherence between dynamically optimized code and original code | |
JP6273733B2 (ja) | 演算処理装置、情報処理装置、情報処理装置の制御方法および情報処理装置の制御プログラム | |
JP2018504694A (ja) | 仮想アドレスを使用してアクセスされるキャッシュ | |
JP7062695B2 (ja) | 論理ディレクトリを使用したキャッシュ構造 | |
US20190171376A1 (en) | Permission control for contingent memory access program instruction | |
CN104885063A (zh) | 针对转译后备缓冲器(tlb)的重叠检查 | |
CN111367831A (zh) | 翻译页表的深度预取方法、部件、微处理器及计算机设备 | |
KR20160035545A (ko) | 디스크립터 링 관리 | |
US20160048453A1 (en) | Multiprocessor computer system | |
CN105989758B (zh) | 地址翻译方法和装置 | |
TWI787451B (zh) | 用於資料處理的方法、設備、電腦程式、與儲存器媒體 | |
US8527736B1 (en) | Systems and methods for improving address translation speed |