TWI438634B - 用於強制執行記憶體存取之次序及連貫性之方法與裝置 - Google Patents

用於強制執行記憶體存取之次序及連貫性之方法與裝置 Download PDF

Info

Publication number
TWI438634B
TWI438634B TW099116865A TW99116865A TWI438634B TW I438634 B TWI438634 B TW I438634B TW 099116865 A TW099116865 A TW 099116865A TW 99116865 A TW99116865 A TW 99116865A TW I438634 B TWI438634 B TW I438634B
Authority
TW
Taiwan
Prior art keywords
memory
barrier
request
memory access
command
Prior art date
Application number
TW099116865A
Other languages
English (en)
Other versions
TW201104437A (en
Inventor
Thomas Philip Speier
James Norris Dieffenderfer
Thomas Andrew Sartorius
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of TW201104437A publication Critical patent/TW201104437A/zh
Application granted granted Critical
Publication of TWI438634B publication Critical patent/TWI438634B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/161Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement
    • G06F13/1621Handling requests for interconnection or transfer for access to memory bus based on arbitration with latency improvement by maintaining request order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • G06F12/0835Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means for main memory peripheral accesses (e.g. I/O or DMA)

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)

Description

用於強制執行記憶體存取之次序及連貫性之方法與裝置
本發明大體而言係關於處理系統,且更特定言之係關於在弱排序儲存系統中藉由發布記憶體障礙命令來維持程式儲存操作之次序的技術。
諸如蜂巢式電話、膝上型電腦、個人資料助理(PDA)及其類似者之許多攜帶型產品利用執行諸如通信及多媒體程式之程式的處理系統。用於此等產品之處理系統可包括一或多個處理器、用於儲存指令及資料之複雜記憶體系統、控制器及經組態以經由一或多個匯流排與處理器及記憶體建立介面的周邊器件。同時,攜帶型產品具有呈電池之形式的有限能量源,支援來自處理系統之高效能操作常常需要該等電池。為增加電池使用壽命,需要儘可能有效地執行此等操作。許多個人電腦亦正被開發成具有以降低之能耗進行操作的有效設計。
在此等處理系統中,處理器常常藉由允許無序地執行記憶體操作來達成效能益處。舉例而言,可重新排序記憶體操作之順序以允許對記憶體中同一頁面之彼等操作在打開一新頁面之前得以執行。允許重新排序記憶體操作之處理系統通常被稱為「弱排序」處理系統。
在某些情形中,記憶體操作之重新排序可能會不可預知地影響程式行為。舉例而言,應用程式可能要求第一處理器從第一記憶體位址開始寫入一資料區塊且將指示已儲存該資料區塊的一資料就緒旗標寫入至第二記憶體位址。第二處理器將監控該資料就緒旗標且在該旗標指示已儲存資料時讀取該資料區塊。在弱排序處理系統中,無法保證將發生此操作次序,此情形可能是無法接受的。又,在弱排序處理系統中,除了處理器之外,周邊器件亦可作為匯流排主控器進行操作以將資料發送至記憶體且自記憶體接收資料,此可能使維持程式儲存操作之次序進一步複雜化。
已使用各種技術在弱排序處理系統中執行有序記憶體操作。一種技術為直接延遲某些記憶體操作,直至在其前面之所有記憶體操作得以執行。在先前實例中,處理器可延遲發布一讀取請求,直至其向記憶體位置寫入之後。另一種技術係使用被稱為障礙命令之匯流排命令,此命令係在需要有序記憶體操作時被發布。障礙命令可用以確保在執行處理器在該障礙命令之後發布的任何記憶體存取請求之前完成處理器在該障礙命令之前發布的所有記憶體存取請求。同樣,在先前實例中,第一處理器可在寫入該資料就緒旗標之前發布一障礙命令。此障礙命令將確保在寫入該資料就緒旗標之前將資料區塊寫入至記憶體,此確保第二處理器讀取新近儲存之資料。
一些處理器、周邊器件及匯流排實施可能無法辨識障礙命令。利用障礙命令之弱排序處理系統將不能使用此等處理器、周邊器件及匯流排。結果,弱排序處理系統可能無法有效地執行。
本發明在其若干態樣當中認識到:提供在一弱排序儲存系統中用於發布記憶體障礙命令之更有效的方法及裝置可在處理系統中改良效能且減少功率要求。為達成此等目的,本發明之一實施例提出一種用於強制執行記憶體存取之次序的方法。自未經組態以產生記憶體障礙命令的一器件接收一記憶體存取請求。回應於該記憶體存取請求而產生一代用障礙。
另一實施例提出一用於強制執行記憶體存取之次序的裝置。一匯流排介面電路自一器件接收一記憶體存取請求且將該記憶體存取請求傳達至一記憶體階層。一代用障礙產生器電路回應於該記憶體存取請求而產生一代用障礙。
另一實施例提出一種在一系統中用於連貫性強制執行的方法。經由無法辨識記憶體障礙命令之一匯流排介面自一器件接收一記憶體存取請求。回應於該記憶體存取請求而產生一代用障礙,其中在該系統內強制執行連貫性,猶如自該器件接收了記憶體障礙命令。
另一實施例提出一種用於強制執行記憶體存取之次序的方法。自未經組態以產生記憶體障礙命令的一器件接收一記憶體讀取請求。回應於該記憶體讀取請求而強制執行記憶體存取之次序,此係藉由扣留與該記憶體請求相關聯之讀取資料直至已保證完成了先前的記憶體存取操作。
應理解,對於熟習此項技術者而言,本發明之其他實施例將自以下實施方式變得容易顯而易見,在實施方式中,以說明之方式來展示並描述本發明之各種實施例。應瞭解,本發明能夠實踐其他及不同實施例且其若干細節能夠在各個其他方面加以修改,以上所有均不背離本發明之精神及範疇。因此,應將圖式及實施方式視為本質上係說明性而非限制性的。
在隨附圖式中,以實例之方式而非以限制之方式來說明本發明之各種態樣。
下文結合附加圖式來闡述之實施方式意欲作為對本發明之各種例示性實施例之描述,且不意欲表示可實踐本發明之僅有實施例。為達成提供對本發明之透徹理解之目的,實施方式包括特定細節。然而,對於熟習此項技術者將顯而易見,可在無此等特定細節的情況下實踐本發明。在一些情形中,以方塊圖形式來展示熟知之結構及組件,以便避免使本發明之概念模糊。
圖1說明一可有利地使用本發明之一實施例的例示性無線通信系統100。為達成說明之目的,圖1展示三個遠端單元120、130及150以及兩個基地台140。應瞭解,普通無線通信系統可具有更多遠端單元及基地台。如下文所進一步論述,包括硬體組件、軟體組件或兩者(分別由組件125A、125C、125B及125D表示)的遠端單元120、130、150及基地台140已經調適以體現本發明。圖1展示自基地台140至遠端單元120、130及150的前向鏈路信號180及自遠端單元120、130及150至基地台140的反向鏈路信號190。
在圖1中,將遠端單元120展示為行動電話,將遠端單元130展示為攜帶型電腦,且將遠端單元150展示為無線區域迴路系統中之固定位置遠端單元。作為實例,該等遠端單元可另外為蜂巢式電話、呼叫器、對講機、掌上型個人通信系統(PCS)單元、諸如個人資料助理之攜帶型資料單元,或諸如儀錶讀取設備之固定位置資料單元。儘管圖1說明根據本發明之教示的遠端單元,但本發明並不限於此等例示性所說明單元。本發明之實施例可適當地用於與弱排序儲存子系統一起操作之任何處理系統中。
圖2展示一在弱排序儲存系統中支援無障礙器件的例示性處理系統200,處理系統200可適當地用於圖1之組件125A、125C、125B及125D中。處理系統200包括系統核心202及外部核心203。系統核心202包含處理器2041 、2042 、...、204N (共同為204)、一階指令快取記憶體(L1 I快取記憶體)2061 、2062 、...、206N (共同為206)、一階資料快取記憶體(L1 D快取記憶體)2071 、2072 、...、207N (共同為207)、二階系統連貫性單元(L2 SCU)212及主記憶體214。外部核心203包括外部主控器(EM)2081 、2082 、...、208K (共同為208)及一共用匯流排互連210。系統核心202包括一記憶體階層216,該記憶體階層216具有:L1 I快取記憶體206;L1 D快取記憶體207;具有一L2快取記憶體217之L2 SCU 212;及主記憶體214。特定應用所要求之處理器204及快取記憶體206與207的實際數目N以及EM 208之數目K可取決於處理要求及設計約束而改變。可將處理器204中之每一者及EM 208中之每一者實施為諸如通用處理器、數位信號處理器(DSP)、特殊應用處理器(ASP)或其類似者之匯流排主控器件。可使用特殊應用積體電路(ASIC)技術、場可程式化閘陣列(FPGA)技術或其他可程式化邏輯、離散閘或電晶體邏輯或者適合於預期應用之任何其他可用技術來實施處理系統200之各種組件。
舉例而言,處理器204中之一或多者及EM 208中之一或多者可經組態以在儲存於電腦可讀儲存媒體上之程式的控制下執行指令。舉例而言,電腦可讀儲存媒體可直接與處理器204或EM 208在本端相關聯,諸如,可經由指令快取記憶體206中之一者、與每一EM相關聯之本端記憶體而為可用的,或可由EM 208經由共用匯流排互連210進行存取。處理器204可在執行一程式之過程中自記憶體階層216存取資料。EM 208亦可存取駐留於一記憶體器件中之資料,該記憶體器件直接與每一EM在本端相關聯,或可經由共用匯流排互連210而可自另一處理器記憶體器件(例如,L2 SCU 212)進行存取。電腦可讀儲存媒體可包括隨機存取記憶體(RAM)、動態隨機存取記憶體(DRAM)、同步動態隨機存取記憶體(SDRAM)、快閃記憶體、唯讀記憶體(ROM)、可程式化唯讀記憶體(PROM)、可抹可程式化唯讀記憶體(EPROM)、電可抹可程式化唯讀記憶體(EEPROM)、緊密光碟(CD)、數位視訊光碟(DVD)、其他類型之抽取式碟片或任何其他合適之儲存媒體。
在處理系統200中,L1 D快取記憶體207可使用(例如)完全寫入式快取(write through caching)。L2系統連貫性單元(L2 SCU)212在具有不能發送障礙命令之匯流排主控器件的系統200中有利地確保記憶體存取操作之恰當排序。主記憶體214可由記憶體器件(諸如三階快取記憶體、大容量記憶體及其類似者)之階層架構組成。對完全寫入式資料快取記憶體之寫入操作使資料亦被寫入至下一階記憶體。
外部主控器(EM)可為:記憶體控制器、用於互連至另一匯流排互連器件之橋接器件、諸如硬碟控制器之周邊器件、通用串列匯流排(USB)控制器、互動式顯示器件、將控制器耦接至傳輸器及接收器的無線電器件或其類似者。外部主控器(EM)208藉由雙向介面2181 、2182 、...、218K 耦接至共用匯流排互連210,共用匯流排互連210經由共用匯流排220將記憶體存取請求傳達至記憶體階層216。EM 208亦可為利用直接記憶體存取(DMA)技術來讀取資料或寫入資料至主記憶體214的匯流排主控器。共用匯流排互連210管理匯流排訊務且經由共用匯流排220提供介於EM 208中之每一者與記憶體之間的連接路徑。共用匯流排220可組態成(例如)具有與每一EM相關聯之專用通道。
詳言之,雙向介面2181 、2182 、...、218K 中之每一者可包括寫入資料匯流排、位址匯流排及讀取資料匯流排,以及相關聯之控制信號。在許多系統中,可使用一組合式寫入與讀取資料匯流排。通常,取決於特定系統之要求,單獨的位址匯流排、讀取資料匯流排及寫入資料匯流排遵照特定的匯流排架構或標準。EM 208中之每一者使用(例如)記憶體存取請求經由其對應之雙向介面218進行通信。記憶體存取請求可包括:寫入或儲存請求、讀取或載入請求,或可包括記憶體障礙命令的匯流排相關請求。即使EM發布了一記憶體障礙命令,但並非外部主控器所使用之所有匯流排介面(諸如雙向介面2181 、2182 、...、218K )均支援或辨識出記憶體障礙命令。又,並非所有EM均支援記憶體障礙命令。舉例而言,EM可能並未藉由實施或藉由程式化構件進行組態以產生記憶體障礙命令。在任一此等情況下,沒有來自外部主控器之記憶體障礙命令支援,處理器204就不知道外部主控器關於記憶體存取操作的意圖。
為達成強調在多處理器系統中維持正確的記憶體存取次序的若干問題中之一者之目的,最初在不使用本文中所描述之新穎特徵的情況下描述問題情境。詳言之,使用不支援跨一匯流排來廣播障礙命令的多處理器系統(諸如處理系統200),該匯流排將外部主控器耦接至記憶體階層。關於圖2之處理系統200,問題情境之一實例係基於發生在處理器2041 、處理器2042 及EM 2082 上之記憶體存取操作。該等記憶體存取操作在表1中展示為按操作事件之順序被排序。
在此實例中,L2快取陣列217中之位置X及Y最初為0。在第一事件中,處理器2041 執行一儲存暫存器(STR)指令以將值5寫入至位置X。在第二事件中,EM 2082 發布一載入暫存器(LDR)指令以自位址X讀取一值。所讀取之值為先前在第一事件期間藉由STR X指令儲存於位置X中的值5。應注意,到第二事件時,與STR X指令相關聯之窺探失效命令並未到達其他處理器204(包括處理器2042 )。窺探監控為一種監控匯流排訊務以發現向記憶體系統之寫入的方法。在此方法中,處理器判定過期之共用資料是否位於其本端快取記憶體中。若一處理器可具有作為寫入命令之目標之共用資料的過期複本,則向該處理器發布窺探失效命令。若在本端快取記憶體中發現共用資料,則窺探失效命令使共用資料之複本失效,因為此複本將由於偵測到之寫入操作而過期。
在第三事件中,EM 2082 發布一資料記憶體障礙(DMB)命令。由於該DMB,EM 2082 等待所有其自身之先前寫入已接收一完成回應且等待任何先前讀取已接收相關聯之資料。然而,並未跨共用匯流排220來廣播DMB命令。由於系統核心202不知道EM 2082 發布了DMB命令,因此在系統核心202內未強制執行排序約束。類似地,在具有一不支援諸如DMB之記憶體障礙命令之外部主控器的系統中,在系統核心202內將不強制執行排序約束。因此,任何EM 2082 的先前寫入將接收一完成回應且先前讀取(諸如回應於第二事件LDR X指令而發生的先前讀取)將接收讀取為5之資料值。
在接收到回應於EM 2082 LDR X指令而讀取之資料值之後且在完成資料記憶體障礙之後,發生第四事件。在第四事件中,EM 2082 發布一儲存暫存器(STR)指令以將值1寫入至位置Y。在第五事件中,處理器2042 執行一LDR Y指令以讀取由EM 2082 STR Y指令儲存於該位置Y中之值1。此時,來自第三事件之DMB命令將已要求處理器2042 自處理器2041 之STR X指令之結果觀測值5。然而,由於共用匯流排220並未廣播DMB命令,因此未強加排序約束。舉例而言,到第五事件時,與處理器2041 之STR X指令相關聯的窺探失效命令可能並未達到處理器2042 ,例如,若窺探失效命令在L2 SCU 212內之窺探佇列處理邏輯中遭到拖延,則可能發生此情況。因此,在第六事件中,處理器2042 之LDR X可能會讀取儲存於其自身之L1 D快取記憶體2072 中的舊值。因此,已違反發布DMB命令之EM 2082 所隱含的排序約束。
為在具有弱排序儲存系統且支援無障礙之器件與匯流排實施的一處理系統中確保記憶體操作按正確次序發生,該處理系統認識到:當經由一器件之不支援障礙命令的介面自該器件接收到一讀取請求時,該處理系統產生一代用記憶體障礙。舉例而言,在L2 SCU 212中產生代用記憶體障礙,該L2 SCU 212為與外部主控器208之介面點。
圖3說明一例示性記憶體存取次序控制系統300,其展示圖2之L2系統連貫性單元(L2 SCU)212的擴展細節。L2 SCU 212包含先進先出(FIFO)緩衝器304、匯流排命令解碼器306、代用障礙產生器電路308、記憶體庫窺探佇列310、二階(L2)陣列312、處理器窺探佇列電路314及主記憶體介面電路318。通常(例如)藉由FIFO緩衝器304對共用匯流排220進行緩衝,以支援多個器件之間的匯流排訊務的流量控制及變化。儘管圖3中展示單個FIFO緩衝器,但應瞭解,可取決於共用匯流排220之組態而使用複數個FIFO緩衝器,諸如多通道共用匯流排設計中可能發生的情況。匯流排命令解碼器306解碼匯流排請求,諸如寫入或儲存請求、讀取或載入請求或任何其他匯流排相關命令。
在處理系統200中,EM 208及共用匯流排220中之一或多者不支援記憶體障礙命令。為解決記憶體次序違規(諸如表1中所說明及上文所描述之情境),代用障礙產生器電路308在接收到一讀取請求後產生代用記憶體障礙命令(諸如代用讀取障礙)。舉例而言,當在L2 SCU 212中接收並辨識出由EM 2082 發布之LDR X載入指令所引起的讀取請求時,產生代用讀取障礙。設定對一讀取障礙在進行中的指示符320,使得在該代用障礙之後的記憶體存取請求保持被擱置,直至認可該代用障礙完成。與L2陣列312相關聯之記憶體庫窺探佇列310儲存一代用讀取障礙,該代用讀取障礙經標記以識別作出該讀取請求之EM。記憶體庫窺探佇列310被認為是窺探佇列處理程序中之第一階段。L2陣列312含有可作為匯流排請求之目標之多個記憶體庫。處理器窺探佇列電路314包含與圖2之處理器204中之每一者相關聯的個別處理器窺探佇列3161 、3162 、...、316N (共同為316)且形成窺探佇列處理程序中之第二階段。
作為一實例,將該代用讀取障礙置放於與L2陣列312相關聯之記憶體庫窺探佇列310中並將其傳達至諸如處理器窺探佇列316之連貫性參與者以強制執行排序約束。排序約束確保:在允許執行在該代用記憶體障礙之後發布的任何記憶體存取之前,處理系統中之處理器(諸如處理器204)可觀測到執行在該代用記憶體障礙之前發布之記憶體存取的結果。代用記憶體障礙係由作出該讀取請求之器件的識別參考(ID)進行標記以便使一認可與適當之代用記憶體障礙相關聯。
更具體而言,當產生、標記一代用讀取障礙並將其置放於記憶體庫窺探佇列310中時,亦將該代用讀取障礙傳達至個別處理器窺探佇列3161 、3162 、...、316N 。處理器窺探佇列316中之代用讀取障礙迫使先前的窺探失效命令通過處理器窺探佇列316,且進入其相關聯之處理器中,到達在其對應之L1 D快取記憶體207上執行窺探失效命令的點。因此,使在該讀取障礙前面且與彼等窺探失效命令相關聯的寫入操作係處理器204可見的。先前的窺探失效命令可(例如)與正由一或多個外部主控器(諸如發布LDR X指令之EM 2082 ,其促使產生該讀取障礙)觀測到的儲存操作相關聯。應注意,該讀取障礙確保在任何新操作存取該L1 D快取記憶體之前在L1 D快取記憶體上執行任何先前的窺探失效命令。
LDR X指令讀取操作可通過目標L2陣列312,且將讀取資料傳回至外部主控器而無需等待代用讀取障礙之進度。若系統核心202自EM 208中之一者接收到一寫入請求且仍有與該EM相關聯之代用讀取障礙在L2陣列312之窺探佇列中之任一者中被擱置,則歸因於被擱置之代用讀取障礙而在存取目標L2記憶體庫之前阻止在L2 SCU 212中執行該寫入請求。以此方式,直至代用讀取障礙已完成,處理器204中之任一者才可能觀測到EM之寫入請求,該寫入請求可為障礙後寫入請求。因此,將保證處理器204已執行針對EM在發送寫入請求之前可能已觀測到之任何寫入的窺探失效命令。另外,來自EM之一後續寫入將停頓,直至已知針對EM可能已觀測到的寫入的所有先前窺探失效命令完成。
又,任何外部主控器之寫入請求使一窺探失效命令被產生且置放於L2陣列312中之目標記憶體庫的記憶體庫窺探佇列310中。以與上文所描述之方式類似的方式,窺探失效命令流入至處理器窺探佇列316中且接著流至其相關聯之處理器204。直至相關聯之窺探失效命令已通過所有處理器窺探佇列316並到達相關聯之處理器204,才發送對EM之回應(關於寫入請求之完成)至EM。
在一實施例中,對上文所描述之代用讀取障礙及窺探失效命令的要求通常與來自被呈現為可快取及可共用之外部主控器的存取有關。可快取及可共用為用以描述作為一請求之目標之記憶體的兩個屬性。若記憶體為不可快取的,則快取記憶體207不能快取目標記憶體位置,且因而,該記憶體不需要窺探失效命令。同樣,未被標記為可共用之記憶體意謂系統不必強制執行跨任何兩個代理的連貫性,且因而,未被共用之記憶體不需要窺探失效命令。
用於控制外部主控器之替代性實施例為:藉由使系統核心202阻止LDR X讀取資料被發送至外部主控器(諸如在表1之事件2中),直至已完成讀取障礙。直至已完成所有先前儲存操作(諸如表1之事件2),EM才完成一障礙(諸如表1之事件3)。藉由阻止LDR X讀取資料被發送至外部主控器,系統核心202保證與表1之事件1相關聯的窺探失效已通過所有處理器窺探佇列316且到達相關聯之處理器204。此確保:直至已完成與STR X相關聯之所有窺探失效,STR Y之結果(諸如表1中之事件4)才可見。在讀取之後產生一代用障礙而不是扣留讀取資料的優點是EM可更早開始處理讀取資料,此改良系統效率。
如上文所描述,回應於來自外部主控器之讀取請求而產生代用讀取障礙。在另一實施例中,可在對來自外部主控器之寫入請求進行操作之前回應於該寫入請求而產生代用讀取障礙。L2 SCU 212等待直至其接收到一寫入請求且接著在執行寫入之前產生障礙,而不是在讀取操作之後先佔式地產生障礙。與在寫入之前產生障礙相比,在讀取之後產生障礙的優點是:在212接收來自EM之任何後續寫入之前,可能已完成該障礙,從而改良操作效率。在寫入之前產生障礙可被視為一種替代方法。
在另一實施例中,可選擇性地產生代用讀取障礙。舉例而言,代用障礙之產生可取決於對與自一外部主控器接收到之讀取請求相同之位址的一或多個先前寫入請求。在表1中所展示之實例中,僅因為事件2之LDR X之目標為與事件1之STR X相同的記憶體位置,讀取障礙才有必要。僅因為LDR X觀測到STR X資料,才使一障礙成為確保與STR X相關聯之窺探失效已完成所必要的。基於來自EM之讀取請求與被擱置之窺探失效之間的位址比較而選擇性地產生讀取障礙增加系統效率,因為其減小所產生之讀取障礙的數目。
在另一實施例中,代用障礙之產生對於不具有障礙產生能力之彼等外部主控器而言可為選擇性的。具有障礙產生能力之外部主控器將繞過代用障礙產生電路308,將障礙發送至記憶體庫窺探佇列310且亦發送至處理器窺探佇列電路314。若外部主控器能夠產生障礙,則EM將按需要產生障礙,而不是代用障礙產生電路308在每一讀取操作之後產生障礙。由於來自EM之讀取操作的數目通常遠大於自EM產生之實際障礙的數目,因此僅針對不能產生障礙之EM來選擇性地產生代用讀取障礙增加系統效率,因為其減小所產生之讀取障礙的數目。
在另一實施例中,可在諸如共用匯流排互連210之匯流排互連單元中產生一代用讀取障礙。共用匯流排互連210將標記該代用讀取障礙以識別作出讀取請求之EM且保持任何後續記憶體存取請求被擱置,直至接收到對該代用讀取障礙完成之一讀取障礙認可指示。
圖4說明用於在弱排序儲存系統中針對無障礙器件產生代用讀取障礙的例示性程序400。在步驟404處,在L2 SCU 212中自外部主控器208中之一者接收一記憶體存取請求。在決策步驟406處,(例如)在圖3之匯流排命令解碼器306中作出記憶體存取請求是否為讀取請求的判定。若記憶體存取請求並非讀取請求,則其為寫入請求且程序400進行至決策步驟408。在決策步驟408處,(例如)藉由檢查一記憶體障礙進行中指示符(諸如圖3之指示符320),作出一代用讀取障礙是否已在進行中的進一步判定。若一代用讀取障礙已在進行中,則程序400等待直至該代用讀取障礙已完成,且接著進行至步驟410。在步驟410處,處置寫入請求。
返回至決策步驟406,若記憶體存取請求為讀取請求,則程序400進行至步驟412。在步驟412處,回應於接收到讀取請求而在代用障礙產生器電路308中產生一代用讀取障礙。在步驟414處,設定一指示符(諸如指示符320)以指示一讀取障礙在進行中。在步驟416處,標記該代用讀取障礙以識別作出讀取請求之EM且將該代用讀取障礙儲存於諸如記憶體庫窺探佇列310之佇列中。在步驟418處,經由諸如處理器窺探佇列316之佇列將該代用讀取障礙傳達至處理器204。在決策步驟420處,在處理器窺探佇列電路314中作出(例如)針對在該代用讀取障礙前面的操作之窺探失效命令是否完成的判定。若有任何窺探失效命令被擱置,則程序400等待直至該等窺探失效命令完成。當窺探失效命令完成時,程序400進行至步驟422。在步驟422處,認可該代用讀取障礙。在步驟424處,清除先前在步驟414處設定之指示符且允許處理記憶體存取操作。
結合本文中所揭示之實施例所描述的各種說明性邏輯區塊、模組、電路、元件及/或組件可利用以下各項來實施或執行:通用處理器、數位信號處理器(DSP)、特殊應用積體電路(ASIC)、場可程式化閘陣列(FPGA)或其他可程式化邏輯組件、離散閘或電晶體邏輯、離散硬體組件,或其經設計以執行本文中所描述之功能的任何組合。通用處理器可為微處理器,但在替代例中,處理器可為任何習知處理器、專用控制器或微編碼控制器。亦可將處理器實施為計算組件之組合,例如,DSP與微處理器之組合、複數個微處理器、結合DSP核心之一或多個微處理器,或適合於所要應用之任何其他此組態。
結合本文中所揭示之實施例所描述的方法可直接體現於硬體中、由處理器執行之軟體模組中或兩者之組合中。軟體模組可駐留於RAM記憶體、快閃記憶體、ROM記憶體、EPROM記憶體、EEPROM記憶體、暫存器、硬碟、抽取式碟片、CD-ROM或此項技術中已知的任何其他形式之儲存媒體中。儲存媒體可耦接至處理器,使得處理器可自儲存媒體讀取資訊且將資訊寫入至儲存媒體。在替代例中,儲存媒體可整合至處理器。
儘管在用於處理器系統中之說明性實施例的情形中揭示本發明,但應瞭解,一般熟習此項技術者可使用與上文之論述及下文之申請專利範圍相一致的各種各樣實施。舉例而言,固定功能實施亦可利用本發明之各種實施例。
100...無線通信系統
120...遠端單元
125A...組件
125B...組件
125C...組件
125D...組件
130...遠端單元
140...基地台
150...遠端單元
180...前向鏈路信號
190...反向鏈路信號
200...處理系統
202...系統核心
203...外部核心
2041 ...處理器
2042 ...處理器
204N ...處理器
2061 ...一階指令快取記憶體(L1 I快取記憶體)
2062 ...一階指令快取記憶體(L1 I快取記憶體)
206N ...一階指令快取記憶體(L1 I快取記憶體)
2071 ...一階資料快取記憶體(L1 D快取記憶體)
2072 ...一階資料快取記憶體(L1 D快取記憶體)
207N ...一階資料快取記憶體(L1 D快取記憶體)
2081 ...外部主控器(EM)
2082 ...外部主控器(EM)
208K ...外部主控器(EM)
210...共用匯流排互連
212...二階系統連貫性單元(L2 SCU)
212...L2 SCU
214...主記憶體
216...記憶體階層
217...L2快取記憶體
2181 ...雙向介面
2182 ...雙向介面
218K ...雙向介面
220...共用匯流排
300...記憶體存取次序控制系統
304...先進先出(FIFO)緩衝器
306...匯流排命令解碼器
308...代用障礙產生器電路
310...記憶體庫窺探佇列
312...二階(L2)陣列
314...處理器窺探佇列電路
3161 ...處理器窺探佇列
3162 ...處理器窺探佇列
316N ...處理器窺探佇列
318...主記憶體介面電路
320...指示符
圖1說明一無線通信系統;
圖2展示一例示性處理系統,其在弱排序儲存系統中支援無障礙器件;
圖3說明一例示性記憶體存取次序控制系統,其展示圖2之L2系統的連貫性單元(L2 SCU)的進一步細節;及
圖4說明一在弱排序儲存系統中針對無障礙器件產生代用讀取障礙的例示性程序。
2061 ...一階指令快取記憶體(L1 I快取記憶體)
2062 ...一階指令快取記憶體(L1 I快取記憶體)
206N ...一階指令快取記憶體(L1 I快取記憶體)
2071 ...一階資料快取記憶體(L1 D快取記憶體)
2072 ...一階資料快取記憶體(L1 D快取記憶體)
207N ...一階資料快取記憶體(L1 D快取記憶體)
212...二階系統連貫性單元(L2 SCU)
220...共用匯流排
300...記憶體存取次序控制系統
304...先進先出(FIFO)緩衝器
306...匯流排命令解碼器
308...代用障礙產生器電路
310...記憶體庫窺探佇列
312...二階(L2)陣列
314...處理器窺探佇列電路
3161 ...處理器窺探佇列
3162 ...處理器窺探佇列
316N ...處理器窺探佇列
318...主記憶體介面電路
320...指示符

Claims (20)

  1. 一種用於強制執行記憶體存取之次序的方法,該方法包含:自未經組態產生記憶體障礙命令的一外部主控器或自未經組態廣播記憶體障礙命令之一匯流排介面接收一記憶體存取請求;及藉由一二階快取記憶體連貫性控制介面電路回應於該記憶體存取請求而產生一代用障礙命令。
  2. 如請求項1之方法,其中該二階快取記憶體連貫性控制介面電路係經組態以強制執行來自該外部主控器或該匯流排介面之記憶體存取請求之次序。
  3. 如請求項2之方法,其中該二階快取記憶體連貫性控制介面電路係耦接至該外部主控器或該匯流排介面、與該複數個處理器相關聯之複數個快取記憶體及一主記憶體。
  4. 如請求項1之方法,其中該記憶體存取請求為一讀取請求。
  5. 如請求項4之方法,其中基於對與該讀取請求相同之位址的一或多個先前寫入請求而有條件地由該介面電路產生該代用障礙命令。
  6. 如請求項1之方法,其中在由能夠廣播記憶體障礙命令之一匯流排介面所廣播之後,該代用障礙命令並不回應於來自具有記憶體障礙產生能力之一外部主控器的一記憶體存取請求而被該介面電路產生。
  7. 如請求項1之方法,其中該記憶體存取請求為一寫入請求且在處理該寫入請求之前由該介面電路產生該代用障礙命令。
  8. 如請求項2之方法,其中該介面電路為耦接至複數個器件之一匯流排介面單元,該複數個器件中之一些器件不產生記憶體障礙命令。
  9. 如請求項1之方法,其進一步包含:向所有連貫性參與者傳達該代用障礙命令。
  10. 一種用於強制執行記憶體存取之次序的裝置,該裝置包含:一匯流排介面電路,其不支援記憶體障礙命令,但自一外部主控器接收多個記憶體存取請求且將該等記憶體存取請求傳達至包含複數個快取記憶體及一記憶體之一記憶體階層;一代用障礙產生器電路,其經組態以從該匯流排介面電路接收該等記憶體存取請求,及回應地產生多個代用障礙命令;及一記憶體庫窺探佇列,其用於接收該等代用障礙命令及根據該等代用障礙命令以排序與該記憶體之一或多個記憶體庫相關聯之該等記憶體存取請求。
  11. 如請求項10之裝置,其中該解碼後的記憶體存取請求為一讀取請求。
  12. 如請求項10之裝置,其中該解碼後的記憶體存取請求為一寫入請求且該代用障礙命令係在處理該寫入請求之前 產生。
  13. 如請求項10之裝置,其進一步包含:一處理器窺探佇列電路,其用於接收該等代用障礙命令及具有與複數個處理器中之每一者相關聯之一窺探佇列,該窺探佇列用於排序該等記憶體請求及記憶體障礙命令。
  14. 一種在一系統中用於連貫性之強制執行及記憶體存取之次序的方法,該方法包含:從一不經組態產生或辨識記憶體障礙命令之外部主控器或經由無法辨識記憶體障礙命令之一匯流排介面接收一記憶體存取請求;藉由一連貫性控制介面電路回應於該記憶體存取請求而產生一代用障礙命令;及根據該代用障礙命令在該系統中強制執行連貫性及記憶體存取之次序,猶如一記憶體障礙命令係自該外部主控器及透過該匯流排介面所接收。
  15. 如請求項14之方法,其中該記憶體存取請求為一讀取請求。
  16. 如請求項14之方法,其中該記憶體存取請求為一寫入請求且在處理該寫入之前產生該代用記憶體障礙命令。
  17. 如請求項14之方法,其中該代用障礙命令之該產生取決於對與該讀取請求相同之位址的一先前寫入請求。
  18. 如請求項14之方法,其中強制執行連貫性及記憶體存取之次序包含: 藉由一記憶體庫窺探佇列或一處理器窺探佇列或兩者,延遲執行自該外部主控器所接收之後續的寫入請求,直至接收到指示該代用障礙命令已完成的一認可。
  19. 如請求項14之方法,其進一步包含:藉由該連貫性控制介面電路向所有連貫性參與者廣播該代用障礙命令。
  20. 一種用於強制執行記憶體存取之次序的方法,該方法包含:自未經組態以產生記憶體障礙命令的一外部主控器或自未經組態廣播記憶體障礙命令之一匯流排介面接收一記憶體讀取請求;及藉由連貫性控制介面電路回應於該記憶體讀取請求而強制執行記憶體存取之一次序,此係藉由扣留與該記憶體讀取請求相關聯之讀取資料直至已保證完成了先前的記憶體存取操作。
