專利名稱:處理非相干設(shè)備的原子操作的制作方法
處理非相干設(shè)備的原子操作
背景技術(shù):
現(xiàn)代計算機系統(tǒng)是通過包括處理器、存儲設(shè)備、外圍設(shè)備等的各個組件的互連實現(xiàn)的。為了實現(xiàn)這些不同組件之間的通信,可出現(xiàn)多個鏈路以將一個或多個設(shè)備互連在一起。這些系統(tǒng)可包括許多不同類型的互連或鏈路。常見地,對每個特定類型的鏈路具有給定的通信協(xié)議,并且發(fā)生在這些鏈路上的通信遵守該協(xié)議。在許多系統(tǒng)中,鏈路可包括相干鏈路和非相干鏈路。相干鏈路常見地用于緊耦合的組件,其中相應(yīng)協(xié)議提供相干交易以使可高速緩沖存儲在各個位置的數(shù)據(jù)的統(tǒng)一概覽得以維持。相反,在非相干通信協(xié)議中,通信可能不以高速緩沖存儲器相干方式發(fā)生。原子操作允許在具有擬以非阻滯方式同步的多個制造商和/或消費者的情形下有益的同步機制。原子操作也允許無鎖定統(tǒng)計計數(shù)器,例如在設(shè)備原子地將計數(shù)器遞增并且主機軟件原子地讀取和清零計數(shù)器的情形下。相比鎖定交易,原子操作能提供比其它互連業(yè)務(wù)更低的潛伏時間和更高的伸縮性。在外設(shè)部件互連Express (PCIe )協(xié)議中,原子操作初次介紹為2008年1月15日的題為“Atomic Operations (原子操作)”的工程變更通知(ECN)。盡管原子操作(在本文中另稱為“原子”)的益處很大程度地取決于應(yīng)用和使用模型,然而預(yù)計加速器、高端圖形和高性能計算(HPC)能從支持原子的平臺獲益。總地來說,根據(jù)PCIe 協(xié)議的原子操作提供一次交易以確定存儲器空間內(nèi)的某一位置、讀取該位置的值、潛在地將新值寫至該位置,并返回最初值。對該位置的讀修改和寫序列是原子地執(zhí)行的,同時處于比鎖定操作更低的潛伏時間。在許多示例中,在復(fù)雜系統(tǒng)中執(zhí)行原子可能使非常大和不確定性的潛伏時間發(fā)生,因為原子操作的結(jié)束可能需要未知潛伏時間的多次遠(yuǎn)端存儲器交易。
圖1是根據(jù)本發(fā)明一個實施例的系統(tǒng)的方框圖。圖2是根據(jù)本發(fā)明一個實施例的、詳述通過根聯(lián)合體執(zhí)行的操作的方法的流程圖。圖3是根據(jù)本發(fā)明一個實施例的、詳述通過請求方代理執(zhí)行的操作的方法的流程圖。圖4是根據(jù)本發(fā)明一個實施例的、詳述由接收相干原子請求的目標(biāo)代理執(zhí)行的操作的方法的流程圖。
具體實施例方式在各實施例中,可提供多種技術(shù)以更有效地在平臺上執(zhí)行原子操作。在許多實現(xiàn)中,原子操作可根據(jù)PCIe 協(xié)議的原子操作能力。具體地說,諸實施例可特別側(cè)重于支持設(shè)備發(fā)布原子(“總線主控器請求”),其中例如經(jīng)由輸入/輸出(IO)控制器(IOH)耦合于平臺的IO設(shè)備的設(shè)備是請求方,而IOH——在本文中一般另稱為芯片集——是完成方。
這種原子操作請求可經(jīng)由例如PCIe 鏈路等的非相干互連在平臺中接收,并可使用平臺的一個或多個相干互連在平臺中予以處理。作為一個示例,Intel 快速路徑互連 (QPI)鏈路可以是用來連接處理器和IOH的相干互連。對于一些實現(xiàn)來說,平臺可使用其它內(nèi)部相干互連以將一個或多個核連接于非核邏輯并使用QPI鏈路來連接各槽口(socket)。 使用節(jié)點控制器來連接多個節(jié)點以構(gòu)建相干平臺的其它平臺可使用專用或標(biāo)準(zhǔn)底板/互連結(jié)構(gòu)來傳輸數(shù)據(jù)。這些實施例也可應(yīng)用于其它相干互連,例如HyperTransport 或 RapidIO 鏈路。這些實施例也同樣適用于許多不同的平臺類型,例如具有集成IO控制器 (IIO)的單槽口平臺以及具有兩個槽口以及在每個槽口中的集成IO控制器的雙核處理器 (DP)平臺,或者具有含IOH功能的獨立芯片集的這些平臺。如前所述,原子操作可允許在存在擬以非阻滯方式同步的多個制造商和消費者的情形下有益的先進(jìn)同步機制。例如,多個制造商可安全地排入一公用隊列而不會有任何顯著的鎖定。比較和置換(CAS)是一種原子操作,在這種操作中將目標(biāo)位置的值與指定值比較。如果它們匹配,則將另一指定值回寫至該位置。不管怎樣,該位置的最初值被返回到請求方。在!^etchAdd操作中,取數(shù)和相加都發(fā)生。更具體地,使目標(biāo)位置的值遞增一指定值(例如使用忽略任何進(jìn)位或溢出的2補碼運算),并且其結(jié)果被回寫至該位置。另外,該位置的最初值被返回到請求方。在置換中,可能發(fā)生無條件置換,其中將指定值寫至目標(biāo)位置并使該位置的最初值返回到請求方。為了支持原子,可響應(yīng)輸入的原子操作通過芯片集來執(zhí)行如下操作。所描述的具體示例是下面形式的!^etchAdd操作TetchAdd (位置、加值),其中位置是作為操作目標(biāo)的物理地址,而加值是加至該位置的值。然而,可將這些實施例應(yīng)用于任何類型的原子操作。使用作為能用來履行原子請求的相干交易的示例的QPI存儲器交易,由完成方執(zhí)行以處理該原子的操作如下。首先,取得存儲器位置上的鎖定并可能停止所有流程以維持原子性。然后可執(zhí)行下列操作,其中讀出在請求位置的數(shù)據(jù),執(zhí)行算術(shù)操作并隨后寫交易發(fā)生,如下X = QPI_Read (位置)Y = X+加值QPIJVrite (位置,Y)。最后,將提供值X的完成返回給請求方。原始QPI_Read和QPI_Write在相干互連上執(zhí)行監(jiān)聽或非監(jiān)聽讀/寫(R/W)存儲器循環(huán)以訪問作為操作目標(biāo)的存儲器范圍。如可從前述步驟中看到的那樣,取決于相干互連帶寬、用途和負(fù)載因素,這些操作可能花費相對長的時間。另外,可能需要通過節(jié)點控制器跨相干鏈路地將操作路由至另一槽口。如此,通過使直接耦合于請求方的根聯(lián)合體或其它實體扮演完成方的角色,原子操作的行為可能不具有確定性。該不確定性潛伏時間可能發(fā)生的部分原因是對于目標(biāo)存儲器存在于何處的不確定性。假設(shè)作為一個例子,具有耦合于芯片集的設(shè)備的多槽口平臺充當(dāng)根聯(lián)合體。首先,芯片集確定由原子操作作為目標(biāo)的地址范圍的位置。該范圍可能出現(xiàn)在耦合于不同處理器槽口的存儲器中。因此主存該設(shè)備的根聯(lián)合體的芯片集可訪問直接存儲器存取(DMA)映射引擎以根據(jù)請求的輸入虛擬地址確定相應(yīng)物理地址是遠(yuǎn)端存儲器。然后,在相干互連上可能發(fā)生數(shù)次存儲器交易。一旦接收到請求的數(shù)據(jù),則芯片集(即設(shè)備的根聯(lián)合體)將作為原子操作的完成方執(zhí)行原子操作。因此這些根聯(lián)合體不僅處理原子功能,還執(zhí)行交易以獲得所需的虛擬轉(zhuǎn)換,如果不出現(xiàn)在根聯(lián)合體的話。注意該功能可能導(dǎo)致一次或多次交易從芯片集送至相應(yīng)處理器,并且如果處理器不具有與高速緩沖存儲器中存在的請求地址關(guān)聯(lián)的頁面表,則需要更多的交易以獲得要求的轉(zhuǎn)換,這增加了原子操作的潛伏時間和不確定性。 在多槽口系統(tǒng)中,能格外減少潛伏時間,因為能免去在每個槽口中執(zhí)行地址轉(zhuǎn)換以確定目標(biāo)存儲器位置是否出現(xiàn)在本地的需要。相反,執(zhí)行轉(zhuǎn)換的唯一地點是在最終目的地——即目標(biāo)存儲器位置的擁有者——的槽口中。因此,在各實施例中,完成方可使用與接收的原子操作對應(yīng)的相干操作碼以將請求直接路由至擁有的存儲器范圍,在那里它結(jié)束并且這些值(如果有的話)作為相干完成的一部分返回。在一個實施例中,對用于執(zhí)行!^etchAdd操作的QPI互連來說,用來路由請求的相干操作碼可稱為QPI_FetchAdd_Request,而被稱為QPI_FetchAdd_Completion的另一操作碼可用來指示請求的完成并提供任何數(shù)據(jù)。在一個實施例中,該QPI_FetchAdd_ Request的語法可與PCIe FetchAdd原子操作相同。為了提供各非相干原子操作和相干原子操作之間的這種映射,可在相干系統(tǒng)中使用相應(yīng)操作碼并且這可以是通過路由元件(例如CPU、IOH和節(jié)點控制器)的可路由跨接鏈路。如此,可提供相干可路由操作碼以對非相干鏈路上的相應(yīng)原子作出映射。在其它實施例中,可提供一類屬的可路由操作碼,該操作碼具有足夠的差分參數(shù)以隧穿對應(yīng)于非相干原子的各個操作碼并提供未來的活動空間。通過將來自非相干互連的操作碼映射至相干互連上的等效操作碼,可實現(xiàn)減少的存儲器帶寬。這些實施例因此允許減少為支持原子操作需要執(zhí)行的存儲器操作次數(shù)。也就是說,這些實施例不是將非相干原子操作變換成可能必須跨相干互連通信的至少兩個相干存儲器操作,而是提供充當(dāng)非相干原子操作的代理的相應(yīng)操作碼(可路由)。當(dāng)可路由操作碼到達(dá)實際目的地時,該操作碼在最終目的地(對應(yīng)于目標(biāo)存儲器位置的擁有者)完成,在這種情形下以非常少的潛伏時間訪問存儲器并將結(jié)果跨相干互連地返回。一旦接收到結(jié)果,完成方可完成最初非相干原子交易并返回一完成(如果需要的話)。如此,非相干協(xié)議的原子可通過相干互連隧穿?,F(xiàn)在參見圖1,所示為根據(jù)本發(fā)明一個實施例的系統(tǒng)的框圖。如圖1所示,系統(tǒng)100 可以是多處理器系統(tǒng)。多處理器系統(tǒng)的許多種不同實現(xiàn)是可行的。例如,臺式機或服務(wù)器平臺可包括多處理器槽口,這些處理器槽口通過相干互連系統(tǒng)彼此通信。替代地,可存在多節(jié)點系統(tǒng),其中每個處理器是獨立節(jié)點并例如通過節(jié)點控制器或網(wǎng)絡(luò)接口控制器(NIC)相連。如此,取決于具體平臺架構(gòu),可以有許多不同的對系統(tǒng)100的組件進(jìn)行互連的方式。為表示一般性,圖1的多處理器系統(tǒng)描述為具有非相干(例如PCIe 鏈路)或相干(例如QPI或其它相干鏈路)的連接。因此如圖1所示,處理器IlOa可經(jīng)由相干互連125 與處理器IlOb通信。例如,該鏈路可以是例如QPI鏈路等的點對點鏈路,盡管基于總線的配置也是可能的。每個處理器110可包括一個或多個核。特別示出多個核11&-112η,這些核I^crIUn可例如經(jīng)由相干鏈路直接互連或通過例如非核邏輯的其它組件相連。如進(jìn)一步看到的那樣,每個處理器可包括集成的IO控制器(IIO) 114,該集成的IO控制器(IIO) 114可用來提供集成的芯片集功能以允許與例如設(shè)備140等的外圍設(shè)備通信,該設(shè)備140可以是任何類型合需的外圍設(shè)備。如圖所示,與設(shè)備140的通信可經(jīng)由非相干互連130實現(xiàn)。如下文介紹的那樣,IIO 114可包括操作碼映射表115。另外,每個處理器110可進(jìn)一步包括集成的存儲器控制器(IMC) 118,集成的存儲器控制器(IMC) 118可與本地耦合于相應(yīng)處理器的一部分系統(tǒng)存儲器通信。在一個實施例中,本地存儲器120可以是動態(tài)隨機存取存儲器(DRAM),盡管本發(fā)明的范圍不僅限于這方面。盡管為便于圖1實施例的解說而通過該高級配置進(jìn)行描述,然而要理解系統(tǒng)可包括許多其它組件。這些實施例旨在提高從例如設(shè)備140等的非相干連接設(shè)備發(fā)起的原子操作的效率。該操作流也示出于圖1。為了開始操作,設(shè)備140可發(fā)布以要求的存儲器位置為對象的原子操作。盡管該位置可以是系統(tǒng)中的任何位置,然而為解說目的假設(shè)該請求是針對本地耦合于處理器IlOb的存儲器的目標(biāo)位置。如圖所示,該原子存儲器請求(為了解釋假設(shè)它是FetchAdd)的流指向IIO 1140, IIO IHtl充當(dāng)設(shè)備140的根聯(lián)合體。該原子操作的格式是=FetchAdd “位置X,值A(chǔ)”,其中位置X是請求的目標(biāo)存儲器位置(并可以虛擬地址的形式出現(xiàn))而值A(chǔ)是擬用于原子操作中的操作數(shù)。由于IIO 114是設(shè)備140的根聯(lián)合體,因此按慣例它會作為完成方處理原子操作,發(fā)送存儲器請求以獲得存儲器位置的數(shù)據(jù), 執(zhí)行操作,潛在地發(fā)送更多存儲器請求至目標(biāo)存儲器位置,并最終將完成送至設(shè)備140。如前所述,這些操作可能導(dǎo)致高的和不確定的潛伏時間。因此在各實施例中,為了避免這些潛伏時間和不確定性,IIO IHtl可將輸入非相干原子操作映射至相干原子操作并將請求傳送到請求的存儲器位置的擁有者,以允許直接在存儲器位置本地執(zhí)行操作(例如通過存儲器的擁有者代理)以避免不確定性行為和減少的潛伏時間。為此,Iio IHtl可訪問操作碼映射表以獲得與接收的非相干原子操作碼對應(yīng)的相干原子操作碼。因此如圖1所示,IIO 1140可生成相干原子請求并經(jīng)由互連125發(fā)送該相干原子請求。更具體地,可將相干FetchAdd請求發(fā)送至正確目的地,該相干FetchAdd請求包括允許路由該請求的所有信息。這樣,可免去獲得請求的數(shù)據(jù)并稍后將得到的數(shù)據(jù)回送至目標(biāo)存儲器位置的讀/寫操作的需求。仍然參見圖1,可以看出,相干原子請求通過處理器IlOb接收并由IIOlH1處理以執(zhí)行請求的操作。因此在該實例中,Iio IH1可充當(dāng)完成方以在目標(biāo)位置獲得請求的數(shù)據(jù), 執(zhí)行請求的操作,將結(jié)果回送至存儲器并隨后經(jīng)由互連125將完成回送至處理器110a。這樣,由于IIO IH1處于目標(biāo)存儲器120b本地,因此為獲得所需數(shù)據(jù)(例如第二操作數(shù))并隨后將結(jié)果回寫至存儲器而訪問存儲器的減少潛伏時間可能發(fā)生。為使這些操作能夠發(fā)生在IIO IH1中,同樣可對操作碼映射表IK1作出訪問以接收相干原子操作和執(zhí)行請求的操作。再次使用該映射表,可經(jīng)由從映射表獲得的相干原子完成操作碼將結(jié)果回傳至處理器 110a。當(dāng)IIO IHtl接收到完成時,對操作碼映射表再次作出訪問以獲得非相干完成操作數(shù)以將結(jié)果經(jīng)由互連130回傳至設(shè)備140。盡管圖1的實施例中示出了這種具體實現(xiàn), 然而本發(fā)明的范圍不局限于這個方面。
因此在各實施例中,可實現(xiàn)發(fā)起自非相干連接設(shè)備的原子操作的有效處理。如前面的討論中所看到的,在一些實施例中執(zhí)行操作時使用至少三個不同的代理,也就是發(fā)起代理、作為設(shè)備耦合至的根聯(lián)合體的接收代理以及作為本地耦合于目標(biāo)存儲器位置的目標(biāo)代理。當(dāng)然,在許多情況下附加代理可在根聯(lián)合體和目標(biāo)代理之間互連。再進(jìn)一步,在一些系統(tǒng)中,與這些原子操作對應(yīng)的操作碼可跨過連接相干系統(tǒng)中的多個設(shè)備的可伸縮節(jié)點控制器發(fā)送。這樣,原子操作可針對由耦合于可伸縮節(jié)點控制器的處理器擁有的存儲器位置。圖2-4示出分別從接收代理(即根聯(lián)合體)角度、請求代理角度和完成代理角度看到的處理原子操作的流程圖?,F(xiàn)在參見圖2,其示出根據(jù)本發(fā)明一個實施例的詳述通過根聯(lián)合體執(zhí)行的操作的方法的流程圖。如圖2所示,方法200可開始于經(jīng)由非相干鏈路在IO 控制器中接收原子請求(方框210)。使用該請求,可訪問映射表以將原子請求操作碼變換成用于相干協(xié)議的原子請求操作碼(方框220)。如前所述,在一種這樣的實現(xiàn)中,接收的非相干原子請求可遵循PCIe 協(xié)議,而相干操作碼可遵循QPI協(xié)議。接著可判斷目標(biāo)存儲器的位置是否在IO控制器本地(菱形框230)。在一個實施例中,這種判斷可參照路由表作出,該路由表可將請求方提供的虛擬地址范圍與耦合于不同系統(tǒng)代理的不同系統(tǒng)存儲器部分的地址范圍作比較。如果確定該請求是針對處于IO控制器本地的位置,則IO控制器可響應(yīng)原子請求來訪問存儲器(方框Mo)。例如,IO控制器可訪問存在于IO控制器中的諸如直接存儲器存取(DMA)映射等的映射表以將接收的虛擬地址轉(zhuǎn)換成針對本地存儲器中的位置的物理地址。如果這種映射不存在于映射表中,則可執(zhí)行合適的頁面遍歷機制以獲得轉(zhuǎn)換。仍然參見圖2,當(dāng)IO控制器從本地存儲器接收請求的數(shù)據(jù)時,它可執(zhí)行原子請求的請求操作(方框250)。各種原子操作可如前所述地發(fā)生。一旦獲得結(jié)果,除了將該結(jié)果回寫至存儲器以存儲外,IO控制器可進(jìn)一步將結(jié)果經(jīng)由非相干鏈路發(fā)送至請求方(方框 280)。在一個實施例中,該結(jié)果可響應(yīng)最初非相干原子操作經(jīng)由非相干完成來傳遞。仍然參見圖2,如果相反確定目標(biāo)存儲器的位置不是出現(xiàn)在本地,則控制進(jìn)至方框沈0,在方框260相干原子請求可經(jīng)由相干鏈路發(fā)送至另一代理,例如擁有目標(biāo)存儲器位置的家庭代理(方框260)。該代理然后可執(zhí)行請求的原子操作并經(jīng)由相干原子完成將結(jié)果返回給IO控制器(方框270)。該結(jié)果然后被返回,如方框280所示。從請求方的角度說可參照圖3。如圖3所示,方法300可通過經(jīng)由非相干鏈路發(fā)送原子請求來實現(xiàn)(方框310)。該非相干設(shè)備可發(fā)送數(shù)個選定原子操作中的任何一個操作, 全部這些操作一般可包括與擬執(zhí)行的原子操作對應(yīng)的操作碼;可能是用于原子操作的一個或多個操作數(shù);以及擬獲得操作數(shù)和/或擬寫入結(jié)果的目標(biāo)存儲器位置。然后在原子操作結(jié)束后,外圍設(shè)備可接收包含請求數(shù)據(jù)的原子完成(方框320)。注意盡管操作是在完成方的適當(dāng)位置自動執(zhí)行的,然而外圍設(shè)備在執(zhí)行其它作業(yè)前不需要等待結(jié)果返回。因此,在方框310和320之間的時間,外圍設(shè)備可執(zhí)行與原子操作無關(guān)的有用作業(yè)。現(xiàn)在參見圖4,圖中示出由接收相干原子操作的目標(biāo)代理執(zhí)行的操作的流程圖。具體地說,方法400可開始于經(jīng)由相干鏈路在第二 IO控制器中接收原子請求?;剡^頭來參見圖1,該第二控制器可以是出現(xiàn)在第二處理器IlO1中的IIO 11410仍然參見圖4,當(dāng)IO控制器從相干鏈路接收相干原子請求時,IO控制器可(通過參照指示目標(biāo)存儲器的物理位置的本地頁面表)訪問其本地存儲器以獲得目標(biāo)存儲器位置處的數(shù)據(jù)(方框420)。然后它可執(zhí)行原子請求的請求操作(方框430)。各種原子操作可如前所述地發(fā)生。一旦獲得結(jié)果, 除了將結(jié)果回傳至其本地存儲器以存儲外,IO控制器可進(jìn)一步經(jīng)由相干鏈路將完成發(fā)送至最初的完成方,即直接耦合于設(shè)備請求方的IO控制器(方框440)。在一個實施例中,該完成可包括結(jié)果,并且可響應(yīng)經(jīng)由相干鏈路接收的相干原子請求藉由相干完成傳遞。盡管在圖2-4所示實施例中示出具體的一組操作和代理,但是應(yīng)理解本發(fā)明的范圍不受這方面的限制。各實施例可以用代碼實現(xiàn),并可存儲在其上存儲有指令的存儲介質(zhì)上,這些指令可用來對系統(tǒng)編程以執(zhí)行這些指令。存儲介質(zhì)可包括但不限于任何類型的盤,包括軟盤、光盤、光碟、固態(tài)驅(qū)動器(SSD)、緊湊盤只讀存儲器(⑶-ROM)、可重寫緊湊盤(⑶-RW)和磁光盤、諸如只讀存儲器(ROM)的的半導(dǎo)體器件、諸如動態(tài)隨機存取存儲器(DRAM)、靜態(tài)隨機存取存儲器(SRAM)之類的隨機存取存儲器(RAM)、可擦除可編程只讀存儲器(EPROM)、閃存、 電可擦除可編程只讀存儲器(EEPROM)、磁卡或者光學(xué)卡、或適于存儲電子指令的任意其它類型的介質(zhì)。盡管本發(fā)明已針對有限數(shù)量的實施例作了描述,然而本領(lǐng)域技術(shù)人員將會從其中領(lǐng)會到許多修改和變型。所附權(quán)利要求旨在覆蓋所有這樣的修改和變型,只要其落在本發(fā)明的真實精神和范圍內(nèi)。
權(quán)利要求
1.一種方法,包括在第一代理中經(jīng)由非相干鏈路接收來自耦合于所述第一代理的設(shè)備的非相干原子請求;訪問所述第一代理的映射表以將所述非相干原子請求變換成相干原子請求;以及經(jīng)由相干鏈路將所述相干原子請求發(fā)送至經(jīng)由所述相干鏈路耦合于所述第一代理的第二代理以使所述第二代理成為所述非相干原子請求的完成方。
2.如權(quán)利要求1所述的方法,其特征在于,還包括在所述第一代理中接收原子完成,所述原子完成包括對應(yīng)于所述相干原子請求的、由所述第二代理執(zhí)行的原子操作的結(jié)果。
3.如權(quán)利要求1所述的方法,其特征在于,還包括判斷所述非相干原子請求的目標(biāo)存儲器位置是否在所述第一代理的本地,如果是的話就響應(yīng)非相干原子請求訪問在所述目標(biāo)存儲器位置的數(shù)據(jù),否則將所述相干原子請求發(fā)送至所述第二代理。
4.如權(quán)利要求3所述的方法,其特征在于,所述第二代理處于包括所述目標(biāo)存儲器位置的存儲器本地。
5.如權(quán)利要求4所述的方法,其特征在于,所述第二代理執(zhí)行所述原子操作,將所述原子操作的結(jié)果存儲在所述目標(biāo)存儲器位置,并將相干原子完成發(fā)送至所述第一代理以指示所述原子操作的完成。
6.如權(quán)利要求5所述的方法,其特征在于,還包括在所述第一代理中接收相干原子完成并訪問所述第一代理的映射表以獲得非相干原子完成。
7.如權(quán)利要求6所述的方法,其特征在于,還包括經(jīng)由所述非相干鏈路將所述非相干原子完成內(nèi)的結(jié)果發(fā)送至所述設(shè)備。
8.一種裝置,包括第一代理,用來經(jīng)由非相干鏈路接收來自耦合于所述第一代理的設(shè)備的對于請求的操作的原子請求,所述第一代理包括具有多個表目的映射表,所述每個表目將非相干交易映射至相干交易,至少一些表目包括非相干原子操作碼和相應(yīng)的相干原子操作碼之間的映射,其中響應(yīng)于所述原子請求的非相干原子操作碼的接收,所述第一代理經(jīng)由相干鏈路將所述相干原子操作碼發(fā)送至耦合于所述第一代理的第二代理,以使所述第二代理執(zhí)行所述原子請求的所述請求的操作。
9.如權(quán)利要求8所述的裝置,其特征在于,所述第一代理包括所述設(shè)備的根聯(lián)合體,并且所述原子請求具有要求將所述根聯(lián)合體作為所述原子請求的完成方的協(xié)議。
10.如權(quán)利要求9所述的裝置,其特征在于,所述相干原子操作碼使所述第二代理作為所述原子請求的完成方。
11.如權(quán)利要求8所述的裝置,其特征在于,所述第一代理經(jīng)由所述相干鏈路從所述第二代理接收所述請求的操作的完成并產(chǎn)生非相干完成以傳送至所述設(shè)備。
12.如權(quán)利要求8所述的裝置,其特征在于,所述第一代理僅當(dāng)所述原子請求的目標(biāo)存儲器位置處于所述第一代理本地時才響應(yīng)于所述原子請求來執(zhí)行所述請求的操作。
13.如權(quán)利要求12所述的裝置,其特征在于,所述裝置包括處理器,所述處理器包括與所述第一代理對應(yīng)的多個核和集成的輸入/輸出控制器。
14.如權(quán)利要求13所述的裝置,其特征在于,所述處理器經(jīng)由所述相干鏈路耦合于第二處理器,所述第二處理器包括第二代理。
15.一種系統(tǒng),包括第一處理器,其包括至少一個第一核;第一存儲器控制器,其耦合于第一本地存儲器; 以及第一控制器,用來與經(jīng)由非相干鏈路耦合于所述第一處理器的設(shè)備通信,所述第一控制器從所述設(shè)備接收對請求的操作的原子請求并訪問映射表以將所述原子請求的非相干原子操作碼映射至相應(yīng)的相干原子操作碼,并經(jīng)由相干鏈路將所述相干原子操作碼發(fā)送至耦合于所述第一處理器的第二處理,以使所述第二處理器執(zhí)行所述原子請求的所述請求的操作;第二處理器,其包括至少一個第二核;第二存儲器控制器,其耦合于第二本地存儲器; 以及第二控制器,其接收所述相干原子操作碼,響應(yīng)于所述相干原子操作碼執(zhí)行所述請求的操作以獲得結(jié)果,將所述結(jié)果存儲在所述第二本地存儲器中,并將所述原子請求的完成提供給所述第一控制器;以及所述設(shè)備經(jīng)由所述非相干鏈路耦合于所述第一處理器并產(chǎn)生所述原子請求,其中所述第一控制器包括所述設(shè)備的根聯(lián)合體并且所述原子請求具有要求將所述根聯(lián)合體作為所述原子請求的完成方的協(xié)議。
16.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述第一控制器包括具有多個條目的路由表,每個條目指示耦合于處理器的本地存儲器的地址范圍。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述第一控制器基于所述路由表中的信息將所述相干原子操作路由至所述第二處理器。
18.如權(quán)利要求15所述的系統(tǒng),其特征在于,所述第一控制器接收所述完成并訪問所述映射表以獲得與所述完成對應(yīng)的非相干完成。
19.如權(quán)利要求18所述的系統(tǒng),其特征在于,所述第一控制器將所述非相干完成送至所述設(shè)備以指示所述請求的操作的成功完成,并且所述設(shè)備在將所述原子請求傳送至所述第一處理器后且在接收所述非相干完成前執(zhí)行至少一個無關(guān)的操作。
20.如權(quán)利要求15所述的系統(tǒng),其特征在于,還包括耦合于所述第一處理器的可伸縮節(jié)點控制器,所述可伸縮節(jié)點控制器從所述第一處理器接收第二原子請求以在耦合于由所述第一處理器所擁有的所述可伸縮節(jié)點控制器的存儲器中執(zhí)行請求的操作。
全文摘要
在一個實施例中,本發(fā)明包括一種方法,其經(jīng)由非相干鏈路從耦合于代理的設(shè)備接收非相干原子請求;訪問代理的映射表以將非相干原子請求變換成相干原子請求;并經(jīng)由相干鏈路將相干原子請求發(fā)送至耦合于該代理的第二代理以使第二代理成為非相干原子請求的完成方。描述并要求保護(hù)其他實施例。
文檔編號G06F9/46GK102214120SQ201110094419
公開日2011年10月12日 申請日期2011年4月7日 優(yōu)先權(quán)日2010年4月8日
發(fā)明者R·薩里帕利 申請人:英特爾公司