TW201738731A - 多處理器系統及快取共用方法 - Google Patents

多處理器系統及快取共用方法 Download PDF

Info

Publication number
TW201738731A
TW201738731A TW106112851A TW106112851A TW201738731A TW 201738731 A TW201738731 A TW 201738731A TW 106112851 A TW106112851 A TW 106112851A TW 106112851 A TW106112851 A TW 106112851A TW 201738731 A TW201738731 A TW 201738731A
Authority
TW
Taiwan
Prior art keywords
cache
processor
cache memory
data
memory
Prior art date
Application number
TW106112851A
Other languages
English (en)
Other versions
TWI643125B (zh
Inventor
林建宏
吳明儒
喬偉豪
李坤耿
張順傑
張鳴谷
許嘉豪
蕭丕承
Original Assignee
聯發科技股份有限公司
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 聯發科技股份有限公司 filed Critical 聯發科技股份有限公司
Publication of TW201738731A publication Critical patent/TW201738731A/zh
Application granted granted Critical
Publication of TWI643125B publication Critical patent/TWI643125B/zh

Links

Classifications

    • 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
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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
    • 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/084Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
    • 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/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • 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/0844Multiple simultaneous or quasi-simultaneous cache accessing
    • 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/0804Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/602Details relating to cache prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device

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

多處理器系統及快取共用方法
本發明係關於一種多處理器(multi-processor)系統,更具體地,係關於一種支援快取共用(cache sharing)之多處理器系統及有關之快取共用方法。
目前,由於計算效能需求之增長,多處理器系統已變得愈發流行。通常,多處理器系統中之每個處理器經常具有其專屬快取記憶體(cache),以改善記憶體存取之效率。快取同調互連(cache coherence interconnect)可以應用於多處理器系統,以管理在專屬於不同處理器之這些快取記憶體間之快取同調。舉例而言,典型之快取同調互連硬體可以向附接於(attached to)該硬體之快取記憶體請求一些操作(actions)。例如,快取同調互連硬體可以從這些快取記憶體中讀取某些快取列(cache line),並可對這些快取記憶體之某些快取列解除分配(de-allocate)。對於運行在一多處理器系統上之一低執行線平行化程度(Thread-Level Parallelism, TLP)之程序,有可能一些處理器及有關快取記憶體無法利用。另外,通常之快取同調互連硬體無法將由一個快取記憶體驅逐(evicted)出之乾凈/髒的(clean/dirty)快取列資料儲存至另一快取記憶體。因此,需要一種新的快取同調互連設計,能夠將由一個快取記憶體驅逐出之乾凈/髒的快取列資料儲存至另一快取記憶體,以改善多個快取記憶體之使用以及多處理器系統之性能。
有鑒於此,本發明提供至少一種多處理器系統及快取共用方法。
根據本發明一實施例之多處理器系統包括多個處理器子系統及一快取同調互連電路。該多個處理器子系統包含一第一處理器子系統與一第二處理器子系統。該第一處理器子系統包含至少一第一處理器及耦接於該至少一第一處理器之一第一快取記憶體,該第二處理器子系統包含至少一第二處理器及耦接於該至少一第二處理器之一第二快取記憶體。該快取同調互連電路耦接於該多個處理器子系統,用於從該第一快取記憶體中之一被驅逐快取列(evicted cache line)獲取一快取列資料,並將已獲取之該快取列資料傳送至該第二快取記憶體進行存儲。
根據本發明一實施例之快取共用方法,適用於一多處理器系統,該快取共用方法包含:向該多處理器系統提供多個處理器子系統,該多個處理器子系統包括一第一處理器子系統和一第二處理器子系統,其中該第一處理器子系統包含至少一第一處理器和耦接於該至少一第一處理器之一第一快取記憶體,以及該第二處理器子系統包含至少一第二處理器和耦接於該至少一第二處理器之一第二快取記憶體;從該第一快取記憶體中之一被驅逐快取列中獲取一快取列資料;以及將已獲取之該快取列資料傳送至該第二快取記憶體進行存儲。
本發明所提供之多處理器系統及快取共用方法,其優點之一在於能夠改善多個快取記憶體之使用效率,並提升多處理器系統之整體性能。
在說明書及申請專利範圍當中使用了某些詞彙來指稱特定之元件。所屬領域具有通常知識者應可理解,硬體製造商可能會用不同名詞來稱呼同一個元件。本說明書及申請專利範圍並不以名稱之差異來作為區分元件之方式,而是以元件在功能上之差異來作為區分之準則。在通篇說明書及申請專利範圍當中所提及之「包含」及「包括」為一開放式之用語,故應解釋成「包含但不限定於」。「大致」是指在可接受之誤差範圍內,所屬領域具有通常知識者能夠在一定誤差範圍內解決所述技術問題,基本達到所述技術效果。此外,「耦接」一詞在此包含任何直接及間接之電性連接手段。因此,若文中描述一第一裝置耦接於一第二裝置,則代表該第一裝置可直接電性連接於該第二裝置,或透過其它裝置或連接手段間接地電性連接至該第二裝置。「連接」一詞在此包含任何直接及間接、有線及無線之連接手段。以下所述為實施本發明之較佳方式,目的在於說明本發明之精神而非用以限定本發明之保護範圍,本發明之保護範圍當視後附之申請專利範圍所界定者為准。
第1圖為根據本發明一實施例之多處理器系統之示意圖。舉例而言,多處理器系統100可以實施為一可攜式裝置,例如一行動電話、一平板電腦、一可穿戴式裝置等。然而,本發明並非以此為限。換言之,任何使用本申請所提出之多處理器系統100之電子裝置均落入本發明之範圍。在本實施例中,多處理器系統100可以包含多個處理器子系統102_1-102_N、一快取同調互連電路104、一記憶體裝置(例如,主記憶體)106,並可以進一步包含其它可選(optional)電路,如一預存取(pre-fetching)電路107、一時脈閘控(clock gating)電路108及一電源管理電路109。對於快取同調互連電路104,其可以包含一探聽過濾器(Snoop Filter, SF)116、一快取分配電路117、一內部受害者快取(internal victim cache)118及一性能監測電路119。實施於快取同調互連電路104中之這些硬體電路中之一個或多個可以根據實際設計考量進行省略。此外,N的值為一正整數,並可根據實際設計考量進行調整。換言之,本發明對於實施於多處理器系統100中之處理器子系統之數量並無限制。
多個處理器子系統102_1-102_N耦接於快取同調互連電路104。多個處理器子系統102_1-102_N中之每個可以包含一群集(cluster)與一本地快取記憶體(local cache)。如第1圖所示,處理器子系統102_1包含一群集112_1及一本地快取記憶體114_1,處理器子系統102_2包含一群集112_2及一本地快取記憶體114_2,以及處理器子系統102_N包含一群集112_N及一本地快取記憶體114_N。群集112_1-112_N中之每個可以是一組處理器(或稱為處理器核心)。舉例而言,群集112_1可以包含一個或多個處理器121,群集112_2可以包含一個或多個處理器122,以及群集112_N可以包含一個或多個處理器123。當處理器子系統102_1-102_N中之一個為一多處理器子系統時,該多處理器子系統之該群集包含一單個(single)處理器/處理器核心,如一圖形處理單元(Graphics Processing Unit, GPU)或一數位信號處理器(Digital Signal Processor, DSP)。請注意,群集112_1-112_N之處理器數量可以根據實際設計需求而進行調整。舉例而言,包含於群集112_1中之處理器121之數量可以與包含於對應之群集112_2/112_N中之處理器122/123之數量相同或不同。
群集112_1-112_N可以分別具有其對應之專屬本地快取記憶體。在本實施例中,每個群集可以分配一專屬本地快取記憶體(例如,第2階快取記憶體)。如第1圖所示,多處理器系統100可以包含分別實施於處理器子系統102_1-102_N中之多個本地快取記憶體114_1-114_N。因此,群集112_1可以使用本地快取記憶體114_2來改善其性能,以及群集112_N可以使用本地快取記憶體114_N來改善其性能。
快取同調互連電路104可以用於管理本地快取記憶體114_1-114_N間之同調,其中本地快取記憶體114_1-114_N分別由群集112_1-112_N所單獨存取。如第1圖所示,記憶體裝置(例如,動態隨機存取記憶體(DRAM)裝置)106由群集112_1-112_N中之處理器121-123所共用,其中記憶體裝置106透過快取同調互連電路104耦接於本地快取記憶體114_1-114_N。分配給一特定群集之一特定本地快取記憶體中之一快取列可以基於一被請求之記憶體位址(address)而進行存取,其中該被請求之記憶體位址包含於該特定群集之一處理器所發送之一請求中。當發生該特定本地快取記憶體之一快取命中(cache hit)之情形時,被請求之資料可以直接從該特定本地快取記憶體中擷取(retrieved),無需存取其它本地快取記憶體或記憶體裝置106。換言之,當發生該特定本地快取記憶體之一快取命中時,意味著被請求之資料目前在該特定本地快取記憶體中可取得(available),因而無需存取記憶體裝置106或其它本地快取記憶體。
當發生該特定本地快取記憶體之一快取未命中(cache miss)之情形時,被請求之資料可以從其它本地快取記憶體或記憶體裝置106中擷取。舉例而言,若被請求之資料在另一本地快取記憶體中可取得,則被請求之資料可以從該另一本地快取記憶體中讀取,並透過該快取同調互連電路104儲存於該特定本地快取記憶體中,並進一步供應至發出該請求之該處理器。若本地快取記憶體114_1-114_N中之每個被要求作為一排他性(exclusive)快取架構而使用,則當被請求之資料從另一本地快取記憶體中被讀取並儲存於該特定本地快取記憶體中後,該另一本地快取記憶體之一快取列被解除分配/丟棄(dropped)。然而,當被請求之資料在其它本地快取記憶體中不存在(not available)時,被請求之資料從記憶體裝置106中讀取,並透過該快取同調互連電路104儲存於該特定本地快取記憶體,並進一步供應至發出該請求之該處理器。
如上所述,當發生該特定本地快取記憶體之一快取未命中時,被請求之資料可以從另一本地快取記憶體或記憶體裝置106中獲取。若該特定本地快取記憶體具有一空快取列,該空快取列需要用於快取從另一本地快取記憶體或記憶體裝置106處獲取之被請求之資料時,將被請求之資料直接寫入該空快取列。然而,若該特定本地快取記憶體沒有一空快取列可以用於儲存從另一本地快取記憶體或記憶體裝置106所獲取之被請求之資料時,使用一快取替換(replacement)策略選擇一特定快取列(一已使用之快取列),然後驅逐(evicted),並將從另一本地快取記憶體或記憶體裝置106處獲取之被請求之資料寫入該特定快取列。
在一傳統多處理器系統設計中,該被驅逐快取列之該快取列資料(乾凈資料(clean data)或髒的資料(dirty data))可以被丟棄或寫回記憶體裝置106,無法將該被驅逐快取列資料透過一快取同調互連電路直接寫入另一本地快取記憶體。在本實施例中,本發明所提供之快取同調互連電路104被設計支援一快取共用機制。因此,本發明所提供之快取同調互連電路104能夠從一第一處理器子系統(例如,處理器子系統102_1-102_N中之一個)之一第一本地快取記憶體中之一被驅逐快取列獲取一快取列資料,並件已獲取之快取列資料(即,被驅逐快取列之資料)傳送至一第二處理器子系統(例如,處理器子系統102_1-102_N中之另一個)之一第二本地快取記憶體進行存儲。簡言之,第一處理器子系統透過本發明所提供之快取同調互連電路104從該第二處理器子系統借用該第二本地快取記憶體。因此,當對該第一本地快取記憶體執行快取替換時,該第一本地快取記憶體中之該被驅逐快取列之該快取列資料被快取至該第二本地快取記憶體,而不會被丟棄或寫回記憶體裝置106。
如上所述,當在第一處理器子系統(例如,處理器子系統102_1-102_N中之一個)與第二處理器子系統(例如,處理器子系統102_1-102_N中之另一個)之間啟動(enable)快取共用機制時,從第一本地快取記憶體所獲取之該被驅逐快取列資料被傳送至該第二本地快取記憶體進行存儲。在一第一快取列資料傳送設計中,該快取同調互連電路104對該第二本地快取記憶體執行一寫入操作,以將該快取列資料儲存入該第二本地快取記憶體。換言之,該快取同調互連電路104主動將該第一本地快取記憶體之該被驅逐快取列資料推入該第二本地快取記憶體。
在一第二快取列資料傳送設計中,該快取同調互連電路104請求該第二本地快取記憶體來讀取來自該快取同調互連電路104之該快取列資料。舉例而言,該快取同調互連電路104維持一大小(size)較小之內部受害者快取(例如,內部受害者快取118)。當該第一本地快取記憶體中之一快取列被驅逐並被快取入該第二本地快取記憶體時,該被驅逐快取列之該快取列資料被該快取同調互連電路104所讀取,並臨時保留於該內部受害者快取118。接著,該快取同調互連電路104透過該第二本地快取記憶體之一介面(interface)發送針對該被驅逐快取列資料之一讀取請求。因此,當接收到該快取同調互連電路104所發出之該讀取請求後,該第二本地快取記憶體將透過該第二本地快取記憶體之該介面從該快取同調互連電路104之該內部受害者快取118中讀取該被驅逐快取列資料,並儲存該被驅逐快取列資料。換言之,該快取同調互連電路104指示該第二本地快取記憶體來將該第一本地快取記憶體之該被驅逐快取列資料從該快取同調互連電路104中取(pull)出。
請注意,該內部受害者快取118透過快取同調互連電路104可以被任意處理器所存取。因此,該內部受害者快取118可以用於向一處理器直接提供被請求之資料。考慮到一被驅逐快取列資料仍處於內部受害者快取118中且目前還不會進入該第二本地快取記憶體之一情形。若一處理器(例如,處理器子系統102_1-102_N之處理器121-123中之一個)請求該被驅逐快取列,則該處理器將從內部受害者快取118中直接取得該被請求之資料。
請注意,該內部受害者快取118可以是可選的。舉例而言,若該快取同調互連電路104使用上述第一快取列資料傳送設計,以主動將該第一本地快取記憶體之該被驅逐快取列資料推入該第二本地快取記憶體,則該內部受害者快取118可以從該快取同調互連電路104中被省略。
該快取同調互連電路104可以使用基於快取同調之窺探(snooping)。舉例而言,若在一本地快取記憶體中發生一快取未命中事件,則運行該窺探機制來窺探其它本地快取記憶體以檢測這些其它本地快取記憶體是否包含該被請求之快取列資料。然而,大多數應用具有較少之共用資料。這意味著大量窺探是不必要的。不必要之窺探干擾(intervenes with)被窺探之本地快取記憶體之運作,導致整個多處理器系統之性能降級。此外,不必要之窺探也會造成多餘之功耗。在本實施例中,一探聽過濾器116可以應用於該快取同調互連電路104中,以經由濾除不必要之窺探操作來減少該快取同調電路之運作(cache coherence traffic)。
此外,探聽過濾器116之使用也有利於本發明所提出之快取共用機制。如上所述,本發明所提出之快取同調互連電路104能夠從一第一本地快取記憶體之一被驅逐快取列獲取一快取列資料,並將已獲取之該快取列資料傳送至一第二本地快取記憶體進行存儲。在一較佳實施方式中,歸屬於一第一處理器子系統之該第一本地快取記憶體為一第T階快取記憶體,該第T階快取記憶體可以被包含於該第一處理器子系統之一群集中之一個或多個處理器所存取,以及歸屬於一第二處理器子系統之該第二本地快取記憶體被借用作為包含於該第一處理器子系統之該群集中之一個或多個處理器之一第S階快取記憶體,其中S和T均為正整數,且S≥T。舉例而言,S=T+1。因此,該第二本地快取記憶體是從該第二處理器子系統借用的,以用作該第一處理器子系統之該次階快取記憶體(next level cache)。若該第一處理器子系統之該第一本地快取記憶體為一第2階快取記憶體(T=2),則從該第二處理器子系統借用之該第二本地快取記憶體用作該第一處理器子系統之一第3階快取記憶體(S=3)。
當根據該第一快取列資料傳送設計或該第二快取列資料傳送設計將從該第一本地快取記憶體驅逐之該快取列資料被快取至該第二本地快取記憶體後,更新該探聽過濾器116。由於該探聽過濾器116用於記錄本地快取記憶體114_1-114_N之快取狀態,因此,該探聽過濾器116為該共用之本地快取記憶體(即,從其它處理器子系統借用之本地快取記憶體)提供快取命中資訊或快取未命中資訊。若該第一處理器子系統之一處理器(一快取記憶體借用者)發出一請求,以及該第一處理器子系統之該第一本地快取記憶體(例如,第2階快取記憶體)發生一快取未命中事件,則查找該探聽過濾器116以確定被請求之快取列資料是否在該次階快取記憶體(例如,從該第二處理器子系統中借用之該第二本地快取記憶體)中被命中。若該探聽過濾器116告知被請求之快取列在次階快取記憶體(例如,從該第二處理器子系統借用之該第二本地快取記憶體)被命中,則存取該次階快取記憶體(例如,從該第二處理器子系統借用之該第二本地快取記憶體),而不會存取記憶體裝置106中之資料。因此,該次階快取記憶體(例如,從該第二處理器子系統借用之該第二本地快取記憶體)之使用可減少發生在該第一本地快取記憶體上之一快取未命中所造成之潛在之丟失。若該探聽過濾器116決定被請求之快取列在該次階快取記憶體(例如,從該第二處理器子系統借用之該第二本地快取記憶體)中未被命中,則存取該記憶體裝置106,而不會存取次階快取記憶體。藉由該探聽過濾器116之幫助,在快取未命中上不會存在一般有次階快取記憶體之架構之不良影響(即,存取快取記憶體但未命中導致之效能影響)。
此外,在本發明一些實施例中,該快取同調互連電路104可以根據該探聽過濾器之資訊來決定是否將該被驅逐快取列資料儲存入多處理器系統100中可用之一共用快取記憶體。這確保了每個共用快取記憶體運作在一排他性快取架構下,以獲取較佳之性能。然而,此處僅用於說明目的,並非用以限制本發明。
第2圖為根據本發明一實施例之使用共用之本地快取記憶體之一多處理器系統之示意圖。第2圖所示之多處理器系統200可以基於第1圖所示之多處理器系統架構進行設計,其中該多處理器系統200之該快取同調互連電路204支援本發明所提出之快取共用機制。在第2圖所示之實施例中,該多處理器系統200包含三個群集,其中,該第一群集「群集0」包含四個中央處理器(CPU),該第二群集「群集1」包含四個CPU,以及第三群集「群集2」包含兩個CPU。在本實施例 中,多處理器系統200可以是基於一進階精簡指令集機器(Advanced RISC Machine, ARM)之系統。然而,此處僅用於說明目的,本發明並不以此為限。該多個群集中之每個包含一第2階快取記憶體,該第2階快取記憶體用作一本地快取記憶體。第2階快取記憶體214_1、214_2、214_3中之每個可以透過一同調介面(Coherence Interface, CohIF)和一快取記憶體寫入介面(Cache Write Interface, WIF)而與快取同調互連電路204進行通信。根據實際設計考量,一群集所使用之一本地快取記憶體可以根據一閒置(idle)快取共用策略及/或一活動(active)快取共用策略而被借用以用作另一(些)群集之一次階快取記憶體。
假設使用該閒置快取共用策略,則在包含於一處理器子系統中之每個處理器均處於閒置狀態之一條件下,該處理器子系統之一本地快取記憶體可以用作其它(一個或多個)處理器子系統之一共用快取記憶體(例如,一次階快取記憶體)。換言之,被借用之本地快取記憶體不會被其局部處理器所使用。在第2圖中,一閒置處理器標識為一陰影區塊。因此,關於該第一群集「群集0」,此處所包含之所有CPU均為閒置。因而,第一群集「群集0」之第2階快取記憶體214_1可以透過該快取同調互連電路204而被第三群集「群集2」中之活動CPU所共用。當第三群集「群集2」(一快取記憶體借用者)之第2階快取記憶體214_3中之一快取列因快取替換而被驅逐時,該被驅逐快取列之一快取列資料被該快取同調互連電路204透過CohIF而獲取,且已獲取之該快取列資料(即,被驅逐之快取列資料)可以透過WIF而被推入第一群集「群集0」(一快取記憶體借出者)之第2階快取記憶體214_1中。由於第一群集「群集0」中之第2階快取記憶體214_1可以用作第三群集「群集2」之一第2階快取記憶體,因此,該被驅逐快取列之該快取列資料被傳送至該第3階快取記憶體,而不是被丟棄或寫回一主記憶體(例如,第1圖所示之記憶體裝置106)。
另外,實施於多處理器系統200之快取同調互連電路204中之該探聽過濾器216被更新,以記錄用於指示該被驅逐快取列資料目前在從第一群集「群集0」中借用之第2階快取記憶體214_1中可取得之資訊。當第三群集「群集2」中之任意活動CPU發出對該被驅逐快取列之一請求,而該被驅逐快取列資料在第一群集「群集0」之第2階快取記憶體214_1中可取得時,第三群集「群集2」之第2階快取記憶體214_3發生一快取未命中事件,以及在探聽過濾器216中記錄之該快取狀態指示被請求之快取列及有關之快取列資料在該共用快取記憶體(即,從第一群集「群集0」中借用之第2階快取記憶體214_1)中可取得。因此,藉由探聽過濾器216之幫助,被請求之資料可以從該共用快取記憶體(即,從第一群集「群集0」處借用之第2階快取記憶體214_1)中讀取,並被傳送至第三群集「群集2」之第2階快取記憶體214_3。請注意,若被請求之資料在該共用快取記憶體(即,從第一群集「群集0」處借用之第2階快取記憶體214_1)中不存在,則先查找探聽過濾器216,之後不會執行對該共用快取記憶體(即,從第一群集「群集0」處借用之第2階快取記憶體214_1)之存取。
在本發明之一些實施例中,當從使用閒置快取共用策略所選擇之一共用本地快取記憶體(例如,一次階快取記憶體)中之一特定快取列讀取一快取列資料時,快取同調互連電路104/204可以請求該共用快取記憶體解除分配/丟棄該特定快取列,以使得該共用本地快取記憶體作為一排他性快取記憶體而使用,從而取得更佳性能。然而,此處僅用於說明目的,本發明並不以此為限。
根據活動快取共用策略,在包含於一處理器子系統中之至少一處理器仍處於活動狀態之一條件下,該處理器子系統之一本地快取記憶體可以用作其它(一個或多個)處理器子系統之一共用快取記憶體(例如,一次階快取記憶體)。換言之,被借用之快取記憶體仍可被其局部處理器所使用。在本發明之一些實施例中,當包含於一處理器子系統中之至少一處理器仍處於活動狀態(或當包含於該處理器子系統中之至少一處理器仍處於活動狀態,且包含於該處理器子系統中之大多數處理器處於閒置狀態)時,該處理器子系統之一本地快取記憶體用作其它(一個或多個)處理器子系統之一共用快取記憶體(例如,一次階快取記憶體)。然而,本發明並不以此為限。在第2圖中,一閒置處理器標識為一陰影區塊。因此,關於第二群集「群集1」,此處只有所包含之一個CPU仍處於活動狀態。第二群集「群集1」(一快取記憶體借出者)之第2階快取記憶體214_2可以被第三群集「群集2」(一快取記憶體借用者)中之活動CPU透過多處理器系統200之快取同調互連電路204所共用。當第三群集「群集2」之第2階快取記憶體214_3中之一快取列因快取替換而被驅逐時,該被驅逐快取列之一快取列資料由該快取同調互連電路204透過CohIF來獲取,且已獲取之該快取列資料(即,被驅逐快取列資料)透過WIF被推入第二群集「群集1」之第2階快取記憶體214_2。由於第二群集「群集1」之第2階快取記憶體214_2可以用作第三群集「群集2」之一第3階快取記憶體,因此,被驅逐快取列之該快取列資料被快取入該第3階快取記憶體,而不是被丟棄或被寫回一主記憶體(例如,第1圖所示之記憶體裝置106)。
另外,更新實施於快取同調互連電路204中之探聽過濾器216,以記錄用於指示以記錄指示該被驅逐快取列資料目前在第二群集「群集1」之第2階快取記憶體214_2中可取得之資訊。當第三群集「群集2」中之任意活動CPU發出對該被驅逐快取列之該快取列資料之一請求,而該被驅逐快取列之該快取列資料在第二群集「群集1」之第2階快取記憶體214_2中可取得時,第三群集(標識為「群集2」)之第2階快取記憶體214_3發生一快取未命中事件,且探聽過濾器216中所記錄之該快取狀態指示該被請求之資料在該共用快取記憶體(即,從第二群集「群集1」中借用之第2階快取記憶體214_2)中可取得。因此,藉由探聽過濾器216之幫助,被請求之資料可以從該共用快取記憶體(即,從第二群集「群集1」處借用之第2階快取記憶體214_2)中讀取,並被傳送至第三群集「群集2」之第2階快取記憶體214_3。請注意,若被請求之資料在該共用快取記憶體(即,從第二群集「群集1」處借用之第2階快取記憶體214_2)中不存在,則先查找探聽過濾器216,之後不會執行對該共用快取記憶體(即,從第二群集「群集1」處借用之第2階快取記憶體214_2)之存取。
在使用上述閒置快取共用策略之情形下,全部處理器處於閒置狀態下之群集數量在多處理器系統100/200之系統運作期間可能發生動態變化。類似地,在使用活動快取共用策略之情形下,包含一個或多個活動處理器之群集數量在多處理器系統100/200之系統運作期間也可能發生動態變化。因此,該共用快取記憶體之大小(例如,次階快取記憶體之大小)在多處理器系統100/200之系統運作期間可能發生動態變化。
第3圖為根據本發明一實施例之多處理器系統之系統運作期間之一共用快取記憶體大小(例如,一次階快取記憶體之大小)之動態變化之示意圖。第3圖所示之較佳多處理器系統300可以基於第1圖所示之多處理器系統進行設計,其中該快取同調互連電路MCSI支援本發明所提供之快取共用機制,並可包含一探聽過濾器以避免在發生快取未命中事件時對共用快取記憶體之存取成本。在第3圖所示之實施例中,多處理器系統300具有多個群集,包括具有四個CPU之一「LL」群集、具有四個CPU之一「L」群集、具有兩個CPU之一「BIG」群集以及具有一單個GPU之一群集。另外,這些群集中之每個具有一第2階快取記憶體以用作一本地快取記憶體。
假設使用了上述閒置快取共用策略且在多處理器系統上所運行之一作業系統(Operating System, OS)支援一CPU熱插拔(hot-plug)功能。第3圖之上部顯示在「LL」群集中之所有CPU與在「L」群集中之一些CPU可以使用CPU熱插拔功能進行關閉(disable)。由於在「LL」群集中之所有CPU因為被CPU熱插拔功能所關閉而均為閒置,因此,「LL」群集之該第2階快取記憶體可以被「BIG」群集及具有單個GPU之該群集所共用。當在稍後時間內「L」群集中之活動CPU被CPU熱插拔功能所關閉時,「LL」群集與「L」群集之多個第2階快取記憶體均可以被「BIG」群集及具有單個GPU之該群集所共用,如第3圖之下半部分所示。由於多個共用快取記憶體(例如,次階快取記憶體)對於「BIG」群集和包含單個GPU之該群集可用,因此,可以使用一快取分配策略以將多個共用快取記憶體中之一個分配給「BIG」群集,並將多個共用快取記憶體中之一個分配給包含該單個GPU之該群集。
如第1圖所示,快取同調互連電路104可以包含快取分配電路117,快取分配電路117用於處理共用快取記憶體之分配。因此,第3圖所示之快取同調互連電路MCSI可以被配置為包含本發明所提供之快取分配電路117,以將多個共用快取記憶體(例如,「LL」群集和「L」群集之多個第2階快取記憶體)中之一個分配給「BIG」群集,並將多個共用快取記憶體(例如,「LL」群集和「L」群集之多個第2階快取記憶體)中之一個分配給包含該單個GPU之該群集。
在一第一快取分配設計中,快取分配電路117可以配置為使用一循環方式(round-robin manner)將快取記憶體借出者(cache lenders)之多個本地快取記憶體(例如,「LL」群集和「L」群集之多個第2階快取記憶體)以一循環次序(circular order)分配給快取記憶體借用者(cache borrowers)(例如,「BIG」群集及包含該單個GPU之群集)。
在一第二快取分配設計中,快取分配電路117可以配置為使用一隨機方式(random manner) 將快取記憶體借出者(cache lenders)之多個本地快取記憶體(例如,「LL」群集和「L」群集之多個第2階快取記憶體)分配給快取記憶體借用者(cache borrowers)(例如,「BIG」群集及包含該單個GPU之群集)。
在一第三快取分配設計中,快取分配電路117可以配置為使用一基於計數器之方式(counter-based manner) 將快取記憶體借出者(cache lenders)之多個本地快取記憶體(例如,「LL」群集和「L」群集之多個第2階快取記憶體)分配給快取記憶體借用者(cache borrowers)(例如,「BIG」群集及包含該單個GPU之群集)。第4圖為根據本發明一實施例之一快取分配電路之示意圖。第1圖所示之快取分配電路117可以實施為使用第4圖所示之快取分配電路400。快取分配電路400包含多個計數器402_1-402_M及判定電路(decision circuit)404,其中M為一正整數。舉例而言,計數器402_1-402_M之數量可以等於處理器子系統102_1-102_N之數量(即,M=N),以便快取分配電路117可以具有對應於處理器子系統102_1-102_N中每個之一計數器。當一處理器子系統之一本地快取記憶體被其它(一個或多個)處理器子系統所共用時,快取分配電路117中之一有關計數器被啟動,以儲存用以指示該共用本地快取記憶體中可用之空快取列之數量之一計數值。舉例而言,當一快取列被分配給該共用本地快取記憶體時,該有關計數值減一;以及當一快取列被從該共用本地快取記憶體中驅逐時,該有關計數值加一。當處理器子系統102_1之本地快取記憶體被共用時,計數器402_1可以動態更新一計數值CNT1,並將更新後之計數值CNT1提供給判定電路404;以及當處理器子系統102_M之本地快取記憶體被共用時,計數器402_M動態更新一計數值CNTM,並將更新後之計數值CNTM提供給判定電路404。判定電路404將與各個共用本地快取記憶體有關之計數值進行比較,以產生用於共用快取分配之一控制信號SEL。舉例而言,當進行該分配時,判定電路404選擇具有最大計數值之一共用本地快取記憶體,並將已選擇之共用本地快取記憶體分配給一快取記憶體借用者。因此,一處理器子系統(一快取記憶體借用者)之一本地快取記憶體中之一被驅逐快取列之一快取列資料透過一快取同調互連電路(例如,如第1圖所示之快取同調互連電路104)被傳送至已選擇之共用本地快取記憶體(具有最大計數值之該共用本地快取記憶體)。
總之,使用循環方式、隨機方式及基於計數器之方式中之至少一個之任意快取分配設計均落入本發明之範圍。
關於第3圖所示之實施例,若與「LL」群集之第2階快取記憶體有關之一計數值大於與「L」群集之第2階快取記憶體有關之一計數值,則將「BIG」群集之第2階快取記憶體中之一被驅逐快取列之一快取列資料(或包含單個GPU之該群集之第2階快取記憶體中之一被驅逐快取列之一快取列資料)透過快取同調互連電路MCSI被傳送至「LL」群集之第2階快取記憶體;以及若與「L」群集之第2階快取記憶體有關之一計數值大於與「LL」群集之第2階快取記憶體有關之一計數值,則將「BIG」群集之第2階快取記憶體中之一被驅逐快取列之一快取列資料(或包含單個GPU之該群集之第2階快取記憶體中之一被驅逐快取列之一快取列資料)透過快取同調互連電路MCSI被傳送至「L」群集之第2階快取記憶體。
第1圖所示之多處理器系統100可以使用時脈閘控(clock gating)及/或動態電壓頻率調節(Dynamic Voltage Frequency Scaling, DVFS)來降低每個共用本地快取記憶體之功耗。如第1圖所示,處理器子系統102_1-102_N中之每個根據一時脈信號與一供應電壓來運作。舉例而言,處理器子系統102_1根據時脈信號CK1和供應電壓V1來運作;處理器子系統102_2根據時脈信號CK2和供應電壓V2來運作;以及處理器子系統102_N根據時脈信號CKN和供應電壓VN來運作。根據實際設計考量,時脈信號CK1-CKN可以具有相同或不同之頻率值。另外,根據實際設計考量,供應電壓V1-VN可以具有相同或不同之電壓值。
時脈閘控電路108接收時脈信號CK1-CKN,並選擇性閘控供應至一處理器子系統之一時脈信號,該處理器子系統包含被其它(一個或多個)處理器子系統所共用之本地快取記憶體。第5圖為根據本發明一實施例之多處理器系統所使用之一時脈閘控設計之示意圖。第5圖所示之多處理器系統500可以基於第1圖所示之多處理器系統架構進行設計,其中該快取同調互連電路MCSI-B支援本發明所提出之快取共用機制。簡潔起見,第5圖中僅顯示一個處理子系統CPUSYS。在本實施例中,根據本發明所提供之快取共用機制,處理器子系統CPUSYS之本地快取記憶體(例如,第2階快取記憶體)被另一處理器子系統(圖中未示)所借用,以作為一次階快取記憶體(例如,第3階快取記憶體)而運作。
快取同調互連電路MCSI-B可以透過CohIF和WIF與處理器子系統CPUSYS進行通信。CohIF和WIF中可以包含幾條通道(channels)。舉例而言,寫入通道用於執行快取資料寫入操作,以及窺探通道用於執行一窺探操作。如第5圖所示,寫入通道可以包含一寫入命令通道Wcmd(用於發送寫入請求)、一窺探回應通道SNPresp(用於應答該窺探請求,指示是否將進行資料傳送)、以及一窺探資料通道SNPdata(用於向快取同調互連電路發送資料)。在本實施例中,在快取同調互連電路MCSI-B與處理器子系統CPUSYS之間配置一異步橋接電路(asynchronous bridge circuit)ADB,用於啟動兩個異步時脈域(clock domains)間之資料傳送。
在本實施例中,時脈閘控電路CG是根據快取同調互連電路MSCI-B所產生之兩個控制信號CACTIVE_SNP_S0_MCSI和CACTIVE_W_S0_MCSI進行控制的。在快取同調互連電路MCSI-B向窺探命令通道SNPcmd發出一窺探請求之一時間點至快取同調互連電路MCSI-B接收到來自窺探回應通道SNPresp之一回應之一時間點期間,快取同調互連電路MCSI-B將控制信號CACTIVE_SNP_S0_MCSI設置為一高邏輯位準。在待寫入之資料從快取同調互連電路MCSI-B發送至寫入資料通道Wdata(或一寫入請求從快取同調互連電路MCSI-B發送至寫入命令通道Wcmp)之一時間點至快取同調互連電路MCSI-B接收到來自寫入回應通道Wresp之一寫入完成信號之一時間點期間,快取同調互連電路MCSI-B將控制信號CACTIVE_W_S0_MCSI設置為一高邏輯位準。控制信號CACTIVE_SNP_S0_MCSI和CACTIVE_W_S0_MCSI經由一或(OR)閘進行處理以產生一同步器(synchronizer)(CACTIVE SYNC)之一信號控制信號。同步器CACTIVE SYNC根據一閒置運行(free running)時脈信號Free_CPU_CK來運作。時脈閘控電路CG之一時脈輸入端口CLK接收該自由運行時脈信號Free_CPU_CK。因此,同步器CACTIVE SYNC輸出一控制信號CACTIVE_S0_CPU至時脈閘控電路CG之一賦能端口(enable port)EN,其中,控制信號CACTIVE_S0_CPU與自由運行時脈信號Free_CPU_CK同步。當控制信號CACTIVE_SNP_S0_MCSI與CACTIVE_W_S0_MCSI中之一個具有一邏輯高位準時,啟動一時脈輸出端口ENCK之一時脈輸出。換言之,當控制信號CACTIVE_SNP_S0_MCSI與CACTIVE_W_S0_MCSI中之一個具有一邏輯高位準時,該時脈閘控電路CG之該時脈閘控功能被關閉,從而允許一非閘控之自由運行時脈信號Free_CPU_CK作為時脈信號輸出並供應至處理器子系統CPUSYS。然而,當控制信號CACTIVE_SNP_S0_MCSI與CACTIVE_W_S0_MCSI均為邏輯低位準時,關閉/閘控該時脈輸出端口ENCK之一時脈輸出。換言之,當控制信號CACTIVE_SNP_S0_MCSI與CACTIVE_W_S0_MCSI均為邏輯低位準時,啟動時脈閘控電路CG之該時脈閘控功能,從而對供應至處理器子系統CPUSYS之自由運行時脈信號Free_CPU_CK進行閘控。因此,處理器子系統CPUSYS接收一閘控後之時脈信號Gated_CPU_CK(沒有時脈周期)。如第5圖所示,在啟動該時脈閘控功能後,多處理器系統500可以具有三個不同時脈域502,504和506。時脈域504使用自由運行時脈信號Free_CPU_CK。時脈域506使用閘控後之時脈信號Gated_CPU_CK。時脈域502使用另一閘控後之時脈信號。在本實施例中,異步橋接電路ADB可以使用閘控後之時脈信號以進一步降低功耗。
簡言之,當需要對由多處理器系統500之其它(一個或多個)處理器子系統所共用之處理器子系統CPUSYS之一本地快取記憶體執行一快取列之窺探操作與一被驅逐快取列之一寫入操作中之一個時,處理器子系統CPUSYS中之該共用本地快取記憶體因一非閘控時脈信號(例如,自由運行時脈信號Free_CPU_CK)而處於活動狀態;以及當不需要對由多處理器系統500之其它(一個或多個)處理器子系統所共用之處理子系統CPUSYS之本地快取記憶體執行一快取列之一窺探操作及一被驅逐快取列之一寫入操作時,處理器子系統CPUSYS中之該共用本地快取記憶體因一閘控後之時脈信號Gated_CPU_CK而處於非活動(inactive)狀態。
為減少共用之本地快取記憶體之功耗,可以使用DVFS機制。在本實施例中,電源管理電路109用於執行DVFS,以調整供應至包含一處理器子系統之一時脈信號之一頻率值及/或調整供應至該處理器子系統之一供應電壓之一電壓值,其中,該處理器子系統包含由其它(一個或多個)處理器子系統所共用之本地快取記憶體。
如第1圖所示,時脈閘控電路108和電源管理電路109均可實施於多處理器系統100之中以降低共用之本地快取記憶體(例如,次階快取記憶體)之功耗。然而,此處僅用於說明目的,本發明並不以此為限。在另一種情況下,時脈閘控電路108與電源管理電路109中之一個或全部均可從多處理器系統100中省略。
多處理器系統100可進一步使用預存取電路107,以更好使用共用之本地快取記憶體。預存取電路107用於將記憶體裝置106中之資料預先存取至共用之本地快取記憶體。舉例而言,預存取電路107可以使用軟體(例如,運行在多處理器系統100上之作業系統)來觸發。該軟體告知預存取電路107來預先存取什么記憶體位置上之資料至共用之本地快取記憶體。在另一實施例中,預存取電路107可以使用硬體(例如,預存取電路107內之一監測電路)來觸發。該硬體電路可以監測(一個或多個)活動狀態下之處理器之存取行為,以預測將使用什么記憶體位置上之資料,並告知預存取電路107來將預測之記憶體位置上之資料預先存取至共用本地快取記憶體。
當啟動快取共用機制時,快取同調互連電路104從一第一處理器子系統(多處理器系統100之一個處理器子系統)之一第一本地快取記憶體中之一被驅逐快取列獲取一快取列資料,並將已獲取之快取列資料(例如,被驅逐快取列資料)發送至一第二處理器子系統(同一多處理器系統100之另一個處理器子系統)之一第二本地快取記憶體。快取同調互連電路104可以在多處理器系統100之系統運作期間動態啟動或動態關閉兩個處理器子系統(例如,第一處理器子系統與第二處理器子系統)間之快取共用。
當使用一第一快取共用啟用(on)/關閉(off)策略之一情形下,嵌入於快取同調互連電路104中之性能監測電路119用於收集/提供歷史性能資料(historical performance data),以判斷使用快取共用之好處。舉例而言,性能檢測電路119可以監測第一處理器子系統(快取記憶體借用者)之該第一本地快取記憶體之快取未命中率以及第二處理器子系統(快取記憶體借出者)之該第二本地快取記憶體之快取命中率。若發現動態監測之該第一本地快取記憶體之快取未命中率高於一第一門檻值,則意味著該第一本地快取記憶體之快取未命中率太高,快取同調互連電路104啟動第一處理器子系統與第二處理器子系統間之快取共用(即,第一本地快取記憶體之被驅逐快取列資料向第二本地快取記憶體之資料傳送)。若發現動態監測之該第二本地快取記憶體之快取命中率低於一第二門檻值,則意味著該第二本地快取記憶體之快取命中率太低,快取同調互連電路104關閉第一處理器子系統與第二處理器子系統間之快取共用(即,第一本地快取記憶體之被驅逐快取列資料向第二本地快取記憶體之資料傳送)。
在使用一第二快取共用啟用/關閉策略之另一情形下,運行在多處理器系統100上之一作業系統或一應用可以決定(例如,基於離線設定表示)當前之工作量(workload)可以藉由快取共用而獲益,並指示快取同調互連電路104來啟動第一處理器子系統與第二處理器子系統間之快取共用(即,第一本地快取記憶體之被驅逐快取列資料向第二本地快取記憶體之資料傳送)。
在使用一第三快取共用啟用/關閉策略之又一情形下,快取同調互連電路104配置用於在不實際啟動該快取共用機制之情況下模擬(simulate)快取共用之優點(例如,潛在之命中率)。舉例而言,運行時間之模擬可以經由擴展探聽過濾器116之功能來實施。換言之,探聽過濾器116在假設共用快取記憶體已被啟動之條件下運行。
本發明所提供之多處理器系統及快取共用方法,其優點之一在於能夠改善多個快取記憶體之使用效率,並提升多處理器系統之整體性能。 以上所述僅為本發明之較佳實施例,凡依本發明申請專利範圍所做之均等變化與修飾,皆應屬本發明之涵蓋範圍。
100、200、300、500‧‧‧多處理器系統
102_1-102_N、CPUSYS‧‧‧處理器子系統
104、204、MCSI、MCSI-B ‧‧‧快取同調互連電路
106 ‧‧‧記憶體裝置
107‧‧‧預存取電路
108‧‧‧時脈閘控電路
109‧‧‧電源管理電路
112_1-112_N、L、LL、BIG‧‧‧群集
114_1-114_N‧‧‧本地快取記憶體
116、216‧‧‧探聽過濾器
117、400‧‧‧快取分配電路
118‧‧‧內部受害者快取
119‧‧‧性能監測電路
121、122、123‧‧‧處理器
214_1-214_3‧‧‧第2階快取記憶體
402_1-402_M‧‧‧計數器
404‧‧‧判定電路
502、504、506‧‧‧時脈域
ADB‧‧‧異步橋接電路
CACTIVE SYNC‧‧‧同步器
CACTIVE_SNP_S0_MCSI、CACTIVE_W_S0_MCSI‧‧‧控制信號
CG‧‧‧時脈閘控電路
CK1-CKN‧‧‧時脈信號
CNT1-CNTM‧‧‧計數值
CohIF‧‧‧同調介面
SEL‧‧‧控制信號
V1-VN‧‧‧供應電壓
WIF‧‧‧快取記憶體寫入介面
第1圖為根據本發明一實施例之多處理器系統之示意圖。 第2圖為根據本發明一實施例之使用共用之本地快取記憶體之一多處理器系統之示意圖。 第3圖為根據本發明一實施例之多處理器系統之系統運作期間之一共用快取記憶體大小(例如,一次階快取記憶體之大小)之動態變化之示意圖。 第4圖為根據本發明一實施例之一快取分配電路之示意圖。 第5圖為根據本發明一實施例之多處理器系統所使用之一時脈閘控設計之示意圖。
100‧‧‧多處理器系統
102_1-102_N‧‧‧處理器子系統
104‧‧‧快取同調互連電路
106‧‧‧記憶體裝置
107‧‧‧預存取電路
108‧‧‧時脈閘控電路
109‧‧‧電源管理電路
112_1-112_N‧‧‧群集
114_1-114_N‧‧‧本地快取記憶體
116‧‧‧探聽過濾器
117‧‧‧快取分配電路
118‧‧‧內部受害者快取
119‧‧‧性能監測電路
121、122、123‧‧‧處理器
CK1-CKN‧‧‧時脈信號
V1-VN‧‧‧供應電壓

Claims (20)

  1. 一種多處理器系統,支援快取共用,該多處理器系統包括:多個處理器子系統,包含:一第一處理器子系統,包含:至少一第一處理器;以及一第一快取記憶體,耦接於該至少一第一處理器;以及一第二處理器子系統,包含:至少一第二處理器;以及一第二快取記憶體,耦接於該至少一第二處理器;以及一快取同調互連電路,耦接於該多個處理器子系統,該快取同調互連電路用於從該第一快取記憶體中之一被驅逐快取列獲取一快取列資料,並將已獲取之該快取列資料傳送至該第二快取記憶體進行存儲。
  2. 根據申請專利範圍第1項之多處理器系統,其中,該快取同調互連電路對該第二快取記憶體執行一寫入操作,以主動將已獲取之該快取列資料推入該第二快取記憶體;或者該快取同調互連電路請求該第二快取記憶體從該快取同調互連電路中讀取已獲取之該快取列資料,並對已獲取之該該快取列資料進行儲存。
  3. 根據申請專利範圍第1項之多處理器系統,其中,當包含於該第二處理器子系統中之每個處理器均處於閒置狀態之一條件下時,該快取同調互連電路將已獲取之該快取列資料傳送至該第二快取記憶體;或者當包含於該第二處理器子系統中之至少一處理器仍處於活動狀態之一條件下時,該快取同調互連電路將已獲取之該快取列資料傳送至該第二快取記憶體。
  4. 根據申請專利範圍第1項之多處理器系統,其中,該第一快取記憶體為該至少一第一處理器之一第T階快取記憶體,從該第二處理器子系統中借用之該第二快取記憶體透過該快取同調互連電路用作該至少一第一處理器之一第S階快取記憶體,其中S和T均為正整數,且S≥T;以及其中,該多處理器系統進一步包括:一預存取電路,用於將一記憶體裝置中之資料預先存取至該第二快取記憶體,其中該第二快取記憶體用作該至少一第一處理器之該第S階快取記憶體。
  5. 根據申請專利範圍第1項之多處理器系統,其中,該快取同調互連電路包含:一探聽過濾器,用於為該第二快取記憶體之多個快取資料請求提供至少快取命中資訊和快取未命中信息,其中,當一快取列資料被發送至該第二快取記憶體時,該探聽過濾器進行更新以指示該快取列資料存放於該第二快取記憶體中;以及其中,該快取同調互連電路進一步用於根據該探聽過濾器之資訊來決定是否需要將該被驅逐快取列之該快取列資料傳送至該第二快取記憶體進行存儲。
  6. 根據申請專利範圍第1項之多處理器系統,其中,該第二處理器子系統根據一時脈信號和一供應電壓進行運作,以及該多處理器系統進一步包括以下至少一個: 一時脈閘控電路,用於接收該時脈信號,並進一步用於在至少該快取同調互連電路之控制下選擇性閘控該時脈信號;一電源管理電路,用於執行動態電壓頻率調節,以調整該時脈信號之一頻率值與該供應電壓之一電壓值中之至少一個。
  7. 根據申請專利範圍第1項之多處理器系統,其中,該多個處理器子系統進一步包含: 一第三處理器子系統,包含: 至少一第三處理器;以及 一第三快取記憶體,耦接於該至少一第三處理器; 該快取同調互連電路包含: 一快取分配電路,用於決定將該第二快取記憶體與該第三快取記憶體中之哪個分配給該第一處理器子系統中之該至少一第一處理器,其中,當該快取分配電路將該第二快取記憶體分配給該第一處理器子系統之該至少一第一處理器時,將從該第一快取記憶體中之該被驅逐快取列所獲取之該快取列資料傳送至該第二快取記憶體。
  8. 根據申請專利範圍第7項之多處理器系統,其中,該快取分配電路用於使用一循環方式與一隨機方式中之至少一種來決定將該第二快取記憶體與該第三快取記憶體中之哪個分配給該第一處理器子系統之該至少一第一處理器。
  9. 根據申請專利範圍第7項之多處理器系統,其中,該快取分配電路包含: 一第一計數器,用於儲存一第一計數值,該第一計數值用於指示該第二快取記憶體中可用之空快取列之一數量;一第二計數器,用於儲存一第二計數值,該第二計數值用於指示該第三快取記憶體中可用之空快取列之一數量;一判定電路,用於比較包括該第一計數值與該第二計數值之多個計數值,以產生一比較結果,並根據該比較結果決定將該第二快取記憶體與該第三快取記憶體中之哪個分配給該第一處理器子系統之該至少一第一處理器。
  10. 根據申請專利範圍第1項之多處理器系統,其中,該快取同調互連電路包含:一性能監測電路,用於收集該第一快取記憶體與該第二快取記憶體之歷史性能資料,其中,該快取同調互連電路進一步用於在多處理器系統之系統運作期間,根據該歷史性能資料來動態啟動和動態關閉將該第一快取記憶體之被驅逐快取列資料至該第二快取記憶體之資料傳送。
  11. 一種快取共用方法,適用於一多處理器系統,該快取共用方法包含: 向該多處理器系統提供多個處理器子系統,該多個處理器子系統包括一第一處理器子系統和一第二處理器子系統,其中該第一處理器子系統包含至少一第一處理器和耦接於該至少一第一處理器之一第一快取記憶體,以及該第二處理器子系統包含至少一第二處理器和耦接於該至少一第二處理器之一第二快取記憶體;從該第一快取記憶體中之一被驅逐快取列中獲取一快取列資料;以及將已獲取之該快取列資料傳送至該第二快取記憶體進行存儲。
  12. 根據申請專利範圍第11項之快取共用方法,其中,將已獲取之該快取列資料傳送至該第二快取記憶體進行存儲之步驟包含:對該第二快取記憶體執行一寫入操作,以主動將已獲取之該快取列資料推入該第二快取記憶體;或者請求該第二快取記憶體以讀取已獲取之該快取列資料,並對已獲取之該快取列資料進行存儲。
  13. 根據申請專利範圍第11項之快取共用方法,其中,當包含於該第二處理器子系統中之每個處理器均處於閒置狀態之一條件下時,將已獲取之該快取列資料傳送至該第二快取記憶體;或者當包含於該第二處理器子系統中之至少一處理器處於活動狀態之一條件下時,將已獲取之快取列資料傳送至該第二快取記憶體。
  14. 根據申請專利範圍第11項之快取共用方法,其中,該第一快取記憶體為該至少一第一處理器之一第T階快取記憶體,從該第二處理器子系統中借用之該第二快取記憶體用作該至少一第一處理器之一第S階快取記憶體,其中S和T均為正整數,且S≥T;以及 該快取共用方法進一步包括: 將一記憶體裝置中之資料預先存取至該第二快取記憶體,其中該第二快取記憶體用作該至少一第一處理器之該第S階快取記憶體。
  15. 根據申請專利範圍第11項之快取共用方法,其進一步包括: 當一快取列資料被發送至該第二快取記憶體時,更新一探聽過濾器以指示該快取列資料存放於該第二快取記憶體中;經由該探聽過濾器為該第二快取記憶體之多個快取資料請求提供至少快取命中資訊與快取未命中資訊;以及根據該探聽過濾器之資訊來決定是否需要將該被驅逐快取列之該快取列資料傳送至該第二快取記憶體進行存儲。
  16. 根據申請專利範圍第11項之快取共用方法,其中,該第二處理器子系統根據一時脈信號和一供應電壓來運作,以及該快取共用方法進一步包含以下步驟中之至少一個: 接收該時脈信號,並選擇性閘控該時脈信號;以及執行動態電壓頻率調節,以調整該時脈信號之一頻率值與該供應電壓之一電壓值中之至少一個。
  17. 根據申請專利範圍第11項之快取共用方法,其中,該多個處理器子系統進一步包含一第三處理器子系統,以及該第三處理器子系統包含至少一第三處理器和耦接於該至少一第三處理器之一第三快取記憶體,以及該快取共用方法進一步包括: 決定將該第二快取記憶體與該第三快取記憶體中之哪個分配給該第一處理器子系統之該至少一第一處理器,其中,當該決定將該第二快取記憶體分配給該第一處理器子系統之該至少一第一處理器時,將從該第一快取記憶體中之該被驅逐快取列所獲取之該快取列資料傳送至該第二快取記憶體。
  18. 根據申請專利範圍第17項之快取共用方法,其中,使用一循環方式與一隨機方式中之至少一種來決定將該第二快取記憶體與該第三快取記憶體中之哪個分配給該第一處理器子系統之該至少一第一處理器。
  19. 根據申請專利範圍第17項之快取共用方法,其中,決定將該第二快取記憶體與該第三快取記憶體中之哪個分配給該第一處理器子系統之該至少一第一處理器之步驟包含: 產生一第一計數值,用以指示該第二快取記憶體中可用之空快取列之一數量;產生一第二計數值,用以指示該第三快取記憶體中可用之空快取列之一數量;以及比較包括該第一計數值與該第二計數值之多個計數值,以產生一比較結果,並根據該比較結果決定將該第二快取記憶體與該第三快取記憶體中之哪個分配給該第一處理器子系統之該至少一第一處理器。
  20. 根據申請專利範圍第11項之快取共用方法,其進一步包括: 收集該第一快取記憶體與該第二快取記憶體之歷史性能資料;以及在該多處理器系統之系統運作期間,根據該歷史性能資料來動態啟動和動態關閉將該第一快取記憶體之被驅逐快取列資料至該第二快取記憶體之資料傳送。
TW106112851A 2016-04-18 2017-04-18 多處理器系統及快取共用方法 TWI643125B (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201662323871P 2016-04-18 2016-04-18
US62/323,871 2016-04-18
US15/487,402 US20170300427A1 (en) 2016-04-18 2017-04-13 Multi-processor system with cache sharing and associated cache sharing method
US15/487,402 2017-04-13

Publications (2)

Publication Number Publication Date
TW201738731A true TW201738731A (zh) 2017-11-01
TWI643125B TWI643125B (zh) 2018-12-01

Family

ID=60040036

Family Applications (1)

Application Number Title Priority Date Filing Date
TW106112851A TWI643125B (zh) 2016-04-18 2017-04-18 多處理器系統及快取共用方法

Country Status (3)

Country Link
US (1) US20170300427A1 (zh)
CN (1) CN107423234A (zh)
TW (1) TWI643125B (zh)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703706B2 (en) 2011-02-28 2017-07-11 Oracle International Corporation Universal cache management system
CN108139966B (zh) * 2016-05-03 2020-12-22 华为技术有限公司 管理转址旁路缓存的方法和多核处理器
US10248457B2 (en) 2016-08-10 2019-04-02 International Business Machines Corporation Providing exclusive use of cache associated with a processing entity of a processor complex to a selected task
US10275280B2 (en) 2016-08-10 2019-04-30 International Business Machines Corporation Reserving a core of a processor complex for a critical task
US10223164B2 (en) 2016-10-24 2019-03-05 International Business Machines Corporation Execution of critical tasks based on the number of available processing entities
US10248464B2 (en) 2016-10-24 2019-04-02 International Business Machines Corporation Providing additional memory and cache for the execution of critical tasks by folding processing units of a processor complex
US10599442B2 (en) * 2017-03-02 2020-03-24 Qualcomm Incorporated Selectable boot CPU
US11327887B2 (en) 2017-09-14 2022-05-10 Oracle International Corporation Server-side extension of client-side caches
US10705590B2 (en) * 2017-11-28 2020-07-07 Google Llc Power-conserving cache memory usage
US10877886B2 (en) * 2018-03-29 2020-12-29 Intel Corporation Storing cache lines in dedicated cache of an idle core
CN108614782B (zh) * 2018-04-28 2020-05-01 深圳市华阳国际工程造价咨询有限公司 一种用于数据处理系统的高速缓存访问方法
US10831666B2 (en) * 2018-10-05 2020-11-10 Oracle International Corporation Secondary storage server caching
CN111221775B (zh) * 2018-11-23 2023-06-20 阿里巴巴集团控股有限公司 处理器、缓存处理方法及电子设备
US11360891B2 (en) * 2019-03-15 2022-06-14 Advanced Micro Devices, Inc. Adaptive cache reconfiguration via clustering
US10970217B1 (en) * 2019-05-24 2021-04-06 Xilinx, Inc. Domain aware data migration in coherent heterogenous systems
US11163688B2 (en) * 2019-09-24 2021-11-02 Advanced Micro Devices, Inc. System probe aware last level cache insertion bypassing
US11223575B2 (en) * 2019-12-23 2022-01-11 Advanced Micro Devices, Inc. Re-purposing byte enables as clock enables for power savings
CN112463652B (zh) * 2020-11-20 2022-09-27 海光信息技术股份有限公司 基于缓存一致性的数据处理方法、装置、处理芯片及服务器
US12117934B2 (en) * 2021-03-30 2024-10-15 Ati Technologies Ulc Method and system for sharing memory between processors by updating shared memory space including funtionality to place processors into idle state
US20240086327A1 (en) * 2022-09-12 2024-03-14 Google Llc Pseudo Lock-Step Execution Across CPU Cores

Family Cites Families (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6397302B1 (en) * 1998-06-18 2002-05-28 Compaq Information Technologies Group, L.P. Method and apparatus for developing multiprocessor cache control protocols by presenting a clean victim signal to an external system
US8209490B2 (en) * 2003-12-30 2012-06-26 Intel Corporation Protocol for maintaining cache coherency in a CMP
US7305522B2 (en) * 2005-02-12 2007-12-04 International Business Machines Corporation Victim cache using direct intervention
KR101369441B1 (ko) * 2005-08-23 2014-03-04 어드밴스드 마이크로 디바이시즈, 인코포레이티드 컴퓨터 시스템 내부의 프로액티브 동기 방법
US7757045B2 (en) * 2006-03-13 2010-07-13 Intel Corporation Synchronizing recency information in an inclusive cache hierarchy
US7447846B2 (en) * 2006-04-12 2008-11-04 Mediatek Inc. Non-volatile memory sharing apparatus for multiple processors and method thereof
CN2932758Y (zh) * 2006-07-04 2007-08-08 富士康(昆山)电脑接插件有限公司 电连接器组件
US7774549B2 (en) * 2006-10-11 2010-08-10 Mips Technologies, Inc. Horizontally-shared cache victims in multiple core processors
CN101266578A (zh) * 2008-02-22 2008-09-17 浙江大学 基于增量式闭合序列挖掘的高速缓存数据预取方法
US8347037B2 (en) * 2008-10-22 2013-01-01 International Business Machines Corporation Victim cache replacement
JP4828637B2 (ja) * 2009-07-13 2011-11-30 株式会社Pfu 配信システム、サーバ装置、および、配信方法
US8392659B2 (en) * 2009-11-05 2013-03-05 International Business Machines Corporation Extending cache capacity on multiple-core processor systems
US8856456B2 (en) * 2011-06-09 2014-10-07 Apple Inc. Systems, methods, and devices for cache block coherence
US9310577B2 (en) * 2012-07-11 2016-04-12 Adc Telecommunications, Inc. Telecommunications cabinet modularization
US9541985B2 (en) * 2013-12-12 2017-01-10 International Business Machines Corporation Energy efficient optimization in multicore processors under quality of service (QoS)/performance constraints
US9692251B2 (en) * 2014-07-03 2017-06-27 Intel Corporation Apparatus, system and method of wireless power transfer
US9612603B2 (en) * 2014-07-17 2017-04-04 Dell Products, L.P. Calibration of voltage regulator
US9507716B2 (en) * 2014-08-26 2016-11-29 Arm Limited Coherency checking of invalidate transactions caused by snoop filter eviction in an integrated circuit
CN104360981B (zh) * 2014-11-12 2017-09-29 浪潮(北京)电子信息产业有限公司 面向多核多处理器平台的Cache一致性协议的设计方法

Also Published As

Publication number Publication date
US20170300427A1 (en) 2017-10-19
CN107423234A (zh) 2017-12-01
TWI643125B (zh) 2018-12-01

Similar Documents

Publication Publication Date Title
TWI643125B (zh) 多處理器系統及快取共用方法
US9251081B2 (en) Management of caches
TWI360046B (en) Apparatus and method for preserving cached informa
JP4966205B2 (ja) 共有メモリコンピュータシステムにおける、所有されている複数のキャッシュブロックのライトバックの早期予測
US9075730B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
JP5348429B2 (ja) 持続性メモリのためのキャッシュコヒーレンスプロトコル
US9251069B2 (en) Mechanisms to bound the presence of cache blocks with specific properties in caches
US20120102273A1 (en) Memory agent to access memory blade as part of the cache coherency domain
CN102646446B (zh) 硬件动态高速缓存电源管理
JP6859361B2 (ja) 中央処理ユニット(cpu)ベースシステムにおいて複数のラストレベルキャッシュ(llc)ラインを使用してメモリ帯域幅圧縮を行うこと
US8706966B1 (en) System and method for adaptively configuring an L2 cache memory mesh
US10282295B1 (en) Reducing cache footprint in cache coherence directory
US10705977B2 (en) Method of dirty cache line eviction
JP6040840B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
KR20170129701A (ko) 캐시 삽입을 위한 기준으로서 데이터의 압축률을 사용하는 것에 의한 스토리지 캐시 성능 향상
US20220188208A1 (en) Methods for configuring span of control under varying temperature
TWI754727B (zh) 共享替換策略電腦快取系統,以及用於在讀取操作期間及在寫入操作期間管理電腦快取中的共享替換的方法
US10049045B2 (en) Management of chip multiprocessor cooperative caching based on eviction rate
JP5976225B2 (ja) スティッキー抜去エンジンを伴うシステムキャッシュ
JP2023543231A (ja) スケーラブル領域ベースのディレクトリ
JP6036457B2 (ja) 演算処理装置、情報処理装置及び情報処理装置の制御方法
Ahmed et al. Directory-based cache coherence protocol for power-aware chip-multiprocessors
US20150113221A1 (en) Hybrid input/output write operations
JP6209573B2 (ja) 情報処理装置および情報処理方法
US11954033B1 (en) Page rinsing scheme to keep a directory page in an exclusive state in a single complex

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees