TW202301125A - 具有以記憶體為基礎的分散式處理器架構的記憶體晶片 - Google Patents

具有以記憶體為基礎的分散式處理器架構的記憶體晶片 Download PDF

Info

Publication number
TW202301125A
TW202301125A TW111132554A TW111132554A TW202301125A TW 202301125 A TW202301125 A TW 202301125A TW 111132554 A TW111132554 A TW 111132554A TW 111132554 A TW111132554 A TW 111132554A TW 202301125 A TW202301125 A TW 202301125A
Authority
TW
Taiwan
Prior art keywords
memory
processor
data
banks
bank
Prior art date
Application number
TW111132554A
Other languages
English (en)
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 TW202301125A publication Critical patent/TW202301125A/zh

Links

Images

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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/1016Error in accessing a memory location, i.e. addressing error
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • G06F11/102Error in check bits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/1608Error detection by comparing the output signals of redundant hardware
    • G06F11/1616Error detection by comparing the output signals of redundant hardware where the redundant component is an I/O device or an adapter therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1652Handling requests for interconnection or transfer for access to memory bus based on arbitration in a multiprocessor architecture
    • G06F13/1657Access to multiple memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8038Associative processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3889Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by multiple instructions, e.g. MIMD, decoupled access or execute
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • G11C11/1655Bit-line or column circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1653Address circuits or decoders
    • G11C11/1657Word-line or row circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/02Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements
    • G11C11/16Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using magnetic elements using elements in which the storage effect is based on magnetic spin effect
    • G11C11/165Auxiliary circuits
    • G11C11/1675Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/4076Timing circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/408Address circuits
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C11/00Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
    • G11C11/21Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements
    • G11C11/34Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices
    • G11C11/40Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors
    • G11C11/401Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using electric elements using semiconductor devices using transistors forming cells needing refreshing or charge regeneration, i.e. dynamic cells
    • G11C11/4063Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing
    • G11C11/407Auxiliary circuits, e.g. for addressing, decoding, driving, writing, sensing or timing for memory cells of the field-effect type
    • G11C11/409Read-write [R-W] circuits 
    • G11C11/4093Input/output [I/O] data interface arrangements, e.g. data buffers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1072Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers for memories with random access ports synchronised on clock signal pulse trains, e.g. synchronous memories, self timed memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F2015/761Indexing scheme relating to architectures of general purpose stored programme computers
    • G06F2015/765Cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computing Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Artificial Intelligence (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Memory System (AREA)
  • Multi Processors (AREA)
  • Microcomputers (AREA)
  • Advance Control (AREA)
  • Hardware Redundancy (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本發明包括分散式處理器及用於編譯程式碼以供該等分散式處理器執行的方法。在一個實施中,一分散式處理器可包括:一基板;安置於該基板上之一記憶體陣列;及安置於該基板上之一處理陣列。該記憶體陣列可包括複數個離散記憶體組,且該處理陣列可包括複數個處理器子單元,該等處理器子單元中之每一者與該複數個離散記憶體組之一對應的專屬記憶體組相關聯。該分散式處理器可進一步包括:第一複數個匯流排,每一匯流排將該複數個處理器子單元中之一者連接至其對應的專屬記憶體組;及第二複數個匯流排,每一匯流排將該複數個處理器子單元中之一者連接至該複數個處理器子單元中之另一者。

Description

具有以記憶體為基礎的分散式處理器架構的記憶體晶片
相關申請之交叉參考
本申請案主張以下各者之優先權權利:2017年7月30日申請的美國臨時專利申請案第62/538,722號、2017年7月30申請的美國臨時專利申請案第62/538,724號及2017年8月23日申請的美國臨時專利申請案第62/548,990號。所有前述申請案係以全文引用之方式併入本文中。
本發明大體上係關於用於促進記憶體密集型操作之設備。詳言之,本發明係關於包括耦接至專屬記憶體組之處理元件的硬體晶片。
隨著處理器速度及記憶體大小均繼續增大,有效處理速度之明顯侷限性係馮諾依曼(von Neumann)瓶頸。馮諾依曼瓶頸由產生於習知電腦架構之輸送量限制造成。詳言之,與由處理器進行之實際計算相比,自記憶體至處理器之資料傳送常常受阻。因此,用以自記憶體讀取及寫入的時脈循環之數目由於記憶體密集型程序而顯著增大。此等時脈循環導致較低的有效處理速度,此係因為自記憶體之讀取及寫入消耗不能用於對資料執行操作的時脈循環。此外,處理器之計算頻寬通常大於處理器用於存取記憶體之匯流排的頻寬。
此等瓶頸對於以下各者特別地顯著:記憶體密集型程序,諸如神經網路及其他機器學習演算法;資料庫建構、索引搜尋及查詢;及包括比資料處理操作多的讀取及寫入操作之其他任務。
另外,可用數位資料之量及粒度的快速增長已產生開發機器學習演算法之機會且已實現新技術。然而,此亦為資料庫及平行計算之世界帶來棘手之挑戰。舉例而言,社交媒體及物聯網(IoT)之出現以記錄速率產生數位資料。此新資料可用以建立用於多種用途之演算法,範圍為新廣告技術至工業程序之更精確控制方法。然而,該新資料難以儲存、處理、分析及處置。
新資料資源可為大規模的,有時為大約千萬億至澤塔(zetta)位元組。此外,此等資料資源之生長速率可超過資料處理能力。因此,資料科學家已致力於平行資料處理技術,以應對此等挑戰。在努力提高計算能力且處置大量資料的過程中,科學家已嘗試建立能夠進行平行密集型計算之系統及方法。但此等現有系統及方法跟不上資料處理要求,常常係因為所使用之技術受該等技術對用於資料管理、整合分隔資料及分析分段資料之額外資源的需求限制。
為了促進對巨大資料集之操控,工程師及科學家現在設法改良用以分析資料之硬體。舉例而言,新的半導體處理器或晶片(諸如本文中所描述之半導體處理器或晶片)可藉由在以更適合記憶體操作而非算術計算之技術製造的單一基板中併入記憶體及處理功能而特別針對資料密集型任務設計。利用特別針對資料密集型任務設計之積體電路,有可能滿足新的資料處理要求。儘管如此,應對巨大資料集之資料處理的此新方法需要解決晶片設計及製造中之新問題。舉例而言,若針對資料密集型任務設計之新晶片係利用用於普通晶片之製造技術及架構製造,則該等新晶片會具有差效能及/或不可接受之良率。另外,若該等新晶片經設計以利用當前資料處置方法進行操作,則該等新晶片會具有差效能,此係因為當前方法可限制晶片處置平行操作的能力。
本發明描述用於減少或克服先前技術中之其他問題當中的上文所闡述之問題中之一或多者的解決方案。
符合本發明之實施例提供包括硬體處理晶片之設備。所揭示實施例可使用與處理元件配對之專屬記憶體組以提供比習知處理器更高效的有效處理速度。舉例而言,符合所揭示實施例,所揭示晶片可包括處於每一處理元件與其對應的記憶體組之間的專屬匯流排。另外,所揭示晶片可不含控制處理元件之間的資料傳送之時序的仲裁器及/或其他硬體。其他所揭示的非暫時性電腦可讀媒體可儲存用於將較高層級指令編譯成由本文中所揭示之硬體晶片執行的較低層級指令的指令。
本發明之一些實施例包括一種分散式處理器,其包含:一基板;安置於該基板上之一記憶體陣列,該記憶體陣列包括複數個離散記憶體組;安置於該基板上之一處理陣列,該處理陣列包括複數個處理器子單元,該等處理器子單元中之每一者與該複數個離散記憶體組之一對應的專屬記憶體組相關聯;第一複數個匯流排,每一匯流排將該複數個處理器子單元中之一者連接至其對應的專屬記憶體組;及第二複數個匯流排,每一匯流排將該複數個處理器子單元中之一者連接至該複數個處理器子單元中之另一者。
符合本發明之其他實施例包括一種記憶體晶片,其包含:一基板;安置於該基板上之一記憶體陣列,該記憶體陣列包括複數個離散記憶體組;安置於該基板上之一處理陣列,該處理陣列包括複數個位址產生器,該等位址產生器中之每一者與該複數個離散記憶體組之一對應的專屬記憶體組相關聯;及複數個匯流排,每一匯流排將該複數個位址產生器中之一者連接至其對應的專屬記憶體組。
符合本發明之另一實施例可包括一種分散式處理器,其包含:一基板;安置於該基板上之一記憶體陣列,該記憶體陣列包括複數個離散記憶體組,其中該等離散記憶體組中之每一者具有大於一百萬位元組之一容量;及安置於該基板上之一處理陣列,該處理陣列包括複數個處理器子單元,該等處理器子單元中之每一者與該複數個離散記憶體組之一對應的專屬記憶體組相關聯。
符合本發明之另外其他實施例可包括一種分散式處理器,其包含:一基板;安置於該基板上之一記憶體陣列,該記憶體陣列包括複數個離散記憶體組;及安置於該基板上之一處理陣列,該處理陣列包括複數個處理器子單元,該等處理器子單元中之每一者與該複數個離散記憶體組之一對應的專屬記憶體組相關聯;及複數個匯流排,該複數個匯流排中之每一者將該複數個處理器子單元中之一者連接至該複數個處理器子單元中之至少另一者,其中該複數個匯流排不含時序硬體邏輯組件,以使得處理器子單元之間及跨該複數個匯流排之對應匯流排的資料傳送不受時序硬體邏輯組件控制。
其他實施例可包括一種在一記憶體晶片上之分散式處理器,其包含:一基板;安置於該基板上之一記憶體陣列,該記憶體陣列包括複數個離散記憶體組;及安置於該基板上之一處理陣列,該處理陣列包括複數個處理器子單元,該等處理器子單元中之每一者與該複數個離散記憶體組之一對應的專屬記憶體組相關聯;及複數個匯流排,該複數個匯流排中之每一者將該複數個處理器子單元中之一者連接至該複數個離散記憶體組之一對應的專屬記憶體組,其中該複數個匯流排不含時序硬體邏輯組件,以使得一處理器子單元與該複數個離散記憶體組之一對應的專屬記憶體組之間及跨該複數個匯流排之一對應匯流排的資料傳送不受時序硬體邏輯組件控制。
其他實施例可包括一種分散式處理器,其包含:一基板;安置於該基板上之一記憶體陣列,該記憶體陣列包括複數個離散記憶體組;及安置於該基板上之一處理陣列,該處理陣列包括複數個處理器子單元,該等處理器子單元中之每一者與該複數個離散記憶體組之一對應的專屬記憶體組相關聯;及複數個匯流排,該複數個匯流排中之每一者將該複數個處理器子單元中之一者連接至該複數個處理器子單元中的至少另一者,其中該複數個處理器子單元經組態以執行控制跨該複數個匯流排的資料傳送之時序以避免碰撞該複數個匯流排中之至少一者上的資料傳送之軟體。
其他實施例可包括一種在一記憶體晶片上之分散式處理器,其包含:一基板;安置於該基板上之複數個處理器子單元,每一處理器子單元經組態以獨立於其他處理器子單元執行一系列之指令,每一系列之指令定義待由一單一處理器子單元執行的一系列之任務;安置於該基板上之複數個對應記憶體組,該複數個處理器子單元中之每一者連接至不被該複數個處理器子單元之任何其他處理器子單元共用的至少一個專屬記憶體組;及複數個匯流排,該複數個匯流排中之每一者將該複數個處理器子單元中之一者連接至該複數個處理器子單元中的至少一個其他處理器子單元,其中該複數個匯流排中之至少一者上的資料傳送係藉由包括於連接至該複數個匯流排中之該至少一者之一處理器子單元中的該系列之指令預定義。
其他實施例可包括一種在一記憶體晶片上之分散式處理器,其包含:安置於該記憶體晶片上之複數個處理器子單元;安置於該記憶體晶片上之複數個記憶體組,其中該複數個記憶體組中之每一者經組態以儲存與儲存於該複數個記憶體組的其他記憶體組中之資料無關的資料,且其中該複數個處理器子單元中之一者連接至來自該複數個記憶體組當中的至少一個專屬記憶體組;及複數個匯流排,其中該複數個匯流排中之每一者將該複數個處理器子單元中之一者連接至來自該複數個記憶體組當中的一或多個對應的專屬記憶體組,其中跨該複數個匯流排中之一特定匯流排的資料傳送係由連接至該複數個匯流排中之該特定匯流排的一對應處理器子單元控制。
其他實施例可包括一種在一記憶體晶片上之分散式處理器,其包含:安置於該記憶體晶片上之複數個處理器子單元;安置於該記憶體晶片上之複數個記憶體組,其中該複數個處理器子單元中之一者連接至來自該複數個記憶體組當中的至少一個專屬記憶體組,且其中該複數個記憶體組中之每一記憶體組經組態以儲存與儲存於該複數個記憶體組的其他記憶體組中之資料無關的資料,且其中儲存於來自該複數個記憶體組當中的一個特定記憶體組中之該資料的至少一些包含儲存於該複數個記憶體組中之至少另一記憶體組中的資料之一複本;及複數個匯流排,其中該複數個匯流排中之每一者將該複數個處理器子單元中之一者連接至來自該複數個記憶體組當中的一或多個對應的專屬記憶體組,其中跨該複數個匯流排中之一特定匯流排的資料傳送係由連接至該複數個匯流排中之該特定匯流排的一對應處理器子單元控制。
其他實施例可包括一種在一記憶體晶片上之分散式處理器,其包含:安置於該記憶體晶片上之複數個處理器子單元;安置於該記憶體晶片上之複數個記憶體組,其中該複數個處理器子單元中之一者連接至來自該複數個記憶體組當中的至少一個專屬記憶體組,且其中該複數個記憶體組中之每一記憶體組經組態以儲存與儲存於該複數個記憶體組的其他記憶體組中之資料無關的資料,且其中儲存於來自該複數個記憶體組當中的一個特定記憶體組中之該資料的至少一些包含儲存於該複數個記憶體組中之至少另一記憶體組中的資料之一複本;及複數個匯流排,其中該複數個匯流排中之每一者將該複數個處理器子單元中之一者連接至來自該複數個記憶體組當中的一或多個對應的專屬記憶體組,其中跨該複數個匯流排中之一特定匯流排的資料傳送係由連接至該複數個匯流排中之該特定匯流排的一對應處理器子單元控制。
其他實施例可包括一種儲存指令之非暫時性電腦可讀媒體,該等指令用於編譯一系列之指令以供在包含複數個處理器子單元及複數個記憶體組之一記憶體晶片上執行,其中來自該複數個處理器子單元當中的每一處理器子單元連接至來自該複數個記憶體組當中的至少一個對應的專屬記憶體組,該等指令致使至少一個處理器:將該系列之指令分割成子系列指令之複數個群組,該分割包含:將與該系列之指令相關聯之任務指派給該等處理器子單元中的不同處理器子單元,其中該等處理器子單元在空間上分散在安置於該記憶體晶片上之該複數個記憶體組當中;產生用以在該記憶體晶片之該等處理器子單元的多個對之間傳送資料的任務,每一對處理器子單元係由一匯流排連接,及將該等經指派及所產生之任務分組成子系列指令之該複數個群組,其中子系列指令之該複數個群組中之每一者對應於該複數個處理器子單元中的一不同處理器子單元;產生對應於子系列指令之該複數個群組中之每一者的機器碼;及根據該分割而將對應於子系列指令之該複數個群組中之每一者的該所產生機器碼指派給該複數個處理器子單元中的一對應處理器子單元。
其他實施例可包括一種記憶體晶片,其包含:複數個記憶體組,每一記憶體組具有一記憶組列解碼器、一記憶組行解碼器及複數個記憶體子組,每一記憶體子組具有一子組列解碼器及一子組行解碼器以允許對該記憶體子組上之位置的讀取及寫入,每一記憶體子組包含:複數個記憶體墊,每一記憶體墊具有複數個記憶體胞元,其中該等子組列解碼器及該等子組行解碼器連接至該記憶組列解碼器及該記憶組行解碼器。
其他實施例可包括一種記憶體晶片,其包含:複數個記憶體組,每一記憶體組具有一記憶組控制器及複數個記憶體子組,每一記憶體子組具有一子組列解碼器及一子組行解碼器以允許對該記憶體子組上之位置的讀取及寫入,每一記憶體子組包含:複數個記憶體墊,每一記憶體墊具有複數個記憶體胞元,其中該等子組列解碼器及該等子組行解碼器處理來自該記憶組控制器之讀取及寫入請求。
其他實施例可包括一種記憶體晶片,其包含:複數個記憶體組,每一記憶體組具有一具有用於處理對該記憶體組上之位置的讀取及寫入之一記憶組控制器,每一記憶體組包含:複數個記憶體墊,每一記憶體墊具有複數個記憶體胞元且具有一墊列解碼器及一墊行解碼器,其中該等墊列解碼器及該等墊行解碼器處理來自子組控制器之讀取及寫入請求。
其他實施例可包括一種記憶體晶片,其包含:複數個記憶體組,每一記憶體組具有一記憶組控制器、一列解碼器及一行解碼器以允許對該記憶體組之位置的讀取及寫入;及複數個匯流排,該複數個匯流排將該複數個記憶組控制器之每一控制器連接至該複數個記憶組控制器中的至少一個其他控制器。
本發明之一個態樣係針對一種記憶體裝置,其包括:一基板;該基板上之複數個記憶體組;該基板上之複數個主要邏輯區塊,該複數個主要邏輯區塊中之每一者連接至該複數個記憶體組中的至少一者;該基板上之複數個冗餘區塊,該複數個冗餘區塊中之每一者連接至該等記憶體組中的至少一者,該複數個冗餘區塊中之每一者複製該複數個主要邏輯區塊中的至少一者;及該基板上之複數個組態開關,該複數個組態開關中之每一者連接至該複數個主要邏輯區塊中的至少一者或連接至該複數個冗餘區塊中的至少一者。在該記憶體裝置中,在偵測到與該複數個主要邏輯區塊中之一者相關聯的一故障後:該複數個組態開關中之一第一組態開關可經組態以停用該複數個主要邏輯區塊中之該一者,且該複數個組態開關中之一第二組態開關可經組態以啟用該複數個冗餘區塊中之複製該複數個主要邏輯區塊中之該一者的一者。
本發明之另一態樣係針對一種在一記憶體晶片上之分散式處理器,其包括:一基板;該基板上之一位址管理器;該基板上之複數個主要邏輯區塊,該複數個主要邏輯區塊中之每一者連接至該複數個記憶體組中的至少一者;該基板上之複數個冗餘區塊,該複數個冗餘區塊中之每一者連接至該複數個記憶體組中的至少一者,該複數個冗餘區塊中之每一者複製該複數個主要邏輯區塊中的至少一者;及該基板上之一匯流排,其連接至該複數個主要邏輯區塊中之每一者、該複數個冗餘區塊中之每一者及該位址管理器。在該處理器中可將運行ID號指派給該複數個主要邏輯區塊中的通過一測試協定之區塊;將非法ID號指派給該複數個主要邏輯區塊中的未通過該測試協定之區塊;且將運行ID號指派給該複數個冗餘區塊中的通過該測試協定之區塊。
本發明之又一態樣係針對一種用於組態一記憶體晶片上之一分散式處理器的方法。該方法可包括:針對至少一個電路功能性對該記憶體晶片之基板上的複數個主要邏輯區塊中之每一者進行測試;基於測試結果來識別該複數個主要邏輯區塊中的至少一個故障邏輯區塊,該至少一個故障邏輯區塊連接至安置於該記憶體晶片之該基板上的至少一個記憶體組;針對該至少一個電路功能性對該記憶體晶片之該基板上的至少一個冗餘區塊進行測試,該至少一個冗餘區塊複製該至少一個故障邏輯區塊且連接至該至少一個記憶體組;藉由將一外部信號施加至一撤銷啟動開關來停用該至少一個故障邏輯區塊,該撤銷啟動開關與該至少一個故障邏輯區塊連接且安置於該記憶體晶片之該基板上;及藉由將該外部信號施加至一啟動開關來啟用該至少一個冗餘區塊,該啟動開關與該至少一個冗餘區塊連接且安置於該記憶體晶片之該基板上。
本發明之另一態樣係針對一種用於組態一記憶體晶片上之一分散式處理器的方法。該方法可包括:啟用該記憶體之基板上的複數個主要邏輯區塊及複數個冗餘區塊;針對至少一個電路功能性對該記憶體晶片之該基板上的該複數個主要邏輯區塊中之每一者進行測試;基於測試結果來識別該複數個主要邏輯區塊中的至少一個故障邏輯區塊,該至少一個故障邏輯區塊連接至安置於該記憶體晶片之該基板上的至少一個記憶體組;針對該至少一個電路功能性對該記憶體晶片之該基板上的至少一個冗餘區塊進行測試,該至少一個冗餘區塊複製該至少一個故障邏輯區塊且連接至該至少一個記憶體組;及藉由將該外部信號施加至一啟動開關來停用至少一個冗餘區塊,該啟動開關與該至少一個冗餘區塊連接且安置於該記憶體晶片之該基板上。
本發明之一個態樣係針對一種處理裝置。該處理裝置可包括:一基板;該基板上之複數個記憶體組;該基板上之一記憶體控制器,其連接至該複數個記憶體組中之每一者;及該基板上之複數個處理單元,該複數個處理單元中之每一者連接至該記憶體控制器,該複數個處理單元包括一組態管理器。在該處理裝置中,該組態管理器經組態以:接收待執行之一任務的一第一指示,該任務需要至少一次計算;向來自該複數個處理單元的至少一個選定處理單元發信,該發信基於用於執行該至少一次計算的該選定處理單元之一能力;及將一第二指示傳輸至該至少一個選定處理單元,且該記憶體控制器經組態以使用至少一個通信線將來自至少兩個記憶體組之資料投送至該至少一個選定處理單元,該至少一個通信線係經由該記憶體控制器連接至該至少兩個記憶體組及該至少一個選定處理單元。
本發明之另一態樣係針對一種為了操作一分散式記憶體裝置所執行的方法。該方法可包括:藉由一編譯器編譯該分散式記憶體裝置之一任務,該任務需要至少一次計算,該編譯可包括判定執行該任務同時所需的字之一數目,及提供用於進行如下操作之指令:當可同時自安置於基板上之複數個記憶體組中之一者存取的字之一數目一數目小於同時所需的字之該數目時,在該複數個記憶體組中寫入必須同時存取之字;藉由安置於該基板上之一組態管理器接收執行該任務之一指示;及回應於接收到該指示,對安置於該基板中之一記憶體控制器組態以:在一第一線存取週期內:使用一第一記憶體線自來自該複數個記憶體組之一第一記憶體組存取至少一個第一字,將該至少一個第一字發送至至少一個處理單元,且開放該第二記憶體組中之一第一記憶體線以自來自該複數個記憶體組之該第二記憶體組存取一第二位址,且在一第二線存取週期內:使用該第一記憶體線自該第二記憶體組存取至少一個第二字,將該至少一個第二字發送至至少一個處理單元,且使用該第一記憶組中之一第二記憶體線自該第一記憶體組存取一第三位址。
本發明之又一態樣係針對一種儲存指令之非暫時性電腦可讀媒體,該等指令在由至少一個處理器執行時致使該至少一個處理器:判定執行一任務同時所需的字之一數目,該任務需要至少一次計算;當可同時自安置於基板上之複數個記憶體組中之一者存取的字之一數目一數目小於同時所需的字之該數目時,在該複數個記憶體組中寫入必須同時存取之字;將執行該任務之一指示傳輸至安置於該基板上之一組態管理器;及傳輸指令,該等指令用以對安置於該基板上之一記憶體控制器組態以在一第一線存取週期內:使用一第一記憶體線自來自該複數個記憶體組之一第一記憶體組存取至少一個第一字,將該至少一個第一字發送至至少一個處理單元,且開放該第二記憶體組中之一第一記憶體線以自來自該複數個記憶體組之該第二記憶體組存取一第二位置,且在一第二線存取週期內:使用該第一記憶體線自該第二記憶體組存取至少一個第二字,將該至少一個第二字發送至至少一個處理單元,且使用該第一記憶組中之一第二記憶體線自該第一記憶體組存取一第三位址。
符合其他所揭示實施例,非暫時性電腦可讀儲存媒體可儲存程式指令,該等程式指令由至少一個處理裝置執行且執行本文中所描述之方法中的任一者。
前文之一般描述及下文之詳細描述僅為例示性的及解釋性的,且不受申請專利範圍限制。
以下詳細描述參考附圖。在任何方便之處,在圖式及以下描述內容中使用相同參考編號來指代相同或類似部分。儘管本文中描述了若干說明性實施例,但修改、調適及其他實施係可能的。舉例而言,可對圖式中所說明之組件進行替代、添加或修改,且可藉由對步驟進行取代、重排序、移除或添加步驟至所揭示方法來修改本文中所描述之說明性方法。因此,以下詳細描述不限於所揭示實施例及實例。實際上,恰當範疇係由隨附申請專利範圍界定。
處理器架構
如貫穿本發明所使用,術語「硬體晶片」係指半導體晶圓(諸如矽或其類似物),其上形成有一或多個電路元件(諸如電晶體、電容器、電阻器及/或類似者)。該等電路元件可形成處理元件或記憶體元件。「處理元件」係指一起執行至少一個邏輯功能(諸如算術功能、邏輯閘、其他布林運算或其類似者)之一或多個電路元件。處理元件可為通用處理元件(諸如可組態的複數個電晶體)或專用處理元件(諸如經設計以執行特定邏輯功能的特定邏輯閘或複數個電路元件)。「記憶體元件」係指可用於儲存資料之一或多個電路元件。「記憶體元件」亦可被稱為「記憶體胞元」。記憶體元件可為動態(以使得需要電再新以保持資料儲存)、靜態(以使得資料在失去電力之後持續存在至少某一時間)或非揮發性之記憶體。
處理元件可接合以形成處理器子單元。「處理器子單元」因此可包含可執行至少一個任務或(例如,一處理器指令集之)指令的處理元件之最小分組。舉例而言,子單元可包含經組態以一起執行指令的一或多個通用處理元件、與經組態而以互補方式執行指令的一或多個專用處理元件配對之一或多個通用處理元件或其類似者。該等處理器子單元可成一陣列配置於一基板(例如,一晶圓)上。儘管「陣列」可包含矩形形狀,但成陣列之子單元的任何配置可形成於該基板上。
記憶體元件可接合以形成記憶體組。舉例而言,記憶體組可包含沿著至少一個線(或其他導電連接件)連結的記憶體元件之一或多個線。此外,記憶體元件可在另一方向上沿著至少一個額外導線連結。舉例而言,記憶體元件可沿著字線及位元線配置,如下文所解釋。儘管記憶體組可包含多個線,但記憶組中之元件的任何配置可用以在基板上形成記憶組。此外,一或多個記憶組可電接合至至少一個記憶體控制器以形成一記憶體陣列。儘管記憶體陣列可包含記憶組之矩形配置,但陣列中之記憶組的任何配置可形成於該基板上。
如貫穿本揭示內容另外所使用的,「匯流排」係指基板之元件之間的任何通信連接件。舉例而言,(形成電連接之)導線或線、(形成光學連接之)光纖或傳導組件之間的通信之任何其他連接件可被稱為「匯流排」。
習知處理器使通用邏輯電路與共用記憶體成對。共用記憶體可儲存藉由邏輯電路執行之指令集以及用於指令集之執行且由指令集之執行產生的資料兩者。如下所述,一些習知處理器使用一快取系統來減小執行自共用記憶體提取時的延遲;然而,習知快取系統保持共用。習知處理器包括中央處理單元(CPU)、圖形處理單元(GPU)、各種特殊應用積體電路(ASIC)或其類似者。圖1展示CPU之一實例,且圖2展示GPU之一實例。
如圖1中所示,CPU 100可包含處理單元110,該處理單元包括一或多個處理器子單元,諸如處理器子單元120a及處理器子單元120b。儘管圖1中未描繪,但每一處理器子單元可包含複數個處理元件。此外,處理單元110可包括一或多個層級之晶載快取記憶體。此等快取記憶體元件通常與處理單元110形成於同一半導體晶粒上,而非經由形成於含有處理器子單元120a及120b及快取記憶體元件之基板中的一或多個匯流排連接至處理器子單元120a及120b。對於習知處理器中之第一階(L1)及第二階(L2)快取記憶體而言,直接在同一晶粒上而非經由匯流排連接之配置係常見的。替代地,在早期處理器中,L2快取記憶體係使用子單元與L2快取記憶體之間的背面匯流排而在處理器子單元當中共用。背面匯流排通常大於下文所描述之正面匯流排。因此,因為快取記憶體將與晶粒上之所有處理器子單元共用,所以快取記憶體130可與處理器子單元120a及120b在同一晶粒上形成或經由一或多個背面匯流排以通信方式耦接至處理器子單元120a及120b。在不具匯流排(例如,快取記憶體直接形成於晶粒上)以及使用背面匯流排之實施例兩者中,快取記憶體在CPU之處理器子單元之間共用。
此外,處理單元110與共用記憶體140a及記憶體140b通信。舉例而言,記憶體140a及140b可表示共用動態隨機存取記憶體(DRAM)之記憶體組。儘管描繪為具有兩個記憶組,但大部分習知記憶體晶片包括介於八個與十六個之間的記憶體組。因此,處理器子單元120a及120b可使用共用記憶體140a及140b來儲存資料,接著藉由處理器子單元120a及120b對該資料進行操作。然而,此配置導致記憶體140a及140b與處理單元110之間的匯流排在處理單元110之時脈速度超過匯流排之資料傳送速度時成為瓶頸。此情況對於習知處理器大體上成立,從而導致低於基於時脈速率及電晶體之數目的規定處理速度的有效處理速度。
如圖2所示,類似缺陷存留在GPU中。GPU 200可包含處理單元210,該處理單元包括一或多個處理器子單元(例如,子單元220a、220b、220c、220d、220e、220f、220g、220h、220i、220j、220k、220l、220m、220n、220o以及220p)。此外,處理單元210可包括一或多個層級之晶載快取記憶體及/或暫存器檔案。此等快取記憶體元件通常與處理單元210形成於同一半導體晶粒上。實際上,在圖2之實例中,快取記憶體210與處理單元210形成於同一晶粒上且在所有處理器子單元當中共用,而快取記憶體230a、230b、230c以及230d分別形成於處理器子單元之一子集上且專屬於該等處理器子單元。
此外,處理單元210與共用記憶體250a、250b、250c以及250d通信。舉例而言,記憶體250a、250b、250c以及250d可表示共用DRAM之記憶體組。因此,處理單元210之處理器子單元可使用共用記憶體250a、250b、250c以及250d來儲存資料,接著藉由該等處理器子單元對該資料進行操作。然而,此配置導致記憶體250a、250b、250c以及250d與處理單元210之間的匯流排成為瓶頸,類似於上文針對CPU所描述之瓶頸。
所揭示之硬體晶片之概述
圖3A係描繪一例示性硬體晶片300之實施例的圖解表示。硬體晶片300可包含經設計以減少上文針對CPU、GPU及其他習知處理器所描述之瓶頸的分散式處理器。分散式處理器可包括在空間上分散在單一基板上之複數個處理器子單元。此外,如上文所解釋,在本發明之分散式處理器中,對應的記憶體組亦在空間上分散於基板上。在一些實施例中,分散式處理器可與一組指令相關聯,且分散式處理器之處理器子單元中的每一者可負責執行包括於指令之集合中的一或多個任務。
如圖3A中所描繪,硬體晶片300可包含複數個處理器子單元,例如,邏輯及控制子單元320a、320b、320c、320d、320e、320f、320g以及320h。如圖3A中進一步所描繪,每一處理器子單元可具有一專屬記憶體實例。舉例而言,邏輯及控制子單元320a可操作地連接至專屬記憶體實例330a,邏輯及控制子單元320b可操作地連接至專屬記憶體實例330b,邏輯及控制子單元320c可操作地連接至專屬記憶體實例330c,邏輯及控制子單元320d可操作地連接至專屬記憶體實例330d,邏輯及控制子單元320e可操作地連接至專屬記憶體實例330e,邏輯及控制子單元320f可操作地連接至專屬記憶體實例330f,邏輯及控制子單元320g可操作地連接至專屬記憶體實例330g,且邏輯及控制子單元320h可操作地連接至專屬記憶體實例330h。
儘管圖3A將每一記憶體實例描繪為單一記憶體組,但硬體晶片300可包括兩個或更多個記憶體組以作為硬體晶片300上之處理器子單元的專屬記憶體實例。此外,儘管圖3A將每一處理器子單元描繪為包含針對專屬記憶體組之邏輯組件及控制件兩者,但硬體晶片300可使用記憶體組之控制件,該等控制件至少部分地與該等邏輯組件分開。此外,如圖3A中所描繪,兩個或更多個處理器子單元及其對應記憶體組可分組成例如處理群組310a、310b、310c以及310d。「處理群組」可表示形成有硬體晶片300之基板上的空間區別。因此,處理群組可包括針對該群組中之記憶體組的另外控制件,例如,控制件340a、340b、340c以及340d。另外或替代地,「處理群組」可表示用於編譯程式碼以供在硬體晶片300上執行之目的之邏輯分組。因此,硬體晶片300之編譯器(將在下文進一步描述)可在硬體晶片300上的處理群組之間分割指令之總體集合。
此外,主機350可提供指令、資料及其他輸入至硬體晶片300且自該硬體晶片讀取輸出。因此,一組指令可全部在單一晶粒上執行,該單一晶粒例如代管硬體晶片300之晶粒。實際上,晶粒外之唯一通信可包括指令至硬體晶片300之載入、發送至硬體晶片300的任何輸入及自硬體晶片300讀取的任何輸出。因此,所有計算及記憶體操作可在晶粒上(在硬體晶片300上)執行,此係因為硬體晶片300之處理器子單元與硬體晶片300的專屬記憶體組通信。
圖3B係描繪另一例示性硬體晶片300'之實施例的圖解表示。儘管被描繪為硬體晶片300之替代,但圖3B中所描繪之架構可至少部分地與圖3A中所描繪之架構組合。
如圖3B中所描繪,硬體晶片300'可包含複數個處理器子單元,例如,處理器子單元350a、350b、350c以及350d。如圖3B中進一步所描繪,每一處理器子單元可具有複數個專屬記憶體實例。舉例而言,處理器子單元350a可操作地連接至專屬記憶體實例330a及330b,處理器子單元350b可操作地連接至專屬記憶體實例330c及330d,處理器子單元350c可操作地連接至專屬記憶體實例330e及330f,且處理器子單元350d可操作地連接至專屬記憶體實例s 330g and 330h。此外,如圖3B中所描繪,處理器子單元及其對應的記憶體組可分組成例如處理群組310a、310b、310c以及310d。另外或替代地,「處理群組」可表示形成有硬體晶片300'之基板上的空間區別及/或用於編譯程式碼以供在硬體晶片300'上執行之目的之邏輯分組。
如圖3B中進一步所描繪,處理器子單元可經由匯流排彼此通信。舉例而言,如圖3B所示,處理器子單元350a可經由匯流排360a與處理器子單元350b通信,經由匯流排360c與處理器子單元350c通信,且經由匯流排360f與處理器子單元350d通信。類似地,處理器子單元350b可經由匯流排360a與處理器子單元350a通信(如上所述),經由匯流排360e與處理器子單元350c通信,且經由匯流排360d與處理器子單元350d通信。另外,處理器子單元350c可經由匯流排360c與處理器子單元350a通信(如上所述),經由匯流排360e與處理器子單元350b通信(如上所述),且經由匯流排360b與處理器子單元350d通信。因此,處理器子單元350d可經由匯流排360f與處理器子單元350a通信(如上所述),經由匯流排360d與處理器子單元350b通信(如上所述),且經由匯流排360b與處理器子單元350c通信(如上所述)。一般技術者將理解可使用比圖3B中所描繪匯流排少的匯流排。舉例而言,匯流排360e可消除,以使得處理器子單元350b與350c之間的通信經由處理器子單元350a及/或350d傳遞。類似地,匯流排360f可消除,以使得處理器子單元350a與處理器子單元350d之間的通信經由處理器子單元350b或350c傳遞。
此外,一般技術者將理解可使用除圖3A及圖3B中所描繪之架構以外的架構。舉例而言,處理群組之一陣列可配置於一基板上,每一處理群組具有單一處理器子單元及記憶體實例。處理器子單元可另外或替代地形成用於對應的專屬記憶體組之控制器的部分、用於對應的專屬記憶體之記憶體墊之控制器的部分或其類似者。
鑒於上述架構,硬體晶片300及300'可提供與傳統架構相比針對記憶體密集型任務之效率的顯著增大。舉例而言,資料庫運算及人工智慧演算法(諸如神經網路)係記憶體密集型任務之實例,對於記憶體密集型任務,傳統架構在效率上低於硬體晶片300及300'。因此,硬體晶片300及300'可被稱為資料庫加速器處理器及/或人工智慧加速器處理器。
組態所揭示 之硬體晶片
上文所述之硬體晶片架構可針對程式碼之執行來組態。舉例而言,每一處理器子單元可與硬體晶片中之其他處理器子單元隔開而個別地執行(定義一組指令)程式碼。因此,並非依靠作業系統來管理多執行緒處理或使用多任務(其係並行性而非平行性的),本發明之硬體晶片可允許處理器子單元完全平行地操作。
除上文所述之完全平行實施之外,指派給每一處理器子單元之指令的至少一些可為重疊的。舉例而言,一分散式處理器上之複數個處理器子單元可執行重疊之指令以作為例如一作業系統或其他管理軟體之一實施,同時執行非重疊指令以便在作業系統或其他管理軟體之環境內執行平行任務。
圖4描繪關於處理群組410的用於執行一般命令之例示性程序400。舉例而言,處理群組410可包含本發明之硬體晶片(例如,硬體晶片300、硬體晶片300'或其類似者)的一部分。
如圖4中所描繪,命令可發送至與專屬記憶體實例420配對之處理器子單元430。一外部主機(例如,主機350)可發送該命令至處理群組410以供執行。替代地,主機350可能已經發送包括供儲存於記憶體實例420中之命令的一指令集,以使得處理器子單元430可自記憶體實例420擷取命令且執行所擷取之命令。因此,命令可由處理元件440來執行,該處理元件係可組態以執行接收之命令的一般處理元件。此外,處理410可包括記憶體實例420之控制件460。如圖4中所描繪,控制件460可執行處理元件440在執行接收之命令時所需的對記憶體實例420之任何讀取及/或寫入。在執行命令之後,處理群組410可將命令之結果輸出至例如外部主機或輸出至同一硬體晶片上的不同處理群組。
在一些實施例中,如圖4中所描繪,處理器子單元430可進一步包括位址產生器450。「位址產生器」可包含經組態以判定一或多個記憶體組中之位址以用於執行讀取及寫入的複數個處理元件,且亦可對位於所判定位址處的資料執行運算(例如,加法、減法、乘法或其類似者)。舉例而言,位址產生器450可判定用於對記憶體之任何讀取或寫入的位址。在一個實例中,位址產生器450可藉由在不再需要讀取值時用基於命令所判定的新值覆寫該讀取值來提高效率。另外或替代地,位址產生器450可選擇可用位址用於儲存來自命令之執行的結果。當此對外部主機而言更便利時,此可考慮排程稍後時脈循環之結果讀出。在另一實例中,位址產生器450可在諸如向量或矩陣乘法-累積計算的多週期計算期間判定讀取自及寫入至的位址。因此,位址產生器450可保持或計算用於讀取資料及寫入多週期計算之中間結果的記憶體位址,以使得處理器子單元430可繼續處理而不必儲存此等記憶體位址。
圖5描繪關於處理群組510的用於執行特殊化命令之例示性程序500。舉例而言,處理群組510可包含本發明之硬體晶片(例如,硬體晶片300、硬體晶片300'或其類似者)的一部分。
如圖5中所描繪,特殊化命令(例如,乘法-累積命令)可發送至與專屬記憶體實例520配對的處理元件530。一外部主機(例如,主機350)可發送該命令至處理元件530以供執行。因此,命令可由處理元件530在來自主機之給定信號下執行,處理元件係可組態以執行特定命令(包括接收之命令)的特殊化處理元件。替代地,處理元件530可自記憶體實例520擷取命令以供執行。因此,在圖5之實例中,處理元件530係乘法-累積(MAC)電路,該MAC電路經組態以執行自外部主機接收或自記憶體實例520擷取的MAC命令。在執行命令之後,處理群組410可將命令之結果輸出至例如外部主機或輸出至同一硬體晶片上的不同處理群組。儘管關於單一命令及單一結果來描繪,但可接收或擷取且執行複數個命令,且複數個結果可在輸出之前在處理群組510上組合。
儘管在圖5中描繪為MAC電路,但額外或替代性特殊化電路可包括於處理群組510中。舉例而言,可實施MAX-讀取命令(其傳回向量之最大值)、MAX0-讀取命令(亦被稱作整流器,其傳回整個向量,而且傳回為0之最大值)或其類似者。
儘管分開地描繪,但圖4之一般化處理群組410及圖5之特殊化處理群組510可組合。舉例而言,一般處理器子單元可耦接至一或多個特殊化處理器子單元以形成處理器子單元。因此,一般處理器子單元可用於不可由一或多個特殊化處理器子單元執行的所有指令。
一般技術者將理解,神經網路實施及其他記憶體密集型任務可用特殊化邏輯電路來處置。舉例而言,資料庫查詢、封包檢測、字串比較以及其他功能在由本文中所描述之硬體晶片執行的情況下可在效率上增大。
針對分散式處理的以記憶體為基礎的架構
在符合本揭示內容之硬體晶片上,專屬匯流排可在晶片上的處理器子單元之間及/或在處理器子單元與其對應的專屬記憶體組之間傳送資料。專屬匯流排之使用可降低仲裁成本,此係因為競爭請求係不可能的或容易使用軟體而非使用硬體來避免。
圖6示意性地描繪處理群組600之圖解表示。處理群組600可供例如硬體晶片300、硬體晶片300'或其類似者之硬體晶片使用。處理器子單元610可經由匯流排630連接至記憶體620。記憶體620可包含一隨機可存取記憶體(RAM)元件,其儲存資料及程式碼以供由處理器子單元610執行。在一些實施例中,記憶體620可為N路記憶體(其中N係等於或大於1之數字,該數字暗示交錯之記憶體620中的區段之數目)。因為處理器子單元610係經由匯流排630耦接至專屬於處理器子單元610之記憶體620,所以N可保持相對較小而不損害執行效能。此表示對習知多路暫存器檔案或快取記憶體的改良,其中較低N通常導致較低執行效能,且較高N通常導致大的面積及功率損失。
根據例如任務或該等任務中所涉及的資料之大小,可調整記憶體620之大小、路之數目及匯流排630的寬度以符合使用處理群組600之系統之任務及應用程式實施的要求。記憶體元件620可包含此項技術中已知的一或多個類型之記憶體,例如,揮發性記憶體(諸如RAM、DRAM、SRAM、相變RAM (PRAM)、磁阻式RAM (MRAM)、電阻式RAM (ReRAM)或其類似者)或非揮發性記憶體(諸如快閃記憶體或ROM)。根據一些實施例,記憶體元件620之一部分可包含第一記憶體類型,而另一部分可包含另一記憶體類型。舉例而言,記憶體元件620之程式碼區域可包含ROM元件,而記憶體元件620之資料區域可包含DRAM元件。此分割之另一實例為將神經網路之權重儲存在快閃記憶體中,而將用於計算之資料儲存在DRAM中。
處理器子單元610包含可包含處理器之處理元件640。如一般技術者所瞭解的,處理器可為管線式或非管線式的定製精簡指令集計算(RISC)元件或其他處理方案,實施於此項技術中已知的任何商業積體電路(IC) (諸如ARM、ARC、RISC-V等)上。處理元件640可包含控制器,在一些實施例中,該控制器包括算術邏輯單元(ALU)或其他控制器。
根據一些實施例,執行接收或所儲存之程式碼的處理元件640可包含一般處理元件,且因此係靈活的且能夠執行廣泛多種處理操作。當比較在特定操作之執行期間所消耗的功率時,非專屬電路通常比特定操作專屬電路消耗更多功率。因此,當執行特定複雜算術計算時,處理元件640可比專屬硬體消耗較多功率且執行效率較低。因此,根據一些實施例,處理元件640之控制器可經設計以執行特定操作(例如,加法或「移動」操作)。
在一個實例中,特定運算可由一或多個加速器650來執行。每一加速器可為專屬的且經程式化以執行特定計算(諸如乘法、浮點向量運算或其類似者)。藉由使用加速器,每個處理器子單元之每次計算所消耗的平均功率可降低,且計算輸送量此後增大。加速器650可根據系統經設計以實施之應用(例如,神經網路的執行、資料庫查詢的執行或其類似者)來選取。加速器650可由處理元件640來組態且可以與處理元件串接的方式操作以用於降低電力消耗及加速計算及運算。加速器可另外或替代地用以在諸如智慧型直接記憶體存取(direct memory access,DMA)周邊之處理群組600的記憶體與MUX/DEMUX/輸入/輸出埠(例如,MUX 650及DEMUX 660)之間傳送資料。
加速器650可經組態以執行多種功能。舉例而言,一個加速器可經組態以執行常常用於神經網路中之16位元浮點計算或8位元整數計算。加速器功能之另一實例係在神經網路之訓練階段期間常常使用的32位元浮點計算。加速器功能之又一實例係查詢處理,諸如資料庫中所使用之查詢處理。在一些實施例中,加速器650可包含特殊化處理元件以執行此等功能及/或可根據儲存於記憶體元件620上之組態資料來組態,以使得加速器可被修改。
加速器650可另外或替代地實施資料至/自記憶體620或至/自其他加速器及/或輸入/輸出的記憶體移動至時間移動之可組態劇本式清單。因此,如下文所進一步解釋,使用處理群組600的硬體晶片內之所有資料移動可使用軟體同步而非使用硬體同步。舉例而言,一個處理群組(例如,群組600)中之一加速器可每隔十個週期將資料自其輸入端傳送至其加速器,接著在下一個週期輸出資料,由此使資料自處理群組之記憶體流動至另一記憶體。
如圖6中另外所描繪,在一些實施例中,處理群組600可進一步包含連接至該處理群組之輸入埠的至少一個輸入多工器(660)及連接至該處理群組之輸出埠的至少一個輸出DEMUX 670。此等MUX/DEMUX可由控制信號(未圖示)來控制,該等控制信號來自處理元件640及/或來自加速器650中之一者、根據由處理元件640進行的當前指令及/或由加速器650之一加速器執行的操作判定。在一些情境中,可能需要處理群組600(根據來自其程式碼記憶體之一預定義指令)將資料自處理群組的輸入埠傳送至輸入埠的輸出埠。因此,除DEMUX/MUX中之每一者連接至處理元件640及加速器650以外,輸入MUX (例如,MUX 660)中之一或多者亦可經由一或多個匯流排直接地連接至輸出DEMUX (例如,DEMUX 670)。
圖6之處理群組600可經配置以形成例如如圖7A中所描繪之分散式處理器。處理群組可安置於基板710上以形成一陣列。在一些實施例中,基板710可包含諸如矽之半導體基板。另外或替代地,基板710可包含諸如可撓性電路板之電路板。
如圖7A中所描繪,基板710可包括安置於其上的複數個處理群組,諸如處理群組600。因此,基板710包括一記憶體陣列,該記憶體陣列包括複數個記憶組,諸如記憶組720a、720b、720c、720d、720e、720f、720g以及720h。此外,基板710包括一處理陣列,該處理陣列可包括複數個處理器子單元,諸如子單元730a、730b、730c、730d、730e、730f、730g以及730h。
此外,如上文所解釋,每一處理群組可包括一處理器子單元及專屬於該處理器子單元的一或多個對應記憶體組。因此,如圖7A中所描繪,每一子單元與一對應的專屬記憶體組相關聯,例如:處理器子單元730a與記憶體組720a相關聯,處理器子單元730b與記憶體組720b相關聯,處理器子單元730c與記憶體組720c相關聯,處理器子單元730d與記憶體組720d相關聯,處理器子單元730e與記憶體組720e相關聯,處理器子單元730f與記憶體組720f相關聯,處理器子單元730g與記憶體組720g相關聯,處理器子單元730h與記憶體組720h相關聯。
為了允許每一處理器子單元與其對應的專屬記憶體組通信,基板710可包括將該等處理器子單元中之一者連接至其對應的專屬記憶體組之第一複數個匯流排。因此,匯流排740a將處理器子單元730a連接至記憶體組720a,匯流排740b將處理器子單元730b連接至記憶體組720b,匯流排740c將處理器子單元730c連接至記憶體組720c,匯流排740d將處理器子單元730d連接至記憶體組720d,匯流排740e將處理器子單元730e連接至記憶體組720e,匯流排740f將處理器子單元730f連接至記憶體組720f,匯流排740g將處理器子單元730g連接至記憶體組720g,且匯流排740h將處理器子單元730h連接至記憶體組720h。此外,為了允許每一處理器子單元與其他處理器子單元通信,基板710可包括將該等處理器子單元中之一者連接至該等處理器子單元中之另一者的第二複數個匯流排。在圖7A之實例中,匯流排750a將處理器子單元730a連接至處理器子單元750e,匯流排750b將處理器子單元730a連接至處理器子單元750b,匯流排750c將處理器子單元730b連接至處理器子單元750f,匯流排750d將處理器子單元730b連接至處理器子單元750c,匯流排750e將處理器子單元730c連接至處理器子單元750g,匯流排750f將處理器子單元730c連接至處理器子單元750d,匯流排750g將處理器子單元730d連接至處理器子單元750h,匯流排750h將處理器子單元730h連接至處理器子單元750g,匯流排750i將處理器子單元730g連接至處理器子單元750g,且匯流排750j將處理器子單元730f連接至處理器子單元750e。
因此,在圖7A所示之實例配置中,該複數個邏輯處理器子單元配置成至少一列及至少一行。該第二複數個匯流排將每一處理器子單元連接至同一列中的至少一個鄰近處理器子單元且連接至同一行的至少一個鄰近處理器子單元。圖7A可被稱為「部分圖像塊連接」。
圖7A所示之配置可經修改以形成「完全圖像塊連接」。完全圖像塊連接包括連接對角線處理器子單元之額外匯流排。舉例而言,該第二複數個匯流排可包括處理器子單元730a與處理器子單元730f之間、處理器子單元730b與處理器子單元730e之間、處理器子單元730b與處理器子單元730g之間、處理器子單元730c與處理器子單元730f之間、處理器子單元730c與處理器子單元730h之間以及處理器子單元730d與處理器子單元730g之間的額外匯流排。
完全圖像塊連接可用於卷積計算,在卷積計算中,使用儲存於附近處理器子單元中之資料及結果。舉例而言,在卷積影像處理期間,每一處理器子單元可接收影像之一圖像塊(諸如像素或像素之群組)。為了計算卷積結果,每一處理器子單元可自所有八個鄰近處理器子單元獲取資料,該等鄰近處理器子單元中之每一者已接收對應圖像塊。在部分圖像塊連接中,來自對角線鄰近處理器子單元之資料可經由連接至該處理器子單元之其他鄰近處理器子單元傳遞。因此,晶片上之分散式處理器可為一人工智慧加速器處理器。
在卷積計算之一特定實例中,可跨複數個處理器子單元來分割一N×M影像。每一處理器子單元可對其對應塊執行具A×B濾波器之卷積。為了對圖像塊之間的邊界上之一或多個像素執行濾波,每一處理器子單元可能需要來自鄰近處理器子單元之資料具有包括同一邊界上之像素的圖像塊。因此,針對每一處理器子單元所產生之程式碼組態該子單元以計算卷積且每當需要來自鄰近子單元之資料時自第二複數個匯流排提取。輸出資料至該第二複數個匯流排之對應命令被提供至該子單元以確保所需資料傳送之恰當時序。
圖7A之部分圖像塊連接可經修改以成為N部分圖像塊連接。在此修改中,該第二複數個匯流排可將每一處理器子單元另外連接至在圖7A之匯流排延伸所沿的四個方向(即,上、下、左、右)上在該處理器子單元之一臨限距離內(例如,在n個處理器子單元內)的處理器子單元。可對完全圖像塊連接進行類似修改(以產生N完全圖像塊連接),以使得該第二複數個匯流排將每一處理器子單元另外連接至在除兩個對角線方向以外的圖7A之匯流排延伸所沿的四個方向上在該處理器子單元之一臨限距離內(例如,在n個處理器子單元內)的處理器子單元。
其他配置係可能的。舉例而言,在圖7B所示之配置中,匯流排750a將處理器子單元730a連接至處理器子單元730d,匯流排750b將處理器子單元730a連接至處理器子單元730b,匯流排750c將處理器子單元730b連接至處理器子單元730c,且匯流排750d將處理器子單元730c連接至處理器子單元730d。因此,在圖7B所示之實例配置中,複數個處理器子單元配置成一星形圖案。該第二複數個匯流排將每一處理器子單元連接至該星形圖案內的至少一個鄰近處理器子單元。
其他配置(未圖示)係可能的。舉例而言,可使用相鄰者連接配置,以使得複數個處理器子單元配置成一或多個線(例如,類似於圖7A中所描繪之配置)。在相鄰者連接配置中,該第二複數個匯流排將每一處理器子單元連接至同一線上的在左邊之處理器子單元、同一線上的在右邊之處理器子單元、同一線上的在左邊及在右邊之處理器子單元等。
在另一實例中,可使用N線性連接配置。在N線性連接配置中,該第二複數個匯流排將每一處理器子單元連接至在該處理器子單元之一臨限距離內(例如,在n個處理器子單元內)的處理器子單元。N線性連接配置可與線陣列(上文所述)、矩形陣列(圖7A中所描繪)、橢圓形陣列(圖7B中所描繪)或任何其他幾何陣列一起使用。
在又一實例中,可使用N對數連接配置。在N對數連接配置中,該第二複數個匯流排將每一處理器子單元連接至在該處理器子單元之二的冪之臨限距離內(例如,在2n個處理器子單元內)的處理器子單元。N對數連接配置可與線陣列(上文所述)、矩形陣列(圖7A中所描繪)、橢圓形陣列(圖7B中所描繪)或任何其他幾何陣列一起使用。
可組合上文所述之連接方案中之任一者以供用於同一硬體晶片中。舉例而言,可在一個區域中使用完全圖像塊連接,而在另一區域中使用部分圖像塊連接。在另一實例中,可在一個區域中使用N線性連接配置,而在另一區域中使用N完全圖像塊連接。
替代或除記憶體晶片之處理器子單元之間的專屬匯流排之外,一或多個共用匯流排可用以互連分散式處理器之所有處理器子單元(或處理器子單元之一子集)。仍可藉由使用由處理器子單元執行之程式碼對共用匯流排上的資料傳送定時來避免共用匯流排上之衝突,如下文所進一步解釋。替代或除共用匯流排之外,可組態匯流排可用以動態地連接處理器子單元以形成連接至單獨匯流排的處理器單元之群組。舉例而言,可組態匯流排可包括可由處理器子單元控制以將資料傳送引導至選定處理器子單元的電晶體或其他機構。
在圖7A及圖7B兩者中,該處理陣列之該複數個處理器子單元在空間上分散在該記憶體陣列之該複數個離散記憶體組當中。在其他替代性實施例(未圖示)中,該複數個處理器子單元可聚集在基板之一或多個區域中,且該複數個記憶體組可聚集在基板之一或多個其他區域中。在一些實施例中,可使用空間分佈與聚集之組合(未圖示)。舉例而言,基板之一個區域可包括處理器子單元之叢集,基板之另一區域可包括記憶體組之叢集,且基板之又一區域可包括分散在記憶體組當中的處理陣列。
一般技術者將認識到,在基板上排列處理器群組600並非排它性的實施例。舉例而言,每一處理器子單元可與至少兩個專屬記憶體組相關聯。因此,圖3B之處理群組310a、310b、310c以及310d可替代處理群組600或與處理群組600組合使用,以形成處理陣列及記憶體陣列。可使用包括例如三個、四個或更多個專屬記憶體組之其他處理群組(未圖示)。
該複數個處理器子單元中之每一者可經組態以相對於包括於該複數個處理器子單元中之其他處理器子單元獨立地執行與一特定應用程式相關聯之軟體程式碼。舉例而言,如下文所解釋,複數個子系列指令可分組為機器碼且被提供至每一處理器子單元以供執行。
在一些實施例中,每一專屬記憶體組包含至少一個動態隨機存取記憶體(DRAM)。替代地,記憶體組可包含諸如靜態隨機存取記憶體(SRAM)、DRAM、快閃記憶體或其類似者的多種記憶體類型之混合。
在習知處理器中,處理器子單元之間的資料通常利用共用記憶體來執行。共用記憶體通常需要晶片區域之大部分及/或執行由額外硬體(諸如仲裁器)管理之匯流排。如上所述,該匯流排導致瓶頸。另外,可在晶片外的共用記憶體通常包括快取同調性機構及更複雜的快取記憶體(例如,L1快取記憶體、L2快取記憶體及共用DRAM),以便將準確且最新的資料提供至處理器子單元。如下文所進一步解釋,圖7A及圖7B中所描繪之專屬匯流排允許沒有硬體管理(諸如仲裁器)之硬體晶片。此外,如圖7A及圖7B中所描繪之專屬記憶體的使用允許對複雜快取層及同調性機構之消除。
實際上,為了允許每一處理器子單元存取由其他處理器子單元計算及/或儲存於專屬於其他處理器子單元之記憶體組中的資料,提供計時係使用由每一處理器子單元個別地執行之程式碼動態地執行的匯流排。此允許消除習知地所使用的大部分(若非全部)匯流排管理硬體。此外,複雜快取機構被此等匯流排上之直接傳送替換,導致在記憶體讀取及寫入期間的潛時時間減小。
以記憶體為基礎的處理陣列
如圖7A及圖7B中所描繪,本發明之記憶體晶片可獨立地操作。替代地,本發明之記憶體晶片可與一或多個額外積體電路可操作地連接,該一或多個額外積體電路諸如記憶體裝置(例如,一或多個DRAM記憶組)、系統單晶片、場可程式化閘陣列(FPGA)或其他處理及/或記憶體晶片。在此等實施例中,由該架構執行之一系列之指令中的任務可(例如,藉由編譯器,如下所述)分割在記憶體晶片的處理器子單元與額外積體電路的任何處理器子單元之間。舉例而言,其他積體電路可包含一主機(例如,圖3A之主機350),該主機將指令及/或資料輸入至記憶體晶片且接收來自記憶體晶片之輸出。
為了將本發明之記憶體晶片與一或多個額外積體電路互連,記憶體晶片可包括一記憶體介面,諸如遵從電子裝置工程聯合委員會(JEDEC)標準或其變體中之任一者的一記憶體介面。該一或多個額外積體電路接著可連接至該記憶體介面。因此,若該一或多個額外積體電路連接至本發明之複數個記憶體晶片,則資料可經由該一或多個額外積體電路在記憶體晶片之間共用。另外或替代地,該一或多個額外積體電路可包括用以連接至本發明之記憶體晶片上的匯流排之匯流排,以使得該一或多個額外積體電路可以與本發明之記憶體晶片串接的方式執行程式碼。在此等實施例中,該一或多個額外積體電路進一步幫助分散式處理,即使該等額外積體電路可與本發明之記憶體晶片在不同基板上。
此外,本發明之記憶體晶片可經排列以便形成分散式處理器之陣列。舉例而言,一或多個匯流排可將記憶體晶片770a連接至額外記憶體晶片770b,如圖7C中所描繪。在圖7C之實例中,記憶體晶片770a包括具有專屬於每一處理器子單元之一或多個對應記憶體組的處理器子單元,例如:處理器子單元730a與記憶體組720a相關聯,處理器子單元730b與記憶體組720b相關聯,處理器子單元730e與記憶體組720c相關聯,且處理器子單元730f與記憶體組720d相關聯。匯流排將每一處理器子單元連接至其對應的記憶體組。因此,匯流排740a將處理器子單元730a連接至記憶體組720a,匯流排740b將處理器子單元730b連接至記憶體組720b,匯流排740c將處理器子單元730e連接至記憶體組720c,且匯流排740d將處理器子單元730f連接至記憶體組720d。此外,匯流排750a將處理器子單元730a連接至處理器子單元750e,匯流排750b將處理器子單元730a連接至處理器子單元750b,匯流排750c將處理器子單元730b連接至處理器子單元750f,且匯流排750d將處理器子單元730e連接至處理器子單元750f。舉例而言,如上所述,可使用記憶體晶片770a之其他配置。
類似地,記憶體晶片770b包括具有專屬於每一處理器子單元之一或多個對應記憶體組的處理器子單元,例如:處理器子單元730c與記憶體組720e相關聯,處理器子單元730d與記憶體組720f相關聯,處理器子單元730g與記憶體組720g相關聯,且處理器子單元730h與記憶體組720h相關聯。匯流排將每一處理器子單元連接至其對應的記憶體組。因此,匯流排740e將處理器子單元730c連接至記憶體組720e,匯流排740f將處理器子單元730d連接至記憶體組720f,匯流排740g將處理器子單元730g連接至記憶體組720g,且匯流排740h將處理器子單元730h連接至記憶體組720h。此外,匯流排750g將處理器子單元730c連接至處理器子單元750g,匯流排750h將處理器子單元730d連接至處理器子單元750h,匯流排750i將處理器子單元730c連接至處理器子單元750d,且匯流排750j將處理器子單元730g連接至處理器子單元750h。舉例而言,如上所述,可使用記憶體晶片770b之其他配置。
記憶體晶片770a及770b之處理器可使用一或多個匯流排來連接。因此,在圖7C之實例中,匯流排750e可將記憶體晶片770a之處理器子單元730b與記憶體晶片770b之處理器子單元730c連接,且匯流排750f可將記憶體晶片770a之處理器子單元730f與記憶體770b之處理器子單元730c連接。舉例而言,匯流排750e可充當至記憶體晶片770b之輸入匯流排(且因此充當記憶體晶片770a之輸出匯流排),而匯流排750f可充當至記憶體晶片770a之輸入匯流排(且因此充當記憶體晶片770b之輸出匯流排),或反之亦然。替代地,匯流排750e及750f均可充當記憶體晶片770a與770b之間的雙向匯流排。
匯流排750e及750f可包括直接導線或可在高速連接件上交錯,以便減少用於記憶體晶片770a與積體電路770b之間的晶片間介面的接腳。此外,用於記憶體晶片本身中的上文所述之連接配置中之任一者可用以將記憶體晶片連接至一或多個額外積體電路。舉例而言,記憶體晶片770a及770b可使用完全圖像塊或部分圖像塊連接而非使用僅如圖7C所示的兩個匯流排來連接。
因此,儘管使用匯流排750e及750f來描繪,但架構760可包括更少匯流排或額外匯流排。舉例而言,可使用處理器子單元730b與730c之間或處理器子單元730f與730c之間的單一匯流排。替代地,可使用例如處理器子單元730b與730d之間、處理器子單元730f與730d之間或其類似者的額外匯流排。
此外,儘管描繪為使用單一記憶體晶片及一額外積體電路,但複數個記憶體晶片可使用如上文所解釋之匯流排來連接。舉例而言,如圖7C之實例中所描繪,記憶體晶片770a、770b、770c以及770d連接成一陣列。類似於上文所述之記憶體晶片,每一記憶體晶片包括多個處理器子單元及多個專屬記憶體組。因此,此處不重複對此等組件之描述。
在圖7C之實例中,記憶體晶片770a、770b、770c以及770d連接成一環。因此,匯流排750a連接4記憶體晶片770a與770d,匯流排750c連接記憶體晶片770a與770b,匯流排750e連接記憶體晶片770b與770c,且匯流排750g連接記憶體晶片770c與770d。儘管記憶體晶片770a、770b、770c以及770d可利用完全圖像塊連接、部分圖像塊連接或其他連接配置來連接,但圖7C之實例允許記憶體晶片770a、770b、770c以及770d之間的更少接腳連接。
相對大的記憶體
本發明之實施例可使用大小與習知處理器之共用記憶體相比相對大的專屬記憶體。使用專屬記憶體而非共用記憶體允許效率之增加繼續而不會隨著記憶體增大而逐漸停止。此允許諸如神經網路處理及資料庫查詢之記憶體密集型任務比在習知處理器中更高效地執行,在習知處理器中,增大共用記憶體之效率增加由於馮諾伊曼瓶頸而逐漸停止。
舉例而言,在本發明之分散式處理器中,安置於分散式處理器之基板上的一陣列可包括複數個離散記憶體組。該等離散記憶體組中之每一者可具有大於一百萬位元組之一容量;以及安置於該基板上之一處理陣列,該處理陣列包括複數個處理器子單元。如上文所解釋,該等處理器子單元中之每一者可與該複數個離散記憶體組之一對應的專屬記憶體組相關聯。在一些實施例中,該複數個處理器子單元可在空間上分散在該記憶體陣列內之該複數個離散記憶體組當中。藉由將至少一個百萬位元組之專屬記憶體而非幾個百萬位元組之共用快取記憶體用於大型CPU或GPU,本發明之該等分散式處理器獲得由於CPU及GPU中之馮諾依曼瓶頸而在習知系統中不可能的效率。
可將不同記憶體用作專屬記憶體。舉例而言,每一專屬記憶體組可包含至少一個DRAM記憶組。替代地,每一專屬記憶體組可包含至少一個靜態隨機存取記憶體組。在其他實施例中,不同類型之記憶體可在單一硬體晶片上組合。
如上文所解釋,每一專屬記憶體可為至少一個百萬位元組。因此,每一專屬記憶體組可大小相同,或該複數個記憶體組中的至少兩個記憶體組可具有不同大小。
此外,如上所述,該分散式處理器可包括:第一複數個匯流排,每一匯流排將該複數個處理器子單元中之一者連接至一對應的專屬記憶體組;及第二複數個匯流排,每一匯流排將該複數個處理器子單元中之一者連接至該複數個處理器子單元中之另一者。
使用軟體之同步
如上文所解釋,本發明之硬體晶片可使用軟體而非硬體來管理資料傳送。詳言之,因為匯流排上之傳送的時序、對記憶體之讀取及寫入及處理器子單元之計算係藉由由處理器子單元執行的子系列指令設定,所以本發明之硬體晶片可執行程式碼以防止匯流排上之碰撞。因此,本發明之硬體晶片可避免習知地用以管理資料傳送之硬體機構(諸如晶片內之網路控制器、處理器子單元之間的封包剖析器及封包傳送器、匯流排仲裁器、用以避開仲裁的複數個匯流排或其類似者)。
若本發明之硬體晶片習知地傳送資料,則利用匯流排連接N個處理器子單元將需要由一仲裁器控制的匯流排仲裁或寬MUX。實情為,如上所述,本發明之實施例可在處理器子單元之間使用僅為導線、光學纜線或其類似者之匯流排,其中該等處理器子單元個別地執行程式碼以避免匯流排上之碰撞。因此,本發明之實施例可節省基板上之空間以及材料成本及效率損失(例如,因仲裁所用之電力及時間消耗所致)。當與使用先進先出(FIFO)控制器及/或信箱之其他架構相比時,效率及空間增加甚至更大。
此外,如上文所解釋,除一或多個處理元件外,每一處理器子單元亦可包括一或多個加速器。在一些實施例中,該(該等)加速器可自匯流排而非自該(該等)處理元件讀取及寫入。在此等實施例中,可藉由允許該(該等)加速器在該(該等)處理元件執行一或多個計算所在的同一循環期間傳輸資料來獲得額外效率。然而,此等實施例需要用於該(該等)加速器之額外材料。舉例而言,可能需要額外電晶體以用於製造該(該等)加速器。
程式碼亦可考慮處理器子單元(例如,包括形成處理器子單元之部分的處理元件及/或加速器)之內部行為,包括時序及潛時。舉例而言,編譯器(如下所述)可執行考慮當產生控制資料傳送之子系列指令時的時序及潛時之預處理。
在一個實例中,複數個處理器子單元可經指派計算含有全部連接至較大複數個神經元之一先前層的複數個神經元之一神經網路層的一任務。假設先前層之資料均勻地散佈在該複數個處理器子單元之間,執行該計算的一種方法可為對每一處理器子單元組態,從而依次將先前層之資料傳輸至主匯流排,接著每一處理器子單元將此資料乘以子單元實施之對應神經元的權重。因為每一處理器子單元計算多於一個神經元,所以每一處理器子單元將多次傳輸先前層之資料,該次數等於神經元之數目。因此,每一處理器子單元之程式碼與用於其他處理器子單元之程式碼不相同,此係因為該等子單元將在不同時間傳輸。
在一些實施例中,一分散式處理器可包含一基板(例如,諸如矽之半導體基板及/或諸如可撓性電路板之電路板),該基板具有:安置於該基板上之一記憶體陣列,該記憶體陣列包括複數個離散記憶體組,及安置於該基板上之一處理陣列,該處理陣列包括複數個處理器子單元,如例如圖7A及圖7B中所描繪。如上文所解釋,該等處理器子單元中之每一者可與該複數個離散記憶體組之一對應的專屬記憶體組相關聯。此外,如例如圖7A及圖7B中所描繪,該分散式處理器可進一步包含複數個匯流排,該複數個匯流排中之每一者將該複數個處理器子單元中之一者連接至該複數個處理器子單元中的至少另一者。
如上文所解釋,該複數個匯流排可用軟體來控制。因此,該複數個匯流排可不含時序硬體邏輯組件,以使得處理器子單元之間及跨該複數個匯流排之對應匯流排的資料傳送不受時序硬體邏輯組件控制。在一個實例中,該複數個匯流排可不含匯流排仲裁器,以使得處理器子單元之間及跨該複數個匯流排之對應匯流排的資料傳送不受匯流排仲裁器控制。
在一些實施例中,如例如圖7A及圖7B中所描繪,該分散式處理器可進一步包含第二複數個匯流排,該第二複數個匯流排將該複數個處理器子單元中之一者連接至一對應的專屬記憶體組。類似於上文所述的該複數個匯流排,該第二複數個匯流排可不含時序硬體邏輯組件,以使得處理器子單元與對應的專屬記憶體組之間的資料傳送不受時序硬體邏輯組件控制。在一個實例中,該第二複數個匯流排可不含匯流排仲裁器,以使得處理器子單元與對應的專屬記憶體組之間的資料傳送不受匯流排仲裁器控制。
如本文中所使用,片語「不含」未必暗示諸如時序硬體邏輯組件(例如,匯流排仲裁器、仲裁樹、FIFO控制器、信箱或其類似者)的組件之絕對不存在。此等組件仍可包括於描述為「不含」彼等組件之硬體晶片中。實際上,片語「不含」係針對硬體晶片之功能;即,「不含」時序硬體邏輯組件之硬體晶片在不使用時序硬體邏輯組件(若存在)的情況下控制其資料傳送之時序。舉例而言,一硬體晶片,其執行包括控制該硬體晶片之處理器子單元之間的資料傳送之子系列指令的程式碼,即使該硬體晶片包括時序硬體邏輯組件以作為保護免受因執行之程式碼中之錯誤所致的碰撞之輔助預防措施。
如上文所解釋,該複數個匯流排可包含介於該複數個處理器子單元的對應處理器子單元之間的導線或光纖中之至少一者。因此,在一個實例中,不含時序硬體邏輯組件之分散式處理器可僅包括導線或光纖,而不具有匯流排仲裁器、仲裁樹、FIFO控制器、信箱或其類似者。
在一些實施例中,該複數個處理器子單元經組態以根據由該複數個處理器子單元執行之程式碼來跨該複數個匯流排中之至少一者傳送資料。因此,如下文所解釋,編譯器可組織子系列指令,每一子系列包含由單一處理器子單元執行之程式碼。該等子系列指令可指導處理器子單元何時在匯流排中之一者上傳送資料及何時自匯流排擷取資料。當該等子系列指令以串接方式跨分散式處理器執行時,處理器子單元之間的傳送之時序可藉由包括於該等子系列指令中的用以傳送及擷取之指令來控制。因此,程式碼指示該複數個匯流排中之至少一者上的資料傳送之時序。編譯器可產生待由單一處理器子單元執行之程式碼。另外,編譯器可產生待由處理器子單元之群組執行之程式碼。在一些情況下,編譯器可將所有處理器子單元一起視為該等處理器子單元係一個超處理器(例如,分散式處理器),且編譯器可產生供彼規定的超處理器/分散式處理器執行的程式碼。
如上文所解釋且如圖7A及圖7B中所描繪,該複數個處理器子單元可在空間上分散在該記憶體陣列內之該複數個離散記憶體組當中。替代地,該複數個處理器子單元可聚集在該基板之一或多個區域中,且該複數個記憶體組可聚集在該基板之一或多個其他區域中。在一些實施例中,可使用空間分佈與聚集之組合,如上文所解釋。
在一些實施例中,一分散式處理器可包含一基板(例如,包括矽之半導體基板及/或諸如可撓性電路板之電路板),該基板具有安置於該基板上之一記憶體陣列,該記憶體陣列包括複數個離散記憶體組。一處理陣列亦可安置於該基板上,該處理陣列包括複數個處理器子單元,如例如圖7A及圖7B中所描繪。如上文所解釋,該等處理器子單元中之每一者可與該複數個離散記憶體組之一對應的專屬記憶體組相關聯。此外,如例如圖7A及圖7B中所描繪,該分散式處理器可進一步包含複數個匯流排,該複數個匯流排中之每一者將該複數個處理器子單元中之一者連接至該複數個離散記憶體組之一對應的專屬記憶體組。
如上文所解釋,該複數個匯流排可用軟體來控制。因此,該複數個匯流排可不含時序硬體邏輯組件,以使得一處理器子單元與該複數個離散記憶體組之一對應的專屬記憶體組之間及跨該複數個匯流排之一對應匯流排的資料傳送不受時序硬體邏輯組件控制。在一個實例中,該複數個匯流排可不含匯流排仲裁器,以使得處理器子單元之間及跨該複數個匯流排之對應匯流排的資料傳送不受匯流排仲裁器控制。
在一些實施例中,如例如圖7A及圖7B中所描繪,該分散式處理器可進一步包含第二複數個匯流排,該第二複數個匯流排將該複數個處理器子單元中之一者連接至該複數個處理器子單元中的至少另一者。類似於上文所述的該複數個匯流排,該第二複數個匯流排可不含時序硬體邏輯組件,以使得處理器子單元與對應的專屬記憶體組之間的資料傳送不受時序硬體邏輯組件控制。在一個實例中,該第二複數個匯流排可不含匯流排仲裁器,以使得處理器子單元與對應的專屬記憶體組之間的資料傳送不受匯流排仲裁器控制。
在一些實施例中,該分散式處理器可使用軟體時序組件與硬體時序組件之組合。舉例而言,一分散式處理器可包含一基板(例如,包括矽之半導體基板及/或諸如可撓性電路板之電路板),該基板具有安置於該基板上之一記憶體陣列,該記憶體陣列包括複數個離散記憶體組。一處理陣列亦可安置於該基板上,該處理陣列包括複數個處理器子單元,如例如圖7A及圖7B中所描繪。如上文所解釋,該等處理器子單元中之每一者可與該複數個離散記憶體組之一對應的專屬記憶體組相關聯。此外,如例如圖7A及圖7B中所描繪,該分散式處理器可進一步包含複數個匯流排,該複數個匯流排中之每一者將該複數個處理器子單元中之一者連接至該複數個處理器子單元中的至少另一者。此外,如上文所解釋,該複數個處理器子單元可經組態以執行控制跨該複數個匯流排的資料傳送之時序以避免碰撞該複數個匯流排中之至少一者上的資料傳送之軟體。在此類實例中,軟體可控制資料傳送之時序,但傳送本身可至少部分地由一或多個硬體組件來控制。
在此等實施例中,該分散式處理器可進一步包含第二複數個匯流排,該第二複數個匯流排將該複數個處理器子單元中之一者連接至一對應的專屬記憶體組。類似於上文所述之該複數個匯流排,該複數個處理器子單元可經組態以執行控制跨該第二複數個匯流排的資料傳送之時序以避免碰撞該第二複數個匯流排中之至少一者上的資料傳送之軟體。在此類實例中,如上文所解釋,軟體可控制資料傳送之時序,但傳送本身可至少部分地由一或多個硬體組件來控制。
程式碼之分割
如上文所解釋,本發明之硬體晶片可跨包括於形成硬體晶片之一基板上的處理器子單元平行地執行程式碼。另外,本發明之硬體晶片可執行多任務。舉例而言,本發明之硬體晶片可執行區域多任務,其中硬體晶片的一個群組之處理器子單元執行一個任務(例如,音訊處理),而硬體晶片的另一群組之處理器子單元執行另一任務(例如,影像處理)。在另一實例中,本發明之硬體晶片可執行時序多任務,其中硬體晶片之一或多個處理器子單元在第一時間段期間執行一個任務且在第二時間段期間執行另一任務。亦可使用區域多任務與時序多任務之組合,以使得一個任務可在第一時間段期間指派給第一群組之處理器子單元,而另一任務可在第一時間段期間指派給第二群組之處理器子單元,在第一時間段之後,第三任務可在第二時間段期間指派給包括於該第一群組及該第二群組中的處理器子單元。
為了組織供在本發明之記憶體晶片上執行的機器碼,機器碼可分割在記憶體晶片之處理器子單元之間。舉例而言,一記憶體晶片上之一處理器可包含一基板及安置於該基板上之複數個處理器子單元。該記憶體晶片可進一步包含安置於該基板上之複數個對應記憶體組,該複數個處理器子單元中之每一者連接至不被該複數個處理器子單元之任何其他處理器子單元共用的至少一個專屬記憶體組。該記憶體晶片上之每一處理器子單元可經組態以獨立於其他處理器子單元執行一系列之指令。每一系列之指令可藉由以下操作來執行:根據定義該系列之指令的程式碼對處理器子單元之一或多個一般處理元件組態及/或根據定義該系列之指令的該程式碼中所提供之一序列啟動處理器子單元之一或多個特殊處理元件(例如,一或多個加速器)。
因此,每一系列之指令可定義待由單一處理器子單元執行之一系列任務。單一任務可包含由處理器子單元中之一或多個處理元件之架構定義的指令集內之指令。舉例而言,處理器子單元可包括特定暫存器,且單一任務可將資料推送至暫存器上,自暫存器提取資料,對暫存器內之資料執行算術函數,對暫存器內之資料執行邏輯運算,或其類似操作。此外,處理器子單元可針對任何數目個運算元來組態,諸如0運算元處理器子單元(亦被稱作「堆疊機」)、1運算元處理器子單元(亦被稱作累加器機器)、2運算元處理器子單元(諸如RISC)、3運算元處理器子單元(諸如複雜指令集電腦(CISC))或其類似者。在另一實例中,處理器子單元可包括一或多個加速器,且單一任務可啟動一加速器以執行特定功能,諸如MAC功能、MAX功能、MAX-0功能或其類似者。
該系列之指令可進一步包括用於自記憶體晶片之專屬記憶體組讀取及寫入的任務。舉例而言,一任務可包括將一段資料寫入至專屬於執行該任務之處理器子單元的記憶體組、自專屬於執行該任務之處理器子單元的記憶體組讀取一段資料或其類似者。在一些實施例中,讀取及寫入可由與記憶體組之控制器串接的處理器子單元執行。舉例而言,處理器子單元可藉由將一控制信號發送至控制器以執行讀取或寫入來執行讀取或寫入任務。在一些實施例中,該控制信號可包括一特定位址以供讀取及寫入使用。替代地,處理器子單元可聽從記憶體控制器選擇一可用位址用於讀取及寫入。
另外或替代地,讀取及寫入可由與記憶體組之控制器串接的一或多個加速器執行。舉例而言,該等加速器可產生用於記憶體控制器之控制信號,類似於處理器子單元產生控制信號之方式,如上所述。
在上文所述實施例中之任一者中,一位址產生器亦可用以引導對記憶體組之特定位址的讀取及寫入。舉例而言,該位址產生器可包含經組態以產生用於讀取及寫入之記憶體位址的處理元件。該位址產生器可經組態以產生位址以便提高效率,例如,藉由將稍後計算之結果寫入至與先前計算之結果相同的位址,不再需要先前計算之該等結果。因此,該位址產生器可回應於來自處理器子單元(例如,來自包括於處理器子單元中的處理元件或來自處理器子單元中的一或多個加速器)之一命令或以與處理器子單元串接的方式產生用於記憶體控制器之控制信號。另外或替代地,該位址產生器可基於某一組態或多個暫存器來產生位址,例如產生一巢套迴路結構,從而以特定圖案對記憶體中之特定位址反覆。
在一些實施例中,每一系列之指令可包含定義一對應系列之任務的機器碼之一集合。因此,上文所述的該系列之任務可囊封在包含該系列之指令的機器碼內。在一些實施例中,如下文關於圖8所解釋,該系列之任務可由一編譯器定義,該編譯器經組態以將較高層級系列之任務分散在該複數個邏輯電路當中以作為複數個系列之任務。舉例而言,該編譯器可基於較高層級系列之任務來產生該複數個系列之任務。,以使得執行串接的每一對應系列之任務之處理器子單元執行與藉由較高層級系列之任務概述之功能相同的功能。
如下文進一步所解釋,該較高層級系列之任務可包含用一人類可讀程式設計語言表示的指令之一集合。相應地,每一處理器子單元的該系列之任務可包含較低層級系列之任務,該較低層級系列之任務中之每一者包含以一機器碼表示的指令之一集合。
如上文關於圖7A及圖7B所解釋,該記憶體晶片可進一步包含複數個匯流排,每一匯流排將該複數個處理器子單元中之一者連接至該複數個處理器子單元中的至少一個其他處理器子單元。此外,如上文所解釋,該複數個匯流排上的資料傳送可使用軟體來控制。因此,跨該複數個匯流排中之至少一者的資料傳送可藉由包括於連接至該複數個匯流排中之該至少一者之一處理器子單元中的該系列之指令預定義。因此,包括於該系列之指令中的任務中之一者可包括將資料輸出至該等匯流排中之一者或自該等匯流排中之一者提取資料。此等任務可由處理器子單元之一處理元件或由包括於處理器子單元中之一或多個加速器執行。在後者實施例中,處理器子單元可執行一計算或在同一循環中將一控制信號發送至一對應記憶體組,在該循環期間,加速器自匯流排中之一者提取資料或將資料置放於匯流排中之一者上。
在一個實例中,包括於連接至該複數個匯流排中之該至少一者之該處理器子單元中的該系列之指令包括一發送任務,該發送任務包含針對連接至該複數個匯流排中之該至少一者之該處理器子單元的用以將資料寫入至該複數個匯流排中之該至少一者的一命令。另外或替代地,包括於連接至該複數個匯流排中之該至少一者之該處理器子單元中的該系列之指令包括一接收任務,該接收任務包含針對連接至該複數個匯流排中之該至少一者之該處理器子單元的用以自該複數個匯流排中之該至少一者讀取資料的一命令。
另外或替代將程式碼分散在處理器子單元當中,資料可分割在記憶體晶片之記憶體組之間。舉例而言,如上文所解釋,一記憶體晶片上之一分散式處理器可包含安置於該記憶體晶片上之複數個處理器子單元及安置於該記憶體晶片上之複數個記憶體組。該複數個記憶體組中之每一者可經組態以儲存與儲存於該複數個記憶體組的其他記憶體組中之資料無關的資料,且該複數個處理器子單元中之一者可連接至來自該複數個記憶體組當中的至少一個專屬記憶體組。舉例而言,每一處理器子單元可能能夠存取專屬於該處理器子單元之一或多個對應記憶體組的一或多個記憶體控制器,且沒有別的處理器子單元可能能夠存取此等對應的一或多個記憶體控制器。因此,儲存於每一記憶體組中之資料可為專屬處理器子單元獨有的。此外,儲存於每一記憶體組中之資料可與儲存於其他記憶體組中之記憶體無關,此係因為沒有記憶體控制器可在記憶體組之間共用。
在一些實施例中,如下文關於圖8所描述,儲存於該複數個記憶體組中之每一者中的該資料可由一編譯器定義,該編譯器經組態以將資料分散在該複數個記憶體組當中。此外,該編譯器可經組態以使用分散在對應處理器子單元當中的複數個較低層級任務將定義於一較高層級系列之任務中的資料分散在該複數個記憶體組當中。
如下文進一步所解釋,該較高層級系列之任務可包含用一人類可讀程式設計語言表示的指令之一集合。相應地,每一處理器子單元的該系列之任務可包含較低層級系列之任務,該較低層級系列之任務中之每一者包含以一機器碼表示的指令之一集合。
如上文關於圖7A及圖7B所解釋,該記憶體晶片可進一步包含複數個匯流排,每一匯流排將該複數個處理器子單元中之一者連接至來自該複數個記憶體組當中的一或多個對應的專屬記憶體組。此外,如上文所解釋,該複數個匯流排上的資料傳送可使用軟體來控制。因此,跨該複數個匯流排中之一特定匯流排的資料傳送可由連接至該複數個匯流排中之該特定匯流排的一對應處理器子單元控制。因此,包括於該系列之指令中的任務中之一者可包括將資料輸出至該等匯流排中之一者或自該等匯流排中之一者提取資料。如上文所解釋,此等任務可由(i)處理器子單元之一處理元件或(ii)包括於處理器子單元中之一或多個加速器來執行。在後者實施例中,處理器子單元可執行一計算或在同一循環中使用將處理器子單元連接至其他處理器子單元的匯流排,在該循環期間,加速器自連接至該一或多個對應的專屬記憶體組之該等匯流排中之一者提取資料或將資料置放於連接至該一或多個對應的專屬記憶體組之該等匯流排中之一者上。
因此,在一個實例中,包括於連接至該複數個匯流排中之該至少一者之該處理器子單元中的該系列之指令可包括一發送任務。該發送任務可包含針對連接至該複數個匯流排中之該至少一者之該處理器子單元的用以將資料寫入至該複數個匯流排中之該至少一者以供儲存在該一或多個對應的專屬記憶體組中的一命令。另外或替代地,包括於連接至該複數個匯流排中之該至少一者之該處理器子單元中的該系列之指令可包括一接收任務。該接收任務包含針對連接至該複數個匯流排中之該至少一者之該處理器子單元的用以自該複數個匯流排中之該至少一者讀取資料以供儲存在該一或多個對應的專屬記憶體組中的一命令。因此,此等實施例中之發送任務及接收任務可包含控制信號,該等控制信號沿著該複數個匯流排中之至少一者發送至該一或多個對應的專屬記憶體組之一或多個記憶體控制器。此外,發送任務及接收任務可與一計算或由處理子單元之另一部分(例如,由處理子單元之一或多個不同加速器)執行的其他任務同時由處理子單元之一個部分(例如,由處理子單元之一或多個加速器)執行。此同時執行之一實例可包括MAC轉送命令,其中接收、倍增及發送係以串接方式執行。
除了將資料分散在記憶體組當中之外,亦可跨不同記憶體組複製資料之特定部分。舉例而言,如上文所解釋,一記憶體晶片上之一分散式處理器可包含安置於該記憶體晶片上之複數個處理器子單元及安置於該記憶體晶片上之複數個記憶體組。該複數個處理器子單元中之每一者可連接至來自該複數個記憶體組當中的至少一個專屬記憶體組,且該複數個記憶體組中之每一記憶體組可經組態以儲存與儲存於該複數個記憶體組的其他記憶體組中之資料無關的資料。此外,儲存於來自該複數個記憶體組當中的一個特定記憶體組中之該資料的至少一些可包含儲存於該複數個記憶體組中之至少另一記憶體組中的資料之一複本。舉例而言,該系列之指令中所使用的編號、字串或其他類型之資料可儲存於專屬於不同處理器子單元的複數個記憶體組中,而非自一個記憶體組傳送至該記憶體晶片中之其他處理器子單元。
在一個實例中,平行字串匹配可使用上文所述之資料複製。舉例而言,可將複數個字串與同一字串進行比較。習知處理器可依序將複數個字串中之每一字串與同一字串進行比較。在本發明之硬體晶片上,可跨該等記憶體組複製同一字串,以使得處理器子單元可平行地比較複數個字串中之單獨字串與該複製字串。
在一些實施例中,如下文關於圖8所描述,跨來自該複數個記憶體組當中的該一個特定記憶體組及該複數個記憶體組中之該至少另一記憶體組複製的至少一些資料係由一編譯器定義,該編譯器經組態以跨記憶體組複製資料。此外,該編譯器可經組態以使用分散在對應處理器子單元當中的複數個較低層級任務來複製該至少一些資料。
資料之複製可適用於跨不同計算再使用資料之相同部分的特定任務。藉由複製資料之此等部分,不同計算可分散式在記憶體晶片之處理器子單元當中以用於平行執行,同時每一處理器子單元可將資料之該等部分儲存於一專屬記憶體組中且自一專屬記憶體組存取所儲存部分(而非跨連接處理器子單元之匯流排推送及提取資料之該等部分)。在一個實例中,跨來自該複數個記憶體組當中的該一個特定記憶體組及該複數個記憶體組中之該至少另一記憶體組複製的該至少一些資料可包含一神經網路之權重。在此實例中,該神經網路中之每一節點可由來自該複數個處理器子單元當中的至少一個處理器子單元定義。舉例而言,每一節點可包含由定義該節點之該至少一個處理器子單元執行的機器碼。在此實例中,該等權重之複製可允許每一處理器子單元執行機器碼,以在僅存取一或多個專屬記憶體組(而非利用其他處理器子單元執行資料傳送)時至少部分地實現對應節點。因為對專屬記憶體組之讀取及寫入之時序與其他處理器子單元無關,而處理器子單元之間的資料傳送之時序需要時序同步(例如,使用軟體,如上文所解釋),所以複製記憶體以避免處理器子單元之間的資料傳送可產生總體執行中之其他效率。
如上文關於圖7A及圖7B所解釋,該記憶體晶片可進一步包含複數個匯流排,每一匯流排將該複數個處理器子單元中之一者連接至來自該複數個記憶體組當中的一或多個對應的專屬記憶體組。此外,如上文所解釋,該複數個匯流排上的資料傳送可使用軟體來控制。因此,跨該複數個匯流排中之一特定匯流排的資料傳送可由連接至該複數個匯流排中之該特定匯流排的一對應處理器子單元控制。因此,包括於該系列之指令中的任務中之一者可包括將資料輸出至該等匯流排中之一者或自該等匯流排中之一者提取資料。如上文所解釋,此等任務可由(i)處理器子單元之一處理元件或(ii)包括於處理器子單元中之一或多個加速器來執行。如上文進一步所解釋,此等任務可包括包含控制信號之發送任務及/或接收任務,該等控制信號沿著該複數個匯流排中之至少一者發送至該一或多個對應的專屬記憶體組之一或多個記憶體控制器。
圖8描繪用於編譯一系列之指令以供在例如如圖7A及圖7B中所描繪的本發明之例示性記憶體晶片上執行之方法800的流程圖。方法800可由一般或專用之任何習知處理器來實施。
可執行方法800以作為形成編譯器之電腦程式之一部分。如本文中所使用,「編譯器」係指將較高層級語言(例如,過程語言,諸如C、FORTRAN、BASIC或其類似者;物件導向語言,諸如Java、C++、Pascal、Python或其類似者;等)轉換成較低層級語言(例如,組合碼、目標碼、機器碼或其類似者)的任何電腦程式。編譯器可允許人類以人類可讀語言來程式設計一系列之指令,接著將該人類可讀語言轉換成機器可執行語言。
在步驟810,處理器可將與該系列之指令相關聯之任務指派給該等處理器子單元中的不同處理器子單元。舉例而言,可將該系列之指令分割成多個子群組,該等子群組將跨處理器子單元平行地執行。在一個實例中,可將一神經網路分割成其節點,且可將一或多個節點指派給單獨處理器子單元。在此實例中,每一子群組可包含跨不同層連接的複數個節點。因此,處理器子單元可實施來自該神經網路之第一層的節點、來自連接至由同一個處理器子單元實施的來自第一層之節點之第二層的節點及類似節點。藉由基於節點之連接來指派節點,處理器子單元之間的資料傳送可減少,此可導致更大效率,如上文所解釋。
如圖7A及圖7B中所描繪在上文所解釋,處理器子單元可在空間上分散在安置於記憶體晶片上之該複數個記憶體組當中。因此,任務之指派可至少部分地為空間分割以及邏輯分割。
在步驟820,處理器可產生用以在該記憶體晶片之該等處理器子單元的多個對之間傳送資料的任務,每一對處理器子單元係由一匯流排連接。舉例而言,如上文所解釋,該等資料傳送可使用軟體來控制。因此,處理器子單元可經組態以在同步時間推送及提取匯流排上之資料。所產生之任務因此可包括用於執行資料之此同步推送及提取的任務。
如上文所解釋,步驟820可包括預處理以考慮處理器子單元之內部行為,包括時序及潛時。舉例而言,處理器可使用處理器子單元之已知時間及潛時(例如,將資料推送至匯流排的時間、自匯流排提取資料的時間、計算與推送或提取之間的潛時或其類似者)以確保所產生之任務同步。因此,包含由一或多個處理器子單元進行之至少一個推送及由一或多個處理器子單元進行之至少一個提取的該等資料傳送可同時發生,而非招致因處理器子單元之間的時序差異、處理器子單元之潛時或其類似者所致的延遲。
在步驟830,處理器可將該等經指派及所產生之任務分組成子系列指令之複數個群組。舉例而言,該等子系列指令可各自包含供單一處理器子單元執行的一系列之任務。因此,子系列指令之該複數個群組中之每一者可對應於該複數個處理器子單元中的一不同處理器子單元。因此,步驟810、820及830可導致將該系列之指令分割成子系列指令之複數個群組。如上文所解釋,步驟820可確保不同群組之間的任何資料傳送經同步。
在步驟840,處理器可產生對應於子系列指令之該複數個群組中之每一者的機器碼。舉例而言,可將表示子系列指令之較高層級程式碼轉換成可由對應處理器子單元執行的較低層級程式碼,諸如機器碼。
在步驟850,處理器可根據該分割而將對應於子系列指令之該複數個群組中之每一者的該所產生機器碼指派給該複數個處理器子單元中的一對應處理器子單元。舉例而言,處理器可用對應處理器子單元之識別符來標記每一子系列指令。因此,當將該等子系列指令上載至記憶體晶片以供(例如,圖3A之主機350)執行時,每一子系列指令可對正確處理器子單元組態。
在一些實施例中,將與該系列之指令相關聯之任務指派給該等處理器子單元中的該等不同處理器子單元可至少部分地取決於該記憶體晶片上之該等處理器子單元中之兩個或更多個處理器子單元之間的一空間接近性。舉例而言,如上文所解釋,可藉由減少處理器子單元之間的資料傳送之數目來提高效率。因此,處理器可將跨處理器子單元中之多於兩個處理器子單元移動資料的資料傳送減至最少。因此,處理器可結合一或多個最佳化演算法(諸如貪婪演算法)使用記憶體晶片之已知佈局,以便將子系列指令指派給處理器子單元,其指派方式使鄰近傳送達至最大(至少區域地)且使至非鄰近處理器子單元之傳送減至最少(至少區域地)。
方法800可進一步包括針對本發明之記憶體晶片的最佳化。舉例而言,處理器可基於該分割對與該系列之指令相關聯之資料分組且根據該分組將該資料指派給該等記憶體組。因此,該等記憶體組可保持用於指派給每一記憶體組所專屬的每一處理器子單元之子系列指令的資料。
在一些實施例中,對該資料分組可包括判定在該等記憶體組中之兩個或更多個記憶體組中複製的該資料之至少一部分。舉例而言,如上文所解釋,可跨多於一個子系列指令來使用一些資料。此資料可跨專屬於經指派不同子系列指令之該複數個處理器子單元的記憶體組重複。此最佳化可進一步減少跨處理器子單元之資料傳送。
可將方法800之輸出輸入至本發明之記憶體晶片以供執行。舉例而言,一記憶體晶片可包含複數個處理器子單元及複數個對應記憶體組,每一處理器子單元連接至專屬於該處理器子單元的至少一個記憶體組,且該記憶體晶片之該等處理器子單元可經組態以執行由方法800產生之機器碼。如上文關於圖3A所解釋,主機350可將由方法800產生之機器碼輸入至該等處理器子單元以供執行。
子組及子控制器
在習知記憶體組中,控制器設置在記憶組層級。每一記憶組包括複數個墊,該複數個墊通常以矩形方式配置,但可配置成任何幾何形狀。每一墊包括複數個記憶體胞元,該複數個記憶體胞元亦通常以矩形方式配置,但可配置成任何幾何形狀。每一胞元可儲存單一位元之資料(例如,視胞元係保持在高電壓或低電壓下而定)。
圖9及圖10中描繪了此習知架構之一實例。如圖9所示,在記憶組層級下,複數個墊(例如,墊930-1、930-2、940-1以及940-2)可形成記憶組900。在一習知矩形組織中,記憶組900可跨全域字線(例如,字線950)及全域位元線(例如,位元線960)受控制。因此,列解碼器910可基於一傳入控制信號(例如,自一位址讀取之請求、寫入至一位址之請求或其類似者)來選擇正確字線,且全域感測放大器920 (及/或全域行解碼器,圖9中未示出)可基於該控制信號來選擇正確位元線。放大器920亦可在讀取操作期間放大來自選定記憶組之任何電壓位準。儘管描繪為將列解碼器用於初始選擇且沿著行執行放大,但記憶組可另外或替代地將行解碼器用於初始選擇且沿著列執行放大。
圖10描繪墊1000之一實例。舉例而言,墊1000可形成諸如圖9之記憶組900的記憶組之一部分。如圖10中所描繪,複數個胞元(例如,胞元1030-1、1030-2以及1030-3)可形成墊1000。每一胞元可包含儲存資料之至少一個位元的電容器、電晶體或其他電路。舉例而言,胞元可包含電容器或可包含正反器,電容器充電表示「1」且放電表示「0」,正反器具有表示「1」之第一狀態及表示「0」之第二狀態。習知墊可包含例如512個位元乘512個位元。在墊1000形成MRAM、ReRAM或其類似者之一部分的實施例中,胞元可包含用於隔離儲存資料之至少一個位元之材料的離子或部分之電晶體、電阻器、電容器或其他機構。舉例而言,胞元可包含具有表示「1」之第一狀態及表示「0」之第二狀態的電解質離子、硫族化物玻璃之一部分或其類似者。
如圖10中另外所描繪,在習知矩形組織中,墊1000可跨區域字線(例如,字線1040)及區域位元線(例如,位元線1050)受控制。因此,字線驅動器(例如,字線驅動器1020-1、1020-2、……、1020-x)可控制選定字線以基於來自與記憶組(墊1000形成該記憶組之一部分)相關聯之一控制器的一控制信號(例如,自一位址讀取的請求、寫入至一位址的請求、一再新信號)而執行讀取、寫入或再新。此外,區域感測放大器(例如,區域放大器1010-1、1010-2、……、1010-x)及/或區域行解碼器(圖10中未示出)可控制件選定位元線以執行讀取、寫入或再新。該等區域感測放大器亦可在讀取操作期間放大來自選定胞元之任何電壓位準。儘管描繪為將字線驅動器用於初始選擇且沿著行執行放大,但墊可改為將位元線驅動器用於初始選擇且沿著列執行放大。
如上文所解釋,複製大量墊以形成記憶體組。記憶體組可分組以形成記憶體晶片。舉例而言,記憶體晶片可包含八個至三十二個記憶體組。因此,習知記憶體晶片上的使處理器子單元與記憶體組配對可導致僅八個至三十個二個處理器子單元。因此,本發明之實施例可包括具有額外子組階層之記憶體晶片。本發明之此等記憶體晶片因而可包括具有用作與處理器子單元配對之專屬記憶體組之記憶體子組的處理器子單元,從而允許更大數目個子處理器,此接著可達成記憶體中計算的較高平行性及效能。
在本發明之一些實施例中,記憶組900之全域列解碼器及全域感測放大器可用子組控制器來替換。因此,記憶體組之控制器可將控制信號引導至適當的子組控制器,而非將控制信號發送至記憶體組之全域列解碼器及全域感測放大器。引導可被動態地控制或可為硬連線的(例如,經由一或多個邏輯閘)。在一些實施例中,熔絲可用以指示每一子組或墊之控制器是否阻斷或傳遞控制信號至適當的子組或墊。在此等實施例中,故障的子組可因此使用熔絲來撤銷啟動。
在此等實施例之一個實例中,一記憶體晶片可包括複數個記憶體組,每一記憶體組具有一記憶組控制器及複數個記憶體子組,每一記憶體子組具有一子組列解碼器及一子組行解碼器以允許對該記憶體子組上之位置的讀取及寫入。每一子組可包含複數個記憶體墊,每一記憶體墊具有複數個記憶體胞元且可具有在內部之區域列解碼器、行解碼器及/或區域感測放大器。該等子組列解碼器及該等子組行解碼器可處理用於子組記憶體上之記憶體中計算的來自記憶組控制器或來自子組處理器子單元之讀取及寫入請求,如下所述。另外,每一記憶體子組可進一步具有一控制器,該控制器經組態以判定是否處理來自該記憶組控制器之讀取請求及寫入請求及/或將該等請求轉送至(例如,墊上之列及行解碼器的)下一層級或阻斷該等請求,例如以允許一內部處理元件或處理器子單元存取記憶體。在一些實施例中,該記憶組控制器可同步至系統時鐘。然而,該等子組控制器可不同步至系統時脈。
如上文所解釋,子組之使用可允許在記憶體晶片中包括比在處理器子單元與習知晶片之記憶體組配對之情況下更多的處理器子單元。因此,每一子組可進一步具有使用該子組作為一專屬記憶體之一處理器子單元。如上文所解釋,處理器子單元可包含RISC、CISC或其他通用處理子單元及/或可包含一或多個加速器。另外,處理器子單元可包括一位址產生器,如上文所解釋。在上文所述之實施例中之任一者,每一處理器子單元可經組態以使用該子組之該列解碼器及該行解碼器而不使用該記憶組控制器來存取專屬於該處理器子單元之一子組。與該子組相關聯之該處理器子單元亦可處置該等記憶體墊(包括下文所描述的解碼器及記憶體冗餘機構)及/或判定來自上部層級(例如,記憶組層級或記憶體層級)之讀取或寫入請求是否被相應地轉送及處置。
在一些實施例中,該子組控制器可進一步包括儲存子組之狀態的暫存器。因此,在該暫存器指示該子組在使用中時,若該子組控制器接收到來自記憶體控制器之控制信號,則該子組控制器可傳回一錯誤。在每一子組進一步包括一處理器子單元之實施例中,在子組中之處理器子單元正在存取與來自記憶體控制器的外部請求衝突之記憶體的情況下,該暫存器可指示一錯誤。
圖11展示使用子組控制器之記憶體組之另一實施例的一實例。在圖11之實例中,記憶組1100具有列解碼器1110、行解碼器1120及具有子組控制器(例如,控制器1130a、1130b及1130c)的複數個記憶體子組(例如,子組1170a、1170b及1170c)。該等子組控制器可包括位址解算器(例如,解算器1140a、1140b及1140c),位址解算器可判定是否將請求傳遞至由子組控制器控制的一或多個子組。
該等子組控制器可進一步包括一或多個邏輯電路(例如,邏輯1150a、1150b及1150c)。舉例而言,包含一或多個處理元件之邏輯電路可允許在不處理從外部來自記憶組1100之請求的情況下執行一或多個操作,諸如再新子組中之胞元、清除子組中之胞元或其類似者。替代地,邏輯電路可包含處理器子單元,如上文所解釋,以使得處理器子單元將由子組控制器控制之任何子組作為對應的專屬記憶體。在圖11之實例中,邏輯1150a可將子組1170a作為對應的專屬記憶體,邏輯1150b可將子組1170b作為對應的專屬記憶體,且邏輯1150c可將子組1170c作為對應的專屬記憶體。在上文所述之實施例中之任一者中,邏輯電路可具有至子組之匯流排,例如,匯流排1131a、1131b或1131c。如圖11中另外所描繪,該等子組控制器可各自包括複數個解碼器,諸如子組列解碼器及子組行解碼器,以允許一處理元件或處理器子單元或發佈命令之一較高層級記憶體控制器對記憶體子組上之位址的讀取及寫入。舉例而言,子組控制器1130a包括解碼器1160a、1160b及1160c,子組控制器1130b包括解碼器1160d、1160e及1160f,且子組控制器1130c包括解碼器1160g、1160h及1160i。基於來自記憶組列解碼器1110之請求,該等子組控制器可使用包括於該等子組控制器中之解碼器來選擇一字線。所描述系統可允許子組之處理元件或處理器子單元在不中斷其他記憶組及甚至其他子組的情況下存取記憶體,由此允許每一子組處理器子單元與其他子組處理器子單元平行地執行記憶體計算。
此外,每一子組可包含複數個記憶體墊,每一記憶體墊具有複數個記憶體胞元。舉例而言,子組1170a包括墊1190a-1、1190a-2、……、1190a-x;子組1170b包括墊1190b-1、1190b-2、……、1190b-x;且子組1170c包括墊1190c-1、1190c-2、……、1190c-3。如圖11中另外所描繪,每一子組可包括至少一個解碼器。舉例而言,子組1170a包括解碼器1180a,子組1170b包括解碼器1180b,且子組1170c包括解碼器1180c。因此,記憶組行解碼器1120可基於外部請求而選擇全域位元線(例如,位元線1121a或1121b),同時由記憶組列解碼器1110選擇之子組可使用其行解碼器以基於來自子組所專屬的邏輯電路之區域請求而選擇區域位元線(例如,位元線1181a或1181b)。因此,每一處理器子單元可經組態以在不使用記憶組列解碼器及記憶組行解碼器的情況下使用該子組之列解碼器及行解碼器來存取專屬於該處理器子單元之一子組。因此,每一處理器子單元可在不中斷其他子組之情況下存取對應子組。此外,當對子組之請求在處理器子單元外時,子組解碼器可向記憶組解碼器反映存取之資料。替代地,在每一子組具有僅一列記憶體墊之實施例中,區域位元線可為墊之位元線,而非子組之位元線。
可使用使用子組列解碼器及子組行解碼器的實施例與圖11中所描繪的實施例之組合。舉例而言,可消除記憶組列解碼器,但保留記憶組行解碼器且使用區域位元線。
圖12展示具有複數個墊之記憶體子組1200之一具體實例的一實例。舉例而言,子組1200可表示圖11之子組1100的一部分或可表示記憶體組之一替代性實施。在圖12之實例中,子組1200包括複數個墊(例如,墊1240a及1240b)。此外,每一墊可包括複數個胞元。舉例而言,墊1240a包括胞元1260a-1、1260a-2、……、1260a-x,且墊1240b包括胞元1260b-1、1260b-2、……、1260b-x。
每一墊可經指派將指派給墊之記憶體胞元的位址之一範圍。此等位址可在製造經組態,以使得墊可到處移動且以使得已故障之墊可被撤銷啟動且保持未使用(例如,使用一或多個熔絲,如下文所進一步解釋)。
子組1200接收來自記憶體控制器1210之讀取及寫入請求。儘管圖12中未描繪,但來自記憶體控制器1210之請求可經由子組1200之控制器來篩選且引導至子組1200之適當墊以進行位址解析。替代地,來自記憶體控制器1210之請求的位址之至少一部分(例如,較高位元)可傳輸至子組1200之所有墊(例如,墊1240a及1240b),以使得僅當墊之經指派位址範圍包括命令中所規定的位址時,每一墊才可處理完整位址及與該位址相關聯之請求。類似於上文所述之子組引導,墊判定可被動態地控制或可為硬連線的。在一些實施例中,熔絲可用以判定每一墊之位址範圍,從而亦允許藉由指派一非法位址範圍來停用故障之墊。可另外或替代地藉由其他常見方法或熔絲之連接來停用墊。
在上文所述之實施例中之任一者中,子組之每一墊可包括一列解碼器(例如,列解碼器1230a或1230b)以用於選擇墊中之字線。在一些實施例中,每一墊可進一步包括熔絲及比較器(例如,1220a及1220b)。如上所述,該等比較器可允許每一墊判定是否處理一傳入請求,且該等熔絲可允許每一墊在發生故障的情況下撤銷啟動。替代地,可使用記憶組及/或子組之列解碼器,而非使用每一墊中之列解碼器。
此外,在上文所述實施例中之任一者中,包括於適當墊中之行解碼器(例如,行解碼器1250a或1250b)可選擇一區域位元線(例如,位元線1251或1253)。區域位元線可連接至記憶體組之全域位元線。在子組具有其自身的區域位元線之實施例中,胞元之區域位元線可進一步連接至子組之區域位元線。因此,可經由胞元之行解碼器(及/或感測放大器)、接著經由子組之行解碼器(及/或感測放大器) (在包括子組行解碼器及/或感測放大器的實施例中)、然後經由記憶組之行解碼器(及/或感測放大器)來讀取選定胞元中之資料。
墊1200可經複製及排列以形成一記憶體組(或一記憶體子組)。舉例而言,本發明之記憶體晶片可包含複數個記憶體組,每一記憶體組具有複數個記憶體子組,且每一記憶體子組具有用於處理對該記憶體子組上之位置的讀取及寫入之一子組控制器。此外,每一記憶體子組可包含複數個記憶體墊,每一記憶體墊具有複數個記憶體胞元且具有一墊列解碼器及一墊行解碼器(例如,如圖12中所描繪)。該等墊列解碼器及該等墊行解碼器可處理來自子組控制器之讀取及寫入請求。舉例而言,該等墊解碼器可接收所有請求且(例如,使用比較器)基於每一墊之已知位址範圍來判定是否處理請求,或該等墊解碼器可基於子組(或記憶組)控制器對墊的選擇而僅接收在已知位址範圍內之請求。
控制器資料傳送
除使用處理子單元來共用資料之外,本發明之記憶體晶片中之任一者亦可使用記憶體控制器(或子組控制器或墊控制器)來共用資料。舉例而言,本發明之記憶體晶片可包含:複數個記憶體組(例如,SRAM記憶組、DRAM記憶組或其類似者),每一記憶體組具有一記憶組控制器、一列解碼器及一行解碼器,從而允許對該記憶體組上之位置的讀取及寫入;以及複數個匯流排,該複數個匯流排將該複數個記憶組控制器中之每一控制器連接至該複數個記憶組控制器中的至少一個其他控制器。該複數個匯流排可類似於如上所述的連接處理子單元之匯流排,但該複數個匯流排直接地而非經由處理子單元來連接該等記憶組控制器。此外,儘管描述為連接記憶組控制器,但匯流排可另外或替代地連接子組控制器及/或墊控制器。
在一些實施例中,可在不中斷連接至一或多個處理器子單元之記憶體組之主要匯流排上的資料傳送的情況下存取該複數個匯流排。因此,記憶體組(或子組)可在與傳輸資料至或自不同記憶體組(或子組)相同的時脈循環中傳輸資料至或自對應處理器子單元。在每一控制器連接至複數個其他控制器之實施例中,該等控制器可能可組態以用於選擇其他控制器中之另一者用於發送或接收資料。在一些實施例中,每一控制器可連接至至少一個鄰近控制器(例如,多對空間上鄰近之控制器可彼此連接)。
記憶體電路中之冗餘邏輯
本發明大體上係針對具有用於晶載資料處理之主要邏輯部分的記憶體晶片。該記憶體晶片可包括冗餘邏輯部分,該等冗餘邏輯部分可替換有缺陷的主要邏輯部分以提高晶片之製造良率。因此,該晶片可包括晶載組件,該等晶載組件允許基於對該等邏輯部分之個別測試來組態記憶體晶片中之邏輯區塊。該晶片之此特徵可提高良率,此係因為具有專屬於邏輯部分之較大區域的記憶體晶片更容易發生製造故障。舉例而言,具有大冗餘邏輯部分之DRAM記憶體晶片可容易發生降低良率之製造問題。然而,實施冗餘邏輯部分可導致提高的良率及可靠性,此係因為該實施為DRAM記憶體晶片之製造商或使用者提供在維持高平行性能力的同時打開或關閉全部邏輯部分。應注意,此處及在本發明中,可識別特定記憶體類型(諸如DRAM)之實例,以便利於解釋所揭示實施例。然而,應理解,在此等情況下,經識別的記憶體類型並不意欲為限制性。實際上,諸如DRAM、快閃記憶體、SRAM、ReRAM、PRAM、MRAM、ROM或任何其他記憶體之記憶體類型可與所揭示實施例一起使用,即使較少實例在本發明之特定章節中特別地識別出。
圖13係符合所揭示實施例之例示性記憶體晶片1300的方塊圖。記憶體晶片1300可實施為DRAM記憶體晶片。記憶體晶片1300亦可實施為任何類型之揮發性或非揮發性記憶體,諸如快閃記憶體、SRAM、ReRAM、PRAM及/或MRAM等。記憶體晶片1300可包括基板1301,位址管理器1302、包括複數個記憶體組1304(a,a)至1304(z,z)的記憶體陣列1304、記憶體邏輯1306、商業邏輯1308以及冗餘商業邏輯1310係安置在該基板中。記憶體邏輯1306及商業邏輯1308可構成主要邏輯區塊,而冗餘商業邏輯1310可構成冗餘區塊。另外,記憶體晶片1300可包括組態開關,該等組態開關可包括撤銷啟動開關1312及啟動開關1314。撤銷啟動開關1312及啟動開關1314亦可安置於基板1301中。在本申請案中,記憶體邏輯1306、商業1308及冗餘商業邏輯1310亦可統稱為「邏輯區塊」。
位址管理器1302可包括列及行解碼器或其他類型之記憶體輔助裝置。替代地或另外,位址管理器1302可包括微控制器或處理單元。
在一些實施例中,如圖13所示,記憶體晶片1300可包括單一記憶體陣列1304,該記憶體陣列可將複數個記憶體區塊以二維陣列形式配置在基板1301上。然而,在其他實施例中,記憶體晶片1300可包括多個記憶體陣列1304,且記憶體陣列1304中之每一者可以不同組態來配置記憶體區塊。舉例而言,記憶體陣列中之至少一者中的記憶體區塊(亦被稱為記憶體組)可配置成徑向分散以利於位址管理器1302或記憶體邏輯1306至該等記憶體區塊之間的選路。
商業邏輯1308可用以進行應用程式之記憶體中計算,該記憶體中計算與用以管理記憶體本身之邏輯無關。舉例而言,商業邏輯1308可實施與AI相關之功能,諸如用作啟動功能之浮動、整數或MAC運算。另外,商業邏輯1308可實施資料庫相關之功能,如最小值、最大值、分類、計數以及其他。記憶體邏輯1306可執行與記憶體管理相關之任務,包括(但不限於)讀取、寫入及再新操作。因此,可在記憶組層級、墊層級或墊層級之群組中之一或多者中添加商業邏輯。商業邏輯1308可具有一或多個位址輸出及一或多個資料輸入/輸出。舉例而言,商業邏輯1308可藉由至位址管理器1302之列/行線定址。然而,在某些實施例中,該等邏輯區塊可經由資料輸入/輸出來另外或替代地定址。
冗餘商業邏輯1310可為商業邏輯1308之複製。另外,冗餘商業邏輯1310可連接至可包括小的熔絲/反熔絲之撤銷啟動開關1312及/或啟動開關1314,且用於邏輯停用或啟用實例中之一者(例如,預設連接之實例)且啟用其他邏輯區塊中之一者(例如,預設斷開之實例)。在一些實施例中,如關於圖15所另外描述,區塊之冗餘在諸如商業邏輯1308之邏輯區塊內可為區域的。
在一些實施例中,記憶體晶片1300中之邏輯區塊可用專屬匯流排連接至記憶體陣列1304之子集。舉例而言,記憶體邏輯1306、商業邏輯1308及冗餘商業邏輯1310之一集合可連接至記憶體陣列1304中之第一列記憶體區塊(即,記憶體區塊1304 (a,a)至1304 (a,z))。專屬匯流排可允許相關聯邏輯區塊不需要打開之通信線而經由例如位址管理器1302自記憶體區塊快速地存取資料。
複數個主要邏輯區塊中之每一者可連接至複數個記憶體組1304中之至少一者。此外,諸如冗餘商業區塊1310之冗餘區塊可連接至記憶體實例1304 (a,a)至(z,z)中之至少一者。冗餘區塊可複製複數個主要邏輯區塊中之至少一者,諸如記憶體邏輯1306或商業邏輯1308。撤銷啟動開關1312可連接至該複數個主要邏輯區塊中之至少一者,且啟動開關1314可連接至該複數個冗餘區塊中之至少一者。
在此等實施例中,在偵測到與該複數個主要邏輯區塊中之一者(記憶體邏輯1306及/或商業邏輯1308)相關聯之故障後,撤銷啟動開關1312可經組態以停用該複數個主要邏輯區塊中之該一者。同時,啟動開關1314可經組態以啟用複製該複數個主要邏輯區塊中之該一者的複數個冗餘區塊中之一者,諸如冗餘邏輯區塊1310。
另外,可一起被稱為「組態開關」之啟動開關1314及撤銷啟動開關1312可包括用以組態開關之狀態的外部輸入。舉例而言,啟動開關1314可經組態以使得外部輸入中之啟動信號導致閉合開關條件,而撤銷啟動開關1312可經組態以使得外部輸入中之撤銷啟動信號導致打開開關條件。在一些實施例中,1300中之所有組態開關可預設為撤銷啟動,且在一測試指示相關聯邏輯區塊起作用且在外部輸入中施加一信號之後變得被啟動或啟用。替代地,在一些情況下,1300中之所有組態開關可預設為經啟用,且可在一測試指示相關聯邏輯區塊不作用且在外部輸入中施加一撤銷啟動信號之後被撤銷啟動或停用。
與組態開關最初是否啟用或停用無關,在偵測到與相關聯邏輯區塊相關聯之故障後,組態開關可停用相關聯邏輯區塊。在組態開關最初啟用的情況下,組態開關之狀態可改變至停用,以便停用相關聯邏輯區塊。在組態開關最初停用的情況下,組態開關之狀態可保持在其停用狀態,以便停用相關聯邏輯區塊。舉例而言,可操作性測試之結果可指示一特定邏輯區塊係非操作的或該特定邏輯區塊不能在特定規範內操作。在此等情況下,邏輯區塊可被停用,從而不啟用其對應組態開關。
在一些實施例中,組態開關可連接至兩個或更多個邏輯區塊,且可經組態以在不同邏輯區塊之間選擇。舉例而言,組態開關可連接至商業邏輯1308及冗餘邏輯區塊1310兩者。組態開關可在停用商業邏輯1308時啟用冗餘邏輯區塊1310。
替代地或另外,該複數個主要邏輯區塊中之至少一者(記憶體邏輯1306及/或商業邏輯1308)可用第一專屬連接件連接至該複數個記憶體組或記憶體實例1304之一子集。因而,複製該複數個主要邏輯區塊中之該至少一者的複數個冗餘區塊中之至少一者(諸如冗餘商業邏輯1310)可用第二專屬連接件連接至相同的複數個記憶體組或實例1304之該子集。
此外,記憶體邏輯1306可具有不同於商業邏輯1308之功能及能力。舉例而言,儘管記憶體邏輯1306可經設計以啟用記憶體組1304中之讀取及寫入操作,但商業邏輯1308可經設計以執行記憶體中計算。因此,若商業邏輯1308包括第一商業邏輯區塊且商業邏輯1308包括第二商業邏輯區塊(如冗餘商業邏輯1310),則有可能在不失去任何能力的情況下斷開有缺陷的商業邏輯1308及重新連接冗餘商業邏輯1310。
在一些實施例中,組態開關(包括撤銷啟動開關1312及啟動開關1314)可用熔絲、反熔絲或可程式化裝置(包括單次可程式化裝置)或其他形式之非揮發性記憶體來實施。
圖14係符合所揭示實施例之例示性冗餘邏輯區塊集合1400的方塊圖。在一些實施例中,冗餘邏輯區塊集合1400可安置於基板1301中。冗餘邏輯區塊集合1400可包括分別連接至開關1312及1314之商業邏輯1308及冗餘商業邏輯1310中之至少一者。另外,商業邏輯1308及冗餘商業邏輯1310可連接至位址匯流排1402及資料匯流排1404。
在一些實施例中,如圖14所示,開關1312及1314可將邏輯區塊連接至時脈節點。以此方式,該等組態開關可將邏輯區塊與時脈信號接合或脫離,從而有效地啟動或撤銷啟動邏輯區塊。然而,在其他實施例中,開關1312及1314可將邏輯區塊連接至其他節點以進行啟動或撤銷啟動。舉例而言,組態開關可將邏輯區塊連接至電壓供應節點(例如,VCC)或連接至接地節點(例如,GND)或時脈信號。以此方式,邏輯區塊可由組態開關來啟用停用,此係因為該等邏輯區塊可創建開路或截斷邏輯區塊供電。
在一些實施例中,如圖14所示,位址匯流排1402及資料匯流排1404可在邏輯區塊之相對側中,該等邏輯區塊並聯地連接至該等匯流排中之每一者。以此方式,可藉由邏輯區塊集合1400來促進不同晶載組件之選路。
在一些實施例中,複數個撤銷啟動開關1312中的每一者耦接該複數個主要邏輯區塊中之至少一者與一時脈節點,且複數個啟動開關1314中的每一者可耦接該複數個冗餘區塊中之至少一者與該時脈節點,從而允許與簡單啟動/撤銷啟動機構一樣連接/斷開時脈。
冗餘邏輯區塊集合1400之冗餘商業邏輯1310允許設計者基於面積及選路而選擇值得複製之區塊。舉例而言,晶片設計者可選擇較大區塊進行複製,此係因為較大區塊可更容易出錯。因此,晶片設計者可決定複製大的邏輯區塊。另一方面,設計者可偏好複製較小邏輯區塊,此係因為較小邏輯區塊容易複製而無相當大的空間損失。此外,使用圖14中之組態,設計者可容易選擇視每個區域之錯誤的統計資料來複製邏輯區塊。
圖15係符合所揭示實施例之例示性邏輯區塊1500的方塊圖。該邏輯區塊可為商業邏輯1308及/或冗餘商業邏輯1310。然而,在其他實施例中,例示性邏輯區塊可描述記憶體邏輯1306或記憶體晶片1300之其他組件。
邏輯區塊1500呈現在小處理器管線內使用邏輯冗餘之又一實施例。邏輯區塊1500可包括暫存器1508、提取電路1504、解碼器1506以及寫回電路1518。另外,邏輯區塊1500可包括計算單元1510及重複計算單元1512。然而,在其他實施例中,邏輯區塊1500可包括其他單元,該等其他單元不包含控制器管線,但包括包含所需商業邏輯之偶發性處理元件。
計算單元1510及重複計算單元1512可包括能夠執行數位計算之數位電路。舉例而言,計算單元1510及重複計算單元1512可包括算術邏輯單元(ALU)以對二進位數字執行算術及逐位運算。替代地,計算單元1510及重複計算單元1512可包括對浮點數進行運算之浮點單元(FPU)。另外,在一些實施例中,計算單元1510及重複計算單元1512可實施資料庫相關之功能,如最小值、最大值、計數以及比較運算以及其他。
在一些實施例中,如圖15所示,計算單元1510及重複計算單元1512可連接至開關電路1514及1516。當啟動時,該等開關電路可啟用或停用該等計算單元。
在邏輯區塊1500中,重複計算單元1512可複製計算單元1510。此外,在一些實施例中,暫存器1508、提取電路1504、解碼器1506以及寫回電路1518 (統稱為區域邏輯單元)在大小上可小於計算單元1510。因為較大元件更容易在製造期間出現問題,所以設計者可決定複製較大單元(諸如計算單元1510)而非複製較小單元(諸如區域邏輯單元)。然而,視歷史良率及錯誤率而定,設計者可選取另外或替代地大單元(或整個區塊)而複製區域邏輯單元。舉例而言,計算單元1510可比暫存器1508、提取電路1504、解碼器1506以及寫回電路1518大,且因此更容易出錯。設計者可選擇複製計算單元1510而非複製邏輯區塊1500中之其他元件或整個區塊。
邏輯區塊1500可包括複數個區域組態開關,該複數個區域組態開關中之每一者連接至計算單元1510或重複計算單元1512中之該至少一者的至少一者。當在計算單元1510中偵測到故障時,區域組態開關可經組態以停用計算單元1510且啟用重複計算單元1512。
圖16展示符合所揭示實施例的與匯流排連接之例示性邏輯區塊的方塊圖。在一些實施例中,邏輯區塊1602 (其可表示記憶體邏輯1306、商業邏輯1308或冗餘商業邏輯1310)可彼此獨立,可經由匯流排連接,且可藉由特定地定址該等邏輯區塊而從外部啟動。舉例而言,記憶體晶片1300可包括許多邏輯區塊,每一邏輯區塊具有一ID號。然而,在其他實施例中,邏輯區塊1602可表示由複數個一或多個記憶體邏輯1306、商業邏輯1308或冗餘商業邏輯1310構成的較大單元。
在一些實施例中,邏輯區塊1602中之每一者可相對於其他邏輯區塊1602冗餘。此完全冗餘性(其中所有區塊可作為主要或冗餘區塊來操作)可改良製造良率,此係因為設計者可在維持整個晶片之功能性的同時斷開有故障的單元。舉例而言,設計者可能夠停用容易出錯,但維持類似計算能力之邏輯區域,此係因為所有複製區塊可連接至同一位址匯流排及資料匯流排。舉例而言,邏輯區塊1602之初始數目可大於目標容量。因而,停用一些邏輯區塊1602不會影響目標容量。
連接至邏輯區塊之匯流排可包括位址匯流排1614、命令線1616及資料線1618。如圖16所示,邏輯區塊中之每一者可獨立於匯流排中之每一線而連接。然而,在某些實施例中,邏輯區塊1602可以階層式結構連接以利於選路。舉例而言,匯流排中之每一線可連接至選路至不同邏輯區塊1602之線的多工器。
在一些實施例中,為了允許不知道內部晶片結構之情況下的外部存取(其可因啟用及停用之單元而改變),邏輯區塊中之每一者可包括熔絲ID,諸如熔斷識別件1604。熔斷識別件1604可包括判定ID且可連接至管理電路的開關(如熔絲)之一陣列。舉例而言,熔斷識別件1604可連接至位址管理器1302。替代地,熔斷識別件1604可連接至較高記憶體位址單元。在此等實施例中,熔斷識別件1604可針對特定位址可組態。舉例而言,熔斷識別件1604可包括可程式化的非揮發性裝置,其基於自管理電路接收之指令來判定最後ID。
記憶體晶片上之分散式處理器可設計成具有圖16中所描繪之組態。在晶片喚醒時或在工廠測試時執行為BIST之測試程序可將運行ID號指派給通過一測試協定的該複數個主要邏輯區塊(記憶體邏輯1306及商業邏輯1308)中之區塊。該測試程序亦可將非法ID號指派給未通過該測試協定的該複數個主要邏輯區塊中之區塊。該測試程序亦可將運行ID號指派給通過該測試協定的該複數個冗餘區塊(冗餘邏輯區塊1310)中之區塊。因為冗餘區塊替換發生故障的主要邏輯區塊,所以經指派運行ID號的該複數個冗餘區塊中之區塊可等於或大於經指派非法ID號的該複數個主要邏輯區塊中之區塊,由此停用區塊。另外,該複數個主要邏輯區塊中之每一者及該複數個冗餘區塊中之每一者可包括至少一個熔斷識別件1604。此外,如圖16所示,連接邏輯區塊1602之匯流排可包括一命令線、一資料線及一位址線。
然而,在其他實施例中,連接至匯流排之所有邏輯區塊1602將開始停用且不具ID號。一個接一個地進行測試,每一優良邏輯區塊會得到一運行ID號,且不工作的彼等邏輯區塊會保持具有將停用此等區塊之非法ID。以此方式,冗餘邏輯區塊可藉由替換在該測試程序期間已知有缺陷的區塊來改良製造良率。
位址匯流排1614可將管理電路耦接至該複數個記憶體組中之每一者、該複數個主要邏輯區塊中之每一者及該複數個冗餘區塊中之每一者。此等連接允許管理電路在偵測到與主要邏輯區塊(諸如商業邏輯1308)相關聯之故障後,將一無效位址指派給該複數個主要邏輯區塊中之一者且將一有效位址指派給該複數個冗餘區塊中之一者。
舉例而言,如圖16A所示,非法ID經組態至所有邏輯區塊1602(a)-(c) (例如,位址0xFFF)。在測試之後,邏輯區塊1602(a)及1602(c)經驗證為起作用,而邏輯區塊1602(b)不作用。在圖16A中,無陰影邏輯區塊可表示成功地通過功能性測試之邏輯區塊,而陰影邏輯區塊可表示未通過功能性測試之邏輯區塊。因而,針對起作用的邏輯區塊,該測試程序將非法ID變為合法ID,而針對不作用之邏輯區塊保留非法ID。作為一實例,在圖16A中,邏輯區塊1602(a)及1602(c)之位址自0xFFF變為0x001及0x002。相比之下,邏輯區塊1602(b)之位址仍為非法位址0xFFF。在一些實施例中,藉由程式化對應的熔斷識別件1604來改變ID。
來自邏輯區塊1602之測試的不同結果可產生不同組態。舉例而言,如圖16B所示,位址管理器1302最初可將非法ID指派給所有邏輯區塊1602 (即,0xFFF)。然而,測試結果可指示兩個邏輯區塊1602(a)及1602(b)起作用。在此等情況下,對邏輯區塊1602(c)之測試可能並非必需的,此係因為記憶體晶片1300可能僅需要兩個邏輯區塊。因此,為了將測試資源減至最少,可僅根據藉由1300之產品定義所需的起作用邏輯區塊之最小數目來測試邏輯區塊,從而留下其他邏輯區塊不測試。圖16B亦展示表示通過功能性測試之經測試邏輯區塊的無陰影邏輯區塊,及表示未測試邏輯區塊的陰影邏輯區塊。
在此等實施例中,針對起作用的經測試邏輯區塊,生產測試儀(外部或內部的,自動或人工的)或執行啟動時之BIST的控制器可將非法ID變為運行ID,同時保持未測試邏輯區塊之非法ID。作為一實例,在圖16B中,邏輯區塊1602(a)及1602(b)之位址自0xFFF變為0x001及0x002。相比之下,未測試邏輯區塊1602(c)之位址仍為非法位址0xFFF。
圖17係符合所揭示實施例的串聯連接之例示性單元1702及1712的方塊圖。圖17可表示整個系統或晶片。替代地,圖17可表示含有其他功能區塊之晶片中的區塊。
單元1702及1712可表示包括諸如記憶體邏輯1306及/或商業邏輯1308的複數個邏輯區塊之完整單元。在此等實施例中,單元1702及1712亦可包括執行操作所需之元件,諸如位址管理器1302。然而,在其他實施例中,單元1702及1712可表示諸如商業邏輯1308或冗餘商業邏輯1310之邏輯單元。
圖17呈現單元1702及1712可必須在其自身之間通信的實施例。在此等情況下,單元1702及1712可串聯連接。然而,非工作單元可破壞邏輯區塊之間的連續性。因此,當一單元由於缺陷而必須被停用時,單元之間的連接可包括一旁路選項。該旁路選項亦可為旁路單元本身之部分。
在圖17中,單元可串聯連接(例如,1702(a)-(c)),且發生故障的單元(例如,1702(b))可在該單元有缺陷時被繞過。該等單元可另外與開關電路並聯地連接。舉例而言,在一些實施例中,單元1702及1712可與開關電路1722及1728連接,如圖17中所描繪。在圖17中所描繪之實例中,單元1702(b)有缺陷。舉例而言,單元1702(b)未通過針對電路功能性之測試。因此,單元1702(b)可使用例如啟動開關1314 (圖17中未示出)來停用,及/或開關電路1722(b)可經啟動以繞過單元1702(b)且維持邏輯區塊之間的連接性。
因此,當複數個主要單元經串聯連接時,該複數個單元中之每一者可與一並聯開關並聯地連接。在偵測到與該複數個單元中的一者相關聯之故障後,連接至該複數個單元中的該一者之並聯開關可經啟動以連接該複數個單元中的兩個單元。
在其他實施例中,如圖17所示,開關電路1728可包括將導致一週期或許多週期延遲之一或更多個取樣點,從而維持單元之不同線之間的同步。當一單元被停用時,鄰近邏輯區塊之間的連接之短路可由於其他計算而產生同步誤差。舉例而言,若任務需要來自A線及B線兩者之資料,且A及B中之每一者係由獨立系列之單元承載,則停用一單元將導致需要進一步資料管理之線之間的去同步。為了防止去同步,樣本電路1730可模擬由停用之單元1712(b)造成的延遲。儘管如此,在一些實施例中,並聯開關可包括反熔絲而非包括取樣電路1730。
圖18係符合所揭示實施例之以二維陣列連接之例示性單元的方塊圖。圖18可表示整個系統或晶片。替代地,圖18可表示含有其他功能區塊之晶片中的區塊。
單元1806可表示包括諸如記憶體邏輯1306及/或商業邏輯1308的複數個邏輯區塊之自律單元。然而,在其他實施例中,單元1806可表示諸如商業邏輯1308之邏輯單元。在方便時,圖18之論述可針對圖13中所識別(例如,記憶體晶片1300)且上文所論述之元件。
如圖18所示,單元可配置成二維陣列,其中單元1806 (其可包括或表示記憶體邏輯1306、商業邏輯1308或冗餘商業邏輯1310中之一或多者)係經由開關箱1808及連接箱1810互連。另外,為了控制二維陣列之組態,二維陣列可在二維陣列之周邊中包括I/O區塊1804。
連接箱1810可為可程式化且可重組態之裝置,其可對自I/O區塊1804輸入之信號作出回應。舉例而言,連接箱可包括來自單元1806之複數個輸入接腳且亦可連接至開關箱1808。替代地,連接箱1810可包括將可程式化邏輯胞元之接腳與選路軌跡連接的開關之群組,而開關箱1808可包括連接不同軌跡的開關之群組。
在某些實施例中,連接箱1810及開關箱1808可用諸如開關1312及1314之組態開關來實施。在此等實施例中,連接箱1810及開關箱1808可由生產測試儀或晶片啟動時所執行之BIST來組態。
在一些實施例中,連接箱1810及開關箱1808可在針對電路功能性對單元1806進行測試之後組態。在此等實施例中,I/O區塊1804可用以將測試信號發送至單元1806。視測試結果而定,I/O區塊1804可發送程式化信號,該等程式化信號以停用未通過測試協定之單元1806且啟用通過測試協定之單元1806的方式來組態連接箱1810及開關箱1808。
在此等實施例中,該複數個主要邏輯區塊及該複數個冗餘區塊可成二維網格安置於基板上。因此,複數個主要單元1806中的每一者及複數個冗餘區塊中的每一者(諸如冗餘商業邏輯1310)可用開關箱1808互連,且一輸入區塊可安置於二維網格之每一線及每一行之周邊中。
圖19係符合所揭示實施例之複合連接之例示性單元的方塊圖。圖19可表示整個系統。替代地,圖19可表示含有其他功能區塊之晶片中的區塊。
圖19之複雜包括單元1902(a)-(f)及組態開關1904(a)-(f)。單元1902可表示包括諸如記憶體邏輯1306及/或商業邏輯1308的複數個邏輯區塊之自律單元。然而,在其他實施例中,單元1902可表示諸如記憶體邏輯1306、商業邏輯1308或冗餘商業邏輯1310之邏輯單元。組態開關1904可包括撤銷啟動開關1312及啟動開關1314中之任一者。
如圖19所示,複雜連接可包括兩個平面中之單元1902。舉例而言,複雜連接可包括在z軸上分開的兩個獨立基板。替代地或另外,單元1902可配置在基板之兩個表面中。舉例而言,出於減小記憶體晶片1300之面積之目的,基板1301可配置在兩個重疊表面中且與配置成三維之組態開關1904連接。組態開關可包括撤銷啟動開關1312及/或啟動開關1314。
基板之第一平面可包括「主要」單元1902。此等區塊可預設為經啟用。在此等實施例中,第二平面可包括「冗餘」單元1902。此等單元可預設為經停用。
在一些實施例中,組態開關1904可包括反熔絲(anti-fuse)。因此,在測試單元1902之後,區塊可按功能單元之圖像塊藉由開關特定反熔絲連接至「始終接通」及停用的選定單元1902,即使該等單元在不同平面中。在圖19中所呈現之實例中,「主要」單元中之一者(單元1902(e))不工作。圖19可將非功能或未測試區塊表示為陰影區塊,而經測試或功能區塊可為無陰影的。因此,組態開關1904經組態以使得不同平面中之邏輯區塊中之一者(例如,單元1902(f))變為在作用中。以此方式,即使主要邏輯區塊中之一者有缺陷,記憶體晶片將藉由替換備用邏輯單元而仍然工作。
圖19另外展示第二平面中之單元1902中之一者(即,1902(c))未被測試或啟用,此係因為主要邏輯區塊起作用。舉例而言,在圖19中,兩個主要單元1902(a)及1902(d)通過功能性測試。因此,單元1902(c)未被測試或啟用。因此,圖19展示特定地選擇視測試結果而變為在作用中之邏輯區塊的能力。
在一些實施例中,如圖19所示,第一平面中之並非全部單元1902可具有對應的備用或冗餘區塊。然而,在其他實施例中,針對所有單元均係主要或冗餘的之完整冗餘,所有單元可為彼此冗餘的。另外,儘管一些實施可遵循圖19中所描繪之星形網路拓樸,但其他實施可使用並聯連接、串聯連接及/或將不同元件與組態開關並聯地或串聯地耦接。
圖20係說明符合所揭示實施例之冗餘區塊啟用程序2000的例示性流程圖。可針對記憶體晶片1300且特別地針對DRAM記憶體晶片來實施啟用程序2000。程序2000可包括以下步驟:針對至少一個電路功能性,測試記憶體晶片之基板上的複數個邏輯區塊中之每一者;基於該等測試結果來識別複數個主要邏輯區塊中之故障邏輯區塊;針對該至少一個電路功能性,測試該記憶體晶片之該基板上的至少一個冗餘或額外邏輯區塊;藉由將一外部信號施加至一撤銷啟動開關來停用該至少一個故障邏輯區塊;及藉由將該外部信號施加至一啟動開關來啟用該至少一個冗餘區塊,該啟動開關與該至少一個冗餘區塊連接且安置於該記憶體晶片之該基板上。下面的圖20之描述進一步詳述程序2000之每一步驟。
程序2000可包括測試複數個邏輯區塊(步驟2002),諸如商業區塊1308及複數個冗餘區塊(例如,冗餘商業區塊1310)。測試可在封裝之前使用例如用於晶圓上測試之探測台進行。然而,步驟2000亦可在封裝之後執行。
步驟2002中之測試可包括將有限序列之測試信號施加至記憶體晶片1300中之每個邏輯區塊或記憶體晶片1300中之邏輯區塊的一子集。測試信號可包括請求預期產生0或1之計算。在其他實施例中,測試信號可請求讀取記憶體組中之特定位址或寫入特定記憶體組中。
可實施測試技術以測試在步驟2002中之迭代程序下的邏輯區塊之回應。舉例而言,測試可涉及藉由傳輸在記憶體組中寫入資料之指令、接著驗證寫入資料之完整性來測試邏輯區塊。在一些實施例中,測試可包括利用反轉資料重複演算法。
在替代性實施例中,步驟2002之測試可包括運行邏輯區塊之一模型以基於一組測試指令而產生目標記憶體影像。接著,可對記憶體晶片中之邏輯區塊執行相同序列之指令,且可記錄結果。模擬之殘餘記憶體影像亦可與自測試獲得之影像進行比較,且任何失配可標記為故障。
替代地,在步驟2002中,測試可包括陰影模型化,在陰影模型化中會產生診斷,但結果不一定被預測。實情為,使用陰影模型化之測試可對記憶體晶片及模擬兩者平行地執行。舉例而言,當記憶體晶片中之邏輯區塊完成一指令或任務時,可向模擬發信以執行相同指令。一旦記憶體晶片中之邏輯區塊完成該等指令,即可對兩個模型之架構狀態進行比較。若存在失配,則標記故障。
在一些實施例中,可在步驟2002中測試所有邏輯區塊(包括例如記憶體邏輯1306、商業邏輯1308或冗餘商業邏輯1310中之每一者)。然而,在其他實施例中,在不同測試回合中可僅測試邏輯區塊之子集。舉例而言,在第一測試回合中,可僅測試記憶體邏輯1306及相關聯區塊。在第二回合中,可僅測試商業邏輯1308及相關聯區塊。在第三回合中,視前兩個回合之結果而定,可測試與冗餘商業邏輯1310相關聯之邏輯區塊。
程序2000可繼續至步驟2004。在步驟2004中,可識別故障邏輯區塊,且亦可識別故障冗餘區塊。舉例而言,未通過步驟2002之測試的邏輯區塊可在步驟2004中被識別為故障區塊。然而,在其他實施例中,最初僅可識別某些故障邏輯區塊。舉例而言,在一些實施例中,僅可識別與商業邏輯1308相關聯之邏輯區塊,且在需要冗餘區塊替代故障邏輯區塊的情況下,僅識別故障冗餘區塊。另外,識別故障區塊可包括在記憶體組或非揮發性記憶體上寫入經識別故障區塊之識別資訊。
在步驟2006中,可停用故障邏輯區塊。舉例而言,使用一組態電路,可藉由將故障邏輯區塊與時脈、接地及/或電力節點斷開來停用故障邏輯區塊。替代地,可藉由按避開邏輯區塊之配置對連接箱組態來停用故障邏輯區塊。然而,在其他實施例中,可藉由自位址管理器1302接收非法位址來停用故障邏輯區塊。
在步驟2008中,可識別複製故障邏輯區塊之冗餘區塊。即使一些邏輯區塊已經故障,為了支援相同的記憶體晶片能力,在步驟2008中,可識別可用的且可複製故障邏輯區塊之冗餘區塊。舉例而言,若執行向量之乘法的邏輯區塊經判定為有故障,則在步驟2008中,位址管理器1302或一晶載控制器可識別亦執行向量之乘法的可用冗餘邏輯區塊。
在步驟2010中,可啟用在步驟2008中所識別之冗餘區塊。與步驟2006之停用操作相比,在步驟2010中,可藉由將經識別冗餘區塊連接至時脈、接地及/或電力節點來啟用該等經識別冗餘區塊。替代地,可藉由按連接經識別冗餘區塊之配置對連接箱組態來啟動經識別冗餘區塊。然而,在其他實施例中,可藉由在測試程序執行時間接收運行位址來啟用經識別冗餘區塊。
圖21係說明符合所揭示實施例之位址指派程序2100的例示性流程圖。可針對記憶體晶片1300且特別地針對DRAM記憶體晶片來實施位址指派程序2100。如關於圖16所描述,在一些實施例中,記憶體晶片1300中之邏輯區塊可連接至一資料匯流排且具有一位址標識符。程序2100描述一位址指派方法,該位址指派方法停用故障邏輯區塊且啟用通過測試之邏輯區塊。程序2100中所描述之步驟將描述為由生產測試儀或晶片啟動時所執行之BIST執行;然而,記憶體晶片1300及/或外部裝置之其他組件亦可執行程序2100之一或多個步驟。
在步驟2102中,測試儀可藉由將非法標識符指派給晶片層級之每一邏輯區塊來停用所有邏輯區塊及冗餘區塊。
在步驟2104中,測試儀可執行邏輯區塊之測試協定。舉例而言,測試儀可針對記憶體晶片1300中之邏輯區塊中之一或多者執行步驟2002中所描述的測試方法。
在步驟2106中,視步驟2104中之測試之結果而定,測試儀可判定邏輯區塊是否有缺陷。若邏輯區塊無缺陷(步驟2106:否),則位址管理器可在步驟2108中將運行ID指派給經測試邏輯區塊。若邏輯區塊有缺陷(步驟2106:是),則位址管理器1302可在步驟2110中保持有缺陷邏輯區塊之非法ID。
在步驟2112中,位址管理器1302可選擇複製有缺陷邏輯區塊之冗餘邏輯區塊。在一些實施例中,複製有缺陷邏輯區塊之冗餘邏輯區塊可具有與有缺陷邏輯區塊相同的組件及連接。然而,在其他實施例中,冗餘邏輯區塊可具有不同於有缺陷邏輯區塊的組件及/或連接,但能夠執行等效操作。舉例而言,若有缺陷邏輯區塊經設計以執行向量之乘法,則選定冗餘邏輯區塊亦將能夠執行向量之乘法,即使選定冗餘邏輯區塊不具有與有缺陷單元相同的架構。
在步驟2114中,位址管理器1302可測試冗餘區塊。舉例而言,測試儀可將步驟2104中所應用之測試技術應用於經識別冗餘區塊。
在步驟2116中,基於步驟2114中之測試之結果,測試儀可判定冗餘區塊是否有缺陷。在步驟2118中,若冗餘區塊無缺陷(步驟2116:否),則測試儀可將運行ID指派給經識別冗餘區塊。在一些實施例中,程序2100可在步驟2118之後返回至步驟2104,形成反覆迴路以測試記憶體晶片中之所有邏輯區塊。
若測試儀判定冗餘區塊有缺陷(步驟2116:是),則在步驟2120中,測試儀可判定額外冗餘區塊是否可用。舉例而言,測試儀可針對關於可用冗餘邏輯區塊之資訊查詢記憶體組。若冗餘邏輯區塊可用(步驟2120:是),則測試儀可返回至步驟2112且識別複製有缺陷邏輯區塊之新的冗餘邏輯區塊。若冗餘邏輯區塊不可用(步驟2120:否),則在步驟2122中,測試儀可產生錯誤信號。該錯誤信號可包括有缺陷邏輯區塊及有缺陷冗餘區塊之資訊。
接之記憶體組
本發明所揭示之實施例亦包括分散式高效能處理器。該處理器可包括介接記憶體組及處理單元之記憶體控制器。該處理器可能可組態以加快資料至處理單元之遞送以用於計算。舉例而言,若處理單元需要兩個資料執行個體以執行任務,則該記憶體控制器可經組態以使得通信線獨立地對來自兩個資料執行個體之資訊的存取。所揭示記憶體架構試圖將與複雜快取記憶體及複雜暫存器檔案方案相關聯之硬體要求減至最小。一般地,處理器晶片包括允許核心與暫存器直接合作的快取記憶體階層。然而,快取記憶體操作需要相當大的晶粒面積且消耗額外電力。所揭示記憶體架構藉由在記憶體中添加邏輯組件來避免快取記憶體階層之使用。
所揭示架構亦實現記憶體組中的資料之策略(或甚至最佳化)置放。即使記憶體組具有單一埠及高潛時,所揭示記憶體架構亦可藉由將資料策略性地定位在記憶體組之不同區塊中來實現高效能及避免記憶體存取瓶頸。以將資料之連續串流提供至處理單元為目標,編譯最佳化步驟可針對特定或一般任務判定資料應如何儲存於記憶體組中。接著,介接處理單元及記憶體組之記憶體控制器可經組態以在特定處理單元需要資料以執行操作時授權對該等特定處理單元之存取。
記憶體晶片之組態可由一處理單元(例如,組態管理器)或一外部介面執行。組態亦可由編譯器或其他SW工具寫入。另外,記憶體控制器之組態可基於記憶體組中之可用埠及記憶體組中之資料的組織。因此,所揭示架構可為處理單元提供來自不同記憶體區塊之資料或同時資訊的恆定流。以此方式,記憶體內之計算任務可藉由避開潛時瓶頸或快取記憶體要求來快速地處理。
此外,儲存於記憶體晶片中之資料可基於編譯最佳化步驟進行配置。編譯可允許建構處理例程,其中處理器將任務高效地指派給處理單元而無記憶體潛時相關聯之延遲。編譯可由編譯器執行且被傳輸至連接至基板中之外部介面之主機。一般地,埠的特定存取圖案及/或小數目之高潛時將導致需要資料之處理單元的資料瓶頸。然而,所揭示編譯可以使得處理單元能夠連續地接收資料(即使在不利記憶體類型的情況下)之方式將資料定位在記憶體組中。
此外,在一些實施例中,組態管理器可基於任務所需之計算向所需處理單元發信。晶片中之不同處理單元或邏輯區塊可具有針對不同任務之特殊化硬體或架構。因此,視將執行之任務而定,可選擇處理單元或處理單元之群組來執行任務。基板上之記憶體控制器可能可組態以根據處理子單元之選擇來投送資料或授權存取,以改良資料傳送速率。舉例而言,基於編譯最佳化及記憶體架構,當需要多個處理單元來執行一任務時,可准許該等處理單元存取記憶體組。
此外,晶片架構可包括晶載組件,該等晶載組件藉由減少存取記憶體組中之資料所需的時間來促進資料之傳送。因此,本發明描述用於能夠使用簡單記憶體實例執行特定或一般任務的高效能處理器的晶片架構以及編譯最佳化步驟。記憶體實例可具有埠的隨機存取及/或小數目之高潛時,諸如DRAM裝置或其他記憶體定向技術中所使用之彼等記憶體,但所揭示架構可藉由實現自記憶體組至處理單元之連續(或幾乎連續)資料流來克服此等缺點。
在本申請案中,同時通信可指一時脈循環內之通信。替代地,同時通信可指在一預定時間量內發送資訊。舉例而言,同時通信可指在幾奈秒內之通信。
圖22提供符合所揭示實施例之例示性處理裝置的方塊圖。圖22A展示處理裝置2200之第一實施例,其中記憶體控制器2210使用多工器來連接第一記憶體區塊2202及第二記憶體區塊2204。記憶體控制器2210亦可連接至少一組態管理器2212、一邏輯區塊2214及多個加速器2216(a)-(n)。圖22B展示處理裝置2200之第二實施例,其中記憶體控制器2210使用一匯流排來連接記憶體區塊2202及2204,該匯流排連接記憶體控制器2210與至少一組態管理器2212、一邏輯區塊2214及多個加速器2216(a)-(n)。另外,主機2230可在處理裝置2200外且經由例如一外部介面連接至該處理裝置。
記憶體區塊2202及2204可包括一DRAM墊或墊之群組、DRAM記憶體組、MRAM\PRAM\RERAM\SRAM單元、快閃記憶體墊或其他記憶體技術。記憶體區塊2202及2204可替代地包括非揮發性記憶體、快閃記憶體裝置、電阻性隨機存取記憶體(ReRAM)裝置或磁電阻隨機存取記憶體(MRAM)裝置。
記憶體區塊2202及2204可另外包括複數個記憶體胞元,該複數個記憶體胞元按列及行配置在複數個字線(未圖示)與複數個位元線(未圖示)之間。每一列記憶體胞元之閘極可連接至該複數個字線中之相應字線。每一行記憶體胞元可連接至該複數個位元線中之相應位元線。
在其他實施例中,(包括記憶體區塊2202及2204之)記憶體區域係由簡單記憶體實例建構。在本申請案中,術語「記憶體實例」可與術語「記憶體區塊」互換使用。記憶體實例(或區塊)可具有不良特性。舉例而言,記憶體可為僅一個埠的記憶體且可具有高隨機存取潛時。替代地或另外,記憶體在行及線變化期間可能不可存取且面對與例如電容充電及/或電路設置相關之資料存取問題。儘管如此,藉由允許記憶體實例與處理單元之間的專屬連接及以考慮區塊之特性的特定方式來配置資料,圖22中所呈現之架構仍利於記憶體裝置中之平行處理。
在一些裝置架構中,記憶體實例可包括若干個埠,從而利於平行操作。儘管如此,在此等實施例中,當資料係基於晶片架構來編譯及組織時,晶片仍可達成經改良效能。舉例而言,編譯器可藉由提供指令及組織資料置放來改良記憶體區域中之存取效率,因此即使使用一個埠的記憶體,仍能夠容易存取記憶體區域。
此外,記憶體區塊2202及2204可為單一晶片中之記憶體的多個類型。舉例而言,記憶體區塊2202及2204可為eFlash及eDRAM。此外,記憶體區塊可包括具有ROM實例之DRAM。
記憶體控制器2210可包括一邏輯電路以處置記憶體存取及將結果傳回至模組之其餘部分。舉例而言,記憶體控制器2210可包括一位址管理器及多個選擇裝置(諸如多工器),以在記憶體區塊與處理單元之間投送資料或授權對記憶體區塊之存取。替代地,記憶體控制器2210可包括用以驅動DDR SDRAM之雙資料速率(DDR)記憶體控制器,其中資料係在系統之記憶體時脈的上升邊緣及下降邊緣上傳送。
另外,記憶體控制器2210可構成雙通道記憶體控制器。雙通道記憶體之併入可利於記憶體控制器2210對平行存取線之控制。該等平行存取線可經組態以具有相同長度,以利於當結合使用多個線時的資料之同步。替代地或另外,該等平行存取線可允許存取記憶體組之多個記憶體埠。
在一些實施例中,處理裝置2200可包括可連接至處理單元之一或多個多工器。該等處理單元可包括可直接地直接至多工器之組態管理器2212、邏輯區塊2214及加速器2216。此外,記憶體控制器2210可包括來自複數個記憶體組或區塊2202及2204的至少一個資料輸入端,及連接至該複數個處理單元中之每一者的至少一個資料輸出端。由於此組態,記憶體控制器2210可經由兩個資料輸入端同時地自記憶體組或記憶體區塊2202及2204接收資料,且經由兩個資料輸出端同時地將經由接收之資料傳輸至至少一個選定處理單元。然而,在一些實施例中,至少一個資料輸入端及至少一個資料輸出端可實施於單一埠中,從而允許僅讀取或寫入操作。在此等實施例中,單一埠可實施為包括資料線、位址線及命令線之資料匯流排。
記憶體控制器2210可連接至複數個記憶體區塊2202及2204中之每一者,且亦可經由例如一選擇開關連接至處理單元。基板上之處理單元(包括組態管理器2212、邏輯區塊2214及加速器2216)亦可獨立地連接至記憶體控制器2210。在一些實施例中,組態管理器2212可接收待執行之一任務的一指示,且作為回應,根據儲存於記憶體中或自外部供應之一組態對記憶體控制器2210、加速器2216及/或邏輯區塊2214組態。替代地,記憶體控制器2210可由一外部介面組態。該任務可需要可用以自複數個處理單元選擇至少一個選定處理單元之至少一次計算。替代地或另外選擇可至少部分地基於用於執行至少一次計算的選定處理單元之能力。作為回應,記憶體控制器2210可授權對記憶體組之存取,或使用專屬匯流排及/或在管線式記憶體存取中在至少一個選定處理單元與至少兩個記憶體組之間投送資料。
在一些實施例中,至少兩個記憶體區塊之第一記憶體區塊2202可配置在該複數個處理單元之第一側上;且至少兩個記憶體組之第二記憶體組2204可配置在與該第一側對置的該複數個處理單元之第二側上。此外,用以執行該任務之選定處理單元(例如加速器2216(n))可經組態以在一時脈循環期間存取第二記憶體組2204,在該時脈循環中,通信線對第一記憶體組或第一記憶體區塊2202開放。替代地,該選定處理單元可經組態以在一時脈循環期間將資料傳送至第二記憶體區塊2204,在該時脈循環中,通信線對第一記憶體區塊2202開放。
在一些實施例中,記憶體控制器2210可實施為獨立元件,如圖22所示。然而,在其他實施例中,記憶體控制器2210可嵌入於記憶體區域中或可沿著加速器2216(a)-(n)安置。
處理裝置2200中之處理區域可包括組態管理器2212、邏輯區塊2214及加速器2216(a)-(n)。加速器2216可包括具有預定義功能之多個處理電路且可由特定應用界定。舉例而言,加速器可為處置模組之間的記憶體移動之向量乘法累積(MAC)單元或直接記憶體存取(DMA)單元。加速器2216亦可能夠計算其自身位址且向記憶體控制器2210請求資料或將寫入資料至加速器。舉例而言,組態管理器2212可向加速器2216中之至少一者發信加速器可存取記憶體組。接著,加速器2216可組態記憶體控制器2210以投送資料或授權對加速器本身之存取。另外,加速器2216可包括至少一個算術邏輯單元、至少一個向量處置邏輯單元、至少一個字串比較邏輯單元、至少一個暫存器以及至少一個直接記憶體存取。
組態管理器2212可包括數位處理電路以組態加速器2216及指示任務之執行。舉例而言,組態管理器2212可連接至記憶體控制器2210及複數個加速器2216中之每一者。組態管理器2212可具有其自身專屬的記憶體以保持加速器2216之組態。組態管理器2212可使用記憶體組以經由記憶體控制器2210來提取命令及組態。替代地,組態管理器2212可經由一外部介面來程式化。在某些實施例中,組態管理器2212可用具有自身的快取記憶體階層之晶載精簡指令集電腦(RISC)或晶載複雜CPU來實施。在一些實施例中,亦可省略組態管理器2212,且該等加速器可經由一外部介面來組態。
處理裝置2200亦可包括一外部介面(未圖示)。該外部介面允許自上部層級之此記憶體組控制器(其接收來自外部主機2230或晶載主處理器的命令)對記憶體之存取,或自外部主機2230或晶載主處理器對記憶體之存取。該外部介面可允許藉由經由記憶體控制器2210將組態或程式碼寫入至記憶體以供組態管理器2212或單元2214及2216本身稍後使用來程式化組態管理器2212及加速器2216。然而,該外部介面亦可不經由記憶體控制器2210路由而直接地程式化處理單元。在組態管理器2212係微控制器的情況下,組態管理器2212可允許經由該外部介面自主記憶體載入程式碼至控制器區域記憶體。記憶體控制器2210可經組態以回應於接收來自該外部介面之一請求而中斷任務。
該外部介面可包括與邏輯電路相關聯之多個連接器,該等連接器提供至處理裝置上之多種元件的無膠水介面。該外部介面可包括:用於資料讀取的資料I/O輸入端及用於資料寫入的輸出端;外部位址輸出端;外部CE0晶片選擇接腳;作用低晶片選擇器;位元組啟用接腳;用於記憶體週期之等待狀態的接腳;寫入啟用接腳;輸出啟用作用接腳;以及讀取寫入啟用接腳。因此,該外部介面具有所需輸入端及輸出端以控制程序及自處理裝置獲得資訊。舉例而言,該外部介面可符合JEDEC DDR標準。替代地或另外,外部介面可符合其他標準,諸如SPI\OSPI或UART。
在一些實施例中,該外部介面可安置於晶片基板上且可連接外部主機2230。外部主機可經由該外部介面來取得對記憶體區塊2202及2204、記憶體控制器2210及處理單元之存取。替代地或另外,外部主機2230可對記憶體進行讀取及寫入,或可經由讀取及寫入命令向組態管理器2212發信以執行操作,諸如開始一程序及/或停止一程序。另外,外部主機2230可直接對加速器2216進行組態。在一些實施例中,外部主機2230能夠直接對記憶體區塊2202及2204執行讀取/寫入操作。
在一些實施例中,組態管理器2212及加速器2216可經組態以視目標任務而使用直接匯流排來連接裝置區域與記憶體區域。舉例而言,當加速器2216之一子集具有執行執行任務所需之計算的能力時,加速器之該子集可與記憶體實例2204連接。藉由進行此分離,有可能確保專屬加速器獲得記憶體區塊2202及2204所需之頻寬(BW)。此外,具有專屬匯流排之此組態可允許將大記憶體分裂成較小實例或區塊,此係因為將記憶體實例連接至記憶體控制器2210允許對甚至具有高列潛時時間之不同記憶體中之資料的快速存取。為達成連接之平行化,記憶體控制器2210可用資料匯流排、位址匯流排及/或控制匯流排連接至記憶體實例中之每一者。
記憶體控制器2210之上述包括可消除對處理裝置中之快取記憶體階層或複雜暫存器檔案的需求。儘管可添加快取記憶體階層以得到新增能力,但處理裝置處理裝置2200中之架構可允許設計者基於處理操作而添加足夠記憶體區塊或實例且在無快取記憶體階層的情況下相應地管理該等實例。舉例而言,處理裝置處理裝置2200中之架構可藉由實施管線式記憶體存取來消除對快取記憶體階層的需求。在管線式記憶體存取中,處理單元可在特定資料線可開放(或啟動)而其他資料線接收或傳輸資料的每個週期中接收持續之資料流。使用獨立通信線之持續資料流可允許因線變化所致的經改良執行速度及最小潛時。
此外,圖22中之所揭示架構實現管線式記憶體存取,組織少量記憶體區塊中之資料且節省由線切換造成之功率損耗可為可能的。舉例而言,在一些實施例中,編譯器可向主機2230傳達記憶體組中之資料的組織或用以組織記憶體組中之資料的方法,以利於在給定任務期間對資料之存取。接著,組態管理器2212可定義哪些記憶體組且在一些情況下記憶體組之哪些埠可由加速器存取。記憶體組中之資料的位置與資料的存取方法之間的此同步藉由以最小潛時將資料饋入至加速器來改良計算任務。舉例而言,在組態管理器2212包括RISC\CPU的實施例中,該方法可以離線軟體(SW)來實施,接著可程式化組態管理器2212以執行該方法。該方法可用可由RISC/CPU電腦執行之任何語言進行開發且可在任何平台上執行。該方法之輸入可包括記憶體控制器後的記憶體之組態及資料本身,以及記憶體存取之圖案。另外,該方法可用特定於實施例之一語言或機器語言來實施,且亦可僅為以二進位或文字表示的一系列組態值。
如上文所論述,在一些實施例中,編譯器可提供指令至主機2230以用於在準備管線式記憶體存取時組織記憶體區塊2202及2204中之資料。管線式記憶體存取通常可包括以下步驟:接收複數個記憶體組或記憶體區塊2202及2204的複數個位址;根據該等接收之位址使用獨立資料線存取該複數個記憶體組;經由一第一通信線將來自一第一位址之資料供應至該複數個處理單元中之至少一者且對一第二位址開放一第二通信線,該第一位址在該複數個記憶體組之一第一記憶體組中,該第二位址在該複數個記憶體組之第二記憶體組2204中;以及在一第二時脈循環內,經由該第二通信線將來自該第二位址之資料供應至該複數個處理單元中之該至少一者且對第一線中之第一記憶體組中的一第三位址開放一第三通信線。在一些實施例中,管線式記憶體存取可在兩個記憶體區塊連接至單一埠的情況下執行。在此等實施例中,記憶體控制器2210可將兩個記憶體區塊隱藏在單一埠後,但利用管線式記憶體存取方法將資料傳輸至處理單元。
在一些實施例中,編譯器可在執行任務之前在主機2230上執行。在此等實施例中,編譯器可能夠基於記憶體裝置之架構來判定資料流之組態,此係因為該組態可為編譯器已知的。
在其他實施例中,若記憶體區塊2204及2202之組態在離線時間係未知的,則管線式方法可在主機2230上執行,該主機可在開始計算之前配置記憶體區塊中之資料。舉例而言,主機2230可將資料直接寫入於記憶體區塊2204及2202中。在此等實施例中,諸如組態管理器2212及記憶體控制器2210之處理單元在運行時間之前可能不會具有關於所需硬體的資訊。接著,可能有必要延遲對加速器2216之選擇,直至任務開始運行。在此等情形中,處理單元或記憶體控制器2210可隨機地選擇加速器2216且創建測試資料存取圖案,該存取圖案可在執行任務時加以修改。
儘管如此,當任務預先已知時,編譯器可組織記憶體組中的資料及指令以供主機2230提供至諸如組態管理器2212之處理單元,從而設定將存取潛時減至最小的信號連接。舉例而言,在一些情況下,加速器2216可能同時需要n個字。然而,每一記憶體實例支援每次僅擷取m個字,其中「m」及「n」為整數及m<n。因此,編譯器可跨不同記憶體實例或區塊置放所需資料,從而利於資料存取。此外,為了避免線錯漏潛時,在處理裝置2200包括多個記憶體實例的情況下,主機可分裂不同記憶體實例之不同線中的資料。資料之分割可允許存取下一個實例中之下一行資料,同時仍使用來自當前實例之資料。
舉例而言,加速器2216(a)可經組態以將兩個向量相乘。向量中之每一者可儲存於諸如記憶體區塊2202及2204的獨立記憶體區塊中,且每一向量可包括多個字。因此,為了完成需要藉由加速器2216(a)之乘法的任務,可能有必要存取兩個記憶體區塊且擷取多個字。然而,在一些實施例中,記憶體區塊僅允許每個時脈循環存取一個字。舉例而言,記憶體區塊可具有單一埠。在此等情況下,為了在操作期間加快資料傳輸,編譯器可組織不同記憶體區塊中的構成向量之字,從而允許對字之平行及/或同時讀取。在此等情形中,編譯器可將字儲存於具有專屬線之記憶體區塊中。舉例而言,若每一向量包括兩兩個字且記憶體控制器能夠直接存取四個記憶體區塊,則編譯器可將資料配置在四個記憶體區塊中,每一記憶體區塊傳輸一字且加速資料遞送。此外,在記憶體控制器2210可具有超過至每一記憶體區塊之單一連接時的實施例中,編譯器可指示組態管理器2212 (或其他處理單元)存取埠特定埠。以此方式,處理裝置2200可執行管線式記憶體存取,從而藉由在一些線中同時載入字及在其他線中傳輸資料來連續地提供資料至處理單元。因此,此管線式記憶體存取避免可避免潛時問題。
圖23係符合所揭示實施例之例示性處理裝置2300的方塊圖。該方塊圖展示簡化處理裝置2300,其顯示呈MAC單元2302形式之單一加速器、組態管理器2304 (等效或類似於組態管理器2212)、記憶體控制器2306 (等效或類似於記憶體控制器2210)以及複數個記憶體區塊2308(a)-(d)。
在一些實施例中,MAC單元2302可為用於處理特定任務之特定加速器。藉助於實例,處理裝置2300可以2D卷積為任務。接著,組態管理器2304可向具有適當硬體之加速器發信以執行與任務相關聯之計算。舉例而言,MAC單元2302可具有四個內部遞增計數器(用以管理卷積計算所需的四個迴路之邏輯加法器及暫存器)及一乘法累積單元。組態管理器2304可向MAC單元2302發信以處理傳入資料且執行任務。組態管理器2304可傳輸一指示至MAC單元2302以執行任務。在此等情形中,MAC單元2302可對計算之位址迭代,乘以數目,且將該等位址累積至一內部暫存器。
在一些實施例中,組態管理器2304可對加速器組態,而記憶體控制器2306授權使用專屬匯流排對區塊2308及MAC單元2302之存取。然而,在其他實施例中,記憶體控制器2306可基於自組態管理器2304或一外部介面接收之指令而直接地對加速器組態。替代地或另外,組態管理器2304可預先載入幾個組態且允許加速器反覆地對具有不同大小之不同位址運行。在此等實施例中,組態管理器2304可包括一快取記憶體,該快取記憶體在將一命令傳輸至諸如加速器2216之複數個處理單元中的至少一者之前儲存該命令。然而,在其他實施例中,組態管理器2304可不包括快取記憶體。
在一些實施例中,組態管理器2304或記憶體控制器2306可接收為了任務必須存取之位址。組態管理器2304或記憶體控制器2306可檢查暫存器以判定位址是否已經在至記憶體區塊2308中之一者的載入線中。若在載入線中,則記憶體控制器2306可自記憶體區塊2308讀取字且將該字傳遞至MAC單元2302。若位址不在載入線中,則組態管理器2304可請求記憶體控制器2306可載入該行且向MAC單元2302發信以延遲,直至擷取該載入線。
在一些實施例中,如圖23所示,記憶體控制器2306可包括形成兩個獨立位址之兩個輸入。但若應同時存取多於兩個位址,且此等位址在單一記憶體區塊中(例如,位址僅在記憶體區塊2308(a)中),則記憶體控制器2306或組態管理器2304可引發異常。替代地,當兩個位址僅可經由單一線來存取時,組態管理器2304可傳回無效資料信號。在其他實施例中,該單元可延遲程序執行,直至有可能擷取所有所需資料。此可削弱總體效能。儘管如此,編譯器可能夠發現可防止延遲之組態及資料置放。
在一些實施例中,編譯器可創建用於處理裝置2300之組態或指令集,該組態或指令集可對組態管理器2304及記憶體控制器2306及加速器2302組態以處置必需自單一記憶體區塊存取多個位址,但記憶體區塊具有一個埠的情形。舉例而言,編譯器可重新配置記憶體區塊2308中之資料,以使得處理單元可存取記憶體區塊2308中之多個行。
另外,記憶體控制器2306亦可在同一時間同時對多於一個輸入工作。舉例而言,記憶體控制器2306可允許經由一個埠來存取記憶體區塊2308中之一者及在於另一輸入端中接收來自不同記憶體區塊之請求時供應資料。因此,此操作可導致加速器2216以例示性2D卷積為任務,從而自相關記憶體區塊之專屬通信線接收資料。
另外或替代地,記憶體控制器2306邏輯區塊可保持針對每個記憶體區塊2308之再新計數器且處置所有線之再新。具有此類計數器允許記憶體控制器2306插入來自裝置之截止存取時間之間的再新週期。
此外,記憶體控制器2306可能可組態以執行管線式記憶體存取,從而接收位址且在供應資料之前開放記憶體區塊中之線。管線式記憶體存取可在無中斷或經延遲時脈循環的情況下將資料提供至處理單元。舉例而言,儘管記憶體控制器2306或邏輯區塊中之一者利用圖23中之右邊線來存取資料,但記憶體控制器或邏輯區塊可在左邊線中傳輸資料。將關於圖26更詳細地解釋此等方法。
回應於所需資料,處理裝置2300可使用多工器及/或其他切換裝置來選擇哪些裝置獲得服務以執行給定任務。舉例而言,組態管理器2304可組態多工器,使得至少兩個資料線達到MAC單元2302。以此方式,需要來自多個位址之資料的任務(諸如2D卷積)可較快地執行,此係因為在卷積期間需要乘法之向量或字可在單一時脈中同時到達處理單元。此資料傳送方法可允許諸如加速器2216之處理單元快速地輸出結果。
在一些實施例中,組態管理器2304可能可組態以基於任務之優先權來執行程序。舉例而言,組態管理器2304可經組態以使運行中程序無任何中斷地完成。在彼情況下,組態管理器2304可將任務之指令或組態提供至加速器2216,使該等加速器不間斷地運行,且僅在任務完成時切換多工器。然而,在其他實施例中,組態管理器2304可在其接收到優先權任務(諸如來自外部介面之請求)時中斷任務且重新組態資料選路。儘管如此,在記憶體區塊2308足夠之情況下,記憶體控制器2306可能可組態以利用專屬線投送資料至處理單元或授權對處理單元之存取,該等專屬線在任務完成之前無需改變。此外,在一些實施例中,所有裝置可藉由匯流排連接至組態管理器2304之實體,且裝置可管理裝置本身與匯流排之間的存取(例如,使用與多工器相同之邏輯)。因此,記憶體控制器2306可直接連接至許多記憶體實例或記憶體區塊。
替代地,記憶體控制器2306可直接連接至記憶體子實例。在一些實施例中,每一記憶體實例或區塊可由子實例建構(例如,DRAM可由配置於多個子區塊中的具有獨立資料線之墊建構)。此外,實例可包括DRAM墊、DRAM、記憶組、快閃記憶體墊或SRAM墊或任何其他類型的記憶體中之至少一者。因而,記憶體控制器2306可包括用以直接定址子實例之專屬線,以將管線式記憶體存取期間的潛時減至最小。
在一些實施例中,記憶體控制器2306亦可保持特定記憶體實例所需之邏輯(諸如列/行解碼器、再新邏輯等),且記憶體區塊2308可處置其自身的邏輯。因此,記憶體區塊2308可獲得位址且產生用於傳回\寫入資料之命令。
圖24描繪符合所揭示實施例之例示性記憶體組態圖。在一些實施例中,產生用於處理裝置2200之程式碼或組態的編譯器可執行一方法以藉由預先配置每一區塊中之資料來組態自記憶體區塊2202及2204的載入。舉例而言,編譯器可預先配置資料,使得一任務所需之每一字與一排記憶體實例或記憶體區塊相關。但針對需要比處理裝置2200中之可用記憶體區塊多的記憶體區塊之任務,編譯器可實施使資料配合每一記憶體區塊之多於一個記憶體位置的方法。編譯器亦可依序儲存資料且評估每一記憶體區塊之潛時以避免線錯漏潛時。在一些實施例中,主機可為處理單元之部分,諸如組態管理器2212,但在其他實施例中,編譯器主機可經由一外部介面連接至處理裝置2200。在此等實施例中,主機可執行編譯功能,諸如針對編譯器所描述之編譯功能。
在一些實施例中,組態管理器2212可為CPU或微控制器(uC)。在此等實施例中,組態管理器2212可必須存取記憶體,以提取置放於記憶體中之命令或指令。特定編譯器可產生程式碼且以一方式將該程式碼置放於記憶體中,該方式允許在一記憶體線中及跨許多記憶體組儲存連續命令,以允許亦對所提取命令進行管線式記憶體存取。在此等實施例中,組態管理器2212及記憶體控制器2210可能夠藉由促進管線式記憶體存取來避免線性執行中之列潛時。
程式之線性執行之先前情況描述針對編譯器的辨識及置放指令以允許管線式記憶體執行之方法。然而,其他軟體結構可能更複雜且會需要編譯器辨識其他軟體結構且相應地起作用。舉例而言,在任務需要多個迴路及分支的情況下,編譯器可將所有迴路程式碼置放在單一線內,使得單一線可在無線開放潛時的情況下循環。因而,記憶體控制器2210可能不需要在執行期間改變線。
在一些實施例中,組態管理器2212可包括內部快取記憶體或小記憶體。內部快取記憶體可儲存由組態管理器2212執行以處置分支及迴路的命令舉例而言,內部快取記憶體中之命令可包括用以對用於存取記憶體區塊之加速器組態的指令。
圖25係說明符合所揭示實施例之可能記憶體組態程序2500的例示性流程圖。在便利描述記憶體組態程序2500的情況下,可參考圖22中所描繪及上文所述的元件之識別符。在一些實施例中,程序2500可由一編譯器執行,該編譯器將指令提供至經由一外部介面連接之一主機。在其他實施例中,程序2500可由處理裝置2200之組件(諸如組態管理器2212)執行。
一般而言,程序2500可包括:判定執行任務同時所需的字之一數目;判定可同時自複數個記憶體組中之每一者存取的字之一數目;及當同時所需的字之該數目大於可同時存取的字之該數目時,將同時所需的該數目個字分割在多個記憶體組之間。此外,分割同時所需的該數目個字可包括執行字之一環狀組織及依序地每個記憶體組指派一個字。
更具體言之,程序2500可以步驟2502開始,在該步驟中,編譯器可接收一任務說明。該說明包括所需之計算及/或一優先級等級。
在步驟2504中,編譯器可識別可執行該任務的一加速器或加速器之群組。替代地,編譯器可產生指令,使得諸如組態管理器2212之處理單元可識別用以執行該任務之一加速器。舉例而言,使用所需之計算,組態管理器2212可識別加速器2216之群組中的可處理該任務之加速器。
在步驟2506中,編譯器可判定為了執行該任務需要同時存取的字之一數目。舉例而言,兩個向量之乘法需要存取至少兩個向量,且編譯器因此可判定必須同時存取多個向量字以執行操作。
在步驟2508中,編譯器可判定執行該任務必需的週期之一數目。舉例而言,若該任務需要對四個副產品之卷積操作,則編譯器可判定至少4個週期係執行該任務所必需的。
在步驟2510中,編譯器可將需要同時存取的字置放在不同記憶體組中。以此方式,記憶體控制器2210可經組態以對不同記憶體實例開放多個線且在一時脈循環內存取所需記憶體區塊,而無任何所需之快取資料。
在步驟2512中,編譯器將依序存取的字置放於相同記憶體組中。舉例而言,在需要操作之四個週期的情況下,編譯器可產生用以在單一記憶體區塊中按順序循環寫入所需字的指令,以避免在執行期間在不同記憶體區塊之間改變線。
在步驟2514中,編譯器產生用於程式化諸如組態管理器2212之處理單元的指令。該等指令可指定操作切換裝置(諸如多工器)或對資料匯流排組態之條件。利用此等指令,組態管理器2212可對記憶體控制器2210組態以根據一任務使用專屬通信線將資料自記憶體區塊投送至處理單元或授權對記憶體區塊之存取。
圖26係說明符合所揭示實施例之記憶體讀取程序2600的例示性流程圖。在便利描述記憶體讀取程序2600的情況下,可參考圖22中所描繪及上文所述的元件之識別符。在一些實施例中,如下所述,程序2600可由記憶體控制器2210實施。然而,在其他實施例中,程序2600可由處理裝置2200中之其他元件(諸如組態管理器2212)實施。
在步驟2602中,記憶體控制器2210、組態管理器2212或其他處理單元可接收投送來自一記憶體組之資料或授權對一記憶體組之存取的一指示。請求可指定一位址及記憶體區塊。
在一些實施例中,請求可經由指定線2218中之讀取命令及線2220中之位址的資料匯流排接收。在其他實施例中,請求可經由連接至記憶體控制器2210之解多工器接收。
在步驟2604中,組態管理器2212、一主機或其他處理單元可查詢一內部暫存器。該內部暫存器可包括關於至記憶體組之開放線、開放位址、開放記憶體區塊及/或即將進行的任務的資訊。基於該內部暫存器中之資訊,可判定是否存在對記憶體組開放之線及/或記憶體區塊在步驟2602中是否接收到請求。替代地或另外,記憶體控制器2210可直接查詢該內部暫存器。
若該內部暫存器指示記憶體組未在開放線中載入(步驟2606:否),則程序2600可繼續至步驟2616,且可將一線載入至與接收之位址相關聯的一記憶體組。另外,在步驟2616中,記憶體控制器2210或諸如組態管理器2212之處理單元可發信一延遲至請求來自記憶體位址之資訊的元件。舉例而言,若加速器2216正在請求位於已被佔用之記憶體區塊的記憶體資訊,則在步驟2618中,記憶體控制器2210可將一延遲信號發送至加速器。在步驟2620中,組態管理器2212或記憶體控制器2210可更新該內部暫存器以指示一線已經對一新的記憶體組或一新的記憶體區塊開放。
若該內部暫存器指示記憶體組被載入一開放線中(步驟2606:是),則程序2600可繼續至2608。在步驟2608中,可判定載入記憶體組之線是否正用於不同位址。若該線正用於不同位址(步驟2608:是),則此將指示單一區塊中存在兩個實例,且因此,不能同時存取該兩個實例。因此,可在步驟2616中將一錯誤或豁免信號發送至請求來自記憶體位址之資訊的元件。但是,若該線並不用於不同位址(步驟2608:否),則一線可針對位址開放且自目標記憶體組擷取資料,且繼續至步驟2614以將資料傳輸至至請求來自記憶體位址之資訊的元件。
利用程序2600,處理裝置2200能夠建立處理單元與含有執行任務所需之資訊的記憶體區塊或記憶體實例之間的直接連接。資料之此組織可實現自不同記憶體實例中之經組織向量讀取資訊,以及允許在一裝置請求複數個此等位址時同時自不同記憶體區塊擷取資訊。
圖27係說明符合所揭示實施例之執行程序2700的例示性流程圖。在便利描述執行程序2700的情況下,可參考圖22中所描繪及上文所述的元件之識別符。
在步驟2702中,編譯器或諸如組態管理器2212之區域單元可接收需要執行之一任務的一指示。該任務可包括單一操作(例如,乘法)或更複雜操作(例如,矩陣之間的卷積)。該任務亦可指示一所需計算。
在步驟2704中,編譯器或組態管理器2212可判定執行該任務同時所需的字之一數目。舉例而言,組態一編譯器可判定同時需要兩個字以執行向量之間的乘法。在另一實例-2D卷積任務-中,組態管理器2212可判定矩陣之間的卷積需要「n」乘以「m」個字,其中「n」及「m」係矩陣維度。此外,在步驟2704中,組態管理器2212亦可判定執行該任務必需的週期之一數目。
在步驟2706中,視步驟2704中之判定而定,編譯器可在安置於基板上的複數個記憶體組中寫入需要同時存取的字。舉例而言,當可同時自複數個記憶體組中之一者存取的字之一數目一數目小於同時所需的字之該數目時,編譯器可組織多個記憶體組中之資料以利於在一時脈內對不同所需字的存取。此外,當組態管理器2212或編譯器判定執行該任務必需的週期之一數目時,編譯器可在複數個記憶體組之單一記憶體組中寫入順序週期中所需的字,以防止記憶體組之間的線之切換。
在步驟2708中,記憶體控制器2210可經組態以使用一第一記憶體線自來自複數個記憶體組或區塊之一第一記憶體組讀取至少一個第一字或授權對該至少一個第一字的存取。
在步驟2170中,處理單元(例如加速器2216中之一者)可使用該至少一個第一字來處理該任務。
在步驟2712中,記憶體控制器2210可經組態以開放一第二記憶體組中之一第二記憶體線。舉例而言,在於步驟2706中寫入任務所需之資訊的情況下,基於該等任務且使用管線式記憶體存取方法,記憶體控制器2210可經組態以開放一第二記憶體區塊中之一第二記憶體線。在一些實施例中,該第二記憶體線可在步驟2170中之任務將要完成時開放。舉例而言,若一任務需要100個時脈,則該第二記憶體線可在第90個時脈中開放。
在一些實施例中,步驟2708至2712可在一個線存取週期內執行。
在步驟2714中,記憶體控制器2210可經組態以授權使用在步驟2710中開放的該第二記憶體線自來自該第二記憶體組的至少一個第二字存取資料。
在步驟2176中,處理單元(例如加速器2216中之一者)可使用該至少第二字來處理任務。
在步驟2718中,記憶體控制器2210可經組態以開放該第一記憶體組中之一第二記憶體線。舉例而言,基於任務且使用管線式記憶體存取方法,記憶體控制器2210可經組態以開放至該第一記憶體區塊之一第二記憶體線。在一些實施例中,至該第一區塊之該第二記憶體線可在步驟2176中之任務將要完成時開放。
在一些實施例中,步驟2714至2718可在一個線存取週期內執行。
在步驟2720中。記憶體控制器2210可使用該第一記憶組中之一第二記憶體線或一第三記憶組中之一第一線自來自複數個記憶體組或區塊之第一記憶體組讀取至少一個第三字或授權對該至少一個第三字的存取,且在不同記憶體組中繼續。
已出於說明之目的呈現先前描述。先前描述並不詳盡且不限於所揭示之精確形式或實施例。修改及調適對熟習此項技術者而言將自本說明書之考量及所揭示實施例的實踐顯而易見。另外,儘管所揭示實施例之態樣被描述為儲存於記憶體中,但熟習此項技術者將瞭解,此等態樣亦可儲存於其他類型之電腦可讀媒體上,諸如次要儲存裝置,例如,硬碟或CD ROM,或其他形式之RAM或ROM、USB媒體、DVD、藍光、4K超HD藍光或其他光碟機媒體。
基於書面描述及所揭示方法之電腦程式在有經驗開發者之技能內。各種程式或程式模組可使用熟習此項技術者已知的技術中之任一者產生,或可結合現有軟體進行設計。舉例而言,程式區段或程式模組可用或藉助於.Net Framework、.Net Compact Framework (及相關語言,諸如Visual Basic、C等)、Java、C++、Objective-C、HTML、HTML/AJAX組合、XML或包括Java小程式之HTML來設計。
此外,儘管本文中已經描述了說明性實施例,但任何及所有實施例之範疇具有如熟習此項技術者基於本發明將瞭解的等效元件、修改、省略、(例如跨各種實施例之態樣的)組合、調適及/或更改。申請專利範圍中之限制應基於申請專利範圍中所使用之語言來廣泛地解譯,且不限於本說明書中所描述或在本申請案之審查期間的實例。實例應解釋為非排他性的。此外,所揭示方法之步驟可以包括藉由對步驟重排序及/或插入或刪除步驟的任何方式修改。因此,希望本說明書及實例僅僅被視為說明性的,而真實範疇及精神係由技術方案及其等效物之完整範疇指示。
100:CPU 110:處理單元 120a:處理器子單元 120b:處理器子單元 130:快取記憶體 140a:記憶體 140b:記憶體 200:GPU 210:處理單元 220a:處理器子單元 220b:處理器子單元 220c:處理器子單元 220d:處理器子單元 220e:處理器子單元 220f:處理器子單元 220g:處理器子單元 220h:處理器子單元 220i:處理器子單元 220j:處理器子單元 220k:處理器子單元 220l:處理器子單元 220m:處理器子單元 220n:處理器子單元 220o:處理器子單元 220p:處理器子單元 230a:快取記憶體 230b:快取記憶體 230c:快取記憶體 230d:快取記憶體 240:快取記憶體 250a:記憶體 250b:記憶體 250c:記憶體 250d:記憶體 300:硬體晶片 300':硬體晶片 310a:處理群組 310b:處理群組 310c:處理群組 310d:處理群組 320a:邏輯及控制子單元 320b:邏輯及控制子單元 320c:邏輯及控制子單元 320d:邏輯及控制子單元 320e:邏輯及控制子單元 320f:邏輯及控制子單元 320g:邏輯及控制子單元 320h:邏輯及控制子單元 330a:專屬記憶體實例 330b:專屬記憶體實例 330c:專屬記憶體實例 330d:專屬記憶體實例 330e:專屬記憶體實例 330f:專屬記憶體實例 330g:專屬記憶體實例 330h:專屬記憶體實例 340a:控制件 340b:控制件 340c:控制件 340d:控制件 350:主機 350a:處理器子單元 350b:處理器子單元 350c:處理器子單元 350d:處理器子單元 360a:匯流排 360b:匯流排 360c:匯流排 360d:匯流排 360e:匯流排 360f:匯流排 400:程序 410:處理群組 420:專屬記憶體實例 430:處理器子單元 440:處理元件 450:位址產生器 460:控制件 500:程序 510:處理群組 520:專屬記憶體實例 530:處理元件 600:處理群組 610:處理器子單元 620:記憶體 630:匯流排 640:處理元件 650:加速器 660:輸入多工器 670:輸出DEMUX 710:基板 720a:記憶組 720b:組 720c:組 720d:組 720e:組 720f:組 720g:組 720h:組 730a:處理器子單元 730b:處理器子單元 730c:處理器子單元 730d:處理器子單元 730e:處理器子單元 730f:處理器子單元 730g:處理器子單元 730h:處理器子單元 740a:匯流排 740b:匯流排 740c:匯流排 740d:匯流排 740e:匯流排 740f:匯流排 740g:匯流排 740h:匯流排 750a:匯流排 750b:匯流排 750c:匯流排 750d:匯流排 750e:匯流排 750f:匯流排 750g:匯流排 750h:匯流排 750i:匯流排 750j:匯流排 760:架構 770a:記憶體晶片 770b:記憶體晶片 770c:記憶體晶片 770d:記憶體晶片 800:方法 810:步驟 820:步驟 830:步驟 840:步驟 850:步驟 900:記憶組 910:列解碼器 920:全域感測放大器 930-1:墊 930-2:墊 940-1:墊 940-2:墊 950:字線 960:位元線 1000:墊 1010-1:區域放大器 1010-2:區域放大器 1010-x:區域放大器 1020-1:字線驅動器 1020-2:字線驅動器 1020-x:字線驅動器 1030-1:胞元 1030-2:胞元 1030-3:胞元 1040:字線 1050:位元線 1100:記憶體組 1110:記憶體組列解碼器 1120:記憶體組行解碼器 1121a:位元線 1121b:位元線 1130a:子組控制器 1130b:子組控制器 1130c:子組控制器 1131a:匯流排 1131b:匯流排 1131c:匯流排 1140a:解算器 1140b:解算器 1140c:解算器 1150a:邏輯 1150b:邏輯 1150c:邏輯 1160a:解碼器 1160b:解碼器 1160c:解碼器 1160d:解碼器 1160e:解碼器 1160f:解碼器 1160g:解碼器 1160h:解碼器 1160i:解碼器 1170a:記憶體子組 1170b:記憶體子組 1170c:記憶體子組 1180a:解碼器 1180b:解碼器 1180c:解碼器 1181a:位元線 1181b:位元線 1190a-1:墊 1190a-2:墊 1190a-x:墊 1190b-1:墊 1190b-2:墊 1190b-x:墊 1190c-1:墊 1190c-2:墊 1190c-x:墊 1200:記憶體子組 1210:記憶體控制器 1220a:熔絲及比較器 1220b:熔絲及比較器 1230a:列解碼器 1230b:列解碼器 1240a:墊 1240b:墊 1260a-1:胞元 1260a-2:胞元 1260a-x:胞元 1260b-1:胞元 1260b-2:胞元 1260b-x:胞元 1250a:行解碼器 1250b:行解碼器 1251:位元線 1253:位元線 1300:記憶體晶片 1301:基板 1302:位址管理器 1304(a,a):記憶體組 1304(z,z):記憶體組 1306:記憶體邏輯 1308:商業邏輯 1310:冗餘商業邏輯 1312:撤銷啟動開關 1314:啟動開關 1400:冗餘邏輯區塊集合 1402:位址匯流排 1404:資料匯流排 1500:邏輯區塊 1504:提取電路 1506:解碼器 1508:暫存器 1510:計算單元 1512:重複計算單元 1514:開關電路 1516:開關電路 1518:寫回電路 1602:邏輯區塊 1604:熔斷識別件 1614:位址匯流排 1616:命令線 1618:資料線 1702:單元 1712:單元 1728(a):開關電路 1728(c):開關電路 1730:樣本電路/取樣電路 1804:I/O區塊 1806:單元 1808:開關箱 1810:連接箱 1902(a):單元 1902(b):單元 1902(c):單元 1902(d):單元 1902(e):單元 1902(f):單元 1904(a):組態開關 1904(b):組態開關 1904(c):組態開關 1904(d):組態開關 1904(e):組態開關 1904(f):組態開關 1904(g):組態開關 1904(h):組態開關 2000:冗餘區塊啟用程序 2002:步驟 2004:步驟 2006:步驟 2008:步驟 2010:步驟 2100:位址指派程序 2102:步驟 2104:步驟 2106:步驟 2108:步驟 2110:步驟 2112:步驟 2114:步驟 2116:步驟 2118:步驟 2120:步驟 2122:步驟 2200:處理裝置 2202:第一記憶體區塊 2204:第二記憶體區塊 2210:記憶體控制器 2212:組態管理器 2214:邏輯區塊 2216(a):加速器 2216(n):加速器 2218:線 2220:線 2230:主機 2300:處理裝置 2302:MAC單元 2304:組態管理器 2306:記憶體控制器 2308(a):記憶體區塊 2308(b):記憶體區塊 2308(c):記憶體區塊 2308(d):記憶體區塊 2500:記憶體組態程序 2502:步驟 2504:步驟 2506:步驟 2508:步驟 2510:步驟 2512:步驟 2514:步驟 2600:記憶體讀取程序 2602:步驟 2604:步驟 2606:步驟 2608:步驟 2610:步驟 2612:步驟 2614:步驟 2616:步驟 2618:步驟 2620:步驟 2700:執行程序 2702:步驟 2704:步驟 2706:步驟 2708:步驟 2710:步驟 2712:步驟 2714:步驟 2716:步驟 2718:步驟 2720:步驟
併入於本揭示內容中且構成本揭示內容之一部分的附圖說明了各種所揭示實施例。在該等圖式中:
圖1係中央處理單元(CPU)之圖解表示。
圖2係圖形處理單元(GPU)之圖解表示。
圖3A係符合所揭示實施例之例示性硬體晶片之一實施例的圖解表示。
圖3B係符合所揭示實施例之例示性硬體晶片之另一實施例的圖解表示。
圖4係由符合所揭示實施例之例示性硬體晶片執行之一般命令的圖解表示。
圖5係由符合所揭示實施例之例示性硬體晶片執行之特殊化命令的圖解表示。
圖6係供符合所揭示實施例之例示性硬體晶片使用之處理群組的圖解表示。
圖7A係符合所揭示實施例之處理群組之矩形陣列的圖解表示。
圖7B係符合所揭示實施例之處理群組之橢圓形陣列的圖解表示。
圖7C係符合所揭示實施例之硬體晶片之一陣列的圖解表示。
圖7D係符合所揭示實施例之硬體晶片之另一陣列的圖解表示。
圖8係描繪用於編譯一系列之指令以供在符合所揭示實施例之例示性硬體晶片上執行之例示性方法的流程圖。
圖9係記憶體組之圖解表示。
圖10係記憶體組之圖解表示。
圖11係符合所揭示實施例的具有子組控制件之例示性記憶體組之一實施例的圖解表示。
圖12係符合所揭示實施例的具有子組控制件之例示性記憶體組之另一實施例的圖解表示。
圖13係符合所揭示實施例之例示性記憶體晶片的方塊圖。
圖14係符合所揭示實施例之例示性冗餘邏輯區塊集合的方塊圖。
圖15係符合所揭示實施例之例示性邏輯區塊的方塊圖。
圖16係符合所揭示實施例的與匯流排連接之例示性邏輯區塊的方塊圖。
圖17係符合所揭示實施例之串聯連接之例示性邏輯區塊的方塊圖。
圖18係符合所揭示實施例之成二維陣列連接之例示性邏輯區塊的方塊圖。
圖19係符合所揭示實施例之複合連接之例示性邏輯區塊的方塊圖。
圖20係說明符合所揭示實施例之冗餘區塊啟用程序的例示性流程圖。
圖21係說明符合所揭示實施例之位址指派程序的例示性流程圖。
圖22提供符合所揭示實施例之例示性處理裝置的方塊圖。
圖23係符合所揭示實施例之例示性處理裝置的方塊圖。
圖24包括符合所揭示實施例之例示性記憶體組態圖。
圖25係說明符合所揭示實施例之記憶體組態程序的例示性流程圖。
圖26係說明符合所揭示實施例之記憶體讀取程序的例示性流程圖。
圖27係說明符合所揭示實施例之程序執行的例示性流程圖。
800:方法
810:步驟
820:步驟
830:步驟
840:步驟
850:步驟

Claims (47)

  1. 一種在記憶體晶片上的分散式處理器,包含: 一半導體基板; 安置於該半導體基板上的複數個記憶體組; 安置於該半導體基板上且連接至該複數個記憶體組中之每一者的一記憶體控制器;及 安置於該半導體基板上的複數個處理單元,該複數個處理單元中之每一者連接至該記憶體控制器,該複數個處理單元包括一組態管理器; 其中該組態管理器經組態以: 基於在該記憶體晶片處從該記憶體晶片外部的一主機所接收的一指令,接收待執行的一任務的一第一指示,該任務需要至少一次計算; 向來自安置於該半導體基板上的該複數個處理單元的至少一個選定處理單元發信,該發信基於用於執行該至少一次計算的該選定處理單元之一能力;及 將一第二指示傳輸至該至少一個選定處理單元,且其中該記憶體控制器經組態以: 使用至少一個通信線,將來自安置於該半導體基板上的該複數個記憶體組的至少兩個記憶體組之資料投送至安置於該半導體基板上的該至少一個選定處理單元,該至少一個通信線係經由該記憶體控制器連接至該至少兩個記憶體組及該至少一個選定處理單元。
  2. 如請求項1所述之處理器,其中傳輸該第二指示包含:通信一指令以由該至少一個選定處理單元執行該任務,且其中該至少一個選定處理單元經組態以傳輸資料至該記憶體控制器或從該記憶體控制器接收資料。
  3. 如請求項1所述之處理器,其中傳輸該第二指示包含:通信該指令以投送資料至該記憶體控制器。
  4. 如請求項1所述之處理器,其中該至少一個選定處理單元經組態以:在對來自該至少兩個記憶體組的一第一記憶體組中的一開放記憶體線的一系列存取的期間,開放來自該至少兩個記憶體組的一第二記憶體組中的一記憶體線。
  5. 如請求項4所述之處理器,其中該選定處理單元經組態以:在一通信線對該第一記憶體組開放的一線存取時間段的期間,傳送資料至該第二記憶體組。
  6. 如請求項1所述之處理器,其中: 該記憶體控制器包含來自該複數個記憶體組的至少兩個資料輸入以及連接至該複數個處理單元中之每一者的至少兩個資料輸出; 該記憶體控制器經組態以同時地經由該兩個資料輸入接收來自兩個記憶體組的資料;及 該記憶體控制器經組態以同時地將經由該兩個資料輸入所接收的資料經由該兩個資料輸出傳輸至該至少一個選定處理單元。
  7. 如請求項1所述之處理器,其中該複數個處理單元包含經組態用於預定義任務的複數個加速器。
  8. 如請求項7所述之處理器,其中該複數個加速器包含下列中的至少一個:一向量乘法累加單元或一直接記憶體存取。
  9. 如請求項7所述之處理器,其中該組態管理器包含下列中的至少一個:一RISC處理器或一微控制器。
  10. 如請求項1所述之處理器,還包含連接至該些記憶體組的一外部介面。
  11. 如請求項1所述之處理器,其中該處理器還經組態以: 透過一第一記憶體線從一第一位址提供資料至該複數個處理單元中的至少一者,並在一線存取時間段內,開放在一第二記憶體線中的一第二位址,該第一位址在該複數個記憶體組的一第一記憶體組中,該第二位址在該複數個記憶體組的一第二記憶體組中;及 透過該第二記憶體線從該第二位址提供資料至該複數個處理單元中的該至少一者,並在一第二線存取時間段內,開放該第一記憶體線中的該第一記憶體組中的一第三位址。
  12. 如請求項1所述之處理器,其中一編譯器經組態以: 判定執行該任務同時所需的字之一數目; 判定自該複數個記憶體組中之每一者可同時存取的字之一數目;及 當同時所需的字之該數目大於可同時存取的字之該數目時,將同時所需的字之該數目分割在多個記憶體組之間。
  13. 如請求項12所述之處理器,其中該字包含機器指令。
  14. 如請求項1所述之處理器,其中該組態管理器包含儲存將被傳輸至該複數個處理單元中的至少一者的一命令的一區域記憶體。
  15. 如請求項1所述之處理器,其中該記憶體控制器經組態以:回應於接收來自一外部介面的一請求而中斷該任務。
  16. 如請求項1所述之處理器,其中該複數個記憶體組包括下列中的至少一個:DRAM墊、DRAM、記憶組,快閃記憶體墊或SRAM墊。
  17. 如請求項1所述之處理器,其中該複數個處理單元包含:至少一個算術邏輯單元、至少一個向量處置邏輯單元、至少一個暫存器及至少一個直接記憶體存取。
  18. 如請求項1所述之處理器,其中該組態管理器與該複數個處理單元經組態以:在完成一任務後,在彼此間交遞對該記憶體控制器的存取。
  19. 一種用於操作分散式記憶體裝置的方法,包含: 藉由一編譯器編譯用於該分散式記憶體裝置的一任務,該任務需要至少一次計算,該編譯包含: 判定執行該任務同時所需的字之一數目,及 提供用於進行如下操作之指令:當可同時自安置於基板上之複數個記憶體組中之一者存取的字的一數目小於同時所需的字之該數目時,該複數個記憶體組中寫入必須同時存取之字; 藉由安置於該基板上之一組態管理器接收執行該任務之一指示;及 回應於接收到該指示,對安置於該基板中之一記憶體控制器組態以: 在一第一線存取週期內: 使用一第一記憶體線自來自該複數個記憶體組之一第一記憶體組存取至少一個第一字, 將該至少一個第一字發送至至少一個處理單元,且 開放一第二記憶體組中之一第一記憶體線以自來自該複數個記憶體組之該第二記憶體組存取一第二位址,且 在第二線存取週期內: 使用該第一記憶體線自該第二記憶體組存取至少一個第二字, 將該至少一個第二字發送至至少一個處理單元,且 使用該第一記憶體組中之一第二記憶體線自該第一記憶體組存取一第三位址。
  20. 如請求項19所述之方法,其中編譯該任務還包含: 判定執行該任務必須的週期之一數目;及 在該複數個記憶體組的一單一記憶體組中按順序循環寫入所需之字。
  21. 如請求項19所述之方法,還組態一選定處理單元以在該第一線存取週期內,傳輸資料至該第二記憶體組。
  22. 如請求項19所述之方法,其中 該記憶體控制器包含來自該複數個記憶體組的至少兩個資料輸入以及連接至該至少一個處理單元中之每一者的至少兩個資料輸出;及 還包含組態該記憶體控制器以: 同時地經由該兩個資料輸入接收來自兩個記憶體組的資料;及 同時地將經由該兩個資料輸入所接收的資料經由該兩個資料輸出傳輸至至少一個選定處理單元。
  23. 如請求項19所述之方法,其中該至少一個處理單元包含經組態用於預定義任務的複數個加速器。
  24. 如請求項23所述之方法,其中該複數個加速器包含下列中的至少一個:一向量乘法累加單元或一直接記憶體存取。
  25. 如請求項23所述之方法,其中該組態管理器包含下列中的至少一個:一RISC處理器或一微控制器。
  26. 如請求項19所述之方法,還包含連接至該複數個記憶體組的一外部介面。
  27. 如請求項19所述之方法,該編譯還包含: 當可同時自該複數個記憶體組中之一者存取的字的數目小於同時所需的字之該數目時,將同時所需的字之該數目分割在多個記憶體組之間。
  28. 如請求項27所述之方法,其中該字包含機器指令。
  29. 如請求項19所述之方法,其中該組態管理器包含儲存將被傳輸至該複數個處理單元中的至少一個的一命令的一區域記憶體。
  30. 如請求項19所述之方法,還包含組態該記憶體控制器以:回應於接收來自一外部介面的一請求而中斷該任務。
  31. 如請求項19所述之方法,其中該複數個記憶體組包括下列中的至少一個:DRAM墊、DRAM、記憶組,快閃記憶體墊或SRAM墊。
  32. 如請求項19所述之方法,其中該至少一個處理單元包含:至少一個算術邏輯單元、至少一個向量處置邏輯單元、至少一個暫存器及至少一個直接記憶體存取。
  33. 如請求項19所述之方法,還包含組態該組態管理器與該至少一個處理單元以在完成一任務後,在彼此間交遞對該記憶體控制器的存取。
  34. 一種儲存指令之非暫時性電腦可讀媒體,當由至少一個處理器執行時,使該至少一個處理器以: 判定執行任務同時所需的字之一數目,該任務需要至少一次計算; 當可同時自安置於基板上之複數個記憶體組中之一者存取的字之數目小於同時所需的字之該數目時,在該複數個記憶體組中寫入必須同時存取之字; 將執行該任務的一指示傳輸到安置於該基板上之一組態管理器;及 傳輸指令以對安置於該基板上之記憶體控制器組態以: 在第一線存取週期內: 使用一第一記憶體線自來自該複數個記憶體組之一第一記憶體組存取至少一個第一字, 將該至少一個第一字發送至至少一個處理單元,且 開放第二記憶體組中之一第一記憶體線以自來自該複數個記憶體組之該第二記憶體組存取一第二位址,且 在第二線存取週期內: 使用該第一記憶體線自該第二記憶體組存取至少一個第二字, 將該至少一個第二字發送至至少一個處理單元,且 使用該第一記憶體組中之第二記憶體線自該第一記憶體組存取一第三位址。
  35. 如請求項34所述之非暫時性電腦可讀媒體,其中一選定處理單元經組態以在該第一線存取週期內,傳輸資料至該第二記憶體組。
  36. 如請求項34所述之非暫時性電腦可讀媒體,其中 該記憶體控制器包含來自該複數個記憶體組的至少兩個資料輸入以及連接至該至少一個處理單元中之每一者的至少兩個資料輸出; 該記憶體控制器經組態以同時地經由該兩個資料輸入接收來自兩個記憶體組的資料;及 該記憶體控制器經組態以同時地將經由該兩個資料輸入所接收的資料經由該兩個資料輸出傳輸至至少一個選定處理單元。
  37. 如請求項34所述之非暫時性電腦可讀媒體,其中該至少一個處理單元包含經組態用於預定義任務的複數個加速器。
  38. 如請求項37所述之非暫時性電腦可讀媒體,其中該複數個加速器包含下列中的至少一個:一向量乘法累加單元或一直接記憶體存取。
  39. 如請求項37所述之非暫時性電腦可讀媒體,其中該組態管理器包含下列中的至少一個:一RISC處理器或一微控制器。
  40. 如請求項34所述之非暫時性電腦可讀媒體,還包含連接至該複數個記憶體組的一外部介面。
  41. 如請求項34所述之非暫時性電腦可讀媒體,當可同時自該複數個記憶體組中之一者存取的字的數目小於同時所需的字之該數目時,將同時所需的字之該數目分割在多個記憶體組之間。
  42. 如請求項41所述之非暫時性電腦可讀媒體,其中該字包含機器指令。
  43. 如請求項34所述之非暫時性電腦可讀媒體,其中該組態管理器包含儲存將被傳輸至該複數個處理單元中的至少一個的一命令的一區域記憶體。
  44. 如請求項34所述之非暫時性電腦可讀媒體,其中該記憶體控制器經組態以:回應於接收來自一外部介面的一請求而中斷該任務。
  45. 如請求項34所述之非暫時性電腦可讀媒體,其中該複數個記憶體組包括下列中的至少一個:DRAM墊、DRAM、記憶組,快閃記憶體墊或SRAM墊。
  46. 如請求項34所述之非暫時性電腦可讀媒體,其中該至少一個處理單元包含:至少一個算術邏輯單元、至少一個向量處置邏輯單元、至少一個暫存器及至少一個直接記憶體存取。
  47. 如請求項34所述之非暫時性電腦可讀媒體,其中該組態管理器與該至少一個處理單元經組態以在完成一任務後,在彼此間交遞對該記憶體控制器的存取。
TW111132554A 2017-07-30 2018-07-30 具有以記憶體為基礎的分散式處理器架構的記憶體晶片 TW202301125A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201762538724P 2017-07-30 2017-07-30
US201762538722P 2017-07-30 2017-07-30
US62/538,722 2017-07-30
US62/538,724 2017-07-30
US201762548990P 2017-08-23 2017-08-23
US62/548,990 2017-08-23

Publications (1)

Publication Number Publication Date
TW202301125A true TW202301125A (zh) 2023-01-01

Family

ID=65233543

Family Applications (2)

Application Number Title Priority Date Filing Date
TW111132554A TW202301125A (zh) 2017-07-30 2018-07-30 具有以記憶體為基礎的分散式處理器架構的記憶體晶片
TW107126383A TWI779069B (zh) 2017-07-30 2018-07-30 具有以記憶體為基礎的分散式處理器架構的記憶體晶片

Family Applications After (1)

Application Number Title Priority Date Filing Date
TW107126383A TWI779069B (zh) 2017-07-30 2018-07-30 具有以記憶體為基礎的分散式處理器架構的記憶體晶片

Country Status (7)

Country Link
US (10) US11023336B2 (zh)
EP (2) EP4187539B1 (zh)
JP (1) JP7242634B2 (zh)
KR (1) KR20200047551A (zh)
CN (2) CN113918481A (zh)
TW (2) TW202301125A (zh)
WO (1) WO2019025864A2 (zh)

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102369209B1 (ko) 2017-02-23 2022-02-28 세레브라스 시스템즈 인코포레이티드 가속화된 심층 학습
WO2018193379A1 (en) 2017-04-17 2018-10-25 Cerebras Systems Inc. Backpressure for accelerated deep learning
US10515303B2 (en) 2017-04-17 2019-12-24 Cerebras Systems Inc. Wavelet representation for accelerated deep learning
US11488004B2 (en) 2017-04-17 2022-11-01 Cerebras Systems Inc. Neuron smearing for accelerated deep learning
JP7242634B2 (ja) * 2017-07-30 2023-03-20 ニューロブレード リミテッド メモリチップ
US11514996B2 (en) 2017-07-30 2022-11-29 Neuroblade Ltd. Memory-based processors
US11144316B1 (en) 2018-04-17 2021-10-12 Ali Tasdighi Far Current-mode mixed-signal SRAM based compute-in-memory for low power machine learning
WO2020044238A1 (en) * 2018-08-29 2020-03-05 Cerebras Systems Inc. Processor element redundancy for accelerated deep learning
EP3647801A1 (de) * 2018-10-30 2020-05-06 dSPACE digital signal processing and control engineering GmbH Verfahren zur überprüfung eines fpga-programms
GB2580151B (en) * 2018-12-21 2021-02-24 Graphcore Ltd Identifying processing units in a processor
EP3966698A4 (en) * 2019-05-07 2023-01-18 Memryx Inc. ARCHITECTURE OF A MEMORY PROCESSING UNIT
EP3994573A4 (en) * 2019-07-03 2022-08-10 Huaxia General Processor Technologies Inc. SYSTEM AND ARCHITECTURE OF A PURE FUNCTIONAL NEURAL NETWORK ACCELERATOR
US20210011732A1 (en) * 2019-07-09 2021-01-14 MemryX Inc. Matrix Data Reuse Techniques in Processing Systems
CN114586019A (zh) * 2019-08-13 2022-06-03 纽罗布拉德有限公司 基于存储器的处理器
US20220269645A1 (en) 2019-08-13 2022-08-25 Neuroblade Ltd. Memory mat as a register file
US11055003B2 (en) * 2019-08-20 2021-07-06 Micron Technology, Inc. Supplemental AI processing in memory
US11182110B1 (en) * 2019-08-21 2021-11-23 Xilinx, Inc. On-chip memory block circuit
US11449739B2 (en) 2019-08-22 2022-09-20 Google Llc General padding support for convolution on systolic arrays
US11573705B2 (en) * 2019-08-28 2023-02-07 Micron Technology, Inc. Artificial intelligence accelerator
US11017842B2 (en) 2019-08-29 2021-05-25 Micron Technology, Inc. Copy data in a memory system with artificial intelligence mode
US11650746B2 (en) * 2019-09-05 2023-05-16 Micron Technology, Inc. Intelligent write-amplification reduction for data storage devices configured on autonomous vehicles
US10915298B1 (en) 2019-10-08 2021-02-09 Ali Tasdighi Far Current mode multiply-accumulate for compute in memory binarized neural networks
CN112783555A (zh) * 2019-11-11 2021-05-11 深圳市中兴微电子技术有限公司 基于risc-v向量扩展指令的编码处理方法及装置、存储介质
EP3841530B1 (en) * 2019-11-15 2023-11-08 Kunlunxin Technology (Beijing) Company Limited Distributed ai training topology based on flexible cable connection
US20230119126A1 (en) * 2019-12-19 2023-04-20 Google Llc Processing sequential inputs using neural network accelerators
US11610104B1 (en) 2019-12-30 2023-03-21 Ali Tasdighi Far Asynchronous analog accelerator for fully connected artificial neural networks
US11615256B1 (en) 2019-12-30 2023-03-28 Ali Tasdighi Far Hybrid accumulation method in multiply-accumulate for machine learning
KR20210092467A (ko) * 2020-01-16 2021-07-26 삼성전자주식회사 로컬 프로세서와 글로벌 프로세서를 포함하는 메모리 다이, 메모리 장치, 및 전자 장치
TWI727643B (zh) * 2020-02-05 2021-05-11 旺宏電子股份有限公司 人工智慧加速器以及其處理方法
RU2732201C1 (ru) * 2020-02-17 2020-09-14 Российская Федерация, от имени которой выступает ФОНД ПЕРСПЕКТИВНЫХ ИССЛЕДОВАНИЙ Метод построения процессоров для вывода в сверточных нейронных сетях, основанный на потоковых вычислениях
CN111600204B (zh) * 2020-06-05 2022-03-18 杭州交联电力设计股份有限公司 一种单组电气设备的自动排布方法
US11409594B2 (en) * 2020-06-27 2022-08-09 Intel Corporation Self-supervised learning system for anomaly detection with natural language processing and automatic remediation
US11693699B2 (en) 2020-07-02 2023-07-04 Apple Inc. Hybrid memory in a dynamically power gated hardware accelerator
US11604645B2 (en) * 2020-07-22 2023-03-14 Flex Logix Technologies, Inc. MAC processing pipelines having programmable granularity, and methods of operating same
US11809848B2 (en) * 2020-08-28 2023-11-07 Siemens Industry Software Inc. Method and system for protocol processing
CN112256409B (zh) * 2020-09-15 2022-03-04 中科驭数(北京)科技有限公司 基于多个数据库加速器的任务执行方法及装置
US11556790B2 (en) * 2020-09-30 2023-01-17 Micron Technology, Inc. Artificial neural network training in memory
WO2022082115A1 (en) * 2020-10-16 2022-04-21 Neuroblade Ltd. Memory appliances for memory intensive operations
US11977915B2 (en) 2020-12-15 2024-05-07 Western Digital Technologies, Inc. Non-volatile memory with intelligent compute task distribution
US11314508B1 (en) * 2021-02-01 2022-04-26 National Technology & Engineering Solutions Of Sandia, Llc FPGA-based computing system for processing data in size, weight, and power constrained environments
TWI775402B (zh) * 2021-04-22 2022-08-21 臺灣發展軟體科技股份有限公司 資料處理電路及故障減輕方法
CN113254392B (zh) * 2021-07-12 2022-06-14 深圳比特微电子科技有限公司 用于片上系统的数据存储方法和基于片上系统的设备
WO2023004347A1 (en) * 2021-07-20 2023-01-26 The Regents Of The University Of California Run-time configurable architectures
KR20230068572A (ko) * 2021-11-11 2023-05-18 삼성전자주식회사 메모리 어레이 내의 연결 회로
TWI779923B (zh) * 2021-11-11 2022-10-01 南亞科技股份有限公司 圖案驗證系統及其操作方法
CN116264089A (zh) * 2021-12-15 2023-06-16 长鑫存储技术有限公司 存储器
JP7243006B1 (ja) 2021-12-20 2023-03-22 エッジコーティックス ピーティーイー. リミテッド ネットワークオンチップリコンフィギュアビリティ
WO2023128009A1 (ko) * 2021-12-30 2023-07-06 리벨리온 주식회사 뉴럴 프로세싱 장치 및 그의 동기화 방법
US12014798B2 (en) 2022-03-31 2024-06-18 Macronix International Co., Ltd. In memory data computation and analysis
TWI811038B (zh) * 2022-07-25 2023-08-01 慧榮科技股份有限公司 記憶體控制器與偵錯訊息輸出控制方法
CN115328849B (zh) * 2022-08-10 2023-10-03 苏州迅芯微电子有限公司 一种用于数据发送和接收的芯片组合结构
US11630605B1 (en) 2022-08-10 2023-04-18 Recogni Inc. Methods and systems for processing read-modify-write requests
US20240070107A1 (en) * 2022-08-30 2024-02-29 Micron Technology, Inc. Memory device with embedded deep learning accelerator in multi-client environment
CN115237036B (zh) * 2022-09-22 2023-01-10 之江实验室 一种针对晶圆级处理器系统的全数字化管理装置
US11896952B1 (en) * 2023-10-12 2024-02-13 King Faisal University Adsorbent using biowaste and plastic waste for wastewater treatment

Family Cites Families (269)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4724520A (en) * 1985-07-01 1988-02-09 United Technologies Corporation Modular multiport data hub
US5297260A (en) 1986-03-12 1994-03-22 Hitachi, Ltd. Processor having a plurality of CPUS with one CPU being normally connected to common bus
US4837747A (en) * 1986-11-29 1989-06-06 Mitsubishi Denki Kabushiki Kaisha Redundary circuit with a spare main decoder responsive to an address of a defective cell in a selected cell block
US4873626A (en) * 1986-12-17 1989-10-10 Massachusetts Institute Of Technology Parallel processing system with processor array having memory system included in system memory
US5014235A (en) * 1987-12-15 1991-05-07 Steven G. Morton Convolution memory
EP0421696A3 (en) 1989-10-02 1992-01-29 Motorola Inc. Staggered access memory
US5239654A (en) 1989-11-17 1993-08-24 Texas Instruments Incorporated Dual mode SIMD/MIMD processor providing reuse of MIMD instruction memories as data memories when operating in SIMD mode
US5179702A (en) 1989-12-29 1993-01-12 Supercomputer Systems Limited Partnership System and method for controlling a highly parallel multiprocessor using an anarchy based scheduler for parallel execution thread scheduling
JP3210319B2 (ja) 1990-03-01 2001-09-17 株式会社東芝 ニューロチップおよびそのチップを用いたニューロコンピュータ
EP0446721B1 (en) 1990-03-16 2000-12-20 Texas Instruments Incorporated Distributed processing memory
US5155729A (en) 1990-05-02 1992-10-13 Rolm Systems Fault recovery in systems utilizing redundant processor arrangements
DE69131272T2 (de) * 1990-11-13 1999-12-09 International Business Machines Corp., Armonk Paralleles Assoziativprozessor-System
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
US5708836A (en) 1990-11-13 1998-01-13 International Business Machines Corporation SIMD/MIMD inter-processor communication
JP3001252B2 (ja) * 1990-11-16 2000-01-24 株式会社日立製作所 半導体メモリ
US5214747A (en) 1990-12-24 1993-05-25 Eastman Kodak Company Segmented neural network with daisy chain control
US5440752A (en) 1991-07-08 1995-08-08 Seiko Epson Corporation Microprocessor architecture with a switch network for data transfer between cache, memory port, and IOU
US5506992A (en) 1992-01-30 1996-04-09 Saxenmeyer; George Distributed processing system with asynchronous communication between processing modules
US5502728A (en) 1992-02-14 1996-03-26 International Business Machines Corporation Large, fault-tolerant, non-volatile, multiported memory
KR960002777B1 (ko) * 1992-07-13 1996-02-26 삼성전자주식회사 반도체 메모리 장치의 로우 리던던시 장치
US5345552A (en) * 1992-11-12 1994-09-06 Marquette Electronics, Inc. Control for computer windowing display
US5396608A (en) * 1993-06-28 1995-03-07 Analog Devices, Inc. Method and apparatus for accessing variable length words in a memory array
SG73378A1 (en) 1993-10-05 2000-06-20 Seiko Epson Corp Apparatus and method for generating a program for parallel processing
DE69430744T2 (de) 1994-07-28 2003-01-30 International Business Machines Corp., Armonk Verbesserte Neuronalhalbleiterchipsarchitekturen und Neuronalnetzwerke darin
JP3723599B2 (ja) * 1995-04-07 2005-12-07 株式会社ルネサステクノロジ 半導体記憶装置
US5956703A (en) 1995-07-28 1999-09-21 Delco Electronics Corporation Configurable neural network integrated circuit
JP3252666B2 (ja) * 1995-08-14 2002-02-04 日本電気株式会社 半導体記憶装置
JP3036411B2 (ja) * 1995-10-18 2000-04-24 日本電気株式会社 半導体記憶集積回路装置
JPH09198861A (ja) * 1996-01-16 1997-07-31 Mitsubishi Electric Corp 同期型半導体記憶装置
JP3355595B2 (ja) * 1996-03-25 2002-12-09 シャープ株式会社 不揮発性半導体記憶装置
JPH09288888A (ja) * 1996-04-22 1997-11-04 Mitsubishi Electric Corp 半導体記憶装置
IT1288076B1 (it) 1996-05-30 1998-09-10 Antonio Esposito Multicalcolatore elettronico numerico parallelo multiprocessore a ridondanza di processori accoppiati
US5844856A (en) * 1996-06-19 1998-12-01 Cirrus Logic, Inc. Dual port memories and systems and methods using the same
US5802005A (en) * 1996-09-23 1998-09-01 Texas Instruments Incorporated Four bit pre-fetch sDRAM column select architecture
US5841712A (en) * 1996-09-30 1998-11-24 Advanced Micro Devices, Inc. Dual comparator circuit and method for selecting between normal and redundant decode logic in a semiconductor memory device
JPH10269765A (ja) * 1997-03-24 1998-10-09 Mitsubishi Electric Corp 半導体記憶装置
US6026464A (en) 1997-06-24 2000-02-15 Cisco Technology, Inc. Memory control system and method utilizing distributed memory controllers for multibank memory
US6044438A (en) 1997-07-10 2000-03-28 International Business Machiness Corporation Memory controller for controlling memory accesses across networks in distributed shared memory processing systems
JP4039532B2 (ja) * 1997-10-02 2008-01-30 株式会社ルネサステクノロジ 半導体集積回路装置
US6096094A (en) * 1997-10-03 2000-08-01 National Instruments Corporation Configuration manager for configuring a data acquisition system
US5959929A (en) * 1997-12-29 1999-09-28 Micron Technology, Inc. Method for writing to multiple banks of a memory device
JPH11203862A (ja) 1998-01-13 1999-07-30 Mitsubishi Electric Corp 半導体記憶装置
NO308149B1 (no) 1998-06-02 2000-07-31 Thin Film Electronics Asa Skalerbar, integrert databehandlingsinnretning
US6349051B1 (en) 1998-01-29 2002-02-19 Micron Technology, Inc. High speed data bus
US6173356B1 (en) * 1998-02-20 2001-01-09 Silicon Aquarius, Inc. Multi-port DRAM with integrated SRAM and systems and methods using the same
US6678801B1 (en) 1998-04-17 2004-01-13 Terraforce Technologies Corp. DSP with distributed RAM structure
KR100273293B1 (ko) * 1998-05-13 2001-01-15 김영환 리던던트 워드라인의 리프레쉬 구조
US6553355B1 (en) 1998-05-29 2003-04-22 Indranet Technologies Limited Autopoietic network system endowed with distributed artificial intelligence for the supply of high volume high-speed multimedia telesthesia telemetry, telekinesis, telepresence, telemanagement, telecommunications, and data processing services
JP2000011681A (ja) 1998-06-22 2000-01-14 Mitsubishi Electric Corp 同期型半導体記憶装置
US6999950B1 (en) 1998-06-23 2006-02-14 Intellix A/S N-tuple or RAM based neural network classification system and method
DE19838813A1 (de) * 1998-08-26 2000-03-02 Siemens Ag Speichersystem
US6366989B1 (en) * 1998-09-17 2002-04-02 Sun Microsystems, Inc. Programmable memory controller
US6041400A (en) 1998-10-26 2000-03-21 Sony Corporation Distributed extensible processing architecture for digital signal processing applications
US6798420B1 (en) * 1998-11-09 2004-09-28 Broadcom Corporation Video and graphics system with a single-port RAM
US6216178B1 (en) 1998-11-16 2001-04-10 Infineon Technologies Ag Methods and apparatus for detecting the collision of data on a data bus in case of out-of-order memory accesses of different times of memory access execution
US6067262A (en) 1998-12-11 2000-05-23 Lsi Logic Corporation Redundancy analysis for embedded memories with built-in self test and built-in self repair
EP1157324A4 (en) 1998-12-18 2009-06-17 Triconex Corp PROCESS AND DEVICE FOR PROCESSING CONTROL USING A MULTIPLE REDUNDANT PROCESS CONTROL SYSTEM
US6523018B1 (en) 1998-12-29 2003-02-18 International Business Machines Corporation Neural chip architecture and neural networks incorporated therein
JP2000207884A (ja) * 1999-01-11 2000-07-28 Hitachi Ltd 半導体集積回路装置
US6389497B1 (en) 1999-01-22 2002-05-14 Analog Devices, Inc. DRAM refresh monitoring and cycle accurate distributed bus arbitration in a multi-processing environment
US6145069A (en) 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
GB9902115D0 (en) 1999-02-01 1999-03-24 Axeon Limited Neural networks
DE19906382A1 (de) * 1999-02-16 2000-08-24 Siemens Ag Halbleiterspeicher mit Speicherbänken
US6453398B1 (en) * 1999-04-07 2002-09-17 Mitsubishi Electric Research Laboratories, Inc. Multiple access self-testing memory
JP3959211B2 (ja) * 1999-09-22 2007-08-15 株式会社東芝 半導体記憶装置
US6646283B1 (en) 1999-05-14 2003-11-11 Hitachi, Ltd. Semiconductor device, image display device, and method and apparatus for manufacture thereof
US6404694B2 (en) 1999-08-16 2002-06-11 Hitachi, Ltd. Semiconductor memory device with address comparing functions
US6751698B1 (en) 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
US6708254B2 (en) 1999-11-10 2004-03-16 Nec Electronics America, Inc. Parallel access virtual channel memory system
JP2001155485A (ja) * 1999-11-29 2001-06-08 Mitsubishi Electric Corp 半導体記憶装置
US6414890B2 (en) * 1999-12-27 2002-07-02 Mitsubishi Denki Kabushiki Kaisha Semiconductor memory device capable of reliably performing burn-in test at wafer level
US6601126B1 (en) 2000-01-20 2003-07-29 Palmchip Corporation Chip-core framework for systems-on-a-chip
US6988154B2 (en) 2000-03-10 2006-01-17 Arc International Memory interface and method of interfacing between functional entities
US6668308B2 (en) 2000-06-10 2003-12-23 Hewlett-Packard Development Company, L.P. Scalable architecture based on single-chip multiprocessing
JP4632107B2 (ja) * 2000-06-29 2011-02-16 エルピーダメモリ株式会社 半導体記憶装置
US6785780B1 (en) 2000-08-31 2004-08-31 Micron Technology, Inc. Distributed processor memory module and method
US6785841B2 (en) 2000-12-14 2004-08-31 International Business Machines Corporation Processor with redundant logic
US20020087828A1 (en) * 2000-12-28 2002-07-04 International Business Machines Corporation Symmetric multiprocessing (SMP) system with fully-interconnected heterogenous microprocessors
WO2002059743A2 (en) 2001-01-25 2002-08-01 Improv Systems, Inc. Compiler for multiple processor and distributed memory architectures
US6714467B2 (en) * 2002-03-19 2004-03-30 Broadcom Corporation Block redundancy implementation in heirarchical RAM's
US6396760B1 (en) 2001-03-16 2002-05-28 Virage Logic Corporation Memory having a redundancy scheme to allow one fuse to blow per faulty memory column
US7233998B2 (en) * 2001-03-22 2007-06-19 Sony Computer Entertainment Inc. Computer architecture and software cells for broadband networks
US6385071B1 (en) * 2001-05-21 2002-05-07 International Business Machines Corporation Redundant scheme for CAMRAM memory array
JP2003092364A (ja) * 2001-05-21 2003-03-28 Mitsubishi Electric Corp 半導体記憶装置
JP2003068074A (ja) * 2001-08-30 2003-03-07 Mitsubishi Electric Corp 半導体記憶装置
JP2003132675A (ja) * 2001-10-26 2003-05-09 Seiko Epson Corp 半導体メモリ装置
US6778443B2 (en) * 2001-12-25 2004-08-17 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device having memory blocks pre-programmed before erased
JP4061272B2 (ja) 2002-01-09 2008-03-12 株式会社ルネサステクノロジ メモリシステム及びメモリカード
US6640283B2 (en) 2002-01-16 2003-10-28 Hewlett-Packard Development Company, L.P. Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size
JP2003263892A (ja) * 2002-03-11 2003-09-19 Toshiba Corp 半導体記憶装置
US7107285B2 (en) 2002-03-16 2006-09-12 Questerra Corporation Method, system, and program for an improved enterprise spatial system
US6717834B2 (en) 2002-03-26 2004-04-06 Intel Corporation Dual bus memory controller
US6877046B2 (en) 2002-03-29 2005-04-05 International Business Machines Corporation Method and apparatus for memory with embedded processor
AU2003226394A1 (en) 2002-04-14 2003-11-03 Bay Microsystems, Inc. Data forwarding engine
US7836168B1 (en) 2002-06-04 2010-11-16 Rockwell Automation Technologies, Inc. System and methodology providing flexible and distributed processing in an industrial controller environment
US7415594B2 (en) * 2002-06-26 2008-08-19 Coherent Logix, Incorporated Processing system with interspersed stall propagating processors and communication elements
US7159141B2 (en) 2002-07-01 2007-01-02 Micron Technology, Inc. Repairable block redundancy scheme
GB2391083B (en) 2002-07-19 2006-03-01 Picochip Designs Ltd Processor array
US7120068B2 (en) * 2002-07-29 2006-10-10 Micron Technology, Inc. Column/row redundancy architecture using latches programmed from a look up table
KR100510496B1 (ko) * 2002-11-19 2005-08-26 삼성전자주식회사 페이지 길이를 변환할 수 있는 구조를 가지는 반도체메모리 장치 및 상기 반도체 메모리 장치의 페이지 길이변환방법
US20040153911A1 (en) * 2002-12-24 2004-08-05 Alon Regev Testing of a CAM
JP4223936B2 (ja) 2003-02-06 2009-02-12 株式会社リコー 投射光学系、拡大投射光学系、拡大投射装置及び画像投射装置
US20040181503A1 (en) * 2003-03-13 2004-09-16 Motorola, Inc. Information storage and retrieval method and apparatus
US7194568B2 (en) 2003-03-21 2007-03-20 Cisco Technology, Inc. System and method for dynamic mirror-bank addressing
US7417908B2 (en) * 2003-07-15 2008-08-26 Elpida Memory, Inc. Semiconductor storage device
JP2005092969A (ja) * 2003-09-16 2005-04-07 Renesas Technology Corp 不揮発性半導体記憶装置
US7162551B2 (en) * 2003-10-31 2007-01-09 Lucent Technologies Inc. Memory management system having a linked list processor
TWI289750B (en) 2004-01-05 2007-11-11 Sony Corp Data storage apparatus, and data storage controlling apparatus and method
US20050240806A1 (en) 2004-03-30 2005-10-27 Hewlett-Packard Development Company, L.P. Diagnostic memory dump method in a redundant processor
US7519875B2 (en) * 2004-08-20 2009-04-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Method and apparatus for enabling a user to determine whether a defective location in a memory device has been remapped to a redundant memory portion
JP2006294144A (ja) * 2005-04-12 2006-10-26 Toshiba Corp 不揮発性半導体記憶装置
US7978561B2 (en) * 2005-07-28 2011-07-12 Samsung Electronics Co., Ltd. Semiconductor memory devices having vertically-stacked transistors therein
US7562271B2 (en) 2005-09-26 2009-07-14 Rambus Inc. Memory system topologies including a buffer device and an integrated circuit memory device
WO2007072324A2 (en) 2005-12-20 2007-06-28 Nxp B.V. Multi-processor circuit with shared memory banks
US7826243B2 (en) * 2005-12-29 2010-11-02 Bitmicro Networks, Inc. Multiple chip module and package stacking for storage devices
US8984256B2 (en) 2006-02-03 2015-03-17 Russell Fish Thread optimized multiprocessor architecture
JP2007207380A (ja) * 2006-02-03 2007-08-16 Renesas Technology Corp 不揮発性半導体記憶装置
US20070220369A1 (en) 2006-02-21 2007-09-20 International Business Machines Corporation Fault isolation and availability mechanism for multi-processor system
US20080177979A1 (en) * 2006-03-01 2008-07-24 Gheorghe Stefan Hardware multi-core processor optimized for object oriented computing
US7613883B2 (en) * 2006-03-10 2009-11-03 Rambus Inc. Memory device with mode-selectable prefetch and clock-to-core timing
US7610537B2 (en) 2006-04-04 2009-10-27 International Business Machines Corporation Method and apparatus for testing multi-core microprocessors
US7882307B1 (en) 2006-04-14 2011-02-01 Tilera Corporation Managing cache memory in a parallel processing environment
US8648403B2 (en) 2006-04-21 2014-02-11 International Business Machines Corporation Dynamic memory cell structures
JP2007317247A (ja) * 2006-05-23 2007-12-06 Nec Electronics Corp 不揮発性半導体記憶装置及び不揮発性半導体記憶装置の動作方法
US7949820B2 (en) 2006-05-23 2011-05-24 Dataram, Inc. Method for managing memory access and task distribution on a multi-processor storage device
US7882320B2 (en) 2006-05-23 2011-02-01 Dataram, Inc. Multi-processor flash memory storage device and management system
US7640386B2 (en) * 2006-05-24 2009-12-29 International Business Machines Corporation Systems and methods for providing memory modules with multiple hub devices
KR20070112950A (ko) 2006-05-24 2007-11-28 삼성전자주식회사 멀티-포트 메모리 장치, 멀티-포트 메모리 장치를 포함하는멀티-프로세서 시스템, 및 멀티-프로세서 시스템의 데이터전달 방법
JP2008010082A (ja) * 2006-06-29 2008-01-17 Nec Electronics Corp 不揮発性半導体記憶装置及びワード線駆動方法
CN101490994B (zh) * 2006-07-14 2012-06-20 交互数字技术公司 符号率硬件加速器
KR100748460B1 (ko) * 2006-08-16 2007-08-13 주식회사 하이닉스반도체 반도체 메모리 및 그 제어방법
US7783936B1 (en) * 2006-09-28 2010-08-24 L-3 Communications, Corp. Memory arbitration technique for turbo decoding
US20080109691A1 (en) * 2006-10-27 2008-05-08 James Norris Dieffenderfer Method and Apparatus for Executing a BIST Routine
JP4215795B2 (ja) * 2006-11-20 2009-01-28 エルピーダメモリ株式会社 ルックアップテーブルカスケード回路、ルックアップテーブルカスケードアレイ回路及びそのパイプライン制御方法
WO2008070175A2 (en) * 2006-12-06 2008-06-12 FUSION MULTISYSTEMS, INC., (DBA Fusion-io) Apparatus, system, and method for a modular blade
US7831607B2 (en) 2006-12-08 2010-11-09 Pandya Ashish A Interval symbol architecture for programmable intelligent search memory
KR100918299B1 (ko) * 2007-04-25 2009-09-18 삼성전자주식회사 배드 블록 정보를 저장하지 않는 행 디코더를 갖는 플래시메모리 장치 및 그것의 제어 방법
US8429493B2 (en) * 2007-05-12 2013-04-23 Apple Inc. Memory device with internal signap processing unit
CN101681673B (zh) * 2007-05-25 2013-08-21 马维尔国际贸易有限公司 用于nor型存储器阵列的树型位线译码器结构
US8042082B2 (en) 2007-09-12 2011-10-18 Neal Solomon Three dimensional memory in a system on a chip
US7772880B2 (en) 2007-09-12 2010-08-10 Neal Solomon Reprogrammable three dimensional intelligent system on a chip
US7557605B2 (en) 2007-09-14 2009-07-07 Cswitch Corporation Heterogeneous configurable integrated circuit
US8200992B2 (en) * 2007-09-24 2012-06-12 Cognitive Electronics, Inc. Parallel processing computer systems with reduced power consumption and methods for providing the same
US7721010B2 (en) * 2007-10-31 2010-05-18 Qimonda North America Corp. Method and apparatus for implementing memory enabled systems using master-slave architecture
US8078829B2 (en) * 2007-12-12 2011-12-13 Itt Manufacturing Enterprises, Inc. Scaleable array of micro-engines for waveform processing
US7844798B2 (en) * 2007-12-13 2010-11-30 Qimonda Ag Command protocol for integrated circuits
FR2925187B1 (fr) 2007-12-14 2011-04-08 Commissariat Energie Atomique Systeme comportant une pluralite d'unites de traitement permettant d'executer des taches en parallele,en mixant le mode d'execution de type controle et le mode d'execution de type flot de donnees
JP2009146548A (ja) * 2007-12-18 2009-07-02 Toshiba Corp 不揮発性半導体記憶装置
US8028124B2 (en) 2007-12-20 2011-09-27 International Business Machines Corporation Fast processing memory array
US9196346B2 (en) * 2008-01-23 2015-11-24 Micron Technology, Inc. Non-volatile memory with LPDRAM
US7782703B2 (en) * 2008-02-01 2010-08-24 Qimonda North America Corp. Semiconductor memory having a bank with sub-banks
US8120990B2 (en) * 2008-02-04 2012-02-21 Mosaid Technologies Incorporated Flexible memory operations in NAND flash devices
JP2009205258A (ja) 2008-02-26 2009-09-10 Toshiba Corp 半導体集積回路
JP2009211780A (ja) * 2008-03-05 2009-09-17 Nec Corp アドレスエラー検出装置、アドレスエラー検出方法
KR20090095955A (ko) 2008-03-07 2009-09-10 삼성전자주식회사 불휘발성 메모리의 공유 구조에서 다이렉트 억세스 기능을제공하는 멀티포트 반도체 메모리 장치 및 그를 채용한멀티 프로세서 시스템
WO2009137157A1 (en) 2008-03-31 2009-11-12 Rambus Inc. Independent threading of memory devices disposed on memory modules
US8140830B2 (en) * 2008-05-22 2012-03-20 International Business Machines Corporation Structural power reduction in multithreaded processor
US20100005220A1 (en) * 2008-07-01 2010-01-07 International Business Machines Corporation 276-pin buffered memory module with enhanced memory system interconnect and features
US8031505B2 (en) 2008-07-25 2011-10-04 Samsung Electronics Co., Ltd. Stacked memory module and system
KR101493008B1 (ko) * 2008-09-30 2015-02-13 삼성전자주식회사 소스 라인 구동회로 및 상기 소스 라인 구동회로를 포함하는 디스플레이 장치
JP5599559B2 (ja) * 2008-11-27 2014-10-01 ピーエスフォー ルクスコ エスエイアールエル 半導体装置及びそのリフレッシュ方法
US7877627B1 (en) * 2008-12-18 2011-01-25 Supercon, L.L.C. Multiple redundant computer system combining fault diagnostics and majority voting with dissimilar redundancy technology
TWI401691B (zh) * 2009-03-20 2013-07-11 Phison Electronics Corp 具快閃記憶體測試功能的控制器及其儲存系統與測試方法
US7983065B2 (en) * 2009-04-08 2011-07-19 Sandisk 3D Llc Three-dimensional array of re-programmable non-volatile memory elements having vertical bit lines
US8516408B2 (en) * 2009-05-26 2013-08-20 Lsi Corporation Optimization of circuits having repeatable circuit instances
JP4913878B2 (ja) * 2009-05-27 2012-04-11 ルネサスエレクトロニクス株式会社 ワード線選択回路、ロウデコーダ
US9378003B1 (en) 2009-07-23 2016-06-28 Xilinx, Inc. Compiler directed cache coherence for many caches generated from high-level language source code
US8442927B2 (en) 2009-07-30 2013-05-14 Nec Laboratories America, Inc. Dynamically configurable, multi-ported co-processor for convolutional neural networks
US9477636B2 (en) 2009-10-21 2016-10-25 Micron Technology, Inc. Memory having internal processors and data communication methods in memory
US8856458B2 (en) 2009-12-15 2014-10-07 Advanced Micro Devices, Inc. Polymorphous signal interface between processing units
KR101107163B1 (ko) * 2010-05-25 2012-01-25 삼성모바일디스플레이주식회사 주사 구동부 및 이를 이용한 표시 장치
US20110296078A1 (en) * 2010-06-01 2011-12-01 Qualcomm Incorporated Memory pool interface methods and apparatuses
US9672169B2 (en) 2010-06-30 2017-06-06 Texas Instruments Incorporated Dual in line memory module with multiple memory interfaces
JP5508978B2 (ja) * 2010-07-29 2014-06-04 ルネサスエレクトロニクス株式会社 デジタルアナログ変換回路及び表示ドライバ
US9612979B2 (en) 2010-10-22 2017-04-04 Intel Corporation Scalable memory protection mechanism
US8738860B1 (en) 2010-10-25 2014-05-27 Tilera Corporation Computing in parallel processing environments
KR101212738B1 (ko) * 2010-10-29 2012-12-14 에스케이하이닉스 주식회사 리프레쉬 제어회로 및 이를 포함하는 반도체 메모리 장치 및 리프레쉬 제어방법
JP2012174297A (ja) * 2011-02-18 2012-09-10 Elpida Memory Inc 半導体装置
US20140040622A1 (en) 2011-03-21 2014-02-06 Mocana Corporation Secure unlocking and recovery of a locked wrapped app on a mobile device
US9262246B2 (en) 2011-03-31 2016-02-16 Mcafee, Inc. System and method for securing memory and storage of an electronic device with a below-operating system security agent
US9432298B1 (en) 2011-12-09 2016-08-30 P4tents1, LLC System, method, and computer program product for improving memory systems
US9348852B2 (en) * 2011-04-27 2016-05-24 Microsoft Technology Licensing, Llc Frequent pattern mining
US8904537B2 (en) 2011-05-09 2014-12-02 F—Secure Corporation Malware detection
JP5658082B2 (ja) 2011-05-10 2015-01-21 ルネサスエレクトロニクス株式会社 半導体装置
US8590050B2 (en) 2011-05-11 2013-11-19 International Business Machines Corporation Security compliant data storage management
KR20120132278A (ko) 2011-05-26 2012-12-05 삼성전자주식회사 메모리 칩, 메모리 시스템, 및 메모리 칩에 대한 액세스 방법
US10078620B2 (en) 2011-05-27 2018-09-18 New York University Runtime reconfigurable dataflow processor with multi-port memory access module
US9177609B2 (en) * 2011-06-30 2015-11-03 Sandisk Technologies Inc. Smart bridge for memory core
US9098209B2 (en) 2011-08-24 2015-08-04 Rambus Inc. Communication via a memory interface
US8599595B1 (en) * 2011-12-13 2013-12-03 Michael C. Stephens, Jr. Memory devices with serially connected signals for stacked arrangements
US9195589B2 (en) * 2011-12-27 2015-11-24 Intel Corporation Adaptive configuration of non-volatile memory
US9110830B2 (en) * 2012-01-18 2015-08-18 Qualcomm Incorporated Determining cache hit/miss of aliased addresses in virtually-tagged cache(s), and related systems and methods
US8977583B2 (en) 2012-03-29 2015-03-10 International Business Machines Corporation Synaptic, dendritic, somatic, and axonal plasticity in a network of neural cores using a plastic multi-stage crossbar switching
US8736831B2 (en) * 2012-05-15 2014-05-27 Kla-Tencor Corp. Substrate inspection
US9665503B2 (en) 2012-05-22 2017-05-30 Xockets, Inc. Efficient packet handling, redirection, and inspection using offload processors
JP2014010845A (ja) * 2012-06-27 2014-01-20 Ps4 Luxco S A R L 半導体装置
US9348385B2 (en) 2012-07-09 2016-05-24 L. Pierre deRochement Hybrid computing module
KR20140023806A (ko) * 2012-08-17 2014-02-27 삼성전자주식회사 자기 저항 메모리 장치의 배치 구조
US8677306B1 (en) 2012-10-11 2014-03-18 Easic Corporation Microcontroller controlled or direct mode controlled network-fabric on a structured ASIC
US8996951B2 (en) 2012-11-15 2015-03-31 Elwha, Llc Error correction with non-volatile memory on an integrated circuit
EP2923279B1 (en) * 2012-11-21 2016-11-02 Coherent Logix Incorporated Processing system with interspersed processors; dma-fifo
US9449257B2 (en) 2012-12-04 2016-09-20 Institute Of Semiconductors, Chinese Academy Of Sciences Dynamically reconstructable multistage parallel single instruction multiple data array processing system
CN103902472B (zh) * 2012-12-28 2018-04-20 华为技术有限公司 基于内存芯片互连的内存访问处理方法、内存芯片及系统
US10318444B2 (en) 2013-04-11 2019-06-11 The Regents Of The University Of California Collective memory transfer devices and methods for multiple-core processors
US9177646B2 (en) 2013-05-06 2015-11-03 International Business Machines Corporation Implementing computational memory from content-addressable memory
US10741226B2 (en) 2013-05-28 2020-08-11 Fg Src Llc Multi-processor computer architecture incorporating distributed multi-ported common memory modules
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9305635B2 (en) 2013-10-31 2016-04-05 Taiwan Semiconductor Manufacturing Co., Ltd. High density memory structure
US9418719B2 (en) * 2013-11-28 2016-08-16 Gsi Technology Israel Ltd. In-memory computational device
US9978014B2 (en) 2013-12-18 2018-05-22 Intel Corporation Reconfigurable processing unit
US20150212861A1 (en) * 2014-01-24 2015-07-30 Qualcomm Incorporated Value synchronization across neural processors
CN105431831B (zh) * 2014-02-17 2018-10-02 联发科技股份有限公司 数据存取方法和利用相同方法的数据存取装置
US10180828B2 (en) 2014-04-29 2019-01-15 Significs And Elements, Llc Systems and methods for power optimization of processors
US20150324690A1 (en) 2014-05-08 2015-11-12 Microsoft Corporation Deep Learning Training System
JP2015222467A (ja) * 2014-05-22 2015-12-10 ルネサスエレクトロニクス株式会社 マイクロコントローラ及びそれを用いた電子制御装置
US9003109B1 (en) 2014-05-29 2015-04-07 SanDisk Technologies, Inc. System and method for distributed computing in non-volatile memory
EP3155758A4 (en) 2014-06-10 2018-04-11 Sightline Innovation Inc. System and method for network based application development and implementation
KR20160014976A (ko) * 2014-07-30 2016-02-12 에스케이하이닉스 주식회사 메모리 장치 및 이를 포함하는 메모리 시스템
US9810777B2 (en) * 2014-08-22 2017-11-07 Voxtel, Inc. Asynchronous LADAR and imaging array
US9984337B2 (en) 2014-10-08 2018-05-29 Nec Corporation Parallelized machine learning with distributed lockless training
US10175345B2 (en) * 2014-10-17 2019-01-08 Voxtel, Inc. Event tracking imager
JP2016081340A (ja) * 2014-10-17 2016-05-16 株式会社東芝 多重化制御装置
KR102251216B1 (ko) 2014-11-21 2021-05-12 삼성전자주식회사 어드레스 리매핑된 메모리 칩, 이를 포함하는 메모리 모듈 및 메모리 시스템
WO2016092451A1 (en) * 2014-12-09 2016-06-16 Basf Se Optical detector
US10445641B2 (en) 2015-02-06 2019-10-15 Deepmind Technologies Limited Distributed training of reinforcement learning systems
FR3032814B1 (fr) * 2015-02-18 2018-02-02 Upmem Circuit dram muni d'un processeur integre
US20160260024A1 (en) * 2015-03-04 2016-09-08 Qualcomm Incorporated System of distributed planning
US11232848B2 (en) * 2015-04-30 2022-01-25 Hewlett Packard Enterprise Development Lp Memory module error tracking
US20160379109A1 (en) 2015-06-29 2016-12-29 Microsoft Technology Licensing, Llc Convolutional neural networks on hardware accelerators
KR102401271B1 (ko) * 2015-09-08 2022-05-24 삼성전자주식회사 메모리 시스템 및 그 동작 방법
US10726328B2 (en) 2015-10-09 2020-07-28 Altera Corporation Method and apparatus for designing and implementing a convolution neural net accelerator
US10860323B2 (en) 2015-10-16 2020-12-08 Samsung Electronics Co., Ltd. Method and apparatus for processing instructions using processing-in-memory
US9904874B2 (en) 2015-11-05 2018-02-27 Microsoft Technology Licensing, Llc Hardware-efficient deep convolutional neural networks
KR102400991B1 (ko) * 2015-12-30 2022-05-23 삼성전자주식회사 반도체 메모리 장치 및 이를 포함하는 메모리 시스템
US11170294B2 (en) 2016-01-07 2021-11-09 Intel Corporation Hardware accelerated machine learning
US10157309B2 (en) 2016-01-14 2018-12-18 Nvidia Corporation Online detection and classification of dynamic gestures with recurrent convolutional neural networks
US9928895B2 (en) * 2016-02-03 2018-03-27 Samsung Electronics Co., Ltd. Volatile memory device and electronic device comprising refresh information generator, information providing method thereof, and refresh control method thereof
US10990872B2 (en) 2016-03-31 2021-04-27 International Business Machines Corporation Energy-efficient time-multiplexed neurosynaptic core for implementing neural networks spanning power- and area-efficiency
US9601183B1 (en) * 2016-04-14 2017-03-21 Micron Technology, Inc. Apparatuses and methods for controlling wordlines and sense amplifiers
US10082964B2 (en) * 2016-04-27 2018-09-25 Micron Technology, Inc Data caching for ferroelectric memory
WO2018005572A1 (en) * 2016-06-30 2018-01-04 University Of Pittsburgh-Of The Commonwealth System Of Higher Education Two-dimensionally accessible non-volatile memory
US9760827B1 (en) 2016-07-22 2017-09-12 Alpine Electronics of Silicon Valley, Inc. Neural network applications in resource constrained environments
KR102620562B1 (ko) * 2016-08-04 2024-01-03 삼성전자주식회사 비휘발성 메모리 장치
JP6271655B1 (ja) * 2016-08-05 2018-01-31 株式会社東芝 不揮発性メモリ
US10387303B2 (en) 2016-08-16 2019-08-20 Western Digital Technologies, Inc. Non-volatile storage system with compute engine to accelerate big data applications
US9653151B1 (en) 2016-10-07 2017-05-16 Kilopass Technology, Inc. Memory array having segmented row addressed page registers
US20180144244A1 (en) 2016-11-23 2018-05-24 Vital Images, Inc. Distributed clinical workflow training of deep learning neural networks
US10163469B2 (en) * 2016-11-30 2018-12-25 Micron Technology, Inc. System and method for write data bus control in a stacked memory device
US10423876B2 (en) * 2016-12-01 2019-09-24 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either victim cache or neural network unit memory
US10032110B2 (en) 2016-12-13 2018-07-24 Google Llc Performing average pooling in hardware
US10073715B2 (en) * 2016-12-19 2018-09-11 Intel Corporation Dynamic runtime task management
US10191799B2 (en) * 2016-12-29 2019-01-29 Sandisk Technologies Llc BER model evaluation
US10114795B2 (en) 2016-12-30 2018-10-30 Western Digital Technologies, Inc. Processor in non-volatile storage memory
US11062203B2 (en) 2016-12-30 2021-07-13 Intel Corporation Neuromorphic computer with reconfigurable memory mapping for various neural network topologies
US10417364B2 (en) 2017-01-04 2019-09-17 Stmicroelectronics International N.V. Tool to create a reconfigurable interconnect framework
US11397687B2 (en) * 2017-01-25 2022-07-26 Samsung Electronics Co., Ltd. Flash-integrated high bandwidth memory appliance
US11157801B2 (en) 2017-02-28 2021-10-26 Microsoft Technology Licensing, Llc Neural network processing with the neural network model pinned to on-chip memories of hardware nodes
US10387298B2 (en) 2017-04-04 2019-08-20 Hailo Technologies Ltd Artificial neural network incorporating emphasis and focus techniques
US10032496B1 (en) * 2017-07-27 2018-07-24 Micron Technology, Inc. Variable filter capacitance
JP7242634B2 (ja) * 2017-07-30 2023-03-20 ニューロブレード リミテッド メモリチップ
US10304497B2 (en) * 2017-08-17 2019-05-28 Micron Technology, Inc. Power supply wiring in a semiconductor memory device
US10810141B2 (en) 2017-09-29 2020-10-20 Intel Corporation Memory control management of a processor
US10490245B2 (en) * 2017-10-02 2019-11-26 Micron Technology, Inc. Memory system that supports dual-mode modulation
US10388870B2 (en) * 2017-10-25 2019-08-20 Sandisk Technologies Llc Barrier modulated cell structures with intrinsic vertical bit line architecture
US10541273B2 (en) * 2017-11-28 2020-01-21 Sandisk Technologies Llc Vertical thin film transistors with isolation
US11398453B2 (en) * 2018-01-09 2022-07-26 Samsung Electronics Co., Ltd. HBM silicon photonic TSV architecture for lookup computing AI accelerator
KR20210068034A (ko) * 2018-09-06 2021-06-08 뉴로블레이드, 리미티드. 메모리 기반 프로세서
US11257538B2 (en) * 2018-10-03 2022-02-22 Micron Technology, Inc. Systems and methods for improved reliability of components in dynamic random access memory (DRAM)
TWI714003B (zh) * 2018-10-11 2020-12-21 力晶積成電子製造股份有限公司 可執行人工智慧運算的記憶體晶片及其操作方法

Also Published As

Publication number Publication date
US20220156161A1 (en) 2022-05-19
CN111149166A (zh) 2020-05-12
EP3662474A2 (en) 2020-06-10
TW201923586A (zh) 2019-06-16
US20190339981A1 (en) 2019-11-07
JP7242634B2 (ja) 2023-03-20
CN111149166B (zh) 2024-01-09
US20190341091A1 (en) 2019-11-07
US11914487B2 (en) 2024-02-27
US20210365334A1 (en) 2021-11-25
US20240143457A1 (en) 2024-05-02
US10664438B2 (en) 2020-05-26
US11126511B2 (en) 2021-09-21
WO2019025864A3 (en) 2019-03-21
EP4187539A1 (en) 2023-05-31
US20190339980A1 (en) 2019-11-07
US11301340B2 (en) 2022-04-12
EP4187539B1 (en) 2024-06-05
US20210090617A1 (en) 2021-03-25
KR20200047551A (ko) 2020-05-07
CN113918481A (zh) 2022-01-11
WO2019025864A2 (en) 2019-02-07
US10762034B2 (en) 2020-09-01
EP3662474A4 (en) 2021-07-07
JP2020529676A (ja) 2020-10-08
US11269743B2 (en) 2022-03-08
US10885951B2 (en) 2021-01-05
US20190341088A1 (en) 2019-11-07
EP3662474B1 (en) 2023-02-22
US11023336B2 (en) 2021-06-01
TWI779069B (zh) 2022-10-01
US20190340153A1 (en) 2019-11-07
US20190340064A1 (en) 2019-11-07

Similar Documents

Publication Publication Date Title
TWI779069B (zh) 具有以記憶體為基礎的分散式處理器架構的記憶體晶片
US11837305B2 (en) Memory-based logic testing
CN112912856B (zh) 基于存储器的处理器
WO2021028723A2 (en) Memory-based processors