TWI748970B - 用於遠端監視的設備 - Google Patents
用於遠端監視的設備 Download PDFInfo
- Publication number
- TWI748970B TWI748970B TW105139272A TW105139272A TWI748970B TW I748970 B TWI748970 B TW I748970B TW 105139272 A TW105139272 A TW 105139272A TW 105139272 A TW105139272 A TW 105139272A TW I748970 B TWI748970 B TW I748970B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- processor
- core
- cache
- unit
- Prior art date
Links
Images
Classifications
-
- 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
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0831—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
- G06F12/0833—Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means in combination with broadcast means (e.g. for invalidation or updating)
-
- 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
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0815—Cache consistency protocols
- G06F12/0817—Cache consistency protocols using directory methods
-
- 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
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- 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
- G06F12/0875—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1605—Handling requests for interconnection or transfer for access to memory bus based on arbitration
- G06F13/1652—Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
- G06F13/1663—Access to shared memory
-
- 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
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/31—Providing disk cache in a specific location of a storage system
- G06F2212/314—In storage network, e.g. network attached cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/621—Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/62—Details of cache specific to multiprocessor cache arrangements
- G06F2212/622—State-only directory, i.e. not recording identity of sharing or owning nodes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
描述了用於遠端監視的系統、方法和裝置的實施例。在一些實施例中,設備包括用以監視至位址空間之記憶體存取的至少一監視電路;用以儲存該位址空間之識別符之至少一監視表;以及該核心使用的每一核心的標籤目錄,其用來追蹤有對該位址空間存取之實體。
Description
本發明領域一般係有關於電腦處理器架構,以及更具體地係有關於遠端監視。
由於光纖延遲預計達到記憶體延遲的順序,分散式共享記憶體(distributed shared memory;DSM)系統可以向光纖上伺服器的集群提供大的單個位址空間;從而為“放大”節點控制器系統提供可擴展的、有成本效益的替代方案。然而,DSM缺點之一為用於應用的記憶體參考之快取同調性問題。對於企業或大數據應用,幾種類型的記憶體參考,諸如在系統上運行的每個處理的堆疊和暫時儲存不需要同調。另一方面,經常有應用需要確保通調性的碼區段(例如:異動處理的關鍵區段)。沒有能力提供某種形式的同調性,DSM在我們的光纖上的使用在處理基於異動處理的能力上有障礙。這可能是一個嚴重的限制因素,因為產業正在趨向於分析和異動處理的統一系統。
101:處理器
103:記憶體
105:操作系統
107:應用
109:API
201:網路通訊端
203:監視表
205:核心
207:標籤目錄結構
209:CHA
211:光纖介面
213:晶粒互連硬體
215:本地代理
301:標籤目錄
303:記憶體大小粒度
305:位址散列
307:追蹤粒度
309:遠端節點指示符
701、705、711、715:核心
703、713:CHA
707、709:光纖
717:互連
800:暫存器架構
810:向量暫存器
815:向量暫存器
825:通用暫存器
845:純量浮點堆疊暫存器檔
850:MMX緊縮整數平面暫存器檔
900:處理器管線
902:提取階段
904:長度解碼階段
906:解碼階段
908:配置階段
910:重新命名階段
912:排程階段
914:暫存器讀取/記憶體讀取階段
916:執行階段
918:回寫/記憶體寫入階段
922:例外處置階段
924:確定階段
930:前端單元
932:分支預測單元
934:指令快取單元
936:指令翻譯旁看緩衝器(TLB)
938:指令提取單元
940:解碼單元
950:執行引擎單元
952:重新命名/配置器單元
954:撤回單元
956:排程器單元
958:實體暫存器檔單元
960:執行叢集
962:執行單元
964:記憶體存取單元
970:記憶體單元
972:資料TLB單元
974:資料快取單元
976:第二階(L2)快取單元
990:處理器核心
1000:指令解碼器
1002:晶粒上互連網路
1004:第二階(L2)快取記憶體
1006:L1快取記憶體
1006A:L1資料快取
1008:純量單元
1010:向量單元
1012:純量暫存器
1014:向量暫存器
1020:調合單元
1022A-B:數值轉換單元
1024:複製單元
1026:寫入遮蔽暫存器
1028:16-寬的ALU
1100:處理器
1102A-N:核心
1106:共享快取單元
1108:特殊用途邏輯
1110:系統代理
1112:環式為基的互連單元
1114:積體記憶體控制器單元
1116:匯流排控制器單元
1200:系統
1210、1215:處理器
1220:控制器集線器
1240:記憶體
1245:共處理器
1250:輸入/輸出集線器(IOH)
1260:輸入/輸出(I/O)裝置
1290:圖形記憶體控制器集線器(GMCH)
1295:連接
1300:多處理器系統
1314:I/O裝置
1315:額外處理器
1316:第一匯流排
1318:匯流排橋接器
1320:第二匯流排
1322:鍵盤及/或滑鼠
1324:音頻I/O
1327:通訊裝置
1328:儲存單元
1330:指令/代碼及資料
1332:記憶體
1334:記憶體
1338:共處理器
1339:高性能介面
1350:點對點互連
1352、1354:P-P介面
1370:第一處理器
1372、1382:積體記憶體控制器(IMC)單元
1376、1378:點對點(P-P)介面
1380:第二處理器
1386、1388:P-P介面
1390:晶片組
1394、1398:點對點介面電路
1396:介面
1400:系統
1414:I/O裝置
1415:舊有I/O裝置
1500:SoC
1502:互連單元
1510:應用程式處理器
1520:共處理器
1530:靜態隨機存取記憶體(SRAM)單元
1532:直接記憶體存取(DMA)單元
1540:顯示單元
1602:高階語言
1604:x86編譯器
1606:x86二進制碼
1608:指令集編譯器
1610:指令集二進制碼
1612:指令轉換器
1614:不具至少一x86指令集核心之處理器
1616:具有至少一x86指令集核心之處理器
本發明透過範例而非限制的方式在附圖的圖中示出,其中相同的元件編號指示相似的元件,並且其中:圖1示出使用用於快取同調性之API的系統實施例;圖2示出支援遠端監控之系統實施例;圖3示出標籤目錄的實施例;圖4示出透過包括註冊的監視來使用快取同調性的例示性實施例;圖5示出在接收側上監視的使用之例示性實施例;圖6示出在接收側上重置的使用之例示性實施例;圖7根據一實施例之初始化和最終化方法的範例;圖8為根據本發明一實施例之暫存器架構的方塊圖。
圖9A根據本發明實施例示出有序管線之範例及暫存器重新命名、失序簽發/執行管線之範例二者的方塊圖;圖9B根據本發明實施例示出包括在處理器中有序管線之實施例及暫存器重新命名、失序簽發/執行架構核心之實施例二者的方塊圖;圖10A-B例示說明有序核心架構之更特定實施例之方塊圖,該核心將為晶片中數個邏輯區塊中之一者(包括相同類別和/或不同類別的其它核心);圖11為根據本發明實施例之處理器的方塊圖,該處理器可具有多於一個核心、可具有整合記憶體控制器及可具有整合圖形;圖12至圖15為之電腦架構範例之方塊圖;以及
圖16為根據本發明實施例之對比軟體指令轉換器用以將在來源指令集中之二進制指令轉換成在目標指令集中之二進制指令的方塊圖。
下面詳細敘述的是向軟體提供掛鉤的硬體的實施例,使得軟體可以在跨越非同調性領域的分散式共享記憶體系統中實施有限的、使用情況特定形式的快取同調性。特別地,本文討論的實施例係有關於應用編程介面(API)、分散式目錄方案和硬體用於追蹤遠端參考的基於濾波器的目錄。
圖1示出使用用於快取同調性之API的系統實施例。記憶體103係耦合至執行儲存在記憶體103的指令之處理器101。儲存在記憶體103中的是操作系統105、應用107以及API 109。應用呼叫API 109標示要由遠端節點在光纖上或在互連上的參考的「追蹤的」記憶體區域。這個追蹤可以通過對mcoherent( )的程式庫呼叫來完成;應用使用來標記用於追蹤的記憶體區域。這個API 109的使用之範例是:#include<fabriccoh.h>/*以一些特定的提示標記用於追蹤之記憶體區域*/int mcoherent(void *addr,unsigned long len,int track_size,list track_nodes,int snoop_hint);/*重置記憶體區域追蹤*/
int mreset(void *addr);int msnoop(void *addr);int minvalidate(void *addr);int mupdate(void *addr);記憶體範圍有*addr(位址)以及len(位址區域之長度或大小)。應用(經由API)也使用track_size變數指示要追蹤記憶體區域的粒度。範例大小為TRACK_LINE(64B)、TRACK_PAGE(4kB)、TRACK_LARGE_PAGE(2M)或TRACK_HUGE_PAGE(1G),其分別指示監視的單元是快取線、分頁、大分頁或巨分頁。這是有用的,因為應用可能具有關於如何使用記憶體區域的一些知識。例如,應用可以期望遠端節點可以對隔離行進行操作並且僅修改隔離行,或者應用可以期望遠端節點可以對成批操作進行操作並修改更大的行集合。或者應用可以知道當某個資料結構被修改時,它總是被整體修改。根據使用情況,不同大小的追蹤可能更有效。
基於為track_size指定的內容,適當地修改分散式目錄「遠端」位元的使用(例如,將該區域的第一快取線處的「遠端」位元用作該區域的代理)。應用還可以期望只有群集內的某個節點子集在給定資料結構的同調性領域。例如,可以知道在32個節點集群中,僅節點3、4、5、6正在運行可能需要存取記憶體區域的程序。在這種情況下,應用可以告訴硬體只有這個特定的節點列表需要被追蹤-並且這是使用mcoherent( )的track_nodes參數指定
的。通常,track_nodes的預設是所有節點。
應用可以提供的另一個提示是關於它如何使用同調性來追蹤粒度。例如,如果應用僅提供最終同調性或概率性綁定僵死保證的一些概念,當與強一致性之使用相比時,其可能不需要積極地/頻繁地(在一些阻障下可能足夠)窺探修改的區域。由於窺探流量可能淹沒光纖或互連,硬體可以使用應用的提示來權衡目錄空間與光纖/互連帶寬。如果窺探可能不那麼頻繁,則監視“遠端節點組”可能就足夠了。例如,32個節點群集可以具有4個節點組、每個節點組具有8個節點,並且兩個位元足以追蹤這些節點組。當應用想要實施同調性時,由於不知道在組內哪些節點被參考/使用被追蹤的記憶體,所以對該組內的所有節點設置窺探。如果僅在某些阻障下實施同調性,這可能是可接受的,因為窺探將更不頻繁地發送。在更強的一致性要求的情況下,窺探可能需要更頻繁地發送,並且可能需要瞄準精確的節點,並且以更精細的粒度追蹤。使用snoop_hint變量用於同調性的預期頻率/主動性,該變量可以設置為FREQUENT,INFREQUENT等。
可以使用額外的旗標,例如模式和旗標變量,以指定由應用提供之有關於指定記憶體範圍的提示。例如,在系統中的幾個其他表中可以存在主管異動的特定表,並且應用可能希望針對同調性來追蹤該表。
用於實現上述語義的硬體的實施例,API(mreset,msnoop等)在本文被詳細描述。圖2示出支援遠端監控
之系統實施例。典型的網路通訊端(Socket)201包括複數個處理器核心205、晶粒上互連硬體213以及光纖介面211。遠端監視可以從節點內的網路通訊端到網路通訊端(透過同調性晶粒上互連213)或在光纖切換和光纖介面211之間使用的節點。如此一來,根據監視請求所針對的位址空間,請求可以去往同一節點的本地記憶體,它們可以在晶粒上互連213至將請求路由到相同同調性領域內的其他處理器,或者它們可以通過在同調性領域之外的主光纖介面(Host Fabric Interface;HFI)211至處理器。一個系統可以由一或多個同調性領域組成,所述同調性領域是透過光纖互連連接的所有同調性領域。例如,高性能計算或資料中心由可以使用光纖彼此通訊的N個群集或伺服器組成。使用該光纖,每個同調性領域可以將一些位址區域暴露給其他同調性領域。然而,不同同調性領域之間的存取是同調的。在大多數情況下,光纖允許映射不同同調性領域之間的記憶體範圍的位址。
節點通常還具有快取代理和/或本地代理215。快取代理是處理來自同一節點內核的記憶體請求的節點內的同調性代理。本地代理(HA)是負責處理來自快取代理的記憶體請求並充當記憶體位址空間的一部分(一個晶粒可以具有含有分散式位址空間映射的多個管理器)的節點群集。在這圖中,每個網路通訊端有本地代理215,然而,在一些實施例中,每個節點有一個本地代理。此外,在一些實施例中,本地代理的功能被包括在快取代理中並且被
稱為快取本地代理(CHA),如209所示。在本說明書中,通常使用CHA以便於描述。
快取代理(諸如CHA 209)是可以將異動發起到同調性記憶體中並且可以在其自己的快取結構中保留副本的實體。快取代理由其可以根據在快取同調性協定中定義的行為來接收和發出的消息來定義。快取代理還可以向其它快取代理提供同調性記憶體內容的副本。本地代理(諸如CHA 209或本地代理215)是服務同調性異動的實體,包括必要時與快取代理進行握手。本地代理監管同調性記憶體的一部分。本地代理負責管理在不同的快取代理之間可能出現的衝突。其按照給定異動流程的要求提供適當的資料以及所有權回應。
此外,本地代理包括具有用於記憶體位址的以下狀態的分散式目錄:清理(這是唯一的副本,例如剛剛回寫的線程)、任何(節點內的任何遠端網路通訊端可具有副本),以及無效(本地網路通訊端的快取有一個副本)。額外的狀態(遠端)指示遠端節點請求了副本,並且當線程的請求源自光纖時可具有及可被更新。
添加監視方案的一個邏輯位置是節點內的本地代理,並且在一些實施例中是這種情況。然而,當分散式方案在HA(節點控制器、散列方案、半球、象限方案等)中映射位址空間時,這可能在設計、區域和驗證方面增加太多的複雜性。如此一來,在一些實施例中,這個監視資訊被保持為監視表(MT)203:1)在到節點的代理器中,將
從其他節點到本地節點(光纖介面211)的任何記憶體異動,2)節點205內的核心,以及3)可以存取本地記憶體而不經過代理器(在晶粒上互連213上)的唯一代理,以識別存取。該表由監視電路(未示出)使用,該電路追蹤記憶體/快取存取,比較對該表的那些存取以及根據請求向任何被存取之起源核心的提醒。
每一代理器及核心可含有固定數目的監視,以及每一監視含有請求監視的位址範圍及原始本地。如果監視中沒有可用條目,則該監視請求失敗。如果請求的位址範圍與另一個監視條目重疊,請求也會失敗。在失敗的情況下,失敗回應將被發送回發起者光纖,並且它將被傳送到軟體堆疊。最終,軟體將在失敗的情況下得到通知,並且需要採取相應的行動。將故障傳播到軟體堆疊的不同方式可以是從核心向軟體堆疊發出回叫(callback)。
分散式記憶體監視方案允許核心執行先前討論的在本地節點至暫存器之API,以監視感興趣的位址範圍。監視方案允許發現由系統中的其它快取代理存取的給定線程何時落在指定的位址範圍內;因此,其更新給定範圍的共享者的有效位元。請求位址範圍的追蹤的核心使用標籤目錄結構207來表示集群中可存取特定位址範圍並由核心使用來追蹤/監視位址範圍的網路通訊端。
此目錄是二維中的非完美標籤目錄。首先,考慮到整個系統可以具有非常大的位址空間,不同的位址可以在相同的標籤條目(於下面解釋)中匹配。第二,共享者的遠
程追蹤資訊(例如,位元遮罩或光暈過濾器(bloom filter))中的每個位元對應於系統中的一組快取代理。與每個核心的標籤目錄相關聯的過濾硬體執行Bloom或其他過濾以測試集合中的包含。
圖3示出標籤目錄的實施例。標籤目錄301中的條目包括用於追蹤記憶體大小粒度303、位址散列305、追蹤粒度307和遠端節點指示符309的欄位。
記憶體大小粒度303和追蹤粒度307可以透過如上所述的mcoherent呼叫提供。因此,可以使用頁面級或巨大頁面級追蹤而不是快取線追蹤來減少目錄中的行數。由使用mcoherent( )的應用指定的提示使得這可以在一些實施例中完成。
作為一個簡化的範例,假設一個8個節點的假想的集群,每個節點有2個網路通訊端,並且每個節點只有4MB的記憶體(每64B有65K線程)。現在在查找目錄中有65K行條目,每一個相應於節點中的一行。在這種情境下,16位元位元遮罩準確地追蹤從此節點請求的記憶體的網路通訊端。然而,實際上,系統具有大得多的記憶體,並且對於查找目錄的空間需求可能迅速變得不切實際。為此,目錄不完美。
光暈過濾或節點組或節點的子集309而不是位元遮罩,以減少目錄的空間複雜性。
為了提供可伸縮性,在一些實施例中,使用散列函數H( )將快取線位址305散列到目錄中的行上,注意行數
小於快取線的數目。H( )的良好選擇可以導致較少的衝突,例如,使用快取線位址的較低位元來確保散列函數的良好分佈。注意,具有衝突並不意味著正確性的任何損失;它僅僅指示潛在的假性異常(false positives):因為兩個快取線映射到目錄中的相同行,我們將結束窺探兩個快取線的“遠端節點”的聯集。
透過選擇好的散列函數以及使用分散式目錄位元(僅當快取線的分散式目錄位元為“遠端”時才需要參考標籤目錄),假性異常的機率變小。同時,需要窺探的節點數量顯著減少。如前所述,進一步權衡是可能的,其透過改變散列的粒度,並使用光暈過濾器追蹤而不是基於使用mcoherent( )API呼叫的應用指定的提示的位元遮罩。
軟體具有基於使用mreset( )API呼叫來重置對應於查找目錄中的記憶體區域的條目的能力,並且這確保目錄的假性異常的數量不隨時間單調地增加(因為基於光暈過濾器的方法變得不太有效,因為過濾器變得完全填充-回呼叫它僅確定是否有東西存在-並且這減少了搜尋空間)。此外,在需要實施同調性的點上,軟體可以查閱目錄結構並且使用API明確地發出遠端窺探、回寫或無效命令。
圖4示出透過包括註冊的監視來使用快取同調性的例示性實施例。在401,第一節點中的第一核心(起源核心)執行監視設置歷程。例如,在圖2中,核心0 205執行mcoherent。
在403,這個執行使得監視請求(監視訊息)從第一核心發送到其對應的快取代理。這個請求包括用以組態監視的資訊(基地位址、粒度、大小和模式)。快取代理管理基線位址以設置所請求的監視。取決於實施方式,快取代理與本地代理是分開的。例如,在圖2中,核心205發送請求至CHA 209(組合快取以及本地代理)。換言之,核心向快取代理報告它想要監視的位址(AS)[base_address到base_address+granularity * size]以及監視的類型(寫入/讀取)。
在405,在一些實施例中,快取代理識別負責管理請求的局部區域本地代理。例如,本地代理負責基地位址。注意,所識別的本地代理可以被組合在與如上所述的快取代理相同的實體(CHA)中。
在407,識別的本地代理識別系統中的什麼節點是核心(線程)想要監視的位址空間的起始(其可以是本地同調性領域)。
在409,一旦識別了位址區域的起始,向代理器發送請求(在圖2說明的的光纖211中或在互連213上)以在本地節點建立監視。換言之,在409,監視訊息代理器連接(監視訊息)從以識別的本地代理發送至遠端節點,其為位址空間的起始。注意,節點可以屬於不同的同調性領域並且使用光纖,或者它可以在相同的同調性領域內。在這種情況下,代理器將是晶粒上互連。
在411,來自代理器連接之有關於監視的註冊的成功
或失敗的回應由起源核心接收。可能導致故障的範例包括但不限制於重疊的位址空間、無空閒監視空間以及硬體故障。如果監視成功,則更新核心的標籤目錄。此外,在大多數實施例中,在被組態之一或多個監視的確認時,在網路通訊端中的所有代理器更新監視表。注意,來自代理器的成功或失敗回應包括放置到標籤目錄中的代理器的識別(使用位元遮罩、光暈過濾等)。在一些實施例中,故障取消對本地節點中的對等體的註冊。
註冊之後,在一些實施例中,至監視的位址空間的異動通知在413接收。例如,遠端監視處理至監視的位址之寫入。這可能由核心或代理器接收。此種通知的接收導致使得標籤目錄被更新以反映存取。例如,顯示資訊309被更新。
在成功的情況下,其中在沒有違規的情況下執行所有不同的操作,請求核心在413發送監視釋放到監視的代理器。例如,核心執行mreset以釋放監視,並且一旦執行釋放指令,核心通知該釋放到遠端代理器(諸如,光纖)。代理器將傳播釋放通知至用於這個監視和核心的真實起始。mreset呼叫的返回將向軟體堆疊返回哪些節點可能潛在地具有用於監視位址範圍的副本的共享者資訊。軟體堆疊負責刷新遠端副本。
圖5示出在接收側上監視的使用之例示性實施例。在501,接收節點之代理器接收啟動監視的請求。換句話說,在作為位址空間之起始的遠端節點接收到監視訊息代
理器連接(監視訊息)。注意,節點可以屬於不同的同調性領域並且使用光纖,或者它可以在相同的同調性領域內。在這種情況下,代理器將是晶粒上互連。
在503,這個請求發送到核心和代理器。
在505,來自核心和代理器之有關於請求的確認由接收代理器(例如,光纖)接收。例如,是否成功地設置了監視。這些確認通常包括回應者的識別符。
在507,這些確認由代理器處理為單一確認,其被發送至起源核心。至起源核心的確認包括正在進行監視的識別符。
圖6示出在接收側上重置的使用之例示性實施例。在601,接收節點的代理器接收釋放監視的請求。換句話說,在作為位址空間之起始的遠端節點接收到監視訊息代理器連接(sreset訊息)。注意,節點可以屬於不同的同調性領域並且使用光纖,或者它可以在相同的同調性領域內。在這種情況下,代理器將是晶粒上互連。
在603,這個請求發送到核心和代理器。
在605,來自核心和代理器之有關於請求的確認由接收代理器(例如,光纖)接收。這些確認通常包括回應者的識別符。
在607,這些確認由代理器處理為單一確認,其被發送至起源核心。至起源核心的確認包括正在進行監視的識別符。
圖7根據一實施例之初始化和最終化方法的範例。發
起核心701執行mcoherent。例如,在核心701上的執行緒使用API呼叫mcoherent。
在節點A中的核心701發送請求至管理基線位址(CHA:CA+HA)的本地快取代理器發送請求,以便設置監視。核心701通知CHA它希望監視的位址空間(AS),其中AS=[base_address至base_address+granularity * size]。
CHA 703識別指明的記憶體區域被映射到哪個起始(諸如網路通訊端)。在一些實施例中,如果該區域屬於幾個起始,則中止指令。CHA 703識別在負責管理請求位址(base_address)的本地同調性域中的本地代理器是什麼。本地代理(CHA 703)識別系統中的什麼節點(網路通訊端)是線程想要監視的位址空間的起始(它可以是本地同調性域)。
CHA 703發送監測訊息代理器連接光纖707以發送到充當AS的起始的遠端節點。在目標側,代理器產生包括代理器之目標至網路通訊端的多播訊息,諸如節點717中的任何晶粒上互連代理以及節點中的任何光纖互連代理709以及起始網路通訊端中的所有核心711和715。
所有目標目的地回應關於監視與確認訊息的註冊的成功或失敗。通常,回應將由接收監視請求的起始節點中的代理器(在範例中是光纖709)來瓦解。在失敗的情況下,它將通知傳播到請求者,並且將取消對起始節點內的其餘對等體的註冊。
在任何代理器代理或核心識別到違反請求的監視AS
的位址空間的異動的情況下,它們將向核心701發送違規訊息來通知它違規。核心701將違規傳播到使用者空間。
當沒有問題或檢測到違規時,核心701將發送註銷訊息,警告代理器核心不需要在AS上進行更多監視。代理器709將傳播釋放通知至用於這個監視和核心的真實起始。注意,核心701將知道代理器識別符,因為在先前詳述的註冊過程中接收到確認。
下面的附圖詳細描述了實現上述實施例的例示性架構和系統。於所示的實施例中,上面敘述的一或多個硬體組件模擬仿真,或者實現為軟體模組。
圖8為根據本發明一實施例之暫存器架構800的方塊圖。於所示的實施例中,將有512位元寬之32向量暫存器810;這些暫存器被被稱為zmm0至zmm31。較低16zmm暫存器的低階256位元重疊在暫存器ymm0-16上。較低16zmm暫存器的低階128位元(ymm暫存器的低階128位元)重疊在戰存器xmm0-15上。
純量操作是對zmm/ymm/xmm暫存器中的最低階資料元件位置執行的操作;高資料元件位置取決於實施例要麼是與它們在指令之前相同不然就是歸零。
於所示的實施例中的寫入遮罩暫存器815,有8個寫入遮罩暫存器(k0到k7),每個64位元大小。在替代實施例中,寫入遮罩暫存器815的大小為16位元。如前所
述,在本發明的一個實施例中,向量遮罩暫存器k0不能用作寫入遮罩;當通常指示k0的編碼用於寫入遮罩時,其選擇0xFFFF的硬線寫入遮罩有效地禁用該指令的寫入遮罩。
通用暫存器825-於所示的實施例中,有16個64位元通用暫存器,它們與現有的x86可定址模式一起使用以尋址記憶體運算元。這些暫存器由名稱RAX、RBX、RCX、RDX、RBP、RSI、RDI、RSP和R8至R15引用。
化名為MMX緊縮整數平面暫存器檔850的純量浮點堆疊暫存器檔(x87堆棧)845-在所示的實施例中,x87堆疊是一個八元素堆棧,用於使用x87指令集擴展對32/64/80位元浮點資料執行純量浮點運算;而MMX暫存器用於對64位元緊縮整數資料執行操作,以及保持在MMX和XMM暫存器之間執行的一些操作的運算元。
本發明的可選實施例可以使用更寬或更窄的暫存器。另外,本發明的替代實施例可以使用更多、更少或不同的暫存器檔和暫存器。
處理器核心可以不同方式、用於不同目的、及於不同處理器實施。舉例言之,此種核心的實施可包括:1)意圖用於通用計算的通用有序核心;2)意圖用於通用計算的高效能通用失序核心;3)主要意圖用於圖形及科學(資料通量)計算的特用核心。不同處理器的實施可包
括:1)一CPU包括一或多個意圖用於通用計算的通用有序核心和/或一或多個意圖用於通用計算的高效能通用失序核心;及2)一共用處理器包括一或多個主要意圖用於圖形及科學(資料通量)計算的特用核心。此等不同處理器結果導致不同的電腦系統架構,其可包括:1)共處理器在與CPU在分開的晶片上;2)共處理器在與CPU相同封裝體內的分開晶粒上;3)共處理器在與CPU相同的晶粒上(於此種情況下,此種共處理器偶爾係稱作特殊用途邏輯,諸如積體圖形和/或科學(資料通量)邏輯,或稱作特用核心);4)單晶片系統可包括在與CPU相同的晶粒上(偶爾稱作應用核心或應用處理器)、前述共處理器、及額外功能。其次描述核心架構實施例,接著描述處理器及電腦架構實施例。
圖9A根據本發明實施例示出有序管線之範例及暫存器重新命名、失序簽發/執行管線之範例二者的方塊圖。圖9B根據本發明實施例示出包括在處理器中有序管線之實施例及暫存器重新命名、失序簽發/執行架構核心之實施例二者的方塊圖。圖9A-B的實線框例示說明有序管線及有序核心,而虛線框的選擇性添加例示說明暫存器重新命名、失序簽發/執行管線及核心。假設有序方面為失序方面的一子集,將描述失序方面。
於圖9A中,處理器管線900包括提取階段902、長度解碼階段904、解碼階段906、配置階段908、重新命名階段910、排程(又稱為調度或簽發)階段912、暫存器讀取/記憶體讀取階段914、執行階段916、回寫入/記憶體寫入入階段918、例外處理階段922、及確定階段924。
圖9B顯示處理器核心990包括前端單元930耦接至執行引擎單元950,以及二者係耦接至記憶體單元970。核心990可為精簡指令集電腦(RISC)核心、複雜指令集電腦(CISC)核心、極長指令字組(VLIW)核心、或混合或其它核心類型。至於又另一選項,核心990可為特用核心,諸如網路或通訊核心、壓縮引擎、共處理器核心、通用圖形處理單元(GPGPU)核心、圖形核心等。
前端單元930包括耦接至一指令快取單元934的分支預測單元932,指令快取單元834係耦接至指令轉譯後備緩衝器(TLB)936,其係耦接至指令提取單元938,其係耦接至一解碼單元940。解碼單元940(或解碼器)可解碼指令,以及產生一或多個微操作作為輸出,微碼進入點、微指令、其它指令、或其它控制信號,其係從原先指令解碼,或以其它方式反映、或推衍。解碼器940可使用多種不同機構實施。適當機構的實施例包括但非僅限於詢查表、硬體實施、可規劃邏輯陣列(PLA)、微碼唯讀記憶體(ROM)等。於一個實施例中,核心990包括一微碼ROM或針對一些巨集指令儲存微碼的其它媒體(例如於
解碼單元940內或否則於前端單元930內部)。解碼單元940係耦接至執行引擎單元950內部的重新命名/配置器單元952。
執行引擎單元950包括重新命名/配置器單元952,耦接至撤回單元954及一或多個程器單元956之集合。排程器單元956表示任何數目的不同排程器,包括保留站、中央指令窗等。排程器單元956係耦接至實體暫存器檔案單元958。實體暫存器檔案單元958各自表示一或多個實體暫存器檔案,其中之不同者儲存一或多個不同資料類別,諸如純量整數、純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點等狀態(例如指令指標器其為欲執行的下個指令的位址)等。於一個實施例中,實體暫存器檔案單元958包含向量暫存器單元、寫入遮罩暫存器單元、及純量暫存器單元。此等暫存器單元可提供架構向量暫存器、向量遮罩暫存器、及通用暫存器。實體暫存器檔案單元958被撤回單元954重疊以例示說明可實施暫存器重新命名與失序執行的多種方式(例如使用重新排序緩衝器及撤回暫存器檔案,使用未來檔案、歷史緩衝器及撤回暫存器檔案;使用暫存器映射表及一匯集物之暫存器等)。撤回單元954及實體暫存器檔案單元958係耦接至執行叢集960。執行叢集960包括一或多個執行單元962之一集合及一或多個記憶體存取單元964之一集合。執行單元962可對各型資料(例如純量浮點、緊縮整數、緊縮浮點、向量整數、向量浮點)執行各項操作(例如移位、加法、減
法、乘法)。雖然有些實施例可包括專用於特定功能或功能集合的多個執行單元,但其它實施例可只包括一個執行單元或多個執行單元,其全部一起執行全部功能。排程器單元956、實體暫存器檔案單元958、及執行叢集960顯示為可能為多數,原因在於一些實施例產生針對一些類別的資料/操作的分開管線(例如純量整數管線、純量浮點/緊縮整數/緊縮浮點/向量整數/向量浮點管線、和/或記憶體存取管線各自具有其本身的排程器單元、實體暫存器檔案單元、和/或執行叢集且於分開記憶體存取管線之情況下,實施一些實施例其中只有此一管線的執行叢集具有記憶體存取單元964)。也須瞭解使用分開管線時,此等管線中之一或多者可為失序簽發/執行及有序靜止。
記憶體存取單元之集合964係耦接至記憶體單元970,其包括一資料TLB單元972耦接至與層級2(L2)快取單元976的一資料快取單元974。在一個具體實施例中,記憶體存取單元964可包括一載入單元、一儲存位址單元、及一儲存資料單元,各單元係耦接至記憶體單元970中的資料TLB單元972。指令快取單元934進一步係耦接至在記憶體單元970中的層級2(L2)快取單元976。L2快取單元976係耦接至一或多個其它層級的快取記憶體,及最終耦接至一主記憶體。
例如,暫存器重新命名失序簽發/執行核心架構之實施例可實施管線900如下:1)指令提取938執行提取及長度解碼階段902及904;2)解碼單元940執行解碼階
段906;3)重新命名/配置器單元952執行配置階段908及重新命名階段910;4)排程器單元956執行排程階段912;5)實體暫存器檔案單元958及記憶體單元970執行暫存器讀取/記憶體讀取階段914;執行叢集960進行該執行階段916;6)記憶體單元970及實體暫存器檔案單元958執行回寫入/記憶體寫入入階段918;7)可能涉及處理階段922的例外之各個單元;及8)撤回單元954及實體暫存器檔案單元958執行確定階段924。
核心990可支持一或多個指令集(例如x86指令集(有些擴延已經增加較新版本);加州昇陽谷的MIPS技術公司之MIPS指令集;加州昇陽谷的ARM控股公司的ARM指令集(具有選擇性額外擴延,諸如霓虹(NEON)),含括此處描述的指令。於一個實施例中,核心990包括支持緊縮資料指令集擴延(例如AVX1、AVX2),藉此允許許多多媒體應用程式使用的該等操作欲使用緊縮資料執行。
應能理解到核心可支持多執行緒(執行二或多個並列的操作或執行緒集合),且可以多種方式達成支持,包括時間截割多執行緒、同時多執行緒(於該處針對實體核心為同時多執行緒的該等執行緒各自,單一實體核心提供一邏輯核心)、或其組合(例如時間截割提取與解碼及其後同時多執行緒,諸如Intel® Hyperthreading技術)。
雖然暫存器重新命名係以失序執行脈絡描述,但須瞭解暫存器重新命名可用於有序架構。雖然處理器之具體實
施例也包括分開的指令及資料快取單元934/974及一分享L2快取單元976,但替代實施例可具有用於指令及資料二者的單一內部快取記憶體,諸如層級1(L1)內部快取記憶體,或內部快的多個層級。在一些實施例中,該系統可包括一內部快取記憶體與在核心和/或處理器外部的一外部快取記憶體之組合。另外,全部外部快取記憶體可位在核心和/或處理器外部。
圖10A-B例示說明有序核心架構之更特定實施例之方塊圖,該核心將為晶片中數個邏輯區塊中之一者(包括相同類別和/或不同類別的其它核心)。取決於應用用途,邏輯區塊透過高頻寬互連網路(例如環狀網路)而與若干固定功能邏輯、記憶體I/O介面、及其它需要的I/O邏輯通訊。
圖10A為根據本發明實施例之單一處理器核心之方塊圖,連同其連接至晶粒上互連網路1002及層級2(L2)快取記憶體1004之其本地子集的方塊圖。在一個實施例中,指令解碼器1000支持具有緊縮資料指令集擴延的x86指令集。L1快取記憶體1006允許低度延遲存取快取記憶體至純量及向量單元。雖然於一個實施例中(為了簡化設計),純量單元1008及向量單元1010使用分開的暫存器集合(分別為純量暫存器1012及向量暫存器1014),在其間傳輸的資料係寫入至記憶體,然後從層級
1(L1)快取記憶體1006回讀,本發明之替代實施例可使用不同辦法(例如使用單一暫存器集合或包括通訊路徑,其允許資料在兩個暫存器檔案間移轉而不被寫入及回讀)。
L2快取記憶體之本地子集1004乃通用L2快取記憶體部分,被劃分成分開本地子集,每個處理器核心一個子集。各個處理器核心具有一直接存取路徑至其本身的L2快取記憶體之本地子集1004。由一處理器核心所讀取的資料係儲存於其L2快取子集1004,且與其它處理器核心存取其本身的本地L2快取子集並列地能夠被快速存取。由處理器核心寫入入的資料係儲存於其本身的L2快取子集1004,及若有所需,從其它子集刷新。環狀網路確保分享資料的同調。環狀網路乃雙向以允許代理者諸如處理器核心、L2快取記憶體及其它邏輯區塊在晶片內部彼此通訊。各個環狀資料路徑為每個方向1012-位元寬。
圖10B為根據本發明實施例之圖10A中的處理器核心部分之展開圖。圖10B包括L1快取記憶體1004的L1資料快取記憶體1006A部分,以及有關向量單元1010及向量暫存器1014之進一步細節。更明確言之,向量單元1010為16-寬向量處理單元(VPU)(參考16-寬ALU 1028),其係執行整數指令、單精度浮點指令、及雙精度浮點指令中之一或多者。向量處理單元(VPU)支持使用調合單元1020調合該暫存器輸入,使用數值轉換單元1022A-B做數值轉換,及使用複製單元1024對記憶體輸
入作複製。寫入遮罩暫存器1026允許預測所得的向量寫入。
圖11為根據本發明實施例之處理器的方塊圖,該處理器1100可具有多於一個核心、可具有整合記憶體控制器及可具有整合圖形。圖11的實線框例示說明一處理器1100具有單一核心1102A、一系統代理1110、一或多個匯流排控制單元1116之一集合,而選擇性地增加的虛線框例示說明另一個處理器1100具有多個核心1102A-N、於系統代理單元1110中之一或多個積體記憶體控制器單元1114、及特殊用途邏輯1108。
因此,處理器1100的不同實施可包括:1)一CPU具有特殊用途邏輯1108係為積體圖形和/或科學(資料通量)邏輯(可包括一或多個核心),及核心1102A-N係為一或多個通用核心(例如通用有序核心、通用失序核心、二者的組合);2)一共處理器具有核心2102A-N係為意圖主要用於圖形和/或科學(資料通量)的大量通用核心;3)一共處理器具有核心1102A-N係為大量通用有序核心。因此,處理器1100可為通用目的處理器、共處理器或特有處理器,諸如網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU(通用圖形處理單元)、高資料通量多積體核心(MIC)共處理器(含30或以上核心)、嵌入式處理器等。處理器可在一或多個晶片上實施。處理器1100可為一或多個基板的一部分,和/或可使用多項處理技術諸如BiCMOS、CMOS、或NMOS而實施在一或多個
基板上。
記憶體階層關係包括在核心內部的一或多個快取層級、一或多個共享快取單元1106之集合、及耦接至積體記憶體控制器單元1114之集合的外部記憶體(圖中未顯示)。共享快取單元之集合1106可包括一或多個中階快取記憶體,諸如層級2(L2)、層級3(L3)、層級4(L4)、或其它層級快取記憶體、最末層級快取記憶體LLC)、和/或其組合。雖然於一個實施例中,一環狀基礎互連單元1112互連積體圖形邏輯1108、共享快取單元之集合1106、及系統代理1110/積體記憶體控制器單元1114,但其它實施例可使用任何數目的眾所周知技術以互連此等單元。於一個實施例中,在一或多個快取單元1106與核心1102A-N間維持同調。
在一些實施例中,核心1102A-N中之一或多者可為多執行緒。系統代理1110包括協調與操作核心1102A-N的該等組件。系統代理單元1110可包括例如電力控制單元(PCU)及一顯示單元。電力控制單元(PCU)可為或包括調節核心1102A-N及積體圖形邏輯1108所需邏輯及組件。顯示單元係用以驅動一或多個外部連結的顯示器。
核心1102A-N就架構指令集而言可為同質或異質;換言之,核心1102A-N中之二或多者可能可執行相同指令集,而其它者只能執行該指令集之一子集或一不同指令集。
圖12至圖15為之電腦架構範例之方塊圖。其它本領域已知之針對膝上型電腦、桌上型電腦、手持式個人電腦、個人數位助理器、工程工作站、伺服器、網路裝置、網路集線器、交換器、嵌入式處理器、數位信號處理器(DSP)、圖形裝置、視訊遊戲裝置、機上盒、微控制器、小區式電話、可攜式媒體播放器、手持式裝置及其它多種電子裝置的其它系統設計及組態也屬適宜。概略言之,能夠結合一處理器和/或其它此處揭示的執行邏輯的大量多種系統及電子裝置大致上為適宜。
現在參考圖12,其顯示依據本發明之一個實施例一種系統1200之方塊圖。系統1200可包括一或多個處理器1210、1215,耦接至控制器集線器1220。在一個實施例中,控制器集線器1220包括一圖形記憶體控制器集線器(GMCH)1290及一輸入/輸出集線器(IOH)1250(可位在分開的晶片上);GMCH 1290包括記憶體及圖形控制器,其耦接記憶體1240及一共處理器1245;IOH 1250係耦接輸入/輸出(I/O)裝置1260至GMCH 1290。另外,記憶體及圖形控制器中之一或二者係整合於處理器內部(因此處描述),記憶體1240及共處理器1245係直接地耦接至在單一晶片內的處理器1210及控制器集線器1220與IOH 1250。
額外處理器1215的選擇性地本質係以虛線標示於圖12。各個處理器1210、1215可包括此處描述的處理核心
中之一或多者且可為處理器1100的某個版本。
記憶體1240例如可為動態隨機存取記憶體(DRAM)、相變記憶體(PCM)或二者的組合。對至少一實施例,控制器集線器1220透過多插匯流排諸如前端匯流排(FSB)、點對點介面諸如快速路徑互連(QPI)或類似的連結1295而與處理器1210、1215通訊。
在一實施例中,共處理器1245乃特用處理器,諸如高資料通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。於一實施例中,控制器集線器1220可包括一積體圖形加速器。
就一定範圍的優劣量表而言,包括架構、微架構、熱、功率耗損特性等,處理器1210、1215間可有多項差異。
在一實施例中,處理器1210執行指令其控制通用類別的處理操作。該等指令內部嵌入共處理器指令。處理器1210識別此等共處理器指令乃屬須由附接的共處理器1245執行的類別。因此,處理器1210在共處理器匯流排或其它互連上簽發此等共處理器指令(或表示共處理器指令的控制信號)給共處理器1245。共處理器1245接收且執行所接收的共處理器指令。
現在參考圖13,其顯示依據本發明之一實施例第一更特定系統1300之一方塊圖。如圖13所示,微處理器系統1300為點對點互連系統,包括透過點對點互連1350而耦接的第一處理器1370及第二處理器1380。處理器1370
及1380各自可為處理器1100的某個版本。於本發明之一個實施例中,處理器1370及1380分別為處理器1210及1215,而共處理器1338為共處理器1245。在另一個實施例中,處理器1370及1380分別為處理器1210及共處理器1245。
處理器1370及1380係顯示為分別包括積體記憶體控制器(IMC)單元1372及1382。處理器1370也包括點對點(P-P)介面1376及1378作為其匯流排控制器單元之一部分;同理,第二處理器1380可包括P-P介面1386及1388。處理器1370、1380可使用P-P介面電路1378、1388透過點對點(P-P)介面1350交換資訊。如圖13所示,IMC 1372及1382耦接該等處理器至個別記憶體,亦即記憶體1332及記憶體1334,其可為本地附接至個別處理器的主記憶體的一部分。
處理器1370、1380可使用點對點介面電路1376、1394、1386、1398透過點對點(P-P)介面1352、1354而各自與一晶片組1390交換資訊。晶片組1390也可透過一高效能介面1339而與共處理器1338交換資訊。在一實施例中,共處理器1338乃特用處理器,諸如高資料通量MIC處理器、網路或通訊處理器、壓縮引擎、圖形處理器、GPGPU、嵌入式處理器等。
分享快取記憶體(圖中未顯示)可含括於任一處理器內或二處理器外部,但仍然透過P-P互連而與處理器連結,使得當一處理器被置於低功率模式時,任一處理器的
或二處理器的本地快取記憶體資訊可被儲存於該分享快取記憶體。
晶片組1390可透過一介面1396而耦接至一第一匯流排1316。在一個實施例中,第一匯流排1316可為周邊組件互連(PCI)匯流排,或諸如PCI快速匯流排或其它第三代I/O互連匯流排之一匯流排,但本發明之範圍不因此限制。
如圖13所示,多個I/O裝置1314可連同一匯流排橋接器1318而耦接至第一匯流排1316,該匯流排橋接器1318係耦接第一匯流排1316至第二匯流排1320。在一個實施例中,一或多個額外處理器1315,諸如共處理器、高資料通量MIC處理器、GPGPU、加速器(例如圖形加速器或數位信號處理器(DSP)單元)、可現場程式規劃閘陣列、或任何其它處理器係耦接至第一匯流排1316。在一個實施例中,第二匯流排1320可為低接腳數目(LPC)匯流排。在一個實施例中,多個裝置可耦接至第二匯流排1320,包括例如鍵盤和/或滑鼠1322、通訊裝置1327及儲存單元1328,諸如磁碟機或其它大容量儲存裝置,可包括指令/碼及資料1330。此外,音頻I/O 1324可被耦接至第二匯流排1320。注意其它架構係屬可能。例如,替代圖13之點對點架構,一系統可實施多插匯流排或其它此種架構。
現在參考圖14,顯示依據本發明之一實施例第二更特定系統1400之一方塊圖。圖13與圖14中相似的元件
具有相似的元件符號,及圖13的一些方面已經從圖14刪除以免不必要地遮掩圖14的其它方面。
圖14例示說明處理器1370、1380分別地可包括積體記憶體及I/O控制邏輯(「CL」)1372及1382。因此,CL 1372、1382可包括積體記憶體控制器單元且包括I/O控制邏輯。圖14例示說明不僅記憶體1332、1334耦接至CL 1372、1382,I/O裝置1414也耦接至控制邏輯1372、1382。舊式I/O裝置1415係耦接至晶片組1390。
現在參考圖15,其顯示依據本發明之一個實施例一種SoC1500之方塊圖。圖11中的相似元件具有類似的元件符號。又,虛線框乃更為先進SoC上的選擇性特徵。於圖15中,一互連單元1502係耦接至:一應用程式處理器1510其包括一或多個核心202A-N與分享快取單元1106之一集合;一系統代理器單元1110;一匯流排控制器單元1116;一積體記憶體控制器單元1114;一或多個媒體處理器1520之一集合其可包括積體圖形邏輯、影像處理器、音訊處理器、及視訊處理器;一靜態隨機存取記憶體(SRAM)單元1530;一直接記憶體存取(DMA)單元1532;及用以耦接至一或多個外部顯示器的一顯示單元1540。在一個實施例中,該(等)共處理器1520包括特用處理器,諸如網路或通訊處理器、壓縮引擎、GPGPU、高資料通量MIC處理器、嵌入式處理器等。
因此處揭示的機構之實施例可於硬體、軟體、韌體或此等實施辦法的組合而予實施。本發明之實施例可實施為
電腦程式或在可規劃系統包含至少一處理器、儲存系統(包括揮發性及非揮發性記憶體和/或儲存元件)、至少一輸入裝置、及至少一輸出裝置上執行的程式碼。
程式碼(諸如圖13例示說明之碼1330)可應用至輸入指令以執行此處描述的功能及產生輸出資訊。輸出資訊可以已知方式施加至一或多個輸出裝置。用於本應用之目的,處理系統包括具有一處理器的任何系統,諸如數位信號處理器(DSP)、微控制器、特定應用積體電路(ASIC)或微處理器。
程式碼可於高階程式或目標導向程式語言實施以與一處理系統處理器。若有所需,程式碼也可於組合語言或機器語言實施。實際上,此處描述的機構之範圍並非限於任何特定程式語言。總而言之,該語言可為彙編語言或解譯語言。
至少一實施例的一或多個方面可藉表示處理器內部的多個邏輯而儲存在機器可讀取媒體上的代表性指令實施,該等指令當由一機器讀取時使得該機器組合邏輯以執行此處描述的技術。此種表示型態稱作為「IP核心」,可儲存在具體有形的機器可讀取媒體上且供給各個客戶或製造廠以載入實際上生產該邏輯或處理器的組裝機器內。
此等機器可讀取儲存媒體可包括但非僅限於由機器或裝置所製造或製成的非過渡具體有形的物件配置,包含儲存媒體諸如硬碟、任何其它類別的碟片包括軟碟、光碟、光碟-唯讀記憶體(CD-ROM)、光碟可覆寫入式(CD-RW
)、及磁光碟;半導體裝置諸如唯讀記憶體(ROM)、隨機存取記憶體(RAM)諸如動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、可抹除可規劃唯讀記憶體(EPROM)、快閃記憶體、可電氣抹除可規劃唯讀記憶體(EEPROM)、相變記憶體(PCM)、磁卡或光卡;或適用以儲存電子指令的任何其它類別的媒體。
因此,本發明之實施例也包括非過渡具體有形的機器可讀取媒體含有指令或含有設計資料,諸如硬體描述語言(HDL)其定義此處描述的結構、電路、裝置、處理器和/或系統特徵。此等實施例也可稱作為程式產品。
於一些情況下,指令轉換器可用以將指令從來源指令集轉換成目標指令集。例如,指令轉換器可將一指令轉譯(例如使用靜態二進制轉譯、含動態編譯的動態二進制轉譯)、變形、仿真或以其它方式轉換成欲藉核心處理的一或多個其它指令。指令轉換器可於軟體、硬體、韌體或其組合實施。指令轉換器可在處理器上、不在處理器上、或部分在及部分不在處理器上。
圖16為根據本發明實施例之對比軟體指令轉換器用以將在來源指令集中之二進制指令轉換成在目標指令集中之二進制指令的方塊圖。於所示的實施例中,指令轉換器為軟體指令轉換器,但另外,指令轉換器可於軟體、韌體、硬體、或其各項組合實施。圖16示出了高級語言
1602中的程式可以使用x86編譯器1604編譯以產生可以由具有至少一個x86指令集核心1616的處理器原生地執行的x86二進制代碼1606。具有至少一x86指令集核心1616之處理器表示藉相容式執行或以其它方式處理(1)英特爾x86指令集核心的該指令集之一相當大部分或(2)靶定以在具至少一x86指令集核心的一英特爾處理器跑的應用程式或其它軟體之目標碼版本而執行與具至少一x86指令集核心的一英特爾處理器實質上相同功能以達成與具至少一x86指令集核心的一英特爾處理器實質上相同結果。x86編譯器1604表示可操作而產生x86二進制碼1606(例如目標碼)的一編碼器,該等x86二進制碼1606有或無額外鏈結處理可在具至少一x86指令集核心的該處理器1616上執行。類似地,圖16顯示於高階語言1602的該程式可使用另一指令集編譯器1608編譯以產生另一指令集二進制碼1610,可藉不具至少一x86指令集核心的一處理器1614本機執行(例如具有執行加州昇陽谷的MIPS技術公司之MIPS指令集和/或執行加州昇陽谷的ARM控股公司的ARM指令集之核心的一處理器)。指令轉換器1612係用以將x86二進制碼1606轉換成可由不具一x86指令集核心的該處理器1614本機執行的碼。此種轉換碼不可能與另一指令集二進制碼1610相同,原因在於難以製造可達成此項目的之一指令轉換器;但轉換碼將達成一般操作且係由得自該另一指令集的指令組成。因此,指令轉換器1612表示軟體、韌體、硬體或其組合
其透過仿真、模擬或任何其它處理允許不具至少一x86指令集處理器或核心的一處理器或其它電子裝置執行該x86二進制碼1606。
201:網路通訊端
203:監視表
205:核心
207:標籤目錄結構
209:CHA
211:光纖介面
213:晶粒互連硬體
215:本地代理
Claims (12)
- 一種用於遠端監視的設備,包含:至少一監視電路,其用以監視對位址空間的記憶體存取;至少一監視表,其用以儲存該位址空間之識別符;每一核心的標籤目錄,其用以追蹤有權存取該位址空間的實體,其中該標籤目錄為查找表以及其中該標籤目錄中的每一行包括記憶體大小粒度、散列位址、追蹤粒度和遠端節點指示符。
- 如申請專利範圍第1項所述之設備,其中該記憶體大小粒度為快取線、分頁、大分頁或巨大分頁中的一者。
- 如申請專利範圍第1項所述之設備,其中該追蹤粒度是節點組的數量。
- 如申請專利範圍第1項所述之設備,其中該遠端節點指示符是可存取該位址空間的節點的光暈過濾器結果。
- 如申請專利範圍第1項所述之設備,其中該遠端節點指示符是可存取該位址空間的節點的位元遮罩。
- 如申請專利範圍第1項所述之設備,更包含:複數個核心,其用以執行指令;快取代理器電路,其用以處理來自該複數個核心中的至少一者之記憶體請求;以及本地代理電路,其用以處理來自該快取代理之記憶體 請求並且作為該設備之記憶體空間之一部分的起始。
- 如申請專利範圍第6項所述之設備,其中該快取代理電路以及本地代理電路為相同電路的一部分。
- 如申請專利範圍第1項所述之設備,其中該記憶體大小粒度為快取線、分頁、大分頁或巨大分頁中的一者,其中該追蹤粒度是節點組的數量。
- 如申請專利範圍第8項所述之設備,其中該遠端節點指示符是可存取該位址空間的節點的光暈過濾器結果。
- 如申請專利範圍第8項所述之設備,其中該遠端節點指示符是可存取該位址空間的節點的位元遮罩。
- 如申請專利範圍第1項所述之設備,更包含:快取代理器電路,其用以處理來自該複數個核心中的至少一者之記憶體請求;以及本地代理電路,其用以處理來自該快取代理之記憶體請求並且作為該設備之記憶體空間之一部分的起始。
- 如申請專利範圍第11項所述之設備,其中該快取代理電路以及本地代理電路為相同電路的一部分。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/983,081 US10095622B2 (en) | 2015-12-29 | 2015-12-29 | System, method, and apparatuses for remote monitoring |
US14/983,081 | 2015-12-29 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201732579A TW201732579A (zh) | 2017-09-16 |
TWI748970B true TWI748970B (zh) | 2021-12-11 |
Family
ID=59088385
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW105139272A TWI748970B (zh) | 2015-12-29 | 2016-11-29 | 用於遠端監視的設備 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10095622B2 (zh) |
TW (1) | TWI748970B (zh) |
WO (1) | WO2017117319A1 (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11163682B2 (en) | 2015-12-29 | 2021-11-02 | Intel Corporation | Systems, methods, and apparatuses for distributed consistency memory |
US10547680B2 (en) | 2015-12-29 | 2020-01-28 | Intel Corporation | Systems, methods, and apparatuses for range protection |
US10992550B2 (en) * | 2016-09-28 | 2021-04-27 | Intel Corporation | Techniques to control quality of service for end-to-end paths in a compute environment |
US11119923B2 (en) * | 2017-02-23 | 2021-09-14 | Advanced Micro Devices, Inc. | Locality-aware and sharing-aware cache coherence for collections of processors |
US11133075B2 (en) * | 2017-07-07 | 2021-09-28 | Micron Technology, Inc. | Managed NAND power management |
US11914517B2 (en) * | 2020-09-25 | 2024-02-27 | Advanced Micro Devices, Inc. | Method and apparatus for monitoring memory access traffic |
US11550720B2 (en) * | 2020-11-24 | 2023-01-10 | Arm Limited | Configurable cache coherency controller |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080034355A1 (en) * | 2006-06-30 | 2008-02-07 | Xiaowei Shen | Memory access monitoring |
TW200912643A (en) * | 2007-05-30 | 2009-03-16 | Schooner Information Technology | System including a fine-grained memory and a less-fine-grained memory |
US7516277B2 (en) * | 2005-04-28 | 2009-04-07 | Sap Ag | Cache monitoring using shared memory |
US20130243003A1 (en) * | 2012-03-16 | 2013-09-19 | Kabushiki Kaisha Toshiba | Information processing device |
US20140281180A1 (en) * | 2013-03-12 | 2014-09-18 | Arm Limited | Data coherency management |
TW201443640A (zh) * | 2013-01-22 | 2014-11-16 | Lsi Corp | 儲存位址空間對非揮發性記憶體位址,跨度及長度映射與轉換 |
US20140379997A1 (en) * | 2013-06-19 | 2014-12-25 | International Business Machines Corporation | Coherent attached processor proxy having hybrid directory |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6961806B1 (en) | 2001-12-10 | 2005-11-01 | Vmware, Inc. | System and method for detecting access to shared structures and for maintaining coherence of derived structures in virtualized multiprocessor systems |
US7310709B1 (en) * | 2005-04-06 | 2007-12-18 | Sun Microsystems, Inc. | Method and apparatus for primary cache tag error handling |
US8347064B1 (en) | 2006-09-19 | 2013-01-01 | Nvidia Corporation | Memory access techniques in an aperture mapped memory space |
US7613882B1 (en) | 2007-01-29 | 2009-11-03 | 3 Leaf Systems | Fast invalidation for cache coherency in distributed shared memory system |
US7844779B2 (en) * | 2007-12-13 | 2010-11-30 | International Business Machines Corporation | Method and system for intelligent and dynamic cache replacement management based on efficient use of cache for individual processor core |
US8171223B2 (en) * | 2008-12-03 | 2012-05-01 | Intel Corporation | Method and system to increase concurrency and control replication in a multi-core cache hierarchy |
US8627017B2 (en) | 2008-12-30 | 2014-01-07 | Intel Corporation | Read and write monitoring attributes in transactional memory (TM) systems |
EP2449472A1 (en) | 2009-07-03 | 2012-05-09 | Jantsch, Axel | A programmable controller |
US8392657B2 (en) | 2009-10-09 | 2013-03-05 | Intel Corporation | Monitoring cache usage in a distributed shared cache |
US8838430B1 (en) | 2011-08-26 | 2014-09-16 | Cadence Design Systems, Inc. | Detection of memory access violation in simulations |
US20130124805A1 (en) | 2011-11-10 | 2013-05-16 | Advanced Micro Devices, Inc. | Apparatus and method for servicing latency-sensitive memory requests |
US9740617B2 (en) * | 2014-12-23 | 2017-08-22 | Intel Corporation | Hardware apparatuses and methods to control cache line coherence |
US11163682B2 (en) | 2015-12-29 | 2021-11-02 | Intel Corporation | Systems, methods, and apparatuses for distributed consistency memory |
-
2015
- 2015-12-29 US US14/983,081 patent/US10095622B2/en not_active Expired - Fee Related
-
2016
- 2016-11-29 TW TW105139272A patent/TWI748970B/zh active
- 2016-12-29 WO PCT/US2016/069064 patent/WO2017117319A1/en active Application Filing
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7516277B2 (en) * | 2005-04-28 | 2009-04-07 | Sap Ag | Cache monitoring using shared memory |
US20080034355A1 (en) * | 2006-06-30 | 2008-02-07 | Xiaowei Shen | Memory access monitoring |
TW200912643A (en) * | 2007-05-30 | 2009-03-16 | Schooner Information Technology | System including a fine-grained memory and a less-fine-grained memory |
US20130243003A1 (en) * | 2012-03-16 | 2013-09-19 | Kabushiki Kaisha Toshiba | Information processing device |
TW201443640A (zh) * | 2013-01-22 | 2014-11-16 | Lsi Corp | 儲存位址空間對非揮發性記憶體位址,跨度及長度映射與轉換 |
US20140281180A1 (en) * | 2013-03-12 | 2014-09-18 | Arm Limited | Data coherency management |
US20140379997A1 (en) * | 2013-06-19 | 2014-12-25 | International Business Machines Corporation | Coherent attached processor proxy having hybrid directory |
Also Published As
Publication number | Publication date |
---|---|
WO2017117319A1 (en) | 2017-07-06 |
US10095622B2 (en) | 2018-10-09 |
US20170185518A1 (en) | 2017-06-29 |
TW201732579A (zh) | 2017-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI748970B (zh) | 用於遠端監視的設備 | |
US10547680B2 (en) | Systems, methods, and apparatuses for range protection | |
US9361233B2 (en) | Method and apparatus for shared line unified cache | |
CN108268385B (zh) | 具有集成目录高速缓存的优化的高速缓存代理 | |
US10387072B2 (en) | Systems and method for dynamic address based mirroring | |
CN109661656B (zh) | 用于利用条件所有权请求的智能存储操作的方法和装置 | |
US10613999B2 (en) | Device, system and method to access a shared memory with field-programmable gate array circuitry without first storing data to computer node | |
US20140201446A1 (en) | High bandwidth full-block write commands | |
CN111880925A (zh) | 用于提供带外处理器遥测的技术 | |
US20130326147A1 (en) | Short circuit of probes in a chain | |
TWI722009B (zh) | 用於在遠端處理器上進行基元動作之硬體機制 | |
CN112148635A (zh) | 具有可配置高速缓存子域和跨管芯存储器一致性的多处理器系统 | |
CN108292268B (zh) | 用于分布式一致性存储器的系统、方法和设备 | |
US10310978B2 (en) | Apparatus and method for multi-level cache request tracking | |
US11422809B2 (en) | Apparatus and method for multicasting a cache line update using delayed refetch messages | |
CN111752865A (zh) | 为不同权限级别管理不同页表的存储器管理装置和方法 | |
TW201712530A (zh) | 用於改善狀態相依計算效能的系統、方法和設備 | |
CN112579160A (zh) | 用于具有减少的硬件要求的存储配对的装置和方法 |