TW099116865A 2009-05-26 2010-05-26 用於強制執行記憶體存取之次序及連貫性之方法與裝置 TWI438634B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/471,652 US8352682B2 (en) 2009-05-26 2009-05-26 Methods and apparatus for issuing memory barrier commands in a weakly ordered storage system

Publications (2)

Publication Number Publication Date
TW201104437A TW201104437A (en) 2011-02-01
TWI438634B true TWI438634B (zh) 2014-05-21

Family

ID=42313055

Family Applications (1)

Application Number Title Priority Date Filing Date
TW099116865A TWI438634B (zh) 2009-05-26 2010-05-26 用於強制執行記憶體存取之次序及連貫性之方法與裝置

Country Status (8)

Country Link
US (1) US8352682B2 (zh)
EP (1) EP2435919B1 (zh)
JP (1) JP5563071B2 (zh)
KR (1) KR101297744B1 (zh)
CN (1) CN102449611B (zh)
BR (1) BRPI1011315A2 (zh)
TW (1) TWI438634B (zh)
WO (1) WO2010138596A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI567555B (zh) * 2014-07-09 2017-01-21 英特爾股份有限公司 用於記憶體定序的方法、處理器以及積體電路

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2474446A (en) * 2009-10-13 2011-04-20 Advanced Risc Mach Ltd Barrier requests to maintain transaction order in an interconnect with multiple paths
US8589638B2 (en) * 2011-07-19 2013-11-19 Arm Limited Terminating barriers in streams of access requests to a data store while maintaining data consistency
GB2493405B (en) * 2011-08-03 2017-04-05 Advanced Risc Mach Ltd Debug barrier transactions
US8949547B2 (en) * 2011-08-08 2015-02-03 Arm Limited Coherency controller and method for data hazard handling for copending data access requests
US8782356B2 (en) * 2011-12-09 2014-07-15 Qualcomm Incorporated Auto-ordering of strongly ordered, device, and exclusive transactions across multiple memory regions
US20150033234A1 (en) * 2013-07-23 2015-01-29 Qualcomm Incorporated Providing queue barriers when unsupported by an i/o protocol or target device
US20150317158A1 (en) 2014-04-03 2015-11-05 Applied Micro Circuits Corporation Implementation of load acquire/store release instructions using load/store operation with dmb operation
US10534540B2 (en) * 2016-06-06 2020-01-14 Micron Technology, Inc. Memory protocol
US10474461B2 (en) * 2016-09-22 2019-11-12 Qualcomm Incorporated Instruction-based synchronization of operations including at least one SIMD scatter operation
JP6944107B2 (ja) * 2017-07-11 2021-10-06 富士通株式会社 情報処理装置、情報処理システム及びプログラム
JP2019074896A (ja) * 2017-10-16 2019-05-16 富士ゼロックス株式会社 データ処理装置
US11403098B2 (en) 2019-09-24 2022-08-02 Red Hat, Inc. Fast descriptor access for virtual network devices
US11163752B2 (en) 2019-11-18 2021-11-02 International Business Machines Corporation Global coherency for distributed data sources

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS55147744A (en) * 1979-05-07 1980-11-17 Hitachi Ltd Memory controlling unit
JPH05233422A (ja) * 1992-02-19 1993-09-10 Hitachi Ltd メモリ参照要求処理方式
US5649102A (en) * 1993-11-26 1997-07-15 Hitachi, Ltd. Distributed shared data management system for controlling structured shared data and for serializing access to shared data
US6275913B1 (en) 1999-10-15 2001-08-14 Micron Technology, Inc. Method for preserving memory request ordering across multiple memory controllers
US7725618B2 (en) * 2004-07-29 2010-05-25 International Business Machines Corporation Memory barriers primitives in an asymmetric heterogeneous multiprocessor environment
US7774512B2 (en) * 2005-02-08 2010-08-10 Sony Computer Entertainment Inc. Methods and apparatus for hybrid DMA queue and DMA table
US9026744B2 (en) * 2005-03-23 2015-05-05 Qualcomm Incorporated Enforcing strongly-ordered requests in a weakly-ordered processing
US7500045B2 (en) * 2005-03-23 2009-03-03 Qualcomm Incorporated Minimizing memory barriers when enforcing strongly-ordered requests in a weakly-ordered processing system
US7783817B2 (en) 2006-08-31 2010-08-24 Qualcomm Incorporated Method and apparatus for conditional broadcast of barrier operations

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI567555B (zh) * 2014-07-09 2017-01-21 英特爾股份有限公司 用於記憶體定序的方法、處理器以及積體電路

