TWI652578B - 複數個執行緒的記憶體存取方法及系統 - Google Patents
複數個執行緒的記憶體存取方法及系統 Download PDFInfo
- Publication number
- TWI652578B TWI652578B TW106142360A TW106142360A TWI652578B TW I652578 B TWI652578 B TW I652578B TW 106142360 A TW106142360 A TW 106142360A TW 106142360 A TW106142360 A TW 106142360A TW I652578 B TWI652578 B TW I652578B
- Authority
- TW
- Taiwan
- Prior art keywords
- memory
- threads
- region
- access
- address
- Prior art date
Links
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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0284—Multiple user address space allocation, e.g. using different base addresses
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- 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/06—Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
- G06F12/0638—Combination of memories, e.g. ROM and RAM such as to permit replacement or supplementing of words in one module by words in another module
-
- 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/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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
-
- 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/20—Employing a main memory using a specific memory technology
- G06F2212/205—Hybrid memory, e.g. using both volatile and non-volatile memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Static Random-Access Memory (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Dram (AREA)
Abstract
提供了一種管理多個執行緒的片上記憶體存取的系統。該系統包括:複數個平行的處理器單元,用以執行該等執行緒;一片上記憶體,包括複數個記憶體單元且每一該等記憶體單元包括一第一區域與一第二區域,其中該第一區域與該第二區域具有不同的記憶體定址方案,用於該等執行緒的平行存取;以及一位址解碼器,耦接於該等平行處理單元和該片上記憶體,該位址解碼器根據來自於該等平行處理單元的複數個解碼的位址信號,啟動該等執行緒對該第一區域和該第二區域之一的複數個記憶體定位的存取。
Description
本申請要求遞交於2016年12月20日的號碼為62/436,487的美國臨時申請案的優先權,其整體通過引用的方式納入本文當中。
本發明實施例涉及片上記憶體在平行計算系統中的定址和存取。
記憶體子系統的設計對記憶體存取速度有著明顯的影響。頻繁被存取的資料可以存儲在晶片上,例如在高速緩衝記憶體(cache)、緩衝區(buffer)或者其他低延時(low-latency)的記憶裝置。較不頻繁使用的資料或者預測為較不頻繁使用的資料可以存儲在片外記憶體當中,如動態隨機存取記憶體(dynamic random access memory,簡寫為DRAM),硬碟驅動器(hard drive)或者其他高容量的存放裝置,這些高容量的存放裝置一般具有相比於片上記憶體更高延時與更低的速度。
在平行計算系統中(parallel computing system),處理 器可以包括複數個執行緒(multiple threads),且該等執行緒可以同時存取個片上記憶體(on-chip memory)。當片上記憶體支援向量化(vectorized)資料存取的時候會增加記憶體的頻寬(bandwidth),例如:當該等執行緒連續地存取存儲於片上記憶體的資料陣列中資料元素的時候。然而,不同的平行運算需要不同的記憶體存取模式。例如,在一直方圖計算中,每一執行緒可能被給予更新記憶空間值(bin value)的任務,該記憶空間值表示具有給定像素值範圍的像素的數量。該執行緒可以平行地處理像素值,但是存儲於對應的複數個記憶空間中的記憶體定位可能並不遵循一統一模式。因此,在直方圖計算期間,在該等執行緒的記憶體存取中經常有衝突出現。
因此,需要在平行計算系統中提高記憶體存取的效率。
有鑑於此,本發明提供了一種管理片上記憶體複數個執行緒存取的方法,用於提供平行計算系統中的記憶體的存取效率。
在一實施例中,提供一管理片上記憶體由複數個執行緒存取的系統。系統包括:複數個平行的處理器單元,用以執行該等執行緒;一片上記憶體,包括複數個記憶體單元且每一該等記憶體單元包括一第一區域與一第二區域,其中該第一區域與該第二區域具有不同的記憶體定址方案,用於該等執行緒的平行存取;以及一位址解碼器,耦接於該等平行處理單元與該片上記憶體,該位址解碼器根據來自於該等平行處理單元的複數個解碼的位址信號,啟動該等執行緒對該第一區域與該第二區域之一的複數個記憶體定位的存取。
在另一實施例中,提供了一可管理記憶體分配的系統。系統包括:複數個平行處理器單元;一片上記憶體,包括複數個記憶體單元且每一該等記憶體單元包括一第一區域與一第二區域,其中該第一區域與該第二區域具有不同的記憶體定址方案,用於由複數個執行緒的平行存取;以及耦接於該等平行處理單元與該片上處理器,該位址解碼器用於:接收來自於該等執行緒的平行存取片上記憶體的複數個請求,每一該等請求指定用於記憶體存取的一被請求的位址;根據該第一區域與該第二區域之間的一分界線,確定該被請求的位址是否在該片上記憶體的該第一區域與該第二區域之中;啟動該等執行緒對該第一區域與該第二區域之一的複數個記憶體定位的存取。
在又一實施例中,提供了一種用於解碼器解碼的方法,其中該解碼器耦接至平行處理器單元以執行進程的複數個執行緒。方法包括:接收來自於該等執行緒的去平行存取包括複數個記憶體單元的片上記憶體的複數個請求,每一該等請求指定用於記憶體存取的一被請求的位址;根據在第一區域與第二區域之間的分界線,確定該被請求的位址是否在該片上記憶體的該第一區域或者該片上記憶體的該第二區域之中,其中該第一區域與該第二區域具有不同的記憶體定址方案,用於由該等執行緒的平行存取;以及啟動該等執行緒對該第一區域與該第二區域之一的複數個記憶體定位的存取。
本發明的實施例能夠實現高效的由複數個平行執行緒存取片上記憶體,本發明實施例的優點將在下面的描述中進行詳細說明。
100‧‧‧系統
110‧‧‧平行處理單元
130‧‧‧位址解碼器
120‧‧‧片上記憶體
125‧‧‧複數個記憶體單元
140‧‧‧系統記憶體
150‧‧‧互連
210‧‧‧第一區域
220‧‧‧第二區域
250‧‧‧分界線
510~540‧‧‧步驟
610~630‧‧‧步驟
本發明以示例的方式示出,而不是作為限制性。在圖式中,具有相同的圖式標記表示相似的元件。應當注意的是,本發明實施例中公開中的不同的參考“一”或者“一個”對於相同的實施例並不是必要的,這些參考表示至少一個。另外,當一特殊的特徵、結構或者特性被描述為與一個實施例相關,需要主張的是,無論是否在說明書中明確描述,對於本領域普通技術人員而言,將這一特徵、結構或者特性與其他實施例建立聯繫以實現其他實施例是顯而易見的。
第1圖示出了根據一實施例的平行計算系統的示例。
第2圖示出了根據一實施例的用於片上記憶體的混合定址方案。
第3圖示出了根據一實施例的第一記憶體定址方案。
第4圖示出了根據一實施例的第二記憶體定址方案。
第5圖示出了根據一實施例的位址解碼進程的流程圖。
第6圖示出了根據一實施例的由位址解碼器執行的用於管理由複數個執行緒平行記憶體存取的方法的流程圖。
在下述描述中,提出了許多具體的細節。然而,能夠理解的是,本發明的實施例沒有這些具體的細節也能夠實施。在另一方面,為了不混淆對這些描述的理解,眾所周知的電路,沒有詳細的示出其結構與技術。然而,本領域普通技術人員應當理解,可以在沒有這些具體細節的情況下實施本發明。而對於本技術領域的這些普通技術人員,根據所包括的描述,可以不需要過度的實驗就能夠實現適當的功能。
本發明實施例提供了一種用於在平行計算系統中高效的片上記憶體存取的系統與方法。術語“片上記憶體”在此用於指的是與使用記憶體單元的處理器相同的晶片上提供的複數個記憶體單元,例如在系統晶片(system-on-a-chip,簡寫為SOC)的計算系統中。在一實施例中,片上記憶體位址空間可用被分成兩個區域:一直接存取記憶體定址區域(direct access memory addressing region,簡寫為DAR)與一間接存取記憶體定址區域(indirect access memory addressing region,簡寫為IDAR)。在DAR與IDAR之間是一分界線,其定義兩個區域的尺寸。分界線可以是由軟體可配置的或者可以是基本固定的。每一區域最適合由複數個執行緒平行(相等地,同時地)記憶體存取的一特定的模式。當記憶體存取模式匹配分配區域的定址方案的時候,複數個執行緒可以在一記憶體存取週期中平行存取片上記憶體。在一實施例中,一記憶體存取週期可以與一時鐘週期一樣。
第1圖示出了根據一實施例的系統100。系統100可以是一SOC系統。系統100包括複數個平行處理單元110與片上記憶體120。每一平行處理單元110可以是一包括用於執行算數與/或邏輯運算的電路的處理器,例如中央處理單元(central processing unit,簡稱為CPU),向量處理器(vector processor)中的處理元件以及算數與邏輯單元(arithmetic and logical unit,簡稱為ALU)等等。片上記憶體120可以包括複數個記憶體單元125,例如靜態隨機存取記憶體(static random access memory,簡稱為SRAM)或者與片外存儲相比的高流通量、低延時的其他記憶體,例如動態隨機存取記憶體 (dynamic random access memory,簡稱為DRAM)。位址解碼器130耦接到片上記憶體120,將來自於複數個平行處理單元110的複數個位址信號解碼到片上記憶體120上的複數個目的位址。系統100可以通過互連(interconnect)150、匯流排或者其他連接類型耦接到片外記憶體,也就是系統記憶體140例如揮發性記憶體與/或非揮發性記憶體。系統100可以是計算裝置、通信裝置或者計算與通信裝置組合的一部分。系統100可以包括未在第1圖中示出的額外的器件,例如額外的處理器;網路介面,例如天線,接收器與信號傳送器;用戶介面,例如顯示幕,觸控屏,一或複數個按鈕,觸控板等等。
第2圖示出了根據一實施例的片上記憶體120更進一步的細節。在一實施例中,在片上記憶體120上的每一記憶體單元125是SRAM模組。在備選的實施例中,也可以使用適合於片上實現的其他類型的記憶體單元125。為了簡單說明,第2圖示出了4個記憶體單元125(例如:MU0,MU1,MU2與MU3),每一記憶體單元125包含第一區域210(顯示為有點的區域)與第二區域220(顯示為白色的區域)。應當理解的是,片上記憶體120可以包含任意數量的記憶體單元125。在一實施例中,第一區域210是DAR,以及第二區域是IDAR。第一區域210與第二區域220具有用於由複數個執行緒平行存取的不同的記憶體定址方案。在第一區域210與第二區域220之間的分界線250可以是由軟體可配置的或者可以是基本固定的。在一實施例中,分界線可以是均勻地設置穿過所有記憶體單元125,以致所有第一區域210具有相同的尺寸以及所有第二區域220具有相同的尺寸。在 一些實施例中,每一記憶體單元125可以包括除第一區域210與第二區域220之外的一或複數個記憶體區域。
還參考第1圖,當複數個平行處理單元110執行一具有複數個平行執行緒的進程的時候,基於進程的記憶體存取模式,記憶體定位可以在第一區域210與第二區域220之一(也就是第一區域210或者第二區域220中的任何一)中被分配給執行緒。在一實施例中,作業系統(operating system,簡稱為OS)在執行時間,或者編譯器在編譯時間可以決定其中一該區域來分配記憶體給該等執行緒以實現高效的記憶體存取。在一實施例中,程式員可以指定其中一區域用於將記憶體分配給複數個執行緒。
在進程執行的期間,複數個執行緒可以發送用於平行存取片上記憶體120的記憶體的複數個存取請求。記憶體的複數個存取請求包括複數個位址信號,其通過位址解碼器130解碼。根據被解碼的複數個位址信號,位址解碼器130在第一區域210或第二區域220任意一中啟動或者導致啟動對複數個記憶體定位的存取。此處描述的複數個記憶體定位具有相同的尺寸。每一記憶體定位可以有16位、32位或者64位字的尺寸,也可以使用其他資料尺寸。
第3圖示出了根據一實施例的複數個執行緒存取在片上記憶體120中的記憶體單元125的第一區域210。雖然第3圖示出了4個記憶體單元125(MU0,MU1,MU2與MU3),應當理解的是,片上記憶體120可以包含任意數量的記憶體單元。此外,雖然第3圖示出了在每一記憶體單元125中僅有第一區域210,應當理解的是,每 一記憶體單元125可以進一步包括未在本圖中示出的第二區域220(如第2圖所示)。在這個示例中,四個平行執行緒T0,T1,T2與T3已經在第一區域210中被分配記憶體定位並且正在存取第一區域210。當給定相同的基底位址(例如A2)的時候,在一記憶體存取週期中,四個執行緒可以同時存取在相同的記憶體單元(例如MU1)中的連續的定位(分別地用偏移量0,1,2與3),如第3圖中通過四個箭頭線所示。第一區域210是DAR,也就是直接存取記憶體定址區域,其中該等執行緒分配的複數個記憶體定位是均勻分佈在每一記憶體單元125中以及跨越不同的記憶體單元125中。每一執行緒在一固定的偏移位址處被分配複數個記憶體定位,例如:T0所分配的複數個記憶體定位處於每一基底位址(A0,A1,A2等等)的偏移位址0處,T1所分配的複數個記憶體定位處於每一每一基底位址(A0,A1,A2等等)的偏移位址1處以及等等。此外,被分配到每一執行緒的複數個記憶體定位由固定數量的複數個記憶體定位隔開,在這個示例中,固定數量是4,其是執行緒的數量。
引起均勻記憶體存取的複數個執行緒可以被分配片上記憶體120上的第一區域210以實現高效的記憶體存取。例如,在一些影像處理應用程式中,連續像素的數值沿著一指定方向存儲於連續的記憶體定位中。一進程可以包括複數個執行緒並且每一執行緒可以有相同的記憶體存取模式,例如讀取複數個鄰近像素的數值以及將一平均像素的數值寫入陣列元素中。在一實施例中,這種記憶體的讀取與寫入可以當作向量化的讀取與寫入來執行,並且第一區域210最適合向量化的讀 取與寫入以及其他類型的均勻記憶體存取。
第4圖是示出了根據一實施例的多執行緒存取片上記憶體120的第二區域220。值得注意的是,根據這個記憶體定址方案,不同的執行緒被分配不同的記憶體單元125。換句話說,每一執行緒被分配各自的一或複數個記憶體單元125的第二區域220。雖然第4圖示出了4個記憶體單元(MU0,MU1,MU2與MU3),可以理解的是,片上記憶體120可以包含任意數量的記憶體單元。此外,雖然第4圖僅示出了在四個記憶體單元125的每一中有第二區域220,可以理解的是,每一記憶體單元125進一步包括未在本圖中示出的第一區域210(第2圖)。
在這個示例中,四個平行執行緒T0,T1,T2與T3已經在第二區域220中被分配了複數個記憶體定位並且正在存取第二區域220。當給定的對應於第二區域220各自的分界線的不同的基底位址(例如B0,B1,B2與B3)與相同的偏移位址(例如D0)的時候,在一記憶體存取週期中,四個執行緒同時存取在不同的記憶體單元中(分別地在MU0,MU1,MU2與MU3)對應的複數個記憶體定位,如第4圖的四條實線箭頭所示。
在一實施例中,每一執行緒可以具有它自己的用於記憶體單元125的讀取與寫入指針,其中該執行緒被分配給了記憶體單元125。例如,T0被分配了MU0,以及通過使用它的讀取與寫入指標,T0可以獨立於其他執行緒存取在MU0中的第二區域220內的任何定位。相同的記憶體存取方法應用於其他執行緒。
因此,四個執行緒被給予不同的偏移位址(例如分別地給予D2,D3,D7與D6)並且可以在一記憶體存取週期中獨立於其他執行緒同時存取他們各自分配的記憶體空間,如第4圖通過四個虛線箭頭所示。如之前所提到的,第二區域220是IDAR,也就是間接存取記憶體定址區域,其中每一執行緒被分配在記憶體單元125中的連續的記憶體定位的一段。在一實施例中,每一執行緒被分配在記憶體單元125中的整個第二區域220。
在一進程計算一圖像的直方圖的示例中,每一執行緒被給予更新一記憶空間(bin)的任務,該記憶空間表示具有給定像素值範圍的像素的數量。每一執行緒可以從圖像的一部分讀取一像素值然後增加對應於該像素值的記憶空間值。在任何給定的時間,不同的執行緒可以更新相同的記憶空間,或者可以更新不同的記憶空間。根據第一區域210的定址方案在相同的記憶體單元125中將連續的複數個記憶空間映射至連續的記憶體定位很有可能在複數個執行緒中引起頻繁的記憶體存取衝突。配置不同存儲單元125的第二區域220至不同的執行緒允許執行緒在沒有衝突的情況下同時的存取記憶體單元125。因此,可以提升記憶體存取效率。
然而,需要注意的是,在第一區域210與第二區域220中的基底位址與偏移位址可以是不同的(例如,具有不同的位寬度)。在下文的描述中,在第一區域210中的基底位址與偏移位址分別地被稱為第一基底位址與第一偏移位址。在第二區域220中的基底位址與偏移位址分別地被稱為第二基底位址與第二偏移位址。
第5圖示出了根據一實施例的由位址解碼器130(如第1圖所示)執行位元址解碼的流程圖,用於管理片上記憶體由複數個執行緒存取的系統(例如系統100)。當位址解碼器130在步驟510中接收到用於記憶體存取的被請求的位址。其在步驟520中,將被請求的位址與標記第一區域210的尾部與第二區域220的起點的分界線位址進行比較。在一實施例中,分界線位址可以是複數個每單元分界線位址,每一分界線位址在一存儲單元125中標記第一區域210的尾部與第二區域220的起點。位址解碼器130可以首先確定被請求的位址指向哪一記憶體單元125,然後決定被請求的位址在哪一區域中。
如果被請求的位址小於分界線位址,在步驟530中,根據第一區域210的定址方案,位址解碼器130解碼被請求的位址。第一區域210偏移位址(又稱為第一偏移位址)中的位數可以相當於執行緒的數量。對於第3圖所描述的四個執行緒的示例,兩個位可以被用於第一偏移位址。被請求的位址中的剩下的位是第一基底位址,其標識如第3圖所示的基底位址A0,A1,A2等等。
如果被請求的位址不小於分界線位址,在步驟540中,根據第二區域220的定址方案,位址解碼器130解碼被請求的位址。在第二區域220偏移位址(又稱為第二偏移位址)中的位數可以對應於第二區域220的尺寸。對於第4圖所描述八個記憶體定位被分配給每一執行緒中的示例,三個位可以被用作第二偏移位址,在被請求的位址中剩下的位是第二基底位址,其識別如第4圖所示的基底位址B0,B1,B2等等。需要注意的是,每一第二基底位址也分別為記憶體單元 125標記第二區域220的開始。在一實施例中,第二基底位址可以共同的用作分界線位址,用於位址解碼器130確定被請求的位址是否落在第一區域210或第二區域220中。
第6圖是根據一實施例的由位址解碼器(例如第1圖中的位址解碼器)執行的方法600的流程圖,用於管理由一進程的複數個執行緒平行的記憶體存取。位址解碼器耦接於執行執行緒的平行處理器單元,並且也耦接於包括複數個記憶體單元的片上記憶體。
方法600開始於解碼器從複數個執行緒中接收到平行存取片上記憶體的複數個請求,每一請求指定用於記憶體存取的被請求的位址(步驟610)。位址解碼器根據第一區域與第二區域之間的分界線,確定被請求的位址是否在片上記憶體的第一區域或者第二區域之中,其中第一區域與第二區域具有不同的用於執行緒平行存取的記憶體定址方案(步驟620)。位址解碼器然後在第一區域與第二區域之一中啟動由複數個執行緒存取複數個記憶體定位(步驟630)。
因此,根據DAR記憶體定址方案,複數個執行緒可以使用具有相同的基底位址的不同偏移量來存取在相同的片上記憶體單元中連續的複數個記憶體定位。根據IDAR記憶體定址方案,多執行緒可以使用具有相同偏移位址的不同基底位址來存取在不同的片上記憶體單元中對應的複數個記憶體定位,或者可以使用具有不同偏移位址的不同基底位址來存取在不同片上存儲單元中不同的複數個記憶體定位。
通過所提供的在每一記憶體單元125中的混合記憶體定址方案,可以提升記憶體存取的效率。通過將複數個執行緒中的記憶體 存取衝突減到最少,雙記憶體區域允許平行複數個執行緒高效率的去存取片上記憶體。因此,複數個執行緒可以在一記憶體存取週期中同時存取片上記憶體。
第5圖與第6圖流程圖的操作已經參考第1-4圖的示例性實施例進行描述。然而,應當理解的是,第5圖與第6圖的流程圖的操作可以由除了參考第1-4圖所討論的實施例之外的本發明的實施例來執行,參考第1-4圖的所討論的實施例可以執行不同於參考流程圖所討論的實施例的操作。其中第5圖與第6圖的流程圖示出了由本發明某一實施例所執行的一具體的操作次序,應當理解的是,這一次序是示例性的(例如可選的實施例可以以不同的循序執行操作,組合某些操作,重疊某些操作等等)。
這裡已經描述了各種各樣的功能組件或塊。本領域技術人員能夠意識到,功能塊可以通過電路(專業電路或通用電路,其在一或複數個處理器的控制與編碼指令下運行)較好的實施,其通常代表性的包括與這裡描述的功能與操作一致的,以這樣的方式配置於控制電路運行的電晶體。
雖然本發明已經通過幾個實施例進行描述,本領域技術人員將認識到,本發明不限於所描述的實施例,可以在所附權利要求的精神與範圍內進行修改與變更,因此,該描述應當認為是說明性的而非限制性的。
Claims (21)
- 一種管理複數個執行緒的片上記憶體存取的系統,包括:複數個平行的處理器單元,用以執行該等執行緒;一片上記憶體,包括複數個記憶體單元且每一該等記憶體單元包括一第一區域與一第二區域,其中該第一區域與該第二區域具有不同的記憶體定址方案,用於該等執行緒的平行存取;以及一位址解碼器,耦接於該等平行處理單元與該片上記憶體,該位址解碼器根據來自於該等平行處理單元的複數個解碼的位址信號,啟動該等執行緒對該第一區域與該第二區域之一的複數個記憶體定位的存取。
- 如申請專利範圍第1項所述之管理複數個執行緒的片上記憶體存取的系統,其中該第一區域被分配給該等執行緒以致於每一該等執行緒在固定的偏移位址處被分配該等記憶體的定位。
- 如申請專利範圍第2項所述之管理複數個執行緒的片上記憶體存取的系統,其中該等平行處理單元根據相同的基底位址,在一記憶體存取週期中,導致該等執行緒在該等記憶體單元之一的該第一區域中同時存取連續的該等記憶體定位。
- 如申請專利範圍第1項所述之管理複數個執行緒的片上記憶體存取的系統,其中該第二區域被分配給該等執行緒以致於每一該等執行緒在該等記憶體單元之一中被分配連續的該等記憶體定位。
- 如申請專利範圍第4項所述之管理複數個執行緒的片上記憶體存取的系統,其中該等平行處理單元根據相同的偏移位址,在一記憶體 存取週期中,導致該等執行緒在不同的記憶體單元的第二區域中同時存取對應的該等記憶體定位。
- 如申請專利範圍第1項所述之管理複數個執行緒的片上記憶體存取的系統,基於進程的記憶體存取模式,其中該等記憶體定位在片上存儲的該第一區域與該第二區域之一中被分配給該等執行緒。
- 如申請專利範圍第1項所述之管理複數個執行緒的片上記憶體存取的系統,其中每一該等記憶體單元中的該第一區域與該第二區域通過一軟體可配置的分界線來定義。
- 如申請專利範圍第1項所述之管理複數個執行緒的片上記憶體存取的系統,其中每一該等記憶體單元中的該第一區域與該第二區域通過一基本固定的分界線來定義。
- 一種管理記憶體分配的系統,包括:複數個平行記憶體單元;一片上記憶體,包括複數個記憶體單元且每一該等記憶體單元包括一第一區域與一第二區域,其中該第一區域與該第二區域具有不同的記憶體定址方案,用於由複數個執行緒的平行存取;以及一位址解碼器,耦接於該等平行處理單元與該片上處理器,該位址解碼器用於:接收來自於該等執行緒的平行存取片上記憶體的複數個請求,每一該等請求指定用於記憶體存取的一被請求的位址;根據該第一區域與該第二區域之間的一分界線,確定該被請求的位址是否在該片上記憶體的該第一區域與該第二區域之中;以及 啟動該等執行緒對該第一區域與該第二區域之一的複數個記憶體定位的存取。
- 如申請專利範圍第9項所述之管理記憶體分配的系統,其中該第一區域被分配給該等執行緒以致於每一該等執行緒在固定的偏移位址出被分配該等記憶體定位,以及該第二區域被分配給該等執行緒以致於每一該等執行序在該等記憶體單元之一中被分配連續的該等記憶體定位。
- 如申請專利範圍第9項所述之管理記憶體分配的系統,其中該等記憶體單元的該第一區域具有相同的第一尺寸以及該等記憶體單元的該第二區域具有相同的第二尺寸。
- 如申請專利範圍第9項所述之管理記憶體分配的系統,其中該位址解碼器根據相同的基底位址,在一記憶體存取週期中,進一步導致該等執行緒在該等記憶體單元的該第一區域中同時存取連續的該等記憶體定位。
- 如申請專利範圍第9項所述之管理記憶體分配的系統,其中該位址解碼器根據相同的偏移位址,在一記憶體存取週期中,進一步導致該等執行緒在不同的該等記憶體單元的該第二區域中同時存儲對應的該等記憶體定位。
- 如申請專利範圍第9項所述之管理記憶體分配的系統,其中基於進程的記憶體存取模式,該等記憶體定位在該片上記憶體的該第一區域與第二區域之一中被分配給該等執行緒。
- 一種位址解碼器執行進程的複數個執行緒的方法,該位址解碼器耦 接至複數個平行處理單元,包括:接收來自於該等執行緒的去平行存取包括複數個記憶體單元的片上記憶體的複數個請求,每一該等請求指定用於記憶體存取的一被請求的位址;根據在第一區域與第二區域之間的分界線,確定該被請求的位址是否在該片上記憶體的該第一區域或者該片上記憶體的該第二區域之中,其中該第一區域與該第二區域具有不同的記憶體定址方案,用於由該等執行緒的平行存取;以及啟動該等執行緒對該第一區域與該第二區域之一的複數個記憶體定位的存取。
- 如申請專利範圍第15項所述之位址解碼器執行進程的複數個執行緒的方法,其中該第一區域被分配給該等執行緒以致每一該等執行序在固定的偏移位址處被分配該等記憶體位址,以及該第二區域被分配給該等執行緒以致每一該等執行緒在該等記憶體單元之一中被分配連續的該等記憶體定位。
- 如申請專利範圍第15項所述之位址解碼器執行進程的複數個執行緒的方法,進一步包括:在一記憶體存取週期中,根據相同的基底位址,由該等執行緒平行存取該等記憶體單元之一的該第一區域中的連續的該等記憶體定位。
- 如申請專利範圍第15項所述之位址解碼器執行進程的複數個執行緒的方法,進一步包括:在一記憶體存取週期中,根據相同的偏移位址,由該等執行緒平行存取不同的該等記憶體單元的該第二區域中 對應的該等記憶體定位。
- 如申請專利範圍第15項所述之位址解碼器執行進程的複數個執行緒的方法,基於進程的記憶體存取模式,其中該等記憶體定位在該片上記憶體中的該第一區域與該第二區域之一中被分配給該等執行緒。
- 如申請專利範圍第15項所述之位址解碼器執行進程的複數個執行緒的方法,其中該分界線是軟體可配置的。
- 如申請專利範圍第15項所述之位址解碼器執行進程的複數個執行緒的方法,其中該分界線是基本固定的。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201662436487P | 2016-12-20 | 2016-12-20 | |
US62/436,487 | 2016-12-20 | ||
US15/675,710 US10838656B2 (en) | 2016-12-20 | 2017-08-12 | Parallel memory access to on-chip memory containing regions of different addressing schemes by threads executed on parallel processing units |
US15/675,710 | 2017-08-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201824002A TW201824002A (zh) | 2018-07-01 |
TWI652578B true TWI652578B (zh) | 2019-03-01 |
Family
ID=62562533
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106142360A TWI652578B (zh) | 2016-12-20 | 2017-12-04 | 複數個執行緒的記憶體存取方法及系統 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10838656B2 (zh) |
CN (1) | CN108205500B (zh) |
TW (1) | TWI652578B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110032407B (zh) | 2019-03-08 | 2020-12-22 | 创新先进技术有限公司 | 提升cpu并行性能的方法及装置和电子设备 |
CN112069085B (zh) * | 2019-06-10 | 2023-06-02 | 苏州库瀚信息科技有限公司 | 双模式闪存控制器和双模式存储器通信的系统、方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW544629B (en) | 1999-12-28 | 2003-08-01 | Intel Corp | Thread signaling in multi-threaded network processor |
TW546585B (en) | 1999-09-01 | 2003-08-11 | Intel Corp | Method of operating a processor and computer program product |
US20140207871A1 (en) | 2003-12-30 | 2014-07-24 | Ca, Inc. | Apparatus, method and system for aggregrating computing resources |
TW201430566A (zh) | 2012-10-25 | 2014-08-01 | Nvidia Corp | 在複數執行緒處理單元中的效率式記憶體虛擬化 |
TW201447574A (zh) | 2013-03-14 | 2014-12-16 | Nvidia Corp | 管理統一虛擬記憶體的分頁狀態目錄 |
CN106104488A (zh) | 2014-03-19 | 2016-11-09 | 高通股份有限公司 | 用于支持任务间通信的基于硬件的原子操作 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6209066B1 (en) * | 1998-06-30 | 2001-03-27 | Sun Microsystems, Inc. | Method and apparatus for memory allocation in a multi-threaded virtual machine |
KR100598097B1 (ko) * | 2003-12-29 | 2006-07-07 | 삼성전자주식회사 | 듀얼 칩 패키지 |
US8176265B2 (en) * | 2006-10-30 | 2012-05-08 | Nvidia Corporation | Shared single-access memory with management of multiple parallel requests |
US10169072B2 (en) * | 2009-09-23 | 2019-01-01 | Nvidia Corporation | Hardware for parallel command list generation |
US8751771B2 (en) * | 2010-09-29 | 2014-06-10 | Nvidia Corporation | Efficient implementation of arrays of structures on SIMT and SIMD architectures |
KR20120132278A (ko) * | 2011-05-26 | 2012-12-05 | 삼성전자주식회사 | 메모리 칩, 메모리 시스템, 및 메모리 칩에 대한 액세스 방법 |
US9256550B2 (en) * | 2012-03-28 | 2016-02-09 | International Business Machines Corporation | Hybrid address translation |
JP2014063258A (ja) * | 2012-09-20 | 2014-04-10 | Renesas Electronics Corp | 半導体集積回路装置及びマイクロコントローラ |
KR20140085756A (ko) * | 2012-12-27 | 2014-07-08 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 반도체 메모리 장치의 동작방법 |
-
2017
- 2017-08-12 US US15/675,710 patent/US10838656B2/en active Active
- 2017-11-30 CN CN201711236620.5A patent/CN108205500B/zh active Active
- 2017-12-04 TW TW106142360A patent/TWI652578B/zh active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW546585B (en) | 1999-09-01 | 2003-08-11 | Intel Corp | Method of operating a processor and computer program product |
TW544629B (en) | 1999-12-28 | 2003-08-01 | Intel Corp | Thread signaling in multi-threaded network processor |
US20140207871A1 (en) | 2003-12-30 | 2014-07-24 | Ca, Inc. | Apparatus, method and system for aggregrating computing resources |
TW201430566A (zh) | 2012-10-25 | 2014-08-01 | Nvidia Corp | 在複數執行緒處理單元中的效率式記憶體虛擬化 |
TW201447574A (zh) | 2013-03-14 | 2014-12-16 | Nvidia Corp | 管理統一虛擬記憶體的分頁狀態目錄 |
CN106104488A (zh) | 2014-03-19 | 2016-11-09 | 高通股份有限公司 | 用于支持任务间通信的基于硬件的原子操作 |
Also Published As
Publication number | Publication date |
---|---|
CN108205500A (zh) | 2018-06-26 |
US10838656B2 (en) | 2020-11-17 |
TW201824002A (zh) | 2018-07-01 |
CN108205500B (zh) | 2021-02-23 |
US20180173463A1 (en) | 2018-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9734079B2 (en) | Hybrid exclusive multi-level memory architecture with memory management | |
US9223709B1 (en) | Thread-aware cache memory management | |
EP3030967B1 (en) | Dynamic address negotiation for shared memory regions in heterogeneous muliprocessor systems | |
US9329988B2 (en) | Parallel dynamic memory allocation using a nested hierarchical heap | |
US8751771B2 (en) | Efficient implementation of arrays of structures on SIMT and SIMD architectures | |
US8656401B2 (en) | Method and apparatus for prioritizing processor scheduler queue operations | |
US9710306B2 (en) | Methods and apparatus for auto-throttling encapsulated compute tasks | |
US20150270000A1 (en) | Methods and systems for mapping a peripheral function onto a legacy memory interface | |
US20120221785A1 (en) | Polymorphic Stacked DRAM Memory Architecture | |
JP2019520660A (ja) | 柔軟なアドレスデコード機能を備えるメモリコントローラ | |
US20170199689A1 (en) | Frame buffer access tracking via a sliding window in a unified virtual memory system | |
US8868835B2 (en) | Cache control apparatus, and cache control method | |
US20160378607A1 (en) | Instant restart in non volatile system memory computing systems with embedded programmable data checking | |
US9245601B2 (en) | High-density latch arrays | |
TW201403321A (zh) | 針對記憶體存取的動態記憶列模式定址 | |
US20140244920A1 (en) | Scheme to escalate requests with address conflicts | |
US20110072438A1 (en) | Fast mapping table register file allocation algorithm for simt processors | |
US20180088853A1 (en) | Multi-Level System Memory Having Near Memory Space Capable Of Behaving As Near Memory Cache or Fast Addressable System Memory Depending On System State | |
US20190324912A1 (en) | Cache memory shared by software having different time-sensitivity constraints | |
RU2644529C2 (ru) | Отображение встроенного адреса есс | |
TWI652578B (zh) | 複數個執行緒的記憶體存取方法及系統 | |
TWI526831B (zh) | 針對瀏覽應用程式最佳化之快取分配方法 | |
US8478946B2 (en) | Method and system for local data sharing | |
US10489164B2 (en) | Apparatuses for enqueuing kernels on a device-side | |
US20140380317A1 (en) | Single-pass parallel prefix scan with dynamic look back |