TWI761992B - 資料計算裝置及其操作方法 - Google Patents
資料計算裝置及其操作方法 Download PDFInfo
- Publication number
- TWI761992B TWI761992B TW109135845A TW109135845A TWI761992B TW I761992 B TWI761992 B TW I761992B TW 109135845 A TW109135845 A TW 109135845A TW 109135845 A TW109135845 A TW 109135845A TW I761992 B TWI761992 B TW I761992B
- Authority
- TW
- Taiwan
- Prior art keywords
- look
- lookup
- circuit
- memories
- memory
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Logic Circuits (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一種資料計算裝置及其操作方法。資料計算裝置包括多個
記憶體以及一個查表器電路。查表器電路透過多個記憶體通道分別耦接至這些記憶體。查表器電路依據至少一個查找表的特性與這些記憶體通道的傳輸頻寬,決定將所述至少一個查找表配置至這些記憶體中的至少一個的配置方式,以平衡這些記憶體通道的傳輸負載。
Description
本發明是有關於一種電子裝置,且特別是有關於一種計算裝置及其操作方法。
現有的計算裝置經常使用一或多個查找表(lookup table)。計算裝置的處理器會將查找表載入至特定的記憶體,並在運算過程中通過記憶體通道而從記憶體讀取查找表的內容。一般而言,查表的速度通常會取決於記憶體通道的傳輸頻寬。
然而,在處理器運算與查表的過程中,不同查找表所需被查找的次數與機率都並不相同。例如,有的查找表會很頻繁地被查找,有的查找表卻很少被查找。此外,不同查找表在每次查找時回傳的資料量也不相同。例如,有的查找表因為回傳的資料量大,會占用很大的記憶體通道的傳輸頻寬。因此,目前的計算裝置因為沒有考慮查找表的特性,容易造成在查表時,部分記憶體通道很忙碌,部分記憶體通道卻閒置的情況。如此無法有效地利用各記憶體通道的傳輸頻寬,亦無法最佳化整體計算裝置的效能。
須注意的是,「先前技術」段落的內容是用來幫助了解本發明。在「先前技術」段落所揭露的部份內容(或全部內容)可能不是所屬技術領域中具有通常知識者所知道的習知技術。在「先前技術」段落所揭露的內容,不代表該內容在本發明申請前已被所屬技術領域中具有通常知識者所知悉。
本發明提供一種計算裝置及其操作方法,以透過多個記憶體通道存取在多個記憶體中的查找表,以及平衡這些記憶體通道的傳輸負載。
在本發明的一實施例中,所述計算裝置包括多個記憶體以及一個查表器電路。查表器電路透過多個記憶體通道分別耦接至這些記憶體。查表器電路依據至少一個查找表的特性與這些記憶體通道的傳輸頻寬,決定將所述至少一個查找表配置至這些記憶體中的至少一個的配置方式,以平衡這些記憶體通道的傳輸負載。
本發明的一實施例中,所述操作方法包括:由查表器電路依據至少一個查找表的特性與多個記憶體通道的傳輸頻寬決定配置方式,其中查表器電路透過這些記憶體通道分別耦接至這些記憶體;以及由查表器電路依據所述配置方式將所述至少一個查找表配置至這些記憶體中的至少一個,以平衡這些記憶體通道的傳輸負載。
基於上述,在一些實施例中,所述查表器電路可以依據至少一個查找表的特性與多個記憶體通道的傳輸頻寬,決定將至少一個查找表配置至多個記憶體中的至少一個的配置方式,以平衡這些記憶體通道的傳輸負載。因此,基於各記憶體通道的傳輸負載(例如查找量或是資料傳輸量)的平衡,來最大化利用各記憶體通道的傳輸頻寬,以降低處理器在運算過程中等待查表的時間,進而達到整體計算裝置效能的最佳化。
為讓本發明的上述特徵和優點能更明顯易懂,下文特舉實施例,並配合所附圖式作詳細說明如下。
100、300:計算裝置
110、310、410:查表器電路
120_1、120_n、320_1、320_n、420_1、420_2:記憶體通道
130_1、130_n、330_1、330_n、430_1、430_2:記憶體
311:查找表特性記錄器
312:資料分配與載入器
313:查找表位置記錄器
314:位置解碼器
315:查表結果暫存器
316:路由電路
340、440:處理器
341:查找表的特性
342:查找表
343:查表需求
344:查表結果
L1~L4、L1’~L4’、L1_1、L1_2、L2_1、L2_2、L3_1、L3_2:查找表
S210、S220:步驟
圖1是依照本發明一實施例的一種計算裝置的電路方塊(circuit block)示意圖。
圖2是依照本發明的一實施例的一種計算裝置的操作方法的流程示意圖。
圖3是依照本發明另一實施例說明計算裝置的電路方塊示意圖。
圖4A~4D是依照本發明不同實施例的一種計算裝置的具體操作情境示意圖。
在本案說明書全文(包括申請專利範圍)中所使用的「耦接(或連接)」一詞可指任何直接或間接的連接手段。舉例而言,若文中描述第一裝置耦接(或連接)於第二裝置,則應該被解釋成該第一裝置可以直接連接於該第二裝置,或者該第一裝置可以透過其他裝置或某種連接手段而間接地連接至該第二裝置。本案說明書全文(包括申請專利範圍)中提及的「第一」、「第二」等用語是用以命名元件(element)的名稱,或區別不同實施例或範圍,而並非用來限制元件數量的上限或下限,亦非用來限制元件的次序。另外,凡可能之處,在圖式及實施方式中使用相同標號的元件/構件/步驟代表相同或類似部分。不同實施例中使用相同標號或使用相同用語的元件/構件/步驟可以相互參照相關說明。
圖1是依照本發明的一實施例的一種計算裝置100的電路方塊(circuit block)示意圖。於圖1所示實施例中,計算裝置100包括查表器電路110以及多個記憶體(例如記憶體130_1、...、130_n)。查表器電路110透過多個記憶體通道(例如記憶體通道120_1、...、120_n)分別耦接至記憶體130_1~130_n。在本實施例中,記憶體130_1~130_n可以存放至少一個查找表,而查表器電路110可以向記憶體130_1~130_n查找至少一個查找表,以及查表器電路110可以決定在記憶體130_1~130_n中查找表的配置方式。查表器電路110可以依據查找表的特性與記憶體通道120_1~120_n的傳輸頻寬,而決定將這個查找表配置至記憶體130_1~130_n中的配置方式,以平衡記憶體通道120_1~120_n的傳輸負
載。
記憶體通道120_1~120_n與記憶體130_1~130_n的數量n可以依照設計需求來決定。記憶體通道120_1~120_n的頻寬可以彼此不同(或相同)。記憶體130_1~130_n可以包含多種類(或單一種類)的記憶體。舉例來說,記憶體130_1~130_n的存取速度可以彼此不同(或相同),而記憶體130_1~130_n的儲存空間大小可以彼此不同(或相同)。例如,在一些實施例中,記憶體130_1~130_n其中一者可以是靜態隨機存取記憶體(static random access memory,SRAM)、動態隨機存取記憶體(dynamic random access memory,DRAM)、磁性隨機存取記憶體(magnetic random-access memory,MRAM)、磁阻隨機存取記憶體(magnetoresistive random access memory,MRAM)、快閃(Flash)記憶體或是其他種類的記憶體。
圖2是依照本發明的一實施例的一種計算裝置的操作方法的流程示意圖。請參照圖1與圖2。在步驟S210中,查表器電路110可以依據查找表的特性與記憶體通道120_1~120_n的傳輸頻寬,而決定將這個查找表配置至記憶體130_1~130_n中的配置方式。舉例來說,依照設計需求,所述查找表的特性包括這個查找表的讀取次數、讀取機率以及回傳資料量中的至少一個。
在步驟S220中,查表器電路110可以依據步驟S210所決定的該配置方式,將這個查找表配置至記憶體130_1~130_n中,以平衡記憶體通道120_1~120_n的傳輸負載。依據每一個查找表
各自的特性,查表器電路110可以透過不同的記憶體通道120_1~120_n,使用不同的記憶體130_1~130_n來儲存多個查找表,以最大化利用各記憶體通道120_1~120_n的頻寬,有效提升查表效率。
依照設計需求,查表器電路110可以決定使用一種或多種的配置方式,以平衡記憶體通道120_1~120_n的傳輸負載。舉例來說,在一種配置方式中,查表器電路110可以依據多個查找表的特性與這些記憶體通道120_1~120_n的傳輸頻寬,將這些查找表的每一個存入多個記憶體130_1~130_n中的一個對應記憶體,以平衡這些記憶體通道120_1~120_n的傳輸負載。
舉例來說,假設需要被存取的這些查找表包括表一、表二、表三與表四。再假設計算裝置100在執行工作時,根據演算法內容,已知需查找(存取)表一40次,表二20次,表三10次,表四10次。再假設查表器電路110每次進行查找(存取)所需要的時間為1單位。在沒有考慮這些記憶體通道120_1~120_n的傳輸頻寬的情況下,假設將表一和表二放在記憶體130_1,以及將表三和表四放在記憶體130_n。因此,查表器電路110需要對記憶體130_1進行60次讀取(需要花費時間60單位),以及需要對記憶體130_n進行20次讀取(需要花費時間20單位)。因為查表器電路110可同時讀取記憶體130_1和記憶體130_n,所以查表器電路110需要花60單位時間來完成對表一至表四的查找(存取)操作。在沒有考慮這些記憶體通道120_1~120_n的傳輸頻寬的情況下,
這些記憶體通道120_1~120_n的傳輸負載並沒有被平衡,使得記憶體130_1與記憶體通道120_1成為效能的瓶頸。
本段所述範例將延續前段所述範例的假設條件,但是考慮了這些記憶體通道120_1~120_n的傳輸頻寬。亦即,查表器電路110可以依據查找表的特性與記憶體通道120_1~120_n的傳輸頻寬,而決定將這個查找表配置至記憶體130_1~130_n中的配置方式。查表器電路110可以將表一至表四的總查表次數盡可能地平均分配給兩個記體通道120_1與120_n。例如,查表器電路110可以將表一配置在記憶體130_1,以及將表二、表三和表四配置在記憶體130_n。因此,查表器電路110需要對記憶體130_1進行40次讀取(需要花費時間40單位),以及需要對記憶體130_n進行40次讀取(需要花費時間40單位)。因為查表器電路110可同時讀取記憶體130_1和記憶體130_n,所以查表器電路110只需要花40單位時間便可以完成對表一至表四的查找(存取)操作。相較於前段所述範例,本段所述範例的查找(存取)操作更快速。
在另一種配置方式中,查表器電路110可以依據多個查找表查找表的特性與記憶體通道120_1~120_n的傳輸頻寬,將這些查找表的每一個複製並存入記憶體130_1~130_n中的不同記憶體,以平衡這些記憶體通道120_1~120_n的傳輸負載。因為這些記憶體130_1~130_n都有相同查找表的內容,所以查表器電路110可以依照這些記憶體通道120_1~120_n的當時傳輸負載來動態選擇這些記憶體通道120_1~120_n中的哪一個(或是哪些),以便
查找(存取)所述相同查找表。因此,查表器電路110可以平衡這些記憶體通道120_1~120_n的傳輸負載。
在另一種配置方式中,多個查找表中的一個查找表可以被分為多個部分,而查表器電路110可以依據這些部分的特性與記憶體通道120_1~120_n的傳輸頻寬,將這些部分分別存入記憶體130_1~130_n中的不同記憶體,以平衡這些記憶體通道120_1~120_n的傳輸負載。
舉例來說,假設需要被存取的這些查找表包括表一、表二、表三與表四。再假設計算裝置100在執行工作時,根據演算法內容,已知需從表一讀取5筆資料(A、B、C、D與E),從表二讀取2筆資料(F與G),從表三讀取2筆資料(H與I),以及從表四讀取1筆資料(J)。再假設查表器電路110每次進行查找(存取)所需要的時間為1單位。在沒有考慮這些記憶體通道120_1~120_n的傳輸頻寬的情況下,假設將表一和表二放在記憶體130_1,以及將表三和表四放在記憶體130_n。因此,查表器電路110需要對記憶體130_1進行7次讀取(需要花費時間7單位來讀取資料A、B、C、D、E、F與G),以及需要對記憶體130_n進行3次讀取(需要花費時間3單位來讀取資料H、I與J)。因為查表器電路110可同時讀取記憶體130_1和記憶體130_n,所以查表器電路110需要花7單位時間來完成對表一至表四的查找(存取)操作。在沒有考慮這些記憶體通道120_1~120_n的傳輸頻寬的情況下,這些記憶體通道120_1~120_n的傳輸負載並沒有被平衡,使得記
憶體130_1與記憶體通道120_1成為效能的瓶頸。
本段所述範例將延續前段所述範例的假設條件,但是考慮了這些記憶體通道120_1~120_n的傳輸頻寬。亦即,查表器電路110可以依據查找表的特性與記憶體通道120_1~120_n的傳輸頻寬,而決定將這個查找表配置至記憶體130_1~130_n中的配置方式。查表器電路110可以將表一至表四的總查表次數盡可能地平均分配給兩個記體通道120_1與120_n。例如,查表器電路110可以將表一的資料A、B與C配置在記憶體130_1,將表一的資料D與E配置在記憶體130_n,將表二的資料F配置在記憶體130_1,將表二的資料G配置在記憶體130_n,將表三的資料H配置在記憶體130_1,將表三的資料I配置在記憶體130_n,以及將表四的資料J配置在記憶體130_n。因此,查表器電路110需要對記憶體130_1進行5次讀取(需要花費時間5單位來讀取資料A、B、C、F與H),以及需要對記憶體130_n進行5次讀取(需要花費時間5單位來讀取資料D、E、G、I與J)。因為查表器電路110可同時讀取記憶體130_1和記憶體130_n,所以查表器電路110只需要花5單位時間便可以完成對表一至表四的查找(存取)操作。相較於前段所述範例,本段所述範例的查找(存取)操作更快速。
基於上述,本實施例的計算裝置100可以透過查表器電路110依據至少一個查找表的特性與記憶體通道120_1~120_n的傳輸頻寬,決定將至少一個查找表配置至記憶體130_1~130_n中的至少一個的配置方式,以平衡記憶體通道120_1~120_n的傳輸
負載。計算裝置100可以最大化利用各記憶體通道120_1~120_n的頻寬,同時兼顧存取速度、存取功耗、儲存成本等進行最有效率的查找表配置,可以有效提升查表效率,進而達到計算裝置100效能的最佳化。
圖3是依照本發明另一實施例說明計算裝置300的電路方塊示意圖。圖3所示計算裝置300包括處理器340、查表器電路310以及多個記憶體(例如記憶體330_1、...、330_n)。查表器電路310可以透過多個記憶體通道(例如記憶體通道320_1、...、320_n)分別耦接至記憶體330_1~330_n。圖3所示計算裝置300、查表器電路310、記憶體通道320_1~320_n以及記憶體330_1~330_n可以參照圖1所示計算裝置100、查表器電路110、記憶體通道120_1~120_n以及記憶體130_1~130_n的相關說明來類推,故在此不再贅述。在第一模式下,處理器340可以提供查找表342及其特性341至查表器電路310。在第二模式下,處理器340可以發送查表需求343至查表器電路310,然後自查表器電路310讀取查表結果344。
在圖3所示實施例中,查表器電路310包括查找表特性記錄器311、資料分配與載入器312、查找表位置記錄器313、位置解碼器314、查表結果暫存器315以及路由電路316。路由電路316透過記憶體通道320_1~320_n分別耦接至記憶體330_1~330_n。
資料分配與載入器312耦接至查找表特性記錄器311、查
找表位置記錄器313以及路由電路316。處理器340可以提供查找表的特性341至查找表特性記錄器311。查找表特性記錄器311可以記錄至少一個查找表的特性341,並且可以以提供至少一個查找表的特性341所對應的資訊給資料分配與載入器312。資料分配與載入器312耦接至查找表特性記錄器311以接收查找表特性記錄器311所提供的資訊。資料分配與載入器312可以依據該資訊去控制(或通知)路由電路316,以通過路由電路316與記憶體通道320_1~320_n而將來自於處理器340的至少一個查找表342配置至記憶體330_1~330_n中。查找表位置記錄器313耦接至資料分配與載入器312。查找表位置紀錄器313可以記錄關於「資料分配與載入器312將所述至少一個查找表342配置至記憶體330_1~330_n」的配置結果(配置方式)。
查找表位置紀錄器313可以提供關於「查表器電路310(資料分配與載入器312)將所述至少一個查找表342配置至記憶體330_1~330_n」的配置結果(配置方式)。位置解碼器314耦接至查找表位置紀錄器313,以取得所述配置結果(配置方式)。位置解碼器314耦接至路由電路316與處理器340。處理器340可以發送查表需求343至位置解碼器314。位置解碼器314可以依據配置結果去獲知查表需求343所對應的查找表被放在記憶體330_1~330_n的具體位置。然後,位置解碼器314可以控制(或通知)路由電路316,以通過路由電路316與記憶體通道320_1~320_n而對被配置在記憶體330_1~330_n的查找表進行查找而獲得查表
結果。查表結果暫存器315耦接至路由電路316。來自於記憶體通道320_1~320_n的所述查表結果可以通過記憶體通道320_1~320_n與路由電路316而被暫存在查表結果暫存器315。因此,處理器340可以發送查表需求343至查表器電路310,然後自查表器電路310讀取查表結果344。
基於上述,處理器340可以在不同模式下,透過查表器電路310執行查找表配置與查表的動作,以最大化利用記憶體通道320_1~320_n的傳輸頻寬,進而大幅提高查表的效率。依照不同的設計需求,上述處理器340以及(或是)查表器電路310的實現方式可以是硬體(hardware)、韌體(firmware)、軟體(software,即程式)或是前述三者中的多者的組合形式。
以硬體形式而言,上述查表器電路110、處理器340、查表器電路310、表特性記錄器311、資料分配與載入器312、查找表位置記錄器313、位置解碼器314、查表結果暫存器315以及(或是)路由電路316的方塊可以實現於積體電路(integrated circuit)上的邏輯電路。上述查表器電路110、處理器340、查表器電路310、表特性記錄器311、資料分配與載入器312、查找表位置記錄器313、位置解碼器314、查表結果暫存器315以及(或是)路由電路316的相關功能可以利用硬體描述語言(hardware description languages,例如Verilog HDL或VHDL)或其他合適的編程語言來實現為硬體。舉例來說,上述查表器電路110、處理器340、查表器電路310、表特性記錄器311、資料分配與載入器312、查找表位置記錄器313、
位置解碼器314、查表結果暫存器315以及(或是)路由電路316的相關功能可以被實現於一或多個控制器、微控制器、微處理器、特殊應用積體電路(Application-specific Integrated Circuit,ASIC)、數位訊號處理器(digital signal processor,DSP)、現場可程式邏輯閘陣列(Field Programmable Gate Array,FPGA)、複雜可程式邏輯裝置(Complex Programmable Logic Device,CPLD)及/或其他處理單元中的各種邏輯區塊、模組和電路。
以軟體形式及/或韌體形式而言,上述處理器電路340以及(或是)查表器電路310的相關功能可以被實現為編程碼(programming codes)。例如,利用一般的編程語言(programming languages,例如C、C++或組合語言)或其他合適的編程語言來實現上述查表器電路110、處理器340、查表器電路310、表特性記錄器311、資料分配與載入器312、查找表位置記錄器313、位置解碼器314、查表結果暫存器315以及(或是)路由電路316。所述編程碼可以被記錄/存放在記錄媒體中,所述記錄媒體中例如包括唯讀記憶體(Read Only Memory,ROM)、存儲裝置及/或隨機存取記憶體(Random Access Memory,RAM)。電腦、中央處理器(Central Processing Unit,CPU)、控制器、微控制器或微處理器可以從所述記錄媒體中讀取並執行所述編程碼,從而達成相關功能。作為所述記錄媒體,可使用「非臨時的電腦可讀取媒體(non-transitory computer readable medium)」,例如可使用帶(tape)、碟(disk)、卡(card)、半導體記憶體、可程式設計的邏輯電路等。
而且,所述程式也可經由任意傳輸媒體(通信網路或廣播電波等)而提供給所述電腦(或CPU)。所述通信網路例如是互聯網(Internet)、有線通信(wired communication)、無線通信(wireless communication)或其它通信介質。
圖4A~4D是依照本發明不同實施例說明圖1所示計算裝置100(或是圖3所示計算裝置300)的具體操作情境示意圖。圖4A所示計算裝置包括處理器440以及兩個記憶體430_1與430_2。處理器440可以透過記憶體通道420_1與420_2分別耦接至記憶體430_1與430_2。圖4A所示記憶體通道420_1與420_2以及記憶體430_1與430_2可以參照圖1所示記憶體通道120_1~120_n以及記憶體130_1~130_n的相關說明來類推,或是圖4A所示處理器440、記憶體通道420_1與420_2以及記憶體430_1與430_2可以參照圖3所示處理器340、記憶體通道320_1~320_n以及記憶體330_1~330_n的相關說明來類推,故在此不再贅述。
圖4A所示實施例是,在沒有考慮這些記憶體通道420_1~420_2的傳輸頻寬的情況下,計算裝置的具體操作情境。舉例來說,假設需要被存取的這些查找表包括查找表L1、L2、L3與L4。再假設計算裝置在執行工作時,根據演算法內容,已知需對查找表L1進行40次查找(存取),對查找表L2進行20次查找,對查找表L3進行10次查找,以及對查找表L4進行10次查找。再假設查表器電路110每次進行查找(存取)所需要的時間為1單位。
在沒有考慮這些記憶體通道420_1~420_2的傳輸頻寬的
情況下,假設在圖4A所示實施例中,處理器440將查找表L1和L2透過記憶體通道420_1存放在記憶體430_1中,以及將查找表L3和L4透過記憶體通道420_2存放在記憶體430_2中。因此,處理器440需要對記憶體430_1進行60次讀取(需要花費時間60單位),以及需要對記憶體430_2進行20次讀取(需要花費時間20單位)。因為處理器440可同時讀取記憶體430_1和記憶體430_2,所以處理器440需要花60單位時間來完成對查找表L1~L4的查找(存取)操作。在沒有考慮這些記憶體通道420_1~420_2的傳輸頻寬的情況下,這些記憶體通道420_1~420_2的傳輸負載並沒有被平衡,使得記憶體430_1與記憶體通道420_1成為效能的瓶頸。換句話說,在查找的過程中,可能會因為每個查找表的特性不同,造成部分記憶體通道忙碌,而部分記憶體通道閒置的情況。
圖4B~4D所示計算裝置包括處理器440、查表器電路410、記憶體430_1以及記憶體430_2。處理器440耦接至查表器電路410,而查表器電路410可以透過記憶體通道420_1與420_2分別耦接至記憶體430_1與430_2。圖4B~4D所示查表器電路410、記憶體通道420_1與420_2以及記憶體430_1與430_2可以參照圖1所示查表器電路110、記憶體通道120_1~120_n以及記憶體130_1~130_n的相關說明來類推,或是圖4B~4D所示處理器440、查表器電路410、記憶體通道420_1與420_2以及記憶體430_1與430_2可以參照圖3所示處理器340、查表器電路310、記憶體通道320_1~320_n以及記憶體330_1~330_n的相關說明
來類推,故在此不再贅述。
為了平衡這些記憶體通道420_1~420_2的傳輸負載,於圖4B~4D所示實施例中,查表器電路410考慮了這些記憶體通道420_1~420_2的傳輸頻寬。圖4B所示範例將延續圖4A所示範例的假設條件,但是考慮了這些記憶體通道420_1~420_2的傳輸頻寬。亦即,查表器電路410可以依據查找表的特性與記憶體通道420_1~420_2的傳輸頻寬,而決定將這個查找表配置至記憶體430_1~430_2中的配置方式。查表器電路410可以將查找表L1~L4的總查表次數盡可能地平均分配給這兩個記體通道420_1~420_2。例如,查表器電路410可以將查找表L1配置在記憶體430_1,以及將查找表L2~L4配置在記憶體430_2。因此,查表器電路410需要對記憶體430_1進行40次讀取(需要花費時間40單位),以及需要對記憶體430_2進行40次讀取(需要花費時間40單位)。因為查表器電路410可同時讀取記憶體430_1和記憶體430_2,所以查表器電路410只需要花40單位時間便可以完成對查找表L1~L4的查找(存取)操作。相較於圖4A所示範例,圖4B所示範例的查找(存取)操作更快速。
於圖4C所示實施例中,處理器440或是查表器電路410可以根據演算法以及(或是)歷史紀錄而知道四個查找表(表一、表二、表三與表四)的各部分的讀取機率。舉例來說,處理器440可以預先將表一至表四的被讀取機率傳給查表器電路410。查表器電路410可以依據表一至表四的各部分的被查找機率,將表一至
表四的每一個拆分為兩個部分L1與L1’(每個部分的被查找機率各為50%)。然後,查表器電路410可以將表一的這兩個部分L1與L1’分別配置至記憶體430_1與430_2中。以此類推,表二至表四的一部分L2、L3與L4被配置至記憶體430_1中,而表二至表四的另一部分L2’、L3’與L4’被配置至記憶體430_2中。即使處理器440僅知道表一至表四需要被讀取的機率,不知道實際需要被讀取的次數,查表器電路410也能將查找(存取)動作盡可能地平均分派給記憶體通道420_1與420_2。因此,圖4C所示實施例可以平衡記憶體通道420_1與420_2的傳輸負載,提高查表速度。
請參照圖4A。舉例來說,假設需要被存取的這些查找表包括查找表L1、L2、L3與L4。再假設計算裝置在執行工作時,根據演算法內容,已知需從查找表L1讀取5筆資料(A、B、C、D與E),從查找表L2讀取2筆資料(F與G),從讀取2筆資料(H與I),以及從查找表L4讀取1筆資料(J)。再假設查表器電路410每次進行查找(存取)所需要的時間為1單位。
在沒有考慮這些記憶體通道420_1~420_2的傳輸頻寬的情況下,假設將查找表L1和查找表L2放在記憶體430_1,以及將查找表L3和查找表L4放在記憶體430_2。因此,查表器電路410需要對記憶體430_1進行7次讀取(需要花費時間7單位來讀取資料A、B、C、D、E、F與G),以及需要對記憶體430_2進行3次讀取(需要花費時間3單位來讀取資料H、I與J)。因為查表器電路410可同時讀取記憶體430_1和記憶體430_2,所以查表
器電路410需要花7單位時間來完成對查找表L1~L4的查找(存取)操作。在沒有考慮這些記憶體通道420_1~420_2的傳輸頻寬的情況下,這些記憶體通道420_1~420_2的傳輸負載並沒有被平衡,使得記憶體430_1與記憶體通道420_1成為效能的瓶頸。
為了平衡這些記憶體通道420_1~420_2的傳輸負載,於圖4D所示實施例中,查表器電路410考慮了這些記憶體通道420_1~420_2的傳輸頻寬。圖4D所示範例將延續前段所述範例的假設條件,但是考慮了這些記憶體通道420_1~420_2的傳輸頻寬。查表器電路410可以將查找表L1~L4的查找(存取)動作盡可能地平均分派給記憶體通道420_1與420_2。例如,查表器電路410可以將查找表L1的資料A、B與C(即圖4D所示查找表的部份L1_1)配置在記憶體430_1,將查找表L1的資料D與E(即圖4D所示查找表的部份L1_2)配置在記憶體430_2,將查找表L2的資料F(即圖4D所示查找表的部份L2_1)配置在記憶體430_1,將查找表L2的資料G(即圖4D所示查找表的部份L2_2)配置在記憶體430_2,將查找表L3的資料H(即圖4D所示查找表的部份L3_1)配置在記憶體430_1,將查找表L3的資料I(即圖4D所示查找表的部份L3_2)配置在記憶體430_2,以及將查找表L4的資料J配置在記憶體430_2。因此,查表器電路410需要對記憶體430_1進行5次讀取(需要花費時間5單位來讀取資料A、B、C、F與H),以及需要對記憶體430_2進行5次讀取(需要花費時間5單位來讀取資料D、E、G、I與J)。因為查表器電路410可同時
讀取記憶體430_1和記憶體430_2,所以查表器電路410只需要花5單位時間便可以完成對查找表L1~L4的查找(存取)操作。相較於前段所述範例,圖4D所示範例的查找(存取)操作更快速。
綜上所述,在一些實施例中,上述處理器440可以透過查表器電路410以依據至少一個查找表的特性與記憶體通道420_1、420_2的傳輸頻寬,決定將查找表L1~L4配置至記憶體430_1與430_2中的至少一個的配置方式。依據決定的配置方式,查表器電路410可以將查找次數頻繁、查找機率高或回傳資料量大的查找表或查找表的多個部分,透過記憶體通道420_1與420_2選擇性地平均分配在獨立的記憶體430_1與記憶體430_2之中,以最大化利用記憶體通道420_1與420_2的傳輸頻寬,盡可能地平衡這些記憶體通道420_1與420_2的傳輸負載。如此可降低處理器440在運算過程中等待查找表資料的查表時間,進而達到計算裝置效能的最佳化。
雖然本發明已以實施例揭露如上,然其並非用以限定本發明,任何所屬技術領域中具有通常知識者,在不脫離本發明的精神和範圍內,當可作些許的更動與潤飾,故本發明的保護範圍當視後附的申請專利範圍所界定者為準。
S210、S220:步驟
Claims (22)
- 一種資料計算裝置,包括:多個記憶體;以及一查表器電路,透過多個記憶體通道分別耦接至該些記憶體,其中該查表器電路依據至少一個查找表的特性與該些記憶體通道的傳輸頻寬決定將該至少一個查找表配置至該些記憶體中的至少一個的一配置方式,以平衡該些記憶體通道的傳輸負載。
- 如請求項1所述的資料計算裝置,其中該配置方式包括,該查表器電路依據該至少一個查找表的該特性與該些記憶體通道的該傳輸頻寬,將該至少一個查找表的每一個存入該些記憶體中的一個對應記憶體,以平衡該些記憶體通道的傳輸負載。
- 如請求項1所述的資料計算裝置,其中該至少一個查找表中的一個查找表被分為多個部份,該配置方式包括,該查表器電路依據該些部份的該特性與該些記憶體通道的該傳輸頻寬,將該些部份分別存入該些記憶體中的不同記憶體,以平衡該些記憶體通道的傳輸負載。
- 如請求項1所述的資料計算裝置,其中該配置方式包括,該查表器電路依據該至少一個查找表的該特性與該些記憶體通道的該傳輸頻寬,將該至少一個查找表複製並存入該些記憶體中的不同記憶體,以平衡該些記憶體通道的傳輸負載。
- 如請求項1所述的資料計算裝置,其中該至少一個查找表的該特性包括,該至少一個查找表的一讀取次數、一讀取機率以及一回傳資料量中的至少一個。
- 如請求項1所述的資料計算裝置,其中該查表器電路包括:一路由電路,透過該些記憶體通道分別耦接至該些記憶體;一查找表特性記錄器,用以提供該至少一個查找表的該特性所對應的一資訊;以及一資料分配與載入器,耦接至該查找表特性記錄器以接收該資訊,以及耦接至該路由電路,用以依據該資訊去控制該路由電路,以通過該路由電路將該至少一個查找表配置至該些記憶體。
- 如請求項6所述的資料計算裝置,其中該查表器電路更包括:一查找表位置記錄器,耦接至該資料分配與載入器,用以記錄關於該資料分配與載入器將該至少一個查找表配置至該些記憶體的一配置結果。
- 如請求項1所述的資料計算裝置,其中該查表器電路包括:一路由電路,透過該些記憶體通道分別耦接至該些記憶體;一查找表位置記錄器,用以提供關於該查表器電路將該至少一個查找表配置至該些記憶體的一配置結果;以及一位置解碼器,耦接至該查找表位置記錄器以取得該配置結 果,以及耦接至該路由電路,用以依據該配置結果去控制該路由電路,以通過該路由電路對被配置在該些記憶體的該至少一個查找表進行查找,以獲得一查表結果。
- 如請求項8所述的資料計算裝置,其中該查表器電路更包括:一查表結果暫存器,耦接至該路由電路,用以暫存該查表結果。
- 如請求項1所述的資料計算裝置,更包括:一處理器,耦接至該查表器電路,其中,在一第一模式下,該處理器提供該至少一個查找表的該特性至該查表器電路;以及在一第二模式下,該處理器發送一查表需求至該查表器電路,並自該查表器電路讀取一查表結果。
- 如請求項10所述的資料計算裝置,其中該查表器電路包括:一查找表特性記錄器,用以記錄該至少一個查找表的該特性。
- 一種資料計算裝置的操作方法,包括:由一查表器電路依據至少一個查找表的特性與多個記憶體通道的傳輸頻寬決定一配置方式,其中該查表器電路透過該些記憶體通道分別耦接至多個記憶體;以及由該查表器電路依據該配置方式將該至少一個查找表配置至該些記憶體中的至少一個,以平衡該些記憶體通道的傳輸負載。
- 如請求項12所述的操作方法,其中該配置方式包括:由該查表器電路依據該至少一個查找表的該特性與該些記憶體通道的該傳輸頻寬,將該至少一個查找表的每一個存入該些記憶體中的一個對應記憶體,以平衡該些記憶體通道的傳輸負載。
- 如請求項12所述的操作方法,其中該至少一個查找表中的一個查找表被分為多個部份,該配置方式包括:由該查表器電路依據該些部份的該特性與該些記憶體通道的該傳輸頻寬,將該些部份分別存入該些記憶體中的不同記憶體,以平衡該些記憶體通道的傳輸負載。
- 如請求項12所述的操作方法,其中該配置方式包括:由該查表器電路依據該至少一個查找表的該特性與該些記憶體通道的該傳輸頻寬,將該至少一個查找表複製並存入該些記憶體中的不同記憶體,以平衡該些記憶體通道的傳輸負載。
- 如請求項12所述的操作方法,其中該至少一個查找表的該特性包括該至少一個查找表的一讀取次數、一讀取機率以及一回傳資料量中的至少一個。
- 如請求項12所述的操作方法,更包括:由該查表器電路的一查找表特性記錄器提供該至少一個查找表的該特性所對應的一資訊;以及由該查表器電路的一資料分配與載入器依據該資訊,通過該查表器電路的一路由電路將該至少一個查找表配置至該些記憶體通道,其中該路由電路透過該些記憶體通道分別耦接至該些記憶 體。
- 如請求項17所述的操作方法,更包括:由該查表器電路的一查找表位置記錄器記錄關於該資料分配與載入器將該至少一個查找表配置至該些記憶體的一配置結果。
- 如請求項12所述的操作方法,更包括:由該查表器電路的一查找表位置記錄器提供關於該查表器電路將該至少一個查找表配置至該些記憶體的一配置結果;以及由該查表器電路的一位置解碼器依據該配置結果,通過該查表器電路的一路由電路對被配置在該些記憶體的該至少一個查找表進行查找,以獲得一查表結果,其中該路由電路透過該些記憶體通道分別耦接至該些記憶體。
- 如請求項19所述的操作方法,更包括:由一查表結果暫存器暫存該查表結果。
- 如請求項12所述的操作方法,更包括:由一處理器在一第一模式下,提供該至少一個查找表的該特性至該查表器電路;以及由該處理器在一第二模式下,發送一查表需求至該查表器電路,並自該查表器電路讀取一查表結果。
- 如請求項21所述的操作方法,更包括:由該查表器電路的一查找表特性記錄器記錄該至少一個查找表的該特性。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109135845A TWI761992B (zh) | 2020-10-16 | 2020-10-16 | 資料計算裝置及其操作方法 |
US16/953,349 US11474937B2 (en) | 2020-10-16 | 2020-11-20 | Computing device and operation method thereof |
CN202011319101.7A CN114385346A (zh) | 2020-10-16 | 2020-11-23 | 计算装置及其操作方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW109135845A TWI761992B (zh) | 2020-10-16 | 2020-10-16 | 資料計算裝置及其操作方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TWI761992B true TWI761992B (zh) | 2022-04-21 |
TW202217549A TW202217549A (zh) | 2022-05-01 |
Family
ID=81186486
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW109135845A TWI761992B (zh) | 2020-10-16 | 2020-10-16 | 資料計算裝置及其操作方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11474937B2 (zh) |
CN (1) | CN114385346A (zh) |
TW (1) | TWI761992B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7549036B2 (en) * | 2003-05-30 | 2009-06-16 | Intel Corporation | Management of access to data from memory |
JP2012174105A (ja) * | 2011-02-23 | 2012-09-10 | Olympus Corp | メモリアクセス制御回路 |
TW201423402A (zh) * | 2012-12-12 | 2014-06-16 | Paneve Llc | 通用目的數位資料處理器、系統及方法 |
CN104158744A (zh) * | 2014-07-09 | 2014-11-19 | 中国电子科技集团公司第三十二研究所 | 用于网络处理器的建表和查找方法 |
CN105094992A (zh) * | 2015-09-25 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 一种处理文件请求的方法与系统 |
CN105653609A (zh) * | 2015-12-24 | 2016-06-08 | 中国建设银行股份有限公司 | 基于内存的数据处理方法及装置 |
TWM528459U (zh) * | 2016-03-11 | 2016-09-11 | 宏碁股份有限公司 | 資料儲存系統以及電子裝置 |
TWI628660B (zh) * | 2017-09-19 | 2018-07-01 | 群聯電子股份有限公司 | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 |
US10402342B2 (en) * | 2016-10-20 | 2019-09-03 | Aspiring Sky Co., Limited | Re-configurable non-volatile memory structures and systems |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8543758B2 (en) | 2011-05-31 | 2013-09-24 | Micron Technology, Inc. | Apparatus including memory channel control circuit and related methods for relaying commands to logical units |
US20130185482A1 (en) | 2012-01-18 | 2013-07-18 | Samsung Electronics Co., Ltd. | Memory system using a storage having firmware with a plurality of features |
US20130346673A1 (en) | 2012-06-25 | 2013-12-26 | Yi-Chou Chen | Method for improving flash memory storage device access |
KR20190097930A (ko) * | 2018-02-13 | 2019-08-21 | 삼성전자주식회사 | 채널 별 메모리 용량을 조절하는 메모리 장치 및 이를 포함하는 메모리 시스템 |
US10684966B1 (en) * | 2019-02-21 | 2020-06-16 | Amazon Technologies, Inc. | Orchestrating dataflows with inferred data store interactions |
KR20200114052A (ko) * | 2019-03-27 | 2020-10-07 | 에스케이하이닉스 주식회사 | 컨트롤러, 메모리 시스템 및 그것의 동작 방법 |
-
2020
- 2020-10-16 TW TW109135845A patent/TWI761992B/zh active
- 2020-11-20 US US16/953,349 patent/US11474937B2/en active Active
- 2020-11-23 CN CN202011319101.7A patent/CN114385346A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7549036B2 (en) * | 2003-05-30 | 2009-06-16 | Intel Corporation | Management of access to data from memory |
JP2012174105A (ja) * | 2011-02-23 | 2012-09-10 | Olympus Corp | メモリアクセス制御回路 |
TW201423402A (zh) * | 2012-12-12 | 2014-06-16 | Paneve Llc | 通用目的數位資料處理器、系統及方法 |
CN104158744A (zh) * | 2014-07-09 | 2014-11-19 | 中国电子科技集团公司第三十二研究所 | 用于网络处理器的建表和查找方法 |
CN105094992A (zh) * | 2015-09-25 | 2015-11-25 | 浪潮(北京)电子信息产业有限公司 | 一种处理文件请求的方法与系统 |
CN105653609A (zh) * | 2015-12-24 | 2016-06-08 | 中国建设银行股份有限公司 | 基于内存的数据处理方法及装置 |
TWM528459U (zh) * | 2016-03-11 | 2016-09-11 | 宏碁股份有限公司 | 資料儲存系統以及電子裝置 |
US10402342B2 (en) * | 2016-10-20 | 2019-09-03 | Aspiring Sky Co., Limited | Re-configurable non-volatile memory structures and systems |
TWI628660B (zh) * | 2017-09-19 | 2018-07-01 | 群聯電子股份有限公司 | 解碼方法、記憶體控制電路單元以及記憶體儲存裝置 |
Also Published As
Publication number | Publication date |
---|---|
US11474937B2 (en) | 2022-10-18 |
CN114385346A (zh) | 2022-04-22 |
TW202217549A (zh) | 2022-05-01 |
US20220121565A1 (en) | 2022-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190114105A1 (en) | Memory system and soc including linear address remapping logic | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
US9092366B2 (en) | Splitting direct memory access windows | |
US10949120B2 (en) | Host defined bandwidth allocation for SSD tasks | |
KR101003102B1 (ko) | 멀티 프로세싱 유닛에 대한 메모리 매핑방법, 및 장치 | |
US20210286551A1 (en) | Data access ordering for writing-to or reading-from memory devices | |
CN108845958B (zh) | 一种交织器映射和动态内存管理系统及方法 | |
US20230273749A1 (en) | Latency and throughput centric reconfigurable storage device | |
US9104601B2 (en) | Merging direct memory access windows | |
CN115129621B (zh) | 一种内存管理方法、设备、介质及内存管理模块 | |
US10635349B2 (en) | Storage device previously managing physical address to be allocated for write data | |
TWI761992B (zh) | 資料計算裝置及其操作方法 | |
US20230144038A1 (en) | Memory pooling bandwidth multiplier using final level cache system | |
WO2020024113A1 (zh) | 一种内存交织方法及装置 | |
CN115202859A (zh) | 一种内存扩展方法以及相关设备 | |
CN113778333A (zh) | 组合芯片、存储设备和对存储对象的操作方法 | |
US20240012750A1 (en) | Memory expansion method and related device | |
CN117539796B (zh) | 电子装置及缓冲存储器管理方法 | |
US12008248B2 (en) | Systems, methods, and devices for utilization aware memory allocation | |
EP4120087B1 (en) | Systems, methods, and devices for utilization aware memory allocation | |
TW202131174A (zh) | 用於處理無結構源資料的方法及系統 | |
CN112069216A (zh) | 一种基于FPGA的Join算法实现方法、系统、装置和介质 | |
CN117539609A (zh) | 一种io流量控制方法、系统以及设备 |