TWI545497B - 用於在可擴充記憶體系統協定中記錄封包傳送之系統及方法 - Google Patents

用於在可擴充記憶體系統協定中記錄封包傳送之系統及方法 Download PDF

Info

Publication number
TWI545497B
TWI545497B TW104117826A TW104117826A TWI545497B TW I545497 B TWI545497 B TW I545497B TW 104117826 A TW104117826 A TW 104117826A TW 104117826 A TW104117826 A TW 104117826A TW I545497 B TWI545497 B TW I545497B
Authority
TW
Taiwan
Prior art keywords
packets
packet
memory
data
transaction
Prior art date
Application number
TW104117826A
Other languages
English (en)
Other versions
TW201614476A (en
Inventor
J 湯瑪斯 帕洛斯基
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 TW201614476A publication Critical patent/TW201614476A/zh
Application granted granted Critical
Publication of TWI545497B publication Critical patent/TWI545497B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • 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
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0727Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a storage system, e.g. in a DASD or network based storage system
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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
    • 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/1044Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices with specific ECC/EDC distribution
    • 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/1068Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
    • 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/1072Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in multilevel memories
    • 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
    • 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/38Information transfer, e.g. on bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0661Format or protocol conversion arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/18Automatic repetition systems, e.g. Van Duuren systems
    • H04L1/1867Arrangements specially adapted for the transmitter end
    • H04L1/189Transmission or retransmission of more than one copy of a message
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/25Flow control; Congestion control with rate being modified by the source upon detecting a change of network conditions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/52Queue scheduling by attributing bandwidth to queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)
  • Dram (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Memory System (AREA)

Description

用於在可擴充記憶體系統協定中記錄封包傳送之系統及方法 相關申請案之交叉參考
本申請案係主張2014年6月2日申請之標題為「Systems and Methods for a Scalable Memory System Protocol」之美國臨時專利申請案第62/006,668號之優先權的非臨時申請案,其以引用的方式併入本文中。本申請案亦係關於2015年5月28日申請之標題為「Systems and Methods for Improving Efficiencies of a Memory System」之美國專利申請案第14/724,558號,其亦以引用的方式併入本文中。
本揭示內容大致係關於一種用於使用記憶體裝置執行資料操作(例如,讀取、寫入)之記憶體系統協定。更具體言之,本揭示內容係關於一種基於封包之可擴充協定,其實現若干記憶體及處理組合,提供位元高效的資料傳輸操作,且與多種匯流排類型(例如,電、光)相協調。
本章節旨在向讀者介紹可能與本揭示內容之各種態樣相關之本技術之各種態樣,該等態樣在下文中予以描述及/或主張。據信此討論有助於為讀者提供背景資訊以促進更好地理解本揭示內容之各種態樣。因此,應瞭解,此等陳述在此意義上閱讀且非作為先前技術之認 可。
習知協定通常在記憶體裝置之間以與其等之前身相比相對較低的失敗率傳送封包。但是,當產業旨在使在記憶體裝置與其他組件之間移動資料封包所涉及的能量的量最小化時,期望使用使用最小量的能量高效移動資料封包,同時維持封包傳送的完整性的協定。
10‧‧‧計算系統
12‧‧‧晶片上主機系統(SoC)
14‧‧‧記憶體裝置
16‧‧‧通道
22‧‧‧記憶體SoC
23‧‧‧緩衝器
24‧‧‧NAND記憶體
26‧‧‧減小延時動態隨機存取記憶體(RLDRAM)
28‧‧‧雙倍資料速率第四代同步動態隨機存取記憶體(DDR4)
29‧‧‧通道
31‧‧‧封包
32‧‧‧異動類型欄位
34‧‧‧有效負載欄位
36‧‧‧錯誤控制碼(ECC)欄位
42‧‧‧異動窗欄位
44‧‧‧位址窗欄位
46‧‧‧起始位元
48‧‧‧間接層級欄位
50‧‧‧方法
52‧‧‧方塊
54‧‧‧方塊
56‧‧‧方塊
58‧‧‧方塊
60‧‧‧方塊
61‧‧‧信道包裝實例
62‧‧‧匯流排
64‧‧‧第一18位元請求
66‧‧‧第二18位元請求
70‧‧‧方法
72‧‧‧方塊
74‧‧‧方塊
76‧‧‧方塊
78‧‧‧方塊
80‧‧‧方塊
82‧‧‧方塊
84‧‧‧方塊
86‧‧‧方塊
88‧‧‧方塊
92‧‧‧第一封包
94‧‧‧第二封包
96‧‧‧第三封包
100‧‧‧方法
102‧‧‧方塊
104‧‧‧方塊
106‧‧‧方塊
108‧‧‧方塊
110‧‧‧方塊
112‧‧‧方塊
114‧‧‧方塊
120‧‧‧方法
122‧‧‧方塊
124‧‧‧方塊
126‧‧‧方塊
128‧‧‧方塊
130‧‧‧方塊
132‧‧‧方塊
134‧‧‧方塊
142‧‧‧列
144‧‧‧列
146‧‧‧列
148‧‧‧列
160‧‧‧方法
162‧‧‧方塊
164‧‧‧方塊
166‧‧‧方塊
180‧‧‧方法
182‧‧‧方塊
184‧‧‧方塊
186‧‧‧方塊
在閱讀下列詳細描述及在參考附圖時可更好地暸解本揭示內容之各種態樣,其中:圖1繪示根據一實施例之一計算系統之一實例之一方塊圖;圖2繪示根據一實施例之可作為圖1之計算系統之部分之一記憶體裝置之一實例之一方塊圖;圖3繪示根據一實施例之可在圖1之計算系統內傳送之一封包之一封包層級圖;圖4繪示根據一實施例之可在圖1之計算系統內傳送之封包之一詳細封包層級圖;圖5繪示根據一實施例之用於為作為圖2之記憶體裝置之部分之各種類型之記憶體指派異動窗之一方法一流程圖;圖6繪示根據一實施例之針對高延時讀取操作之兩階段回應之一實例;圖7繪示根據一實施例之針對高延時直接記憶體存取操作之單階段回應之一實例;圖8繪示根據一實施例之其中一可擴充協定將兩個18位元請求包裝在一起之一信道包裝實例;圖9繪示根據一實施例之用於產生一封包用於傳送之一方法之一流程圖;圖10繪示根據一實施例之描繪可根據信道包裝方案傳送之若干 封包之一方塊圖;圖11繪示根據一實施例之用於根據信道包裝方案接收封包之一方法之一流程圖;圖12繪示根據一實施例之用於由接收封包之一組件執行之重新排序操作之一方法之一流程圖;圖13繪示根據一實施例之展示如何參考圖12的方法將封包重新排序之一方塊圖;圖14繪示根據一實施例之用於由接收封包之一組件執行之重新排序操作之另一方法之一流程圖;圖15繪示根據一實施例之用於調慢從一傳送組件發送之請求之傳送速率之一方法之一流程圖;圖16繪示根據一實施例之描繪一線性調慢曲線之一曲線圖;及圖17繪示根據一實施例之描繪一非線性調慢曲線之一曲線圖。
下文將描述一或多個特定實施例。為了提供此等實施例之一簡潔描述,本說明書中未描述一實際實施方案之所有特徵。應暸解,如在任何工程或設計項目中,在任何此實際實施方案的研發中,必須作出許多實施方案特定決策以達成可隨實施方案的變化而變化之研發者的特定目標,諸如符合系統相關及業務相關的限制。此外,應暸解,此一研發努力可能係複雜且耗時的,但對於獲利於本揭示內容之一般技術者而言,該研發努力仍將係一常規設計、製作及製造任務。
可擴充記憶體系統協定
如將在下文詳細討論,本揭示內容大致係關於可擴充記憶體系統協定。即,可擴充記憶體系統協定可基於被傳輸之資料封包(例如,請求、回應)之特性而調整特定操作。在一實施例中,可擴充記憶體系統協定(「可擴充協定」)可為基於封包之協定,其實現記憶體 裝置、計算裝置及類似者之間資料封包之高效(例如,功率高效、位元高效)傳送。可擴充協定可實施為與各種類型之記憶體及處理器的若干組合,諸如自動機(Automata)處理器、記憶體中處理器(Processor-in-Memory)、網路裝置、儲存設備、階層式記憶體、抽象化記憶體及類似者。如本文中所使用,處理器可包含能夠在一相應電裝置上執行可執行指令之任何適當處理器。可擴充協定亦可促進一寬範圍之裝置,包含資料中心開關/路由器、網路路由器、行動裝置、儲存裝置、自動機處理器、串流(Stream)處理器、記憶體中處理器、任務移動處理器、大數據(Big Data)、大圖資(Big Graph)、安全記憶體、虛擬網路、一般抽象化記憶體(例如,動態隨機存取記憶體(DRAM)、NAND及新興記憶體)及類似者。
在特定實施例中,可擴充協定可經設計以促進各種記憶體與處理器之間資料封包的通信,同時維持最低的合理的可擴充協定額外耗用。換言之,可擴充協定可經設計以提供資料封包之位元高效傳輸,其中,經由可擴充協定傳輸之多數(若非所有)位元直接作為被傳送之一相應資料封包的部分。例如,如將在下文更詳細討論,可擴充協定可使請求封包能被包裝在一起而無需用與各自封包無關的零填充一信號,藉此使經由一匯流排之傳送信道傳輸之資料封包之位元效率最大化。
除提供用於傳輸資料封包之一位元高效機構外,可擴充協定可與若干匯流排類型(諸如電或光學匯流排)協調。此外,可擴充協定可能能夠提供有關各自匯流排之各種操作,包含編碼、信道計數、通道計數、速度、風格、一系統之例示計數及類似者。
可擴充協定
記住上述內容,可擴充協定可經最佳化以提供成功異動,使得封包失敗係罕見的(例如,<1e-6)。可擴充協定亦可提供封包傳送類 型、大小與可處置之不同封包大小的數目之間的仔細權衡。
如上文討論,產業更注重使資料移動能量最小化。即,在記憶體裝置之間移動資料封包所消耗的能量應被最小化。因而,可擴充協定可合理地免除可從其他位元或訊息辨別或可能另外不必要的特定位元及訊息。例如,可擴充協定可免除對傳送有關可能已被接收器所知的資訊之資料之一裝置的需要。
此外,為了提供高效的資料移動操作,可擴充協定可促進「被發送至記憶體」的異動。可擴充協定亦可用外部控制操作傳輸局域操作,其中內部資料流量與外部控制操作相比相對較低。此外,可擴充協定可實施一錯誤控制策略,該錯誤控制策略使用基於在各自封包中被傳送之資料量(例如,有效負載)調整之一動態欄位大小使額外耗用最小化。
可擴充協定亦可經設計以使用最小數目之欄位來傳達資料。因而,可擴充協定可允許欄位大小調諧及靈活性,此係因為每個封包無法利用所有可用欄位。
可擴充協定亦可經設計以促進低延時資料與高延時資料的共存。例如,可擴充協定可提供在傳送高延時資料之間交錯低延時資料的傳送的能力。
可擴充協定的設計可被特徵化為簡單及一般的,其中可變封包大小可在各自封包的單個欄位中判定。此外,可擴充協定可在其操作方面維持簡單性,同時仍能夠執行複雜的異動及操作。此外,可擴充協定可能足夠靈活來實現其當前無法被設計來提供的未來功能。
在特定實施例中,可擴充協定可限制使用局域排序方案發送封包之順序。即,可擴充協定無法強制執行特定全域同步排序規則或類似者。為了堅持可擴充協定保持抽象的理念,可擴充協定可用特殊裝置或用不同類型的通道性質促進操作。
記住上述內容,本揭示內容描述若干系統及技術,該等系統及技術可在可擴充協定內實施以提供上述優點。雖然下文詳述的特定系統或技術係相對於其他系統或技術獨立描述,但是應注意本文中描述之系統及技術之各者可用亦在本文中描述之各種其他系統及技術實施。
使用可擴充協定的計算系統及記憶體系統
現參考圖式,圖1繪示可採用本文中描述之各種技術及系統之一計算系統10之一方塊圖。計算系統10可為多種計算裝置之任何者,諸如一電腦、傳呼機、蜂巢式電話、個人記事簿、控制電路等。計算系統10可包含一晶片上主機系統(SoC)12,該晶片上主機系統(SoC)12可耦合至若干記憶體裝置14。主機SoC 12可為一積體電路(IC),其將一電腦或其他電子系統之所有組件整合至一單個晶片中。因而,主機SoC 12可包含一或多個處理器,諸如一微處理器,該一或多個處理器可控制計算系統10中之系統功能及請求的處理。
如上所述,主機SoC 12可耦合至記憶體裝置14。在特定實施例中,主機SoC 12可經由通道16耦合至記憶體裝置14。通道16可包含匯流排、電佈線或類似者。
圖2描繪記憶體裝置14之一實施例之一方塊圖。記憶體裝置14可包含經設計以留存數位資料之任何儲存裝置。記憶體裝置14可涵蓋各種各樣的記憶體組件,包含揮發性記憶體及非揮發性記憶體。揮發性記憶體可包含動態隨機存取記憶體(DRAM)及/或靜態隨機存取記憶體(SRAM)。此外,揮發性記憶體可包含若干記憶體模組,諸如單列直插記憶體模組(SIMM)或雙列直插記憶體模組(DIMM)。
非揮發性記憶體可包含將結合揮發性記憶體使用之一唯讀記憶體(ROM),諸如一EPROM及/或快閃記憶體(例如,NAND)。此外,非揮發性記憶體可包含一高容量記憶體,諸如一磁帶機或磁碟機記憶 體。如將暸解,揮發性記憶體或非揮發性記憶體可被視為用於儲存程式碼(例如,指令)之一非暫態有形機器可讀媒體。
如圖2中所示,在特定實施例中,記憶體裝置14可包含一晶片上記憶體系統(SoC)22,該晶片上記憶體系統(SoC)22可為任何適當處理器,諸如一記憶體中處理器(PIM)或一電腦處理器(CPU),其緊實地耦合至儲存在記憶體裝置14上的記憶體組件。通常,記憶體SoC 22可與記憶體裝置14之記憶體組件在相同矽晶片上。藉由將處理組件及記憶體組件合併至記憶體裝置14中,記憶體SoC 22可管理在記憶體組件與主機SoC 12之間傳送及接收資料請求及回應的方式。在特定實施例中,記憶體SoC 22可控制記憶體組件之間的訊務以減小延時及增大頻寬。如將暸解,在根據本文中描述之實施例控制記憶體組件與其他裝置之間的傳送時,主機SoC 12及記憶體SoC 22可採用一可擴充記憶體系統協定。因而,可擴充記憶體系統協定可在記憶體裝置14與主機SoC 12之間的通道16,以及在記憶體組件與記憶體SoC 22之間的通道29上操作。
在特定實施例中,記憶體裝置14亦可包含一緩衝器23。緩衝器23可儲存由記憶體SoC 22接收的一或多個封包。有關記憶體SoC 22可如何使用緩衝器23的額外細節將在下文參考圖15至圖17描述。舉例而言,記憶體裝置14可包含諸如NAND記憶體24、減小延時動態隨機存取記憶體(RLDRAM)26、雙倍資料速率第四代同步動態隨機存取記憶體(DDR4)28及類似者之記憶體類型。
在特定實施例中,主機SoC 12及記憶體SoC 22可基於經由記憶體組件、暫存器及類似者提供之電腦可執行指令執行各種操作。記憶體組件或儲存器可為可充當用於儲存記憶體可執行碼、資料或類似者的媒體的任何適當製品。此等製品可代表電腦可讀媒體(即,任何適當形式的記憶體或儲存器),該電腦可讀媒體可儲存由主機SoC 12或記憶體SoC 22使用來執行當前揭示技術的處理器可執行碼。記憶體及儲 存器亦可用於儲存資料、資料分析及類似者。記憶體及儲存器可代表非暫態電腦可讀媒體(即,任何適當形式的記憶體或儲存器),該非暫態電腦可讀媒體可儲存由主機SoC 12或記憶體SoC 22使用來執行本文中描述的各種技術的處理器可執行碼。應注意,非暫態僅指示媒體係有形的且並非一信號。
雖然有關可擴充協定之各種態樣之下文描述在本文中被描述為相對於主機SoC 12及記憶體SoC 22執行,但是應注意,本文中描述之所有系統及技術可使用任何適當裝置執行。即,可擴充協定可促進任何兩個裝置之間的通信,諸如兩個處理器、兩個記憶體模組、一處理器與一記憶體模組及類似者之間的通信。
可擴充協定中之封包的封包層級圖
為了在傳送涉及記憶體組件之請求及回應時採用可擴充記憶體系統協定,記憶體SoC 22可發送根據圖3中所示之一封包30之一封包層級圖結構化之資料的封包。如圖3中所示,封包30可包含一異動類型欄位32、一有效負載欄位34及一錯誤控制碼(ECC)欄位36。異動類型欄位32可包含指示傳送類型、被傳送之封包之類型或兩者之資料。異動類型欄位32亦可指示一封包大小以指示資料有效負載中位元的數目及ECC欄位中位元的數目,藉此指示整個封包中位元的數目。在特定實施例中,異動類型欄位32可以間接方式指示有效負載欄位34及ECC欄位36之大小。例如,儲存在異動類型欄位32中的資料可充當一查找表之一索引。查找表可提供有關有效負載欄位34及ECC欄位36之大小的資訊。因而,在一實例中,記憶體SoC 22可接收封包30且將儲存在異動類型欄位32中的資料用作可儲存在記憶體裝置14中之一查找表之一索引,以判定有效負載欄位34及ECC欄位36的大小。
在特定實施例中,異動類型欄位32可基於封包係在可包含通道16、通道29或類似者之一請求匯流排Q或一回應匯流排S上傳送而指 定不同類型的封包。通常,請求匯流排Q及回應匯流排S可為單獨的、單向的或共同輸入/輸出。請求匯流排Q大致包含q個信道,且回應匯流排S大致包含s個信道。
在請求匯流排Q上傳送的封包30之例示性異動類型欄位32可包含讀取操作(例如,8uRead、8uRead2、varRead,其中u可為8位元單元或9位元單元或可能為資料之非整數單元大小)、訊息資料(例如,訊息)、讀取-修改-寫入(RMW)操作(例如,RMW1A、RMW2A、RMW3A、RMW4A)、資料集(例如,32uData、64uData、128uData、256uData)、圖案寫入操作(例如,8uPatternWrite、16uPatternWrite)、寫入啟用操作(例如,8uWriteWithEnables、16uWriteWithEnables),寫入操作(例如,8uWrite、16uWrite、32Write、48uWrite、64Write、80uWrite、96uWrite、112uWrite、128Write、256Write)及類似者。提供32Write操作及64Write操作可為系統設計者在挑選最大封包大小時提供更大靈活性。在一實施例中,可擴充協定可具有256Unit的限值,但使用較小最大封包大小可幫助系統延時。應暸解,32uWrite與32Write之間的差異在於32uWrite係單個固定大小,且TransactionSize未包含在封包中。另一方面,32Write包含TransactionSize,且因此可涉及額外32U資料塊,而非僅在原始請求封包中包含32U塊。注意上文針對請求匯流排Q所列的異動類型實例,經由請求匯流排Q傳送的封包30可包含總共26個原生異動(例如,8uRead、訊息、RMW1A等),其等之各者可使用針對全域(即,包含許多CPU模組及/或許多記憶體裝置模組之系統,其中封包可在單元之間中繼)或局域系統(即,包含較少模組的系統,其中封包在單元之間點至點移動,而無中繼)之5位元欄位表示。因而,在一實施例中,請求匯流排Q上之一封包30之異動類型欄位32可為5個位元。
以相同方式,在回應匯流排S上傳送的封包30之例示性異動類型 欄位32可包含訊息資料(例如,訊息)、資料集(例如,8uData、16uData、32uData、48uData、64uData、80uData、96uData、112uData、128uData、256uData)及類似者。再者,注意上文針對回應匯流排S之所列異動類型實例,經由回應匯流排S傳送的封包30可包含總共11個原生異動(例如,訊息、8uData等),其等之各者可使用針對一局域系統之4位元或5位元欄位表示。因而,在一實施例中,回應匯流排S上之一封包30之異動類型欄位32可為4個位元。
由於26個請求匯流排Q異動類型及11個回應匯流排S異動類型包含5個相同異動類型(例如,訊息、128uData、256uData),故由請求匯流排Q及回應匯流排S使用的異動類型的總數目可為32個。此32個異動類型因此可在5位元欄位中予以表示。有關異動類型之額外細節將在下文進一步討論。
再次參考圖3,封包30亦可包含一有效負載欄位34及一錯誤控制碼(ECC)欄位36。如上所述,有效負載欄位34及ECC欄位36之各自大小可基於異動類型欄位32中的資料判定。舉例而言,有效負載欄位34可大致介於45個位元與2093個位元之間,且ECC欄位36可大致介於6個位元與37個位元之間。有效負載欄位34可包含代表分別經由請求匯流排或回應匯流排發送的請求或回應的資料。
ECC欄位36可包含錯誤控制碼以判定由接收組件接收的封包30是否包含任何錯誤。因而,錯誤控制碼可包含各種演算法,諸如將冗餘資料或同位資料添加至一訊息,使得即使當在傳送的程序期間或在儲存器上引入若干錯誤時,原始資料仍可藉由接收組件恢復。通常,錯誤控制碼可提供偵測碼的限值內的錯誤且當偵測到錯誤時,指示進一步行動(諸如重新傳送出錯封包)的能力。
異動類型欄位
如上所述,可擴充協定可使用具有一異動類型欄位的封包以更 高效地執行各種類型的操作。通常,可擴充協定可使一抽象化記憶體架構能利用任何記憶體類型且使用單個抽象化協定併入各種類型的資料處理。記住這點,異動類型欄位32可為有用的一條資料以允許可擴充協定執行各種類型的資料處理,此係因為異動類型欄位32提供不同的兩條資訊。即,為了協定中之最小可能位元計數佔用,異動類型欄位32將兩個資料欄位(即,類型及大小)組合為一個。
如下文將展示,可擴充協定可為了傳送效率而支援可變大小封包。因而,向接收組件指示封包之大小以阻止系統變得不同步可能係有用的。在此,異動類型欄位32可提供單個欄位,該單個欄位識別被執行的系統異動的類型且可憑藉異動類型隱式地定義封包大小。換言之,異動類型欄位32可指示被傳送組件請求的異動的類型且接收組件可接著基於指定的異動類型判定相應封包的大小(例如,有效負載欄位34及ECC欄位36)。因而,異動類型欄位32可為一雙重目的欄位,其被可擴充協定用於提供傳達資訊之一位元高效方式。
在特定實施例中,異動類型欄位32亦可指示有關可在有效負載欄位34中提供的資料之額外資訊。例如,基於異動類型欄位32的值,異動窗資訊(窗)、位址資訊(位址)、間接層級(層級)資訊、訊息類型資訊、原始資料及其他類型的資訊可被確證為有效負載欄位34的部分。有關可作為有效負載欄位34的部分的資訊的細節將在下文更詳細討論。
可擴充協定可在具有一或多個請求匯流排Q異動及一或多個回應匯流排S異動的系統中採用。雖然請求匯流排Q及回應匯流排S已在上文被描述為分別具有5位元欄位及4位元欄位,但是應注意,請求匯流排Q及回應匯流排S可被設計為具有多種不同的位元大小。舉例而言,請求匯流排Q異動可使用5位元欄位(例如,00000、00001、...、11110、11111)指示,使得可與5位元欄位相關聯的可能異動類型如下 (其中資料單元u大小係8個位元):01011-8uRead-8B資料讀取操作,提供額外欄位(例如,有效負載欄位34內的子欄位):窗、位址、層級(間接層級)
01101-varRead-可變資料大小讀取操作,提供額外欄位:TransactionSize、窗、位址、層級
00000-訊息-一般訊息,提供額外欄位窗、訊息類型、資料(資料僅受限於欄位大小,例如,Nack訊息類型的資料可包含DataSequence、OriginatingTransactionType、OriginatingWindow)
01110-RMW1A-讀取-修改-寫入請求,其中併入單個位址,提供額外欄位:TransactionSize、窗、位址、OpCode、ImmediateData
01100-8uRead2-兩個8B資料讀取操作,提供額外欄位:First_Window、First_Address、First_Levels、Second_Levels、Second_Address
10110-8uWrite-包含8B資料的寫入請求,提供額外欄位:窗、位址、層級、8B資料
10010-8uWriteP-包含將寫入一次或更多次的8B資料的寫入請求,提供額外欄位:窗、位址、TransactionSize、層級、8B資料
01111-RMW2A-讀取-修改-寫入請求,其中併入兩個位址,提供額外欄位:TransactionSize、First_Window、First_Address、OpCode、ImmediateData、Second_Window、Second_Address
10100-8uWriteEn-用WriteEnableBits及8B資料寫入,提供額外欄位:窗、位址、層級、8啟用位元、8B資料
10000-RMW3A-讀取-修改-寫入請求,其中併入三個位址,提供額外欄位:TransactionSize、First_Window、First_Address、OpCode、ImmediateData、Second_Window、Second_Address、Third_Window、Third_Address
10111-16uWrite-包含16B資料的寫入請求,提供額外欄位:窗、位址、層級、16B資料
10011-16uWriteP-包含將寫入一次或更多次的16B資料的寫入請求,提供額外欄位:窗、位址、TransactionSize、層級、16B資料
10101-16uWriteEn-用WriteEnableBits及16B資料寫入,提供額外欄位:窗、位址、層級、16啟用位元、16B資料
10001-RMW4A-讀取-修改-寫入請求,其中併入四個位址,提供額外欄位:TransactionSize、First_Window、First_Address、OpCode、ImmediateData、Second_Window、Second_Address、Third_Window、Third_Address、Fourth_Window、Fourth_Address
00011-32uData-擴展資料封包,提供額外欄位:窗、32B資料。注意,資料序列號未被顯式傳送,此係因為擴展資料封包按順序傳送,因此接收器可附加一序列。若需要後續NACK,則隱式序列號被用作參照。
11000-32Write-包含32B資料的寫入請求,提供額外欄位:窗、位址,層級,32B資料,TransactionSize
11001-48uWrite-包含48B資料的寫入請求,提供額外欄位:窗、位址,層級,48B資料
00101-64uData-擴展資料封包,提供額外欄位:窗、64B資料。注意,資料序列號未被顯式傳送,此係因為擴展資料封包按順序傳送,因此接收器可附加一序列。若需要後續NACK,則隱式序列號被用作參照。
11010-64Write-包含64B資料的寫入請求,提供額外欄位:窗、位址、層級、64B資料、TransactionSize
11011-80uWrite-包含80B資料的寫入請求,提供額外欄位:窗、位址、層級、80B資料
11100-96uWrite-包含96B資料的寫入請求,提供額外欄位:窗、位址、層級、96B資料
11101-112uWrite-包含112B資料的寫入請求,提供額外欄位:窗、位址、層級、112B資料
01001-128uData-擴展資料封包,提供額外欄位:窗、128B資料。注意,資料序列號未被顯式傳送,此係因為擴展資料封包按順序傳送,因此接收器可附加一序列。若需要後續NACK,則隱式序列號被用作參照。
11110-128Write-包含128B資料的寫入請求,提供額外欄位:窗、位址、層級、128B資料、TransactionSize
01010-256uData-擴展資料封包,提供額外欄位:窗、256B資料。注意,資料序列號未被顯式傳送,此係因為擴展資料封包按順序傳送,因此接收器可附加一序列。若需要後續NACK,隱式序列號被用作參照。
11111-256Write-包含256B資料的寫入請求,提供額外欄位:窗、位址、層級、256B資料、TransactionSize
所列例示性異動類型按隨後的封包大小的順序提供(不含任何無意的排序錯誤),假設5位元異動類型、4位元異動類型、3位元窗、48位元位址、7位元資料序列號及針對各異動類型具體說明的資料欄位中的額外位元。此外,如上所述,封包30可包含ECC欄位36,其如在習知協定中可為固定大小。但是,如將暸解,在特定實施例中,ECC欄位36可為可變大小,如將在下文更詳細討論。
記住上述內容,回應匯流排S異動可使用4位元欄位(例如,0000、0001、...、1110、1111)指示。但是,若異動類型欄位32係5個位元,則異動類型欄位32可簡單包含一額外前導零。回應匯流排S異動之例示性4位元異動類型可包含: 0000-訊息-一般訊息,提供額外欄位:窗、MessageType、資料(注意,存在許多訊息類型,諸如完成、重新排序、NACK及其他)
0001-8uData-8B資料回應,提供額外欄位:窗、8B資料
0010-16uData-16B資料回應,提供額外欄位:窗、16B資料
0011-32uData-32B資料回應,提供額外欄位:窗、32B資料
0100-48uData-48B資料回應,提供額外欄位:窗、48B資料
0101-64uData-64B資料回應,提供額外欄位:窗、64B資料
0110-80uData-80B資料回應,提供額外欄位:窗、80B資料
0111-96uData-96B資料回應,提供額外欄位:窗、96B資料
1000-112uData-112B資料回應,提供額外欄位:窗、112B資料
1001-128uData-128B資料回應,提供額外欄位:窗、128B資料
1010-256uData-256B資料回應,提供額外欄位:窗、256B資料
像上文針對請求匯流排Q異動所列的例示性異動類型,上文的例示性回應匯流排S異動按隨後的封包大小的順序列出,假設請求匯流排Q上之5位元異動類型,回應匯流排S上之4位元異動類型,4位元異動大小,3位元窗,48位元位址,7位元資料序列號及針對各異動類型具體說明的資料欄位中的額外位元。
如上所示,各異動類型可取決於個別欄位大小假設而與不同長度封包相關聯。因此,可擴充協定可避免使用額外欄位來指示一封包大小。相反地,在具有8位元流量控制單元(flit)之一協定中,請求匯流排Q封包之流量控制單元計數將為異動類型的順序,如下:8、8、9、11、13、16、16、17、18、21、24、25、26、27、41、57、73、89、105、121、132、138、260、266。此協定可接著包含一封包大小欄位,其大小可為9個位元以指示各封包之流量控制單元計數。替代地,封包大小欄位大小可為5個位元以區分24個不同長度之各者,且接著一平移函數可用於判定一精確流量控制單元計數。與習知協定不 同,可擴充協定可能不採用封包大小欄位。而是,系統可使用一平移函數以基於異動類型判定一封包的大小,且可接著保存協定位元。
異動窗
除提供有關錯誤控制碼的經改進位元效率外,可擴充協定可根據其等的各自異動類型組織封包,且基於其等的各自異動類型根據一特定順序傳送經組織封包。在習知協定中,請求可根據其等已被傳送的時間排序。在此情況中,若第一請求涉及高延時,且後續請求(即,第二請求)涉及低延時,則即使第二請求可能比第一請求更快地完成,第二請求仍可能必須等待第一請求結束。因此,第一請求可阻塞匯流排。換言之,即使低延時請求可能比較高延時請求更快地被解析,第一請求仍可阻止匯流排回應於相對較低延時請求。
為了提供在匯流排內混合不同類型的異動請求的更高效方式,可擴充協定可使用異動窗來判定請求被送達的順序。一異動窗可為使用一虛擬位址空間實施之一虛擬通道。各異動窗可與一各自記憶體裝置相關聯,諸如NAND及DRAM。因而,單個異動窗可與一記憶體或具有相同特性(諸如延時、頻寬、粒度、持久性及類似特性)的若干記憶體相關聯。
通常,異動窗可提供有關針對各特定異動之一特定組接合規則的資訊。如上所述,異動窗資料可指定用於針對特定異動傳送及接收封包之一實體匯流排的一組信道(例如,通道29)。由異動窗指定的信道組可被稱作一虛擬通道,其可由記憶體裝置14存取。應注意,本文中描述的通道29包含其中可傳輸資料之一或多個信道。使用異動窗資料來特徵化有關封包的傳送或接收的特定特徵(例如,排序),可擴充協定可更好地管理處理器之間封包的傳送。
例如,由於各類型的記憶體裝置具有不同的延時,故基於各自記憶體裝置的各自延時管理各種類型的記憶體裝置14與主機SoC 12之 間的匯流排訊務的流量可能係有利的。舉例而言,DRAM裝置通常具有快延時(例如,來自隨機請求的50ns),而NAND裝置通常具有慢延時(例如,500us),其在隨機請求之後進行錯誤校正。SRAM緩衝器具有10ns的較快延時。記住這點,可擴充協定可指定各記憶體裝置的異動窗。在一實施例中,可擴充協定可使用兩個欄位來指定各異動窗:48位元位址及3位元窗(即,對窗0至7定址)。圖4繪示描繪指定封包30中的異動窗的兩個欄位之一方塊圖。如圖4中所示,一異動窗欄位42及一位址窗欄位44可為有效負載欄位34之部分。異動窗欄位42可指定一指定異動窗,且位址窗欄位44可指定與指定的異動窗相關聯的48位元位址。48位元位址可為指派給一虛擬通道(即,窗)之一虛擬位址。在一實施例中,虛擬位址空間可參照定位在一硬碟機或一些其他儲存裝置上之一實體位址。因而,記憶體裝置可具有儲存比實體可用多的資料。
除異動窗欄位42及位址窗欄位44外,封包可包含一起始位元46及一間接層級欄位48。起始位元46可指示位元串流中一封包的開始。間接層級欄位48可為有效負載欄位34的部分,且可提供指示各自異動可包含的間接層級數目的值。有關起始位元欄位46及間接層級欄位48的額外細節將在下文的其他章節中予以更詳細討論。
通常,各類型的記憶體裝置可被指派給不同的異動窗。舉例而言,DRAM0可被指派至Window0中,DRAM1可被指派至Window1中,DRAM2可被指派至Window2中,NAND0可被指派至Window3中,NAND1可被指派至Window4中,且SRAM緩衝器及控制暫存器可被指派至Window7中。記住這點,一例示性異動集合可根據下列序列發送:(1)Read.Window0.AddressA
(2)Read.Window3.AddressB
(3)Read.Window0.AddressC
(4)Read.Window0.AddressD
(5)Read.Window0.AddressE
(6)Read.Window0.AddressF
(7)Read.Window3.AddressG
(8)Read.Window0.AddressH
(9)Read.Window0.AddressI
如上所示,異動1、3至6、8及9係Window0的部分,其對應於一DRAM記憶體裝置。另一方面,異動2及7係Window3的部分,其對應於一NAND記憶體裝置。在接收到上述請求時,接收組件可使用根據針對各異動指定的各自異動窗建立的排序規則回應於所接收的請求。因而,接收組件可使用異動窗來提供傳送組件與接收組件之間的局域排序協定。
在一實施例中,針對一特定異動窗指定的排序規則可係基於與各自異動窗相關聯的各自延時。即,在回應於具有較長延時的請求之前,接收組件可首先回應於涉及較低延時的請求。由於接收組件可能知道各異動窗之間的延時差異,故接收組件可根據其等的窗指定決定接收異動。因而,再次參考上文描述的例示性異動,實施可擴充協定的接收組件可回應於上述請求如下:(1)Data.Window0.AddressA
(3)Data.Window0.AddressC
(4)Data.Window0.AddressD
(5)Data.Window0.AddressE
(6)Data.Window0.AddressF
(8)Data.Window0.AddressH
(9)Data.Window0.AddressI
(2)Data.Window3.AddressB
(7)Data.Window3.AddressG
如上所示,在回應於Window3的較高延時請求之前,接收組件可首先回應於Window0的低延時請求。即,長延時請求可比短延時請求遲傳送。因此,送達請求的系統匯流排不受阻於相同匯流排上不同種類的記憶體的存在,而不增加各種周密的協定複雜性,諸如為欄位增加請求優先級。以此方式,可擴充協定以相對簡單方式提供使用最小數目的位元之複雜系統操作。
在另一實例中,接收組件可基於針對各異動指定之一相應異動窗採用一局域排序方案。對於下列異動:(1)Read8b.Window1.AddressA
(2)Read8b.Window2.AddressB
(3)Read8b.Window1.AddressC
接收組件可首先接收異動(1)且判定AddressA是否可用。若AddressA係忙的,則接收組件可將異動(1)儲存在一佇列中且等待AddressA變為可用。同時,接收組件可接著接收異動(2),且在AddressB可用的情況下執行讀取操作。接收組件可接著接收異動(3),且由於其與異動(1)相同的窗相關聯,故接收組件可判定是否存在有關在異動(1)前執行異動(3)的任何排序衝突,此係因為其等係相同異動窗之部分。以相同方式,接收組件可忽略任何潛在的排序衝突或與異動(2)的任何潛在排序衝突的判定,此係因為其係不同異動窗之部分。因而,異動窗可提供在不同異動被執行的同時執行資料操作的更高效方式。即,由於異動窗允許操作與相關操作或記憶體裝置邏輯分組在一起,故操作可按多種順序執行,藉此提供完成異動的靈活方式。相比之下,習知協定通常強制執行將根據異動被發送的順序執行的資料操作之一嚴格順序,即使不同異動可按多種順序執行,或可 基於在專門的協定欄位中包含所發送的優先級資訊而處理異動。
在一實施例中,可擴充協定可提供為各窗指派最小異動大小的能力(例如,Window0.Size=8位元組、Window3.Size=128B)。例如,若Window0的最小傳輸大小係8個位元組,則針對48b位址欄位,Window0可儲存2^48*8個位元組=~2.25x1015個位元組。以相同方式,若Window3的最小傳輸大小係128個位元組,則Window3可支援~3.6x1016個位元組。因而,Window0及Window3兩者支援明顯比位址空間暗示的多的位元組。
與異動窗相關聯的另一特徵包含其他空間(諸如Window0 SRAM及系統控制暫存器)的簡單系統層級可定址性,而不在協定中形成額外命令。即,SRAM及系統控制暫存器可藉由簡單使用Window0而定址。另一方面,先前協定可使用額外命令(諸如register.read及register.write)以與此等類型之記憶體相互作用。在針對此等記憶體類型指定異動窗的情況下,用於其他記憶體裝置的相同讀取及寫入命令亦可用於SRAM及系統控制暫存器。即,讀取及寫入命令可簡單指向合適的窗。因而,可擴充協定可採用更少命令,藉此減少協定中所使用的位元的數目。
藉由根據異動類型組織資料異動,多個異動窗可將多個存取途徑提供給相同記憶體類型。例如,一典型DDR3 DRAM可包含八個庫,且一內部匯流排可包含八個此等DRAM。記住這點,八個DRAM可經組織,使得Window1表示一群組八個DDR3 DRAM之庫0且Window2提供對此相同群組的庫1的存取。以此方式,各窗可指定各DRAM的特定虛擬位址空間。記住這點,明顯可獲得若干適當的分組方法,此係因為可能存在在鎖步(lock-step)操作中分組的任何數目個DRAM,各具有頁、庫及排序。以相同方式,NAND亦可用頁、平面及區塊分組。此外,多通道裝置可依據通道及其各種聚合進一步分 離。通常,分組選項可基於邏輯晶片設計的複雜性判定。
藉由支援具有多個虛擬位址空間及虛擬通道之多個異動窗,可擴充協定可使用異動窗來在含具有不同延時的記憶體之一系統中建立可預測的資料排序。因此,可擴充協定可支援高優先級請求及低優先級請求,而無指定高優先級請求及低優先級請求如何排序之一顯式協定欄位。
記住上述內容,圖5繪示用於為作為記憶體裝置14之部分之各種類型之記憶體指派異動窗之一方法50之一流程圖。雖然方法50按特定順序描繪,但是應注意,方法50可按任何適當順序執行,且因此不限於圖中描繪的順序。此外,為了討論目的,方法50之下文描述將被描述為由記憶體SoC 22執行。因而,可通信地耦合至各種類型的記憶體的任何適當處理器可執行方法50中描述的操作。
現參考圖5,在方塊52處,記憶體SoC 22可接收來自儲存在記憶體SoC 22本身內的暫存器或其他記憶體組件之一初始化信號。在一實施例中,初始化信號可在通電時或在記憶體裝置14初次接收電力時由記憶體SoC 22接收。
在方塊54處,記憶體SoC 22可判定其能夠存取的記憶體類型。即,記憶體SoC 22可掃描其通信信道(例如,通道29),且識別可能可通信地耦合至記憶體SoC 22之不同類型的記憶體。重新參考圖2中描繪的例示性記憶體裝置14,記憶體SoC 22可判定RLDRAM 26、DDR4 28及NAND 24記憶體類型耦合至記憶體SoC 22。
在方塊56處,記憶體SoC 22可判定在方塊54處識別之記憶體類型之各者之能力。記憶體類型的能力可包含記憶體類型的容量、使用記憶體類型之讀取操作之預期延時、使用記憶體類型之寫入操作之預期延時及類似能力。可由記憶體SoC 22識別用於指派異動窗的其他能力可包含讀取延時、寫入延時、頻寬、最小讀取異動大小、最小寫入異 動大小、裝置循環時間、可就地寫入與否、位元組寫入能力與否及類似能力。在特定實施例中,各不同類型的記憶體可與不同組能力相關聯。不同類型的記憶體與該不同組的能力之間的相關性可儲存在記憶體SoC 22之一暫存器中或可由各各自記憶體類型提供。
在判定記憶體類型的能力後,記憶體SoC 22可在方塊58處基於各記憶體類型之各自能力將一異動窗指派給在方塊54處識別之各記憶體類型。通常,記憶體SoC 22可將各類似記憶體類型指派給相同異動窗。即,由於各類似記憶體類型具有類似能力,故記憶體SoC 22可將記憶體類型指派給相同異動窗。例如,再次參考圖2之例示性記憶體裝置14,記憶體SoC 22可將兩個DDR4 28記憶體指派給相同異動窗,此係因為其等係相同的記憶體類型。以相同方式,若兩個不同的記憶體類型具有特定數目的類似能力,則記憶體SoC 22亦可將兩個記憶體類型指派給相同異動窗。
在一實施例中,記憶體SoC 22可基於記憶體SoC 22的期望操作將一記憶體類型指派給一相應異動窗。例如,若記憶體SoC 22期望所有讀取操作具有至少一特定延時,則記憶體SoC 22可將各經識別記憶體類型指派至滿足此延時臨限之一第一異動窗中,或指派至不滿足此延時臨限之一第二異動窗中。
在將一異動窗指派給各經識別記憶體類型之後,記憶體SoC 22可繼續進行至方塊60,將各異動窗的性質儲存在一儲存裝置中。儲存裝置可包含能夠儲存資料的任何適當裝置。因而,儲存裝置可包含一局域暫存器、一表格或一些其他資訊儲存單元。以此方式,記憶體SoC 22可根據如上所述的排序規則針對各記憶體類型執行操作。在一些情況中,所儲存性質可詳述各異動窗之特定能力連同有關各異動窗之操作之其他相關資訊。
可程式化的間接層級數目
雖然封包30已在上文中被描述為具有異動類型欄位32、有效負載欄位34及ECC欄位36,但是在特定實施例中,可擴充協定可將其他選用欄位包含至封包30中以調節一請求,諸如讀取、寫入、移動、讀取-修改-寫入及類似者。一此條件可包含指示應用至請求的間接層級數目。
間接層級可指示請求與所請求資料之間的指針的數目。鑑於在計算系統中可用的巨量資料(例如大數據),資料通常經由多個表格索引且儲存在一個位置中。即,在大數據系統中,針對一特定資料集之一請求可包含指向一第二指針(例如,鏈路清單)之一指針,該第二指針指向一第三指針,等等。最後,指針序列中的最後指針可指向所請求資料集之一位址。各指針至指針鏈路可被稱作間接層級。透過各間接層級識別所請求資料集的程序通常被稱作「指針追逐(pointer chasing)」。
從請求組件的角度觀之,請求組件可最初用一第一指針發送針對特定資料集之一請求。回應於具有第一指針之請求,請求組件可接收第二指針。因而,請求組件可接著用第二指針發送針對特定資料集之一第二請求。此程序可繼續直至請求組件接收到特定資料集。相應地,請求匯流排Q上的訊務可涉及在實際接收由一單個初始請求請求之資料集前的多個請求。
為了減少有關各種間接層級類型請求的匯流排訊務量,可擴充協定可在特定應用積體電路(ASIC)、記憶體SoC 22、主機SoC 12或實施可擴充協定之類似者的設計內指定請求組件在實際接收所請求資料之前可接收的指針數目的指示。因而,實施可擴充協定之記憶體系統可識別原始請求與資料的位置之間的指針鏈,且可基於來自請求組件之初始請求將請求送達至所請求資料。即,一請求(涉及來自請求組件之任何數目的間接層級)可導致包含所請求資料之僅一個回應。
記住這點,指示間接層級數目之選用欄位可包含2個位元。在一實施例中,二進位00可指示無間接層級或請求中的所供應位址係期望運算元的實際位址。二進位01可指示1個間接層級或由請求內的位址指定的位置處的資料實際上係一指針之位址(例如,最後位址),且期望運算元位址含在該指針中。例如,在具有1個間接層級之一讀取請求中,由請求組件執行的實際功能可首先包含讀取請求中所含之一位址的內容。在本實例中,位址的內容可為Address2。實施可擴充協定的記憶體系統可接著讀取Address2之記憶體位置處的內容,且Address2之記憶體位置之內容被供應為讀取請求之結果。
以相同方式,二進位10可指示2個間接層級。在此,所供應位址可指向Address2,該Address2可為一指針。即,Address2可包含指向Address3之一指針。Address3處之資料內容可接著被供應至請求組件作為讀取請求之結果。
二進位11可指示3個間接層級。因而,所供應位址可指向Address2,Address2可指向Address3,Address3可指向Address4,Address4可包含資料內容。實施可擴充協定之記憶體系統可將資料內容提供至請求組件作為讀取請求的結果。
在一寫入請求之實例中,由實施可擴充協定之記憶體系統執行的程序可與所描述的讀取實例相同。例如,在一間接層級欄位被設定為二進位11的情況下,記憶體系統可藉由首先讀取寫入請求之一位址(例如,Address2)而執行一寫入操作。在知道間接層級欄位係11的情況下,記憶體系統可繼續讀取Address2的內容,該內容可涉及Address3。記憶體系統可接著讀取Address3的內容,該內容可涉及Address4。記憶體系統可接著將寫入請求之資料寫入至Address4的記憶體中。因而,在本實例中,寫入請求可包含寫入之前的3個讀取,但3個讀取之各者藉由一單個寫入請求起始。雖然間接欄位已被描述 為具有兩個位元,但是應注意,間接欄位可包含任何數目之位元以指示任何數目的間接層級。
如上所述,間接層級可在有效負載欄位34之間接層級欄位48內指定,如圖4中所示。間接層級欄位48內指定的間接層級數目對應於記憶體系統可能預期在擷取記憶體位置之內容時遭遇的間接層級數目。
在一實施例中,由間接層級欄位48使用之位元之數目(例如,大小)可基於由主機SoC 12提供之一優先級判定。例如,在通電時,主機SoC 12可發現記憶體SoC 22且使用本文中描述之可擴充協定判定記憶體SoC 22正在操作。因而,主機SoC 12可判定其在不損及其效能的情況下,可能能夠適應的間接層級的最大數目。間接層級的最大數目可基於主機SoC 12之寫入及/或讀取延時或主機SoC 12之其他操作參數判定。若例如主機SoC 12判定間接層級的最大數目為3,則其可指定記憶體SoC 22將2位元欄位用作間接層級欄位48。在一些實例中,主機SoC 12可能無有關涉及任何數目的間接層級的操作之一優先級。在此情況中,主機SoC 12可指定記憶體SoC 22不包含間接層級欄位48。
在準備封包30用於傳送時,記憶體SoC 22可判定封包30被傳送的原因。因而,記憶體SoC 22可判定什麼軟體命令用於封包30的傳輸。產生封包的軟體命令可例如對應於查找一指針之一指針之一命令。記憶體SoC 22可將此命令解譯為具有兩個間接層級,且因此可在準備封包30用於傳送時在間接層級欄位48中提供10二進位值。
間接層級可利於各種類型的操作。舉例而言,任意維度的陣列可在不增加不必要的訊務至各自匯流排的情況下,使用間接層級來協助請求組件識別其等的各自請求的內容。例如,3維陣列可使用三個指針來存取資料。一些經界定結構的記錄可使用指針。此一記錄之一 實例可包含具有針對清單中的每個結構之一首指針及尾指針之鏈路清單。對於鏈路清單,間接層級的抽象化可使鏈路清單的解析能更高效地發生。即,藉由知道開始之一位址及所請求資料位於作為清單的第8個元素或涉及8個間接層級之一目的地處,記憶體系統可使用由請求組件提供的單個請求擷取所請求資料或清單的第8個元素。在此,記憶體系統可解析8個間接層級之各者以判定所請求資料之位置。在識別所請求資料的位置時,記憶體系統可為請求組件提供所請求資料,因此將匯流排訊務限於來自請求組件之一個請求及來自所請求資料之位置之一個回應。
不應答所接收封包
用於減小匯流排訊務之另一技術可包含不應答所接收封包。即,在習知協定中,已被一接受組件接收之各封包可將一應答封包發送回至傳送組件。由於絕大多數被傳送封包由相應的接受組件接收,故發送應答封包可能增加各自匯流排上的訊務,而不提供太多好處。
例如,若回應於接收到每個成功封包而發送一應答位元,且考慮傳送具有在非常高速的介面中常見的1e-12的位元錯誤率(BER),則大量不必要位元被傳送來指示各封包已被接收。記住這點,且假設平均封包包含100個位元,且平均封包錯誤率為大約1e-10,則接受組件可傳送指示1x1010個封包的成功之一應答位元及指示一錯誤之1個封包。有效地,接受組件可能已發送大約1x1010個位元來指示一個錯誤。
為了減少在一匯流排內流動的位元的數量,接受組件可不針對每個所接收封包發送一應答封包,而是,傳送組件可假設所發送的封包已被接收,除非接受組件另外通知。未針對各所接收封包發送應答封包的實例繪示在圖6及圖7中。參考圖6,請求匯流排Q可發送2千位元組之一讀取請求。在接收到讀取請求時,回應匯流排S可傳送指示2 KB訊息已準備好用於讀取之一封包。請求匯流排Q可接著重新傳送讀取請求,其可導致回應匯流排S在不同封包中發送所請求資料。如圖6所示,在接收到資料之各封包時,請求匯流排Q不發送指示封包被成功接收之一應答封包。在此,由於請求匯流排Q可用高延時讀取操作操作,故回應匯流排S可包含兩個操作階段。即,回應匯流排S可指示訊息已準備好,且接著回應匯流排S可發送有關讀取請求之相應資料。
以相同方式,高延時直接記憶體存取子系統可針對各種寫入操作採用單階段回應。例如,圖7繪示其中一讀取-修改-寫入請求在請求匯流排Q上傳送且用讀取-修改-寫入請求完成之一訊息回應。
記住上述內容,接受組件仍可接收具有錯誤的封包。因而,接受組件可藉由發送NOT_ACKNOWLEDGE封包至傳送組件而通知傳送組件封包尚未被接收或所接收封包含有一錯誤。除指示被發送封包尚未被接收外,NOT_ACKNOWLEDGE封包可指示最新的已知良好的匯流排異動。因而,當經由一ECC子系統偵測到一錯誤時,具有錯誤的封包應被重新傳送。接受組件可識別最新的成功匯流排異動之傳送組件作為一參照,而使得一重新傳送可發生。
在特定實施例中,可擴充協定可使用4個相關欄位來向一傳送組件指示最後已知良好的匯流排異動之識別符。相關欄位包含一窗、一位址、一異動及一選用資料序列號。此四個欄位可識別系統中的任何請求/回應。在特定實施例中,一額外ECC欄位可用於偵測傳送中之一錯誤(例如,被保證偵測傳送封包中1個、2個、3個、4個或5個隨機錯誤的存在之一碼,亦被稱作HD6碼,如將在下文更詳細描述)。
在偵測到一錯誤時,接受組件可發送NOT_ACKNOWLEDGE訊息至傳送組件。此封包的大小可為許多可能的欄位大小。例如,NOT_ACKNOWLEDGE訊息可為一4位元異動類型、一3位元窗、一48 位元位址、一7位元資料序列號及一5位元原始異動類型,總和67個位元。接著,可添加一15位元ECC欄位,藉此使總數變為82個位元。重新參考上述實例,82個位元顯著低於用於指示1x1010個封包中之一錯誤而發送之1x1010個位元,且因此係指示位址錯誤封包之一更高效方式。應注意,上述資料序列號可識別錯誤封包。有關資料序列號及其可如何產生之額外細節將在下文參考圖12至圖14討論。
在偵測到系統中的錯誤時,傳送組件應重新發送資料。但是,由於在偵測錯誤時存在一定延時,故在接受組件判定一錯誤存在於一所接收封包中之前,傳送組件可能已傳送其他封包。由於可擴充協定包含使用上文描述的資料包裝技術發送之可變封包大小,故一先前傳送錯誤可能導致接受組件具有錯的封包長度,且因此誤譯含錯誤的封包之後的每個資料封包。因而,接收組件可向傳送組件指示至接受組件的最新的已知良好的匯流排異動之一識別符。傳送組件及接收組件可接著返回至錯誤的封包已被接收之一點且阻止任何動作在潛在錯誤封包及其後的封包上發生。
由於參照最後已知良好的匯流排異動之此規則,接受組件可準確地向傳送組件指示重新傳送可能發生的正確點。但是,當不存在良好異動(例如,從通電或重設不成功開始的第一異動)時,接受組件可併入上述規則之一例外。在此情況中,接受組件可用0填入所有欄位,使得系統的所有元件將0的欄位解譯為一「第一異動」。
如上所述,可擴充協定可包含選用的資料序列號欄位。此欄位可支援期望比由協定支援之一最大回應封包大的異動。例如,考慮窗中之一最小異動為128個位元組及指定一異動之一大小的被稱作大小(Size)之另一欄位,總異動大小可被判定為2^Size*windowMinTransactionSize。若大小係3位元欄位,則最大異動可為2^7*128=16,384個位元組。為了防止任何匯流排被一請求佔用太 長時間,由協定支援的最大單個封包可為128B的資料。因此,16,384位元組異動可由各128B的128個資料封包滿足。在一實施例中,選用的資料序列號欄位可包含7個位元,其參照此128個資料封包之任一個。以此方式,若NOT_ACKNOWLEDGE訊息發佈,則NOT_ACKNOWLEDGE訊息可正確地識別傳送變為不成功之一精確點。在另一實施例中,與2N位元組相比,針對TransactionSize 0至15之8B的最小TransactionSize可為8個位元組、16個位元組、32個位元組、48個位元組、64個位元組、80個位元組、96個位元組、112個位元組及128個位元組以節省下限的位元。
資料封包
記住上述內容,為了提供靈活的通信匯流排,可擴充協定可在使用任何類型的匯流排通信傳送封包時採用資料包裝技術。通常,由於封包大小係基於被發送之請求或回應的類型、被發送之資料、被請求之操作等而判定,故在知道有關封包之更多細節前可能難以預期使用什麼類型的資料通道。因而,可擴充協定可經設計以藉由在不如習知協定所做用零填充各個別封包的情況下,藉由將被傳送資料封包包裝在一起而使可用通道的使用最大化。如本文中使用,術語「不填充」意指在資料封包傳送之間,零(即,具有零值的位元)未跨各自通道傳送。而是,準備好被傳送之下一排程封包將在緊隨先前封包被傳送之後的時脈循環上傳送。
例如,考慮包含10個信號信道之一請求匯流排Q及包含8個信號信道之一回應匯流排S。本實例假設不存在資料編碼且異動僅包含簡單位元傳送(即,無符號傳送)。若Q匯流排上的佔用大小係:4.3、7.3、9.7、13.5、14.3、14.9、20.0、20.1、21.6、33.0、36.2、58.8、65.2、105.4、110.5及123.0,則習知協定可填充具有與其等相關聯之小數分量的值。即,習知協定可將零添加至各小數值的其餘部分,使 得Q匯流排上的佔用的大小分別變為5、8、10、14、15、15、20、21、22、33、37、59、66、106、111及123。在一些情況中,可將多達9個零添加至傳送,其可能不利地影響總匯流排利用效率,此係因為被傳送的零並非真實代表被傳送的資料。以此方式,此等零利用匯流排而不傳達資訊,藉此減小匯流排利用效率。
在一實施例中,取代填充被傳送資料,可擴充協定可允許請求被包裝在一起。匯流排信號因此無填充的零。例如,圖8繪示其中可擴充協定將兩個18位元請求包裝在一起之一信道包裝實例61。參考圖8,可擴充協定可將傳送視為符號而非位元。在圖8之實例中,一個位元可代表一個符號。由於圖8中之匯流排62包含12個信道(即,可在一個流量控制單元中傳送12個位元),故可擴充協定可藉由將請求包裝在一起而傳送兩個18位元請求。即,一第二18位元請求66可緊隨在一第一18位元請求64之後傳送。因而,傳送匯流排不含廢位元(例如,填充的零)。
在特定實施例中,為了確保接收組件可識別被包裝信道中之一新封包的起始,傳送組件可用一起始位元起始各新封包30,該起始位元可在起始位元欄位46中指定,如上所述。因而,當接收組件接收到位元串流形式的被包裝資料封包時,其可基於何時偵測到起始位元而識別各封包的起始。記住這點,被傳送之各封包可包含一起始位元(例如,1值)以指示新封包的存在。以此方式,當一接收組件接收到被包裝在一起的封包時,其可識別各新封包的開始,基於異動類型欄位32判定封包的異動類型,基於異動窗欄位42判定異動窗,基於位址欄位44判定操作的位址,基於間接層級欄位48判定間接層級數目及基於ECC欄位36判定錯誤校驗碼。
記住這點,圖9繪示用於產生一封包用於傳送,使得封包可使用上文描述的信道包裝方案傳送之一方法70之一流程圖。為討論之目 的,方法70之下文描述將被討論為藉由記憶體SoC 22(即,傳送/請求組件)執行,但應暸解,作為記憶體裝置14的部分之任何處理器可執行方法70中描述之操作。
現參考圖9,在方塊72處,記憶體SoC 22可接收將被傳送之一資料操作之一指示。資料操作可包含將被發送之一訊息、一讀取操作、一寫入操作或類似操作。在方塊74處,記憶體SoC 22可識別對應於資料操作之一異動類型。在特定實施例中,請求資料操作被執行之軟體可指定異動類型。替代地,記憶體SoC 22可接收來自軟體之一命令且從可由記憶體SoC 22局域存取之一查找表或一儲存單元判定相應異動類型。即,記憶體SoC 22可諮詢一查找表,該查找表可包含根據可被請求之若干可能的資料操作索引之若干異動類型。
在方塊76處,記憶體SoC 22可基於與所請求資料操作相關聯之記憶體類型判定一異動窗。即,記憶體SoC 22可判定在執行資料操作時什麼類型的記憶體將被存取,且使用一查找表或類似者基於記憶體的類型判定相應異動窗。除異動窗外,記憶體SoC 22可判定一記憶體位址,該位址指代有關資料操作及異動窗之資料之一位置。例如,針對一讀取操作,位址可指代將從一指定記憶體讀取之資料之位置。
在方塊78處,記憶體SoC 22可判定對應於所請求資料操作之間接層級數目。如上文討論,間接層級數目可由資料操作本身或由請求執行資料操作之軟體指定。
在方塊80處,記憶體SoC 22可針對封包30產生一錯誤控制碼(ECC)值。ECC值可被接收組件用於確保封包30被接收且無錯誤。因而,記憶體SoC 22可首先判定一合適的錯誤控制碼(ECC)演算法來用於編碼封包30。在一實施例中,請求傳送的軟體應用程式可指定ECC來進行演算法使用。替代地,主機SoC 12或記憶體SoC 22可指定一特定ECC演算法以用於編碼及解碼所有被傳送及被接收的封包。在任何 情況中,封包30的ECC值可基於在異動類型欄位32及有效負載欄位34中提供的位元而判定。
在判定表示上述異動類型、異動窗、間接層級數目及ECC值的位元值後,記憶體SoC 22可在方塊82處根據在方塊72、74、76及80處判定的值產生封包30。在產生封包30時,記憶體SoC 22可最初針對起始位元欄位46提供1以向一接收組件指示一新封包正被傳送。在將1插入起始位元欄位46後,記憶體SoC 22可提供代表在74處於異動類型欄位32中識別的異動類型之一值。
記憶體SoC 22可接著使用在方塊76處判定之異動窗及位址及在方塊78處判定之間接層級數目產生封包30之有效負載欄位34。即,記憶體SoC 22可在異動類型欄位32後輸入異動窗值,且將異動窗值输入異動窗欄位42中。記憶體SoC 22可接著將資料操作的位址輸入位址欄位44中及將間接層級數目輸入間接層級欄位48中。
在封包30產生後,記憶體SoC 22可在方塊84處取決於封包30的目的地而經由通道16、通道29或類似者傳送封包30。在所產生封包30被傳送後,記憶體SoC 22可繼續進行至方塊86且判定下一待傳送封包是否已準備好用於傳送。通常,用於傳送之下一封包可根據上文參考方塊72至82描述之程序產生。若下一封包已準備好用於傳送,則記憶體SoC 22可再次繼續進行至方塊84,且緊隨在先前封包被傳送之後傳送下一封包。藉由緊隨在另一封包被傳送之後傳送各後續封包,記憶體SoC 22可根據一包裝信道方案傳送封包,其不涉及在未利用一匯流排之所有信道時在一匯流排上填充零。
為了更好地繪示封包可如何根據包裝信道方案傳送,圖10繪示可根據本文中描述之包裝信道方案傳送之若干封包。如圖10中所示,在匯流排62上傳送之第一封包92包含一起始位元(1)、針對異動類型欄位32之5個位元、針對有效負載欄位34之45個位元及針對ECC欄位 36之6個位元。緊隨在第一封包92被傳送之後,在匯流排62上傳送第二封包94。因而,在位元時間3處之位元信道9中,緊隨在第一封包92之ECC欄位36之最後位元之後,存在一起始位元(1)。此外,其餘位元信道(即,位元信道10至15)包含與第二封包94相關聯之資料。
與其他封包傳送方案相比,無匯流排62之位元信道填充有零或不用於一封包之傳送。即,在其他封包傳送方案中,由於第一封包92僅佔據可用的16個的9個位元信道,故其餘位元信道(即,位元信道10至15)將填充零,且第二封包94將在位元時間4處開始被傳送。以此方式,記憶體SoC 22可使用於發送封包的匯流排的效率最大化。
應注意,仍存在當記憶體SoC 22仍可在發送封包之間傳送零的實例。例如,重新參考圖9之方塊86,若下一封包未準備好用於傳送,則記憶體SoC 22可繼續進行至方塊88,且在下一可用位元信道中傳送零。即,由於匯流排62連續操作,故記憶體SoC 22可能無法使匯流排62停止運作,且因此可在匯流排62上傳送零,直至下一封包準備好用於傳送。因而,在記憶體SoC 22在下一可用位元信道中沿著匯流排傳送零後,記憶體SoC 22可返回至方塊86,且再次判定下一封包是否準備好用於傳送。此案例亦繪示在圖10中。
再次參考圖10,在第二封包94被傳送後,記憶體SoC 22可能未使另一封包準備好用於傳送。因而,在位元時間8處,記憶體SoC 22可開始傳送零,直至第三封包96準備好用於傳送。因而,記憶體SoC 22可在位元時間8處在位元信道6至15上傳送零,直至第三封包96在位元時間9處準備好用於傳送。為了確保接收組件不會將填充在匯流排中的零誤譯為資料,接收組件可連續接收來自記憶體SoC 22的位元且判定一有效封包在接收下一封包之一位元或起始位元後被傳送。
在特定實施例中,若另一封包未準備好用於傳送,則記憶體SoC 22可關閉匯流排62,直至下一封包準備好用於傳送。在此情況中,記 憶體SoC 22可在匯流排62未用於傳送封包時節省用於給匯流排62供電的能量。
為了繪示使用信道包裝方案傳送封包的效率,提出下列實例。10信道匯流排上之傳送序列可包含下列匯流排活動:73個位元,接著652個位元,接著73個位元,接著652個位元。此群組的4個請求包含總共1450個位元,其包含匯流排上剛好145個信號間隔(被正式稱作單元間隔或UI)而無廢位元。UI可指代一個計時群組的資料,其包含特定數目的位元。例如,在8位元匯流排或8信道鏈路上,經由8信道鏈路傳送之資料之一流量控制單元可對應於一流量控制單元。一流量控制單元接著可被稱作一UI,其包含8位元的資料。因而,UI可用於評估一匯流排被利用的效率。即,藉由將封包位元計數(包含StartBit、異動類型欄位32、有效負載欄位34及ECC欄位36)除以8b的匯流排寬度而計算一封包之UI佔用。因而,若8信道鏈路用於發送6位元的資料,則UI係0.75(6/8)。
記住上述內容,下文提出的實例假設下列狀況係存在的:一ECC漢明距離(Hamming Distance)3;異動類型欄位32包含請求匯流排Q及回應匯流排S上的5個位元;dataSequenceNumber係7個位元;8位元單元大小;4位元transactionSize;3位元窗;48位元位址;2位元levelsOfIndirection;24位元RMWopcode+資料;4位元訊息類型。在此等定大小假設下,可能出現在回應匯流排S上的11個樣本異動類型可包含79b、83b、144b、273b、401b、530b、658b、786b、914b、1043b及2067b的封包大小。此等封包大小包含異動類型欄位32、有效負載欄位34及ECC欄位36,但不含上述StartBit。在一習知8b匯流排中,零填充將被添加以使各封包高至偶數8b邊界,且將無需StartBit。因而,用於在添加零填充後傳送此11個異動類型的匯流排流量控制單元之數目或單元間隔之數目將分別為10(79/8)、11 (83/8)、18(144/8)、35(273/8)、51(401/8)、67(530/8)、83(658/8)、99(786/8)、115(914/8)、131(1043/8)及259(2067/8)。即,對於79個位元的第一封包,一個零將被填充至封包的最後8個位元上,使得10個8信道鏈路將被用於發送79位元封包。
但是,使用本文中描述的技術,諸如添加StartBit及將回應包裝在一起,用於傳送相同封包的UI數目分別係10(80/8)、10.5(84/8)、18.125(145/8)、34.25(274/8)、50.25(402/8)、66.375(531/8)、82.375(659/8)、98.375(787/8)、114.375(915/8)、130.5(1044/8)及258.5(2068/8)。因而,針對隨機選擇的封包大小的平均節省係每個異動0.5UI,因此位元節省隨信道數目增加而增大。此實例指示請求匯流排Q或回應匯流排S的任何寬度,不管其等係兩個匯流排上的相等或不相等寬度。為了使可擴充協定能如上文描述包裝信道,主機SoC 12或任何其他接收器可使用下列傳送/接收方案:接收封包30;解析封包30之內容以識別異動類型、有效負載的大小及ECC欄位36在包裝30內的位置;基於ECC驗證封包30的正確性,及接著確定地作用於傳送。
以此方式,一所接收傳送封包在其內容被解析之前可整體被捕獲至一接收器緩衝器(例如,緩衝器23)中。此外,接收器可能不使用所接收封包,除非封包被驗證為無錯誤。緩衝器23可操作為先進先出(FIFO),其具有在偵測到傳送錯誤的情況下選擇性清空的額外能力。可擴充協定可包含一可變位元長度能力,其用於將資料拉出緩衝器23,且用於包裝位元移位。如上文參考圖3討論,包裝30的開始可包含異動類型欄位32,其可基於異動類型欄位32中所指示的異動類型指定一封包大小。因而,異動類型欄位32包含可擴充協定可用於判定一封包大小(包含封包30內ECC欄位36之大小及相對位置)之資訊。在ECC被校驗後,採用可擴充協定之接收器可判定封包30是否無錯誤。若封包被認為無錯誤,則接收器可知道異動類型被適當地編碼且封包 大小被正確地解譯。接收器可接著繼續進行至緊隨最新解析封包之後接收的下一封包。此可擴充協定可結合任何匯流排變動使用,無論係全雙工或半雙工,不管大小、長度、編碼/解碼方法及類似者。在接收組件接收到根據信道包裝方案包裝的封包後發生之一程序之額外細節將在下文參考圖11討論。
為了參考,可擴充協定可包含長度變化的傳送。即,在請求匯流排Q上,可擴充協定可使用16個不同長度。例如,請求匯流排可包含43、73、97、135、143、149、200、201、216、330、362、588、652、1054、1105及1230的長度位元計數,其中無填充以形成任何特定最佳長度,諸如皆為8的增量或此類。以相同方式,回應匯流排S可包含8個不同長度,諸如33、42、85、101、167、297、555及1069之長度位元計數,再次無填充。
解析封包用於資料包裝
如上所述,可擴充協定可經設計以促進一最大位元效率。因而,在特定實施例中,封包30可具有任意大小,其未對應於所利用實體匯流排之整數倍。任意大小封包之傳送藉由將封包緊實地包裝在一起而維持位元效率,使得各後繼封包緊隨先導封包之後被傳送,而不用零填充任一封包。但是,為了使接收器(例如,主機SoC 12)判定第一封包在何處結束及第二封包在何處開始,接收器可實施本文中描述用於解析所接收封包之特定技術。在特定實施例中,可擴充協定可指定接收器在所接收封包上採用之一解析方法。此解析方法可包含移位操作、錯誤偵測及緩衝器管理作為在一系統實施方案中所利用的邏輯操作之頭部處的管線操作。
記住上述內容,下文描述進入方向上單向的8個位元及在外出方向上8個位元之一實體匯流排之一實例(全雙工)以闡明想解析方法之特定態樣。在本實例中,一流量控制單元被視為存在於一匯流排上之 資料之一單元間隔。即,一個流量控制單元可包含經由匯流排傳輸之8位元資料。此外,具有位址36b、窗3b及59位元的漢明密度(HD6)錯誤涵蓋率的最小封包可包含5位元異動類型、41位元資料有效負載及13位元ECC。假設類似大小的小封包之一無限串流可被包裝在一起,不留位元間隙,傳送可反映下列序列,針對被傳送之一第一封包,從信道0開始,且行進至信道7:(name.0意指該欄位的位元0)
流量控制單元1 TT.0 TT.1 TT.2 TT.3 TT.4 D.0 D.1 D.2
流量控制單元2 D.3 D.4 D.5 D.6 D.7 D.8 D.9 D.10
流量控制單元3 D.11 D.12 D.13 D.14 D.15 D.16 D.17 D.18
流量控制單元4 D.19 D.20 D.21 D.22 D.23 D.24 D.25 D.26
流量控制單元5 D.27 D.28 D.29 D.30 D.31 D.32 D.33 D.34
流量控制單元6 D.35 D.36 D.37 D.38 D.39 D.40 ECC.0 ECC.1
流量控制單元7 ECC.2 ECC.3 ECC.4 ECC.5 ECC.6 ECC.7 ECC.8 ECC.9
流量控制單元8 ECC.10 ECC.11 ECC.12
第二封包可接著被設定為從流量控制單元8,信道3開始,如下:
流量控制單元9 TT.0 TT.1 TT.2 TT.3 TT.4
流量控制單元10 D.0 D.1 D.2 D.3 D.4 D.5 D.6 D.7
流量控制單元11 D.8 D.9 D.10 D.11 D.12 D.13 D.14 D.15
流量控制單元12 D.16 D.17 D.18 D.19 D.20 D.21 D.22 D.23
流量控制單元13 D.24 D.25 D.26 D.27 D.28 D.29 D.30 D.31
流量控制單元14 D.32 D.33 D.34 D.35 D.36 D.37 D.38 D.39
流量控制單元15 D.40 ECC.0 ECC.1 ECC.2 ECC.3 ECC.4 ECC.5 ECC.6
流量控制單元16 ECC.7 ECC.8 ECC.9 ECC.10 ECC.11 ECC.12
第三封包可接著在流量控制單元16,信道6中開始,如下:
流量控制單元16 TT.0 TT.1
流量控制單元17 TT.2 TT.3 TT.4 D.0 D.1 D.2 D.3 D.4
流量控制單元18 D.5 D.6 D.7 D.8 D.9 D.10 D.11 D.12
流量控制單元19 D.13 D.14 D.15 D.16 D.17 D.18 D.19 D.20
流量控制單元20 D.21 D.22 D.23 D.24 D.25 D.26 D.27 D.28
流量控制單元21 D.29 D.30 D.31 D.32 D.33 D.34 D.35 D.36
流量控制單元22 D.37 D.38 D.39 D.40 ECC.0 ECC.1 ECC.2 ECC.3
流量控制單元23 ECC.4 ECC.5 ECC.6 ECC.7 ECC.8 ECC.9 ECC.10 ECC.11
流量控制單元24 ECC.12
記住上文繪示的三個例示性封包,輸入位元一旦被接收器接收,即可被放置至一接收FIFO中。由於在上文實例中,存在8個信道,故位元可一次移動8個。但是,由於輸入匯流排可能極快(例如,太快而無法循環FIFO),故FIFO亦可被製作為顯著較寬,且資料可被連續發送至FIFO之各連續8b寬度,直至到達最後的寬度單元。此時,FIFO位址根據例常FIFO操作遞增,且填充在FIFO信道0至7處再次開始,隨後8至15等,直至再次接收到最後的寬度單元。此允許較慢邏輯跟上非常快的串列器/解串列器(SERDES)組件(例如,40Gb/s SERDES具有25ps的單元間隔)。若使用2GHz的邏輯時脈,則FIFO可為20x8位元信道寬度或16位元寬。因而,ECC邏輯可使用針對各區塊之XOR閘極自然內建於160位元區塊中(例如,區塊0處理位元0至159,區塊1處理位元160至319等,使得ECC區塊的總數可為14個,其中各ECC區塊可包含2-輸入XOR閘極之不同互連)。
由於上文描述的三個封包之各者被連續傳送,且由於位元到達一接收器不包含任何訊框化資訊,故由接收電路(例如,主機SoC 12)負責首先判定封包之長度,使得封包可被適當地訊框化。再次參考上文實例,接收器可首先接收可立即從FIFO獲得之160位元值。在上文描述的特定實例中,整個第一封包駐留在該160位元區內。
如上所述,封包30之第一部分可包含指示封包30的開始的起始位元欄位46。封包30的下一部分可包含異動類型欄位32,異動類型欄位32可包含0至31的值。異動類型欄位32的值可用於索引指示資料有效負載的大小及ECC的大小(按位元計)之一表格。在特定實施例中,接收器可將一簡單邏輯函數用於相同目的。雖然未立即知道所有所接收位元係無錯誤的,但是接收器可初步假設其等將使用異動類型欄位32中指定的異動類型。接收器可接著在管線階段中校驗ECC以判定所 接收封包是否係無錯誤的。在一實施例中,為了校驗ECC,異動類型欄位32的異動類型及有效負載欄位34的有效負載可在(若干)ECC區塊中檢驗,使得輸入ECC位元被提供至所有ECC區塊。在一實施例中,ECC區塊可使用例如採用漢明距離演算法之一可擴充錯誤控制碼演算法校驗ECC。例如,ECC區塊可採用具有6的漢明距離(HD6)之一錯誤控制碼演算法。因而,ECC區塊可提供59位元之一錯誤涵蓋率(5b TransactionType、41b資料有效負載、13bECC)。即,ECC區塊可提供59個已知正確位元。有關可擴充錯誤控制演算法及使用一漢明距離之演算法之額外細節將在下文更詳細描述。
在接收器驗證封包係無錯誤後,接收器可接著確定地知道異動類型值係正確的,且因此接收器可具有所接收封包之適當訊框化。59個已知正確位元可接著被轉遞至下一管線階段用於進一步封包處理(即,判定所作出的精確請求且處理請求)。在判定59位元第一封包係正確後,及在轉遞59位元第一封包用於進一步處理後,接收器可接著使160位元寬FIFO之其餘101個位元桶形移位以對準至位元0,且重複上述程序。
在一些情況中,接收器可能具有太少可用於解析的資料(即,從異動類型欄位32穿過有效負載欄位34及ECC欄位36的所有事物應可用)。在此,接收器可繼續提取資訊直至其皆可用。雖然大封包可能超過單個160位元區段,但是由於接收器從異動類型知道ECC在何處起始及結束,故接收器可將ECC位元轉遞至合適的ECC邏輯區塊。此外,由於異動類型係在封包的標頭處,故接收器容易地知道查找其。此外,接收器可判定有效負載欄位34包含異動類型欄位32與ECC欄位36之間的所有事物。在識別有效負載欄位34時,接收器可將資料有效負載發送至合適的ECC邏輯區塊。在特定實施例中,取代實體MOVE,ECC邏輯可取決於實體佈局最佳化使用而就地實施在暫時儲 存資料的暫存器位元處。
上文描述之技術的優點包含支援錯誤訊息的快速產生。因而,若ECC偵測到一錯誤,則一邏輯信號被傳遞至一外出佇列管理器,且一錯誤訊息被公式化且在合適的通道上傳送。
記住上述內容,圖11繪示可由根據上述信道包裝方案接收封包之一接收組件(例如,主機SoC 12)採用之一方法100之一流程圖。雖然方法100之下文描述被描述為由主機SoC 12執行,但是應注意,方法100可藉由任何適當接收組件執行,該接收組件接收已根據本文中描述之實施例予以信道包裝之封包。
現參考圖11,在方塊102處,主機SoC 12可經由匯流排62、通道16或類似者接收位元串流。如圖10中描繪,主機SoC 12可基於在匯流排62上可用的位元信道的數目一次接收若干位元。
在接收到位元串流時,在方塊104處,主機SoC 12可識別一新封包之一起始位元。因而,主機SoC 12可監測位元串流,直至其接收到1。例如,在位元時間0處,主機SoC 12可偵測起始位元且開始解析第一封包92。
在方塊106處,主機SoC 12可基於起始位元後的五個位元判定第一封包92的異動類型。如上文討論,主機SoC 12可使用一查找表或諮詢儲存在一局域儲存組件中之一金鑰以基於在異動類型欄位32中接收之二進位值判定與第一封包92相關聯之異動類型。
在判定一各自封包之相應異動類型後,在方塊108處,主機SoC 12可識別各自封包之有效負載欄位34及ECC欄位36。即,各自封包之異動類型可向主機SoC 12指示有效負載欄位34及ECC欄位36中預期的位元數目。因而,主機SoC 12可將異動類型欄位32後的第一數目個位元指定為有效負載欄位34,且將有效負載欄位34後的第二數目個位元指定為ECC欄位36。
在接收一封包之ECC欄位36後,主機SoC 12可在方塊110處基於ECC欄位36中提供的資料校驗所接收封包是否無錯誤。即,主機SoC 12可使用ECC欄位36中提供的資料以校驗在異動類型欄位32中提供的資料及在有效負載欄位34中提供的資料之準確性。
在方塊112處,主機SoC 12可判定各自封包是否係無錯誤。若主機SoC 12驗證各自封包係無錯誤,則主機SoC 12返回至方塊102且繼續接收位元串流。但是,若主機SoC 12判定各自封包並非無錯誤,則主機SoC 12可繼續進行至方塊114,且將NOT_ACKNOWLEDGE封包發送回至傳送各自封包之組件。如上文討論,NOT_ACKNOWLEDGE封包可指示最新的已知良好的匯流排異動。因而,NOT_ACKNOWLEDGE封包可指示最新成功接收的封包之異動類型及位址。由於傳送組件知道各封包被傳送的順序,故傳送封包可接著緊隨在NOT_ACKNOWLEDGE封包中參照的封包之後重新發送封包。
為了確保傳送組件能夠在接收到NOT_ACKNOWLEDGE封包時重新發送特定數目的封包,在特定實施例中,傳送組件無法將所發送封包從其緩衝器忽略、刪除、擦除或覆寫,直至在各自封包已被傳遞後已過去特定時間量。換言之,在一封包已被傳送後,傳送組件(例如,記憶體SoC 22)可在其將被傳送封包從其緩衝組件刪除前等待特定時間量。
傳送組件在傳送各封包之後及在將其從其緩衝器中刪除之前可等待的時間量可隨封包而變化。由於各封包可包含不同數目的位元,故傳送封包及作為回應接收NOT_ACKNOWLEDGE封包所涉及的時間量可針對各封包而不同。通常,傳送組件可等待的時間量可取決於封包跨匯流排62傳送的最壞情況滯後時間,接收組件偵測到封包上的錯誤的最壞情況滯後時間及傳送組件接收NOT_ACKNOWLEDGMENT封包的最壞情況滯後時間。上述各情況之最壞情況滯後時間可基於操作 被執行的預期時間及藉由將預期時間的一定百分比添加至預期時間以在預期時間計算中提供錯誤裕度而判定。
判定上文描述之各種操作被執行的預期時間所涉及的一些因素包含被傳送封包的大小、請求匯流排Q及回應匯流排S上信道的數目、將跨各匯流排傳送之資料的UI的時間量、在接收組件驗證所接收封包係無錯誤之前在接收組件中預期的管線延遲數目、傳送組件中佇列的最大深度、有關用於發送緊急訊息(例如,係被放置在佇列前方的緊急訊息)的傳送組件之一政策之資訊及類似因素。應注意,上文所列因素被提供作為實例,且不限制可用於判定各種操作被執行之預期時間的因素之範圍。
資料重新排序操作
雖然異動窗可用於指示一給定異動窗之一順序,但是在一些實例中,根據各自異動窗的順序執行異動操作可能係非期望的。例如,一DRAM可能涉及一刷新操作,其無法被其他DRAM操作延緩。另一實例可包含當一NAND記憶體可能混洗資料以準備用於一擦除操作。在此,若一異動操作正試圖存取相同範圍的位址,則與被混洗之資料相關聯之一位址範圍可能暫時不可用。因而,可擴充協定將操作重新排序而不管根據異動窗之指定順序可能係有利的。
在習知系統中,使用各種技術來允許排序。例如,系統可用一請求操作發送一異動識別。回應操作可接著包含相同的異動識別。異動識別可為8個位元,其意指用每個請求發送額外8個位元,且再用每個回應發送額外8個位元。因而,有關請求匯流排Q及回應匯流排S兩者上的額外耗用位元與未用每個請求及回應發送異動識別相比可能相對較大。
記住上述內容,在特定實施例中,可擴充協定可保持根據異動窗指定的順序,直至判定在重新排序的情況下,可更高效地執行異動 操作為止。一旦可擴充協定(例如,接收組件)作出此判定,其即可發送一重新排序訊息,該重新排序訊息將新的相對順序賦予至一特定異動區。該異動區可包含被發送之所有異動操作之一子集。在接收到重新排序訊息時,傳送組件可根據由重新排序訊息提供的新相對順序對異動操作重新排序。新相對順序可指示其中各異動操作可相對於被執行的其他異動操作執行之一順序。包含經重新排序異動操作之各自異動區可接著維持新順序直至被另外重新排序。
如上所述,接收組件可在期望脫離自然回應序列時發送一資料重新排序訊息。在一實施例中,接收組件可基於異動類型欄位32中指示的異動類型判定重新排序可能係較佳的。即,異動類型欄位32可固有地指示一重新排序係較佳的。伴隨異動類型欄位32的可能係一64位元訊息,其包含16x4位元順序識別符。若存在16個待決回應,則此等識別符可指示接下去的16個回應之順序。
當在正常流量下操作時,接收組件可按根據一給定異動窗之命令的順序傳送回應。當接收組件判定將所接收請求重新排序可能係較佳時,接收組件可等待直至可能保持有序的所有回應在發送一重新排序訊息前首先被發送。若系統期望按0、1、2、3、4、5、6、7、8、9、10、11、12、13、14及15之序列之下一群組的回應,則重新排序訊息可更改該序列內的任何事項。例如,1、2、3、4、5、6、7、0、8、9、10、11、12、13、14、及15之一新順序可能係較佳的,使得各值用各自4位元值表示。若存在少於16個待決回應,則不存在的未來回應可按順序列出。即,再次參考上文實例,若0至7係待決的,且回應0較佳被延遲直至所有其他之後,則位元8至15的順序可在最後保持,只要0在所有其他之後提供。
在一實施例中,重新排序訊息可在新排序係較佳的任何時間發送。再次參考上文實例,若回應按1、2、3、4、5、6、7及0的順序發 送,且接著判定其餘項目無法按預期順序發送,則可發送一新的重新排序訊息。在此,緊跟的下一個回應將係回應0,非回應8,此係因為一順序計數器在重新排序訊息被發送的任何時間被重設為零。因而,在發送新的重新排序訊息時,0至15的新相對順序可根據最有利的排序判定。在無任何重新排序訊息的情況下,所有資料可為每個窗接收之請求的「自然」順序。在任何情況中,藉由在未定期傳送請求識別或回應識別的情況下在系統中支援資料重新排序,可擴充協定可節省另外在習知協定中使用的大量額外耗用。
記住上述內容,圖12繪示可由接收組件(例如,主機SoC 12)用於與封包期望被傳送組件(例如,記憶體SoC 22)傳送之一原始順序相比較,將待傳送至接收組件之封包重新排序之一方法120之一流程圖。方法120之下文描述將參考圖13之圖式140討論。圖式140被提供來幫助繪示在方法120之各個階段發生之操作。為討論之目的,方法120之下文描述將被描述為藉由主機SoC 12執行,但應暸解,任何適當接收組件可執行本文中描述之操作。
首先參考圖12,在方塊122處,主機SoC 12可接收來自傳送組件(例如,記憶體SoC 22)之若干封包。所接收封包可大致包含被請求由主機SoC 12按較佳順序執行的操作。傳送組件(例如,記憶體SoC 22)可按特定順序發送對應於資料操作之封包,其可反映操作的較佳順序。圖13之圖式140繪示由主機SoC 12按列142接收之封包的例示性原始順序。如圖13中所示,由傳送組件傳送的十個封包可初始被編號為1至10。
在方塊124處,主機SoC 12可判定所接收封包中所指示的操作是否應按不同順序執行。即,例如,若主機SoC 12出於一些原因而無法執行一特定操作(例如,被請求記憶體位址忙、不可用等),則主機SoC 12可取而代之在執行先前請求操作之前執行後一操作。若主機 SoC 12判定操作不應按不同順序執行,則主機SoC 12可進行至方塊126,且按較佳順序執行所接收封包之操作(例如,如由傳送組件傳送)。
若主機SoC 12判定操作不應按較佳順序執行,則在方塊128處,主機SoC 12可判定一新順序來執行所請求操作。為了按不同順序執行操作,主機SoC 12可識別對應於無法按所請求順序執行之一操作之一特定封包。主機SoC 12可接著判定任何後續操作是否相依於所識別操作之結果。即,主機SoC 12可判定在稍後時間執行所識別操作是否可能導致將執行的任何其餘操作中之一錯誤。在特定實施例中,主機SoC 12可評估各封包之異動窗以判定操作是否可被重新排序。例如,若具有異動窗的順序係如下:Win2、Win2、Win2、Win3、Win3、Win2及Win3,則主機SoC 12可延遲第三Win2請求以執行第一Win3請求,此係因為其等參照不同異動窗,且因此可能在不同記憶體類型上操作。使用各封包之異動窗,主機SoC 12可接著判定一新順序來執行所請求操作。
在判定新順序以執行操作後,在方塊130處,主機SoC 12可將在緊隨與所識別操作對應之封包之前之一封包後接收的若干封包重新命名。在一實施例中,主機SoC 12可根據其等在佇列中的當前位置將封包重新命名。例如,再次參考圖13,若主機SoC 12將原始封包5識別為含有應在稍後時間執行之一操作的封包,則主機SoC 12可根據其等在佇列中的當前位置將封包4之後的封包重新命名。因而,封包5至10可被重新命名為封包0至5,如圖式140之列144中所示。以此方式,其餘封包可根據其等在佇列中的相對位置重新命名。
在將其餘封包重新命名後,在方塊132處,主機SoC 12可產生一重新排序訊息,該重新排序訊息可指示其中其餘封包將藉由主機SoC 12定址或根據將由主機SoC 12執行的相應操作之順序定址的新順序。 重新排序訊息可基於在方塊128處判定的新順序及根據如在方塊130中提供的經重新命名封包判定。例如,再次參考圖13中的實例,若主機SoC 12判定原始第5個封包操作應在原始第7個封包操作後執行,則重新排序訊息可被呈現為1、2、3、0、4、5,如列146中所示。列146根據經重新命名封包指示新操作順序。為闡釋目的,列148指示重新排序訊息指定其餘封包操作將根據其等的原始封包編號的順序。
在方塊134處,主機SoC 12可將重新排序訊息傳送至傳送組件。因而,傳送組件可使用重新排序訊息來調整從主機SoC 12傳送的回應封包與各自請求封包相關聯的順序。即,傳送組件可根據重新排序訊息中所指示的經重新命名相對順序關聯在重新排序訊息之後接收的各回應封包。
藉由將對應於最後實施操作之封包之後的封包重新命名,主機SoC 12可將一參照順序提供至傳送組件,該順序係相對於將由傳送組件接收之其餘回應封包而言。因而,由於主機SoC 12及傳送組件可能知道封包已被發送的順序,故根據其等的相對順序重新命名的封包使主機SoC 12能關聯回應封包,而無需用各封包發送一封包識別號,藉此提供更位元高效的通信方案。
在存在多個請求及回應匯流排的情況中,可擴充協定可判定異動操作被執行的順序,如下。若存在與4個各自回應匯流排相關聯之4個請求匯流排,則相關聯的一對請求及回應匯流排可由可擴充協定命名為一通道。因而,在一實施例中,一異動操作可被定義為「channel.window.address」。在此,排序可接著被定義為「channel.window.dataSequenceNumber」。通常,僅一個資料可為異動操作之部分,使得對於比最大所支援封包大小大的異動請求,資料序列號通常係不重要的。否則,可擴充協定可遵從channel.window內之一排序。即使當兩個通道使用相同窗時,可擴充協定仍無法在其等 間併入任何排序。而是,可擴充協定可提供各channel.window組合內之一順序。因此,可擴充協定可大大簡化系統的操作,此係因為通道具有異步計時相互關係的可能性。藉由根據channel.window將異動操作排序,可擴充協定使排序保持簡單,且亦減小可執行的仲裁的次數。此外,此排序技術亦可減小已被另外發送的重新排序訊息的數目。
資料重新排序操作-高頻率
雖然可擴充協定已被描述為能夠提供異動操作被發送的新相對順序,但是可能難以將此類型的重新排序方案併入可具有高頻率的重新排序請求的大型系統中。即,若按一定高頻率(例如,高於特定臨限)發送重新排序訊息,則可能不再高效地使用時間及資源來發送重新排序訊息及將異動操作重新排序。換言之,對於一些類型的系統,資料重新排序的頻率可能變得太高使得傳送組件與接收組件之間的通信量可能變得低效。對於此等系統,即使當大量重新排序事件係較佳的時,可擴充協定仍可減小異動識別的位元訊務。
在一實施例中,接收組件可判定當前重新排序技術是否在低效地操作。例如,傳送組件可判定從接收組件接收重新排序訊息的頻率。若頻率高於一定臨限,則傳送組件可判定當前重新排序方案在低效地操作。此時,傳送組件可附加各異動操作之各異動識別(ID)以包含新的欄位:請求匯流排Q序列號。由於接收組件可能知道請求被接收的順序,故接收組件可指派循環序列號至各所接收請求(即,請求匯流排Q序列號Qsequence或Qseq)。請求匯流排Q序列號可應用至各請求之各自通道及各自窗之組合。因而,請求匯流排Q序列號可被標註為「channel.window.Qseq」,使得Qseq可針對各各自通道及各自窗按循環順序指派,藉此藉由不傳送已知資料而保留頻寬。例如,若請求順序(皆在通道0上)係如下:Win2、Win2、Win2、Win3、Win3、 Win2及Win3,且此等係第一異動,則由接收器附加的所指派Qseq號碼將分別係:0、1、2、0、1、3及2。即,各窗可基於各類型(即,通道/窗)請求的接收而與一循環Qseq序列相關聯。
在接收請求後及當計劃在回應匯流排S上發送回應時,接收組件可用其相應Qseq值標記各各自回應。因而,傳送組件可將各所接收回應與其各自請求相關聯。如上所示,上文描述的技術避免在請求匯流排Q上傳送Qseq值。藉由不在Q匯流排上發送Qseq值,可擴充協定提供提供位元高效傳輸之一額外方式。
記住這點,圖14繪示用於將由一接收組件執行之操作重新排序之一方法160。再者,如上文參考方法120所述,下列方法160將被描述為由主機SoC 12執行。但是,應暸解,下列方法160可由任何適當接收組件執行。
現在參考圖14,在方塊162處,主機SoC 12可判定在一定時間週期內傳送至傳送組件之重新排序訊息之數目是否超過一定臨限。臨限可與記憶體裝置14之下降效能、在執行一操作時涉及的平均循環數目,針對各所請求操作之一平均佇列深度或類似者相關。
若重新排序請求的數目不大於臨限,則主機SoC 12可繼續根據上文描述之方法120發送重新排序訊息。但是,若主機SoC 12判定重新排序請求的數目大於臨限,則主機SoC 12繼續進行至方塊164。在方塊164處,主機SoC 12可根據各封包之異動窗依循環方式添加一序列值至各所接收封包。傳送組件可儲存其中各封包已被傳送之一順序,使得傳送的順序可對應於其中各封包被接收的順序。
在方塊166處,主機SoC 12可按其等各自操作已被執行的順序發送回應封包。回應封包可包含在方塊164處添加至所接收封包之序列值。由於傳送組件知道各封包已被發送之順序,故其可使用添加的序列值來將回應封包施加至合適的請求封包。與將序列號保持在兩個傳 送上相比,在使用方法160來傳送回應封包的情況下,主機SoC 12及傳送組件可添加序列號至跨匯流排62發送一次的封包。以此方式,可擴充協定可藉由利用傳送組件所知道的資訊(諸如封包被傳送的順序)而提供位元高效資料傳輸。
在特定實施例中,在諸如要求多個封包之長異動之一事件中,當一所發生錯誤與管線可能被清空及管線內的相應封包可能被重新發送時,接收組件可使用一請求匯流排Q序列號(Qseq)及一資料序列號(DataSequence)來識別各封包。例如,若在回應匯流排S上之一封包中發生錯誤,則由傳送組件接收之最新已知良好的封包可在其中包含一Qseq號碼以用作參照。作為利用本技術的結果,一些訊息現在實際上較短,此係因為未參照異動類型來指示一異動。即,為了另外指示異動類型,一封包內的異動類型、窗及位址(高達52個位元)可用於包含此資訊。相比之下,發送Qseq值及DataSequence值可能涉及23個位元(例如,16+7=23位元),藉此進一步改良傳輸中的位元效率。
與先前描述之重新排序訊息技術相比,當重新排序被執行的次數高於一定頻率臨限時,為封包附加一Qseq值可導致所傳送的位元總數較低。雖然提供一Qseq值的選項已被描述為動態併入可擴充協定內,故在特定實施例中,可擴充協定提供Qseq值的能力可為在實施可擴充協定的SoC被設計時內建至可擴充協定中的靜態選擇。使用可擴充協定的系統的類型可提供資訊來指示哪個排序方法可提供位元更高效傳輸。
記住上述內容,在一實施例中,請求匯流排Q序列號欄位可為18位元欄位,其可用於識別一4千位元組異動之各異動操作。雖然請求匯流排Q序列號欄位已被描述為一18位元欄位,但是請求匯流排Q序列號欄位之大小可為任何適當值。通常,請求匯流排Q序列號欄位的大小可大至足以識別一特定異動之各異動操作,且可用於指示請求或 回應可被執行之一順序。雖然添加請求匯流排Q序列號欄位至各自封包可增大各自封包之各自大小,但是封包大小的增大仍比如在習知協定中執行用每個請求及回應操作發送一異動識別更高效。此外,由於請求匯流排Q序列號欄位的添加可在判定發送重新排序訊息低效後完成,故與如在習知協定中用於每個異動操作相比,本技術限於在特定實例中使用。
在一些實施例中,當請求已暗示序列號(例如,針對一給定channel.window,第一請求係0,下一個係1,下一個係2等)時,可擴充協定可不添加一請求匯流排Q序列號欄位至異動操作。即,由於異動操作為自然暗示順序,故可擴充協定可藉由不傳送序列號而保存位元不發送。
但是,如上所述,當回應較佳按除自然暗示順序以外的不同順序流動時,可擴充協定可為各所接收異動操作附加請求匯流排Q序列號欄位中的相應序列號。在一些情況中,序列號可潛在地使用大位元欄位。例如,在支援NAND之一窗中,回應可能需要0.01秒。在此,若封包速率係5x10-9,則可能在飛行中存在5x107個回應,其可使用26個位元來識別回應之各者。更實用案例預期大約4千位元組之較大異動,其中可能存在大約100,000個未處理異動。在此,各異動可僅在低於17位元內識別。為了允許用小異動實現更好效能,且亦確保無識別混疊,位元計數可向上捨入為18個位元。即,數目可模數截斷為零,且因此在序列中存在在任何時間「活躍」的明顯間隙以避免混淆。
在任何情況中,當提供重新排序序列時,可擴充協定可添加請求匯流排Q序列號欄位至相應封包。因而,上文描述之欄位的一些可改變。例如,在請求匯流排Q上,不應答命令可改變,使得其具有相同異動類型及相同異動窗。事先,不應答命令可能已包含一位址、一 資料序列號及一原始異動類型。在一實施例中,不應答命令現可具有一請求匯流排Q序列號及一資料序列號。因此,不應答命令可為比先前描述小的封包。
在回應匯流排S上,一般訊息異動類型可能未改變。但是,封包之其餘項目可改變如下:‧「完整」訊息可具有一異動類型、一窗、一請求序列號及一ECC。
‧「不應答」(NACK)訊息可具有一異動類型、一窗、一請求序列號、一資料序列號及一ECC。
‧「訊息」可能未改變,且因此可包含一異動類型、一窗、8B資料及一ECC。
‧8uData可包含一異動類型、一窗、一請求序列號及8B資料及一ECC。
‧16uData可包含一異動類型、一窗、一請求序列號及16B資料及一ECC。
‧32uData可包含一異動類型、一窗、一請求序列號及32B資料及一ECC。
‧48uData可包含一異動類型、一窗、一請求序列號及48B資料及一ECC。
‧64uData可包含一異動類型、一窗、一請求序列號及64B資料及一ECC。
‧80uData可包含一異動類型、一窗、一請求序列號及80B資料及一ECC。
‧96uData可包含一異動類型、一窗、一請求序列號及96B資料及一ECC。
‧112uData可包含一異動類型、一窗、一請求序列號及112B資料及 一ECC。
‧128uData包含一異動類型、一窗、一請求序列號及128B資料及一ECC。
‧256uData可包含一異動類型、一窗、一請求序列號及256B資料及一ECC。
如上所述,雖然資料異動類型的封包大小可能已增大了請求序列號的量,但是甚至在具有高效能NAND之系統中,所產生的序列號可僅為16b。因而,與可添加16位元至每個回應的習知協定相比,按高頻率重新排序或如此設計的異動操作將異動操作重新排序之當前揭示技術仍可能係經濟的。此外,由於當前揭示技術包含針對各回應之一序列號,故可擴充協定可能不發佈重新排序訊息或封包。此外,由於各異動操作與一特定序列號相關聯,故異動操作可按一循環順序傳送以確保已知資料不被傳送。
排序工作欄位
如上文討論,當一個異動窗中的異動操作較佳按順序時,情況出現,但偏離該順序可能係有利的。記住這點,除用於將上述異動操作重新排序的兩種技術外,在一實施例中,可擴充協定可提供一靈活程式化選項用於一系統中排序異動操作或封包。靈活程式化選項(例如,排序工作欄位)可設定可擴充協定應用於維持異動的原始順序的一定程度的工作。即,靈活的排序工作欄位可向可擴充協定指示工作應多努力來確保封包按順序傳送。因而,靈活排序工作欄位可與對應於按順序保持每個封包的第一值與對應於允許任何事項被重新排序之一第二值之間之一值範圍相關聯。
記住這點,異動窗0可被用作記憶體SoC 22之一通用控制區域。因而,異動窗0可駐留在暫存器、SRAM緩衝器、快取SRAM及其他可定址控制特徵中。對於各異動窗,可擴充協定可實現可由使用者程式 化的可配置資訊。如上所述,一種類型之可配置資訊(例如,排序工作欄位)可包含維持原始順序之一定程度的工作(即,排序工作)。排序工作欄位可具有實施方案的大變動。例如,在一2位元欄位中,排序工作可被特徵化如下:00-允許每次機會的重新排序
11-允許大量重新排序
10-允許一些重新排序
11-不允許重新排序,等待直至資源可用為止
在特定實施例中,可擴充協定可將特定封包與特定排序區關聯。排序區可指示相應封包將被類似地處理。例如,相同排序區中的請求可被預期為按順序,且若不可能按順序,則傳送組件(例如,記憶體SoC 22)可應用排序工作(如由排序工作欄位指定)以判定請求可被亂序傳送的程度。
排序區可與一通道、一系統窗及一異動窗之一組合(例如,channel.syswin.window)相關。通道可為從其接收請求之一通道號。系統窗可為一對選用欄位,其例如指定系統中的哪個SoC發起請求。
記住上述內容,假設對於一排序區而言一佇列深度係16,在一2位元欄位中指定排序工作之一合理實施方案可如下:00-允許每次機會的重新排序:允許結果槽在16的佇列深度中的任何位置處互換
01-允許大量重新排序,允許結果槽在11的佇列深度中的任何位置處互換
10-允許一些重新排序,允許結果槽在6的佇列深度中的任何位置處互換
11-無重新排序:不允許互換,允許資源閒置
在特定實施例中,定義排序工作的排序工作函數可包含額外變 數,諸如請求的使用期限。例如:00-允許每次機會的重新排序,允許結果槽在16的佇列深度中的任何位置處互換
01-允許大量重新排序:若請求係舊的,則允許結果槽在8的佇列深度中的任何位置處互換,若請求係新的,則允許結果槽在14的佇列深度中的任何位置處互換
10-允許一些重新排序:若請求係舊的,則允許結果槽在4的佇列深度中的任何位置處互換,若請求係新的,則允許結果槽在8的佇列深度中的任何位置處互換
11-無重新排序:不允許互換,允許資源閒置
在此,可擴充協定可使請求能被指定為舊或新。例如,若請求已存在達7個或更多個請求槽,則請求可被視為舊的,而若請求已存在達6個或更少請求槽,則請求可被視為新的。
上文列出的實例繪示一排序工作可在一2位元欄位中量化之可能方式的小子集。可使用較大大小的排序工作欄位指定額外程度的排序工作。在任何情況中,排序工作欄位可提供簡單可程式化的能力,該能力使排序工作成為可利於調諧總系統效能之函數。在特定實施例中,由主機SoC 12採用的排序工作可在主機SoC 12通電時予以判定或指定。即,主機SoC 12可判定其所連接的裝置的類型,或其被設計使用的產業的類型及相應地判定排序工作。
匯流排訊務調節之背壓函數
背壓可指各自匯流排上有關接收匯流排訊務之緩衝器23(例如,先進先出(FIFO)緩衝器)之可用容量的匯流排訊務量。因而,當接收匯流排訊務的緩衝器23接近其深度限值時,一各自匯流排之背壓可被視為高。一旦緩衝器23變滿,習知系統中的接收組件即可忽略未來輸入封包或接受輸入封包且刪除目前在緩衝器23中之一封包。在此等情 況之任一者中,封包可能不被處理,且因此通信鏈路的完整性可能受損。
記住這點,圖15繪示用於調低從一傳送器傳送之請求之傳送速率之一方法180之一流程圖。再者,為闡釋目的,下列方法180被描述為由主機SoC 12執行,但可由任何適當接收組件執行。
在方塊182處,主機SoC 12(例如,接收組件)可監測緩衝器23的容量,且判定接收器的緩衝器23的容量小於或等於一定臨限。若緩衝器23的容量高於臨限,則主機SoC 12可繼續進行至方塊184,且按當前傳送速率繼續從傳送組件接收封包。
但是,若緩衝器23的容量小於或等於臨限,則主機SoC 12可接著繼續進行至方塊186。在方塊186處,主機SoC 12可發送訊息至傳送組件以減小其發送封包的速率。此時,主機SoC 12及傳送組件兩者可使用相同背壓函數來根據相同的已知數學函數調節封包的傳送及接收。因此,匯流排訊務之背壓可被減小以適應當前在緩衝器23中的資料封包的處理,同時減小丟失一封包的可能性。
在一實施例中,當未處理異動計數接近最大窗值(windowMax)及最大通道值(channelMax)時,匯流排訊務可被調低。channelMax及windowMax欄位可由使用者或可擴充協定獨立地設定。channelMax欄位可對應於一所定義最大傳送速率。例如,channelMax可被設定為每秒1x109個請求。windowMax欄位可對應於未處理異動操作之數目。一例示性背壓函數可包含在windowMax或channelMax處於90%容量後線性減小一請求速率。此時,傳送速率可為0.900*Max處的100%,且線性變化至0.995*Max處的0%。圖16用圖形繪示可如何根據上文描述的線性函數調低傳送速率。
除線性調低傳送速率外,傳送組件亦可根據一非線性函數調低其傳送。例如,圖17繪示一可能的非線性曲線,其可由傳送組件在調 低其傳送速率時採用。應注意,傳送組件不限於根據圖17中描繪的曲線採用非線性傳送速率。在另一實例中,非線性曲線可包含步降曲線,其藉由有限步進按比例縮減傳送速率。
在一通道上僅存在一個異動窗之情況中,windowMax欄位可能不與channelMax欄位相關或可被視為等於channelMax欄位。在存在多個異動窗的情況中,可針對各各自異動窗界定不同的背壓函數。例如,考慮異動窗的下列四個實例,其使用如下文描述的各種不同記憶體類型。
窗0-控制及註冊
窗1-最低延時DRAM
窗2-例常DRAM
窗3-NAND
記住這點,可如何基於一通道之訊務調節背壓函數之一實例可包含定義一通道最大值(例如,每秒1x109個請求)、定義背壓函數何時可開始(例如,RollbackStart 0.9 p.u.)及定義背壓函數何時可結束(例如,RollbackEnd 1 p.u.)。在本實例中,Rollback函數可應用至被稱作Max的變數,Max可對應於通道max。通常,通道max對應於當通道請求速率小於或等於0.9*通道max(例如,高達RollbackStart)時,請求(或異動命令)被發送的速率。
以相同方式,各各自異動窗可採用一各自背壓函數。例如,上文定義的四個例示性異動窗之背壓函數可實施如下:window0 max的window0max 0.05 p.u.max的window0RollbackStart 0.045 p.u.max的window0RollbackEnd 0.05 p.u.
window1 max的window1max 0.9 p.u.max的window1RollbackStart 0.81 p.u.max的window1RollbackEnd 0.9 p.u.
window2 max的window2max 0.3 p.u.max的window2RollbackStart 0.27 p.u.max的window2RollbackEnd 0.3 p.u.
window3 max的window3max 0.1 p.u.max的window3RollbackStart 0.09 p.u.max的window3RollbackEnd 0.1 p.u.
如上所示,背壓函數可在存在許多相互作用的異動窗(即,許多同時程序)時,逐漸回降請求速率。在任何情況中,藉由與使用所傳送信號相比,根據一函數執行調節操作,可擴充協定可能與所傳送信號係頻帶內或頻帶外無關。此外,由於接收組件及傳送組件可實施相同數學函數而無需傳達何時實施函數,故可擴充協定可進一步減小跨各各自匯流排傳輸之位元量。
在特定實施例中,背壓函數亦可考慮各請求的使用期限。例如,若較舊請求積存在一異動窗中,則接收組件可針對該特定異動窗調整windowMax的值或修改Rollback限值。
在又一實施例中,背壓函數亦可考慮佇列深度。即,在通電時,記憶體SoC 22可具有基於異動窗或類似者中提供的資訊發現連接至記憶體SoC 22之(若干)模組之能力的能力。能力的部分可包含觀測連接至記憶體SoC 22的(若干)接收器的佇列深度且可能亦可發現一所連接通道之標稱封包處理速率。雖然記憶體SoC 23可能無法追蹤一接收器之佇列,但記憶體SoC 22可作出有關接收器的佇列之狀態之一些 判定。例如,若記憶體SoC 22在超過接收組件之一封包處理速率的情況下快速連續發送許多封包,則記憶體SoC 22可預測接收組件中之一佇列將增長。因而,若記憶體SoC 22判定封包比接收器之封包處理速率更快地被發送,則記憶體SoC 22可開始應用上文描述的背壓函數,而不接收來自接收器之顯式回饋。換言之,若封包傳送速率超過封包間處理速率,則記憶體SoC 22可開始減小封包傳送速率。以此方式,傳送速率可被減小而不添加訊息至通道。在一些實施例中,當接收組件未按其預期速率處理封包時,接收組件可發送一訊息至記憶體SoC 22,作為一失效保護(failsafe)。
在另一實施例中,接收組件可包含一系統失效保護機構以向傳送組件指示緩衝器23即將超出其容量限度或超過其容量。在此,接收組件可發送類似於上文描述之不應答訊息之一訊息。此訊息可具有與不應答訊息相同的效應,除其可在傳送組件之一資料日誌中形成一輸入項以註明一訊息歸因於緩衝器23無法接受封包而被拒絕。因而,傳送組件可判定匯流排訊務之延遲的原因。
雖然本文中描述之實施例可具有各種修改及替代形式,但是特定實施例已在圖式中藉由實例展示且已在本文中予以詳細描述。然而,應瞭解,本揭示內容並不旨在限於所揭示之特定形式。而是,本揭示內容涵蓋落於如藉由下列隨附申請專利範圍定義之本揭示內容中描述之技術及系統之精神及範疇內之所有修改、等效物及替代。
120‧‧‧方法
122‧‧‧方塊
124‧‧‧方塊
126‧‧‧方塊
128‧‧‧方塊
130‧‧‧方塊
132‧‧‧方塊
134‧‧‧方塊

Claims (27)

  1. 一種記憶體裝置,其包括:複數個記憶體組件,其經組態以儲存資料;一處理器,其可通信地耦合至該複數個記憶體組件,其中該處理器經組態以:接收與該複數個資料操作相關聯之複數個封包,其中該複數個封包之各者包括指示與該各自封包之一各自資料操作相關聯之一類型之記憶體組件之一異動窗欄位;及基於該複數個封包之各者之該異動窗欄位中指示之該類型之記憶體組件按順序執行該複數個資料操作。
  2. 如請求項1之記憶體裝置,其中該處理器經組態以在該複數個操作之一第二部分之前執行該複數個資料操作之一第一部分,其中該第一部分與該等記憶體類型之一第一記憶體類型相關聯,且該第二部分與該等記憶體類型之一第二記憶體類型相關聯。
  3. 如請求項3之記憶體裝置,其中該第一記憶體類型與具有一第一延時之一第一組請求相關聯,且該第二記憶體類型與具有大於該第一延時之一第二延時之一第二組請求相關聯。
  4. 如請求項1之記憶體裝置,其中該處理器經組態以藉由下列步驟執行該複數個資料操作:判定是否可執行該複數個資料操作之一第一資料操作,其中該第一資料操作對應於該複數個封包之一第一封包及一第一異動窗;識別該複數個資料操作之一第二資料操作,其中該第二資料操作對應於該複數個封包之一第二封包及一第二異動窗;及當該第一資料操作無法被執行時執行該第二資料操作,其中 該第一異動窗與該第二異動窗不同。
  5. 如請求項4之記憶體裝置,其中當與該第一資料操作相關聯之一記憶體位址忙時,該第一資料操作無法被執行。
  6. 如請求項1之記憶體裝置,其中該等記憶體類型包括一動態隨機存取記憶體(DRAM)、靜態隨機存取記憶體(SRAM)、一NAND記憶體或其等之任何組合。
  7. 如請求項1之記憶體裝置,其中該異動窗欄位包括針對該複數個封包之各者之一最小異動大小。
  8. 如請求項1之記憶體裝置,其中該處理器經組態以將一重新排序訊息發送至已傳送該複數個封包之另一處理器,其中該重新排序訊息指示該第一順序,其中該順序與該複數個封包被傳送之一順序不同。
  9. 一種記憶體系統,其包括:一記憶體裝置,其包括一處理器;一接收組件,其可通信地耦合至該處理器,其中該接收組件經組態以:接收來自該處理器之複數個封包,其中該複數個封包按一第一順序被傳送;基於與該複數個資料操作相關聯之一記憶體組件之可用性而判定對應於該複數個封包之複數個資料操作是否應按該第一順序執行;當該複數個資料操作不應按該第一順序執行時,判定一第二順序以執行該等資料操作;及將包括該第二順序之一重新排序訊息發送至該記憶體處理器。
  10. 如請求項9之系統,其中當該複數個資料操作之至少一者歸因於 一不可用記憶體位址或一忙的記憶體位址而無法被執行時,該接收組件判定該複數個資料操作不應按該第一順序被執行。
  11. 如請求項9之系統,其中該接收組件基於該複數個資料操作之至少一者是否相依於在該複數個資料操作之該至少一者之前執行之該複數個資料操作之另一者而判定該第二順序。
  12. 如請求項9之系統,其中該複數個封包之各者與一異動窗相關聯,且其中該接收組件藉由識別具有一相同異動窗之該複數個封包之一部分而判定該第二順序。
  13. 如請求項9之系統,其中該接收組件經組態以在發送該重新排序訊息後,根據該第二順序將複數個回應封包發送至該處理器。
  14. 如請求項9之系統,其中該處理器經組態以在接收該重新排序訊息後,根據該重新排序訊息中指示之一順序將從該接收組件接收之複數個回應封包之各者關聯至該複數個封包之一各自封包。
  15. 如請求項9之系統,其中該重新排序訊息包括該處理器尚未接收來自該接收組件之一相應回應封包之該複數個封包之一部分之各封包之一新順序號碼。
  16. 如請求項15之系統,其中該新順序號碼與預期將被該處理器接收之複數個回應封包之一佇列中之一相對位置相關聯。
  17. 一種操作一記憶體之方法,其包括:經由一處理器將複數個封包傳送至一接收組件,該接收組件經組態以基於該複數個封包執行複數個資料操作;經由該處理器,接收有關從該接收組件傳送之複數個回應封包之一重新排序訊息,其中該重新排序訊息與被傳送至該接收組件之該複數個封包之一部分相關聯,其中該處理器尚未接收與複數個封包之該部分之任何封包相關聯之一回應封包; 經由該處理器接收來自該接收組件之該複數個回應封包;及經由該處理器,將該複數個回應封包之各者與該複數個封包之該部分之一相應封包相關聯。
  18. 如請求項17之方法,其中該重新排序訊息包括其中該複數個回應封包之各者基於該複數個封包之該部分在一佇列中之一相對順序而與該複數個封包之該部分之該相應封包相關聯之一順序。
  19. 如請求項17之方法,其包括:基於該複數個封包之該部分在一佇列中之一相對順序將該複數個封包之該部分之各封包重新命名;基於一較佳順序產生該相對順序之一經修改順序以執行對應於該複數個封包之該部分之該複數個資料操作之一部分;及基於該經修改順序產生該重新排序訊息。
  20. 一種記憶體系統,其包括:一處理器,其經組態以產生與複數個資料操作相關聯之複數個封包;及一接收組件,其經組態以:接收來自該處理器之該複數個封包,其中該複數個封包按一第一順序被接收,該第一順序對應於其中該複數個資料操作將被執行之一順序;當該複數個資料操作無法按該順序被執行時,發送複數個重新排序訊息;當該複數個重新排序訊息超過一臨限時,將該複數個封包之一部分之各所接收封包附加一序列號;產生該部分之各所接收封包之一回應封包,其中該部分之各所接收封包之該回應封包包括一各自序列號;及 將該部分之各所接收封包之該回應封包傳送至該處理器。
  21. 如請求項20之系統,其中基於與對應於一各自所接收封包之一各自資料操作相關聯之一類型之記憶體根據一循環方式將一各自序列號指派給該複數個封包之該部分之各所接收封包。
  22. 如請求項21之系統,其中該處理器經組態以:接收該複數個封包之該部分之各所接收封包之該回應封包;及基於該各自序列號將該複數個封包之該部分之各所接收封包之該回應封包關聯至該複數個封包之該部分之一各自封包。
  23. 如請求項22之系統,其中該接收組件經組態以當在該複數個封包之一者中識別一錯誤時,傳送一不應答封包,其中該不應答封包包括一第二序列號。
  24. 一種有形、非暫態、機器可讀媒體,其包括指令,該等指令經組態以:按一第一順序接收複數個封包;基於有關在該複數個封包之各封包提供之重新排序偏好的資訊而判定對應於該複數個封包之複數個資料操作是否應按該第一順序執行;當該複數個資料操作不應按該第一順序執行時,判定一第二順序以執行該等資料操作;及將包括該第二順序之一重新排序訊息發送至已傳送該複數個封包之一處理器。
  25. 如請求項24之有形、非暫態、機器可讀媒體,其中該資訊指示是否允許重新排序。
  26. 如請求項24之有形、非暫態、機器可讀媒體,其包括經組態以基於該資訊產生該第二順序之指令,其中該資訊指示該複數個 資料操作之重新排序之一程度。
  27. 如請求項24之有形、非暫態、機器可讀媒體,其中該資訊提供在該複數個封包之各封包之一2位元欄位中。
TW104117826A 2014-06-02 2015-06-02 用於在可擴充記憶體系統協定中記錄封包傳送之系統及方法 TWI545497B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201462006668P 2014-06-02 2014-06-02
US14/724,489 US9600191B2 (en) 2014-06-02 2015-05-28 Systems and methods for reordering packet transmissions in a scalable memory system protocol

Publications (2)

Publication Number Publication Date
TW201614476A TW201614476A (en) 2016-04-16
TWI545497B true TWI545497B (zh) 2016-08-11

Family

ID=54701759

Family Applications (6)

Application Number Title Priority Date Filing Date
TW104117829A TWI547799B (zh) 2014-06-02 2015-06-02 用於在可擴充記憶體系統協定中傳送封包之系統及方法
TW104117824A TWI582588B (zh) 2014-06-02 2015-06-02 用於在記憶體系統中提高效率之系統及方法
TW104117823A TWI625632B (zh) 2014-06-02 2015-06-02 記憶體裝置、記憶體系統及操作一記憶體之方法
TW104117826A TWI545497B (zh) 2014-06-02 2015-06-02 用於在可擴充記憶體系統協定中記錄封包傳送之系統及方法
TW104117828A TWI570569B (zh) 2014-06-02 2015-06-02 用於在可擴充記憶體系統協定中包裝資料之系統及方法
TW104117868A TWI554883B (zh) 2014-06-02 2015-06-02 用於在記憶體系統中分割資料結構之系統及方法

Family Applications Before (3)

Application Number Title Priority Date Filing Date
TW104117829A TWI547799B (zh) 2014-06-02 2015-06-02 用於在可擴充記憶體系統協定中傳送封包之系統及方法
TW104117824A TWI582588B (zh) 2014-06-02 2015-06-02 用於在記憶體系統中提高效率之系統及方法
TW104117823A TWI625632B (zh) 2014-06-02 2015-06-02 記憶體裝置、記憶體系統及操作一記憶體之方法

Family Applications After (2)

Application Number Title Priority Date Filing Date
TW104117828A TWI570569B (zh) 2014-06-02 2015-06-02 用於在可擴充記憶體系統協定中包裝資料之系統及方法
TW104117868A TWI554883B (zh) 2014-06-02 2015-06-02 用於在記憶體系統中分割資料結構之系統及方法

Country Status (6)

Country Link
US (16) US9733847B2 (zh)
EP (6) EP3149602B1 (zh)
KR (3) KR102196747B1 (zh)
CN (9) CN106575257B (zh)
TW (6) TWI547799B (zh)
WO (6) WO2015187572A1 (zh)

Families Citing this family (71)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9606928B2 (en) * 2014-08-26 2017-03-28 Kabushiki Kaisha Toshiba Memory system
US10127383B2 (en) * 2014-11-06 2018-11-13 International Business Machines Corporation Resource usage optimized auditing of database shared memory
US9817602B2 (en) * 2014-11-13 2017-11-14 Violin Systems Llc Non-volatile buffering for deduplication
GB2539443B (en) * 2015-06-16 2020-02-12 Advanced Risc Mach Ltd A transmitter, a receiver, a data transfer system and a method of data transfer
ES2934610T3 (es) * 2016-02-19 2023-02-23 Viasat Inc Métodos y sistemas para la asignación de capacidad de red multinivel
US9997232B2 (en) * 2016-03-10 2018-06-12 Micron Technology, Inc. Processing in memory (PIM) capable memory device having sensing circuitry performing logic operations
TWI587133B (zh) * 2016-05-20 2017-06-11 慧榮科技股份有限公司 資料儲存裝置之資料頁對齊方法及其查找表的製作方法
JP2018049387A (ja) * 2016-09-20 2018-03-29 東芝メモリ株式会社 メモリシステム及びプロセッサシステム
US11314648B2 (en) * 2017-02-08 2022-04-26 Arm Limited Data processing
US10216671B2 (en) 2017-02-27 2019-02-26 Qualcomm Incorporated Power aware arbitration for bus access
US10784986B2 (en) 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
US10318381B2 (en) * 2017-03-29 2019-06-11 Micron Technology, Inc. Selective error rate information for multidimensional memory
BR112019026942B1 (pt) 2017-06-23 2024-02-15 Huawei Technologies Co., Ltd Tecnologia de acesso à memória e sistema de computador
US10713189B2 (en) * 2017-06-27 2020-07-14 Qualcomm Incorporated System and method for dynamic buffer sizing in a computing device
US11294594B2 (en) * 2017-08-07 2022-04-05 Kioxia Corporation SSD architecture supporting low latency operation
US10387242B2 (en) 2017-08-21 2019-08-20 Qualcomm Incorporated Dynamic link error protection in memory systems
US10592121B2 (en) * 2017-09-14 2020-03-17 Samsung Electronics Co., Ltd. Quasi-synchronous protocol for large bandwidth memory systems
US10963003B2 (en) 2017-10-20 2021-03-30 Graphcore Limited Synchronization in a multi-tile processing array
GB201717295D0 (en) 2017-10-20 2017-12-06 Graphcore Ltd Synchronization in a multi-tile processing array
GB2569275B (en) * 2017-10-20 2020-06-03 Graphcore Ltd Time deterministic exchange
GB2569276B (en) 2017-10-20 2020-10-14 Graphcore Ltd Compiler method
CN107943611B (zh) * 2017-11-08 2021-04-13 天津国芯科技有限公司 一种快速产生crc的控制装置
US10824376B2 (en) 2017-12-08 2020-11-03 Sandisk Technologies Llc Microcontroller architecture for non-volatile memory
US10622075B2 (en) 2017-12-12 2020-04-14 Sandisk Technologies Llc Hybrid microcontroller architecture for non-volatile memory
CN110022268B (zh) * 2018-01-09 2022-05-03 腾讯科技(深圳)有限公司 一种数据传输控制方法、装置及存储介质
CN108388690B (zh) * 2018-01-16 2021-04-30 电子科技大学 元胞自动机实验平台
KR20190099879A (ko) * 2018-02-20 2019-08-28 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10810304B2 (en) 2018-04-16 2020-10-20 International Business Machines Corporation Injecting trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
US11003777B2 (en) 2018-04-16 2021-05-11 International Business Machines Corporation Determining a frequency at which to execute trap code in an execution path of a process executing a program to generate a trap address range to detect potential malicious code
US10929033B2 (en) * 2018-04-25 2021-02-23 Micron Technology, Inc. Allocating variable media types of memory devices in a memory system
US10831653B2 (en) * 2018-05-15 2020-11-10 Micron Technology, Inc. Forwarding code word address
US11003375B2 (en) 2018-05-15 2021-05-11 Micron Technology, Inc. Code word format and structure
US10496478B1 (en) * 2018-05-24 2019-12-03 Micron Technology, Inc. Progressive length error control code
US10409680B1 (en) * 2018-05-24 2019-09-10 Micron Technology, Inc. Progressive length error control code
US11074007B2 (en) 2018-08-08 2021-07-27 Micron Technology, Inc. Optimize information requests to a memory system
US10969994B2 (en) * 2018-08-08 2021-04-06 Micron Technology, Inc. Throttle response signals from a memory system
TWI819072B (zh) * 2018-08-23 2023-10-21 美商阿爾克斯股份有限公司 在網路運算環境中用於避免環路衝突的系統、非暫態電腦可讀取儲存媒體及電腦實現方法
KR102541897B1 (ko) 2018-08-27 2023-06-12 에스케이하이닉스 주식회사 메모리 시스템
US11061751B2 (en) 2018-09-06 2021-07-13 Micron Technology, Inc. Providing bandwidth expansion for a memory sub-system including a sequencer separate from a controller
US11080210B2 (en) 2018-09-06 2021-08-03 Micron Technology, Inc. Memory sub-system including an in package sequencer separate from a controller
US10838909B2 (en) 2018-09-24 2020-11-17 Hewlett Packard Enterprise Development Lp Methods and systems for computing in memory
US10771189B2 (en) 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
WO2020135385A1 (zh) * 2018-12-29 2020-07-02 上海寒武纪信息科技有限公司 通用机器学习模型、模型文件的生成和解析方法
CN109815043B (zh) * 2019-01-25 2022-04-05 华为云计算技术有限公司 故障处理方法、相关设备及计算机存储介质
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US10997111B2 (en) 2019-03-01 2021-05-04 Intel Corporation Flit-based packetization
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US10777240B1 (en) 2019-03-07 2020-09-15 Sandisk Technologies Llc Efficient control of memory core circuits
TWI810262B (zh) * 2019-03-22 2023-08-01 美商高通公司 用於計算機器的可變位元寬資料格式的單打包和拆包網路及方法
US10983795B2 (en) * 2019-03-27 2021-04-20 Micron Technology, Inc. Extended memory operations
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US10877889B2 (en) * 2019-05-16 2020-12-29 Micron Technology, Inc. Processor-side transaction context memory interface systems and methods
US10971199B2 (en) 2019-06-20 2021-04-06 Sandisk Technologies Llc Microcontroller for non-volatile memory with combinational logic
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer
KR20220110295A (ko) 2019-12-26 2022-08-05 마이크론 테크놀로지, 인크. 적층 메모리 시스템을 위한 진리표 확장
KR20220116259A (ko) 2019-12-26 2022-08-22 마이크론 테크놀로지, 인크. 적층 메모리 시스템의 비-결정 동작을 위한 기술
EP4081889A4 (en) 2019-12-26 2023-05-31 Micron Technology, Inc. HOST TECHNIQUES FOR STACKED STORAGE SYSTEMS
KR20210091404A (ko) 2020-01-13 2021-07-22 삼성전자주식회사 메모리 장치, 메모리 모듈 및 메모리 장치의 동작 방법
US11507498B2 (en) 2020-03-05 2022-11-22 Sandisk Technologies Llc Pre-computation of memory core control signals
US11812909B2 (en) 2020-04-10 2023-11-14 The Procter & Gamble Company Cleaning implement with a rheological solid composition
US11474743B2 (en) 2020-08-13 2022-10-18 Micron Technology, Inc. Data modification
US11494120B2 (en) * 2020-10-02 2022-11-08 Qualcomm Incorporated Adaptive memory transaction scheduling
TWI763131B (zh) * 2020-11-18 2022-05-01 瑞昱半導體股份有限公司 網路介面裝置、包含該網路介面裝置之電子裝置,及網路介面裝置的操作方法
US11409608B2 (en) * 2020-12-29 2022-08-09 Advanced Micro Devices, Inc. Providing host-based error detection capabilities in a remote execution device
US11481270B1 (en) * 2021-06-16 2022-10-25 Ampere Computing Llc Method and system for sequencing data checks in a packet
CN113840272B (zh) * 2021-10-12 2024-05-14 北京奕斯伟计算技术股份有限公司 数据传输方法、数据传输装置以及电子装置
US11886367B2 (en) * 2021-12-08 2024-01-30 Ati Technologies Ulc Arbitration allocating requests during backpressure
CN114301995B (zh) * 2021-12-30 2023-07-18 上海交通大学 实时工业以太网协议的转换切换与互通融合系统及其方法
US20230236992A1 (en) * 2022-01-21 2023-07-27 Arm Limited Data elision
US11922026B2 (en) 2022-02-16 2024-03-05 T-Mobile Usa, Inc. Preventing data loss in a filesystem by creating duplicates of data in parallel, such as charging data in a wireless telecommunications network
US11914473B1 (en) * 2022-10-20 2024-02-27 Micron Technology, Inc. Data recovery using ordered data requests

Family Cites Families (216)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7380092B2 (en) 2002-06-28 2008-05-27 Rambus Inc. Memory device and system having a variable depth write buffer and preload method
USRE36751E (en) * 1987-07-15 2000-06-27 Hitachi, Ltd. ATM switching system connectable to I/O links having different transmission rates
EP0453863A2 (en) 1990-04-27 1991-10-30 National Semiconductor Corporation Methods and apparatus for implementing a media access control/host system interface
US5379297A (en) * 1992-04-09 1995-01-03 Network Equipment Technologies, Inc. Concurrent multi-channel segmentation and reassembly processors for asynchronous transfer mode
JPH05308373A (ja) * 1992-04-28 1993-11-19 Matsushita Electric Ind Co Ltd スター型分散制御ネットワークおよびそれに用いる端末装置
US5771247A (en) * 1994-10-03 1998-06-23 International Business Machines Corporation Low latency error reporting for high performance bus
US6725349B2 (en) 1994-12-23 2004-04-20 Intel Corporation Method and apparatus for controlling of a memory subsystem installed with standard page mode memory and an extended data out memory
US5781449A (en) * 1995-08-10 1998-07-14 Advanced System Technologies, Inc. Response time measurement apparatus and method
US5978874A (en) * 1996-07-01 1999-11-02 Sun Microsystems, Inc. Implementing snooping on a split-transaction computer system bus
US5935213A (en) * 1996-05-02 1999-08-10 Fore Systems, Inc. System and method for generating explicit rate value information for flow control in ATAM network
US5918182A (en) * 1996-08-30 1999-06-29 Motorola, Inc. Method and apparatus for mitigating data congestion in an integrated voice/data radio communications system
US5754567A (en) 1996-10-15 1998-05-19 Micron Quantum Devices, Inc. Write reduction in flash memory systems through ECC usage
US6272600B1 (en) 1996-11-15 2001-08-07 Hyundai Electronics America Memory request reordering in a data processing system
US6208655B1 (en) * 1996-11-27 2001-03-27 Sony Europa, B.V., Method and apparatus for serving data
US6292834B1 (en) * 1997-03-14 2001-09-18 Microsoft Corporation Dynamic bandwidth selection for efficient transmission of multimedia streams in a computer network
KR100247022B1 (ko) * 1997-06-11 2000-04-01 윤종용 Atm 스위칭 시스템의 단일 스위치 소자 및 버퍼 문턱값 결정 방법
US6021124A (en) * 1997-08-19 2000-02-01 Telefonaktiebolaget Lm Ericsson Multi-channel automatic retransmission query (ARQ) method
US6516442B1 (en) * 1997-12-07 2003-02-04 Conexant Systems, Inc. Channel interface and protocols for cache coherency in a scalable symmetric multiprocessor system
JP2881418B1 (ja) * 1998-02-20 1999-04-12 一男 佐藤 識別データー記載シリコン基板およびその製造方法
JP3650262B2 (ja) * 1998-03-20 2005-05-18 富士通株式会社 セルの転送レート制御装置およびその方法
US6782490B2 (en) * 1999-03-17 2004-08-24 At&T Corp. Network-based service for the repair of IP multicast sessions
US6952401B1 (en) * 1999-03-17 2005-10-04 Broadcom Corporation Method for load balancing in a network switch
US7668189B1 (en) * 1999-07-08 2010-02-23 Thomson Licensing Adaptive transport protocol
US6751698B1 (en) * 1999-09-29 2004-06-15 Silicon Graphics, Inc. Multiprocessor node controller circuit and method
EP1146738B1 (en) * 1999-11-22 2007-09-19 Sony Corporation Videotape recording and playback device, and videotape player
US6799220B1 (en) * 2000-04-13 2004-09-28 Intel Corporation Tunneling management messages over a channel architecture network
US6715007B1 (en) * 2000-07-13 2004-03-30 General Dynamics Decision Systems, Inc. Method of regulating a flow of data in a communication system and apparatus therefor
EP1330725B1 (en) * 2000-09-29 2012-03-21 Alacritech, Inc. Intelligent network storage interface system and devices
US7113507B2 (en) * 2000-11-22 2006-09-26 Silicon Image Method and system for communicating control information via out-of-band symbols
US6957313B2 (en) 2000-12-01 2005-10-18 Hsia James R Memory matrix and method of operating the same
GB0031535D0 (en) * 2000-12-22 2001-02-07 Nokia Networks Oy Traffic congestion
US7469341B2 (en) * 2001-04-18 2008-12-23 Ipass Inc. Method and system for associating a plurality of transaction data records generated in a service access system
US7287649B2 (en) 2001-05-18 2007-10-30 Broadcom Corporation System on a chip for packet processing
US7006438B2 (en) * 2001-05-31 2006-02-28 Turin Networks Distributed control of data flow in a network switch
US20030033421A1 (en) * 2001-08-02 2003-02-13 Amplify.Net, Inc. Method for ascertaining network bandwidth allocation policy associated with application port numbers
US20030031178A1 (en) * 2001-08-07 2003-02-13 Amplify.Net, Inc. Method for ascertaining network bandwidth allocation policy associated with network address
US7072299B2 (en) * 2001-08-20 2006-07-04 International Business Machines Corporation Credit-based receiver using selected transmit rates and storage thresholds for preventing under flow and over flow-methods, apparatus and program products
KR100790131B1 (ko) * 2001-08-24 2008-01-02 삼성전자주식회사 패킷 통신시스템에서 매체 접속 제어 계층 엔터티들 간의 시그널링 방법
WO2003019394A1 (en) * 2001-08-24 2003-03-06 Intel Corporation A general input/output architecture, protocol and related methods to support legacy interrupts
US7062609B1 (en) * 2001-09-19 2006-06-13 Cisco Technology, Inc. Method and apparatus for selecting transfer types
US20030093632A1 (en) * 2001-11-12 2003-05-15 Intel Corporation Method and apparatus for sideband read return header in memory interconnect
KR100415115B1 (ko) * 2001-11-29 2004-01-13 삼성전자주식회사 통신시스템의 데이터 혼잡 통보 방법 및 장치
JP3912091B2 (ja) * 2001-12-04 2007-05-09 ソニー株式会社 データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
WO2003063423A1 (en) * 2002-01-24 2003-07-31 University Of Southern California Pseudorandom data storage
US20030152096A1 (en) * 2002-02-13 2003-08-14 Korey Chapman Intelligent no packet loss networking
EP1341336B1 (en) 2002-02-14 2005-07-13 Matsushita Electric Industrial Co., Ltd. Method for controlling the data rate of transmitting data packets in a wireless communications system, receiver and transmitter therefor
US6970978B1 (en) * 2002-04-03 2005-11-29 Advanced Micro Devices, Inc. System and method for providing a pre-fetch memory controller
KR100429904B1 (ko) * 2002-05-18 2004-05-03 한국전자통신연구원 차등화된 QoS 서비스를 제공하는 라우터 및 그것의고속 IP 패킷 분류 방법
US6963868B2 (en) * 2002-06-03 2005-11-08 International Business Machines Corporation Multi-bit Patricia trees
US7133972B2 (en) 2002-06-07 2006-11-07 Micron Technology, Inc. Memory hub with internal cache and/or memory access prediction
US7043599B1 (en) 2002-06-20 2006-05-09 Rambus Inc. Dynamic memory supporting simultaneous refresh and data-access transactions
US7408876B1 (en) * 2002-07-02 2008-08-05 Extreme Networks Method and apparatus for providing quality of service across a switched backplane between egress queue managers
US7051150B2 (en) * 2002-07-29 2006-05-23 Freescale Semiconductor, Inc. Scalable on chip network
US7124260B2 (en) 2002-08-26 2006-10-17 Micron Technology, Inc. Modified persistent auto precharge command protocol system and method for memory devices
US7143264B2 (en) * 2002-10-10 2006-11-28 Intel Corporation Apparatus and method for performing data access in accordance with memory access patterns
US7372814B1 (en) * 2003-02-27 2008-05-13 Alcatel-Lucent Network system with color-aware upstream switch transmission rate control in response to downstream switch traffic buffering
US7080217B2 (en) 2003-03-31 2006-07-18 Intel Corporation Cycle type based throttling
US6988173B2 (en) 2003-05-12 2006-01-17 International Business Machines Corporation Bus protocol for a switchless distributed shared memory computer system
US7167942B1 (en) 2003-06-09 2007-01-23 Marvell International Ltd. Dynamic random access memory controller
EP1635518B1 (en) * 2003-06-18 2019-07-31 Nippon Telegraph And Telephone Corporation Wireless packet communication method
US7342881B2 (en) * 2003-06-20 2008-03-11 Alcatel Backpressure history mechanism in flow control
US7277978B2 (en) 2003-09-16 2007-10-02 Micron Technology, Inc. Runtime flash device detection and configuration for flash data management software
US7174441B2 (en) * 2003-10-17 2007-02-06 Raza Microelectronics, Inc. Method and apparatus for providing internal table extensibility with external interface
KR100526187B1 (ko) * 2003-10-18 2005-11-03 삼성전자주식회사 모바일 애드 혹 네트워크 환경에서 최적의 전송율을 찾기위한 조절 방법
US20050108501A1 (en) * 2003-11-03 2005-05-19 Smith Zachary S. Systems and methods for identifying unending transactions
US7420919B1 (en) * 2003-11-10 2008-09-02 Cisco Technology, Inc. Self converging communication fair rate control system and method
KR100560748B1 (ko) * 2003-11-11 2006-03-13 삼성전자주식회사 알피알 공평 메카니즘을 이용한 대역폭 할당 방법
US7451381B2 (en) * 2004-02-03 2008-11-11 Phonex Broadband Corporation Reliable method and system for efficiently transporting dynamic data across a network
JP4521206B2 (ja) * 2004-03-01 2010-08-11 株式会社日立製作所 ネットワークストレージシステム、コマンドコントローラ、及びネットワークストレージシステムにおけるコマンド制御方法
US7475174B2 (en) * 2004-03-17 2009-01-06 Super Talent Electronics, Inc. Flash / phase-change memory in multi-ring topology using serial-link packet interface
US20050210185A1 (en) * 2004-03-18 2005-09-22 Kirsten Renick System and method for organizing data transfers with memory hub memory modules
US20050223141A1 (en) * 2004-03-31 2005-10-06 Pak-Lung Seto Data flow control in a data storage system
JP2005318429A (ja) * 2004-04-30 2005-11-10 Sony Ericsson Mobilecommunications Japan Inc 再送制御方法及び無線通信端末
US20060056308A1 (en) * 2004-05-28 2006-03-16 International Business Machines Corporation Method of switching fabric for counteracting a saturation tree occurring in a network with nodes
US7984179B1 (en) * 2004-06-29 2011-07-19 Sextant Navigation, Inc. Adaptive media transport management for continuous media stream over LAN/WAN environment
US7773578B2 (en) * 2004-07-13 2010-08-10 Utstarcom Telecom Co., Ltd. Packet transmission method for wireless signals in a wireless base station system
US7441087B2 (en) * 2004-08-17 2008-10-21 Nvidia Corporation System, apparatus and method for issuing predictions from an inventory to access a memory
US7433363B2 (en) 2004-08-23 2008-10-07 The United States Of America As Represented By The Secretary Of The Navy Low latency switch architecture for high-performance packet-switched networks
US7660245B1 (en) * 2004-09-16 2010-02-09 Qualcomm Incorporated FEC architecture for streaming services including symbol-based operations and packet tagging
US7340582B2 (en) * 2004-09-30 2008-03-04 Intel Corporation Fault processing for direct memory access address translation
TWI254849B (en) * 2004-10-13 2006-05-11 Via Tech Inc Method and related apparatus for data error checking
US7830801B2 (en) * 2004-10-29 2010-11-09 Broadcom Corporation Intelligent fabric congestion detection apparatus and method
US7859996B2 (en) * 2004-10-29 2010-12-28 Broadcom Corporation Intelligent congestion feedback apparatus and method
US20060143678A1 (en) * 2004-12-10 2006-06-29 Microsoft Corporation System and process for controlling the coding bit rate of streaming media data employing a linear quadratic control technique and leaky bucket model
US7702742B2 (en) * 2005-01-18 2010-04-20 Fortinet, Inc. Mechanism for enabling memory transactions to be conducted across a lossy network
US7877566B2 (en) 2005-01-25 2011-01-25 Atmel Corporation Simultaneous pipelined read with multiple level cache for improved system performance using flash technology
US8085755B2 (en) * 2005-04-01 2011-12-27 Cisco Technology, Inc. Data driven route advertisement
US7987306B2 (en) * 2005-04-04 2011-07-26 Oracle America, Inc. Hiding system latencies in a throughput networking system
US7743183B2 (en) * 2005-05-23 2010-06-22 Microsoft Corporation Flow control for media streaming
TWI305890B (en) 2005-05-27 2009-02-01 Darfon Electronics Corp Button mechanism
US8027256B1 (en) * 2005-06-02 2011-09-27 Force 10 Networks, Inc. Multi-port network device using lookup cost backpressure
DE102005035207A1 (de) * 2005-07-27 2007-02-01 Siemens Ag Verfahren und Vorrichtung zur Datenübertragung zwischen zwei relativ zueinander bewegten Komponenten
KR101378031B1 (ko) * 2005-08-03 2014-03-27 샌디스크 테크놀로지스, 인코포레이티드 데이터 파일을 직접적으로 저장하는 메모리 블록의 관리
US7630307B1 (en) * 2005-08-18 2009-12-08 At&T Intellectual Property Ii, Lp Arrangement for minimizing data overflow by managing data buffer occupancy, especially suitable for fibre channel environments
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US7652922B2 (en) * 2005-09-30 2010-01-26 Mosaid Technologies Incorporated Multiple independent serial link memory
US7961621B2 (en) * 2005-10-11 2011-06-14 Cisco Technology, Inc. Methods and devices for backward congestion notification
US8149846B2 (en) * 2005-11-10 2012-04-03 Hewlett-Packard Development Company, L.P. Data processing system and method
US7698498B2 (en) 2005-12-29 2010-04-13 Intel Corporation Memory controller with bank sorting and scheduling
US8065582B2 (en) * 2006-02-13 2011-11-22 Digital Fountain, Inc. FEC streaming with aggregation of concurrent streams for FEC computation
US7617437B2 (en) * 2006-02-21 2009-11-10 Freescale Semiconductor, Inc. Error correction device and method thereof
KR100695435B1 (ko) 2006-04-13 2007-03-16 주식회사 하이닉스반도체 반도체 메모리 소자
US7756028B2 (en) * 2006-04-27 2010-07-13 Alcatel Lucent Pulsed backpressure mechanism for reduced FIFO utilization
JP5184527B2 (ja) * 2006-07-25 2013-04-17 トムソン ライセンシング スタガーキャスティング及びクロスパケット前方誤り訂正を用いたインターネットプロトコル型無線ネットワークでのバーストパケット損失からの回復
US8407395B2 (en) * 2006-08-22 2013-03-26 Mosaid Technologies Incorporated Scalable memory system
US7739576B2 (en) * 2006-08-31 2010-06-15 Micron Technology, Inc. Variable strength ECC
EP2084864A1 (en) * 2006-10-24 2009-08-05 Medianet Innovations A/S Method and system for firewall friendly real-time communication
US7930513B2 (en) * 2006-11-04 2011-04-19 Virident Systems Inc. Writing to asymmetric memory
JP2008123330A (ja) * 2006-11-14 2008-05-29 Toshiba Corp 不揮発性半導体記憶装置
US7818389B1 (en) * 2006-12-01 2010-10-19 Marvell International Ltd. Packet buffer apparatus and method
US9116823B2 (en) * 2006-12-06 2015-08-25 Intelligent Intellectual Property Holdings 2 Llc Systems and methods for adaptive error-correction coding
KR101364443B1 (ko) 2007-01-31 2014-02-17 삼성전자주식회사 메모리 시스템, 이 시스템을 위한 메모리 제어기와 메모리,이 시스템의 신호 구성 방법
US7596643B2 (en) * 2007-02-07 2009-09-29 Siliconsystems, Inc. Storage subsystem with configurable buffer
US8693406B2 (en) * 2007-08-09 2014-04-08 Intel Corporation Multi-user resource allocation and medium access control (MAC) overhead reduction for mobile worldwide interoperability for microwave access (WiMAX) systems
US7937631B2 (en) * 2007-08-28 2011-05-03 Qimonda Ag Method for self-test and self-repair in a multi-chip package environment
JP4564520B2 (ja) * 2007-08-31 2010-10-20 株式会社東芝 半導体記憶装置およびその制御方法
US7769015B2 (en) 2007-09-11 2010-08-03 Liquid Computing Corporation High performance network adapter (HPNA)
US7821939B2 (en) * 2007-09-26 2010-10-26 International Business Machines Corporation Method, system, and computer program product for adaptive congestion control on virtual lanes for data center ethernet architecture
US8130649B2 (en) * 2007-10-18 2012-03-06 Alcatel Lucent Ingress traffic flow control in a data communications system
US8305991B1 (en) * 2007-11-14 2012-11-06 Sprint Spectrum L.P. Method and system for sector switching during packet transmission
US7870351B2 (en) * 2007-11-15 2011-01-11 Micron Technology, Inc. System, apparatus, and method for modifying the order of memory accesses
US8245101B2 (en) * 2007-12-27 2012-08-14 Sandisk Enterprise Ip Llc Patrol function used in flash storage controller to detect data errors
US8120990B2 (en) 2008-02-04 2012-02-21 Mosaid Technologies Incorporated Flexible memory operations in NAND flash devices
US8355336B2 (en) * 2008-02-13 2013-01-15 Qualcomm Incorporated Methods and apparatus for formatting headers in a communication frame
JP5141606B2 (ja) * 2008-03-26 2013-02-13 セイコーエプソン株式会社 印刷装置
US8724636B2 (en) * 2008-03-31 2014-05-13 Qualcomm Incorporated Methods of reliably sending control signal
EP2279576A4 (en) * 2008-04-24 2012-02-01 Ericsson Telefon Ab L M ERROR RATE MANAGEMENT
US8374986B2 (en) * 2008-05-15 2013-02-12 Exegy Incorporated Method and system for accelerated stream processing
US8223796B2 (en) * 2008-06-18 2012-07-17 Ati Technologies Ulc Graphics multi-media IC and method of its operation
KR101431760B1 (ko) * 2008-06-25 2014-08-20 삼성전자주식회사 Ecc 알고리즘을 이용한 플래시 메모리 장치 및 그구동방법
US8542588B2 (en) * 2008-06-25 2013-09-24 Qualcomm Incorporated Invoking different wireless link rate selection operations for different traffic classes
US7937419B2 (en) * 2008-06-26 2011-05-03 Tatu Ylonen Oy Garbage collection via multiobjects
US8547846B1 (en) * 2008-08-28 2013-10-01 Raytheon Bbn Technologies Corp. Method and apparatus providing precedence drop quality of service (PDQoS) with class-based latency differentiation
KR101003102B1 (ko) * 2008-09-24 2010-12-21 한국전자통신연구원 멀티 프로세싱 유닛에 대한 메모리 매핑방법, 및 장치
WO2010041469A1 (ja) * 2008-10-09 2010-04-15 日本電気株式会社 コンテンツ配信システム、コンテンツ配信方法およびコンピュータプログラム
US8402190B2 (en) * 2008-12-02 2013-03-19 International Business Machines Corporation Network adaptor optimization and interrupt reduction
US20100161938A1 (en) * 2008-12-23 2010-06-24 Marco Heddes System-On-A-Chip Supporting A Networked Array Of Configurable Symmetric Multiprocessing Nodes
US8737374B2 (en) * 2009-01-06 2014-05-27 Qualcomm Incorporated System and method for packet acknowledgment
JP5168166B2 (ja) * 2009-01-21 2013-03-21 富士通株式会社 通信装置および通信制御方法
EP2214100A1 (en) * 2009-01-30 2010-08-04 BRITISH TELECOMMUNICATIONS public limited company Allocation of processing tasks
CN102449600B (zh) * 2009-03-06 2015-07-08 阿斯帕拉公司 用于i/o受驱速率自适应的方法和系统
TWI384810B (zh) 2009-05-07 2013-02-01 Etron Technology Inc 可節省通用串列匯流排協定中用來儲存封包之記憶體之資料傳輸方法及其裝置
US8880716B2 (en) * 2009-05-08 2014-11-04 Canon Kabushiki Kaisha Network streaming of a single data stream simultaneously over multiple physical interfaces
CN101924603B (zh) * 2009-06-09 2014-08-20 华为技术有限公司 数据传输速率的自适应调整方法、装置及系统
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US8238244B2 (en) * 2009-08-10 2012-08-07 Micron Technology, Inc. Packet deconstruction/reconstruction and link-control
US8281065B2 (en) * 2009-09-01 2012-10-02 Apple Inc. Systems and methods for determining the status of memory locations in a non-volatile memory
US8543893B2 (en) * 2009-09-02 2013-09-24 Agere Systems Llc Receiver for error-protected packet-based frame
FR2949931B1 (fr) 2009-09-10 2011-08-26 Canon Kk Procedes et dispositifs de transmission d'un flux de donnees, produit programme d'ordinateur et moyen de stockage correspondants.
US8966110B2 (en) 2009-09-14 2015-02-24 International Business Machines Corporation Dynamic bandwidth throttling
US8312187B2 (en) * 2009-09-18 2012-11-13 Oracle America, Inc. Input/output device including a mechanism for transaction layer packet processing in multiple processor systems
WO2011033600A1 (ja) * 2009-09-21 2011-03-24 株式会社 東芝 仮想記憶管理装置
EP2483777A4 (en) * 2009-09-30 2016-05-11 Altera Corp ENHANCED EXCHANGE OF WAVEFORM DATA BETWEEN MULTIPLE PROCESSORS USING COMPRESSION AND DECOMPRESSION
US9477636B2 (en) 2009-10-21 2016-10-25 Micron Technology, Inc. Memory having internal processors and data communication methods in memory
US8719516B2 (en) * 2009-10-21 2014-05-06 Micron Technology, Inc. Memory having internal processors and methods of controlling memory access
US8281218B1 (en) * 2009-11-02 2012-10-02 Western Digital Technologies, Inc. Data manipulation engine
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
US9081501B2 (en) * 2010-01-08 2015-07-14 International Business Machines Corporation Multi-petascale highly efficient parallel supercomputer
US8183452B2 (en) * 2010-03-23 2012-05-22 Yamaha Corporation Tone generation apparatus
US8321753B2 (en) 2010-04-13 2012-11-27 Juniper Networks, Inc. Optimization of packet buffer memory utilization
CN101883446B (zh) * 2010-06-28 2014-03-26 华为终端有限公司 一种sd控制芯片及数据通信方法
US9537488B1 (en) * 2010-05-13 2017-01-03 Altera Corporation Apparatus for configurable interface and associated methods
US8295292B2 (en) * 2010-05-19 2012-10-23 Telefonaktiebolaget L M Ericsson (Publ) High performance hardware linked list processors
US20110299588A1 (en) * 2010-06-04 2011-12-08 Apple Inc. Rate control in video communication via virtual transmission buffer
US8539311B2 (en) * 2010-07-01 2013-09-17 Densbits Technologies Ltd. System and method for data recovery in multi-level cell memories
KR101719395B1 (ko) * 2010-07-13 2017-03-23 샌디스크 테크놀로지스 엘엘씨 백-엔드 메모리 시스템 인터페이스를 동적으로 최적화하는 방법
US20120192026A1 (en) * 2010-07-16 2012-07-26 Industrial Technology Research Institute Methods and Systems for Data Transmission Management Using HARQ Mechanism for Concatenated Coded System
US8751903B2 (en) 2010-07-26 2014-06-10 Apple Inc. Methods and systems for monitoring write operations of non-volatile memory
GB2513551B (en) 2010-09-24 2018-01-10 Ibm High-speed memory system
JP6032754B2 (ja) * 2010-10-01 2016-11-30 フィリップス ライティング ホールディング ビー ヴィ 無線ネットワークでデータパケット送信をスケジューリングするデバイス及び方法
EP2447842A1 (en) 2010-10-28 2012-05-02 Thomson Licensing Method and system for error correction in a memory array
US8842536B2 (en) * 2010-12-23 2014-09-23 Brocade Communications Systems, Inc. Ingress rate limiting
JP2012150152A (ja) * 2011-01-17 2012-08-09 Renesas Electronics Corp データ処理装置及び半導体装置
WO2012129191A2 (en) * 2011-03-18 2012-09-27 Fusion-Io, Inc. Logical interfaces for contextual storage
JP5800565B2 (ja) 2011-05-11 2015-10-28 キヤノン株式会社 データ転送装置及びデータ転送方法
KR20130021865A (ko) * 2011-08-24 2013-03-06 삼성전자주식회사 이동통신 시스템의 고정자원 할당 방법 및 장치
US8832331B2 (en) * 2011-08-29 2014-09-09 Ati Technologies Ulc Data modification for device communication channel packets
EP2761472B1 (en) * 2011-09-30 2020-04-01 Intel Corporation Memory channel that supports near memory and far memory access
US8588221B2 (en) * 2011-10-07 2013-11-19 Intel Mobile Communications GmbH Method and interface for interfacing a radio frequency transceiver with a baseband processor
US20130094472A1 (en) * 2011-10-14 2013-04-18 Qualcomm Incorporated Methods and apparatuses for reducing voice/data interruption during a mobility procedure
US8938658B2 (en) * 2011-11-07 2015-01-20 Sandisk Enterprise Ip Llc Statistical read comparison signal generation for memory systems
US9048876B2 (en) * 2011-11-18 2015-06-02 Sandisk Enterprise Ip Llc Systems, methods and devices for multi-tiered error correction
US8954822B2 (en) * 2011-11-18 2015-02-10 Sandisk Enterprise Ip Llc Data encoder and decoder using memory-specific parity-check matrix
WO2013095576A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Processor-based apparatus and method for processing bit streams
TW201346572A (zh) 2012-01-27 2013-11-16 Marvell World Trade Ltd 發送器設備及發送器系統
WO2013122438A1 (en) * 2012-02-17 2013-08-22 Samsung Electronics Co., Ltd. Data packet transmission/reception apparatus and method
US9135192B2 (en) 2012-03-30 2015-09-15 Sandisk Technologies Inc. Memory system with command queue reordering
WO2013153577A1 (en) * 2012-04-12 2013-10-17 Hitachi, Ltd. Data transfer method and storage system adopting data transfer method
US9436625B2 (en) * 2012-06-13 2016-09-06 Nvidia Corporation Approach for allocating virtual bank managers within a dynamic random access memory (DRAM) controller to physical banks within a DRAM
US20150103668A1 (en) * 2012-06-27 2015-04-16 Qualcomm Incorporated Low overhead and highly robust flow control apparatus and method
US10034023B1 (en) * 2012-07-30 2018-07-24 Google Llc Extended protection of digital video streams
US9444751B1 (en) * 2012-08-03 2016-09-13 University Of Southern California Backpressure with adaptive redundancy
GB2505956B (en) * 2012-09-18 2015-08-05 Canon Kk Method and apparatus for controlling the data rate of a data transmission between an emitter and a receiver
US9215174B2 (en) * 2012-10-18 2015-12-15 Broadcom Corporation Oversubscription buffer management
KR101754890B1 (ko) * 2012-10-22 2017-07-06 인텔 코포레이션 고성능 인터커넥트 물리 계층
US9424228B2 (en) 2012-11-01 2016-08-23 Ezchip Technologies Ltd. High performance, scalable multi chip interconnect
US8713311B1 (en) 2012-11-07 2014-04-29 Google Inc. Encryption using alternate authentication key
US9438511B2 (en) * 2012-12-11 2016-09-06 Hewlett Packard Enterprise Development Lp Identifying a label-switched path (LSP) associated with a multi protocol label switching (MPLS) service and diagnosing a LSP related fault
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
KR20140100008A (ko) * 2013-02-05 2014-08-14 삼성전자주식회사 휘발성 메모리 장치의 구동 방법 및 휘발성 메모리 장치의 테스트 방법
US9569612B2 (en) * 2013-03-14 2017-02-14 Daniel Shawcross Wilkerson Hard object: lightweight hardware enforcement of encapsulation, unforgeability, and transactionality
US9030771B2 (en) * 2013-04-26 2015-05-12 Oracle International Corporation Compressed data verification
US20140371941A1 (en) * 2013-06-18 2014-12-18 The Regents Of The University Of Colorado, A Body Corporate Software-defined energy communication networks
WO2014204128A1 (ko) * 2013-06-19 2014-12-24 엘지전자 주식회사 Mtc 기기의 수신 방법
KR102123439B1 (ko) * 2013-11-20 2020-06-16 삼성전자 주식회사 이동 망에서 비디오 트래픽의 사용자 만족도 최적화를 고려한 혼잡 완화 방법 및 그 장치
GB2520724A (en) * 2013-11-29 2015-06-03 St Microelectronics Res & Dev Debug circuitry
US9699079B2 (en) * 2013-12-30 2017-07-04 Netspeed Systems Streaming bridge design with host interfaces and network on chip (NoC) layers
JP6249403B2 (ja) * 2014-02-27 2017-12-20 国立研究開発法人情報通信研究機構 光遅延線及び電子バッファ融合型光パケットバッファ制御装置
US9813815B2 (en) * 2014-05-20 2017-11-07 Gn Hearing A/S Method of wireless transmission of digital audio
KR102310580B1 (ko) * 2014-10-24 2021-10-13 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
US9740646B2 (en) * 2014-12-20 2017-08-22 Intel Corporation Early identification in transactional buffered memory
US9185045B1 (en) * 2015-05-01 2015-11-10 Ubitus, Inc. Transport protocol for interactive real-time media
US10003529B2 (en) * 2015-08-04 2018-06-19 Telefonaktiebolaget Lm Ericsson (Publ) Method and system for memory allocation in a software-defined networking (SDN) system
KR102525295B1 (ko) * 2016-01-06 2023-04-25 삼성전자주식회사 데이터 관리 방법 및 장치
KR102589410B1 (ko) * 2017-11-10 2023-10-13 삼성전자주식회사 메모리 장치 및 그의 파워 제어 방법

Also Published As

Publication number Publication date
US20210141541A1 (en) 2021-05-13
US20150347015A1 (en) 2015-12-03
US20150347048A1 (en) 2015-12-03
US9690502B2 (en) 2017-06-27
CN106489136A (zh) 2017-03-08
US20190102095A1 (en) 2019-04-04
US9823864B2 (en) 2017-11-21
EP3149585A4 (en) 2018-04-11
US10540104B2 (en) 2020-01-21
US20170329545A1 (en) 2017-11-16
EP3149592B1 (en) 2022-05-04
US9696920B2 (en) 2017-07-04
US11526280B2 (en) 2022-12-13
US10921995B2 (en) 2021-02-16
TW201617879A (zh) 2016-05-16
KR102196747B1 (ko) 2020-12-31
US10146457B2 (en) 2018-12-04
US9747048B2 (en) 2017-08-29
TW201610688A (zh) 2016-03-16
EP3149595A1 (en) 2017-04-05
US20210247915A1 (en) 2021-08-12
US9733847B2 (en) 2017-08-15
US20200097191A1 (en) 2020-03-26
EP3149602A4 (en) 2017-08-09
US10572164B2 (en) 2020-02-25
EP3149602B1 (en) 2019-05-22
US20150347226A1 (en) 2015-12-03
US20200097190A1 (en) 2020-03-26
EP3149595B1 (en) 2022-11-16
KR20170005498A (ko) 2017-01-13
WO2015187574A1 (en) 2015-12-10
TWI570569B (zh) 2017-02-11
CN106489134B (zh) 2018-08-14
CN106489134A (zh) 2017-03-08
EP3149585A1 (en) 2017-04-05
CN106489136B (zh) 2020-03-06
TWI554883B (zh) 2016-10-21
WO2015187575A1 (en) 2015-12-10
EP3149592A4 (en) 2018-01-03
KR20170012399A (ko) 2017-02-02
EP3149585B1 (en) 2020-08-12
CN109032516A (zh) 2018-12-18
EP3149586A4 (en) 2018-08-29
EP3149599A1 (en) 2017-04-05
US20170168728A1 (en) 2017-06-15
CN106471485B (zh) 2019-01-08
US20210247914A1 (en) 2021-08-12
TW201614476A (en) 2016-04-16
TW201610687A (zh) 2016-03-16
TW201617868A (zh) 2016-05-16
EP3149586A1 (en) 2017-04-05
US20150350082A1 (en) 2015-12-03
EP3149595A4 (en) 2018-03-28
US20170300382A1 (en) 2017-10-19
TWI547799B (zh) 2016-09-01
WO2015187572A1 (en) 2015-12-10
WO2015187578A1 (en) 2015-12-10
TWI582588B (zh) 2017-05-11
CN113971004A (zh) 2022-01-25
KR101796413B1 (ko) 2017-12-01
US20150347019A1 (en) 2015-12-03
WO2015187576A1 (en) 2015-12-10
WO2015187577A1 (en) 2015-12-10
CN109032516B (zh) 2021-10-22
EP3149602A1 (en) 2017-04-05
CN106471474A (zh) 2017-03-01
EP3149599B1 (en) 2022-09-21
CN106575257A (zh) 2017-04-19
KR20170012400A (ko) 2017-02-02
CN106471460B (zh) 2019-05-10
EP3149586B1 (en) 2022-07-20
US20150347225A1 (en) 2015-12-03
TW201614501A (en) 2016-04-16
US11194480B2 (en) 2021-12-07
TWI625632B (zh) 2018-06-01
EP3149592A1 (en) 2017-04-05
EP3149599A4 (en) 2018-01-03
US11531472B2 (en) 2022-12-20
US9600191B2 (en) 2017-03-21
US11461017B2 (en) 2022-10-04
CN106471485A (zh) 2017-03-01
US11461019B2 (en) 2022-10-04
CN106575257B (zh) 2019-05-28
KR102197401B1 (ko) 2021-01-04
US11003363B2 (en) 2021-05-11
CN110262751A (zh) 2019-09-20
US20200150884A1 (en) 2020-05-14
CN106471460A (zh) 2017-03-01
CN106471474B (zh) 2019-08-20

Similar Documents

Publication Publication Date Title
TWI545497B (zh) 用於在可擴充記憶體系統協定中記錄封包傳送之系統及方法