TWI751882B - 具有多讀取埠之資料結構、處理器、及用於具有多讀取埠之資料結構之方法 - Google Patents
具有多讀取埠之資料結構、處理器、及用於具有多讀取埠之資料結構之方法 Download PDFInfo
- Publication number
- TWI751882B TWI751882B TW110101104A TW110101104A TWI751882B TW I751882 B TWI751882 B TW I751882B TW 110101104 A TW110101104 A TW 110101104A TW 110101104 A TW110101104 A TW 110101104A TW I751882 B TWI751882 B TW I751882B
- Authority
- TW
- Taiwan
- Prior art keywords
- read
- data
- port
- memory
- ports
- Prior art date
Links
Images
Landscapes
- Static Random-Access Memory (AREA)
Abstract
可使用各具有2m-1
個讀取埠之三個記憶體結構來建構具有允許同時存取n個資料輸入項之2m
個讀取埠之一記憶體結構。該三個記憶體結構包含提供對該n個資料輸入項之一半之存取之兩個結構及提供對該n個資料輸入項之一半之間的差異資料之存取之一差異結構。該2m
個埠之各對連接至該等2m-1
埠資料結構之各者之一各自埠,使得部分之各埠可藉由直接存取儲存該n個資料輸入項之一第一半之結構或藉由存取該差異結構及含有第二半之結構兩者來存取該第一半之資料輸入項以重建該第一半之該等資料輸入項以因此允許一對埠同時並行存取所儲存之資料輸入項之任何者。
Description
本發明大體上係關於資料結構之儲存,且具體而言,本發明係關於具有多讀取埠之資料結構之儲存。
資料結構(諸如查找表)可用於諸多應用中以對所接收之輸入資料執行一函數。例如,一算術邏輯單元(ALU)可藉由在一查找表中查找一接收輸入值且回傳一對應輸出值來對該接收輸入值執行一運算。
在一些情況中(諸如在單指令多資料(SIMD)應用中),可期望能夠對不同輸入資料集並行執行相同運算。因而,多個ALU或其他電路需要能夠並行存取查找表內所含之資料。
具有多個讀取埠之一記憶體結構可用於允許由多個ALU或其他處理器件並行存取一共同資料結構(諸如一查找表)。可使用具有較少讀取埠之複數個記憶體結構來建構該記憶體結構。
可使用各具有2m-1
個讀取埠之三個記憶體結構(例如子結構)來建構具有允許同時存取n個資料輸入項之2m
個讀取埠之一記憶體結構。該三個記憶體結構包含:一第一結構,其提供對該n個資料輸入項之一第一半(n/2個輸入項)之存取;一第二結構,其提供對該n個資料輸入項之一第二半(n/2個輸入項)之存取;及一差異結構,其提供對該n個資料輸入項之該第一半與該第二半(n/2個輸入項)之間的差異資料之存取。該2m
個埠之各者可連接至該等2m-1
埠資料結構之各者之一各自埠,使得一埠可藉由存取該第一結構或藉由存取該差異結構及該第二結構兩者來自該n個資料輸入項之該第一半存取資料以重建由該第一結構儲存之該資料。類似地,一埠可藉由存取該第二結構或藉由存取該差異結構及該第一結構兩者來自該n個資料輸入項之該第二半存取資料以重建由該第二結構儲存之該資料。
因而,可使用各儲存n/2個資料輸入項之三個1埠記憶體結構來建構用於存取n個資料輸入項之一2埠記憶體結構。類似地,可使用總共儲存(3/2)m
*n個輸入項之多個1埠記憶體結構來建構用於存取n個資料輸入項之一2m
埠記憶體結構。
圖式及以下描述係關於僅供說明之較佳實施例。應注意,將易於自以下討論認識到,本文所揭示之結構及方法之替代實施例係可在不背離所主張之原理之情況下採用之可行替代方案。
一資料結構(諸如一查找表)可由一算術邏輯單元(ALU)或其他電路用於對所接收之輸入值執行一運算。在諸多並行處理應用(諸如單指令多資料(SIMD)應用)中,多個ALU需要並行存取資料結構。因而,期望資料結構實施於具有多個讀取埠之一記憶體結構(例如一隨機存取記憶體(RAM)或唯讀記憶體(ROM))上。另外,儘管本發明主要涉及ALU經由一或多個讀取埠自資料結構讀取資料,但在其他實施例中,任何其他類型之電路或消費者可經由一或多個讀取埠自資料結構讀取資料。
圖1繪示根據一些實施例之包含具有多個讀取埠之一記憶體結構之一處理器之一方塊圖。處理器可為一積體電路(IC)器件。在一些實施例中,處理器係專用於張量處理之一處理器。處理器包含一多埠記憶體結構100及多個ALU 102。多埠記憶體結構100包含動態隨機存取記憶體(DRAM)胞或儲存由複數個ALU 102存取之一資料結構(例如一查找表)之其他類型之記憶體。在一些實施例中,資料結構與一函數相關聯,且將函數輸入值映射至函數輸出值。例如,資料結構實施一機器學習模型之一激活函數,諸如整流線性單元(RELU)函數、二元階躍函數、反正切函數或其他函數。
ALU 102可為一SIMD或其他並行處理器之部分,其中各ALU 102經組態以對不同輸入資料集執行相同算術運算。例如,各ALU 102接收一各自輸入資料集,且對儲存於記憶體結構100中之資料結構執行一或多次查找以基於與資料結構相關聯之函數來產生一各自輸出資料集。為使ALU 102並行運算,複數個ALU 102需要能夠同時存取記憶體結構100上之資料結構。例如,圖1繪示具有四個讀取埠104之記憶體結構100,讀取埠104各連接至四個不同ALU 102之一者。在一實施例中,各讀取埠具有其自身專用位址匯流排及其自身專用資料匯流排。ALU藉由將一位址提供至位址匯流排來經由一讀取埠讀取資料,且記憶體結構100自定位於該位址處之資料結構回傳資料。如本文所使用,「同時」可係指在一共同時間週期(例如一時脈循環)期間。例如,複數個ALU之各者可在一特定時脈循環期間將一讀取請求傳輸至記憶體結構100,其中所傳輸之讀取請求可被視為彼此同時。
在一些實施例中,可使用具有較少讀取埠之記憶體結構來建構具有多個讀取埠之一記憶體結構(諸如記憶體結構100)。例如,記憶體結構100可由各具有一單一讀取埠之複數個記憶體結構建構。圖2繪示根據一些實施例之具有一單一讀取埠之一記憶體結構。記憶體結構200儲存複數個資料輸入項(例如輸入項[0]至[n-1],其中n包括2或更大之一整數值)。因為記憶體結構200僅具有一單一讀取埠205,所以每次僅一單一ALU可存取由記憶體結構200含有之資料。
允許多個ALU並行存取記憶體結構200之資料之任何者之一實例性方式係跨多個單讀取埠記憶體結構複製資料(例如輸入項[0]至[n-1])。例如,可進行跨一第二單讀取埠記憶體結構複製結構200之資料以建構具有兩個讀取埠之一組合記憶體結構,該兩個讀取埠之各者可由一不同ALU獨立存取以提供原始結構中之資料之任何者之存取。然而,此組態亦使儲存資料所需之記憶量加倍,因為將跨兩個單埠記憶體結構複製輸入項[0]至[n-1]之各者。使用此類型之組態,為構建具有可通過2m
個讀取埠存取之n個輸入項之一記憶體結構,將需要儲存總共n*2m
個輸入項,其中m包括一正整數值。
2埠記憶體結構
圖3繪示根據一些實施例之具有兩個讀取埠之一記憶體結構。如圖3中所繪示,允許並行存取資料之n個輸入項(例如輸入項[0]至[n-1])之任何者之一2埠記憶體結構300由三個1埠記憶體結構構建。各1埠記憶體結構含有一表或儲存原始資料結構之資料輸入項之一半數目(例如n/2個輸入項)之其他資料結構。因而,與原始1埠記憶體結構(例如圖2中所繪示之1埠結構200)相比,2埠記憶體結構300將僅需要儲存50%以上輸入項,同時仍允許透過兩個讀取埠之任一者來同時存取所有n個輸入項。
2埠記憶體結構300包括儲存含有資料輸入項[0]至[n-1]之一第一半之一表之一第一1埠記憶體結構305A及儲存含有輸入項[0]至[n-1]之一第二半之一表之一第二1埠記憶體結構305B。為便於闡釋,資料輸入項之第一半亦可指稱「下」半部(例如輸入項[0]至[n/2-1]),而第二半亦可指稱「上」半部(例如輸入項[n/2]至[n-1])。因而,第一結構305A可指稱「下結構」,而第二結構305B可指稱「上結構」。
除下結構305A及上結構305B之外,2埠結構300進一步包括儲存n/2個輸入項之一第三1埠結構310 (下文中指稱「差異結構」),該等輸入項各指示下結構之一對應輸入項與上結構之一對應輸入項之間是否存在差異。例如,差異結構可儲存指示下結構之輸入項[0]與上結構之輸入項[n/2]之間的差異、輸入項[0]與[n/2+1]之間的差異等等之輸入項。可使用任何函數來判定差異,該函數允許僅使用對應差異之值及下半部或上半部之資料輸入項來判定另一半之一資料輸入項之值。例如,在一些實施例中,自下結構及上結構之對應輸入項之一互斥或(XOR)產生差異結構中之輸入項。因而,無需存取下結構,可使用對應上半部資料輸入項及XOR值來判定下半部之一特定資料輸入項之值。在其他實施例中,可使用除XOR之外之可逆函數來計算差異輸入項。
存取電路315包括將下結構305A、上結構305B及差異結構310之讀取埠映射至兩個不同讀取埠320A及320B (其等可分別指稱下讀取埠及上讀取埠)之一電路。各讀取埠320經組態以接收指定待讀取之一或多個輸入項之讀取位址之讀取請求。針對各讀取埠320,存取電路315包括一多工器(MUX) 325及一差異計算電路330。各差異計算電路330經組態以自差異結構310及下結構305A或上結構305B之一者接收對應輸入項之資料以自剩餘上結構305B或下結構305A計算一對應輸入項之值(諸如藉由實施一XOR運算或其他可逆函數)。例如,可自下結構305A之對應輸入項之一XOR及差異結構310 (例如輸入項[0]及輸入項([0] XOR [n/2]))判定上結構305B中之任何輸入項(例如輸入項[n/2])。因而,一特定讀取埠可藉由組合自下結構305A及差異結構310擷取之資料來提供對應於上結構305B之輸入項之資料,即使上結構305B不可用(例如歸因於由其他讀取埠存取)。類似地,當下結構305A不可用時,可藉由存取上結構305B及差異結構310來判定下結構305A之資料輸入項。
在一些實施例中,差異電路330包括:一第一差異電路330A,其經組態以使用下結構305A及差異結構310來判定上結構305B之輸入項值;及一第二差異電路330B,其經組態以使用上結構305B及差異結構310來判定下結構305A之輸入項值。第一差異電路330A及第二差異電路330B可分別指稱下差異電路及上差異電路。
MUX 325包括一下MUX 325A及一上MUX 325B,其等各經組態以在下結構305A (針對讀取請求自儲存輸入項之下半部請求一位址時)、上結構305A (針對讀取請求自儲存輸入項之上半部請求一位址時)及差異電路330A或330B之一者之輸出之間選擇且將選定輸出提供至一各自讀取埠320A/B。例如,下讀取埠320A接收連接至差異電路330A之下MUX 325A之一輸出,而上讀取埠320B接收連接至差異電路330B之上MUX 325B之一輸出。
在一些實施例中,一衝突控制電路335使用一優先權方案來判定讀取埠320A及320B之各者如何能夠存取由結構305A、305B及310儲存之資料輸入項。衝突控制電路335經組態以自對應於接收讀取請求之讀取埠接收位址,且藉由控制MUX 325A/B自各讀取埠320A/B應自其接收資料之結構選擇來執行任何同時接收請求之間的衝突解決。
例如,如上文所討論,讀取埠320可被標示為一下讀取埠320A及一上讀取埠320B。下讀取埠320A具有對下結構305A之「優先權」。因而,衝突控制電路335組態MUX 325A以透過下讀取埠320A自下結構305A直接讀取對下結構305A中之輸入項之所有請求。類似地,上讀取埠320B具有對上結構305B之「優先權」以透過上讀取埠320B自上結構305B直接讀取對上結構305B中之輸入項之所有請求。另外,衝突控制電路335可組態MUX 325A/B,使得每當各讀取埠320A/B未接收到自相同結構讀取資料之一同時讀取請求時,另一讀取埠可自其不具有優先權之下結構305A/上結構305B直接讀取。然而,若下讀取埠320A及上讀取埠320B兩者同時接收自上結構305B讀取一或多個輸入項之讀取,則衝突控制電路335組態MUX 325A,使得下讀取埠320A代以自差異計算電路330A之輸出讀取,其使用下結構305A之對應輸入項及差異結構310來判定上結構305B之請求輸入項之值。類似地,若下讀取埠320A及上讀取埠320B同時接收自下結構305A讀取一或多個輸入項之請求,則衝突控制電路335組態MUX 325B以引起上讀取埠320B自差異計算電路330B之輸出讀取。
儘管圖3繪示一特定存取電路組態,但應瞭解,在其他實施例中,其他存取電路組態係可行的。例如,在一些實施例中,讀取埠320A或320B能夠使用相對結構及差異結構來讀取下結構或上結構之資料輸入項。在一些實施例中,一存取電路可經組態以將複數個記憶體結構映射至兩個以上埠。2m 埠記憶體結構
上文所討論之使用1埠記憶體結構之2埠記憶體結構之建構可經外推以組裝具有額外數目之可用讀取埠(例如2m
個讀取埠)之結構。圖4繪示根據一些實施例之可使用三個不同2埠記憶體結構來組裝之一4埠記憶體結構之一圖式。4埠記憶體結構400由三個2埠記憶體結構(其包含一下2埠記憶體結構405A、一上2埠記憶體結構405B及一差異2埠記憶體結構410)建構。2埠記憶體結構405A、405B及410之各者可依類似於圖3中所繪示之2埠記憶體結構300之一方式建構(例如由三個1埠記憶體結構建構)。
為了討論,將由實施於4埠記憶體結構400上之表儲存之資料輸入項分成若干資料子集「A」、「B」、「C」及「D」,其等各對應於4埠結構400之全部資料輸入項之1/4。
第一2埠記憶體結構405A包括三個1埠記憶體結構,其等包括儲存含有資料子集「A」之一表之一下結構415A、儲存含有資料子集「B」之一表之一上結構415B及儲存指示資料子集「A」與「B」之間的差異(例如「A⊕B」)之一表之一差異結構415C。類似地,第二2埠記憶體結構405B包括儲存含有資料子集「C」之一表之一下結構420A、儲存含有資料子集「D」之一表之一上結構420B及儲存指示資料子集「C」與「D」之間的差異(例如「C⊕D」)之一表之一差異結構420C。因而,第一2埠記憶體結構405A及第二2埠記憶體結構405B可充當4埠記憶體結構400之一2埠下結構及一2埠上結構。第三2埠記憶體結構410充當第一2埠記憶體結構405A與第二2埠記憶體結構405B之間的一2埠差異結構,其包括儲存指示資料子集「A」與「C」之間的差異(例如「A⊕C」)之一表之一下結構425A、儲存指示資料子集「B」與「D」之間的差異(例如「B⊕D」)之一表之一上結構425B及儲存指示所有四個資料子集之間的差異(例如「(A⊕C)⊕(B⊕D)」)之一表之一差異結構425C。如圖4中所繪示,可使用一XOR運算來判定資料子集之間的差異。
2埠記憶體結構405A、405B及410之各者亦包括一各自存取電路430 (下文指稱子存取電路430 (例如子存取電路430A、430B及430C)),其結構可實質上類似於圖3中所繪示之存取電路315。
三個子存取電路430之各者之各埠連接至一存取電路435。例如,第一存取電路435A連接至各子存取電路430之下讀取埠,而第二存取電路435B連接至各子存取電路430之上讀取埠。各存取電路435A可具有實質上類似於圖3之存取電路315之一結構。由於各存取電路435具有兩個讀取埠,所以4埠記憶體結構400具有總共四個讀取埠440A、440B、440C及440D,其等各能夠並行存取資料子集「A」、「B」、「C」及「D」之任何者。
如圖4中所繪示,用於提供對n個資料輸入項之存取之4埠記憶體結構400可使用各儲存含有n/4個資料輸入項之一表之9個(或32
個) 1埠記憶體結構來建構,或建構為各儲存含有總共(3n/4)個資料輸入項之表之三個2埠記憶體結構。因此,4埠記憶體結構400儲存含有總共9n/4個資料輸入項之表。一般而言,使用上文所討論之建構方案,可使用儲存總共(3/2)m
*n個輸入項之上子結構、下子結構及差異子結構來建構經組態以具有用於提供對n個資料輸入項之並行存取之2m
個埠之一記憶體結構。相比而言,僅複製一1埠記憶體結構以提供額外埠將需要儲存2m
個埠之2m
*n個輸入項。
圖5繪示4埠記憶體結構之埠如何能夠並行存取由結構儲存之任何資料輸入項之一圖式。如上文所討論,由4埠記憶體結構儲存之資料輸入項可分成四個資料子集四分體:「A」、「B」、「C」及「D」,其等之各者可作為一表儲存於一單一1埠記憶體結構上。另外,4埠結構含有儲存指示一或多對資料子集之間的差異之表之5個額外1埠結構(例如儲存一對資料子集之間的差異之四個結構及儲存兩對資料子集之差異之一個結構)。因而,使用9個1埠記憶體結構(例如分組成3個2埠記憶體結構,如圖4中所繪示)來組裝4埠記憶體結構。
使用上述建構,一4埠記憶體結構之一讀取埠能夠使用四種不同方法之一者來存取一特定資料輸入項(例如資料子集「A」之一資料輸入項)以允許記憶體結構之所有四個讀取埠並行存取資料輸入項。使用第一方法502,一讀取埠可透過儲存含有資料子集「A」之表之1埠記憶體結構(例如圖4中所繪示之結構415A)來存取資料子集「A」。另一方面,剩餘方法504、506及508需要藉由存取複數個其他記憶體結構來重建資料子集「A」。例如,讀取埠可使用第二方法504來存取儲存含有資料子集「B」(結構41B)及資料子集「A」與「B」之間的差異(結構415C)之表之記憶體結構以判定資料子集「A」之輸入項。替代地,使用第三方法506,埠可存取儲存含有資料子集「C」(結構420A)及「A」與「C」之間的差異(結構425A)之表之記憶體結構以判定資料子集「A」之輸入項。使用第四方法508,埠存取儲存含有資料子集「D」(結構420B)、「C」與「D」之間的差異(結構420C)、「B」與「D」之間的差異(結構425B)及所有四個資料子集之間的差異(結構425C)之表之記憶體結構以判定資料子集「A」之輸入項。亦可依一類似方式各使用四種不同方法之一者來判定剩餘資料子集「B」、「C」及「D」之各者。因此,可在四個讀取埠之各者處並行存取或判定來自資料子集之任何者之任何資料。
上述技術及建構可經進一步外推以建構具有2m
個讀取埠之記憶體結構。圖6繪示根據一些實施例之由三個2m-1
埠結構建構之具有2m
個讀取埠之一記憶體結構。使用包括一下結構605A、一上結構605B及一差異結構610之三個2m-1
埠記憶體結構來建構用於提供對n個資料輸入項之存取之各2m
埠記憶體結構。各2m-1
埠記憶體結構提供對n/2個資料輸入項之存取。例如,n個資料輸入項之下半部儲存於下結構605A中,n個資料輸入項之上半部儲存於上結構605B中,且差異結構610儲存對應下半部輸入項與上半部輸入項之間的差異。
2m-1
埠記憶體結構之2m-1
個埠之各者映射至一存取電路615 (例如存取電路615-1至615-2m-1
)。例如,三個2m-1
個埠記憶體結構之各者之一第一埠映射至一第一存取電路615-1,三個2m-1
個埠記憶體結構之各者之一第二埠映射至一第二存取電路615-2等等,直至存取電路615-2m-1
。
各存取電路615含有兩個讀取埠625 (例如一下讀取埠及一上讀取埠625-1及625-2…625-(2m-1
-1)及625-2m
-1)),其等各能夠直接存取2m-1
埠下結構605A及2m-1
埠上結構605B或使用差異結構610及相對結構來判定下結構或上結構之資料輸入項之值。例如,各存取電路可經組態使得其各自下讀取埠總是能夠直接存取下子表605A,但在各自上讀取埠需要同時存取上子表605B時使用下子表605A及差異子表610來判定上子表605B中之輸入項之值。類似地,上讀取埠總是能夠存取上子表605B,但在下讀取埠同時存取下子表605A時使用上子表605B及差異子表610來判定下子表605A中之輸入項之值。
因此,如圖6中所繪示,2m
埠記憶體結構將包括映射至三個2m-1
埠記憶體結構之各者之2m-1
個存取電路。由於各存取電路615含有2個埠,所以總共2m
個埠可用。此允許2m
埠結構使用(3/2)m
*n個輸入項來建構。
儘管本文所描述之技術主要討論使用1埠記憶體結構來建構具有多個讀取埠之記憶體結構,但應瞭解,在其他實施例中,具有一個以上讀取埠(例如2個讀取埠、3個讀取埠等等)之記憶體結構可用於建構具有額外讀取埠之記憶體結構。例如,各具有k個讀取埠之三個記憶體結構可用於建構使用上述組態之具有高達2k個讀取埠之一記憶體結構。
另外,所建構之記憶體結構不必受限於2m
個埠。例如,若記憶體結構之一特定層級含有不是2之一冪之一埠數目,則一後續層級亦可具有不是2之一冪之一埠數目(例如,三個3埠記憶體結構可用於建構一6埠記憶體結構)。另外,可在一給定層級處使用較少存取電路以減少可用讀取埠之總數。例如,參考圖6,可使用小於(m-1)個存取電路,使得不是各2m-1
埠子結構之每個埠映射至一存取電路615以導致小於2m
個總讀取埠。
儘管上述實例繪示使用儲存資料子集之兩個子結構(例如下半部及上半部)來建構之一多讀取埠記憶體結構之各層級,但應瞭解,在其他實施例中,可使用不同數目個子結構。例如,在一些實施例中,資料輸入項可劃分於三個子結構與一差異子結構之間。可使用一不同運算(諸如addition mod 3)來替代對應於一XOR運算之差異。在一些實施例中,一存取電路可經組態以將複數個子結構連接至兩個以上埠及控制對複數個子結構之存取。
寫入資料
由複數個組成記憶體結構(例如圖2中所描述之1埠記憶體結構200)建構之一多讀取埠記憶體結構(例如圖6中所描述之2m
埠記憶體結構600)可被視為包括複數個層級。例如,由複數個1埠記憶體結構建構之一2m
埠記憶體結構可包括m個層級,各層級包括各具有2m-k
個讀取埠之3k
個記憶體結構,其中k指示一層級且對應於1至m之間的一整數。例如,參考圖4中所繪示之4埠記憶體結構400,記憶體結構400具有含有三個2埠記憶體結構之一k=1層級及含有9個1埠記憶體結構之一k=2層級。
當將資料寫入至一2m
埠記憶體結構中時,使用一遞歸寫入程序以使待寫入之資料反映於結構之所有層級中。例如,參考圖4中所繪示之組態,為將新資料寫入至一特定資料子集(例如資料子集「B」)中,需要將資料寫入至2埠下結構405A及差異結構410。在2埠下結構405A內,將資料寫入至上結構415B (含有儲存資料子集「B」之表)。另外,亦重新計算差異結構415C (儲存(A⊕B))之資料。另外,在2埠差異結構410內,亦需要重新計算上結構425B (儲存(B⊕D))及差異結構425C (儲存(A⊕C)⊕(B⊕D))內之資料。額外組態資訊
已為了說明而呈現本發明之實施例之以上描述;其不意欲具窮舉性或使本發明受限於所揭示之精確形式。熟習相關技術者應瞭解,可鑑於依據上述揭示內容來進行諸多修改及變動。
本描述之一些部分從演算法及對資訊之運算之符號表示方面描述本發明之實施例。此等演算法描述及表示常由熟習資料處理技術者用於將其工作之實質有效傳達給其他熟習技術者。當從功能、計算或邏輯上描述時,此等運算應被理解為由電腦程式或等效電路、微碼或其類似者實施。此外,有時亦證明,將運算之此等配置指稱模組係方便的,且不失一般性。所描述之運算及其相關聯模組可體現為軟體、韌體、硬體或其等之任何組合。
可使用一或多個硬體或軟體模組單獨或與其他器件組合執行或實施本文所描述之步驟、運算或程序之任何者。在一實施例中,一軟體模組使用包括含有電腦程式碼之一電腦可讀媒體之一電腦程式產品來實施,電腦程式碼可由一電腦處理器執行以執行所描述之步驟、運算或程序之任何者或全部。
本發明之實施例亦可關於用於執行本文運算之一裝置。此裝置可專為所需用途建構,及/或其可包括由儲存於電腦中之一電腦程式選擇性啟動或重新組態之一通用計算器件。此一電腦程式可儲存於一非暫時性、有形電腦可讀儲存媒體或適合於儲存電子指令之任何類型之媒體(其可耦合至一電腦系統匯流排)中。此外,本說明書中所提及之任何計算系統可包含一單一處理器或可為採用針對增加計算能力之多個處理器設計之架構。
本發明之實施例亦可關於由本文所描述之一計算程序產生之一產品。此一產品可包括源自一計算程序之資訊,其中資訊儲存於一非暫時性、有形電腦可讀儲存媒體上且可包含一電腦程式產品或本文所描述之其他資料組合之任何實施例。
最後,已主要為了可讀性及教學而選擇本說明書中所使用之用語,且其未被選擇用於定界或限定本發明標的。因此,本發明之範疇不意欲受限於[實施方式],而是受限於發佈於由基於此之一申請案上之任何請求項。因此,實施例之揭示內容意欲說明而非限制以下申請專利範圍中所闡述之本發明之範疇。
100:多埠記憶體結構
102:算術邏輯單元(ALU)
104:讀取埠
200:1埠記憶體結構
205:讀取埠
300:2埠記憶體結構
305A:第一1埠記憶體結構/下結構
305B:第二1埠記憶體結構/上結構
310:第三1埠結構/差異結構
315:存取電路
320:存取電路
320A:下讀取埠
320B:上讀取埠
325:多工器(MUX)
325A:下MUX
325B:上MUX
330:差異電路
330A:第一差異電路
330B:第二差異電路
335:衝突控制電路
400:4埠記憶體結構
405A:下2埠記憶體結構/第一2埠記憶體結構
405B:上2埠記憶體結構/第二2埠記憶體結構
410:差異2埠記憶體結構/第三2埠記憶體結構
415A:下結構
415B:上結構
415C:差異結構
420A:下結構
420B:上結構
420C:差異結構
425A:下結構
425B:上結構
425C:差異結構
430:子存取電路
430A:子存取電路
430B:子存取電路
430C:子存取電路
435:存取電路
435A:第一存取電路
435B:第二存取電路
440A:讀取埠
440B:讀取埠
440C:讀取埠
440D:讀取埠
502:第一方法
504:第二方法
506:第三方法
508:第四方法
600:2m
埠記憶體結構
605A:下結構/下子表
605B:上結構/上子表
610:差異結構/差異子表
615:存取電路
615-1至615-2m-1
:存取電路
625:讀取埠
625-1至625-2m-1
:讀取埠
圖1繪示根據一些實施例之具有含多個讀取埠之一記憶體結構之一處理器之一方塊圖。
圖2繪示根據一些實施例之具有一單一讀取埠之一記憶體結構。
圖3繪示根據一些實施例之具有兩個讀取埠之一記憶體結構。
圖4繪示根據一些實施例之可使用三個不同2埠結構來組裝之一4埠結構之一圖式。
圖5繪示4埠結構之埠如何能夠並行存取結構之任何資料輸入項之一圖式。
圖6繪示根據一些實施例之由三個2m-1
埠結構建構之具有2m
個讀取埠之一結構。
圖式僅為了說明而描繪本發明之實施例。熟習技術者應易於自以下描述認識到,可在不背離本文所描述之本發明之原理或惠誉之情況下採用本文所繪示之結構及方法之替代實施例。
100:多埠記憶體結構
102:算術邏輯單元(ALU)
104:讀取埠
Claims (15)
- 一種記憶體,其經組態以允許來自高達2m 個輸出讀取埠之各者之一資料結構之同時讀取請求,其中m為大於1之一整數,該記憶體包括: 複數個記憶體結構,其各者具有2m-1 個讀取埠,其中該複數個記憶體結構包括一第一記憶體結構集(first set of memory structures),其各者儲存該資料結構之至少一個別子集,及儲存對應於具一第一結構之資料之差異資料之一差異記憶體結構,及該第一記憶體結構集之一剩餘結構,且其中由該複數個記憶體結構之一個別記憶體結構所儲存之資料之該子集之任意者可同時經由該記憶體結構之該個別2m-1 個讀取埠而被並行(in parallel)讀取;及 一存取電路集,每一存取電路連接至該複數個記憶體結構之各者之該2m-1 個讀取埠之一個別讀取埠且具有具該高達2m 個輸出讀取埠之第一及第二輸出讀取埠,且其經組態以藉由將資料自該第一結構傳遞(pass)至該第一輸出讀取埠且同時將使用該差異記憶體結構及該剩餘結構所重建之資料傳遞至該第二輸出讀取埠以滿足用於來自該第一及該第二輸出讀取埠二者之來自該第一結構之資料之同時讀取請求。
- 如請求項1之記憶體,其中該存取電路集包括2m-1 個存取電路。
- 如請求項1之記憶體,其中: 該複數個記憶體結構包括經由一存取電路結構連接至該存取電路集之複數個單埠記憶體(single-port memories),該複數個單埠記憶體包括單埠記憶體之一第一部分及單埠記憶體之一第二部分,單埠記憶體之該第一部分儲存該資料結構之資料,單埠記憶體之該第二部分儲存該第一部分之至少二個單埠記憶體之間的差異資料,且 其中該存取電路集及該存取電路結構係經組態以藉由將來自該複數個單埠記憶體之一經選擇單埠記憶體之資料傳遞至多個差異輸出讀取埠之一相對應經映射輸出讀取埠且使用該第一部分之至少一其他單埠記憶體與該第二部分之至少一單埠記憶體之一差異組合而重建該經選擇單埠記憶體之資料而滿足來自該多個差異輸出讀取埠的每一剩餘同時讀取請求,藉以滿足用於來自該多個差異輸出讀取埠之來自該複數個單埠記憶體之該經選擇單埠記憶體之資料之同時讀取請求。
- 如請求項1之記憶體,其中該存取電路集之每一存取電路具有耦合至該第一記憶體結構、該差異結構及該剩餘結構之個別讀取埠之三個輸入埠。
- 如請求項1之記憶體,其中該存取電路集之每一存取電路包括: 一第一差異計算電路,其連接至該第一輸出讀取埠且經組態以使用該第一結構及該差異結構之對應部分以重建該剩餘結構之資料,及 一第二差異計算電路,其連接至該第二輸出讀取埠且經組態以使用該剩餘結構及該差異結構之對應部分以重建該第一結構之資料; 其中該存取電路係經組態以: 回應於該第一及該第二輸出讀取埠二者在一相同時脈循環期間接收讀取請求以讀取經儲存於該剩餘結構上之資料,自該剩餘結構提供資料以滿足來自於該第二輸出讀取埠之該讀取請求,及使用連接至該第一輸出讀取埠之該第一差異電路而重建該剩餘結構之經請求資料以同時滿足來自該第一經映射讀取埠之該讀取請求,及 回應於該第一及該第二輸出讀取埠二者在一相同時脈循環期間接收讀取請求以讀取經儲存於該第一結構上之資料,自該第一結構提供經請求資料以滿足來自於該第一輸出讀取埠之該讀取請求,及使用連接至該第二經映射讀取埠之該第二差異電路而重建該第一結構之經請求資料以同時滿足來自該第二經映射讀取埠之該讀取請求。
- 如請求項5之記憶體,其中該存取電路係經組態以回應於在一相同時脈循環期間無自該第二輸出讀取埠所接收之從該第二結構讀取之讀取請求而允許其第一輸出讀取埠自該第二結構讀取經請求資料,且回應於在一相同時脈循環期間無自該第一經映射讀取埠所接收之從該第一結構讀取之讀取請求而允許該第二輸出讀取埠自該第一結構讀取經請求資料。
- 如請求項1之記憶體,其中該差異資料包括在儲存於該第一結構及該剩餘結構中之資料之對應部分之間的XOR值。
- 如請求項1之記憶體,其中資料之該個別子集係與一函數相關聯,且其中該存取電路集之該等輸出讀取埠係經組態以並行接收該等讀取請求作為一單指令多資料(SIMD)應用之部分。
- 一種用於經由高達2m 個輸出讀取埠自一記憶體並行讀取資料之方法,其包括: 在複數個算術邏輯單元(ALU)之各者處接收待由第一ALU及第二ALU處理之輸入資料; 基於該經接收輸入資料而在該複數個ALU處產生個別讀取請求以自該記憶體擷取資料,該記憶體至少包括: 複數個記憶體結構,其各者具有2m-1 個讀取埠,其中該複數個記憶體結構包括一第一記憶體結構集,其各者儲存該資料結構之至少一個別子集,及儲存對應於具一第一結構之資料之差異資料之一差異記憶體結構,及該第一記憶體結構集之一剩餘結構,且其中由該複數個記憶體結構之一個別記憶體結構所儲存之資料之該子集之任意者可同時經由該記憶體結構之該個別2m-1 個讀取埠之任意者而被並行讀取;及 一存取電路集,每一存取電路連接至該複數個記憶體結構之各者之該2m-1 個讀取埠之一個別讀取埠且具有具該高達2m 個輸出讀取埠之第一及第二輸出讀取埠,且其經組態以藉由將資料自該第一結構傳遞至該第一輸出讀取埠且同時將使用該差異記憶體結構及該剩餘結構所重建之資料傳遞至該第二輸出讀取埠以滿足用於來自該第一及該第二輸出讀取埠二者之來自該第一結構之資料之同時讀取請求。
- 如請求項9之方法,其中該存取電路集包括2m-1 個存取電路。
- 如請求項9之方法,其中: 該複數個記憶體結構包括經由一存取電路結構連接至該存取電路集之複數個單埠記憶體,該複數個單埠記憶體包括單埠記憶體之一第一部分及單埠記憶體之一第二部分,單埠記憶體之該第一部分儲存該資料結構之資料,單埠記憶體之該第二部分儲存該第一部分之至少二個單埠記憶體之間的差異資料,且 其中該存取電路集及該存取電路結構係經組態以藉由將來自該複數個單埠記憶體之一經選擇單埠記憶體之資料傳遞至多個差異輸出讀取埠之一相對應經映射輸出讀取埠且使用該第一部分之至少一其他單埠記憶體與該第二部分之至少一單埠記憶體之一差異組合而重建該經選擇單埠記憶體之資料而滿足來自該多個差異輸出讀取埠的每一剩餘同時讀取請求,藉以滿足用於來自該多個差異輸出讀取埠之來自該複數個單埠記憶體之該經選擇單埠記憶體之資料之同時讀取請求。
- 如請求項9之方法,其中該存取電路集之每一存取電路具有耦合至該第一記憶體結構、該差異結構及該剩餘結構之個別讀取埠之三個輸入埠。
- 如請求項9之方法,其中該存取電路集之每一存取電路包括: 一第一差異計算電路,其連接至該第一輸出讀取埠且經組態以使用該第一結構及該差異結構之對應部分以重建該剩餘結構之資料,及 一第二差異計算電路,其連接至該第二輸出讀取埠且經組態以使用該剩餘結構及該差異結構之對應部分以重建該第一結構之資料;及 其中該方法進一步包括: 回應於該第一及該第二輸出讀取埠二者在一第一時間週期期間接收讀取請求以讀取來自經儲存於該剩餘結構上之資料,自該剩餘結構提供資料以滿足來自於該第二輸出讀取埠之該讀取請求,及使用連接至該第一輸出讀取埠之該第一差異電路而重建該剩餘結構之經請求資料以同時滿足來自該第一經映射讀取埠之該讀取請求,及 回應於該第一及該第二輸出讀取埠二者在一第二時間週期期間接收讀取請求以讀取經儲存於該第一結構上之資料,自該第一結構揭供經請求資料以滿足來自於該第一輸出讀取埠之該讀取請求,及使用連接至該第二經映射讀取埠之該第二差異電路而重建該第一結構之經請求資料以同時滿足來自該第二經映射讀取埠之該讀取請求。
- 如請求項9之方法,其中該差異資料包括在儲存於該第一結構及該剩餘結構中之資料之對應部分之間的XOR值。
- 一種處理器,其包括: 複數個算術邏輯單元(ALU),其各者經組態以實施一數學函數; 一記憶體,其儲存表示不同輸入值之該數學函數之輸出之資料,且具有與該複數個ALU通信之高達2m 個輸出讀取埠,各ALU藉由經由一對應讀取埠發送用於該儲存資料之部分之讀取請求來實施該數學函數,該記憶體結構包括: 複數個記憶體結構,其各者具有2m-1 個讀取埠,其中該複數個記憶體結構包括一第一記憶體結構集,其各者儲存該資料結構之至少一個別子集,及儲存對應於具一第一結構之資料之差異資料之一差異記憶體結構,及該第一記憶體結構集之一剩餘結構,且其中由該複數個記憶體結構之一個別記憶體結構所儲存之資料之該子集之任意者可同時經由該記憶體結構之該個別2m-1 個讀取埠而被並行讀取;及 一存取電路集,每一存取電路連接至該複數個記憶體結構之各者之該2m-1 個讀取埠之一個別讀取埠且具有該高達2m 個輸出讀取埠之第一及第二輸出讀取埠,且其經組態以藉由將資料自該第一結構傳遞至該第一輸出讀取埠且同時將使用該差異記憶體結構及該剩餘結構所重建之資料傳遞至該第二輸出讀取埠以滿足用於來自該第一及該第二輸出讀取埠二者之來自該第一結構之資料之同時讀取請求。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110101104A TWI751882B (zh) | 2019-03-22 | 2019-03-22 | 具有多讀取埠之資料結構、處理器、及用於具有多讀取埠之資料結構之方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW110101104A TWI751882B (zh) | 2019-03-22 | 2019-03-22 | 具有多讀取埠之資料結構、處理器、及用於具有多讀取埠之資料結構之方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW202117538A TW202117538A (zh) | 2021-05-01 |
TWI751882B true TWI751882B (zh) | 2022-01-01 |
Family
ID=77020922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW110101104A TWI751882B (zh) | 2019-03-22 | 2019-03-22 | 具有多讀取埠之資料結構、處理器、及用於具有多讀取埠之資料結構之方法 |
Country Status (1)
Country | Link |
---|---|
TW (1) | TWI751882B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040215679A1 (en) * | 2003-04-23 | 2004-10-28 | Mark Beaumont | Method for finding global extrema of a set of shorts distributed across an array of parallel processing elements |
US6988181B2 (en) * | 2000-03-08 | 2006-01-17 | Sun Microsystems, Inc. | VLIW computer processing architecture having a scalable number of register files |
US20160328158A1 (en) * | 2015-05-07 | 2016-11-10 | Marvell Israel (M.I.S.L) Ltd. | Multi-bank memory with multiple read ports and multiple write ports per cycle |
US20180267932A1 (en) * | 2017-03-14 | 2018-09-20 | Jianbin Zhu | Shared Memory Structure for Reconfigurable Parallel Processor |
-
2019
- 2019-03-22 TW TW110101104A patent/TWI751882B/zh active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6988181B2 (en) * | 2000-03-08 | 2006-01-17 | Sun Microsystems, Inc. | VLIW computer processing architecture having a scalable number of register files |
US20040215679A1 (en) * | 2003-04-23 | 2004-10-28 | Mark Beaumont | Method for finding global extrema of a set of shorts distributed across an array of parallel processing elements |
US20160328158A1 (en) * | 2015-05-07 | 2016-11-10 | Marvell Israel (M.I.S.L) Ltd. | Multi-bank memory with multiple read ports and multiple write ports per cycle |
US20180267932A1 (en) * | 2017-03-14 | 2018-09-20 | Jianbin Zhu | Shared Memory Structure for Reconfigurable Parallel Processor |
Also Published As
Publication number | Publication date |
---|---|
TW202117538A (zh) | 2021-05-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11875874B2 (en) | Data structures with multiple read ports | |
CN112926022A (zh) | 用于在存储器阵列内执行分集矩阵运算的方法及设备 | |
KR20160039687A (ko) | 독립적으로 자체 어드레스를 갖는 메모리 어레이 어드레스 공간들 | |
TW201706855A (zh) | 記憶體中之轉譯後備緩衝器 | |
US20130346696A1 (en) | Method and apparatus for providing shared caches | |
JP2018073452A5 (zh) | ||
KR20170008999A (ko) | 메모리 시스템 및 메모리의 동작 방법 | |
TWI751882B (zh) | 具有多讀取埠之資料結構、處理器、及用於具有多讀取埠之資料結構之方法 | |
FR3042050A1 (zh) | ||
US20240103755A1 (en) | Data processing system and method for accessing heterogeneous memory system including processing unit | |
US11288188B1 (en) | Dynamic metadata relocation in memory | |
TWI719433B (zh) | 具有多讀取埠之資料結構、處理器、及用於具有多讀取埠之資料結構之方法 | |
US20030191922A1 (en) | Method and system for local memory addressing in single instruction, multiple data computer system | |
US20200293452A1 (en) | Memory device and method including circular instruction memory queue | |
WO2020185239A1 (en) | Data structures with multiple read ports | |
US11868875B1 (en) | Data selection circuit | |
JPH01283676A (ja) | ウインドウ画像データの読出処理方式 | |
CN115862704A (zh) | 存储器装置 | |
JP3151788B2 (ja) | 矩形原画像の回転方法 | |
JPH02173858A (ja) | マルチプロセツサ・システムに於いて多数のメモリ位置にアドレスを指定するための方法及び装置 | |
JP2009516248A (ja) | テーブルルックアップ乗算器 | |
CN111291884A (zh) | 神经网络剪枝方法、装置、电子设备及计算机可读介质 | |
KR20230020876A (ko) | 인 메모리 컴퓨팅을 통해 컨벌루션 뉴럴 네트워크 연산을 수행하는 방법 | |
US20210357321A1 (en) | Two-way interleaving in a three-rank environment | |
US20050240715A1 (en) | K-way direct mapped cache |