Also Published As

Publication number Publication date
TW201104437A (en) 2011-02-01
JP2012528399A (ja) 2012-11-12
US8352682B2 (en) 2013-01-08
EP2435919A1 (en) 2012-04-04
WO2010138596A1 (en) 2010-12-02
BRPI1011315A2 (pt) 2016-08-09
KR101297744B1 (ko) 2013-08-20
EP2435919B1 (en) 2017-12-13
JP5563071B2 (ja) 2014-07-30
CN102449611B (zh) 2015-09-23
CN102449611A (zh) 2012-05-09
KR20120014933A (ko) 2012-02-20
US20100306470A1 (en) 2010-12-02

Similar Documents

Publication Publication Date Title
TWI438634B (zh) 用於強制執行記憶體存取之次序及連貫性之方法與裝置
US8856448B2 (en) Methods and apparatus for low intrusion snoop invalidation
US10339058B2 (en) Automatic cache coherency for page table data
US8782356B2 (en) Auto-ordering of strongly ordered, device, and exclusive transactions across multiple memory regions
TW200534110A (en) A method for supporting improved burst transfers on a coherent bus
US9135177B2 (en) Scheme to escalate requests with address conflicts
US9411731B2 (en) System and method for managing transactions
JP2008503003A (ja) コヒーレント・マルチプロセッサ・プロトコルを有するシステムにおけるダイレクト・プロセッサ・キャッシュ・アクセス
CN109716305B (zh) 实现异步高速缓存维护操作的方法、计算设备以及介质
US9292442B2 (en) Methods and apparatus for improving performance of semaphore management sequences across a coherent bus
US20070005907A1 (en) Reduction of snoop accesses
US10248565B2 (en) Hybrid input/output coherent write
US7159077B2 (en) Direct processor cache access within a system having a coherent multi-processor protocol
US10795818B1 (en) Method and apparatus for ensuring real-time snoop latency
US8364906B2 (en) Avoiding memory access latency by returning hit-modified when holding non-modified data
CN118355369A (zh) 多媒体压缩帧感知高速缓存替换策略